| 0 | witness #0utf84��KW��!������FP����<YK{;��mի�t�p��˿N%S~�E�U��E]�ջ�4��KW��!������FP����<YK{;��mի�t�p��˿N%S~�E�U��E]�ջ�ascii4]KW=x!U~.:F^FPg}=3<YK{;hpmU+bt/p0K?N%S~1EUJnE]U;]4]KW=x!U~.:F^FPg}=3<YK{;hpmU+bt/p0K?N%S~1EUJnE]U;]hex3493dd4b57bdf81021d598119cfeaebac6de4650e7fdbdb33c594b7b3b1c1819e8f06dd5abe274af708b1fb0cbbf194e25537eb1459355caee455d86d5bb05dd3493dd4b57bdf81021d598119cfeaebac6de4650e7fdbdb33c594b7b3b1c1819e8f06dd5abe274af708b1fb0cbbf194e25537eb1459355caee455d86d5bb05dd #1utf8 �s"�ÒUR`�p!$��x�=`�#L��Dʏ��(� cordtext/javascript M(function (e, t) {
if (typeof exports == 'object' && typeof module == 'object') {
module.exports = t();
} else if (typeof define == 'function' && define.amd) {
define('site', [], t);
} else if (typeof exports == 'object') {
exports.site = t();
} else {
e.site = t();
}
})(window, function () {
return (function (e) {
function n(r) {
if (t[r]) {
return t[r].exports;
}
var i = (t[r] = { i: r, l: false, exports: {} });
e[r].call(i.exports, i, i.exports, n);M
i.l = true;
return i.exports;
}
var t = {};
n.m = e;
n.c = t;
n.d = function (e, t, r) {
if (!n.o(e, t)) {
Object.defineProperty(e, t, { enumerable: true, get: r });
}
};
n.r = function (e) {
if (typeof Symbol != 'undefined' && Symbol.toStringTag) {
Object.defineProperty(e, Symbol.toStringTag, { value: 'Module' });
}
Object.defineProperty(e, '__esModule', { value: true });
};
n.t = function (e, t) {
if (1 & t) {
M e = n(e);
}
if (8 & t) {
return e;
}
if (4 & t && typeof e == 'object' && e && e.__esModule) {
return e;
}
var r = Object.create(null);
n.r(r);
Object.defineProperty(r, 'default', { enumerable: true, value: e });
if (2 & t && typeof e != 'string') {
for (var i in e) {
n.d(
r,
i,
function (t) {
return e[t];
}.bind(null, i)
);
}
}
retuMrn r;
};
n.n = function (e) {
var t =
e && e.__esModule
? function () {
return e.default;
}
: function () {
return e;
};
n.d(t, 'a', t);
return t;
};
n.o = function (e, t) {
return Object.prototype.hasOwnProperty.call(e, t);
};
n.p = '';
return n((n.s = 8));
})([
function (e, t, n) {
'use strict';
function l(e) {
var t = -1;
for (var n = 0; n < a.lengtMh; n++) {
if (a[n].identifier === e) {
t = n;
break;
}
}
return t;
}
function s(e, t) {
var n = {};
var r = [];
for (var i = 0; i < e.length; i++) {
var o = e[i];
var s = t.base ? o[0] + t.base : o[0];
var c = n[s] || 0;
var d = ''.concat(s, ' ').concat(c);
n[s] = c + 1;
var u = l(d);
var p = { css: o[1], media: o[2], sourceMap: o[3] };
if (uM === -1) {
a.push({ identifier: d, updater: m(p, t), references: 1 });
} else {
a[u].references++;
a[u].updater(p);
}
r.push(d);
}
return r;
}
function c(e) {
var t = document.createElement('style');
var r = e.attributes || {};
if (r.nonce === void 0) {
var i = n.nc;
if (i) {
r.nonce = i;
}
}
Object.keys(r).forEach(function (e) {
t.MsetAttribute(e, r[e]);
});
if (typeof e.insert == 'function') {
e.insert(t);
} else {
var a = o(e.insert || 'head');
if (!a) {
throw new Error(
"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."
);
}
a.appendChild(t);
}
return t;
}
function p(e, t, n, r) {
var i = n
? ''
: r.media
? '@mMedia '.concat(r.media, ' {').concat(r.css, '}')
: r.css;
if (e.styleSheet) {
e.styleSheet.cssText = u(t, i);
} else {
var o = document.createTextNode(i);
var a = e.childNodes;
if (a[t]) {
e.removeChild(a[t]);
}
if (a.length) {
e.insertBefore(o, a[t]);
} else {
e.appendChild(o);
}
}
}
function h(e, t, n) {
var r = n.css;
var i = n.media;
M var o = n.sourceMap;
if (i) {
e.setAttribute('media', i);
} else {
e.removeAttribute('media');
}
if (o && btoa) {
r += '\n/*# sourceMappingURL=data:application/json;base64,'.concat(
btoa(unescape(encodeURIComponent(JSON.stringify(o)))),
' */'
);
}
if (e.styleSheet) {
e.styleSheet.cssText = r;
} else {
while (e.firstChild) {
e.removeChild(e.firstChild);
M }
e.appendChild(document.createTextNode(r));
}
}
function m(e, t) {
var n;
var r;
var i;
if (t.singleton) {
var o = g++;
n = f || (f = c(t));
r = p.bind(null, n, o, false);
i = p.bind(null, n, o, true);
} else {
n = c(t);
r = h.bind(null, n, t);
i = function () {
var e = n;
if (e.parentNode === null) {
return;
}
e.MparentNode.removeChild(e);
};
}
r(e);
return function (t) {
if (t) {
if (
t.css === e.css &&
t.media === e.media &&
t.sourceMap === e.sourceMap
) {
return;
}
r((e = t));
} else {
i();
}
};
}
var r;
var i = function () {
if (r === void 0) {
r = Boolean(window && document && document.all && !windoMw.atob);
}
return r;
};
var o = (function () {
var e = {};
return function (t) {
if (e[t] === void 0) {
var n = document.querySelector(t);
if (
window.HTMLIFrameElement &&
n instanceof window.HTMLIFrameElement
) {
try {
n = n.contentDocument.head;
} catch (e) {
n = null;
}
}
e[t] = n;
}
M return e[t];
};
})();
var a = [];
var d = [];
var u = function (e, t) {
d[e] = t;
return d.filter(Boolean).join('\n');
};
var f = null;
var g = 0;
e.exports = function (e, t) {
if (!(t = t || {}).singleton && typeof t.singleton != 'boolean') {
t.singleton = i();
}
var n = s((e = e || []), t);
return function (e) {
e = e || [];
if (Object.prototype.toString.call(e) === '[object ArMray]') {
for (var r = 0; r < n.length; r++) {
var i = l(n[r]);
a[i].references--;
}
var o = s(e, t);
for (var c = 0; c < n.length; c++) {
var d = l(n[c]);
if (a[d].references === 0) {
a[d].updater();
a.splice(d, 1);
}
}
n = o;
}
};
};
},
function (e, t, n) {
'use strict';
e.exports = function (e) {
M var t = [];
t.toString = function () {
return this.map(function (t) {
var n = (function (e, t) {
var n = e[1] || '';
var r = e[3];
if (!r) {
return n;
}
if (t && typeof btoa == 'function') {
a = r;
l = btoa(unescape(encodeURIComponent(JSON.stringify(a))));
s =
'sourceMappingURL=data:application/json;charset=utf-8;base64,'.concat(
M l
);
var i = '/*# '.concat(s, ' */');
var o = r.sources.map(function (e) {
return '/*# sourceURL='
.concat(r.sourceRoot || '')
.concat(e, ' */');
});
return [n].concat(o).concat([i]).join('\n');
}
var a;
var l;
var s;
return [n].join('\n');
})(t, e);
if (t[2]) {
M return '@media '.concat(t[2], ' {').concat(n, '}');
} else {
return n;
}
}).join('');
};
t.i = function (e, n, r) {
if (typeof e == 'string') {
e = [[null, e, '']];
}
var i = {};
if (r) {
for (var o = 0; o < this.length; o++) {
var a = this[o][0];
if (a != null) {
i[a] = true;
}
}
}
for (vaMr l = 0; l < e.length; l++) {
var s = [].concat(e[l]);
if (!r || !i[s[0]]) {
if (n) {
if (s[2]) {
s[2] = ''.concat(n, ' and ').concat(s[2]);
} else {
s[2] = n;
}
}
t.push(s);
}
}
};
return t;
};
},
function (e, t, n) {
var r = n(0);
var i = n(3);
if (typeof (i = i.__esModule ? i.default : i) == 'strMing') {
i = [[e.i, i, '']];
}
var o = { insert: 'head', singleton: false };
r(i, o);
var a = i.locals ? i.locals : {};
e.exports = a;
},
function (e, t, n) {
var r = n(1);
var i = n(4);
var o = n(5);
t = r(false);
var a = i(o);
t.push([
e.i,
"/* All sizing currently done in em with the exception of command bar \r\n components (which are in px) */\r\n\r\nbody {\r\n background-color: #1E1E1E;\r\n font-family: 'RobotoM', Arial, Helvetica, sans-serif; /* Roboto */\r\n /*font-family: Arial, Helvetica, sans-serif; */\r\n font-size: 75%;\r\n margin: 5em 0 0 0;\r\n -webkit-user-select: none;\r\n -moz-user-select: -moz-none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n}\r\n\r\nselect, button {\r\n font-family: 'Roboto', Arial, Helvetica, sans-serif; /* Roboto */\r\n /*font-family: Arial, Helvetica, sans-serif;*/\r\n}\r\n\r\nimg {\r\n -webkit-user-select: none;\r\n -khtml-user-select: none;\r\n -moz-user-select: nMone;\r\n -o-user-select: none;\r\n user-select: none;\r\n}\r\n\r\n.break-word {\r\n overflow-wrap: break-word;\r\n}\r\n\r\n.header {\r\n top: 0;\r\n position: fixed;\r\n background-color: #1B1B1B;\r\n color: #BBBBBB;\r\n padding: .50em;\r\n font-size: 1.25em;\r\n width: 100%;\r\n z-index: 1;\r\n text-align: center;\r\n display: block;\r\n box-shadow: 0 0 .54em 0 rgba(0, 0, 0, 0.4), 0 0 1.34em 0 rgba(0, 0, 0, 0.39);\r\n}\r\n\r\n.header__label {\r\n margin-right: .54em;\r\n vertical-align: middle;\r\nM}\r\n\r\n.header__logo {\r\n vertical-align: middle;\r\n width: 1.34m;\r\n height: 1.34em;\r\n}\r\n\r\n#js7800__target {\r\n position: relative;\r\n text-align: center;\r\n}\r\n\r\n.controls {\r\n display: flex;\r\n justify-content: center;\r\n margin-top: 1.8em;\r\n}\r\n\r\n.controls-button {\r\n width: 3em;\r\n height: 3em;\r\n margin: 0 .8em;\r\n background: #282828;\r\n border-radius: .75em;\r\n box-shadow: 0 .34em .67em 0 rgba(0, 0, 0, 0.4), 0 .5em 1.67em 0 rgba(0, 0, 0, 0.39);\r\n opacity: .8;\Mr\n}\r\n\r\n.controls-button:hover {\r\n opacity: 1;\r\n}\r\n\r\n.controls-button__img {\r\n width: 2em;\r\n height: 2em;\r\n padding: .5em .5em;\r\n margin: 0;\r\n cursor: pointer;\r\n opacity: .7;\r\n}\r\n\r\n.controls-button__img:hover {\r\n opacity: .9;\r\n}\r\n\r\n.controls-button__upload {\r\n display: inline-block;\r\n cursor: pointer;\r\n}\r\n\r\n.controls-button__upload>input[type=\"file\"] {\r\n display: none;\r\n}\r\n\r\n/* Custom Select */\r\n.cartselect {\r\n opacity: .8;\r\n position: relMative;\r\n display: flex;\r\n width: 25em;\r\n height: 3em;\r\n line-height: 3em;\r\n background: black;\r\n overflow: hidden;\r\n border-radius: .75em;\r\n box-shadow: 0 .34em .67em 0 rgba(0, 0, 0, 0.4), 0 .5em 1.67em 0 rgba(0, 0, 0, 0.39);\r\n margin: 0 .8em;\r\n}\r\n\r\n.cartselect:hover {\r\n opacity: 1;\r\n}\r\n\r\n/* Arrow */\r\n.cartselect::after {\r\n content: '\\25BC';\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n padding: 0 1em;\r\n color: #ce2f37;\r\n background: #282828;\r\n cuMrsor: pointer;\r\n pointer-events: none;\r\n}\r\n\r\n/* Reset Select */\r\n.cartselect select {\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n -ms-appearance: none;\r\n appearance: none;\r\n outline: 0;\r\n box-shadow: none;\r\n border: 0 !important;\r\n background: black;\r\n background-image: none;\r\n flex: 1;\r\n padding: 0 1em;\r\n color: #BBBBBB;\r\n cursor: pointer;\r\n font-size: 1.2em;\r\n}\r\n\r\n/* Remove IE arrow */\r\n.cartselect select::-ms-expand {\r\n display: none;\r\nM}\r\n\r\n.cartselect select optgroup {\r\n font-weight: bold;\r\n color: #777777;\r\n}\r\n\r\n.cartselect select option {\r\n font-weight: normal;\r\n color: #BBBBBB;\r\n}\r\n\r\n#content {\r\n clear: both;\r\n margin-top: 4.5em;\r\n}\r\n\r\n.drop__div {\r\n position: fixed;\r\n z-index: -999;\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n/* Command bar components (uses px) */\r\n\r\n.fsselect {\r\n opacity: .8;\r\n font-size: 11px;\r\n color: #fff;\r\n position: relative;\Mr\n display: flex;\r\n width: 190px;\r\n height: 20px;\r\n line-height: 20px;\r\n background: black;\r\n overflow: hidden;\r\n border-radius: 4px;\r\n border: 1px solid #666;\r\n margin: 0 15px 0 15px;\r\n display: none;\r\n}\r\n\r\n.fsselect:hover {\r\n opacity: 1;\r\n}\r\n\r\n/* Arrow */\r\n.fsselect::after {\r\n content: '\\25BC';\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n padding: 0 3px;\r\n font-size: 11px;\r\n color: #ce2f37;\r\n cursor: pointer;\r\n pointer-events: none;\r\n}\rM\n\r\n/* Reset Select */\r\n.fsselect select {\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n -ms-appearance: none;\r\n appearance: none;\r\n outline: 0;\r\n box-shadow: none;\r\n border: 0 !important;\r\n background: black;\r\n background-image: none;\r\n padding: 0 10px;\r\n color: #CCC;\r\n cursor: pointer;\r\n font-size: 11px;\r\n flex: 1;\r\n}\r\n\r\n/* Remove IE arrow */\r\n.fsselect select::-ms-expand {\r\n display: none;\r\n}\r\n\r\n.fsselect select optgroup {\r\n font-weight: Mbold;\r\n font-size: 12px;\r\n color: #777777;\r\n}\r\n\r\n.fsselect select option {\r\n font-weight: normal;\r\n font-size: 12px;\r\n color: #BBBBBB;\r\n}\r\n\r\n.modal {\r\n display: none;\r\n position: fixed;\r\n z-index: 1;\r\n padding-top: 7.5em;\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n overflow: auto;\r\n background-color: rgb(0, 0, 0);\r\n background-color: rgba(0, 0, 0, 0.6);\r\n text-align: left;\r\n}\r\n\r\n.modal-content {\r\n position: relative;\r\n background-cMolor: #1A1A1A;\r\n margin: auto;\r\n border-left: 1em solid #202020;\r\n border-right: 1em solid #202020;\r\n width: 65em;\r\n box-shadow: 0 .34em .67em 0 rgba(0, 0, 0, 0.2), 0 .5em 1.67em 0 rgba(0, 0, 0, 0.19);\r\n -webkit-animation-name: animatetop;\r\n -webkit-animation-duration: 0.6s;\r\n animation-name: animatetop;\r\n animation-duration: 0.6s;\r\n border-radius: .67em;\r\n}\r\n\r\n@-webkit-keyframes animatetop {\r\n from {\r\n /* top: -25em; */\r\n opacity: 0\r\n }\r\n\r\n to {\r\n /* toMp: 0; */\r\n opacity: 1\r\n }\r\n}\r\n\r\n@keyframes animatetop {\r\n from {\r\n /* top: -25em; */\r\n opacity: 0\r\n }\r\n\r\n to {\r\n /* top: 0; */\r\n opacity: 1\r\n }\r\n}\r\n\r\n.modal-header {\r\n padding: .625em;\r\n background-color: #202020;\r\n color: #BBBBBB;\r\n font-size: 1.33em;\r\n font-weight: bold;\r\n\r\n}\r\n\r\n.modal-body {\r\n display: flex;\r\n align-items: stretch;\r\n}\r\n\r\n.modal-footer {\r\n padding: .834em .4167em;\r\n background-color: #202020;\r\n colorM: white;\r\n display: flex;\r\n justify-content: flex-end;\r\n}\r\n\r\n.tabset {\r\n display: flex;\r\n align-items: stretch;\r\n width: 100%;\r\n}\r\n\r\n.tab {\r\n padding: .667em;\r\n background-color: #171717;\r\n width: 10.5em;\r\n min-width: 10.5em;\r\n min-height: 35.67em;\r\n flex-grow: 0;\r\n}\r\n\r\n.tab button {\r\n opacity: .8;\r\n display: block;\r\n font-weight: bold;\r\n background-color: inherit;\r\n color: #CCCCCC;\r\n padding: .62em .923em;\r\n width: 100%;\r\n border: none;\r\nM outline: none;\r\n text-align: left;\r\n cursor: pointer;\r\n transition: 0.3s;\r\n font-size: 1.1em; /* Roboto */\r\n /* font-size: 1.0834em; */\r\n margin-bottom: .385em;\r\n border-radius: .308em;\r\n}\r\n\r\n.tab button:hover {\r\n opacity: 1;\r\n background-color: #333;\r\n box-shadow: 0 .308em .615em 0 rgba(0, 0, 0, 0.2), 0 .461em 1.54em 0 rgba(0, 0, 0, 0.19);\r\n}\r\n\r\n.tab button.active {\r\n opacity: 1;\r\n background-color: #8b2429;\r\n box-shadow: 0 .308em .615em 0 rgba(0, 0, 0, 0.2), 0 M.461em 1.54em 0 rgba(0, 0, 0, 0.19);\r\n}\r\n\r\n.tabcontent {\r\n padding: 0 .857em;\r\n border-left: none;\r\n display: none;\r\n color: #BBBBBB;\r\n flex-grow: 1;\r\n font-size: 1.167em;\r\n /* 14px */\r\n min-height: 35.67em;\r\n max-height: 35.67em;\r\n height: 35.67em;\r\n overflow: auto; \r\n scrollbar-width: thin; /* \"auto\" or \"thin\" */\r\n scrollbar-color: #8b2429 #171717; \r\n}\r\n\r\n.tabcontent::-webkit-scrollbar {\r\n width: .857em; /* width of the entire scMrollbar */\r\n}\r\n.tabcontent::-webkit-scrollbar-track {\r\n background: #171717; /* color of the tracking area */\r\n}\r\n.tabcontent::-webkit-scrollbar-thumb {\r\n background-color: #8b2429; /* color of the scroll thumb */\r\n border-radius: 1.43em; /* roundness of the scroll thumb */\r\n border: .214em solid #171717; /* creates padding around scroll thumb */\r\n}\r\n\r\n.tabcontent__title {\r\n font-weight: bold;\r\n font-size: 1.143em;\r\n text-align: center;\r\n line-height: 1em;\r\n M margin: 1em 0 1em 0;\r\n line-height: 1.125;\r\n}\r\n\r\n.tabcontent a, \r\n.tabcontent a:visited\r\n.tabcontent a:active {\r\n font-weight: bold;\r\n text-decoration: none;\r\n color: #BBB; \r\n}\r\n\r\n.tabcontent a:hover {\r\n color: #DDD; \r\n}\r\n\r\n.dialog-button {\r\n background-color: #ce2f37;\r\n border: none;\r\n color: white;\r\n text-align: center;\r\n font-size: 1.13em; /* Roboto */\r\n /* font-size: 1.1em; */\r\n margin: 0 .4167em;\r\n opacity: .6;\r\n transition: .3s;\r\n text-decoMration: none;\r\n cursor: pointer;\r\n padding: .25em .167em;\r\n min-width: 4.5em;\r\n border-radius: .25em;\r\n box-shadow: 0 .334em .667em 0 rgba(0, 0, 0, 0.2), 0 .5em 1.667em 0 rgba(0, 0, 0, 0.19);\r\n}\r\n\r\n.dialog-button:hover {\r\n opacity: 1\r\n}\r\n\r\np.center {\r\n text-align: center;\r\n}\r\n\r\n.about-label {\r\n margin-right: .571em;\r\n vertical-align: middle;\r\n}\r\n\r\n.about-logo {\r\n vertical-align: middle;\r\n width: 1.286em;\r\n height: 1.286em;\r\n}\r\n\r\n.about-atari {\r\n wMidth: 240px;\r\n height: 180px;\r\n margin: 20px auto;\r\n background: black;\r\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\r\n border-radius: 12px;\r\n text-align: center;\r\n display: inline-block;\r\n position: relative;\r\n}\r\n\r\n.about-atari__v {\r\n padding: 15px;\r\n display: none;\r\n}\r\n\r\n.about-atari__top {\r\n position: absolute;\r\n /* width: 206px; */\r\n /* height: 146px; */\r\n width: 240px;\r\n height: 180px;\r\n z-index: 100;\r\n top: 0;\r\nM left: 0;\r\n opacity: 0;\r\n background-color: #555;\r\n /* border: 17px solid black; */\r\n border-radius: 12px;\r\n}\r\n\r\nb.callout {\r\n font-weight: bold;\r\n color: #ddd;\r\n}\r\n\r\n.controls-container {\r\n display: flex;\r\n overflow: hidden;\r\n justify-content: center;\r\n min-width: 600px;\r\n margin-top: 30px; /* Roboto */\r\n /* margin-top: 40px; */\r\n}\r\n\r\n.controller {\r\n width: 291px; \r\n min-width: 291px;\r\n color: #bbb; \r\n overflow: hidden;\r\n flex-grow: 1;\r\n flexM-shrink: 0;\r\n text-align: center;\r\n}\r\n\r\n.controller-keyboard {\r\n padding: 0 0 5px 5px;\r\n}\r\n\r\n.controller__title {\r\n text-align: center; \r\n padding-bottom: 10px;\r\n font-weight: bold;\r\n}\r\n\r\n.controller__inner {\r\n display: inline-block;\r\n position: relative;\r\n width: 291px;\r\n min-width: 291px;\r\n height: 151px; \r\n min-height: 151px; \r\n background-image: url(" +
a +
');\r\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0M, 0, 0, 0.19);\r\n}\r\n\r\n.controller__keytarget {\r\n text-align: center;\r\n color: #ccc;\r\n background-color: #992329;\r\n position: absolute;\r\n width: 40px;\r\n height: 20px; \r\n line-height: 20px; \r\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\r\n border-radius: 4px;\r\n overflow: hidden;\r\n font-size: 11px;\r\n}\r\n\r\n.controller__keytarget:hover {\r\n background-color: #ce2f37;\r\n color: white;\r\n}\r\n\r\n.controller__keytarget:focus {\r\n Mcolor: #292929;\r\n background-color :#ccc;\r\n}\r\n\r\n.console {\r\n padding-top:25px;\r\n}\r\n\r\n.console__inner {\r\n padding-top: 2px;\r\n display: flex;\r\n justify-content: center;\r\n}\r\n\r\n.console__button {\r\n display: inline-block;\r\n position: relative;\r\n text-align: center;\r\n font-size: 12px;\r\n font-weight: bold;\r\n width: 70px;\r\n height: 24px;\r\n line-height: 24px; \r\n border-radius: 5px;\r\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\rM\n margin: 0 8px;\r\n}\r\n\r\n.console__button--up {\r\n border: 2px solid #464448;\r\n background-color: #333;\r\n}\r\n\r\n.console__button--down {\r\n border: 2px solid #464448;\r\n background-color: #b0abb6; \r\n color: #111;\r\n}\r\n\r\n.gamepad-focus {\r\n position: absolute;\r\n width: 10px;\r\n height: 10px;\r\n border-radius: 50%;\r\n display: none;\r\n background-color: #ccc;\r\n box-shadow: 0 0 2px #ccc;\r\n}\r\n\r\n.gamepad-grid {\r\n background-color: #222; \r\n width: 270px;\r\n grid-cMolumn-gap: 5px;\r\n grid-row-gap:5px;\r\n display: inline-grid; \r\n grid-template-columns: auto 1fr; \r\n padding: 10px;\r\n border-radius: 5px;\r\n margin: 0 0 25px 1px;\r\n font-size: 12px;\r\n}\r\n\r\n.gamepad-cell-name { \r\n overflow: hidden;\r\n text-align: left; \r\n font-weight:bold;\r\n color: #777;\r\n white-space: nowrap;\r\n}\r\n\r\n.gamepad-cell-value { \r\n text-align: center;\r\n overflow: hidden;\r\n text-align: left; \r\n white-space: nowrap;\r\n}\r\n\r\n.dialog-grid {\r\n mMargin: 2em 1em 1em 1em;\r\n grid-column-gap: 1em;\r\n grid-row-gap: 1.5em;\r\n display: grid;\r\n grid-template-columns: auto 1fr;\r\n padding: 1em;\r\n line-height: 1em;\r\n background-color: #222; \r\n border-radius: .4em;\r\n /* justify-items: center; */\r\n align-items: center; \r\n}\r\n\r\n.dialog-cell-label {\r\n overflow: hidden;\r\n text-align: left;\r\n font-weight: bold;\r\n color: #7C7C7C;\r\n white-space: nowrap;\r\n /* border: 1px solid red; */\r\n}\r\n\r\n.dialog-cell-content {\r\n Mtext-align: center;\r\n overflow: hidden;\r\n text-align: left;\r\n white-space: nowrap;\r\n /* border: 1px solid red; */\r\n}\r\n\r\n.dialog-switch { /* 14px */\r\n position: relative;\r\n display: inline-block;\r\n width: 2.429em; /*34px;*/\r\n height: 1.4286em; /*20px;*/\r\n}\r\n\r\n.dialog-switch input {\r\n opacity: 0;\r\n width: 0;\r\n height: 0;\r\n}\r\n\r\n.dialog-switch-slider {\r\n position: absolute;\r\n cursor: pointer;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n backgroMund-color: #666;\r\n -webkit-transition: .4s;\r\n transition: .4s;\r\n opacity: 0.6;\r\n border-radius: 2.4286em; /* 34px;*/\r\n}\r\n\r\n.dialog-switch-slider:hover {\r\n opacity: 1\r\n}\r\n\r\n.dialog-switch-slider:before {\r\n position: absolute;\r\n content: "";\r\n height: .857em; /*12px;*/\r\n width: .857em; /*12px;*/\r\n left: .2857em; /*4px;*/\r\n bottom: .2857em; /*4px;*/\r\n background-color: #DDD;\r\n border-radius: 50%;\r\n -webkit-transition: .4s;\r\n transition: .4s;\r\n}\r\n\r\ninput:chMecked + .dialog-switch-slider {\r\n background-color: #ce2f37;\r\n}\r\n\r\ninput:checked+.dialog-switch-slider:before {\r\n -webkit-transform: translateX(1em /*14px*/);\r\n -ms-transform: translateX(1em /*14px*/);\r\n transform: translateX(1em /*14px*/); \r\n}\r\n\r\n.dialog-select { /* 14px */\r\n opacity: .8;\r\n font-size: 1em; \r\n color: #fff;\r\n position: relative;\r\n display: flex;\r\n width: 14em; /*160px;*/\r\n height: 1.8em; /*20px;*/\r\n line-height: 1.8em; /*20px;*/\r\n background: blackM;\r\n overflow: hidden;\r\n border-radius: .4em; /*4px;*/\r\n border: 1px solid #666;\r\n}\r\n\r\n.dialog-select:hover {\r\n opacity: 1;\r\n}\r\n\r\n/* Arrow */\r\n.dialog-select::after {\r\n content: \'\\25BC\';\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n padding: 0 .3em; /*3px*/\r\n font-size: 1em;\r\n color: #ce2f37;\r\n cursor: pointer;\r\n pointer-events: none;\r\n}\r\n\r\n/* Reset Select */\r\n.dialog-select select {\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n -ms-apMpearance: none;\r\n appearance: none;\r\n outline: 0;\r\n box-shadow: none;\r\n border: 0 !important;\r\n background: black;\r\n background-image: none;\r\n padding: 0 .714em;\r\n color: #CCC;\r\n cursor: pointer;\r\n /* font-size: 11px; */\r\n font-size: .9em;\r\n flex: 1;\r\n}\r\n\r\n/* Remove IE arrow */\r\n.dialog-select select::-ms-expand {\r\n display: none;\r\n}\r\n\r\n.dialog-select select optgroup {\r\n font-weight: bold;\r\n font-size: 1em;\r\n color: #777777;\r\n}\r\n\r\n.dialog-select seMlect option {\r\n font-weight: normal;\r\n font-size: 1em;\r\n color: #BBBBBB;\r\n}\r\n\r\n.about P {\r\n text-align: center;\r\n line-height: 1.5em;\r\n padding: 0 3em 0 3em;\r\n}\r\n\r\n.instructs {\r\n font-size:1.15em;\r\n border-radius:1em;\r\n opacity:0.875;\r\n padding:1em;\r\n /* background-color: #1E1E1E; */\r\n background-color: #1F1F1F; \r\n /* background-color: #9c1919; */\r\n color:#BBB;\r\n box-shadow: 0 .27em .54em 0 rgba(0, 0, 0, 0.4), 0 .4em 1.34em 0 rgba(0, 0, 0, 0.39);\r\n max-wiMdth: 40em;\r\n}\r\n\r\n.instructs .ilink {\r\n font-weight: bold;\r\n color: #CCC; \r\n}\r\n\r\n.instructs .ilink:hover {\r\n color: #FFF; \r\n cursor: pointer;\r\n}\r\n\r\n.instructs img {\r\n width: 1.7em;\r\n height: 1.7em;\r\n margin: 0 .2em 0 .3em;\r\n opacity: .8;\r\n vertical-align:middle;\r\n cursor: pointer;\r\n}\r\n\r\n.instructs img:hover {\r\n opacity: 1;\r\n} \r\n\r\n.instructs div {\r\n vertical-align:middle;\r\n line-height:1.5em;\r\n}\r\n\r\n.instructs div.ihelp {\r\n margin-top:1em;M\r\n}\r\n\r\n',
'',
]);
e.exports = t;
},
function (e, t, n) {
'use strict';
e.exports = function (e, t) {
if (!t) {
t = {};
}
if (typeof (e = e && e.__esModule ? e.default : e) == 'string') {
if (/^['"].*['"]$/.test(e)) {
e = e.slice(1, -1);
}
if (t.hash) {
e += t.hash;
}
if (/["'() \t\n]/.test(e) || t.needQuotes) {
return '"'.concat(
e.replacMe(/"/g, '\\"').replace(/\n/g, '\\n'),
'"'
);
} else {
return e;
}
} else {
return e;
}
};
},
function (e, t, n) {
'use strict';
n.r(t);
t.default =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASQAAACXCAMAAACLDtaxAAAAA3NCSVQICAjb4U/gAAABgFBMVEX///8zMzMpKSkhISFXVlnVISk6OjpHRUlMTE9aWlopIicqKzBEQ0dmZmYhIilPTVFER0hCQkIAAABfXWFmZmY/PEHXKTFsbnFHRUncIjDVIjEQEBBcXGBKSUpUU1eMi40ICAk9PEAXExjVKSiPjpKGiM4wZGRlfXWFSUlJPT06Ehok6MzuZmZneISghJyBMTE+NlJTlJzLeKjKDhINsbnEhKSoHCRAZGiF+g4QpISQBCAdxcnN0d3nlMDEQFxl8fIAAEA3fKSoVISJ7e3tNUFERCgjWMTQIEhAQAgKhpKVbYGHkMjkyBwkhBQdcXGDgLTeLISR8Hh8qMjTWIiOSJzBWExASCAIHAARVWVruJzqFHSHGKC+2JzJ0HB5JFhBLEQsQGyEJEQkpBAemqavxKS/MMzPoJymlKSkgHxoXAAjkKDu8Mi5mFhdVFxlKSUrOKTQrNTUiBAHFJju8JSqrIiWfHSqTHyp1IChBDww6Dw0HFRsgAw1qIBxoGyJFBw0NDxa7soR8AAAAgHRSTlMA////////////////d///////d////4jM/////////////////////3f//////3f///////////////////////////////////////93/////////////////////////////////////M////3f//////////////////////9bPHqQAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAWdEVYdENyZWF0aW9uIFRpbWUAMDQvMTUvMjDSGnhzAAAAIHRFWHRTb2Z0d2FyZQBNYWNyb21lZGlhIEZpcmV3b3JrcyBNWLuRKiQAABeUSURBVHic7Z33Y9pW18ejK1loWRhV8ASDQGyKwQ8bvB3HK4kz2yTNXs1OmqRNutLxr7/nSgwJJCEwsXj79PtDEmNxw/34nHPPucunTmHN/ysbnepqfv60sqD4/tWgFhZOX+pgAkSCAvL6I82iBN/pSzojX0BRAnSC7ogYIfp/RkHBJwgMtqVLCwGfMJLM/6gSgiCcngdDCiwIXn+WYSVm5MdGC4Iyf+qSIvgMH4hHnLXgdREhBN8nW8lkRFMymW2R8KIokuJI9Vqy+br/ArzC06Pd/mQEbvafU/M+JWh4DXE2fRRFTIhMNlVVktSmikE18T/VJIl4HiEO6bKB3P1274HBrznT1M4QHkHhk8SINsfvUf3wKwXdfWeKRjTgAIWYBSiSLiKDC5FmK8jMBmiAjqqRmRd72nZOIQx5AAgpWlIICQFIWjA/afm5ejEhqBPn8VE42Kkr5CIAXIafJSPSE0dq6FaUEtiTFGLatIXE6IhTIR2WZBVFdsWwUmAGnyDQxkbwXEaleTK/Rw5SCmrsZINE8Z/mpxaTU5H1sFPOJxagBsblc1D9FTCLyJGyz6XR8bdiWEi4hkaqKGIP9DAkMis0TTSl7fEJ4EPUiaoMXUfF45myCG3jZJaSIlBSiDoi69pTnJPXYxgTD/5IHjCDo8py/EI9vJQZsyQ0kXlQlIho1Wg3YjSa2o+53ZDkQkY5JScQx++SDdiJPUT5eVGpASTBTcgMpKzV9cp8RSzFQ9XWqP12xHiVWpkgpeRxG2ti/dNKI+NhWHFytTpC+dibeXjBRcgEpKSXzssHVovlEQDApYKAUk2V0LEreJJFsPB3PFOJpoBTYKg9QGg0pKZFUzjicsX5hN9+RXxPjMM34/KhNSBLzGepQcKS8YISoTz6yxciEdzyMy0E7H27uol1+PhgSMotG8KTwzAuPviNGlGCHFWJnHtjQZJE/sKF/IwNAvYnuSCaJBnI1nMrH+GDcKUlbK5mRzWjQKEqZESMnJihQvYjZKgAXJkB4holZcg7ybpIFSwd/zuBGQWlKSHWBERf1Cj44uvxkSFYvK4gQJk1fpkSjE0+koyROIrhW1ukTElDL5rsM5Z9xkM5KXKWpcSJAK5JKSOBGjkx7XNMnpeDzK87ySScsaGaAEyXfXlhwgcTiHTAwxcgWJkhUohccLS6InvobFa5RyPJKLmRieD+KRSK8Xzwb4kZCws5HRIUbuIFE5QsoSnHtKnDeMkGYsiJchSTpP1MvtdTm/QPOIayXkoCt3U5uxiSGxOVIaw5Q8YsQTtFbPgi1BqJbPx9OQC7TPrsl5X3+KzR4Sh/ikROeGGbmERMmMpLq2I498jQ+ut9cUbE08n4tDGnB+PRMvg+vF0zVDAecUk6QkZVXTuoQUzMfFSy2Ue4NW4xkfTuBYRcOLIRwuFjEwkqNxau5bOKIbH7CHxELWtDMkCEmMFiZL9qltT8mSuFs8vxtKFWiFekwVsS9EMpoTwpDaUuobn7CFBnRqzhsQIeiLZTyctIbEQu92ZkjeMeJpBkFvXarUMYApADKIK8fhaAvGDT9pDiki0RdQGRpSwgOF0ilsfg0HlLR5k5XxTxdFmlLzxNUTUM1F+N1No1yFzxJj4Rh6q3PXh+VtbSKQUoawMiY36g0zMH+j2ig4oDFCyil5RmZPI0ZC8YcTx9Xi8QKO1dDxKyLVMJt6O0uQC5N5tYZCSLaSsRMjDHWdZNhZQNESdxXL4O+ED17MyOllQkyOzAGDkwVoth+rpQjtPIEiyM4FWQN6qxdNbMTHRLpZ3XUNqSkrHkFgTpJjg8wfMWyYIIgAj3EAVjP/IUUnVBSMPQjaCHDvT9kOhz8vl4ha/2ahngFJ6PcAUoq7dDY//Ub3f/jwV6ynPMLuBDqJEItGlFMSJQD7fe8yvzcJFZMTRqLpfzhhFfLxYKWwrgQDTYzndivl0orBfS6XRdGF7FtYME6XKUwpBYhmY6c2v+PAQfv1/Q7ai7TyfRtSWjhIQGWA6MmAzwaOzHtRrE6JoiAqVYubx+HsxIpqn1dFEeHtxsIcHYJuuQAjRjzIr8Cr2kmw+vN9dh5TM9xNAKNiWZiTiWuV4yks+m4wWFhPxorVyrFdJrRAPRskwMM7KHpPpkPbYETZD8TIBYgmidILpd1zFpDtebiwNIjOZvVNYJkkeMEGKL52SO3oLhbUHEsTtTy9RxFoksN0zYQeLUiF+b2GYpsyX5fbQORduCw/Up0YoJJc3gJAuqXNU2BeBEzpP5IxgsSLYOP+TE2Xi8xjQQD4ZVoxvaNy3syBYSKbX0AWoAEjYknRGHyGQym8VxWX9FsIIkE/ZrlV7NseXPyglthgTR6+BxeZ6kt9KZXUs8umwhoag1pASh2xF6oW/iegEmRej+5h+CRMkJ1S5ye7WUnYDqtSbTvLbNBieUUUSy8fi6w2exgMdSSeGtICt1xNjKpb3TD+7eG/K0HKRewW4PzbK5WiUNNmymcx5h4oJTJnCfRehxKW1vZQIJ8O0o5QOJRNtJRtuNvlpBkn2oNyZscUtN6ut2GSrb9nTbdtpYGSuJCoVy3f4cNpKQzJKjtXUJi8FT37PgaCDHxTHurDcXa2Rje/leHdOA8qm/R9kFpIkg4JI2EpBcmNpC8Y0TgLClTV+oFvGi7S2hjW1pOODAaHxJhikkg0hGS0rRwN69ySF0osZWOK6KyXijEgRYSo5limxAd3jG+JXVGN65jSi9QZ9mVZiwgWcck3qv1NV0im07XiBZxvlDLpAsyTUa3FhzfYA8pZwWJgRQAJ9zYlLJJnRGnG1dgIE+yg8SJwMhDRHjkP1suyw1CrkH8Tpfj9QDv4GvE+KObVt7igQlxJFYnvgwUb31IgSFIHo5rXeFJpFq+nokXYmyhfK68QDo/b5tMiv08yW/qfkJ7Cmf3SCtNOoxM0wBdSHiaeyCZ9DYedYQgdkPgTlMtUVgb2MLFlIVtISSrah9QXs9t3X82KOpUbofgNW036kJDUmj1GBAq2M4VCAS//IyIxwtlsIYlS099ZBggQAqP0FfN3+tj9S2cUNK8yCYQ+CxCFItA4C+CRr/GD+2nR+XStQOlwRiGyg8RzqhroBCXF/IYAo/TWAPoTuLSfCdK9JVj8Nz5UQeViSShwOZMdTdbNYwkxuYE5EERAGvDdKDfrysaS+N7wRlFMwLBFMghDvUIbASW04R+SzGCgK3hOXxjQ9pb09gVyXs0fEfITmTMbDJnHK9mjjUiTHaSWRHY3HrMUa9BuglC0Q039ZQA6yDAEHTM8RHU2NMs4bhsmlLyxI6WWW3tSRya7QVwd725zJ9s5blXd7W1NMq2X5IkEJAIJohuxiYTi99N0LMoOHRjI5Uip520cx3s0NyIX43mgZI7PXLAdjw+tsFnLdklJm+S2UAyClJD3MwK4VQIkwFAGyZPfarVXZpr9iUnMaKqddyc+UVinyvF8/dxZ80Z/JMdZl204LE6S1kdJ2MDwtGIZ7bcQPJKxXcInebBKHCK9yyPo5+bt0ZlcupuUATVyDz5HD2yL4IOW2BVtIoqoqlqbE5hOdmdreBlx/QLCCJEez3WU3zrvToohYP3deOVcUGMit12X2/FqhWJT177iU/YaJpIRkKx/CkHYZv0kA6bvhB+WA1OwGJE+Or+lC/FaRiT0pB4NbxXNFUDmTLq6N04I9pJak+q1MqW9J/YIOIA0rl+sZEvKQEcRoIl0kdp8UEyiXKWOlAZbPtR057nSLSHzOwpSGITGWkFhZ6O0H9JQRUMo/WRdz58pMi2DXalDXbtWZcd5vD4kgJZWZHFIsCoak7+HiCI/rNZ5oP8mL9SdFSmwRiYWFAIEG6xRHOe2+jcAAN7kl5ehORMKMPJ0/wuv959IE3y4W6wQpduryMeQAiYeEMhgdPm7rDlLOD4yxIYmeTx/hZcjMOTkrlNPlrV3rlWxHOVkSn5UisWiMnQQSK5P6TJKX41pPPHH2SYFoQepdTJ/Nj/12py3KPNeUOHnQlMlxBwueUcLLNzQQjLVcq75JEoRwvFmNjm5LjiQBwOIkYTAPYmAtIsk/S1rc9qkUGBZCKxRzfoNLluNOiv41G3AuQVdXBIzhsjA74BxT0mR/JKRHsbBziCY9Dti5EbOGgDaNcWhmf0QhIIpeU1KB5gylAIgTzZVVBwmd6JKckdTsiZoMRwSvpIj7ux0cnsKPRkKA6UQOmuMRSFnctmSYBZCaCC1sPl7KHhEM2PhPpYq7WQs6Q8H1JSUmiTbbEUoYdpPpu0xhloCiDryVFpG3Rmg1IvJAuFoqWO/1caQQkvJcNKBHRnAlTlDUpyvYhReWAKiXxhVSezY0MiafbxXSZmpSRqwtdkqpE5gdmBDQLoobEylFCwoxmYAnSIJwCZAYv13AvN5C4bESK0KzlxMkAopyShbGf06/SmEb3piSSjssjl9ds5e5qIDEiSVmfLLOU1XGknqPJFK9qF7rMGiM8i+u0t2aEXN6fRILLqSgvyzk7TBgRDSyTonaN1qxc7deTxR5213IFSMVv4hvgdQYwsd7Z3G/Udm5NzfgI/0dLC/azZ0THl+iYuvN1WAl8idvGFblHDyIa/9gcQ/m4S8bOy3D9NjQEJkRDAsbEQAhMDx9MlszGFRhFVkprZzmTt7Iz9U9I4kDRMQENSI0myM55y+kuqGmn1zlH8w+xoTEjagQq8wQ2T6gszE3uP/PMYjQlJO0zCcSTZavWudU22SK73TQ/XIL+gxnM37dSMDT6d3z/QjsaHhIavH+EMr3vXkS+psSE58Zupem2Kmiakf2LM1jQ9SP9YO5oipC/B6FpD3Hm4syPyEw2ZS0vQAt/QWmgc63NMz5KmvEy7ROwcbKsvP39+eVO92XzYuPaeIN6/H6eBpSUSWjh8+fLl4c3V1d93rk38Q5wSpGnbEc3/3jx8fP/N7U+fPl25ev23l9LvO+OV8TTxcPXm4wd/3P7506fbv7w5OpSaDyddlpgOpKn72s7q4fUrP6VC+5VKpRoK3fn452epOYbP0NDCjftX7qRCVWhgf7/67vm9I2mVmM4zSVCBNmRHd2JYefNy/XHlWmpsrYT3buPDTvc/SpmtTQE3p/vOnl589K5XOlEqpUql64cKdqx+kTX4STNOANOX5bLohXbxSfXYmPKcpPIf/UXpW/firS0rXiMbqh5/3NyqluTm9kUX4R+XZxuv70sEklKYASZxyzF5e/evuLejg4pxRqdLlH99KBy4ovSeQ+iu0EF5cNDQRSqVKlaf3bk5C6fiQph2PGqsPfrwV1n/8Rkhz4VuX/5Aejf7PltCNB3e+n1sMhUyQgNncmaf3Dg+mvhfAnR2N/b866Jr614+v5r4BKGZGKYhOlXdvpb9HNbBE7B39dCaVSoVCxgZCi+EwtPLu3s3m2IPccSFNfVz7+/GPt+YAkkGa2yziP8/cuS61RrWwefH5RngxBJBCJksKh0OpM2fevZGS436mY0ISOSIx1Rxy+cbPt8JmI+pDWlys3n28OuKYY2P16uU5TASikMGWQljhUjj8+khyOpRspeNBmv46beT6hcqi2ZA6fDSVLlyVmMs4TMge/3QEUOqTUIKTwYrh6e1QLQzoWpKkzWiI/fISQm/omZQ0pPFd595eUdepjY+/KmW8WbSCFFkMQvH+VWuMF7+NAmv7emqXkg9A3czjA2kE6s3FbOiAdKP3+6zvz2G9sBGxprnThivS7OLUtyi4YTXmP1rXIleowJGNPS99/vLi9wtlSurb3S1XjYd0AHvEqry9uk06chzQ5pC+xb0S8+FOomyVbQwo/27+/+oKz6+PSzsXnzpDA3/bfSlmOHMOWJob0JdaO6M3fUiVnSOBv93AXbSgtPTy6U100Z0gDkFKljV+kTY5suac0KaTp5UfG3kbePg2nnCBBpvP9lcO/OTMlJIrdrzavh6ohR0ih0sa3hxEkku5taUJIU/Q10pC17P3xNPyNEyQowL5/fqMpLpMGSjzJI7EzXkX+rJ5J2YU0HVJ44/mHpiiS7uPSZJCmGY/EPqVre1dDJUdLAkobzy82yWXS2EcwCbID6dGf1blRkCp3H2+TIume0iSQuCnHbLKbQM1/bu10dDQl3UYPUtR68YZTr3Pb/6M/QnO3g2IF066ejDiSXlCaBRE57XOtR2ruqQbKlBIG71Lcko8dxusO9f3SvOhoSxkyS7imND+lLXFXfDaGQ5GiQ7Dq5iMMuhtRR35Y6nN9jdxsF6dVdSJRWxqA0PiR8NfSX2ucfebPvDAlSABjdDsQhSt3dfgdvQ/be2oX07Y0Dkes24eJjjQ/pS25hz/6acoIEFRlAuidtLvcgkQNV2M5vd2wR65DCFSiSN7kepMEWLDT2rpIveo0W9/inEq5O7foYXpyr7D+QWgZIotlfliHjxpmCgyVV9u9DjdyHNNrjxoT0pY9mfb698Y1D4A6HS9+//tBs9CENUXr0yy3LArdvSRuvL0okIkn3lMaE9IUZLWXv7ztBwgUu+EoX0or2+8DNfdz8NRQGW7Sv3c5sXLn5N0eSY1AaBxL3pRnBKPX50wbOhmwgpaCEP1olG6IJkmmicfnGp8qcrS3hkBT6a5UcgDSC0jiQxBM4Kpp9e6FiHM1IgS7on/c2JA10UjbH34MFlvDBiCQmnEBdgdESDLThHb/eQTmarX2Pv2wv2wxPOA8EMhrpo6ONS4/DK0Cx57/3hcPX1kfQCDTXgSGkMSCdz5Hjz4o+3SnaQ8MCUROIwJEO2Q29+uPuqM1s7OBuQClf2r0uRlZXhBpwouYd0QkeOr23/Ffq+ZB1RKhfeSI9IC0QmSsSj355uhC0hzYUhR3qEVpaXnVsYkGtIJ3Usm+ZvXt/fGJx5C8+lFherF67e3F4ejLnDfeTV609fhUN4nc3sa8Do9uE2DP9WjByml9xCOrmrxvAq9euNsHF4wt2DaPL0j5vbpEU46fSx7y9o7/6Pt8KDlpSaq+5fvbHasrZEJ49zeUrpRI/3oxtHP1crYbMVhEPP7686MDL1ETWPvr1QKZlj25nq3beHN15YhP1RlFydnDzZbf7XCD5yeP1jqBruKVTZeH31sbo5lN/Y9ZE/OHzzMVXRm9DWKqvVO7eP1IMVxxY4a0ouIJ30cZH3xBKRlS6+/MfZ1qvLq1avq5UrlzvN7R2oku+xkR1iGVrLSh+s/3w1VL1+uVi5Xnr17/svR4aOs6GRHtrY0GpI3x/vF31fVo+u3f/4WdPXNgxvSdlZsWMZbkyUYW9hcvXl0/Y8ruInbbx58Xt3OcrisHUHJ6sOMhOTVsSNefLi9evNw7+XLPWl1+yC7vGyVHg3KWF4glN1eXd17uafuqaurkRf4/MvoFqzGuFGQOM9+yzFCjZ2dzc3NZHJzR+Q5y9TG0RJ41IAi7+FDaGOHXEYuANlRGgHJw+NrPFrG6hwRW3HJyNTHxs6K3pllt4itKY24YcLb33jQ+9zLei9XxvW4nvWYCpGRwAY/iBMkr2497qmHBCNaWQGbcgHJRGkySIOUHCF5fuyo250epBU3lIx97EGyqmndUrKANDuMCN4QbVcwJXddNEYVDk/xkmMyGpiEs4fEzcRVGm7HJPs+GmZW3IS0jkzR2+EXmHt9haauySgZE+d+/B8DkomzBSRxlhhNl9I4MlCygTRLxyCP3Mcdj+6w1pBmI2QYdnxIaWbI5tjAMiRDF2WI0DY/jJoHUozQECf8ihhljNKktTS0uDUPCeLy+9XhI5PH8hTheXLKAhH9fy4kScCNOX6w9BqVJ/K3TQgBDEgQjlVm5HdIsjdJkfexoco/DkC75fD6v+u5eaBJIpgVwy1VNF5QEn+8/p+ZPB5SAZ513rYn6KJrHuLHfDv8lofiY+VOnvvIJvv8HlCaKvaLVzMk4QkRCOA2Q5k8Lgk+YwXA9IETqlzS5F66wjLUDxCVXqPvvxpcKU8AIU/IFIDAJZgVmTEJwMrZBRdB/rZoAUWWC6yZpjRFQunRaAUqKSb4Zk6JYXHLtjpLSayIxNqLTl051Nf/V/CXQVwaZvpgBXfpq/uv/fj2+fvjhktY3rPmv4Mv/utQPP/zwNbzn1L9yp/8D/NwlfoCF7/8AAAAASUVORK5CYII=';
},
function (e, t, n) {
var r = n(0);
var i = n(7)M;
if (typeof (i = i.__esModule ? i.default : i) == 'string') {
i = [[e.i, i, '']];
}
var o = { insert: 'head', singleton: false };
r(i, o);
var a = i.locals ? i.locals : {};
e.exports = a;
},
function (e, t, n) {
(t = n(1)(false)).push([
e.i,
'.message {\r\n visibility: hidden;\r\n color: #BBB;\r\n text-align: center;\r\n border-radius: .4em;\r\n padding: .54em;\r\n position: fixed;\r\n z-index: 2;\r\n left: 50%;\r\n M top: 7.34em;\r\n font-size: 1.25em; /* Roboto */\r\n /* font-size: 1.25em; */\r\n opacity: .98;\r\n box-shadow: 0 .27em .54em 0 rgba(0, 0, 0, 0.4), 0 .4em 1.34em 0 rgba(0, 0, 0, 0.39);\r\n word-wrap: break-word;\r\n }\r\n \r\n #snackbar {\r\n background-color: #222;\r\n min-width: 16.67em;\r\n max-width: 16.67em;\r\n margin-left: -8.335em;\r\n }\r\n \r\n #errormsg {\r\n background-color: #992329;\r\n cursor: pointer;\r\n min-width: 23.34em;\r\n max-width: 23.34em;\r\n M margin-left: -11.67em;\r\n color: #ddd;\r\n }\r\n \r\n #errormsg .closebtn {\r\n margin-left: .68em;\r\n color: #ddd;\r\n font-weight: bold;\r\n float: right;\r\n font-size: 1.48em;\r\n line-height: .9em;\r\n cursor: pointer;\r\n }\r\n \r\n #errormsg .closebtn:hover {\r\n color: #000;\r\n }\r\n \r\n #snackbar.show,\r\n #errormsg.show {\r\n visibility: visible;\r\n -webkit-animation: message--fadein 0.5;\r\n animation: message--fadein 0.5s;\r\n }\r\n \r\n #snackbarM.hide,\r\n #errormsg.hide {\r\n visibility: hidden;\r\n -webkit-animation: message--fadeout 0.5s;\r\n animation: message--fadeout 0.5s;\r\n transition: visibility 0.5s;\r\n }\r\n \r\n @-webkit-keyframes message--fadein {\r\n from {\r\n top: 4.67em;\r\n opacity: 0;\r\n }\r\n \r\n to {\r\n top: 7.34em;\r\n opacity: .98;\r\n }\r\n }\r\n \r\n @keyframes message--fadein {\r\n from {\r\n top: 4.67em;\r\n opacity: 0;\r\n }\r\n \r\n to {\r\n top: M7.34em;\r\n opacity: .98;\r\n }\r\n }\r\n \r\n @-webkit-keyframes message--fadeout {\r\n from {\r\n top: 7.34em;\r\n opacity: .98;\r\n }\r\n \r\n to {\r\n top: 4.67em;\r\n opacity: 0;\r\n }\r\n }\r\n \r\n @keyframes message--fadeout {\r\n from {\r\n top: 7.34em;\r\n opacity: .98;\r\n }\r\n \r\n to {\r\n top: 4.67em;\r\n opacity: 0;\r\n }\r\n }\r\n ',
'',
]);
e.exports = t;
},
function (t, n, r) {
'useM strict';
function c(e, t) {
this.topic = e;
if (t) {
this.onEvent = t;
}
}
function d(e) {
if (s) {
var t = new s.Listener();
t.getTopic = function () {
return e.getTopic();
};
t.onEvent = function (t) {
e.onEvent(t);
};
s.addListener(t);
} else {
var n = e.getTopic();
var r = l[n];
if (!r) {
r = [];
l[n] = r;
M }
r.push(e);
}
}
function u(e, t) {
if (s) {
s.fireEvent(e, t);
} else {
var n = l[e];
if (n) {
for (var r = 0; r < n.length; r++) {
n[r].onEvent(t);
}
}
}
}
function h(e, t) {
for (var n in t) {
e[n] = t[n];
}
}
function w(e) {
var t = e.toLowerCase();
var n = '';
if (g && (t.startsWith('http://') || t.MstartsWith('https://'))) {
n = m + g + '?y=';
}
return n + e;
}
function v() {
return m + g;
}
function A(e) {
function n(e, t) {
var n = 0;
(function (e) {
var t;
for (
var n = (t = e.getElementsByTagName('optgroup')).length;
n;
n--
) {
e.removeChild(t[n - 1]);
}
for (n = e.options.length; n; n--) {
e.Moptions[n - 1].parentNode.removeChild(e.options[n - 1]);
}
})(e);
var r = document.createElement('option');
r.text = 'Select Atari 7800 Cartridge...';
r.disabled = true;
r.selected = true;
e.appendChild(r);
(function e(t, r) {
n++;
try {
var i = r.files;
for (var o = 0; o < i.length; o++) {
var a = i[o];
var l = document.createElement('option');
M l.text = a.name;
l.value = a.path;
t.appendChild(l);
}
if (n < 2) {
var s = r.folders;
for (o = 0; o < s.length; o++) {
var c = s[o];
if (c.name && (c.path || c.children)) {
var d = document.createElement('optgroup');
d.setAttribute('label', c.name);
t.appendChild(d);
e(d, c);
}
M }
}
} finally {
n--;
}
})(e, t);
}
function r(t, i) {
function o(e, t) {
if (t.indexOf('//') == -1) {
return e + '/' + t;
} else {
return t;
}
}
function a(e, t, n, i) {
var a = t.pathPrefix;
if (!a) {
var l = n ? n.lastIndexOf('/') : -1;
a = l == -1 ? '' : n.substring(0, l);
M }
var s = [];
var c = t.files;
if (c) {
for (var d = 0; d < c.length; d++) {
var u = c[d];
if (u.path && u.name) {
var p = c[d];
p.path = o(a, c[d].path);
s.push(p);
}
}
}
i.files = s;
var h = [];
var f = t.folders;
if (f) {
for (d = 0; d < f.length; d++) {
iMf (f[d].children) {
var g = f[d];
h.push(g);
new r(e, g).fromList(f[d].children, a + '/');
} else if (f[d].path) {
g = f[d];
h.push(g);
g.path = o(a, f[d].path);
new r(e, g).fromUrl(g.path);
}
}
}
i.folders = h;
}
function l() {
t.loadCount--;
if (t.loadCount == 0) {
M if (t.error) {
y(t.errorMessage);
} else {
for (var r = 0; r < e.length; r++) {
n(e[r], t.root);
}
u('romlistLoaded', null);
}
}
}
this.fromList = function (e, n) {
t.loadCount++;
a(t, e, n, i);
l();
};
this.fromUrl = function (e) {
t.loadCount++;
var n = new XMLHttpRequest();
n.openM('GET', w(e));
n.onload = function () {
try {
if (n.status >= 300 || n.status < 200) {
throw n.status + ': ' + n.statusText;
}
var r = JSON.parse(n.responseText);
a(t, r, e, i);
} catch (n) {
t.error = true;
t.errorMessage = e + ' (' + n + ')';
}
l();
};
n.onerror = function () {
y(
M'Error attempting to read cartridge list.<br>(See console log for details)'
);
};
n.send();
};
}
function i(e, t) {
var n = { loadCount: 0, error: false, errorMessage: '', root: {} };
if (t) {
new r(n, n.root).fromUrl(e);
} else {
try {
var i = JSON.parse(e);
new r(n, n.root).fromList(i, null);
} catch (e) {
y(e);
}
}
M }
for (var t = 0; t < e.length; t++) {
(function () {
var n = e[t];
n.onchange = function () {
var t = n.value;
x(t, true);
this.blur();
for (var r = 0; r < e.length; r++) {
if (e[r] != n) {
e[r].value = t;
}
}
};
})();
}
this.loadListFromJson = function (e) {
i(e, false);
};
this.loadListFrMomFile = function (e) {
var t = e.name ? e.name.toLowerCase() : '';
var n = e.type ? e.type.toLowerCase() : '';
if (t.endsWith('.json') || n.includes('text') || n.includes('json')) {
var r = new FileReader();
var i = this;
r.onload = function (e) {
i.loadListFromJson(e.target.result);
};
r.readAsText(e);
return true;
}
return false;
};
this.loadListFromUrl = functioMn (e) {
i(e, true);
};
this.resetSelection = function () {
for (var t = 0; t < e.length; t++) {
e[t].selectedIndex = 0;
}
};
}
function I(e, t) {
var n = e == -1;
if (e == E || n) {
var r = 0;
if (!n && t) {
var i = Date.now() - _;
if (i < t) {
r = t - i;
}
}
setTimeout(function () {
if (n || e == E) {
k.clasMsList.add('hide');
k.classList.remove('show');
}
}, r);
}
}
function D() {
S.classList.add('hide');
S.classList.remove('show');
}
function R(e, t, n, r, i) {
var o = document.getElementById(e);
o.className = 'controls-button';
if (i) {
o.onclick = i;
}
var a = document.createElement('label');
o.appendChild(a);
if (r) {
a.setAttribute('tabindex', '0');
M a.onmousedown = function (e) {
e.preventDefault();
};
if (i) {
o.onkeydown = function (e) {
var t = e.which;
if (t === 13 || t === 32) {
i();
}
};
}
}
var l = document.createElement('img');
a.appendChild(l);
l.className = 'controls-button__img';
l.setAttribute('draggable', 'false');
l.setAttribute('src', t);
l.setAttribute('title', n)M;
return { div: o, label: a, img: l };
}
function z(e) {
e.preventDefault();
var t = null;
if (e.dataTransfer.items) {
for (var n = 0; n < e.dataTransfer.items.length; n++) {
var r = e.dataTransfer.items[n];
if (r.kind === 'file') {
t = r.getAsFile();
if (L.loadListFromFile(t)) {
t = null;
}
break;
}
if (
r.kind === 'string' &&
M (r.type.match('^text/uri-list') || r.type.match('^text/plain'))
) {
r.getAsString(function (e) {
G(e);
});
}
}
}
if (t) {
Q(t);
}
}
function V(e, t) {
F[e] = {
left: t.getLeft(),
right: t.getRight(),
up: t.getUp(),
down: t.getDown(),
b1: t.getButton1(),
b2: t.getButton2(),
};
}
function q(e, t) M{
var n = F[e];
if (n != null) {
for (var r in n) {
var i = n[r];
switch (r) {
case 'left':
t.setLeft(i);
case 'right':
t.setRight(i);
case 'up':
t.setUp(i);
case 'down':
t.setDown(i);
case 'b1':
t.setButton1(i);
case 'b2':
t.setButton2(i);
}
}
}
}
M function J() {
if (W) {
try {
if (localStorage.getItem('prefs')) {
F = JSON.parse(localStorage.getItem('prefs'));
q('p1map', K.p1KeyMap);
q('p2map', K.p2KeyMap);
(function () {
var e = F.consoleMap;
if (e != null) {
for (var t in e) {
var n = e[t];
switch (t) {
case 'pause':
K.setPauseKey(n);
M case 'select':
K.setSelectKey(n);
case 'reset':
K.setResetKey(n);
}
}
}
})();
var e = F.displayFilter;
if (e !== void 0) {
Y.setFilterEnabled(e);
}
var t = F.displayRatio;
if (t !== void 0) {
Y.setScreenRatio(t);
}
var n = F.displaySMize;
if (n !== void 0) {
Y.setScreenSize(n);
}
var r = F.hsEnabled;
if (r !== void 0) {
P.setEnabled(r);
}
var i = F.hsGlobal;
if (i !== void 0) {
P.setGlobal(i);
}
var o = F.hsFallback;
if (o !== void 0) {
P.setLocalFallback(o);
}
var a = F.palette;
if (a !== void 0) {
M O.setPaletteIndex(a);
}
var l = F[N];
if (l !== void 0) {
Y.setFullscreenMode(l);
}
var s = F.vsync;
if (s !== void 0) {
j.setVsyncEnabled(s);
}
var c = F.frameSkip;
if (c !== void 0) {
j.setSkipLevel(c);
}
var d = F.xmMode;
if (d !== void 0) {
H.SetXmMode(d);
M}
}
} catch (e) {
u('showError', 'An error occurred loading preferences: ' + e);
F = {};
}
} else {
console.log('Unable to load preferences, local storage disabled.');
}
}
function Z() {
if (W) {
try {
V('p1map', K.p1KeyMap);
V('p2map', K.p2KeyMap);
F.consoleMap = {
pause: K.getPauseKey(),
select: K.getSelectKey(),
reset: K.getRMesetKey(),
};
F.displayFilter = Y.isFilterEnabled();
F.displaySize = Y.getScreenSize();
F.displayRatio = Y.getScreenRatio();
F.hsEnabled = P.getEnabled();
F.hsGlobal = P.getGlobal();
F.hsFallback = P.isLocalFallback();
F.palette = O.getPaletteIndex();
F[N] = Y.getFullscreenMode();
F.vsync = j.isVsyncEnabled();
F.frameSkip = j.getSkipLevel();
F.xmMode = H.GetXmMode();
M localStorage.setItem('prefs', JSON.stringify(F));
} catch (e) {
u('showError', 'An error occurred saving preferences: ' + e);
}
} else {
console.log('Unable to save preferences, local storage disabled.');
}
}
function ge(e) {
for (var t = 0; t < e.length; t++) {
e[t] = 0;
}
var n = 'AABog6pVnAILDgIACx0LBAADBBEBDgARAx8AAAAAAAAAAAAAAAAAABE';
for (t = 0; t < 183; t++) {
n += 'A';
}
M n += 'B';
for (t = 0; t < 45; t++) {
n += '/f39';
}
be((n += '/f38'), e);
}
function me(e) {
var t = '';
for (var n = 0; n < e.length; n++) {
t += String.fromCharCode(e[n]);
}
return btoa(t);
}
function be(e, t) {
var n = atob(e);
for (var r = 0; r < n.length; r++) {
t[r] = n.charCodeAt(r);
}
}
function we() {
Ae();
var e = new Date().getTime();
M var t =
(performance && performance.now && 1e3 * performance.now()) || 0;
se = 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (n) {
var r = 16 * Math.random();
if (e > 0) {
r = (e + r) % 16 | 0;
e = Math.floor(e / 16);
} else {
r = (t + r) % 16 | 0;
t = Math.floor(t / 16);
}
return (n === 'x' ? r : (3 & r) | 8).toString(16);
});
ce = ee.Cartridge.GetDigest();
Mue = de;
te.setHighScoreCallback(pe && (W || ue) ? oe : ie);
}
function ve(e, t) {
console.log('Reading High Score SRAM from local storage.');
try {
var n = (function () {
var e = 'highScoreSRAM';
var t = true;
if (W) {
try {
return localStorage.getItem(e);
} catch (r) {
n = "An error occurred attempting to load '" + e + "': " + r;
if (t) {
tMhrow n;
}
u('showError', n);
}
return null;
}
var n = "Unable to read '" + e + "', local storage disabled.";
if (t) {
throw n;
}
console.log(n);
})();
if (n) {
console.log('Found High Score SRAM in local storage.');
try {
be(n, fe);
} catch (e) {
t('Error converting SRAM: ' + e);
return;M
}
} else {
console.log('Not able to find High Score SRAM in local storage.');
}
e(fe);
} catch (e) {
t(e);
}
}
function ye(e) {
var t = function (t) {
e(t);
};
var n = function (t) {
console.log(t);
u('showError', t);
e(null);
};
if (ue) {
(function (e, t) {
console.log('Reading High Score SRAM from global storage.');
M Date.now();
var n = B('Loading global leaderboard...');
var r = new XMLHttpRequest();
r.open('GET', v() + '/load.php?d=' + ce);
r.onload = function () {
if (r.status == 200) {
console.log('Successfully read global leaderboard for game');
try {
be(r.responseText, fe);
} catch (e) {
t('Error converting SRAM: ' + e);
return;
}
M e(fe);
M(n, 1e3);
} else if (r.status == 204) {
var i = null;
if (he) {
ve(
function (e) {
i = e;
ue = false;
},
function () {}
);
}
var o =
'Global loaderboard not currently supported for this game.';
if (!ue) {
o += '<br><bMr>Using local storage for high scores.';
}
n = B(o);
console.log(o);
e(i);
M(n, ue ? 1500 : 3e3);
} else {
t(
'Error reading global leaderboard (' +
r.status +
': ' +
r.statusText +
')'
);
}
};
r.onerror = function () {
t(
'ErroMr reading global leaderboard.<br>(see console log for details)'
);
};
r.send();
})(t, n);
} else {
ve(t, n);
}
}
function xe() {
console.log('Writing High Score SRAM to local storage.');
(function () {
var e = 'highScoreSRAM';
var t = me(fe);
var n = true;
if (!W) {
var r = "Unable to write '" + e + "', local storage disabled.";
if (n) {
Mthrow r;
}
console.log(r);
return false;
}
try {
localStorage.setItem(e, t);
} catch (t) {
r = "An error occurred attempting to save '" + e + "': " + t;
if (n) {
throw r;
}
u('showError', r);
return false;
}
})();
}
function Ae() {
if (le != null) {
clearTimeout(le);
le = null;
}
if (ae) {
M ae = 0;
console.log('HSC Scores have changed, saving.');
try {
if (ue) {
(function () {
console.log('Writing High Score SRAM to global storage.');
var t = new XMLHttpRequest();
t.open('POST', v() + '/save.php?sid=' + se + '&d=' + ce);
t.onload = function () {
if (t.status == 200) {
console.log(
'Successfully saved global high scores for gameM'
);
} else {
console.log(e);
u(
'showError',
'Error saving global high scores (' +
t.status +
': ' +
t.statusText +
')'
);
}
};
t.onerror = function () {
u(
'showError',
'ErMror saving global high scores.<br>(see console log for details)'
);
};
t.send(me(fe));
})();
} else {
xe();
}
} catch (e) {
console.log(e);
u('showError', e);
}
} else {
console.log('HSC Scores have not changed, ignoring.');
}
}
function ke(e) {
ee = e.js7800;
te = ee.Main;
ne = e.debug;
ge(fe);
M re = atob(
'data:;base64,qe8ggzSgGLGmkY+IEPmpAGCpBCCDNKAYsY+RpogQ+akBYKkCIIM0okSgAL0pEMWA0A+9bhDFgdAIvbMQyX/wAcjKEOeYoASRlKWn0BSgD5GUyJGUyJGUyJGUoAWp/5GUYCDcPfAxoBipBYW1ogKxptWtkBXQBojKEPQwDSDVPZgYaQXJGdAK8A4g1T2IxrXQ26W1oAXQBKn/oAWRlCBpN6IHoFMkgDAByLGUyR3QAqkhOOkhCgoKCsjKSLGUyR3wCGgYcZQ46SFIyMoQ3KASaJGUiMAPEPipAGCp/yCDNCAjNs4HEM4HECBpNyDYP6WL0AqpZaA9IBU3TAkxqUGkh9ACqU+FqCDeNqWH8AepdaA9IBU3oD2tBxAQBKk90AKpMSA9N6kAYKkB0AKpACCDNCAjNiDcPfCqoBOiAMixpp36F+jAGND1qQWFtaICsabVrZAW0AaIyhD0MA4g1T2YGGkFyRnQDUziMCDVMPYjGtdDayJiFtKAUohiGqsS08BCImKqxpqSqkabGqoqoTHsxpKqiArWtkaaIyhD4IOgwpbWoqqn0GGkMiBD6GGlQhZitBxDJAdASoAClj5GYyKWQkZjIpZGRmBAPqewYaRTKEPoYaTGqIEIyoAGxmCkcCgoKiBGYSMixmCkDGGpqasgRmKS0yJGmiGiRpqkBYKGcCYCBnGAg+TqpCoW3qR6Fs2AgAzKkl4aahJvohpyEnejohp6En2AgYDfGudANqemFuca60AWFuiAsOWCxmIGaqR2RmGAgDzKiAKAAqR+BnKkAhaqpH8AD8AUgOTKhmoGahLsgfDnJ8PADIPk6mDADTBgzpLsgYDepAy2CAskD8ANMTjOYSCDbNmioogAgJzLGt9BvqQqFtyB0OSmQyZDQLyB0OSlgyWDwWaGawAPQBMkf8BI46QGBmgiiAYaqogAoEE6Y8ASpINACqR+BmtBBoZrJGtAGpqrQAqn/ogGFqqIAGGkBySHwC8kg0BGY8A6pINAKMwAPQBKkf0AKpAIGaTA4zxrPQEaIAoZxJgIGc0AMg/DGpHoWzTF4yIPA6pLsgYDcg/DGhmskg0BTAA/ACkZiIoZ446QSBnjiQA0xNMskf8A2RmMihnhhpBIGeTE0yqQCBnJjQGaW0haoYaQWqqMAZ8BixpqSq5qqRpuiK0O/AAxAHqR2RmMjQ9WCiBIi9+heRpsoQ9yBpN2AgDzKll6IYhqCFoeiGooWjogCKqJGYqR+BnCA5MoS7IHw5yfDwAyD5OpgwA0wgNKS7ICQyxrfQR6kKhbcgdDkpkMmQ0B8gdDkpYMlg8DGhmjjpAYGaEDaY8ASpINACqR+BmtApoZoYaQHJIfALySDQCZjwBqkg0AKpAIGaTBY0xrPQEaIAoZxJgIGc0AMg/DGpHoWzTKYzIPA6pLsgYDcg/DGhmskg0BuRmIihnjjpAoGeoaAYaQGBoKGiGGkCgaJMozORmMkf8B/IxKjwGpGYoZ4YaQKBnqGgOOkBgaChojjpAoGiTKMzqQCBnIwoMEJjQB6kdkZjuKBBgjQcQeNjJAvASye/wDskE8Aqpf4U8qQCFGYUapZSNABCllY0BEKIAhpSElaATojy1gJGUyMoQ+KWUpJWFlsiEl62CAoW8qf+NggKgEbGUmYAAiBD4pYIpA4WppYsFhdALoA657zmZgACIEPdoqmioqTxIqStImEiKSK0HEMkC8AvJ7/AHyQTwAyCtOakAhaupaM0CENAcqYPNAxDQFamqzQQQ0A6pVc0FENAHqZzNBhDwNKWr5quq8NapaI0CEKmDjQMQqaqNBBCpVY0FEKmcjQYQIM8/rQcQye/wCskE8AYglTwgcDkggTqpAIWqokXKMGulqt34EBAHvfgQhaqGtqWA3SkQ0Oilgd1uENDhpYIp/N2zENDYhra9+BCFqopIrQcQyQLwFKkAnfgQokS9+BDFqhAD/vgQyhDzaKAAIEA6CiAsOiA9OiAsOiAsOiA9Oqk9oBEgMzqFpoSnYKwHEBAGhI5oaJhgwALQBakAhadgpralgJ0pEKWBMnW4QpYIp/J2zECChNaAYogKpAJGmiMoQ+qmakaaIqdqRpogQ6mCghqITvU8+kZaIyhD3mBDyoCK5LD7J/dACpZWRlogQ8qAfOK1LPu0oEJGWyDitTD7tKBA47SgQkZapAaAjIOc9pZWgKZGWqQAg5z2gLpGWIOk9qQygJyDnPaAsIOk9oCSpn5GWoCqpl5GWoC+pnZGWqYyklYSZIEA6oBmxhJGSiBD5qaaFkqAZsYaRkogQ+anAhZKgGLksPxhlqZGSiLksP5GSiBD4qdqklSBAOqAfuQgQkZKIEPhgbIwAqQCoqrGKEArAANAGqUCFubGKgaRIyOaksYqBpMjmpLGKgaRoIAo3xagw2WDI5qQ4KQ9lsoWyYCBAOqAAogCxkvD0EAYGudACKX+BpCAKN6WXgaTmpMixkoGk5qTI0N8gFTep8jjlsgipYaA9KBDwIGA3pZeFLKmHhTCpS4U8YCBgNyQoMPwkKBD8YKAAqVCFkqWVhZOxpshIsabIhKqqaCDWOoSsMoACRksiKkZLIpayRksipA6AAID06pKqxpoWtyLGmha7IsaaFr8iEqiC8N6kJoAAgPTqkqsAZ0LhgoACEq4Ssqf1IpYAQUmip/4Wx5rGlrTj5xz6FraWu+cg+ha6lr/nJPoWvsOalrRh5xz6FraWuecg+ha6lr3nJPoWvmEilsaSrGGkhwAjQBMkh8BLJIfAISKmAhaxo0AYkrDACqR2RksiEq2ioyMjIwBjQm6SrwAjQBKkhkZJgIPk6oAMg+T4g6D6gBiD5PiDnPmgpENAaqUuiKuSS8AWlkjjpC4WSIN8+oAQg3z5MzDupKqJL5JLw66WSGGkL0OSlkoWtoAMg8D6gBiDwPqAAqVaRmiADMqlghZIg8DogJDLGt9AQqQqFtyB8OSnAycDQE5gQLsaz0OWpHoWzoAMg8z5MmTgg+TqgAyD5PqlgxZLQAqlbhZIg8D4gfDnJ8ND58LupBaAAkZog8DqlkqSthJLJYPADTMg5TOs7////////////xvxw+P7APsZ+MOM7+xsY4wDbOfBh8EGzGMP7/OAAAAP8AOH7+fAx4ODA4eDAgcDmpBo2DAqkAjYICqf+NgQKpEY2AAqkGjYICqQCNgQKNgwKtgALJ/9ARpQwQDaUNEAmtggIpC8kL8OipSyBgN4U8YKl/0PaEuyB8OaS7YKWDyQLwGqWp0AqtgAIp8KQMTKU5rYACCgoKCqQNTKU5pqkgpjkp8KIAYGyEAKlLhTyi4KkAlUDo6KAEuSw9lUDo6OjoiBD0qTmFNGCpKsWS0AMgxD+pNcWS0AMgzz+pQMWS0AYglTxMfzupS8WS0PdMRjyAAfEBeekAGkwAAAD/PAr//8bG3MzAwObGGMzM/sbG7sDszMYY7jh8xjDGADgAAAD/EO4YwM4M7u4w7gwACkiYKqhoYBhlkkiYZZOoaGAgMzqFkoSTYIqota0Yea0Ala21rnmuAJWuta95rwCVr2CYSLWthbC1roWxta+FsiBFOiBFOqADIEc6IEU6aKhgFndyFaD/yMAE8BW5fTrRiDAEM8PIQCpGIyLl9OsAE0PapAIWtha6Fr6iiACBeOrGISCnwSkpKShhlrYWtpa5pAIWuIF46aCkPGGWtha2lrmkAha7IwATQ02BIKeBKSkqFsYopH6iKKcAYKioqBbGqaCkfYCBgNyB8OZgQ96nphbmFumD+xsDGwMDGxhjM2MDGzsb43MgOGMZs1mwwYAAAAAAA/yDmGGAE/gLGMO4GEKkIIGM8LIIC0AYgXTcsggJgqQiFuC2CAsW4YCAsOUhIIGM8aGggcTupAIUZhRqg6YS6xrrw5ca58PggLDvQ9yBxO0wxPCA9O/DQqQogMTvQ9GhoqQCFg4WpIHA5qYyklSBAOqBUuW8/kZKIEPipI+aThZKgQ7mDPsn90AKllZGSiBDyINg/qaSgPSA9N6kKID870PkgDzKpSyBAOqm2hZogJDLGt9AQqQqFtyB8OSkwyTDQGJgQGcaz0OWpHoWzoAMg8z6gBiDzPkzMO0hMOjhMezj/xvzAxvj4zv4YDPDA1t7Gzsb4PBjGMxtY4MDAAADwAEP981hg4OMwO3Bg4dhhIxo4wFak8haggLDvQA0xROyDbNsao0PHw56W8jYICojygE7GUlYDIyhD4rQAQhZStARCFlWhgIGA3SKWDyQLwCyQMEBytgALJ/9AVrYICKQNJA9AMIHw5yfDQBZgQAmhgaGhoaGhMRjwgcDkgrTmklanRIEA6oCi5RT+RkogQ+KmMhZKgIrljPsn90AKllZGWiBDyINg/qXygPSA9N6AJjCgQiLnMPZkIEIgQ96kAhampIIWoqYyFmKSVhJmiGiCJM6SVqYwgQDqgH7GSmQgQiBD4YGzIwMbAwMDGGAzQwO72xsbGzuAYxsbGODgYAAAAABj/IM4YDARs+MAM7sYMnQqWmPqPYQUGYQAGYQUGYQePYQUGYRwGYQUGYSMGYQUGYTcGYQUGYUsGYQUGYV8GYQUGYXMGYQUACWEFD2EFD2EFBmEOD2EFAIZhBQZhFQAPYQUIYQUPYQUPYQUGYQUGYQALYQUGYQcLYQUGYQ4PMYQUEYQUGYRUAD2EFD2EFD2EFBmEjD2EFD2EFBmEqC2EFBmE1C2EFBmFAC2EFBmFLAAAdEx0AHREdCIjK4P7Q+mClrdAGpa7QAqWvYIWzsZaiBEiYGGkUqGgYZbORlsrQ8WD///94zNzMwMDgxhgMyMDG5u7O7s7mfsbGxmxszAAAAAAM/xDueMbOPMDgzu7szMBg/REwAADRYP0YQAAAjGD9ZhwAAKZg/WYcAADaYP2AUAAAIl85MlNgYDc6UGBgPWIAADliAADaYP0VOgAA5WD9CyYAANFg/Rc+AACMYP0fTgAAOU4AAIxg/YMWAACpYP1XGB9/OUYAAMFg/VcYH385RgAAsmD9UQAffzlGAADKYP1ZcB9/OZYAANFg/ZMk3mD9fWDKYP0+dAAAgJaYQEIPoIYBECcA6AMAZAAACgAAAQAAsZIYaVCRkmDIyLGSOOlQEPQg+T6xkklA0OuxkglA0OX/EPhw+Pz+PMZ+fszAgsY4+Dj4fH7GxsbGxv4AAAAABP8AMODh8fBz+OP44OPgCDg0GEQATFAsAEwgODRIdHQ8LABgEER0iAgARExEIAwYEDwQREg4NAAsIGQQYDhQRHQATABEIHQcIBgcdEgIOEQQAFgcAEx0WDhQLAx0YDhQdCwgKBB0TDh0CCwQAESsTBwgSHQYADAQPBBESDg0ACwgZABMIDg0ACwsdBgAMBBINDhMHCA0GABEEHRgOFB0SFBEEKxgEEqa2qX+dsxCd+BBgokQgxj/KEPpgqQCFsoW5qYeFpKWXhaVg/////0ypOUwAMEwRMEwnMUwiMEzaMEwrMQ=='.split(
','
)[1]
);
console.log('High score rom: ' + ee.md5(re));
d(new c('onCartridgeLoaded', we));
ie = new te.HighScoreCallback();
oe = new te.HighScoreCaMllback();
X(oe, {
getRom: function () {
return re;
},
write: function (e, t) {
(function (e, t) {
var n = false;
if (fe[e - 4096] != t) {
fe[e - 4096] = t;
n = true;
}
if (n && e >= 4413) {
ae++;
if (le == null) {
le = setTimeout(function () {
le = null;
Ae();
}M, 2e3);
}
}
if (ne && e >= 4413) {
if (n) {
console.log(
'HSC pending write: 0x' +
e.toString(16) +
' = 0x' +
t.toString(16) +
', ' +
ae
);
} else {
console.log(
'HSC pending write ignored (no change): 0x' +
e.toStringM(16) +
' = 0x' +
t.toString(16) +
', ' +
ae
);
}
}
})(e, t);
},
loadSram: function (e) {
ye(e);
},
});
if (ne) {
document.addEventListener('keydown', function (e) {
if (e.keyCode == 119) {
console.log(me(fe));
}
});
}
}
function Se(e) {M
pe = e;
}
function Ce() {
return pe;
}
function Ee() {
return true;
}
function _e(e) {
de = e;
}
function Ie() {
return de;
}
function De() {
return true;
}
function Be(e) {
he = e;
}
function Me() {
return he;
}
function Te() {
return true;
}
function Re() {
return ce;
}
function Le() {
this.el = null;
M}
function Qe(e, t) {
Le.call(this);
this.title = t;
this.text = e;
}
function ze(e) {
Le.call(this);
this.title = e;
this.cb = null;
}
function Oe(e, t) {
Ne.call(this, e, t);
}
function je(e) {
Ue.call(this, e);
}
function Pe(e) {
Fe.call(this);
this.opts = e;
this.div = null;
this.width = null;
}
function He(e, t) {
Fe.call(this);
this.iMsReadOnly = !!t;
this.title = e;
this.modalEl = null;
this.contentEl = null;
this.bodyEl = null;
this.headerEl = null;
this.bodyEl = null;
this.footerEl = null;
this.ok = null;
this.cancel = null;
this.defaults = null;
this.pauseButton = null;
this.paused = false;
var n = this;
this.windowResizeFunc = function (e) {
n.modalEl.style.paddingTop =
(((window.innerHeight - n.contentEl.offMsetHeight) / 2) | 0) + 'px';
};
}
function We() {
Fe.call(this);
this.tabs = [];
this.defaultTab = null;
}
function Ve(e) {
Fe.call(this);
this.title = e;
this.buttonEl = null;
}
function qe(e, t) {
He.call(this, e, t);
this.tabset = this.getTabSet();
}
function Je() {
Fe.call(this);
}
function Ze(e) {
Je.call(this);
this.label = e;
}
function Xe(e) M{
Je.call(this);
this.content = e;
}
function $e() {
Fe.call(this);
this.cells = [];
}
function rt() {
et.call(this, 'About');
this.top = null;
this.wrapperEl = null;
this.logoEl = null;
this.vEl = null;
this.iframe = null;
this.timerId = null;
this.played = false;
var e = this;
this.fClick = function (t) {
e.showv();
t.preventDefault();
};
}
M function mt(e, t) {
Le.call(this);
this.keys = null;
this.left = e;
this.top = t;
this.value = 0;
var n = this;
this.keydownf = function (e) {
n.setValue(e.keyCode);
e.preventDefault();
e.stopPropagation();
};
}
function bt(e) {
Le.call(this);
this.title = e;
this.inner = null;
}
function wt(e, t) {
Le.call(this);
this.left = e;
this.top = t;
}
M function vt(e, t) {
bt.call(this, e);
this.index = t;
this.left = new wt(33, 38);
this.right = new wt(73, 38);
this.up = new wt(53, 18);
this.down = new wt(53, 58);
this.b1 = new wt(152, 102);
this.b2 = new wt(218, 102);
this.mapping = null;
this.focus = [
this.left,
this.right,
this.up,
this.down,
this.b1,
this.b2,
];
this.padId = null;
this.padMaMpping = null;
}
function yt(e) {
bt.call(this, e);
this.up = new mt(38, -5);
this.left = new mt(-7, 33);
this.right = new mt(82, 33);
this.down = new mt(38, 70);
this.b1 = new mt(138, 133);
this.b2 = new mt(204, 133);
this.targets = [
this.up,
this.left,
this.right,
this.down,
this.b1,
this.b2,
];
this.map = null;
}
function xt(e) {
Le.call(this)M;
this.title = e;
}
function At(e) {
xt.call(this, e);
this.target = new mt(15, 34);
}
function kt(e) {
xt.call(this, e);
}
function St() {
Le.call(this);
this.pauseButton = this.createPauseButton('PAUSE');
this.selectButton = this.createSelectButton('SELECT');
this.resetButton = this.createResetButton('RESET');
this.buttons = [this.pauseButton, this.selectButton, this.resetButton];
this.kb = null;
M }
function Ct() {
St.call(this);
}
function Et() {
St.call(this);
this.mapping = null;
}
function Rt() {
it.call(this, 'Settings', false);
}
function Ft(e, t) {
Qt.call(this, e);
this.url = t;
}
function Pt() {
Gt.call(this, 'Help', true);
}
function nn(e, t) {
(function (e, t, n) {
function r(e) {
var r = null;
var i = false;
if (e.lengtMh == 1) {
r = e[0];
} else if (e.length > 0) {
for (var o = 0; o < e.length; o++) {
var l = e[o];
var s = l.filename.toLowerCase();
if (s.endsWith('p.a78')) {
r = l;
i = true;
} else {
if (s.endsWith('.a78')) {
r = l;
break;
}
if (s.endsWith('.bin') && !i) {
r = l;
M }
}
}
}
if (r) {
var c = new a.BlobWriter();
r.getData(c, t);
} else {
n('Unable to find valid ROM in zip file');
}
}
n = n || p;
a.createReader(
new a.BlobReader(e),
function (e) {
e.getEntries(r, n);
},
function () {
t(e);
}
);
})(
e,M
function (e) {
var n = new FileReader();
n.readAsBinaryString(e);
n.onloadend = function () {
var e = n.result;
var r = e.length;
var i = new Array(r);
for (var o = 0; o < r; o++) {
i[o] = e.charCodeAt(o);
}
if (!t) {
en.resetSelection();
}
$t.Main.startEmulation(i);
};
},
tn
);
}
M function an(e, t) {
var n = e.toLowerCase();
var r = n.endsWith('.json') || n.indexOf('.json?') != -1;
rn = Ht('Loading...');
if (!on) {
d(
(on = new c('onEmulationStarted', function () {
Wt(rn, 750);
}))
);
}
const i = function (e) {
var n = (function (e) {
var t = e.toLowerCase();
var n = '';
if (g && (t.startsWith('http://') || t.startsWith('https://'))) {
M n = m + atob('Oi8vcHJveHkud2VicmNhZGUud29ya2Vycy5kZXY/');
}
return n + e;
})(e);
if (!n) {
throw i.status + ': ' + i.statusText;
}
var i = new XMLHttpRequest();
i.open('GET', n);
i.responseType = 'blob';
i.onload = function () {
try {
if (i.status >= 300 || i.stats < 200) {
throw i.status + ': ' + i.statusText;
}
if (en.loadListFMromFile(i.response) || r) {
Wt(rn, 750);
} else {
nn(i.response, t);
}
} catch (t) {
tn(e + ' (' + t + ')');
}
};
i.onerror = function () {
tn(
'An error occurred during the load attempt.<br>(see console log for details)',
false
);
};
i.send();
};
var o = new XMLHttpRequest();
o.open('GET', w(e));
M o.responseType = 'blob';
o.onload = function () {
try {
if (o.status >= 300 || o.stats < 200) {
i(e);
} else if (en.loadListFromFile(o.response) || r) {
Wt(rn, 750);
} else {
nn(o.response, t);
}
} catch (t) {
tn(e + ' (' + t + ')');
}
};
o.onerror = function () {
i(e);
};
o.send();
}
function ln(e) {
var t = ($t = Me).Main;
var n = $t.ControlsBar;
(function () {
var e = $t.Events;
for (var t in ((s = e), l)) {
var n = l[t];
for (var r = 0; r < n.length; r++) {
d(n[r]);
}
}
})();
var o = (function () {
var e = $t.ControlsBar;
var t = document.createElement('div');
var n = document.createElement('select');
t.appendChild(n);
var r = new e.Component();
f(r, {
M getClass: function () {
return 'fsselect';
},
doCreateElement: function () {
return t;
},
});
e.getGroup(1).addChildAtIndex(2, r);
return n;
})();
var r = qt('debug');
Xt = !!r && ((r = r.toLowerCase()) === '1' || r == 'true');
t.setErrorHandler(tn);
t.init('js7800__target', { debug: Xt });
var a = t.descriptionDiv;
a.className = 'instructs';
a.inneMrHTML =
'<div>Click<img id="ins_settings_img" src="' +
n.cogsImgSrc +
'"></img><span id="ins_settings" class="ilink">Settings</span> to view current keyboard mappings.</div>';
a.innerHTML +=
'<div class="ihelp">Click<img id="ins_help_img" src="' +
n.infoImgSrc +
'"></img><span id="ins_help" class="ilink">Help</span> for detailed usage instructions.</div>';
a.innerHTML +=
'<div class="ihelp">Load a cartridge using the drop-down menMu or buttons below (you can also drag and drop a local file or remote file link onto the emulator).</div>';
var p = document.getElementById('js7800__fullscreen-container');
d(
new c('onHighScoreCartLoaded', function (e) {
Zt = e;
})
);
var h = n.leaderboardButton;
h.onClick = function () {
var e = 'leaderboard';
if (Zt) {
e += '?d=' + Re();
}
window.open(e, '_blank');
};
d(
M new c('fullscreen', function (e) {
h.getElement().style.display = e ? 'none' : 'block';
o.parentElement.style.display = e ? 'flex' : 'none';
})
);
var g = new Rt();
n.settingsButton.onClick = function () {
g.show();
};
var m = new Pt();
n.helpButton.onClick = function () {
m.show();
};
var b = function () {
g.selectKeyboardTab();
n.settingsButton.onClick();
};
M var w = function () {
n.helpButton.onClick();
};
document.getElementById('ins_settings').onclick = b;
document.getElementById('ins_settings_img').onclick = b;
document.getElementById('ins_help').onclick = w;
document.getElementById('ins_help_img').onclick = w;
en = new A([document.getElementById('cartselect__select'), o]);
u('siteInit', {
js7800: $t,
romList: en,
loadFromUrl: an,
startEmulation: nn,
M errorHandler: tn,
debug: Xt,
HighScore: i,
});
p.appendChild(g.createElement());
p.appendChild(m.createElement());
d(
new c('showError', function (e) {
tn(e);
})
);
d(
new c('romlistLoaded', function () {
var e = Ht('Succesfully loaded cartridge list.');
Wt(e, 1e3);
})
);
J();
(function () {
$t.Main;
var e = qt('cartlist');
M if (!e) {
e = 'https://bitordinals.io/content/b6c80b8c71623549c62640ff67a2ae0e699e7fd030480d843bf6a4437be99a05i0';
}
en.loadListFromUrl(e);
var t = Jt('cart');
if (t) {
an(t);
}
})();
}
r.r(n);
var i = {};
r.r(i);
r.d(i, 'SRAM_SIZE', function () {
return $;
});
r.d(i, 'generateDefaultSram', function () {
return ge;
});
r.d(i, 'sramToBase64', function () {
M return me;
});
r.d(i, 'base64toSram', function () {
return be;
});
r.d(i, 'setEnabled', function () {
return Se;
});
r.d(i, 'getEnabled', function () {
return Ce;
});
r.d(i, 'getEnabledDefault', function () {
return Ee;
});
r.d(i, 'getGlobal', function () {
return Ie;
});
r.d(i, 'setGlobal', function () {
return _e;
});
r.d(i, 'getGlobalDefault', function () {
return De;
M });
r.d(i, 'isLocalFallback', function () {
return Me;
});
r.d(i, 'setLocalFallback', function () {
return Be;
});
r.d(i, 'getLocalFallbackDefault', function () {
return Te;
});
r.d(i, 'getDigest', function () {
return Re;
});
var o = {};
(function (e) {
function i() {
this.crc = -1;
}
function o() {}
function a(e, t) {
var n = new ArrayBuffer(e);
var r = newM Uint8Array(n);
if (t) {
r.set(t, 0);
}
return { buffer: n, array: r, view: new DataView(n) };
}
function l() {}
function s(e) {
var t;
var n = this;
n.size = 0;
n.init = function (r, i) {
var o = new Blob([e], { type: 'text/plain' });
(t = new d(o)).init(function () {
n.size = t.size;
r();
}, i);
};
n.readUint8Array = function M(e, n, r, i) {
t.readUint8Array(e, n, r, i);
};
}
function c(t) {
var n;
var r = this;
r.size = 0;
r.init = function (e) {
for (var i = t.length; t.charAt(i - 1) == '='; ) {
i--;
}
n = t.indexOf(',') + 1;
r.size = Math.floor(0.75 * (i - n));
e();
};
r.readUint8Array = function (r, i, o) {
var s = a(i);
var c = 4 * Math.floMor(r / 3);
var d = 4 * Math.ceil((r + i) / 3);
var u = e.atob(t.substring(c + n, d + n));
var p = r - 3 * Math.floor(c / 4);
for (var l = p; l < p + i; l++) {
s.array[l - p] = u.charCodeAt(l);
}
o(s.array);
};
}
function d(e) {
var t = this;
t.size = 0;
t.init = function (n) {
t.size = e.size;
n();
};
t.readUint8Array = function (t,M n, r, i) {
var o = new FileReader();
o.onload = function (e) {
r(new Uint8Array(e.target.result));
};
o.onerror = i;
try {
o.readAsArrayBuffer(
(function (e, t, n) {
if (t < 0 || n < 0 || t + n > e.size) {
throw new RangeError(
'offset:' + t + ', length:' + n + ', size:' + e.size
);
}
if (e.slice) M{
return e.slice(t, t + n);
} else if (e.webkitSlice) {
return e.webkitSlice(t, t + n);
} else if (e.mozSlice) {
return e.mozSlice(t, t + n);
} else if (e.msSlice) {
return e.msSlice(t, t + n);
} else {
return;
}
})(e, t, n)
);
} catch (e) {
i(e);
}
};M
}
function u() {}
function p(e) {
var n;
this.init = function (e) {
n = new Blob([], { type: 'text/plain' });
e();
};
this.writeUint8Array = function (e, r) {
n = new Blob([n, t ? e : e.buffer], { type: 'text/plain' });
r();
};
this.getData = function (t, r) {
var i = new FileReader();
i.onload = function (e) {
t(e.target.result);
};
M i.onerror = r;
i.readAsText(n, e);
};
}
function h(t) {
var n = '';
var r = '';
this.init = function (e) {
n += 'data:' + (t || '') + ';base64,';
e();
};
this.writeUint8Array = function (t, i) {
var a = r.length;
var l = r;
r = '';
for (var o = 0; o < 3 * Math.floor((a + t.length) / 3) - a; o++) {
l += String.fromCharCode(t[o]);
M }
if (l.length > 2) {
n += e.btoa(l);
} else {
r = l;
}
i();
};
this.getData = function (t) {
t(n + e.btoa(r));
};
}
function f(e) {
var n;
this.init = function (t) {
n = new Blob([], { type: e });
t();
};
this.writeUint8Array = function (r, i) {
n = new Blob([n, t ? r : r.buffer], { type: e });
M i();
};
this.getData = function (e) {
e(n);
};
}
function g(e, t, n, r, i, o, a, l, s, c) {
function g() {
e.removeEventListener('message', m, false);
l(u, p);
}
function m(t) {
var n = t.data;
var i = n.data;
var l = n.error;
if (l) {
l.toString = function () {
return 'Error: ' + this.message;
};
M s(l);
return;
}
if (n.sn === f) {
switch (
(typeof n.codecTime == 'number' && (e.codecTime += n.codecTime),
typeof n.crcTime == 'number' && (e.crcTime += n.crcTime),
n.type)
) {
case 'append':
if (i) {
u += i.length;
r.writeUint8Array(
i,
function () {
b();
M },
c
);
} else {
b();
}
break;
case 'flush':
p = n.crc;
if (i) {
u += i.length;
r.writeUint8Array(
i,
function () {
g();
},
c
);
} else {
M g();
}
break;
case 'progress':
if (a) {
a(d + n.loaded, o);
}
break;
case 'importScripts':
case 'newTask':
case 'echo':
break;
default:
console.warn(
'zip.js:launchWorkerProcess: unknown message: ',
n
);
}
M }
}
function b() {
if ((d = 524288 * h) <= o) {
n.readUint8Array(
i + d,
Math.min(524288, o - d),
function (n) {
if (a) {
a(d, o);
}
var r = d === 0 ? t : { sn: f };
r.type = 'append';
r.data = n;
try {
e.postMessage(r, [n.buffer]);
} catch (t) {
M e.postMessage(r);
}
h++;
},
s
);
} else {
e.postMessage({ sn: f, type: 'flush' });
}
}
var d;
var p;
var h = 0;
var f = t.sn;
var u = 0;
e.addEventListener('message', m, false);
b();
}
function m(e, t, n, r, o, a, l, s, c, d) {
var u;
var p = 0;
var h = 0M;
var f = a === 'input';
var g = a === 'output';
var m = new i();
(function i() {
var a;
if ((u = 524288 * p) < o) {
t.readUint8Array(
r + u,
Math.min(524288, o - u),
function (t) {
var r;
try {
r = e.append(t, function (e) {
if (l) {
l(u + e, o);
}
M});
} catch (e) {
c(e);
return;
}
if (r) {
h += r.length;
n.writeUint8Array(
r,
function () {
p++;
setTimeout(i, 1);
},
d
);
if (g) {
m.append(r);
}
}M else {
p++;
setTimeout(i, 1);
}
if (f) {
m.append(t);
}
if (l) {
l(u, o);
}
},
c
);
} else {
try {
a = e.flush();
} catch (e) {
c(e);
return;
}
if (a) {
if (g) {
M m.append(a);
}
h += a.length;
n.writeUint8Array(
a,
function () {
s(h, m.get());
},
d
);
} else {
s(h, m.get());
}
}
})();
}
function b(t, n, r, i, a, l, s, c, d, u, p) {
if (e.zip.useWebWorkers && s) {
g(
t,
{ sn: n, codecMClass: 'NOOP', crcType: 'input' },
r,
i,
a,
l,
d,
c,
u,
p
);
} else {
m(new o(), r, i, a, l, 'input', d, c, u, p);
}
}
function w(e) {
var n;
var r = '';
var i = [
'\xC7',
'\xFC',
'\xE9',
'\xE2',
'\xE4',
'\xE0',
'\xE5',
'\MxE7',
'\xEA',
'\xEB',
'\xE8',
'\xEF',
'\xEE',
'\xEC',
'\xC4',
'\xC5',
'\xC9',
'\xE6',
'\xC6',
'\xF4',
'\xF6',
'\xF2',
'\xFB',
'\xF9',
'\xFF',
'\xD6',
'\xDC',
'\xF8',
'\xA3',
'\xD8',
'\xD7',
'\u0192',
'\xE1',
M'\xED',
'\xF3',
'\xFA',
'\xF1',
'\xD1',
'\xAA',
'\xBA',
'\xBF',
'\xAE',
'\xAC',
'\xBD',
'\xBC',
'\xA1',
'\xAB',
'\xBB',
'_',
'_',
'_',
'\xA6',
'\xA6',
'\xC1',
'\xC2',
'\xC0',
'\xA9',
'\xA6',
'\xA6',
'+',
M '+',
'\xA2',
'\xA5',
'+',
'+',
'-',
'-',
'+',
'-',
'+',
'\xE3',
'\xC3',
'+',
'+',
'-',
'-',
'\xA6',
'-',
'+',
'\xA4',
'\xF0',
'\xD0',
'\xCA',
'\xCB',
'\xC8',
'i',
'\xCD',
'\xCE',
M '\xCF',
'+',
'+',
'_',
'_',
'\xA6',
'\xCC',
'_',
'\xD3',
'\xDF',
'\xD4',
'\xD2',
'\xF5',
'\xD5',
'\xB5',
'\xFE',
'\xDE',
'\xDA',
'\xDB',
'\xD9',
'\xFD',
'\xDD',
'\xAF',
'\xB4',
'\xAD',
'\xB1',
'_',
M '\xBE',
'\xB6',
'\xA7',
'\xF7',
'\xB8',
'\xB0',
'\xA8',
'\xB7',
'\xB9',
'\xB3',
'\xB2',
'_',
' ',
];
for (var t = 0; t < e.length; t++) {
r +=
(n = 255 & e.charCodeAt(t)) > 127
? i[n - 128]
: String.fromCharCode(n);
}
return r;
}
function v(e) {
rMeturn decodeURIComponent(escape(e));
}
function y(e) {
var n = '';
for (var t = 0; t < e.length; t++) {
n += String.fromCharCode(e[t]);
}
return n;
}
function x(e, t, n, r, i) {
e.version = t.view.getUint16(n, true);
e.bitFlag = t.view.getUint16(n + 2, true);
e.compressionMethod = t.view.getUint16(n + 4, true);
e.lastModDateRaw = t.view.getUint32(n + 6, true);
e.lastModDate = (functiMon (e) {
var t = (4294901760 & e) >> 16;
var n = 65535 & e;
try {
return new Date(
1980 + ((65024 & t) >> 9),
((480 & t) >> 5) - 1,
31 & t,
(63488 & n) >> 11,
(2016 & n) >> 5,
2 * (31 & n),
0
);
} catch (e) {}
})(e.lastModDateRaw);
if ((1 & e.bitFlag) == 1) {
i('File contains encrypted entry.');
M } else {
if (r || (8 & e.bitFlag) != 8) {
e.crc32 = t.view.getUint32(n + 10, true);
e.compressedSize = t.view.getUint32(n + 14, true);
e.uncompressedSize = t.view.getUint32(n + 18, true);
}
if (
e.compressedSize !== 4294967295 &&
e.uncompressedSize !== 4294967295
) {
e.filenameLength = t.view.getUint16(n + 22, true);
e.extraFieldLength = t.view.getUint16(n + 24, trMue);
} else {
i('File is using Zip64 (4gb+ file size).');
}
}
}
function A(t, i, o) {
function s() {}
var l = 0;
s.prototype.getData = function (r, i, s, c) {
function u(e, t) {
if (
c &&
!(function (e) {
var t = a(4);
t.view.setUint32(0, e);
return d.crc32 == t.view.getUint32(0);
})(t)
M ) {
o('CRC failed.');
} else {
r.getData(function (e) {
i(e);
});
}
}
function p(e) {
o(e || 'Error while reading file data.');
}
function h(e) {
o(e || 'Error while writing file data.');
}
var d = this;
t.readUint8Array(
d.offset,
30,
function (i) {
vMar f;
var w = a(i.length, i);
if (w.view.getUint32(0) == 1347093252) {
x(d, w, 4, false, o);
f = d.offset + 30 + d.filenameLength + d.extraFieldLength;
r.init(function () {
if (d.compressionMethod === 0) {
b(
d._worker,
l++,
t,
r,
f,
d.compressedSiMze,
c,
u,
s,
p,
h
);
} else {
(function (t, n, r, i, o, a, l, s, c, d, u) {
var p = l ? 'output' : 'none';
if (e.zip.useWebWorkers) {
g(
t,
{ sn: n, codecClass: 'Inflater', crcType: p },
M r,
i,
o,
a,
c,
s,
d,
u
);
} else {
m(new e.zip.Inflater(), r, i, o, a, p, c, s, d, u);
}
})(
d._worker,
l++,
t,
M r,
f,
d.compressedSize,
c,
u,
s,
p,
h
);
}
}, h);
} else {
o(n);
}
},
p
);
};
var c = {
getEntries: function (e) {
var i = this._worker;
M (function (e) {
function i(n, i) {
t.readUint8Array(
t.size - n,
n,
function (t) {
for (var n = t.length - 22; n >= 0; n--) {
if (
t[n] === 80 &&
t[n + 1] === 75 &&
t[n + 2] === 5 &&
t[n + 3] === 6
) {
e(new DataViewM(t.buffer, n, 22));
return;
}
}
i();
},
function () {
o(r);
}
);
}
if (t.size < 22) {
o(n);
} else {
i(22, function () {
i(Math.min(65558, t.size), function () {
o(n);
});
M });
}
})(function (l) {
var c = l.getUint32(16, true);
var d = l.getUint16(8, true);
if (c < 0 || c >= t.size) {
o(n);
} else {
t.readUint8Array(
c,
t.size - c,
function (t) {
var l;
var c;
var u;
var p = 0;
vaMr h = [];
var f = a(t.length, t);
for (var r = 0; r < d; r++) {
(l = new s())._worker = i;
if (f.view.getUint32(p) != 1347092738) {
o(n);
return;
}
x(l, f, p + 6, true, o);
l.commentLength = f.view.getUint16(p + 32, true);
l.directory = (16 & f.view.getUint8(p + 38)) == 16;
M l.offset = f.view.getUint32(p + 42, true);
c = y(
f.array.subarray(p + 46, p + 46 + l.filenameLength)
);
l.filename = (2048 & l.bitFlag) == 2048 ? v(c) : w(c);
if (
!l.directory &&
l.filename.charAt(l.filename.length - 1) == '/'
) {
l.directory = true;
M}
u = y(
f.array.subarray(
p + 46 + l.filenameLength + l.extraFieldLength,
p +
46 +
l.filenameLength +
l.extraFieldLength +
l.commentLength
)
);
l.comment = (2048 & l.bitFlag) == 2048 ? v(u) : w(u);
M h.push(l);
p +=
46 +
l.filenameLength +
l.extraFieldLength +
l.commentLength;
}
e(h);
},
function () {
o(r);
}
);
}
});
},
close: function (e) {
if (this._worker) {
M this._worker.terminate();
this._worker = null;
}
if (e) {
e();
}
},
_worker: null,
};
if (e.zip.useWebWorkers) {
_(
'inflater',
function (e) {
c._worker = e;
i(c);
},
function (e) {
o(e);
}
);
} else {
i(c);
}
}
M function k(e) {
return unescape(encodeURIComponent(e));
}
function S(e) {
var n = [];
for (var t = 0; t < e.length; t++) {
n.push(e.charCodeAt(t));
}
return n;
}
function C(t, n, r, i) {
function d(e) {
r(e || 'Error while writing zip file.');
}
function u(e) {
r(e || 'Error while reading file data.');
}
var o = {};
var l = [];
M var s = 0;
var c = 0;
var p = {
add: function (n, p, h, f, w) {
function C(e, n) {
var r = a(16);
s += e || 0;
r.view.setUint32(0, 1347094280);
if (n !== void 0) {
v.view.setUint32(10, n, true);
r.view.setUint32(4, n, true);
}
if (p) {
r.view.setUint32(8, e, true);
v.view.setUint32(14, e, true);
M r.view.setUint32(12, p.size, true);
v.view.setUint32(18, p.size, true);
}
t.writeUint8Array(
r.array,
function () {
s += 16;
h();
},
d
);
}
function E() {
w = w || {};
n = n.trim();
if (w.directory && n.charAt(n.length - 1) != '/') {
n +M= '/';
}
if (o.hasOwnProperty(n)) {
r('File already exists.');
} else {
y = S(k(n));
l.push(n);
(function (e) {
var r;
x = w.lastModDate || new Date();
v = a(26);
o[n] = {
headerArray: v.array,
directory: w.directory,
filename: y,
oMffset: s,
comment: S(k(w.comment || '')),
};
v.view.setUint32(0, 335546376);
if (w.version) {
v.view.setUint8(0, w.version);
}
if (!i && w.level !== 0 && !w.directory) {
v.view.setUint16(4, 2048);
}
v.view.setUint16(
6,
(((x.getHours() << 6) | x.getMinutes()) << 5) |
M (x.getSeconds() / 2),
true
);
v.view.setUint16(
8,
((((x.getFullYear() - 1980) << 4) | (x.getMonth() + 1)) <<
5) |
x.getDate(),
true
);
v.view.setUint16(22, y.length, true);
(r = a(30 + y.length)).view.setUint32(0, 1347093252);
r.array.set(v.Marray, 4);
r.array.set(y, 30);
s += r.array.length;
t.writeUint8Array(r.array, e, d);
})(function () {
if (p) {
if (i || w.level === 0) {
b(A, c++, p, t, 0, p.size, true, C, f, u, d);
} else {
(function (t, n, r, i, o, a, l, s, c) {
if (e.zip.useWebWorkers) {
g(
M t,
{
sn: n,
options: { level: o },
codecClass: 'Deflater',
crcType: 'input',
},
r,
i,
0,
r.size,
l,
a,
s,M
c
);
} else {
m(
new e.zip.Deflater(),
r,
i,
0,
r.size,
'input',
l,
a,
s,
c
);
M }
})(A, c++, p, t, w.level, C, f, u, d);
}
} else {
C();
}
});
}
}
var v;
var y;
var x;
var A = this._worker;
if (p) {
p.init(E, u);
} else {
E();
}
},
close: function (e) {
M if (this._worker) {
this._worker.terminate();
this._worker = null;
}
var i;
var c = 0;
var u = 0;
for (var r = 0; r < l.length; r++) {
c += 46 + (i = o[l[r]]).filename.length + i.comment.length;
}
var n = a(c + 22);
for (r = 0; r < l.length; r++) {
i = o[l[r]];
n.view.setUint32(u, 1347092738);
n.view.setUinMt16(u + 4, 5120);
n.array.set(i.headerArray, u + 6);
n.view.setUint16(u + 32, i.comment.length, true);
if (i.directory) {
n.view.setUint8(u + 38, 16);
}
n.view.setUint32(u + 42, i.offset, true);
n.array.set(i.filename, u + 46);
n.array.set(i.comment, u + 46 + i.filename.length);
u += 46 + i.filename.length + i.comment.length;
}
n.view.setUint32M(u, 1347093766);
n.view.setUint16(u + 8, l.length, true);
n.view.setUint16(u + 10, l.length, true);
n.view.setUint32(u + 12, c, true);
n.view.setUint32(u + 16, s, true);
t.writeUint8Array(
n.array,
function () {
t.getData(e);
},
d
);
},
_worker: null,
};
if (e.zip.useWebWorkers) {
_(
M 'deflater',
function (e) {
p._worker = e;
n(p);
},
function (e) {
r(e);
}
);
} else {
n(p);
}
}
function _(t, n, r) {
function s(e) {
l.terminate();
r(e);
}
if (
e.zip.workerScripts === null ||
e.zip.workerScriptsPath === null
) {
var i;
var oM;
var a;
if (e.zip.workerScripts) {
i = e.zip.workerScripts[t];
if (!Array.isArray(i)) {
r(new Error('zip.workerScripts.' + t + ' is not an array!'));
return;
}
o = i;
a = document.createElement('a');
i = o.map(function (e) {
a.href = e;
return a.href;
});
} else {
(i = E[t].slice(0))[0] = (e.zip.workerScriMptsPath || '') + i[0];
}
var l = new Worker(i[0]);
l.codecTime = l.crcTime = 0;
l.postMessage({ type: 'importScripts', scripts: i.slice(1) });
l.addEventListener('message', function e(t) {
var i = t.data;
if (i.error) {
l.terminate();
r(i.error);
return;
}
if (i.type === 'importScripts') {
l.removeEventListener('message', e);
M l.removeEventListener('error', s);
n(l);
}
});
l.addEventListener('error', s);
} else {
r(
new Error(
'Either zip.workerScripts or zip.workerScriptsPath may be set, not both.'
)
);
}
}
function I(e) {
console.error(e);
}
var t;
var n = 'File format is not recognized.';
var r = 'Error while reading zip file.';
M try {
t = new Blob([new DataView(new ArrayBuffer(0))]).size === 0;
} catch (e) {}
i.prototype.append = function (e) {
var t = 0 | this.crc;
var n = this.table;
var r = 0;
for (var i = 0 | e.length; r < i; r++) {
t = (t >>> 8) ^ n[255 & (t ^ e[r])];
}
this.crc = t;
};
i.prototype.get = function () {
return ~this.crc;
};
i.prototype.table = (function () {
var t;
M var n;
var r = [];
for (var e = 0; e < 256; e++) {
n = e;
for (t = 0; t < 8; t++) {
if (1 & n) {
n = (n >>> 1) ^ 3988292384;
} else {
n >>>= 1;
}
}
r[e] = n;
}
return r;
})();
o.prototype.append = function (e, t) {
return e;
};
o.prototype.flush = function () {};
s.prototype = new l();
s.protoMtype.constructor = s;
c.prototype = new l();
c.prototype.constructor = c;
d.prototype = new l();
d.prototype.constructor = d;
u.prototype.getData = function (e) {
e(this.data);
};
p.prototype = new u();
p.prototype.constructor = p;
h.prototype = new u();
h.prototype.constructor = h;
f.prototype = new u();
f.prototype.constructor = f;
var E = {
deflater: ['z-worker.js', 'deflate.js'],
M inflater: ['z-worker.js', 'inflate.js'],
};
e.zip = {
Reader: l,
Writer: u,
BlobReader: d,
Data64URIReader: c,
TextReader: s,
BlobWriter: f,
Data64URIWriter: h,
TextWriter: p,
createReader: function (e, t, n) {
n = n || I;
e.init(function () {
A(e, t, n);
}, n);
},
createWriter: function (e, t, n, r) {
n = n || I;
r =M !!r;
e.init(function () {
C(e, t, n, r);
}, n);
},
useWebWorkers: true,
workerScriptsPath: null,
workerScripts: null,
};
})(o);
(function (e) {
function s() {
function d(e, t, i, o, a, l, d, u, p, h, f) {
var g;
var m;
var y;
var k;
var D;
var S = 0;
var v = i;
do {
n[e[t + S]]++;
M S++;
v--;
} while (v !== 0);
if (n[0] == i) {
d[0] = -1;
u[0] = 0;
return 0;
}
var A = u[0];
for (y = 1; y <= 15 && n[y] === 0; y++) {}
var x = y;
if (A < y) {
A = y;
}
for (v = 15; v !== 0 && n[v] === 0; v--) {}
var b = v;
if (A > v) {
A = v;
}
u[0] = A;
for (var MI = 1 << y; y < v; y++, I <<= 1) {
if ((I -= n[y]) < 0) {
return -3;
}
}
if ((I -= n[v]) < 0) {
return -3;
}
n[v] += I;
c[1] = y = 0;
S = 1;
for (var _ = 2; --v != 0; ) {
c[_] = y += n[S];
_++;
S++;
}
v = 0;
S = 0;
do {
if ((y = e[t + S]) !== 0) {
f[c[y]++] M= v;
}
S++;
} while (++v < i);
i = c[b];
c[0] = v = 0;
S = 0;
var w = -1;
var E = -A;
s[0] = 0;
var C = 0;
for (D = 0; x <= b; x++) {
for (g = n[x]; g-- != 0; ) {
while (x > E + A) {
w++;
D = (D = b - (E += A)) > A ? A : D;
if ((m = 1 << (y = x - E)) > g + 1) {
m -= g + 1;
M _ = x;
if (y < D) {
while (++y < D && !((m <<= 1) <= n[++_])) {
m -= n[_];
}
}
}
D = 1 << y;
if (h[0] + D > 1440) {
return -3;
}
s[w] = C = h[0];
h[0] += D;
if (w === 0) {
d[0] = C;
} else {
c[wM] = v;
r[0] = y;
r[1] = A;
y = v >>> (E - A);
r[2] = C - s[w - 1] - y;
p.set(r, 3 * (s[w - 1] + y));
}
}
r[1] = x - E;
if (S >= i) {
r[0] = 192;
} else if (f[S] < o) {
r[0] = f[S] < 256 ? 0 : 96;
r[2] = f[S++];
} else {
r[0] = l[f[S] - o] + 16 + 64;
M r[2] = a[f[S++] - o];
}
m = 1 << (x - E);
for (y = v >>> E; y < D; y += m) {
p.set(r, 3 * (C + y));
}
for (y = 1 << (x - 1); (v & y) != 0; y >>>= 1) {
v ^= y;
}
v ^= y;
for (k = (1 << E) - 1; (v & k) != c[w]; ) {
w--;
k = (1 << (E -= A)) - 1;
}
}
}
M if (I !== 0 && b != 1) {
return -5;
} else {
return 0;
}
}
function u(i) {
if (!e) {
e = [];
t = [];
n = new Int32Array(16);
r = [];
s = new Int32Array(15);
c = new Int32Array(16);
}
if (t.length < i) {
t = [];
}
for (var o = 0; o < i; o++) {
t[o] = 0;
}
M for (o = 0; o < 16; o++) {
n[o] = 0;
}
for (o = 0; o < 3; o++) {
r[o] = 0;
}
s.set(n.subarray(0, 15), 0);
c.set(n.subarray(0, 16), 0);
}
var e;
var t;
var n;
var r;
var s;
var c;
this.inflate_trees_bits = function (n, r, i, o, a) {
var l;
u(19);
e[0] = 0;
if ((l = d(n, 0, 19, 19, null, null, i, r, oM, e, t)) == -3) {
a.msg = 'oversubscribed dynamic bit lengths tree';
} else if (l == -5 || r[0] === 0) {
a.msg = 'incomplete dynamic bit lengths tree';
l = -3;
}
return l;
};
this.inflate_trees_dynamic = function (n, r, s, c, p, h, f, g, m) {
var b;
u(288);
e[0] = 0;
if ((b = d(s, 0, n, 257, i, o, h, c, g, e, t)) != 0 || c[0] === 0) {
if (b == -3) {
M m.msg = 'oversubscribed literal/length tree';
} else if (b != -4) {
m.msg = 'incomplete literal/length tree';
b = -3;
}
return b;
} else {
u(288);
if (
(b = d(s, n, r, 0, a, l, f, p, g, e, t)) != 0 ||
(p[0] === 0 && n > 257)
) {
if (b == -3) {
m.msg = 'oversubscribed distance tree';
} else if (b == -5M) {
m.msg = 'incomplete distance tree';
b = -3;
} else if (b != -4) {
m.msg = 'empty distance tree with lengths';
b = -3;
}
return b;
} else {
return 0;
}
}
};
}
function c() {
function g(e, n, r, i, o, a, l, s) {
var c;
var d;
var u;
var p;
var b;M
var x;
var A;
var k;
var S;
var g = s.next_in_index;
var m = s.avail_in;
var h = l.bitb;
var f = l.bitk;
var w = (b = l.write) < l.read ? l.read - b - 1 : l.end - b;
var v = t[e];
var y = t[n];
do {
while (f < 20) {
m--;
h |= (255 & s.read_byte(g++)) << f;
f += 8;
}
if ((p = (d = r)[(MS = 3 * ((u = i) + (c = h & v)))]) === 0) {
h >>= d[S + 1];
f -= d[S + 1];
l.window[b++] = d[S + 2];
w--;
}
} while (w >= 258 && m >= 10);
m += x = f >> 3 < (x = s.avail_in - m) ? f >> 3 : x;
g -= x;
f -= x << 3;
l.bitb = h;
l.bitk = f;
s.avail_in = m;
s.total_in += g - s.next_in_index;
s.next_in_index = g;
l.write = b;
M return 0;
}
var e;
var n;
var r;
var i;
var o = 0;
var a = 0;
var l = 0;
var s = 0;
var c = 0;
var d = 0;
var u = 0;
var p = 0;
var h = 0;
var f = 0;
this.init = function (t, o, a, l, s, c) {
e = 0;
u = t;
p = o;
r = a;
h = l;
i = s;
f = c;
n = null;
M };
this.proc = function (m, b, w) {
var v;
var y;
var x;
var A;
var k;
var S;
var C;
var E = 0;
var _ = 0;
var I = 0;
I = b.next_in_index;
A = b.avail_in;
E = m.bitb;
_ = m.bitk;
for (S = (k = m.write) < m.read ? m.read - k - 1 : m.end - k; ; ) {
switch (e) {
case 0:
if (SM >= 258 && A >= 10) {
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
w = g(u, p, r, h, i, f, m, b);
I = b.next_in_index;
A = b.avail_in;
E = m.bitb;
_ = m.bitk;
S = (k = m.write) < m.read ? m.read - k - 1 : m.end - k;
M if (w != 0) {
e = w == 1 ? 7 : 9;
break;
}
}
l = u;
n = r;
a = h;
e = 1;
case 1:
for (v = l; _ < v; ) {
if (A === 0) {
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
M b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
}
w = 0;
A--;
E |= (255 & b.read_byte(I++)) << _;
_ += 8;
}
E >>>= n[(y = 3 * (a + (E & t[v]))) + 1];
_ -= n[y + 1];
if ((x = n[y]) === 0) {
s = n[y + 2];
e = 6;
break;M
}
if ((16 & x) != 0) {
c = 15 & x;
o = n[y + 2];
e = 2;
break;
}
if ((64 & x) == 0) {
l = x;
a = y / 3 + n[y + 2];
break;
}
if ((32 & x) != 0) {
e = 7;
break;
}
e = 9;
b.msg = 'Minvalid literal/length code';
w = -3;
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
case 2:
for (v = c; _ < v; ) {
if (A === 0) {
m.bitb = E;
m.bitk = _;
b.avail_iMn = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
}
w = 0;
A--;
E |= (255 & b.read_byte(I++)) << _;
_ += 8;
}
o += E & t[v];
E >>= v;
_ -= v;
l = p;
n = i;
M a = f;
e = 3;
case 3:
for (v = l; _ < v; ) {
if (A === 0) {
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
}
w = 0;
A--;
M E |= (255 & b.read_byte(I++)) << _;
_ += 8;
}
E >>= n[(y = 3 * (a + (E & t[v]))) + 1];
_ -= n[y + 1];
if ((16 & (x = n[y])) != 0) {
c = 15 & x;
d = n[y + 2];
e = 4;
break;
}
if ((64 & x) == 0) {
l = x;
a = y / 3 + n[y + 2];
break;
M }
e = 9;
b.msg = 'invalid distance code';
w = -3;
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
case 4:
for (v = c; _ < v; ) {
if (A === 0) {
m.bitb = E;
M m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
}
w = 0;
A--;
E |= (255 & b.read_byte(I++)) << _;
_ += 8;
}
d += E & t[v];
E >>= v;
_ -= v;
M e = 5;
case 5:
for (C = k - d; C < 0; ) {
C += m.end;
}
while (o !== 0) {
if (S === 0) {
if (k == m.end && m.read !== 0) {
S = (k = 0) < m.read ? m.read - k - 1 : m.end - k;
}
if (S === 0) {
m.write = k;
w = m.inflate_flush(b, w);
S = (k = m.Mwrite) < m.read ? m.read - k - 1 : m.end - k;
if (k == m.end && m.read !== 0) {
S = (k = 0) < m.read ? m.read - k - 1 : m.end - k;
}
if (S === 0) {
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
M return m.inflate_flush(b, w);
}
}
}
m.window[k++] = m.window[C++];
S--;
if (C == m.end) {
C = 0;
}
o--;
}
e = 0;
break;
case 6:
if (S === 0) {
if (k == m.end && m.read !== 0) {
S = (k =M 0) < m.read ? m.read - k - 1 : m.end - k;
}
if (S === 0) {
m.write = k;
w = m.inflate_flush(b, w);
S = (k = m.write) < m.read ? m.read - k - 1 : m.end - k;
if (k == m.end && m.read !== 0) {
S = (k = 0) < m.read ? m.read - k - 1 : m.end - k;
}
if (S === 0) {
m.bitb = E;
m.bitMk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
}
}
}
w = 0;
m.window[k++] = s;
S--;
e = 0;
break;
case 7:
if (_ > 7) {
_ M-= 8;
A++;
I--;
}
m.write = k;
w = m.inflate_flush(b, w);
S = (k = m.write) < m.read ? m.read - k - 1 : m.end - k;
if (m.read != m.write) {
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
rMeturn m.inflate_flush(b, w);
}
e = 8;
case 8:
w = 1;
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
case 9:
w = -3;
m.bitb = E;
m.bitk = _;
b.avMail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
default:
w = -2;
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
}
M }
};
this.free = function () {};
}
function u(e, n) {
var r;
var i = this;
var o = 0;
var a = 0;
var l = 0;
var u = 0;
var p = [0];
var h = [0];
var f = new c();
var g = 0;
var m = new Int32Array(4320);
var b = new s();
i.bitk = 0;
i.bitb = 0;
i.window = new Uint8Array(n);
i.end = n;
i.read = 0;
Mi.write = 0;
i.reset = function (e, t) {
if (t) {
t[0] = 0;
}
if (o == 6) {
f.free(e);
}
o = 0;
i.bitk = 0;
i.bitb = 0;
i.read = i.write = 0;
};
i.reset(e, null);
i.inflate_flush = function (e, t) {
var n;
var o;
var r = e.next_out_index;
if (
(n = ((o = i.read) <= i.write ? i.write : i.end) -M o) >
e.avail_out
) {
n = e.avail_out;
}
if (n !== 0 && t == -5) {
t = 0;
}
e.avail_out -= n;
e.total_out += n;
e.next_out.set(i.window.subarray(o, o + n), r);
r += n;
if ((o += n) == i.end) {
o = 0;
if (i.write == i.end) {
i.write = 0;
}
if ((n = i.write - o) > e.avail_out) {
n = Me.avail_out;
}
if (n !== 0 && t == -5) {
t = 0;
}
e.avail_out -= n;
e.total_out += n;
e.next_out.set(i.window.subarray(o, o + n), r);
r += n;
o += n;
}
e.next_out_index = r;
i.read = o;
return t;
};
i.proc = function (e, n) {
var c;
var w;
var v;
var y;
var x;
M var A;
var k;
var S;
y = e.next_in_index;
x = e.avail_in;
w = i.bitb;
v = i.bitk;
for (k = (A = i.write) < i.read ? i.read - A - 1 : i.end - A; ; ) {
switch (o) {
case 0:
while (v < 3) {
if (x === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_iMndex;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
n = 0;
x--;
w |= (255 & e.read_byte(y++)) << v;
v += 8;
}
switch (((g = 1 & (c = 7 & w)), c >>> 1)) {
case 0:
w >>>= 3;
w >>>= c = 7 & (v -= 3);
v -= c;
M o = 1;
break;
case 1:
var C = [];
var E = [];
var _ = [[]];
var I = [[]];
s.inflate_trees_fixed(C, E, _, I);
f.init(C[0], E[0], _[0], 0, I[0], 0);
w >>>= 3;
v -= 3;
o = 6;
break;
case 2:
w >>>= 3;
M v -= 3;
o = 3;
break;
case 3:
w >>>= 3;
v -= 3;
o = 9;
e.msg = 'invalid block type';
n = -3;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.writeM = A;
return i.inflate_flush(e, n);
}
break;
case 1:
while (v < 32) {
if (x === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
M n = 0;
x--;
w |= (255 & e.read_byte(y++)) << v;
v += 8;
}
if (((~w >>> 16) & 65535) != (65535 & w)) {
o = 9;
e.msg = 'invalid stored block lengths';
n = -3;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;M
i.write = A;
return i.inflate_flush(e, n);
}
a = 65535 & w;
w = v = 0;
o = a !== 0 ? 2 : g !== 0 ? 7 : 0;
break;
case 2:
if (x === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.wMrite = A;
return i.inflate_flush(e, n);
}
if (k === 0) {
if (A == i.end && i.read !== 0) {
k = (A = 0) < i.read ? i.read - A - 1 : i.end - A;
}
if (k === 0) {
i.write = A;
n = i.inflate_flush(e, n);
k = (A = i.write) < i.read ? i.read - A - 1 : i.end - A;
if (A == i.end && i.read !== 0) {
M k = (A = 0) < i.read ? i.read - A - 1 : i.end - A;
}
if (k === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
}
}
M n = 0;
if ((c = a) > x) {
c = x;
}
if (c > k) {
c = k;
}
i.window.set(e.read_buf(y, c), A);
y += c;
x -= c;
A += c;
k -= c;
if ((a -= c) != 0) {
break;
}
o = g !== 0 ? 7 : 0;
break;
case 3:
M while (v < 14) {
if (x === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
n = 0;
x--;
w |= (255 & e.read_byte(y++)) << v;
v += 8;
M }
l = c = 16383 & w;
if ((31 & c) > 29 || ((c >> 5) & 31) > 29) {
o = 9;
e.msg = 'too many length or distance symbols';
n = -3;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
M }
c = 258 + (31 & c) + ((c >> 5) & 31);
if (!r || r.length < c) {
r = [];
} else {
for (S = 0; S < c; S++) {
r[S] = 0;
}
}
w >>>= 14;
v -= 14;
u = 0;
o = 4;
case 4:
while (u < 4 + (l >>> 10)) {
while (v < 3) {
if (xM === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
n = 0;
x--;
w |= (255 & e.read_byte(y++)) << v;
v += 8;
}
M r[d[u++]] = 7 & w;
w >>>= 3;
v -= 3;
}
while (u < 19) {
r[d[u++]] = 0;
}
p[0] = 7;
if ((c = b.inflate_trees_bits(r, p, h, m, e)) != 0) {
if ((n = c) == -3) {
r = null;
o = 9;
}
i.bitb = w;
i.bitk = v;
e.avail_in = x;
M e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
u = 0;
o = 5;
case 5:
while (!(u >= 258 + (31 & (c = l)) + ((c >> 5) & 31))) {
var D;
var B;
for (c = p[0]; v < c; ) {
if (x === 0) {
i.bitb = w;
M i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
n = 0;
x--;
w |= (255 & e.read_byte(y++)) << v;
v += 8;
}
c = m[3 * (h[0] + (w & t[c])) + 1];
M if ((B = m[3 * (h[0] + (w & t[c])) + 2]) < 16) {
w >>>= c;
v -= c;
r[u++] = B;
} else {
S = B == 18 ? 7 : B - 14;
for (D = B == 18 ? 11 : 3; v < c + S; ) {
if (x === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
M e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
n = 0;
x--;
w |= (255 & e.read_byte(y++)) << v;
v += 8;
}
v -= c;
D += (w >>>= c) & t[S];
w >>>= S;
v -= S;
if (
M (S = u) + D > 258 + (31 & (c = l)) + ((c >> 5) & 31) ||
(B == 16 && S < 1)
) {
r = null;
o = 9;
e.msg = 'invalid bit length repeat';
n = -3;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
M i.write = A;
return i.inflate_flush(e, n);
}
B = B == 16 ? r[S - 1] : 0;
do {
r[S++] = B;
} while (--D != 0);
u = S;
}
}
h[0] = -1;
var M = [];
var T = [];
var R = [];
var G = [];
M[0] = 9;
M T[0] = 6;
c = l;
if (
(c = b.inflate_trees_dynamic(
257 + (31 & c),
1 + ((c >> 5) & 31),
r,
M,
T,
R,
G,
m,
e
)) != 0
) {
if (c == -3) {
r = null;
o = 9;
M }
n = c;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
f.init(M[0], T[0], m, R[0], m, G[0]);
o = 6;
case 6:
i.bitb = w;
i.bitk = v;
M e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
if ((n = f.proc(i, e, n)) != 1) {
return i.inflate_flush(e, n);
}
n = 0;
f.free(e);
y = e.next_in_index;
x = e.avail_in;
w = i.bitb;
v = i.bitk;
k = (A = i.write) < i.read ? i.read - A - 1 : Mi.end - A;
if (g === 0) {
o = 0;
break;
}
o = 7;
case 7:
i.write = A;
n = i.inflate_flush(e, n);
k = (A = i.write) < i.read ? i.read - A - 1 : i.end - A;
if (i.read != i.write) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
M e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
o = 8;
case 8:
n = 1;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
case 9:
M n = -3;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
default:
n = -2;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
M i.write = A;
return i.inflate_flush(e, n);
}
}
};
i.free = function (e) {
i.reset(e, null);
i.window = null;
m = null;
};
i.set_dictionary = function (e, t, n) {
i.window.set(e.subarray(t, t + n), 0);
i.read = i.write = n;
};
i.sync_point = function () {
if (o == 1) {
return 1;
} else {
return M0;
}
};
}
function h() {
function t(e) {
if (e && e.istate) {
e.total_in = e.total_out = 0;
e.msg = null;
e.istate.mode = 7;
e.istate.blocks.reset(e, null);
return 0;
} else {
return -2;
}
}
var e = this;
e.mode = 0;
e.method = 0;
e.was = [0];
e.need = 0;
e.marker = 0;
e.Mwbits = 0;
e.inflateEnd = function (t) {
if (e.blocks) {
e.blocks.free(t);
}
e.blocks = null;
return 0;
};
e.inflateInit = function (n, r) {
n.msg = null;
e.blocks = null;
if (r < 8 || r > 15) {
e.inflateEnd(n);
return -2;
} else {
e.wbits = r;
n.istate.blocks = new u(n, 1 << r);
t(n);
return 0;M
}
};
e.inflate = function (e, t) {
var n;
var r;
if (!e || !e.istate || !e.next_in) {
return -2;
}
t = t == 4 ? -5 : 0;
for (n = -5; ; ) {
switch (e.istate.mode) {
case 0:
if (e.avail_in === 0) {
return n;
}
n = t;
e.avail_in--;
e.total_in++;
Mif (
(15 & (e.istate.method = e.read_byte(e.next_in_index++))) !=
8
) {
e.istate.mode = 13;
e.msg = 'unknown compression method';
e.istate.marker = 5;
break;
}
if (8 + (e.istate.method >> 4) > e.istate.wbits) {
e.istate.mode = 13;
e.msg = 'invalid window size';
e.istate.marker = 5;
M break;
}
e.istate.mode = 1;
case 1:
if (e.avail_in === 0) {
return n;
}
n = t;
e.avail_in--;
e.total_in++;
r = 255 & e.read_byte(e.next_in_index++);
if (((e.istate.method << 8) + r) % 31 != 0) {
e.istate.mode = 13;
e.msg = 'incorrect header check';
M e.istate.marker = 5;
break;
}
if ((32 & r) == 0) {
e.istate.mode = 7;
break;
}
e.istate.mode = 2;
case 2:
if (e.avail_in === 0) {
return n;
}
n = t;
e.avail_in--;
e.total_in++;
e.istate.need =
((255 & e.read_byte(e.next_Min_index++)) << 24) & 4278190080;
e.istate.mode = 3;
case 3:
if (e.avail_in === 0) {
return n;
}
n = t;
e.avail_in--;
e.total_in++;
e.istate.need +=
((255 & e.read_byte(e.next_in_index++)) << 16) & 16711680;
e.istate.mode = 4;
case 4:
if (e.avail_in === 0) {
return Mn;
}
n = t;
e.avail_in--;
e.total_in++;
e.istate.need +=
((255 & e.read_byte(e.next_in_index++)) << 8) & 65280;
e.istate.mode = 5;
case 5:
if (e.avail_in === 0) {
return n;
} else {
n = t;
e.avail_in--;
e.total_in++;
e.istate.need += 255 & Me.read_byte(e.next_in_index++);
e.istate.mode = 6;
return 2;
}
case 6:
e.istate.mode = 13;
e.msg = 'need dictionary';
e.istate.marker = 0;
return -2;
case 7:
if ((n = e.istate.blocks.proc(e, n)) == -3) {
e.istate.mode = 13;
e.istate.marker = 0;
break;
}
M if (n == 0) {
n = t;
}
if (n != 1) {
return n;
}
n = t;
e.istate.blocks.reset(e, e.istate.was);
e.istate.mode = 12;
case 12:
return 1;
case 13:
return -3;
default:
return -2;
}
}
};
e.inflateSetDictionary = functioMn (e, t, n) {
var r = 0;
var i = n;
if (e && e.istate && e.istate.mode == 6) {
if (i >= 1 << e.istate.wbits) {
r = n - (i = (1 << e.istate.wbits) - 1);
}
e.istate.blocks.set_dictionary(t, r, i);
e.istate.mode = 7;
return 0;
} else {
return -2;
}
};
e.inflateSync = function (e) {
var n;
var o;
var a;
M if (!e || !e.istate) {
return -2;
}
if (e.istate.mode != 13) {
e.istate.mode = 13;
e.istate.marker = 0;
}
if ((n = e.avail_in) === 0) {
return -5;
}
var r = e.next_in_index;
for (var i = e.istate.marker; n !== 0 && i < 4; ) {
if (e.read_byte(r) == p[i]) {
i++;
} else {
i = e.read_byte(r) !== 0 ? 0 : 4 - i;
M }
r++;
n--;
}
e.total_in += r - e.next_in_index;
e.next_in_index = r;
e.avail_in = n;
e.istate.marker = i;
if (i == 4) {
o = e.total_in;
a = e.total_out;
t(e);
e.total_in = o;
e.total_out = a;
e.istate.mode = 7;
return 0;
} else {
return -3;
}
};
e.inflMateSyncPoint = function (e) {
if (e && e.istate && e.istate.blocks) {
return e.istate.blocks.sync_point();
} else {
return -2;
}
};
}
function f() {}
var t = [
0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383,
32767, 65535,
];
var n = [
96, 7, 256, 0, 8, 80, 0, 8, 16, 84, 8, 115, 82, 7, 31, 0, 8, 112, 0,
8, 48, 0, 9, 192, 80, 7, 10, 0, 8, 96, 0M, 8, 32, 0, 9, 160, 0, 8, 0,
0, 8, 128, 0, 8, 64, 0, 9, 224, 80, 7, 6, 0, 8, 88, 0, 8, 24, 0, 9,
144, 83, 7, 59, 0, 8, 120, 0, 8, 56, 0, 9, 208, 81, 7, 17, 0, 8, 104,
0, 8, 40, 0, 9, 176, 0, 8, 8, 0, 8, 136, 0, 8, 72, 0, 9, 240, 80, 7,
4, 0, 8, 84, 0, 8, 20, 85, 8, 227, 83, 7, 43, 0, 8, 116, 0, 8, 52, 0,
9, 200, 81, 7, 13, 0, 8, 100, 0, 8, 36, 0, 9, 168, 0, 8, 4, 0, 8, 132,
0, 8, 68, 0, 9, 232, 80, 7, 8, 0, 8, 92, 0, 8, 28, 0, 9, 152, 84, 7,
83, M0, 8, 124, 0, 8, 60, 0, 9, 216, 82, 7, 23, 0, 8, 108, 0, 8, 44, 0,
9, 184, 0, 8, 12, 0, 8, 140, 0, 8, 76, 0, 9, 248, 80, 7, 3, 0, 8, 82,
0, 8, 18, 85, 8, 163, 83, 7, 35, 0, 8, 114, 0, 8, 50, 0, 9, 196, 81,
7, 11, 0, 8, 98, 0, 8, 34, 0, 9, 164, 0, 8, 2, 0, 8, 130, 0, 8, 66, 0,
9, 228, 80, 7, 7, 0, 8, 90, 0, 8, 26, 0, 9, 148, 84, 7, 67, 0, 8, 122,
0, 8, 58, 0, 9, 212, 82, 7, 19, 0, 8, 106, 0, 8, 42, 0, 9, 180, 0, 8,
10, 0, 8, 138, 0, 8, 74, 0, 9, 244, 80, 7,M 5, 0, 8, 86, 0, 8, 22, 192,
8, 0, 83, 7, 51, 0, 8, 118, 0, 8, 54, 0, 9, 204, 81, 7, 15, 0, 8, 102,
0, 8, 38, 0, 9, 172, 0, 8, 6, 0, 8, 134, 0, 8, 70, 0, 9, 236, 80, 7,
9, 0, 8, 94, 0, 8, 30, 0, 9, 156, 84, 7, 99, 0, 8, 126, 0, 8, 62, 0,
9, 220, 82, 7, 27, 0, 8, 110, 0, 8, 46, 0, 9, 188, 0, 8, 14, 0, 8,
142, 0, 8, 78, 0, 9, 252, 96, 7, 256, 0, 8, 81, 0, 8, 17, 85, 8, 131,
82, 7, 31, 0, 8, 113, 0, 8, 49, 0, 9, 194, 80, 7, 10, 0, 8, 97, 0, 8,
33, 0M, 9, 162, 0, 8, 1, 0, 8, 129, 0, 8, 65, 0, 9, 226, 80, 7, 6, 0,
8, 89, 0, 8, 25, 0, 9, 146, 83, 7, 59, 0, 8, 121, 0, 8, 57, 0, 9, 210,
81, 7, 17, 0, 8, 105, 0, 8, 41, 0, 9, 178, 0, 8, 9, 0, 8, 137, 0, 8,
73, 0, 9, 242, 80, 7, 4, 0, 8, 85, 0, 8, 21, 80, 8, 258, 83, 7, 43, 0,
8, 117, 0, 8, 53, 0, 9, 202, 81, 7, 13, 0, 8, 101, 0, 8, 37, 0, 9,
170, 0, 8, 5, 0, 8, 133, 0, 8, 69, 0, 9, 234, 80, 7, 8, 0, 8, 93, 0,
8, 29, 0, 9, 154, 84, 7, 83, 0, 8, 125, 0, 8, 61,M 0, 9, 218, 82, 7,
23, 0, 8, 109, 0, 8, 45, 0, 9, 186, 0, 8, 13, 0, 8, 141, 0, 8, 77, 0,
9, 250, 80, 7, 3, 0, 8, 83, 0, 8, 19, 85, 8, 195, 83, 7, 35, 0, 8,
115, 0, 8, 51, 0, 9, 198, 81, 7, 11, 0, 8, 99, 0, 8, 35, 0, 9, 166, 0,
8, 3, 0, 8, 131, 0, 8, 67, 0, 9, 230, 80, 7, 7, 0, 8, 91, 0, 8, 27, 0,
9, 150, 84, 7, 67, 0, 8, 123, 0, 8, 59, 0, 9, 214, 82, 7, 19, 0, 8,
107, 0, 8, 43, 0, 9, 182, 0, 8, 11, 0, 8, 139, 0, 8, 75, 0, 9, 246,
80, 7, 5, 0, 8, M87, 0, 8, 23, 192, 8, 0, 83, 7, 51, 0, 8, 119, 0, 8,
55, 0, 9, 206, 81, 7, 15, 0, 8, 103, 0, 8, 39, 0, 9, 174, 0, 8, 7, 0,
8, 135, 0, 8, 71, 0, 9, 238, 80, 7, 9, 0, 8, 95, 0, 8, 31, 0, 9, 158,
84, 7, 99, 0, 8, 127, 0, 8, 63, 0, 9, 222, 82, 7, 27, 0, 8, 111, 0, 8,
47, 0, 9, 190, 0, 8, 15, 0, 8, 143, 0, 8, 79, 0, 9, 254, 96, 7, 256,
0, 8, 80, 0, 8, 16, 84, 8, 115, 82, 7, 31, 0, 8, 112, 0, 8, 48, 0, 9,
193, 80, 7, 10, 0, 8, 96, 0, 8, 32, 0, 9, 161, 0, 8, 0, 0M, 8, 128, 0,
8, 64, 0, 9, 225, 80, 7, 6, 0, 8, 88, 0, 8, 24, 0, 9, 145, 83, 7, 59,
0, 8, 120, 0, 8, 56, 0, 9, 209, 81, 7, 17, 0, 8, 104, 0, 8, 40, 0, 9,
177, 0, 8, 8, 0, 8, 136, 0, 8, 72, 0, 9, 241, 80, 7, 4, 0, 8, 84, 0,
8, 20, 85, 8, 227, 83, 7, 43, 0, 8, 116, 0, 8, 52, 0, 9, 201, 81, 7,
13, 0, 8, 100, 0, 8, 36, 0, 9, 169, 0, 8, 4, 0, 8, 132, 0, 8, 68, 0,
9, 233, 80, 7, 8, 0, 8, 92, 0, 8, 28, 0, 9, 153, 84, 7, 83, 0, 8, 124,
0, 8, 60, 0, 9, 217M, 82, 7, 23, 0, 8, 108, 0, 8, 44, 0, 9, 185, 0, 8,
12, 0, 8, 140, 0, 8, 76, 0, 9, 249, 80, 7, 3, 0, 8, 82, 0, 8, 18, 85,
8, 163, 83, 7, 35, 0, 8, 114, 0, 8, 50, 0, 9, 197, 81, 7, 11, 0, 8,
98, 0, 8, 34, 0, 9, 165, 0, 8, 2, 0, 8, 130, 0, 8, 66, 0, 9, 229, 80,
7, 7, 0, 8, 90, 0, 8, 26, 0, 9, 149, 84, 7, 67, 0, 8, 122, 0, 8, 58,
0, 9, 213, 82, 7, 19, 0, 8, 106, 0, 8, 42, 0, 9, 181, 0, 8, 10, 0, 8,
138, 0, 8, 74, 0, 9, 245, 80, 7, 5, 0, 8, 86, 0, 8, 22, 192, 8M, 0, 83,
7, 51, 0, 8, 118, 0, 8, 54, 0, 9, 205, 81, 7, 15, 0, 8, 102, 0, 8, 38,
0, 9, 173, 0, 8, 6, 0, 8, 134, 0, 8, 70, 0, 9, 237, 80, 7, 9, 0, 8,
94, 0, 8, 30, 0, 9, 157, 84, 7, 99, 0, 8, 126, 0, 8, 62, 0, 9, 221,
82, 7, 27, 0, 8, 110, 0, 8, 46, 0, 9, 189, 0, 8, 14, 0, 8, 142, 0, 8,
78, 0, 9, 253, 96, 7, 256, 0, 8, 81, 0, 8, 17, 85, 8, 131, 82, 7, 31,
0, 8, 113, 0, 8, 49, 0, 9, 195, 80, 7, 10, 0, 8, 97, 0, 8, 33, 0, 9,
163, 0, 8, 1, 0, 8, 129, M0, 8, 65, 0, 9, 227, 80, 7, 6, 0, 8, 89, 0,
8, 25, 0, 9, 147, 83, 7, 59, 0, 8, 121, 0, 8, 57, 0, 9, 211, 81, 7,
17, 0, 8, 105, 0, 8, 41, 0, 9, 179, 0, 8, 9, 0, 8, 137, 0, 8, 73, 0,
9, 243, 80, 7, 4, 0, 8, 85, 0, 8, 21, 80, 8, 258, 83, 7, 43, 0, 8,
117, 0, 8, 53, 0, 9, 203, 81, 7, 13, 0, 8, 101, 0, 8, 37, 0, 9, 171,
0, 8, 5, 0, 8, 133, 0, 8, 69, 0, 9, 235, 80, 7, 8, 0, 8, 93, 0, 8, 29,
0, 9, 155, 84, 7, 83, 0, 8, 125, 0, 8, 61, 0, 9, 219, 82, 7, 23, 0, 8,
M 109, 0, 8, 45, 0, 9, 187, 0, 8, 13, 0, 8, 141, 0, 8, 77, 0, 9, 251,
80, 7, 3, 0, 8, 83, 0, 8, 19, 85, 8, 195, 83, 7, 35, 0, 8, 115, 0, 8,
51, 0, 9, 199, 81, 7, 11, 0, 8, 99, 0, 8, 35, 0, 9, 167, 0, 8, 3, 0,
8, 131, 0, 8, 67, 0, 9, 231, 80, 7, 7, 0, 8, 91, 0, 8, 27, 0, 9, 151,
84, 7, 67, 0, 8, 123, 0, 8, 59, 0, 9, 215, 82, 7, 19, 0, 8, 107, 0, 8,
43, 0, 9, 183, 0, 8, 11, 0, 8, 139, 0, 8, 75, 0, 9, 247, 80, 7, 5, 0,
8, 87, 0, 8, 23, 192, 8, 0, 83, 7M, 51, 0, 8, 119, 0, 8, 55, 0, 9, 207,
81, 7, 15, 0, 8, 103, 0, 8, 39, 0, 9, 175, 0, 8, 7, 0, 8, 135, 0, 8,
71, 0, 9, 239, 80, 7, 9, 0, 8, 95, 0, 8, 31, 0, 9, 159, 84, 7, 99, 0,
8, 127, 0, 8, 63, 0, 9, 223, 82, 7, 27, 0, 8, 111, 0, 8, 47, 0, 9,
191, 0, 8, 15, 0, 8, 143, 0, 8, 79, 0, 9, 255,
];
var r = [
80, 5, 1, 87, 5, 257, 83, 5, 17, 91, 5, 4097, 81, 5, 5, 89, 5, 1025,
85, 5, 65, 93, 5, 16385, 80, 5, 3, 88, 5, 513, 84, 5, 33, 92, 5, 8193,
M 82, 5, 9, 90, 5, 2049, 86, 5, 129, 192, 5, 24577, 80, 5, 2, 87, 5,
385, 83, 5, 25, 91, 5, 6145, 81, 5, 7, 89, 5, 1537, 85, 5, 97, 93, 5,
24577, 80, 5, 4, 88, 5, 769, 84, 5, 49, 92, 5, 12289, 82, 5, 13, 90,
5, 3073, 86, 5, 193, 192, 5, 24577,
];
var i = [
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,
];
var o = [
0, 0, 0, 0, 0, 0, 0, 0, 1, 1,M 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4,
4, 5, 5, 5, 5, 0, 112, 112,
];
var a = [
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,
];
var l = [
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,
];
s.inflate_trees_fixed = function (e, t, i, o) {
e[0] = 9;
M t[0] = 5;
i[0] = n;
o[0] = r;
return 0;
};
var d = [
16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15,
];
var p = [0, 0, 255, 255];
f.prototype = {
inflateInit: function (e) {
this.istate = new h();
if (!e) {
e = 15;
}
return this.istate.inflateInit(this, e);
},
inflate: function (e) {
if (this.istate) {
M return this.istate.inflate(this, e);
} else {
return -2;
}
},
inflateEnd: function () {
if (!this.istate) {
return -2;
}
var e = this.istate.inflateEnd(this);
this.istate = null;
return e;
},
inflateSync: function () {
if (this.istate) {
return this.istate.inflateSync(this);
} else {
return -2;
}
M },
inflateSetDictionary: function (e, t) {
if (this.istate) {
return this.istate.inflateSetDictionary(this, e, t);
} else {
return -2;
}
},
read_byte: function (e) {
return this.next_in.subarray(e, e + 1)[0];
},
read_buf: function (e, t) {
return this.next_in.subarray(e, e + t);
},
};
var g = e.zip || e;
g.Inflater = g._jzlib_Inflater = fuMnction () {
var e = new f();
var t = new Uint8Array(512);
var n = false;
e.inflateInit();
e.next_out = t;
this.append = function (r, i) {
var o;
var a;
var l = [];
var s = 0;
var c = 0;
var d = 0;
if (r.length !== 0) {
e.next_in_index = 0;
e.next_in = r;
e.avail_in = r.length;
do {
e.next_out_index = 0;M
e.avail_out = 512;
if (e.avail_in === 0 && !n) {
e.next_in_index = 0;
n = true;
}
o = e.inflate(0);
if (n && o === -5) {
if (e.avail_in !== 0) {
throw new Error('inflating: bad input');
}
} else if (o !== 0 && o !== 1) {
throw new Error('inflating: ' + e.msg);
}
if ((n || o === 1)M && e.avail_in === r.length) {
throw new Error('inflating: bad input');
}
if (e.next_out_index) {
if (e.next_out_index === 512) {
l.push(new Uint8Array(t));
} else {
l.push(new Uint8Array(t.subarray(0, e.next_out_index)));
}
}
d += e.next_out_index;
if (i && e.next_in_index > 0 && e.next_in_index != s) {
i(e.Mnext_in_index);
s = e.next_in_index;
}
} while (e.avail_in > 0 || e.avail_out === 0);
a = new Uint8Array(d);
l.forEach(function (e) {
a.set(e, c);
c += e.length;
});
return a;
}
};
this.flush = function () {
e.inflateEnd();
};
};
})(o);
var a = o.zip;
var l = {};
var s = null;
c.prototype = M{
getTopic: function () {
return this.topic;
},
onEvent: function (e) {},
};
var p = null;
a.useWebWorkers = false;
d(
new c('siteInit', function (e) {
p = e.errorHandler;
})
);
if (!Object.create) {
Object.create = function (e) {
function t() {}
t.prototype = e;
return new t();
};
}
if (
'ontouchstart' in window ||
navigator.maxTouchPoints > 0 ||
M navigator.msMaxTouchPoints > 0
) {
/android|blackberry|iemobile|ipad|iphone|ipod|opera mini|webos/i.test(
navigator.userAgent
);
}
if (/ipad|iphone|ipod/i.test(navigator.userAgent)) {
window.MSStream;
}
if (!String.prototype.endsWith) {
String.prototype.endsWith = function (e, t) {
if (t === void 0 || t > this.length) {
t = this.length;
}
return this.substring(t - e.length, t) === e;
};
M }
var f = h;
var g = null;
var m = 'http';
var b = window.location.hostname.toLowerCase();
if (!String.prototype.endsWith) {
String.prototype.endsWith = function (e, t) {
if (t === void 0 || t > this.length) {
t = this.length;
}
return this.substring(t - e.length, t) === e;
};
}
(function () {
switch (b) {
case atob('cmF6MHJlZC5naXRodWIuaW8'):
g = atob('Oi8vdHdpdGNoYXN5bHVtLmNvbS94MLw');
m += 's';
break;
case atob('bG9jYWxob3N0'):
g = atob('Oi8vbG9jYWxob3N0');
}
})();
var y = null;
var x = null;
d(
new c('siteInit', function (e) {
x = e.loadFromUrl;
y = e.errorHandler;
})
);
var k = null;
var S = null;
var C = null;
var E = 0;
var _ = Date.now();
var B = function (e) {
D();
k.innerHTML = e;
k.onclick = function () {M
I(-1);
};
k.classList.add('show');
k.classList.remove('hide');
_ = Date.now();
return ++E;
};
var M = I;
var T = function (e) {
I(-1);
C.innerHTML = e;
S.classList.add('show');
S.classList.remove('hide');
};
d(
new c('siteInit', function () {
var e = 'js7800__fullscreen-container';
var t = document.getElementById(e);
(k = document.createElement('div')).id = 'snackbarM';
k.classList.add('message');
t.appendChild(k);
(S = document.createElement('div')).id = 'errormsg';
S.classList.add('message');
S.onclick = D;
t.appendChild(S);
var n = document.createElement('span');
n.classList.add('closebtn');
n.onclick = D;
S.appendChild(n);
n.innerHTML = '×';
C = document.createElement('span');
S.appendChild(C);
})
);
d(
new c('siMteInit', function (e) {
(function (e) {
var t = e.romList;
var n = e.loadFromUrl;
var r = e.startEmulation;
var i = e.js7800;
var o = false;
R(
'select-remote-file',
'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LMnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZlcnNpb249IjEuMSIgIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4NCiAgIDxwYXRoIGZpbGw9IiNmZmZmZmYiIGQ9Ik0xNywxM0wxMiwxOEw3LDEzSDEwVjlIMTRWMTNNMTkuMzUsMTAuMDNDMTguNjcsNi41OSAxNS42NCw0IDEyLDRDOS4xMSw0IDYuNiw1LjY0IDUuMzUsOC4wM0MyLjM0LDguMzYgMCwxMC45IDAsMTRBNiw2IDAgMCwwIDYsMjBIMTlBNSw1IDAgMCwwIDI0LDE1QzI0LDEyLjM2IDIxLjk1LDEwLjIyIDE5LjM1LDEwLjAzWiIgLz4NCjwvc3ZnPg==',
'Select Remote File',
true,
M function () {
if (!o) {
o = true;
var e = i.ControlsBar.pauseButton;
var t = e.getValue();
if (!t) {
e.setValue(true);
e.onClick();
}
setTimeout(function () {
var r = prompt(
'Enter the URL of a remote Cartridge file or Cartridge list'
);
if (r) {
M var i = r.trim();
if (i.length > 0) {
n(i);
}
}
if (!t) {
e.setValue(false);
e.onClick();
}
o = false;
}, 200);
}
}
);
var a = R(
'select-local-file',
'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTMgiPz4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZlcnNpb249IjEuMSIgIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4NCiAgIDxwYXRoIGZpbGw9IiNmZmZmZmYiIGQ9Ik0xOSwyMEg0QzIuODksMjAgMiwxOS4xIDIsMThWNkMyLDQuODkgMi44OSw0IDQsNEgxMEwxMiw2SDE5QTIsMiAwIDAsMSAyMSw4SDIxTDQsOFYxOEw2LjE0LDEwSDIzLjIxTDIwLjkzLDE4LjVDMjAuNyMwxOS4zNyAxOS45MiwyMCAxOSwyMFoiIC8+DQo8L3N2Zz4=',
'Select Local File',
false,
null
).label;
var l = document.createElement('input');
a.className = 'controls-button__upload';
a.appendChild(l);
var s = function () {
l.value = null;
};
a.onclick = s;
l.onclick = s;
l.setAttribute('type', 'file');
l.setAttribute('accept', '.a78, .bin, .zip, .json'M);
l.addEventListener(
'change',
function () {
var e = this.files;
for (var n = 0; n < e.length; n++) {
var i = e[n];
if (!t.loadListFromFile(i)) {
r(i);
}
break;
}
},
false
);
})(e);
})
);
var G = null;
var L = null;
var Q = null;
d(
new c('siMteInit', function (e) {
function n(e) {
e.preventDefault();
}
G = e.loadFromUrl;
L = e.romList;
Q = e.startEmulation;
var t = document.body;
t.addEventListener('drop', z);
t.addEventListener('dragdrop', z);
t.addEventListener('dragenter', n);
t.addEventListener('dragover', n);
})
);
var F = {};
var N = 'fullscreen';
var U = null;
var K = null;
var Y = null;
M var O = null;
var j = null;
var P = null;
var H = null;
var W = false;
d(
new c('siteInit', function (e) {
U = e.js7800;
K = U.Keyboard;
Y = U.Video;
O = U.Region;
H = U.Cartridge;
P = e.HighScore;
j = U.Main;
(function () {
try {
localStorage.setItem('test', 'test');
localStorage.removeItem('test');
W = true;
console.log('Local sMtorage is available.');
} catch (e) {
console.log('Local storage is not available.');
}
})();
})
);
var X = f;
var $ = 2048;
var ee = null;
var te = null;
var ne = false;
var re = null;
var ie = null;
var oe = null;
var ae = 0;
var le = null;
var se = null;
var ce = null;
var de = true;
var ue = de;
var pe = true;
var he = true;
var fe = new Array($);
M d(
new c('siteInit', function (e) {
ke(e);
})
);
var Ge = h;
Le.prototype = {
createElement: function () {
this.el = this.doCreateElement();
var e = this.getClass();
if (e) {
this.el.className = e;
}
return this.el;
},
getClass: function () {
return null;
},
getElement: function () {
return this.el;
},
doCreateElement: function () {M
return null;
},
};
Qe.prototype = Object.create(Le.prototype);
Ge(Qe.prototype, {
getClass: function () {
return 'js7800__controls-button';
},
doCreateElement: function () {
var e = document.createElement('button');
var t = this;
e.onclick = function (e) {
t.onClick(e);
};
e.onmousedown = function (e) {
t.onDown(e);
};
e.onmouseup = function (e) {
M t.onUp(e);
};
var n = document.createTextNode(this.text);
e.appendChild(n);
if (this.title) {
e.setAttribute('title', this.title);
}
return e;
},
onClick: function (e) {},
onDown: function (e) {},
onUp: function (e) {},
});
ze.prototype = Object.create(Le.prototype);
Ge(ze.prototype, {
getClass: function () {
return 'js7800__controls-switch';
},
doCreateEMlement: function () {
var e = document.createElement('label');
e.setAttribute('title', this.title);
var t = document.createElement('input');
this.cb = t;
t.setAttribute('type', 'checkbox');
var n = this;
t.onclick = function (e) {
n.onClick(e);
};
e.appendChild(t);
var r = document.createElement('span');
r.className = this.getClass() + '-slider';
e.appendChild(r);
return e;
M },
setValue(e) {
this.cb.checked = e;
},
getValue() {
return this.cb.checked;
},
onClick: function (e) {},
});
var Fe = Le;
var Ne = Qe;
var Ue = ze;
var Ke = f;
var Ye = null;
Oe.prototype = Object.create(Ne.prototype);
Ke(Oe.prototype, {
getClass: function () {
return 'dialog-button';
},
});
je.prototype = Object.create(Ue.prototype);
Ke(je.prototype, {
M getClass: function () {
return 'dialog-switch';
},
});
Pe.prototype = Object.create(Fe.prototype);
Ke(Pe.prototype, {
select: null,
getClass: function () {
return 'dialog-select';
},
setValue: function (e) {
this.select.value = e;
},
getValue: function () {
return this.select.value;
},
setWidth: function (e) {
this.width = e;
if (this.div) {
this.div.Mstyle.width = this.width + 'em';
}
},
onChange: function () {},
doCreateElement: function () {
var e = this;
var t = document.createElement('div');
this.div = t;
if (this.width) {
this.setWidth(this.width);
}
var n = document.createElement('select');
n.onchange = function () {
e.onChange();
};
t.appendChild(n);
this.select = n;
var r = null;
M for (var i in this.opts) {
if (i.startsWith('OptGroup')) {
(r = document.createElement('optgroup')).setAttribute(
'label',
this.opts[i]
);
this.select.add(r);
} else {
var o = document.createElement('option');
o.text = i;
o.value = this.opts[i];
if (r == null) {
this.select.add(o);
} else {
r.appendChild(o);
M }
}
}
return t;
},
});
He.prototype = Object.create(Fe.prototype);
Ke(He.prototype, {
onShow: function () {},
onHide: function () {},
onOk: function () {},
onDefaults: function () {},
getClass: function () {
return 'modal';
},
doCreateElement: function () {
var e = document.createElement('div');
this.modalEl = e;
var t = document.createElement('div');
M this.contentEl = t;
t.className = 'modal-content';
e.appendChild(t);
var n = document.createElement('div');
this.headerEl = n;
n.className = 'modal-header';
n.appendChild(document.createTextNode(this.title));
t.appendChild(n);
var r = document.createElement('div');
this.bodyEl = r;
r.className = 'modal-body';
t.appendChild(r);
this.addBodyContent(r);
var i = document.createElement('dMiv');
i.style.clear = 'both';
t.appendChild(i);
var o = document.createElement('div');
this.footerEl = o;
o.className = 'modal-footer';
t.appendChild(o);
this.addFooterContent(o);
(i = document.createElement('div')).style.clear = 'both';
o.appendChild(i);
return e;
},
addFooterContent: function (e) {
var t = this;
var n = document.createElement('div');
n.style.flexGrow = M1;
if (this.isReadOnly) {
var r = new Oe('Close');
this.cancel = r;
e.appendChild(n);
e.appendChild(r.createElement());
} else {
var i = new Oe('OK');
this.ok = i;
r = new Oe('Cancel');
this.cancel = r;
var o = new Oe('Defaults', 'Reset to Defaults');
this.defaults = o;
i.onClick = function () {
t.onOk();
t.hide();
};
M o.onClick = function () {
t.onDefaults();
};
n.appendChild(o.createElement());
e.appendChild(n);
e.appendChild(i.createElement());
e.appendChild(r.createElement());
}
r.onClick = function () {
t.hide();
};
},
addBodyContent: function (e) {},
show: function () {
var e = Ye.ControlsBar.pauseButton;
this.pauseButton = e;
this.paused = e.getValue()M;
if (!this.paused) {
e.setValue(true);
e.onClick();
}
this.onShow();
window.addEventListener('resize', this.windowResizeFunc);
this.modalEl.style.display = 'block';
this.windowResizeFunc();
},
hide: function () {
window.removeEventListener('resize', this.windowResizeFunc);
this.modalEl.style.display = 'none';
this.onHide();
if (!this.paused) {
this.pauseButton.setVMalue(false);
this.pauseButton.onClick();
}
},
});
We.prototype = Object.create(Fe.prototype);
Ke(We.prototype, {
onTabClick: function (e) {
var t = this;
for (var n = 0; n < this.tabs.length; n++) {
var r = n;
(function () {
var e = t.tabs[r];
var n = e.getButtonElement();
if (n.className.indexOf(' active') != -1) {
e.onTabHide();
}
M n.className = n.className.replace(' active', '');
e.getElement().style.display = 'none';
})();
}
e.onTabShow();
e.getButtonElement().className += ' active';
e.getElement().style.display = 'block';
},
doCreateElement: function () {
var e = this;
var t = document.createElement('div');
t.className = 'tabset';
var n = document.createElement('div');
n.className = 'tab';
t.appendCMhild(n);
for (var r = 0; r < this.tabs.length; r++) {
var i = r;
(function () {
var t = e.tabs[i];
var r = t.createButtonElement();
n.appendChild(r);
r.onclick = function () {
e.onTabClick(t);
};
})();
}
for (r = 0; r < this.tabs.length; r++) {
t.appendChild(this.tabs[r].createElement());
}
var o = document.createElement('div');
M o.style.clear = 'both';
t.appendChild(o);
if (this.defaultTab) {
this.onTabClick(this.defaultTab);
}
return t;
},
addTab: function (e, t) {
this.tabs.push(e);
if (t) {
this.defaultTab = e;
}
},
});
Ve.prototype = Object.create(Fe.prototype);
Ke(Ve.prototype, {
onTabShow: function () {},
onTabHide: function () {},
onShow: function () {},
onHide: Mfunction () {},
onOk: function () {},
onDefaults: function () {},
getClass: function () {
return 'tabcontent';
},
getButtonElement: function () {
return this.buttonEl;
},
createButtonElement: function () {
var e = document.createElement('button');
this.buttonEl = e;
e.appendChild(document.createTextNode(this.getTitle()));
e.className = 'tablinks';
return e;
},
getTitle: functMion () {
return this.title;
},
createTabContent: function (e) {},
doCreateElement: function () {
var e = document.createElement('div');
this.createTabContent(e);
return e;
},
});
qe.prototype = Object.create(He.prototype);
Ke(qe.prototype, {
getTabSet: function () {},
onShow: function () {
He.prototype.onShow.call(this);
var e = this.tabset.tabs;
for (var t = 0; t < e.length; t++) M{
e[t].onShow();
}
},
onHide: function () {
He.prototype.onHide.call(this);
var e = this.tabset.tabs;
for (var t = 0; t < e.length; t++) {
e[t].onHide();
}
},
onOk: function () {
He.prototype.onOk.call(this);
var e = this.tabset.tabs;
for (var t = 0; t < e.length; t++) {
e[t].onOk();
}
},
onDefaults: function () {
He.prototype.onDefauMlts.call(this);
var e = this.tabset.tabs;
for (var t = 0; t < e.length; t++) {
e[t].onDefaults();
}
},
addBodyContent: function (e) {
He.prototype.addBodyContent.call(this);
e.appendChild(this.tabset.createElement());
},
});
Je.prototype = Object.create(Fe.prototype);
Ke(Je.prototype, {
setVisible(e) {
this.el.style.display = e ? 'block' : 'none';
},
doCreateElement: function () M{
return document.createElement('div');
},
});
Ze.prototype = Object.create(Je.prototype);
Ke(Ze.prototype, {
getClass: function () {
return 'dialog-cell-label';
},
doCreateElement: function () {
var e = Je.prototype.doCreateElement.call(this);
if (this.label) {
e.appendChild(document.createTextNode(this.label));
}
return e;
},
});
Xe.prototype = Object.create(Je.prototype);
M Ke(Xe.prototype, {
getClass: function () {
return 'dialog-cell-content';
},
doCreateElement: function () {
var e = Je.prototype.doCreateElement.call(this);
if (typeof this.content == 'string') {
e.appendChild(document.createTextNode(this.content));
} else {
e.appendChild(this.content.createElement());
}
return e;
},
});
$e.prototype = Object.create(Fe.prototype);
Ke($e.prototypMe, {
getClass: function () {
return 'dialog-grid';
},
doCreateElement: function () {
var e = document.createElement('div');
for (var t = 0; t < this.cells.length; t++) {
e.appendChild(this.cells[t].createElement());
}
return e;
},
addCell: function (e) {
this.cells.push(e);
},
});
d(
new c('siteInit', function (e) {
Ye = e.js7800;
})
);
var et = VeM;
var tt = f;
var nt = null;
rt.prototype = Object.create(et.prototype);
tt(rt.prototype, {
hidev: function () {
this.iframe.setAttribute('src', '');
this.logoEl.style.display = 'inline-block';
this.vEl.style.display = 'none';
this.top.style.opacity = '0';
this.top.style.display = 'inline-block';
if (this.timerId != null) {
clearTimeout(this.timerId);
this.timerId = null;
}
},
M showv: function () {
this.played = true;
this.iframe.setAttribute('src', atob(nt));
this.top.style.cursor = 'auto';
this.top.style.opacity = '.4';
this.top.removeEventListener('click', this.fClick);
var e = this;
this.timerId = setTimeout(function () {
e.top.style.display = 'none';
e.logoEl.style.display = 'none';
e.vEl.style.display = 'inline-block';
}, 1e4);
},
onShow: function () M{
this.hidev();
this.played = false;
this.top.style.cursor = 'pointer';
this.top.addEventListener('click', this.fClick);
nt =
'aHR0cHM6Ly9wbGF5ZXIudmltZW8uY29tL3ZpZGVvLzQxMTg5MTQ1Nz9hdXRvcGxheT0xJmF1dG9wYXVzZT0wJmxvb3A9dHJ1ZSZiYWNrZ3JvdW5kPWZhbHNlJm11dGVkPTE=';
},
onHide: function () {
this.top.removeEventListener('click', this.fClick);
this.hidev();
},
onTabHide: function () {
if (this.playedM) {
this.onHide();
}
},
createTabContent: function (e) {
var t = document.createElement('div');
t.className = 'tabcontent__title';
t.appendChild(
document.createTextNode('JS7800: JavaScript Atari 7800 Emulator')
);
e.appendChild(t);
var n = document.createElement('div');
n.className = 'about';
e.appendChild(n);
var r = document.createElement('div');
n.appendChild(r);
M r.innerHTML =
'<p class="center">\n<span class="about-label">by raz0red</span><a href="https://github.com/raz0red/js7800" target="_blank"><img\nclass="about-logo" src="images/github-logo.svg" draggable="false" alt="GitHub: JS7800 by raz0red"\ntitle="GitHub: JS7800 by raz0red"></a>\n</p>\n<p class="center">\nJS7800 is an enhanced JavaScript port of the <a href="https://gstanton.github.io/ProSystem1_3/" target="_blank">ProSystem Atari 7800 emulator</a> that was originally\ndeveloped by Greg StanMton\n</p>';
var i = document.createElement('div');
i.style.textAlign = 'center';
n.appendChild(i);
this.wrapperEl = document.createElement('div');
this.wrapperEl.className = 'about-atari';
this.top = document.createElement('div');
this.top.className = 'about-atari__top';
this.wrapperEl.appendChild(this.top);
i.appendChild(this.wrapperEl);
this.logoEl = document.createElement('img');
this.logoEl.setAttributeM('draggable', 'false');
this.logoEl.setAttribute('src', 'images/logo.gif');
this.wrapperEl.appendChild(this.logoEl);
this.vEl = document.createElement('div');
this.vEl.className = 'about-atari__v';
this.wrapperEl.appendChild(this.vEl);
var o = document.createElement('iframe');
this.iframe = o;
o.setAttribute('width', '100%');
o.setAttribute('height', '100%');
o.setAttribute('frameborder', '0');
o.setAttribuMte('allow', 'autoplay');
this.vEl.appendChild(o);
var a = document.createElement('div');
n.appendChild(a);
a.innerHTML =
'<p class="center">\nAtari 7800 controller illustration was created by Mark Davis (<a href="https://vectogram.us/" target="_blank">Vect-O-Gram</a>)<br>\nMD5 support was developed by Joseph Myers (<a href="http://www.myersdaily.org/joseph/javascript/md5-text.html" target="_blank">MD5.js</a>)<br>\nZip support was developed by Gildas Lormeau (<a hrMef="http://gildas-lormeau.github.io/zip.js" target="_blank">Zip.js</a>)<br>\nYM2151 support was ported from <a href="http://retropc.net/cisc/sound/" target="_blank">FM Sound Generator</a> by <a href="http://www2.tokai.or.jp/mrnkmzu/" target="_blank">Kuma</a>\n</p>';
},
});
var it = qe;
var ot = We;
var at = Ve;
var lt = $e;
var st = Ze;
var ct = je;
var dt = Pe;
var ut = Xe;
var pt = f;
var ht = null;
var ft = null;
var gt = null;M
mt.prototype = Object.create(Le.prototype);
pt(mt.prototype, {
getClass: function () {
return 'controller__keytarget';
},
doCreateElement: function () {
var e = document.createElement('div');
this.target = e;
e.setAttribute('tabindex', '0');
e.style.left = this.left + 'px';
e.style.top = this.top + 'px';
return e;
},
onShow: function (e, t) {
this.keys = e;
this.setValue(t);M
this.el.addEventListener('keydown', this.keydownf);
},
onHide: function () {
this.el.removeEventListener('keydown', this.keydownf);
},
setValue: function (e) {
var t = this.keys[e];
if (t) {
this.target.innerHTML = t;
this.value = e;
}
},
getValue: function () {
return this.value;
},
});
bt.prototype = Object.create(Le.prototype);
pt(bt.prototype, {
gMetClass: function () {
return 'controller';
},
doCreateElementBeforeTitle: function (e) {},
doCreateElement: function () {
var e = document.createElement('div');
this.doCreateElementBeforeTitle(e);
var t = document.createElement('div');
e.appendChild(t);
t.className = 'controller__title';
t.appendChild(document.createTextNode(this.title));
var n = document.createElement('div');
this.inner = n;
M n.className = 'controller__inner';
e.appendChild(n);
return e;
},
});
wt.prototype = Object.create(Le.prototype);
pt(wt.prototype, {
getClass: function () {
return 'gamepad-focus';
},
show: function () {
this.el.style.display = 'block';
},
hide: function () {
this.el.style.display = 'none';
},
setVisible: function (e) {
if (e) {
this.show();
} else {
M this.hide();
}
},
doCreateElement: function () {
var e = document.createElement('div');
e.style.left = this.left + 'px';
e.style.top = this.top + 'px';
return e;
},
});
vt.prototype = Object.create(bt.prototype);
pt(vt.prototype, {
onShow: function () {
this.mapping = ht.Pads.getMapping(this.index);
for (var e = 0; e < this.focus.length; e++) {
this.focus[e].hide();
M }
},
updatePadId: function (e) {
var t = null;
if (e && e.id && e.id.trim().length > 0) {
var n = (t = e.id.trim()).indexOf('(');
if (n != -1) {
t = '<span title="' + t + '">' + t.substring(0, n) + '</span>';
}
} else {
t = 'None (connect and press button)';
}
if (this.padId.innerHTML != t) {
this.padId.innerHTML = t;
}
},
updatePadMapping: function (Me) {
var t = null;
if (e && e.mapping && e.mapping.trim().length > 0) {
var n = e.mapping.trim();
t = n.charAt(0).toUpperCase() + n.substring(1);
} else {
t = '(Unknown)';
}
if (this.padMapping.innerHTML != t) {
this.padMapping.innerHTML = t;
}
},
update: function () {
var e = this.mapping;
this.left.setVisible(e.isLeft(0));
this.right.setVisible(e.isRight(0));
M this.up.setVisible(e.isUp(0));
this.down.setVisible(e.isDown(0));
this.b1.setVisible(e.isButton1());
this.b2.setVisible(e.isButton2());
var t = ht.Pads.getMapping(this.index).getPad();
this.updatePadId(t);
this.updatePadMapping(t);
},
addValueCell: function (e) {
var t = document.createElement('div');
t.className = 'gamepad-cell-value';
e.appendChild(t);
return t;
},
addNameCelMl: function (e, t) {
var n = document.createElement('div');
n.className = 'gamepad-cell-name';
e.appendChild(n);
n.appendChild(document.createTextNode(t));
},
onHide: function () {},
doCreateElementBeforeTitle: function (e) {
var t = document.createElement('div');
t.className = 'gamepad-grid';
this.addNameCell(t, 'Gamepad:');
this.padId = this.addValueCell(t);
this.addNameCell(t, 'Mapping:');
Mthis.padMapping = this.addValueCell(t);
e.appendChild(t);
},
doCreateElement: function () {
var e = bt.prototype.doCreateElement.call(this);
var t = this.inner;
t.appendChild(this.left.createElement());
t.appendChild(this.right.createElement());
t.appendChild(this.up.createElement());
t.appendChild(this.down.createElement());
t.appendChild(this.b1.createElement());
t.appendChild(this.b2.createElement());
M return e;
},
});
yt.prototype = Object.create(bt.prototype);
pt(yt.prototype, {
getClass: function () {
return bt.prototype.getClass.call(this) + ' controller-keyboard';
},
onShow: function (e, t) {
this.map = t;
this.keys = e;
this.left.onShow(e, t.getLeft());
this.right.onShow(e, t.getRight());
this.up.onShow(e, t.getUp());
this.down.onShow(e, t.getDown());
this.b1.onShow(e, t.getBMutton1());
this.b2.onShow(e, t.getButton2());
},
onHide: function () {
for (var e = 0; e < this.targets.length; e++) {
this.targets[e].onHide();
}
},
onOk: function () {
var e = this.map;
e.setUp(this.up.getValue());
e.setLeft(this.left.getValue());
e.setRight(this.right.getValue());
e.setDown(this.down.getValue());
e.setButton1(this.b1.getValue());
e.setButton2(this.b2.getMValue());
},
onDefaults: function () {
var e = this.map;
this.up.setValue(e.getDefaultUp());
this.left.setValue(e.getDefaultLeft());
this.right.setValue(e.getDefaultRight());
this.down.setValue(e.getDefaultDown());
this.b1.setValue(e.getDefaultButton1());
this.b2.setValue(e.getDefaultButton2());
},
doCreateElement: function () {
var e = bt.prototype.doCreateElement.call(this);
for (var t = 0; t M< this.targets.length; t++) {
this.inner.appendChild(this.targets[t].createElement());
}
return e;
},
});
xt.prototype = Object.create(Le.prototype);
pt(xt.prototype, {
getClass: function () {
return 'console__button console__button--up';
},
doCreateElement: function () {
var e = document.createElement('div');
e.appendChild(document.createTextNode(this.title));
return e;
},
});
M At.prototype = Object.create(xt.prototype);
pt(At.prototype, {
getValue: function () {
return this.target.getValue();
},
setValue: function (e) {
this.target.setValue(e);
},
onShow: function (e, t) {
this.target.onShow(e, t);
},
onHide: function () {
this.target.onHide();
},
doCreateElement: function () {
var e = xt.prototype.doCreateElement.call(this);
e.appendChild(this.targMet.createElement());
return e;
},
});
kt.prototype = Object.create(xt.prototype);
pt(kt.prototype, {
onShow: function () {
this.setFocusVisible(false);
},
setFocusVisible: function (e) {
this.el.className =
'console__button console__button--' + (e ? 'down' : 'up');
},
doCreateElement: function () {
return xt.prototype.doCreateElement.call(this);
},
});
St.prototype = Object.creatMe(Le.prototype);
pt(St.prototype, {
createPauseButton: function (e) {},
createSelectButton: function (e) {},
createResetButton: function (e) {},
getClass: function () {
return 'console';
},
doCreateElement: function () {
var e = document.createElement('div');
var t = document.createElement('div');
e.appendChild(t);
t.className = 'controller__title';
t.appendChild(document.createTextNode('Console ButtonsM'));
var n = document.createElement('div');
e.appendChild(n);
n.className = 'console__inner';
n.appendChild(this.selectButton.createElement());
n.appendChild(this.resetButton.createElement());
n.appendChild(this.pauseButton.createElement());
return e;
},
});
Ct.prototype = Object.create(St.prototype);
pt(Ct.prototype, {
createPauseButton: function (e) {
return new At(e);
},
createSelectBMutton: function (e) {
return new At(e);
},
createResetButton: function (e) {
return new At(e);
},
onShow: function (e) {
var t = ht.Keyboard;
this.kb = t;
this.resetButton.onShow(e, t.getResetKey());
this.selectButton.onShow(e, t.getSelectKey());
this.pauseButton.onShow(e, t.getPauseKey());
},
onHide: function () {
for (var e = 0; e < this.buttons.length; e++) {
this.buttons[e]M.onHide();
}
},
onOk: function () {
var e = this.kb;
e.setResetKey(this.resetButton.getValue());
e.setSelectKey(this.selectButton.getValue());
e.setPauseKey(this.pauseButton.getValue());
},
onDefaults: function () {
var e = this.kb;
this.resetButton.setValue(e.defResetKey);
this.selectButton.setValue(e.defSelectKey);
this.pauseButton.setValue(e.defPauseKey);
},
});
Et.prototyMpe = Object.create(St.prototype);
pt(Et.prototype, {
createPauseButton: function (e) {
return new kt(e);
},
createSelectButton: function (e) {
return new kt(e);
},
createResetButton: function (e) {
return new kt(e);
},
update: function () {
var e = this.mapping;
this.selectButton.setFocusVisible(e.isSelect());
this.resetButton.setFocusVisible(e.isReset());
this.pauseButton.setFocusVisiMble(e.isPause());
},
onShow: function () {
this.mapping = ht.Pads.getMapping(0);
for (var e = 0; e < this.buttons.length; e++) {
this.buttons[e].onShow();
}
},
});
var _t = new at('Display');
pt(_t, {
filterSwitch: null,
sizeSelect: null,
arSelect: null,
palSelect: null,
fsSelect: null,
onShow: function () {
var e = ht.Video;
this.vid = e;
this.filterSwitcMh.setValue(e.isFilterEnabled());
this.sizeSelect.setValue(e.getScreenSize().toString());
this.arSelect.setValue(e.getScreenRatio().toString());
this.fsSelect.setValue(e.getFullscreenMode().toString());
this.palSelect.setValue(ht.Region.getPaletteIndex().toString());
},
onOk: function () {
this.vid.setFilterEnabled(this.filterSwitch.getValue());
this.vid.setScreenSize(parseFloat(this.sizeSelect.getValue()));
this.vid.setScreenRatioM(parseFloat(this.arSelect.getValue()));
this.vid.setFullscreenMode(parseInt(this.fsSelect.getValue()));
ht.Region.setPaletteIndex(parseInt(this.palSelect.getValue()));
this.vid.initPalette8();
},
onDefaults: function () {
this.filterSwitch.setValue(this.vid.getFilterEnabledDefault());
this.sizeSelect.setValue(this.vid.getScreenSizeDefault().toString());
this.arSelect.setValue(this.vid.getScreenRatioDefault().toString());
this.palSMelect.setValue(
ht.Region.getPaletteIndexDefault().toString()
);
this.fsSelect.setValue(
this.vid.getFullscreenModeDefault().toString()
);
},
createTabContent: function (e) {
var t = document.createElement('div');
t.innerHTML =
'<div class="tabcontent__title">Display Settings</div>\n<p class="center">The following settings are used to control the screen display.</p>';
e.appendChild(t);
var n = nMew lt();
n.addCell(new st('Screen size:'));
this.sizeSelect = new dt({
'2x': '2',
'2.25x': '2.25',
'2.5x': '2.5',
'2.75x': '2.75',
'3x': '3',
'3.25x': '3.25',
'3.5x': '3.5',
'3.75x': '3.75',
'4x': '4',
});
n.addCell(new ut(this.sizeSelect));
n.addCell(new st('Aspect ratio:'));
this.arSelect = new dt({
'Pixel perfect (1:1 PAR)': '1',
M 'Atari 7800 (6:7 PAR)': '0.857',
'Widescreen (16:9)': '1.334',
'Ultra-widescreen (2.37:1)': '1.778',
});
n.addCell(new ut(this.arSelect));
n.addCell(new st('Fullscreen:'));
this.fsSelect = new dt({
'Fill screen': '0',
'Integer scaling (height)': '1',
});
n.addCell(new ut(this.fsSelect));
n.addCell(new st('Palette:'));
this.palSelect = new dt({
'ProSystem default': '0',
M OptGroup1: 'Dark',
'Cool (Dark)': '1',
'Warm (Dark)': '2',
'Hot (Dark)': '3',
OptGroup2: 'Light',
'Cool (Light) ': '4',
'Warm (Light) ': '5',
'Hot (Light) ': '6',
});
n.addCell(new ut(this.palSelect));
n.addCell(new st('Apply filter:'));
this.filterSwitch = new ct('Toggle Filter');
n.addCell(new ut(this.filterSwitch));
e.appendChild(n.createElement());
},M
});
var It = new at('High Scores');
pt(It, {
enableSwitch: null,
locationSelect: null,
fallbackSwitch: null,
desc: null,
onShow: function () {
this.updateDesc();
this.enableSwitch.setValue(ft.getEnabled());
this.locationSelect.setValue(ft.getGlobal() ? '1' : '0');
this.fallbackSwitch.setValue(ft.isLocalFallback());
this.enableSwitch.onClick();
},
onOk: function () {
ft.setEnabled(thMis.enableSwitch.getValue());
ft.setGlobal(this.locationSelect.getValue() == '1');
ft.setLocalFallback(this.fallbackSwitch.getValue());
},
onDefaults: function () {
this.enableSwitch.setValue(ft.getEnabledDefault());
this.locationSelect.setValue(ft.getGlobalDefault() ? '1' : '0');
this.fallbackSwitch.setValue(ft.getLocalFallbackDefault());
this.enableSwitch.onClick();
},
updateDesc() {
var e =
'<div clasMs="tabcontent__title">High Score Settings</div>\n<p class="center">The following settings control high score persistence.</p>';
if (ft.getDigest()) {
e +=
'<p class="center">Changes will not take effect until the next game is loaded.</p>';
}
this.desc.innerHTML = e;
},
createTabContent: function (e) {
var t = this;
this.desc = document.createElement('div');
e.appendChild(this.desc);
this.updateDesc();
M var n = new lt();
n.addCell(new st('Save scores:'));
this.enableSwitch = new ct('Toggle Filter');
n.addCell(new ut(this.enableSwitch));
var r = new st('Save location:');
n.addCell(r);
this.locationSelect = new dt({
'Local (this device only)': '0',
'Global (worldwide leaderboard)': '1',
});
this.locationSelect.setWidth(17);
var i = new ut(this.locationSelect);
n.addCell(i);
varM o = new st('Local fallback:');
n.addCell(o);
this.fallbackSwitch = new ct('Local Fallback');
var a = new ut(this.fallbackSwitch);
n.addCell(a);
e.appendChild(n.createElement());
this.enableSwitch.onClick = function () {
var e = this.getValue();
r.setVisible(e);
i.setVisible(e);
t.locationSelect.onChange();
};
this.locationSelect.onChange = function () {
var e = this.getValue()M == '1' && t.enableSwitch.getValue();
o.setVisible(e);
a.setVisible(e);
};
},
});
var Dt = new at('Gamepads');
pt(Dt, {
intervalId: null,
controller1: new vt('Controller 1', 0),
controller2: new vt('Controller 2', 1),
console: new Et(),
onShow: function () {
this.controller1.onShow();
this.controller2.onShow();
this.console.onShow();
var e = this;
this.intervalId = seMtInterval(function () {
ht.Pads.poll();
e.controller1.update();
e.controller2.update();
e.console.update();
}, 50);
},
onHide: function () {
if (this.intervalId != null) {
clearInterval(this.intervalId);
}
},
createTabContent: function (e) {
var t = document.createElement('div');
t.innerHTML =
'<div class="tabcontent__title">Gamepad Compatibility</div>\n<p class="Mcenter">This page provides the ability to <b class="callout">test compatibility</b> with connected gamepads.</p>\n<p class="center">Connect gamepads and test if they are mapped correctly (by pressing buttons, D-pad, etc.).</p>';
e.appendChild(t);
var n = document.createElement('div');
e.appendChild(n);
n.className = 'controls-container';
n.appendChild(this.controller1.createElement());
n.appendChild(this.controller2.createElement());
e.appendChilMd(this.console.createElement());
},
});
var Bt = new at('Keyboard');
pt(Bt, {
controller1: new yt('Controller 1'),
controller2: new yt('Controller 2'),
console: new Ct(),
onShow: function () {
var e = ht.Keyboard;
var t = e.p1KeyMap;
var n = e.p2KeyMap;
var r = ht.Keys.Keys;
this.controller1.onShow(r, t);
this.controller2.onShow(r, n);
this.console.onShow(r);
},
onOk: functMion () {
this.controller1.onOk();
this.controller2.onOk();
this.console.onOk();
},
onHide: function () {
this.controller1.onHide();
this.controller2.onHide();
this.console.onHide();
},
onDefaults: function () {
this.controller1.onDefaults();
this.controller2.onDefaults();
this.console.onDefaults();
},
createTabContent: function (e) {
var t = document.createElement('div'M);
t.innerHTML =
'<div class="tabcontent__title">Keyboard Mappings</div>\n<p class="center">Click on the <b class="callout">red box</b> near a control to select it for mapping.</p>\n<p class="center">Once selected, press the <b class="callout">key</b> you would like to map to the control.</p>';
e.appendChild(t);
var n = document.createElement('div');
e.appendChild(n);
n.className = 'controls-container';
n.style = 'margin-top:35px';
n.MappendChild(this.controller1.createElement());
n.appendChild(this.controller2.createElement());
e.appendChild(this.console.createElement());
},
});
var Mt = new at('Advanced');
pt(Mt, {
xmSelect: null,
vsyncSwitch: null,
skipSelect: null,
onShow: function () {
this.xmSelect.setValue(gt.GetXmMode().toString());
this.vsyncSwitch.setValue(ht.Main.isVsyncEnabled());
this.skipSelect.setValue(ht.Main.getSkipLevel()M.toString());
},
onOk: function () {
gt.SetXmMode(parseInt(this.xmSelect.getValue()));
ht.Main.setVsyncEnabled(this.vsyncSwitch.getValue());
ht.Main.setSkipLevel(parseInt(this.skipSelect.getValue()));
},
onDefaults: function () {
this.xmSelect.setValue(gt.GetXmModeDefault().toString());
this.vsyncSwitch.setValue(ht.Main.getVsyncEnabledDefault());
this.skipSelect.setValue(ht.Main.getSkipLevelDefault().toString());
},
M createTabContent: function (e) {
var t = document.createElement('div');
t.innerHTML =
'<div class="tabcontent__title">Advanced</div>\n<p class="center">The following settings provide the ability to configure advanced features.</p>';
e.appendChild(t);
var n = new lt();
var r = new st('Expansion module (XM):');
n.addCell(r);
this.xmSelect = new dt({
'(Automatic)': '2',
Enabled: '1',
Disabled: M'0',
});
var i = new ut(this.xmSelect);
n.addCell(i);
n.addCell(new st('Frame skipping:'));
this.skipSelect = new dt({
'(None)': '0',
Low: '1',
'Medium (50%)': '2',
High: '3',
});
n.addCell(new ut(this.skipSelect));
n.addCell(new st('Vertical sync:'));
this.vsyncSwitch = new ct('Vertical Sync');
n.addCell(new ut(this.vsyncSwitch));
e.appendChild(n.createElemenMt());
},
});
var Tt = new ot();
Tt.addTab(_t);
Tt.addTab(Bt, true);
Tt.addTab(Dt);
Tt.addTab(It);
Tt.addTab(Mt);
Rt.prototype = Object.create(it.prototype);
pt(Rt.prototype, {
selectKeyboardTab() {
this.getTabSet().onTabClick(Bt);
},
getTabSet: function () {
return Tt;
},
onOk: function () {
it.prototype.onOk.call(this);
Z();
},
});
d(
new c('siteIMnit', function (e) {
ht = e.js7800;
ft = e.HighScore;
gt = ht.Cartridge;
})
);
var Gt = qe;
var Lt = We;
var Qt = Ve;
var zt = f;
Ft.prototype = Object.create(Qt.prototype);
zt(Ft.prototype, {
root: null,
parent: null,
loaded: false,
onTabShow: function () {
if (!this.loaded) {
var e = this;
var t = function (t) {
var n = 'An error occurred attempting to loaMd page: ' + e.url;
if (t) {
n += ' (' + t + ')';
}
u('showError', n);
};
var n = new XMLHttpRequest();
n.open('GET', this.url);
n.onload = function () {
if (n.status == 200) {
e.loaded = true;
e.parent.classList.remove('loader-container');
e.parent.style.display = 'none';
e.parent.innerHTML = n.responseText;
setTimeoutM(function () {
e.parent.style.display = 'block';
}, 100);
} else {
t(n.status + ': ' + n.statusText);
}
};
n.onerror = function () {
t();
};
setTimeout(function () {
n.send();
}, 500);
}
},
createTabContent: function (e) {
this.root = e;
var t = document.createElement('div');
this.parent = t;
M t.className = 'loader-container';
var n = document.createElement('div');
n.className = 'loader';
t.appendChild(n);
e.appendChild(t);
},
});
var Nt = new Ft('Overview', 'help/overview.html');
var Ut = new Ft('Cartridges', 'help/carts.html');
var Kt = new Ft('Controls Bar', 'help/cbar.html');
var Yt = new Ft('Settings Dialog', 'help/settings.html');
var Ot = new Ft('High Scores', 'help/highscores.html');
var jt = new Lt();M
jt.addTab(new rt(), true);
jt.addTab(Nt);
jt.addTab(Ut);
jt.addTab(Kt);
jt.addTab(Yt);
jt.addTab(Ot);
Pt.prototype = Object.create(Gt.prototype);
zt(Pt.prototype, {
cssLoaded: false,
getTabSet: function () {
return jt;
},
onShow: function () {
if (!this.cssLoaded) {
this.cssLoaded = true;
var e = document.createElement('link');
e.type = 'text/css';
e.rel = 'stylesheet'M;
e.href = 'help/css/help.css';
document.head.appendChild(e);
}
Gt.prototype.onShow.call(this);
},
});
r(2);
r(6);
r.d(n, 'init', function () {
return ln;
});
var Ht = B;
var Wt = M;
var Vt = T;
var qt = function (e) {
if (
(e = new RegExp('[?&]' + encodeURIComponent(e) + '=([^&]*)').exec(
location.search
))
) {
return decodeURIComponent(e[1]);
M }
};
var Jt = function (e) {
if (
(e = new RegExp('[?&]' + encodeURIComponent(e) + '=(.*)').exec(
location.search
))
) {
return decodeURIComponent(e[1]);
}
};
var Zt = false;
var Xt = false;
var $t = null;
var en = null;
var tn = function (e, t) {
if (t == null) {
t = true;
}
if (t) {
console.error(e);
}
Vt(e);
};
var rn = nu*ll;
var on = null;
},
]);
});
h �s"�ÒUR`�p!$��x�=`�#L��Dʏ��(� cordtext/javascript M(function (e, t) {
if (typeof exports == 'object' && typeof module == 'object') {
module.exports = t();
} else if (typeof define == 'function' && define.amd) {
define('site', [], t);
} else if (typeof exports == 'object') {
exports.site = t();
} else {
e.site = t();
}
})(window, function () {
return (function (e) {
function n(r) {
if (t[r]) {
return t[r].exports;
}
var i = (t[r] = { i: r, l: false, exports: {} });
e[r].call(i.exports, i, i.exports, n);M
i.l = true;
return i.exports;
}
var t = {};
n.m = e;
n.c = t;
n.d = function (e, t, r) {
if (!n.o(e, t)) {
Object.defineProperty(e, t, { enumerable: true, get: r });
}
};
n.r = function (e) {
if (typeof Symbol != 'undefined' && Symbol.toStringTag) {
Object.defineProperty(e, Symbol.toStringTag, { value: 'Module' });
}
Object.defineProperty(e, '__esModule', { value: true });
};
n.t = function (e, t) {
if (1 & t) {
M e = n(e);
}
if (8 & t) {
return e;
}
if (4 & t && typeof e == 'object' && e && e.__esModule) {
return e;
}
var r = Object.create(null);
n.r(r);
Object.defineProperty(r, 'default', { enumerable: true, value: e });
if (2 & t && typeof e != 'string') {
for (var i in e) {
n.d(
r,
i,
function (t) {
return e[t];
}.bind(null, i)
);
}
}
retuMrn r;
};
n.n = function (e) {
var t =
e && e.__esModule
? function () {
return e.default;
}
: function () {
return e;
};
n.d(t, 'a', t);
return t;
};
n.o = function (e, t) {
return Object.prototype.hasOwnProperty.call(e, t);
};
n.p = '';
return n((n.s = 8));
})([
function (e, t, n) {
'use strict';
function l(e) {
var t = -1;
for (var n = 0; n < a.lengtMh; n++) {
if (a[n].identifier === e) {
t = n;
break;
}
}
return t;
}
function s(e, t) {
var n = {};
var r = [];
for (var i = 0; i < e.length; i++) {
var o = e[i];
var s = t.base ? o[0] + t.base : o[0];
var c = n[s] || 0;
var d = ''.concat(s, ' ').concat(c);
n[s] = c + 1;
var u = l(d);
var p = { css: o[1], media: o[2], sourceMap: o[3] };
if (uM === -1) {
a.push({ identifier: d, updater: m(p, t), references: 1 });
} else {
a[u].references++;
a[u].updater(p);
}
r.push(d);
}
return r;
}
function c(e) {
var t = document.createElement('style');
var r = e.attributes || {};
if (r.nonce === void 0) {
var i = n.nc;
if (i) {
r.nonce = i;
}
}
Object.keys(r).forEach(function (e) {
t.MsetAttribute(e, r[e]);
});
if (typeof e.insert == 'function') {
e.insert(t);
} else {
var a = o(e.insert || 'head');
if (!a) {
throw new Error(
"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."
);
}
a.appendChild(t);
}
return t;
}
function p(e, t, n, r) {
var i = n
? ''
: r.media
? '@mMedia '.concat(r.media, ' {').concat(r.css, '}')
: r.css;
if (e.styleSheet) {
e.styleSheet.cssText = u(t, i);
} else {
var o = document.createTextNode(i);
var a = e.childNodes;
if (a[t]) {
e.removeChild(a[t]);
}
if (a.length) {
e.insertBefore(o, a[t]);
} else {
e.appendChild(o);
}
}
}
function h(e, t, n) {
var r = n.css;
var i = n.media;
M var o = n.sourceMap;
if (i) {
e.setAttribute('media', i);
} else {
e.removeAttribute('media');
}
if (o && btoa) {
r += '\n/*# sourceMappingURL=data:application/json;base64,'.concat(
btoa(unescape(encodeURIComponent(JSON.stringify(o)))),
' */'
);
}
if (e.styleSheet) {
e.styleSheet.cssText = r;
} else {
while (e.firstChild) {
e.removeChild(e.firstChild);
M }
e.appendChild(document.createTextNode(r));
}
}
function m(e, t) {
var n;
var r;
var i;
if (t.singleton) {
var o = g++;
n = f || (f = c(t));
r = p.bind(null, n, o, false);
i = p.bind(null, n, o, true);
} else {
n = c(t);
r = h.bind(null, n, t);
i = function () {
var e = n;
if (e.parentNode === null) {
return;
}
e.MparentNode.removeChild(e);
};
}
r(e);
return function (t) {
if (t) {
if (
t.css === e.css &&
t.media === e.media &&
t.sourceMap === e.sourceMap
) {
return;
}
r((e = t));
} else {
i();
}
};
}
var r;
var i = function () {
if (r === void 0) {
r = Boolean(window && document && document.all && !windoMw.atob);
}
return r;
};
var o = (function () {
var e = {};
return function (t) {
if (e[t] === void 0) {
var n = document.querySelector(t);
if (
window.HTMLIFrameElement &&
n instanceof window.HTMLIFrameElement
) {
try {
n = n.contentDocument.head;
} catch (e) {
n = null;
}
}
e[t] = n;
}
M return e[t];
};
})();
var a = [];
var d = [];
var u = function (e, t) {
d[e] = t;
return d.filter(Boolean).join('\n');
};
var f = null;
var g = 0;
e.exports = function (e, t) {
if (!(t = t || {}).singleton && typeof t.singleton != 'boolean') {
t.singleton = i();
}
var n = s((e = e || []), t);
return function (e) {
e = e || [];
if (Object.prototype.toString.call(e) === '[object ArMray]') {
for (var r = 0; r < n.length; r++) {
var i = l(n[r]);
a[i].references--;
}
var o = s(e, t);
for (var c = 0; c < n.length; c++) {
var d = l(n[c]);
if (a[d].references === 0) {
a[d].updater();
a.splice(d, 1);
}
}
n = o;
}
};
};
},
function (e, t, n) {
'use strict';
e.exports = function (e) {
M var t = [];
t.toString = function () {
return this.map(function (t) {
var n = (function (e, t) {
var n = e[1] || '';
var r = e[3];
if (!r) {
return n;
}
if (t && typeof btoa == 'function') {
a = r;
l = btoa(unescape(encodeURIComponent(JSON.stringify(a))));
s =
'sourceMappingURL=data:application/json;charset=utf-8;base64,'.concat(
M l
);
var i = '/*# '.concat(s, ' */');
var o = r.sources.map(function (e) {
return '/*# sourceURL='
.concat(r.sourceRoot || '')
.concat(e, ' */');
});
return [n].concat(o).concat([i]).join('\n');
}
var a;
var l;
var s;
return [n].join('\n');
})(t, e);
if (t[2]) {
M return '@media '.concat(t[2], ' {').concat(n, '}');
} else {
return n;
}
}).join('');
};
t.i = function (e, n, r) {
if (typeof e == 'string') {
e = [[null, e, '']];
}
var i = {};
if (r) {
for (var o = 0; o < this.length; o++) {
var a = this[o][0];
if (a != null) {
i[a] = true;
}
}
}
for (vaMr l = 0; l < e.length; l++) {
var s = [].concat(e[l]);
if (!r || !i[s[0]]) {
if (n) {
if (s[2]) {
s[2] = ''.concat(n, ' and ').concat(s[2]);
} else {
s[2] = n;
}
}
t.push(s);
}
}
};
return t;
};
},
function (e, t, n) {
var r = n(0);
var i = n(3);
if (typeof (i = i.__esModule ? i.default : i) == 'strMing') {
i = [[e.i, i, '']];
}
var o = { insert: 'head', singleton: false };
r(i, o);
var a = i.locals ? i.locals : {};
e.exports = a;
},
function (e, t, n) {
var r = n(1);
var i = n(4);
var o = n(5);
t = r(false);
var a = i(o);
t.push([
e.i,
"/* All sizing currently done in em with the exception of command bar \r\n components (which are in px) */\r\n\r\nbody {\r\n background-color: #1E1E1E;\r\n font-family: 'RobotoM', Arial, Helvetica, sans-serif; /* Roboto */\r\n /*font-family: Arial, Helvetica, sans-serif; */\r\n font-size: 75%;\r\n margin: 5em 0 0 0;\r\n -webkit-user-select: none;\r\n -moz-user-select: -moz-none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n}\r\n\r\nselect, button {\r\n font-family: 'Roboto', Arial, Helvetica, sans-serif; /* Roboto */\r\n /*font-family: Arial, Helvetica, sans-serif;*/\r\n}\r\n\r\nimg {\r\n -webkit-user-select: none;\r\n -khtml-user-select: none;\r\n -moz-user-select: nMone;\r\n -o-user-select: none;\r\n user-select: none;\r\n}\r\n\r\n.break-word {\r\n overflow-wrap: break-word;\r\n}\r\n\r\n.header {\r\n top: 0;\r\n position: fixed;\r\n background-color: #1B1B1B;\r\n color: #BBBBBB;\r\n padding: .50em;\r\n font-size: 1.25em;\r\n width: 100%;\r\n z-index: 1;\r\n text-align: center;\r\n display: block;\r\n box-shadow: 0 0 .54em 0 rgba(0, 0, 0, 0.4), 0 0 1.34em 0 rgba(0, 0, 0, 0.39);\r\n}\r\n\r\n.header__label {\r\n margin-right: .54em;\r\n vertical-align: middle;\r\nM}\r\n\r\n.header__logo {\r\n vertical-align: middle;\r\n width: 1.34m;\r\n height: 1.34em;\r\n}\r\n\r\n#js7800__target {\r\n position: relative;\r\n text-align: center;\r\n}\r\n\r\n.controls {\r\n display: flex;\r\n justify-content: center;\r\n margin-top: 1.8em;\r\n}\r\n\r\n.controls-button {\r\n width: 3em;\r\n height: 3em;\r\n margin: 0 .8em;\r\n background: #282828;\r\n border-radius: .75em;\r\n box-shadow: 0 .34em .67em 0 rgba(0, 0, 0, 0.4), 0 .5em 1.67em 0 rgba(0, 0, 0, 0.39);\r\n opacity: .8;\Mr\n}\r\n\r\n.controls-button:hover {\r\n opacity: 1;\r\n}\r\n\r\n.controls-button__img {\r\n width: 2em;\r\n height: 2em;\r\n padding: .5em .5em;\r\n margin: 0;\r\n cursor: pointer;\r\n opacity: .7;\r\n}\r\n\r\n.controls-button__img:hover {\r\n opacity: .9;\r\n}\r\n\r\n.controls-button__upload {\r\n display: inline-block;\r\n cursor: pointer;\r\n}\r\n\r\n.controls-button__upload>input[type=\"file\"] {\r\n display: none;\r\n}\r\n\r\n/* Custom Select */\r\n.cartselect {\r\n opacity: .8;\r\n position: relMative;\r\n display: flex;\r\n width: 25em;\r\n height: 3em;\r\n line-height: 3em;\r\n background: black;\r\n overflow: hidden;\r\n border-radius: .75em;\r\n box-shadow: 0 .34em .67em 0 rgba(0, 0, 0, 0.4), 0 .5em 1.67em 0 rgba(0, 0, 0, 0.39);\r\n margin: 0 .8em;\r\n}\r\n\r\n.cartselect:hover {\r\n opacity: 1;\r\n}\r\n\r\n/* Arrow */\r\n.cartselect::after {\r\n content: '\\25BC';\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n padding: 0 1em;\r\n color: #ce2f37;\r\n background: #282828;\r\n cuMrsor: pointer;\r\n pointer-events: none;\r\n}\r\n\r\n/* Reset Select */\r\n.cartselect select {\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n -ms-appearance: none;\r\n appearance: none;\r\n outline: 0;\r\n box-shadow: none;\r\n border: 0 !important;\r\n background: black;\r\n background-image: none;\r\n flex: 1;\r\n padding: 0 1em;\r\n color: #BBBBBB;\r\n cursor: pointer;\r\n font-size: 1.2em;\r\n}\r\n\r\n/* Remove IE arrow */\r\n.cartselect select::-ms-expand {\r\n display: none;\r\nM}\r\n\r\n.cartselect select optgroup {\r\n font-weight: bold;\r\n color: #777777;\r\n}\r\n\r\n.cartselect select option {\r\n font-weight: normal;\r\n color: #BBBBBB;\r\n}\r\n\r\n#content {\r\n clear: both;\r\n margin-top: 4.5em;\r\n}\r\n\r\n.drop__div {\r\n position: fixed;\r\n z-index: -999;\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n/* Command bar components (uses px) */\r\n\r\n.fsselect {\r\n opacity: .8;\r\n font-size: 11px;\r\n color: #fff;\r\n position: relative;\Mr\n display: flex;\r\n width: 190px;\r\n height: 20px;\r\n line-height: 20px;\r\n background: black;\r\n overflow: hidden;\r\n border-radius: 4px;\r\n border: 1px solid #666;\r\n margin: 0 15px 0 15px;\r\n display: none;\r\n}\r\n\r\n.fsselect:hover {\r\n opacity: 1;\r\n}\r\n\r\n/* Arrow */\r\n.fsselect::after {\r\n content: '\\25BC';\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n padding: 0 3px;\r\n font-size: 11px;\r\n color: #ce2f37;\r\n cursor: pointer;\r\n pointer-events: none;\r\n}\rM\n\r\n/* Reset Select */\r\n.fsselect select {\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n -ms-appearance: none;\r\n appearance: none;\r\n outline: 0;\r\n box-shadow: none;\r\n border: 0 !important;\r\n background: black;\r\n background-image: none;\r\n padding: 0 10px;\r\n color: #CCC;\r\n cursor: pointer;\r\n font-size: 11px;\r\n flex: 1;\r\n}\r\n\r\n/* Remove IE arrow */\r\n.fsselect select::-ms-expand {\r\n display: none;\r\n}\r\n\r\n.fsselect select optgroup {\r\n font-weight: Mbold;\r\n font-size: 12px;\r\n color: #777777;\r\n}\r\n\r\n.fsselect select option {\r\n font-weight: normal;\r\n font-size: 12px;\r\n color: #BBBBBB;\r\n}\r\n\r\n.modal {\r\n display: none;\r\n position: fixed;\r\n z-index: 1;\r\n padding-top: 7.5em;\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n overflow: auto;\r\n background-color: rgb(0, 0, 0);\r\n background-color: rgba(0, 0, 0, 0.6);\r\n text-align: left;\r\n}\r\n\r\n.modal-content {\r\n position: relative;\r\n background-cMolor: #1A1A1A;\r\n margin: auto;\r\n border-left: 1em solid #202020;\r\n border-right: 1em solid #202020;\r\n width: 65em;\r\n box-shadow: 0 .34em .67em 0 rgba(0, 0, 0, 0.2), 0 .5em 1.67em 0 rgba(0, 0, 0, 0.19);\r\n -webkit-animation-name: animatetop;\r\n -webkit-animation-duration: 0.6s;\r\n animation-name: animatetop;\r\n animation-duration: 0.6s;\r\n border-radius: .67em;\r\n}\r\n\r\n@-webkit-keyframes animatetop {\r\n from {\r\n /* top: -25em; */\r\n opacity: 0\r\n }\r\n\r\n to {\r\n /* toMp: 0; */\r\n opacity: 1\r\n }\r\n}\r\n\r\n@keyframes animatetop {\r\n from {\r\n /* top: -25em; */\r\n opacity: 0\r\n }\r\n\r\n to {\r\n /* top: 0; */\r\n opacity: 1\r\n }\r\n}\r\n\r\n.modal-header {\r\n padding: .625em;\r\n background-color: #202020;\r\n color: #BBBBBB;\r\n font-size: 1.33em;\r\n font-weight: bold;\r\n\r\n}\r\n\r\n.modal-body {\r\n display: flex;\r\n align-items: stretch;\r\n}\r\n\r\n.modal-footer {\r\n padding: .834em .4167em;\r\n background-color: #202020;\r\n colorM: white;\r\n display: flex;\r\n justify-content: flex-end;\r\n}\r\n\r\n.tabset {\r\n display: flex;\r\n align-items: stretch;\r\n width: 100%;\r\n}\r\n\r\n.tab {\r\n padding: .667em;\r\n background-color: #171717;\r\n width: 10.5em;\r\n min-width: 10.5em;\r\n min-height: 35.67em;\r\n flex-grow: 0;\r\n}\r\n\r\n.tab button {\r\n opacity: .8;\r\n display: block;\r\n font-weight: bold;\r\n background-color: inherit;\r\n color: #CCCCCC;\r\n padding: .62em .923em;\r\n width: 100%;\r\n border: none;\r\nM outline: none;\r\n text-align: left;\r\n cursor: pointer;\r\n transition: 0.3s;\r\n font-size: 1.1em; /* Roboto */\r\n /* font-size: 1.0834em; */\r\n margin-bottom: .385em;\r\n border-radius: .308em;\r\n}\r\n\r\n.tab button:hover {\r\n opacity: 1;\r\n background-color: #333;\r\n box-shadow: 0 .308em .615em 0 rgba(0, 0, 0, 0.2), 0 .461em 1.54em 0 rgba(0, 0, 0, 0.19);\r\n}\r\n\r\n.tab button.active {\r\n opacity: 1;\r\n background-color: #8b2429;\r\n box-shadow: 0 .308em .615em 0 rgba(0, 0, 0, 0.2), 0 M.461em 1.54em 0 rgba(0, 0, 0, 0.19);\r\n}\r\n\r\n.tabcontent {\r\n padding: 0 .857em;\r\n border-left: none;\r\n display: none;\r\n color: #BBBBBB;\r\n flex-grow: 1;\r\n font-size: 1.167em;\r\n /* 14px */\r\n min-height: 35.67em;\r\n max-height: 35.67em;\r\n height: 35.67em;\r\n overflow: auto; \r\n scrollbar-width: thin; /* \"auto\" or \"thin\" */\r\n scrollbar-color: #8b2429 #171717; \r\n}\r\n\r\n.tabcontent::-webkit-scrollbar {\r\n width: .857em; /* width of the entire scMrollbar */\r\n}\r\n.tabcontent::-webkit-scrollbar-track {\r\n background: #171717; /* color of the tracking area */\r\n}\r\n.tabcontent::-webkit-scrollbar-thumb {\r\n background-color: #8b2429; /* color of the scroll thumb */\r\n border-radius: 1.43em; /* roundness of the scroll thumb */\r\n border: .214em solid #171717; /* creates padding around scroll thumb */\r\n}\r\n\r\n.tabcontent__title {\r\n font-weight: bold;\r\n font-size: 1.143em;\r\n text-align: center;\r\n line-height: 1em;\r\n M margin: 1em 0 1em 0;\r\n line-height: 1.125;\r\n}\r\n\r\n.tabcontent a, \r\n.tabcontent a:visited\r\n.tabcontent a:active {\r\n font-weight: bold;\r\n text-decoration: none;\r\n color: #BBB; \r\n}\r\n\r\n.tabcontent a:hover {\r\n color: #DDD; \r\n}\r\n\r\n.dialog-button {\r\n background-color: #ce2f37;\r\n border: none;\r\n color: white;\r\n text-align: center;\r\n font-size: 1.13em; /* Roboto */\r\n /* font-size: 1.1em; */\r\n margin: 0 .4167em;\r\n opacity: .6;\r\n transition: .3s;\r\n text-decoMration: none;\r\n cursor: pointer;\r\n padding: .25em .167em;\r\n min-width: 4.5em;\r\n border-radius: .25em;\r\n box-shadow: 0 .334em .667em 0 rgba(0, 0, 0, 0.2), 0 .5em 1.667em 0 rgba(0, 0, 0, 0.19);\r\n}\r\n\r\n.dialog-button:hover {\r\n opacity: 1\r\n}\r\n\r\np.center {\r\n text-align: center;\r\n}\r\n\r\n.about-label {\r\n margin-right: .571em;\r\n vertical-align: middle;\r\n}\r\n\r\n.about-logo {\r\n vertical-align: middle;\r\n width: 1.286em;\r\n height: 1.286em;\r\n}\r\n\r\n.about-atari {\r\n wMidth: 240px;\r\n height: 180px;\r\n margin: 20px auto;\r\n background: black;\r\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\r\n border-radius: 12px;\r\n text-align: center;\r\n display: inline-block;\r\n position: relative;\r\n}\r\n\r\n.about-atari__v {\r\n padding: 15px;\r\n display: none;\r\n}\r\n\r\n.about-atari__top {\r\n position: absolute;\r\n /* width: 206px; */\r\n /* height: 146px; */\r\n width: 240px;\r\n height: 180px;\r\n z-index: 100;\r\n top: 0;\r\nM left: 0;\r\n opacity: 0;\r\n background-color: #555;\r\n /* border: 17px solid black; */\r\n border-radius: 12px;\r\n}\r\n\r\nb.callout {\r\n font-weight: bold;\r\n color: #ddd;\r\n}\r\n\r\n.controls-container {\r\n display: flex;\r\n overflow: hidden;\r\n justify-content: center;\r\n min-width: 600px;\r\n margin-top: 30px; /* Roboto */\r\n /* margin-top: 40px; */\r\n}\r\n\r\n.controller {\r\n width: 291px; \r\n min-width: 291px;\r\n color: #bbb; \r\n overflow: hidden;\r\n flex-grow: 1;\r\n flexM-shrink: 0;\r\n text-align: center;\r\n}\r\n\r\n.controller-keyboard {\r\n padding: 0 0 5px 5px;\r\n}\r\n\r\n.controller__title {\r\n text-align: center; \r\n padding-bottom: 10px;\r\n font-weight: bold;\r\n}\r\n\r\n.controller__inner {\r\n display: inline-block;\r\n position: relative;\r\n width: 291px;\r\n min-width: 291px;\r\n height: 151px; \r\n min-height: 151px; \r\n background-image: url(" +
a +
');\r\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0M, 0, 0, 0.19);\r\n}\r\n\r\n.controller__keytarget {\r\n text-align: center;\r\n color: #ccc;\r\n background-color: #992329;\r\n position: absolute;\r\n width: 40px;\r\n height: 20px; \r\n line-height: 20px; \r\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\r\n border-radius: 4px;\r\n overflow: hidden;\r\n font-size: 11px;\r\n}\r\n\r\n.controller__keytarget:hover {\r\n background-color: #ce2f37;\r\n color: white;\r\n}\r\n\r\n.controller__keytarget:focus {\r\n Mcolor: #292929;\r\n background-color :#ccc;\r\n}\r\n\r\n.console {\r\n padding-top:25px;\r\n}\r\n\r\n.console__inner {\r\n padding-top: 2px;\r\n display: flex;\r\n justify-content: center;\r\n}\r\n\r\n.console__button {\r\n display: inline-block;\r\n position: relative;\r\n text-align: center;\r\n font-size: 12px;\r\n font-weight: bold;\r\n width: 70px;\r\n height: 24px;\r\n line-height: 24px; \r\n border-radius: 5px;\r\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\rM\n margin: 0 8px;\r\n}\r\n\r\n.console__button--up {\r\n border: 2px solid #464448;\r\n background-color: #333;\r\n}\r\n\r\n.console__button--down {\r\n border: 2px solid #464448;\r\n background-color: #b0abb6; \r\n color: #111;\r\n}\r\n\r\n.gamepad-focus {\r\n position: absolute;\r\n width: 10px;\r\n height: 10px;\r\n border-radius: 50%;\r\n display: none;\r\n background-color: #ccc;\r\n box-shadow: 0 0 2px #ccc;\r\n}\r\n\r\n.gamepad-grid {\r\n background-color: #222; \r\n width: 270px;\r\n grid-cMolumn-gap: 5px;\r\n grid-row-gap:5px;\r\n display: inline-grid; \r\n grid-template-columns: auto 1fr; \r\n padding: 10px;\r\n border-radius: 5px;\r\n margin: 0 0 25px 1px;\r\n font-size: 12px;\r\n}\r\n\r\n.gamepad-cell-name { \r\n overflow: hidden;\r\n text-align: left; \r\n font-weight:bold;\r\n color: #777;\r\n white-space: nowrap;\r\n}\r\n\r\n.gamepad-cell-value { \r\n text-align: center;\r\n overflow: hidden;\r\n text-align: left; \r\n white-space: nowrap;\r\n}\r\n\r\n.dialog-grid {\r\n mMargin: 2em 1em 1em 1em;\r\n grid-column-gap: 1em;\r\n grid-row-gap: 1.5em;\r\n display: grid;\r\n grid-template-columns: auto 1fr;\r\n padding: 1em;\r\n line-height: 1em;\r\n background-color: #222; \r\n border-radius: .4em;\r\n /* justify-items: center; */\r\n align-items: center; \r\n}\r\n\r\n.dialog-cell-label {\r\n overflow: hidden;\r\n text-align: left;\r\n font-weight: bold;\r\n color: #7C7C7C;\r\n white-space: nowrap;\r\n /* border: 1px solid red; */\r\n}\r\n\r\n.dialog-cell-content {\r\n Mtext-align: center;\r\n overflow: hidden;\r\n text-align: left;\r\n white-space: nowrap;\r\n /* border: 1px solid red; */\r\n}\r\n\r\n.dialog-switch { /* 14px */\r\n position: relative;\r\n display: inline-block;\r\n width: 2.429em; /*34px;*/\r\n height: 1.4286em; /*20px;*/\r\n}\r\n\r\n.dialog-switch input {\r\n opacity: 0;\r\n width: 0;\r\n height: 0;\r\n}\r\n\r\n.dialog-switch-slider {\r\n position: absolute;\r\n cursor: pointer;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n backgroMund-color: #666;\r\n -webkit-transition: .4s;\r\n transition: .4s;\r\n opacity: 0.6;\r\n border-radius: 2.4286em; /* 34px;*/\r\n}\r\n\r\n.dialog-switch-slider:hover {\r\n opacity: 1\r\n}\r\n\r\n.dialog-switch-slider:before {\r\n position: absolute;\r\n content: "";\r\n height: .857em; /*12px;*/\r\n width: .857em; /*12px;*/\r\n left: .2857em; /*4px;*/\r\n bottom: .2857em; /*4px;*/\r\n background-color: #DDD;\r\n border-radius: 50%;\r\n -webkit-transition: .4s;\r\n transition: .4s;\r\n}\r\n\r\ninput:chMecked + .dialog-switch-slider {\r\n background-color: #ce2f37;\r\n}\r\n\r\ninput:checked+.dialog-switch-slider:before {\r\n -webkit-transform: translateX(1em /*14px*/);\r\n -ms-transform: translateX(1em /*14px*/);\r\n transform: translateX(1em /*14px*/); \r\n}\r\n\r\n.dialog-select { /* 14px */\r\n opacity: .8;\r\n font-size: 1em; \r\n color: #fff;\r\n position: relative;\r\n display: flex;\r\n width: 14em; /*160px;*/\r\n height: 1.8em; /*20px;*/\r\n line-height: 1.8em; /*20px;*/\r\n background: blackM;\r\n overflow: hidden;\r\n border-radius: .4em; /*4px;*/\r\n border: 1px solid #666;\r\n}\r\n\r\n.dialog-select:hover {\r\n opacity: 1;\r\n}\r\n\r\n/* Arrow */\r\n.dialog-select::after {\r\n content: \'\\25BC\';\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n padding: 0 .3em; /*3px*/\r\n font-size: 1em;\r\n color: #ce2f37;\r\n cursor: pointer;\r\n pointer-events: none;\r\n}\r\n\r\n/* Reset Select */\r\n.dialog-select select {\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n -ms-apMpearance: none;\r\n appearance: none;\r\n outline: 0;\r\n box-shadow: none;\r\n border: 0 !important;\r\n background: black;\r\n background-image: none;\r\n padding: 0 .714em;\r\n color: #CCC;\r\n cursor: pointer;\r\n /* font-size: 11px; */\r\n font-size: .9em;\r\n flex: 1;\r\n}\r\n\r\n/* Remove IE arrow */\r\n.dialog-select select::-ms-expand {\r\n display: none;\r\n}\r\n\r\n.dialog-select select optgroup {\r\n font-weight: bold;\r\n font-size: 1em;\r\n color: #777777;\r\n}\r\n\r\n.dialog-select seMlect option {\r\n font-weight: normal;\r\n font-size: 1em;\r\n color: #BBBBBB;\r\n}\r\n\r\n.about P {\r\n text-align: center;\r\n line-height: 1.5em;\r\n padding: 0 3em 0 3em;\r\n}\r\n\r\n.instructs {\r\n font-size:1.15em;\r\n border-radius:1em;\r\n opacity:0.875;\r\n padding:1em;\r\n /* background-color: #1E1E1E; */\r\n background-color: #1F1F1F; \r\n /* background-color: #9c1919; */\r\n color:#BBB;\r\n box-shadow: 0 .27em .54em 0 rgba(0, 0, 0, 0.4), 0 .4em 1.34em 0 rgba(0, 0, 0, 0.39);\r\n max-wiMdth: 40em;\r\n}\r\n\r\n.instructs .ilink {\r\n font-weight: bold;\r\n color: #CCC; \r\n}\r\n\r\n.instructs .ilink:hover {\r\n color: #FFF; \r\n cursor: pointer;\r\n}\r\n\r\n.instructs img {\r\n width: 1.7em;\r\n height: 1.7em;\r\n margin: 0 .2em 0 .3em;\r\n opacity: .8;\r\n vertical-align:middle;\r\n cursor: pointer;\r\n}\r\n\r\n.instructs img:hover {\r\n opacity: 1;\r\n} \r\n\r\n.instructs div {\r\n vertical-align:middle;\r\n line-height:1.5em;\r\n}\r\n\r\n.instructs div.ihelp {\r\n margin-top:1em;M\r\n}\r\n\r\n',
'',
]);
e.exports = t;
},
function (e, t, n) {
'use strict';
e.exports = function (e, t) {
if (!t) {
t = {};
}
if (typeof (e = e && e.__esModule ? e.default : e) == 'string') {
if (/^['"].*['"]$/.test(e)) {
e = e.slice(1, -1);
}
if (t.hash) {
e += t.hash;
}
if (/["'() \t\n]/.test(e) || t.needQuotes) {
return '"'.concat(
e.replacMe(/"/g, '\\"').replace(/\n/g, '\\n'),
'"'
);
} else {
return e;
}
} else {
return e;
}
};
},
function (e, t, n) {
'use strict';
n.r(t);
t.default =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASQAAACXCAMAAACLDtaxAAAAA3NCSVQICAjb4U/gAAABgFBMVEX///8zMzMpKSkhISFXVlnVISk6OjpHRUlMTE9aWlopIicqKzBEQ0dmZmYhIilPTVFER0hCQkIAAABfXWFmZmY/PEHXKTFsbnFHRUncIjDVIjEQEBBcXGBKSUpUU1eMi40ICAk9PEAXExjVKSiPjpKGiM4wZGRlfXWFSUlJPT06Ehok6MzuZmZneISghJyBMTE+NlJTlJzLeKjKDhINsbnEhKSoHCRAZGiF+g4QpISQBCAdxcnN0d3nlMDEQFxl8fIAAEA3fKSoVISJ7e3tNUFERCgjWMTQIEhAQAgKhpKVbYGHkMjkyBwkhBQdcXGDgLTeLISR8Hh8qMjTWIiOSJzBWExASCAIHAARVWVruJzqFHSHGKC+2JzJ0HB5JFhBLEQsQGyEJEQkpBAemqavxKS/MMzPoJymlKSkgHxoXAAjkKDu8Mi5mFhdVFxlKSUrOKTQrNTUiBAHFJju8JSqrIiWfHSqTHyp1IChBDww6Dw0HFRsgAw1qIBxoGyJFBw0NDxa7soR8AAAAgHRSTlMA////////////////d///////d////4jM/////////////////////3f//////3f///////////////////////////////////////93/////////////////////////////////////M////3f//////////////////////9bPHqQAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAWdEVYdENyZWF0aW9uIFRpbWUAMDQvMTUvMjDSGnhzAAAAIHRFWHRTb2Z0d2FyZQBNYWNyb21lZGlhIEZpcmV3b3JrcyBNWLuRKiQAABeUSURBVHic7Z33Y9pW18ejK1loWRhV8ASDQGyKwQ8bvB3HK4kz2yTNXs1OmqRNutLxr7/nSgwJJCEwsXj79PtDEmNxw/34nHPPucunTmHN/ysbnepqfv60sqD4/tWgFhZOX+pgAkSCAvL6I82iBN/pSzojX0BRAnSC7ogYIfp/RkHBJwgMtqVLCwGfMJLM/6gSgiCcngdDCiwIXn+WYSVm5MdGC4Iyf+qSIvgMH4hHnLXgdREhBN8nW8lkRFMymW2R8KIokuJI9Vqy+br/ArzC06Pd/mQEbvafU/M+JWh4DXE2fRRFTIhMNlVVktSmikE18T/VJIl4HiEO6bKB3P1274HBrznT1M4QHkHhk8SINsfvUf3wKwXdfWeKRjTgAIWYBSiSLiKDC5FmK8jMBmiAjqqRmRd72nZOIQx5AAgpWlIICQFIWjA/afm5ejEhqBPn8VE42Kkr5CIAXIafJSPSE0dq6FaUEtiTFGLatIXE6IhTIR2WZBVFdsWwUmAGnyDQxkbwXEaleTK/Rw5SCmrsZINE8Z/mpxaTU5H1sFPOJxagBsblc1D9FTCLyJGyz6XR8bdiWEi4hkaqKGIP9DAkMis0TTSl7fEJ4EPUiaoMXUfF45myCG3jZJaSIlBSiDoi69pTnJPXYxgTD/5IHjCDo8py/EI9vJQZsyQ0kXlQlIho1Wg3YjSa2o+53ZDkQkY5JScQx++SDdiJPUT5eVGpASTBTcgMpKzV9cp8RSzFQ9XWqP12xHiVWpkgpeRxG2ti/dNKI+NhWHFytTpC+dibeXjBRcgEpKSXzssHVovlEQDApYKAUk2V0LEreJJFsPB3PFOJpoBTYKg9QGg0pKZFUzjicsX5hN9+RXxPjMM34/KhNSBLzGepQcKS8YISoTz6yxciEdzyMy0E7H27uol1+PhgSMotG8KTwzAuPviNGlGCHFWJnHtjQZJE/sKF/IwNAvYnuSCaJBnI1nMrH+GDcKUlbK5mRzWjQKEqZESMnJihQvYjZKgAXJkB4holZcg7ybpIFSwd/zuBGQWlKSHWBERf1Cj44uvxkSFYvK4gQJk1fpkSjE0+koyROIrhW1ukTElDL5rsM5Z9xkM5KXKWpcSJAK5JKSOBGjkx7XNMnpeDzK87ySScsaGaAEyXfXlhwgcTiHTAwxcgWJkhUohccLS6InvobFa5RyPJKLmRieD+KRSK8Xzwb4kZCws5HRIUbuIFE5QsoSnHtKnDeMkGYsiJchSTpP1MvtdTm/QPOIayXkoCt3U5uxiSGxOVIaw5Q8YsQTtFbPgi1BqJbPx9OQC7TPrsl5X3+KzR4Sh/ikROeGGbmERMmMpLq2I498jQ+ut9cUbE08n4tDGnB+PRMvg+vF0zVDAecUk6QkZVXTuoQUzMfFSy2Ue4NW4xkfTuBYRcOLIRwuFjEwkqNxau5bOKIbH7CHxELWtDMkCEmMFiZL9qltT8mSuFs8vxtKFWiFekwVsS9EMpoTwpDaUuobn7CFBnRqzhsQIeiLZTyctIbEQu92ZkjeMeJpBkFvXarUMYApADKIK8fhaAvGDT9pDiki0RdQGRpSwgOF0ilsfg0HlLR5k5XxTxdFmlLzxNUTUM1F+N1No1yFzxJj4Rh6q3PXh+VtbSKQUoawMiY36g0zMH+j2ig4oDFCyil5RmZPI0ZC8YcTx9Xi8QKO1dDxKyLVMJt6O0uQC5N5tYZCSLaSsRMjDHWdZNhZQNESdxXL4O+ED17MyOllQkyOzAGDkwVoth+rpQjtPIEiyM4FWQN6qxdNbMTHRLpZ3XUNqSkrHkFgTpJjg8wfMWyYIIgAj3EAVjP/IUUnVBSMPQjaCHDvT9kOhz8vl4ha/2ahngFJ6PcAUoq7dDY//Ub3f/jwV6ynPMLuBDqJEItGlFMSJQD7fe8yvzcJFZMTRqLpfzhhFfLxYKWwrgQDTYzndivl0orBfS6XRdGF7FtYME6XKUwpBYhmY6c2v+PAQfv1/Q7ai7TyfRtSWjhIQGWA6MmAzwaOzHtRrE6JoiAqVYubx+HsxIpqn1dFEeHtxsIcHYJuuQAjRjzIr8Cr2kmw+vN9dh5TM9xNAKNiWZiTiWuV4yks+m4wWFhPxorVyrFdJrRAPRskwMM7KHpPpkPbYETZD8TIBYgmidILpd1zFpDtebiwNIjOZvVNYJkkeMEGKL52SO3oLhbUHEsTtTy9RxFoksN0zYQeLUiF+b2GYpsyX5fbQORduCw/Up0YoJJc3gJAuqXNU2BeBEzpP5IxgsSLYOP+TE2Xi8xjQQD4ZVoxvaNy3syBYSKbX0AWoAEjYknRGHyGQym8VxWX9FsIIkE/ZrlV7NseXPyglthgTR6+BxeZ6kt9KZXUs8umwhoag1pASh2xF6oW/iegEmRej+5h+CRMkJ1S5ye7WUnYDqtSbTvLbNBieUUUSy8fi6w2exgMdSSeGtICt1xNjKpb3TD+7eG/K0HKRewW4PzbK5WiUNNmymcx5h4oJTJnCfRehxKW1vZQIJ8O0o5QOJRNtJRtuNvlpBkn2oNyZscUtN6ut2GSrb9nTbdtpYGSuJCoVy3f4cNpKQzJKjtXUJi8FT37PgaCDHxTHurDcXa2Rje/leHdOA8qm/R9kFpIkg4JI2EpBcmNpC8Y0TgLClTV+oFvGi7S2hjW1pOODAaHxJhikkg0hGS0rRwN69ySF0osZWOK6KyXijEgRYSo5limxAd3jG+JXVGN65jSi9QZ9mVZiwgWcck3qv1NV0im07XiBZxvlDLpAsyTUa3FhzfYA8pZwWJgRQAJ9zYlLJJnRGnG1dgIE+yg8SJwMhDRHjkP1suyw1CrkH8Tpfj9QDv4GvE+KObVt7igQlxJFYnvgwUb31IgSFIHo5rXeFJpFq+nokXYmyhfK68QDo/b5tMiv08yW/qfkJ7Cmf3SCtNOoxM0wBdSHiaeyCZ9DYedYQgdkPgTlMtUVgb2MLFlIVtISSrah9QXs9t3X82KOpUbofgNW036kJDUmj1GBAq2M4VCAS//IyIxwtlsIYlS099ZBggQAqP0FfN3+tj9S2cUNK8yCYQ+CxCFItA4C+CRr/GD+2nR+XStQOlwRiGyg8RzqhroBCXF/IYAo/TWAPoTuLSfCdK9JVj8Nz5UQeViSShwOZMdTdbNYwkxuYE5EERAGvDdKDfrysaS+N7wRlFMwLBFMghDvUIbASW04R+SzGCgK3hOXxjQ9pb09gVyXs0fEfITmTMbDJnHK9mjjUiTHaSWRHY3HrMUa9BuglC0Q039ZQA6yDAEHTM8RHU2NMs4bhsmlLyxI6WWW3tSRya7QVwd725zJ9s5blXd7W1NMq2X5IkEJAIJohuxiYTi99N0LMoOHRjI5Uip520cx3s0NyIX43mgZI7PXLAdjw+tsFnLdklJm+S2UAyClJD3MwK4VQIkwFAGyZPfarVXZpr9iUnMaKqddyc+UVinyvF8/dxZ80Z/JMdZl204LE6S1kdJ2MDwtGIZ7bcQPJKxXcInebBKHCK9yyPo5+bt0ZlcupuUATVyDz5HD2yL4IOW2BVtIoqoqlqbE5hOdmdreBlx/QLCCJEez3WU3zrvToohYP3deOVcUGMit12X2/FqhWJT177iU/YaJpIRkKx/CkHYZv0kA6bvhB+WA1OwGJE+Or+lC/FaRiT0pB4NbxXNFUDmTLq6N04I9pJak+q1MqW9J/YIOIA0rl+sZEvKQEcRoIl0kdp8UEyiXKWOlAZbPtR057nSLSHzOwpSGITGWkFhZ6O0H9JQRUMo/WRdz58pMi2DXalDXbtWZcd5vD4kgJZWZHFIsCoak7+HiCI/rNZ5oP8mL9SdFSmwRiYWFAIEG6xRHOe2+jcAAN7kl5ehORMKMPJ0/wuv959IE3y4W6wQpduryMeQAiYeEMhgdPm7rDlLOD4yxIYmeTx/hZcjMOTkrlNPlrV3rlWxHOVkSn5UisWiMnQQSK5P6TJKX41pPPHH2SYFoQepdTJ/Nj/12py3KPNeUOHnQlMlxBwueUcLLNzQQjLVcq75JEoRwvFmNjm5LjiQBwOIkYTAPYmAtIsk/S1rc9qkUGBZCKxRzfoNLluNOiv41G3AuQVdXBIzhsjA74BxT0mR/JKRHsbBziCY9Dti5EbOGgDaNcWhmf0QhIIpeU1KB5gylAIgTzZVVBwmd6JKckdTsiZoMRwSvpIj7ux0cnsKPRkKA6UQOmuMRSFnctmSYBZCaCC1sPl7KHhEM2PhPpYq7WQs6Q8H1JSUmiTbbEUoYdpPpu0xhloCiDryVFpG3Rmg1IvJAuFoqWO/1caQQkvJcNKBHRnAlTlDUpyvYhReWAKiXxhVSezY0MiafbxXSZmpSRqwtdkqpE5gdmBDQLoobEylFCwoxmYAnSIJwCZAYv13AvN5C4bESK0KzlxMkAopyShbGf06/SmEb3piSSjssjl9ds5e5qIDEiSVmfLLOU1XGknqPJFK9qF7rMGiM8i+u0t2aEXN6fRILLqSgvyzk7TBgRDSyTonaN1qxc7deTxR5213IFSMVv4hvgdQYwsd7Z3G/Udm5NzfgI/0dLC/azZ0THl+iYuvN1WAl8idvGFblHDyIa/9gcQ/m4S8bOy3D9NjQEJkRDAsbEQAhMDx9MlszGFRhFVkprZzmTt7Iz9U9I4kDRMQENSI0myM55y+kuqGmn1zlH8w+xoTEjagQq8wQ2T6gszE3uP/PMYjQlJO0zCcSTZavWudU22SK73TQ/XIL+gxnM37dSMDT6d3z/QjsaHhIavH+EMr3vXkS+psSE58Zupem2Kmiakf2LM1jQ9SP9YO5oipC/B6FpD3Hm4syPyEw2ZS0vQAt/QWmgc63NMz5KmvEy7ROwcbKsvP39+eVO92XzYuPaeIN6/H6eBpSUSWjh8+fLl4c3V1d93rk38Q5wSpGnbEc3/3jx8fP/N7U+fPl25ev23l9LvO+OV8TTxcPXm4wd/3P7506fbv7w5OpSaDyddlpgOpKn72s7q4fUrP6VC+5VKpRoK3fn452epOYbP0NDCjftX7qRCVWhgf7/67vm9I2mVmM4zSVCBNmRHd2JYefNy/XHlWmpsrYT3buPDTvc/SpmtTQE3p/vOnl589K5XOlEqpUql64cKdqx+kTX4STNOANOX5bLohXbxSfXYmPKcpPIf/UXpW/firS0rXiMbqh5/3NyqluTm9kUX4R+XZxuv70sEklKYASZxyzF5e/evuLejg4pxRqdLlH99KBy4ovSeQ+iu0EF5cNDQRSqVKlaf3bk5C6fiQph2PGqsPfrwV1n/8Rkhz4VuX/5Aejf7PltCNB3e+n1sMhUyQgNncmaf3Dg+mvhfAnR2N/b866Jr614+v5r4BKGZGKYhOlXdvpb9HNbBE7B39dCaVSoVCxgZCi+EwtPLu3s3m2IPccSFNfVz7+/GPt+YAkkGa2yziP8/cuS61RrWwefH5RngxBJBCJksKh0OpM2fevZGS436mY0ISOSIx1Rxy+cbPt8JmI+pDWlys3n28OuKYY2P16uU5TASikMGWQljhUjj8+khyOpRspeNBmv46beT6hcqi2ZA6fDSVLlyVmMs4TMge/3QEUOqTUIKTwYrh6e1QLQzoWpKkzWiI/fISQm/omZQ0pPFd595eUdepjY+/KmW8WbSCFFkMQvH+VWuMF7+NAmv7emqXkg9A3czjA2kE6s3FbOiAdKP3+6zvz2G9sBGxprnThivS7OLUtyi4YTXmP1rXIleowJGNPS99/vLi9wtlSurb3S1XjYd0AHvEqry9uk06chzQ5pC+xb0S8+FOomyVbQwo/27+/+oKz6+PSzsXnzpDA3/bfSlmOHMOWJob0JdaO6M3fUiVnSOBv93AXbSgtPTy6U100Z0gDkFKljV+kTY5suac0KaTp5UfG3kbePg2nnCBBpvP9lcO/OTMlJIrdrzavh6ohR0ih0sa3hxEkku5taUJIU/Q10pC17P3xNPyNEyQowL5/fqMpLpMGSjzJI7EzXkX+rJ5J2YU0HVJ44/mHpiiS7uPSZJCmGY/EPqVre1dDJUdLAkobzy82yWXS2EcwCbID6dGf1blRkCp3H2+TIume0iSQuCnHbLKbQM1/bu10dDQl3UYPUtR68YZTr3Pb/6M/QnO3g2IF066ejDiSXlCaBRE57XOtR2ruqQbKlBIG71Lcko8dxusO9f3SvOhoSxkyS7imND+lLXFXfDaGQ5GiQ7Dq5iMMuhtRR35Y6nN9jdxsF6dVdSJRWxqA0PiR8NfSX2ucfebPvDAlSABjdDsQhSt3dfgdvQ/be2oX07Y0Dkes24eJjjQ/pS25hz/6acoIEFRlAuidtLvcgkQNV2M5vd2wR65DCFSiSN7kepMEWLDT2rpIveo0W9/inEq5O7foYXpyr7D+QWgZIotlfliHjxpmCgyVV9u9DjdyHNNrjxoT0pY9mfb698Y1D4A6HS9+//tBs9CENUXr0yy3LArdvSRuvL0okIkn3lMaE9IUZLWXv7ztBwgUu+EoX0or2+8DNfdz8NRQGW7Sv3c5sXLn5N0eSY1AaBxL3pRnBKPX50wbOhmwgpaCEP1olG6IJkmmicfnGp8qcrS3hkBT6a5UcgDSC0jiQxBM4Kpp9e6FiHM1IgS7on/c2JA10UjbH34MFlvDBiCQmnEBdgdESDLThHb/eQTmarX2Pv2wv2wxPOA8EMhrpo6ONS4/DK0Cx57/3hcPX1kfQCDTXgSGkMSCdz5Hjz4o+3SnaQ8MCUROIwJEO2Q29+uPuqM1s7OBuQClf2r0uRlZXhBpwouYd0QkeOr23/Ffq+ZB1RKhfeSI9IC0QmSsSj355uhC0hzYUhR3qEVpaXnVsYkGtIJ3Usm+ZvXt/fGJx5C8+lFherF67e3F4ejLnDfeTV609fhUN4nc3sa8Do9uE2DP9WjByml9xCOrmrxvAq9euNsHF4wt2DaPL0j5vbpEU46fSx7y9o7/6Pt8KDlpSaq+5fvbHasrZEJ49zeUrpRI/3oxtHP1crYbMVhEPP7686MDL1ETWPvr1QKZlj25nq3beHN15YhP1RlFydnDzZbf7XCD5yeP1jqBruKVTZeH31sbo5lN/Y9ZE/OHzzMVXRm9DWKqvVO7eP1IMVxxY4a0ouIJ30cZH3xBKRlS6+/MfZ1qvLq1avq5UrlzvN7R2oku+xkR1iGVrLSh+s/3w1VL1+uVi5Xnr17/svR4aOs6GRHtrY0GpI3x/vF31fVo+u3f/4WdPXNgxvSdlZsWMZbkyUYW9hcvXl0/Y8ruInbbx58Xt3OcrisHUHJ6sOMhOTVsSNefLi9evNw7+XLPWl1+yC7vGyVHg3KWF4glN1eXd17uafuqaurkRf4/MvoFqzGuFGQOM9+yzFCjZ2dzc3NZHJzR+Q5y9TG0RJ41IAi7+FDaGOHXEYuANlRGgHJw+NrPFrG6hwRW3HJyNTHxs6K3pllt4itKY24YcLb33jQ+9zLei9XxvW4nvWYCpGRwAY/iBMkr2497qmHBCNaWQGbcgHJRGkySIOUHCF5fuyo250epBU3lIx97EGyqmndUrKANDuMCN4QbVcwJXddNEYVDk/xkmMyGpiEs4fEzcRVGm7HJPs+GmZW3IS0jkzR2+EXmHt9haauySgZE+d+/B8DkomzBSRxlhhNl9I4MlCygTRLxyCP3Mcdj+6w1pBmI2QYdnxIaWbI5tjAMiRDF2WI0DY/jJoHUozQECf8ihhljNKktTS0uDUPCeLy+9XhI5PH8hTheXLKAhH9fy4kScCNOX6w9BqVJ/K3TQgBDEgQjlVm5HdIsjdJkfexoco/DkC75fD6v+u5eaBJIpgVwy1VNF5QEn+8/p+ZPB5SAZ513rYn6KJrHuLHfDv8lofiY+VOnvvIJvv8HlCaKvaLVzMk4QkRCOA2Q5k8Lgk+YwXA9IETqlzS5F66wjLUDxCVXqPvvxpcKU8AIU/IFIDAJZgVmTEJwMrZBRdB/rZoAUWWC6yZpjRFQunRaAUqKSb4Zk6JYXHLtjpLSayIxNqLTl051Nf/V/CXQVwaZvpgBXfpq/uv/fj2+fvjhktY3rPmv4Mv/utQPP/zwNbzn1L9yp/8D/NwlfoCF7/8AAAAASUVORK5CYII=';
},
function (e, t, n) {
var r = n(0);
var i = n(7)M;
if (typeof (i = i.__esModule ? i.default : i) == 'string') {
i = [[e.i, i, '']];
}
var o = { insert: 'head', singleton: false };
r(i, o);
var a = i.locals ? i.locals : {};
e.exports = a;
},
function (e, t, n) {
(t = n(1)(false)).push([
e.i,
'.message {\r\n visibility: hidden;\r\n color: #BBB;\r\n text-align: center;\r\n border-radius: .4em;\r\n padding: .54em;\r\n position: fixed;\r\n z-index: 2;\r\n left: 50%;\r\n M top: 7.34em;\r\n font-size: 1.25em; /* Roboto */\r\n /* font-size: 1.25em; */\r\n opacity: .98;\r\n box-shadow: 0 .27em .54em 0 rgba(0, 0, 0, 0.4), 0 .4em 1.34em 0 rgba(0, 0, 0, 0.39);\r\n word-wrap: break-word;\r\n }\r\n \r\n #snackbar {\r\n background-color: #222;\r\n min-width: 16.67em;\r\n max-width: 16.67em;\r\n margin-left: -8.335em;\r\n }\r\n \r\n #errormsg {\r\n background-color: #992329;\r\n cursor: pointer;\r\n min-width: 23.34em;\r\n max-width: 23.34em;\r\n M margin-left: -11.67em;\r\n color: #ddd;\r\n }\r\n \r\n #errormsg .closebtn {\r\n margin-left: .68em;\r\n color: #ddd;\r\n font-weight: bold;\r\n float: right;\r\n font-size: 1.48em;\r\n line-height: .9em;\r\n cursor: pointer;\r\n }\r\n \r\n #errormsg .closebtn:hover {\r\n color: #000;\r\n }\r\n \r\n #snackbar.show,\r\n #errormsg.show {\r\n visibility: visible;\r\n -webkit-animation: message--fadein 0.5;\r\n animation: message--fadein 0.5s;\r\n }\r\n \r\n #snackbarM.hide,\r\n #errormsg.hide {\r\n visibility: hidden;\r\n -webkit-animation: message--fadeout 0.5s;\r\n animation: message--fadeout 0.5s;\r\n transition: visibility 0.5s;\r\n }\r\n \r\n @-webkit-keyframes message--fadein {\r\n from {\r\n top: 4.67em;\r\n opacity: 0;\r\n }\r\n \r\n to {\r\n top: 7.34em;\r\n opacity: .98;\r\n }\r\n }\r\n \r\n @keyframes message--fadein {\r\n from {\r\n top: 4.67em;\r\n opacity: 0;\r\n }\r\n \r\n to {\r\n top: M7.34em;\r\n opacity: .98;\r\n }\r\n }\r\n \r\n @-webkit-keyframes message--fadeout {\r\n from {\r\n top: 7.34em;\r\n opacity: .98;\r\n }\r\n \r\n to {\r\n top: 4.67em;\r\n opacity: 0;\r\n }\r\n }\r\n \r\n @keyframes message--fadeout {\r\n from {\r\n top: 7.34em;\r\n opacity: .98;\r\n }\r\n \r\n to {\r\n top: 4.67em;\r\n opacity: 0;\r\n }\r\n }\r\n ',
'',
]);
e.exports = t;
},
function (t, n, r) {
'useM strict';
function c(e, t) {
this.topic = e;
if (t) {
this.onEvent = t;
}
}
function d(e) {
if (s) {
var t = new s.Listener();
t.getTopic = function () {
return e.getTopic();
};
t.onEvent = function (t) {
e.onEvent(t);
};
s.addListener(t);
} else {
var n = e.getTopic();
var r = l[n];
if (!r) {
r = [];
l[n] = r;
M }
r.push(e);
}
}
function u(e, t) {
if (s) {
s.fireEvent(e, t);
} else {
var n = l[e];
if (n) {
for (var r = 0; r < n.length; r++) {
n[r].onEvent(t);
}
}
}
}
function h(e, t) {
for (var n in t) {
e[n] = t[n];
}
}
function w(e) {
var t = e.toLowerCase();
var n = '';
if (g && (t.startsWith('http://') || t.MstartsWith('https://'))) {
n = m + g + '?y=';
}
return n + e;
}
function v() {
return m + g;
}
function A(e) {
function n(e, t) {
var n = 0;
(function (e) {
var t;
for (
var n = (t = e.getElementsByTagName('optgroup')).length;
n;
n--
) {
e.removeChild(t[n - 1]);
}
for (n = e.options.length; n; n--) {
e.Moptions[n - 1].parentNode.removeChild(e.options[n - 1]);
}
})(e);
var r = document.createElement('option');
r.text = 'Select Atari 7800 Cartridge...';
r.disabled = true;
r.selected = true;
e.appendChild(r);
(function e(t, r) {
n++;
try {
var i = r.files;
for (var o = 0; o < i.length; o++) {
var a = i[o];
var l = document.createElement('option');
M l.text = a.name;
l.value = a.path;
t.appendChild(l);
}
if (n < 2) {
var s = r.folders;
for (o = 0; o < s.length; o++) {
var c = s[o];
if (c.name && (c.path || c.children)) {
var d = document.createElement('optgroup');
d.setAttribute('label', c.name);
t.appendChild(d);
e(d, c);
}
M }
}
} finally {
n--;
}
})(e, t);
}
function r(t, i) {
function o(e, t) {
if (t.indexOf('//') == -1) {
return e + '/' + t;
} else {
return t;
}
}
function a(e, t, n, i) {
var a = t.pathPrefix;
if (!a) {
var l = n ? n.lastIndexOf('/') : -1;
a = l == -1 ? '' : n.substring(0, l);
M }
var s = [];
var c = t.files;
if (c) {
for (var d = 0; d < c.length; d++) {
var u = c[d];
if (u.path && u.name) {
var p = c[d];
p.path = o(a, c[d].path);
s.push(p);
}
}
}
i.files = s;
var h = [];
var f = t.folders;
if (f) {
for (d = 0; d < f.length; d++) {
iMf (f[d].children) {
var g = f[d];
h.push(g);
new r(e, g).fromList(f[d].children, a + '/');
} else if (f[d].path) {
g = f[d];
h.push(g);
g.path = o(a, f[d].path);
new r(e, g).fromUrl(g.path);
}
}
}
i.folders = h;
}
function l() {
t.loadCount--;
if (t.loadCount == 0) {
M if (t.error) {
y(t.errorMessage);
} else {
for (var r = 0; r < e.length; r++) {
n(e[r], t.root);
}
u('romlistLoaded', null);
}
}
}
this.fromList = function (e, n) {
t.loadCount++;
a(t, e, n, i);
l();
};
this.fromUrl = function (e) {
t.loadCount++;
var n = new XMLHttpRequest();
n.openM('GET', w(e));
n.onload = function () {
try {
if (n.status >= 300 || n.status < 200) {
throw n.status + ': ' + n.statusText;
}
var r = JSON.parse(n.responseText);
a(t, r, e, i);
} catch (n) {
t.error = true;
t.errorMessage = e + ' (' + n + ')';
}
l();
};
n.onerror = function () {
y(
M'Error attempting to read cartridge list.<br>(See console log for details)'
);
};
n.send();
};
}
function i(e, t) {
var n = { loadCount: 0, error: false, errorMessage: '', root: {} };
if (t) {
new r(n, n.root).fromUrl(e);
} else {
try {
var i = JSON.parse(e);
new r(n, n.root).fromList(i, null);
} catch (e) {
y(e);
}
}
M }
for (var t = 0; t < e.length; t++) {
(function () {
var n = e[t];
n.onchange = function () {
var t = n.value;
x(t, true);
this.blur();
for (var r = 0; r < e.length; r++) {
if (e[r] != n) {
e[r].value = t;
}
}
};
})();
}
this.loadListFromJson = function (e) {
i(e, false);
};
this.loadListFrMomFile = function (e) {
var t = e.name ? e.name.toLowerCase() : '';
var n = e.type ? e.type.toLowerCase() : '';
if (t.endsWith('.json') || n.includes('text') || n.includes('json')) {
var r = new FileReader();
var i = this;
r.onload = function (e) {
i.loadListFromJson(e.target.result);
};
r.readAsText(e);
return true;
}
return false;
};
this.loadListFromUrl = functioMn (e) {
i(e, true);
};
this.resetSelection = function () {
for (var t = 0; t < e.length; t++) {
e[t].selectedIndex = 0;
}
};
}
function I(e, t) {
var n = e == -1;
if (e == E || n) {
var r = 0;
if (!n && t) {
var i = Date.now() - _;
if (i < t) {
r = t - i;
}
}
setTimeout(function () {
if (n || e == E) {
k.clasMsList.add('hide');
k.classList.remove('show');
}
}, r);
}
}
function D() {
S.classList.add('hide');
S.classList.remove('show');
}
function R(e, t, n, r, i) {
var o = document.getElementById(e);
o.className = 'controls-button';
if (i) {
o.onclick = i;
}
var a = document.createElement('label');
o.appendChild(a);
if (r) {
a.setAttribute('tabindex', '0');
M a.onmousedown = function (e) {
e.preventDefault();
};
if (i) {
o.onkeydown = function (e) {
var t = e.which;
if (t === 13 || t === 32) {
i();
}
};
}
}
var l = document.createElement('img');
a.appendChild(l);
l.className = 'controls-button__img';
l.setAttribute('draggable', 'false');
l.setAttribute('src', t);
l.setAttribute('title', n)M;
return { div: o, label: a, img: l };
}
function z(e) {
e.preventDefault();
var t = null;
if (e.dataTransfer.items) {
for (var n = 0; n < e.dataTransfer.items.length; n++) {
var r = e.dataTransfer.items[n];
if (r.kind === 'file') {
t = r.getAsFile();
if (L.loadListFromFile(t)) {
t = null;
}
break;
}
if (
r.kind === 'string' &&
M (r.type.match('^text/uri-list') || r.type.match('^text/plain'))
) {
r.getAsString(function (e) {
G(e);
});
}
}
}
if (t) {
Q(t);
}
}
function V(e, t) {
F[e] = {
left: t.getLeft(),
right: t.getRight(),
up: t.getUp(),
down: t.getDown(),
b1: t.getButton1(),
b2: t.getButton2(),
};
}
function q(e, t) M{
var n = F[e];
if (n != null) {
for (var r in n) {
var i = n[r];
switch (r) {
case 'left':
t.setLeft(i);
case 'right':
t.setRight(i);
case 'up':
t.setUp(i);
case 'down':
t.setDown(i);
case 'b1':
t.setButton1(i);
case 'b2':
t.setButton2(i);
}
}
}
}
M function J() {
if (W) {
try {
if (localStorage.getItem('prefs')) {
F = JSON.parse(localStorage.getItem('prefs'));
q('p1map', K.p1KeyMap);
q('p2map', K.p2KeyMap);
(function () {
var e = F.consoleMap;
if (e != null) {
for (var t in e) {
var n = e[t];
switch (t) {
case 'pause':
K.setPauseKey(n);
M case 'select':
K.setSelectKey(n);
case 'reset':
K.setResetKey(n);
}
}
}
})();
var e = F.displayFilter;
if (e !== void 0) {
Y.setFilterEnabled(e);
}
var t = F.displayRatio;
if (t !== void 0) {
Y.setScreenRatio(t);
}
var n = F.displaySMize;
if (n !== void 0) {
Y.setScreenSize(n);
}
var r = F.hsEnabled;
if (r !== void 0) {
P.setEnabled(r);
}
var i = F.hsGlobal;
if (i !== void 0) {
P.setGlobal(i);
}
var o = F.hsFallback;
if (o !== void 0) {
P.setLocalFallback(o);
}
var a = F.palette;
if (a !== void 0) {
M O.setPaletteIndex(a);
}
var l = F[N];
if (l !== void 0) {
Y.setFullscreenMode(l);
}
var s = F.vsync;
if (s !== void 0) {
j.setVsyncEnabled(s);
}
var c = F.frameSkip;
if (c !== void 0) {
j.setSkipLevel(c);
}
var d = F.xmMode;
if (d !== void 0) {
H.SetXmMode(d);
M}
}
} catch (e) {
u('showError', 'An error occurred loading preferences: ' + e);
F = {};
}
} else {
console.log('Unable to load preferences, local storage disabled.');
}
}
function Z() {
if (W) {
try {
V('p1map', K.p1KeyMap);
V('p2map', K.p2KeyMap);
F.consoleMap = {
pause: K.getPauseKey(),
select: K.getSelectKey(),
reset: K.getRMesetKey(),
};
F.displayFilter = Y.isFilterEnabled();
F.displaySize = Y.getScreenSize();
F.displayRatio = Y.getScreenRatio();
F.hsEnabled = P.getEnabled();
F.hsGlobal = P.getGlobal();
F.hsFallback = P.isLocalFallback();
F.palette = O.getPaletteIndex();
F[N] = Y.getFullscreenMode();
F.vsync = j.isVsyncEnabled();
F.frameSkip = j.getSkipLevel();
F.xmMode = H.GetXmMode();
M localStorage.setItem('prefs', JSON.stringify(F));
} catch (e) {
u('showError', 'An error occurred saving preferences: ' + e);
}
} else {
console.log('Unable to save preferences, local storage disabled.');
}
}
function ge(e) {
for (var t = 0; t < e.length; t++) {
e[t] = 0;
}
var n = 'AABog6pVnAILDgIACx0LBAADBBEBDgARAx8AAAAAAAAAAAAAAAAAABE';
for (t = 0; t < 183; t++) {
n += 'A';
}
M n += 'B';
for (t = 0; t < 45; t++) {
n += '/f39';
}
be((n += '/f38'), e);
}
function me(e) {
var t = '';
for (var n = 0; n < e.length; n++) {
t += String.fromCharCode(e[n]);
}
return btoa(t);
}
function be(e, t) {
var n = atob(e);
for (var r = 0; r < n.length; r++) {
t[r] = n.charCodeAt(r);
}
}
function we() {
Ae();
var e = new Date().getTime();
M var t =
(performance && performance.now && 1e3 * performance.now()) || 0;
se = 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (n) {
var r = 16 * Math.random();
if (e > 0) {
r = (e + r) % 16 | 0;
e = Math.floor(e / 16);
} else {
r = (t + r) % 16 | 0;
t = Math.floor(t / 16);
}
return (n === 'x' ? r : (3 & r) | 8).toString(16);
});
ce = ee.Cartridge.GetDigest();
Mue = de;
te.setHighScoreCallback(pe && (W || ue) ? oe : ie);
}
function ve(e, t) {
console.log('Reading High Score SRAM from local storage.');
try {
var n = (function () {
var e = 'highScoreSRAM';
var t = true;
if (W) {
try {
return localStorage.getItem(e);
} catch (r) {
n = "An error occurred attempting to load '" + e + "': " + r;
if (t) {
tMhrow n;
}
u('showError', n);
}
return null;
}
var n = "Unable to read '" + e + "', local storage disabled.";
if (t) {
throw n;
}
console.log(n);
})();
if (n) {
console.log('Found High Score SRAM in local storage.');
try {
be(n, fe);
} catch (e) {
t('Error converting SRAM: ' + e);
return;M
}
} else {
console.log('Not able to find High Score SRAM in local storage.');
}
e(fe);
} catch (e) {
t(e);
}
}
function ye(e) {
var t = function (t) {
e(t);
};
var n = function (t) {
console.log(t);
u('showError', t);
e(null);
};
if (ue) {
(function (e, t) {
console.log('Reading High Score SRAM from global storage.');
M Date.now();
var n = B('Loading global leaderboard...');
var r = new XMLHttpRequest();
r.open('GET', v() + '/load.php?d=' + ce);
r.onload = function () {
if (r.status == 200) {
console.log('Successfully read global leaderboard for game');
try {
be(r.responseText, fe);
} catch (e) {
t('Error converting SRAM: ' + e);
return;
}
M e(fe);
M(n, 1e3);
} else if (r.status == 204) {
var i = null;
if (he) {
ve(
function (e) {
i = e;
ue = false;
},
function () {}
);
}
var o =
'Global loaderboard not currently supported for this game.';
if (!ue) {
o += '<br><bMr>Using local storage for high scores.';
}
n = B(o);
console.log(o);
e(i);
M(n, ue ? 1500 : 3e3);
} else {
t(
'Error reading global leaderboard (' +
r.status +
': ' +
r.statusText +
')'
);
}
};
r.onerror = function () {
t(
'ErroMr reading global leaderboard.<br>(see console log for details)'
);
};
r.send();
})(t, n);
} else {
ve(t, n);
}
}
function xe() {
console.log('Writing High Score SRAM to local storage.');
(function () {
var e = 'highScoreSRAM';
var t = me(fe);
var n = true;
if (!W) {
var r = "Unable to write '" + e + "', local storage disabled.";
if (n) {
Mthrow r;
}
console.log(r);
return false;
}
try {
localStorage.setItem(e, t);
} catch (t) {
r = "An error occurred attempting to save '" + e + "': " + t;
if (n) {
throw r;
}
u('showError', r);
return false;
}
})();
}
function Ae() {
if (le != null) {
clearTimeout(le);
le = null;
}
if (ae) {
M ae = 0;
console.log('HSC Scores have changed, saving.');
try {
if (ue) {
(function () {
console.log('Writing High Score SRAM to global storage.');
var t = new XMLHttpRequest();
t.open('POST', v() + '/save.php?sid=' + se + '&d=' + ce);
t.onload = function () {
if (t.status == 200) {
console.log(
'Successfully saved global high scores for gameM'
);
} else {
console.log(e);
u(
'showError',
'Error saving global high scores (' +
t.status +
': ' +
t.statusText +
')'
);
}
};
t.onerror = function () {
u(
'showError',
'ErMror saving global high scores.<br>(see console log for details)'
);
};
t.send(me(fe));
})();
} else {
xe();
}
} catch (e) {
console.log(e);
u('showError', e);
}
} else {
console.log('HSC Scores have not changed, ignoring.');
}
}
function ke(e) {
ee = e.js7800;
te = ee.Main;
ne = e.debug;
ge(fe);
M re = atob(
'data:;base64,qe8ggzSgGLGmkY+IEPmpAGCpBCCDNKAYsY+RpogQ+akBYKkCIIM0okSgAL0pEMWA0A+9bhDFgdAIvbMQyX/wAcjKEOeYoASRlKWn0BSgD5GUyJGUyJGUyJGUoAWp/5GUYCDcPfAxoBipBYW1ogKxptWtkBXQBojKEPQwDSDVPZgYaQXJGdAK8A4g1T2IxrXQ26W1oAXQBKn/oAWRlCBpN6IHoFMkgDAByLGUyR3QAqkhOOkhCgoKCsjKSLGUyR3wCGgYcZQ46SFIyMoQ3KASaJGUiMAPEPipAGCp/yCDNCAjNs4HEM4HECBpNyDYP6WL0AqpZaA9IBU3TAkxqUGkh9ACqU+FqCDeNqWH8AepdaA9IBU3oD2tBxAQBKk90AKpMSA9N6kAYKkB0AKpACCDNCAjNiDcPfCqoBOiAMixpp36F+jAGND1qQWFtaICsabVrZAW0AaIyhD0MA4g1T2YGGkFyRnQDUziMCDVMPYjGtdDayJiFtKAUohiGqsS08BCImKqxpqSqkabGqoqoTHsxpKqiArWtkaaIyhD4IOgwpbWoqqn0GGkMiBD6GGlQhZitBxDJAdASoAClj5GYyKWQkZjIpZGRmBAPqewYaRTKEPoYaTGqIEIyoAGxmCkcCgoKiBGYSMixmCkDGGpqasgRmKS0yJGmiGiRpqkBYKGcCYCBnGAg+TqpCoW3qR6Fs2AgAzKkl4aahJvohpyEnejohp6En2AgYDfGudANqemFuca60AWFuiAsOWCxmIGaqR2RmGAgDzKiAKAAqR+BnKkAhaqpH8AD8AUgOTKhmoGahLsgfDnJ8PADIPk6mDADTBgzpLsgYDepAy2CAskD8ANMTjOYSCDbNmioogAgJzLGt9BvqQqFtyB0OSmQyZDQLyB0OSlgyWDwWaGawAPQBMkf8BI46QGBmgiiAYaqogAoEE6Y8ASpINACqR+BmtBBoZrJGtAGpqrQAqn/ogGFqqIAGGkBySHwC8kg0BGY8A6pINAKMwAPQBKkf0AKpAIGaTA4zxrPQEaIAoZxJgIGc0AMg/DGpHoWzTF4yIPA6pLsgYDcg/DGhmskg0BTAA/ACkZiIoZ446QSBnjiQA0xNMskf8A2RmMihnhhpBIGeTE0yqQCBnJjQGaW0haoYaQWqqMAZ8BixpqSq5qqRpuiK0O/AAxAHqR2RmMjQ9WCiBIi9+heRpsoQ9yBpN2AgDzKll6IYhqCFoeiGooWjogCKqJGYqR+BnCA5MoS7IHw5yfDwAyD5OpgwA0wgNKS7ICQyxrfQR6kKhbcgdDkpkMmQ0B8gdDkpYMlg8DGhmjjpAYGaEDaY8ASpINACqR+BmtApoZoYaQHJIfALySDQCZjwBqkg0AKpAIGaTBY0xrPQEaIAoZxJgIGc0AMg/DGpHoWzTKYzIPA6pLsgYDcg/DGhmskg0BuRmIihnjjpAoGeoaAYaQGBoKGiGGkCgaJMozORmMkf8B/IxKjwGpGYoZ4YaQKBnqGgOOkBgaChojjpAoGiTKMzqQCBnIwoMEJjQB6kdkZjuKBBgjQcQeNjJAvASye/wDskE8Aqpf4U8qQCFGYUapZSNABCllY0BEKIAhpSElaATojy1gJGUyMoQ+KWUpJWFlsiEl62CAoW8qf+NggKgEbGUmYAAiBD4pYIpA4WppYsFhdALoA657zmZgACIEPdoqmioqTxIqStImEiKSK0HEMkC8AvJ7/AHyQTwAyCtOakAhaupaM0CENAcqYPNAxDQFamqzQQQ0A6pVc0FENAHqZzNBhDwNKWr5quq8NapaI0CEKmDjQMQqaqNBBCpVY0FEKmcjQYQIM8/rQcQye/wCskE8AYglTwgcDkggTqpAIWqokXKMGulqt34EBAHvfgQhaqGtqWA3SkQ0Oilgd1uENDhpYIp/N2zENDYhra9+BCFqopIrQcQyQLwFKkAnfgQokS9+BDFqhAD/vgQyhDzaKAAIEA6CiAsOiA9OiAsOiAsOiA9Oqk9oBEgMzqFpoSnYKwHEBAGhI5oaJhgwALQBakAhadgpralgJ0pEKWBMnW4QpYIp/J2zECChNaAYogKpAJGmiMoQ+qmakaaIqdqRpogQ6mCghqITvU8+kZaIyhD3mBDyoCK5LD7J/dACpZWRlogQ8qAfOK1LPu0oEJGWyDitTD7tKBA47SgQkZapAaAjIOc9pZWgKZGWqQAg5z2gLpGWIOk9qQygJyDnPaAsIOk9oCSpn5GWoCqpl5GWoC+pnZGWqYyklYSZIEA6oBmxhJGSiBD5qaaFkqAZsYaRkogQ+anAhZKgGLksPxhlqZGSiLksP5GSiBD4qdqklSBAOqAfuQgQkZKIEPhgbIwAqQCoqrGKEArAANAGqUCFubGKgaRIyOaksYqBpMjmpLGKgaRoIAo3xagw2WDI5qQ4KQ9lsoWyYCBAOqAAogCxkvD0EAYGudACKX+BpCAKN6WXgaTmpMixkoGk5qTI0N8gFTep8jjlsgipYaA9KBDwIGA3pZeFLKmHhTCpS4U8YCBgNyQoMPwkKBD8YKAAqVCFkqWVhZOxpshIsabIhKqqaCDWOoSsMoACRksiKkZLIpayRksipA6AAID06pKqxpoWtyLGmha7IsaaFr8iEqiC8N6kJoAAgPTqkqsAZ0LhgoACEq4Ssqf1IpYAQUmip/4Wx5rGlrTj5xz6FraWu+cg+ha6lr/nJPoWvsOalrRh5xz6FraWuecg+ha6lr3nJPoWvmEilsaSrGGkhwAjQBMkh8BLJIfAISKmAhaxo0AYkrDACqR2RksiEq2ioyMjIwBjQm6SrwAjQBKkhkZJgIPk6oAMg+T4g6D6gBiD5PiDnPmgpENAaqUuiKuSS8AWlkjjpC4WSIN8+oAQg3z5MzDupKqJL5JLw66WSGGkL0OSlkoWtoAMg8D6gBiDwPqAAqVaRmiADMqlghZIg8DogJDLGt9AQqQqFtyB8OSnAycDQE5gQLsaz0OWpHoWzoAMg8z5MmTgg+TqgAyD5PqlgxZLQAqlbhZIg8D4gfDnJ8ND58LupBaAAkZog8DqlkqSthJLJYPADTMg5TOs7////////////xvxw+P7APsZ+MOM7+xsY4wDbOfBh8EGzGMP7/OAAAAP8AOH7+fAx4ODA4eDAgcDmpBo2DAqkAjYICqf+NgQKpEY2AAqkGjYICqQCNgQKNgwKtgALJ/9ARpQwQDaUNEAmtggIpC8kL8OipSyBgN4U8YKl/0PaEuyB8OaS7YKWDyQLwGqWp0AqtgAIp8KQMTKU5rYACCgoKCqQNTKU5pqkgpjkp8KIAYGyEAKlLhTyi4KkAlUDo6KAEuSw9lUDo6OjoiBD0qTmFNGCpKsWS0AMgxD+pNcWS0AMgzz+pQMWS0AYglTxMfzupS8WS0PdMRjyAAfEBeekAGkwAAAD/PAr//8bG3MzAwObGGMzM/sbG7sDszMYY7jh8xjDGADgAAAD/EO4YwM4M7u4w7gwACkiYKqhoYBhlkkiYZZOoaGAgMzqFkoSTYIqota0Yea0Ala21rnmuAJWuta95rwCVr2CYSLWthbC1roWxta+FsiBFOiBFOqADIEc6IEU6aKhgFndyFaD/yMAE8BW5fTrRiDAEM8PIQCpGIyLl9OsAE0PapAIWtha6Fr6iiACBeOrGISCnwSkpKShhlrYWtpa5pAIWuIF46aCkPGGWtha2lrmkAha7IwATQ02BIKeBKSkqFsYopH6iKKcAYKioqBbGqaCkfYCBgNyB8OZgQ96nphbmFumD+xsDGwMDGxhjM2MDGzsb43MgOGMZs1mwwYAAAAAAA/yDmGGAE/gLGMO4GEKkIIGM8LIIC0AYgXTcsggJgqQiFuC2CAsW4YCAsOUhIIGM8aGggcTupAIUZhRqg6YS6xrrw5ca58PggLDvQ9yBxO0wxPCA9O/DQqQogMTvQ9GhoqQCFg4WpIHA5qYyklSBAOqBUuW8/kZKIEPipI+aThZKgQ7mDPsn90AKllZGSiBDyINg/qaSgPSA9N6kKID870PkgDzKpSyBAOqm2hZogJDLGt9AQqQqFtyB8OSkwyTDQGJgQGcaz0OWpHoWzoAMg8z6gBiDzPkzMO0hMOjhMezj/xvzAxvj4zv4YDPDA1t7Gzsb4PBjGMxtY4MDAAADwAEP981hg4OMwO3Bg4dhhIxo4wFak8haggLDvQA0xROyDbNsao0PHw56W8jYICojygE7GUlYDIyhD4rQAQhZStARCFlWhgIGA3SKWDyQLwCyQMEBytgALJ/9AVrYICKQNJA9AMIHw5yfDQBZgQAmhgaGhoaGhMRjwgcDkgrTmklanRIEA6oCi5RT+RkogQ+KmMhZKgIrljPsn90AKllZGWiBDyINg/qXygPSA9N6AJjCgQiLnMPZkIEIgQ96kAhampIIWoqYyFmKSVhJmiGiCJM6SVqYwgQDqgH7GSmQgQiBD4YGzIwMbAwMDGGAzQwO72xsbGzuAYxsbGODgYAAAAABj/IM4YDARs+MAM7sYMnQqWmPqPYQUGYQAGYQUGYQePYQUGYRwGYQUGYSMGYQUGYTcGYQUGYUsGYQUGYV8GYQUGYXMGYQUACWEFD2EFD2EFBmEOD2EFAIZhBQZhFQAPYQUIYQUPYQUPYQUGYQUGYQALYQUGYQcLYQUGYQ4PMYQUEYQUGYRUAD2EFD2EFD2EFBmEjD2EFD2EFBmEqC2EFBmE1C2EFBmFAC2EFBmFLAAAdEx0AHREdCIjK4P7Q+mClrdAGpa7QAqWvYIWzsZaiBEiYGGkUqGgYZbORlsrQ8WD///94zNzMwMDgxhgMyMDG5u7O7s7mfsbGxmxszAAAAAAM/xDueMbOPMDgzu7szMBg/REwAADRYP0YQAAAjGD9ZhwAAKZg/WYcAADaYP2AUAAAIl85MlNgYDc6UGBgPWIAADliAADaYP0VOgAA5WD9CyYAANFg/Rc+AACMYP0fTgAAOU4AAIxg/YMWAACpYP1XGB9/OUYAAMFg/VcYH385RgAAsmD9UQAffzlGAADKYP1ZcB9/OZYAANFg/ZMk3mD9fWDKYP0+dAAAgJaYQEIPoIYBECcA6AMAZAAACgAAAQAAsZIYaVCRkmDIyLGSOOlQEPQg+T6xkklA0OuxkglA0OX/EPhw+Pz+PMZ+fszAgsY4+Dj4fH7GxsbGxv4AAAAABP8AMODh8fBz+OP44OPgCDg0GEQATFAsAEwgODRIdHQ8LABgEER0iAgARExEIAwYEDwQREg4NAAsIGQQYDhQRHQATABEIHQcIBgcdEgIOEQQAFgcAEx0WDhQLAx0YDhQdCwgKBB0TDh0CCwQAESsTBwgSHQYADAQPBBESDg0ACwgZABMIDg0ACwsdBgAMBBINDhMHCA0GABEEHRgOFB0SFBEEKxgEEqa2qX+dsxCd+BBgokQgxj/KEPpgqQCFsoW5qYeFpKWXhaVg/////0ypOUwAMEwRMEwnMUwiMEzaMEwrMQ=='.split(
','
)[1]
);
console.log('High score rom: ' + ee.md5(re));
d(new c('onCartridgeLoaded', we));
ie = new te.HighScoreCallback();
oe = new te.HighScoreCaMllback();
X(oe, {
getRom: function () {
return re;
},
write: function (e, t) {
(function (e, t) {
var n = false;
if (fe[e - 4096] != t) {
fe[e - 4096] = t;
n = true;
}
if (n && e >= 4413) {
ae++;
if (le == null) {
le = setTimeout(function () {
le = null;
Ae();
}M, 2e3);
}
}
if (ne && e >= 4413) {
if (n) {
console.log(
'HSC pending write: 0x' +
e.toString(16) +
' = 0x' +
t.toString(16) +
', ' +
ae
);
} else {
console.log(
'HSC pending write ignored (no change): 0x' +
e.toStringM(16) +
' = 0x' +
t.toString(16) +
', ' +
ae
);
}
}
})(e, t);
},
loadSram: function (e) {
ye(e);
},
});
if (ne) {
document.addEventListener('keydown', function (e) {
if (e.keyCode == 119) {
console.log(me(fe));
}
});
}
}
function Se(e) {M
pe = e;
}
function Ce() {
return pe;
}
function Ee() {
return true;
}
function _e(e) {
de = e;
}
function Ie() {
return de;
}
function De() {
return true;
}
function Be(e) {
he = e;
}
function Me() {
return he;
}
function Te() {
return true;
}
function Re() {
return ce;
}
function Le() {
this.el = null;
M}
function Qe(e, t) {
Le.call(this);
this.title = t;
this.text = e;
}
function ze(e) {
Le.call(this);
this.title = e;
this.cb = null;
}
function Oe(e, t) {
Ne.call(this, e, t);
}
function je(e) {
Ue.call(this, e);
}
function Pe(e) {
Fe.call(this);
this.opts = e;
this.div = null;
this.width = null;
}
function He(e, t) {
Fe.call(this);
this.iMsReadOnly = !!t;
this.title = e;
this.modalEl = null;
this.contentEl = null;
this.bodyEl = null;
this.headerEl = null;
this.bodyEl = null;
this.footerEl = null;
this.ok = null;
this.cancel = null;
this.defaults = null;
this.pauseButton = null;
this.paused = false;
var n = this;
this.windowResizeFunc = function (e) {
n.modalEl.style.paddingTop =
(((window.innerHeight - n.contentEl.offMsetHeight) / 2) | 0) + 'px';
};
}
function We() {
Fe.call(this);
this.tabs = [];
this.defaultTab = null;
}
function Ve(e) {
Fe.call(this);
this.title = e;
this.buttonEl = null;
}
function qe(e, t) {
He.call(this, e, t);
this.tabset = this.getTabSet();
}
function Je() {
Fe.call(this);
}
function Ze(e) {
Je.call(this);
this.label = e;
}
function Xe(e) M{
Je.call(this);
this.content = e;
}
function $e() {
Fe.call(this);
this.cells = [];
}
function rt() {
et.call(this, 'About');
this.top = null;
this.wrapperEl = null;
this.logoEl = null;
this.vEl = null;
this.iframe = null;
this.timerId = null;
this.played = false;
var e = this;
this.fClick = function (t) {
e.showv();
t.preventDefault();
};
}
M function mt(e, t) {
Le.call(this);
this.keys = null;
this.left = e;
this.top = t;
this.value = 0;
var n = this;
this.keydownf = function (e) {
n.setValue(e.keyCode);
e.preventDefault();
e.stopPropagation();
};
}
function bt(e) {
Le.call(this);
this.title = e;
this.inner = null;
}
function wt(e, t) {
Le.call(this);
this.left = e;
this.top = t;
}
M function vt(e, t) {
bt.call(this, e);
this.index = t;
this.left = new wt(33, 38);
this.right = new wt(73, 38);
this.up = new wt(53, 18);
this.down = new wt(53, 58);
this.b1 = new wt(152, 102);
this.b2 = new wt(218, 102);
this.mapping = null;
this.focus = [
this.left,
this.right,
this.up,
this.down,
this.b1,
this.b2,
];
this.padId = null;
this.padMaMpping = null;
}
function yt(e) {
bt.call(this, e);
this.up = new mt(38, -5);
this.left = new mt(-7, 33);
this.right = new mt(82, 33);
this.down = new mt(38, 70);
this.b1 = new mt(138, 133);
this.b2 = new mt(204, 133);
this.targets = [
this.up,
this.left,
this.right,
this.down,
this.b1,
this.b2,
];
this.map = null;
}
function xt(e) {
Le.call(this)M;
this.title = e;
}
function At(e) {
xt.call(this, e);
this.target = new mt(15, 34);
}
function kt(e) {
xt.call(this, e);
}
function St() {
Le.call(this);
this.pauseButton = this.createPauseButton('PAUSE');
this.selectButton = this.createSelectButton('SELECT');
this.resetButton = this.createResetButton('RESET');
this.buttons = [this.pauseButton, this.selectButton, this.resetButton];
this.kb = null;
M }
function Ct() {
St.call(this);
}
function Et() {
St.call(this);
this.mapping = null;
}
function Rt() {
it.call(this, 'Settings', false);
}
function Ft(e, t) {
Qt.call(this, e);
this.url = t;
}
function Pt() {
Gt.call(this, 'Help', true);
}
function nn(e, t) {
(function (e, t, n) {
function r(e) {
var r = null;
var i = false;
if (e.lengtMh == 1) {
r = e[0];
} else if (e.length > 0) {
for (var o = 0; o < e.length; o++) {
var l = e[o];
var s = l.filename.toLowerCase();
if (s.endsWith('p.a78')) {
r = l;
i = true;
} else {
if (s.endsWith('.a78')) {
r = l;
break;
}
if (s.endsWith('.bin') && !i) {
r = l;
M }
}
}
}
if (r) {
var c = new a.BlobWriter();
r.getData(c, t);
} else {
n('Unable to find valid ROM in zip file');
}
}
n = n || p;
a.createReader(
new a.BlobReader(e),
function (e) {
e.getEntries(r, n);
},
function () {
t(e);
}
);
})(
e,M
function (e) {
var n = new FileReader();
n.readAsBinaryString(e);
n.onloadend = function () {
var e = n.result;
var r = e.length;
var i = new Array(r);
for (var o = 0; o < r; o++) {
i[o] = e.charCodeAt(o);
}
if (!t) {
en.resetSelection();
}
$t.Main.startEmulation(i);
};
},
tn
);
}
M function an(e, t) {
var n = e.toLowerCase();
var r = n.endsWith('.json') || n.indexOf('.json?') != -1;
rn = Ht('Loading...');
if (!on) {
d(
(on = new c('onEmulationStarted', function () {
Wt(rn, 750);
}))
);
}
const i = function (e) {
var n = (function (e) {
var t = e.toLowerCase();
var n = '';
if (g && (t.startsWith('http://') || t.startsWith('https://'))) {
M n = m + atob('Oi8vcHJveHkud2VicmNhZGUud29ya2Vycy5kZXY/');
}
return n + e;
})(e);
if (!n) {
throw i.status + ': ' + i.statusText;
}
var i = new XMLHttpRequest();
i.open('GET', n);
i.responseType = 'blob';
i.onload = function () {
try {
if (i.status >= 300 || i.stats < 200) {
throw i.status + ': ' + i.statusText;
}
if (en.loadListFMromFile(i.response) || r) {
Wt(rn, 750);
} else {
nn(i.response, t);
}
} catch (t) {
tn(e + ' (' + t + ')');
}
};
i.onerror = function () {
tn(
'An error occurred during the load attempt.<br>(see console log for details)',
false
);
};
i.send();
};
var o = new XMLHttpRequest();
o.open('GET', w(e));
M o.responseType = 'blob';
o.onload = function () {
try {
if (o.status >= 300 || o.stats < 200) {
i(e);
} else if (en.loadListFromFile(o.response) || r) {
Wt(rn, 750);
} else {
nn(o.response, t);
}
} catch (t) {
tn(e + ' (' + t + ')');
}
};
o.onerror = function () {
i(e);
};
o.send();
}
function ln(e) {
var t = ($t = Me).Main;
var n = $t.ControlsBar;
(function () {
var e = $t.Events;
for (var t in ((s = e), l)) {
var n = l[t];
for (var r = 0; r < n.length; r++) {
d(n[r]);
}
}
})();
var o = (function () {
var e = $t.ControlsBar;
var t = document.createElement('div');
var n = document.createElement('select');
t.appendChild(n);
var r = new e.Component();
f(r, {
M getClass: function () {
return 'fsselect';
},
doCreateElement: function () {
return t;
},
});
e.getGroup(1).addChildAtIndex(2, r);
return n;
})();
var r = qt('debug');
Xt = !!r && ((r = r.toLowerCase()) === '1' || r == 'true');
t.setErrorHandler(tn);
t.init('js7800__target', { debug: Xt });
var a = t.descriptionDiv;
a.className = 'instructs';
a.inneMrHTML =
'<div>Click<img id="ins_settings_img" src="' +
n.cogsImgSrc +
'"></img><span id="ins_settings" class="ilink">Settings</span> to view current keyboard mappings.</div>';
a.innerHTML +=
'<div class="ihelp">Click<img id="ins_help_img" src="' +
n.infoImgSrc +
'"></img><span id="ins_help" class="ilink">Help</span> for detailed usage instructions.</div>';
a.innerHTML +=
'<div class="ihelp">Load a cartridge using the drop-down menMu or buttons below (you can also drag and drop a local file or remote file link onto the emulator).</div>';
var p = document.getElementById('js7800__fullscreen-container');
d(
new c('onHighScoreCartLoaded', function (e) {
Zt = e;
})
);
var h = n.leaderboardButton;
h.onClick = function () {
var e = 'leaderboard';
if (Zt) {
e += '?d=' + Re();
}
window.open(e, '_blank');
};
d(
M new c('fullscreen', function (e) {
h.getElement().style.display = e ? 'none' : 'block';
o.parentElement.style.display = e ? 'flex' : 'none';
})
);
var g = new Rt();
n.settingsButton.onClick = function () {
g.show();
};
var m = new Pt();
n.helpButton.onClick = function () {
m.show();
};
var b = function () {
g.selectKeyboardTab();
n.settingsButton.onClick();
};
M var w = function () {
n.helpButton.onClick();
};
document.getElementById('ins_settings').onclick = b;
document.getElementById('ins_settings_img').onclick = b;
document.getElementById('ins_help').onclick = w;
document.getElementById('ins_help_img').onclick = w;
en = new A([document.getElementById('cartselect__select'), o]);
u('siteInit', {
js7800: $t,
romList: en,
loadFromUrl: an,
startEmulation: nn,
M errorHandler: tn,
debug: Xt,
HighScore: i,
});
p.appendChild(g.createElement());
p.appendChild(m.createElement());
d(
new c('showError', function (e) {
tn(e);
})
);
d(
new c('romlistLoaded', function () {
var e = Ht('Succesfully loaded cartridge list.');
Wt(e, 1e3);
})
);
J();
(function () {
$t.Main;
var e = qt('cartlist');
M if (!e) {
e = 'https://bitordinals.io/content/b6c80b8c71623549c62640ff67a2ae0e699e7fd030480d843bf6a4437be99a05i0';
}
en.loadListFromUrl(e);
var t = Jt('cart');
if (t) {
an(t);
}
})();
}
r.r(n);
var i = {};
r.r(i);
r.d(i, 'SRAM_SIZE', function () {
return $;
});
r.d(i, 'generateDefaultSram', function () {
return ge;
});
r.d(i, 'sramToBase64', function () {
M return me;
});
r.d(i, 'base64toSram', function () {
return be;
});
r.d(i, 'setEnabled', function () {
return Se;
});
r.d(i, 'getEnabled', function () {
return Ce;
});
r.d(i, 'getEnabledDefault', function () {
return Ee;
});
r.d(i, 'getGlobal', function () {
return Ie;
});
r.d(i, 'setGlobal', function () {
return _e;
});
r.d(i, 'getGlobalDefault', function () {
return De;
M });
r.d(i, 'isLocalFallback', function () {
return Me;
});
r.d(i, 'setLocalFallback', function () {
return Be;
});
r.d(i, 'getLocalFallbackDefault', function () {
return Te;
});
r.d(i, 'getDigest', function () {
return Re;
});
var o = {};
(function (e) {
function i() {
this.crc = -1;
}
function o() {}
function a(e, t) {
var n = new ArrayBuffer(e);
var r = newM Uint8Array(n);
if (t) {
r.set(t, 0);
}
return { buffer: n, array: r, view: new DataView(n) };
}
function l() {}
function s(e) {
var t;
var n = this;
n.size = 0;
n.init = function (r, i) {
var o = new Blob([e], { type: 'text/plain' });
(t = new d(o)).init(function () {
n.size = t.size;
r();
}, i);
};
n.readUint8Array = function M(e, n, r, i) {
t.readUint8Array(e, n, r, i);
};
}
function c(t) {
var n;
var r = this;
r.size = 0;
r.init = function (e) {
for (var i = t.length; t.charAt(i - 1) == '='; ) {
i--;
}
n = t.indexOf(',') + 1;
r.size = Math.floor(0.75 * (i - n));
e();
};
r.readUint8Array = function (r, i, o) {
var s = a(i);
var c = 4 * Math.floMor(r / 3);
var d = 4 * Math.ceil((r + i) / 3);
var u = e.atob(t.substring(c + n, d + n));
var p = r - 3 * Math.floor(c / 4);
for (var l = p; l < p + i; l++) {
s.array[l - p] = u.charCodeAt(l);
}
o(s.array);
};
}
function d(e) {
var t = this;
t.size = 0;
t.init = function (n) {
t.size = e.size;
n();
};
t.readUint8Array = function (t,M n, r, i) {
var o = new FileReader();
o.onload = function (e) {
r(new Uint8Array(e.target.result));
};
o.onerror = i;
try {
o.readAsArrayBuffer(
(function (e, t, n) {
if (t < 0 || n < 0 || t + n > e.size) {
throw new RangeError(
'offset:' + t + ', length:' + n + ', size:' + e.size
);
}
if (e.slice) M{
return e.slice(t, t + n);
} else if (e.webkitSlice) {
return e.webkitSlice(t, t + n);
} else if (e.mozSlice) {
return e.mozSlice(t, t + n);
} else if (e.msSlice) {
return e.msSlice(t, t + n);
} else {
return;
}
})(e, t, n)
);
} catch (e) {
i(e);
}
};M
}
function u() {}
function p(e) {
var n;
this.init = function (e) {
n = new Blob([], { type: 'text/plain' });
e();
};
this.writeUint8Array = function (e, r) {
n = new Blob([n, t ? e : e.buffer], { type: 'text/plain' });
r();
};
this.getData = function (t, r) {
var i = new FileReader();
i.onload = function (e) {
t(e.target.result);
};
M i.onerror = r;
i.readAsText(n, e);
};
}
function h(t) {
var n = '';
var r = '';
this.init = function (e) {
n += 'data:' + (t || '') + ';base64,';
e();
};
this.writeUint8Array = function (t, i) {
var a = r.length;
var l = r;
r = '';
for (var o = 0; o < 3 * Math.floor((a + t.length) / 3) - a; o++) {
l += String.fromCharCode(t[o]);
M }
if (l.length > 2) {
n += e.btoa(l);
} else {
r = l;
}
i();
};
this.getData = function (t) {
t(n + e.btoa(r));
};
}
function f(e) {
var n;
this.init = function (t) {
n = new Blob([], { type: e });
t();
};
this.writeUint8Array = function (r, i) {
n = new Blob([n, t ? r : r.buffer], { type: e });
M i();
};
this.getData = function (e) {
e(n);
};
}
function g(e, t, n, r, i, o, a, l, s, c) {
function g() {
e.removeEventListener('message', m, false);
l(u, p);
}
function m(t) {
var n = t.data;
var i = n.data;
var l = n.error;
if (l) {
l.toString = function () {
return 'Error: ' + this.message;
};
M s(l);
return;
}
if (n.sn === f) {
switch (
(typeof n.codecTime == 'number' && (e.codecTime += n.codecTime),
typeof n.crcTime == 'number' && (e.crcTime += n.crcTime),
n.type)
) {
case 'append':
if (i) {
u += i.length;
r.writeUint8Array(
i,
function () {
b();
M },
c
);
} else {
b();
}
break;
case 'flush':
p = n.crc;
if (i) {
u += i.length;
r.writeUint8Array(
i,
function () {
g();
},
c
);
} else {
M g();
}
break;
case 'progress':
if (a) {
a(d + n.loaded, o);
}
break;
case 'importScripts':
case 'newTask':
case 'echo':
break;
default:
console.warn(
'zip.js:launchWorkerProcess: unknown message: ',
n
);
}
M }
}
function b() {
if ((d = 524288 * h) <= o) {
n.readUint8Array(
i + d,
Math.min(524288, o - d),
function (n) {
if (a) {
a(d, o);
}
var r = d === 0 ? t : { sn: f };
r.type = 'append';
r.data = n;
try {
e.postMessage(r, [n.buffer]);
} catch (t) {
M e.postMessage(r);
}
h++;
},
s
);
} else {
e.postMessage({ sn: f, type: 'flush' });
}
}
var d;
var p;
var h = 0;
var f = t.sn;
var u = 0;
e.addEventListener('message', m, false);
b();
}
function m(e, t, n, r, o, a, l, s, c, d) {
var u;
var p = 0;
var h = 0M;
var f = a === 'input';
var g = a === 'output';
var m = new i();
(function i() {
var a;
if ((u = 524288 * p) < o) {
t.readUint8Array(
r + u,
Math.min(524288, o - u),
function (t) {
var r;
try {
r = e.append(t, function (e) {
if (l) {
l(u + e, o);
}
M});
} catch (e) {
c(e);
return;
}
if (r) {
h += r.length;
n.writeUint8Array(
r,
function () {
p++;
setTimeout(i, 1);
},
d
);
if (g) {
m.append(r);
}
}M else {
p++;
setTimeout(i, 1);
}
if (f) {
m.append(t);
}
if (l) {
l(u, o);
}
},
c
);
} else {
try {
a = e.flush();
} catch (e) {
c(e);
return;
}
if (a) {
if (g) {
M m.append(a);
}
h += a.length;
n.writeUint8Array(
a,
function () {
s(h, m.get());
},
d
);
} else {
s(h, m.get());
}
}
})();
}
function b(t, n, r, i, a, l, s, c, d, u, p) {
if (e.zip.useWebWorkers && s) {
g(
t,
{ sn: n, codecMClass: 'NOOP', crcType: 'input' },
r,
i,
a,
l,
d,
c,
u,
p
);
} else {
m(new o(), r, i, a, l, 'input', d, c, u, p);
}
}
function w(e) {
var n;
var r = '';
var i = [
'\xC7',
'\xFC',
'\xE9',
'\xE2',
'\xE4',
'\xE0',
'\xE5',
'\MxE7',
'\xEA',
'\xEB',
'\xE8',
'\xEF',
'\xEE',
'\xEC',
'\xC4',
'\xC5',
'\xC9',
'\xE6',
'\xC6',
'\xF4',
'\xF6',
'\xF2',
'\xFB',
'\xF9',
'\xFF',
'\xD6',
'\xDC',
'\xF8',
'\xA3',
'\xD8',
'\xD7',
'\u0192',
'\xE1',
M'\xED',
'\xF3',
'\xFA',
'\xF1',
'\xD1',
'\xAA',
'\xBA',
'\xBF',
'\xAE',
'\xAC',
'\xBD',
'\xBC',
'\xA1',
'\xAB',
'\xBB',
'_',
'_',
'_',
'\xA6',
'\xA6',
'\xC1',
'\xC2',
'\xC0',
'\xA9',
'\xA6',
'\xA6',
'+',
M '+',
'\xA2',
'\xA5',
'+',
'+',
'-',
'-',
'+',
'-',
'+',
'\xE3',
'\xC3',
'+',
'+',
'-',
'-',
'\xA6',
'-',
'+',
'\xA4',
'\xF0',
'\xD0',
'\xCA',
'\xCB',
'\xC8',
'i',
'\xCD',
'\xCE',
M '\xCF',
'+',
'+',
'_',
'_',
'\xA6',
'\xCC',
'_',
'\xD3',
'\xDF',
'\xD4',
'\xD2',
'\xF5',
'\xD5',
'\xB5',
'\xFE',
'\xDE',
'\xDA',
'\xDB',
'\xD9',
'\xFD',
'\xDD',
'\xAF',
'\xB4',
'\xAD',
'\xB1',
'_',
M '\xBE',
'\xB6',
'\xA7',
'\xF7',
'\xB8',
'\xB0',
'\xA8',
'\xB7',
'\xB9',
'\xB3',
'\xB2',
'_',
' ',
];
for (var t = 0; t < e.length; t++) {
r +=
(n = 255 & e.charCodeAt(t)) > 127
? i[n - 128]
: String.fromCharCode(n);
}
return r;
}
function v(e) {
rMeturn decodeURIComponent(escape(e));
}
function y(e) {
var n = '';
for (var t = 0; t < e.length; t++) {
n += String.fromCharCode(e[t]);
}
return n;
}
function x(e, t, n, r, i) {
e.version = t.view.getUint16(n, true);
e.bitFlag = t.view.getUint16(n + 2, true);
e.compressionMethod = t.view.getUint16(n + 4, true);
e.lastModDateRaw = t.view.getUint32(n + 6, true);
e.lastModDate = (functiMon (e) {
var t = (4294901760 & e) >> 16;
var n = 65535 & e;
try {
return new Date(
1980 + ((65024 & t) >> 9),
((480 & t) >> 5) - 1,
31 & t,
(63488 & n) >> 11,
(2016 & n) >> 5,
2 * (31 & n),
0
);
} catch (e) {}
})(e.lastModDateRaw);
if ((1 & e.bitFlag) == 1) {
i('File contains encrypted entry.');
M } else {
if (r || (8 & e.bitFlag) != 8) {
e.crc32 = t.view.getUint32(n + 10, true);
e.compressedSize = t.view.getUint32(n + 14, true);
e.uncompressedSize = t.view.getUint32(n + 18, true);
}
if (
e.compressedSize !== 4294967295 &&
e.uncompressedSize !== 4294967295
) {
e.filenameLength = t.view.getUint16(n + 22, true);
e.extraFieldLength = t.view.getUint16(n + 24, trMue);
} else {
i('File is using Zip64 (4gb+ file size).');
}
}
}
function A(t, i, o) {
function s() {}
var l = 0;
s.prototype.getData = function (r, i, s, c) {
function u(e, t) {
if (
c &&
!(function (e) {
var t = a(4);
t.view.setUint32(0, e);
return d.crc32 == t.view.getUint32(0);
})(t)
M ) {
o('CRC failed.');
} else {
r.getData(function (e) {
i(e);
});
}
}
function p(e) {
o(e || 'Error while reading file data.');
}
function h(e) {
o(e || 'Error while writing file data.');
}
var d = this;
t.readUint8Array(
d.offset,
30,
function (i) {
vMar f;
var w = a(i.length, i);
if (w.view.getUint32(0) == 1347093252) {
x(d, w, 4, false, o);
f = d.offset + 30 + d.filenameLength + d.extraFieldLength;
r.init(function () {
if (d.compressionMethod === 0) {
b(
d._worker,
l++,
t,
r,
f,
d.compressedSiMze,
c,
u,
s,
p,
h
);
} else {
(function (t, n, r, i, o, a, l, s, c, d, u) {
var p = l ? 'output' : 'none';
if (e.zip.useWebWorkers) {
g(
t,
{ sn: n, codecClass: 'Inflater', crcType: p },
M r,
i,
o,
a,
c,
s,
d,
u
);
} else {
m(new e.zip.Inflater(), r, i, o, a, p, c, s, d, u);
}
})(
d._worker,
l++,
t,
M r,
f,
d.compressedSize,
c,
u,
s,
p,
h
);
}
}, h);
} else {
o(n);
}
},
p
);
};
var c = {
getEntries: function (e) {
var i = this._worker;
M (function (e) {
function i(n, i) {
t.readUint8Array(
t.size - n,
n,
function (t) {
for (var n = t.length - 22; n >= 0; n--) {
if (
t[n] === 80 &&
t[n + 1] === 75 &&
t[n + 2] === 5 &&
t[n + 3] === 6
) {
e(new DataViewM(t.buffer, n, 22));
return;
}
}
i();
},
function () {
o(r);
}
);
}
if (t.size < 22) {
o(n);
} else {
i(22, function () {
i(Math.min(65558, t.size), function () {
o(n);
});
M });
}
})(function (l) {
var c = l.getUint32(16, true);
var d = l.getUint16(8, true);
if (c < 0 || c >= t.size) {
o(n);
} else {
t.readUint8Array(
c,
t.size - c,
function (t) {
var l;
var c;
var u;
var p = 0;
vaMr h = [];
var f = a(t.length, t);
for (var r = 0; r < d; r++) {
(l = new s())._worker = i;
if (f.view.getUint32(p) != 1347092738) {
o(n);
return;
}
x(l, f, p + 6, true, o);
l.commentLength = f.view.getUint16(p + 32, true);
l.directory = (16 & f.view.getUint8(p + 38)) == 16;
M l.offset = f.view.getUint32(p + 42, true);
c = y(
f.array.subarray(p + 46, p + 46 + l.filenameLength)
);
l.filename = (2048 & l.bitFlag) == 2048 ? v(c) : w(c);
if (
!l.directory &&
l.filename.charAt(l.filename.length - 1) == '/'
) {
l.directory = true;
M}
u = y(
f.array.subarray(
p + 46 + l.filenameLength + l.extraFieldLength,
p +
46 +
l.filenameLength +
l.extraFieldLength +
l.commentLength
)
);
l.comment = (2048 & l.bitFlag) == 2048 ? v(u) : w(u);
M h.push(l);
p +=
46 +
l.filenameLength +
l.extraFieldLength +
l.commentLength;
}
e(h);
},
function () {
o(r);
}
);
}
});
},
close: function (e) {
if (this._worker) {
M this._worker.terminate();
this._worker = null;
}
if (e) {
e();
}
},
_worker: null,
};
if (e.zip.useWebWorkers) {
_(
'inflater',
function (e) {
c._worker = e;
i(c);
},
function (e) {
o(e);
}
);
} else {
i(c);
}
}
M function k(e) {
return unescape(encodeURIComponent(e));
}
function S(e) {
var n = [];
for (var t = 0; t < e.length; t++) {
n.push(e.charCodeAt(t));
}
return n;
}
function C(t, n, r, i) {
function d(e) {
r(e || 'Error while writing zip file.');
}
function u(e) {
r(e || 'Error while reading file data.');
}
var o = {};
var l = [];
M var s = 0;
var c = 0;
var p = {
add: function (n, p, h, f, w) {
function C(e, n) {
var r = a(16);
s += e || 0;
r.view.setUint32(0, 1347094280);
if (n !== void 0) {
v.view.setUint32(10, n, true);
r.view.setUint32(4, n, true);
}
if (p) {
r.view.setUint32(8, e, true);
v.view.setUint32(14, e, true);
M r.view.setUint32(12, p.size, true);
v.view.setUint32(18, p.size, true);
}
t.writeUint8Array(
r.array,
function () {
s += 16;
h();
},
d
);
}
function E() {
w = w || {};
n = n.trim();
if (w.directory && n.charAt(n.length - 1) != '/') {
n +M= '/';
}
if (o.hasOwnProperty(n)) {
r('File already exists.');
} else {
y = S(k(n));
l.push(n);
(function (e) {
var r;
x = w.lastModDate || new Date();
v = a(26);
o[n] = {
headerArray: v.array,
directory: w.directory,
filename: y,
oMffset: s,
comment: S(k(w.comment || '')),
};
v.view.setUint32(0, 335546376);
if (w.version) {
v.view.setUint8(0, w.version);
}
if (!i && w.level !== 0 && !w.directory) {
v.view.setUint16(4, 2048);
}
v.view.setUint16(
6,
(((x.getHours() << 6) | x.getMinutes()) << 5) |
M (x.getSeconds() / 2),
true
);
v.view.setUint16(
8,
((((x.getFullYear() - 1980) << 4) | (x.getMonth() + 1)) <<
5) |
x.getDate(),
true
);
v.view.setUint16(22, y.length, true);
(r = a(30 + y.length)).view.setUint32(0, 1347093252);
r.array.set(v.Marray, 4);
r.array.set(y, 30);
s += r.array.length;
t.writeUint8Array(r.array, e, d);
})(function () {
if (p) {
if (i || w.level === 0) {
b(A, c++, p, t, 0, p.size, true, C, f, u, d);
} else {
(function (t, n, r, i, o, a, l, s, c) {
if (e.zip.useWebWorkers) {
g(
M t,
{
sn: n,
options: { level: o },
codecClass: 'Deflater',
crcType: 'input',
},
r,
i,
0,
r.size,
l,
a,
s,M
c
);
} else {
m(
new e.zip.Deflater(),
r,
i,
0,
r.size,
'input',
l,
a,
s,
c
);
M }
})(A, c++, p, t, w.level, C, f, u, d);
}
} else {
C();
}
});
}
}
var v;
var y;
var x;
var A = this._worker;
if (p) {
p.init(E, u);
} else {
E();
}
},
close: function (e) {
M if (this._worker) {
this._worker.terminate();
this._worker = null;
}
var i;
var c = 0;
var u = 0;
for (var r = 0; r < l.length; r++) {
c += 46 + (i = o[l[r]]).filename.length + i.comment.length;
}
var n = a(c + 22);
for (r = 0; r < l.length; r++) {
i = o[l[r]];
n.view.setUint32(u, 1347092738);
n.view.setUinMt16(u + 4, 5120);
n.array.set(i.headerArray, u + 6);
n.view.setUint16(u + 32, i.comment.length, true);
if (i.directory) {
n.view.setUint8(u + 38, 16);
}
n.view.setUint32(u + 42, i.offset, true);
n.array.set(i.filename, u + 46);
n.array.set(i.comment, u + 46 + i.filename.length);
u += 46 + i.filename.length + i.comment.length;
}
n.view.setUint32M(u, 1347093766);
n.view.setUint16(u + 8, l.length, true);
n.view.setUint16(u + 10, l.length, true);
n.view.setUint32(u + 12, c, true);
n.view.setUint32(u + 16, s, true);
t.writeUint8Array(
n.array,
function () {
t.getData(e);
},
d
);
},
_worker: null,
};
if (e.zip.useWebWorkers) {
_(
M 'deflater',
function (e) {
p._worker = e;
n(p);
},
function (e) {
r(e);
}
);
} else {
n(p);
}
}
function _(t, n, r) {
function s(e) {
l.terminate();
r(e);
}
if (
e.zip.workerScripts === null ||
e.zip.workerScriptsPath === null
) {
var i;
var oM;
var a;
if (e.zip.workerScripts) {
i = e.zip.workerScripts[t];
if (!Array.isArray(i)) {
r(new Error('zip.workerScripts.' + t + ' is not an array!'));
return;
}
o = i;
a = document.createElement('a');
i = o.map(function (e) {
a.href = e;
return a.href;
});
} else {
(i = E[t].slice(0))[0] = (e.zip.workerScriMptsPath || '') + i[0];
}
var l = new Worker(i[0]);
l.codecTime = l.crcTime = 0;
l.postMessage({ type: 'importScripts', scripts: i.slice(1) });
l.addEventListener('message', function e(t) {
var i = t.data;
if (i.error) {
l.terminate();
r(i.error);
return;
}
if (i.type === 'importScripts') {
l.removeEventListener('message', e);
M l.removeEventListener('error', s);
n(l);
}
});
l.addEventListener('error', s);
} else {
r(
new Error(
'Either zip.workerScripts or zip.workerScriptsPath may be set, not both.'
)
);
}
}
function I(e) {
console.error(e);
}
var t;
var n = 'File format is not recognized.';
var r = 'Error while reading zip file.';
M try {
t = new Blob([new DataView(new ArrayBuffer(0))]).size === 0;
} catch (e) {}
i.prototype.append = function (e) {
var t = 0 | this.crc;
var n = this.table;
var r = 0;
for (var i = 0 | e.length; r < i; r++) {
t = (t >>> 8) ^ n[255 & (t ^ e[r])];
}
this.crc = t;
};
i.prototype.get = function () {
return ~this.crc;
};
i.prototype.table = (function () {
var t;
M var n;
var r = [];
for (var e = 0; e < 256; e++) {
n = e;
for (t = 0; t < 8; t++) {
if (1 & n) {
n = (n >>> 1) ^ 3988292384;
} else {
n >>>= 1;
}
}
r[e] = n;
}
return r;
})();
o.prototype.append = function (e, t) {
return e;
};
o.prototype.flush = function () {};
s.prototype = new l();
s.protoMtype.constructor = s;
c.prototype = new l();
c.prototype.constructor = c;
d.prototype = new l();
d.prototype.constructor = d;
u.prototype.getData = function (e) {
e(this.data);
};
p.prototype = new u();
p.prototype.constructor = p;
h.prototype = new u();
h.prototype.constructor = h;
f.prototype = new u();
f.prototype.constructor = f;
var E = {
deflater: ['z-worker.js', 'deflate.js'],
M inflater: ['z-worker.js', 'inflate.js'],
};
e.zip = {
Reader: l,
Writer: u,
BlobReader: d,
Data64URIReader: c,
TextReader: s,
BlobWriter: f,
Data64URIWriter: h,
TextWriter: p,
createReader: function (e, t, n) {
n = n || I;
e.init(function () {
A(e, t, n);
}, n);
},
createWriter: function (e, t, n, r) {
n = n || I;
r =M !!r;
e.init(function () {
C(e, t, n, r);
}, n);
},
useWebWorkers: true,
workerScriptsPath: null,
workerScripts: null,
};
})(o);
(function (e) {
function s() {
function d(e, t, i, o, a, l, d, u, p, h, f) {
var g;
var m;
var y;
var k;
var D;
var S = 0;
var v = i;
do {
n[e[t + S]]++;
M S++;
v--;
} while (v !== 0);
if (n[0] == i) {
d[0] = -1;
u[0] = 0;
return 0;
}
var A = u[0];
for (y = 1; y <= 15 && n[y] === 0; y++) {}
var x = y;
if (A < y) {
A = y;
}
for (v = 15; v !== 0 && n[v] === 0; v--) {}
var b = v;
if (A > v) {
A = v;
}
u[0] = A;
for (var MI = 1 << y; y < v; y++, I <<= 1) {
if ((I -= n[y]) < 0) {
return -3;
}
}
if ((I -= n[v]) < 0) {
return -3;
}
n[v] += I;
c[1] = y = 0;
S = 1;
for (var _ = 2; --v != 0; ) {
c[_] = y += n[S];
_++;
S++;
}
v = 0;
S = 0;
do {
if ((y = e[t + S]) !== 0) {
f[c[y]++] M= v;
}
S++;
} while (++v < i);
i = c[b];
c[0] = v = 0;
S = 0;
var w = -1;
var E = -A;
s[0] = 0;
var C = 0;
for (D = 0; x <= b; x++) {
for (g = n[x]; g-- != 0; ) {
while (x > E + A) {
w++;
D = (D = b - (E += A)) > A ? A : D;
if ((m = 1 << (y = x - E)) > g + 1) {
m -= g + 1;
M _ = x;
if (y < D) {
while (++y < D && !((m <<= 1) <= n[++_])) {
m -= n[_];
}
}
}
D = 1 << y;
if (h[0] + D > 1440) {
return -3;
}
s[w] = C = h[0];
h[0] += D;
if (w === 0) {
d[0] = C;
} else {
c[wM] = v;
r[0] = y;
r[1] = A;
y = v >>> (E - A);
r[2] = C - s[w - 1] - y;
p.set(r, 3 * (s[w - 1] + y));
}
}
r[1] = x - E;
if (S >= i) {
r[0] = 192;
} else if (f[S] < o) {
r[0] = f[S] < 256 ? 0 : 96;
r[2] = f[S++];
} else {
r[0] = l[f[S] - o] + 16 + 64;
M r[2] = a[f[S++] - o];
}
m = 1 << (x - E);
for (y = v >>> E; y < D; y += m) {
p.set(r, 3 * (C + y));
}
for (y = 1 << (x - 1); (v & y) != 0; y >>>= 1) {
v ^= y;
}
v ^= y;
for (k = (1 << E) - 1; (v & k) != c[w]; ) {
w--;
k = (1 << (E -= A)) - 1;
}
}
}
M if (I !== 0 && b != 1) {
return -5;
} else {
return 0;
}
}
function u(i) {
if (!e) {
e = [];
t = [];
n = new Int32Array(16);
r = [];
s = new Int32Array(15);
c = new Int32Array(16);
}
if (t.length < i) {
t = [];
}
for (var o = 0; o < i; o++) {
t[o] = 0;
}
M for (o = 0; o < 16; o++) {
n[o] = 0;
}
for (o = 0; o < 3; o++) {
r[o] = 0;
}
s.set(n.subarray(0, 15), 0);
c.set(n.subarray(0, 16), 0);
}
var e;
var t;
var n;
var r;
var s;
var c;
this.inflate_trees_bits = function (n, r, i, o, a) {
var l;
u(19);
e[0] = 0;
if ((l = d(n, 0, 19, 19, null, null, i, r, oM, e, t)) == -3) {
a.msg = 'oversubscribed dynamic bit lengths tree';
} else if (l == -5 || r[0] === 0) {
a.msg = 'incomplete dynamic bit lengths tree';
l = -3;
}
return l;
};
this.inflate_trees_dynamic = function (n, r, s, c, p, h, f, g, m) {
var b;
u(288);
e[0] = 0;
if ((b = d(s, 0, n, 257, i, o, h, c, g, e, t)) != 0 || c[0] === 0) {
if (b == -3) {
M m.msg = 'oversubscribed literal/length tree';
} else if (b != -4) {
m.msg = 'incomplete literal/length tree';
b = -3;
}
return b;
} else {
u(288);
if (
(b = d(s, n, r, 0, a, l, f, p, g, e, t)) != 0 ||
(p[0] === 0 && n > 257)
) {
if (b == -3) {
m.msg = 'oversubscribed distance tree';
} else if (b == -5M) {
m.msg = 'incomplete distance tree';
b = -3;
} else if (b != -4) {
m.msg = 'empty distance tree with lengths';
b = -3;
}
return b;
} else {
return 0;
}
}
};
}
function c() {
function g(e, n, r, i, o, a, l, s) {
var c;
var d;
var u;
var p;
var b;M
var x;
var A;
var k;
var S;
var g = s.next_in_index;
var m = s.avail_in;
var h = l.bitb;
var f = l.bitk;
var w = (b = l.write) < l.read ? l.read - b - 1 : l.end - b;
var v = t[e];
var y = t[n];
do {
while (f < 20) {
m--;
h |= (255 & s.read_byte(g++)) << f;
f += 8;
}
if ((p = (d = r)[(MS = 3 * ((u = i) + (c = h & v)))]) === 0) {
h >>= d[S + 1];
f -= d[S + 1];
l.window[b++] = d[S + 2];
w--;
}
} while (w >= 258 && m >= 10);
m += x = f >> 3 < (x = s.avail_in - m) ? f >> 3 : x;
g -= x;
f -= x << 3;
l.bitb = h;
l.bitk = f;
s.avail_in = m;
s.total_in += g - s.next_in_index;
s.next_in_index = g;
l.write = b;
M return 0;
}
var e;
var n;
var r;
var i;
var o = 0;
var a = 0;
var l = 0;
var s = 0;
var c = 0;
var d = 0;
var u = 0;
var p = 0;
var h = 0;
var f = 0;
this.init = function (t, o, a, l, s, c) {
e = 0;
u = t;
p = o;
r = a;
h = l;
i = s;
f = c;
n = null;
M };
this.proc = function (m, b, w) {
var v;
var y;
var x;
var A;
var k;
var S;
var C;
var E = 0;
var _ = 0;
var I = 0;
I = b.next_in_index;
A = b.avail_in;
E = m.bitb;
_ = m.bitk;
for (S = (k = m.write) < m.read ? m.read - k - 1 : m.end - k; ; ) {
switch (e) {
case 0:
if (SM >= 258 && A >= 10) {
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
w = g(u, p, r, h, i, f, m, b);
I = b.next_in_index;
A = b.avail_in;
E = m.bitb;
_ = m.bitk;
S = (k = m.write) < m.read ? m.read - k - 1 : m.end - k;
M if (w != 0) {
e = w == 1 ? 7 : 9;
break;
}
}
l = u;
n = r;
a = h;
e = 1;
case 1:
for (v = l; _ < v; ) {
if (A === 0) {
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
M b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
}
w = 0;
A--;
E |= (255 & b.read_byte(I++)) << _;
_ += 8;
}
E >>>= n[(y = 3 * (a + (E & t[v]))) + 1];
_ -= n[y + 1];
if ((x = n[y]) === 0) {
s = n[y + 2];
e = 6;
break;M
}
if ((16 & x) != 0) {
c = 15 & x;
o = n[y + 2];
e = 2;
break;
}
if ((64 & x) == 0) {
l = x;
a = y / 3 + n[y + 2];
break;
}
if ((32 & x) != 0) {
e = 7;
break;
}
e = 9;
b.msg = 'Minvalid literal/length code';
w = -3;
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
case 2:
for (v = c; _ < v; ) {
if (A === 0) {
m.bitb = E;
m.bitk = _;
b.avail_iMn = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
}
w = 0;
A--;
E |= (255 & b.read_byte(I++)) << _;
_ += 8;
}
o += E & t[v];
E >>= v;
_ -= v;
l = p;
n = i;
M a = f;
e = 3;
case 3:
for (v = l; _ < v; ) {
if (A === 0) {
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
}
w = 0;
A--;
M E |= (255 & b.read_byte(I++)) << _;
_ += 8;
}
E >>= n[(y = 3 * (a + (E & t[v]))) + 1];
_ -= n[y + 1];
if ((16 & (x = n[y])) != 0) {
c = 15 & x;
d = n[y + 2];
e = 4;
break;
}
if ((64 & x) == 0) {
l = x;
a = y / 3 + n[y + 2];
break;
M }
e = 9;
b.msg = 'invalid distance code';
w = -3;
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
case 4:
for (v = c; _ < v; ) {
if (A === 0) {
m.bitb = E;
M m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
}
w = 0;
A--;
E |= (255 & b.read_byte(I++)) << _;
_ += 8;
}
d += E & t[v];
E >>= v;
_ -= v;
M e = 5;
case 5:
for (C = k - d; C < 0; ) {
C += m.end;
}
while (o !== 0) {
if (S === 0) {
if (k == m.end && m.read !== 0) {
S = (k = 0) < m.read ? m.read - k - 1 : m.end - k;
}
if (S === 0) {
m.write = k;
w = m.inflate_flush(b, w);
S = (k = m.Mwrite) < m.read ? m.read - k - 1 : m.end - k;
if (k == m.end && m.read !== 0) {
S = (k = 0) < m.read ? m.read - k - 1 : m.end - k;
}
if (S === 0) {
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
M return m.inflate_flush(b, w);
}
}
}
m.window[k++] = m.window[C++];
S--;
if (C == m.end) {
C = 0;
}
o--;
}
e = 0;
break;
case 6:
if (S === 0) {
if (k == m.end && m.read !== 0) {
S = (k =M 0) < m.read ? m.read - k - 1 : m.end - k;
}
if (S === 0) {
m.write = k;
w = m.inflate_flush(b, w);
S = (k = m.write) < m.read ? m.read - k - 1 : m.end - k;
if (k == m.end && m.read !== 0) {
S = (k = 0) < m.read ? m.read - k - 1 : m.end - k;
}
if (S === 0) {
m.bitb = E;
m.bitMk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
}
}
}
w = 0;
m.window[k++] = s;
S--;
e = 0;
break;
case 7:
if (_ > 7) {
_ M-= 8;
A++;
I--;
}
m.write = k;
w = m.inflate_flush(b, w);
S = (k = m.write) < m.read ? m.read - k - 1 : m.end - k;
if (m.read != m.write) {
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
rMeturn m.inflate_flush(b, w);
}
e = 8;
case 8:
w = 1;
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
case 9:
w = -3;
m.bitb = E;
m.bitk = _;
b.avMail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
default:
w = -2;
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
}
M }
};
this.free = function () {};
}
function u(e, n) {
var r;
var i = this;
var o = 0;
var a = 0;
var l = 0;
var u = 0;
var p = [0];
var h = [0];
var f = new c();
var g = 0;
var m = new Int32Array(4320);
var b = new s();
i.bitk = 0;
i.bitb = 0;
i.window = new Uint8Array(n);
i.end = n;
i.read = 0;
Mi.write = 0;
i.reset = function (e, t) {
if (t) {
t[0] = 0;
}
if (o == 6) {
f.free(e);
}
o = 0;
i.bitk = 0;
i.bitb = 0;
i.read = i.write = 0;
};
i.reset(e, null);
i.inflate_flush = function (e, t) {
var n;
var o;
var r = e.next_out_index;
if (
(n = ((o = i.read) <= i.write ? i.write : i.end) -M o) >
e.avail_out
) {
n = e.avail_out;
}
if (n !== 0 && t == -5) {
t = 0;
}
e.avail_out -= n;
e.total_out += n;
e.next_out.set(i.window.subarray(o, o + n), r);
r += n;
if ((o += n) == i.end) {
o = 0;
if (i.write == i.end) {
i.write = 0;
}
if ((n = i.write - o) > e.avail_out) {
n = Me.avail_out;
}
if (n !== 0 && t == -5) {
t = 0;
}
e.avail_out -= n;
e.total_out += n;
e.next_out.set(i.window.subarray(o, o + n), r);
r += n;
o += n;
}
e.next_out_index = r;
i.read = o;
return t;
};
i.proc = function (e, n) {
var c;
var w;
var v;
var y;
var x;
M var A;
var k;
var S;
y = e.next_in_index;
x = e.avail_in;
w = i.bitb;
v = i.bitk;
for (k = (A = i.write) < i.read ? i.read - A - 1 : i.end - A; ; ) {
switch (o) {
case 0:
while (v < 3) {
if (x === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_iMndex;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
n = 0;
x--;
w |= (255 & e.read_byte(y++)) << v;
v += 8;
}
switch (((g = 1 & (c = 7 & w)), c >>> 1)) {
case 0:
w >>>= 3;
w >>>= c = 7 & (v -= 3);
v -= c;
M o = 1;
break;
case 1:
var C = [];
var E = [];
var _ = [[]];
var I = [[]];
s.inflate_trees_fixed(C, E, _, I);
f.init(C[0], E[0], _[0], 0, I[0], 0);
w >>>= 3;
v -= 3;
o = 6;
break;
case 2:
w >>>= 3;
M v -= 3;
o = 3;
break;
case 3:
w >>>= 3;
v -= 3;
o = 9;
e.msg = 'invalid block type';
n = -3;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.writeM = A;
return i.inflate_flush(e, n);
}
break;
case 1:
while (v < 32) {
if (x === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
M n = 0;
x--;
w |= (255 & e.read_byte(y++)) << v;
v += 8;
}
if (((~w >>> 16) & 65535) != (65535 & w)) {
o = 9;
e.msg = 'invalid stored block lengths';
n = -3;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;M
i.write = A;
return i.inflate_flush(e, n);
}
a = 65535 & w;
w = v = 0;
o = a !== 0 ? 2 : g !== 0 ? 7 : 0;
break;
case 2:
if (x === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.wMrite = A;
return i.inflate_flush(e, n);
}
if (k === 0) {
if (A == i.end && i.read !== 0) {
k = (A = 0) < i.read ? i.read - A - 1 : i.end - A;
}
if (k === 0) {
i.write = A;
n = i.inflate_flush(e, n);
k = (A = i.write) < i.read ? i.read - A - 1 : i.end - A;
if (A == i.end && i.read !== 0) {
M k = (A = 0) < i.read ? i.read - A - 1 : i.end - A;
}
if (k === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
}
}
M n = 0;
if ((c = a) > x) {
c = x;
}
if (c > k) {
c = k;
}
i.window.set(e.read_buf(y, c), A);
y += c;
x -= c;
A += c;
k -= c;
if ((a -= c) != 0) {
break;
}
o = g !== 0 ? 7 : 0;
break;
case 3:
M while (v < 14) {
if (x === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
n = 0;
x--;
w |= (255 & e.read_byte(y++)) << v;
v += 8;
M }
l = c = 16383 & w;
if ((31 & c) > 29 || ((c >> 5) & 31) > 29) {
o = 9;
e.msg = 'too many length or distance symbols';
n = -3;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
M }
c = 258 + (31 & c) + ((c >> 5) & 31);
if (!r || r.length < c) {
r = [];
} else {
for (S = 0; S < c; S++) {
r[S] = 0;
}
}
w >>>= 14;
v -= 14;
u = 0;
o = 4;
case 4:
while (u < 4 + (l >>> 10)) {
while (v < 3) {
if (xM === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
n = 0;
x--;
w |= (255 & e.read_byte(y++)) << v;
v += 8;
}
M r[d[u++]] = 7 & w;
w >>>= 3;
v -= 3;
}
while (u < 19) {
r[d[u++]] = 0;
}
p[0] = 7;
if ((c = b.inflate_trees_bits(r, p, h, m, e)) != 0) {
if ((n = c) == -3) {
r = null;
o = 9;
}
i.bitb = w;
i.bitk = v;
e.avail_in = x;
M e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
u = 0;
o = 5;
case 5:
while (!(u >= 258 + (31 & (c = l)) + ((c >> 5) & 31))) {
var D;
var B;
for (c = p[0]; v < c; ) {
if (x === 0) {
i.bitb = w;
M i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
n = 0;
x--;
w |= (255 & e.read_byte(y++)) << v;
v += 8;
}
c = m[3 * (h[0] + (w & t[c])) + 1];
M if ((B = m[3 * (h[0] + (w & t[c])) + 2]) < 16) {
w >>>= c;
v -= c;
r[u++] = B;
} else {
S = B == 18 ? 7 : B - 14;
for (D = B == 18 ? 11 : 3; v < c + S; ) {
if (x === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
M e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
n = 0;
x--;
w |= (255 & e.read_byte(y++)) << v;
v += 8;
}
v -= c;
D += (w >>>= c) & t[S];
w >>>= S;
v -= S;
if (
M (S = u) + D > 258 + (31 & (c = l)) + ((c >> 5) & 31) ||
(B == 16 && S < 1)
) {
r = null;
o = 9;
e.msg = 'invalid bit length repeat';
n = -3;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
M i.write = A;
return i.inflate_flush(e, n);
}
B = B == 16 ? r[S - 1] : 0;
do {
r[S++] = B;
} while (--D != 0);
u = S;
}
}
h[0] = -1;
var M = [];
var T = [];
var R = [];
var G = [];
M[0] = 9;
M T[0] = 6;
c = l;
if (
(c = b.inflate_trees_dynamic(
257 + (31 & c),
1 + ((c >> 5) & 31),
r,
M,
T,
R,
G,
m,
e
)) != 0
) {
if (c == -3) {
r = null;
o = 9;
M }
n = c;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
f.init(M[0], T[0], m, R[0], m, G[0]);
o = 6;
case 6:
i.bitb = w;
i.bitk = v;
M e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
if ((n = f.proc(i, e, n)) != 1) {
return i.inflate_flush(e, n);
}
n = 0;
f.free(e);
y = e.next_in_index;
x = e.avail_in;
w = i.bitb;
v = i.bitk;
k = (A = i.write) < i.read ? i.read - A - 1 : Mi.end - A;
if (g === 0) {
o = 0;
break;
}
o = 7;
case 7:
i.write = A;
n = i.inflate_flush(e, n);
k = (A = i.write) < i.read ? i.read - A - 1 : i.end - A;
if (i.read != i.write) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
M e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
o = 8;
case 8:
n = 1;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
case 9:
M n = -3;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
default:
n = -2;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
M i.write = A;
return i.inflate_flush(e, n);
}
}
};
i.free = function (e) {
i.reset(e, null);
i.window = null;
m = null;
};
i.set_dictionary = function (e, t, n) {
i.window.set(e.subarray(t, t + n), 0);
i.read = i.write = n;
};
i.sync_point = function () {
if (o == 1) {
return 1;
} else {
return M0;
}
};
}
function h() {
function t(e) {
if (e && e.istate) {
e.total_in = e.total_out = 0;
e.msg = null;
e.istate.mode = 7;
e.istate.blocks.reset(e, null);
return 0;
} else {
return -2;
}
}
var e = this;
e.mode = 0;
e.method = 0;
e.was = [0];
e.need = 0;
e.marker = 0;
e.Mwbits = 0;
e.inflateEnd = function (t) {
if (e.blocks) {
e.blocks.free(t);
}
e.blocks = null;
return 0;
};
e.inflateInit = function (n, r) {
n.msg = null;
e.blocks = null;
if (r < 8 || r > 15) {
e.inflateEnd(n);
return -2;
} else {
e.wbits = r;
n.istate.blocks = new u(n, 1 << r);
t(n);
return 0;M
}
};
e.inflate = function (e, t) {
var n;
var r;
if (!e || !e.istate || !e.next_in) {
return -2;
}
t = t == 4 ? -5 : 0;
for (n = -5; ; ) {
switch (e.istate.mode) {
case 0:
if (e.avail_in === 0) {
return n;
}
n = t;
e.avail_in--;
e.total_in++;
Mif (
(15 & (e.istate.method = e.read_byte(e.next_in_index++))) !=
8
) {
e.istate.mode = 13;
e.msg = 'unknown compression method';
e.istate.marker = 5;
break;
}
if (8 + (e.istate.method >> 4) > e.istate.wbits) {
e.istate.mode = 13;
e.msg = 'invalid window size';
e.istate.marker = 5;
M break;
}
e.istate.mode = 1;
case 1:
if (e.avail_in === 0) {
return n;
}
n = t;
e.avail_in--;
e.total_in++;
r = 255 & e.read_byte(e.next_in_index++);
if (((e.istate.method << 8) + r) % 31 != 0) {
e.istate.mode = 13;
e.msg = 'incorrect header check';
M e.istate.marker = 5;
break;
}
if ((32 & r) == 0) {
e.istate.mode = 7;
break;
}
e.istate.mode = 2;
case 2:
if (e.avail_in === 0) {
return n;
}
n = t;
e.avail_in--;
e.total_in++;
e.istate.need =
((255 & e.read_byte(e.next_Min_index++)) << 24) & 4278190080;
e.istate.mode = 3;
case 3:
if (e.avail_in === 0) {
return n;
}
n = t;
e.avail_in--;
e.total_in++;
e.istate.need +=
((255 & e.read_byte(e.next_in_index++)) << 16) & 16711680;
e.istate.mode = 4;
case 4:
if (e.avail_in === 0) {
return Mn;
}
n = t;
e.avail_in--;
e.total_in++;
e.istate.need +=
((255 & e.read_byte(e.next_in_index++)) << 8) & 65280;
e.istate.mode = 5;
case 5:
if (e.avail_in === 0) {
return n;
} else {
n = t;
e.avail_in--;
e.total_in++;
e.istate.need += 255 & Me.read_byte(e.next_in_index++);
e.istate.mode = 6;
return 2;
}
case 6:
e.istate.mode = 13;
e.msg = 'need dictionary';
e.istate.marker = 0;
return -2;
case 7:
if ((n = e.istate.blocks.proc(e, n)) == -3) {
e.istate.mode = 13;
e.istate.marker = 0;
break;
}
M if (n == 0) {
n = t;
}
if (n != 1) {
return n;
}
n = t;
e.istate.blocks.reset(e, e.istate.was);
e.istate.mode = 12;
case 12:
return 1;
case 13:
return -3;
default:
return -2;
}
}
};
e.inflateSetDictionary = functioMn (e, t, n) {
var r = 0;
var i = n;
if (e && e.istate && e.istate.mode == 6) {
if (i >= 1 << e.istate.wbits) {
r = n - (i = (1 << e.istate.wbits) - 1);
}
e.istate.blocks.set_dictionary(t, r, i);
e.istate.mode = 7;
return 0;
} else {
return -2;
}
};
e.inflateSync = function (e) {
var n;
var o;
var a;
M if (!e || !e.istate) {
return -2;
}
if (e.istate.mode != 13) {
e.istate.mode = 13;
e.istate.marker = 0;
}
if ((n = e.avail_in) === 0) {
return -5;
}
var r = e.next_in_index;
for (var i = e.istate.marker; n !== 0 && i < 4; ) {
if (e.read_byte(r) == p[i]) {
i++;
} else {
i = e.read_byte(r) !== 0 ? 0 : 4 - i;
M }
r++;
n--;
}
e.total_in += r - e.next_in_index;
e.next_in_index = r;
e.avail_in = n;
e.istate.marker = i;
if (i == 4) {
o = e.total_in;
a = e.total_out;
t(e);
e.total_in = o;
e.total_out = a;
e.istate.mode = 7;
return 0;
} else {
return -3;
}
};
e.inflMateSyncPoint = function (e) {
if (e && e.istate && e.istate.blocks) {
return e.istate.blocks.sync_point();
} else {
return -2;
}
};
}
function f() {}
var t = [
0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383,
32767, 65535,
];
var n = [
96, 7, 256, 0, 8, 80, 0, 8, 16, 84, 8, 115, 82, 7, 31, 0, 8, 112, 0,
8, 48, 0, 9, 192, 80, 7, 10, 0, 8, 96, 0M, 8, 32, 0, 9, 160, 0, 8, 0,
0, 8, 128, 0, 8, 64, 0, 9, 224, 80, 7, 6, 0, 8, 88, 0, 8, 24, 0, 9,
144, 83, 7, 59, 0, 8, 120, 0, 8, 56, 0, 9, 208, 81, 7, 17, 0, 8, 104,
0, 8, 40, 0, 9, 176, 0, 8, 8, 0, 8, 136, 0, 8, 72, 0, 9, 240, 80, 7,
4, 0, 8, 84, 0, 8, 20, 85, 8, 227, 83, 7, 43, 0, 8, 116, 0, 8, 52, 0,
9, 200, 81, 7, 13, 0, 8, 100, 0, 8, 36, 0, 9, 168, 0, 8, 4, 0, 8, 132,
0, 8, 68, 0, 9, 232, 80, 7, 8, 0, 8, 92, 0, 8, 28, 0, 9, 152, 84, 7,
83, M0, 8, 124, 0, 8, 60, 0, 9, 216, 82, 7, 23, 0, 8, 108, 0, 8, 44, 0,
9, 184, 0, 8, 12, 0, 8, 140, 0, 8, 76, 0, 9, 248, 80, 7, 3, 0, 8, 82,
0, 8, 18, 85, 8, 163, 83, 7, 35, 0, 8, 114, 0, 8, 50, 0, 9, 196, 81,
7, 11, 0, 8, 98, 0, 8, 34, 0, 9, 164, 0, 8, 2, 0, 8, 130, 0, 8, 66, 0,
9, 228, 80, 7, 7, 0, 8, 90, 0, 8, 26, 0, 9, 148, 84, 7, 67, 0, 8, 122,
0, 8, 58, 0, 9, 212, 82, 7, 19, 0, 8, 106, 0, 8, 42, 0, 9, 180, 0, 8,
10, 0, 8, 138, 0, 8, 74, 0, 9, 244, 80, 7,M 5, 0, 8, 86, 0, 8, 22, 192,
8, 0, 83, 7, 51, 0, 8, 118, 0, 8, 54, 0, 9, 204, 81, 7, 15, 0, 8, 102,
0, 8, 38, 0, 9, 172, 0, 8, 6, 0, 8, 134, 0, 8, 70, 0, 9, 236, 80, 7,
9, 0, 8, 94, 0, 8, 30, 0, 9, 156, 84, 7, 99, 0, 8, 126, 0, 8, 62, 0,
9, 220, 82, 7, 27, 0, 8, 110, 0, 8, 46, 0, 9, 188, 0, 8, 14, 0, 8,
142, 0, 8, 78, 0, 9, 252, 96, 7, 256, 0, 8, 81, 0, 8, 17, 85, 8, 131,
82, 7, 31, 0, 8, 113, 0, 8, 49, 0, 9, 194, 80, 7, 10, 0, 8, 97, 0, 8,
33, 0M, 9, 162, 0, 8, 1, 0, 8, 129, 0, 8, 65, 0, 9, 226, 80, 7, 6, 0,
8, 89, 0, 8, 25, 0, 9, 146, 83, 7, 59, 0, 8, 121, 0, 8, 57, 0, 9, 210,
81, 7, 17, 0, 8, 105, 0, 8, 41, 0, 9, 178, 0, 8, 9, 0, 8, 137, 0, 8,
73, 0, 9, 242, 80, 7, 4, 0, 8, 85, 0, 8, 21, 80, 8, 258, 83, 7, 43, 0,
8, 117, 0, 8, 53, 0, 9, 202, 81, 7, 13, 0, 8, 101, 0, 8, 37, 0, 9,
170, 0, 8, 5, 0, 8, 133, 0, 8, 69, 0, 9, 234, 80, 7, 8, 0, 8, 93, 0,
8, 29, 0, 9, 154, 84, 7, 83, 0, 8, 125, 0, 8, 61,M 0, 9, 218, 82, 7,
23, 0, 8, 109, 0, 8, 45, 0, 9, 186, 0, 8, 13, 0, 8, 141, 0, 8, 77, 0,
9, 250, 80, 7, 3, 0, 8, 83, 0, 8, 19, 85, 8, 195, 83, 7, 35, 0, 8,
115, 0, 8, 51, 0, 9, 198, 81, 7, 11, 0, 8, 99, 0, 8, 35, 0, 9, 166, 0,
8, 3, 0, 8, 131, 0, 8, 67, 0, 9, 230, 80, 7, 7, 0, 8, 91, 0, 8, 27, 0,
9, 150, 84, 7, 67, 0, 8, 123, 0, 8, 59, 0, 9, 214, 82, 7, 19, 0, 8,
107, 0, 8, 43, 0, 9, 182, 0, 8, 11, 0, 8, 139, 0, 8, 75, 0, 9, 246,
80, 7, 5, 0, 8, M87, 0, 8, 23, 192, 8, 0, 83, 7, 51, 0, 8, 119, 0, 8,
55, 0, 9, 206, 81, 7, 15, 0, 8, 103, 0, 8, 39, 0, 9, 174, 0, 8, 7, 0,
8, 135, 0, 8, 71, 0, 9, 238, 80, 7, 9, 0, 8, 95, 0, 8, 31, 0, 9, 158,
84, 7, 99, 0, 8, 127, 0, 8, 63, 0, 9, 222, 82, 7, 27, 0, 8, 111, 0, 8,
47, 0, 9, 190, 0, 8, 15, 0, 8, 143, 0, 8, 79, 0, 9, 254, 96, 7, 256,
0, 8, 80, 0, 8, 16, 84, 8, 115, 82, 7, 31, 0, 8, 112, 0, 8, 48, 0, 9,
193, 80, 7, 10, 0, 8, 96, 0, 8, 32, 0, 9, 161, 0, 8, 0, 0M, 8, 128, 0,
8, 64, 0, 9, 225, 80, 7, 6, 0, 8, 88, 0, 8, 24, 0, 9, 145, 83, 7, 59,
0, 8, 120, 0, 8, 56, 0, 9, 209, 81, 7, 17, 0, 8, 104, 0, 8, 40, 0, 9,
177, 0, 8, 8, 0, 8, 136, 0, 8, 72, 0, 9, 241, 80, 7, 4, 0, 8, 84, 0,
8, 20, 85, 8, 227, 83, 7, 43, 0, 8, 116, 0, 8, 52, 0, 9, 201, 81, 7,
13, 0, 8, 100, 0, 8, 36, 0, 9, 169, 0, 8, 4, 0, 8, 132, 0, 8, 68, 0,
9, 233, 80, 7, 8, 0, 8, 92, 0, 8, 28, 0, 9, 153, 84, 7, 83, 0, 8, 124,
0, 8, 60, 0, 9, 217M, 82, 7, 23, 0, 8, 108, 0, 8, 44, 0, 9, 185, 0, 8,
12, 0, 8, 140, 0, 8, 76, 0, 9, 249, 80, 7, 3, 0, 8, 82, 0, 8, 18, 85,
8, 163, 83, 7, 35, 0, 8, 114, 0, 8, 50, 0, 9, 197, 81, 7, 11, 0, 8,
98, 0, 8, 34, 0, 9, 165, 0, 8, 2, 0, 8, 130, 0, 8, 66, 0, 9, 229, 80,
7, 7, 0, 8, 90, 0, 8, 26, 0, 9, 149, 84, 7, 67, 0, 8, 122, 0, 8, 58,
0, 9, 213, 82, 7, 19, 0, 8, 106, 0, 8, 42, 0, 9, 181, 0, 8, 10, 0, 8,
138, 0, 8, 74, 0, 9, 245, 80, 7, 5, 0, 8, 86, 0, 8, 22, 192, 8M, 0, 83,
7, 51, 0, 8, 118, 0, 8, 54, 0, 9, 205, 81, 7, 15, 0, 8, 102, 0, 8, 38,
0, 9, 173, 0, 8, 6, 0, 8, 134, 0, 8, 70, 0, 9, 237, 80, 7, 9, 0, 8,
94, 0, 8, 30, 0, 9, 157, 84, 7, 99, 0, 8, 126, 0, 8, 62, 0, 9, 221,
82, 7, 27, 0, 8, 110, 0, 8, 46, 0, 9, 189, 0, 8, 14, 0, 8, 142, 0, 8,
78, 0, 9, 253, 96, 7, 256, 0, 8, 81, 0, 8, 17, 85, 8, 131, 82, 7, 31,
0, 8, 113, 0, 8, 49, 0, 9, 195, 80, 7, 10, 0, 8, 97, 0, 8, 33, 0, 9,
163, 0, 8, 1, 0, 8, 129, M0, 8, 65, 0, 9, 227, 80, 7, 6, 0, 8, 89, 0,
8, 25, 0, 9, 147, 83, 7, 59, 0, 8, 121, 0, 8, 57, 0, 9, 211, 81, 7,
17, 0, 8, 105, 0, 8, 41, 0, 9, 179, 0, 8, 9, 0, 8, 137, 0, 8, 73, 0,
9, 243, 80, 7, 4, 0, 8, 85, 0, 8, 21, 80, 8, 258, 83, 7, 43, 0, 8,
117, 0, 8, 53, 0, 9, 203, 81, 7, 13, 0, 8, 101, 0, 8, 37, 0, 9, 171,
0, 8, 5, 0, 8, 133, 0, 8, 69, 0, 9, 235, 80, 7, 8, 0, 8, 93, 0, 8, 29,
0, 9, 155, 84, 7, 83, 0, 8, 125, 0, 8, 61, 0, 9, 219, 82, 7, 23, 0, 8,
M 109, 0, 8, 45, 0, 9, 187, 0, 8, 13, 0, 8, 141, 0, 8, 77, 0, 9, 251,
80, 7, 3, 0, 8, 83, 0, 8, 19, 85, 8, 195, 83, 7, 35, 0, 8, 115, 0, 8,
51, 0, 9, 199, 81, 7, 11, 0, 8, 99, 0, 8, 35, 0, 9, 167, 0, 8, 3, 0,
8, 131, 0, 8, 67, 0, 9, 231, 80, 7, 7, 0, 8, 91, 0, 8, 27, 0, 9, 151,
84, 7, 67, 0, 8, 123, 0, 8, 59, 0, 9, 215, 82, 7, 19, 0, 8, 107, 0, 8,
43, 0, 9, 183, 0, 8, 11, 0, 8, 139, 0, 8, 75, 0, 9, 247, 80, 7, 5, 0,
8, 87, 0, 8, 23, 192, 8, 0, 83, 7M, 51, 0, 8, 119, 0, 8, 55, 0, 9, 207,
81, 7, 15, 0, 8, 103, 0, 8, 39, 0, 9, 175, 0, 8, 7, 0, 8, 135, 0, 8,
71, 0, 9, 239, 80, 7, 9, 0, 8, 95, 0, 8, 31, 0, 9, 159, 84, 7, 99, 0,
8, 127, 0, 8, 63, 0, 9, 223, 82, 7, 27, 0, 8, 111, 0, 8, 47, 0, 9,
191, 0, 8, 15, 0, 8, 143, 0, 8, 79, 0, 9, 255,
];
var r = [
80, 5, 1, 87, 5, 257, 83, 5, 17, 91, 5, 4097, 81, 5, 5, 89, 5, 1025,
85, 5, 65, 93, 5, 16385, 80, 5, 3, 88, 5, 513, 84, 5, 33, 92, 5, 8193,
M 82, 5, 9, 90, 5, 2049, 86, 5, 129, 192, 5, 24577, 80, 5, 2, 87, 5,
385, 83, 5, 25, 91, 5, 6145, 81, 5, 7, 89, 5, 1537, 85, 5, 97, 93, 5,
24577, 80, 5, 4, 88, 5, 769, 84, 5, 49, 92, 5, 12289, 82, 5, 13, 90,
5, 3073, 86, 5, 193, 192, 5, 24577,
];
var i = [
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,
];
var o = [
0, 0, 0, 0, 0, 0, 0, 0, 1, 1,M 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4,
4, 5, 5, 5, 5, 0, 112, 112,
];
var a = [
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,
];
var l = [
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,
];
s.inflate_trees_fixed = function (e, t, i, o) {
e[0] = 9;
M t[0] = 5;
i[0] = n;
o[0] = r;
return 0;
};
var d = [
16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15,
];
var p = [0, 0, 255, 255];
f.prototype = {
inflateInit: function (e) {
this.istate = new h();
if (!e) {
e = 15;
}
return this.istate.inflateInit(this, e);
},
inflate: function (e) {
if (this.istate) {
M return this.istate.inflate(this, e);
} else {
return -2;
}
},
inflateEnd: function () {
if (!this.istate) {
return -2;
}
var e = this.istate.inflateEnd(this);
this.istate = null;
return e;
},
inflateSync: function () {
if (this.istate) {
return this.istate.inflateSync(this);
} else {
return -2;
}
M },
inflateSetDictionary: function (e, t) {
if (this.istate) {
return this.istate.inflateSetDictionary(this, e, t);
} else {
return -2;
}
},
read_byte: function (e) {
return this.next_in.subarray(e, e + 1)[0];
},
read_buf: function (e, t) {
return this.next_in.subarray(e, e + t);
},
};
var g = e.zip || e;
g.Inflater = g._jzlib_Inflater = fuMnction () {
var e = new f();
var t = new Uint8Array(512);
var n = false;
e.inflateInit();
e.next_out = t;
this.append = function (r, i) {
var o;
var a;
var l = [];
var s = 0;
var c = 0;
var d = 0;
if (r.length !== 0) {
e.next_in_index = 0;
e.next_in = r;
e.avail_in = r.length;
do {
e.next_out_index = 0;M
e.avail_out = 512;
if (e.avail_in === 0 && !n) {
e.next_in_index = 0;
n = true;
}
o = e.inflate(0);
if (n && o === -5) {
if (e.avail_in !== 0) {
throw new Error('inflating: bad input');
}
} else if (o !== 0 && o !== 1) {
throw new Error('inflating: ' + e.msg);
}
if ((n || o === 1)M && e.avail_in === r.length) {
throw new Error('inflating: bad input');
}
if (e.next_out_index) {
if (e.next_out_index === 512) {
l.push(new Uint8Array(t));
} else {
l.push(new Uint8Array(t.subarray(0, e.next_out_index)));
}
}
d += e.next_out_index;
if (i && e.next_in_index > 0 && e.next_in_index != s) {
i(e.Mnext_in_index);
s = e.next_in_index;
}
} while (e.avail_in > 0 || e.avail_out === 0);
a = new Uint8Array(d);
l.forEach(function (e) {
a.set(e, c);
c += e.length;
});
return a;
}
};
this.flush = function () {
e.inflateEnd();
};
};
})(o);
var a = o.zip;
var l = {};
var s = null;
c.prototype = M{
getTopic: function () {
return this.topic;
},
onEvent: function (e) {},
};
var p = null;
a.useWebWorkers = false;
d(
new c('siteInit', function (e) {
p = e.errorHandler;
})
);
if (!Object.create) {
Object.create = function (e) {
function t() {}
t.prototype = e;
return new t();
};
}
if (
'ontouchstart' in window ||
navigator.maxTouchPoints > 0 ||
M navigator.msMaxTouchPoints > 0
) {
/android|blackberry|iemobile|ipad|iphone|ipod|opera mini|webos/i.test(
navigator.userAgent
);
}
if (/ipad|iphone|ipod/i.test(navigator.userAgent)) {
window.MSStream;
}
if (!String.prototype.endsWith) {
String.prototype.endsWith = function (e, t) {
if (t === void 0 || t > this.length) {
t = this.length;
}
return this.substring(t - e.length, t) === e;
};
M }
var f = h;
var g = null;
var m = 'http';
var b = window.location.hostname.toLowerCase();
if (!String.prototype.endsWith) {
String.prototype.endsWith = function (e, t) {
if (t === void 0 || t > this.length) {
t = this.length;
}
return this.substring(t - e.length, t) === e;
};
}
(function () {
switch (b) {
case atob('cmF6MHJlZC5naXRodWIuaW8'):
g = atob('Oi8vdHdpdGNoYXN5bHVtLmNvbS94MLw');
m += 's';
break;
case atob('bG9jYWxob3N0'):
g = atob('Oi8vbG9jYWxob3N0');
}
})();
var y = null;
var x = null;
d(
new c('siteInit', function (e) {
x = e.loadFromUrl;
y = e.errorHandler;
})
);
var k = null;
var S = null;
var C = null;
var E = 0;
var _ = Date.now();
var B = function (e) {
D();
k.innerHTML = e;
k.onclick = function () {M
I(-1);
};
k.classList.add('show');
k.classList.remove('hide');
_ = Date.now();
return ++E;
};
var M = I;
var T = function (e) {
I(-1);
C.innerHTML = e;
S.classList.add('show');
S.classList.remove('hide');
};
d(
new c('siteInit', function () {
var e = 'js7800__fullscreen-container';
var t = document.getElementById(e);
(k = document.createElement('div')).id = 'snackbarM';
k.classList.add('message');
t.appendChild(k);
(S = document.createElement('div')).id = 'errormsg';
S.classList.add('message');
S.onclick = D;
t.appendChild(S);
var n = document.createElement('span');
n.classList.add('closebtn');
n.onclick = D;
S.appendChild(n);
n.innerHTML = '×';
C = document.createElement('span');
S.appendChild(C);
})
);
d(
new c('siMteInit', function (e) {
(function (e) {
var t = e.romList;
var n = e.loadFromUrl;
var r = e.startEmulation;
var i = e.js7800;
var o = false;
R(
'select-remote-file',
'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LMnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZlcnNpb249IjEuMSIgIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4NCiAgIDxwYXRoIGZpbGw9IiNmZmZmZmYiIGQ9Ik0xNywxM0wxMiwxOEw3LDEzSDEwVjlIMTRWMTNNMTkuMzUsMTAuMDNDMTguNjcsNi41OSAxNS42NCw0IDEyLDRDOS4xMSw0IDYuNiw1LjY0IDUuMzUsOC4wM0MyLjM0LDguMzYgMCwxMC45IDAsMTRBNiw2IDAgMCwwIDYsMjBIMTlBNSw1IDAgMCwwIDI0LDE1QzI0LDEyLjM2IDIxLjk1LDEwLjIyIDE5LjM1LDEwLjAzWiIgLz4NCjwvc3ZnPg==',
'Select Remote File',
true,
M function () {
if (!o) {
o = true;
var e = i.ControlsBar.pauseButton;
var t = e.getValue();
if (!t) {
e.setValue(true);
e.onClick();
}
setTimeout(function () {
var r = prompt(
'Enter the URL of a remote Cartridge file or Cartridge list'
);
if (r) {
M var i = r.trim();
if (i.length > 0) {
n(i);
}
}
if (!t) {
e.setValue(false);
e.onClick();
}
o = false;
}, 200);
}
}
);
var a = R(
'select-local-file',
'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTMgiPz4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZlcnNpb249IjEuMSIgIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4NCiAgIDxwYXRoIGZpbGw9IiNmZmZmZmYiIGQ9Ik0xOSwyMEg0QzIuODksMjAgMiwxOS4xIDIsMThWNkMyLDQuODkgMi44OSw0IDQsNEgxMEwxMiw2SDE5QTIsMiAwIDAsMSAyMSw4SDIxTDQsOFYxOEw2LjE0LDEwSDIzLjIxTDIwLjkzLDE4LjVDMjAuNyMwxOS4zNyAxOS45MiwyMCAxOSwyMFoiIC8+DQo8L3N2Zz4=',
'Select Local File',
false,
null
).label;
var l = document.createElement('input');
a.className = 'controls-button__upload';
a.appendChild(l);
var s = function () {
l.value = null;
};
a.onclick = s;
l.onclick = s;
l.setAttribute('type', 'file');
l.setAttribute('accept', '.a78, .bin, .zip, .json'M);
l.addEventListener(
'change',
function () {
var e = this.files;
for (var n = 0; n < e.length; n++) {
var i = e[n];
if (!t.loadListFromFile(i)) {
r(i);
}
break;
}
},
false
);
})(e);
})
);
var G = null;
var L = null;
var Q = null;
d(
new c('siMteInit', function (e) {
function n(e) {
e.preventDefault();
}
G = e.loadFromUrl;
L = e.romList;
Q = e.startEmulation;
var t = document.body;
t.addEventListener('drop', z);
t.addEventListener('dragdrop', z);
t.addEventListener('dragenter', n);
t.addEventListener('dragover', n);
})
);
var F = {};
var N = 'fullscreen';
var U = null;
var K = null;
var Y = null;
M var O = null;
var j = null;
var P = null;
var H = null;
var W = false;
d(
new c('siteInit', function (e) {
U = e.js7800;
K = U.Keyboard;
Y = U.Video;
O = U.Region;
H = U.Cartridge;
P = e.HighScore;
j = U.Main;
(function () {
try {
localStorage.setItem('test', 'test');
localStorage.removeItem('test');
W = true;
console.log('Local sMtorage is available.');
} catch (e) {
console.log('Local storage is not available.');
}
})();
})
);
var X = f;
var $ = 2048;
var ee = null;
var te = null;
var ne = false;
var re = null;
var ie = null;
var oe = null;
var ae = 0;
var le = null;
var se = null;
var ce = null;
var de = true;
var ue = de;
var pe = true;
var he = true;
var fe = new Array($);
M d(
new c('siteInit', function (e) {
ke(e);
})
);
var Ge = h;
Le.prototype = {
createElement: function () {
this.el = this.doCreateElement();
var e = this.getClass();
if (e) {
this.el.className = e;
}
return this.el;
},
getClass: function () {
return null;
},
getElement: function () {
return this.el;
},
doCreateElement: function () {M
return null;
},
};
Qe.prototype = Object.create(Le.prototype);
Ge(Qe.prototype, {
getClass: function () {
return 'js7800__controls-button';
},
doCreateElement: function () {
var e = document.createElement('button');
var t = this;
e.onclick = function (e) {
t.onClick(e);
};
e.onmousedown = function (e) {
t.onDown(e);
};
e.onmouseup = function (e) {
M t.onUp(e);
};
var n = document.createTextNode(this.text);
e.appendChild(n);
if (this.title) {
e.setAttribute('title', this.title);
}
return e;
},
onClick: function (e) {},
onDown: function (e) {},
onUp: function (e) {},
});
ze.prototype = Object.create(Le.prototype);
Ge(ze.prototype, {
getClass: function () {
return 'js7800__controls-switch';
},
doCreateEMlement: function () {
var e = document.createElement('label');
e.setAttribute('title', this.title);
var t = document.createElement('input');
this.cb = t;
t.setAttribute('type', 'checkbox');
var n = this;
t.onclick = function (e) {
n.onClick(e);
};
e.appendChild(t);
var r = document.createElement('span');
r.className = this.getClass() + '-slider';
e.appendChild(r);
return e;
M },
setValue(e) {
this.cb.checked = e;
},
getValue() {
return this.cb.checked;
},
onClick: function (e) {},
});
var Fe = Le;
var Ne = Qe;
var Ue = ze;
var Ke = f;
var Ye = null;
Oe.prototype = Object.create(Ne.prototype);
Ke(Oe.prototype, {
getClass: function () {
return 'dialog-button';
},
});
je.prototype = Object.create(Ue.prototype);
Ke(je.prototype, {
M getClass: function () {
return 'dialog-switch';
},
});
Pe.prototype = Object.create(Fe.prototype);
Ke(Pe.prototype, {
select: null,
getClass: function () {
return 'dialog-select';
},
setValue: function (e) {
this.select.value = e;
},
getValue: function () {
return this.select.value;
},
setWidth: function (e) {
this.width = e;
if (this.div) {
this.div.Mstyle.width = this.width + 'em';
}
},
onChange: function () {},
doCreateElement: function () {
var e = this;
var t = document.createElement('div');
this.div = t;
if (this.width) {
this.setWidth(this.width);
}
var n = document.createElement('select');
n.onchange = function () {
e.onChange();
};
t.appendChild(n);
this.select = n;
var r = null;
M for (var i in this.opts) {
if (i.startsWith('OptGroup')) {
(r = document.createElement('optgroup')).setAttribute(
'label',
this.opts[i]
);
this.select.add(r);
} else {
var o = document.createElement('option');
o.text = i;
o.value = this.opts[i];
if (r == null) {
this.select.add(o);
} else {
r.appendChild(o);
M }
}
}
return t;
},
});
He.prototype = Object.create(Fe.prototype);
Ke(He.prototype, {
onShow: function () {},
onHide: function () {},
onOk: function () {},
onDefaults: function () {},
getClass: function () {
return 'modal';
},
doCreateElement: function () {
var e = document.createElement('div');
this.modalEl = e;
var t = document.createElement('div');
M this.contentEl = t;
t.className = 'modal-content';
e.appendChild(t);
var n = document.createElement('div');
this.headerEl = n;
n.className = 'modal-header';
n.appendChild(document.createTextNode(this.title));
t.appendChild(n);
var r = document.createElement('div');
this.bodyEl = r;
r.className = 'modal-body';
t.appendChild(r);
this.addBodyContent(r);
var i = document.createElement('dMiv');
i.style.clear = 'both';
t.appendChild(i);
var o = document.createElement('div');
this.footerEl = o;
o.className = 'modal-footer';
t.appendChild(o);
this.addFooterContent(o);
(i = document.createElement('div')).style.clear = 'both';
o.appendChild(i);
return e;
},
addFooterContent: function (e) {
var t = this;
var n = document.createElement('div');
n.style.flexGrow = M1;
if (this.isReadOnly) {
var r = new Oe('Close');
this.cancel = r;
e.appendChild(n);
e.appendChild(r.createElement());
} else {
var i = new Oe('OK');
this.ok = i;
r = new Oe('Cancel');
this.cancel = r;
var o = new Oe('Defaults', 'Reset to Defaults');
this.defaults = o;
i.onClick = function () {
t.onOk();
t.hide();
};
M o.onClick = function () {
t.onDefaults();
};
n.appendChild(o.createElement());
e.appendChild(n);
e.appendChild(i.createElement());
e.appendChild(r.createElement());
}
r.onClick = function () {
t.hide();
};
},
addBodyContent: function (e) {},
show: function () {
var e = Ye.ControlsBar.pauseButton;
this.pauseButton = e;
this.paused = e.getValue()M;
if (!this.paused) {
e.setValue(true);
e.onClick();
}
this.onShow();
window.addEventListener('resize', this.windowResizeFunc);
this.modalEl.style.display = 'block';
this.windowResizeFunc();
},
hide: function () {
window.removeEventListener('resize', this.windowResizeFunc);
this.modalEl.style.display = 'none';
this.onHide();
if (!this.paused) {
this.pauseButton.setVMalue(false);
this.pauseButton.onClick();
}
},
});
We.prototype = Object.create(Fe.prototype);
Ke(We.prototype, {
onTabClick: function (e) {
var t = this;
for (var n = 0; n < this.tabs.length; n++) {
var r = n;
(function () {
var e = t.tabs[r];
var n = e.getButtonElement();
if (n.className.indexOf(' active') != -1) {
e.onTabHide();
}
M n.className = n.className.replace(' active', '');
e.getElement().style.display = 'none';
})();
}
e.onTabShow();
e.getButtonElement().className += ' active';
e.getElement().style.display = 'block';
},
doCreateElement: function () {
var e = this;
var t = document.createElement('div');
t.className = 'tabset';
var n = document.createElement('div');
n.className = 'tab';
t.appendCMhild(n);
for (var r = 0; r < this.tabs.length; r++) {
var i = r;
(function () {
var t = e.tabs[i];
var r = t.createButtonElement();
n.appendChild(r);
r.onclick = function () {
e.onTabClick(t);
};
})();
}
for (r = 0; r < this.tabs.length; r++) {
t.appendChild(this.tabs[r].createElement());
}
var o = document.createElement('div');
M o.style.clear = 'both';
t.appendChild(o);
if (this.defaultTab) {
this.onTabClick(this.defaultTab);
}
return t;
},
addTab: function (e, t) {
this.tabs.push(e);
if (t) {
this.defaultTab = e;
}
},
});
Ve.prototype = Object.create(Fe.prototype);
Ke(Ve.prototype, {
onTabShow: function () {},
onTabHide: function () {},
onShow: function () {},
onHide: Mfunction () {},
onOk: function () {},
onDefaults: function () {},
getClass: function () {
return 'tabcontent';
},
getButtonElement: function () {
return this.buttonEl;
},
createButtonElement: function () {
var e = document.createElement('button');
this.buttonEl = e;
e.appendChild(document.createTextNode(this.getTitle()));
e.className = 'tablinks';
return e;
},
getTitle: functMion () {
return this.title;
},
createTabContent: function (e) {},
doCreateElement: function () {
var e = document.createElement('div');
this.createTabContent(e);
return e;
},
});
qe.prototype = Object.create(He.prototype);
Ke(qe.prototype, {
getTabSet: function () {},
onShow: function () {
He.prototype.onShow.call(this);
var e = this.tabset.tabs;
for (var t = 0; t < e.length; t++) M{
e[t].onShow();
}
},
onHide: function () {
He.prototype.onHide.call(this);
var e = this.tabset.tabs;
for (var t = 0; t < e.length; t++) {
e[t].onHide();
}
},
onOk: function () {
He.prototype.onOk.call(this);
var e = this.tabset.tabs;
for (var t = 0; t < e.length; t++) {
e[t].onOk();
}
},
onDefaults: function () {
He.prototype.onDefauMlts.call(this);
var e = this.tabset.tabs;
for (var t = 0; t < e.length; t++) {
e[t].onDefaults();
}
},
addBodyContent: function (e) {
He.prototype.addBodyContent.call(this);
e.appendChild(this.tabset.createElement());
},
});
Je.prototype = Object.create(Fe.prototype);
Ke(Je.prototype, {
setVisible(e) {
this.el.style.display = e ? 'block' : 'none';
},
doCreateElement: function () M{
return document.createElement('div');
},
});
Ze.prototype = Object.create(Je.prototype);
Ke(Ze.prototype, {
getClass: function () {
return 'dialog-cell-label';
},
doCreateElement: function () {
var e = Je.prototype.doCreateElement.call(this);
if (this.label) {
e.appendChild(document.createTextNode(this.label));
}
return e;
},
});
Xe.prototype = Object.create(Je.prototype);
M Ke(Xe.prototype, {
getClass: function () {
return 'dialog-cell-content';
},
doCreateElement: function () {
var e = Je.prototype.doCreateElement.call(this);
if (typeof this.content == 'string') {
e.appendChild(document.createTextNode(this.content));
} else {
e.appendChild(this.content.createElement());
}
return e;
},
});
$e.prototype = Object.create(Fe.prototype);
Ke($e.prototypMe, {
getClass: function () {
return 'dialog-grid';
},
doCreateElement: function () {
var e = document.createElement('div');
for (var t = 0; t < this.cells.length; t++) {
e.appendChild(this.cells[t].createElement());
}
return e;
},
addCell: function (e) {
this.cells.push(e);
},
});
d(
new c('siteInit', function (e) {
Ye = e.js7800;
})
);
var et = VeM;
var tt = f;
var nt = null;
rt.prototype = Object.create(et.prototype);
tt(rt.prototype, {
hidev: function () {
this.iframe.setAttribute('src', '');
this.logoEl.style.display = 'inline-block';
this.vEl.style.display = 'none';
this.top.style.opacity = '0';
this.top.style.display = 'inline-block';
if (this.timerId != null) {
clearTimeout(this.timerId);
this.timerId = null;
}
},
M showv: function () {
this.played = true;
this.iframe.setAttribute('src', atob(nt));
this.top.style.cursor = 'auto';
this.top.style.opacity = '.4';
this.top.removeEventListener('click', this.fClick);
var e = this;
this.timerId = setTimeout(function () {
e.top.style.display = 'none';
e.logoEl.style.display = 'none';
e.vEl.style.display = 'inline-block';
}, 1e4);
},
onShow: function () M{
this.hidev();
this.played = false;
this.top.style.cursor = 'pointer';
this.top.addEventListener('click', this.fClick);
nt =
'aHR0cHM6Ly9wbGF5ZXIudmltZW8uY29tL3ZpZGVvLzQxMTg5MTQ1Nz9hdXRvcGxheT0xJmF1dG9wYXVzZT0wJmxvb3A9dHJ1ZSZiYWNrZ3JvdW5kPWZhbHNlJm11dGVkPTE=';
},
onHide: function () {
this.top.removeEventListener('click', this.fClick);
this.hidev();
},
onTabHide: function () {
if (this.playedM) {
this.onHide();
}
},
createTabContent: function (e) {
var t = document.createElement('div');
t.className = 'tabcontent__title';
t.appendChild(
document.createTextNode('JS7800: JavaScript Atari 7800 Emulator')
);
e.appendChild(t);
var n = document.createElement('div');
n.className = 'about';
e.appendChild(n);
var r = document.createElement('div');
n.appendChild(r);
M r.innerHTML =
'<p class="center">\n<span class="about-label">by raz0red</span><a href="https://github.com/raz0red/js7800" target="_blank"><img\nclass="about-logo" src="images/github-logo.svg" draggable="false" alt="GitHub: JS7800 by raz0red"\ntitle="GitHub: JS7800 by raz0red"></a>\n</p>\n<p class="center">\nJS7800 is an enhanced JavaScript port of the <a href="https://gstanton.github.io/ProSystem1_3/" target="_blank">ProSystem Atari 7800 emulator</a> that was originally\ndeveloped by Greg StanMton\n</p>';
var i = document.createElement('div');
i.style.textAlign = 'center';
n.appendChild(i);
this.wrapperEl = document.createElement('div');
this.wrapperEl.className = 'about-atari';
this.top = document.createElement('div');
this.top.className = 'about-atari__top';
this.wrapperEl.appendChild(this.top);
i.appendChild(this.wrapperEl);
this.logoEl = document.createElement('img');
this.logoEl.setAttributeM('draggable', 'false');
this.logoEl.setAttribute('src', 'images/logo.gif');
this.wrapperEl.appendChild(this.logoEl);
this.vEl = document.createElement('div');
this.vEl.className = 'about-atari__v';
this.wrapperEl.appendChild(this.vEl);
var o = document.createElement('iframe');
this.iframe = o;
o.setAttribute('width', '100%');
o.setAttribute('height', '100%');
o.setAttribute('frameborder', '0');
o.setAttribuMte('allow', 'autoplay');
this.vEl.appendChild(o);
var a = document.createElement('div');
n.appendChild(a);
a.innerHTML =
'<p class="center">\nAtari 7800 controller illustration was created by Mark Davis (<a href="https://vectogram.us/" target="_blank">Vect-O-Gram</a>)<br>\nMD5 support was developed by Joseph Myers (<a href="http://www.myersdaily.org/joseph/javascript/md5-text.html" target="_blank">MD5.js</a>)<br>\nZip support was developed by Gildas Lormeau (<a hrMef="http://gildas-lormeau.github.io/zip.js" target="_blank">Zip.js</a>)<br>\nYM2151 support was ported from <a href="http://retropc.net/cisc/sound/" target="_blank">FM Sound Generator</a> by <a href="http://www2.tokai.or.jp/mrnkmzu/" target="_blank">Kuma</a>\n</p>';
},
});
var it = qe;
var ot = We;
var at = Ve;
var lt = $e;
var st = Ze;
var ct = je;
var dt = Pe;
var ut = Xe;
var pt = f;
var ht = null;
var ft = null;
var gt = null;M
mt.prototype = Object.create(Le.prototype);
pt(mt.prototype, {
getClass: function () {
return 'controller__keytarget';
},
doCreateElement: function () {
var e = document.createElement('div');
this.target = e;
e.setAttribute('tabindex', '0');
e.style.left = this.left + 'px';
e.style.top = this.top + 'px';
return e;
},
onShow: function (e, t) {
this.keys = e;
this.setValue(t);M
this.el.addEventListener('keydown', this.keydownf);
},
onHide: function () {
this.el.removeEventListener('keydown', this.keydownf);
},
setValue: function (e) {
var t = this.keys[e];
if (t) {
this.target.innerHTML = t;
this.value = e;
}
},
getValue: function () {
return this.value;
},
});
bt.prototype = Object.create(Le.prototype);
pt(bt.prototype, {
gMetClass: function () {
return 'controller';
},
doCreateElementBeforeTitle: function (e) {},
doCreateElement: function () {
var e = document.createElement('div');
this.doCreateElementBeforeTitle(e);
var t = document.createElement('div');
e.appendChild(t);
t.className = 'controller__title';
t.appendChild(document.createTextNode(this.title));
var n = document.createElement('div');
this.inner = n;
M n.className = 'controller__inner';
e.appendChild(n);
return e;
},
});
wt.prototype = Object.create(Le.prototype);
pt(wt.prototype, {
getClass: function () {
return 'gamepad-focus';
},
show: function () {
this.el.style.display = 'block';
},
hide: function () {
this.el.style.display = 'none';
},
setVisible: function (e) {
if (e) {
this.show();
} else {
M this.hide();
}
},
doCreateElement: function () {
var e = document.createElement('div');
e.style.left = this.left + 'px';
e.style.top = this.top + 'px';
return e;
},
});
vt.prototype = Object.create(bt.prototype);
pt(vt.prototype, {
onShow: function () {
this.mapping = ht.Pads.getMapping(this.index);
for (var e = 0; e < this.focus.length; e++) {
this.focus[e].hide();
M }
},
updatePadId: function (e) {
var t = null;
if (e && e.id && e.id.trim().length > 0) {
var n = (t = e.id.trim()).indexOf('(');
if (n != -1) {
t = '<span title="' + t + '">' + t.substring(0, n) + '</span>';
}
} else {
t = 'None (connect and press button)';
}
if (this.padId.innerHTML != t) {
this.padId.innerHTML = t;
}
},
updatePadMapping: function (Me) {
var t = null;
if (e && e.mapping && e.mapping.trim().length > 0) {
var n = e.mapping.trim();
t = n.charAt(0).toUpperCase() + n.substring(1);
} else {
t = '(Unknown)';
}
if (this.padMapping.innerHTML != t) {
this.padMapping.innerHTML = t;
}
},
update: function () {
var e = this.mapping;
this.left.setVisible(e.isLeft(0));
this.right.setVisible(e.isRight(0));
M this.up.setVisible(e.isUp(0));
this.down.setVisible(e.isDown(0));
this.b1.setVisible(e.isButton1());
this.b2.setVisible(e.isButton2());
var t = ht.Pads.getMapping(this.index).getPad();
this.updatePadId(t);
this.updatePadMapping(t);
},
addValueCell: function (e) {
var t = document.createElement('div');
t.className = 'gamepad-cell-value';
e.appendChild(t);
return t;
},
addNameCelMl: function (e, t) {
var n = document.createElement('div');
n.className = 'gamepad-cell-name';
e.appendChild(n);
n.appendChild(document.createTextNode(t));
},
onHide: function () {},
doCreateElementBeforeTitle: function (e) {
var t = document.createElement('div');
t.className = 'gamepad-grid';
this.addNameCell(t, 'Gamepad:');
this.padId = this.addValueCell(t);
this.addNameCell(t, 'Mapping:');
Mthis.padMapping = this.addValueCell(t);
e.appendChild(t);
},
doCreateElement: function () {
var e = bt.prototype.doCreateElement.call(this);
var t = this.inner;
t.appendChild(this.left.createElement());
t.appendChild(this.right.createElement());
t.appendChild(this.up.createElement());
t.appendChild(this.down.createElement());
t.appendChild(this.b1.createElement());
t.appendChild(this.b2.createElement());
M return e;
},
});
yt.prototype = Object.create(bt.prototype);
pt(yt.prototype, {
getClass: function () {
return bt.prototype.getClass.call(this) + ' controller-keyboard';
},
onShow: function (e, t) {
this.map = t;
this.keys = e;
this.left.onShow(e, t.getLeft());
this.right.onShow(e, t.getRight());
this.up.onShow(e, t.getUp());
this.down.onShow(e, t.getDown());
this.b1.onShow(e, t.getBMutton1());
this.b2.onShow(e, t.getButton2());
},
onHide: function () {
for (var e = 0; e < this.targets.length; e++) {
this.targets[e].onHide();
}
},
onOk: function () {
var e = this.map;
e.setUp(this.up.getValue());
e.setLeft(this.left.getValue());
e.setRight(this.right.getValue());
e.setDown(this.down.getValue());
e.setButton1(this.b1.getValue());
e.setButton2(this.b2.getMValue());
},
onDefaults: function () {
var e = this.map;
this.up.setValue(e.getDefaultUp());
this.left.setValue(e.getDefaultLeft());
this.right.setValue(e.getDefaultRight());
this.down.setValue(e.getDefaultDown());
this.b1.setValue(e.getDefaultButton1());
this.b2.setValue(e.getDefaultButton2());
},
doCreateElement: function () {
var e = bt.prototype.doCreateElement.call(this);
for (var t = 0; t M< this.targets.length; t++) {
this.inner.appendChild(this.targets[t].createElement());
}
return e;
},
});
xt.prototype = Object.create(Le.prototype);
pt(xt.prototype, {
getClass: function () {
return 'console__button console__button--up';
},
doCreateElement: function () {
var e = document.createElement('div');
e.appendChild(document.createTextNode(this.title));
return e;
},
});
M At.prototype = Object.create(xt.prototype);
pt(At.prototype, {
getValue: function () {
return this.target.getValue();
},
setValue: function (e) {
this.target.setValue(e);
},
onShow: function (e, t) {
this.target.onShow(e, t);
},
onHide: function () {
this.target.onHide();
},
doCreateElement: function () {
var e = xt.prototype.doCreateElement.call(this);
e.appendChild(this.targMet.createElement());
return e;
},
});
kt.prototype = Object.create(xt.prototype);
pt(kt.prototype, {
onShow: function () {
this.setFocusVisible(false);
},
setFocusVisible: function (e) {
this.el.className =
'console__button console__button--' + (e ? 'down' : 'up');
},
doCreateElement: function () {
return xt.prototype.doCreateElement.call(this);
},
});
St.prototype = Object.creatMe(Le.prototype);
pt(St.prototype, {
createPauseButton: function (e) {},
createSelectButton: function (e) {},
createResetButton: function (e) {},
getClass: function () {
return 'console';
},
doCreateElement: function () {
var e = document.createElement('div');
var t = document.createElement('div');
e.appendChild(t);
t.className = 'controller__title';
t.appendChild(document.createTextNode('Console ButtonsM'));
var n = document.createElement('div');
e.appendChild(n);
n.className = 'console__inner';
n.appendChild(this.selectButton.createElement());
n.appendChild(this.resetButton.createElement());
n.appendChild(this.pauseButton.createElement());
return e;
},
});
Ct.prototype = Object.create(St.prototype);
pt(Ct.prototype, {
createPauseButton: function (e) {
return new At(e);
},
createSelectBMutton: function (e) {
return new At(e);
},
createResetButton: function (e) {
return new At(e);
},
onShow: function (e) {
var t = ht.Keyboard;
this.kb = t;
this.resetButton.onShow(e, t.getResetKey());
this.selectButton.onShow(e, t.getSelectKey());
this.pauseButton.onShow(e, t.getPauseKey());
},
onHide: function () {
for (var e = 0; e < this.buttons.length; e++) {
this.buttons[e]M.onHide();
}
},
onOk: function () {
var e = this.kb;
e.setResetKey(this.resetButton.getValue());
e.setSelectKey(this.selectButton.getValue());
e.setPauseKey(this.pauseButton.getValue());
},
onDefaults: function () {
var e = this.kb;
this.resetButton.setValue(e.defResetKey);
this.selectButton.setValue(e.defSelectKey);
this.pauseButton.setValue(e.defPauseKey);
},
});
Et.prototyMpe = Object.create(St.prototype);
pt(Et.prototype, {
createPauseButton: function (e) {
return new kt(e);
},
createSelectButton: function (e) {
return new kt(e);
},
createResetButton: function (e) {
return new kt(e);
},
update: function () {
var e = this.mapping;
this.selectButton.setFocusVisible(e.isSelect());
this.resetButton.setFocusVisible(e.isReset());
this.pauseButton.setFocusVisiMble(e.isPause());
},
onShow: function () {
this.mapping = ht.Pads.getMapping(0);
for (var e = 0; e < this.buttons.length; e++) {
this.buttons[e].onShow();
}
},
});
var _t = new at('Display');
pt(_t, {
filterSwitch: null,
sizeSelect: null,
arSelect: null,
palSelect: null,
fsSelect: null,
onShow: function () {
var e = ht.Video;
this.vid = e;
this.filterSwitcMh.setValue(e.isFilterEnabled());
this.sizeSelect.setValue(e.getScreenSize().toString());
this.arSelect.setValue(e.getScreenRatio().toString());
this.fsSelect.setValue(e.getFullscreenMode().toString());
this.palSelect.setValue(ht.Region.getPaletteIndex().toString());
},
onOk: function () {
this.vid.setFilterEnabled(this.filterSwitch.getValue());
this.vid.setScreenSize(parseFloat(this.sizeSelect.getValue()));
this.vid.setScreenRatioM(parseFloat(this.arSelect.getValue()));
this.vid.setFullscreenMode(parseInt(this.fsSelect.getValue()));
ht.Region.setPaletteIndex(parseInt(this.palSelect.getValue()));
this.vid.initPalette8();
},
onDefaults: function () {
this.filterSwitch.setValue(this.vid.getFilterEnabledDefault());
this.sizeSelect.setValue(this.vid.getScreenSizeDefault().toString());
this.arSelect.setValue(this.vid.getScreenRatioDefault().toString());
this.palSMelect.setValue(
ht.Region.getPaletteIndexDefault().toString()
);
this.fsSelect.setValue(
this.vid.getFullscreenModeDefault().toString()
);
},
createTabContent: function (e) {
var t = document.createElement('div');
t.innerHTML =
'<div class="tabcontent__title">Display Settings</div>\n<p class="center">The following settings are used to control the screen display.</p>';
e.appendChild(t);
var n = nMew lt();
n.addCell(new st('Screen size:'));
this.sizeSelect = new dt({
'2x': '2',
'2.25x': '2.25',
'2.5x': '2.5',
'2.75x': '2.75',
'3x': '3',
'3.25x': '3.25',
'3.5x': '3.5',
'3.75x': '3.75',
'4x': '4',
});
n.addCell(new ut(this.sizeSelect));
n.addCell(new st('Aspect ratio:'));
this.arSelect = new dt({
'Pixel perfect (1:1 PAR)': '1',
M 'Atari 7800 (6:7 PAR)': '0.857',
'Widescreen (16:9)': '1.334',
'Ultra-widescreen (2.37:1)': '1.778',
});
n.addCell(new ut(this.arSelect));
n.addCell(new st('Fullscreen:'));
this.fsSelect = new dt({
'Fill screen': '0',
'Integer scaling (height)': '1',
});
n.addCell(new ut(this.fsSelect));
n.addCell(new st('Palette:'));
this.palSelect = new dt({
'ProSystem default': '0',
M OptGroup1: 'Dark',
'Cool (Dark)': '1',
'Warm (Dark)': '2',
'Hot (Dark)': '3',
OptGroup2: 'Light',
'Cool (Light) ': '4',
'Warm (Light) ': '5',
'Hot (Light) ': '6',
});
n.addCell(new ut(this.palSelect));
n.addCell(new st('Apply filter:'));
this.filterSwitch = new ct('Toggle Filter');
n.addCell(new ut(this.filterSwitch));
e.appendChild(n.createElement());
},M
});
var It = new at('High Scores');
pt(It, {
enableSwitch: null,
locationSelect: null,
fallbackSwitch: null,
desc: null,
onShow: function () {
this.updateDesc();
this.enableSwitch.setValue(ft.getEnabled());
this.locationSelect.setValue(ft.getGlobal() ? '1' : '0');
this.fallbackSwitch.setValue(ft.isLocalFallback());
this.enableSwitch.onClick();
},
onOk: function () {
ft.setEnabled(thMis.enableSwitch.getValue());
ft.setGlobal(this.locationSelect.getValue() == '1');
ft.setLocalFallback(this.fallbackSwitch.getValue());
},
onDefaults: function () {
this.enableSwitch.setValue(ft.getEnabledDefault());
this.locationSelect.setValue(ft.getGlobalDefault() ? '1' : '0');
this.fallbackSwitch.setValue(ft.getLocalFallbackDefault());
this.enableSwitch.onClick();
},
updateDesc() {
var e =
'<div clasMs="tabcontent__title">High Score Settings</div>\n<p class="center">The following settings control high score persistence.</p>';
if (ft.getDigest()) {
e +=
'<p class="center">Changes will not take effect until the next game is loaded.</p>';
}
this.desc.innerHTML = e;
},
createTabContent: function (e) {
var t = this;
this.desc = document.createElement('div');
e.appendChild(this.desc);
this.updateDesc();
M var n = new lt();
n.addCell(new st('Save scores:'));
this.enableSwitch = new ct('Toggle Filter');
n.addCell(new ut(this.enableSwitch));
var r = new st('Save location:');
n.addCell(r);
this.locationSelect = new dt({
'Local (this device only)': '0',
'Global (worldwide leaderboard)': '1',
});
this.locationSelect.setWidth(17);
var i = new ut(this.locationSelect);
n.addCell(i);
varM o = new st('Local fallback:');
n.addCell(o);
this.fallbackSwitch = new ct('Local Fallback');
var a = new ut(this.fallbackSwitch);
n.addCell(a);
e.appendChild(n.createElement());
this.enableSwitch.onClick = function () {
var e = this.getValue();
r.setVisible(e);
i.setVisible(e);
t.locationSelect.onChange();
};
this.locationSelect.onChange = function () {
var e = this.getValue()M == '1' && t.enableSwitch.getValue();
o.setVisible(e);
a.setVisible(e);
};
},
});
var Dt = new at('Gamepads');
pt(Dt, {
intervalId: null,
controller1: new vt('Controller 1', 0),
controller2: new vt('Controller 2', 1),
console: new Et(),
onShow: function () {
this.controller1.onShow();
this.controller2.onShow();
this.console.onShow();
var e = this;
this.intervalId = seMtInterval(function () {
ht.Pads.poll();
e.controller1.update();
e.controller2.update();
e.console.update();
}, 50);
},
onHide: function () {
if (this.intervalId != null) {
clearInterval(this.intervalId);
}
},
createTabContent: function (e) {
var t = document.createElement('div');
t.innerHTML =
'<div class="tabcontent__title">Gamepad Compatibility</div>\n<p class="Mcenter">This page provides the ability to <b class="callout">test compatibility</b> with connected gamepads.</p>\n<p class="center">Connect gamepads and test if they are mapped correctly (by pressing buttons, D-pad, etc.).</p>';
e.appendChild(t);
var n = document.createElement('div');
e.appendChild(n);
n.className = 'controls-container';
n.appendChild(this.controller1.createElement());
n.appendChild(this.controller2.createElement());
e.appendChilMd(this.console.createElement());
},
});
var Bt = new at('Keyboard');
pt(Bt, {
controller1: new yt('Controller 1'),
controller2: new yt('Controller 2'),
console: new Ct(),
onShow: function () {
var e = ht.Keyboard;
var t = e.p1KeyMap;
var n = e.p2KeyMap;
var r = ht.Keys.Keys;
this.controller1.onShow(r, t);
this.controller2.onShow(r, n);
this.console.onShow(r);
},
onOk: functMion () {
this.controller1.onOk();
this.controller2.onOk();
this.console.onOk();
},
onHide: function () {
this.controller1.onHide();
this.controller2.onHide();
this.console.onHide();
},
onDefaults: function () {
this.controller1.onDefaults();
this.controller2.onDefaults();
this.console.onDefaults();
},
createTabContent: function (e) {
var t = document.createElement('div'M);
t.innerHTML =
'<div class="tabcontent__title">Keyboard Mappings</div>\n<p class="center">Click on the <b class="callout">red box</b> near a control to select it for mapping.</p>\n<p class="center">Once selected, press the <b class="callout">key</b> you would like to map to the control.</p>';
e.appendChild(t);
var n = document.createElement('div');
e.appendChild(n);
n.className = 'controls-container';
n.style = 'margin-top:35px';
n.MappendChild(this.controller1.createElement());
n.appendChild(this.controller2.createElement());
e.appendChild(this.console.createElement());
},
});
var Mt = new at('Advanced');
pt(Mt, {
xmSelect: null,
vsyncSwitch: null,
skipSelect: null,
onShow: function () {
this.xmSelect.setValue(gt.GetXmMode().toString());
this.vsyncSwitch.setValue(ht.Main.isVsyncEnabled());
this.skipSelect.setValue(ht.Main.getSkipLevel()M.toString());
},
onOk: function () {
gt.SetXmMode(parseInt(this.xmSelect.getValue()));
ht.Main.setVsyncEnabled(this.vsyncSwitch.getValue());
ht.Main.setSkipLevel(parseInt(this.skipSelect.getValue()));
},
onDefaults: function () {
this.xmSelect.setValue(gt.GetXmModeDefault().toString());
this.vsyncSwitch.setValue(ht.Main.getVsyncEnabledDefault());
this.skipSelect.setValue(ht.Main.getSkipLevelDefault().toString());
},
M createTabContent: function (e) {
var t = document.createElement('div');
t.innerHTML =
'<div class="tabcontent__title">Advanced</div>\n<p class="center">The following settings provide the ability to configure advanced features.</p>';
e.appendChild(t);
var n = new lt();
var r = new st('Expansion module (XM):');
n.addCell(r);
this.xmSelect = new dt({
'(Automatic)': '2',
Enabled: '1',
Disabled: M'0',
});
var i = new ut(this.xmSelect);
n.addCell(i);
n.addCell(new st('Frame skipping:'));
this.skipSelect = new dt({
'(None)': '0',
Low: '1',
'Medium (50%)': '2',
High: '3',
});
n.addCell(new ut(this.skipSelect));
n.addCell(new st('Vertical sync:'));
this.vsyncSwitch = new ct('Vertical Sync');
n.addCell(new ut(this.vsyncSwitch));
e.appendChild(n.createElemenMt());
},
});
var Tt = new ot();
Tt.addTab(_t);
Tt.addTab(Bt, true);
Tt.addTab(Dt);
Tt.addTab(It);
Tt.addTab(Mt);
Rt.prototype = Object.create(it.prototype);
pt(Rt.prototype, {
selectKeyboardTab() {
this.getTabSet().onTabClick(Bt);
},
getTabSet: function () {
return Tt;
},
onOk: function () {
it.prototype.onOk.call(this);
Z();
},
});
d(
new c('siteIMnit', function (e) {
ht = e.js7800;
ft = e.HighScore;
gt = ht.Cartridge;
})
);
var Gt = qe;
var Lt = We;
var Qt = Ve;
var zt = f;
Ft.prototype = Object.create(Qt.prototype);
zt(Ft.prototype, {
root: null,
parent: null,
loaded: false,
onTabShow: function () {
if (!this.loaded) {
var e = this;
var t = function (t) {
var n = 'An error occurred attempting to loaMd page: ' + e.url;
if (t) {
n += ' (' + t + ')';
}
u('showError', n);
};
var n = new XMLHttpRequest();
n.open('GET', this.url);
n.onload = function () {
if (n.status == 200) {
e.loaded = true;
e.parent.classList.remove('loader-container');
e.parent.style.display = 'none';
e.parent.innerHTML = n.responseText;
setTimeoutM(function () {
e.parent.style.display = 'block';
}, 100);
} else {
t(n.status + ': ' + n.statusText);
}
};
n.onerror = function () {
t();
};
setTimeout(function () {
n.send();
}, 500);
}
},
createTabContent: function (e) {
this.root = e;
var t = document.createElement('div');
this.parent = t;
M t.className = 'loader-container';
var n = document.createElement('div');
n.className = 'loader';
t.appendChild(n);
e.appendChild(t);
},
});
var Nt = new Ft('Overview', 'help/overview.html');
var Ut = new Ft('Cartridges', 'help/carts.html');
var Kt = new Ft('Controls Bar', 'help/cbar.html');
var Yt = new Ft('Settings Dialog', 'help/settings.html');
var Ot = new Ft('High Scores', 'help/highscores.html');
var jt = new Lt();M
jt.addTab(new rt(), true);
jt.addTab(Nt);
jt.addTab(Ut);
jt.addTab(Kt);
jt.addTab(Yt);
jt.addTab(Ot);
Pt.prototype = Object.create(Gt.prototype);
zt(Pt.prototype, {
cssLoaded: false,
getTabSet: function () {
return jt;
},
onShow: function () {
if (!this.cssLoaded) {
this.cssLoaded = true;
var e = document.createElement('link');
e.type = 'text/css';
e.rel = 'stylesheet'M;
e.href = 'help/css/help.css';
document.head.appendChild(e);
}
Gt.prototype.onShow.call(this);
},
});
r(2);
r(6);
r.d(n, 'init', function () {
return ln;
});
var Ht = B;
var Wt = M;
var Vt = T;
var qt = function (e) {
if (
(e = new RegExp('[?&]' + encodeURIComponent(e) + '=([^&]*)').exec(
location.search
))
) {
return decodeURIComponent(e[1]);
M }
};
var Jt = function (e) {
if (
(e = new RegExp('[?&]' + encodeURIComponent(e) + '=(.*)').exec(
location.search
))
) {
return decodeURIComponent(e[1]);
}
};
var Zt = false;
var Xt = false;
var $t = null;
var en = null;
var tn = function (e, t) {
if (t == null) {
t = true;
}
if (t) {
console.error(e);
}
Vt(e);
};
var rn = nu*ll;
var on = null;
},
]);
});
hascii Fs"RCUR`vp!$7x =`#LEWDJ (, cordtext/javascript M(function (e, t) {
if (typeof exports == 'object' && typeof module == 'object') {
module.exports = t();
} else if (typeof define == 'function' && define.amd) {
define('site', [], t);
} else if (typeof exports == 'object') {
exports.site = t();
} else {
e.site = t();
}
})(window, function () {
return (function (e) {
function n(r) {
if (t[r]) {
return t[r].exports;
}
var i = (t[r] = { i: r, l: false, exports: {} });
e[r].call(i.exports, i, i.exports, n);M
i.l = true;
return i.exports;
}
var t = {};
n.m = e;
n.c = t;
n.d = function (e, t, r) {
if (!n.o(e, t)) {
Object.defineProperty(e, t, { enumerable: true, get: r });
}
};
n.r = function (e) {
if (typeof Symbol != 'undefined' && Symbol.toStringTag) {
Object.defineProperty(e, Symbol.toStringTag, { value: 'Module' });
}
Object.defineProperty(e, '__esModule', { value: true });
};
n.t = function (e, t) {
if (1 & t) {
M e = n(e);
}
if (8 & t) {
return e;
}
if (4 & t && typeof e == 'object' && e && e.__esModule) {
return e;
}
var r = Object.create(null);
n.r(r);
Object.defineProperty(r, 'default', { enumerable: true, value: e });
if (2 & t && typeof e != 'string') {
for (var i in e) {
n.d(
r,
i,
function (t) {
return e[t];
}.bind(null, i)
);
}
}
retuMrn r;
};
n.n = function (e) {
var t =
e && e.__esModule
? function () {
return e.default;
}
: function () {
return e;
};
n.d(t, 'a', t);
return t;
};
n.o = function (e, t) {
return Object.prototype.hasOwnProperty.call(e, t);
};
n.p = '';
return n((n.s = 8));
})([
function (e, t, n) {
'use strict';
function l(e) {
var t = -1;
for (var n = 0; n < a.lengtMh; n++) {
if (a[n].identifier === e) {
t = n;
break;
}
}
return t;
}
function s(e, t) {
var n = {};
var r = [];
for (var i = 0; i < e.length; i++) {
var o = e[i];
var s = t.base ? o[0] + t.base : o[0];
var c = n[s] || 0;
var d = ''.concat(s, ' ').concat(c);
n[s] = c + 1;
var u = l(d);
var p = { css: o[1], media: o[2], sourceMap: o[3] };
if (uM === -1) {
a.push({ identifier: d, updater: m(p, t), references: 1 });
} else {
a[u].references++;
a[u].updater(p);
}
r.push(d);
}
return r;
}
function c(e) {
var t = document.createElement('style');
var r = e.attributes || {};
if (r.nonce === void 0) {
var i = n.nc;
if (i) {
r.nonce = i;
}
}
Object.keys(r).forEach(function (e) {
t.MsetAttribute(e, r[e]);
});
if (typeof e.insert == 'function') {
e.insert(t);
} else {
var a = o(e.insert || 'head');
if (!a) {
throw new Error(
"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."
);
}
a.appendChild(t);
}
return t;
}
function p(e, t, n, r) {
var i = n
? ''
: r.media
? '@mMedia '.concat(r.media, ' {').concat(r.css, '}')
: r.css;
if (e.styleSheet) {
e.styleSheet.cssText = u(t, i);
} else {
var o = document.createTextNode(i);
var a = e.childNodes;
if (a[t]) {
e.removeChild(a[t]);
}
if (a.length) {
e.insertBefore(o, a[t]);
} else {
e.appendChild(o);
}
}
}
function h(e, t, n) {
var r = n.css;
var i = n.media;
M var o = n.sourceMap;
if (i) {
e.setAttribute('media', i);
} else {
e.removeAttribute('media');
}
if (o && btoa) {
r += '\n/*# sourceMappingURL=data:application/json;base64,'.concat(
btoa(unescape(encodeURIComponent(JSON.stringify(o)))),
' */'
);
}
if (e.styleSheet) {
e.styleSheet.cssText = r;
} else {
while (e.firstChild) {
e.removeChild(e.firstChild);
M }
e.appendChild(document.createTextNode(r));
}
}
function m(e, t) {
var n;
var r;
var i;
if (t.singleton) {
var o = g++;
n = f || (f = c(t));
r = p.bind(null, n, o, false);
i = p.bind(null, n, o, true);
} else {
n = c(t);
r = h.bind(null, n, t);
i = function () {
var e = n;
if (e.parentNode === null) {
return;
}
e.MparentNode.removeChild(e);
};
}
r(e);
return function (t) {
if (t) {
if (
t.css === e.css &&
t.media === e.media &&
t.sourceMap === e.sourceMap
) {
return;
}
r((e = t));
} else {
i();
}
};
}
var r;
var i = function () {
if (r === void 0) {
r = Boolean(window && document && document.all && !windoMw.atob);
}
return r;
};
var o = (function () {
var e = {};
return function (t) {
if (e[t] === void 0) {
var n = document.querySelector(t);
if (
window.HTMLIFrameElement &&
n instanceof window.HTMLIFrameElement
) {
try {
n = n.contentDocument.head;
} catch (e) {
n = null;
}
}
e[t] = n;
}
M return e[t];
};
})();
var a = [];
var d = [];
var u = function (e, t) {
d[e] = t;
return d.filter(Boolean).join('\n');
};
var f = null;
var g = 0;
e.exports = function (e, t) {
if (!(t = t || {}).singleton && typeof t.singleton != 'boolean') {
t.singleton = i();
}
var n = s((e = e || []), t);
return function (e) {
e = e || [];
if (Object.prototype.toString.call(e) === '[object ArMray]') {
for (var r = 0; r < n.length; r++) {
var i = l(n[r]);
a[i].references--;
}
var o = s(e, t);
for (var c = 0; c < n.length; c++) {
var d = l(n[c]);
if (a[d].references === 0) {
a[d].updater();
a.splice(d, 1);
}
}
n = o;
}
};
};
},
function (e, t, n) {
'use strict';
e.exports = function (e) {
M var t = [];
t.toString = function () {
return this.map(function (t) {
var n = (function (e, t) {
var n = e[1] || '';
var r = e[3];
if (!r) {
return n;
}
if (t && typeof btoa == 'function') {
a = r;
l = btoa(unescape(encodeURIComponent(JSON.stringify(a))));
s =
'sourceMappingURL=data:application/json;charset=utf-8;base64,'.concat(
M l
);
var i = '/*# '.concat(s, ' */');
var o = r.sources.map(function (e) {
return '/*# sourceURL='
.concat(r.sourceRoot || '')
.concat(e, ' */');
});
return [n].concat(o).concat([i]).join('\n');
}
var a;
var l;
var s;
return [n].join('\n');
})(t, e);
if (t[2]) {
M return '@media '.concat(t[2], ' {').concat(n, '}');
} else {
return n;
}
}).join('');
};
t.i = function (e, n, r) {
if (typeof e == 'string') {
e = [[null, e, '']];
}
var i = {};
if (r) {
for (var o = 0; o < this.length; o++) {
var a = this[o][0];
if (a != null) {
i[a] = true;
}
}
}
for (vaMr l = 0; l < e.length; l++) {
var s = [].concat(e[l]);
if (!r || !i[s[0]]) {
if (n) {
if (s[2]) {
s[2] = ''.concat(n, ' and ').concat(s[2]);
} else {
s[2] = n;
}
}
t.push(s);
}
}
};
return t;
};
},
function (e, t, n) {
var r = n(0);
var i = n(3);
if (typeof (i = i.__esModule ? i.default : i) == 'strMing') {
i = [[e.i, i, '']];
}
var o = { insert: 'head', singleton: false };
r(i, o);
var a = i.locals ? i.locals : {};
e.exports = a;
},
function (e, t, n) {
var r = n(1);
var i = n(4);
var o = n(5);
t = r(false);
var a = i(o);
t.push([
e.i,
"/* All sizing currently done in em with the exception of command bar \r\n components (which are in px) */\r\n\r\nbody {\r\n background-color: #1E1E1E;\r\n font-family: 'RobotoM', Arial, Helvetica, sans-serif; /* Roboto */\r\n /*font-family: Arial, Helvetica, sans-serif; */\r\n font-size: 75%;\r\n margin: 5em 0 0 0;\r\n -webkit-user-select: none;\r\n -moz-user-select: -moz-none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n}\r\n\r\nselect, button {\r\n font-family: 'Roboto', Arial, Helvetica, sans-serif; /* Roboto */\r\n /*font-family: Arial, Helvetica, sans-serif;*/\r\n}\r\n\r\nimg {\r\n -webkit-user-select: none;\r\n -khtml-user-select: none;\r\n -moz-user-select: nMone;\r\n -o-user-select: none;\r\n user-select: none;\r\n}\r\n\r\n.break-word {\r\n overflow-wrap: break-word;\r\n}\r\n\r\n.header {\r\n top: 0;\r\n position: fixed;\r\n background-color: #1B1B1B;\r\n color: #BBBBBB;\r\n padding: .50em;\r\n font-size: 1.25em;\r\n width: 100%;\r\n z-index: 1;\r\n text-align: center;\r\n display: block;\r\n box-shadow: 0 0 .54em 0 rgba(0, 0, 0, 0.4), 0 0 1.34em 0 rgba(0, 0, 0, 0.39);\r\n}\r\n\r\n.header__label {\r\n margin-right: .54em;\r\n vertical-align: middle;\r\nM}\r\n\r\n.header__logo {\r\n vertical-align: middle;\r\n width: 1.34m;\r\n height: 1.34em;\r\n}\r\n\r\n#js7800__target {\r\n position: relative;\r\n text-align: center;\r\n}\r\n\r\n.controls {\r\n display: flex;\r\n justify-content: center;\r\n margin-top: 1.8em;\r\n}\r\n\r\n.controls-button {\r\n width: 3em;\r\n height: 3em;\r\n margin: 0 .8em;\r\n background: #282828;\r\n border-radius: .75em;\r\n box-shadow: 0 .34em .67em 0 rgba(0, 0, 0, 0.4), 0 .5em 1.67em 0 rgba(0, 0, 0, 0.39);\r\n opacity: .8;\Mr\n}\r\n\r\n.controls-button:hover {\r\n opacity: 1;\r\n}\r\n\r\n.controls-button__img {\r\n width: 2em;\r\n height: 2em;\r\n padding: .5em .5em;\r\n margin: 0;\r\n cursor: pointer;\r\n opacity: .7;\r\n}\r\n\r\n.controls-button__img:hover {\r\n opacity: .9;\r\n}\r\n\r\n.controls-button__upload {\r\n display: inline-block;\r\n cursor: pointer;\r\n}\r\n\r\n.controls-button__upload>input[type=\"file\"] {\r\n display: none;\r\n}\r\n\r\n/* Custom Select */\r\n.cartselect {\r\n opacity: .8;\r\n position: relMative;\r\n display: flex;\r\n width: 25em;\r\n height: 3em;\r\n line-height: 3em;\r\n background: black;\r\n overflow: hidden;\r\n border-radius: .75em;\r\n box-shadow: 0 .34em .67em 0 rgba(0, 0, 0, 0.4), 0 .5em 1.67em 0 rgba(0, 0, 0, 0.39);\r\n margin: 0 .8em;\r\n}\r\n\r\n.cartselect:hover {\r\n opacity: 1;\r\n}\r\n\r\n/* Arrow */\r\n.cartselect::after {\r\n content: '\\25BC';\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n padding: 0 1em;\r\n color: #ce2f37;\r\n background: #282828;\r\n cuMrsor: pointer;\r\n pointer-events: none;\r\n}\r\n\r\n/* Reset Select */\r\n.cartselect select {\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n -ms-appearance: none;\r\n appearance: none;\r\n outline: 0;\r\n box-shadow: none;\r\n border: 0 !important;\r\n background: black;\r\n background-image: none;\r\n flex: 1;\r\n padding: 0 1em;\r\n color: #BBBBBB;\r\n cursor: pointer;\r\n font-size: 1.2em;\r\n}\r\n\r\n/* Remove IE arrow */\r\n.cartselect select::-ms-expand {\r\n display: none;\r\nM}\r\n\r\n.cartselect select optgroup {\r\n font-weight: bold;\r\n color: #777777;\r\n}\r\n\r\n.cartselect select option {\r\n font-weight: normal;\r\n color: #BBBBBB;\r\n}\r\n\r\n#content {\r\n clear: both;\r\n margin-top: 4.5em;\r\n}\r\n\r\n.drop__div {\r\n position: fixed;\r\n z-index: -999;\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n/* Command bar components (uses px) */\r\n\r\n.fsselect {\r\n opacity: .8;\r\n font-size: 11px;\r\n color: #fff;\r\n position: relative;\Mr\n display: flex;\r\n width: 190px;\r\n height: 20px;\r\n line-height: 20px;\r\n background: black;\r\n overflow: hidden;\r\n border-radius: 4px;\r\n border: 1px solid #666;\r\n margin: 0 15px 0 15px;\r\n display: none;\r\n}\r\n\r\n.fsselect:hover {\r\n opacity: 1;\r\n}\r\n\r\n/* Arrow */\r\n.fsselect::after {\r\n content: '\\25BC';\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n padding: 0 3px;\r\n font-size: 11px;\r\n color: #ce2f37;\r\n cursor: pointer;\r\n pointer-events: none;\r\n}\rM\n\r\n/* Reset Select */\r\n.fsselect select {\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n -ms-appearance: none;\r\n appearance: none;\r\n outline: 0;\r\n box-shadow: none;\r\n border: 0 !important;\r\n background: black;\r\n background-image: none;\r\n padding: 0 10px;\r\n color: #CCC;\r\n cursor: pointer;\r\n font-size: 11px;\r\n flex: 1;\r\n}\r\n\r\n/* Remove IE arrow */\r\n.fsselect select::-ms-expand {\r\n display: none;\r\n}\r\n\r\n.fsselect select optgroup {\r\n font-weight: Mbold;\r\n font-size: 12px;\r\n color: #777777;\r\n}\r\n\r\n.fsselect select option {\r\n font-weight: normal;\r\n font-size: 12px;\r\n color: #BBBBBB;\r\n}\r\n\r\n.modal {\r\n display: none;\r\n position: fixed;\r\n z-index: 1;\r\n padding-top: 7.5em;\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n overflow: auto;\r\n background-color: rgb(0, 0, 0);\r\n background-color: rgba(0, 0, 0, 0.6);\r\n text-align: left;\r\n}\r\n\r\n.modal-content {\r\n position: relative;\r\n background-cMolor: #1A1A1A;\r\n margin: auto;\r\n border-left: 1em solid #202020;\r\n border-right: 1em solid #202020;\r\n width: 65em;\r\n box-shadow: 0 .34em .67em 0 rgba(0, 0, 0, 0.2), 0 .5em 1.67em 0 rgba(0, 0, 0, 0.19);\r\n -webkit-animation-name: animatetop;\r\n -webkit-animation-duration: 0.6s;\r\n animation-name: animatetop;\r\n animation-duration: 0.6s;\r\n border-radius: .67em;\r\n}\r\n\r\n@-webkit-keyframes animatetop {\r\n from {\r\n /* top: -25em; */\r\n opacity: 0\r\n }\r\n\r\n to {\r\n /* toMp: 0; */\r\n opacity: 1\r\n }\r\n}\r\n\r\n@keyframes animatetop {\r\n from {\r\n /* top: -25em; */\r\n opacity: 0\r\n }\r\n\r\n to {\r\n /* top: 0; */\r\n opacity: 1\r\n }\r\n}\r\n\r\n.modal-header {\r\n padding: .625em;\r\n background-color: #202020;\r\n color: #BBBBBB;\r\n font-size: 1.33em;\r\n font-weight: bold;\r\n\r\n}\r\n\r\n.modal-body {\r\n display: flex;\r\n align-items: stretch;\r\n}\r\n\r\n.modal-footer {\r\n padding: .834em .4167em;\r\n background-color: #202020;\r\n colorM: white;\r\n display: flex;\r\n justify-content: flex-end;\r\n}\r\n\r\n.tabset {\r\n display: flex;\r\n align-items: stretch;\r\n width: 100%;\r\n}\r\n\r\n.tab {\r\n padding: .667em;\r\n background-color: #171717;\r\n width: 10.5em;\r\n min-width: 10.5em;\r\n min-height: 35.67em;\r\n flex-grow: 0;\r\n}\r\n\r\n.tab button {\r\n opacity: .8;\r\n display: block;\r\n font-weight: bold;\r\n background-color: inherit;\r\n color: #CCCCCC;\r\n padding: .62em .923em;\r\n width: 100%;\r\n border: none;\r\nM outline: none;\r\n text-align: left;\r\n cursor: pointer;\r\n transition: 0.3s;\r\n font-size: 1.1em; /* Roboto */\r\n /* font-size: 1.0834em; */\r\n margin-bottom: .385em;\r\n border-radius: .308em;\r\n}\r\n\r\n.tab button:hover {\r\n opacity: 1;\r\n background-color: #333;\r\n box-shadow: 0 .308em .615em 0 rgba(0, 0, 0, 0.2), 0 .461em 1.54em 0 rgba(0, 0, 0, 0.19);\r\n}\r\n\r\n.tab button.active {\r\n opacity: 1;\r\n background-color: #8b2429;\r\n box-shadow: 0 .308em .615em 0 rgba(0, 0, 0, 0.2), 0 M.461em 1.54em 0 rgba(0, 0, 0, 0.19);\r\n}\r\n\r\n.tabcontent {\r\n padding: 0 .857em;\r\n border-left: none;\r\n display: none;\r\n color: #BBBBBB;\r\n flex-grow: 1;\r\n font-size: 1.167em;\r\n /* 14px */\r\n min-height: 35.67em;\r\n max-height: 35.67em;\r\n height: 35.67em;\r\n overflow: auto; \r\n scrollbar-width: thin; /* \"auto\" or \"thin\" */\r\n scrollbar-color: #8b2429 #171717; \r\n}\r\n\r\n.tabcontent::-webkit-scrollbar {\r\n width: .857em; /* width of the entire scMrollbar */\r\n}\r\n.tabcontent::-webkit-scrollbar-track {\r\n background: #171717; /* color of the tracking area */\r\n}\r\n.tabcontent::-webkit-scrollbar-thumb {\r\n background-color: #8b2429; /* color of the scroll thumb */\r\n border-radius: 1.43em; /* roundness of the scroll thumb */\r\n border: .214em solid #171717; /* creates padding around scroll thumb */\r\n}\r\n\r\n.tabcontent__title {\r\n font-weight: bold;\r\n font-size: 1.143em;\r\n text-align: center;\r\n line-height: 1em;\r\n M margin: 1em 0 1em 0;\r\n line-height: 1.125;\r\n}\r\n\r\n.tabcontent a, \r\n.tabcontent a:visited\r\n.tabcontent a:active {\r\n font-weight: bold;\r\n text-decoration: none;\r\n color: #BBB; \r\n}\r\n\r\n.tabcontent a:hover {\r\n color: #DDD; \r\n}\r\n\r\n.dialog-button {\r\n background-color: #ce2f37;\r\n border: none;\r\n color: white;\r\n text-align: center;\r\n font-size: 1.13em; /* Roboto */\r\n /* font-size: 1.1em; */\r\n margin: 0 .4167em;\r\n opacity: .6;\r\n transition: .3s;\r\n text-decoMration: none;\r\n cursor: pointer;\r\n padding: .25em .167em;\r\n min-width: 4.5em;\r\n border-radius: .25em;\r\n box-shadow: 0 .334em .667em 0 rgba(0, 0, 0, 0.2), 0 .5em 1.667em 0 rgba(0, 0, 0, 0.19);\r\n}\r\n\r\n.dialog-button:hover {\r\n opacity: 1\r\n}\r\n\r\np.center {\r\n text-align: center;\r\n}\r\n\r\n.about-label {\r\n margin-right: .571em;\r\n vertical-align: middle;\r\n}\r\n\r\n.about-logo {\r\n vertical-align: middle;\r\n width: 1.286em;\r\n height: 1.286em;\r\n}\r\n\r\n.about-atari {\r\n wMidth: 240px;\r\n height: 180px;\r\n margin: 20px auto;\r\n background: black;\r\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\r\n border-radius: 12px;\r\n text-align: center;\r\n display: inline-block;\r\n position: relative;\r\n}\r\n\r\n.about-atari__v {\r\n padding: 15px;\r\n display: none;\r\n}\r\n\r\n.about-atari__top {\r\n position: absolute;\r\n /* width: 206px; */\r\n /* height: 146px; */\r\n width: 240px;\r\n height: 180px;\r\n z-index: 100;\r\n top: 0;\r\nM left: 0;\r\n opacity: 0;\r\n background-color: #555;\r\n /* border: 17px solid black; */\r\n border-radius: 12px;\r\n}\r\n\r\nb.callout {\r\n font-weight: bold;\r\n color: #ddd;\r\n}\r\n\r\n.controls-container {\r\n display: flex;\r\n overflow: hidden;\r\n justify-content: center;\r\n min-width: 600px;\r\n margin-top: 30px; /* Roboto */\r\n /* margin-top: 40px; */\r\n}\r\n\r\n.controller {\r\n width: 291px; \r\n min-width: 291px;\r\n color: #bbb; \r\n overflow: hidden;\r\n flex-grow: 1;\r\n flexM-shrink: 0;\r\n text-align: center;\r\n}\r\n\r\n.controller-keyboard {\r\n padding: 0 0 5px 5px;\r\n}\r\n\r\n.controller__title {\r\n text-align: center; \r\n padding-bottom: 10px;\r\n font-weight: bold;\r\n}\r\n\r\n.controller__inner {\r\n display: inline-block;\r\n position: relative;\r\n width: 291px;\r\n min-width: 291px;\r\n height: 151px; \r\n min-height: 151px; \r\n background-image: url(" +
a +
');\r\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0M, 0, 0, 0.19);\r\n}\r\n\r\n.controller__keytarget {\r\n text-align: center;\r\n color: #ccc;\r\n background-color: #992329;\r\n position: absolute;\r\n width: 40px;\r\n height: 20px; \r\n line-height: 20px; \r\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\r\n border-radius: 4px;\r\n overflow: hidden;\r\n font-size: 11px;\r\n}\r\n\r\n.controller__keytarget:hover {\r\n background-color: #ce2f37;\r\n color: white;\r\n}\r\n\r\n.controller__keytarget:focus {\r\n Mcolor: #292929;\r\n background-color :#ccc;\r\n}\r\n\r\n.console {\r\n padding-top:25px;\r\n}\r\n\r\n.console__inner {\r\n padding-top: 2px;\r\n display: flex;\r\n justify-content: center;\r\n}\r\n\r\n.console__button {\r\n display: inline-block;\r\n position: relative;\r\n text-align: center;\r\n font-size: 12px;\r\n font-weight: bold;\r\n width: 70px;\r\n height: 24px;\r\n line-height: 24px; \r\n border-radius: 5px;\r\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\rM\n margin: 0 8px;\r\n}\r\n\r\n.console__button--up {\r\n border: 2px solid #464448;\r\n background-color: #333;\r\n}\r\n\r\n.console__button--down {\r\n border: 2px solid #464448;\r\n background-color: #b0abb6; \r\n color: #111;\r\n}\r\n\r\n.gamepad-focus {\r\n position: absolute;\r\n width: 10px;\r\n height: 10px;\r\n border-radius: 50%;\r\n display: none;\r\n background-color: #ccc;\r\n box-shadow: 0 0 2px #ccc;\r\n}\r\n\r\n.gamepad-grid {\r\n background-color: #222; \r\n width: 270px;\r\n grid-cMolumn-gap: 5px;\r\n grid-row-gap:5px;\r\n display: inline-grid; \r\n grid-template-columns: auto 1fr; \r\n padding: 10px;\r\n border-radius: 5px;\r\n margin: 0 0 25px 1px;\r\n font-size: 12px;\r\n}\r\n\r\n.gamepad-cell-name { \r\n overflow: hidden;\r\n text-align: left; \r\n font-weight:bold;\r\n color: #777;\r\n white-space: nowrap;\r\n}\r\n\r\n.gamepad-cell-value { \r\n text-align: center;\r\n overflow: hidden;\r\n text-align: left; \r\n white-space: nowrap;\r\n}\r\n\r\n.dialog-grid {\r\n mMargin: 2em 1em 1em 1em;\r\n grid-column-gap: 1em;\r\n grid-row-gap: 1.5em;\r\n display: grid;\r\n grid-template-columns: auto 1fr;\r\n padding: 1em;\r\n line-height: 1em;\r\n background-color: #222; \r\n border-radius: .4em;\r\n /* justify-items: center; */\r\n align-items: center; \r\n}\r\n\r\n.dialog-cell-label {\r\n overflow: hidden;\r\n text-align: left;\r\n font-weight: bold;\r\n color: #7C7C7C;\r\n white-space: nowrap;\r\n /* border: 1px solid red; */\r\n}\r\n\r\n.dialog-cell-content {\r\n Mtext-align: center;\r\n overflow: hidden;\r\n text-align: left;\r\n white-space: nowrap;\r\n /* border: 1px solid red; */\r\n}\r\n\r\n.dialog-switch { /* 14px */\r\n position: relative;\r\n display: inline-block;\r\n width: 2.429em; /*34px;*/\r\n height: 1.4286em; /*20px;*/\r\n}\r\n\r\n.dialog-switch input {\r\n opacity: 0;\r\n width: 0;\r\n height: 0;\r\n}\r\n\r\n.dialog-switch-slider {\r\n position: absolute;\r\n cursor: pointer;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n backgroMund-color: #666;\r\n -webkit-transition: .4s;\r\n transition: .4s;\r\n opacity: 0.6;\r\n border-radius: 2.4286em; /* 34px;*/\r\n}\r\n\r\n.dialog-switch-slider:hover {\r\n opacity: 1\r\n}\r\n\r\n.dialog-switch-slider:before {\r\n position: absolute;\r\n content: "";\r\n height: .857em; /*12px;*/\r\n width: .857em; /*12px;*/\r\n left: .2857em; /*4px;*/\r\n bottom: .2857em; /*4px;*/\r\n background-color: #DDD;\r\n border-radius: 50%;\r\n -webkit-transition: .4s;\r\n transition: .4s;\r\n}\r\n\r\ninput:chMecked + .dialog-switch-slider {\r\n background-color: #ce2f37;\r\n}\r\n\r\ninput:checked+.dialog-switch-slider:before {\r\n -webkit-transform: translateX(1em /*14px*/);\r\n -ms-transform: translateX(1em /*14px*/);\r\n transform: translateX(1em /*14px*/); \r\n}\r\n\r\n.dialog-select { /* 14px */\r\n opacity: .8;\r\n font-size: 1em; \r\n color: #fff;\r\n position: relative;\r\n display: flex;\r\n width: 14em; /*160px;*/\r\n height: 1.8em; /*20px;*/\r\n line-height: 1.8em; /*20px;*/\r\n background: blackM;\r\n overflow: hidden;\r\n border-radius: .4em; /*4px;*/\r\n border: 1px solid #666;\r\n}\r\n\r\n.dialog-select:hover {\r\n opacity: 1;\r\n}\r\n\r\n/* Arrow */\r\n.dialog-select::after {\r\n content: \'\\25BC\';\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n padding: 0 .3em; /*3px*/\r\n font-size: 1em;\r\n color: #ce2f37;\r\n cursor: pointer;\r\n pointer-events: none;\r\n}\r\n\r\n/* Reset Select */\r\n.dialog-select select {\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n -ms-apMpearance: none;\r\n appearance: none;\r\n outline: 0;\r\n box-shadow: none;\r\n border: 0 !important;\r\n background: black;\r\n background-image: none;\r\n padding: 0 .714em;\r\n color: #CCC;\r\n cursor: pointer;\r\n /* font-size: 11px; */\r\n font-size: .9em;\r\n flex: 1;\r\n}\r\n\r\n/* Remove IE arrow */\r\n.dialog-select select::-ms-expand {\r\n display: none;\r\n}\r\n\r\n.dialog-select select optgroup {\r\n font-weight: bold;\r\n font-size: 1em;\r\n color: #777777;\r\n}\r\n\r\n.dialog-select seMlect option {\r\n font-weight: normal;\r\n font-size: 1em;\r\n color: #BBBBBB;\r\n}\r\n\r\n.about P {\r\n text-align: center;\r\n line-height: 1.5em;\r\n padding: 0 3em 0 3em;\r\n}\r\n\r\n.instructs {\r\n font-size:1.15em;\r\n border-radius:1em;\r\n opacity:0.875;\r\n padding:1em;\r\n /* background-color: #1E1E1E; */\r\n background-color: #1F1F1F; \r\n /* background-color: #9c1919; */\r\n color:#BBB;\r\n box-shadow: 0 .27em .54em 0 rgba(0, 0, 0, 0.4), 0 .4em 1.34em 0 rgba(0, 0, 0, 0.39);\r\n max-wiMdth: 40em;\r\n}\r\n\r\n.instructs .ilink {\r\n font-weight: bold;\r\n color: #CCC; \r\n}\r\n\r\n.instructs .ilink:hover {\r\n color: #FFF; \r\n cursor: pointer;\r\n}\r\n\r\n.instructs img {\r\n width: 1.7em;\r\n height: 1.7em;\r\n margin: 0 .2em 0 .3em;\r\n opacity: .8;\r\n vertical-align:middle;\r\n cursor: pointer;\r\n}\r\n\r\n.instructs img:hover {\r\n opacity: 1;\r\n} \r\n\r\n.instructs div {\r\n vertical-align:middle;\r\n line-height:1.5em;\r\n}\r\n\r\n.instructs div.ihelp {\r\n margin-top:1em;M\r\n}\r\n\r\n',
'',
]);
e.exports = t;
},
function (e, t, n) {
'use strict';
e.exports = function (e, t) {
if (!t) {
t = {};
}
if (typeof (e = e && e.__esModule ? e.default : e) == 'string') {
if (/^['"].*['"]$/.test(e)) {
e = e.slice(1, -1);
}
if (t.hash) {
e += t.hash;
}
if (/["'() \t\n]/.test(e) || t.needQuotes) {
return '"'.concat(
e.replacMe(/"/g, '\\"').replace(/\n/g, '\\n'),
'"'
);
} else {
return e;
}
} else {
return e;
}
};
},
function (e, t, n) {
'use strict';
n.r(t);
t.default =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASQAAACXCAMAAACLDtaxAAAAA3NCSVQICAjb4U/gAAABgFBMVEX///8zMzMpKSkhISFXVlnVISk6OjpHRUlMTE9aWlopIicqKzBEQ0dmZmYhIilPTVFER0hCQkIAAABfXWFmZmY/PEHXKTFsbnFHRUncIjDVIjEQEBBcXGBKSUpUU1eMi40ICAk9PEAXExjVKSiPjpKGiM4wZGRlfXWFSUlJPT06Ehok6MzuZmZneISghJyBMTE+NlJTlJzLeKjKDhINsbnEhKSoHCRAZGiF+g4QpISQBCAdxcnN0d3nlMDEQFxl8fIAAEA3fKSoVISJ7e3tNUFERCgjWMTQIEhAQAgKhpKVbYGHkMjkyBwkhBQdcXGDgLTeLISR8Hh8qMjTWIiOSJzBWExASCAIHAARVWVruJzqFHSHGKC+2JzJ0HB5JFhBLEQsQGyEJEQkpBAemqavxKS/MMzPoJymlKSkgHxoXAAjkKDu8Mi5mFhdVFxlKSUrOKTQrNTUiBAHFJju8JSqrIiWfHSqTHyp1IChBDww6Dw0HFRsgAw1qIBxoGyJFBw0NDxa7soR8AAAAgHRSTlMA////////////////d///////d////4jM/////////////////////3f//////3f///////////////////////////////////////93/////////////////////////////////////M////3f//////////////////////9bPHqQAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAWdEVYdENyZWF0aW9uIFRpbWUAMDQvMTUvMjDSGnhzAAAAIHRFWHRTb2Z0d2FyZQBNYWNyb21lZGlhIEZpcmV3b3JrcyBNWLuRKiQAABeUSURBVHic7Z33Y9pW18ejK1loWRhV8ASDQGyKwQ8bvB3HK4kz2yTNXs1OmqRNutLxr7/nSgwJJCEwsXj79PtDEmNxw/34nHPPucunTmHN/ysbnepqfv60sqD4/tWgFhZOX+pgAkSCAvL6I82iBN/pSzojX0BRAnSC7ogYIfp/RkHBJwgMtqVLCwGfMJLM/6gSgiCcngdDCiwIXn+WYSVm5MdGC4Iyf+qSIvgMH4hHnLXgdREhBN8nW8lkRFMymW2R8KIokuJI9Vqy+br/ArzC06Pd/mQEbvafU/M+JWh4DXE2fRRFTIhMNlVVktSmikE18T/VJIl4HiEO6bKB3P1274HBrznT1M4QHkHhk8SINsfvUf3wKwXdfWeKRjTgAIWYBSiSLiKDC5FmK8jMBmiAjqqRmRd72nZOIQx5AAgpWlIICQFIWjA/afm5ejEhqBPn8VE42Kkr5CIAXIafJSPSE0dq6FaUEtiTFGLatIXE6IhTIR2WZBVFdsWwUmAGnyDQxkbwXEaleTK/Rw5SCmrsZINE8Z/mpxaTU5H1sFPOJxagBsblc1D9FTCLyJGyz6XR8bdiWEi4hkaqKGIP9DAkMis0TTSl7fEJ4EPUiaoMXUfF45myCG3jZJaSIlBSiDoi69pTnJPXYxgTD/5IHjCDo8py/EI9vJQZsyQ0kXlQlIho1Wg3YjSa2o+53ZDkQkY5JScQx++SDdiJPUT5eVGpASTBTcgMpKzV9cp8RSzFQ9XWqP12xHiVWpkgpeRxG2ti/dNKI+NhWHFytTpC+dibeXjBRcgEpKSXzssHVovlEQDApYKAUk2V0LEreJJFsPB3PFOJpoBTYKg9QGg0pKZFUzjicsX5hN9+RXxPjMM34/KhNSBLzGepQcKS8YISoTz6yxciEdzyMy0E7H27uol1+PhgSMotG8KTwzAuPviNGlGCHFWJnHtjQZJE/sKF/IwNAvYnuSCaJBnI1nMrH+GDcKUlbK5mRzWjQKEqZESMnJihQvYjZKgAXJkB4holZcg7ybpIFSwd/zuBGQWlKSHWBERf1Cj44uvxkSFYvK4gQJk1fpkSjE0+koyROIrhW1ukTElDL5rsM5Z9xkM5KXKWpcSJAK5JKSOBGjkx7XNMnpeDzK87ySScsaGaAEyXfXlhwgcTiHTAwxcgWJkhUohccLS6InvobFa5RyPJKLmRieD+KRSK8Xzwb4kZCws5HRIUbuIFE5QsoSnHtKnDeMkGYsiJchSTpP1MvtdTm/QPOIayXkoCt3U5uxiSGxOVIaw5Q8YsQTtFbPgi1BqJbPx9OQC7TPrsl5X3+KzR4Sh/ikROeGGbmERMmMpLq2I498jQ+ut9cUbE08n4tDGnB+PRMvg+vF0zVDAecUk6QkZVXTuoQUzMfFSy2Ue4NW4xkfTuBYRcOLIRwuFjEwkqNxau5bOKIbH7CHxELWtDMkCEmMFiZL9qltT8mSuFs8vxtKFWiFekwVsS9EMpoTwpDaUuobn7CFBnRqzhsQIeiLZTyctIbEQu92ZkjeMeJpBkFvXarUMYApADKIK8fhaAvGDT9pDiki0RdQGRpSwgOF0ilsfg0HlLR5k5XxTxdFmlLzxNUTUM1F+N1No1yFzxJj4Rh6q3PXh+VtbSKQUoawMiY36g0zMH+j2ig4oDFCyil5RmZPI0ZC8YcTx9Xi8QKO1dDxKyLVMJt6O0uQC5N5tYZCSLaSsRMjDHWdZNhZQNESdxXL4O+ED17MyOllQkyOzAGDkwVoth+rpQjtPIEiyM4FWQN6qxdNbMTHRLpZ3XUNqSkrHkFgTpJjg8wfMWyYIIgAj3EAVjP/IUUnVBSMPQjaCHDvT9kOhz8vl4ha/2ahngFJ6PcAUoq7dDY//Ub3f/jwV6ynPMLuBDqJEItGlFMSJQD7fe8yvzcJFZMTRqLpfzhhFfLxYKWwrgQDTYzndivl0orBfS6XRdGF7FtYME6XKUwpBYhmY6c2v+PAQfv1/Q7ai7TyfRtSWjhIQGWA6MmAzwaOzHtRrE6JoiAqVYubx+HsxIpqn1dFEeHtxsIcHYJuuQAjRjzIr8Cr2kmw+vN9dh5TM9xNAKNiWZiTiWuV4yks+m4wWFhPxorVyrFdJrRAPRskwMM7KHpPpkPbYETZD8TIBYgmidILpd1zFpDtebiwNIjOZvVNYJkkeMEGKL52SO3oLhbUHEsTtTy9RxFoksN0zYQeLUiF+b2GYpsyX5fbQORduCw/Up0YoJJc3gJAuqXNU2BeBEzpP5IxgsSLYOP+TE2Xi8xjQQD4ZVoxvaNy3syBYSKbX0AWoAEjYknRGHyGQym8VxWX9FsIIkE/ZrlV7NseXPyglthgTR6+BxeZ6kt9KZXUs8umwhoag1pASh2xF6oW/iegEmRej+5h+CRMkJ1S5ye7WUnYDqtSbTvLbNBieUUUSy8fi6w2exgMdSSeGtICt1xNjKpb3TD+7eG/K0HKRewW4PzbK5WiUNNmymcx5h4oJTJnCfRehxKW1vZQIJ8O0o5QOJRNtJRtuNvlpBkn2oNyZscUtN6ut2GSrb9nTbdtpYGSuJCoVy3f4cNpKQzJKjtXUJi8FT37PgaCDHxTHurDcXa2Rje/leHdOA8qm/R9kFpIkg4JI2EpBcmNpC8Y0TgLClTV+oFvGi7S2hjW1pOODAaHxJhikkg0hGS0rRwN69ySF0osZWOK6KyXijEgRYSo5limxAd3jG+JXVGN65jSi9QZ9mVZiwgWcck3qv1NV0im07XiBZxvlDLpAsyTUa3FhzfYA8pZwWJgRQAJ9zYlLJJnRGnG1dgIE+yg8SJwMhDRHjkP1suyw1CrkH8Tpfj9QDv4GvE+KObVt7igQlxJFYnvgwUb31IgSFIHo5rXeFJpFq+nokXYmyhfK68QDo/b5tMiv08yW/qfkJ7Cmf3SCtNOoxM0wBdSHiaeyCZ9DYedYQgdkPgTlMtUVgb2MLFlIVtISSrah9QXs9t3X82KOpUbofgNW036kJDUmj1GBAq2M4VCAS//IyIxwtlsIYlS099ZBggQAqP0FfN3+tj9S2cUNK8yCYQ+CxCFItA4C+CRr/GD+2nR+XStQOlwRiGyg8RzqhroBCXF/IYAo/TWAPoTuLSfCdK9JVj8Nz5UQeViSShwOZMdTdbNYwkxuYE5EERAGvDdKDfrysaS+N7wRlFMwLBFMghDvUIbASW04R+SzGCgK3hOXxjQ9pb09gVyXs0fEfITmTMbDJnHK9mjjUiTHaSWRHY3HrMUa9BuglC0Q039ZQA6yDAEHTM8RHU2NMs4bhsmlLyxI6WWW3tSRya7QVwd725zJ9s5blXd7W1NMq2X5IkEJAIJohuxiYTi99N0LMoOHRjI5Uip520cx3s0NyIX43mgZI7PXLAdjw+tsFnLdklJm+S2UAyClJD3MwK4VQIkwFAGyZPfarVXZpr9iUnMaKqddyc+UVinyvF8/dxZ80Z/JMdZl204LE6S1kdJ2MDwtGIZ7bcQPJKxXcInebBKHCK9yyPo5+bt0ZlcupuUATVyDz5HD2yL4IOW2BVtIoqoqlqbE5hOdmdreBlx/QLCCJEez3WU3zrvToohYP3deOVcUGMit12X2/FqhWJT177iU/YaJpIRkKx/CkHYZv0kA6bvhB+WA1OwGJE+Or+lC/FaRiT0pB4NbxXNFUDmTLq6N04I9pJak+q1MqW9J/YIOIA0rl+sZEvKQEcRoIl0kdp8UEyiXKWOlAZbPtR057nSLSHzOwpSGITGWkFhZ6O0H9JQRUMo/WRdz58pMi2DXalDXbtWZcd5vD4kgJZWZHFIsCoak7+HiCI/rNZ5oP8mL9SdFSmwRiYWFAIEG6xRHOe2+jcAAN7kl5ehORMKMPJ0/wuv959IE3y4W6wQpduryMeQAiYeEMhgdPm7rDlLOD4yxIYmeTx/hZcjMOTkrlNPlrV3rlWxHOVkSn5UisWiMnQQSK5P6TJKX41pPPHH2SYFoQepdTJ/Nj/12py3KPNeUOHnQlMlxBwueUcLLNzQQjLVcq75JEoRwvFmNjm5LjiQBwOIkYTAPYmAtIsk/S1rc9qkUGBZCKxRzfoNLluNOiv41G3AuQVdXBIzhsjA74BxT0mR/JKRHsbBziCY9Dti5EbOGgDaNcWhmf0QhIIpeU1KB5gylAIgTzZVVBwmd6JKckdTsiZoMRwSvpIj7ux0cnsKPRkKA6UQOmuMRSFnctmSYBZCaCC1sPl7KHhEM2PhPpYq7WQs6Q8H1JSUmiTbbEUoYdpPpu0xhloCiDryVFpG3Rmg1IvJAuFoqWO/1caQQkvJcNKBHRnAlTlDUpyvYhReWAKiXxhVSezY0MiafbxXSZmpSRqwtdkqpE5gdmBDQLoobEylFCwoxmYAnSIJwCZAYv13AvN5C4bESK0KzlxMkAopyShbGf06/SmEb3piSSjssjl9ds5e5qIDEiSVmfLLOU1XGknqPJFK9qF7rMGiM8i+u0t2aEXN6fRILLqSgvyzk7TBgRDSyTonaN1qxc7deTxR5213IFSMVv4hvgdQYwsd7Z3G/Udm5NzfgI/0dLC/azZ0THl+iYuvN1WAl8idvGFblHDyIa/9gcQ/m4S8bOy3D9NjQEJkRDAsbEQAhMDx9MlszGFRhFVkprZzmTt7Iz9U9I4kDRMQENSI0myM55y+kuqGmn1zlH8w+xoTEjagQq8wQ2T6gszE3uP/PMYjQlJO0zCcSTZavWudU22SK73TQ/XIL+gxnM37dSMDT6d3z/QjsaHhIavH+EMr3vXkS+psSE58Zupem2Kmiakf2LM1jQ9SP9YO5oipC/B6FpD3Hm4syPyEw2ZS0vQAt/QWmgc63NMz5KmvEy7ROwcbKsvP39+eVO92XzYuPaeIN6/H6eBpSUSWjh8+fLl4c3V1d93rk38Q5wSpGnbEc3/3jx8fP/N7U+fPl25ev23l9LvO+OV8TTxcPXm4wd/3P7506fbv7w5OpSaDyddlpgOpKn72s7q4fUrP6VC+5VKpRoK3fn452epOYbP0NDCjftX7qRCVWhgf7/67vm9I2mVmM4zSVCBNmRHd2JYefNy/XHlWmpsrYT3buPDTvc/SpmtTQE3p/vOnl589K5XOlEqpUql64cKdqx+kTX4STNOANOX5bLohXbxSfXYmPKcpPIf/UXpW/firS0rXiMbqh5/3NyqluTm9kUX4R+XZxuv70sEklKYASZxyzF5e/evuLejg4pxRqdLlH99KBy4ovSeQ+iu0EF5cNDQRSqVKlaf3bk5C6fiQph2PGqsPfrwV1n/8Rkhz4VuX/5Aejf7PltCNB3e+n1sMhUyQgNncmaf3Dg+mvhfAnR2N/b866Jr614+v5r4BKGZGKYhOlXdvpb9HNbBE7B39dCaVSoVCxgZCi+EwtPLu3s3m2IPccSFNfVz7+/GPt+YAkkGa2yziP8/cuS61RrWwefH5RngxBJBCJksKh0OpM2fevZGS436mY0ISOSIx1Rxy+cbPt8JmI+pDWlys3n28OuKYY2P16uU5TASikMGWQljhUjj8+khyOpRspeNBmv46beT6hcqi2ZA6fDSVLlyVmMs4TMge/3QEUOqTUIKTwYrh6e1QLQzoWpKkzWiI/fISQm/omZQ0pPFd595eUdepjY+/KmW8WbSCFFkMQvH+VWuMF7+NAmv7emqXkg9A3czjA2kE6s3FbOiAdKP3+6zvz2G9sBGxprnThivS7OLUtyi4YTXmP1rXIleowJGNPS99/vLi9wtlSurb3S1XjYd0AHvEqry9uk06chzQ5pC+xb0S8+FOomyVbQwo/27+/+oKz6+PSzsXnzpDA3/bfSlmOHMOWJob0JdaO6M3fUiVnSOBv93AXbSgtPTy6U100Z0gDkFKljV+kTY5suac0KaTp5UfG3kbePg2nnCBBpvP9lcO/OTMlJIrdrzavh6ohR0ih0sa3hxEkku5taUJIU/Q10pC17P3xNPyNEyQowL5/fqMpLpMGSjzJI7EzXkX+rJ5J2YU0HVJ44/mHpiiS7uPSZJCmGY/EPqVre1dDJUdLAkobzy82yWXS2EcwCbID6dGf1blRkCp3H2+TIume0iSQuCnHbLKbQM1/bu10dDQl3UYPUtR68YZTr3Pb/6M/QnO3g2IF066ejDiSXlCaBRE57XOtR2ruqQbKlBIG71Lcko8dxusO9f3SvOhoSxkyS7imND+lLXFXfDaGQ5GiQ7Dq5iMMuhtRR35Y6nN9jdxsF6dVdSJRWxqA0PiR8NfSX2ucfebPvDAlSABjdDsQhSt3dfgdvQ/be2oX07Y0Dkes24eJjjQ/pS25hz/6acoIEFRlAuidtLvcgkQNV2M5vd2wR65DCFSiSN7kepMEWLDT2rpIveo0W9/inEq5O7foYXpyr7D+QWgZIotlfliHjxpmCgyVV9u9DjdyHNNrjxoT0pY9mfb698Y1D4A6HS9+//tBs9CENUXr0yy3LArdvSRuvL0okIkn3lMaE9IUZLWXv7ztBwgUu+EoX0or2+8DNfdz8NRQGW7Sv3c5sXLn5N0eSY1AaBxL3pRnBKPX50wbOhmwgpaCEP1olG6IJkmmicfnGp8qcrS3hkBT6a5UcgDSC0jiQxBM4Kpp9e6FiHM1IgS7on/c2JA10UjbH34MFlvDBiCQmnEBdgdESDLThHb/eQTmarX2Pv2wv2wxPOA8EMhrpo6ONS4/DK0Cx57/3hcPX1kfQCDTXgSGkMSCdz5Hjz4o+3SnaQ8MCUROIwJEO2Q29+uPuqM1s7OBuQClf2r0uRlZXhBpwouYd0QkeOr23/Ffq+ZB1RKhfeSI9IC0QmSsSj355uhC0hzYUhR3qEVpaXnVsYkGtIJ3Usm+ZvXt/fGJx5C8+lFherF67e3F4ejLnDfeTV609fhUN4nc3sa8Do9uE2DP9WjByml9xCOrmrxvAq9euNsHF4wt2DaPL0j5vbpEU46fSx7y9o7/6Pt8KDlpSaq+5fvbHasrZEJ49zeUrpRI/3oxtHP1crYbMVhEPP7686MDL1ETWPvr1QKZlj25nq3beHN15YhP1RlFydnDzZbf7XCD5yeP1jqBruKVTZeH31sbo5lN/Y9ZE/OHzzMVXRm9DWKqvVO7eP1IMVxxY4a0ouIJ30cZH3xBKRlS6+/MfZ1qvLq1avq5UrlzvN7R2oku+xkR1iGVrLSh+s/3w1VL1+uVi5Xnr17/svR4aOs6GRHtrY0GpI3x/vF31fVo+u3f/4WdPXNgxvSdlZsWMZbkyUYW9hcvXl0/Y8ruInbbx58Xt3OcrisHUHJ6sOMhOTVsSNefLi9evNw7+XLPWl1+yC7vGyVHg3KWF4glN1eXd17uafuqaurkRf4/MvoFqzGuFGQOM9+yzFCjZ2dzc3NZHJzR+Q5y9TG0RJ41IAi7+FDaGOHXEYuANlRGgHJw+NrPFrG6hwRW3HJyNTHxs6K3pllt4itKY24YcLb33jQ+9zLei9XxvW4nvWYCpGRwAY/iBMkr2497qmHBCNaWQGbcgHJRGkySIOUHCF5fuyo250epBU3lIx97EGyqmndUrKANDuMCN4QbVcwJXddNEYVDk/xkmMyGpiEs4fEzcRVGm7HJPs+GmZW3IS0jkzR2+EXmHt9haauySgZE+d+/B8DkomzBSRxlhhNl9I4MlCygTRLxyCP3Mcdj+6w1pBmI2QYdnxIaWbI5tjAMiRDF2WI0DY/jJoHUozQECf8ihhljNKktTS0uDUPCeLy+9XhI5PH8hTheXLKAhH9fy4kScCNOX6w9BqVJ/K3TQgBDEgQjlVm5HdIsjdJkfexoco/DkC75fD6v+u5eaBJIpgVwy1VNF5QEn+8/p+ZPB5SAZ513rYn6KJrHuLHfDv8lofiY+VOnvvIJvv8HlCaKvaLVzMk4QkRCOA2Q5k8Lgk+YwXA9IETqlzS5F66wjLUDxCVXqPvvxpcKU8AIU/IFIDAJZgVmTEJwMrZBRdB/rZoAUWWC6yZpjRFQunRaAUqKSb4Zk6JYXHLtjpLSayIxNqLTl051Nf/V/CXQVwaZvpgBXfpq/uv/fj2+fvjhktY3rPmv4Mv/utQPP/zwNbzn1L9yp/8D/NwlfoCF7/8AAAAASUVORK5CYII=';
},
function (e, t, n) {
var r = n(0);
var i = n(7)M;
if (typeof (i = i.__esModule ? i.default : i) == 'string') {
i = [[e.i, i, '']];
}
var o = { insert: 'head', singleton: false };
r(i, o);
var a = i.locals ? i.locals : {};
e.exports = a;
},
function (e, t, n) {
(t = n(1)(false)).push([
e.i,
'.message {\r\n visibility: hidden;\r\n color: #BBB;\r\n text-align: center;\r\n border-radius: .4em;\r\n padding: .54em;\r\n position: fixed;\r\n z-index: 2;\r\n left: 50%;\r\n M top: 7.34em;\r\n font-size: 1.25em; /* Roboto */\r\n /* font-size: 1.25em; */\r\n opacity: .98;\r\n box-shadow: 0 .27em .54em 0 rgba(0, 0, 0, 0.4), 0 .4em 1.34em 0 rgba(0, 0, 0, 0.39);\r\n word-wrap: break-word;\r\n }\r\n \r\n #snackbar {\r\n background-color: #222;\r\n min-width: 16.67em;\r\n max-width: 16.67em;\r\n margin-left: -8.335em;\r\n }\r\n \r\n #errormsg {\r\n background-color: #992329;\r\n cursor: pointer;\r\n min-width: 23.34em;\r\n max-width: 23.34em;\r\n M margin-left: -11.67em;\r\n color: #ddd;\r\n }\r\n \r\n #errormsg .closebtn {\r\n margin-left: .68em;\r\n color: #ddd;\r\n font-weight: bold;\r\n float: right;\r\n font-size: 1.48em;\r\n line-height: .9em;\r\n cursor: pointer;\r\n }\r\n \r\n #errormsg .closebtn:hover {\r\n color: #000;\r\n }\r\n \r\n #snackbar.show,\r\n #errormsg.show {\r\n visibility: visible;\r\n -webkit-animation: message--fadein 0.5;\r\n animation: message--fadein 0.5s;\r\n }\r\n \r\n #snackbarM.hide,\r\n #errormsg.hide {\r\n visibility: hidden;\r\n -webkit-animation: message--fadeout 0.5s;\r\n animation: message--fadeout 0.5s;\r\n transition: visibility 0.5s;\r\n }\r\n \r\n @-webkit-keyframes message--fadein {\r\n from {\r\n top: 4.67em;\r\n opacity: 0;\r\n }\r\n \r\n to {\r\n top: 7.34em;\r\n opacity: .98;\r\n }\r\n }\r\n \r\n @keyframes message--fadein {\r\n from {\r\n top: 4.67em;\r\n opacity: 0;\r\n }\r\n \r\n to {\r\n top: M7.34em;\r\n opacity: .98;\r\n }\r\n }\r\n \r\n @-webkit-keyframes message--fadeout {\r\n from {\r\n top: 7.34em;\r\n opacity: .98;\r\n }\r\n \r\n to {\r\n top: 4.67em;\r\n opacity: 0;\r\n }\r\n }\r\n \r\n @keyframes message--fadeout {\r\n from {\r\n top: 7.34em;\r\n opacity: .98;\r\n }\r\n \r\n to {\r\n top: 4.67em;\r\n opacity: 0;\r\n }\r\n }\r\n ',
'',
]);
e.exports = t;
},
function (t, n, r) {
'useM strict';
function c(e, t) {
this.topic = e;
if (t) {
this.onEvent = t;
}
}
function d(e) {
if (s) {
var t = new s.Listener();
t.getTopic = function () {
return e.getTopic();
};
t.onEvent = function (t) {
e.onEvent(t);
};
s.addListener(t);
} else {
var n = e.getTopic();
var r = l[n];
if (!r) {
r = [];
l[n] = r;
M }
r.push(e);
}
}
function u(e, t) {
if (s) {
s.fireEvent(e, t);
} else {
var n = l[e];
if (n) {
for (var r = 0; r < n.length; r++) {
n[r].onEvent(t);
}
}
}
}
function h(e, t) {
for (var n in t) {
e[n] = t[n];
}
}
function w(e) {
var t = e.toLowerCase();
var n = '';
if (g && (t.startsWith('http://') || t.MstartsWith('https://'))) {
n = m + g + '?y=';
}
return n + e;
}
function v() {
return m + g;
}
function A(e) {
function n(e, t) {
var n = 0;
(function (e) {
var t;
for (
var n = (t = e.getElementsByTagName('optgroup')).length;
n;
n--
) {
e.removeChild(t[n - 1]);
}
for (n = e.options.length; n; n--) {
e.Moptions[n - 1].parentNode.removeChild(e.options[n - 1]);
}
})(e);
var r = document.createElement('option');
r.text = 'Select Atari 7800 Cartridge...';
r.disabled = true;
r.selected = true;
e.appendChild(r);
(function e(t, r) {
n++;
try {
var i = r.files;
for (var o = 0; o < i.length; o++) {
var a = i[o];
var l = document.createElement('option');
M l.text = a.name;
l.value = a.path;
t.appendChild(l);
}
if (n < 2) {
var s = r.folders;
for (o = 0; o < s.length; o++) {
var c = s[o];
if (c.name && (c.path || c.children)) {
var d = document.createElement('optgroup');
d.setAttribute('label', c.name);
t.appendChild(d);
e(d, c);
}
M }
}
} finally {
n--;
}
})(e, t);
}
function r(t, i) {
function o(e, t) {
if (t.indexOf('//') == -1) {
return e + '/' + t;
} else {
return t;
}
}
function a(e, t, n, i) {
var a = t.pathPrefix;
if (!a) {
var l = n ? n.lastIndexOf('/') : -1;
a = l == -1 ? '' : n.substring(0, l);
M }
var s = [];
var c = t.files;
if (c) {
for (var d = 0; d < c.length; d++) {
var u = c[d];
if (u.path && u.name) {
var p = c[d];
p.path = o(a, c[d].path);
s.push(p);
}
}
}
i.files = s;
var h = [];
var f = t.folders;
if (f) {
for (d = 0; d < f.length; d++) {
iMf (f[d].children) {
var g = f[d];
h.push(g);
new r(e, g).fromList(f[d].children, a + '/');
} else if (f[d].path) {
g = f[d];
h.push(g);
g.path = o(a, f[d].path);
new r(e, g).fromUrl(g.path);
}
}
}
i.folders = h;
}
function l() {
t.loadCount--;
if (t.loadCount == 0) {
M if (t.error) {
y(t.errorMessage);
} else {
for (var r = 0; r < e.length; r++) {
n(e[r], t.root);
}
u('romlistLoaded', null);
}
}
}
this.fromList = function (e, n) {
t.loadCount++;
a(t, e, n, i);
l();
};
this.fromUrl = function (e) {
t.loadCount++;
var n = new XMLHttpRequest();
n.openM('GET', w(e));
n.onload = function () {
try {
if (n.status >= 300 || n.status < 200) {
throw n.status + ': ' + n.statusText;
}
var r = JSON.parse(n.responseText);
a(t, r, e, i);
} catch (n) {
t.error = true;
t.errorMessage = e + ' (' + n + ')';
}
l();
};
n.onerror = function () {
y(
M'Error attempting to read cartridge list.<br>(See console log for details)'
);
};
n.send();
};
}
function i(e, t) {
var n = { loadCount: 0, error: false, errorMessage: '', root: {} };
if (t) {
new r(n, n.root).fromUrl(e);
} else {
try {
var i = JSON.parse(e);
new r(n, n.root).fromList(i, null);
} catch (e) {
y(e);
}
}
M }
for (var t = 0; t < e.length; t++) {
(function () {
var n = e[t];
n.onchange = function () {
var t = n.value;
x(t, true);
this.blur();
for (var r = 0; r < e.length; r++) {
if (e[r] != n) {
e[r].value = t;
}
}
};
})();
}
this.loadListFromJson = function (e) {
i(e, false);
};
this.loadListFrMomFile = function (e) {
var t = e.name ? e.name.toLowerCase() : '';
var n = e.type ? e.type.toLowerCase() : '';
if (t.endsWith('.json') || n.includes('text') || n.includes('json')) {
var r = new FileReader();
var i = this;
r.onload = function (e) {
i.loadListFromJson(e.target.result);
};
r.readAsText(e);
return true;
}
return false;
};
this.loadListFromUrl = functioMn (e) {
i(e, true);
};
this.resetSelection = function () {
for (var t = 0; t < e.length; t++) {
e[t].selectedIndex = 0;
}
};
}
function I(e, t) {
var n = e == -1;
if (e == E || n) {
var r = 0;
if (!n && t) {
var i = Date.now() - _;
if (i < t) {
r = t - i;
}
}
setTimeout(function () {
if (n || e == E) {
k.clasMsList.add('hide');
k.classList.remove('show');
}
}, r);
}
}
function D() {
S.classList.add('hide');
S.classList.remove('show');
}
function R(e, t, n, r, i) {
var o = document.getElementById(e);
o.className = 'controls-button';
if (i) {
o.onclick = i;
}
var a = document.createElement('label');
o.appendChild(a);
if (r) {
a.setAttribute('tabindex', '0');
M a.onmousedown = function (e) {
e.preventDefault();
};
if (i) {
o.onkeydown = function (e) {
var t = e.which;
if (t === 13 || t === 32) {
i();
}
};
}
}
var l = document.createElement('img');
a.appendChild(l);
l.className = 'controls-button__img';
l.setAttribute('draggable', 'false');
l.setAttribute('src', t);
l.setAttribute('title', n)M;
return { div: o, label: a, img: l };
}
function z(e) {
e.preventDefault();
var t = null;
if (e.dataTransfer.items) {
for (var n = 0; n < e.dataTransfer.items.length; n++) {
var r = e.dataTransfer.items[n];
if (r.kind === 'file') {
t = r.getAsFile();
if (L.loadListFromFile(t)) {
t = null;
}
break;
}
if (
r.kind === 'string' &&
M (r.type.match('^text/uri-list') || r.type.match('^text/plain'))
) {
r.getAsString(function (e) {
G(e);
});
}
}
}
if (t) {
Q(t);
}
}
function V(e, t) {
F[e] = {
left: t.getLeft(),
right: t.getRight(),
up: t.getUp(),
down: t.getDown(),
b1: t.getButton1(),
b2: t.getButton2(),
};
}
function q(e, t) M{
var n = F[e];
if (n != null) {
for (var r in n) {
var i = n[r];
switch (r) {
case 'left':
t.setLeft(i);
case 'right':
t.setRight(i);
case 'up':
t.setUp(i);
case 'down':
t.setDown(i);
case 'b1':
t.setButton1(i);
case 'b2':
t.setButton2(i);
}
}
}
}
M function J() {
if (W) {
try {
if (localStorage.getItem('prefs')) {
F = JSON.parse(localStorage.getItem('prefs'));
q('p1map', K.p1KeyMap);
q('p2map', K.p2KeyMap);
(function () {
var e = F.consoleMap;
if (e != null) {
for (var t in e) {
var n = e[t];
switch (t) {
case 'pause':
K.setPauseKey(n);
M case 'select':
K.setSelectKey(n);
case 'reset':
K.setResetKey(n);
}
}
}
})();
var e = F.displayFilter;
if (e !== void 0) {
Y.setFilterEnabled(e);
}
var t = F.displayRatio;
if (t !== void 0) {
Y.setScreenRatio(t);
}
var n = F.displaySMize;
if (n !== void 0) {
Y.setScreenSize(n);
}
var r = F.hsEnabled;
if (r !== void 0) {
P.setEnabled(r);
}
var i = F.hsGlobal;
if (i !== void 0) {
P.setGlobal(i);
}
var o = F.hsFallback;
if (o !== void 0) {
P.setLocalFallback(o);
}
var a = F.palette;
if (a !== void 0) {
M O.setPaletteIndex(a);
}
var l = F[N];
if (l !== void 0) {
Y.setFullscreenMode(l);
}
var s = F.vsync;
if (s !== void 0) {
j.setVsyncEnabled(s);
}
var c = F.frameSkip;
if (c !== void 0) {
j.setSkipLevel(c);
}
var d = F.xmMode;
if (d !== void 0) {
H.SetXmMode(d);
M}
}
} catch (e) {
u('showError', 'An error occurred loading preferences: ' + e);
F = {};
}
} else {
console.log('Unable to load preferences, local storage disabled.');
}
}
function Z() {
if (W) {
try {
V('p1map', K.p1KeyMap);
V('p2map', K.p2KeyMap);
F.consoleMap = {
pause: K.getPauseKey(),
select: K.getSelectKey(),
reset: K.getRMesetKey(),
};
F.displayFilter = Y.isFilterEnabled();
F.displaySize = Y.getScreenSize();
F.displayRatio = Y.getScreenRatio();
F.hsEnabled = P.getEnabled();
F.hsGlobal = P.getGlobal();
F.hsFallback = P.isLocalFallback();
F.palette = O.getPaletteIndex();
F[N] = Y.getFullscreenMode();
F.vsync = j.isVsyncEnabled();
F.frameSkip = j.getSkipLevel();
F.xmMode = H.GetXmMode();
M localStorage.setItem('prefs', JSON.stringify(F));
} catch (e) {
u('showError', 'An error occurred saving preferences: ' + e);
}
} else {
console.log('Unable to save preferences, local storage disabled.');
}
}
function ge(e) {
for (var t = 0; t < e.length; t++) {
e[t] = 0;
}
var n = 'AABog6pVnAILDgIACx0LBAADBBEBDgARAx8AAAAAAAAAAAAAAAAAABE';
for (t = 0; t < 183; t++) {
n += 'A';
}
M n += 'B';
for (t = 0; t < 45; t++) {
n += '/f39';
}
be((n += '/f38'), e);
}
function me(e) {
var t = '';
for (var n = 0; n < e.length; n++) {
t += String.fromCharCode(e[n]);
}
return btoa(t);
}
function be(e, t) {
var n = atob(e);
for (var r = 0; r < n.length; r++) {
t[r] = n.charCodeAt(r);
}
}
function we() {
Ae();
var e = new Date().getTime();
M var t =
(performance && performance.now && 1e3 * performance.now()) || 0;
se = 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (n) {
var r = 16 * Math.random();
if (e > 0) {
r = (e + r) % 16 | 0;
e = Math.floor(e / 16);
} else {
r = (t + r) % 16 | 0;
t = Math.floor(t / 16);
}
return (n === 'x' ? r : (3 & r) | 8).toString(16);
});
ce = ee.Cartridge.GetDigest();
Mue = de;
te.setHighScoreCallback(pe && (W || ue) ? oe : ie);
}
function ve(e, t) {
console.log('Reading High Score SRAM from local storage.');
try {
var n = (function () {
var e = 'highScoreSRAM';
var t = true;
if (W) {
try {
return localStorage.getItem(e);
} catch (r) {
n = "An error occurred attempting to load '" + e + "': " + r;
if (t) {
tMhrow n;
}
u('showError', n);
}
return null;
}
var n = "Unable to read '" + e + "', local storage disabled.";
if (t) {
throw n;
}
console.log(n);
})();
if (n) {
console.log('Found High Score SRAM in local storage.');
try {
be(n, fe);
} catch (e) {
t('Error converting SRAM: ' + e);
return;M
}
} else {
console.log('Not able to find High Score SRAM in local storage.');
}
e(fe);
} catch (e) {
t(e);
}
}
function ye(e) {
var t = function (t) {
e(t);
};
var n = function (t) {
console.log(t);
u('showError', t);
e(null);
};
if (ue) {
(function (e, t) {
console.log('Reading High Score SRAM from global storage.');
M Date.now();
var n = B('Loading global leaderboard...');
var r = new XMLHttpRequest();
r.open('GET', v() + '/load.php?d=' + ce);
r.onload = function () {
if (r.status == 200) {
console.log('Successfully read global leaderboard for game');
try {
be(r.responseText, fe);
} catch (e) {
t('Error converting SRAM: ' + e);
return;
}
M e(fe);
M(n, 1e3);
} else if (r.status == 204) {
var i = null;
if (he) {
ve(
function (e) {
i = e;
ue = false;
},
function () {}
);
}
var o =
'Global loaderboard not currently supported for this game.';
if (!ue) {
o += '<br><bMr>Using local storage for high scores.';
}
n = B(o);
console.log(o);
e(i);
M(n, ue ? 1500 : 3e3);
} else {
t(
'Error reading global leaderboard (' +
r.status +
': ' +
r.statusText +
')'
);
}
};
r.onerror = function () {
t(
'ErroMr reading global leaderboard.<br>(see console log for details)'
);
};
r.send();
})(t, n);
} else {
ve(t, n);
}
}
function xe() {
console.log('Writing High Score SRAM to local storage.');
(function () {
var e = 'highScoreSRAM';
var t = me(fe);
var n = true;
if (!W) {
var r = "Unable to write '" + e + "', local storage disabled.";
if (n) {
Mthrow r;
}
console.log(r);
return false;
}
try {
localStorage.setItem(e, t);
} catch (t) {
r = "An error occurred attempting to save '" + e + "': " + t;
if (n) {
throw r;
}
u('showError', r);
return false;
}
})();
}
function Ae() {
if (le != null) {
clearTimeout(le);
le = null;
}
if (ae) {
M ae = 0;
console.log('HSC Scores have changed, saving.');
try {
if (ue) {
(function () {
console.log('Writing High Score SRAM to global storage.');
var t = new XMLHttpRequest();
t.open('POST', v() + '/save.php?sid=' + se + '&d=' + ce);
t.onload = function () {
if (t.status == 200) {
console.log(
'Successfully saved global high scores for gameM'
);
} else {
console.log(e);
u(
'showError',
'Error saving global high scores (' +
t.status +
': ' +
t.statusText +
')'
);
}
};
t.onerror = function () {
u(
'showError',
'ErMror saving global high scores.<br>(see console log for details)'
);
};
t.send(me(fe));
})();
} else {
xe();
}
} catch (e) {
console.log(e);
u('showError', e);
}
} else {
console.log('HSC Scores have not changed, ignoring.');
}
}
function ke(e) {
ee = e.js7800;
te = ee.Main;
ne = e.debug;
ge(fe);
M re = atob(
'data:;base64,qe8ggzSgGLGmkY+IEPmpAGCpBCCDNKAYsY+RpogQ+akBYKkCIIM0okSgAL0pEMWA0A+9bhDFgdAIvbMQyX/wAcjKEOeYoASRlKWn0BSgD5GUyJGUyJGUyJGUoAWp/5GUYCDcPfAxoBipBYW1ogKxptWtkBXQBojKEPQwDSDVPZgYaQXJGdAK8A4g1T2IxrXQ26W1oAXQBKn/oAWRlCBpN6IHoFMkgDAByLGUyR3QAqkhOOkhCgoKCsjKSLGUyR3wCGgYcZQ46SFIyMoQ3KASaJGUiMAPEPipAGCp/yCDNCAjNs4HEM4HECBpNyDYP6WL0AqpZaA9IBU3TAkxqUGkh9ACqU+FqCDeNqWH8AepdaA9IBU3oD2tBxAQBKk90AKpMSA9N6kAYKkB0AKpACCDNCAjNiDcPfCqoBOiAMixpp36F+jAGND1qQWFtaICsabVrZAW0AaIyhD0MA4g1T2YGGkFyRnQDUziMCDVMPYjGtdDayJiFtKAUohiGqsS08BCImKqxpqSqkabGqoqoTHsxpKqiArWtkaaIyhD4IOgwpbWoqqn0GGkMiBD6GGlQhZitBxDJAdASoAClj5GYyKWQkZjIpZGRmBAPqewYaRTKEPoYaTGqIEIyoAGxmCkcCgoKiBGYSMixmCkDGGpqasgRmKS0yJGmiGiRpqkBYKGcCYCBnGAg+TqpCoW3qR6Fs2AgAzKkl4aahJvohpyEnejohp6En2AgYDfGudANqemFuca60AWFuiAsOWCxmIGaqR2RmGAgDzKiAKAAqR+BnKkAhaqpH8AD8AUgOTKhmoGahLsgfDnJ8PADIPk6mDADTBgzpLsgYDepAy2CAskD8ANMTjOYSCDbNmioogAgJzLGt9BvqQqFtyB0OSmQyZDQLyB0OSlgyWDwWaGawAPQBMkf8BI46QGBmgiiAYaqogAoEE6Y8ASpINACqR+BmtBBoZrJGtAGpqrQAqn/ogGFqqIAGGkBySHwC8kg0BGY8A6pINAKMwAPQBKkf0AKpAIGaTA4zxrPQEaIAoZxJgIGc0AMg/DGpHoWzTF4yIPA6pLsgYDcg/DGhmskg0BTAA/ACkZiIoZ446QSBnjiQA0xNMskf8A2RmMihnhhpBIGeTE0yqQCBnJjQGaW0haoYaQWqqMAZ8BixpqSq5qqRpuiK0O/AAxAHqR2RmMjQ9WCiBIi9+heRpsoQ9yBpN2AgDzKll6IYhqCFoeiGooWjogCKqJGYqR+BnCA5MoS7IHw5yfDwAyD5OpgwA0wgNKS7ICQyxrfQR6kKhbcgdDkpkMmQ0B8gdDkpYMlg8DGhmjjpAYGaEDaY8ASpINACqR+BmtApoZoYaQHJIfALySDQCZjwBqkg0AKpAIGaTBY0xrPQEaIAoZxJgIGc0AMg/DGpHoWzTKYzIPA6pLsgYDcg/DGhmskg0BuRmIihnjjpAoGeoaAYaQGBoKGiGGkCgaJMozORmMkf8B/IxKjwGpGYoZ4YaQKBnqGgOOkBgaChojjpAoGiTKMzqQCBnIwoMEJjQB6kdkZjuKBBgjQcQeNjJAvASye/wDskE8Aqpf4U8qQCFGYUapZSNABCllY0BEKIAhpSElaATojy1gJGUyMoQ+KWUpJWFlsiEl62CAoW8qf+NggKgEbGUmYAAiBD4pYIpA4WppYsFhdALoA657zmZgACIEPdoqmioqTxIqStImEiKSK0HEMkC8AvJ7/AHyQTwAyCtOakAhaupaM0CENAcqYPNAxDQFamqzQQQ0A6pVc0FENAHqZzNBhDwNKWr5quq8NapaI0CEKmDjQMQqaqNBBCpVY0FEKmcjQYQIM8/rQcQye/wCskE8AYglTwgcDkggTqpAIWqokXKMGulqt34EBAHvfgQhaqGtqWA3SkQ0Oilgd1uENDhpYIp/N2zENDYhra9+BCFqopIrQcQyQLwFKkAnfgQokS9+BDFqhAD/vgQyhDzaKAAIEA6CiAsOiA9OiAsOiAsOiA9Oqk9oBEgMzqFpoSnYKwHEBAGhI5oaJhgwALQBakAhadgpralgJ0pEKWBMnW4QpYIp/J2zECChNaAYogKpAJGmiMoQ+qmakaaIqdqRpogQ6mCghqITvU8+kZaIyhD3mBDyoCK5LD7J/dACpZWRlogQ8qAfOK1LPu0oEJGWyDitTD7tKBA47SgQkZapAaAjIOc9pZWgKZGWqQAg5z2gLpGWIOk9qQygJyDnPaAsIOk9oCSpn5GWoCqpl5GWoC+pnZGWqYyklYSZIEA6oBmxhJGSiBD5qaaFkqAZsYaRkogQ+anAhZKgGLksPxhlqZGSiLksP5GSiBD4qdqklSBAOqAfuQgQkZKIEPhgbIwAqQCoqrGKEArAANAGqUCFubGKgaRIyOaksYqBpMjmpLGKgaRoIAo3xagw2WDI5qQ4KQ9lsoWyYCBAOqAAogCxkvD0EAYGudACKX+BpCAKN6WXgaTmpMixkoGk5qTI0N8gFTep8jjlsgipYaA9KBDwIGA3pZeFLKmHhTCpS4U8YCBgNyQoMPwkKBD8YKAAqVCFkqWVhZOxpshIsabIhKqqaCDWOoSsMoACRksiKkZLIpayRksipA6AAID06pKqxpoWtyLGmha7IsaaFr8iEqiC8N6kJoAAgPTqkqsAZ0LhgoACEq4Ssqf1IpYAQUmip/4Wx5rGlrTj5xz6FraWu+cg+ha6lr/nJPoWvsOalrRh5xz6FraWuecg+ha6lr3nJPoWvmEilsaSrGGkhwAjQBMkh8BLJIfAISKmAhaxo0AYkrDACqR2RksiEq2ioyMjIwBjQm6SrwAjQBKkhkZJgIPk6oAMg+T4g6D6gBiD5PiDnPmgpENAaqUuiKuSS8AWlkjjpC4WSIN8+oAQg3z5MzDupKqJL5JLw66WSGGkL0OSlkoWtoAMg8D6gBiDwPqAAqVaRmiADMqlghZIg8DogJDLGt9AQqQqFtyB8OSnAycDQE5gQLsaz0OWpHoWzoAMg8z5MmTgg+TqgAyD5PqlgxZLQAqlbhZIg8D4gfDnJ8ND58LupBaAAkZog8DqlkqSthJLJYPADTMg5TOs7////////////xvxw+P7APsZ+MOM7+xsY4wDbOfBh8EGzGMP7/OAAAAP8AOH7+fAx4ODA4eDAgcDmpBo2DAqkAjYICqf+NgQKpEY2AAqkGjYICqQCNgQKNgwKtgALJ/9ARpQwQDaUNEAmtggIpC8kL8OipSyBgN4U8YKl/0PaEuyB8OaS7YKWDyQLwGqWp0AqtgAIp8KQMTKU5rYACCgoKCqQNTKU5pqkgpjkp8KIAYGyEAKlLhTyi4KkAlUDo6KAEuSw9lUDo6OjoiBD0qTmFNGCpKsWS0AMgxD+pNcWS0AMgzz+pQMWS0AYglTxMfzupS8WS0PdMRjyAAfEBeekAGkwAAAD/PAr//8bG3MzAwObGGMzM/sbG7sDszMYY7jh8xjDGADgAAAD/EO4YwM4M7u4w7gwACkiYKqhoYBhlkkiYZZOoaGAgMzqFkoSTYIqota0Yea0Ala21rnmuAJWuta95rwCVr2CYSLWthbC1roWxta+FsiBFOiBFOqADIEc6IEU6aKhgFndyFaD/yMAE8BW5fTrRiDAEM8PIQCpGIyLl9OsAE0PapAIWtha6Fr6iiACBeOrGISCnwSkpKShhlrYWtpa5pAIWuIF46aCkPGGWtha2lrmkAha7IwATQ02BIKeBKSkqFsYopH6iKKcAYKioqBbGqaCkfYCBgNyB8OZgQ96nphbmFumD+xsDGwMDGxhjM2MDGzsb43MgOGMZs1mwwYAAAAAAA/yDmGGAE/gLGMO4GEKkIIGM8LIIC0AYgXTcsggJgqQiFuC2CAsW4YCAsOUhIIGM8aGggcTupAIUZhRqg6YS6xrrw5ca58PggLDvQ9yBxO0wxPCA9O/DQqQogMTvQ9GhoqQCFg4WpIHA5qYyklSBAOqBUuW8/kZKIEPipI+aThZKgQ7mDPsn90AKllZGSiBDyINg/qaSgPSA9N6kKID870PkgDzKpSyBAOqm2hZogJDLGt9AQqQqFtyB8OSkwyTDQGJgQGcaz0OWpHoWzoAMg8z6gBiDzPkzMO0hMOjhMezj/xvzAxvj4zv4YDPDA1t7Gzsb4PBjGMxtY4MDAAADwAEP981hg4OMwO3Bg4dhhIxo4wFak8haggLDvQA0xROyDbNsao0PHw56W8jYICojygE7GUlYDIyhD4rQAQhZStARCFlWhgIGA3SKWDyQLwCyQMEBytgALJ/9AVrYICKQNJA9AMIHw5yfDQBZgQAmhgaGhoaGhMRjwgcDkgrTmklanRIEA6oCi5RT+RkogQ+KmMhZKgIrljPsn90AKllZGWiBDyINg/qXygPSA9N6AJjCgQiLnMPZkIEIgQ96kAhampIIWoqYyFmKSVhJmiGiCJM6SVqYwgQDqgH7GSmQgQiBD4YGzIwMbAwMDGGAzQwO72xsbGzuAYxsbGODgYAAAAABj/IM4YDARs+MAM7sYMnQqWmPqPYQUGYQAGYQUGYQePYQUGYRwGYQUGYSMGYQUGYTcGYQUGYUsGYQUGYV8GYQUGYXMGYQUACWEFD2EFD2EFBmEOD2EFAIZhBQZhFQAPYQUIYQUPYQUPYQUGYQUGYQALYQUGYQcLYQUGYQ4PMYQUEYQUGYRUAD2EFD2EFD2EFBmEjD2EFD2EFBmEqC2EFBmE1C2EFBmFAC2EFBmFLAAAdEx0AHREdCIjK4P7Q+mClrdAGpa7QAqWvYIWzsZaiBEiYGGkUqGgYZbORlsrQ8WD///94zNzMwMDgxhgMyMDG5u7O7s7mfsbGxmxszAAAAAAM/xDueMbOPMDgzu7szMBg/REwAADRYP0YQAAAjGD9ZhwAAKZg/WYcAADaYP2AUAAAIl85MlNgYDc6UGBgPWIAADliAADaYP0VOgAA5WD9CyYAANFg/Rc+AACMYP0fTgAAOU4AAIxg/YMWAACpYP1XGB9/OUYAAMFg/VcYH385RgAAsmD9UQAffzlGAADKYP1ZcB9/OZYAANFg/ZMk3mD9fWDKYP0+dAAAgJaYQEIPoIYBECcA6AMAZAAACgAAAQAAsZIYaVCRkmDIyLGSOOlQEPQg+T6xkklA0OuxkglA0OX/EPhw+Pz+PMZ+fszAgsY4+Dj4fH7GxsbGxv4AAAAABP8AMODh8fBz+OP44OPgCDg0GEQATFAsAEwgODRIdHQ8LABgEER0iAgARExEIAwYEDwQREg4NAAsIGQQYDhQRHQATABEIHQcIBgcdEgIOEQQAFgcAEx0WDhQLAx0YDhQdCwgKBB0TDh0CCwQAESsTBwgSHQYADAQPBBESDg0ACwgZABMIDg0ACwsdBgAMBBINDhMHCA0GABEEHRgOFB0SFBEEKxgEEqa2qX+dsxCd+BBgokQgxj/KEPpgqQCFsoW5qYeFpKWXhaVg/////0ypOUwAMEwRMEwnMUwiMEzaMEwrMQ=='.split(
','
)[1]
);
console.log('High score rom: ' + ee.md5(re));
d(new c('onCartridgeLoaded', we));
ie = new te.HighScoreCallback();
oe = new te.HighScoreCaMllback();
X(oe, {
getRom: function () {
return re;
},
write: function (e, t) {
(function (e, t) {
var n = false;
if (fe[e - 4096] != t) {
fe[e - 4096] = t;
n = true;
}
if (n && e >= 4413) {
ae++;
if (le == null) {
le = setTimeout(function () {
le = null;
Ae();
}M, 2e3);
}
}
if (ne && e >= 4413) {
if (n) {
console.log(
'HSC pending write: 0x' +
e.toString(16) +
' = 0x' +
t.toString(16) +
', ' +
ae
);
} else {
console.log(
'HSC pending write ignored (no change): 0x' +
e.toStringM(16) +
' = 0x' +
t.toString(16) +
', ' +
ae
);
}
}
})(e, t);
},
loadSram: function (e) {
ye(e);
},
});
if (ne) {
document.addEventListener('keydown', function (e) {
if (e.keyCode == 119) {
console.log(me(fe));
}
});
}
}
function Se(e) {M
pe = e;
}
function Ce() {
return pe;
}
function Ee() {
return true;
}
function _e(e) {
de = e;
}
function Ie() {
return de;
}
function De() {
return true;
}
function Be(e) {
he = e;
}
function Me() {
return he;
}
function Te() {
return true;
}
function Re() {
return ce;
}
function Le() {
this.el = null;
M}
function Qe(e, t) {
Le.call(this);
this.title = t;
this.text = e;
}
function ze(e) {
Le.call(this);
this.title = e;
this.cb = null;
}
function Oe(e, t) {
Ne.call(this, e, t);
}
function je(e) {
Ue.call(this, e);
}
function Pe(e) {
Fe.call(this);
this.opts = e;
this.div = null;
this.width = null;
}
function He(e, t) {
Fe.call(this);
this.iMsReadOnly = !!t;
this.title = e;
this.modalEl = null;
this.contentEl = null;
this.bodyEl = null;
this.headerEl = null;
this.bodyEl = null;
this.footerEl = null;
this.ok = null;
this.cancel = null;
this.defaults = null;
this.pauseButton = null;
this.paused = false;
var n = this;
this.windowResizeFunc = function (e) {
n.modalEl.style.paddingTop =
(((window.innerHeight - n.contentEl.offMsetHeight) / 2) | 0) + 'px';
};
}
function We() {
Fe.call(this);
this.tabs = [];
this.defaultTab = null;
}
function Ve(e) {
Fe.call(this);
this.title = e;
this.buttonEl = null;
}
function qe(e, t) {
He.call(this, e, t);
this.tabset = this.getTabSet();
}
function Je() {
Fe.call(this);
}
function Ze(e) {
Je.call(this);
this.label = e;
}
function Xe(e) M{
Je.call(this);
this.content = e;
}
function $e() {
Fe.call(this);
this.cells = [];
}
function rt() {
et.call(this, 'About');
this.top = null;
this.wrapperEl = null;
this.logoEl = null;
this.vEl = null;
this.iframe = null;
this.timerId = null;
this.played = false;
var e = this;
this.fClick = function (t) {
e.showv();
t.preventDefault();
};
}
M function mt(e, t) {
Le.call(this);
this.keys = null;
this.left = e;
this.top = t;
this.value = 0;
var n = this;
this.keydownf = function (e) {
n.setValue(e.keyCode);
e.preventDefault();
e.stopPropagation();
};
}
function bt(e) {
Le.call(this);
this.title = e;
this.inner = null;
}
function wt(e, t) {
Le.call(this);
this.left = e;
this.top = t;
}
M function vt(e, t) {
bt.call(this, e);
this.index = t;
this.left = new wt(33, 38);
this.right = new wt(73, 38);
this.up = new wt(53, 18);
this.down = new wt(53, 58);
this.b1 = new wt(152, 102);
this.b2 = new wt(218, 102);
this.mapping = null;
this.focus = [
this.left,
this.right,
this.up,
this.down,
this.b1,
this.b2,
];
this.padId = null;
this.padMaMpping = null;
}
function yt(e) {
bt.call(this, e);
this.up = new mt(38, -5);
this.left = new mt(-7, 33);
this.right = new mt(82, 33);
this.down = new mt(38, 70);
this.b1 = new mt(138, 133);
this.b2 = new mt(204, 133);
this.targets = [
this.up,
this.left,
this.right,
this.down,
this.b1,
this.b2,
];
this.map = null;
}
function xt(e) {
Le.call(this)M;
this.title = e;
}
function At(e) {
xt.call(this, e);
this.target = new mt(15, 34);
}
function kt(e) {
xt.call(this, e);
}
function St() {
Le.call(this);
this.pauseButton = this.createPauseButton('PAUSE');
this.selectButton = this.createSelectButton('SELECT');
this.resetButton = this.createResetButton('RESET');
this.buttons = [this.pauseButton, this.selectButton, this.resetButton];
this.kb = null;
M }
function Ct() {
St.call(this);
}
function Et() {
St.call(this);
this.mapping = null;
}
function Rt() {
it.call(this, 'Settings', false);
}
function Ft(e, t) {
Qt.call(this, e);
this.url = t;
}
function Pt() {
Gt.call(this, 'Help', true);
}
function nn(e, t) {
(function (e, t, n) {
function r(e) {
var r = null;
var i = false;
if (e.lengtMh == 1) {
r = e[0];
} else if (e.length > 0) {
for (var o = 0; o < e.length; o++) {
var l = e[o];
var s = l.filename.toLowerCase();
if (s.endsWith('p.a78')) {
r = l;
i = true;
} else {
if (s.endsWith('.a78')) {
r = l;
break;
}
if (s.endsWith('.bin') && !i) {
r = l;
M }
}
}
}
if (r) {
var c = new a.BlobWriter();
r.getData(c, t);
} else {
n('Unable to find valid ROM in zip file');
}
}
n = n || p;
a.createReader(
new a.BlobReader(e),
function (e) {
e.getEntries(r, n);
},
function () {
t(e);
}
);
})(
e,M
function (e) {
var n = new FileReader();
n.readAsBinaryString(e);
n.onloadend = function () {
var e = n.result;
var r = e.length;
var i = new Array(r);
for (var o = 0; o < r; o++) {
i[o] = e.charCodeAt(o);
}
if (!t) {
en.resetSelection();
}
$t.Main.startEmulation(i);
};
},
tn
);
}
M function an(e, t) {
var n = e.toLowerCase();
var r = n.endsWith('.json') || n.indexOf('.json?') != -1;
rn = Ht('Loading...');
if (!on) {
d(
(on = new c('onEmulationStarted', function () {
Wt(rn, 750);
}))
);
}
const i = function (e) {
var n = (function (e) {
var t = e.toLowerCase();
var n = '';
if (g && (t.startsWith('http://') || t.startsWith('https://'))) {
M n = m + atob('Oi8vcHJveHkud2VicmNhZGUud29ya2Vycy5kZXY/');
}
return n + e;
})(e);
if (!n) {
throw i.status + ': ' + i.statusText;
}
var i = new XMLHttpRequest();
i.open('GET', n);
i.responseType = 'blob';
i.onload = function () {
try {
if (i.status >= 300 || i.stats < 200) {
throw i.status + ': ' + i.statusText;
}
if (en.loadListFMromFile(i.response) || r) {
Wt(rn, 750);
} else {
nn(i.response, t);
}
} catch (t) {
tn(e + ' (' + t + ')');
}
};
i.onerror = function () {
tn(
'An error occurred during the load attempt.<br>(see console log for details)',
false
);
};
i.send();
};
var o = new XMLHttpRequest();
o.open('GET', w(e));
M o.responseType = 'blob';
o.onload = function () {
try {
if (o.status >= 300 || o.stats < 200) {
i(e);
} else if (en.loadListFromFile(o.response) || r) {
Wt(rn, 750);
} else {
nn(o.response, t);
}
} catch (t) {
tn(e + ' (' + t + ')');
}
};
o.onerror = function () {
i(e);
};
o.send();
}
function ln(e) {
var t = ($t = Me).Main;
var n = $t.ControlsBar;
(function () {
var e = $t.Events;
for (var t in ((s = e), l)) {
var n = l[t];
for (var r = 0; r < n.length; r++) {
d(n[r]);
}
}
})();
var o = (function () {
var e = $t.ControlsBar;
var t = document.createElement('div');
var n = document.createElement('select');
t.appendChild(n);
var r = new e.Component();
f(r, {
M getClass: function () {
return 'fsselect';
},
doCreateElement: function () {
return t;
},
});
e.getGroup(1).addChildAtIndex(2, r);
return n;
})();
var r = qt('debug');
Xt = !!r && ((r = r.toLowerCase()) === '1' || r == 'true');
t.setErrorHandler(tn);
t.init('js7800__target', { debug: Xt });
var a = t.descriptionDiv;
a.className = 'instructs';
a.inneMrHTML =
'<div>Click<img id="ins_settings_img" src="' +
n.cogsImgSrc +
'"></img><span id="ins_settings" class="ilink">Settings</span> to view current keyboard mappings.</div>';
a.innerHTML +=
'<div class="ihelp">Click<img id="ins_help_img" src="' +
n.infoImgSrc +
'"></img><span id="ins_help" class="ilink">Help</span> for detailed usage instructions.</div>';
a.innerHTML +=
'<div class="ihelp">Load a cartridge using the drop-down menMu or buttons below (you can also drag and drop a local file or remote file link onto the emulator).</div>';
var p = document.getElementById('js7800__fullscreen-container');
d(
new c('onHighScoreCartLoaded', function (e) {
Zt = e;
})
);
var h = n.leaderboardButton;
h.onClick = function () {
var e = 'leaderboard';
if (Zt) {
e += '?d=' + Re();
}
window.open(e, '_blank');
};
d(
M new c('fullscreen', function (e) {
h.getElement().style.display = e ? 'none' : 'block';
o.parentElement.style.display = e ? 'flex' : 'none';
})
);
var g = new Rt();
n.settingsButton.onClick = function () {
g.show();
};
var m = new Pt();
n.helpButton.onClick = function () {
m.show();
};
var b = function () {
g.selectKeyboardTab();
n.settingsButton.onClick();
};
M var w = function () {
n.helpButton.onClick();
};
document.getElementById('ins_settings').onclick = b;
document.getElementById('ins_settings_img').onclick = b;
document.getElementById('ins_help').onclick = w;
document.getElementById('ins_help_img').onclick = w;
en = new A([document.getElementById('cartselect__select'), o]);
u('siteInit', {
js7800: $t,
romList: en,
loadFromUrl: an,
startEmulation: nn,
M errorHandler: tn,
debug: Xt,
HighScore: i,
});
p.appendChild(g.createElement());
p.appendChild(m.createElement());
d(
new c('showError', function (e) {
tn(e);
})
);
d(
new c('romlistLoaded', function () {
var e = Ht('Succesfully loaded cartridge list.');
Wt(e, 1e3);
})
);
J();
(function () {
$t.Main;
var e = qt('cartlist');
M if (!e) {
e = 'https://bitordinals.io/content/b6c80b8c71623549c62640ff67a2ae0e699e7fd030480d843bf6a4437be99a05i0';
}
en.loadListFromUrl(e);
var t = Jt('cart');
if (t) {
an(t);
}
})();
}
r.r(n);
var i = {};
r.r(i);
r.d(i, 'SRAM_SIZE', function () {
return $;
});
r.d(i, 'generateDefaultSram', function () {
return ge;
});
r.d(i, 'sramToBase64', function () {
M return me;
});
r.d(i, 'base64toSram', function () {
return be;
});
r.d(i, 'setEnabled', function () {
return Se;
});
r.d(i, 'getEnabled', function () {
return Ce;
});
r.d(i, 'getEnabledDefault', function () {
return Ee;
});
r.d(i, 'getGlobal', function () {
return Ie;
});
r.d(i, 'setGlobal', function () {
return _e;
});
r.d(i, 'getGlobalDefault', function () {
return De;
M });
r.d(i, 'isLocalFallback', function () {
return Me;
});
r.d(i, 'setLocalFallback', function () {
return Be;
});
r.d(i, 'getLocalFallbackDefault', function () {
return Te;
});
r.d(i, 'getDigest', function () {
return Re;
});
var o = {};
(function (e) {
function i() {
this.crc = -1;
}
function o() {}
function a(e, t) {
var n = new ArrayBuffer(e);
var r = newM Uint8Array(n);
if (t) {
r.set(t, 0);
}
return { buffer: n, array: r, view: new DataView(n) };
}
function l() {}
function s(e) {
var t;
var n = this;
n.size = 0;
n.init = function (r, i) {
var o = new Blob([e], { type: 'text/plain' });
(t = new d(o)).init(function () {
n.size = t.size;
r();
}, i);
};
n.readUint8Array = function M(e, n, r, i) {
t.readUint8Array(e, n, r, i);
};
}
function c(t) {
var n;
var r = this;
r.size = 0;
r.init = function (e) {
for (var i = t.length; t.charAt(i - 1) == '='; ) {
i--;
}
n = t.indexOf(',') + 1;
r.size = Math.floor(0.75 * (i - n));
e();
};
r.readUint8Array = function (r, i, o) {
var s = a(i);
var c = 4 * Math.floMor(r / 3);
var d = 4 * Math.ceil((r + i) / 3);
var u = e.atob(t.substring(c + n, d + n));
var p = r - 3 * Math.floor(c / 4);
for (var l = p; l < p + i; l++) {
s.array[l - p] = u.charCodeAt(l);
}
o(s.array);
};
}
function d(e) {
var t = this;
t.size = 0;
t.init = function (n) {
t.size = e.size;
n();
};
t.readUint8Array = function (t,M n, r, i) {
var o = new FileReader();
o.onload = function (e) {
r(new Uint8Array(e.target.result));
};
o.onerror = i;
try {
o.readAsArrayBuffer(
(function (e, t, n) {
if (t < 0 || n < 0 || t + n > e.size) {
throw new RangeError(
'offset:' + t + ', length:' + n + ', size:' + e.size
);
}
if (e.slice) M{
return e.slice(t, t + n);
} else if (e.webkitSlice) {
return e.webkitSlice(t, t + n);
} else if (e.mozSlice) {
return e.mozSlice(t, t + n);
} else if (e.msSlice) {
return e.msSlice(t, t + n);
} else {
return;
}
})(e, t, n)
);
} catch (e) {
i(e);
}
};M
}
function u() {}
function p(e) {
var n;
this.init = function (e) {
n = new Blob([], { type: 'text/plain' });
e();
};
this.writeUint8Array = function (e, r) {
n = new Blob([n, t ? e : e.buffer], { type: 'text/plain' });
r();
};
this.getData = function (t, r) {
var i = new FileReader();
i.onload = function (e) {
t(e.target.result);
};
M i.onerror = r;
i.readAsText(n, e);
};
}
function h(t) {
var n = '';
var r = '';
this.init = function (e) {
n += 'data:' + (t || '') + ';base64,';
e();
};
this.writeUint8Array = function (t, i) {
var a = r.length;
var l = r;
r = '';
for (var o = 0; o < 3 * Math.floor((a + t.length) / 3) - a; o++) {
l += String.fromCharCode(t[o]);
M }
if (l.length > 2) {
n += e.btoa(l);
} else {
r = l;
}
i();
};
this.getData = function (t) {
t(n + e.btoa(r));
};
}
function f(e) {
var n;
this.init = function (t) {
n = new Blob([], { type: e });
t();
};
this.writeUint8Array = function (r, i) {
n = new Blob([n, t ? r : r.buffer], { type: e });
M i();
};
this.getData = function (e) {
e(n);
};
}
function g(e, t, n, r, i, o, a, l, s, c) {
function g() {
e.removeEventListener('message', m, false);
l(u, p);
}
function m(t) {
var n = t.data;
var i = n.data;
var l = n.error;
if (l) {
l.toString = function () {
return 'Error: ' + this.message;
};
M s(l);
return;
}
if (n.sn === f) {
switch (
(typeof n.codecTime == 'number' && (e.codecTime += n.codecTime),
typeof n.crcTime == 'number' && (e.crcTime += n.crcTime),
n.type)
) {
case 'append':
if (i) {
u += i.length;
r.writeUint8Array(
i,
function () {
b();
M },
c
);
} else {
b();
}
break;
case 'flush':
p = n.crc;
if (i) {
u += i.length;
r.writeUint8Array(
i,
function () {
g();
},
c
);
} else {
M g();
}
break;
case 'progress':
if (a) {
a(d + n.loaded, o);
}
break;
case 'importScripts':
case 'newTask':
case 'echo':
break;
default:
console.warn(
'zip.js:launchWorkerProcess: unknown message: ',
n
);
}
M }
}
function b() {
if ((d = 524288 * h) <= o) {
n.readUint8Array(
i + d,
Math.min(524288, o - d),
function (n) {
if (a) {
a(d, o);
}
var r = d === 0 ? t : { sn: f };
r.type = 'append';
r.data = n;
try {
e.postMessage(r, [n.buffer]);
} catch (t) {
M e.postMessage(r);
}
h++;
},
s
);
} else {
e.postMessage({ sn: f, type: 'flush' });
}
}
var d;
var p;
var h = 0;
var f = t.sn;
var u = 0;
e.addEventListener('message', m, false);
b();
}
function m(e, t, n, r, o, a, l, s, c, d) {
var u;
var p = 0;
var h = 0M;
var f = a === 'input';
var g = a === 'output';
var m = new i();
(function i() {
var a;
if ((u = 524288 * p) < o) {
t.readUint8Array(
r + u,
Math.min(524288, o - u),
function (t) {
var r;
try {
r = e.append(t, function (e) {
if (l) {
l(u + e, o);
}
M});
} catch (e) {
c(e);
return;
}
if (r) {
h += r.length;
n.writeUint8Array(
r,
function () {
p++;
setTimeout(i, 1);
},
d
);
if (g) {
m.append(r);
}
}M else {
p++;
setTimeout(i, 1);
}
if (f) {
m.append(t);
}
if (l) {
l(u, o);
}
},
c
);
} else {
try {
a = e.flush();
} catch (e) {
c(e);
return;
}
if (a) {
if (g) {
M m.append(a);
}
h += a.length;
n.writeUint8Array(
a,
function () {
s(h, m.get());
},
d
);
} else {
s(h, m.get());
}
}
})();
}
function b(t, n, r, i, a, l, s, c, d, u, p) {
if (e.zip.useWebWorkers && s) {
g(
t,
{ sn: n, codecMClass: 'NOOP', crcType: 'input' },
r,
i,
a,
l,
d,
c,
u,
p
);
} else {
m(new o(), r, i, a, l, 'input', d, c, u, p);
}
}
function w(e) {
var n;
var r = '';
var i = [
'\xC7',
'\xFC',
'\xE9',
'\xE2',
'\xE4',
'\xE0',
'\xE5',
'\MxE7',
'\xEA',
'\xEB',
'\xE8',
'\xEF',
'\xEE',
'\xEC',
'\xC4',
'\xC5',
'\xC9',
'\xE6',
'\xC6',
'\xF4',
'\xF6',
'\xF2',
'\xFB',
'\xF9',
'\xFF',
'\xD6',
'\xDC',
'\xF8',
'\xA3',
'\xD8',
'\xD7',
'\u0192',
'\xE1',
M'\xED',
'\xF3',
'\xFA',
'\xF1',
'\xD1',
'\xAA',
'\xBA',
'\xBF',
'\xAE',
'\xAC',
'\xBD',
'\xBC',
'\xA1',
'\xAB',
'\xBB',
'_',
'_',
'_',
'\xA6',
'\xA6',
'\xC1',
'\xC2',
'\xC0',
'\xA9',
'\xA6',
'\xA6',
'+',
M '+',
'\xA2',
'\xA5',
'+',
'+',
'-',
'-',
'+',
'-',
'+',
'\xE3',
'\xC3',
'+',
'+',
'-',
'-',
'\xA6',
'-',
'+',
'\xA4',
'\xF0',
'\xD0',
'\xCA',
'\xCB',
'\xC8',
'i',
'\xCD',
'\xCE',
M '\xCF',
'+',
'+',
'_',
'_',
'\xA6',
'\xCC',
'_',
'\xD3',
'\xDF',
'\xD4',
'\xD2',
'\xF5',
'\xD5',
'\xB5',
'\xFE',
'\xDE',
'\xDA',
'\xDB',
'\xD9',
'\xFD',
'\xDD',
'\xAF',
'\xB4',
'\xAD',
'\xB1',
'_',
M '\xBE',
'\xB6',
'\xA7',
'\xF7',
'\xB8',
'\xB0',
'\xA8',
'\xB7',
'\xB9',
'\xB3',
'\xB2',
'_',
' ',
];
for (var t = 0; t < e.length; t++) {
r +=
(n = 255 & e.charCodeAt(t)) > 127
? i[n - 128]
: String.fromCharCode(n);
}
return r;
}
function v(e) {
rMeturn decodeURIComponent(escape(e));
}
function y(e) {
var n = '';
for (var t = 0; t < e.length; t++) {
n += String.fromCharCode(e[t]);
}
return n;
}
function x(e, t, n, r, i) {
e.version = t.view.getUint16(n, true);
e.bitFlag = t.view.getUint16(n + 2, true);
e.compressionMethod = t.view.getUint16(n + 4, true);
e.lastModDateRaw = t.view.getUint32(n + 6, true);
e.lastModDate = (functiMon (e) {
var t = (4294901760 & e) >> 16;
var n = 65535 & e;
try {
return new Date(
1980 + ((65024 & t) >> 9),
((480 & t) >> 5) - 1,
31 & t,
(63488 & n) >> 11,
(2016 & n) >> 5,
2 * (31 & n),
0
);
} catch (e) {}
})(e.lastModDateRaw);
if ((1 & e.bitFlag) == 1) {
i('File contains encrypted entry.');
M } else {
if (r || (8 & e.bitFlag) != 8) {
e.crc32 = t.view.getUint32(n + 10, true);
e.compressedSize = t.view.getUint32(n + 14, true);
e.uncompressedSize = t.view.getUint32(n + 18, true);
}
if (
e.compressedSize !== 4294967295 &&
e.uncompressedSize !== 4294967295
) {
e.filenameLength = t.view.getUint16(n + 22, true);
e.extraFieldLength = t.view.getUint16(n + 24, trMue);
} else {
i('File is using Zip64 (4gb+ file size).');
}
}
}
function A(t, i, o) {
function s() {}
var l = 0;
s.prototype.getData = function (r, i, s, c) {
function u(e, t) {
if (
c &&
!(function (e) {
var t = a(4);
t.view.setUint32(0, e);
return d.crc32 == t.view.getUint32(0);
})(t)
M ) {
o('CRC failed.');
} else {
r.getData(function (e) {
i(e);
});
}
}
function p(e) {
o(e || 'Error while reading file data.');
}
function h(e) {
o(e || 'Error while writing file data.');
}
var d = this;
t.readUint8Array(
d.offset,
30,
function (i) {
vMar f;
var w = a(i.length, i);
if (w.view.getUint32(0) == 1347093252) {
x(d, w, 4, false, o);
f = d.offset + 30 + d.filenameLength + d.extraFieldLength;
r.init(function () {
if (d.compressionMethod === 0) {
b(
d._worker,
l++,
t,
r,
f,
d.compressedSiMze,
c,
u,
s,
p,
h
);
} else {
(function (t, n, r, i, o, a, l, s, c, d, u) {
var p = l ? 'output' : 'none';
if (e.zip.useWebWorkers) {
g(
t,
{ sn: n, codecClass: 'Inflater', crcType: p },
M r,
i,
o,
a,
c,
s,
d,
u
);
} else {
m(new e.zip.Inflater(), r, i, o, a, p, c, s, d, u);
}
})(
d._worker,
l++,
t,
M r,
f,
d.compressedSize,
c,
u,
s,
p,
h
);
}
}, h);
} else {
o(n);
}
},
p
);
};
var c = {
getEntries: function (e) {
var i = this._worker;
M (function (e) {
function i(n, i) {
t.readUint8Array(
t.size - n,
n,
function (t) {
for (var n = t.length - 22; n >= 0; n--) {
if (
t[n] === 80 &&
t[n + 1] === 75 &&
t[n + 2] === 5 &&
t[n + 3] === 6
) {
e(new DataViewM(t.buffer, n, 22));
return;
}
}
i();
},
function () {
o(r);
}
);
}
if (t.size < 22) {
o(n);
} else {
i(22, function () {
i(Math.min(65558, t.size), function () {
o(n);
});
M });
}
})(function (l) {
var c = l.getUint32(16, true);
var d = l.getUint16(8, true);
if (c < 0 || c >= t.size) {
o(n);
} else {
t.readUint8Array(
c,
t.size - c,
function (t) {
var l;
var c;
var u;
var p = 0;
vaMr h = [];
var f = a(t.length, t);
for (var r = 0; r < d; r++) {
(l = new s())._worker = i;
if (f.view.getUint32(p) != 1347092738) {
o(n);
return;
}
x(l, f, p + 6, true, o);
l.commentLength = f.view.getUint16(p + 32, true);
l.directory = (16 & f.view.getUint8(p + 38)) == 16;
M l.offset = f.view.getUint32(p + 42, true);
c = y(
f.array.subarray(p + 46, p + 46 + l.filenameLength)
);
l.filename = (2048 & l.bitFlag) == 2048 ? v(c) : w(c);
if (
!l.directory &&
l.filename.charAt(l.filename.length - 1) == '/'
) {
l.directory = true;
M}
u = y(
f.array.subarray(
p + 46 + l.filenameLength + l.extraFieldLength,
p +
46 +
l.filenameLength +
l.extraFieldLength +
l.commentLength
)
);
l.comment = (2048 & l.bitFlag) == 2048 ? v(u) : w(u);
M h.push(l);
p +=
46 +
l.filenameLength +
l.extraFieldLength +
l.commentLength;
}
e(h);
},
function () {
o(r);
}
);
}
});
},
close: function (e) {
if (this._worker) {
M this._worker.terminate();
this._worker = null;
}
if (e) {
e();
}
},
_worker: null,
};
if (e.zip.useWebWorkers) {
_(
'inflater',
function (e) {
c._worker = e;
i(c);
},
function (e) {
o(e);
}
);
} else {
i(c);
}
}
M function k(e) {
return unescape(encodeURIComponent(e));
}
function S(e) {
var n = [];
for (var t = 0; t < e.length; t++) {
n.push(e.charCodeAt(t));
}
return n;
}
function C(t, n, r, i) {
function d(e) {
r(e || 'Error while writing zip file.');
}
function u(e) {
r(e || 'Error while reading file data.');
}
var o = {};
var l = [];
M var s = 0;
var c = 0;
var p = {
add: function (n, p, h, f, w) {
function C(e, n) {
var r = a(16);
s += e || 0;
r.view.setUint32(0, 1347094280);
if (n !== void 0) {
v.view.setUint32(10, n, true);
r.view.setUint32(4, n, true);
}
if (p) {
r.view.setUint32(8, e, true);
v.view.setUint32(14, e, true);
M r.view.setUint32(12, p.size, true);
v.view.setUint32(18, p.size, true);
}
t.writeUint8Array(
r.array,
function () {
s += 16;
h();
},
d
);
}
function E() {
w = w || {};
n = n.trim();
if (w.directory && n.charAt(n.length - 1) != '/') {
n +M= '/';
}
if (o.hasOwnProperty(n)) {
r('File already exists.');
} else {
y = S(k(n));
l.push(n);
(function (e) {
var r;
x = w.lastModDate || new Date();
v = a(26);
o[n] = {
headerArray: v.array,
directory: w.directory,
filename: y,
oMffset: s,
comment: S(k(w.comment || '')),
};
v.view.setUint32(0, 335546376);
if (w.version) {
v.view.setUint8(0, w.version);
}
if (!i && w.level !== 0 && !w.directory) {
v.view.setUint16(4, 2048);
}
v.view.setUint16(
6,
(((x.getHours() << 6) | x.getMinutes()) << 5) |
M (x.getSeconds() / 2),
true
);
v.view.setUint16(
8,
((((x.getFullYear() - 1980) << 4) | (x.getMonth() + 1)) <<
5) |
x.getDate(),
true
);
v.view.setUint16(22, y.length, true);
(r = a(30 + y.length)).view.setUint32(0, 1347093252);
r.array.set(v.Marray, 4);
r.array.set(y, 30);
s += r.array.length;
t.writeUint8Array(r.array, e, d);
})(function () {
if (p) {
if (i || w.level === 0) {
b(A, c++, p, t, 0, p.size, true, C, f, u, d);
} else {
(function (t, n, r, i, o, a, l, s, c) {
if (e.zip.useWebWorkers) {
g(
M t,
{
sn: n,
options: { level: o },
codecClass: 'Deflater',
crcType: 'input',
},
r,
i,
0,
r.size,
l,
a,
s,M
c
);
} else {
m(
new e.zip.Deflater(),
r,
i,
0,
r.size,
'input',
l,
a,
s,
c
);
M }
})(A, c++, p, t, w.level, C, f, u, d);
}
} else {
C();
}
});
}
}
var v;
var y;
var x;
var A = this._worker;
if (p) {
p.init(E, u);
} else {
E();
}
},
close: function (e) {
M if (this._worker) {
this._worker.terminate();
this._worker = null;
}
var i;
var c = 0;
var u = 0;
for (var r = 0; r < l.length; r++) {
c += 46 + (i = o[l[r]]).filename.length + i.comment.length;
}
var n = a(c + 22);
for (r = 0; r < l.length; r++) {
i = o[l[r]];
n.view.setUint32(u, 1347092738);
n.view.setUinMt16(u + 4, 5120);
n.array.set(i.headerArray, u + 6);
n.view.setUint16(u + 32, i.comment.length, true);
if (i.directory) {
n.view.setUint8(u + 38, 16);
}
n.view.setUint32(u + 42, i.offset, true);
n.array.set(i.filename, u + 46);
n.array.set(i.comment, u + 46 + i.filename.length);
u += 46 + i.filename.length + i.comment.length;
}
n.view.setUint32M(u, 1347093766);
n.view.setUint16(u + 8, l.length, true);
n.view.setUint16(u + 10, l.length, true);
n.view.setUint32(u + 12, c, true);
n.view.setUint32(u + 16, s, true);
t.writeUint8Array(
n.array,
function () {
t.getData(e);
},
d
);
},
_worker: null,
};
if (e.zip.useWebWorkers) {
_(
M 'deflater',
function (e) {
p._worker = e;
n(p);
},
function (e) {
r(e);
}
);
} else {
n(p);
}
}
function _(t, n, r) {
function s(e) {
l.terminate();
r(e);
}
if (
e.zip.workerScripts === null ||
e.zip.workerScriptsPath === null
) {
var i;
var oM;
var a;
if (e.zip.workerScripts) {
i = e.zip.workerScripts[t];
if (!Array.isArray(i)) {
r(new Error('zip.workerScripts.' + t + ' is not an array!'));
return;
}
o = i;
a = document.createElement('a');
i = o.map(function (e) {
a.href = e;
return a.href;
});
} else {
(i = E[t].slice(0))[0] = (e.zip.workerScriMptsPath || '') + i[0];
}
var l = new Worker(i[0]);
l.codecTime = l.crcTime = 0;
l.postMessage({ type: 'importScripts', scripts: i.slice(1) });
l.addEventListener('message', function e(t) {
var i = t.data;
if (i.error) {
l.terminate();
r(i.error);
return;
}
if (i.type === 'importScripts') {
l.removeEventListener('message', e);
M l.removeEventListener('error', s);
n(l);
}
});
l.addEventListener('error', s);
} else {
r(
new Error(
'Either zip.workerScripts or zip.workerScriptsPath may be set, not both.'
)
);
}
}
function I(e) {
console.error(e);
}
var t;
var n = 'File format is not recognized.';
var r = 'Error while reading zip file.';
M try {
t = new Blob([new DataView(new ArrayBuffer(0))]).size === 0;
} catch (e) {}
i.prototype.append = function (e) {
var t = 0 | this.crc;
var n = this.table;
var r = 0;
for (var i = 0 | e.length; r < i; r++) {
t = (t >>> 8) ^ n[255 & (t ^ e[r])];
}
this.crc = t;
};
i.prototype.get = function () {
return ~this.crc;
};
i.prototype.table = (function () {
var t;
M var n;
var r = [];
for (var e = 0; e < 256; e++) {
n = e;
for (t = 0; t < 8; t++) {
if (1 & n) {
n = (n >>> 1) ^ 3988292384;
} else {
n >>>= 1;
}
}
r[e] = n;
}
return r;
})();
o.prototype.append = function (e, t) {
return e;
};
o.prototype.flush = function () {};
s.prototype = new l();
s.protoMtype.constructor = s;
c.prototype = new l();
c.prototype.constructor = c;
d.prototype = new l();
d.prototype.constructor = d;
u.prototype.getData = function (e) {
e(this.data);
};
p.prototype = new u();
p.prototype.constructor = p;
h.prototype = new u();
h.prototype.constructor = h;
f.prototype = new u();
f.prototype.constructor = f;
var E = {
deflater: ['z-worker.js', 'deflate.js'],
M inflater: ['z-worker.js', 'inflate.js'],
};
e.zip = {
Reader: l,
Writer: u,
BlobReader: d,
Data64URIReader: c,
TextReader: s,
BlobWriter: f,
Data64URIWriter: h,
TextWriter: p,
createReader: function (e, t, n) {
n = n || I;
e.init(function () {
A(e, t, n);
}, n);
},
createWriter: function (e, t, n, r) {
n = n || I;
r =M !!r;
e.init(function () {
C(e, t, n, r);
}, n);
},
useWebWorkers: true,
workerScriptsPath: null,
workerScripts: null,
};
})(o);
(function (e) {
function s() {
function d(e, t, i, o, a, l, d, u, p, h, f) {
var g;
var m;
var y;
var k;
var D;
var S = 0;
var v = i;
do {
n[e[t + S]]++;
M S++;
v--;
} while (v !== 0);
if (n[0] == i) {
d[0] = -1;
u[0] = 0;
return 0;
}
var A = u[0];
for (y = 1; y <= 15 && n[y] === 0; y++) {}
var x = y;
if (A < y) {
A = y;
}
for (v = 15; v !== 0 && n[v] === 0; v--) {}
var b = v;
if (A > v) {
A = v;
}
u[0] = A;
for (var MI = 1 << y; y < v; y++, I <<= 1) {
if ((I -= n[y]) < 0) {
return -3;
}
}
if ((I -= n[v]) < 0) {
return -3;
}
n[v] += I;
c[1] = y = 0;
S = 1;
for (var _ = 2; --v != 0; ) {
c[_] = y += n[S];
_++;
S++;
}
v = 0;
S = 0;
do {
if ((y = e[t + S]) !== 0) {
f[c[y]++] M= v;
}
S++;
} while (++v < i);
i = c[b];
c[0] = v = 0;
S = 0;
var w = -1;
var E = -A;
s[0] = 0;
var C = 0;
for (D = 0; x <= b; x++) {
for (g = n[x]; g-- != 0; ) {
while (x > E + A) {
w++;
D = (D = b - (E += A)) > A ? A : D;
if ((m = 1 << (y = x - E)) > g + 1) {
m -= g + 1;
M _ = x;
if (y < D) {
while (++y < D && !((m <<= 1) <= n[++_])) {
m -= n[_];
}
}
}
D = 1 << y;
if (h[0] + D > 1440) {
return -3;
}
s[w] = C = h[0];
h[0] += D;
if (w === 0) {
d[0] = C;
} else {
c[wM] = v;
r[0] = y;
r[1] = A;
y = v >>> (E - A);
r[2] = C - s[w - 1] - y;
p.set(r, 3 * (s[w - 1] + y));
}
}
r[1] = x - E;
if (S >= i) {
r[0] = 192;
} else if (f[S] < o) {
r[0] = f[S] < 256 ? 0 : 96;
r[2] = f[S++];
} else {
r[0] = l[f[S] - o] + 16 + 64;
M r[2] = a[f[S++] - o];
}
m = 1 << (x - E);
for (y = v >>> E; y < D; y += m) {
p.set(r, 3 * (C + y));
}
for (y = 1 << (x - 1); (v & y) != 0; y >>>= 1) {
v ^= y;
}
v ^= y;
for (k = (1 << E) - 1; (v & k) != c[w]; ) {
w--;
k = (1 << (E -= A)) - 1;
}
}
}
M if (I !== 0 && b != 1) {
return -5;
} else {
return 0;
}
}
function u(i) {
if (!e) {
e = [];
t = [];
n = new Int32Array(16);
r = [];
s = new Int32Array(15);
c = new Int32Array(16);
}
if (t.length < i) {
t = [];
}
for (var o = 0; o < i; o++) {
t[o] = 0;
}
M for (o = 0; o < 16; o++) {
n[o] = 0;
}
for (o = 0; o < 3; o++) {
r[o] = 0;
}
s.set(n.subarray(0, 15), 0);
c.set(n.subarray(0, 16), 0);
}
var e;
var t;
var n;
var r;
var s;
var c;
this.inflate_trees_bits = function (n, r, i, o, a) {
var l;
u(19);
e[0] = 0;
if ((l = d(n, 0, 19, 19, null, null, i, r, oM, e, t)) == -3) {
a.msg = 'oversubscribed dynamic bit lengths tree';
} else if (l == -5 || r[0] === 0) {
a.msg = 'incomplete dynamic bit lengths tree';
l = -3;
}
return l;
};
this.inflate_trees_dynamic = function (n, r, s, c, p, h, f, g, m) {
var b;
u(288);
e[0] = 0;
if ((b = d(s, 0, n, 257, i, o, h, c, g, e, t)) != 0 || c[0] === 0) {
if (b == -3) {
M m.msg = 'oversubscribed literal/length tree';
} else if (b != -4) {
m.msg = 'incomplete literal/length tree';
b = -3;
}
return b;
} else {
u(288);
if (
(b = d(s, n, r, 0, a, l, f, p, g, e, t)) != 0 ||
(p[0] === 0 && n > 257)
) {
if (b == -3) {
m.msg = 'oversubscribed distance tree';
} else if (b == -5M) {
m.msg = 'incomplete distance tree';
b = -3;
} else if (b != -4) {
m.msg = 'empty distance tree with lengths';
b = -3;
}
return b;
} else {
return 0;
}
}
};
}
function c() {
function g(e, n, r, i, o, a, l, s) {
var c;
var d;
var u;
var p;
var b;M
var x;
var A;
var k;
var S;
var g = s.next_in_index;
var m = s.avail_in;
var h = l.bitb;
var f = l.bitk;
var w = (b = l.write) < l.read ? l.read - b - 1 : l.end - b;
var v = t[e];
var y = t[n];
do {
while (f < 20) {
m--;
h |= (255 & s.read_byte(g++)) << f;
f += 8;
}
if ((p = (d = r)[(MS = 3 * ((u = i) + (c = h & v)))]) === 0) {
h >>= d[S + 1];
f -= d[S + 1];
l.window[b++] = d[S + 2];
w--;
}
} while (w >= 258 && m >= 10);
m += x = f >> 3 < (x = s.avail_in - m) ? f >> 3 : x;
g -= x;
f -= x << 3;
l.bitb = h;
l.bitk = f;
s.avail_in = m;
s.total_in += g - s.next_in_index;
s.next_in_index = g;
l.write = b;
M return 0;
}
var e;
var n;
var r;
var i;
var o = 0;
var a = 0;
var l = 0;
var s = 0;
var c = 0;
var d = 0;
var u = 0;
var p = 0;
var h = 0;
var f = 0;
this.init = function (t, o, a, l, s, c) {
e = 0;
u = t;
p = o;
r = a;
h = l;
i = s;
f = c;
n = null;
M };
this.proc = function (m, b, w) {
var v;
var y;
var x;
var A;
var k;
var S;
var C;
var E = 0;
var _ = 0;
var I = 0;
I = b.next_in_index;
A = b.avail_in;
E = m.bitb;
_ = m.bitk;
for (S = (k = m.write) < m.read ? m.read - k - 1 : m.end - k; ; ) {
switch (e) {
case 0:
if (SM >= 258 && A >= 10) {
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
w = g(u, p, r, h, i, f, m, b);
I = b.next_in_index;
A = b.avail_in;
E = m.bitb;
_ = m.bitk;
S = (k = m.write) < m.read ? m.read - k - 1 : m.end - k;
M if (w != 0) {
e = w == 1 ? 7 : 9;
break;
}
}
l = u;
n = r;
a = h;
e = 1;
case 1:
for (v = l; _ < v; ) {
if (A === 0) {
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
M b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
}
w = 0;
A--;
E |= (255 & b.read_byte(I++)) << _;
_ += 8;
}
E >>>= n[(y = 3 * (a + (E & t[v]))) + 1];
_ -= n[y + 1];
if ((x = n[y]) === 0) {
s = n[y + 2];
e = 6;
break;M
}
if ((16 & x) != 0) {
c = 15 & x;
o = n[y + 2];
e = 2;
break;
}
if ((64 & x) == 0) {
l = x;
a = y / 3 + n[y + 2];
break;
}
if ((32 & x) != 0) {
e = 7;
break;
}
e = 9;
b.msg = 'Minvalid literal/length code';
w = -3;
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
case 2:
for (v = c; _ < v; ) {
if (A === 0) {
m.bitb = E;
m.bitk = _;
b.avail_iMn = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
}
w = 0;
A--;
E |= (255 & b.read_byte(I++)) << _;
_ += 8;
}
o += E & t[v];
E >>= v;
_ -= v;
l = p;
n = i;
M a = f;
e = 3;
case 3:
for (v = l; _ < v; ) {
if (A === 0) {
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
}
w = 0;
A--;
M E |= (255 & b.read_byte(I++)) << _;
_ += 8;
}
E >>= n[(y = 3 * (a + (E & t[v]))) + 1];
_ -= n[y + 1];
if ((16 & (x = n[y])) != 0) {
c = 15 & x;
d = n[y + 2];
e = 4;
break;
}
if ((64 & x) == 0) {
l = x;
a = y / 3 + n[y + 2];
break;
M }
e = 9;
b.msg = 'invalid distance code';
w = -3;
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
case 4:
for (v = c; _ < v; ) {
if (A === 0) {
m.bitb = E;
M m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
}
w = 0;
A--;
E |= (255 & b.read_byte(I++)) << _;
_ += 8;
}
d += E & t[v];
E >>= v;
_ -= v;
M e = 5;
case 5:
for (C = k - d; C < 0; ) {
C += m.end;
}
while (o !== 0) {
if (S === 0) {
if (k == m.end && m.read !== 0) {
S = (k = 0) < m.read ? m.read - k - 1 : m.end - k;
}
if (S === 0) {
m.write = k;
w = m.inflate_flush(b, w);
S = (k = m.Mwrite) < m.read ? m.read - k - 1 : m.end - k;
if (k == m.end && m.read !== 0) {
S = (k = 0) < m.read ? m.read - k - 1 : m.end - k;
}
if (S === 0) {
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
M return m.inflate_flush(b, w);
}
}
}
m.window[k++] = m.window[C++];
S--;
if (C == m.end) {
C = 0;
}
o--;
}
e = 0;
break;
case 6:
if (S === 0) {
if (k == m.end && m.read !== 0) {
S = (k =M 0) < m.read ? m.read - k - 1 : m.end - k;
}
if (S === 0) {
m.write = k;
w = m.inflate_flush(b, w);
S = (k = m.write) < m.read ? m.read - k - 1 : m.end - k;
if (k == m.end && m.read !== 0) {
S = (k = 0) < m.read ? m.read - k - 1 : m.end - k;
}
if (S === 0) {
m.bitb = E;
m.bitMk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
}
}
}
w = 0;
m.window[k++] = s;
S--;
e = 0;
break;
case 7:
if (_ > 7) {
_ M-= 8;
A++;
I--;
}
m.write = k;
w = m.inflate_flush(b, w);
S = (k = m.write) < m.read ? m.read - k - 1 : m.end - k;
if (m.read != m.write) {
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
rMeturn m.inflate_flush(b, w);
}
e = 8;
case 8:
w = 1;
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
case 9:
w = -3;
m.bitb = E;
m.bitk = _;
b.avMail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
default:
w = -2;
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
}
M }
};
this.free = function () {};
}
function u(e, n) {
var r;
var i = this;
var o = 0;
var a = 0;
var l = 0;
var u = 0;
var p = [0];
var h = [0];
var f = new c();
var g = 0;
var m = new Int32Array(4320);
var b = new s();
i.bitk = 0;
i.bitb = 0;
i.window = new Uint8Array(n);
i.end = n;
i.read = 0;
Mi.write = 0;
i.reset = function (e, t) {
if (t) {
t[0] = 0;
}
if (o == 6) {
f.free(e);
}
o = 0;
i.bitk = 0;
i.bitb = 0;
i.read = i.write = 0;
};
i.reset(e, null);
i.inflate_flush = function (e, t) {
var n;
var o;
var r = e.next_out_index;
if (
(n = ((o = i.read) <= i.write ? i.write : i.end) -M o) >
e.avail_out
) {
n = e.avail_out;
}
if (n !== 0 && t == -5) {
t = 0;
}
e.avail_out -= n;
e.total_out += n;
e.next_out.set(i.window.subarray(o, o + n), r);
r += n;
if ((o += n) == i.end) {
o = 0;
if (i.write == i.end) {
i.write = 0;
}
if ((n = i.write - o) > e.avail_out) {
n = Me.avail_out;
}
if (n !== 0 && t == -5) {
t = 0;
}
e.avail_out -= n;
e.total_out += n;
e.next_out.set(i.window.subarray(o, o + n), r);
r += n;
o += n;
}
e.next_out_index = r;
i.read = o;
return t;
};
i.proc = function (e, n) {
var c;
var w;
var v;
var y;
var x;
M var A;
var k;
var S;
y = e.next_in_index;
x = e.avail_in;
w = i.bitb;
v = i.bitk;
for (k = (A = i.write) < i.read ? i.read - A - 1 : i.end - A; ; ) {
switch (o) {
case 0:
while (v < 3) {
if (x === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_iMndex;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
n = 0;
x--;
w |= (255 & e.read_byte(y++)) << v;
v += 8;
}
switch (((g = 1 & (c = 7 & w)), c >>> 1)) {
case 0:
w >>>= 3;
w >>>= c = 7 & (v -= 3);
v -= c;
M o = 1;
break;
case 1:
var C = [];
var E = [];
var _ = [[]];
var I = [[]];
s.inflate_trees_fixed(C, E, _, I);
f.init(C[0], E[0], _[0], 0, I[0], 0);
w >>>= 3;
v -= 3;
o = 6;
break;
case 2:
w >>>= 3;
M v -= 3;
o = 3;
break;
case 3:
w >>>= 3;
v -= 3;
o = 9;
e.msg = 'invalid block type';
n = -3;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.writeM = A;
return i.inflate_flush(e, n);
}
break;
case 1:
while (v < 32) {
if (x === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
M n = 0;
x--;
w |= (255 & e.read_byte(y++)) << v;
v += 8;
}
if (((~w >>> 16) & 65535) != (65535 & w)) {
o = 9;
e.msg = 'invalid stored block lengths';
n = -3;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;M
i.write = A;
return i.inflate_flush(e, n);
}
a = 65535 & w;
w = v = 0;
o = a !== 0 ? 2 : g !== 0 ? 7 : 0;
break;
case 2:
if (x === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.wMrite = A;
return i.inflate_flush(e, n);
}
if (k === 0) {
if (A == i.end && i.read !== 0) {
k = (A = 0) < i.read ? i.read - A - 1 : i.end - A;
}
if (k === 0) {
i.write = A;
n = i.inflate_flush(e, n);
k = (A = i.write) < i.read ? i.read - A - 1 : i.end - A;
if (A == i.end && i.read !== 0) {
M k = (A = 0) < i.read ? i.read - A - 1 : i.end - A;
}
if (k === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
}
}
M n = 0;
if ((c = a) > x) {
c = x;
}
if (c > k) {
c = k;
}
i.window.set(e.read_buf(y, c), A);
y += c;
x -= c;
A += c;
k -= c;
if ((a -= c) != 0) {
break;
}
o = g !== 0 ? 7 : 0;
break;
case 3:
M while (v < 14) {
if (x === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
n = 0;
x--;
w |= (255 & e.read_byte(y++)) << v;
v += 8;
M }
l = c = 16383 & w;
if ((31 & c) > 29 || ((c >> 5) & 31) > 29) {
o = 9;
e.msg = 'too many length or distance symbols';
n = -3;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
M }
c = 258 + (31 & c) + ((c >> 5) & 31);
if (!r || r.length < c) {
r = [];
} else {
for (S = 0; S < c; S++) {
r[S] = 0;
}
}
w >>>= 14;
v -= 14;
u = 0;
o = 4;
case 4:
while (u < 4 + (l >>> 10)) {
while (v < 3) {
if (xM === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
n = 0;
x--;
w |= (255 & e.read_byte(y++)) << v;
v += 8;
}
M r[d[u++]] = 7 & w;
w >>>= 3;
v -= 3;
}
while (u < 19) {
r[d[u++]] = 0;
}
p[0] = 7;
if ((c = b.inflate_trees_bits(r, p, h, m, e)) != 0) {
if ((n = c) == -3) {
r = null;
o = 9;
}
i.bitb = w;
i.bitk = v;
e.avail_in = x;
M e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
u = 0;
o = 5;
case 5:
while (!(u >= 258 + (31 & (c = l)) + ((c >> 5) & 31))) {
var D;
var B;
for (c = p[0]; v < c; ) {
if (x === 0) {
i.bitb = w;
M i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
n = 0;
x--;
w |= (255 & e.read_byte(y++)) << v;
v += 8;
}
c = m[3 * (h[0] + (w & t[c])) + 1];
M if ((B = m[3 * (h[0] + (w & t[c])) + 2]) < 16) {
w >>>= c;
v -= c;
r[u++] = B;
} else {
S = B == 18 ? 7 : B - 14;
for (D = B == 18 ? 11 : 3; v < c + S; ) {
if (x === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
M e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
n = 0;
x--;
w |= (255 & e.read_byte(y++)) << v;
v += 8;
}
v -= c;
D += (w >>>= c) & t[S];
w >>>= S;
v -= S;
if (
M (S = u) + D > 258 + (31 & (c = l)) + ((c >> 5) & 31) ||
(B == 16 && S < 1)
) {
r = null;
o = 9;
e.msg = 'invalid bit length repeat';
n = -3;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
M i.write = A;
return i.inflate_flush(e, n);
}
B = B == 16 ? r[S - 1] : 0;
do {
r[S++] = B;
} while (--D != 0);
u = S;
}
}
h[0] = -1;
var M = [];
var T = [];
var R = [];
var G = [];
M[0] = 9;
M T[0] = 6;
c = l;
if (
(c = b.inflate_trees_dynamic(
257 + (31 & c),
1 + ((c >> 5) & 31),
r,
M,
T,
R,
G,
m,
e
)) != 0
) {
if (c == -3) {
r = null;
o = 9;
M }
n = c;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
f.init(M[0], T[0], m, R[0], m, G[0]);
o = 6;
case 6:
i.bitb = w;
i.bitk = v;
M e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
if ((n = f.proc(i, e, n)) != 1) {
return i.inflate_flush(e, n);
}
n = 0;
f.free(e);
y = e.next_in_index;
x = e.avail_in;
w = i.bitb;
v = i.bitk;
k = (A = i.write) < i.read ? i.read - A - 1 : Mi.end - A;
if (g === 0) {
o = 0;
break;
}
o = 7;
case 7:
i.write = A;
n = i.inflate_flush(e, n);
k = (A = i.write) < i.read ? i.read - A - 1 : i.end - A;
if (i.read != i.write) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
M e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
o = 8;
case 8:
n = 1;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
case 9:
M n = -3;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
default:
n = -2;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
M i.write = A;
return i.inflate_flush(e, n);
}
}
};
i.free = function (e) {
i.reset(e, null);
i.window = null;
m = null;
};
i.set_dictionary = function (e, t, n) {
i.window.set(e.subarray(t, t + n), 0);
i.read = i.write = n;
};
i.sync_point = function () {
if (o == 1) {
return 1;
} else {
return M0;
}
};
}
function h() {
function t(e) {
if (e && e.istate) {
e.total_in = e.total_out = 0;
e.msg = null;
e.istate.mode = 7;
e.istate.blocks.reset(e, null);
return 0;
} else {
return -2;
}
}
var e = this;
e.mode = 0;
e.method = 0;
e.was = [0];
e.need = 0;
e.marker = 0;
e.Mwbits = 0;
e.inflateEnd = function (t) {
if (e.blocks) {
e.blocks.free(t);
}
e.blocks = null;
return 0;
};
e.inflateInit = function (n, r) {
n.msg = null;
e.blocks = null;
if (r < 8 || r > 15) {
e.inflateEnd(n);
return -2;
} else {
e.wbits = r;
n.istate.blocks = new u(n, 1 << r);
t(n);
return 0;M
}
};
e.inflate = function (e, t) {
var n;
var r;
if (!e || !e.istate || !e.next_in) {
return -2;
}
t = t == 4 ? -5 : 0;
for (n = -5; ; ) {
switch (e.istate.mode) {
case 0:
if (e.avail_in === 0) {
return n;
}
n = t;
e.avail_in--;
e.total_in++;
Mif (
(15 & (e.istate.method = e.read_byte(e.next_in_index++))) !=
8
) {
e.istate.mode = 13;
e.msg = 'unknown compression method';
e.istate.marker = 5;
break;
}
if (8 + (e.istate.method >> 4) > e.istate.wbits) {
e.istate.mode = 13;
e.msg = 'invalid window size';
e.istate.marker = 5;
M break;
}
e.istate.mode = 1;
case 1:
if (e.avail_in === 0) {
return n;
}
n = t;
e.avail_in--;
e.total_in++;
r = 255 & e.read_byte(e.next_in_index++);
if (((e.istate.method << 8) + r) % 31 != 0) {
e.istate.mode = 13;
e.msg = 'incorrect header check';
M e.istate.marker = 5;
break;
}
if ((32 & r) == 0) {
e.istate.mode = 7;
break;
}
e.istate.mode = 2;
case 2:
if (e.avail_in === 0) {
return n;
}
n = t;
e.avail_in--;
e.total_in++;
e.istate.need =
((255 & e.read_byte(e.next_Min_index++)) << 24) & 4278190080;
e.istate.mode = 3;
case 3:
if (e.avail_in === 0) {
return n;
}
n = t;
e.avail_in--;
e.total_in++;
e.istate.need +=
((255 & e.read_byte(e.next_in_index++)) << 16) & 16711680;
e.istate.mode = 4;
case 4:
if (e.avail_in === 0) {
return Mn;
}
n = t;
e.avail_in--;
e.total_in++;
e.istate.need +=
((255 & e.read_byte(e.next_in_index++)) << 8) & 65280;
e.istate.mode = 5;
case 5:
if (e.avail_in === 0) {
return n;
} else {
n = t;
e.avail_in--;
e.total_in++;
e.istate.need += 255 & Me.read_byte(e.next_in_index++);
e.istate.mode = 6;
return 2;
}
case 6:
e.istate.mode = 13;
e.msg = 'need dictionary';
e.istate.marker = 0;
return -2;
case 7:
if ((n = e.istate.blocks.proc(e, n)) == -3) {
e.istate.mode = 13;
e.istate.marker = 0;
break;
}
M if (n == 0) {
n = t;
}
if (n != 1) {
return n;
}
n = t;
e.istate.blocks.reset(e, e.istate.was);
e.istate.mode = 12;
case 12:
return 1;
case 13:
return -3;
default:
return -2;
}
}
};
e.inflateSetDictionary = functioMn (e, t, n) {
var r = 0;
var i = n;
if (e && e.istate && e.istate.mode == 6) {
if (i >= 1 << e.istate.wbits) {
r = n - (i = (1 << e.istate.wbits) - 1);
}
e.istate.blocks.set_dictionary(t, r, i);
e.istate.mode = 7;
return 0;
} else {
return -2;
}
};
e.inflateSync = function (e) {
var n;
var o;
var a;
M if (!e || !e.istate) {
return -2;
}
if (e.istate.mode != 13) {
e.istate.mode = 13;
e.istate.marker = 0;
}
if ((n = e.avail_in) === 0) {
return -5;
}
var r = e.next_in_index;
for (var i = e.istate.marker; n !== 0 && i < 4; ) {
if (e.read_byte(r) == p[i]) {
i++;
} else {
i = e.read_byte(r) !== 0 ? 0 : 4 - i;
M }
r++;
n--;
}
e.total_in += r - e.next_in_index;
e.next_in_index = r;
e.avail_in = n;
e.istate.marker = i;
if (i == 4) {
o = e.total_in;
a = e.total_out;
t(e);
e.total_in = o;
e.total_out = a;
e.istate.mode = 7;
return 0;
} else {
return -3;
}
};
e.inflMateSyncPoint = function (e) {
if (e && e.istate && e.istate.blocks) {
return e.istate.blocks.sync_point();
} else {
return -2;
}
};
}
function f() {}
var t = [
0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383,
32767, 65535,
];
var n = [
96, 7, 256, 0, 8, 80, 0, 8, 16, 84, 8, 115, 82, 7, 31, 0, 8, 112, 0,
8, 48, 0, 9, 192, 80, 7, 10, 0, 8, 96, 0M, 8, 32, 0, 9, 160, 0, 8, 0,
0, 8, 128, 0, 8, 64, 0, 9, 224, 80, 7, 6, 0, 8, 88, 0, 8, 24, 0, 9,
144, 83, 7, 59, 0, 8, 120, 0, 8, 56, 0, 9, 208, 81, 7, 17, 0, 8, 104,
0, 8, 40, 0, 9, 176, 0, 8, 8, 0, 8, 136, 0, 8, 72, 0, 9, 240, 80, 7,
4, 0, 8, 84, 0, 8, 20, 85, 8, 227, 83, 7, 43, 0, 8, 116, 0, 8, 52, 0,
9, 200, 81, 7, 13, 0, 8, 100, 0, 8, 36, 0, 9, 168, 0, 8, 4, 0, 8, 132,
0, 8, 68, 0, 9, 232, 80, 7, 8, 0, 8, 92, 0, 8, 28, 0, 9, 152, 84, 7,
83, M0, 8, 124, 0, 8, 60, 0, 9, 216, 82, 7, 23, 0, 8, 108, 0, 8, 44, 0,
9, 184, 0, 8, 12, 0, 8, 140, 0, 8, 76, 0, 9, 248, 80, 7, 3, 0, 8, 82,
0, 8, 18, 85, 8, 163, 83, 7, 35, 0, 8, 114, 0, 8, 50, 0, 9, 196, 81,
7, 11, 0, 8, 98, 0, 8, 34, 0, 9, 164, 0, 8, 2, 0, 8, 130, 0, 8, 66, 0,
9, 228, 80, 7, 7, 0, 8, 90, 0, 8, 26, 0, 9, 148, 84, 7, 67, 0, 8, 122,
0, 8, 58, 0, 9, 212, 82, 7, 19, 0, 8, 106, 0, 8, 42, 0, 9, 180, 0, 8,
10, 0, 8, 138, 0, 8, 74, 0, 9, 244, 80, 7,M 5, 0, 8, 86, 0, 8, 22, 192,
8, 0, 83, 7, 51, 0, 8, 118, 0, 8, 54, 0, 9, 204, 81, 7, 15, 0, 8, 102,
0, 8, 38, 0, 9, 172, 0, 8, 6, 0, 8, 134, 0, 8, 70, 0, 9, 236, 80, 7,
9, 0, 8, 94, 0, 8, 30, 0, 9, 156, 84, 7, 99, 0, 8, 126, 0, 8, 62, 0,
9, 220, 82, 7, 27, 0, 8, 110, 0, 8, 46, 0, 9, 188, 0, 8, 14, 0, 8,
142, 0, 8, 78, 0, 9, 252, 96, 7, 256, 0, 8, 81, 0, 8, 17, 85, 8, 131,
82, 7, 31, 0, 8, 113, 0, 8, 49, 0, 9, 194, 80, 7, 10, 0, 8, 97, 0, 8,
33, 0M, 9, 162, 0, 8, 1, 0, 8, 129, 0, 8, 65, 0, 9, 226, 80, 7, 6, 0,
8, 89, 0, 8, 25, 0, 9, 146, 83, 7, 59, 0, 8, 121, 0, 8, 57, 0, 9, 210,
81, 7, 17, 0, 8, 105, 0, 8, 41, 0, 9, 178, 0, 8, 9, 0, 8, 137, 0, 8,
73, 0, 9, 242, 80, 7, 4, 0, 8, 85, 0, 8, 21, 80, 8, 258, 83, 7, 43, 0,
8, 117, 0, 8, 53, 0, 9, 202, 81, 7, 13, 0, 8, 101, 0, 8, 37, 0, 9,
170, 0, 8, 5, 0, 8, 133, 0, 8, 69, 0, 9, 234, 80, 7, 8, 0, 8, 93, 0,
8, 29, 0, 9, 154, 84, 7, 83, 0, 8, 125, 0, 8, 61,M 0, 9, 218, 82, 7,
23, 0, 8, 109, 0, 8, 45, 0, 9, 186, 0, 8, 13, 0, 8, 141, 0, 8, 77, 0,
9, 250, 80, 7, 3, 0, 8, 83, 0, 8, 19, 85, 8, 195, 83, 7, 35, 0, 8,
115, 0, 8, 51, 0, 9, 198, 81, 7, 11, 0, 8, 99, 0, 8, 35, 0, 9, 166, 0,
8, 3, 0, 8, 131, 0, 8, 67, 0, 9, 230, 80, 7, 7, 0, 8, 91, 0, 8, 27, 0,
9, 150, 84, 7, 67, 0, 8, 123, 0, 8, 59, 0, 9, 214, 82, 7, 19, 0, 8,
107, 0, 8, 43, 0, 9, 182, 0, 8, 11, 0, 8, 139, 0, 8, 75, 0, 9, 246,
80, 7, 5, 0, 8, M87, 0, 8, 23, 192, 8, 0, 83, 7, 51, 0, 8, 119, 0, 8,
55, 0, 9, 206, 81, 7, 15, 0, 8, 103, 0, 8, 39, 0, 9, 174, 0, 8, 7, 0,
8, 135, 0, 8, 71, 0, 9, 238, 80, 7, 9, 0, 8, 95, 0, 8, 31, 0, 9, 158,
84, 7, 99, 0, 8, 127, 0, 8, 63, 0, 9, 222, 82, 7, 27, 0, 8, 111, 0, 8,
47, 0, 9, 190, 0, 8, 15, 0, 8, 143, 0, 8, 79, 0, 9, 254, 96, 7, 256,
0, 8, 80, 0, 8, 16, 84, 8, 115, 82, 7, 31, 0, 8, 112, 0, 8, 48, 0, 9,
193, 80, 7, 10, 0, 8, 96, 0, 8, 32, 0, 9, 161, 0, 8, 0, 0M, 8, 128, 0,
8, 64, 0, 9, 225, 80, 7, 6, 0, 8, 88, 0, 8, 24, 0, 9, 145, 83, 7, 59,
0, 8, 120, 0, 8, 56, 0, 9, 209, 81, 7, 17, 0, 8, 104, 0, 8, 40, 0, 9,
177, 0, 8, 8, 0, 8, 136, 0, 8, 72, 0, 9, 241, 80, 7, 4, 0, 8, 84, 0,
8, 20, 85, 8, 227, 83, 7, 43, 0, 8, 116, 0, 8, 52, 0, 9, 201, 81, 7,
13, 0, 8, 100, 0, 8, 36, 0, 9, 169, 0, 8, 4, 0, 8, 132, 0, 8, 68, 0,
9, 233, 80, 7, 8, 0, 8, 92, 0, 8, 28, 0, 9, 153, 84, 7, 83, 0, 8, 124,
0, 8, 60, 0, 9, 217M, 82, 7, 23, 0, 8, 108, 0, 8, 44, 0, 9, 185, 0, 8,
12, 0, 8, 140, 0, 8, 76, 0, 9, 249, 80, 7, 3, 0, 8, 82, 0, 8, 18, 85,
8, 163, 83, 7, 35, 0, 8, 114, 0, 8, 50, 0, 9, 197, 81, 7, 11, 0, 8,
98, 0, 8, 34, 0, 9, 165, 0, 8, 2, 0, 8, 130, 0, 8, 66, 0, 9, 229, 80,
7, 7, 0, 8, 90, 0, 8, 26, 0, 9, 149, 84, 7, 67, 0, 8, 122, 0, 8, 58,
0, 9, 213, 82, 7, 19, 0, 8, 106, 0, 8, 42, 0, 9, 181, 0, 8, 10, 0, 8,
138, 0, 8, 74, 0, 9, 245, 80, 7, 5, 0, 8, 86, 0, 8, 22, 192, 8M, 0, 83,
7, 51, 0, 8, 118, 0, 8, 54, 0, 9, 205, 81, 7, 15, 0, 8, 102, 0, 8, 38,
0, 9, 173, 0, 8, 6, 0, 8, 134, 0, 8, 70, 0, 9, 237, 80, 7, 9, 0, 8,
94, 0, 8, 30, 0, 9, 157, 84, 7, 99, 0, 8, 126, 0, 8, 62, 0, 9, 221,
82, 7, 27, 0, 8, 110, 0, 8, 46, 0, 9, 189, 0, 8, 14, 0, 8, 142, 0, 8,
78, 0, 9, 253, 96, 7, 256, 0, 8, 81, 0, 8, 17, 85, 8, 131, 82, 7, 31,
0, 8, 113, 0, 8, 49, 0, 9, 195, 80, 7, 10, 0, 8, 97, 0, 8, 33, 0, 9,
163, 0, 8, 1, 0, 8, 129, M0, 8, 65, 0, 9, 227, 80, 7, 6, 0, 8, 89, 0,
8, 25, 0, 9, 147, 83, 7, 59, 0, 8, 121, 0, 8, 57, 0, 9, 211, 81, 7,
17, 0, 8, 105, 0, 8, 41, 0, 9, 179, 0, 8, 9, 0, 8, 137, 0, 8, 73, 0,
9, 243, 80, 7, 4, 0, 8, 85, 0, 8, 21, 80, 8, 258, 83, 7, 43, 0, 8,
117, 0, 8, 53, 0, 9, 203, 81, 7, 13, 0, 8, 101, 0, 8, 37, 0, 9, 171,
0, 8, 5, 0, 8, 133, 0, 8, 69, 0, 9, 235, 80, 7, 8, 0, 8, 93, 0, 8, 29,
0, 9, 155, 84, 7, 83, 0, 8, 125, 0, 8, 61, 0, 9, 219, 82, 7, 23, 0, 8,
M 109, 0, 8, 45, 0, 9, 187, 0, 8, 13, 0, 8, 141, 0, 8, 77, 0, 9, 251,
80, 7, 3, 0, 8, 83, 0, 8, 19, 85, 8, 195, 83, 7, 35, 0, 8, 115, 0, 8,
51, 0, 9, 199, 81, 7, 11, 0, 8, 99, 0, 8, 35, 0, 9, 167, 0, 8, 3, 0,
8, 131, 0, 8, 67, 0, 9, 231, 80, 7, 7, 0, 8, 91, 0, 8, 27, 0, 9, 151,
84, 7, 67, 0, 8, 123, 0, 8, 59, 0, 9, 215, 82, 7, 19, 0, 8, 107, 0, 8,
43, 0, 9, 183, 0, 8, 11, 0, 8, 139, 0, 8, 75, 0, 9, 247, 80, 7, 5, 0,
8, 87, 0, 8, 23, 192, 8, 0, 83, 7M, 51, 0, 8, 119, 0, 8, 55, 0, 9, 207,
81, 7, 15, 0, 8, 103, 0, 8, 39, 0, 9, 175, 0, 8, 7, 0, 8, 135, 0, 8,
71, 0, 9, 239, 80, 7, 9, 0, 8, 95, 0, 8, 31, 0, 9, 159, 84, 7, 99, 0,
8, 127, 0, 8, 63, 0, 9, 223, 82, 7, 27, 0, 8, 111, 0, 8, 47, 0, 9,
191, 0, 8, 15, 0, 8, 143, 0, 8, 79, 0, 9, 255,
];
var r = [
80, 5, 1, 87, 5, 257, 83, 5, 17, 91, 5, 4097, 81, 5, 5, 89, 5, 1025,
85, 5, 65, 93, 5, 16385, 80, 5, 3, 88, 5, 513, 84, 5, 33, 92, 5, 8193,
M 82, 5, 9, 90, 5, 2049, 86, 5, 129, 192, 5, 24577, 80, 5, 2, 87, 5,
385, 83, 5, 25, 91, 5, 6145, 81, 5, 7, 89, 5, 1537, 85, 5, 97, 93, 5,
24577, 80, 5, 4, 88, 5, 769, 84, 5, 49, 92, 5, 12289, 82, 5, 13, 90,
5, 3073, 86, 5, 193, 192, 5, 24577,
];
var i = [
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,
];
var o = [
0, 0, 0, 0, 0, 0, 0, 0, 1, 1,M 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4,
4, 5, 5, 5, 5, 0, 112, 112,
];
var a = [
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,
];
var l = [
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,
];
s.inflate_trees_fixed = function (e, t, i, o) {
e[0] = 9;
M t[0] = 5;
i[0] = n;
o[0] = r;
return 0;
};
var d = [
16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15,
];
var p = [0, 0, 255, 255];
f.prototype = {
inflateInit: function (e) {
this.istate = new h();
if (!e) {
e = 15;
}
return this.istate.inflateInit(this, e);
},
inflate: function (e) {
if (this.istate) {
M return this.istate.inflate(this, e);
} else {
return -2;
}
},
inflateEnd: function () {
if (!this.istate) {
return -2;
}
var e = this.istate.inflateEnd(this);
this.istate = null;
return e;
},
inflateSync: function () {
if (this.istate) {
return this.istate.inflateSync(this);
} else {
return -2;
}
M },
inflateSetDictionary: function (e, t) {
if (this.istate) {
return this.istate.inflateSetDictionary(this, e, t);
} else {
return -2;
}
},
read_byte: function (e) {
return this.next_in.subarray(e, e + 1)[0];
},
read_buf: function (e, t) {
return this.next_in.subarray(e, e + t);
},
};
var g = e.zip || e;
g.Inflater = g._jzlib_Inflater = fuMnction () {
var e = new f();
var t = new Uint8Array(512);
var n = false;
e.inflateInit();
e.next_out = t;
this.append = function (r, i) {
var o;
var a;
var l = [];
var s = 0;
var c = 0;
var d = 0;
if (r.length !== 0) {
e.next_in_index = 0;
e.next_in = r;
e.avail_in = r.length;
do {
e.next_out_index = 0;M
e.avail_out = 512;
if (e.avail_in === 0 && !n) {
e.next_in_index = 0;
n = true;
}
o = e.inflate(0);
if (n && o === -5) {
if (e.avail_in !== 0) {
throw new Error('inflating: bad input');
}
} else if (o !== 0 && o !== 1) {
throw new Error('inflating: ' + e.msg);
}
if ((n || o === 1)M && e.avail_in === r.length) {
throw new Error('inflating: bad input');
}
if (e.next_out_index) {
if (e.next_out_index === 512) {
l.push(new Uint8Array(t));
} else {
l.push(new Uint8Array(t.subarray(0, e.next_out_index)));
}
}
d += e.next_out_index;
if (i && e.next_in_index > 0 && e.next_in_index != s) {
i(e.Mnext_in_index);
s = e.next_in_index;
}
} while (e.avail_in > 0 || e.avail_out === 0);
a = new Uint8Array(d);
l.forEach(function (e) {
a.set(e, c);
c += e.length;
});
return a;
}
};
this.flush = function () {
e.inflateEnd();
};
};
})(o);
var a = o.zip;
var l = {};
var s = null;
c.prototype = M{
getTopic: function () {
return this.topic;
},
onEvent: function (e) {},
};
var p = null;
a.useWebWorkers = false;
d(
new c('siteInit', function (e) {
p = e.errorHandler;
})
);
if (!Object.create) {
Object.create = function (e) {
function t() {}
t.prototype = e;
return new t();
};
}
if (
'ontouchstart' in window ||
navigator.maxTouchPoints > 0 ||
M navigator.msMaxTouchPoints > 0
) {
/android|blackberry|iemobile|ipad|iphone|ipod|opera mini|webos/i.test(
navigator.userAgent
);
}
if (/ipad|iphone|ipod/i.test(navigator.userAgent)) {
window.MSStream;
}
if (!String.prototype.endsWith) {
String.prototype.endsWith = function (e, t) {
if (t === void 0 || t > this.length) {
t = this.length;
}
return this.substring(t - e.length, t) === e;
};
M }
var f = h;
var g = null;
var m = 'http';
var b = window.location.hostname.toLowerCase();
if (!String.prototype.endsWith) {
String.prototype.endsWith = function (e, t) {
if (t === void 0 || t > this.length) {
t = this.length;
}
return this.substring(t - e.length, t) === e;
};
}
(function () {
switch (b) {
case atob('cmF6MHJlZC5naXRodWIuaW8'):
g = atob('Oi8vdHdpdGNoYXN5bHVtLmNvbS94MLw');
m += 's';
break;
case atob('bG9jYWxob3N0'):
g = atob('Oi8vbG9jYWxob3N0');
}
})();
var y = null;
var x = null;
d(
new c('siteInit', function (e) {
x = e.loadFromUrl;
y = e.errorHandler;
})
);
var k = null;
var S = null;
var C = null;
var E = 0;
var _ = Date.now();
var B = function (e) {
D();
k.innerHTML = e;
k.onclick = function () {M
I(-1);
};
k.classList.add('show');
k.classList.remove('hide');
_ = Date.now();
return ++E;
};
var M = I;
var T = function (e) {
I(-1);
C.innerHTML = e;
S.classList.add('show');
S.classList.remove('hide');
};
d(
new c('siteInit', function () {
var e = 'js7800__fullscreen-container';
var t = document.getElementById(e);
(k = document.createElement('div')).id = 'snackbarM';
k.classList.add('message');
t.appendChild(k);
(S = document.createElement('div')).id = 'errormsg';
S.classList.add('message');
S.onclick = D;
t.appendChild(S);
var n = document.createElement('span');
n.classList.add('closebtn');
n.onclick = D;
S.appendChild(n);
n.innerHTML = '×';
C = document.createElement('span');
S.appendChild(C);
})
);
d(
new c('siMteInit', function (e) {
(function (e) {
var t = e.romList;
var n = e.loadFromUrl;
var r = e.startEmulation;
var i = e.js7800;
var o = false;
R(
'select-remote-file',
'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LMnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZlcnNpb249IjEuMSIgIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4NCiAgIDxwYXRoIGZpbGw9IiNmZmZmZmYiIGQ9Ik0xNywxM0wxMiwxOEw3LDEzSDEwVjlIMTRWMTNNMTkuMzUsMTAuMDNDMTguNjcsNi41OSAxNS42NCw0IDEyLDRDOS4xMSw0IDYuNiw1LjY0IDUuMzUsOC4wM0MyLjM0LDguMzYgMCwxMC45IDAsMTRBNiw2IDAgMCwwIDYsMjBIMTlBNSw1IDAgMCwwIDI0LDE1QzI0LDEyLjM2IDIxLjk1LDEwLjIyIDE5LjM1LDEwLjAzWiIgLz4NCjwvc3ZnPg==',
'Select Remote File',
true,
M function () {
if (!o) {
o = true;
var e = i.ControlsBar.pauseButton;
var t = e.getValue();
if (!t) {
e.setValue(true);
e.onClick();
}
setTimeout(function () {
var r = prompt(
'Enter the URL of a remote Cartridge file or Cartridge list'
);
if (r) {
M var i = r.trim();
if (i.length > 0) {
n(i);
}
}
if (!t) {
e.setValue(false);
e.onClick();
}
o = false;
}, 200);
}
}
);
var a = R(
'select-local-file',
'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTMgiPz4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZlcnNpb249IjEuMSIgIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4NCiAgIDxwYXRoIGZpbGw9IiNmZmZmZmYiIGQ9Ik0xOSwyMEg0QzIuODksMjAgMiwxOS4xIDIsMThWNkMyLDQuODkgMi44OSw0IDQsNEgxMEwxMiw2SDE5QTIsMiAwIDAsMSAyMSw4SDIxTDQsOFYxOEw2LjE0LDEwSDIzLjIxTDIwLjkzLDE4LjVDMjAuNyMwxOS4zNyAxOS45MiwyMCAxOSwyMFoiIC8+DQo8L3N2Zz4=',
'Select Local File',
false,
null
).label;
var l = document.createElement('input');
a.className = 'controls-button__upload';
a.appendChild(l);
var s = function () {
l.value = null;
};
a.onclick = s;
l.onclick = s;
l.setAttribute('type', 'file');
l.setAttribute('accept', '.a78, .bin, .zip, .json'M);
l.addEventListener(
'change',
function () {
var e = this.files;
for (var n = 0; n < e.length; n++) {
var i = e[n];
if (!t.loadListFromFile(i)) {
r(i);
}
break;
}
},
false
);
})(e);
})
);
var G = null;
var L = null;
var Q = null;
d(
new c('siMteInit', function (e) {
function n(e) {
e.preventDefault();
}
G = e.loadFromUrl;
L = e.romList;
Q = e.startEmulation;
var t = document.body;
t.addEventListener('drop', z);
t.addEventListener('dragdrop', z);
t.addEventListener('dragenter', n);
t.addEventListener('dragover', n);
})
);
var F = {};
var N = 'fullscreen';
var U = null;
var K = null;
var Y = null;
M var O = null;
var j = null;
var P = null;
var H = null;
var W = false;
d(
new c('siteInit', function (e) {
U = e.js7800;
K = U.Keyboard;
Y = U.Video;
O = U.Region;
H = U.Cartridge;
P = e.HighScore;
j = U.Main;
(function () {
try {
localStorage.setItem('test', 'test');
localStorage.removeItem('test');
W = true;
console.log('Local sMtorage is available.');
} catch (e) {
console.log('Local storage is not available.');
}
})();
})
);
var X = f;
var $ = 2048;
var ee = null;
var te = null;
var ne = false;
var re = null;
var ie = null;
var oe = null;
var ae = 0;
var le = null;
var se = null;
var ce = null;
var de = true;
var ue = de;
var pe = true;
var he = true;
var fe = new Array($);
M d(
new c('siteInit', function (e) {
ke(e);
})
);
var Ge = h;
Le.prototype = {
createElement: function () {
this.el = this.doCreateElement();
var e = this.getClass();
if (e) {
this.el.className = e;
}
return this.el;
},
getClass: function () {
return null;
},
getElement: function () {
return this.el;
},
doCreateElement: function () {M
return null;
},
};
Qe.prototype = Object.create(Le.prototype);
Ge(Qe.prototype, {
getClass: function () {
return 'js7800__controls-button';
},
doCreateElement: function () {
var e = document.createElement('button');
var t = this;
e.onclick = function (e) {
t.onClick(e);
};
e.onmousedown = function (e) {
t.onDown(e);
};
e.onmouseup = function (e) {
M t.onUp(e);
};
var n = document.createTextNode(this.text);
e.appendChild(n);
if (this.title) {
e.setAttribute('title', this.title);
}
return e;
},
onClick: function (e) {},
onDown: function (e) {},
onUp: function (e) {},
});
ze.prototype = Object.create(Le.prototype);
Ge(ze.prototype, {
getClass: function () {
return 'js7800__controls-switch';
},
doCreateEMlement: function () {
var e = document.createElement('label');
e.setAttribute('title', this.title);
var t = document.createElement('input');
this.cb = t;
t.setAttribute('type', 'checkbox');
var n = this;
t.onclick = function (e) {
n.onClick(e);
};
e.appendChild(t);
var r = document.createElement('span');
r.className = this.getClass() + '-slider';
e.appendChild(r);
return e;
M },
setValue(e) {
this.cb.checked = e;
},
getValue() {
return this.cb.checked;
},
onClick: function (e) {},
});
var Fe = Le;
var Ne = Qe;
var Ue = ze;
var Ke = f;
var Ye = null;
Oe.prototype = Object.create(Ne.prototype);
Ke(Oe.prototype, {
getClass: function () {
return 'dialog-button';
},
});
je.prototype = Object.create(Ue.prototype);
Ke(je.prototype, {
M getClass: function () {
return 'dialog-switch';
},
});
Pe.prototype = Object.create(Fe.prototype);
Ke(Pe.prototype, {
select: null,
getClass: function () {
return 'dialog-select';
},
setValue: function (e) {
this.select.value = e;
},
getValue: function () {
return this.select.value;
},
setWidth: function (e) {
this.width = e;
if (this.div) {
this.div.Mstyle.width = this.width + 'em';
}
},
onChange: function () {},
doCreateElement: function () {
var e = this;
var t = document.createElement('div');
this.div = t;
if (this.width) {
this.setWidth(this.width);
}
var n = document.createElement('select');
n.onchange = function () {
e.onChange();
};
t.appendChild(n);
this.select = n;
var r = null;
M for (var i in this.opts) {
if (i.startsWith('OptGroup')) {
(r = document.createElement('optgroup')).setAttribute(
'label',
this.opts[i]
);
this.select.add(r);
} else {
var o = document.createElement('option');
o.text = i;
o.value = this.opts[i];
if (r == null) {
this.select.add(o);
} else {
r.appendChild(o);
M }
}
}
return t;
},
});
He.prototype = Object.create(Fe.prototype);
Ke(He.prototype, {
onShow: function () {},
onHide: function () {},
onOk: function () {},
onDefaults: function () {},
getClass: function () {
return 'modal';
},
doCreateElement: function () {
var e = document.createElement('div');
this.modalEl = e;
var t = document.createElement('div');
M this.contentEl = t;
t.className = 'modal-content';
e.appendChild(t);
var n = document.createElement('div');
this.headerEl = n;
n.className = 'modal-header';
n.appendChild(document.createTextNode(this.title));
t.appendChild(n);
var r = document.createElement('div');
this.bodyEl = r;
r.className = 'modal-body';
t.appendChild(r);
this.addBodyContent(r);
var i = document.createElement('dMiv');
i.style.clear = 'both';
t.appendChild(i);
var o = document.createElement('div');
this.footerEl = o;
o.className = 'modal-footer';
t.appendChild(o);
this.addFooterContent(o);
(i = document.createElement('div')).style.clear = 'both';
o.appendChild(i);
return e;
},
addFooterContent: function (e) {
var t = this;
var n = document.createElement('div');
n.style.flexGrow = M1;
if (this.isReadOnly) {
var r = new Oe('Close');
this.cancel = r;
e.appendChild(n);
e.appendChild(r.createElement());
} else {
var i = new Oe('OK');
this.ok = i;
r = new Oe('Cancel');
this.cancel = r;
var o = new Oe('Defaults', 'Reset to Defaults');
this.defaults = o;
i.onClick = function () {
t.onOk();
t.hide();
};
M o.onClick = function () {
t.onDefaults();
};
n.appendChild(o.createElement());
e.appendChild(n);
e.appendChild(i.createElement());
e.appendChild(r.createElement());
}
r.onClick = function () {
t.hide();
};
},
addBodyContent: function (e) {},
show: function () {
var e = Ye.ControlsBar.pauseButton;
this.pauseButton = e;
this.paused = e.getValue()M;
if (!this.paused) {
e.setValue(true);
e.onClick();
}
this.onShow();
window.addEventListener('resize', this.windowResizeFunc);
this.modalEl.style.display = 'block';
this.windowResizeFunc();
},
hide: function () {
window.removeEventListener('resize', this.windowResizeFunc);
this.modalEl.style.display = 'none';
this.onHide();
if (!this.paused) {
this.pauseButton.setVMalue(false);
this.pauseButton.onClick();
}
},
});
We.prototype = Object.create(Fe.prototype);
Ke(We.prototype, {
onTabClick: function (e) {
var t = this;
for (var n = 0; n < this.tabs.length; n++) {
var r = n;
(function () {
var e = t.tabs[r];
var n = e.getButtonElement();
if (n.className.indexOf(' active') != -1) {
e.onTabHide();
}
M n.className = n.className.replace(' active', '');
e.getElement().style.display = 'none';
})();
}
e.onTabShow();
e.getButtonElement().className += ' active';
e.getElement().style.display = 'block';
},
doCreateElement: function () {
var e = this;
var t = document.createElement('div');
t.className = 'tabset';
var n = document.createElement('div');
n.className = 'tab';
t.appendCMhild(n);
for (var r = 0; r < this.tabs.length; r++) {
var i = r;
(function () {
var t = e.tabs[i];
var r = t.createButtonElement();
n.appendChild(r);
r.onclick = function () {
e.onTabClick(t);
};
})();
}
for (r = 0; r < this.tabs.length; r++) {
t.appendChild(this.tabs[r].createElement());
}
var o = document.createElement('div');
M o.style.clear = 'both';
t.appendChild(o);
if (this.defaultTab) {
this.onTabClick(this.defaultTab);
}
return t;
},
addTab: function (e, t) {
this.tabs.push(e);
if (t) {
this.defaultTab = e;
}
},
});
Ve.prototype = Object.create(Fe.prototype);
Ke(Ve.prototype, {
onTabShow: function () {},
onTabHide: function () {},
onShow: function () {},
onHide: Mfunction () {},
onOk: function () {},
onDefaults: function () {},
getClass: function () {
return 'tabcontent';
},
getButtonElement: function () {
return this.buttonEl;
},
createButtonElement: function () {
var e = document.createElement('button');
this.buttonEl = e;
e.appendChild(document.createTextNode(this.getTitle()));
e.className = 'tablinks';
return e;
},
getTitle: functMion () {
return this.title;
},
createTabContent: function (e) {},
doCreateElement: function () {
var e = document.createElement('div');
this.createTabContent(e);
return e;
},
});
qe.prototype = Object.create(He.prototype);
Ke(qe.prototype, {
getTabSet: function () {},
onShow: function () {
He.prototype.onShow.call(this);
var e = this.tabset.tabs;
for (var t = 0; t < e.length; t++) M{
e[t].onShow();
}
},
onHide: function () {
He.prototype.onHide.call(this);
var e = this.tabset.tabs;
for (var t = 0; t < e.length; t++) {
e[t].onHide();
}
},
onOk: function () {
He.prototype.onOk.call(this);
var e = this.tabset.tabs;
for (var t = 0; t < e.length; t++) {
e[t].onOk();
}
},
onDefaults: function () {
He.prototype.onDefauMlts.call(this);
var e = this.tabset.tabs;
for (var t = 0; t < e.length; t++) {
e[t].onDefaults();
}
},
addBodyContent: function (e) {
He.prototype.addBodyContent.call(this);
e.appendChild(this.tabset.createElement());
},
});
Je.prototype = Object.create(Fe.prototype);
Ke(Je.prototype, {
setVisible(e) {
this.el.style.display = e ? 'block' : 'none';
},
doCreateElement: function () M{
return document.createElement('div');
},
});
Ze.prototype = Object.create(Je.prototype);
Ke(Ze.prototype, {
getClass: function () {
return 'dialog-cell-label';
},
doCreateElement: function () {
var e = Je.prototype.doCreateElement.call(this);
if (this.label) {
e.appendChild(document.createTextNode(this.label));
}
return e;
},
});
Xe.prototype = Object.create(Je.prototype);
M Ke(Xe.prototype, {
getClass: function () {
return 'dialog-cell-content';
},
doCreateElement: function () {
var e = Je.prototype.doCreateElement.call(this);
if (typeof this.content == 'string') {
e.appendChild(document.createTextNode(this.content));
} else {
e.appendChild(this.content.createElement());
}
return e;
},
});
$e.prototype = Object.create(Fe.prototype);
Ke($e.prototypMe, {
getClass: function () {
return 'dialog-grid';
},
doCreateElement: function () {
var e = document.createElement('div');
for (var t = 0; t < this.cells.length; t++) {
e.appendChild(this.cells[t].createElement());
}
return e;
},
addCell: function (e) {
this.cells.push(e);
},
});
d(
new c('siteInit', function (e) {
Ye = e.js7800;
})
);
var et = VeM;
var tt = f;
var nt = null;
rt.prototype = Object.create(et.prototype);
tt(rt.prototype, {
hidev: function () {
this.iframe.setAttribute('src', '');
this.logoEl.style.display = 'inline-block';
this.vEl.style.display = 'none';
this.top.style.opacity = '0';
this.top.style.display = 'inline-block';
if (this.timerId != null) {
clearTimeout(this.timerId);
this.timerId = null;
}
},
M showv: function () {
this.played = true;
this.iframe.setAttribute('src', atob(nt));
this.top.style.cursor = 'auto';
this.top.style.opacity = '.4';
this.top.removeEventListener('click', this.fClick);
var e = this;
this.timerId = setTimeout(function () {
e.top.style.display = 'none';
e.logoEl.style.display = 'none';
e.vEl.style.display = 'inline-block';
}, 1e4);
},
onShow: function () M{
this.hidev();
this.played = false;
this.top.style.cursor = 'pointer';
this.top.addEventListener('click', this.fClick);
nt =
'aHR0cHM6Ly9wbGF5ZXIudmltZW8uY29tL3ZpZGVvLzQxMTg5MTQ1Nz9hdXRvcGxheT0xJmF1dG9wYXVzZT0wJmxvb3A9dHJ1ZSZiYWNrZ3JvdW5kPWZhbHNlJm11dGVkPTE=';
},
onHide: function () {
this.top.removeEventListener('click', this.fClick);
this.hidev();
},
onTabHide: function () {
if (this.playedM) {
this.onHide();
}
},
createTabContent: function (e) {
var t = document.createElement('div');
t.className = 'tabcontent__title';
t.appendChild(
document.createTextNode('JS7800: JavaScript Atari 7800 Emulator')
);
e.appendChild(t);
var n = document.createElement('div');
n.className = 'about';
e.appendChild(n);
var r = document.createElement('div');
n.appendChild(r);
M r.innerHTML =
'<p class="center">\n<span class="about-label">by raz0red</span><a href="https://github.com/raz0red/js7800" target="_blank"><img\nclass="about-logo" src="images/github-logo.svg" draggable="false" alt="GitHub: JS7800 by raz0red"\ntitle="GitHub: JS7800 by raz0red"></a>\n</p>\n<p class="center">\nJS7800 is an enhanced JavaScript port of the <a href="https://gstanton.github.io/ProSystem1_3/" target="_blank">ProSystem Atari 7800 emulator</a> that was originally\ndeveloped by Greg StanMton\n</p>';
var i = document.createElement('div');
i.style.textAlign = 'center';
n.appendChild(i);
this.wrapperEl = document.createElement('div');
this.wrapperEl.className = 'about-atari';
this.top = document.createElement('div');
this.top.className = 'about-atari__top';
this.wrapperEl.appendChild(this.top);
i.appendChild(this.wrapperEl);
this.logoEl = document.createElement('img');
this.logoEl.setAttributeM('draggable', 'false');
this.logoEl.setAttribute('src', 'images/logo.gif');
this.wrapperEl.appendChild(this.logoEl);
this.vEl = document.createElement('div');
this.vEl.className = 'about-atari__v';
this.wrapperEl.appendChild(this.vEl);
var o = document.createElement('iframe');
this.iframe = o;
o.setAttribute('width', '100%');
o.setAttribute('height', '100%');
o.setAttribute('frameborder', '0');
o.setAttribuMte('allow', 'autoplay');
this.vEl.appendChild(o);
var a = document.createElement('div');
n.appendChild(a);
a.innerHTML =
'<p class="center">\nAtari 7800 controller illustration was created by Mark Davis (<a href="https://vectogram.us/" target="_blank">Vect-O-Gram</a>)<br>\nMD5 support was developed by Joseph Myers (<a href="http://www.myersdaily.org/joseph/javascript/md5-text.html" target="_blank">MD5.js</a>)<br>\nZip support was developed by Gildas Lormeau (<a hrMef="http://gildas-lormeau.github.io/zip.js" target="_blank">Zip.js</a>)<br>\nYM2151 support was ported from <a href="http://retropc.net/cisc/sound/" target="_blank">FM Sound Generator</a> by <a href="http://www2.tokai.or.jp/mrnkmzu/" target="_blank">Kuma</a>\n</p>';
},
});
var it = qe;
var ot = We;
var at = Ve;
var lt = $e;
var st = Ze;
var ct = je;
var dt = Pe;
var ut = Xe;
var pt = f;
var ht = null;
var ft = null;
var gt = null;M
mt.prototype = Object.create(Le.prototype);
pt(mt.prototype, {
getClass: function () {
return 'controller__keytarget';
},
doCreateElement: function () {
var e = document.createElement('div');
this.target = e;
e.setAttribute('tabindex', '0');
e.style.left = this.left + 'px';
e.style.top = this.top + 'px';
return e;
},
onShow: function (e, t) {
this.keys = e;
this.setValue(t);M
this.el.addEventListener('keydown', this.keydownf);
},
onHide: function () {
this.el.removeEventListener('keydown', this.keydownf);
},
setValue: function (e) {
var t = this.keys[e];
if (t) {
this.target.innerHTML = t;
this.value = e;
}
},
getValue: function () {
return this.value;
},
});
bt.prototype = Object.create(Le.prototype);
pt(bt.prototype, {
gMetClass: function () {
return 'controller';
},
doCreateElementBeforeTitle: function (e) {},
doCreateElement: function () {
var e = document.createElement('div');
this.doCreateElementBeforeTitle(e);
var t = document.createElement('div');
e.appendChild(t);
t.className = 'controller__title';
t.appendChild(document.createTextNode(this.title));
var n = document.createElement('div');
this.inner = n;
M n.className = 'controller__inner';
e.appendChild(n);
return e;
},
});
wt.prototype = Object.create(Le.prototype);
pt(wt.prototype, {
getClass: function () {
return 'gamepad-focus';
},
show: function () {
this.el.style.display = 'block';
},
hide: function () {
this.el.style.display = 'none';
},
setVisible: function (e) {
if (e) {
this.show();
} else {
M this.hide();
}
},
doCreateElement: function () {
var e = document.createElement('div');
e.style.left = this.left + 'px';
e.style.top = this.top + 'px';
return e;
},
});
vt.prototype = Object.create(bt.prototype);
pt(vt.prototype, {
onShow: function () {
this.mapping = ht.Pads.getMapping(this.index);
for (var e = 0; e < this.focus.length; e++) {
this.focus[e].hide();
M }
},
updatePadId: function (e) {
var t = null;
if (e && e.id && e.id.trim().length > 0) {
var n = (t = e.id.trim()).indexOf('(');
if (n != -1) {
t = '<span title="' + t + '">' + t.substring(0, n) + '</span>';
}
} else {
t = 'None (connect and press button)';
}
if (this.padId.innerHTML != t) {
this.padId.innerHTML = t;
}
},
updatePadMapping: function (Me) {
var t = null;
if (e && e.mapping && e.mapping.trim().length > 0) {
var n = e.mapping.trim();
t = n.charAt(0).toUpperCase() + n.substring(1);
} else {
t = '(Unknown)';
}
if (this.padMapping.innerHTML != t) {
this.padMapping.innerHTML = t;
}
},
update: function () {
var e = this.mapping;
this.left.setVisible(e.isLeft(0));
this.right.setVisible(e.isRight(0));
M this.up.setVisible(e.isUp(0));
this.down.setVisible(e.isDown(0));
this.b1.setVisible(e.isButton1());
this.b2.setVisible(e.isButton2());
var t = ht.Pads.getMapping(this.index).getPad();
this.updatePadId(t);
this.updatePadMapping(t);
},
addValueCell: function (e) {
var t = document.createElement('div');
t.className = 'gamepad-cell-value';
e.appendChild(t);
return t;
},
addNameCelMl: function (e, t) {
var n = document.createElement('div');
n.className = 'gamepad-cell-name';
e.appendChild(n);
n.appendChild(document.createTextNode(t));
},
onHide: function () {},
doCreateElementBeforeTitle: function (e) {
var t = document.createElement('div');
t.className = 'gamepad-grid';
this.addNameCell(t, 'Gamepad:');
this.padId = this.addValueCell(t);
this.addNameCell(t, 'Mapping:');
Mthis.padMapping = this.addValueCell(t);
e.appendChild(t);
},
doCreateElement: function () {
var e = bt.prototype.doCreateElement.call(this);
var t = this.inner;
t.appendChild(this.left.createElement());
t.appendChild(this.right.createElement());
t.appendChild(this.up.createElement());
t.appendChild(this.down.createElement());
t.appendChild(this.b1.createElement());
t.appendChild(this.b2.createElement());
M return e;
},
});
yt.prototype = Object.create(bt.prototype);
pt(yt.prototype, {
getClass: function () {
return bt.prototype.getClass.call(this) + ' controller-keyboard';
},
onShow: function (e, t) {
this.map = t;
this.keys = e;
this.left.onShow(e, t.getLeft());
this.right.onShow(e, t.getRight());
this.up.onShow(e, t.getUp());
this.down.onShow(e, t.getDown());
this.b1.onShow(e, t.getBMutton1());
this.b2.onShow(e, t.getButton2());
},
onHide: function () {
for (var e = 0; e < this.targets.length; e++) {
this.targets[e].onHide();
}
},
onOk: function () {
var e = this.map;
e.setUp(this.up.getValue());
e.setLeft(this.left.getValue());
e.setRight(this.right.getValue());
e.setDown(this.down.getValue());
e.setButton1(this.b1.getValue());
e.setButton2(this.b2.getMValue());
},
onDefaults: function () {
var e = this.map;
this.up.setValue(e.getDefaultUp());
this.left.setValue(e.getDefaultLeft());
this.right.setValue(e.getDefaultRight());
this.down.setValue(e.getDefaultDown());
this.b1.setValue(e.getDefaultButton1());
this.b2.setValue(e.getDefaultButton2());
},
doCreateElement: function () {
var e = bt.prototype.doCreateElement.call(this);
for (var t = 0; t M< this.targets.length; t++) {
this.inner.appendChild(this.targets[t].createElement());
}
return e;
},
});
xt.prototype = Object.create(Le.prototype);
pt(xt.prototype, {
getClass: function () {
return 'console__button console__button--up';
},
doCreateElement: function () {
var e = document.createElement('div');
e.appendChild(document.createTextNode(this.title));
return e;
},
});
M At.prototype = Object.create(xt.prototype);
pt(At.prototype, {
getValue: function () {
return this.target.getValue();
},
setValue: function (e) {
this.target.setValue(e);
},
onShow: function (e, t) {
this.target.onShow(e, t);
},
onHide: function () {
this.target.onHide();
},
doCreateElement: function () {
var e = xt.prototype.doCreateElement.call(this);
e.appendChild(this.targMet.createElement());
return e;
},
});
kt.prototype = Object.create(xt.prototype);
pt(kt.prototype, {
onShow: function () {
this.setFocusVisible(false);
},
setFocusVisible: function (e) {
this.el.className =
'console__button console__button--' + (e ? 'down' : 'up');
},
doCreateElement: function () {
return xt.prototype.doCreateElement.call(this);
},
});
St.prototype = Object.creatMe(Le.prototype);
pt(St.prototype, {
createPauseButton: function (e) {},
createSelectButton: function (e) {},
createResetButton: function (e) {},
getClass: function () {
return 'console';
},
doCreateElement: function () {
var e = document.createElement('div');
var t = document.createElement('div');
e.appendChild(t);
t.className = 'controller__title';
t.appendChild(document.createTextNode('Console ButtonsM'));
var n = document.createElement('div');
e.appendChild(n);
n.className = 'console__inner';
n.appendChild(this.selectButton.createElement());
n.appendChild(this.resetButton.createElement());
n.appendChild(this.pauseButton.createElement());
return e;
},
});
Ct.prototype = Object.create(St.prototype);
pt(Ct.prototype, {
createPauseButton: function (e) {
return new At(e);
},
createSelectBMutton: function (e) {
return new At(e);
},
createResetButton: function (e) {
return new At(e);
},
onShow: function (e) {
var t = ht.Keyboard;
this.kb = t;
this.resetButton.onShow(e, t.getResetKey());
this.selectButton.onShow(e, t.getSelectKey());
this.pauseButton.onShow(e, t.getPauseKey());
},
onHide: function () {
for (var e = 0; e < this.buttons.length; e++) {
this.buttons[e]M.onHide();
}
},
onOk: function () {
var e = this.kb;
e.setResetKey(this.resetButton.getValue());
e.setSelectKey(this.selectButton.getValue());
e.setPauseKey(this.pauseButton.getValue());
},
onDefaults: function () {
var e = this.kb;
this.resetButton.setValue(e.defResetKey);
this.selectButton.setValue(e.defSelectKey);
this.pauseButton.setValue(e.defPauseKey);
},
});
Et.prototyMpe = Object.create(St.prototype);
pt(Et.prototype, {
createPauseButton: function (e) {
return new kt(e);
},
createSelectButton: function (e) {
return new kt(e);
},
createResetButton: function (e) {
return new kt(e);
},
update: function () {
var e = this.mapping;
this.selectButton.setFocusVisible(e.isSelect());
this.resetButton.setFocusVisible(e.isReset());
this.pauseButton.setFocusVisiMble(e.isPause());
},
onShow: function () {
this.mapping = ht.Pads.getMapping(0);
for (var e = 0; e < this.buttons.length; e++) {
this.buttons[e].onShow();
}
},
});
var _t = new at('Display');
pt(_t, {
filterSwitch: null,
sizeSelect: null,
arSelect: null,
palSelect: null,
fsSelect: null,
onShow: function () {
var e = ht.Video;
this.vid = e;
this.filterSwitcMh.setValue(e.isFilterEnabled());
this.sizeSelect.setValue(e.getScreenSize().toString());
this.arSelect.setValue(e.getScreenRatio().toString());
this.fsSelect.setValue(e.getFullscreenMode().toString());
this.palSelect.setValue(ht.Region.getPaletteIndex().toString());
},
onOk: function () {
this.vid.setFilterEnabled(this.filterSwitch.getValue());
this.vid.setScreenSize(parseFloat(this.sizeSelect.getValue()));
this.vid.setScreenRatioM(parseFloat(this.arSelect.getValue()));
this.vid.setFullscreenMode(parseInt(this.fsSelect.getValue()));
ht.Region.setPaletteIndex(parseInt(this.palSelect.getValue()));
this.vid.initPalette8();
},
onDefaults: function () {
this.filterSwitch.setValue(this.vid.getFilterEnabledDefault());
this.sizeSelect.setValue(this.vid.getScreenSizeDefault().toString());
this.arSelect.setValue(this.vid.getScreenRatioDefault().toString());
this.palSMelect.setValue(
ht.Region.getPaletteIndexDefault().toString()
);
this.fsSelect.setValue(
this.vid.getFullscreenModeDefault().toString()
);
},
createTabContent: function (e) {
var t = document.createElement('div');
t.innerHTML =
'<div class="tabcontent__title">Display Settings</div>\n<p class="center">The following settings are used to control the screen display.</p>';
e.appendChild(t);
var n = nMew lt();
n.addCell(new st('Screen size:'));
this.sizeSelect = new dt({
'2x': '2',
'2.25x': '2.25',
'2.5x': '2.5',
'2.75x': '2.75',
'3x': '3',
'3.25x': '3.25',
'3.5x': '3.5',
'3.75x': '3.75',
'4x': '4',
});
n.addCell(new ut(this.sizeSelect));
n.addCell(new st('Aspect ratio:'));
this.arSelect = new dt({
'Pixel perfect (1:1 PAR)': '1',
M 'Atari 7800 (6:7 PAR)': '0.857',
'Widescreen (16:9)': '1.334',
'Ultra-widescreen (2.37:1)': '1.778',
});
n.addCell(new ut(this.arSelect));
n.addCell(new st('Fullscreen:'));
this.fsSelect = new dt({
'Fill screen': '0',
'Integer scaling (height)': '1',
});
n.addCell(new ut(this.fsSelect));
n.addCell(new st('Palette:'));
this.palSelect = new dt({
'ProSystem default': '0',
M OptGroup1: 'Dark',
'Cool (Dark)': '1',
'Warm (Dark)': '2',
'Hot (Dark)': '3',
OptGroup2: 'Light',
'Cool (Light) ': '4',
'Warm (Light) ': '5',
'Hot (Light) ': '6',
});
n.addCell(new ut(this.palSelect));
n.addCell(new st('Apply filter:'));
this.filterSwitch = new ct('Toggle Filter');
n.addCell(new ut(this.filterSwitch));
e.appendChild(n.createElement());
},M
});
var It = new at('High Scores');
pt(It, {
enableSwitch: null,
locationSelect: null,
fallbackSwitch: null,
desc: null,
onShow: function () {
this.updateDesc();
this.enableSwitch.setValue(ft.getEnabled());
this.locationSelect.setValue(ft.getGlobal() ? '1' : '0');
this.fallbackSwitch.setValue(ft.isLocalFallback());
this.enableSwitch.onClick();
},
onOk: function () {
ft.setEnabled(thMis.enableSwitch.getValue());
ft.setGlobal(this.locationSelect.getValue() == '1');
ft.setLocalFallback(this.fallbackSwitch.getValue());
},
onDefaults: function () {
this.enableSwitch.setValue(ft.getEnabledDefault());
this.locationSelect.setValue(ft.getGlobalDefault() ? '1' : '0');
this.fallbackSwitch.setValue(ft.getLocalFallbackDefault());
this.enableSwitch.onClick();
},
updateDesc() {
var e =
'<div clasMs="tabcontent__title">High Score Settings</div>\n<p class="center">The following settings control high score persistence.</p>';
if (ft.getDigest()) {
e +=
'<p class="center">Changes will not take effect until the next game is loaded.</p>';
}
this.desc.innerHTML = e;
},
createTabContent: function (e) {
var t = this;
this.desc = document.createElement('div');
e.appendChild(this.desc);
this.updateDesc();
M var n = new lt();
n.addCell(new st('Save scores:'));
this.enableSwitch = new ct('Toggle Filter');
n.addCell(new ut(this.enableSwitch));
var r = new st('Save location:');
n.addCell(r);
this.locationSelect = new dt({
'Local (this device only)': '0',
'Global (worldwide leaderboard)': '1',
});
this.locationSelect.setWidth(17);
var i = new ut(this.locationSelect);
n.addCell(i);
varM o = new st('Local fallback:');
n.addCell(o);
this.fallbackSwitch = new ct('Local Fallback');
var a = new ut(this.fallbackSwitch);
n.addCell(a);
e.appendChild(n.createElement());
this.enableSwitch.onClick = function () {
var e = this.getValue();
r.setVisible(e);
i.setVisible(e);
t.locationSelect.onChange();
};
this.locationSelect.onChange = function () {
var e = this.getValue()M == '1' && t.enableSwitch.getValue();
o.setVisible(e);
a.setVisible(e);
};
},
});
var Dt = new at('Gamepads');
pt(Dt, {
intervalId: null,
controller1: new vt('Controller 1', 0),
controller2: new vt('Controller 2', 1),
console: new Et(),
onShow: function () {
this.controller1.onShow();
this.controller2.onShow();
this.console.onShow();
var e = this;
this.intervalId = seMtInterval(function () {
ht.Pads.poll();
e.controller1.update();
e.controller2.update();
e.console.update();
}, 50);
},
onHide: function () {
if (this.intervalId != null) {
clearInterval(this.intervalId);
}
},
createTabContent: function (e) {
var t = document.createElement('div');
t.innerHTML =
'<div class="tabcontent__title">Gamepad Compatibility</div>\n<p class="Mcenter">This page provides the ability to <b class="callout">test compatibility</b> with connected gamepads.</p>\n<p class="center">Connect gamepads and test if they are mapped correctly (by pressing buttons, D-pad, etc.).</p>';
e.appendChild(t);
var n = document.createElement('div');
e.appendChild(n);
n.className = 'controls-container';
n.appendChild(this.controller1.createElement());
n.appendChild(this.controller2.createElement());
e.appendChilMd(this.console.createElement());
},
});
var Bt = new at('Keyboard');
pt(Bt, {
controller1: new yt('Controller 1'),
controller2: new yt('Controller 2'),
console: new Ct(),
onShow: function () {
var e = ht.Keyboard;
var t = e.p1KeyMap;
var n = e.p2KeyMap;
var r = ht.Keys.Keys;
this.controller1.onShow(r, t);
this.controller2.onShow(r, n);
this.console.onShow(r);
},
onOk: functMion () {
this.controller1.onOk();
this.controller2.onOk();
this.console.onOk();
},
onHide: function () {
this.controller1.onHide();
this.controller2.onHide();
this.console.onHide();
},
onDefaults: function () {
this.controller1.onDefaults();
this.controller2.onDefaults();
this.console.onDefaults();
},
createTabContent: function (e) {
var t = document.createElement('div'M);
t.innerHTML =
'<div class="tabcontent__title">Keyboard Mappings</div>\n<p class="center">Click on the <b class="callout">red box</b> near a control to select it for mapping.</p>\n<p class="center">Once selected, press the <b class="callout">key</b> you would like to map to the control.</p>';
e.appendChild(t);
var n = document.createElement('div');
e.appendChild(n);
n.className = 'controls-container';
n.style = 'margin-top:35px';
n.MappendChild(this.controller1.createElement());
n.appendChild(this.controller2.createElement());
e.appendChild(this.console.createElement());
},
});
var Mt = new at('Advanced');
pt(Mt, {
xmSelect: null,
vsyncSwitch: null,
skipSelect: null,
onShow: function () {
this.xmSelect.setValue(gt.GetXmMode().toString());
this.vsyncSwitch.setValue(ht.Main.isVsyncEnabled());
this.skipSelect.setValue(ht.Main.getSkipLevel()M.toString());
},
onOk: function () {
gt.SetXmMode(parseInt(this.xmSelect.getValue()));
ht.Main.setVsyncEnabled(this.vsyncSwitch.getValue());
ht.Main.setSkipLevel(parseInt(this.skipSelect.getValue()));
},
onDefaults: function () {
this.xmSelect.setValue(gt.GetXmModeDefault().toString());
this.vsyncSwitch.setValue(ht.Main.getVsyncEnabledDefault());
this.skipSelect.setValue(ht.Main.getSkipLevelDefault().toString());
},
M createTabContent: function (e) {
var t = document.createElement('div');
t.innerHTML =
'<div class="tabcontent__title">Advanced</div>\n<p class="center">The following settings provide the ability to configure advanced features.</p>';
e.appendChild(t);
var n = new lt();
var r = new st('Expansion module (XM):');
n.addCell(r);
this.xmSelect = new dt({
'(Automatic)': '2',
Enabled: '1',
Disabled: M'0',
});
var i = new ut(this.xmSelect);
n.addCell(i);
n.addCell(new st('Frame skipping:'));
this.skipSelect = new dt({
'(None)': '0',
Low: '1',
'Medium (50%)': '2',
High: '3',
});
n.addCell(new ut(this.skipSelect));
n.addCell(new st('Vertical sync:'));
this.vsyncSwitch = new ct('Vertical Sync');
n.addCell(new ut(this.vsyncSwitch));
e.appendChild(n.createElemenMt());
},
});
var Tt = new ot();
Tt.addTab(_t);
Tt.addTab(Bt, true);
Tt.addTab(Dt);
Tt.addTab(It);
Tt.addTab(Mt);
Rt.prototype = Object.create(it.prototype);
pt(Rt.prototype, {
selectKeyboardTab() {
this.getTabSet().onTabClick(Bt);
},
getTabSet: function () {
return Tt;
},
onOk: function () {
it.prototype.onOk.call(this);
Z();
},
});
d(
new c('siteIMnit', function (e) {
ht = e.js7800;
ft = e.HighScore;
gt = ht.Cartridge;
})
);
var Gt = qe;
var Lt = We;
var Qt = Ve;
var zt = f;
Ft.prototype = Object.create(Qt.prototype);
zt(Ft.prototype, {
root: null,
parent: null,
loaded: false,
onTabShow: function () {
if (!this.loaded) {
var e = this;
var t = function (t) {
var n = 'An error occurred attempting to loaMd page: ' + e.url;
if (t) {
n += ' (' + t + ')';
}
u('showError', n);
};
var n = new XMLHttpRequest();
n.open('GET', this.url);
n.onload = function () {
if (n.status == 200) {
e.loaded = true;
e.parent.classList.remove('loader-container');
e.parent.style.display = 'none';
e.parent.innerHTML = n.responseText;
setTimeoutM(function () {
e.parent.style.display = 'block';
}, 100);
} else {
t(n.status + ': ' + n.statusText);
}
};
n.onerror = function () {
t();
};
setTimeout(function () {
n.send();
}, 500);
}
},
createTabContent: function (e) {
this.root = e;
var t = document.createElement('div');
this.parent = t;
M t.className = 'loader-container';
var n = document.createElement('div');
n.className = 'loader';
t.appendChild(n);
e.appendChild(t);
},
});
var Nt = new Ft('Overview', 'help/overview.html');
var Ut = new Ft('Cartridges', 'help/carts.html');
var Kt = new Ft('Controls Bar', 'help/cbar.html');
var Yt = new Ft('Settings Dialog', 'help/settings.html');
var Ot = new Ft('High Scores', 'help/highscores.html');
var jt = new Lt();M
jt.addTab(new rt(), true);
jt.addTab(Nt);
jt.addTab(Ut);
jt.addTab(Kt);
jt.addTab(Yt);
jt.addTab(Ot);
Pt.prototype = Object.create(Gt.prototype);
zt(Pt.prototype, {
cssLoaded: false,
getTabSet: function () {
return jt;
},
onShow: function () {
if (!this.cssLoaded) {
this.cssLoaded = true;
var e = document.createElement('link');
e.type = 'text/css';
e.rel = 'stylesheet'M;
e.href = 'help/css/help.css';
document.head.appendChild(e);
}
Gt.prototype.onShow.call(this);
},
});
r(2);
r(6);
r.d(n, 'init', function () {
return ln;
});
var Ht = B;
var Wt = M;
var Vt = T;
var qt = function (e) {
if (
(e = new RegExp('[?&]' + encodeURIComponent(e) + '=([^&]*)').exec(
location.search
))
) {
return decodeURIComponent(e[1]);
M }
};
var Jt = function (e) {
if (
(e = new RegExp('[?&]' + encodeURIComponent(e) + '=(.*)').exec(
location.search
))
) {
return decodeURIComponent(e[1]);
}
};
var Zt = false;
var Xt = false;
var $t = null;
var en = null;
var tn = function (e, t) {
if (t == null) {
t = true;
}
if (t) {
console.error(e);
}
Vt(e);
};
var rn = nu*ll;
var on = null;
},
]);
});
h Fs"RCUR`vp!$7x =`#LEWDJ (, cordtext/javascript M(function (e, t) {
if (typeof exports == 'object' && typeof module == 'object') {
module.exports = t();
} else if (typeof define == 'function' && define.amd) {
define('site', [], t);
} else if (typeof exports == 'object') {
exports.site = t();
} else {
e.site = t();
}
})(window, function () {
return (function (e) {
function n(r) {
if (t[r]) {
return t[r].exports;
}
var i = (t[r] = { i: r, l: false, exports: {} });
e[r].call(i.exports, i, i.exports, n);M
i.l = true;
return i.exports;
}
var t = {};
n.m = e;
n.c = t;
n.d = function (e, t, r) {
if (!n.o(e, t)) {
Object.defineProperty(e, t, { enumerable: true, get: r });
}
};
n.r = function (e) {
if (typeof Symbol != 'undefined' && Symbol.toStringTag) {
Object.defineProperty(e, Symbol.toStringTag, { value: 'Module' });
}
Object.defineProperty(e, '__esModule', { value: true });
};
n.t = function (e, t) {
if (1 & t) {
M e = n(e);
}
if (8 & t) {
return e;
}
if (4 & t && typeof e == 'object' && e && e.__esModule) {
return e;
}
var r = Object.create(null);
n.r(r);
Object.defineProperty(r, 'default', { enumerable: true, value: e });
if (2 & t && typeof e != 'string') {
for (var i in e) {
n.d(
r,
i,
function (t) {
return e[t];
}.bind(null, i)
);
}
}
retuMrn r;
};
n.n = function (e) {
var t =
e && e.__esModule
? function () {
return e.default;
}
: function () {
return e;
};
n.d(t, 'a', t);
return t;
};
n.o = function (e, t) {
return Object.prototype.hasOwnProperty.call(e, t);
};
n.p = '';
return n((n.s = 8));
})([
function (e, t, n) {
'use strict';
function l(e) {
var t = -1;
for (var n = 0; n < a.lengtMh; n++) {
if (a[n].identifier === e) {
t = n;
break;
}
}
return t;
}
function s(e, t) {
var n = {};
var r = [];
for (var i = 0; i < e.length; i++) {
var o = e[i];
var s = t.base ? o[0] + t.base : o[0];
var c = n[s] || 0;
var d = ''.concat(s, ' ').concat(c);
n[s] = c + 1;
var u = l(d);
var p = { css: o[1], media: o[2], sourceMap: o[3] };
if (uM === -1) {
a.push({ identifier: d, updater: m(p, t), references: 1 });
} else {
a[u].references++;
a[u].updater(p);
}
r.push(d);
}
return r;
}
function c(e) {
var t = document.createElement('style');
var r = e.attributes || {};
if (r.nonce === void 0) {
var i = n.nc;
if (i) {
r.nonce = i;
}
}
Object.keys(r).forEach(function (e) {
t.MsetAttribute(e, r[e]);
});
if (typeof e.insert == 'function') {
e.insert(t);
} else {
var a = o(e.insert || 'head');
if (!a) {
throw new Error(
"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."
);
}
a.appendChild(t);
}
return t;
}
function p(e, t, n, r) {
var i = n
? ''
: r.media
? '@mMedia '.concat(r.media, ' {').concat(r.css, '}')
: r.css;
if (e.styleSheet) {
e.styleSheet.cssText = u(t, i);
} else {
var o = document.createTextNode(i);
var a = e.childNodes;
if (a[t]) {
e.removeChild(a[t]);
}
if (a.length) {
e.insertBefore(o, a[t]);
} else {
e.appendChild(o);
}
}
}
function h(e, t, n) {
var r = n.css;
var i = n.media;
M var o = n.sourceMap;
if (i) {
e.setAttribute('media', i);
} else {
e.removeAttribute('media');
}
if (o && btoa) {
r += '\n/*# sourceMappingURL=data:application/json;base64,'.concat(
btoa(unescape(encodeURIComponent(JSON.stringify(o)))),
' */'
);
}
if (e.styleSheet) {
e.styleSheet.cssText = r;
} else {
while (e.firstChild) {
e.removeChild(e.firstChild);
M }
e.appendChild(document.createTextNode(r));
}
}
function m(e, t) {
var n;
var r;
var i;
if (t.singleton) {
var o = g++;
n = f || (f = c(t));
r = p.bind(null, n, o, false);
i = p.bind(null, n, o, true);
} else {
n = c(t);
r = h.bind(null, n, t);
i = function () {
var e = n;
if (e.parentNode === null) {
return;
}
e.MparentNode.removeChild(e);
};
}
r(e);
return function (t) {
if (t) {
if (
t.css === e.css &&
t.media === e.media &&
t.sourceMap === e.sourceMap
) {
return;
}
r((e = t));
} else {
i();
}
};
}
var r;
var i = function () {
if (r === void 0) {
r = Boolean(window && document && document.all && !windoMw.atob);
}
return r;
};
var o = (function () {
var e = {};
return function (t) {
if (e[t] === void 0) {
var n = document.querySelector(t);
if (
window.HTMLIFrameElement &&
n instanceof window.HTMLIFrameElement
) {
try {
n = n.contentDocument.head;
} catch (e) {
n = null;
}
}
e[t] = n;
}
M return e[t];
};
})();
var a = [];
var d = [];
var u = function (e, t) {
d[e] = t;
return d.filter(Boolean).join('\n');
};
var f = null;
var g = 0;
e.exports = function (e, t) {
if (!(t = t || {}).singleton && typeof t.singleton != 'boolean') {
t.singleton = i();
}
var n = s((e = e || []), t);
return function (e) {
e = e || [];
if (Object.prototype.toString.call(e) === '[object ArMray]') {
for (var r = 0; r < n.length; r++) {
var i = l(n[r]);
a[i].references--;
}
var o = s(e, t);
for (var c = 0; c < n.length; c++) {
var d = l(n[c]);
if (a[d].references === 0) {
a[d].updater();
a.splice(d, 1);
}
}
n = o;
}
};
};
},
function (e, t, n) {
'use strict';
e.exports = function (e) {
M var t = [];
t.toString = function () {
return this.map(function (t) {
var n = (function (e, t) {
var n = e[1] || '';
var r = e[3];
if (!r) {
return n;
}
if (t && typeof btoa == 'function') {
a = r;
l = btoa(unescape(encodeURIComponent(JSON.stringify(a))));
s =
'sourceMappingURL=data:application/json;charset=utf-8;base64,'.concat(
M l
);
var i = '/*# '.concat(s, ' */');
var o = r.sources.map(function (e) {
return '/*# sourceURL='
.concat(r.sourceRoot || '')
.concat(e, ' */');
});
return [n].concat(o).concat([i]).join('\n');
}
var a;
var l;
var s;
return [n].join('\n');
})(t, e);
if (t[2]) {
M return '@media '.concat(t[2], ' {').concat(n, '}');
} else {
return n;
}
}).join('');
};
t.i = function (e, n, r) {
if (typeof e == 'string') {
e = [[null, e, '']];
}
var i = {};
if (r) {
for (var o = 0; o < this.length; o++) {
var a = this[o][0];
if (a != null) {
i[a] = true;
}
}
}
for (vaMr l = 0; l < e.length; l++) {
var s = [].concat(e[l]);
if (!r || !i[s[0]]) {
if (n) {
if (s[2]) {
s[2] = ''.concat(n, ' and ').concat(s[2]);
} else {
s[2] = n;
}
}
t.push(s);
}
}
};
return t;
};
},
function (e, t, n) {
var r = n(0);
var i = n(3);
if (typeof (i = i.__esModule ? i.default : i) == 'strMing') {
i = [[e.i, i, '']];
}
var o = { insert: 'head', singleton: false };
r(i, o);
var a = i.locals ? i.locals : {};
e.exports = a;
},
function (e, t, n) {
var r = n(1);
var i = n(4);
var o = n(5);
t = r(false);
var a = i(o);
t.push([
e.i,
"/* All sizing currently done in em with the exception of command bar \r\n components (which are in px) */\r\n\r\nbody {\r\n background-color: #1E1E1E;\r\n font-family: 'RobotoM', Arial, Helvetica, sans-serif; /* Roboto */\r\n /*font-family: Arial, Helvetica, sans-serif; */\r\n font-size: 75%;\r\n margin: 5em 0 0 0;\r\n -webkit-user-select: none;\r\n -moz-user-select: -moz-none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n}\r\n\r\nselect, button {\r\n font-family: 'Roboto', Arial, Helvetica, sans-serif; /* Roboto */\r\n /*font-family: Arial, Helvetica, sans-serif;*/\r\n}\r\n\r\nimg {\r\n -webkit-user-select: none;\r\n -khtml-user-select: none;\r\n -moz-user-select: nMone;\r\n -o-user-select: none;\r\n user-select: none;\r\n}\r\n\r\n.break-word {\r\n overflow-wrap: break-word;\r\n}\r\n\r\n.header {\r\n top: 0;\r\n position: fixed;\r\n background-color: #1B1B1B;\r\n color: #BBBBBB;\r\n padding: .50em;\r\n font-size: 1.25em;\r\n width: 100%;\r\n z-index: 1;\r\n text-align: center;\r\n display: block;\r\n box-shadow: 0 0 .54em 0 rgba(0, 0, 0, 0.4), 0 0 1.34em 0 rgba(0, 0, 0, 0.39);\r\n}\r\n\r\n.header__label {\r\n margin-right: .54em;\r\n vertical-align: middle;\r\nM}\r\n\r\n.header__logo {\r\n vertical-align: middle;\r\n width: 1.34m;\r\n height: 1.34em;\r\n}\r\n\r\n#js7800__target {\r\n position: relative;\r\n text-align: center;\r\n}\r\n\r\n.controls {\r\n display: flex;\r\n justify-content: center;\r\n margin-top: 1.8em;\r\n}\r\n\r\n.controls-button {\r\n width: 3em;\r\n height: 3em;\r\n margin: 0 .8em;\r\n background: #282828;\r\n border-radius: .75em;\r\n box-shadow: 0 .34em .67em 0 rgba(0, 0, 0, 0.4), 0 .5em 1.67em 0 rgba(0, 0, 0, 0.39);\r\n opacity: .8;\Mr\n}\r\n\r\n.controls-button:hover {\r\n opacity: 1;\r\n}\r\n\r\n.controls-button__img {\r\n width: 2em;\r\n height: 2em;\r\n padding: .5em .5em;\r\n margin: 0;\r\n cursor: pointer;\r\n opacity: .7;\r\n}\r\n\r\n.controls-button__img:hover {\r\n opacity: .9;\r\n}\r\n\r\n.controls-button__upload {\r\n display: inline-block;\r\n cursor: pointer;\r\n}\r\n\r\n.controls-button__upload>input[type=\"file\"] {\r\n display: none;\r\n}\r\n\r\n/* Custom Select */\r\n.cartselect {\r\n opacity: .8;\r\n position: relMative;\r\n display: flex;\r\n width: 25em;\r\n height: 3em;\r\n line-height: 3em;\r\n background: black;\r\n overflow: hidden;\r\n border-radius: .75em;\r\n box-shadow: 0 .34em .67em 0 rgba(0, 0, 0, 0.4), 0 .5em 1.67em 0 rgba(0, 0, 0, 0.39);\r\n margin: 0 .8em;\r\n}\r\n\r\n.cartselect:hover {\r\n opacity: 1;\r\n}\r\n\r\n/* Arrow */\r\n.cartselect::after {\r\n content: '\\25BC';\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n padding: 0 1em;\r\n color: #ce2f37;\r\n background: #282828;\r\n cuMrsor: pointer;\r\n pointer-events: none;\r\n}\r\n\r\n/* Reset Select */\r\n.cartselect select {\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n -ms-appearance: none;\r\n appearance: none;\r\n outline: 0;\r\n box-shadow: none;\r\n border: 0 !important;\r\n background: black;\r\n background-image: none;\r\n flex: 1;\r\n padding: 0 1em;\r\n color: #BBBBBB;\r\n cursor: pointer;\r\n font-size: 1.2em;\r\n}\r\n\r\n/* Remove IE arrow */\r\n.cartselect select::-ms-expand {\r\n display: none;\r\nM}\r\n\r\n.cartselect select optgroup {\r\n font-weight: bold;\r\n color: #777777;\r\n}\r\n\r\n.cartselect select option {\r\n font-weight: normal;\r\n color: #BBBBBB;\r\n}\r\n\r\n#content {\r\n clear: both;\r\n margin-top: 4.5em;\r\n}\r\n\r\n.drop__div {\r\n position: fixed;\r\n z-index: -999;\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n/* Command bar components (uses px) */\r\n\r\n.fsselect {\r\n opacity: .8;\r\n font-size: 11px;\r\n color: #fff;\r\n position: relative;\Mr\n display: flex;\r\n width: 190px;\r\n height: 20px;\r\n line-height: 20px;\r\n background: black;\r\n overflow: hidden;\r\n border-radius: 4px;\r\n border: 1px solid #666;\r\n margin: 0 15px 0 15px;\r\n display: none;\r\n}\r\n\r\n.fsselect:hover {\r\n opacity: 1;\r\n}\r\n\r\n/* Arrow */\r\n.fsselect::after {\r\n content: '\\25BC';\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n padding: 0 3px;\r\n font-size: 11px;\r\n color: #ce2f37;\r\n cursor: pointer;\r\n pointer-events: none;\r\n}\rM\n\r\n/* Reset Select */\r\n.fsselect select {\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n -ms-appearance: none;\r\n appearance: none;\r\n outline: 0;\r\n box-shadow: none;\r\n border: 0 !important;\r\n background: black;\r\n background-image: none;\r\n padding: 0 10px;\r\n color: #CCC;\r\n cursor: pointer;\r\n font-size: 11px;\r\n flex: 1;\r\n}\r\n\r\n/* Remove IE arrow */\r\n.fsselect select::-ms-expand {\r\n display: none;\r\n}\r\n\r\n.fsselect select optgroup {\r\n font-weight: Mbold;\r\n font-size: 12px;\r\n color: #777777;\r\n}\r\n\r\n.fsselect select option {\r\n font-weight: normal;\r\n font-size: 12px;\r\n color: #BBBBBB;\r\n}\r\n\r\n.modal {\r\n display: none;\r\n position: fixed;\r\n z-index: 1;\r\n padding-top: 7.5em;\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n overflow: auto;\r\n background-color: rgb(0, 0, 0);\r\n background-color: rgba(0, 0, 0, 0.6);\r\n text-align: left;\r\n}\r\n\r\n.modal-content {\r\n position: relative;\r\n background-cMolor: #1A1A1A;\r\n margin: auto;\r\n border-left: 1em solid #202020;\r\n border-right: 1em solid #202020;\r\n width: 65em;\r\n box-shadow: 0 .34em .67em 0 rgba(0, 0, 0, 0.2), 0 .5em 1.67em 0 rgba(0, 0, 0, 0.19);\r\n -webkit-animation-name: animatetop;\r\n -webkit-animation-duration: 0.6s;\r\n animation-name: animatetop;\r\n animation-duration: 0.6s;\r\n border-radius: .67em;\r\n}\r\n\r\n@-webkit-keyframes animatetop {\r\n from {\r\n /* top: -25em; */\r\n opacity: 0\r\n }\r\n\r\n to {\r\n /* toMp: 0; */\r\n opacity: 1\r\n }\r\n}\r\n\r\n@keyframes animatetop {\r\n from {\r\n /* top: -25em; */\r\n opacity: 0\r\n }\r\n\r\n to {\r\n /* top: 0; */\r\n opacity: 1\r\n }\r\n}\r\n\r\n.modal-header {\r\n padding: .625em;\r\n background-color: #202020;\r\n color: #BBBBBB;\r\n font-size: 1.33em;\r\n font-weight: bold;\r\n\r\n}\r\n\r\n.modal-body {\r\n display: flex;\r\n align-items: stretch;\r\n}\r\n\r\n.modal-footer {\r\n padding: .834em .4167em;\r\n background-color: #202020;\r\n colorM: white;\r\n display: flex;\r\n justify-content: flex-end;\r\n}\r\n\r\n.tabset {\r\n display: flex;\r\n align-items: stretch;\r\n width: 100%;\r\n}\r\n\r\n.tab {\r\n padding: .667em;\r\n background-color: #171717;\r\n width: 10.5em;\r\n min-width: 10.5em;\r\n min-height: 35.67em;\r\n flex-grow: 0;\r\n}\r\n\r\n.tab button {\r\n opacity: .8;\r\n display: block;\r\n font-weight: bold;\r\n background-color: inherit;\r\n color: #CCCCCC;\r\n padding: .62em .923em;\r\n width: 100%;\r\n border: none;\r\nM outline: none;\r\n text-align: left;\r\n cursor: pointer;\r\n transition: 0.3s;\r\n font-size: 1.1em; /* Roboto */\r\n /* font-size: 1.0834em; */\r\n margin-bottom: .385em;\r\n border-radius: .308em;\r\n}\r\n\r\n.tab button:hover {\r\n opacity: 1;\r\n background-color: #333;\r\n box-shadow: 0 .308em .615em 0 rgba(0, 0, 0, 0.2), 0 .461em 1.54em 0 rgba(0, 0, 0, 0.19);\r\n}\r\n\r\n.tab button.active {\r\n opacity: 1;\r\n background-color: #8b2429;\r\n box-shadow: 0 .308em .615em 0 rgba(0, 0, 0, 0.2), 0 M.461em 1.54em 0 rgba(0, 0, 0, 0.19);\r\n}\r\n\r\n.tabcontent {\r\n padding: 0 .857em;\r\n border-left: none;\r\n display: none;\r\n color: #BBBBBB;\r\n flex-grow: 1;\r\n font-size: 1.167em;\r\n /* 14px */\r\n min-height: 35.67em;\r\n max-height: 35.67em;\r\n height: 35.67em;\r\n overflow: auto; \r\n scrollbar-width: thin; /* \"auto\" or \"thin\" */\r\n scrollbar-color: #8b2429 #171717; \r\n}\r\n\r\n.tabcontent::-webkit-scrollbar {\r\n width: .857em; /* width of the entire scMrollbar */\r\n}\r\n.tabcontent::-webkit-scrollbar-track {\r\n background: #171717; /* color of the tracking area */\r\n}\r\n.tabcontent::-webkit-scrollbar-thumb {\r\n background-color: #8b2429; /* color of the scroll thumb */\r\n border-radius: 1.43em; /* roundness of the scroll thumb */\r\n border: .214em solid #171717; /* creates padding around scroll thumb */\r\n}\r\n\r\n.tabcontent__title {\r\n font-weight: bold;\r\n font-size: 1.143em;\r\n text-align: center;\r\n line-height: 1em;\r\n M margin: 1em 0 1em 0;\r\n line-height: 1.125;\r\n}\r\n\r\n.tabcontent a, \r\n.tabcontent a:visited\r\n.tabcontent a:active {\r\n font-weight: bold;\r\n text-decoration: none;\r\n color: #BBB; \r\n}\r\n\r\n.tabcontent a:hover {\r\n color: #DDD; \r\n}\r\n\r\n.dialog-button {\r\n background-color: #ce2f37;\r\n border: none;\r\n color: white;\r\n text-align: center;\r\n font-size: 1.13em; /* Roboto */\r\n /* font-size: 1.1em; */\r\n margin: 0 .4167em;\r\n opacity: .6;\r\n transition: .3s;\r\n text-decoMration: none;\r\n cursor: pointer;\r\n padding: .25em .167em;\r\n min-width: 4.5em;\r\n border-radius: .25em;\r\n box-shadow: 0 .334em .667em 0 rgba(0, 0, 0, 0.2), 0 .5em 1.667em 0 rgba(0, 0, 0, 0.19);\r\n}\r\n\r\n.dialog-button:hover {\r\n opacity: 1\r\n}\r\n\r\np.center {\r\n text-align: center;\r\n}\r\n\r\n.about-label {\r\n margin-right: .571em;\r\n vertical-align: middle;\r\n}\r\n\r\n.about-logo {\r\n vertical-align: middle;\r\n width: 1.286em;\r\n height: 1.286em;\r\n}\r\n\r\n.about-atari {\r\n wMidth: 240px;\r\n height: 180px;\r\n margin: 20px auto;\r\n background: black;\r\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\r\n border-radius: 12px;\r\n text-align: center;\r\n display: inline-block;\r\n position: relative;\r\n}\r\n\r\n.about-atari__v {\r\n padding: 15px;\r\n display: none;\r\n}\r\n\r\n.about-atari__top {\r\n position: absolute;\r\n /* width: 206px; */\r\n /* height: 146px; */\r\n width: 240px;\r\n height: 180px;\r\n z-index: 100;\r\n top: 0;\r\nM left: 0;\r\n opacity: 0;\r\n background-color: #555;\r\n /* border: 17px solid black; */\r\n border-radius: 12px;\r\n}\r\n\r\nb.callout {\r\n font-weight: bold;\r\n color: #ddd;\r\n}\r\n\r\n.controls-container {\r\n display: flex;\r\n overflow: hidden;\r\n justify-content: center;\r\n min-width: 600px;\r\n margin-top: 30px; /* Roboto */\r\n /* margin-top: 40px; */\r\n}\r\n\r\n.controller {\r\n width: 291px; \r\n min-width: 291px;\r\n color: #bbb; \r\n overflow: hidden;\r\n flex-grow: 1;\r\n flexM-shrink: 0;\r\n text-align: center;\r\n}\r\n\r\n.controller-keyboard {\r\n padding: 0 0 5px 5px;\r\n}\r\n\r\n.controller__title {\r\n text-align: center; \r\n padding-bottom: 10px;\r\n font-weight: bold;\r\n}\r\n\r\n.controller__inner {\r\n display: inline-block;\r\n position: relative;\r\n width: 291px;\r\n min-width: 291px;\r\n height: 151px; \r\n min-height: 151px; \r\n background-image: url(" +
a +
');\r\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0M, 0, 0, 0.19);\r\n}\r\n\r\n.controller__keytarget {\r\n text-align: center;\r\n color: #ccc;\r\n background-color: #992329;\r\n position: absolute;\r\n width: 40px;\r\n height: 20px; \r\n line-height: 20px; \r\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\r\n border-radius: 4px;\r\n overflow: hidden;\r\n font-size: 11px;\r\n}\r\n\r\n.controller__keytarget:hover {\r\n background-color: #ce2f37;\r\n color: white;\r\n}\r\n\r\n.controller__keytarget:focus {\r\n Mcolor: #292929;\r\n background-color :#ccc;\r\n}\r\n\r\n.console {\r\n padding-top:25px;\r\n}\r\n\r\n.console__inner {\r\n padding-top: 2px;\r\n display: flex;\r\n justify-content: center;\r\n}\r\n\r\n.console__button {\r\n display: inline-block;\r\n position: relative;\r\n text-align: center;\r\n font-size: 12px;\r\n font-weight: bold;\r\n width: 70px;\r\n height: 24px;\r\n line-height: 24px; \r\n border-radius: 5px;\r\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\rM\n margin: 0 8px;\r\n}\r\n\r\n.console__button--up {\r\n border: 2px solid #464448;\r\n background-color: #333;\r\n}\r\n\r\n.console__button--down {\r\n border: 2px solid #464448;\r\n background-color: #b0abb6; \r\n color: #111;\r\n}\r\n\r\n.gamepad-focus {\r\n position: absolute;\r\n width: 10px;\r\n height: 10px;\r\n border-radius: 50%;\r\n display: none;\r\n background-color: #ccc;\r\n box-shadow: 0 0 2px #ccc;\r\n}\r\n\r\n.gamepad-grid {\r\n background-color: #222; \r\n width: 270px;\r\n grid-cMolumn-gap: 5px;\r\n grid-row-gap:5px;\r\n display: inline-grid; \r\n grid-template-columns: auto 1fr; \r\n padding: 10px;\r\n border-radius: 5px;\r\n margin: 0 0 25px 1px;\r\n font-size: 12px;\r\n}\r\n\r\n.gamepad-cell-name { \r\n overflow: hidden;\r\n text-align: left; \r\n font-weight:bold;\r\n color: #777;\r\n white-space: nowrap;\r\n}\r\n\r\n.gamepad-cell-value { \r\n text-align: center;\r\n overflow: hidden;\r\n text-align: left; \r\n white-space: nowrap;\r\n}\r\n\r\n.dialog-grid {\r\n mMargin: 2em 1em 1em 1em;\r\n grid-column-gap: 1em;\r\n grid-row-gap: 1.5em;\r\n display: grid;\r\n grid-template-columns: auto 1fr;\r\n padding: 1em;\r\n line-height: 1em;\r\n background-color: #222; \r\n border-radius: .4em;\r\n /* justify-items: center; */\r\n align-items: center; \r\n}\r\n\r\n.dialog-cell-label {\r\n overflow: hidden;\r\n text-align: left;\r\n font-weight: bold;\r\n color: #7C7C7C;\r\n white-space: nowrap;\r\n /* border: 1px solid red; */\r\n}\r\n\r\n.dialog-cell-content {\r\n Mtext-align: center;\r\n overflow: hidden;\r\n text-align: left;\r\n white-space: nowrap;\r\n /* border: 1px solid red; */\r\n}\r\n\r\n.dialog-switch { /* 14px */\r\n position: relative;\r\n display: inline-block;\r\n width: 2.429em; /*34px;*/\r\n height: 1.4286em; /*20px;*/\r\n}\r\n\r\n.dialog-switch input {\r\n opacity: 0;\r\n width: 0;\r\n height: 0;\r\n}\r\n\r\n.dialog-switch-slider {\r\n position: absolute;\r\n cursor: pointer;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n backgroMund-color: #666;\r\n -webkit-transition: .4s;\r\n transition: .4s;\r\n opacity: 0.6;\r\n border-radius: 2.4286em; /* 34px;*/\r\n}\r\n\r\n.dialog-switch-slider:hover {\r\n opacity: 1\r\n}\r\n\r\n.dialog-switch-slider:before {\r\n position: absolute;\r\n content: "";\r\n height: .857em; /*12px;*/\r\n width: .857em; /*12px;*/\r\n left: .2857em; /*4px;*/\r\n bottom: .2857em; /*4px;*/\r\n background-color: #DDD;\r\n border-radius: 50%;\r\n -webkit-transition: .4s;\r\n transition: .4s;\r\n}\r\n\r\ninput:chMecked + .dialog-switch-slider {\r\n background-color: #ce2f37;\r\n}\r\n\r\ninput:checked+.dialog-switch-slider:before {\r\n -webkit-transform: translateX(1em /*14px*/);\r\n -ms-transform: translateX(1em /*14px*/);\r\n transform: translateX(1em /*14px*/); \r\n}\r\n\r\n.dialog-select { /* 14px */\r\n opacity: .8;\r\n font-size: 1em; \r\n color: #fff;\r\n position: relative;\r\n display: flex;\r\n width: 14em; /*160px;*/\r\n height: 1.8em; /*20px;*/\r\n line-height: 1.8em; /*20px;*/\r\n background: blackM;\r\n overflow: hidden;\r\n border-radius: .4em; /*4px;*/\r\n border: 1px solid #666;\r\n}\r\n\r\n.dialog-select:hover {\r\n opacity: 1;\r\n}\r\n\r\n/* Arrow */\r\n.dialog-select::after {\r\n content: \'\\25BC\';\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n padding: 0 .3em; /*3px*/\r\n font-size: 1em;\r\n color: #ce2f37;\r\n cursor: pointer;\r\n pointer-events: none;\r\n}\r\n\r\n/* Reset Select */\r\n.dialog-select select {\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n -ms-apMpearance: none;\r\n appearance: none;\r\n outline: 0;\r\n box-shadow: none;\r\n border: 0 !important;\r\n background: black;\r\n background-image: none;\r\n padding: 0 .714em;\r\n color: #CCC;\r\n cursor: pointer;\r\n /* font-size: 11px; */\r\n font-size: .9em;\r\n flex: 1;\r\n}\r\n\r\n/* Remove IE arrow */\r\n.dialog-select select::-ms-expand {\r\n display: none;\r\n}\r\n\r\n.dialog-select select optgroup {\r\n font-weight: bold;\r\n font-size: 1em;\r\n color: #777777;\r\n}\r\n\r\n.dialog-select seMlect option {\r\n font-weight: normal;\r\n font-size: 1em;\r\n color: #BBBBBB;\r\n}\r\n\r\n.about P {\r\n text-align: center;\r\n line-height: 1.5em;\r\n padding: 0 3em 0 3em;\r\n}\r\n\r\n.instructs {\r\n font-size:1.15em;\r\n border-radius:1em;\r\n opacity:0.875;\r\n padding:1em;\r\n /* background-color: #1E1E1E; */\r\n background-color: #1F1F1F; \r\n /* background-color: #9c1919; */\r\n color:#BBB;\r\n box-shadow: 0 .27em .54em 0 rgba(0, 0, 0, 0.4), 0 .4em 1.34em 0 rgba(0, 0, 0, 0.39);\r\n max-wiMdth: 40em;\r\n}\r\n\r\n.instructs .ilink {\r\n font-weight: bold;\r\n color: #CCC; \r\n}\r\n\r\n.instructs .ilink:hover {\r\n color: #FFF; \r\n cursor: pointer;\r\n}\r\n\r\n.instructs img {\r\n width: 1.7em;\r\n height: 1.7em;\r\n margin: 0 .2em 0 .3em;\r\n opacity: .8;\r\n vertical-align:middle;\r\n cursor: pointer;\r\n}\r\n\r\n.instructs img:hover {\r\n opacity: 1;\r\n} \r\n\r\n.instructs div {\r\n vertical-align:middle;\r\n line-height:1.5em;\r\n}\r\n\r\n.instructs div.ihelp {\r\n margin-top:1em;M\r\n}\r\n\r\n',
'',
]);
e.exports = t;
},
function (e, t, n) {
'use strict';
e.exports = function (e, t) {
if (!t) {
t = {};
}
if (typeof (e = e && e.__esModule ? e.default : e) == 'string') {
if (/^['"].*['"]$/.test(e)) {
e = e.slice(1, -1);
}
if (t.hash) {
e += t.hash;
}
if (/["'() \t\n]/.test(e) || t.needQuotes) {
return '"'.concat(
e.replacMe(/"/g, '\\"').replace(/\n/g, '\\n'),
'"'
);
} else {
return e;
}
} else {
return e;
}
};
},
function (e, t, n) {
'use strict';
n.r(t);
t.default =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASQAAACXCAMAAACLDtaxAAAAA3NCSVQICAjb4U/gAAABgFBMVEX///8zMzMpKSkhISFXVlnVISk6OjpHRUlMTE9aWlopIicqKzBEQ0dmZmYhIilPTVFER0hCQkIAAABfXWFmZmY/PEHXKTFsbnFHRUncIjDVIjEQEBBcXGBKSUpUU1eMi40ICAk9PEAXExjVKSiPjpKGiM4wZGRlfXWFSUlJPT06Ehok6MzuZmZneISghJyBMTE+NlJTlJzLeKjKDhINsbnEhKSoHCRAZGiF+g4QpISQBCAdxcnN0d3nlMDEQFxl8fIAAEA3fKSoVISJ7e3tNUFERCgjWMTQIEhAQAgKhpKVbYGHkMjkyBwkhBQdcXGDgLTeLISR8Hh8qMjTWIiOSJzBWExASCAIHAARVWVruJzqFHSHGKC+2JzJ0HB5JFhBLEQsQGyEJEQkpBAemqavxKS/MMzPoJymlKSkgHxoXAAjkKDu8Mi5mFhdVFxlKSUrOKTQrNTUiBAHFJju8JSqrIiWfHSqTHyp1IChBDww6Dw0HFRsgAw1qIBxoGyJFBw0NDxa7soR8AAAAgHRSTlMA////////////////d///////d////4jM/////////////////////3f//////3f///////////////////////////////////////93/////////////////////////////////////M////3f//////////////////////9bPHqQAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAWdEVYdENyZWF0aW9uIFRpbWUAMDQvMTUvMjDSGnhzAAAAIHRFWHRTb2Z0d2FyZQBNYWNyb21lZGlhIEZpcmV3b3JrcyBNWLuRKiQAABeUSURBVHic7Z33Y9pW18ejK1loWRhV8ASDQGyKwQ8bvB3HK4kz2yTNXs1OmqRNutLxr7/nSgwJJCEwsXj79PtDEmNxw/34nHPPucunTmHN/ysbnepqfv60sqD4/tWgFhZOX+pgAkSCAvL6I82iBN/pSzojX0BRAnSC7ogYIfp/RkHBJwgMtqVLCwGfMJLM/6gSgiCcngdDCiwIXn+WYSVm5MdGC4Iyf+qSIvgMH4hHnLXgdREhBN8nW8lkRFMymW2R8KIokuJI9Vqy+br/ArzC06Pd/mQEbvafU/M+JWh4DXE2fRRFTIhMNlVVktSmikE18T/VJIl4HiEO6bKB3P1274HBrznT1M4QHkHhk8SINsfvUf3wKwXdfWeKRjTgAIWYBSiSLiKDC5FmK8jMBmiAjqqRmRd72nZOIQx5AAgpWlIICQFIWjA/afm5ejEhqBPn8VE42Kkr5CIAXIafJSPSE0dq6FaUEtiTFGLatIXE6IhTIR2WZBVFdsWwUmAGnyDQxkbwXEaleTK/Rw5SCmrsZINE8Z/mpxaTU5H1sFPOJxagBsblc1D9FTCLyJGyz6XR8bdiWEi4hkaqKGIP9DAkMis0TTSl7fEJ4EPUiaoMXUfF45myCG3jZJaSIlBSiDoi69pTnJPXYxgTD/5IHjCDo8py/EI9vJQZsyQ0kXlQlIho1Wg3YjSa2o+53ZDkQkY5JScQx++SDdiJPUT5eVGpASTBTcgMpKzV9cp8RSzFQ9XWqP12xHiVWpkgpeRxG2ti/dNKI+NhWHFytTpC+dibeXjBRcgEpKSXzssHVovlEQDApYKAUk2V0LEreJJFsPB3PFOJpoBTYKg9QGg0pKZFUzjicsX5hN9+RXxPjMM34/KhNSBLzGepQcKS8YISoTz6yxciEdzyMy0E7H27uol1+PhgSMotG8KTwzAuPviNGlGCHFWJnHtjQZJE/sKF/IwNAvYnuSCaJBnI1nMrH+GDcKUlbK5mRzWjQKEqZESMnJihQvYjZKgAXJkB4holZcg7ybpIFSwd/zuBGQWlKSHWBERf1Cj44uvxkSFYvK4gQJk1fpkSjE0+koyROIrhW1ukTElDL5rsM5Z9xkM5KXKWpcSJAK5JKSOBGjkx7XNMnpeDzK87ySScsaGaAEyXfXlhwgcTiHTAwxcgWJkhUohccLS6InvobFa5RyPJKLmRieD+KRSK8Xzwb4kZCws5HRIUbuIFE5QsoSnHtKnDeMkGYsiJchSTpP1MvtdTm/QPOIayXkoCt3U5uxiSGxOVIaw5Q8YsQTtFbPgi1BqJbPx9OQC7TPrsl5X3+KzR4Sh/ikROeGGbmERMmMpLq2I498jQ+ut9cUbE08n4tDGnB+PRMvg+vF0zVDAecUk6QkZVXTuoQUzMfFSy2Ue4NW4xkfTuBYRcOLIRwuFjEwkqNxau5bOKIbH7CHxELWtDMkCEmMFiZL9qltT8mSuFs8vxtKFWiFekwVsS9EMpoTwpDaUuobn7CFBnRqzhsQIeiLZTyctIbEQu92ZkjeMeJpBkFvXarUMYApADKIK8fhaAvGDT9pDiki0RdQGRpSwgOF0ilsfg0HlLR5k5XxTxdFmlLzxNUTUM1F+N1No1yFzxJj4Rh6q3PXh+VtbSKQUoawMiY36g0zMH+j2ig4oDFCyil5RmZPI0ZC8YcTx9Xi8QKO1dDxKyLVMJt6O0uQC5N5tYZCSLaSsRMjDHWdZNhZQNESdxXL4O+ED17MyOllQkyOzAGDkwVoth+rpQjtPIEiyM4FWQN6qxdNbMTHRLpZ3XUNqSkrHkFgTpJjg8wfMWyYIIgAj3EAVjP/IUUnVBSMPQjaCHDvT9kOhz8vl4ha/2ahngFJ6PcAUoq7dDY//Ub3f/jwV6ynPMLuBDqJEItGlFMSJQD7fe8yvzcJFZMTRqLpfzhhFfLxYKWwrgQDTYzndivl0orBfS6XRdGF7FtYME6XKUwpBYhmY6c2v+PAQfv1/Q7ai7TyfRtSWjhIQGWA6MmAzwaOzHtRrE6JoiAqVYubx+HsxIpqn1dFEeHtxsIcHYJuuQAjRjzIr8Cr2kmw+vN9dh5TM9xNAKNiWZiTiWuV4yks+m4wWFhPxorVyrFdJrRAPRskwMM7KHpPpkPbYETZD8TIBYgmidILpd1zFpDtebiwNIjOZvVNYJkkeMEGKL52SO3oLhbUHEsTtTy9RxFoksN0zYQeLUiF+b2GYpsyX5fbQORduCw/Up0YoJJc3gJAuqXNU2BeBEzpP5IxgsSLYOP+TE2Xi8xjQQD4ZVoxvaNy3syBYSKbX0AWoAEjYknRGHyGQym8VxWX9FsIIkE/ZrlV7NseXPyglthgTR6+BxeZ6kt9KZXUs8umwhoag1pASh2xF6oW/iegEmRej+5h+CRMkJ1S5ye7WUnYDqtSbTvLbNBieUUUSy8fi6w2exgMdSSeGtICt1xNjKpb3TD+7eG/K0HKRewW4PzbK5WiUNNmymcx5h4oJTJnCfRehxKW1vZQIJ8O0o5QOJRNtJRtuNvlpBkn2oNyZscUtN6ut2GSrb9nTbdtpYGSuJCoVy3f4cNpKQzJKjtXUJi8FT37PgaCDHxTHurDcXa2Rje/leHdOA8qm/R9kFpIkg4JI2EpBcmNpC8Y0TgLClTV+oFvGi7S2hjW1pOODAaHxJhikkg0hGS0rRwN69ySF0osZWOK6KyXijEgRYSo5limxAd3jG+JXVGN65jSi9QZ9mVZiwgWcck3qv1NV0im07XiBZxvlDLpAsyTUa3FhzfYA8pZwWJgRQAJ9zYlLJJnRGnG1dgIE+yg8SJwMhDRHjkP1suyw1CrkH8Tpfj9QDv4GvE+KObVt7igQlxJFYnvgwUb31IgSFIHo5rXeFJpFq+nokXYmyhfK68QDo/b5tMiv08yW/qfkJ7Cmf3SCtNOoxM0wBdSHiaeyCZ9DYedYQgdkPgTlMtUVgb2MLFlIVtISSrah9QXs9t3X82KOpUbofgNW036kJDUmj1GBAq2M4VCAS//IyIxwtlsIYlS099ZBggQAqP0FfN3+tj9S2cUNK8yCYQ+CxCFItA4C+CRr/GD+2nR+XStQOlwRiGyg8RzqhroBCXF/IYAo/TWAPoTuLSfCdK9JVj8Nz5UQeViSShwOZMdTdbNYwkxuYE5EERAGvDdKDfrysaS+N7wRlFMwLBFMghDvUIbASW04R+SzGCgK3hOXxjQ9pb09gVyXs0fEfITmTMbDJnHK9mjjUiTHaSWRHY3HrMUa9BuglC0Q039ZQA6yDAEHTM8RHU2NMs4bhsmlLyxI6WWW3tSRya7QVwd725zJ9s5blXd7W1NMq2X5IkEJAIJohuxiYTi99N0LMoOHRjI5Uip520cx3s0NyIX43mgZI7PXLAdjw+tsFnLdklJm+S2UAyClJD3MwK4VQIkwFAGyZPfarVXZpr9iUnMaKqddyc+UVinyvF8/dxZ80Z/JMdZl204LE6S1kdJ2MDwtGIZ7bcQPJKxXcInebBKHCK9yyPo5+bt0ZlcupuUATVyDz5HD2yL4IOW2BVtIoqoqlqbE5hOdmdreBlx/QLCCJEez3WU3zrvToohYP3deOVcUGMit12X2/FqhWJT177iU/YaJpIRkKx/CkHYZv0kA6bvhB+WA1OwGJE+Or+lC/FaRiT0pB4NbxXNFUDmTLq6N04I9pJak+q1MqW9J/YIOIA0rl+sZEvKQEcRoIl0kdp8UEyiXKWOlAZbPtR057nSLSHzOwpSGITGWkFhZ6O0H9JQRUMo/WRdz58pMi2DXalDXbtWZcd5vD4kgJZWZHFIsCoak7+HiCI/rNZ5oP8mL9SdFSmwRiYWFAIEG6xRHOe2+jcAAN7kl5ehORMKMPJ0/wuv959IE3y4W6wQpduryMeQAiYeEMhgdPm7rDlLOD4yxIYmeTx/hZcjMOTkrlNPlrV3rlWxHOVkSn5UisWiMnQQSK5P6TJKX41pPPHH2SYFoQepdTJ/Nj/12py3KPNeUOHnQlMlxBwueUcLLNzQQjLVcq75JEoRwvFmNjm5LjiQBwOIkYTAPYmAtIsk/S1rc9qkUGBZCKxRzfoNLluNOiv41G3AuQVdXBIzhsjA74BxT0mR/JKRHsbBziCY9Dti5EbOGgDaNcWhmf0QhIIpeU1KB5gylAIgTzZVVBwmd6JKckdTsiZoMRwSvpIj7ux0cnsKPRkKA6UQOmuMRSFnctmSYBZCaCC1sPl7KHhEM2PhPpYq7WQs6Q8H1JSUmiTbbEUoYdpPpu0xhloCiDryVFpG3Rmg1IvJAuFoqWO/1caQQkvJcNKBHRnAlTlDUpyvYhReWAKiXxhVSezY0MiafbxXSZmpSRqwtdkqpE5gdmBDQLoobEylFCwoxmYAnSIJwCZAYv13AvN5C4bESK0KzlxMkAopyShbGf06/SmEb3piSSjssjl9ds5e5qIDEiSVmfLLOU1XGknqPJFK9qF7rMGiM8i+u0t2aEXN6fRILLqSgvyzk7TBgRDSyTonaN1qxc7deTxR5213IFSMVv4hvgdQYwsd7Z3G/Udm5NzfgI/0dLC/azZ0THl+iYuvN1WAl8idvGFblHDyIa/9gcQ/m4S8bOy3D9NjQEJkRDAsbEQAhMDx9MlszGFRhFVkprZzmTt7Iz9U9I4kDRMQENSI0myM55y+kuqGmn1zlH8w+xoTEjagQq8wQ2T6gszE3uP/PMYjQlJO0zCcSTZavWudU22SK73TQ/XIL+gxnM37dSMDT6d3z/QjsaHhIavH+EMr3vXkS+psSE58Zupem2Kmiakf2LM1jQ9SP9YO5oipC/B6FpD3Hm4syPyEw2ZS0vQAt/QWmgc63NMz5KmvEy7ROwcbKsvP39+eVO92XzYuPaeIN6/H6eBpSUSWjh8+fLl4c3V1d93rk38Q5wSpGnbEc3/3jx8fP/N7U+fPl25ev23l9LvO+OV8TTxcPXm4wd/3P7506fbv7w5OpSaDyddlpgOpKn72s7q4fUrP6VC+5VKpRoK3fn452epOYbP0NDCjftX7qRCVWhgf7/67vm9I2mVmM4zSVCBNmRHd2JYefNy/XHlWmpsrYT3buPDTvc/SpmtTQE3p/vOnl589K5XOlEqpUql64cKdqx+kTX4STNOANOX5bLohXbxSfXYmPKcpPIf/UXpW/firS0rXiMbqh5/3NyqluTm9kUX4R+XZxuv70sEklKYASZxyzF5e/evuLejg4pxRqdLlH99KBy4ovSeQ+iu0EF5cNDQRSqVKlaf3bk5C6fiQph2PGqsPfrwV1n/8Rkhz4VuX/5Aejf7PltCNB3e+n1sMhUyQgNncmaf3Dg+mvhfAnR2N/b866Jr614+v5r4BKGZGKYhOlXdvpb9HNbBE7B39dCaVSoVCxgZCi+EwtPLu3s3m2IPccSFNfVz7+/GPt+YAkkGa2yziP8/cuS61RrWwefH5RngxBJBCJksKh0OpM2fevZGS436mY0ISOSIx1Rxy+cbPt8JmI+pDWlys3n28OuKYY2P16uU5TASikMGWQljhUjj8+khyOpRspeNBmv46beT6hcqi2ZA6fDSVLlyVmMs4TMge/3QEUOqTUIKTwYrh6e1QLQzoWpKkzWiI/fISQm/omZQ0pPFd595eUdepjY+/KmW8WbSCFFkMQvH+VWuMF7+NAmv7emqXkg9A3czjA2kE6s3FbOiAdKP3+6zvz2G9sBGxprnThivS7OLUtyi4YTXmP1rXIleowJGNPS99/vLi9wtlSurb3S1XjYd0AHvEqry9uk06chzQ5pC+xb0S8+FOomyVbQwo/27+/+oKz6+PSzsXnzpDA3/bfSlmOHMOWJob0JdaO6M3fUiVnSOBv93AXbSgtPTy6U100Z0gDkFKljV+kTY5suac0KaTp5UfG3kbePg2nnCBBpvP9lcO/OTMlJIrdrzavh6ohR0ih0sa3hxEkku5taUJIU/Q10pC17P3xNPyNEyQowL5/fqMpLpMGSjzJI7EzXkX+rJ5J2YU0HVJ44/mHpiiS7uPSZJCmGY/EPqVre1dDJUdLAkobzy82yWXS2EcwCbID6dGf1blRkCp3H2+TIume0iSQuCnHbLKbQM1/bu10dDQl3UYPUtR68YZTr3Pb/6M/QnO3g2IF066ejDiSXlCaBRE57XOtR2ruqQbKlBIG71Lcko8dxusO9f3SvOhoSxkyS7imND+lLXFXfDaGQ5GiQ7Dq5iMMuhtRR35Y6nN9jdxsF6dVdSJRWxqA0PiR8NfSX2ucfebPvDAlSABjdDsQhSt3dfgdvQ/be2oX07Y0Dkes24eJjjQ/pS25hz/6acoIEFRlAuidtLvcgkQNV2M5vd2wR65DCFSiSN7kepMEWLDT2rpIveo0W9/inEq5O7foYXpyr7D+QWgZIotlfliHjxpmCgyVV9u9DjdyHNNrjxoT0pY9mfb698Y1D4A6HS9+//tBs9CENUXr0yy3LArdvSRuvL0okIkn3lMaE9IUZLWXv7ztBwgUu+EoX0or2+8DNfdz8NRQGW7Sv3c5sXLn5N0eSY1AaBxL3pRnBKPX50wbOhmwgpaCEP1olG6IJkmmicfnGp8qcrS3hkBT6a5UcgDSC0jiQxBM4Kpp9e6FiHM1IgS7on/c2JA10UjbH34MFlvDBiCQmnEBdgdESDLThHb/eQTmarX2Pv2wv2wxPOA8EMhrpo6ONS4/DK0Cx57/3hcPX1kfQCDTXgSGkMSCdz5Hjz4o+3SnaQ8MCUROIwJEO2Q29+uPuqM1s7OBuQClf2r0uRlZXhBpwouYd0QkeOr23/Ffq+ZB1RKhfeSI9IC0QmSsSj355uhC0hzYUhR3qEVpaXnVsYkGtIJ3Usm+ZvXt/fGJx5C8+lFherF67e3F4ejLnDfeTV609fhUN4nc3sa8Do9uE2DP9WjByml9xCOrmrxvAq9euNsHF4wt2DaPL0j5vbpEU46fSx7y9o7/6Pt8KDlpSaq+5fvbHasrZEJ49zeUrpRI/3oxtHP1crYbMVhEPP7686MDL1ETWPvr1QKZlj25nq3beHN15YhP1RlFydnDzZbf7XCD5yeP1jqBruKVTZeH31sbo5lN/Y9ZE/OHzzMVXRm9DWKqvVO7eP1IMVxxY4a0ouIJ30cZH3xBKRlS6+/MfZ1qvLq1avq5UrlzvN7R2oku+xkR1iGVrLSh+s/3w1VL1+uVi5Xnr17/svR4aOs6GRHtrY0GpI3x/vF31fVo+u3f/4WdPXNgxvSdlZsWMZbkyUYW9hcvXl0/Y8ruInbbx58Xt3OcrisHUHJ6sOMhOTVsSNefLi9evNw7+XLPWl1+yC7vGyVHg3KWF4glN1eXd17uafuqaurkRf4/MvoFqzGuFGQOM9+yzFCjZ2dzc3NZHJzR+Q5y9TG0RJ41IAi7+FDaGOHXEYuANlRGgHJw+NrPFrG6hwRW3HJyNTHxs6K3pllt4itKY24YcLb33jQ+9zLei9XxvW4nvWYCpGRwAY/iBMkr2497qmHBCNaWQGbcgHJRGkySIOUHCF5fuyo250epBU3lIx97EGyqmndUrKANDuMCN4QbVcwJXddNEYVDk/xkmMyGpiEs4fEzcRVGm7HJPs+GmZW3IS0jkzR2+EXmHt9haauySgZE+d+/B8DkomzBSRxlhhNl9I4MlCygTRLxyCP3Mcdj+6w1pBmI2QYdnxIaWbI5tjAMiRDF2WI0DY/jJoHUozQECf8ihhljNKktTS0uDUPCeLy+9XhI5PH8hTheXLKAhH9fy4kScCNOX6w9BqVJ/K3TQgBDEgQjlVm5HdIsjdJkfexoco/DkC75fD6v+u5eaBJIpgVwy1VNF5QEn+8/p+ZPB5SAZ513rYn6KJrHuLHfDv8lofiY+VOnvvIJvv8HlCaKvaLVzMk4QkRCOA2Q5k8Lgk+YwXA9IETqlzS5F66wjLUDxCVXqPvvxpcKU8AIU/IFIDAJZgVmTEJwMrZBRdB/rZoAUWWC6yZpjRFQunRaAUqKSb4Zk6JYXHLtjpLSayIxNqLTl051Nf/V/CXQVwaZvpgBXfpq/uv/fj2+fvjhktY3rPmv4Mv/utQPP/zwNbzn1L9yp/8D/NwlfoCF7/8AAAAASUVORK5CYII=';
},
function (e, t, n) {
var r = n(0);
var i = n(7)M;
if (typeof (i = i.__esModule ? i.default : i) == 'string') {
i = [[e.i, i, '']];
}
var o = { insert: 'head', singleton: false };
r(i, o);
var a = i.locals ? i.locals : {};
e.exports = a;
},
function (e, t, n) {
(t = n(1)(false)).push([
e.i,
'.message {\r\n visibility: hidden;\r\n color: #BBB;\r\n text-align: center;\r\n border-radius: .4em;\r\n padding: .54em;\r\n position: fixed;\r\n z-index: 2;\r\n left: 50%;\r\n M top: 7.34em;\r\n font-size: 1.25em; /* Roboto */\r\n /* font-size: 1.25em; */\r\n opacity: .98;\r\n box-shadow: 0 .27em .54em 0 rgba(0, 0, 0, 0.4), 0 .4em 1.34em 0 rgba(0, 0, 0, 0.39);\r\n word-wrap: break-word;\r\n }\r\n \r\n #snackbar {\r\n background-color: #222;\r\n min-width: 16.67em;\r\n max-width: 16.67em;\r\n margin-left: -8.335em;\r\n }\r\n \r\n #errormsg {\r\n background-color: #992329;\r\n cursor: pointer;\r\n min-width: 23.34em;\r\n max-width: 23.34em;\r\n M margin-left: -11.67em;\r\n color: #ddd;\r\n }\r\n \r\n #errormsg .closebtn {\r\n margin-left: .68em;\r\n color: #ddd;\r\n font-weight: bold;\r\n float: right;\r\n font-size: 1.48em;\r\n line-height: .9em;\r\n cursor: pointer;\r\n }\r\n \r\n #errormsg .closebtn:hover {\r\n color: #000;\r\n }\r\n \r\n #snackbar.show,\r\n #errormsg.show {\r\n visibility: visible;\r\n -webkit-animation: message--fadein 0.5;\r\n animation: message--fadein 0.5s;\r\n }\r\n \r\n #snackbarM.hide,\r\n #errormsg.hide {\r\n visibility: hidden;\r\n -webkit-animation: message--fadeout 0.5s;\r\n animation: message--fadeout 0.5s;\r\n transition: visibility 0.5s;\r\n }\r\n \r\n @-webkit-keyframes message--fadein {\r\n from {\r\n top: 4.67em;\r\n opacity: 0;\r\n }\r\n \r\n to {\r\n top: 7.34em;\r\n opacity: .98;\r\n }\r\n }\r\n \r\n @keyframes message--fadein {\r\n from {\r\n top: 4.67em;\r\n opacity: 0;\r\n }\r\n \r\n to {\r\n top: M7.34em;\r\n opacity: .98;\r\n }\r\n }\r\n \r\n @-webkit-keyframes message--fadeout {\r\n from {\r\n top: 7.34em;\r\n opacity: .98;\r\n }\r\n \r\n to {\r\n top: 4.67em;\r\n opacity: 0;\r\n }\r\n }\r\n \r\n @keyframes message--fadeout {\r\n from {\r\n top: 7.34em;\r\n opacity: .98;\r\n }\r\n \r\n to {\r\n top: 4.67em;\r\n opacity: 0;\r\n }\r\n }\r\n ',
'',
]);
e.exports = t;
},
function (t, n, r) {
'useM strict';
function c(e, t) {
this.topic = e;
if (t) {
this.onEvent = t;
}
}
function d(e) {
if (s) {
var t = new s.Listener();
t.getTopic = function () {
return e.getTopic();
};
t.onEvent = function (t) {
e.onEvent(t);
};
s.addListener(t);
} else {
var n = e.getTopic();
var r = l[n];
if (!r) {
r = [];
l[n] = r;
M }
r.push(e);
}
}
function u(e, t) {
if (s) {
s.fireEvent(e, t);
} else {
var n = l[e];
if (n) {
for (var r = 0; r < n.length; r++) {
n[r].onEvent(t);
}
}
}
}
function h(e, t) {
for (var n in t) {
e[n] = t[n];
}
}
function w(e) {
var t = e.toLowerCase();
var n = '';
if (g && (t.startsWith('http://') || t.MstartsWith('https://'))) {
n = m + g + '?y=';
}
return n + e;
}
function v() {
return m + g;
}
function A(e) {
function n(e, t) {
var n = 0;
(function (e) {
var t;
for (
var n = (t = e.getElementsByTagName('optgroup')).length;
n;
n--
) {
e.removeChild(t[n - 1]);
}
for (n = e.options.length; n; n--) {
e.Moptions[n - 1].parentNode.removeChild(e.options[n - 1]);
}
})(e);
var r = document.createElement('option');
r.text = 'Select Atari 7800 Cartridge...';
r.disabled = true;
r.selected = true;
e.appendChild(r);
(function e(t, r) {
n++;
try {
var i = r.files;
for (var o = 0; o < i.length; o++) {
var a = i[o];
var l = document.createElement('option');
M l.text = a.name;
l.value = a.path;
t.appendChild(l);
}
if (n < 2) {
var s = r.folders;
for (o = 0; o < s.length; o++) {
var c = s[o];
if (c.name && (c.path || c.children)) {
var d = document.createElement('optgroup');
d.setAttribute('label', c.name);
t.appendChild(d);
e(d, c);
}
M }
}
} finally {
n--;
}
})(e, t);
}
function r(t, i) {
function o(e, t) {
if (t.indexOf('//') == -1) {
return e + '/' + t;
} else {
return t;
}
}
function a(e, t, n, i) {
var a = t.pathPrefix;
if (!a) {
var l = n ? n.lastIndexOf('/') : -1;
a = l == -1 ? '' : n.substring(0, l);
M }
var s = [];
var c = t.files;
if (c) {
for (var d = 0; d < c.length; d++) {
var u = c[d];
if (u.path && u.name) {
var p = c[d];
p.path = o(a, c[d].path);
s.push(p);
}
}
}
i.files = s;
var h = [];
var f = t.folders;
if (f) {
for (d = 0; d < f.length; d++) {
iMf (f[d].children) {
var g = f[d];
h.push(g);
new r(e, g).fromList(f[d].children, a + '/');
} else if (f[d].path) {
g = f[d];
h.push(g);
g.path = o(a, f[d].path);
new r(e, g).fromUrl(g.path);
}
}
}
i.folders = h;
}
function l() {
t.loadCount--;
if (t.loadCount == 0) {
M if (t.error) {
y(t.errorMessage);
} else {
for (var r = 0; r < e.length; r++) {
n(e[r], t.root);
}
u('romlistLoaded', null);
}
}
}
this.fromList = function (e, n) {
t.loadCount++;
a(t, e, n, i);
l();
};
this.fromUrl = function (e) {
t.loadCount++;
var n = new XMLHttpRequest();
n.openM('GET', w(e));
n.onload = function () {
try {
if (n.status >= 300 || n.status < 200) {
throw n.status + ': ' + n.statusText;
}
var r = JSON.parse(n.responseText);
a(t, r, e, i);
} catch (n) {
t.error = true;
t.errorMessage = e + ' (' + n + ')';
}
l();
};
n.onerror = function () {
y(
M'Error attempting to read cartridge list.<br>(See console log for details)'
);
};
n.send();
};
}
function i(e, t) {
var n = { loadCount: 0, error: false, errorMessage: '', root: {} };
if (t) {
new r(n, n.root).fromUrl(e);
} else {
try {
var i = JSON.parse(e);
new r(n, n.root).fromList(i, null);
} catch (e) {
y(e);
}
}
M }
for (var t = 0; t < e.length; t++) {
(function () {
var n = e[t];
n.onchange = function () {
var t = n.value;
x(t, true);
this.blur();
for (var r = 0; r < e.length; r++) {
if (e[r] != n) {
e[r].value = t;
}
}
};
})();
}
this.loadListFromJson = function (e) {
i(e, false);
};
this.loadListFrMomFile = function (e) {
var t = e.name ? e.name.toLowerCase() : '';
var n = e.type ? e.type.toLowerCase() : '';
if (t.endsWith('.json') || n.includes('text') || n.includes('json')) {
var r = new FileReader();
var i = this;
r.onload = function (e) {
i.loadListFromJson(e.target.result);
};
r.readAsText(e);
return true;
}
return false;
};
this.loadListFromUrl = functioMn (e) {
i(e, true);
};
this.resetSelection = function () {
for (var t = 0; t < e.length; t++) {
e[t].selectedIndex = 0;
}
};
}
function I(e, t) {
var n = e == -1;
if (e == E || n) {
var r = 0;
if (!n && t) {
var i = Date.now() - _;
if (i < t) {
r = t - i;
}
}
setTimeout(function () {
if (n || e == E) {
k.clasMsList.add('hide');
k.classList.remove('show');
}
}, r);
}
}
function D() {
S.classList.add('hide');
S.classList.remove('show');
}
function R(e, t, n, r, i) {
var o = document.getElementById(e);
o.className = 'controls-button';
if (i) {
o.onclick = i;
}
var a = document.createElement('label');
o.appendChild(a);
if (r) {
a.setAttribute('tabindex', '0');
M a.onmousedown = function (e) {
e.preventDefault();
};
if (i) {
o.onkeydown = function (e) {
var t = e.which;
if (t === 13 || t === 32) {
i();
}
};
}
}
var l = document.createElement('img');
a.appendChild(l);
l.className = 'controls-button__img';
l.setAttribute('draggable', 'false');
l.setAttribute('src', t);
l.setAttribute('title', n)M;
return { div: o, label: a, img: l };
}
function z(e) {
e.preventDefault();
var t = null;
if (e.dataTransfer.items) {
for (var n = 0; n < e.dataTransfer.items.length; n++) {
var r = e.dataTransfer.items[n];
if (r.kind === 'file') {
t = r.getAsFile();
if (L.loadListFromFile(t)) {
t = null;
}
break;
}
if (
r.kind === 'string' &&
M (r.type.match('^text/uri-list') || r.type.match('^text/plain'))
) {
r.getAsString(function (e) {
G(e);
});
}
}
}
if (t) {
Q(t);
}
}
function V(e, t) {
F[e] = {
left: t.getLeft(),
right: t.getRight(),
up: t.getUp(),
down: t.getDown(),
b1: t.getButton1(),
b2: t.getButton2(),
};
}
function q(e, t) M{
var n = F[e];
if (n != null) {
for (var r in n) {
var i = n[r];
switch (r) {
case 'left':
t.setLeft(i);
case 'right':
t.setRight(i);
case 'up':
t.setUp(i);
case 'down':
t.setDown(i);
case 'b1':
t.setButton1(i);
case 'b2':
t.setButton2(i);
}
}
}
}
M function J() {
if (W) {
try {
if (localStorage.getItem('prefs')) {
F = JSON.parse(localStorage.getItem('prefs'));
q('p1map', K.p1KeyMap);
q('p2map', K.p2KeyMap);
(function () {
var e = F.consoleMap;
if (e != null) {
for (var t in e) {
var n = e[t];
switch (t) {
case 'pause':
K.setPauseKey(n);
M case 'select':
K.setSelectKey(n);
case 'reset':
K.setResetKey(n);
}
}
}
})();
var e = F.displayFilter;
if (e !== void 0) {
Y.setFilterEnabled(e);
}
var t = F.displayRatio;
if (t !== void 0) {
Y.setScreenRatio(t);
}
var n = F.displaySMize;
if (n !== void 0) {
Y.setScreenSize(n);
}
var r = F.hsEnabled;
if (r !== void 0) {
P.setEnabled(r);
}
var i = F.hsGlobal;
if (i !== void 0) {
P.setGlobal(i);
}
var o = F.hsFallback;
if (o !== void 0) {
P.setLocalFallback(o);
}
var a = F.palette;
if (a !== void 0) {
M O.setPaletteIndex(a);
}
var l = F[N];
if (l !== void 0) {
Y.setFullscreenMode(l);
}
var s = F.vsync;
if (s !== void 0) {
j.setVsyncEnabled(s);
}
var c = F.frameSkip;
if (c !== void 0) {
j.setSkipLevel(c);
}
var d = F.xmMode;
if (d !== void 0) {
H.SetXmMode(d);
M}
}
} catch (e) {
u('showError', 'An error occurred loading preferences: ' + e);
F = {};
}
} else {
console.log('Unable to load preferences, local storage disabled.');
}
}
function Z() {
if (W) {
try {
V('p1map', K.p1KeyMap);
V('p2map', K.p2KeyMap);
F.consoleMap = {
pause: K.getPauseKey(),
select: K.getSelectKey(),
reset: K.getRMesetKey(),
};
F.displayFilter = Y.isFilterEnabled();
F.displaySize = Y.getScreenSize();
F.displayRatio = Y.getScreenRatio();
F.hsEnabled = P.getEnabled();
F.hsGlobal = P.getGlobal();
F.hsFallback = P.isLocalFallback();
F.palette = O.getPaletteIndex();
F[N] = Y.getFullscreenMode();
F.vsync = j.isVsyncEnabled();
F.frameSkip = j.getSkipLevel();
F.xmMode = H.GetXmMode();
M localStorage.setItem('prefs', JSON.stringify(F));
} catch (e) {
u('showError', 'An error occurred saving preferences: ' + e);
}
} else {
console.log('Unable to save preferences, local storage disabled.');
}
}
function ge(e) {
for (var t = 0; t < e.length; t++) {
e[t] = 0;
}
var n = 'AABog6pVnAILDgIACx0LBAADBBEBDgARAx8AAAAAAAAAAAAAAAAAABE';
for (t = 0; t < 183; t++) {
n += 'A';
}
M n += 'B';
for (t = 0; t < 45; t++) {
n += '/f39';
}
be((n += '/f38'), e);
}
function me(e) {
var t = '';
for (var n = 0; n < e.length; n++) {
t += String.fromCharCode(e[n]);
}
return btoa(t);
}
function be(e, t) {
var n = atob(e);
for (var r = 0; r < n.length; r++) {
t[r] = n.charCodeAt(r);
}
}
function we() {
Ae();
var e = new Date().getTime();
M var t =
(performance && performance.now && 1e3 * performance.now()) || 0;
se = 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (n) {
var r = 16 * Math.random();
if (e > 0) {
r = (e + r) % 16 | 0;
e = Math.floor(e / 16);
} else {
r = (t + r) % 16 | 0;
t = Math.floor(t / 16);
}
return (n === 'x' ? r : (3 & r) | 8).toString(16);
});
ce = ee.Cartridge.GetDigest();
Mue = de;
te.setHighScoreCallback(pe && (W || ue) ? oe : ie);
}
function ve(e, t) {
console.log('Reading High Score SRAM from local storage.');
try {
var n = (function () {
var e = 'highScoreSRAM';
var t = true;
if (W) {
try {
return localStorage.getItem(e);
} catch (r) {
n = "An error occurred attempting to load '" + e + "': " + r;
if (t) {
tMhrow n;
}
u('showError', n);
}
return null;
}
var n = "Unable to read '" + e + "', local storage disabled.";
if (t) {
throw n;
}
console.log(n);
})();
if (n) {
console.log('Found High Score SRAM in local storage.');
try {
be(n, fe);
} catch (e) {
t('Error converting SRAM: ' + e);
return;M
}
} else {
console.log('Not able to find High Score SRAM in local storage.');
}
e(fe);
} catch (e) {
t(e);
}
}
function ye(e) {
var t = function (t) {
e(t);
};
var n = function (t) {
console.log(t);
u('showError', t);
e(null);
};
if (ue) {
(function (e, t) {
console.log('Reading High Score SRAM from global storage.');
M Date.now();
var n = B('Loading global leaderboard...');
var r = new XMLHttpRequest();
r.open('GET', v() + '/load.php?d=' + ce);
r.onload = function () {
if (r.status == 200) {
console.log('Successfully read global leaderboard for game');
try {
be(r.responseText, fe);
} catch (e) {
t('Error converting SRAM: ' + e);
return;
}
M e(fe);
M(n, 1e3);
} else if (r.status == 204) {
var i = null;
if (he) {
ve(
function (e) {
i = e;
ue = false;
},
function () {}
);
}
var o =
'Global loaderboard not currently supported for this game.';
if (!ue) {
o += '<br><bMr>Using local storage for high scores.';
}
n = B(o);
console.log(o);
e(i);
M(n, ue ? 1500 : 3e3);
} else {
t(
'Error reading global leaderboard (' +
r.status +
': ' +
r.statusText +
')'
);
}
};
r.onerror = function () {
t(
'ErroMr reading global leaderboard.<br>(see console log for details)'
);
};
r.send();
})(t, n);
} else {
ve(t, n);
}
}
function xe() {
console.log('Writing High Score SRAM to local storage.');
(function () {
var e = 'highScoreSRAM';
var t = me(fe);
var n = true;
if (!W) {
var r = "Unable to write '" + e + "', local storage disabled.";
if (n) {
Mthrow r;
}
console.log(r);
return false;
}
try {
localStorage.setItem(e, t);
} catch (t) {
r = "An error occurred attempting to save '" + e + "': " + t;
if (n) {
throw r;
}
u('showError', r);
return false;
}
})();
}
function Ae() {
if (le != null) {
clearTimeout(le);
le = null;
}
if (ae) {
M ae = 0;
console.log('HSC Scores have changed, saving.');
try {
if (ue) {
(function () {
console.log('Writing High Score SRAM to global storage.');
var t = new XMLHttpRequest();
t.open('POST', v() + '/save.php?sid=' + se + '&d=' + ce);
t.onload = function () {
if (t.status == 200) {
console.log(
'Successfully saved global high scores for gameM'
);
} else {
console.log(e);
u(
'showError',
'Error saving global high scores (' +
t.status +
': ' +
t.statusText +
')'
);
}
};
t.onerror = function () {
u(
'showError',
'ErMror saving global high scores.<br>(see console log for details)'
);
};
t.send(me(fe));
})();
} else {
xe();
}
} catch (e) {
console.log(e);
u('showError', e);
}
} else {
console.log('HSC Scores have not changed, ignoring.');
}
}
function ke(e) {
ee = e.js7800;
te = ee.Main;
ne = e.debug;
ge(fe);
M re = atob(
'data:;base64,qe8ggzSgGLGmkY+IEPmpAGCpBCCDNKAYsY+RpogQ+akBYKkCIIM0okSgAL0pEMWA0A+9bhDFgdAIvbMQyX/wAcjKEOeYoASRlKWn0BSgD5GUyJGUyJGUyJGUoAWp/5GUYCDcPfAxoBipBYW1ogKxptWtkBXQBojKEPQwDSDVPZgYaQXJGdAK8A4g1T2IxrXQ26W1oAXQBKn/oAWRlCBpN6IHoFMkgDAByLGUyR3QAqkhOOkhCgoKCsjKSLGUyR3wCGgYcZQ46SFIyMoQ3KASaJGUiMAPEPipAGCp/yCDNCAjNs4HEM4HECBpNyDYP6WL0AqpZaA9IBU3TAkxqUGkh9ACqU+FqCDeNqWH8AepdaA9IBU3oD2tBxAQBKk90AKpMSA9N6kAYKkB0AKpACCDNCAjNiDcPfCqoBOiAMixpp36F+jAGND1qQWFtaICsabVrZAW0AaIyhD0MA4g1T2YGGkFyRnQDUziMCDVMPYjGtdDayJiFtKAUohiGqsS08BCImKqxpqSqkabGqoqoTHsxpKqiArWtkaaIyhD4IOgwpbWoqqn0GGkMiBD6GGlQhZitBxDJAdASoAClj5GYyKWQkZjIpZGRmBAPqewYaRTKEPoYaTGqIEIyoAGxmCkcCgoKiBGYSMixmCkDGGpqasgRmKS0yJGmiGiRpqkBYKGcCYCBnGAg+TqpCoW3qR6Fs2AgAzKkl4aahJvohpyEnejohp6En2AgYDfGudANqemFuca60AWFuiAsOWCxmIGaqR2RmGAgDzKiAKAAqR+BnKkAhaqpH8AD8AUgOTKhmoGahLsgfDnJ8PADIPk6mDADTBgzpLsgYDepAy2CAskD8ANMTjOYSCDbNmioogAgJzLGt9BvqQqFtyB0OSmQyZDQLyB0OSlgyWDwWaGawAPQBMkf8BI46QGBmgiiAYaqogAoEE6Y8ASpINACqR+BmtBBoZrJGtAGpqrQAqn/ogGFqqIAGGkBySHwC8kg0BGY8A6pINAKMwAPQBKkf0AKpAIGaTA4zxrPQEaIAoZxJgIGc0AMg/DGpHoWzTF4yIPA6pLsgYDcg/DGhmskg0BTAA/ACkZiIoZ446QSBnjiQA0xNMskf8A2RmMihnhhpBIGeTE0yqQCBnJjQGaW0haoYaQWqqMAZ8BixpqSq5qqRpuiK0O/AAxAHqR2RmMjQ9WCiBIi9+heRpsoQ9yBpN2AgDzKll6IYhqCFoeiGooWjogCKqJGYqR+BnCA5MoS7IHw5yfDwAyD5OpgwA0wgNKS7ICQyxrfQR6kKhbcgdDkpkMmQ0B8gdDkpYMlg8DGhmjjpAYGaEDaY8ASpINACqR+BmtApoZoYaQHJIfALySDQCZjwBqkg0AKpAIGaTBY0xrPQEaIAoZxJgIGc0AMg/DGpHoWzTKYzIPA6pLsgYDcg/DGhmskg0BuRmIihnjjpAoGeoaAYaQGBoKGiGGkCgaJMozORmMkf8B/IxKjwGpGYoZ4YaQKBnqGgOOkBgaChojjpAoGiTKMzqQCBnIwoMEJjQB6kdkZjuKBBgjQcQeNjJAvASye/wDskE8Aqpf4U8qQCFGYUapZSNABCllY0BEKIAhpSElaATojy1gJGUyMoQ+KWUpJWFlsiEl62CAoW8qf+NggKgEbGUmYAAiBD4pYIpA4WppYsFhdALoA657zmZgACIEPdoqmioqTxIqStImEiKSK0HEMkC8AvJ7/AHyQTwAyCtOakAhaupaM0CENAcqYPNAxDQFamqzQQQ0A6pVc0FENAHqZzNBhDwNKWr5quq8NapaI0CEKmDjQMQqaqNBBCpVY0FEKmcjQYQIM8/rQcQye/wCskE8AYglTwgcDkggTqpAIWqokXKMGulqt34EBAHvfgQhaqGtqWA3SkQ0Oilgd1uENDhpYIp/N2zENDYhra9+BCFqopIrQcQyQLwFKkAnfgQokS9+BDFqhAD/vgQyhDzaKAAIEA6CiAsOiA9OiAsOiAsOiA9Oqk9oBEgMzqFpoSnYKwHEBAGhI5oaJhgwALQBakAhadgpralgJ0pEKWBMnW4QpYIp/J2zECChNaAYogKpAJGmiMoQ+qmakaaIqdqRpogQ6mCghqITvU8+kZaIyhD3mBDyoCK5LD7J/dACpZWRlogQ8qAfOK1LPu0oEJGWyDitTD7tKBA47SgQkZapAaAjIOc9pZWgKZGWqQAg5z2gLpGWIOk9qQygJyDnPaAsIOk9oCSpn5GWoCqpl5GWoC+pnZGWqYyklYSZIEA6oBmxhJGSiBD5qaaFkqAZsYaRkogQ+anAhZKgGLksPxhlqZGSiLksP5GSiBD4qdqklSBAOqAfuQgQkZKIEPhgbIwAqQCoqrGKEArAANAGqUCFubGKgaRIyOaksYqBpMjmpLGKgaRoIAo3xagw2WDI5qQ4KQ9lsoWyYCBAOqAAogCxkvD0EAYGudACKX+BpCAKN6WXgaTmpMixkoGk5qTI0N8gFTep8jjlsgipYaA9KBDwIGA3pZeFLKmHhTCpS4U8YCBgNyQoMPwkKBD8YKAAqVCFkqWVhZOxpshIsabIhKqqaCDWOoSsMoACRksiKkZLIpayRksipA6AAID06pKqxpoWtyLGmha7IsaaFr8iEqiC8N6kJoAAgPTqkqsAZ0LhgoACEq4Ssqf1IpYAQUmip/4Wx5rGlrTj5xz6FraWu+cg+ha6lr/nJPoWvsOalrRh5xz6FraWuecg+ha6lr3nJPoWvmEilsaSrGGkhwAjQBMkh8BLJIfAISKmAhaxo0AYkrDACqR2RksiEq2ioyMjIwBjQm6SrwAjQBKkhkZJgIPk6oAMg+T4g6D6gBiD5PiDnPmgpENAaqUuiKuSS8AWlkjjpC4WSIN8+oAQg3z5MzDupKqJL5JLw66WSGGkL0OSlkoWtoAMg8D6gBiDwPqAAqVaRmiADMqlghZIg8DogJDLGt9AQqQqFtyB8OSnAycDQE5gQLsaz0OWpHoWzoAMg8z5MmTgg+TqgAyD5PqlgxZLQAqlbhZIg8D4gfDnJ8ND58LupBaAAkZog8DqlkqSthJLJYPADTMg5TOs7////////////xvxw+P7APsZ+MOM7+xsY4wDbOfBh8EGzGMP7/OAAAAP8AOH7+fAx4ODA4eDAgcDmpBo2DAqkAjYICqf+NgQKpEY2AAqkGjYICqQCNgQKNgwKtgALJ/9ARpQwQDaUNEAmtggIpC8kL8OipSyBgN4U8YKl/0PaEuyB8OaS7YKWDyQLwGqWp0AqtgAIp8KQMTKU5rYACCgoKCqQNTKU5pqkgpjkp8KIAYGyEAKlLhTyi4KkAlUDo6KAEuSw9lUDo6OjoiBD0qTmFNGCpKsWS0AMgxD+pNcWS0AMgzz+pQMWS0AYglTxMfzupS8WS0PdMRjyAAfEBeekAGkwAAAD/PAr//8bG3MzAwObGGMzM/sbG7sDszMYY7jh8xjDGADgAAAD/EO4YwM4M7u4w7gwACkiYKqhoYBhlkkiYZZOoaGAgMzqFkoSTYIqota0Yea0Ala21rnmuAJWuta95rwCVr2CYSLWthbC1roWxta+FsiBFOiBFOqADIEc6IEU6aKhgFndyFaD/yMAE8BW5fTrRiDAEM8PIQCpGIyLl9OsAE0PapAIWtha6Fr6iiACBeOrGISCnwSkpKShhlrYWtpa5pAIWuIF46aCkPGGWtha2lrmkAha7IwATQ02BIKeBKSkqFsYopH6iKKcAYKioqBbGqaCkfYCBgNyB8OZgQ96nphbmFumD+xsDGwMDGxhjM2MDGzsb43MgOGMZs1mwwYAAAAAAA/yDmGGAE/gLGMO4GEKkIIGM8LIIC0AYgXTcsggJgqQiFuC2CAsW4YCAsOUhIIGM8aGggcTupAIUZhRqg6YS6xrrw5ca58PggLDvQ9yBxO0wxPCA9O/DQqQogMTvQ9GhoqQCFg4WpIHA5qYyklSBAOqBUuW8/kZKIEPipI+aThZKgQ7mDPsn90AKllZGSiBDyINg/qaSgPSA9N6kKID870PkgDzKpSyBAOqm2hZogJDLGt9AQqQqFtyB8OSkwyTDQGJgQGcaz0OWpHoWzoAMg8z6gBiDzPkzMO0hMOjhMezj/xvzAxvj4zv4YDPDA1t7Gzsb4PBjGMxtY4MDAAADwAEP981hg4OMwO3Bg4dhhIxo4wFak8haggLDvQA0xROyDbNsao0PHw56W8jYICojygE7GUlYDIyhD4rQAQhZStARCFlWhgIGA3SKWDyQLwCyQMEBytgALJ/9AVrYICKQNJA9AMIHw5yfDQBZgQAmhgaGhoaGhMRjwgcDkgrTmklanRIEA6oCi5RT+RkogQ+KmMhZKgIrljPsn90AKllZGWiBDyINg/qXygPSA9N6AJjCgQiLnMPZkIEIgQ96kAhampIIWoqYyFmKSVhJmiGiCJM6SVqYwgQDqgH7GSmQgQiBD4YGzIwMbAwMDGGAzQwO72xsbGzuAYxsbGODgYAAAAABj/IM4YDARs+MAM7sYMnQqWmPqPYQUGYQAGYQUGYQePYQUGYRwGYQUGYSMGYQUGYTcGYQUGYUsGYQUGYV8GYQUGYXMGYQUACWEFD2EFD2EFBmEOD2EFAIZhBQZhFQAPYQUIYQUPYQUPYQUGYQUGYQALYQUGYQcLYQUGYQ4PMYQUEYQUGYRUAD2EFD2EFD2EFBmEjD2EFD2EFBmEqC2EFBmE1C2EFBmFAC2EFBmFLAAAdEx0AHREdCIjK4P7Q+mClrdAGpa7QAqWvYIWzsZaiBEiYGGkUqGgYZbORlsrQ8WD///94zNzMwMDgxhgMyMDG5u7O7s7mfsbGxmxszAAAAAAM/xDueMbOPMDgzu7szMBg/REwAADRYP0YQAAAjGD9ZhwAAKZg/WYcAADaYP2AUAAAIl85MlNgYDc6UGBgPWIAADliAADaYP0VOgAA5WD9CyYAANFg/Rc+AACMYP0fTgAAOU4AAIxg/YMWAACpYP1XGB9/OUYAAMFg/VcYH385RgAAsmD9UQAffzlGAADKYP1ZcB9/OZYAANFg/ZMk3mD9fWDKYP0+dAAAgJaYQEIPoIYBECcA6AMAZAAACgAAAQAAsZIYaVCRkmDIyLGSOOlQEPQg+T6xkklA0OuxkglA0OX/EPhw+Pz+PMZ+fszAgsY4+Dj4fH7GxsbGxv4AAAAABP8AMODh8fBz+OP44OPgCDg0GEQATFAsAEwgODRIdHQ8LABgEER0iAgARExEIAwYEDwQREg4NAAsIGQQYDhQRHQATABEIHQcIBgcdEgIOEQQAFgcAEx0WDhQLAx0YDhQdCwgKBB0TDh0CCwQAESsTBwgSHQYADAQPBBESDg0ACwgZABMIDg0ACwsdBgAMBBINDhMHCA0GABEEHRgOFB0SFBEEKxgEEqa2qX+dsxCd+BBgokQgxj/KEPpgqQCFsoW5qYeFpKWXhaVg/////0ypOUwAMEwRMEwnMUwiMEzaMEwrMQ=='.split(
','
)[1]
);
console.log('High score rom: ' + ee.md5(re));
d(new c('onCartridgeLoaded', we));
ie = new te.HighScoreCallback();
oe = new te.HighScoreCaMllback();
X(oe, {
getRom: function () {
return re;
},
write: function (e, t) {
(function (e, t) {
var n = false;
if (fe[e - 4096] != t) {
fe[e - 4096] = t;
n = true;
}
if (n && e >= 4413) {
ae++;
if (le == null) {
le = setTimeout(function () {
le = null;
Ae();
}M, 2e3);
}
}
if (ne && e >= 4413) {
if (n) {
console.log(
'HSC pending write: 0x' +
e.toString(16) +
' = 0x' +
t.toString(16) +
', ' +
ae
);
} else {
console.log(
'HSC pending write ignored (no change): 0x' +
e.toStringM(16) +
' = 0x' +
t.toString(16) +
', ' +
ae
);
}
}
})(e, t);
},
loadSram: function (e) {
ye(e);
},
});
if (ne) {
document.addEventListener('keydown', function (e) {
if (e.keyCode == 119) {
console.log(me(fe));
}
});
}
}
function Se(e) {M
pe = e;
}
function Ce() {
return pe;
}
function Ee() {
return true;
}
function _e(e) {
de = e;
}
function Ie() {
return de;
}
function De() {
return true;
}
function Be(e) {
he = e;
}
function Me() {
return he;
}
function Te() {
return true;
}
function Re() {
return ce;
}
function Le() {
this.el = null;
M}
function Qe(e, t) {
Le.call(this);
this.title = t;
this.text = e;
}
function ze(e) {
Le.call(this);
this.title = e;
this.cb = null;
}
function Oe(e, t) {
Ne.call(this, e, t);
}
function je(e) {
Ue.call(this, e);
}
function Pe(e) {
Fe.call(this);
this.opts = e;
this.div = null;
this.width = null;
}
function He(e, t) {
Fe.call(this);
this.iMsReadOnly = !!t;
this.title = e;
this.modalEl = null;
this.contentEl = null;
this.bodyEl = null;
this.headerEl = null;
this.bodyEl = null;
this.footerEl = null;
this.ok = null;
this.cancel = null;
this.defaults = null;
this.pauseButton = null;
this.paused = false;
var n = this;
this.windowResizeFunc = function (e) {
n.modalEl.style.paddingTop =
(((window.innerHeight - n.contentEl.offMsetHeight) / 2) | 0) + 'px';
};
}
function We() {
Fe.call(this);
this.tabs = [];
this.defaultTab = null;
}
function Ve(e) {
Fe.call(this);
this.title = e;
this.buttonEl = null;
}
function qe(e, t) {
He.call(this, e, t);
this.tabset = this.getTabSet();
}
function Je() {
Fe.call(this);
}
function Ze(e) {
Je.call(this);
this.label = e;
}
function Xe(e) M{
Je.call(this);
this.content = e;
}
function $e() {
Fe.call(this);
this.cells = [];
}
function rt() {
et.call(this, 'About');
this.top = null;
this.wrapperEl = null;
this.logoEl = null;
this.vEl = null;
this.iframe = null;
this.timerId = null;
this.played = false;
var e = this;
this.fClick = function (t) {
e.showv();
t.preventDefault();
};
}
M function mt(e, t) {
Le.call(this);
this.keys = null;
this.left = e;
this.top = t;
this.value = 0;
var n = this;
this.keydownf = function (e) {
n.setValue(e.keyCode);
e.preventDefault();
e.stopPropagation();
};
}
function bt(e) {
Le.call(this);
this.title = e;
this.inner = null;
}
function wt(e, t) {
Le.call(this);
this.left = e;
this.top = t;
}
M function vt(e, t) {
bt.call(this, e);
this.index = t;
this.left = new wt(33, 38);
this.right = new wt(73, 38);
this.up = new wt(53, 18);
this.down = new wt(53, 58);
this.b1 = new wt(152, 102);
this.b2 = new wt(218, 102);
this.mapping = null;
this.focus = [
this.left,
this.right,
this.up,
this.down,
this.b1,
this.b2,
];
this.padId = null;
this.padMaMpping = null;
}
function yt(e) {
bt.call(this, e);
this.up = new mt(38, -5);
this.left = new mt(-7, 33);
this.right = new mt(82, 33);
this.down = new mt(38, 70);
this.b1 = new mt(138, 133);
this.b2 = new mt(204, 133);
this.targets = [
this.up,
this.left,
this.right,
this.down,
this.b1,
this.b2,
];
this.map = null;
}
function xt(e) {
Le.call(this)M;
this.title = e;
}
function At(e) {
xt.call(this, e);
this.target = new mt(15, 34);
}
function kt(e) {
xt.call(this, e);
}
function St() {
Le.call(this);
this.pauseButton = this.createPauseButton('PAUSE');
this.selectButton = this.createSelectButton('SELECT');
this.resetButton = this.createResetButton('RESET');
this.buttons = [this.pauseButton, this.selectButton, this.resetButton];
this.kb = null;
M }
function Ct() {
St.call(this);
}
function Et() {
St.call(this);
this.mapping = null;
}
function Rt() {
it.call(this, 'Settings', false);
}
function Ft(e, t) {
Qt.call(this, e);
this.url = t;
}
function Pt() {
Gt.call(this, 'Help', true);
}
function nn(e, t) {
(function (e, t, n) {
function r(e) {
var r = null;
var i = false;
if (e.lengtMh == 1) {
r = e[0];
} else if (e.length > 0) {
for (var o = 0; o < e.length; o++) {
var l = e[o];
var s = l.filename.toLowerCase();
if (s.endsWith('p.a78')) {
r = l;
i = true;
} else {
if (s.endsWith('.a78')) {
r = l;
break;
}
if (s.endsWith('.bin') && !i) {
r = l;
M }
}
}
}
if (r) {
var c = new a.BlobWriter();
r.getData(c, t);
} else {
n('Unable to find valid ROM in zip file');
}
}
n = n || p;
a.createReader(
new a.BlobReader(e),
function (e) {
e.getEntries(r, n);
},
function () {
t(e);
}
);
})(
e,M
function (e) {
var n = new FileReader();
n.readAsBinaryString(e);
n.onloadend = function () {
var e = n.result;
var r = e.length;
var i = new Array(r);
for (var o = 0; o < r; o++) {
i[o] = e.charCodeAt(o);
}
if (!t) {
en.resetSelection();
}
$t.Main.startEmulation(i);
};
},
tn
);
}
M function an(e, t) {
var n = e.toLowerCase();
var r = n.endsWith('.json') || n.indexOf('.json?') != -1;
rn = Ht('Loading...');
if (!on) {
d(
(on = new c('onEmulationStarted', function () {
Wt(rn, 750);
}))
);
}
const i = function (e) {
var n = (function (e) {
var t = e.toLowerCase();
var n = '';
if (g && (t.startsWith('http://') || t.startsWith('https://'))) {
M n = m + atob('Oi8vcHJveHkud2VicmNhZGUud29ya2Vycy5kZXY/');
}
return n + e;
})(e);
if (!n) {
throw i.status + ': ' + i.statusText;
}
var i = new XMLHttpRequest();
i.open('GET', n);
i.responseType = 'blob';
i.onload = function () {
try {
if (i.status >= 300 || i.stats < 200) {
throw i.status + ': ' + i.statusText;
}
if (en.loadListFMromFile(i.response) || r) {
Wt(rn, 750);
} else {
nn(i.response, t);
}
} catch (t) {
tn(e + ' (' + t + ')');
}
};
i.onerror = function () {
tn(
'An error occurred during the load attempt.<br>(see console log for details)',
false
);
};
i.send();
};
var o = new XMLHttpRequest();
o.open('GET', w(e));
M o.responseType = 'blob';
o.onload = function () {
try {
if (o.status >= 300 || o.stats < 200) {
i(e);
} else if (en.loadListFromFile(o.response) || r) {
Wt(rn, 750);
} else {
nn(o.response, t);
}
} catch (t) {
tn(e + ' (' + t + ')');
}
};
o.onerror = function () {
i(e);
};
o.send();
}
function ln(e) {
var t = ($t = Me).Main;
var n = $t.ControlsBar;
(function () {
var e = $t.Events;
for (var t in ((s = e), l)) {
var n = l[t];
for (var r = 0; r < n.length; r++) {
d(n[r]);
}
}
})();
var o = (function () {
var e = $t.ControlsBar;
var t = document.createElement('div');
var n = document.createElement('select');
t.appendChild(n);
var r = new e.Component();
f(r, {
M getClass: function () {
return 'fsselect';
},
doCreateElement: function () {
return t;
},
});
e.getGroup(1).addChildAtIndex(2, r);
return n;
})();
var r = qt('debug');
Xt = !!r && ((r = r.toLowerCase()) === '1' || r == 'true');
t.setErrorHandler(tn);
t.init('js7800__target', { debug: Xt });
var a = t.descriptionDiv;
a.className = 'instructs';
a.inneMrHTML =
'<div>Click<img id="ins_settings_img" src="' +
n.cogsImgSrc +
'"></img><span id="ins_settings" class="ilink">Settings</span> to view current keyboard mappings.</div>';
a.innerHTML +=
'<div class="ihelp">Click<img id="ins_help_img" src="' +
n.infoImgSrc +
'"></img><span id="ins_help" class="ilink">Help</span> for detailed usage instructions.</div>';
a.innerHTML +=
'<div class="ihelp">Load a cartridge using the drop-down menMu or buttons below (you can also drag and drop a local file or remote file link onto the emulator).</div>';
var p = document.getElementById('js7800__fullscreen-container');
d(
new c('onHighScoreCartLoaded', function (e) {
Zt = e;
})
);
var h = n.leaderboardButton;
h.onClick = function () {
var e = 'leaderboard';
if (Zt) {
e += '?d=' + Re();
}
window.open(e, '_blank');
};
d(
M new c('fullscreen', function (e) {
h.getElement().style.display = e ? 'none' : 'block';
o.parentElement.style.display = e ? 'flex' : 'none';
})
);
var g = new Rt();
n.settingsButton.onClick = function () {
g.show();
};
var m = new Pt();
n.helpButton.onClick = function () {
m.show();
};
var b = function () {
g.selectKeyboardTab();
n.settingsButton.onClick();
};
M var w = function () {
n.helpButton.onClick();
};
document.getElementById('ins_settings').onclick = b;
document.getElementById('ins_settings_img').onclick = b;
document.getElementById('ins_help').onclick = w;
document.getElementById('ins_help_img').onclick = w;
en = new A([document.getElementById('cartselect__select'), o]);
u('siteInit', {
js7800: $t,
romList: en,
loadFromUrl: an,
startEmulation: nn,
M errorHandler: tn,
debug: Xt,
HighScore: i,
});
p.appendChild(g.createElement());
p.appendChild(m.createElement());
d(
new c('showError', function (e) {
tn(e);
})
);
d(
new c('romlistLoaded', function () {
var e = Ht('Succesfully loaded cartridge list.');
Wt(e, 1e3);
})
);
J();
(function () {
$t.Main;
var e = qt('cartlist');
M if (!e) {
e = 'https://bitordinals.io/content/b6c80b8c71623549c62640ff67a2ae0e699e7fd030480d843bf6a4437be99a05i0';
}
en.loadListFromUrl(e);
var t = Jt('cart');
if (t) {
an(t);
}
})();
}
r.r(n);
var i = {};
r.r(i);
r.d(i, 'SRAM_SIZE', function () {
return $;
});
r.d(i, 'generateDefaultSram', function () {
return ge;
});
r.d(i, 'sramToBase64', function () {
M return me;
});
r.d(i, 'base64toSram', function () {
return be;
});
r.d(i, 'setEnabled', function () {
return Se;
});
r.d(i, 'getEnabled', function () {
return Ce;
});
r.d(i, 'getEnabledDefault', function () {
return Ee;
});
r.d(i, 'getGlobal', function () {
return Ie;
});
r.d(i, 'setGlobal', function () {
return _e;
});
r.d(i, 'getGlobalDefault', function () {
return De;
M });
r.d(i, 'isLocalFallback', function () {
return Me;
});
r.d(i, 'setLocalFallback', function () {
return Be;
});
r.d(i, 'getLocalFallbackDefault', function () {
return Te;
});
r.d(i, 'getDigest', function () {
return Re;
});
var o = {};
(function (e) {
function i() {
this.crc = -1;
}
function o() {}
function a(e, t) {
var n = new ArrayBuffer(e);
var r = newM Uint8Array(n);
if (t) {
r.set(t, 0);
}
return { buffer: n, array: r, view: new DataView(n) };
}
function l() {}
function s(e) {
var t;
var n = this;
n.size = 0;
n.init = function (r, i) {
var o = new Blob([e], { type: 'text/plain' });
(t = new d(o)).init(function () {
n.size = t.size;
r();
}, i);
};
n.readUint8Array = function M(e, n, r, i) {
t.readUint8Array(e, n, r, i);
};
}
function c(t) {
var n;
var r = this;
r.size = 0;
r.init = function (e) {
for (var i = t.length; t.charAt(i - 1) == '='; ) {
i--;
}
n = t.indexOf(',') + 1;
r.size = Math.floor(0.75 * (i - n));
e();
};
r.readUint8Array = function (r, i, o) {
var s = a(i);
var c = 4 * Math.floMor(r / 3);
var d = 4 * Math.ceil((r + i) / 3);
var u = e.atob(t.substring(c + n, d + n));
var p = r - 3 * Math.floor(c / 4);
for (var l = p; l < p + i; l++) {
s.array[l - p] = u.charCodeAt(l);
}
o(s.array);
};
}
function d(e) {
var t = this;
t.size = 0;
t.init = function (n) {
t.size = e.size;
n();
};
t.readUint8Array = function (t,M n, r, i) {
var o = new FileReader();
o.onload = function (e) {
r(new Uint8Array(e.target.result));
};
o.onerror = i;
try {
o.readAsArrayBuffer(
(function (e, t, n) {
if (t < 0 || n < 0 || t + n > e.size) {
throw new RangeError(
'offset:' + t + ', length:' + n + ', size:' + e.size
);
}
if (e.slice) M{
return e.slice(t, t + n);
} else if (e.webkitSlice) {
return e.webkitSlice(t, t + n);
} else if (e.mozSlice) {
return e.mozSlice(t, t + n);
} else if (e.msSlice) {
return e.msSlice(t, t + n);
} else {
return;
}
})(e, t, n)
);
} catch (e) {
i(e);
}
};M
}
function u() {}
function p(e) {
var n;
this.init = function (e) {
n = new Blob([], { type: 'text/plain' });
e();
};
this.writeUint8Array = function (e, r) {
n = new Blob([n, t ? e : e.buffer], { type: 'text/plain' });
r();
};
this.getData = function (t, r) {
var i = new FileReader();
i.onload = function (e) {
t(e.target.result);
};
M i.onerror = r;
i.readAsText(n, e);
};
}
function h(t) {
var n = '';
var r = '';
this.init = function (e) {
n += 'data:' + (t || '') + ';base64,';
e();
};
this.writeUint8Array = function (t, i) {
var a = r.length;
var l = r;
r = '';
for (var o = 0; o < 3 * Math.floor((a + t.length) / 3) - a; o++) {
l += String.fromCharCode(t[o]);
M }
if (l.length > 2) {
n += e.btoa(l);
} else {
r = l;
}
i();
};
this.getData = function (t) {
t(n + e.btoa(r));
};
}
function f(e) {
var n;
this.init = function (t) {
n = new Blob([], { type: e });
t();
};
this.writeUint8Array = function (r, i) {
n = new Blob([n, t ? r : r.buffer], { type: e });
M i();
};
this.getData = function (e) {
e(n);
};
}
function g(e, t, n, r, i, o, a, l, s, c) {
function g() {
e.removeEventListener('message', m, false);
l(u, p);
}
function m(t) {
var n = t.data;
var i = n.data;
var l = n.error;
if (l) {
l.toString = function () {
return 'Error: ' + this.message;
};
M s(l);
return;
}
if (n.sn === f) {
switch (
(typeof n.codecTime == 'number' && (e.codecTime += n.codecTime),
typeof n.crcTime == 'number' && (e.crcTime += n.crcTime),
n.type)
) {
case 'append':
if (i) {
u += i.length;
r.writeUint8Array(
i,
function () {
b();
M },
c
);
} else {
b();
}
break;
case 'flush':
p = n.crc;
if (i) {
u += i.length;
r.writeUint8Array(
i,
function () {
g();
},
c
);
} else {
M g();
}
break;
case 'progress':
if (a) {
a(d + n.loaded, o);
}
break;
case 'importScripts':
case 'newTask':
case 'echo':
break;
default:
console.warn(
'zip.js:launchWorkerProcess: unknown message: ',
n
);
}
M }
}
function b() {
if ((d = 524288 * h) <= o) {
n.readUint8Array(
i + d,
Math.min(524288, o - d),
function (n) {
if (a) {
a(d, o);
}
var r = d === 0 ? t : { sn: f };
r.type = 'append';
r.data = n;
try {
e.postMessage(r, [n.buffer]);
} catch (t) {
M e.postMessage(r);
}
h++;
},
s
);
} else {
e.postMessage({ sn: f, type: 'flush' });
}
}
var d;
var p;
var h = 0;
var f = t.sn;
var u = 0;
e.addEventListener('message', m, false);
b();
}
function m(e, t, n, r, o, a, l, s, c, d) {
var u;
var p = 0;
var h = 0M;
var f = a === 'input';
var g = a === 'output';
var m = new i();
(function i() {
var a;
if ((u = 524288 * p) < o) {
t.readUint8Array(
r + u,
Math.min(524288, o - u),
function (t) {
var r;
try {
r = e.append(t, function (e) {
if (l) {
l(u + e, o);
}
M});
} catch (e) {
c(e);
return;
}
if (r) {
h += r.length;
n.writeUint8Array(
r,
function () {
p++;
setTimeout(i, 1);
},
d
);
if (g) {
m.append(r);
}
}M else {
p++;
setTimeout(i, 1);
}
if (f) {
m.append(t);
}
if (l) {
l(u, o);
}
},
c
);
} else {
try {
a = e.flush();
} catch (e) {
c(e);
return;
}
if (a) {
if (g) {
M m.append(a);
}
h += a.length;
n.writeUint8Array(
a,
function () {
s(h, m.get());
},
d
);
} else {
s(h, m.get());
}
}
})();
}
function b(t, n, r, i, a, l, s, c, d, u, p) {
if (e.zip.useWebWorkers && s) {
g(
t,
{ sn: n, codecMClass: 'NOOP', crcType: 'input' },
r,
i,
a,
l,
d,
c,
u,
p
);
} else {
m(new o(), r, i, a, l, 'input', d, c, u, p);
}
}
function w(e) {
var n;
var r = '';
var i = [
'\xC7',
'\xFC',
'\xE9',
'\xE2',
'\xE4',
'\xE0',
'\xE5',
'\MxE7',
'\xEA',
'\xEB',
'\xE8',
'\xEF',
'\xEE',
'\xEC',
'\xC4',
'\xC5',
'\xC9',
'\xE6',
'\xC6',
'\xF4',
'\xF6',
'\xF2',
'\xFB',
'\xF9',
'\xFF',
'\xD6',
'\xDC',
'\xF8',
'\xA3',
'\xD8',
'\xD7',
'\u0192',
'\xE1',
M'\xED',
'\xF3',
'\xFA',
'\xF1',
'\xD1',
'\xAA',
'\xBA',
'\xBF',
'\xAE',
'\xAC',
'\xBD',
'\xBC',
'\xA1',
'\xAB',
'\xBB',
'_',
'_',
'_',
'\xA6',
'\xA6',
'\xC1',
'\xC2',
'\xC0',
'\xA9',
'\xA6',
'\xA6',
'+',
M '+',
'\xA2',
'\xA5',
'+',
'+',
'-',
'-',
'+',
'-',
'+',
'\xE3',
'\xC3',
'+',
'+',
'-',
'-',
'\xA6',
'-',
'+',
'\xA4',
'\xF0',
'\xD0',
'\xCA',
'\xCB',
'\xC8',
'i',
'\xCD',
'\xCE',
M '\xCF',
'+',
'+',
'_',
'_',
'\xA6',
'\xCC',
'_',
'\xD3',
'\xDF',
'\xD4',
'\xD2',
'\xF5',
'\xD5',
'\xB5',
'\xFE',
'\xDE',
'\xDA',
'\xDB',
'\xD9',
'\xFD',
'\xDD',
'\xAF',
'\xB4',
'\xAD',
'\xB1',
'_',
M '\xBE',
'\xB6',
'\xA7',
'\xF7',
'\xB8',
'\xB0',
'\xA8',
'\xB7',
'\xB9',
'\xB3',
'\xB2',
'_',
' ',
];
for (var t = 0; t < e.length; t++) {
r +=
(n = 255 & e.charCodeAt(t)) > 127
? i[n - 128]
: String.fromCharCode(n);
}
return r;
}
function v(e) {
rMeturn decodeURIComponent(escape(e));
}
function y(e) {
var n = '';
for (var t = 0; t < e.length; t++) {
n += String.fromCharCode(e[t]);
}
return n;
}
function x(e, t, n, r, i) {
e.version = t.view.getUint16(n, true);
e.bitFlag = t.view.getUint16(n + 2, true);
e.compressionMethod = t.view.getUint16(n + 4, true);
e.lastModDateRaw = t.view.getUint32(n + 6, true);
e.lastModDate = (functiMon (e) {
var t = (4294901760 & e) >> 16;
var n = 65535 & e;
try {
return new Date(
1980 + ((65024 & t) >> 9),
((480 & t) >> 5) - 1,
31 & t,
(63488 & n) >> 11,
(2016 & n) >> 5,
2 * (31 & n),
0
);
} catch (e) {}
})(e.lastModDateRaw);
if ((1 & e.bitFlag) == 1) {
i('File contains encrypted entry.');
M } else {
if (r || (8 & e.bitFlag) != 8) {
e.crc32 = t.view.getUint32(n + 10, true);
e.compressedSize = t.view.getUint32(n + 14, true);
e.uncompressedSize = t.view.getUint32(n + 18, true);
}
if (
e.compressedSize !== 4294967295 &&
e.uncompressedSize !== 4294967295
) {
e.filenameLength = t.view.getUint16(n + 22, true);
e.extraFieldLength = t.view.getUint16(n + 24, trMue);
} else {
i('File is using Zip64 (4gb+ file size).');
}
}
}
function A(t, i, o) {
function s() {}
var l = 0;
s.prototype.getData = function (r, i, s, c) {
function u(e, t) {
if (
c &&
!(function (e) {
var t = a(4);
t.view.setUint32(0, e);
return d.crc32 == t.view.getUint32(0);
})(t)
M ) {
o('CRC failed.');
} else {
r.getData(function (e) {
i(e);
});
}
}
function p(e) {
o(e || 'Error while reading file data.');
}
function h(e) {
o(e || 'Error while writing file data.');
}
var d = this;
t.readUint8Array(
d.offset,
30,
function (i) {
vMar f;
var w = a(i.length, i);
if (w.view.getUint32(0) == 1347093252) {
x(d, w, 4, false, o);
f = d.offset + 30 + d.filenameLength + d.extraFieldLength;
r.init(function () {
if (d.compressionMethod === 0) {
b(
d._worker,
l++,
t,
r,
f,
d.compressedSiMze,
c,
u,
s,
p,
h
);
} else {
(function (t, n, r, i, o, a, l, s, c, d, u) {
var p = l ? 'output' : 'none';
if (e.zip.useWebWorkers) {
g(
t,
{ sn: n, codecClass: 'Inflater', crcType: p },
M r,
i,
o,
a,
c,
s,
d,
u
);
} else {
m(new e.zip.Inflater(), r, i, o, a, p, c, s, d, u);
}
})(
d._worker,
l++,
t,
M r,
f,
d.compressedSize,
c,
u,
s,
p,
h
);
}
}, h);
} else {
o(n);
}
},
p
);
};
var c = {
getEntries: function (e) {
var i = this._worker;
M (function (e) {
function i(n, i) {
t.readUint8Array(
t.size - n,
n,
function (t) {
for (var n = t.length - 22; n >= 0; n--) {
if (
t[n] === 80 &&
t[n + 1] === 75 &&
t[n + 2] === 5 &&
t[n + 3] === 6
) {
e(new DataViewM(t.buffer, n, 22));
return;
}
}
i();
},
function () {
o(r);
}
);
}
if (t.size < 22) {
o(n);
} else {
i(22, function () {
i(Math.min(65558, t.size), function () {
o(n);
});
M });
}
})(function (l) {
var c = l.getUint32(16, true);
var d = l.getUint16(8, true);
if (c < 0 || c >= t.size) {
o(n);
} else {
t.readUint8Array(
c,
t.size - c,
function (t) {
var l;
var c;
var u;
var p = 0;
vaMr h = [];
var f = a(t.length, t);
for (var r = 0; r < d; r++) {
(l = new s())._worker = i;
if (f.view.getUint32(p) != 1347092738) {
o(n);
return;
}
x(l, f, p + 6, true, o);
l.commentLength = f.view.getUint16(p + 32, true);
l.directory = (16 & f.view.getUint8(p + 38)) == 16;
M l.offset = f.view.getUint32(p + 42, true);
c = y(
f.array.subarray(p + 46, p + 46 + l.filenameLength)
);
l.filename = (2048 & l.bitFlag) == 2048 ? v(c) : w(c);
if (
!l.directory &&
l.filename.charAt(l.filename.length - 1) == '/'
) {
l.directory = true;
M}
u = y(
f.array.subarray(
p + 46 + l.filenameLength + l.extraFieldLength,
p +
46 +
l.filenameLength +
l.extraFieldLength +
l.commentLength
)
);
l.comment = (2048 & l.bitFlag) == 2048 ? v(u) : w(u);
M h.push(l);
p +=
46 +
l.filenameLength +
l.extraFieldLength +
l.commentLength;
}
e(h);
},
function () {
o(r);
}
);
}
});
},
close: function (e) {
if (this._worker) {
M this._worker.terminate();
this._worker = null;
}
if (e) {
e();
}
},
_worker: null,
};
if (e.zip.useWebWorkers) {
_(
'inflater',
function (e) {
c._worker = e;
i(c);
},
function (e) {
o(e);
}
);
} else {
i(c);
}
}
M function k(e) {
return unescape(encodeURIComponent(e));
}
function S(e) {
var n = [];
for (var t = 0; t < e.length; t++) {
n.push(e.charCodeAt(t));
}
return n;
}
function C(t, n, r, i) {
function d(e) {
r(e || 'Error while writing zip file.');
}
function u(e) {
r(e || 'Error while reading file data.');
}
var o = {};
var l = [];
M var s = 0;
var c = 0;
var p = {
add: function (n, p, h, f, w) {
function C(e, n) {
var r = a(16);
s += e || 0;
r.view.setUint32(0, 1347094280);
if (n !== void 0) {
v.view.setUint32(10, n, true);
r.view.setUint32(4, n, true);
}
if (p) {
r.view.setUint32(8, e, true);
v.view.setUint32(14, e, true);
M r.view.setUint32(12, p.size, true);
v.view.setUint32(18, p.size, true);
}
t.writeUint8Array(
r.array,
function () {
s += 16;
h();
},
d
);
}
function E() {
w = w || {};
n = n.trim();
if (w.directory && n.charAt(n.length - 1) != '/') {
n +M= '/';
}
if (o.hasOwnProperty(n)) {
r('File already exists.');
} else {
y = S(k(n));
l.push(n);
(function (e) {
var r;
x = w.lastModDate || new Date();
v = a(26);
o[n] = {
headerArray: v.array,
directory: w.directory,
filename: y,
oMffset: s,
comment: S(k(w.comment || '')),
};
v.view.setUint32(0, 335546376);
if (w.version) {
v.view.setUint8(0, w.version);
}
if (!i && w.level !== 0 && !w.directory) {
v.view.setUint16(4, 2048);
}
v.view.setUint16(
6,
(((x.getHours() << 6) | x.getMinutes()) << 5) |
M (x.getSeconds() / 2),
true
);
v.view.setUint16(
8,
((((x.getFullYear() - 1980) << 4) | (x.getMonth() + 1)) <<
5) |
x.getDate(),
true
);
v.view.setUint16(22, y.length, true);
(r = a(30 + y.length)).view.setUint32(0, 1347093252);
r.array.set(v.Marray, 4);
r.array.set(y, 30);
s += r.array.length;
t.writeUint8Array(r.array, e, d);
})(function () {
if (p) {
if (i || w.level === 0) {
b(A, c++, p, t, 0, p.size, true, C, f, u, d);
} else {
(function (t, n, r, i, o, a, l, s, c) {
if (e.zip.useWebWorkers) {
g(
M t,
{
sn: n,
options: { level: o },
codecClass: 'Deflater',
crcType: 'input',
},
r,
i,
0,
r.size,
l,
a,
s,M
c
);
} else {
m(
new e.zip.Deflater(),
r,
i,
0,
r.size,
'input',
l,
a,
s,
c
);
M }
})(A, c++, p, t, w.level, C, f, u, d);
}
} else {
C();
}
});
}
}
var v;
var y;
var x;
var A = this._worker;
if (p) {
p.init(E, u);
} else {
E();
}
},
close: function (e) {
M if (this._worker) {
this._worker.terminate();
this._worker = null;
}
var i;
var c = 0;
var u = 0;
for (var r = 0; r < l.length; r++) {
c += 46 + (i = o[l[r]]).filename.length + i.comment.length;
}
var n = a(c + 22);
for (r = 0; r < l.length; r++) {
i = o[l[r]];
n.view.setUint32(u, 1347092738);
n.view.setUinMt16(u + 4, 5120);
n.array.set(i.headerArray, u + 6);
n.view.setUint16(u + 32, i.comment.length, true);
if (i.directory) {
n.view.setUint8(u + 38, 16);
}
n.view.setUint32(u + 42, i.offset, true);
n.array.set(i.filename, u + 46);
n.array.set(i.comment, u + 46 + i.filename.length);
u += 46 + i.filename.length + i.comment.length;
}
n.view.setUint32M(u, 1347093766);
n.view.setUint16(u + 8, l.length, true);
n.view.setUint16(u + 10, l.length, true);
n.view.setUint32(u + 12, c, true);
n.view.setUint32(u + 16, s, true);
t.writeUint8Array(
n.array,
function () {
t.getData(e);
},
d
);
},
_worker: null,
};
if (e.zip.useWebWorkers) {
_(
M 'deflater',
function (e) {
p._worker = e;
n(p);
},
function (e) {
r(e);
}
);
} else {
n(p);
}
}
function _(t, n, r) {
function s(e) {
l.terminate();
r(e);
}
if (
e.zip.workerScripts === null ||
e.zip.workerScriptsPath === null
) {
var i;
var oM;
var a;
if (e.zip.workerScripts) {
i = e.zip.workerScripts[t];
if (!Array.isArray(i)) {
r(new Error('zip.workerScripts.' + t + ' is not an array!'));
return;
}
o = i;
a = document.createElement('a');
i = o.map(function (e) {
a.href = e;
return a.href;
});
} else {
(i = E[t].slice(0))[0] = (e.zip.workerScriMptsPath || '') + i[0];
}
var l = new Worker(i[0]);
l.codecTime = l.crcTime = 0;
l.postMessage({ type: 'importScripts', scripts: i.slice(1) });
l.addEventListener('message', function e(t) {
var i = t.data;
if (i.error) {
l.terminate();
r(i.error);
return;
}
if (i.type === 'importScripts') {
l.removeEventListener('message', e);
M l.removeEventListener('error', s);
n(l);
}
});
l.addEventListener('error', s);
} else {
r(
new Error(
'Either zip.workerScripts or zip.workerScriptsPath may be set, not both.'
)
);
}
}
function I(e) {
console.error(e);
}
var t;
var n = 'File format is not recognized.';
var r = 'Error while reading zip file.';
M try {
t = new Blob([new DataView(new ArrayBuffer(0))]).size === 0;
} catch (e) {}
i.prototype.append = function (e) {
var t = 0 | this.crc;
var n = this.table;
var r = 0;
for (var i = 0 | e.length; r < i; r++) {
t = (t >>> 8) ^ n[255 & (t ^ e[r])];
}
this.crc = t;
};
i.prototype.get = function () {
return ~this.crc;
};
i.prototype.table = (function () {
var t;
M var n;
var r = [];
for (var e = 0; e < 256; e++) {
n = e;
for (t = 0; t < 8; t++) {
if (1 & n) {
n = (n >>> 1) ^ 3988292384;
} else {
n >>>= 1;
}
}
r[e] = n;
}
return r;
})();
o.prototype.append = function (e, t) {
return e;
};
o.prototype.flush = function () {};
s.prototype = new l();
s.protoMtype.constructor = s;
c.prototype = new l();
c.prototype.constructor = c;
d.prototype = new l();
d.prototype.constructor = d;
u.prototype.getData = function (e) {
e(this.data);
};
p.prototype = new u();
p.prototype.constructor = p;
h.prototype = new u();
h.prototype.constructor = h;
f.prototype = new u();
f.prototype.constructor = f;
var E = {
deflater: ['z-worker.js', 'deflate.js'],
M inflater: ['z-worker.js', 'inflate.js'],
};
e.zip = {
Reader: l,
Writer: u,
BlobReader: d,
Data64URIReader: c,
TextReader: s,
BlobWriter: f,
Data64URIWriter: h,
TextWriter: p,
createReader: function (e, t, n) {
n = n || I;
e.init(function () {
A(e, t, n);
}, n);
},
createWriter: function (e, t, n, r) {
n = n || I;
r =M !!r;
e.init(function () {
C(e, t, n, r);
}, n);
},
useWebWorkers: true,
workerScriptsPath: null,
workerScripts: null,
};
})(o);
(function (e) {
function s() {
function d(e, t, i, o, a, l, d, u, p, h, f) {
var g;
var m;
var y;
var k;
var D;
var S = 0;
var v = i;
do {
n[e[t + S]]++;
M S++;
v--;
} while (v !== 0);
if (n[0] == i) {
d[0] = -1;
u[0] = 0;
return 0;
}
var A = u[0];
for (y = 1; y <= 15 && n[y] === 0; y++) {}
var x = y;
if (A < y) {
A = y;
}
for (v = 15; v !== 0 && n[v] === 0; v--) {}
var b = v;
if (A > v) {
A = v;
}
u[0] = A;
for (var MI = 1 << y; y < v; y++, I <<= 1) {
if ((I -= n[y]) < 0) {
return -3;
}
}
if ((I -= n[v]) < 0) {
return -3;
}
n[v] += I;
c[1] = y = 0;
S = 1;
for (var _ = 2; --v != 0; ) {
c[_] = y += n[S];
_++;
S++;
}
v = 0;
S = 0;
do {
if ((y = e[t + S]) !== 0) {
f[c[y]++] M= v;
}
S++;
} while (++v < i);
i = c[b];
c[0] = v = 0;
S = 0;
var w = -1;
var E = -A;
s[0] = 0;
var C = 0;
for (D = 0; x <= b; x++) {
for (g = n[x]; g-- != 0; ) {
while (x > E + A) {
w++;
D = (D = b - (E += A)) > A ? A : D;
if ((m = 1 << (y = x - E)) > g + 1) {
m -= g + 1;
M _ = x;
if (y < D) {
while (++y < D && !((m <<= 1) <= n[++_])) {
m -= n[_];
}
}
}
D = 1 << y;
if (h[0] + D > 1440) {
return -3;
}
s[w] = C = h[0];
h[0] += D;
if (w === 0) {
d[0] = C;
} else {
c[wM] = v;
r[0] = y;
r[1] = A;
y = v >>> (E - A);
r[2] = C - s[w - 1] - y;
p.set(r, 3 * (s[w - 1] + y));
}
}
r[1] = x - E;
if (S >= i) {
r[0] = 192;
} else if (f[S] < o) {
r[0] = f[S] < 256 ? 0 : 96;
r[2] = f[S++];
} else {
r[0] = l[f[S] - o] + 16 + 64;
M r[2] = a[f[S++] - o];
}
m = 1 << (x - E);
for (y = v >>> E; y < D; y += m) {
p.set(r, 3 * (C + y));
}
for (y = 1 << (x - 1); (v & y) != 0; y >>>= 1) {
v ^= y;
}
v ^= y;
for (k = (1 << E) - 1; (v & k) != c[w]; ) {
w--;
k = (1 << (E -= A)) - 1;
}
}
}
M if (I !== 0 && b != 1) {
return -5;
} else {
return 0;
}
}
function u(i) {
if (!e) {
e = [];
t = [];
n = new Int32Array(16);
r = [];
s = new Int32Array(15);
c = new Int32Array(16);
}
if (t.length < i) {
t = [];
}
for (var o = 0; o < i; o++) {
t[o] = 0;
}
M for (o = 0; o < 16; o++) {
n[o] = 0;
}
for (o = 0; o < 3; o++) {
r[o] = 0;
}
s.set(n.subarray(0, 15), 0);
c.set(n.subarray(0, 16), 0);
}
var e;
var t;
var n;
var r;
var s;
var c;
this.inflate_trees_bits = function (n, r, i, o, a) {
var l;
u(19);
e[0] = 0;
if ((l = d(n, 0, 19, 19, null, null, i, r, oM, e, t)) == -3) {
a.msg = 'oversubscribed dynamic bit lengths tree';
} else if (l == -5 || r[0] === 0) {
a.msg = 'incomplete dynamic bit lengths tree';
l = -3;
}
return l;
};
this.inflate_trees_dynamic = function (n, r, s, c, p, h, f, g, m) {
var b;
u(288);
e[0] = 0;
if ((b = d(s, 0, n, 257, i, o, h, c, g, e, t)) != 0 || c[0] === 0) {
if (b == -3) {
M m.msg = 'oversubscribed literal/length tree';
} else if (b != -4) {
m.msg = 'incomplete literal/length tree';
b = -3;
}
return b;
} else {
u(288);
if (
(b = d(s, n, r, 0, a, l, f, p, g, e, t)) != 0 ||
(p[0] === 0 && n > 257)
) {
if (b == -3) {
m.msg = 'oversubscribed distance tree';
} else if (b == -5M) {
m.msg = 'incomplete distance tree';
b = -3;
} else if (b != -4) {
m.msg = 'empty distance tree with lengths';
b = -3;
}
return b;
} else {
return 0;
}
}
};
}
function c() {
function g(e, n, r, i, o, a, l, s) {
var c;
var d;
var u;
var p;
var b;M
var x;
var A;
var k;
var S;
var g = s.next_in_index;
var m = s.avail_in;
var h = l.bitb;
var f = l.bitk;
var w = (b = l.write) < l.read ? l.read - b - 1 : l.end - b;
var v = t[e];
var y = t[n];
do {
while (f < 20) {
m--;
h |= (255 & s.read_byte(g++)) << f;
f += 8;
}
if ((p = (d = r)[(MS = 3 * ((u = i) + (c = h & v)))]) === 0) {
h >>= d[S + 1];
f -= d[S + 1];
l.window[b++] = d[S + 2];
w--;
}
} while (w >= 258 && m >= 10);
m += x = f >> 3 < (x = s.avail_in - m) ? f >> 3 : x;
g -= x;
f -= x << 3;
l.bitb = h;
l.bitk = f;
s.avail_in = m;
s.total_in += g - s.next_in_index;
s.next_in_index = g;
l.write = b;
M return 0;
}
var e;
var n;
var r;
var i;
var o = 0;
var a = 0;
var l = 0;
var s = 0;
var c = 0;
var d = 0;
var u = 0;
var p = 0;
var h = 0;
var f = 0;
this.init = function (t, o, a, l, s, c) {
e = 0;
u = t;
p = o;
r = a;
h = l;
i = s;
f = c;
n = null;
M };
this.proc = function (m, b, w) {
var v;
var y;
var x;
var A;
var k;
var S;
var C;
var E = 0;
var _ = 0;
var I = 0;
I = b.next_in_index;
A = b.avail_in;
E = m.bitb;
_ = m.bitk;
for (S = (k = m.write) < m.read ? m.read - k - 1 : m.end - k; ; ) {
switch (e) {
case 0:
if (SM >= 258 && A >= 10) {
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
w = g(u, p, r, h, i, f, m, b);
I = b.next_in_index;
A = b.avail_in;
E = m.bitb;
_ = m.bitk;
S = (k = m.write) < m.read ? m.read - k - 1 : m.end - k;
M if (w != 0) {
e = w == 1 ? 7 : 9;
break;
}
}
l = u;
n = r;
a = h;
e = 1;
case 1:
for (v = l; _ < v; ) {
if (A === 0) {
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
M b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
}
w = 0;
A--;
E |= (255 & b.read_byte(I++)) << _;
_ += 8;
}
E >>>= n[(y = 3 * (a + (E & t[v]))) + 1];
_ -= n[y + 1];
if ((x = n[y]) === 0) {
s = n[y + 2];
e = 6;
break;M
}
if ((16 & x) != 0) {
c = 15 & x;
o = n[y + 2];
e = 2;
break;
}
if ((64 & x) == 0) {
l = x;
a = y / 3 + n[y + 2];
break;
}
if ((32 & x) != 0) {
e = 7;
break;
}
e = 9;
b.msg = 'Minvalid literal/length code';
w = -3;
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
case 2:
for (v = c; _ < v; ) {
if (A === 0) {
m.bitb = E;
m.bitk = _;
b.avail_iMn = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
}
w = 0;
A--;
E |= (255 & b.read_byte(I++)) << _;
_ += 8;
}
o += E & t[v];
E >>= v;
_ -= v;
l = p;
n = i;
M a = f;
e = 3;
case 3:
for (v = l; _ < v; ) {
if (A === 0) {
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
}
w = 0;
A--;
M E |= (255 & b.read_byte(I++)) << _;
_ += 8;
}
E >>= n[(y = 3 * (a + (E & t[v]))) + 1];
_ -= n[y + 1];
if ((16 & (x = n[y])) != 0) {
c = 15 & x;
d = n[y + 2];
e = 4;
break;
}
if ((64 & x) == 0) {
l = x;
a = y / 3 + n[y + 2];
break;
M }
e = 9;
b.msg = 'invalid distance code';
w = -3;
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
case 4:
for (v = c; _ < v; ) {
if (A === 0) {
m.bitb = E;
M m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
}
w = 0;
A--;
E |= (255 & b.read_byte(I++)) << _;
_ += 8;
}
d += E & t[v];
E >>= v;
_ -= v;
M e = 5;
case 5:
for (C = k - d; C < 0; ) {
C += m.end;
}
while (o !== 0) {
if (S === 0) {
if (k == m.end && m.read !== 0) {
S = (k = 0) < m.read ? m.read - k - 1 : m.end - k;
}
if (S === 0) {
m.write = k;
w = m.inflate_flush(b, w);
S = (k = m.Mwrite) < m.read ? m.read - k - 1 : m.end - k;
if (k == m.end && m.read !== 0) {
S = (k = 0) < m.read ? m.read - k - 1 : m.end - k;
}
if (S === 0) {
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
M return m.inflate_flush(b, w);
}
}
}
m.window[k++] = m.window[C++];
S--;
if (C == m.end) {
C = 0;
}
o--;
}
e = 0;
break;
case 6:
if (S === 0) {
if (k == m.end && m.read !== 0) {
S = (k =M 0) < m.read ? m.read - k - 1 : m.end - k;
}
if (S === 0) {
m.write = k;
w = m.inflate_flush(b, w);
S = (k = m.write) < m.read ? m.read - k - 1 : m.end - k;
if (k == m.end && m.read !== 0) {
S = (k = 0) < m.read ? m.read - k - 1 : m.end - k;
}
if (S === 0) {
m.bitb = E;
m.bitMk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
}
}
}
w = 0;
m.window[k++] = s;
S--;
e = 0;
break;
case 7:
if (_ > 7) {
_ M-= 8;
A++;
I--;
}
m.write = k;
w = m.inflate_flush(b, w);
S = (k = m.write) < m.read ? m.read - k - 1 : m.end - k;
if (m.read != m.write) {
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
rMeturn m.inflate_flush(b, w);
}
e = 8;
case 8:
w = 1;
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
case 9:
w = -3;
m.bitb = E;
m.bitk = _;
b.avMail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
default:
w = -2;
m.bitb = E;
m.bitk = _;
b.avail_in = A;
b.total_in += I - b.next_in_index;
b.next_in_index = I;
m.write = k;
return m.inflate_flush(b, w);
}
M }
};
this.free = function () {};
}
function u(e, n) {
var r;
var i = this;
var o = 0;
var a = 0;
var l = 0;
var u = 0;
var p = [0];
var h = [0];
var f = new c();
var g = 0;
var m = new Int32Array(4320);
var b = new s();
i.bitk = 0;
i.bitb = 0;
i.window = new Uint8Array(n);
i.end = n;
i.read = 0;
Mi.write = 0;
i.reset = function (e, t) {
if (t) {
t[0] = 0;
}
if (o == 6) {
f.free(e);
}
o = 0;
i.bitk = 0;
i.bitb = 0;
i.read = i.write = 0;
};
i.reset(e, null);
i.inflate_flush = function (e, t) {
var n;
var o;
var r = e.next_out_index;
if (
(n = ((o = i.read) <= i.write ? i.write : i.end) -M o) >
e.avail_out
) {
n = e.avail_out;
}
if (n !== 0 && t == -5) {
t = 0;
}
e.avail_out -= n;
e.total_out += n;
e.next_out.set(i.window.subarray(o, o + n), r);
r += n;
if ((o += n) == i.end) {
o = 0;
if (i.write == i.end) {
i.write = 0;
}
if ((n = i.write - o) > e.avail_out) {
n = Me.avail_out;
}
if (n !== 0 && t == -5) {
t = 0;
}
e.avail_out -= n;
e.total_out += n;
e.next_out.set(i.window.subarray(o, o + n), r);
r += n;
o += n;
}
e.next_out_index = r;
i.read = o;
return t;
};
i.proc = function (e, n) {
var c;
var w;
var v;
var y;
var x;
M var A;
var k;
var S;
y = e.next_in_index;
x = e.avail_in;
w = i.bitb;
v = i.bitk;
for (k = (A = i.write) < i.read ? i.read - A - 1 : i.end - A; ; ) {
switch (o) {
case 0:
while (v < 3) {
if (x === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_iMndex;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
n = 0;
x--;
w |= (255 & e.read_byte(y++)) << v;
v += 8;
}
switch (((g = 1 & (c = 7 & w)), c >>> 1)) {
case 0:
w >>>= 3;
w >>>= c = 7 & (v -= 3);
v -= c;
M o = 1;
break;
case 1:
var C = [];
var E = [];
var _ = [[]];
var I = [[]];
s.inflate_trees_fixed(C, E, _, I);
f.init(C[0], E[0], _[0], 0, I[0], 0);
w >>>= 3;
v -= 3;
o = 6;
break;
case 2:
w >>>= 3;
M v -= 3;
o = 3;
break;
case 3:
w >>>= 3;
v -= 3;
o = 9;
e.msg = 'invalid block type';
n = -3;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.writeM = A;
return i.inflate_flush(e, n);
}
break;
case 1:
while (v < 32) {
if (x === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
M n = 0;
x--;
w |= (255 & e.read_byte(y++)) << v;
v += 8;
}
if (((~w >>> 16) & 65535) != (65535 & w)) {
o = 9;
e.msg = 'invalid stored block lengths';
n = -3;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;M
i.write = A;
return i.inflate_flush(e, n);
}
a = 65535 & w;
w = v = 0;
o = a !== 0 ? 2 : g !== 0 ? 7 : 0;
break;
case 2:
if (x === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.wMrite = A;
return i.inflate_flush(e, n);
}
if (k === 0) {
if (A == i.end && i.read !== 0) {
k = (A = 0) < i.read ? i.read - A - 1 : i.end - A;
}
if (k === 0) {
i.write = A;
n = i.inflate_flush(e, n);
k = (A = i.write) < i.read ? i.read - A - 1 : i.end - A;
if (A == i.end && i.read !== 0) {
M k = (A = 0) < i.read ? i.read - A - 1 : i.end - A;
}
if (k === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
}
}
M n = 0;
if ((c = a) > x) {
c = x;
}
if (c > k) {
c = k;
}
i.window.set(e.read_buf(y, c), A);
y += c;
x -= c;
A += c;
k -= c;
if ((a -= c) != 0) {
break;
}
o = g !== 0 ? 7 : 0;
break;
case 3:
M while (v < 14) {
if (x === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
n = 0;
x--;
w |= (255 & e.read_byte(y++)) << v;
v += 8;
M }
l = c = 16383 & w;
if ((31 & c) > 29 || ((c >> 5) & 31) > 29) {
o = 9;
e.msg = 'too many length or distance symbols';
n = -3;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
M }
c = 258 + (31 & c) + ((c >> 5) & 31);
if (!r || r.length < c) {
r = [];
} else {
for (S = 0; S < c; S++) {
r[S] = 0;
}
}
w >>>= 14;
v -= 14;
u = 0;
o = 4;
case 4:
while (u < 4 + (l >>> 10)) {
while (v < 3) {
if (xM === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
n = 0;
x--;
w |= (255 & e.read_byte(y++)) << v;
v += 8;
}
M r[d[u++]] = 7 & w;
w >>>= 3;
v -= 3;
}
while (u < 19) {
r[d[u++]] = 0;
}
p[0] = 7;
if ((c = b.inflate_trees_bits(r, p, h, m, e)) != 0) {
if ((n = c) == -3) {
r = null;
o = 9;
}
i.bitb = w;
i.bitk = v;
e.avail_in = x;
M e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
u = 0;
o = 5;
case 5:
while (!(u >= 258 + (31 & (c = l)) + ((c >> 5) & 31))) {
var D;
var B;
for (c = p[0]; v < c; ) {
if (x === 0) {
i.bitb = w;
M i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
n = 0;
x--;
w |= (255 & e.read_byte(y++)) << v;
v += 8;
}
c = m[3 * (h[0] + (w & t[c])) + 1];
M if ((B = m[3 * (h[0] + (w & t[c])) + 2]) < 16) {
w >>>= c;
v -= c;
r[u++] = B;
} else {
S = B == 18 ? 7 : B - 14;
for (D = B == 18 ? 11 : 3; v < c + S; ) {
if (x === 0) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
M e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
n = 0;
x--;
w |= (255 & e.read_byte(y++)) << v;
v += 8;
}
v -= c;
D += (w >>>= c) & t[S];
w >>>= S;
v -= S;
if (
M (S = u) + D > 258 + (31 & (c = l)) + ((c >> 5) & 31) ||
(B == 16 && S < 1)
) {
r = null;
o = 9;
e.msg = 'invalid bit length repeat';
n = -3;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
M i.write = A;
return i.inflate_flush(e, n);
}
B = B == 16 ? r[S - 1] : 0;
do {
r[S++] = B;
} while (--D != 0);
u = S;
}
}
h[0] = -1;
var M = [];
var T = [];
var R = [];
var G = [];
M[0] = 9;
M T[0] = 6;
c = l;
if (
(c = b.inflate_trees_dynamic(
257 + (31 & c),
1 + ((c >> 5) & 31),
r,
M,
T,
R,
G,
m,
e
)) != 0
) {
if (c == -3) {
r = null;
o = 9;
M }
n = c;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
f.init(M[0], T[0], m, R[0], m, G[0]);
o = 6;
case 6:
i.bitb = w;
i.bitk = v;
M e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
if ((n = f.proc(i, e, n)) != 1) {
return i.inflate_flush(e, n);
}
n = 0;
f.free(e);
y = e.next_in_index;
x = e.avail_in;
w = i.bitb;
v = i.bitk;
k = (A = i.write) < i.read ? i.read - A - 1 : Mi.end - A;
if (g === 0) {
o = 0;
break;
}
o = 7;
case 7:
i.write = A;
n = i.inflate_flush(e, n);
k = (A = i.write) < i.read ? i.read - A - 1 : i.end - A;
if (i.read != i.write) {
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
M e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
}
o = 8;
case 8:
n = 1;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
case 9:
M n = -3;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
i.write = A;
return i.inflate_flush(e, n);
default:
n = -2;
i.bitb = w;
i.bitk = v;
e.avail_in = x;
e.total_in += y - e.next_in_index;
e.next_in_index = y;
M i.write = A;
return i.inflate_flush(e, n);
}
}
};
i.free = function (e) {
i.reset(e, null);
i.window = null;
m = null;
};
i.set_dictionary = function (e, t, n) {
i.window.set(e.subarray(t, t + n), 0);
i.read = i.write = n;
};
i.sync_point = function () {
if (o == 1) {
return 1;
} else {
return M0;
}
};
}
function h() {
function t(e) {
if (e && e.istate) {
e.total_in = e.total_out = 0;
e.msg = null;
e.istate.mode = 7;
e.istate.blocks.reset(e, null);
return 0;
} else {
return -2;
}
}
var e = this;
e.mode = 0;
e.method = 0;
e.was = [0];
e.need = 0;
e.marker = 0;
e.Mwbits = 0;
e.inflateEnd = function (t) {
if (e.blocks) {
e.blocks.free(t);
}
e.blocks = null;
return 0;
};
e.inflateInit = function (n, r) {
n.msg = null;
e.blocks = null;
if (r < 8 || r > 15) {
e.inflateEnd(n);
return -2;
} else {
e.wbits = r;
n.istate.blocks = new u(n, 1 << r);
t(n);
return 0;M
}
};
e.inflate = function (e, t) {
var n;
var r;
if (!e || !e.istate || !e.next_in) {
return -2;
}
t = t == 4 ? -5 : 0;
for (n = -5; ; ) {
switch (e.istate.mode) {
case 0:
if (e.avail_in === 0) {
return n;
}
n = t;
e.avail_in--;
e.total_in++;
Mif (
(15 & (e.istate.method = e.read_byte(e.next_in_index++))) !=
8
) {
e.istate.mode = 13;
e.msg = 'unknown compression method';
e.istate.marker = 5;
break;
}
if (8 + (e.istate.method >> 4) > e.istate.wbits) {
e.istate.mode = 13;
e.msg = 'invalid window size';
e.istate.marker = 5;
M break;
}
e.istate.mode = 1;
case 1:
if (e.avail_in === 0) {
return n;
}
n = t;
e.avail_in--;
e.total_in++;
r = 255 & e.read_byte(e.next_in_index++);
if (((e.istate.method << 8) + r) % 31 != 0) {
e.istate.mode = 13;
e.msg = 'incorrect header check';
M e.istate.marker = 5;
break;
}
if ((32 & r) == 0) {
e.istate.mode = 7;
break;
}
e.istate.mode = 2;
case 2:
if (e.avail_in === 0) {
return n;
}
n = t;
e.avail_in--;
e.total_in++;
e.istate.need =
((255 & e.read_byte(e.next_Min_index++)) << 24) & 4278190080;
e.istate.mode = 3;
case 3:
if (e.avail_in === 0) {
return n;
}
n = t;
e.avail_in--;
e.total_in++;
e.istate.need +=
((255 & e.read_byte(e.next_in_index++)) << 16) & 16711680;
e.istate.mode = 4;
case 4:
if (e.avail_in === 0) {
return Mn;
}
n = t;
e.avail_in--;
e.total_in++;
e.istate.need +=
((255 & e.read_byte(e.next_in_index++)) << 8) & 65280;
e.istate.mode = 5;
case 5:
if (e.avail_in === 0) {
return n;
} else {
n = t;
e.avail_in--;
e.total_in++;
e.istate.need += 255 & Me.read_byte(e.next_in_index++);
e.istate.mode = 6;
return 2;
}
case 6:
e.istate.mode = 13;
e.msg = 'need dictionary';
e.istate.marker = 0;
return -2;
case 7:
if ((n = e.istate.blocks.proc(e, n)) == -3) {
e.istate.mode = 13;
e.istate.marker = 0;
break;
}
M if (n == 0) {
n = t;
}
if (n != 1) {
return n;
}
n = t;
e.istate.blocks.reset(e, e.istate.was);
e.istate.mode = 12;
case 12:
return 1;
case 13:
return -3;
default:
return -2;
}
}
};
e.inflateSetDictionary = functioMn (e, t, n) {
var r = 0;
var i = n;
if (e && e.istate && e.istate.mode == 6) {
if (i >= 1 << e.istate.wbits) {
r = n - (i = (1 << e.istate.wbits) - 1);
}
e.istate.blocks.set_dictionary(t, r, i);
e.istate.mode = 7;
return 0;
} else {
return -2;
}
};
e.inflateSync = function (e) {
var n;
var o;
var a;
M if (!e || !e.istate) {
return -2;
}
if (e.istate.mode != 13) {
e.istate.mode = 13;
e.istate.marker = 0;
}
if ((n = e.avail_in) === 0) {
return -5;
}
var r = e.next_in_index;
for (var i = e.istate.marker; n !== 0 && i < 4; ) {
if (e.read_byte(r) == p[i]) {
i++;
} else {
i = e.read_byte(r) !== 0 ? 0 : 4 - i;
M }
r++;
n--;
}
e.total_in += r - e.next_in_index;
e.next_in_index = r;
e.avail_in = n;
e.istate.marker = i;
if (i == 4) {
o = e.total_in;
a = e.total_out;
t(e);
e.total_in = o;
e.total_out = a;
e.istate.mode = 7;
return 0;
} else {
return -3;
}
};
e.inflMateSyncPoint = function (e) {
if (e && e.istate && e.istate.blocks) {
return e.istate.blocks.sync_point();
} else {
return -2;
}
};
}
function f() {}
var t = [
0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383,
32767, 65535,
];
var n = [
96, 7, 256, 0, 8, 80, 0, 8, 16, 84, 8, 115, 82, 7, 31, 0, 8, 112, 0,
8, 48, 0, 9, 192, 80, 7, 10, 0, 8, 96, 0M, 8, 32, 0, 9, 160, 0, 8, 0,
0, 8, 128, 0, 8, 64, 0, 9, 224, 80, 7, 6, 0, 8, 88, 0, 8, 24, 0, 9,
144, 83, 7, 59, 0, 8, 120, 0, 8, 56, 0, 9, 208, 81, 7, 17, 0, 8, 104,
0, 8, 40, 0, 9, 176, 0, 8, 8, 0, 8, 136, 0, 8, 72, 0, 9, 240, 80, 7,
4, 0, 8, 84, 0, 8, 20, 85, 8, 227, 83, 7, 43, 0, 8, 116, 0, 8, 52, 0,
9, 200, 81, 7, 13, 0, 8, 100, 0, 8, 36, 0, 9, 168, 0, 8, 4, 0, 8, 132,
0, 8, 68, 0, 9, 232, 80, 7, 8, 0, 8, 92, 0, 8, 28, 0, 9, 152, 84, 7,
83, M0, 8, 124, 0, 8, 60, 0, 9, 216, 82, 7, 23, 0, 8, 108, 0, 8, 44, 0,
9, 184, 0, 8, 12, 0, 8, 140, 0, 8, 76, 0, 9, 248, 80, 7, 3, 0, 8, 82,
0, 8, 18, 85, 8, 163, 83, 7, 35, 0, 8, 114, 0, 8, 50, 0, 9, 196, 81,
7, 11, 0, 8, 98, 0, 8, 34, 0, 9, 164, 0, 8, 2, 0, 8, 130, 0, 8, 66, 0,
9, 228, 80, 7, 7, 0, 8, 90, 0, 8, 26, 0, 9, 148, 84, 7, 67, 0, 8, 122,
0, 8, 58, 0, 9, 212, 82, 7, 19, 0, 8, 106, 0, 8, 42, 0, 9, 180, 0, 8,
10, 0, 8, 138, 0, 8, 74, 0, 9, 244, 80, 7,M 5, 0, 8, 86, 0, 8, 22, 192,
8, 0, 83, 7, 51, 0, 8, 118, 0, 8, 54, 0, 9, 204, 81, 7, 15, 0, 8, 102,
0, 8, 38, 0, 9, 172, 0, 8, 6, 0, 8, 134, 0, 8, 70, 0, 9, 236, 80, 7,
9, 0, 8, 94, 0, 8, 30, 0, 9, 156, 84, 7, 99, 0, 8, 126, 0, 8, 62, 0,
9, 220, 82, 7, 27, 0, 8, 110, 0, 8, 46, 0, 9, 188, 0, 8, 14, 0, 8,
142, 0, 8, 78, 0, 9, 252, 96, 7, 256, 0, 8, 81, 0, 8, 17, 85, 8, 131,
82, 7, 31, 0, 8, 113, 0, 8, 49, 0, 9, 194, 80, 7, 10, 0, 8, 97, 0, 8,
33, 0M, 9, 162, 0, 8, 1, 0, 8, 129, 0, 8, 65, 0, 9, 226, 80, 7, 6, 0,
8, 89, 0, 8, 25, 0, 9, 146, 83, 7, 59, 0, 8, 121, 0, 8, 57, 0, 9, 210,
81, 7, 17, 0, 8, 105, 0, 8, 41, 0, 9, 178, 0, 8, 9, 0, 8, 137, 0, 8,
73, 0, 9, 242, 80, 7, 4, 0, 8, 85, 0, 8, 21, 80, 8, 258, 83, 7, 43, 0,
8, 117, 0, 8, 53, 0, 9, 202, 81, 7, 13, 0, 8, 101, 0, 8, 37, 0, 9,
170, 0, 8, 5, 0, 8, 133, 0, 8, 69, 0, 9, 234, 80, 7, 8, 0, 8, 93, 0,
8, 29, 0, 9, 154, 84, 7, 83, 0, 8, 125, 0, 8, 61,M 0, 9, 218, 82, 7,
23, 0, 8, 109, 0, 8, 45, 0, 9, 186, 0, 8, 13, 0, 8, 141, 0, 8, 77, 0,
9, 250, 80, 7, 3, 0, 8, 83, 0, 8, 19, 85, 8, 195, 83, 7, 35, 0, 8,
115, 0, 8, 51, 0, 9, 198, 81, 7, 11, 0, 8, 99, 0, 8, 35, 0, 9, 166, 0,
8, 3, 0, 8, 131, 0, 8, 67, 0, 9, 230, 80, 7, 7, 0, 8, 91, 0, 8, 27, 0,
9, 150, 84, 7, 67, 0, 8, 123, 0, 8, 59, 0, 9, 214, 82, 7, 19, 0, 8,
107, 0, 8, 43, 0, 9, 182, 0, 8, 11, 0, 8, 139, 0, 8, 75, 0, 9, 246,
80, 7, 5, 0, 8, M87, 0, 8, 23, 192, 8, 0, 83, 7, 51, 0, 8, 119, 0, 8,
55, 0, 9, 206, 81, 7, 15, 0, 8, 103, 0, 8, 39, 0, 9, 174, 0, 8, 7, 0,
8, 135, 0, 8, 71, 0, 9, 238, 80, 7, 9, 0, 8, 95, 0, 8, 31, 0, 9, 158,
84, 7, 99, 0, 8, 127, 0, 8, 63, 0, 9, 222, 82, 7, 27, 0, 8, 111, 0, 8,
47, 0, 9, 190, 0, 8, 15, 0, 8, 143, 0, 8, 79, 0, 9, 254, 96, 7, 256,
0, 8, 80, 0, 8, 16, 84, 8, 115, 82, 7, 31, 0, 8, 112, 0, 8, 48, 0, 9,
193, 80, 7, 10, 0, 8, 96, 0, 8, 32, 0, 9, 161, 0, 8, 0, 0M, 8, 128, 0,
8, 64, 0, 9, 225, 80, 7, 6, 0, 8, 88, 0, 8, 24, 0, 9, 145, 83, 7, 59,
0, 8, 120, 0, 8, 56, 0, 9, 209, 81, 7, 17, 0, 8, 104, 0, 8, 40, 0, 9,
177, 0, 8, 8, 0, 8, 136, 0, 8, 72, 0, 9, 241, 80, 7, 4, 0, 8, 84, 0,
8, 20, 85, 8, 227, 83, 7, 43, 0, 8, 116, 0, 8, 52, 0, 9, 201, 81, 7,
13, 0, 8, 100, 0, 8, 36, 0, 9, 169, 0, 8, 4, 0, 8, 132, 0, 8, 68, 0,
9, 233, 80, 7, 8, 0, 8, 92, 0, 8, 28, 0, 9, 153, 84, 7, 83, 0, 8, 124,
0, 8, 60, 0, 9, 217M, 82, 7, 23, 0, 8, 108, 0, 8, 44, 0, 9, 185, 0, 8,
12, 0, 8, 140, 0, 8, 76, 0, 9, 249, 80, 7, 3, 0, 8, 82, 0, 8, 18, 85,
8, 163, 83, 7, 35, 0, 8, 114, 0, 8, 50, 0, 9, 197, 81, 7, 11, 0, 8,
98, 0, 8, 34, 0, 9, 165, 0, 8, 2, 0, 8, 130, 0, 8, 66, 0, 9, 229, 80,
7, 7, 0, 8, 90, 0, 8, 26, 0, 9, 149, 84, 7, 67, 0, 8, 122, 0, 8, 58,
0, 9, 213, 82, 7, 19, 0, 8, 106, 0, 8, 42, 0, 9, 181, 0, 8, 10, 0, 8,
138, 0, 8, 74, 0, 9, 245, 80, 7, 5, 0, 8, 86, 0, 8, 22, 192, 8M, 0, 83,
7, 51, 0, 8, 118, 0, 8, 54, 0, 9, 205, 81, 7, 15, 0, 8, 102, 0, 8, 38,
0, 9, 173, 0, 8, 6, 0, 8, 134, 0, 8, 70, 0, 9, 237, 80, 7, 9, 0, 8,
94, 0, 8, 30, 0, 9, 157, 84, 7, 99, 0, 8, 126, 0, 8, 62, 0, 9, 221,
82, 7, 27, 0, 8, 110, 0, 8, 46, 0, 9, 189, 0, 8, 14, 0, 8, 142, 0, 8,
78, 0, 9, 253, 96, 7, 256, 0, 8, 81, 0, 8, 17, 85, 8, 131, 82, 7, 31,
0, 8, 113, 0, 8, 49, 0, 9, 195, 80, 7, 10, 0, 8, 97, 0, 8, 33, 0, 9,
163, 0, 8, 1, 0, 8, 129, M0, 8, 65, 0, 9, 227, 80, 7, 6, 0, 8, 89, 0,
8, 25, 0, 9, 147, 83, 7, 59, 0, 8, 121, 0, 8, 57, 0, 9, 211, 81, 7,
17, 0, 8, 105, 0, 8, 41, 0, 9, 179, 0, 8, 9, 0, 8, 137, 0, 8, 73, 0,
9, 243, 80, 7, 4, 0, 8, 85, 0, 8, 21, 80, 8, 258, 83, 7, 43, 0, 8,
117, 0, 8, 53, 0, 9, 203, 81, 7, 13, 0, 8, 101, 0, 8, 37, 0, 9, 171,
0, 8, 5, 0, 8, 133, 0, 8, 69, 0, 9, 235, 80, 7, 8, 0, 8, 93, 0, 8, 29,
0, 9, 155, 84, 7, 83, 0, 8, 125, 0, 8, 61, 0, 9, 219, 82, 7, 23, 0, 8,
M 109, 0, 8, 45, 0, 9, 187, 0, 8, 13, 0, 8, 141, 0, 8, 77, 0, 9, 251,
80, 7, 3, 0, 8, 83, 0, 8, 19, 85, 8, 195, 83, 7, 35, 0, 8, 115, 0, 8,
51, 0, 9, 199, 81, 7, 11, 0, 8, 99, 0, 8, 35, 0, 9, 167, 0, 8, 3, 0,
8, 131, 0, 8, 67, 0, 9, 231, 80, 7, 7, 0, 8, 91, 0, 8, 27, 0, 9, 151,
84, 7, 67, 0, 8, 123, 0, 8, 59, 0, 9, 215, 82, 7, 19, 0, 8, 107, 0, 8,
43, 0, 9, 183, 0, 8, 11, 0, 8, 139, 0, 8, 75, 0, 9, 247, 80, 7, 5, 0,
8, 87, 0, 8, 23, 192, 8, 0, 83, 7M, 51, 0, 8, 119, 0, 8, 55, 0, 9, 207,
81, 7, 15, 0, 8, 103, 0, 8, 39, 0, 9, 175, 0, 8, 7, 0, 8, 135, 0, 8,
71, 0, 9, 239, 80, 7, 9, 0, 8, 95, 0, 8, 31, 0, 9, 159, 84, 7, 99, 0,
8, 127, 0, 8, 63, 0, 9, 223, 82, 7, 27, 0, 8, 111, 0, 8, 47, 0, 9,
191, 0, 8, 15, 0, 8, 143, 0, 8, 79, 0, 9, 255,
];
var r = [
80, 5, 1, 87, 5, 257, 83, 5, 17, 91, 5, 4097, 81, 5, 5, 89, 5, 1025,
85, 5, 65, 93, 5, 16385, 80, 5, 3, 88, 5, 513, 84, 5, 33, 92, 5, 8193,
M 82, 5, 9, 90, 5, 2049, 86, 5, 129, 192, 5, 24577, 80, 5, 2, 87, 5,
385, 83, 5, 25, 91, 5, 6145, 81, 5, 7, 89, 5, 1537, 85, 5, 97, 93, 5,
24577, 80, 5, 4, 88, 5, 769, 84, 5, 49, 92, 5, 12289, 82, 5, 13, 90,
5, 3073, 86, 5, 193, 192, 5, 24577,
];
var i = [
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,
];
var o = [
0, 0, 0, 0, 0, 0, 0, 0, 1, 1,M 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4,
4, 5, 5, 5, 5, 0, 112, 112,
];
var a = [
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,
];
var l = [
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,
];
s.inflate_trees_fixed = function (e, t, i, o) {
e[0] = 9;
M t[0] = 5;
i[0] = n;
o[0] = r;
return 0;
};
var d = [
16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15,
];
var p = [0, 0, 255, 255];
f.prototype = {
inflateInit: function (e) {
this.istate = new h();
if (!e) {
e = 15;
}
return this.istate.inflateInit(this, e);
},
inflate: function (e) {
if (this.istate) {
M return this.istate.inflate(this, e);
} else {
return -2;
}
},
inflateEnd: function () {
if (!this.istate) {
return -2;
}
var e = this.istate.inflateEnd(this);
this.istate = null;
return e;
},
inflateSync: function () {
if (this.istate) {
return this.istate.inflateSync(this);
} else {
return -2;
}
M },
inflateSetDictionary: function (e, t) {
if (this.istate) {
return this.istate.inflateSetDictionary(this, e, t);
} else {
return -2;
}
},
read_byte: function (e) {
return this.next_in.subarray(e, e + 1)[0];
},
read_buf: function (e, t) {
return this.next_in.subarray(e, e + t);
},
};
var g = e.zip || e;
g.Inflater = g._jzlib_Inflater = fuMnction () {
var e = new f();
var t = new Uint8Array(512);
var n = false;
e.inflateInit();
e.next_out = t;
this.append = function (r, i) {
var o;
var a;
var l = [];
var s = 0;
var c = 0;
var d = 0;
if (r.length !== 0) {
e.next_in_index = 0;
e.next_in = r;
e.avail_in = r.length;
do {
e.next_out_index = 0;M
e.avail_out = 512;
if (e.avail_in === 0 && !n) {
e.next_in_index = 0;
n = true;
}
o = e.inflate(0);
if (n && o === -5) {
if (e.avail_in !== 0) {
throw new Error('inflating: bad input');
}
} else if (o !== 0 && o !== 1) {
throw new Error('inflating: ' + e.msg);
}
if ((n || o === 1)M && e.avail_in === r.length) {
throw new Error('inflating: bad input');
}
if (e.next_out_index) {
if (e.next_out_index === 512) {
l.push(new Uint8Array(t));
} else {
l.push(new Uint8Array(t.subarray(0, e.next_out_index)));
}
}
d += e.next_out_index;
if (i && e.next_in_index > 0 && e.next_in_index != s) {
i(e.Mnext_in_index);
s = e.next_in_index;
}
} while (e.avail_in > 0 || e.avail_out === 0);
a = new Uint8Array(d);
l.forEach(function (e) {
a.set(e, c);
c += e.length;
});
return a;
}
};
this.flush = function () {
e.inflateEnd();
};
};
})(o);
var a = o.zip;
var l = {};
var s = null;
c.prototype = M{
getTopic: function () {
return this.topic;
},
onEvent: function (e) {},
};
var p = null;
a.useWebWorkers = false;
d(
new c('siteInit', function (e) {
p = e.errorHandler;
})
);
if (!Object.create) {
Object.create = function (e) {
function t() {}
t.prototype = e;
return new t();
};
}
if (
'ontouchstart' in window ||
navigator.maxTouchPoints > 0 ||
M navigator.msMaxTouchPoints > 0
) {
/android|blackberry|iemobile|ipad|iphone|ipod|opera mini|webos/i.test(
navigator.userAgent
);
}
if (/ipad|iphone|ipod/i.test(navigator.userAgent)) {
window.MSStream;
}
if (!String.prototype.endsWith) {
String.prototype.endsWith = function (e, t) {
if (t === void 0 || t > this.length) {
t = this.length;
}
return this.substring(t - e.length, t) === e;
};
M }
var f = h;
var g = null;
var m = 'http';
var b = window.location.hostname.toLowerCase();
if (!String.prototype.endsWith) {
String.prototype.endsWith = function (e, t) {
if (t === void 0 || t > this.length) {
t = this.length;
}
return this.substring(t - e.length, t) === e;
};
}
(function () {
switch (b) {
case atob('cmF6MHJlZC5naXRodWIuaW8'):
g = atob('Oi8vdHdpdGNoYXN5bHVtLmNvbS94MLw');
m += 's';
break;
case atob('bG9jYWxob3N0'):
g = atob('Oi8vbG9jYWxob3N0');
}
})();
var y = null;
var x = null;
d(
new c('siteInit', function (e) {
x = e.loadFromUrl;
y = e.errorHandler;
})
);
var k = null;
var S = null;
var C = null;
var E = 0;
var _ = Date.now();
var B = function (e) {
D();
k.innerHTML = e;
k.onclick = function () {M
I(-1);
};
k.classList.add('show');
k.classList.remove('hide');
_ = Date.now();
return ++E;
};
var M = I;
var T = function (e) {
I(-1);
C.innerHTML = e;
S.classList.add('show');
S.classList.remove('hide');
};
d(
new c('siteInit', function () {
var e = 'js7800__fullscreen-container';
var t = document.getElementById(e);
(k = document.createElement('div')).id = 'snackbarM';
k.classList.add('message');
t.appendChild(k);
(S = document.createElement('div')).id = 'errormsg';
S.classList.add('message');
S.onclick = D;
t.appendChild(S);
var n = document.createElement('span');
n.classList.add('closebtn');
n.onclick = D;
S.appendChild(n);
n.innerHTML = '×';
C = document.createElement('span');
S.appendChild(C);
})
);
d(
new c('siMteInit', function (e) {
(function (e) {
var t = e.romList;
var n = e.loadFromUrl;
var r = e.startEmulation;
var i = e.js7800;
var o = false;
R(
'select-remote-file',
'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LMnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZlcnNpb249IjEuMSIgIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4NCiAgIDxwYXRoIGZpbGw9IiNmZmZmZmYiIGQ9Ik0xNywxM0wxMiwxOEw3LDEzSDEwVjlIMTRWMTNNMTkuMzUsMTAuMDNDMTguNjcsNi41OSAxNS42NCw0IDEyLDRDOS4xMSw0IDYuNiw1LjY0IDUuMzUsOC4wM0MyLjM0LDguMzYgMCwxMC45IDAsMTRBNiw2IDAgMCwwIDYsMjBIMTlBNSw1IDAgMCwwIDI0LDE1QzI0LDEyLjM2IDIxLjk1LDEwLjIyIDE5LjM1LDEwLjAzWiIgLz4NCjwvc3ZnPg==',
'Select Remote File',
true,
M function () {
if (!o) {
o = true;
var e = i.ControlsBar.pauseButton;
var t = e.getValue();
if (!t) {
e.setValue(true);
e.onClick();
}
setTimeout(function () {
var r = prompt(
'Enter the URL of a remote Cartridge file or Cartridge list'
);
if (r) {
M var i = r.trim();
if (i.length > 0) {
n(i);
}
}
if (!t) {
e.setValue(false);
e.onClick();
}
o = false;
}, 200);
}
}
);
var a = R(
'select-local-file',
'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTMgiPz4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHZlcnNpb249IjEuMSIgIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4NCiAgIDxwYXRoIGZpbGw9IiNmZmZmZmYiIGQ9Ik0xOSwyMEg0QzIuODksMjAgMiwxOS4xIDIsMThWNkMyLDQuODkgMi44OSw0IDQsNEgxMEwxMiw2SDE5QTIsMiAwIDAsMSAyMSw4SDIxTDQsOFYxOEw2LjE0LDEwSDIzLjIxTDIwLjkzLDE4LjVDMjAuNyMwxOS4zNyAxOS45MiwyMCAxOSwyMFoiIC8+DQo8L3N2Zz4=',
'Select Local File',
false,
null
).label;
var l = document.createElement('input');
a.className = 'controls-button__upload';
a.appendChild(l);
var s = function () {
l.value = null;
};
a.onclick = s;
l.onclick = s;
l.setAttribute('type', 'file');
l.setAttribute('accept', '.a78, .bin, .zip, .json'M);
l.addEventListener(
'change',
function () {
var e = this.files;
for (var n = 0; n < e.length; n++) {
var i = e[n];
if (!t.loadListFromFile(i)) {
r(i);
}
break;
}
},
false
);
})(e);
})
);
var G = null;
var L = null;
var Q = null;
d(
new c('siMteInit', function (e) {
function n(e) {
e.preventDefault();
}
G = e.loadFromUrl;
L = e.romList;
Q = e.startEmulation;
var t = document.body;
t.addEventListener('drop', z);
t.addEventListener('dragdrop', z);
t.addEventListener('dragenter', n);
t.addEventListener('dragover', n);
})
);
var F = {};
var N = 'fullscreen';
var U = null;
var K = null;
var Y = null;
M var O = null;
var j = null;
var P = null;
var H = null;
var W = false;
d(
new c('siteInit', function (e) {
U = e.js7800;
K = U.Keyboard;
Y = U.Video;
O = U.Region;
H = U.Cartridge;
P = e.HighScore;
j = U.Main;
(function () {
try {
localStorage.setItem('test', 'test');
localStorage.removeItem('test');
W = true;
console.log('Local sMtorage is available.');
} catch (e) {
console.log('Local storage is not available.');
}
})();
})
);
var X = f;
var $ = 2048;
var ee = null;
var te = null;
var ne = false;
var re = null;
var ie = null;
var oe = null;
var ae = 0;
var le = null;
var se = null;
var ce = null;
var de = true;
var ue = de;
var pe = true;
var he = true;
var fe = new Array($);
M d(
new c('siteInit', function (e) {
ke(e);
})
);
var Ge = h;
Le.prototype = {
createElement: function () {
this.el = this.doCreateElement();
var e = this.getClass();
if (e) {
this.el.className = e;
}
return this.el;
},
getClass: function () {
return null;
},
getElement: function () {
return this.el;
},
doCreateElement: function () {M
return null;
},
};
Qe.prototype = Object.create(Le.prototype);
Ge(Qe.prototype, {
getClass: function () {
return 'js7800__controls-button';
},
doCreateElement: function () {
var e = document.createElement('button');
var t = this;
e.onclick = function (e) {
t.onClick(e);
};
e.onmousedown = function (e) {
t.onDown(e);
};
e.onmouseup = function (e) {
M t.onUp(e);
};
var n = document.createTextNode(this.text);
e.appendChild(n);
if (this.title) {
e.setAttribute('title', this.title);
}
return e;
},
onClick: function (e) {},
onDown: function (e) {},
onUp: function (e) {},
});
ze.prototype = Object.create(Le.prototype);
Ge(ze.prototype, {
getClass: function () {
return 'js7800__controls-switch';
},
doCreateEMlement: function () {
var e = document.createElement('label');
e.setAttribute('title', this.title);
var t = document.createElement('input');
this.cb = t;
t.setAttribute('type', 'checkbox');
var n = this;
t.onclick = function (e) {
n.onClick(e);
};
e.appendChild(t);
var r = document.createElement('span');
r.className = this.getClass() + '-slider';
e.appendChild(r);
return e;
M },
setValue(e) {
this.cb.checked = e;
},
getValue() {
return this.cb.checked;
},
onClick: function (e) {},
});
var Fe = Le;
var Ne = Qe;
var Ue = ze;
var Ke = f;
var Ye = null;
Oe.prototype = Object.create(Ne.prototype);
Ke(Oe.prototype, {
getClass: function () {
return 'dialog-button';
},
});
je.prototype = Object.create(Ue.prototype);
Ke(je.prototype, {
M getClass: function () {
return 'dialog-switch';
},
});
Pe.prototype = Object.create(Fe.prototype);
Ke(Pe.prototype, {
select: null,
getClass: function () {
return 'dialog-select';
},
setValue: function (e) {
this.select.value = e;
},
getValue: function () {
return this.select.value;
},
setWidth: function (e) {
this.width = e;
if (this.div) {
this.div.Mstyle.width = this.width + 'em';
}
},
onChange: function () {},
doCreateElement: function () {
var e = this;
var t = document.createElement('div');
this.div = t;
if (this.width) {
this.setWidth(this.width);
}
var n = document.createElement('select');
n.onchange = function () {
e.onChange();
};
t.appendChild(n);
this.select = n;
var r = null;
M for (var i in this.opts) {
if (i.startsWith('OptGroup')) {
(r = document.createElement('optgroup')).setAttribute(
'label',
this.opts[i]
);
this.select.add(r);
} else {
var o = document.createElement('option');
o.text = i;
o.value = this.opts[i];
if (r == null) {
this.select.add(o);
} else {
r.appendChild(o);
M }
}
}
return t;
},
});
He.prototype = Object.create(Fe.prototype);
Ke(He.prototype, {
onShow: function () {},
onHide: function () {},
onOk: function () {},
onDefaults: function () {},
getClass: function () {
return 'modal';
},
doCreateElement: function () {
var e = document.createElement('div');
this.modalEl = e;
var t = document.createElement('div');
M this.contentEl = t;
t.className = 'modal-content';
e.appendChild(t);
var n = document.createElement('div');
this.headerEl = n;
n.className = 'modal-header';
n.appendChild(document.createTextNode(this.title));
t.appendChild(n);
var r = document.createElement('div');
this.bodyEl = r;
r.className = 'modal-body';
t.appendChild(r);
this.addBodyContent(r);
var i = document.createElement('dMiv');
i.style.clear = 'both';
t.appendChild(i);
var o = document.createElement('div');
this.footerEl = o;
o.className = 'modal-footer';
t.appendChild(o);
this.addFooterContent(o);
(i = document.createElement('div')).style.clear = 'both';
o.appendChild(i);
return e;
},
addFooterContent: function (e) {
var t = this;
var n = document.createElement('div');
n.style.flexGrow = M1;
if (this.isReadOnly) {
var r = new Oe('Close');
this.cancel = r;
e.appendChild(n);
e.appendChild(r.createElement());
} else {
var i = new Oe('OK');
this.ok = i;
r = new Oe('Cancel');
this.cancel = r;
var o = new Oe('Defaults', 'Reset to Defaults');
this.defaults = o;
i.onClick = function () {
t.onOk();
t.hide();
};
M o.onClick = function () {
t.onDefaults();
};
n.appendChild(o.createElement());
e.appendChild(n);
e.appendChild(i.createElement());
e.appendChild(r.createElement());
}
r.onClick = function () {
t.hide();
};
},
addBodyContent: function (e) {},
show: function () {
var e = Ye.ControlsBar.pauseButton;
this.pauseButton = e;
this.paused = e.getValue()M;
if (!this.paused) {
e.setValue(true);
e.onClick();
}
this.onShow();
window.addEventListener('resize', this.windowResizeFunc);
this.modalEl.style.display = 'block';
this.windowResizeFunc();
},
hide: function () {
window.removeEventListener('resize', this.windowResizeFunc);
this.modalEl.style.display = 'none';
this.onHide();
if (!this.paused) {
this.pauseButton.setVMalue(false);
this.pauseButton.onClick();
}
},
});
We.prototype = Object.create(Fe.prototype);
Ke(We.prototype, {
onTabClick: function (e) {
var t = this;
for (var n = 0; n < this.tabs.length; n++) {
var r = n;
(function () {
var e = t.tabs[r];
var n = e.getButtonElement();
if (n.className.indexOf(' active') != -1) {
e.onTabHide();
}
M n.className = n.className.replace(' active', '');
e.getElement().style.display = 'none';
})();
}
e.onTabShow();
e.getButtonElement().className += ' active';
e.getElement().style.display = 'block';
},
doCreateElement: function () {
var e = this;
var t = document.createElement('div');
t.className = 'tabset';
var n = document.createElement('div');
n.className = 'tab';
t.appendCMhild(n);
for (var r = 0; r < this.tabs.length; r++) {
var i = r;
(function () {
var t = e.tabs[i];
var r = t.createButtonElement();
n.appendChild(r);
r.onclick = function () {
e.onTabClick(t);
};
})();
}
for (r = 0; r < this.tabs.length; r++) {
t.appendChild(this.tabs[r].createElement());
}
var o = document.createElement('div');
M o.style.clear = 'both';
t.appendChild(o);
if (this.defaultTab) {
this.onTabClick(this.defaultTab);
}
return t;
},
addTab: function (e, t) {
this.tabs.push(e);
if (t) {
this.defaultTab = e;
}
},
});
Ve.prototype = Object.create(Fe.prototype);
Ke(Ve.prototype, {
onTabShow: function () {},
onTabHide: function () {},
onShow: function () {},
onHide: Mfunction () {},
onOk: function () {},
onDefaults: function () {},
getClass: function () {
return 'tabcontent';
},
getButtonElement: function () {
return this.buttonEl;
},
createButtonElement: function () {
var e = document.createElement('button');
this.buttonEl = e;
e.appendChild(document.createTextNode(this.getTitle()));
e.className = 'tablinks';
return e;
},
getTitle: functMion () {
return this.title;
},
createTabContent: function (e) {},
doCreateElement: function () {
var e = document.createElement('div');
this.createTabContent(e);
return e;
},
});
qe.prototype = Object.create(He.prototype);
Ke(qe.prototype, {
getTabSet: function () {},
onShow: function () {
He.prototype.onShow.call(this);
var e = this.tabset.tabs;
for (var t = 0; t < e.length; t++) M{
e[t].onShow();
}
},
onHide: function () {
He.prototype.onHide.call(this);
var e = this.tabset.tabs;
for (var t = 0; t < e.length; t++) {
e[t].onHide();
}
},
onOk: function () {
He.prototype.onOk.call(this);
var e = this.tabset.tabs;
for (var t = 0; t < e.length; t++) {
e[t].onOk();
}
},
onDefaults: function () {
He.prototype.onDefauMlts.call(this);
var e = this.tabset.tabs;
for (var t = 0; t < e.length; t++) {
e[t].onDefaults();
}
},
addBodyContent: function (e) {
He.prototype.addBodyContent.call(this);
e.appendChild(this.tabset.createElement());
},
});
Je.prototype = Object.create(Fe.prototype);
Ke(Je.prototype, {
setVisible(e) {
this.el.style.display = e ? 'block' : 'none';
},
doCreateElement: function () M{
return document.createElement('div');
},
});
Ze.prototype = Object.create(Je.prototype);
Ke(Ze.prototype, {
getClass: function () {
return 'dialog-cell-label';
},
doCreateElement: function () {
var e = Je.prototype.doCreateElement.call(this);
if (this.label) {
e.appendChild(document.createTextNode(this.label));
}
return e;
},
});
Xe.prototype = Object.create(Je.prototype);
M Ke(Xe.prototype, {
getClass: function () {
return 'dialog-cell-content';
},
doCreateElement: function () {
var e = Je.prototype.doCreateElement.call(this);
if (typeof this.content == 'string') {
e.appendChild(document.createTextNode(this.content));
} else {
e.appendChild(this.content.createElement());
}
return e;
},
});
$e.prototype = Object.create(Fe.prototype);
Ke($e.prototypMe, {
getClass: function () {
return 'dialog-grid';
},
doCreateElement: function () {
var e = document.createElement('div');
for (var t = 0; t < this.cells.length; t++) {
e.appendChild(this.cells[t].createElement());
}
return e;
},
addCell: function (e) {
this.cells.push(e);
},
});
d(
new c('siteInit', function (e) {
Ye = e.js7800;
})
);
var et = VeM;
var tt = f;
var nt = null;
rt.prototype = Object.create(et.prototype);
tt(rt.prototype, {
hidev: function () {
this.iframe.setAttribute('src', '');
this.logoEl.style.display = 'inline-block';
this.vEl.style.display = 'none';
this.top.style.opacity = '0';
this.top.style.display = 'inline-block';
if (this.timerId != null) {
clearTimeout(this.timerId);
this.timerId = null;
}
},
M showv: function () {
this.played = true;
this.iframe.setAttribute('src', atob(nt));
this.top.style.cursor = 'auto';
this.top.style.opacity = '.4';
this.top.removeEventListener('click', this.fClick);
var e = this;
this.timerId = setTimeout(function () {
e.top.style.display = 'none';
e.logoEl.style.display = 'none';
e.vEl.style.display = 'inline-block';
}, 1e4);
},
onShow: function () M{
this.hidev();
this.played = false;
this.top.style.cursor = 'pointer';
this.top.addEventListener('click', this.fClick);
nt =
'aHR0cHM6Ly9wbGF5ZXIudmltZW8uY29tL3ZpZGVvLzQxMTg5MTQ1Nz9hdXRvcGxheT0xJmF1dG9wYXVzZT0wJmxvb3A9dHJ1ZSZiYWNrZ3JvdW5kPWZhbHNlJm11dGVkPTE=';
},
onHide: function () {
this.top.removeEventListener('click', this.fClick);
this.hidev();
},
onTabHide: function () {
if (this.playedM) {
this.onHide();
}
},
createTabContent: function (e) {
var t = document.createElement('div');
t.className = 'tabcontent__title';
t.appendChild(
document.createTextNode('JS7800: JavaScript Atari 7800 Emulator')
);
e.appendChild(t);
var n = document.createElement('div');
n.className = 'about';
e.appendChild(n);
var r = document.createElement('div');
n.appendChild(r);
M r.innerHTML =
'<p class="center">\n<span class="about-label">by raz0red</span><a href="https://github.com/raz0red/js7800" target="_blank"><img\nclass="about-logo" src="images/github-logo.svg" draggable="false" alt="GitHub: JS7800 by raz0red"\ntitle="GitHub: JS7800 by raz0red"></a>\n</p>\n<p class="center">\nJS7800 is an enhanced JavaScript port of the <a href="https://gstanton.github.io/ProSystem1_3/" target="_blank">ProSystem Atari 7800 emulator</a> that was originally\ndeveloped by Greg StanMton\n</p>';
var i = document.createElement('div');
i.style.textAlign = 'center';
n.appendChild(i);
this.wrapperEl = document.createElement('div');
this.wrapperEl.className = 'about-atari';
this.top = document.createElement('div');
this.top.className = 'about-atari__top';
this.wrapperEl.appendChild(this.top);
i.appendChild(this.wrapperEl);
this.logoEl = document.createElement('img');
this.logoEl.setAttributeM('draggable', 'false');
this.logoEl.setAttribute('src', 'images/logo.gif');
this.wrapperEl.appendChild(this.logoEl);
this.vEl = document.createElement('div');
this.vEl.className = 'about-atari__v';
this.wrapperEl.appendChild(this.vEl);
var o = document.createElement('iframe');
this.iframe = o;
o.setAttribute('width', '100%');
o.setAttribute('height', '100%');
o.setAttribute('frameborder', '0');
o.setAttribuMte('allow', 'autoplay');
this.vEl.appendChild(o);
var a = document.createElement('div');
n.appendChild(a);
a.innerHTML =
'<p class="center">\nAtari 7800 controller illustration was created by Mark Davis (<a href="https://vectogram.us/" target="_blank">Vect-O-Gram</a>)<br>\nMD5 support was developed by Joseph Myers (<a href="http://www.myersdaily.org/joseph/javascript/md5-text.html" target="_blank">MD5.js</a>)<br>\nZip support was developed by Gildas Lormeau (<a hrMef="http://gildas-lormeau.github.io/zip.js" target="_blank">Zip.js</a>)<br>\nYM2151 support was ported from <a href="http://retropc.net/cisc/sound/" target="_blank">FM Sound Generator</a> by <a href="http://www2.tokai.or.jp/mrnkmzu/" target="_blank">Kuma</a>\n</p>';
},
});
var it = qe;
var ot = We;
var at = Ve;
var lt = $e;
var st = Ze;
var ct = je;
var dt = Pe;
var ut = Xe;
var pt = f;
var ht = null;
var ft = null;
var gt = null;M
mt.prototype = Object.create(Le.prototype);
pt(mt.prototype, {
getClass: function () {
return 'controller__keytarget';
},
doCreateElement: function () {
var e = document.createElement('div');
this.target = e;
e.setAttribute('tabindex', '0');
e.style.left = this.left + 'px';
e.style.top = this.top + 'px';
return e;
},
onShow: function (e, t) {
this.keys = e;
this.setValue(t);M
this.el.addEventListener('keydown', this.keydownf);
},
onHide: function () {
this.el.removeEventListener('keydown', this.keydownf);
},
setValue: function (e) {
var t = this.keys[e];
if (t) {
this.target.innerHTML = t;
this.value = e;
}
},
getValue: function () {
return this.value;
},
});
bt.prototype = Object.create(Le.prototype);
pt(bt.prototype, {
gMetClass: function () {
return 'controller';
},
doCreateElementBeforeTitle: function (e) {},
doCreateElement: function () {
var e = document.createElement('div');
this.doCreateElementBeforeTitle(e);
var t = document.createElement('div');
e.appendChild(t);
t.className = 'controller__title';
t.appendChild(document.createTextNode(this.title));
var n = document.createElement('div');
this.inner = n;
M n.className = 'controller__inner';
e.appendChild(n);
return e;
},
});
wt.prototype = Object.create(Le.prototype);
pt(wt.prototype, {
getClass: function () {
return 'gamepad-focus';
},
show: function () {
this.el.style.display = 'block';
},
hide: function () {
this.el.style.display = 'none';
},
setVisible: function (e) {
if (e) {
this.show();
} else {
M this.hide();
}
},
doCreateElement: function () {
var e = document.createElement('div');
e.style.left = this.left + 'px';
e.style.top = this.top + 'px';
return e;
},
});
vt.prototype = Object.create(bt.prototype);
pt(vt.prototype, {
onShow: function () {
this.mapping = ht.Pads.getMapping(this.index);
for (var e = 0; e < this.focus.length; e++) {
this.focus[e].hide();
M }
},
updatePadId: function (e) {
var t = null;
if (e && e.id && e.id.trim().length > 0) {
var n = (t = e.id.trim()).indexOf('(');
if (n != -1) {
t = '<span title="' + t + '">' + t.substring(0, n) + '</span>';
}
} else {
t = 'None (connect and press button)';
}
if (this.padId.innerHTML != t) {
this.padId.innerHTML = t;
}
},
updatePadMapping: function (Me) {
var t = null;
if (e && e.mapping && e.mapping.trim().length > 0) {
var n = e.mapping.trim();
t = n.charAt(0).toUpperCase() + n.substring(1);
} else {
t = '(Unknown)';
}
if (this.padMapping.innerHTML != t) {
this.padMapping.innerHTML = t;
}
},
update: function () {
var e = this.mapping;
this.left.setVisible(e.isLeft(0));
this.right.setVisible(e.isRight(0));
M this.up.setVisible(e.isUp(0));
this.down.setVisible(e.isDown(0));
this.b1.setVisible(e.isButton1());
this.b2.setVisible(e.isButton2());
var t = ht.Pads.getMapping(this.index).getPad();
this.updatePadId(t);
this.updatePadMapping(t);
},
addValueCell: function (e) {
var t = document.createElement('div');
t.className = 'gamepad-cell-value';
e.appendChild(t);
return t;
},
addNameCelMl: function (e, t) {
var n = document.createElement('div');
n.className = 'gamepad-cell-name';
e.appendChild(n);
n.appendChild(document.createTextNode(t));
},
onHide: function () {},
doCreateElementBeforeTitle: function (e) {
var t = document.createElement('div');
t.className = 'gamepad-grid';
this.addNameCell(t, 'Gamepad:');
this.padId = this.addValueCell(t);
this.addNameCell(t, 'Mapping:');
Mthis.padMapping = this.addValueCell(t);
e.appendChild(t);
},
doCreateElement: function () {
var e = bt.prototype.doCreateElement.call(this);
var t = this.inner;
t.appendChild(this.left.createElement());
t.appendChild(this.right.createElement());
t.appendChild(this.up.createElement());
t.appendChild(this.down.createElement());
t.appendChild(this.b1.createElement());
t.appendChild(this.b2.createElement());
M return e;
},
});
yt.prototype = Object.create(bt.prototype);
pt(yt.prototype, {
getClass: function () {
return bt.prototype.getClass.call(this) + ' controller-keyboard';
},
onShow: function (e, t) {
this.map = t;
this.keys = e;
this.left.onShow(e, t.getLeft());
this.right.onShow(e, t.getRight());
this.up.onShow(e, t.getUp());
this.down.onShow(e, t.getDown());
this.b1.onShow(e, t.getBMutton1());
this.b2.onShow(e, t.getButton2());
},
onHide: function () {
for (var e = 0; e < this.targets.length; e++) {
this.targets[e].onHide();
}
},
onOk: function () {
var e = this.map;
e.setUp(this.up.getValue());
e.setLeft(this.left.getValue());
e.setRight(this.right.getValue());
e.setDown(this.down.getValue());
e.setButton1(this.b1.getValue());
e.setButton2(this.b2.getMValue());
},
onDefaults: function () {
var e = this.map;
this.up.setValue(e.getDefaultUp());
this.left.setValue(e.getDefaultLeft());
this.right.setValue(e.getDefaultRight());
this.down.setValue(e.getDefaultDown());
this.b1.setValue(e.getDefaultButton1());
this.b2.setValue(e.getDefaultButton2());
},
doCreateElement: function () {
var e = bt.prototype.doCreateElement.call(this);
for (var t = 0; t M< this.targets.length; t++) {
this.inner.appendChild(this.targets[t].createElement());
}
return e;
},
});
xt.prototype = Object.create(Le.prototype);
pt(xt.prototype, {
getClass: function () {
return 'console__button console__button--up';
},
doCreateElement: function () {
var e = document.createElement('div');
e.appendChild(document.createTextNode(this.title));
return e;
},
});
M At.prototype = Object.create(xt.prototype);
pt(At.prototype, {
getValue: function () {
return this.target.getValue();
},
setValue: function (e) {
this.target.setValue(e);
},
onShow: function (e, t) {
this.target.onShow(e, t);
},
onHide: function () {
this.target.onHide();
},
doCreateElement: function () {
var e = xt.prototype.doCreateElement.call(this);
e.appendChild(this.targMet.createElement());
return e;
},
});
kt.prototype = Object.create(xt.prototype);
pt(kt.prototype, {
onShow: function () {
this.setFocusVisible(false);
},
setFocusVisible: function (e) {
this.el.className =
'console__button console__button--' + (e ? 'down' : 'up');
},
doCreateElement: function () {
return xt.prototype.doCreateElement.call(this);
},
});
St.prototype = Object.creatMe(Le.prototype);
pt(St.prototype, {
createPauseButton: function (e) {},
createSelectButton: function (e) {},
createResetButton: function (e) {},
getClass: function () {
return 'console';
},
doCreateElement: function () {
var e = document.createElement('div');
var t = document.createElement('div');
e.appendChild(t);
t.className = 'controller__title';
t.appendChild(document.createTextNode('Console ButtonsM'));
var n = document.createElement('div');
e.appendChild(n);
n.className = 'console__inner';
n.appendChild(this.selectButton.createElement());
n.appendChild(this.resetButton.createElement());
n.appendChild(this.pauseButton.createElement());
return e;
},
});
Ct.prototype = Object.create(St.prototype);
pt(Ct.prototype, {
createPauseButton: function (e) {
return new At(e);
},
createSelectBMutton: function (e) {
return new At(e);
},
createResetButton: function (e) {
return new At(e);
},
onShow: function (e) {
var t = ht.Keyboard;
this.kb = t;
this.resetButton.onShow(e, t.getResetKey());
this.selectButton.onShow(e, t.getSelectKey());
this.pauseButton.onShow(e, t.getPauseKey());
},
onHide: function () {
for (var e = 0; e < this.buttons.length; e++) {
this.buttons[e]M.onHide();
}
},
onOk: function () {
var e = this.kb;
e.setResetKey(this.resetButton.getValue());
e.setSelectKey(this.selectButton.getValue());
e.setPauseKey(this.pauseButton.getValue());
},
onDefaults: function () {
var e = this.kb;
this.resetButton.setValue(e.defResetKey);
this.selectButton.setValue(e.defSelectKey);
this.pauseButton.setValue(e.defPauseKey);
},
});
Et.prototyMpe = Object.create(St.prototype);
pt(Et.prototype, {
createPauseButton: function (e) {
return new kt(e);
},
createSelectButton: function (e) {
return new kt(e);
},
createResetButton: function (e) {
return new kt(e);
},
update: function () {
var e = this.mapping;
this.selectButton.setFocusVisible(e.isSelect());
this.resetButton.setFocusVisible(e.isReset());
this.pauseButton.setFocusVisiMble(e.isPause());
},
onShow: function () {
this.mapping = ht.Pads.getMapping(0);
for (var e = 0; e < this.buttons.length; e++) {
this.buttons[e].onShow();
}
},
});
var _t = new at('Display');
pt(_t, {
filterSwitch: null,
sizeSelect: null,
arSelect: null,
palSelect: null,
fsSelect: null,
onShow: function () {
var e = ht.Video;
this.vid = e;
this.filterSwitcMh.setValue(e.isFilterEnabled());
this.sizeSelect.setValue(e.getScreenSize().toString());
this.arSelect.setValue(e.getScreenRatio().toString());
this.fsSelect.setValue(e.getFullscreenMode().toString());
this.palSelect.setValue(ht.Region.getPaletteIndex().toString());
},
onOk: function () {
this.vid.setFilterEnabled(this.filterSwitch.getValue());
this.vid.setScreenSize(parseFloat(this.sizeSelect.getValue()));
this.vid.setScreenRatioM(parseFloat(this.arSelect.getValue()));
this.vid.setFullscreenMode(parseInt(this.fsSelect.getValue()));
ht.Region.setPaletteIndex(parseInt(this.palSelect.getValue()));
this.vid.initPalette8();
},
onDefaults: function () {
this.filterSwitch.setValue(this.vid.getFilterEnabledDefault());
this.sizeSelect.setValue(this.vid.getScreenSizeDefault().toString());
this.arSelect.setValue(this.vid.getScreenRatioDefault().toString());
this.palSMelect.setValue(
ht.Region.getPaletteIndexDefault().toString()
);
this.fsSelect.setValue(
this.vid.getFullscreenModeDefault().toString()
);
},
createTabContent: function (e) {
var t = document.createElement('div');
t.innerHTML =
'<div class="tabcontent__title">Display Settings</div>\n<p class="center">The following settings are used to control the screen display.</p>';
e.appendChild(t);
var n = nMew lt();
n.addCell(new st('Screen size:'));
this.sizeSelect = new dt({
'2x': '2',
'2.25x': '2.25',
'2.5x': '2.5',
'2.75x': '2.75',
'3x': '3',
'3.25x': '3.25',
'3.5x': '3.5',
'3.75x': '3.75',
'4x': '4',
});
n.addCell(new ut(this.sizeSelect));
n.addCell(new st('Aspect ratio:'));
this.arSelect = new dt({
'Pixel perfect (1:1 PAR)': '1',
M 'Atari 7800 (6:7 PAR)': '0.857',
'Widescreen (16:9)': '1.334',
'Ultra-widescreen (2.37:1)': '1.778',
});
n.addCell(new ut(this.arSelect));
n.addCell(new st('Fullscreen:'));
this.fsSelect = new dt({
'Fill screen': '0',
'Integer scaling (height)': '1',
});
n.addCell(new ut(this.fsSelect));
n.addCell(new st('Palette:'));
this.palSelect = new dt({
'ProSystem default': '0',
M OptGroup1: 'Dark',
'Cool (Dark)': '1',
'Warm (Dark)': '2',
'Hot (Dark)': '3',
OptGroup2: 'Light',
'Cool (Light) ': '4',
'Warm (Light) ': '5',
'Hot (Light) ': '6',
});
n.addCell(new ut(this.palSelect));
n.addCell(new st('Apply filter:'));
this.filterSwitch = new ct('Toggle Filter');
n.addCell(new ut(this.filterSwitch));
e.appendChild(n.createElement());
},M
});
var It = new at('High Scores');
pt(It, {
enableSwitch: null,
locationSelect: null,
fallbackSwitch: null,
desc: null,
onShow: function () {
this.updateDesc();
this.enableSwitch.setValue(ft.getEnabled());
this.locationSelect.setValue(ft.getGlobal() ? '1' : '0');
this.fallbackSwitch.setValue(ft.isLocalFallback());
this.enableSwitch.onClick();
},
onOk: function () {
ft.setEnabled(thMis.enableSwitch.getValue());
ft.setGlobal(this.locationSelect.getValue() == '1');
ft.setLocalFallback(this.fallbackSwitch.getValue());
},
onDefaults: function () {
this.enableSwitch.setValue(ft.getEnabledDefault());
this.locationSelect.setValue(ft.getGlobalDefault() ? '1' : '0');
this.fallbackSwitch.setValue(ft.getLocalFallbackDefault());
this.enableSwitch.onClick();
},
updateDesc() {
var e =
'<div clasMs="tabcontent__title">High Score Settings</div>\n<p class="center">The following settings control high score persistence.</p>';
if (ft.getDigest()) {
e +=
'<p class="center">Changes will not take effect until the next game is loaded.</p>';
}
this.desc.innerHTML = e;
},
createTabContent: function (e) {
var t = this;
this.desc = document.createElement('div');
e.appendChild(this.desc);
this.updateDesc();
M var n = new lt();
n.addCell(new st('Save scores:'));
this.enableSwitch = new ct('Toggle Filter');
n.addCell(new ut(this.enableSwitch));
var r = new st('Save location:');
n.addCell(r);
this.locationSelect = new dt({
'Local (this device only)': '0',
'Global (worldwide leaderboard)': '1',
});
this.locationSelect.setWidth(17);
var i = new ut(this.locationSelect);
n.addCell(i);
varM o = new st('Local fallback:');
n.addCell(o);
this.fallbackSwitch = new ct('Local Fallback');
var a = new ut(this.fallbackSwitch);
n.addCell(a);
e.appendChild(n.createElement());
this.enableSwitch.onClick = function () {
var e = this.getValue();
r.setVisible(e);
i.setVisible(e);
t.locationSelect.onChange();
};
this.locationSelect.onChange = function () {
var e = this.getValue()M == '1' && t.enableSwitch.getValue();
o.setVisible(e);
a.setVisible(e);
};
},
});
var Dt = new at('Gamepads');
pt(Dt, {
intervalId: null,
controller1: new vt('Controller 1', 0),
controller2: new vt('Controller 2', 1),
console: new Et(),
onShow: function () {
this.controller1.onShow();
this.controller2.onShow();
this.console.onShow();
var e = this;
this.intervalId = seMtInterval(function () {
ht.Pads.poll();
e.controller1.update();
e.controller2.update();
e.console.update();
}, 50);
},
onHide: function () {
if (this.intervalId != null) {
clearInterval(this.intervalId);
}
},
createTabContent: function (e) {
var t = document.createElement('div');
t.innerHTML =
'<div class="tabcontent__title">Gamepad Compatibility</div>\n<p class="Mcenter">This page provides the ability to <b class="callout">test compatibility</b> with connected gamepads.</p>\n<p class="center">Connect gamepads and test if they are mapped correctly (by pressing buttons, D-pad, etc.).</p>';
e.appendChild(t);
var n = document.createElement('div');
e.appendChild(n);
n.className = 'controls-container';
n.appendChild(this.controller1.createElement());
n.appendChild(this.controller2.createElement());
e.appendChilMd(this.console.createElement());
},
});
var Bt = new at('Keyboard');
pt(Bt, {
controller1: new yt('Controller 1'),
controller2: new yt('Controller 2'),
console: new Ct(),
onShow: function () {
var e = ht.Keyboard;
var t = e.p1KeyMap;
var n = e.p2KeyMap;
var r = ht.Keys.Keys;
this.controller1.onShow(r, t);
this.controller2.onShow(r, n);
this.console.onShow(r);
},
onOk: functMion () {
this.controller1.onOk();
this.controller2.onOk();
this.console.onOk();
},
onHide: function () {
this.controller1.onHide();
this.controller2.onHide();
this.console.onHide();
},
onDefaults: function () {
this.controller1.onDefaults();
this.controller2.onDefaults();
this.console.onDefaults();
},
createTabContent: function (e) {
var t = document.createElement('div'M);
t.innerHTML =
'<div class="tabcontent__title">Keyboard Mappings</div>\n<p class="center">Click on the <b class="callout">red box</b> near a control to select it for mapping.</p>\n<p class="center">Once selected, press the <b class="callout">key</b> you would like to map to the control.</p>';
e.appendChild(t);
var n = document.createElement('div');
e.appendChild(n);
n.className = 'controls-container';
n.style = 'margin-top:35px';
n.MappendChild(this.controller1.createElement());
n.appendChild(this.controller2.createElement());
e.appendChild(this.console.createElement());
},
});
var Mt = new at('Advanced');
pt(Mt, {
xmSelect: null,
vsyncSwitch: null,
skipSelect: null,
onShow: function () {
this.xmSelect.setValue(gt.GetXmMode().toString());
this.vsyncSwitch.setValue(ht.Main.isVsyncEnabled());
this.skipSelect.setValue(ht.Main.getSkipLevel()M.toString());
},
onOk: function () {
gt.SetXmMode(parseInt(this.xmSelect.getValue()));
ht.Main.setVsyncEnabled(this.vsyncSwitch.getValue());
ht.Main.setSkipLevel(parseInt(this.skipSelect.getValue()));
},
onDefaults: function () {
this.xmSelect.setValue(gt.GetXmModeDefault().toString());
this.vsyncSwitch.setValue(ht.Main.getVsyncEnabledDefault());
this.skipSelect.setValue(ht.Main.getSkipLevelDefault().toString());
},
M createTabContent: function (e) {
var t = document.createElement('div');
t.innerHTML =
'<div class="tabcontent__title">Advanced</div>\n<p class="center">The following settings provide the ability to configure advanced features.</p>';
e.appendChild(t);
var n = new lt();
var r = new st('Expansion module (XM):');
n.addCell(r);
this.xmSelect = new dt({
'(Automatic)': '2',
Enabled: '1',
Disabled: M'0',
});
var i = new ut(this.xmSelect);
n.addCell(i);
n.addCell(new st('Frame skipping:'));
this.skipSelect = new dt({
'(None)': '0',
Low: '1',
'Medium (50%)': '2',
High: '3',
});
n.addCell(new ut(this.skipSelect));
n.addCell(new st('Vertical sync:'));
this.vsyncSwitch = new ct('Vertical Sync');
n.addCell(new ut(this.vsyncSwitch));
e.appendChild(n.createElemenMt());
},
});
var Tt = new ot();
Tt.addTab(_t);
Tt.addTab(Bt, true);
Tt.addTab(Dt);
Tt.addTab(It);
Tt.addTab(Mt);
Rt.prototype = Object.create(it.prototype);
pt(Rt.prototype, {
selectKeyboardTab() {
this.getTabSet().onTabClick(Bt);
},
getTabSet: function () {
return Tt;
},
onOk: function () {
it.prototype.onOk.call(this);
Z();
},
});
d(
new c('siteIMnit', function (e) {
ht = e.js7800;
ft = e.HighScore;
gt = ht.Cartridge;
})
);
var Gt = qe;
var Lt = We;
var Qt = Ve;
var zt = f;
Ft.prototype = Object.create(Qt.prototype);
zt(Ft.prototype, {
root: null,
parent: null,
loaded: false,
onTabShow: function () {
if (!this.loaded) {
var e = this;
var t = function (t) {
var n = 'An error occurred attempting to loaMd page: ' + e.url;
if (t) {
n += ' (' + t + ')';
}
u('showError', n);
};
var n = new XMLHttpRequest();
n.open('GET', this.url);
n.onload = function () {
if (n.status == 200) {
e.loaded = true;
e.parent.classList.remove('loader-container');
e.parent.style.display = 'none';
e.parent.innerHTML = n.responseText;
setTimeoutM(function () {
e.parent.style.display = 'block';
}, 100);
} else {
t(n.status + ': ' + n.statusText);
}
};
n.onerror = function () {
t();
};
setTimeout(function () {
n.send();
}, 500);
}
},
createTabContent: function (e) {
this.root = e;
var t = document.createElement('div');
this.parent = t;
M t.className = 'loader-container';
var n = document.createElement('div');
n.className = 'loader';
t.appendChild(n);
e.appendChild(t);
},
});
var Nt = new Ft('Overview', 'help/overview.html');
var Ut = new Ft('Cartridges', 'help/carts.html');
var Kt = new Ft('Controls Bar', 'help/cbar.html');
var Yt = new Ft('Settings Dialog', 'help/settings.html');
var Ot = new Ft('High Scores', 'help/highscores.html');
var jt = new Lt();M
jt.addTab(new rt(), true);
jt.addTab(Nt);
jt.addTab(Ut);
jt.addTab(Kt);
jt.addTab(Yt);
jt.addTab(Ot);
Pt.prototype = Object.create(Gt.prototype);
zt(Pt.prototype, {
cssLoaded: false,
getTabSet: function () {
return jt;
},
onShow: function () {
if (!this.cssLoaded) {
this.cssLoaded = true;
var e = document.createElement('link');
e.type = 'text/css';
e.rel = 'stylesheet'M;
e.href = 'help/css/help.css';
document.head.appendChild(e);
}
Gt.prototype.onShow.call(this);
},
});
r(2);
r(6);
r.d(n, 'init', function () {
return ln;
});
var Ht = B;
var Wt = M;
var Vt = T;
var qt = function (e) {
if (
(e = new RegExp('[?&]' + encodeURIComponent(e) + '=([^&]*)').exec(
location.search
))
) {
return decodeURIComponent(e[1]);
M }
};
var Jt = function (e) {
if (
(e = new RegExp('[?&]' + encodeURIComponent(e) + '=(.*)').exec(
location.search
))
) {
return decodeURIComponent(e[1]);
}
};
var Zt = false;
var Xt = false;
var $t = null;
var en = null;
var tn = function (e, t) {
if (t == null) {
t = true;
}
if (t) {
console.error(e);
}
Vt(e);
};
var rn = nu*ll;
var on = null;
},
]);
});
hhex20c67322d2c392555260f6702124058bb778803d601e95234cc5d744ca8f809328ac0063036f726401010f746578742f6a617661736372697074004d08022866756e6374696f6e2028652c207429207b0a202069662028747970656f66206578706f727473203d3d20276f626a6563742720262620747970656f66206d6f64756c65203d3d20276f626a6563742729207b0a202020206d6f64756c652e6578706f727473203d207428293b0a20207d20656c73652069662028747970656f6620646566696e65203d3d202766756e6374696f6e2720262620646566696e652e616d6429207b0a20202020646566696e65282773697465272c205b5d2c2074293b0a20207d20656c73652069662028747970656f66206578706f727473203d3d20276f626a6563742729207b0a202020206578706f7274732e73697465203d207428293b0a20207d20656c7365207b0a20202020652e73697465203d207428293b0a20207d0a7d292877696e646f772c2066756e6374696f6e202829207b0a202072657475726e202866756e6374696f6e20286529207b0a2020202066756e6374696f6e206e287229207b0a20202020202069662028745b725d29207b0a202020202020202072657475726e20745b725d2e6578706f7274733b0a2020202020207d0a2020202020207661722069203d2028745b725d203d207b20693a20722c206c3a2066616c73652c206578706f7274733a207b7d207d293b0a202020202020655b725d2e63616c6c28692e6578706f7274732c20692c20692e6578706f7274732c206e293b4d08020a202020202020692e6c203d20747275653b0a20202020202072657475726e20692e6578706f7274733b0a202020207d0a202020207661722074203d207b7d3b0a202020206e2e6d203d20653b0a202020206e2e63203d20743b0a202020206e2e64203d2066756e6374696f6e2028652c20742c207229207b0a20202020202069662028216e2e6f28652c20742929207b0a20202020202020204f626a6563742e646566696e6550726f706572747928652c20742c207b20656e756d657261626c653a20747275652c206765743a2072207d293b0a2020202020207d0a202020207d3b0a202020206e2e72203d2066756e6374696f6e20286529207b0a20202020202069662028747970656f662053796d626f6c20213d2027756e646566696e6564272026262053796d626f6c2e746f537472696e6754616729207b0a20202020202020204f626a6563742e646566696e6550726f706572747928652c2053796d626f6c2e746f537472696e675461672c207b2076616c75653a20274d6f64756c6527207d293b0a2020202020207d0a2020202020204f626a6563742e646566696e6550726f706572747928652c20275f5f65734d6f64756c65272c207b2076616c75653a2074727565207d293b0a202020207d3b0a202020206e2e74203d2066756e6374696f6e2028652c207429207b0a20202020202069662028312026207429207b0a2020204d0802202020202065203d206e2865293b0a2020202020207d0a20202020202069662028382026207429207b0a202020202020202072657475726e20653b0a2020202020207d0a20202020202069662028342026207420262620747970656f662065203d3d20276f626a65637427202626206520262620652e5f5f65734d6f64756c6529207b0a202020202020202072657475726e20653b0a2020202020207d0a2020202020207661722072203d204f626a6563742e637265617465286e756c6c293b0a2020202020206e2e722872293b0a2020202020204f626a6563742e646566696e6550726f706572747928722c202764656661756c74272c207b20656e756d657261626c653a20747275652c2076616c75653a2065207d293b0a20202020202069662028322026207420262620747970656f66206520213d2027737472696e672729207b0a2020202020202020666f722028766172206920696e206529207b0a202020202020202020206e2e64280a202020202020202020202020722c0a202020202020202020202020692c0a20202020202020202020202066756e6374696f6e20287429207b0a202020202020202020202020202072657475726e20655b745d3b0a2020202020202020202020207d2e62696e64286e756c6c2c2069290a20202020202020202020293b0a20202020202020207d0a2020202020207d0a202020202020726574754d0802726e20723b0a202020207d3b0a202020206e2e6e203d2066756e6374696f6e20286529207b0a2020202020207661722074203d0a20202020202020206520262620652e5f5f65734d6f64756c650a202020202020202020203f2066756e6374696f6e202829207b0a202020202020202020202020202072657475726e20652e64656661756c743b0a2020202020202020202020207d0a202020202020202020203a2066756e6374696f6e202829207b0a202020202020202020202020202072657475726e20653b0a2020202020202020202020207d3b0a2020202020206e2e6428742c202761272c2074293b0a20202020202072657475726e20743b0a202020207d3b0a202020206e2e6f203d2066756e6374696f6e2028652c207429207b0a20202020202072657475726e204f626a6563742e70726f746f747970652e6861734f776e50726f70657274792e63616c6c28652c2074293b0a202020207d3b0a202020206e2e70203d2027273b0a2020202072657475726e206e28286e2e73203d203829293b0a20207d29285b0a2020202066756e6374696f6e2028652c20742c206e29207b0a2020202020202775736520737472696374273b0a20202020202066756e6374696f6e206c286529207b0a20202020202020207661722074203d202d313b0a2020202020202020666f722028766172206e203d20303b206e203c20612e6c656e67744d0802683b206e2b2b29207b0a2020202020202020202069662028615b6e5d2e6964656e746966696572203d3d3d206529207b0a20202020202020202020202074203d206e3b0a202020202020202020202020627265616b3b0a202020202020202020207d0a20202020202020207d0a202020202020202072657475726e20743b0a2020202020207d0a20202020202066756e6374696f6e207328652c207429207b0a2020202020202020766172206e203d207b7d3b0a20202020202020207661722072203d205b5d3b0a2020202020202020666f7220287661722069203d20303b2069203c20652e6c656e6774683b20692b2b29207b0a20202020202020202020766172206f203d20655b695d3b0a202020202020202020207661722073203d20742e62617365203f206f5b305d202b20742e62617365203a206f5b305d3b0a202020202020202020207661722063203d206e5b735d207c7c20303b0a202020202020202020207661722064203d2027272e636f6e63617428732c20272027292e636f6e6361742863293b0a202020202020202020206e5b735d203d2063202b20313b0a202020202020202020207661722075203d206c2864293b0a202020202020202020207661722070203d207b206373733a206f5b315d2c206d656469613a206f5b325d2c20736f757263654d61703a206f5b335d207d3b0a2020202020202020202069662028754d0802203d3d3d202d3129207b0a202020202020202020202020612e70757368287b206964656e7469666965723a20642c20757064617465723a206d28702c2074292c207265666572656e6365733a2031207d293b0a202020202020202020207d20656c7365207b0a202020202020202020202020615b755d2e7265666572656e6365732b2b3b0a202020202020202020202020615b755d2e757064617465722870293b0a202020202020202020207d0a20202020202020202020722e707573682864293b0a20202020202020207d0a202020202020202072657475726e20723b0a2020202020207d0a20202020202066756e6374696f6e2063286529207b0a20202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e7428277374796c6527293b0a20202020202020207661722072203d20652e61747472696275746573207c7c207b7d3b0a202020202020202069662028722e6e6f6e6365203d3d3d20766f6964203029207b0a202020202020202020207661722069203d206e2e6e633b0a20202020202020202020696620286929207b0a202020202020202020202020722e6e6f6e6365203d20693b0a202020202020202020207d0a20202020202020207d0a20202020202020204f626a6563742e6b6579732872292e666f72456163682866756e6374696f6e20286529207b0a20202020202020202020742e4d080273657441747472696275746528652c20725b655d293b0a20202020202020207d293b0a202020202020202069662028747970656f6620652e696e73657274203d3d202766756e6374696f6e2729207b0a20202020202020202020652e696e736572742874293b0a20202020202020207d20656c7365207b0a202020202020202020207661722061203d206f28652e696e73657274207c7c20276865616427293b0a2020202020202020202069662028216129207b0a2020202020202020202020207468726f77206e6577204572726f72280a202020202020202020202020202022436f756c646e27742066696e642061207374796c65207461726765742e20546869732070726f6261626c79206d65616e732074686174207468652076616c756520666f72207468652027696e736572742720706172616d6574657220697320696e76616c69642e220a202020202020202020202020293b0a202020202020202020207d0a20202020202020202020612e617070656e644368696c642874293b0a20202020202020207d0a202020202020202072657475726e20743b0a2020202020207d0a20202020202066756e6374696f6e207028652c20742c206e2c207229207b0a20202020202020207661722069203d206e0a202020202020202020203f2027270a202020202020202020203a20722e6d656469610a202020202020202020203f2027406d4d08026564696120272e636f6e63617428722e6d656469612c2027207b27292e636f6e63617428722e6373732c20277d27290a202020202020202020203a20722e6373733b0a202020202020202069662028652e7374796c65536865657429207b0a20202020202020202020652e7374796c6553686565742e63737354657874203d207528742c2069293b0a20202020202020207d20656c7365207b0a20202020202020202020766172206f203d20646f63756d656e742e637265617465546578744e6f64652869293b0a202020202020202020207661722061203d20652e6368696c644e6f6465733b0a2020202020202020202069662028615b745d29207b0a202020202020202020202020652e72656d6f76654368696c6428615b745d293b0a202020202020202020207d0a2020202020202020202069662028612e6c656e67746829207b0a202020202020202020202020652e696e736572744265666f7265286f2c20615b745d293b0a202020202020202020207d20656c7365207b0a202020202020202020202020652e617070656e644368696c64286f293b0a202020202020202020207d0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e206828652c20742c206e29207b0a20202020202020207661722072203d206e2e6373733b0a20202020202020207661722069203d206e2e6d656469613b0a2020204d08022020202020766172206f203d206e2e736f757263654d61703b0a2020202020202020696620286929207b0a20202020202020202020652e73657441747472696275746528276d65646961272c2069293b0a20202020202020207d20656c7365207b0a20202020202020202020652e72656d6f766541747472696275746528276d6564696127293b0a20202020202020207d0a2020202020202020696620286f2026262062746f6129207b0a2020202020202020202072202b3d20275c6e2f2a2320736f757263654d617070696e6755524c3d646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c272e636f6e636174280a20202020202020202020202062746f6128756e65736361706528656e636f6465555249436f6d706f6e656e74284a534f4e2e737472696e67696679286f292929292c0a20202020202020202020202027202a2f270a20202020202020202020293b0a20202020202020207d0a202020202020202069662028652e7374796c65536865657429207b0a20202020202020202020652e7374796c6553686565742e63737354657874203d20723b0a20202020202020207d20656c7365207b0a202020202020202020207768696c652028652e66697273744368696c6429207b0a202020202020202020202020652e72656d6f76654368696c6428652e66697273744368696c64293b0a20202020202020204d080220207d0a20202020202020202020652e617070656e644368696c6428646f63756d656e742e637265617465546578744e6f6465287229293b0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e206d28652c207429207b0a2020202020202020766172206e3b0a202020202020202076617220723b0a202020202020202076617220693b0a202020202020202069662028742e73696e676c65746f6e29207b0a20202020202020202020766172206f203d20672b2b3b0a202020202020202020206e203d2066207c7c202866203d2063287429293b0a2020202020202020202072203d20702e62696e64286e756c6c2c206e2c206f2c2066616c7365293b0a2020202020202020202069203d20702e62696e64286e756c6c2c206e2c206f2c2074727565293b0a20202020202020207d20656c7365207b0a202020202020202020206e203d20632874293b0a2020202020202020202072203d20682e62696e64286e756c6c2c206e2c2074293b0a2020202020202020202069203d2066756e6374696f6e202829207b0a2020202020202020202020207661722065203d206e3b0a20202020202020202020202069662028652e706172656e744e6f6465203d3d3d206e756c6c29207b0a202020202020202020202020202072657475726e3b0a2020202020202020202020207d0a202020202020202020202020652e4d0802706172656e744e6f64652e72656d6f76654368696c642865293b0a202020202020202020207d3b0a20202020202020207d0a2020202020202020722865293b0a202020202020202072657475726e2066756e6374696f6e20287429207b0a20202020202020202020696620287429207b0a202020202020202020202020696620280a2020202020202020202020202020742e637373203d3d3d20652e6373732026260a2020202020202020202020202020742e6d65646961203d3d3d20652e6d656469612026260a2020202020202020202020202020742e736f757263654d6170203d3d3d20652e736f757263654d61700a20202020202020202020202029207b0a202020202020202020202020202072657475726e3b0a2020202020202020202020207d0a20202020202020202020202072282865203d207429293b0a202020202020202020207d20656c7365207b0a2020202020202020202020206928293b0a202020202020202020207d0a20202020202020207d3b0a2020202020207d0a20202020202076617220723b0a2020202020207661722069203d2066756e6374696f6e202829207b0a20202020202020206966202872203d3d3d20766f6964203029207b0a2020202020202020202072203d20426f6f6c65616e2877696e646f7720262620646f63756d656e7420262620646f63756d656e742e616c6c202626202177696e646f4d0802772e61746f62293b0a20202020202020207d0a202020202020202072657475726e20723b0a2020202020207d3b0a202020202020766172206f203d202866756e6374696f6e202829207b0a20202020202020207661722065203d207b7d3b0a202020202020202072657475726e2066756e6374696f6e20287429207b0a2020202020202020202069662028655b745d203d3d3d20766f6964203029207b0a202020202020202020202020766172206e203d20646f63756d656e742e717565727953656c6563746f722874293b0a202020202020202020202020696620280a202020202020202020202020202077696e646f772e48544d4c494672616d65456c656d656e742026260a20202020202020202020202020206e20696e7374616e63656f662077696e646f772e48544d4c494672616d65456c656d656e740a20202020202020202020202029207b0a2020202020202020202020202020747279207b0a202020202020202020202020202020206e203d206e2e636f6e74656e74446f63756d656e742e686561643b0a20202020202020202020202020207d20636174636820286529207b0a202020202020202020202020202020206e203d206e756c6c3b0a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020202020655b745d203d206e3b0a202020202020202020207d0a2020202020204d08022020202072657475726e20655b745d3b0a20202020202020207d3b0a2020202020207d2928293b0a2020202020207661722061203d205b5d3b0a2020202020207661722064203d205b5d3b0a2020202020207661722075203d2066756e6374696f6e2028652c207429207b0a2020202020202020645b655d203d20743b0a202020202020202072657475726e20642e66696c74657228426f6f6c65616e292e6a6f696e28275c6e27293b0a2020202020207d3b0a2020202020207661722066203d206e756c6c3b0a2020202020207661722067203d20303b0a202020202020652e6578706f727473203d2066756e6374696f6e2028652c207429207b0a202020202020202069662028212874203d2074207c7c207b7d292e73696e676c65746f6e20262620747970656f6620742e73696e676c65746f6e20213d2027626f6f6c65616e2729207b0a20202020202020202020742e73696e676c65746f6e203d206928293b0a20202020202020207d0a2020202020202020766172206e203d2073282865203d2065207c7c205b5d292c2074293b0a202020202020202072657475726e2066756e6374696f6e20286529207b0a2020202020202020202065203d2065207c7c205b5d3b0a20202020202020202020696620284f626a6563742e70726f746f747970652e746f537472696e672e63616c6c286529203d3d3d20275b6f626a6563742041724d08027261795d2729207b0a202020202020202020202020666f7220287661722072203d20303b2072203c206e2e6c656e6774683b20722b2b29207b0a20202020202020202020202020207661722069203d206c286e5b725d293b0a2020202020202020202020202020615b695d2e7265666572656e6365732d2d3b0a2020202020202020202020207d0a202020202020202020202020766172206f203d207328652c2074293b0a202020202020202020202020666f7220287661722063203d20303b2063203c206e2e6c656e6774683b20632b2b29207b0a20202020202020202020202020207661722064203d206c286e5b635d293b0a202020202020202020202020202069662028615b645d2e7265666572656e636573203d3d3d203029207b0a20202020202020202020202020202020615b645d2e7570646174657228293b0a20202020202020202020202020202020612e73706c69636528642c2031293b0a20202020202020202020202020207d0a2020202020202020202020207d0a2020202020202020202020206e203d206f3b0a202020202020202020207d0a20202020202020207d3b0a2020202020207d3b0a202020207d2c0a2020202066756e6374696f6e2028652c20742c206e29207b0a2020202020202775736520737472696374273b0a202020202020652e6578706f727473203d2066756e6374696f6e20286529207b0a20204d08022020202020207661722074203d205b5d3b0a2020202020202020742e746f537472696e67203d2066756e6374696f6e202829207b0a2020202020202020202072657475726e20746869732e6d61702866756e6374696f6e20287429207b0a202020202020202020202020766172206e203d202866756e6374696f6e2028652c207429207b0a2020202020202020202020202020766172206e203d20655b315d207c7c2027273b0a20202020202020202020202020207661722072203d20655b335d3b0a202020202020202020202020202069662028217229207b0a2020202020202020202020202020202072657475726e206e3b0a20202020202020202020202020207d0a2020202020202020202020202020696620287420262620747970656f662062746f61203d3d202766756e6374696f6e2729207b0a2020202020202020202020202020202061203d20723b0a202020202020202020202020202020206c203d2062746f6128756e65736361706528656e636f6465555249436f6d706f6e656e74284a534f4e2e737472696e676966792861292929293b0a2020202020202020202020202020202073203d0a20202020202020202020202020202020202027736f757263654d617070696e6755524c3d646174613a6170706c69636174696f6e2f6a736f6e3b636861727365743d7574662d383b6261736536342c272e636f6e636174280a4d080220202020202020202020202020202020202020206c0a202020202020202020202020202020202020293b0a202020202020202020202020202020207661722069203d20272f2a2320272e636f6e63617428732c2027202a2f27293b0a20202020202020202020202020202020766172206f203d20722e736f75726365732e6d61702866756e6374696f6e20286529207b0a20202020202020202020202020202020202072657475726e20272f2a2320736f7572636555524c3d270a20202020202020202020202020202020202020202e636f6e63617428722e736f75726365526f6f74207c7c202727290a20202020202020202020202020202020202020202e636f6e63617428652c2027202a2f27293b0a202020202020202020202020202020207d293b0a2020202020202020202020202020202072657475726e205b6e5d2e636f6e636174286f292e636f6e636174285b695d292e6a6f696e28275c6e27293b0a20202020202020202020202020207d0a202020202020202020202020202076617220613b0a2020202020202020202020202020766172206c3b0a202020202020202020202020202076617220733b0a202020202020202020202020202072657475726e205b6e5d2e6a6f696e28275c6e27293b0a2020202020202020202020207d2928742c2065293b0a20202020202020202020202069662028745b325d29207b0a2020204d0802202020202020202020202072657475726e2027406d6564696120272e636f6e63617428745b325d2c2027207b27292e636f6e636174286e2c20277d27293b0a2020202020202020202020207d20656c7365207b0a202020202020202020202020202072657475726e206e3b0a2020202020202020202020207d0a202020202020202020207d292e6a6f696e282727293b0a20202020202020207d3b0a2020202020202020742e69203d2066756e6374696f6e2028652c206e2c207229207b0a2020202020202020202069662028747970656f662065203d3d2027737472696e672729207b0a20202020202020202020202065203d205b5b6e756c6c2c20652c2027275d5d3b0a202020202020202020207d0a202020202020202020207661722069203d207b7d3b0a20202020202020202020696620287229207b0a202020202020202020202020666f722028766172206f203d20303b206f203c20746869732e6c656e6774683b206f2b2b29207b0a20202020202020202020202020207661722061203d20746869735b6f5d5b305d3b0a2020202020202020202020202020696620286120213d206e756c6c29207b0a20202020202020202020202020202020695b615d203d20747275653b0a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020207d0a20202020202020202020666f72202876614d080272206c203d20303b206c203c20652e6c656e6774683b206c2b2b29207b0a2020202020202020202020207661722073203d205b5d2e636f6e63617428655b6c5d293b0a202020202020202020202020696620282172207c7c2021695b735b305d5d29207b0a2020202020202020202020202020696620286e29207b0a2020202020202020202020202020202069662028735b325d29207b0a202020202020202020202020202020202020735b325d203d2027272e636f6e636174286e2c202720616e642027292e636f6e63617428735b325d293b0a202020202020202020202020202020207d20656c7365207b0a202020202020202020202020202020202020735b325d203d206e3b0a202020202020202020202020202020207d0a20202020202020202020202020207d0a2020202020202020202020202020742e707573682873293b0a2020202020202020202020207d0a202020202020202020207d0a20202020202020207d3b0a202020202020202072657475726e20743b0a2020202020207d3b0a202020207d2c0a2020202066756e6374696f6e2028652c20742c206e29207b0a2020202020207661722072203d206e2830293b0a2020202020207661722069203d206e2833293b0a20202020202069662028747970656f66202869203d20692e5f5f65734d6f64756c65203f20692e64656661756c74203a206929203d3d20277374724d0802696e672729207b0a202020202020202069203d205b5b652e692c20692c2027275d5d3b0a2020202020207d0a202020202020766172206f203d207b20696e736572743a202768656164272c2073696e676c65746f6e3a2066616c7365207d3b0a2020202020207228692c206f293b0a2020202020207661722061203d20692e6c6f63616c73203f20692e6c6f63616c73203a207b7d3b0a202020202020652e6578706f727473203d20613b0a202020207d2c0a2020202066756e6374696f6e2028652c20742c206e29207b0a2020202020207661722072203d206e2831293b0a2020202020207661722069203d206e2834293b0a202020202020766172206f203d206e2835293b0a20202020202074203d20722866616c7365293b0a2020202020207661722061203d2069286f293b0a202020202020742e70757368285b0a2020202020202020652e692c0a2020202020202020222f2a20416c6c2073697a696e672063757272656e746c7920646f6e6520696e20656d20776974682074686520657863657074696f6e206f6620636f6d6d616e6420626172205c725c6e202020636f6d706f6e656e7473202877686963682061726520696e20707829202a2f5c725c6e5c725c6e626f6479207b5c725c6e20206261636b67726f756e642d636f6c6f723a20233145314531453b5c725c6e2020666f6e742d66616d696c793a2027526f626f746f4d0802272c2020417269616c2c2048656c7665746963612c2073616e732d73657269663b202f2a20526f626f746f202a2f5c725c6e20202f2a666f6e742d66616d696c793a20417269616c2c2048656c7665746963612c2073616e732d73657269663b202a2f5c725c6e2020666f6e742d73697a653a203735253b5c725c6e20206d617267696e3a2035656d2030203020303b5c725c6e20202d7765626b69742d757365722d73656c6563743a206e6f6e653b5c725c6e20202d6d6f7a2d757365722d73656c6563743a202d6d6f7a2d6e6f6e653b5c725c6e20202d6d732d757365722d73656c6563743a206e6f6e653b5c725c6e2020757365722d73656c6563743a206e6f6e653b5c725c6e7d5c725c6e5c725c6e73656c6563742c20627574746f6e207b5c725c6e2020666f6e742d66616d696c793a2027526f626f746f272c20417269616c2c2048656c7665746963612c2073616e732d73657269663b202f2a20526f626f746f202a2f5c725c6e20202f2a666f6e742d66616d696c793a20417269616c2c2048656c7665746963612c2073616e732d73657269663b2a2f5c725c6e7d5c725c6e5c725c6e696d67207b5c725c6e20202d7765626b69742d757365722d73656c6563743a206e6f6e653b5c725c6e20202d6b68746d6c2d757365722d73656c6563743a206e6f6e653b5c725c6e20202d6d6f7a2d757365722d73656c6563743a206e4d08026f6e653b5c725c6e20202d6f2d757365722d73656c6563743a206e6f6e653b5c725c6e2020757365722d73656c6563743a206e6f6e653b5c725c6e7d5c725c6e5c725c6e2e627265616b2d776f7264207b5c725c6e20206f766572666c6f772d777261703a20627265616b2d776f72643b5c725c6e7d5c725c6e5c725c6e2e686561646572207b5c725c6e2020746f703a20303b5c725c6e2020706f736974696f6e3a2066697865643b5c725c6e20206261636b67726f756e642d636f6c6f723a20233142314231423b5c725c6e2020636f6c6f723a20234242424242423b5c725c6e202070616464696e673a202e3530656d3b5c725c6e2020666f6e742d73697a653a20312e3235656d3b5c725c6e202077696474683a20313030253b5c725c6e20207a2d696e6465783a20313b5c725c6e2020746578742d616c69676e3a2063656e7465723b5c725c6e2020646973706c61793a20626c6f636b3b5c725c6e2020626f782d736861646f773a20302030202e3534656d2030207267626128302c20302c20302c20302e34292c2030203020312e3334656d2030207267626128302c20302c20302c20302e3339293b5c725c6e7d5c725c6e5c725c6e2e6865616465725f5f6c6162656c207b5c725c6e20206d617267696e2d72696768743a202e3534656d3b5c725c6e2020766572746963616c2d616c69676e3a206d6964646c653b5c725c6e4d08027d5c725c6e5c725c6e2e6865616465725f5f6c6f676f207b5c725c6e2020766572746963616c2d616c69676e3a206d6964646c653b5c725c6e202077696474683a20312e33346d3b5c725c6e20206865696768743a20312e3334656d3b5c725c6e7d5c725c6e5c725c6e236a73373830305f5f746172676574207b5c725c6e2020706f736974696f6e3a2072656c61746976653b5c725c6e2020746578742d616c69676e3a2063656e7465723b5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c73207b5c725c6e2020646973706c61793a20666c65783b5c725c6e20206a7573746966792d636f6e74656e743a2063656e7465723b5c725c6e20206d617267696e2d746f703a20312e38656d3b5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c732d627574746f6e207b5c725c6e202077696474683a2033656d3b5c725c6e20206865696768743a2033656d3b5c725c6e20206d617267696e3a2030202e38656d3b5c725c6e20206261636b67726f756e643a20233238323832383b5c725c6e2020626f726465722d7261646975733a202e3735656d3b5c725c6e2020626f782d736861646f773a2030202e3334656d202e3637656d2030207267626128302c20302c20302c20302e34292c2030202e35656d20312e3637656d2030207267626128302c20302c20302c20302e3339293b5c725c6e20206f7061636974793a202e383b5c4d0802725c6e7d5c725c6e5c725c6e2e636f6e74726f6c732d627574746f6e3a686f766572207b5c725c6e20206f7061636974793a20313b5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c732d627574746f6e5f5f696d67207b5c725c6e202077696474683a2032656d3b5c725c6e20206865696768743a2032656d3b5c725c6e202070616464696e673a202e35656d202e35656d3b5c725c6e20206d617267696e3a20303b5c725c6e2020637572736f723a20706f696e7465723b5c725c6e20206f7061636974793a202e373b5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c732d627574746f6e5f5f696d673a686f766572207b5c725c6e20206f7061636974793a202e393b5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c732d627574746f6e5f5f75706c6f6164207b5c725c6e2020646973706c61793a20696e6c696e652d626c6f636b3b5c725c6e2020637572736f723a20706f696e7465723b5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c732d627574746f6e5f5f75706c6f61643e696e7075745b747970653d5c2266696c655c225d207b5c725c6e2020646973706c61793a206e6f6e653b5c725c6e7d5c725c6e5c725c6e2f2a20437573746f6d2053656c656374202a2f5c725c6e2e6361727473656c656374207b5c725c6e20206f7061636974793a202e383b5c725c6e2020706f736974696f6e3a2072656c4d080261746976653b5c725c6e2020646973706c61793a20666c65783b5c725c6e202077696474683a203235656d3b5c725c6e20206865696768743a2033656d3b5c725c6e20206c696e652d6865696768743a2033656d3b5c725c6e20206261636b67726f756e643a20626c61636b3b5c725c6e20206f766572666c6f773a2068696464656e3b5c725c6e2020626f726465722d7261646975733a202e3735656d3b5c725c6e2020626f782d736861646f773a2030202e3334656d202e3637656d2030207267626128302c20302c20302c20302e34292c2030202e35656d20312e3637656d2030207267626128302c20302c20302c20302e3339293b5c725c6e20206d617267696e3a2030202e38656d3b5c725c6e7d5c725c6e5c725c6e2e6361727473656c6563743a686f766572207b5c725c6e20206f7061636974793a20313b5c725c6e7d5c725c6e5c725c6e2f2a204172726f77202a2f5c725c6e2e6361727473656c6563743a3a6166746572207b5c725c6e2020636f6e74656e743a20275c5c32354243273b5c725c6e2020706f736974696f6e3a206162736f6c7574653b5c725c6e2020746f703a20303b5c725c6e202072696768743a20303b5c725c6e202070616464696e673a20302031656d3b5c725c6e2020636f6c6f723a20236365326633373b5c725c6e20206261636b67726f756e643a20233238323832383b5c725c6e202063754d080272736f723a20706f696e7465723b5c725c6e2020706f696e7465722d6576656e74733a206e6f6e653b5c725c6e7d5c725c6e5c725c6e2f2a2052657365742053656c656374202a2f5c725c6e2e6361727473656c6563742073656c656374207b5c725c6e20202d7765626b69742d617070656172616e63653a206e6f6e653b5c725c6e20202d6d6f7a2d617070656172616e63653a206e6f6e653b5c725c6e20202d6d732d617070656172616e63653a206e6f6e653b5c725c6e2020617070656172616e63653a206e6f6e653b5c725c6e20206f75746c696e653a20303b5c725c6e2020626f782d736861646f773a206e6f6e653b5c725c6e2020626f726465723a20302021696d706f7274616e743b5c725c6e20206261636b67726f756e643a20626c61636b3b5c725c6e20206261636b67726f756e642d696d6167653a206e6f6e653b5c725c6e2020666c65783a20313b5c725c6e202070616464696e673a20302031656d3b5c725c6e2020636f6c6f723a20234242424242423b5c725c6e2020637572736f723a20706f696e7465723b5c725c6e2020666f6e742d73697a653a20312e32656d3b5c725c6e7d5c725c6e5c725c6e2f2a2052656d6f7665204945206172726f77202a2f5c725c6e2e6361727473656c6563742073656c6563743a3a2d6d732d657870616e64207b5c725c6e2020646973706c61793a206e6f6e653b5c725c6e4d08027d5c725c6e5c725c6e2e6361727473656c6563742073656c656374206f707467726f7570207b5c725c6e2020666f6e742d7765696768743a20626f6c643b5c725c6e2020636f6c6f723a20233737373737373b5c725c6e7d5c725c6e5c725c6e2e6361727473656c6563742073656c656374206f7074696f6e207b5c725c6e2020666f6e742d7765696768743a206e6f726d616c3b5c725c6e2020636f6c6f723a20234242424242423b5c725c6e7d5c725c6e5c725c6e23636f6e74656e74207b5c725c6e2020636c6561723a20626f74683b5c725c6e20206d617267696e2d746f703a20342e35656d3b5c725c6e7d5c725c6e5c725c6e2e64726f705f5f646976207b5c725c6e2020706f736974696f6e3a2066697865643b5c725c6e20207a2d696e6465783a202d3939393b5c725c6e20206c6566743a20303b5c725c6e2020746f703a20303b5c725c6e202077696474683a20313030253b5c725c6e20206865696768743a20313030253b5c725c6e7d5c725c6e5c725c6e2f2a20436f6d6d616e642062617220636f6d706f6e656e747320287573657320707829202a2f5c725c6e5c725c6e2e667373656c656374207b5c725c6e20206f7061636974793a202e383b5c725c6e2020666f6e742d73697a653a20313170783b5c725c6e2020636f6c6f723a20236666663b5c725c6e2020706f736974696f6e3a2072656c61746976653b5c4d0802725c6e2020646973706c61793a20666c65783b5c725c6e202077696474683a2031393070783b5c725c6e20206865696768743a20323070783b5c725c6e20206c696e652d6865696768743a20323070783b5c725c6e20206261636b67726f756e643a20626c61636b3b5c725c6e20206f766572666c6f773a2068696464656e3b5c725c6e2020626f726465722d7261646975733a203470783b5c725c6e2020626f726465723a2031707820736f6c696420233636363b5c725c6e20206d617267696e3a20302031357078203020313570783b5c725c6e2020646973706c61793a206e6f6e653b5c725c6e7d5c725c6e5c725c6e2e667373656c6563743a686f766572207b5c725c6e20206f7061636974793a20313b5c725c6e7d5c725c6e5c725c6e2f2a204172726f77202a2f5c725c6e2e667373656c6563743a3a6166746572207b5c725c6e2020636f6e74656e743a20275c5c32354243273b5c725c6e2020706f736974696f6e3a206162736f6c7574653b5c725c6e2020746f703a20303b5c725c6e202072696768743a20303b5c725c6e202070616464696e673a2030203370783b5c725c6e2020666f6e742d73697a653a20313170783b5c725c6e2020636f6c6f723a20236365326633373b5c725c6e2020637572736f723a20706f696e7465723b5c725c6e2020706f696e7465722d6576656e74733a206e6f6e653b5c725c6e7d5c724d08025c6e5c725c6e2f2a2052657365742053656c656374202a2f5c725c6e2e667373656c6563742073656c656374207b5c725c6e20202d7765626b69742d617070656172616e63653a206e6f6e653b5c725c6e20202d6d6f7a2d617070656172616e63653a206e6f6e653b5c725c6e20202d6d732d617070656172616e63653a206e6f6e653b5c725c6e2020617070656172616e63653a206e6f6e653b5c725c6e20206f75746c696e653a20303b5c725c6e2020626f782d736861646f773a206e6f6e653b5c725c6e2020626f726465723a20302021696d706f7274616e743b5c725c6e20206261636b67726f756e643a20626c61636b3b5c725c6e20206261636b67726f756e642d696d6167653a206e6f6e653b5c725c6e202070616464696e673a203020313070783b5c725c6e2020636f6c6f723a20234343433b5c725c6e2020637572736f723a20706f696e7465723b5c725c6e2020666f6e742d73697a653a20313170783b5c725c6e2020666c65783a20313b5c725c6e7d5c725c6e5c725c6e2f2a2052656d6f7665204945206172726f77202a2f5c725c6e2e667373656c6563742073656c6563743a3a2d6d732d657870616e64207b5c725c6e2020646973706c61793a206e6f6e653b5c725c6e7d5c725c6e5c725c6e2e667373656c6563742073656c656374206f707467726f7570207b5c725c6e2020666f6e742d7765696768743a204d0802626f6c643b5c725c6e2020666f6e742d73697a653a20313270783b5c725c6e2020636f6c6f723a20233737373737373b5c725c6e7d5c725c6e5c725c6e2e667373656c6563742073656c656374206f7074696f6e207b5c725c6e2020666f6e742d7765696768743a206e6f726d616c3b5c725c6e2020666f6e742d73697a653a20313270783b5c725c6e2020636f6c6f723a20234242424242423b5c725c6e7d5c725c6e5c725c6e2e6d6f64616c207b5c725c6e2020646973706c61793a206e6f6e653b5c725c6e2020706f736974696f6e3a2066697865643b5c725c6e20207a2d696e6465783a20313b5c725c6e202070616464696e672d746f703a20372e35656d3b5c725c6e20206c6566743a20303b5c725c6e2020746f703a20303b5c725c6e202077696474683a20313030253b5c725c6e20206865696768743a20313030253b5c725c6e20206f766572666c6f773a206175746f3b5c725c6e20206261636b67726f756e642d636f6c6f723a2072676228302c20302c2030293b5c725c6e20206261636b67726f756e642d636f6c6f723a207267626128302c20302c20302c20302e36293b5c725c6e2020746578742d616c69676e3a206c6566743b5c725c6e7d5c725c6e5c725c6e2e6d6f64616c2d636f6e74656e74207b5c725c6e2020706f736974696f6e3a2072656c61746976653b5c725c6e20206261636b67726f756e642d634d08026f6c6f723a20233141314131413b5c725c6e20206d617267696e3a206175746f3b5c725c6e2020626f726465722d6c6566743a2031656d20736f6c696420233230323032303b5c725c6e2020626f726465722d72696768743a2031656d20736f6c696420233230323032303b5c725c6e202077696474683a203635656d3b5c725c6e2020626f782d736861646f773a2030202e3334656d202e3637656d2030207267626128302c20302c20302c20302e32292c2030202e35656d20312e3637656d2030207267626128302c20302c20302c20302e3139293b5c725c6e20202d7765626b69742d616e696d6174696f6e2d6e616d653a20616e696d617465746f703b5c725c6e20202d7765626b69742d616e696d6174696f6e2d6475726174696f6e3a20302e36733b5c725c6e2020616e696d6174696f6e2d6e616d653a20616e696d617465746f703b5c725c6e2020616e696d6174696f6e2d6475726174696f6e3a20302e36733b5c725c6e2020626f726465722d7261646975733a202e3637656d3b5c725c6e7d5c725c6e5c725c6e402d7765626b69742d6b65796672616d657320616e696d617465746f70207b5c725c6e202066726f6d207b5c725c6e202020202f2a20746f703a202d3235656d3b202a2f5c725c6e202020206f7061636974793a20305c725c6e20207d5c725c6e5c725c6e2020746f207b5c725c6e202020202f2a20746f4d0802703a20303b202a2f5c725c6e202020206f7061636974793a20315c725c6e20207d5c725c6e7d5c725c6e5c725c6e406b65796672616d657320616e696d617465746f70207b5c725c6e202066726f6d207b5c725c6e202020202f2a20746f703a202d3235656d3b202a2f5c725c6e202020206f7061636974793a20305c725c6e20207d5c725c6e5c725c6e2020746f207b5c725c6e202020202f2a20746f703a20303b202a2f5c725c6e202020206f7061636974793a20315c725c6e20207d5c725c6e7d5c725c6e5c725c6e2e6d6f64616c2d686561646572207b5c725c6e202070616464696e673a202e363235656d3b5c725c6e20206261636b67726f756e642d636f6c6f723a20233230323032303b5c725c6e2020636f6c6f723a20234242424242423b5c725c6e2020666f6e742d73697a653a20312e3333656d3b5c725c6e2020666f6e742d7765696768743a20626f6c643b5c725c6e5c725c6e7d5c725c6e5c725c6e2e6d6f64616c2d626f6479207b5c725c6e2020646973706c61793a20666c65783b5c725c6e2020616c69676e2d6974656d733a20737472657463683b5c725c6e7d5c725c6e5c725c6e2e6d6f64616c2d666f6f746572207b5c725c6e202070616464696e673a202e383334656d202e34313637656d3b5c725c6e20206261636b67726f756e642d636f6c6f723a20233230323032303b5c725c6e2020636f6c6f724d08023a2077686974653b5c725c6e2020646973706c61793a20666c65783b5c725c6e20206a7573746966792d636f6e74656e743a20666c65782d656e643b5c725c6e7d5c725c6e5c725c6e2e746162736574207b5c725c6e2020646973706c61793a20666c65783b5c725c6e2020616c69676e2d6974656d733a20737472657463683b5c725c6e202077696474683a20313030253b5c725c6e7d5c725c6e5c725c6e2e746162207b5c725c6e202070616464696e673a202e363637656d3b5c725c6e20206261636b67726f756e642d636f6c6f723a20233137313731373b5c725c6e202077696474683a2031302e35656d3b5c725c6e20206d696e2d77696474683a2031302e35656d3b5c725c6e20206d696e2d6865696768743a2033352e3637656d3b5c725c6e2020666c65782d67726f773a20303b5c725c6e7d5c725c6e5c725c6e2e74616220627574746f6e207b5c725c6e20206f7061636974793a202e383b5c725c6e2020646973706c61793a20626c6f636b3b5c725c6e2020666f6e742d7765696768743a20626f6c643b5c725c6e20206261636b67726f756e642d636f6c6f723a20696e68657269743b5c725c6e2020636f6c6f723a20234343434343433b5c725c6e202070616464696e673a202e3632656d202e393233656d3b5c725c6e202077696474683a20313030253b5c725c6e2020626f726465723a206e6f6e653b5c725c6e4d080220206f75746c696e653a206e6f6e653b5c725c6e2020746578742d616c69676e3a206c6566743b5c725c6e2020637572736f723a20706f696e7465723b5c725c6e20207472616e736974696f6e3a20302e33733b5c725c6e2020666f6e742d73697a653a20312e31656d3b202f2a20526f626f746f202a2f5c725c6e20202f2a20666f6e742d73697a653a20312e30383334656d3b202a2f5c725c6e20206d617267696e2d626f74746f6d3a202e333835656d3b5c725c6e2020626f726465722d7261646975733a202e333038656d3b5c725c6e7d5c725c6e5c725c6e2e74616220627574746f6e3a686f766572207b5c725c6e20206f7061636974793a20313b5c725c6e20206261636b67726f756e642d636f6c6f723a20233333333b5c725c6e2020626f782d736861646f773a2030202e333038656d202e363135656d2030207267626128302c20302c20302c20302e32292c2030202e343631656d20312e3534656d2030207267626128302c20302c20302c20302e3139293b5c725c6e7d5c725c6e5c725c6e2e74616220627574746f6e2e616374697665207b5c725c6e20206f7061636974793a20313b5c725c6e20206261636b67726f756e642d636f6c6f723a20233862323432393b5c725c6e2020626f782d736861646f773a2030202e333038656d202e363135656d2030207267626128302c20302c20302c20302e32292c2030204d08022e343631656d20312e3534656d2030207267626128302c20302c20302c20302e3139293b5c725c6e7d5c725c6e5c725c6e2e746162636f6e74656e74207b5c725c6e202070616464696e673a2030202e383537656d3b5c725c6e2020626f726465722d6c6566743a206e6f6e653b5c725c6e2020646973706c61793a206e6f6e653b5c725c6e2020636f6c6f723a20234242424242423b5c725c6e2020666c65782d67726f773a20313b5c725c6e2020666f6e742d73697a653a20312e313637656d3b5c725c6e20202f2a2031347078202a2f5c725c6e20206d696e2d6865696768743a2033352e3637656d3b5c725c6e20206d61782d6865696768743a2033352e3637656d3b5c725c6e20206865696768743a2033352e3637656d3b5c725c6e20206f766572666c6f773a206175746f3b20205c725c6e20207363726f6c6c6261722d77696474683a207468696e3b202020202020202020202f2a205c226175746f5c22206f72205c227468696e5c2220202a2f5c725c6e20207363726f6c6c6261722d636f6c6f723a202338623234323920233137313731373b2020205c725c6e7d5c725c6e5c725c6e2e746162636f6e74656e743a3a2d7765626b69742d7363726f6c6c626172207b5c725c6e202077696474683a202e383537656d3b2020202020202020202020202020202f2a207769647468206f662074686520656e746972652073634d0802726f6c6c626172202a2f5c725c6e7d5c725c6e2e746162636f6e74656e743a3a2d7765626b69742d7363726f6c6c6261722d747261636b207b5c725c6e20206261636b67726f756e643a20233137313731373b20202020202020202f2a20636f6c6f72206f662074686520747261636b696e672061726561202a2f5c725c6e7d5c725c6e2e746162636f6e74656e743a3a2d7765626b69742d7363726f6c6c6261722d7468756d62207b5c725c6e20206261636b67726f756e642d636f6c6f723a20233862323432393b202020202f2a20636f6c6f72206f6620746865207363726f6c6c207468756d62202a2f5c725c6e2020626f726465722d7261646975733a20312e3433656d3b202020202020202f2a20726f756e646e657373206f6620746865207363726f6c6c207468756d62202a2f5c725c6e2020626f726465723a202e323134656d20736f6c696420233137313731373b20202f2a20637265617465732070616464696e672061726f756e64207363726f6c6c207468756d62202a2f5c725c6e7d5c725c6e5c725c6e2e746162636f6e74656e745f5f7469746c65207b5c725c6e2020666f6e742d7765696768743a20626f6c643b5c725c6e2020666f6e742d73697a653a20312e313433656d3b5c725c6e2020746578742d616c69676e3a2063656e7465723b5c725c6e20206c696e652d6865696768743a2031656d3b5c725c6e204d0802206d617267696e3a2031656d20302031656d20303b5c725c6e20206c696e652d6865696768743a20312e3132353b5c725c6e7d5c725c6e5c725c6e2e746162636f6e74656e7420612c205c725c6e2e746162636f6e74656e7420613a766973697465645c725c6e2e746162636f6e74656e7420613a616374697665207b5c725c6e2020666f6e742d7765696768743a20626f6c643b5c725c6e2020746578742d6465636f726174696f6e3a206e6f6e653b5c725c6e2020636f6c6f723a20234242423b20205c725c6e7d5c725c6e5c725c6e2e746162636f6e74656e7420613a686f766572207b5c725c6e2020636f6c6f723a20234444443b20205c725c6e7d5c725c6e5c725c6e2e6469616c6f672d627574746f6e207b5c725c6e20206261636b67726f756e642d636f6c6f723a20236365326633373b5c725c6e2020626f726465723a206e6f6e653b5c725c6e2020636f6c6f723a2077686974653b5c725c6e2020746578742d616c69676e3a2063656e7465723b5c725c6e2020666f6e742d73697a653a20312e3133656d3b202f2a20526f626f746f202a2f5c725c6e20202f2a20666f6e742d73697a653a20312e31656d3b202a2f5c725c6e20206d617267696e3a2030202e34313637656d3b5c725c6e20206f7061636974793a202e363b5c725c6e20207472616e736974696f6e3a202e33733b5c725c6e2020746578742d6465636f4d0802726174696f6e3a206e6f6e653b5c725c6e2020637572736f723a20706f696e7465723b5c725c6e202070616464696e673a202e3235656d202e313637656d3b5c725c6e20206d696e2d77696474683a20342e35656d3b5c725c6e2020626f726465722d7261646975733a202e3235656d3b5c725c6e2020626f782d736861646f773a2030202e333334656d202e363637656d2030207267626128302c20302c20302c20302e32292c2030202e35656d20312e363637656d2030207267626128302c20302c20302c20302e3139293b5c725c6e7d5c725c6e5c725c6e2e6469616c6f672d627574746f6e3a686f766572207b5c725c6e20206f7061636974793a20315c725c6e7d5c725c6e5c725c6e702e63656e746572207b5c725c6e2020746578742d616c69676e3a2063656e7465723b5c725c6e7d5c725c6e5c725c6e2e61626f75742d6c6162656c207b5c725c6e20206d617267696e2d72696768743a202e353731656d3b5c725c6e2020766572746963616c2d616c69676e3a206d6964646c653b5c725c6e7d5c725c6e5c725c6e2e61626f75742d6c6f676f207b5c725c6e2020766572746963616c2d616c69676e3a206d6964646c653b5c725c6e202077696474683a20312e323836656d3b5c725c6e20206865696768743a20312e323836656d3b5c725c6e7d5c725c6e5c725c6e2e61626f75742d6174617269207b5c725c6e2020774d0802696474683a2032343070783b5c725c6e20206865696768743a2031383070783b5c725c6e20206d617267696e3a2032307078206175746f3b5c725c6e20206261636b67726f756e643a20626c61636b3b5c725c6e2020626f782d736861646f773a203020347078203870782030207267626128302c20302c20302c20302e32292c20302036707820323070782030207267626128302c20302c20302c20302e3139293b5c725c6e2020626f726465722d7261646975733a20313270783b5c725c6e2020746578742d616c69676e3a2063656e7465723b5c725c6e2020646973706c61793a20696e6c696e652d626c6f636b3b5c725c6e2020706f736974696f6e3a2072656c61746976653b5c725c6e7d5c725c6e5c725c6e2e61626f75742d61746172695f5f76207b5c725c6e202070616464696e673a20313570783b5c725c6e2020646973706c61793a206e6f6e653b5c725c6e7d5c725c6e5c725c6e2e61626f75742d61746172695f5f746f70207b5c725c6e2020706f736974696f6e3a206162736f6c7574653b5c725c6e20202f2a2077696474683a2032303670783b202a2f5c725c6e20202f2a206865696768743a2031343670783b202a2f5c725c6e202077696474683a2032343070783b5c725c6e20206865696768743a2031383070783b5c725c6e20207a2d696e6465783a203130303b5c725c6e2020746f703a20303b5c725c6e4d080220206c6566743a20303b5c725c6e20206f7061636974793a20303b5c725c6e20206261636b67726f756e642d636f6c6f723a20233535353b5c725c6e20202f2a20626f726465723a203137707820736f6c696420626c61636b3b202a2f5c725c6e2020626f726465722d7261646975733a20313270783b5c725c6e7d5c725c6e5c725c6e622e63616c6c6f7574207b5c725c6e2020666f6e742d7765696768743a20626f6c643b5c725c6e2020636f6c6f723a20236464643b5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c732d636f6e7461696e6572207b5c725c6e2020646973706c61793a20666c65783b5c725c6e20206f766572666c6f773a2068696464656e3b5c725c6e20206a7573746966792d636f6e74656e743a2063656e7465723b5c725c6e20206d696e2d77696474683a2036303070783b5c725c6e20206d617267696e2d746f703a20333070783b202f2a20526f626f746f202a2f5c725c6e20202f2a206d617267696e2d746f703a20343070783b202a2f5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c6c6572207b5c725c6e202077696474683a2032393170783b205c725c6e20206d696e2d77696474683a2032393170783b5c725c6e2020636f6c6f723a20236262623b205c725c6e20206f766572666c6f773a2068696464656e3b5c725c6e2020666c65782d67726f773a20313b5c725c6e2020666c65784d08022d736872696e6b3a20303b5c725c6e2020746578742d616c69676e3a2063656e7465723b5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c6c65722d6b6579626f617264207b5c725c6e202070616464696e673a2030203020357078203570783b5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c6c65725f5f7469746c65207b5c725c6e2020746578742d616c69676e3a2063656e7465723b205c725c6e202070616464696e672d626f74746f6d3a20313070783b5c725c6e2020666f6e742d7765696768743a20626f6c643b5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c6c65725f5f696e6e6572207b5c725c6e2020646973706c61793a20696e6c696e652d626c6f636b3b5c725c6e2020706f736974696f6e3a2072656c61746976653b5c725c6e202077696474683a2032393170783b5c725c6e20206d696e2d77696474683a2032393170783b5c725c6e20206865696768743a2031353170783b2020205c725c6e20206d696e2d6865696768743a2031353170783b2020202020202020205c725c6e20206261636b67726f756e642d696d6167653a2075726c2822202b0a2020202020202020202061202b0a2020202020202020202027293b5c725c6e2020626f782d736861646f773a203020347078203870782030207267626128302c20302c20302c20302e32292c20302036707820323070782030207267626128304d08022c20302c20302c20302e3139293b5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c6c65725f5f6b6579746172676574207b5c725c6e2020746578742d616c69676e3a2063656e7465723b5c725c6e2020636f6c6f723a20236363633b5c725c6e20206261636b67726f756e642d636f6c6f723a20233939323332393b5c725c6e2020706f736974696f6e3a206162736f6c7574653b5c725c6e202077696474683a20343070783b5c725c6e20206865696768743a20323070783b2020202020205c725c6e20206c696e652d6865696768743a20323070783b2020202020205c725c6e2020626f782d736861646f773a203020347078203870782030207267626128302c20302c20302c20302e32292c20302036707820323070782030207267626128302c20302c20302c20302e3139293b5c725c6e2020626f726465722d7261646975733a203470783b5c725c6e20206f766572666c6f773a2068696464656e3b5c725c6e2020666f6e742d73697a653a20313170783b5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c6c65725f5f6b65797461726765743a686f766572207b5c725c6e20206261636b67726f756e642d636f6c6f723a20236365326633373b5c725c6e2020636f6c6f723a2077686974653b5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c6c65725f5f6b65797461726765743a666f637573207b5c725c6e20204d0802636f6c6f723a20233239323932393b5c725c6e20206261636b67726f756e642d636f6c6f72203a236363633b5c725c6e7d5c725c6e5c725c6e2e636f6e736f6c65207b5c725c6e202070616464696e672d746f703a323570783b5c725c6e7d5c725c6e5c725c6e2e636f6e736f6c655f5f696e6e6572207b5c725c6e202070616464696e672d746f703a203270783b5c725c6e2020646973706c61793a20666c65783b5c725c6e20206a7573746966792d636f6e74656e743a2063656e7465723b5c725c6e7d5c725c6e5c725c6e2e636f6e736f6c655f5f627574746f6e207b5c725c6e2020646973706c61793a20696e6c696e652d626c6f636b3b5c725c6e2020706f736974696f6e3a2072656c61746976653b5c725c6e2020746578742d616c69676e3a2063656e7465723b5c725c6e2020666f6e742d73697a653a20313270783b5c725c6e2020666f6e742d7765696768743a20626f6c643b5c725c6e202077696474683a20373070783b5c725c6e20206865696768743a20323470783b5c725c6e20206c696e652d6865696768743a20323470783b205c725c6e2020626f726465722d7261646975733a203570783b5c725c6e2020626f782d736861646f773a203020347078203870782030207267626128302c20302c20302c20302e32292c20302036707820323070782030207267626128302c20302c20302c20302e3139293b5c724d08025c6e20206d617267696e3a2030203870783b5c725c6e7d5c725c6e5c725c6e2e636f6e736f6c655f5f627574746f6e2d2d7570207b5c725c6e2020626f726465723a2032707820736f6c696420233436343434383b5c725c6e20206261636b67726f756e642d636f6c6f723a20233333333b5c725c6e7d5c725c6e5c725c6e2e636f6e736f6c655f5f627574746f6e2d2d646f776e207b5c725c6e2020626f726465723a2032707820736f6c696420233436343434383b5c725c6e20206261636b67726f756e642d636f6c6f723a20236230616262363b20205c725c6e2020636f6c6f723a20233131313b5c725c6e7d5c725c6e5c725c6e2e67616d657061642d666f637573207b5c725c6e2020706f736974696f6e3a206162736f6c7574653b5c725c6e202077696474683a20313070783b5c725c6e20206865696768743a20313070783b5c725c6e2020626f726465722d7261646975733a203530253b5c725c6e2020646973706c61793a206e6f6e653b5c725c6e20206261636b67726f756e642d636f6c6f723a20236363633b5c725c6e2020626f782d736861646f773a203020302032707820236363633b5c725c6e7d5c725c6e5c725c6e2e67616d657061642d67726964207b5c725c6e20206261636b67726f756e642d636f6c6f723a20233232323b205c725c6e202077696474683a2032373070783b5c725c6e2020677269642d634d08026f6c756d6e2d6761703a203570783b5c725c6e2020677269642d726f772d6761703a3570783b5c725c6e2020646973706c61793a20696e6c696e652d677269643b20205c725c6e2020677269642d74656d706c6174652d636f6c756d6e733a206175746f203166723b20205c725c6e202070616464696e673a20313070783b5c725c6e2020626f726465722d7261646975733a203570783b5c725c6e20206d617267696e3a203020302032357078203170783b5c725c6e2020666f6e742d73697a653a20313270783b5c725c6e7d5c725c6e5c725c6e2e67616d657061642d63656c6c2d6e616d65207b20205c725c6e20206f766572666c6f773a2068696464656e3b5c725c6e2020746578742d616c69676e3a206c6566743b20205c725c6e2020666f6e742d7765696768743a626f6c643b5c725c6e2020636f6c6f723a20233737373b5c725c6e202077686974652d73706163653a206e6f777261703b5c725c6e7d5c725c6e5c725c6e2e67616d657061642d63656c6c2d76616c7565207b20205c725c6e2020746578742d616c69676e3a2063656e7465723b5c725c6e20206f766572666c6f773a2068696464656e3b5c725c6e2020746578742d616c69676e3a206c6566743b20205c725c6e202077686974652d73706163653a206e6f777261703b5c725c6e7d5c725c6e5c725c6e2e6469616c6f672d67726964207b5c725c6e20206d4d0802617267696e3a2032656d2031656d2031656d2031656d3b5c725c6e2020677269642d636f6c756d6e2d6761703a2031656d3b5c725c6e2020677269642d726f772d6761703a20312e35656d3b5c725c6e2020646973706c61793a20677269643b5c725c6e2020677269642d74656d706c6174652d636f6c756d6e733a206175746f203166723b5c725c6e202070616464696e673a2031656d3b5c725c6e20206c696e652d6865696768743a2031656d3b5c725c6e20206261636b67726f756e642d636f6c6f723a20233232323b205c725c6e2020626f726465722d7261646975733a202e34656d3b5c725c6e20202f2a206a7573746966792d6974656d733a2063656e7465723b202a2f5c725c6e2020616c69676e2d6974656d733a2063656e7465723b20205c725c6e7d5c725c6e5c725c6e2e6469616c6f672d63656c6c2d6c6162656c207b5c725c6e20206f766572666c6f773a2068696464656e3b5c725c6e2020746578742d616c69676e3a206c6566743b5c725c6e2020666f6e742d7765696768743a20626f6c643b5c725c6e2020636f6c6f723a20233743374337433b5c725c6e202077686974652d73706163653a206e6f777261703b5c725c6e20202f2a20626f726465723a2031707820736f6c6964207265643b20202a2f5c725c6e7d5c725c6e5c725c6e2e6469616c6f672d63656c6c2d636f6e74656e74207b5c725c6e20204d0802746578742d616c69676e3a2063656e7465723b5c725c6e20206f766572666c6f773a2068696464656e3b5c725c6e2020746578742d616c69676e3a206c6566743b5c725c6e202077686974652d73706163653a206e6f777261703b5c725c6e20202f2a20626f726465723a2031707820736f6c6964207265643b20202a2f5c725c6e7d5c725c6e5c725c6e2e6469616c6f672d737769746368207b202f2a2031347078202a2f5c725c6e2020706f736974696f6e3a2072656c61746976653b5c725c6e2020646973706c61793a20696e6c696e652d626c6f636b3b5c725c6e202077696474683a20322e343239656d3b202f2a333470783b2a2f5c725c6e20206865696768743a20312e34323836656d3b202f2a323070783b2a2f5c725c6e7d5c725c6e5c725c6e2e6469616c6f672d73776974636820696e707574207b5c725c6e20206f7061636974793a20303b5c725c6e202077696474683a20303b5c725c6e20206865696768743a20303b5c725c6e7d5c725c6e5c725c6e2e6469616c6f672d7377697463682d736c69646572207b5c725c6e2020706f736974696f6e3a206162736f6c7574653b5c725c6e2020637572736f723a20706f696e7465723b5c725c6e2020746f703a20303b5c725c6e20206c6566743a20303b5c725c6e202072696768743a20303b5c725c6e2020626f74746f6d3a20303b5c725c6e20206261636b67726f4d0802756e642d636f6c6f723a20233636363b5c725c6e20202d7765626b69742d7472616e736974696f6e3a202e34733b5c725c6e20207472616e736974696f6e3a202e34733b5c725c6e20206f7061636974793a20302e363b5c725c6e2020626f726465722d7261646975733a20322e34323836656d3b202f2a20333470783b2a2f5c725c6e7d5c725c6e5c725c6e2e6469616c6f672d7377697463682d736c696465723a686f766572207b5c725c6e20206f7061636974793a20315c725c6e7d5c725c6e5c725c6e2e6469616c6f672d7377697463682d736c696465723a6265666f7265207b5c725c6e2020706f736974696f6e3a206162736f6c7574653b5c725c6e2020636f6e74656e743a2022223b5c725c6e20206865696768743a202e383537656d3b202f2a313270783b2a2f5c725c6e202077696474683a202e383537656d3b202f2a313270783b2a2f5c725c6e20206c6566743a202e32383537656d3b202f2a3470783b2a2f5c725c6e2020626f74746f6d3a202e32383537656d3b202f2a3470783b2a2f5c725c6e20206261636b67726f756e642d636f6c6f723a20234444443b5c725c6e2020626f726465722d7261646975733a203530253b5c725c6e20202d7765626b69742d7472616e736974696f6e3a202e34733b5c725c6e20207472616e736974696f6e3a202e34733b5c725c6e7d5c725c6e5c725c6e696e7075743a63684d080265636b6564202b202e6469616c6f672d7377697463682d736c69646572207b5c725c6e20206261636b67726f756e642d636f6c6f723a20236365326633373b5c725c6e7d5c725c6e5c725c6e696e7075743a636865636b65642b2e6469616c6f672d7377697463682d736c696465723a6265666f7265207b5c725c6e20202d7765626b69742d7472616e73666f726d3a207472616e736c617465582831656d202f2a313470782a2f293b5c725c6e20202d6d732d7472616e73666f726d3a207472616e736c617465582831656d202f2a313470782a2f293b5c725c6e20207472616e73666f726d3a207472616e736c617465582831656d202f2a313470782a2f293b20205c725c6e7d5c725c6e5c725c6e2e6469616c6f672d73656c656374207b202f2a2031347078202a2f5c725c6e20206f7061636974793a202e383b5c725c6e2020666f6e742d73697a653a2031656d3b205c725c6e2020636f6c6f723a20236666663b5c725c6e2020706f736974696f6e3a2072656c61746976653b5c725c6e2020646973706c61793a20666c65783b5c725c6e202077696474683a203134656d3b202f2a31363070783b2a2f5c725c6e20206865696768743a20312e38656d3b202f2a323070783b2a2f5c725c6e20206c696e652d6865696768743a20312e38656d3b202f2a323070783b2a2f5c725c6e20206261636b67726f756e643a20626c61636b4d08023b5c725c6e20206f766572666c6f773a2068696464656e3b5c725c6e2020626f726465722d7261646975733a202e34656d3b202f2a3470783b2a2f5c725c6e2020626f726465723a2031707820736f6c696420233636363b5c725c6e7d5c725c6e5c725c6e2e6469616c6f672d73656c6563743a686f766572207b5c725c6e20206f7061636974793a20313b5c725c6e7d5c725c6e5c725c6e2f2a204172726f77202a2f5c725c6e2e6469616c6f672d73656c6563743a3a6166746572207b5c725c6e2020636f6e74656e743a205c275c5c323542435c273b5c725c6e2020706f736974696f6e3a206162736f6c7574653b5c725c6e2020746f703a20303b5c725c6e202072696768743a20303b5c725c6e202070616464696e673a2030202e33656d3b202f2a3370782a2f5c725c6e2020666f6e742d73697a653a2031656d3b5c725c6e2020636f6c6f723a20236365326633373b5c725c6e2020637572736f723a20706f696e7465723b5c725c6e2020706f696e7465722d6576656e74733a206e6f6e653b5c725c6e7d5c725c6e5c725c6e2f2a2052657365742053656c656374202a2f5c725c6e2e6469616c6f672d73656c6563742073656c656374207b5c725c6e20202d7765626b69742d617070656172616e63653a206e6f6e653b5c725c6e20202d6d6f7a2d617070656172616e63653a206e6f6e653b5c725c6e20202d6d732d61704d080270656172616e63653a206e6f6e653b5c725c6e2020617070656172616e63653a206e6f6e653b5c725c6e20206f75746c696e653a20303b5c725c6e2020626f782d736861646f773a206e6f6e653b5c725c6e2020626f726465723a20302021696d706f7274616e743b5c725c6e20206261636b67726f756e643a20626c61636b3b5c725c6e20206261636b67726f756e642d696d6167653a206e6f6e653b5c725c6e202070616464696e673a2030202e373134656d3b5c725c6e2020636f6c6f723a20234343433b5c725c6e2020637572736f723a20706f696e7465723b5c725c6e20202f2a20666f6e742d73697a653a20313170783b202a2f5c725c6e2020666f6e742d73697a653a202e39656d3b5c725c6e2020666c65783a20313b5c725c6e7d5c725c6e5c725c6e2f2a2052656d6f7665204945206172726f77202a2f5c725c6e2e6469616c6f672d73656c6563742073656c6563743a3a2d6d732d657870616e64207b5c725c6e2020646973706c61793a206e6f6e653b5c725c6e7d5c725c6e5c725c6e2e6469616c6f672d73656c6563742073656c656374206f707467726f7570207b5c725c6e2020666f6e742d7765696768743a20626f6c643b5c725c6e2020666f6e742d73697a653a2031656d3b5c725c6e2020636f6c6f723a20233737373737373b5c725c6e7d5c725c6e5c725c6e2e6469616c6f672d73656c6563742073654d08026c656374206f7074696f6e207b5c725c6e2020666f6e742d7765696768743a206e6f726d616c3b5c725c6e2020666f6e742d73697a653a2031656d3b5c725c6e2020636f6c6f723a20234242424242423b5c725c6e7d5c725c6e5c725c6e2e61626f75742050207b5c725c6e2020746578742d616c69676e3a2063656e7465723b5c725c6e20206c696e652d6865696768743a20312e35656d3b5c725c6e202070616464696e673a20302033656d20302033656d3b5c725c6e7d5c725c6e5c725c6e2e696e73747275637473207b5c725c6e2020666f6e742d73697a653a312e3135656d3b5c725c6e2020626f726465722d7261646975733a31656d3b5c725c6e20206f7061636974793a302e3837353b5c725c6e202070616464696e673a31656d3b5c725c6e20202f2a206261636b67726f756e642d636f6c6f723a20233145314531453b20202a2f5c725c6e20206261636b67726f756e642d636f6c6f723a20233146314631463b205c725c6e20202f2a206261636b67726f756e642d636f6c6f723a20233963313931393b202a2f5c725c6e2020636f6c6f723a234242423b5c725c6e2020626f782d736861646f773a2030202e3237656d202e3534656d2030207267626128302c20302c20302c20302e34292c2030202e34656d20312e3334656d2030207267626128302c20302c20302c20302e3339293b5c725c6e20206d61782d77694d08026474683a203430656d3b5c725c6e7d5c725c6e5c725c6e2e696e73747275637473202e696c696e6b207b5c725c6e2020666f6e742d7765696768743a20626f6c643b5c725c6e2020636f6c6f723a20234343433b20205c725c6e7d5c725c6e5c725c6e2e696e73747275637473202e696c696e6b3a686f766572207b5c725c6e2020636f6c6f723a20234646463b20205c725c6e2020637572736f723a20706f696e7465723b5c725c6e7d5c725c6e5c725c6e2e696e7374727563747320696d67207b5c725c6e202077696474683a20312e37656d3b5c725c6e20206865696768743a20312e37656d3b5c725c6e20206d617267696e3a2030202e32656d2030202e33656d3b5c725c6e20206f7061636974793a202e383b5c725c6e2020766572746963616c2d616c69676e3a6d6964646c653b5c725c6e2020637572736f723a20706f696e7465723b5c725c6e7d5c725c6e5c725c6e2e696e7374727563747320696d673a686f766572207b5c725c6e20206f7061636974793a20313b5c725c6e7d205c725c6e5c725c6e2e696e7374727563747320646976207b5c725c6e2020766572746963616c2d616c69676e3a6d6964646c653b5c725c6e20206c696e652d6865696768743a312e35656d3b5c725c6e7d5c725c6e5c725c6e2e696e73747275637473206469762e6968656c70207b5c725c6e20206d617267696e2d746f703a31656d3b4d08025c725c6e7d5c725c6e5c725c6e272c0a202020202020202027272c0a2020202020205d293b0a202020202020652e6578706f727473203d20743b0a202020207d2c0a2020202066756e6374696f6e2028652c20742c206e29207b0a2020202020202775736520737472696374273b0a202020202020652e6578706f727473203d2066756e6374696f6e2028652c207429207b0a202020202020202069662028217429207b0a2020202020202020202074203d207b7d3b0a20202020202020207d0a202020202020202069662028747970656f66202865203d206520262620652e5f5f65734d6f64756c65203f20652e64656661756c74203a206529203d3d2027737472696e672729207b0a20202020202020202020696620282f5e5b27225d2e2a5b27225d242f2e7465737428652929207b0a20202020202020202020202065203d20652e736c69636528312c202d31293b0a202020202020202020207d0a2020202020202020202069662028742e6861736829207b0a20202020202020202020202065202b3d20742e686173683b0a202020202020202020207d0a20202020202020202020696620282f5b22272829205c745c6e5d2f2e74657374286529207c7c20742e6e65656451756f74657329207b0a20202020202020202020202072657475726e202722272e636f6e636174280a2020202020202020202020202020652e7265706c61634d080265282f222f672c20275c5c2227292e7265706c616365282f5c6e2f672c20275c5c6e27292c0a20202020202020202020202020202722270a202020202020202020202020293b0a202020202020202020207d20656c7365207b0a20202020202020202020202072657475726e20653b0a202020202020202020207d0a20202020202020207d20656c7365207b0a2020202020202020202072657475726e20653b0a20202020202020207d0a2020202020207d3b0a202020207d2c0a2020202066756e6374696f6e2028652c20742c206e29207b0a2020202020202775736520737472696374273b0a2020202020206e2e722874293b0a202020202020742e64656661756c74203d0a202020202020202027646174613a696d6167652f706e673b6261736536342c6956424f5277304b47676f414141414e5355684555674141415351414141435843414d414141434c447461784141414141334e435356514943416a6234552f67414141426746424d5645582f2f2f387a4d7a4d704b536b6849534658566c6e5649536b364f6a704852556c4d54453961576c6f70496963714b7a42455130646d5a6d596849696c505456464552306843516b4941414142665857466d5a6d592f504548584b544673626e464852556e63496a4456496a4551454242635847424b535570555531654d6934304943416b395045415845786a564b5369506a704b47694d080234775a47526c6658574653556c4a5054303645686f6b364d7a755a6d5a6e65495367684a79424d54452b4e6c4a546c4a7a4c654b6a4b4468494e73626e45684b536f484352415a4769462b673451704953514243416478636e4e3064336e6c4d44455146786c3866494141454133664b536f5649534a376533744e5546455243676a574d5451494568415141674b68704b56625947486b4d6a6b7942776b6842516463584744674c54654c49535238486838714d6a545749694f534a7a4257457841534341494841415256575672754a7a7146485348474b432b324a7a4a304842354a4668424c455173514779454a45516b704241656d716176784b532f4d4d7a506f4a796d6c4b536b6748786f5841416a6b4b4475384d69356d4668645646786c4b5355724f4b5451724e545569424148464a6a75384a53717249695766485371544879703149436842447777364477304846527367417731714942786f47794a464277304e44786137736f52384141414167485253546c4d412f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f642f2f2f2f2f2f2f642f2f2f2f346a4d2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f33662f2f2f2f2f2f33662f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f39332f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f4d08022f2f2f2f33662f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f396250487151414141414a6345685a63774141437849414141735341644c6466767741414141576445565964454e795a5746306157397549465270625755414d4451764d5455764d6a4453476e687a41414141494852465748525462325a30643246795a51424e59574e796232316c5a476c6849455a70636d563362334a726379424e574c75524b695141414265555355524256486963375a3333593970573138656a4b316c6f57526856384153445147794b77513862764233484b346b7a3279544e5873314f6d71524e75744c7872372f6e5367774a4a43457773586a3739507444456d4e78772f33346e4850507563756e546d484e2f7973626e65707166763630737144342f74576746685a4f582b7067416b534341764c3649383269424e2f70537a6f6a58304252416e5343376f67594966702f526b48424a77674d7471564c437747664d4a4c4d2f366753676943636e67644443697749586e2b575953566d354d644743344979662b71534976674d483468486e4c586764524568424e386e57386c6b52464d796d573252384b496f6b754a49395671792b62722f41727a43303650642f6d514562766166552f4d2b4a57683444584532665252465449684d4e6c56566b74536d696b453138542f564a496c344869454f36624b423350313237344842727a6e54314d08023451486b48686b3853494e736676556633774b7758646657654b526a546741495759425369534c694b444335466d4b386a4d426d69416a7171526d526437326e5a4f4951783541416770576c494943514649576a412f61666d35656a45687142506e38564534324b6b7235434941584961664a53505345306471364661554574695446474c617449584536496854495232575a42564664735777556d41476e794451786b62775845616c65544b2f52773553436d72735a494e45385a2f6d70786154553548317346504f4a7861674273626c633144394654434c794a47797a3658523862646957456934686b61714b4749503944416b4d6973305454536c3766454a3445505569616f4d5855664634356d794347336a5a4a6153496c425369446f69363970546e4a505859786754442f3549486a43446f3870792f454939764a515a737951306b586c516c49686f31576733596a5361326f2b35335a446b516b59354a536351782b2b534464694a5055543565564770415354425463674d704b7a563963703852537a4651395857715031327848695657706b6770655278473274692f644e4b492b4e6857484679745470432b64696265586a4252636745704b53587a737348566f766c4551444170594b41556b3256304c4572654a4a467350423350464f4a706f4254594b673951476730704b5a46557a6a6963735835684e392b525878506a4d4d080233342f4b684e53424c7a47657051634b53385949536f547a367978636945647a794d79304537483237756f6c312b506867534d6f7447384b54777a41755076694e476c47434846574a6e48746a515a4a452f734b462f49774e4176596e755343614a426e49316e4d72482b4744634b556c624b356d527a576a514b45715a45534d6e4a69685176596a5a4b6741584a6b4234686f6c5a63673779627049465377642f7a75424751576c4b5348574245526631436a34347576786b534659764b3467514a6b3166706b536a45302b6b6f79524f4972685731756b54456c444c3572734d355a39786b4d354b584b577063534a414b354a4b534f42476a6b7837584e4d6e7065447a4b383779535363736147614145795866586c68776763546948544177786367574a6b68556f6863634c5336496e766f624661355279504a4b4c6d526965442b4b52534b38587a7762346b5a437773354852495562754946453551736f536e48744b6e44654d6b475973694a636853547050314d767464546d2f51504f496179586b6f43743355357578695347784f56496177355138597351547446625067693142714a625078394f514337545072736c3558332b4b7a523453682f696b524f654747626d45524d6d4d704c7132493439386a512b7574396355624530386e347444476e422b50524d76672b7646307a5644416563556b36516b5a565854756f51557a4d080266465379325565344e5734786b665475425952634f4c49527775466a45776b714e78617535624f4b49624837434878454c5774444d6b43456d4d46695a4c39716c7454386d53754673387678744b46576946656b7756735339454d706f547770446155756f626e374346426e52717a6873514965694c5a54796374496245517539325a6b6a654d654a70426b4676586172554d59417041444b494b386668614176474454397044696b69305264514752705377674f4630696c73666730486c4c52356b355878547864466d6c4c7a784e5554554d31462b4e314e6f3179467a784a6a3452683671335058682b567462534b51556f61774d6959333667307a4d482b6a326967346f44464379696c35526d5a5049305a43385963547839586938514b4f316444784b794c564d4a74364f30755143354e3574595a43534c615373524d6a444857645a4e685a514e45536478584c344f2b454431374d794f6c6c516b794f7a4147446b77566f74682b7270516a7450494569794d344657514e367178644e624d5448524c705a3358554e71536b72486b466754704a6a673877664d577959494967416a334541566a502f4955556e5642534d50516a614348447654396b4f687a38766c3468612f3261686e67464a36506341556f71376444592f2f556233662f6a775636796e504d4c754244714a454974476c464d534a51443766653879767a634a465a4d08025452714c70667a686846664c78594b57777267514454597a6e6469766c306f72426653365852644746374674594d4536584b5577704259686d59366332762b5041516676312f5137616937547966527453576a684951475741364d6d417a77614f7a4874527245364a6f69417156597562782b4873784970716e316446456548747873496348594a757551416a526a7a4972384372326b6d772b764e39646835544d39784e414b4e69575a69546957755634796b732b6d347757466850786f7256797246644a7252415052736b774d4d374b487050706b50625945545a443854494259676d6964494c7064317a46704474656269774e496a4f5a76564e594a6b6b654d45474b4c3532534f336f4c68625548457354745479395278466f6b734e307a5951654c5569462b6232475970737958356662514f52647543772f557030596f4a4a6333674a417571584e5532426542457a70503549786773534c594f502b544532586938786a515144345a566f7876614e793373794259534b62583041576f41456a596b6e524748794751796d385678575839467349496b452f5a726c56374e7365585079676c7468675452362b4278655a366b74394b5a58557338756d77686f61673170415368327846366f572f696567456d52656a2b35682b43524d6b4a31533579653757556e59447174536254764c624e42696555555553793866693677326578674d080264535365477449437431784e6a4b70623354442b3765472f4b30484b5265775734507a624b355769554e4e6d796d63783568346f4a544a6e4366526568784b5731765a51494a384f306f35514f4a524e744a5274754e766c70426b6e326f4e795a736355744e3675743247537262396e5462647470594753754a436f5679336634634e704b517a4a4b6a7458554a69384654333750676143444878544875724463586132526a652f6c6548644f4138716d2f52396b4670496b67344a4932457042636d4e704338593054674c436c54562b6f46764769375332686a5731704f4f44416148784a68696b6b6730684753307252774e3639795346306f735a574f4b364b7958696a45675259536f356c696d784164336a472b4a5856474e36356a536939515a396d565a6977675763636b337176314e5630696d30375869425a78766c444c704173795455613346687a66594138705a77574a675251414a397a596c4c4a4a6e52476e4731646749452b796738534a774d684452486a6b5031737579773143726b48385470666a39514476344776452b4b4f625674376967516c784a46596e766777556233314967534649486f35725865464a7046712b6e6f6b58596d7968664b363851446f2f6235744d6976303879572f71666b4a37436d66335343744e4f6f784d30774264534869616579435a3944596564595167646b5067546c4d7455566762324d08024c466c495674495353726168395158733974335838324b4f7055626f66674e573033366b4a44556d6a3147424171324d34564341532f2f4979497877746c7349596c533039395a426767514171503046664e332b746a39533263554e4b38794359512b4378434649744134432b4352722f47442b326e522b585374514f6c77526947796738527a7168726f424358462f4959416f2f545741506f54754c536643644b394a566a384e7a355551655669535368774f5a4d645464624e59776b787559453545455241477644644b446672797361532b4e3777526c464d774c42464d676844765549624153573034522b537a4743674b33684f58786a51397062303967567958733066456649546d544d62444a6e484b396d6a6a556954486153575248593348724d5561394275676c4330513033395a5141367944414548544d38524855324e4d73346268736d6c4c7978493657575733745352796137515677643732357a4a397335626c58643757314e4d71325835496b454a41494a6f6875786959546939394e304c4d6f4f48526a493555697035323063783373304e79495834336d675a493750584c41646a772b7473466e4c646b6c4a6d2b5332554179436c4a44334d774b345651496b77464147795a5066617256585a70723969556e4d614b71646479632b5556696e797646382f64785a38305a2f4a4d645a6c3230344c453653316b644a324d080244777447495a37626351504a4b785863496e6562424b48434b397979506f352b6274305a6c637570755541545679447a35484432794c34494f5732425674496f716f716c71624535684f646d647265426c782f514c43434a45657a335755337a7276546f6f6859503364654f566355474d6974313258322f467168574a5431373769552f59614a7049526b4b782f436b48595a76306b4136627668422b5741314f77474a452b4f722b6c432f4661526954307042344e6278584e4655446d544c71364e30344939704a616b2b71314d7157394a2f59494f494130726c2b735a45764b514563526f496c306b64703855457969584b574f6c415a625074523035376e534c53487a4f77705347495447576b46685a364f3048394a5152554d6f2f5752647a3538704d69324458616c44586274575a6364357644346b674a5a575a48464973436f616b372b486943492f724e5a356f50386d4c39536446536d77526959574641494547367852484f65322b6a6341414e376b6c3565684f524d4b4d504a302f77757639353949453379345736775170647572794d655141695965454d686764506d3772446c4c4f4434797849596d6554782f685a636a4d4f546b726c4e506c725633726c5778484f566b536e3555697357694d6e5151534b355036544a4b5834317050504848325359466f51657064544a2f4e6a2f31327079334b504e65554f486e516c4d08026c784277756555634c4c4e7a51516a4c56637137354a456f527776466d4e6a6d354c6a695142774f496b59544150596d417449736b2f5331726339716b5547425a434b78527a666f4e4c6c754e4f69763431473341755156645842497a68736a413734427854306d522f4a4b52487362427a694359394474693545624f476744614e6357686d663051684949706555314b423567796c414967547a5a565642776d64364a4b636b645473695a6f4d5277537670496a37757830636e734b50526b4b413655514f6d754d5253466e63746d5359425a436143433173506c374b4868454d325068507059713757517336513848314a53556d6954626245556f5964705070753078686c6f43694472795646704733526d673149764a4175466f71574f2f31636151516b764a634e4b4248526e416c546c44557079765968526557414b695878685653657a59304d696166627858535a6d705352717774646b7170453567646d4244514c6f6f6245796c4643776f786d59416e53494a77435a415976313341764e3543346245534b304b7a6c784d6b416f7079536862476630362f536d456233706953536a73736a6c396473356535714944456953566d664c4c4f553158476b6e71504a464b39714637724d47694d38692b753074326145584e366652494c4c71536776797a6b3754426752445379546f6e614e31717863376465547852353231334946534d0802567634687667645159777364375a33472f55646d354e7a6667492f30644c432f617a5a3054486c2b695975764e3157416c386964764746626c48447949612f396763512f6d345338624f793344394e6a51454a6b5244417362455141684d4478394d6c737a4746526846566b70725a7a6d547437497a39553949346b44524d51454e5349306d794d3535792b6b7571476d6e317a6c4838772b786f54456a6167517138775132543667737a453375502f504d596a516c4a4f307a436353545a6176577564553232534b373354512f58494c2b67786e4d333764534d44543664337a2f516a73614868496176482b454d723376586b532b7073534535385a7570656d324b6d69616b66324c4d316a5139535039594f356f6970432f423646704433486d34737950794577325a5330765141742f51576d676336334e4d7a354b6d76457937524f7763624b73765033392b65564f3932587a5975506165494e362f4836654270535553576a68382b664c6c3463335631643933726b33385135775370476e624563332f336a783866502f4e37552b66506c3235657632336c394c764f2b4f56385454786350586d3477642f3350373530366662763777354f705361447964646c70674f704b6e373273377134665572503656432b35564b70526f4b33666e34353265704f596250304e44436a667458377152435657686766372f3637766d3949326d566d4d0802347a535643424e6d524864324a5965664e792f58486c576d707372595433627550445476632f53706d7454514533702f764f6e6c3538394b35584f6c45717055716c3634634b6471782b6b54583453544e4f414e4f5835624c6f68586278536658596d504b63705049662f555870572f66697253307258694d627168352f334e79716c75546d396b555834522b585a787576373073456b6c4b5941535a78797a4635652f6576754c656a673470785271644c6c4839394b4279346f765365512b697530454635634e4451525371564b6c616633626b354336666951706832504771735066727756316e2f38526b687a345675582f3541656a6637506c74434e4233652b6e31734d68557951674e6e636d61663344672b6d766866416e52324e2f623836364a723631342b76357234424b475a474b59684f6c586476706239484e6242453742333964436156536f564378675a43692b457774504c753373336d324950636353464e66567a372b2f4750742b59416b6b476132797a6950382f63755336315272577765664835526e6778424a42434a6b734b68304f704d326665765a47533433366d593049534f534978315278792b63625074384a6d492b7044576c7973336e32384f754b595932503136755535544153696b4d4757516c6a68556a6a382b6b68794f70527370654e426d7634366265543668637169325a4136664453564c6c79566d4d08027334544d67652f335145554f715455494b5477597268366531514c517a6f57704b6b7a5769492f664953516d2f6f6d5a51307050466435393565556465706a592b2f4b6d57385762534346466b4d5176482b5657754d46372b4e416d7637656d71586b67394133637a6a41326b4536733346624f6941644b50332b367a767a3247397342477870726e5468697653374f4c55747969345954586d50317258496c656f774a474e505339392f764c693977746c53757262335331586a5964304148764571727939756b303663687a513570432b78623053382b464f6f6d79566251776f2f32372b2f2b6f4b7a362b50537a73586e7a704441332f6266536c6d4f484d4f574a6f62304a64614f364d33665569566e534f4276393341586253677450547936553130305a3067446b464b6c6a562b6b54593573756163304b61547035556647336b62655067326e6e434242707650396c634f2f4f544d6c4a497264727a617668366f6852306968307361336878456b6b75357461554a49552f513130704331375033784e50794e4579516f774c352f66714d704c704d47536a7a4a4937457a586b582b724a354a3259553048564a34342f6d4870696953377550535a4a436d47592f4550715672653164444a55644c416b6f627a7938327957585332456377436249443664476631626c526b43703348322b5449756d653069535175436e48624c4b62514d0802312f627531306444516c335559505574523638595a54723350622f364d2f516e4f3367324946303636656a446953586c43614252453537584f74523272757151624b6c42494737314c636b6f38647875734f39663353764f686f53786b795337696d4e442b6c4c58465866446147513547695137447135694d4d7568745252333559366e4e396a6478734636645664534a525778714130506952384e665358327563666562507644416c5341426a64447351685374336466676476512f6265326f5830375930446b65733234654a6a6a512f70533235687a2f3661636f494546526c41756964744c7663676b514e56324d35766432775236354443465369534e376b65704d45574c44543272704976656f3057392f696e4571354f37666f595870797237442b5157675a496f746c666c69486a78706d4367795656397539446a6479484e4e726a786f54307059396d66623639385931443441364853392b2f2f7442733943454e555872307979334c41726476535275764c306f6b496b6e336c4d61453949555a4c575876377a7442776755752b456f58306f72322b38444e66647a384e5251475737537633633573584c6e354e3065535931416142784c3370526e424b5058353077624f686d77677061434550316f6c4736494a6b6d6d6963666e4770387163725333686b4254366135556367445343306a695178424d344b70703965364669484d080231496753376f6e2f63324a413130556a624833344d466c7644426943516d6e45426467644553444c546848622f6551546d617258325076327776327778504f4138454d6872706f364f4e53342f444b30437835372f3368635058316b6651434454586753476b4d5343647a35486a7a346f2b33536e6151384d4355524f49774a454f325132392b755075714d3173374f427551436c6632723075526c5a58684270776f75596430516b654f7232332f4666712b5a4231524b686665534939494330516d5373536a33353575684330687a59556852337145567061586e5673596b4774494a3355736d2b5a7658742f66474a783543382b6c4668657246363765334634656a4c6e44666554563630396668554e346e6333736138446f39754532445039576a42796d6c3978434f726d72787641713965754e734846347774324461504c306a35766270455534366653783779396f372f365074384b446c705361712b35667662486173725a454a34397a6555727052492f336f7874485031637259624d5668455050373638364d444c3145545750767231514b5a6c6a32356e71336265484e313559685031526c4679646e447a5a62663758434435796550316a714272754b56545a6548333173626f356c4e2f59395a452f4f487a7a4d5658526d3944574b7176564f37655031494d567878593461306f75494a3330635a483378424b526c53362b2f4d0802665a3171764c71316176713555726c7a764e3752326f6b752b786b5231694756724c53682b732f337731564c312b75566935586e7231372f73765234614f73364752487472593047704933782f7646333166566f2b7533662f34576450584e67787653646c5a73574d5a626b7955595739686376586c302f59387275496e62627835385874334f637269734855484a36734f4d684f545673534e65664c693965764e77372b584c50576c312b794337764779564867334b574634676c4e31655864313775616675716175726b5266342f4d766f46717a47754647514f4d392b797a46436a5a32647a63334e5a484a7a522b51357939544730524a3431494169372b464461474f4858455975414e6c524767484a772b4e7250467247366877525733484a794e54487873364b33706c6c743469744b59323459634c6233336a512b397a4c65693958787657346e765759437047527741592f69424d6b7232343937716d4842434e61575147626367484a52476b7953494f55484346356675796f32353065704255336c49783937454779716d6e6455724b414e44754d434e3451625663774a5864644e455956446b2f786b6d4d7947706945733466457a635256476d37484a50732b476d5a57334953306a6b7a52322b45586d487439686161757953675a452b642b2f4238446b6f6d7a425352786c68684e6c3949344d6c43796754524c78794350334d080263646a2b36773170426d49325159646e78496157624935746a414d695244463257493044592f6a4a6f48556f7a51454366386968686c6a4e4b6b745453307544555043654c792b395868493550483868546865584c4b416848396679346b5363434e4f583677394271564a2f4b3354516742444567516a6c566d35486449736a644a6b6665786f636f2f446b433735664436762b75356561424a49706756777931564e463551456e2b382f702b5a50423553415a35313372596e364b4a7248754c48664476386c6f6669592b564f6e7676494a767638486c43614b76614c567a4d6b34516b52434f413251356b384c676b2b5977584139494554716c7a5335463636776a4c554478435658715076767870634b55384149552f49464944414a5a67566d54454a774d725a425264422f725a6f415557574336795a706a524651756e52614155714b5362345a6b364a5958484c746a704c53617949784e714c546c3035314e662f562f4358515677615a76706742586670712f75762f666a322b66766a686b74593372506d76344d762f75745150502f7a774e627a6e314c3979702f38442f4e776c666f4346372f3841414141415355564f524b35435949493d273b0a202020207d2c0a2020202066756e6374696f6e2028652c20742c206e29207b0a2020202020207661722072203d206e2830293b0a2020202020207661722069203d206e2837294d08023b0a20202020202069662028747970656f66202869203d20692e5f5f65734d6f64756c65203f20692e64656661756c74203a206929203d3d2027737472696e672729207b0a202020202020202069203d205b5b652e692c20692c2027275d5d3b0a2020202020207d0a202020202020766172206f203d207b20696e736572743a202768656164272c2073696e676c65746f6e3a2066616c7365207d3b0a2020202020207228692c206f293b0a2020202020207661722061203d20692e6c6f63616c73203f20692e6c6f63616c73203a207b7d3b0a202020202020652e6578706f727473203d20613b0a202020207d2c0a2020202066756e6374696f6e2028652c20742c206e29207b0a2020202020202874203d206e2831292866616c736529292e70757368285b0a2020202020202020652e692c0a2020202020202020272e6d657373616765207b5c725c6e202020207669736962696c6974793a2068696464656e3b5c725c6e20202020636f6c6f723a20234242423b5c725c6e20202020746578742d616c69676e3a2063656e7465723b5c725c6e20202020626f726465722d7261646975733a202e34656d3b5c725c6e2020202070616464696e673a202e3534656d3b5c725c6e20202020706f736974696f6e3a2066697865643b5c725c6e202020207a2d696e6465783a20323b5c725c6e202020206c6566743a203530253b5c725c6e20204d08022020746f703a20372e3334656d3b5c725c6e20202020666f6e742d73697a653a20312e3235656d3b202f2a20526f626f746f202a2f5c725c6e202020202f2a20666f6e742d73697a653a20312e3235656d3b202a2f5c725c6e202020206f7061636974793a202e39383b5c725c6e20202020626f782d736861646f773a2030202e3237656d202e3534656d2030207267626128302c20302c20302c20302e34292c2030202e34656d20312e3334656d2030207267626128302c20302c20302c20302e3339293b5c725c6e20202020776f72642d777261703a20627265616b2d776f72643b5c725c6e20207d5c725c6e20205c725c6e202023736e61636b626172207b5c725c6e202020206261636b67726f756e642d636f6c6f723a20233232323b5c725c6e202020206d696e2d77696474683a2031362e3637656d3b5c725c6e202020206d61782d77696474683a2031362e3637656d3b5c725c6e202020206d617267696e2d6c6566743a202d382e333335656d3b5c725c6e20207d5c725c6e20205c725c6e2020236572726f726d7367207b5c725c6e202020206261636b67726f756e642d636f6c6f723a20233939323332393b5c725c6e20202020637572736f723a20706f696e7465723b5c725c6e202020206d696e2d77696474683a2032332e3334656d3b5c725c6e202020206d61782d77696474683a2032332e3334656d3b5c725c6e204d08022020206d617267696e2d6c6566743a202d31312e3637656d3b5c725c6e20202020636f6c6f723a20236464643b5c725c6e20207d5c725c6e20205c725c6e2020236572726f726d7367202e636c6f736562746e207b5c725c6e202020206d617267696e2d6c6566743a202e3638656d3b5c725c6e20202020636f6c6f723a20236464643b5c725c6e20202020666f6e742d7765696768743a20626f6c643b5c725c6e20202020666c6f61743a2072696768743b5c725c6e20202020666f6e742d73697a653a20312e3438656d3b5c725c6e202020206c696e652d6865696768743a202e39656d3b5c725c6e20202020637572736f723a20706f696e7465723b5c725c6e20207d5c725c6e20205c725c6e2020236572726f726d7367202e636c6f736562746e3a686f766572207b5c725c6e20202020636f6c6f723a20233030303b5c725c6e20207d5c725c6e20205c725c6e202023736e61636b6261722e73686f772c5c725c6e2020236572726f726d73672e73686f77207b5c725c6e202020207669736962696c6974793a2076697369626c653b5c725c6e202020202d7765626b69742d616e696d6174696f6e3a206d6573736167652d2d66616465696e20302e353b5c725c6e20202020616e696d6174696f6e3a206d6573736167652d2d66616465696e20302e35733b5c725c6e20207d5c725c6e20205c725c6e202023736e61636b6261724d08022e686964652c5c725c6e2020236572726f726d73672e68696465207b5c725c6e202020207669736962696c6974793a2068696464656e3b5c725c6e202020202d7765626b69742d616e696d6174696f6e3a206d6573736167652d2d666164656f757420302e35733b5c725c6e20202020616e696d6174696f6e3a206d6573736167652d2d666164656f757420302e35733b5c725c6e202020207472616e736974696f6e3a207669736962696c69747920302e35733b5c725c6e20207d5c725c6e20205c725c6e2020402d7765626b69742d6b65796672616d6573206d6573736167652d2d66616465696e207b5c725c6e2020202066726f6d207b5c725c6e202020202020746f703a20342e3637656d3b5c725c6e2020202020206f7061636974793a20303b5c725c6e202020207d5c725c6e20205c725c6e20202020746f207b5c725c6e202020202020746f703a20372e3334656d3b5c725c6e2020202020206f7061636974793a202e39383b5c725c6e202020207d5c725c6e20207d5c725c6e20205c725c6e2020406b65796672616d6573206d6573736167652d2d66616465696e207b5c725c6e2020202066726f6d207b5c725c6e202020202020746f703a20342e3637656d3b5c725c6e2020202020206f7061636974793a20303b5c725c6e202020207d5c725c6e20205c725c6e20202020746f207b5c725c6e202020202020746f703a204d0802372e3334656d3b5c725c6e2020202020206f7061636974793a202e39383b5c725c6e202020207d5c725c6e20207d5c725c6e20205c725c6e2020402d7765626b69742d6b65796672616d6573206d6573736167652d2d666164656f7574207b5c725c6e2020202066726f6d207b5c725c6e202020202020746f703a20372e3334656d3b5c725c6e2020202020206f7061636974793a202e39383b5c725c6e202020207d5c725c6e20205c725c6e20202020746f207b5c725c6e202020202020746f703a20342e3637656d3b5c725c6e2020202020206f7061636974793a20303b5c725c6e202020207d5c725c6e20207d5c725c6e20205c725c6e2020406b65796672616d6573206d6573736167652d2d666164656f7574207b5c725c6e2020202066726f6d207b5c725c6e202020202020746f703a20372e3334656d3b5c725c6e2020202020206f7061636974793a202e39383b5c725c6e202020207d5c725c6e20205c725c6e20202020746f207b5c725c6e202020202020746f703a20342e3637656d3b5c725c6e2020202020206f7061636974793a20303b5c725c6e202020207d5c725c6e20207d5c725c6e2020272c0a202020202020202027272c0a2020202020205d293b0a202020202020652e6578706f727473203d20743b0a202020207d2c0a2020202066756e6374696f6e2028742c206e2c207229207b0a202020202020277573654d080220737472696374273b0a20202020202066756e6374696f6e206328652c207429207b0a2020202020202020746869732e746f706963203d20653b0a2020202020202020696620287429207b0a20202020202020202020746869732e6f6e4576656e74203d20743b0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e2064286529207b0a2020202020202020696620287329207b0a202020202020202020207661722074203d206e657720732e4c697374656e657228293b0a20202020202020202020742e676574546f706963203d2066756e6374696f6e202829207b0a20202020202020202020202072657475726e20652e676574546f70696328293b0a202020202020202020207d3b0a20202020202020202020742e6f6e4576656e74203d2066756e6374696f6e20287429207b0a202020202020202020202020652e6f6e4576656e742874293b0a202020202020202020207d3b0a20202020202020202020732e6164644c697374656e65722874293b0a20202020202020207d20656c7365207b0a20202020202020202020766172206e203d20652e676574546f70696328293b0a202020202020202020207661722072203d206c5b6e5d3b0a2020202020202020202069662028217229207b0a20202020202020202020202072203d205b5d3b0a2020202020202020202020206c5b6e5d203d20723b0a204d08022020202020202020207d0a20202020202020202020722e707573682865293b0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e207528652c207429207b0a2020202020202020696620287329207b0a20202020202020202020732e666972654576656e7428652c2074293b0a20202020202020207d20656c7365207b0a20202020202020202020766172206e203d206c5b655d3b0a20202020202020202020696620286e29207b0a202020202020202020202020666f7220287661722072203d20303b2072203c206e2e6c656e6774683b20722b2b29207b0a20202020202020202020202020206e5b725d2e6f6e4576656e742874293b0a2020202020202020202020207d0a202020202020202020207d0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e206828652c207429207b0a2020202020202020666f722028766172206e20696e207429207b0a20202020202020202020655b6e5d203d20745b6e5d3b0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e2077286529207b0a20202020202020207661722074203d20652e746f4c6f7765724361736528293b0a2020202020202020766172206e203d2027273b0a202020202020202069662028672026262028742e737461727473576974682827687474703a2f2f2729207c7c20742e4d080273746172747357697468282768747470733a2f2f27292929207b0a202020202020202020206e203d206d202b2067202b20273f793d273b0a20202020202020207d0a202020202020202072657475726e206e202b20653b0a2020202020207d0a20202020202066756e6374696f6e20762829207b0a202020202020202072657475726e206d202b20673b0a2020202020207d0a20202020202066756e6374696f6e2041286529207b0a202020202020202066756e6374696f6e206e28652c207429207b0a20202020202020202020766172206e203d20303b0a202020202020202020202866756e6374696f6e20286529207b0a20202020202020202020202076617220743b0a202020202020202020202020666f7220280a2020202020202020202020202020766172206e203d202874203d20652e676574456c656d656e747342795461674e616d6528276f707467726f75702729292e6c656e6774683b0a20202020202020202020202020206e3b0a20202020202020202020202020206e2d2d0a20202020202020202020202029207b0a2020202020202020202020202020652e72656d6f76654368696c6428745b6e202d20315d293b0a2020202020202020202020207d0a202020202020202020202020666f7220286e203d20652e6f7074696f6e732e6c656e6774683b206e3b206e2d2d29207b0a2020202020202020202020202020652e4d08026f7074696f6e735b6e202d20315d2e706172656e744e6f64652e72656d6f76654368696c6428652e6f7074696f6e735b6e202d20315d293b0a2020202020202020202020207d0a202020202020202020207d292865293b0a202020202020202020207661722072203d20646f63756d656e742e637265617465456c656d656e7428276f7074696f6e27293b0a20202020202020202020722e74657874203d202753656c6563742041746172692037383030204361727472696467652e2e2e273b0a20202020202020202020722e64697361626c6564203d20747275653b0a20202020202020202020722e73656c6563746564203d20747275653b0a20202020202020202020652e617070656e644368696c642872293b0a202020202020202020202866756e6374696f6e206528742c207229207b0a2020202020202020202020206e2b2b3b0a202020202020202020202020747279207b0a20202020202020202020202020207661722069203d20722e66696c65733b0a2020202020202020202020202020666f722028766172206f203d20303b206f203c20692e6c656e6774683b206f2b2b29207b0a202020202020202020202020202020207661722061203d20695b6f5d3b0a20202020202020202020202020202020766172206c203d20646f63756d656e742e637265617465456c656d656e7428276f7074696f6e27293b0a2020202020204d0802202020202020202020206c2e74657874203d20612e6e616d653b0a202020202020202020202020202020206c2e76616c7565203d20612e706174683b0a20202020202020202020202020202020742e617070656e644368696c64286c293b0a20202020202020202020202020207d0a2020202020202020202020202020696620286e203c203229207b0a202020202020202020202020202020207661722073203d20722e666f6c646572733b0a20202020202020202020202020202020666f7220286f203d20303b206f203c20732e6c656e6774683b206f2b2b29207b0a2020202020202020202020202020202020207661722063203d20735b6f5d3b0a20202020202020202020202020202020202069662028632e6e616d652026262028632e70617468207c7c20632e6368696c6472656e2929207b0a20202020202020202020202020202020202020207661722064203d20646f63756d656e742e637265617465456c656d656e7428276f707467726f757027293b0a2020202020202020202020202020202020202020642e73657441747472696275746528276c6162656c272c20632e6e616d65293b0a2020202020202020202020202020202020202020742e617070656e644368696c642864293b0a20202020202020202020202020202020202020206528642c2063293b0a2020202020202020202020202020202020207d0a202020204d08022020202020202020202020207d0a20202020202020202020202020207d0a2020202020202020202020207d2066696e616c6c79207b0a20202020202020202020202020206e2d2d3b0a2020202020202020202020207d0a202020202020202020207d2928652c2074293b0a20202020202020207d0a202020202020202066756e6374696f6e207228742c206929207b0a2020202020202020202066756e6374696f6e206f28652c207429207b0a20202020202020202020202069662028742e696e6465784f6628272f2f2729203d3d202d3129207b0a202020202020202020202020202072657475726e2065202b20272f27202b20743b0a2020202020202020202020207d20656c7365207b0a202020202020202020202020202072657475726e20743b0a2020202020202020202020207d0a202020202020202020207d0a2020202020202020202066756e6374696f6e206128652c20742c206e2c206929207b0a2020202020202020202020207661722061203d20742e706174685072656669783b0a20202020202020202020202069662028216129207b0a2020202020202020202020202020766172206c203d206e203f206e2e6c617374496e6465784f6628272f2729203a202d313b0a202020202020202020202020202061203d206c203d3d202d31203f202727203a206e2e737562737472696e6728302c206c293b0a202020202020204d080220202020207d0a2020202020202020202020207661722073203d205b5d3b0a2020202020202020202020207661722063203d20742e66696c65733b0a202020202020202020202020696620286329207b0a2020202020202020202020202020666f7220287661722064203d20303b2064203c20632e6c656e6774683b20642b2b29207b0a202020202020202020202020202020207661722075203d20635b645d3b0a2020202020202020202020202020202069662028752e7061746820262620752e6e616d6529207b0a2020202020202020202020202020202020207661722070203d20635b645d3b0a202020202020202020202020202020202020702e70617468203d206f28612c20635b645d2e70617468293b0a202020202020202020202020202020202020732e707573682870293b0a202020202020202020202020202020207d0a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020202020692e66696c6573203d20733b0a2020202020202020202020207661722068203d205b5d3b0a2020202020202020202020207661722066203d20742e666f6c646572733b0a202020202020202020202020696620286629207b0a2020202020202020202020202020666f72202864203d20303b2064203c20662e6c656e6774683b20642b2b29207b0a20202020202020202020202020202020694d0802662028665b645d2e6368696c6472656e29207b0a2020202020202020202020202020202020207661722067203d20665b645d3b0a202020202020202020202020202020202020682e707573682867293b0a2020202020202020202020202020202020206e6577207228652c2067292e66726f6d4c69737428665b645d2e6368696c6472656e2c2061202b20272f27293b0a202020202020202020202020202020207d20656c73652069662028665b645d2e7061746829207b0a20202020202020202020202020202020202067203d20665b645d3b0a202020202020202020202020202020202020682e707573682867293b0a202020202020202020202020202020202020672e70617468203d206f28612c20665b645d2e70617468293b0a2020202020202020202020202020202020206e6577207228652c2067292e66726f6d55726c28672e70617468293b0a202020202020202020202020202020207d0a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020202020692e666f6c64657273203d20683b0a202020202020202020207d0a2020202020202020202066756e6374696f6e206c2829207b0a202020202020202020202020742e6c6f6164436f756e742d2d3b0a20202020202020202020202069662028742e6c6f6164436f756e74203d3d203029207b0a2020202020202020202020204d0802202069662028742e6572726f7229207b0a202020202020202020202020202020207928742e6572726f724d657373616765293b0a20202020202020202020202020207d20656c7365207b0a20202020202020202020202020202020666f7220287661722072203d20303b2072203c20652e6c656e6774683b20722b2b29207b0a2020202020202020202020202020202020206e28655b725d2c20742e726f6f74293b0a202020202020202020202020202020207d0a20202020202020202020202020202020752827726f6d6c6973744c6f61646564272c206e756c6c293b0a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020207d0a20202020202020202020746869732e66726f6d4c697374203d2066756e6374696f6e2028652c206e29207b0a202020202020202020202020742e6c6f6164436f756e742b2b3b0a2020202020202020202020206128742c20652c206e2c2069293b0a2020202020202020202020206c28293b0a202020202020202020207d3b0a20202020202020202020746869732e66726f6d55726c203d2066756e6374696f6e20286529207b0a202020202020202020202020742e6c6f6164436f756e742b2b3b0a202020202020202020202020766172206e203d206e657720584d4c487474705265717565737428293b0a2020202020202020202020206e2e6f70656e4d08022827474554272c2077286529293b0a2020202020202020202020206e2e6f6e6c6f6164203d2066756e6374696f6e202829207b0a2020202020202020202020202020747279207b0a20202020202020202020202020202020696620286e2e737461747573203e3d20333030207c7c206e2e737461747573203c2032303029207b0a2020202020202020202020202020202020207468726f77206e2e737461747573202b20273a2027202b206e2e737461747573546578743b0a202020202020202020202020202020207d0a202020202020202020202020202020207661722072203d204a534f4e2e7061727365286e2e726573706f6e736554657874293b0a202020202020202020202020202020206128742c20722c20652c2069293b0a20202020202020202020202020207d20636174636820286e29207b0a20202020202020202020202020202020742e6572726f72203d20747275653b0a20202020202020202020202020202020742e6572726f724d657373616765203d2065202b2027202827202b206e202b202729273b0a20202020202020202020202020207d0a20202020202020202020202020206c28293b0a2020202020202020202020207d3b0a2020202020202020202020206e2e6f6e6572726f72203d2066756e6374696f6e202829207b0a202020202020202020202020202079280a202020202020202020202020202020204d0802274572726f7220617474656d7074696e6720746f207265616420636172747269646765206c6973742e3c62723e2853656520636f6e736f6c65206c6f6720666f722064657461696c7329270a2020202020202020202020202020293b0a2020202020202020202020207d3b0a2020202020202020202020206e2e73656e6428293b0a202020202020202020207d3b0a20202020202020207d0a202020202020202066756e6374696f6e206928652c207429207b0a20202020202020202020766172206e203d207b206c6f6164436f756e743a20302c206572726f723a2066616c73652c206572726f724d6573736167653a2027272c20726f6f743a207b7d207d3b0a20202020202020202020696620287429207b0a2020202020202020202020206e65772072286e2c206e2e726f6f74292e66726f6d55726c2865293b0a202020202020202020207d20656c7365207b0a202020202020202020202020747279207b0a20202020202020202020202020207661722069203d204a534f4e2e70617273652865293b0a20202020202020202020202020206e65772072286e2c206e2e726f6f74292e66726f6d4c69737428692c206e756c6c293b0a2020202020202020202020207d20636174636820286529207b0a2020202020202020202020202020792865293b0a2020202020202020202020207d0a202020202020202020207d0a2020202020204d080220207d0a2020202020202020666f7220287661722074203d20303b2074203c20652e6c656e6774683b20742b2b29207b0a202020202020202020202866756e6374696f6e202829207b0a202020202020202020202020766172206e203d20655b745d3b0a2020202020202020202020206e2e6f6e6368616e6765203d2066756e6374696f6e202829207b0a20202020202020202020202020207661722074203d206e2e76616c75653b0a20202020202020202020202020207828742c2074727565293b0a2020202020202020202020202020746869732e626c757228293b0a2020202020202020202020202020666f7220287661722072203d20303b2072203c20652e6c656e6774683b20722b2b29207b0a2020202020202020202020202020202069662028655b725d20213d206e29207b0a202020202020202020202020202020202020655b725d2e76616c7565203d20743b0a202020202020202020202020202020207d0a20202020202020202020202020207d0a2020202020202020202020207d3b0a202020202020202020207d2928293b0a20202020202020207d0a2020202020202020746869732e6c6f61644c69737446726f6d4a736f6e203d2066756e6374696f6e20286529207b0a202020202020202020206928652c2066616c7365293b0a20202020202020207d3b0a2020202020202020746869732e6c6f61644c69737446724d08026f6d46696c65203d2066756e6374696f6e20286529207b0a202020202020202020207661722074203d20652e6e616d65203f20652e6e616d652e746f4c6f776572436173652829203a2027273b0a20202020202020202020766172206e203d20652e74797065203f20652e747970652e746f4c6f776572436173652829203a2027273b0a2020202020202020202069662028742e656e64735769746828272e6a736f6e2729207c7c206e2e696e636c756465732827746578742729207c7c206e2e696e636c7564657328276a736f6e272929207b0a2020202020202020202020207661722072203d206e65772046696c6552656164657228293b0a2020202020202020202020207661722069203d20746869733b0a202020202020202020202020722e6f6e6c6f6164203d2066756e6374696f6e20286529207b0a2020202020202020202020202020692e6c6f61644c69737446726f6d4a736f6e28652e7461726765742e726573756c74293b0a2020202020202020202020207d3b0a202020202020202020202020722e726561644173546578742865293b0a20202020202020202020202072657475726e20747275653b0a202020202020202020207d0a2020202020202020202072657475726e2066616c73653b0a20202020202020207d3b0a2020202020202020746869732e6c6f61644c69737446726f6d55726c203d2066756e6374696f4d08026e20286529207b0a202020202020202020206928652c2074727565293b0a20202020202020207d3b0a2020202020202020746869732e726573657453656c656374696f6e203d2066756e6374696f6e202829207b0a20202020202020202020666f7220287661722074203d20303b2074203c20652e6c656e6774683b20742b2b29207b0a202020202020202020202020655b745d2e73656c6563746564496e646578203d20303b0a202020202020202020207d0a20202020202020207d3b0a2020202020207d0a20202020202066756e6374696f6e204928652c207429207b0a2020202020202020766172206e203d2065203d3d202d313b0a20202020202020206966202865203d3d2045207c7c206e29207b0a202020202020202020207661722072203d20303b0a2020202020202020202069662028216e202626207429207b0a2020202020202020202020207661722069203d20446174652e6e6f772829202d205f3b0a2020202020202020202020206966202869203c207429207b0a202020202020202020202020202072203d2074202d20693b0a2020202020202020202020207d0a202020202020202020207d0a2020202020202020202073657454696d656f75742866756e6374696f6e202829207b0a202020202020202020202020696620286e207c7c2065203d3d204529207b0a20202020202020202020202020206b2e636c61734d0802734c6973742e61646428276869646527293b0a20202020202020202020202020206b2e636c6173734c6973742e72656d6f7665282773686f7727293b0a2020202020202020202020207d0a202020202020202020207d2c2072293b0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e20442829207b0a2020202020202020532e636c6173734c6973742e61646428276869646527293b0a2020202020202020532e636c6173734c6973742e72656d6f7665282773686f7727293b0a2020202020207d0a20202020202066756e6374696f6e205228652c20742c206e2c20722c206929207b0a2020202020202020766172206f203d20646f63756d656e742e676574456c656d656e74427949642865293b0a20202020202020206f2e636c6173734e616d65203d2027636f6e74726f6c732d627574746f6e273b0a2020202020202020696620286929207b0a202020202020202020206f2e6f6e636c69636b203d20693b0a20202020202020207d0a20202020202020207661722061203d20646f63756d656e742e637265617465456c656d656e7428276c6162656c27293b0a20202020202020206f2e617070656e644368696c642861293b0a2020202020202020696620287229207b0a20202020202020202020612e7365744174747269627574652827746162696e646578272c20273027293b0a2020202020204d080220202020612e6f6e6d6f757365646f776e203d2066756e6374696f6e20286529207b0a202020202020202020202020652e70726576656e7444656661756c7428293b0a202020202020202020207d3b0a20202020202020202020696620286929207b0a2020202020202020202020206f2e6f6e6b6579646f776e203d2066756e6374696f6e20286529207b0a20202020202020202020202020207661722074203d20652e77686963683b0a20202020202020202020202020206966202874203d3d3d203133207c7c2074203d3d3d20333229207b0a202020202020202020202020202020206928293b0a20202020202020202020202020207d0a2020202020202020202020207d3b0a202020202020202020207d0a20202020202020207d0a2020202020202020766172206c203d20646f63756d656e742e637265617465456c656d656e742827696d6727293b0a2020202020202020612e617070656e644368696c64286c293b0a20202020202020206c2e636c6173734e616d65203d2027636f6e74726f6c732d627574746f6e5f5f696d67273b0a20202020202020206c2e7365744174747269627574652827647261676761626c65272c202766616c736527293b0a20202020202020206c2e7365744174747269627574652827737263272c2074293b0a20202020202020206c2e73657441747472696275746528277469746c65272c206e294d08023b0a202020202020202072657475726e207b206469763a206f2c206c6162656c3a20612c20696d673a206c207d3b0a2020202020207d0a20202020202066756e6374696f6e207a286529207b0a2020202020202020652e70726576656e7444656661756c7428293b0a20202020202020207661722074203d206e756c6c3b0a202020202020202069662028652e646174615472616e736665722e6974656d7329207b0a20202020202020202020666f722028766172206e203d20303b206e203c20652e646174615472616e736665722e6974656d732e6c656e6774683b206e2b2b29207b0a2020202020202020202020207661722072203d20652e646174615472616e736665722e6974656d735b6e5d3b0a20202020202020202020202069662028722e6b696e64203d3d3d202766696c652729207b0a202020202020202020202020202074203d20722e676574417346696c6528293b0a2020202020202020202020202020696620284c2e6c6f61644c69737446726f6d46696c6528742929207b0a2020202020202020202020202020202074203d206e756c6c3b0a20202020202020202020202020207d0a2020202020202020202020202020627265616b3b0a2020202020202020202020207d0a202020202020202020202020696620280a2020202020202020202020202020722e6b696e64203d3d3d2027737472696e67272026260a20204d080220202020202020202020202028722e747970652e6d6174636828275e746578742f7572692d6c6973742729207c7c20722e747970652e6d6174636828275e746578742f706c61696e2729290a20202020202020202020202029207b0a2020202020202020202020202020722e6765744173537472696e672866756e6374696f6e20286529207b0a20202020202020202020202020202020472865293b0a20202020202020202020202020207d293b0a2020202020202020202020207d0a202020202020202020207d0a20202020202020207d0a2020202020202020696620287429207b0a20202020202020202020512874293b0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e205628652c207429207b0a2020202020202020465b655d203d207b0a202020202020202020206c6566743a20742e6765744c65667428292c0a2020202020202020202072696768743a20742e676574526967687428292c0a2020202020202020202075703a20742e676574557028292c0a20202020202020202020646f776e3a20742e676574446f776e28292c0a2020202020202020202062313a20742e676574427574746f6e3128292c0a2020202020202020202062323a20742e676574427574746f6e3228292c0a20202020202020207d3b0a2020202020207d0a20202020202066756e6374696f6e207128652c207429204d08027b0a2020202020202020766172206e203d20465b655d3b0a2020202020202020696620286e20213d206e756c6c29207b0a20202020202020202020666f722028766172207220696e206e29207b0a2020202020202020202020207661722069203d206e5b725d3b0a20202020202020202020202073776974636820287229207b0a20202020202020202020202020206361736520276c656674273a0a20202020202020202020202020202020742e7365744c6566742869293b0a20202020202020202020202020206361736520277269676874273a0a20202020202020202020202020202020742e73657452696768742869293b0a20202020202020202020202020206361736520277570273a0a20202020202020202020202020202020742e73657455702869293b0a2020202020202020202020202020636173652027646f776e273a0a20202020202020202020202020202020742e736574446f776e2869293b0a20202020202020202020202020206361736520276231273a0a20202020202020202020202020202020742e736574427574746f6e312869293b0a20202020202020202020202020206361736520276232273a0a20202020202020202020202020202020742e736574427574746f6e322869293b0a2020202020202020202020207d0a202020202020202020207d0a20202020202020207d0a2020202020207d0a20202020204d08022066756e6374696f6e204a2829207b0a2020202020202020696620285729207b0a20202020202020202020747279207b0a202020202020202020202020696620286c6f63616c53746f726167652e6765744974656d28277072656673272929207b0a202020202020202020202020202046203d204a534f4e2e7061727365286c6f63616c53746f726167652e6765744974656d282770726566732729293b0a202020202020202020202020202071282770316d6170272c204b2e70314b65794d6170293b0a202020202020202020202020202071282770326d6170272c204b2e70324b65794d6170293b0a20202020202020202020202020202866756e6374696f6e202829207b0a202020202020202020202020202020207661722065203d20462e636f6e736f6c654d61703b0a20202020202020202020202020202020696620286520213d206e756c6c29207b0a202020202020202020202020202020202020666f722028766172207420696e206529207b0a2020202020202020202020202020202020202020766172206e203d20655b745d3b0a202020202020202020202020202020202020202073776974636820287429207b0a202020202020202020202020202020202020202020206361736520277061757365273a0a2020202020202020202020202020202020202020202020204b2e73657450617573654b6579286e293b0a2020204d08022020202020202020202020202020202020202063617365202773656c656374273a0a2020202020202020202020202020202020202020202020204b2e73657453656c6563744b6579286e293b0a202020202020202020202020202020202020202020206361736520277265736574273a0a2020202020202020202020202020202020202020202020204b2e73657452657365744b6579286e293b0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020207d0a202020202020202020202020202020207d0a20202020202020202020202020207d2928293b0a20202020202020202020202020207661722065203d20462e646973706c617946696c7465723b0a2020202020202020202020202020696620286520213d3d20766f6964203029207b0a20202020202020202020202020202020592e73657446696c746572456e61626c65642865293b0a20202020202020202020202020207d0a20202020202020202020202020207661722074203d20462e646973706c6179526174696f3b0a2020202020202020202020202020696620287420213d3d20766f6964203029207b0a20202020202020202020202020202020592e73657453637265656e526174696f2874293b0a20202020202020202020202020207d0a2020202020202020202020202020766172206e203d20462e646973706c6179534d0802697a653b0a2020202020202020202020202020696620286e20213d3d20766f6964203029207b0a20202020202020202020202020202020592e73657453637265656e53697a65286e293b0a20202020202020202020202020207d0a20202020202020202020202020207661722072203d20462e6873456e61626c65643b0a2020202020202020202020202020696620287220213d3d20766f6964203029207b0a20202020202020202020202020202020502e736574456e61626c65642872293b0a20202020202020202020202020207d0a20202020202020202020202020207661722069203d20462e6873476c6f62616c3b0a2020202020202020202020202020696620286920213d3d20766f6964203029207b0a20202020202020202020202020202020502e736574476c6f62616c2869293b0a20202020202020202020202020207d0a2020202020202020202020202020766172206f203d20462e687346616c6c6261636b3b0a2020202020202020202020202020696620286f20213d3d20766f6964203029207b0a20202020202020202020202020202020502e7365744c6f63616c46616c6c6261636b286f293b0a20202020202020202020202020207d0a20202020202020202020202020207661722061203d20462e70616c657474653b0a2020202020202020202020202020696620286120213d3d20766f6964203029207b0a2020204d0802202020202020202020202020204f2e73657450616c65747465496e6465782861293b0a20202020202020202020202020207d0a2020202020202020202020202020766172206c203d20465b4e5d3b0a2020202020202020202020202020696620286c20213d3d20766f6964203029207b0a20202020202020202020202020202020592e73657446756c6c73637265656e4d6f6465286c293b0a20202020202020202020202020207d0a20202020202020202020202020207661722073203d20462e7673796e633b0a2020202020202020202020202020696620287320213d3d20766f6964203029207b0a202020202020202020202020202020206a2e7365745673796e63456e61626c65642873293b0a20202020202020202020202020207d0a20202020202020202020202020207661722063203d20462e6672616d65536b69703b0a2020202020202020202020202020696620286320213d3d20766f6964203029207b0a202020202020202020202020202020206a2e736574536b69704c6576656c2863293b0a20202020202020202020202020207d0a20202020202020202020202020207661722064203d20462e786d4d6f64653b0a2020202020202020202020202020696620286420213d3d20766f6964203029207b0a20202020202020202020202020202020482e536574586d4d6f64652864293b0a20202020202020202020202020204d08027d0a2020202020202020202020207d0a202020202020202020207d20636174636820286529207b0a20202020202020202020202075282773686f774572726f72272c2027416e206572726f72206f63637572726564206c6f6164696e6720707265666572656e6365733a2027202b2065293b0a20202020202020202020202046203d207b7d3b0a202020202020202020207d0a20202020202020207d20656c7365207b0a20202020202020202020636f6e736f6c652e6c6f672827556e61626c6520746f206c6f616420707265666572656e6365732c206c6f63616c2073746f726167652064697361626c65642e27293b0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e205a2829207b0a2020202020202020696620285729207b0a20202020202020202020747279207b0a20202020202020202020202056282770316d6170272c204b2e70314b65794d6170293b0a20202020202020202020202056282770326d6170272c204b2e70324b65794d6170293b0a202020202020202020202020462e636f6e736f6c654d6170203d207b0a202020202020202020202020202070617573653a204b2e67657450617573654b657928292c0a202020202020202020202020202073656c6563743a204b2e67657453656c6563744b657928292c0a202020202020202020202020202072657365743a204b2e676574524d0802657365744b657928292c0a2020202020202020202020207d3b0a202020202020202020202020462e646973706c617946696c746572203d20592e697346696c746572456e61626c656428293b0a202020202020202020202020462e646973706c617953697a65203d20592e67657453637265656e53697a6528293b0a202020202020202020202020462e646973706c6179526174696f203d20592e67657453637265656e526174696f28293b0a202020202020202020202020462e6873456e61626c6564203d20502e676574456e61626c656428293b0a202020202020202020202020462e6873476c6f62616c203d20502e676574476c6f62616c28293b0a202020202020202020202020462e687346616c6c6261636b203d20502e69734c6f63616c46616c6c6261636b28293b0a202020202020202020202020462e70616c65747465203d204f2e67657450616c65747465496e64657828293b0a202020202020202020202020465b4e5d203d20592e67657446756c6c73637265656e4d6f646528293b0a202020202020202020202020462e7673796e63203d206a2e69735673796e63456e61626c656428293b0a202020202020202020202020462e6672616d65536b6970203d206a2e676574536b69704c6576656c28293b0a202020202020202020202020462e786d4d6f6465203d20482e476574586d4d6f646528293b0a2020202020204d08022020202020206c6f63616c53746f726167652e7365744974656d28277072656673272c204a534f4e2e737472696e67696679284629293b0a202020202020202020207d20636174636820286529207b0a20202020202020202020202075282773686f774572726f72272c2027416e206572726f72206f6363757272656420736176696e6720707265666572656e6365733a2027202b2065293b0a202020202020202020207d0a20202020202020207d20656c7365207b0a20202020202020202020636f6e736f6c652e6c6f672827556e61626c6520746f207361766520707265666572656e6365732c206c6f63616c2073746f726167652064697361626c65642e27293b0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e206765286529207b0a2020202020202020666f7220287661722074203d20303b2074203c20652e6c656e6774683b20742b2b29207b0a20202020202020202020655b745d203d20303b0a20202020202020207d0a2020202020202020766172206e203d20274141426f673670566e41494c446749414378304c4241414442424542446741524178384141414141414141414141414141414141414245273b0a2020202020202020666f72202874203d20303b2074203c203138333b20742b2b29207b0a202020202020202020206e202b3d202741273b0a20202020202020207d0a20204d08022020202020206e202b3d202742273b0a2020202020202020666f72202874203d20303b2074203c2034353b20742b2b29207b0a202020202020202020206e202b3d20272f663339273b0a20202020202020207d0a2020202020202020626528286e202b3d20272f66333827292c2065293b0a2020202020207d0a20202020202066756e6374696f6e206d65286529207b0a20202020202020207661722074203d2027273b0a2020202020202020666f722028766172206e203d20303b206e203c20652e6c656e6774683b206e2b2b29207b0a2020202020202020202074202b3d20537472696e672e66726f6d43686172436f646528655b6e5d293b0a20202020202020207d0a202020202020202072657475726e2062746f612874293b0a2020202020207d0a20202020202066756e6374696f6e20626528652c207429207b0a2020202020202020766172206e203d2061746f622865293b0a2020202020202020666f7220287661722072203d20303b2072203c206e2e6c656e6774683b20722b2b29207b0a20202020202020202020745b725d203d206e2e63686172436f646541742872293b0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e2077652829207b0a2020202020202020416528293b0a20202020202020207661722065203d206e6577204461746528292e67657454696d6528293b0a202020204d0802202020207661722074203d0a2020202020202020202028706572666f726d616e636520262620706572666f726d616e63652e6e6f7720262620316533202a20706572666f726d616e63652e6e6f77282929207c7c20303b0a20202020202020207365203d20277878787878787878787878783478787879787878787878787878787878787878272e7265706c616365282f5b78795d2f672c2066756e6374696f6e20286e29207b0a202020202020202020207661722072203d203136202a204d6174682e72616e646f6d28293b0a202020202020202020206966202865203e203029207b0a20202020202020202020202072203d202865202b2072292025203136207c20303b0a20202020202020202020202065203d204d6174682e666c6f6f722865202f203136293b0a202020202020202020207d20656c7365207b0a20202020202020202020202072203d202874202b2072292025203136207c20303b0a20202020202020202020202074203d204d6174682e666c6f6f722874202f203136293b0a202020202020202020207d0a2020202020202020202072657475726e20286e203d3d3d20277827203f2072203a2028332026207229207c2038292e746f537472696e67283136293b0a20202020202020207d293b0a20202020202020206365203d2065652e4361727472696467652e47657444696765737428293b0a20202020202020204d08027565203d2064653b0a202020202020202074652e7365744869676853636f726543616c6c6261636b287065202626202857207c7c20756529203f206f65203a206965293b0a2020202020207d0a20202020202066756e6374696f6e20766528652c207429207b0a2020202020202020636f6e736f6c652e6c6f67282752656164696e6720486967682053636f7265205352414d2066726f6d206c6f63616c2073746f726167652e27293b0a2020202020202020747279207b0a20202020202020202020766172206e203d202866756e6374696f6e202829207b0a2020202020202020202020207661722065203d20276869676853636f72655352414d273b0a2020202020202020202020207661722074203d20747275653b0a202020202020202020202020696620285729207b0a2020202020202020202020202020747279207b0a2020202020202020202020202020202072657475726e206c6f63616c53746f726167652e6765744974656d2865293b0a20202020202020202020202020207d20636174636820287229207b0a202020202020202020202020202020206e203d2022416e206572726f72206f6363757272656420617474656d7074696e6720746f206c6f6164202722202b2065202b2022273a2022202b20723b0a20202020202020202020202020202020696620287429207b0a202020202020202020202020202020202020744d080268726f77206e3b0a202020202020202020202020202020207d0a2020202020202020202020202020202075282773686f774572726f72272c206e293b0a20202020202020202020202020207d0a202020202020202020202020202072657475726e206e756c6c3b0a2020202020202020202020207d0a202020202020202020202020766172206e203d2022556e61626c6520746f2072656164202722202b2065202b2022272c206c6f63616c2073746f726167652064697361626c65642e223b0a202020202020202020202020696620287429207b0a20202020202020202020202020207468726f77206e3b0a2020202020202020202020207d0a202020202020202020202020636f6e736f6c652e6c6f67286e293b0a202020202020202020207d2928293b0a20202020202020202020696620286e29207b0a202020202020202020202020636f6e736f6c652e6c6f672827466f756e6420486967682053636f7265205352414d20696e206c6f63616c2073746f726167652e27293b0a202020202020202020202020747279207b0a20202020202020202020202020206265286e2c206665293b0a2020202020202020202020207d20636174636820286529207b0a20202020202020202020202020207428274572726f7220636f6e76657274696e67205352414d3a2027202b2065293b0a202020202020202020202020202072657475726e3b4d08020a2020202020202020202020207d0a202020202020202020207d20656c7365207b0a202020202020202020202020636f6e736f6c652e6c6f6728274e6f742061626c6520746f2066696e6420486967682053636f7265205352414d20696e206c6f63616c2073746f726167652e27293b0a202020202020202020207d0a2020202020202020202065286665293b0a20202020202020207d20636174636820286529207b0a20202020202020202020742865293b0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e207965286529207b0a20202020202020207661722074203d2066756e6374696f6e20287429207b0a20202020202020202020652874293b0a20202020202020207d3b0a2020202020202020766172206e203d2066756e6374696f6e20287429207b0a20202020202020202020636f6e736f6c652e6c6f672874293b0a2020202020202020202075282773686f774572726f72272c2074293b0a2020202020202020202065286e756c6c293b0a20202020202020207d3b0a202020202020202069662028756529207b0a202020202020202020202866756e6374696f6e2028652c207429207b0a202020202020202020202020636f6e736f6c652e6c6f67282752656164696e6720486967682053636f7265205352414d2066726f6d20676c6f62616c2073746f726167652e27293b0a20202020204d080220202020202020446174652e6e6f7728293b0a202020202020202020202020766172206e203d204228274c6f6164696e6720676c6f62616c206c6561646572626f6172642e2e2e27293b0a2020202020202020202020207661722072203d206e657720584d4c487474705265717565737428293b0a202020202020202020202020722e6f70656e2827474554272c20762829202b20272f6c6f61642e7068703f643d27202b206365293b0a202020202020202020202020722e6f6e6c6f6164203d2066756e6374696f6e202829207b0a202020202020202020202020202069662028722e737461747573203d3d2032303029207b0a20202020202020202020202020202020636f6e736f6c652e6c6f6728275375636365737366756c6c79207265616420676c6f62616c206c6561646572626f61726420666f722067616d6527293b0a20202020202020202020202020202020747279207b0a202020202020202020202020202020202020626528722e726573706f6e7365546578742c206665293b0a202020202020202020202020202020207d20636174636820286529207b0a2020202020202020202020202020202020207428274572726f7220636f6e76657274696e67205352414d3a2027202b2065293b0a20202020202020202020202020202020202072657475726e3b0a202020202020202020202020202020207d0a202020202020204d080220202020202020202065286665293b0a202020202020202020202020202020204d286e2c20316533293b0a20202020202020202020202020207d20656c73652069662028722e737461747573203d3d2032303429207b0a202020202020202020202020202020207661722069203d206e756c6c3b0a2020202020202020202020202020202069662028686529207b0a2020202020202020202020202020202020207665280a202020202020202020202020202020202020202066756e6374696f6e20286529207b0a2020202020202020202020202020202020202020202069203d20653b0a202020202020202020202020202020202020202020207565203d2066616c73653b0a20202020202020202020202020202020202020207d2c0a202020202020202020202020202020202020202066756e6374696f6e202829207b7d0a202020202020202020202020202020202020293b0a202020202020202020202020202020207d0a20202020202020202020202020202020766172206f203d0a20202020202020202020202020202020202027476c6f62616c206c6f61646572626f617264206e6f742063757272656e746c7920737570706f7274656420666f7220746869732067616d652e273b0a202020202020202020202020202020206966202821756529207b0a2020202020202020202020202020202020206f202b3d20273c62723e3c624d0802723e5573696e67206c6f63616c2073746f7261676520666f7220686967682073636f7265732e273b0a202020202020202020202020202020207d0a202020202020202020202020202020206e203d2042286f293b0a20202020202020202020202020202020636f6e736f6c652e6c6f67286f293b0a20202020202020202020202020202020652869293b0a202020202020202020202020202020204d286e2c207565203f2031353030203a20336533293b0a20202020202020202020202020207d20656c7365207b0a2020202020202020202020202020202074280a202020202020202020202020202020202020274572726f722072656164696e6720676c6f62616c206c6561646572626f617264202827202b0a2020202020202020202020202020202020202020722e737461747573202b0a2020202020202020202020202020202020202020273a2027202b0a2020202020202020202020202020202020202020722e73746174757354657874202b0a20202020202020202020202020202020202020202729270a20202020202020202020202020202020293b0a20202020202020202020202020207d0a2020202020202020202020207d3b0a202020202020202020202020722e6f6e6572726f72203d2066756e6374696f6e202829207b0a202020202020202020202020202074280a20202020202020202020202020202020274572726f4d0802722072656164696e6720676c6f62616c206c6561646572626f6172642e3c62723e2873656520636f6e736f6c65206c6f6720666f722064657461696c7329270a2020202020202020202020202020293b0a2020202020202020202020207d3b0a202020202020202020202020722e73656e6428293b0a202020202020202020207d2928742c206e293b0a20202020202020207d20656c7365207b0a20202020202020202020766528742c206e293b0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e2078652829207b0a2020202020202020636f6e736f6c652e6c6f67282757726974696e6720486967682053636f7265205352414d20746f206c6f63616c2073746f726167652e27293b0a20202020202020202866756e6374696f6e202829207b0a202020202020202020207661722065203d20276869676853636f72655352414d273b0a202020202020202020207661722074203d206d65286665293b0a20202020202020202020766172206e203d20747275653b0a2020202020202020202069662028215729207b0a2020202020202020202020207661722072203d2022556e61626c6520746f207772697465202722202b2065202b2022272c206c6f63616c2073746f726167652064697361626c65642e223b0a202020202020202020202020696620286e29207b0a20202020202020202020202020204d08027468726f7720723b0a2020202020202020202020207d0a202020202020202020202020636f6e736f6c652e6c6f672872293b0a20202020202020202020202072657475726e2066616c73653b0a202020202020202020207d0a20202020202020202020747279207b0a2020202020202020202020206c6f63616c53746f726167652e7365744974656d28652c2074293b0a202020202020202020207d20636174636820287429207b0a20202020202020202020202072203d2022416e206572726f72206f6363757272656420617474656d7074696e6720746f2073617665202722202b2065202b2022273a2022202b20743b0a202020202020202020202020696620286e29207b0a20202020202020202020202020207468726f7720723b0a2020202020202020202020207d0a20202020202020202020202075282773686f774572726f72272c2072293b0a20202020202020202020202072657475726e2066616c73653b0a202020202020202020207d0a20202020202020207d2928293b0a2020202020207d0a20202020202066756e6374696f6e2041652829207b0a2020202020202020696620286c6520213d206e756c6c29207b0a20202020202020202020636c65617254696d656f7574286c65293b0a202020202020202020206c65203d206e756c6c3b0a20202020202020207d0a202020202020202069662028616529207b0a2020204d0802202020202020206165203d20303b0a20202020202020202020636f6e736f6c652e6c6f6728274853432053636f7265732068617665206368616e6765642c20736176696e672e27293b0a20202020202020202020747279207b0a20202020202020202020202069662028756529207b0a20202020202020202020202020202866756e6374696f6e202829207b0a20202020202020202020202020202020636f6e736f6c652e6c6f67282757726974696e6720486967682053636f7265205352414d20746f20676c6f62616c2073746f726167652e27293b0a202020202020202020202020202020207661722074203d206e657720584d4c487474705265717565737428293b0a20202020202020202020202020202020742e6f70656e2827504f5354272c20762829202b20272f736176652e7068703f7369643d27202b207365202b202726643d27202b206365293b0a20202020202020202020202020202020742e6f6e6c6f6164203d2066756e6374696f6e202829207b0a20202020202020202020202020202020202069662028742e737461747573203d3d2032303029207b0a2020202020202020202020202020202020202020636f6e736f6c652e6c6f67280a20202020202020202020202020202020202020202020275375636365737366756c6c7920736176656420676c6f62616c20686967682073636f72657320666f722067616d654d0802270a2020202020202020202020202020202020202020293b0a2020202020202020202020202020202020207d20656c7365207b0a2020202020202020202020202020202020202020636f6e736f6c652e6c6f672865293b0a202020202020202020202020202020202020202075280a202020202020202020202020202020202020202020202773686f774572726f72272c0a20202020202020202020202020202020202020202020274572726f7220736176696e6720676c6f62616c20686967682073636f726573202827202b0a202020202020202020202020202020202020202020202020742e737461747573202b0a202020202020202020202020202020202020202020202020273a2027202b0a202020202020202020202020202020202020202020202020742e73746174757354657874202b0a2020202020202020202020202020202020202020202020202729270a2020202020202020202020202020202020202020293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020207d3b0a20202020202020202020202020202020742e6f6e6572726f72203d2066756e6374696f6e202829207b0a20202020202020202020202020202020202075280a20202020202020202020202020202020202020202773686f774572726f72272c0a20202020202020202020202020202020202020202745724d0802726f7220736176696e6720676c6f62616c20686967682073636f7265732e3c62723e2873656520636f6e736f6c65206c6f6720666f722064657461696c7329270a202020202020202020202020202020202020293b0a202020202020202020202020202020207d3b0a20202020202020202020202020202020742e73656e64286d6528666529293b0a20202020202020202020202020207d2928293b0a2020202020202020202020207d20656c7365207b0a2020202020202020202020202020786528293b0a2020202020202020202020207d0a202020202020202020207d20636174636820286529207b0a202020202020202020202020636f6e736f6c652e6c6f672865293b0a20202020202020202020202075282773686f774572726f72272c2065293b0a202020202020202020207d0a20202020202020207d20656c7365207b0a20202020202020202020636f6e736f6c652e6c6f6728274853432053636f7265732068617665206e6f74206368616e6765642c2069676e6f72696e672e27293b0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e206b65286529207b0a20202020202020206565203d20652e6a73373830303b0a20202020202020207465203d2065652e4d61696e3b0a20202020202020206e65203d20652e64656275673b0a20202020202020206765286665293b0a202020202020204d0802207265203d2061746f62280a2020202020202020202027646174613a3b6261736536342c71653867677a5367474c476d6b592b4945506d7041474370424343444e4b415973592b52706f67512b616b42594b6b4349494d306f6b5367414c3070454d574130412b39626844466764414976624d5179582f7741636a4b454f65596f4153526c4b576e3042536744354755794a4755794a4755794a47556f4157702f35475559434463506641786f426970425957316f674b78707457746b425851426f6a4b4550517744534456505a67596151584a4764414b384134673154324978725851323657316f415851424b6e2f6f4157526c4342704e3649486f464d6b67444142794c47557952335141716b684f4f6b6843676f4b43736a4b534c47557952337743476759635a513436534649794d6f51334b4153614a4755694d415045506970414743702f7943444e43416a4e733448454d3448454342704e7944595036574c304171705a6141394942553354416b787155476b6839414371552b46714344654e7157483841657064614139494255336f44327442784151424b6b3930414b704d5341394e366b41594b6b4230414b70414343444e43416a4e694463506643716f424f69414d697870703336462b6a41474e4431715157467461494373616256725a415730416149796844304d4134673154325947476b4679526e5144557a694d4344564d080250596a4774644461794a6946744b41556f68694771735330384243496d4b7178707153716b616247716f716f54487378704b7169417257746b61614979684434494f67777062576f71716e3047476b4d6942443647476c51685a69744278444a416441536f41436c6a354759794b57516b5a6a49705a47526d424150716577596152544b45506f5961544771494549796f4147786d436b6343676f4b69424759534d69786d436b4447477071617367526d4b5330794a476d6947695270716b42594b4763435943426e4741672b547170436f57337152364673324167417a4b6b6c346161684a766f687079456e656a6f687036456e324167594466477564414e71656d467563613630415746756941734f5743786d494761715232526d474167447a4b69414b414171522b426e4b6b416861717048384144384155674f544b686d6f4761684c736766446e4a3850414449506b366d4441445442677a704c7367594465704179324341736b4438414e4d546a4f59534344624e6d696f6f6741674a7a4c477439427671517146747942304f536d51795a44514c7942304f536c67795744775761476177415051424d6b6638424934365147426d676969415961716f67416f4545365938415370494e414371522b426d7442426f5a724a477441477071725141716e2f6f6747467171494147476b427953487743386b673042475938413670494e414b4d080277415051424b6b6630414b70414947615441347a78725051456149416f5a784a6749476330414d672f444770486f577a5446347949504136704c7367594463672f4447686d736b6730425441412f41436b5a69496f5a3434365153426e6a69514130784e4d736b66384132526d4d69686e6868704249476554453079715143426e4a6a514761573068616f5961515771714d415a3842697870715371357171527075694b304f2f4141784148715232526d4d6a5139574369424969392b68655270736f51397942704e324167447a4b6c6c364959687143466f6569476f6f576a6f67434b714a475971522b426e4341354d6f53374948773579664477417944354f706777413077674e4b5337494351797872665152366b4b6862636764446b706b4d6d513042386764446b70594d6c67384447686d6a6a70415947614544615938415370494e414371522b426d7441706f5a6f596151484a4966414c79534451435a6a7742716b6730414b70414947615442593078725051456149416f5a784a6749476330414d672f444770486f577a544b597a49504136704c7367594463672f4447686d736b67304275526d4969686e6a6a70416f47656f614159615147426f4b476947476b4367614a4d6f7a4f526d4d6b6638422f49784b6a77477047596f5a345961514b426e7147674f4f6b42676143686f6a6a70416f4769544b4d7a715143426e49776f4d0802454a6a5142366b646b5a6a754b4242676a516351654e6a4a4176415379652f7744736b4538417170663455387151434647595561705a534e4142436c6c593042454b4941687053456c6141546f6a7931674a4755794d6f512b4b5755704a57466c7369456c363243416f573871662b4e67674b67456247556d594141694244347059497041345770705973466864414c6f413635377a6d5a674143494550646f716d696f71547849715374496d45694b534b3048454d6b433841764a372f414879515477417943744f616b4168617570614d3043454e41637159504e4178445146616d717a5151513041367056633046454e4148715a7a4e426844774e4b577235717571384e617061493043454b6d446a514d517161714e4242437056593046454b6d636a515951494d382f7251635179652f7743736b45384159676c54776763446b6767547170414957716f6b584b4d47756c717433344542414876666751686171477471574133536b51304f696c67643175454e4468705949702f4e327a454e4459687261392b424346716f70497251635179514c77464b6b416e6667516f6b53392b424446716841442f7667517968447a614b414149454136436941734f6941394f6941734f6941734f6941394f716b396f4245674d7a7146706f536e594b7748454241476849356f614a686777414c5142616b41686164677072616c674a3070454b57424d08026e573451705949702f4a327a454343684e6141596f674b70414a476d694d6f512b716d616b61614971647152706f6751366d4367687149547655382b6b5a6149796844336d4244796f434b354c44374a2f644143705a57526c6f6751387141664f4b314c5075306f454a475779446974544437744b424134375367516b5a61704161416a494f6339705a57674b5a475771514167357a32674c704757494f6b39715179674a79446e50614173494f6b396f4353706e3547576f4371706c3547576f432b706e5a47577159796b6c59535a494541366f426d78684a475369424435716161466b71415a735961526b6f67512b616e41685a4b67474c6b735078686c715a4753694c6b7350354753694244347164716b6c5342414f714166755167516b5a4b4945506867624977417151436f7172474b45417241414e4147715543467562474b67615249794f616b73597142704d6a6d704c474b6761526f49416f337861677732574449357151344b51396c736f5779594342414f7141416f6743786b76443045415947756441434b582b427043414b4e3657586761546d704d69786b6f476b35715449304e386746546570386a6a6c73676970596141394b42447749474133705a65464c4b6d486854437053345538594342674e79516f4d50776b4b424438594b4141715643466b715756685a4f787073684973616249684b7171614344574f6f53734d08026f4143526b73694b6b5a4c49706179526b7369704136414149443036704b7178706f5774794c476d686137497361614672386945716943384e366b4a6f4141675054716b7173415a304c68676f414345713453737166314970594151556d69702f3457783572476c72546a35787a3646726157752b63672b6861366c722f6e4a506f5776734f616c72526835787a3646726157756563672b6861366c72336e4a506f57766d45696c7361537247476b6877416a51424d6b6838424c4a49664149534b6d416861786f3041596b72444143715232526b7369457132696f794d6a4977426a516d36537277416a51424b6b686b5a4a6749506b366f414d672b54346736443667426944355069446e506d6770454e4161715575694b7553533841576c6b6a6a7043345753494e382b6f415167337a354d7a4475704b714a4c354a4c773636575347476b4c304f536c6b6f57746f414d67384436674269447750714141715661526d6941444d716c67685a496738446f674a444c477439415171517146747942384f536e4179634451453567514c73617a304f5770486f577a6f414d67387a354d6d5467672b5471674179443550716c67785a4c5141716c62685a49673844346766446e4a384e4435384c7570426141416b5a6f673844716c6b715374684a4c4a59504144544d6735544f73372f2f2f2f2f2f2f2f2f2f2f2f787678772b50374150735a2b4d08024f4d372b787359347744624f6642683845477a474d50372f4f414141415038414f48372b664178344f4441346544416763446d70426f324441716b416a59494371662b4e67514b704559324141716b476a5949437151434e67514b4e67774b7467414c4a2f394152705177514461554e45416d746767497043386b4c384f6970537942674e345538594b6c2f30506145757942384f615337594b574479514c77477157703041717467414970384b514d544b55357259414343676f4b4371514e544b553570716b67706a6b70384b494159477945414b6c4c68547969344b6b416c55446f364b4145755377396c55446f364f6a6f6942443071546d464e4743704b73575330414d6778442b704e63575330414d677a7a2b70514d5753304159676c54784d667a7570533857533050644d526a79414166454265656b41476b77414141442f5041722f2f386247334d7a41774f6247474d7a4d2f736247377344737a4d5959376a6838786a4447414467414141442f454f3459774d344d3775347737677741436b69594b71686f5942686c6b6b69595a5a4f6f614741674d7a71466b6f53545949716f74613059656130416c613231726e6d75414a5775746139357277435672324359534c577468624331726f577874612b46736942464f6942464f7141444945633649455536614b6867466e64794661442f794d41453842573566547252694441454d08023850495143704749794c6c394f73414530506170414957746861364672366969414342654f72474953436e77536b704b5368686c7259577470613570414957754946343661436b50474757746861326c726d6b416861374977415451303242494b65424b536b714673596f704836694b4b6341594b696f714262477161436b66594342674e7942384f5a675139366e7068626d46756d442b78734447774d444778686a4d324d44477a736234334d674f474d5a73316d777759414141414141412f79446d474741452f674c474d4f3447454b6b4949474d384c494943304159675854637367674a67715169467543324341735734594341734f55684949474d3861476767635475704149555a68527167365953367872727735636135385067674c447651397942784f307778504341394f2f445171516f674d5476513947686f7151434667345770494841357159796b6c5342414f7142557557382f6b5a4b4945506970492b6154685a4b6751376d4450736e3930414b6c6c5a475369424479494e672f71615367505341394e366b4b4944383730506b67447a4b70537942414f716d32685a6f674a444c477439415171517146747942384f536b7779544451474a67514763617a304f5770486f577a6f414d67387a36674269447a506b7a4d4f30684d4f6a684d657a6a2f78767a4178766a347a76345944504441317437477a73623450426a474d0802787459344d4441414144774145503938316867344f4d774f3342673464686849786f347746616b38686167674c447651413078524f7944624e73616f30504877353657386a5949436f6a7967453747556c5944497968443472514151685a5374415243466c57686749474133534b574479514c774379514d4542797467414c4a2f394156725949434b514e4a4139414d4948773579664451425a6751416d68676147686f6147684d526a776763446b6772546d6b6c616e52494541366f43693552542b526b6f67512b4b6d4d685a4b6749726c6a50736e3930414b6c6c5a475769424479494e672f71587967505341394e36414a6a436751694c6e4d505a6b494549675139366b4168616d704949576f715979466d4b5356684a6d694769434a4d3653567159776751447167483747536d5167516942443459477a49774d6241774d444747417a51774f3732787362477a754159787362474f4467594141414141426a2f494d3459444152732b4d414d3773594d6e5171576d5071505951554759514147595155475951655059515547595277475951554759534d475951554759546347595155475955734759515547595638475951554759584d4759515541435745464432454644324546426d454f4432454641495a6842515a684651415059515549595155505951555059515547595155475951414c595155475951634c59515547595134504d0802595155455951554759525541443245464432454644324546426d456a4432454644324546426d457143324546426d453143324546426d464143324546426d464c41414164457830414852456443496a4b345037512b6d436c7264414770613751417157765949577a735a61694245695947476b55714767595a624f526c7372513857442f2f2f39347a4e7a4d774d44677868674d794d44473575374f3773376d66736247786d78737a4141414141414d2f784475654d624f504d44677a7537737a4d42672f5245774141445259503059514141416a4744395a687741414b5a672f575963414144615950324155414141496c38354d6c4e6759446336554742675057494141446c6941414461595030564f6741413557443943795941414e46672f52632b4141434d59503066546741414f553441414978672f594d5741414370595031584742392f4f555941414d46672f5663594833383552674141736d443955514166667a6c474141444b5950315a6342392f4f5a5941414e46672f5a4d6b336d44396657444b5950302b64414141674a6159514549506f4959424543634136414d415a4141414367414141514141735a4959615643526b6d4449794c47534f4f6c51455051672b5436786b6b6c41304f75786b676c41304f582f455068772b507a2b504d5a2b66737a41677359342b446a3466483747787362477876344141414141425038414d08024f44683866427a2b4f5034344f5067434467304745514154464173414577674f445249644851384c4142674545523069416741524578454941775945447751524567344e414173494751515944685152485141544142454948516349426763644567494f4551514146676341457830574468514c41783059446851644377674b4242305444683043437751414553735442776753485159414441515042424553446730414377675a41424d4944673041437773644267414d4242494e44684d4843413047414245454852674f46423053464245454b7867454571613271582b64737843642b4242676f6b5167786a2f4b4550706771514346736f573571596546704b5758686156672f2f2f2f2f3079704f5577414d4577524d45776e4d5577694d457a614d4577724d513d3d272e73706c6974280a202020202020202020202020272c270a20202020202020202020295b315d0a2020202020202020293b0a2020202020202020636f6e736f6c652e6c6f672827486967682073636f726520726f6d3a2027202b2065652e6d643528726529293b0a202020202020202064286e6577206328276f6e4361727472696467654c6f61646564272c20776529293b0a20202020202020206965203d206e65772074652e4869676853636f726543616c6c6261636b28293b0a20202020202020206f65203d206e65772074652e4869676853636f726543614d08026c6c6261636b28293b0a202020202020202058286f652c207b0a20202020202020202020676574526f6d3a2066756e6374696f6e202829207b0a20202020202020202020202072657475726e2072653b0a202020202020202020207d2c0a2020202020202020202077726974653a2066756e6374696f6e2028652c207429207b0a2020202020202020202020202866756e6374696f6e2028652c207429207b0a2020202020202020202020202020766172206e203d2066616c73653b0a20202020202020202020202020206966202866655b65202d20343039365d20213d207429207b0a2020202020202020202020202020202066655b65202d20343039365d203d20743b0a202020202020202020202020202020206e203d20747275653b0a20202020202020202020202020207d0a2020202020202020202020202020696620286e2026262065203e3d203434313329207b0a2020202020202020202020202020202061652b2b3b0a20202020202020202020202020202020696620286c65203d3d206e756c6c29207b0a2020202020202020202020202020202020206c65203d2073657454696d656f75742866756e6374696f6e202829207b0a20202020202020202020202020202020202020206c65203d206e756c6c3b0a2020202020202020202020202020202020202020416528293b0a2020202020202020202020202020202020207d4d08022c20326533293b0a202020202020202020202020202020207d0a20202020202020202020202020207d0a2020202020202020202020202020696620286e652026262065203e3d203434313329207b0a20202020202020202020202020202020696620286e29207b0a202020202020202020202020202020202020636f6e736f6c652e6c6f67280a2020202020202020202020202020202020202020274853432070656e64696e672077726974653a20307827202b0a20202020202020202020202020202020202020202020652e746f537472696e6728313629202b0a2020202020202020202020202020202020202020202027203d20307827202b0a20202020202020202020202020202020202020202020742e746f537472696e6728313629202b0a20202020202020202020202020202020202020202020272c2027202b0a2020202020202020202020202020202020202020202061650a202020202020202020202020202020202020293b0a202020202020202020202020202020207d20656c7365207b0a202020202020202020202020202020202020636f6e736f6c652e6c6f67280a2020202020202020202020202020202020202020274853432070656e64696e672077726974652069676e6f72656420286e6f206368616e6765293a20307827202b0a20202020202020202020202020202020202020202020652e746f537472696e674d080228313629202b0a2020202020202020202020202020202020202020202027203d20307827202b0a20202020202020202020202020202020202020202020742e746f537472696e6728313629202b0a20202020202020202020202020202020202020202020272c2027202b0a2020202020202020202020202020202020202020202061650a202020202020202020202020202020202020293b0a202020202020202020202020202020207d0a20202020202020202020202020207d0a2020202020202020202020207d2928652c2074293b0a202020202020202020207d2c0a202020202020202020206c6f61645372616d3a2066756e6374696f6e20286529207b0a20202020202020202020202079652865293b0a202020202020202020207d2c0a20202020202020207d293b0a2020202020202020696620286e6529207b0a20202020202020202020646f63756d656e742e6164644576656e744c697374656e657228276b6579646f776e272c2066756e6374696f6e20286529207b0a20202020202020202020202069662028652e6b6579436f6465203d3d2031313929207b0a2020202020202020202020202020636f6e736f6c652e6c6f67286d6528666529293b0a2020202020202020202020207d0a202020202020202020207d293b0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e205365286529207b4d08020a20202020202020207065203d20653b0a2020202020207d0a20202020202066756e6374696f6e2043652829207b0a202020202020202072657475726e2070653b0a2020202020207d0a20202020202066756e6374696f6e2045652829207b0a202020202020202072657475726e20747275653b0a2020202020207d0a20202020202066756e6374696f6e205f65286529207b0a20202020202020206465203d20653b0a2020202020207d0a20202020202066756e6374696f6e2049652829207b0a202020202020202072657475726e2064653b0a2020202020207d0a20202020202066756e6374696f6e2044652829207b0a202020202020202072657475726e20747275653b0a2020202020207d0a20202020202066756e6374696f6e204265286529207b0a20202020202020206865203d20653b0a2020202020207d0a20202020202066756e6374696f6e204d652829207b0a202020202020202072657475726e2068653b0a2020202020207d0a20202020202066756e6374696f6e2054652829207b0a202020202020202072657475726e20747275653b0a2020202020207d0a20202020202066756e6374696f6e2052652829207b0a202020202020202072657475726e2063653b0a2020202020207d0a20202020202066756e6374696f6e204c652829207b0a2020202020202020746869732e656c203d206e756c6c3b0a2020202020204d08027d0a20202020202066756e6374696f6e20516528652c207429207b0a20202020202020204c652e63616c6c2874686973293b0a2020202020202020746869732e7469746c65203d20743b0a2020202020202020746869732e74657874203d20653b0a2020202020207d0a20202020202066756e6374696f6e207a65286529207b0a20202020202020204c652e63616c6c2874686973293b0a2020202020202020746869732e7469746c65203d20653b0a2020202020202020746869732e6362203d206e756c6c3b0a2020202020207d0a20202020202066756e6374696f6e204f6528652c207429207b0a20202020202020204e652e63616c6c28746869732c20652c2074293b0a2020202020207d0a20202020202066756e6374696f6e206a65286529207b0a202020202020202055652e63616c6c28746869732c2065293b0a2020202020207d0a20202020202066756e6374696f6e205065286529207b0a202020202020202046652e63616c6c2874686973293b0a2020202020202020746869732e6f707473203d20653b0a2020202020202020746869732e646976203d206e756c6c3b0a2020202020202020746869732e7769647468203d206e756c6c3b0a2020202020207d0a20202020202066756e6374696f6e20486528652c207429207b0a202020202020202046652e63616c6c2874686973293b0a2020202020202020746869732e694d080273526561644f6e6c79203d202121743b0a2020202020202020746869732e7469746c65203d20653b0a2020202020202020746869732e6d6f64616c456c203d206e756c6c3b0a2020202020202020746869732e636f6e74656e74456c203d206e756c6c3b0a2020202020202020746869732e626f6479456c203d206e756c6c3b0a2020202020202020746869732e686561646572456c203d206e756c6c3b0a2020202020202020746869732e626f6479456c203d206e756c6c3b0a2020202020202020746869732e666f6f746572456c203d206e756c6c3b0a2020202020202020746869732e6f6b203d206e756c6c3b0a2020202020202020746869732e63616e63656c203d206e756c6c3b0a2020202020202020746869732e64656661756c7473203d206e756c6c3b0a2020202020202020746869732e7061757365427574746f6e203d206e756c6c3b0a2020202020202020746869732e706175736564203d2066616c73653b0a2020202020202020766172206e203d20746869733b0a2020202020202020746869732e77696e646f77526573697a6546756e63203d2066756e6374696f6e20286529207b0a202020202020202020206e2e6d6f64616c456c2e7374796c652e70616464696e67546f70203d0a20202020202020202020202028282877696e646f772e696e6e6572486569676874202d206e2e636f6e74656e74456c2e6f66664d080273657448656967687429202f203229207c203029202b20277078273b0a20202020202020207d3b0a2020202020207d0a20202020202066756e6374696f6e2057652829207b0a202020202020202046652e63616c6c2874686973293b0a2020202020202020746869732e74616273203d205b5d3b0a2020202020202020746869732e64656661756c74546162203d206e756c6c3b0a2020202020207d0a20202020202066756e6374696f6e205665286529207b0a202020202020202046652e63616c6c2874686973293b0a2020202020202020746869732e7469746c65203d20653b0a2020202020202020746869732e627574746f6e456c203d206e756c6c3b0a2020202020207d0a20202020202066756e6374696f6e20716528652c207429207b0a202020202020202048652e63616c6c28746869732c20652c2074293b0a2020202020202020746869732e746162736574203d20746869732e67657454616253657428293b0a2020202020207d0a20202020202066756e6374696f6e204a652829207b0a202020202020202046652e63616c6c2874686973293b0a2020202020207d0a20202020202066756e6374696f6e205a65286529207b0a20202020202020204a652e63616c6c2874686973293b0a2020202020202020746869732e6c6162656c203d20653b0a2020202020207d0a20202020202066756e6374696f6e205865286529204d08027b0a20202020202020204a652e63616c6c2874686973293b0a2020202020202020746869732e636f6e74656e74203d20653b0a2020202020207d0a20202020202066756e6374696f6e2024652829207b0a202020202020202046652e63616c6c2874686973293b0a2020202020202020746869732e63656c6c73203d205b5d3b0a2020202020207d0a20202020202066756e6374696f6e2072742829207b0a202020202020202065742e63616c6c28746869732c202741626f757427293b0a2020202020202020746869732e746f70203d206e756c6c3b0a2020202020202020746869732e77726170706572456c203d206e756c6c3b0a2020202020202020746869732e6c6f676f456c203d206e756c6c3b0a2020202020202020746869732e76456c203d206e756c6c3b0a2020202020202020746869732e696672616d65203d206e756c6c3b0a2020202020202020746869732e74696d65724964203d206e756c6c3b0a2020202020202020746869732e706c61796564203d2066616c73653b0a20202020202020207661722065203d20746869733b0a2020202020202020746869732e66436c69636b203d2066756e6374696f6e20287429207b0a20202020202020202020652e73686f777628293b0a20202020202020202020742e70726576656e7444656661756c7428293b0a20202020202020207d3b0a2020202020207d0a20202020204d08022066756e6374696f6e206d7428652c207429207b0a20202020202020204c652e63616c6c2874686973293b0a2020202020202020746869732e6b657973203d206e756c6c3b0a2020202020202020746869732e6c656674203d20653b0a2020202020202020746869732e746f70203d20743b0a2020202020202020746869732e76616c7565203d20303b0a2020202020202020766172206e203d20746869733b0a2020202020202020746869732e6b6579646f776e66203d2066756e6374696f6e20286529207b0a202020202020202020206e2e73657456616c756528652e6b6579436f6465293b0a20202020202020202020652e70726576656e7444656661756c7428293b0a20202020202020202020652e73746f7050726f7061676174696f6e28293b0a20202020202020207d3b0a2020202020207d0a20202020202066756e6374696f6e206274286529207b0a20202020202020204c652e63616c6c2874686973293b0a2020202020202020746869732e7469746c65203d20653b0a2020202020202020746869732e696e6e6572203d206e756c6c3b0a2020202020207d0a20202020202066756e6374696f6e20777428652c207429207b0a20202020202020204c652e63616c6c2874686973293b0a2020202020202020746869732e6c656674203d20653b0a2020202020202020746869732e746f70203d20743b0a2020202020207d0a4d080220202020202066756e6374696f6e20767428652c207429207b0a202020202020202062742e63616c6c28746869732c2065293b0a2020202020202020746869732e696e646578203d20743b0a2020202020202020746869732e6c656674203d206e65772077742833332c203338293b0a2020202020202020746869732e7269676874203d206e65772077742837332c203338293b0a2020202020202020746869732e7570203d206e65772077742835332c203138293b0a2020202020202020746869732e646f776e203d206e65772077742835332c203538293b0a2020202020202020746869732e6231203d206e6577207774283135322c20313032293b0a2020202020202020746869732e6232203d206e6577207774283231382c20313032293b0a2020202020202020746869732e6d617070696e67203d206e756c6c3b0a2020202020202020746869732e666f637573203d205b0a20202020202020202020746869732e6c6566742c0a20202020202020202020746869732e72696768742c0a20202020202020202020746869732e75702c0a20202020202020202020746869732e646f776e2c0a20202020202020202020746869732e62312c0a20202020202020202020746869732e62322c0a20202020202020205d3b0a2020202020202020746869732e7061644964203d206e756c6c3b0a2020202020202020746869732e7061644d614d08027070696e67203d206e756c6c3b0a2020202020207d0a20202020202066756e6374696f6e207974286529207b0a202020202020202062742e63616c6c28746869732c2065293b0a2020202020202020746869732e7570203d206e6577206d742833382c202d35293b0a2020202020202020746869732e6c656674203d206e6577206d74282d372c203333293b0a2020202020202020746869732e7269676874203d206e6577206d742838322c203333293b0a2020202020202020746869732e646f776e203d206e6577206d742833382c203730293b0a2020202020202020746869732e6231203d206e6577206d74283133382c20313333293b0a2020202020202020746869732e6232203d206e6577206d74283230342c20313333293b0a2020202020202020746869732e74617267657473203d205b0a20202020202020202020746869732e75702c0a20202020202020202020746869732e6c6566742c0a20202020202020202020746869732e72696768742c0a20202020202020202020746869732e646f776e2c0a20202020202020202020746869732e62312c0a20202020202020202020746869732e62322c0a20202020202020205d3b0a2020202020202020746869732e6d6170203d206e756c6c3b0a2020202020207d0a20202020202066756e6374696f6e207874286529207b0a20202020202020204c652e63616c6c2874686973294d08023b0a2020202020202020746869732e7469746c65203d20653b0a2020202020207d0a20202020202066756e6374696f6e204174286529207b0a202020202020202078742e63616c6c28746869732c2065293b0a2020202020202020746869732e746172676574203d206e6577206d742831352c203334293b0a2020202020207d0a20202020202066756e6374696f6e206b74286529207b0a202020202020202078742e63616c6c28746869732c2065293b0a2020202020207d0a20202020202066756e6374696f6e2053742829207b0a20202020202020204c652e63616c6c2874686973293b0a2020202020202020746869732e7061757365427574746f6e203d20746869732e6372656174655061757365427574746f6e2827504155534527293b0a2020202020202020746869732e73656c656374427574746f6e203d20746869732e63726561746553656c656374427574746f6e282753454c45435427293b0a2020202020202020746869732e7265736574427574746f6e203d20746869732e6372656174655265736574427574746f6e2827524553455427293b0a2020202020202020746869732e627574746f6e73203d205b746869732e7061757365427574746f6e2c20746869732e73656c656374427574746f6e2c20746869732e7265736574427574746f6e5d3b0a2020202020202020746869732e6b62203d206e756c6c3b0a20204d0802202020207d0a20202020202066756e6374696f6e2043742829207b0a202020202020202053742e63616c6c2874686973293b0a2020202020207d0a20202020202066756e6374696f6e2045742829207b0a202020202020202053742e63616c6c2874686973293b0a2020202020202020746869732e6d617070696e67203d206e756c6c3b0a2020202020207d0a20202020202066756e6374696f6e2052742829207b0a202020202020202069742e63616c6c28746869732c202753657474696e6773272c2066616c7365293b0a2020202020207d0a20202020202066756e6374696f6e20467428652c207429207b0a202020202020202051742e63616c6c28746869732c2065293b0a2020202020202020746869732e75726c203d20743b0a2020202020207d0a20202020202066756e6374696f6e2050742829207b0a202020202020202047742e63616c6c28746869732c202748656c70272c2074727565293b0a2020202020207d0a20202020202066756e6374696f6e206e6e28652c207429207b0a20202020202020202866756e6374696f6e2028652c20742c206e29207b0a2020202020202020202066756e6374696f6e2072286529207b0a2020202020202020202020207661722072203d206e756c6c3b0a2020202020202020202020207661722069203d2066616c73653b0a20202020202020202020202069662028652e6c656e67744d080268203d3d203129207b0a202020202020202020202020202072203d20655b305d3b0a2020202020202020202020207d20656c73652069662028652e6c656e677468203e203029207b0a2020202020202020202020202020666f722028766172206f203d20303b206f203c20652e6c656e6774683b206f2b2b29207b0a20202020202020202020202020202020766172206c203d20655b6f5d3b0a202020202020202020202020202020207661722073203d206c2e66696c656e616d652e746f4c6f7765724361736528293b0a2020202020202020202020202020202069662028732e656e6473576974682827702e613738272929207b0a20202020202020202020202020202020202072203d206c3b0a20202020202020202020202020202020202069203d20747275653b0a202020202020202020202020202020207d20656c7365207b0a20202020202020202020202020202020202069662028732e656e64735769746828272e613738272929207b0a202020202020202020202020202020202020202072203d206c3b0a2020202020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202069662028732e656e64735769746828272e62696e272920262620216929207b0a202020202020202020202020202020202020202072203d206c3b0a4d08022020202020202020202020202020202020207d0a202020202020202020202020202020207d0a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020202020696620287229207b0a20202020202020202020202020207661722063203d206e657720612e426c6f6257726974657228293b0a2020202020202020202020202020722e6765744461746128632c2074293b0a2020202020202020202020207d20656c7365207b0a20202020202020202020202020206e2827556e61626c6520746f2066696e642076616c696420524f4d20696e207a69702066696c6527293b0a2020202020202020202020207d0a202020202020202020207d0a202020202020202020206e203d206e207c7c20703b0a20202020202020202020612e637265617465526561646572280a2020202020202020202020206e657720612e426c6f625265616465722865292c0a20202020202020202020202066756e6374696f6e20286529207b0a2020202020202020202020202020652e676574456e747269657328722c206e293b0a2020202020202020202020207d2c0a20202020202020202020202066756e6374696f6e202829207b0a2020202020202020202020202020742865293b0a2020202020202020202020207d0a20202020202020202020293b0a20202020202020207d29280a20202020202020202020652c4d08020a2020202020202020202066756e6374696f6e20286529207b0a202020202020202020202020766172206e203d206e65772046696c6552656164657228293b0a2020202020202020202020206e2e72656164417342696e617279537472696e672865293b0a2020202020202020202020206e2e6f6e6c6f6164656e64203d2066756e6374696f6e202829207b0a20202020202020202020202020207661722065203d206e2e726573756c743b0a20202020202020202020202020207661722072203d20652e6c656e6774683b0a20202020202020202020202020207661722069203d206e65772041727261792872293b0a2020202020202020202020202020666f722028766172206f203d20303b206f203c20723b206f2b2b29207b0a20202020202020202020202020202020695b6f5d203d20652e63686172436f64654174286f293b0a20202020202020202020202020207d0a202020202020202020202020202069662028217429207b0a20202020202020202020202020202020656e2e726573657453656c656374696f6e28293b0a20202020202020202020202020207d0a202020202020202020202020202024742e4d61696e2e7374617274456d756c6174696f6e2869293b0a2020202020202020202020207d3b0a202020202020202020207d2c0a20202020202020202020746e0a2020202020202020293b0a2020202020207d0a204d0802202020202066756e6374696f6e20616e28652c207429207b0a2020202020202020766172206e203d20652e746f4c6f7765724361736528293b0a20202020202020207661722072203d206e2e656e64735769746828272e6a736f6e2729207c7c206e2e696e6465784f6628272e6a736f6e3f272920213d202d313b0a2020202020202020726e203d20487428274c6f6164696e672e2e2e27293b0a202020202020202069662028216f6e29207b0a2020202020202020202064280a202020202020202020202020286f6e203d206e6577206328276f6e456d756c6174696f6e53746172746564272c2066756e6374696f6e202829207b0a2020202020202020202020202020577428726e2c20373530293b0a2020202020202020202020207d29290a20202020202020202020293b0a20202020202020207d0a2020202020202020636f6e73742069203d2066756e6374696f6e20286529207b0a20202020202020202020766172206e203d202866756e6374696f6e20286529207b0a2020202020202020202020207661722074203d20652e746f4c6f7765724361736528293b0a202020202020202020202020766172206e203d2027273b0a20202020202020202020202069662028672026262028742e737461727473576974682827687474703a2f2f2729207c7c20742e73746172747357697468282768747470733a2f2f27292929207b0a204d0802202020202020202020202020206e203d206d202b2061746f6228274f69387663484a7665486b7564325669636d4e685a47557564323979613256796379356b5a58592f27293b0a2020202020202020202020207d0a20202020202020202020202072657475726e206e202b20653b0a202020202020202020207d292865293b0a2020202020202020202069662028216e29207b0a2020202020202020202020207468726f7720692e737461747573202b20273a2027202b20692e737461747573546578743b0a202020202020202020207d0a202020202020202020207661722069203d206e657720584d4c487474705265717565737428293b0a20202020202020202020692e6f70656e2827474554272c206e293b0a20202020202020202020692e726573706f6e736554797065203d2027626c6f62273b0a20202020202020202020692e6f6e6c6f6164203d2066756e6374696f6e202829207b0a202020202020202020202020747279207b0a202020202020202020202020202069662028692e737461747573203e3d20333030207c7c20692e7374617473203c2032303029207b0a202020202020202020202020202020207468726f7720692e737461747573202b20273a2027202b20692e737461747573546578743b0a20202020202020202020202020207d0a202020202020202020202020202069662028656e2e6c6f61644c697374464d0802726f6d46696c6528692e726573706f6e736529207c7c207229207b0a20202020202020202020202020202020577428726e2c20373530293b0a20202020202020202020202020207d20656c7365207b0a202020202020202020202020202020206e6e28692e726573706f6e73652c2074293b0a20202020202020202020202020207d0a2020202020202020202020207d20636174636820287429207b0a2020202020202020202020202020746e2865202b2027202827202b2074202b20272927293b0a2020202020202020202020207d0a202020202020202020207d3b0a20202020202020202020692e6f6e6572726f72203d2066756e6374696f6e202829207b0a202020202020202020202020746e280a202020202020202020202020202027416e206572726f72206f6363757272656420647572696e6720746865206c6f616420617474656d70742e3c62723e2873656520636f6e736f6c65206c6f6720666f722064657461696c7329272c0a202020202020202020202020202066616c73650a202020202020202020202020293b0a202020202020202020207d3b0a20202020202020202020692e73656e6428293b0a20202020202020207d3b0a2020202020202020766172206f203d206e657720584d4c487474705265717565737428293b0a20202020202020206f2e6f70656e2827474554272c2077286529293b0a202020202020204d0802206f2e726573706f6e736554797065203d2027626c6f62273b0a20202020202020206f2e6f6e6c6f6164203d2066756e6374696f6e202829207b0a20202020202020202020747279207b0a202020202020202020202020696620286f2e737461747573203e3d20333030207c7c206f2e7374617473203c2032303029207b0a2020202020202020202020202020692865293b0a2020202020202020202020207d20656c73652069662028656e2e6c6f61644c69737446726f6d46696c65286f2e726573706f6e736529207c7c207229207b0a2020202020202020202020202020577428726e2c20373530293b0a2020202020202020202020207d20656c7365207b0a20202020202020202020202020206e6e286f2e726573706f6e73652c2074293b0a2020202020202020202020207d0a202020202020202020207d20636174636820287429207b0a202020202020202020202020746e2865202b2027202827202b2074202b20272927293b0a202020202020202020207d0a20202020202020207d3b0a20202020202020206f2e6f6e6572726f72203d2066756e6374696f6e202829207b0a20202020202020202020692865293b0a20202020202020207d3b0a20202020202020206f2e73656e6428293b0a2020202020207d0a20202020202066756e6374696f6e206c6e286529207b0a20202020202020207661722074203d20282474203d204d080265292e4d61696e3b0a2020202020202020766172206e203d2024742e436f6e74726f6c734261723b0a20202020202020202866756e6374696f6e202829207b0a202020202020202020207661722065203d2024742e4576656e74733b0a20202020202020202020666f722028766172207420696e20282873203d2065292c206c2929207b0a202020202020202020202020766172206e203d206c5b745d3b0a202020202020202020202020666f7220287661722072203d20303b2072203c206e2e6c656e6774683b20722b2b29207b0a202020202020202020202020202064286e5b725d293b0a2020202020202020202020207d0a202020202020202020207d0a20202020202020207d2928293b0a2020202020202020766172206f203d202866756e6374696f6e202829207b0a202020202020202020207661722065203d2024742e436f6e74726f6c734261723b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020766172206e203d20646f63756d656e742e637265617465456c656d656e74282773656c65637427293b0a20202020202020202020742e617070656e644368696c64286e293b0a202020202020202020207661722072203d206e657720652e436f6d706f6e656e7428293b0a202020202020202020206628722c207b0a204d08022020202020202020202020676574436c6173733a2066756e6374696f6e202829207b0a202020202020202020202020202072657475726e2027667373656c656374273b0a2020202020202020202020207d2c0a202020202020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020202020202072657475726e20743b0a2020202020202020202020207d2c0a202020202020202020207d293b0a20202020202020202020652e67657447726f75702831292e6164644368696c644174496e64657828322c2072293b0a2020202020202020202072657475726e206e3b0a20202020202020207d2928293b0a20202020202020207661722072203d2071742827646562756727293b0a20202020202020205874203d2021217220262620282872203d20722e746f4c6f77657243617365282929203d3d3d20273127207c7c2072203d3d20277472756527293b0a2020202020202020742e7365744572726f7248616e646c657228746e293b0a2020202020202020742e696e697428276a73373830305f5f746172676574272c207b2064656275673a205874207d293b0a20202020202020207661722061203d20742e6465736372697074696f6e4469763b0a2020202020202020612e636c6173734e616d65203d2027696e73747275637473273b0a2020202020202020612e696e6e654d08027248544d4c203d0a20202020202020202020273c6469763e436c69636b3c696d672069643d22696e735f73657474696e67735f696d6722207372633d2227202b0a202020202020202020206e2e636f6773496d67537263202b0a2020202020202020202027223e3c2f696d673e3c7370616e2069643d22696e735f73657474696e67732220636c6173733d22696c696e6b223e53657474696e67733c2f7370616e3e20746f20766965772063757272656e74206b6579626f617264206d617070696e67732e3c2f6469763e273b0a2020202020202020612e696e6e657248544d4c202b3d0a20202020202020202020273c64697620636c6173733d226968656c70223e436c69636b3c696d672069643d22696e735f68656c705f696d6722207372633d2227202b0a202020202020202020206e2e696e666f496d67537263202b0a2020202020202020202027223e3c2f696d673e3c7370616e2069643d22696e735f68656c702220636c6173733d22696c696e6b223e48656c703c2f7370616e3e20666f722064657461696c656420757361676520696e737472756374696f6e732e3c2f6469763e273b0a2020202020202020612e696e6e657248544d4c202b3d0a20202020202020202020273c64697620636c6173733d226968656c70223e4c6f6164206120636172747269646765207573696e67207468652064726f702d646f776e206d656e4d080275206f7220627574746f6e732062656c6f772028796f752063616e20616c736f206472616720616e642064726f702061206c6f63616c2066696c65206f722072656d6f74652066696c65206c696e6b206f6e746f2074686520656d756c61746f72292e3c2f6469763e273b0a20202020202020207661722070203d20646f63756d656e742e676574456c656d656e744279496428276a73373830305f5f66756c6c73637265656e2d636f6e7461696e657227293b0a202020202020202064280a202020202020202020206e6577206328276f6e4869676853636f7265436172744c6f61646564272c2066756e6374696f6e20286529207b0a2020202020202020202020205a74203d20653b0a202020202020202020207d290a2020202020202020293b0a20202020202020207661722068203d206e2e6c6561646572626f617264427574746f6e3b0a2020202020202020682e6f6e436c69636b203d2066756e6374696f6e202829207b0a202020202020202020207661722065203d20276c6561646572626f617264273b0a20202020202020202020696620285a7429207b0a20202020202020202020202065202b3d20273f643d27202b20526528293b0a202020202020202020207d0a2020202020202020202077696e646f772e6f70656e28652c20275f626c616e6b27293b0a20202020202020207d3b0a202020202020202064280a2020204d0802202020202020206e65772063282766756c6c73637265656e272c2066756e6374696f6e20286529207b0a202020202020202020202020682e676574456c656d656e7428292e7374796c652e646973706c6179203d2065203f20276e6f6e6527203a2027626c6f636b273b0a2020202020202020202020206f2e706172656e74456c656d656e742e7374796c652e646973706c6179203d2065203f2027666c657827203a20276e6f6e65273b0a202020202020202020207d290a2020202020202020293b0a20202020202020207661722067203d206e657720527428293b0a20202020202020206e2e73657474696e6773427574746f6e2e6f6e436c69636b203d2066756e6374696f6e202829207b0a20202020202020202020672e73686f7728293b0a20202020202020207d3b0a2020202020202020766172206d203d206e657720507428293b0a20202020202020206e2e68656c70427574746f6e2e6f6e436c69636b203d2066756e6374696f6e202829207b0a202020202020202020206d2e73686f7728293b0a20202020202020207d3b0a20202020202020207661722062203d2066756e6374696f6e202829207b0a20202020202020202020672e73656c6563744b6579626f61726454616228293b0a202020202020202020206e2e73657474696e6773427574746f6e2e6f6e436c69636b28293b0a20202020202020207d3b0a202020204d0802202020207661722077203d2066756e6374696f6e202829207b0a202020202020202020206e2e68656c70427574746f6e2e6f6e436c69636b28293b0a20202020202020207d3b0a2020202020202020646f63756d656e742e676574456c656d656e74427949642827696e735f73657474696e677327292e6f6e636c69636b203d20623b0a2020202020202020646f63756d656e742e676574456c656d656e74427949642827696e735f73657474696e67735f696d6727292e6f6e636c69636b203d20623b0a2020202020202020646f63756d656e742e676574456c656d656e74427949642827696e735f68656c7027292e6f6e636c69636b203d20773b0a2020202020202020646f63756d656e742e676574456c656d656e74427949642827696e735f68656c705f696d6727292e6f6e636c69636b203d20773b0a2020202020202020656e203d206e65772041285b646f63756d656e742e676574456c656d656e744279496428276361727473656c6563745f5f73656c65637427292c206f5d293b0a202020202020202075282773697465496e6974272c207b0a202020202020202020206a73373830303a2024742c0a20202020202020202020726f6d4c6973743a20656e2c0a202020202020202020206c6f616446726f6d55726c3a20616e2c0a202020202020202020207374617274456d756c6174696f6e3a206e6e2c0a202020202020204d08022020206572726f7248616e646c65723a20746e2c0a2020202020202020202064656275673a2058742c0a202020202020202020204869676853636f72653a20692c0a20202020202020207d293b0a2020202020202020702e617070656e644368696c6428672e637265617465456c656d656e742829293b0a2020202020202020702e617070656e644368696c64286d2e637265617465456c656d656e742829293b0a202020202020202064280a202020202020202020206e65772063282773686f774572726f72272c2066756e6374696f6e20286529207b0a202020202020202020202020746e2865293b0a202020202020202020207d290a2020202020202020293b0a202020202020202064280a202020202020202020206e657720632827726f6d6c6973744c6f61646564272c2066756e6374696f6e202829207b0a2020202020202020202020207661722065203d204874282753756363657366756c6c79206c6f6164656420636172747269646765206c6973742e27293b0a202020202020202020202020577428652c20316533293b0a202020202020202020207d290a2020202020202020293b0a20202020202020204a28293b0a20202020202020202866756e6374696f6e202829207b0a2020202020202020202024742e4d61696e3b0a202020202020202020207661722065203d2071742827636172746c69737427293b0a2020204d08022020202020202069662028216529207b0a20202020202020202020202065203d202768747470733a2f2f6269746f7264696e616c732e696f2f636f6e74656e742f623663383062386337313632333534396336323634306666363761326165306536393965376664303330343830643834336266366134343337626539396130356930273b0a202020202020202020207d0a20202020202020202020656e2e6c6f61644c69737446726f6d55726c2865293b0a202020202020202020207661722074203d204a7428276361727427293b0a20202020202020202020696620287429207b0a202020202020202020202020616e2874293b0a202020202020202020207d0a20202020202020207d2928293b0a2020202020207d0a202020202020722e72286e293b0a2020202020207661722069203d207b7d3b0a202020202020722e722869293b0a202020202020722e6428692c20275352414d5f53495a45272c2066756e6374696f6e202829207b0a202020202020202072657475726e20243b0a2020202020207d293b0a202020202020722e6428692c202767656e657261746544656661756c745372616d272c2066756e6374696f6e202829207b0a202020202020202072657475726e2067653b0a2020202020207d293b0a202020202020722e6428692c20277372616d546f426173653634272c2066756e6374696f6e202829207b0a2020204d0802202020202072657475726e206d653b0a2020202020207d293b0a202020202020722e6428692c2027626173653634746f5372616d272c2066756e6374696f6e202829207b0a202020202020202072657475726e2062653b0a2020202020207d293b0a202020202020722e6428692c2027736574456e61626c6564272c2066756e6374696f6e202829207b0a202020202020202072657475726e2053653b0a2020202020207d293b0a202020202020722e6428692c2027676574456e61626c6564272c2066756e6374696f6e202829207b0a202020202020202072657475726e2043653b0a2020202020207d293b0a202020202020722e6428692c2027676574456e61626c656444656661756c74272c2066756e6374696f6e202829207b0a202020202020202072657475726e2045653b0a2020202020207d293b0a202020202020722e6428692c2027676574476c6f62616c272c2066756e6374696f6e202829207b0a202020202020202072657475726e2049653b0a2020202020207d293b0a202020202020722e6428692c2027736574476c6f62616c272c2066756e6374696f6e202829207b0a202020202020202072657475726e205f653b0a2020202020207d293b0a202020202020722e6428692c2027676574476c6f62616c44656661756c74272c2066756e6374696f6e202829207b0a202020202020202072657475726e2044653b0a204d080220202020207d293b0a202020202020722e6428692c202769734c6f63616c46616c6c6261636b272c2066756e6374696f6e202829207b0a202020202020202072657475726e204d653b0a2020202020207d293b0a202020202020722e6428692c20277365744c6f63616c46616c6c6261636b272c2066756e6374696f6e202829207b0a202020202020202072657475726e2042653b0a2020202020207d293b0a202020202020722e6428692c20276765744c6f63616c46616c6c6261636b44656661756c74272c2066756e6374696f6e202829207b0a202020202020202072657475726e2054653b0a2020202020207d293b0a202020202020722e6428692c2027676574446967657374272c2066756e6374696f6e202829207b0a202020202020202072657475726e2052653b0a2020202020207d293b0a202020202020766172206f203d207b7d3b0a2020202020202866756e6374696f6e20286529207b0a202020202020202066756e6374696f6e20692829207b0a20202020202020202020746869732e637263203d202d313b0a20202020202020207d0a202020202020202066756e6374696f6e206f2829207b7d0a202020202020202066756e6374696f6e206128652c207429207b0a20202020202020202020766172206e203d206e65772041727261794275666665722865293b0a202020202020202020207661722072203d206e65774d08022055696e74384172726179286e293b0a20202020202020202020696620287429207b0a202020202020202020202020722e73657428742c2030293b0a202020202020202020207d0a2020202020202020202072657475726e207b206275666665723a206e2c2061727261793a20722c20766965773a206e6577204461746156696577286e29207d3b0a20202020202020207d0a202020202020202066756e6374696f6e206c2829207b7d0a202020202020202066756e6374696f6e2073286529207b0a2020202020202020202076617220743b0a20202020202020202020766172206e203d20746869733b0a202020202020202020206e2e73697a65203d20303b0a202020202020202020206e2e696e6974203d2066756e6374696f6e2028722c206929207b0a202020202020202020202020766172206f203d206e657720426c6f62285b655d2c207b20747970653a2027746578742f706c61696e27207d293b0a2020202020202020202020202874203d206e65772064286f29292e696e69742866756e6374696f6e202829207b0a20202020202020202020202020206e2e73697a65203d20742e73697a653b0a20202020202020202020202020207228293b0a2020202020202020202020207d2c2069293b0a202020202020202020207d3b0a202020202020202020206e2e7265616455696e74384172726179203d2066756e6374696f6e204d080228652c206e2c20722c206929207b0a202020202020202020202020742e7265616455696e7438417272617928652c206e2c20722c2069293b0a202020202020202020207d3b0a20202020202020207d0a202020202020202066756e6374696f6e2063287429207b0a20202020202020202020766172206e3b0a202020202020202020207661722072203d20746869733b0a20202020202020202020722e73697a65203d20303b0a20202020202020202020722e696e6974203d2066756e6374696f6e20286529207b0a202020202020202020202020666f7220287661722069203d20742e6c656e6774683b20742e6368617241742869202d203129203d3d20273d273b2029207b0a2020202020202020202020202020692d2d3b0a2020202020202020202020207d0a2020202020202020202020206e203d20742e696e6465784f6628272c2729202b20313b0a202020202020202020202020722e73697a65203d204d6174682e666c6f6f7228302e3735202a202869202d206e29293b0a2020202020202020202020206528293b0a202020202020202020207d3b0a20202020202020202020722e7265616455696e74384172726179203d2066756e6374696f6e2028722c20692c206f29207b0a2020202020202020202020207661722073203d20612869293b0a2020202020202020202020207661722063203d2034202a204d6174682e666c6f4d08026f722872202f2033293b0a2020202020202020202020207661722064203d2034202a204d6174682e6365696c282872202b206929202f2033293b0a2020202020202020202020207661722075203d20652e61746f6228742e737562737472696e672863202b206e2c2064202b206e29293b0a2020202020202020202020207661722070203d2072202d2033202a204d6174682e666c6f6f722863202f2034293b0a202020202020202020202020666f722028766172206c203d20703b206c203c2070202b20693b206c2b2b29207b0a2020202020202020202020202020732e61727261795b6c202d20705d203d20752e63686172436f64654174286c293b0a2020202020202020202020207d0a2020202020202020202020206f28732e6172726179293b0a202020202020202020207d3b0a20202020202020207d0a202020202020202066756e6374696f6e2064286529207b0a202020202020202020207661722074203d20746869733b0a20202020202020202020742e73697a65203d20303b0a20202020202020202020742e696e6974203d2066756e6374696f6e20286e29207b0a202020202020202020202020742e73697a65203d20652e73697a653b0a2020202020202020202020206e28293b0a202020202020202020207d3b0a20202020202020202020742e7265616455696e74384172726179203d2066756e6374696f6e2028742c4d0802206e2c20722c206929207b0a202020202020202020202020766172206f203d206e65772046696c6552656164657228293b0a2020202020202020202020206f2e6f6e6c6f6164203d2066756e6374696f6e20286529207b0a202020202020202020202020202072286e65772055696e7438417272617928652e7461726765742e726573756c7429293b0a2020202020202020202020207d3b0a2020202020202020202020206f2e6f6e6572726f72203d20693b0a202020202020202020202020747279207b0a20202020202020202020202020206f2e7265616441734172726179427566666572280a202020202020202020202020202020202866756e6374696f6e2028652c20742c206e29207b0a2020202020202020202020202020202020206966202874203c2030207c7c206e203c2030207c7c2074202b206e203e20652e73697a6529207b0a20202020202020202020202020202020202020207468726f77206e65772052616e67654572726f72280a20202020202020202020202020202020202020202020276f66667365743a27202b2074202b20272c206c656e6774683a27202b206e202b20272c2073697a653a27202b20652e73697a650a2020202020202020202020202020202020202020293b0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202069662028652e736c69636529204d08027b0a202020202020202020202020202020202020202072657475726e20652e736c69636528742c2074202b206e293b0a2020202020202020202020202020202020207d20656c73652069662028652e7765626b6974536c69636529207b0a202020202020202020202020202020202020202072657475726e20652e7765626b6974536c69636528742c2074202b206e293b0a2020202020202020202020202020202020207d20656c73652069662028652e6d6f7a536c69636529207b0a202020202020202020202020202020202020202072657475726e20652e6d6f7a536c69636528742c2074202b206e293b0a2020202020202020202020202020202020207d20656c73652069662028652e6d73536c69636529207b0a202020202020202020202020202020202020202072657475726e20652e6d73536c69636528742c2074202b206e293b0a2020202020202020202020202020202020207d20656c7365207b0a202020202020202020202020202020202020202072657475726e3b0a2020202020202020202020202020202020207d0a202020202020202020202020202020207d2928652c20742c206e290a2020202020202020202020202020293b0a2020202020202020202020207d20636174636820286529207b0a2020202020202020202020202020692865293b0a2020202020202020202020207d0a202020202020202020207d3b4d08020a20202020202020207d0a202020202020202066756e6374696f6e20752829207b7d0a202020202020202066756e6374696f6e2070286529207b0a20202020202020202020766172206e3b0a20202020202020202020746869732e696e6974203d2066756e6374696f6e20286529207b0a2020202020202020202020206e203d206e657720426c6f62285b5d2c207b20747970653a2027746578742f706c61696e27207d293b0a2020202020202020202020206528293b0a202020202020202020207d3b0a20202020202020202020746869732e777269746555696e74384172726179203d2066756e6374696f6e2028652c207229207b0a2020202020202020202020206e203d206e657720426c6f62285b6e2c2074203f2065203a20652e6275666665725d2c207b20747970653a2027746578742f706c61696e27207d293b0a2020202020202020202020207228293b0a202020202020202020207d3b0a20202020202020202020746869732e67657444617461203d2066756e6374696f6e2028742c207229207b0a2020202020202020202020207661722069203d206e65772046696c6552656164657228293b0a202020202020202020202020692e6f6e6c6f6164203d2066756e6374696f6e20286529207b0a20202020202020202020202020207428652e7461726765742e726573756c74293b0a2020202020202020202020207d3b0a204d08022020202020202020202020692e6f6e6572726f72203d20723b0a202020202020202020202020692e72656164417354657874286e2c2065293b0a202020202020202020207d3b0a20202020202020207d0a202020202020202066756e6374696f6e2068287429207b0a20202020202020202020766172206e203d2027273b0a202020202020202020207661722072203d2027273b0a20202020202020202020746869732e696e6974203d2066756e6374696f6e20286529207b0a2020202020202020202020206e202b3d2027646174613a27202b202874207c7c20272729202b20273b6261736536342c273b0a2020202020202020202020206528293b0a202020202020202020207d3b0a20202020202020202020746869732e777269746555696e74384172726179203d2066756e6374696f6e2028742c206929207b0a2020202020202020202020207661722061203d20722e6c656e6774683b0a202020202020202020202020766172206c203d20723b0a20202020202020202020202072203d2027273b0a202020202020202020202020666f722028766172206f203d20303b206f203c2033202a204d6174682e666c6f6f72282861202b20742e6c656e67746829202f203329202d20613b206f2b2b29207b0a20202020202020202020202020206c202b3d20537472696e672e66726f6d43686172436f646528745b6f5d293b0a202020204d080220202020202020207d0a202020202020202020202020696620286c2e6c656e677468203e203229207b0a20202020202020202020202020206e202b3d20652e62746f61286c293b0a2020202020202020202020207d20656c7365207b0a202020202020202020202020202072203d206c3b0a2020202020202020202020207d0a2020202020202020202020206928293b0a202020202020202020207d3b0a20202020202020202020746869732e67657444617461203d2066756e6374696f6e20287429207b0a20202020202020202020202074286e202b20652e62746f61287229293b0a202020202020202020207d3b0a20202020202020207d0a202020202020202066756e6374696f6e2066286529207b0a20202020202020202020766172206e3b0a20202020202020202020746869732e696e6974203d2066756e6374696f6e20287429207b0a2020202020202020202020206e203d206e657720426c6f62285b5d2c207b20747970653a2065207d293b0a2020202020202020202020207428293b0a202020202020202020207d3b0a20202020202020202020746869732e777269746555696e74384172726179203d2066756e6374696f6e2028722c206929207b0a2020202020202020202020206e203d206e657720426c6f62285b6e2c2074203f2072203a20722e6275666665725d2c207b20747970653a2065207d293b0a20202020204d0802202020202020206928293b0a202020202020202020207d3b0a20202020202020202020746869732e67657444617461203d2066756e6374696f6e20286529207b0a20202020202020202020202065286e293b0a202020202020202020207d3b0a20202020202020207d0a202020202020202066756e6374696f6e206728652c20742c206e2c20722c20692c206f2c20612c206c2c20732c206329207b0a2020202020202020202066756e6374696f6e20672829207b0a202020202020202020202020652e72656d6f76654576656e744c697374656e657228276d657373616765272c206d2c2066616c7365293b0a2020202020202020202020206c28752c2070293b0a202020202020202020207d0a2020202020202020202066756e6374696f6e206d287429207b0a202020202020202020202020766172206e203d20742e646174613b0a2020202020202020202020207661722069203d206e2e646174613b0a202020202020202020202020766172206c203d206e2e6572726f723b0a202020202020202020202020696620286c29207b0a20202020202020202020202020206c2e746f537472696e67203d2066756e6374696f6e202829207b0a2020202020202020202020202020202072657475726e20274572726f723a2027202b20746869732e6d6573736167653b0a20202020202020202020202020207d3b0a202020202020202020204d08022020202073286c293b0a202020202020202020202020202072657475726e3b0a2020202020202020202020207d0a202020202020202020202020696620286e2e736e203d3d3d206629207b0a202020202020202020202020202073776974636820280a2020202020202020202020202020202028747970656f66206e2e636f64656354696d65203d3d20276e756d626572272026262028652e636f64656354696d65202b3d206e2e636f64656354696d65292c0a20202020202020202020202020202020747970656f66206e2e63726354696d65203d3d20276e756d626572272026262028652e63726354696d65202b3d206e2e63726354696d65292c0a202020202020202020202020202020206e2e74797065290a202020202020202020202020202029207b0a20202020202020202020202020202020636173652027617070656e64273a0a202020202020202020202020202020202020696620286929207b0a202020202020202020202020202020202020202075202b3d20692e6c656e6774683b0a2020202020202020202020202020202020202020722e777269746555696e74384172726179280a20202020202020202020202020202020202020202020692c0a2020202020202020202020202020202020202020202066756e6374696f6e202829207b0a2020202020202020202020202020202020202020202020206228293b0a20204d080220202020202020202020202020202020202020207d2c0a20202020202020202020202020202020202020202020630a2020202020202020202020202020202020202020293b0a2020202020202020202020202020202020207d20656c7365207b0a20202020202020202020202020202020202020206228293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020627265616b3b0a20202020202020202020202020202020636173652027666c757368273a0a20202020202020202020202020202020202070203d206e2e6372633b0a202020202020202020202020202020202020696620286929207b0a202020202020202020202020202020202020202075202b3d20692e6c656e6774683b0a2020202020202020202020202020202020202020722e777269746555696e74384172726179280a20202020202020202020202020202020202020202020692c0a2020202020202020202020202020202020202020202066756e6374696f6e202829207b0a2020202020202020202020202020202020202020202020206728293b0a202020202020202020202020202020202020202020207d2c0a20202020202020202020202020202020202020202020630a2020202020202020202020202020202020202020293b0a2020202020202020202020202020202020207d20656c7365207b0a202020204d0802202020202020202020202020202020206728293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202063617365202770726f6772657373273a0a202020202020202020202020202020202020696620286129207b0a2020202020202020202020202020202020202020612864202b206e2e6c6f616465642c206f293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020627265616b3b0a20202020202020202020202020202020636173652027696d706f727453637269707473273a0a202020202020202020202020202020206361736520276e65775461736b273a0a202020202020202020202020202020206361736520276563686f273a0a202020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202064656661756c743a0a202020202020202020202020202020202020636f6e736f6c652e7761726e280a2020202020202020202020202020202020202020277a69702e6a733a6c61756e6368576f726b657250726f636573733a20756e6b6e6f776e206d6573736167653a20272c0a20202020202020202020202020202020202020206e0a202020202020202020202020202020202020293b0a20202020202020202020202020207d0a4d08022020202020202020202020207d0a202020202020202020207d0a2020202020202020202066756e6374696f6e20622829207b0a202020202020202020202020696620282864203d20353234323838202a206829203c3d206f29207b0a20202020202020202020202020206e2e7265616455696e74384172726179280a2020202020202020202020202020202069202b20642c0a202020202020202020202020202020204d6174682e6d696e283532343238382c206f202d2064292c0a2020202020202020202020202020202066756e6374696f6e20286e29207b0a202020202020202020202020202020202020696620286129207b0a20202020202020202020202020202020202020206128642c206f293b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020207661722072203d2064203d3d3d2030203f2074203a207b20736e3a2066207d3b0a202020202020202020202020202020202020722e74797065203d2027617070656e64273b0a202020202020202020202020202020202020722e64617461203d206e3b0a202020202020202020202020202020202020747279207b0a2020202020202020202020202020202020202020652e706f73744d65737361676528722c205b6e2e6275666665725d293b0a2020202020202020202020202020202020207d20636174636820287429207b0a204d080220202020202020202020202020202020202020652e706f73744d6573736167652872293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020682b2b3b0a202020202020202020202020202020207d2c0a20202020202020202020202020202020730a2020202020202020202020202020293b0a2020202020202020202020207d20656c7365207b0a2020202020202020202020202020652e706f73744d657373616765287b20736e3a20662c20747970653a2027666c75736827207d293b0a2020202020202020202020207d0a202020202020202020207d0a2020202020202020202076617220643b0a2020202020202020202076617220703b0a202020202020202020207661722068203d20303b0a202020202020202020207661722066203d20742e736e3b0a202020202020202020207661722075203d20303b0a20202020202020202020652e6164644576656e744c697374656e657228276d657373616765272c206d2c2066616c7365293b0a202020202020202020206228293b0a20202020202020207d0a202020202020202066756e6374696f6e206d28652c20742c206e2c20722c206f2c20612c206c2c20732c20632c206429207b0a2020202020202020202076617220753b0a202020202020202020207661722070203d20303b0a202020202020202020207661722068203d20304d08023b0a202020202020202020207661722066203d2061203d3d3d2027696e707574273b0a202020202020202020207661722067203d2061203d3d3d20276f7574707574273b0a20202020202020202020766172206d203d206e6577206928293b0a202020202020202020202866756e6374696f6e20692829207b0a20202020202020202020202076617220613b0a202020202020202020202020696620282875203d20353234323838202a207029203c206f29207b0a2020202020202020202020202020742e7265616455696e74384172726179280a2020202020202020202020202020202072202b20752c0a202020202020202020202020202020204d6174682e6d696e283532343238382c206f202d2075292c0a2020202020202020202020202020202066756e6374696f6e20287429207b0a20202020202020202020202020202020202076617220723b0a202020202020202020202020202020202020747279207b0a202020202020202020202020202020202020202072203d20652e617070656e6428742c2066756e6374696f6e20286529207b0a20202020202020202020202020202020202020202020696620286c29207b0a2020202020202020202020202020202020202020202020206c2875202b20652c206f293b0a202020202020202020202020202020202020202020207d0a20202020202020202020202020202020202020204d08027d293b0a2020202020202020202020202020202020207d20636174636820286529207b0a2020202020202020202020202020202020202020632865293b0a202020202020202020202020202020202020202072657475726e3b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020696620287229207b0a202020202020202020202020202020202020202068202b3d20722e6c656e6774683b0a20202020202020202020202020202020202020206e2e777269746555696e74384172726179280a20202020202020202020202020202020202020202020722c0a2020202020202020202020202020202020202020202066756e6374696f6e202829207b0a202020202020202020202020202020202020202020202020702b2b3b0a20202020202020202020202020202020202020202020202073657454696d656f757428692c2031293b0a202020202020202020202020202020202020202020207d2c0a20202020202020202020202020202020202020202020640a2020202020202020202020202020202020202020293b0a2020202020202020202020202020202020202020696620286729207b0a202020202020202020202020202020202020202020206d2e617070656e642872293b0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020207d4d080220656c7365207b0a2020202020202020202020202020202020202020702b2b3b0a202020202020202020202020202020202020202073657454696d656f757428692c2031293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020696620286629207b0a20202020202020202020202020202020202020206d2e617070656e642874293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020696620286c29207b0a20202020202020202020202020202020202020206c28752c206f293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020207d2c0a20202020202020202020202020202020630a2020202020202020202020202020293b0a2020202020202020202020207d20656c7365207b0a2020202020202020202020202020747279207b0a2020202020202020202020202020202061203d20652e666c75736828293b0a20202020202020202020202020207d20636174636820286529207b0a20202020202020202020202020202020632865293b0a2020202020202020202020202020202072657475726e3b0a20202020202020202020202020207d0a2020202020202020202020202020696620286129207b0a20202020202020202020202020202020696620286729207b0a2020202020202020204d08022020202020202020206d2e617070656e642861293b0a202020202020202020202020202020207d0a2020202020202020202020202020202068202b3d20612e6c656e6774683b0a202020202020202020202020202020206e2e777269746555696e74384172726179280a202020202020202020202020202020202020612c0a20202020202020202020202020202020202066756e6374696f6e202829207b0a20202020202020202020202020202020202020207328682c206d2e6765742829293b0a2020202020202020202020202020202020207d2c0a202020202020202020202020202020202020640a20202020202020202020202020202020293b0a20202020202020202020202020207d20656c7365207b0a202020202020202020202020202020207328682c206d2e6765742829293b0a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020207d2928293b0a20202020202020207d0a202020202020202066756e6374696f6e206228742c206e2c20722c20692c20612c206c2c20732c20632c20642c20752c207029207b0a2020202020202020202069662028652e7a69702e757365576562576f726b657273202626207329207b0a20202020202020202020202067280a2020202020202020202020202020742c0a20202020202020202020202020207b20736e3a206e2c20636f6465634d0802436c6173733a20274e4f4f50272c20637263547970653a2027696e70757427207d2c0a2020202020202020202020202020722c0a2020202020202020202020202020692c0a2020202020202020202020202020612c0a20202020202020202020202020206c2c0a2020202020202020202020202020642c0a2020202020202020202020202020632c0a2020202020202020202020202020752c0a2020202020202020202020202020700a202020202020202020202020293b0a202020202020202020207d20656c7365207b0a2020202020202020202020206d286e6577206f28292c20722c20692c20612c206c2c2027696e707574272c20642c20632c20752c2070293b0a202020202020202020207d0a20202020202020207d0a202020202020202066756e6374696f6e2077286529207b0a20202020202020202020766172206e3b0a202020202020202020207661722072203d2027273b0a202020202020202020207661722069203d205b0a202020202020202020202020275c784337272c0a202020202020202020202020275c784643272c0a202020202020202020202020275c784539272c0a202020202020202020202020275c784532272c0a202020202020202020202020275c784534272c0a202020202020202020202020275c784530272c0a202020202020202020202020275c784535272c0a202020202020202020202020275c4d0802784537272c0a202020202020202020202020275c784541272c0a202020202020202020202020275c784542272c0a202020202020202020202020275c784538272c0a202020202020202020202020275c784546272c0a202020202020202020202020275c784545272c0a202020202020202020202020275c784543272c0a202020202020202020202020275c784334272c0a202020202020202020202020275c784335272c0a202020202020202020202020275c784339272c0a202020202020202020202020275c784536272c0a202020202020202020202020275c784336272c0a202020202020202020202020275c784634272c0a202020202020202020202020275c784636272c0a202020202020202020202020275c784632272c0a202020202020202020202020275c784642272c0a202020202020202020202020275c784639272c0a202020202020202020202020275c784646272c0a202020202020202020202020275c784436272c0a202020202020202020202020275c784443272c0a202020202020202020202020275c784638272c0a202020202020202020202020275c784133272c0a202020202020202020202020275c784438272c0a202020202020202020202020275c784437272c0a202020202020202020202020275c7530313932272c0a202020202020202020202020275c784531272c0a2020202020202020202020204d0802275c784544272c0a202020202020202020202020275c784633272c0a202020202020202020202020275c784641272c0a202020202020202020202020275c784631272c0a202020202020202020202020275c784431272c0a202020202020202020202020275c784141272c0a202020202020202020202020275c784241272c0a202020202020202020202020275c784246272c0a202020202020202020202020275c784145272c0a202020202020202020202020275c784143272c0a202020202020202020202020275c784244272c0a202020202020202020202020275c784243272c0a202020202020202020202020275c784131272c0a202020202020202020202020275c784142272c0a202020202020202020202020275c784242272c0a202020202020202020202020275f272c0a202020202020202020202020275f272c0a202020202020202020202020275f272c0a202020202020202020202020275c784136272c0a202020202020202020202020275c784136272c0a202020202020202020202020275c784331272c0a202020202020202020202020275c784332272c0a202020202020202020202020275c784330272c0a202020202020202020202020275c784139272c0a202020202020202020202020275c784136272c0a202020202020202020202020275c784136272c0a202020202020202020202020272b272c0a202020204d08022020202020202020272b272c0a202020202020202020202020275c784132272c0a202020202020202020202020275c784135272c0a202020202020202020202020272b272c0a202020202020202020202020272b272c0a202020202020202020202020272d272c0a202020202020202020202020272d272c0a202020202020202020202020272b272c0a202020202020202020202020272d272c0a202020202020202020202020272b272c0a202020202020202020202020275c784533272c0a202020202020202020202020275c784333272c0a202020202020202020202020272b272c0a202020202020202020202020272b272c0a202020202020202020202020272d272c0a202020202020202020202020272d272c0a202020202020202020202020275c784136272c0a202020202020202020202020272d272c0a202020202020202020202020272b272c0a202020202020202020202020275c784134272c0a202020202020202020202020275c784630272c0a202020202020202020202020275c784430272c0a202020202020202020202020275c784341272c0a202020202020202020202020275c784342272c0a202020202020202020202020275c784338272c0a2020202020202020202020202769272c0a202020202020202020202020275c784344272c0a202020202020202020202020275c784345272c0a2020202020202020204d0802202020275c784346272c0a202020202020202020202020272b272c0a202020202020202020202020272b272c0a202020202020202020202020275f272c0a202020202020202020202020275f272c0a202020202020202020202020275c784136272c0a202020202020202020202020275c784343272c0a202020202020202020202020275f272c0a202020202020202020202020275c784433272c0a202020202020202020202020275c784446272c0a202020202020202020202020275c784434272c0a202020202020202020202020275c784432272c0a202020202020202020202020275c784635272c0a202020202020202020202020275c784435272c0a202020202020202020202020275c784235272c0a202020202020202020202020275c784645272c0a202020202020202020202020275c784445272c0a202020202020202020202020275c784441272c0a202020202020202020202020275c784442272c0a202020202020202020202020275c784439272c0a202020202020202020202020275c784644272c0a202020202020202020202020275c784444272c0a202020202020202020202020275c784146272c0a202020202020202020202020275c784234272c0a202020202020202020202020275c784144272c0a202020202020202020202020275c784231272c0a202020202020202020202020275f272c0a202020202020204d08022020202020275c784245272c0a202020202020202020202020275c784236272c0a202020202020202020202020275c784137272c0a202020202020202020202020275c784637272c0a202020202020202020202020275c784238272c0a202020202020202020202020275c784230272c0a202020202020202020202020275c784138272c0a202020202020202020202020275c784237272c0a202020202020202020202020275c784239272c0a202020202020202020202020275c784233272c0a202020202020202020202020275c784232272c0a202020202020202020202020275f272c0a2020202020202020202020202720272c0a202020202020202020205d3b0a20202020202020202020666f7220287661722074203d20303b2074203c20652e6c656e6774683b20742b2b29207b0a20202020202020202020202072202b3d0a2020202020202020202020202020286e203d20323535202620652e63686172436f6465417428742929203e203132370a202020202020202020202020202020203f20695b6e202d203132385d0a202020202020202020202020202020203a20537472696e672e66726f6d43686172436f6465286e293b0a202020202020202020207d0a2020202020202020202072657475726e20723b0a20202020202020207d0a202020202020202066756e6374696f6e2076286529207b0a20202020202020202020724d0802657475726e206465636f6465555249436f6d706f6e656e7428657363617065286529293b0a20202020202020207d0a202020202020202066756e6374696f6e2079286529207b0a20202020202020202020766172206e203d2027273b0a20202020202020202020666f7220287661722074203d20303b2074203c20652e6c656e6774683b20742b2b29207b0a2020202020202020202020206e202b3d20537472696e672e66726f6d43686172436f646528655b745d293b0a202020202020202020207d0a2020202020202020202072657475726e206e3b0a20202020202020207d0a202020202020202066756e6374696f6e207828652c20742c206e2c20722c206929207b0a20202020202020202020652e76657273696f6e203d20742e766965772e67657455696e743136286e2c2074727565293b0a20202020202020202020652e626974466c6167203d20742e766965772e67657455696e743136286e202b20322c2074727565293b0a20202020202020202020652e636f6d7072657373696f6e4d6574686f64203d20742e766965772e67657455696e743136286e202b20342c2074727565293b0a20202020202020202020652e6c6173744d6f6444617465526177203d20742e766965772e67657455696e743332286e202b20362c2074727565293b0a20202020202020202020652e6c6173744d6f6444617465203d202866756e6374694d08026f6e20286529207b0a2020202020202020202020207661722074203d2028343239343930313736302026206529203e3e2031363b0a202020202020202020202020766172206e203d203635353335202620653b0a202020202020202020202020747279207b0a202020202020202020202020202072657475726e206e65772044617465280a2020202020202020202020202020202031393830202b20282836353032342026207429203e3e2039292c0a2020202020202020202020202020202028283438302026207429203e3e203529202d20312c0a202020202020202020202020202020203331202620742c0a202020202020202020202020202020202836333438382026206e29203e3e2031312c0a2020202020202020202020202020202028323031362026206e29203e3e20352c0a2020202020202020202020202020202032202a202833312026206e292c0a20202020202020202020202020202020300a2020202020202020202020202020293b0a2020202020202020202020207d20636174636820286529207b7d0a202020202020202020207d2928652e6c6173744d6f6444617465526177293b0a20202020202020202020696620282831202620652e626974466c616729203d3d203129207b0a20202020202020202020202069282746696c6520636f6e7461696e7320656e6372797074656420656e7472792e27293b0a2020204d0802202020202020207d20656c7365207b0a2020202020202020202020206966202872207c7c202838202620652e626974466c61672920213d203829207b0a2020202020202020202020202020652e6372633332203d20742e766965772e67657455696e743332286e202b2031302c2074727565293b0a2020202020202020202020202020652e636f6d7072657373656453697a65203d20742e766965772e67657455696e743332286e202b2031342c2074727565293b0a2020202020202020202020202020652e756e636f6d7072657373656453697a65203d20742e766965772e67657455696e743332286e202b2031382c2074727565293b0a2020202020202020202020207d0a202020202020202020202020696620280a2020202020202020202020202020652e636f6d7072657373656453697a6520213d3d20343239343936373239352026260a2020202020202020202020202020652e756e636f6d7072657373656453697a6520213d3d20343239343936373239350a20202020202020202020202029207b0a2020202020202020202020202020652e66696c656e616d654c656e677468203d20742e766965772e67657455696e743136286e202b2032322c2074727565293b0a2020202020202020202020202020652e65787472614669656c644c656e677468203d20742e766965772e67657455696e743136286e202b2032342c2074724d08027565293b0a2020202020202020202020207d20656c7365207b0a202020202020202020202020202069282746696c65206973207573696e67205a6970363420283467622b2066696c652073697a65292e27293b0a2020202020202020202020207d0a202020202020202020207d0a20202020202020207d0a202020202020202066756e6374696f6e204128742c20692c206f29207b0a2020202020202020202066756e6374696f6e20732829207b7d0a20202020202020202020766172206c203d20303b0a20202020202020202020732e70726f746f747970652e67657444617461203d2066756e6374696f6e2028722c20692c20732c206329207b0a20202020202020202020202066756e6374696f6e207528652c207429207b0a2020202020202020202020202020696620280a20202020202020202020202020202020632026260a20202020202020202020202020202020212866756e6374696f6e20286529207b0a2020202020202020202020202020202020207661722074203d20612834293b0a202020202020202020202020202020202020742e766965772e73657455696e74333228302c2065293b0a20202020202020202020202020202020202072657475726e20642e6372633332203d3d20742e766965772e67657455696e7433322830293b0a202020202020202020202020202020207d292874290a202020202020202020204d08022020202029207b0a202020202020202020202020202020206f2827435243206661696c65642e27293b0a20202020202020202020202020207d20656c7365207b0a20202020202020202020202020202020722e676574446174612866756e6374696f6e20286529207b0a202020202020202020202020202020202020692865293b0a202020202020202020202020202020207d293b0a20202020202020202020202020207d0a2020202020202020202020207d0a20202020202020202020202066756e6374696f6e2070286529207b0a20202020202020202020202020206f2865207c7c20274572726f72207768696c652072656164696e672066696c6520646174612e27293b0a2020202020202020202020207d0a20202020202020202020202066756e6374696f6e2068286529207b0a20202020202020202020202020206f2865207c7c20274572726f72207768696c652077726974696e672066696c6520646174612e27293b0a2020202020202020202020207d0a2020202020202020202020207661722064203d20746869733b0a202020202020202020202020742e7265616455696e74384172726179280a2020202020202020202020202020642e6f66667365742c0a202020202020202020202020202033302c0a202020202020202020202020202066756e6374696f6e20286929207b0a20202020202020202020202020202020764d0802617220663b0a202020202020202020202020202020207661722077203d206128692e6c656e6774682c2069293b0a2020202020202020202020202020202069662028772e766965772e67657455696e743332283029203d3d203133343730393332353229207b0a2020202020202020202020202020202020207828642c20772c20342c2066616c73652c206f293b0a20202020202020202020202020202020202066203d20642e6f6666736574202b203330202b20642e66696c656e616d654c656e677468202b20642e65787472614669656c644c656e6774683b0a202020202020202020202020202020202020722e696e69742866756e6374696f6e202829207b0a202020202020202020202020202020202020202069662028642e636f6d7072657373696f6e4d6574686f64203d3d3d203029207b0a2020202020202020202020202020202020202020202062280a202020202020202020202020202020202020202020202020642e5f776f726b65722c0a2020202020202020202020202020202020202020202020206c2b2b2c0a202020202020202020202020202020202020202020202020742c0a202020202020202020202020202020202020202020202020722c0a202020202020202020202020202020202020202020202020662c0a202020202020202020202020202020202020202020202020642e636f6d7072657373656453694d08027a652c0a202020202020202020202020202020202020202020202020632c0a202020202020202020202020202020202020202020202020752c0a202020202020202020202020202020202020202020202020732c0a202020202020202020202020202020202020202020202020702c0a202020202020202020202020202020202020202020202020680a20202020202020202020202020202020202020202020293b0a20202020202020202020202020202020202020207d20656c7365207b0a202020202020202020202020202020202020202020202866756e6374696f6e2028742c206e2c20722c20692c206f2c20612c206c2c20732c20632c20642c207529207b0a2020202020202020202020202020202020202020202020207661722070203d206c203f20276f757470757427203a20276e6f6e65273b0a20202020202020202020202020202020202020202020202069662028652e7a69702e757365576562576f726b65727329207b0a202020202020202020202020202020202020202020202020202067280a20202020202020202020202020202020202020202020202020202020742c0a202020202020202020202020202020202020202020202020202020207b20736e3a206e2c20636f646563436c6173733a2027496e666c61746572272c20637263547970653a2070207d2c0a202020202020202020202020202020202020204d0802202020202020202020722c0a20202020202020202020202020202020202020202020202020202020692c0a202020202020202020202020202020202020202020202020202020206f2c0a20202020202020202020202020202020202020202020202020202020612c0a20202020202020202020202020202020202020202020202020202020632c0a20202020202020202020202020202020202020202020202020202020732c0a20202020202020202020202020202020202020202020202020202020642c0a20202020202020202020202020202020202020202020202020202020750a2020202020202020202020202020202020202020202020202020293b0a2020202020202020202020202020202020202020202020207d20656c7365207b0a20202020202020202020202020202020202020202020202020206d286e657720652e7a69702e496e666c6174657228292c20722c20692c206f2c20612c20702c20632c20732c20642c2075293b0a2020202020202020202020202020202020202020202020207d0a202020202020202020202020202020202020202020207d29280a202020202020202020202020202020202020202020202020642e5f776f726b65722c0a2020202020202020202020202020202020202020202020206c2b2b2c0a202020202020202020202020202020202020202020202020742c0a2020202020202020204d0802202020202020202020202020202020722c0a202020202020202020202020202020202020202020202020662c0a202020202020202020202020202020202020202020202020642e636f6d7072657373656453697a652c0a202020202020202020202020202020202020202020202020632c0a202020202020202020202020202020202020202020202020752c0a202020202020202020202020202020202020202020202020732c0a202020202020202020202020202020202020202020202020702c0a202020202020202020202020202020202020202020202020680a20202020202020202020202020202020202020202020293b0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020207d2c2068293b0a202020202020202020202020202020207d20656c7365207b0a2020202020202020202020202020202020206f286e293b0a202020202020202020202020202020207d0a20202020202020202020202020207d2c0a2020202020202020202020202020700a202020202020202020202020293b0a202020202020202020207d3b0a202020202020202020207661722063203d207b0a202020202020202020202020676574456e74726965733a2066756e6374696f6e20286529207b0a20202020202020202020202020207661722069203d20746869732e5f776f726b65723b0a202020204d0802202020202020202020202866756e6374696f6e20286529207b0a2020202020202020202020202020202066756e6374696f6e2069286e2c206929207b0a202020202020202020202020202020202020742e7265616455696e74384172726179280a2020202020202020202020202020202020202020742e73697a65202d206e2c0a20202020202020202020202020202020202020206e2c0a202020202020202020202020202020202020202066756e6374696f6e20287429207b0a20202020202020202020202020202020202020202020666f722028766172206e203d20742e6c656e677468202d2032323b206e203e3d20303b206e2d2d29207b0a202020202020202020202020202020202020202020202020696620280a2020202020202020202020202020202020202020202020202020745b6e5d203d3d3d2038302026260a2020202020202020202020202020202020202020202020202020745b6e202b20315d203d3d3d2037352026260a2020202020202020202020202020202020202020202020202020745b6e202b20325d203d3d3d20352026260a2020202020202020202020202020202020202020202020202020745b6e202b20335d203d3d3d20360a20202020202020202020202020202020202020202020202029207b0a202020202020202020202020202020202020202020202020202065286e65772044617461566965774d080228742e6275666665722c206e2c20323229293b0a202020202020202020202020202020202020202020202020202072657475726e3b0a2020202020202020202020202020202020202020202020207d0a202020202020202020202020202020202020202020207d0a202020202020202020202020202020202020202020206928293b0a20202020202020202020202020202020202020207d2c0a202020202020202020202020202020202020202066756e6374696f6e202829207b0a202020202020202020202020202020202020202020206f2872293b0a20202020202020202020202020202020202020207d0a202020202020202020202020202020202020293b0a202020202020202020202020202020207d0a2020202020202020202020202020202069662028742e73697a65203c20323229207b0a2020202020202020202020202020202020206f286e293b0a202020202020202020202020202020207d20656c7365207b0a202020202020202020202020202020202020692832322c2066756e6374696f6e202829207b0a202020202020202020202020202020202020202069284d6174682e6d696e2836353535382c20742e73697a65292c2066756e6374696f6e202829207b0a202020202020202020202020202020202020202020206f286e293b0a20202020202020202020202020202020202020207d293b0a20202020202020204d0802202020202020202020207d293b0a202020202020202020202020202020207d0a20202020202020202020202020207d292866756e6374696f6e20286c29207b0a202020202020202020202020202020207661722063203d206c2e67657455696e7433322831362c2074727565293b0a202020202020202020202020202020207661722064203d206c2e67657455696e74313628382c2074727565293b0a202020202020202020202020202020206966202863203c2030207c7c2063203e3d20742e73697a6529207b0a2020202020202020202020202020202020206f286e293b0a202020202020202020202020202020207d20656c7365207b0a202020202020202020202020202020202020742e7265616455696e74384172726179280a2020202020202020202020202020202020202020632c0a2020202020202020202020202020202020202020742e73697a65202d20632c0a202020202020202020202020202020202020202066756e6374696f6e20287429207b0a20202020202020202020202020202020202020202020766172206c3b0a2020202020202020202020202020202020202020202076617220633b0a2020202020202020202020202020202020202020202076617220753b0a202020202020202020202020202020202020202020207661722070203d20303b0a2020202020202020202020202020202020202020202076614d0802722068203d205b5d3b0a202020202020202020202020202020202020202020207661722066203d206128742e6c656e6774682c2074293b0a20202020202020202020202020202020202020202020666f7220287661722072203d20303b2072203c20643b20722b2b29207b0a202020202020202020202020202020202020202020202020286c203d206e657720732829292e5f776f726b6572203d20693b0a20202020202020202020202020202020202020202020202069662028662e766965772e67657455696e74333228702920213d203133343730393237333829207b0a20202020202020202020202020202020202020202020202020206f286e293b0a202020202020202020202020202020202020202020202020202072657475726e3b0a2020202020202020202020202020202020202020202020207d0a20202020202020202020202020202020202020202020202078286c2c20662c2070202b20362c20747275652c206f293b0a2020202020202020202020202020202020202020202020206c2e636f6d6d656e744c656e677468203d20662e766965772e67657455696e7431362870202b2033322c2074727565293b0a2020202020202020202020202020202020202020202020206c2e6469726563746f7279203d20283136202620662e766965772e67657455696e74382870202b2033382929203d3d2031363b0a20202020204d0802202020202020202020202020202020202020206c2e6f6666736574203d20662e766965772e67657455696e7433322870202b2034322c2074727565293b0a20202020202020202020202020202020202020202020202063203d2079280a2020202020202020202020202020202020202020202020202020662e61727261792e73756261727261792870202b2034362c2070202b203436202b206c2e66696c656e616d654c656e677468290a202020202020202020202020202020202020202020202020293b0a2020202020202020202020202020202020202020202020206c2e66696c656e616d65203d2028323034382026206c2e626974466c616729203d3d2032303438203f2076286329203a20772863293b0a202020202020202020202020202020202020202020202020696620280a2020202020202020202020202020202020202020202020202020216c2e6469726563746f72792026260a20202020202020202020202020202020202020202020202020206c2e66696c656e616d652e636861724174286c2e66696c656e616d652e6c656e677468202d203129203d3d20272f270a20202020202020202020202020202020202020202020202029207b0a20202020202020202020202020202020202020202020202020206c2e6469726563746f7279203d20747275653b0a2020202020202020202020202020202020202020202020204d08027d0a20202020202020202020202020202020202020202020202075203d2079280a2020202020202020202020202020202020202020202020202020662e61727261792e7375626172726179280a2020202020202020202020202020202020202020202020202020202070202b203436202b206c2e66696c656e616d654c656e677468202b206c2e65787472614669656c644c656e6774682c0a2020202020202020202020202020202020202020202020202020202070202b0a2020202020202020202020202020202020202020202020202020202020203436202b0a2020202020202020202020202020202020202020202020202020202020206c2e66696c656e616d654c656e677468202b0a2020202020202020202020202020202020202020202020202020202020206c2e65787472614669656c644c656e677468202b0a2020202020202020202020202020202020202020202020202020202020206c2e636f6d6d656e744c656e6774680a2020202020202020202020202020202020202020202020202020290a202020202020202020202020202020202020202020202020293b0a2020202020202020202020202020202020202020202020206c2e636f6d6d656e74203d2028323034382026206c2e626974466c616729203d3d2032303438203f2076287529203a20772875293b0a2020202020202020202020202020202020202020204d0802202020682e70757368286c293b0a20202020202020202020202020202020202020202020202070202b3d0a20202020202020202020202020202020202020202020202020203436202b0a20202020202020202020202020202020202020202020202020206c2e66696c656e616d654c656e677468202b0a20202020202020202020202020202020202020202020202020206c2e65787472614669656c644c656e677468202b0a20202020202020202020202020202020202020202020202020206c2e636f6d6d656e744c656e6774683b0a202020202020202020202020202020202020202020207d0a20202020202020202020202020202020202020202020652868293b0a20202020202020202020202020202020202020207d2c0a202020202020202020202020202020202020202066756e6374696f6e202829207b0a202020202020202020202020202020202020202020206f2872293b0a20202020202020202020202020202020202020207d0a202020202020202020202020202020202020293b0a202020202020202020202020202020207d0a20202020202020202020202020207d293b0a2020202020202020202020207d2c0a202020202020202020202020636c6f73653a2066756e6374696f6e20286529207b0a202020202020202020202020202069662028746869732e5f776f726b657229207b0a2020202020202020202020204d080220202020746869732e5f776f726b65722e7465726d696e61746528293b0a20202020202020202020202020202020746869732e5f776f726b6572203d206e756c6c3b0a20202020202020202020202020207d0a2020202020202020202020202020696620286529207b0a202020202020202020202020202020206528293b0a20202020202020202020202020207d0a2020202020202020202020207d2c0a2020202020202020202020205f776f726b65723a206e756c6c2c0a202020202020202020207d3b0a2020202020202020202069662028652e7a69702e757365576562576f726b65727329207b0a2020202020202020202020205f280a202020202020202020202020202027696e666c61746572272c0a202020202020202020202020202066756e6374696f6e20286529207b0a20202020202020202020202020202020632e5f776f726b6572203d20653b0a20202020202020202020202020202020692863293b0a20202020202020202020202020207d2c0a202020202020202020202020202066756e6374696f6e20286529207b0a202020202020202020202020202020206f2865293b0a20202020202020202020202020207d0a202020202020202020202020293b0a202020202020202020207d20656c7365207b0a202020202020202020202020692863293b0a202020202020202020207d0a20202020202020207d0a202020204d08022020202066756e6374696f6e206b286529207b0a2020202020202020202072657475726e20756e65736361706528656e636f6465555249436f6d706f6e656e74286529293b0a20202020202020207d0a202020202020202066756e6374696f6e2053286529207b0a20202020202020202020766172206e203d205b5d3b0a20202020202020202020666f7220287661722074203d20303b2074203c20652e6c656e6774683b20742b2b29207b0a2020202020202020202020206e2e7075736828652e63686172436f64654174287429293b0a202020202020202020207d0a2020202020202020202072657475726e206e3b0a20202020202020207d0a202020202020202066756e6374696f6e204328742c206e2c20722c206929207b0a2020202020202020202066756e6374696f6e2064286529207b0a202020202020202020202020722865207c7c20274572726f72207768696c652077726974696e67207a69702066696c652e27293b0a202020202020202020207d0a2020202020202020202066756e6374696f6e2075286529207b0a202020202020202020202020722865207c7c20274572726f72207768696c652072656164696e672066696c6520646174612e27293b0a202020202020202020207d0a20202020202020202020766172206f203d207b7d3b0a20202020202020202020766172206c203d205b5d3b0a20202020202020204d080220207661722073203d20303b0a202020202020202020207661722063203d20303b0a202020202020202020207661722070203d207b0a2020202020202020202020206164643a2066756e6374696f6e20286e2c20702c20682c20662c207729207b0a202020202020202020202020202066756e6374696f6e204328652c206e29207b0a202020202020202020202020202020207661722072203d2061283136293b0a2020202020202020202020202020202073202b3d2065207c7c20303b0a20202020202020202020202020202020722e766965772e73657455696e74333228302c2031333437303934323830293b0a20202020202020202020202020202020696620286e20213d3d20766f6964203029207b0a202020202020202020202020202020202020762e766965772e73657455696e7433322831302c206e2c2074727565293b0a202020202020202020202020202020202020722e766965772e73657455696e74333228342c206e2c2074727565293b0a202020202020202020202020202020207d0a20202020202020202020202020202020696620287029207b0a202020202020202020202020202020202020722e766965772e73657455696e74333228382c20652c2074727565293b0a202020202020202020202020202020202020762e766965772e73657455696e7433322831342c20652c2074727565293b0a202020202020204d08022020202020202020202020722e766965772e73657455696e7433322831322c20702e73697a652c2074727565293b0a202020202020202020202020202020202020762e766965772e73657455696e7433322831382c20702e73697a652c2074727565293b0a202020202020202020202020202020207d0a20202020202020202020202020202020742e777269746555696e74384172726179280a202020202020202020202020202020202020722e61727261792c0a20202020202020202020202020202020202066756e6374696f6e202829207b0a202020202020202020202020202020202020202073202b3d2031363b0a20202020202020202020202020202020202020206828293b0a2020202020202020202020202020202020207d2c0a202020202020202020202020202020202020640a20202020202020202020202020202020293b0a20202020202020202020202020207d0a202020202020202020202020202066756e6374696f6e20452829207b0a2020202020202020202020202020202077203d2077207c7c207b7d3b0a202020202020202020202020202020206e203d206e2e7472696d28293b0a2020202020202020202020202020202069662028772e6469726563746f7279202626206e2e636861724174286e2e6c656e677468202d20312920213d20272f2729207b0a2020202020202020202020202020202020206e202b4d08023d20272f273b0a202020202020202020202020202020207d0a20202020202020202020202020202020696620286f2e6861734f776e50726f7065727479286e2929207b0a20202020202020202020202020202020202072282746696c6520616c7265616479206578697374732e27293b0a202020202020202020202020202020207d20656c7365207b0a20202020202020202020202020202020202079203d2053286b286e29293b0a2020202020202020202020202020202020206c2e70757368286e293b0a2020202020202020202020202020202020202866756e6374696f6e20286529207b0a202020202020202020202020202020202020202076617220723b0a202020202020202020202020202020202020202078203d20772e6c6173744d6f6444617465207c7c206e6577204461746528293b0a202020202020202020202020202020202020202076203d2061283236293b0a20202020202020202020202020202020202020206f5b6e5d203d207b0a2020202020202020202020202020202020202020202068656164657241727261793a20762e61727261792c0a202020202020202020202020202020202020202020206469726563746f72793a20772e6469726563746f72792c0a2020202020202020202020202020202020202020202066696c656e616d653a20792c0a202020202020202020202020202020202020202020206f4d080266667365743a20732c0a20202020202020202020202020202020202020202020636f6d6d656e743a2053286b28772e636f6d6d656e74207c7c20272729292c0a20202020202020202020202020202020202020207d3b0a2020202020202020202020202020202020202020762e766965772e73657455696e74333228302c20333335353436333736293b0a202020202020202020202020202020202020202069662028772e76657273696f6e29207b0a20202020202020202020202020202020202020202020762e766965772e73657455696e743828302c20772e76657273696f6e293b0a20202020202020202020202020202020202020207d0a202020202020202020202020202020202020202069662028216920262620772e6c6576656c20213d3d20302026262021772e6469726563746f727929207b0a20202020202020202020202020202020202020202020762e766965772e73657455696e74313628342c2032303438293b0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020202020762e766965772e73657455696e743136280a20202020202020202020202020202020202020202020362c0a20202020202020202020202020202020202020202020282828782e676574486f7572732829203c3c203629207c20782e6765744d696e75746573282929203c3c203529207c0a20204d08022020202020202020202020202020202020202020202028782e6765745365636f6e64732829202f2032292c0a20202020202020202020202020202020202020202020747275650a2020202020202020202020202020202020202020293b0a2020202020202020202020202020202020202020762e766965772e73657455696e743136280a20202020202020202020202020202020202020202020382c0a2020202020202020202020202020202020202020202028282828782e67657446756c6c596561722829202d203139383029203c3c203429207c2028782e6765744d6f6e74682829202b20312929203c3c0a2020202020202020202020202020202020202020202020203529207c0a202020202020202020202020202020202020202020202020782e6765744461746528292c0a20202020202020202020202020202020202020202020747275650a2020202020202020202020202020202020202020293b0a2020202020202020202020202020202020202020762e766965772e73657455696e7431362832322c20792e6c656e6774682c2074727565293b0a20202020202020202020202020202020202020202872203d2061283330202b20792e6c656e67746829292e766965772e73657455696e74333228302c2031333437303933323532293b0a2020202020202020202020202020202020202020722e61727261792e73657428762e4d080261727261792c2034293b0a2020202020202020202020202020202020202020722e61727261792e73657428792c203330293b0a202020202020202020202020202020202020202073202b3d20722e61727261792e6c656e6774683b0a2020202020202020202020202020202020202020742e777269746555696e7438417272617928722e61727261792c20652c2064293b0a2020202020202020202020202020202020207d292866756e6374696f6e202829207b0a2020202020202020202020202020202020202020696620287029207b0a202020202020202020202020202020202020202020206966202869207c7c20772e6c6576656c203d3d3d203029207b0a2020202020202020202020202020202020202020202020206228412c20632b2b2c20702c20742c20302c20702e73697a652c20747275652c20432c20662c20752c2064293b0a202020202020202020202020202020202020202020207d20656c7365207b0a2020202020202020202020202020202020202020202020202866756e6374696f6e2028742c206e2c20722c20692c206f2c20612c206c2c20732c206329207b0a202020202020202020202020202020202020202020202020202069662028652e7a69702e757365576562576f726b65727329207b0a2020202020202020202020202020202020202020202020202020202067280a202020202020202020202020204d08022020202020202020202020202020202020742c0a2020202020202020202020202020202020202020202020202020202020207b0a2020202020202020202020202020202020202020202020202020202020202020736e3a206e2c0a20202020202020202020202020202020202020202020202020202020202020206f7074696f6e733a207b206c6576656c3a206f207d2c0a2020202020202020202020202020202020202020202020202020202020202020636f646563436c6173733a20274465666c61746572272c0a2020202020202020202020202020202020202020202020202020202020202020637263547970653a2027696e707574272c0a2020202020202020202020202020202020202020202020202020202020207d2c0a202020202020202020202020202020202020202020202020202020202020722c0a202020202020202020202020202020202020202020202020202020202020692c0a202020202020202020202020202020202020202020202020202020202020302c0a202020202020202020202020202020202020202020202020202020202020722e73697a652c0a2020202020202020202020202020202020202020202020202020202020206c2c0a202020202020202020202020202020202020202020202020202020202020612c0a202020202020202020202020202020202020202020202020202020202020732c4d08020a202020202020202020202020202020202020202020202020202020202020630a20202020202020202020202020202020202020202020202020202020293b0a20202020202020202020202020202020202020202020202020207d20656c7365207b0a202020202020202020202020202020202020202020202020202020206d280a2020202020202020202020202020202020202020202020202020202020206e657720652e7a69702e4465666c6174657228292c0a202020202020202020202020202020202020202020202020202020202020722c0a202020202020202020202020202020202020202020202020202020202020692c0a202020202020202020202020202020202020202020202020202020202020302c0a202020202020202020202020202020202020202020202020202020202020722e73697a652c0a20202020202020202020202020202020202020202020202020202020202027696e707574272c0a2020202020202020202020202020202020202020202020202020202020206c2c0a202020202020202020202020202020202020202020202020202020202020612c0a202020202020202020202020202020202020202020202020202020202020732c0a202020202020202020202020202020202020202020202020202020202020630a20202020202020202020202020202020202020202020202020202020293b0a4d080220202020202020202020202020202020202020202020202020207d0a2020202020202020202020202020202020202020202020207d2928412c20632b2b2c20702c20742c20772e6c6576656c2c20432c20662c20752c2064293b0a202020202020202020202020202020202020202020207d0a20202020202020202020202020202020202020207d20656c7365207b0a202020202020202020202020202020202020202020204328293b0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020207d293b0a202020202020202020202020202020207d0a20202020202020202020202020207d0a202020202020202020202020202076617220763b0a202020202020202020202020202076617220793b0a202020202020202020202020202076617220783b0a20202020202020202020202020207661722041203d20746869732e5f776f726b65723b0a2020202020202020202020202020696620287029207b0a20202020202020202020202020202020702e696e697428452c2075293b0a20202020202020202020202020207d20656c7365207b0a202020202020202020202020202020204528293b0a20202020202020202020202020207d0a2020202020202020202020207d2c0a202020202020202020202020636c6f73653a2066756e6374696f6e20286529207b0a202020202020202020204d08022020202069662028746869732e5f776f726b657229207b0a20202020202020202020202020202020746869732e5f776f726b65722e7465726d696e61746528293b0a20202020202020202020202020202020746869732e5f776f726b6572203d206e756c6c3b0a20202020202020202020202020207d0a202020202020202020202020202076617220693b0a20202020202020202020202020207661722063203d20303b0a20202020202020202020202020207661722075203d20303b0a2020202020202020202020202020666f7220287661722072203d20303b2072203c206c2e6c656e6774683b20722b2b29207b0a2020202020202020202020202020202063202b3d203436202b202869203d206f5b6c5b725d5d292e66696c656e616d652e6c656e677468202b20692e636f6d6d656e742e6c656e6774683b0a20202020202020202020202020207d0a2020202020202020202020202020766172206e203d20612863202b203232293b0a2020202020202020202020202020666f72202872203d20303b2072203c206c2e6c656e6774683b20722b2b29207b0a2020202020202020202020202020202069203d206f5b6c5b725d5d3b0a202020202020202020202020202020206e2e766965772e73657455696e74333228752c2031333437303932373338293b0a202020202020202020202020202020206e2e766965772e73657455696e4d08027431362875202b20342c2035313230293b0a202020202020202020202020202020206e2e61727261792e73657428692e68656164657241727261792c2075202b2036293b0a202020202020202020202020202020206e2e766965772e73657455696e7431362875202b2033322c20692e636f6d6d656e742e6c656e6774682c2074727565293b0a2020202020202020202020202020202069662028692e6469726563746f727929207b0a2020202020202020202020202020202020206e2e766965772e73657455696e74382875202b2033382c203136293b0a202020202020202020202020202020207d0a202020202020202020202020202020206e2e766965772e73657455696e7433322875202b2034322c20692e6f66667365742c2074727565293b0a202020202020202020202020202020206e2e61727261792e73657428692e66696c656e616d652c2075202b203436293b0a202020202020202020202020202020206e2e61727261792e73657428692e636f6d6d656e742c2075202b203436202b20692e66696c656e616d652e6c656e677468293b0a2020202020202020202020202020202075202b3d203436202b20692e66696c656e616d652e6c656e677468202b20692e636f6d6d656e742e6c656e6774683b0a20202020202020202020202020207d0a20202020202020202020202020206e2e766965772e73657455696e7433324d080228752c2031333437303933373636293b0a20202020202020202020202020206e2e766965772e73657455696e7431362875202b20382c206c2e6c656e6774682c2074727565293b0a20202020202020202020202020206e2e766965772e73657455696e7431362875202b2031302c206c2e6c656e6774682c2074727565293b0a20202020202020202020202020206e2e766965772e73657455696e7433322875202b2031322c20632c2074727565293b0a20202020202020202020202020206e2e766965772e73657455696e7433322875202b2031362c20732c2074727565293b0a2020202020202020202020202020742e777269746555696e74384172726179280a202020202020202020202020202020206e2e61727261792c0a2020202020202020202020202020202066756e6374696f6e202829207b0a202020202020202020202020202020202020742e676574446174612865293b0a202020202020202020202020202020207d2c0a20202020202020202020202020202020640a2020202020202020202020202020293b0a2020202020202020202020207d2c0a2020202020202020202020205f776f726b65723a206e756c6c2c0a202020202020202020207d3b0a2020202020202020202069662028652e7a69702e757365576562576f726b65727329207b0a2020202020202020202020205f280a202020202020202020202020204d080220276465666c61746572272c0a202020202020202020202020202066756e6374696f6e20286529207b0a20202020202020202020202020202020702e5f776f726b6572203d20653b0a202020202020202020202020202020206e2870293b0a20202020202020202020202020207d2c0a202020202020202020202020202066756e6374696f6e20286529207b0a20202020202020202020202020202020722865293b0a20202020202020202020202020207d0a202020202020202020202020293b0a202020202020202020207d20656c7365207b0a2020202020202020202020206e2870293b0a202020202020202020207d0a20202020202020207d0a202020202020202066756e6374696f6e205f28742c206e2c207229207b0a2020202020202020202066756e6374696f6e2073286529207b0a2020202020202020202020206c2e7465726d696e61746528293b0a202020202020202020202020722865293b0a202020202020202020207d0a20202020202020202020696620280a202020202020202020202020652e7a69702e776f726b657253637269707473203d3d3d206e756c6c207c7c0a202020202020202020202020652e7a69702e776f726b65725363726970747350617468203d3d3d206e756c6c0a2020202020202020202029207b0a20202020202020202020202076617220693b0a202020202020202020202020766172206f4d08023b0a20202020202020202020202076617220613b0a20202020202020202020202069662028652e7a69702e776f726b65725363726970747329207b0a202020202020202020202020202069203d20652e7a69702e776f726b6572536372697074735b745d3b0a2020202020202020202020202020696620282141727261792e6973417272617928692929207b0a2020202020202020202020202020202072286e6577204572726f7228277a69702e776f726b6572536372697074732e27202b2074202b2027206973206e6f7420616e206172726179212729293b0a2020202020202020202020202020202072657475726e3b0a20202020202020202020202020207d0a20202020202020202020202020206f203d20693b0a202020202020202020202020202061203d20646f63756d656e742e637265617465456c656d656e7428276127293b0a202020202020202020202020202069203d206f2e6d61702866756e6374696f6e20286529207b0a20202020202020202020202020202020612e68726566203d20653b0a2020202020202020202020202020202072657475726e20612e687265663b0a20202020202020202020202020207d293b0a2020202020202020202020207d20656c7365207b0a20202020202020202020202020202869203d20455b745d2e736c696365283029295b305d203d2028652e7a69702e776f726b6572536372694d080270747350617468207c7c20272729202b20695b305d3b0a2020202020202020202020207d0a202020202020202020202020766172206c203d206e657720576f726b657228695b305d293b0a2020202020202020202020206c2e636f64656354696d65203d206c2e63726354696d65203d20303b0a2020202020202020202020206c2e706f73744d657373616765287b20747970653a2027696d706f727453637269707473272c20736372697074733a20692e736c696365283129207d293b0a2020202020202020202020206c2e6164644576656e744c697374656e657228276d657373616765272c2066756e6374696f6e2065287429207b0a20202020202020202020202020207661722069203d20742e646174613b0a202020202020202020202020202069662028692e6572726f7229207b0a202020202020202020202020202020206c2e7465726d696e61746528293b0a202020202020202020202020202020207228692e6572726f72293b0a2020202020202020202020202020202072657475726e3b0a20202020202020202020202020207d0a202020202020202020202020202069662028692e74797065203d3d3d2027696d706f7274536372697074732729207b0a202020202020202020202020202020206c2e72656d6f76654576656e744c697374656e657228276d657373616765272c2065293b0a2020202020202020202020204d0802202020206c2e72656d6f76654576656e744c697374656e657228276572726f72272c2073293b0a202020202020202020202020202020206e286c293b0a20202020202020202020202020207d0a2020202020202020202020207d293b0a2020202020202020202020206c2e6164644576656e744c697374656e657228276572726f72272c2073293b0a202020202020202020207d20656c7365207b0a20202020202020202020202072280a20202020202020202020202020206e6577204572726f72280a2020202020202020202020202020202027456974686572207a69702e776f726b657253637269707473206f72207a69702e776f726b65725363726970747350617468206d6179206265207365742c206e6f7420626f74682e270a2020202020202020202020202020290a202020202020202020202020293b0a202020202020202020207d0a20202020202020207d0a202020202020202066756e6374696f6e2049286529207b0a20202020202020202020636f6e736f6c652e6572726f722865293b0a20202020202020207d0a202020202020202076617220743b0a2020202020202020766172206e203d202746696c6520666f726d6174206973206e6f74207265636f676e697a65642e273b0a20202020202020207661722072203d20274572726f72207768696c652072656164696e67207a69702066696c652e273b0a20202020204d0802202020747279207b0a2020202020202020202074203d206e657720426c6f62285b6e6577204461746156696577286e6577204172726179427566666572283029295d292e73697a65203d3d3d20303b0a20202020202020207d20636174636820286529207b7d0a2020202020202020692e70726f746f747970652e617070656e64203d2066756e6374696f6e20286529207b0a202020202020202020207661722074203d2030207c20746869732e6372633b0a20202020202020202020766172206e203d20746869732e7461626c653b0a202020202020202020207661722072203d20303b0a20202020202020202020666f7220287661722069203d2030207c20652e6c656e6774683b2072203c20693b20722b2b29207b0a20202020202020202020202074203d202874203e3e3e203829205e206e5b3235352026202874205e20655b725d295d3b0a202020202020202020207d0a20202020202020202020746869732e637263203d20743b0a20202020202020207d3b0a2020202020202020692e70726f746f747970652e676574203d2066756e6374696f6e202829207b0a2020202020202020202072657475726e207e746869732e6372633b0a20202020202020207d3b0a2020202020202020692e70726f746f747970652e7461626c65203d202866756e6374696f6e202829207b0a2020202020202020202076617220743b0a202020204d0802202020202020766172206e3b0a202020202020202020207661722072203d205b5d3b0a20202020202020202020666f7220287661722065203d20303b2065203c203235363b20652b2b29207b0a2020202020202020202020206e203d20653b0a202020202020202020202020666f72202874203d20303b2074203c20383b20742b2b29207b0a202020202020202020202020202069662028312026206e29207b0a202020202020202020202020202020206e203d20286e203e3e3e203129205e20333938383239323338343b0a20202020202020202020202020207d20656c7365207b0a202020202020202020202020202020206e203e3e3e3d20313b0a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020202020725b655d203d206e3b0a202020202020202020207d0a2020202020202020202072657475726e20723b0a20202020202020207d2928293b0a20202020202020206f2e70726f746f747970652e617070656e64203d2066756e6374696f6e2028652c207429207b0a2020202020202020202072657475726e20653b0a20202020202020207d3b0a20202020202020206f2e70726f746f747970652e666c757368203d2066756e6374696f6e202829207b7d3b0a2020202020202020732e70726f746f74797065203d206e6577206c28293b0a2020202020202020732e70726f746f4d0802747970652e636f6e7374727563746f72203d20733b0a2020202020202020632e70726f746f74797065203d206e6577206c28293b0a2020202020202020632e70726f746f747970652e636f6e7374727563746f72203d20633b0a2020202020202020642e70726f746f74797065203d206e6577206c28293b0a2020202020202020642e70726f746f747970652e636f6e7374727563746f72203d20643b0a2020202020202020752e70726f746f747970652e67657444617461203d2066756e6374696f6e20286529207b0a202020202020202020206528746869732e64617461293b0a20202020202020207d3b0a2020202020202020702e70726f746f74797065203d206e6577207528293b0a2020202020202020702e70726f746f747970652e636f6e7374727563746f72203d20703b0a2020202020202020682e70726f746f74797065203d206e6577207528293b0a2020202020202020682e70726f746f747970652e636f6e7374727563746f72203d20683b0a2020202020202020662e70726f746f74797065203d206e6577207528293b0a2020202020202020662e70726f746f747970652e636f6e7374727563746f72203d20663b0a20202020202020207661722045203d207b0a202020202020202020206465666c617465723a205b277a2d776f726b65722e6a73272c20276465666c6174652e6a73275d2c0a2020202020202020204d080220696e666c617465723a205b277a2d776f726b65722e6a73272c2027696e666c6174652e6a73275d2c0a20202020202020207d3b0a2020202020202020652e7a6970203d207b0a202020202020202020205265616465723a206c2c0a202020202020202020205772697465723a20752c0a20202020202020202020426c6f625265616465723a20642c0a202020202020202020204461746136345552495265616465723a20632c0a20202020202020202020546578745265616465723a20732c0a20202020202020202020426c6f625772697465723a20662c0a202020202020202020204461746136345552495772697465723a20682c0a20202020202020202020546578745772697465723a20702c0a202020202020202020206372656174655265616465723a2066756e6374696f6e2028652c20742c206e29207b0a2020202020202020202020206e203d206e207c7c20493b0a202020202020202020202020652e696e69742866756e6374696f6e202829207b0a20202020202020202020202020204128652c20742c206e293b0a2020202020202020202020207d2c206e293b0a202020202020202020207d2c0a202020202020202020206372656174655772697465723a2066756e6374696f6e2028652c20742c206e2c207229207b0a2020202020202020202020206e203d206e207c7c20493b0a20202020202020202020202072203d4d0802202121723b0a202020202020202020202020652e696e69742866756e6374696f6e202829207b0a20202020202020202020202020204328652c20742c206e2c2072293b0a2020202020202020202020207d2c206e293b0a202020202020202020207d2c0a20202020202020202020757365576562576f726b6572733a20747275652c0a20202020202020202020776f726b657253637269707473506174683a206e756c6c2c0a20202020202020202020776f726b6572536372697074733a206e756c6c2c0a20202020202020207d3b0a2020202020207d29286f293b0a2020202020202866756e6374696f6e20286529207b0a202020202020202066756e6374696f6e20732829207b0a2020202020202020202066756e6374696f6e206428652c20742c20692c206f2c20612c206c2c20642c20752c20702c20682c206629207b0a20202020202020202020202076617220673b0a202020202020202020202020766172206d3b0a20202020202020202020202076617220793b0a202020202020202020202020766172206b3b0a20202020202020202020202076617220443b0a2020202020202020202020207661722053203d20303b0a2020202020202020202020207661722076203d20693b0a202020202020202020202020646f207b0a20202020202020202020202020206e5b655b74202b20535d5d2b2b3b0a20202020202020202020204d0802202020532b2b3b0a2020202020202020202020202020762d2d3b0a2020202020202020202020207d207768696c6520287620213d3d2030293b0a202020202020202020202020696620286e5b305d203d3d206929207b0a2020202020202020202020202020645b305d203d202d313b0a2020202020202020202020202020755b305d203d20303b0a202020202020202020202020202072657475726e20303b0a2020202020202020202020207d0a2020202020202020202020207661722041203d20755b305d3b0a202020202020202020202020666f72202879203d20313b2079203c3d203135202626206e5b795d203d3d3d20303b20792b2b29207b7d0a2020202020202020202020207661722078203d20793b0a2020202020202020202020206966202841203c207929207b0a202020202020202020202020202041203d20793b0a2020202020202020202020207d0a202020202020202020202020666f72202876203d2031353b207620213d3d2030202626206e5b765d203d3d3d20303b20762d2d29207b7d0a2020202020202020202020207661722062203d20763b0a2020202020202020202020206966202841203e207629207b0a202020202020202020202020202041203d20763b0a2020202020202020202020207d0a202020202020202020202020755b305d203d20413b0a202020202020202020202020666f722028766172204d080249203d2031203c3c20793b2079203c20763b20792b2b2c2049203c3c3d203129207b0a2020202020202020202020202020696620282849202d3d206e5b795d29203c203029207b0a2020202020202020202020202020202072657475726e202d333b0a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020202020696620282849202d3d206e5b765d29203c203029207b0a202020202020202020202020202072657475726e202d333b0a2020202020202020202020207d0a2020202020202020202020206e5b765d202b3d20493b0a202020202020202020202020635b315d203d2079203d20303b0a20202020202020202020202053203d20313b0a202020202020202020202020666f722028766172205f203d20323b202d2d7620213d20303b2029207b0a2020202020202020202020202020635b5f5d203d2079202b3d206e5b535d3b0a20202020202020202020202020205f2b2b3b0a2020202020202020202020202020532b2b3b0a2020202020202020202020207d0a20202020202020202020202076203d20303b0a20202020202020202020202053203d20303b0a202020202020202020202020646f207b0a2020202020202020202020202020696620282879203d20655b74202b20535d2920213d3d203029207b0a20202020202020202020202020202020665b635b795d2b2b5d204d08023d20763b0a20202020202020202020202020207d0a2020202020202020202020202020532b2b3b0a2020202020202020202020207d207768696c6520282b2b76203c2069293b0a20202020202020202020202069203d20635b625d3b0a202020202020202020202020635b305d203d2076203d20303b0a20202020202020202020202053203d20303b0a2020202020202020202020207661722077203d202d313b0a2020202020202020202020207661722045203d202d413b0a202020202020202020202020735b305d203d20303b0a2020202020202020202020207661722043203d20303b0a202020202020202020202020666f72202844203d20303b2078203c3d20623b20782b2b29207b0a2020202020202020202020202020666f72202867203d206e5b785d3b20672d2d20213d20303b2029207b0a202020202020202020202020202020207768696c65202878203e2045202b204129207b0a202020202020202020202020202020202020772b2b3b0a20202020202020202020202020202020202044203d202844203d2062202d202845202b3d20412929203e2041203f2041203a20443b0a20202020202020202020202020202020202069662028286d203d2031203c3c202879203d2078202d20452929203e2067202b203129207b0a20202020202020202020202020202020202020206d202d3d2067202b20313b0a2020202020204d080220202020202020202020202020205f203d20783b0a20202020202020202020202020202020202020206966202879203c204429207b0a202020202020202020202020202020202020202020207768696c6520282b2b79203c2044202626202128286d203c3c3d203129203c3d206e5b2b2b5f5d2929207b0a2020202020202020202020202020202020202020202020206d202d3d206e5b5f5d3b0a202020202020202020202020202020202020202020207d0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202044203d2031203c3c20793b0a20202020202020202020202020202020202069662028685b305d202b2044203e203134343029207b0a202020202020202020202020202020202020202072657475726e202d333b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020735b775d203d2043203d20685b305d3b0a202020202020202020202020202020202020685b305d202b3d20443b0a2020202020202020202020202020202020206966202877203d3d3d203029207b0a2020202020202020202020202020202020202020645b305d203d20433b0a2020202020202020202020202020202020207d20656c7365207b0a2020202020202020202020202020202020202020635b774d08025d203d20763b0a2020202020202020202020202020202020202020725b305d203d20793b0a2020202020202020202020202020202020202020725b315d203d20413b0a202020202020202020202020202020202020202079203d2076203e3e3e202845202d2041293b0a2020202020202020202020202020202020202020725b325d203d2043202d20735b77202d20315d202d20793b0a2020202020202020202020202020202020202020702e73657428722c2033202a2028735b77202d20315d202b207929293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020207d0a20202020202020202020202020202020725b315d203d2078202d20453b0a202020202020202020202020202020206966202853203e3d206929207b0a202020202020202020202020202020202020725b305d203d203139323b0a202020202020202020202020202020207d20656c73652069662028665b535d203c206f29207b0a202020202020202020202020202020202020725b305d203d20665b535d203c20323536203f2030203a2039363b0a202020202020202020202020202020202020725b325d203d20665b532b2b5d3b0a202020202020202020202020202020207d20656c7365207b0a202020202020202020202020202020202020725b305d203d206c5b665b535d202d206f5d202b203136202b2036343b0a4d0802202020202020202020202020202020202020725b325d203d20615b665b532b2b5d202d206f5d3b0a202020202020202020202020202020207d0a202020202020202020202020202020206d203d2031203c3c202878202d2045293b0a20202020202020202020202020202020666f72202879203d2076203e3e3e20453b2079203c20443b2079202b3d206d29207b0a202020202020202020202020202020202020702e73657428722c2033202a202843202b207929293b0a202020202020202020202020202020207d0a20202020202020202020202020202020666f72202879203d2031203c3c202878202d2031293b202876202620792920213d20303b2079203e3e3e3d203129207b0a20202020202020202020202020202020202076205e3d20793b0a202020202020202020202020202020207d0a2020202020202020202020202020202076205e3d20793b0a20202020202020202020202020202020666f7220286b203d202831203c3c204529202d20313b2028762026206b2920213d20635b775d3b2029207b0a202020202020202020202020202020202020772d2d3b0a2020202020202020202020202020202020206b203d202831203c3c202845202d3d20412929202d20313b0a202020202020202020202020202020207d0a20202020202020202020202020207d0a2020202020202020202020207d0a20202020202020202020204d080220696620284920213d3d2030202626206220213d203129207b0a202020202020202020202020202072657475726e202d353b0a2020202020202020202020207d20656c7365207b0a202020202020202020202020202072657475726e20303b0a2020202020202020202020207d0a202020202020202020207d0a2020202020202020202066756e6374696f6e2075286929207b0a20202020202020202020202069662028216529207b0a202020202020202020202020202065203d205b5d3b0a202020202020202020202020202074203d205b5d3b0a20202020202020202020202020206e203d206e657720496e7433324172726179283136293b0a202020202020202020202020202072203d205b5d3b0a202020202020202020202020202073203d206e657720496e7433324172726179283135293b0a202020202020202020202020202063203d206e657720496e7433324172726179283136293b0a2020202020202020202020207d0a20202020202020202020202069662028742e6c656e677468203c206929207b0a202020202020202020202020202074203d205b5d3b0a2020202020202020202020207d0a202020202020202020202020666f722028766172206f203d20303b206f203c20693b206f2b2b29207b0a2020202020202020202020202020745b6f5d203d20303b0a2020202020202020202020207d0a20202020202020204d080220202020666f7220286f203d20303b206f203c2031363b206f2b2b29207b0a20202020202020202020202020206e5b6f5d203d20303b0a2020202020202020202020207d0a202020202020202020202020666f7220286f203d20303b206f203c20333b206f2b2b29207b0a2020202020202020202020202020725b6f5d203d20303b0a2020202020202020202020207d0a202020202020202020202020732e736574286e2e737562617272617928302c203135292c2030293b0a202020202020202020202020632e736574286e2e737562617272617928302c203136292c2030293b0a202020202020202020207d0a2020202020202020202076617220653b0a2020202020202020202076617220743b0a20202020202020202020766172206e3b0a2020202020202020202076617220723b0a2020202020202020202076617220733b0a2020202020202020202076617220633b0a20202020202020202020746869732e696e666c6174655f74726565735f62697473203d2066756e6374696f6e20286e2c20722c20692c206f2c206129207b0a202020202020202020202020766172206c3b0a20202020202020202020202075283139293b0a202020202020202020202020655b305d203d20303b0a20202020202020202020202069662028286c203d2064286e2c20302c2031392c2031392c206e756c6c2c206e756c6c2c20692c20722c206f4d08022c20652c20742929203d3d202d3329207b0a2020202020202020202020202020612e6d7367203d20276f766572737562736372696265642064796e616d696320626974206c656e677468732074726565273b0a2020202020202020202020207d20656c736520696620286c203d3d202d35207c7c20725b305d203d3d3d203029207b0a2020202020202020202020202020612e6d7367203d2027696e636f6d706c6574652064796e616d696320626974206c656e677468732074726565273b0a20202020202020202020202020206c203d202d333b0a2020202020202020202020207d0a20202020202020202020202072657475726e206c3b0a202020202020202020207d3b0a20202020202020202020746869732e696e666c6174655f74726565735f64796e616d6963203d2066756e6374696f6e20286e2c20722c20732c20632c20702c20682c20662c20672c206d29207b0a20202020202020202020202076617220623b0a2020202020202020202020207528323838293b0a202020202020202020202020655b305d203d20303b0a202020202020202020202020696620282862203d206428732c20302c206e2c203235372c20692c206f2c20682c20632c20672c20652c2074292920213d2030207c7c20635b305d203d3d3d203029207b0a20202020202020202020202020206966202862203d3d202d3329207b0a20202020202020204d080220202020202020206d2e6d7367203d20276f76657273756273637269626564206c69746572616c2f6c656e6774682074726565273b0a20202020202020202020202020207d20656c736520696620286220213d202d3429207b0a202020202020202020202020202020206d2e6d7367203d2027696e636f6d706c657465206c69746572616c2f6c656e6774682074726565273b0a2020202020202020202020202020202062203d202d333b0a20202020202020202020202020207d0a202020202020202020202020202072657475726e20623b0a2020202020202020202020207d20656c7365207b0a20202020202020202020202020207528323838293b0a2020202020202020202020202020696620280a202020202020202020202020202020202862203d206428732c206e2c20722c20302c20612c206c2c20662c20702c20672c20652c2074292920213d2030207c7c0a2020202020202020202020202020202028705b305d203d3d3d2030202626206e203e20323537290a202020202020202020202020202029207b0a202020202020202020202020202020206966202862203d3d202d3329207b0a2020202020202020202020202020202020206d2e6d7367203d20276f766572737562736372696265642064697374616e63652074726565273b0a202020202020202020202020202020207d20656c7365206966202862203d3d202d354d080229207b0a2020202020202020202020202020202020206d2e6d7367203d2027696e636f6d706c6574652064697374616e63652074726565273b0a20202020202020202020202020202020202062203d202d333b0a202020202020202020202020202020207d20656c736520696620286220213d202d3429207b0a2020202020202020202020202020202020206d2e6d7367203d2027656d7074792064697374616e636520747265652077697468206c656e67746873273b0a20202020202020202020202020202020202062203d202d333b0a202020202020202020202020202020207d0a2020202020202020202020202020202072657475726e20623b0a20202020202020202020202020207d20656c7365207b0a2020202020202020202020202020202072657475726e20303b0a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020207d3b0a20202020202020207d0a202020202020202066756e6374696f6e20632829207b0a2020202020202020202066756e6374696f6e206728652c206e2c20722c20692c206f2c20612c206c2c207329207b0a20202020202020202020202076617220633b0a20202020202020202020202076617220643b0a20202020202020202020202076617220753b0a20202020202020202020202076617220703b0a20202020202020202020202076617220623b4d08020a20202020202020202020202076617220783b0a20202020202020202020202076617220413b0a202020202020202020202020766172206b3b0a20202020202020202020202076617220533b0a2020202020202020202020207661722067203d20732e6e6578745f696e5f696e6465783b0a202020202020202020202020766172206d203d20732e617661696c5f696e3b0a2020202020202020202020207661722068203d206c2e626974623b0a2020202020202020202020207661722066203d206c2e6269746b3b0a2020202020202020202020207661722077203d202862203d206c2e777269746529203c206c2e72656164203f206c2e72656164202d2062202d2031203a206c2e656e64202d20623b0a2020202020202020202020207661722076203d20745b655d3b0a2020202020202020202020207661722079203d20745b6e5d3b0a202020202020202020202020646f207b0a20202020202020202020202020207768696c65202866203c20323029207b0a202020202020202020202020202020206d2d2d3b0a2020202020202020202020202020202068207c3d2028323535202620732e726561645f6279746528672b2b2929203c3c20663b0a2020202020202020202020202020202066202b3d20383b0a20202020202020202020202020207d0a2020202020202020202020202020696620282870203d202864203d2072295b284d080253203d2033202a20282875203d206929202b202863203d2068202620762929295d29203d3d3d203029207b0a2020202020202020202020202020202068203e3e3d20645b53202b20315d3b0a2020202020202020202020202020202066202d3d20645b53202b20315d3b0a202020202020202020202020202020206c2e77696e646f775b622b2b5d203d20645b53202b20325d3b0a20202020202020202020202020202020772d2d3b0a20202020202020202020202020207d0a2020202020202020202020207d207768696c65202877203e3d20323538202626206d203e3d203130293b0a2020202020202020202020206d202b3d2078203d2066203e3e2033203c202878203d20732e617661696c5f696e202d206d29203f2066203e3e2033203a20783b0a20202020202020202020202067202d3d20783b0a20202020202020202020202066202d3d2078203c3c20333b0a2020202020202020202020206c2e62697462203d20683b0a2020202020202020202020206c2e6269746b203d20663b0a202020202020202020202020732e617661696c5f696e203d206d3b0a202020202020202020202020732e746f74616c5f696e202b3d2067202d20732e6e6578745f696e5f696e6465783b0a202020202020202020202020732e6e6578745f696e5f696e646578203d20673b0a2020202020202020202020206c2e7772697465203d20623b0a4d080220202020202020202020202072657475726e20303b0a202020202020202020207d0a2020202020202020202076617220653b0a20202020202020202020766172206e3b0a2020202020202020202076617220723b0a2020202020202020202076617220693b0a20202020202020202020766172206f203d20303b0a202020202020202020207661722061203d20303b0a20202020202020202020766172206c203d20303b0a202020202020202020207661722073203d20303b0a202020202020202020207661722063203d20303b0a202020202020202020207661722064203d20303b0a202020202020202020207661722075203d20303b0a202020202020202020207661722070203d20303b0a202020202020202020207661722068203d20303b0a202020202020202020207661722066203d20303b0a20202020202020202020746869732e696e6974203d2066756e6374696f6e2028742c206f2c20612c206c2c20732c206329207b0a20202020202020202020202065203d20303b0a20202020202020202020202075203d20743b0a20202020202020202020202070203d206f3b0a20202020202020202020202072203d20613b0a20202020202020202020202068203d206c3b0a20202020202020202020202069203d20733b0a20202020202020202020202066203d20633b0a2020202020202020202020206e203d206e756c6c3b0a204d08022020202020202020207d3b0a20202020202020202020746869732e70726f63203d2066756e6374696f6e20286d2c20622c207729207b0a20202020202020202020202076617220763b0a20202020202020202020202076617220793b0a20202020202020202020202076617220783b0a20202020202020202020202076617220413b0a202020202020202020202020766172206b3b0a20202020202020202020202076617220533b0a20202020202020202020202076617220433b0a2020202020202020202020207661722045203d20303b0a202020202020202020202020766172205f203d20303b0a2020202020202020202020207661722049203d20303b0a20202020202020202020202049203d20622e6e6578745f696e5f696e6465783b0a20202020202020202020202041203d20622e617661696c5f696e3b0a20202020202020202020202045203d206d2e626974623b0a2020202020202020202020205f203d206d2e6269746b3b0a202020202020202020202020666f72202853203d20286b203d206d2e777269746529203c206d2e72656164203f206d2e72656164202d206b202d2031203a206d2e656e64202d206b3b203b2029207b0a202020202020202020202020202073776974636820286529207b0a202020202020202020202020202020206361736520303a0a20202020202020202020202020202020202069662028534d0802203e3d203235382026262041203e3d20313029207b0a20202020202020202020202020202020202020206d2e62697462203d20453b0a20202020202020202020202020202020202020206d2e6269746b203d205f3b0a2020202020202020202020202020202020202020622e617661696c5f696e203d20413b0a2020202020202020202020202020202020202020622e746f74616c5f696e202b3d2049202d20622e6e6578745f696e5f696e6465783b0a2020202020202020202020202020202020202020622e6e6578745f696e5f696e646578203d20493b0a20202020202020202020202020202020202020206d2e7772697465203d206b3b0a202020202020202020202020202020202020202077203d206728752c20702c20722c20682c20692c20662c206d2c2062293b0a202020202020202020202020202020202020202049203d20622e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020202041203d20622e617661696c5f696e3b0a202020202020202020202020202020202020202045203d206d2e626974623b0a20202020202020202020202020202020202020205f203d206d2e6269746b3b0a202020202020202020202020202020202020202053203d20286b203d206d2e777269746529203c206d2e72656164203f206d2e72656164202d206b202d2031203a206d2e656e64202d206b3b0a4d08022020202020202020202020202020202020202020696620287720213d203029207b0a2020202020202020202020202020202020202020202065203d2077203d3d2031203f2037203a20393b0a20202020202020202020202020202020202020202020627265616b3b0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206c203d20753b0a2020202020202020202020202020202020206e203d20723b0a20202020202020202020202020202020202061203d20683b0a20202020202020202020202020202020202065203d20313b0a202020202020202020202020202020206361736520313a0a202020202020202020202020202020202020666f72202876203d206c3b205f203c20763b2029207b0a20202020202020202020202020202020202020206966202841203d3d3d203029207b0a202020202020202020202020202020202020202020206d2e62697462203d20453b0a202020202020202020202020202020202020202020206d2e6269746b203d205f3b0a20202020202020202020202020202020202020202020622e617661696c5f696e203d20413b0a20202020202020202020202020202020202020202020622e746f74616c5f696e202b3d2049202d20622e6e6578745f696e5f696e6465783b0a202020202020202020204d0802202020202020202020202020622e6e6578745f696e5f696e646578203d20493b0a202020202020202020202020202020202020202020206d2e7772697465203d206b3b0a2020202020202020202020202020202020202020202072657475726e206d2e696e666c6174655f666c75736828622c2077293b0a20202020202020202020202020202020202020207d0a202020202020202020202020202020202020202077203d20303b0a2020202020202020202020202020202020202020412d2d3b0a202020202020202020202020202020202020202045207c3d2028323535202620622e726561645f6279746528492b2b2929203c3c205f3b0a20202020202020202020202020202020202020205f202b3d20383b0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202045203e3e3e3d206e5b2879203d2033202a202861202b202845202620745b765d292929202b20315d3b0a2020202020202020202020202020202020205f202d3d206e5b79202b20315d3b0a202020202020202020202020202020202020696620282878203d206e5b795d29203d3d3d203029207b0a202020202020202020202020202020202020202073203d206e5b79202b20325d3b0a202020202020202020202020202020202020202065203d20363b0a2020202020202020202020202020202020202020627265616b3b4d08020a2020202020202020202020202020202020207d0a20202020202020202020202020202020202069662028283136202620782920213d203029207b0a202020202020202020202020202020202020202063203d203135202620783b0a20202020202020202020202020202020202020206f203d206e5b79202b20325d3b0a202020202020202020202020202020202020202065203d20323b0a2020202020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020696620282836342026207829203d3d203029207b0a20202020202020202020202020202020202020206c203d20783b0a202020202020202020202020202020202020202061203d2079202f2033202b206e5b79202b20325d3b0a2020202020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202069662028283332202620782920213d203029207b0a202020202020202020202020202020202020202065203d20373b0a2020202020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202065203d20393b0a202020202020202020202020202020202020622e6d7367203d20274d0802696e76616c6964206c69746572616c2f6c656e67746820636f6465273b0a20202020202020202020202020202020202077203d202d333b0a2020202020202020202020202020202020206d2e62697462203d20453b0a2020202020202020202020202020202020206d2e6269746b203d205f3b0a202020202020202020202020202020202020622e617661696c5f696e203d20413b0a202020202020202020202020202020202020622e746f74616c5f696e202b3d2049202d20622e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020622e6e6578745f696e5f696e646578203d20493b0a2020202020202020202020202020202020206d2e7772697465203d206b3b0a20202020202020202020202020202020202072657475726e206d2e696e666c6174655f666c75736828622c2077293b0a202020202020202020202020202020206361736520323a0a202020202020202020202020202020202020666f72202876203d20633b205f203c20763b2029207b0a20202020202020202020202020202020202020206966202841203d3d3d203029207b0a202020202020202020202020202020202020202020206d2e62697462203d20453b0a202020202020202020202020202020202020202020206d2e6269746b203d205f3b0a20202020202020202020202020202020202020202020622e617661696c5f694d08026e203d20413b0a20202020202020202020202020202020202020202020622e746f74616c5f696e202b3d2049202d20622e6e6578745f696e5f696e6465783b0a20202020202020202020202020202020202020202020622e6e6578745f696e5f696e646578203d20493b0a202020202020202020202020202020202020202020206d2e7772697465203d206b3b0a2020202020202020202020202020202020202020202072657475726e206d2e696e666c6174655f666c75736828622c2077293b0a20202020202020202020202020202020202020207d0a202020202020202020202020202020202020202077203d20303b0a2020202020202020202020202020202020202020412d2d3b0a202020202020202020202020202020202020202045207c3d2028323535202620622e726561645f6279746528492b2b2929203c3c205f3b0a20202020202020202020202020202020202020205f202b3d20383b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206f202b3d2045202620745b765d3b0a20202020202020202020202020202020202045203e3e3d20763b0a2020202020202020202020202020202020205f202d3d20763b0a2020202020202020202020202020202020206c203d20703b0a2020202020202020202020202020202020206e203d20693b0a2020202020202020202020204d080220202020202061203d20663b0a20202020202020202020202020202020202065203d20333b0a202020202020202020202020202020206361736520333a0a202020202020202020202020202020202020666f72202876203d206c3b205f203c20763b2029207b0a20202020202020202020202020202020202020206966202841203d3d3d203029207b0a202020202020202020202020202020202020202020206d2e62697462203d20453b0a202020202020202020202020202020202020202020206d2e6269746b203d205f3b0a20202020202020202020202020202020202020202020622e617661696c5f696e203d20413b0a20202020202020202020202020202020202020202020622e746f74616c5f696e202b3d2049202d20622e6e6578745f696e5f696e6465783b0a20202020202020202020202020202020202020202020622e6e6578745f696e5f696e646578203d20493b0a202020202020202020202020202020202020202020206d2e7772697465203d206b3b0a2020202020202020202020202020202020202020202072657475726e206d2e696e666c6174655f666c75736828622c2077293b0a20202020202020202020202020202020202020207d0a202020202020202020202020202020202020202077203d20303b0a2020202020202020202020202020202020202020412d2d3b0a2020202020202020202020202020204d0802202020202045207c3d2028323535202620622e726561645f6279746528492b2b2929203c3c205f3b0a20202020202020202020202020202020202020205f202b3d20383b0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202045203e3e3d206e5b2879203d2033202a202861202b202845202620745b765d292929202b20315d3b0a2020202020202020202020202020202020205f202d3d206e5b79202b20315d3b0a202020202020202020202020202020202020696620282831362026202878203d206e5b795d292920213d203029207b0a202020202020202020202020202020202020202063203d203135202620783b0a202020202020202020202020202020202020202064203d206e5b79202b20325d3b0a202020202020202020202020202020202020202065203d20343b0a2020202020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020696620282836342026207829203d3d203029207b0a20202020202020202020202020202020202020206c203d20783b0a202020202020202020202020202020202020202061203d2079202f2033202b206e5b79202b20325d3b0a2020202020202020202020202020202020202020627265616b3b0a202020202020202020202020202020204d080220207d0a20202020202020202020202020202020202065203d20393b0a202020202020202020202020202020202020622e6d7367203d2027696e76616c69642064697374616e636520636f6465273b0a20202020202020202020202020202020202077203d202d333b0a2020202020202020202020202020202020206d2e62697462203d20453b0a2020202020202020202020202020202020206d2e6269746b203d205f3b0a202020202020202020202020202020202020622e617661696c5f696e203d20413b0a202020202020202020202020202020202020622e746f74616c5f696e202b3d2049202d20622e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020622e6e6578745f696e5f696e646578203d20493b0a2020202020202020202020202020202020206d2e7772697465203d206b3b0a20202020202020202020202020202020202072657475726e206d2e696e666c6174655f666c75736828622c2077293b0a202020202020202020202020202020206361736520343a0a202020202020202020202020202020202020666f72202876203d20633b205f203c20763b2029207b0a20202020202020202020202020202020202020206966202841203d3d3d203029207b0a202020202020202020202020202020202020202020206d2e62697462203d20453b0a2020202020202020202020202020204d0802202020202020206d2e6269746b203d205f3b0a20202020202020202020202020202020202020202020622e617661696c5f696e203d20413b0a20202020202020202020202020202020202020202020622e746f74616c5f696e202b3d2049202d20622e6e6578745f696e5f696e6465783b0a20202020202020202020202020202020202020202020622e6e6578745f696e5f696e646578203d20493b0a202020202020202020202020202020202020202020206d2e7772697465203d206b3b0a2020202020202020202020202020202020202020202072657475726e206d2e696e666c6174655f666c75736828622c2077293b0a20202020202020202020202020202020202020207d0a202020202020202020202020202020202020202077203d20303b0a2020202020202020202020202020202020202020412d2d3b0a202020202020202020202020202020202020202045207c3d2028323535202620622e726561645f6279746528492b2b2929203c3c205f3b0a20202020202020202020202020202020202020205f202b3d20383b0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202064202b3d2045202620745b765d3b0a20202020202020202020202020202020202045203e3e3d20763b0a2020202020202020202020202020202020205f202d3d20763b0a2020202020202020202020204d080220202020202065203d20353b0a202020202020202020202020202020206361736520353a0a202020202020202020202020202020202020666f72202843203d206b202d20643b2043203c20303b2029207b0a202020202020202020202020202020202020202043202b3d206d2e656e643b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020207768696c6520286f20213d3d203029207b0a20202020202020202020202020202020202020206966202853203d3d3d203029207b0a20202020202020202020202020202020202020202020696620286b203d3d206d2e656e64202626206d2e7265616420213d3d203029207b0a20202020202020202020202020202020202020202020202053203d20286b203d203029203c206d2e72656164203f206d2e72656164202d206b202d2031203a206d2e656e64202d206b3b0a202020202020202020202020202020202020202020207d0a202020202020202020202020202020202020202020206966202853203d3d3d203029207b0a2020202020202020202020202020202020202020202020206d2e7772697465203d206b3b0a20202020202020202020202020202020202020202020202077203d206d2e696e666c6174655f666c75736828622c2077293b0a20202020202020202020202020202020202020202020202053203d20286b203d206d2e4d0802777269746529203c206d2e72656164203f206d2e72656164202d206b202d2031203a206d2e656e64202d206b3b0a202020202020202020202020202020202020202020202020696620286b203d3d206d2e656e64202626206d2e7265616420213d3d203029207b0a202020202020202020202020202020202020202020202020202053203d20286b203d203029203c206d2e72656164203f206d2e72656164202d206b202d2031203a206d2e656e64202d206b3b0a2020202020202020202020202020202020202020202020207d0a2020202020202020202020202020202020202020202020206966202853203d3d3d203029207b0a20202020202020202020202020202020202020202020202020206d2e62697462203d20453b0a20202020202020202020202020202020202020202020202020206d2e6269746b203d205f3b0a2020202020202020202020202020202020202020202020202020622e617661696c5f696e203d20413b0a2020202020202020202020202020202020202020202020202020622e746f74616c5f696e202b3d2049202d20622e6e6578745f696e5f696e6465783b0a2020202020202020202020202020202020202020202020202020622e6e6578745f696e5f696e646578203d20493b0a20202020202020202020202020202020202020202020202020206d2e7772697465203d206b3b0a2020202020202020204d0802202020202020202020202020202020202072657475726e206d2e696e666c6174655f666c75736828622c2077293b0a2020202020202020202020202020202020202020202020207d0a202020202020202020202020202020202020202020207d0a20202020202020202020202020202020202020207d0a20202020202020202020202020202020202020206d2e77696e646f775b6b2b2b5d203d206d2e77696e646f775b432b2b5d3b0a2020202020202020202020202020202020202020532d2d3b0a20202020202020202020202020202020202020206966202843203d3d206d2e656e6429207b0a2020202020202020202020202020202020202020202043203d20303b0a20202020202020202020202020202020202020207d0a20202020202020202020202020202020202020206f2d2d3b0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202065203d20303b0a202020202020202020202020202020202020627265616b3b0a202020202020202020202020202020206361736520363a0a2020202020202020202020202020202020206966202853203d3d3d203029207b0a2020202020202020202020202020202020202020696620286b203d3d206d2e656e64202626206d2e7265616420213d3d203029207b0a2020202020202020202020202020202020202020202053203d20286b203d4d0802203029203c206d2e72656164203f206d2e72656164202d206b202d2031203a206d2e656e64202d206b3b0a20202020202020202020202020202020202020207d0a20202020202020202020202020202020202020206966202853203d3d3d203029207b0a202020202020202020202020202020202020202020206d2e7772697465203d206b3b0a2020202020202020202020202020202020202020202077203d206d2e696e666c6174655f666c75736828622c2077293b0a2020202020202020202020202020202020202020202053203d20286b203d206d2e777269746529203c206d2e72656164203f206d2e72656164202d206b202d2031203a206d2e656e64202d206b3b0a20202020202020202020202020202020202020202020696620286b203d3d206d2e656e64202626206d2e7265616420213d3d203029207b0a20202020202020202020202020202020202020202020202053203d20286b203d203029203c206d2e72656164203f206d2e72656164202d206b202d2031203a206d2e656e64202d206b3b0a202020202020202020202020202020202020202020207d0a202020202020202020202020202020202020202020206966202853203d3d3d203029207b0a2020202020202020202020202020202020202020202020206d2e62697462203d20453b0a2020202020202020202020202020202020202020202020206d2e6269744d08026b203d205f3b0a202020202020202020202020202020202020202020202020622e617661696c5f696e203d20413b0a202020202020202020202020202020202020202020202020622e746f74616c5f696e202b3d2049202d20622e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020202020202020622e6e6578745f696e5f696e646578203d20493b0a2020202020202020202020202020202020202020202020206d2e7772697465203d206b3b0a20202020202020202020202020202020202020202020202072657475726e206d2e696e666c6174655f666c75736828622c2077293b0a202020202020202020202020202020202020202020207d0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202077203d20303b0a2020202020202020202020202020202020206d2e77696e646f775b6b2b2b5d203d20733b0a202020202020202020202020202020202020532d2d3b0a20202020202020202020202020202020202065203d20303b0a202020202020202020202020202020202020627265616b3b0a202020202020202020202020202020206361736520373a0a202020202020202020202020202020202020696620285f203e203729207b0a20202020202020202020202020202020202020205f204d08022d3d20383b0a2020202020202020202020202020202020202020412b2b3b0a2020202020202020202020202020202020202020492d2d3b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206d2e7772697465203d206b3b0a20202020202020202020202020202020202077203d206d2e696e666c6174655f666c75736828622c2077293b0a20202020202020202020202020202020202053203d20286b203d206d2e777269746529203c206d2e72656164203f206d2e72656164202d206b202d2031203a206d2e656e64202d206b3b0a202020202020202020202020202020202020696620286d2e7265616420213d206d2e777269746529207b0a20202020202020202020202020202020202020206d2e62697462203d20453b0a20202020202020202020202020202020202020206d2e6269746b203d205f3b0a2020202020202020202020202020202020202020622e617661696c5f696e203d20413b0a2020202020202020202020202020202020202020622e746f74616c5f696e202b3d2049202d20622e6e6578745f696e5f696e6465783b0a2020202020202020202020202020202020202020622e6e6578745f696e5f696e646578203d20493b0a20202020202020202020202020202020202020206d2e7772697465203d206b3b0a2020202020202020202020202020202020202020724d0802657475726e206d2e696e666c6174655f666c75736828622c2077293b0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202065203d20383b0a202020202020202020202020202020206361736520383a0a20202020202020202020202020202020202077203d20313b0a2020202020202020202020202020202020206d2e62697462203d20453b0a2020202020202020202020202020202020206d2e6269746b203d205f3b0a202020202020202020202020202020202020622e617661696c5f696e203d20413b0a202020202020202020202020202020202020622e746f74616c5f696e202b3d2049202d20622e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020622e6e6578745f696e5f696e646578203d20493b0a2020202020202020202020202020202020206d2e7772697465203d206b3b0a20202020202020202020202020202020202072657475726e206d2e696e666c6174655f666c75736828622c2077293b0a202020202020202020202020202020206361736520393a0a20202020202020202020202020202020202077203d202d333b0a2020202020202020202020202020202020206d2e62697462203d20453b0a2020202020202020202020202020202020206d2e6269746b203d205f3b0a202020202020202020202020202020202020622e61764d080261696c5f696e203d20413b0a202020202020202020202020202020202020622e746f74616c5f696e202b3d2049202d20622e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020622e6e6578745f696e5f696e646578203d20493b0a2020202020202020202020202020202020206d2e7772697465203d206b3b0a20202020202020202020202020202020202072657475726e206d2e696e666c6174655f666c75736828622c2077293b0a2020202020202020202020202020202064656661756c743a0a20202020202020202020202020202020202077203d202d323b0a2020202020202020202020202020202020206d2e62697462203d20453b0a2020202020202020202020202020202020206d2e6269746b203d205f3b0a202020202020202020202020202020202020622e617661696c5f696e203d20413b0a202020202020202020202020202020202020622e746f74616c5f696e202b3d2049202d20622e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020622e6e6578745f696e5f696e646578203d20493b0a2020202020202020202020202020202020206d2e7772697465203d206b3b0a20202020202020202020202020202020202072657475726e206d2e696e666c6174655f666c75736828622c2077293b0a20202020202020202020202020207d0a20202020204d0802202020202020207d0a202020202020202020207d3b0a20202020202020202020746869732e66726565203d2066756e6374696f6e202829207b7d3b0a20202020202020207d0a202020202020202066756e6374696f6e207528652c206e29207b0a2020202020202020202076617220723b0a202020202020202020207661722069203d20746869733b0a20202020202020202020766172206f203d20303b0a202020202020202020207661722061203d20303b0a20202020202020202020766172206c203d20303b0a202020202020202020207661722075203d20303b0a202020202020202020207661722070203d205b305d3b0a202020202020202020207661722068203d205b305d3b0a202020202020202020207661722066203d206e6577206328293b0a202020202020202020207661722067203d20303b0a20202020202020202020766172206d203d206e657720496e74333241727261792834333230293b0a202020202020202020207661722062203d206e6577207328293b0a20202020202020202020692e6269746b203d20303b0a20202020202020202020692e62697462203d20303b0a20202020202020202020692e77696e646f77203d206e65772055696e74384172726179286e293b0a20202020202020202020692e656e64203d206e3b0a20202020202020202020692e72656164203d20303b0a202020202020202020204d0802692e7772697465203d20303b0a20202020202020202020692e7265736574203d2066756e6374696f6e2028652c207429207b0a202020202020202020202020696620287429207b0a2020202020202020202020202020745b305d203d20303b0a2020202020202020202020207d0a202020202020202020202020696620286f203d3d203629207b0a2020202020202020202020202020662e667265652865293b0a2020202020202020202020207d0a2020202020202020202020206f203d20303b0a202020202020202020202020692e6269746b203d20303b0a202020202020202020202020692e62697462203d20303b0a202020202020202020202020692e72656164203d20692e7772697465203d20303b0a202020202020202020207d3b0a20202020202020202020692e726573657428652c206e756c6c293b0a20202020202020202020692e696e666c6174655f666c757368203d2066756e6374696f6e2028652c207429207b0a202020202020202020202020766172206e3b0a202020202020202020202020766172206f3b0a2020202020202020202020207661722072203d20652e6e6578745f6f75745f696e6465783b0a202020202020202020202020696620280a2020202020202020202020202020286e203d2028286f203d20692e7265616429203c3d20692e7772697465203f20692e7772697465203a20692e656e6429202d4d0802206f29203e0a2020202020202020202020202020652e617661696c5f6f75740a20202020202020202020202029207b0a20202020202020202020202020206e203d20652e617661696c5f6f75743b0a2020202020202020202020207d0a202020202020202020202020696620286e20213d3d20302026262074203d3d202d3529207b0a202020202020202020202020202074203d20303b0a2020202020202020202020207d0a202020202020202020202020652e617661696c5f6f7574202d3d206e3b0a202020202020202020202020652e746f74616c5f6f7574202b3d206e3b0a202020202020202020202020652e6e6578745f6f75742e73657428692e77696e646f772e7375626172726179286f2c206f202b206e292c2072293b0a20202020202020202020202072202b3d206e3b0a20202020202020202020202069662028286f202b3d206e29203d3d20692e656e6429207b0a20202020202020202020202020206f203d20303b0a202020202020202020202020202069662028692e7772697465203d3d20692e656e6429207b0a20202020202020202020202020202020692e7772697465203d20303b0a20202020202020202020202020207d0a202020202020202020202020202069662028286e203d20692e7772697465202d206f29203e20652e617661696c5f6f757429207b0a202020202020202020202020202020206e203d204d0802652e617661696c5f6f75743b0a20202020202020202020202020207d0a2020202020202020202020202020696620286e20213d3d20302026262074203d3d202d3529207b0a2020202020202020202020202020202074203d20303b0a20202020202020202020202020207d0a2020202020202020202020202020652e617661696c5f6f7574202d3d206e3b0a2020202020202020202020202020652e746f74616c5f6f7574202b3d206e3b0a2020202020202020202020202020652e6e6578745f6f75742e73657428692e77696e646f772e7375626172726179286f2c206f202b206e292c2072293b0a202020202020202020202020202072202b3d206e3b0a20202020202020202020202020206f202b3d206e3b0a2020202020202020202020207d0a202020202020202020202020652e6e6578745f6f75745f696e646578203d20723b0a202020202020202020202020692e72656164203d206f3b0a20202020202020202020202072657475726e20743b0a202020202020202020207d3b0a20202020202020202020692e70726f63203d2066756e6374696f6e2028652c206e29207b0a20202020202020202020202076617220633b0a20202020202020202020202076617220773b0a20202020202020202020202076617220763b0a20202020202020202020202076617220793b0a20202020202020202020202076617220783b0a2020204d080220202020202020202076617220413b0a202020202020202020202020766172206b3b0a20202020202020202020202076617220533b0a20202020202020202020202079203d20652e6e6578745f696e5f696e6465783b0a20202020202020202020202078203d20652e617661696c5f696e3b0a20202020202020202020202077203d20692e626974623b0a20202020202020202020202076203d20692e6269746b3b0a202020202020202020202020666f7220286b203d202841203d20692e777269746529203c20692e72656164203f20692e72656164202d2041202d2031203a20692e656e64202d20413b203b2029207b0a202020202020202020202020202073776974636820286f29207b0a202020202020202020202020202020206361736520303a0a2020202020202020202020202020202020207768696c65202876203c203329207b0a20202020202020202020202020202020202020206966202878203d3d3d203029207b0a20202020202020202020202020202020202020202020692e62697462203d20773b0a20202020202020202020202020202020202020202020692e6269746b203d20763b0a20202020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a20202020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f694d08026e6465783b0a20202020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a20202020202020202020202020202020202020202020692e7772697465203d20413b0a2020202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a20202020202020202020202020202020202020207d0a20202020202020202020202020202020202020206e203d20303b0a2020202020202020202020202020202020202020782d2d3b0a202020202020202020202020202020202020202077207c3d2028323535202620652e726561645f6279746528792b2b2929203c3c20763b0a202020202020202020202020202020202020202076202b3d20383b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020207377697463682028282867203d20312026202863203d20372026207729292c2063203e3e3e20312929207b0a20202020202020202020202020202020202020206361736520303a0a2020202020202020202020202020202020202020202077203e3e3e3d20333b0a2020202020202020202020202020202020202020202077203e3e3e3d2063203d20372026202876202d3d2033293b0a2020202020202020202020202020202020202020202076202d3d20633b0a202020202020204d08022020202020202020202020202020206f203d20313b0a20202020202020202020202020202020202020202020627265616b3b0a20202020202020202020202020202020202020206361736520313a0a202020202020202020202020202020202020202020207661722043203d205b5d3b0a202020202020202020202020202020202020202020207661722045203d205b5d3b0a20202020202020202020202020202020202020202020766172205f203d205b5b5d5d3b0a202020202020202020202020202020202020202020207661722049203d205b5b5d5d3b0a20202020202020202020202020202020202020202020732e696e666c6174655f74726565735f666978656428432c20452c205f2c2049293b0a20202020202020202020202020202020202020202020662e696e697428435b305d2c20455b305d2c205f5b305d2c20302c20495b305d2c2030293b0a2020202020202020202020202020202020202020202077203e3e3e3d20333b0a2020202020202020202020202020202020202020202076202d3d20333b0a202020202020202020202020202020202020202020206f203d20363b0a20202020202020202020202020202020202020202020627265616b3b0a20202020202020202020202020202020202020206361736520323a0a2020202020202020202020202020202020202020202077203e3e3e3d20333b0a202020204d080220202020202020202020202020202020202076202d3d20333b0a202020202020202020202020202020202020202020206f203d20333b0a20202020202020202020202020202020202020202020627265616b3b0a20202020202020202020202020202020202020206361736520333a0a2020202020202020202020202020202020202020202077203e3e3e3d20333b0a2020202020202020202020202020202020202020202076202d3d20333b0a202020202020202020202020202020202020202020206f203d20393b0a20202020202020202020202020202020202020202020652e6d7367203d2027696e76616c696420626c6f636b2074797065273b0a202020202020202020202020202020202020202020206e203d202d333b0a20202020202020202020202020202020202020202020692e62697462203d20773b0a20202020202020202020202020202020202020202020692e6269746b203d20763b0a20202020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a20202020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a20202020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a20202020202020202020202020202020202020202020692e77726974654d0802203d20413b0a2020202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020627265616b3b0a202020202020202020202020202020206361736520313a0a2020202020202020202020202020202020207768696c65202876203c20333229207b0a20202020202020202020202020202020202020206966202878203d3d3d203029207b0a20202020202020202020202020202020202020202020692e62697462203d20773b0a20202020202020202020202020202020202020202020692e6269746b203d20763b0a20202020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a20202020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a20202020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a20202020202020202020202020202020202020202020692e7772697465203d20413b0a2020202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a20202020202020202020202020202020202020207d0a20202020202020204d08022020202020202020202020206e203d20303b0a2020202020202020202020202020202020202020782d2d3b0a202020202020202020202020202020202020202077207c3d2028323535202620652e726561645f6279746528792b2b2929203c3c20763b0a202020202020202020202020202020202020202076202b3d20383b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206966202828287e77203e3e3e2031362920262036353533352920213d20283635353335202620772929207b0a20202020202020202020202020202020202020206f203d20393b0a2020202020202020202020202020202020202020652e6d7367203d2027696e76616c69642073746f72656420626c6f636b206c656e67746873273b0a20202020202020202020202020202020202020206e203d202d333b0a2020202020202020202020202020202020202020692e62697462203d20773b0a2020202020202020202020202020202020202020692e6269746b203d20763b0a2020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a2020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a2020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b4d08020a2020202020202020202020202020202020202020692e7772697465203d20413b0a202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202061203d203635353335202620773b0a20202020202020202020202020202020202077203d2076203d20303b0a2020202020202020202020202020202020206f203d206120213d3d2030203f2032203a206720213d3d2030203f2037203a20303b0a202020202020202020202020202020202020627265616b3b0a202020202020202020202020202020206361736520323a0a2020202020202020202020202020202020206966202878203d3d3d203029207b0a2020202020202020202020202020202020202020692e62697462203d20773b0a2020202020202020202020202020202020202020692e6269746b203d20763b0a2020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a2020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a2020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a2020202020202020202020202020202020202020692e774d080272697465203d20413b0a202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020696620286b203d3d3d203029207b0a20202020202020202020202020202020202020206966202841203d3d20692e656e6420262620692e7265616420213d3d203029207b0a202020202020202020202020202020202020202020206b203d202841203d203029203c20692e72656164203f20692e72656164202d2041202d2031203a20692e656e64202d20413b0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020202020696620286b203d3d3d203029207b0a20202020202020202020202020202020202020202020692e7772697465203d20413b0a202020202020202020202020202020202020202020206e203d20692e696e666c6174655f666c75736828652c206e293b0a202020202020202020202020202020202020202020206b203d202841203d20692e777269746529203c20692e72656164203f20692e72656164202d2041202d2031203a20692e656e64202d20413b0a202020202020202020202020202020202020202020206966202841203d3d20692e656e6420262620692e7265616420213d3d203029207b0a202020204d080220202020202020202020202020202020202020206b203d202841203d203029203c20692e72656164203f20692e72656164202d2041202d2031203a20692e656e64202d20413b0a202020202020202020202020202020202020202020207d0a20202020202020202020202020202020202020202020696620286b203d3d3d203029207b0a202020202020202020202020202020202020202020202020692e62697462203d20773b0a202020202020202020202020202020202020202020202020692e6269746b203d20763b0a202020202020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a202020202020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a202020202020202020202020202020202020202020202020692e7772697465203d20413b0a20202020202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a202020202020202020202020202020202020202020207d0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020207d0a2020202020202020202020202020204d08022020206e203d20303b0a202020202020202020202020202020202020696620282863203d206129203e207829207b0a202020202020202020202020202020202020202063203d20783b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206966202863203e206b29207b0a202020202020202020202020202020202020202063203d206b3b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020692e77696e646f772e73657428652e726561645f62756628792c2063292c2041293b0a20202020202020202020202020202020202079202b3d20633b0a20202020202020202020202020202020202078202d3d20633b0a20202020202020202020202020202020202041202b3d20633b0a2020202020202020202020202020202020206b202d3d20633b0a202020202020202020202020202020202020696620282861202d3d20632920213d203029207b0a2020202020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206f203d206720213d3d2030203f2037203a20303b0a202020202020202020202020202020202020627265616b3b0a202020202020202020202020202020206361736520333a0a20202020202020202020202020202020204d0802207768696c65202876203c20313429207b0a20202020202020202020202020202020202020206966202878203d3d3d203029207b0a20202020202020202020202020202020202020202020692e62697462203d20773b0a20202020202020202020202020202020202020202020692e6269746b203d20763b0a20202020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a20202020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a20202020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a20202020202020202020202020202020202020202020692e7772697465203d20413b0a2020202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a20202020202020202020202020202020202020207d0a20202020202020202020202020202020202020206e203d20303b0a2020202020202020202020202020202020202020782d2d3b0a202020202020202020202020202020202020202077207c3d2028323535202620652e726561645f6279746528792b2b2929203c3c20763b0a202020202020202020202020202020202020202076202b3d20383b0a202020202020202020202020202020204d080220207d0a2020202020202020202020202020202020206c203d2063203d203136333833202620773b0a202020202020202020202020202020202020696620282833312026206329203e203239207c7c20282863203e3e203529202620333129203e20323929207b0a20202020202020202020202020202020202020206f203d20393b0a2020202020202020202020202020202020202020652e6d7367203d2027746f6f206d616e79206c656e677468206f722064697374616e63652073796d626f6c73273b0a20202020202020202020202020202020202020206e203d202d333b0a2020202020202020202020202020202020202020692e62697462203d20773b0a2020202020202020202020202020202020202020692e6269746b203d20763b0a2020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a2020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a2020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a2020202020202020202020202020202020202020692e7772697465203d20413b0a202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a2020202020202020202020202020204d08022020207d0a20202020202020202020202020202020202063203d20323538202b202833312026206329202b20282863203e3e2035292026203331293b0a202020202020202020202020202020202020696620282172207c7c20722e6c656e677468203c206329207b0a202020202020202020202020202020202020202072203d205b5d3b0a2020202020202020202020202020202020207d20656c7365207b0a2020202020202020202020202020202020202020666f72202853203d20303b2053203c20633b20532b2b29207b0a20202020202020202020202020202020202020202020725b535d203d20303b0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202077203e3e3e3d2031343b0a20202020202020202020202020202020202076202d3d2031343b0a20202020202020202020202020202020202075203d20303b0a2020202020202020202020202020202020206f203d20343b0a202020202020202020202020202020206361736520343a0a2020202020202020202020202020202020207768696c65202875203c2034202b20286c203e3e3e2031302929207b0a20202020202020202020202020202020202020207768696c65202876203c203329207b0a2020202020202020202020202020202020202020202069662028784d0802203d3d3d203029207b0a202020202020202020202020202020202020202020202020692e62697462203d20773b0a202020202020202020202020202020202020202020202020692e6269746b203d20763b0a202020202020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a202020202020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a202020202020202020202020202020202020202020202020692e7772697465203d20413b0a20202020202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a202020202020202020202020202020202020202020207d0a202020202020202020202020202020202020202020206e203d20303b0a20202020202020202020202020202020202020202020782d2d3b0a2020202020202020202020202020202020202020202077207c3d2028323535202620652e726561645f6279746528792b2b2929203c3c20763b0a2020202020202020202020202020202020202020202076202b3d20383b0a20202020202020202020202020202020202020207d0a202020202020202020202020204d080220202020202020725b645b752b2b5d5d203d2037202620773b0a202020202020202020202020202020202020202077203e3e3e3d20333b0a202020202020202020202020202020202020202076202d3d20333b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020207768696c65202875203c20313929207b0a2020202020202020202020202020202020202020725b645b752b2b5d5d203d20303b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020705b305d203d20373b0a202020202020202020202020202020202020696620282863203d20622e696e666c6174655f74726565735f6269747328722c20702c20682c206d2c2065292920213d203029207b0a202020202020202020202020202020202020202069662028286e203d206329203d3d202d3329207b0a2020202020202020202020202020202020202020202072203d206e756c6c3b0a202020202020202020202020202020202020202020206f203d20393b0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020202020692e62697462203d20773b0a2020202020202020202020202020202020202020692e6269746b203d20763b0a2020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a20204d0802202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a2020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a2020202020202020202020202020202020202020692e7772697465203d20413b0a202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202075203d20303b0a2020202020202020202020202020202020206f203d20353b0a202020202020202020202020202020206361736520353a0a2020202020202020202020202020202020207768696c652028212875203e3d20323538202b202833312026202863203d206c2929202b20282863203e3e2035292026203331292929207b0a202020202020202020202020202020202020202076617220443b0a202020202020202020202020202020202020202076617220423b0a2020202020202020202020202020202020202020666f72202863203d20705b305d3b2076203c20633b2029207b0a202020202020202020202020202020202020202020206966202878203d3d3d203029207b0a202020202020202020202020202020202020202020202020692e62697462203d20773b0a204d08022020202020202020202020202020202020202020202020692e6269746b203d20763b0a202020202020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a202020202020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a202020202020202020202020202020202020202020202020692e7772697465203d20413b0a20202020202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a202020202020202020202020202020202020202020207d0a202020202020202020202020202020202020202020206e203d20303b0a20202020202020202020202020202020202020202020782d2d3b0a2020202020202020202020202020202020202020202077207c3d2028323535202620652e726561645f6279746528792b2b2929203c3c20763b0a2020202020202020202020202020202020202020202076202b3d20383b0a20202020202020202020202020202020202020207d0a202020202020202020202020202020202020202063203d206d5b33202a2028685b305d202b202877202620745b635d2929202b20315d3b0a202020204d080220202020202020202020202020202020696620282842203d206d5b33202a2028685b305d202b202877202620745b635d2929202b20325d29203c20313629207b0a2020202020202020202020202020202020202020202077203e3e3e3d20633b0a2020202020202020202020202020202020202020202076202d3d20633b0a20202020202020202020202020202020202020202020725b752b2b5d203d20423b0a20202020202020202020202020202020202020207d20656c7365207b0a2020202020202020202020202020202020202020202053203d2042203d3d203138203f2037203a2042202d2031343b0a20202020202020202020202020202020202020202020666f72202844203d2042203d3d203138203f203131203a20333b2076203c2063202b20533b2029207b0a2020202020202020202020202020202020202020202020206966202878203d3d3d203029207b0a2020202020202020202020202020202020202020202020202020692e62697462203d20773b0a2020202020202020202020202020202020202020202020202020692e6269746b203d20763b0a2020202020202020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a2020202020202020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a4d08022020202020202020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a2020202020202020202020202020202020202020202020202020692e7772697465203d20413b0a202020202020202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a2020202020202020202020202020202020202020202020207d0a2020202020202020202020202020202020202020202020206e203d20303b0a202020202020202020202020202020202020202020202020782d2d3b0a20202020202020202020202020202020202020202020202077207c3d2028323535202620652e726561645f6279746528792b2b2929203c3c20763b0a20202020202020202020202020202020202020202020202076202b3d20383b0a202020202020202020202020202020202020202020207d0a2020202020202020202020202020202020202020202076202d3d20633b0a2020202020202020202020202020202020202020202044202b3d202877203e3e3e3d206329202620745b535d3b0a2020202020202020202020202020202020202020202077203e3e3e3d20533b0a2020202020202020202020202020202020202020202076202d3d20533b0a20202020202020202020202020202020202020202020696620280a20202020202020202020204d0802202020202020202020202020202853203d207529202b2044203e20323538202b202833312026202863203d206c2929202b20282863203e3e203529202620333129207c7c0a2020202020202020202020202020202020202020202020202842203d3d2031362026262053203c2031290a2020202020202020202020202020202020202020202029207b0a20202020202020202020202020202020202020202020202072203d206e756c6c3b0a2020202020202020202020202020202020202020202020206f203d20393b0a202020202020202020202020202020202020202020202020652e6d7367203d2027696e76616c696420626974206c656e67746820726570656174273b0a2020202020202020202020202020202020202020202020206e203d202d333b0a202020202020202020202020202020202020202020202020692e62697462203d20773b0a202020202020202020202020202020202020202020202020692e6269746b203d20763b0a202020202020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a202020202020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a20202020202020204d080220202020202020202020202020202020692e7772697465203d20413b0a20202020202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a202020202020202020202020202020202020202020207d0a2020202020202020202020202020202020202020202042203d2042203d3d203136203f20725b53202d20315d203a20303b0a20202020202020202020202020202020202020202020646f207b0a202020202020202020202020202020202020202020202020725b532b2b5d203d20423b0a202020202020202020202020202020202020202020207d207768696c6520282d2d4420213d2030293b0a2020202020202020202020202020202020202020202075203d20533b0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020685b305d203d202d313b0a202020202020202020202020202020202020766172204d203d205b5d3b0a2020202020202020202020202020202020207661722054203d205b5d3b0a2020202020202020202020202020202020207661722052203d205b5d3b0a2020202020202020202020202020202020207661722047203d205b5d3b0a2020202020202020202020202020202020204d5b305d203d20393b0a202020202020202020204d08022020202020202020545b305d203d20363b0a20202020202020202020202020202020202063203d206c3b0a202020202020202020202020202020202020696620280a20202020202020202020202020202020202020202863203d20622e696e666c6174655f74726565735f64796e616d6963280a20202020202020202020202020202020202020202020323537202b2028333120262063292c0a2020202020202020202020202020202020202020202031202b20282863203e3e2035292026203331292c0a20202020202020202020202020202020202020202020722c0a202020202020202020202020202020202020202020204d2c0a20202020202020202020202020202020202020202020542c0a20202020202020202020202020202020202020202020522c0a20202020202020202020202020202020202020202020472c0a202020202020202020202020202020202020202020206d2c0a20202020202020202020202020202020202020202020650a2020202020202020202020202020202020202020292920213d20300a20202020202020202020202020202020202029207b0a20202020202020202020202020202020202020206966202863203d3d202d3329207b0a2020202020202020202020202020202020202020202072203d206e756c6c3b0a202020202020202020202020202020202020202020206f203d20393b0a2020204d080220202020202020202020202020202020207d0a20202020202020202020202020202020202020206e203d20633b0a2020202020202020202020202020202020202020692e62697462203d20773b0a2020202020202020202020202020202020202020692e6269746b203d20763b0a2020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a2020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a2020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a2020202020202020202020202020202020202020692e7772697465203d20413b0a202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020662e696e6974284d5b305d2c20545b305d2c206d2c20525b305d2c206d2c20475b305d293b0a2020202020202020202020202020202020206f203d20363b0a202020202020202020202020202020206361736520363a0a202020202020202020202020202020202020692e62697462203d20773b0a202020202020202020202020202020202020692e6269746b203d20763b0a202020202020202020204d08022020202020202020652e617661696c5f696e203d20783b0a202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a202020202020202020202020202020202020692e7772697465203d20413b0a20202020202020202020202020202020202069662028286e203d20662e70726f6328692c20652c206e292920213d203129207b0a202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206e203d20303b0a202020202020202020202020202020202020662e667265652865293b0a20202020202020202020202020202020202079203d20652e6e6578745f696e5f696e6465783b0a20202020202020202020202020202020202078203d20652e617661696c5f696e3b0a20202020202020202020202020202020202077203d20692e626974623b0a20202020202020202020202020202020202076203d20692e6269746b3b0a2020202020202020202020202020202020206b203d202841203d20692e777269746529203c20692e72656164203f20692e72656164202d2041202d2031203a204d0802692e656e64202d20413b0a2020202020202020202020202020202020206966202867203d3d3d203029207b0a20202020202020202020202020202020202020206f203d20303b0a2020202020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206f203d20373b0a202020202020202020202020202020206361736520373a0a202020202020202020202020202020202020692e7772697465203d20413b0a2020202020202020202020202020202020206e203d20692e696e666c6174655f666c75736828652c206e293b0a2020202020202020202020202020202020206b203d202841203d20692e777269746529203c20692e72656164203f20692e72656164202d2041202d2031203a20692e656e64202d20413b0a20202020202020202020202020202020202069662028692e7265616420213d20692e777269746529207b0a2020202020202020202020202020202020202020692e62697462203d20773b0a2020202020202020202020202020202020202020692e6269746b203d20763b0a2020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a2020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a202020204d080220202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a2020202020202020202020202020202020202020692e7772697465203d20413b0a202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206f203d20383b0a202020202020202020202020202020206361736520383a0a2020202020202020202020202020202020206e203d20313b0a202020202020202020202020202020202020692e62697462203d20773b0a202020202020202020202020202020202020692e6269746b203d20763b0a202020202020202020202020202020202020652e617661696c5f696e203d20783b0a202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a202020202020202020202020202020202020692e7772697465203d20413b0a20202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a202020202020202020202020202020206361736520393a0a20202020202020202020202020202020204d0802206e203d202d333b0a202020202020202020202020202020202020692e62697462203d20773b0a202020202020202020202020202020202020692e6269746b203d20763b0a202020202020202020202020202020202020652e617661696c5f696e203d20783b0a202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a202020202020202020202020202020202020692e7772697465203d20413b0a20202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a2020202020202020202020202020202064656661756c743a0a2020202020202020202020202020202020206e203d202d323b0a202020202020202020202020202020202020692e62697462203d20773b0a202020202020202020202020202020202020692e6269746b203d20763b0a202020202020202020202020202020202020652e617661696c5f696e203d20783b0a202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a2020202020202020204d0802202020202020202020692e7772697465203d20413b0a20202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020207d3b0a20202020202020202020692e66726565203d2066756e6374696f6e20286529207b0a202020202020202020202020692e726573657428652c206e756c6c293b0a202020202020202020202020692e77696e646f77203d206e756c6c3b0a2020202020202020202020206d203d206e756c6c3b0a202020202020202020207d3b0a20202020202020202020692e7365745f64696374696f6e617279203d2066756e6374696f6e2028652c20742c206e29207b0a202020202020202020202020692e77696e646f772e73657428652e737562617272617928742c2074202b206e292c2030293b0a202020202020202020202020692e72656164203d20692e7772697465203d206e3b0a202020202020202020207d3b0a20202020202020202020692e73796e635f706f696e74203d2066756e6374696f6e202829207b0a202020202020202020202020696620286f203d3d203129207b0a202020202020202020202020202072657475726e20313b0a2020202020202020202020207d20656c7365207b0a202020202020202020202020202072657475726e204d0802303b0a2020202020202020202020207d0a202020202020202020207d3b0a20202020202020207d0a202020202020202066756e6374696f6e20682829207b0a2020202020202020202066756e6374696f6e2074286529207b0a202020202020202020202020696620286520262620652e69737461746529207b0a2020202020202020202020202020652e746f74616c5f696e203d20652e746f74616c5f6f7574203d20303b0a2020202020202020202020202020652e6d7367203d206e756c6c3b0a2020202020202020202020202020652e6973746174652e6d6f6465203d20373b0a2020202020202020202020202020652e6973746174652e626c6f636b732e726573657428652c206e756c6c293b0a202020202020202020202020202072657475726e20303b0a2020202020202020202020207d20656c7365207b0a202020202020202020202020202072657475726e202d323b0a2020202020202020202020207d0a202020202020202020207d0a202020202020202020207661722065203d20746869733b0a20202020202020202020652e6d6f6465203d20303b0a20202020202020202020652e6d6574686f64203d20303b0a20202020202020202020652e776173203d205b305d3b0a20202020202020202020652e6e656564203d20303b0a20202020202020202020652e6d61726b6572203d20303b0a20202020202020202020652e4d08027762697473203d20303b0a20202020202020202020652e696e666c617465456e64203d2066756e6374696f6e20287429207b0a20202020202020202020202069662028652e626c6f636b7329207b0a2020202020202020202020202020652e626c6f636b732e667265652874293b0a2020202020202020202020207d0a202020202020202020202020652e626c6f636b73203d206e756c6c3b0a20202020202020202020202072657475726e20303b0a202020202020202020207d3b0a20202020202020202020652e696e666c617465496e6974203d2066756e6374696f6e20286e2c207229207b0a2020202020202020202020206e2e6d7367203d206e756c6c3b0a202020202020202020202020652e626c6f636b73203d206e756c6c3b0a2020202020202020202020206966202872203c2038207c7c2072203e20313529207b0a2020202020202020202020202020652e696e666c617465456e64286e293b0a202020202020202020202020202072657475726e202d323b0a2020202020202020202020207d20656c7365207b0a2020202020202020202020202020652e7762697473203d20723b0a20202020202020202020202020206e2e6973746174652e626c6f636b73203d206e65772075286e2c2031203c3c2072293b0a202020202020202020202020202074286e293b0a202020202020202020202020202072657475726e20303b4d08020a2020202020202020202020207d0a202020202020202020207d3b0a20202020202020202020652e696e666c617465203d2066756e6374696f6e2028652c207429207b0a202020202020202020202020766172206e3b0a20202020202020202020202076617220723b0a202020202020202020202020696620282165207c7c2021652e697374617465207c7c2021652e6e6578745f696e29207b0a202020202020202020202020202072657475726e202d323b0a2020202020202020202020207d0a20202020202020202020202074203d2074203d3d2034203f202d35203a20303b0a202020202020202020202020666f7220286e203d202d353b203b2029207b0a20202020202020202020202020207377697463682028652e6973746174652e6d6f646529207b0a202020202020202020202020202020206361736520303a0a20202020202020202020202020202020202069662028652e617661696c5f696e203d3d3d203029207b0a202020202020202020202020202020202020202072657475726e206e3b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206e203d20743b0a202020202020202020202020202020202020652e617661696c5f696e2d2d3b0a202020202020202020202020202020202020652e746f74616c5f696e2b2b3b0a2020202020202020202020202020202020204d0802696620280a202020202020202020202020202020202020202028313520262028652e6973746174652e6d6574686f64203d20652e726561645f6279746528652e6e6578745f696e5f696e6465782b2b29292920213d0a2020202020202020202020202020202020202020380a20202020202020202020202020202020202029207b0a2020202020202020202020202020202020202020652e6973746174652e6d6f6465203d2031333b0a2020202020202020202020202020202020202020652e6d7367203d2027756e6b6e6f776e20636f6d7072657373696f6e206d6574686f64273b0a2020202020202020202020202020202020202020652e6973746174652e6d61726b6572203d20353b0a2020202020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206966202838202b2028652e6973746174652e6d6574686f64203e3e203429203e20652e6973746174652e776269747329207b0a2020202020202020202020202020202020202020652e6973746174652e6d6f6465203d2031333b0a2020202020202020202020202020202020202020652e6d7367203d2027696e76616c69642077696e646f772073697a65273b0a2020202020202020202020202020202020202020652e6973746174652e6d61726b6572203d20353b0a2020204d08022020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020652e6973746174652e6d6f6465203d20313b0a202020202020202020202020202020206361736520313a0a20202020202020202020202020202020202069662028652e617661696c5f696e203d3d3d203029207b0a202020202020202020202020202020202020202072657475726e206e3b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206e203d20743b0a202020202020202020202020202020202020652e617661696c5f696e2d2d3b0a202020202020202020202020202020202020652e746f74616c5f696e2b2b3b0a20202020202020202020202020202020202072203d20323535202620652e726561645f6279746528652e6e6578745f696e5f696e6465782b2b293b0a202020202020202020202020202020202020696620282828652e6973746174652e6d6574686f64203c3c203829202b207229202520333120213d203029207b0a2020202020202020202020202020202020202020652e6973746174652e6d6f6465203d2031333b0a2020202020202020202020202020202020202020652e6d7367203d2027696e636f72726563742068656164657220636865636b273b0a202020202020202020202020202020204d080220202020652e6973746174652e6d61726b6572203d20353b0a2020202020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020696620282833322026207229203d3d203029207b0a2020202020202020202020202020202020202020652e6973746174652e6d6f6465203d20373b0a2020202020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020652e6973746174652e6d6f6465203d20323b0a202020202020202020202020202020206361736520323a0a20202020202020202020202020202020202069662028652e617661696c5f696e203d3d3d203029207b0a202020202020202020202020202020202020202072657475726e206e3b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206e203d20743b0a202020202020202020202020202020202020652e617661696c5f696e2d2d3b0a202020202020202020202020202020202020652e746f74616c5f696e2b2b3b0a202020202020202020202020202020202020652e6973746174652e6e656564203d0a20202020202020202020202020202020202020202828323535202620652e726561645f6279746528652e6e6578745f4d0802696e5f696e6465782b2b2929203c3c20323429202620343237383139303038303b0a202020202020202020202020202020202020652e6973746174652e6d6f6465203d20333b0a202020202020202020202020202020206361736520333a0a20202020202020202020202020202020202069662028652e617661696c5f696e203d3d3d203029207b0a202020202020202020202020202020202020202072657475726e206e3b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206e203d20743b0a202020202020202020202020202020202020652e617661696c5f696e2d2d3b0a202020202020202020202020202020202020652e746f74616c5f696e2b2b3b0a202020202020202020202020202020202020652e6973746174652e6e656564202b3d0a20202020202020202020202020202020202020202828323535202620652e726561645f6279746528652e6e6578745f696e5f696e6465782b2b2929203c3c2031362920262031363731313638303b0a202020202020202020202020202020202020652e6973746174652e6d6f6465203d20343b0a202020202020202020202020202020206361736520343a0a20202020202020202020202020202020202069662028652e617661696c5f696e203d3d3d203029207b0a202020202020202020202020202020202020202072657475726e204d08026e3b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206e203d20743b0a202020202020202020202020202020202020652e617661696c5f696e2d2d3b0a202020202020202020202020202020202020652e746f74616c5f696e2b2b3b0a202020202020202020202020202020202020652e6973746174652e6e656564202b3d0a20202020202020202020202020202020202020202828323535202620652e726561645f6279746528652e6e6578745f696e5f696e6465782b2b2929203c3c20382920262036353238303b0a202020202020202020202020202020202020652e6973746174652e6d6f6465203d20353b0a202020202020202020202020202020206361736520353a0a20202020202020202020202020202020202069662028652e617661696c5f696e203d3d3d203029207b0a202020202020202020202020202020202020202072657475726e206e3b0a2020202020202020202020202020202020207d20656c7365207b0a20202020202020202020202020202020202020206e203d20743b0a2020202020202020202020202020202020202020652e617661696c5f696e2d2d3b0a2020202020202020202020202020202020202020652e746f74616c5f696e2b2b3b0a2020202020202020202020202020202020202020652e6973746174652e6e656564202b3d203235352026204d0802652e726561645f6279746528652e6e6578745f696e5f696e6465782b2b293b0a2020202020202020202020202020202020202020652e6973746174652e6d6f6465203d20363b0a202020202020202020202020202020202020202072657475726e20323b0a2020202020202020202020202020202020207d0a202020202020202020202020202020206361736520363a0a202020202020202020202020202020202020652e6973746174652e6d6f6465203d2031333b0a202020202020202020202020202020202020652e6d7367203d20276e6565642064696374696f6e617279273b0a202020202020202020202020202020202020652e6973746174652e6d61726b6572203d20303b0a20202020202020202020202020202020202072657475726e202d323b0a202020202020202020202020202020206361736520373a0a20202020202020202020202020202020202069662028286e203d20652e6973746174652e626c6f636b732e70726f6328652c206e2929203d3d202d3329207b0a2020202020202020202020202020202020202020652e6973746174652e6d6f6465203d2031333b0a2020202020202020202020202020202020202020652e6973746174652e6d61726b6572203d20303b0a2020202020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202020207d0a20202020202020204d080220202020202020202020696620286e203d3d203029207b0a20202020202020202020202020202020202020206e203d20743b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020696620286e20213d203129207b0a202020202020202020202020202020202020202072657475726e206e3b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206e203d20743b0a202020202020202020202020202020202020652e6973746174652e626c6f636b732e726573657428652c20652e6973746174652e776173293b0a202020202020202020202020202020202020652e6973746174652e6d6f6465203d2031323b0a20202020202020202020202020202020636173652031323a0a20202020202020202020202020202020202072657475726e20313b0a20202020202020202020202020202020636173652031333a0a20202020202020202020202020202020202072657475726e202d333b0a2020202020202020202020202020202064656661756c743a0a20202020202020202020202020202020202072657475726e202d323b0a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020207d3b0a20202020202020202020652e696e666c61746553657444696374696f6e617279203d2066756e6374696f4d08026e2028652c20742c206e29207b0a2020202020202020202020207661722072203d20303b0a2020202020202020202020207661722069203d206e3b0a202020202020202020202020696620286520262620652e69737461746520262620652e6973746174652e6d6f6465203d3d203629207b0a20202020202020202020202020206966202869203e3d2031203c3c20652e6973746174652e776269747329207b0a2020202020202020202020202020202072203d206e202d202869203d202831203c3c20652e6973746174652e776269747329202d2031293b0a20202020202020202020202020207d0a2020202020202020202020202020652e6973746174652e626c6f636b732e7365745f64696374696f6e61727928742c20722c2069293b0a2020202020202020202020202020652e6973746174652e6d6f6465203d20373b0a202020202020202020202020202072657475726e20303b0a2020202020202020202020207d20656c7365207b0a202020202020202020202020202072657475726e202d323b0a2020202020202020202020207d0a202020202020202020207d3b0a20202020202020202020652e696e666c61746553796e63203d2066756e6374696f6e20286529207b0a202020202020202020202020766172206e3b0a202020202020202020202020766172206f3b0a20202020202020202020202076617220613b0a2020204d0802202020202020202020696620282165207c7c2021652e69737461746529207b0a202020202020202020202020202072657475726e202d323b0a2020202020202020202020207d0a20202020202020202020202069662028652e6973746174652e6d6f646520213d20313329207b0a2020202020202020202020202020652e6973746174652e6d6f6465203d2031333b0a2020202020202020202020202020652e6973746174652e6d61726b6572203d20303b0a2020202020202020202020207d0a20202020202020202020202069662028286e203d20652e617661696c5f696e29203d3d3d203029207b0a202020202020202020202020202072657475726e202d353b0a2020202020202020202020207d0a2020202020202020202020207661722072203d20652e6e6578745f696e5f696e6465783b0a202020202020202020202020666f7220287661722069203d20652e6973746174652e6d61726b65723b206e20213d3d20302026262069203c20343b2029207b0a202020202020202020202020202069662028652e726561645f62797465287229203d3d20705b695d29207b0a20202020202020202020202020202020692b2b3b0a20202020202020202020202020207d20656c7365207b0a2020202020202020202020202020202069203d20652e726561645f6279746528722920213d3d2030203f2030203a2034202d20693b0a2020204d080220202020202020202020207d0a2020202020202020202020202020722b2b3b0a20202020202020202020202020206e2d2d3b0a2020202020202020202020207d0a202020202020202020202020652e746f74616c5f696e202b3d2072202d20652e6e6578745f696e5f696e6465783b0a202020202020202020202020652e6e6578745f696e5f696e646578203d20723b0a202020202020202020202020652e617661696c5f696e203d206e3b0a202020202020202020202020652e6973746174652e6d61726b6572203d20693b0a2020202020202020202020206966202869203d3d203429207b0a20202020202020202020202020206f203d20652e746f74616c5f696e3b0a202020202020202020202020202061203d20652e746f74616c5f6f75743b0a2020202020202020202020202020742865293b0a2020202020202020202020202020652e746f74616c5f696e203d206f3b0a2020202020202020202020202020652e746f74616c5f6f7574203d20613b0a2020202020202020202020202020652e6973746174652e6d6f6465203d20373b0a202020202020202020202020202072657475726e20303b0a2020202020202020202020207d20656c7365207b0a202020202020202020202020202072657475726e202d333b0a2020202020202020202020207d0a202020202020202020207d3b0a20202020202020202020652e696e666c4d080261746553796e63506f696e74203d2066756e6374696f6e20286529207b0a202020202020202020202020696620286520262620652e69737461746520262620652e6973746174652e626c6f636b7329207b0a202020202020202020202020202072657475726e20652e6973746174652e626c6f636b732e73796e635f706f696e7428293b0a2020202020202020202020207d20656c7365207b0a202020202020202020202020202072657475726e202d323b0a2020202020202020202020207d0a202020202020202020207d3b0a20202020202020207d0a202020202020202066756e6374696f6e20662829207b7d0a20202020202020207661722074203d205b0a20202020202020202020302c20312c20332c20372c2031352c2033312c2036332c203132372c203235352c203531312c20313032332c20323034372c20343039352c20383139312c2031363338332c0a2020202020202020202033323736372c2036353533352c0a20202020202020205d3b0a2020202020202020766172206e203d205b0a2020202020202020202039362c20372c203235362c20302c20382c2038302c20302c20382c2031362c2038342c20382c203131352c2038322c20372c2033312c20302c20382c203131322c20302c0a20202020202020202020382c2034382c20302c20392c203139322c2038302c20372c2031302c20302c20382c2039362c20304d08022c20382c2033322c20302c20392c203136302c20302c20382c20302c0a20202020202020202020302c20382c203132382c20302c20382c2036342c20302c20392c203232342c2038302c20372c20362c20302c20382c2038382c20302c20382c2032342c20302c20392c0a202020202020202020203134342c2038332c20372c2035392c20302c20382c203132302c20302c20382c2035362c20302c20392c203230382c2038312c20372c2031372c20302c20382c203130342c0a20202020202020202020302c20382c2034302c20302c20392c203137362c20302c20382c20382c20302c20382c203133362c20302c20382c2037322c20302c20392c203234302c2038302c20372c0a20202020202020202020342c20302c20382c2038342c20302c20382c2032302c2038352c20382c203232372c2038332c20372c2034332c20302c20382c203131362c20302c20382c2035322c20302c0a20202020202020202020392c203230302c2038312c20372c2031332c20302c20382c203130302c20302c20382c2033362c20302c20392c203136382c20302c20382c20342c20302c20382c203133322c0a20202020202020202020302c20382c2036382c20302c20392c203233322c2038302c20372c20382c20302c20382c2039322c20302c20382c2032382c20302c20392c203135322c2038342c20372c0a2020202020202020202038332c204d0802302c20382c203132342c20302c20382c2036302c20302c20392c203231362c2038322c20372c2032332c20302c20382c203130382c20302c20382c2034342c20302c0a20202020202020202020392c203138342c20302c20382c2031322c20302c20382c203134302c20302c20382c2037362c20302c20392c203234382c2038302c20372c20332c20302c20382c2038322c0a20202020202020202020302c20382c2031382c2038352c20382c203136332c2038332c20372c2033352c20302c20382c203131342c20302c20382c2035302c20302c20392c203139362c2038312c0a20202020202020202020372c2031312c20302c20382c2039382c20302c20382c2033342c20302c20392c203136342c20302c20382c20322c20302c20382c203133302c20302c20382c2036362c20302c0a20202020202020202020392c203232382c2038302c20372c20372c20302c20382c2039302c20302c20382c2032362c20302c20392c203134382c2038342c20372c2036372c20302c20382c203132322c0a20202020202020202020302c20382c2035382c20302c20392c203231322c2038322c20372c2031392c20302c20382c203130362c20302c20382c2034322c20302c20392c203138302c20302c20382c0a2020202020202020202031302c20302c20382c203133382c20302c20382c2037342c20302c20392c203234342c2038302c20372c4d080220352c20302c20382c2038362c20302c20382c2032322c203139322c0a20202020202020202020382c20302c2038332c20372c2035312c20302c20382c203131382c20302c20382c2035342c20302c20392c203230342c2038312c20372c2031352c20302c20382c203130322c0a20202020202020202020302c20382c2033382c20302c20392c203137322c20302c20382c20362c20302c20382c203133342c20302c20382c2037302c20302c20392c203233362c2038302c20372c0a20202020202020202020392c20302c20382c2039342c20302c20382c2033302c20302c20392c203135362c2038342c20372c2039392c20302c20382c203132362c20302c20382c2036322c20302c0a20202020202020202020392c203232302c2038322c20372c2032372c20302c20382c203131302c20302c20382c2034362c20302c20392c203138382c20302c20382c2031342c20302c20382c0a202020202020202020203134322c20302c20382c2037382c20302c20392c203235322c2039362c20372c203235362c20302c20382c2038312c20302c20382c2031372c2038352c20382c203133312c0a2020202020202020202038322c20372c2033312c20302c20382c203131332c20302c20382c2034392c20302c20392c203139342c2038302c20372c2031302c20302c20382c2039372c20302c20382c0a2020202020202020202033332c20304d08022c20392c203136322c20302c20382c20312c20302c20382c203132392c20302c20382c2036352c20302c20392c203232362c2038302c20372c20362c20302c0a20202020202020202020382c2038392c20302c20382c2032352c20302c20392c203134362c2038332c20372c2035392c20302c20382c203132312c20302c20382c2035372c20302c20392c203231302c0a2020202020202020202038312c20372c2031372c20302c20382c203130352c20302c20382c2034312c20302c20392c203137382c20302c20382c20392c20302c20382c203133372c20302c20382c0a2020202020202020202037332c20302c20392c203234322c2038302c20372c20342c20302c20382c2038352c20302c20382c2032312c2038302c20382c203235382c2038332c20372c2034332c20302c0a20202020202020202020382c203131372c20302c20382c2035332c20302c20392c203230322c2038312c20372c2031332c20302c20382c203130312c20302c20382c2033372c20302c20392c0a202020202020202020203137302c20302c20382c20352c20302c20382c203133332c20302c20382c2036392c20302c20392c203233342c2038302c20372c20382c20302c20382c2039332c20302c0a20202020202020202020382c2032392c20302c20392c203135342c2038342c20372c2038332c20302c20382c203132352c20302c20382c2036312c4d080220302c20392c203231382c2038322c20372c0a2020202020202020202032332c20302c20382c203130392c20302c20382c2034352c20302c20392c203138362c20302c20382c2031332c20302c20382c203134312c20302c20382c2037372c20302c0a20202020202020202020392c203235302c2038302c20372c20332c20302c20382c2038332c20302c20382c2031392c2038352c20382c203139352c2038332c20372c2033352c20302c20382c0a202020202020202020203131352c20302c20382c2035312c20302c20392c203139382c2038312c20372c2031312c20302c20382c2039392c20302c20382c2033352c20302c20392c203136362c20302c0a20202020202020202020382c20332c20302c20382c203133312c20302c20382c2036372c20302c20392c203233302c2038302c20372c20372c20302c20382c2039312c20302c20382c2032372c20302c0a20202020202020202020392c203135302c2038342c20372c2036372c20302c20382c203132332c20302c20382c2035392c20302c20392c203231342c2038322c20372c2031392c20302c20382c0a202020202020202020203130372c20302c20382c2034332c20302c20392c203138322c20302c20382c2031312c20302c20382c203133392c20302c20382c2037352c20302c20392c203234362c0a2020202020202020202038302c20372c20352c20302c20382c204d080238372c20302c20382c2032332c203139322c20382c20302c2038332c20372c2035312c20302c20382c203131392c20302c20382c0a2020202020202020202035352c20302c20392c203230362c2038312c20372c2031352c20302c20382c203130332c20302c20382c2033392c20302c20392c203137342c20302c20382c20372c20302c0a20202020202020202020382c203133352c20302c20382c2037312c20302c20392c203233382c2038302c20372c20392c20302c20382c2039352c20302c20382c2033312c20302c20392c203135382c0a2020202020202020202038342c20372c2039392c20302c20382c203132372c20302c20382c2036332c20302c20392c203232322c2038322c20372c2032372c20302c20382c203131312c20302c20382c0a2020202020202020202034372c20302c20392c203139302c20302c20382c2031352c20302c20382c203134332c20302c20382c2037392c20302c20392c203235342c2039362c20372c203235362c0a20202020202020202020302c20382c2038302c20302c20382c2031362c2038342c20382c203131352c2038322c20372c2033312c20302c20382c203131322c20302c20382c2034382c20302c20392c0a202020202020202020203139332c2038302c20372c2031302c20302c20382c2039362c20302c20382c2033322c20302c20392c203136312c20302c20382c20302c20304d08022c20382c203132382c20302c0a20202020202020202020382c2036342c20302c20392c203232352c2038302c20372c20362c20302c20382c2038382c20302c20382c2032342c20302c20392c203134352c2038332c20372c2035392c0a20202020202020202020302c20382c203132302c20302c20382c2035362c20302c20392c203230392c2038312c20372c2031372c20302c20382c203130342c20302c20382c2034302c20302c20392c0a202020202020202020203137372c20302c20382c20382c20302c20382c203133362c20302c20382c2037322c20302c20392c203234312c2038302c20372c20342c20302c20382c2038342c20302c0a20202020202020202020382c2032302c2038352c20382c203232372c2038332c20372c2034332c20302c20382c203131362c20302c20382c2035322c20302c20392c203230312c2038312c20372c0a2020202020202020202031332c20302c20382c203130302c20302c20382c2033362c20302c20392c203136392c20302c20382c20342c20302c20382c203133322c20302c20382c2036382c20302c0a20202020202020202020392c203233332c2038302c20372c20382c20302c20382c2039322c20302c20382c2032382c20302c20392c203135332c2038342c20372c2038332c20302c20382c203132342c0a20202020202020202020302c20382c2036302c20302c20392c203231374d08022c2038322c20372c2032332c20302c20382c203130382c20302c20382c2034342c20302c20392c203138352c20302c20382c0a2020202020202020202031322c20302c20382c203134302c20302c20382c2037362c20302c20392c203234392c2038302c20372c20332c20302c20382c2038322c20302c20382c2031382c2038352c0a20202020202020202020382c203136332c2038332c20372c2033352c20302c20382c203131342c20302c20382c2035302c20302c20392c203139372c2038312c20372c2031312c20302c20382c0a2020202020202020202039382c20302c20382c2033342c20302c20392c203136352c20302c20382c20322c20302c20382c203133302c20302c20382c2036362c20302c20392c203232392c2038302c0a20202020202020202020372c20372c20302c20382c2039302c20302c20382c2032362c20302c20392c203134392c2038342c20372c2036372c20302c20382c203132322c20302c20382c2035382c0a20202020202020202020302c20392c203231332c2038322c20372c2031392c20302c20382c203130362c20302c20382c2034322c20302c20392c203138312c20302c20382c2031302c20302c20382c0a202020202020202020203133382c20302c20382c2037342c20302c20392c203234352c2038302c20372c20352c20302c20382c2038362c20302c20382c2032322c203139322c20384d08022c20302c2038332c0a20202020202020202020372c2035312c20302c20382c203131382c20302c20382c2035342c20302c20392c203230352c2038312c20372c2031352c20302c20382c203130322c20302c20382c2033382c0a20202020202020202020302c20392c203137332c20302c20382c20362c20302c20382c203133342c20302c20382c2037302c20302c20392c203233372c2038302c20372c20392c20302c20382c0a2020202020202020202039342c20302c20382c2033302c20302c20392c203135372c2038342c20372c2039392c20302c20382c203132362c20302c20382c2036322c20302c20392c203232312c0a2020202020202020202038322c20372c2032372c20302c20382c203131302c20302c20382c2034362c20302c20392c203138392c20302c20382c2031342c20302c20382c203134322c20302c20382c0a2020202020202020202037382c20302c20392c203235332c2039362c20372c203235362c20302c20382c2038312c20302c20382c2031372c2038352c20382c203133312c2038322c20372c2033312c0a20202020202020202020302c20382c203131332c20302c20382c2034392c20302c20392c203139352c2038302c20372c2031302c20302c20382c2039372c20302c20382c2033332c20302c20392c0a202020202020202020203136332c20302c20382c20312c20302c20382c203132392c204d0802302c20382c2036352c20302c20392c203232372c2038302c20372c20362c20302c20382c2038392c20302c0a20202020202020202020382c2032352c20302c20392c203134372c2038332c20372c2035392c20302c20382c203132312c20302c20382c2035372c20302c20392c203231312c2038312c20372c0a2020202020202020202031372c20302c20382c203130352c20302c20382c2034312c20302c20392c203137392c20302c20382c20392c20302c20382c203133372c20302c20382c2037332c20302c0a20202020202020202020392c203234332c2038302c20372c20342c20302c20382c2038352c20302c20382c2032312c2038302c20382c203235382c2038332c20372c2034332c20302c20382c0a202020202020202020203131372c20302c20382c2035332c20302c20392c203230332c2038312c20372c2031332c20302c20382c203130312c20302c20382c2033372c20302c20392c203137312c0a20202020202020202020302c20382c20352c20302c20382c203133332c20302c20382c2036392c20302c20392c203233352c2038302c20372c20382c20302c20382c2039332c20302c20382c2032392c0a20202020202020202020302c20392c203135352c2038342c20372c2038332c20302c20382c203132352c20302c20382c2036312c20302c20392c203231392c2038322c20372c2032332c20302c20382c0a204d08022020202020202020203130392c20302c20382c2034352c20302c20392c203138372c20302c20382c2031332c20302c20382c203134312c20302c20382c2037372c20302c20392c203235312c0a2020202020202020202038302c20372c20332c20302c20382c2038332c20302c20382c2031392c2038352c20382c203139352c2038332c20372c2033352c20302c20382c203131352c20302c20382c0a2020202020202020202035312c20302c20392c203139392c2038312c20372c2031312c20302c20382c2039392c20302c20382c2033352c20302c20392c203136372c20302c20382c20332c20302c0a20202020202020202020382c203133312c20302c20382c2036372c20302c20392c203233312c2038302c20372c20372c20302c20382c2039312c20302c20382c2032372c20302c20392c203135312c0a2020202020202020202038342c20372c2036372c20302c20382c203132332c20302c20382c2035392c20302c20392c203231352c2038322c20372c2031392c20302c20382c203130372c20302c20382c0a2020202020202020202034332c20302c20392c203138332c20302c20382c2031312c20302c20382c203133392c20302c20382c2037352c20302c20392c203234372c2038302c20372c20352c20302c0a20202020202020202020382c2038372c20302c20382c2032332c203139322c20382c20302c2038332c20374d08022c2035312c20302c20382c203131392c20302c20382c2035352c20302c20392c203230372c0a2020202020202020202038312c20372c2031352c20302c20382c203130332c20302c20382c2033392c20302c20392c203137352c20302c20382c20372c20302c20382c203133352c20302c20382c0a2020202020202020202037312c20302c20392c203233392c2038302c20372c20392c20302c20382c2039352c20302c20382c2033312c20302c20392c203135392c2038342c20372c2039392c20302c0a20202020202020202020382c203132372c20302c20382c2036332c20302c20392c203232332c2038322c20372c2032372c20302c20382c203131312c20302c20382c2034372c20302c20392c0a202020202020202020203139312c20302c20382c2031352c20302c20382c203134332c20302c20382c2037392c20302c20392c203235352c0a20202020202020205d3b0a20202020202020207661722072203d205b0a2020202020202020202038302c20352c20312c2038372c20352c203235372c2038332c20352c2031372c2039312c20352c20343039372c2038312c20352c20352c2038392c20352c20313032352c0a2020202020202020202038352c20352c2036352c2039332c20352c2031363338352c2038302c20352c20332c2038382c20352c203531332c2038342c20352c2033332c2039322c20352c20383139332c0a4d08022020202020202020202038322c20352c20392c2039302c20352c20323034392c2038362c20352c203132392c203139322c20352c2032343537372c2038302c20352c20322c2038372c20352c0a202020202020202020203338352c2038332c20352c2032352c2039312c20352c20363134352c2038312c20352c20372c2038392c20352c20313533372c2038352c20352c2039372c2039332c20352c0a2020202020202020202032343537372c2038302c20352c20342c2038382c20352c203736392c2038342c20352c2034392c2039322c20352c2031323238392c2038322c20352c2031332c2039302c0a20202020202020202020352c20333037332c2038362c20352c203139332c203139322c20352c2032343537372c0a20202020202020205d3b0a20202020202020207661722069203d205b0a20202020202020202020332c20342c20352c20362c20372c20382c20392c2031302c2031312c2031332c2031352c2031372c2031392c2032332c2032372c2033312c2033352c2034332c2035312c0a2020202020202020202035392c2036372c2038332c2039392c203131352c203133312c203136332c203139352c203232372c203235382c20302c20302c0a20202020202020205d3b0a2020202020202020766172206f203d205b0a20202020202020202020302c20302c20302c20302c20302c20302c20302c20302c20312c20312c4d080220312c20312c20322c20322c20322c20322c20332c20332c20332c20332c20342c20342c20342c0a20202020202020202020342c20352c20352c20352c20352c20302c203131322c203131322c0a20202020202020205d3b0a20202020202020207661722061203d205b0a20202020202020202020312c20322c20332c20342c20352c20372c20392c2031332c2031372c2032352c2033332c2034392c2036352c2039372c203132392c203139332c203235372c203338352c0a202020202020202020203531332c203736392c20313032352c20313533372c20323034392c20333037332c20343039372c20363134352c20383139332c2031323238392c2031363338352c0a2020202020202020202032343537372c0a20202020202020205d3b0a2020202020202020766172206c203d205b0a20202020202020202020302c20302c20302c20302c20312c20312c20322c20322c20332c20332c20342c20342c20352c20352c20362c20362c20372c20372c20382c20382c20392c20392c2031302c0a2020202020202020202031302c2031312c2031312c2031322c2031322c2031332c2031332c0a20202020202020205d3b0a2020202020202020732e696e666c6174655f74726565735f6669786564203d2066756e6374696f6e2028652c20742c20692c206f29207b0a20202020202020202020655b305d203d20393b0a202020202020204d0802202020745b305d203d20353b0a20202020202020202020695b305d203d206e3b0a202020202020202020206f5b305d203d20723b0a2020202020202020202072657475726e20303b0a20202020202020207d3b0a20202020202020207661722064203d205b0a2020202020202020202031362c2031372c2031382c20302c20382c20372c20392c20362c2031302c20352c2031312c20342c2031322c20332c2031332c20322c2031342c20312c2031352c0a20202020202020205d3b0a20202020202020207661722070203d205b302c20302c203235352c203235355d3b0a2020202020202020662e70726f746f74797065203d207b0a20202020202020202020696e666c617465496e69743a2066756e6374696f6e20286529207b0a202020202020202020202020746869732e697374617465203d206e6577206828293b0a20202020202020202020202069662028216529207b0a202020202020202020202020202065203d2031353b0a2020202020202020202020207d0a20202020202020202020202072657475726e20746869732e6973746174652e696e666c617465496e697428746869732c2065293b0a202020202020202020207d2c0a20202020202020202020696e666c6174653a2066756e6374696f6e20286529207b0a20202020202020202020202069662028746869732e69737461746529207b0a20202020202020202020204d080220202072657475726e20746869732e6973746174652e696e666c61746528746869732c2065293b0a2020202020202020202020207d20656c7365207b0a202020202020202020202020202072657475726e202d323b0a2020202020202020202020207d0a202020202020202020207d2c0a20202020202020202020696e666c617465456e643a2066756e6374696f6e202829207b0a2020202020202020202020206966202821746869732e69737461746529207b0a202020202020202020202020202072657475726e202d323b0a2020202020202020202020207d0a2020202020202020202020207661722065203d20746869732e6973746174652e696e666c617465456e642874686973293b0a202020202020202020202020746869732e697374617465203d206e756c6c3b0a20202020202020202020202072657475726e20653b0a202020202020202020207d2c0a20202020202020202020696e666c61746553796e633a2066756e6374696f6e202829207b0a20202020202020202020202069662028746869732e69737461746529207b0a202020202020202020202020202072657475726e20746869732e6973746174652e696e666c61746553796e632874686973293b0a2020202020202020202020207d20656c7365207b0a202020202020202020202020202072657475726e202d323b0a2020202020202020202020207d0a2020204d0802202020202020207d2c0a20202020202020202020696e666c61746553657444696374696f6e6172793a2066756e6374696f6e2028652c207429207b0a20202020202020202020202069662028746869732e69737461746529207b0a202020202020202020202020202072657475726e20746869732e6973746174652e696e666c61746553657444696374696f6e61727928746869732c20652c2074293b0a2020202020202020202020207d20656c7365207b0a202020202020202020202020202072657475726e202d323b0a2020202020202020202020207d0a202020202020202020207d2c0a20202020202020202020726561645f627974653a2066756e6374696f6e20286529207b0a20202020202020202020202072657475726e20746869732e6e6578745f696e2e737562617272617928652c2065202b2031295b305d3b0a202020202020202020207d2c0a20202020202020202020726561645f6275663a2066756e6374696f6e2028652c207429207b0a20202020202020202020202072657475726e20746869732e6e6578745f696e2e737562617272617928652c2065202b2074293b0a202020202020202020207d2c0a20202020202020207d3b0a20202020202020207661722067203d20652e7a6970207c7c20653b0a2020202020202020672e496e666c61746572203d20672e5f6a7a6c69625f496e666c61746572203d2066754d08026e6374696f6e202829207b0a202020202020202020207661722065203d206e6577206628293b0a202020202020202020207661722074203d206e65772055696e7438417272617928353132293b0a20202020202020202020766172206e203d2066616c73653b0a20202020202020202020652e696e666c617465496e697428293b0a20202020202020202020652e6e6578745f6f7574203d20743b0a20202020202020202020746869732e617070656e64203d2066756e6374696f6e2028722c206929207b0a202020202020202020202020766172206f3b0a20202020202020202020202076617220613b0a202020202020202020202020766172206c203d205b5d3b0a2020202020202020202020207661722073203d20303b0a2020202020202020202020207661722063203d20303b0a2020202020202020202020207661722064203d20303b0a20202020202020202020202069662028722e6c656e67746820213d3d203029207b0a2020202020202020202020202020652e6e6578745f696e5f696e646578203d20303b0a2020202020202020202020202020652e6e6578745f696e203d20723b0a2020202020202020202020202020652e617661696c5f696e203d20722e6c656e6774683b0a2020202020202020202020202020646f207b0a20202020202020202020202020202020652e6e6578745f6f75745f696e646578203d20303b4d08020a20202020202020202020202020202020652e617661696c5f6f7574203d203531323b0a2020202020202020202020202020202069662028652e617661696c5f696e203d3d3d203020262620216e29207b0a202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20303b0a2020202020202020202020202020202020206e203d20747275653b0a202020202020202020202020202020207d0a202020202020202020202020202020206f203d20652e696e666c6174652830293b0a20202020202020202020202020202020696620286e202626206f203d3d3d202d3529207b0a20202020202020202020202020202020202069662028652e617661696c5f696e20213d3d203029207b0a20202020202020202020202020202020202020207468726f77206e6577204572726f722827696e666c6174696e673a2062616420696e70757427293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020207d20656c736520696620286f20213d3d2030202626206f20213d3d203129207b0a2020202020202020202020202020202020207468726f77206e6577204572726f722827696e666c6174696e673a2027202b20652e6d7367293b0a202020202020202020202020202020207d0a2020202020202020202020202020202069662028286e207c7c206f203d3d3d2031294d080220262620652e617661696c5f696e203d3d3d20722e6c656e67746829207b0a2020202020202020202020202020202020207468726f77206e6577204572726f722827696e666c6174696e673a2062616420696e70757427293b0a202020202020202020202020202020207d0a2020202020202020202020202020202069662028652e6e6578745f6f75745f696e64657829207b0a20202020202020202020202020202020202069662028652e6e6578745f6f75745f696e646578203d3d3d2035313229207b0a20202020202020202020202020202020202020206c2e70757368286e65772055696e74384172726179287429293b0a2020202020202020202020202020202020207d20656c7365207b0a20202020202020202020202020202020202020206c2e70757368286e65772055696e7438417272617928742e737562617272617928302c20652e6e6578745f6f75745f696e6465782929293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020207d0a2020202020202020202020202020202064202b3d20652e6e6578745f6f75745f696e6465783b0a20202020202020202020202020202020696620286920262620652e6e6578745f696e5f696e646578203e203020262620652e6e6578745f696e5f696e64657820213d207329207b0a2020202020202020202020202020202020206928652e4d08026e6578745f696e5f696e646578293b0a20202020202020202020202020202020202073203d20652e6e6578745f696e5f696e6465783b0a202020202020202020202020202020207d0a20202020202020202020202020207d207768696c652028652e617661696c5f696e203e2030207c7c20652e617661696c5f6f7574203d3d3d2030293b0a202020202020202020202020202061203d206e65772055696e743841727261792864293b0a20202020202020202020202020206c2e666f72456163682866756e6374696f6e20286529207b0a20202020202020202020202020202020612e73657428652c2063293b0a2020202020202020202020202020202063202b3d20652e6c656e6774683b0a20202020202020202020202020207d293b0a202020202020202020202020202072657475726e20613b0a2020202020202020202020207d0a202020202020202020207d3b0a20202020202020202020746869732e666c757368203d2066756e6374696f6e202829207b0a202020202020202020202020652e696e666c617465456e6428293b0a202020202020202020207d3b0a20202020202020207d3b0a2020202020207d29286f293b0a2020202020207661722061203d206f2e7a69703b0a202020202020766172206c203d207b7d3b0a2020202020207661722073203d206e756c6c3b0a202020202020632e70726f746f74797065203d204d08027b0a2020202020202020676574546f7069633a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20746869732e746f7069633b0a20202020202020207d2c0a20202020202020206f6e4576656e743a2066756e6374696f6e20286529207b7d2c0a2020202020207d3b0a2020202020207661722070203d206e756c6c3b0a202020202020612e757365576562576f726b657273203d2066616c73653b0a20202020202064280a20202020202020206e65772063282773697465496e6974272c2066756e6374696f6e20286529207b0a2020202020202020202070203d20652e6572726f7248616e646c65723b0a20202020202020207d290a202020202020293b0a20202020202069662028214f626a6563742e63726561746529207b0a20202020202020204f626a6563742e637265617465203d2066756e6374696f6e20286529207b0a2020202020202020202066756e6374696f6e20742829207b7d0a20202020202020202020742e70726f746f74797065203d20653b0a2020202020202020202072657475726e206e6577207428293b0a20202020202020207d3b0a2020202020207d0a202020202020696620280a2020202020202020276f6e746f75636873746172742720696e2077696e646f77207c7c0a20202020202020206e6176696761746f722e6d6178546f756368506f696e7473203e2030207c7c0a4d080220202020202020206e6176696761746f722e6d734d6178546f756368506f696e7473203e20300a20202020202029207b0a20202020202020202f616e64726f69647c626c61636b62657272797c69656d6f62696c657c697061647c6970686f6e657c69706f647c6f70657261206d696e697c7765626f732f692e74657374280a202020202020202020206e6176696761746f722e757365724167656e740a2020202020202020293b0a2020202020207d0a202020202020696620282f697061647c6970686f6e657c69706f642f692e74657374286e6176696761746f722e757365724167656e742929207b0a202020202020202077696e646f772e4d5353747265616d3b0a2020202020207d0a2020202020206966202821537472696e672e70726f746f747970652e656e64735769746829207b0a2020202020202020537472696e672e70726f746f747970652e656e647357697468203d2066756e6374696f6e2028652c207429207b0a202020202020202020206966202874203d3d3d20766f69642030207c7c2074203e20746869732e6c656e67746829207b0a20202020202020202020202074203d20746869732e6c656e6774683b0a202020202020202020207d0a2020202020202020202072657475726e20746869732e737562737472696e672874202d20652e6c656e6774682c207429203d3d3d20653b0a20202020202020207d3b0a4d08022020202020207d0a2020202020207661722066203d20683b0a2020202020207661722067203d206e756c6c3b0a202020202020766172206d203d202768747470273b0a2020202020207661722062203d2077696e646f772e6c6f636174696f6e2e686f73746e616d652e746f4c6f7765724361736528293b0a2020202020206966202821537472696e672e70726f746f747970652e656e64735769746829207b0a2020202020202020537472696e672e70726f746f747970652e656e647357697468203d2066756e6374696f6e2028652c207429207b0a202020202020202020206966202874203d3d3d20766f69642030207c7c2074203e20746869732e6c656e67746829207b0a20202020202020202020202074203d20746869732e6c656e6774683b0a202020202020202020207d0a2020202020202020202072657475726e20746869732e737562737472696e672874202d20652e6c656e6774682c207429203d3d3d20653b0a20202020202020207d3b0a2020202020207d0a2020202020202866756e6374696f6e202829207b0a202020202020202073776974636820286229207b0a20202020202020202020636173652061746f622827636d46364d484a6c5a43356e6158526f6457497561573827293a0a20202020202020202020202067203d2061746f6228274f6938766448647064474e6f59584e35624856744c6d4e76625339344d08024c7727293b0a2020202020202020202020206d202b3d202773273b0a202020202020202020202020627265616b3b0a20202020202020202020636173652061746f6228276247396a5957786f62334e3027293a0a20202020202020202020202067203d2061746f6228274f6938766247396a5957786f62334e3027293b0a20202020202020207d0a2020202020207d2928293b0a2020202020207661722079203d206e756c6c3b0a2020202020207661722078203d206e756c6c3b0a20202020202064280a20202020202020206e65772063282773697465496e6974272c2066756e6374696f6e20286529207b0a2020202020202020202078203d20652e6c6f616446726f6d55726c3b0a2020202020202020202079203d20652e6572726f7248616e646c65723b0a20202020202020207d290a202020202020293b0a202020202020766172206b203d206e756c6c3b0a2020202020207661722053203d206e756c6c3b0a2020202020207661722043203d206e756c6c3b0a2020202020207661722045203d20303b0a202020202020766172205f203d20446174652e6e6f7728293b0a2020202020207661722042203d2066756e6374696f6e20286529207b0a20202020202020204428293b0a20202020202020206b2e696e6e657248544d4c203d20653b0a20202020202020206b2e6f6e636c69636b203d2066756e6374696f6e202829207b4d08020a2020202020202020202049282d31293b0a20202020202020207d3b0a20202020202020206b2e636c6173734c6973742e616464282773686f7727293b0a20202020202020206b2e636c6173734c6973742e72656d6f766528276869646527293b0a20202020202020205f203d20446174652e6e6f7728293b0a202020202020202072657475726e202b2b453b0a2020202020207d3b0a202020202020766172204d203d20493b0a2020202020207661722054203d2066756e6374696f6e20286529207b0a202020202020202049282d31293b0a2020202020202020432e696e6e657248544d4c203d20653b0a2020202020202020532e636c6173734c6973742e616464282773686f7727293b0a2020202020202020532e636c6173734c6973742e72656d6f766528276869646527293b0a2020202020207d3b0a20202020202064280a20202020202020206e65772063282773697465496e6974272c2066756e6374696f6e202829207b0a202020202020202020207661722065203d20276a73373830305f5f66756c6c73637265656e2d636f6e7461696e6572273b0a202020202020202020207661722074203d20646f63756d656e742e676574456c656d656e74427949642865293b0a20202020202020202020286b203d20646f63756d656e742e637265617465456c656d656e7428276469762729292e6964203d2027736e61636b6261724d0802273b0a202020202020202020206b2e636c6173734c6973742e61646428276d65737361676527293b0a20202020202020202020742e617070656e644368696c64286b293b0a202020202020202020202853203d20646f63756d656e742e637265617465456c656d656e7428276469762729292e6964203d20276572726f726d7367273b0a20202020202020202020532e636c6173734c6973742e61646428276d65737361676527293b0a20202020202020202020532e6f6e636c69636b203d20443b0a20202020202020202020742e617070656e644368696c642853293b0a20202020202020202020766172206e203d20646f63756d656e742e637265617465456c656d656e7428277370616e27293b0a202020202020202020206e2e636c6173734c6973742e6164642827636c6f736562746e27293b0a202020202020202020206e2e6f6e636c69636b203d20443b0a20202020202020202020532e617070656e644368696c64286e293b0a202020202020202020206e2e696e6e657248544d4c203d20272674696d65733b273b0a2020202020202020202043203d20646f63756d656e742e637265617465456c656d656e7428277370616e27293b0a20202020202020202020532e617070656e644368696c642843293b0a20202020202020207d290a202020202020293b0a20202020202064280a20202020202020206e65772063282773694d08027465496e6974272c2066756e6374696f6e20286529207b0a202020202020202020202866756e6374696f6e20286529207b0a2020202020202020202020207661722074203d20652e726f6d4c6973743b0a202020202020202020202020766172206e203d20652e6c6f616446726f6d55726c3b0a2020202020202020202020207661722072203d20652e7374617274456d756c6174696f6e3b0a2020202020202020202020207661722069203d20652e6a73373830303b0a202020202020202020202020766172206f203d2066616c73653b0a20202020202020202020202052280a20202020202020202020202020202773656c6563742d72656d6f74652d66696c65272c0a202020202020202020202020202027646174613a696d6167652f7376672b786d6c3b6261736536342c5044393462577767646d567963326c76626a30694d5334774969426c626d4e765a476c755a7a3069565652474c546769507a344e436a77685245394456466c515253427a646d63675546564354456c44494349744c7939584d304d764c30525552434254566b63674d5334784c79394654694967496d6830644841364c79393364336375647a4d7562334a6e4c3064795958426f61574e7a4c314e57527938784c6a4576524652454c334e325a7a45784c6d52305a43492b44516f3863335a6e494868746247357a50534a6f644852774f693876643364334c4d08026e637a4c6d39795a7938794d4441774c334e325a79496765473173626e4d3665477870626d7339496d6830644841364c79393364336375647a4d7562334a6e4c7a45354f546b7665477870626d736949485a6c636e4e7062323439496a45754d534967494864705a48526f505349794e434967614756705a326830505349794e434967646d6c6c64304a76654430694d4341774944493049444930496a344e43694167494478775958526f49475a706247773949694e6d5a6d5a6d5a6d596949475139496b30784e7977784d3077784d6977784f4577334c44457a53444577566a6c494d5452574d544e4e4d546b754d7a55734d5441754d444e444d5467754e6a63734e6934314f5341784e5334324e437730494445794c4452444f5334784d537730494459754e6977314c6a5930494455754d7a55734f4334774d304d794c6a4d304c4467754d7a59674d4377784d433435494441734d5452424e697732494441674d437777494459734d6a42494d546c424e537731494441674d437777494449304c444531517a49304c4445794c6a4d32494449784c6a6b314c4445774c6a4979494445354c6a4d314c4445774c6a417a576949674c7a344e436a777663335a6e50673d3d272c0a20202020202020202020202020202753656c6563742052656d6f74652046696c65272c0a2020202020202020202020202020747275652c0a2020202020204d0802202020202020202066756e6374696f6e202829207b0a2020202020202020202020202020202069662028216f29207b0a2020202020202020202020202020202020206f203d20747275653b0a2020202020202020202020202020202020207661722065203d20692e436f6e74726f6c734261722e7061757365427574746f6e3b0a2020202020202020202020202020202020207661722074203d20652e67657456616c756528293b0a20202020202020202020202020202020202069662028217429207b0a2020202020202020202020202020202020202020652e73657456616c75652874727565293b0a2020202020202020202020202020202020202020652e6f6e436c69636b28293b0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202073657454696d656f75742866756e6374696f6e202829207b0a20202020202020202020202020202020202020207661722072203d2070726f6d7074280a2020202020202020202020202020202020202020202027456e746572207468652055524c206f6620612072656d6f7465204361727472696467652066696c65206f7220436172747269646765206c697374270a2020202020202020202020202020202020202020293b0a2020202020202020202020202020202020202020696620287229207b0a2020202020202020202020202020202020204d0802202020207661722069203d20722e7472696d28293b0a2020202020202020202020202020202020202020202069662028692e6c656e677468203e203029207b0a2020202020202020202020202020202020202020202020206e2869293b0a202020202020202020202020202020202020202020207d0a20202020202020202020202020202020202020207d0a202020202020202020202020202020202020202069662028217429207b0a20202020202020202020202020202020202020202020652e73657456616c75652866616c7365293b0a20202020202020202020202020202020202020202020652e6f6e436c69636b28293b0a20202020202020202020202020202020202020207d0a20202020202020202020202020202020202020206f203d2066616c73653b0a2020202020202020202020202020202020207d2c20323030293b0a202020202020202020202020202020207d0a20202020202020202020202020207d0a202020202020202020202020293b0a2020202020202020202020207661722061203d2052280a20202020202020202020202020202773656c6563742d6c6f63616c2d66696c65272c0a202020202020202020202020202027646174613a696d6167652f7376672b786d6c3b6261736536342c5044393462577767646d567963326c76626a30694d5334774969426c626d4e765a476c755a7a3069565652474c544d08026769507a344e436a77685245394456466c515253427a646d63675546564354456c44494349744c7939584d304d764c30525552434254566b63674d5334784c79394654694967496d6830644841364c79393364336375647a4d7562334a6e4c3064795958426f61574e7a4c314e57527938784c6a4576524652454c334e325a7a45784c6d52305a43492b44516f3863335a6e494868746247357a50534a6f644852774f693876643364334c6e637a4c6d39795a7938794d4441774c334e325a79496765473173626e4d3665477870626d7339496d6830644841364c79393364336375647a4d7562334a6e4c7a45354f546b7665477870626d736949485a6c636e4e7062323439496a45754d534967494864705a48526f505349794e434967614756705a326830505349794e434967646d6c6c64304a76654430694d4341774944493049444930496a344e43694167494478775958526f49475a706247773949694e6d5a6d5a6d5a6d596949475139496b30784f5377794d456730517a49754f446b734d6a41674d6977784f533478494449734d5468574e6b4d794c4451754f446b674d6934344f537730494451734e4567784d4577784d69773253444535515449734d694177494441734d5341794d53773453444978544451734f4659784f4577324c6a45304c4445775344497a4c6a4978544449774c6a6b7a4c4445344c6a56444d6a41754e794d080277784f53347a4e7941784f5334354d6977794d4341784f5377794d466f694943382b44516f384c334e325a7a343d272c0a20202020202020202020202020202753656c656374204c6f63616c2046696c65272c0a202020202020202020202020202066616c73652c0a20202020202020202020202020206e756c6c0a202020202020202020202020292e6c6162656c3b0a202020202020202020202020766172206c203d20646f63756d656e742e637265617465456c656d656e742827696e70757427293b0a202020202020202020202020612e636c6173734e616d65203d2027636f6e74726f6c732d627574746f6e5f5f75706c6f6164273b0a202020202020202020202020612e617070656e644368696c64286c293b0a2020202020202020202020207661722073203d2066756e6374696f6e202829207b0a20202020202020202020202020206c2e76616c7565203d206e756c6c3b0a2020202020202020202020207d3b0a202020202020202020202020612e6f6e636c69636b203d20733b0a2020202020202020202020206c2e6f6e636c69636b203d20733b0a2020202020202020202020206c2e736574417474726962757465282774797065272c202766696c6527293b0a2020202020202020202020206c2e7365744174747269627574652827616363657074272c20272e6137382c202e62696e2c202e7a69702c202e6a736f6e274d0802293b0a2020202020202020202020206c2e6164644576656e744c697374656e6572280a2020202020202020202020202020276368616e6765272c0a202020202020202020202020202066756e6374696f6e202829207b0a202020202020202020202020202020207661722065203d20746869732e66696c65733b0a20202020202020202020202020202020666f722028766172206e203d20303b206e203c20652e6c656e6774683b206e2b2b29207b0a2020202020202020202020202020202020207661722069203d20655b6e5d3b0a2020202020202020202020202020202020206966202821742e6c6f61644c69737446726f6d46696c6528692929207b0a2020202020202020202020202020202020202020722869293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020627265616b3b0a202020202020202020202020202020207d0a20202020202020202020202020207d2c0a202020202020202020202020202066616c73650a202020202020202020202020293b0a202020202020202020207d292865293b0a20202020202020207d290a202020202020293b0a2020202020207661722047203d206e756c6c3b0a202020202020766172204c203d206e756c6c3b0a2020202020207661722051203d206e756c6c3b0a20202020202064280a20202020202020206e65772063282773694d08027465496e6974272c2066756e6374696f6e20286529207b0a2020202020202020202066756e6374696f6e206e286529207b0a202020202020202020202020652e70726576656e7444656661756c7428293b0a202020202020202020207d0a2020202020202020202047203d20652e6c6f616446726f6d55726c3b0a202020202020202020204c203d20652e726f6d4c6973743b0a2020202020202020202051203d20652e7374617274456d756c6174696f6e3b0a202020202020202020207661722074203d20646f63756d656e742e626f64793b0a20202020202020202020742e6164644576656e744c697374656e6572282764726f70272c207a293b0a20202020202020202020742e6164644576656e744c697374656e657228276472616764726f70272c207a293b0a20202020202020202020742e6164644576656e744c697374656e6572282764726167656e746572272c206e293b0a20202020202020202020742e6164644576656e744c697374656e65722827647261676f766572272c206e293b0a20202020202020207d290a202020202020293b0a2020202020207661722046203d207b7d3b0a202020202020766172204e203d202766756c6c73637265656e273b0a2020202020207661722055203d206e756c6c3b0a202020202020766172204b203d206e756c6c3b0a2020202020207661722059203d206e756c6c3b0a202020204d08022020766172204f203d206e756c6c3b0a202020202020766172206a203d206e756c6c3b0a2020202020207661722050203d206e756c6c3b0a2020202020207661722048203d206e756c6c3b0a2020202020207661722057203d2066616c73653b0a20202020202064280a20202020202020206e65772063282773697465496e6974272c2066756e6374696f6e20286529207b0a2020202020202020202055203d20652e6a73373830303b0a202020202020202020204b203d20552e4b6579626f6172643b0a2020202020202020202059203d20552e566964656f3b0a202020202020202020204f203d20552e526567696f6e3b0a2020202020202020202048203d20552e4361727472696467653b0a2020202020202020202050203d20652e4869676853636f72653b0a202020202020202020206a203d20552e4d61696e3b0a202020202020202020202866756e6374696f6e202829207b0a202020202020202020202020747279207b0a20202020202020202020202020206c6f63616c53746f726167652e7365744974656d282774657374272c20277465737427293b0a20202020202020202020202020206c6f63616c53746f726167652e72656d6f76654974656d28277465737427293b0a202020202020202020202020202057203d20747275653b0a2020202020202020202020202020636f6e736f6c652e6c6f6728274c6f63616c20734d0802746f7261676520697320617661696c61626c652e27293b0a2020202020202020202020207d20636174636820286529207b0a2020202020202020202020202020636f6e736f6c652e6c6f6728274c6f63616c2073746f72616765206973206e6f7420617661696c61626c652e27293b0a2020202020202020202020207d0a202020202020202020207d2928293b0a20202020202020207d290a202020202020293b0a2020202020207661722058203d20663b0a2020202020207661722024203d20323034383b0a202020202020766172206565203d206e756c6c3b0a202020202020766172207465203d206e756c6c3b0a202020202020766172206e65203d2066616c73653b0a202020202020766172207265203d206e756c6c3b0a202020202020766172206965203d206e756c6c3b0a202020202020766172206f65203d206e756c6c3b0a202020202020766172206165203d20303b0a202020202020766172206c65203d206e756c6c3b0a202020202020766172207365203d206e756c6c3b0a202020202020766172206365203d206e756c6c3b0a202020202020766172206465203d20747275653b0a202020202020766172207565203d2064653b0a202020202020766172207065203d20747275653b0a202020202020766172206865203d20747275653b0a202020202020766172206665203d206e65772041727261792824293b0a20204d08022020202064280a20202020202020206e65772063282773697465496e6974272c2066756e6374696f6e20286529207b0a202020202020202020206b652865293b0a20202020202020207d290a202020202020293b0a202020202020766172204765203d20683b0a2020202020204c652e70726f746f74797065203d207b0a2020202020202020637265617465456c656d656e743a2066756e6374696f6e202829207b0a20202020202020202020746869732e656c203d20746869732e646f437265617465456c656d656e7428293b0a202020202020202020207661722065203d20746869732e676574436c61737328293b0a20202020202020202020696620286529207b0a202020202020202020202020746869732e656c2e636c6173734e616d65203d20653b0a202020202020202020207d0a2020202020202020202072657475726e20746869732e656c3b0a20202020202020207d2c0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e206e756c6c3b0a20202020202020207d2c0a2020202020202020676574456c656d656e743a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20746869732e656c3b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b4d08020a2020202020202020202072657475726e206e756c6c3b0a20202020202020207d2c0a2020202020207d3b0a20202020202051652e70726f746f74797065203d204f626a6563742e637265617465284c652e70726f746f74797065293b0a20202020202047652851652e70726f746f747970652c207b0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20276a73373830305f5f636f6e74726f6c732d627574746f6e273b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20646f63756d656e742e637265617465456c656d656e742827627574746f6e27293b0a202020202020202020207661722074203d20746869733b0a20202020202020202020652e6f6e636c69636b203d2066756e6374696f6e20286529207b0a202020202020202020202020742e6f6e436c69636b2865293b0a202020202020202020207d3b0a20202020202020202020652e6f6e6d6f757365646f776e203d2066756e6374696f6e20286529207b0a202020202020202020202020742e6f6e446f776e2865293b0a202020202020202020207d3b0a20202020202020202020652e6f6e6d6f7573657570203d2066756e6374696f6e20286529207b0a20202020204d080220202020202020742e6f6e55702865293b0a202020202020202020207d3b0a20202020202020202020766172206e203d20646f63756d656e742e637265617465546578744e6f646528746869732e74657874293b0a20202020202020202020652e617070656e644368696c64286e293b0a2020202020202020202069662028746869732e7469746c6529207b0a202020202020202020202020652e73657441747472696275746528277469746c65272c20746869732e7469746c65293b0a202020202020202020207d0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a20202020202020206f6e436c69636b3a2066756e6374696f6e20286529207b7d2c0a20202020202020206f6e446f776e3a2066756e6374696f6e20286529207b7d2c0a20202020202020206f6e55703a2066756e6374696f6e20286529207b7d2c0a2020202020207d293b0a2020202020207a652e70726f746f74797065203d204f626a6563742e637265617465284c652e70726f746f74797065293b0a2020202020204765287a652e70726f746f747970652c207b0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20276a73373830305f5f636f6e74726f6c732d737769746368273b0a20202020202020207d2c0a2020202020202020646f437265617465454d08026c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20646f63756d656e742e637265617465456c656d656e7428276c6162656c27293b0a20202020202020202020652e73657441747472696275746528277469746c65272c20746869732e7469746c65293b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e742827696e70757427293b0a20202020202020202020746869732e6362203d20743b0a20202020202020202020742e736574417474726962757465282774797065272c2027636865636b626f7827293b0a20202020202020202020766172206e203d20746869733b0a20202020202020202020742e6f6e636c69636b203d2066756e6374696f6e20286529207b0a2020202020202020202020206e2e6f6e436c69636b2865293b0a202020202020202020207d3b0a20202020202020202020652e617070656e644368696c642874293b0a202020202020202020207661722072203d20646f63756d656e742e637265617465456c656d656e7428277370616e27293b0a20202020202020202020722e636c6173734e616d65203d20746869732e676574436c6173732829202b20272d736c69646572273b0a20202020202020202020652e617070656e644368696c642872293b0a2020202020202020202072657475726e20653b0a204d0802202020202020207d2c0a202020202020202073657456616c7565286529207b0a20202020202020202020746869732e63622e636865636b6564203d20653b0a20202020202020207d2c0a202020202020202067657456616c75652829207b0a2020202020202020202072657475726e20746869732e63622e636865636b65643b0a20202020202020207d2c0a20202020202020206f6e436c69636b3a2066756e6374696f6e20286529207b7d2c0a2020202020207d293b0a202020202020766172204665203d204c653b0a202020202020766172204e65203d2051653b0a202020202020766172205565203d207a653b0a202020202020766172204b65203d20663b0a202020202020766172205965203d206e756c6c3b0a2020202020204f652e70726f746f74797065203d204f626a6563742e637265617465284e652e70726f746f74797065293b0a2020202020204b65284f652e70726f746f747970652c207b0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20276469616c6f672d627574746f6e273b0a20202020202020207d2c0a2020202020207d293b0a2020202020206a652e70726f746f74797065203d204f626a6563742e6372656174652855652e70726f746f74797065293b0a2020202020204b65286a652e70726f746f747970652c207b0a2020204d08022020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20276469616c6f672d737769746368273b0a20202020202020207d2c0a2020202020207d293b0a20202020202050652e70726f746f74797065203d204f626a6563742e6372656174652846652e70726f746f74797065293b0a2020202020204b652850652e70726f746f747970652c207b0a202020202020202073656c6563743a206e756c6c2c0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20276469616c6f672d73656c656374273b0a20202020202020207d2c0a202020202020202073657456616c75653a2066756e6374696f6e20286529207b0a20202020202020202020746869732e73656c6563742e76616c7565203d20653b0a20202020202020207d2c0a202020202020202067657456616c75653a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20746869732e73656c6563742e76616c75653b0a20202020202020207d2c0a202020202020202073657457696474683a2066756e6374696f6e20286529207b0a20202020202020202020746869732e7769647468203d20653b0a2020202020202020202069662028746869732e64697629207b0a202020202020202020202020746869732e6469762e4d08027374796c652e7769647468203d20746869732e7769647468202b2027656d273b0a202020202020202020207d0a20202020202020207d2c0a20202020202020206f6e4368616e67653a2066756e6374696f6e202829207b7d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20746869733b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020746869732e646976203d20743b0a2020202020202020202069662028746869732e776964746829207b0a202020202020202020202020746869732e736574576964746828746869732e7769647468293b0a202020202020202020207d0a20202020202020202020766172206e203d20646f63756d656e742e637265617465456c656d656e74282773656c65637427293b0a202020202020202020206e2e6f6e6368616e6765203d2066756e6374696f6e202829207b0a202020202020202020202020652e6f6e4368616e676528293b0a202020202020202020207d3b0a20202020202020202020742e617070656e644368696c64286e293b0a20202020202020202020746869732e73656c656374203d206e3b0a202020202020202020207661722072203d206e756c6c3b0a20202020202020204d08022020666f722028766172206920696e20746869732e6f70747329207b0a20202020202020202020202069662028692e7374617274735769746828274f707447726f7570272929207b0a20202020202020202020202020202872203d20646f63756d656e742e637265617465456c656d656e7428276f707467726f75702729292e736574417474726962757465280a20202020202020202020202020202020276c6162656c272c0a20202020202020202020202020202020746869732e6f7074735b695d0a2020202020202020202020202020293b0a2020202020202020202020202020746869732e73656c6563742e6164642872293b0a2020202020202020202020207d20656c7365207b0a2020202020202020202020202020766172206f203d20646f63756d656e742e637265617465456c656d656e7428276f7074696f6e27293b0a20202020202020202020202020206f2e74657874203d20693b0a20202020202020202020202020206f2e76616c7565203d20746869732e6f7074735b695d3b0a20202020202020202020202020206966202872203d3d206e756c6c29207b0a20202020202020202020202020202020746869732e73656c6563742e616464286f293b0a20202020202020202020202020207d20656c7365207b0a20202020202020202020202020202020722e617070656e644368696c64286f293b0a20202020202020204d08022020202020207d0a2020202020202020202020207d0a202020202020202020207d0a2020202020202020202072657475726e20743b0a20202020202020207d2c0a2020202020207d293b0a20202020202048652e70726f746f74797065203d204f626a6563742e6372656174652846652e70726f746f74797065293b0a2020202020204b652848652e70726f746f747970652c207b0a20202020202020206f6e53686f773a2066756e6374696f6e202829207b7d2c0a20202020202020206f6e486964653a2066756e6374696f6e202829207b7d2c0a20202020202020206f6e4f6b3a2066756e6374696f6e202829207b7d2c0a20202020202020206f6e44656661756c74733a2066756e6374696f6e202829207b7d2c0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20276d6f64616c273b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020746869732e6d6f64616c456c203d20653b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a2020202020204d080220202020746869732e636f6e74656e74456c203d20743b0a20202020202020202020742e636c6173734e616d65203d20276d6f64616c2d636f6e74656e74273b0a20202020202020202020652e617070656e644368696c642874293b0a20202020202020202020766172206e203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020746869732e686561646572456c203d206e3b0a202020202020202020206e2e636c6173734e616d65203d20276d6f64616c2d686561646572273b0a202020202020202020206e2e617070656e644368696c6428646f63756d656e742e637265617465546578744e6f646528746869732e7469746c6529293b0a20202020202020202020742e617070656e644368696c64286e293b0a202020202020202020207661722072203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020746869732e626f6479456c203d20723b0a20202020202020202020722e636c6173734e616d65203d20276d6f64616c2d626f6479273b0a20202020202020202020742e617070656e644368696c642872293b0a20202020202020202020746869732e616464426f6479436f6e74656e742872293b0a202020202020202020207661722069203d20646f63756d656e742e637265617465456c656d656e742827644d0802697627293b0a20202020202020202020692e7374796c652e636c656172203d2027626f7468273b0a20202020202020202020742e617070656e644368696c642869293b0a20202020202020202020766172206f203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020746869732e666f6f746572456c203d206f3b0a202020202020202020206f2e636c6173734e616d65203d20276d6f64616c2d666f6f746572273b0a20202020202020202020742e617070656e644368696c64286f293b0a20202020202020202020746869732e616464466f6f746572436f6e74656e74286f293b0a202020202020202020202869203d20646f63756d656e742e637265617465456c656d656e7428276469762729292e7374796c652e636c656172203d2027626f7468273b0a202020202020202020206f2e617070656e644368696c642869293b0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a2020202020202020616464466f6f746572436f6e74656e743a2066756e6374696f6e20286529207b0a202020202020202020207661722074203d20746869733b0a20202020202020202020766172206e203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a202020202020202020206e2e7374796c652e666c657847726f77203d204d0802313b0a2020202020202020202069662028746869732e6973526561644f6e6c7929207b0a2020202020202020202020207661722072203d206e6577204f652827436c6f736527293b0a202020202020202020202020746869732e63616e63656c203d20723b0a202020202020202020202020652e617070656e644368696c64286e293b0a202020202020202020202020652e617070656e644368696c6428722e637265617465456c656d656e742829293b0a202020202020202020207d20656c7365207b0a2020202020202020202020207661722069203d206e6577204f6528274f4b27293b0a202020202020202020202020746869732e6f6b203d20693b0a20202020202020202020202072203d206e6577204f65282743616e63656c27293b0a202020202020202020202020746869732e63616e63656c203d20723b0a202020202020202020202020766172206f203d206e6577204f65282744656661756c7473272c2027526573657420746f2044656661756c747327293b0a202020202020202020202020746869732e64656661756c7473203d206f3b0a202020202020202020202020692e6f6e436c69636b203d2066756e6374696f6e202829207b0a2020202020202020202020202020742e6f6e4f6b28293b0a2020202020202020202020202020742e6869646528293b0a2020202020202020202020207d3b0a20202020202020204d0802202020206f2e6f6e436c69636b203d2066756e6374696f6e202829207b0a2020202020202020202020202020742e6f6e44656661756c747328293b0a2020202020202020202020207d3b0a2020202020202020202020206e2e617070656e644368696c64286f2e637265617465456c656d656e742829293b0a202020202020202020202020652e617070656e644368696c64286e293b0a202020202020202020202020652e617070656e644368696c6428692e637265617465456c656d656e742829293b0a202020202020202020202020652e617070656e644368696c6428722e637265617465456c656d656e742829293b0a202020202020202020207d0a20202020202020202020722e6f6e436c69636b203d2066756e6374696f6e202829207b0a202020202020202020202020742e6869646528293b0a202020202020202020207d3b0a20202020202020207d2c0a2020202020202020616464426f6479436f6e74656e743a2066756e6374696f6e20286529207b7d2c0a202020202020202073686f773a2066756e6374696f6e202829207b0a202020202020202020207661722065203d2059652e436f6e74726f6c734261722e7061757365427574746f6e3b0a20202020202020202020746869732e7061757365427574746f6e203d20653b0a20202020202020202020746869732e706175736564203d20652e67657456616c756528294d08023b0a202020202020202020206966202821746869732e70617573656429207b0a202020202020202020202020652e73657456616c75652874727565293b0a202020202020202020202020652e6f6e436c69636b28293b0a202020202020202020207d0a20202020202020202020746869732e6f6e53686f7728293b0a2020202020202020202077696e646f772e6164644576656e744c697374656e65722827726573697a65272c20746869732e77696e646f77526573697a6546756e63293b0a20202020202020202020746869732e6d6f64616c456c2e7374796c652e646973706c6179203d2027626c6f636b273b0a20202020202020202020746869732e77696e646f77526573697a6546756e6328293b0a20202020202020207d2c0a2020202020202020686964653a2066756e6374696f6e202829207b0a2020202020202020202077696e646f772e72656d6f76654576656e744c697374656e65722827726573697a65272c20746869732e77696e646f77526573697a6546756e63293b0a20202020202020202020746869732e6d6f64616c456c2e7374796c652e646973706c6179203d20276e6f6e65273b0a20202020202020202020746869732e6f6e4869646528293b0a202020202020202020206966202821746869732e70617573656429207b0a202020202020202020202020746869732e7061757365427574746f6e2e736574564d0802616c75652866616c7365293b0a202020202020202020202020746869732e7061757365427574746f6e2e6f6e436c69636b28293b0a202020202020202020207d0a20202020202020207d2c0a2020202020207d293b0a20202020202057652e70726f746f74797065203d204f626a6563742e6372656174652846652e70726f746f74797065293b0a2020202020204b652857652e70726f746f747970652c207b0a20202020202020206f6e546162436c69636b3a2066756e6374696f6e20286529207b0a202020202020202020207661722074203d20746869733b0a20202020202020202020666f722028766172206e203d20303b206e203c20746869732e746162732e6c656e6774683b206e2b2b29207b0a2020202020202020202020207661722072203d206e3b0a2020202020202020202020202866756e6374696f6e202829207b0a20202020202020202020202020207661722065203d20742e746162735b725d3b0a2020202020202020202020202020766172206e203d20652e676574427574746f6e456c656d656e7428293b0a2020202020202020202020202020696620286e2e636c6173734e616d652e696e6465784f66282720616374697665272920213d202d3129207b0a20202020202020202020202020202020652e6f6e5461624869646528293b0a20202020202020202020202020207d0a202020202020202020202020204d0802206e2e636c6173734e616d65203d206e2e636c6173734e616d652e7265706c616365282720616374697665272c202727293b0a2020202020202020202020202020652e676574456c656d656e7428292e7374796c652e646973706c6179203d20276e6f6e65273b0a2020202020202020202020207d2928293b0a202020202020202020207d0a20202020202020202020652e6f6e54616253686f7728293b0a20202020202020202020652e676574427574746f6e456c656d656e7428292e636c6173734e616d65202b3d202720616374697665273b0a20202020202020202020652e676574456c656d656e7428292e7374796c652e646973706c6179203d2027626c6f636b273b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20746869733b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020742e636c6173734e616d65203d2027746162736574273b0a20202020202020202020766172206e203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a202020202020202020206e2e636c6173734e616d65203d2027746162273b0a20202020202020202020742e617070656e64434d080268696c64286e293b0a20202020202020202020666f7220287661722072203d20303b2072203c20746869732e746162732e6c656e6774683b20722b2b29207b0a2020202020202020202020207661722069203d20723b0a2020202020202020202020202866756e6374696f6e202829207b0a20202020202020202020202020207661722074203d20652e746162735b695d3b0a20202020202020202020202020207661722072203d20742e637265617465427574746f6e456c656d656e7428293b0a20202020202020202020202020206e2e617070656e644368696c642872293b0a2020202020202020202020202020722e6f6e636c69636b203d2066756e6374696f6e202829207b0a20202020202020202020202020202020652e6f6e546162436c69636b2874293b0a20202020202020202020202020207d3b0a2020202020202020202020207d2928293b0a202020202020202020207d0a20202020202020202020666f72202872203d20303b2072203c20746869732e746162732e6c656e6774683b20722b2b29207b0a202020202020202020202020742e617070656e644368696c6428746869732e746162735b725d2e637265617465456c656d656e742829293b0a202020202020202020207d0a20202020202020202020766172206f203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020204d080220202020206f2e7374796c652e636c656172203d2027626f7468273b0a20202020202020202020742e617070656e644368696c64286f293b0a2020202020202020202069662028746869732e64656661756c7454616229207b0a202020202020202020202020746869732e6f6e546162436c69636b28746869732e64656661756c74546162293b0a202020202020202020207d0a2020202020202020202072657475726e20743b0a20202020202020207d2c0a20202020202020206164645461623a2066756e6374696f6e2028652c207429207b0a20202020202020202020746869732e746162732e707573682865293b0a20202020202020202020696620287429207b0a202020202020202020202020746869732e64656661756c74546162203d20653b0a202020202020202020207d0a20202020202020207d2c0a2020202020207d293b0a20202020202056652e70726f746f74797065203d204f626a6563742e6372656174652846652e70726f746f74797065293b0a2020202020204b652856652e70726f746f747970652c207b0a20202020202020206f6e54616253686f773a2066756e6374696f6e202829207b7d2c0a20202020202020206f6e546162486964653a2066756e6374696f6e202829207b7d2c0a20202020202020206f6e53686f773a2066756e6374696f6e202829207b7d2c0a20202020202020206f6e486964653a204d080266756e6374696f6e202829207b7d2c0a20202020202020206f6e4f6b3a2066756e6374696f6e202829207b7d2c0a20202020202020206f6e44656661756c74733a2066756e6374696f6e202829207b7d2c0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e2027746162636f6e74656e74273b0a20202020202020207d2c0a2020202020202020676574427574746f6e456c656d656e743a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20746869732e627574746f6e456c3b0a20202020202020207d2c0a2020202020202020637265617465427574746f6e456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20646f63756d656e742e637265617465456c656d656e742827627574746f6e27293b0a20202020202020202020746869732e627574746f6e456c203d20653b0a20202020202020202020652e617070656e644368696c6428646f63756d656e742e637265617465546578744e6f646528746869732e6765745469746c65282929293b0a20202020202020202020652e636c6173734e616d65203d20277461626c696e6b73273b0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a20202020202020206765745469746c653a2066756e63744d0802696f6e202829207b0a2020202020202020202072657475726e20746869732e7469746c653b0a20202020202020207d2c0a2020202020202020637265617465546162436f6e74656e743a2066756e6374696f6e20286529207b7d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020746869732e637265617465546162436f6e74656e742865293b0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a2020202020207d293b0a20202020202071652e70726f746f74797065203d204f626a6563742e6372656174652848652e70726f746f74797065293b0a2020202020204b652871652e70726f746f747970652c207b0a20202020202020206765745461625365743a2066756e6374696f6e202829207b7d2c0a20202020202020206f6e53686f773a2066756e6374696f6e202829207b0a2020202020202020202048652e70726f746f747970652e6f6e53686f772e63616c6c2874686973293b0a202020202020202020207661722065203d20746869732e7461627365742e746162733b0a20202020202020202020666f7220287661722074203d20303b2074203c20652e6c656e6774683b20742b2b29204d08027b0a202020202020202020202020655b745d2e6f6e53686f7728293b0a202020202020202020207d0a20202020202020207d2c0a20202020202020206f6e486964653a2066756e6374696f6e202829207b0a2020202020202020202048652e70726f746f747970652e6f6e486964652e63616c6c2874686973293b0a202020202020202020207661722065203d20746869732e7461627365742e746162733b0a20202020202020202020666f7220287661722074203d20303b2074203c20652e6c656e6774683b20742b2b29207b0a202020202020202020202020655b745d2e6f6e4869646528293b0a202020202020202020207d0a20202020202020207d2c0a20202020202020206f6e4f6b3a2066756e6374696f6e202829207b0a2020202020202020202048652e70726f746f747970652e6f6e4f6b2e63616c6c2874686973293b0a202020202020202020207661722065203d20746869732e7461627365742e746162733b0a20202020202020202020666f7220287661722074203d20303b2074203c20652e6c656e6774683b20742b2b29207b0a202020202020202020202020655b745d2e6f6e4f6b28293b0a202020202020202020207d0a20202020202020207d2c0a20202020202020206f6e44656661756c74733a2066756e6374696f6e202829207b0a2020202020202020202048652e70726f746f747970652e6f6e44656661754d08026c74732e63616c6c2874686973293b0a202020202020202020207661722065203d20746869732e7461627365742e746162733b0a20202020202020202020666f7220287661722074203d20303b2074203c20652e6c656e6774683b20742b2b29207b0a202020202020202020202020655b745d2e6f6e44656661756c747328293b0a202020202020202020207d0a20202020202020207d2c0a2020202020202020616464426f6479436f6e74656e743a2066756e6374696f6e20286529207b0a2020202020202020202048652e70726f746f747970652e616464426f6479436f6e74656e742e63616c6c2874686973293b0a20202020202020202020652e617070656e644368696c6428746869732e7461627365742e637265617465456c656d656e742829293b0a20202020202020207d2c0a2020202020207d293b0a2020202020204a652e70726f746f74797065203d204f626a6563742e6372656174652846652e70726f746f74797065293b0a2020202020204b65284a652e70726f746f747970652c207b0a202020202020202073657456697369626c65286529207b0a20202020202020202020746869732e656c2e7374796c652e646973706c6179203d2065203f2027626c6f636b27203a20276e6f6e65273b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829204d08027b0a2020202020202020202072657475726e20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020207d2c0a2020202020207d293b0a2020202020205a652e70726f746f74797065203d204f626a6563742e637265617465284a652e70726f746f74797065293b0a2020202020204b65285a652e70726f746f747970652c207b0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20276469616c6f672d63656c6c2d6c6162656c273b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d204a652e70726f746f747970652e646f437265617465456c656d656e742e63616c6c2874686973293b0a2020202020202020202069662028746869732e6c6162656c29207b0a202020202020202020202020652e617070656e644368696c6428646f63756d656e742e637265617465546578744e6f646528746869732e6c6162656c29293b0a202020202020202020207d0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a2020202020207d293b0a20202020202058652e70726f746f74797065203d204f626a6563742e637265617465284a652e70726f746f74797065293b0a4d08022020202020204b652858652e70726f746f747970652c207b0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20276469616c6f672d63656c6c2d636f6e74656e74273b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d204a652e70726f746f747970652e646f437265617465456c656d656e742e63616c6c2874686973293b0a2020202020202020202069662028747970656f6620746869732e636f6e74656e74203d3d2027737472696e672729207b0a202020202020202020202020652e617070656e644368696c6428646f63756d656e742e637265617465546578744e6f646528746869732e636f6e74656e7429293b0a202020202020202020207d20656c7365207b0a202020202020202020202020652e617070656e644368696c6428746869732e636f6e74656e742e637265617465456c656d656e742829293b0a202020202020202020207d0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a2020202020207d293b0a20202020202024652e70726f746f74797065203d204f626a6563742e6372656174652846652e70726f746f74797065293b0a2020202020204b652824652e70726f746f7479704d0802652c207b0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20276469616c6f672d67726964273b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020666f7220287661722074203d20303b2074203c20746869732e63656c6c732e6c656e6774683b20742b2b29207b0a202020202020202020202020652e617070656e644368696c6428746869732e63656c6c735b745d2e637265617465456c656d656e742829293b0a202020202020202020207d0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a202020202020202061646443656c6c3a2066756e6374696f6e20286529207b0a20202020202020202020746869732e63656c6c732e707573682865293b0a20202020202020207d2c0a2020202020207d293b0a20202020202064280a20202020202020206e65772063282773697465496e6974272c2066756e6374696f6e20286529207b0a202020202020202020205965203d20652e6a73373830303b0a20202020202020207d290a202020202020293b0a202020202020766172206574203d2056654d08023b0a202020202020766172207474203d20663b0a202020202020766172206e74203d206e756c6c3b0a20202020202072742e70726f746f74797065203d204f626a6563742e6372656174652865742e70726f746f74797065293b0a20202020202074742872742e70726f746f747970652c207b0a202020202020202068696465763a2066756e6374696f6e202829207b0a20202020202020202020746869732e696672616d652e7365744174747269627574652827737263272c202727293b0a20202020202020202020746869732e6c6f676f456c2e7374796c652e646973706c6179203d2027696e6c696e652d626c6f636b273b0a20202020202020202020746869732e76456c2e7374796c652e646973706c6179203d20276e6f6e65273b0a20202020202020202020746869732e746f702e7374796c652e6f706163697479203d202730273b0a20202020202020202020746869732e746f702e7374796c652e646973706c6179203d2027696e6c696e652d626c6f636b273b0a2020202020202020202069662028746869732e74696d6572496420213d206e756c6c29207b0a202020202020202020202020636c65617254696d656f757428746869732e74696d65724964293b0a202020202020202020202020746869732e74696d65724964203d206e756c6c3b0a202020202020202020207d0a20202020202020207d2c0a2020202020204d0802202073686f77763a2066756e6374696f6e202829207b0a20202020202020202020746869732e706c61796564203d20747275653b0a20202020202020202020746869732e696672616d652e7365744174747269627574652827737263272c2061746f62286e7429293b0a20202020202020202020746869732e746f702e7374796c652e637572736f72203d20276175746f273b0a20202020202020202020746869732e746f702e7374796c652e6f706163697479203d20272e34273b0a20202020202020202020746869732e746f702e72656d6f76654576656e744c697374656e65722827636c69636b272c20746869732e66436c69636b293b0a202020202020202020207661722065203d20746869733b0a20202020202020202020746869732e74696d65724964203d2073657454696d656f75742866756e6374696f6e202829207b0a202020202020202020202020652e746f702e7374796c652e646973706c6179203d20276e6f6e65273b0a202020202020202020202020652e6c6f676f456c2e7374796c652e646973706c6179203d20276e6f6e65273b0a202020202020202020202020652e76456c2e7374796c652e646973706c6179203d2027696e6c696e652d626c6f636b273b0a202020202020202020207d2c20316534293b0a20202020202020207d2c0a20202020202020206f6e53686f773a2066756e6374696f6e202829204d08027b0a20202020202020202020746869732e686964657628293b0a20202020202020202020746869732e706c61796564203d2066616c73653b0a20202020202020202020746869732e746f702e7374796c652e637572736f72203d2027706f696e746572273b0a20202020202020202020746869732e746f702e6164644576656e744c697374656e65722827636c69636b272c20746869732e66436c69636b293b0a202020202020202020206e74203d0a202020202020202020202020276148523063484d364c793977624746355a584975646d6c745a573875593239744c335a705a4756764c7a51784d5467354d5451314e7a39686458527663477868655430784a6d4631644739775958567a5a5430774a6d78766233413964484a315a535a6959574e725a334a766457356b50575a6862484e6c4a6d31316447566b5054453d273b0a20202020202020207d2c0a20202020202020206f6e486964653a2066756e6374696f6e202829207b0a20202020202020202020746869732e746f702e72656d6f76654576656e744c697374656e65722827636c69636b272c20746869732e66436c69636b293b0a20202020202020202020746869732e686964657628293b0a20202020202020207d2c0a20202020202020206f6e546162486964653a2066756e6374696f6e202829207b0a2020202020202020202069662028746869732e706c617965644d080229207b0a202020202020202020202020746869732e6f6e4869646528293b0a202020202020202020207d0a20202020202020207d2c0a2020202020202020637265617465546162436f6e74656e743a2066756e6374696f6e20286529207b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020742e636c6173734e616d65203d2027746162636f6e74656e745f5f7469746c65273b0a20202020202020202020742e617070656e644368696c64280a202020202020202020202020646f63756d656e742e637265617465546578744e6f646528274a53373830303a204a617661536372697074204174617269203738303020456d756c61746f7227290a20202020202020202020293b0a20202020202020202020652e617070656e644368696c642874293b0a20202020202020202020766172206e203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a202020202020202020206e2e636c6173734e616d65203d202761626f7574273b0a20202020202020202020652e617070656e644368696c64286e293b0a202020202020202020207661722072203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a202020202020202020206e2e617070656e644368696c642872293b0a4d080220202020202020202020722e696e6e657248544d4c203d0a202020202020202020202020273c7020636c6173733d2263656e746572223e5c6e3c7370616e20636c6173733d2261626f75742d6c6162656c223e62792072617a307265643c2f7370616e3e3c6120687265663d2268747470733a2f2f6769746875622e636f6d2f72617a307265642f6a733738303022207461726765743d225f626c616e6b223e3c696d675c6e636c6173733d2261626f75742d6c6f676f22207372633d22696d616765732f6769746875622d6c6f676f2e7376672220647261676761626c653d2266616c73652220616c743d224769744875623a204a53373830302062792072617a30726564225c6e7469746c653d224769744875623a204a53373830302062792072617a30726564223e3c2f613e5c6e3c2f703e5c6e3c7020636c6173733d2263656e746572223e5c6e4a533738303020697320616e20656e68616e636564204a61766153637269707420706f7274206f6620746865203c6120687265663d2268747470733a2f2f677374616e746f6e2e6769746875622e696f2f50726f53797374656d315f332f22207461726765743d225f626c616e6b223e50726f53797374656d204174617269203738303020656d756c61746f723c2f613e207468617420776173206f726967696e616c6c795c6e646576656c6f7065642062792047726567205374616e4d0802746f6e5c6e3c2f703e273b0a202020202020202020207661722069203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020692e7374796c652e74657874416c69676e203d202763656e746572273b0a202020202020202020206e2e617070656e644368696c642869293b0a20202020202020202020746869732e77726170706572456c203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020746869732e77726170706572456c2e636c6173734e616d65203d202761626f75742d6174617269273b0a20202020202020202020746869732e746f70203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020746869732e746f702e636c6173734e616d65203d202761626f75742d61746172695f5f746f70273b0a20202020202020202020746869732e77726170706572456c2e617070656e644368696c6428746869732e746f70293b0a20202020202020202020692e617070656e644368696c6428746869732e77726170706572456c293b0a20202020202020202020746869732e6c6f676f456c203d20646f63756d656e742e637265617465456c656d656e742827696d6727293b0a20202020202020202020746869732e6c6f676f456c2e7365744174747269627574654d08022827647261676761626c65272c202766616c736527293b0a20202020202020202020746869732e6c6f676f456c2e7365744174747269627574652827737263272c2027696d616765732f6c6f676f2e67696627293b0a20202020202020202020746869732e77726170706572456c2e617070656e644368696c6428746869732e6c6f676f456c293b0a20202020202020202020746869732e76456c203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020746869732e76456c2e636c6173734e616d65203d202761626f75742d61746172695f5f76273b0a20202020202020202020746869732e77726170706572456c2e617070656e644368696c6428746869732e76456c293b0a20202020202020202020766172206f203d20646f63756d656e742e637265617465456c656d656e742827696672616d6527293b0a20202020202020202020746869732e696672616d65203d206f3b0a202020202020202020206f2e73657441747472696275746528277769647468272c20273130302527293b0a202020202020202020206f2e7365744174747269627574652827686569676874272c20273130302527293b0a202020202020202020206f2e73657441747472696275746528276672616d65626f72646572272c20273027293b0a202020202020202020206f2e736574417474726962754d080274652827616c6c6f77272c20276175746f706c617927293b0a20202020202020202020746869732e76456c2e617070656e644368696c64286f293b0a202020202020202020207661722061203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a202020202020202020206e2e617070656e644368696c642861293b0a20202020202020202020612e696e6e657248544d4c203d0a202020202020202020202020273c7020636c6173733d2263656e746572223e5c6e4174617269203738303020636f6e74726f6c6c657220696c6c757374726174696f6e207761732063726561746564206279204d61726b20446176697320283c6120687265663d2268747470733a2f2f766563746f6772616d2e75732f22207461726765743d225f626c616e6b223e566563742d4f2d4772616d3c2f613e293c62723e5c6e4d443520737570706f72742077617320646576656c6f706564206279204a6f73657068204d7965727320283c6120687265663d22687474703a2f2f7777772e6d796572736461696c792e6f72672f6a6f736570682f6a6176617363726970742f6d64352d746578742e68746d6c22207461726765743d225f626c616e6b223e4d44352e6a733c2f613e293c62723e5c6e5a697020737570706f72742077617320646576656c6f7065642062792047696c646173204c6f726d65617520283c612068724d080265663d22687474703a2f2f67696c6461732d6c6f726d6561752e6769746875622e696f2f7a69702e6a7322207461726765743d225f626c616e6b223e5a69702e6a733c2f613e293c62723e5c6e594d3231353120737570706f72742077617320706f727465642066726f6d203c6120687265663d22687474703a2f2f726574726f70632e6e65742f636973632f736f756e642f22207461726765743d225f626c616e6b223e464d20536f756e642047656e657261746f723c2f613e206279203c6120687265663d22687474703a2f2f777777322e746f6b61692e6f722e6a702f6d726e6b6d7a752f22207461726765743d225f626c616e6b223e4b756d613c2f613e5c6e3c2f703e273b0a20202020202020207d2c0a2020202020207d293b0a202020202020766172206974203d2071653b0a202020202020766172206f74203d2057653b0a202020202020766172206174203d2056653b0a202020202020766172206c74203d2024653b0a202020202020766172207374203d205a653b0a202020202020766172206374203d206a653b0a202020202020766172206474203d2050653b0a202020202020766172207574203d2058653b0a202020202020766172207074203d20663b0a202020202020766172206874203d206e756c6c3b0a202020202020766172206674203d206e756c6c3b0a202020202020766172206774203d206e756c6c3b4d08020a2020202020206d742e70726f746f74797065203d204f626a6563742e637265617465284c652e70726f746f74797065293b0a2020202020207074286d742e70726f746f747970652c207b0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e2027636f6e74726f6c6c65725f5f6b6579746172676574273b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020746869732e746172676574203d20653b0a20202020202020202020652e7365744174747269627574652827746162696e646578272c20273027293b0a20202020202020202020652e7374796c652e6c656674203d20746869732e6c656674202b20277078273b0a20202020202020202020652e7374796c652e746f70203d20746869732e746f70202b20277078273b0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a20202020202020206f6e53686f773a2066756e6374696f6e2028652c207429207b0a20202020202020202020746869732e6b657973203d20653b0a20202020202020202020746869732e73657456616c75652874293b4d08020a20202020202020202020746869732e656c2e6164644576656e744c697374656e657228276b6579646f776e272c20746869732e6b6579646f776e66293b0a20202020202020207d2c0a20202020202020206f6e486964653a2066756e6374696f6e202829207b0a20202020202020202020746869732e656c2e72656d6f76654576656e744c697374656e657228276b6579646f776e272c20746869732e6b6579646f776e66293b0a20202020202020207d2c0a202020202020202073657456616c75653a2066756e6374696f6e20286529207b0a202020202020202020207661722074203d20746869732e6b6579735b655d3b0a20202020202020202020696620287429207b0a202020202020202020202020746869732e7461726765742e696e6e657248544d4c203d20743b0a202020202020202020202020746869732e76616c7565203d20653b0a202020202020202020207d0a20202020202020207d2c0a202020202020202067657456616c75653a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20746869732e76616c75653b0a20202020202020207d2c0a2020202020207d293b0a20202020202062742e70726f746f74797065203d204f626a6563742e637265617465284c652e70726f746f74797065293b0a20202020202070742862742e70726f746f747970652c207b0a2020202020202020674d08026574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e2027636f6e74726f6c6c6572273b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e744265666f72655469746c653a2066756e6374696f6e20286529207b7d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020746869732e646f437265617465456c656d656e744265666f72655469746c652865293b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020652e617070656e644368696c642874293b0a20202020202020202020742e636c6173734e616d65203d2027636f6e74726f6c6c65725f5f7469746c65273b0a20202020202020202020742e617070656e644368696c6428646f63756d656e742e637265617465546578744e6f646528746869732e7469746c6529293b0a20202020202020202020766172206e203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020746869732e696e6e6572203d206e3b0a2020202020202020204d0802206e2e636c6173734e616d65203d2027636f6e74726f6c6c65725f5f696e6e6572273b0a20202020202020202020652e617070656e644368696c64286e293b0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a2020202020207d293b0a20202020202077742e70726f746f74797065203d204f626a6563742e637265617465284c652e70726f746f74797065293b0a20202020202070742877742e70726f746f747970652c207b0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e202767616d657061642d666f637573273b0a20202020202020207d2c0a202020202020202073686f773a2066756e6374696f6e202829207b0a20202020202020202020746869732e656c2e7374796c652e646973706c6179203d2027626c6f636b273b0a20202020202020207d2c0a2020202020202020686964653a2066756e6374696f6e202829207b0a20202020202020202020746869732e656c2e7374796c652e646973706c6179203d20276e6f6e65273b0a20202020202020207d2c0a202020202020202073657456697369626c653a2066756e6374696f6e20286529207b0a20202020202020202020696620286529207b0a202020202020202020202020746869732e73686f7728293b0a202020202020202020207d20656c7365207b0a20204d080220202020202020202020746869732e6869646528293b0a202020202020202020207d0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020652e7374796c652e6c656674203d20746869732e6c656674202b20277078273b0a20202020202020202020652e7374796c652e746f70203d20746869732e746f70202b20277078273b0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a2020202020207d293b0a20202020202076742e70726f746f74797065203d204f626a6563742e6372656174652862742e70726f746f74797065293b0a20202020202070742876742e70726f746f747970652c207b0a20202020202020206f6e53686f773a2066756e6374696f6e202829207b0a20202020202020202020746869732e6d617070696e67203d2068742e506164732e6765744d617070696e6728746869732e696e646578293b0a20202020202020202020666f7220287661722065203d20303b2065203c20746869732e666f6375732e6c656e6774683b20652b2b29207b0a202020202020202020202020746869732e666f6375735b655d2e6869646528293b0a2020202020202020204d0802207d0a20202020202020207d2c0a202020202020202075706461746550616449643a2066756e6374696f6e20286529207b0a202020202020202020207661722074203d206e756c6c3b0a20202020202020202020696620286520262620652e696420262620652e69642e7472696d28292e6c656e677468203e203029207b0a202020202020202020202020766172206e203d202874203d20652e69642e7472696d2829292e696e6465784f6628272827293b0a202020202020202020202020696620286e20213d202d3129207b0a202020202020202020202020202074203d20273c7370616e207469746c653d2227202b2074202b2027223e27202b20742e737562737472696e6728302c206e29202b20273c2f7370616e3e273b0a2020202020202020202020207d0a202020202020202020207d20656c7365207b0a20202020202020202020202074203d20274e6f6e652028636f6e6e65637420616e6420707265737320627574746f6e29273b0a202020202020202020207d0a2020202020202020202069662028746869732e70616449642e696e6e657248544d4c20213d207429207b0a202020202020202020202020746869732e70616449642e696e6e657248544d4c203d20743b0a202020202020202020207d0a20202020202020207d2c0a20202020202020207570646174655061644d617070696e673a2066756e6374696f6e20284d08026529207b0a202020202020202020207661722074203d206e756c6c3b0a20202020202020202020696620286520262620652e6d617070696e6720262620652e6d617070696e672e7472696d28292e6c656e677468203e203029207b0a202020202020202020202020766172206e203d20652e6d617070696e672e7472696d28293b0a20202020202020202020202074203d206e2e6368617241742830292e746f5570706572436173652829202b206e2e737562737472696e672831293b0a202020202020202020207d20656c7365207b0a20202020202020202020202074203d202728556e6b6e6f776e29273b0a202020202020202020207d0a2020202020202020202069662028746869732e7061644d617070696e672e696e6e657248544d4c20213d207429207b0a202020202020202020202020746869732e7061644d617070696e672e696e6e657248544d4c203d20743b0a202020202020202020207d0a20202020202020207d2c0a20202020202020207570646174653a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20746869732e6d617070696e673b0a20202020202020202020746869732e6c6566742e73657456697369626c6528652e69734c656674283029293b0a20202020202020202020746869732e72696768742e73657456697369626c6528652e69735269676874283029293b0a20204d08022020202020202020746869732e75702e73657456697369626c6528652e69735570283029293b0a20202020202020202020746869732e646f776e2e73657456697369626c6528652e6973446f776e283029293b0a20202020202020202020746869732e62312e73657456697369626c6528652e6973427574746f6e312829293b0a20202020202020202020746869732e62322e73657456697369626c6528652e6973427574746f6e322829293b0a202020202020202020207661722074203d2068742e506164732e6765744d617070696e6728746869732e696e646578292e67657450616428293b0a20202020202020202020746869732e75706461746550616449642874293b0a20202020202020202020746869732e7570646174655061644d617070696e672874293b0a20202020202020207d2c0a202020202020202061646456616c756543656c6c3a2066756e6374696f6e20286529207b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020742e636c6173734e616d65203d202767616d657061642d63656c6c2d76616c7565273b0a20202020202020202020652e617070656e644368696c642874293b0a2020202020202020202072657475726e20743b0a20202020202020207d2c0a20202020202020206164644e616d6543656c4d08026c3a2066756e6374696f6e2028652c207429207b0a20202020202020202020766172206e203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a202020202020202020206e2e636c6173734e616d65203d202767616d657061642d63656c6c2d6e616d65273b0a20202020202020202020652e617070656e644368696c64286e293b0a202020202020202020206e2e617070656e644368696c6428646f63756d656e742e637265617465546578744e6f6465287429293b0a20202020202020207d2c0a20202020202020206f6e486964653a2066756e6374696f6e202829207b7d2c0a2020202020202020646f437265617465456c656d656e744265666f72655469746c653a2066756e6374696f6e20286529207b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020742e636c6173734e616d65203d202767616d657061642d67726964273b0a20202020202020202020746869732e6164644e616d6543656c6c28742c202747616d657061643a27293b0a20202020202020202020746869732e7061644964203d20746869732e61646456616c756543656c6c2874293b0a20202020202020202020746869732e6164644e616d6543656c6c28742c20274d617070696e673a27293b0a202020202020202020204d0802746869732e7061644d617070696e67203d20746869732e61646456616c756543656c6c2874293b0a20202020202020202020652e617070656e644368696c642874293b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d2062742e70726f746f747970652e646f437265617465456c656d656e742e63616c6c2874686973293b0a202020202020202020207661722074203d20746869732e696e6e65723b0a20202020202020202020742e617070656e644368696c6428746869732e6c6566742e637265617465456c656d656e742829293b0a20202020202020202020742e617070656e644368696c6428746869732e72696768742e637265617465456c656d656e742829293b0a20202020202020202020742e617070656e644368696c6428746869732e75702e637265617465456c656d656e742829293b0a20202020202020202020742e617070656e644368696c6428746869732e646f776e2e637265617465456c656d656e742829293b0a20202020202020202020742e617070656e644368696c6428746869732e62312e637265617465456c656d656e742829293b0a20202020202020202020742e617070656e644368696c6428746869732e62322e637265617465456c656d656e742829293b0a2020202020204d08022020202072657475726e20653b0a20202020202020207d2c0a2020202020207d293b0a20202020202079742e70726f746f74797065203d204f626a6563742e6372656174652862742e70726f746f74797065293b0a20202020202070742879742e70726f746f747970652c207b0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e2062742e70726f746f747970652e676574436c6173732e63616c6c287468697329202b202720636f6e74726f6c6c65722d6b6579626f617264273b0a20202020202020207d2c0a20202020202020206f6e53686f773a2066756e6374696f6e2028652c207429207b0a20202020202020202020746869732e6d6170203d20743b0a20202020202020202020746869732e6b657973203d20653b0a20202020202020202020746869732e6c6566742e6f6e53686f7728652c20742e6765744c6566742829293b0a20202020202020202020746869732e72696768742e6f6e53686f7728652c20742e67657452696768742829293b0a20202020202020202020746869732e75702e6f6e53686f7728652c20742e67657455702829293b0a20202020202020202020746869732e646f776e2e6f6e53686f7728652c20742e676574446f776e2829293b0a20202020202020202020746869732e62312e6f6e53686f7728652c20742e676574424d08027574746f6e312829293b0a20202020202020202020746869732e62322e6f6e53686f7728652c20742e676574427574746f6e322829293b0a20202020202020207d2c0a20202020202020206f6e486964653a2066756e6374696f6e202829207b0a20202020202020202020666f7220287661722065203d20303b2065203c20746869732e746172676574732e6c656e6774683b20652b2b29207b0a202020202020202020202020746869732e746172676574735b655d2e6f6e4869646528293b0a202020202020202020207d0a20202020202020207d2c0a20202020202020206f6e4f6b3a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20746869732e6d61703b0a20202020202020202020652e736574557028746869732e75702e67657456616c75652829293b0a20202020202020202020652e7365744c65667428746869732e6c6566742e67657456616c75652829293b0a20202020202020202020652e736574526967687428746869732e72696768742e67657456616c75652829293b0a20202020202020202020652e736574446f776e28746869732e646f776e2e67657456616c75652829293b0a20202020202020202020652e736574427574746f6e3128746869732e62312e67657456616c75652829293b0a20202020202020202020652e736574427574746f6e3228746869732e62322e6765744d080256616c75652829293b0a20202020202020207d2c0a20202020202020206f6e44656661756c74733a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20746869732e6d61703b0a20202020202020202020746869732e75702e73657456616c756528652e67657444656661756c7455702829293b0a20202020202020202020746869732e6c6566742e73657456616c756528652e67657444656661756c744c6566742829293b0a20202020202020202020746869732e72696768742e73657456616c756528652e67657444656661756c7452696768742829293b0a20202020202020202020746869732e646f776e2e73657456616c756528652e67657444656661756c74446f776e2829293b0a20202020202020202020746869732e62312e73657456616c756528652e67657444656661756c74427574746f6e312829293b0a20202020202020202020746869732e62322e73657456616c756528652e67657444656661756c74427574746f6e322829293b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d2062742e70726f746f747970652e646f437265617465456c656d656e742e63616c6c2874686973293b0a20202020202020202020666f7220287661722074203d20303b2074204d08023c20746869732e746172676574732e6c656e6774683b20742b2b29207b0a202020202020202020202020746869732e696e6e65722e617070656e644368696c6428746869732e746172676574735b745d2e637265617465456c656d656e742829293b0a202020202020202020207d0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a2020202020207d293b0a20202020202078742e70726f746f74797065203d204f626a6563742e637265617465284c652e70726f746f74797065293b0a20202020202070742878742e70726f746f747970652c207b0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e2027636f6e736f6c655f5f627574746f6e20636f6e736f6c655f5f627574746f6e2d2d7570273b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020652e617070656e644368696c6428646f63756d656e742e637265617465546578744e6f646528746869732e7469746c6529293b0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a2020202020207d293b0a2020204d080220202041742e70726f746f74797065203d204f626a6563742e6372656174652878742e70726f746f74797065293b0a20202020202070742841742e70726f746f747970652c207b0a202020202020202067657456616c75653a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20746869732e7461726765742e67657456616c756528293b0a20202020202020207d2c0a202020202020202073657456616c75653a2066756e6374696f6e20286529207b0a20202020202020202020746869732e7461726765742e73657456616c75652865293b0a20202020202020207d2c0a20202020202020206f6e53686f773a2066756e6374696f6e2028652c207429207b0a20202020202020202020746869732e7461726765742e6f6e53686f7728652c2074293b0a20202020202020207d2c0a20202020202020206f6e486964653a2066756e6374696f6e202829207b0a20202020202020202020746869732e7461726765742e6f6e4869646528293b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d2078742e70726f746f747970652e646f437265617465456c656d656e742e63616c6c2874686973293b0a20202020202020202020652e617070656e644368696c6428746869732e746172674d080265742e637265617465456c656d656e742829293b0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a2020202020207d293b0a2020202020206b742e70726f746f74797065203d204f626a6563742e6372656174652878742e70726f746f74797065293b0a2020202020207074286b742e70726f746f747970652c207b0a20202020202020206f6e53686f773a2066756e6374696f6e202829207b0a20202020202020202020746869732e736574466f63757356697369626c652866616c7365293b0a20202020202020207d2c0a2020202020202020736574466f63757356697369626c653a2066756e6374696f6e20286529207b0a20202020202020202020746869732e656c2e636c6173734e616d65203d0a20202020202020202020202027636f6e736f6c655f5f627574746f6e20636f6e736f6c655f5f627574746f6e2d2d27202b202865203f2027646f776e27203a2027757027293b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a2020202020202020202072657475726e2078742e70726f746f747970652e646f437265617465456c656d656e742e63616c6c2874686973293b0a20202020202020207d2c0a2020202020207d293b0a20202020202053742e70726f746f74797065203d204f626a6563742e63726561744d080265284c652e70726f746f74797065293b0a20202020202070742853742e70726f746f747970652c207b0a20202020202020206372656174655061757365427574746f6e3a2066756e6374696f6e20286529207b7d2c0a202020202020202063726561746553656c656374427574746f6e3a2066756e6374696f6e20286529207b7d2c0a20202020202020206372656174655265736574427574746f6e3a2066756e6374696f6e20286529207b7d2c0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e2027636f6e736f6c65273b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020652e617070656e644368696c642874293b0a20202020202020202020742e636c6173734e616d65203d2027636f6e74726f6c6c65725f5f7469746c65273b0a20202020202020202020742e617070656e644368696c6428646f63756d656e742e637265617465546578744e6f64652827436f6e736f6c6520427574746f6e734d08022729293b0a20202020202020202020766172206e203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020652e617070656e644368696c64286e293b0a202020202020202020206e2e636c6173734e616d65203d2027636f6e736f6c655f5f696e6e6572273b0a202020202020202020206e2e617070656e644368696c6428746869732e73656c656374427574746f6e2e637265617465456c656d656e742829293b0a202020202020202020206e2e617070656e644368696c6428746869732e7265736574427574746f6e2e637265617465456c656d656e742829293b0a202020202020202020206e2e617070656e644368696c6428746869732e7061757365427574746f6e2e637265617465456c656d656e742829293b0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a2020202020207d293b0a20202020202043742e70726f746f74797065203d204f626a6563742e6372656174652853742e70726f746f74797065293b0a20202020202070742843742e70726f746f747970652c207b0a20202020202020206372656174655061757365427574746f6e3a2066756e6374696f6e20286529207b0a2020202020202020202072657475726e206e65772041742865293b0a20202020202020207d2c0a202020202020202063726561746553656c656374424d08027574746f6e3a2066756e6374696f6e20286529207b0a2020202020202020202072657475726e206e65772041742865293b0a20202020202020207d2c0a20202020202020206372656174655265736574427574746f6e3a2066756e6374696f6e20286529207b0a2020202020202020202072657475726e206e65772041742865293b0a20202020202020207d2c0a20202020202020206f6e53686f773a2066756e6374696f6e20286529207b0a202020202020202020207661722074203d2068742e4b6579626f6172643b0a20202020202020202020746869732e6b62203d20743b0a20202020202020202020746869732e7265736574427574746f6e2e6f6e53686f7728652c20742e67657452657365744b65792829293b0a20202020202020202020746869732e73656c656374427574746f6e2e6f6e53686f7728652c20742e67657453656c6563744b65792829293b0a20202020202020202020746869732e7061757365427574746f6e2e6f6e53686f7728652c20742e67657450617573654b65792829293b0a20202020202020207d2c0a20202020202020206f6e486964653a2066756e6374696f6e202829207b0a20202020202020202020666f7220287661722065203d20303b2065203c20746869732e627574746f6e732e6c656e6774683b20652b2b29207b0a202020202020202020202020746869732e627574746f6e735b655d4d08022e6f6e4869646528293b0a202020202020202020207d0a20202020202020207d2c0a20202020202020206f6e4f6b3a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20746869732e6b623b0a20202020202020202020652e73657452657365744b657928746869732e7265736574427574746f6e2e67657456616c75652829293b0a20202020202020202020652e73657453656c6563744b657928746869732e73656c656374427574746f6e2e67657456616c75652829293b0a20202020202020202020652e73657450617573654b657928746869732e7061757365427574746f6e2e67657456616c75652829293b0a20202020202020207d2c0a20202020202020206f6e44656661756c74733a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20746869732e6b623b0a20202020202020202020746869732e7265736574427574746f6e2e73657456616c756528652e64656652657365744b6579293b0a20202020202020202020746869732e73656c656374427574746f6e2e73657456616c756528652e64656653656c6563744b6579293b0a20202020202020202020746869732e7061757365427574746f6e2e73657456616c756528652e64656650617573654b6579293b0a20202020202020207d2c0a2020202020207d293b0a20202020202045742e70726f746f74794d08027065203d204f626a6563742e6372656174652853742e70726f746f74797065293b0a20202020202070742845742e70726f746f747970652c207b0a20202020202020206372656174655061757365427574746f6e3a2066756e6374696f6e20286529207b0a2020202020202020202072657475726e206e6577206b742865293b0a20202020202020207d2c0a202020202020202063726561746553656c656374427574746f6e3a2066756e6374696f6e20286529207b0a2020202020202020202072657475726e206e6577206b742865293b0a20202020202020207d2c0a20202020202020206372656174655265736574427574746f6e3a2066756e6374696f6e20286529207b0a2020202020202020202072657475726e206e6577206b742865293b0a20202020202020207d2c0a20202020202020207570646174653a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20746869732e6d617070696e673b0a20202020202020202020746869732e73656c656374427574746f6e2e736574466f63757356697369626c6528652e697353656c6563742829293b0a20202020202020202020746869732e7265736574427574746f6e2e736574466f63757356697369626c6528652e697352657365742829293b0a20202020202020202020746869732e7061757365427574746f6e2e736574466f637573566973694d0802626c6528652e697350617573652829293b0a20202020202020207d2c0a20202020202020206f6e53686f773a2066756e6374696f6e202829207b0a20202020202020202020746869732e6d617070696e67203d2068742e506164732e6765744d617070696e672830293b0a20202020202020202020666f7220287661722065203d20303b2065203c20746869732e627574746f6e732e6c656e6774683b20652b2b29207b0a202020202020202020202020746869732e627574746f6e735b655d2e6f6e53686f7728293b0a202020202020202020207d0a20202020202020207d2c0a2020202020207d293b0a202020202020766172205f74203d206e65772061742827446973706c617927293b0a2020202020207074285f742c207b0a202020202020202066696c7465725377697463683a206e756c6c2c0a202020202020202073697a6553656c6563743a206e756c6c2c0a2020202020202020617253656c6563743a206e756c6c2c0a202020202020202070616c53656c6563743a206e756c6c2c0a2020202020202020667353656c6563743a206e756c6c2c0a20202020202020206f6e53686f773a2066756e6374696f6e202829207b0a202020202020202020207661722065203d2068742e566964656f3b0a20202020202020202020746869732e766964203d20653b0a20202020202020202020746869732e66696c74657253776974634d0802682e73657456616c756528652e697346696c746572456e61626c65642829293b0a20202020202020202020746869732e73697a6553656c6563742e73657456616c756528652e67657453637265656e53697a6528292e746f537472696e672829293b0a20202020202020202020746869732e617253656c6563742e73657456616c756528652e67657453637265656e526174696f28292e746f537472696e672829293b0a20202020202020202020746869732e667353656c6563742e73657456616c756528652e67657446756c6c73637265656e4d6f646528292e746f537472696e672829293b0a20202020202020202020746869732e70616c53656c6563742e73657456616c75652868742e526567696f6e2e67657450616c65747465496e64657828292e746f537472696e672829293b0a20202020202020207d2c0a20202020202020206f6e4f6b3a2066756e6374696f6e202829207b0a20202020202020202020746869732e7669642e73657446696c746572456e61626c656428746869732e66696c7465725377697463682e67657456616c75652829293b0a20202020202020202020746869732e7669642e73657453637265656e53697a65287061727365466c6f617428746869732e73697a6553656c6563742e67657456616c7565282929293b0a20202020202020202020746869732e7669642e73657453637265656e526174696f4d0802287061727365466c6f617428746869732e617253656c6563742e67657456616c7565282929293b0a20202020202020202020746869732e7669642e73657446756c6c73637265656e4d6f6465287061727365496e7428746869732e667353656c6563742e67657456616c7565282929293b0a2020202020202020202068742e526567696f6e2e73657450616c65747465496e646578287061727365496e7428746869732e70616c53656c6563742e67657456616c7565282929293b0a20202020202020202020746869732e7669642e696e697450616c657474653828293b0a20202020202020207d2c0a20202020202020206f6e44656661756c74733a2066756e6374696f6e202829207b0a20202020202020202020746869732e66696c7465725377697463682e73657456616c756528746869732e7669642e67657446696c746572456e61626c656444656661756c742829293b0a20202020202020202020746869732e73697a6553656c6563742e73657456616c756528746869732e7669642e67657453637265656e53697a6544656661756c7428292e746f537472696e672829293b0a20202020202020202020746869732e617253656c6563742e73657456616c756528746869732e7669642e67657453637265656e526174696f44656661756c7428292e746f537472696e672829293b0a20202020202020202020746869732e70616c534d0802656c6563742e73657456616c7565280a20202020202020202020202068742e526567696f6e2e67657450616c65747465496e64657844656661756c7428292e746f537472696e6728290a20202020202020202020293b0a20202020202020202020746869732e667353656c6563742e73657456616c7565280a202020202020202020202020746869732e7669642e67657446756c6c73637265656e4d6f646544656661756c7428292e746f537472696e6728290a20202020202020202020293b0a20202020202020207d2c0a2020202020202020637265617465546162436f6e74656e743a2066756e6374696f6e20286529207b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020742e696e6e657248544d4c203d0a202020202020202020202020273c64697620636c6173733d22746162636f6e74656e745f5f7469746c65223e446973706c61792053657474696e67733c2f6469763e5c6e3c7020636c6173733d2263656e746572223e54686520666f6c6c6f77696e672073657474696e677320617265207573656420746f20636f6e74726f6c207468652073637265656e20646973706c61792e3c2f703e273b0a20202020202020202020652e617070656e644368696c642874293b0a20202020202020202020766172206e203d206e4d08026577206c7428293b0a202020202020202020206e2e61646443656c6c286e6577207374282753637265656e2073697a653a2729293b0a20202020202020202020746869732e73697a6553656c656374203d206e6577206474287b0a202020202020202020202020273278273a202732272c0a20202020202020202020202027322e323578273a2027322e3235272c0a20202020202020202020202027322e3578273a2027322e35272c0a20202020202020202020202027322e373578273a2027322e3735272c0a202020202020202020202020273378273a202733272c0a20202020202020202020202027332e323578273a2027332e3235272c0a20202020202020202020202027332e3578273a2027332e35272c0a20202020202020202020202027332e373578273a2027332e3735272c0a202020202020202020202020273478273a202734272c0a202020202020202020207d293b0a202020202020202020206e2e61646443656c6c286e657720757428746869732e73697a6553656c65637429293b0a202020202020202020206e2e61646443656c6c286e6577207374282741737065637420726174696f3a2729293b0a20202020202020202020746869732e617253656c656374203d206e6577206474287b0a20202020202020202020202027506978656c20706572666563742028313a312050415229273a202731272c0a20202020204d08022020202020202027417461726920373830302028363a372050415229273a2027302e383537272c0a202020202020202020202020275769646573637265656e202831363a3929273a2027312e333334272c0a20202020202020202020202027556c7472612d7769646573637265656e2028322e33373a3129273a2027312e373738272c0a202020202020202020207d293b0a202020202020202020206e2e61646443656c6c286e657720757428746869732e617253656c65637429293b0a202020202020202020206e2e61646443656c6c286e6577207374282746756c6c73637265656e3a2729293b0a20202020202020202020746869732e667353656c656374203d206e6577206474287b0a2020202020202020202020202746696c6c2073637265656e273a202730272c0a20202020202020202020202027496e7465676572207363616c696e67202868656967687429273a202731272c0a202020202020202020207d293b0a202020202020202020206e2e61646443656c6c286e657720757428746869732e667353656c65637429293b0a202020202020202020206e2e61646443656c6c286e6577207374282750616c657474653a2729293b0a20202020202020202020746869732e70616c53656c656374203d206e6577206474287b0a2020202020202020202020202750726f53797374656d2064656661756c74273a202730272c0a204d080220202020202020202020204f707447726f7570313a20274461726b272c0a20202020202020202020202027436f6f6c20284461726b29273a202731272c0a202020202020202020202020275761726d20284461726b29273a202732272c0a20202020202020202020202027486f7420284461726b29273a202733272c0a2020202020202020202020204f707447726f7570323a20274c69676874272c0a20202020202020202020202027436f6f6c20284c696768742920273a202734272c0a202020202020202020202020275761726d20284c696768742920273a202735272c0a20202020202020202020202027486f7420284c696768742920273a202736272c0a202020202020202020207d293b0a202020202020202020206e2e61646443656c6c286e657720757428746869732e70616c53656c65637429293b0a202020202020202020206e2e61646443656c6c286e657720737428274170706c792066696c7465723a2729293b0a20202020202020202020746869732e66696c746572537769746368203d206e65772063742827546f67676c652046696c74657227293b0a202020202020202020206e2e61646443656c6c286e657720757428746869732e66696c74657253776974636829293b0a20202020202020202020652e617070656e644368696c64286e2e637265617465456c656d656e742829293b0a20202020202020207d2c4d08020a2020202020207d293b0a202020202020766172204974203d206e65772061742827486967682053636f72657327293b0a20202020202070742849742c207b0a2020202020202020656e61626c655377697463683a206e756c6c2c0a20202020202020206c6f636174696f6e53656c6563743a206e756c6c2c0a202020202020202066616c6c6261636b5377697463683a206e756c6c2c0a2020202020202020646573633a206e756c6c2c0a20202020202020206f6e53686f773a2066756e6374696f6e202829207b0a20202020202020202020746869732e7570646174654465736328293b0a20202020202020202020746869732e656e61626c655377697463682e73657456616c75652866742e676574456e61626c65642829293b0a20202020202020202020746869732e6c6f636174696f6e53656c6563742e73657456616c75652866742e676574476c6f62616c2829203f20273127203a20273027293b0a20202020202020202020746869732e66616c6c6261636b5377697463682e73657456616c75652866742e69734c6f63616c46616c6c6261636b2829293b0a20202020202020202020746869732e656e61626c655377697463682e6f6e436c69636b28293b0a20202020202020207d2c0a20202020202020206f6e4f6b3a2066756e6374696f6e202829207b0a2020202020202020202066742e736574456e61626c65642874684d080269732e656e61626c655377697463682e67657456616c75652829293b0a2020202020202020202066742e736574476c6f62616c28746869732e6c6f636174696f6e53656c6563742e67657456616c75652829203d3d20273127293b0a2020202020202020202066742e7365744c6f63616c46616c6c6261636b28746869732e66616c6c6261636b5377697463682e67657456616c75652829293b0a20202020202020207d2c0a20202020202020206f6e44656661756c74733a2066756e6374696f6e202829207b0a20202020202020202020746869732e656e61626c655377697463682e73657456616c75652866742e676574456e61626c656444656661756c742829293b0a20202020202020202020746869732e6c6f636174696f6e53656c6563742e73657456616c75652866742e676574476c6f62616c44656661756c742829203f20273127203a20273027293b0a20202020202020202020746869732e66616c6c6261636b5377697463682e73657456616c75652866742e6765744c6f63616c46616c6c6261636b44656661756c742829293b0a20202020202020202020746869732e656e61626c655377697463682e6f6e436c69636b28293b0a20202020202020207d2c0a2020202020202020757064617465446573632829207b0a202020202020202020207661722065203d0a202020202020202020202020273c64697620636c61734d0802733d22746162636f6e74656e745f5f7469746c65223e486967682053636f72652053657474696e67733c2f6469763e5c6e3c7020636c6173733d2263656e746572223e54686520666f6c6c6f77696e672073657474696e677320636f6e74726f6c20686967682073636f72652070657273697374656e63652e3c2f703e273b0a202020202020202020206966202866742e676574446967657374282929207b0a20202020202020202020202065202b3d0a2020202020202020202020202020273c7020636c6173733d2263656e746572223e4368616e6765732077696c6c206e6f742074616b652065666665637420756e74696c20746865206e6578742067616d65206973206c6f616465642e3c2f703e273b0a202020202020202020207d0a20202020202020202020746869732e646573632e696e6e657248544d4c203d20653b0a20202020202020207d2c0a2020202020202020637265617465546162436f6e74656e743a2066756e6374696f6e20286529207b0a202020202020202020207661722074203d20746869733b0a20202020202020202020746869732e64657363203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020652e617070656e644368696c6428746869732e64657363293b0a20202020202020202020746869732e7570646174654465736328293b0a2020204d080220202020202020766172206e203d206e6577206c7428293b0a202020202020202020206e2e61646443656c6c286e65772073742827536176652073636f7265733a2729293b0a20202020202020202020746869732e656e61626c65537769746368203d206e65772063742827546f67676c652046696c74657227293b0a202020202020202020206e2e61646443656c6c286e657720757428746869732e656e61626c6553776974636829293b0a202020202020202020207661722072203d206e6577207374282753617665206c6f636174696f6e3a27293b0a202020202020202020206e2e61646443656c6c2872293b0a20202020202020202020746869732e6c6f636174696f6e53656c656374203d206e6577206474287b0a202020202020202020202020274c6f63616c20287468697320646576696365206f6e6c7929273a202730272c0a20202020202020202020202027476c6f62616c2028776f726c6477696465206c6561646572626f61726429273a202731272c0a202020202020202020207d293b0a20202020202020202020746869732e6c6f636174696f6e53656c6563742e7365745769647468283137293b0a202020202020202020207661722069203d206e657720757428746869732e6c6f636174696f6e53656c656374293b0a202020202020202020206e2e61646443656c6c2869293b0a202020202020202020207661724d0802206f203d206e657720737428274c6f63616c2066616c6c6261636b3a27293b0a202020202020202020206e2e61646443656c6c286f293b0a20202020202020202020746869732e66616c6c6261636b537769746368203d206e657720637428274c6f63616c2046616c6c6261636b27293b0a202020202020202020207661722061203d206e657720757428746869732e66616c6c6261636b537769746368293b0a202020202020202020206e2e61646443656c6c2861293b0a20202020202020202020652e617070656e644368696c64286e2e637265617465456c656d656e742829293b0a20202020202020202020746869732e656e61626c655377697463682e6f6e436c69636b203d2066756e6374696f6e202829207b0a2020202020202020202020207661722065203d20746869732e67657456616c756528293b0a202020202020202020202020722e73657456697369626c652865293b0a202020202020202020202020692e73657456697369626c652865293b0a202020202020202020202020742e6c6f636174696f6e53656c6563742e6f6e4368616e676528293b0a202020202020202020207d3b0a20202020202020202020746869732e6c6f636174696f6e53656c6563742e6f6e4368616e6765203d2066756e6374696f6e202829207b0a2020202020202020202020207661722065203d20746869732e67657456616c756528294d0802203d3d2027312720262620742e656e61626c655377697463682e67657456616c756528293b0a2020202020202020202020206f2e73657456697369626c652865293b0a202020202020202020202020612e73657456697369626c652865293b0a202020202020202020207d3b0a20202020202020207d2c0a2020202020207d293b0a202020202020766172204474203d206e6577206174282747616d657061647327293b0a20202020202070742844742c207b0a2020202020202020696e74657276616c49643a206e756c6c2c0a2020202020202020636f6e74726f6c6c6572313a206e65772076742827436f6e74726f6c6c65722031272c2030292c0a2020202020202020636f6e74726f6c6c6572323a206e65772076742827436f6e74726f6c6c65722032272c2031292c0a2020202020202020636f6e736f6c653a206e657720457428292c0a20202020202020206f6e53686f773a2066756e6374696f6e202829207b0a20202020202020202020746869732e636f6e74726f6c6c6572312e6f6e53686f7728293b0a20202020202020202020746869732e636f6e74726f6c6c6572322e6f6e53686f7728293b0a20202020202020202020746869732e636f6e736f6c652e6f6e53686f7728293b0a202020202020202020207661722065203d20746869733b0a20202020202020202020746869732e696e74657276616c4964203d2073654d080274496e74657276616c2866756e6374696f6e202829207b0a20202020202020202020202068742e506164732e706f6c6c28293b0a202020202020202020202020652e636f6e74726f6c6c6572312e75706461746528293b0a202020202020202020202020652e636f6e74726f6c6c6572322e75706461746528293b0a202020202020202020202020652e636f6e736f6c652e75706461746528293b0a202020202020202020207d2c203530293b0a20202020202020207d2c0a20202020202020206f6e486964653a2066756e6374696f6e202829207b0a2020202020202020202069662028746869732e696e74657276616c496420213d206e756c6c29207b0a202020202020202020202020636c656172496e74657276616c28746869732e696e74657276616c4964293b0a202020202020202020207d0a20202020202020207d2c0a2020202020202020637265617465546162436f6e74656e743a2066756e6374696f6e20286529207b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020742e696e6e657248544d4c203d0a202020202020202020202020273c64697620636c6173733d22746162636f6e74656e745f5f7469746c65223e47616d6570616420436f6d7061746962696c6974793c2f6469763e5c6e3c7020636c6173733d224d080263656e746572223e5468697320706167652070726f766964657320746865206162696c69747920746f203c6220636c6173733d2263616c6c6f7574223e7465737420636f6d7061746962696c6974793c2f623e207769746820636f6e6e65637465642067616d65706164732e3c2f703e5c6e3c7020636c6173733d2263656e746572223e436f6e6e6563742067616d657061647320616e642074657374206966207468657920617265206d617070656420636f72726563746c7920286279207072657373696e6720627574746f6e732c20442d7061642c206574632e292e3c2f703e273b0a20202020202020202020652e617070656e644368696c642874293b0a20202020202020202020766172206e203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020652e617070656e644368696c64286e293b0a202020202020202020206e2e636c6173734e616d65203d2027636f6e74726f6c732d636f6e7461696e6572273b0a202020202020202020206e2e617070656e644368696c6428746869732e636f6e74726f6c6c6572312e637265617465456c656d656e742829293b0a202020202020202020206e2e617070656e644368696c6428746869732e636f6e74726f6c6c6572322e637265617465456c656d656e742829293b0a20202020202020202020652e617070656e644368696c4d08026428746869732e636f6e736f6c652e637265617465456c656d656e742829293b0a20202020202020207d2c0a2020202020207d293b0a202020202020766172204274203d206e657720617428274b6579626f61726427293b0a20202020202070742842742c207b0a2020202020202020636f6e74726f6c6c6572313a206e65772079742827436f6e74726f6c6c6572203127292c0a2020202020202020636f6e74726f6c6c6572323a206e65772079742827436f6e74726f6c6c6572203227292c0a2020202020202020636f6e736f6c653a206e657720437428292c0a20202020202020206f6e53686f773a2066756e6374696f6e202829207b0a202020202020202020207661722065203d2068742e4b6579626f6172643b0a202020202020202020207661722074203d20652e70314b65794d61703b0a20202020202020202020766172206e203d20652e70324b65794d61703b0a202020202020202020207661722072203d2068742e4b6579732e4b6579733b0a20202020202020202020746869732e636f6e74726f6c6c6572312e6f6e53686f7728722c2074293b0a20202020202020202020746869732e636f6e74726f6c6c6572322e6f6e53686f7728722c206e293b0a20202020202020202020746869732e636f6e736f6c652e6f6e53686f772872293b0a20202020202020207d2c0a20202020202020206f6e4f6b3a2066756e63744d0802696f6e202829207b0a20202020202020202020746869732e636f6e74726f6c6c6572312e6f6e4f6b28293b0a20202020202020202020746869732e636f6e74726f6c6c6572322e6f6e4f6b28293b0a20202020202020202020746869732e636f6e736f6c652e6f6e4f6b28293b0a20202020202020207d2c0a20202020202020206f6e486964653a2066756e6374696f6e202829207b0a20202020202020202020746869732e636f6e74726f6c6c6572312e6f6e4869646528293b0a20202020202020202020746869732e636f6e74726f6c6c6572322e6f6e4869646528293b0a20202020202020202020746869732e636f6e736f6c652e6f6e4869646528293b0a20202020202020207d2c0a20202020202020206f6e44656661756c74733a2066756e6374696f6e202829207b0a20202020202020202020746869732e636f6e74726f6c6c6572312e6f6e44656661756c747328293b0a20202020202020202020746869732e636f6e74726f6c6c6572322e6f6e44656661756c747328293b0a20202020202020202020746869732e636f6e736f6c652e6f6e44656661756c747328293b0a20202020202020207d2c0a2020202020202020637265617465546162436f6e74656e743a2066756e6374696f6e20286529207b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e742827646976274d0802293b0a20202020202020202020742e696e6e657248544d4c203d0a202020202020202020202020273c64697620636c6173733d22746162636f6e74656e745f5f7469746c65223e4b6579626f617264204d617070696e67733c2f6469763e5c6e3c7020636c6173733d2263656e746572223e436c69636b206f6e20746865203c6220636c6173733d2263616c6c6f7574223e72656420626f783c2f623e206e656172206120636f6e74726f6c20746f2073656c65637420697420666f72206d617070696e672e3c2f703e5c6e3c7020636c6173733d2263656e746572223e4f6e63652073656c65637465642c20707265737320746865203c6220636c6173733d2263616c6c6f7574223e6b65793c2f623e20796f7520776f756c64206c696b6520746f206d617020746f2074686520636f6e74726f6c2e3c2f703e273b0a20202020202020202020652e617070656e644368696c642874293b0a20202020202020202020766172206e203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020652e617070656e644368696c64286e293b0a202020202020202020206e2e636c6173734e616d65203d2027636f6e74726f6c732d636f6e7461696e6572273b0a202020202020202020206e2e7374796c65203d20276d617267696e2d746f703a33357078273b0a202020202020202020206e2e4d0802617070656e644368696c6428746869732e636f6e74726f6c6c6572312e637265617465456c656d656e742829293b0a202020202020202020206e2e617070656e644368696c6428746869732e636f6e74726f6c6c6572322e637265617465456c656d656e742829293b0a20202020202020202020652e617070656e644368696c6428746869732e636f6e736f6c652e637265617465456c656d656e742829293b0a20202020202020207d2c0a2020202020207d293b0a202020202020766172204d74203d206e65772061742827416476616e63656427293b0a2020202020207074284d742c207b0a2020202020202020786d53656c6563743a206e756c6c2c0a20202020202020207673796e635377697463683a206e756c6c2c0a2020202020202020736b697053656c6563743a206e756c6c2c0a20202020202020206f6e53686f773a2066756e6374696f6e202829207b0a20202020202020202020746869732e786d53656c6563742e73657456616c75652867742e476574586d4d6f646528292e746f537472696e672829293b0a20202020202020202020746869732e7673796e635377697463682e73657456616c75652868742e4d61696e2e69735673796e63456e61626c65642829293b0a20202020202020202020746869732e736b697053656c6563742e73657456616c75652868742e4d61696e2e676574536b69704c6576656c28294d08022e746f537472696e672829293b0a20202020202020207d2c0a20202020202020206f6e4f6b3a2066756e6374696f6e202829207b0a2020202020202020202067742e536574586d4d6f6465287061727365496e7428746869732e786d53656c6563742e67657456616c7565282929293b0a2020202020202020202068742e4d61696e2e7365745673796e63456e61626c656428746869732e7673796e635377697463682e67657456616c75652829293b0a2020202020202020202068742e4d61696e2e736574536b69704c6576656c287061727365496e7428746869732e736b697053656c6563742e67657456616c7565282929293b0a20202020202020207d2c0a20202020202020206f6e44656661756c74733a2066756e6374696f6e202829207b0a20202020202020202020746869732e786d53656c6563742e73657456616c75652867742e476574586d4d6f646544656661756c7428292e746f537472696e672829293b0a20202020202020202020746869732e7673796e635377697463682e73657456616c75652868742e4d61696e2e6765745673796e63456e61626c656444656661756c742829293b0a20202020202020202020746869732e736b697053656c6563742e73657456616c75652868742e4d61696e2e676574536b69704c6576656c44656661756c7428292e746f537472696e672829293b0a20202020202020207d2c0a4d08022020202020202020637265617465546162436f6e74656e743a2066756e6374696f6e20286529207b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020742e696e6e657248544d4c203d0a202020202020202020202020273c64697620636c6173733d22746162636f6e74656e745f5f7469746c65223e416476616e6365643c2f6469763e5c6e3c7020636c6173733d2263656e746572223e54686520666f6c6c6f77696e672073657474696e67732070726f7669646520746865206162696c69747920746f20636f6e66696775726520616476616e6365642066656174757265732e3c2f703e273b0a20202020202020202020652e617070656e644368696c642874293b0a20202020202020202020766172206e203d206e6577206c7428293b0a202020202020202020207661722072203d206e65772073742827457870616e73696f6e206d6f64756c652028584d293a27293b0a202020202020202020206e2e61646443656c6c2872293b0a20202020202020202020746869732e786d53656c656374203d206e6577206474287b0a20202020202020202020202027284175746f6d6174696329273a202732272c0a202020202020202020202020456e61626c65643a202731272c0a20202020202020202020202044697361626c65643a204d08022730272c0a202020202020202020207d293b0a202020202020202020207661722069203d206e657720757428746869732e786d53656c656374293b0a202020202020202020206e2e61646443656c6c2869293b0a202020202020202020206e2e61646443656c6c286e657720737428274672616d6520736b697070696e673a2729293b0a20202020202020202020746869732e736b697053656c656374203d206e6577206474287b0a20202020202020202020202027284e6f6e6529273a202730272c0a2020202020202020202020204c6f773a202731272c0a202020202020202020202020274d656469756d202835302529273a202732272c0a202020202020202020202020486967683a202733272c0a202020202020202020207d293b0a202020202020202020206e2e61646443656c6c286e657720757428746869732e736b697053656c65637429293b0a202020202020202020206e2e61646443656c6c286e65772073742827566572746963616c2073796e633a2729293b0a20202020202020202020746869732e7673796e63537769746368203d206e65772063742827566572746963616c2053796e6327293b0a202020202020202020206e2e61646443656c6c286e657720757428746869732e7673796e6353776974636829293b0a20202020202020202020652e617070656e644368696c64286e2e637265617465456c656d656e4d0802742829293b0a20202020202020207d2c0a2020202020207d293b0a202020202020766172205474203d206e6577206f7428293b0a20202020202054742e616464546162285f74293b0a20202020202054742e6164645461622842742c2074727565293b0a20202020202054742e616464546162284474293b0a20202020202054742e616464546162284974293b0a20202020202054742e616464546162284d74293b0a20202020202052742e70726f746f74797065203d204f626a6563742e6372656174652869742e70726f746f74797065293b0a20202020202070742852742e70726f746f747970652c207b0a202020202020202073656c6563744b6579626f6172645461622829207b0a20202020202020202020746869732e67657454616253657428292e6f6e546162436c69636b284274293b0a20202020202020207d2c0a20202020202020206765745461625365743a2066756e6374696f6e202829207b0a2020202020202020202072657475726e2054743b0a20202020202020207d2c0a20202020202020206f6e4f6b3a2066756e6374696f6e202829207b0a2020202020202020202069742e70726f746f747970652e6f6e4f6b2e63616c6c2874686973293b0a202020202020202020205a28293b0a20202020202020207d2c0a2020202020207d293b0a20202020202064280a20202020202020206e65772063282773697465494d08026e6974272c2066756e6374696f6e20286529207b0a202020202020202020206874203d20652e6a73373830303b0a202020202020202020206674203d20652e4869676853636f72653b0a202020202020202020206774203d2068742e4361727472696467653b0a20202020202020207d290a202020202020293b0a202020202020766172204774203d2071653b0a202020202020766172204c74203d2057653b0a202020202020766172205174203d2056653b0a202020202020766172207a74203d20663b0a20202020202046742e70726f746f74797065203d204f626a6563742e6372656174652851742e70726f746f74797065293b0a2020202020207a742846742e70726f746f747970652c207b0a2020202020202020726f6f743a206e756c6c2c0a2020202020202020706172656e743a206e756c6c2c0a20202020202020206c6f616465643a2066616c73652c0a20202020202020206f6e54616253686f773a2066756e6374696f6e202829207b0a202020202020202020206966202821746869732e6c6f6164656429207b0a2020202020202020202020207661722065203d20746869733b0a2020202020202020202020207661722074203d2066756e6374696f6e20287429207b0a2020202020202020202020202020766172206e203d2027416e206572726f72206f6363757272656420617474656d7074696e6720746f206c6f614d08026420706167653a2027202b20652e75726c3b0a2020202020202020202020202020696620287429207b0a202020202020202020202020202020206e202b3d2027202827202b2074202b202729273b0a20202020202020202020202020207d0a202020202020202020202020202075282773686f774572726f72272c206e293b0a2020202020202020202020207d3b0a202020202020202020202020766172206e203d206e657720584d4c487474705265717565737428293b0a2020202020202020202020206e2e6f70656e2827474554272c20746869732e75726c293b0a2020202020202020202020206e2e6f6e6c6f6164203d2066756e6374696f6e202829207b0a2020202020202020202020202020696620286e2e737461747573203d3d2032303029207b0a20202020202020202020202020202020652e6c6f61646564203d20747275653b0a20202020202020202020202020202020652e706172656e742e636c6173734c6973742e72656d6f766528276c6f616465722d636f6e7461696e657227293b0a20202020202020202020202020202020652e706172656e742e7374796c652e646973706c6179203d20276e6f6e65273b0a20202020202020202020202020202020652e706172656e742e696e6e657248544d4c203d206e2e726573706f6e7365546578743b0a2020202020202020202020202020202073657454696d656f75744d08022866756e6374696f6e202829207b0a202020202020202020202020202020202020652e706172656e742e7374796c652e646973706c6179203d2027626c6f636b273b0a202020202020202020202020202020207d2c20313030293b0a20202020202020202020202020207d20656c7365207b0a2020202020202020202020202020202074286e2e737461747573202b20273a2027202b206e2e73746174757354657874293b0a20202020202020202020202020207d0a2020202020202020202020207d3b0a2020202020202020202020206e2e6f6e6572726f72203d2066756e6374696f6e202829207b0a20202020202020202020202020207428293b0a2020202020202020202020207d3b0a20202020202020202020202073657454696d656f75742866756e6374696f6e202829207b0a20202020202020202020202020206e2e73656e6428293b0a2020202020202020202020207d2c20353030293b0a202020202020202020207d0a20202020202020207d2c0a2020202020202020637265617465546162436f6e74656e743a2066756e6374696f6e20286529207b0a20202020202020202020746869732e726f6f74203d20653b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020746869732e706172656e74203d20743b0a202020204d0802202020202020742e636c6173734e616d65203d20276c6f616465722d636f6e7461696e6572273b0a20202020202020202020766172206e203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a202020202020202020206e2e636c6173734e616d65203d20276c6f61646572273b0a20202020202020202020742e617070656e644368696c64286e293b0a20202020202020202020652e617070656e644368696c642874293b0a20202020202020207d2c0a2020202020207d293b0a202020202020766172204e74203d206e657720467428274f76657276696577272c202768656c702f6f766572766965772e68746d6c27293b0a202020202020766172205574203d206e6577204674282743617274726964676573272c202768656c702f63617274732e68746d6c27293b0a202020202020766172204b74203d206e65772046742827436f6e74726f6c7320426172272c202768656c702f636261722e68746d6c27293b0a202020202020766172205974203d206e6577204674282753657474696e6773204469616c6f67272c202768656c702f73657474696e67732e68746d6c27293b0a202020202020766172204f74203d206e65772046742827486967682053636f726573272c202768656c702f6869676873636f7265732e68746d6c27293b0a202020202020766172206a74203d206e6577204c7428293b4d08020a2020202020206a742e616464546162286e657720727428292c2074727565293b0a2020202020206a742e616464546162284e74293b0a2020202020206a742e616464546162285574293b0a2020202020206a742e616464546162284b74293b0a2020202020206a742e616464546162285974293b0a2020202020206a742e616464546162284f74293b0a20202020202050742e70726f746f74797065203d204f626a6563742e6372656174652847742e70726f746f74797065293b0a2020202020207a742850742e70726f746f747970652c207b0a20202020202020206373734c6f616465643a2066616c73652c0a20202020202020206765745461625365743a2066756e6374696f6e202829207b0a2020202020202020202072657475726e206a743b0a20202020202020207d2c0a20202020202020206f6e53686f773a2066756e6374696f6e202829207b0a202020202020202020206966202821746869732e6373734c6f6164656429207b0a202020202020202020202020746869732e6373734c6f61646564203d20747275653b0a2020202020202020202020207661722065203d20646f63756d656e742e637265617465456c656d656e7428276c696e6b27293b0a202020202020202020202020652e74797065203d2027746578742f637373273b0a202020202020202020202020652e72656c203d20277374796c657368656574274d08023b0a202020202020202020202020652e68726566203d202768656c702f6373732f68656c702e637373273b0a202020202020202020202020646f63756d656e742e686561642e617070656e644368696c642865293b0a202020202020202020207d0a2020202020202020202047742e70726f746f747970652e6f6e53686f772e63616c6c2874686973293b0a20202020202020207d2c0a2020202020207d293b0a202020202020722832293b0a202020202020722836293b0a202020202020722e64286e2c2027696e6974272c2066756e6374696f6e202829207b0a202020202020202072657475726e206c6e3b0a2020202020207d293b0a202020202020766172204874203d20423b0a202020202020766172205774203d204d3b0a202020202020766172205674203d20543b0a202020202020766172207174203d2066756e6374696f6e20286529207b0a2020202020202020696620280a202020202020202020202865203d206e65772052656745787028275b3f265d27202b20656e636f6465555249436f6d706f6e656e74286529202b20273d285b5e265d2a2927292e65786563280a2020202020202020202020206c6f636174696f6e2e7365617263680a2020202020202020202029290a202020202020202029207b0a2020202020202020202072657475726e206465636f6465555249436f6d706f6e656e7428655b315d293b0a204d0802202020202020207d0a2020202020207d3b0a202020202020766172204a74203d2066756e6374696f6e20286529207b0a2020202020202020696620280a202020202020202020202865203d206e65772052656745787028275b3f265d27202b20656e636f6465555249436f6d706f6e656e74286529202b20273d282e2a2927292e65786563280a2020202020202020202020206c6f636174696f6e2e7365617263680a2020202020202020202029290a202020202020202029207b0a2020202020202020202072657475726e206465636f6465555249436f6d706f6e656e7428655b315d293b0a20202020202020207d0a2020202020207d3b0a202020202020766172205a74203d2066616c73653b0a202020202020766172205874203d2066616c73653b0a202020202020766172202474203d206e756c6c3b0a20202020202076617220656e203d206e756c6c3b0a20202020202076617220746e203d2066756e6374696f6e2028652c207429207b0a20202020202020206966202874203d3d206e756c6c29207b0a2020202020202020202074203d20747275653b0a20202020202020207d0a2020202020202020696620287429207b0a20202020202020202020636f6e736f6c652e6572726f722865293b0a20202020202020207d0a202020202020202056742865293b0a2020202020207d3b0a20202020202076617220726e203d206e752a6c6c3b0a202020202020766172206f6e203d206e756c6c3b0a202020207d2c0a20205d293b0a7d293b0a6820c67322d2c392555260f6702124058bb778803d601e95234cc5d744ca8f809328ac0063036f726401010f746578742f6a617661736372697074004d08022866756e6374696f6e2028652c207429207b0a202069662028747970656f66206578706f727473203d3d20276f626a6563742720262620747970656f66206d6f64756c65203d3d20276f626a6563742729207b0a202020206d6f64756c652e6578706f727473203d207428293b0a20207d20656c73652069662028747970656f6620646566696e65203d3d202766756e6374696f6e2720262620646566696e652e616d6429207b0a20202020646566696e65282773697465272c205b5d2c2074293b0a20207d20656c73652069662028747970656f66206578706f727473203d3d20276f626a6563742729207b0a202020206578706f7274732e73697465203d207428293b0a20207d20656c7365207b0a20202020652e73697465203d207428293b0a20207d0a7d292877696e646f772c2066756e6374696f6e202829207b0a202072657475726e202866756e6374696f6e20286529207b0a2020202066756e6374696f6e206e287229207b0a20202020202069662028745b725d29207b0a202020202020202072657475726e20745b725d2e6578706f7274733b0a2020202020207d0a2020202020207661722069203d2028745b725d203d207b20693a20722c206c3a2066616c73652c206578706f7274733a207b7d207d293b0a202020202020655b725d2e63616c6c28692e6578706f7274732c20692c20692e6578706f7274732c206e293b4d08020a202020202020692e6c203d20747275653b0a20202020202072657475726e20692e6578706f7274733b0a202020207d0a202020207661722074203d207b7d3b0a202020206e2e6d203d20653b0a202020206e2e63203d20743b0a202020206e2e64203d2066756e6374696f6e2028652c20742c207229207b0a20202020202069662028216e2e6f28652c20742929207b0a20202020202020204f626a6563742e646566696e6550726f706572747928652c20742c207b20656e756d657261626c653a20747275652c206765743a2072207d293b0a2020202020207d0a202020207d3b0a202020206e2e72203d2066756e6374696f6e20286529207b0a20202020202069662028747970656f662053796d626f6c20213d2027756e646566696e6564272026262053796d626f6c2e746f537472696e6754616729207b0a20202020202020204f626a6563742e646566696e6550726f706572747928652c2053796d626f6c2e746f537472696e675461672c207b2076616c75653a20274d6f64756c6527207d293b0a2020202020207d0a2020202020204f626a6563742e646566696e6550726f706572747928652c20275f5f65734d6f64756c65272c207b2076616c75653a2074727565207d293b0a202020207d3b0a202020206e2e74203d2066756e6374696f6e2028652c207429207b0a20202020202069662028312026207429207b0a2020204d0802202020202065203d206e2865293b0a2020202020207d0a20202020202069662028382026207429207b0a202020202020202072657475726e20653b0a2020202020207d0a20202020202069662028342026207420262620747970656f662065203d3d20276f626a65637427202626206520262620652e5f5f65734d6f64756c6529207b0a202020202020202072657475726e20653b0a2020202020207d0a2020202020207661722072203d204f626a6563742e637265617465286e756c6c293b0a2020202020206e2e722872293b0a2020202020204f626a6563742e646566696e6550726f706572747928722c202764656661756c74272c207b20656e756d657261626c653a20747275652c2076616c75653a2065207d293b0a20202020202069662028322026207420262620747970656f66206520213d2027737472696e672729207b0a2020202020202020666f722028766172206920696e206529207b0a202020202020202020206e2e64280a202020202020202020202020722c0a202020202020202020202020692c0a20202020202020202020202066756e6374696f6e20287429207b0a202020202020202020202020202072657475726e20655b745d3b0a2020202020202020202020207d2e62696e64286e756c6c2c2069290a20202020202020202020293b0a20202020202020207d0a2020202020207d0a202020202020726574754d0802726e20723b0a202020207d3b0a202020206e2e6e203d2066756e6374696f6e20286529207b0a2020202020207661722074203d0a20202020202020206520262620652e5f5f65734d6f64756c650a202020202020202020203f2066756e6374696f6e202829207b0a202020202020202020202020202072657475726e20652e64656661756c743b0a2020202020202020202020207d0a202020202020202020203a2066756e6374696f6e202829207b0a202020202020202020202020202072657475726e20653b0a2020202020202020202020207d3b0a2020202020206e2e6428742c202761272c2074293b0a20202020202072657475726e20743b0a202020207d3b0a202020206e2e6f203d2066756e6374696f6e2028652c207429207b0a20202020202072657475726e204f626a6563742e70726f746f747970652e6861734f776e50726f70657274792e63616c6c28652c2074293b0a202020207d3b0a202020206e2e70203d2027273b0a2020202072657475726e206e28286e2e73203d203829293b0a20207d29285b0a2020202066756e6374696f6e2028652c20742c206e29207b0a2020202020202775736520737472696374273b0a20202020202066756e6374696f6e206c286529207b0a20202020202020207661722074203d202d313b0a2020202020202020666f722028766172206e203d20303b206e203c20612e6c656e67744d0802683b206e2b2b29207b0a2020202020202020202069662028615b6e5d2e6964656e746966696572203d3d3d206529207b0a20202020202020202020202074203d206e3b0a202020202020202020202020627265616b3b0a202020202020202020207d0a20202020202020207d0a202020202020202072657475726e20743b0a2020202020207d0a20202020202066756e6374696f6e207328652c207429207b0a2020202020202020766172206e203d207b7d3b0a20202020202020207661722072203d205b5d3b0a2020202020202020666f7220287661722069203d20303b2069203c20652e6c656e6774683b20692b2b29207b0a20202020202020202020766172206f203d20655b695d3b0a202020202020202020207661722073203d20742e62617365203f206f5b305d202b20742e62617365203a206f5b305d3b0a202020202020202020207661722063203d206e5b735d207c7c20303b0a202020202020202020207661722064203d2027272e636f6e63617428732c20272027292e636f6e6361742863293b0a202020202020202020206e5b735d203d2063202b20313b0a202020202020202020207661722075203d206c2864293b0a202020202020202020207661722070203d207b206373733a206f5b315d2c206d656469613a206f5b325d2c20736f757263654d61703a206f5b335d207d3b0a2020202020202020202069662028754d0802203d3d3d202d3129207b0a202020202020202020202020612e70757368287b206964656e7469666965723a20642c20757064617465723a206d28702c2074292c207265666572656e6365733a2031207d293b0a202020202020202020207d20656c7365207b0a202020202020202020202020615b755d2e7265666572656e6365732b2b3b0a202020202020202020202020615b755d2e757064617465722870293b0a202020202020202020207d0a20202020202020202020722e707573682864293b0a20202020202020207d0a202020202020202072657475726e20723b0a2020202020207d0a20202020202066756e6374696f6e2063286529207b0a20202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e7428277374796c6527293b0a20202020202020207661722072203d20652e61747472696275746573207c7c207b7d3b0a202020202020202069662028722e6e6f6e6365203d3d3d20766f6964203029207b0a202020202020202020207661722069203d206e2e6e633b0a20202020202020202020696620286929207b0a202020202020202020202020722e6e6f6e6365203d20693b0a202020202020202020207d0a20202020202020207d0a20202020202020204f626a6563742e6b6579732872292e666f72456163682866756e6374696f6e20286529207b0a20202020202020202020742e4d080273657441747472696275746528652c20725b655d293b0a20202020202020207d293b0a202020202020202069662028747970656f6620652e696e73657274203d3d202766756e6374696f6e2729207b0a20202020202020202020652e696e736572742874293b0a20202020202020207d20656c7365207b0a202020202020202020207661722061203d206f28652e696e73657274207c7c20276865616427293b0a2020202020202020202069662028216129207b0a2020202020202020202020207468726f77206e6577204572726f72280a202020202020202020202020202022436f756c646e27742066696e642061207374796c65207461726765742e20546869732070726f6261626c79206d65616e732074686174207468652076616c756520666f72207468652027696e736572742720706172616d6574657220697320696e76616c69642e220a202020202020202020202020293b0a202020202020202020207d0a20202020202020202020612e617070656e644368696c642874293b0a20202020202020207d0a202020202020202072657475726e20743b0a2020202020207d0a20202020202066756e6374696f6e207028652c20742c206e2c207229207b0a20202020202020207661722069203d206e0a202020202020202020203f2027270a202020202020202020203a20722e6d656469610a202020202020202020203f2027406d4d08026564696120272e636f6e63617428722e6d656469612c2027207b27292e636f6e63617428722e6373732c20277d27290a202020202020202020203a20722e6373733b0a202020202020202069662028652e7374796c65536865657429207b0a20202020202020202020652e7374796c6553686565742e63737354657874203d207528742c2069293b0a20202020202020207d20656c7365207b0a20202020202020202020766172206f203d20646f63756d656e742e637265617465546578744e6f64652869293b0a202020202020202020207661722061203d20652e6368696c644e6f6465733b0a2020202020202020202069662028615b745d29207b0a202020202020202020202020652e72656d6f76654368696c6428615b745d293b0a202020202020202020207d0a2020202020202020202069662028612e6c656e67746829207b0a202020202020202020202020652e696e736572744265666f7265286f2c20615b745d293b0a202020202020202020207d20656c7365207b0a202020202020202020202020652e617070656e644368696c64286f293b0a202020202020202020207d0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e206828652c20742c206e29207b0a20202020202020207661722072203d206e2e6373733b0a20202020202020207661722069203d206e2e6d656469613b0a2020204d08022020202020766172206f203d206e2e736f757263654d61703b0a2020202020202020696620286929207b0a20202020202020202020652e73657441747472696275746528276d65646961272c2069293b0a20202020202020207d20656c7365207b0a20202020202020202020652e72656d6f766541747472696275746528276d6564696127293b0a20202020202020207d0a2020202020202020696620286f2026262062746f6129207b0a2020202020202020202072202b3d20275c6e2f2a2320736f757263654d617070696e6755524c3d646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c272e636f6e636174280a20202020202020202020202062746f6128756e65736361706528656e636f6465555249436f6d706f6e656e74284a534f4e2e737472696e67696679286f292929292c0a20202020202020202020202027202a2f270a20202020202020202020293b0a20202020202020207d0a202020202020202069662028652e7374796c65536865657429207b0a20202020202020202020652e7374796c6553686565742e63737354657874203d20723b0a20202020202020207d20656c7365207b0a202020202020202020207768696c652028652e66697273744368696c6429207b0a202020202020202020202020652e72656d6f76654368696c6428652e66697273744368696c64293b0a20202020202020204d080220207d0a20202020202020202020652e617070656e644368696c6428646f63756d656e742e637265617465546578744e6f6465287229293b0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e206d28652c207429207b0a2020202020202020766172206e3b0a202020202020202076617220723b0a202020202020202076617220693b0a202020202020202069662028742e73696e676c65746f6e29207b0a20202020202020202020766172206f203d20672b2b3b0a202020202020202020206e203d2066207c7c202866203d2063287429293b0a2020202020202020202072203d20702e62696e64286e756c6c2c206e2c206f2c2066616c7365293b0a2020202020202020202069203d20702e62696e64286e756c6c2c206e2c206f2c2074727565293b0a20202020202020207d20656c7365207b0a202020202020202020206e203d20632874293b0a2020202020202020202072203d20682e62696e64286e756c6c2c206e2c2074293b0a2020202020202020202069203d2066756e6374696f6e202829207b0a2020202020202020202020207661722065203d206e3b0a20202020202020202020202069662028652e706172656e744e6f6465203d3d3d206e756c6c29207b0a202020202020202020202020202072657475726e3b0a2020202020202020202020207d0a202020202020202020202020652e4d0802706172656e744e6f64652e72656d6f76654368696c642865293b0a202020202020202020207d3b0a20202020202020207d0a2020202020202020722865293b0a202020202020202072657475726e2066756e6374696f6e20287429207b0a20202020202020202020696620287429207b0a202020202020202020202020696620280a2020202020202020202020202020742e637373203d3d3d20652e6373732026260a2020202020202020202020202020742e6d65646961203d3d3d20652e6d656469612026260a2020202020202020202020202020742e736f757263654d6170203d3d3d20652e736f757263654d61700a20202020202020202020202029207b0a202020202020202020202020202072657475726e3b0a2020202020202020202020207d0a20202020202020202020202072282865203d207429293b0a202020202020202020207d20656c7365207b0a2020202020202020202020206928293b0a202020202020202020207d0a20202020202020207d3b0a2020202020207d0a20202020202076617220723b0a2020202020207661722069203d2066756e6374696f6e202829207b0a20202020202020206966202872203d3d3d20766f6964203029207b0a2020202020202020202072203d20426f6f6c65616e2877696e646f7720262620646f63756d656e7420262620646f63756d656e742e616c6c202626202177696e646f4d0802772e61746f62293b0a20202020202020207d0a202020202020202072657475726e20723b0a2020202020207d3b0a202020202020766172206f203d202866756e6374696f6e202829207b0a20202020202020207661722065203d207b7d3b0a202020202020202072657475726e2066756e6374696f6e20287429207b0a2020202020202020202069662028655b745d203d3d3d20766f6964203029207b0a202020202020202020202020766172206e203d20646f63756d656e742e717565727953656c6563746f722874293b0a202020202020202020202020696620280a202020202020202020202020202077696e646f772e48544d4c494672616d65456c656d656e742026260a20202020202020202020202020206e20696e7374616e63656f662077696e646f772e48544d4c494672616d65456c656d656e740a20202020202020202020202029207b0a2020202020202020202020202020747279207b0a202020202020202020202020202020206e203d206e2e636f6e74656e74446f63756d656e742e686561643b0a20202020202020202020202020207d20636174636820286529207b0a202020202020202020202020202020206e203d206e756c6c3b0a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020202020655b745d203d206e3b0a202020202020202020207d0a2020202020204d08022020202072657475726e20655b745d3b0a20202020202020207d3b0a2020202020207d2928293b0a2020202020207661722061203d205b5d3b0a2020202020207661722064203d205b5d3b0a2020202020207661722075203d2066756e6374696f6e2028652c207429207b0a2020202020202020645b655d203d20743b0a202020202020202072657475726e20642e66696c74657228426f6f6c65616e292e6a6f696e28275c6e27293b0a2020202020207d3b0a2020202020207661722066203d206e756c6c3b0a2020202020207661722067203d20303b0a202020202020652e6578706f727473203d2066756e6374696f6e2028652c207429207b0a202020202020202069662028212874203d2074207c7c207b7d292e73696e676c65746f6e20262620747970656f6620742e73696e676c65746f6e20213d2027626f6f6c65616e2729207b0a20202020202020202020742e73696e676c65746f6e203d206928293b0a20202020202020207d0a2020202020202020766172206e203d2073282865203d2065207c7c205b5d292c2074293b0a202020202020202072657475726e2066756e6374696f6e20286529207b0a2020202020202020202065203d2065207c7c205b5d3b0a20202020202020202020696620284f626a6563742e70726f746f747970652e746f537472696e672e63616c6c286529203d3d3d20275b6f626a6563742041724d08027261795d2729207b0a202020202020202020202020666f7220287661722072203d20303b2072203c206e2e6c656e6774683b20722b2b29207b0a20202020202020202020202020207661722069203d206c286e5b725d293b0a2020202020202020202020202020615b695d2e7265666572656e6365732d2d3b0a2020202020202020202020207d0a202020202020202020202020766172206f203d207328652c2074293b0a202020202020202020202020666f7220287661722063203d20303b2063203c206e2e6c656e6774683b20632b2b29207b0a20202020202020202020202020207661722064203d206c286e5b635d293b0a202020202020202020202020202069662028615b645d2e7265666572656e636573203d3d3d203029207b0a20202020202020202020202020202020615b645d2e7570646174657228293b0a20202020202020202020202020202020612e73706c69636528642c2031293b0a20202020202020202020202020207d0a2020202020202020202020207d0a2020202020202020202020206e203d206f3b0a202020202020202020207d0a20202020202020207d3b0a2020202020207d3b0a202020207d2c0a2020202066756e6374696f6e2028652c20742c206e29207b0a2020202020202775736520737472696374273b0a202020202020652e6578706f727473203d2066756e6374696f6e20286529207b0a20204d08022020202020207661722074203d205b5d3b0a2020202020202020742e746f537472696e67203d2066756e6374696f6e202829207b0a2020202020202020202072657475726e20746869732e6d61702866756e6374696f6e20287429207b0a202020202020202020202020766172206e203d202866756e6374696f6e2028652c207429207b0a2020202020202020202020202020766172206e203d20655b315d207c7c2027273b0a20202020202020202020202020207661722072203d20655b335d3b0a202020202020202020202020202069662028217229207b0a2020202020202020202020202020202072657475726e206e3b0a20202020202020202020202020207d0a2020202020202020202020202020696620287420262620747970656f662062746f61203d3d202766756e6374696f6e2729207b0a2020202020202020202020202020202061203d20723b0a202020202020202020202020202020206c203d2062746f6128756e65736361706528656e636f6465555249436f6d706f6e656e74284a534f4e2e737472696e676966792861292929293b0a2020202020202020202020202020202073203d0a20202020202020202020202020202020202027736f757263654d617070696e6755524c3d646174613a6170706c69636174696f6e2f6a736f6e3b636861727365743d7574662d383b6261736536342c272e636f6e636174280a4d080220202020202020202020202020202020202020206c0a202020202020202020202020202020202020293b0a202020202020202020202020202020207661722069203d20272f2a2320272e636f6e63617428732c2027202a2f27293b0a20202020202020202020202020202020766172206f203d20722e736f75726365732e6d61702866756e6374696f6e20286529207b0a20202020202020202020202020202020202072657475726e20272f2a2320736f7572636555524c3d270a20202020202020202020202020202020202020202e636f6e63617428722e736f75726365526f6f74207c7c202727290a20202020202020202020202020202020202020202e636f6e63617428652c2027202a2f27293b0a202020202020202020202020202020207d293b0a2020202020202020202020202020202072657475726e205b6e5d2e636f6e636174286f292e636f6e636174285b695d292e6a6f696e28275c6e27293b0a20202020202020202020202020207d0a202020202020202020202020202076617220613b0a2020202020202020202020202020766172206c3b0a202020202020202020202020202076617220733b0a202020202020202020202020202072657475726e205b6e5d2e6a6f696e28275c6e27293b0a2020202020202020202020207d2928742c2065293b0a20202020202020202020202069662028745b325d29207b0a2020204d0802202020202020202020202072657475726e2027406d6564696120272e636f6e63617428745b325d2c2027207b27292e636f6e636174286e2c20277d27293b0a2020202020202020202020207d20656c7365207b0a202020202020202020202020202072657475726e206e3b0a2020202020202020202020207d0a202020202020202020207d292e6a6f696e282727293b0a20202020202020207d3b0a2020202020202020742e69203d2066756e6374696f6e2028652c206e2c207229207b0a2020202020202020202069662028747970656f662065203d3d2027737472696e672729207b0a20202020202020202020202065203d205b5b6e756c6c2c20652c2027275d5d3b0a202020202020202020207d0a202020202020202020207661722069203d207b7d3b0a20202020202020202020696620287229207b0a202020202020202020202020666f722028766172206f203d20303b206f203c20746869732e6c656e6774683b206f2b2b29207b0a20202020202020202020202020207661722061203d20746869735b6f5d5b305d3b0a2020202020202020202020202020696620286120213d206e756c6c29207b0a20202020202020202020202020202020695b615d203d20747275653b0a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020207d0a20202020202020202020666f72202876614d080272206c203d20303b206c203c20652e6c656e6774683b206c2b2b29207b0a2020202020202020202020207661722073203d205b5d2e636f6e63617428655b6c5d293b0a202020202020202020202020696620282172207c7c2021695b735b305d5d29207b0a2020202020202020202020202020696620286e29207b0a2020202020202020202020202020202069662028735b325d29207b0a202020202020202020202020202020202020735b325d203d2027272e636f6e636174286e2c202720616e642027292e636f6e63617428735b325d293b0a202020202020202020202020202020207d20656c7365207b0a202020202020202020202020202020202020735b325d203d206e3b0a202020202020202020202020202020207d0a20202020202020202020202020207d0a2020202020202020202020202020742e707573682873293b0a2020202020202020202020207d0a202020202020202020207d0a20202020202020207d3b0a202020202020202072657475726e20743b0a2020202020207d3b0a202020207d2c0a2020202066756e6374696f6e2028652c20742c206e29207b0a2020202020207661722072203d206e2830293b0a2020202020207661722069203d206e2833293b0a20202020202069662028747970656f66202869203d20692e5f5f65734d6f64756c65203f20692e64656661756c74203a206929203d3d20277374724d0802696e672729207b0a202020202020202069203d205b5b652e692c20692c2027275d5d3b0a2020202020207d0a202020202020766172206f203d207b20696e736572743a202768656164272c2073696e676c65746f6e3a2066616c7365207d3b0a2020202020207228692c206f293b0a2020202020207661722061203d20692e6c6f63616c73203f20692e6c6f63616c73203a207b7d3b0a202020202020652e6578706f727473203d20613b0a202020207d2c0a2020202066756e6374696f6e2028652c20742c206e29207b0a2020202020207661722072203d206e2831293b0a2020202020207661722069203d206e2834293b0a202020202020766172206f203d206e2835293b0a20202020202074203d20722866616c7365293b0a2020202020207661722061203d2069286f293b0a202020202020742e70757368285b0a2020202020202020652e692c0a2020202020202020222f2a20416c6c2073697a696e672063757272656e746c7920646f6e6520696e20656d20776974682074686520657863657074696f6e206f6620636f6d6d616e6420626172205c725c6e202020636f6d706f6e656e7473202877686963682061726520696e20707829202a2f5c725c6e5c725c6e626f6479207b5c725c6e20206261636b67726f756e642d636f6c6f723a20233145314531453b5c725c6e2020666f6e742d66616d696c793a2027526f626f746f4d0802272c2020417269616c2c2048656c7665746963612c2073616e732d73657269663b202f2a20526f626f746f202a2f5c725c6e20202f2a666f6e742d66616d696c793a20417269616c2c2048656c7665746963612c2073616e732d73657269663b202a2f5c725c6e2020666f6e742d73697a653a203735253b5c725c6e20206d617267696e3a2035656d2030203020303b5c725c6e20202d7765626b69742d757365722d73656c6563743a206e6f6e653b5c725c6e20202d6d6f7a2d757365722d73656c6563743a202d6d6f7a2d6e6f6e653b5c725c6e20202d6d732d757365722d73656c6563743a206e6f6e653b5c725c6e2020757365722d73656c6563743a206e6f6e653b5c725c6e7d5c725c6e5c725c6e73656c6563742c20627574746f6e207b5c725c6e2020666f6e742d66616d696c793a2027526f626f746f272c20417269616c2c2048656c7665746963612c2073616e732d73657269663b202f2a20526f626f746f202a2f5c725c6e20202f2a666f6e742d66616d696c793a20417269616c2c2048656c7665746963612c2073616e732d73657269663b2a2f5c725c6e7d5c725c6e5c725c6e696d67207b5c725c6e20202d7765626b69742d757365722d73656c6563743a206e6f6e653b5c725c6e20202d6b68746d6c2d757365722d73656c6563743a206e6f6e653b5c725c6e20202d6d6f7a2d757365722d73656c6563743a206e4d08026f6e653b5c725c6e20202d6f2d757365722d73656c6563743a206e6f6e653b5c725c6e2020757365722d73656c6563743a206e6f6e653b5c725c6e7d5c725c6e5c725c6e2e627265616b2d776f7264207b5c725c6e20206f766572666c6f772d777261703a20627265616b2d776f72643b5c725c6e7d5c725c6e5c725c6e2e686561646572207b5c725c6e2020746f703a20303b5c725c6e2020706f736974696f6e3a2066697865643b5c725c6e20206261636b67726f756e642d636f6c6f723a20233142314231423b5c725c6e2020636f6c6f723a20234242424242423b5c725c6e202070616464696e673a202e3530656d3b5c725c6e2020666f6e742d73697a653a20312e3235656d3b5c725c6e202077696474683a20313030253b5c725c6e20207a2d696e6465783a20313b5c725c6e2020746578742d616c69676e3a2063656e7465723b5c725c6e2020646973706c61793a20626c6f636b3b5c725c6e2020626f782d736861646f773a20302030202e3534656d2030207267626128302c20302c20302c20302e34292c2030203020312e3334656d2030207267626128302c20302c20302c20302e3339293b5c725c6e7d5c725c6e5c725c6e2e6865616465725f5f6c6162656c207b5c725c6e20206d617267696e2d72696768743a202e3534656d3b5c725c6e2020766572746963616c2d616c69676e3a206d6964646c653b5c725c6e4d08027d5c725c6e5c725c6e2e6865616465725f5f6c6f676f207b5c725c6e2020766572746963616c2d616c69676e3a206d6964646c653b5c725c6e202077696474683a20312e33346d3b5c725c6e20206865696768743a20312e3334656d3b5c725c6e7d5c725c6e5c725c6e236a73373830305f5f746172676574207b5c725c6e2020706f736974696f6e3a2072656c61746976653b5c725c6e2020746578742d616c69676e3a2063656e7465723b5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c73207b5c725c6e2020646973706c61793a20666c65783b5c725c6e20206a7573746966792d636f6e74656e743a2063656e7465723b5c725c6e20206d617267696e2d746f703a20312e38656d3b5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c732d627574746f6e207b5c725c6e202077696474683a2033656d3b5c725c6e20206865696768743a2033656d3b5c725c6e20206d617267696e3a2030202e38656d3b5c725c6e20206261636b67726f756e643a20233238323832383b5c725c6e2020626f726465722d7261646975733a202e3735656d3b5c725c6e2020626f782d736861646f773a2030202e3334656d202e3637656d2030207267626128302c20302c20302c20302e34292c2030202e35656d20312e3637656d2030207267626128302c20302c20302c20302e3339293b5c725c6e20206f7061636974793a202e383b5c4d0802725c6e7d5c725c6e5c725c6e2e636f6e74726f6c732d627574746f6e3a686f766572207b5c725c6e20206f7061636974793a20313b5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c732d627574746f6e5f5f696d67207b5c725c6e202077696474683a2032656d3b5c725c6e20206865696768743a2032656d3b5c725c6e202070616464696e673a202e35656d202e35656d3b5c725c6e20206d617267696e3a20303b5c725c6e2020637572736f723a20706f696e7465723b5c725c6e20206f7061636974793a202e373b5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c732d627574746f6e5f5f696d673a686f766572207b5c725c6e20206f7061636974793a202e393b5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c732d627574746f6e5f5f75706c6f6164207b5c725c6e2020646973706c61793a20696e6c696e652d626c6f636b3b5c725c6e2020637572736f723a20706f696e7465723b5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c732d627574746f6e5f5f75706c6f61643e696e7075745b747970653d5c2266696c655c225d207b5c725c6e2020646973706c61793a206e6f6e653b5c725c6e7d5c725c6e5c725c6e2f2a20437573746f6d2053656c656374202a2f5c725c6e2e6361727473656c656374207b5c725c6e20206f7061636974793a202e383b5c725c6e2020706f736974696f6e3a2072656c4d080261746976653b5c725c6e2020646973706c61793a20666c65783b5c725c6e202077696474683a203235656d3b5c725c6e20206865696768743a2033656d3b5c725c6e20206c696e652d6865696768743a2033656d3b5c725c6e20206261636b67726f756e643a20626c61636b3b5c725c6e20206f766572666c6f773a2068696464656e3b5c725c6e2020626f726465722d7261646975733a202e3735656d3b5c725c6e2020626f782d736861646f773a2030202e3334656d202e3637656d2030207267626128302c20302c20302c20302e34292c2030202e35656d20312e3637656d2030207267626128302c20302c20302c20302e3339293b5c725c6e20206d617267696e3a2030202e38656d3b5c725c6e7d5c725c6e5c725c6e2e6361727473656c6563743a686f766572207b5c725c6e20206f7061636974793a20313b5c725c6e7d5c725c6e5c725c6e2f2a204172726f77202a2f5c725c6e2e6361727473656c6563743a3a6166746572207b5c725c6e2020636f6e74656e743a20275c5c32354243273b5c725c6e2020706f736974696f6e3a206162736f6c7574653b5c725c6e2020746f703a20303b5c725c6e202072696768743a20303b5c725c6e202070616464696e673a20302031656d3b5c725c6e2020636f6c6f723a20236365326633373b5c725c6e20206261636b67726f756e643a20233238323832383b5c725c6e202063754d080272736f723a20706f696e7465723b5c725c6e2020706f696e7465722d6576656e74733a206e6f6e653b5c725c6e7d5c725c6e5c725c6e2f2a2052657365742053656c656374202a2f5c725c6e2e6361727473656c6563742073656c656374207b5c725c6e20202d7765626b69742d617070656172616e63653a206e6f6e653b5c725c6e20202d6d6f7a2d617070656172616e63653a206e6f6e653b5c725c6e20202d6d732d617070656172616e63653a206e6f6e653b5c725c6e2020617070656172616e63653a206e6f6e653b5c725c6e20206f75746c696e653a20303b5c725c6e2020626f782d736861646f773a206e6f6e653b5c725c6e2020626f726465723a20302021696d706f7274616e743b5c725c6e20206261636b67726f756e643a20626c61636b3b5c725c6e20206261636b67726f756e642d696d6167653a206e6f6e653b5c725c6e2020666c65783a20313b5c725c6e202070616464696e673a20302031656d3b5c725c6e2020636f6c6f723a20234242424242423b5c725c6e2020637572736f723a20706f696e7465723b5c725c6e2020666f6e742d73697a653a20312e32656d3b5c725c6e7d5c725c6e5c725c6e2f2a2052656d6f7665204945206172726f77202a2f5c725c6e2e6361727473656c6563742073656c6563743a3a2d6d732d657870616e64207b5c725c6e2020646973706c61793a206e6f6e653b5c725c6e4d08027d5c725c6e5c725c6e2e6361727473656c6563742073656c656374206f707467726f7570207b5c725c6e2020666f6e742d7765696768743a20626f6c643b5c725c6e2020636f6c6f723a20233737373737373b5c725c6e7d5c725c6e5c725c6e2e6361727473656c6563742073656c656374206f7074696f6e207b5c725c6e2020666f6e742d7765696768743a206e6f726d616c3b5c725c6e2020636f6c6f723a20234242424242423b5c725c6e7d5c725c6e5c725c6e23636f6e74656e74207b5c725c6e2020636c6561723a20626f74683b5c725c6e20206d617267696e2d746f703a20342e35656d3b5c725c6e7d5c725c6e5c725c6e2e64726f705f5f646976207b5c725c6e2020706f736974696f6e3a2066697865643b5c725c6e20207a2d696e6465783a202d3939393b5c725c6e20206c6566743a20303b5c725c6e2020746f703a20303b5c725c6e202077696474683a20313030253b5c725c6e20206865696768743a20313030253b5c725c6e7d5c725c6e5c725c6e2f2a20436f6d6d616e642062617220636f6d706f6e656e747320287573657320707829202a2f5c725c6e5c725c6e2e667373656c656374207b5c725c6e20206f7061636974793a202e383b5c725c6e2020666f6e742d73697a653a20313170783b5c725c6e2020636f6c6f723a20236666663b5c725c6e2020706f736974696f6e3a2072656c61746976653b5c4d0802725c6e2020646973706c61793a20666c65783b5c725c6e202077696474683a2031393070783b5c725c6e20206865696768743a20323070783b5c725c6e20206c696e652d6865696768743a20323070783b5c725c6e20206261636b67726f756e643a20626c61636b3b5c725c6e20206f766572666c6f773a2068696464656e3b5c725c6e2020626f726465722d7261646975733a203470783b5c725c6e2020626f726465723a2031707820736f6c696420233636363b5c725c6e20206d617267696e3a20302031357078203020313570783b5c725c6e2020646973706c61793a206e6f6e653b5c725c6e7d5c725c6e5c725c6e2e667373656c6563743a686f766572207b5c725c6e20206f7061636974793a20313b5c725c6e7d5c725c6e5c725c6e2f2a204172726f77202a2f5c725c6e2e667373656c6563743a3a6166746572207b5c725c6e2020636f6e74656e743a20275c5c32354243273b5c725c6e2020706f736974696f6e3a206162736f6c7574653b5c725c6e2020746f703a20303b5c725c6e202072696768743a20303b5c725c6e202070616464696e673a2030203370783b5c725c6e2020666f6e742d73697a653a20313170783b5c725c6e2020636f6c6f723a20236365326633373b5c725c6e2020637572736f723a20706f696e7465723b5c725c6e2020706f696e7465722d6576656e74733a206e6f6e653b5c725c6e7d5c724d08025c6e5c725c6e2f2a2052657365742053656c656374202a2f5c725c6e2e667373656c6563742073656c656374207b5c725c6e20202d7765626b69742d617070656172616e63653a206e6f6e653b5c725c6e20202d6d6f7a2d617070656172616e63653a206e6f6e653b5c725c6e20202d6d732d617070656172616e63653a206e6f6e653b5c725c6e2020617070656172616e63653a206e6f6e653b5c725c6e20206f75746c696e653a20303b5c725c6e2020626f782d736861646f773a206e6f6e653b5c725c6e2020626f726465723a20302021696d706f7274616e743b5c725c6e20206261636b67726f756e643a20626c61636b3b5c725c6e20206261636b67726f756e642d696d6167653a206e6f6e653b5c725c6e202070616464696e673a203020313070783b5c725c6e2020636f6c6f723a20234343433b5c725c6e2020637572736f723a20706f696e7465723b5c725c6e2020666f6e742d73697a653a20313170783b5c725c6e2020666c65783a20313b5c725c6e7d5c725c6e5c725c6e2f2a2052656d6f7665204945206172726f77202a2f5c725c6e2e667373656c6563742073656c6563743a3a2d6d732d657870616e64207b5c725c6e2020646973706c61793a206e6f6e653b5c725c6e7d5c725c6e5c725c6e2e667373656c6563742073656c656374206f707467726f7570207b5c725c6e2020666f6e742d7765696768743a204d0802626f6c643b5c725c6e2020666f6e742d73697a653a20313270783b5c725c6e2020636f6c6f723a20233737373737373b5c725c6e7d5c725c6e5c725c6e2e667373656c6563742073656c656374206f7074696f6e207b5c725c6e2020666f6e742d7765696768743a206e6f726d616c3b5c725c6e2020666f6e742d73697a653a20313270783b5c725c6e2020636f6c6f723a20234242424242423b5c725c6e7d5c725c6e5c725c6e2e6d6f64616c207b5c725c6e2020646973706c61793a206e6f6e653b5c725c6e2020706f736974696f6e3a2066697865643b5c725c6e20207a2d696e6465783a20313b5c725c6e202070616464696e672d746f703a20372e35656d3b5c725c6e20206c6566743a20303b5c725c6e2020746f703a20303b5c725c6e202077696474683a20313030253b5c725c6e20206865696768743a20313030253b5c725c6e20206f766572666c6f773a206175746f3b5c725c6e20206261636b67726f756e642d636f6c6f723a2072676228302c20302c2030293b5c725c6e20206261636b67726f756e642d636f6c6f723a207267626128302c20302c20302c20302e36293b5c725c6e2020746578742d616c69676e3a206c6566743b5c725c6e7d5c725c6e5c725c6e2e6d6f64616c2d636f6e74656e74207b5c725c6e2020706f736974696f6e3a2072656c61746976653b5c725c6e20206261636b67726f756e642d634d08026f6c6f723a20233141314131413b5c725c6e20206d617267696e3a206175746f3b5c725c6e2020626f726465722d6c6566743a2031656d20736f6c696420233230323032303b5c725c6e2020626f726465722d72696768743a2031656d20736f6c696420233230323032303b5c725c6e202077696474683a203635656d3b5c725c6e2020626f782d736861646f773a2030202e3334656d202e3637656d2030207267626128302c20302c20302c20302e32292c2030202e35656d20312e3637656d2030207267626128302c20302c20302c20302e3139293b5c725c6e20202d7765626b69742d616e696d6174696f6e2d6e616d653a20616e696d617465746f703b5c725c6e20202d7765626b69742d616e696d6174696f6e2d6475726174696f6e3a20302e36733b5c725c6e2020616e696d6174696f6e2d6e616d653a20616e696d617465746f703b5c725c6e2020616e696d6174696f6e2d6475726174696f6e3a20302e36733b5c725c6e2020626f726465722d7261646975733a202e3637656d3b5c725c6e7d5c725c6e5c725c6e402d7765626b69742d6b65796672616d657320616e696d617465746f70207b5c725c6e202066726f6d207b5c725c6e202020202f2a20746f703a202d3235656d3b202a2f5c725c6e202020206f7061636974793a20305c725c6e20207d5c725c6e5c725c6e2020746f207b5c725c6e202020202f2a20746f4d0802703a20303b202a2f5c725c6e202020206f7061636974793a20315c725c6e20207d5c725c6e7d5c725c6e5c725c6e406b65796672616d657320616e696d617465746f70207b5c725c6e202066726f6d207b5c725c6e202020202f2a20746f703a202d3235656d3b202a2f5c725c6e202020206f7061636974793a20305c725c6e20207d5c725c6e5c725c6e2020746f207b5c725c6e202020202f2a20746f703a20303b202a2f5c725c6e202020206f7061636974793a20315c725c6e20207d5c725c6e7d5c725c6e5c725c6e2e6d6f64616c2d686561646572207b5c725c6e202070616464696e673a202e363235656d3b5c725c6e20206261636b67726f756e642d636f6c6f723a20233230323032303b5c725c6e2020636f6c6f723a20234242424242423b5c725c6e2020666f6e742d73697a653a20312e3333656d3b5c725c6e2020666f6e742d7765696768743a20626f6c643b5c725c6e5c725c6e7d5c725c6e5c725c6e2e6d6f64616c2d626f6479207b5c725c6e2020646973706c61793a20666c65783b5c725c6e2020616c69676e2d6974656d733a20737472657463683b5c725c6e7d5c725c6e5c725c6e2e6d6f64616c2d666f6f746572207b5c725c6e202070616464696e673a202e383334656d202e34313637656d3b5c725c6e20206261636b67726f756e642d636f6c6f723a20233230323032303b5c725c6e2020636f6c6f724d08023a2077686974653b5c725c6e2020646973706c61793a20666c65783b5c725c6e20206a7573746966792d636f6e74656e743a20666c65782d656e643b5c725c6e7d5c725c6e5c725c6e2e746162736574207b5c725c6e2020646973706c61793a20666c65783b5c725c6e2020616c69676e2d6974656d733a20737472657463683b5c725c6e202077696474683a20313030253b5c725c6e7d5c725c6e5c725c6e2e746162207b5c725c6e202070616464696e673a202e363637656d3b5c725c6e20206261636b67726f756e642d636f6c6f723a20233137313731373b5c725c6e202077696474683a2031302e35656d3b5c725c6e20206d696e2d77696474683a2031302e35656d3b5c725c6e20206d696e2d6865696768743a2033352e3637656d3b5c725c6e2020666c65782d67726f773a20303b5c725c6e7d5c725c6e5c725c6e2e74616220627574746f6e207b5c725c6e20206f7061636974793a202e383b5c725c6e2020646973706c61793a20626c6f636b3b5c725c6e2020666f6e742d7765696768743a20626f6c643b5c725c6e20206261636b67726f756e642d636f6c6f723a20696e68657269743b5c725c6e2020636f6c6f723a20234343434343433b5c725c6e202070616464696e673a202e3632656d202e393233656d3b5c725c6e202077696474683a20313030253b5c725c6e2020626f726465723a206e6f6e653b5c725c6e4d080220206f75746c696e653a206e6f6e653b5c725c6e2020746578742d616c69676e3a206c6566743b5c725c6e2020637572736f723a20706f696e7465723b5c725c6e20207472616e736974696f6e3a20302e33733b5c725c6e2020666f6e742d73697a653a20312e31656d3b202f2a20526f626f746f202a2f5c725c6e20202f2a20666f6e742d73697a653a20312e30383334656d3b202a2f5c725c6e20206d617267696e2d626f74746f6d3a202e333835656d3b5c725c6e2020626f726465722d7261646975733a202e333038656d3b5c725c6e7d5c725c6e5c725c6e2e74616220627574746f6e3a686f766572207b5c725c6e20206f7061636974793a20313b5c725c6e20206261636b67726f756e642d636f6c6f723a20233333333b5c725c6e2020626f782d736861646f773a2030202e333038656d202e363135656d2030207267626128302c20302c20302c20302e32292c2030202e343631656d20312e3534656d2030207267626128302c20302c20302c20302e3139293b5c725c6e7d5c725c6e5c725c6e2e74616220627574746f6e2e616374697665207b5c725c6e20206f7061636974793a20313b5c725c6e20206261636b67726f756e642d636f6c6f723a20233862323432393b5c725c6e2020626f782d736861646f773a2030202e333038656d202e363135656d2030207267626128302c20302c20302c20302e32292c2030204d08022e343631656d20312e3534656d2030207267626128302c20302c20302c20302e3139293b5c725c6e7d5c725c6e5c725c6e2e746162636f6e74656e74207b5c725c6e202070616464696e673a2030202e383537656d3b5c725c6e2020626f726465722d6c6566743a206e6f6e653b5c725c6e2020646973706c61793a206e6f6e653b5c725c6e2020636f6c6f723a20234242424242423b5c725c6e2020666c65782d67726f773a20313b5c725c6e2020666f6e742d73697a653a20312e313637656d3b5c725c6e20202f2a2031347078202a2f5c725c6e20206d696e2d6865696768743a2033352e3637656d3b5c725c6e20206d61782d6865696768743a2033352e3637656d3b5c725c6e20206865696768743a2033352e3637656d3b5c725c6e20206f766572666c6f773a206175746f3b20205c725c6e20207363726f6c6c6261722d77696474683a207468696e3b202020202020202020202f2a205c226175746f5c22206f72205c227468696e5c2220202a2f5c725c6e20207363726f6c6c6261722d636f6c6f723a202338623234323920233137313731373b2020205c725c6e7d5c725c6e5c725c6e2e746162636f6e74656e743a3a2d7765626b69742d7363726f6c6c626172207b5c725c6e202077696474683a202e383537656d3b2020202020202020202020202020202f2a207769647468206f662074686520656e746972652073634d0802726f6c6c626172202a2f5c725c6e7d5c725c6e2e746162636f6e74656e743a3a2d7765626b69742d7363726f6c6c6261722d747261636b207b5c725c6e20206261636b67726f756e643a20233137313731373b20202020202020202f2a20636f6c6f72206f662074686520747261636b696e672061726561202a2f5c725c6e7d5c725c6e2e746162636f6e74656e743a3a2d7765626b69742d7363726f6c6c6261722d7468756d62207b5c725c6e20206261636b67726f756e642d636f6c6f723a20233862323432393b202020202f2a20636f6c6f72206f6620746865207363726f6c6c207468756d62202a2f5c725c6e2020626f726465722d7261646975733a20312e3433656d3b202020202020202f2a20726f756e646e657373206f6620746865207363726f6c6c207468756d62202a2f5c725c6e2020626f726465723a202e323134656d20736f6c696420233137313731373b20202f2a20637265617465732070616464696e672061726f756e64207363726f6c6c207468756d62202a2f5c725c6e7d5c725c6e5c725c6e2e746162636f6e74656e745f5f7469746c65207b5c725c6e2020666f6e742d7765696768743a20626f6c643b5c725c6e2020666f6e742d73697a653a20312e313433656d3b5c725c6e2020746578742d616c69676e3a2063656e7465723b5c725c6e20206c696e652d6865696768743a2031656d3b5c725c6e204d0802206d617267696e3a2031656d20302031656d20303b5c725c6e20206c696e652d6865696768743a20312e3132353b5c725c6e7d5c725c6e5c725c6e2e746162636f6e74656e7420612c205c725c6e2e746162636f6e74656e7420613a766973697465645c725c6e2e746162636f6e74656e7420613a616374697665207b5c725c6e2020666f6e742d7765696768743a20626f6c643b5c725c6e2020746578742d6465636f726174696f6e3a206e6f6e653b5c725c6e2020636f6c6f723a20234242423b20205c725c6e7d5c725c6e5c725c6e2e746162636f6e74656e7420613a686f766572207b5c725c6e2020636f6c6f723a20234444443b20205c725c6e7d5c725c6e5c725c6e2e6469616c6f672d627574746f6e207b5c725c6e20206261636b67726f756e642d636f6c6f723a20236365326633373b5c725c6e2020626f726465723a206e6f6e653b5c725c6e2020636f6c6f723a2077686974653b5c725c6e2020746578742d616c69676e3a2063656e7465723b5c725c6e2020666f6e742d73697a653a20312e3133656d3b202f2a20526f626f746f202a2f5c725c6e20202f2a20666f6e742d73697a653a20312e31656d3b202a2f5c725c6e20206d617267696e3a2030202e34313637656d3b5c725c6e20206f7061636974793a202e363b5c725c6e20207472616e736974696f6e3a202e33733b5c725c6e2020746578742d6465636f4d0802726174696f6e3a206e6f6e653b5c725c6e2020637572736f723a20706f696e7465723b5c725c6e202070616464696e673a202e3235656d202e313637656d3b5c725c6e20206d696e2d77696474683a20342e35656d3b5c725c6e2020626f726465722d7261646975733a202e3235656d3b5c725c6e2020626f782d736861646f773a2030202e333334656d202e363637656d2030207267626128302c20302c20302c20302e32292c2030202e35656d20312e363637656d2030207267626128302c20302c20302c20302e3139293b5c725c6e7d5c725c6e5c725c6e2e6469616c6f672d627574746f6e3a686f766572207b5c725c6e20206f7061636974793a20315c725c6e7d5c725c6e5c725c6e702e63656e746572207b5c725c6e2020746578742d616c69676e3a2063656e7465723b5c725c6e7d5c725c6e5c725c6e2e61626f75742d6c6162656c207b5c725c6e20206d617267696e2d72696768743a202e353731656d3b5c725c6e2020766572746963616c2d616c69676e3a206d6964646c653b5c725c6e7d5c725c6e5c725c6e2e61626f75742d6c6f676f207b5c725c6e2020766572746963616c2d616c69676e3a206d6964646c653b5c725c6e202077696474683a20312e323836656d3b5c725c6e20206865696768743a20312e323836656d3b5c725c6e7d5c725c6e5c725c6e2e61626f75742d6174617269207b5c725c6e2020774d0802696474683a2032343070783b5c725c6e20206865696768743a2031383070783b5c725c6e20206d617267696e3a2032307078206175746f3b5c725c6e20206261636b67726f756e643a20626c61636b3b5c725c6e2020626f782d736861646f773a203020347078203870782030207267626128302c20302c20302c20302e32292c20302036707820323070782030207267626128302c20302c20302c20302e3139293b5c725c6e2020626f726465722d7261646975733a20313270783b5c725c6e2020746578742d616c69676e3a2063656e7465723b5c725c6e2020646973706c61793a20696e6c696e652d626c6f636b3b5c725c6e2020706f736974696f6e3a2072656c61746976653b5c725c6e7d5c725c6e5c725c6e2e61626f75742d61746172695f5f76207b5c725c6e202070616464696e673a20313570783b5c725c6e2020646973706c61793a206e6f6e653b5c725c6e7d5c725c6e5c725c6e2e61626f75742d61746172695f5f746f70207b5c725c6e2020706f736974696f6e3a206162736f6c7574653b5c725c6e20202f2a2077696474683a2032303670783b202a2f5c725c6e20202f2a206865696768743a2031343670783b202a2f5c725c6e202077696474683a2032343070783b5c725c6e20206865696768743a2031383070783b5c725c6e20207a2d696e6465783a203130303b5c725c6e2020746f703a20303b5c725c6e4d080220206c6566743a20303b5c725c6e20206f7061636974793a20303b5c725c6e20206261636b67726f756e642d636f6c6f723a20233535353b5c725c6e20202f2a20626f726465723a203137707820736f6c696420626c61636b3b202a2f5c725c6e2020626f726465722d7261646975733a20313270783b5c725c6e7d5c725c6e5c725c6e622e63616c6c6f7574207b5c725c6e2020666f6e742d7765696768743a20626f6c643b5c725c6e2020636f6c6f723a20236464643b5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c732d636f6e7461696e6572207b5c725c6e2020646973706c61793a20666c65783b5c725c6e20206f766572666c6f773a2068696464656e3b5c725c6e20206a7573746966792d636f6e74656e743a2063656e7465723b5c725c6e20206d696e2d77696474683a2036303070783b5c725c6e20206d617267696e2d746f703a20333070783b202f2a20526f626f746f202a2f5c725c6e20202f2a206d617267696e2d746f703a20343070783b202a2f5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c6c6572207b5c725c6e202077696474683a2032393170783b205c725c6e20206d696e2d77696474683a2032393170783b5c725c6e2020636f6c6f723a20236262623b205c725c6e20206f766572666c6f773a2068696464656e3b5c725c6e2020666c65782d67726f773a20313b5c725c6e2020666c65784d08022d736872696e6b3a20303b5c725c6e2020746578742d616c69676e3a2063656e7465723b5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c6c65722d6b6579626f617264207b5c725c6e202070616464696e673a2030203020357078203570783b5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c6c65725f5f7469746c65207b5c725c6e2020746578742d616c69676e3a2063656e7465723b205c725c6e202070616464696e672d626f74746f6d3a20313070783b5c725c6e2020666f6e742d7765696768743a20626f6c643b5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c6c65725f5f696e6e6572207b5c725c6e2020646973706c61793a20696e6c696e652d626c6f636b3b5c725c6e2020706f736974696f6e3a2072656c61746976653b5c725c6e202077696474683a2032393170783b5c725c6e20206d696e2d77696474683a2032393170783b5c725c6e20206865696768743a2031353170783b2020205c725c6e20206d696e2d6865696768743a2031353170783b2020202020202020205c725c6e20206261636b67726f756e642d696d6167653a2075726c2822202b0a2020202020202020202061202b0a2020202020202020202027293b5c725c6e2020626f782d736861646f773a203020347078203870782030207267626128302c20302c20302c20302e32292c20302036707820323070782030207267626128304d08022c20302c20302c20302e3139293b5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c6c65725f5f6b6579746172676574207b5c725c6e2020746578742d616c69676e3a2063656e7465723b5c725c6e2020636f6c6f723a20236363633b5c725c6e20206261636b67726f756e642d636f6c6f723a20233939323332393b5c725c6e2020706f736974696f6e3a206162736f6c7574653b5c725c6e202077696474683a20343070783b5c725c6e20206865696768743a20323070783b2020202020205c725c6e20206c696e652d6865696768743a20323070783b2020202020205c725c6e2020626f782d736861646f773a203020347078203870782030207267626128302c20302c20302c20302e32292c20302036707820323070782030207267626128302c20302c20302c20302e3139293b5c725c6e2020626f726465722d7261646975733a203470783b5c725c6e20206f766572666c6f773a2068696464656e3b5c725c6e2020666f6e742d73697a653a20313170783b5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c6c65725f5f6b65797461726765743a686f766572207b5c725c6e20206261636b67726f756e642d636f6c6f723a20236365326633373b5c725c6e2020636f6c6f723a2077686974653b5c725c6e7d5c725c6e5c725c6e2e636f6e74726f6c6c65725f5f6b65797461726765743a666f637573207b5c725c6e20204d0802636f6c6f723a20233239323932393b5c725c6e20206261636b67726f756e642d636f6c6f72203a236363633b5c725c6e7d5c725c6e5c725c6e2e636f6e736f6c65207b5c725c6e202070616464696e672d746f703a323570783b5c725c6e7d5c725c6e5c725c6e2e636f6e736f6c655f5f696e6e6572207b5c725c6e202070616464696e672d746f703a203270783b5c725c6e2020646973706c61793a20666c65783b5c725c6e20206a7573746966792d636f6e74656e743a2063656e7465723b5c725c6e7d5c725c6e5c725c6e2e636f6e736f6c655f5f627574746f6e207b5c725c6e2020646973706c61793a20696e6c696e652d626c6f636b3b5c725c6e2020706f736974696f6e3a2072656c61746976653b5c725c6e2020746578742d616c69676e3a2063656e7465723b5c725c6e2020666f6e742d73697a653a20313270783b5c725c6e2020666f6e742d7765696768743a20626f6c643b5c725c6e202077696474683a20373070783b5c725c6e20206865696768743a20323470783b5c725c6e20206c696e652d6865696768743a20323470783b205c725c6e2020626f726465722d7261646975733a203570783b5c725c6e2020626f782d736861646f773a203020347078203870782030207267626128302c20302c20302c20302e32292c20302036707820323070782030207267626128302c20302c20302c20302e3139293b5c724d08025c6e20206d617267696e3a2030203870783b5c725c6e7d5c725c6e5c725c6e2e636f6e736f6c655f5f627574746f6e2d2d7570207b5c725c6e2020626f726465723a2032707820736f6c696420233436343434383b5c725c6e20206261636b67726f756e642d636f6c6f723a20233333333b5c725c6e7d5c725c6e5c725c6e2e636f6e736f6c655f5f627574746f6e2d2d646f776e207b5c725c6e2020626f726465723a2032707820736f6c696420233436343434383b5c725c6e20206261636b67726f756e642d636f6c6f723a20236230616262363b20205c725c6e2020636f6c6f723a20233131313b5c725c6e7d5c725c6e5c725c6e2e67616d657061642d666f637573207b5c725c6e2020706f736974696f6e3a206162736f6c7574653b5c725c6e202077696474683a20313070783b5c725c6e20206865696768743a20313070783b5c725c6e2020626f726465722d7261646975733a203530253b5c725c6e2020646973706c61793a206e6f6e653b5c725c6e20206261636b67726f756e642d636f6c6f723a20236363633b5c725c6e2020626f782d736861646f773a203020302032707820236363633b5c725c6e7d5c725c6e5c725c6e2e67616d657061642d67726964207b5c725c6e20206261636b67726f756e642d636f6c6f723a20233232323b205c725c6e202077696474683a2032373070783b5c725c6e2020677269642d634d08026f6c756d6e2d6761703a203570783b5c725c6e2020677269642d726f772d6761703a3570783b5c725c6e2020646973706c61793a20696e6c696e652d677269643b20205c725c6e2020677269642d74656d706c6174652d636f6c756d6e733a206175746f203166723b20205c725c6e202070616464696e673a20313070783b5c725c6e2020626f726465722d7261646975733a203570783b5c725c6e20206d617267696e3a203020302032357078203170783b5c725c6e2020666f6e742d73697a653a20313270783b5c725c6e7d5c725c6e5c725c6e2e67616d657061642d63656c6c2d6e616d65207b20205c725c6e20206f766572666c6f773a2068696464656e3b5c725c6e2020746578742d616c69676e3a206c6566743b20205c725c6e2020666f6e742d7765696768743a626f6c643b5c725c6e2020636f6c6f723a20233737373b5c725c6e202077686974652d73706163653a206e6f777261703b5c725c6e7d5c725c6e5c725c6e2e67616d657061642d63656c6c2d76616c7565207b20205c725c6e2020746578742d616c69676e3a2063656e7465723b5c725c6e20206f766572666c6f773a2068696464656e3b5c725c6e2020746578742d616c69676e3a206c6566743b20205c725c6e202077686974652d73706163653a206e6f777261703b5c725c6e7d5c725c6e5c725c6e2e6469616c6f672d67726964207b5c725c6e20206d4d0802617267696e3a2032656d2031656d2031656d2031656d3b5c725c6e2020677269642d636f6c756d6e2d6761703a2031656d3b5c725c6e2020677269642d726f772d6761703a20312e35656d3b5c725c6e2020646973706c61793a20677269643b5c725c6e2020677269642d74656d706c6174652d636f6c756d6e733a206175746f203166723b5c725c6e202070616464696e673a2031656d3b5c725c6e20206c696e652d6865696768743a2031656d3b5c725c6e20206261636b67726f756e642d636f6c6f723a20233232323b205c725c6e2020626f726465722d7261646975733a202e34656d3b5c725c6e20202f2a206a7573746966792d6974656d733a2063656e7465723b202a2f5c725c6e2020616c69676e2d6974656d733a2063656e7465723b20205c725c6e7d5c725c6e5c725c6e2e6469616c6f672d63656c6c2d6c6162656c207b5c725c6e20206f766572666c6f773a2068696464656e3b5c725c6e2020746578742d616c69676e3a206c6566743b5c725c6e2020666f6e742d7765696768743a20626f6c643b5c725c6e2020636f6c6f723a20233743374337433b5c725c6e202077686974652d73706163653a206e6f777261703b5c725c6e20202f2a20626f726465723a2031707820736f6c6964207265643b20202a2f5c725c6e7d5c725c6e5c725c6e2e6469616c6f672d63656c6c2d636f6e74656e74207b5c725c6e20204d0802746578742d616c69676e3a2063656e7465723b5c725c6e20206f766572666c6f773a2068696464656e3b5c725c6e2020746578742d616c69676e3a206c6566743b5c725c6e202077686974652d73706163653a206e6f777261703b5c725c6e20202f2a20626f726465723a2031707820736f6c6964207265643b20202a2f5c725c6e7d5c725c6e5c725c6e2e6469616c6f672d737769746368207b202f2a2031347078202a2f5c725c6e2020706f736974696f6e3a2072656c61746976653b5c725c6e2020646973706c61793a20696e6c696e652d626c6f636b3b5c725c6e202077696474683a20322e343239656d3b202f2a333470783b2a2f5c725c6e20206865696768743a20312e34323836656d3b202f2a323070783b2a2f5c725c6e7d5c725c6e5c725c6e2e6469616c6f672d73776974636820696e707574207b5c725c6e20206f7061636974793a20303b5c725c6e202077696474683a20303b5c725c6e20206865696768743a20303b5c725c6e7d5c725c6e5c725c6e2e6469616c6f672d7377697463682d736c69646572207b5c725c6e2020706f736974696f6e3a206162736f6c7574653b5c725c6e2020637572736f723a20706f696e7465723b5c725c6e2020746f703a20303b5c725c6e20206c6566743a20303b5c725c6e202072696768743a20303b5c725c6e2020626f74746f6d3a20303b5c725c6e20206261636b67726f4d0802756e642d636f6c6f723a20233636363b5c725c6e20202d7765626b69742d7472616e736974696f6e3a202e34733b5c725c6e20207472616e736974696f6e3a202e34733b5c725c6e20206f7061636974793a20302e363b5c725c6e2020626f726465722d7261646975733a20322e34323836656d3b202f2a20333470783b2a2f5c725c6e7d5c725c6e5c725c6e2e6469616c6f672d7377697463682d736c696465723a686f766572207b5c725c6e20206f7061636974793a20315c725c6e7d5c725c6e5c725c6e2e6469616c6f672d7377697463682d736c696465723a6265666f7265207b5c725c6e2020706f736974696f6e3a206162736f6c7574653b5c725c6e2020636f6e74656e743a2022223b5c725c6e20206865696768743a202e383537656d3b202f2a313270783b2a2f5c725c6e202077696474683a202e383537656d3b202f2a313270783b2a2f5c725c6e20206c6566743a202e32383537656d3b202f2a3470783b2a2f5c725c6e2020626f74746f6d3a202e32383537656d3b202f2a3470783b2a2f5c725c6e20206261636b67726f756e642d636f6c6f723a20234444443b5c725c6e2020626f726465722d7261646975733a203530253b5c725c6e20202d7765626b69742d7472616e736974696f6e3a202e34733b5c725c6e20207472616e736974696f6e3a202e34733b5c725c6e7d5c725c6e5c725c6e696e7075743a63684d080265636b6564202b202e6469616c6f672d7377697463682d736c69646572207b5c725c6e20206261636b67726f756e642d636f6c6f723a20236365326633373b5c725c6e7d5c725c6e5c725c6e696e7075743a636865636b65642b2e6469616c6f672d7377697463682d736c696465723a6265666f7265207b5c725c6e20202d7765626b69742d7472616e73666f726d3a207472616e736c617465582831656d202f2a313470782a2f293b5c725c6e20202d6d732d7472616e73666f726d3a207472616e736c617465582831656d202f2a313470782a2f293b5c725c6e20207472616e73666f726d3a207472616e736c617465582831656d202f2a313470782a2f293b20205c725c6e7d5c725c6e5c725c6e2e6469616c6f672d73656c656374207b202f2a2031347078202a2f5c725c6e20206f7061636974793a202e383b5c725c6e2020666f6e742d73697a653a2031656d3b205c725c6e2020636f6c6f723a20236666663b5c725c6e2020706f736974696f6e3a2072656c61746976653b5c725c6e2020646973706c61793a20666c65783b5c725c6e202077696474683a203134656d3b202f2a31363070783b2a2f5c725c6e20206865696768743a20312e38656d3b202f2a323070783b2a2f5c725c6e20206c696e652d6865696768743a20312e38656d3b202f2a323070783b2a2f5c725c6e20206261636b67726f756e643a20626c61636b4d08023b5c725c6e20206f766572666c6f773a2068696464656e3b5c725c6e2020626f726465722d7261646975733a202e34656d3b202f2a3470783b2a2f5c725c6e2020626f726465723a2031707820736f6c696420233636363b5c725c6e7d5c725c6e5c725c6e2e6469616c6f672d73656c6563743a686f766572207b5c725c6e20206f7061636974793a20313b5c725c6e7d5c725c6e5c725c6e2f2a204172726f77202a2f5c725c6e2e6469616c6f672d73656c6563743a3a6166746572207b5c725c6e2020636f6e74656e743a205c275c5c323542435c273b5c725c6e2020706f736974696f6e3a206162736f6c7574653b5c725c6e2020746f703a20303b5c725c6e202072696768743a20303b5c725c6e202070616464696e673a2030202e33656d3b202f2a3370782a2f5c725c6e2020666f6e742d73697a653a2031656d3b5c725c6e2020636f6c6f723a20236365326633373b5c725c6e2020637572736f723a20706f696e7465723b5c725c6e2020706f696e7465722d6576656e74733a206e6f6e653b5c725c6e7d5c725c6e5c725c6e2f2a2052657365742053656c656374202a2f5c725c6e2e6469616c6f672d73656c6563742073656c656374207b5c725c6e20202d7765626b69742d617070656172616e63653a206e6f6e653b5c725c6e20202d6d6f7a2d617070656172616e63653a206e6f6e653b5c725c6e20202d6d732d61704d080270656172616e63653a206e6f6e653b5c725c6e2020617070656172616e63653a206e6f6e653b5c725c6e20206f75746c696e653a20303b5c725c6e2020626f782d736861646f773a206e6f6e653b5c725c6e2020626f726465723a20302021696d706f7274616e743b5c725c6e20206261636b67726f756e643a20626c61636b3b5c725c6e20206261636b67726f756e642d696d6167653a206e6f6e653b5c725c6e202070616464696e673a2030202e373134656d3b5c725c6e2020636f6c6f723a20234343433b5c725c6e2020637572736f723a20706f696e7465723b5c725c6e20202f2a20666f6e742d73697a653a20313170783b202a2f5c725c6e2020666f6e742d73697a653a202e39656d3b5c725c6e2020666c65783a20313b5c725c6e7d5c725c6e5c725c6e2f2a2052656d6f7665204945206172726f77202a2f5c725c6e2e6469616c6f672d73656c6563742073656c6563743a3a2d6d732d657870616e64207b5c725c6e2020646973706c61793a206e6f6e653b5c725c6e7d5c725c6e5c725c6e2e6469616c6f672d73656c6563742073656c656374206f707467726f7570207b5c725c6e2020666f6e742d7765696768743a20626f6c643b5c725c6e2020666f6e742d73697a653a2031656d3b5c725c6e2020636f6c6f723a20233737373737373b5c725c6e7d5c725c6e5c725c6e2e6469616c6f672d73656c6563742073654d08026c656374206f7074696f6e207b5c725c6e2020666f6e742d7765696768743a206e6f726d616c3b5c725c6e2020666f6e742d73697a653a2031656d3b5c725c6e2020636f6c6f723a20234242424242423b5c725c6e7d5c725c6e5c725c6e2e61626f75742050207b5c725c6e2020746578742d616c69676e3a2063656e7465723b5c725c6e20206c696e652d6865696768743a20312e35656d3b5c725c6e202070616464696e673a20302033656d20302033656d3b5c725c6e7d5c725c6e5c725c6e2e696e73747275637473207b5c725c6e2020666f6e742d73697a653a312e3135656d3b5c725c6e2020626f726465722d7261646975733a31656d3b5c725c6e20206f7061636974793a302e3837353b5c725c6e202070616464696e673a31656d3b5c725c6e20202f2a206261636b67726f756e642d636f6c6f723a20233145314531453b20202a2f5c725c6e20206261636b67726f756e642d636f6c6f723a20233146314631463b205c725c6e20202f2a206261636b67726f756e642d636f6c6f723a20233963313931393b202a2f5c725c6e2020636f6c6f723a234242423b5c725c6e2020626f782d736861646f773a2030202e3237656d202e3534656d2030207267626128302c20302c20302c20302e34292c2030202e34656d20312e3334656d2030207267626128302c20302c20302c20302e3339293b5c725c6e20206d61782d77694d08026474683a203430656d3b5c725c6e7d5c725c6e5c725c6e2e696e73747275637473202e696c696e6b207b5c725c6e2020666f6e742d7765696768743a20626f6c643b5c725c6e2020636f6c6f723a20234343433b20205c725c6e7d5c725c6e5c725c6e2e696e73747275637473202e696c696e6b3a686f766572207b5c725c6e2020636f6c6f723a20234646463b20205c725c6e2020637572736f723a20706f696e7465723b5c725c6e7d5c725c6e5c725c6e2e696e7374727563747320696d67207b5c725c6e202077696474683a20312e37656d3b5c725c6e20206865696768743a20312e37656d3b5c725c6e20206d617267696e3a2030202e32656d2030202e33656d3b5c725c6e20206f7061636974793a202e383b5c725c6e2020766572746963616c2d616c69676e3a6d6964646c653b5c725c6e2020637572736f723a20706f696e7465723b5c725c6e7d5c725c6e5c725c6e2e696e7374727563747320696d673a686f766572207b5c725c6e20206f7061636974793a20313b5c725c6e7d205c725c6e5c725c6e2e696e7374727563747320646976207b5c725c6e2020766572746963616c2d616c69676e3a6d6964646c653b5c725c6e20206c696e652d6865696768743a312e35656d3b5c725c6e7d5c725c6e5c725c6e2e696e73747275637473206469762e6968656c70207b5c725c6e20206d617267696e2d746f703a31656d3b4d08025c725c6e7d5c725c6e5c725c6e272c0a202020202020202027272c0a2020202020205d293b0a202020202020652e6578706f727473203d20743b0a202020207d2c0a2020202066756e6374696f6e2028652c20742c206e29207b0a2020202020202775736520737472696374273b0a202020202020652e6578706f727473203d2066756e6374696f6e2028652c207429207b0a202020202020202069662028217429207b0a2020202020202020202074203d207b7d3b0a20202020202020207d0a202020202020202069662028747970656f66202865203d206520262620652e5f5f65734d6f64756c65203f20652e64656661756c74203a206529203d3d2027737472696e672729207b0a20202020202020202020696620282f5e5b27225d2e2a5b27225d242f2e7465737428652929207b0a20202020202020202020202065203d20652e736c69636528312c202d31293b0a202020202020202020207d0a2020202020202020202069662028742e6861736829207b0a20202020202020202020202065202b3d20742e686173683b0a202020202020202020207d0a20202020202020202020696620282f5b22272829205c745c6e5d2f2e74657374286529207c7c20742e6e65656451756f74657329207b0a20202020202020202020202072657475726e202722272e636f6e636174280a2020202020202020202020202020652e7265706c61634d080265282f222f672c20275c5c2227292e7265706c616365282f5c6e2f672c20275c5c6e27292c0a20202020202020202020202020202722270a202020202020202020202020293b0a202020202020202020207d20656c7365207b0a20202020202020202020202072657475726e20653b0a202020202020202020207d0a20202020202020207d20656c7365207b0a2020202020202020202072657475726e20653b0a20202020202020207d0a2020202020207d3b0a202020207d2c0a2020202066756e6374696f6e2028652c20742c206e29207b0a2020202020202775736520737472696374273b0a2020202020206e2e722874293b0a202020202020742e64656661756c74203d0a202020202020202027646174613a696d6167652f706e673b6261736536342c6956424f5277304b47676f414141414e5355684555674141415351414141435843414d414141434c447461784141414141334e435356514943416a6234552f67414141426746424d5645582f2f2f387a4d7a4d704b536b6849534658566c6e5649536b364f6a704852556c4d54453961576c6f70496963714b7a42455130646d5a6d596849696c505456464552306843516b4941414142665857466d5a6d592f504548584b544673626e464852556e63496a4456496a4551454242635847424b535570555531654d6934304943416b395045415845786a564b5369506a704b47694d080234775a47526c6658574653556c4a5054303645686f6b364d7a755a6d5a6e65495367684a79424d54452b4e6c4a546c4a7a4c654b6a4b4468494e73626e45684b536f484352415a4769462b673451704953514243416478636e4e3064336e6c4d44455146786c3866494141454133664b536f5649534a376533744e5546455243676a574d5451494568415141674b68704b56625947486b4d6a6b7942776b6842516463584744674c54654c49535238486838714d6a545749694f534a7a4257457841534341494841415256575672754a7a7146485348474b432b324a7a4a304842354a4668424c455173514779454a45516b704241656d716176784b532f4d4d7a506f4a796d6c4b536b6748786f5841416a6b4b4475384d69356d4668645646786c4b5355724f4b5451724e545569424148464a6a75384a53717249695766485371544879703149436842447777364477304846527367417731714942786f47794a464277304e44786137736f52384141414167485253546c4d412f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f642f2f2f2f2f2f2f642f2f2f2f346a4d2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f33662f2f2f2f2f2f33662f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f39332f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f4d08022f2f2f2f33662f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f396250487151414141414a6345685a63774141437849414141735341644c6466767741414141576445565964454e795a5746306157397549465270625755414d4451764d5455764d6a4453476e687a41414141494852465748525462325a30643246795a51424e59574e796232316c5a476c6849455a70636d563362334a726379424e574c75524b695141414265555355524256486963375a3333593970573138656a4b316c6f57526856384153445147794b77513862764233484b346b7a3279544e5873314f6d71524e75744c7872372f6e5367774a4a43457773586a3739507444456d4e78772f33346e4850507563756e546d484e2f7973626e65707166763630737144342f74576746685a4f582b7067416b534341764c3649383269424e2f70537a6f6a58304252416e5343376f67594966702f526b48424a77674d7471564c437747664d4a4c4d2f366753676943636e67644443697749586e2b575953566d354d644743344979662b71534976674d483468486e4c586764524568424e386e57386c6b52464d796d573252384b496f6b754a49395671792b62722f41727a43303650642f6d514562766166552f4d2b4a57683444584532665252465449684d4e6c56566b74536d696b453138542f564a496c344869454f36624b423350313237344842727a6e54314d08023451486b48686b3853494e736676556633774b7758646657654b526a546741495759425369534c694b444335466d4b386a4d426d69416a7171526d526437326e5a4f4951783541416770576c494943514649576a412f61666d35656a45687142506e38564534324b6b7235434941584961664a53505345306471364661554574695446474c617449584536496854495232575a42564664735777556d41476e794451786b62775845616c65544b2f52773553436d72735a494e45385a2f6d70786154553548317346504f4a7861674273626c633144394654434c794a47797a3658523862646957456934686b61714b4749503944416b4d6973305454536c3766454a3445505569616f4d5855664634356d794347336a5a4a6153496c425369446f69363970546e4a505859786754442f3549486a43446f3870792f454939764a515a737951306b586c516c49686f31576733596a5361326f2b35335a446b516b59354a536351782b2b534464694a5055543565564770415354425463674d704b7a563963703852537a4651395857715031327848695657706b6770655278473274692f644e4b492b4e6857484679745470432b64696265586a4252636745704b53587a737348566f766c4551444170594b41556b3256304c4572654a4a467350423350464f4a706f4254594b673951476730704b5a46557a6a6963735835684e392b525878506a4d4d080233342f4b684e53424c7a47657051634b53385949536f547a367978636945647a794d79304537483237756f6c312b506867534d6f7447384b54777a41755076694e476c47434846574a6e48746a515a4a452f734b462f49774e4176596e755343614a426e49316e4d72482b4744634b556c624b356d527a576a514b45715a45534d6e4a69685176596a5a4b6741584a6b4234686f6c5a63673779627049465377642f7a75424751576c4b5348574245526631436a34347576786b534659764b3467514a6b3166706b536a45302b6b6f79524f4972685731756b54456c444c3572734d355a39786b4d354b584b577063534a414b354a4b534f42476a6b7837584e4d6e7065447a4b383779535363736147614145795866586c68776763546948544177786367574a6b68556f6863634c5336496e766f624661355279504a4b4c6d526965442b4b52534b38587a7762346b5a437773354852495562754946453551736f536e48744b6e44654d6b475973694a636853547050314d767464546d2f51504f496179586b6f43743355357578695347784f56496177355138597351547446625067693142714a625078394f514337545072736c3558332b4b7a523453682f696b524f654747626d45524d6d4d704c7132493439386a512b7574396355624530386e347444476e422b50524d76672b7646307a5644416563556b36516b5a565854756f51557a4d080266465379325565344e5734786b665475425952634f4c49527775466a45776b714e78617535624f4b49624837434878454c5774444d6b43456d4d46695a4c39716c7454386d53754673387678744b46576946656b7756735339454d706f547770446155756f626e374346426e52717a6873514965694c5a54796374496245517539325a6b6a654d654a70426b4676586172554d59417041444b494b386668614176474454397044696b69305264514752705377674f4630696c73666730486c4c52356b355878547864466d6c4c7a784e5554554d31462b4e314e6f3179467a784a6a3452683671335058682b567462534b51556f61774d6959333667307a4d482b6a326967346f44464379696c35526d5a5049305a43385963547839586938514b4f316444784b794c564d4a74364f30755143354e3574595a43534c615373524d6a444857645a4e685a514e45536478584c344f2b454431374d794f6c6c516b794f7a4147446b77566f74682b7270516a7450494569794d344657514e367178644e624d5448524c705a3358554e71536b72486b466754704a6a673877664d577959494967416a334541566a502f4955556e5642534d50516a614348447654396b4f687a38766c3468612f3261686e67464a36506341556f71376444592f2f556233662f6a775636796e504d4c754244714a454974476c464d534a51443766653879767a634a465a4d08025452714c70667a686846664c78594b57777267514454597a6e6469766c306f72426653365852644746374674594d4536584b5577704259686d59366332762b5041516676312f5137616937547966527453576a684951475741364d6d417a77614f7a4874527245364a6f69417156597562782b4873784970716e316446456548747873496348594a757551416a526a7a4972384372326b6d772b764e39646835544d39784e414b4e69575a69546957755634796b732b6d347757466850786f7256797246644a7252415052736b774d4d374b487050706b50625945545a443854494259676d6964494c7064317a46704474656269774e496a4f5a76564e594a6b6b654d45474b4c3532534f336f4c68625548457354745479395278466f6b734e307a5951654c5569462b6232475970737958356662514f52647543772f557030596f4a4a6333674a417571584e5532426542457a70503549786773534c594f502b544532586938786a515144345a566f7876614e793373794259534b62583041576f41456a596b6e524748794751796d385678575839467349496b452f5a726c56374e7365585079676c7468675452362b4278655a366b74394b5a58557338756d77686f61673170415368327846366f572f696567456d52656a2b35682b43524d6b4a31533579653757556e59447174536254764c624e42696555555553793866693677326578674d080264535365477449437431784e6a4b70623354442b3765472f4b30484b5265775734507a624b355769554e4e6d796d63783568346f4a544a6e4366526568784b5731765a51494a384f306f35514f4a524e744a5274754e766c70426b6e326f4e795a736355744e3675743247537262396e5462647470594753754a436f5679336634634e704b517a4a4b6a7458554a69384654333750676143444878544875724463586132526a652f6c6548644f4138716d2f52396b4670496b67344a4932457042636d4e704338593054674c436c54562b6f46764769375332686a5731704f4f44416148784a68696b6b6730684753307252774e3639795346306f735a574f4b364b7958696a45675259536f356c696d784164336a472b4a5856474e36356a536939515a396d565a6977675763636b337176314e5630696d30375869425a78766c444c704173795455613346687a66594138705a77574a675251414a397a596c4c4a4a6e52476e4731646749452b796738534a774d684452486a6b5031737579773143726b48385470666a39514476344776452b4b4f625674376967516c784a46596e766777556233314967534649486f35725865464a7046712b6e6f6b58596d7968664b363851446f2f6235744d6976303879572f71666b4a37436d66335343744e4f6f784d30774264534869616579435a3944596564595167646b5067546c4d7455566762324d08024c466c495674495353726168395158733974335838324b4f7055626f66674e573033366b4a44556d6a3147424171324d34564341532f2f4979497877746c7349596c533039395a426767514171503046664e332b746a39533263554e4b38794359512b4378434649744134432b4352722f47442b326e522b585374514f6c77526947796738527a7168726f424358462f4959416f2f545741506f54754c536643644b394a566a384e7a355551655669535368774f5a4d645464624e59776b787559453545455241477644644b446672797361532b4e3777526c464d774c42464d676844765549624153573034522b537a4743674b33684f58786a51397062303967567958733066456649546d544d62444a6e484b396d6a6a556954486153575248593348724d5561394275676c4330513033395a5141367944414548544d38524855324e4d73346268736d6c4c7978493657575733745352796137515677643732357a4a397335626c58643757314e4d71325835496b454a41494a6f6875786959546939394e304c4d6f4f48526a493555697035323063783373304e79495834336d675a493750584c41646a772b7473466e4c646b6c4a6d2b5332554179436c4a44334d774b345651496b77464147795a5066617256585a70723969556e4d614b71646479632b5556696e797646382f64785a38305a2f4a4d645a6c3230344c453653316b644a324d080244777447495a37626351504a4b785863496e6562424b48434b397979506f352b6274305a6c637570755541545679447a35484432794c34494f5732425674496f716f716c71624535684f646d647265426c782f514c43434a45657a335755337a7276546f6f6859503364654f566355474d6974313258322f467168574a5431373769552f59614a7049526b4b782f436b48595a76306b4136627668422b5741314f77474a452b4f722b6c432f4661526954307042344e6278584e4655446d544c71364e30344939704a616b2b71314d7157394a2f59494f494130726c2b735a45764b514563526f496c306b64703855457969584b574f6c415a625074523035376e534c53487a4f77705347495447576b46685a364f3048394a5152554d6f2f5752647a3538704d69324458616c44586274575a6364357644346b674a5a575a48464973436f616b372b486943492f724e5a356f50386d4c39536446536d77526959574641494547367852484f65322b6a6341414e376b6c3565684f524d4b4d504a302f77757639353949453379345736775170647572794d655141695965454d686764506d3772446c4c4f4434797849596d6554782f685a636a4d4f546b726c4e506c725633726c5778484f566b536e3555697357694d6e5151534b355036544a4b5834317050504848325359466f51657064544a2f4e6a2f31327079334b504e65554f486e516c4d08026c784277756555634c4c4e7a51516a4c56637137354a456f527776466d4e6a6d354c6a695142774f496b59544150596d417449736b2f5331726339716b5547425a434b78527a666f4e4c6c754e4f69763431473341755156645842497a68736a413734427854306d522f4a4b52487362427a694359394474693545624f476744614e6357686d663051684949706555314b423567796c414967547a5a565642776d64364a4b636b645473695a6f4d5277537670496a37757830636e734b50526b4b413655514f6d754d5253466e63746d5359425a436143433173506c374b4868454d325068507059713757517336513848314a53556d6954626245556f5964705070753078686c6f43694472795646704733526d673149764a4175466f71574f2f31636151516b764a634e4b4248526e416c546c44557079765968526557414b695878685653657a59304d696166627858535a6d705352717774646b7170453567646d4244514c6f6f6245796c4643776f786d59416e53494a77435a415976313341764e3543346245534b304b7a6c784d6b416f7079536862476630362f536d456233706953536a73736a6c396473356535714944456953566d664c4c4f553158476b6e71504a464b39714637724d47694d38692b753074326145584e366652494c4c71536776797a6b3754426752445379546f6e614e31717863376465547852353231334946534d0802567634687667645159777364375a33472f55646d354e7a6667492f30644c432f617a5a3054486c2b695975764e3157416c386964764746626c48447949612f396763512f6d345338624f793344394e6a51454a6b5244417362455141684d4478394d6c737a4746526846566b70725a7a6d547437497a39553949346b44524d51454e5349306d794d3535792b6b7571476d6e317a6c4838772b786f54456a6167517138775132543667737a453375502f504d596a516c4a4f307a436353545a6176577564553232534b373354512f58494c2b67786e4d333764534d44543664337a2f516a73614868496176482b454d723376586b532b7073534535385a7570656d324b6d69616b66324c4d316a5139535039594f356f6970432f423646704433486d34737950794577325a5330765141742f51576d676336334e4d7a354b6d76457937524f7763624b73765033392b65564f3932587a5975506165494e362f4836654270535553576a68382b664c6c3463335631643933726b33385135775370476e624563332f336a783866502f4e37552b66506c3235657632336c394c764f2b4f56385454786350586d3477642f3350373530366662763777354f705361447964646c70674f704b6e373273377134665572503656432b35564b70526f4b33666e34353265704f596250304e44436a667458377152435657686766372f3637766d3949326d566d4d0802347a535643424e6d524864324a5965664e792f58486c576d707372595433627550445476632f53706d7454514533702f764f6e6c3538394b35584f6c45717055716c3634634b6471782b6b54583453544e4f414e4f5835624c6f68586278536658596d504b63705049662f555870572f66697253307258694d627168352f334e79716c75546d396b555834522b585a787576373073456b6c4b5941535a78797a4635652f6576754c656a673470785271644c6c4839394b4279346f765365512b697530454635634e4451525371564b6c616633626b354336666951706832504771735066727756316e2f38526b687a345675582f3541656a6637506c74434e4233652b6e31734d68557951674e6e636d61663344672b6d766866416e52324e2f623836364a723631342b76357234424b475a474b59684f6c586476706239484e6242453742333964436156536f564378675a43692b457774504c753373336d324950636353464e66567a372b2f4750742b59416b6b476132797a6950382f63755336315272577765664835526e6778424a42434a6b734b68304f704d326665765a47533433366d593049534f534978315278792b63625074384a6d492b7044576c7973336e32384f754b595932503136755535544153696b4d4757516c6a68556a6a382b6b68794f70527370654e426d7634366265543668637169325a4136664453564c6c79566d4d08027334544d67652f335145554f715455494b5477597268366531514c517a6f57704b6b7a5769492f664953516d2f6f6d5a51307050466435393565556465706a592b2f4b6d57385762534346466b4d5176482b5657754d46372b4e416d7637656d71586b67394133637a6a41326b4536733346624f6941644b50332b367a767a3247397342477870726e5468697653374f4c55747969345954586d50317258496c656f774a474e505339392f764c693977746c53757262335331586a5964304148764571727939756b303663687a513570432b78623053382b464f6f6d79566251776f2f32372b2f2b6f4b7a362b50537a73586e7a704441332f6266536c6d4f484d4f574a6f62304a64614f364d33665569566e534f4276393341586253677450547936553130305a3067446b464b6c6a562b6b54593573756163304b61547035556647336b62655067326e6e434242707650396c634f2f4f544d6c4a497264727a617668366f6852306968307361336878456b6b75357461554a49552f513130704331375033784e50794e4579516f774c352f66714d704c704d47536a7a4a4937457a586b582b724a354a3259553048564a34342f6d4870696953377550535a4a436d47592f4550715672653164444a55644c416b6f627a7938327957585332456377436249443664476631626c526b43703348322b5449756d653069535175436e48624c4b62514d0802312f627531306444516c335559505574523638595a54723350622f364d2f516e4f3367324946303636656a446953586c43614252453537584f74523272757151624b6c42494737314c636b6f38647875734f39663353764f686f53786b795337696d4e442b6c4c58465866446147513547695137447135694d4d7568745252333559366e4e396a6478734636645664534a525778714130506952384e665358327563666562507644416c5341426a64447351685374336466676476512f6265326f5830375930446b65733234654a6a6a512f70533235687a2f3661636f494546526c41756964744c7663676b514e56324d35766432775236354443465369534e376b65704d45574c44543272704976656f3057392f696e4571354f37666f595870797237442b5157675a496f746c666c69486a78706d4367795656397539446a6479484e4e726a786f54307059396d66623639385931443441364853392b2f2f7442733943454e555872307979334c41726476535275764c306f6b496b6e336c4d61453949555a4c575876377a7442776755752b456f58306f72322b38444e66647a384e5251475737537633633573584c6e354e3065535931416142784c3370526e424b5058353077624f686d77677061434550316f6c4736494a6b6d6d6963666e4770387163725333686b4254366135556367445343306a695178424d344b70703965364669484d080231496753376f6e2f63324a413130556a624833344d466c7644426943516d6e45426467644553444c546848622f6551546d617258325076327776327778504f4138454d6872706f364f4e53342f444b30437835372f3368635058316b6651434454586753476b4d5343647a35486a7a346f2b33536e6151384d4355524f49774a454f325132392b755075714d3173374f427551436c6632723075526c5a58684270776f75596430516b654f7232332f4666712b5a4231524b686665534939494330516d5373536a33353575684330687a59556852337145567061586e5673596b4774494a3355736d2b5a7658742f66474a783543382b6c4668657246363765334634656a4c6e44666554563630396668554e346e6333736138446f39754532445039576a42796d6c3978434f726d72787641713965754e734846347774324461504c306a35766270455534366653783779396f372f365074384b446c705361712b35667662486173725a454a34397a6555727052492f336f7874485031637259624d5668455050373638364d444c3145545750767231514b5a6c6a32356e71336265484e313559685031526c4679646e447a5a62663758434435796550316a714272754b56545a6548333173626f356c4e2f59395a452f4f487a7a4d5658526d3944574b7176564f37655031494d567878593461306f75494a3330635a483378424b526c53362b2f4d0802665a3171764c71316176713555726c7a764e3752326f6b752b786b5231694756724c53682b732f337731564c312b75566935586e7231372f73765234614f73364752487472593047704933782f7646333166566f2b7533662f34576450584e67787653646c5a73574d5a626b7955595739686376586c302f59387275496e62627835385874334f637269734855484a36734f4d684f545673534e65664c693965764e77372b584c50576c312b794337764779564867334b574634676c4e31655864313775616675716175726b5266342f4d766f46717a47754647514f4d392b797a46436a5a32647a63334e5a484a7a522b51357939544730524a3431494169372b464461474f4858455975414e6c524767484a772b4e7250467247366877525733484a794e54487873364b33706c6c743469744b59323459634c6233336a512b397a4c65693958787657346e765759437047527741592f69424d6b7232343937716d4842434e61575147626367484a52476b7953494f55484346356675796f32353065704255336c49783937454779716d6e6455724b414e44754d434e3451625663774a5864644e455956446b2f786b6d4d7947706945733466457a635256476d37484a50732b476d5a57334953306a6b7a52322b45586d487439686161757953675a452b642b2f4238446b6f6d7a425352786c68684e6c3949344d6c43796754524c78794350334d080263646a2b36773170426d49325159646e78496157624935746a414d695244463257493044592f6a4a6f48556f7a51454366386968686c6a4e4b6b745453307544555043654c792b395868493550483868546865584c4b416848396679346b5363434e4f583677394271564a2f4b3354516742444567516a6c566d35486449736a644a6b6665786f636f2f446b433735664436762b75356561424a49706756777931564e463551456e2b382f702b5a50423553415a35313372596e364b4a7248754c48664476386c6f6669592b564f6e7676494a767638486c43614b76614c567a4d6b34516b52434f413251356b384c676b2b5977584139494554716c7a5335463636776a4c554478435658715076767870634b55384149552f49464944414a5a67566d54454a774d725a425264422f725a6f415557574336795a706a524651756e52614155714b5362345a6b364a5958484c746a704c53617949784e714c546c3035314e662f562f4358515677615a76706742586670712f75762f666a322b66766a686b74593372506d76344d762f75745150502f7a774e627a6e314c3979702f38442f4e776c666f4346372f3841414141415355564f524b35435949493d273b0a202020207d2c0a2020202066756e6374696f6e2028652c20742c206e29207b0a2020202020207661722072203d206e2830293b0a2020202020207661722069203d206e2837294d08023b0a20202020202069662028747970656f66202869203d20692e5f5f65734d6f64756c65203f20692e64656661756c74203a206929203d3d2027737472696e672729207b0a202020202020202069203d205b5b652e692c20692c2027275d5d3b0a2020202020207d0a202020202020766172206f203d207b20696e736572743a202768656164272c2073696e676c65746f6e3a2066616c7365207d3b0a2020202020207228692c206f293b0a2020202020207661722061203d20692e6c6f63616c73203f20692e6c6f63616c73203a207b7d3b0a202020202020652e6578706f727473203d20613b0a202020207d2c0a2020202066756e6374696f6e2028652c20742c206e29207b0a2020202020202874203d206e2831292866616c736529292e70757368285b0a2020202020202020652e692c0a2020202020202020272e6d657373616765207b5c725c6e202020207669736962696c6974793a2068696464656e3b5c725c6e20202020636f6c6f723a20234242423b5c725c6e20202020746578742d616c69676e3a2063656e7465723b5c725c6e20202020626f726465722d7261646975733a202e34656d3b5c725c6e2020202070616464696e673a202e3534656d3b5c725c6e20202020706f736974696f6e3a2066697865643b5c725c6e202020207a2d696e6465783a20323b5c725c6e202020206c6566743a203530253b5c725c6e20204d08022020746f703a20372e3334656d3b5c725c6e20202020666f6e742d73697a653a20312e3235656d3b202f2a20526f626f746f202a2f5c725c6e202020202f2a20666f6e742d73697a653a20312e3235656d3b202a2f5c725c6e202020206f7061636974793a202e39383b5c725c6e20202020626f782d736861646f773a2030202e3237656d202e3534656d2030207267626128302c20302c20302c20302e34292c2030202e34656d20312e3334656d2030207267626128302c20302c20302c20302e3339293b5c725c6e20202020776f72642d777261703a20627265616b2d776f72643b5c725c6e20207d5c725c6e20205c725c6e202023736e61636b626172207b5c725c6e202020206261636b67726f756e642d636f6c6f723a20233232323b5c725c6e202020206d696e2d77696474683a2031362e3637656d3b5c725c6e202020206d61782d77696474683a2031362e3637656d3b5c725c6e202020206d617267696e2d6c6566743a202d382e333335656d3b5c725c6e20207d5c725c6e20205c725c6e2020236572726f726d7367207b5c725c6e202020206261636b67726f756e642d636f6c6f723a20233939323332393b5c725c6e20202020637572736f723a20706f696e7465723b5c725c6e202020206d696e2d77696474683a2032332e3334656d3b5c725c6e202020206d61782d77696474683a2032332e3334656d3b5c725c6e204d08022020206d617267696e2d6c6566743a202d31312e3637656d3b5c725c6e20202020636f6c6f723a20236464643b5c725c6e20207d5c725c6e20205c725c6e2020236572726f726d7367202e636c6f736562746e207b5c725c6e202020206d617267696e2d6c6566743a202e3638656d3b5c725c6e20202020636f6c6f723a20236464643b5c725c6e20202020666f6e742d7765696768743a20626f6c643b5c725c6e20202020666c6f61743a2072696768743b5c725c6e20202020666f6e742d73697a653a20312e3438656d3b5c725c6e202020206c696e652d6865696768743a202e39656d3b5c725c6e20202020637572736f723a20706f696e7465723b5c725c6e20207d5c725c6e20205c725c6e2020236572726f726d7367202e636c6f736562746e3a686f766572207b5c725c6e20202020636f6c6f723a20233030303b5c725c6e20207d5c725c6e20205c725c6e202023736e61636b6261722e73686f772c5c725c6e2020236572726f726d73672e73686f77207b5c725c6e202020207669736962696c6974793a2076697369626c653b5c725c6e202020202d7765626b69742d616e696d6174696f6e3a206d6573736167652d2d66616465696e20302e353b5c725c6e20202020616e696d6174696f6e3a206d6573736167652d2d66616465696e20302e35733b5c725c6e20207d5c725c6e20205c725c6e202023736e61636b6261724d08022e686964652c5c725c6e2020236572726f726d73672e68696465207b5c725c6e202020207669736962696c6974793a2068696464656e3b5c725c6e202020202d7765626b69742d616e696d6174696f6e3a206d6573736167652d2d666164656f757420302e35733b5c725c6e20202020616e696d6174696f6e3a206d6573736167652d2d666164656f757420302e35733b5c725c6e202020207472616e736974696f6e3a207669736962696c69747920302e35733b5c725c6e20207d5c725c6e20205c725c6e2020402d7765626b69742d6b65796672616d6573206d6573736167652d2d66616465696e207b5c725c6e2020202066726f6d207b5c725c6e202020202020746f703a20342e3637656d3b5c725c6e2020202020206f7061636974793a20303b5c725c6e202020207d5c725c6e20205c725c6e20202020746f207b5c725c6e202020202020746f703a20372e3334656d3b5c725c6e2020202020206f7061636974793a202e39383b5c725c6e202020207d5c725c6e20207d5c725c6e20205c725c6e2020406b65796672616d6573206d6573736167652d2d66616465696e207b5c725c6e2020202066726f6d207b5c725c6e202020202020746f703a20342e3637656d3b5c725c6e2020202020206f7061636974793a20303b5c725c6e202020207d5c725c6e20205c725c6e20202020746f207b5c725c6e202020202020746f703a204d0802372e3334656d3b5c725c6e2020202020206f7061636974793a202e39383b5c725c6e202020207d5c725c6e20207d5c725c6e20205c725c6e2020402d7765626b69742d6b65796672616d6573206d6573736167652d2d666164656f7574207b5c725c6e2020202066726f6d207b5c725c6e202020202020746f703a20372e3334656d3b5c725c6e2020202020206f7061636974793a202e39383b5c725c6e202020207d5c725c6e20205c725c6e20202020746f207b5c725c6e202020202020746f703a20342e3637656d3b5c725c6e2020202020206f7061636974793a20303b5c725c6e202020207d5c725c6e20207d5c725c6e20205c725c6e2020406b65796672616d6573206d6573736167652d2d666164656f7574207b5c725c6e2020202066726f6d207b5c725c6e202020202020746f703a20372e3334656d3b5c725c6e2020202020206f7061636974793a202e39383b5c725c6e202020207d5c725c6e20205c725c6e20202020746f207b5c725c6e202020202020746f703a20342e3637656d3b5c725c6e2020202020206f7061636974793a20303b5c725c6e202020207d5c725c6e20207d5c725c6e2020272c0a202020202020202027272c0a2020202020205d293b0a202020202020652e6578706f727473203d20743b0a202020207d2c0a2020202066756e6374696f6e2028742c206e2c207229207b0a202020202020277573654d080220737472696374273b0a20202020202066756e6374696f6e206328652c207429207b0a2020202020202020746869732e746f706963203d20653b0a2020202020202020696620287429207b0a20202020202020202020746869732e6f6e4576656e74203d20743b0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e2064286529207b0a2020202020202020696620287329207b0a202020202020202020207661722074203d206e657720732e4c697374656e657228293b0a20202020202020202020742e676574546f706963203d2066756e6374696f6e202829207b0a20202020202020202020202072657475726e20652e676574546f70696328293b0a202020202020202020207d3b0a20202020202020202020742e6f6e4576656e74203d2066756e6374696f6e20287429207b0a202020202020202020202020652e6f6e4576656e742874293b0a202020202020202020207d3b0a20202020202020202020732e6164644c697374656e65722874293b0a20202020202020207d20656c7365207b0a20202020202020202020766172206e203d20652e676574546f70696328293b0a202020202020202020207661722072203d206c5b6e5d3b0a2020202020202020202069662028217229207b0a20202020202020202020202072203d205b5d3b0a2020202020202020202020206c5b6e5d203d20723b0a204d08022020202020202020207d0a20202020202020202020722e707573682865293b0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e207528652c207429207b0a2020202020202020696620287329207b0a20202020202020202020732e666972654576656e7428652c2074293b0a20202020202020207d20656c7365207b0a20202020202020202020766172206e203d206c5b655d3b0a20202020202020202020696620286e29207b0a202020202020202020202020666f7220287661722072203d20303b2072203c206e2e6c656e6774683b20722b2b29207b0a20202020202020202020202020206e5b725d2e6f6e4576656e742874293b0a2020202020202020202020207d0a202020202020202020207d0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e206828652c207429207b0a2020202020202020666f722028766172206e20696e207429207b0a20202020202020202020655b6e5d203d20745b6e5d3b0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e2077286529207b0a20202020202020207661722074203d20652e746f4c6f7765724361736528293b0a2020202020202020766172206e203d2027273b0a202020202020202069662028672026262028742e737461727473576974682827687474703a2f2f2729207c7c20742e4d080273746172747357697468282768747470733a2f2f27292929207b0a202020202020202020206e203d206d202b2067202b20273f793d273b0a20202020202020207d0a202020202020202072657475726e206e202b20653b0a2020202020207d0a20202020202066756e6374696f6e20762829207b0a202020202020202072657475726e206d202b20673b0a2020202020207d0a20202020202066756e6374696f6e2041286529207b0a202020202020202066756e6374696f6e206e28652c207429207b0a20202020202020202020766172206e203d20303b0a202020202020202020202866756e6374696f6e20286529207b0a20202020202020202020202076617220743b0a202020202020202020202020666f7220280a2020202020202020202020202020766172206e203d202874203d20652e676574456c656d656e747342795461674e616d6528276f707467726f75702729292e6c656e6774683b0a20202020202020202020202020206e3b0a20202020202020202020202020206e2d2d0a20202020202020202020202029207b0a2020202020202020202020202020652e72656d6f76654368696c6428745b6e202d20315d293b0a2020202020202020202020207d0a202020202020202020202020666f7220286e203d20652e6f7074696f6e732e6c656e6774683b206e3b206e2d2d29207b0a2020202020202020202020202020652e4d08026f7074696f6e735b6e202d20315d2e706172656e744e6f64652e72656d6f76654368696c6428652e6f7074696f6e735b6e202d20315d293b0a2020202020202020202020207d0a202020202020202020207d292865293b0a202020202020202020207661722072203d20646f63756d656e742e637265617465456c656d656e7428276f7074696f6e27293b0a20202020202020202020722e74657874203d202753656c6563742041746172692037383030204361727472696467652e2e2e273b0a20202020202020202020722e64697361626c6564203d20747275653b0a20202020202020202020722e73656c6563746564203d20747275653b0a20202020202020202020652e617070656e644368696c642872293b0a202020202020202020202866756e6374696f6e206528742c207229207b0a2020202020202020202020206e2b2b3b0a202020202020202020202020747279207b0a20202020202020202020202020207661722069203d20722e66696c65733b0a2020202020202020202020202020666f722028766172206f203d20303b206f203c20692e6c656e6774683b206f2b2b29207b0a202020202020202020202020202020207661722061203d20695b6f5d3b0a20202020202020202020202020202020766172206c203d20646f63756d656e742e637265617465456c656d656e7428276f7074696f6e27293b0a2020202020204d0802202020202020202020206c2e74657874203d20612e6e616d653b0a202020202020202020202020202020206c2e76616c7565203d20612e706174683b0a20202020202020202020202020202020742e617070656e644368696c64286c293b0a20202020202020202020202020207d0a2020202020202020202020202020696620286e203c203229207b0a202020202020202020202020202020207661722073203d20722e666f6c646572733b0a20202020202020202020202020202020666f7220286f203d20303b206f203c20732e6c656e6774683b206f2b2b29207b0a2020202020202020202020202020202020207661722063203d20735b6f5d3b0a20202020202020202020202020202020202069662028632e6e616d652026262028632e70617468207c7c20632e6368696c6472656e2929207b0a20202020202020202020202020202020202020207661722064203d20646f63756d656e742e637265617465456c656d656e7428276f707467726f757027293b0a2020202020202020202020202020202020202020642e73657441747472696275746528276c6162656c272c20632e6e616d65293b0a2020202020202020202020202020202020202020742e617070656e644368696c642864293b0a20202020202020202020202020202020202020206528642c2063293b0a2020202020202020202020202020202020207d0a202020204d08022020202020202020202020207d0a20202020202020202020202020207d0a2020202020202020202020207d2066696e616c6c79207b0a20202020202020202020202020206e2d2d3b0a2020202020202020202020207d0a202020202020202020207d2928652c2074293b0a20202020202020207d0a202020202020202066756e6374696f6e207228742c206929207b0a2020202020202020202066756e6374696f6e206f28652c207429207b0a20202020202020202020202069662028742e696e6465784f6628272f2f2729203d3d202d3129207b0a202020202020202020202020202072657475726e2065202b20272f27202b20743b0a2020202020202020202020207d20656c7365207b0a202020202020202020202020202072657475726e20743b0a2020202020202020202020207d0a202020202020202020207d0a2020202020202020202066756e6374696f6e206128652c20742c206e2c206929207b0a2020202020202020202020207661722061203d20742e706174685072656669783b0a20202020202020202020202069662028216129207b0a2020202020202020202020202020766172206c203d206e203f206e2e6c617374496e6465784f6628272f2729203a202d313b0a202020202020202020202020202061203d206c203d3d202d31203f202727203a206e2e737562737472696e6728302c206c293b0a202020202020204d080220202020207d0a2020202020202020202020207661722073203d205b5d3b0a2020202020202020202020207661722063203d20742e66696c65733b0a202020202020202020202020696620286329207b0a2020202020202020202020202020666f7220287661722064203d20303b2064203c20632e6c656e6774683b20642b2b29207b0a202020202020202020202020202020207661722075203d20635b645d3b0a2020202020202020202020202020202069662028752e7061746820262620752e6e616d6529207b0a2020202020202020202020202020202020207661722070203d20635b645d3b0a202020202020202020202020202020202020702e70617468203d206f28612c20635b645d2e70617468293b0a202020202020202020202020202020202020732e707573682870293b0a202020202020202020202020202020207d0a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020202020692e66696c6573203d20733b0a2020202020202020202020207661722068203d205b5d3b0a2020202020202020202020207661722066203d20742e666f6c646572733b0a202020202020202020202020696620286629207b0a2020202020202020202020202020666f72202864203d20303b2064203c20662e6c656e6774683b20642b2b29207b0a20202020202020202020202020202020694d0802662028665b645d2e6368696c6472656e29207b0a2020202020202020202020202020202020207661722067203d20665b645d3b0a202020202020202020202020202020202020682e707573682867293b0a2020202020202020202020202020202020206e6577207228652c2067292e66726f6d4c69737428665b645d2e6368696c6472656e2c2061202b20272f27293b0a202020202020202020202020202020207d20656c73652069662028665b645d2e7061746829207b0a20202020202020202020202020202020202067203d20665b645d3b0a202020202020202020202020202020202020682e707573682867293b0a202020202020202020202020202020202020672e70617468203d206f28612c20665b645d2e70617468293b0a2020202020202020202020202020202020206e6577207228652c2067292e66726f6d55726c28672e70617468293b0a202020202020202020202020202020207d0a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020202020692e666f6c64657273203d20683b0a202020202020202020207d0a2020202020202020202066756e6374696f6e206c2829207b0a202020202020202020202020742e6c6f6164436f756e742d2d3b0a20202020202020202020202069662028742e6c6f6164436f756e74203d3d203029207b0a2020202020202020202020204d0802202069662028742e6572726f7229207b0a202020202020202020202020202020207928742e6572726f724d657373616765293b0a20202020202020202020202020207d20656c7365207b0a20202020202020202020202020202020666f7220287661722072203d20303b2072203c20652e6c656e6774683b20722b2b29207b0a2020202020202020202020202020202020206e28655b725d2c20742e726f6f74293b0a202020202020202020202020202020207d0a20202020202020202020202020202020752827726f6d6c6973744c6f61646564272c206e756c6c293b0a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020207d0a20202020202020202020746869732e66726f6d4c697374203d2066756e6374696f6e2028652c206e29207b0a202020202020202020202020742e6c6f6164436f756e742b2b3b0a2020202020202020202020206128742c20652c206e2c2069293b0a2020202020202020202020206c28293b0a202020202020202020207d3b0a20202020202020202020746869732e66726f6d55726c203d2066756e6374696f6e20286529207b0a202020202020202020202020742e6c6f6164436f756e742b2b3b0a202020202020202020202020766172206e203d206e657720584d4c487474705265717565737428293b0a2020202020202020202020206e2e6f70656e4d08022827474554272c2077286529293b0a2020202020202020202020206e2e6f6e6c6f6164203d2066756e6374696f6e202829207b0a2020202020202020202020202020747279207b0a20202020202020202020202020202020696620286e2e737461747573203e3d20333030207c7c206e2e737461747573203c2032303029207b0a2020202020202020202020202020202020207468726f77206e2e737461747573202b20273a2027202b206e2e737461747573546578743b0a202020202020202020202020202020207d0a202020202020202020202020202020207661722072203d204a534f4e2e7061727365286e2e726573706f6e736554657874293b0a202020202020202020202020202020206128742c20722c20652c2069293b0a20202020202020202020202020207d20636174636820286e29207b0a20202020202020202020202020202020742e6572726f72203d20747275653b0a20202020202020202020202020202020742e6572726f724d657373616765203d2065202b2027202827202b206e202b202729273b0a20202020202020202020202020207d0a20202020202020202020202020206c28293b0a2020202020202020202020207d3b0a2020202020202020202020206e2e6f6e6572726f72203d2066756e6374696f6e202829207b0a202020202020202020202020202079280a202020202020202020202020202020204d0802274572726f7220617474656d7074696e6720746f207265616420636172747269646765206c6973742e3c62723e2853656520636f6e736f6c65206c6f6720666f722064657461696c7329270a2020202020202020202020202020293b0a2020202020202020202020207d3b0a2020202020202020202020206e2e73656e6428293b0a202020202020202020207d3b0a20202020202020207d0a202020202020202066756e6374696f6e206928652c207429207b0a20202020202020202020766172206e203d207b206c6f6164436f756e743a20302c206572726f723a2066616c73652c206572726f724d6573736167653a2027272c20726f6f743a207b7d207d3b0a20202020202020202020696620287429207b0a2020202020202020202020206e65772072286e2c206e2e726f6f74292e66726f6d55726c2865293b0a202020202020202020207d20656c7365207b0a202020202020202020202020747279207b0a20202020202020202020202020207661722069203d204a534f4e2e70617273652865293b0a20202020202020202020202020206e65772072286e2c206e2e726f6f74292e66726f6d4c69737428692c206e756c6c293b0a2020202020202020202020207d20636174636820286529207b0a2020202020202020202020202020792865293b0a2020202020202020202020207d0a202020202020202020207d0a2020202020204d080220207d0a2020202020202020666f7220287661722074203d20303b2074203c20652e6c656e6774683b20742b2b29207b0a202020202020202020202866756e6374696f6e202829207b0a202020202020202020202020766172206e203d20655b745d3b0a2020202020202020202020206e2e6f6e6368616e6765203d2066756e6374696f6e202829207b0a20202020202020202020202020207661722074203d206e2e76616c75653b0a20202020202020202020202020207828742c2074727565293b0a2020202020202020202020202020746869732e626c757228293b0a2020202020202020202020202020666f7220287661722072203d20303b2072203c20652e6c656e6774683b20722b2b29207b0a2020202020202020202020202020202069662028655b725d20213d206e29207b0a202020202020202020202020202020202020655b725d2e76616c7565203d20743b0a202020202020202020202020202020207d0a20202020202020202020202020207d0a2020202020202020202020207d3b0a202020202020202020207d2928293b0a20202020202020207d0a2020202020202020746869732e6c6f61644c69737446726f6d4a736f6e203d2066756e6374696f6e20286529207b0a202020202020202020206928652c2066616c7365293b0a20202020202020207d3b0a2020202020202020746869732e6c6f61644c69737446724d08026f6d46696c65203d2066756e6374696f6e20286529207b0a202020202020202020207661722074203d20652e6e616d65203f20652e6e616d652e746f4c6f776572436173652829203a2027273b0a20202020202020202020766172206e203d20652e74797065203f20652e747970652e746f4c6f776572436173652829203a2027273b0a2020202020202020202069662028742e656e64735769746828272e6a736f6e2729207c7c206e2e696e636c756465732827746578742729207c7c206e2e696e636c7564657328276a736f6e272929207b0a2020202020202020202020207661722072203d206e65772046696c6552656164657228293b0a2020202020202020202020207661722069203d20746869733b0a202020202020202020202020722e6f6e6c6f6164203d2066756e6374696f6e20286529207b0a2020202020202020202020202020692e6c6f61644c69737446726f6d4a736f6e28652e7461726765742e726573756c74293b0a2020202020202020202020207d3b0a202020202020202020202020722e726561644173546578742865293b0a20202020202020202020202072657475726e20747275653b0a202020202020202020207d0a2020202020202020202072657475726e2066616c73653b0a20202020202020207d3b0a2020202020202020746869732e6c6f61644c69737446726f6d55726c203d2066756e6374696f4d08026e20286529207b0a202020202020202020206928652c2074727565293b0a20202020202020207d3b0a2020202020202020746869732e726573657453656c656374696f6e203d2066756e6374696f6e202829207b0a20202020202020202020666f7220287661722074203d20303b2074203c20652e6c656e6774683b20742b2b29207b0a202020202020202020202020655b745d2e73656c6563746564496e646578203d20303b0a202020202020202020207d0a20202020202020207d3b0a2020202020207d0a20202020202066756e6374696f6e204928652c207429207b0a2020202020202020766172206e203d2065203d3d202d313b0a20202020202020206966202865203d3d2045207c7c206e29207b0a202020202020202020207661722072203d20303b0a2020202020202020202069662028216e202626207429207b0a2020202020202020202020207661722069203d20446174652e6e6f772829202d205f3b0a2020202020202020202020206966202869203c207429207b0a202020202020202020202020202072203d2074202d20693b0a2020202020202020202020207d0a202020202020202020207d0a2020202020202020202073657454696d656f75742866756e6374696f6e202829207b0a202020202020202020202020696620286e207c7c2065203d3d204529207b0a20202020202020202020202020206b2e636c61734d0802734c6973742e61646428276869646527293b0a20202020202020202020202020206b2e636c6173734c6973742e72656d6f7665282773686f7727293b0a2020202020202020202020207d0a202020202020202020207d2c2072293b0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e20442829207b0a2020202020202020532e636c6173734c6973742e61646428276869646527293b0a2020202020202020532e636c6173734c6973742e72656d6f7665282773686f7727293b0a2020202020207d0a20202020202066756e6374696f6e205228652c20742c206e2c20722c206929207b0a2020202020202020766172206f203d20646f63756d656e742e676574456c656d656e74427949642865293b0a20202020202020206f2e636c6173734e616d65203d2027636f6e74726f6c732d627574746f6e273b0a2020202020202020696620286929207b0a202020202020202020206f2e6f6e636c69636b203d20693b0a20202020202020207d0a20202020202020207661722061203d20646f63756d656e742e637265617465456c656d656e7428276c6162656c27293b0a20202020202020206f2e617070656e644368696c642861293b0a2020202020202020696620287229207b0a20202020202020202020612e7365744174747269627574652827746162696e646578272c20273027293b0a2020202020204d080220202020612e6f6e6d6f757365646f776e203d2066756e6374696f6e20286529207b0a202020202020202020202020652e70726576656e7444656661756c7428293b0a202020202020202020207d3b0a20202020202020202020696620286929207b0a2020202020202020202020206f2e6f6e6b6579646f776e203d2066756e6374696f6e20286529207b0a20202020202020202020202020207661722074203d20652e77686963683b0a20202020202020202020202020206966202874203d3d3d203133207c7c2074203d3d3d20333229207b0a202020202020202020202020202020206928293b0a20202020202020202020202020207d0a2020202020202020202020207d3b0a202020202020202020207d0a20202020202020207d0a2020202020202020766172206c203d20646f63756d656e742e637265617465456c656d656e742827696d6727293b0a2020202020202020612e617070656e644368696c64286c293b0a20202020202020206c2e636c6173734e616d65203d2027636f6e74726f6c732d627574746f6e5f5f696d67273b0a20202020202020206c2e7365744174747269627574652827647261676761626c65272c202766616c736527293b0a20202020202020206c2e7365744174747269627574652827737263272c2074293b0a20202020202020206c2e73657441747472696275746528277469746c65272c206e294d08023b0a202020202020202072657475726e207b206469763a206f2c206c6162656c3a20612c20696d673a206c207d3b0a2020202020207d0a20202020202066756e6374696f6e207a286529207b0a2020202020202020652e70726576656e7444656661756c7428293b0a20202020202020207661722074203d206e756c6c3b0a202020202020202069662028652e646174615472616e736665722e6974656d7329207b0a20202020202020202020666f722028766172206e203d20303b206e203c20652e646174615472616e736665722e6974656d732e6c656e6774683b206e2b2b29207b0a2020202020202020202020207661722072203d20652e646174615472616e736665722e6974656d735b6e5d3b0a20202020202020202020202069662028722e6b696e64203d3d3d202766696c652729207b0a202020202020202020202020202074203d20722e676574417346696c6528293b0a2020202020202020202020202020696620284c2e6c6f61644c69737446726f6d46696c6528742929207b0a2020202020202020202020202020202074203d206e756c6c3b0a20202020202020202020202020207d0a2020202020202020202020202020627265616b3b0a2020202020202020202020207d0a202020202020202020202020696620280a2020202020202020202020202020722e6b696e64203d3d3d2027737472696e67272026260a20204d080220202020202020202020202028722e747970652e6d6174636828275e746578742f7572692d6c6973742729207c7c20722e747970652e6d6174636828275e746578742f706c61696e2729290a20202020202020202020202029207b0a2020202020202020202020202020722e6765744173537472696e672866756e6374696f6e20286529207b0a20202020202020202020202020202020472865293b0a20202020202020202020202020207d293b0a2020202020202020202020207d0a202020202020202020207d0a20202020202020207d0a2020202020202020696620287429207b0a20202020202020202020512874293b0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e205628652c207429207b0a2020202020202020465b655d203d207b0a202020202020202020206c6566743a20742e6765744c65667428292c0a2020202020202020202072696768743a20742e676574526967687428292c0a2020202020202020202075703a20742e676574557028292c0a20202020202020202020646f776e3a20742e676574446f776e28292c0a2020202020202020202062313a20742e676574427574746f6e3128292c0a2020202020202020202062323a20742e676574427574746f6e3228292c0a20202020202020207d3b0a2020202020207d0a20202020202066756e6374696f6e207128652c207429204d08027b0a2020202020202020766172206e203d20465b655d3b0a2020202020202020696620286e20213d206e756c6c29207b0a20202020202020202020666f722028766172207220696e206e29207b0a2020202020202020202020207661722069203d206e5b725d3b0a20202020202020202020202073776974636820287229207b0a20202020202020202020202020206361736520276c656674273a0a20202020202020202020202020202020742e7365744c6566742869293b0a20202020202020202020202020206361736520277269676874273a0a20202020202020202020202020202020742e73657452696768742869293b0a20202020202020202020202020206361736520277570273a0a20202020202020202020202020202020742e73657455702869293b0a2020202020202020202020202020636173652027646f776e273a0a20202020202020202020202020202020742e736574446f776e2869293b0a20202020202020202020202020206361736520276231273a0a20202020202020202020202020202020742e736574427574746f6e312869293b0a20202020202020202020202020206361736520276232273a0a20202020202020202020202020202020742e736574427574746f6e322869293b0a2020202020202020202020207d0a202020202020202020207d0a20202020202020207d0a2020202020207d0a20202020204d08022066756e6374696f6e204a2829207b0a2020202020202020696620285729207b0a20202020202020202020747279207b0a202020202020202020202020696620286c6f63616c53746f726167652e6765744974656d28277072656673272929207b0a202020202020202020202020202046203d204a534f4e2e7061727365286c6f63616c53746f726167652e6765744974656d282770726566732729293b0a202020202020202020202020202071282770316d6170272c204b2e70314b65794d6170293b0a202020202020202020202020202071282770326d6170272c204b2e70324b65794d6170293b0a20202020202020202020202020202866756e6374696f6e202829207b0a202020202020202020202020202020207661722065203d20462e636f6e736f6c654d61703b0a20202020202020202020202020202020696620286520213d206e756c6c29207b0a202020202020202020202020202020202020666f722028766172207420696e206529207b0a2020202020202020202020202020202020202020766172206e203d20655b745d3b0a202020202020202020202020202020202020202073776974636820287429207b0a202020202020202020202020202020202020202020206361736520277061757365273a0a2020202020202020202020202020202020202020202020204b2e73657450617573654b6579286e293b0a2020204d08022020202020202020202020202020202020202063617365202773656c656374273a0a2020202020202020202020202020202020202020202020204b2e73657453656c6563744b6579286e293b0a202020202020202020202020202020202020202020206361736520277265736574273a0a2020202020202020202020202020202020202020202020204b2e73657452657365744b6579286e293b0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020207d0a202020202020202020202020202020207d0a20202020202020202020202020207d2928293b0a20202020202020202020202020207661722065203d20462e646973706c617946696c7465723b0a2020202020202020202020202020696620286520213d3d20766f6964203029207b0a20202020202020202020202020202020592e73657446696c746572456e61626c65642865293b0a20202020202020202020202020207d0a20202020202020202020202020207661722074203d20462e646973706c6179526174696f3b0a2020202020202020202020202020696620287420213d3d20766f6964203029207b0a20202020202020202020202020202020592e73657453637265656e526174696f2874293b0a20202020202020202020202020207d0a2020202020202020202020202020766172206e203d20462e646973706c6179534d0802697a653b0a2020202020202020202020202020696620286e20213d3d20766f6964203029207b0a20202020202020202020202020202020592e73657453637265656e53697a65286e293b0a20202020202020202020202020207d0a20202020202020202020202020207661722072203d20462e6873456e61626c65643b0a2020202020202020202020202020696620287220213d3d20766f6964203029207b0a20202020202020202020202020202020502e736574456e61626c65642872293b0a20202020202020202020202020207d0a20202020202020202020202020207661722069203d20462e6873476c6f62616c3b0a2020202020202020202020202020696620286920213d3d20766f6964203029207b0a20202020202020202020202020202020502e736574476c6f62616c2869293b0a20202020202020202020202020207d0a2020202020202020202020202020766172206f203d20462e687346616c6c6261636b3b0a2020202020202020202020202020696620286f20213d3d20766f6964203029207b0a20202020202020202020202020202020502e7365744c6f63616c46616c6c6261636b286f293b0a20202020202020202020202020207d0a20202020202020202020202020207661722061203d20462e70616c657474653b0a2020202020202020202020202020696620286120213d3d20766f6964203029207b0a2020204d0802202020202020202020202020204f2e73657450616c65747465496e6465782861293b0a20202020202020202020202020207d0a2020202020202020202020202020766172206c203d20465b4e5d3b0a2020202020202020202020202020696620286c20213d3d20766f6964203029207b0a20202020202020202020202020202020592e73657446756c6c73637265656e4d6f6465286c293b0a20202020202020202020202020207d0a20202020202020202020202020207661722073203d20462e7673796e633b0a2020202020202020202020202020696620287320213d3d20766f6964203029207b0a202020202020202020202020202020206a2e7365745673796e63456e61626c65642873293b0a20202020202020202020202020207d0a20202020202020202020202020207661722063203d20462e6672616d65536b69703b0a2020202020202020202020202020696620286320213d3d20766f6964203029207b0a202020202020202020202020202020206a2e736574536b69704c6576656c2863293b0a20202020202020202020202020207d0a20202020202020202020202020207661722064203d20462e786d4d6f64653b0a2020202020202020202020202020696620286420213d3d20766f6964203029207b0a20202020202020202020202020202020482e536574586d4d6f64652864293b0a20202020202020202020202020204d08027d0a2020202020202020202020207d0a202020202020202020207d20636174636820286529207b0a20202020202020202020202075282773686f774572726f72272c2027416e206572726f72206f63637572726564206c6f6164696e6720707265666572656e6365733a2027202b2065293b0a20202020202020202020202046203d207b7d3b0a202020202020202020207d0a20202020202020207d20656c7365207b0a20202020202020202020636f6e736f6c652e6c6f672827556e61626c6520746f206c6f616420707265666572656e6365732c206c6f63616c2073746f726167652064697361626c65642e27293b0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e205a2829207b0a2020202020202020696620285729207b0a20202020202020202020747279207b0a20202020202020202020202056282770316d6170272c204b2e70314b65794d6170293b0a20202020202020202020202056282770326d6170272c204b2e70324b65794d6170293b0a202020202020202020202020462e636f6e736f6c654d6170203d207b0a202020202020202020202020202070617573653a204b2e67657450617573654b657928292c0a202020202020202020202020202073656c6563743a204b2e67657453656c6563744b657928292c0a202020202020202020202020202072657365743a204b2e676574524d0802657365744b657928292c0a2020202020202020202020207d3b0a202020202020202020202020462e646973706c617946696c746572203d20592e697346696c746572456e61626c656428293b0a202020202020202020202020462e646973706c617953697a65203d20592e67657453637265656e53697a6528293b0a202020202020202020202020462e646973706c6179526174696f203d20592e67657453637265656e526174696f28293b0a202020202020202020202020462e6873456e61626c6564203d20502e676574456e61626c656428293b0a202020202020202020202020462e6873476c6f62616c203d20502e676574476c6f62616c28293b0a202020202020202020202020462e687346616c6c6261636b203d20502e69734c6f63616c46616c6c6261636b28293b0a202020202020202020202020462e70616c65747465203d204f2e67657450616c65747465496e64657828293b0a202020202020202020202020465b4e5d203d20592e67657446756c6c73637265656e4d6f646528293b0a202020202020202020202020462e7673796e63203d206a2e69735673796e63456e61626c656428293b0a202020202020202020202020462e6672616d65536b6970203d206a2e676574536b69704c6576656c28293b0a202020202020202020202020462e786d4d6f6465203d20482e476574586d4d6f646528293b0a2020202020204d08022020202020206c6f63616c53746f726167652e7365744974656d28277072656673272c204a534f4e2e737472696e67696679284629293b0a202020202020202020207d20636174636820286529207b0a20202020202020202020202075282773686f774572726f72272c2027416e206572726f72206f6363757272656420736176696e6720707265666572656e6365733a2027202b2065293b0a202020202020202020207d0a20202020202020207d20656c7365207b0a20202020202020202020636f6e736f6c652e6c6f672827556e61626c6520746f207361766520707265666572656e6365732c206c6f63616c2073746f726167652064697361626c65642e27293b0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e206765286529207b0a2020202020202020666f7220287661722074203d20303b2074203c20652e6c656e6774683b20742b2b29207b0a20202020202020202020655b745d203d20303b0a20202020202020207d0a2020202020202020766172206e203d20274141426f673670566e41494c446749414378304c4241414442424542446741524178384141414141414141414141414141414141414245273b0a2020202020202020666f72202874203d20303b2074203c203138333b20742b2b29207b0a202020202020202020206e202b3d202741273b0a20202020202020207d0a20204d08022020202020206e202b3d202742273b0a2020202020202020666f72202874203d20303b2074203c2034353b20742b2b29207b0a202020202020202020206e202b3d20272f663339273b0a20202020202020207d0a2020202020202020626528286e202b3d20272f66333827292c2065293b0a2020202020207d0a20202020202066756e6374696f6e206d65286529207b0a20202020202020207661722074203d2027273b0a2020202020202020666f722028766172206e203d20303b206e203c20652e6c656e6774683b206e2b2b29207b0a2020202020202020202074202b3d20537472696e672e66726f6d43686172436f646528655b6e5d293b0a20202020202020207d0a202020202020202072657475726e2062746f612874293b0a2020202020207d0a20202020202066756e6374696f6e20626528652c207429207b0a2020202020202020766172206e203d2061746f622865293b0a2020202020202020666f7220287661722072203d20303b2072203c206e2e6c656e6774683b20722b2b29207b0a20202020202020202020745b725d203d206e2e63686172436f646541742872293b0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e2077652829207b0a2020202020202020416528293b0a20202020202020207661722065203d206e6577204461746528292e67657454696d6528293b0a202020204d0802202020207661722074203d0a2020202020202020202028706572666f726d616e636520262620706572666f726d616e63652e6e6f7720262620316533202a20706572666f726d616e63652e6e6f77282929207c7c20303b0a20202020202020207365203d20277878787878787878787878783478787879787878787878787878787878787878272e7265706c616365282f5b78795d2f672c2066756e6374696f6e20286e29207b0a202020202020202020207661722072203d203136202a204d6174682e72616e646f6d28293b0a202020202020202020206966202865203e203029207b0a20202020202020202020202072203d202865202b2072292025203136207c20303b0a20202020202020202020202065203d204d6174682e666c6f6f722865202f203136293b0a202020202020202020207d20656c7365207b0a20202020202020202020202072203d202874202b2072292025203136207c20303b0a20202020202020202020202074203d204d6174682e666c6f6f722874202f203136293b0a202020202020202020207d0a2020202020202020202072657475726e20286e203d3d3d20277827203f2072203a2028332026207229207c2038292e746f537472696e67283136293b0a20202020202020207d293b0a20202020202020206365203d2065652e4361727472696467652e47657444696765737428293b0a20202020202020204d08027565203d2064653b0a202020202020202074652e7365744869676853636f726543616c6c6261636b287065202626202857207c7c20756529203f206f65203a206965293b0a2020202020207d0a20202020202066756e6374696f6e20766528652c207429207b0a2020202020202020636f6e736f6c652e6c6f67282752656164696e6720486967682053636f7265205352414d2066726f6d206c6f63616c2073746f726167652e27293b0a2020202020202020747279207b0a20202020202020202020766172206e203d202866756e6374696f6e202829207b0a2020202020202020202020207661722065203d20276869676853636f72655352414d273b0a2020202020202020202020207661722074203d20747275653b0a202020202020202020202020696620285729207b0a2020202020202020202020202020747279207b0a2020202020202020202020202020202072657475726e206c6f63616c53746f726167652e6765744974656d2865293b0a20202020202020202020202020207d20636174636820287229207b0a202020202020202020202020202020206e203d2022416e206572726f72206f6363757272656420617474656d7074696e6720746f206c6f6164202722202b2065202b2022273a2022202b20723b0a20202020202020202020202020202020696620287429207b0a202020202020202020202020202020202020744d080268726f77206e3b0a202020202020202020202020202020207d0a2020202020202020202020202020202075282773686f774572726f72272c206e293b0a20202020202020202020202020207d0a202020202020202020202020202072657475726e206e756c6c3b0a2020202020202020202020207d0a202020202020202020202020766172206e203d2022556e61626c6520746f2072656164202722202b2065202b2022272c206c6f63616c2073746f726167652064697361626c65642e223b0a202020202020202020202020696620287429207b0a20202020202020202020202020207468726f77206e3b0a2020202020202020202020207d0a202020202020202020202020636f6e736f6c652e6c6f67286e293b0a202020202020202020207d2928293b0a20202020202020202020696620286e29207b0a202020202020202020202020636f6e736f6c652e6c6f672827466f756e6420486967682053636f7265205352414d20696e206c6f63616c2073746f726167652e27293b0a202020202020202020202020747279207b0a20202020202020202020202020206265286e2c206665293b0a2020202020202020202020207d20636174636820286529207b0a20202020202020202020202020207428274572726f7220636f6e76657274696e67205352414d3a2027202b2065293b0a202020202020202020202020202072657475726e3b4d08020a2020202020202020202020207d0a202020202020202020207d20656c7365207b0a202020202020202020202020636f6e736f6c652e6c6f6728274e6f742061626c6520746f2066696e6420486967682053636f7265205352414d20696e206c6f63616c2073746f726167652e27293b0a202020202020202020207d0a2020202020202020202065286665293b0a20202020202020207d20636174636820286529207b0a20202020202020202020742865293b0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e207965286529207b0a20202020202020207661722074203d2066756e6374696f6e20287429207b0a20202020202020202020652874293b0a20202020202020207d3b0a2020202020202020766172206e203d2066756e6374696f6e20287429207b0a20202020202020202020636f6e736f6c652e6c6f672874293b0a2020202020202020202075282773686f774572726f72272c2074293b0a2020202020202020202065286e756c6c293b0a20202020202020207d3b0a202020202020202069662028756529207b0a202020202020202020202866756e6374696f6e2028652c207429207b0a202020202020202020202020636f6e736f6c652e6c6f67282752656164696e6720486967682053636f7265205352414d2066726f6d20676c6f62616c2073746f726167652e27293b0a20202020204d080220202020202020446174652e6e6f7728293b0a202020202020202020202020766172206e203d204228274c6f6164696e6720676c6f62616c206c6561646572626f6172642e2e2e27293b0a2020202020202020202020207661722072203d206e657720584d4c487474705265717565737428293b0a202020202020202020202020722e6f70656e2827474554272c20762829202b20272f6c6f61642e7068703f643d27202b206365293b0a202020202020202020202020722e6f6e6c6f6164203d2066756e6374696f6e202829207b0a202020202020202020202020202069662028722e737461747573203d3d2032303029207b0a20202020202020202020202020202020636f6e736f6c652e6c6f6728275375636365737366756c6c79207265616420676c6f62616c206c6561646572626f61726420666f722067616d6527293b0a20202020202020202020202020202020747279207b0a202020202020202020202020202020202020626528722e726573706f6e7365546578742c206665293b0a202020202020202020202020202020207d20636174636820286529207b0a2020202020202020202020202020202020207428274572726f7220636f6e76657274696e67205352414d3a2027202b2065293b0a20202020202020202020202020202020202072657475726e3b0a202020202020202020202020202020207d0a202020202020204d080220202020202020202065286665293b0a202020202020202020202020202020204d286e2c20316533293b0a20202020202020202020202020207d20656c73652069662028722e737461747573203d3d2032303429207b0a202020202020202020202020202020207661722069203d206e756c6c3b0a2020202020202020202020202020202069662028686529207b0a2020202020202020202020202020202020207665280a202020202020202020202020202020202020202066756e6374696f6e20286529207b0a2020202020202020202020202020202020202020202069203d20653b0a202020202020202020202020202020202020202020207565203d2066616c73653b0a20202020202020202020202020202020202020207d2c0a202020202020202020202020202020202020202066756e6374696f6e202829207b7d0a202020202020202020202020202020202020293b0a202020202020202020202020202020207d0a20202020202020202020202020202020766172206f203d0a20202020202020202020202020202020202027476c6f62616c206c6f61646572626f617264206e6f742063757272656e746c7920737570706f7274656420666f7220746869732067616d652e273b0a202020202020202020202020202020206966202821756529207b0a2020202020202020202020202020202020206f202b3d20273c62723e3c624d0802723e5573696e67206c6f63616c2073746f7261676520666f7220686967682073636f7265732e273b0a202020202020202020202020202020207d0a202020202020202020202020202020206e203d2042286f293b0a20202020202020202020202020202020636f6e736f6c652e6c6f67286f293b0a20202020202020202020202020202020652869293b0a202020202020202020202020202020204d286e2c207565203f2031353030203a20336533293b0a20202020202020202020202020207d20656c7365207b0a2020202020202020202020202020202074280a202020202020202020202020202020202020274572726f722072656164696e6720676c6f62616c206c6561646572626f617264202827202b0a2020202020202020202020202020202020202020722e737461747573202b0a2020202020202020202020202020202020202020273a2027202b0a2020202020202020202020202020202020202020722e73746174757354657874202b0a20202020202020202020202020202020202020202729270a20202020202020202020202020202020293b0a20202020202020202020202020207d0a2020202020202020202020207d3b0a202020202020202020202020722e6f6e6572726f72203d2066756e6374696f6e202829207b0a202020202020202020202020202074280a20202020202020202020202020202020274572726f4d0802722072656164696e6720676c6f62616c206c6561646572626f6172642e3c62723e2873656520636f6e736f6c65206c6f6720666f722064657461696c7329270a2020202020202020202020202020293b0a2020202020202020202020207d3b0a202020202020202020202020722e73656e6428293b0a202020202020202020207d2928742c206e293b0a20202020202020207d20656c7365207b0a20202020202020202020766528742c206e293b0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e2078652829207b0a2020202020202020636f6e736f6c652e6c6f67282757726974696e6720486967682053636f7265205352414d20746f206c6f63616c2073746f726167652e27293b0a20202020202020202866756e6374696f6e202829207b0a202020202020202020207661722065203d20276869676853636f72655352414d273b0a202020202020202020207661722074203d206d65286665293b0a20202020202020202020766172206e203d20747275653b0a2020202020202020202069662028215729207b0a2020202020202020202020207661722072203d2022556e61626c6520746f207772697465202722202b2065202b2022272c206c6f63616c2073746f726167652064697361626c65642e223b0a202020202020202020202020696620286e29207b0a20202020202020202020202020204d08027468726f7720723b0a2020202020202020202020207d0a202020202020202020202020636f6e736f6c652e6c6f672872293b0a20202020202020202020202072657475726e2066616c73653b0a202020202020202020207d0a20202020202020202020747279207b0a2020202020202020202020206c6f63616c53746f726167652e7365744974656d28652c2074293b0a202020202020202020207d20636174636820287429207b0a20202020202020202020202072203d2022416e206572726f72206f6363757272656420617474656d7074696e6720746f2073617665202722202b2065202b2022273a2022202b20743b0a202020202020202020202020696620286e29207b0a20202020202020202020202020207468726f7720723b0a2020202020202020202020207d0a20202020202020202020202075282773686f774572726f72272c2072293b0a20202020202020202020202072657475726e2066616c73653b0a202020202020202020207d0a20202020202020207d2928293b0a2020202020207d0a20202020202066756e6374696f6e2041652829207b0a2020202020202020696620286c6520213d206e756c6c29207b0a20202020202020202020636c65617254696d656f7574286c65293b0a202020202020202020206c65203d206e756c6c3b0a20202020202020207d0a202020202020202069662028616529207b0a2020204d0802202020202020206165203d20303b0a20202020202020202020636f6e736f6c652e6c6f6728274853432053636f7265732068617665206368616e6765642c20736176696e672e27293b0a20202020202020202020747279207b0a20202020202020202020202069662028756529207b0a20202020202020202020202020202866756e6374696f6e202829207b0a20202020202020202020202020202020636f6e736f6c652e6c6f67282757726974696e6720486967682053636f7265205352414d20746f20676c6f62616c2073746f726167652e27293b0a202020202020202020202020202020207661722074203d206e657720584d4c487474705265717565737428293b0a20202020202020202020202020202020742e6f70656e2827504f5354272c20762829202b20272f736176652e7068703f7369643d27202b207365202b202726643d27202b206365293b0a20202020202020202020202020202020742e6f6e6c6f6164203d2066756e6374696f6e202829207b0a20202020202020202020202020202020202069662028742e737461747573203d3d2032303029207b0a2020202020202020202020202020202020202020636f6e736f6c652e6c6f67280a20202020202020202020202020202020202020202020275375636365737366756c6c7920736176656420676c6f62616c20686967682073636f72657320666f722067616d654d0802270a2020202020202020202020202020202020202020293b0a2020202020202020202020202020202020207d20656c7365207b0a2020202020202020202020202020202020202020636f6e736f6c652e6c6f672865293b0a202020202020202020202020202020202020202075280a202020202020202020202020202020202020202020202773686f774572726f72272c0a20202020202020202020202020202020202020202020274572726f7220736176696e6720676c6f62616c20686967682073636f726573202827202b0a202020202020202020202020202020202020202020202020742e737461747573202b0a202020202020202020202020202020202020202020202020273a2027202b0a202020202020202020202020202020202020202020202020742e73746174757354657874202b0a2020202020202020202020202020202020202020202020202729270a2020202020202020202020202020202020202020293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020207d3b0a20202020202020202020202020202020742e6f6e6572726f72203d2066756e6374696f6e202829207b0a20202020202020202020202020202020202075280a20202020202020202020202020202020202020202773686f774572726f72272c0a20202020202020202020202020202020202020202745724d0802726f7220736176696e6720676c6f62616c20686967682073636f7265732e3c62723e2873656520636f6e736f6c65206c6f6720666f722064657461696c7329270a202020202020202020202020202020202020293b0a202020202020202020202020202020207d3b0a20202020202020202020202020202020742e73656e64286d6528666529293b0a20202020202020202020202020207d2928293b0a2020202020202020202020207d20656c7365207b0a2020202020202020202020202020786528293b0a2020202020202020202020207d0a202020202020202020207d20636174636820286529207b0a202020202020202020202020636f6e736f6c652e6c6f672865293b0a20202020202020202020202075282773686f774572726f72272c2065293b0a202020202020202020207d0a20202020202020207d20656c7365207b0a20202020202020202020636f6e736f6c652e6c6f6728274853432053636f7265732068617665206e6f74206368616e6765642c2069676e6f72696e672e27293b0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e206b65286529207b0a20202020202020206565203d20652e6a73373830303b0a20202020202020207465203d2065652e4d61696e3b0a20202020202020206e65203d20652e64656275673b0a20202020202020206765286665293b0a202020202020204d0802207265203d2061746f62280a2020202020202020202027646174613a3b6261736536342c71653867677a5367474c476d6b592b4945506d7041474370424343444e4b415973592b52706f67512b616b42594b6b4349494d306f6b5367414c3070454d574130412b39626844466764414976624d5179582f7741636a4b454f65596f4153526c4b576e3042536744354755794a4755794a4755794a47556f4157702f35475559434463506641786f426970425957316f674b78707457746b425851426f6a4b4550517744534456505a67596151584a4764414b384134673154324978725851323657316f415851424b6e2f6f4157526c4342704e3649486f464d6b67444142794c47557952335141716b684f4f6b6843676f4b43736a4b534c47557952337743476759635a513436534649794d6f51334b4153614a4755694d415045506970414743702f7943444e43416a4e733448454d3448454342704e7944595036574c304171705a6141394942553354416b787155476b6839414371552b46714344654e7157483841657064614139494255336f44327442784151424b6b3930414b704d5341394e366b41594b6b4230414b70414343444e43416a4e694463506643716f424f69414d697870703336462b6a41474e4431715157467461494373616256725a415730416149796844304d4134673154325947476b4679526e5144557a694d4344564d080250596a4774644461794a6946744b41556f68694771735330384243496d4b7178707153716b616247716f716f54487378704b7169417257746b61614979684434494f67777062576f71716e3047476b4d6942443647476c51685a69744278444a416441536f41436c6a354759794b57516b5a6a49705a47526d424150716577596152544b45506f5961544771494549796f4147786d436b6343676f4b69424759534d69786d436b4447477071617367526d4b5330794a476d6947695270716b42594b4763435943426e4741672b547170436f57337152364673324167417a4b6b6c346161684a766f687079456e656a6f687036456e324167594466477564414e71656d467563613630415746756941734f5743786d494761715232526d474167447a4b69414b414171522b426e4b6b416861717048384144384155674f544b686d6f4761684c736766446e4a3850414449506b366d4441445442677a704c7367594465704179324341736b4438414e4d546a4f59534344624e6d696f6f6741674a7a4c477439427671517146747942304f536d51795a44514c7942304f536c67795744775761476177415051424d6b6638424934365147426d676969415961716f67416f4545365938415370494e414371522b426d7442426f5a724a477441477071725141716e2f6f6747467171494147476b427953487743386b673042475938413670494e414b4d080277415051424b6b6630414b70414947615441347a78725051456149416f5a784a6749476330414d672f444770486f577a5446347949504136704c7367594463672f4447686d736b6730425441412f41436b5a69496f5a3434365153426e6a69514130784e4d736b66384132526d4d69686e6868704249476554453079715143426e4a6a514761573068616f5961515771714d415a3842697870715371357171527075694b304f2f4141784148715232526d4d6a5139574369424969392b68655270736f51397942704e324167447a4b6c6c364959687143466f6569476f6f576a6f67434b714a475971522b426e4341354d6f53374948773579664477417944354f706777413077674e4b5337494351797872665152366b4b6862636764446b706b4d6d513042386764446b70594d6c67384447686d6a6a70415947614544615938415370494e414371522b426d7441706f5a6f596151484a4966414c79534451435a6a7742716b6730414b70414947615442593078725051456149416f5a784a6749476330414d672f444770486f577a544b597a49504136704c7367594463672f4447686d736b67304275526d4969686e6a6a70416f47656f614159615147426f4b476947476b4367614a4d6f7a4f526d4d6b6638422f49784b6a77477047596f5a345961514b426e7147674f4f6b42676143686f6a6a70416f4769544b4d7a715143426e49776f4d0802454a6a5142366b646b5a6a754b4242676a516351654e6a4a4176415379652f7744736b4538417170663455387151434647595561705a534e4142436c6c593042454b4941687053456c6141546f6a7931674a4755794d6f512b4b5755704a57466c7369456c363243416f573871662b4e67674b67456247556d594141694244347059497041345770705973466864414c6f413635377a6d5a674143494550646f716d696f71547849715374496d45694b534b3048454d6b433841764a372f414879515477417943744f616b4168617570614d3043454e41637159504e4178445146616d717a5151513041367056633046454e4148715a7a4e426844774e4b577235717571384e617061493043454b6d446a514d517161714e4242437056593046454b6d636a515951494d382f7251635179652f7743736b45384159676c54776763446b6767547170414957716f6b584b4d47756c717433344542414876666751686171477471574133536b51304f696c67643175454e4468705949702f4e327a454e4459687261392b424346716f70497251635179514c77464b6b416e6667516f6b53392b424446716841442f7667517968447a614b414149454136436941734f6941394f6941734f6941734f6941394f716b396f4245674d7a7146706f536e594b7748454241476849356f614a686777414c5142616b41686164677072616c674a3070454b57424d08026e573451705949702f4a327a454343684e6141596f674b70414a476d694d6f512b716d616b61614971647152706f6751366d4367687149547655382b6b5a6149796844336d4244796f434b354c44374a2f644143705a57526c6f6751387141664f4b314c5075306f454a475779446974544437744b424134375367516b5a61704161416a494f6339705a57674b5a475771514167357a32674c704757494f6b39715179674a79446e50614173494f6b396f4353706e3547576f4371706c3547576f432b706e5a47577159796b6c59535a494541366f426d78684a475369424435716161466b71415a735961526b6f67512b616e41685a4b67474c6b735078686c715a4753694c6b7350354753694244347164716b6c5342414f714166755167516b5a4b4945506867624977417151436f7172474b45417241414e4147715543467562474b67615249794f616b73597142704d6a6d704c474b6761526f49416f337861677732574449357151344b51396c736f5779594342414f7141416f6743786b76443045415947756441434b582b427043414b4e3657586761546d704d69786b6f476b35715449304e386746546570386a6a6c73676970596141394b42447749474133705a65464c4b6d486854437053345538594342674e79516f4d50776b4b424438594b4141715643466b715756685a4f787073684973616249684b7171614344574f6f53734d08026f4143526b73694b6b5a4c49706179526b7369704136414149443036704b7178706f5774794c476d686137497361614672386945716943384e366b4a6f4141675054716b7173415a304c68676f414345713453737166314970594151556d69702f3457783572476c72546a35787a3646726157752b63672b6861366c722f6e4a506f5776734f616c72526835787a3646726157756563672b6861366c72336e4a506f57766d45696c7361537247476b6877416a51424d6b6838424c4a49664149534b6d416861786f3041596b72444143715232526b7369457132696f794d6a4977426a516d36537277416a51424b6b686b5a4a6749506b366f414d672b54346736443667426944355069446e506d6770454e4161715575694b7553533841576c6b6a6a7043345753494e382b6f415167337a354d7a4475704b714a4c354a4c773636575347476b4c304f536c6b6f57746f414d67384436674269447750714141715661526d6941444d716c67685a496738446f674a444c477439415171517146747942384f536e4179634451453567514c73617a304f5770486f577a6f414d67387a354d6d5467672b5471674179443550716c67785a4c5141716c62685a49673844346766446e4a384e4435384c7570426141416b5a6f673844716c6b715374684a4c4a59504144544d6735544f73372f2f2f2f2f2f2f2f2f2f2f2f787678772b50374150735a2b4d08024f4d372b787359347744624f6642683845477a474d50372f4f414141415038414f48372b664178344f4441346544416763446d70426f324441716b416a59494371662b4e67514b704559324141716b476a5949437151434e67514b4e67774b7467414c4a2f394152705177514461554e45416d746767497043386b4c384f6970537942674e345538594b6c2f30506145757942384f615337594b574479514c77477157703041717467414970384b514d544b55357259414343676f4b4371514e544b553570716b67706a6b70384b494159477945414b6c4c68547969344b6b416c55446f364b4145755377396c55446f364f6a6f6942443071546d464e4743704b73575330414d6778442b704e63575330414d677a7a2b70514d5753304159676c54784d667a7570533857533050644d526a79414166454265656b41476b77414141442f5041722f2f386247334d7a41774f6247474d7a4d2f736247377344737a4d5959376a6838786a4447414467414141442f454f3459774d344d3775347737677741436b69594b71686f5942686c6b6b69595a5a4f6f614741674d7a71466b6f53545949716f74613059656130416c613231726e6d75414a5775746139357277435672324359534c577468624331726f577874612b46736942464f6942464f7141444945633649455536614b6867466e64794661442f794d41453842573566547252694441454d08023850495143704749794c6c394f73414530506170414957746861364672366969414342654f72474953436e77536b704b5368686c7259577470613570414957754946343661436b50474757746861326c726d6b416861374977415451303242494b65424b536b714673596f704836694b4b6341594b696f714262477161436b66594342674e7942384f5a675139366e7068626d46756d442b78734447774d444778686a4d324d44477a736234334d674f474d5a73316d777759414141414141412f79446d474741452f674c474d4f3447454b6b4949474d384c494943304159675854637367674a67715169467543324341735734594341734f55684949474d3861476767635475704149555a68527167365953367872727735636135385067674c447651397942784f307778504341394f2f445171516f674d5476513947686f7151434667345770494841357159796b6c5342414f7142557557382f6b5a4b4945506970492b6154685a4b6751376d4450736e3930414b6c6c5a475369424479494e672f71615367505341394e366b4b4944383730506b67447a4b70537942414f716d32685a6f674a444c477439415171517146747942384f536b7779544451474a67514763617a304f5770486f577a6f414d67387a36674269447a506b7a4d4f30684d4f6a684d657a6a2f78767a4178766a347a76345944504441317437477a73623450426a474d0802787459344d4441414144774145503938316867344f4d774f3342673464686849786f347746616b38686167674c447651413078524f7944624e73616f30504877353657386a5949436f6a7967453747556c5944497968443472514151685a5374415243466c57686749474133534b574479514c774379514d4542797467414c4a2f394156725949434b514e4a4139414d4948773579664451425a6751416d68676147686f6147684d526a776763446b6772546d6b6c616e52494541366f43693552542b526b6f67512b4b6d4d685a4b6749726c6a50736e3930414b6c6c5a475769424479494e672f71587967505341394e36414a6a436751694c6e4d505a6b494549675139366b4168616d704949576f715979466d4b5356684a6d694769434a4d3653567159776751447167483747536d5167516942443459477a49774d6241774d444747417a51774f3732787362477a754159787362474f4467594141414141426a2f494d3459444152732b4d414d3773594d6e5171576d5071505951554759514147595155475951655059515547595277475951554759534d475951554759546347595155475955734759515547595638475951554759584d4759515541435745464432454644324546426d454f4432454641495a6842515a684651415059515549595155505951555059515547595155475951414c595155475951634c59515547595134504d0802595155455951554759525541443245464432454644324546426d456a4432454644324546426d457143324546426d453143324546426d464143324546426d464c41414164457830414852456443496a4b345037512b6d436c7264414770613751417157765949577a735a61694245695947476b55714767595a624f526c7372513857442f2f2f39347a4e7a4d774d44677868674d794d44473575374f3773376d66736247786d78737a4141414141414d2f784475654d624f504d44677a7537737a4d42672f5245774141445259503059514141416a4744395a687741414b5a672f575963414144615950324155414141496c38354d6c4e6759446336554742675057494141446c6941414461595030564f6741413557443943795941414e46672f52632b4141434d59503066546741414f553441414978672f594d5741414370595031584742392f4f555941414d46672f5663594833383552674141736d443955514166667a6c474141444b5950315a6342392f4f5a5941414e46672f5a4d6b336d44396657444b5950302b64414141674a6159514549506f4959424543634136414d415a4141414367414141514141735a4959615643526b6d4449794c47534f4f6c51455051672b5436786b6b6c41304f75786b676c41304f582f455068772b507a2b504d5a2b66737a41677359342b446a3466483747787362477876344141414141425038414d08024f44683866427a2b4f5034344f5067434467304745514154464173414577674f445249644851384c4142674545523069416741524578454941775945447751524567344e414173494751515944685152485141544142454948516349426763644567494f4551514146676341457830574468514c41783059446851644377674b4242305444683043437751414553735442776753485159414441515042424553446730414377675a41424d4944673041437773644267414d4242494e44684d4843413047414245454852674f46423053464245454b7867454571613271582b64737843642b4242676f6b5167786a2f4b4550706771514346736f573571596546704b5758686156672f2f2f2f2f3079704f5577414d4577524d45776e4d5577694d457a614d4577724d513d3d272e73706c6974280a202020202020202020202020272c270a20202020202020202020295b315d0a2020202020202020293b0a2020202020202020636f6e736f6c652e6c6f672827486967682073636f726520726f6d3a2027202b2065652e6d643528726529293b0a202020202020202064286e6577206328276f6e4361727472696467654c6f61646564272c20776529293b0a20202020202020206965203d206e65772074652e4869676853636f726543616c6c6261636b28293b0a20202020202020206f65203d206e65772074652e4869676853636f726543614d08026c6c6261636b28293b0a202020202020202058286f652c207b0a20202020202020202020676574526f6d3a2066756e6374696f6e202829207b0a20202020202020202020202072657475726e2072653b0a202020202020202020207d2c0a2020202020202020202077726974653a2066756e6374696f6e2028652c207429207b0a2020202020202020202020202866756e6374696f6e2028652c207429207b0a2020202020202020202020202020766172206e203d2066616c73653b0a20202020202020202020202020206966202866655b65202d20343039365d20213d207429207b0a2020202020202020202020202020202066655b65202d20343039365d203d20743b0a202020202020202020202020202020206e203d20747275653b0a20202020202020202020202020207d0a2020202020202020202020202020696620286e2026262065203e3d203434313329207b0a2020202020202020202020202020202061652b2b3b0a20202020202020202020202020202020696620286c65203d3d206e756c6c29207b0a2020202020202020202020202020202020206c65203d2073657454696d656f75742866756e6374696f6e202829207b0a20202020202020202020202020202020202020206c65203d206e756c6c3b0a2020202020202020202020202020202020202020416528293b0a2020202020202020202020202020202020207d4d08022c20326533293b0a202020202020202020202020202020207d0a20202020202020202020202020207d0a2020202020202020202020202020696620286e652026262065203e3d203434313329207b0a20202020202020202020202020202020696620286e29207b0a202020202020202020202020202020202020636f6e736f6c652e6c6f67280a2020202020202020202020202020202020202020274853432070656e64696e672077726974653a20307827202b0a20202020202020202020202020202020202020202020652e746f537472696e6728313629202b0a2020202020202020202020202020202020202020202027203d20307827202b0a20202020202020202020202020202020202020202020742e746f537472696e6728313629202b0a20202020202020202020202020202020202020202020272c2027202b0a2020202020202020202020202020202020202020202061650a202020202020202020202020202020202020293b0a202020202020202020202020202020207d20656c7365207b0a202020202020202020202020202020202020636f6e736f6c652e6c6f67280a2020202020202020202020202020202020202020274853432070656e64696e672077726974652069676e6f72656420286e6f206368616e6765293a20307827202b0a20202020202020202020202020202020202020202020652e746f537472696e674d080228313629202b0a2020202020202020202020202020202020202020202027203d20307827202b0a20202020202020202020202020202020202020202020742e746f537472696e6728313629202b0a20202020202020202020202020202020202020202020272c2027202b0a2020202020202020202020202020202020202020202061650a202020202020202020202020202020202020293b0a202020202020202020202020202020207d0a20202020202020202020202020207d0a2020202020202020202020207d2928652c2074293b0a202020202020202020207d2c0a202020202020202020206c6f61645372616d3a2066756e6374696f6e20286529207b0a20202020202020202020202079652865293b0a202020202020202020207d2c0a20202020202020207d293b0a2020202020202020696620286e6529207b0a20202020202020202020646f63756d656e742e6164644576656e744c697374656e657228276b6579646f776e272c2066756e6374696f6e20286529207b0a20202020202020202020202069662028652e6b6579436f6465203d3d2031313929207b0a2020202020202020202020202020636f6e736f6c652e6c6f67286d6528666529293b0a2020202020202020202020207d0a202020202020202020207d293b0a20202020202020207d0a2020202020207d0a20202020202066756e6374696f6e205365286529207b4d08020a20202020202020207065203d20653b0a2020202020207d0a20202020202066756e6374696f6e2043652829207b0a202020202020202072657475726e2070653b0a2020202020207d0a20202020202066756e6374696f6e2045652829207b0a202020202020202072657475726e20747275653b0a2020202020207d0a20202020202066756e6374696f6e205f65286529207b0a20202020202020206465203d20653b0a2020202020207d0a20202020202066756e6374696f6e2049652829207b0a202020202020202072657475726e2064653b0a2020202020207d0a20202020202066756e6374696f6e2044652829207b0a202020202020202072657475726e20747275653b0a2020202020207d0a20202020202066756e6374696f6e204265286529207b0a20202020202020206865203d20653b0a2020202020207d0a20202020202066756e6374696f6e204d652829207b0a202020202020202072657475726e2068653b0a2020202020207d0a20202020202066756e6374696f6e2054652829207b0a202020202020202072657475726e20747275653b0a2020202020207d0a20202020202066756e6374696f6e2052652829207b0a202020202020202072657475726e2063653b0a2020202020207d0a20202020202066756e6374696f6e204c652829207b0a2020202020202020746869732e656c203d206e756c6c3b0a2020202020204d08027d0a20202020202066756e6374696f6e20516528652c207429207b0a20202020202020204c652e63616c6c2874686973293b0a2020202020202020746869732e7469746c65203d20743b0a2020202020202020746869732e74657874203d20653b0a2020202020207d0a20202020202066756e6374696f6e207a65286529207b0a20202020202020204c652e63616c6c2874686973293b0a2020202020202020746869732e7469746c65203d20653b0a2020202020202020746869732e6362203d206e756c6c3b0a2020202020207d0a20202020202066756e6374696f6e204f6528652c207429207b0a20202020202020204e652e63616c6c28746869732c20652c2074293b0a2020202020207d0a20202020202066756e6374696f6e206a65286529207b0a202020202020202055652e63616c6c28746869732c2065293b0a2020202020207d0a20202020202066756e6374696f6e205065286529207b0a202020202020202046652e63616c6c2874686973293b0a2020202020202020746869732e6f707473203d20653b0a2020202020202020746869732e646976203d206e756c6c3b0a2020202020202020746869732e7769647468203d206e756c6c3b0a2020202020207d0a20202020202066756e6374696f6e20486528652c207429207b0a202020202020202046652e63616c6c2874686973293b0a2020202020202020746869732e694d080273526561644f6e6c79203d202121743b0a2020202020202020746869732e7469746c65203d20653b0a2020202020202020746869732e6d6f64616c456c203d206e756c6c3b0a2020202020202020746869732e636f6e74656e74456c203d206e756c6c3b0a2020202020202020746869732e626f6479456c203d206e756c6c3b0a2020202020202020746869732e686561646572456c203d206e756c6c3b0a2020202020202020746869732e626f6479456c203d206e756c6c3b0a2020202020202020746869732e666f6f746572456c203d206e756c6c3b0a2020202020202020746869732e6f6b203d206e756c6c3b0a2020202020202020746869732e63616e63656c203d206e756c6c3b0a2020202020202020746869732e64656661756c7473203d206e756c6c3b0a2020202020202020746869732e7061757365427574746f6e203d206e756c6c3b0a2020202020202020746869732e706175736564203d2066616c73653b0a2020202020202020766172206e203d20746869733b0a2020202020202020746869732e77696e646f77526573697a6546756e63203d2066756e6374696f6e20286529207b0a202020202020202020206e2e6d6f64616c456c2e7374796c652e70616464696e67546f70203d0a20202020202020202020202028282877696e646f772e696e6e6572486569676874202d206e2e636f6e74656e74456c2e6f66664d080273657448656967687429202f203229207c203029202b20277078273b0a20202020202020207d3b0a2020202020207d0a20202020202066756e6374696f6e2057652829207b0a202020202020202046652e63616c6c2874686973293b0a2020202020202020746869732e74616273203d205b5d3b0a2020202020202020746869732e64656661756c74546162203d206e756c6c3b0a2020202020207d0a20202020202066756e6374696f6e205665286529207b0a202020202020202046652e63616c6c2874686973293b0a2020202020202020746869732e7469746c65203d20653b0a2020202020202020746869732e627574746f6e456c203d206e756c6c3b0a2020202020207d0a20202020202066756e6374696f6e20716528652c207429207b0a202020202020202048652e63616c6c28746869732c20652c2074293b0a2020202020202020746869732e746162736574203d20746869732e67657454616253657428293b0a2020202020207d0a20202020202066756e6374696f6e204a652829207b0a202020202020202046652e63616c6c2874686973293b0a2020202020207d0a20202020202066756e6374696f6e205a65286529207b0a20202020202020204a652e63616c6c2874686973293b0a2020202020202020746869732e6c6162656c203d20653b0a2020202020207d0a20202020202066756e6374696f6e205865286529204d08027b0a20202020202020204a652e63616c6c2874686973293b0a2020202020202020746869732e636f6e74656e74203d20653b0a2020202020207d0a20202020202066756e6374696f6e2024652829207b0a202020202020202046652e63616c6c2874686973293b0a2020202020202020746869732e63656c6c73203d205b5d3b0a2020202020207d0a20202020202066756e6374696f6e2072742829207b0a202020202020202065742e63616c6c28746869732c202741626f757427293b0a2020202020202020746869732e746f70203d206e756c6c3b0a2020202020202020746869732e77726170706572456c203d206e756c6c3b0a2020202020202020746869732e6c6f676f456c203d206e756c6c3b0a2020202020202020746869732e76456c203d206e756c6c3b0a2020202020202020746869732e696672616d65203d206e756c6c3b0a2020202020202020746869732e74696d65724964203d206e756c6c3b0a2020202020202020746869732e706c61796564203d2066616c73653b0a20202020202020207661722065203d20746869733b0a2020202020202020746869732e66436c69636b203d2066756e6374696f6e20287429207b0a20202020202020202020652e73686f777628293b0a20202020202020202020742e70726576656e7444656661756c7428293b0a20202020202020207d3b0a2020202020207d0a20202020204d08022066756e6374696f6e206d7428652c207429207b0a20202020202020204c652e63616c6c2874686973293b0a2020202020202020746869732e6b657973203d206e756c6c3b0a2020202020202020746869732e6c656674203d20653b0a2020202020202020746869732e746f70203d20743b0a2020202020202020746869732e76616c7565203d20303b0a2020202020202020766172206e203d20746869733b0a2020202020202020746869732e6b6579646f776e66203d2066756e6374696f6e20286529207b0a202020202020202020206e2e73657456616c756528652e6b6579436f6465293b0a20202020202020202020652e70726576656e7444656661756c7428293b0a20202020202020202020652e73746f7050726f7061676174696f6e28293b0a20202020202020207d3b0a2020202020207d0a20202020202066756e6374696f6e206274286529207b0a20202020202020204c652e63616c6c2874686973293b0a2020202020202020746869732e7469746c65203d20653b0a2020202020202020746869732e696e6e6572203d206e756c6c3b0a2020202020207d0a20202020202066756e6374696f6e20777428652c207429207b0a20202020202020204c652e63616c6c2874686973293b0a2020202020202020746869732e6c656674203d20653b0a2020202020202020746869732e746f70203d20743b0a2020202020207d0a4d080220202020202066756e6374696f6e20767428652c207429207b0a202020202020202062742e63616c6c28746869732c2065293b0a2020202020202020746869732e696e646578203d20743b0a2020202020202020746869732e6c656674203d206e65772077742833332c203338293b0a2020202020202020746869732e7269676874203d206e65772077742837332c203338293b0a2020202020202020746869732e7570203d206e65772077742835332c203138293b0a2020202020202020746869732e646f776e203d206e65772077742835332c203538293b0a2020202020202020746869732e6231203d206e6577207774283135322c20313032293b0a2020202020202020746869732e6232203d206e6577207774283231382c20313032293b0a2020202020202020746869732e6d617070696e67203d206e756c6c3b0a2020202020202020746869732e666f637573203d205b0a20202020202020202020746869732e6c6566742c0a20202020202020202020746869732e72696768742c0a20202020202020202020746869732e75702c0a20202020202020202020746869732e646f776e2c0a20202020202020202020746869732e62312c0a20202020202020202020746869732e62322c0a20202020202020205d3b0a2020202020202020746869732e7061644964203d206e756c6c3b0a2020202020202020746869732e7061644d614d08027070696e67203d206e756c6c3b0a2020202020207d0a20202020202066756e6374696f6e207974286529207b0a202020202020202062742e63616c6c28746869732c2065293b0a2020202020202020746869732e7570203d206e6577206d742833382c202d35293b0a2020202020202020746869732e6c656674203d206e6577206d74282d372c203333293b0a2020202020202020746869732e7269676874203d206e6577206d742838322c203333293b0a2020202020202020746869732e646f776e203d206e6577206d742833382c203730293b0a2020202020202020746869732e6231203d206e6577206d74283133382c20313333293b0a2020202020202020746869732e6232203d206e6577206d74283230342c20313333293b0a2020202020202020746869732e74617267657473203d205b0a20202020202020202020746869732e75702c0a20202020202020202020746869732e6c6566742c0a20202020202020202020746869732e72696768742c0a20202020202020202020746869732e646f776e2c0a20202020202020202020746869732e62312c0a20202020202020202020746869732e62322c0a20202020202020205d3b0a2020202020202020746869732e6d6170203d206e756c6c3b0a2020202020207d0a20202020202066756e6374696f6e207874286529207b0a20202020202020204c652e63616c6c2874686973294d08023b0a2020202020202020746869732e7469746c65203d20653b0a2020202020207d0a20202020202066756e6374696f6e204174286529207b0a202020202020202078742e63616c6c28746869732c2065293b0a2020202020202020746869732e746172676574203d206e6577206d742831352c203334293b0a2020202020207d0a20202020202066756e6374696f6e206b74286529207b0a202020202020202078742e63616c6c28746869732c2065293b0a2020202020207d0a20202020202066756e6374696f6e2053742829207b0a20202020202020204c652e63616c6c2874686973293b0a2020202020202020746869732e7061757365427574746f6e203d20746869732e6372656174655061757365427574746f6e2827504155534527293b0a2020202020202020746869732e73656c656374427574746f6e203d20746869732e63726561746553656c656374427574746f6e282753454c45435427293b0a2020202020202020746869732e7265736574427574746f6e203d20746869732e6372656174655265736574427574746f6e2827524553455427293b0a2020202020202020746869732e627574746f6e73203d205b746869732e7061757365427574746f6e2c20746869732e73656c656374427574746f6e2c20746869732e7265736574427574746f6e5d3b0a2020202020202020746869732e6b62203d206e756c6c3b0a20204d0802202020207d0a20202020202066756e6374696f6e2043742829207b0a202020202020202053742e63616c6c2874686973293b0a2020202020207d0a20202020202066756e6374696f6e2045742829207b0a202020202020202053742e63616c6c2874686973293b0a2020202020202020746869732e6d617070696e67203d206e756c6c3b0a2020202020207d0a20202020202066756e6374696f6e2052742829207b0a202020202020202069742e63616c6c28746869732c202753657474696e6773272c2066616c7365293b0a2020202020207d0a20202020202066756e6374696f6e20467428652c207429207b0a202020202020202051742e63616c6c28746869732c2065293b0a2020202020202020746869732e75726c203d20743b0a2020202020207d0a20202020202066756e6374696f6e2050742829207b0a202020202020202047742e63616c6c28746869732c202748656c70272c2074727565293b0a2020202020207d0a20202020202066756e6374696f6e206e6e28652c207429207b0a20202020202020202866756e6374696f6e2028652c20742c206e29207b0a2020202020202020202066756e6374696f6e2072286529207b0a2020202020202020202020207661722072203d206e756c6c3b0a2020202020202020202020207661722069203d2066616c73653b0a20202020202020202020202069662028652e6c656e67744d080268203d3d203129207b0a202020202020202020202020202072203d20655b305d3b0a2020202020202020202020207d20656c73652069662028652e6c656e677468203e203029207b0a2020202020202020202020202020666f722028766172206f203d20303b206f203c20652e6c656e6774683b206f2b2b29207b0a20202020202020202020202020202020766172206c203d20655b6f5d3b0a202020202020202020202020202020207661722073203d206c2e66696c656e616d652e746f4c6f7765724361736528293b0a2020202020202020202020202020202069662028732e656e6473576974682827702e613738272929207b0a20202020202020202020202020202020202072203d206c3b0a20202020202020202020202020202020202069203d20747275653b0a202020202020202020202020202020207d20656c7365207b0a20202020202020202020202020202020202069662028732e656e64735769746828272e613738272929207b0a202020202020202020202020202020202020202072203d206c3b0a2020202020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202069662028732e656e64735769746828272e62696e272920262620216929207b0a202020202020202020202020202020202020202072203d206c3b0a4d08022020202020202020202020202020202020207d0a202020202020202020202020202020207d0a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020202020696620287229207b0a20202020202020202020202020207661722063203d206e657720612e426c6f6257726974657228293b0a2020202020202020202020202020722e6765744461746128632c2074293b0a2020202020202020202020207d20656c7365207b0a20202020202020202020202020206e2827556e61626c6520746f2066696e642076616c696420524f4d20696e207a69702066696c6527293b0a2020202020202020202020207d0a202020202020202020207d0a202020202020202020206e203d206e207c7c20703b0a20202020202020202020612e637265617465526561646572280a2020202020202020202020206e657720612e426c6f625265616465722865292c0a20202020202020202020202066756e6374696f6e20286529207b0a2020202020202020202020202020652e676574456e747269657328722c206e293b0a2020202020202020202020207d2c0a20202020202020202020202066756e6374696f6e202829207b0a2020202020202020202020202020742865293b0a2020202020202020202020207d0a20202020202020202020293b0a20202020202020207d29280a20202020202020202020652c4d08020a2020202020202020202066756e6374696f6e20286529207b0a202020202020202020202020766172206e203d206e65772046696c6552656164657228293b0a2020202020202020202020206e2e72656164417342696e617279537472696e672865293b0a2020202020202020202020206e2e6f6e6c6f6164656e64203d2066756e6374696f6e202829207b0a20202020202020202020202020207661722065203d206e2e726573756c743b0a20202020202020202020202020207661722072203d20652e6c656e6774683b0a20202020202020202020202020207661722069203d206e65772041727261792872293b0a2020202020202020202020202020666f722028766172206f203d20303b206f203c20723b206f2b2b29207b0a20202020202020202020202020202020695b6f5d203d20652e63686172436f64654174286f293b0a20202020202020202020202020207d0a202020202020202020202020202069662028217429207b0a20202020202020202020202020202020656e2e726573657453656c656374696f6e28293b0a20202020202020202020202020207d0a202020202020202020202020202024742e4d61696e2e7374617274456d756c6174696f6e2869293b0a2020202020202020202020207d3b0a202020202020202020207d2c0a20202020202020202020746e0a2020202020202020293b0a2020202020207d0a204d0802202020202066756e6374696f6e20616e28652c207429207b0a2020202020202020766172206e203d20652e746f4c6f7765724361736528293b0a20202020202020207661722072203d206e2e656e64735769746828272e6a736f6e2729207c7c206e2e696e6465784f6628272e6a736f6e3f272920213d202d313b0a2020202020202020726e203d20487428274c6f6164696e672e2e2e27293b0a202020202020202069662028216f6e29207b0a2020202020202020202064280a202020202020202020202020286f6e203d206e6577206328276f6e456d756c6174696f6e53746172746564272c2066756e6374696f6e202829207b0a2020202020202020202020202020577428726e2c20373530293b0a2020202020202020202020207d29290a20202020202020202020293b0a20202020202020207d0a2020202020202020636f6e73742069203d2066756e6374696f6e20286529207b0a20202020202020202020766172206e203d202866756e6374696f6e20286529207b0a2020202020202020202020207661722074203d20652e746f4c6f7765724361736528293b0a202020202020202020202020766172206e203d2027273b0a20202020202020202020202069662028672026262028742e737461727473576974682827687474703a2f2f2729207c7c20742e73746172747357697468282768747470733a2f2f27292929207b0a204d0802202020202020202020202020206e203d206d202b2061746f6228274f69387663484a7665486b7564325669636d4e685a47557564323979613256796379356b5a58592f27293b0a2020202020202020202020207d0a20202020202020202020202072657475726e206e202b20653b0a202020202020202020207d292865293b0a2020202020202020202069662028216e29207b0a2020202020202020202020207468726f7720692e737461747573202b20273a2027202b20692e737461747573546578743b0a202020202020202020207d0a202020202020202020207661722069203d206e657720584d4c487474705265717565737428293b0a20202020202020202020692e6f70656e2827474554272c206e293b0a20202020202020202020692e726573706f6e736554797065203d2027626c6f62273b0a20202020202020202020692e6f6e6c6f6164203d2066756e6374696f6e202829207b0a202020202020202020202020747279207b0a202020202020202020202020202069662028692e737461747573203e3d20333030207c7c20692e7374617473203c2032303029207b0a202020202020202020202020202020207468726f7720692e737461747573202b20273a2027202b20692e737461747573546578743b0a20202020202020202020202020207d0a202020202020202020202020202069662028656e2e6c6f61644c697374464d0802726f6d46696c6528692e726573706f6e736529207c7c207229207b0a20202020202020202020202020202020577428726e2c20373530293b0a20202020202020202020202020207d20656c7365207b0a202020202020202020202020202020206e6e28692e726573706f6e73652c2074293b0a20202020202020202020202020207d0a2020202020202020202020207d20636174636820287429207b0a2020202020202020202020202020746e2865202b2027202827202b2074202b20272927293b0a2020202020202020202020207d0a202020202020202020207d3b0a20202020202020202020692e6f6e6572726f72203d2066756e6374696f6e202829207b0a202020202020202020202020746e280a202020202020202020202020202027416e206572726f72206f6363757272656420647572696e6720746865206c6f616420617474656d70742e3c62723e2873656520636f6e736f6c65206c6f6720666f722064657461696c7329272c0a202020202020202020202020202066616c73650a202020202020202020202020293b0a202020202020202020207d3b0a20202020202020202020692e73656e6428293b0a20202020202020207d3b0a2020202020202020766172206f203d206e657720584d4c487474705265717565737428293b0a20202020202020206f2e6f70656e2827474554272c2077286529293b0a202020202020204d0802206f2e726573706f6e736554797065203d2027626c6f62273b0a20202020202020206f2e6f6e6c6f6164203d2066756e6374696f6e202829207b0a20202020202020202020747279207b0a202020202020202020202020696620286f2e737461747573203e3d20333030207c7c206f2e7374617473203c2032303029207b0a2020202020202020202020202020692865293b0a2020202020202020202020207d20656c73652069662028656e2e6c6f61644c69737446726f6d46696c65286f2e726573706f6e736529207c7c207229207b0a2020202020202020202020202020577428726e2c20373530293b0a2020202020202020202020207d20656c7365207b0a20202020202020202020202020206e6e286f2e726573706f6e73652c2074293b0a2020202020202020202020207d0a202020202020202020207d20636174636820287429207b0a202020202020202020202020746e2865202b2027202827202b2074202b20272927293b0a202020202020202020207d0a20202020202020207d3b0a20202020202020206f2e6f6e6572726f72203d2066756e6374696f6e202829207b0a20202020202020202020692865293b0a20202020202020207d3b0a20202020202020206f2e73656e6428293b0a2020202020207d0a20202020202066756e6374696f6e206c6e286529207b0a20202020202020207661722074203d20282474203d204d080265292e4d61696e3b0a2020202020202020766172206e203d2024742e436f6e74726f6c734261723b0a20202020202020202866756e6374696f6e202829207b0a202020202020202020207661722065203d2024742e4576656e74733b0a20202020202020202020666f722028766172207420696e20282873203d2065292c206c2929207b0a202020202020202020202020766172206e203d206c5b745d3b0a202020202020202020202020666f7220287661722072203d20303b2072203c206e2e6c656e6774683b20722b2b29207b0a202020202020202020202020202064286e5b725d293b0a2020202020202020202020207d0a202020202020202020207d0a20202020202020207d2928293b0a2020202020202020766172206f203d202866756e6374696f6e202829207b0a202020202020202020207661722065203d2024742e436f6e74726f6c734261723b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020766172206e203d20646f63756d656e742e637265617465456c656d656e74282773656c65637427293b0a20202020202020202020742e617070656e644368696c64286e293b0a202020202020202020207661722072203d206e657720652e436f6d706f6e656e7428293b0a202020202020202020206628722c207b0a204d08022020202020202020202020676574436c6173733a2066756e6374696f6e202829207b0a202020202020202020202020202072657475726e2027667373656c656374273b0a2020202020202020202020207d2c0a202020202020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020202020202072657475726e20743b0a2020202020202020202020207d2c0a202020202020202020207d293b0a20202020202020202020652e67657447726f75702831292e6164644368696c644174496e64657828322c2072293b0a2020202020202020202072657475726e206e3b0a20202020202020207d2928293b0a20202020202020207661722072203d2071742827646562756727293b0a20202020202020205874203d2021217220262620282872203d20722e746f4c6f77657243617365282929203d3d3d20273127207c7c2072203d3d20277472756527293b0a2020202020202020742e7365744572726f7248616e646c657228746e293b0a2020202020202020742e696e697428276a73373830305f5f746172676574272c207b2064656275673a205874207d293b0a20202020202020207661722061203d20742e6465736372697074696f6e4469763b0a2020202020202020612e636c6173734e616d65203d2027696e73747275637473273b0a2020202020202020612e696e6e654d08027248544d4c203d0a20202020202020202020273c6469763e436c69636b3c696d672069643d22696e735f73657474696e67735f696d6722207372633d2227202b0a202020202020202020206e2e636f6773496d67537263202b0a2020202020202020202027223e3c2f696d673e3c7370616e2069643d22696e735f73657474696e67732220636c6173733d22696c696e6b223e53657474696e67733c2f7370616e3e20746f20766965772063757272656e74206b6579626f617264206d617070696e67732e3c2f6469763e273b0a2020202020202020612e696e6e657248544d4c202b3d0a20202020202020202020273c64697620636c6173733d226968656c70223e436c69636b3c696d672069643d22696e735f68656c705f696d6722207372633d2227202b0a202020202020202020206e2e696e666f496d67537263202b0a2020202020202020202027223e3c2f696d673e3c7370616e2069643d22696e735f68656c702220636c6173733d22696c696e6b223e48656c703c2f7370616e3e20666f722064657461696c656420757361676520696e737472756374696f6e732e3c2f6469763e273b0a2020202020202020612e696e6e657248544d4c202b3d0a20202020202020202020273c64697620636c6173733d226968656c70223e4c6f6164206120636172747269646765207573696e67207468652064726f702d646f776e206d656e4d080275206f7220627574746f6e732062656c6f772028796f752063616e20616c736f206472616720616e642064726f702061206c6f63616c2066696c65206f722072656d6f74652066696c65206c696e6b206f6e746f2074686520656d756c61746f72292e3c2f6469763e273b0a20202020202020207661722070203d20646f63756d656e742e676574456c656d656e744279496428276a73373830305f5f66756c6c73637265656e2d636f6e7461696e657227293b0a202020202020202064280a202020202020202020206e6577206328276f6e4869676853636f7265436172744c6f61646564272c2066756e6374696f6e20286529207b0a2020202020202020202020205a74203d20653b0a202020202020202020207d290a2020202020202020293b0a20202020202020207661722068203d206e2e6c6561646572626f617264427574746f6e3b0a2020202020202020682e6f6e436c69636b203d2066756e6374696f6e202829207b0a202020202020202020207661722065203d20276c6561646572626f617264273b0a20202020202020202020696620285a7429207b0a20202020202020202020202065202b3d20273f643d27202b20526528293b0a202020202020202020207d0a2020202020202020202077696e646f772e6f70656e28652c20275f626c616e6b27293b0a20202020202020207d3b0a202020202020202064280a2020204d0802202020202020206e65772063282766756c6c73637265656e272c2066756e6374696f6e20286529207b0a202020202020202020202020682e676574456c656d656e7428292e7374796c652e646973706c6179203d2065203f20276e6f6e6527203a2027626c6f636b273b0a2020202020202020202020206f2e706172656e74456c656d656e742e7374796c652e646973706c6179203d2065203f2027666c657827203a20276e6f6e65273b0a202020202020202020207d290a2020202020202020293b0a20202020202020207661722067203d206e657720527428293b0a20202020202020206e2e73657474696e6773427574746f6e2e6f6e436c69636b203d2066756e6374696f6e202829207b0a20202020202020202020672e73686f7728293b0a20202020202020207d3b0a2020202020202020766172206d203d206e657720507428293b0a20202020202020206e2e68656c70427574746f6e2e6f6e436c69636b203d2066756e6374696f6e202829207b0a202020202020202020206d2e73686f7728293b0a20202020202020207d3b0a20202020202020207661722062203d2066756e6374696f6e202829207b0a20202020202020202020672e73656c6563744b6579626f61726454616228293b0a202020202020202020206e2e73657474696e6773427574746f6e2e6f6e436c69636b28293b0a20202020202020207d3b0a202020204d0802202020207661722077203d2066756e6374696f6e202829207b0a202020202020202020206e2e68656c70427574746f6e2e6f6e436c69636b28293b0a20202020202020207d3b0a2020202020202020646f63756d656e742e676574456c656d656e74427949642827696e735f73657474696e677327292e6f6e636c69636b203d20623b0a2020202020202020646f63756d656e742e676574456c656d656e74427949642827696e735f73657474696e67735f696d6727292e6f6e636c69636b203d20623b0a2020202020202020646f63756d656e742e676574456c656d656e74427949642827696e735f68656c7027292e6f6e636c69636b203d20773b0a2020202020202020646f63756d656e742e676574456c656d656e74427949642827696e735f68656c705f696d6727292e6f6e636c69636b203d20773b0a2020202020202020656e203d206e65772041285b646f63756d656e742e676574456c656d656e744279496428276361727473656c6563745f5f73656c65637427292c206f5d293b0a202020202020202075282773697465496e6974272c207b0a202020202020202020206a73373830303a2024742c0a20202020202020202020726f6d4c6973743a20656e2c0a202020202020202020206c6f616446726f6d55726c3a20616e2c0a202020202020202020207374617274456d756c6174696f6e3a206e6e2c0a202020202020204d08022020206572726f7248616e646c65723a20746e2c0a2020202020202020202064656275673a2058742c0a202020202020202020204869676853636f72653a20692c0a20202020202020207d293b0a2020202020202020702e617070656e644368696c6428672e637265617465456c656d656e742829293b0a2020202020202020702e617070656e644368696c64286d2e637265617465456c656d656e742829293b0a202020202020202064280a202020202020202020206e65772063282773686f774572726f72272c2066756e6374696f6e20286529207b0a202020202020202020202020746e2865293b0a202020202020202020207d290a2020202020202020293b0a202020202020202064280a202020202020202020206e657720632827726f6d6c6973744c6f61646564272c2066756e6374696f6e202829207b0a2020202020202020202020207661722065203d204874282753756363657366756c6c79206c6f6164656420636172747269646765206c6973742e27293b0a202020202020202020202020577428652c20316533293b0a202020202020202020207d290a2020202020202020293b0a20202020202020204a28293b0a20202020202020202866756e6374696f6e202829207b0a2020202020202020202024742e4d61696e3b0a202020202020202020207661722065203d2071742827636172746c69737427293b0a2020204d08022020202020202069662028216529207b0a20202020202020202020202065203d202768747470733a2f2f6269746f7264696e616c732e696f2f636f6e74656e742f623663383062386337313632333534396336323634306666363761326165306536393965376664303330343830643834336266366134343337626539396130356930273b0a202020202020202020207d0a20202020202020202020656e2e6c6f61644c69737446726f6d55726c2865293b0a202020202020202020207661722074203d204a7428276361727427293b0a20202020202020202020696620287429207b0a202020202020202020202020616e2874293b0a202020202020202020207d0a20202020202020207d2928293b0a2020202020207d0a202020202020722e72286e293b0a2020202020207661722069203d207b7d3b0a202020202020722e722869293b0a202020202020722e6428692c20275352414d5f53495a45272c2066756e6374696f6e202829207b0a202020202020202072657475726e20243b0a2020202020207d293b0a202020202020722e6428692c202767656e657261746544656661756c745372616d272c2066756e6374696f6e202829207b0a202020202020202072657475726e2067653b0a2020202020207d293b0a202020202020722e6428692c20277372616d546f426173653634272c2066756e6374696f6e202829207b0a2020204d0802202020202072657475726e206d653b0a2020202020207d293b0a202020202020722e6428692c2027626173653634746f5372616d272c2066756e6374696f6e202829207b0a202020202020202072657475726e2062653b0a2020202020207d293b0a202020202020722e6428692c2027736574456e61626c6564272c2066756e6374696f6e202829207b0a202020202020202072657475726e2053653b0a2020202020207d293b0a202020202020722e6428692c2027676574456e61626c6564272c2066756e6374696f6e202829207b0a202020202020202072657475726e2043653b0a2020202020207d293b0a202020202020722e6428692c2027676574456e61626c656444656661756c74272c2066756e6374696f6e202829207b0a202020202020202072657475726e2045653b0a2020202020207d293b0a202020202020722e6428692c2027676574476c6f62616c272c2066756e6374696f6e202829207b0a202020202020202072657475726e2049653b0a2020202020207d293b0a202020202020722e6428692c2027736574476c6f62616c272c2066756e6374696f6e202829207b0a202020202020202072657475726e205f653b0a2020202020207d293b0a202020202020722e6428692c2027676574476c6f62616c44656661756c74272c2066756e6374696f6e202829207b0a202020202020202072657475726e2044653b0a204d080220202020207d293b0a202020202020722e6428692c202769734c6f63616c46616c6c6261636b272c2066756e6374696f6e202829207b0a202020202020202072657475726e204d653b0a2020202020207d293b0a202020202020722e6428692c20277365744c6f63616c46616c6c6261636b272c2066756e6374696f6e202829207b0a202020202020202072657475726e2042653b0a2020202020207d293b0a202020202020722e6428692c20276765744c6f63616c46616c6c6261636b44656661756c74272c2066756e6374696f6e202829207b0a202020202020202072657475726e2054653b0a2020202020207d293b0a202020202020722e6428692c2027676574446967657374272c2066756e6374696f6e202829207b0a202020202020202072657475726e2052653b0a2020202020207d293b0a202020202020766172206f203d207b7d3b0a2020202020202866756e6374696f6e20286529207b0a202020202020202066756e6374696f6e20692829207b0a20202020202020202020746869732e637263203d202d313b0a20202020202020207d0a202020202020202066756e6374696f6e206f2829207b7d0a202020202020202066756e6374696f6e206128652c207429207b0a20202020202020202020766172206e203d206e65772041727261794275666665722865293b0a202020202020202020207661722072203d206e65774d08022055696e74384172726179286e293b0a20202020202020202020696620287429207b0a202020202020202020202020722e73657428742c2030293b0a202020202020202020207d0a2020202020202020202072657475726e207b206275666665723a206e2c2061727261793a20722c20766965773a206e6577204461746156696577286e29207d3b0a20202020202020207d0a202020202020202066756e6374696f6e206c2829207b7d0a202020202020202066756e6374696f6e2073286529207b0a2020202020202020202076617220743b0a20202020202020202020766172206e203d20746869733b0a202020202020202020206e2e73697a65203d20303b0a202020202020202020206e2e696e6974203d2066756e6374696f6e2028722c206929207b0a202020202020202020202020766172206f203d206e657720426c6f62285b655d2c207b20747970653a2027746578742f706c61696e27207d293b0a2020202020202020202020202874203d206e65772064286f29292e696e69742866756e6374696f6e202829207b0a20202020202020202020202020206e2e73697a65203d20742e73697a653b0a20202020202020202020202020207228293b0a2020202020202020202020207d2c2069293b0a202020202020202020207d3b0a202020202020202020206e2e7265616455696e74384172726179203d2066756e6374696f6e204d080228652c206e2c20722c206929207b0a202020202020202020202020742e7265616455696e7438417272617928652c206e2c20722c2069293b0a202020202020202020207d3b0a20202020202020207d0a202020202020202066756e6374696f6e2063287429207b0a20202020202020202020766172206e3b0a202020202020202020207661722072203d20746869733b0a20202020202020202020722e73697a65203d20303b0a20202020202020202020722e696e6974203d2066756e6374696f6e20286529207b0a202020202020202020202020666f7220287661722069203d20742e6c656e6774683b20742e6368617241742869202d203129203d3d20273d273b2029207b0a2020202020202020202020202020692d2d3b0a2020202020202020202020207d0a2020202020202020202020206e203d20742e696e6465784f6628272c2729202b20313b0a202020202020202020202020722e73697a65203d204d6174682e666c6f6f7228302e3735202a202869202d206e29293b0a2020202020202020202020206528293b0a202020202020202020207d3b0a20202020202020202020722e7265616455696e74384172726179203d2066756e6374696f6e2028722c20692c206f29207b0a2020202020202020202020207661722073203d20612869293b0a2020202020202020202020207661722063203d2034202a204d6174682e666c6f4d08026f722872202f2033293b0a2020202020202020202020207661722064203d2034202a204d6174682e6365696c282872202b206929202f2033293b0a2020202020202020202020207661722075203d20652e61746f6228742e737562737472696e672863202b206e2c2064202b206e29293b0a2020202020202020202020207661722070203d2072202d2033202a204d6174682e666c6f6f722863202f2034293b0a202020202020202020202020666f722028766172206c203d20703b206c203c2070202b20693b206c2b2b29207b0a2020202020202020202020202020732e61727261795b6c202d20705d203d20752e63686172436f64654174286c293b0a2020202020202020202020207d0a2020202020202020202020206f28732e6172726179293b0a202020202020202020207d3b0a20202020202020207d0a202020202020202066756e6374696f6e2064286529207b0a202020202020202020207661722074203d20746869733b0a20202020202020202020742e73697a65203d20303b0a20202020202020202020742e696e6974203d2066756e6374696f6e20286e29207b0a202020202020202020202020742e73697a65203d20652e73697a653b0a2020202020202020202020206e28293b0a202020202020202020207d3b0a20202020202020202020742e7265616455696e74384172726179203d2066756e6374696f6e2028742c4d0802206e2c20722c206929207b0a202020202020202020202020766172206f203d206e65772046696c6552656164657228293b0a2020202020202020202020206f2e6f6e6c6f6164203d2066756e6374696f6e20286529207b0a202020202020202020202020202072286e65772055696e7438417272617928652e7461726765742e726573756c7429293b0a2020202020202020202020207d3b0a2020202020202020202020206f2e6f6e6572726f72203d20693b0a202020202020202020202020747279207b0a20202020202020202020202020206f2e7265616441734172726179427566666572280a202020202020202020202020202020202866756e6374696f6e2028652c20742c206e29207b0a2020202020202020202020202020202020206966202874203c2030207c7c206e203c2030207c7c2074202b206e203e20652e73697a6529207b0a20202020202020202020202020202020202020207468726f77206e65772052616e67654572726f72280a20202020202020202020202020202020202020202020276f66667365743a27202b2074202b20272c206c656e6774683a27202b206e202b20272c2073697a653a27202b20652e73697a650a2020202020202020202020202020202020202020293b0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202069662028652e736c69636529204d08027b0a202020202020202020202020202020202020202072657475726e20652e736c69636528742c2074202b206e293b0a2020202020202020202020202020202020207d20656c73652069662028652e7765626b6974536c69636529207b0a202020202020202020202020202020202020202072657475726e20652e7765626b6974536c69636528742c2074202b206e293b0a2020202020202020202020202020202020207d20656c73652069662028652e6d6f7a536c69636529207b0a202020202020202020202020202020202020202072657475726e20652e6d6f7a536c69636528742c2074202b206e293b0a2020202020202020202020202020202020207d20656c73652069662028652e6d73536c69636529207b0a202020202020202020202020202020202020202072657475726e20652e6d73536c69636528742c2074202b206e293b0a2020202020202020202020202020202020207d20656c7365207b0a202020202020202020202020202020202020202072657475726e3b0a2020202020202020202020202020202020207d0a202020202020202020202020202020207d2928652c20742c206e290a2020202020202020202020202020293b0a2020202020202020202020207d20636174636820286529207b0a2020202020202020202020202020692865293b0a2020202020202020202020207d0a202020202020202020207d3b4d08020a20202020202020207d0a202020202020202066756e6374696f6e20752829207b7d0a202020202020202066756e6374696f6e2070286529207b0a20202020202020202020766172206e3b0a20202020202020202020746869732e696e6974203d2066756e6374696f6e20286529207b0a2020202020202020202020206e203d206e657720426c6f62285b5d2c207b20747970653a2027746578742f706c61696e27207d293b0a2020202020202020202020206528293b0a202020202020202020207d3b0a20202020202020202020746869732e777269746555696e74384172726179203d2066756e6374696f6e2028652c207229207b0a2020202020202020202020206e203d206e657720426c6f62285b6e2c2074203f2065203a20652e6275666665725d2c207b20747970653a2027746578742f706c61696e27207d293b0a2020202020202020202020207228293b0a202020202020202020207d3b0a20202020202020202020746869732e67657444617461203d2066756e6374696f6e2028742c207229207b0a2020202020202020202020207661722069203d206e65772046696c6552656164657228293b0a202020202020202020202020692e6f6e6c6f6164203d2066756e6374696f6e20286529207b0a20202020202020202020202020207428652e7461726765742e726573756c74293b0a2020202020202020202020207d3b0a204d08022020202020202020202020692e6f6e6572726f72203d20723b0a202020202020202020202020692e72656164417354657874286e2c2065293b0a202020202020202020207d3b0a20202020202020207d0a202020202020202066756e6374696f6e2068287429207b0a20202020202020202020766172206e203d2027273b0a202020202020202020207661722072203d2027273b0a20202020202020202020746869732e696e6974203d2066756e6374696f6e20286529207b0a2020202020202020202020206e202b3d2027646174613a27202b202874207c7c20272729202b20273b6261736536342c273b0a2020202020202020202020206528293b0a202020202020202020207d3b0a20202020202020202020746869732e777269746555696e74384172726179203d2066756e6374696f6e2028742c206929207b0a2020202020202020202020207661722061203d20722e6c656e6774683b0a202020202020202020202020766172206c203d20723b0a20202020202020202020202072203d2027273b0a202020202020202020202020666f722028766172206f203d20303b206f203c2033202a204d6174682e666c6f6f72282861202b20742e6c656e67746829202f203329202d20613b206f2b2b29207b0a20202020202020202020202020206c202b3d20537472696e672e66726f6d43686172436f646528745b6f5d293b0a202020204d080220202020202020207d0a202020202020202020202020696620286c2e6c656e677468203e203229207b0a20202020202020202020202020206e202b3d20652e62746f61286c293b0a2020202020202020202020207d20656c7365207b0a202020202020202020202020202072203d206c3b0a2020202020202020202020207d0a2020202020202020202020206928293b0a202020202020202020207d3b0a20202020202020202020746869732e67657444617461203d2066756e6374696f6e20287429207b0a20202020202020202020202074286e202b20652e62746f61287229293b0a202020202020202020207d3b0a20202020202020207d0a202020202020202066756e6374696f6e2066286529207b0a20202020202020202020766172206e3b0a20202020202020202020746869732e696e6974203d2066756e6374696f6e20287429207b0a2020202020202020202020206e203d206e657720426c6f62285b5d2c207b20747970653a2065207d293b0a2020202020202020202020207428293b0a202020202020202020207d3b0a20202020202020202020746869732e777269746555696e74384172726179203d2066756e6374696f6e2028722c206929207b0a2020202020202020202020206e203d206e657720426c6f62285b6e2c2074203f2072203a20722e6275666665725d2c207b20747970653a2065207d293b0a20202020204d0802202020202020206928293b0a202020202020202020207d3b0a20202020202020202020746869732e67657444617461203d2066756e6374696f6e20286529207b0a20202020202020202020202065286e293b0a202020202020202020207d3b0a20202020202020207d0a202020202020202066756e6374696f6e206728652c20742c206e2c20722c20692c206f2c20612c206c2c20732c206329207b0a2020202020202020202066756e6374696f6e20672829207b0a202020202020202020202020652e72656d6f76654576656e744c697374656e657228276d657373616765272c206d2c2066616c7365293b0a2020202020202020202020206c28752c2070293b0a202020202020202020207d0a2020202020202020202066756e6374696f6e206d287429207b0a202020202020202020202020766172206e203d20742e646174613b0a2020202020202020202020207661722069203d206e2e646174613b0a202020202020202020202020766172206c203d206e2e6572726f723b0a202020202020202020202020696620286c29207b0a20202020202020202020202020206c2e746f537472696e67203d2066756e6374696f6e202829207b0a2020202020202020202020202020202072657475726e20274572726f723a2027202b20746869732e6d6573736167653b0a20202020202020202020202020207d3b0a202020202020202020204d08022020202073286c293b0a202020202020202020202020202072657475726e3b0a2020202020202020202020207d0a202020202020202020202020696620286e2e736e203d3d3d206629207b0a202020202020202020202020202073776974636820280a2020202020202020202020202020202028747970656f66206e2e636f64656354696d65203d3d20276e756d626572272026262028652e636f64656354696d65202b3d206e2e636f64656354696d65292c0a20202020202020202020202020202020747970656f66206e2e63726354696d65203d3d20276e756d626572272026262028652e63726354696d65202b3d206e2e63726354696d65292c0a202020202020202020202020202020206e2e74797065290a202020202020202020202020202029207b0a20202020202020202020202020202020636173652027617070656e64273a0a202020202020202020202020202020202020696620286929207b0a202020202020202020202020202020202020202075202b3d20692e6c656e6774683b0a2020202020202020202020202020202020202020722e777269746555696e74384172726179280a20202020202020202020202020202020202020202020692c0a2020202020202020202020202020202020202020202066756e6374696f6e202829207b0a2020202020202020202020202020202020202020202020206228293b0a20204d080220202020202020202020202020202020202020207d2c0a20202020202020202020202020202020202020202020630a2020202020202020202020202020202020202020293b0a2020202020202020202020202020202020207d20656c7365207b0a20202020202020202020202020202020202020206228293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020627265616b3b0a20202020202020202020202020202020636173652027666c757368273a0a20202020202020202020202020202020202070203d206e2e6372633b0a202020202020202020202020202020202020696620286929207b0a202020202020202020202020202020202020202075202b3d20692e6c656e6774683b0a2020202020202020202020202020202020202020722e777269746555696e74384172726179280a20202020202020202020202020202020202020202020692c0a2020202020202020202020202020202020202020202066756e6374696f6e202829207b0a2020202020202020202020202020202020202020202020206728293b0a202020202020202020202020202020202020202020207d2c0a20202020202020202020202020202020202020202020630a2020202020202020202020202020202020202020293b0a2020202020202020202020202020202020207d20656c7365207b0a202020204d0802202020202020202020202020202020206728293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202063617365202770726f6772657373273a0a202020202020202020202020202020202020696620286129207b0a2020202020202020202020202020202020202020612864202b206e2e6c6f616465642c206f293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020627265616b3b0a20202020202020202020202020202020636173652027696d706f727453637269707473273a0a202020202020202020202020202020206361736520276e65775461736b273a0a202020202020202020202020202020206361736520276563686f273a0a202020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202064656661756c743a0a202020202020202020202020202020202020636f6e736f6c652e7761726e280a2020202020202020202020202020202020202020277a69702e6a733a6c61756e6368576f726b657250726f636573733a20756e6b6e6f776e206d6573736167653a20272c0a20202020202020202020202020202020202020206e0a202020202020202020202020202020202020293b0a20202020202020202020202020207d0a4d08022020202020202020202020207d0a202020202020202020207d0a2020202020202020202066756e6374696f6e20622829207b0a202020202020202020202020696620282864203d20353234323838202a206829203c3d206f29207b0a20202020202020202020202020206e2e7265616455696e74384172726179280a2020202020202020202020202020202069202b20642c0a202020202020202020202020202020204d6174682e6d696e283532343238382c206f202d2064292c0a2020202020202020202020202020202066756e6374696f6e20286e29207b0a202020202020202020202020202020202020696620286129207b0a20202020202020202020202020202020202020206128642c206f293b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020207661722072203d2064203d3d3d2030203f2074203a207b20736e3a2066207d3b0a202020202020202020202020202020202020722e74797065203d2027617070656e64273b0a202020202020202020202020202020202020722e64617461203d206e3b0a202020202020202020202020202020202020747279207b0a2020202020202020202020202020202020202020652e706f73744d65737361676528722c205b6e2e6275666665725d293b0a2020202020202020202020202020202020207d20636174636820287429207b0a204d080220202020202020202020202020202020202020652e706f73744d6573736167652872293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020682b2b3b0a202020202020202020202020202020207d2c0a20202020202020202020202020202020730a2020202020202020202020202020293b0a2020202020202020202020207d20656c7365207b0a2020202020202020202020202020652e706f73744d657373616765287b20736e3a20662c20747970653a2027666c75736827207d293b0a2020202020202020202020207d0a202020202020202020207d0a2020202020202020202076617220643b0a2020202020202020202076617220703b0a202020202020202020207661722068203d20303b0a202020202020202020207661722066203d20742e736e3b0a202020202020202020207661722075203d20303b0a20202020202020202020652e6164644576656e744c697374656e657228276d657373616765272c206d2c2066616c7365293b0a202020202020202020206228293b0a20202020202020207d0a202020202020202066756e6374696f6e206d28652c20742c206e2c20722c206f2c20612c206c2c20732c20632c206429207b0a2020202020202020202076617220753b0a202020202020202020207661722070203d20303b0a202020202020202020207661722068203d20304d08023b0a202020202020202020207661722066203d2061203d3d3d2027696e707574273b0a202020202020202020207661722067203d2061203d3d3d20276f7574707574273b0a20202020202020202020766172206d203d206e6577206928293b0a202020202020202020202866756e6374696f6e20692829207b0a20202020202020202020202076617220613b0a202020202020202020202020696620282875203d20353234323838202a207029203c206f29207b0a2020202020202020202020202020742e7265616455696e74384172726179280a2020202020202020202020202020202072202b20752c0a202020202020202020202020202020204d6174682e6d696e283532343238382c206f202d2075292c0a2020202020202020202020202020202066756e6374696f6e20287429207b0a20202020202020202020202020202020202076617220723b0a202020202020202020202020202020202020747279207b0a202020202020202020202020202020202020202072203d20652e617070656e6428742c2066756e6374696f6e20286529207b0a20202020202020202020202020202020202020202020696620286c29207b0a2020202020202020202020202020202020202020202020206c2875202b20652c206f293b0a202020202020202020202020202020202020202020207d0a20202020202020202020202020202020202020204d08027d293b0a2020202020202020202020202020202020207d20636174636820286529207b0a2020202020202020202020202020202020202020632865293b0a202020202020202020202020202020202020202072657475726e3b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020696620287229207b0a202020202020202020202020202020202020202068202b3d20722e6c656e6774683b0a20202020202020202020202020202020202020206e2e777269746555696e74384172726179280a20202020202020202020202020202020202020202020722c0a2020202020202020202020202020202020202020202066756e6374696f6e202829207b0a202020202020202020202020202020202020202020202020702b2b3b0a20202020202020202020202020202020202020202020202073657454696d656f757428692c2031293b0a202020202020202020202020202020202020202020207d2c0a20202020202020202020202020202020202020202020640a2020202020202020202020202020202020202020293b0a2020202020202020202020202020202020202020696620286729207b0a202020202020202020202020202020202020202020206d2e617070656e642872293b0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020207d4d080220656c7365207b0a2020202020202020202020202020202020202020702b2b3b0a202020202020202020202020202020202020202073657454696d656f757428692c2031293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020696620286629207b0a20202020202020202020202020202020202020206d2e617070656e642874293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020696620286c29207b0a20202020202020202020202020202020202020206c28752c206f293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020207d2c0a20202020202020202020202020202020630a2020202020202020202020202020293b0a2020202020202020202020207d20656c7365207b0a2020202020202020202020202020747279207b0a2020202020202020202020202020202061203d20652e666c75736828293b0a20202020202020202020202020207d20636174636820286529207b0a20202020202020202020202020202020632865293b0a2020202020202020202020202020202072657475726e3b0a20202020202020202020202020207d0a2020202020202020202020202020696620286129207b0a20202020202020202020202020202020696620286729207b0a2020202020202020204d08022020202020202020206d2e617070656e642861293b0a202020202020202020202020202020207d0a2020202020202020202020202020202068202b3d20612e6c656e6774683b0a202020202020202020202020202020206e2e777269746555696e74384172726179280a202020202020202020202020202020202020612c0a20202020202020202020202020202020202066756e6374696f6e202829207b0a20202020202020202020202020202020202020207328682c206d2e6765742829293b0a2020202020202020202020202020202020207d2c0a202020202020202020202020202020202020640a20202020202020202020202020202020293b0a20202020202020202020202020207d20656c7365207b0a202020202020202020202020202020207328682c206d2e6765742829293b0a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020207d2928293b0a20202020202020207d0a202020202020202066756e6374696f6e206228742c206e2c20722c20692c20612c206c2c20732c20632c20642c20752c207029207b0a2020202020202020202069662028652e7a69702e757365576562576f726b657273202626207329207b0a20202020202020202020202067280a2020202020202020202020202020742c0a20202020202020202020202020207b20736e3a206e2c20636f6465634d0802436c6173733a20274e4f4f50272c20637263547970653a2027696e70757427207d2c0a2020202020202020202020202020722c0a2020202020202020202020202020692c0a2020202020202020202020202020612c0a20202020202020202020202020206c2c0a2020202020202020202020202020642c0a2020202020202020202020202020632c0a2020202020202020202020202020752c0a2020202020202020202020202020700a202020202020202020202020293b0a202020202020202020207d20656c7365207b0a2020202020202020202020206d286e6577206f28292c20722c20692c20612c206c2c2027696e707574272c20642c20632c20752c2070293b0a202020202020202020207d0a20202020202020207d0a202020202020202066756e6374696f6e2077286529207b0a20202020202020202020766172206e3b0a202020202020202020207661722072203d2027273b0a202020202020202020207661722069203d205b0a202020202020202020202020275c784337272c0a202020202020202020202020275c784643272c0a202020202020202020202020275c784539272c0a202020202020202020202020275c784532272c0a202020202020202020202020275c784534272c0a202020202020202020202020275c784530272c0a202020202020202020202020275c784535272c0a202020202020202020202020275c4d0802784537272c0a202020202020202020202020275c784541272c0a202020202020202020202020275c784542272c0a202020202020202020202020275c784538272c0a202020202020202020202020275c784546272c0a202020202020202020202020275c784545272c0a202020202020202020202020275c784543272c0a202020202020202020202020275c784334272c0a202020202020202020202020275c784335272c0a202020202020202020202020275c784339272c0a202020202020202020202020275c784536272c0a202020202020202020202020275c784336272c0a202020202020202020202020275c784634272c0a202020202020202020202020275c784636272c0a202020202020202020202020275c784632272c0a202020202020202020202020275c784642272c0a202020202020202020202020275c784639272c0a202020202020202020202020275c784646272c0a202020202020202020202020275c784436272c0a202020202020202020202020275c784443272c0a202020202020202020202020275c784638272c0a202020202020202020202020275c784133272c0a202020202020202020202020275c784438272c0a202020202020202020202020275c784437272c0a202020202020202020202020275c7530313932272c0a202020202020202020202020275c784531272c0a2020202020202020202020204d0802275c784544272c0a202020202020202020202020275c784633272c0a202020202020202020202020275c784641272c0a202020202020202020202020275c784631272c0a202020202020202020202020275c784431272c0a202020202020202020202020275c784141272c0a202020202020202020202020275c784241272c0a202020202020202020202020275c784246272c0a202020202020202020202020275c784145272c0a202020202020202020202020275c784143272c0a202020202020202020202020275c784244272c0a202020202020202020202020275c784243272c0a202020202020202020202020275c784131272c0a202020202020202020202020275c784142272c0a202020202020202020202020275c784242272c0a202020202020202020202020275f272c0a202020202020202020202020275f272c0a202020202020202020202020275f272c0a202020202020202020202020275c784136272c0a202020202020202020202020275c784136272c0a202020202020202020202020275c784331272c0a202020202020202020202020275c784332272c0a202020202020202020202020275c784330272c0a202020202020202020202020275c784139272c0a202020202020202020202020275c784136272c0a202020202020202020202020275c784136272c0a202020202020202020202020272b272c0a202020204d08022020202020202020272b272c0a202020202020202020202020275c784132272c0a202020202020202020202020275c784135272c0a202020202020202020202020272b272c0a202020202020202020202020272b272c0a202020202020202020202020272d272c0a202020202020202020202020272d272c0a202020202020202020202020272b272c0a202020202020202020202020272d272c0a202020202020202020202020272b272c0a202020202020202020202020275c784533272c0a202020202020202020202020275c784333272c0a202020202020202020202020272b272c0a202020202020202020202020272b272c0a202020202020202020202020272d272c0a202020202020202020202020272d272c0a202020202020202020202020275c784136272c0a202020202020202020202020272d272c0a202020202020202020202020272b272c0a202020202020202020202020275c784134272c0a202020202020202020202020275c784630272c0a202020202020202020202020275c784430272c0a202020202020202020202020275c784341272c0a202020202020202020202020275c784342272c0a202020202020202020202020275c784338272c0a2020202020202020202020202769272c0a202020202020202020202020275c784344272c0a202020202020202020202020275c784345272c0a2020202020202020204d0802202020275c784346272c0a202020202020202020202020272b272c0a202020202020202020202020272b272c0a202020202020202020202020275f272c0a202020202020202020202020275f272c0a202020202020202020202020275c784136272c0a202020202020202020202020275c784343272c0a202020202020202020202020275f272c0a202020202020202020202020275c784433272c0a202020202020202020202020275c784446272c0a202020202020202020202020275c784434272c0a202020202020202020202020275c784432272c0a202020202020202020202020275c784635272c0a202020202020202020202020275c784435272c0a202020202020202020202020275c784235272c0a202020202020202020202020275c784645272c0a202020202020202020202020275c784445272c0a202020202020202020202020275c784441272c0a202020202020202020202020275c784442272c0a202020202020202020202020275c784439272c0a202020202020202020202020275c784644272c0a202020202020202020202020275c784444272c0a202020202020202020202020275c784146272c0a202020202020202020202020275c784234272c0a202020202020202020202020275c784144272c0a202020202020202020202020275c784231272c0a202020202020202020202020275f272c0a202020202020204d08022020202020275c784245272c0a202020202020202020202020275c784236272c0a202020202020202020202020275c784137272c0a202020202020202020202020275c784637272c0a202020202020202020202020275c784238272c0a202020202020202020202020275c784230272c0a202020202020202020202020275c784138272c0a202020202020202020202020275c784237272c0a202020202020202020202020275c784239272c0a202020202020202020202020275c784233272c0a202020202020202020202020275c784232272c0a202020202020202020202020275f272c0a2020202020202020202020202720272c0a202020202020202020205d3b0a20202020202020202020666f7220287661722074203d20303b2074203c20652e6c656e6774683b20742b2b29207b0a20202020202020202020202072202b3d0a2020202020202020202020202020286e203d20323535202620652e63686172436f6465417428742929203e203132370a202020202020202020202020202020203f20695b6e202d203132385d0a202020202020202020202020202020203a20537472696e672e66726f6d43686172436f6465286e293b0a202020202020202020207d0a2020202020202020202072657475726e20723b0a20202020202020207d0a202020202020202066756e6374696f6e2076286529207b0a20202020202020202020724d0802657475726e206465636f6465555249436f6d706f6e656e7428657363617065286529293b0a20202020202020207d0a202020202020202066756e6374696f6e2079286529207b0a20202020202020202020766172206e203d2027273b0a20202020202020202020666f7220287661722074203d20303b2074203c20652e6c656e6774683b20742b2b29207b0a2020202020202020202020206e202b3d20537472696e672e66726f6d43686172436f646528655b745d293b0a202020202020202020207d0a2020202020202020202072657475726e206e3b0a20202020202020207d0a202020202020202066756e6374696f6e207828652c20742c206e2c20722c206929207b0a20202020202020202020652e76657273696f6e203d20742e766965772e67657455696e743136286e2c2074727565293b0a20202020202020202020652e626974466c6167203d20742e766965772e67657455696e743136286e202b20322c2074727565293b0a20202020202020202020652e636f6d7072657373696f6e4d6574686f64203d20742e766965772e67657455696e743136286e202b20342c2074727565293b0a20202020202020202020652e6c6173744d6f6444617465526177203d20742e766965772e67657455696e743332286e202b20362c2074727565293b0a20202020202020202020652e6c6173744d6f6444617465203d202866756e6374694d08026f6e20286529207b0a2020202020202020202020207661722074203d2028343239343930313736302026206529203e3e2031363b0a202020202020202020202020766172206e203d203635353335202620653b0a202020202020202020202020747279207b0a202020202020202020202020202072657475726e206e65772044617465280a2020202020202020202020202020202031393830202b20282836353032342026207429203e3e2039292c0a2020202020202020202020202020202028283438302026207429203e3e203529202d20312c0a202020202020202020202020202020203331202620742c0a202020202020202020202020202020202836333438382026206e29203e3e2031312c0a2020202020202020202020202020202028323031362026206e29203e3e20352c0a2020202020202020202020202020202032202a202833312026206e292c0a20202020202020202020202020202020300a2020202020202020202020202020293b0a2020202020202020202020207d20636174636820286529207b7d0a202020202020202020207d2928652e6c6173744d6f6444617465526177293b0a20202020202020202020696620282831202620652e626974466c616729203d3d203129207b0a20202020202020202020202069282746696c6520636f6e7461696e7320656e6372797074656420656e7472792e27293b0a2020204d0802202020202020207d20656c7365207b0a2020202020202020202020206966202872207c7c202838202620652e626974466c61672920213d203829207b0a2020202020202020202020202020652e6372633332203d20742e766965772e67657455696e743332286e202b2031302c2074727565293b0a2020202020202020202020202020652e636f6d7072657373656453697a65203d20742e766965772e67657455696e743332286e202b2031342c2074727565293b0a2020202020202020202020202020652e756e636f6d7072657373656453697a65203d20742e766965772e67657455696e743332286e202b2031382c2074727565293b0a2020202020202020202020207d0a202020202020202020202020696620280a2020202020202020202020202020652e636f6d7072657373656453697a6520213d3d20343239343936373239352026260a2020202020202020202020202020652e756e636f6d7072657373656453697a6520213d3d20343239343936373239350a20202020202020202020202029207b0a2020202020202020202020202020652e66696c656e616d654c656e677468203d20742e766965772e67657455696e743136286e202b2032322c2074727565293b0a2020202020202020202020202020652e65787472614669656c644c656e677468203d20742e766965772e67657455696e743136286e202b2032342c2074724d08027565293b0a2020202020202020202020207d20656c7365207b0a202020202020202020202020202069282746696c65206973207573696e67205a6970363420283467622b2066696c652073697a65292e27293b0a2020202020202020202020207d0a202020202020202020207d0a20202020202020207d0a202020202020202066756e6374696f6e204128742c20692c206f29207b0a2020202020202020202066756e6374696f6e20732829207b7d0a20202020202020202020766172206c203d20303b0a20202020202020202020732e70726f746f747970652e67657444617461203d2066756e6374696f6e2028722c20692c20732c206329207b0a20202020202020202020202066756e6374696f6e207528652c207429207b0a2020202020202020202020202020696620280a20202020202020202020202020202020632026260a20202020202020202020202020202020212866756e6374696f6e20286529207b0a2020202020202020202020202020202020207661722074203d20612834293b0a202020202020202020202020202020202020742e766965772e73657455696e74333228302c2065293b0a20202020202020202020202020202020202072657475726e20642e6372633332203d3d20742e766965772e67657455696e7433322830293b0a202020202020202020202020202020207d292874290a202020202020202020204d08022020202029207b0a202020202020202020202020202020206f2827435243206661696c65642e27293b0a20202020202020202020202020207d20656c7365207b0a20202020202020202020202020202020722e676574446174612866756e6374696f6e20286529207b0a202020202020202020202020202020202020692865293b0a202020202020202020202020202020207d293b0a20202020202020202020202020207d0a2020202020202020202020207d0a20202020202020202020202066756e6374696f6e2070286529207b0a20202020202020202020202020206f2865207c7c20274572726f72207768696c652072656164696e672066696c6520646174612e27293b0a2020202020202020202020207d0a20202020202020202020202066756e6374696f6e2068286529207b0a20202020202020202020202020206f2865207c7c20274572726f72207768696c652077726974696e672066696c6520646174612e27293b0a2020202020202020202020207d0a2020202020202020202020207661722064203d20746869733b0a202020202020202020202020742e7265616455696e74384172726179280a2020202020202020202020202020642e6f66667365742c0a202020202020202020202020202033302c0a202020202020202020202020202066756e6374696f6e20286929207b0a20202020202020202020202020202020764d0802617220663b0a202020202020202020202020202020207661722077203d206128692e6c656e6774682c2069293b0a2020202020202020202020202020202069662028772e766965772e67657455696e743332283029203d3d203133343730393332353229207b0a2020202020202020202020202020202020207828642c20772c20342c2066616c73652c206f293b0a20202020202020202020202020202020202066203d20642e6f6666736574202b203330202b20642e66696c656e616d654c656e677468202b20642e65787472614669656c644c656e6774683b0a202020202020202020202020202020202020722e696e69742866756e6374696f6e202829207b0a202020202020202020202020202020202020202069662028642e636f6d7072657373696f6e4d6574686f64203d3d3d203029207b0a2020202020202020202020202020202020202020202062280a202020202020202020202020202020202020202020202020642e5f776f726b65722c0a2020202020202020202020202020202020202020202020206c2b2b2c0a202020202020202020202020202020202020202020202020742c0a202020202020202020202020202020202020202020202020722c0a202020202020202020202020202020202020202020202020662c0a202020202020202020202020202020202020202020202020642e636f6d7072657373656453694d08027a652c0a202020202020202020202020202020202020202020202020632c0a202020202020202020202020202020202020202020202020752c0a202020202020202020202020202020202020202020202020732c0a202020202020202020202020202020202020202020202020702c0a202020202020202020202020202020202020202020202020680a20202020202020202020202020202020202020202020293b0a20202020202020202020202020202020202020207d20656c7365207b0a202020202020202020202020202020202020202020202866756e6374696f6e2028742c206e2c20722c20692c206f2c20612c206c2c20732c20632c20642c207529207b0a2020202020202020202020202020202020202020202020207661722070203d206c203f20276f757470757427203a20276e6f6e65273b0a20202020202020202020202020202020202020202020202069662028652e7a69702e757365576562576f726b65727329207b0a202020202020202020202020202020202020202020202020202067280a20202020202020202020202020202020202020202020202020202020742c0a202020202020202020202020202020202020202020202020202020207b20736e3a206e2c20636f646563436c6173733a2027496e666c61746572272c20637263547970653a2070207d2c0a202020202020202020202020202020202020204d0802202020202020202020722c0a20202020202020202020202020202020202020202020202020202020692c0a202020202020202020202020202020202020202020202020202020206f2c0a20202020202020202020202020202020202020202020202020202020612c0a20202020202020202020202020202020202020202020202020202020632c0a20202020202020202020202020202020202020202020202020202020732c0a20202020202020202020202020202020202020202020202020202020642c0a20202020202020202020202020202020202020202020202020202020750a2020202020202020202020202020202020202020202020202020293b0a2020202020202020202020202020202020202020202020207d20656c7365207b0a20202020202020202020202020202020202020202020202020206d286e657720652e7a69702e496e666c6174657228292c20722c20692c206f2c20612c20702c20632c20732c20642c2075293b0a2020202020202020202020202020202020202020202020207d0a202020202020202020202020202020202020202020207d29280a202020202020202020202020202020202020202020202020642e5f776f726b65722c0a2020202020202020202020202020202020202020202020206c2b2b2c0a202020202020202020202020202020202020202020202020742c0a2020202020202020204d0802202020202020202020202020202020722c0a202020202020202020202020202020202020202020202020662c0a202020202020202020202020202020202020202020202020642e636f6d7072657373656453697a652c0a202020202020202020202020202020202020202020202020632c0a202020202020202020202020202020202020202020202020752c0a202020202020202020202020202020202020202020202020732c0a202020202020202020202020202020202020202020202020702c0a202020202020202020202020202020202020202020202020680a20202020202020202020202020202020202020202020293b0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020207d2c2068293b0a202020202020202020202020202020207d20656c7365207b0a2020202020202020202020202020202020206f286e293b0a202020202020202020202020202020207d0a20202020202020202020202020207d2c0a2020202020202020202020202020700a202020202020202020202020293b0a202020202020202020207d3b0a202020202020202020207661722063203d207b0a202020202020202020202020676574456e74726965733a2066756e6374696f6e20286529207b0a20202020202020202020202020207661722069203d20746869732e5f776f726b65723b0a202020204d0802202020202020202020202866756e6374696f6e20286529207b0a2020202020202020202020202020202066756e6374696f6e2069286e2c206929207b0a202020202020202020202020202020202020742e7265616455696e74384172726179280a2020202020202020202020202020202020202020742e73697a65202d206e2c0a20202020202020202020202020202020202020206e2c0a202020202020202020202020202020202020202066756e6374696f6e20287429207b0a20202020202020202020202020202020202020202020666f722028766172206e203d20742e6c656e677468202d2032323b206e203e3d20303b206e2d2d29207b0a202020202020202020202020202020202020202020202020696620280a2020202020202020202020202020202020202020202020202020745b6e5d203d3d3d2038302026260a2020202020202020202020202020202020202020202020202020745b6e202b20315d203d3d3d2037352026260a2020202020202020202020202020202020202020202020202020745b6e202b20325d203d3d3d20352026260a2020202020202020202020202020202020202020202020202020745b6e202b20335d203d3d3d20360a20202020202020202020202020202020202020202020202029207b0a202020202020202020202020202020202020202020202020202065286e65772044617461566965774d080228742e6275666665722c206e2c20323229293b0a202020202020202020202020202020202020202020202020202072657475726e3b0a2020202020202020202020202020202020202020202020207d0a202020202020202020202020202020202020202020207d0a202020202020202020202020202020202020202020206928293b0a20202020202020202020202020202020202020207d2c0a202020202020202020202020202020202020202066756e6374696f6e202829207b0a202020202020202020202020202020202020202020206f2872293b0a20202020202020202020202020202020202020207d0a202020202020202020202020202020202020293b0a202020202020202020202020202020207d0a2020202020202020202020202020202069662028742e73697a65203c20323229207b0a2020202020202020202020202020202020206f286e293b0a202020202020202020202020202020207d20656c7365207b0a202020202020202020202020202020202020692832322c2066756e6374696f6e202829207b0a202020202020202020202020202020202020202069284d6174682e6d696e2836353535382c20742e73697a65292c2066756e6374696f6e202829207b0a202020202020202020202020202020202020202020206f286e293b0a20202020202020202020202020202020202020207d293b0a20202020202020204d0802202020202020202020207d293b0a202020202020202020202020202020207d0a20202020202020202020202020207d292866756e6374696f6e20286c29207b0a202020202020202020202020202020207661722063203d206c2e67657455696e7433322831362c2074727565293b0a202020202020202020202020202020207661722064203d206c2e67657455696e74313628382c2074727565293b0a202020202020202020202020202020206966202863203c2030207c7c2063203e3d20742e73697a6529207b0a2020202020202020202020202020202020206f286e293b0a202020202020202020202020202020207d20656c7365207b0a202020202020202020202020202020202020742e7265616455696e74384172726179280a2020202020202020202020202020202020202020632c0a2020202020202020202020202020202020202020742e73697a65202d20632c0a202020202020202020202020202020202020202066756e6374696f6e20287429207b0a20202020202020202020202020202020202020202020766172206c3b0a2020202020202020202020202020202020202020202076617220633b0a2020202020202020202020202020202020202020202076617220753b0a202020202020202020202020202020202020202020207661722070203d20303b0a2020202020202020202020202020202020202020202076614d0802722068203d205b5d3b0a202020202020202020202020202020202020202020207661722066203d206128742e6c656e6774682c2074293b0a20202020202020202020202020202020202020202020666f7220287661722072203d20303b2072203c20643b20722b2b29207b0a202020202020202020202020202020202020202020202020286c203d206e657720732829292e5f776f726b6572203d20693b0a20202020202020202020202020202020202020202020202069662028662e766965772e67657455696e74333228702920213d203133343730393237333829207b0a20202020202020202020202020202020202020202020202020206f286e293b0a202020202020202020202020202020202020202020202020202072657475726e3b0a2020202020202020202020202020202020202020202020207d0a20202020202020202020202020202020202020202020202078286c2c20662c2070202b20362c20747275652c206f293b0a2020202020202020202020202020202020202020202020206c2e636f6d6d656e744c656e677468203d20662e766965772e67657455696e7431362870202b2033322c2074727565293b0a2020202020202020202020202020202020202020202020206c2e6469726563746f7279203d20283136202620662e766965772e67657455696e74382870202b2033382929203d3d2031363b0a20202020204d0802202020202020202020202020202020202020206c2e6f6666736574203d20662e766965772e67657455696e7433322870202b2034322c2074727565293b0a20202020202020202020202020202020202020202020202063203d2079280a2020202020202020202020202020202020202020202020202020662e61727261792e73756261727261792870202b2034362c2070202b203436202b206c2e66696c656e616d654c656e677468290a202020202020202020202020202020202020202020202020293b0a2020202020202020202020202020202020202020202020206c2e66696c656e616d65203d2028323034382026206c2e626974466c616729203d3d2032303438203f2076286329203a20772863293b0a202020202020202020202020202020202020202020202020696620280a2020202020202020202020202020202020202020202020202020216c2e6469726563746f72792026260a20202020202020202020202020202020202020202020202020206c2e66696c656e616d652e636861724174286c2e66696c656e616d652e6c656e677468202d203129203d3d20272f270a20202020202020202020202020202020202020202020202029207b0a20202020202020202020202020202020202020202020202020206c2e6469726563746f7279203d20747275653b0a2020202020202020202020202020202020202020202020204d08027d0a20202020202020202020202020202020202020202020202075203d2079280a2020202020202020202020202020202020202020202020202020662e61727261792e7375626172726179280a2020202020202020202020202020202020202020202020202020202070202b203436202b206c2e66696c656e616d654c656e677468202b206c2e65787472614669656c644c656e6774682c0a2020202020202020202020202020202020202020202020202020202070202b0a2020202020202020202020202020202020202020202020202020202020203436202b0a2020202020202020202020202020202020202020202020202020202020206c2e66696c656e616d654c656e677468202b0a2020202020202020202020202020202020202020202020202020202020206c2e65787472614669656c644c656e677468202b0a2020202020202020202020202020202020202020202020202020202020206c2e636f6d6d656e744c656e6774680a2020202020202020202020202020202020202020202020202020290a202020202020202020202020202020202020202020202020293b0a2020202020202020202020202020202020202020202020206c2e636f6d6d656e74203d2028323034382026206c2e626974466c616729203d3d2032303438203f2076287529203a20772875293b0a2020202020202020202020202020202020202020204d0802202020682e70757368286c293b0a20202020202020202020202020202020202020202020202070202b3d0a20202020202020202020202020202020202020202020202020203436202b0a20202020202020202020202020202020202020202020202020206c2e66696c656e616d654c656e677468202b0a20202020202020202020202020202020202020202020202020206c2e65787472614669656c644c656e677468202b0a20202020202020202020202020202020202020202020202020206c2e636f6d6d656e744c656e6774683b0a202020202020202020202020202020202020202020207d0a20202020202020202020202020202020202020202020652868293b0a20202020202020202020202020202020202020207d2c0a202020202020202020202020202020202020202066756e6374696f6e202829207b0a202020202020202020202020202020202020202020206f2872293b0a20202020202020202020202020202020202020207d0a202020202020202020202020202020202020293b0a202020202020202020202020202020207d0a20202020202020202020202020207d293b0a2020202020202020202020207d2c0a202020202020202020202020636c6f73653a2066756e6374696f6e20286529207b0a202020202020202020202020202069662028746869732e5f776f726b657229207b0a2020202020202020202020204d080220202020746869732e5f776f726b65722e7465726d696e61746528293b0a20202020202020202020202020202020746869732e5f776f726b6572203d206e756c6c3b0a20202020202020202020202020207d0a2020202020202020202020202020696620286529207b0a202020202020202020202020202020206528293b0a20202020202020202020202020207d0a2020202020202020202020207d2c0a2020202020202020202020205f776f726b65723a206e756c6c2c0a202020202020202020207d3b0a2020202020202020202069662028652e7a69702e757365576562576f726b65727329207b0a2020202020202020202020205f280a202020202020202020202020202027696e666c61746572272c0a202020202020202020202020202066756e6374696f6e20286529207b0a20202020202020202020202020202020632e5f776f726b6572203d20653b0a20202020202020202020202020202020692863293b0a20202020202020202020202020207d2c0a202020202020202020202020202066756e6374696f6e20286529207b0a202020202020202020202020202020206f2865293b0a20202020202020202020202020207d0a202020202020202020202020293b0a202020202020202020207d20656c7365207b0a202020202020202020202020692863293b0a202020202020202020207d0a20202020202020207d0a202020204d08022020202066756e6374696f6e206b286529207b0a2020202020202020202072657475726e20756e65736361706528656e636f6465555249436f6d706f6e656e74286529293b0a20202020202020207d0a202020202020202066756e6374696f6e2053286529207b0a20202020202020202020766172206e203d205b5d3b0a20202020202020202020666f7220287661722074203d20303b2074203c20652e6c656e6774683b20742b2b29207b0a2020202020202020202020206e2e7075736828652e63686172436f64654174287429293b0a202020202020202020207d0a2020202020202020202072657475726e206e3b0a20202020202020207d0a202020202020202066756e6374696f6e204328742c206e2c20722c206929207b0a2020202020202020202066756e6374696f6e2064286529207b0a202020202020202020202020722865207c7c20274572726f72207768696c652077726974696e67207a69702066696c652e27293b0a202020202020202020207d0a2020202020202020202066756e6374696f6e2075286529207b0a202020202020202020202020722865207c7c20274572726f72207768696c652072656164696e672066696c6520646174612e27293b0a202020202020202020207d0a20202020202020202020766172206f203d207b7d3b0a20202020202020202020766172206c203d205b5d3b0a20202020202020204d080220207661722073203d20303b0a202020202020202020207661722063203d20303b0a202020202020202020207661722070203d207b0a2020202020202020202020206164643a2066756e6374696f6e20286e2c20702c20682c20662c207729207b0a202020202020202020202020202066756e6374696f6e204328652c206e29207b0a202020202020202020202020202020207661722072203d2061283136293b0a2020202020202020202020202020202073202b3d2065207c7c20303b0a20202020202020202020202020202020722e766965772e73657455696e74333228302c2031333437303934323830293b0a20202020202020202020202020202020696620286e20213d3d20766f6964203029207b0a202020202020202020202020202020202020762e766965772e73657455696e7433322831302c206e2c2074727565293b0a202020202020202020202020202020202020722e766965772e73657455696e74333228342c206e2c2074727565293b0a202020202020202020202020202020207d0a20202020202020202020202020202020696620287029207b0a202020202020202020202020202020202020722e766965772e73657455696e74333228382c20652c2074727565293b0a202020202020202020202020202020202020762e766965772e73657455696e7433322831342c20652c2074727565293b0a202020202020204d08022020202020202020202020722e766965772e73657455696e7433322831322c20702e73697a652c2074727565293b0a202020202020202020202020202020202020762e766965772e73657455696e7433322831382c20702e73697a652c2074727565293b0a202020202020202020202020202020207d0a20202020202020202020202020202020742e777269746555696e74384172726179280a202020202020202020202020202020202020722e61727261792c0a20202020202020202020202020202020202066756e6374696f6e202829207b0a202020202020202020202020202020202020202073202b3d2031363b0a20202020202020202020202020202020202020206828293b0a2020202020202020202020202020202020207d2c0a202020202020202020202020202020202020640a20202020202020202020202020202020293b0a20202020202020202020202020207d0a202020202020202020202020202066756e6374696f6e20452829207b0a2020202020202020202020202020202077203d2077207c7c207b7d3b0a202020202020202020202020202020206e203d206e2e7472696d28293b0a2020202020202020202020202020202069662028772e6469726563746f7279202626206e2e636861724174286e2e6c656e677468202d20312920213d20272f2729207b0a2020202020202020202020202020202020206e202b4d08023d20272f273b0a202020202020202020202020202020207d0a20202020202020202020202020202020696620286f2e6861734f776e50726f7065727479286e2929207b0a20202020202020202020202020202020202072282746696c6520616c7265616479206578697374732e27293b0a202020202020202020202020202020207d20656c7365207b0a20202020202020202020202020202020202079203d2053286b286e29293b0a2020202020202020202020202020202020206c2e70757368286e293b0a2020202020202020202020202020202020202866756e6374696f6e20286529207b0a202020202020202020202020202020202020202076617220723b0a202020202020202020202020202020202020202078203d20772e6c6173744d6f6444617465207c7c206e6577204461746528293b0a202020202020202020202020202020202020202076203d2061283236293b0a20202020202020202020202020202020202020206f5b6e5d203d207b0a2020202020202020202020202020202020202020202068656164657241727261793a20762e61727261792c0a202020202020202020202020202020202020202020206469726563746f72793a20772e6469726563746f72792c0a2020202020202020202020202020202020202020202066696c656e616d653a20792c0a202020202020202020202020202020202020202020206f4d080266667365743a20732c0a20202020202020202020202020202020202020202020636f6d6d656e743a2053286b28772e636f6d6d656e74207c7c20272729292c0a20202020202020202020202020202020202020207d3b0a2020202020202020202020202020202020202020762e766965772e73657455696e74333228302c20333335353436333736293b0a202020202020202020202020202020202020202069662028772e76657273696f6e29207b0a20202020202020202020202020202020202020202020762e766965772e73657455696e743828302c20772e76657273696f6e293b0a20202020202020202020202020202020202020207d0a202020202020202020202020202020202020202069662028216920262620772e6c6576656c20213d3d20302026262021772e6469726563746f727929207b0a20202020202020202020202020202020202020202020762e766965772e73657455696e74313628342c2032303438293b0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020202020762e766965772e73657455696e743136280a20202020202020202020202020202020202020202020362c0a20202020202020202020202020202020202020202020282828782e676574486f7572732829203c3c203629207c20782e6765744d696e75746573282929203c3c203529207c0a20204d08022020202020202020202020202020202020202020202028782e6765745365636f6e64732829202f2032292c0a20202020202020202020202020202020202020202020747275650a2020202020202020202020202020202020202020293b0a2020202020202020202020202020202020202020762e766965772e73657455696e743136280a20202020202020202020202020202020202020202020382c0a2020202020202020202020202020202020202020202028282828782e67657446756c6c596561722829202d203139383029203c3c203429207c2028782e6765744d6f6e74682829202b20312929203c3c0a2020202020202020202020202020202020202020202020203529207c0a202020202020202020202020202020202020202020202020782e6765744461746528292c0a20202020202020202020202020202020202020202020747275650a2020202020202020202020202020202020202020293b0a2020202020202020202020202020202020202020762e766965772e73657455696e7431362832322c20792e6c656e6774682c2074727565293b0a20202020202020202020202020202020202020202872203d2061283330202b20792e6c656e67746829292e766965772e73657455696e74333228302c2031333437303933323532293b0a2020202020202020202020202020202020202020722e61727261792e73657428762e4d080261727261792c2034293b0a2020202020202020202020202020202020202020722e61727261792e73657428792c203330293b0a202020202020202020202020202020202020202073202b3d20722e61727261792e6c656e6774683b0a2020202020202020202020202020202020202020742e777269746555696e7438417272617928722e61727261792c20652c2064293b0a2020202020202020202020202020202020207d292866756e6374696f6e202829207b0a2020202020202020202020202020202020202020696620287029207b0a202020202020202020202020202020202020202020206966202869207c7c20772e6c6576656c203d3d3d203029207b0a2020202020202020202020202020202020202020202020206228412c20632b2b2c20702c20742c20302c20702e73697a652c20747275652c20432c20662c20752c2064293b0a202020202020202020202020202020202020202020207d20656c7365207b0a2020202020202020202020202020202020202020202020202866756e6374696f6e2028742c206e2c20722c20692c206f2c20612c206c2c20732c206329207b0a202020202020202020202020202020202020202020202020202069662028652e7a69702e757365576562576f726b65727329207b0a2020202020202020202020202020202020202020202020202020202067280a202020202020202020202020204d08022020202020202020202020202020202020742c0a2020202020202020202020202020202020202020202020202020202020207b0a2020202020202020202020202020202020202020202020202020202020202020736e3a206e2c0a20202020202020202020202020202020202020202020202020202020202020206f7074696f6e733a207b206c6576656c3a206f207d2c0a2020202020202020202020202020202020202020202020202020202020202020636f646563436c6173733a20274465666c61746572272c0a2020202020202020202020202020202020202020202020202020202020202020637263547970653a2027696e707574272c0a2020202020202020202020202020202020202020202020202020202020207d2c0a202020202020202020202020202020202020202020202020202020202020722c0a202020202020202020202020202020202020202020202020202020202020692c0a202020202020202020202020202020202020202020202020202020202020302c0a202020202020202020202020202020202020202020202020202020202020722e73697a652c0a2020202020202020202020202020202020202020202020202020202020206c2c0a202020202020202020202020202020202020202020202020202020202020612c0a202020202020202020202020202020202020202020202020202020202020732c4d08020a202020202020202020202020202020202020202020202020202020202020630a20202020202020202020202020202020202020202020202020202020293b0a20202020202020202020202020202020202020202020202020207d20656c7365207b0a202020202020202020202020202020202020202020202020202020206d280a2020202020202020202020202020202020202020202020202020202020206e657720652e7a69702e4465666c6174657228292c0a202020202020202020202020202020202020202020202020202020202020722c0a202020202020202020202020202020202020202020202020202020202020692c0a202020202020202020202020202020202020202020202020202020202020302c0a202020202020202020202020202020202020202020202020202020202020722e73697a652c0a20202020202020202020202020202020202020202020202020202020202027696e707574272c0a2020202020202020202020202020202020202020202020202020202020206c2c0a202020202020202020202020202020202020202020202020202020202020612c0a202020202020202020202020202020202020202020202020202020202020732c0a202020202020202020202020202020202020202020202020202020202020630a20202020202020202020202020202020202020202020202020202020293b0a4d080220202020202020202020202020202020202020202020202020207d0a2020202020202020202020202020202020202020202020207d2928412c20632b2b2c20702c20742c20772e6c6576656c2c20432c20662c20752c2064293b0a202020202020202020202020202020202020202020207d0a20202020202020202020202020202020202020207d20656c7365207b0a202020202020202020202020202020202020202020204328293b0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020207d293b0a202020202020202020202020202020207d0a20202020202020202020202020207d0a202020202020202020202020202076617220763b0a202020202020202020202020202076617220793b0a202020202020202020202020202076617220783b0a20202020202020202020202020207661722041203d20746869732e5f776f726b65723b0a2020202020202020202020202020696620287029207b0a20202020202020202020202020202020702e696e697428452c2075293b0a20202020202020202020202020207d20656c7365207b0a202020202020202020202020202020204528293b0a20202020202020202020202020207d0a2020202020202020202020207d2c0a202020202020202020202020636c6f73653a2066756e6374696f6e20286529207b0a202020202020202020204d08022020202069662028746869732e5f776f726b657229207b0a20202020202020202020202020202020746869732e5f776f726b65722e7465726d696e61746528293b0a20202020202020202020202020202020746869732e5f776f726b6572203d206e756c6c3b0a20202020202020202020202020207d0a202020202020202020202020202076617220693b0a20202020202020202020202020207661722063203d20303b0a20202020202020202020202020207661722075203d20303b0a2020202020202020202020202020666f7220287661722072203d20303b2072203c206c2e6c656e6774683b20722b2b29207b0a2020202020202020202020202020202063202b3d203436202b202869203d206f5b6c5b725d5d292e66696c656e616d652e6c656e677468202b20692e636f6d6d656e742e6c656e6774683b0a20202020202020202020202020207d0a2020202020202020202020202020766172206e203d20612863202b203232293b0a2020202020202020202020202020666f72202872203d20303b2072203c206c2e6c656e6774683b20722b2b29207b0a2020202020202020202020202020202069203d206f5b6c5b725d5d3b0a202020202020202020202020202020206e2e766965772e73657455696e74333228752c2031333437303932373338293b0a202020202020202020202020202020206e2e766965772e73657455696e4d08027431362875202b20342c2035313230293b0a202020202020202020202020202020206e2e61727261792e73657428692e68656164657241727261792c2075202b2036293b0a202020202020202020202020202020206e2e766965772e73657455696e7431362875202b2033322c20692e636f6d6d656e742e6c656e6774682c2074727565293b0a2020202020202020202020202020202069662028692e6469726563746f727929207b0a2020202020202020202020202020202020206e2e766965772e73657455696e74382875202b2033382c203136293b0a202020202020202020202020202020207d0a202020202020202020202020202020206e2e766965772e73657455696e7433322875202b2034322c20692e6f66667365742c2074727565293b0a202020202020202020202020202020206e2e61727261792e73657428692e66696c656e616d652c2075202b203436293b0a202020202020202020202020202020206e2e61727261792e73657428692e636f6d6d656e742c2075202b203436202b20692e66696c656e616d652e6c656e677468293b0a2020202020202020202020202020202075202b3d203436202b20692e66696c656e616d652e6c656e677468202b20692e636f6d6d656e742e6c656e6774683b0a20202020202020202020202020207d0a20202020202020202020202020206e2e766965772e73657455696e7433324d080228752c2031333437303933373636293b0a20202020202020202020202020206e2e766965772e73657455696e7431362875202b20382c206c2e6c656e6774682c2074727565293b0a20202020202020202020202020206e2e766965772e73657455696e7431362875202b2031302c206c2e6c656e6774682c2074727565293b0a20202020202020202020202020206e2e766965772e73657455696e7433322875202b2031322c20632c2074727565293b0a20202020202020202020202020206e2e766965772e73657455696e7433322875202b2031362c20732c2074727565293b0a2020202020202020202020202020742e777269746555696e74384172726179280a202020202020202020202020202020206e2e61727261792c0a2020202020202020202020202020202066756e6374696f6e202829207b0a202020202020202020202020202020202020742e676574446174612865293b0a202020202020202020202020202020207d2c0a20202020202020202020202020202020640a2020202020202020202020202020293b0a2020202020202020202020207d2c0a2020202020202020202020205f776f726b65723a206e756c6c2c0a202020202020202020207d3b0a2020202020202020202069662028652e7a69702e757365576562576f726b65727329207b0a2020202020202020202020205f280a202020202020202020202020204d080220276465666c61746572272c0a202020202020202020202020202066756e6374696f6e20286529207b0a20202020202020202020202020202020702e5f776f726b6572203d20653b0a202020202020202020202020202020206e2870293b0a20202020202020202020202020207d2c0a202020202020202020202020202066756e6374696f6e20286529207b0a20202020202020202020202020202020722865293b0a20202020202020202020202020207d0a202020202020202020202020293b0a202020202020202020207d20656c7365207b0a2020202020202020202020206e2870293b0a202020202020202020207d0a20202020202020207d0a202020202020202066756e6374696f6e205f28742c206e2c207229207b0a2020202020202020202066756e6374696f6e2073286529207b0a2020202020202020202020206c2e7465726d696e61746528293b0a202020202020202020202020722865293b0a202020202020202020207d0a20202020202020202020696620280a202020202020202020202020652e7a69702e776f726b657253637269707473203d3d3d206e756c6c207c7c0a202020202020202020202020652e7a69702e776f726b65725363726970747350617468203d3d3d206e756c6c0a2020202020202020202029207b0a20202020202020202020202076617220693b0a202020202020202020202020766172206f4d08023b0a20202020202020202020202076617220613b0a20202020202020202020202069662028652e7a69702e776f726b65725363726970747329207b0a202020202020202020202020202069203d20652e7a69702e776f726b6572536372697074735b745d3b0a2020202020202020202020202020696620282141727261792e6973417272617928692929207b0a2020202020202020202020202020202072286e6577204572726f7228277a69702e776f726b6572536372697074732e27202b2074202b2027206973206e6f7420616e206172726179212729293b0a2020202020202020202020202020202072657475726e3b0a20202020202020202020202020207d0a20202020202020202020202020206f203d20693b0a202020202020202020202020202061203d20646f63756d656e742e637265617465456c656d656e7428276127293b0a202020202020202020202020202069203d206f2e6d61702866756e6374696f6e20286529207b0a20202020202020202020202020202020612e68726566203d20653b0a2020202020202020202020202020202072657475726e20612e687265663b0a20202020202020202020202020207d293b0a2020202020202020202020207d20656c7365207b0a20202020202020202020202020202869203d20455b745d2e736c696365283029295b305d203d2028652e7a69702e776f726b6572536372694d080270747350617468207c7c20272729202b20695b305d3b0a2020202020202020202020207d0a202020202020202020202020766172206c203d206e657720576f726b657228695b305d293b0a2020202020202020202020206c2e636f64656354696d65203d206c2e63726354696d65203d20303b0a2020202020202020202020206c2e706f73744d657373616765287b20747970653a2027696d706f727453637269707473272c20736372697074733a20692e736c696365283129207d293b0a2020202020202020202020206c2e6164644576656e744c697374656e657228276d657373616765272c2066756e6374696f6e2065287429207b0a20202020202020202020202020207661722069203d20742e646174613b0a202020202020202020202020202069662028692e6572726f7229207b0a202020202020202020202020202020206c2e7465726d696e61746528293b0a202020202020202020202020202020207228692e6572726f72293b0a2020202020202020202020202020202072657475726e3b0a20202020202020202020202020207d0a202020202020202020202020202069662028692e74797065203d3d3d2027696d706f7274536372697074732729207b0a202020202020202020202020202020206c2e72656d6f76654576656e744c697374656e657228276d657373616765272c2065293b0a2020202020202020202020204d0802202020206c2e72656d6f76654576656e744c697374656e657228276572726f72272c2073293b0a202020202020202020202020202020206e286c293b0a20202020202020202020202020207d0a2020202020202020202020207d293b0a2020202020202020202020206c2e6164644576656e744c697374656e657228276572726f72272c2073293b0a202020202020202020207d20656c7365207b0a20202020202020202020202072280a20202020202020202020202020206e6577204572726f72280a2020202020202020202020202020202027456974686572207a69702e776f726b657253637269707473206f72207a69702e776f726b65725363726970747350617468206d6179206265207365742c206e6f7420626f74682e270a2020202020202020202020202020290a202020202020202020202020293b0a202020202020202020207d0a20202020202020207d0a202020202020202066756e6374696f6e2049286529207b0a20202020202020202020636f6e736f6c652e6572726f722865293b0a20202020202020207d0a202020202020202076617220743b0a2020202020202020766172206e203d202746696c6520666f726d6174206973206e6f74207265636f676e697a65642e273b0a20202020202020207661722072203d20274572726f72207768696c652072656164696e67207a69702066696c652e273b0a20202020204d0802202020747279207b0a2020202020202020202074203d206e657720426c6f62285b6e6577204461746156696577286e6577204172726179427566666572283029295d292e73697a65203d3d3d20303b0a20202020202020207d20636174636820286529207b7d0a2020202020202020692e70726f746f747970652e617070656e64203d2066756e6374696f6e20286529207b0a202020202020202020207661722074203d2030207c20746869732e6372633b0a20202020202020202020766172206e203d20746869732e7461626c653b0a202020202020202020207661722072203d20303b0a20202020202020202020666f7220287661722069203d2030207c20652e6c656e6774683b2072203c20693b20722b2b29207b0a20202020202020202020202074203d202874203e3e3e203829205e206e5b3235352026202874205e20655b725d295d3b0a202020202020202020207d0a20202020202020202020746869732e637263203d20743b0a20202020202020207d3b0a2020202020202020692e70726f746f747970652e676574203d2066756e6374696f6e202829207b0a2020202020202020202072657475726e207e746869732e6372633b0a20202020202020207d3b0a2020202020202020692e70726f746f747970652e7461626c65203d202866756e6374696f6e202829207b0a2020202020202020202076617220743b0a202020204d0802202020202020766172206e3b0a202020202020202020207661722072203d205b5d3b0a20202020202020202020666f7220287661722065203d20303b2065203c203235363b20652b2b29207b0a2020202020202020202020206e203d20653b0a202020202020202020202020666f72202874203d20303b2074203c20383b20742b2b29207b0a202020202020202020202020202069662028312026206e29207b0a202020202020202020202020202020206e203d20286e203e3e3e203129205e20333938383239323338343b0a20202020202020202020202020207d20656c7365207b0a202020202020202020202020202020206e203e3e3e3d20313b0a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020202020725b655d203d206e3b0a202020202020202020207d0a2020202020202020202072657475726e20723b0a20202020202020207d2928293b0a20202020202020206f2e70726f746f747970652e617070656e64203d2066756e6374696f6e2028652c207429207b0a2020202020202020202072657475726e20653b0a20202020202020207d3b0a20202020202020206f2e70726f746f747970652e666c757368203d2066756e6374696f6e202829207b7d3b0a2020202020202020732e70726f746f74797065203d206e6577206c28293b0a2020202020202020732e70726f746f4d0802747970652e636f6e7374727563746f72203d20733b0a2020202020202020632e70726f746f74797065203d206e6577206c28293b0a2020202020202020632e70726f746f747970652e636f6e7374727563746f72203d20633b0a2020202020202020642e70726f746f74797065203d206e6577206c28293b0a2020202020202020642e70726f746f747970652e636f6e7374727563746f72203d20643b0a2020202020202020752e70726f746f747970652e67657444617461203d2066756e6374696f6e20286529207b0a202020202020202020206528746869732e64617461293b0a20202020202020207d3b0a2020202020202020702e70726f746f74797065203d206e6577207528293b0a2020202020202020702e70726f746f747970652e636f6e7374727563746f72203d20703b0a2020202020202020682e70726f746f74797065203d206e6577207528293b0a2020202020202020682e70726f746f747970652e636f6e7374727563746f72203d20683b0a2020202020202020662e70726f746f74797065203d206e6577207528293b0a2020202020202020662e70726f746f747970652e636f6e7374727563746f72203d20663b0a20202020202020207661722045203d207b0a202020202020202020206465666c617465723a205b277a2d776f726b65722e6a73272c20276465666c6174652e6a73275d2c0a2020202020202020204d080220696e666c617465723a205b277a2d776f726b65722e6a73272c2027696e666c6174652e6a73275d2c0a20202020202020207d3b0a2020202020202020652e7a6970203d207b0a202020202020202020205265616465723a206c2c0a202020202020202020205772697465723a20752c0a20202020202020202020426c6f625265616465723a20642c0a202020202020202020204461746136345552495265616465723a20632c0a20202020202020202020546578745265616465723a20732c0a20202020202020202020426c6f625772697465723a20662c0a202020202020202020204461746136345552495772697465723a20682c0a20202020202020202020546578745772697465723a20702c0a202020202020202020206372656174655265616465723a2066756e6374696f6e2028652c20742c206e29207b0a2020202020202020202020206e203d206e207c7c20493b0a202020202020202020202020652e696e69742866756e6374696f6e202829207b0a20202020202020202020202020204128652c20742c206e293b0a2020202020202020202020207d2c206e293b0a202020202020202020207d2c0a202020202020202020206372656174655772697465723a2066756e6374696f6e2028652c20742c206e2c207229207b0a2020202020202020202020206e203d206e207c7c20493b0a20202020202020202020202072203d4d0802202121723b0a202020202020202020202020652e696e69742866756e6374696f6e202829207b0a20202020202020202020202020204328652c20742c206e2c2072293b0a2020202020202020202020207d2c206e293b0a202020202020202020207d2c0a20202020202020202020757365576562576f726b6572733a20747275652c0a20202020202020202020776f726b657253637269707473506174683a206e756c6c2c0a20202020202020202020776f726b6572536372697074733a206e756c6c2c0a20202020202020207d3b0a2020202020207d29286f293b0a2020202020202866756e6374696f6e20286529207b0a202020202020202066756e6374696f6e20732829207b0a2020202020202020202066756e6374696f6e206428652c20742c20692c206f2c20612c206c2c20642c20752c20702c20682c206629207b0a20202020202020202020202076617220673b0a202020202020202020202020766172206d3b0a20202020202020202020202076617220793b0a202020202020202020202020766172206b3b0a20202020202020202020202076617220443b0a2020202020202020202020207661722053203d20303b0a2020202020202020202020207661722076203d20693b0a202020202020202020202020646f207b0a20202020202020202020202020206e5b655b74202b20535d5d2b2b3b0a20202020202020202020204d0802202020532b2b3b0a2020202020202020202020202020762d2d3b0a2020202020202020202020207d207768696c6520287620213d3d2030293b0a202020202020202020202020696620286e5b305d203d3d206929207b0a2020202020202020202020202020645b305d203d202d313b0a2020202020202020202020202020755b305d203d20303b0a202020202020202020202020202072657475726e20303b0a2020202020202020202020207d0a2020202020202020202020207661722041203d20755b305d3b0a202020202020202020202020666f72202879203d20313b2079203c3d203135202626206e5b795d203d3d3d20303b20792b2b29207b7d0a2020202020202020202020207661722078203d20793b0a2020202020202020202020206966202841203c207929207b0a202020202020202020202020202041203d20793b0a2020202020202020202020207d0a202020202020202020202020666f72202876203d2031353b207620213d3d2030202626206e5b765d203d3d3d20303b20762d2d29207b7d0a2020202020202020202020207661722062203d20763b0a2020202020202020202020206966202841203e207629207b0a202020202020202020202020202041203d20763b0a2020202020202020202020207d0a202020202020202020202020755b305d203d20413b0a202020202020202020202020666f722028766172204d080249203d2031203c3c20793b2079203c20763b20792b2b2c2049203c3c3d203129207b0a2020202020202020202020202020696620282849202d3d206e5b795d29203c203029207b0a2020202020202020202020202020202072657475726e202d333b0a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020202020696620282849202d3d206e5b765d29203c203029207b0a202020202020202020202020202072657475726e202d333b0a2020202020202020202020207d0a2020202020202020202020206e5b765d202b3d20493b0a202020202020202020202020635b315d203d2079203d20303b0a20202020202020202020202053203d20313b0a202020202020202020202020666f722028766172205f203d20323b202d2d7620213d20303b2029207b0a2020202020202020202020202020635b5f5d203d2079202b3d206e5b535d3b0a20202020202020202020202020205f2b2b3b0a2020202020202020202020202020532b2b3b0a2020202020202020202020207d0a20202020202020202020202076203d20303b0a20202020202020202020202053203d20303b0a202020202020202020202020646f207b0a2020202020202020202020202020696620282879203d20655b74202b20535d2920213d3d203029207b0a20202020202020202020202020202020665b635b795d2b2b5d204d08023d20763b0a20202020202020202020202020207d0a2020202020202020202020202020532b2b3b0a2020202020202020202020207d207768696c6520282b2b76203c2069293b0a20202020202020202020202069203d20635b625d3b0a202020202020202020202020635b305d203d2076203d20303b0a20202020202020202020202053203d20303b0a2020202020202020202020207661722077203d202d313b0a2020202020202020202020207661722045203d202d413b0a202020202020202020202020735b305d203d20303b0a2020202020202020202020207661722043203d20303b0a202020202020202020202020666f72202844203d20303b2078203c3d20623b20782b2b29207b0a2020202020202020202020202020666f72202867203d206e5b785d3b20672d2d20213d20303b2029207b0a202020202020202020202020202020207768696c65202878203e2045202b204129207b0a202020202020202020202020202020202020772b2b3b0a20202020202020202020202020202020202044203d202844203d2062202d202845202b3d20412929203e2041203f2041203a20443b0a20202020202020202020202020202020202069662028286d203d2031203c3c202879203d2078202d20452929203e2067202b203129207b0a20202020202020202020202020202020202020206d202d3d2067202b20313b0a2020202020204d080220202020202020202020202020205f203d20783b0a20202020202020202020202020202020202020206966202879203c204429207b0a202020202020202020202020202020202020202020207768696c6520282b2b79203c2044202626202128286d203c3c3d203129203c3d206e5b2b2b5f5d2929207b0a2020202020202020202020202020202020202020202020206d202d3d206e5b5f5d3b0a202020202020202020202020202020202020202020207d0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202044203d2031203c3c20793b0a20202020202020202020202020202020202069662028685b305d202b2044203e203134343029207b0a202020202020202020202020202020202020202072657475726e202d333b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020735b775d203d2043203d20685b305d3b0a202020202020202020202020202020202020685b305d202b3d20443b0a2020202020202020202020202020202020206966202877203d3d3d203029207b0a2020202020202020202020202020202020202020645b305d203d20433b0a2020202020202020202020202020202020207d20656c7365207b0a2020202020202020202020202020202020202020635b774d08025d203d20763b0a2020202020202020202020202020202020202020725b305d203d20793b0a2020202020202020202020202020202020202020725b315d203d20413b0a202020202020202020202020202020202020202079203d2076203e3e3e202845202d2041293b0a2020202020202020202020202020202020202020725b325d203d2043202d20735b77202d20315d202d20793b0a2020202020202020202020202020202020202020702e73657428722c2033202a2028735b77202d20315d202b207929293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020207d0a20202020202020202020202020202020725b315d203d2078202d20453b0a202020202020202020202020202020206966202853203e3d206929207b0a202020202020202020202020202020202020725b305d203d203139323b0a202020202020202020202020202020207d20656c73652069662028665b535d203c206f29207b0a202020202020202020202020202020202020725b305d203d20665b535d203c20323536203f2030203a2039363b0a202020202020202020202020202020202020725b325d203d20665b532b2b5d3b0a202020202020202020202020202020207d20656c7365207b0a202020202020202020202020202020202020725b305d203d206c5b665b535d202d206f5d202b203136202b2036343b0a4d0802202020202020202020202020202020202020725b325d203d20615b665b532b2b5d202d206f5d3b0a202020202020202020202020202020207d0a202020202020202020202020202020206d203d2031203c3c202878202d2045293b0a20202020202020202020202020202020666f72202879203d2076203e3e3e20453b2079203c20443b2079202b3d206d29207b0a202020202020202020202020202020202020702e73657428722c2033202a202843202b207929293b0a202020202020202020202020202020207d0a20202020202020202020202020202020666f72202879203d2031203c3c202878202d2031293b202876202620792920213d20303b2079203e3e3e3d203129207b0a20202020202020202020202020202020202076205e3d20793b0a202020202020202020202020202020207d0a2020202020202020202020202020202076205e3d20793b0a20202020202020202020202020202020666f7220286b203d202831203c3c204529202d20313b2028762026206b2920213d20635b775d3b2029207b0a202020202020202020202020202020202020772d2d3b0a2020202020202020202020202020202020206b203d202831203c3c202845202d3d20412929202d20313b0a202020202020202020202020202020207d0a20202020202020202020202020207d0a2020202020202020202020207d0a20202020202020202020204d080220696620284920213d3d2030202626206220213d203129207b0a202020202020202020202020202072657475726e202d353b0a2020202020202020202020207d20656c7365207b0a202020202020202020202020202072657475726e20303b0a2020202020202020202020207d0a202020202020202020207d0a2020202020202020202066756e6374696f6e2075286929207b0a20202020202020202020202069662028216529207b0a202020202020202020202020202065203d205b5d3b0a202020202020202020202020202074203d205b5d3b0a20202020202020202020202020206e203d206e657720496e7433324172726179283136293b0a202020202020202020202020202072203d205b5d3b0a202020202020202020202020202073203d206e657720496e7433324172726179283135293b0a202020202020202020202020202063203d206e657720496e7433324172726179283136293b0a2020202020202020202020207d0a20202020202020202020202069662028742e6c656e677468203c206929207b0a202020202020202020202020202074203d205b5d3b0a2020202020202020202020207d0a202020202020202020202020666f722028766172206f203d20303b206f203c20693b206f2b2b29207b0a2020202020202020202020202020745b6f5d203d20303b0a2020202020202020202020207d0a20202020202020204d080220202020666f7220286f203d20303b206f203c2031363b206f2b2b29207b0a20202020202020202020202020206e5b6f5d203d20303b0a2020202020202020202020207d0a202020202020202020202020666f7220286f203d20303b206f203c20333b206f2b2b29207b0a2020202020202020202020202020725b6f5d203d20303b0a2020202020202020202020207d0a202020202020202020202020732e736574286e2e737562617272617928302c203135292c2030293b0a202020202020202020202020632e736574286e2e737562617272617928302c203136292c2030293b0a202020202020202020207d0a2020202020202020202076617220653b0a2020202020202020202076617220743b0a20202020202020202020766172206e3b0a2020202020202020202076617220723b0a2020202020202020202076617220733b0a2020202020202020202076617220633b0a20202020202020202020746869732e696e666c6174655f74726565735f62697473203d2066756e6374696f6e20286e2c20722c20692c206f2c206129207b0a202020202020202020202020766172206c3b0a20202020202020202020202075283139293b0a202020202020202020202020655b305d203d20303b0a20202020202020202020202069662028286c203d2064286e2c20302c2031392c2031392c206e756c6c2c206e756c6c2c20692c20722c206f4d08022c20652c20742929203d3d202d3329207b0a2020202020202020202020202020612e6d7367203d20276f766572737562736372696265642064796e616d696320626974206c656e677468732074726565273b0a2020202020202020202020207d20656c736520696620286c203d3d202d35207c7c20725b305d203d3d3d203029207b0a2020202020202020202020202020612e6d7367203d2027696e636f6d706c6574652064796e616d696320626974206c656e677468732074726565273b0a20202020202020202020202020206c203d202d333b0a2020202020202020202020207d0a20202020202020202020202072657475726e206c3b0a202020202020202020207d3b0a20202020202020202020746869732e696e666c6174655f74726565735f64796e616d6963203d2066756e6374696f6e20286e2c20722c20732c20632c20702c20682c20662c20672c206d29207b0a20202020202020202020202076617220623b0a2020202020202020202020207528323838293b0a202020202020202020202020655b305d203d20303b0a202020202020202020202020696620282862203d206428732c20302c206e2c203235372c20692c206f2c20682c20632c20672c20652c2074292920213d2030207c7c20635b305d203d3d3d203029207b0a20202020202020202020202020206966202862203d3d202d3329207b0a20202020202020204d080220202020202020206d2e6d7367203d20276f76657273756273637269626564206c69746572616c2f6c656e6774682074726565273b0a20202020202020202020202020207d20656c736520696620286220213d202d3429207b0a202020202020202020202020202020206d2e6d7367203d2027696e636f6d706c657465206c69746572616c2f6c656e6774682074726565273b0a2020202020202020202020202020202062203d202d333b0a20202020202020202020202020207d0a202020202020202020202020202072657475726e20623b0a2020202020202020202020207d20656c7365207b0a20202020202020202020202020207528323838293b0a2020202020202020202020202020696620280a202020202020202020202020202020202862203d206428732c206e2c20722c20302c20612c206c2c20662c20702c20672c20652c2074292920213d2030207c7c0a2020202020202020202020202020202028705b305d203d3d3d2030202626206e203e20323537290a202020202020202020202020202029207b0a202020202020202020202020202020206966202862203d3d202d3329207b0a2020202020202020202020202020202020206d2e6d7367203d20276f766572737562736372696265642064697374616e63652074726565273b0a202020202020202020202020202020207d20656c7365206966202862203d3d202d354d080229207b0a2020202020202020202020202020202020206d2e6d7367203d2027696e636f6d706c6574652064697374616e63652074726565273b0a20202020202020202020202020202020202062203d202d333b0a202020202020202020202020202020207d20656c736520696620286220213d202d3429207b0a2020202020202020202020202020202020206d2e6d7367203d2027656d7074792064697374616e636520747265652077697468206c656e67746873273b0a20202020202020202020202020202020202062203d202d333b0a202020202020202020202020202020207d0a2020202020202020202020202020202072657475726e20623b0a20202020202020202020202020207d20656c7365207b0a2020202020202020202020202020202072657475726e20303b0a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020207d3b0a20202020202020207d0a202020202020202066756e6374696f6e20632829207b0a2020202020202020202066756e6374696f6e206728652c206e2c20722c20692c206f2c20612c206c2c207329207b0a20202020202020202020202076617220633b0a20202020202020202020202076617220643b0a20202020202020202020202076617220753b0a20202020202020202020202076617220703b0a20202020202020202020202076617220623b4d08020a20202020202020202020202076617220783b0a20202020202020202020202076617220413b0a202020202020202020202020766172206b3b0a20202020202020202020202076617220533b0a2020202020202020202020207661722067203d20732e6e6578745f696e5f696e6465783b0a202020202020202020202020766172206d203d20732e617661696c5f696e3b0a2020202020202020202020207661722068203d206c2e626974623b0a2020202020202020202020207661722066203d206c2e6269746b3b0a2020202020202020202020207661722077203d202862203d206c2e777269746529203c206c2e72656164203f206c2e72656164202d2062202d2031203a206c2e656e64202d20623b0a2020202020202020202020207661722076203d20745b655d3b0a2020202020202020202020207661722079203d20745b6e5d3b0a202020202020202020202020646f207b0a20202020202020202020202020207768696c65202866203c20323029207b0a202020202020202020202020202020206d2d2d3b0a2020202020202020202020202020202068207c3d2028323535202620732e726561645f6279746528672b2b2929203c3c20663b0a2020202020202020202020202020202066202b3d20383b0a20202020202020202020202020207d0a2020202020202020202020202020696620282870203d202864203d2072295b284d080253203d2033202a20282875203d206929202b202863203d2068202620762929295d29203d3d3d203029207b0a2020202020202020202020202020202068203e3e3d20645b53202b20315d3b0a2020202020202020202020202020202066202d3d20645b53202b20315d3b0a202020202020202020202020202020206c2e77696e646f775b622b2b5d203d20645b53202b20325d3b0a20202020202020202020202020202020772d2d3b0a20202020202020202020202020207d0a2020202020202020202020207d207768696c65202877203e3d20323538202626206d203e3d203130293b0a2020202020202020202020206d202b3d2078203d2066203e3e2033203c202878203d20732e617661696c5f696e202d206d29203f2066203e3e2033203a20783b0a20202020202020202020202067202d3d20783b0a20202020202020202020202066202d3d2078203c3c20333b0a2020202020202020202020206c2e62697462203d20683b0a2020202020202020202020206c2e6269746b203d20663b0a202020202020202020202020732e617661696c5f696e203d206d3b0a202020202020202020202020732e746f74616c5f696e202b3d2067202d20732e6e6578745f696e5f696e6465783b0a202020202020202020202020732e6e6578745f696e5f696e646578203d20673b0a2020202020202020202020206c2e7772697465203d20623b0a4d080220202020202020202020202072657475726e20303b0a202020202020202020207d0a2020202020202020202076617220653b0a20202020202020202020766172206e3b0a2020202020202020202076617220723b0a2020202020202020202076617220693b0a20202020202020202020766172206f203d20303b0a202020202020202020207661722061203d20303b0a20202020202020202020766172206c203d20303b0a202020202020202020207661722073203d20303b0a202020202020202020207661722063203d20303b0a202020202020202020207661722064203d20303b0a202020202020202020207661722075203d20303b0a202020202020202020207661722070203d20303b0a202020202020202020207661722068203d20303b0a202020202020202020207661722066203d20303b0a20202020202020202020746869732e696e6974203d2066756e6374696f6e2028742c206f2c20612c206c2c20732c206329207b0a20202020202020202020202065203d20303b0a20202020202020202020202075203d20743b0a20202020202020202020202070203d206f3b0a20202020202020202020202072203d20613b0a20202020202020202020202068203d206c3b0a20202020202020202020202069203d20733b0a20202020202020202020202066203d20633b0a2020202020202020202020206e203d206e756c6c3b0a204d08022020202020202020207d3b0a20202020202020202020746869732e70726f63203d2066756e6374696f6e20286d2c20622c207729207b0a20202020202020202020202076617220763b0a20202020202020202020202076617220793b0a20202020202020202020202076617220783b0a20202020202020202020202076617220413b0a202020202020202020202020766172206b3b0a20202020202020202020202076617220533b0a20202020202020202020202076617220433b0a2020202020202020202020207661722045203d20303b0a202020202020202020202020766172205f203d20303b0a2020202020202020202020207661722049203d20303b0a20202020202020202020202049203d20622e6e6578745f696e5f696e6465783b0a20202020202020202020202041203d20622e617661696c5f696e3b0a20202020202020202020202045203d206d2e626974623b0a2020202020202020202020205f203d206d2e6269746b3b0a202020202020202020202020666f72202853203d20286b203d206d2e777269746529203c206d2e72656164203f206d2e72656164202d206b202d2031203a206d2e656e64202d206b3b203b2029207b0a202020202020202020202020202073776974636820286529207b0a202020202020202020202020202020206361736520303a0a20202020202020202020202020202020202069662028534d0802203e3d203235382026262041203e3d20313029207b0a20202020202020202020202020202020202020206d2e62697462203d20453b0a20202020202020202020202020202020202020206d2e6269746b203d205f3b0a2020202020202020202020202020202020202020622e617661696c5f696e203d20413b0a2020202020202020202020202020202020202020622e746f74616c5f696e202b3d2049202d20622e6e6578745f696e5f696e6465783b0a2020202020202020202020202020202020202020622e6e6578745f696e5f696e646578203d20493b0a20202020202020202020202020202020202020206d2e7772697465203d206b3b0a202020202020202020202020202020202020202077203d206728752c20702c20722c20682c20692c20662c206d2c2062293b0a202020202020202020202020202020202020202049203d20622e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020202041203d20622e617661696c5f696e3b0a202020202020202020202020202020202020202045203d206d2e626974623b0a20202020202020202020202020202020202020205f203d206d2e6269746b3b0a202020202020202020202020202020202020202053203d20286b203d206d2e777269746529203c206d2e72656164203f206d2e72656164202d206b202d2031203a206d2e656e64202d206b3b0a4d08022020202020202020202020202020202020202020696620287720213d203029207b0a2020202020202020202020202020202020202020202065203d2077203d3d2031203f2037203a20393b0a20202020202020202020202020202020202020202020627265616b3b0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206c203d20753b0a2020202020202020202020202020202020206e203d20723b0a20202020202020202020202020202020202061203d20683b0a20202020202020202020202020202020202065203d20313b0a202020202020202020202020202020206361736520313a0a202020202020202020202020202020202020666f72202876203d206c3b205f203c20763b2029207b0a20202020202020202020202020202020202020206966202841203d3d3d203029207b0a202020202020202020202020202020202020202020206d2e62697462203d20453b0a202020202020202020202020202020202020202020206d2e6269746b203d205f3b0a20202020202020202020202020202020202020202020622e617661696c5f696e203d20413b0a20202020202020202020202020202020202020202020622e746f74616c5f696e202b3d2049202d20622e6e6578745f696e5f696e6465783b0a202020202020202020204d0802202020202020202020202020622e6e6578745f696e5f696e646578203d20493b0a202020202020202020202020202020202020202020206d2e7772697465203d206b3b0a2020202020202020202020202020202020202020202072657475726e206d2e696e666c6174655f666c75736828622c2077293b0a20202020202020202020202020202020202020207d0a202020202020202020202020202020202020202077203d20303b0a2020202020202020202020202020202020202020412d2d3b0a202020202020202020202020202020202020202045207c3d2028323535202620622e726561645f6279746528492b2b2929203c3c205f3b0a20202020202020202020202020202020202020205f202b3d20383b0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202045203e3e3e3d206e5b2879203d2033202a202861202b202845202620745b765d292929202b20315d3b0a2020202020202020202020202020202020205f202d3d206e5b79202b20315d3b0a202020202020202020202020202020202020696620282878203d206e5b795d29203d3d3d203029207b0a202020202020202020202020202020202020202073203d206e5b79202b20325d3b0a202020202020202020202020202020202020202065203d20363b0a2020202020202020202020202020202020202020627265616b3b4d08020a2020202020202020202020202020202020207d0a20202020202020202020202020202020202069662028283136202620782920213d203029207b0a202020202020202020202020202020202020202063203d203135202620783b0a20202020202020202020202020202020202020206f203d206e5b79202b20325d3b0a202020202020202020202020202020202020202065203d20323b0a2020202020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020696620282836342026207829203d3d203029207b0a20202020202020202020202020202020202020206c203d20783b0a202020202020202020202020202020202020202061203d2079202f2033202b206e5b79202b20325d3b0a2020202020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202069662028283332202620782920213d203029207b0a202020202020202020202020202020202020202065203d20373b0a2020202020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202065203d20393b0a202020202020202020202020202020202020622e6d7367203d20274d0802696e76616c6964206c69746572616c2f6c656e67746820636f6465273b0a20202020202020202020202020202020202077203d202d333b0a2020202020202020202020202020202020206d2e62697462203d20453b0a2020202020202020202020202020202020206d2e6269746b203d205f3b0a202020202020202020202020202020202020622e617661696c5f696e203d20413b0a202020202020202020202020202020202020622e746f74616c5f696e202b3d2049202d20622e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020622e6e6578745f696e5f696e646578203d20493b0a2020202020202020202020202020202020206d2e7772697465203d206b3b0a20202020202020202020202020202020202072657475726e206d2e696e666c6174655f666c75736828622c2077293b0a202020202020202020202020202020206361736520323a0a202020202020202020202020202020202020666f72202876203d20633b205f203c20763b2029207b0a20202020202020202020202020202020202020206966202841203d3d3d203029207b0a202020202020202020202020202020202020202020206d2e62697462203d20453b0a202020202020202020202020202020202020202020206d2e6269746b203d205f3b0a20202020202020202020202020202020202020202020622e617661696c5f694d08026e203d20413b0a20202020202020202020202020202020202020202020622e746f74616c5f696e202b3d2049202d20622e6e6578745f696e5f696e6465783b0a20202020202020202020202020202020202020202020622e6e6578745f696e5f696e646578203d20493b0a202020202020202020202020202020202020202020206d2e7772697465203d206b3b0a2020202020202020202020202020202020202020202072657475726e206d2e696e666c6174655f666c75736828622c2077293b0a20202020202020202020202020202020202020207d0a202020202020202020202020202020202020202077203d20303b0a2020202020202020202020202020202020202020412d2d3b0a202020202020202020202020202020202020202045207c3d2028323535202620622e726561645f6279746528492b2b2929203c3c205f3b0a20202020202020202020202020202020202020205f202b3d20383b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206f202b3d2045202620745b765d3b0a20202020202020202020202020202020202045203e3e3d20763b0a2020202020202020202020202020202020205f202d3d20763b0a2020202020202020202020202020202020206c203d20703b0a2020202020202020202020202020202020206e203d20693b0a2020202020202020202020204d080220202020202061203d20663b0a20202020202020202020202020202020202065203d20333b0a202020202020202020202020202020206361736520333a0a202020202020202020202020202020202020666f72202876203d206c3b205f203c20763b2029207b0a20202020202020202020202020202020202020206966202841203d3d3d203029207b0a202020202020202020202020202020202020202020206d2e62697462203d20453b0a202020202020202020202020202020202020202020206d2e6269746b203d205f3b0a20202020202020202020202020202020202020202020622e617661696c5f696e203d20413b0a20202020202020202020202020202020202020202020622e746f74616c5f696e202b3d2049202d20622e6e6578745f696e5f696e6465783b0a20202020202020202020202020202020202020202020622e6e6578745f696e5f696e646578203d20493b0a202020202020202020202020202020202020202020206d2e7772697465203d206b3b0a2020202020202020202020202020202020202020202072657475726e206d2e696e666c6174655f666c75736828622c2077293b0a20202020202020202020202020202020202020207d0a202020202020202020202020202020202020202077203d20303b0a2020202020202020202020202020202020202020412d2d3b0a2020202020202020202020202020204d0802202020202045207c3d2028323535202620622e726561645f6279746528492b2b2929203c3c205f3b0a20202020202020202020202020202020202020205f202b3d20383b0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202045203e3e3d206e5b2879203d2033202a202861202b202845202620745b765d292929202b20315d3b0a2020202020202020202020202020202020205f202d3d206e5b79202b20315d3b0a202020202020202020202020202020202020696620282831362026202878203d206e5b795d292920213d203029207b0a202020202020202020202020202020202020202063203d203135202620783b0a202020202020202020202020202020202020202064203d206e5b79202b20325d3b0a202020202020202020202020202020202020202065203d20343b0a2020202020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020696620282836342026207829203d3d203029207b0a20202020202020202020202020202020202020206c203d20783b0a202020202020202020202020202020202020202061203d2079202f2033202b206e5b79202b20325d3b0a2020202020202020202020202020202020202020627265616b3b0a202020202020202020202020202020204d080220207d0a20202020202020202020202020202020202065203d20393b0a202020202020202020202020202020202020622e6d7367203d2027696e76616c69642064697374616e636520636f6465273b0a20202020202020202020202020202020202077203d202d333b0a2020202020202020202020202020202020206d2e62697462203d20453b0a2020202020202020202020202020202020206d2e6269746b203d205f3b0a202020202020202020202020202020202020622e617661696c5f696e203d20413b0a202020202020202020202020202020202020622e746f74616c5f696e202b3d2049202d20622e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020622e6e6578745f696e5f696e646578203d20493b0a2020202020202020202020202020202020206d2e7772697465203d206b3b0a20202020202020202020202020202020202072657475726e206d2e696e666c6174655f666c75736828622c2077293b0a202020202020202020202020202020206361736520343a0a202020202020202020202020202020202020666f72202876203d20633b205f203c20763b2029207b0a20202020202020202020202020202020202020206966202841203d3d3d203029207b0a202020202020202020202020202020202020202020206d2e62697462203d20453b0a2020202020202020202020202020204d0802202020202020206d2e6269746b203d205f3b0a20202020202020202020202020202020202020202020622e617661696c5f696e203d20413b0a20202020202020202020202020202020202020202020622e746f74616c5f696e202b3d2049202d20622e6e6578745f696e5f696e6465783b0a20202020202020202020202020202020202020202020622e6e6578745f696e5f696e646578203d20493b0a202020202020202020202020202020202020202020206d2e7772697465203d206b3b0a2020202020202020202020202020202020202020202072657475726e206d2e696e666c6174655f666c75736828622c2077293b0a20202020202020202020202020202020202020207d0a202020202020202020202020202020202020202077203d20303b0a2020202020202020202020202020202020202020412d2d3b0a202020202020202020202020202020202020202045207c3d2028323535202620622e726561645f6279746528492b2b2929203c3c205f3b0a20202020202020202020202020202020202020205f202b3d20383b0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202064202b3d2045202620745b765d3b0a20202020202020202020202020202020202045203e3e3d20763b0a2020202020202020202020202020202020205f202d3d20763b0a2020202020202020202020204d080220202020202065203d20353b0a202020202020202020202020202020206361736520353a0a202020202020202020202020202020202020666f72202843203d206b202d20643b2043203c20303b2029207b0a202020202020202020202020202020202020202043202b3d206d2e656e643b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020207768696c6520286f20213d3d203029207b0a20202020202020202020202020202020202020206966202853203d3d3d203029207b0a20202020202020202020202020202020202020202020696620286b203d3d206d2e656e64202626206d2e7265616420213d3d203029207b0a20202020202020202020202020202020202020202020202053203d20286b203d203029203c206d2e72656164203f206d2e72656164202d206b202d2031203a206d2e656e64202d206b3b0a202020202020202020202020202020202020202020207d0a202020202020202020202020202020202020202020206966202853203d3d3d203029207b0a2020202020202020202020202020202020202020202020206d2e7772697465203d206b3b0a20202020202020202020202020202020202020202020202077203d206d2e696e666c6174655f666c75736828622c2077293b0a20202020202020202020202020202020202020202020202053203d20286b203d206d2e4d0802777269746529203c206d2e72656164203f206d2e72656164202d206b202d2031203a206d2e656e64202d206b3b0a202020202020202020202020202020202020202020202020696620286b203d3d206d2e656e64202626206d2e7265616420213d3d203029207b0a202020202020202020202020202020202020202020202020202053203d20286b203d203029203c206d2e72656164203f206d2e72656164202d206b202d2031203a206d2e656e64202d206b3b0a2020202020202020202020202020202020202020202020207d0a2020202020202020202020202020202020202020202020206966202853203d3d3d203029207b0a20202020202020202020202020202020202020202020202020206d2e62697462203d20453b0a20202020202020202020202020202020202020202020202020206d2e6269746b203d205f3b0a2020202020202020202020202020202020202020202020202020622e617661696c5f696e203d20413b0a2020202020202020202020202020202020202020202020202020622e746f74616c5f696e202b3d2049202d20622e6e6578745f696e5f696e6465783b0a2020202020202020202020202020202020202020202020202020622e6e6578745f696e5f696e646578203d20493b0a20202020202020202020202020202020202020202020202020206d2e7772697465203d206b3b0a2020202020202020204d0802202020202020202020202020202020202072657475726e206d2e696e666c6174655f666c75736828622c2077293b0a2020202020202020202020202020202020202020202020207d0a202020202020202020202020202020202020202020207d0a20202020202020202020202020202020202020207d0a20202020202020202020202020202020202020206d2e77696e646f775b6b2b2b5d203d206d2e77696e646f775b432b2b5d3b0a2020202020202020202020202020202020202020532d2d3b0a20202020202020202020202020202020202020206966202843203d3d206d2e656e6429207b0a2020202020202020202020202020202020202020202043203d20303b0a20202020202020202020202020202020202020207d0a20202020202020202020202020202020202020206f2d2d3b0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202065203d20303b0a202020202020202020202020202020202020627265616b3b0a202020202020202020202020202020206361736520363a0a2020202020202020202020202020202020206966202853203d3d3d203029207b0a2020202020202020202020202020202020202020696620286b203d3d206d2e656e64202626206d2e7265616420213d3d203029207b0a2020202020202020202020202020202020202020202053203d20286b203d4d0802203029203c206d2e72656164203f206d2e72656164202d206b202d2031203a206d2e656e64202d206b3b0a20202020202020202020202020202020202020207d0a20202020202020202020202020202020202020206966202853203d3d3d203029207b0a202020202020202020202020202020202020202020206d2e7772697465203d206b3b0a2020202020202020202020202020202020202020202077203d206d2e696e666c6174655f666c75736828622c2077293b0a2020202020202020202020202020202020202020202053203d20286b203d206d2e777269746529203c206d2e72656164203f206d2e72656164202d206b202d2031203a206d2e656e64202d206b3b0a20202020202020202020202020202020202020202020696620286b203d3d206d2e656e64202626206d2e7265616420213d3d203029207b0a20202020202020202020202020202020202020202020202053203d20286b203d203029203c206d2e72656164203f206d2e72656164202d206b202d2031203a206d2e656e64202d206b3b0a202020202020202020202020202020202020202020207d0a202020202020202020202020202020202020202020206966202853203d3d3d203029207b0a2020202020202020202020202020202020202020202020206d2e62697462203d20453b0a2020202020202020202020202020202020202020202020206d2e6269744d08026b203d205f3b0a202020202020202020202020202020202020202020202020622e617661696c5f696e203d20413b0a202020202020202020202020202020202020202020202020622e746f74616c5f696e202b3d2049202d20622e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020202020202020622e6e6578745f696e5f696e646578203d20493b0a2020202020202020202020202020202020202020202020206d2e7772697465203d206b3b0a20202020202020202020202020202020202020202020202072657475726e206d2e696e666c6174655f666c75736828622c2077293b0a202020202020202020202020202020202020202020207d0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202077203d20303b0a2020202020202020202020202020202020206d2e77696e646f775b6b2b2b5d203d20733b0a202020202020202020202020202020202020532d2d3b0a20202020202020202020202020202020202065203d20303b0a202020202020202020202020202020202020627265616b3b0a202020202020202020202020202020206361736520373a0a202020202020202020202020202020202020696620285f203e203729207b0a20202020202020202020202020202020202020205f204d08022d3d20383b0a2020202020202020202020202020202020202020412b2b3b0a2020202020202020202020202020202020202020492d2d3b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206d2e7772697465203d206b3b0a20202020202020202020202020202020202077203d206d2e696e666c6174655f666c75736828622c2077293b0a20202020202020202020202020202020202053203d20286b203d206d2e777269746529203c206d2e72656164203f206d2e72656164202d206b202d2031203a206d2e656e64202d206b3b0a202020202020202020202020202020202020696620286d2e7265616420213d206d2e777269746529207b0a20202020202020202020202020202020202020206d2e62697462203d20453b0a20202020202020202020202020202020202020206d2e6269746b203d205f3b0a2020202020202020202020202020202020202020622e617661696c5f696e203d20413b0a2020202020202020202020202020202020202020622e746f74616c5f696e202b3d2049202d20622e6e6578745f696e5f696e6465783b0a2020202020202020202020202020202020202020622e6e6578745f696e5f696e646578203d20493b0a20202020202020202020202020202020202020206d2e7772697465203d206b3b0a2020202020202020202020202020202020202020724d0802657475726e206d2e696e666c6174655f666c75736828622c2077293b0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202065203d20383b0a202020202020202020202020202020206361736520383a0a20202020202020202020202020202020202077203d20313b0a2020202020202020202020202020202020206d2e62697462203d20453b0a2020202020202020202020202020202020206d2e6269746b203d205f3b0a202020202020202020202020202020202020622e617661696c5f696e203d20413b0a202020202020202020202020202020202020622e746f74616c5f696e202b3d2049202d20622e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020622e6e6578745f696e5f696e646578203d20493b0a2020202020202020202020202020202020206d2e7772697465203d206b3b0a20202020202020202020202020202020202072657475726e206d2e696e666c6174655f666c75736828622c2077293b0a202020202020202020202020202020206361736520393a0a20202020202020202020202020202020202077203d202d333b0a2020202020202020202020202020202020206d2e62697462203d20453b0a2020202020202020202020202020202020206d2e6269746b203d205f3b0a202020202020202020202020202020202020622e61764d080261696c5f696e203d20413b0a202020202020202020202020202020202020622e746f74616c5f696e202b3d2049202d20622e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020622e6e6578745f696e5f696e646578203d20493b0a2020202020202020202020202020202020206d2e7772697465203d206b3b0a20202020202020202020202020202020202072657475726e206d2e696e666c6174655f666c75736828622c2077293b0a2020202020202020202020202020202064656661756c743a0a20202020202020202020202020202020202077203d202d323b0a2020202020202020202020202020202020206d2e62697462203d20453b0a2020202020202020202020202020202020206d2e6269746b203d205f3b0a202020202020202020202020202020202020622e617661696c5f696e203d20413b0a202020202020202020202020202020202020622e746f74616c5f696e202b3d2049202d20622e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020622e6e6578745f696e5f696e646578203d20493b0a2020202020202020202020202020202020206d2e7772697465203d206b3b0a20202020202020202020202020202020202072657475726e206d2e696e666c6174655f666c75736828622c2077293b0a20202020202020202020202020207d0a20202020204d0802202020202020207d0a202020202020202020207d3b0a20202020202020202020746869732e66726565203d2066756e6374696f6e202829207b7d3b0a20202020202020207d0a202020202020202066756e6374696f6e207528652c206e29207b0a2020202020202020202076617220723b0a202020202020202020207661722069203d20746869733b0a20202020202020202020766172206f203d20303b0a202020202020202020207661722061203d20303b0a20202020202020202020766172206c203d20303b0a202020202020202020207661722075203d20303b0a202020202020202020207661722070203d205b305d3b0a202020202020202020207661722068203d205b305d3b0a202020202020202020207661722066203d206e6577206328293b0a202020202020202020207661722067203d20303b0a20202020202020202020766172206d203d206e657720496e74333241727261792834333230293b0a202020202020202020207661722062203d206e6577207328293b0a20202020202020202020692e6269746b203d20303b0a20202020202020202020692e62697462203d20303b0a20202020202020202020692e77696e646f77203d206e65772055696e74384172726179286e293b0a20202020202020202020692e656e64203d206e3b0a20202020202020202020692e72656164203d20303b0a202020202020202020204d0802692e7772697465203d20303b0a20202020202020202020692e7265736574203d2066756e6374696f6e2028652c207429207b0a202020202020202020202020696620287429207b0a2020202020202020202020202020745b305d203d20303b0a2020202020202020202020207d0a202020202020202020202020696620286f203d3d203629207b0a2020202020202020202020202020662e667265652865293b0a2020202020202020202020207d0a2020202020202020202020206f203d20303b0a202020202020202020202020692e6269746b203d20303b0a202020202020202020202020692e62697462203d20303b0a202020202020202020202020692e72656164203d20692e7772697465203d20303b0a202020202020202020207d3b0a20202020202020202020692e726573657428652c206e756c6c293b0a20202020202020202020692e696e666c6174655f666c757368203d2066756e6374696f6e2028652c207429207b0a202020202020202020202020766172206e3b0a202020202020202020202020766172206f3b0a2020202020202020202020207661722072203d20652e6e6578745f6f75745f696e6465783b0a202020202020202020202020696620280a2020202020202020202020202020286e203d2028286f203d20692e7265616429203c3d20692e7772697465203f20692e7772697465203a20692e656e6429202d4d0802206f29203e0a2020202020202020202020202020652e617661696c5f6f75740a20202020202020202020202029207b0a20202020202020202020202020206e203d20652e617661696c5f6f75743b0a2020202020202020202020207d0a202020202020202020202020696620286e20213d3d20302026262074203d3d202d3529207b0a202020202020202020202020202074203d20303b0a2020202020202020202020207d0a202020202020202020202020652e617661696c5f6f7574202d3d206e3b0a202020202020202020202020652e746f74616c5f6f7574202b3d206e3b0a202020202020202020202020652e6e6578745f6f75742e73657428692e77696e646f772e7375626172726179286f2c206f202b206e292c2072293b0a20202020202020202020202072202b3d206e3b0a20202020202020202020202069662028286f202b3d206e29203d3d20692e656e6429207b0a20202020202020202020202020206f203d20303b0a202020202020202020202020202069662028692e7772697465203d3d20692e656e6429207b0a20202020202020202020202020202020692e7772697465203d20303b0a20202020202020202020202020207d0a202020202020202020202020202069662028286e203d20692e7772697465202d206f29203e20652e617661696c5f6f757429207b0a202020202020202020202020202020206e203d204d0802652e617661696c5f6f75743b0a20202020202020202020202020207d0a2020202020202020202020202020696620286e20213d3d20302026262074203d3d202d3529207b0a2020202020202020202020202020202074203d20303b0a20202020202020202020202020207d0a2020202020202020202020202020652e617661696c5f6f7574202d3d206e3b0a2020202020202020202020202020652e746f74616c5f6f7574202b3d206e3b0a2020202020202020202020202020652e6e6578745f6f75742e73657428692e77696e646f772e7375626172726179286f2c206f202b206e292c2072293b0a202020202020202020202020202072202b3d206e3b0a20202020202020202020202020206f202b3d206e3b0a2020202020202020202020207d0a202020202020202020202020652e6e6578745f6f75745f696e646578203d20723b0a202020202020202020202020692e72656164203d206f3b0a20202020202020202020202072657475726e20743b0a202020202020202020207d3b0a20202020202020202020692e70726f63203d2066756e6374696f6e2028652c206e29207b0a20202020202020202020202076617220633b0a20202020202020202020202076617220773b0a20202020202020202020202076617220763b0a20202020202020202020202076617220793b0a20202020202020202020202076617220783b0a2020204d080220202020202020202076617220413b0a202020202020202020202020766172206b3b0a20202020202020202020202076617220533b0a20202020202020202020202079203d20652e6e6578745f696e5f696e6465783b0a20202020202020202020202078203d20652e617661696c5f696e3b0a20202020202020202020202077203d20692e626974623b0a20202020202020202020202076203d20692e6269746b3b0a202020202020202020202020666f7220286b203d202841203d20692e777269746529203c20692e72656164203f20692e72656164202d2041202d2031203a20692e656e64202d20413b203b2029207b0a202020202020202020202020202073776974636820286f29207b0a202020202020202020202020202020206361736520303a0a2020202020202020202020202020202020207768696c65202876203c203329207b0a20202020202020202020202020202020202020206966202878203d3d3d203029207b0a20202020202020202020202020202020202020202020692e62697462203d20773b0a20202020202020202020202020202020202020202020692e6269746b203d20763b0a20202020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a20202020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f694d08026e6465783b0a20202020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a20202020202020202020202020202020202020202020692e7772697465203d20413b0a2020202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a20202020202020202020202020202020202020207d0a20202020202020202020202020202020202020206e203d20303b0a2020202020202020202020202020202020202020782d2d3b0a202020202020202020202020202020202020202077207c3d2028323535202620652e726561645f6279746528792b2b2929203c3c20763b0a202020202020202020202020202020202020202076202b3d20383b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020207377697463682028282867203d20312026202863203d20372026207729292c2063203e3e3e20312929207b0a20202020202020202020202020202020202020206361736520303a0a2020202020202020202020202020202020202020202077203e3e3e3d20333b0a2020202020202020202020202020202020202020202077203e3e3e3d2063203d20372026202876202d3d2033293b0a2020202020202020202020202020202020202020202076202d3d20633b0a202020202020204d08022020202020202020202020202020206f203d20313b0a20202020202020202020202020202020202020202020627265616b3b0a20202020202020202020202020202020202020206361736520313a0a202020202020202020202020202020202020202020207661722043203d205b5d3b0a202020202020202020202020202020202020202020207661722045203d205b5d3b0a20202020202020202020202020202020202020202020766172205f203d205b5b5d5d3b0a202020202020202020202020202020202020202020207661722049203d205b5b5d5d3b0a20202020202020202020202020202020202020202020732e696e666c6174655f74726565735f666978656428432c20452c205f2c2049293b0a20202020202020202020202020202020202020202020662e696e697428435b305d2c20455b305d2c205f5b305d2c20302c20495b305d2c2030293b0a2020202020202020202020202020202020202020202077203e3e3e3d20333b0a2020202020202020202020202020202020202020202076202d3d20333b0a202020202020202020202020202020202020202020206f203d20363b0a20202020202020202020202020202020202020202020627265616b3b0a20202020202020202020202020202020202020206361736520323a0a2020202020202020202020202020202020202020202077203e3e3e3d20333b0a202020204d080220202020202020202020202020202020202076202d3d20333b0a202020202020202020202020202020202020202020206f203d20333b0a20202020202020202020202020202020202020202020627265616b3b0a20202020202020202020202020202020202020206361736520333a0a2020202020202020202020202020202020202020202077203e3e3e3d20333b0a2020202020202020202020202020202020202020202076202d3d20333b0a202020202020202020202020202020202020202020206f203d20393b0a20202020202020202020202020202020202020202020652e6d7367203d2027696e76616c696420626c6f636b2074797065273b0a202020202020202020202020202020202020202020206e203d202d333b0a20202020202020202020202020202020202020202020692e62697462203d20773b0a20202020202020202020202020202020202020202020692e6269746b203d20763b0a20202020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a20202020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a20202020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a20202020202020202020202020202020202020202020692e77726974654d0802203d20413b0a2020202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020627265616b3b0a202020202020202020202020202020206361736520313a0a2020202020202020202020202020202020207768696c65202876203c20333229207b0a20202020202020202020202020202020202020206966202878203d3d3d203029207b0a20202020202020202020202020202020202020202020692e62697462203d20773b0a20202020202020202020202020202020202020202020692e6269746b203d20763b0a20202020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a20202020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a20202020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a20202020202020202020202020202020202020202020692e7772697465203d20413b0a2020202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a20202020202020202020202020202020202020207d0a20202020202020204d08022020202020202020202020206e203d20303b0a2020202020202020202020202020202020202020782d2d3b0a202020202020202020202020202020202020202077207c3d2028323535202620652e726561645f6279746528792b2b2929203c3c20763b0a202020202020202020202020202020202020202076202b3d20383b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206966202828287e77203e3e3e2031362920262036353533352920213d20283635353335202620772929207b0a20202020202020202020202020202020202020206f203d20393b0a2020202020202020202020202020202020202020652e6d7367203d2027696e76616c69642073746f72656420626c6f636b206c656e67746873273b0a20202020202020202020202020202020202020206e203d202d333b0a2020202020202020202020202020202020202020692e62697462203d20773b0a2020202020202020202020202020202020202020692e6269746b203d20763b0a2020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a2020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a2020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b4d08020a2020202020202020202020202020202020202020692e7772697465203d20413b0a202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202061203d203635353335202620773b0a20202020202020202020202020202020202077203d2076203d20303b0a2020202020202020202020202020202020206f203d206120213d3d2030203f2032203a206720213d3d2030203f2037203a20303b0a202020202020202020202020202020202020627265616b3b0a202020202020202020202020202020206361736520323a0a2020202020202020202020202020202020206966202878203d3d3d203029207b0a2020202020202020202020202020202020202020692e62697462203d20773b0a2020202020202020202020202020202020202020692e6269746b203d20763b0a2020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a2020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a2020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a2020202020202020202020202020202020202020692e774d080272697465203d20413b0a202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020696620286b203d3d3d203029207b0a20202020202020202020202020202020202020206966202841203d3d20692e656e6420262620692e7265616420213d3d203029207b0a202020202020202020202020202020202020202020206b203d202841203d203029203c20692e72656164203f20692e72656164202d2041202d2031203a20692e656e64202d20413b0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020202020696620286b203d3d3d203029207b0a20202020202020202020202020202020202020202020692e7772697465203d20413b0a202020202020202020202020202020202020202020206e203d20692e696e666c6174655f666c75736828652c206e293b0a202020202020202020202020202020202020202020206b203d202841203d20692e777269746529203c20692e72656164203f20692e72656164202d2041202d2031203a20692e656e64202d20413b0a202020202020202020202020202020202020202020206966202841203d3d20692e656e6420262620692e7265616420213d3d203029207b0a202020204d080220202020202020202020202020202020202020206b203d202841203d203029203c20692e72656164203f20692e72656164202d2041202d2031203a20692e656e64202d20413b0a202020202020202020202020202020202020202020207d0a20202020202020202020202020202020202020202020696620286b203d3d3d203029207b0a202020202020202020202020202020202020202020202020692e62697462203d20773b0a202020202020202020202020202020202020202020202020692e6269746b203d20763b0a202020202020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a202020202020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a202020202020202020202020202020202020202020202020692e7772697465203d20413b0a20202020202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a202020202020202020202020202020202020202020207d0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020207d0a2020202020202020202020202020204d08022020206e203d20303b0a202020202020202020202020202020202020696620282863203d206129203e207829207b0a202020202020202020202020202020202020202063203d20783b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206966202863203e206b29207b0a202020202020202020202020202020202020202063203d206b3b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020692e77696e646f772e73657428652e726561645f62756628792c2063292c2041293b0a20202020202020202020202020202020202079202b3d20633b0a20202020202020202020202020202020202078202d3d20633b0a20202020202020202020202020202020202041202b3d20633b0a2020202020202020202020202020202020206b202d3d20633b0a202020202020202020202020202020202020696620282861202d3d20632920213d203029207b0a2020202020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206f203d206720213d3d2030203f2037203a20303b0a202020202020202020202020202020202020627265616b3b0a202020202020202020202020202020206361736520333a0a20202020202020202020202020202020204d0802207768696c65202876203c20313429207b0a20202020202020202020202020202020202020206966202878203d3d3d203029207b0a20202020202020202020202020202020202020202020692e62697462203d20773b0a20202020202020202020202020202020202020202020692e6269746b203d20763b0a20202020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a20202020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a20202020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a20202020202020202020202020202020202020202020692e7772697465203d20413b0a2020202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a20202020202020202020202020202020202020207d0a20202020202020202020202020202020202020206e203d20303b0a2020202020202020202020202020202020202020782d2d3b0a202020202020202020202020202020202020202077207c3d2028323535202620652e726561645f6279746528792b2b2929203c3c20763b0a202020202020202020202020202020202020202076202b3d20383b0a202020202020202020202020202020204d080220207d0a2020202020202020202020202020202020206c203d2063203d203136333833202620773b0a202020202020202020202020202020202020696620282833312026206329203e203239207c7c20282863203e3e203529202620333129203e20323929207b0a20202020202020202020202020202020202020206f203d20393b0a2020202020202020202020202020202020202020652e6d7367203d2027746f6f206d616e79206c656e677468206f722064697374616e63652073796d626f6c73273b0a20202020202020202020202020202020202020206e203d202d333b0a2020202020202020202020202020202020202020692e62697462203d20773b0a2020202020202020202020202020202020202020692e6269746b203d20763b0a2020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a2020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a2020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a2020202020202020202020202020202020202020692e7772697465203d20413b0a202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a2020202020202020202020202020204d08022020207d0a20202020202020202020202020202020202063203d20323538202b202833312026206329202b20282863203e3e2035292026203331293b0a202020202020202020202020202020202020696620282172207c7c20722e6c656e677468203c206329207b0a202020202020202020202020202020202020202072203d205b5d3b0a2020202020202020202020202020202020207d20656c7365207b0a2020202020202020202020202020202020202020666f72202853203d20303b2053203c20633b20532b2b29207b0a20202020202020202020202020202020202020202020725b535d203d20303b0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202077203e3e3e3d2031343b0a20202020202020202020202020202020202076202d3d2031343b0a20202020202020202020202020202020202075203d20303b0a2020202020202020202020202020202020206f203d20343b0a202020202020202020202020202020206361736520343a0a2020202020202020202020202020202020207768696c65202875203c2034202b20286c203e3e3e2031302929207b0a20202020202020202020202020202020202020207768696c65202876203c203329207b0a2020202020202020202020202020202020202020202069662028784d0802203d3d3d203029207b0a202020202020202020202020202020202020202020202020692e62697462203d20773b0a202020202020202020202020202020202020202020202020692e6269746b203d20763b0a202020202020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a202020202020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a202020202020202020202020202020202020202020202020692e7772697465203d20413b0a20202020202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a202020202020202020202020202020202020202020207d0a202020202020202020202020202020202020202020206e203d20303b0a20202020202020202020202020202020202020202020782d2d3b0a2020202020202020202020202020202020202020202077207c3d2028323535202620652e726561645f6279746528792b2b2929203c3c20763b0a2020202020202020202020202020202020202020202076202b3d20383b0a20202020202020202020202020202020202020207d0a202020202020202020202020204d080220202020202020725b645b752b2b5d5d203d2037202620773b0a202020202020202020202020202020202020202077203e3e3e3d20333b0a202020202020202020202020202020202020202076202d3d20333b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020207768696c65202875203c20313929207b0a2020202020202020202020202020202020202020725b645b752b2b5d5d203d20303b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020705b305d203d20373b0a202020202020202020202020202020202020696620282863203d20622e696e666c6174655f74726565735f6269747328722c20702c20682c206d2c2065292920213d203029207b0a202020202020202020202020202020202020202069662028286e203d206329203d3d202d3329207b0a2020202020202020202020202020202020202020202072203d206e756c6c3b0a202020202020202020202020202020202020202020206f203d20393b0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020202020692e62697462203d20773b0a2020202020202020202020202020202020202020692e6269746b203d20763b0a2020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a20204d0802202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a2020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a2020202020202020202020202020202020202020692e7772697465203d20413b0a202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202075203d20303b0a2020202020202020202020202020202020206f203d20353b0a202020202020202020202020202020206361736520353a0a2020202020202020202020202020202020207768696c652028212875203e3d20323538202b202833312026202863203d206c2929202b20282863203e3e2035292026203331292929207b0a202020202020202020202020202020202020202076617220443b0a202020202020202020202020202020202020202076617220423b0a2020202020202020202020202020202020202020666f72202863203d20705b305d3b2076203c20633b2029207b0a202020202020202020202020202020202020202020206966202878203d3d3d203029207b0a202020202020202020202020202020202020202020202020692e62697462203d20773b0a204d08022020202020202020202020202020202020202020202020692e6269746b203d20763b0a202020202020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a202020202020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a202020202020202020202020202020202020202020202020692e7772697465203d20413b0a20202020202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a202020202020202020202020202020202020202020207d0a202020202020202020202020202020202020202020206e203d20303b0a20202020202020202020202020202020202020202020782d2d3b0a2020202020202020202020202020202020202020202077207c3d2028323535202620652e726561645f6279746528792b2b2929203c3c20763b0a2020202020202020202020202020202020202020202076202b3d20383b0a20202020202020202020202020202020202020207d0a202020202020202020202020202020202020202063203d206d5b33202a2028685b305d202b202877202620745b635d2929202b20315d3b0a202020204d080220202020202020202020202020202020696620282842203d206d5b33202a2028685b305d202b202877202620745b635d2929202b20325d29203c20313629207b0a2020202020202020202020202020202020202020202077203e3e3e3d20633b0a2020202020202020202020202020202020202020202076202d3d20633b0a20202020202020202020202020202020202020202020725b752b2b5d203d20423b0a20202020202020202020202020202020202020207d20656c7365207b0a2020202020202020202020202020202020202020202053203d2042203d3d203138203f2037203a2042202d2031343b0a20202020202020202020202020202020202020202020666f72202844203d2042203d3d203138203f203131203a20333b2076203c2063202b20533b2029207b0a2020202020202020202020202020202020202020202020206966202878203d3d3d203029207b0a2020202020202020202020202020202020202020202020202020692e62697462203d20773b0a2020202020202020202020202020202020202020202020202020692e6269746b203d20763b0a2020202020202020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a2020202020202020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a4d08022020202020202020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a2020202020202020202020202020202020202020202020202020692e7772697465203d20413b0a202020202020202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a2020202020202020202020202020202020202020202020207d0a2020202020202020202020202020202020202020202020206e203d20303b0a202020202020202020202020202020202020202020202020782d2d3b0a20202020202020202020202020202020202020202020202077207c3d2028323535202620652e726561645f6279746528792b2b2929203c3c20763b0a20202020202020202020202020202020202020202020202076202b3d20383b0a202020202020202020202020202020202020202020207d0a2020202020202020202020202020202020202020202076202d3d20633b0a2020202020202020202020202020202020202020202044202b3d202877203e3e3e3d206329202620745b535d3b0a2020202020202020202020202020202020202020202077203e3e3e3d20533b0a2020202020202020202020202020202020202020202076202d3d20533b0a20202020202020202020202020202020202020202020696620280a20202020202020202020204d0802202020202020202020202020202853203d207529202b2044203e20323538202b202833312026202863203d206c2929202b20282863203e3e203529202620333129207c7c0a2020202020202020202020202020202020202020202020202842203d3d2031362026262053203c2031290a2020202020202020202020202020202020202020202029207b0a20202020202020202020202020202020202020202020202072203d206e756c6c3b0a2020202020202020202020202020202020202020202020206f203d20393b0a202020202020202020202020202020202020202020202020652e6d7367203d2027696e76616c696420626974206c656e67746820726570656174273b0a2020202020202020202020202020202020202020202020206e203d202d333b0a202020202020202020202020202020202020202020202020692e62697462203d20773b0a202020202020202020202020202020202020202020202020692e6269746b203d20763b0a202020202020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a202020202020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a20202020202020204d080220202020202020202020202020202020692e7772697465203d20413b0a20202020202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a202020202020202020202020202020202020202020207d0a2020202020202020202020202020202020202020202042203d2042203d3d203136203f20725b53202d20315d203a20303b0a20202020202020202020202020202020202020202020646f207b0a202020202020202020202020202020202020202020202020725b532b2b5d203d20423b0a202020202020202020202020202020202020202020207d207768696c6520282d2d4420213d2030293b0a2020202020202020202020202020202020202020202075203d20533b0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020685b305d203d202d313b0a202020202020202020202020202020202020766172204d203d205b5d3b0a2020202020202020202020202020202020207661722054203d205b5d3b0a2020202020202020202020202020202020207661722052203d205b5d3b0a2020202020202020202020202020202020207661722047203d205b5d3b0a2020202020202020202020202020202020204d5b305d203d20393b0a202020202020202020204d08022020202020202020545b305d203d20363b0a20202020202020202020202020202020202063203d206c3b0a202020202020202020202020202020202020696620280a20202020202020202020202020202020202020202863203d20622e696e666c6174655f74726565735f64796e616d6963280a20202020202020202020202020202020202020202020323537202b2028333120262063292c0a2020202020202020202020202020202020202020202031202b20282863203e3e2035292026203331292c0a20202020202020202020202020202020202020202020722c0a202020202020202020202020202020202020202020204d2c0a20202020202020202020202020202020202020202020542c0a20202020202020202020202020202020202020202020522c0a20202020202020202020202020202020202020202020472c0a202020202020202020202020202020202020202020206d2c0a20202020202020202020202020202020202020202020650a2020202020202020202020202020202020202020292920213d20300a20202020202020202020202020202020202029207b0a20202020202020202020202020202020202020206966202863203d3d202d3329207b0a2020202020202020202020202020202020202020202072203d206e756c6c3b0a202020202020202020202020202020202020202020206f203d20393b0a2020204d080220202020202020202020202020202020207d0a20202020202020202020202020202020202020206e203d20633b0a2020202020202020202020202020202020202020692e62697462203d20773b0a2020202020202020202020202020202020202020692e6269746b203d20763b0a2020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a2020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a2020202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a2020202020202020202020202020202020202020692e7772697465203d20413b0a202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020662e696e6974284d5b305d2c20545b305d2c206d2c20525b305d2c206d2c20475b305d293b0a2020202020202020202020202020202020206f203d20363b0a202020202020202020202020202020206361736520363a0a202020202020202020202020202020202020692e62697462203d20773b0a202020202020202020202020202020202020692e6269746b203d20763b0a202020202020202020204d08022020202020202020652e617661696c5f696e203d20783b0a202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a202020202020202020202020202020202020692e7772697465203d20413b0a20202020202020202020202020202020202069662028286e203d20662e70726f6328692c20652c206e292920213d203129207b0a202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206e203d20303b0a202020202020202020202020202020202020662e667265652865293b0a20202020202020202020202020202020202079203d20652e6e6578745f696e5f696e6465783b0a20202020202020202020202020202020202078203d20652e617661696c5f696e3b0a20202020202020202020202020202020202077203d20692e626974623b0a20202020202020202020202020202020202076203d20692e6269746b3b0a2020202020202020202020202020202020206b203d202841203d20692e777269746529203c20692e72656164203f20692e72656164202d2041202d2031203a204d0802692e656e64202d20413b0a2020202020202020202020202020202020206966202867203d3d3d203029207b0a20202020202020202020202020202020202020206f203d20303b0a2020202020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206f203d20373b0a202020202020202020202020202020206361736520373a0a202020202020202020202020202020202020692e7772697465203d20413b0a2020202020202020202020202020202020206e203d20692e696e666c6174655f666c75736828652c206e293b0a2020202020202020202020202020202020206b203d202841203d20692e777269746529203c20692e72656164203f20692e72656164202d2041202d2031203a20692e656e64202d20413b0a20202020202020202020202020202020202069662028692e7265616420213d20692e777269746529207b0a2020202020202020202020202020202020202020692e62697462203d20773b0a2020202020202020202020202020202020202020692e6269746b203d20763b0a2020202020202020202020202020202020202020652e617661696c5f696e203d20783b0a2020202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a202020204d080220202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a2020202020202020202020202020202020202020692e7772697465203d20413b0a202020202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206f203d20383b0a202020202020202020202020202020206361736520383a0a2020202020202020202020202020202020206e203d20313b0a202020202020202020202020202020202020692e62697462203d20773b0a202020202020202020202020202020202020692e6269746b203d20763b0a202020202020202020202020202020202020652e617661696c5f696e203d20783b0a202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a202020202020202020202020202020202020692e7772697465203d20413b0a20202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a202020202020202020202020202020206361736520393a0a20202020202020202020202020202020204d0802206e203d202d333b0a202020202020202020202020202020202020692e62697462203d20773b0a202020202020202020202020202020202020692e6269746b203d20763b0a202020202020202020202020202020202020652e617661696c5f696e203d20783b0a202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a202020202020202020202020202020202020692e7772697465203d20413b0a20202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a2020202020202020202020202020202064656661756c743a0a2020202020202020202020202020202020206e203d202d323b0a202020202020202020202020202020202020692e62697462203d20773b0a202020202020202020202020202020202020692e6269746b203d20763b0a202020202020202020202020202020202020652e617661696c5f696e203d20783b0a202020202020202020202020202020202020652e746f74616c5f696e202b3d2079202d20652e6e6578745f696e5f696e6465783b0a202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20793b0a2020202020202020204d0802202020202020202020692e7772697465203d20413b0a20202020202020202020202020202020202072657475726e20692e696e666c6174655f666c75736828652c206e293b0a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020207d3b0a20202020202020202020692e66726565203d2066756e6374696f6e20286529207b0a202020202020202020202020692e726573657428652c206e756c6c293b0a202020202020202020202020692e77696e646f77203d206e756c6c3b0a2020202020202020202020206d203d206e756c6c3b0a202020202020202020207d3b0a20202020202020202020692e7365745f64696374696f6e617279203d2066756e6374696f6e2028652c20742c206e29207b0a202020202020202020202020692e77696e646f772e73657428652e737562617272617928742c2074202b206e292c2030293b0a202020202020202020202020692e72656164203d20692e7772697465203d206e3b0a202020202020202020207d3b0a20202020202020202020692e73796e635f706f696e74203d2066756e6374696f6e202829207b0a202020202020202020202020696620286f203d3d203129207b0a202020202020202020202020202072657475726e20313b0a2020202020202020202020207d20656c7365207b0a202020202020202020202020202072657475726e204d0802303b0a2020202020202020202020207d0a202020202020202020207d3b0a20202020202020207d0a202020202020202066756e6374696f6e20682829207b0a2020202020202020202066756e6374696f6e2074286529207b0a202020202020202020202020696620286520262620652e69737461746529207b0a2020202020202020202020202020652e746f74616c5f696e203d20652e746f74616c5f6f7574203d20303b0a2020202020202020202020202020652e6d7367203d206e756c6c3b0a2020202020202020202020202020652e6973746174652e6d6f6465203d20373b0a2020202020202020202020202020652e6973746174652e626c6f636b732e726573657428652c206e756c6c293b0a202020202020202020202020202072657475726e20303b0a2020202020202020202020207d20656c7365207b0a202020202020202020202020202072657475726e202d323b0a2020202020202020202020207d0a202020202020202020207d0a202020202020202020207661722065203d20746869733b0a20202020202020202020652e6d6f6465203d20303b0a20202020202020202020652e6d6574686f64203d20303b0a20202020202020202020652e776173203d205b305d3b0a20202020202020202020652e6e656564203d20303b0a20202020202020202020652e6d61726b6572203d20303b0a20202020202020202020652e4d08027762697473203d20303b0a20202020202020202020652e696e666c617465456e64203d2066756e6374696f6e20287429207b0a20202020202020202020202069662028652e626c6f636b7329207b0a2020202020202020202020202020652e626c6f636b732e667265652874293b0a2020202020202020202020207d0a202020202020202020202020652e626c6f636b73203d206e756c6c3b0a20202020202020202020202072657475726e20303b0a202020202020202020207d3b0a20202020202020202020652e696e666c617465496e6974203d2066756e6374696f6e20286e2c207229207b0a2020202020202020202020206e2e6d7367203d206e756c6c3b0a202020202020202020202020652e626c6f636b73203d206e756c6c3b0a2020202020202020202020206966202872203c2038207c7c2072203e20313529207b0a2020202020202020202020202020652e696e666c617465456e64286e293b0a202020202020202020202020202072657475726e202d323b0a2020202020202020202020207d20656c7365207b0a2020202020202020202020202020652e7762697473203d20723b0a20202020202020202020202020206e2e6973746174652e626c6f636b73203d206e65772075286e2c2031203c3c2072293b0a202020202020202020202020202074286e293b0a202020202020202020202020202072657475726e20303b4d08020a2020202020202020202020207d0a202020202020202020207d3b0a20202020202020202020652e696e666c617465203d2066756e6374696f6e2028652c207429207b0a202020202020202020202020766172206e3b0a20202020202020202020202076617220723b0a202020202020202020202020696620282165207c7c2021652e697374617465207c7c2021652e6e6578745f696e29207b0a202020202020202020202020202072657475726e202d323b0a2020202020202020202020207d0a20202020202020202020202074203d2074203d3d2034203f202d35203a20303b0a202020202020202020202020666f7220286e203d202d353b203b2029207b0a20202020202020202020202020207377697463682028652e6973746174652e6d6f646529207b0a202020202020202020202020202020206361736520303a0a20202020202020202020202020202020202069662028652e617661696c5f696e203d3d3d203029207b0a202020202020202020202020202020202020202072657475726e206e3b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206e203d20743b0a202020202020202020202020202020202020652e617661696c5f696e2d2d3b0a202020202020202020202020202020202020652e746f74616c5f696e2b2b3b0a2020202020202020202020202020202020204d0802696620280a202020202020202020202020202020202020202028313520262028652e6973746174652e6d6574686f64203d20652e726561645f6279746528652e6e6578745f696e5f696e6465782b2b29292920213d0a2020202020202020202020202020202020202020380a20202020202020202020202020202020202029207b0a2020202020202020202020202020202020202020652e6973746174652e6d6f6465203d2031333b0a2020202020202020202020202020202020202020652e6d7367203d2027756e6b6e6f776e20636f6d7072657373696f6e206d6574686f64273b0a2020202020202020202020202020202020202020652e6973746174652e6d61726b6572203d20353b0a2020202020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206966202838202b2028652e6973746174652e6d6574686f64203e3e203429203e20652e6973746174652e776269747329207b0a2020202020202020202020202020202020202020652e6973746174652e6d6f6465203d2031333b0a2020202020202020202020202020202020202020652e6d7367203d2027696e76616c69642077696e646f772073697a65273b0a2020202020202020202020202020202020202020652e6973746174652e6d61726b6572203d20353b0a2020204d08022020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020652e6973746174652e6d6f6465203d20313b0a202020202020202020202020202020206361736520313a0a20202020202020202020202020202020202069662028652e617661696c5f696e203d3d3d203029207b0a202020202020202020202020202020202020202072657475726e206e3b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206e203d20743b0a202020202020202020202020202020202020652e617661696c5f696e2d2d3b0a202020202020202020202020202020202020652e746f74616c5f696e2b2b3b0a20202020202020202020202020202020202072203d20323535202620652e726561645f6279746528652e6e6578745f696e5f696e6465782b2b293b0a202020202020202020202020202020202020696620282828652e6973746174652e6d6574686f64203c3c203829202b207229202520333120213d203029207b0a2020202020202020202020202020202020202020652e6973746174652e6d6f6465203d2031333b0a2020202020202020202020202020202020202020652e6d7367203d2027696e636f72726563742068656164657220636865636b273b0a202020202020202020202020202020204d080220202020652e6973746174652e6d61726b6572203d20353b0a2020202020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020696620282833322026207229203d3d203029207b0a2020202020202020202020202020202020202020652e6973746174652e6d6f6465203d20373b0a2020202020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020652e6973746174652e6d6f6465203d20323b0a202020202020202020202020202020206361736520323a0a20202020202020202020202020202020202069662028652e617661696c5f696e203d3d3d203029207b0a202020202020202020202020202020202020202072657475726e206e3b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206e203d20743b0a202020202020202020202020202020202020652e617661696c5f696e2d2d3b0a202020202020202020202020202020202020652e746f74616c5f696e2b2b3b0a202020202020202020202020202020202020652e6973746174652e6e656564203d0a20202020202020202020202020202020202020202828323535202620652e726561645f6279746528652e6e6578745f4d0802696e5f696e6465782b2b2929203c3c20323429202620343237383139303038303b0a202020202020202020202020202020202020652e6973746174652e6d6f6465203d20333b0a202020202020202020202020202020206361736520333a0a20202020202020202020202020202020202069662028652e617661696c5f696e203d3d3d203029207b0a202020202020202020202020202020202020202072657475726e206e3b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206e203d20743b0a202020202020202020202020202020202020652e617661696c5f696e2d2d3b0a202020202020202020202020202020202020652e746f74616c5f696e2b2b3b0a202020202020202020202020202020202020652e6973746174652e6e656564202b3d0a20202020202020202020202020202020202020202828323535202620652e726561645f6279746528652e6e6578745f696e5f696e6465782b2b2929203c3c2031362920262031363731313638303b0a202020202020202020202020202020202020652e6973746174652e6d6f6465203d20343b0a202020202020202020202020202020206361736520343a0a20202020202020202020202020202020202069662028652e617661696c5f696e203d3d3d203029207b0a202020202020202020202020202020202020202072657475726e204d08026e3b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206e203d20743b0a202020202020202020202020202020202020652e617661696c5f696e2d2d3b0a202020202020202020202020202020202020652e746f74616c5f696e2b2b3b0a202020202020202020202020202020202020652e6973746174652e6e656564202b3d0a20202020202020202020202020202020202020202828323535202620652e726561645f6279746528652e6e6578745f696e5f696e6465782b2b2929203c3c20382920262036353238303b0a202020202020202020202020202020202020652e6973746174652e6d6f6465203d20353b0a202020202020202020202020202020206361736520353a0a20202020202020202020202020202020202069662028652e617661696c5f696e203d3d3d203029207b0a202020202020202020202020202020202020202072657475726e206e3b0a2020202020202020202020202020202020207d20656c7365207b0a20202020202020202020202020202020202020206e203d20743b0a2020202020202020202020202020202020202020652e617661696c5f696e2d2d3b0a2020202020202020202020202020202020202020652e746f74616c5f696e2b2b3b0a2020202020202020202020202020202020202020652e6973746174652e6e656564202b3d203235352026204d0802652e726561645f6279746528652e6e6578745f696e5f696e6465782b2b293b0a2020202020202020202020202020202020202020652e6973746174652e6d6f6465203d20363b0a202020202020202020202020202020202020202072657475726e20323b0a2020202020202020202020202020202020207d0a202020202020202020202020202020206361736520363a0a202020202020202020202020202020202020652e6973746174652e6d6f6465203d2031333b0a202020202020202020202020202020202020652e6d7367203d20276e6565642064696374696f6e617279273b0a202020202020202020202020202020202020652e6973746174652e6d61726b6572203d20303b0a20202020202020202020202020202020202072657475726e202d323b0a202020202020202020202020202020206361736520373a0a20202020202020202020202020202020202069662028286e203d20652e6973746174652e626c6f636b732e70726f6328652c206e2929203d3d202d3329207b0a2020202020202020202020202020202020202020652e6973746174652e6d6f6465203d2031333b0a2020202020202020202020202020202020202020652e6973746174652e6d61726b6572203d20303b0a2020202020202020202020202020202020202020627265616b3b0a2020202020202020202020202020202020207d0a20202020202020204d080220202020202020202020696620286e203d3d203029207b0a20202020202020202020202020202020202020206e203d20743b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020696620286e20213d203129207b0a202020202020202020202020202020202020202072657475726e206e3b0a2020202020202020202020202020202020207d0a2020202020202020202020202020202020206e203d20743b0a202020202020202020202020202020202020652e6973746174652e626c6f636b732e726573657428652c20652e6973746174652e776173293b0a202020202020202020202020202020202020652e6973746174652e6d6f6465203d2031323b0a20202020202020202020202020202020636173652031323a0a20202020202020202020202020202020202072657475726e20313b0a20202020202020202020202020202020636173652031333a0a20202020202020202020202020202020202072657475726e202d333b0a2020202020202020202020202020202064656661756c743a0a20202020202020202020202020202020202072657475726e202d323b0a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020207d3b0a20202020202020202020652e696e666c61746553657444696374696f6e617279203d2066756e6374696f4d08026e2028652c20742c206e29207b0a2020202020202020202020207661722072203d20303b0a2020202020202020202020207661722069203d206e3b0a202020202020202020202020696620286520262620652e69737461746520262620652e6973746174652e6d6f6465203d3d203629207b0a20202020202020202020202020206966202869203e3d2031203c3c20652e6973746174652e776269747329207b0a2020202020202020202020202020202072203d206e202d202869203d202831203c3c20652e6973746174652e776269747329202d2031293b0a20202020202020202020202020207d0a2020202020202020202020202020652e6973746174652e626c6f636b732e7365745f64696374696f6e61727928742c20722c2069293b0a2020202020202020202020202020652e6973746174652e6d6f6465203d20373b0a202020202020202020202020202072657475726e20303b0a2020202020202020202020207d20656c7365207b0a202020202020202020202020202072657475726e202d323b0a2020202020202020202020207d0a202020202020202020207d3b0a20202020202020202020652e696e666c61746553796e63203d2066756e6374696f6e20286529207b0a202020202020202020202020766172206e3b0a202020202020202020202020766172206f3b0a20202020202020202020202076617220613b0a2020204d0802202020202020202020696620282165207c7c2021652e69737461746529207b0a202020202020202020202020202072657475726e202d323b0a2020202020202020202020207d0a20202020202020202020202069662028652e6973746174652e6d6f646520213d20313329207b0a2020202020202020202020202020652e6973746174652e6d6f6465203d2031333b0a2020202020202020202020202020652e6973746174652e6d61726b6572203d20303b0a2020202020202020202020207d0a20202020202020202020202069662028286e203d20652e617661696c5f696e29203d3d3d203029207b0a202020202020202020202020202072657475726e202d353b0a2020202020202020202020207d0a2020202020202020202020207661722072203d20652e6e6578745f696e5f696e6465783b0a202020202020202020202020666f7220287661722069203d20652e6973746174652e6d61726b65723b206e20213d3d20302026262069203c20343b2029207b0a202020202020202020202020202069662028652e726561645f62797465287229203d3d20705b695d29207b0a20202020202020202020202020202020692b2b3b0a20202020202020202020202020207d20656c7365207b0a2020202020202020202020202020202069203d20652e726561645f6279746528722920213d3d2030203f2030203a2034202d20693b0a2020204d080220202020202020202020207d0a2020202020202020202020202020722b2b3b0a20202020202020202020202020206e2d2d3b0a2020202020202020202020207d0a202020202020202020202020652e746f74616c5f696e202b3d2072202d20652e6e6578745f696e5f696e6465783b0a202020202020202020202020652e6e6578745f696e5f696e646578203d20723b0a202020202020202020202020652e617661696c5f696e203d206e3b0a202020202020202020202020652e6973746174652e6d61726b6572203d20693b0a2020202020202020202020206966202869203d3d203429207b0a20202020202020202020202020206f203d20652e746f74616c5f696e3b0a202020202020202020202020202061203d20652e746f74616c5f6f75743b0a2020202020202020202020202020742865293b0a2020202020202020202020202020652e746f74616c5f696e203d206f3b0a2020202020202020202020202020652e746f74616c5f6f7574203d20613b0a2020202020202020202020202020652e6973746174652e6d6f6465203d20373b0a202020202020202020202020202072657475726e20303b0a2020202020202020202020207d20656c7365207b0a202020202020202020202020202072657475726e202d333b0a2020202020202020202020207d0a202020202020202020207d3b0a20202020202020202020652e696e666c4d080261746553796e63506f696e74203d2066756e6374696f6e20286529207b0a202020202020202020202020696620286520262620652e69737461746520262620652e6973746174652e626c6f636b7329207b0a202020202020202020202020202072657475726e20652e6973746174652e626c6f636b732e73796e635f706f696e7428293b0a2020202020202020202020207d20656c7365207b0a202020202020202020202020202072657475726e202d323b0a2020202020202020202020207d0a202020202020202020207d3b0a20202020202020207d0a202020202020202066756e6374696f6e20662829207b7d0a20202020202020207661722074203d205b0a20202020202020202020302c20312c20332c20372c2031352c2033312c2036332c203132372c203235352c203531312c20313032332c20323034372c20343039352c20383139312c2031363338332c0a2020202020202020202033323736372c2036353533352c0a20202020202020205d3b0a2020202020202020766172206e203d205b0a2020202020202020202039362c20372c203235362c20302c20382c2038302c20302c20382c2031362c2038342c20382c203131352c2038322c20372c2033312c20302c20382c203131322c20302c0a20202020202020202020382c2034382c20302c20392c203139322c2038302c20372c2031302c20302c20382c2039362c20304d08022c20382c2033322c20302c20392c203136302c20302c20382c20302c0a20202020202020202020302c20382c203132382c20302c20382c2036342c20302c20392c203232342c2038302c20372c20362c20302c20382c2038382c20302c20382c2032342c20302c20392c0a202020202020202020203134342c2038332c20372c2035392c20302c20382c203132302c20302c20382c2035362c20302c20392c203230382c2038312c20372c2031372c20302c20382c203130342c0a20202020202020202020302c20382c2034302c20302c20392c203137362c20302c20382c20382c20302c20382c203133362c20302c20382c2037322c20302c20392c203234302c2038302c20372c0a20202020202020202020342c20302c20382c2038342c20302c20382c2032302c2038352c20382c203232372c2038332c20372c2034332c20302c20382c203131362c20302c20382c2035322c20302c0a20202020202020202020392c203230302c2038312c20372c2031332c20302c20382c203130302c20302c20382c2033362c20302c20392c203136382c20302c20382c20342c20302c20382c203133322c0a20202020202020202020302c20382c2036382c20302c20392c203233322c2038302c20372c20382c20302c20382c2039322c20302c20382c2032382c20302c20392c203135322c2038342c20372c0a2020202020202020202038332c204d0802302c20382c203132342c20302c20382c2036302c20302c20392c203231362c2038322c20372c2032332c20302c20382c203130382c20302c20382c2034342c20302c0a20202020202020202020392c203138342c20302c20382c2031322c20302c20382c203134302c20302c20382c2037362c20302c20392c203234382c2038302c20372c20332c20302c20382c2038322c0a20202020202020202020302c20382c2031382c2038352c20382c203136332c2038332c20372c2033352c20302c20382c203131342c20302c20382c2035302c20302c20392c203139362c2038312c0a20202020202020202020372c2031312c20302c20382c2039382c20302c20382c2033342c20302c20392c203136342c20302c20382c20322c20302c20382c203133302c20302c20382c2036362c20302c0a20202020202020202020392c203232382c2038302c20372c20372c20302c20382c2039302c20302c20382c2032362c20302c20392c203134382c2038342c20372c2036372c20302c20382c203132322c0a20202020202020202020302c20382c2035382c20302c20392c203231322c2038322c20372c2031392c20302c20382c203130362c20302c20382c2034322c20302c20392c203138302c20302c20382c0a2020202020202020202031302c20302c20382c203133382c20302c20382c2037342c20302c20392c203234342c2038302c20372c4d080220352c20302c20382c2038362c20302c20382c2032322c203139322c0a20202020202020202020382c20302c2038332c20372c2035312c20302c20382c203131382c20302c20382c2035342c20302c20392c203230342c2038312c20372c2031352c20302c20382c203130322c0a20202020202020202020302c20382c2033382c20302c20392c203137322c20302c20382c20362c20302c20382c203133342c20302c20382c2037302c20302c20392c203233362c2038302c20372c0a20202020202020202020392c20302c20382c2039342c20302c20382c2033302c20302c20392c203135362c2038342c20372c2039392c20302c20382c203132362c20302c20382c2036322c20302c0a20202020202020202020392c203232302c2038322c20372c2032372c20302c20382c203131302c20302c20382c2034362c20302c20392c203138382c20302c20382c2031342c20302c20382c0a202020202020202020203134322c20302c20382c2037382c20302c20392c203235322c2039362c20372c203235362c20302c20382c2038312c20302c20382c2031372c2038352c20382c203133312c0a2020202020202020202038322c20372c2033312c20302c20382c203131332c20302c20382c2034392c20302c20392c203139342c2038302c20372c2031302c20302c20382c2039372c20302c20382c0a2020202020202020202033332c20304d08022c20392c203136322c20302c20382c20312c20302c20382c203132392c20302c20382c2036352c20302c20392c203232362c2038302c20372c20362c20302c0a20202020202020202020382c2038392c20302c20382c2032352c20302c20392c203134362c2038332c20372c2035392c20302c20382c203132312c20302c20382c2035372c20302c20392c203231302c0a2020202020202020202038312c20372c2031372c20302c20382c203130352c20302c20382c2034312c20302c20392c203137382c20302c20382c20392c20302c20382c203133372c20302c20382c0a2020202020202020202037332c20302c20392c203234322c2038302c20372c20342c20302c20382c2038352c20302c20382c2032312c2038302c20382c203235382c2038332c20372c2034332c20302c0a20202020202020202020382c203131372c20302c20382c2035332c20302c20392c203230322c2038312c20372c2031332c20302c20382c203130312c20302c20382c2033372c20302c20392c0a202020202020202020203137302c20302c20382c20352c20302c20382c203133332c20302c20382c2036392c20302c20392c203233342c2038302c20372c20382c20302c20382c2039332c20302c0a20202020202020202020382c2032392c20302c20392c203135342c2038342c20372c2038332c20302c20382c203132352c20302c20382c2036312c4d080220302c20392c203231382c2038322c20372c0a2020202020202020202032332c20302c20382c203130392c20302c20382c2034352c20302c20392c203138362c20302c20382c2031332c20302c20382c203134312c20302c20382c2037372c20302c0a20202020202020202020392c203235302c2038302c20372c20332c20302c20382c2038332c20302c20382c2031392c2038352c20382c203139352c2038332c20372c2033352c20302c20382c0a202020202020202020203131352c20302c20382c2035312c20302c20392c203139382c2038312c20372c2031312c20302c20382c2039392c20302c20382c2033352c20302c20392c203136362c20302c0a20202020202020202020382c20332c20302c20382c203133312c20302c20382c2036372c20302c20392c203233302c2038302c20372c20372c20302c20382c2039312c20302c20382c2032372c20302c0a20202020202020202020392c203135302c2038342c20372c2036372c20302c20382c203132332c20302c20382c2035392c20302c20392c203231342c2038322c20372c2031392c20302c20382c0a202020202020202020203130372c20302c20382c2034332c20302c20392c203138322c20302c20382c2031312c20302c20382c203133392c20302c20382c2037352c20302c20392c203234362c0a2020202020202020202038302c20372c20352c20302c20382c204d080238372c20302c20382c2032332c203139322c20382c20302c2038332c20372c2035312c20302c20382c203131392c20302c20382c0a2020202020202020202035352c20302c20392c203230362c2038312c20372c2031352c20302c20382c203130332c20302c20382c2033392c20302c20392c203137342c20302c20382c20372c20302c0a20202020202020202020382c203133352c20302c20382c2037312c20302c20392c203233382c2038302c20372c20392c20302c20382c2039352c20302c20382c2033312c20302c20392c203135382c0a2020202020202020202038342c20372c2039392c20302c20382c203132372c20302c20382c2036332c20302c20392c203232322c2038322c20372c2032372c20302c20382c203131312c20302c20382c0a2020202020202020202034372c20302c20392c203139302c20302c20382c2031352c20302c20382c203134332c20302c20382c2037392c20302c20392c203235342c2039362c20372c203235362c0a20202020202020202020302c20382c2038302c20302c20382c2031362c2038342c20382c203131352c2038322c20372c2033312c20302c20382c203131322c20302c20382c2034382c20302c20392c0a202020202020202020203139332c2038302c20372c2031302c20302c20382c2039362c20302c20382c2033322c20302c20392c203136312c20302c20382c20302c20304d08022c20382c203132382c20302c0a20202020202020202020382c2036342c20302c20392c203232352c2038302c20372c20362c20302c20382c2038382c20302c20382c2032342c20302c20392c203134352c2038332c20372c2035392c0a20202020202020202020302c20382c203132302c20302c20382c2035362c20302c20392c203230392c2038312c20372c2031372c20302c20382c203130342c20302c20382c2034302c20302c20392c0a202020202020202020203137372c20302c20382c20382c20302c20382c203133362c20302c20382c2037322c20302c20392c203234312c2038302c20372c20342c20302c20382c2038342c20302c0a20202020202020202020382c2032302c2038352c20382c203232372c2038332c20372c2034332c20302c20382c203131362c20302c20382c2035322c20302c20392c203230312c2038312c20372c0a2020202020202020202031332c20302c20382c203130302c20302c20382c2033362c20302c20392c203136392c20302c20382c20342c20302c20382c203133322c20302c20382c2036382c20302c0a20202020202020202020392c203233332c2038302c20372c20382c20302c20382c2039322c20302c20382c2032382c20302c20392c203135332c2038342c20372c2038332c20302c20382c203132342c0a20202020202020202020302c20382c2036302c20302c20392c203231374d08022c2038322c20372c2032332c20302c20382c203130382c20302c20382c2034342c20302c20392c203138352c20302c20382c0a2020202020202020202031322c20302c20382c203134302c20302c20382c2037362c20302c20392c203234392c2038302c20372c20332c20302c20382c2038322c20302c20382c2031382c2038352c0a20202020202020202020382c203136332c2038332c20372c2033352c20302c20382c203131342c20302c20382c2035302c20302c20392c203139372c2038312c20372c2031312c20302c20382c0a2020202020202020202039382c20302c20382c2033342c20302c20392c203136352c20302c20382c20322c20302c20382c203133302c20302c20382c2036362c20302c20392c203232392c2038302c0a20202020202020202020372c20372c20302c20382c2039302c20302c20382c2032362c20302c20392c203134392c2038342c20372c2036372c20302c20382c203132322c20302c20382c2035382c0a20202020202020202020302c20392c203231332c2038322c20372c2031392c20302c20382c203130362c20302c20382c2034322c20302c20392c203138312c20302c20382c2031302c20302c20382c0a202020202020202020203133382c20302c20382c2037342c20302c20392c203234352c2038302c20372c20352c20302c20382c2038362c20302c20382c2032322c203139322c20384d08022c20302c2038332c0a20202020202020202020372c2035312c20302c20382c203131382c20302c20382c2035342c20302c20392c203230352c2038312c20372c2031352c20302c20382c203130322c20302c20382c2033382c0a20202020202020202020302c20392c203137332c20302c20382c20362c20302c20382c203133342c20302c20382c2037302c20302c20392c203233372c2038302c20372c20392c20302c20382c0a2020202020202020202039342c20302c20382c2033302c20302c20392c203135372c2038342c20372c2039392c20302c20382c203132362c20302c20382c2036322c20302c20392c203232312c0a2020202020202020202038322c20372c2032372c20302c20382c203131302c20302c20382c2034362c20302c20392c203138392c20302c20382c2031342c20302c20382c203134322c20302c20382c0a2020202020202020202037382c20302c20392c203235332c2039362c20372c203235362c20302c20382c2038312c20302c20382c2031372c2038352c20382c203133312c2038322c20372c2033312c0a20202020202020202020302c20382c203131332c20302c20382c2034392c20302c20392c203139352c2038302c20372c2031302c20302c20382c2039372c20302c20382c2033332c20302c20392c0a202020202020202020203136332c20302c20382c20312c20302c20382c203132392c204d0802302c20382c2036352c20302c20392c203232372c2038302c20372c20362c20302c20382c2038392c20302c0a20202020202020202020382c2032352c20302c20392c203134372c2038332c20372c2035392c20302c20382c203132312c20302c20382c2035372c20302c20392c203231312c2038312c20372c0a2020202020202020202031372c20302c20382c203130352c20302c20382c2034312c20302c20392c203137392c20302c20382c20392c20302c20382c203133372c20302c20382c2037332c20302c0a20202020202020202020392c203234332c2038302c20372c20342c20302c20382c2038352c20302c20382c2032312c2038302c20382c203235382c2038332c20372c2034332c20302c20382c0a202020202020202020203131372c20302c20382c2035332c20302c20392c203230332c2038312c20372c2031332c20302c20382c203130312c20302c20382c2033372c20302c20392c203137312c0a20202020202020202020302c20382c20352c20302c20382c203133332c20302c20382c2036392c20302c20392c203233352c2038302c20372c20382c20302c20382c2039332c20302c20382c2032392c0a20202020202020202020302c20392c203135352c2038342c20372c2038332c20302c20382c203132352c20302c20382c2036312c20302c20392c203231392c2038322c20372c2032332c20302c20382c0a204d08022020202020202020203130392c20302c20382c2034352c20302c20392c203138372c20302c20382c2031332c20302c20382c203134312c20302c20382c2037372c20302c20392c203235312c0a2020202020202020202038302c20372c20332c20302c20382c2038332c20302c20382c2031392c2038352c20382c203139352c2038332c20372c2033352c20302c20382c203131352c20302c20382c0a2020202020202020202035312c20302c20392c203139392c2038312c20372c2031312c20302c20382c2039392c20302c20382c2033352c20302c20392c203136372c20302c20382c20332c20302c0a20202020202020202020382c203133312c20302c20382c2036372c20302c20392c203233312c2038302c20372c20372c20302c20382c2039312c20302c20382c2032372c20302c20392c203135312c0a2020202020202020202038342c20372c2036372c20302c20382c203132332c20302c20382c2035392c20302c20392c203231352c2038322c20372c2031392c20302c20382c203130372c20302c20382c0a2020202020202020202034332c20302c20392c203138332c20302c20382c2031312c20302c20382c203133392c20302c20382c2037352c20302c20392c203234372c2038302c20372c20352c20302c0a20202020202020202020382c2038372c20302c20382c2032332c203139322c20382c20302c2038332c20374d08022c2035312c20302c20382c203131392c20302c20382c2035352c20302c20392c203230372c0a2020202020202020202038312c20372c2031352c20302c20382c203130332c20302c20382c2033392c20302c20392c203137352c20302c20382c20372c20302c20382c203133352c20302c20382c0a2020202020202020202037312c20302c20392c203233392c2038302c20372c20392c20302c20382c2039352c20302c20382c2033312c20302c20392c203135392c2038342c20372c2039392c20302c0a20202020202020202020382c203132372c20302c20382c2036332c20302c20392c203232332c2038322c20372c2032372c20302c20382c203131312c20302c20382c2034372c20302c20392c0a202020202020202020203139312c20302c20382c2031352c20302c20382c203134332c20302c20382c2037392c20302c20392c203235352c0a20202020202020205d3b0a20202020202020207661722072203d205b0a2020202020202020202038302c20352c20312c2038372c20352c203235372c2038332c20352c2031372c2039312c20352c20343039372c2038312c20352c20352c2038392c20352c20313032352c0a2020202020202020202038352c20352c2036352c2039332c20352c2031363338352c2038302c20352c20332c2038382c20352c203531332c2038342c20352c2033332c2039322c20352c20383139332c0a4d08022020202020202020202038322c20352c20392c2039302c20352c20323034392c2038362c20352c203132392c203139322c20352c2032343537372c2038302c20352c20322c2038372c20352c0a202020202020202020203338352c2038332c20352c2032352c2039312c20352c20363134352c2038312c20352c20372c2038392c20352c20313533372c2038352c20352c2039372c2039332c20352c0a2020202020202020202032343537372c2038302c20352c20342c2038382c20352c203736392c2038342c20352c2034392c2039322c20352c2031323238392c2038322c20352c2031332c2039302c0a20202020202020202020352c20333037332c2038362c20352c203139332c203139322c20352c2032343537372c0a20202020202020205d3b0a20202020202020207661722069203d205b0a20202020202020202020332c20342c20352c20362c20372c20382c20392c2031302c2031312c2031332c2031352c2031372c2031392c2032332c2032372c2033312c2033352c2034332c2035312c0a2020202020202020202035392c2036372c2038332c2039392c203131352c203133312c203136332c203139352c203232372c203235382c20302c20302c0a20202020202020205d3b0a2020202020202020766172206f203d205b0a20202020202020202020302c20302c20302c20302c20302c20302c20302c20302c20312c20312c4d080220312c20312c20322c20322c20322c20322c20332c20332c20332c20332c20342c20342c20342c0a20202020202020202020342c20352c20352c20352c20352c20302c203131322c203131322c0a20202020202020205d3b0a20202020202020207661722061203d205b0a20202020202020202020312c20322c20332c20342c20352c20372c20392c2031332c2031372c2032352c2033332c2034392c2036352c2039372c203132392c203139332c203235372c203338352c0a202020202020202020203531332c203736392c20313032352c20313533372c20323034392c20333037332c20343039372c20363134352c20383139332c2031323238392c2031363338352c0a2020202020202020202032343537372c0a20202020202020205d3b0a2020202020202020766172206c203d205b0a20202020202020202020302c20302c20302c20302c20312c20312c20322c20322c20332c20332c20342c20342c20352c20352c20362c20362c20372c20372c20382c20382c20392c20392c2031302c0a2020202020202020202031302c2031312c2031312c2031322c2031322c2031332c2031332c0a20202020202020205d3b0a2020202020202020732e696e666c6174655f74726565735f6669786564203d2066756e6374696f6e2028652c20742c20692c206f29207b0a20202020202020202020655b305d203d20393b0a202020202020204d0802202020745b305d203d20353b0a20202020202020202020695b305d203d206e3b0a202020202020202020206f5b305d203d20723b0a2020202020202020202072657475726e20303b0a20202020202020207d3b0a20202020202020207661722064203d205b0a2020202020202020202031362c2031372c2031382c20302c20382c20372c20392c20362c2031302c20352c2031312c20342c2031322c20332c2031332c20322c2031342c20312c2031352c0a20202020202020205d3b0a20202020202020207661722070203d205b302c20302c203235352c203235355d3b0a2020202020202020662e70726f746f74797065203d207b0a20202020202020202020696e666c617465496e69743a2066756e6374696f6e20286529207b0a202020202020202020202020746869732e697374617465203d206e6577206828293b0a20202020202020202020202069662028216529207b0a202020202020202020202020202065203d2031353b0a2020202020202020202020207d0a20202020202020202020202072657475726e20746869732e6973746174652e696e666c617465496e697428746869732c2065293b0a202020202020202020207d2c0a20202020202020202020696e666c6174653a2066756e6374696f6e20286529207b0a20202020202020202020202069662028746869732e69737461746529207b0a20202020202020202020204d080220202072657475726e20746869732e6973746174652e696e666c61746528746869732c2065293b0a2020202020202020202020207d20656c7365207b0a202020202020202020202020202072657475726e202d323b0a2020202020202020202020207d0a202020202020202020207d2c0a20202020202020202020696e666c617465456e643a2066756e6374696f6e202829207b0a2020202020202020202020206966202821746869732e69737461746529207b0a202020202020202020202020202072657475726e202d323b0a2020202020202020202020207d0a2020202020202020202020207661722065203d20746869732e6973746174652e696e666c617465456e642874686973293b0a202020202020202020202020746869732e697374617465203d206e756c6c3b0a20202020202020202020202072657475726e20653b0a202020202020202020207d2c0a20202020202020202020696e666c61746553796e633a2066756e6374696f6e202829207b0a20202020202020202020202069662028746869732e69737461746529207b0a202020202020202020202020202072657475726e20746869732e6973746174652e696e666c61746553796e632874686973293b0a2020202020202020202020207d20656c7365207b0a202020202020202020202020202072657475726e202d323b0a2020202020202020202020207d0a2020204d0802202020202020207d2c0a20202020202020202020696e666c61746553657444696374696f6e6172793a2066756e6374696f6e2028652c207429207b0a20202020202020202020202069662028746869732e69737461746529207b0a202020202020202020202020202072657475726e20746869732e6973746174652e696e666c61746553657444696374696f6e61727928746869732c20652c2074293b0a2020202020202020202020207d20656c7365207b0a202020202020202020202020202072657475726e202d323b0a2020202020202020202020207d0a202020202020202020207d2c0a20202020202020202020726561645f627974653a2066756e6374696f6e20286529207b0a20202020202020202020202072657475726e20746869732e6e6578745f696e2e737562617272617928652c2065202b2031295b305d3b0a202020202020202020207d2c0a20202020202020202020726561645f6275663a2066756e6374696f6e2028652c207429207b0a20202020202020202020202072657475726e20746869732e6e6578745f696e2e737562617272617928652c2065202b2074293b0a202020202020202020207d2c0a20202020202020207d3b0a20202020202020207661722067203d20652e7a6970207c7c20653b0a2020202020202020672e496e666c61746572203d20672e5f6a7a6c69625f496e666c61746572203d2066754d08026e6374696f6e202829207b0a202020202020202020207661722065203d206e6577206628293b0a202020202020202020207661722074203d206e65772055696e7438417272617928353132293b0a20202020202020202020766172206e203d2066616c73653b0a20202020202020202020652e696e666c617465496e697428293b0a20202020202020202020652e6e6578745f6f7574203d20743b0a20202020202020202020746869732e617070656e64203d2066756e6374696f6e2028722c206929207b0a202020202020202020202020766172206f3b0a20202020202020202020202076617220613b0a202020202020202020202020766172206c203d205b5d3b0a2020202020202020202020207661722073203d20303b0a2020202020202020202020207661722063203d20303b0a2020202020202020202020207661722064203d20303b0a20202020202020202020202069662028722e6c656e67746820213d3d203029207b0a2020202020202020202020202020652e6e6578745f696e5f696e646578203d20303b0a2020202020202020202020202020652e6e6578745f696e203d20723b0a2020202020202020202020202020652e617661696c5f696e203d20722e6c656e6774683b0a2020202020202020202020202020646f207b0a20202020202020202020202020202020652e6e6578745f6f75745f696e646578203d20303b4d08020a20202020202020202020202020202020652e617661696c5f6f7574203d203531323b0a2020202020202020202020202020202069662028652e617661696c5f696e203d3d3d203020262620216e29207b0a202020202020202020202020202020202020652e6e6578745f696e5f696e646578203d20303b0a2020202020202020202020202020202020206e203d20747275653b0a202020202020202020202020202020207d0a202020202020202020202020202020206f203d20652e696e666c6174652830293b0a20202020202020202020202020202020696620286e202626206f203d3d3d202d3529207b0a20202020202020202020202020202020202069662028652e617661696c5f696e20213d3d203029207b0a20202020202020202020202020202020202020207468726f77206e6577204572726f722827696e666c6174696e673a2062616420696e70757427293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020207d20656c736520696620286f20213d3d2030202626206f20213d3d203129207b0a2020202020202020202020202020202020207468726f77206e6577204572726f722827696e666c6174696e673a2027202b20652e6d7367293b0a202020202020202020202020202020207d0a2020202020202020202020202020202069662028286e207c7c206f203d3d3d2031294d080220262620652e617661696c5f696e203d3d3d20722e6c656e67746829207b0a2020202020202020202020202020202020207468726f77206e6577204572726f722827696e666c6174696e673a2062616420696e70757427293b0a202020202020202020202020202020207d0a2020202020202020202020202020202069662028652e6e6578745f6f75745f696e64657829207b0a20202020202020202020202020202020202069662028652e6e6578745f6f75745f696e646578203d3d3d2035313229207b0a20202020202020202020202020202020202020206c2e70757368286e65772055696e74384172726179287429293b0a2020202020202020202020202020202020207d20656c7365207b0a20202020202020202020202020202020202020206c2e70757368286e65772055696e7438417272617928742e737562617272617928302c20652e6e6578745f6f75745f696e6465782929293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020207d0a2020202020202020202020202020202064202b3d20652e6e6578745f6f75745f696e6465783b0a20202020202020202020202020202020696620286920262620652e6e6578745f696e5f696e646578203e203020262620652e6e6578745f696e5f696e64657820213d207329207b0a2020202020202020202020202020202020206928652e4d08026e6578745f696e5f696e646578293b0a20202020202020202020202020202020202073203d20652e6e6578745f696e5f696e6465783b0a202020202020202020202020202020207d0a20202020202020202020202020207d207768696c652028652e617661696c5f696e203e2030207c7c20652e617661696c5f6f7574203d3d3d2030293b0a202020202020202020202020202061203d206e65772055696e743841727261792864293b0a20202020202020202020202020206c2e666f72456163682866756e6374696f6e20286529207b0a20202020202020202020202020202020612e73657428652c2063293b0a2020202020202020202020202020202063202b3d20652e6c656e6774683b0a20202020202020202020202020207d293b0a202020202020202020202020202072657475726e20613b0a2020202020202020202020207d0a202020202020202020207d3b0a20202020202020202020746869732e666c757368203d2066756e6374696f6e202829207b0a202020202020202020202020652e696e666c617465456e6428293b0a202020202020202020207d3b0a20202020202020207d3b0a2020202020207d29286f293b0a2020202020207661722061203d206f2e7a69703b0a202020202020766172206c203d207b7d3b0a2020202020207661722073203d206e756c6c3b0a202020202020632e70726f746f74797065203d204d08027b0a2020202020202020676574546f7069633a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20746869732e746f7069633b0a20202020202020207d2c0a20202020202020206f6e4576656e743a2066756e6374696f6e20286529207b7d2c0a2020202020207d3b0a2020202020207661722070203d206e756c6c3b0a202020202020612e757365576562576f726b657273203d2066616c73653b0a20202020202064280a20202020202020206e65772063282773697465496e6974272c2066756e6374696f6e20286529207b0a2020202020202020202070203d20652e6572726f7248616e646c65723b0a20202020202020207d290a202020202020293b0a20202020202069662028214f626a6563742e63726561746529207b0a20202020202020204f626a6563742e637265617465203d2066756e6374696f6e20286529207b0a2020202020202020202066756e6374696f6e20742829207b7d0a20202020202020202020742e70726f746f74797065203d20653b0a2020202020202020202072657475726e206e6577207428293b0a20202020202020207d3b0a2020202020207d0a202020202020696620280a2020202020202020276f6e746f75636873746172742720696e2077696e646f77207c7c0a20202020202020206e6176696761746f722e6d6178546f756368506f696e7473203e2030207c7c0a4d080220202020202020206e6176696761746f722e6d734d6178546f756368506f696e7473203e20300a20202020202029207b0a20202020202020202f616e64726f69647c626c61636b62657272797c69656d6f62696c657c697061647c6970686f6e657c69706f647c6f70657261206d696e697c7765626f732f692e74657374280a202020202020202020206e6176696761746f722e757365724167656e740a2020202020202020293b0a2020202020207d0a202020202020696620282f697061647c6970686f6e657c69706f642f692e74657374286e6176696761746f722e757365724167656e742929207b0a202020202020202077696e646f772e4d5353747265616d3b0a2020202020207d0a2020202020206966202821537472696e672e70726f746f747970652e656e64735769746829207b0a2020202020202020537472696e672e70726f746f747970652e656e647357697468203d2066756e6374696f6e2028652c207429207b0a202020202020202020206966202874203d3d3d20766f69642030207c7c2074203e20746869732e6c656e67746829207b0a20202020202020202020202074203d20746869732e6c656e6774683b0a202020202020202020207d0a2020202020202020202072657475726e20746869732e737562737472696e672874202d20652e6c656e6774682c207429203d3d3d20653b0a20202020202020207d3b0a4d08022020202020207d0a2020202020207661722066203d20683b0a2020202020207661722067203d206e756c6c3b0a202020202020766172206d203d202768747470273b0a2020202020207661722062203d2077696e646f772e6c6f636174696f6e2e686f73746e616d652e746f4c6f7765724361736528293b0a2020202020206966202821537472696e672e70726f746f747970652e656e64735769746829207b0a2020202020202020537472696e672e70726f746f747970652e656e647357697468203d2066756e6374696f6e2028652c207429207b0a202020202020202020206966202874203d3d3d20766f69642030207c7c2074203e20746869732e6c656e67746829207b0a20202020202020202020202074203d20746869732e6c656e6774683b0a202020202020202020207d0a2020202020202020202072657475726e20746869732e737562737472696e672874202d20652e6c656e6774682c207429203d3d3d20653b0a20202020202020207d3b0a2020202020207d0a2020202020202866756e6374696f6e202829207b0a202020202020202073776974636820286229207b0a20202020202020202020636173652061746f622827636d46364d484a6c5a43356e6158526f6457497561573827293a0a20202020202020202020202067203d2061746f6228274f6938766448647064474e6f59584e35624856744c6d4e76625339344d08024c7727293b0a2020202020202020202020206d202b3d202773273b0a202020202020202020202020627265616b3b0a20202020202020202020636173652061746f6228276247396a5957786f62334e3027293a0a20202020202020202020202067203d2061746f6228274f6938766247396a5957786f62334e3027293b0a20202020202020207d0a2020202020207d2928293b0a2020202020207661722079203d206e756c6c3b0a2020202020207661722078203d206e756c6c3b0a20202020202064280a20202020202020206e65772063282773697465496e6974272c2066756e6374696f6e20286529207b0a2020202020202020202078203d20652e6c6f616446726f6d55726c3b0a2020202020202020202079203d20652e6572726f7248616e646c65723b0a20202020202020207d290a202020202020293b0a202020202020766172206b203d206e756c6c3b0a2020202020207661722053203d206e756c6c3b0a2020202020207661722043203d206e756c6c3b0a2020202020207661722045203d20303b0a202020202020766172205f203d20446174652e6e6f7728293b0a2020202020207661722042203d2066756e6374696f6e20286529207b0a20202020202020204428293b0a20202020202020206b2e696e6e657248544d4c203d20653b0a20202020202020206b2e6f6e636c69636b203d2066756e6374696f6e202829207b4d08020a2020202020202020202049282d31293b0a20202020202020207d3b0a20202020202020206b2e636c6173734c6973742e616464282773686f7727293b0a20202020202020206b2e636c6173734c6973742e72656d6f766528276869646527293b0a20202020202020205f203d20446174652e6e6f7728293b0a202020202020202072657475726e202b2b453b0a2020202020207d3b0a202020202020766172204d203d20493b0a2020202020207661722054203d2066756e6374696f6e20286529207b0a202020202020202049282d31293b0a2020202020202020432e696e6e657248544d4c203d20653b0a2020202020202020532e636c6173734c6973742e616464282773686f7727293b0a2020202020202020532e636c6173734c6973742e72656d6f766528276869646527293b0a2020202020207d3b0a20202020202064280a20202020202020206e65772063282773697465496e6974272c2066756e6374696f6e202829207b0a202020202020202020207661722065203d20276a73373830305f5f66756c6c73637265656e2d636f6e7461696e6572273b0a202020202020202020207661722074203d20646f63756d656e742e676574456c656d656e74427949642865293b0a20202020202020202020286b203d20646f63756d656e742e637265617465456c656d656e7428276469762729292e6964203d2027736e61636b6261724d0802273b0a202020202020202020206b2e636c6173734c6973742e61646428276d65737361676527293b0a20202020202020202020742e617070656e644368696c64286b293b0a202020202020202020202853203d20646f63756d656e742e637265617465456c656d656e7428276469762729292e6964203d20276572726f726d7367273b0a20202020202020202020532e636c6173734c6973742e61646428276d65737361676527293b0a20202020202020202020532e6f6e636c69636b203d20443b0a20202020202020202020742e617070656e644368696c642853293b0a20202020202020202020766172206e203d20646f63756d656e742e637265617465456c656d656e7428277370616e27293b0a202020202020202020206e2e636c6173734c6973742e6164642827636c6f736562746e27293b0a202020202020202020206e2e6f6e636c69636b203d20443b0a20202020202020202020532e617070656e644368696c64286e293b0a202020202020202020206e2e696e6e657248544d4c203d20272674696d65733b273b0a2020202020202020202043203d20646f63756d656e742e637265617465456c656d656e7428277370616e27293b0a20202020202020202020532e617070656e644368696c642843293b0a20202020202020207d290a202020202020293b0a20202020202064280a20202020202020206e65772063282773694d08027465496e6974272c2066756e6374696f6e20286529207b0a202020202020202020202866756e6374696f6e20286529207b0a2020202020202020202020207661722074203d20652e726f6d4c6973743b0a202020202020202020202020766172206e203d20652e6c6f616446726f6d55726c3b0a2020202020202020202020207661722072203d20652e7374617274456d756c6174696f6e3b0a2020202020202020202020207661722069203d20652e6a73373830303b0a202020202020202020202020766172206f203d2066616c73653b0a20202020202020202020202052280a20202020202020202020202020202773656c6563742d72656d6f74652d66696c65272c0a202020202020202020202020202027646174613a696d6167652f7376672b786d6c3b6261736536342c5044393462577767646d567963326c76626a30694d5334774969426c626d4e765a476c755a7a3069565652474c546769507a344e436a77685245394456466c515253427a646d63675546564354456c44494349744c7939584d304d764c30525552434254566b63674d5334784c79394654694967496d6830644841364c79393364336375647a4d7562334a6e4c3064795958426f61574e7a4c314e57527938784c6a4576524652454c334e325a7a45784c6d52305a43492b44516f3863335a6e494868746247357a50534a6f644852774f693876643364334c4d08026e637a4c6d39795a7938794d4441774c334e325a79496765473173626e4d3665477870626d7339496d6830644841364c79393364336375647a4d7562334a6e4c7a45354f546b7665477870626d736949485a6c636e4e7062323439496a45754d534967494864705a48526f505349794e434967614756705a326830505349794e434967646d6c6c64304a76654430694d4341774944493049444930496a344e43694167494478775958526f49475a706247773949694e6d5a6d5a6d5a6d596949475139496b30784e7977784d3077784d6977784f4577334c44457a53444577566a6c494d5452574d544e4e4d546b754d7a55734d5441754d444e444d5467754e6a63734e6934314f5341784e5334324e437730494445794c4452444f5334784d537730494459754e6977314c6a5930494455754d7a55734f4334774d304d794c6a4d304c4467754d7a59674d4377784d433435494441734d5452424e697732494441674d437777494459734d6a42494d546c424e537731494441674d437777494449304c444531517a49304c4445794c6a4d32494449784c6a6b314c4445774c6a4979494445354c6a4d314c4445774c6a417a576949674c7a344e436a777663335a6e50673d3d272c0a20202020202020202020202020202753656c6563742052656d6f74652046696c65272c0a2020202020202020202020202020747275652c0a2020202020204d0802202020202020202066756e6374696f6e202829207b0a2020202020202020202020202020202069662028216f29207b0a2020202020202020202020202020202020206f203d20747275653b0a2020202020202020202020202020202020207661722065203d20692e436f6e74726f6c734261722e7061757365427574746f6e3b0a2020202020202020202020202020202020207661722074203d20652e67657456616c756528293b0a20202020202020202020202020202020202069662028217429207b0a2020202020202020202020202020202020202020652e73657456616c75652874727565293b0a2020202020202020202020202020202020202020652e6f6e436c69636b28293b0a2020202020202020202020202020202020207d0a20202020202020202020202020202020202073657454696d656f75742866756e6374696f6e202829207b0a20202020202020202020202020202020202020207661722072203d2070726f6d7074280a2020202020202020202020202020202020202020202027456e746572207468652055524c206f6620612072656d6f7465204361727472696467652066696c65206f7220436172747269646765206c697374270a2020202020202020202020202020202020202020293b0a2020202020202020202020202020202020202020696620287229207b0a2020202020202020202020202020202020204d0802202020207661722069203d20722e7472696d28293b0a2020202020202020202020202020202020202020202069662028692e6c656e677468203e203029207b0a2020202020202020202020202020202020202020202020206e2869293b0a202020202020202020202020202020202020202020207d0a20202020202020202020202020202020202020207d0a202020202020202020202020202020202020202069662028217429207b0a20202020202020202020202020202020202020202020652e73657456616c75652866616c7365293b0a20202020202020202020202020202020202020202020652e6f6e436c69636b28293b0a20202020202020202020202020202020202020207d0a20202020202020202020202020202020202020206f203d2066616c73653b0a2020202020202020202020202020202020207d2c20323030293b0a202020202020202020202020202020207d0a20202020202020202020202020207d0a202020202020202020202020293b0a2020202020202020202020207661722061203d2052280a20202020202020202020202020202773656c6563742d6c6f63616c2d66696c65272c0a202020202020202020202020202027646174613a696d6167652f7376672b786d6c3b6261736536342c5044393462577767646d567963326c76626a30694d5334774969426c626d4e765a476c755a7a3069565652474c544d08026769507a344e436a77685245394456466c515253427a646d63675546564354456c44494349744c7939584d304d764c30525552434254566b63674d5334784c79394654694967496d6830644841364c79393364336375647a4d7562334a6e4c3064795958426f61574e7a4c314e57527938784c6a4576524652454c334e325a7a45784c6d52305a43492b44516f3863335a6e494868746247357a50534a6f644852774f693876643364334c6e637a4c6d39795a7938794d4441774c334e325a79496765473173626e4d3665477870626d7339496d6830644841364c79393364336375647a4d7562334a6e4c7a45354f546b7665477870626d736949485a6c636e4e7062323439496a45754d534967494864705a48526f505349794e434967614756705a326830505349794e434967646d6c6c64304a76654430694d4341774944493049444930496a344e43694167494478775958526f49475a706247773949694e6d5a6d5a6d5a6d596949475139496b30784f5377794d456730517a49754f446b734d6a41674d6977784f533478494449734d5468574e6b4d794c4451754f446b674d6934344f537730494451734e4567784d4577784d69773253444535515449734d694177494441734d5341794d53773453444978544451734f4659784f4577324c6a45304c4445775344497a4c6a4978544449774c6a6b7a4c4445344c6a56444d6a41754e794d080277784f53347a4e7941784f5334354d6977794d4341784f5377794d466f694943382b44516f384c334e325a7a343d272c0a20202020202020202020202020202753656c656374204c6f63616c2046696c65272c0a202020202020202020202020202066616c73652c0a20202020202020202020202020206e756c6c0a202020202020202020202020292e6c6162656c3b0a202020202020202020202020766172206c203d20646f63756d656e742e637265617465456c656d656e742827696e70757427293b0a202020202020202020202020612e636c6173734e616d65203d2027636f6e74726f6c732d627574746f6e5f5f75706c6f6164273b0a202020202020202020202020612e617070656e644368696c64286c293b0a2020202020202020202020207661722073203d2066756e6374696f6e202829207b0a20202020202020202020202020206c2e76616c7565203d206e756c6c3b0a2020202020202020202020207d3b0a202020202020202020202020612e6f6e636c69636b203d20733b0a2020202020202020202020206c2e6f6e636c69636b203d20733b0a2020202020202020202020206c2e736574417474726962757465282774797065272c202766696c6527293b0a2020202020202020202020206c2e7365744174747269627574652827616363657074272c20272e6137382c202e62696e2c202e7a69702c202e6a736f6e274d0802293b0a2020202020202020202020206c2e6164644576656e744c697374656e6572280a2020202020202020202020202020276368616e6765272c0a202020202020202020202020202066756e6374696f6e202829207b0a202020202020202020202020202020207661722065203d20746869732e66696c65733b0a20202020202020202020202020202020666f722028766172206e203d20303b206e203c20652e6c656e6774683b206e2b2b29207b0a2020202020202020202020202020202020207661722069203d20655b6e5d3b0a2020202020202020202020202020202020206966202821742e6c6f61644c69737446726f6d46696c6528692929207b0a2020202020202020202020202020202020202020722869293b0a2020202020202020202020202020202020207d0a202020202020202020202020202020202020627265616b3b0a202020202020202020202020202020207d0a20202020202020202020202020207d2c0a202020202020202020202020202066616c73650a202020202020202020202020293b0a202020202020202020207d292865293b0a20202020202020207d290a202020202020293b0a2020202020207661722047203d206e756c6c3b0a202020202020766172204c203d206e756c6c3b0a2020202020207661722051203d206e756c6c3b0a20202020202064280a20202020202020206e65772063282773694d08027465496e6974272c2066756e6374696f6e20286529207b0a2020202020202020202066756e6374696f6e206e286529207b0a202020202020202020202020652e70726576656e7444656661756c7428293b0a202020202020202020207d0a2020202020202020202047203d20652e6c6f616446726f6d55726c3b0a202020202020202020204c203d20652e726f6d4c6973743b0a2020202020202020202051203d20652e7374617274456d756c6174696f6e3b0a202020202020202020207661722074203d20646f63756d656e742e626f64793b0a20202020202020202020742e6164644576656e744c697374656e6572282764726f70272c207a293b0a20202020202020202020742e6164644576656e744c697374656e657228276472616764726f70272c207a293b0a20202020202020202020742e6164644576656e744c697374656e6572282764726167656e746572272c206e293b0a20202020202020202020742e6164644576656e744c697374656e65722827647261676f766572272c206e293b0a20202020202020207d290a202020202020293b0a2020202020207661722046203d207b7d3b0a202020202020766172204e203d202766756c6c73637265656e273b0a2020202020207661722055203d206e756c6c3b0a202020202020766172204b203d206e756c6c3b0a2020202020207661722059203d206e756c6c3b0a202020204d08022020766172204f203d206e756c6c3b0a202020202020766172206a203d206e756c6c3b0a2020202020207661722050203d206e756c6c3b0a2020202020207661722048203d206e756c6c3b0a2020202020207661722057203d2066616c73653b0a20202020202064280a20202020202020206e65772063282773697465496e6974272c2066756e6374696f6e20286529207b0a2020202020202020202055203d20652e6a73373830303b0a202020202020202020204b203d20552e4b6579626f6172643b0a2020202020202020202059203d20552e566964656f3b0a202020202020202020204f203d20552e526567696f6e3b0a2020202020202020202048203d20552e4361727472696467653b0a2020202020202020202050203d20652e4869676853636f72653b0a202020202020202020206a203d20552e4d61696e3b0a202020202020202020202866756e6374696f6e202829207b0a202020202020202020202020747279207b0a20202020202020202020202020206c6f63616c53746f726167652e7365744974656d282774657374272c20277465737427293b0a20202020202020202020202020206c6f63616c53746f726167652e72656d6f76654974656d28277465737427293b0a202020202020202020202020202057203d20747275653b0a2020202020202020202020202020636f6e736f6c652e6c6f6728274c6f63616c20734d0802746f7261676520697320617661696c61626c652e27293b0a2020202020202020202020207d20636174636820286529207b0a2020202020202020202020202020636f6e736f6c652e6c6f6728274c6f63616c2073746f72616765206973206e6f7420617661696c61626c652e27293b0a2020202020202020202020207d0a202020202020202020207d2928293b0a20202020202020207d290a202020202020293b0a2020202020207661722058203d20663b0a2020202020207661722024203d20323034383b0a202020202020766172206565203d206e756c6c3b0a202020202020766172207465203d206e756c6c3b0a202020202020766172206e65203d2066616c73653b0a202020202020766172207265203d206e756c6c3b0a202020202020766172206965203d206e756c6c3b0a202020202020766172206f65203d206e756c6c3b0a202020202020766172206165203d20303b0a202020202020766172206c65203d206e756c6c3b0a202020202020766172207365203d206e756c6c3b0a202020202020766172206365203d206e756c6c3b0a202020202020766172206465203d20747275653b0a202020202020766172207565203d2064653b0a202020202020766172207065203d20747275653b0a202020202020766172206865203d20747275653b0a202020202020766172206665203d206e65772041727261792824293b0a20204d08022020202064280a20202020202020206e65772063282773697465496e6974272c2066756e6374696f6e20286529207b0a202020202020202020206b652865293b0a20202020202020207d290a202020202020293b0a202020202020766172204765203d20683b0a2020202020204c652e70726f746f74797065203d207b0a2020202020202020637265617465456c656d656e743a2066756e6374696f6e202829207b0a20202020202020202020746869732e656c203d20746869732e646f437265617465456c656d656e7428293b0a202020202020202020207661722065203d20746869732e676574436c61737328293b0a20202020202020202020696620286529207b0a202020202020202020202020746869732e656c2e636c6173734e616d65203d20653b0a202020202020202020207d0a2020202020202020202072657475726e20746869732e656c3b0a20202020202020207d2c0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e206e756c6c3b0a20202020202020207d2c0a2020202020202020676574456c656d656e743a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20746869732e656c3b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b4d08020a2020202020202020202072657475726e206e756c6c3b0a20202020202020207d2c0a2020202020207d3b0a20202020202051652e70726f746f74797065203d204f626a6563742e637265617465284c652e70726f746f74797065293b0a20202020202047652851652e70726f746f747970652c207b0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20276a73373830305f5f636f6e74726f6c732d627574746f6e273b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20646f63756d656e742e637265617465456c656d656e742827627574746f6e27293b0a202020202020202020207661722074203d20746869733b0a20202020202020202020652e6f6e636c69636b203d2066756e6374696f6e20286529207b0a202020202020202020202020742e6f6e436c69636b2865293b0a202020202020202020207d3b0a20202020202020202020652e6f6e6d6f757365646f776e203d2066756e6374696f6e20286529207b0a202020202020202020202020742e6f6e446f776e2865293b0a202020202020202020207d3b0a20202020202020202020652e6f6e6d6f7573657570203d2066756e6374696f6e20286529207b0a20202020204d080220202020202020742e6f6e55702865293b0a202020202020202020207d3b0a20202020202020202020766172206e203d20646f63756d656e742e637265617465546578744e6f646528746869732e74657874293b0a20202020202020202020652e617070656e644368696c64286e293b0a2020202020202020202069662028746869732e7469746c6529207b0a202020202020202020202020652e73657441747472696275746528277469746c65272c20746869732e7469746c65293b0a202020202020202020207d0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a20202020202020206f6e436c69636b3a2066756e6374696f6e20286529207b7d2c0a20202020202020206f6e446f776e3a2066756e6374696f6e20286529207b7d2c0a20202020202020206f6e55703a2066756e6374696f6e20286529207b7d2c0a2020202020207d293b0a2020202020207a652e70726f746f74797065203d204f626a6563742e637265617465284c652e70726f746f74797065293b0a2020202020204765287a652e70726f746f747970652c207b0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20276a73373830305f5f636f6e74726f6c732d737769746368273b0a20202020202020207d2c0a2020202020202020646f437265617465454d08026c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20646f63756d656e742e637265617465456c656d656e7428276c6162656c27293b0a20202020202020202020652e73657441747472696275746528277469746c65272c20746869732e7469746c65293b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e742827696e70757427293b0a20202020202020202020746869732e6362203d20743b0a20202020202020202020742e736574417474726962757465282774797065272c2027636865636b626f7827293b0a20202020202020202020766172206e203d20746869733b0a20202020202020202020742e6f6e636c69636b203d2066756e6374696f6e20286529207b0a2020202020202020202020206e2e6f6e436c69636b2865293b0a202020202020202020207d3b0a20202020202020202020652e617070656e644368696c642874293b0a202020202020202020207661722072203d20646f63756d656e742e637265617465456c656d656e7428277370616e27293b0a20202020202020202020722e636c6173734e616d65203d20746869732e676574436c6173732829202b20272d736c69646572273b0a20202020202020202020652e617070656e644368696c642872293b0a2020202020202020202072657475726e20653b0a204d0802202020202020207d2c0a202020202020202073657456616c7565286529207b0a20202020202020202020746869732e63622e636865636b6564203d20653b0a20202020202020207d2c0a202020202020202067657456616c75652829207b0a2020202020202020202072657475726e20746869732e63622e636865636b65643b0a20202020202020207d2c0a20202020202020206f6e436c69636b3a2066756e6374696f6e20286529207b7d2c0a2020202020207d293b0a202020202020766172204665203d204c653b0a202020202020766172204e65203d2051653b0a202020202020766172205565203d207a653b0a202020202020766172204b65203d20663b0a202020202020766172205965203d206e756c6c3b0a2020202020204f652e70726f746f74797065203d204f626a6563742e637265617465284e652e70726f746f74797065293b0a2020202020204b65284f652e70726f746f747970652c207b0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20276469616c6f672d627574746f6e273b0a20202020202020207d2c0a2020202020207d293b0a2020202020206a652e70726f746f74797065203d204f626a6563742e6372656174652855652e70726f746f74797065293b0a2020202020204b65286a652e70726f746f747970652c207b0a2020204d08022020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20276469616c6f672d737769746368273b0a20202020202020207d2c0a2020202020207d293b0a20202020202050652e70726f746f74797065203d204f626a6563742e6372656174652846652e70726f746f74797065293b0a2020202020204b652850652e70726f746f747970652c207b0a202020202020202073656c6563743a206e756c6c2c0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20276469616c6f672d73656c656374273b0a20202020202020207d2c0a202020202020202073657456616c75653a2066756e6374696f6e20286529207b0a20202020202020202020746869732e73656c6563742e76616c7565203d20653b0a20202020202020207d2c0a202020202020202067657456616c75653a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20746869732e73656c6563742e76616c75653b0a20202020202020207d2c0a202020202020202073657457696474683a2066756e6374696f6e20286529207b0a20202020202020202020746869732e7769647468203d20653b0a2020202020202020202069662028746869732e64697629207b0a202020202020202020202020746869732e6469762e4d08027374796c652e7769647468203d20746869732e7769647468202b2027656d273b0a202020202020202020207d0a20202020202020207d2c0a20202020202020206f6e4368616e67653a2066756e6374696f6e202829207b7d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20746869733b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020746869732e646976203d20743b0a2020202020202020202069662028746869732e776964746829207b0a202020202020202020202020746869732e736574576964746828746869732e7769647468293b0a202020202020202020207d0a20202020202020202020766172206e203d20646f63756d656e742e637265617465456c656d656e74282773656c65637427293b0a202020202020202020206e2e6f6e6368616e6765203d2066756e6374696f6e202829207b0a202020202020202020202020652e6f6e4368616e676528293b0a202020202020202020207d3b0a20202020202020202020742e617070656e644368696c64286e293b0a20202020202020202020746869732e73656c656374203d206e3b0a202020202020202020207661722072203d206e756c6c3b0a20202020202020204d08022020666f722028766172206920696e20746869732e6f70747329207b0a20202020202020202020202069662028692e7374617274735769746828274f707447726f7570272929207b0a20202020202020202020202020202872203d20646f63756d656e742e637265617465456c656d656e7428276f707467726f75702729292e736574417474726962757465280a20202020202020202020202020202020276c6162656c272c0a20202020202020202020202020202020746869732e6f7074735b695d0a2020202020202020202020202020293b0a2020202020202020202020202020746869732e73656c6563742e6164642872293b0a2020202020202020202020207d20656c7365207b0a2020202020202020202020202020766172206f203d20646f63756d656e742e637265617465456c656d656e7428276f7074696f6e27293b0a20202020202020202020202020206f2e74657874203d20693b0a20202020202020202020202020206f2e76616c7565203d20746869732e6f7074735b695d3b0a20202020202020202020202020206966202872203d3d206e756c6c29207b0a20202020202020202020202020202020746869732e73656c6563742e616464286f293b0a20202020202020202020202020207d20656c7365207b0a20202020202020202020202020202020722e617070656e644368696c64286f293b0a20202020202020204d08022020202020207d0a2020202020202020202020207d0a202020202020202020207d0a2020202020202020202072657475726e20743b0a20202020202020207d2c0a2020202020207d293b0a20202020202048652e70726f746f74797065203d204f626a6563742e6372656174652846652e70726f746f74797065293b0a2020202020204b652848652e70726f746f747970652c207b0a20202020202020206f6e53686f773a2066756e6374696f6e202829207b7d2c0a20202020202020206f6e486964653a2066756e6374696f6e202829207b7d2c0a20202020202020206f6e4f6b3a2066756e6374696f6e202829207b7d2c0a20202020202020206f6e44656661756c74733a2066756e6374696f6e202829207b7d2c0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20276d6f64616c273b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020746869732e6d6f64616c456c203d20653b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a2020202020204d080220202020746869732e636f6e74656e74456c203d20743b0a20202020202020202020742e636c6173734e616d65203d20276d6f64616c2d636f6e74656e74273b0a20202020202020202020652e617070656e644368696c642874293b0a20202020202020202020766172206e203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020746869732e686561646572456c203d206e3b0a202020202020202020206e2e636c6173734e616d65203d20276d6f64616c2d686561646572273b0a202020202020202020206e2e617070656e644368696c6428646f63756d656e742e637265617465546578744e6f646528746869732e7469746c6529293b0a20202020202020202020742e617070656e644368696c64286e293b0a202020202020202020207661722072203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020746869732e626f6479456c203d20723b0a20202020202020202020722e636c6173734e616d65203d20276d6f64616c2d626f6479273b0a20202020202020202020742e617070656e644368696c642872293b0a20202020202020202020746869732e616464426f6479436f6e74656e742872293b0a202020202020202020207661722069203d20646f63756d656e742e637265617465456c656d656e742827644d0802697627293b0a20202020202020202020692e7374796c652e636c656172203d2027626f7468273b0a20202020202020202020742e617070656e644368696c642869293b0a20202020202020202020766172206f203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020746869732e666f6f746572456c203d206f3b0a202020202020202020206f2e636c6173734e616d65203d20276d6f64616c2d666f6f746572273b0a20202020202020202020742e617070656e644368696c64286f293b0a20202020202020202020746869732e616464466f6f746572436f6e74656e74286f293b0a202020202020202020202869203d20646f63756d656e742e637265617465456c656d656e7428276469762729292e7374796c652e636c656172203d2027626f7468273b0a202020202020202020206f2e617070656e644368696c642869293b0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a2020202020202020616464466f6f746572436f6e74656e743a2066756e6374696f6e20286529207b0a202020202020202020207661722074203d20746869733b0a20202020202020202020766172206e203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a202020202020202020206e2e7374796c652e666c657847726f77203d204d0802313b0a2020202020202020202069662028746869732e6973526561644f6e6c7929207b0a2020202020202020202020207661722072203d206e6577204f652827436c6f736527293b0a202020202020202020202020746869732e63616e63656c203d20723b0a202020202020202020202020652e617070656e644368696c64286e293b0a202020202020202020202020652e617070656e644368696c6428722e637265617465456c656d656e742829293b0a202020202020202020207d20656c7365207b0a2020202020202020202020207661722069203d206e6577204f6528274f4b27293b0a202020202020202020202020746869732e6f6b203d20693b0a20202020202020202020202072203d206e6577204f65282743616e63656c27293b0a202020202020202020202020746869732e63616e63656c203d20723b0a202020202020202020202020766172206f203d206e6577204f65282744656661756c7473272c2027526573657420746f2044656661756c747327293b0a202020202020202020202020746869732e64656661756c7473203d206f3b0a202020202020202020202020692e6f6e436c69636b203d2066756e6374696f6e202829207b0a2020202020202020202020202020742e6f6e4f6b28293b0a2020202020202020202020202020742e6869646528293b0a2020202020202020202020207d3b0a20202020202020204d0802202020206f2e6f6e436c69636b203d2066756e6374696f6e202829207b0a2020202020202020202020202020742e6f6e44656661756c747328293b0a2020202020202020202020207d3b0a2020202020202020202020206e2e617070656e644368696c64286f2e637265617465456c656d656e742829293b0a202020202020202020202020652e617070656e644368696c64286e293b0a202020202020202020202020652e617070656e644368696c6428692e637265617465456c656d656e742829293b0a202020202020202020202020652e617070656e644368696c6428722e637265617465456c656d656e742829293b0a202020202020202020207d0a20202020202020202020722e6f6e436c69636b203d2066756e6374696f6e202829207b0a202020202020202020202020742e6869646528293b0a202020202020202020207d3b0a20202020202020207d2c0a2020202020202020616464426f6479436f6e74656e743a2066756e6374696f6e20286529207b7d2c0a202020202020202073686f773a2066756e6374696f6e202829207b0a202020202020202020207661722065203d2059652e436f6e74726f6c734261722e7061757365427574746f6e3b0a20202020202020202020746869732e7061757365427574746f6e203d20653b0a20202020202020202020746869732e706175736564203d20652e67657456616c756528294d08023b0a202020202020202020206966202821746869732e70617573656429207b0a202020202020202020202020652e73657456616c75652874727565293b0a202020202020202020202020652e6f6e436c69636b28293b0a202020202020202020207d0a20202020202020202020746869732e6f6e53686f7728293b0a2020202020202020202077696e646f772e6164644576656e744c697374656e65722827726573697a65272c20746869732e77696e646f77526573697a6546756e63293b0a20202020202020202020746869732e6d6f64616c456c2e7374796c652e646973706c6179203d2027626c6f636b273b0a20202020202020202020746869732e77696e646f77526573697a6546756e6328293b0a20202020202020207d2c0a2020202020202020686964653a2066756e6374696f6e202829207b0a2020202020202020202077696e646f772e72656d6f76654576656e744c697374656e65722827726573697a65272c20746869732e77696e646f77526573697a6546756e63293b0a20202020202020202020746869732e6d6f64616c456c2e7374796c652e646973706c6179203d20276e6f6e65273b0a20202020202020202020746869732e6f6e4869646528293b0a202020202020202020206966202821746869732e70617573656429207b0a202020202020202020202020746869732e7061757365427574746f6e2e736574564d0802616c75652866616c7365293b0a202020202020202020202020746869732e7061757365427574746f6e2e6f6e436c69636b28293b0a202020202020202020207d0a20202020202020207d2c0a2020202020207d293b0a20202020202057652e70726f746f74797065203d204f626a6563742e6372656174652846652e70726f746f74797065293b0a2020202020204b652857652e70726f746f747970652c207b0a20202020202020206f6e546162436c69636b3a2066756e6374696f6e20286529207b0a202020202020202020207661722074203d20746869733b0a20202020202020202020666f722028766172206e203d20303b206e203c20746869732e746162732e6c656e6774683b206e2b2b29207b0a2020202020202020202020207661722072203d206e3b0a2020202020202020202020202866756e6374696f6e202829207b0a20202020202020202020202020207661722065203d20742e746162735b725d3b0a2020202020202020202020202020766172206e203d20652e676574427574746f6e456c656d656e7428293b0a2020202020202020202020202020696620286e2e636c6173734e616d652e696e6465784f66282720616374697665272920213d202d3129207b0a20202020202020202020202020202020652e6f6e5461624869646528293b0a20202020202020202020202020207d0a202020202020202020202020204d0802206e2e636c6173734e616d65203d206e2e636c6173734e616d652e7265706c616365282720616374697665272c202727293b0a2020202020202020202020202020652e676574456c656d656e7428292e7374796c652e646973706c6179203d20276e6f6e65273b0a2020202020202020202020207d2928293b0a202020202020202020207d0a20202020202020202020652e6f6e54616253686f7728293b0a20202020202020202020652e676574427574746f6e456c656d656e7428292e636c6173734e616d65202b3d202720616374697665273b0a20202020202020202020652e676574456c656d656e7428292e7374796c652e646973706c6179203d2027626c6f636b273b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20746869733b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020742e636c6173734e616d65203d2027746162736574273b0a20202020202020202020766172206e203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a202020202020202020206e2e636c6173734e616d65203d2027746162273b0a20202020202020202020742e617070656e64434d080268696c64286e293b0a20202020202020202020666f7220287661722072203d20303b2072203c20746869732e746162732e6c656e6774683b20722b2b29207b0a2020202020202020202020207661722069203d20723b0a2020202020202020202020202866756e6374696f6e202829207b0a20202020202020202020202020207661722074203d20652e746162735b695d3b0a20202020202020202020202020207661722072203d20742e637265617465427574746f6e456c656d656e7428293b0a20202020202020202020202020206e2e617070656e644368696c642872293b0a2020202020202020202020202020722e6f6e636c69636b203d2066756e6374696f6e202829207b0a20202020202020202020202020202020652e6f6e546162436c69636b2874293b0a20202020202020202020202020207d3b0a2020202020202020202020207d2928293b0a202020202020202020207d0a20202020202020202020666f72202872203d20303b2072203c20746869732e746162732e6c656e6774683b20722b2b29207b0a202020202020202020202020742e617070656e644368696c6428746869732e746162735b725d2e637265617465456c656d656e742829293b0a202020202020202020207d0a20202020202020202020766172206f203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020204d080220202020206f2e7374796c652e636c656172203d2027626f7468273b0a20202020202020202020742e617070656e644368696c64286f293b0a2020202020202020202069662028746869732e64656661756c7454616229207b0a202020202020202020202020746869732e6f6e546162436c69636b28746869732e64656661756c74546162293b0a202020202020202020207d0a2020202020202020202072657475726e20743b0a20202020202020207d2c0a20202020202020206164645461623a2066756e6374696f6e2028652c207429207b0a20202020202020202020746869732e746162732e707573682865293b0a20202020202020202020696620287429207b0a202020202020202020202020746869732e64656661756c74546162203d20653b0a202020202020202020207d0a20202020202020207d2c0a2020202020207d293b0a20202020202056652e70726f746f74797065203d204f626a6563742e6372656174652846652e70726f746f74797065293b0a2020202020204b652856652e70726f746f747970652c207b0a20202020202020206f6e54616253686f773a2066756e6374696f6e202829207b7d2c0a20202020202020206f6e546162486964653a2066756e6374696f6e202829207b7d2c0a20202020202020206f6e53686f773a2066756e6374696f6e202829207b7d2c0a20202020202020206f6e486964653a204d080266756e6374696f6e202829207b7d2c0a20202020202020206f6e4f6b3a2066756e6374696f6e202829207b7d2c0a20202020202020206f6e44656661756c74733a2066756e6374696f6e202829207b7d2c0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e2027746162636f6e74656e74273b0a20202020202020207d2c0a2020202020202020676574427574746f6e456c656d656e743a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20746869732e627574746f6e456c3b0a20202020202020207d2c0a2020202020202020637265617465427574746f6e456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20646f63756d656e742e637265617465456c656d656e742827627574746f6e27293b0a20202020202020202020746869732e627574746f6e456c203d20653b0a20202020202020202020652e617070656e644368696c6428646f63756d656e742e637265617465546578744e6f646528746869732e6765745469746c65282929293b0a20202020202020202020652e636c6173734e616d65203d20277461626c696e6b73273b0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a20202020202020206765745469746c653a2066756e63744d0802696f6e202829207b0a2020202020202020202072657475726e20746869732e7469746c653b0a20202020202020207d2c0a2020202020202020637265617465546162436f6e74656e743a2066756e6374696f6e20286529207b7d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020746869732e637265617465546162436f6e74656e742865293b0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a2020202020207d293b0a20202020202071652e70726f746f74797065203d204f626a6563742e6372656174652848652e70726f746f74797065293b0a2020202020204b652871652e70726f746f747970652c207b0a20202020202020206765745461625365743a2066756e6374696f6e202829207b7d2c0a20202020202020206f6e53686f773a2066756e6374696f6e202829207b0a2020202020202020202048652e70726f746f747970652e6f6e53686f772e63616c6c2874686973293b0a202020202020202020207661722065203d20746869732e7461627365742e746162733b0a20202020202020202020666f7220287661722074203d20303b2074203c20652e6c656e6774683b20742b2b29204d08027b0a202020202020202020202020655b745d2e6f6e53686f7728293b0a202020202020202020207d0a20202020202020207d2c0a20202020202020206f6e486964653a2066756e6374696f6e202829207b0a2020202020202020202048652e70726f746f747970652e6f6e486964652e63616c6c2874686973293b0a202020202020202020207661722065203d20746869732e7461627365742e746162733b0a20202020202020202020666f7220287661722074203d20303b2074203c20652e6c656e6774683b20742b2b29207b0a202020202020202020202020655b745d2e6f6e4869646528293b0a202020202020202020207d0a20202020202020207d2c0a20202020202020206f6e4f6b3a2066756e6374696f6e202829207b0a2020202020202020202048652e70726f746f747970652e6f6e4f6b2e63616c6c2874686973293b0a202020202020202020207661722065203d20746869732e7461627365742e746162733b0a20202020202020202020666f7220287661722074203d20303b2074203c20652e6c656e6774683b20742b2b29207b0a202020202020202020202020655b745d2e6f6e4f6b28293b0a202020202020202020207d0a20202020202020207d2c0a20202020202020206f6e44656661756c74733a2066756e6374696f6e202829207b0a2020202020202020202048652e70726f746f747970652e6f6e44656661754d08026c74732e63616c6c2874686973293b0a202020202020202020207661722065203d20746869732e7461627365742e746162733b0a20202020202020202020666f7220287661722074203d20303b2074203c20652e6c656e6774683b20742b2b29207b0a202020202020202020202020655b745d2e6f6e44656661756c747328293b0a202020202020202020207d0a20202020202020207d2c0a2020202020202020616464426f6479436f6e74656e743a2066756e6374696f6e20286529207b0a2020202020202020202048652e70726f746f747970652e616464426f6479436f6e74656e742e63616c6c2874686973293b0a20202020202020202020652e617070656e644368696c6428746869732e7461627365742e637265617465456c656d656e742829293b0a20202020202020207d2c0a2020202020207d293b0a2020202020204a652e70726f746f74797065203d204f626a6563742e6372656174652846652e70726f746f74797065293b0a2020202020204b65284a652e70726f746f747970652c207b0a202020202020202073657456697369626c65286529207b0a20202020202020202020746869732e656c2e7374796c652e646973706c6179203d2065203f2027626c6f636b27203a20276e6f6e65273b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829204d08027b0a2020202020202020202072657475726e20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020207d2c0a2020202020207d293b0a2020202020205a652e70726f746f74797065203d204f626a6563742e637265617465284a652e70726f746f74797065293b0a2020202020204b65285a652e70726f746f747970652c207b0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20276469616c6f672d63656c6c2d6c6162656c273b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d204a652e70726f746f747970652e646f437265617465456c656d656e742e63616c6c2874686973293b0a2020202020202020202069662028746869732e6c6162656c29207b0a202020202020202020202020652e617070656e644368696c6428646f63756d656e742e637265617465546578744e6f646528746869732e6c6162656c29293b0a202020202020202020207d0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a2020202020207d293b0a20202020202058652e70726f746f74797065203d204f626a6563742e637265617465284a652e70726f746f74797065293b0a4d08022020202020204b652858652e70726f746f747970652c207b0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20276469616c6f672d63656c6c2d636f6e74656e74273b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d204a652e70726f746f747970652e646f437265617465456c656d656e742e63616c6c2874686973293b0a2020202020202020202069662028747970656f6620746869732e636f6e74656e74203d3d2027737472696e672729207b0a202020202020202020202020652e617070656e644368696c6428646f63756d656e742e637265617465546578744e6f646528746869732e636f6e74656e7429293b0a202020202020202020207d20656c7365207b0a202020202020202020202020652e617070656e644368696c6428746869732e636f6e74656e742e637265617465456c656d656e742829293b0a202020202020202020207d0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a2020202020207d293b0a20202020202024652e70726f746f74797065203d204f626a6563742e6372656174652846652e70726f746f74797065293b0a2020202020204b652824652e70726f746f7479704d0802652c207b0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20276469616c6f672d67726964273b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020666f7220287661722074203d20303b2074203c20746869732e63656c6c732e6c656e6774683b20742b2b29207b0a202020202020202020202020652e617070656e644368696c6428746869732e63656c6c735b745d2e637265617465456c656d656e742829293b0a202020202020202020207d0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a202020202020202061646443656c6c3a2066756e6374696f6e20286529207b0a20202020202020202020746869732e63656c6c732e707573682865293b0a20202020202020207d2c0a2020202020207d293b0a20202020202064280a20202020202020206e65772063282773697465496e6974272c2066756e6374696f6e20286529207b0a202020202020202020205965203d20652e6a73373830303b0a20202020202020207d290a202020202020293b0a202020202020766172206574203d2056654d08023b0a202020202020766172207474203d20663b0a202020202020766172206e74203d206e756c6c3b0a20202020202072742e70726f746f74797065203d204f626a6563742e6372656174652865742e70726f746f74797065293b0a20202020202074742872742e70726f746f747970652c207b0a202020202020202068696465763a2066756e6374696f6e202829207b0a20202020202020202020746869732e696672616d652e7365744174747269627574652827737263272c202727293b0a20202020202020202020746869732e6c6f676f456c2e7374796c652e646973706c6179203d2027696e6c696e652d626c6f636b273b0a20202020202020202020746869732e76456c2e7374796c652e646973706c6179203d20276e6f6e65273b0a20202020202020202020746869732e746f702e7374796c652e6f706163697479203d202730273b0a20202020202020202020746869732e746f702e7374796c652e646973706c6179203d2027696e6c696e652d626c6f636b273b0a2020202020202020202069662028746869732e74696d6572496420213d206e756c6c29207b0a202020202020202020202020636c65617254696d656f757428746869732e74696d65724964293b0a202020202020202020202020746869732e74696d65724964203d206e756c6c3b0a202020202020202020207d0a20202020202020207d2c0a2020202020204d0802202073686f77763a2066756e6374696f6e202829207b0a20202020202020202020746869732e706c61796564203d20747275653b0a20202020202020202020746869732e696672616d652e7365744174747269627574652827737263272c2061746f62286e7429293b0a20202020202020202020746869732e746f702e7374796c652e637572736f72203d20276175746f273b0a20202020202020202020746869732e746f702e7374796c652e6f706163697479203d20272e34273b0a20202020202020202020746869732e746f702e72656d6f76654576656e744c697374656e65722827636c69636b272c20746869732e66436c69636b293b0a202020202020202020207661722065203d20746869733b0a20202020202020202020746869732e74696d65724964203d2073657454696d656f75742866756e6374696f6e202829207b0a202020202020202020202020652e746f702e7374796c652e646973706c6179203d20276e6f6e65273b0a202020202020202020202020652e6c6f676f456c2e7374796c652e646973706c6179203d20276e6f6e65273b0a202020202020202020202020652e76456c2e7374796c652e646973706c6179203d2027696e6c696e652d626c6f636b273b0a202020202020202020207d2c20316534293b0a20202020202020207d2c0a20202020202020206f6e53686f773a2066756e6374696f6e202829204d08027b0a20202020202020202020746869732e686964657628293b0a20202020202020202020746869732e706c61796564203d2066616c73653b0a20202020202020202020746869732e746f702e7374796c652e637572736f72203d2027706f696e746572273b0a20202020202020202020746869732e746f702e6164644576656e744c697374656e65722827636c69636b272c20746869732e66436c69636b293b0a202020202020202020206e74203d0a202020202020202020202020276148523063484d364c793977624746355a584975646d6c745a573875593239744c335a705a4756764c7a51784d5467354d5451314e7a39686458527663477868655430784a6d4631644739775958567a5a5430774a6d78766233413964484a315a535a6959574e725a334a766457356b50575a6862484e6c4a6d31316447566b5054453d273b0a20202020202020207d2c0a20202020202020206f6e486964653a2066756e6374696f6e202829207b0a20202020202020202020746869732e746f702e72656d6f76654576656e744c697374656e65722827636c69636b272c20746869732e66436c69636b293b0a20202020202020202020746869732e686964657628293b0a20202020202020207d2c0a20202020202020206f6e546162486964653a2066756e6374696f6e202829207b0a2020202020202020202069662028746869732e706c617965644d080229207b0a202020202020202020202020746869732e6f6e4869646528293b0a202020202020202020207d0a20202020202020207d2c0a2020202020202020637265617465546162436f6e74656e743a2066756e6374696f6e20286529207b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020742e636c6173734e616d65203d2027746162636f6e74656e745f5f7469746c65273b0a20202020202020202020742e617070656e644368696c64280a202020202020202020202020646f63756d656e742e637265617465546578744e6f646528274a53373830303a204a617661536372697074204174617269203738303020456d756c61746f7227290a20202020202020202020293b0a20202020202020202020652e617070656e644368696c642874293b0a20202020202020202020766172206e203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a202020202020202020206e2e636c6173734e616d65203d202761626f7574273b0a20202020202020202020652e617070656e644368696c64286e293b0a202020202020202020207661722072203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a202020202020202020206e2e617070656e644368696c642872293b0a4d080220202020202020202020722e696e6e657248544d4c203d0a202020202020202020202020273c7020636c6173733d2263656e746572223e5c6e3c7370616e20636c6173733d2261626f75742d6c6162656c223e62792072617a307265643c2f7370616e3e3c6120687265663d2268747470733a2f2f6769746875622e636f6d2f72617a307265642f6a733738303022207461726765743d225f626c616e6b223e3c696d675c6e636c6173733d2261626f75742d6c6f676f22207372633d22696d616765732f6769746875622d6c6f676f2e7376672220647261676761626c653d2266616c73652220616c743d224769744875623a204a53373830302062792072617a30726564225c6e7469746c653d224769744875623a204a53373830302062792072617a30726564223e3c2f613e5c6e3c2f703e5c6e3c7020636c6173733d2263656e746572223e5c6e4a533738303020697320616e20656e68616e636564204a61766153637269707420706f7274206f6620746865203c6120687265663d2268747470733a2f2f677374616e746f6e2e6769746875622e696f2f50726f53797374656d315f332f22207461726765743d225f626c616e6b223e50726f53797374656d204174617269203738303020656d756c61746f723c2f613e207468617420776173206f726967696e616c6c795c6e646576656c6f7065642062792047726567205374616e4d0802746f6e5c6e3c2f703e273b0a202020202020202020207661722069203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020692e7374796c652e74657874416c69676e203d202763656e746572273b0a202020202020202020206e2e617070656e644368696c642869293b0a20202020202020202020746869732e77726170706572456c203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020746869732e77726170706572456c2e636c6173734e616d65203d202761626f75742d6174617269273b0a20202020202020202020746869732e746f70203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020746869732e746f702e636c6173734e616d65203d202761626f75742d61746172695f5f746f70273b0a20202020202020202020746869732e77726170706572456c2e617070656e644368696c6428746869732e746f70293b0a20202020202020202020692e617070656e644368696c6428746869732e77726170706572456c293b0a20202020202020202020746869732e6c6f676f456c203d20646f63756d656e742e637265617465456c656d656e742827696d6727293b0a20202020202020202020746869732e6c6f676f456c2e7365744174747269627574654d08022827647261676761626c65272c202766616c736527293b0a20202020202020202020746869732e6c6f676f456c2e7365744174747269627574652827737263272c2027696d616765732f6c6f676f2e67696627293b0a20202020202020202020746869732e77726170706572456c2e617070656e644368696c6428746869732e6c6f676f456c293b0a20202020202020202020746869732e76456c203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020746869732e76456c2e636c6173734e616d65203d202761626f75742d61746172695f5f76273b0a20202020202020202020746869732e77726170706572456c2e617070656e644368696c6428746869732e76456c293b0a20202020202020202020766172206f203d20646f63756d656e742e637265617465456c656d656e742827696672616d6527293b0a20202020202020202020746869732e696672616d65203d206f3b0a202020202020202020206f2e73657441747472696275746528277769647468272c20273130302527293b0a202020202020202020206f2e7365744174747269627574652827686569676874272c20273130302527293b0a202020202020202020206f2e73657441747472696275746528276672616d65626f72646572272c20273027293b0a202020202020202020206f2e736574417474726962754d080274652827616c6c6f77272c20276175746f706c617927293b0a20202020202020202020746869732e76456c2e617070656e644368696c64286f293b0a202020202020202020207661722061203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a202020202020202020206e2e617070656e644368696c642861293b0a20202020202020202020612e696e6e657248544d4c203d0a202020202020202020202020273c7020636c6173733d2263656e746572223e5c6e4174617269203738303020636f6e74726f6c6c657220696c6c757374726174696f6e207761732063726561746564206279204d61726b20446176697320283c6120687265663d2268747470733a2f2f766563746f6772616d2e75732f22207461726765743d225f626c616e6b223e566563742d4f2d4772616d3c2f613e293c62723e5c6e4d443520737570706f72742077617320646576656c6f706564206279204a6f73657068204d7965727320283c6120687265663d22687474703a2f2f7777772e6d796572736461696c792e6f72672f6a6f736570682f6a6176617363726970742f6d64352d746578742e68746d6c22207461726765743d225f626c616e6b223e4d44352e6a733c2f613e293c62723e5c6e5a697020737570706f72742077617320646576656c6f7065642062792047696c646173204c6f726d65617520283c612068724d080265663d22687474703a2f2f67696c6461732d6c6f726d6561752e6769746875622e696f2f7a69702e6a7322207461726765743d225f626c616e6b223e5a69702e6a733c2f613e293c62723e5c6e594d3231353120737570706f72742077617320706f727465642066726f6d203c6120687265663d22687474703a2f2f726574726f70632e6e65742f636973632f736f756e642f22207461726765743d225f626c616e6b223e464d20536f756e642047656e657261746f723c2f613e206279203c6120687265663d22687474703a2f2f777777322e746f6b61692e6f722e6a702f6d726e6b6d7a752f22207461726765743d225f626c616e6b223e4b756d613c2f613e5c6e3c2f703e273b0a20202020202020207d2c0a2020202020207d293b0a202020202020766172206974203d2071653b0a202020202020766172206f74203d2057653b0a202020202020766172206174203d2056653b0a202020202020766172206c74203d2024653b0a202020202020766172207374203d205a653b0a202020202020766172206374203d206a653b0a202020202020766172206474203d2050653b0a202020202020766172207574203d2058653b0a202020202020766172207074203d20663b0a202020202020766172206874203d206e756c6c3b0a202020202020766172206674203d206e756c6c3b0a202020202020766172206774203d206e756c6c3b4d08020a2020202020206d742e70726f746f74797065203d204f626a6563742e637265617465284c652e70726f746f74797065293b0a2020202020207074286d742e70726f746f747970652c207b0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e2027636f6e74726f6c6c65725f5f6b6579746172676574273b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020746869732e746172676574203d20653b0a20202020202020202020652e7365744174747269627574652827746162696e646578272c20273027293b0a20202020202020202020652e7374796c652e6c656674203d20746869732e6c656674202b20277078273b0a20202020202020202020652e7374796c652e746f70203d20746869732e746f70202b20277078273b0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a20202020202020206f6e53686f773a2066756e6374696f6e2028652c207429207b0a20202020202020202020746869732e6b657973203d20653b0a20202020202020202020746869732e73657456616c75652874293b4d08020a20202020202020202020746869732e656c2e6164644576656e744c697374656e657228276b6579646f776e272c20746869732e6b6579646f776e66293b0a20202020202020207d2c0a20202020202020206f6e486964653a2066756e6374696f6e202829207b0a20202020202020202020746869732e656c2e72656d6f76654576656e744c697374656e657228276b6579646f776e272c20746869732e6b6579646f776e66293b0a20202020202020207d2c0a202020202020202073657456616c75653a2066756e6374696f6e20286529207b0a202020202020202020207661722074203d20746869732e6b6579735b655d3b0a20202020202020202020696620287429207b0a202020202020202020202020746869732e7461726765742e696e6e657248544d4c203d20743b0a202020202020202020202020746869732e76616c7565203d20653b0a202020202020202020207d0a20202020202020207d2c0a202020202020202067657456616c75653a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20746869732e76616c75653b0a20202020202020207d2c0a2020202020207d293b0a20202020202062742e70726f746f74797065203d204f626a6563742e637265617465284c652e70726f746f74797065293b0a20202020202070742862742e70726f746f747970652c207b0a2020202020202020674d08026574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e2027636f6e74726f6c6c6572273b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e744265666f72655469746c653a2066756e6374696f6e20286529207b7d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020746869732e646f437265617465456c656d656e744265666f72655469746c652865293b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020652e617070656e644368696c642874293b0a20202020202020202020742e636c6173734e616d65203d2027636f6e74726f6c6c65725f5f7469746c65273b0a20202020202020202020742e617070656e644368696c6428646f63756d656e742e637265617465546578744e6f646528746869732e7469746c6529293b0a20202020202020202020766172206e203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020746869732e696e6e6572203d206e3b0a2020202020202020204d0802206e2e636c6173734e616d65203d2027636f6e74726f6c6c65725f5f696e6e6572273b0a20202020202020202020652e617070656e644368696c64286e293b0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a2020202020207d293b0a20202020202077742e70726f746f74797065203d204f626a6563742e637265617465284c652e70726f746f74797065293b0a20202020202070742877742e70726f746f747970652c207b0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e202767616d657061642d666f637573273b0a20202020202020207d2c0a202020202020202073686f773a2066756e6374696f6e202829207b0a20202020202020202020746869732e656c2e7374796c652e646973706c6179203d2027626c6f636b273b0a20202020202020207d2c0a2020202020202020686964653a2066756e6374696f6e202829207b0a20202020202020202020746869732e656c2e7374796c652e646973706c6179203d20276e6f6e65273b0a20202020202020207d2c0a202020202020202073657456697369626c653a2066756e6374696f6e20286529207b0a20202020202020202020696620286529207b0a202020202020202020202020746869732e73686f7728293b0a202020202020202020207d20656c7365207b0a20204d080220202020202020202020746869732e6869646528293b0a202020202020202020207d0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020652e7374796c652e6c656674203d20746869732e6c656674202b20277078273b0a20202020202020202020652e7374796c652e746f70203d20746869732e746f70202b20277078273b0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a2020202020207d293b0a20202020202076742e70726f746f74797065203d204f626a6563742e6372656174652862742e70726f746f74797065293b0a20202020202070742876742e70726f746f747970652c207b0a20202020202020206f6e53686f773a2066756e6374696f6e202829207b0a20202020202020202020746869732e6d617070696e67203d2068742e506164732e6765744d617070696e6728746869732e696e646578293b0a20202020202020202020666f7220287661722065203d20303b2065203c20746869732e666f6375732e6c656e6774683b20652b2b29207b0a202020202020202020202020746869732e666f6375735b655d2e6869646528293b0a2020202020202020204d0802207d0a20202020202020207d2c0a202020202020202075706461746550616449643a2066756e6374696f6e20286529207b0a202020202020202020207661722074203d206e756c6c3b0a20202020202020202020696620286520262620652e696420262620652e69642e7472696d28292e6c656e677468203e203029207b0a202020202020202020202020766172206e203d202874203d20652e69642e7472696d2829292e696e6465784f6628272827293b0a202020202020202020202020696620286e20213d202d3129207b0a202020202020202020202020202074203d20273c7370616e207469746c653d2227202b2074202b2027223e27202b20742e737562737472696e6728302c206e29202b20273c2f7370616e3e273b0a2020202020202020202020207d0a202020202020202020207d20656c7365207b0a20202020202020202020202074203d20274e6f6e652028636f6e6e65637420616e6420707265737320627574746f6e29273b0a202020202020202020207d0a2020202020202020202069662028746869732e70616449642e696e6e657248544d4c20213d207429207b0a202020202020202020202020746869732e70616449642e696e6e657248544d4c203d20743b0a202020202020202020207d0a20202020202020207d2c0a20202020202020207570646174655061644d617070696e673a2066756e6374696f6e20284d08026529207b0a202020202020202020207661722074203d206e756c6c3b0a20202020202020202020696620286520262620652e6d617070696e6720262620652e6d617070696e672e7472696d28292e6c656e677468203e203029207b0a202020202020202020202020766172206e203d20652e6d617070696e672e7472696d28293b0a20202020202020202020202074203d206e2e6368617241742830292e746f5570706572436173652829202b206e2e737562737472696e672831293b0a202020202020202020207d20656c7365207b0a20202020202020202020202074203d202728556e6b6e6f776e29273b0a202020202020202020207d0a2020202020202020202069662028746869732e7061644d617070696e672e696e6e657248544d4c20213d207429207b0a202020202020202020202020746869732e7061644d617070696e672e696e6e657248544d4c203d20743b0a202020202020202020207d0a20202020202020207d2c0a20202020202020207570646174653a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20746869732e6d617070696e673b0a20202020202020202020746869732e6c6566742e73657456697369626c6528652e69734c656674283029293b0a20202020202020202020746869732e72696768742e73657456697369626c6528652e69735269676874283029293b0a20204d08022020202020202020746869732e75702e73657456697369626c6528652e69735570283029293b0a20202020202020202020746869732e646f776e2e73657456697369626c6528652e6973446f776e283029293b0a20202020202020202020746869732e62312e73657456697369626c6528652e6973427574746f6e312829293b0a20202020202020202020746869732e62322e73657456697369626c6528652e6973427574746f6e322829293b0a202020202020202020207661722074203d2068742e506164732e6765744d617070696e6728746869732e696e646578292e67657450616428293b0a20202020202020202020746869732e75706461746550616449642874293b0a20202020202020202020746869732e7570646174655061644d617070696e672874293b0a20202020202020207d2c0a202020202020202061646456616c756543656c6c3a2066756e6374696f6e20286529207b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020742e636c6173734e616d65203d202767616d657061642d63656c6c2d76616c7565273b0a20202020202020202020652e617070656e644368696c642874293b0a2020202020202020202072657475726e20743b0a20202020202020207d2c0a20202020202020206164644e616d6543656c4d08026c3a2066756e6374696f6e2028652c207429207b0a20202020202020202020766172206e203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a202020202020202020206e2e636c6173734e616d65203d202767616d657061642d63656c6c2d6e616d65273b0a20202020202020202020652e617070656e644368696c64286e293b0a202020202020202020206e2e617070656e644368696c6428646f63756d656e742e637265617465546578744e6f6465287429293b0a20202020202020207d2c0a20202020202020206f6e486964653a2066756e6374696f6e202829207b7d2c0a2020202020202020646f437265617465456c656d656e744265666f72655469746c653a2066756e6374696f6e20286529207b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020742e636c6173734e616d65203d202767616d657061642d67726964273b0a20202020202020202020746869732e6164644e616d6543656c6c28742c202747616d657061643a27293b0a20202020202020202020746869732e7061644964203d20746869732e61646456616c756543656c6c2874293b0a20202020202020202020746869732e6164644e616d6543656c6c28742c20274d617070696e673a27293b0a202020202020202020204d0802746869732e7061644d617070696e67203d20746869732e61646456616c756543656c6c2874293b0a20202020202020202020652e617070656e644368696c642874293b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d2062742e70726f746f747970652e646f437265617465456c656d656e742e63616c6c2874686973293b0a202020202020202020207661722074203d20746869732e696e6e65723b0a20202020202020202020742e617070656e644368696c6428746869732e6c6566742e637265617465456c656d656e742829293b0a20202020202020202020742e617070656e644368696c6428746869732e72696768742e637265617465456c656d656e742829293b0a20202020202020202020742e617070656e644368696c6428746869732e75702e637265617465456c656d656e742829293b0a20202020202020202020742e617070656e644368696c6428746869732e646f776e2e637265617465456c656d656e742829293b0a20202020202020202020742e617070656e644368696c6428746869732e62312e637265617465456c656d656e742829293b0a20202020202020202020742e617070656e644368696c6428746869732e62322e637265617465456c656d656e742829293b0a2020202020204d08022020202072657475726e20653b0a20202020202020207d2c0a2020202020207d293b0a20202020202079742e70726f746f74797065203d204f626a6563742e6372656174652862742e70726f746f74797065293b0a20202020202070742879742e70726f746f747970652c207b0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e2062742e70726f746f747970652e676574436c6173732e63616c6c287468697329202b202720636f6e74726f6c6c65722d6b6579626f617264273b0a20202020202020207d2c0a20202020202020206f6e53686f773a2066756e6374696f6e2028652c207429207b0a20202020202020202020746869732e6d6170203d20743b0a20202020202020202020746869732e6b657973203d20653b0a20202020202020202020746869732e6c6566742e6f6e53686f7728652c20742e6765744c6566742829293b0a20202020202020202020746869732e72696768742e6f6e53686f7728652c20742e67657452696768742829293b0a20202020202020202020746869732e75702e6f6e53686f7728652c20742e67657455702829293b0a20202020202020202020746869732e646f776e2e6f6e53686f7728652c20742e676574446f776e2829293b0a20202020202020202020746869732e62312e6f6e53686f7728652c20742e676574424d08027574746f6e312829293b0a20202020202020202020746869732e62322e6f6e53686f7728652c20742e676574427574746f6e322829293b0a20202020202020207d2c0a20202020202020206f6e486964653a2066756e6374696f6e202829207b0a20202020202020202020666f7220287661722065203d20303b2065203c20746869732e746172676574732e6c656e6774683b20652b2b29207b0a202020202020202020202020746869732e746172676574735b655d2e6f6e4869646528293b0a202020202020202020207d0a20202020202020207d2c0a20202020202020206f6e4f6b3a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20746869732e6d61703b0a20202020202020202020652e736574557028746869732e75702e67657456616c75652829293b0a20202020202020202020652e7365744c65667428746869732e6c6566742e67657456616c75652829293b0a20202020202020202020652e736574526967687428746869732e72696768742e67657456616c75652829293b0a20202020202020202020652e736574446f776e28746869732e646f776e2e67657456616c75652829293b0a20202020202020202020652e736574427574746f6e3128746869732e62312e67657456616c75652829293b0a20202020202020202020652e736574427574746f6e3228746869732e62322e6765744d080256616c75652829293b0a20202020202020207d2c0a20202020202020206f6e44656661756c74733a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20746869732e6d61703b0a20202020202020202020746869732e75702e73657456616c756528652e67657444656661756c7455702829293b0a20202020202020202020746869732e6c6566742e73657456616c756528652e67657444656661756c744c6566742829293b0a20202020202020202020746869732e72696768742e73657456616c756528652e67657444656661756c7452696768742829293b0a20202020202020202020746869732e646f776e2e73657456616c756528652e67657444656661756c74446f776e2829293b0a20202020202020202020746869732e62312e73657456616c756528652e67657444656661756c74427574746f6e312829293b0a20202020202020202020746869732e62322e73657456616c756528652e67657444656661756c74427574746f6e322829293b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d2062742e70726f746f747970652e646f437265617465456c656d656e742e63616c6c2874686973293b0a20202020202020202020666f7220287661722074203d20303b2074204d08023c20746869732e746172676574732e6c656e6774683b20742b2b29207b0a202020202020202020202020746869732e696e6e65722e617070656e644368696c6428746869732e746172676574735b745d2e637265617465456c656d656e742829293b0a202020202020202020207d0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a2020202020207d293b0a20202020202078742e70726f746f74797065203d204f626a6563742e637265617465284c652e70726f746f74797065293b0a20202020202070742878742e70726f746f747970652c207b0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e2027636f6e736f6c655f5f627574746f6e20636f6e736f6c655f5f627574746f6e2d2d7570273b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020652e617070656e644368696c6428646f63756d656e742e637265617465546578744e6f646528746869732e7469746c6529293b0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a2020202020207d293b0a2020204d080220202041742e70726f746f74797065203d204f626a6563742e6372656174652878742e70726f746f74797065293b0a20202020202070742841742e70726f746f747970652c207b0a202020202020202067657456616c75653a2066756e6374696f6e202829207b0a2020202020202020202072657475726e20746869732e7461726765742e67657456616c756528293b0a20202020202020207d2c0a202020202020202073657456616c75653a2066756e6374696f6e20286529207b0a20202020202020202020746869732e7461726765742e73657456616c75652865293b0a20202020202020207d2c0a20202020202020206f6e53686f773a2066756e6374696f6e2028652c207429207b0a20202020202020202020746869732e7461726765742e6f6e53686f7728652c2074293b0a20202020202020207d2c0a20202020202020206f6e486964653a2066756e6374696f6e202829207b0a20202020202020202020746869732e7461726765742e6f6e4869646528293b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d2078742e70726f746f747970652e646f437265617465456c656d656e742e63616c6c2874686973293b0a20202020202020202020652e617070656e644368696c6428746869732e746172674d080265742e637265617465456c656d656e742829293b0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a2020202020207d293b0a2020202020206b742e70726f746f74797065203d204f626a6563742e6372656174652878742e70726f746f74797065293b0a2020202020207074286b742e70726f746f747970652c207b0a20202020202020206f6e53686f773a2066756e6374696f6e202829207b0a20202020202020202020746869732e736574466f63757356697369626c652866616c7365293b0a20202020202020207d2c0a2020202020202020736574466f63757356697369626c653a2066756e6374696f6e20286529207b0a20202020202020202020746869732e656c2e636c6173734e616d65203d0a20202020202020202020202027636f6e736f6c655f5f627574746f6e20636f6e736f6c655f5f627574746f6e2d2d27202b202865203f2027646f776e27203a2027757027293b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a2020202020202020202072657475726e2078742e70726f746f747970652e646f437265617465456c656d656e742e63616c6c2874686973293b0a20202020202020207d2c0a2020202020207d293b0a20202020202053742e70726f746f74797065203d204f626a6563742e63726561744d080265284c652e70726f746f74797065293b0a20202020202070742853742e70726f746f747970652c207b0a20202020202020206372656174655061757365427574746f6e3a2066756e6374696f6e20286529207b7d2c0a202020202020202063726561746553656c656374427574746f6e3a2066756e6374696f6e20286529207b7d2c0a20202020202020206372656174655265736574427574746f6e3a2066756e6374696f6e20286529207b7d2c0a2020202020202020676574436c6173733a2066756e6374696f6e202829207b0a2020202020202020202072657475726e2027636f6e736f6c65273b0a20202020202020207d2c0a2020202020202020646f437265617465456c656d656e743a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020652e617070656e644368696c642874293b0a20202020202020202020742e636c6173734e616d65203d2027636f6e74726f6c6c65725f5f7469746c65273b0a20202020202020202020742e617070656e644368696c6428646f63756d656e742e637265617465546578744e6f64652827436f6e736f6c6520427574746f6e734d08022729293b0a20202020202020202020766172206e203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020652e617070656e644368696c64286e293b0a202020202020202020206e2e636c6173734e616d65203d2027636f6e736f6c655f5f696e6e6572273b0a202020202020202020206e2e617070656e644368696c6428746869732e73656c656374427574746f6e2e637265617465456c656d656e742829293b0a202020202020202020206e2e617070656e644368696c6428746869732e7265736574427574746f6e2e637265617465456c656d656e742829293b0a202020202020202020206e2e617070656e644368696c6428746869732e7061757365427574746f6e2e637265617465456c656d656e742829293b0a2020202020202020202072657475726e20653b0a20202020202020207d2c0a2020202020207d293b0a20202020202043742e70726f746f74797065203d204f626a6563742e6372656174652853742e70726f746f74797065293b0a20202020202070742843742e70726f746f747970652c207b0a20202020202020206372656174655061757365427574746f6e3a2066756e6374696f6e20286529207b0a2020202020202020202072657475726e206e65772041742865293b0a20202020202020207d2c0a202020202020202063726561746553656c656374424d08027574746f6e3a2066756e6374696f6e20286529207b0a2020202020202020202072657475726e206e65772041742865293b0a20202020202020207d2c0a20202020202020206372656174655265736574427574746f6e3a2066756e6374696f6e20286529207b0a2020202020202020202072657475726e206e65772041742865293b0a20202020202020207d2c0a20202020202020206f6e53686f773a2066756e6374696f6e20286529207b0a202020202020202020207661722074203d2068742e4b6579626f6172643b0a20202020202020202020746869732e6b62203d20743b0a20202020202020202020746869732e7265736574427574746f6e2e6f6e53686f7728652c20742e67657452657365744b65792829293b0a20202020202020202020746869732e73656c656374427574746f6e2e6f6e53686f7728652c20742e67657453656c6563744b65792829293b0a20202020202020202020746869732e7061757365427574746f6e2e6f6e53686f7728652c20742e67657450617573654b65792829293b0a20202020202020207d2c0a20202020202020206f6e486964653a2066756e6374696f6e202829207b0a20202020202020202020666f7220287661722065203d20303b2065203c20746869732e627574746f6e732e6c656e6774683b20652b2b29207b0a202020202020202020202020746869732e627574746f6e735b655d4d08022e6f6e4869646528293b0a202020202020202020207d0a20202020202020207d2c0a20202020202020206f6e4f6b3a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20746869732e6b623b0a20202020202020202020652e73657452657365744b657928746869732e7265736574427574746f6e2e67657456616c75652829293b0a20202020202020202020652e73657453656c6563744b657928746869732e73656c656374427574746f6e2e67657456616c75652829293b0a20202020202020202020652e73657450617573654b657928746869732e7061757365427574746f6e2e67657456616c75652829293b0a20202020202020207d2c0a20202020202020206f6e44656661756c74733a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20746869732e6b623b0a20202020202020202020746869732e7265736574427574746f6e2e73657456616c756528652e64656652657365744b6579293b0a20202020202020202020746869732e73656c656374427574746f6e2e73657456616c756528652e64656653656c6563744b6579293b0a20202020202020202020746869732e7061757365427574746f6e2e73657456616c756528652e64656650617573654b6579293b0a20202020202020207d2c0a2020202020207d293b0a20202020202045742e70726f746f74794d08027065203d204f626a6563742e6372656174652853742e70726f746f74797065293b0a20202020202070742845742e70726f746f747970652c207b0a20202020202020206372656174655061757365427574746f6e3a2066756e6374696f6e20286529207b0a2020202020202020202072657475726e206e6577206b742865293b0a20202020202020207d2c0a202020202020202063726561746553656c656374427574746f6e3a2066756e6374696f6e20286529207b0a2020202020202020202072657475726e206e6577206b742865293b0a20202020202020207d2c0a20202020202020206372656174655265736574427574746f6e3a2066756e6374696f6e20286529207b0a2020202020202020202072657475726e206e6577206b742865293b0a20202020202020207d2c0a20202020202020207570646174653a2066756e6374696f6e202829207b0a202020202020202020207661722065203d20746869732e6d617070696e673b0a20202020202020202020746869732e73656c656374427574746f6e2e736574466f63757356697369626c6528652e697353656c6563742829293b0a20202020202020202020746869732e7265736574427574746f6e2e736574466f63757356697369626c6528652e697352657365742829293b0a20202020202020202020746869732e7061757365427574746f6e2e736574466f637573566973694d0802626c6528652e697350617573652829293b0a20202020202020207d2c0a20202020202020206f6e53686f773a2066756e6374696f6e202829207b0a20202020202020202020746869732e6d617070696e67203d2068742e506164732e6765744d617070696e672830293b0a20202020202020202020666f7220287661722065203d20303b2065203c20746869732e627574746f6e732e6c656e6774683b20652b2b29207b0a202020202020202020202020746869732e627574746f6e735b655d2e6f6e53686f7728293b0a202020202020202020207d0a20202020202020207d2c0a2020202020207d293b0a202020202020766172205f74203d206e65772061742827446973706c617927293b0a2020202020207074285f742c207b0a202020202020202066696c7465725377697463683a206e756c6c2c0a202020202020202073697a6553656c6563743a206e756c6c2c0a2020202020202020617253656c6563743a206e756c6c2c0a202020202020202070616c53656c6563743a206e756c6c2c0a2020202020202020667353656c6563743a206e756c6c2c0a20202020202020206f6e53686f773a2066756e6374696f6e202829207b0a202020202020202020207661722065203d2068742e566964656f3b0a20202020202020202020746869732e766964203d20653b0a20202020202020202020746869732e66696c74657253776974634d0802682e73657456616c756528652e697346696c746572456e61626c65642829293b0a20202020202020202020746869732e73697a6553656c6563742e73657456616c756528652e67657453637265656e53697a6528292e746f537472696e672829293b0a20202020202020202020746869732e617253656c6563742e73657456616c756528652e67657453637265656e526174696f28292e746f537472696e672829293b0a20202020202020202020746869732e667353656c6563742e73657456616c756528652e67657446756c6c73637265656e4d6f646528292e746f537472696e672829293b0a20202020202020202020746869732e70616c53656c6563742e73657456616c75652868742e526567696f6e2e67657450616c65747465496e64657828292e746f537472696e672829293b0a20202020202020207d2c0a20202020202020206f6e4f6b3a2066756e6374696f6e202829207b0a20202020202020202020746869732e7669642e73657446696c746572456e61626c656428746869732e66696c7465725377697463682e67657456616c75652829293b0a20202020202020202020746869732e7669642e73657453637265656e53697a65287061727365466c6f617428746869732e73697a6553656c6563742e67657456616c7565282929293b0a20202020202020202020746869732e7669642e73657453637265656e526174696f4d0802287061727365466c6f617428746869732e617253656c6563742e67657456616c7565282929293b0a20202020202020202020746869732e7669642e73657446756c6c73637265656e4d6f6465287061727365496e7428746869732e667353656c6563742e67657456616c7565282929293b0a2020202020202020202068742e526567696f6e2e73657450616c65747465496e646578287061727365496e7428746869732e70616c53656c6563742e67657456616c7565282929293b0a20202020202020202020746869732e7669642e696e697450616c657474653828293b0a20202020202020207d2c0a20202020202020206f6e44656661756c74733a2066756e6374696f6e202829207b0a20202020202020202020746869732e66696c7465725377697463682e73657456616c756528746869732e7669642e67657446696c746572456e61626c656444656661756c742829293b0a20202020202020202020746869732e73697a6553656c6563742e73657456616c756528746869732e7669642e67657453637265656e53697a6544656661756c7428292e746f537472696e672829293b0a20202020202020202020746869732e617253656c6563742e73657456616c756528746869732e7669642e67657453637265656e526174696f44656661756c7428292e746f537472696e672829293b0a20202020202020202020746869732e70616c534d0802656c6563742e73657456616c7565280a20202020202020202020202068742e526567696f6e2e67657450616c65747465496e64657844656661756c7428292e746f537472696e6728290a20202020202020202020293b0a20202020202020202020746869732e667353656c6563742e73657456616c7565280a202020202020202020202020746869732e7669642e67657446756c6c73637265656e4d6f646544656661756c7428292e746f537472696e6728290a20202020202020202020293b0a20202020202020207d2c0a2020202020202020637265617465546162436f6e74656e743a2066756e6374696f6e20286529207b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020742e696e6e657248544d4c203d0a202020202020202020202020273c64697620636c6173733d22746162636f6e74656e745f5f7469746c65223e446973706c61792053657474696e67733c2f6469763e5c6e3c7020636c6173733d2263656e746572223e54686520666f6c6c6f77696e672073657474696e677320617265207573656420746f20636f6e74726f6c207468652073637265656e20646973706c61792e3c2f703e273b0a20202020202020202020652e617070656e644368696c642874293b0a20202020202020202020766172206e203d206e4d08026577206c7428293b0a202020202020202020206e2e61646443656c6c286e6577207374282753637265656e2073697a653a2729293b0a20202020202020202020746869732e73697a6553656c656374203d206e6577206474287b0a202020202020202020202020273278273a202732272c0a20202020202020202020202027322e323578273a2027322e3235272c0a20202020202020202020202027322e3578273a2027322e35272c0a20202020202020202020202027322e373578273a2027322e3735272c0a202020202020202020202020273378273a202733272c0a20202020202020202020202027332e323578273a2027332e3235272c0a20202020202020202020202027332e3578273a2027332e35272c0a20202020202020202020202027332e373578273a2027332e3735272c0a202020202020202020202020273478273a202734272c0a202020202020202020207d293b0a202020202020202020206e2e61646443656c6c286e657720757428746869732e73697a6553656c65637429293b0a202020202020202020206e2e61646443656c6c286e6577207374282741737065637420726174696f3a2729293b0a20202020202020202020746869732e617253656c656374203d206e6577206474287b0a20202020202020202020202027506978656c20706572666563742028313a312050415229273a202731272c0a20202020204d08022020202020202027417461726920373830302028363a372050415229273a2027302e383537272c0a202020202020202020202020275769646573637265656e202831363a3929273a2027312e333334272c0a20202020202020202020202027556c7472612d7769646573637265656e2028322e33373a3129273a2027312e373738272c0a202020202020202020207d293b0a202020202020202020206e2e61646443656c6c286e657720757428746869732e617253656c65637429293b0a202020202020202020206e2e61646443656c6c286e6577207374282746756c6c73637265656e3a2729293b0a20202020202020202020746869732e667353656c656374203d206e6577206474287b0a2020202020202020202020202746696c6c2073637265656e273a202730272c0a20202020202020202020202027496e7465676572207363616c696e67202868656967687429273a202731272c0a202020202020202020207d293b0a202020202020202020206e2e61646443656c6c286e657720757428746869732e667353656c65637429293b0a202020202020202020206e2e61646443656c6c286e6577207374282750616c657474653a2729293b0a20202020202020202020746869732e70616c53656c656374203d206e6577206474287b0a2020202020202020202020202750726f53797374656d2064656661756c74273a202730272c0a204d080220202020202020202020204f707447726f7570313a20274461726b272c0a20202020202020202020202027436f6f6c20284461726b29273a202731272c0a202020202020202020202020275761726d20284461726b29273a202732272c0a20202020202020202020202027486f7420284461726b29273a202733272c0a2020202020202020202020204f707447726f7570323a20274c69676874272c0a20202020202020202020202027436f6f6c20284c696768742920273a202734272c0a202020202020202020202020275761726d20284c696768742920273a202735272c0a20202020202020202020202027486f7420284c696768742920273a202736272c0a202020202020202020207d293b0a202020202020202020206e2e61646443656c6c286e657720757428746869732e70616c53656c65637429293b0a202020202020202020206e2e61646443656c6c286e657720737428274170706c792066696c7465723a2729293b0a20202020202020202020746869732e66696c746572537769746368203d206e65772063742827546f67676c652046696c74657227293b0a202020202020202020206e2e61646443656c6c286e657720757428746869732e66696c74657253776974636829293b0a20202020202020202020652e617070656e644368696c64286e2e637265617465456c656d656e742829293b0a20202020202020207d2c4d08020a2020202020207d293b0a202020202020766172204974203d206e65772061742827486967682053636f72657327293b0a20202020202070742849742c207b0a2020202020202020656e61626c655377697463683a206e756c6c2c0a20202020202020206c6f636174696f6e53656c6563743a206e756c6c2c0a202020202020202066616c6c6261636b5377697463683a206e756c6c2c0a2020202020202020646573633a206e756c6c2c0a20202020202020206f6e53686f773a2066756e6374696f6e202829207b0a20202020202020202020746869732e7570646174654465736328293b0a20202020202020202020746869732e656e61626c655377697463682e73657456616c75652866742e676574456e61626c65642829293b0a20202020202020202020746869732e6c6f636174696f6e53656c6563742e73657456616c75652866742e676574476c6f62616c2829203f20273127203a20273027293b0a20202020202020202020746869732e66616c6c6261636b5377697463682e73657456616c75652866742e69734c6f63616c46616c6c6261636b2829293b0a20202020202020202020746869732e656e61626c655377697463682e6f6e436c69636b28293b0a20202020202020207d2c0a20202020202020206f6e4f6b3a2066756e6374696f6e202829207b0a2020202020202020202066742e736574456e61626c65642874684d080269732e656e61626c655377697463682e67657456616c75652829293b0a2020202020202020202066742e736574476c6f62616c28746869732e6c6f636174696f6e53656c6563742e67657456616c75652829203d3d20273127293b0a2020202020202020202066742e7365744c6f63616c46616c6c6261636b28746869732e66616c6c6261636b5377697463682e67657456616c75652829293b0a20202020202020207d2c0a20202020202020206f6e44656661756c74733a2066756e6374696f6e202829207b0a20202020202020202020746869732e656e61626c655377697463682e73657456616c75652866742e676574456e61626c656444656661756c742829293b0a20202020202020202020746869732e6c6f636174696f6e53656c6563742e73657456616c75652866742e676574476c6f62616c44656661756c742829203f20273127203a20273027293b0a20202020202020202020746869732e66616c6c6261636b5377697463682e73657456616c75652866742e6765744c6f63616c46616c6c6261636b44656661756c742829293b0a20202020202020202020746869732e656e61626c655377697463682e6f6e436c69636b28293b0a20202020202020207d2c0a2020202020202020757064617465446573632829207b0a202020202020202020207661722065203d0a202020202020202020202020273c64697620636c61734d0802733d22746162636f6e74656e745f5f7469746c65223e486967682053636f72652053657474696e67733c2f6469763e5c6e3c7020636c6173733d2263656e746572223e54686520666f6c6c6f77696e672073657474696e677320636f6e74726f6c20686967682073636f72652070657273697374656e63652e3c2f703e273b0a202020202020202020206966202866742e676574446967657374282929207b0a20202020202020202020202065202b3d0a2020202020202020202020202020273c7020636c6173733d2263656e746572223e4368616e6765732077696c6c206e6f742074616b652065666665637420756e74696c20746865206e6578742067616d65206973206c6f616465642e3c2f703e273b0a202020202020202020207d0a20202020202020202020746869732e646573632e696e6e657248544d4c203d20653b0a20202020202020207d2c0a2020202020202020637265617465546162436f6e74656e743a2066756e6374696f6e20286529207b0a202020202020202020207661722074203d20746869733b0a20202020202020202020746869732e64657363203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020652e617070656e644368696c6428746869732e64657363293b0a20202020202020202020746869732e7570646174654465736328293b0a2020204d080220202020202020766172206e203d206e6577206c7428293b0a202020202020202020206e2e61646443656c6c286e65772073742827536176652073636f7265733a2729293b0a20202020202020202020746869732e656e61626c65537769746368203d206e65772063742827546f67676c652046696c74657227293b0a202020202020202020206e2e61646443656c6c286e657720757428746869732e656e61626c6553776974636829293b0a202020202020202020207661722072203d206e6577207374282753617665206c6f636174696f6e3a27293b0a202020202020202020206e2e61646443656c6c2872293b0a20202020202020202020746869732e6c6f636174696f6e53656c656374203d206e6577206474287b0a202020202020202020202020274c6f63616c20287468697320646576696365206f6e6c7929273a202730272c0a20202020202020202020202027476c6f62616c2028776f726c6477696465206c6561646572626f61726429273a202731272c0a202020202020202020207d293b0a20202020202020202020746869732e6c6f636174696f6e53656c6563742e7365745769647468283137293b0a202020202020202020207661722069203d206e657720757428746869732e6c6f636174696f6e53656c656374293b0a202020202020202020206e2e61646443656c6c2869293b0a202020202020202020207661724d0802206f203d206e657720737428274c6f63616c2066616c6c6261636b3a27293b0a202020202020202020206e2e61646443656c6c286f293b0a20202020202020202020746869732e66616c6c6261636b537769746368203d206e657720637428274c6f63616c2046616c6c6261636b27293b0a202020202020202020207661722061203d206e657720757428746869732e66616c6c6261636b537769746368293b0a202020202020202020206e2e61646443656c6c2861293b0a20202020202020202020652e617070656e644368696c64286e2e637265617465456c656d656e742829293b0a20202020202020202020746869732e656e61626c655377697463682e6f6e436c69636b203d2066756e6374696f6e202829207b0a2020202020202020202020207661722065203d20746869732e67657456616c756528293b0a202020202020202020202020722e73657456697369626c652865293b0a202020202020202020202020692e73657456697369626c652865293b0a202020202020202020202020742e6c6f636174696f6e53656c6563742e6f6e4368616e676528293b0a202020202020202020207d3b0a20202020202020202020746869732e6c6f636174696f6e53656c6563742e6f6e4368616e6765203d2066756e6374696f6e202829207b0a2020202020202020202020207661722065203d20746869732e67657456616c756528294d0802203d3d2027312720262620742e656e61626c655377697463682e67657456616c756528293b0a2020202020202020202020206f2e73657456697369626c652865293b0a202020202020202020202020612e73657456697369626c652865293b0a202020202020202020207d3b0a20202020202020207d2c0a2020202020207d293b0a202020202020766172204474203d206e6577206174282747616d657061647327293b0a20202020202070742844742c207b0a2020202020202020696e74657276616c49643a206e756c6c2c0a2020202020202020636f6e74726f6c6c6572313a206e65772076742827436f6e74726f6c6c65722031272c2030292c0a2020202020202020636f6e74726f6c6c6572323a206e65772076742827436f6e74726f6c6c65722032272c2031292c0a2020202020202020636f6e736f6c653a206e657720457428292c0a20202020202020206f6e53686f773a2066756e6374696f6e202829207b0a20202020202020202020746869732e636f6e74726f6c6c6572312e6f6e53686f7728293b0a20202020202020202020746869732e636f6e74726f6c6c6572322e6f6e53686f7728293b0a20202020202020202020746869732e636f6e736f6c652e6f6e53686f7728293b0a202020202020202020207661722065203d20746869733b0a20202020202020202020746869732e696e74657276616c4964203d2073654d080274496e74657276616c2866756e6374696f6e202829207b0a20202020202020202020202068742e506164732e706f6c6c28293b0a202020202020202020202020652e636f6e74726f6c6c6572312e75706461746528293b0a202020202020202020202020652e636f6e74726f6c6c6572322e75706461746528293b0a202020202020202020202020652e636f6e736f6c652e75706461746528293b0a202020202020202020207d2c203530293b0a20202020202020207d2c0a20202020202020206f6e486964653a2066756e6374696f6e202829207b0a2020202020202020202069662028746869732e696e74657276616c496420213d206e756c6c29207b0a202020202020202020202020636c656172496e74657276616c28746869732e696e74657276616c4964293b0a202020202020202020207d0a20202020202020207d2c0a2020202020202020637265617465546162436f6e74656e743a2066756e6374696f6e20286529207b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020742e696e6e657248544d4c203d0a202020202020202020202020273c64697620636c6173733d22746162636f6e74656e745f5f7469746c65223e47616d6570616420436f6d7061746962696c6974793c2f6469763e5c6e3c7020636c6173733d224d080263656e746572223e5468697320706167652070726f766964657320746865206162696c69747920746f203c6220636c6173733d2263616c6c6f7574223e7465737420636f6d7061746962696c6974793c2f623e207769746820636f6e6e65637465642067616d65706164732e3c2f703e5c6e3c7020636c6173733d2263656e746572223e436f6e6e6563742067616d657061647320616e642074657374206966207468657920617265206d617070656420636f72726563746c7920286279207072657373696e6720627574746f6e732c20442d7061642c206574632e292e3c2f703e273b0a20202020202020202020652e617070656e644368696c642874293b0a20202020202020202020766172206e203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020652e617070656e644368696c64286e293b0a202020202020202020206e2e636c6173734e616d65203d2027636f6e74726f6c732d636f6e7461696e6572273b0a202020202020202020206e2e617070656e644368696c6428746869732e636f6e74726f6c6c6572312e637265617465456c656d656e742829293b0a202020202020202020206e2e617070656e644368696c6428746869732e636f6e74726f6c6c6572322e637265617465456c656d656e742829293b0a20202020202020202020652e617070656e644368696c4d08026428746869732e636f6e736f6c652e637265617465456c656d656e742829293b0a20202020202020207d2c0a2020202020207d293b0a202020202020766172204274203d206e657720617428274b6579626f61726427293b0a20202020202070742842742c207b0a2020202020202020636f6e74726f6c6c6572313a206e65772079742827436f6e74726f6c6c6572203127292c0a2020202020202020636f6e74726f6c6c6572323a206e65772079742827436f6e74726f6c6c6572203227292c0a2020202020202020636f6e736f6c653a206e657720437428292c0a20202020202020206f6e53686f773a2066756e6374696f6e202829207b0a202020202020202020207661722065203d2068742e4b6579626f6172643b0a202020202020202020207661722074203d20652e70314b65794d61703b0a20202020202020202020766172206e203d20652e70324b65794d61703b0a202020202020202020207661722072203d2068742e4b6579732e4b6579733b0a20202020202020202020746869732e636f6e74726f6c6c6572312e6f6e53686f7728722c2074293b0a20202020202020202020746869732e636f6e74726f6c6c6572322e6f6e53686f7728722c206e293b0a20202020202020202020746869732e636f6e736f6c652e6f6e53686f772872293b0a20202020202020207d2c0a20202020202020206f6e4f6b3a2066756e63744d0802696f6e202829207b0a20202020202020202020746869732e636f6e74726f6c6c6572312e6f6e4f6b28293b0a20202020202020202020746869732e636f6e74726f6c6c6572322e6f6e4f6b28293b0a20202020202020202020746869732e636f6e736f6c652e6f6e4f6b28293b0a20202020202020207d2c0a20202020202020206f6e486964653a2066756e6374696f6e202829207b0a20202020202020202020746869732e636f6e74726f6c6c6572312e6f6e4869646528293b0a20202020202020202020746869732e636f6e74726f6c6c6572322e6f6e4869646528293b0a20202020202020202020746869732e636f6e736f6c652e6f6e4869646528293b0a20202020202020207d2c0a20202020202020206f6e44656661756c74733a2066756e6374696f6e202829207b0a20202020202020202020746869732e636f6e74726f6c6c6572312e6f6e44656661756c747328293b0a20202020202020202020746869732e636f6e74726f6c6c6572322e6f6e44656661756c747328293b0a20202020202020202020746869732e636f6e736f6c652e6f6e44656661756c747328293b0a20202020202020207d2c0a2020202020202020637265617465546162436f6e74656e743a2066756e6374696f6e20286529207b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e742827646976274d0802293b0a20202020202020202020742e696e6e657248544d4c203d0a202020202020202020202020273c64697620636c6173733d22746162636f6e74656e745f5f7469746c65223e4b6579626f617264204d617070696e67733c2f6469763e5c6e3c7020636c6173733d2263656e746572223e436c69636b206f6e20746865203c6220636c6173733d2263616c6c6f7574223e72656420626f783c2f623e206e656172206120636f6e74726f6c20746f2073656c65637420697420666f72206d617070696e672e3c2f703e5c6e3c7020636c6173733d2263656e746572223e4f6e63652073656c65637465642c20707265737320746865203c6220636c6173733d2263616c6c6f7574223e6b65793c2f623e20796f7520776f756c64206c696b6520746f206d617020746f2074686520636f6e74726f6c2e3c2f703e273b0a20202020202020202020652e617070656e644368696c642874293b0a20202020202020202020766172206e203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020652e617070656e644368696c64286e293b0a202020202020202020206e2e636c6173734e616d65203d2027636f6e74726f6c732d636f6e7461696e6572273b0a202020202020202020206e2e7374796c65203d20276d617267696e2d746f703a33357078273b0a202020202020202020206e2e4d0802617070656e644368696c6428746869732e636f6e74726f6c6c6572312e637265617465456c656d656e742829293b0a202020202020202020206e2e617070656e644368696c6428746869732e636f6e74726f6c6c6572322e637265617465456c656d656e742829293b0a20202020202020202020652e617070656e644368696c6428746869732e636f6e736f6c652e637265617465456c656d656e742829293b0a20202020202020207d2c0a2020202020207d293b0a202020202020766172204d74203d206e65772061742827416476616e63656427293b0a2020202020207074284d742c207b0a2020202020202020786d53656c6563743a206e756c6c2c0a20202020202020207673796e635377697463683a206e756c6c2c0a2020202020202020736b697053656c6563743a206e756c6c2c0a20202020202020206f6e53686f773a2066756e6374696f6e202829207b0a20202020202020202020746869732e786d53656c6563742e73657456616c75652867742e476574586d4d6f646528292e746f537472696e672829293b0a20202020202020202020746869732e7673796e635377697463682e73657456616c75652868742e4d61696e2e69735673796e63456e61626c65642829293b0a20202020202020202020746869732e736b697053656c6563742e73657456616c75652868742e4d61696e2e676574536b69704c6576656c28294d08022e746f537472696e672829293b0a20202020202020207d2c0a20202020202020206f6e4f6b3a2066756e6374696f6e202829207b0a2020202020202020202067742e536574586d4d6f6465287061727365496e7428746869732e786d53656c6563742e67657456616c7565282929293b0a2020202020202020202068742e4d61696e2e7365745673796e63456e61626c656428746869732e7673796e635377697463682e67657456616c75652829293b0a2020202020202020202068742e4d61696e2e736574536b69704c6576656c287061727365496e7428746869732e736b697053656c6563742e67657456616c7565282929293b0a20202020202020207d2c0a20202020202020206f6e44656661756c74733a2066756e6374696f6e202829207b0a20202020202020202020746869732e786d53656c6563742e73657456616c75652867742e476574586d4d6f646544656661756c7428292e746f537472696e672829293b0a20202020202020202020746869732e7673796e635377697463682e73657456616c75652868742e4d61696e2e6765745673796e63456e61626c656444656661756c742829293b0a20202020202020202020746869732e736b697053656c6563742e73657456616c75652868742e4d61696e2e676574536b69704c6576656c44656661756c7428292e746f537472696e672829293b0a20202020202020207d2c0a4d08022020202020202020637265617465546162436f6e74656e743a2066756e6374696f6e20286529207b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020742e696e6e657248544d4c203d0a202020202020202020202020273c64697620636c6173733d22746162636f6e74656e745f5f7469746c65223e416476616e6365643c2f6469763e5c6e3c7020636c6173733d2263656e746572223e54686520666f6c6c6f77696e672073657474696e67732070726f7669646520746865206162696c69747920746f20636f6e66696775726520616476616e6365642066656174757265732e3c2f703e273b0a20202020202020202020652e617070656e644368696c642874293b0a20202020202020202020766172206e203d206e6577206c7428293b0a202020202020202020207661722072203d206e65772073742827457870616e73696f6e206d6f64756c652028584d293a27293b0a202020202020202020206e2e61646443656c6c2872293b0a20202020202020202020746869732e786d53656c656374203d206e6577206474287b0a20202020202020202020202027284175746f6d6174696329273a202732272c0a202020202020202020202020456e61626c65643a202731272c0a20202020202020202020202044697361626c65643a204d08022730272c0a202020202020202020207d293b0a202020202020202020207661722069203d206e657720757428746869732e786d53656c656374293b0a202020202020202020206e2e61646443656c6c2869293b0a202020202020202020206e2e61646443656c6c286e657720737428274672616d6520736b697070696e673a2729293b0a20202020202020202020746869732e736b697053656c656374203d206e6577206474287b0a20202020202020202020202027284e6f6e6529273a202730272c0a2020202020202020202020204c6f773a202731272c0a202020202020202020202020274d656469756d202835302529273a202732272c0a202020202020202020202020486967683a202733272c0a202020202020202020207d293b0a202020202020202020206e2e61646443656c6c286e657720757428746869732e736b697053656c65637429293b0a202020202020202020206e2e61646443656c6c286e65772073742827566572746963616c2073796e633a2729293b0a20202020202020202020746869732e7673796e63537769746368203d206e65772063742827566572746963616c2053796e6327293b0a202020202020202020206e2e61646443656c6c286e657720757428746869732e7673796e6353776974636829293b0a20202020202020202020652e617070656e644368696c64286e2e637265617465456c656d656e4d0802742829293b0a20202020202020207d2c0a2020202020207d293b0a202020202020766172205474203d206e6577206f7428293b0a20202020202054742e616464546162285f74293b0a20202020202054742e6164645461622842742c2074727565293b0a20202020202054742e616464546162284474293b0a20202020202054742e616464546162284974293b0a20202020202054742e616464546162284d74293b0a20202020202052742e70726f746f74797065203d204f626a6563742e6372656174652869742e70726f746f74797065293b0a20202020202070742852742e70726f746f747970652c207b0a202020202020202073656c6563744b6579626f6172645461622829207b0a20202020202020202020746869732e67657454616253657428292e6f6e546162436c69636b284274293b0a20202020202020207d2c0a20202020202020206765745461625365743a2066756e6374696f6e202829207b0a2020202020202020202072657475726e2054743b0a20202020202020207d2c0a20202020202020206f6e4f6b3a2066756e6374696f6e202829207b0a2020202020202020202069742e70726f746f747970652e6f6e4f6b2e63616c6c2874686973293b0a202020202020202020205a28293b0a20202020202020207d2c0a2020202020207d293b0a20202020202064280a20202020202020206e65772063282773697465494d08026e6974272c2066756e6374696f6e20286529207b0a202020202020202020206874203d20652e6a73373830303b0a202020202020202020206674203d20652e4869676853636f72653b0a202020202020202020206774203d2068742e4361727472696467653b0a20202020202020207d290a202020202020293b0a202020202020766172204774203d2071653b0a202020202020766172204c74203d2057653b0a202020202020766172205174203d2056653b0a202020202020766172207a74203d20663b0a20202020202046742e70726f746f74797065203d204f626a6563742e6372656174652851742e70726f746f74797065293b0a2020202020207a742846742e70726f746f747970652c207b0a2020202020202020726f6f743a206e756c6c2c0a2020202020202020706172656e743a206e756c6c2c0a20202020202020206c6f616465643a2066616c73652c0a20202020202020206f6e54616253686f773a2066756e6374696f6e202829207b0a202020202020202020206966202821746869732e6c6f6164656429207b0a2020202020202020202020207661722065203d20746869733b0a2020202020202020202020207661722074203d2066756e6374696f6e20287429207b0a2020202020202020202020202020766172206e203d2027416e206572726f72206f6363757272656420617474656d7074696e6720746f206c6f614d08026420706167653a2027202b20652e75726c3b0a2020202020202020202020202020696620287429207b0a202020202020202020202020202020206e202b3d2027202827202b2074202b202729273b0a20202020202020202020202020207d0a202020202020202020202020202075282773686f774572726f72272c206e293b0a2020202020202020202020207d3b0a202020202020202020202020766172206e203d206e657720584d4c487474705265717565737428293b0a2020202020202020202020206e2e6f70656e2827474554272c20746869732e75726c293b0a2020202020202020202020206e2e6f6e6c6f6164203d2066756e6374696f6e202829207b0a2020202020202020202020202020696620286e2e737461747573203d3d2032303029207b0a20202020202020202020202020202020652e6c6f61646564203d20747275653b0a20202020202020202020202020202020652e706172656e742e636c6173734c6973742e72656d6f766528276c6f616465722d636f6e7461696e657227293b0a20202020202020202020202020202020652e706172656e742e7374796c652e646973706c6179203d20276e6f6e65273b0a20202020202020202020202020202020652e706172656e742e696e6e657248544d4c203d206e2e726573706f6e7365546578743b0a2020202020202020202020202020202073657454696d656f75744d08022866756e6374696f6e202829207b0a202020202020202020202020202020202020652e706172656e742e7374796c652e646973706c6179203d2027626c6f636b273b0a202020202020202020202020202020207d2c20313030293b0a20202020202020202020202020207d20656c7365207b0a2020202020202020202020202020202074286e2e737461747573202b20273a2027202b206e2e73746174757354657874293b0a20202020202020202020202020207d0a2020202020202020202020207d3b0a2020202020202020202020206e2e6f6e6572726f72203d2066756e6374696f6e202829207b0a20202020202020202020202020207428293b0a2020202020202020202020207d3b0a20202020202020202020202073657454696d656f75742866756e6374696f6e202829207b0a20202020202020202020202020206e2e73656e6428293b0a2020202020202020202020207d2c20353030293b0a202020202020202020207d0a20202020202020207d2c0a2020202020202020637265617465546162436f6e74656e743a2066756e6374696f6e20286529207b0a20202020202020202020746869732e726f6f74203d20653b0a202020202020202020207661722074203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a20202020202020202020746869732e706172656e74203d20743b0a202020204d0802202020202020742e636c6173734e616d65203d20276c6f616465722d636f6e7461696e6572273b0a20202020202020202020766172206e203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a202020202020202020206e2e636c6173734e616d65203d20276c6f61646572273b0a20202020202020202020742e617070656e644368696c64286e293b0a20202020202020202020652e617070656e644368696c642874293b0a20202020202020207d2c0a2020202020207d293b0a202020202020766172204e74203d206e657720467428274f76657276696577272c202768656c702f6f766572766965772e68746d6c27293b0a202020202020766172205574203d206e6577204674282743617274726964676573272c202768656c702f63617274732e68746d6c27293b0a202020202020766172204b74203d206e65772046742827436f6e74726f6c7320426172272c202768656c702f636261722e68746d6c27293b0a202020202020766172205974203d206e6577204674282753657474696e6773204469616c6f67272c202768656c702f73657474696e67732e68746d6c27293b0a202020202020766172204f74203d206e65772046742827486967682053636f726573272c202768656c702f6869676873636f7265732e68746d6c27293b0a202020202020766172206a74203d206e6577204c7428293b4d08020a2020202020206a742e616464546162286e657720727428292c2074727565293b0a2020202020206a742e616464546162284e74293b0a2020202020206a742e616464546162285574293b0a2020202020206a742e616464546162284b74293b0a2020202020206a742e616464546162285974293b0a2020202020206a742e616464546162284f74293b0a20202020202050742e70726f746f74797065203d204f626a6563742e6372656174652847742e70726f746f74797065293b0a2020202020207a742850742e70726f746f747970652c207b0a20202020202020206373734c6f616465643a2066616c73652c0a20202020202020206765745461625365743a2066756e6374696f6e202829207b0a2020202020202020202072657475726e206a743b0a20202020202020207d2c0a20202020202020206f6e53686f773a2066756e6374696f6e202829207b0a202020202020202020206966202821746869732e6373734c6f6164656429207b0a202020202020202020202020746869732e6373734c6f61646564203d20747275653b0a2020202020202020202020207661722065203d20646f63756d656e742e637265617465456c656d656e7428276c696e6b27293b0a202020202020202020202020652e74797065203d2027746578742f637373273b0a202020202020202020202020652e72656c203d20277374796c657368656574274d08023b0a202020202020202020202020652e68726566203d202768656c702f6373732f68656c702e637373273b0a202020202020202020202020646f63756d656e742e686561642e617070656e644368696c642865293b0a202020202020202020207d0a2020202020202020202047742e70726f746f747970652e6f6e53686f772e63616c6c2874686973293b0a20202020202020207d2c0a2020202020207d293b0a202020202020722832293b0a202020202020722836293b0a202020202020722e64286e2c2027696e6974272c2066756e6374696f6e202829207b0a202020202020202072657475726e206c6e3b0a2020202020207d293b0a202020202020766172204874203d20423b0a202020202020766172205774203d204d3b0a202020202020766172205674203d20543b0a202020202020766172207174203d2066756e6374696f6e20286529207b0a2020202020202020696620280a202020202020202020202865203d206e65772052656745787028275b3f265d27202b20656e636f6465555249436f6d706f6e656e74286529202b20273d285b5e265d2a2927292e65786563280a2020202020202020202020206c6f636174696f6e2e7365617263680a2020202020202020202029290a202020202020202029207b0a2020202020202020202072657475726e206465636f6465555249436f6d706f6e656e7428655b315d293b0a204d0802202020202020207d0a2020202020207d3b0a202020202020766172204a74203d2066756e6374696f6e20286529207b0a2020202020202020696620280a202020202020202020202865203d206e65772052656745787028275b3f265d27202b20656e636f6465555249436f6d706f6e656e74286529202b20273d282e2a2927292e65786563280a2020202020202020202020206c6f636174696f6e2e7365617263680a2020202020202020202029290a202020202020202029207b0a2020202020202020202072657475726e206465636f6465555249436f6d706f6e656e7428655b315d293b0a20202020202020207d0a2020202020207d3b0a202020202020766172205a74203d2066616c73653b0a202020202020766172205874203d2066616c73653b0a202020202020766172202474203d206e756c6c3b0a20202020202076617220656e203d206e756c6c3b0a20202020202076617220746e203d2066756e6374696f6e2028652c207429207b0a20202020202020206966202874203d3d206e756c6c29207b0a2020202020202020202074203d20747275653b0a20202020202020207d0a2020202020202020696620287429207b0a20202020202020202020636f6e736f6c652e6572726f722865293b0a20202020202020207d0a202020202020202056742865293b0a2020202020207d3b0a20202020202076617220726e203d206e752a6c6c3b0a202020202020766172206f6e203d206e756c6c3b0a202020207d2c0a20205d293b0a7d293b0a68 #2utf8��s"�ÒUR`�p!$��x�=`�#L��Dʏ��(��s"�ÒUR`�p!$��x�=`�#L��Dʏ��(ascii@Fs"RCUR`vp!$7x =`#LEWDJ (@Fs"RCUR`vp!$7x =`#LEWDJ (hexc0c67322d2c392555260f6702124058bb778803d601e95234cc5d744ca8f809328c0c67322d2c392555260f6702124058bb778803d601e95234cc5d744ca8f809328 |
|---|