diff --git a/.editorconfig b/.editorconfig
index 84b8a66..fca7ede 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -1,10 +1,10 @@
-# top-most EditorConfig file
-root = true
-
-[*]
-charset = utf-8
-end_of_line = lf
-insert_final_newline = true
-indent_style = tab
-indent_size = 4
-tab_width = 4
+# Top Level EditorConfig file
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+insert_final_newline = true
+indent_style = tab
+indent_size = 4
+tab_width = 4
diff --git a/.eslintrc b/.eslintrc
index 0807290..5bf9e7c 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -1,23 +1,23 @@
{
- "root": true,
- "parser": "@typescript-eslint/parser",
- "env": { "node": true },
- "plugins": [
- "@typescript-eslint"
- ],
- "extends": [
- "eslint:recommended",
- "plugin:@typescript-eslint/eslint-recommended",
- "plugin:@typescript-eslint/recommended"
- ],
- "parserOptions": {
- "sourceType": "module"
- },
- "rules": {
- "no-unused-vars": "off",
- "@typescript-eslint/no-unused-vars": ["error", { "args": "none" }],
- "@typescript-eslint/ban-ts-comment": "off",
- "no-prototype-builtins": "off",
- "@typescript-eslint/no-empty-function": "off"
- }
- }
\ No newline at end of file
+ "root": true,
+ "parser": "@typescript-eslint/parser",
+ "env": { "node": true },
+ "plugins": [
+ "@typescript-eslint"
+ ],
+ "extends": [
+ "eslint:recommended",
+ "plugin:@typescript-eslint/eslint-recommended",
+ "plugin:@typescript-eslint/recommended"
+ ],
+ "parserOptions": {
+ "sourceType": "module"
+ },
+ "rules": {
+ "no-unused-vars": "off",
+ "@typescript-eslint/no-unused-vars": ["error", { "args": "none" }],
+ "@typescript-eslint/ban-ts-comment": "off",
+ "no-prototype-builtins": "off",
+ "@typescript-eslint/no-empty-function": "off"
+ }
+ }
diff --git a/README.md b/README.md
index a5ebda3..083dcef 100644
--- a/README.md
+++ b/README.md
@@ -18,19 +18,19 @@ The plugin lets you customize the codeblocks in the following way:
- Exclude languages. You can define languages separated by a comma, to which the plugin will not apply.
- Set background color for codeblocks.
- Lets you highlight specific lines.
- - Customize highlight color
+ - Customize highlight color
- Lets you define multiple highlight colors to highlight lines.
- Display filename
- - If a filename is defined a header will be inserted, where it is possible to customize the text (color, bold, italic), and the header (color, header line) itself as well
+ - If a filename is defined a header will be inserted, where it is possible to customize the text (color, bold, italic), and the header (color, header line) itself as well
- Fold code
- - If the header is displayed (either by defining filename or other way explained below), you can click on the header to fold the codeblock below it
+ - If the header is displayed (either by defining filename or other way explained below), you can click on the header to fold the codeblock below it
- Display codeblock language. This displays the language (if specified) of the codeblock in the header.
- - Customize text color, background color, bold text, italic text for the language tag inside the header.
- - By default the language tag is only displayed, if the header is displayed, and a if a language is defined for a codeblock. You can however force, to always display the codeblock language, even if the header would not be displayed.
+ - Customize text color, background color, bold text, italic text for the language tag inside the header.
+ - By default the language tag is only displayed, if the header is displayed, and a if a language is defined for a codeblock. You can however force, to always display the codeblock language, even if the header would not be displayed.
- Display codeblock language icon (if available for the specified language) in the header.
- Add line numbers to codeblocks
- - Customize if the linenumber should also be highlighted, if a line is highlighted
- - Customize background color, and color of the line numbers
+ - Customize if the linenumber should also be highlighted, if a line is highlighted
+ - Customize background color, and color of the line numbers
## Themes
diff --git a/main.js b/main.js
index 3df8faa..242c722 100644
--- a/main.js
+++ b/main.js
@@ -10,706 +10,707 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __commonJS = (cb, mod) => function __require() {
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __export = (target, all) => {
- for (var name in all)
- __defProp(target, name, { get: all[name], enumerable: true });
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
- if (from && typeof from === "object" || typeof from === "function") {
- for (let key of __getOwnPropNames(from))
- if (!__hasOwnProp.call(to, key) && key !== except)
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
- }
- return to;
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
- // If the importer is in node compatibility mode or this is not an ESM
- // file that has been converted to a CommonJS file using a Babel-
- // compatible transform (i.e. "__esModule" has not been set), then set
- // "default" to the CommonJS "module.exports" for node compatibility.
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
- mod
+ // If the importer is in node compatibility mode or this is not an ESM
+ // file that has been converted to a CommonJS file using a Babel-
+ // compatible transform (i.e. "__esModule" has not been set), then set
+ // "default" to the CommonJS "module.exports" for node compatibility.
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
+ mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// node_modules/@simonwep/pickr/dist/pickr.min.js
var require_pickr_min = __commonJS({
- "node_modules/@simonwep/pickr/dist/pickr.min.js"(exports, module2) {
- !function(t2, e2) {
- "object" == typeof exports && "object" == typeof module2 ? module2.exports = e2() : "function" == typeof define && define.amd ? define([], e2) : "object" == typeof exports ? exports.Pickr = e2() : t2.Pickr = e2();
- }(self, function() {
- return (() => {
- "use strict";
- var t2 = { d: (e3, o3) => {
- for (var n3 in o3)
- t2.o(o3, n3) && !t2.o(e3, n3) && Object.defineProperty(e3, n3, { enumerable: true, get: o3[n3] });
- }, o: (t3, e3) => Object.prototype.hasOwnProperty.call(t3, e3), r: (t3) => {
- "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t3, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(t3, "__esModule", { value: true });
- } }, e2 = {};
- t2.d(e2, { default: () => L2 });
- var o2 = {};
- function n2(t3, e3, o3, n3, i3 = {}) {
- e3 instanceof HTMLCollection || e3 instanceof NodeList ? e3 = Array.from(e3) : Array.isArray(e3) || (e3 = [e3]), Array.isArray(o3) || (o3 = [o3]);
- for (const s3 of e3)
- for (const e4 of o3)
- s3[t3](e4, n3, { capture: false, ...i3 });
- return Array.prototype.slice.call(arguments, 1);
- }
- t2.r(o2), t2.d(o2, { adjustableInputNumbers: () => p2, createElementFromString: () => r2, createFromTemplate: () => a2, eventPath: () => l2, off: () => s2, on: () => i2, resolveElement: () => c2 });
- const i2 = n2.bind(null, "addEventListener"), s2 = n2.bind(null, "removeEventListener");
- function r2(t3) {
- const e3 = document.createElement("div");
- return e3.innerHTML = t3.trim(), e3.firstElementChild;
- }
- function a2(t3) {
- const e3 = (t4, e4) => {
- const o4 = t4.getAttribute(e4);
- return t4.removeAttribute(e4), o4;
- }, o3 = (t4, n3 = {}) => {
- const i3 = e3(t4, ":obj"), s3 = e3(t4, ":ref"), r3 = i3 ? n3[i3] = {} : n3;
- s3 && (n3[s3] = t4);
- for (const n4 of Array.from(t4.children)) {
- const t5 = e3(n4, ":arr"), i4 = o3(n4, t5 ? {} : r3);
- t5 && (r3[t5] || (r3[t5] = [])).push(Object.keys(i4).length ? i4 : n4);
- }
- return n3;
- };
- return o3(r2(t3));
- }
- function l2(t3) {
- let e3 = t3.path || t3.composedPath && t3.composedPath();
- if (e3)
- return e3;
- let o3 = t3.target.parentElement;
- for (e3 = [t3.target, o3]; o3 = o3.parentElement; )
- e3.push(o3);
- return e3.push(document, window), e3;
- }
- function c2(t3) {
- return t3 instanceof Element ? t3 : "string" == typeof t3 ? t3.split(/>>/g).reduce((t4, e3, o3, n3) => (t4 = t4.querySelector(e3), o3 < n3.length - 1 ? t4.shadowRoot : t4), document) : null;
- }
- function p2(t3, e3 = (t4) => t4) {
- function o3(o4) {
- const n3 = [1e-3, 0.01, 0.1][Number(o4.shiftKey || 2 * o4.ctrlKey)] * (o4.deltaY < 0 ? 1 : -1);
- let i3 = 0, s3 = t3.selectionStart;
- t3.value = t3.value.replace(/[\d.]+/g, (t4, o5) => o5 <= s3 && o5 + t4.length >= s3 ? (s3 = o5, e3(Number(t4), n3, i3)) : (i3++, t4)), t3.focus(), t3.setSelectionRange(s3, s3), o4.preventDefault(), t3.dispatchEvent(new Event("input"));
- }
- i2(t3, "focus", () => i2(window, "wheel", o3, { passive: false })), i2(t3, "blur", () => s2(window, "wheel", o3));
- }
- const { min: u2, max: h2, floor: d2, round: m2 } = Math;
- function f2(t3, e3, o3) {
- e3 /= 100, o3 /= 100;
- const n3 = d2(t3 = t3 / 360 * 6), i3 = t3 - n3, s3 = o3 * (1 - e3), r3 = o3 * (1 - i3 * e3), a3 = o3 * (1 - (1 - i3) * e3), l3 = n3 % 6;
- return [255 * [o3, r3, s3, s3, a3, o3][l3], 255 * [a3, o3, o3, r3, s3, s3][l3], 255 * [s3, s3, a3, o3, o3, r3][l3]];
- }
- function v2(t3, e3, o3) {
- const n3 = (2 - (e3 /= 100)) * (o3 /= 100) / 2;
- return 0 !== n3 && (e3 = 1 === n3 ? 0 : n3 < 0.5 ? e3 * o3 / (2 * n3) : e3 * o3 / (2 - 2 * n3)), [t3, 100 * e3, 100 * n3];
- }
- function b2(t3, e3, o3) {
- const n3 = u2(t3 /= 255, e3 /= 255, o3 /= 255), i3 = h2(t3, e3, o3), s3 = i3 - n3;
- let r3, a3;
- if (0 === s3)
- r3 = a3 = 0;
- else {
- a3 = s3 / i3;
- const n4 = ((i3 - t3) / 6 + s3 / 2) / s3, l3 = ((i3 - e3) / 6 + s3 / 2) / s3, c3 = ((i3 - o3) / 6 + s3 / 2) / s3;
- t3 === i3 ? r3 = c3 - l3 : e3 === i3 ? r3 = 1 / 3 + n4 - c3 : o3 === i3 && (r3 = 2 / 3 + l3 - n4), r3 < 0 ? r3 += 1 : r3 > 1 && (r3 -= 1);
- }
- return [360 * r3, 100 * a3, 100 * i3];
- }
- function y2(t3, e3, o3, n3) {
- e3 /= 100, o3 /= 100;
- return [...b2(255 * (1 - u2(1, (t3 /= 100) * (1 - (n3 /= 100)) + n3)), 255 * (1 - u2(1, e3 * (1 - n3) + n3)), 255 * (1 - u2(1, o3 * (1 - n3) + n3)))];
- }
- function g2(t3, e3, o3) {
- e3 /= 100;
- const n3 = 2 * (e3 *= (o3 /= 100) < 0.5 ? o3 : 1 - o3) / (o3 + e3) * 100, i3 = 100 * (o3 + e3);
- return [t3, isNaN(n3) ? 0 : n3, i3];
- }
- function _2(t3) {
- return b2(...t3.match(/.{2}/g).map((t4) => parseInt(t4, 16)));
- }
- function w2(t3) {
- t3 = t3.match(/^[a-zA-Z]+$/) ? function(t4) {
- if ("black" === t4.toLowerCase())
- return "#000";
- const e4 = document.createElement("canvas").getContext("2d");
- return e4.fillStyle = t4, "#000" === e4.fillStyle ? null : e4.fillStyle;
- }(t3) : t3;
- const e3 = { cmyk: /^cmyk[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)/i, rgba: /^((rgba)|rgb)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i, hsla: /^((hsla)|hsl)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i, hsva: /^((hsva)|hsv)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i, hexa: /^#?(([\dA-Fa-f]{3,4})|([\dA-Fa-f]{6})|([\dA-Fa-f]{8}))$/i }, o3 = (t4) => t4.map((t5) => /^(|\d+)\.\d+|\d+$/.test(t5) ? Number(t5) : void 0);
- let n3;
- t:
- for (const i3 in e3) {
- if (!(n3 = e3[i3].exec(t3)))
- continue;
- const s3 = (t4) => !!n3[2] == ("number" == typeof t4);
- switch (i3) {
- case "cmyk": {
- const [, t4, e4, s4, r3] = o3(n3);
- if (t4 > 100 || e4 > 100 || s4 > 100 || r3 > 100)
- break t;
- return { values: y2(t4, e4, s4, r3), type: i3 };
- }
- case "rgba": {
- const [, , , t4, e4, r3, a3] = o3(n3);
- if (t4 > 255 || e4 > 255 || r3 > 255 || a3 < 0 || a3 > 1 || !s3(a3))
- break t;
- return { values: [...b2(t4, e4, r3), a3], a: a3, type: i3 };
- }
- case "hexa": {
- let [, t4] = n3;
- 4 !== t4.length && 3 !== t4.length || (t4 = t4.split("").map((t5) => t5 + t5).join(""));
- const e4 = t4.substring(0, 6);
- let o4 = t4.substring(6);
- return o4 = o4 ? parseInt(o4, 16) / 255 : void 0, { values: [..._2(e4), o4], a: o4, type: i3 };
- }
- case "hsla": {
- const [, , , t4, e4, r3, a3] = o3(n3);
- if (t4 > 360 || e4 > 100 || r3 > 100 || a3 < 0 || a3 > 1 || !s3(a3))
- break t;
- return { values: [...g2(t4, e4, r3), a3], a: a3, type: i3 };
- }
- case "hsva": {
- const [, , , t4, e4, r3, a3] = o3(n3);
- if (t4 > 360 || e4 > 100 || r3 > 100 || a3 < 0 || a3 > 1 || !s3(a3))
- break t;
- return { values: [t4, e4, r3, a3], a: a3, type: i3 };
- }
- }
- }
- return { values: null, type: null };
- }
- function A2(t3 = 0, e3 = 0, o3 = 0, n3 = 1) {
- const i3 = (t4, e4) => (o4 = -1) => e4(~o4 ? t4.map((t5) => Number(t5.toFixed(o4))) : t4), s3 = { h: t3, s: e3, v: o3, a: n3, toHSVA() {
- const t4 = [s3.h, s3.s, s3.v, s3.a];
- return t4.toString = i3(t4, (t5) => `hsva(${t5[0]}, ${t5[1]}%, ${t5[2]}%, ${s3.a})`), t4;
- }, toHSLA() {
- const t4 = [...v2(s3.h, s3.s, s3.v), s3.a];
- return t4.toString = i3(t4, (t5) => `hsla(${t5[0]}, ${t5[1]}%, ${t5[2]}%, ${s3.a})`), t4;
- }, toRGBA() {
- const t4 = [...f2(s3.h, s3.s, s3.v), s3.a];
- return t4.toString = i3(t4, (t5) => `rgba(${t5[0]}, ${t5[1]}, ${t5[2]}, ${s3.a})`), t4;
- }, toCMYK() {
- const t4 = function(t5, e4, o4) {
- const n4 = f2(t5, e4, o4), i4 = n4[0] / 255, s4 = n4[1] / 255, r3 = n4[2] / 255, a3 = u2(1 - i4, 1 - s4, 1 - r3);
- return [100 * (1 === a3 ? 0 : (1 - i4 - a3) / (1 - a3)), 100 * (1 === a3 ? 0 : (1 - s4 - a3) / (1 - a3)), 100 * (1 === a3 ? 0 : (1 - r3 - a3) / (1 - a3)), 100 * a3];
- }(s3.h, s3.s, s3.v);
- return t4.toString = i3(t4, (t5) => `cmyk(${t5[0]}%, ${t5[1]}%, ${t5[2]}%, ${t5[3]}%)`), t4;
- }, toHEXA() {
- const t4 = function(t5, e5, o4) {
- return f2(t5, e5, o4).map((t6) => m2(t6).toString(16).padStart(2, "0"));
- }(s3.h, s3.s, s3.v), e4 = s3.a >= 1 ? "" : Number((255 * s3.a).toFixed(0)).toString(16).toUpperCase().padStart(2, "0");
- return e4 && t4.push(e4), t4.toString = () => `#${t4.join("").toUpperCase()}`, t4;
- }, clone: () => A2(s3.h, s3.s, s3.v, s3.a) };
- return s3;
- }
- const C2 = (t3) => Math.max(Math.min(t3, 1), 0);
- function $2(t3) {
- const e3 = { options: Object.assign({ lock: null, onchange: () => 0, onstop: () => 0 }, t3), _keyboard(t4) {
- const { options: o4 } = e3, { type: n4, key: i3 } = t4;
- if (document.activeElement === o4.wrapper) {
- const { lock: o5 } = e3.options, s3 = "ArrowUp" === i3, r4 = "ArrowRight" === i3, a3 = "ArrowDown" === i3, l3 = "ArrowLeft" === i3;
- if ("keydown" === n4 && (s3 || r4 || a3 || l3)) {
- let n5 = 0, i4 = 0;
- "v" === o5 ? n5 = s3 || r4 ? 1 : -1 : "h" === o5 ? n5 = s3 || r4 ? -1 : 1 : (i4 = s3 ? -1 : a3 ? 1 : 0, n5 = l3 ? -1 : r4 ? 1 : 0), e3.update(C2(e3.cache.x + 0.01 * n5), C2(e3.cache.y + 0.01 * i4)), t4.preventDefault();
- } else
- i3.startsWith("Arrow") && (e3.options.onstop(), t4.preventDefault());
- }
- }, _tapstart(t4) {
- i2(document, ["mouseup", "touchend", "touchcancel"], e3._tapstop), i2(document, ["mousemove", "touchmove"], e3._tapmove), t4.cancelable && t4.preventDefault(), e3._tapmove(t4);
- }, _tapmove(t4) {
- const { options: o4, cache: n4 } = e3, { lock: i3, element: s3, wrapper: r4 } = o4, a3 = r4.getBoundingClientRect();
- let l3 = 0, c3 = 0;
- if (t4) {
- const e4 = t4 && t4.touches && t4.touches[0];
- l3 = t4 ? (e4 || t4).clientX : 0, c3 = t4 ? (e4 || t4).clientY : 0, l3 < a3.left ? l3 = a3.left : l3 > a3.left + a3.width && (l3 = a3.left + a3.width), c3 < a3.top ? c3 = a3.top : c3 > a3.top + a3.height && (c3 = a3.top + a3.height), l3 -= a3.left, c3 -= a3.top;
- } else
- n4 && (l3 = n4.x * a3.width, c3 = n4.y * a3.height);
- "h" !== i3 && (s3.style.left = `calc(${l3 / a3.width * 100}% - ${s3.offsetWidth / 2}px)`), "v" !== i3 && (s3.style.top = `calc(${c3 / a3.height * 100}% - ${s3.offsetHeight / 2}px)`), e3.cache = { x: l3 / a3.width, y: c3 / a3.height };
- const p3 = C2(l3 / a3.width), u3 = C2(c3 / a3.height);
- switch (i3) {
- case "v":
- return o4.onchange(p3);
- case "h":
- return o4.onchange(u3);
- default:
- return o4.onchange(p3, u3);
- }
- }, _tapstop() {
- e3.options.onstop(), s2(document, ["mouseup", "touchend", "touchcancel"], e3._tapstop), s2(document, ["mousemove", "touchmove"], e3._tapmove);
- }, trigger() {
- e3._tapmove();
- }, update(t4 = 0, o4 = 0) {
- const { left: n4, top: i3, width: s3, height: r4 } = e3.options.wrapper.getBoundingClientRect();
- "h" === e3.options.lock && (o4 = t4), e3._tapmove({ clientX: n4 + s3 * t4, clientY: i3 + r4 * o4 });
- }, destroy() {
- const { options: t4, _tapstart: o4, _keyboard: n4 } = e3;
- s2(document, ["keydown", "keyup"], n4), s2([t4.wrapper, t4.element], "mousedown", o4), s2([t4.wrapper, t4.element], "touchstart", o4, { passive: false });
- } }, { options: o3, _tapstart: n3, _keyboard: r3 } = e3;
- return i2([o3.wrapper, o3.element], "mousedown", n3), i2([o3.wrapper, o3.element], "touchstart", n3, { passive: false }), i2(document, ["keydown", "keyup"], r3), e3;
- }
- function k2(t3 = {}) {
- t3 = Object.assign({ onchange: () => 0, className: "", elements: [] }, t3);
- const e3 = i2(t3.elements, "click", (e4) => {
- t3.elements.forEach((o3) => o3.classList[e4.target === o3 ? "add" : "remove"](t3.className)), t3.onchange(e4), e4.stopPropagation();
- });
- return { destroy: () => s2(...e3) };
- }
- const S2 = { variantFlipOrder: { start: "sme", middle: "mse", end: "ems" }, positionFlipOrder: { top: "tbrl", right: "rltb", bottom: "btrl", left: "lrbt" }, position: "bottom", margin: 8 }, O2 = (t3, e3, o3) => {
- const { container: n3, margin: i3, position: s3, variantFlipOrder: r3, positionFlipOrder: a3 } = { container: document.documentElement.getBoundingClientRect(), ...S2, ...o3 }, { left: l3, top: c3 } = e3.style;
- e3.style.left = "0", e3.style.top = "0";
- const p3 = t3.getBoundingClientRect(), u3 = e3.getBoundingClientRect(), h3 = { t: p3.top - u3.height - i3, b: p3.bottom + i3, r: p3.right + i3, l: p3.left - u3.width - i3 }, d3 = { vs: p3.left, vm: p3.left + p3.width / 2 + -u3.width / 2, ve: p3.left + p3.width - u3.width, hs: p3.top, hm: p3.bottom - p3.height / 2 - u3.height / 2, he: p3.bottom - u3.height }, [m3, f3 = "middle"] = s3.split("-"), v3 = a3[m3], b3 = r3[f3], { top: y3, left: g3, bottom: _3, right: w3 } = n3;
- for (const t4 of v3) {
- const o4 = "t" === t4 || "b" === t4, n4 = h3[t4], [i4, s4] = o4 ? ["top", "left"] : ["left", "top"], [r4, a4] = o4 ? [u3.height, u3.width] : [u3.width, u3.height], [l4, c4] = o4 ? [_3, w3] : [w3, _3], [p4, m4] = o4 ? [y3, g3] : [g3, y3];
- if (!(n4 < p4 || n4 + r4 > l4))
- for (const r5 of b3) {
- const l5 = d3[(o4 ? "v" : "h") + r5];
- if (!(l5 < m4 || l5 + a4 > c4))
- return e3.style[s4] = l5 - u3[s4] + "px", e3.style[i4] = n4 - u3[i4] + "px", t4 + r5;
- }
- }
- return e3.style.left = l3, e3.style.top = c3, null;
- };
- function E2(t3, e3, o3) {
- return e3 in t3 ? Object.defineProperty(t3, e3, { value: o3, enumerable: true, configurable: true, writable: true }) : t3[e3] = o3, t3;
- }
- class L2 {
- constructor(t3) {
- E2(this, "_initializingActive", true), E2(this, "_recalc", true), E2(this, "_nanopop", null), E2(this, "_root", null), E2(this, "_color", A2()), E2(this, "_lastColor", A2()), E2(this, "_swatchColors", []), E2(this, "_setupAnimationFrame", null), E2(this, "_eventListener", { init: [], save: [], hide: [], show: [], clear: [], change: [], changestop: [], cancel: [], swatchselect: [] }), this.options = t3 = Object.assign({ ...L2.DEFAULT_OPTIONS }, t3);
- const { swatches: e3, components: o3, theme: n3, sliders: i3, lockOpacity: s3, padding: r3 } = t3;
- ["nano", "monolith"].includes(n3) && !i3 && (t3.sliders = "h"), o3.interaction || (o3.interaction = {});
- const { preview: a3, opacity: l3, hue: c3, palette: p3 } = o3;
- o3.opacity = !s3 && l3, o3.palette = p3 || a3 || l3 || c3, this._preBuild(), this._buildComponents(), this._bindEvents(), this._finalBuild(), e3 && e3.length && e3.forEach((t4) => this.addSwatch(t4));
- const { button: u3, app: h3 } = this._root;
- this._nanopop = ((t4, e4, o4) => {
- const n4 = "object" != typeof t4 || t4 instanceof HTMLElement ? { reference: t4, popper: e4, ...o4 } : t4;
- return { update(t5 = n4) {
- const { reference: e5, popper: o5 } = Object.assign(n4, t5);
- if (!o5 || !e5)
- throw new Error("Popper- or reference-element missing.");
- return O2(e5, o5, n4);
- } };
- })(u3, h3, { margin: r3 }), u3.setAttribute("role", "button"), u3.setAttribute("aria-label", this._t("btn:toggle"));
- const d3 = this;
- this._setupAnimationFrame = requestAnimationFrame(function e4() {
- if (!h3.offsetWidth)
- return requestAnimationFrame(e4);
- d3.setColor(t3.default), d3._rePositioningPicker(), t3.defaultRepresentation && (d3._representation = t3.defaultRepresentation, d3.setColorRepresentation(d3._representation)), t3.showAlways && d3.show(), d3._initializingActive = false, d3._emit("init");
- });
- }
- _preBuild() {
- const { options: t3 } = this;
- for (const e3 of ["el", "container"])
- t3[e3] = c2(t3[e3]);
- this._root = ((t4) => {
- const { components: e3, useAsButton: o3, inline: n3, appClass: i3, theme: s3, lockOpacity: r3 } = t4.options, l3 = (t5) => t5 ? "" : 'style="display:none" hidden', c3 = (e4) => t4._t(e4), p3 = a2(`
-
+ "node_modules/@simonwep/pickr/dist/pickr.min.js"(exports, module2) {
+ !function(t2, e2) {
+ "object" == typeof exports && "object" == typeof module2 ? module2.exports = e2() : "function" == typeof define && define.amd ? define([], e2) : "object" == typeof exports ? exports.Pickr = e2() : t2.Pickr = e2();
+ }(self, function() {
+ return (() => {
+ "use strict";
+ var t2 = { d: (e3, o3) => {
+ for (var n3 in o3)
+ t2.o(o3, n3) && !t2.o(e3, n3) && Object.defineProperty(e3, n3, { enumerable: true, get: o3[n3] });
+ }, o: (t3, e3) => Object.prototype.hasOwnProperty.call(t3, e3), r: (t3) => {
+ "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t3, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(t3, "__esModule", { value: true });
+ } }, e2 = {};
+ t2.d(e2, { default: () => L2 });
+ var o2 = {};
+ function n2(t3, e3, o3, n3, i3 = {}) {
+ e3 instanceof HTMLCollection || e3 instanceof NodeList ? e3 = Array.from(e3) : Array.isArray(e3) || (e3 = [e3]), Array.isArray(o3) || (o3 = [o3]);
+ for (const s3 of e3)
+ for (const e4 of o3)
+ s3[t3](e4, n3, { capture: false, ...i3 });
+ return Array.prototype.slice.call(arguments, 1);
+ }
+ t2.r(o2), t2.d(o2, { adjustableInputNumbers: () => p2, createElementFromString: () => r2, createFromTemplate: () => a2, eventPath: () => l2, off: () => s2, on: () => i2, resolveElement: () => c2 });
+ const i2 = n2.bind(null, "addEventListener"), s2 = n2.bind(null, "removeEventListener");
+ function r2(t3) {
+ const e3 = document.createElement("div");
+ return e3.innerHTML = t3.trim(), e3.firstElementChild;
+ }
+ function a2(t3) {
+ const e3 = (t4, e4) => {
+ const o4 = t4.getAttribute(e4);
+ return t4.removeAttribute(e4), o4;
+ }, o3 = (t4, n3 = {}) => {
+ const i3 = e3(t4, ":obj"), s3 = e3(t4, ":ref"), r3 = i3 ? n3[i3] = {} : n3;
+ s3 && (n3[s3] = t4);
+ for (const n4 of Array.from(t4.children)) {
+ const t5 = e3(n4, ":arr"), i4 = o3(n4, t5 ? {} : r3);
+ t5 && (r3[t5] || (r3[t5] = [])).push(Object.keys(i4).length ? i4 : n4);
+ }
+ return n3;
+ };
+ return o3(r2(t3));
+ }
+ function l2(t3) {
+ let e3 = t3.path || t3.composedPath && t3.composedPath();
+ if (e3)
+ return e3;
+ let o3 = t3.target.parentElement;
+ for (e3 = [t3.target, o3]; o3 = o3.parentElement; )
+ e3.push(o3);
+ return e3.push(document, window), e3;
+ }
+ function c2(t3) {
+ return t3 instanceof Element ? t3 : "string" == typeof t3 ? t3.split(/>>/g).reduce((t4, e3, o3, n3) => (t4 = t4.querySelector(e3), o3 < n3.length - 1 ? t4.shadowRoot : t4), document) : null;
+ }
+ function p2(t3, e3 = (t4) => t4) {
+ function o3(o4) {
+ const n3 = [1e-3, 0.01, 0.1][Number(o4.shiftKey || 2 * o4.ctrlKey)] * (o4.deltaY < 0 ? 1 : -1);
+ let i3 = 0, s3 = t3.selectionStart;
+ t3.value = t3.value.replace(/[\d.]+/g, (t4, o5) => o5 <= s3 && o5 + t4.length >= s3 ? (s3 = o5, e3(Number(t4), n3, i3)) : (i3++, t4)), t3.focus(), t3.setSelectionRange(s3, s3), o4.preventDefault(), t3.dispatchEvent(new Event("input"));
+ }
+ i2(t3, "focus", () => i2(window, "wheel", o3, { passive: false })), i2(t3, "blur", () => s2(window, "wheel", o3));
+ }
+ const { min: u2, max: h2, floor: d2, round: m2 } = Math;
+ function f2(t3, e3, o3) {
+ e3 /= 100, o3 /= 100;
+ const n3 = d2(t3 = t3 / 360 * 6), i3 = t3 - n3, s3 = o3 * (1 - e3), r3 = o3 * (1 - i3 * e3), a3 = o3 * (1 - (1 - i3) * e3), l3 = n3 % 6;
+ return [255 * [o3, r3, s3, s3, a3, o3][l3], 255 * [a3, o3, o3, r3, s3, s3][l3], 255 * [s3, s3, a3, o3, o3, r3][l3]];
+ }
+ function v2(t3, e3, o3) {
+ const n3 = (2 - (e3 /= 100)) * (o3 /= 100) / 2;
+ return 0 !== n3 && (e3 = 1 === n3 ? 0 : n3 < 0.5 ? e3 * o3 / (2 * n3) : e3 * o3 / (2 - 2 * n3)), [t3, 100 * e3, 100 * n3];
+ }
+ function b2(t3, e3, o3) {
+ const n3 = u2(t3 /= 255, e3 /= 255, o3 /= 255), i3 = h2(t3, e3, o3), s3 = i3 - n3;
+ let r3, a3;
+ if (0 === s3)
+ r3 = a3 = 0;
+ else {
+ a3 = s3 / i3;
+ const n4 = ((i3 - t3) / 6 + s3 / 2) / s3, l3 = ((i3 - e3) / 6 + s3 / 2) / s3, c3 = ((i3 - o3) / 6 + s3 / 2) / s3;
+ t3 === i3 ? r3 = c3 - l3 : e3 === i3 ? r3 = 1 / 3 + n4 - c3 : o3 === i3 && (r3 = 2 / 3 + l3 - n4), r3 < 0 ? r3 += 1 : r3 > 1 && (r3 -= 1);
+ }
+ return [360 * r3, 100 * a3, 100 * i3];
+ }
+ function y2(t3, e3, o3, n3) {
+ e3 /= 100, o3 /= 100;
+ return [...b2(255 * (1 - u2(1, (t3 /= 100) * (1 - (n3 /= 100)) + n3)), 255 * (1 - u2(1, e3 * (1 - n3) + n3)), 255 * (1 - u2(1, o3 * (1 - n3) + n3)))];
+ }
+ function g2(t3, e3, o3) {
+ e3 /= 100;
+ const n3 = 2 * (e3 *= (o3 /= 100) < 0.5 ? o3 : 1 - o3) / (o3 + e3) * 100, i3 = 100 * (o3 + e3);
+ return [t3, isNaN(n3) ? 0 : n3, i3];
+ }
+ function _2(t3) {
+ return b2(...t3.match(/.{2}/g).map((t4) => parseInt(t4, 16)));
+ }
+ function w2(t3) {
+ t3 = t3.match(/^[a-zA-Z]+$/) ? function(t4) {
+ if ("black" === t4.toLowerCase())
+ return "#000";
+ const e4 = document.createElement("canvas").getContext("2d");
+ return e4.fillStyle = t4, "#000" === e4.fillStyle ? null : e4.fillStyle;
+ }(t3) : t3;
+ const e3 = { cmyk: /^cmyk[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)/i, rgba: /^((rgba)|rgb)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i, hsla: /^((hsla)|hsl)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i, hsva: /^((hsva)|hsv)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i, hexa: /^#?(([\dA-Fa-f]{3,4})|([\dA-Fa-f]{6})|([\dA-Fa-f]{8}))$/i }, o3 = (t4) => t4.map((t5) => /^(|\d+)\.\d+|\d+$/.test(t5) ? Number(t5) : void 0);
+ let n3;
+ t:
+ for (const i3 in e3) {
+ if (!(n3 = e3[i3].exec(t3)))
+ continue;
+ const s3 = (t4) => !!n3[2] == ("number" == typeof t4);
+ switch (i3) {
+ case "cmyk": {
+ const [, t4, e4, s4, r3] = o3(n3);
+ if (t4 > 100 || e4 > 100 || s4 > 100 || r3 > 100)
+ break t;
+ return { values: y2(t4, e4, s4, r3), type: i3 };
+ }
+ case "rgba": {
+ const [, , , t4, e4, r3, a3] = o3(n3);
+ if (t4 > 255 || e4 > 255 || r3 > 255 || a3 < 0 || a3 > 1 || !s3(a3))
+ break t;
+ return { values: [...b2(t4, e4, r3), a3], a: a3, type: i3 };
+ }
+ case "hexa": {
+ let [, t4] = n3;
+ 4 !== t4.length && 3 !== t4.length || (t4 = t4.split("").map((t5) => t5 + t5).join(""));
+ const e4 = t4.substring(0, 6);
+ let o4 = t4.substring(6);
+ return o4 = o4 ? parseInt(o4, 16) / 255 : void 0, { values: [..._2(e4), o4], a: o4, type: i3 };
+ }
+ case "hsla": {
+ const [, , , t4, e4, r3, a3] = o3(n3);
+ if (t4 > 360 || e4 > 100 || r3 > 100 || a3 < 0 || a3 > 1 || !s3(a3))
+ break t;
+ return { values: [...g2(t4, e4, r3), a3], a: a3, type: i3 };
+ }
+ case "hsva": {
+ const [, , , t4, e4, r3, a3] = o3(n3);
+ if (t4 > 360 || e4 > 100 || r3 > 100 || a3 < 0 || a3 > 1 || !s3(a3))
+ break t;
+ return { values: [t4, e4, r3, a3], a: a3, type: i3 };
+ }
+ }
+ }
+ return { values: null, type: null };
+ }
+ function A2(t3 = 0, e3 = 0, o3 = 0, n3 = 1) {
+ const i3 = (t4, e4) => (o4 = -1) => e4(~o4 ? t4.map((t5) => Number(t5.toFixed(o4))) : t4), s3 = { h: t3, s: e3, v: o3, a: n3, toHSVA() {
+ const t4 = [s3.h, s3.s, s3.v, s3.a];
+ return t4.toString = i3(t4, (t5) => `hsva(${t5[0]}, ${t5[1]}%, ${t5[2]}%, ${s3.a})`), t4;
+ }, toHSLA() {
+ const t4 = [...v2(s3.h, s3.s, s3.v), s3.a];
+ return t4.toString = i3(t4, (t5) => `hsla(${t5[0]}, ${t5[1]}%, ${t5[2]}%, ${s3.a})`), t4;
+ }, toRGBA() {
+ const t4 = [...f2(s3.h, s3.s, s3.v), s3.a];
+ return t4.toString = i3(t4, (t5) => `rgba(${t5[0]}, ${t5[1]}, ${t5[2]}, ${s3.a})`), t4;
+ }, toCMYK() {
+ const t4 = function(t5, e4, o4) {
+ const n4 = f2(t5, e4, o4), i4 = n4[0] / 255, s4 = n4[1] / 255, r3 = n4[2] / 255, a3 = u2(1 - i4, 1 - s4, 1 - r3);
+ return [100 * (1 === a3 ? 0 : (1 - i4 - a3) / (1 - a3)), 100 * (1 === a3 ? 0 : (1 - s4 - a3) / (1 - a3)), 100 * (1 === a3 ? 0 : (1 - r3 - a3) / (1 - a3)), 100 * a3];
+ }(s3.h, s3.s, s3.v);
+ return t4.toString = i3(t4, (t5) => `cmyk(${t5[0]}%, ${t5[1]}%, ${t5[2]}%, ${t5[3]}%)`), t4;
+ }, toHEXA() {
+ const t4 = function(t5, e5, o4) {
+ return f2(t5, e5, o4).map((t6) => m2(t6).toString(16).padStart(2, "0"));
+ }(s3.h, s3.s, s3.v), e4 = s3.a >= 1 ? "" : Number((255 * s3.a).toFixed(0)).toString(16).toUpperCase().padStart(2, "0");
+ return e4 && t4.push(e4), t4.toString = () => `#${t4.join("").toUpperCase()}`, t4;
+ }, clone: () => A2(s3.h, s3.s, s3.v, s3.a) };
+ return s3;
+ }
+ const C2 = (t3) => Math.max(Math.min(t3, 1), 0);
+ function $2(t3) {
+ const e3 = { options: Object.assign({ lock: null, onchange: () => 0, onstop: () => 0 }, t3), _keyboard(t4) {
+ const { options: o4 } = e3, { type: n4, key: i3 } = t4;
+ if (document.activeElement === o4.wrapper) {
+ const { lock: o5 } = e3.options, s3 = "ArrowUp" === i3, r4 = "ArrowRight" === i3, a3 = "ArrowDown" === i3, l3 = "ArrowLeft" === i3;
+ if ("keydown" === n4 && (s3 || r4 || a3 || l3)) {
+ let n5 = 0, i4 = 0;
+ "v" === o5 ? n5 = s3 || r4 ? 1 : -1 : "h" === o5 ? n5 = s3 || r4 ? -1 : 1 : (i4 = s3 ? -1 : a3 ? 1 : 0, n5 = l3 ? -1 : r4 ? 1 : 0), e3.update(C2(e3.cache.x + 0.01 * n5), C2(e3.cache.y + 0.01 * i4)), t4.preventDefault();
+ } else
+ i3.startsWith("Arrow") && (e3.options.onstop(), t4.preventDefault());
+ }
+ }, _tapstart(t4) {
+ i2(document, ["mouseup", "touchend", "touchcancel"], e3._tapstop), i2(document, ["mousemove", "touchmove"], e3._tapmove), t4.cancelable && t4.preventDefault(), e3._tapmove(t4);
+ }, _tapmove(t4) {
+ const { options: o4, cache: n4 } = e3, { lock: i3, element: s3, wrapper: r4 } = o4, a3 = r4.getBoundingClientRect();
+ let l3 = 0, c3 = 0;
+ if (t4) {
+ const e4 = t4 && t4.touches && t4.touches[0];
+ l3 = t4 ? (e4 || t4).clientX : 0, c3 = t4 ? (e4 || t4).clientY : 0, l3 < a3.left ? l3 = a3.left : l3 > a3.left + a3.width && (l3 = a3.left + a3.width), c3 < a3.top ? c3 = a3.top : c3 > a3.top + a3.height && (c3 = a3.top + a3.height), l3 -= a3.left, c3 -= a3.top;
+ } else
+ n4 && (l3 = n4.x * a3.width, c3 = n4.y * a3.height);
+ "h" !== i3 && (s3.style.left = `calc(${l3 / a3.width * 100}% - ${s3.offsetWidth / 2}px)`), "v" !== i3 && (s3.style.top = `calc(${c3 / a3.height * 100}% - ${s3.offsetHeight / 2}px)`), e3.cache = { x: l3 / a3.width, y: c3 / a3.height };
+ const p3 = C2(l3 / a3.width), u3 = C2(c3 / a3.height);
+ switch (i3) {
+ case "v":
+ return o4.onchange(p3);
+ case "h":
+ return o4.onchange(u3);
+ default:
+ return o4.onchange(p3, u3);
+ }
+ }, _tapstop() {
+ e3.options.onstop(), s2(document, ["mouseup", "touchend", "touchcancel"], e3._tapstop), s2(document, ["mousemove", "touchmove"], e3._tapmove);
+ }, trigger() {
+ e3._tapmove();
+ }, update(t4 = 0, o4 = 0) {
+ const { left: n4, top: i3, width: s3, height: r4 } = e3.options.wrapper.getBoundingClientRect();
+ "h" === e3.options.lock && (o4 = t4), e3._tapmove({ clientX: n4 + s3 * t4, clientY: i3 + r4 * o4 });
+ }, destroy() {
+ const { options: t4, _tapstart: o4, _keyboard: n4 } = e3;
+ s2(document, ["keydown", "keyup"], n4), s2([t4.wrapper, t4.element], "mousedown", o4), s2([t4.wrapper, t4.element], "touchstart", o4, { passive: false });
+ } }, { options: o3, _tapstart: n3, _keyboard: r3 } = e3;
+ return i2([o3.wrapper, o3.element], "mousedown", n3), i2([o3.wrapper, o3.element], "touchstart", n3, { passive: false }), i2(document, ["keydown", "keyup"], r3), e3;
+ }
+ function k2(t3 = {}) {
+ t3 = Object.assign({ onchange: () => 0, className: "", elements: [] }, t3);
+ const e3 = i2(t3.elements, "click", (e4) => {
+ t3.elements.forEach((o3) => o3.classList[e4.target === o3 ? "add" : "remove"](t3.className)), t3.onchange(e4), e4.stopPropagation();
+ });
+ return { destroy: () => s2(...e3) };
+ }
+ const S2 = { variantFlipOrder: { start: "sme", middle: "mse", end: "ems" }, positionFlipOrder: { top: "tbrl", right: "rltb", bottom: "btrl", left: "lrbt" }, position: "bottom", margin: 8 }, O2 = (t3, e3, o3) => {
+ const { container: n3, margin: i3, position: s3, variantFlipOrder: r3, positionFlipOrder: a3 } = { container: document.documentElement.getBoundingClientRect(), ...S2, ...o3 }, { left: l3, top: c3 } = e3.style;
+ e3.style.left = "0", e3.style.top = "0";
+ const p3 = t3.getBoundingClientRect(), u3 = e3.getBoundingClientRect(), h3 = { t: p3.top - u3.height - i3, b: p3.bottom + i3, r: p3.right + i3, l: p3.left - u3.width - i3 }, d3 = { vs: p3.left, vm: p3.left + p3.width / 2 + -u3.width / 2, ve: p3.left + p3.width - u3.width, hs: p3.top, hm: p3.bottom - p3.height / 2 - u3.height / 2, he: p3.bottom - u3.height }, [m3, f3 = "middle"] = s3.split("-"), v3 = a3[m3], b3 = r3[f3], { top: y3, left: g3, bottom: _3, right: w3 } = n3;
+ for (const t4 of v3) {
+ const o4 = "t" === t4 || "b" === t4, n4 = h3[t4], [i4, s4] = o4 ? ["top", "left"] : ["left", "top"], [r4, a4] = o4 ? [u3.height, u3.width] : [u3.width, u3.height], [l4, c4] = o4 ? [_3, w3] : [w3, _3], [p4, m4] = o4 ? [y3, g3] : [g3, y3];
+ if (!(n4 < p4 || n4 + r4 > l4))
+ for (const r5 of b3) {
+ const l5 = d3[(o4 ? "v" : "h") + r5];
+ if (!(l5 < m4 || l5 + a4 > c4))
+ return e3.style[s4] = l5 - u3[s4] + "px", e3.style[i4] = n4 - u3[i4] + "px", t4 + r5;
+ }
+ }
+ return e3.style.left = l3, e3.style.top = c3, null;
+ };
+ function E2(t3, e3, o3) {
+ return e3 in t3 ? Object.defineProperty(t3, e3, { value: o3, enumerable: true, configurable: true, writable: true }) : t3[e3] = o3, t3;
+ }
+ class L2 {
+ constructor(t3) {
+ E2(this, "_initializingActive", true), E2(this, "_recalc", true), E2(this, "_nanopop", null), E2(this, "_root", null), E2(this, "_color", A2()), E2(this, "_lastColor", A2()), E2(this, "_swatchColors", []), E2(this, "_setupAnimationFrame", null), E2(this, "_eventListener", { init: [], save: [], hide: [], show: [], clear: [], change: [], changestop: [], cancel: [], swatchselect: [] }), this.options = t3 = Object.assign({ ...L2.DEFAULT_OPTIONS }, t3);
+ const { swatches: e3, components: o3, theme: n3, sliders: i3, lockOpacity: s3, padding: r3 } = t3;
+ ["nano", "monolith"].includes(n3) && !i3 && (t3.sliders = "h"), o3.interaction || (o3.interaction = {});
+ const { preview: a3, opacity: l3, hue: c3, palette: p3 } = o3;
+ o3.opacity = !s3 && l3, o3.palette = p3 || a3 || l3 || c3, this._preBuild(), this._buildComponents(), this._bindEvents(), this._finalBuild(), e3 && e3.length && e3.forEach((t4) => this.addSwatch(t4));
+ const { button: u3, app: h3 } = this._root;
+ this._nanopop = ((t4, e4, o4) => {
+ const n4 = "object" != typeof t4 || t4 instanceof HTMLElement ? { reference: t4, popper: e4, ...o4 } : t4;
+ return { update(t5 = n4) {
+ const { reference: e5, popper: o5 } = Object.assign(n4, t5);
+ if (!o5 || !e5)
+ throw new Error("Popper- or reference-element missing.");
+ return O2(e5, o5, n4);
+ } };
+ })(u3, h3, { margin: r3 }), u3.setAttribute("role", "button"), u3.setAttribute("aria-label", this._t("btn:toggle"));
+ const d3 = this;
+ this._setupAnimationFrame = requestAnimationFrame(function e4() {
+ if (!h3.offsetWidth)
+ return requestAnimationFrame(e4);
+ d3.setColor(t3.default), d3._rePositioningPicker(), t3.defaultRepresentation && (d3._representation = t3.defaultRepresentation, d3.setColorRepresentation(d3._representation)), t3.showAlways && d3.show(), d3._initializingActive = false, d3._emit("init");
+ });
+ }
+ _preBuild() {
+ const { options: t3 } = this;
+ for (const e3 of ["el", "container"])
+ t3[e3] = c2(t3[e3]);
+ this._root = ((t4) => {
+ const { components: e3, useAsButton: o3, inline: n3, appClass: i3, theme: s3, lockOpacity: r3 } = t4.options, l3 = (t5) => t5 ? "" : 'style="display:none" hidden', c3 = (e4) => t4._t(e4), p3 = a2(`
+
- ${o3 ? "" : '
'}
+ ${o3 ? "" : '
'}
-
-
- `), u3 = p3.interaction;
- return u3.options.find((t5) => !t5.hidden && !t5.classList.add("active")), u3.type = () => u3.options.find((t5) => t5.classList.contains("active")), p3;
- })(this), t3.useAsButton && (this._root.button = t3.el), t3.container.appendChild(this._root.root);
- }
- _finalBuild() {
- const t3 = this.options, e3 = this._root;
- if (t3.container.removeChild(e3.root), t3.inline) {
- const o3 = t3.el.parentElement;
- t3.el.nextSibling ? o3.insertBefore(e3.app, t3.el.nextSibling) : o3.appendChild(e3.app);
- } else
- t3.container.appendChild(e3.app);
- t3.useAsButton ? t3.inline && t3.el.remove() : t3.el.parentNode.replaceChild(e3.root, t3.el), t3.disabled && this.disable(), t3.comparison || (e3.button.style.transition = "none", t3.useAsButton || (e3.preview.lastColor.style.transition = "none")), this.hide();
- }
- _buildComponents() {
- const t3 = this, e3 = this.options.components, o3 = (t3.options.sliders || "v").repeat(2), [n3, i3] = o3.match(/^[vh]+$/g) ? o3 : [], s3 = () => this._color || (this._color = this._lastColor.clone()), r3 = { palette: $2({ element: t3._root.palette.picker, wrapper: t3._root.palette.palette, onstop: () => t3._emit("changestop", "slider", t3), onchange(o4, n4) {
- if (!e3.palette)
- return;
- const i4 = s3(), { _root: r4, options: a3 } = t3, { lastColor: l3, currentColor: c3 } = r4.preview;
- t3._recalc && (i4.s = 100 * o4, i4.v = 100 - 100 * n4, i4.v < 0 && (i4.v = 0), t3._updateOutput("slider"));
- const p3 = i4.toRGBA().toString(0);
- this.element.style.background = p3, this.wrapper.style.background = `
- linear-gradient(to top, rgba(0, 0, 0, ${i4.a}), transparent),
- linear-gradient(to left, hsla(${i4.h}, 100%, 50%, ${i4.a}), rgba(255, 255, 255, ${i4.a}))
- `, a3.comparison ? a3.useAsButton || t3._lastColor || l3.style.setProperty("--pcr-color", p3) : (r4.button.style.setProperty("--pcr-color", p3), r4.button.classList.remove("clear"));
- const u3 = i4.toHEXA().toString();
- for (const { el: e4, color: o5 } of t3._swatchColors)
- e4.classList[u3 === o5.toHEXA().toString() ? "add" : "remove"]("pcr-active");
- c3.style.setProperty("--pcr-color", p3);
- } }), hue: $2({ lock: "v" === i3 ? "h" : "v", element: t3._root.hue.picker, wrapper: t3._root.hue.slider, onstop: () => t3._emit("changestop", "slider", t3), onchange(o4) {
- if (!e3.hue || !e3.palette)
- return;
- const n4 = s3();
- t3._recalc && (n4.h = 360 * o4), this.element.style.backgroundColor = `hsl(${n4.h}, 100%, 50%)`, r3.palette.trigger();
- } }), opacity: $2({ lock: "v" === n3 ? "h" : "v", element: t3._root.opacity.picker, wrapper: t3._root.opacity.slider, onstop: () => t3._emit("changestop", "slider", t3), onchange(o4) {
- if (!e3.opacity || !e3.palette)
- return;
- const n4 = s3();
- t3._recalc && (n4.a = Math.round(100 * o4) / 100), this.element.style.background = `rgba(0, 0, 0, ${n4.a})`, r3.palette.trigger();
- } }), selectable: k2({ elements: t3._root.interaction.options, className: "active", onchange(e4) {
- t3._representation = e4.target.getAttribute("data-type").toUpperCase(), t3._recalc && t3._updateOutput("swatch");
- } }) };
- this._components = r3;
- }
- _bindEvents() {
- const { _root: t3, options: e3 } = this, o3 = [i2(t3.interaction.clear, "click", () => this._clearColor()), i2([t3.interaction.cancel, t3.preview.lastColor], "click", () => {
- this.setHSVA(...(this._lastColor || this._color).toHSVA(), true), this._emit("cancel");
- }), i2(t3.interaction.save, "click", () => {
- !this.applyColor() && !e3.showAlways && this.hide();
- }), i2(t3.interaction.result, ["keyup", "input"], (t4) => {
- this.setColor(t4.target.value, true) && !this._initializingActive && (this._emit("change", this._color, "input", this), this._emit("changestop", "input", this)), t4.stopImmediatePropagation();
- }), i2(t3.interaction.result, ["focus", "blur"], (t4) => {
- this._recalc = "blur" === t4.type, this._recalc && this._updateOutput(null);
- }), i2([t3.palette.palette, t3.palette.picker, t3.hue.slider, t3.hue.picker, t3.opacity.slider, t3.opacity.picker], ["mousedown", "touchstart"], () => this._recalc = true, { passive: true })];
- if (!e3.showAlways) {
- const n3 = e3.closeWithKey;
- o3.push(i2(t3.button, "click", () => this.isOpen() ? this.hide() : this.show()), i2(document, "keyup", (t4) => this.isOpen() && (t4.key === n3 || t4.code === n3) && this.hide()), i2(document, ["touchstart", "mousedown"], (e4) => {
- this.isOpen() && !l2(e4).some((e5) => e5 === t3.app || e5 === t3.button) && this.hide();
- }, { capture: true }));
- }
- if (e3.adjustableNumbers) {
- const e4 = { rgba: [255, 255, 255, 1], hsva: [360, 100, 100, 1], hsla: [360, 100, 100, 1], cmyk: [100, 100, 100, 100] };
- p2(t3.interaction.result, (t4, o4, n3) => {
- const i3 = e4[this.getColorRepresentation().toLowerCase()];
- if (i3) {
- const e5 = i3[n3], s3 = t4 + (e5 >= 100 ? 1e3 * o4 : o4);
- return s3 <= 0 ? 0 : Number((s3 < e5 ? s3 : e5).toPrecision(3));
- }
- return t4;
- });
- }
- if (e3.autoReposition && !e3.inline) {
- let t4 = null;
- const n3 = this;
- o3.push(i2(window, ["scroll", "resize"], () => {
- n3.isOpen() && (e3.closeOnScroll && n3.hide(), null === t4 ? (t4 = setTimeout(() => t4 = null, 100), requestAnimationFrame(function e4() {
- n3._rePositioningPicker(), null !== t4 && requestAnimationFrame(e4);
- })) : (clearTimeout(t4), t4 = setTimeout(() => t4 = null, 100)));
- }, { capture: true }));
- }
- this._eventBindings = o3;
- }
- _rePositioningPicker() {
- const { options: t3 } = this;
- if (!t3.inline) {
- if (!this._nanopop.update({ container: document.body.getBoundingClientRect(), position: t3.position })) {
- const t4 = this._root.app, e3 = t4.getBoundingClientRect();
- t4.style.top = (window.innerHeight - e3.height) / 2 + "px", t4.style.left = (window.innerWidth - e3.width) / 2 + "px";
- }
- }
- }
- _updateOutput(t3) {
- const { _root: e3, _color: o3, options: n3 } = this;
- if (e3.interaction.type()) {
- const t4 = `to${e3.interaction.type().getAttribute("data-type")}`;
- e3.interaction.result.value = "function" == typeof o3[t4] ? o3[t4]().toString(n3.outputPrecision) : "";
- }
- !this._initializingActive && this._recalc && this._emit("change", o3, t3, this);
- }
- _clearColor(t3 = false) {
- const { _root: e3, options: o3 } = this;
- o3.useAsButton || e3.button.style.setProperty("--pcr-color", "rgba(0, 0, 0, 0.15)"), e3.button.classList.add("clear"), o3.showAlways || this.hide(), this._lastColor = null, this._initializingActive || t3 || (this._emit("save", null), this._emit("clear"));
- }
- _parseLocalColor(t3) {
- const { values: e3, type: o3, a: n3 } = w2(t3), { lockOpacity: i3 } = this.options, s3 = void 0 !== n3 && 1 !== n3;
- return e3 && 3 === e3.length && (e3[3] = void 0), { values: !e3 || i3 && s3 ? null : e3, type: o3 };
- }
- _t(t3) {
- return this.options.i18n[t3] || L2.I18N_DEFAULTS[t3];
- }
- _emit(t3, ...e3) {
- this._eventListener[t3].forEach((t4) => t4(...e3, this));
- }
- on(t3, e3) {
- return this._eventListener[t3].push(e3), this;
- }
- off(t3, e3) {
- const o3 = this._eventListener[t3] || [], n3 = o3.indexOf(e3);
- return ~n3 && o3.splice(n3, 1), this;
- }
- addSwatch(t3) {
- const { values: e3 } = this._parseLocalColor(t3);
- if (e3) {
- const { _swatchColors: t4, _root: o3 } = this, n3 = A2(...e3), s3 = r2(`
`);
- return o3.swatches.appendChild(s3), t4.push({ el: s3, color: n3 }), this._eventBindings.push(i2(s3, "click", () => {
- this.setHSVA(...n3.toHSVA(), true), this._emit("swatchselect", n3), this._emit("change", n3, "swatch", this);
- })), true;
- }
- return false;
- }
- removeSwatch(t3) {
- const e3 = this._swatchColors[t3];
- if (e3) {
- const { el: o3 } = e3;
- return this._root.swatches.removeChild(o3), this._swatchColors.splice(t3, 1), true;
- }
- return false;
- }
- applyColor(t3 = false) {
- const { preview: e3, button: o3 } = this._root, n3 = this._color.toRGBA().toString(0);
- return e3.lastColor.style.setProperty("--pcr-color", n3), this.options.useAsButton || o3.style.setProperty("--pcr-color", n3), o3.classList.remove("clear"), this._lastColor = this._color.clone(), this._initializingActive || t3 || this._emit("save", this._color), this;
- }
- destroy() {
- cancelAnimationFrame(this._setupAnimationFrame), this._eventBindings.forEach((t3) => s2(...t3)), Object.keys(this._components).forEach((t3) => this._components[t3].destroy());
- }
- destroyAndRemove() {
- this.destroy();
- const { root: t3, app: e3 } = this._root;
- t3.parentElement && t3.parentElement.removeChild(t3), e3.parentElement.removeChild(e3), Object.keys(this).forEach((t4) => this[t4] = null);
- }
- hide() {
- return !!this.isOpen() && (this._root.app.classList.remove("visible"), this._emit("hide"), true);
- }
- show() {
- return !this.options.disabled && !this.isOpen() && (this._root.app.classList.add("visible"), this._rePositioningPicker(), this._emit("show", this._color), this);
- }
- isOpen() {
- return this._root.app.classList.contains("visible");
- }
- setHSVA(t3 = 360, e3 = 0, o3 = 0, n3 = 1, i3 = false) {
- const s3 = this._recalc;
- if (this._recalc = false, t3 < 0 || t3 > 360 || e3 < 0 || e3 > 100 || o3 < 0 || o3 > 100 || n3 < 0 || n3 > 1)
- return false;
- this._color = A2(t3, e3, o3, n3);
- const { hue: r3, opacity: a3, palette: l3 } = this._components;
- return r3.update(t3 / 360), a3.update(n3), l3.update(e3 / 100, 1 - o3 / 100), i3 || this.applyColor(), s3 && this._updateOutput(), this._recalc = s3, true;
- }
- setColor(t3, e3 = false) {
- if (null === t3)
- return this._clearColor(e3), true;
- const { values: o3, type: n3 } = this._parseLocalColor(t3);
- if (o3) {
- const t4 = n3.toUpperCase(), { options: i3 } = this._root.interaction, s3 = i3.find((e4) => e4.getAttribute("data-type") === t4);
- if (s3 && !s3.hidden)
- for (const t5 of i3)
- t5.classList[t5 === s3 ? "add" : "remove"]("active");
- return !!this.setHSVA(...o3, e3) && this.setColorRepresentation(t4);
- }
- return false;
- }
- setColorRepresentation(t3) {
- return t3 = t3.toUpperCase(), !!this._root.interaction.options.find((e3) => e3.getAttribute("data-type").startsWith(t3) && !e3.click());
- }
- getColorRepresentation() {
- return this._representation;
- }
- getColor() {
- return this._color;
- }
- getSelectedColor() {
- return this._lastColor;
- }
- getRoot() {
- return this._root;
- }
- disable() {
- return this.hide(), this.options.disabled = true, this._root.button.classList.add("disabled"), this;
- }
- enable() {
- return this.options.disabled = false, this._root.button.classList.remove("disabled"), this;
- }
- }
- return E2(L2, "utils", o2), E2(L2, "version", "1.8.2"), E2(L2, "I18N_DEFAULTS", { "ui:dialog": "color picker dialog", "btn:toggle": "toggle color picker dialog", "btn:swatch": "color swatch", "btn:last-color": "use previous color", "btn:save": "Save", "btn:cancel": "Cancel", "btn:clear": "Clear", "aria:btn:save": "save and close", "aria:btn:cancel": "cancel and close", "aria:btn:clear": "clear and close", "aria:input": "color input field", "aria:palette": "color selection area", "aria:hue": "hue selection slider", "aria:opacity": "selection slider" }), E2(L2, "DEFAULT_OPTIONS", { appClass: null, theme: "classic", useAsButton: false, padding: 8, disabled: false, comparison: true, closeOnScroll: false, outputPrecision: 0, lockOpacity: false, autoReposition: true, container: "body", components: { interaction: {} }, i18n: {}, swatches: null, inline: false, sliders: null, default: "#42445a", defaultRepresentation: null, position: "bottom-middle", adjustableNumbers: true, showAlways: false, closeWithKey: "Escape" }), E2(L2, "create", (t3) => new L2(t3)), e2 = e2.default;
- })();
- });
- }
+
+
+
+
+
+
+ `), u3 = p3.interaction;
+ return u3.options.find((t5) => !t5.hidden && !t5.classList.add("active")), u3.type = () => u3.options.find((t5) => t5.classList.contains("active")), p3;
+ })(this), t3.useAsButton && (this._root.button = t3.el), t3.container.appendChild(this._root.root);
+ }
+ _finalBuild() {
+ const t3 = this.options, e3 = this._root;
+ if (t3.container.removeChild(e3.root), t3.inline) {
+ const o3 = t3.el.parentElement;
+ t3.el.nextSibling ? o3.insertBefore(e3.app, t3.el.nextSibling) : o3.appendChild(e3.app);
+ } else
+ t3.container.appendChild(e3.app);
+ t3.useAsButton ? t3.inline && t3.el.remove() : t3.el.parentNode.replaceChild(e3.root, t3.el), t3.disabled && this.disable(), t3.comparison || (e3.button.style.transition = "none", t3.useAsButton || (e3.preview.lastColor.style.transition = "none")), this.hide();
+ }
+ _buildComponents() {
+ const t3 = this, e3 = this.options.components, o3 = (t3.options.sliders || "v").repeat(2), [n3, i3] = o3.match(/^[vh]+$/g) ? o3 : [], s3 = () => this._color || (this._color = this._lastColor.clone()), r3 = { palette: $2({ element: t3._root.palette.picker, wrapper: t3._root.palette.palette, onstop: () => t3._emit("changestop", "slider", t3), onchange(o4, n4) {
+ if (!e3.palette)
+ return;
+ const i4 = s3(), { _root: r4, options: a3 } = t3, { lastColor: l3, currentColor: c3 } = r4.preview;
+ t3._recalc && (i4.s = 100 * o4, i4.v = 100 - 100 * n4, i4.v < 0 && (i4.v = 0), t3._updateOutput("slider"));
+ const p3 = i4.toRGBA().toString(0);
+ this.element.style.background = p3, this.wrapper.style.background = `
+ linear-gradient(to top, rgba(0, 0, 0, ${i4.a}), transparent),
+ linear-gradient(to left, hsla(${i4.h}, 100%, 50%, ${i4.a}), rgba(255, 255, 255, ${i4.a}))
+ `, a3.comparison ? a3.useAsButton || t3._lastColor || l3.style.setProperty("--pcr-color", p3) : (r4.button.style.setProperty("--pcr-color", p3), r4.button.classList.remove("clear"));
+ const u3 = i4.toHEXA().toString();
+ for (const { el: e4, color: o5 } of t3._swatchColors)
+ e4.classList[u3 === o5.toHEXA().toString() ? "add" : "remove"]("pcr-active");
+ c3.style.setProperty("--pcr-color", p3);
+ } }), hue: $2({ lock: "v" === i3 ? "h" : "v", element: t3._root.hue.picker, wrapper: t3._root.hue.slider, onstop: () => t3._emit("changestop", "slider", t3), onchange(o4) {
+ if (!e3.hue || !e3.palette)
+ return;
+ const n4 = s3();
+ t3._recalc && (n4.h = 360 * o4), this.element.style.backgroundColor = `hsl(${n4.h}, 100%, 50%)`, r3.palette.trigger();
+ } }), opacity: $2({ lock: "v" === n3 ? "h" : "v", element: t3._root.opacity.picker, wrapper: t3._root.opacity.slider, onstop: () => t3._emit("changestop", "slider", t3), onchange(o4) {
+ if (!e3.opacity || !e3.palette)
+ return;
+ const n4 = s3();
+ t3._recalc && (n4.a = Math.round(100 * o4) / 100), this.element.style.background = `rgba(0, 0, 0, ${n4.a})`, r3.palette.trigger();
+ } }), selectable: k2({ elements: t3._root.interaction.options, className: "active", onchange(e4) {
+ t3._representation = e4.target.getAttribute("data-type").toUpperCase(), t3._recalc && t3._updateOutput("swatch");
+ } }) };
+ this._components = r3;
+ }
+ _bindEvents() {
+ const { _root: t3, options: e3 } = this, o3 = [i2(t3.interaction.clear, "click", () => this._clearColor()), i2([t3.interaction.cancel, t3.preview.lastColor], "click", () => {
+ this.setHSVA(...(this._lastColor || this._color).toHSVA(), true), this._emit("cancel");
+ }), i2(t3.interaction.save, "click", () => {
+ !this.applyColor() && !e3.showAlways && this.hide();
+ }), i2(t3.interaction.result, ["keyup", "input"], (t4) => {
+ this.setColor(t4.target.value, true) && !this._initializingActive && (this._emit("change", this._color, "input", this), this._emit("changestop", "input", this)), t4.stopImmediatePropagation();
+ }), i2(t3.interaction.result, ["focus", "blur"], (t4) => {
+ this._recalc = "blur" === t4.type, this._recalc && this._updateOutput(null);
+ }), i2([t3.palette.palette, t3.palette.picker, t3.hue.slider, t3.hue.picker, t3.opacity.slider, t3.opacity.picker], ["mousedown", "touchstart"], () => this._recalc = true, { passive: true })];
+ if (!e3.showAlways) {
+ const n3 = e3.closeWithKey;
+ o3.push(i2(t3.button, "click", () => this.isOpen() ? this.hide() : this.show()), i2(document, "keyup", (t4) => this.isOpen() && (t4.key === n3 || t4.code === n3) && this.hide()), i2(document, ["touchstart", "mousedown"], (e4) => {
+ this.isOpen() && !l2(e4).some((e5) => e5 === t3.app || e5 === t3.button) && this.hide();
+ }, { capture: true }));
+ }
+ if (e3.adjustableNumbers) {
+ const e4 = { rgba: [255, 255, 255, 1], hsva: [360, 100, 100, 1], hsla: [360, 100, 100, 1], cmyk: [100, 100, 100, 100] };
+ p2(t3.interaction.result, (t4, o4, n3) => {
+ const i3 = e4[this.getColorRepresentation().toLowerCase()];
+ if (i3) {
+ const e5 = i3[n3], s3 = t4 + (e5 >= 100 ? 1e3 * o4 : o4);
+ return s3 <= 0 ? 0 : Number((s3 < e5 ? s3 : e5).toPrecision(3));
+ }
+ return t4;
+ });
+ }
+ if (e3.autoReposition && !e3.inline) {
+ let t4 = null;
+ const n3 = this;
+ o3.push(i2(window, ["scroll", "resize"], () => {
+ n3.isOpen() && (e3.closeOnScroll && n3.hide(), null === t4 ? (t4 = setTimeout(() => t4 = null, 100), requestAnimationFrame(function e4() {
+ n3._rePositioningPicker(), null !== t4 && requestAnimationFrame(e4);
+ })) : (clearTimeout(t4), t4 = setTimeout(() => t4 = null, 100)));
+ }, { capture: true }));
+ }
+ this._eventBindings = o3;
+ }
+ _rePositioningPicker() {
+ const { options: t3 } = this;
+ if (!t3.inline) {
+ if (!this._nanopop.update({ container: document.body.getBoundingClientRect(), position: t3.position })) {
+ const t4 = this._root.app, e3 = t4.getBoundingClientRect();
+ t4.style.top = (window.innerHeight - e3.height) / 2 + "px", t4.style.left = (window.innerWidth - e3.width) / 2 + "px";
+ }
+ }
+ }
+ _updateOutput(t3) {
+ const { _root: e3, _color: o3, options: n3 } = this;
+ if (e3.interaction.type()) {
+ const t4 = `to${e3.interaction.type().getAttribute("data-type")}`;
+ e3.interaction.result.value = "function" == typeof o3[t4] ? o3[t4]().toString(n3.outputPrecision) : "";
+ }
+ !this._initializingActive && this._recalc && this._emit("change", o3, t3, this);
+ }
+ _clearColor(t3 = false) {
+ const { _root: e3, options: o3 } = this;
+ o3.useAsButton || e3.button.style.setProperty("--pcr-color", "rgba(0, 0, 0, 0.15)"), e3.button.classList.add("clear"), o3.showAlways || this.hide(), this._lastColor = null, this._initializingActive || t3 || (this._emit("save", null), this._emit("clear"));
+ }
+ _parseLocalColor(t3) {
+ const { values: e3, type: o3, a: n3 } = w2(t3), { lockOpacity: i3 } = this.options, s3 = void 0 !== n3 && 1 !== n3;
+ return e3 && 3 === e3.length && (e3[3] = void 0), { values: !e3 || i3 && s3 ? null : e3, type: o3 };
+ }
+ _t(t3) {
+ return this.options.i18n[t3] || L2.I18N_DEFAULTS[t3];
+ }
+ _emit(t3, ...e3) {
+ this._eventListener[t3].forEach((t4) => t4(...e3, this));
+ }
+ on(t3, e3) {
+ return this._eventListener[t3].push(e3), this;
+ }
+ off(t3, e3) {
+ const o3 = this._eventListener[t3] || [], n3 = o3.indexOf(e3);
+ return ~n3 && o3.splice(n3, 1), this;
+ }
+ addSwatch(t3) {
+ const { values: e3 } = this._parseLocalColor(t3);
+ if (e3) {
+ const { _swatchColors: t4, _root: o3 } = this, n3 = A2(...e3), s3 = r2(``);
+ return o3.swatches.appendChild(s3), t4.push({ el: s3, color: n3 }), this._eventBindings.push(i2(s3, "click", () => {
+ this.setHSVA(...n3.toHSVA(), true), this._emit("swatchselect", n3), this._emit("change", n3, "swatch", this);
+ })), true;
+ }
+ return false;
+ }
+ removeSwatch(t3) {
+ const e3 = this._swatchColors[t3];
+ if (e3) {
+ const { el: o3 } = e3;
+ return this._root.swatches.removeChild(o3), this._swatchColors.splice(t3, 1), true;
+ }
+ return false;
+ }
+ applyColor(t3 = false) {
+ const { preview: e3, button: o3 } = this._root, n3 = this._color.toRGBA().toString(0);
+ return e3.lastColor.style.setProperty("--pcr-color", n3), this.options.useAsButton || o3.style.setProperty("--pcr-color", n3), o3.classList.remove("clear"), this._lastColor = this._color.clone(), this._initializingActive || t3 || this._emit("save", this._color), this;
+ }
+ destroy() {
+ cancelAnimationFrame(this._setupAnimationFrame), this._eventBindings.forEach((t3) => s2(...t3)), Object.keys(this._components).forEach((t3) => this._components[t3].destroy());
+ }
+ destroyAndRemove() {
+ this.destroy();
+ const { root: t3, app: e3 } = this._root;
+ t3.parentElement && t3.parentElement.removeChild(t3), e3.parentElement.removeChild(e3), Object.keys(this).forEach((t4) => this[t4] = null);
+ }
+ hide() {
+ return !!this.isOpen() && (this._root.app.classList.remove("visible"), this._emit("hide"), true);
+ }
+ show() {
+ return !this.options.disabled && !this.isOpen() && (this._root.app.classList.add("visible"), this._rePositioningPicker(), this._emit("show", this._color), this);
+ }
+ isOpen() {
+ return this._root.app.classList.contains("visible");
+ }
+ setHSVA(t3 = 360, e3 = 0, o3 = 0, n3 = 1, i3 = false) {
+ const s3 = this._recalc;
+ if (this._recalc = false, t3 < 0 || t3 > 360 || e3 < 0 || e3 > 100 || o3 < 0 || o3 > 100 || n3 < 0 || n3 > 1)
+ return false;
+ this._color = A2(t3, e3, o3, n3);
+ const { hue: r3, opacity: a3, palette: l3 } = this._components;
+ return r3.update(t3 / 360), a3.update(n3), l3.update(e3 / 100, 1 - o3 / 100), i3 || this.applyColor(), s3 && this._updateOutput(), this._recalc = s3, true;
+ }
+ setColor(t3, e3 = false) {
+ if (null === t3)
+ return this._clearColor(e3), true;
+ const { values: o3, type: n3 } = this._parseLocalColor(t3);
+ if (o3) {
+ const t4 = n3.toUpperCase(), { options: i3 } = this._root.interaction, s3 = i3.find((e4) => e4.getAttribute("data-type") === t4);
+ if (s3 && !s3.hidden)
+ for (const t5 of i3)
+ t5.classList[t5 === s3 ? "add" : "remove"]("active");
+ return !!this.setHSVA(...o3, e3) && this.setColorRepresentation(t4);
+ }
+ return false;
+ }
+ setColorRepresentation(t3) {
+ return t3 = t3.toUpperCase(), !!this._root.interaction.options.find((e3) => e3.getAttribute("data-type").startsWith(t3) && !e3.click());
+ }
+ getColorRepresentation() {
+ return this._representation;
+ }
+ getColor() {
+ return this._color;
+ }
+ getSelectedColor() {
+ return this._lastColor;
+ }
+ getRoot() {
+ return this._root;
+ }
+ disable() {
+ return this.hide(), this.options.disabled = true, this._root.button.classList.add("disabled"), this;
+ }
+ enable() {
+ return this.options.disabled = false, this._root.button.classList.remove("disabled"), this;
+ }
+ }
+ return E2(L2, "utils", o2), E2(L2, "version", "1.8.2"), E2(L2, "I18N_DEFAULTS", { "ui:dialog": "color picker dialog", "btn:toggle": "toggle color picker dialog", "btn:swatch": "color swatch", "btn:last-color": "use previous color", "btn:save": "Save", "btn:cancel": "Cancel", "btn:clear": "Clear", "aria:btn:save": "save and close", "aria:btn:cancel": "cancel and close", "aria:btn:clear": "clear and close", "aria:input": "color input field", "aria:palette": "color selection area", "aria:hue": "hue selection slider", "aria:opacity": "selection slider" }), E2(L2, "DEFAULT_OPTIONS", { appClass: null, theme: "classic", useAsButton: false, padding: 8, disabled: false, comparison: true, closeOnScroll: false, outputPrecision: 0, lockOpacity: false, autoReposition: true, container: "body", components: { interaction: {} }, i18n: {}, swatches: null, inline: false, sliders: null, default: "#42445a", defaultRepresentation: null, position: "bottom-middle", adjustableNumbers: true, showAlways: false, closeWithKey: "Escape" }), E2(L2, "create", (t3) => new L2(t3)), e2 = e2.default;
+ })();
+ });
+ }
});
// src/main.ts
var main_exports = {};
__export(main_exports, {
- default: () => CodeblockCustomizerPlugin
+ default: () => CodeblockCustomizerPlugin
});
module.exports = __toCommonJS(main_exports);
var import_obsidian3 = require("obsidian");
// src/Settings.ts
-var THEME_DEFAULT_SETTINGS = {
- codeblock: {
- lineNumbers: true,
- curvature: 10
- },
- gutter: {
- highlight: true
- },
- header: {
- title: {
- textFont: "",
- textBold: false,
- textItalic: false
- },
- languageTag: {
- display: "always",
- textFont: "",
- textBold: true,
- textItalic: true
- },
- languageIcon: {
- display: "always",
- displayColor: true
- }
- },
- highlights: {
- activeCodeblockLine: true,
- activeEditorLine: false
- },
- advanced: {
- gradientHighlights: false,
- gradientHighlightsColorStop: "70%",
- languageBorderColor: false,
- iconSize: 28
- }
-};
var NEW_THEME_DEFAULT = {
- name: "",
- default: false
+ name: "",
+ default: false
+};
+var THEME_DEFAULT_SETTINGS = {
+ codeblock: {
+ lineNumbers: true,
+ curvature: 10
+ },
+ gutter: {
+ highlight: true
+ },
+ header: {
+ title: {
+ textFont: "",
+ textBold: false,
+ textItalic: false
+ },
+ languageTag: {
+ display: "always",
+ textFont: "",
+ textBold: true,
+ textItalic: true
+ },
+ languageIcon: {
+ display: "always",
+ displayColor: true
+ },
+ collapsePlaceholder: ""
+ },
+ highlights: {
+ activeCodeblockLine: true,
+ activeEditorLine: false
+ },
+ advanced: {
+ gradientHighlights: false,
+ gradientHighlightsColorStop: "70%",
+ languageBorderColor: false,
+ iconSize: 28
+ }
};
var THEME_FALLBACK_COLORS = {
- codeblock: {
- backgroundColor: "--code-background",
- textColor: "--code-normal"
- },
- gutter: {
- backgroundColor: "--code-background",
- textColor: "--code-comment"
- },
- header: {
- backgroundColor: "--code-background",
- title: {
- textColor: "--code-comment"
- },
- languageTag: {
- backgroundColor: "--code-background",
- textColor: "--code-comment"
- },
- lineColor: "--code-background"
- },
- highlights: {
- activeCodeblockLineColor: "--color-base-30",
- activeEditorLineColor: "--color-base-20",
- defaultColor: "--text-highlight-bg",
- alternativeHighlights: {}
- }
+ codeblock: {
+ backgroundColor: "--code-background",
+ textColor: "--code-normal"
+ },
+ gutter: {
+ backgroundColor: "--code-background",
+ textColor: "--code-comment"
+ },
+ header: {
+ backgroundColor: "--code-background",
+ title: {
+ textColor: "--code-comment"
+ },
+ languageTag: {
+ backgroundColor: "--code-background",
+ textColor: "--code-comment"
+ },
+ lineColor: "--code-background"
+ },
+ highlights: {
+ activeCodeblockLineColor: "--color-base-30",
+ activeEditorLineColor: "--color-base-20",
+ defaultColor: "--text-highlight-bg",
+ alternativeHighlights: {}
+ }
};
var DEFAULT_THEME = {
- settings: THEME_DEFAULT_SETTINGS,
- colors: {
- light: THEME_FALLBACK_COLORS,
- dark: THEME_FALLBACK_COLORS
- }
+ settings: THEME_DEFAULT_SETTINGS,
+ colors: {
+ light: THEME_FALLBACK_COLORS,
+ dark: THEME_FALLBACK_COLORS
+ }
};
var SOLARIZED_THEME = {
- settings: THEME_DEFAULT_SETTINGS,
- colors: {
- light: {
- codeblock: {
- backgroundColor: "#FCF6E4",
- textColor: "#bababa"
- },
- gutter: {
- backgroundColor: "#EDE8D6",
- textColor: "#6c6c6c"
- },
- header: {
- backgroundColor: "#D5CCB4",
- title: {
- textColor: "#866704"
- },
- languageTag: {
- backgroundColor: "#B8B5AA",
- textColor: "#C25F30"
- },
- lineColor: "#EDD489"
- },
- highlights: {
- activeCodeblockLineColor: "#EDE8D6",
- activeEditorLineColor: "#60460633",
- defaultColor: "#E9DFBA",
- alternativeHighlights: {}
- }
- },
- dark: {
- codeblock: {
- backgroundColor: "#002b36",
- textColor: "#bababa"
- },
- gutter: {
- backgroundColor: "#073642",
- textColor: "#6c6c6c"
- },
- header: {
- backgroundColor: "#0a4554",
- title: {
- textColor: "#dadada"
- },
- languageTag: {
- backgroundColor: "#008080",
- textColor: "#000000"
- },
- lineColor: "#46cced"
- },
- highlights: {
- activeCodeblockLineColor: "#073642",
- activeEditorLineColor: "#468eeb33",
- defaultColor: "#054b5c",
- alternativeHighlights: {}
- }
- }
- }
+ settings: THEME_DEFAULT_SETTINGS,
+ colors: {
+ light: {
+ codeblock: {
+ backgroundColor: "#FCF6E4",
+ textColor: "#bababa"
+ },
+ gutter: {
+ backgroundColor: "#EDE8D6",
+ textColor: "#6c6c6c"
+ },
+ header: {
+ backgroundColor: "#D5CCB4",
+ title: {
+ textColor: "#866704"
+ },
+ languageTag: {
+ backgroundColor: "#B8B5AA",
+ textColor: "#C25F30"
+ },
+ lineColor: "#EDD489"
+ },
+ highlights: {
+ activeCodeblockLineColor: "#EDE8D6",
+ activeEditorLineColor: "#60460633",
+ defaultColor: "#E9DFBA",
+ alternativeHighlights: {}
+ }
+ },
+ dark: {
+ codeblock: {
+ backgroundColor: "#002b36",
+ textColor: "#bababa"
+ },
+ gutter: {
+ backgroundColor: "#073642",
+ textColor: "#6c6c6c"
+ },
+ header: {
+ backgroundColor: "#0a4554",
+ title: {
+ textColor: "#dadada"
+ },
+ languageTag: {
+ backgroundColor: "#008080",
+ textColor: "#000000"
+ },
+ lineColor: "#46cced"
+ },
+ highlights: {
+ activeCodeblockLineColor: "#073642",
+ activeEditorLineColor: "#468eeb33",
+ defaultColor: "#054b5c",
+ alternativeHighlights: {}
+ }
+ }
+ }
};
var DEFAULT_SETTINGS = {
- themes: {
- "Default": DEFAULT_THEME,
- "Solarized": SOLARIZED_THEME
- },
- selectedTheme: "Default",
- defaultTheme: "Default",
- currentTheme: structuredClone(DEFAULT_THEME),
- newTheme: NEW_THEME_DEFAULT,
- newHighlight: "",
- excludedLangs: "dataview, dataviewjs, ad-*"
+ themes: {
+ "Default": DEFAULT_THEME,
+ "Solarized": SOLARIZED_THEME
+ },
+ selectedTheme: "Default",
+ defaultTheme: "Default",
+ currentTheme: structuredClone(DEFAULT_THEME),
+ newTheme: NEW_THEME_DEFAULT,
+ newHighlight: "",
+ excludedLangs: "dataview, dataviewjs, ad-*"
};
// src/CodeBlockHighlight.ts
@@ -719,1763 +720,1619 @@ var import_language = require("@codemirror/language");
// src/Const.ts
var Languages = {
- "none": "Plain text",
- "plain": "Plain text",
- "plaintext": "Plain text",
- "text": "Plain text",
- "txt": "Plain text",
- "html": "HTML",
- "xml": "XML",
- "svg": "SVG",
- "mathml": "MathML",
- "ssml": "SSML",
- "rss": "RSS",
- "css": "CSS",
- "clike": "C-like",
- "js": "JavaScript",
- "abap": "ABAP",
- "abnf": "ABNF",
- "al": "AL",
- "antlr4": "ANTLR4",
- "g4": "ANTLR4",
- "apacheconf": "Apache Configuration",
- "apl": "APL",
- "aql": "AQL",
- "ino": "Arduino",
- "arff": "ARFF",
- "armasm": "ARM Assembly",
- "arm-asm": "ARM Assembly",
- "art": "Arturo",
- "asciidoc": "AsciiDoc",
- "adoc": "AsciiDoc",
- "aspnet": "ASP.NET (C#)",
- "asm6502": "6502 Assembly",
- "asmatmel": "Atmel AVR Assembly",
- "autohotkey": "AutoHotkey",
- "autoit": "AutoIt",
- "avisynth": "AviSynth",
- "avs": "AviSynth",
- "avro-idl": "Avro IDL",
- "avdl": "Avro IDL",
- "awk": "AWK",
- "gawk": "GAWK",
- "sh": "Shell",
- "basic": "BASIC",
- "bbcode": "BBcode",
- "bbj": "BBj",
- "bnf": "BNF",
- "rbnf": "RBNF",
- "bqn": "BQN",
- "bsl": "BSL (1C:Enterprise)",
- "oscript": "OneScript",
- "csharp": "C#",
- "cs": "C#",
- "dotnet": "C#",
- "cpp": "C++",
- "cfscript": "CFScript",
- "cfc": "CFScript",
- "cil": "CIL",
- "cilkc": "Cilk/C",
- "cilk-c": "Cilk/C",
- "cilkcpp": "Cilk/C++",
- "cilk-cpp": "Cilk/C++",
- "cilk": "Cilk/C++",
- "cmake": "CMake",
- "cobol": "COBOL",
- "coffee": "CoffeeScript",
- "conc": "Concurnas",
- "csp": "Content-Security-Policy",
- "css-extras": "CSS Extras",
- "csv": "CSV",
- "cue": "CUE",
- "dataweave": "DataWeave",
- "dax": "DAX",
- "django": "Django/Jinja2",
- "jinja2": "Django/Jinja2",
- "dns-zone-file": "DNS zone file",
- "dns-zone": "DNS zone file",
- "dockerfile": "Docker",
- "dot": "DOT (Graphviz)",
- "gv": "DOT (Graphviz)",
- "ebnf": "EBNF",
- "editorconfig": "EditorConfig",
- "ejs": "EJS",
- "etlua": "Embedded Lua templating",
- "erb": "ERB",
- "excel-formula": "Excel Formula",
- "xlsx": "Excel Formula",
- "xls": "Excel Formula",
- "fsharp": "F#",
- "firestore-security-rules": "Firestore security rules",
- "ftl": "FreeMarker Template Language",
- "gml": "GameMaker Language",
- "gamemakerlanguage": "GameMaker Language",
- "gap": "GAP (CAS)",
- "gcode": "G-code",
- "gdscript": "GDScript",
- "gedcom": "GEDCOM",
- "gettext": "gettext",
- "po": "gettext",
- "glsl": "GLSL",
- "gn": "GN",
- "gni": "GN",
- "linker-script": "GNU Linker Script",
- "ld": "GNU Linker Script",
- "go-module": "Go module",
- "go-mod": "Go module",
- "graphql": "GraphQL",
- "hbs": "Handlebars",
- "hs": "Haskell",
- "hcl": "HCL",
- "hlsl": "HLSL",
- "http": "HTTP",
- "hpkp": "HTTP Public-Key-Pins",
- "hsts": "HTTP Strict-Transport-Security",
- "ichigojam": "IchigoJam",
- "icu-message-format": "ICU Message Format",
- "idr": "Idris",
- "ignore": ".ignore",
- "gitignore": ".gitignore",
- "hgignore": ".hgignore",
- "npmignore": ".npmignore",
- "inform7": "Inform 7",
- "javadoc": "JavaDoc",
- "javadoclike": "JavaDoc-like",
- "javastacktrace": "Java stack trace",
- "jq": "JQ",
- "jsdoc": "JSDoc",
- "js-extras": "JS Extras",
- "json": "JSON",
- "webmanifest": "Web App Manifest",
- "json5": "JSON5",
- "jsonp": "JSONP",
- "jsstacktrace": "JS stack trace",
- "js-templates": "JS Templates",
- "keepalived": "Keepalived Configure",
- "kts": "Kotlin Script",
- "kt": "Kotlin",
- "kumir": "KuMir (\u041A\u0443\u041C\u0438\u0440)",
- "kum": "KuMir (\u041A\u0443\u041C\u0438\u0440)",
- "latex": "LaTeX",
- "tex": "TeX",
- "context": "ConTeXt",
- "lilypond": "LilyPond",
- "ly": "LilyPond",
- "emacs": "Lisp",
- "elisp": "Lisp",
- "emacs-lisp": "Lisp",
- "llvm": "LLVM IR",
- "log": "Log file",
- "lolcode": "LOLCODE",
- "magma": "Magma (CAS)",
- "md": "Markdown",
- "markup-templating": "Markup templating",
- "matlab": "MATLAB",
- "maxscript": "MAXScript",
- "mel": "MEL",
- "metafont": "METAFONT",
- "mongodb": "MongoDB",
- "moon": "MoonScript",
- "n1ql": "N1QL",
- "n4js": "N4JS",
- "n4jsd": "N4JS",
- "nand2tetris-hdl": "Nand To Tetris HDL",
- "naniscript": "Naninovel Script",
- "nani": "Naninovel Script",
- "nasm": "NASM",
- "neon": "NEON",
- "nginx": "nginx",
- "nsis": "NSIS",
- "objectivec": "Objective-C",
- "objc": "Objective-C",
- "ocaml": "OCaml",
- "opencl": "OpenCL",
- "openqasm": "OpenQasm",
- "qasm": "OpenQasm",
- "parigp": "PARI/GP",
- "objectpascal": "Object Pascal",
- "psl": "PATROL Scripting Language",
- "pcaxis": "PC-Axis",
- "px": "PC-Axis",
- "peoplecode": "PeopleCode",
- "pcode": "PeopleCode",
- "php": "PHP",
- "phpdoc": "PHPDoc",
- "php-extras": "PHP Extras",
- "plant-uml": "PlantUML",
- "plantuml": "PlantUML",
- "plsql": "PL/SQL",
- "powerquery": "PowerQuery",
- "pq": "PowerQuery",
- "mscript": "PowerQuery",
- "powershell": "PowerShell",
- "promql": "PromQL",
- "properties": ".properties",
- "protobuf": "Protocol Buffers",
- "purebasic": "PureBasic",
- "pbfasm": "PureBasic",
- "purs": "PureScript",
- "py": "Python",
- "qsharp": "Q#",
- "qs": "Q#",
- "q": "Q (kdb+ database)",
- "qml": "QML",
- "rkt": "Racket",
- "cshtml": "Razor C#",
- "razor": "Razor C#",
- "jsx": "React JSX",
- "tsx": "React TSX",
- "renpy": "Ren'py",
- "rpy": "Ren'py",
- "res": "ReScript",
- "rest": "reST (reStructuredText)",
- "robotframework": "Robot Framework",
- "robot": "Robot Framework",
- "rb": "Ruby",
- "sas": "SAS",
- "sass": "Sass (Sass)",
- "scss": "Sass (SCSS)",
- "shell-session": "Shell session",
- "sh-session": "Shell session",
- "shellsession": "Shell session",
- "sml": "SML",
- "smlnj": "SML/NJ",
- "solidity": "Solidity (Ethereum)",
- "sol": "Solidity (Ethereum)",
- "solution-file": "Solution file",
- "sln": "Solution file",
- "soy": "Soy (Closure Template)",
- "sparql": "SPARQL",
- "rq": "SPARQL",
- "splunk-spl": "Splunk SPL",
- "sqf": "SQF: Status Quo Function (Arma 3)",
- "sql": "SQL",
- "stata": "Stata Ado",
- "iecst": "Structured Text (IEC 61131-3)",
- "supercollider": "SuperCollider",
- "sclang": "SuperCollider",
- "systemd": "Systemd configuration file",
- "t4-templating": "T4 templating",
- "t4-cs": "T4 Text Templates (C#)",
- "t4": "T4 Text Templates (C#)",
- "t4-vb": "T4 Text Templates (VB)",
- "tap": "TAP",
- "tt2": "Template Toolkit 2",
- "toml": "TOML",
- "trickle": "trickle",
- "troy": "troy",
- "trig": "TriG",
- "ts": "TypeScript",
- "tsconfig": "TSConfig",
- "uscript": "UnrealScript",
- "uc": "UnrealScript",
- "uorazor": "UO Razor Script",
- "uri": "URI",
- "url": "URL",
- "vbnet": "VB.Net",
- "vhdl": "VHDL",
- "vim": "vim",
- "visual-basic": "Visual Basic",
- "vba": "VBA",
- "vb": "Visual Basic",
- "wasm": "WebAssembly",
- "web-idl": "Web IDL",
- "webidl": "Web IDL",
- "wgsl": "WGSL",
- "wiki": "Wiki markup",
- "wolfram": "Wolfram language",
- "nb": "Mathematica Notebook",
- "wl": "Wolfram language",
- "xeoracube": "XeoraCube",
- "xml-doc": "XML doc (.net)",
- "xojo": "Xojo (REALbasic)",
- "xquery": "XQuery",
- "yaml": "YAML",
- "yml": "YAML",
- "yang": "YANG"
+ "none": "Plain text",
+ "plain": "Plain text",
+ "plaintext": "Plain text",
+ "text": "Plain text",
+ "txt": "Plain text",
+ "html": "HTML",
+ "xml": "XML",
+ "svg": "SVG",
+ "mathml": "MathML",
+ "ssml": "SSML",
+ "rss": "RSS",
+ "css": "CSS",
+ "clike": "C-like",
+ "js": "JavaScript",
+ "abap": "ABAP",
+ "abnf": "ABNF",
+ "al": "AL",
+ "antlr4": "ANTLR4",
+ "g4": "ANTLR4",
+ "apacheconf": "Apache Configuration",
+ "apl": "APL",
+ "aql": "AQL",
+ "ino": "Arduino",
+ "arff": "ARFF",
+ "armasm": "ARM Assembly",
+ "arm-asm": "ARM Assembly",
+ "art": "Arturo",
+ "asciidoc": "AsciiDoc",
+ "adoc": "AsciiDoc",
+ "aspnet": "ASP.NET (C#)",
+ "asm6502": "6502 Assembly",
+ "asmatmel": "Atmel AVR Assembly",
+ "autohotkey": "AutoHotkey",
+ "autoit": "AutoIt",
+ "avisynth": "AviSynth",
+ "avs": "AviSynth",
+ "avro-idl": "Avro IDL",
+ "avdl": "Avro IDL",
+ "awk": "AWK",
+ "gawk": "GAWK",
+ "sh": "Shell",
+ "basic": "BASIC",
+ "bbcode": "BBcode",
+ "bbj": "BBj",
+ "bnf": "BNF",
+ "rbnf": "RBNF",
+ "bqn": "BQN",
+ "bsl": "BSL (1C:Enterprise)",
+ "oscript": "OneScript",
+ "csharp": "C#",
+ "cs": "C#",
+ "dotnet": "C#",
+ "cpp": "C++",
+ "cfscript": "CFScript",
+ "cfc": "CFScript",
+ "cil": "CIL",
+ "cilkc": "Cilk/C",
+ "cilk-c": "Cilk/C",
+ "cilkcpp": "Cilk/C++",
+ "cilk-cpp": "Cilk/C++",
+ "cilk": "Cilk/C++",
+ "cmake": "CMake",
+ "cobol": "COBOL",
+ "coffee": "CoffeeScript",
+ "conc": "Concurnas",
+ "csp": "Content-Security-Policy",
+ "css-extras": "CSS Extras",
+ "csv": "CSV",
+ "cue": "CUE",
+ "dataweave": "DataWeave",
+ "dax": "DAX",
+ "django": "Django/Jinja2",
+ "jinja2": "Django/Jinja2",
+ "dns-zone-file": "DNS zone file",
+ "dns-zone": "DNS zone file",
+ "dockerfile": "Docker",
+ "dot": "DOT (Graphviz)",
+ "gv": "DOT (Graphviz)",
+ "ebnf": "EBNF",
+ "editorconfig": "EditorConfig",
+ "ejs": "EJS",
+ "etlua": "Embedded Lua templating",
+ "erb": "ERB",
+ "excel-formula": "Excel Formula",
+ "xlsx": "Excel Formula",
+ "xls": "Excel Formula",
+ "fsharp": "F#",
+ "firestore-security-rules": "Firestore security rules",
+ "ftl": "FreeMarker Template Language",
+ "gml": "GameMaker Language",
+ "gamemakerlanguage": "GameMaker Language",
+ "gap": "GAP (CAS)",
+ "gcode": "G-code",
+ "gdscript": "GDScript",
+ "gedcom": "GEDCOM",
+ "gettext": "gettext",
+ "po": "gettext",
+ "glsl": "GLSL",
+ "gn": "GN",
+ "gni": "GN",
+ "linker-script": "GNU Linker Script",
+ "ld": "GNU Linker Script",
+ "go-module": "Go module",
+ "go-mod": "Go module",
+ "graphql": "GraphQL",
+ "hbs": "Handlebars",
+ "hs": "Haskell",
+ "hcl": "HCL",
+ "hlsl": "HLSL",
+ "http": "HTTP",
+ "hpkp": "HTTP Public-Key-Pins",
+ "hsts": "HTTP Strict-Transport-Security",
+ "ichigojam": "IchigoJam",
+ "icu-message-format": "ICU Message Format",
+ "idr": "Idris",
+ "ignore": ".ignore",
+ "gitignore": ".gitignore",
+ "hgignore": ".hgignore",
+ "npmignore": ".npmignore",
+ "inform7": "Inform 7",
+ "javadoc": "JavaDoc",
+ "javadoclike": "JavaDoc-like",
+ "javastacktrace": "Java stack trace",
+ "jq": "JQ",
+ "jsdoc": "JSDoc",
+ "js-extras": "JS Extras",
+ "json": "JSON",
+ "webmanifest": "Web App Manifest",
+ "json5": "JSON5",
+ "jsonp": "JSONP",
+ "jsstacktrace": "JS stack trace",
+ "js-templates": "JS Templates",
+ "keepalived": "Keepalived Configure",
+ "kts": "Kotlin Script",
+ "kt": "Kotlin",
+ "kumir": "KuMir (\u041A\u0443\u041C\u0438\u0440)",
+ "kum": "KuMir (\u041A\u0443\u041C\u0438\u0440)",
+ "latex": "LaTeX",
+ "tex": "TeX",
+ "context": "ConTeXt",
+ "lilypond": "LilyPond",
+ "ly": "LilyPond",
+ "emacs": "Lisp",
+ "elisp": "Lisp",
+ "emacs-lisp": "Lisp",
+ "llvm": "LLVM IR",
+ "log": "Log file",
+ "lolcode": "LOLCODE",
+ "magma": "Magma (CAS)",
+ "md": "Markdown",
+ "markup-templating": "Markup templating",
+ "matlab": "MATLAB",
+ "maxscript": "MAXScript",
+ "mel": "MEL",
+ "metafont": "METAFONT",
+ "mongodb": "MongoDB",
+ "moon": "MoonScript",
+ "n1ql": "N1QL",
+ "n4js": "N4JS",
+ "n4jsd": "N4JS",
+ "nand2tetris-hdl": "Nand To Tetris HDL",
+ "naniscript": "Naninovel Script",
+ "nani": "Naninovel Script",
+ "nasm": "NASM",
+ "neon": "NEON",
+ "nginx": "nginx",
+ "nsis": "NSIS",
+ "objectivec": "Objective-C",
+ "objc": "Objective-C",
+ "ocaml": "OCaml",
+ "opencl": "OpenCL",
+ "openqasm": "OpenQasm",
+ "qasm": "OpenQasm",
+ "parigp": "PARI/GP",
+ "objectpascal": "Object Pascal",
+ "psl": "PATROL Scripting Language",
+ "pcaxis": "PC-Axis",
+ "px": "PC-Axis",
+ "peoplecode": "PeopleCode",
+ "pcode": "PeopleCode",
+ "php": "PHP",
+ "phpdoc": "PHPDoc",
+ "php-extras": "PHP Extras",
+ "plant-uml": "PlantUML",
+ "plantuml": "PlantUML",
+ "plsql": "PL/SQL",
+ "powerquery": "PowerQuery",
+ "pq": "PowerQuery",
+ "mscript": "PowerQuery",
+ "powershell": "PowerShell",
+ "promql": "PromQL",
+ "properties": ".properties",
+ "protobuf": "Protocol Buffers",
+ "purebasic": "PureBasic",
+ "pbfasm": "PureBasic",
+ "purs": "PureScript",
+ "py": "Python",
+ "qsharp": "Q#",
+ "qs": "Q#",
+ "q": "Q (kdb+ database)",
+ "qml": "QML",
+ "rkt": "Racket",
+ "cshtml": "Razor C#",
+ "razor": "Razor C#",
+ "jsx": "React JSX",
+ "tsx": "React TSX",
+ "renpy": "Ren'py",
+ "rpy": "Ren'py",
+ "res": "ReScript",
+ "rest": "reST (reStructuredText)",
+ "robotframework": "Robot Framework",
+ "robot": "Robot Framework",
+ "rb": "Ruby",
+ "sas": "SAS",
+ "sass": "Sass (Sass)",
+ "scss": "Sass (SCSS)",
+ "shell-session": "Shell session",
+ "sh-session": "Shell session",
+ "shellsession": "Shell session",
+ "sml": "SML",
+ "smlnj": "SML/NJ",
+ "solidity": "Solidity (Ethereum)",
+ "sol": "Solidity (Ethereum)",
+ "solution-file": "Solution file",
+ "sln": "Solution file",
+ "soy": "Soy (Closure Template)",
+ "sparql": "SPARQL",
+ "rq": "SPARQL",
+ "splunk-spl": "Splunk SPL",
+ "sqf": "SQF: Status Quo Function (Arma 3)",
+ "sql": "SQL",
+ "stata": "Stata Ado",
+ "iecst": "Structured Text (IEC 61131-3)",
+ "supercollider": "SuperCollider",
+ "sclang": "SuperCollider",
+ "systemd": "Systemd configuration file",
+ "t4-templating": "T4 templating",
+ "t4-cs": "T4 Text Templates (C#)",
+ "t4": "T4 Text Templates (C#)",
+ "t4-vb": "T4 Text Templates (VB)",
+ "tap": "TAP",
+ "tt2": "Template Toolkit 2",
+ "toml": "TOML",
+ "trickle": "trickle",
+ "troy": "troy",
+ "trig": "TriG",
+ "ts": "TypeScript",
+ "tsconfig": "TSConfig",
+ "uscript": "UnrealScript",
+ "uc": "UnrealScript",
+ "uorazor": "UO Razor Script",
+ "uri": "URI",
+ "url": "URL",
+ "vbnet": "VB.Net",
+ "vhdl": "VHDL",
+ "vim": "vim",
+ "visual-basic": "Visual Basic",
+ "vba": "VBA",
+ "vb": "Visual Basic",
+ "wasm": "WebAssembly",
+ "web-idl": "Web IDL",
+ "webidl": "Web IDL",
+ "wgsl": "WGSL",
+ "wiki": "Wiki markup",
+ "wolfram": "Wolfram language",
+ "nb": "Mathematica Notebook",
+ "wl": "Wolfram language",
+ "xeoracube": "XeoraCube",
+ "xml-doc": "XML doc (.net)",
+ "xojo": "Xojo (REALbasic)",
+ "xquery": "XQuery",
+ "yaml": "YAML",
+ "yml": "YAML",
+ "yang": "YANG"
};
var manualLang = {
- "css": "CSS",
- "clike": "C-like",
- "javascript": "JavaScript",
- "js": "JavaScript",
- "abap": "ABAP",
- "abnf": "ABNF",
- "actionscript": "ActionScript",
- "ada": "Ada",
- "agda": "Agda",
- "al": "AL",
- "antlr4": "ANTLR4",
- "g4": "ANTLR4",
- "apacheconf": "Apache Configuration",
- "apex": "Apex",
- "apl": "APL",
- "applescript": "AppleScript",
- "aql": "AQL",
- "arduino": "Arduino",
- "ino": "Arduino",
- "arff": "ARFF",
- "armasm": "ARM Assembly",
- "arm-asm": "ARM Assembly",
- "arturo": "Arturo",
- "art": "Arturo",
- "asciidoc": "AsciiDoc",
- "adoc": "AsciiDoc",
- "aspnet": "ASP.NET (C#)",
- "asm6502": "6502 Assembly",
- "asmatmel": "Atmel AVR Assembly",
- "autohotkey": "AutoHotkey",
- "autoit": "AutoIt",
- "avisynth": "AviSynth",
- "avs": "AviSynth",
- "avro-idl": "Avro IDL",
- "avdl": "Avro IDL",
- "awk": "AWK",
- "gawk": "GAWK",
- "bash": "Shell",
- "sh": "Shell",
- "shell": "Shell",
- "basic": "BASIC",
- "batch": "Batch",
- "bbcode": "BBcode",
- "shortcode": "BBcode",
- "bbj": "BBj",
- "birb": "Birb",
- "bison": "Bison",
- "bnf": "BNF",
- "rbnf": "BNF",
- "bqn": "BQN",
- "brainfuck": "Brainfuck",
- "brightscript": "BrightScript",
- "bro": "Bro",
- "bsl": "BSL (1C)",
- "oscript": "BSL (1C)",
- "c": "C",
- "csharp": "C#",
- "cs": "C#",
- "dotnet": "C#",
- "cpp": "C++",
- "cfscript": "CFScript",
- "cfc": "CFScript",
- "chaiscript": "ChaiScript",
- "cil": "CIL",
- "cilkc": "Cilk/C",
- "cilk-c": "Cilk/C",
- "cilkcpp": "Cilk/C++",
- "cilk-cpp": "Cilk/C++",
- "cilk": "Cilk/C++",
- "clojure": "Clojure",
- "cmake": "CMake",
- "cobol": "COBOL",
- "coffeescript": "CoffeeScript",
- "coffee": "CoffeeScript",
- "concurnas": "Concurnas",
- "conc": "Concurnas",
- "csp": "Content-Security-Policy",
- "cooklang": "Cooklang",
- "coq": "Coq",
- "crystal": "Crystal",
- "css-extras": "CSS Extras",
- "csv": "CSV",
- "cue": "CUE",
- "cypher": "Cypher",
- "d": "D",
- "dart": "Dart",
- "dataweave": "DataWeave",
- "dax": "DAX",
- "dhall": "Dhall",
- "diff": "Diff",
- "django": "Django/Jinja2",
- "jinja2": "Django/Jinja2",
- "dns-zone-file": "DNS zone file",
- "dns-zone": "DNS zone file",
- "docker": "Docker",
- "dockerfile": "Docker",
- "dot": "DOT (Graphviz)",
- "gv": "DOT (Graphviz)",
- "ebnf": "EBNF",
- "editorconfig": "EditorConfig",
- "eiffel": "Eiffel",
- "ejs": "EJS",
- "eta": "EJS",
- "elixir": "Elixir",
- "elm": "Elm",
- "etlua": "Embedded Lua templating",
- "erb": "ERB",
- "erlang": "Erlang",
- "excel-formula": "Excel Formula",
- "xlsx": "Excel Formula",
- "xls": "Excel Formula",
- "fsharp": "F#",
- "factor": "Factor",
- "false": "False",
- "firestore-security-rules": "Firestore security rules",
- "flow": "Flow",
- "fortran": "Fortran",
- "ftl": "FreeMarker Template Language",
- "gml": "GameMaker Language",
- "gamemakerlanguage": "GameMaker Language",
- "gap": "GAP (CAS)",
- "gcode": "G-code",
- "gdscript": "GDScript",
- "gedcom": "GEDCOM",
- "gettext": "gettext",
- "po": "gettext",
- "gherkin": "Gherkin",
- "git": "Git",
- "glsl": "GLSL",
- "gn": "GN",
- "gni": "GN",
- "linker-script": "GNU Linker Script",
- "ld": "GNU Linker Script",
- "go": "Go",
- "go-module": "Go module",
- "go-mod": "Go module",
- "gradle": "Gradle",
- "graphql": "GraphQL",
- "groovy": "Groovy",
- "haml": "Haml",
- "handlebars": "Handlebars",
- "hbs": "Handlebars",
- "mustache": "Handlebars",
- "haskell": "Haskell",
- "hs": "Haskell",
- "haxe": "Haxe",
- "hcl": "HCL",
- "hlsl": "HLSL",
- "hoon": "Hoon",
- "http": "HTTP",
- "hpkp": "HTTP Public-Key-Pins",
- "hsts": "HTTP Strict-Transport-Security",
- "ichigojam": "IchigoJam",
- "icon": "Icon",
- "icu-message-format": "ICU Message Format",
- "idris": "Idris",
- "idr": "Idris",
- "ignore": ".ignore",
- "gitignore": ".ignore",
- "hgignore": ".ignore",
- "npmignore": ".ignore",
- "inform7": "Inform 7",
- "ini": "Ini",
- "io": "Io",
- "j": "J",
- "java": "Java",
- "javadoc": "JavaDoc",
- "javadoclike": "JavaDoc-like",
- "javastacktrace": "Java stack trace",
- "jexl": "Jexl",
- "jolie": "Jolie",
- "jq": "JQ",
- "jsdoc": "JSDoc",
- "js-extras": "JS Extras",
- "json": "JSON",
- "webmanifest": "JSON",
- "json5": "JSON5",
- "jsonp": "JSONP",
- "jsstacktrace": "JS stack trace",
- "js-templates": "JS Templates",
- "julia": "Julia",
- "keepalived": "Keepalived Configure",
- "keyman": "Keyman",
- "kotlin": "Kotlin",
- "kt": "Kotlin",
- "kts": "Kotlin",
- "kumir": "KuMir (\u041A\u0443\u041C\u0438\u0440)",
- "kum": "KuMir (\u041A\u0443\u041C\u0438\u0440)",
- "kusto": "Kusto",
- "latex": "LaTeX",
- "tex": "LaTeX",
- "context": "LaTeX",
- "latte": "Latte",
- "less": "Less",
- "lilypond": "LilyPond",
- "ly": "LilyPond",
- "liquid": "Liquid",
- "lisp": "Lisp",
- "emacs": "Lisp",
- "elisp": "Lisp",
- "emacs-lisp": "Lisp",
- "livescript": "LiveScript",
- "llvm": "LLVM IR",
- "log": "Log file",
- "lolcode": "LOLCODE",
- "lua": "Lua",
- "magma": "Magma (CAS)",
- "makefile": "Makefile",
- "markdown": "Markdown",
- "md": "Markdown",
- "markup-templating": "Markup templating",
- "mata": "Mata",
- "matlab": "MATLAB",
- "maxscript": "MAXScript",
- "mel": "MEL",
- "mermaid": "Mermaid",
- "metafont": "METAFONT",
- "mizar": "Mizar",
- "mongodb": "MongoDB",
- "monkey": "Monkey",
- "moonscript": "MoonScript",
- "moon": "MoonScript",
- "n1ql": "N1QL",
- "n4js": "N4JS",
- "n4jsd": "N4JS",
- "nand2tetris-hdl": "Nand To Tetris HDL",
- "naniscript": "Naninovel Script",
- "nani": "Naninovel Script",
- "nasm": "NASM",
- "neon": "NEON",
- "nevod": "Nevod",
- "nginx": "nginx",
- "nim": "Nim",
- "nix": "Nix",
- "nsis": "NSIS",
- "objectivec": "Objective-C",
- "objc": "Objective-C",
- "ocaml": "OCaml",
- "odin": "Odin",
- "opencl": "OpenCL",
- "openqasm": "OpenQasm",
- "qasm": "OpenQasm",
- "oz": "Oz",
- "parigp": "PARI/GP",
- "parser": "Parser",
- "pascal": "Pascal",
- "objectpascal": "Pascal",
- "pascaligo": "Pascaligo",
- "psl": "PATROL Scripting Language",
- "pcaxis": "PC-Axis",
- "px": "PC-Axis",
- "peoplecode": "PeopleCode",
- "pcode": "PeopleCode",
- "perl": "Perl",
- "php": "PHP",
- "phpdoc": "PHPDoc",
- "php-extras": "PHP Extras",
- "plant-uml": "PlantUML",
- "plantuml": "PlantUML",
- "plsql": "PL/SQL",
- "powerquery": "PowerQuery",
- "pq": "PowerQuery",
- "mscript": "PowerQuery",
- "powershell": "PowerShell",
- "processing": "Processing",
- "prolog": "Prolog",
- "promql": "PromQL",
- "properties": ".properties",
- "protobuf": "Protocol Buffers",
- "pug": "Pug",
- "puppet": "Puppet",
- "pure": "Pure",
- "purebasic": "PureBasic",
- "pbfasm": "PureBasic",
- "purescript": "PureScript",
- "purs": "PureScript",
- "python": "Python",
- "py": "Python",
- "qsharp": "Q#",
- "qs": "Q#",
- "q": "Q (kdb+ database)",
- "qml": "QML",
- "qore": "Qore",
- "r": "R",
- "racket": "Racket",
- "rkt": "Racket",
- "cshtml": "Razor C#",
- "jsx": "React JSX",
- "tsx": "React TSX",
- "reason": "Reason",
- "regex": "Regex",
- "rego": "Rego",
- "renpy": "Ren'py",
- "rpy": "Ren'py",
- "rescript": "ReScript",
- "res": "ReScript",
- "rest": "reST (reStructuredText)",
- "rip": "Rip",
- "roboconf": "Roboconf",
- "robotframework": "Robot Framework",
- "robot": "Robot Framework",
- "ruby": "Ruby",
- "rb": "Ruby",
- "rust": "Rust",
- "sas": "SAS",
- "sass": "Sass (Sass)",
- "scss": "Sass (SCSS)",
- "scala": "Scala",
- "scheme": "Scheme",
- "shell-session": "Shell session",
- "sh-session": "Shell session",
- "shellsession": "Shell session",
- "smali": "Smali",
- "smalltalk": "Smalltalk",
- "smarty": "Smarty",
- "sml": "SML",
- "smlnj": "SML",
- "solidity": "Solidity (Ethereum)",
- "sol": "Solidity (Ethereum)",
- "solution-file": "Solution file",
- "sln": "Solution file",
- "soy": "Soy (Closure Template)",
- "sparql": "SPARQL",
- "rq": "SPARQL",
- "splunk-spl": "Splunk SPL",
- "sqf": "SQF",
- "sql": "SQL",
- "squirrel": "Squirrel",
- "stan": "Stan",
- "stata": "Stata Ado",
- "iecst": "Structured Text (IEC 61131-3)",
- "stylus": "Stylus",
- "supercollider": "SuperCollider",
- "sclang": "SuperCollider",
- "swift": "Swift",
- "systemd": "Systemd configuration file",
- "t4-templating": "T4 templating",
- "t4-cs": "T4 Text Templates (C#)",
- "t4": "T4 Text Templates (C#)",
- "t4-vb": "T4 Text Templates (VB)",
- "tap": "TAP",
- "tcl": "Tcl",
- "tt2": "Template Toolkit 2",
- "textile": "Textile",
- "toml": "TOML",
- "tremor": "Tremor",
- "trickle": "Tremor",
- "troy": "Tremor",
- "turtle": "Turtle",
- "trig": "Turtle",
- "twig": "Twig",
- "typescript": "TypeScript",
- "ts": "TypeScript",
- "typoscript": "TypoScript",
- "tsconfig": "TypoScript",
- "unrealscript": "UnrealScript",
- "uscript": "UnrealScript",
- "uc": "UnrealScript",
- "uorazor": "UO Razor Script",
- "uri": "URI",
- "url": "URI",
- "v": "V",
- "vala": "Vala",
- "vbnet": "VB.Net",
- "velocity": "Velocity",
- "verilog": "Verilog",
- "vhdl": "VHDL",
- "vim": "vim",
- "visual-basic": "Visual Basic",
- "vb": "Visual Basic",
- "vba": "Visual Basic",
- "warpscript": "WarpScript",
- "wasm": "WebAssembly",
- "web-idl": "Web IDL",
- "webidl": "Web IDL",
- "wgsl": "WGSL",
- "wiki": "Wiki markup",
- "wolfram": "Wolfram language",
- "mathematica": "Wolfram language",
- "nb": "Wolfram language",
- "wl": "Wolfram language",
- "wren": "Wren",
- "xeora": "Xeora",
- "xeoracube": "Xeora",
- "xml-doc": "XML doc (.net)",
- "xojo": "Xojo (REALbasic)",
- "xquery": "XQuery",
- "yaml": "YAML",
- "yml": "YAML",
- "yang": "YANG",
- "zig": "Zig"
+ "css": "CSS",
+ "clike": "C-like",
+ "javascript": "JavaScript",
+ "js": "JavaScript",
+ "abap": "ABAP",
+ "abnf": "ABNF",
+ "actionscript": "ActionScript",
+ "ada": "Ada",
+ "agda": "Agda",
+ "al": "AL",
+ "antlr4": "ANTLR4",
+ "g4": "ANTLR4",
+ "apacheconf": "Apache Configuration",
+ "apex": "Apex",
+ "apl": "APL",
+ "applescript": "AppleScript",
+ "aql": "AQL",
+ "arduino": "Arduino",
+ "ino": "Arduino",
+ "arff": "ARFF",
+ "armasm": "ARM Assembly",
+ "arm-asm": "ARM Assembly",
+ "arturo": "Arturo",
+ "art": "Arturo",
+ "asciidoc": "AsciiDoc",
+ "adoc": "AsciiDoc",
+ "aspnet": "ASP.NET (C#)",
+ "asm6502": "6502 Assembly",
+ "asmatmel": "Atmel AVR Assembly",
+ "autohotkey": "AutoHotkey",
+ "autoit": "AutoIt",
+ "avisynth": "AviSynth",
+ "avs": "AviSynth",
+ "avro-idl": "Avro IDL",
+ "avdl": "Avro IDL",
+ "awk": "AWK",
+ "gawk": "GAWK",
+ "bash": "Shell",
+ "sh": "Shell",
+ "shell": "Shell",
+ "basic": "BASIC",
+ "batch": "Batch",
+ "bbcode": "BBcode",
+ "shortcode": "BBcode",
+ "bbj": "BBj",
+ "birb": "Birb",
+ "bison": "Bison",
+ "bnf": "BNF",
+ "rbnf": "BNF",
+ "bqn": "BQN",
+ "brainfuck": "Brainfuck",
+ "brightscript": "BrightScript",
+ "bro": "Bro",
+ "bsl": "BSL (1C)",
+ "oscript": "BSL (1C)",
+ "c": "C",
+ "csharp": "C#",
+ "cs": "C#",
+ "dotnet": "C#",
+ "cpp": "C++",
+ "cfscript": "CFScript",
+ "cfc": "CFScript",
+ "chaiscript": "ChaiScript",
+ "cil": "CIL",
+ "cilkc": "Cilk/C",
+ "cilk-c": "Cilk/C",
+ "cilkcpp": "Cilk/C++",
+ "cilk-cpp": "Cilk/C++",
+ "cilk": "Cilk/C++",
+ "clojure": "Clojure",
+ "cmake": "CMake",
+ "cobol": "COBOL",
+ "coffeescript": "CoffeeScript",
+ "coffee": "CoffeeScript",
+ "concurnas": "Concurnas",
+ "conc": "Concurnas",
+ "csp": "Content-Security-Policy",
+ "cooklang": "Cooklang",
+ "coq": "Coq",
+ "crystal": "Crystal",
+ "css-extras": "CSS Extras",
+ "csv": "CSV",
+ "cue": "CUE",
+ "cypher": "Cypher",
+ "d": "D",
+ "dart": "Dart",
+ "dataweave": "DataWeave",
+ "dax": "DAX",
+ "dhall": "Dhall",
+ "diff": "Diff",
+ "django": "Django/Jinja2",
+ "jinja2": "Django/Jinja2",
+ "dns-zone-file": "DNS zone file",
+ "dns-zone": "DNS zone file",
+ "docker": "Docker",
+ "dockerfile": "Docker",
+ "dot": "DOT (Graphviz)",
+ "gv": "DOT (Graphviz)",
+ "ebnf": "EBNF",
+ "editorconfig": "EditorConfig",
+ "eiffel": "Eiffel",
+ "ejs": "EJS",
+ "eta": "EJS",
+ "elixir": "Elixir",
+ "elm": "Elm",
+ "etlua": "Embedded Lua templating",
+ "erb": "ERB",
+ "erlang": "Erlang",
+ "excel-formula": "Excel Formula",
+ "xlsx": "Excel Formula",
+ "xls": "Excel Formula",
+ "fsharp": "F#",
+ "factor": "Factor",
+ "false": "False",
+ "firestore-security-rules": "Firestore security rules",
+ "flow": "Flow",
+ "fortran": "Fortran",
+ "ftl": "FreeMarker Template Language",
+ "gml": "GameMaker Language",
+ "gamemakerlanguage": "GameMaker Language",
+ "gap": "GAP (CAS)",
+ "gcode": "G-code",
+ "gdscript": "GDScript",
+ "gedcom": "GEDCOM",
+ "gettext": "gettext",
+ "po": "gettext",
+ "gherkin": "Gherkin",
+ "git": "Git",
+ "glsl": "GLSL",
+ "gn": "GN",
+ "gni": "GN",
+ "linker-script": "GNU Linker Script",
+ "ld": "GNU Linker Script",
+ "go": "Go",
+ "go-module": "Go module",
+ "go-mod": "Go module",
+ "gradle": "Gradle",
+ "graphql": "GraphQL",
+ "groovy": "Groovy",
+ "haml": "Haml",
+ "handlebars": "Handlebars",
+ "hbs": "Handlebars",
+ "mustache": "Handlebars",
+ "haskell": "Haskell",
+ "hs": "Haskell",
+ "haxe": "Haxe",
+ "hcl": "HCL",
+ "hlsl": "HLSL",
+ "hoon": "Hoon",
+ "http": "HTTP",
+ "hpkp": "HTTP Public-Key-Pins",
+ "hsts": "HTTP Strict-Transport-Security",
+ "ichigojam": "IchigoJam",
+ "icon": "Icon",
+ "icu-message-format": "ICU Message Format",
+ "idris": "Idris",
+ "idr": "Idris",
+ "ignore": ".ignore",
+ "gitignore": ".ignore",
+ "hgignore": ".ignore",
+ "npmignore": ".ignore",
+ "inform7": "Inform 7",
+ "ini": "Ini",
+ "io": "Io",
+ "j": "J",
+ "java": "Java",
+ "javadoc": "JavaDoc",
+ "javadoclike": "JavaDoc-like",
+ "javastacktrace": "Java stack trace",
+ "jexl": "Jexl",
+ "jolie": "Jolie",
+ "jq": "JQ",
+ "jsdoc": "JSDoc",
+ "js-extras": "JS Extras",
+ "json": "JSON",
+ "webmanifest": "JSON",
+ "json5": "JSON5",
+ "jsonp": "JSONP",
+ "jsstacktrace": "JS stack trace",
+ "js-templates": "JS Templates",
+ "julia": "Julia",
+ "keepalived": "Keepalived Configure",
+ "keyman": "Keyman",
+ "kotlin": "Kotlin",
+ "kt": "Kotlin",
+ "kts": "Kotlin",
+ "kumir": "KuMir (\u041A\u0443\u041C\u0438\u0440)",
+ "kum": "KuMir (\u041A\u0443\u041C\u0438\u0440)",
+ "kusto": "Kusto",
+ "latex": "LaTeX",
+ "tex": "LaTeX",
+ "context": "LaTeX",
+ "latte": "Latte",
+ "less": "Less",
+ "lilypond": "LilyPond",
+ "ly": "LilyPond",
+ "liquid": "Liquid",
+ "lisp": "Lisp",
+ "emacs": "Lisp",
+ "elisp": "Lisp",
+ "emacs-lisp": "Lisp",
+ "livescript": "LiveScript",
+ "llvm": "LLVM IR",
+ "log": "Log file",
+ "lolcode": "LOLCODE",
+ "lua": "Lua",
+ "magma": "Magma (CAS)",
+ "makefile": "Makefile",
+ "markdown": "Markdown",
+ "md": "Markdown",
+ "markup-templating": "Markup templating",
+ "mata": "Mata",
+ "matlab": "MATLAB",
+ "maxscript": "MAXScript",
+ "mel": "MEL",
+ "mermaid": "Mermaid",
+ "metafont": "METAFONT",
+ "mizar": "Mizar",
+ "mongodb": "MongoDB",
+ "monkey": "Monkey",
+ "moonscript": "MoonScript",
+ "moon": "MoonScript",
+ "n1ql": "N1QL",
+ "n4js": "N4JS",
+ "n4jsd": "N4JS",
+ "nand2tetris-hdl": "Nand To Tetris HDL",
+ "naniscript": "Naninovel Script",
+ "nani": "Naninovel Script",
+ "nasm": "NASM",
+ "neon": "NEON",
+ "nevod": "Nevod",
+ "nginx": "nginx",
+ "nim": "Nim",
+ "nix": "Nix",
+ "nsis": "NSIS",
+ "objectivec": "Objective-C",
+ "objc": "Objective-C",
+ "ocaml": "OCaml",
+ "odin": "Odin",
+ "opencl": "OpenCL",
+ "openqasm": "OpenQasm",
+ "qasm": "OpenQasm",
+ "oz": "Oz",
+ "parigp": "PARI/GP",
+ "parser": "Parser",
+ "pascal": "Pascal",
+ "objectpascal": "Pascal",
+ "pascaligo": "Pascaligo",
+ "psl": "PATROL Scripting Language",
+ "pcaxis": "PC-Axis",
+ "px": "PC-Axis",
+ "peoplecode": "PeopleCode",
+ "pcode": "PeopleCode",
+ "perl": "Perl",
+ "php": "PHP",
+ "phpdoc": "PHPDoc",
+ "php-extras": "PHP Extras",
+ "plant-uml": "PlantUML",
+ "plantuml": "PlantUML",
+ "plsql": "PL/SQL",
+ "powerquery": "PowerQuery",
+ "pq": "PowerQuery",
+ "mscript": "PowerQuery",
+ "powershell": "PowerShell",
+ "processing": "Processing",
+ "prolog": "Prolog",
+ "promql": "PromQL",
+ "properties": ".properties",
+ "protobuf": "Protocol Buffers",
+ "pug": "Pug",
+ "puppet": "Puppet",
+ "pure": "Pure",
+ "purebasic": "PureBasic",
+ "pbfasm": "PureBasic",
+ "purescript": "PureScript",
+ "purs": "PureScript",
+ "python": "Python",
+ "py": "Python",
+ "qsharp": "Q#",
+ "qs": "Q#",
+ "q": "Q (kdb+ database)",
+ "qml": "QML",
+ "qore": "Qore",
+ "r": "R",
+ "racket": "Racket",
+ "rkt": "Racket",
+ "cshtml": "Razor C#",
+ "jsx": "React JSX",
+ "tsx": "React TSX",
+ "reason": "Reason",
+ "regex": "Regex",
+ "rego": "Rego",
+ "renpy": "Ren'py",
+ "rpy": "Ren'py",
+ "rescript": "ReScript",
+ "res": "ReScript",
+ "rest": "reST (reStructuredText)",
+ "rip": "Rip",
+ "roboconf": "Roboconf",
+ "robotframework": "Robot Framework",
+ "robot": "Robot Framework",
+ "ruby": "Ruby",
+ "rb": "Ruby",
+ "rust": "Rust",
+ "sas": "SAS",
+ "sass": "Sass (Sass)",
+ "scss": "Sass (SCSS)",
+ "scala": "Scala",
+ "scheme": "Scheme",
+ "shell-session": "Shell session",
+ "sh-session": "Shell session",
+ "shellsession": "Shell session",
+ "smali": "Smali",
+ "smalltalk": "Smalltalk",
+ "smarty": "Smarty",
+ "sml": "SML",
+ "smlnj": "SML",
+ "solidity": "Solidity (Ethereum)",
+ "sol": "Solidity (Ethereum)",
+ "solution-file": "Solution file",
+ "sln": "Solution file",
+ "soy": "Soy (Closure Template)",
+ "sparql": "SPARQL",
+ "rq": "SPARQL",
+ "splunk-spl": "Splunk SPL",
+ "sqf": "SQF",
+ "sql": "SQL",
+ "squirrel": "Squirrel",
+ "stan": "Stan",
+ "stata": "Stata Ado",
+ "iecst": "Structured Text (IEC 61131-3)",
+ "stylus": "Stylus",
+ "supercollider": "SuperCollider",
+ "sclang": "SuperCollider",
+ "swift": "Swift",
+ "systemd": "Systemd configuration file",
+ "t4-templating": "T4 templating",
+ "t4-cs": "T4 Text Templates (C#)",
+ "t4": "T4 Text Templates (C#)",
+ "t4-vb": "T4 Text Templates (VB)",
+ "tap": "TAP",
+ "tcl": "Tcl",
+ "tt2": "Template Toolkit 2",
+ "textile": "Textile",
+ "toml": "TOML",
+ "tremor": "Tremor",
+ "trickle": "Tremor",
+ "troy": "Tremor",
+ "turtle": "Turtle",
+ "trig": "Turtle",
+ "twig": "Twig",
+ "typescript": "TypeScript",
+ "ts": "TypeScript",
+ "typoscript": "TypoScript",
+ "tsconfig": "TypoScript",
+ "unrealscript": "UnrealScript",
+ "uscript": "UnrealScript",
+ "uc": "UnrealScript",
+ "uorazor": "UO Razor Script",
+ "uri": "URI",
+ "url": "URI",
+ "v": "V",
+ "vala": "Vala",
+ "vbnet": "VB.Net",
+ "velocity": "Velocity",
+ "verilog": "Verilog",
+ "vhdl": "VHDL",
+ "vim": "vim",
+ "visual-basic": "Visual Basic",
+ "vb": "Visual Basic",
+ "vba": "Visual Basic",
+ "warpscript": "WarpScript",
+ "wasm": "WebAssembly",
+ "web-idl": "Web IDL",
+ "webidl": "Web IDL",
+ "wgsl": "WGSL",
+ "wiki": "Wiki markup",
+ "wolfram": "Wolfram language",
+ "mathematica": "Wolfram language",
+ "nb": "Wolfram language",
+ "wl": "Wolfram language",
+ "wren": "Wren",
+ "xeora": "Xeora",
+ "xeoracube": "Xeora",
+ "xml-doc": "XML doc (.net)",
+ "xojo": "Xojo (REALbasic)",
+ "xquery": "XQuery",
+ "yaml": "YAML",
+ "yml": "YAML",
+ "yang": "YANG",
+ "zig": "Zig"
};
var Icons = {
- ".gitignore": ``,
- ".hgignore": ``,
- ".npmignore": ``,
- ".properties": ``,
- "6502 Assembly": `file_type_assembly`,
- "ActionScript": ``,
- "Ada": ``,
- "AL": ``,
- "ANTLR4": ``,
- "Apache Configuration": `file_type_apache`,
- "Apex": ``,
- "APL": ``,
- "AppleScript": ``,
- "Arduino": `file_type_arduino`,
- "ARM Assembly": `file_type_assembly`,
- "AsciiDoc": ``,
- "ASP.NET (C#)": `file_type_aspx`,
- "AutoHotkey": `file_type_autohotkey`,
- "AutoIt": ``,
- "Avro IDL": ``,
- "AWK": ``,
- "Batch": ``,
- "C#": `file_type_csharp`,
- "C": `file_type_c`,
- "C++": `file_type_cpp`,
- "Clojure": ``,
- "CMake": `file_type_cmake`,
- "COBOL": ``,
- "CoffeeScript": ``,
- "Crystal": ``,
- "CSS": ``,
- "CSV": ``,
- "D": `file_type_dlang`,
- "Dart": ``,
- "Dhall": ``,
- "Diff": ``,
- "Django/Jinja2": `file_type_jinja`,
- "Docker": ``,
- "DOT (Graphviz)": ``,
- "EditorConfig": ``,
- "EJS": ``,
- "Elixir": `file_type_elixir`,
- "Elm": ``,
- "ERB": ``,
- "Erlang": ``,
- "F#": ``,
- "Firestore security rules": ``,
- "Flow": `file_type_flow`,
- "Fortran": ``,
- "FreeMarker Template Language": ``,
- "GameMaker Language": ``,
- "G-code": ``,
- "GDScript": ``,
- "Git": ``,
- "GLSL": ``,
- "Go module": ``,
- "Go": ``,
- "Gradle": ``,
- "GraphQL": ``,
- "Groovy": ``,
- "Haml": ``,
- "Handlebars": ``,
- "Haskell": `file_type_haskell2`,
- "Haxe": ``,
- "HLSL": ``,
- "HTML": ``,
- "HTTP": `file_type_http`,
- "Idris": ``,
- "Ini": ``,
- "Io": ``,
- "Java": ``,
- "JavaScript": ``,
- "JSON": ``,
- "JSON5": ``,
- "Julia": ``,
- "Kotlin": `file_type_kotlin`,
- "Kusto": ``,
- "LaTeX": ``,
- "Less": `file_type_less`,
- "Liquid": ``,
- "Lisp": `file_type_emacs`,
- "LiveScript": ``,
- "Log file": ``,
- "LOLCODE": ``,
- "Lua": ``,
- "Markdown": ``,
- "MATLAB": `file_type_matlab`,
- "MAXScript": ``,
- "MEL": `file_type_maya`,
- "MongoDB": `file_type_mongo`,
- "nginx": ``,
- "Nim": ``,
- "Nix": ``,
- "NSIS": ``,
- "Object Pascal": `file_type_delphi`,
- "Objective-C": ``,
- "OCaml": `file_type_ocaml`,
- "OpenCL": `file_type_opencl`,
- "Pascal": `file_type_delphi`,
- "Perl": ``,
- "PHP": `file_type_php`,
- "PL/SQL": ``,
- "Plain text": ``,
- "PlantUML": `file_type_plantuml`,
- "PowerQuery": ``,
- "PowerShell": `file_type_powershell`,
- "Processing": `file_type_processinglang`,
- "Prolog": `file_type_prolog`,
- "Protocol Buffers": ``,
- "Pug": ``,
- "Puppet": ``,
- "PureScript": ``,
- "Python": `file_type_python`,
- "Q (kdb+ database)": ``,
- "Q#": ``,
- "QML": ``,
- "R": `file_type_r`,
- "Racket": ``,
- "Razor C#": ``,
- "React JSX": ``,
- "React TSX": ``,
- "Reason": ``,
- "Rego": `file_type_rego`,
- "ReScript": `file_type_rescript`,
- "reST (reStructuredText)": ``,
- "Robot Framework": ``,
- "Ruby": `file_type_ruby`,
- "Rust": `file_type_rust`,
- "SAS": ``,
- "Sass (Sass)": ``,
- "Sass (SCSS)": ``,
- "Scala": `file_type_scala`,
- "Shell session": ``,
- "Shell": ``,
- "Smarty": `file_type_smarty`,
- "Solidity (Ethereum)": ``,
- "Solution file": `file_type_sln`,
- "SPARQL": ``,
- "SQF": ``,
- "SQF: Status Quo Function (Arma 3)": ``,
- "SQL": ``,
- "Squirrel": ``,
- "Stan": `file_type_stan`,
- "Stata Ado": `file_type_stata`,
- "Stylus": `file_type_stylus`,
- "SVG": ``,
- "Swift": `file_type_swift`,
- "Systemd configuration file": ``,
- "T4 templating": ``,
- "T4 Text Templates (C#)": ``,
- "T4 Text Templates (VB)": ``,
- "Tcl": ``,
- "Template Toolkit 2": ``,
- "TeX": ``,
- "Textile": ``,
- "TOML": ``,
- "TSConfig": ``,
- "Twig": ``,
- "TypeScript": ``,
- "TypoScript": ``,
- "V": ``,
- "Vala": ``,
- "VB.Net": ``,
- "VBA": ``,
- "Velocity": ``,
- "Verilog": ``,
- "VHDL": ``,
- "vim": `file_type_vim`,
- "Visual Basic": ``,
- "WebAssembly": ``,
- "Wolfram language": ``,
- "XML": ``,
- "XQuery": ``,
- "YAML": ``,
- "YANG": ``,
- "Zig": ``
+ ".gitignore": ``,
+ ".hgignore": ``,
+ ".npmignore": ``,
+ ".properties": ``,
+ "6502 Assembly": `file_type_assembly`,
+ "ActionScript": ``,
+ "Ada": ``,
+ "AL": ``,
+ "ANTLR4": ``,
+ "Apache Configuration": `file_type_apache`,
+ "Apex": ``,
+ "APL": ``,
+ "AppleScript": ``,
+ "Arduino": `file_type_arduino`,
+ "ARM Assembly": `file_type_assembly`,
+ "AsciiDoc": ``,
+ "ASP.NET (C#)": `file_type_aspx`,
+ "AutoHotkey": `file_type_autohotkey`,
+ "AutoIt": ``,
+ "Avro IDL": ``,
+ "AWK": ``,
+ "Batch": ``,
+ "C#": `file_type_csharp`,
+ "C": `file_type_c`,
+ "C++": `file_type_cpp`,
+ "Clojure": ``,
+ "CMake": `file_type_cmake`,
+ "COBOL": ``,
+ "CoffeeScript": ``,
+ "Crystal": ``,
+ "CSS": ``,
+ "CSV": ``,
+ "D": `file_type_dlang`,
+ "Dart": ``,
+ "Dhall": ``,
+ "Diff": ``,
+ "Django/Jinja2": `file_type_jinja`,
+ "Docker": ``,
+ "DOT (Graphviz)": ``,
+ "EditorConfig": ``,
+ "EJS": ``,
+ "Elixir": `file_type_elixir`,
+ "Elm": ``,
+ "ERB": ``,
+ "Erlang": ``,
+ "F#": ``,
+ "Firestore security rules": ``,
+ "Flow": `file_type_flow`,
+ "Fortran": ``,
+ "FreeMarker Template Language": ``,
+ "GameMaker Language": ``,
+ "G-code": ``,
+ "GDScript": ``,
+ "Git": ``,
+ "GLSL": ``,
+ "Go module": ``,
+ "Go": ``,
+ "Gradle": ``,
+ "GraphQL": ``,
+ "Groovy": ``,
+ "Haml": ``,
+ "Handlebars": ``,
+ "Haskell": `file_type_haskell2`,
+ "Haxe": ``,
+ "HLSL": ``,
+ "HTML": ``,
+ "HTTP": `file_type_http`,
+ "Idris": ``,
+ "Ini": ``,
+ "Io": ``,
+ "Java": ``,
+ "JavaScript": ``,
+ "JSON": ``,
+ "JSON5": ``,
+ "Julia": ``,
+ "Kotlin": `file_type_kotlin`,
+ "Kusto": ``,
+ "LaTeX": ``,
+ "Less": `file_type_less`,
+ "Liquid": ``,
+ "Lisp": `file_type_emacs`,
+ "LiveScript": ``,
+ "Log file": ``,
+ "LOLCODE": ``,
+ "Lua": ``,
+ "Markdown": ``,
+ "MATLAB": `file_type_matlab`,
+ "MAXScript": ``,
+ "MEL": `file_type_maya`,
+ "MongoDB": `file_type_mongo`,
+ "nginx": ``,
+ "Nim": ``,
+ "Nix": ``,
+ "NSIS": ``,
+ "Object Pascal": `file_type_delphi`,
+ "Objective-C": ``,
+ "OCaml": `file_type_ocaml`,
+ "OpenCL": `file_type_opencl`,
+ "Pascal": `file_type_delphi`,
+ "Perl": ``,
+ "PHP": `file_type_php`,
+ "PL/SQL": ``,
+ "Plain text": ``,
+ "PlantUML": `file_type_plantuml`,
+ "PowerQuery": ``,
+ "PowerShell": `file_type_powershell`,
+ "Processing": `file_type_processinglang`,
+ "Prolog": `file_type_prolog`,
+ "Protocol Buffers": ``,
+ "Pug": ``,
+ "Puppet": ``,
+ "PureScript": ``,
+ "Python": `file_type_python`,
+ "Q (kdb+ database)": ``,
+ "Q#": ``,
+ "QML": ``,
+ "R": `file_type_r`,
+ "Racket": ``,
+ "Razor C#": ``,
+ "React JSX": ``,
+ "React TSX": ``,
+ "Reason": ``,
+ "Rego": `file_type_rego`,
+ "ReScript": `file_type_rescript`,
+ "reST (reStructuredText)": ``,
+ "Robot Framework": ``,
+ "Ruby": `file_type_ruby`,
+ "Rust": `file_type_rust`,
+ "SAS": ``,
+ "Sass (Sass)": ``,
+ "Sass (SCSS)": ``,
+ "Scala": `file_type_scala`,
+ "Shell session": ``,
+ "Shell": ``,
+ "Smarty": `file_type_smarty`,
+ "Solidity (Ethereum)": ``,
+ "Solution file": `file_type_sln`,
+ "SPARQL": ``,
+ "SQF": ``,
+ "SQF: Status Quo Function (Arma 3)": ``,
+ "SQL": ``,
+ "Squirrel": ``,
+ "Stan": `file_type_stan`,
+ "Stata Ado": `file_type_stata`,
+ "Stylus": `file_type_stylus`,
+ "SVG": ``,
+ "Swift": `file_type_swift`,
+ "Systemd configuration file": ``,
+ "T4 templating": ``,
+ "T4 Text Templates (C#)": ``,
+ "T4 Text Templates (VB)": ``,
+ "Tcl": ``,
+ "Template Toolkit 2": ``,
+ "TeX": ``,
+ "Textile": ``,
+ "TOML": ``,
+ "TSConfig": ``,
+ "Twig": ``,
+ "TypeScript": ``,
+ "TypoScript": ``,
+ "V": ``,
+ "Vala": ``,
+ "VB.Net": ``,
+ "VBA": ``,
+ "Velocity": ``,
+ "Verilog": ``,
+ "VHDL": ``,
+ "vim": `file_type_vim`,
+ "Visual Basic": ``,
+ "WebAssembly": ``,
+ "Wolfram language": ``,
+ "XML": ``,
+ "XQuery": ``,
+ "YAML": ``,
+ "YANG": ``,
+ "Zig": ``
};
// src/Utils.ts
function splitAndTrimString(str) {
- if (!str) {
- return [];
- }
- str = str.replace(/\*/g, ".*");
- if (!str.includes(",")) {
- return [str];
- }
- return str.split(",").map((s2) => s2.trim());
+ if (!str) {
+ return [];
+ }
+ str = str.replace(/\*/g, ".*");
+ if (!str.includes(",")) {
+ return [str];
+ }
+ return str.split(",").map((s2) => s2.trim());
}
function searchString(str, searchTerm) {
- const originalStr = str;
- str = str.toLowerCase();
- searchTerm = searchTerm.toLowerCase();
- if (searchTerm === "file:") {
- if (str.includes(searchTerm)) {
- const startIndex = str.indexOf(searchTerm) + searchTerm.length;
- let result = "";
- if (str[startIndex] === '"') {
- const endIndex = str.indexOf('"', startIndex + 1);
- if (endIndex !== -1) {
- result = originalStr.substring(startIndex + 1, endIndex);
- } else {
- result = originalStr.substring(startIndex + 1);
- }
- } else {
- const endIndex = str.indexOf(" ", startIndex);
- if (endIndex !== -1) {
- result = originalStr.substring(startIndex, endIndex);
- } else {
- result = originalStr.substring(startIndex);
- }
- }
- return result.trim();
- }
- } else if (searchTerm === "```") {
- if (str.startsWith(searchTerm)) {
- const startIndex = searchTerm.length;
- const endIndex = str.indexOf(" ", startIndex);
- let word = "";
- if (endIndex !== -1) {
- word = originalStr.substring(startIndex, endIndex);
- } else {
- word = originalStr.substring(startIndex);
- }
- if (!word.includes(":")) {
- if (word.toLowerCase() === "fold")
- return null;
- else
- return word;
- }
- }
- } else if (searchTerm === "fold") {
- if (str.includes(" fold ")) {
- return true;
- }
- const index = str.indexOf(searchTerm);
- if (index !== -1 && index === str.length - searchTerm.length && str[index - 1] === " ") {
- return true;
- }
- if (str.includes("```fold ")) {
- return true;
- }
- if (str.includes("```fold") && str.indexOf("```fold") + "```fold".length === str.length) {
- return true;
- }
- return false;
- } else {
- if (str.includes(searchTerm)) {
- const startIndex = str.indexOf(searchTerm) + searchTerm.length;
- const endIndex = str.indexOf(" ", startIndex);
- if (endIndex !== -1) {
- return originalStr.substring(startIndex, endIndex).trim();
- } else {
- return originalStr.substring(startIndex).trim();
- }
- }
- }
- return null;
+ const originalStr = str;
+ str = str.toLowerCase();
+ searchTerm = searchTerm.toLowerCase();
+ if (searchTerm === "file:") {
+ if (str.includes(searchTerm)) {
+ const startIndex = str.indexOf(searchTerm) + searchTerm.length;
+ let result = "";
+ if (str[startIndex] === '"') {
+ const endIndex = str.indexOf('"', startIndex + 1);
+ if (endIndex !== -1) {
+ result = originalStr.substring(startIndex + 1, endIndex);
+ } else {
+ result = originalStr.substring(startIndex + 1);
+ }
+ } else {
+ const endIndex = str.indexOf(" ", startIndex);
+ if (endIndex !== -1) {
+ result = originalStr.substring(startIndex, endIndex);
+ } else {
+ result = originalStr.substring(startIndex);
+ }
+ }
+ return result.trim();
+ }
+ } else if (searchTerm === "```") {
+ if (str.startsWith(searchTerm)) {
+ const startIndex = searchTerm.length;
+ const endIndex = str.indexOf(" ", startIndex);
+ let word = "";
+ if (endIndex !== -1) {
+ word = originalStr.substring(startIndex, endIndex);
+ } else {
+ word = originalStr.substring(startIndex);
+ }
+ if (!word.includes(":")) {
+ if (word.toLowerCase() === "fold")
+ return null;
+ else
+ return word;
+ }
+ }
+ } else if (searchTerm === "fold") {
+ if (str.includes(" fold ")) {
+ return true;
+ }
+ const index = str.indexOf(searchTerm);
+ if (index !== -1 && index === str.length - searchTerm.length && str[index - 1] === " ") {
+ return true;
+ }
+ if (str.includes("```fold ")) {
+ return true;
+ }
+ if (str.includes("```fold") && str.indexOf("```fold") + "```fold".length === str.length) {
+ return true;
+ }
+ return false;
+ } else {
+ if (str.includes(searchTerm)) {
+ const startIndex = str.indexOf(searchTerm) + searchTerm.length;
+ const endIndex = str.indexOf(" ", startIndex);
+ if (endIndex !== -1) {
+ return originalStr.substring(startIndex, endIndex).trim();
+ } else {
+ return originalStr.substring(startIndex).trim();
+ }
+ }
+ }
+ return null;
}
function getHighlightedLines(params) {
- if (!params) {
- return [];
- }
- const trimmedParams = params.trim();
- const lines = trimmedParams.split(",");
- return lines.map((line) => {
- if (line.includes("-")) {
- const range = line.split("-");
- const start = parseInt(range[0], 10);
- const end = parseInt(range[1], 10);
- return Array.from({ length: end - start + 1 }, (_2, i2) => start + i2);
- }
- return parseInt(line, 10);
- }).flat();
+ if (!params) {
+ return [];
+ }
+ const trimmedParams = params.trim();
+ const lines = trimmedParams.split(",");
+ return lines.map((line) => {
+ if (line.includes("-")) {
+ const range = line.split("-");
+ const start = parseInt(range[0], 10);
+ const end = parseInt(range[1], 10);
+ return Array.from({ length: end - start + 1 }, (_2, i2) => start + i2);
+ }
+ return parseInt(line, 10);
+ }).flat();
}
function isExcluded(lineText, excludeLangs) {
- const codeBlockLang = searchString(lineText, "```");
- const regexLangs = splitAndTrimString(excludeLangs).map((lang) => new RegExp(`^${lang.replace(/\*/g, ".*")}$`, "i"));
- for (const regexLang of regexLangs) {
- if (codeBlockLang && regexLang.test(codeBlockLang)) {
- return true;
- }
- }
- return false;
+ const codeBlockLang = searchString(lineText, "```");
+ const regexLangs = splitAndTrimString(excludeLangs).map((lang) => new RegExp(`^${lang.replace(/\*/g, ".*")}$`, "i"));
+ for (const regexLang of regexLangs) {
+ if (codeBlockLang && regexLang.test(codeBlockLang)) {
+ return true;
+ }
+ }
+ return false;
}
function getLanguageIcon(DisplayName) {
- if (!DisplayName)
- return "";
- if (Icons.hasOwnProperty(DisplayName)) {
- return Icons[DisplayName];
- }
- return null;
+ if (!DisplayName)
+ return "";
+ if (Icons.hasOwnProperty(DisplayName)) {
+ return Icons[DisplayName];
+ }
+ return null;
}
function getLanguageName(code) {
- if (!code)
- return "";
- code = code.toLowerCase();
- if (Languages.hasOwnProperty(code)) {
- return Languages[code];
- } else if (manualLang.hasOwnProperty(code)) {
- return manualLang[code];
- } else if (code) {
- return code.charAt(0).toUpperCase() + code.slice(1);
- }
- return "";
+ if (!code)
+ return "";
+ code = code.toLowerCase();
+ if (Languages.hasOwnProperty(code)) {
+ return Languages[code];
+ } else if (manualLang.hasOwnProperty(code)) {
+ return manualLang[code];
+ } else if (code) {
+ return code.charAt(0).toUpperCase() + code.slice(1);
+ }
+ return "";
}
var BLOBS = {};
function loadIcons() {
- for (const [key, value] of Object.entries(Icons)) {
- BLOBS[key.replace(/\s/g, "_")] = URL.createObjectURL(new Blob([``], { type: "image/svg+xml" }));
- }
+ for (const [key, value] of Object.entries(Icons)) {
+ BLOBS[key.replace(/\s/g, "_")] = URL.createObjectURL(new Blob([``], { type: "image/svg+xml" }));
+ }
}
function createContainer(specific) {
- const container = document.createElement("div");
- container.classList.add(`codeblock-customizer-header-container${specific ? "-specific" : ""}`);
- return container;
+ const container = document.createElement("div");
+ container.classList.add(`codeblock-customizer-header-container${specific ? "-specific" : ""}`);
+ return container;
}
function createCodeblockLang(lang) {
- const codeblockLang = document.createElement("div");
- codeblockLang.innerText = lang;
- codeblockLang.classList.add(`codeblock-customizer-header-language-tag-${getLanguageName(lang).toLowerCase()}`);
- return codeblockLang;
+ const codeblockLang = document.createElement("div");
+ codeblockLang.innerText = lang;
+ codeblockLang.classList.add(`codeblock-customizer-header-language-tag-${getLanguageName(lang).toLowerCase()}`);
+ return codeblockLang;
}
function createCodeblockIcon(displayLang) {
- const div = document.createElement("div");
- const img = document.createElement("img");
- img.classList.add("codeblock-customizer-icon");
- img.width = 28;
- img.src = BLOBS[displayLang.replace(/\s/g, "_")];
- div.appendChild(img);
- return div;
+ const div = document.createElement("div");
+ const img = document.createElement("img");
+ img.classList.add("codeblock-customizer-icon");
+ img.width = 28;
+ img.src = BLOBS[displayLang.replace(/\s/g, "_")];
+ div.appendChild(img);
+ return div;
}
function createFileName(text) {
- const fileName = document.createElement("div");
- fileName.innerText = text;
- fileName.classList.add("codeblock-customizer-header-text");
- return fileName;
-}
-var stylesDict = {
- activeCodeBlockLineColor: "codeblock-active-line-color",
- activeLineColor: "editor-active-line-color",
- backgroundColor: "codeblock-background-color",
- highlightColor: "highlight-color",
- headerColor: "header-background-color",
- headerTextColor: "header-text-color",
- headerLineColor: "header-line-color",
- gutterTextColor: "gutter-text-color",
- gutterBackgroundColor: "gutter-background-color",
- codeBlockLangColor: "language-tag-text-color",
- codeBlockLangBackgroundColor: "language-tag-background-color"
-};
-function updateSettingStyles(settings) {
- let colorThemes = settings.colorThemes;
- let styleId = "codeblock-customizer-styles";
- let styleTag = document.getElementById(styleId);
- if (typeof styleTag == "undefined" || styleTag == null) {
- styleTag = document.createElement("style");
- styleTag.id = styleId;
- document.getElementsByTagName("head")[0].appendChild(styleTag);
- }
- let currentMode = getCurrentMode();
- let defaultColors = settings.colorThemes.find((theme) => {
- return theme["name"] == `${currentMode.charAt(0).toUpperCase() + currentMode.slice(1)} Theme`;
- })["colors"];
- let themeColors = settings.colorThemes.find((theme) => {
- return theme["name"] == settings.SelectedTheme;
- })["colors"];
- let currentTheme = { name: "current", colors: {} };
- for (const key of Object.keys(stylesDict)) {
- let defaultValue = accessSetting(key, defaultColors).toLowerCase();
- let themeValue = accessSetting(key, themeColors).toLowerCase();
- let settingsValue = accessSetting(key, settings).toLowerCase();
- if (defaultValue !== settingsValue) {
- currentTheme["colors"][key] = settingsValue;
- } else if (defaultValue !== themeValue) {
- currentTheme["colors"][key] = themeValue;
- }
- }
- let altHighlightStyling = settings.alternateColors.reduce((styling, altHighlight) => {
- return styling + `
- .codeblock-customizer-line-highlighted-${altHighlight["name"].replace(/\s+/g, "-").toLowerCase()} {
- background-color: var(--codeblock-customiser-highlight-${altHighlight["name"].replace(/\s+/g, "-").toLowerCase()}-color) !important;
- }
- `;
- }, "");
- let textSettingsStyles = `
- body.codeblock-customizer [class^="codeblock-customizer-header-language-tag"] {
- --codeblock-customizer-language-tag-text-bold: ${settings.header.bCodeblockLangBold ? "bold" : "normal"};
- --codeblock-customizer-language-tag-text-italic: ${settings.header.bCodeblockLangItalic ? "italic" : "normal"};
- }
- body.codeblock-customizer .codeblock-customizer-header-text {
- --codeblock-customizer-header-text-bold: ${settings.header.bHeaderBold ? "bold" : "normal"};
- --codeblock-customizer-header-text-italic: ${settings.header.bHeaderItalic ? "italic" : "normal"};
- }
- `;
- styleTag.innerText = colorThemes.reduce((styles, theme) => {
- return styles + formatStyles(theme, settings.alternateColors);
- }, formatStyles(currentTheme, settings.alternateColors) + altHighlightStyling + textSettingsStyles).trim().replace(/[\r\n\s]+/g, " ");
- updateSettingClasses(settings);
-}
-function updateSettingClasses(settings) {
- document.body.classList.remove("codeblock-customizer-active-line-highlight", "codeblock-customizer-active-line-highlight-codeblock", "codeblock-customizer-active-line-highlight-editor");
- if (settings.bActiveLineHighlight && settings.bActiveCodeblockLineHighlight) {
- document.body.classList.add("codeblock-customizer-active-line-highlight");
- } else if (settings.bActiveLineHighlight && !settings.bActiveCodeblockLineHighlight) {
- document.body.classList.add("codeblock-customizer-active-line-highlight-editor");
- } else if (!settings.bActiveLineHighlight && settings.bActiveCodeblockLineHighlight) {
- document.body.classList.add("codeblock-customizer-active-line-highlight-codeblock");
- }
- if (settings.bEnableLineNumbers) {
- document.body.classList.add("codeblock-customizer-show-line-numbers");
- } else {
- document.body.classList.remove("codeblock-customizer-show-line-numbers");
- }
- document.body.classList.remove("codeblock-customizer-show-langnames", "codeblock-customizer-show-langnames-always");
- if (settings.header.bAlwaysDisplayCodeblockLang && settings.bDisplayCodeBlockLanguage) {
- document.body.classList.add("codeblock-customizer-show-langnames-always");
- } else if (settings.bDisplayCodeBlockLanguage) {
- document.body.classList.add("codeblock-customizer-show-langnames");
- }
- document.body.classList.remove("codeblock-customizer-show-langicons", "codeblock-customizer-show-langicons-always");
- if (settings.header.bAlwaysDisplayCodeblockIcon && settings.bDisplayCodeBlockIcon) {
- document.body.classList.add("codeblock-customizer-show-langicons-always");
- } else if (settings.bDisplayCodeBlockIcon) {
- document.body.classList.add("codeblock-customizer-show-langicons");
- }
- if (settings.bGutterHighlight) {
- document.body.classList.add("codeblock-customizer-gutter-highlight");
- } else {
- document.body.classList.remove("codeblock-customizer-gutter-highlight");
- }
-}
-function formatStyles(theme, alternateColors) {
- let current = theme["name"] == "current";
- let themeClass = "";
- let altHighlightStyles = "";
- if (theme["name"] == "Light Theme") {
- themeClass = ".theme-light";
- altHighlightStyles = addAltHighlightColors(alternateColors, true);
- } else if (theme["name"] == "Dark Theme") {
- themeClass = ".theme-dark";
- altHighlightStyles = addAltHighlightColors(alternateColors, false);
- } else if (theme["name"] != "current") {
- return "";
- }
- return `
- body.codeblock-customizer${current ? "" : themeClass} {
- ${Object.keys(stylesDict).reduce((variables, key) => {
- let cssVariable = `--codeblock-customizer-${stylesDict[key]}`;
- let cssValue = accessSetting(key, theme["colors"]);
- let cssImportant = current ? " !important" : "";
- if (cssValue != null) {
- return variables + `${cssVariable}: ${cssValue + cssImportant};`;
- } else {
- return variables;
- }
- }, altHighlightStyles)}
- }
- `;
-}
-function addAltHighlightColors(alternateColors, lightTheme) {
- let key = lightTheme ? "lightColor" : "darkColor";
- return alternateColors.reduce((altHighlightStyles, altHighlight) => {
- return altHighlightStyles + `--codeblock-customiser-highlight-${altHighlight["name"].replace(/\s+/g, "-").toLowerCase()}-color: ${altHighlight[key]};`;
- }, "");
-}
-function accessSetting(key, settings) {
- if (key in settings) {
- return settings[key];
- } else if ("header" in settings) {
- if (key in settings["header"]) {
- return settings["header"][key];
- } else {
- let alt_key = key.charAt(6).toLowerCase() + key.slice(7);
- if (alt_key in settings["header"]) {
- return settings["header"][alt_key];
- }
- }
- } else {
- return null;
- }
+ const fileName = document.createElement("div");
+ fileName.innerText = text;
+ fileName.classList.add("codeblock-customizer-header-text");
+ return fileName;
}
function getCurrentMode() {
- const body = document.querySelector("body");
- if (body !== null) {
- if (body.classList.contains("theme-light")) {
- return "light";
- } else if (body.classList.contains("theme-dark")) {
- return "dark";
- }
- }
- console.log("Warning: Couldn't get current theme");
- return "light";
+ const body = document.querySelector("body");
+ if (body !== null) {
+ if (body.classList.contains("theme-light")) {
+ return "light";
+ } else if (body.classList.contains("theme-dark")) {
+ return "dark";
+ }
+ }
+ console.log("Warning: Couldn't get current theme");
+ return "light";
}
// src/CodeBlockHighlight.ts
function codeblockHighlight(settings) {
- const viewPlugin = import_view.ViewPlugin.fromClass(
- class CodeblockHighlightPlugin {
- constructor(view) {
- this.initialize(view, settings);
- }
- initialize(view, settings2) {
- this.view = view;
- this.settings = settings2;
- this.decorations = this.buildDecorations(view);
- this.prevAlternateColors = [];
- this.mutationObserver = setupMutationObserver(view, this);
- this.prevBGColor = "";
- this.prevHLColor = "";
- this.prevExcludeLangs = "";
- this.prevTextColor = "";
- this.prevBackgroundColor = "";
- this.prevHighlightGutter = false;
- this.prevLineNumbers = false;
- }
- // initialize
- forceUpdate(editorView) {
- this.view = editorView;
- this.decorations = this.buildDecorations(this.view);
- this.view.requestMeasure();
- }
- // forceUpdate
- shouldUpdate(update) {
- return update.docChanged || update.viewportChanged || !this.compareSettings();
- }
- // shouldUpdate
- compareSettings() {
- return this.settings.backgroundColor === this.prevBGColor && this.settings.highlightColor === this.prevHLColor && this.settings.ExcludeLangs === this.prevExcludeLangs && compareArrays(this.settings.alternateColors, this.prevAlternateColors) && this.settings.gutterTextColor === this.prevTextColor && this.settings.gutterBackgroundColor === this.prevBackgroundColor && this.settings.bGutterHighlight === this.prevHighlightGutter && this.settings.bEnableLineNumbers === this.prevLineNumbers;
- }
- // compareSettings
- updateSettings() {
- this.prevBGColor = this.settings.backgroundColor;
- this.prevHLColor = this.settings.highlightColor;
- this.prevExcludeLangs = this.settings.ExcludeLangs;
- this.prevAlternateColors = this.settings.alternateColors.map(({ name }) => {
- return { name };
- });
- this.prevTextColor = this.settings.gutterTextColor;
- this.prevBackgroundColor = this.settings.gutterBackgroundColor;
- this.prevHighlightGutter = this.settings.bGutterHighlight;
- this.prevLineNumbers = this.settings.bEnableLineNumbers;
- }
- // updateSettings
- update(update) {
- if (this.shouldUpdate(update)) {
- this.updateSettings();
- this.decorations = this.buildDecorations(update.view);
- }
- }
- // update
- destroy() {
- this.mutationObserver.disconnect();
- }
- // destroy
- filterVisibleCodeblocks(view, codeblocks) {
- return codeblocks.filter((codeblock) => {
- return view.visibleRanges.some((visibleRange) => {
- return codeblock.from < visibleRange.to && codeblock.to > visibleRange.from;
- });
- });
- }
- // filterVisibleCodeblocks
- deduplicateCodeblocks(codeblocks) {
- const deduplicatedCodeblocks = [];
- for (let i2 = 0; i2 < codeblocks.length; i2++) {
- if (i2 === 0 || codeblocks[i2].from !== codeblocks[i2 - 1].from) {
- deduplicatedCodeblocks.push(codeblocks[i2]);
- }
- }
- return deduplicatedCodeblocks;
- }
- // deduplicateCodeblocks
- buildDecorations(view) {
- let lineNumber = 0;
- let HL = [];
- let altHL = [];
- let lineNumberOffset = 0;
- let showNumbers = true;
- let bExclude = false;
- const alternateColors = this.settings.alternateColors || [];
- const decorations = [];
- if (!view.visibleRanges || view.visibleRanges.length === 0) {
- return import_state.RangeSet.empty;
- }
- const codeblocks = findCodeblocks(view.state, view.state.doc.from, view.state.doc.to);
- const visibleCodeblocks = this.filterVisibleCodeblocks(view, codeblocks);
- const deduplicatedCodeblocks = this.deduplicateCodeblocks(visibleCodeblocks);
- for (const codeblock of deduplicatedCodeblocks) {
- (0, import_language.syntaxTree)(view.state).iterate({
- from: codeblock.from,
- to: codeblock.to,
- enter(node) {
- const line = view.state.doc.lineAt(node.from);
- const lineText = view.state.sliceDoc(line.from, line.to);
- const lang = searchString(lineText, "```");
- const startLine = node.type.name.includes("HyperMD-codeblock-begin");
- const endLine = node.type.name.includes("HyperMD-codeblock-end");
- if (lang) {
- bExclude = isExcluded(lineText, settings.ExcludeLangs);
- }
- if (bExclude) {
- if (endLine) {
- bExclude = false;
- }
- return;
- }
- if (startLine) {
- lineNumber = 0;
- lineNumberOffset = 0;
- showNumbers = true;
- const params = searchString(lineText, "HL:");
- HL = getHighlightedLines(params);
- altHL = [];
- for (const { name } of alternateColors) {
- const altParams = searchString(lineText, `${name}:`);
- altHL = altHL.concat(getHighlightedLines(altParams).map((lineNumber2) => ({ name, lineNumber: lineNumber2 })));
- }
- }
- let lineClass = "codeblock-customizer-line";
- if (HL.includes(lineNumber)) {
- lineClass = "codeblock-customizer-line-highlighted";
- } else {
- const altHLMatch = altHL.filter((hl) => hl.lineNumber === lineNumber);
- if (altHLMatch.length > 0) {
- lineClass = `codeblock-customizer-line-highlighted-${altHLMatch[0].name.replace(/\s+/g, "-").toLowerCase()}`;
- }
- }
- if (node.type.name === "HyperMD-codeblock_HyperMD-codeblock-bg" || startLine || endLine) {
- decorations.push(import_view.Decoration.line({ attributes: { class: lineClass } }).range(node.from));
- decorations.push(import_view.Decoration.line({}).range(node.from));
- decorations.push(import_view.Decoration.widget({ widget: new LineNumberWidget(startLine || endLine ? " " : lineNumber + lineNumberOffset, showNumbers) }).range(node.from));
- lineNumber++;
- }
- }
- });
- }
- return import_state.RangeSet.of(decorations, true);
- }
- },
- // CodeblockHighlightPlugin
- {
- decorations: (value) => value.decorations
- }
- );
- viewPlugin.name = "codeblockHighlight";
- return viewPlugin;
+ const viewPlugin = import_view.ViewPlugin.fromClass(
+ class CodeblockHighlightPlugin {
+ constructor(view) {
+ this.initialize(view, settings);
+ }
+ initialize(view, settings2) {
+ this.view = view;
+ this.settings = settings2;
+ this.decorations = this.buildDecorations(view);
+ this.prevAlternateColors = [];
+ this.mutationObserver = setupMutationObserver(view, this);
+ this.prevBGColor = "";
+ this.prevHLColor = "";
+ this.prevExcludeLangs = "";
+ this.prevTextColor = "";
+ this.prevBackgroundColor = "";
+ this.prevHighlightGutter = false;
+ this.prevLineNumbers = false;
+ }
+ // initialize
+ forceUpdate(editorView) {
+ this.view = editorView;
+ this.decorations = this.buildDecorations(this.view);
+ this.view.requestMeasure();
+ }
+ // forceUpdate
+ shouldUpdate(update) {
+ return update.docChanged || update.viewportChanged || !this.compareSettings();
+ }
+ // shouldUpdate
+ compareSettings() {
+ return this.settings.backgroundColor === this.prevBGColor && this.settings.highlightColor === this.prevHLColor && this.settings.ExcludeLangs === this.prevExcludeLangs && compareArrays(this.settings.alternateColors, this.prevAlternateColors) && this.settings.gutterTextColor === this.prevTextColor && this.settings.gutterBackgroundColor === this.prevBackgroundColor && this.settings.bGutterHighlight === this.prevHighlightGutter && this.settings.bEnableLineNumbers === this.prevLineNumbers;
+ }
+ // compareSettings
+ updateSettings() {
+ this.prevBGColor = this.settings.backgroundColor;
+ this.prevHLColor = this.settings.highlightColor;
+ this.prevExcludeLangs = this.settings.ExcludeLangs;
+ this.prevAlternateColors = this.settings.alternateColors.map(({ name }) => {
+ return { name };
+ });
+ this.prevTextColor = this.settings.gutterTextColor;
+ this.prevBackgroundColor = this.settings.gutterBackgroundColor;
+ this.prevHighlightGutter = this.settings.bGutterHighlight;
+ this.prevLineNumbers = this.settings.bEnableLineNumbers;
+ }
+ // updateSettings
+ update(update) {
+ if (this.shouldUpdate(update)) {
+ this.updateSettings();
+ this.decorations = this.buildDecorations(update.view);
+ }
+ }
+ // update
+ destroy() {
+ this.mutationObserver.disconnect();
+ }
+ // destroy
+ filterVisibleCodeblocks(view, codeblocks) {
+ return codeblocks.filter((codeblock) => {
+ return view.visibleRanges.some((visibleRange) => {
+ return codeblock.from < visibleRange.to && codeblock.to > visibleRange.from;
+ });
+ });
+ }
+ // filterVisibleCodeblocks
+ deduplicateCodeblocks(codeblocks) {
+ const deduplicatedCodeblocks = [];
+ for (let i2 = 0; i2 < codeblocks.length; i2++) {
+ if (i2 === 0 || codeblocks[i2].from !== codeblocks[i2 - 1].from) {
+ deduplicatedCodeblocks.push(codeblocks[i2]);
+ }
+ }
+ return deduplicatedCodeblocks;
+ }
+ // deduplicateCodeblocks
+ buildDecorations(view) {
+ let lineNumber = 0;
+ let HL = [];
+ let altHL = [];
+ let lineNumberOffset = 0;
+ let showNumbers = true;
+ let bExclude = false;
+ const alternateColors = this.settings.alternateColors || [];
+ const decorations = [];
+ if (!view.visibleRanges || view.visibleRanges.length === 0) {
+ return import_state.RangeSet.empty;
+ }
+ const codeblocks = findCodeblocks(view.state, view.state.doc.from, view.state.doc.to);
+ const visibleCodeblocks = this.filterVisibleCodeblocks(view, codeblocks);
+ const deduplicatedCodeblocks = this.deduplicateCodeblocks(visibleCodeblocks);
+ for (const codeblock of deduplicatedCodeblocks) {
+ (0, import_language.syntaxTree)(view.state).iterate({
+ from: codeblock.from,
+ to: codeblock.to,
+ enter(node) {
+ const line = view.state.doc.lineAt(node.from);
+ const lineText = view.state.sliceDoc(line.from, line.to);
+ const lang = searchString(lineText, "```");
+ const startLine = node.type.name.includes("HyperMD-codeblock-begin");
+ const endLine = node.type.name.includes("HyperMD-codeblock-end");
+ if (lang) {
+ bExclude = isExcluded(lineText, settings.ExcludeLangs);
+ }
+ if (bExclude) {
+ if (endLine) {
+ bExclude = false;
+ }
+ return;
+ }
+ if (startLine) {
+ lineNumber = 0;
+ lineNumberOffset = 0;
+ showNumbers = true;
+ const params = searchString(lineText, "HL:");
+ HL = getHighlightedLines(params);
+ altHL = [];
+ for (const { name } of alternateColors) {
+ const altParams = searchString(lineText, `${name}:`);
+ altHL = altHL.concat(getHighlightedLines(altParams).map((lineNumber2) => ({ name, lineNumber: lineNumber2 })));
+ }
+ }
+ let lineClass = "codeblock-customizer-line";
+ if (HL.includes(lineNumber)) {
+ lineClass = "codeblock-customizer-line-highlighted";
+ } else {
+ const altHLMatch = altHL.filter((hl) => hl.lineNumber === lineNumber);
+ if (altHLMatch.length > 0) {
+ lineClass = `codeblock-customizer-line-highlighted-${altHLMatch[0].name.replace(/\s+/g, "-").toLowerCase()}`;
+ }
+ }
+ if (node.type.name === "HyperMD-codeblock_HyperMD-codeblock-bg" || startLine || endLine) {
+ decorations.push(import_view.Decoration.line({ attributes: { class: lineClass } }).range(node.from));
+ decorations.push(import_view.Decoration.line({}).range(node.from));
+ decorations.push(import_view.Decoration.widget({ widget: new LineNumberWidget(startLine || endLine ? " " : lineNumber + lineNumberOffset, showNumbers) }).range(node.from));
+ lineNumber++;
+ }
+ }
+ });
+ }
+ return import_state.RangeSet.of(decorations, true);
+ }
+ },
+ // CodeblockHighlightPlugin
+ {
+ decorations: (value) => value.decorations
+ }
+ );
+ viewPlugin.name = "codeblockHighlight";
+ return viewPlugin;
}
function compareArrays(array1, array2) {
- if (array1.length !== array2.length) {
- return false;
- }
- for (let i2 = 0; i2 < array1.length; i2++) {
- if (array1[i2].name !== array2[i2].name || array1[i2].currentColor !== array2[i2].currentColor) {
- return false;
- }
- }
- return true;
+ if (array1.length !== array2.length) {
+ return false;
+ }
+ for (let i2 = 0; i2 < array1.length; i2++) {
+ if (array1[i2].name !== array2[i2].name || array1[i2].currentColor !== array2[i2].currentColor) {
+ return false;
+ }
+ }
+ return true;
}
var LineNumberWidget = class extends import_view.WidgetType {
- constructor(lineNumber, showNumbers) {
- super();
- this.lineNumber = lineNumber;
- this.showNumbers = showNumbers;
- }
- eq(other) {
- return this.lineNumber === other.lineNumber && this.showNumbers === other.showNumbers;
- }
- toDOM(view) {
- const container = document.createElement("span");
- container.classList.add(`codeblock-customizer-line-number${this.showNumbers ? "" : "-hide"}`);
- container.innerText = `${this.lineNumber}`;
- return container;
- }
+ constructor(lineNumber, showNumbers) {
+ super();
+ this.lineNumber = lineNumber;
+ this.showNumbers = showNumbers;
+ }
+ eq(other) {
+ return this.lineNumber === other.lineNumber && this.showNumbers === other.showNumbers;
+ }
+ toDOM(view) {
+ const container = document.createElement("span");
+ container.classList.add(`codeblock-customizer-line-number${this.showNumbers ? "" : "-hide"}`);
+ container.innerText = `${this.lineNumber}`;
+ return container;
+ }
};
function findCodeblocks(doc, from, to) {
- const tree = (0, import_language.syntaxTree)(doc);
- const codeblocks = [];
- tree.iterate({
- from,
- to,
- enter: (node) => {
- if (node.type.name.includes("HyperMD-codeblock-begin") || node.type.name === "HyperMD-codeblock_HyperMD-codeblock-bg" || node.type.name.includes("HyperMD-codeblock-end")) {
- codeblocks.push(node);
- }
- }
- });
- return codeblocks;
+ const tree = (0, import_language.syntaxTree)(doc);
+ const codeblocks = [];
+ tree.iterate({
+ from,
+ to,
+ enter: (node) => {
+ if (node.type.name.includes("HyperMD-codeblock-begin") || node.type.name === "HyperMD-codeblock_HyperMD-codeblock-bg" || node.type.name.includes("HyperMD-codeblock-end")) {
+ codeblocks.push(node);
+ }
+ }
+ });
+ return codeblocks;
}
function setupMutationObserver(editorView, pluginInstance) {
- const observer = new MutationObserver((mutations) => {
- for (const mutation of mutations) {
- if (mutation.type === "attributes" && mutation.attributeName === "class" && (mutation.target.classList.contains("HyperMD-codeblock-begin") || mutation.target.classList.contains("HyperMD-codeblock_HyperMD-codeblock-bg") || mutation.target.classList.contains("HyperMD-codeblock-end"))) {
- pluginInstance.forceUpdate(editorView);
- }
- }
- });
- observer.observe(editorView.dom, {
- attributes: true,
- childList: true,
- subtree: true,
- attributeFilter: ["class"]
- // Only observe changes to the 'class' attribute
- });
- return observer;
+ const observer = new MutationObserver((mutations) => {
+ for (const mutation of mutations) {
+ if (mutation.type === "attributes" && mutation.attributeName === "class" && (mutation.target.classList.contains("HyperMD-codeblock-begin") || mutation.target.classList.contains("HyperMD-codeblock_HyperMD-codeblock-bg") || mutation.target.classList.contains("HyperMD-codeblock-end"))) {
+ pluginInstance.forceUpdate(editorView);
+ }
+ }
+ });
+ observer.observe(editorView.dom, {
+ attributes: true,
+ childList: true,
+ subtree: true,
+ attributeFilter: ["class"]
+ // Only observe changes to the 'class' attribute
+ });
+ return observer;
}
// src/Header.ts
var import_state2 = require("@codemirror/state");
var import_view2 = require("@codemirror/view");
function defaultFold(state, settings) {
- let CollapseStart = null;
- let CollapseEnd = null;
- let Fold = false;
- let blockFound = false;
- let bExclude = false;
- const builder = new import_state2.RangeSetBuilder();
- for (let i2 = 1; i2 < state.doc.lines; i2++) {
- const lineText = state.doc.line(i2).text.toString();
- const line = state.doc.line(i2);
- bExclude = isExcluded(lineText, settings.ExcludeLangs);
- if (lineText.startsWith("```") && lineText.indexOf("```", 3) === -1) {
- if (bExclude)
- continue;
- if (CollapseStart === null) {
- Fold = searchString(lineText, "fold");
- if (Fold)
- CollapseStart = line.from;
- } else {
- blockFound = true;
- CollapseEnd = line.to;
- }
- }
- if (blockFound) {
- if (CollapseStart != null && CollapseEnd != null) {
- const decoration = import_view2.Decoration.replace({ effect: Collapse.of([doFold.range(CollapseStart, CollapseEnd)]), block: true, side: -1 });
- builder.add(CollapseStart, CollapseEnd, decoration);
- CollapseStart = null;
- CollapseEnd = null;
- }
- blockFound = false;
- }
- }
- return builder.finish();
+ let CollapseStart = null;
+ let CollapseEnd = null;
+ let Fold = false;
+ let blockFound = false;
+ let bExclude = false;
+ const builder = new import_state2.RangeSetBuilder();
+ for (let i2 = 1; i2 < state.doc.lines; i2++) {
+ const lineText = state.doc.line(i2).text.toString();
+ const line = state.doc.line(i2);
+ bExclude = isExcluded(lineText, settings.ExcludeLangs);
+ if (lineText.startsWith("```") && lineText.indexOf("```", 3) === -1) {
+ if (bExclude)
+ continue;
+ if (CollapseStart === null) {
+ Fold = searchString(lineText, "fold");
+ if (Fold)
+ CollapseStart = line.from;
+ } else {
+ blockFound = true;
+ CollapseEnd = line.to;
+ }
+ }
+ if (blockFound) {
+ if (CollapseStart != null && CollapseEnd != null) {
+ const decoration = import_view2.Decoration.replace({ effect: Collapse.of([doFold.range(CollapseStart, CollapseEnd)]), block: true, side: -1 });
+ builder.add(CollapseStart, CollapseEnd, decoration);
+ CollapseStart = null;
+ CollapseEnd = null;
+ }
+ blockFound = false;
+ }
+ }
+ return builder.finish();
}
var codeblockHeader = import_state2.StateField.define({
- create(state) {
- return import_view2.Decoration.none;
- },
- update(oldState, transaction) {
- const builder = new import_state2.RangeSetBuilder();
- let WidgetStart = null;
- let Fold = false;
- let fileName = null;
- let bExclude = false;
- let specificHeader = true;
- for (let i2 = 1; i2 < transaction.state.doc.lines; i2++) {
- const lineText = transaction.state.doc.line(i2).text.toString();
- const line = transaction.state.doc.line(i2);
- const lang = searchString(lineText, "```");
- bExclude = isExcluded(lineText, this.settings.ExcludeLangs);
- specificHeader = true;
- if (lineText.startsWith("```") && lineText.indexOf("```", 3) === -1) {
- if (WidgetStart === null) {
- WidgetStart = line;
- fileName = searchString(lineText, "file:");
- Fold = searchString(lineText, "fold");
- if (!bExclude) {
- if (fileName === null || fileName === "") {
- if (Fold) {
- fileName = "Collapsed Code";
- } else {
- fileName = "";
- specificHeader = false;
- }
- }
- builder.add(WidgetStart.from, WidgetStart.from, createDecorationWidget(fileName, getLanguageName(lang), specificHeader));
- }
- } else {
- WidgetStart = null;
- Fold = false;
- fileName = null;
- }
- }
- }
- return builder.finish();
- },
- provide(field) {
- return import_view2.EditorView.decorations.from(field);
- }
+ create(state) {
+ return import_view2.Decoration.none;
+ },
+ update(oldState, transaction) {
+ const builder = new import_state2.RangeSetBuilder();
+ let WidgetStart = null;
+ let Fold = false;
+ let fileName = null;
+ let bExclude = false;
+ let specificHeader = true;
+ for (let i2 = 1; i2 < transaction.state.doc.lines; i2++) {
+ const lineText = transaction.state.doc.line(i2).text.toString();
+ const line = transaction.state.doc.line(i2);
+ const lang = searchString(lineText, "```");
+ bExclude = isExcluded(lineText, this.settings.ExcludeLangs);
+ specificHeader = true;
+ if (lineText.startsWith("```") && lineText.indexOf("```", 3) === -1) {
+ if (WidgetStart === null) {
+ WidgetStart = line;
+ fileName = searchString(lineText, "file:");
+ Fold = searchString(lineText, "fold");
+ if (!bExclude) {
+ if (fileName === null || fileName === "") {
+ if (Fold) {
+ fileName = "Collapsed Code";
+ } else {
+ fileName = "";
+ specificHeader = false;
+ }
+ }
+ builder.add(WidgetStart.from, WidgetStart.from, createDecorationWidget(fileName, getLanguageName(lang), specificHeader));
+ }
+ } else {
+ WidgetStart = null;
+ Fold = false;
+ fileName = null;
+ }
+ }
+ }
+ return builder.finish();
+ },
+ provide(field) {
+ return import_view2.EditorView.decorations.from(field);
+ }
});
function createDecorationWidget(textToDisplay, languageName, specificHeader) {
- return import_view2.Decoration.widget({
- widget: new TextAboveCodeblockWidget(textToDisplay, languageName, specificHeader),
- block: true
- });
+ return import_view2.Decoration.widget({
+ widget: new TextAboveCodeblockWidget(textToDisplay, languageName, specificHeader),
+ block: true
+ });
}
var Collapse = import_state2.StateEffect.define();
var UnCollapse = import_state2.StateEffect.define();
var collapseField = import_state2.StateField.define({
- create(state) {
- return defaultFold(state, collapseField.pluginSettings);
- },
- update(value, tr) {
- value = value.map(tr.changes);
- for (const effect of tr.effects) {
- if (effect.is(Collapse))
- value = value.update({ add: effect.value, sort: true });
- else if (effect.is(UnCollapse))
- value = value.update({ filter: effect.value });
- }
- return value;
- },
- provide: (f2) => import_view2.EditorView.decorations.from(f2)
+ create(state) {
+ return defaultFold(state, collapseField.pluginSettings);
+ },
+ update(value, tr) {
+ value = value.map(tr.changes);
+ for (const effect of tr.effects) {
+ if (effect.is(Collapse))
+ value = value.update({ add: effect.value, sort: true });
+ else if (effect.is(UnCollapse))
+ value = value.update({ filter: effect.value });
+ }
+ return value;
+ },
+ provide: (f2) => import_view2.EditorView.decorations.from(f2)
});
var doFold = import_view2.Decoration.replace({ block: true });
var TextAboveCodeblockWidget = class extends import_view2.WidgetType {
- constructor(text, Lang, specificHeader) {
- super();
- this.handleMutation = (mutations, view) => {
- mutations.forEach((mutation) => {
- if (mutation.target.hasAttribute("data-clicked")) {
- handleClick(this.view, mutation.target);
- }
- });
- };
- this.text = text;
- this.Lang = Lang;
- this.specificHeader = specificHeader;
- this.observer = new MutationObserver(this.handleMutation);
- }
- eq(other) {
- return other.text == this.text && other.Lang == this.Lang && other.specificHeader == this.specificHeader;
- }
- toDOM(view) {
- this.view = view;
- const container = createContainer(this.specificHeader);
- if (this.Lang) {
- const Icon = getLanguageIcon(this.Lang);
- if (Icon) {
- container.appendChild(createCodeblockIcon(this.Lang));
- }
- container.appendChild(createCodeblockLang(this.Lang));
- }
- container.appendChild(createFileName(this.text));
- this.observer.view = view;
- this.observer.observe(container, { attributes: true });
- container.addEventListener("mousedown", (event) => {
- container.setAttribute("data-clicked", "true");
- });
- return container;
- }
- destroy(dom) {
- dom.removeAttribute("data-clicked");
- dom.removeEventListener("mousedown", handleClick);
- this.observer.disconnect();
- }
- ignoreEvent() {
- return false;
- }
+ constructor(text, Lang, specificHeader) {
+ super();
+ this.handleMutation = (mutations, view) => {
+ mutations.forEach((mutation) => {
+ if (mutation.target.hasAttribute("data-clicked")) {
+ handleClick(this.view, mutation.target);
+ }
+ });
+ };
+ this.text = text;
+ this.Lang = Lang;
+ this.specificHeader = specificHeader;
+ this.observer = new MutationObserver(this.handleMutation);
+ }
+ eq(other) {
+ return other.text == this.text && other.Lang == this.Lang && other.specificHeader == this.specificHeader;
+ }
+ toDOM(view) {
+ this.view = view;
+ const container = createContainer(this.specificHeader);
+ if (this.Lang) {
+ const Icon = getLanguageIcon(this.Lang);
+ if (Icon) {
+ container.appendChild(createCodeblockIcon(this.Lang));
+ }
+ container.appendChild(createCodeblockLang(this.Lang));
+ }
+ container.appendChild(createFileName(this.text));
+ this.observer.view = view;
+ this.observer.observe(container, { attributes: true });
+ container.addEventListener("mousedown", (event) => {
+ container.setAttribute("data-clicked", "true");
+ });
+ return container;
+ }
+ destroy(dom) {
+ dom.removeAttribute("data-clicked");
+ dom.removeEventListener("mousedown", handleClick);
+ this.observer.disconnect();
+ }
+ ignoreEvent() {
+ return false;
+ }
};
function handleClick(view, target) {
- const Pos = view.posAtDOM(target);
- const effect = view.state.field(collapseField, false);
- let isFolded = false;
- effect.between(Pos, Pos, () => {
- isFolded = true;
- });
- let CollapseStart = null;
- let CollapseEnd = null;
- let WidgetStart = null;
- let blockFound = false;
- for (let i2 = 1; i2 < view.state.doc.lines; i2++) {
- const lineText = view.state.doc.line(i2).text.toString();
- const line = view.state.doc.line(i2);
- if (lineText.startsWith("```") && lineText.indexOf("```", 3) === -1) {
- if (WidgetStart === null) {
- WidgetStart = line.from;
- if (Pos === line.from) {
- CollapseStart = line.from;
- }
- } else {
- blockFound = true;
- CollapseEnd = line.to;
- }
- }
- if (blockFound) {
- if (CollapseStart != null && CollapseEnd != null) {
- if (isFolded) {
- view.dispatch({ effects: UnCollapse.of((from, to) => to <= CollapseStart || from >= CollapseEnd) });
- } else {
- view.dispatch({ effects: Collapse.of([doFold.range(CollapseStart, CollapseEnd)]) });
- }
- view.requestMeasure();
- CollapseStart = null;
- CollapseEnd = null;
- }
- WidgetStart = null;
- blockFound = false;
- }
- }
+ const Pos = view.posAtDOM(target);
+ const effect = view.state.field(collapseField, false);
+ let isFolded = false;
+ effect.between(Pos, Pos, () => {
+ isFolded = true;
+ });
+ let CollapseStart = null;
+ let CollapseEnd = null;
+ let WidgetStart = null;
+ let blockFound = false;
+ for (let i2 = 1; i2 < view.state.doc.lines; i2++) {
+ const lineText = view.state.doc.line(i2).text.toString();
+ const line = view.state.doc.line(i2);
+ if (lineText.startsWith("```") && lineText.indexOf("```", 3) === -1) {
+ if (WidgetStart === null) {
+ WidgetStart = line.from;
+ if (Pos === line.from) {
+ CollapseStart = line.from;
+ }
+ } else {
+ blockFound = true;
+ CollapseEnd = line.to;
+ }
+ }
+ if (blockFound) {
+ if (CollapseStart != null && CollapseEnd != null) {
+ if (isFolded) {
+ view.dispatch({ effects: UnCollapse.of((from, to) => to <= CollapseStart || from >= CollapseEnd) });
+ } else {
+ view.dispatch({ effects: Collapse.of([doFold.range(CollapseStart, CollapseEnd)]) });
+ }
+ view.requestMeasure();
+ CollapseStart = null;
+ CollapseEnd = null;
+ }
+ WidgetStart = null;
+ blockFound = false;
+ }
+ }
}
-// src/ReadingView.ts
+// src/ReadingViewOld.ts
var import_obsidian = require("obsidian");
async function ReadingView(codeBlockElement, context, plugin) {
- const codeElm = codeBlockElement.querySelector("pre > code");
- if (!codeElm)
- return;
- const classRegex = /^language-\S+/;
- const match = Array.from(codeElm.classList).some((className) => classRegex.test(className));
- if (match)
- while (!codeElm.classList.contains("is-loaded"))
- await sleep(2);
- const codeBlockSectionInfo = context.getSectionInfo(codeElm);
- let codeBlockFirstLine = "";
- if (codeBlockSectionInfo) {
- const view = plugin.app.workspace.getActiveViewOfType(import_obsidian.MarkdownView);
- if (view && view.editor)
- codeBlockFirstLine = view.editor.getLine(codeBlockSectionInfo.lineStart);
- } else {
- const file = plugin.app.vault.getAbstractFileByPath(context.sourcePath);
- if (!file) {
- return;
- }
- const cache = plugin.app.metadataCache.getCache(context.sourcePath);
- const fileContent = await plugin.app.vault.cachedRead(file).catch((error) => {
- return "";
- });
- const fileContentLines = fileContent.split(/\n/g);
- const codeBlockFirstLines = [];
- if (cache.sections) {
- for (const element of cache.sections) {
- if (element.type === "code") {
- const lineStart = element.position.start.line;
- const codeBlockFirstLine2 = fileContentLines[lineStart];
- if (!isAdmonition(codeBlockFirstLine2)) {
- codeBlockFirstLines.push(codeBlockFirstLine2);
- }
- }
- }
- } else {
- return;
- }
- try {
- await PDFExport(codeBlockElement, plugin, codeBlockFirstLines);
- } catch (error) {
- return;
- }
- return;
- }
- const codeBlockLang = searchString(codeBlockFirstLine, "```");
- const highlightedLinesParams = searchString(codeBlockFirstLine, "HL:");
- const linesToHighlight = getHighlightedLines(highlightedLinesParams);
- const FileName = searchString(codeBlockFirstLine, "file:");
- const Fold = searchString(codeBlockFirstLine, "fold");
- const lineNumberOffset = 0;
- const showNumbers = true;
- const alternateColors = plugin.settings.alternateColors || [];
- let altHL = [];
- for (const { name } of alternateColors) {
- const altParams = searchString(codeBlockFirstLine, `${name}:`);
- altHL = altHL.concat(getHighlightedLines(altParams).map((lineNumber) => ({ name, lineNumber })));
- }
- let isCodeBlockExcluded = false;
- isCodeBlockExcluded = isExcluded(codeBlockFirstLine, plugin.settings.ExcludeLangs);
- const codeElements = codeBlockElement.getElementsByTagName("code");
- const codeBlockPreElement = codeBlockElement.querySelector("pre:not(.frontmatter)");
- if (codeBlockPreElement === null) {
- return;
- }
- if (!isCodeBlockExcluded) {
- codeBlockPreElement.classList.add(`codeblock-customizer-pre`);
- }
- AddHeaderAndHighlight(isCodeBlockExcluded, FileName, codeBlockPreElement, codeBlockLang, Fold, codeElements, showNumbers, lineNumberOffset, linesToHighlight, altHL);
+ const codeElm = codeBlockElement.querySelector("pre > code");
+ if (!codeElm)
+ return;
+ const classRegex = /^language-\S+/;
+ const match = Array.from(codeElm.classList).some((className) => classRegex.test(className));
+ if (match)
+ while (!codeElm.classList.contains("is-loaded"))
+ await sleep(2);
+ const codeBlockSectionInfo = context.getSectionInfo(codeElm);
+ let codeBlockFirstLine = "";
+ if (codeBlockSectionInfo) {
+ const view = plugin.app.workspace.getActiveViewOfType(import_obsidian.MarkdownView);
+ if (view && view.editor)
+ codeBlockFirstLine = view.editor.getLine(codeBlockSectionInfo.lineStart);
+ } else {
+ const file = plugin.app.vault.getAbstractFileByPath(context.sourcePath);
+ if (!file) {
+ return;
+ }
+ const cache = plugin.app.metadataCache.getCache(context.sourcePath);
+ const fileContent = await plugin.app.vault.cachedRead(file).catch((error) => {
+ return "";
+ });
+ const fileContentLines = fileContent.split(/\n/g);
+ const codeBlockFirstLines = [];
+ if (cache.sections) {
+ for (const element of cache.sections) {
+ if (element.type === "code") {
+ const lineStart = element.position.start.line;
+ const codeBlockFirstLine2 = fileContentLines[lineStart];
+ if (!isAdmonition(codeBlockFirstLine2)) {
+ codeBlockFirstLines.push(codeBlockFirstLine2);
+ }
+ }
+ }
+ } else {
+ return;
+ }
+ try {
+ await PDFExport(codeBlockElement, plugin, codeBlockFirstLines);
+ } catch (error) {
+ return;
+ }
+ return;
+ }
+ const codeBlockLang = searchString(codeBlockFirstLine, "```");
+ const highlightedLinesParams = searchString(codeBlockFirstLine, "HL:");
+ const linesToHighlight = getHighlightedLines(highlightedLinesParams);
+ const FileName = searchString(codeBlockFirstLine, "file:");
+ const Fold = searchString(codeBlockFirstLine, "fold");
+ const lineNumberOffset = 0;
+ const showNumbers = true;
+ const alternateColors = plugin.settings.alternateColors || [];
+ let altHL = [];
+ for (const { name } of alternateColors) {
+ const altParams = searchString(codeBlockFirstLine, `${name}:`);
+ altHL = altHL.concat(getHighlightedLines(altParams).map((lineNumber) => ({ name, lineNumber })));
+ }
+ let isCodeBlockExcluded = false;
+ isCodeBlockExcluded = isExcluded(codeBlockFirstLine, plugin.settings.ExcludeLangs);
+ const codeElements = codeBlockElement.getElementsByTagName("code");
+ const codeBlockPreElement = codeBlockElement.querySelector("pre:not(.frontmatter)");
+ if (codeBlockPreElement === null) {
+ return;
+ }
+ if (!isCodeBlockExcluded) {
+ codeBlockPreElement.classList.add(`codeblock-customizer-pre`);
+ }
+ AddHeaderAndHighlight(isCodeBlockExcluded, FileName, codeBlockPreElement, codeBlockLang, Fold, codeElements, showNumbers, lineNumberOffset, linesToHighlight, altHL);
}
function isAdmonition(lineText) {
- const adTypes = ["ad-note", "ad-seealso", "ad-abstract", "ad-summary", "ad-tldr", "ad-info", "ad-todo", "ad-tip", "ad-hint", "ad-important", "ad-success", "ad-check", "ad-done", "ad-question", "ad-help", "ad-faq", "ad-warning", "ad-caution", "ad-attention", "ad-failure", "ad-fail", "ad-missing", "ad-danger", "ad-error", "ad-bug", "ad-example", "ad-quote", "ad-cite"];
- const codeBlockLang = searchString(lineText, "```");
- return adTypes.some((adType) => codeBlockLang && codeBlockLang.startsWith(adType));
+ const adTypes = ["ad-note", "ad-seealso", "ad-abstract", "ad-summary", "ad-tldr", "ad-info", "ad-todo", "ad-tip", "ad-hint", "ad-important", "ad-success", "ad-check", "ad-done", "ad-question", "ad-help", "ad-faq", "ad-warning", "ad-caution", "ad-attention", "ad-failure", "ad-fail", "ad-missing", "ad-danger", "ad-error", "ad-bug", "ad-example", "ad-quote", "ad-cite"];
+ const codeBlockLang = searchString(lineText, "```");
+ return adTypes.some((adType) => codeBlockLang && codeBlockLang.startsWith(adType));
}
function HeaderWidget(preElements, textToDisplay, specificHeader, codeblockLanguage, Collapse2) {
- const parent = preElements.parentNode;
- const container = createContainer(specificHeader);
- if (codeblockLanguage) {
- const Icon = getLanguageIcon(codeblockLanguage);
- if (Icon) {
- container.appendChild(createCodeblockIcon(codeblockLanguage));
- }
- container.appendChild(createCodeblockLang(codeblockLanguage));
- }
- container.appendChild(createFileName(textToDisplay));
- parent.insertBefore(container, preElements);
- container.addEventListener("click", function() {
- preElements.classList.toggle("codeblock-customizer-codeblock-collapsed");
- });
- if (Collapse2) {
- preElements.classList.add(`codeblock-customizer-codeblock-collapsed`);
- }
+ const parent = preElements.parentNode;
+ const container = createContainer(specificHeader);
+ if (codeblockLanguage) {
+ const Icon = getLanguageIcon(codeblockLanguage);
+ if (Icon) {
+ container.appendChild(createCodeblockIcon(codeblockLanguage));
+ }
+ container.appendChild(createCodeblockLang(codeblockLanguage));
+ }
+ container.appendChild(createFileName(textToDisplay));
+ parent.insertBefore(container, preElements);
+ container.addEventListener("click", function() {
+ preElements.classList.toggle("codeblock-customizer-codeblock-collapsed");
+ });
+ if (Collapse2) {
+ preElements.classList.add(`codeblock-customizer-codeblock-collapsed`);
+ }
}
function createLineNumberElement(lineNumber, showNumbers) {
- const lineNumberWrapper = document.createElement("div");
- lineNumberWrapper.classList.add(`codeblock-customizer-line-number${showNumbers ? "" : "-hide"}`);
- lineNumberWrapper.setText(lineNumber);
- return lineNumberWrapper;
+ const lineNumberWrapper = document.createElement("div");
+ lineNumberWrapper.classList.add(`codeblock-customizer-line-number${showNumbers ? "" : "-hide"}`);
+ lineNumberWrapper.setText(lineNumber);
+ return lineNumberWrapper;
}
function createLineTextElement(line) {
- const lineText = line !== "" ? line : "
";
- const sanitizedText = (0, import_obsidian.sanitizeHTMLToDom)(lineText);
- const lineContentWrapper = createDiv({ cls: `codeblock-customizer-line-text`, text: sanitizedText });
- return lineContentWrapper;
+ const lineText = line !== "" ? line : "
";
+ const sanitizedText = (0, import_obsidian.sanitizeHTMLToDom)(lineText);
+ const lineContentWrapper = createDiv({ cls: `codeblock-customizer-line-text`, text: sanitizedText });
+ return lineContentWrapper;
}
function highlightLines(codeElements, showNumbers, lineNumberOffset, linesToHighlight, altHL) {
- for (let i2 = 0; i2 < codeElements.length; i2++) {
- let lines = codeElements[i2].innerHTML.split("\n");
- const preElm = codeElements[i2].parentNode;
- if (preElm === null || preElm.nodeName !== "PRE")
- return;
- if (lines.length == 1) {
- lines = ["", ""];
- }
- codeElements[i2].innerHTML = "";
- for (let j2 = 0; j2 < lines.length - 1; j2++) {
- const line = lines[j2];
- const lineNumber = j2 + 1;
- const isHighlighted = linesToHighlight.includes(lineNumber);
- const altHLMatch = altHL.filter((hl) => hl.lineNumber === lineNumber);
- const lineWrapper = document.createElement("div");
- if (isHighlighted) {
- lineWrapper.classList.add(`codeblock-customizer-line-highlighted`);
- } else if (altHLMatch.length > 0) {
- lineWrapper.classList.add(`codeblock-customizer-line-highlighted-${altHLMatch[0].name.replace(/\s+/g, "-").toLowerCase()}`);
- }
- codeElements[i2].appendChild(lineWrapper);
- const lineNumberEl = createLineNumberElement(lineNumber + lineNumberOffset, showNumbers);
- lineWrapper.appendChild(lineNumberEl);
- const lineTextEl = createLineTextElement(line);
- lineWrapper.appendChild(lineTextEl);
- }
- }
+ for (let i2 = 0; i2 < codeElements.length; i2++) {
+ let lines = codeElements[i2].innerHTML.split("\n");
+ const preElm = codeElements[i2].parentNode;
+ if (preElm === null || preElm.nodeName !== "PRE")
+ return;
+ if (lines.length == 1) {
+ lines = ["", ""];
+ }
+ codeElements[i2].innerHTML = "";
+ for (let j2 = 0; j2 < lines.length - 1; j2++) {
+ const line = lines[j2];
+ const lineNumber = j2 + 1;
+ const isHighlighted = linesToHighlight.includes(lineNumber);
+ const altHLMatch = altHL.filter((hl) => hl.lineNumber === lineNumber);
+ const lineWrapper = document.createElement("div");
+ if (isHighlighted) {
+ lineWrapper.classList.add(`codeblock-customizer-line-highlighted`);
+ } else if (altHLMatch.length > 0) {
+ lineWrapper.classList.add(`codeblock-customizer-line-highlighted-${altHLMatch[0].name.replace(/\s+/g, "-").toLowerCase()}`);
+ }
+ codeElements[i2].appendChild(lineWrapper);
+ const lineNumberEl = createLineNumberElement(lineNumber + lineNumberOffset, showNumbers);
+ lineWrapper.appendChild(lineNumberEl);
+ const lineTextEl = createLineTextElement(line);
+ lineWrapper.appendChild(lineTextEl);
+ }
+ }
}
function AddHeaderAndHighlight(isCodeBlockExcluded, fileName, codeBlockPreElement, codeBlockLang, Fold, codeElements, showNumbers, lineNumberOffset, linesToHighlight, altHL) {
- if (!isCodeBlockExcluded) {
- let specificHeader = true;
- if (fileName === null || fileName === "") {
- if (Fold) {
- fileName = "Collapsed Code";
- } else {
- fileName = "";
- specificHeader = false;
- }
- }
- HeaderWidget(codeBlockPreElement, fileName, specificHeader, getLanguageName(codeBlockLang), Fold);
- highlightLines(codeElements, showNumbers, lineNumberOffset, linesToHighlight, altHL);
- if (codeBlockPreElement.parentElement) {
- codeBlockPreElement.parentElement.classList.add(`codeblock-customizer-pre-parent`);
- }
- }
+ if (!isCodeBlockExcluded) {
+ let specificHeader = true;
+ if (fileName === null || fileName === "") {
+ if (Fold) {
+ fileName = "Collapsed Code";
+ } else {
+ fileName = "";
+ specificHeader = false;
+ }
+ }
+ HeaderWidget(codeBlockPreElement, fileName, specificHeader, getLanguageName(codeBlockLang), Fold);
+ highlightLines(codeElements, showNumbers, lineNumberOffset, linesToHighlight, altHL);
+ if (codeBlockPreElement.parentElement) {
+ codeBlockPreElement.parentElement.classList.add(`codeblock-customizer-pre-parent`);
+ }
+ }
}
function PDFExport(codeBlockElement, plugin, codeBlockFirstLines) {
- const codeBlocks = codeBlockElement.querySelectorAll("pre > code");
- codeBlocks.forEach((codeElm, key) => {
- const codeBlockFirstLine = codeBlockFirstLines[key];
- const codeBlockLang = searchString(codeBlockFirstLine, "```");
- const highlightedLinesParams = searchString(codeBlockFirstLine, "HL:");
- const linesToHighlight = getHighlightedLines(highlightedLinesParams);
- const fileName = searchString(codeBlockFirstLine, "file:");
- const Fold = searchString(codeBlockFirstLine, "fold");
- const lineNumberOffset = 0;
- const showNumbers = true;
- const alternateColors = plugin.settings.alternateColors || [];
- let altHL = [];
- for (const { name, _: _2 } of alternateColors) {
- const altParams = searchString(codeBlockFirstLine, `${name}:`);
- altHL = altHL.concat(getHighlightedLines(altParams).map((lineNumber) => ({ name, lineNumber })));
- }
- let isCodeBlockExcluded = false;
- isCodeBlockExcluded = isExcluded(codeBlockFirstLine, plugin.settings.ExcludeLangs);
- const codeBlockPreElement = codeElm.parentElement;
- if (codeBlockPreElement === null) {
- return;
- }
- if (!isCodeBlockExcluded) {
- codeBlockPreElement.classList.add(`codeblock-customizer-pre`);
- }
- const codeElements = codeBlockPreElement.getElementsByTagName("code");
- AddHeaderAndHighlight(isCodeBlockExcluded, fileName, codeBlockPreElement, codeBlockLang, Fold, codeElements, showNumbers, lineNumberOffset, linesToHighlight, altHL);
- });
+ const codeBlocks = codeBlockElement.querySelectorAll("pre > code");
+ codeBlocks.forEach((codeElm, key) => {
+ const codeBlockFirstLine = codeBlockFirstLines[key];
+ const codeBlockLang = searchString(codeBlockFirstLine, "```");
+ const highlightedLinesParams = searchString(codeBlockFirstLine, "HL:");
+ const linesToHighlight = getHighlightedLines(highlightedLinesParams);
+ const fileName = searchString(codeBlockFirstLine, "file:");
+ const Fold = searchString(codeBlockFirstLine, "fold");
+ const lineNumberOffset = 0;
+ const showNumbers = true;
+ const alternateColors = plugin.settings.alternateColors || [];
+ let altHL = [];
+ for (const { name, _: _2 } of alternateColors) {
+ const altParams = searchString(codeBlockFirstLine, `${name}:`);
+ altHL = altHL.concat(getHighlightedLines(altParams).map((lineNumber) => ({ name, lineNumber })));
+ }
+ let isCodeBlockExcluded = false;
+ isCodeBlockExcluded = isExcluded(codeBlockFirstLine, plugin.settings.ExcludeLangs);
+ const codeBlockPreElement = codeElm.parentElement;
+ if (codeBlockPreElement === null) {
+ return;
+ }
+ if (!isCodeBlockExcluded) {
+ codeBlockPreElement.classList.add(`codeblock-customizer-pre`);
+ }
+ const codeElements = codeBlockPreElement.getElementsByTagName("code");
+ AddHeaderAndHighlight(isCodeBlockExcluded, fileName, codeBlockPreElement, codeBlockLang, Fold, codeElements, showNumbers, lineNumberOffset, linesToHighlight, altHL);
+ });
}
// src/SettingsTab.ts
@@ -2484,31 +2341,31 @@ var import_pickr = __toESM(require_pickr_min());
// node_modules/colortranslator/esm/index.js
var t = function() {
- return t = Object.assign || function(t2) {
- for (var e2, r2 = 1, n2 = arguments.length; r2 < n2; r2++)
- for (var i2 in e2 = arguments[r2])
- Object.prototype.hasOwnProperty.call(e2, i2) && (t2[i2] = e2[i2]);
- return t2;
- }, t.apply(this, arguments);
+ return t = Object.assign || function(t2) {
+ for (var e2, r2 = 1, n2 = arguments.length; r2 < n2; r2++)
+ for (var i2 in e2 = arguments[r2])
+ Object.prototype.hasOwnProperty.call(e2, i2) && (t2[i2] = e2[i2]);
+ return t2;
+ }, t.apply(this, arguments);
};
function e(t2, e2, r2) {
- if (r2 || 2 === arguments.length)
- for (var n2, i2 = 0, o2 = e2.length; i2 < o2; i2++)
- !n2 && i2 in e2 || (n2 || (n2 = Array.prototype.slice.call(e2, 0, i2)), n2[i2] = e2[i2]);
- return t2.concat(n2 || Array.prototype.slice.call(e2));
+ if (r2 || 2 === arguments.length)
+ for (var n2, i2 = 0, o2 = e2.length; i2 < o2; i2++)
+ !n2 && i2 in e2 || (n2 || (n2 = Array.prototype.slice.call(e2, 0, i2)), n2[i2] = e2[i2]);
+ return t2.concat(n2 || Array.prototype.slice.call(e2));
}
var r;
var n;
var i;
var o;
!function(t2) {
- t2.HEX = "HEX", t2.RGB = "RGB", t2.HSL = "HSL", t2.CMYK = "CMYK";
+ t2.HEX = "HEX", t2.RGB = "RGB", t2.HSL = "HSL", t2.CMYK = "CMYK";
}(r || (r = {})), function(t2) {
- t2.ANALOGOUS = "ANALOGOUS", t2.COMPLEMENTARY = "COMPLEMENTARY", t2.SPLIT_COMPLEMENTARY = "SPLIT_COMPLEMENTARY", t2.TRIADIC = "TRIADIC", t2.TETRADIC = "TETRADIC", t2.SQUARE = "SQUARE";
+ t2.ANALOGOUS = "ANALOGOUS", t2.COMPLEMENTARY = "COMPLEMENTARY", t2.SPLIT_COMPLEMENTARY = "SPLIT_COMPLEMENTARY", t2.TRIADIC = "TRIADIC", t2.TETRADIC = "TETRADIC", t2.SQUARE = "SQUARE";
}(n || (n = {})), function(t2) {
- t2.ADDITIVE = "ADDITIVE", t2.SUBTRACTIVE = "SUBTRACTIVE";
+ t2.ADDITIVE = "ADDITIVE", t2.SUBTRACTIVE = "SUBTRACTIVE";
}(i || (i = {})), function(t2) {
- t2.black = "#000000", t2.silver = "#C0C0C0", t2.gray = "#808080", t2.white = "#FFFFFF", t2.maroon = "#800000", t2.red = "#FF0000", t2.purple = "#800080", t2.fuchsia = "#FF00FF", t2.green = "#008000", t2.lime = "#00FF00", t2.olive = "#808000", t2.yellow = "#FFFF00", t2.navy = "#000080", t2.blue = "#0000FF", t2.teal = "#008080", t2.aqua = "#00FFFF", t2.orange = "#FFA500", t2.aliceblue = "#F0F8FF", t2.antiquewhite = "#FAEBD7", t2.aquamarine = "#7FFFD4", t2.azure = "#F0FFFF", t2.beige = "#F5F5DC", t2.bisque = "#FFE4C4", t2.blanchedalmond = "#FFEBCD", t2.blueviolet = "#8A2BE2", t2.brown = "#A52A2A", t2.burlywood = "#DEB887", t2.cadetblue = "#5F9EA0", t2.chartreuse = "#7FFF00", t2.chocolate = "#D2691E", t2.coral = "#FF7F50", t2.cornflowerblue = "#6495ED", t2.cornsilk = "#FFF8DC", t2.crimson = "#DC143C", t2.cyan = "#00FFFF", t2.darkblue = "#00008B", t2.darkcyan = "#008B8B", t2.darkgoldenrod = "#B8860B", t2.darkgray = "#A9A9A9", t2.darkgreen = "#006400", t2.darkgrey = "#A9A9A9", t2.darkkhaki = "#BDB76B", t2.darkmagenta = "#8B008B", t2.darkolivegreen = "#556B2F", t2.darkorange = "#FF8C00", t2.darkorchid = "#9932CC", t2.darkred = "#8B0000", t2.darksalmon = "#E9967A", t2.darkseagreen = "#8FBC8F", t2.darkslateblue = "#483D8B", t2.darkslategray = "#2F4F4F", t2.darkslategrey = "#2F4F4F", t2.darkturquoise = "#00CED1", t2.darkviolet = "#9400D3", t2.deeppink = "#FF1493", t2.deepskyblue = "#00BFFF", t2.dimgray = "#696969", t2.dimgrey = "#696969", t2.dodgerblue = "#1E90FF", t2.firebrick = "#B22222", t2.floralwhite = "#FFFAF0", t2.forestgreen = "#228B22", t2.gainsboro = "#DCDCDC", t2.ghostwhite = "#F8F8FF", t2.gold = "#FFD700", t2.goldenrod = "#DAA520", t2.greenyellow = "#ADFF2F", t2.grey = "#808080", t2.honeydew = "#F0FFF0", t2.hotpink = "#FF69B4", t2.indianred = "#CD5C5C", t2.indigo = "#4B0082", t2.ivory = "#FFFFF0", t2.khaki = "#F0E68C", t2.lavender = "#E6E6FA", t2.lavenderblush = "#FFF0F5", t2.lawngreen = "#7CFC00", t2.lemonchiffon = "#FFFACD", t2.lightblue = "#ADD8E6", t2.lightcoral = "#F08080", t2.lightcyan = "#E0FFFF", t2.lightgoldenrodyellow = "#FAFAD2", t2.lightgray = "#D3D3D3", t2.lightgreen = "#90EE90", t2.lightgrey = "#D3D3D3", t2.lightpink = "#FFB6C1", t2.lightsalmon = "#FFA07A", t2.lightseagreen = "#20B2AA", t2.lightskyblue = "#87CEFA", t2.lightslategray = "#778899", t2.lightslategrey = "#778899", t2.lightsteelblue = "#B0C4DE", t2.lightyellow = "#FFFFE0", t2.limegreen = "#32CD32", t2.linen = "#FAF0E6", t2.magenta = "#FF00FF", t2.mediumaquamarine = "#66CDAA", t2.mediumblue = "#0000CD", t2.mediumorchid = "#BA55D3", t2.mediumpurple = "#9370DB", t2.mediumseagreen = "#3CB371", t2.mediumslateblue = "#7B68EE", t2.mediumspringgreen = "#00FA9A", t2.mediumturquoise = "#48D1CC", t2.mediumvioletred = "#C71585", t2.midnightblue = "#191970", t2.mintcream = "#F5FFFA", t2.mistyrose = "#FFE4E1", t2.moccasin = "#FFE4B5", t2.navajowhite = "#FFDEAD", t2.oldlace = "#FDF5E6", t2.olivedrab = "#6B8E23", t2.orangered = "#FF4500", t2.orchid = "#DA70D6", t2.palegoldenrod = "#EEE8AA", t2.palegreen = "#98FB98", t2.paleturquoise = "#AFEEEE", t2.palevioletred = "#DB7093", t2.papayawhip = "#FFEFD5", t2.peachpuff = "#FFDAB9", t2.peru = "#CD853F", t2.pink = "#FFC0CB", t2.plum = "#DDA0DD", t2.powderblue = "#B0E0E6", t2.rosybrown = "#BC8F8F", t2.royalblue = "#4169E1", t2.saddlebrown = "#8B4513", t2.salmon = "#FA8072", t2.sandybrown = "#F4A460", t2.seagreen = "#2E8B57", t2.seashell = "#FFF5EE", t2.sienna = "#A0522D", t2.skyblue = "#87CEEB", t2.slateblue = "#6A5ACD", t2.slategray = "#708090", t2.slategrey = "#708090", t2.snow = "#FFFAFA", t2.springgreen = "#00FF7F", t2.steelblue = "#4682B4", t2.tan = "#D2B48C", t2.thistle = "#D8BFD8", t2.tomato = "#FF6347", t2.turquoise = "#40E0D0", t2.violet = "#EE82EE", t2.wheat = "#F5DEB3", t2.whitesmoke = "#F5F5F5", t2.yellowgreen = "#9ACD32", t2.rebeccapurple = "#663399";
+ t2.black = "#000000", t2.silver = "#C0C0C0", t2.gray = "#808080", t2.white = "#FFFFFF", t2.maroon = "#800000", t2.red = "#FF0000", t2.purple = "#800080", t2.fuchsia = "#FF00FF", t2.green = "#008000", t2.lime = "#00FF00", t2.olive = "#808000", t2.yellow = "#FFFF00", t2.navy = "#000080", t2.blue = "#0000FF", t2.teal = "#008080", t2.aqua = "#00FFFF", t2.orange = "#FFA500", t2.aliceblue = "#F0F8FF", t2.antiquewhite = "#FAEBD7", t2.aquamarine = "#7FFFD4", t2.azure = "#F0FFFF", t2.beige = "#F5F5DC", t2.bisque = "#FFE4C4", t2.blanchedalmond = "#FFEBCD", t2.blueviolet = "#8A2BE2", t2.brown = "#A52A2A", t2.burlywood = "#DEB887", t2.cadetblue = "#5F9EA0", t2.chartreuse = "#7FFF00", t2.chocolate = "#D2691E", t2.coral = "#FF7F50", t2.cornflowerblue = "#6495ED", t2.cornsilk = "#FFF8DC", t2.crimson = "#DC143C", t2.cyan = "#00FFFF", t2.darkblue = "#00008B", t2.darkcyan = "#008B8B", t2.darkgoldenrod = "#B8860B", t2.darkgray = "#A9A9A9", t2.darkgreen = "#006400", t2.darkgrey = "#A9A9A9", t2.darkkhaki = "#BDB76B", t2.darkmagenta = "#8B008B", t2.darkolivegreen = "#556B2F", t2.darkorange = "#FF8C00", t2.darkorchid = "#9932CC", t2.darkred = "#8B0000", t2.darksalmon = "#E9967A", t2.darkseagreen = "#8FBC8F", t2.darkslateblue = "#483D8B", t2.darkslategray = "#2F4F4F", t2.darkslategrey = "#2F4F4F", t2.darkturquoise = "#00CED1", t2.darkviolet = "#9400D3", t2.deeppink = "#FF1493", t2.deepskyblue = "#00BFFF", t2.dimgray = "#696969", t2.dimgrey = "#696969", t2.dodgerblue = "#1E90FF", t2.firebrick = "#B22222", t2.floralwhite = "#FFFAF0", t2.forestgreen = "#228B22", t2.gainsboro = "#DCDCDC", t2.ghostwhite = "#F8F8FF", t2.gold = "#FFD700", t2.goldenrod = "#DAA520", t2.greenyellow = "#ADFF2F", t2.grey = "#808080", t2.honeydew = "#F0FFF0", t2.hotpink = "#FF69B4", t2.indianred = "#CD5C5C", t2.indigo = "#4B0082", t2.ivory = "#FFFFF0", t2.khaki = "#F0E68C", t2.lavender = "#E6E6FA", t2.lavenderblush = "#FFF0F5", t2.lawngreen = "#7CFC00", t2.lemonchiffon = "#FFFACD", t2.lightblue = "#ADD8E6", t2.lightcoral = "#F08080", t2.lightcyan = "#E0FFFF", t2.lightgoldenrodyellow = "#FAFAD2", t2.lightgray = "#D3D3D3", t2.lightgreen = "#90EE90", t2.lightgrey = "#D3D3D3", t2.lightpink = "#FFB6C1", t2.lightsalmon = "#FFA07A", t2.lightseagreen = "#20B2AA", t2.lightskyblue = "#87CEFA", t2.lightslategray = "#778899", t2.lightslategrey = "#778899", t2.lightsteelblue = "#B0C4DE", t2.lightyellow = "#FFFFE0", t2.limegreen = "#32CD32", t2.linen = "#FAF0E6", t2.magenta = "#FF00FF", t2.mediumaquamarine = "#66CDAA", t2.mediumblue = "#0000CD", t2.mediumorchid = "#BA55D3", t2.mediumpurple = "#9370DB", t2.mediumseagreen = "#3CB371", t2.mediumslateblue = "#7B68EE", t2.mediumspringgreen = "#00FA9A", t2.mediumturquoise = "#48D1CC", t2.mediumvioletred = "#C71585", t2.midnightblue = "#191970", t2.mintcream = "#F5FFFA", t2.mistyrose = "#FFE4E1", t2.moccasin = "#FFE4B5", t2.navajowhite = "#FFDEAD", t2.oldlace = "#FDF5E6", t2.olivedrab = "#6B8E23", t2.orangered = "#FF4500", t2.orchid = "#DA70D6", t2.palegoldenrod = "#EEE8AA", t2.palegreen = "#98FB98", t2.paleturquoise = "#AFEEEE", t2.palevioletred = "#DB7093", t2.papayawhip = "#FFEFD5", t2.peachpuff = "#FFDAB9", t2.peru = "#CD853F", t2.pink = "#FFC0CB", t2.plum = "#DDA0DD", t2.powderblue = "#B0E0E6", t2.rosybrown = "#BC8F8F", t2.royalblue = "#4169E1", t2.saddlebrown = "#8B4513", t2.salmon = "#FA8072", t2.sandybrown = "#F4A460", t2.seagreen = "#2E8B57", t2.seashell = "#FFF5EE", t2.sienna = "#A0522D", t2.skyblue = "#87CEEB", t2.slateblue = "#6A5ACD", t2.slategray = "#708090", t2.slategrey = "#708090", t2.snow = "#FFFAFA", t2.springgreen = "#00FF7F", t2.steelblue = "#4682B4", t2.tan = "#D2B48C", t2.thistle = "#D8BFD8", t2.tomato = "#FF6347", t2.turquoise = "#40E0D0", t2.violet = "#EE82EE", t2.wheat = "#F5DEB3", t2.whitesmoke = "#F5F5F5", t2.yellowgreen = "#9ACD32", t2.rebeccapurple = "#663399";
}(o || (o = {}));
var a;
var u;
@@ -2528,1279 +2385,1284 @@ var A = /\{(\d+)\}/g;
var E = "The provided string color doesn't have a correct format";
var v = "The provided color object doesn't have the proper keys or format";
var H = function(t2, e2) {
- return Object.prototype.hasOwnProperty.call(t2, e2);
+ return Object.prototype.hasOwnProperty.call(t2, e2);
};
var B = function(t2) {
- return +"".concat(t2).replace(m, "$1");
+ return +"".concat(t2).replace(m, "$1");
};
var C = function(t2) {
- return m.test("".concat(t2)) ? B(t2) : Math.min(+t2, 100);
+ return m.test("".concat(t2)) ? B(t2) : Math.min(+t2, 100);
};
var M = function(t2) {
- return 1 === t2.length && (t2 += t2), parseInt(t2, 16);
+ return 1 === t2.length && (t2 += t2), parseInt(t2, 16);
};
var R = function(t2) {
- var e2 = G(t2, 0).toString(16).toUpperCase();
- return 1 === e2.length ? "0x0".concat(e2) : "0x".concat(e2);
+ var e2 = G(t2, 0).toString(16).toUpperCase();
+ return 1 === e2.length ? "0x0".concat(e2) : "0x".concat(e2);
};
var D = function(t2, e2) {
- return void 0 === e2 && (e2 = false), !e2 && m.test(t2) ? Math.min(255 * B(t2) / 100, 255) : y.test(t2) ? (3 === t2.length && (t2 += t2.slice(-1)), e2 ? G(t2) / 255 : G(t2)) : Math.min(+t2, e2 ? 1 : 255);
+ return void 0 === e2 && (e2 = false), !e2 && m.test(t2) ? Math.min(255 * B(t2) / 100, 255) : y.test(t2) ? (3 === t2.length && (t2 += t2.slice(-1)), e2 ? G(t2) / 255 : G(t2)) : Math.min(+t2, e2 ? 1 : 255);
};
var S = function(t2) {
- return Math.min(m.test(t2) ? B(t2) / 100 : +t2, 1);
+ return Math.min(m.test(t2) ? B(t2) / 100 : +t2, 1);
};
var L = function(t2) {
- return e([], t2, true).sort().join("").toUpperCase();
+ return e([], t2, true).sort().join("").toUpperCase();
};
var G = function(t2, e2) {
- void 0 === e2 && (e2 = 6);
- var r2 = Math.pow(10, e2);
- return Math.round(+t2 * r2) / r2;
+ void 0 === e2 && (e2 = 6);
+ var r2 = Math.pow(10, e2);
+ return Math.round(+t2 * r2) / r2;
};
var k = function(t2, e2, r2) {
- return Math.max(e2, Math.min(t2, r2));
+ return Math.max(e2, Math.min(t2, r2));
};
var O = function(t2, e2, r2) {
- return r2 < 0 && (r2 += 6), r2 >= 6 && (r2 -= 6), G(r2 < 1 ? 255 * ((e2 - t2) * r2 + t2) : r2 < 3 ? 255 * e2 : r2 < 4 ? 255 * ((e2 - t2) * (4 - r2) + t2) : 255 * t2);
+ return r2 < 0 && (r2 += 6), r2 >= 6 && (r2 -= 6), G(r2 < 1 ? 255 * ((e2 - t2) * r2 + t2) : r2 < 3 ? 255 * e2 : r2 < 4 ? 255 * ((e2 - t2) * (4 - r2) + t2) : 255 * t2);
};
var X = function(t2, e2, r2) {
- e2 /= 100;
- var n2 = (r2 /= 100) <= 0.5 ? r2 * (e2 + 1) : r2 + e2 - r2 * e2, i2 = 2 * r2 - n2;
- return { r: O(i2, n2, (t2 /= 60) + 2), g: O(i2, n2, t2), b: O(i2, n2, t2 - 2) };
+ e2 /= 100;
+ var n2 = (r2 /= 100) <= 0.5 ? r2 * (e2 + 1) : r2 + e2 - r2 * e2, i2 = 2 * r2 - n2;
+ return { r: O(i2, n2, (t2 /= 60) + 2), g: O(i2, n2, t2), b: O(i2, n2, t2 - 2) };
};
var Y = function(t2, e2, r2, n2) {
- return { r: G(255 * (1 - t2) * (n2 = 1 - n2)), g: G(255 * (1 - e2) * n2), b: G(255 * (1 - r2) * n2) };
+ return { r: G(255 * (1 - t2) * (n2 = 1 - n2)), g: G(255 * (1 - e2) * n2), b: G(255 * (1 - r2) * n2) };
};
var j = function(t2, e2, r2) {
- t2 /= 255, e2 /= 255, r2 /= 255;
- var n2 = 1 - Math.max(t2, e2, r2), i2 = 1 - n2, o2 = i2 && (i2 - e2) / i2, a2 = i2 && (i2 - r2) / i2;
- return { c: G(100 * (i2 && (i2 - t2) / i2)), m: G(100 * o2), y: G(100 * a2), k: G(100 * n2) };
+ t2 /= 255, e2 /= 255, r2 /= 255;
+ var n2 = 1 - Math.max(t2, e2, r2), i2 = 1 - n2, o2 = i2 && (i2 - e2) / i2, a2 = i2 && (i2 - r2) / i2;
+ return { c: G(100 * (i2 && (i2 - t2) / i2)), m: G(100 * o2), y: G(100 * a2), k: G(100 * n2) };
};
var K = function(t2, e2, r2, n2) {
- void 0 === n2 && (n2 = 1), t2 /= 255, e2 /= 255, r2 /= 255, n2 = Math.min(n2, 1);
- var i2 = Math.max(t2, e2, r2), o2 = Math.min(t2, e2, r2), a2 = i2 - o2, u2 = 0, c2 = 0, s2 = (i2 + o2) / 2;
- if (0 !== a2) {
- switch (i2) {
- case t2:
- u2 = (e2 - r2) / a2 % 6;
- break;
- case e2:
- u2 = (r2 - t2) / a2 + 2;
- break;
- case r2:
- u2 = (t2 - e2) / a2 + 4;
- }
- (u2 = G(60 * u2)) < 0 && (u2 += 360), c2 = a2 / (1 - Math.abs(2 * s2 - 1));
- }
- return { h: u2, s: G(100 * c2), l: G(100 * s2), a: n2 };
+ void 0 === n2 && (n2 = 1), t2 /= 255, e2 /= 255, r2 /= 255, n2 = Math.min(n2, 1);
+ var i2 = Math.max(t2, e2, r2), o2 = Math.min(t2, e2, r2), a2 = i2 - o2, u2 = 0, c2 = 0, s2 = (i2 + o2) / 2;
+ if (0 !== a2) {
+ switch (i2) {
+ case t2:
+ u2 = (e2 - r2) / a2 % 6;
+ break;
+ case e2:
+ u2 = (r2 - t2) / a2 + 2;
+ break;
+ case r2:
+ u2 = (t2 - e2) / a2 + 4;
+ }
+ (u2 = G(60 * u2)) < 0 && (u2 += 360), c2 = a2 / (1 - Math.abs(2 * s2 - 1));
+ }
+ return { h: u2, s: G(100 * c2), l: G(100 * s2), a: n2 };
};
var I = function(t2, e2) {
- if (t2 < 0 && (t2 += 360), t2 > 360 && (t2 -= 360), 360 === t2 || 0 === t2)
- return t2;
- var r2 = [[0, 120], [120, 180], [180, 240], [240, 360]], n2 = [[0, 60], [60, 120], [120, 240], [240, 360]], i2 = e2 ? n2 : r2, o2 = 0, a2 = 0, u2 = 0, c2 = 0;
- return (e2 ? r2 : n2).find(function(e3, r3) {
- return t2 >= e3[0] && t2 < e3[1] && (o2 = e3[0], a2 = e3[1], u2 = i2[r3][0], c2 = i2[r3][1], true);
- }), u2 + (c2 - u2) / (a2 - o2) * (t2 - o2);
+ if (t2 < 0 && (t2 += 360), t2 > 360 && (t2 -= 360), 360 === t2 || 0 === t2)
+ return t2;
+ var r2 = [[0, 120], [120, 180], [180, 240], [240, 360]], n2 = [[0, 60], [60, 120], [120, 240], [240, 360]], i2 = e2 ? n2 : r2, o2 = 0, a2 = 0, u2 = 0, c2 = 0;
+ return (e2 ? r2 : n2).find(function(e3, r3) {
+ return t2 >= e3[0] && t2 < e3[1] && (o2 = e3[0], a2 = e3[1], u2 = i2[r3][0], c2 = i2[r3][1], true);
+ }), u2 + (c2 - u2) / (a2 - o2) * (t2 - o2);
};
var P = function(t2, e2) {
- void 0 === e2 && (e2 = false);
- var r2 = L(Object.keys(t2));
- return g[p[r2]].reduce(function(r3, n2) {
- var i2, o2, a2 = t2[n2];
- return void 0 !== a2 && (e2 ? r3.push((i2 = G(a2, 0), 1 === (o2 = G(i2, 0).toString(16).toUpperCase()).length && (o2 = "0".concat(o2)), o2)) : r3.push(a2)), r3;
- }, []);
+ void 0 === e2 && (e2 = false);
+ var r2 = L(Object.keys(t2));
+ return g[p[r2]].reduce(function(r3, n2) {
+ var i2, o2, a2 = t2[n2];
+ return void 0 !== a2 && (e2 ? r3.push((i2 = G(a2, 0), 1 === (o2 = G(i2, 0).toString(16).toUpperCase()).length && (o2 = "0".concat(o2)), o2)) : r3.push(a2)), r3;
+ }, []);
};
var T = function(t2, e2) {
- return t2.replace(A, function(t3, r2) {
- return "".concat(e2[+r2 - 1]);
- });
+ return t2.replace(A, function(t3, r2) {
+ return "".concat(e2[+r2 - 1]);
+ });
};
var w = ((u = {})[r.HEX] = function(t2) {
- var e2 = P(t2, true), r2 = 4 === e2.length ? "#{1}{2}{3}{4}" : "#{1}{2}{3}";
- return T(r2, e2);
+ var e2 = P(t2, true), r2 = 4 === e2.length ? "#{1}{2}{3}{4}" : "#{1}{2}{3}";
+ return T(r2, e2);
}, u[r.RGB] = function(t2) {
- var e2 = P(t2), r2 = 4 === e2.length ? "rgba({1},{2},{3},{4})" : "rgb({1},{2},{3})";
- return T(r2, e2);
+ var e2 = P(t2), r2 = 4 === e2.length ? "rgba({1},{2},{3},{4})" : "rgb({1},{2},{3})";
+ return T(r2, e2);
}, u[r.HSL] = function(t2) {
- var e2 = P(t2), r2 = 4 === e2.length ? "hsla({1},{2}%,{3}%,{4})" : "hsl({1},{2}%,{3}%)";
- return T(r2, e2);
+ var e2 = P(t2), r2 = 4 === e2.length ? "hsla({1},{2}%,{3}%,{4})" : "hsl({1},{2}%,{3}%)";
+ return T(r2, e2);
}, u[r.CMYK] = function(t2) {
- var e2 = P(t2), r2 = 5 === e2.length ? "cmyk({1}%,{2}%,{3}%,{4}%,{5})" : "cmyk({1}%,{2}%,{3}%,{4}%)";
- return T(r2, e2);
+ var e2 = P(t2), r2 = 5 === e2.length ? "cmyk({1}%,{2}%,{3}%,{4}%,{5})" : "cmyk({1}%,{2}%,{3}%,{4}%)";
+ return T(r2, e2);
}, u);
var x = function(t2) {
- if ("string" == typeof t2) {
- var e2 = t2.match(F), r2 = +e2[1];
- switch (e2[2]) {
- case "rad":
- t2 = G(180 * r2 / Math.PI);
- break;
- case "turn":
- t2 = G(360 * r2);
- break;
- default:
- t2 = r2;
- }
- }
- return (t2 > 360 || t2 < 0) && (t2 -= 360 * Math.floor(t2 / 360)), t2;
+ if ("string" == typeof t2) {
+ var e2 = t2.match(F), r2 = +e2[1];
+ switch (e2[2]) {
+ case "rad":
+ t2 = G(180 * r2 / Math.PI);
+ break;
+ case "turn":
+ t2 = G(360 * r2);
+ break;
+ default:
+ t2 = r2;
+ }
+ }
+ return (t2 > 360 || t2 < 0) && (t2 -= 360 * Math.floor(t2 / 360)), t2;
};
var N = function(t2) {
- return "string" == typeof t2 && (t2 = m.test(t2) ? B(t2) / 100 : +t2), isNaN(+t2) || t2 > 1 ? 1 : G(t2);
+ return "string" == typeof t2 && (t2 = m.test(t2) ? B(t2) / 100 : +t2), isNaN(+t2) || t2 > 1 ? 1 : G(t2);
};
var V = function(r2, n2, o2) {
- return n2.reduce(function(n3, a2) {
- return e(e([], n3, true), [t(t({}, r2), { h: o2 === i.ADDITIVE ? x(r2.h + a2) : x(I(I(r2.h, false) + a2, true)) })], false);
- }, [t({}, r2)]);
+ return n2.reduce(function(n3, a2) {
+ return e(e([], n3, true), [t(t({}, r2), { h: o2 === i.ADDITIVE ? x(r2.h + a2) : x(I(I(r2.h, false) + a2, true)) })], false);
+ }, [t({}, r2)]);
};
var U = function(t2, e2) {
- return V(t2, [30, -30], e2);
+ return V(t2, [30, -30], e2);
};
var q = function(t2, e2) {
- return V(t2, [180], e2);
+ return V(t2, [180], e2);
};
var $ = function(t2, e2) {
- return V(t2, [150, -150], e2);
+ return V(t2, [150, -150], e2);
};
var _ = function(t2, e2) {
- return V(t2, [120, -120], e2);
+ return V(t2, [120, -120], e2);
};
var Q = function(t2, e2) {
- return V(t2, [60, -120, 180], e2);
+ return V(t2, [60, -120, 180], e2);
};
var z = function(t2, e2) {
- return V(t2, [90, -90, 180], e2);
+ return V(t2, [90, -90, 180], e2);
};
var J = function(t2) {
- return "string" == typeof t2 ? function(t3) {
- var e2;
- if (Object.keys(r).some(function(r2) {
- if (b[r2].test(t3))
- return e2 = r2, true;
- }), !e2 && ~f.indexOf(t3) && (e2 = r.HEX), !e2)
- throw new Error(E);
- return e2;
- }(t2) : function(t3) {
- var e2, n2 = false, i2 = L(Object.keys(t3));
- if (p[i2] && (e2 = p[i2]), e2 && e2 === r.RGB) {
- var o2 = Object.entries(t3).some(function(t4) {
- return !y.test("".concat(t4[1]));
- }), a2 = Object.entries(t3).some(function(t4) {
- return !(m.test("".concat(t4[1])) || !y.test("".concat(t4[1])) && !isNaN(+t4[1]) && +t4[1] <= 255);
- });
- o2 && a2 && (n2 = true), o2 || (e2 = r.HEX);
- }
- if (!e2 || n2)
- throw new Error(v);
- return e2;
- }(t2);
+ return "string" == typeof t2 ? function(t3) {
+ var e2;
+ if (Object.keys(r).some(function(r2) {
+ if (b[r2].test(t3))
+ return e2 = r2, true;
+ }), !e2 && ~f.indexOf(t3) && (e2 = r.HEX), !e2)
+ throw new Error(E);
+ return e2;
+ }(t2) : function(t3) {
+ var e2, n2 = false, i2 = L(Object.keys(t3));
+ if (p[i2] && (e2 = p[i2]), e2 && e2 === r.RGB) {
+ var o2 = Object.entries(t3).some(function(t4) {
+ return !y.test("".concat(t4[1]));
+ }), a2 = Object.entries(t3).some(function(t4) {
+ return !(m.test("".concat(t4[1])) || !y.test("".concat(t4[1])) && !isNaN(+t4[1]) && +t4[1] <= 255);
+ });
+ o2 && a2 && (n2 = true), o2 || (e2 = r.HEX);
+ }
+ if (!e2 || n2)
+ throw new Error(v);
+ return e2;
+ }(t2);
};
var W = ((c = {})[r.HEX] = function(t2) {
- var e2 = (~f.indexOf(t2) ? o[t2] : t2).match(b.HEX), r2 = { r: M(e2[1] || e2[5]), g: M(e2[2] || e2[6]), b: M(e2[3] || e2[7]) }, n2 = e2[4] || e2[8];
- return void 0 !== n2 && (r2.a = M(n2) / 255), r2;
+ var e2 = (~f.indexOf(t2) ? o[t2] : t2).match(b.HEX), r2 = { r: M(e2[1] || e2[5]), g: M(e2[2] || e2[6]), b: M(e2[3] || e2[7]) }, n2 = e2[4] || e2[8];
+ return void 0 !== n2 && (r2.a = M(n2) / 255), r2;
}, c[r.RGB] = function(t2) {
- var e2 = t2.match(b.RGB), r2 = D(e2[1] || e2[5]), n2 = D(e2[2] || e2[6]), i2 = D(e2[3] || e2[7]), o2 = e2[4] || e2[8], a2 = { r: Math.min(r2, 255), g: Math.min(n2, 255), b: Math.min(i2, 255) };
- return void 0 !== o2 && (a2.a = N(o2)), a2;
+ var e2 = t2.match(b.RGB), r2 = D(e2[1] || e2[5]), n2 = D(e2[2] || e2[6]), i2 = D(e2[3] || e2[7]), o2 = e2[4] || e2[8], a2 = { r: Math.min(r2, 255), g: Math.min(n2, 255), b: Math.min(i2, 255) };
+ return void 0 !== o2 && (a2.a = N(o2)), a2;
}, c[r.HSL] = function(t2) {
- var e2 = t2.match(b.HSL), r2 = x(e2[1] || e2[5]), n2 = C(e2[2] || e2[6]), i2 = C(e2[3] || e2[7]), o2 = e2[4] || e2[8], a2 = X(r2, n2, i2);
- return void 0 !== o2 && (a2.a = N(o2)), a2;
+ var e2 = t2.match(b.HSL), r2 = x(e2[1] || e2[5]), n2 = C(e2[2] || e2[6]), i2 = C(e2[3] || e2[7]), o2 = e2[4] || e2[8], a2 = X(r2, n2, i2);
+ return void 0 !== o2 && (a2.a = N(o2)), a2;
}, c[r.CMYK] = function(t2) {
- var e2 = t2.match(b.CMYK), r2 = S(e2[1] || e2[6]), n2 = S(e2[2] || e2[7]), i2 = S(e2[3] || e2[8]), o2 = S(e2[4] || e2[9]), a2 = e2[5] || e2[10], u2 = Y(r2, n2, i2, o2);
- return void 0 !== a2 && (u2.a = N(a2)), u2;
+ var e2 = t2.match(b.CMYK), r2 = S(e2[1] || e2[6]), n2 = S(e2[2] || e2[7]), i2 = S(e2[3] || e2[8]), o2 = S(e2[4] || e2[9]), a2 = e2[5] || e2[10], u2 = Y(r2, n2, i2, o2);
+ return void 0 !== a2 && (u2.a = N(a2)), u2;
}, c);
var Z = ((s = {})[r.HEX] = function(t2) {
- var e2 = { r: D("".concat(t2.r)), g: D("".concat(t2.g)), b: D("".concat(t2.b)) };
- return H(t2, "a") && (e2.a = Math.min(D("".concat(t2.a), true), 1)), e2;
+ var e2 = { r: D("".concat(t2.r)), g: D("".concat(t2.g)), b: D("".concat(t2.b)) };
+ return H(t2, "a") && (e2.a = Math.min(D("".concat(t2.a), true), 1)), e2;
}, s[r.RGB] = function(t2) {
- return this.HEX(t2);
+ return this.HEX(t2);
}, s[r.HSL] = function(t2) {
- var e2 = C("".concat(t2.s)), r2 = C("".concat(t2.l)), n2 = X(x(t2.h), e2, r2);
- return H(t2, "a") && (n2.a = N(t2.a)), n2;
+ var e2 = C("".concat(t2.s)), r2 = C("".concat(t2.l)), n2 = X(x(t2.h), e2, r2);
+ return H(t2, "a") && (n2.a = N(t2.a)), n2;
}, s[r.CMYK] = function(t2) {
- var e2 = S("".concat(t2.c)), r2 = S("".concat(t2.m)), n2 = S("".concat(t2.y)), i2 = S("".concat(t2.k)), o2 = Y(e2, r2, n2, i2);
- return H(t2, "a") && (o2.a = N(t2.a)), o2;
+ var e2 = S("".concat(t2.c)), r2 = S("".concat(t2.m)), n2 = S("".concat(t2.y)), i2 = S("".concat(t2.k)), o2 = Y(e2, r2, n2, i2);
+ return H(t2, "a") && (o2.a = N(t2.a)), o2;
}, s);
var tt = function(t2, e2) {
- return void 0 === e2 && (e2 = J(t2)), "string" == typeof t2 ? W[e2](t2) : Z[e2](t2);
+ return void 0 === e2 && (e2 = J(t2)), "string" == typeof t2 ? W[e2](t2) : Z[e2](t2);
};
var et = ((d = {})[r.HEX] = function(t2) {
- return { r: R(t2.r), g: R(t2.g), b: R(t2.b) };
+ return { r: R(t2.r), g: R(t2.g), b: R(t2.b) };
}, d.HEXA = function(t2) {
- var e2 = et.HEX(t2);
- return e2.a = H(t2, "a") ? R(255 * t2.a) : "0xFF", e2;
+ var e2 = et.HEX(t2);
+ return e2.a = H(t2, "a") ? R(255 * t2.a) : "0xFF", e2;
}, d[r.RGB] = function(t2, e2) {
- return H(t2, "a") && delete t2.a, ot(t2, e2);
+ return H(t2, "a") && delete t2.a, ot(t2, e2);
}, d.RGBA = function(t2, e2) {
- return t2.a = H(t2, "a") ? G(t2.a) : 1, ot(t2, e2);
+ return t2.a = H(t2, "a") ? G(t2.a) : 1, ot(t2, e2);
}, d[r.HSL] = function(t2, e2) {
- var r2 = K(t2.r, t2.g, t2.b);
- return delete r2.a, at(r2, e2);
+ var r2 = K(t2.r, t2.g, t2.b);
+ return delete r2.a, at(r2, e2);
}, d.HSLA = function(t2, e2) {
- var r2 = et.HSL(t2, e2);
- return r2.a = H(t2, "a") ? G(t2.a, e2) : 1, r2;
+ var r2 = et.HSL(t2, e2);
+ return r2.a = H(t2, "a") ? G(t2.a, e2) : 1, r2;
}, d[r.CMYK] = function(t2, e2) {
- return ut(j(t2.r, t2.g, t2.b), e2);
+ return ut(j(t2.r, t2.g, t2.b), e2);
}, d.CMYKA = function(t2, e2) {
- var r2 = et.CMYK(t2, e2);
- return r2.a = H(t2, "a") ? G(t2.a, e2) : 1, r2;
+ var r2 = et.CMYK(t2, e2);
+ return r2.a = H(t2, "a") ? G(t2.a, e2) : 1, r2;
}, d);
var rt = function(e2, n2, i2, o2) {
- var a2 = J(e2), u2 = "string" == typeof e2, c2 = tt(e2, a2), s2 = "string" == typeof e2 && H(c2, "a") || "string" != typeof e2 && H(e2, "a"), d2 = K(c2.r, c2.g, c2.b, c2.a);
- s2 || delete d2.a;
- var h2 = i2 ? d2.l / (n2 + 1) : (100 - d2.l) / (n2 + 1), l2 = Array(n2).fill(null).map(function(e3, r2) {
- return t(t({}, d2), { l: d2.l + h2 * (r2 + 1) * (1 - 2 * +i2) });
- });
- switch (a2) {
- case r.HEX:
- default:
- return l2.map(function(e3) {
- var r2 = X(e3.h, e3.s, e3.l);
- return s2 && (r2.a = e3.a), u2 ? s2 ? w.HEX(ot(t(t({}, r2), { a: G(255 * r2.a) }), o2)) : w.HEX(ot(r2, o2)) : s2 ? et.HEXA(r2) : et.HEX(r2);
- });
- case r.RGB:
- return l2.map(function(t2) {
- var e3 = X(t2.h, t2.s, t2.l);
- return s2 && (e3.a = t2.a), u2 ? w.RGB(ot(e3, o2)) : s2 ? et.RGBA(e3, o2) : et.RGB(e3, o2);
- });
- case r.HSL:
- return l2.map(function(e3) {
- return u2 ? w.HSL(at(e3, o2)) : s2 ? et.HSLA(t(t({}, X(e3.h, e3.s, e3.l)), { a: e3.a }), o2) : et.HSL(X(e3.h, e3.s, e3.l), o2);
- });
- }
+ var a2 = J(e2), u2 = "string" == typeof e2, c2 = tt(e2, a2), s2 = "string" == typeof e2 && H(c2, "a") || "string" != typeof e2 && H(e2, "a"), d2 = K(c2.r, c2.g, c2.b, c2.a);
+ s2 || delete d2.a;
+ var h2 = i2 ? d2.l / (n2 + 1) : (100 - d2.l) / (n2 + 1), l2 = Array(n2).fill(null).map(function(e3, r2) {
+ return t(t({}, d2), { l: d2.l + h2 * (r2 + 1) * (1 - 2 * +i2) });
+ });
+ switch (a2) {
+ case r.HEX:
+ default:
+ return l2.map(function(e3) {
+ var r2 = X(e3.h, e3.s, e3.l);
+ return s2 && (r2.a = e3.a), u2 ? s2 ? w.HEX(ot(t(t({}, r2), { a: G(255 * r2.a) }), o2)) : w.HEX(ot(r2, o2)) : s2 ? et.HEXA(r2) : et.HEX(r2);
+ });
+ case r.RGB:
+ return l2.map(function(t2) {
+ var e3 = X(t2.h, t2.s, t2.l);
+ return s2 && (e3.a = t2.a), u2 ? w.RGB(ot(e3, o2)) : s2 ? et.RGBA(e3, o2) : et.RGB(e3, o2);
+ });
+ case r.HSL:
+ return l2.map(function(e3) {
+ return u2 ? w.HSL(at(e3, o2)) : s2 ? et.HSLA(t(t({}, X(e3.h, e3.s, e3.l)), { a: e3.a }), o2) : et.HSL(X(e3.h, e3.s, e3.l), o2);
+ });
+ }
};
var nt = ((h = { buildHarmony: function(t2, e2, n2, i2) {
- var o2 = J(t2), a2 = tt(t2, o2), u2 = K(a2.r, a2.g, a2.b, a2.a), c2 = "string" == typeof t2 && H(a2, "a") || "string" != typeof t2 && H(t2, "a"), s2 = "string" == typeof t2;
- switch (o2) {
- case r.HEX:
- default:
- return c2 ? this.HEXA(at(u2, 0), e2, n2, s2) : this.HEX(at(u2, 0), e2, n2, s2);
- case r.HSL:
- return c2 ? this.HSLA(u2, e2, n2, s2, i2) : this.HSL(u2, e2, n2, s2, i2);
- case r.RGB:
- return c2 ? this.RGBA(u2, e2, n2, s2, i2) : this.RGB(u2, e2, n2, s2, i2);
- }
+ var o2 = J(t2), a2 = tt(t2, o2), u2 = K(a2.r, a2.g, a2.b, a2.a), c2 = "string" == typeof t2 && H(a2, "a") || "string" != typeof t2 && H(t2, "a"), s2 = "string" == typeof t2;
+ switch (o2) {
+ case r.HEX:
+ default:
+ return c2 ? this.HEXA(at(u2, 0), e2, n2, s2) : this.HEX(at(u2, 0), e2, n2, s2);
+ case r.HSL:
+ return c2 ? this.HSLA(u2, e2, n2, s2, i2) : this.HSL(u2, e2, n2, s2, i2);
+ case r.RGB:
+ return c2 ? this.RGBA(u2, e2, n2, s2, i2) : this.RGB(u2, e2, n2, s2, i2);
+ }
} })[r.HEX] = function(t2, e2, r2, n2) {
- return e2(t2, r2).map(function(t3) {
- return n2 ? w.HEX(X(t3.h, t3.s, t3.l)) : et.HEX(X(t3.h, t3.s, t3.l));
- });
+ return e2(t2, r2).map(function(t3) {
+ return n2 ? w.HEX(X(t3.h, t3.s, t3.l)) : et.HEX(X(t3.h, t3.s, t3.l));
+ });
}, h.HEXA = function(e2, r2, n2, i2) {
- return r2(e2, n2).map(function(e3) {
- return i2 ? w.HEX(t(t({}, X(e3.h, e3.s, e3.l)), { a: 255 * N(e3.a) })) : et.HEXA(t(t({}, X(e3.h, e3.s, e3.l)), { a: N(e3.a) }));
- });
+ return r2(e2, n2).map(function(e3) {
+ return i2 ? w.HEX(t(t({}, X(e3.h, e3.s, e3.l)), { a: 255 * N(e3.a) })) : et.HEXA(t(t({}, X(e3.h, e3.s, e3.l)), { a: N(e3.a) }));
+ });
}, h[r.RGB] = function(t2, e2, r2, n2, i2) {
- return e2(t2, r2).map(function(t3) {
- return n2 ? w.RGB(ot(X(t3.h, t3.s, t3.l), i2)) : et.RGB(X(t3.h, t3.s, t3.l), i2);
- });
+ return e2(t2, r2).map(function(t3) {
+ return n2 ? w.RGB(ot(X(t3.h, t3.s, t3.l), i2)) : et.RGB(X(t3.h, t3.s, t3.l), i2);
+ });
}, h.RGBA = function(e2, r2, n2, i2, o2) {
- return r2(e2, n2).map(function(e3) {
- return i2 ? w.RGB(ot(t(t({}, X(e3.h, e3.s, e3.l)), { a: N(e3.a) }), o2)) : et.RGBA(t(t({}, X(e3.h, e3.s, e3.l)), { a: N(e3.a) }), o2);
- });
+ return r2(e2, n2).map(function(e3) {
+ return i2 ? w.RGB(ot(t(t({}, X(e3.h, e3.s, e3.l)), { a: N(e3.a) }), o2)) : et.RGBA(t(t({}, X(e3.h, e3.s, e3.l)), { a: N(e3.a) }), o2);
+ });
}, h[r.HSL] = function(t2, e2, r2, n2, i2) {
- return e2(t2, r2).map(function(t3) {
- return n2 ? w.HSL(at({ h: t3.h, s: t3.s, l: t3.l }, i2)) : et.HSL(X(t3.h, t3.s, t3.l), i2);
- });
+ return e2(t2, r2).map(function(t3) {
+ return n2 ? w.HSL(at({ h: t3.h, s: t3.s, l: t3.l }, i2)) : et.HSL(X(t3.h, t3.s, t3.l), i2);
+ });
}, h.HSLA = function(e2, r2, n2, i2, o2) {
- return r2(e2, n2).map(function(e3) {
- return i2 ? w.HSL(at(t(t({}, e3), { a: N(e3.a) }), o2)) : et.HSLA(t(t({}, X(e3.h, e3.s, e3.l)), { a: N(e3.a) }), o2);
- });
+ return r2(e2, n2).map(function(e3) {
+ return i2 ? w.HSL(at(t(t({}, e3), { a: N(e3.a) }), o2)) : et.HSLA(t(t({}, X(e3.h, e3.s, e3.l)), { a: N(e3.a) }), o2);
+ });
}, h);
var it = ((l = { mix: function(e2, r2) {
- var n2, o2, a2, u2, c2, s2, d2, h2, l2, f2, g2, p2, b2, F2, m2, y2 = e2.map(function(t2) {
- var e3 = J(t2);
- return tt(t2, e3);
- }), A2 = r2 === i.SUBTRACTIVE ? y2.map(function(t2) {
- var e3, r3, n3, i2, o3, a3, u3, c3, s3, d3, h3, l3, f3, g3, p3 = (e3 = t2.r, r3 = t2.g, n3 = t2.b, i2 = Math.min(e3, r3, n3), o3 = Math.min(255 - e3, 255 - r3, 255 - n3), a3 = e3 - i2, u3 = r3 - i2, c3 = n3 - i2, s3 = Math.min(a3, u3), d3 = a3 - s3, h3 = (u3 + s3) / 2, l3 = (c3 + u3 - s3) / 2, f3 = Math.max(d3, h3, l3) / Math.max(a3, u3, c3), g3 = isNaN(f3) || f3 === 1 / 0 || f3 <= 0 ? 1 : f3, { r: d3 / g3 + o3, y: h3 / g3 + o3, b: l3 / g3 + o3 });
- return H(t2, "a") && (p3.a = t2.a), p3;
- }) : null;
- function E2(e3) {
- var n3 = r2 === i.ADDITIVE ? { r: 0, g: 0, b: 0, a: 0 } : { r: 0, y: 0, b: 0, a: 0 };
- return e3.reduce(function(e4, n4) {
- var o3 = H(n4, "a") ? n4.a : 1, a3 = { r: Math.min(e4.r + n4.r * o3, 255), b: Math.min(e4.b + n4.b * o3, 255), a: 1 - (1 - o3) * (1 - e4.a) }, u3 = "g" in e4 ? e4.g : e4.y, c3 = "g" in n4 ? n4.g : n4.y;
- return t(t({}, a3), r2 === i.ADDITIVE ? { g: Math.min(u3 + c3 * o3, 255) } : { y: Math.min(u3 + c3 * o3, 255) });
- }, n3);
- }
- if (r2 === i.ADDITIVE)
- n2 = E2(y2);
- else {
- var v2 = E2(A2);
- o2 = v2.r, a2 = v2.y, u2 = v2.b, c2 = Math.min(o2, a2, u2), s2 = Math.min(255 - o2, 255 - a2, 255 - u2), d2 = o2 - c2, h2 = a2 - c2, l2 = u2 - c2, f2 = Math.min(h2, l2), g2 = d2 + h2 - f2, p2 = h2 + f2, b2 = 2 * (l2 - f2), F2 = Math.max(g2, p2, b2) / Math.max(d2, h2, l2), m2 = isNaN(F2) || F2 === 1 / 0 || F2 <= 0 ? 1 : F2, (n2 = { r: g2 / m2 + s2, g: p2 / m2 + s2, b: b2 / m2 + s2 }).a = v2.a;
- }
- return { r: G(n2.r), g: G(n2.g), b: G(n2.b), a: k(n2.a, 0, 1) };
+ var n2, o2, a2, u2, c2, s2, d2, h2, l2, f2, g2, p2, b2, F2, m2, y2 = e2.map(function(t2) {
+ var e3 = J(t2);
+ return tt(t2, e3);
+ }), A2 = r2 === i.SUBTRACTIVE ? y2.map(function(t2) {
+ var e3, r3, n3, i2, o3, a3, u3, c3, s3, d3, h3, l3, f3, g3, p3 = (e3 = t2.r, r3 = t2.g, n3 = t2.b, i2 = Math.min(e3, r3, n3), o3 = Math.min(255 - e3, 255 - r3, 255 - n3), a3 = e3 - i2, u3 = r3 - i2, c3 = n3 - i2, s3 = Math.min(a3, u3), d3 = a3 - s3, h3 = (u3 + s3) / 2, l3 = (c3 + u3 - s3) / 2, f3 = Math.max(d3, h3, l3) / Math.max(a3, u3, c3), g3 = isNaN(f3) || f3 === 1 / 0 || f3 <= 0 ? 1 : f3, { r: d3 / g3 + o3, y: h3 / g3 + o3, b: l3 / g3 + o3 });
+ return H(t2, "a") && (p3.a = t2.a), p3;
+ }) : null;
+ function E2(e3) {
+ var n3 = r2 === i.ADDITIVE ? { r: 0, g: 0, b: 0, a: 0 } : { r: 0, y: 0, b: 0, a: 0 };
+ return e3.reduce(function(e4, n4) {
+ var o3 = H(n4, "a") ? n4.a : 1, a3 = { r: Math.min(e4.r + n4.r * o3, 255), b: Math.min(e4.b + n4.b * o3, 255), a: 1 - (1 - o3) * (1 - e4.a) }, u3 = "g" in e4 ? e4.g : e4.y, c3 = "g" in n4 ? n4.g : n4.y;
+ return t(t({}, a3), r2 === i.ADDITIVE ? { g: Math.min(u3 + c3 * o3, 255) } : { y: Math.min(u3 + c3 * o3, 255) });
+ }, n3);
+ }
+ if (r2 === i.ADDITIVE)
+ n2 = E2(y2);
+ else {
+ var v2 = E2(A2);
+ o2 = v2.r, a2 = v2.y, u2 = v2.b, c2 = Math.min(o2, a2, u2), s2 = Math.min(255 - o2, 255 - a2, 255 - u2), d2 = o2 - c2, h2 = a2 - c2, l2 = u2 - c2, f2 = Math.min(h2, l2), g2 = d2 + h2 - f2, p2 = h2 + f2, b2 = 2 * (l2 - f2), F2 = Math.max(g2, p2, b2) / Math.max(d2, h2, l2), m2 = isNaN(F2) || F2 === 1 / 0 || F2 <= 0 ? 1 : F2, (n2 = { r: g2 / m2 + s2, g: p2 / m2 + s2, b: b2 / m2 + s2 }).a = v2.a;
+ }
+ return { r: G(n2.r), g: G(n2.g), b: G(n2.b), a: k(n2.a, 0, 1) };
} })[r.HEX] = function(t2, e2, r2) {
- var n2 = this.mix(t2, e2);
- return delete n2.a, r2 ? w.HEX(n2) : et.HEX(n2);
+ var n2 = this.mix(t2, e2);
+ return delete n2.a, r2 ? w.HEX(n2) : et.HEX(n2);
}, l.HEXA = function(t2, e2, r2) {
- var n2 = this.mix(t2, e2);
- return n2.a = r2 ? 255 * N(n2.a) : N(n2.a), r2 ? w.HEX(n2) : et.HEXA(n2);
+ var n2 = this.mix(t2, e2);
+ return n2.a = r2 ? 255 * N(n2.a) : N(n2.a), r2 ? w.HEX(n2) : et.HEXA(n2);
}, l[r.RGB] = function(t2, e2, r2, n2) {
- var i2 = this.mix(t2, e2);
- return delete i2.a, r2 ? w.RGB(i2) : et.RGB(i2, n2);
+ var i2 = this.mix(t2, e2);
+ return delete i2.a, r2 ? w.RGB(i2) : et.RGB(i2, n2);
}, l.RGBA = function(t2, e2, r2, n2) {
- var i2 = this.mix(t2, e2);
- return r2 ? w.RGB(i2) : et.RGBA(i2, n2);
+ var i2 = this.mix(t2, e2);
+ return r2 ? w.RGB(i2) : et.RGBA(i2, n2);
}, l[r.HSL] = function(t2, e2, r2, n2) {
- var i2 = this.mix(t2, e2), o2 = K(i2.r, i2.g, i2.b);
- return delete i2.a, delete o2.a, r2 ? w.HSL(o2) : et.HSL(i2, n2);
+ var i2 = this.mix(t2, e2), o2 = K(i2.r, i2.g, i2.b);
+ return delete i2.a, delete o2.a, r2 ? w.HSL(o2) : et.HSL(i2, n2);
}, l.HSLA = function(t2, e2, r2, n2) {
- var i2 = this.mix(t2, e2), o2 = K(i2.r, i2.g, i2.b, i2.a);
- return r2 ? w.HSL(o2) : et.HSLA(i2, n2);
+ var i2 = this.mix(t2, e2), o2 = K(i2.r, i2.g, i2.b, i2.a);
+ return r2 ? w.HSL(o2) : et.HSLA(i2, n2);
}, l);
var ot = function(e2, r2) {
- return t({ r: G(e2.r, r2), g: G(e2.g, r2), b: G(e2.b, r2) }, H(e2, "a") ? { a: G(e2.a, r2) } : {});
+ return t({ r: G(e2.r, r2), g: G(e2.g, r2), b: G(e2.b, r2) }, H(e2, "a") ? { a: G(e2.a, r2) } : {});
};
var at = function(e2, r2) {
- return t({ h: G(e2.h, r2), s: G(e2.s, r2), l: G(e2.l, r2) }, H(e2, "a") ? { a: G(e2.a, r2) } : {});
+ return t({ h: G(e2.h, r2), s: G(e2.s, r2), l: G(e2.l, r2) }, H(e2, "a") ? { a: G(e2.a, r2) } : {});
};
var ut = function(t2, e2) {
- return { c: G(t2.c, e2), m: G(t2.m, e2), y: G(t2.y, e2), k: G(t2.k, e2) };
+ return { c: G(t2.c, e2), m: G(t2.m, e2), y: G(t2.y, e2), k: G(t2.k, e2) };
};
var ct = function(t2, e2, r2, n2, i2, o2) {
- var a2 = i2(tt(t2, e2), n2);
- return r2 ? o2(a2) : a2;
+ var a2 = i2(tt(t2, e2), n2);
+ return r2 ? o2(a2) : a2;
};
var st = function(t2, e2, r2, n2, i2, o2, a2) {
- r2 < 1 && (r2 = 5);
- var u2 = function(t3, e3, r3) {
- var n3 = r3 - 1, i3 = (e3.r - t3.r) / n3, o3 = (e3.g - t3.g) / n3, a3 = (e3.b - t3.b) / n3, u3 = N(t3.a), c2 = (N(e3.a) - u3) / n3;
- return Array(r3).fill(null).map(function(r4, s2) {
- return 0 === s2 ? t3 : s2 === n3 ? e3 : { r: G(t3.r + i3 * s2), g: G(t3.g + o3 * s2), b: G(t3.b + a3 * s2), a: G(u3 + c2 * s2) };
- });
- }(tt(t2), tt(e2), r2);
- return u2.map(function(t3) {
- var e3 = o2(t3, i2);
- return n2 ? a2(e3) : e3;
- });
+ r2 < 1 && (r2 = 5);
+ var u2 = function(t3, e3, r3) {
+ var n3 = r3 - 1, i3 = (e3.r - t3.r) / n3, o3 = (e3.g - t3.g) / n3, a3 = (e3.b - t3.b) / n3, u3 = N(t3.a), c2 = (N(e3.a) - u3) / n3;
+ return Array(r3).fill(null).map(function(r4, s2) {
+ return 0 === s2 ? t3 : s2 === n3 ? e3 : { r: G(t3.r + i3 * s2), g: G(t3.g + o3 * s2), b: G(t3.b + a3 * s2), a: G(u3 + c2 * s2) };
+ });
+ }(tt(t2), tt(e2), r2);
+ return u2.map(function(t3) {
+ var e3 = o2(t3, i2);
+ return n2 ? a2(e3) : e3;
+ });
};
var dt = function() {
- function e2(t2, e3) {
- void 0 === e3 && (e3 = 6), this.rgb = tt(t2), this._decimals = e3, this.updateHSL(), this.updateCMYK();
- }
- return e2.prototype.updateRGB = function() {
- this.rgb = t(t({}, X(this.hsl.h, this.hsl.s, this.hsl.l)), { a: this.hsl.a });
- }, e2.prototype.updateRGBFromCMYK = function() {
- this.rgb = t(t({}, Y(this.cmyk.c, this.cmyk.m, this.cmyk.y, this.cmyk.k)), { a: this.rgb.a });
- }, e2.prototype.updateHSL = function() {
- this.hsl = K(this.rgb.r, this.rgb.g, this.rgb.b, this.rgb.a);
- }, e2.prototype.updateCMYK = function() {
- this.cmyk = j(this.rgb.r, this.rgb.g, this.rgb.b);
- }, e2.prototype.updateRGBAndCMYK = function() {
- return this.updateRGB(), this.updateCMYK(), this;
- }, e2.prototype.updateHSLAndCMYK = function() {
- return this.updateHSL(), this.updateCMYK(), this;
- }, e2.prototype.updateRGBAndHSL = function() {
- return this.updateRGBFromCMYK(), this.updateHSL(), this;
- }, e2.prototype.setDecimals = function(t2) {
- return this._decimals = t2, this;
- }, e2.prototype.setH = function(t2) {
- return this.hsl.h = x(t2), this.updateRGBAndCMYK();
- }, e2.prototype.setS = function(t2) {
- return this.hsl.s = k(t2, 0, 100), this.updateRGBAndCMYK();
- }, e2.prototype.setL = function(t2) {
- return this.hsl.l = k(t2, 0, 100), this.updateRGBAndCMYK();
- }, e2.prototype.setR = function(t2) {
- return this.rgb.r = k(t2, 0, 255), this.updateHSLAndCMYK();
- }, e2.prototype.setG = function(t2) {
- return this.rgb.g = k(t2, 0, 255), this.updateHSLAndCMYK();
- }, e2.prototype.setB = function(t2) {
- return this.rgb.b = k(t2, 0, 255), this.updateHSLAndCMYK();
- }, e2.prototype.setA = function(t2) {
- return this.hsl.a = this.rgb.a = k(t2, 0, 1), this;
- }, e2.prototype.setC = function(t2) {
- return this.cmyk.c = k(t2, 0, 100), this.updateRGBAndHSL();
- }, e2.prototype.setM = function(t2) {
- return this.cmyk.m = k(t2, 0, 100), this.updateRGBAndHSL();
- }, e2.prototype.setY = function(t2) {
- return this.cmyk.y = k(t2, 0, 100), this.updateRGBAndHSL();
- }, e2.prototype.setK = function(t2) {
- return this.cmyk.k = k(t2, 0, 100), this.updateRGBAndHSL();
- }, Object.defineProperty(e2.prototype, "decimals", { get: function() {
- return this._decimals;
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "H", { get: function() {
- return G(this.hsl.h, this.decimals);
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "S", { get: function() {
- return G(this.hsl.s, this.decimals);
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "L", { get: function() {
- return G(this.hsl.l, this.decimals);
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "R", { get: function() {
- return G(this.rgb.r, this.decimals);
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "G", { get: function() {
- return G(this.rgb.g, this.decimals);
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "B", { get: function() {
- return G(this.rgb.b, this.decimals);
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "A", { get: function() {
- return G(this.hsl.a, this.decimals);
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "C", { get: function() {
- return G(this.cmyk.c, this.decimals);
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "M", { get: function() {
- return G(this.cmyk.m, this.decimals);
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "Y", { get: function() {
- return G(this.cmyk.y, this.decimals);
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "K", { get: function() {
- return G(this.cmyk.k, this.decimals);
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "HEXObject", { get: function() {
- return et.HEX(this.rgb);
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "HEXAObject", { get: function() {
- return et.HEXA(this.rgb);
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "RGBObject", { get: function() {
- return { r: this.R, g: this.G, b: this.B };
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "RGBAObject", { get: function() {
- return t(t({}, this.RGBObject), { a: this.A });
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "HSLObject", { get: function() {
- return { h: this.H, s: this.S, l: this.L };
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "HSLAObject", { get: function() {
- return t(t({}, this.HSLObject), { a: this.A });
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "CMYKObject", { get: function() {
- return { c: this.C, m: this.M, y: this.Y, k: this.K };
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "CMYKAObject", { get: function() {
- return t(t({}, this.CMYKObject), { a: this.A });
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "HEX", { get: function() {
- return w.HEX({ r: this.R, g: this.G, b: this.B });
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "HEXA", { get: function() {
- return w.HEX({ r: this.R, g: this.G, b: this.B, a: 255 * this.A });
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "RGB", { get: function() {
- return w.RGB({ r: this.R, g: this.G, b: this.B });
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "RGBA", { get: function() {
- return w.RGB({ r: this.R, g: this.G, b: this.B, a: this.A });
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "HSL", { get: function() {
- return w.HSL({ h: this.H, s: this.S, l: this.L });
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "HSLA", { get: function() {
- return w.HSL({ h: this.H, s: this.S, l: this.L, a: this.A });
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "CMYK", { get: function() {
- return w.CMYK({ c: this.C, m: this.M, y: this.Y, k: this.K });
- }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "CMYKA", { get: function() {
- return w.CMYK({ c: this.C, m: this.M, y: this.Y, k: this.K, a: this.A });
- }, enumerable: false, configurable: true }), e2.toHEX = function(t2, e3) {
- void 0 === e3 && (e3 = true);
- var r2 = J(t2);
- return ct(t2, r2, e3, 0, et.HEX, w.HEX);
- }, e2.toHEXA = function(t2, e3) {
- void 0 === e3 && (e3 = true);
- var r2 = J(t2);
- return ct(t2, r2, e3, 0, et.HEXA, w.HEX);
- }, e2.toRGB = function(t2, e3, r2) {
- void 0 === e3 && (e3 = true), void 0 === r2 && (r2 = 6);
- var n2 = J(t2);
- return ct(t2, n2, e3, r2, et.RGB, w.RGB);
- }, e2.toRGBA = function(t2, e3, r2) {
- void 0 === e3 && (e3 = true), void 0 === r2 && (r2 = 6);
- var n2 = J(t2);
- return ct(t2, n2, e3, r2, et.RGBA, w.RGB);
- }, e2.toHSL = function(t2, e3, r2) {
- void 0 === e3 && (e3 = true), void 0 === r2 && (r2 = 6);
- var n2 = J(t2);
- return ct(t2, n2, e3, r2, et.HSL, w.HSL);
- }, e2.toHSLA = function(t2, e3, r2) {
- void 0 === e3 && (e3 = true), void 0 === r2 && (r2 = 6);
- var n2 = J(t2);
- return ct(t2, n2, e3, r2, et.HSLA, w.HSL);
- }, e2.toCMYK = function(t2, e3, r2) {
- void 0 === e3 && (e3 = true), void 0 === r2 && (r2 = 6);
- var n2 = J(t2);
- return ct(t2, n2, e3, r2, et.CMYK, w.CMYK);
- }, e2.toCMYKA = function(t2, e3, r2) {
- void 0 === e3 && (e3 = true), void 0 === r2 && (r2 = 6);
- var n2 = J(t2);
- return ct(t2, n2, e3, r2, et.CMYKA, w.CMYK);
- }, e2.getBlendHEX = function(t2, e3, r2, n2, i2) {
- return void 0 === r2 && (r2 = 5), void 0 === n2 && (n2 = true), void 0 === i2 && (i2 = 6), st(t2, e3, r2, n2, i2, et.HEX, w.HEX);
- }, e2.getBlendHEXA = function(t2, e3, r2, n2, i2) {
- return void 0 === r2 && (r2 = 5), void 0 === n2 && (n2 = true), void 0 === i2 && (i2 = 6), st(t2, e3, r2, n2, i2, et.HEXA, w.HEX);
- }, e2.getBlendRGB = function(t2, e3, r2, n2, i2) {
- return void 0 === r2 && (r2 = 5), void 0 === n2 && (n2 = true), void 0 === i2 && (i2 = 6), st(t2, e3, r2, n2, i2, et.RGB, w.RGB);
- }, e2.getBlendRGBA = function(t2, e3, r2, n2, i2) {
- return void 0 === r2 && (r2 = 5), void 0 === n2 && (n2 = true), void 0 === i2 && (i2 = 6), st(t2, e3, r2, n2, i2, et.RGBA, w.RGB);
- }, e2.getBlendHSL = function(t2, e3, r2, n2, i2) {
- return void 0 === r2 && (r2 = 5), void 0 === n2 && (n2 = true), void 0 === i2 && (i2 = 6), st(t2, e3, r2, n2, i2, et.HSL, w.HSL);
- }, e2.getBlendHSLA = function(t2, e3, r2, n2, i2) {
- return void 0 === r2 && (r2 = 5), void 0 === n2 && (n2 = true), void 0 === i2 && (i2 = 6), st(t2, e3, r2, n2, i2, et.HSLA, w.HSL);
- }, e2.getMixHEX = function(t2, e3, r2) {
- return void 0 === e3 && (e3 = i.ADDITIVE), void 0 === r2 && (r2 = true), it.HEX(t2, e3, r2);
- }, e2.getMixHEXA = function(t2, e3, r2) {
- return void 0 === e3 && (e3 = i.ADDITIVE), void 0 === r2 && (r2 = true), it.HEXA(t2, e3, r2);
- }, e2.getMixRGB = function(t2, e3, r2, n2) {
- return void 0 === e3 && (e3 = i.ADDITIVE), void 0 === r2 && (r2 = true), void 0 === n2 && (n2 = 6), it.RGB(t2, e3, r2, n2);
- }, e2.getMixRGBA = function(t2, e3, r2, n2) {
- return void 0 === e3 && (e3 = i.ADDITIVE), void 0 === r2 && (r2 = true), void 0 === n2 && (n2 = 6), it.RGBA(t2, e3, r2, n2);
- }, e2.getMixHSL = function(t2, e3, r2, n2) {
- return void 0 === e3 && (e3 = i.ADDITIVE), void 0 === r2 && (r2 = true), void 0 === n2 && (n2 = 6), it.HSL(t2, e3, r2, n2);
- }, e2.getMixHSLA = function(t2, e3, r2, n2) {
- return void 0 === e3 && (e3 = i.ADDITIVE), void 0 === r2 && (r2 = true), void 0 === n2 && (n2 = 6), it.HSLA(t2, e3, r2, n2);
- }, e2.getShades = function(t2, e3, r2) {
- return void 0 === r2 && (r2 = 6), rt(t2, e3, true, r2);
- }, e2.getTints = function(t2, e3, r2) {
- return void 0 === r2 && (r2 = 6), rt(t2, e3, false, r2);
- }, e2.getHarmony = function(t2, e3, r2, o2) {
- return void 0 === e3 && (e3 = n.COMPLEMENTARY), void 0 === r2 && (r2 = i.ADDITIVE), void 0 === o2 && (o2 = 6), function(t3, e4, r3, i2) {
- var o3;
- return (o3 = {}, o3[n.ANALOGOUS] = nt.buildHarmony(e4, U, i2, r3), o3[n.COMPLEMENTARY] = nt.buildHarmony(e4, q, i2, r3), o3[n.SPLIT_COMPLEMENTARY] = nt.buildHarmony(e4, $, i2, r3), o3[n.TRIADIC] = nt.buildHarmony(e4, _, i2, r3), o3[n.TETRADIC] = nt.buildHarmony(e4, Q, i2, r3), o3[n.SQUARE] = nt.buildHarmony(e4, z, i2, r3), o3)[t3];
- }(e3, t2, o2, r2);
- }, e2;
+ function e2(t2, e3) {
+ void 0 === e3 && (e3 = 6), this.rgb = tt(t2), this._decimals = e3, this.updateHSL(), this.updateCMYK();
+ }
+ return e2.prototype.updateRGB = function() {
+ this.rgb = t(t({}, X(this.hsl.h, this.hsl.s, this.hsl.l)), { a: this.hsl.a });
+ }, e2.prototype.updateRGBFromCMYK = function() {
+ this.rgb = t(t({}, Y(this.cmyk.c, this.cmyk.m, this.cmyk.y, this.cmyk.k)), { a: this.rgb.a });
+ }, e2.prototype.updateHSL = function() {
+ this.hsl = K(this.rgb.r, this.rgb.g, this.rgb.b, this.rgb.a);
+ }, e2.prototype.updateCMYK = function() {
+ this.cmyk = j(this.rgb.r, this.rgb.g, this.rgb.b);
+ }, e2.prototype.updateRGBAndCMYK = function() {
+ return this.updateRGB(), this.updateCMYK(), this;
+ }, e2.prototype.updateHSLAndCMYK = function() {
+ return this.updateHSL(), this.updateCMYK(), this;
+ }, e2.prototype.updateRGBAndHSL = function() {
+ return this.updateRGBFromCMYK(), this.updateHSL(), this;
+ }, e2.prototype.setDecimals = function(t2) {
+ return this._decimals = t2, this;
+ }, e2.prototype.setH = function(t2) {
+ return this.hsl.h = x(t2), this.updateRGBAndCMYK();
+ }, e2.prototype.setS = function(t2) {
+ return this.hsl.s = k(t2, 0, 100), this.updateRGBAndCMYK();
+ }, e2.prototype.setL = function(t2) {
+ return this.hsl.l = k(t2, 0, 100), this.updateRGBAndCMYK();
+ }, e2.prototype.setR = function(t2) {
+ return this.rgb.r = k(t2, 0, 255), this.updateHSLAndCMYK();
+ }, e2.prototype.setG = function(t2) {
+ return this.rgb.g = k(t2, 0, 255), this.updateHSLAndCMYK();
+ }, e2.prototype.setB = function(t2) {
+ return this.rgb.b = k(t2, 0, 255), this.updateHSLAndCMYK();
+ }, e2.prototype.setA = function(t2) {
+ return this.hsl.a = this.rgb.a = k(t2, 0, 1), this;
+ }, e2.prototype.setC = function(t2) {
+ return this.cmyk.c = k(t2, 0, 100), this.updateRGBAndHSL();
+ }, e2.prototype.setM = function(t2) {
+ return this.cmyk.m = k(t2, 0, 100), this.updateRGBAndHSL();
+ }, e2.prototype.setY = function(t2) {
+ return this.cmyk.y = k(t2, 0, 100), this.updateRGBAndHSL();
+ }, e2.prototype.setK = function(t2) {
+ return this.cmyk.k = k(t2, 0, 100), this.updateRGBAndHSL();
+ }, Object.defineProperty(e2.prototype, "decimals", { get: function() {
+ return this._decimals;
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "H", { get: function() {
+ return G(this.hsl.h, this.decimals);
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "S", { get: function() {
+ return G(this.hsl.s, this.decimals);
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "L", { get: function() {
+ return G(this.hsl.l, this.decimals);
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "R", { get: function() {
+ return G(this.rgb.r, this.decimals);
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "G", { get: function() {
+ return G(this.rgb.g, this.decimals);
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "B", { get: function() {
+ return G(this.rgb.b, this.decimals);
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "A", { get: function() {
+ return G(this.hsl.a, this.decimals);
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "C", { get: function() {
+ return G(this.cmyk.c, this.decimals);
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "M", { get: function() {
+ return G(this.cmyk.m, this.decimals);
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "Y", { get: function() {
+ return G(this.cmyk.y, this.decimals);
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "K", { get: function() {
+ return G(this.cmyk.k, this.decimals);
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "HEXObject", { get: function() {
+ return et.HEX(this.rgb);
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "HEXAObject", { get: function() {
+ return et.HEXA(this.rgb);
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "RGBObject", { get: function() {
+ return { r: this.R, g: this.G, b: this.B };
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "RGBAObject", { get: function() {
+ return t(t({}, this.RGBObject), { a: this.A });
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "HSLObject", { get: function() {
+ return { h: this.H, s: this.S, l: this.L };
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "HSLAObject", { get: function() {
+ return t(t({}, this.HSLObject), { a: this.A });
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "CMYKObject", { get: function() {
+ return { c: this.C, m: this.M, y: this.Y, k: this.K };
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "CMYKAObject", { get: function() {
+ return t(t({}, this.CMYKObject), { a: this.A });
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "HEX", { get: function() {
+ return w.HEX({ r: this.R, g: this.G, b: this.B });
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "HEXA", { get: function() {
+ return w.HEX({ r: this.R, g: this.G, b: this.B, a: 255 * this.A });
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "RGB", { get: function() {
+ return w.RGB({ r: this.R, g: this.G, b: this.B });
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "RGBA", { get: function() {
+ return w.RGB({ r: this.R, g: this.G, b: this.B, a: this.A });
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "HSL", { get: function() {
+ return w.HSL({ h: this.H, s: this.S, l: this.L });
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "HSLA", { get: function() {
+ return w.HSL({ h: this.H, s: this.S, l: this.L, a: this.A });
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "CMYK", { get: function() {
+ return w.CMYK({ c: this.C, m: this.M, y: this.Y, k: this.K });
+ }, enumerable: false, configurable: true }), Object.defineProperty(e2.prototype, "CMYKA", { get: function() {
+ return w.CMYK({ c: this.C, m: this.M, y: this.Y, k: this.K, a: this.A });
+ }, enumerable: false, configurable: true }), e2.toHEX = function(t2, e3) {
+ void 0 === e3 && (e3 = true);
+ var r2 = J(t2);
+ return ct(t2, r2, e3, 0, et.HEX, w.HEX);
+ }, e2.toHEXA = function(t2, e3) {
+ void 0 === e3 && (e3 = true);
+ var r2 = J(t2);
+ return ct(t2, r2, e3, 0, et.HEXA, w.HEX);
+ }, e2.toRGB = function(t2, e3, r2) {
+ void 0 === e3 && (e3 = true), void 0 === r2 && (r2 = 6);
+ var n2 = J(t2);
+ return ct(t2, n2, e3, r2, et.RGB, w.RGB);
+ }, e2.toRGBA = function(t2, e3, r2) {
+ void 0 === e3 && (e3 = true), void 0 === r2 && (r2 = 6);
+ var n2 = J(t2);
+ return ct(t2, n2, e3, r2, et.RGBA, w.RGB);
+ }, e2.toHSL = function(t2, e3, r2) {
+ void 0 === e3 && (e3 = true), void 0 === r2 && (r2 = 6);
+ var n2 = J(t2);
+ return ct(t2, n2, e3, r2, et.HSL, w.HSL);
+ }, e2.toHSLA = function(t2, e3, r2) {
+ void 0 === e3 && (e3 = true), void 0 === r2 && (r2 = 6);
+ var n2 = J(t2);
+ return ct(t2, n2, e3, r2, et.HSLA, w.HSL);
+ }, e2.toCMYK = function(t2, e3, r2) {
+ void 0 === e3 && (e3 = true), void 0 === r2 && (r2 = 6);
+ var n2 = J(t2);
+ return ct(t2, n2, e3, r2, et.CMYK, w.CMYK);
+ }, e2.toCMYKA = function(t2, e3, r2) {
+ void 0 === e3 && (e3 = true), void 0 === r2 && (r2 = 6);
+ var n2 = J(t2);
+ return ct(t2, n2, e3, r2, et.CMYKA, w.CMYK);
+ }, e2.getBlendHEX = function(t2, e3, r2, n2, i2) {
+ return void 0 === r2 && (r2 = 5), void 0 === n2 && (n2 = true), void 0 === i2 && (i2 = 6), st(t2, e3, r2, n2, i2, et.HEX, w.HEX);
+ }, e2.getBlendHEXA = function(t2, e3, r2, n2, i2) {
+ return void 0 === r2 && (r2 = 5), void 0 === n2 && (n2 = true), void 0 === i2 && (i2 = 6), st(t2, e3, r2, n2, i2, et.HEXA, w.HEX);
+ }, e2.getBlendRGB = function(t2, e3, r2, n2, i2) {
+ return void 0 === r2 && (r2 = 5), void 0 === n2 && (n2 = true), void 0 === i2 && (i2 = 6), st(t2, e3, r2, n2, i2, et.RGB, w.RGB);
+ }, e2.getBlendRGBA = function(t2, e3, r2, n2, i2) {
+ return void 0 === r2 && (r2 = 5), void 0 === n2 && (n2 = true), void 0 === i2 && (i2 = 6), st(t2, e3, r2, n2, i2, et.RGBA, w.RGB);
+ }, e2.getBlendHSL = function(t2, e3, r2, n2, i2) {
+ return void 0 === r2 && (r2 = 5), void 0 === n2 && (n2 = true), void 0 === i2 && (i2 = 6), st(t2, e3, r2, n2, i2, et.HSL, w.HSL);
+ }, e2.getBlendHSLA = function(t2, e3, r2, n2, i2) {
+ return void 0 === r2 && (r2 = 5), void 0 === n2 && (n2 = true), void 0 === i2 && (i2 = 6), st(t2, e3, r2, n2, i2, et.HSLA, w.HSL);
+ }, e2.getMixHEX = function(t2, e3, r2) {
+ return void 0 === e3 && (e3 = i.ADDITIVE), void 0 === r2 && (r2 = true), it.HEX(t2, e3, r2);
+ }, e2.getMixHEXA = function(t2, e3, r2) {
+ return void 0 === e3 && (e3 = i.ADDITIVE), void 0 === r2 && (r2 = true), it.HEXA(t2, e3, r2);
+ }, e2.getMixRGB = function(t2, e3, r2, n2) {
+ return void 0 === e3 && (e3 = i.ADDITIVE), void 0 === r2 && (r2 = true), void 0 === n2 && (n2 = 6), it.RGB(t2, e3, r2, n2);
+ }, e2.getMixRGBA = function(t2, e3, r2, n2) {
+ return void 0 === e3 && (e3 = i.ADDITIVE), void 0 === r2 && (r2 = true), void 0 === n2 && (n2 = 6), it.RGBA(t2, e3, r2, n2);
+ }, e2.getMixHSL = function(t2, e3, r2, n2) {
+ return void 0 === e3 && (e3 = i.ADDITIVE), void 0 === r2 && (r2 = true), void 0 === n2 && (n2 = 6), it.HSL(t2, e3, r2, n2);
+ }, e2.getMixHSLA = function(t2, e3, r2, n2) {
+ return void 0 === e3 && (e3 = i.ADDITIVE), void 0 === r2 && (r2 = true), void 0 === n2 && (n2 = 6), it.HSLA(t2, e3, r2, n2);
+ }, e2.getShades = function(t2, e3, r2) {
+ return void 0 === r2 && (r2 = 6), rt(t2, e3, true, r2);
+ }, e2.getTints = function(t2, e3, r2) {
+ return void 0 === r2 && (r2 = 6), rt(t2, e3, false, r2);
+ }, e2.getHarmony = function(t2, e3, r2, o2) {
+ return void 0 === e3 && (e3 = n.COMPLEMENTARY), void 0 === r2 && (r2 = i.ADDITIVE), void 0 === o2 && (o2 = 6), function(t3, e4, r3, i2) {
+ var o3;
+ return (o3 = {}, o3[n.ANALOGOUS] = nt.buildHarmony(e4, U, i2, r3), o3[n.COMPLEMENTARY] = nt.buildHarmony(e4, q, i2, r3), o3[n.SPLIT_COMPLEMENTARY] = nt.buildHarmony(e4, $, i2, r3), o3[n.TRIADIC] = nt.buildHarmony(e4, _, i2, r3), o3[n.TETRADIC] = nt.buildHarmony(e4, Q, i2, r3), o3[n.SQUARE] = nt.buildHarmony(e4, z, i2, r3), o3)[t3];
+ }(e3, t2, o2, r2);
+ }, e2;
}();
// src/SettingsTab.ts
var DISPLAY_OPTIONS = {
- "none": "Never",
- "title_only": "Title Only",
- "always": "Always"
+ "none": "Never",
+ "title_only": "Title Only",
+ "always": "Always"
};
var SettingsTab = class extends import_obsidian2.PluginSettingTab {
- constructor(app, plugin) {
- super(app, plugin);
- this.plugin = plugin;
- this.pickrs = {};
- this.disableableComponents = {};
- }
- /**
- * Builds the html page that is showed in the settings.
- */
- display() {
- const { containerEl } = this;
- containerEl.empty();
- containerEl.createEl("h2", { text: "Settings for the Codeblock Customizer Plugin." });
- this.disableableComponents = {
- "lineNumbers": [],
- "headerLanguageTags": [],
- "headerLanguageIcons": [],
- "editorActiveLineHighlight": [],
- "codeblockActiveLineHighlight": [],
- "gradientHighlighting": []
- };
- new import_obsidian2.Setting(containerEl).setName("Exclude Languages").setDesc("Define languages in a comma separated list on which the plugin should not apply. You can use a wildcard (*) either at the beginning, or at the end. For example: ad-* will exclude codeblocks where the language starts with ad- e.g.: ad-info, ad-error etc.").addText((text) => text.setPlaceholder("e.g. dataview, python etc.").setValue(this.plugin.settings.excludedLangs).onChange((value) => {
- this.plugin.settings.excludedLangs = value;
- (async () => {
- await this.plugin.saveSettings();
- })();
- }));
- containerEl.createEl("h3", { text: "Theme Settings" });
- let themeDropdown;
- new import_obsidian2.Setting(containerEl).setName("Select Theme").addDropdown((dropdown) => {
- themeDropdown = dropdown;
- this.updateDropdown(themeDropdown, this.plugin.settings);
- themeDropdown.onChange((value) => {
- this.plugin.settings.selectedTheme = value;
- this.plugin.settings.currentTheme = structuredClone(this.plugin.settings.themes[this.plugin.settings.selectedTheme]);
- this.updatePickrColors();
- this.updateAlternativeHighlights(alternativeHighlightsContainer);
- (async () => {
- await this.plugin.saveSettings();
- })();
- });
- ;
- }).addExtraButton((button) => {
- button.setTooltip("Update theme");
- button.setIcon("arrow-up");
- button.onClick(() => {
- if (this.plugin.settings.selectedTheme in DEFAULT_SETTINGS.themes)
- new import_obsidian2.Notice("You cannot update the default themes");
- else {
- this.plugin.settings.themes[this.plugin.settings.selectedTheme] = structuredClone(this.plugin.settings.currentTheme);
- this.updateAlternativeHighlights(alternativeHighlightsContainer);
- new import_obsidian2.Notice(`${this.plugin.settings.selectedTheme} theme saved successfully!`);
- (async () => {
- await this.plugin.saveSettings();
- })();
- }
- });
- }).addExtraButton((button) => {
- button.setTooltip("Delete theme");
- button.setIcon("trash");
- button.onClick(() => {
- if (this.plugin.settings.selectedTheme.trim().length === 0) {
- new import_obsidian2.Notice("Select a theme first to delete");
- } else if (this.plugin.settings.newTheme.name in DEFAULT_SETTINGS.themes) {
- new import_obsidian2.Notice("You cannot delete the default themes");
- } else {
- if (this.plugin.settings.defaultTheme === this.plugin.settings.selectedTheme)
- this.plugin.settings.defaultTheme = "Default";
- delete this.plugin.settings.themes[this.plugin.settings.selectedTheme];
- new import_obsidian2.Notice(`${this.plugin.settings.selectedTheme} theme deleted successfully!`);
- this.plugin.settings.selectedTheme = "Default";
- this.plugin.settings.currentTheme = structuredClone(this.plugin.settings.themes[this.plugin.settings.selectedTheme]);
- this.updateDropdown(themeDropdown, this.plugin.settings);
- this.updatePickrColors();
- this.updateAlternativeHighlights(alternativeHighlightsContainer);
- (async () => {
- await this.plugin.saveSettings();
- })();
- }
- });
- });
- let newThemeName;
- this.plugin.settings.newTheme = NEW_THEME_DEFAULT;
- new import_obsidian2.Setting(containerEl).setName("Add New Theme").setDesc("Create a new theme from the current settings.").addText((text) => {
- newThemeName = text.setPlaceholder("New theme name").setValue(this.plugin.settings.newTheme.name).onChange((value) => {
- this.plugin.settings.newTheme.name = value;
- });
- }).addToggle((toggle) => {
- return toggle.setTooltip("Save as the default theme").setValue(false).onChange((value) => {
- this.plugin.settings.newTheme.default = value;
- });
- }).addExtraButton((button) => {
- button.setTooltip("Save theme");
- button.setIcon("plus");
- button.onClick(() => {
- if (this.plugin.settings.newTheme.name.trim().length === 0) {
- new import_obsidian2.Notice("Set a name for your theme");
- } else if (this.plugin.settings.newTheme.name in DEFAULT_SETTINGS.themes) {
- new import_obsidian2.Notice("You can't overwrite the default themes");
- } else {
- if (this.plugin.settings.newTheme.name in this.plugin.settings.themes) {
- this.plugin.settings.themes[this.plugin.settings.newTheme.name] = structuredClone(this.plugin.settings.currentTheme);
- new import_obsidian2.Notice(`${this.plugin.settings.newTheme.name} theme updated successfully!`);
- } else {
- this.plugin.settings.themes[this.plugin.settings.newTheme.name] = structuredClone(this.plugin.settings.currentTheme);
- new import_obsidian2.Notice(`${this.plugin.settings.newTheme.name} theme saved successfully!`);
- }
- this.plugin.settings.selectedTheme = this.plugin.settings.newTheme.name;
- if (this.plugin.settings.newTheme.default)
- this.plugin.settings.defaultTheme = this.plugin.settings.selectedTheme;
- this.updateDropdown(themeDropdown, this.plugin.settings);
- this.updateAlternativeHighlights(alternativeHighlightsContainer);
- this.plugin.settings.newTheme = NEW_THEME_DEFAULT;
- newThemeName.setValue("");
- (async () => {
- await this.plugin.saveSettings();
- })();
- }
- });
- });
- containerEl.createEl("h4", { text: "Codeblock Appearance" });
- new import_obsidian2.Setting(containerEl).setName("Codeblock Background Color").then((setting) => {
- this.createPickr(
- this.plugin,
- containerEl,
- setting,
- "codeblock_background",
- (relevantThemeColors) => relevantThemeColors[getCurrentMode()].codeblock.backgroundColor,
- (relevantThemeColors, saveColor) => {
- relevantThemeColors[getCurrentMode()].codeblock.backgroundColor = saveColor;
- }
- );
- });
- new import_obsidian2.Setting(containerEl).setName("Codeblock Text Color").then((setting) => {
- this.createPickr(
- this.plugin,
- containerEl,
- setting,
- "codeblock_text",
- (relevantThemeColors) => relevantThemeColors[getCurrentMode()].codeblock.textColor,
- (relevantThemeColors, saveColor) => {
- relevantThemeColors[getCurrentMode()].codeblock.textColor = saveColor;
- }
- );
- });
- new import_obsidian2.Setting(containerEl).setName("Codeblock Curvature").setDesc("Determines how rounded the codeblocks appear in pixels.").then((setting) => {
- let resettableSlider;
- setting.addSlider((slider) => {
- resettableSlider = slider.setLimits(0, 25, 1).setValue(this.plugin.settings.currentTheme.settings.codeblock.curvature).setDynamicTooltip().onChange((value) => {
- this.plugin.settings.currentTheme.settings.codeblock.curvature = value;
- (async () => {
- await this.plugin.saveSettings();
- })();
- });
- });
- setting.addExtraButton((button) => {
- button.setIcon("reset").onClick(() => {
- this.plugin.settings.currentTheme.settings.codeblock.curvature = this.plugin.settings.themes[this.plugin.settings.selectedTheme].settings.codeblock.curvature;
- resettableSlider.setValue(this.plugin.settings.currentTheme.settings.codeblock.curvature);
- (async () => {
- await this.plugin.saveSettings();
- })();
- }).setTooltip("Restore default icon size");
- });
- });
- containerEl.createEl("h4", { text: "Gutter Appearance" });
- new import_obsidian2.Setting(containerEl).setName("Enable Line Numbers").setDesc("If disabled, the below settings are disabled too.").addToggle((toggle) => toggle.setValue(this.plugin.settings.currentTheme.settings.codeblock.lineNumbers).onChange((value) => {
- this.plugin.settings.currentTheme.settings.codeblock.lineNumbers = value;
- this.disableableComponents["lineNumbers"].forEach((component) => {
- component.setDisabled(!value);
- });
- (async () => {
- await this.plugin.saveSettings();
- })();
- }));
- new import_obsidian2.Setting(containerEl).setName("Gutter Background Color").then((setting) => {
- this.createPickr(
- this.plugin,
- containerEl,
- setting,
- "gutter_background",
- (relevantThemeColors) => relevantThemeColors[getCurrentMode()].gutter.backgroundColor,
- (relevantThemeColors, saveColor) => {
- relevantThemeColors[getCurrentMode()].gutter.backgroundColor = saveColor;
- },
- () => !this.plugin.settings.currentTheme.settings.codeblock.lineNumbers
- );
- });
- this.disableableComponents["lineNumbers"].push(this.pickrs["gutter_background"].resetButton);
- new import_obsidian2.Setting(containerEl).setName("Line Number Color").then((setting) => {
- this.createPickr(
- this.plugin,
- containerEl,
- setting,
- "line_number",
- (relevantThemeColors) => relevantThemeColors[getCurrentMode()].gutter.textColor,
- (relevantThemeColors, saveColor) => {
- relevantThemeColors[getCurrentMode()].gutter.textColor = saveColor;
- },
- () => !this.plugin.settings.currentTheme.settings.codeblock.lineNumbers
- );
- });
- this.disableableComponents["lineNumbers"].push(this.pickrs["line_number"].resetButton);
- new import_obsidian2.Setting(containerEl).setName("Highlight Line Numbers").setDesc("If enabled, highlights will also highlight the line numbers.").addToggle((toggle) => {
- let highlightLineNumbersToggle = toggle.setValue(this.plugin.settings.currentTheme.settings.gutter.highlight).setDisabled(!this.plugin.settings.currentTheme.settings.codeblock.lineNumbers).onChange((value) => {
- this.plugin.settings.currentTheme.settings.gutter.highlight = value;
- (async () => {
- await this.plugin.saveSettings();
- })();
- });
- this.disableableComponents["lineNumbers"].push(highlightLineNumbersToggle);
- });
- containerEl.createEl("h4", { text: "Header Appearance" });
- new import_obsidian2.Setting(containerEl).setName("Header Background Color").then((setting) => {
- this.createPickr(
- this.plugin,
- containerEl,
- setting,
- "header_background",
- (relevantThemeColors) => relevantThemeColors[getCurrentMode()].header.backgroundColor,
- (relevantThemeColors, saveColor) => {
- relevantThemeColors[getCurrentMode()].header.backgroundColor = saveColor;
- }
- );
- });
- new import_obsidian2.Setting(containerEl).setName("Header Title Text Styling").setDesc("Style the header title text using bold and italic toggles, by setting a font or by setting a text color.").addToggle((toggle) => {
- toggle.setTooltip("Toggle bold title text").setValue(this.plugin.settings.currentTheme.settings.header.title.textBold).onChange((value) => {
- this.plugin.settings.currentTheme.settings.header.title.textBold = value;
- (async () => {
- await this.plugin.saveSettings();
- })();
- });
- }).addToggle((toggle) => {
- toggle.setTooltip("Toggle italic title text").setValue(this.plugin.settings.currentTheme.settings.header.title.textItalic).onChange((value) => {
- this.plugin.settings.currentTheme.settings.header.title.textItalic = value;
- (async () => {
- await this.plugin.saveSettings();
- })();
- });
- }).addText((text) => {
- text.setPlaceholder("Font").setValue(this.plugin.settings.currentTheme.settings.header.title.textFont).onChange((value) => {
- this.plugin.settings.currentTheme.settings.header.title.textFont = value;
- (async () => {
- await this.plugin.saveSettings();
- })();
- });
- }).then((setting) => {
- this.createPickr(
- this.plugin,
- containerEl,
- setting,
- "header_title_text",
- (relevantThemeColors) => relevantThemeColors[getCurrentMode()].header.title.textColor,
- (relevantThemeColors, saveColor) => {
- relevantThemeColors[getCurrentMode()].header.title.textColor = saveColor;
- }
- );
- });
- new import_obsidian2.Setting(containerEl).setName("Header Separator Color").setDesc("Color of the line separating the codeblock header and the codeblock.").then((setting) => {
- this.createPickr(
- this.plugin,
- containerEl,
- setting,
- "header_separator",
- (relevantThemeColors) => relevantThemeColors[getCurrentMode()].header.lineColor,
- (relevantThemeColors, saveColor) => {
- relevantThemeColors[getCurrentMode()].header.lineColor = saveColor;
- }
- );
- });
- containerEl.createEl("h5", { text: "Header Language Tag Appearance" });
- new import_obsidian2.Setting(containerEl).setName("Display Header Language Tags").setDesc('Determine when to show language tags in the header. "Title Only" will only show language tags when the title parameter is set. If set to "None", the below settings are disabled too.').addDropdown((dropdown) => dropdown.addOptions(DISPLAY_OPTIONS).setValue(this.plugin.settings.currentTheme.settings.header.languageTag.display).onChange((value) => {
- this.plugin.settings.currentTheme.settings.header.languageTag.display = value;
- this.disableableComponents["headerLanguageTags"].forEach((component) => {
- component.setDisabled(value === "none");
- });
- (async () => {
- await this.plugin.saveSettings();
- })();
- }));
- new import_obsidian2.Setting(containerEl).setName("Header Language Tag Background Color").then((setting) => {
- this.createPickr(
- this.plugin,
- containerEl,
- setting,
- "header_language_tag_background",
- (relevantThemeColors) => relevantThemeColors[getCurrentMode()].header.languageTag.backgroundColor,
- (relevantThemeColors, saveColor) => {
- relevantThemeColors[getCurrentMode()].header.languageTag.backgroundColor = saveColor;
- },
- () => this.plugin.settings.currentTheme.settings.header.languageTag.display === "none"
- );
- });
- this.disableableComponents["headerLanguageTags"].push(this.pickrs["header_language_tag_background"].resetButton);
- let languageTagsBoldToggle;
- let languageTagsItalicToggle;
- let languageIconsFontText;
- new import_obsidian2.Setting(containerEl).setName("Header Language Tag Text Styling").setDesc("Style the header language tag text using bold and italic toggles, by setting a font or by setting a text color.").addToggle((toggle) => {
- languageTagsBoldToggle = toggle.setTooltip("Toggle bold language tag text").setValue(this.plugin.settings.currentTheme.settings.header.languageTag.textBold).setDisabled(this.plugin.settings.currentTheme.settings.header.languageTag.display === "none").onChange((value) => {
- this.plugin.settings.currentTheme.settings.header.languageTag.textBold = value;
- (async () => {
- await this.plugin.saveSettings();
- })();
- });
- this.disableableComponents["headerLanguageTags"].push(languageTagsBoldToggle);
- }).addToggle((toggle) => {
- languageTagsItalicToggle = toggle.setTooltip("Toggle italic language tag text").setValue(this.plugin.settings.currentTheme.settings.header.languageTag.textItalic).setDisabled(this.plugin.settings.currentTheme.settings.header.languageTag.display === "none").onChange((value) => {
- this.plugin.settings.currentTheme.settings.header.languageTag.textItalic = value;
- (async () => {
- await this.plugin.saveSettings();
- })();
- });
- this.disableableComponents["headerLanguageTags"].push(languageTagsItalicToggle);
- }).addText((text) => {
- languageIconsFontText = text.setPlaceholder("Font").setValue(this.plugin.settings.currentTheme.settings.header.languageTag.textFont).setDisabled(this.plugin.settings.currentTheme.settings.header.languageTag.display === "none").onChange((value) => {
- this.plugin.settings.currentTheme.settings.header.languageTag.textFont = value;
- (async () => {
- await this.plugin.saveSettings();
- })();
- });
- this.disableableComponents["headerLanguageTags"].push(languageIconsFontText);
- }).then((setting) => {
- this.createPickr(
- this.plugin,
- containerEl,
- setting,
- "header_language_tag_text",
- (relevantThemeColors) => relevantThemeColors[getCurrentMode()].header.languageTag.textColor,
- (relevantThemeColors, saveColor) => {
- relevantThemeColors[getCurrentMode()].header.languageTag.textColor = saveColor;
- },
- () => this.plugin.settings.currentTheme.settings.header.languageTag.display === "none"
- );
- });
- this.disableableComponents["headerLanguageTags"].push(this.pickrs["header_language_tag_text"].resetButton);
- containerEl.createEl("h5", { text: "Header Language Icon Appearance" });
- new import_obsidian2.Setting(containerEl).setName("Display Language Icons").setDesc('Determine when to show language icons where available. "Title Only" will only show language tags when the title parameter is set. If set to "None", the below settings are disabled too.').addDropdown((dropdown) => dropdown.addOptions(DISPLAY_OPTIONS).setValue(this.plugin.settings.currentTheme.settings.header.languageIcon.display).onChange((value) => {
- this.plugin.settings.currentTheme.settings.header.languageIcon.display = value;
- this.disableableComponents["headerLanguageIcons"].forEach((component) => {
- component.setDisabled(value === "none");
- });
- (async () => {
- await this.plugin.saveSettings();
- })();
- }));
- let languageIconsColoredToggle;
- new import_obsidian2.Setting(containerEl).setName("Language Icons Colored").setDesc("If disabled, language icons will be black and white.").addToggle((toggle) => {
- languageIconsColoredToggle = toggle.setValue(this.plugin.settings.currentTheme.settings.header.languageIcon.displayColor).setDisabled(this.plugin.settings.currentTheme.settings.header.languageIcon.display === "none").onChange((value) => {
- this.plugin.settings.currentTheme.settings.header.languageIcon.displayColor = value;
- (async () => {
- await this.plugin.saveSettings();
- })();
- });
- this.disableableComponents["headerLanguageIcons"].push(languageIconsColoredToggle);
- });
- new import_obsidian2.Setting(containerEl).setName("Language Icon Size").setDesc("Set the size of the displayed language icons.").then((setting) => {
- let resettableSlider;
- setting.addSlider((slider) => {
- resettableSlider = slider.setLimits(10, 40, 1).setValue(this.plugin.settings.currentTheme.settings.advanced.iconSize).setDisabled(this.plugin.settings.currentTheme.settings.header.languageIcon.display === "none").setDynamicTooltip().onChange((value) => {
- this.plugin.settings.currentTheme.settings.advanced.iconSize = value;
- (async () => {
- await this.plugin.saveSettings();
- })();
- });
- this.disableableComponents["headerLanguageIcons"].push(resettableSlider);
- });
- let resetButton;
- setting.addExtraButton((button) => {
- resetButton = button.setIcon("reset").setDisabled(this.plugin.settings.currentTheme.settings.header.languageIcon.display === "none").onClick(() => {
- this.plugin.settings.currentTheme.settings.advanced.iconSize = this.plugin.settings.themes[this.plugin.settings.selectedTheme].settings.advanced.iconSize;
- resettableSlider.setValue(this.plugin.settings.currentTheme.settings.advanced.iconSize);
- (async () => {
- await this.plugin.saveSettings();
- })();
- }).setTooltip("Restore default icon size");
- this.disableableComponents["headerLanguageIcons"].push(resetButton);
- });
- });
- containerEl.createEl("h4", { text: "Highlighting Appearance" });
- new import_obsidian2.Setting(containerEl).setName("Editor Active Line Highlight").setDesc("If enabled, highlights the active line outside codeblocks.").setClass("codeblock-customizer-spaced").addToggle((toggle) => {
- return toggle.setTooltip("Toggle editor active line highlighting").setValue(this.plugin.settings.currentTheme.settings.highlights.activeEditorLine).onChange((value) => {
- this.plugin.settings.currentTheme.settings.highlights.activeEditorLine = value;
- this.disableableComponents["editorActiveLineHighlight"].forEach((component) => {
- component.setDisabled(!value);
- });
- (async () => {
- await this.plugin.saveSettings();
- })();
- });
- }).then((setting) => {
- this.createPickr(
- this.plugin,
- containerEl,
- setting,
- "editor_active_line_highlight",
- (relevantThemeColors) => relevantThemeColors[getCurrentMode()].highlights.activeEditorLineColor,
- (relevantThemeColors, saveColor) => {
- relevantThemeColors[getCurrentMode()].highlights.activeEditorLineColor = saveColor;
- },
- () => !this.plugin.settings.currentTheme.settings.highlights.activeEditorLine
- );
- });
- this.disableableComponents["editorActiveLineHighlight"].push(this.pickrs["editor_active_line_highlight"].resetButton);
- new import_obsidian2.Setting(containerEl).setName("Codeblock Active Line Highlight").setDesc("If enabled, highlights the active line inside codeblocks.").setClass("codeblock-customizer-spaced").addToggle((toggle) => {
- return toggle.setValue(this.plugin.settings.currentTheme.settings.highlights.activeCodeblockLine).onChange((value) => {
- this.plugin.settings.currentTheme.settings.highlights.activeCodeblockLine = value;
- this.disableableComponents["codeblockActiveLineHighlight"].forEach((component) => {
- component.setDisabled(!value);
- });
- (async () => {
- await this.plugin.saveSettings();
- })();
- });
- }).then((setting) => {
- this.createPickr(
- this.plugin,
- containerEl,
- setting,
- "codeblock_active_line_highlight",
- (relevantThemeColors) => relevantThemeColors[getCurrentMode()].highlights.activeCodeblockLineColor,
- (relevantThemeColors, saveColor) => {
- relevantThemeColors[getCurrentMode()].highlights.activeCodeblockLineColor = saveColor;
- },
- () => !this.plugin.settings.currentTheme.settings.highlights.activeCodeblockLine
- );
- });
- this.disableableComponents["codeblockActiveLineHighlight"].push(this.pickrs["codeblock_active_line_highlight"].resetButton);
- new import_obsidian2.Setting(containerEl).setName("Default Highlight Color").setDesc("Used by the 'hl' parameter.").then((setting) => {
- this.createPickr(
- this.plugin,
- containerEl,
- setting,
- "default_highlight",
- (relevantThemeColors) => relevantThemeColors[getCurrentMode()].highlights.defaultColor,
- (relevantThemeColors, saveColor) => {
- relevantThemeColors[getCurrentMode()].highlights.defaultColor = saveColor;
- }
- );
- });
- let newHighlightText;
- new import_obsidian2.Setting(containerEl).setName("Add Alternative Highlight").setDesc("Define a new alternative highlight name. Colors can be modified after it is added.").addText((value) => {
- newHighlightText = value.setPlaceholder("e.g. error, warn").onChange((value2) => {
- this.plugin.settings.newHighlight = value2;
- });
- }).addButton((button) => {
- button.setButtonText("Add");
- button.onClick(() => {
- if (this.plugin.settings.newHighlight.trim() === "") {
- new import_obsidian2.Notice("Please enter a color name.");
- } else if (!COLOR_NAME_REGEX.test(this.plugin.settings.newHighlight)) {
- new import_obsidian2.Notice(`"${this.plugin.settings.newHighlight}" is not a valid color name.`);
- } else if (this.plugin.settings.newHighlight === "hl") {
- new import_obsidian2.Notice("Cannot override the default highlight parameter.");
- } else {
- if (this.plugin.settings.newHighlight in this.plugin.settings.currentTheme.colors.light.highlights.alternativeHighlights) {
- new import_obsidian2.Notice(`A highlight with the name "${this.plugin.settings.newHighlight}" already exists.`);
- } else {
- const newColor = getRandomColor();
- this.plugin.settings.currentTheme.colors.light.highlights.alternativeHighlights[this.plugin.settings.newHighlight] = newColor;
- this.plugin.settings.currentTheme.colors.dark.highlights.alternativeHighlights[this.plugin.settings.newHighlight] = newColor;
- this.updateAlternativeHighlights(alternativeHighlightsContainer);
- new import_obsidian2.Notice(`Added highlight "${this.plugin.settings.newHighlight}".`);
- this.plugin.settings.newHighlight = "";
- newHighlightText.setValue("");
- (async () => {
- await this.plugin.saveSettings();
- })();
- }
- }
- });
- });
- const alternativeHighlightsContainer = containerEl.createDiv();
- this.updateAlternativeHighlights(alternativeHighlightsContainer);
- containerEl.createEl("h3", { text: "Advanced Settings" });
- new import_obsidian2.Setting(containerEl).setName("Gradient Highlighting").setDesc("If enabled, highlights fade away to the right. The slider sets the gradient color stop as a percentage.").addToggle((toggle) => toggle.setValue(this.plugin.settings.currentTheme.settings.advanced.gradientHighlights).onChange((value) => {
- this.plugin.settings.currentTheme.settings.advanced.gradientHighlights = value;
- this.disableableComponents["gradientHighlighting"].forEach((component) => {
- component.setDisabled(!value);
- });
- (async () => {
- await this.plugin.saveSettings();
- })();
- })).then((setting) => {
- let resettableSlider;
- setting.addSlider((slider) => {
- resettableSlider = slider.setLimits(0, 100, 1).setValue(+this.plugin.settings.currentTheme.settings.advanced.gradientHighlightsColorStop.slice(0, -1)).setDynamicTooltip().onChange((value) => {
- this.plugin.settings.currentTheme.settings.advanced.gradientHighlightsColorStop = `${value}%`;
- (async () => {
- await this.plugin.saveSettings();
- })();
- });
- });
- let resetButton;
- setting.addExtraButton((button) => {
- resetButton = button.setIcon("reset").onClick(() => {
- this.plugin.settings.currentTheme.settings.advanced.gradientHighlightsColorStop = this.plugin.settings.themes[this.plugin.settings.selectedTheme].settings.advanced.gradientHighlightsColorStop;
- resettableSlider.setValue(+this.plugin.settings.currentTheme.settings.advanced.gradientHighlightsColorStop.slice(0, -1));
- (async () => {
- await this.plugin.saveSettings();
- })();
- }).setTooltip("Restore default color stop");
- this.disableableComponents["gradientHighlighting"].push(resettableSlider);
- this.disableableComponents["gradientHighlighting"].push(resetButton);
- });
- });
- new import_obsidian2.Setting(containerEl).setName("Language Colored Borders").setDesc("If enabled, languages with icons display a left border with the color of the icon.").addToggle((toggle) => toggle.setValue(this.plugin.settings.currentTheme.settings.advanced.languageBorderColor).onChange((value) => {
- this.plugin.settings.currentTheme.settings.advanced.languageBorderColor = value;
- (async () => {
- await this.plugin.saveSettings();
- })();
- }));
- const donationDiv = containerEl.createEl("div", { cls: "codeblock-customizer-donation" });
- const donationText = createEl("p");
- const donationButton = createEl("a", { href: "https://www.buymeacoffee.com/ThePirateKing" });
- donationText.appendText("If you like this plugin, and would like to help support continued development, use the button below!");
- donationButton.innerHTML = `
`;
- donationDiv.appendChild(donationText);
- donationDiv.appendChild(donationButton);
- }
- //display
- // Setting Creation
- createPickr(plugin, containerEl, setting, id, getRelevantThemeColor, saveRelevantThemeColor, disabled) {
- let pickr = new PickrResettable(plugin, containerEl, setting, getRelevantThemeColor, saveRelevantThemeColor);
- pickr.on("show", (color, instance) => {
- if (typeof disabled !== "undefined" && disabled())
- instance.hide();
- requestAnimationFrame(() => requestAnimationFrame(() => instance.getRoot().interaction.result.select()));
- }).on("save", (color, instance) => {
- const savedColor = `#${color.toHEXA().toString().substring(1)}`;
- instance.hide();
- instance.addSwatch(savedColor);
- instance.saveColor(savedColor);
- }).on("cancel", (instance) => {
- instance.hide();
- });
- setting.addExtraButton((button) => {
- pickr.resetButton = button.setIcon("reset").setDisabled(typeof disabled !== "undefined" && disabled()).setTooltip("Restore default color").onClick(() => {
- pickr.resetColor();
- });
- });
- this.pickrs[id] = pickr;
- }
- createDualPickr(plugin, containerEl, setting, id, getRelevantThemeColors, saveRelevantThemeColors, resetEnabled) {
- let lightPickr = new PickrResettable(plugin, containerEl, setting, getRelevantThemeColors.light, saveRelevantThemeColors.light, "Select color for light theme");
- lightPickr.on("show", (color, instance) => {
- requestAnimationFrame(() => requestAnimationFrame(() => instance.getRoot().interaction.result.select()));
- }).on("save", (color, instance) => {
- const savedColor = `#${color.toHEXA().toString().substring(1)}`;
- instance.hide();
- instance.addSwatch(savedColor);
- instance.saveColor(savedColor);
- }).on("cancel", (instance) => {
- instance.hide();
- });
- let darkPickr = new PickrResettable(plugin, containerEl, setting, getRelevantThemeColors.dark, saveRelevantThemeColors.dark, "Select color for dark theme");
- darkPickr.on("show", (color, instance) => {
- requestAnimationFrame(() => requestAnimationFrame(() => instance.getRoot().interaction.result.select()));
- }).on("save", (color, instance) => {
- const savedColor = `#${color.toHEXA().toString().substring(1)}`;
- instance.hide();
- instance.addSwatch(savedColor);
- instance.saveColor(savedColor);
- }).on("cancel", (instance) => {
- instance.hide();
- });
- setting.addExtraButton((button) => {
- let resetButton = button.setIcon("reset").setTooltip("Restore default color").setDisabled(!resetEnabled()).onClick(() => {
- lightPickr.resetColor();
- darkPickr.resetColor();
- });
- lightPickr.resetButton = resetButton;
- darkPickr.resetButton = resetButton;
- });
- this.pickrs[`${id}_light`] = lightPickr;
- this.pickrs[`${id}_dark`] = darkPickr;
- }
- // Setting Updates
- updateDropdown(dropdown, settings) {
- dropdown.selectEl.empty();
- Object.keys(settings.themes).forEach((theme_name) => {
- dropdown.addOption(theme_name, theme_name);
- });
- dropdown.setValue(settings.selectedTheme);
- }
- updatePickrColors() {
- Object.entries(this.pickrs).forEach(([id, pickr]) => {
- pickr.resetColor();
- });
- }
- updateAlternativeHighlights(alternativeHighlightsContainer) {
- alternativeHighlightsContainer.empty();
- Object.keys(this.plugin.settings.currentTheme.colors.light.highlights.alternativeHighlights).forEach((alternativeHighlightName) => {
- new import_obsidian2.Setting(alternativeHighlightsContainer).setName(alternativeHighlightName).setDesc(`To highlight lines with this highlight, use the ${alternativeHighlightName} parameter.`).then((setting) => {
- this.createDualPickr(
- this.plugin,
- alternativeHighlightsContainer,
- setting,
- `alternative_highlight_${alternativeHighlightName}`,
- {
- "light": (relevantThemeColors) => relevantThemeColors.light.highlights.alternativeHighlights[alternativeHighlightName],
- "dark": (relevantThemeColors) => relevantThemeColors.dark.highlights.alternativeHighlights[alternativeHighlightName]
- },
- {
- "light": (relevantThemeColors, saveColor) => {
- relevantThemeColors.light.highlights.alternativeHighlights[alternativeHighlightName] = saveColor;
- },
- "dark": (relevantThemeColors, saveColor) => {
- relevantThemeColors.dark.highlights.alternativeHighlights[alternativeHighlightName] = saveColor;
- }
- },
- () => alternativeHighlightName in this.plugin.settings.themes[this.plugin.settings.selectedTheme].colors.light.highlights.alternativeHighlights
- );
- setting.addExtraButton((button) => {
- button.setIcon("trash").setTooltip("Delete highlight").onClick(() => {
- delete this.plugin.settings.currentTheme.colors.light.highlights.alternativeHighlights[alternativeHighlightName];
- delete this.plugin.settings.currentTheme.colors.dark.highlights.alternativeHighlights[alternativeHighlightName];
- new import_obsidian2.Notice(`Removed highlight "${alternativeHighlightName}".`);
- this.updateAlternativeHighlights(alternativeHighlightsContainer);
- (async () => {
- await this.plugin.saveSettings();
- })();
- });
- });
- });
- });
- }
+ constructor(app, plugin) {
+ super(app, plugin);
+ this.plugin = plugin;
+ this.pickrs = {};
+ this.disableableComponents = {};
+ }
+ /**
+ * Builds the html page that is showed in the settings.
+ */
+ display() {
+ const { containerEl } = this;
+ containerEl.empty();
+ containerEl.createEl("h2", { text: "Settings for the Codeblock Customizer Plugin." });
+ this.disableableComponents = {
+ "lineNumbers": [],
+ "headerLanguageTags": [],
+ "headerLanguageIcons": [],
+ "editorActiveLineHighlight": [],
+ "codeblockActiveLineHighlight": [],
+ "gradientHighlighting": []
+ };
+ new import_obsidian2.Setting(containerEl).setName("Exclude Languages").setDesc("Define languages in a comma separated list on which the plugin should not apply. You can use a wildcard (*) either at the beginning, or at the end. For example: ad-* will exclude codeblocks where the language starts with ad- e.g.: ad-info, ad-error etc.").addText((text) => text.setPlaceholder("e.g. dataview, python etc.").setValue(this.plugin.settings.excludedLangs).onChange((value) => {
+ this.plugin.settings.excludedLangs = value;
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ }));
+ containerEl.createEl("h3", { text: "Theme Settings" });
+ let themeDropdown;
+ new import_obsidian2.Setting(containerEl).setName("Select Theme").addDropdown((dropdown) => {
+ themeDropdown = dropdown;
+ this.updateDropdown(themeDropdown, this.plugin.settings);
+ themeDropdown.onChange((value) => {
+ this.plugin.settings.selectedTheme = value;
+ this.plugin.settings.currentTheme = structuredClone(this.plugin.settings.themes[this.plugin.settings.selectedTheme]);
+ this.updatePickrColors();
+ this.updateAlternativeHighlights(alternativeHighlightsContainer);
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ });
+ ;
+ }).addExtraButton((button) => {
+ button.setTooltip("Update theme");
+ button.setIcon("arrow-up");
+ button.onClick(() => {
+ if (this.plugin.settings.selectedTheme in DEFAULT_SETTINGS.themes)
+ new import_obsidian2.Notice("You cannot update the default themes");
+ else {
+ this.plugin.settings.themes[this.plugin.settings.selectedTheme] = structuredClone(this.plugin.settings.currentTheme);
+ this.updateAlternativeHighlights(alternativeHighlightsContainer);
+ new import_obsidian2.Notice(`${this.plugin.settings.selectedTheme} theme saved successfully!`);
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ }
+ });
+ }).addExtraButton((button) => {
+ button.setTooltip("Delete theme");
+ button.setIcon("trash");
+ button.onClick(() => {
+ if (this.plugin.settings.selectedTheme.trim().length === 0) {
+ new import_obsidian2.Notice("Select a theme first to delete");
+ } else if (this.plugin.settings.newTheme.name in DEFAULT_SETTINGS.themes) {
+ new import_obsidian2.Notice("You cannot delete the default themes");
+ } else {
+ if (this.plugin.settings.defaultTheme === this.plugin.settings.selectedTheme)
+ this.plugin.settings.defaultTheme = "Default";
+ delete this.plugin.settings.themes[this.plugin.settings.selectedTheme];
+ new import_obsidian2.Notice(`${this.plugin.settings.selectedTheme} theme deleted successfully!`);
+ this.plugin.settings.selectedTheme = "Default";
+ this.plugin.settings.currentTheme = structuredClone(this.plugin.settings.themes[this.plugin.settings.selectedTheme]);
+ this.updateDropdown(themeDropdown, this.plugin.settings);
+ this.updatePickrColors();
+ this.updateAlternativeHighlights(alternativeHighlightsContainer);
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ }
+ });
+ });
+ let newThemeName;
+ this.plugin.settings.newTheme = NEW_THEME_DEFAULT;
+ new import_obsidian2.Setting(containerEl).setName("Add New Theme").setDesc("Create a new theme from the current settings.").addText((text) => {
+ newThemeName = text.setPlaceholder("New theme name").setValue(this.plugin.settings.newTheme.name).onChange((value) => {
+ this.plugin.settings.newTheme.name = value;
+ });
+ }).addToggle((toggle) => {
+ return toggle.setTooltip("Save as the default theme").setValue(false).onChange((value) => {
+ this.plugin.settings.newTheme.default = value;
+ });
+ }).addExtraButton((button) => {
+ button.setTooltip("Save theme");
+ button.setIcon("plus");
+ button.onClick(() => {
+ if (this.plugin.settings.newTheme.name.trim().length === 0) {
+ new import_obsidian2.Notice("Set a name for your theme");
+ } else if (this.plugin.settings.newTheme.name in DEFAULT_SETTINGS.themes) {
+ new import_obsidian2.Notice("You can't overwrite the default themes");
+ } else {
+ if (this.plugin.settings.newTheme.name in this.plugin.settings.themes) {
+ this.plugin.settings.themes[this.plugin.settings.newTheme.name] = structuredClone(this.plugin.settings.currentTheme);
+ new import_obsidian2.Notice(`${this.plugin.settings.newTheme.name} theme updated successfully!`);
+ } else {
+ this.plugin.settings.themes[this.plugin.settings.newTheme.name] = structuredClone(this.plugin.settings.currentTheme);
+ new import_obsidian2.Notice(`${this.plugin.settings.newTheme.name} theme saved successfully!`);
+ }
+ this.plugin.settings.selectedTheme = this.plugin.settings.newTheme.name;
+ if (this.plugin.settings.newTheme.default)
+ this.plugin.settings.defaultTheme = this.plugin.settings.selectedTheme;
+ this.updateDropdown(themeDropdown, this.plugin.settings);
+ this.updateAlternativeHighlights(alternativeHighlightsContainer);
+ this.plugin.settings.newTheme = NEW_THEME_DEFAULT;
+ newThemeName.setValue("");
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ }
+ });
+ });
+ containerEl.createEl("h4", { text: "Codeblock Appearance" });
+ new import_obsidian2.Setting(containerEl).setName("Codeblock Background Color").then((setting) => {
+ this.createPickr(
+ this.plugin,
+ containerEl,
+ setting,
+ "codeblock_background",
+ (relevantThemeColors) => relevantThemeColors[getCurrentMode()].codeblock.backgroundColor,
+ (relevantThemeColors, saveColor) => {
+ relevantThemeColors[getCurrentMode()].codeblock.backgroundColor = saveColor;
+ }
+ );
+ });
+ new import_obsidian2.Setting(containerEl).setName("Codeblock Text Color").then((setting) => {
+ this.createPickr(
+ this.plugin,
+ containerEl,
+ setting,
+ "codeblock_text",
+ (relevantThemeColors) => relevantThemeColors[getCurrentMode()].codeblock.textColor,
+ (relevantThemeColors, saveColor) => {
+ relevantThemeColors[getCurrentMode()].codeblock.textColor = saveColor;
+ }
+ );
+ });
+ new import_obsidian2.Setting(containerEl).setName("Codeblock Curvature").setDesc("Determines how rounded the codeblocks appear in pixels.").then((setting) => {
+ let resettableSlider;
+ setting.addSlider((slider) => {
+ resettableSlider = slider.setLimits(0, 25, 1).setValue(this.plugin.settings.currentTheme.settings.codeblock.curvature).setDynamicTooltip().onChange((value) => {
+ this.plugin.settings.currentTheme.settings.codeblock.curvature = value;
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ });
+ });
+ setting.addExtraButton((button) => {
+ button.setIcon("reset").onClick(() => {
+ this.plugin.settings.currentTheme.settings.codeblock.curvature = this.plugin.settings.themes[this.plugin.settings.selectedTheme].settings.codeblock.curvature;
+ resettableSlider.setValue(this.plugin.settings.currentTheme.settings.codeblock.curvature);
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ }).setTooltip("Restore default icon size");
+ });
+ });
+ containerEl.createEl("h4", { text: "Gutter Appearance" });
+ new import_obsidian2.Setting(containerEl).setName("Enable Line Numbers").setDesc("If disabled, the below settings are disabled too.").addToggle((toggle) => toggle.setValue(this.plugin.settings.currentTheme.settings.codeblock.lineNumbers).onChange((value) => {
+ this.plugin.settings.currentTheme.settings.codeblock.lineNumbers = value;
+ this.disableableComponents["lineNumbers"].forEach((component) => {
+ component.setDisabled(!value);
+ });
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ }));
+ new import_obsidian2.Setting(containerEl).setName("Gutter Background Color").then((setting) => {
+ this.createPickr(
+ this.plugin,
+ containerEl,
+ setting,
+ "gutter_background",
+ (relevantThemeColors) => relevantThemeColors[getCurrentMode()].gutter.backgroundColor,
+ (relevantThemeColors, saveColor) => {
+ relevantThemeColors[getCurrentMode()].gutter.backgroundColor = saveColor;
+ },
+ () => !this.plugin.settings.currentTheme.settings.codeblock.lineNumbers
+ );
+ });
+ this.disableableComponents["lineNumbers"].push(this.pickrs["gutter_background"].resetButton);
+ new import_obsidian2.Setting(containerEl).setName("Line Number Color").then((setting) => {
+ this.createPickr(
+ this.plugin,
+ containerEl,
+ setting,
+ "line_number",
+ (relevantThemeColors) => relevantThemeColors[getCurrentMode()].gutter.textColor,
+ (relevantThemeColors, saveColor) => {
+ relevantThemeColors[getCurrentMode()].gutter.textColor = saveColor;
+ },
+ () => !this.plugin.settings.currentTheme.settings.codeblock.lineNumbers
+ );
+ });
+ this.disableableComponents["lineNumbers"].push(this.pickrs["line_number"].resetButton);
+ new import_obsidian2.Setting(containerEl).setName("Highlight Line Numbers").setDesc("If enabled, highlights will also highlight the line numbers.").addToggle((toggle) => {
+ let highlightLineNumbersToggle = toggle.setValue(this.plugin.settings.currentTheme.settings.gutter.highlight).setDisabled(!this.plugin.settings.currentTheme.settings.codeblock.lineNumbers).onChange((value) => {
+ this.plugin.settings.currentTheme.settings.gutter.highlight = value;
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ });
+ this.disableableComponents["lineNumbers"].push(highlightLineNumbersToggle);
+ });
+ containerEl.createEl("h4", { text: "Header Appearance" });
+ new import_obsidian2.Setting(containerEl).setName("Header Background Color").then((setting) => {
+ this.createPickr(
+ this.plugin,
+ containerEl,
+ setting,
+ "header_background",
+ (relevantThemeColors) => relevantThemeColors[getCurrentMode()].header.backgroundColor,
+ (relevantThemeColors, saveColor) => {
+ relevantThemeColors[getCurrentMode()].header.backgroundColor = saveColor;
+ }
+ );
+ });
+ new import_obsidian2.Setting(containerEl).setName("Header Title Text Styling").setDesc("Style the header title text using bold and italic toggles, by setting a font or by setting a text color.").addToggle((toggle) => {
+ toggle.setTooltip("Toggle bold title text").setValue(this.plugin.settings.currentTheme.settings.header.title.textBold).onChange((value) => {
+ this.plugin.settings.currentTheme.settings.header.title.textBold = value;
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ });
+ }).addToggle((toggle) => {
+ toggle.setTooltip("Toggle italic title text").setValue(this.plugin.settings.currentTheme.settings.header.title.textItalic).onChange((value) => {
+ this.plugin.settings.currentTheme.settings.header.title.textItalic = value;
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ });
+ }).addText((text) => {
+ text.setPlaceholder("Font").setValue(this.plugin.settings.currentTheme.settings.header.title.textFont).onChange((value) => {
+ this.plugin.settings.currentTheme.settings.header.title.textFont = value;
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ });
+ }).then((setting) => {
+ this.createPickr(
+ this.plugin,
+ containerEl,
+ setting,
+ "header_title_text",
+ (relevantThemeColors) => relevantThemeColors[getCurrentMode()].header.title.textColor,
+ (relevantThemeColors, saveColor) => {
+ relevantThemeColors[getCurrentMode()].header.title.textColor = saveColor;
+ }
+ );
+ });
+ new import_obsidian2.Setting(containerEl).setName("Collapse Placeholder Text").setDesc("Title placeholder text for collapsed code when no title parameter is set.").addText((text) => text.setPlaceholder("Collapsed Code").setValue(this.plugin.settings.currentTheme.settings.header.collapsePlaceholder).onChange((value) => {
+ this.plugin.settings.currentTheme.settings.header.collapsePlaceholder = value;
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ }));
+ new import_obsidian2.Setting(containerEl).setName("Header Separator Color").setDesc("Color of the line separating the codeblock header and the codeblock.").then((setting) => {
+ this.createPickr(
+ this.plugin,
+ containerEl,
+ setting,
+ "header_separator",
+ (relevantThemeColors) => relevantThemeColors[getCurrentMode()].header.lineColor,
+ (relevantThemeColors, saveColor) => {
+ relevantThemeColors[getCurrentMode()].header.lineColor = saveColor;
+ }
+ );
+ });
+ containerEl.createEl("h5", { text: "Header Language Tag Appearance" });
+ new import_obsidian2.Setting(containerEl).setName("Display Header Language Tags").setDesc('Determine when to show language tags in the header. "Title Only" will only show language tags when the title parameter is set. If set to "None", the below settings are disabled too.').addDropdown((dropdown) => dropdown.addOptions(DISPLAY_OPTIONS).setValue(this.plugin.settings.currentTheme.settings.header.languageTag.display).onChange((value) => {
+ this.plugin.settings.currentTheme.settings.header.languageTag.display = value;
+ this.disableableComponents["headerLanguageTags"].forEach((component) => {
+ component.setDisabled(value === "none");
+ });
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ }));
+ new import_obsidian2.Setting(containerEl).setName("Header Language Tag Background Color").then((setting) => {
+ this.createPickr(
+ this.plugin,
+ containerEl,
+ setting,
+ "header_language_tag_background",
+ (relevantThemeColors) => relevantThemeColors[getCurrentMode()].header.languageTag.backgroundColor,
+ (relevantThemeColors, saveColor) => {
+ relevantThemeColors[getCurrentMode()].header.languageTag.backgroundColor = saveColor;
+ },
+ () => this.plugin.settings.currentTheme.settings.header.languageTag.display === "none"
+ );
+ });
+ this.disableableComponents["headerLanguageTags"].push(this.pickrs["header_language_tag_background"].resetButton);
+ let languageTagsBoldToggle;
+ let languageTagsItalicToggle;
+ let languageIconsFontText;
+ new import_obsidian2.Setting(containerEl).setName("Header Language Tag Text Styling").setDesc("Style the header language tag text using bold and italic toggles, by setting a font or by setting a text color.").addToggle((toggle) => {
+ languageTagsBoldToggle = toggle.setTooltip("Toggle bold language tag text").setValue(this.plugin.settings.currentTheme.settings.header.languageTag.textBold).setDisabled(this.plugin.settings.currentTheme.settings.header.languageTag.display === "none").onChange((value) => {
+ this.plugin.settings.currentTheme.settings.header.languageTag.textBold = value;
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ });
+ this.disableableComponents["headerLanguageTags"].push(languageTagsBoldToggle);
+ }).addToggle((toggle) => {
+ languageTagsItalicToggle = toggle.setTooltip("Toggle italic language tag text").setValue(this.plugin.settings.currentTheme.settings.header.languageTag.textItalic).setDisabled(this.plugin.settings.currentTheme.settings.header.languageTag.display === "none").onChange((value) => {
+ this.plugin.settings.currentTheme.settings.header.languageTag.textItalic = value;
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ });
+ this.disableableComponents["headerLanguageTags"].push(languageTagsItalicToggle);
+ }).addText((text) => {
+ languageIconsFontText = text.setPlaceholder("Font").setValue(this.plugin.settings.currentTheme.settings.header.languageTag.textFont).setDisabled(this.plugin.settings.currentTheme.settings.header.languageTag.display === "none").onChange((value) => {
+ this.plugin.settings.currentTheme.settings.header.languageTag.textFont = value;
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ });
+ this.disableableComponents["headerLanguageTags"].push(languageIconsFontText);
+ }).then((setting) => {
+ this.createPickr(
+ this.plugin,
+ containerEl,
+ setting,
+ "header_language_tag_text",
+ (relevantThemeColors) => relevantThemeColors[getCurrentMode()].header.languageTag.textColor,
+ (relevantThemeColors, saveColor) => {
+ relevantThemeColors[getCurrentMode()].header.languageTag.textColor = saveColor;
+ },
+ () => this.plugin.settings.currentTheme.settings.header.languageTag.display === "none"
+ );
+ });
+ this.disableableComponents["headerLanguageTags"].push(this.pickrs["header_language_tag_text"].resetButton);
+ containerEl.createEl("h5", { text: "Header Language Icon Appearance" });
+ new import_obsidian2.Setting(containerEl).setName("Display Language Icons").setDesc('Determine when to show language icons where available. "Title Only" will only show language tags when the title parameter is set. If set to "None", the below settings are disabled too.').addDropdown((dropdown) => dropdown.addOptions(DISPLAY_OPTIONS).setValue(this.plugin.settings.currentTheme.settings.header.languageIcon.display).onChange((value) => {
+ this.plugin.settings.currentTheme.settings.header.languageIcon.display = value;
+ this.disableableComponents["headerLanguageIcons"].forEach((component) => {
+ component.setDisabled(value === "none");
+ });
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ }));
+ let languageIconsColoredToggle;
+ new import_obsidian2.Setting(containerEl).setName("Language Icons Colored").setDesc("If disabled, language icons will be black and white.").addToggle((toggle) => {
+ languageIconsColoredToggle = toggle.setValue(this.plugin.settings.currentTheme.settings.header.languageIcon.displayColor).setDisabled(this.plugin.settings.currentTheme.settings.header.languageIcon.display === "none").onChange((value) => {
+ this.plugin.settings.currentTheme.settings.header.languageIcon.displayColor = value;
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ });
+ this.disableableComponents["headerLanguageIcons"].push(languageIconsColoredToggle);
+ });
+ new import_obsidian2.Setting(containerEl).setName("Language Icon Size").setDesc("Set the size of the displayed language icons.").then((setting) => {
+ let resettableSlider;
+ setting.addSlider((slider) => {
+ resettableSlider = slider.setLimits(10, 40, 1).setValue(this.plugin.settings.currentTheme.settings.advanced.iconSize).setDisabled(this.plugin.settings.currentTheme.settings.header.languageIcon.display === "none").setDynamicTooltip().onChange((value) => {
+ this.plugin.settings.currentTheme.settings.advanced.iconSize = value;
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ });
+ this.disableableComponents["headerLanguageIcons"].push(resettableSlider);
+ });
+ let resetButton;
+ setting.addExtraButton((button) => {
+ resetButton = button.setIcon("reset").setDisabled(this.plugin.settings.currentTheme.settings.header.languageIcon.display === "none").onClick(() => {
+ this.plugin.settings.currentTheme.settings.advanced.iconSize = this.plugin.settings.themes[this.plugin.settings.selectedTheme].settings.advanced.iconSize;
+ resettableSlider.setValue(this.plugin.settings.currentTheme.settings.advanced.iconSize);
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ }).setTooltip("Restore default icon size");
+ this.disableableComponents["headerLanguageIcons"].push(resetButton);
+ });
+ });
+ containerEl.createEl("h4", { text: "Highlighting Appearance" });
+ new import_obsidian2.Setting(containerEl).setName("Editor Active Line Highlight").setDesc("If enabled, highlights the active line outside codeblocks.").setClass("codeblock-customizer-spaced").addToggle((toggle) => {
+ return toggle.setTooltip("Toggle editor active line highlighting").setValue(this.plugin.settings.currentTheme.settings.highlights.activeEditorLine).onChange((value) => {
+ this.plugin.settings.currentTheme.settings.highlights.activeEditorLine = value;
+ this.disableableComponents["editorActiveLineHighlight"].forEach((component) => {
+ component.setDisabled(!value);
+ });
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ });
+ }).then((setting) => {
+ this.createPickr(
+ this.plugin,
+ containerEl,
+ setting,
+ "editor_active_line_highlight",
+ (relevantThemeColors) => relevantThemeColors[getCurrentMode()].highlights.activeEditorLineColor,
+ (relevantThemeColors, saveColor) => {
+ relevantThemeColors[getCurrentMode()].highlights.activeEditorLineColor = saveColor;
+ },
+ () => !this.plugin.settings.currentTheme.settings.highlights.activeEditorLine
+ );
+ });
+ this.disableableComponents["editorActiveLineHighlight"].push(this.pickrs["editor_active_line_highlight"].resetButton);
+ new import_obsidian2.Setting(containerEl).setName("Codeblock Active Line Highlight").setDesc("If enabled, highlights the active line inside codeblocks.").setClass("codeblock-customizer-spaced").addToggle((toggle) => {
+ return toggle.setValue(this.plugin.settings.currentTheme.settings.highlights.activeCodeblockLine).onChange((value) => {
+ this.plugin.settings.currentTheme.settings.highlights.activeCodeblockLine = value;
+ this.disableableComponents["codeblockActiveLineHighlight"].forEach((component) => {
+ component.setDisabled(!value);
+ });
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ });
+ }).then((setting) => {
+ this.createPickr(
+ this.plugin,
+ containerEl,
+ setting,
+ "codeblock_active_line_highlight",
+ (relevantThemeColors) => relevantThemeColors[getCurrentMode()].highlights.activeCodeblockLineColor,
+ (relevantThemeColors, saveColor) => {
+ relevantThemeColors[getCurrentMode()].highlights.activeCodeblockLineColor = saveColor;
+ },
+ () => !this.plugin.settings.currentTheme.settings.highlights.activeCodeblockLine
+ );
+ });
+ this.disableableComponents["codeblockActiveLineHighlight"].push(this.pickrs["codeblock_active_line_highlight"].resetButton);
+ new import_obsidian2.Setting(containerEl).setName("Default Highlight Color").setDesc("Used by the 'hl' parameter.").then((setting) => {
+ this.createPickr(
+ this.plugin,
+ containerEl,
+ setting,
+ "default_highlight",
+ (relevantThemeColors) => relevantThemeColors[getCurrentMode()].highlights.defaultColor,
+ (relevantThemeColors, saveColor) => {
+ relevantThemeColors[getCurrentMode()].highlights.defaultColor = saveColor;
+ }
+ );
+ });
+ let newHighlightText;
+ new import_obsidian2.Setting(containerEl).setName("Add Alternative Highlight").setDesc("Define a new alternative highlight name. Colors can be modified after it is added.").addText((value) => {
+ newHighlightText = value.setPlaceholder("e.g. error, warn").onChange((value2) => {
+ this.plugin.settings.newHighlight = value2;
+ });
+ }).addButton((button) => {
+ button.setButtonText("Add");
+ button.onClick(() => {
+ if (this.plugin.settings.newHighlight.trim() === "") {
+ new import_obsidian2.Notice("Please enter a color name.");
+ } else if (!COLOR_NAME_REGEX.test(this.plugin.settings.newHighlight)) {
+ new import_obsidian2.Notice(`"${this.plugin.settings.newHighlight}" is not a valid color name.`);
+ } else if (this.plugin.settings.newHighlight === "hl") {
+ new import_obsidian2.Notice("Cannot override the default highlight parameter.");
+ } else {
+ if (this.plugin.settings.newHighlight in this.plugin.settings.currentTheme.colors.light.highlights.alternativeHighlights) {
+ new import_obsidian2.Notice(`A highlight with the name "${this.plugin.settings.newHighlight}" already exists.`);
+ } else {
+ const newColor = getRandomColor();
+ this.plugin.settings.currentTheme.colors.light.highlights.alternativeHighlights[this.plugin.settings.newHighlight] = newColor;
+ this.plugin.settings.currentTheme.colors.dark.highlights.alternativeHighlights[this.plugin.settings.newHighlight] = newColor;
+ this.updateAlternativeHighlights(alternativeHighlightsContainer);
+ new import_obsidian2.Notice(`Added highlight "${this.plugin.settings.newHighlight}".`);
+ this.plugin.settings.newHighlight = "";
+ newHighlightText.setValue("");
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ }
+ }
+ });
+ });
+ const alternativeHighlightsContainer = containerEl.createDiv();
+ this.updateAlternativeHighlights(alternativeHighlightsContainer);
+ containerEl.createEl("h3", { text: "Advanced Settings" });
+ new import_obsidian2.Setting(containerEl).setName("Gradient Highlighting").setDesc("If enabled, highlights fade away to the right. The slider sets the gradient color stop as a percentage.").addToggle((toggle) => toggle.setValue(this.plugin.settings.currentTheme.settings.advanced.gradientHighlights).onChange((value) => {
+ this.plugin.settings.currentTheme.settings.advanced.gradientHighlights = value;
+ this.disableableComponents["gradientHighlighting"].forEach((component) => {
+ component.setDisabled(!value);
+ });
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ })).then((setting) => {
+ let resettableSlider;
+ setting.addSlider((slider) => {
+ resettableSlider = slider.setLimits(0, 100, 1).setValue(+this.plugin.settings.currentTheme.settings.advanced.gradientHighlightsColorStop.slice(0, -1)).setDynamicTooltip().onChange((value) => {
+ this.plugin.settings.currentTheme.settings.advanced.gradientHighlightsColorStop = `${value}%`;
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ });
+ });
+ let resetButton;
+ setting.addExtraButton((button) => {
+ resetButton = button.setIcon("reset").onClick(() => {
+ this.plugin.settings.currentTheme.settings.advanced.gradientHighlightsColorStop = this.plugin.settings.themes[this.plugin.settings.selectedTheme].settings.advanced.gradientHighlightsColorStop;
+ resettableSlider.setValue(+this.plugin.settings.currentTheme.settings.advanced.gradientHighlightsColorStop.slice(0, -1));
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ }).setTooltip("Restore default color stop");
+ this.disableableComponents["gradientHighlighting"].push(resettableSlider);
+ this.disableableComponents["gradientHighlighting"].push(resetButton);
+ });
+ });
+ new import_obsidian2.Setting(containerEl).setName("Language Colored Borders").setDesc("If enabled, languages with icons display a left border with the color of the icon.").addToggle((toggle) => toggle.setValue(this.plugin.settings.currentTheme.settings.advanced.languageBorderColor).onChange((value) => {
+ this.plugin.settings.currentTheme.settings.advanced.languageBorderColor = value;
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ }));
+ const donationDiv = containerEl.createEl("div", { cls: "codeblock-customizer-donation" });
+ const donationText = createEl("p");
+ const donationButton = createEl("a", { href: "https://www.buymeacoffee.com/ThePirateKing" });
+ donationText.appendText("If you like this plugin, and would like to help support continued development, use the button below!");
+ donationButton.innerHTML = `
`;
+ donationDiv.appendChild(donationText);
+ donationDiv.appendChild(donationButton);
+ }
+ //display
+ // Setting Creation
+ createPickr(plugin, containerEl, setting, id, getRelevantThemeColor, saveRelevantThemeColor, disabled) {
+ let pickr = new PickrResettable(plugin, containerEl, setting, getRelevantThemeColor, saveRelevantThemeColor);
+ pickr.on("show", (color, instance) => {
+ if (typeof disabled !== "undefined" && disabled())
+ instance.hide();
+ requestAnimationFrame(() => requestAnimationFrame(() => instance.getRoot().interaction.result.select()));
+ }).on("save", (color, instance) => {
+ const savedColor = `#${color.toHEXA().toString().substring(1)}`;
+ instance.hide();
+ instance.addSwatch(savedColor);
+ instance.saveColor(savedColor);
+ }).on("cancel", (instance) => {
+ instance.hide();
+ });
+ setting.addExtraButton((button) => {
+ pickr.resetButton = button.setIcon("reset").setDisabled(typeof disabled !== "undefined" && disabled()).setTooltip("Restore default color").onClick(() => {
+ pickr.resetColor();
+ });
+ });
+ this.pickrs[id] = pickr;
+ }
+ createDualPickr(plugin, containerEl, setting, id, getRelevantThemeColors, saveRelevantThemeColors, resetEnabled) {
+ let lightPickr = new PickrResettable(plugin, containerEl, setting, getRelevantThemeColors.light, saveRelevantThemeColors.light, "Select color for light theme");
+ lightPickr.on("show", (color, instance) => {
+ requestAnimationFrame(() => requestAnimationFrame(() => instance.getRoot().interaction.result.select()));
+ }).on("save", (color, instance) => {
+ const savedColor = `#${color.toHEXA().toString().substring(1)}`;
+ instance.hide();
+ instance.addSwatch(savedColor);
+ instance.saveColor(savedColor);
+ }).on("cancel", (instance) => {
+ instance.hide();
+ });
+ let darkPickr = new PickrResettable(plugin, containerEl, setting, getRelevantThemeColors.dark, saveRelevantThemeColors.dark, "Select color for dark theme");
+ darkPickr.on("show", (color, instance) => {
+ requestAnimationFrame(() => requestAnimationFrame(() => instance.getRoot().interaction.result.select()));
+ }).on("save", (color, instance) => {
+ const savedColor = `#${color.toHEXA().toString().substring(1)}`;
+ instance.hide();
+ instance.addSwatch(savedColor);
+ instance.saveColor(savedColor);
+ }).on("cancel", (instance) => {
+ instance.hide();
+ });
+ setting.addExtraButton((button) => {
+ let resetButton = button.setIcon("reset").setTooltip("Restore default color").setDisabled(!resetEnabled()).onClick(() => {
+ lightPickr.resetColor();
+ darkPickr.resetColor();
+ });
+ lightPickr.resetButton = resetButton;
+ darkPickr.resetButton = resetButton;
+ });
+ this.pickrs[`${id}_light`] = lightPickr;
+ this.pickrs[`${id}_dark`] = darkPickr;
+ }
+ // Setting Updates
+ updateDropdown(dropdown, settings) {
+ dropdown.selectEl.empty();
+ Object.keys(settings.themes).forEach((theme_name) => {
+ dropdown.addOption(theme_name, theme_name);
+ });
+ dropdown.setValue(settings.selectedTheme);
+ }
+ updatePickrColors() {
+ Object.entries(this.pickrs).forEach(([id, pickr]) => {
+ pickr.resetColor();
+ });
+ }
+ updateAlternativeHighlights(alternativeHighlightsContainer) {
+ alternativeHighlightsContainer.empty();
+ Object.keys(this.plugin.settings.currentTheme.colors.light.highlights.alternativeHighlights).forEach((alternativeHighlightName) => {
+ new import_obsidian2.Setting(alternativeHighlightsContainer).setName(alternativeHighlightName).setDesc(`To highlight lines with this highlight, use the ${alternativeHighlightName} parameter.`).then((setting) => {
+ this.createDualPickr(
+ this.plugin,
+ alternativeHighlightsContainer,
+ setting,
+ `alternative_highlight_${alternativeHighlightName}`,
+ {
+ "light": (relevantThemeColors) => relevantThemeColors.light.highlights.alternativeHighlights[alternativeHighlightName],
+ "dark": (relevantThemeColors) => relevantThemeColors.dark.highlights.alternativeHighlights[alternativeHighlightName]
+ },
+ {
+ "light": (relevantThemeColors, saveColor) => {
+ relevantThemeColors.light.highlights.alternativeHighlights[alternativeHighlightName] = saveColor;
+ },
+ "dark": (relevantThemeColors, saveColor) => {
+ relevantThemeColors.dark.highlights.alternativeHighlights[alternativeHighlightName] = saveColor;
+ }
+ },
+ () => alternativeHighlightName in this.plugin.settings.themes[this.plugin.settings.selectedTheme].colors.light.highlights.alternativeHighlights
+ );
+ setting.addExtraButton((button) => {
+ button.setIcon("trash").setTooltip("Delete highlight").onClick(() => {
+ delete this.plugin.settings.currentTheme.colors.light.highlights.alternativeHighlights[alternativeHighlightName];
+ delete this.plugin.settings.currentTheme.colors.dark.highlights.alternativeHighlights[alternativeHighlightName];
+ new import_obsidian2.Notice(`Removed highlight "${alternativeHighlightName}".`);
+ this.updateAlternativeHighlights(alternativeHighlightsContainer);
+ (async () => {
+ await this.plugin.saveSettings();
+ })();
+ });
+ });
+ });
+ });
+ }
};
var PickrResettable = class extends import_pickr.default {
- constructor(plugin, containerEl, setting, getRelevantThemeColor, saveRelevantThemeColor, tooltip) {
- const settings = {
- el: setting.controlEl.createDiv({ cls: "picker" }),
- theme: "nano",
- default: getColor(getRelevantThemeColor(plugin.settings.currentTheme.colors)),
- position: "left-middle",
- lockOpacity: false,
- components: {
- preview: true,
- hue: true,
- opacity: true,
- interaction: {
- hex: true,
- rgba: true,
- hsla: false,
- input: true,
- cancel: true,
- save: true
- }
- },
- i18n: {
- "ui:dialog": "Color picker dialog",
- "btn:toggle": typeof tooltip !== "undefined" ? tooltip : "Select color",
- "btn:swatch": "Color swatch",
- "btn:last-color": "Use previous color"
- }
- };
- if (containerEl.parentElement !== null)
- settings.container = containerEl.parentElement;
- super(settings);
- this.saveColor = (saveColor) => {
- saveRelevantThemeColor(plugin.settings.currentTheme.colors, saveColor);
- (async () => {
- await plugin.saveSettings();
- })();
- };
- this.resetColor = () => {
- const resetColor = getRelevantThemeColor(plugin.settings.themes[plugin.settings.selectedTheme].colors);
- this.setColor(getColor(resetColor));
- this.saveColor(resetColor);
- };
- }
+ constructor(plugin, containerEl, setting, getRelevantThemeColor, saveRelevantThemeColor, tooltip) {
+ const settings = {
+ el: setting.controlEl.createDiv({ cls: "picker" }),
+ theme: "nano",
+ default: getColor(getRelevantThemeColor(plugin.settings.currentTheme.colors)),
+ position: "left-middle",
+ lockOpacity: false,
+ components: {
+ preview: true,
+ hue: true,
+ opacity: true,
+ interaction: {
+ hex: true,
+ rgba: true,
+ hsla: false,
+ input: true,
+ cancel: true,
+ save: true
+ }
+ },
+ i18n: {
+ "ui:dialog": "Color picker dialog",
+ "btn:toggle": typeof tooltip !== "undefined" ? tooltip : "Select color",
+ "btn:swatch": "Color swatch",
+ "btn:last-color": "Use previous color"
+ }
+ };
+ if (containerEl.parentElement !== null)
+ settings.container = containerEl.parentElement;
+ super(settings);
+ this.saveColor = (saveColor) => {
+ saveRelevantThemeColor(plugin.settings.currentTheme.colors, saveColor);
+ (async () => {
+ await plugin.saveSettings();
+ })();
+ };
+ this.resetColor = () => {
+ const resetColor = getRelevantThemeColor(plugin.settings.themes[plugin.settings.selectedTheme].colors);
+ this.setColor(getColor(resetColor));
+ this.saveColor(resetColor);
+ };
+ }
};
function getRandomColor() {
- const letters = "0123456789ABCDEF";
- let color = "";
- for (let i2 = 0; i2 < 6; i2++)
- color += letters[Math.floor(Math.random() * 16)];
- return `#${color}FF`;
+ const letters = "0123456789ABCDEF";
+ let color = "";
+ for (let i2 = 0; i2 < 6; i2++)
+ color += letters[Math.floor(Math.random() * 16)];
+ return `#${color}FF`;
}
function isCss(possibleCss) {
- return possibleCss.startsWith("--") && typeof possibleCss === "string";
+ return possibleCss.startsWith("--") && typeof possibleCss === "string";
}
function calc(calcString) {
- const splitString = calcString.replace(/(\d*)%/g, "$1").split(" ");
- const operators = {
- "+": (num1, num2) => Math.max(num1 + num2, 0),
- "-": (num1, num2) => Math.max(num1 - num2, 0)
- };
- if (splitString.length === 3) {
- if (splitString[1] in operators) {
- return `${operators[splitString[1]](parseFloat(splitString[0]), parseFloat(splitString[2]))}%`;
- }
- }
- console.log("Warning: Couldn't parse calc string");
- return calcString;
+ const splitString = calcString.replace(/(\d*)%/g, "$1").split(" ");
+ const operators = {
+ "+": (num1, num2) => Math.max(num1 + num2, 0),
+ "-": (num1, num2) => Math.max(num1 - num2, 0)
+ };
+ if (splitString.length === 3) {
+ if (splitString[1] in operators) {
+ return `${operators[splitString[1]](parseFloat(splitString[0]), parseFloat(splitString[2]))}%`;
+ }
+ }
+ console.log("Warning: Couldn't parse calc string");
+ return calcString;
}
function getCssVariable(cssVariable) {
- let variableValue = window.getComputedStyle(document.body).getPropertyValue(cssVariable).trim();
- if (typeof variableValue === "string" && variableValue.trim().startsWith("#"))
- return `#${variableValue.trim().substring(1)}`;
- else if (variableValue.startsWith("rgb"))
- return `#${dt.toHEXA(variableValue.replace(/calc\((.*?)\)/g, (match, capture) => calc(capture))).substring(1)}`;
- else if (variableValue.startsWith("hsl"))
- return `#${dt.toHEXA(variableValue.replace(/calc\((.*?)\)/g, (match, capture) => calc(capture))).substring(1)}`;
- else {
- console.log(`Warning: Couldn't determine color format - ${variableValue}`);
- }
- return `#${dt.toHEXA(variableValue).substring(1)}`;
+ let variableValue = window.getComputedStyle(document.body).getPropertyValue(cssVariable).trim();
+ if (typeof variableValue === "string" && variableValue.trim().startsWith("#"))
+ return `#${variableValue.trim().substring(1)}`;
+ else if (variableValue.startsWith("rgb"))
+ return `#${dt.toHEXA(variableValue.replace(/calc\((.*?)\)/g, (match, capture) => calc(capture))).substring(1)}`;
+ else if (variableValue.startsWith("hsl"))
+ return `#${dt.toHEXA(variableValue.replace(/calc\((.*?)\)/g, (match, capture) => calc(capture))).substring(1)}`;
+ else {
+ console.log(`Warning: Couldn't determine color format - ${variableValue}`);
+ }
+ return `#${dt.toHEXA(variableValue).substring(1)}`;
}
function getColor(themeColor) {
- return isCss(themeColor) ? getCssVariable(themeColor) : themeColor;
- ;
+ return isCss(themeColor) ? getCssVariable(themeColor) : themeColor;
+ ;
}
var COLOR_NAME_REGEX = /^[^\d]\w*$/;
// src/main.ts
var CodeblockCustomizerPlugin = class extends import_obsidian3.Plugin {
- async onload() {
- document.body.classList.add("codeblock-customizer");
- await this.loadSettings();
- this.extensions = [];
- loadIcons();
- codeblockHeader.settings = this.settings;
- this.extensions.push(codeblockHeader);
- collapseField.pluginSettings = this.settings;
- this.extensions.push(collapseField);
- this.extensions.push(codeblockHighlight(this.settings));
- this.registerEditorExtension(this.extensions);
- const settingsTab = new SettingsTab(this.app, this);
- this.addSettingTab(settingsTab);
- updateSettingStyles(this.settings);
- this.registerEvent(this.app.workspace.on("css-change", this.handleCssChange.bind(this, settingsTab), this));
- this.registerMarkdownPostProcessor(async (el, ctx) => {
- await ReadingView(el, ctx, this);
- });
- console.log("loading CodeBlock Customizer plugin");
- }
- // onload
- handleCssChange(settingsTab) {
- console.log("updating css");
- }
- // handleCssChange
- onunload() {
- console.log("unloading CodeBlock Customizer plugin");
- for (const url of Object.values(BLOBS)) {
- URL.revokeObjectURL(url);
- }
- }
- async loadSettings() {
- this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData());
- }
- async saveSettings() {
- await this.saveData(this.settings);
- this.app.workspace.updateOptions();
- }
+ async onload() {
+ await this.loadSettings();
+ document.body.classList.add("codeblock-customizer");
+ loadIcons();
+ codeblockHeader.settings = this.settings;
+ collapseField.pluginSettings = this.settings;
+ this.registerEditorExtension([
+ codeblockHeader,
+ collapseField,
+ codeblockHighlight(this.settings)
+ ]);
+ const settingsTab = new SettingsTab(this.app, this);
+ this.addSettingTab(settingsTab);
+ this.registerEvent(this.app.workspace.on("css-change", this.handleCssChange.bind(this, settingsTab), this));
+ this.registerMarkdownPostProcessor(async (el, ctx) => {
+ await ReadingView(el, ctx, this);
+ });
+ console.log("loading CodeBlock Customizer plugin");
+ }
+ // onload
+ handleCssChange(settingsTab) {
+ console.log("updating css");
+ }
+ // handleCssChange
+ onunload() {
+ console.log("unloading CodeBlock Customizer plugin");
+ for (const url of Object.values(BLOBS)) {
+ URL.revokeObjectURL(url);
+ }
+ }
+ async loadSettings() {
+ this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData());
+ }
+ async saveSettings() {
+ await this.saveData(this.settings);
+ this.app.workspace.updateOptions();
+ }
};
/*! Bundled license information:
@simonwep/pickr/dist/pickr.min.js:
- (*! Pickr 1.8.2 MIT | https://github.com/Simonwep/pickr *)
+ (*! Pickr 1.8.2 MIT | https://github.com/Simonwep/pickr *)
*/
-//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibm9kZV9tb2R1bGVzL0BzaW1vbndlcC9waWNrci9kaXN0L3dlYnBhY2s6L3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsICJub2RlX21vZHVsZXMvQHNpbW9ud2VwL3BpY2tyL2Rpc3Qvd2VicGFjazovd2VicGFjay9ib290c3RyYXAiLCAibm9kZV9tb2R1bGVzL0BzaW1vbndlcC9waWNrci9kaXN0L3dlYnBhY2s6L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsICJub2RlX21vZHVsZXMvQHNpbW9ud2VwL3BpY2tyL2Rpc3Qvd2VicGFjazovd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsICJub2RlX21vZHVsZXMvQHNpbW9ud2VwL3BpY2tyL2Rpc3Qvd2VicGFjazovd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsICJub2RlX21vZHVsZXMvQHNpbW9ud2VwL3BpY2tyL2Rpc3Qvd2VicGFjazovc3JjL2pzL3V0aWxzL3V0aWxzLmpzIiwgIm5vZGVfbW9kdWxlcy9Ac2ltb253ZXAvcGlja3IvZGlzdC93ZWJwYWNrOi9zcmMvanMvdXRpbHMvY29sb3IuanMiLCAibm9kZV9tb2R1bGVzL0BzaW1vbndlcC9waWNrci9kaXN0L3dlYnBhY2s6L3NyYy9qcy91dGlscy9oc3ZhY29sb3IuanMiLCAibm9kZV9tb2R1bGVzL0BzaW1vbndlcC9waWNrci9kaXN0L3dlYnBhY2s6L3NyYy9qcy9saWJzL21vdmVhYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy9Ac2ltb253ZXAvcGlja3IvZGlzdC93ZWJwYWNrOi9zcmMvanMvbGlicy9zZWxlY3RhYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy9Ac2ltb253ZXAvcGlja3IvZGlzdC93ZWJwYWNrOi9zcmMvanMvdGVtcGxhdGUuanMiLCAibm9kZV9tb2R1bGVzL0BzaW1vbndlcC9waWNrci9kaXN0L3NyYy9OYW5vUG9wLnRzIiwgIm5vZGVfbW9kdWxlcy9Ac2ltb253ZXAvcGlja3IvZGlzdC93ZWJwYWNrOi9zcmMvanMvcGlja3IuanMiLCAic3JjL21haW4udHMiLCAic3JjL1NldHRpbmdzLnRzIiwgInNyYy9Db2RlQmxvY2tIaWdobGlnaHQudHMiLCAic3JjL0NvbnN0LnRzIiwgInNyYy9VdGlscy50cyIsICJzcmMvSGVhZGVyLnRzIiwgInNyYy9SZWFkaW5nVmlldy50cyIsICJzcmMvU2V0dGluZ3NUYWIudHMiLCAibm9kZV9tb2R1bGVzL2NvbG9ydHJhbnNsYXRvci9lc20vaW5kZXguanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIlBpY2tyXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIlBpY2tyXCJdID0gZmFjdG9yeSgpO1xufSkoc2VsZiwgZnVuY3Rpb24oKSB7XG5yZXR1cm4gIiwgIi8vIFRoZSByZXF1aXJlIHNjb3BlXG52YXIgX193ZWJwYWNrX3JlcXVpcmVfXyA9IHt9O1xuXG4iLCAiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwgIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCAiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwgIi8qIGVzbGludC1kaXNhYmxlIHByZWZlci1yZXN0LXBhcmFtcyAqL1xyXG5mdW5jdGlvbiBldmVudExpc3RlbmVyKG1ldGhvZCwgZWxlbWVudHMsIGV2ZW50cywgZm4sIG9wdGlvbnMgPSB7fSkge1xyXG5cclxuICAgIC8vIE5vcm1hbGl6ZSBhcnJheVxyXG4gICAgaWYgKGVsZW1lbnRzIGluc3RhbmNlb2YgSFRNTENvbGxlY3Rpb24gfHwgZWxlbWVudHMgaW5zdGFuY2VvZiBOb2RlTGlzdCkge1xyXG4gICAgICAgIGVsZW1lbnRzID0gQXJyYXkuZnJvbShlbGVtZW50cyk7XHJcbiAgICB9IGVsc2UgaWYgKCFBcnJheS5pc0FycmF5KGVsZW1lbnRzKSkge1xyXG4gICAgICAgIGVsZW1lbnRzID0gW2VsZW1lbnRzXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXZlbnRzKSkge1xyXG4gICAgICAgIGV2ZW50cyA9IFtldmVudHNdO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3QgZWwgb2YgZWxlbWVudHMpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGV2IG9mIGV2ZW50cykge1xyXG4gICAgICAgICAgICBlbFttZXRob2RdKGV2LCBmbiwge2NhcHR1cmU6IGZhbHNlLCAuLi5vcHRpb25zfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xyXG59XHJcblxyXG4vKipcclxuICogQWRkIGV2ZW50KHMpIHRvIGVsZW1lbnQocykuXHJcbiAqIEBwYXJhbSBlbGVtZW50cyBET00tRWxlbWVudHNcclxuICogQHBhcmFtIGV2ZW50cyBFdmVudCBuYW1lc1xyXG4gKiBAcGFyYW0gZm4gQ2FsbGJhY2tcclxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgb3B0aW9uc1xyXG4gKiBAcmV0dXJuIEFycmF5IHBhc3NlZCBhcmd1bWVudHNcclxuICovXHJcbmV4cG9ydCBjb25zdCBvbiA9IGV2ZW50TGlzdGVuZXIuYmluZChudWxsLCAnYWRkRXZlbnRMaXN0ZW5lcicpO1xyXG5cclxuLyoqXHJcbiAqIFJlbW92ZSBldmVudChzKSBmcm9tIGVsZW1lbnQocykuXHJcbiAqIEBwYXJhbSBlbGVtZW50cyBET00tRWxlbWVudHNcclxuICogQHBhcmFtIGV2ZW50cyBFdmVudCBuYW1lc1xyXG4gKiBAcGFyYW0gZm4gQ2FsbGJhY2tcclxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgb3B0aW9uc1xyXG4gKiBAcmV0dXJuIEFycmF5IHBhc3NlZCBhcmd1bWVudHNcclxuICovXHJcbmV4cG9ydCBjb25zdCBvZmYgPSBldmVudExpc3RlbmVyLmJpbmQobnVsbCwgJ3JlbW92ZUV2ZW50TGlzdGVuZXInKTtcclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIGFuIERPTS1FbGVtZW50IG91dCBvZiBhIHN0cmluZyAoU2luZ2xlIGVsZW1lbnQpLlxyXG4gKiBAcGFyYW0gaHRtbCBIVE1MIHJlcHJlc2VudGluZyBhIHNpbmdsZSBlbGVtZW50XHJcbiAqIEByZXR1cm5zIHtFbGVtZW50IHwgbnVsbH0gVGhlIGVsZW1lbnQuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRWxlbWVudEZyb21TdHJpbmcoaHRtbCkge1xyXG4gICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICBkaXYuaW5uZXJIVE1MID0gaHRtbC50cmltKCk7XHJcbiAgICByZXR1cm4gZGl2LmZpcnN0RWxlbWVudENoaWxkO1xyXG59XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhIG5ldyBodG1sIGVsZW1lbnQsIGV2ZXJ5IGVsZW1lbnQgd2hpY2ggaGFzXHJcbiAqIGEgJzpyZWYnIGF0dHJpYnV0ZSB3aWxsIGJlIHNhdmVkIGluIGEgb2JqZWN0ICh3aGljaCB3aWxsIGJlIHJldHVybmVkKVxyXG4gKiB3aGVyZSB0aGUgdmFsdWUgb2YgJzpyZWYnIGlzIHRoZSBvYmplY3Qta2V5IGFuZCB0aGUgdmFsdWUgdGhlIEhUTUxFbGVtZW50LlxyXG4gKlxyXG4gKiBJdCdzIHBvc3NpYmxlIHRvIGNyZWF0ZSBhIGhpZXJhcmNoeSBpZiB5b3UgYWRkIGEgJzpvYmonIGF0dHJpYnV0ZS4gRXZlcnlcclxuICogc2libGluZyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBvYmplY3Qgd2hpY2ggd2lsbCBnZXQgdGhlIG5hbWUgZnJvbSB0aGUgJ2RhdGEtY29uJyBhdHRyaWJ1dGUuXHJcbiAqXHJcbiAqIElmIHlvdSB3YW50IHRvIGNyZWF0ZSBhbiBBcnJheSBvdXQgb2YgbXVsdGlwbGUgZWxlbWVudHMsIHlvdSBjYW4gdXNlIHRoZSAnOmFycicgYXR0cmlidXRlLFxyXG4gKiB0aGUgdmFsdWUgZGVmaW5lcyB0aGUga2V5IGFuZCBhbGwgZWxlbWVudHMsIHdoaWNoIGhhcyB0aGUgc2FtZSBwYXJlbnQgYW5kIHRoZSBzYW1lICdkYXRhLWFycicgYXR0cmlidXRlLFxyXG4gKiB3b3VsZCBiZSBhZGRlZCB0byBpdC5cclxuICpcclxuICogQHBhcmFtIHN0ciAtIFRoZSBIVE1MIFN0cmluZy5cclxuICovXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRnJvbVRlbXBsYXRlKHN0cikge1xyXG5cclxuICAgIC8vIFJlbW92ZXMgYW4gYXR0cmlidXRlIGZyb20gYSBIVE1MRWxlbWVudCBhbmQgcmV0dXJucyB0aGUgdmFsdWUuXHJcbiAgICBjb25zdCByZW1vdmVBdHRyaWJ1dGUgPSAoZWwsIG5hbWUpID0+IHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IGVsLmdldEF0dHJpYnV0ZShuYW1lKTtcclxuICAgICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBSZWN1cnNpdmUgZnVuY3Rpb24gdG8gcmVzb2x2ZSB0ZW1wbGF0ZVxyXG4gICAgY29uc3QgcmVzb2x2ZSA9IChlbGVtZW50LCBiYXNlID0ge30pID0+IHtcclxuXHJcbiAgICAgICAgLy8gQ2hlY2sga2V5IGFuZCBjb250YWluZXIgYXR0cmlidXRlXHJcbiAgICAgICAgY29uc3QgY29uID0gcmVtb3ZlQXR0cmlidXRlKGVsZW1lbnQsICc6b2JqJyk7XHJcbiAgICAgICAgY29uc3Qga2V5ID0gcmVtb3ZlQXR0cmlidXRlKGVsZW1lbnQsICc6cmVmJyk7XHJcbiAgICAgICAgY29uc3Qgc3VidHJlZSA9IGNvbiA/IChiYXNlW2Nvbl0gPSB7fSkgOiBiYXNlO1xyXG5cclxuICAgICAgICAvLyBDaGVjayBhbmQgc2F2ZSBlbGVtZW50XHJcbiAgICAgICAga2V5ICYmIChiYXNlW2tleV0gPSBlbGVtZW50KTtcclxuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIEFycmF5LmZyb20oZWxlbWVudC5jaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgY29uc3QgYXJyID0gcmVtb3ZlQXR0cmlidXRlKGNoaWxkLCAnOmFycicpO1xyXG4gICAgICAgICAgICBjb25zdCBzdWIgPSByZXNvbHZlKGNoaWxkLCBhcnIgPyB7fSA6IHN1YnRyZWUpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGFycikge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZXJlIGlzIGFscmVhZHkgYW4gYXJyYXkgYW5kIGFkZCBlbGVtZW50XHJcbiAgICAgICAgICAgICAgICAoc3VidHJlZVthcnJdIHx8IChzdWJ0cmVlW2Fycl0gPSBbXSkpXHJcbiAgICAgICAgICAgICAgICAgICAgLnB1c2goT2JqZWN0LmtleXMoc3ViKS5sZW5ndGggPyBzdWIgOiBjaGlsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBiYXNlO1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gcmVzb2x2ZShjcmVhdGVFbGVtZW50RnJvbVN0cmluZyhzdHIpKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFBvbHlmaWxsIGZvciBzYWZhcmkgJiBmaXJlZm94IGZvciB0aGUgZXZlbnRQYXRoIGV2ZW50IHByb3BlcnR5LlxyXG4gKiBAcGFyYW0gZXZ0IFRoZSBldmVudCBvYmplY3QuXHJcbiAqIEByZXR1cm4gW1N0cmluZ10gZXZlbnQgcGF0aC5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBldmVudFBhdGgoZXZ0KSB7XHJcbiAgICBsZXQgcGF0aCA9IGV2dC5wYXRoIHx8IChldnQuY29tcG9zZWRQYXRoICYmIGV2dC5jb21wb3NlZFBhdGgoKSk7XHJcbiAgICBpZiAocGF0aCkge1xyXG4gICAgICAgIHJldHVybiBwYXRoO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBlbCA9IGV2dC50YXJnZXQucGFyZW50RWxlbWVudDtcclxuICAgIHBhdGggPSBbZXZ0LnRhcmdldCwgZWxdO1xyXG4gICAgd2hpbGUgKGVsID0gZWwucGFyZW50RWxlbWVudCkge1xyXG4gICAgICAgIHBhdGgucHVzaChlbCk7XHJcbiAgICB9XHJcblxyXG4gICAgcGF0aC5wdXNoKGRvY3VtZW50LCB3aW5kb3cpO1xyXG4gICAgcmV0dXJuIHBhdGg7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXNvbHZlcyBhIEhUTUxFbGVtZW50IGJ5IHF1ZXJ5LlxyXG4gKiBAcGFyYW0gdmFsXHJcbiAqIEByZXR1cm5zIHtudWxsfERvY3VtZW50fEVsZW1lbnR9XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUVsZW1lbnQodmFsKSB7XHJcbiAgICBpZiAodmFsIGluc3RhbmNlb2YgRWxlbWVudCkge1xyXG4gICAgICAgIHJldHVybiB2YWw7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbC5zcGxpdCgvPj4vZykucmVkdWNlKChwdiwgY3YsIGNpLCBhKSA9PiB7XHJcbiAgICAgICAgICAgIHB2ID0gcHYucXVlcnlTZWxlY3Rvcihjdik7XHJcbiAgICAgICAgICAgIHJldHVybiBjaSA8IGEubGVuZ3RoIC0gMSA/IHB2LnNoYWRvd1Jvb3QgOiBwdjtcclxuICAgICAgICB9LCBkb2N1bWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIHRoZSBhYmlsaXR5IHRvIGNoYW5nZSBudW1iZXJzIGluIGFuIGlucHV0IGZpZWxkIHdpdGggdGhlIHNjcm9sbC13aGVlbC5cclxuICogQHBhcmFtIGVsXHJcbiAqIEBwYXJhbSBtYXBwZXJcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGp1c3RhYmxlSW5wdXROdW1iZXJzKGVsLCBtYXBwZXIgPSB2ID0+IHYpIHtcclxuXHJcbiAgICBmdW5jdGlvbiBoYW5kbGVTY3JvbGwoZSkge1xyXG4gICAgICAgIGNvbnN0IGluYyA9IChbMC4wMDEsIDAuMDEsIDAuMV0pW051bWJlcihlLnNoaWZ0S2V5IHx8IGUuY3RybEtleSAqIDIpXSAqIChlLmRlbHRhWSA8IDAgPyAxIDogLTEpO1xyXG5cclxuICAgICAgICBsZXQgaW5kZXggPSAwO1xyXG4gICAgICAgIGxldCBvZmYgPSBlbC5zZWxlY3Rpb25TdGFydDtcclxuICAgICAgICBlbC52YWx1ZSA9IGVsLnZhbHVlLnJlcGxhY2UoL1tcXGQuXSsvZywgKHYsIGkpID0+IHtcclxuXHJcbiAgICAgICAgICAgIC8vIENoZWNrIGlmIG51bWJlciBpcyBpbiBjdXJzb3IgcmFuZ2UgYW5kIGluY3JlYXNlIGl0XHJcbiAgICAgICAgICAgIGlmIChpIDw9IG9mZiAmJiBpICsgdi5sZW5ndGggPj0gb2ZmKSB7XHJcbiAgICAgICAgICAgICAgICBvZmYgPSBpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hcHBlcihOdW1iZXIodiksIGluYywgaW5kZXgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpbmRleCsrO1xyXG4gICAgICAgICAgICByZXR1cm4gdjtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgZWwuZm9jdXMoKTtcclxuICAgICAgICBlbC5zZXRTZWxlY3Rpb25SYW5nZShvZmYsIG9mZik7XHJcblxyXG4gICAgICAgIC8vIFByZXZlbnQgZGVmYXVsdCBhbmQgdHJpZ2dlciBpbnB1dCBldmVudFxyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBlbC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQmluZCBldmVudHNcclxuICAgIG9uKGVsLCAnZm9jdXMnLCAoKSA9PiBvbih3aW5kb3csICd3aGVlbCcsIGhhbmRsZVNjcm9sbCwge3Bhc3NpdmU6IGZhbHNlfSkpO1xyXG4gICAgb24oZWwsICdibHVyJywgKCkgPT4gb2ZmKHdpbmRvdywgJ3doZWVsJywgaGFuZGxlU2Nyb2xsKSk7XHJcbn1cclxuIiwgIi8vIFNob3J0aGFuZHNcclxuY29uc3Qge21pbiwgbWF4LCBmbG9vciwgcm91bmR9ID0gTWF0aDtcclxuXHJcbi8qKlxyXG4gKiBUcmllcyB0byBjb252ZXJ0IGEgY29sb3IgbmFtZSB0byByZ2IvYSBoZXggcmVwcmVzZW50YXRpb25cclxuICogQHBhcmFtIG5hbWVcclxuICogQHJldHVybnMge3N0cmluZyB8IENhbnZhc0dyYWRpZW50IHwgQ2FudmFzUGF0dGVybn1cclxuICovXHJcbmZ1bmN0aW9uIHN0YW5kYXJkaXplQ29sb3IobmFtZSkge1xyXG5cclxuICAgIC8vIFNpbmNlIGludmFsaWQgY29sb3IncyB3aWxsIGJlIHBhcnNlZCBhcyBibGFjaywgZmlsdGVyIHRoZW0gb3V0XHJcbiAgICBpZiAobmFtZS50b0xvd2VyQ2FzZSgpID09PSAnYmxhY2snKSB7XHJcbiAgICAgICAgcmV0dXJuICcjMDAwJztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjdHggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKS5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgY3R4LmZpbGxTdHlsZSA9IG5hbWU7XHJcbiAgICByZXR1cm4gY3R4LmZpbGxTdHlsZSA9PT0gJyMwMDAnID8gbnVsbCA6IGN0eC5maWxsU3R5bGU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0IEhTViBzcGVjdHJ1bSB0byBSR0IuXHJcbiAqIEBwYXJhbSBoIEh1ZVxyXG4gKiBAcGFyYW0gcyBTYXR1cmF0aW9uXHJcbiAqIEBwYXJhbSB2IFZhbHVlXHJcbiAqIEByZXR1cm5zIHtudW1iZXJbXX0gQXJyYXkgd2l0aCByZ2IgdmFsdWVzLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGhzdlRvUmdiKGgsIHMsIHYpIHtcclxuICAgIGggPSAoaCAvIDM2MCkgKiA2O1xyXG4gICAgcyAvPSAxMDA7XHJcbiAgICB2IC89IDEwMDtcclxuXHJcbiAgICBjb25zdCBpID0gZmxvb3IoaCk7XHJcblxyXG4gICAgY29uc3QgZiA9IGggLSBpO1xyXG4gICAgY29uc3QgcCA9IHYgKiAoMSAtIHMpO1xyXG4gICAgY29uc3QgcSA9IHYgKiAoMSAtIGYgKiBzKTtcclxuICAgIGNvbnN0IHQgPSB2ICogKDEgLSAoMSAtIGYpICogcyk7XHJcblxyXG4gICAgY29uc3QgbW9kID0gaSAlIDY7XHJcbiAgICBjb25zdCByID0gW3YsIHEsIHAsIHAsIHQsIHZdW21vZF07XHJcbiAgICBjb25zdCBnID0gW3QsIHYsIHYsIHEsIHAsIHBdW21vZF07XHJcbiAgICBjb25zdCBiID0gW3AsIHAsIHQsIHYsIHYsIHFdW21vZF07XHJcblxyXG4gICAgcmV0dXJuIFtcclxuICAgICAgICByICogMjU1LFxyXG4gICAgICAgIGcgKiAyNTUsXHJcbiAgICAgICAgYiAqIDI1NVxyXG4gICAgXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbnZlcnQgSFNWIHNwZWN0cnVtIHRvIEhleC5cclxuICogQHBhcmFtIGggSHVlXHJcbiAqIEBwYXJhbSBzIFNhdHVyYXRpb25cclxuICogQHBhcmFtIHYgVmFsdWVcclxuICogQHJldHVybnMge3N0cmluZ1tdfSBIZXggdmFsdWVzXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaHN2VG9IZXgoaCwgcywgdikge1xyXG4gICAgcmV0dXJuIGhzdlRvUmdiKGgsIHMsIHYpLm1hcCh2ID0+XHJcbiAgICAgICAgcm91bmQodikudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJylcclxuICAgICk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0IEhTViBzcGVjdHJ1bSB0byBDTVlLLlxyXG4gKiBAcGFyYW0gaCBIdWVcclxuICogQHBhcmFtIHMgU2F0dXJhdGlvblxyXG4gKiBAcGFyYW0gdiBWYWx1ZVxyXG4gKiBAcmV0dXJucyB7bnVtYmVyW119IENNWUsgdmFsdWVzXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaHN2VG9DbXlrKGgsIHMsIHYpIHtcclxuICAgIGNvbnN0IHJnYiA9IGhzdlRvUmdiKGgsIHMsIHYpO1xyXG4gICAgY29uc3QgciA9IHJnYlswXSAvIDI1NTtcclxuICAgIGNvbnN0IGcgPSByZ2JbMV0gLyAyNTU7XHJcbiAgICBjb25zdCBiID0gcmdiWzJdIC8gMjU1O1xyXG5cclxuICAgIGNvbnN0IGsgPSBtaW4oMSAtIHIsIDEgLSBnLCAxIC0gYik7XHJcbiAgICBjb25zdCBjID0gayA9PT0gMSA/IDAgOiAoMSAtIHIgLSBrKSAvICgxIC0gayk7XHJcbiAgICBjb25zdCBtID0gayA9PT0gMSA/IDAgOiAoMSAtIGcgLSBrKSAvICgxIC0gayk7XHJcbiAgICBjb25zdCB5ID0gayA9PT0gMSA/IDAgOiAoMSAtIGIgLSBrKSAvICgxIC0gayk7XHJcblxyXG4gICAgcmV0dXJuIFtcclxuICAgICAgICBjICogMTAwLFxyXG4gICAgICAgIG0gKiAxMDAsXHJcbiAgICAgICAgeSAqIDEwMCxcclxuICAgICAgICBrICogMTAwXHJcbiAgICBdO1xyXG59XHJcblxyXG4vKipcclxuICogQ29udmVydCBIU1Ygc3BlY3RydW0gdG8gSFNMLlxyXG4gKiBAcGFyYW0gaCBIdWVcclxuICogQHBhcmFtIHMgU2F0dXJhdGlvblxyXG4gKiBAcGFyYW0gdiBWYWx1ZVxyXG4gKiBAcmV0dXJucyB7bnVtYmVyW119IEhTTCB2YWx1ZXNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBoc3ZUb0hzbChoLCBzLCB2KSB7XHJcbiAgICBzIC89IDEwMDtcclxuICAgIHYgLz0gMTAwO1xyXG5cclxuICAgIGNvbnN0IGwgPSAoMiAtIHMpICogdiAvIDI7XHJcblxyXG4gICAgaWYgKGwgIT09IDApIHtcclxuICAgICAgICBpZiAobCA9PT0gMSkge1xyXG4gICAgICAgICAgICBzID0gMDtcclxuICAgICAgICB9IGVsc2UgaWYgKGwgPCAwLjUpIHtcclxuICAgICAgICAgICAgcyA9IHMgKiB2IC8gKGwgKiAyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzID0gcyAqIHYgLyAoMiAtIGwgKiAyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFtcclxuICAgICAgICBoLFxyXG4gICAgICAgIHMgKiAxMDAsXHJcbiAgICAgICAgbCAqIDEwMFxyXG4gICAgXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbnZlcnQgUkdCIHRvIEhTVi5cclxuICogQHBhcmFtIHIgUmVkXHJcbiAqIEBwYXJhbSBnIEdyZWVuXHJcbiAqIEBwYXJhbSBiIEJsdWVcclxuICogQHJldHVybiB7bnVtYmVyW119IEhTViB2YWx1ZXMuXHJcbiAqL1xyXG5mdW5jdGlvbiByZ2JUb0hzdihyLCBnLCBiKSB7XHJcbiAgICByIC89IDI1NTtcclxuICAgIGcgLz0gMjU1O1xyXG4gICAgYiAvPSAyNTU7XHJcblxyXG4gICAgY29uc3QgbWluVmFsID0gbWluKHIsIGcsIGIpO1xyXG4gICAgY29uc3QgbWF4VmFsID0gbWF4KHIsIGcsIGIpO1xyXG4gICAgY29uc3QgZGVsdGEgPSBtYXhWYWwgLSBtaW5WYWw7XHJcblxyXG4gICAgbGV0IGgsIHM7XHJcbiAgICBjb25zdCB2ID0gbWF4VmFsO1xyXG4gICAgaWYgKGRlbHRhID09PSAwKSB7XHJcbiAgICAgICAgaCA9IHMgPSAwO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBzID0gZGVsdGEgLyBtYXhWYWw7XHJcbiAgICAgICAgY29uc3QgZHIgPSAoKChtYXhWYWwgLSByKSAvIDYpICsgKGRlbHRhIC8gMikpIC8gZGVsdGE7XHJcbiAgICAgICAgY29uc3QgZGcgPSAoKChtYXhWYWwgLSBnKSAvIDYpICsgKGRlbHRhIC8gMikpIC8gZGVsdGE7XHJcbiAgICAgICAgY29uc3QgZGIgPSAoKChtYXhWYWwgLSBiKSAvIDYpICsgKGRlbHRhIC8gMikpIC8gZGVsdGE7XHJcblxyXG4gICAgICAgIGlmIChyID09PSBtYXhWYWwpIHtcclxuICAgICAgICAgICAgaCA9IGRiIC0gZGc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChnID09PSBtYXhWYWwpIHtcclxuICAgICAgICAgICAgaCA9ICgxIC8gMykgKyBkciAtIGRiO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoYiA9PT0gbWF4VmFsKSB7XHJcbiAgICAgICAgICAgIGggPSAoMiAvIDMpICsgZGcgLSBkcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChoIDwgMCkge1xyXG4gICAgICAgICAgICBoICs9IDE7XHJcbiAgICAgICAgfSBlbHNlIGlmIChoID4gMSkge1xyXG4gICAgICAgICAgICBoIC09IDE7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBbXHJcbiAgICAgICAgaCAqIDM2MCxcclxuICAgICAgICBzICogMTAwLFxyXG4gICAgICAgIHYgKiAxMDBcclxuICAgIF07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0IENNWUsgdG8gSFNWLlxyXG4gKiBAcGFyYW0gYyBDeWFuXHJcbiAqIEBwYXJhbSBtIE1hZ2VudGFcclxuICogQHBhcmFtIHkgWWVsbG93XHJcbiAqIEBwYXJhbSBrIEtleSAoQmxhY2spXHJcbiAqIEByZXR1cm4ge251bWJlcltdfSBIU1YgdmFsdWVzLlxyXG4gKi9cclxuZnVuY3Rpb24gY215a1RvSHN2KGMsIG0sIHksIGspIHtcclxuICAgIGMgLz0gMTAwO1xyXG4gICAgbSAvPSAxMDA7XHJcbiAgICB5IC89IDEwMDtcclxuICAgIGsgLz0gMTAwO1xyXG5cclxuICAgIGNvbnN0IHIgPSAoMSAtIG1pbigxLCBjICogKDEgLSBrKSArIGspKSAqIDI1NTtcclxuICAgIGNvbnN0IGcgPSAoMSAtIG1pbigxLCBtICogKDEgLSBrKSArIGspKSAqIDI1NTtcclxuICAgIGNvbnN0IGIgPSAoMSAtIG1pbigxLCB5ICogKDEgLSBrKSArIGspKSAqIDI1NTtcclxuXHJcbiAgICByZXR1cm4gWy4uLnJnYlRvSHN2KHIsIGcsIGIpXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbnZlcnQgSFNMIHRvIEhTVi5cclxuICogQHBhcmFtIGggSHVlXHJcbiAqIEBwYXJhbSBzIFNhdHVyYXRpb25cclxuICogQHBhcmFtIGwgTGlnaHRuZXNzXHJcbiAqIEByZXR1cm4ge251bWJlcltdfSBIU1YgdmFsdWVzLlxyXG4gKi9cclxuZnVuY3Rpb24gaHNsVG9Ic3YoaCwgcywgbCkge1xyXG4gICAgcyAvPSAxMDA7XHJcbiAgICBsIC89IDEwMDtcclxuICAgIHMgKj0gbCA8IDAuNSA/IGwgOiAxIC0gbDtcclxuXHJcbiAgICBjb25zdCBucyA9ICgyICogcyAvIChsICsgcykpICogMTAwO1xyXG4gICAgY29uc3QgdiA9IChsICsgcykgKiAxMDA7XHJcbiAgICByZXR1cm4gW2gsIGlzTmFOKG5zKSA/IDAgOiBucywgdl07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0IEhFWCB0byBIU1YuXHJcbiAqIEBwYXJhbSBoZXggSGV4YWRlY2ltYWwgc3RyaW5nIG9mIHJnYiBjb2xvcnMsIGNhbiBoYXZlIGxlbmd0aCAzIG9yIDYuXHJcbiAqIEByZXR1cm4ge251bWJlcltdfSBIU1YgdmFsdWVzLlxyXG4gKi9cclxuZnVuY3Rpb24gaGV4VG9Ic3YoaGV4KSB7XHJcbiAgICByZXR1cm4gcmdiVG9Ic3YoLi4uaGV4Lm1hdGNoKC8uezJ9L2cpLm1hcCh2ID0+IHBhcnNlSW50KHYsIDE2KSkpO1xyXG59XHJcblxyXG4vKipcclxuICogVHJ5J3MgdG8gcGFyc2UgYSBzdHJpbmcgd2hpY2ggcmVwcmVzZW50cyBhIGNvbG9yIHRvIGEgSFNWIGFycmF5LlxyXG4gKiBDdXJyZW50IHN1cHBvcnRlZCB0eXBlcyBhcmUgY215aywgcmdiYSwgaHNsYSBhbmQgaGV4YWRlY2ltYWwuXHJcbiAqIEBwYXJhbSBzdHJcclxuICogQHJldHVybiB7Kn1cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVRvSFNWQShzdHIpIHtcclxuXHJcbiAgICAvLyBDaGVjayBpZiBzdHJpbmcgaXMgYSBjb2xvci1uYW1lXHJcbiAgICBzdHIgPSBzdHIubWF0Y2goL15bYS16QS1aXSskLykgPyBzdGFuZGFyZGl6ZUNvbG9yKHN0cikgOiBzdHI7XHJcblxyXG4gICAgLy8gUmVndWxhciBleHByZXNzaW9ucyB0byBtYXRjaCBkaWZmZXJlbnQgdHlwZXMgb2YgY29sb3IgcmVwcmVzZW50aW9uXHJcbiAgICBjb25zdCByZWdleCA9IHtcclxuICAgICAgICBjbXlrOiAvXmNteWtbXFxEXSsoW1xcZC5dKylbXFxEXSsoW1xcZC5dKylbXFxEXSsoW1xcZC5dKylbXFxEXSsoW1xcZC5dKykvaSxcclxuICAgICAgICByZ2JhOiAvXigocmdiYSl8cmdiKVtcXERdKyhbXFxkLl0rKVtcXERdKyhbXFxkLl0rKVtcXERdKyhbXFxkLl0rKVtcXERdKj8oW1xcZC5dK3wkKS9pLFxyXG4gICAgICAgIGhzbGE6IC9eKChoc2xhKXxoc2wpW1xcRF0rKFtcXGQuXSspW1xcRF0rKFtcXGQuXSspW1xcRF0rKFtcXGQuXSspW1xcRF0qPyhbXFxkLl0rfCQpL2ksXHJcbiAgICAgICAgaHN2YTogL14oKGhzdmEpfGhzdilbXFxEXSsoW1xcZC5dKylbXFxEXSsoW1xcZC5dKylbXFxEXSsoW1xcZC5dKylbXFxEXSo/KFtcXGQuXSt8JCkvaSxcclxuICAgICAgICBoZXhhOiAvXiM/KChbXFxkQS1GYS1mXXszLDR9KXwoW1xcZEEtRmEtZl17Nn0pfChbXFxkQS1GYS1mXXs4fSkpJC9pXHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGFrZXMgYW4gQXJyYXkgb2YgYW55IHR5cGUsIGNvbnZlcnQgc3RyaW5ncyB3aGljaCByZXByZXNlbnRzXHJcbiAgICAgKiBhIG51bWJlciB0byBhIG51bWJlciBhbiBhbnl0aGluZyBlbHNlIHRvIHVuZGVmaW5lZC5cclxuICAgICAqIEBwYXJhbSBhcnJheVxyXG4gICAgICogQHJldHVybiB7Kn1cclxuICAgICAqL1xyXG4gICAgY29uc3QgbnVtYXJpemUgPSBhcnJheSA9PiBhcnJheS5tYXAodiA9PiAvXih8XFxkKylcXC5cXGQrfFxcZCskLy50ZXN0KHYpID8gTnVtYmVyKHYpIDogdW5kZWZpbmVkKTtcclxuXHJcbiAgICBsZXQgbWF0Y2g7XHJcbiAgICBpbnZhbGlkOiBmb3IgKGNvbnN0IHR5cGUgaW4gcmVnZXgpIHtcclxuXHJcbiAgICAgICAgLy8gQ2hlY2sgaWYgY3VycmVudCBzY2hlbWUgcGFzc2VkXHJcbiAgICAgICAgaWYgKCEobWF0Y2ggPSByZWdleFt0eXBlXS5leGVjKHN0cikpKSB7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gTWF0Y2hbMl0gZG9lcyBvbmx5IGNvbnRhaW4gYSB0cnVseSB2YWx1ZSBpZiByZ2JhLCBoc2xhLCBvciBoc2xhIGdvdCBtYXRjaGVkXHJcbiAgICAgICAgY29uc3QgYWxwaGFWYWxpZCA9IGEgPT4gKCEhbWF0Y2hbMl0gPT09ICh0eXBlb2YgYSA9PT0gJ251bWJlcicpKTtcclxuXHJcbiAgICAgICAgLy8gVHJ5IHRvIGNvbnZlcnRcclxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSAnY215ayc6IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IFssIGMsIG0sIHksIGtdID0gbnVtYXJpemUobWF0Y2gpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChjID4gMTAwIHx8IG0gPiAxMDAgfHwgeSA+IDEwMCB8fCBrID4gMTAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaW52YWxpZDtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge3ZhbHVlczogY215a1RvSHN2KGMsIG0sIHksIGspLCB0eXBlfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlICdyZ2JhJzoge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgWywgLCAsIHIsIGcsIGIsIGFdID0gbnVtYXJpemUobWF0Y2gpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChyID4gMjU1IHx8IGcgPiAyNTUgfHwgYiA+IDI1NSB8fCBhIDwgMCB8fCBhID4gMSB8fCAhYWxwaGFWYWxpZChhKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrIGludmFsaWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZXM6IFsuLi5yZ2JUb0hzdihyLCBnLCBiKSwgYV0sIGEsIHR5cGV9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgJ2hleGEnOiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgWywgaGV4XSA9IG1hdGNoO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChoZXgubGVuZ3RoID09PSA0IHx8IGhleC5sZW5ndGggPT09IDMpIHtcclxuICAgICAgICAgICAgICAgICAgICBoZXggPSBoZXguc3BsaXQoJycpLm1hcCh2ID0+IHYgKyB2KS5qb2luKCcnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCByYXcgPSBoZXguc3Vic3RyaW5nKDAsIDYpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGEgPSBoZXguc3Vic3RyaW5nKDYpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgMCAtIDI1NSB0byAwIC0gMSBmb3Igb3BhY2l0eVxyXG4gICAgICAgICAgICAgICAgYSA9IGEgPyAocGFyc2VJbnQoYSwgMTYpIC8gMjU1KSA6IHVuZGVmaW5lZDtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge3ZhbHVlczogWy4uLmhleFRvSHN2KHJhdyksIGFdLCBhLCB0eXBlfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlICdoc2xhJzoge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgWywgLCAsIGgsIHMsIGwsIGFdID0gbnVtYXJpemUobWF0Y2gpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChoID4gMzYwIHx8IHMgPiAxMDAgfHwgbCA+IDEwMCB8fCBhIDwgMCB8fCBhID4gMSB8fCAhYWxwaGFWYWxpZChhKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrIGludmFsaWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZXM6IFsuLi5oc2xUb0hzdihoLCBzLCBsKSwgYV0sIGEsIHR5cGV9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgJ2hzdmEnOiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBbLCAsICwgaCwgcywgdiwgYV0gPSBudW1hcml6ZShtYXRjaCk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGggPiAzNjAgfHwgcyA+IDEwMCB8fCB2ID4gMTAwIHx8IGEgPCAwIHx8IGEgPiAxIHx8ICFhbHBoYVZhbGlkKGEpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaW52YWxpZDtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge3ZhbHVlczogW2gsIHMsIHYsIGFdLCBhLCB0eXBlfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge3ZhbHVlczogbnVsbCwgdHlwZTogbnVsbH07XHJcbn1cclxuIiwgImltcG9ydCB7aHN2VG9DbXlrLCBoc3ZUb0hleCwgaHN2VG9Ic2wsIGhzdlRvUmdifSBmcm9tICcuL2NvbG9yJztcclxuXHJcbi8qKlxyXG4gKiBTaW1wbGUgY2xhc3Mgd2hpY2ggaG9sZHMgdGhlIHByb3BlcnRpZXNcclxuICogb2YgdGhlIGNvbG9yIHJlcHJlc2VudGlvbiBtb2RlbCBoc2xhIChodWUgc2F0dXJhdGlvbiBsaWdodG5lc3MgYWxwaGEpXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gSFNWYUNvbG9yKGggPSAwLCBzID0gMCwgdiA9IDAsIGEgPSAxKSB7XHJcbiAgICBjb25zdCBtYXBwZXIgPSAob3JpZ2luYWwsIG5leHQpID0+IChwcmVjaXNpb24gPSAtMSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXh0KH5wcmVjaXNpb24gPyBvcmlnaW5hbC5tYXAodiA9PiBOdW1iZXIodi50b0ZpeGVkKHByZWNpc2lvbikpKSA6IG9yaWdpbmFsKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgdGhhdCA9IHtcclxuICAgICAgICBoLCBzLCB2LCBhLFxyXG5cclxuICAgICAgICB0b0hTVkEoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGhzdmEgPSBbdGhhdC5oLCB0aGF0LnMsIHRoYXQudiwgdGhhdC5hXTtcclxuICAgICAgICAgICAgaHN2YS50b1N0cmluZyA9IG1hcHBlcihoc3ZhLCBhcnIgPT4gYGhzdmEoJHthcnJbMF19LCAke2FyclsxXX0lLCAke2FyclsyXX0lLCAke3RoYXQuYX0pYCk7XHJcbiAgICAgICAgICAgIHJldHVybiBoc3ZhO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHRvSFNMQSgpIHtcclxuICAgICAgICAgICAgY29uc3QgaHNsYSA9IFsuLi5oc3ZUb0hzbCh0aGF0LmgsIHRoYXQucywgdGhhdC52KSwgdGhhdC5hXTtcclxuICAgICAgICAgICAgaHNsYS50b1N0cmluZyA9IG1hcHBlcihoc2xhLCBhcnIgPT4gYGhzbGEoJHthcnJbMF19LCAke2FyclsxXX0lLCAke2FyclsyXX0lLCAke3RoYXQuYX0pYCk7XHJcbiAgICAgICAgICAgIHJldHVybiBoc2xhO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHRvUkdCQSgpIHtcclxuICAgICAgICAgICAgY29uc3QgcmdiYSA9IFsuLi5oc3ZUb1JnYih0aGF0LmgsIHRoYXQucywgdGhhdC52KSwgdGhhdC5hXTtcclxuICAgICAgICAgICAgcmdiYS50b1N0cmluZyA9IG1hcHBlcihyZ2JhLCBhcnIgPT4gYHJnYmEoJHthcnJbMF19LCAke2FyclsxXX0sICR7YXJyWzJdfSwgJHt0aGF0LmF9KWApO1xyXG4gICAgICAgICAgICByZXR1cm4gcmdiYTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB0b0NNWUsoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNteWsgPSBoc3ZUb0NteWsodGhhdC5oLCB0aGF0LnMsIHRoYXQudik7XHJcbiAgICAgICAgICAgIGNteWsudG9TdHJpbmcgPSBtYXBwZXIoY215aywgYXJyID0+IGBjbXlrKCR7YXJyWzBdfSUsICR7YXJyWzFdfSUsICR7YXJyWzJdfSUsICR7YXJyWzNdfSUpYCk7XHJcbiAgICAgICAgICAgIHJldHVybiBjbXlrO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHRvSEVYQSgpIHtcclxuICAgICAgICAgICAgY29uc3QgaGV4ID0gaHN2VG9IZXgodGhhdC5oLCB0aGF0LnMsIHRoYXQudik7XHJcblxyXG4gICAgICAgICAgICAvLyBDaGVjayBpZiBhbHBoYSBjaGFubmVsIG1ha2Ugc2Vuc2UsIGNvbnZlcnQgaXQgdG8gMjU1IG51bWJlciBzcGFjZSwgY29udmVydFxyXG4gICAgICAgICAgICAvLyBUbyBoZXggYW5kIHBhZCBpdCB3aXRoIHplcm9zIGlmIG5lZWRldC5cclxuICAgICAgICAgICAgY29uc3QgYWxwaGEgPSB0aGF0LmEgPj0gMSA/ICcnIDogTnVtYmVyKCh0aGF0LmEgKiAyNTUpLnRvRml4ZWQoMCkpXHJcbiAgICAgICAgICAgICAgICAudG9TdHJpbmcoMTYpXHJcbiAgICAgICAgICAgICAgICAudG9VcHBlckNhc2UoKS5wYWRTdGFydCgyLCAnMCcpO1xyXG5cclxuICAgICAgICAgICAgYWxwaGEgJiYgaGV4LnB1c2goYWxwaGEpO1xyXG4gICAgICAgICAgICBoZXgudG9TdHJpbmcgPSAoKSA9PiBgIyR7aGV4LmpvaW4oJycpLnRvVXBwZXJDYXNlKCl9YDtcclxuICAgICAgICAgICAgcmV0dXJuIGhleDtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBjbG9uZTogKCkgPT4gSFNWYUNvbG9yKHRoYXQuaCwgdGhhdC5zLCB0aGF0LnYsIHRoYXQuYSlcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHRoYXQ7XHJcbn1cclxuIiwgImltcG9ydCAqIGFzIF8gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xyXG5cclxuY29uc3QgY2xhbXAgPSB2ID0+IE1hdGgubWF4KE1hdGgubWluKHYsIDEpLCAwKTtcclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTW92ZWFibGUob3B0KSB7XHJcblxyXG4gICAgY29uc3QgdGhhdCA9IHtcclxuXHJcbiAgICAgICAgLy8gQXNzaWduIGRlZmF1bHQgdmFsdWVzXHJcbiAgICAgICAgb3B0aW9uczogT2JqZWN0LmFzc2lnbih7XHJcbiAgICAgICAgICAgIGxvY2s6IG51bGwsXHJcbiAgICAgICAgICAgIG9uY2hhbmdlOiAoKSA9PiAwLFxyXG4gICAgICAgICAgICBvbnN0b3A6ICgpID0+IDBcclxuICAgICAgICB9LCBvcHQpLFxyXG5cclxuICAgICAgICBfa2V5Ym9hcmQoZSkge1xyXG4gICAgICAgICAgICBjb25zdCB7b3B0aW9uc30gPSB0aGF0O1xyXG4gICAgICAgICAgICBjb25zdCB7dHlwZSwga2V5fSA9IGU7XHJcblxyXG4gICAgICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIE1vdmFibGUgaXMgZm9jdXNlZCBhbmQgdGhlbiBtb3ZlIGl0IGJhc2VkIG9uIGFycm93IGtleSBpbnB1dHNcclxuICAgICAgICAgICAgLy8gRm9yIGltcHJvdmVkIGFjY2Vzc2liaWxpdHlcclxuICAgICAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IG9wdGlvbnMud3JhcHBlcikge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qge2xvY2t9ID0gdGhhdC5vcHRpb25zO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdXAgPSBrZXkgPT09ICdBcnJvd1VwJztcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0ga2V5ID09PSAnQXJyb3dSaWdodCc7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkb3duID0ga2V5ID09PSAnQXJyb3dEb3duJztcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBrZXkgPT09ICdBcnJvd0xlZnQnO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAna2V5ZG93bicgJiYgKHVwIHx8IHJpZ2h0IHx8IGRvd24gfHwgbGVmdCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgeG0gPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB5bSA9IDA7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2NrID09PSAndicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeG0gPSAodXAgfHwgcmlnaHQpID8gMSA6IC0xO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobG9jayA9PT0gJ2gnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHhtID0gKHVwIHx8IHJpZ2h0KSA/IC0xIDogMTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB5bSA9IHVwID8gLTEgOiAoZG93biA/IDEgOiAwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeG0gPSBsZWZ0ID8gLTEgOiAocmlnaHQgPyAxIDogMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGF0LnVwZGF0ZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhbXAodGhhdC5jYWNoZS54ICsgKDAuMDEgKiB4bSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFtcCh0aGF0LmNhY2hlLnkgKyAoMC4wMSAqIHltKSlcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5LnN0YXJ0c1dpdGgoJ0Fycm93JykpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGF0Lm9wdGlvbnMub25zdG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgX3RhcHN0YXJ0KGV2dCkge1xyXG4gICAgICAgICAgICBfLm9uKGRvY3VtZW50LCBbJ21vdXNldXAnLCAndG91Y2hlbmQnLCAndG91Y2hjYW5jZWwnXSwgdGhhdC5fdGFwc3RvcCk7XHJcbiAgICAgICAgICAgIF8ub24oZG9jdW1lbnQsIFsnbW91c2Vtb3ZlJywgJ3RvdWNobW92ZSddLCB0aGF0Ll90YXBtb3ZlKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChldnQuY2FuY2VsYWJsZSkge1xyXG4gICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIFRyaWdnZXJcclxuICAgICAgICAgICAgdGhhdC5fdGFwbW92ZShldnQpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIF90YXBtb3ZlKGV2dCkge1xyXG4gICAgICAgICAgICBjb25zdCB7b3B0aW9ucywgY2FjaGV9ID0gdGhhdDtcclxuICAgICAgICAgICAgY29uc3Qge2xvY2ssIGVsZW1lbnQsIHdyYXBwZXJ9ID0gb3B0aW9ucztcclxuICAgICAgICAgICAgY29uc3QgYiA9IHdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgICAgICAgICBsZXQgeCA9IDAsIHkgPSAwO1xyXG4gICAgICAgICAgICBpZiAoZXZ0KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0b3VjaCA9IGV2dCAmJiBldnQudG91Y2hlcyAmJiBldnQudG91Y2hlc1swXTtcclxuICAgICAgICAgICAgICAgIHggPSBldnQgPyAodG91Y2ggfHwgZXZ0KS5jbGllbnRYIDogMDtcclxuICAgICAgICAgICAgICAgIHkgPSBldnQgPyAodG91Y2ggfHwgZXZ0KS5jbGllbnRZIDogMDtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBSZXNldCB0byBib3VuZHNcclxuICAgICAgICAgICAgICAgIGlmICh4IDwgYi5sZWZ0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgeCA9IGIubGVmdDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoeCA+IGIubGVmdCArIGIud2lkdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICB4ID0gYi5sZWZ0ICsgYi53aWR0aDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh5IDwgYi50b3ApIHtcclxuICAgICAgICAgICAgICAgICAgICB5ID0gYi50b3A7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHkgPiBiLnRvcCArIGIuaGVpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgeSA9IGIudG9wICsgYi5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gTm9ybWFsaXplXHJcbiAgICAgICAgICAgICAgICB4IC09IGIubGVmdDtcclxuICAgICAgICAgICAgICAgIHkgLT0gYi50b3A7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2FjaGUpIHtcclxuICAgICAgICAgICAgICAgIHggPSBjYWNoZS54ICogYi53aWR0aDtcclxuICAgICAgICAgICAgICAgIHkgPSBjYWNoZS55ICogYi5oZWlnaHQ7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChsb2NrICE9PSAnaCcpIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUubGVmdCA9IGBjYWxjKCR7eCAvIGIud2lkdGggKiAxMDB9JSAtICR7ZWxlbWVudC5vZmZzZXRXaWR0aCAvIDJ9cHgpYDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGxvY2sgIT09ICd2Jykge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS50b3AgPSBgY2FsYygke3kgLyBiLmhlaWdodCAqIDEwMH0lIC0gJHtlbGVtZW50Lm9mZnNldEhlaWdodCAvIDJ9cHgpYDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhhdC5jYWNoZSA9IHt4OiB4IC8gYi53aWR0aCwgeTogeSAvIGIuaGVpZ2h0fTtcclxuICAgICAgICAgICAgY29uc3QgY3ggPSBjbGFtcCh4IC8gYi53aWR0aCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN5ID0gY2xhbXAoeSAvIGIuaGVpZ2h0KTtcclxuXHJcbiAgICAgICAgICAgIHN3aXRjaCAobG9jaykge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAndic6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMub25jaGFuZ2UoY3gpO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnaCc6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMub25jaGFuZ2UoY3kpO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5vbmNoYW5nZShjeCwgY3kpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgX3RhcHN0b3AoKSB7XHJcbiAgICAgICAgICAgIHRoYXQub3B0aW9ucy5vbnN0b3AoKTtcclxuICAgICAgICAgICAgXy5vZmYoZG9jdW1lbnQsIFsnbW91c2V1cCcsICd0b3VjaGVuZCcsICd0b3VjaGNhbmNlbCddLCB0aGF0Ll90YXBzdG9wKTtcclxuICAgICAgICAgICAgXy5vZmYoZG9jdW1lbnQsIFsnbW91c2Vtb3ZlJywgJ3RvdWNobW92ZSddLCB0aGF0Ll90YXBtb3ZlKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB0cmlnZ2VyKCkge1xyXG4gICAgICAgICAgICB0aGF0Ll90YXBtb3ZlKCk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgdXBkYXRlKHggPSAwLCB5ID0gMCkge1xyXG4gICAgICAgICAgICBjb25zdCB7bGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0fSA9IHRoYXQub3B0aW9ucy53cmFwcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5sb2NrID09PSAnaCcpIHtcclxuICAgICAgICAgICAgICAgIHkgPSB4O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGF0Ll90YXBtb3ZlKHtcclxuICAgICAgICAgICAgICAgIGNsaWVudFg6IGxlZnQgKyB3aWR0aCAqIHgsXHJcbiAgICAgICAgICAgICAgICBjbGllbnRZOiB0b3AgKyBoZWlnaHQgKiB5XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGRlc3Ryb3koKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHtvcHRpb25zLCBfdGFwc3RhcnQsIF9rZXlib2FyZH0gPSB0aGF0O1xyXG4gICAgICAgICAgICBfLm9mZihkb2N1bWVudCwgWydrZXlkb3duJywgJ2tleXVwJ10sIF9rZXlib2FyZCk7XHJcbiAgICAgICAgICAgIF8ub2ZmKFtvcHRpb25zLndyYXBwZXIsIG9wdGlvbnMuZWxlbWVudF0sICdtb3VzZWRvd24nLCBfdGFwc3RhcnQpO1xyXG4gICAgICAgICAgICBfLm9mZihbb3B0aW9ucy53cmFwcGVyLCBvcHRpb25zLmVsZW1lbnRdLCAndG91Y2hzdGFydCcsIF90YXBzdGFydCwge1xyXG4gICAgICAgICAgICAgICAgcGFzc2l2ZTogZmFsc2VcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBJbml0aWxpemVcclxuICAgIGNvbnN0IHtvcHRpb25zLCBfdGFwc3RhcnQsIF9rZXlib2FyZH0gPSB0aGF0O1xyXG4gICAgXy5vbihbb3B0aW9ucy53cmFwcGVyLCBvcHRpb25zLmVsZW1lbnRdLCAnbW91c2Vkb3duJywgX3RhcHN0YXJ0KTtcclxuICAgIF8ub24oW29wdGlvbnMud3JhcHBlciwgb3B0aW9ucy5lbGVtZW50XSwgJ3RvdWNoc3RhcnQnLCBfdGFwc3RhcnQsIHtcclxuICAgICAgICBwYXNzaXZlOiBmYWxzZVxyXG4gICAgfSk7XHJcblxyXG4gICAgXy5vbihkb2N1bWVudCwgWydrZXlkb3duJywgJ2tleXVwJ10sIF9rZXlib2FyZCk7XHJcblxyXG4gICAgcmV0dXJuIHRoYXQ7XHJcbn1cclxuIiwgImltcG9ydCAqIGFzIF8gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTZWxlY3RhYmxlKG9wdCA9IHt9KSB7XG4gICAgb3B0ID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICAgIG9uY2hhbmdlOiAoKSA9PiAwLFxuICAgICAgICBjbGFzc05hbWU6ICcnLFxuICAgICAgICBlbGVtZW50czogW11cbiAgICB9LCBvcHQpO1xuXG4gICAgY29uc3Qgb25UYXAgPSBfLm9uKG9wdC5lbGVtZW50cywgJ2NsaWNrJywgZXZ0ID0+IHtcbiAgICAgICAgb3B0LmVsZW1lbnRzLmZvckVhY2goZSA9PlxuICAgICAgICAgICAgZS5jbGFzc0xpc3RbZXZ0LnRhcmdldCA9PT0gZSA/ICdhZGQnIDogJ3JlbW92ZSddKG9wdC5jbGFzc05hbWUpXG4gICAgICAgICk7XG5cbiAgICAgICAgb3B0Lm9uY2hhbmdlKGV2dCk7XG5cbiAgICAgICAgLy8gRml4IGZvciBodHRwczovL2dpdGh1Yi5jb20vU2ltb253ZXAvcGlja3IvaXNzdWVzLzI0M1xuICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBkZXN0cm95OiAoKSA9PiBfLm9mZiguLi5vblRhcClcbiAgICB9O1xufVxuIiwgImltcG9ydCAqIGFzIF8gZnJvbSAnLi91dGlscy91dGlscyc7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBpbnN0YW5jZSA9PiB7XHJcblxyXG4gICAgY29uc3Qge1xyXG4gICAgICAgIGNvbXBvbmVudHMsXHJcbiAgICAgICAgdXNlQXNCdXR0b24sXHJcbiAgICAgICAgaW5saW5lLFxyXG4gICAgICAgIGFwcENsYXNzLFxyXG4gICAgICAgIHRoZW1lLFxyXG4gICAgICAgIGxvY2tPcGFjaXR5XHJcbiAgICB9ID0gaW5zdGFuY2Uub3B0aW9ucztcclxuXHJcbiAgICAvLyBVdGlsc1xyXG4gICAgY29uc3QgaGlkZGVuID0gY29uID0+IGNvbiA/ICcnIDogJ3N0eWxlPVwiZGlzcGxheTpub25lXCIgaGlkZGVuJztcclxuICAgIGNvbnN0IHQgPSBzdHIgPT4gaW5zdGFuY2UuX3Qoc3RyKTtcclxuXHJcbiAgICBjb25zdCByb290ID0gXy5jcmVhdGVGcm9tVGVtcGxhdGUoYFxyXG4gICAgICA8ZGl2IDpyZWY9XCJyb290XCIgY2xhc3M9XCJwaWNrclwiPlxyXG5cclxuICAgICAgICAke3VzZUFzQnV0dG9uID8gJycgOiAnPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgOnJlZj1cImJ1dHRvblwiIGNsYXNzPVwicGNyLWJ1dHRvblwiPjwvYnV0dG9uPid9XHJcblxyXG4gICAgICAgIDxkaXYgOnJlZj1cImFwcFwiIGNsYXNzPVwicGNyLWFwcCAke2FwcENsYXNzIHx8ICcnfVwiIGRhdGEtdGhlbWU9XCIke3RoZW1lfVwiICR7aW5saW5lID8gJ3N0eWxlPVwicG9zaXRpb246IHVuc2V0XCInIDogJyd9IGFyaWEtbGFiZWw9XCIke3QoJ3VpOmRpYWxvZycsICdjb2xvciBwaWNrZXIgZGlhbG9nJyl9XCIgcm9sZT1cIndpbmRvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBjci1zZWxlY3Rpb25cIiAke2hpZGRlbihjb21wb25lbnRzLnBhbGV0dGUpfT5cclxuICAgICAgICAgICAgPGRpdiA6b2JqPVwicHJldmlld1wiIGNsYXNzPVwicGNyLWNvbG9yLXByZXZpZXdcIiAke2hpZGRlbihjb21wb25lbnRzLnByZXZpZXcpfT5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiA6cmVmPVwibGFzdENvbG9yXCIgY2xhc3M9XCJwY3ItbGFzdC1jb2xvclwiIGFyaWEtbGFiZWw9XCIke3QoJ2J0bjpsYXN0LWNvbG9yJyl9XCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGRpdiA6cmVmPVwiY3VycmVudENvbG9yXCIgY2xhc3M9XCJwY3ItY3VycmVudC1jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgOm9iaj1cInBhbGV0dGVcIiBjbGFzcz1cInBjci1jb2xvci1wYWxldHRlXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiA6cmVmPVwicGlja2VyXCIgY2xhc3M9XCJwY3ItcGlja2VyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiA6cmVmPVwicGFsZXR0ZVwiIGNsYXNzPVwicGNyLXBhbGV0dGVcIiB0YWJpbmRleD1cIjBcIiBhcmlhLWxhYmVsPVwiJHt0KCdhcmlhOnBhbGV0dGUnKX1cIiByb2xlPVwibGlzdGJveFwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgOm9iaj1cImh1ZVwiIGNsYXNzPVwicGNyLWNvbG9yLWNob29zZXJcIiAke2hpZGRlbihjb21wb25lbnRzLmh1ZSl9PlxyXG4gICAgICAgICAgICAgIDxkaXYgOnJlZj1cInBpY2tlclwiIGNsYXNzPVwicGNyLXBpY2tlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgOnJlZj1cInNsaWRlclwiIGNsYXNzPVwicGNyLWh1ZSBwY3Itc2xpZGVyXCIgdGFiaW5kZXg9XCIwXCIgYXJpYS1sYWJlbD1cIiR7dCgnYXJpYTpodWUnKX1cIiByb2xlPVwic2xpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiA6b2JqPVwib3BhY2l0eVwiIGNsYXNzPVwicGNyLWNvbG9yLW9wYWNpdHlcIiAke2hpZGRlbihjb21wb25lbnRzLm9wYWNpdHkpfT5cclxuICAgICAgICAgICAgICA8ZGl2IDpyZWY9XCJwaWNrZXJcIiBjbGFzcz1cInBjci1waWNrZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IDpyZWY9XCJzbGlkZXJcIiBjbGFzcz1cInBjci1vcGFjaXR5IHBjci1zbGlkZXJcIiB0YWJpbmRleD1cIjBcIiBhcmlhLWxhYmVsPVwiJHt0KCdhcmlhOm9wYWNpdHknLCAnb3BhY2l0eSBzZWxlY3Rpb24gc2xpZGVyJyl9XCIgcm9sZT1cInNsaWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwY3Itc3dhdGNoZXMgJHtjb21wb25lbnRzLnBhbGV0dGUgPyAnJyA6ICdwY3ItbGFzdCd9XCIgOnJlZj1cInN3YXRjaGVzXCI+PC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiA6b2JqPVwiaW50ZXJhY3Rpb25cIiBjbGFzcz1cInBjci1pbnRlcmFjdGlvblwiICR7aGlkZGVuKE9iamVjdC5rZXlzKGNvbXBvbmVudHMuaW50ZXJhY3Rpb24pLmxlbmd0aCl9PlxyXG4gICAgICAgICAgICA8aW5wdXQgOnJlZj1cInJlc3VsdFwiIGNsYXNzPVwicGNyLXJlc3VsdFwiIHR5cGU9XCJ0ZXh0XCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgJHtoaWRkZW4oY29tcG9uZW50cy5pbnRlcmFjdGlvbi5pbnB1dCl9IGFyaWEtbGFiZWw9XCIke3QoJ2FyaWE6aW5wdXQnLCAnY29sb3IgaW5wdXQgZmllbGQnKX1cIj5cclxuXHJcbiAgICAgICAgICAgIDxpbnB1dCA6YXJyPVwib3B0aW9uc1wiIGNsYXNzPVwicGNyLXR5cGVcIiBkYXRhLXR5cGU9XCJIRVhBXCIgdmFsdWU9XCIke2xvY2tPcGFjaXR5ID8gJ0hFWCcgOiAnSEVYQSd9XCIgdHlwZT1cImJ1dHRvblwiICR7aGlkZGVuKGNvbXBvbmVudHMuaW50ZXJhY3Rpb24uaGV4KX0+XHJcbiAgICAgICAgICAgIDxpbnB1dCA6YXJyPVwib3B0aW9uc1wiIGNsYXNzPVwicGNyLXR5cGVcIiBkYXRhLXR5cGU9XCJSR0JBXCIgdmFsdWU9XCIke2xvY2tPcGFjaXR5ID8gJ1JHQicgOiAnUkdCQSd9XCIgdHlwZT1cImJ1dHRvblwiICR7aGlkZGVuKGNvbXBvbmVudHMuaW50ZXJhY3Rpb24ucmdiYSl9PlxyXG4gICAgICAgICAgICA8aW5wdXQgOmFycj1cIm9wdGlvbnNcIiBjbGFzcz1cInBjci10eXBlXCIgZGF0YS10eXBlPVwiSFNMQVwiIHZhbHVlPVwiJHtsb2NrT3BhY2l0eSA/ICdIU0wnIDogJ0hTTEEnfVwiIHR5cGU9XCJidXR0b25cIiAke2hpZGRlbihjb21wb25lbnRzLmludGVyYWN0aW9uLmhzbGEpfT5cclxuICAgICAgICAgICAgPGlucHV0IDphcnI9XCJvcHRpb25zXCIgY2xhc3M9XCJwY3ItdHlwZVwiIGRhdGEtdHlwZT1cIkhTVkFcIiB2YWx1ZT1cIiR7bG9ja09wYWNpdHkgPyAnSFNWJyA6ICdIU1ZBJ31cIiB0eXBlPVwiYnV0dG9uXCIgJHtoaWRkZW4oY29tcG9uZW50cy5pbnRlcmFjdGlvbi5oc3ZhKX0+XHJcbiAgICAgICAgICAgIDxpbnB1dCA6YXJyPVwib3B0aW9uc1wiIGNsYXNzPVwicGNyLXR5cGVcIiBkYXRhLXR5cGU9XCJDTVlLXCIgdmFsdWU9XCJDTVlLXCIgdHlwZT1cImJ1dHRvblwiICR7aGlkZGVuKGNvbXBvbmVudHMuaW50ZXJhY3Rpb24uY215ayl9PlxyXG5cclxuICAgICAgICAgICAgPGlucHV0IDpyZWY9XCJzYXZlXCIgY2xhc3M9XCJwY3Itc2F2ZVwiIHZhbHVlPVwiJHt0KCdidG46c2F2ZScpfVwiIHR5cGU9XCJidXR0b25cIiAke2hpZGRlbihjb21wb25lbnRzLmludGVyYWN0aW9uLnNhdmUpfSBhcmlhLWxhYmVsPVwiJHt0KCdhcmlhOmJ0bjpzYXZlJyl9XCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCA6cmVmPVwiY2FuY2VsXCIgY2xhc3M9XCJwY3ItY2FuY2VsXCIgdmFsdWU9XCIke3QoJ2J0bjpjYW5jZWwnKX1cIiB0eXBlPVwiYnV0dG9uXCIgJHtoaWRkZW4oY29tcG9uZW50cy5pbnRlcmFjdGlvbi5jYW5jZWwpfSBhcmlhLWxhYmVsPVwiJHt0KCdhcmlhOmJ0bjpjYW5jZWwnKX1cIj5cclxuICAgICAgICAgICAgPGlucHV0IDpyZWY9XCJjbGVhclwiIGNsYXNzPVwicGNyLWNsZWFyXCIgdmFsdWU9XCIke3QoJ2J0bjpjbGVhcicpfVwiIHR5cGU9XCJidXR0b25cIiAke2hpZGRlbihjb21wb25lbnRzLmludGVyYWN0aW9uLmNsZWFyKX0gYXJpYS1sYWJlbD1cIiR7dCgnYXJpYTpidG46Y2xlYXInKX1cIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIGApO1xyXG5cclxuICAgIGNvbnN0IGludCA9IHJvb3QuaW50ZXJhY3Rpb247XHJcblxyXG4gICAgLy8gU2VsZWN0IG9wdGlvbiB3aGljaCBpcyBub3QgaGlkZGVuXHJcbiAgICBpbnQub3B0aW9ucy5maW5kKG8gPT4gIW8uaGlkZGVuICYmICFvLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpKTtcclxuXHJcbiAgICAvLyBBcHBlbmQgbWV0aG9kIHRvIGZpbmQgY3VycmVudGx5IGFjdGl2ZSBvcHRpb25cclxuICAgIGludC50eXBlID0gKCkgPT4gaW50Lm9wdGlvbnMuZmluZChlID0+IGUuY2xhc3NMaXN0LmNvbnRhaW5zKCdhY3RpdmUnKSk7XHJcbiAgICByZXR1cm4gcm9vdDtcclxufTtcclxuIiwgInR5cGUgRGlyZWN0aW9uID0gJ3RvcCcgfCAnbGVmdCcgfCAnYm90dG9tJyB8ICdyaWdodCc7XG5cbmV4cG9ydCB0eXBlIFZhcmlhbnRGbGlwT3JkZXIgPSB7XG4gICAgc3RhcnQ6IHN0cmluZztcbiAgICBtaWRkbGU6IHN0cmluZztcbiAgICBlbmQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFBvc2l0aW9uRmxpcE9yZGVyID0ge1xuICAgIHRvcDogc3RyaW5nO1xuICAgIHJpZ2h0OiBzdHJpbmc7XG4gICAgYm90dG9tOiBzdHJpbmc7XG4gICAgbGVmdDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgTmFub1BvcFBvc2l0aW9uID1cbiAgICAndG9wLXN0YXJ0JyB8ICd0b3AtbWlkZGxlJyB8ICd0b3AtZW5kJyB8XG4gICAgJ2xlZnQtc3RhcnQnIHwgJ2xlZnQtbWlkZGxlJyB8ICdsZWZ0LWVuZCcgfFxuICAgICdyaWdodC1zdGFydCcgfCAncmlnaHQtbWlkZGxlJyB8ICdyaWdodC1lbmQnIHxcbiAgICAnYm90dG9tLXN0YXJ0JyB8ICdib3R0b20tbWlkZGxlJyB8ICdib3R0b20tZW5kJyB8IERpcmVjdGlvbjtcblxuZXhwb3J0IHR5cGUgTmFub1BvcE9wdGlvbnMgPSB7XG4gICAgY29udGFpbmVyOiBET01SZWN0O1xuICAgIHBvc2l0aW9uOiBOYW5vUG9wUG9zaXRpb247XG4gICAgdmFyaWFudEZsaXBPcmRlcjogVmFyaWFudEZsaXBPcmRlcjtcbiAgICBwb3NpdGlvbkZsaXBPcmRlcjogUG9zaXRpb25GbGlwT3JkZXI7XG4gICAgbWFyZ2luOiBudW1iZXI7XG4gICAgcmVmZXJlbmNlPzogSFRNTEVsZW1lbnQ7XG4gICAgcG9wcGVyPzogSFRNTEVsZW1lbnQ7XG59O1xuXG50eXBlIEF2YWlsYWJsZVBvc2l0aW9ucyA9IHtcbiAgICB0OiBudW1iZXI7XG4gICAgYjogbnVtYmVyO1xuICAgIGw6IG51bWJlcjtcbiAgICByOiBudW1iZXI7XG59O1xuXG50eXBlIEF2YWlsYWJsZVZhcmlhbnRzID0ge1xuICAgIHZzOiBudW1iZXI7XG4gICAgdm06IG51bWJlcjtcbiAgICB2ZTogbnVtYmVyO1xuICAgIGhzOiBudW1iZXI7XG4gICAgaG06IG51bWJlcjtcbiAgICBoZTogbnVtYmVyO1xufTtcblxudHlwZSBQb3NpdGlvblBhaXJzID0gW0RpcmVjdGlvbiwgRGlyZWN0aW9uXTtcbmV4cG9ydCB0eXBlIFBvc2l0aW9uTWF0Y2ggPSAndHMnIHwgJ3RtJyB8ICd0ZScgfCAnYnMnIHwgJ2JtJyB8ICdiZScgfCAnbHMnIHwgJ2xtJyB8ICdsZScgfCAncnMnIHwgJ3JtJyB8ICdyZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmFub1BvcCB7XG4gICAgdXBkYXRlKHVwZGF0ZWRPcHRpb25zPzogUGFydGlhbDxOYW5vUG9wT3B0aW9ucz4pOiBQb3NpdGlvbk1hdGNoIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOYW5vUG9wQ29uc3RydWN0b3Ige1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHJlZmVyZW5jZSBSZWZlcmVuY2UgZWxlbWVudFxuICAgICAqIEBwYXJhbSBwb3BwZXIgQWN0dWFsIHBvcHBlciBlbGVtZW50XG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgb3B0aW9uc1xuICAgICAqL1xuICAgIChyZWZlcmVuY2U6IEhUTUxFbGVtZW50LCBwb3BwZXI6IEhUTUxFbGVtZW50LCBvcHRpb25zPzogUGFydGlhbDxOYW5vUG9wT3B0aW9ucz4pOiBOYW5vUG9wO1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIG9wdGlvbnMgUGFydGlhbCBvcHRpb25zIHdoaWNoIGdldCBtZXJnZWQgd2l0aCB0aGUgY3VycmVudCBvbmVcbiAgICAgKi9cbiAgICAob3B0aW9ucz86IFBhcnRpYWw8TmFub1BvcE9wdGlvbnM+KTogTmFub1BvcDtcbn1cblxuLy8gRXhwb3J0IGN1cnJlbnQgdmVyc2lvblxuZXhwb3J0IGNvbnN0IHZlcnNpb24gPSBWRVJTSU9OO1xuXG4vLyBFeHBvcnQgZGVmYXVsdFxuZXhwb3J0IGNvbnN0IGRlZmF1bHRzID0ge1xuICAgIHZhcmlhbnRGbGlwT3JkZXI6IHtzdGFydDogJ3NtZScsIG1pZGRsZTogJ21zZScsIGVuZDogJ2Vtcyd9LFxuICAgIHBvc2l0aW9uRmxpcE9yZGVyOiB7dG9wOiAndGJybCcsIHJpZ2h0OiAncmx0YicsIGJvdHRvbTogJ2J0cmwnLCBsZWZ0OiAnbHJidCd9LFxuICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcbiAgICBtYXJnaW46IDhcbn07XG5cbi8qKlxuICogUmVwb3NpdGlvbnMgYW4gZWxlbWVudCBvbmNlIHVzaW5nIHRoZSBwcm92aWRlZCBvcHRpb25zIGFuZCBlbGVtZW50cy5cbiAqIEBwYXJhbSByZWZlcmVuY2UgUmVmZXJlbmNlIGVsZW1lbnRcbiAqIEBwYXJhbSBwb3BwZXIgUG9wcGVyIGVsZW1lbnRcbiAqIEBwYXJhbSBvcHQgT3B0aW9uYWwsIGFkZGl0aW9uYWwgb3B0aW9uc1xuICovXG5leHBvcnQgY29uc3QgcmVwb3NpdGlvbiA9IChcbiAgICByZWZlcmVuY2U6IEhUTUxFbGVtZW50LFxuICAgIHBvcHBlcjogSFRNTEVsZW1lbnQsXG4gICAgb3B0PzogUGFydGlhbDxOYW5vUG9wT3B0aW9ucz5cbik6IFBvc2l0aW9uTWF0Y2ggfCBudWxsID0+IHtcbiAgICBjb25zdCB7XG4gICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgbWFyZ2luLFxuICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgdmFyaWFudEZsaXBPcmRlcixcbiAgICAgICAgcG9zaXRpb25GbGlwT3JkZXJcbiAgICB9ID0ge1xuICAgICAgICBjb250YWluZXI6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgICAgLi4uZGVmYXVsdHMsXG4gICAgICAgIC4uLm9wdFxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBSZXNldCBwb3NpdGlvbiB0byByZXNvbHZlIHZpZXdwb3J0XG4gICAgICogU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9wb3NpdGlvbiNmaXhlZFxuICAgICAqL1xuICAgIGNvbnN0IHtsZWZ0OiBvcmlnaW5hbExlZnQsIHRvcDogb3JpZ2luYWxUb3B9ID0gcG9wcGVyLnN0eWxlO1xuICAgIHBvcHBlci5zdHlsZS5sZWZ0ID0gJzAnO1xuICAgIHBvcHBlci5zdHlsZS50b3AgPSAnMCc7XG5cbiAgICBjb25zdCByZWZCb3ggPSByZWZlcmVuY2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgcG9wQm94ID0gcG9wcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgLyoqXG4gICAgICogSG9sZHMgY29vcmRpbmF0ZXMgb2YgdG9wLCBsZWZ0LCBib3R0b20gYW5kIHJpZ2h0IGFsaWdubWVudFxuICAgICAqL1xuICAgIGNvbnN0IHBvc2l0aW9uU3RvcmU6IEF2YWlsYWJsZVBvc2l0aW9ucyA9IHtcbiAgICAgICAgdDogcmVmQm94LnRvcCAtIHBvcEJveC5oZWlnaHQgLSBtYXJnaW4sXG4gICAgICAgIGI6IHJlZkJveC5ib3R0b20gKyBtYXJnaW4sXG4gICAgICAgIHI6IHJlZkJveC5yaWdodCArIG1hcmdpbixcbiAgICAgICAgbDogcmVmQm94LmxlZnQgLSBwb3BCb3gud2lkdGggLSBtYXJnaW5cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogSG9sZHMgY29ycmVzcG9uZGluZyB2YXJpYW50cyAoc3RhcnQsIG1pZGRsZSwgZW5kKS5cbiAgICAgKiBUaGUgdmFsdWVzIGRlcGVuZCBvbiBob3Jpem9udGFsIC8gdmVydGljYWwgb3JpZW50YXRpb25cbiAgICAgKi9cbiAgICBjb25zdCB2YXJpYW50U3RvcmU6IEF2YWlsYWJsZVZhcmlhbnRzID0ge1xuICAgICAgICB2czogcmVmQm94LmxlZnQsXG4gICAgICAgIHZtOiByZWZCb3gubGVmdCArIHJlZkJveC53aWR0aCAvIDIgKyAtcG9wQm94LndpZHRoIC8gMixcbiAgICAgICAgdmU6IHJlZkJveC5sZWZ0ICsgcmVmQm94LndpZHRoIC0gcG9wQm94LndpZHRoLFxuICAgICAgICBoczogcmVmQm94LnRvcCxcbiAgICAgICAgaG06IHJlZkJveC5ib3R0b20gLSByZWZCb3guaGVpZ2h0IC8gMiAtIHBvcEJveC5oZWlnaHQgLyAyLFxuICAgICAgICBoZTogcmVmQm94LmJvdHRvbSAtIHBvcEJveC5oZWlnaHRcbiAgICB9O1xuXG4gICAgLy8gRXh0cmFjdCBwb3NpdGlvbiBhbmQgdmFyaWFudFxuICAgIC8vIFRvcC1zdGFydCAtPiB0b3AgaXMgXCJwb3NpdGlvblwiIGFuZCBcInN0YXJ0XCIgaXMgdGhlIHZhcmlhbnRcbiAgICBjb25zdCBbcG9zS2V5LCB2YXJLZXkgPSAnbWlkZGxlJ10gPSBwb3NpdGlvbi5zcGxpdCgnLScpO1xuICAgIGNvbnN0IHBvc2l0aW9ucyA9IHBvc2l0aW9uRmxpcE9yZGVyW3Bvc0tleSBhcyBrZXlvZiBQb3NpdGlvbkZsaXBPcmRlcl07XG4gICAgY29uc3QgdmFyaWFudHMgPSB2YXJpYW50RmxpcE9yZGVyW3ZhcktleSBhcyBrZXlvZiBWYXJpYW50RmxpcE9yZGVyXTtcblxuICAgIC8vIFRyeSBvdXQgYWxsIHBvc3NpYmxlIGNvbWJpbmF0aW9ucywgc3RhcnRpbmcgd2l0aCB0aGUgcHJlZmVycmVkIG9uZS5cbiAgICBjb25zdCB7dG9wLCBsZWZ0LCBib3R0b20sIHJpZ2h0fSA9IGNvbnRhaW5lcjtcblxuICAgIGZvciAoY29uc3QgcCBvZiBwb3NpdGlvbnMpIHtcbiAgICAgICAgY29uc3QgdmVydGljYWwgPSAocCA9PT0gJ3QnIHx8IHAgPT09ICdiJyk7XG5cbiAgICAgICAgLy8gVGhlIHBvc2l0aW9uLXZhbHVlXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uVmFsID0gcG9zaXRpb25TdG9yZVtwIGFzIGtleW9mIEF2YWlsYWJsZVBvc2l0aW9uc107XG5cbiAgICAgICAgLy8gV2hpY2ggcHJvcGVydHkgaGFzIHRvIGJlIGNoYW5nZXMuXG4gICAgICAgIGNvbnN0IFtwb3NpdGlvbktleSwgdmFyaWFudEtleV0gPSAodmVydGljYWwgPyBbJ3RvcCcsICdsZWZ0J10gOiBbJ2xlZnQnLCAndG9wJ10pIGFzIFBvc2l0aW9uUGFpcnM7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIGJveCByZWZlcnMgdG8gdGhlIHNpemUgb2YgdGhlIHBvcHBlciBlbGVtZW50LiBEZXBlbmRpbmcgb24gdGhlIG9yaWVudGF0aW9uIHRoaXMgaXMgd2lkdGggb3IgaGVpZ2h0LlxuICAgICAgICAgKiBUaGUgbGltaXQgaXMgdGhlIGNvcnJlc3BvbmRpbmcsIG1heGltdW0gdmFsdWUgZm9yIHRoaXMgcG9zaXRpb24uXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBbcG9zaXRpb25TaXplLCB2YXJpYW50U2l6ZV0gPSB2ZXJ0aWNhbCA/IFtwb3BCb3guaGVpZ2h0LCBwb3BCb3gud2lkdGhdIDogW3BvcEJveC53aWR0aCwgcG9wQm94LmhlaWdodF07XG4gICAgICAgIGNvbnN0IFtwb3NpdGlvbk1heGltdW0sIHZhcmlhbnRNYXhpbXVtXSA9IHZlcnRpY2FsID8gW2JvdHRvbSwgcmlnaHRdIDogW3JpZ2h0LCBib3R0b21dO1xuICAgICAgICBjb25zdCBbcG9zaXRpb25NaW5pbXVtLCB2YXJpYW50TWluaW11bV0gPSB2ZXJ0aWNhbCA/IFt0b3AsIGxlZnRdIDogW2xlZnQsIHRvcF07XG5cbiAgICAgICAgLy8gU2tpcCBwcmUtY2xpcHBlZCB2YWx1ZXNcbiAgICAgICAgaWYgKHBvc2l0aW9uVmFsIDwgcG9zaXRpb25NaW5pbXVtIHx8IChwb3NpdGlvblZhbCArIHBvc2l0aW9uU2l6ZSkgPiBwb3NpdGlvbk1heGltdW0pIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCB2IG9mIHZhcmlhbnRzKSB7XG5cbiAgICAgICAgICAgIC8vIFRoZSBwb3NpdGlvbi12YWx1ZSwgdGhlIHJlbGF0ZWQgc2l6ZSB2YWx1ZSBvZiB0aGUgcG9wcGVyIGFuZCB0aGUgbGltaXRcbiAgICAgICAgICAgIGNvbnN0IHZhcmlhbnRWYWwgPSB2YXJpYW50U3RvcmVbKCh2ZXJ0aWNhbCA/ICd2JyA6ICdoJykgKyB2KSBhcyBrZXlvZiBBdmFpbGFibGVWYXJpYW50c107XG5cbiAgICAgICAgICAgIGlmICh2YXJpYW50VmFsIDwgdmFyaWFudE1pbmltdW0gfHwgKHZhcmlhbnRWYWwgKyB2YXJpYW50U2l6ZSkgPiB2YXJpYW50TWF4aW11bSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBBcHBseSBzdHlsZXMgYW5kIG5vcm1hbGl6ZSB2aWV3cG9ydFxuICAgICAgICAgICAgcG9wcGVyLnN0eWxlW3ZhcmlhbnRLZXldID0gYCR7dmFyaWFudFZhbCAtIHBvcEJveFt2YXJpYW50S2V5XX1weGA7XG4gICAgICAgICAgICBwb3BwZXIuc3R5bGVbcG9zaXRpb25LZXldID0gYCR7cG9zaXRpb25WYWwgLSBwb3BCb3hbcG9zaXRpb25LZXldfXB4YDtcbiAgICAgICAgICAgIHJldHVybiAocCArIHYpIGFzIFBvc2l0aW9uTWF0Y2g7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXZlcnQgc3R5bGUgdmFsdWVzICh3b24ndCB3b3JrIHdpdGggc3R5bGVkLWVsZW1lbnRzIG9yIHNpbWlsYXIgc3lzdGVtcylcbiAgICAvLyBcIkZpeFwiIGZvciBodHRwczovL2dpdGh1Yi5jb20vU2ltb253ZXAvbmFub3BvcC9pc3N1ZXMvN1xuICAgIHBvcHBlci5zdHlsZS5sZWZ0ID0gb3JpZ2luYWxMZWZ0O1xuICAgIHBvcHBlci5zdHlsZS50b3AgPSBvcmlnaW5hbFRvcDtcblxuICAgIHJldHVybiBudWxsO1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgc3RhdGVmdWwgcG9wcGVyLlxuICogWW91IGNhbiBlaXRoZXIuLi5cbiAqIC4uLiBwYXNzIGFuIG9wdGlvbnMgb2JqZWN0OiBjcmVhdGVQb3BwZXIoPG9wdGlvbnM+KVxuICogLi4uIHBhc3MgYm90aCB0aGUgcmVmZXJlbmNlIGFuZCBwb3BwZXI6IGNyZWF0ZSg8cmVmPiwgPGVsPiwgPD9vcHRpb25zPilcbiAqIC4uLiBwYXNzIG5vdGhpbmcsIGluIHRoaXMgY2FzZSB5b3UnbGwgaGF2ZSB0byBzZXQgYXQgbGVhc3QgYm90aCBhIHJlZmVyZW5jZSBhbmQgYSBwb3BwZXIgaW4gdXBkYXRlLlxuICpcbiAqIEBwYXJhbSByZWZlcmVuY2UgfCBvcHRpb25zIFJlZmVyZW5jZSBlbGVtZW50IG9yIG9wdGlvbnNcbiAqIEBwYXJhbSBwb3BwZXIgUG9wcGVyIGVsZW1lbnRcbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGFkZGl0aW9uYWwgb3B0aW9uc1xuICovXG5leHBvcnQgY29uc3QgY3JlYXRlUG9wcGVyOiBOYW5vUG9wQ29uc3RydWN0b3IgPSAoXG4gICAgcmVmZXJlbmNlPzogSFRNTEVsZW1lbnQgfCBQYXJ0aWFsPE5hbm9Qb3BPcHRpb25zPixcbiAgICBwb3BwZXI/OiBIVE1MRWxlbWVudCxcbiAgICBvcHRpb25zPzogUGFydGlhbDxOYW5vUG9wT3B0aW9ucz5cbik6IE5hbm9Qb3AgPT4ge1xuXG4gICAgLy8gUmVzb2x2ZSBvcHRpb25zXG4gICAgY29uc3QgYmFzZU9wdGlvbnM6IFBhcnRpYWw8TmFub1BvcE9wdGlvbnM+ID0gdHlwZW9mIHJlZmVyZW5jZSA9PT0gJ29iamVjdCcgJiYgIShyZWZlcmVuY2UgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkgP1xuICAgICAgICByZWZlcmVuY2UgOiB7cmVmZXJlbmNlLCBwb3BwZXIsIC4uLm9wdGlvbnN9O1xuXG4gICAgcmV0dXJuIHtcblxuICAgICAgICAvKipcbiAgICAgICAgICogUmVwb3NpdGlvbnMgdGhlIGN1cnJlbnQgcG9wcGVyLlxuICAgICAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBvcHRpb25zIHdoaWNoIGdldCBtZXJnZWQgd2l0aCB0aGUgY3VycmVudCBvbmVzLlxuICAgICAgICAgKi9cbiAgICAgICAgdXBkYXRlKG9wdGlvbnM6IFBhcnRpYWw8TmFub1BvcE9wdGlvbnM+ID0gYmFzZU9wdGlvbnMpOiBQb3NpdGlvbk1hdGNoIHwgbnVsbCB7XG4gICAgICAgICAgICBjb25zdCB7cmVmZXJlbmNlLCBwb3BwZXJ9ID0gT2JqZWN0LmFzc2lnbihiYXNlT3B0aW9ucywgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIGlmICghcG9wcGVyIHx8ICFyZWZlcmVuY2UpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BvcHBlci0gb3IgcmVmZXJlbmNlLWVsZW1lbnQgbWlzc2luZy4nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlcG9zaXRpb24ocmVmZXJlbmNlLCBwb3BwZXIsIGJhc2VPcHRpb25zKTtcbiAgICAgICAgfVxuICAgIH07XG59O1xuIiwgImltcG9ydCAqIGFzIF8gZnJvbSAnLi91dGlscy91dGlscyc7XG5pbXBvcnQge3BhcnNlVG9IU1ZBfSBmcm9tICcuL3V0aWxzL2NvbG9yJztcbmltcG9ydCB7SFNWYUNvbG9yfSBmcm9tICcuL3V0aWxzL2hzdmFjb2xvcic7XG5pbXBvcnQgTW92ZWFibGUgZnJvbSAnLi9saWJzL21vdmVhYmxlJztcbmltcG9ydCBTZWxlY3RhYmxlIGZyb20gJy4vbGlicy9zZWxlY3RhYmxlJztcbmltcG9ydCBidWlsZFBpY2tyIGZyb20gJy4vdGVtcGxhdGUnO1xuaW1wb3J0IHtjcmVhdGVQb3BwZXJ9IGZyb20gJ25hbm9wb3AnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQaWNrciB7XG5cbiAgICAvLyBFeHBvc2UgcGlja3IgdXRpbHNcbiAgICBzdGF0aWMgdXRpbHMgPSBfO1xuXG4gICAgLy8gQXNzaWduIHZlcnNpb24gYW5kIGV4cG9ydFxuICAgIHN0YXRpYyB2ZXJzaW9uID0gVkVSU0lPTjtcblxuICAgIC8vIERlZmF1bHQgc3RyaW5nc1xuICAgIHN0YXRpYyBJMThOX0RFRkFVTFRTID0ge1xuXG4gICAgICAgIC8vIFN0cmluZ3MgdmlzaWJsZSBpbiB0aGUgVUlcbiAgICAgICAgJ3VpOmRpYWxvZyc6ICdjb2xvciBwaWNrZXIgZGlhbG9nJyxcbiAgICAgICAgJ2J0bjp0b2dnbGUnOiAndG9nZ2xlIGNvbG9yIHBpY2tlciBkaWFsb2cnLFxuICAgICAgICAnYnRuOnN3YXRjaCc6ICdjb2xvciBzd2F0Y2gnLFxuICAgICAgICAnYnRuOmxhc3QtY29sb3InOiAndXNlIHByZXZpb3VzIGNvbG9yJyxcbiAgICAgICAgJ2J0bjpzYXZlJzogJ1NhdmUnLFxuICAgICAgICAnYnRuOmNhbmNlbCc6ICdDYW5jZWwnLFxuICAgICAgICAnYnRuOmNsZWFyJzogJ0NsZWFyJyxcblxuICAgICAgICAvLyBTdHJpbmdzIHVzZWQgZm9yIGFyaWEtbGFiZWxzXG4gICAgICAgICdhcmlhOmJ0bjpzYXZlJzogJ3NhdmUgYW5kIGNsb3NlJyxcbiAgICAgICAgJ2FyaWE6YnRuOmNhbmNlbCc6ICdjYW5jZWwgYW5kIGNsb3NlJyxcbiAgICAgICAgJ2FyaWE6YnRuOmNsZWFyJzogJ2NsZWFyIGFuZCBjbG9zZScsXG4gICAgICAgICdhcmlhOmlucHV0JzogJ2NvbG9yIGlucHV0IGZpZWxkJyxcbiAgICAgICAgJ2FyaWE6cGFsZXR0ZSc6ICdjb2xvciBzZWxlY3Rpb24gYXJlYScsXG4gICAgICAgICdhcmlhOmh1ZSc6ICdodWUgc2VsZWN0aW9uIHNsaWRlcicsXG4gICAgICAgICdhcmlhOm9wYWNpdHknOiAnc2VsZWN0aW9uIHNsaWRlcidcbiAgICB9O1xuXG4gICAgLy8gRGVmYXVsdCBvcHRpb25zXG4gICAgc3RhdGljIERFRkFVTFRfT1BUSU9OUyA9IHtcbiAgICAgICAgYXBwQ2xhc3M6IG51bGwsXG4gICAgICAgIHRoZW1lOiAnY2xhc3NpYycsXG4gICAgICAgIHVzZUFzQnV0dG9uOiBmYWxzZSxcbiAgICAgICAgcGFkZGluZzogOCxcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICBjb21wYXJpc29uOiB0cnVlLFxuICAgICAgICBjbG9zZU9uU2Nyb2xsOiBmYWxzZSxcbiAgICAgICAgb3V0cHV0UHJlY2lzaW9uOiAwLFxuICAgICAgICBsb2NrT3BhY2l0eTogZmFsc2UsXG4gICAgICAgIGF1dG9SZXBvc2l0aW9uOiB0cnVlLFxuICAgICAgICBjb250YWluZXI6ICdib2R5JyxcblxuICAgICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgICAgICBpbnRlcmFjdGlvbjoge31cbiAgICAgICAgfSxcblxuICAgICAgICBpMThuOiB7fSxcbiAgICAgICAgc3dhdGNoZXM6IG51bGwsXG4gICAgICAgIGlubGluZTogZmFsc2UsXG4gICAgICAgIHNsaWRlcnM6IG51bGwsXG5cbiAgICAgICAgZGVmYXVsdDogJyM0MjQ0NWEnLFxuICAgICAgICBkZWZhdWx0UmVwcmVzZW50YXRpb246IG51bGwsXG4gICAgICAgIHBvc2l0aW9uOiAnYm90dG9tLW1pZGRsZScsXG4gICAgICAgIGFkanVzdGFibGVOdW1iZXJzOiB0cnVlLFxuICAgICAgICBzaG93QWx3YXlzOiBmYWxzZSxcblxuICAgICAgICBjbG9zZVdpdGhLZXk6ICdFc2NhcGUnXG4gICAgfTtcblxuICAgIC8vIFdpbGwgYmUgdXNlZCB0byBwcmV2ZW50IHNwZWNpZmljIGFjdGlvbnMgZHVyaW5nIGluaXRpbGl6YXRpb25cbiAgICBfaW5pdGlhbGl6aW5nQWN0aXZlID0gdHJ1ZTtcblxuICAgIC8vIElmIHRoZSBjdXJyZW50IGNvbG9yIHZhbHVlIHNob3VsZCBiZSByZWNhbGN1bGF0ZWRcbiAgICBfcmVjYWxjID0gdHJ1ZTtcblxuICAgIC8vIFBvc2l0aW9uaW5nIGVuZ2luZSBhbmQgRE9NLVRyZWVcbiAgICBfbmFub3BvcCA9IG51bGw7XG4gICAgX3Jvb3QgPSBudWxsO1xuXG4gICAgLy8gQ3VycmVudCBhbmQgbGFzdCBjb2xvciBmb3IgY29tcGFyaXNvblxuICAgIF9jb2xvciA9IEhTVmFDb2xvcigpO1xuICAgIF9sYXN0Q29sb3IgPSBIU1ZhQ29sb3IoKTtcbiAgICBfc3dhdGNoQ29sb3JzID0gW107XG5cbiAgICAvLyBBbmltYXRpb24gZnJhbWUgdXNlZCBmb3Igc2V0dXAuXG4gICAgLy8gV2lsbCBiZSBjYW5jZWxsZWQgaW4gY2FzZSBvZiBkZXN0cnVjdGlvbi5cbiAgICBfc2V0dXBBbmltYXRpb25GcmFtZSA9IG51bGw7XG5cbiAgICAvLyBFdmVubGlzdGVuZXIgbmFtZTogW2NhbGxiYWNrc11cbiAgICBfZXZlbnRMaXN0ZW5lciA9IHtcbiAgICAgICAgaW5pdDogW10sXG4gICAgICAgIHNhdmU6IFtdLFxuICAgICAgICBoaWRlOiBbXSxcbiAgICAgICAgc2hvdzogW10sXG4gICAgICAgIGNsZWFyOiBbXSxcbiAgICAgICAgY2hhbmdlOiBbXSxcbiAgICAgICAgY2hhbmdlc3RvcDogW10sXG4gICAgICAgIGNhbmNlbDogW10sXG4gICAgICAgIHN3YXRjaHNlbGVjdDogW11cbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3Iob3B0KSB7XG5cbiAgICAgICAgLy8gQXNzaWduIGRlZmF1bHQgdmFsdWVzXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdCA9IE9iamVjdC5hc3NpZ24oey4uLlBpY2tyLkRFRkFVTFRfT1BUSU9OU30sIG9wdCk7XG5cbiAgICAgICAgY29uc3Qge3N3YXRjaGVzLCBjb21wb25lbnRzLCB0aGVtZSwgc2xpZGVycywgbG9ja09wYWNpdHksIHBhZGRpbmd9ID0gb3B0O1xuXG4gICAgICAgIGlmIChbJ25hbm8nLCAnbW9ub2xpdGgnXS5pbmNsdWRlcyh0aGVtZSkgJiYgIXNsaWRlcnMpIHtcbiAgICAgICAgICAgIG9wdC5zbGlkZXJzID0gJ2gnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgaW50ZXJhY3Rpb24gc2VjdGlvblxuICAgICAgICBpZiAoIWNvbXBvbmVudHMuaW50ZXJhY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHMuaW50ZXJhY3Rpb24gPSB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE92ZXJ3cml0ZSBwYWxldHRlIGlmIHByZXZpZXcsIG9wYWNpdHkgb3IgaHVlIGFyZSB0cnVlXG4gICAgICAgIGNvbnN0IHtwcmV2aWV3LCBvcGFjaXR5LCBodWUsIHBhbGV0dGV9ID0gY29tcG9uZW50cztcbiAgICAgICAgY29tcG9uZW50cy5vcGFjaXR5ID0gKCFsb2NrT3BhY2l0eSAmJiBvcGFjaXR5KTtcbiAgICAgICAgY29tcG9uZW50cy5wYWxldHRlID0gcGFsZXR0ZSB8fCBwcmV2aWV3IHx8IG9wYWNpdHkgfHwgaHVlO1xuXG4gICAgICAgIC8vIEluaXRpYWxpemUgcGlja2VyXG4gICAgICAgIHRoaXMuX3ByZUJ1aWxkKCk7XG4gICAgICAgIHRoaXMuX2J1aWxkQ29tcG9uZW50cygpO1xuICAgICAgICB0aGlzLl9iaW5kRXZlbnRzKCk7XG4gICAgICAgIHRoaXMuX2ZpbmFsQnVpbGQoKTtcblxuICAgICAgICAvLyBBcHBlbmQgcHJlLWRlZmluZWQgc3dhdGNoIGNvbG9yc1xuICAgICAgICBpZiAoc3dhdGNoZXMgJiYgc3dhdGNoZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBzd2F0Y2hlcy5mb3JFYWNoKGNvbG9yID0+IHRoaXMuYWRkU3dhdGNoKGNvbG9yKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJbml0aWFsaXplIHBvc2l0aW9uaW5nIGVuZ2luZVxuICAgICAgICBjb25zdCB7YnV0dG9uLCBhcHB9ID0gdGhpcy5fcm9vdDtcbiAgICAgICAgdGhpcy5fbmFub3BvcCA9IGNyZWF0ZVBvcHBlcihidXR0b24sIGFwcCwge1xuICAgICAgICAgICAgbWFyZ2luOiBwYWRkaW5nXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEluaXRpYWxpemUgYWNjZXNzaWJpbGl0eVxuICAgICAgICBidXR0b24uc2V0QXR0cmlidXRlKCdyb2xlJywgJ2J1dHRvbicpO1xuICAgICAgICBidXR0b24uc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgdGhpcy5fdCgnYnRuOnRvZ2dsZScpKTtcblxuICAgICAgICAvLyBJbml0aWxpemF0aW9uIGlzIGZpbmlzaCwgcGlja3IgaXMgdmlzaWJsZSBhbmQgcmVhZHkgZm9yIHVzYWdlXG4gICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICB0aGlzLl9zZXR1cEFuaW1hdGlvbkZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKChmdW5jdGlvbiBjYigpIHtcblxuICAgICAgICAgICAgLy8gVE9ETzogUGVyZm9ybWFuY2UgaXNzdWUgZHVlIHRvIGhpZ2ggY2FsbC1yYXRlP1xuICAgICAgICAgICAgaWYgKCFhcHAub2Zmc2V0V2lkdGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQXBwbHkgZGVmYXVsdCBjb2xvclxuICAgICAgICAgICAgdGhhdC5zZXRDb2xvcihvcHQuZGVmYXVsdCk7XG4gICAgICAgICAgICB0aGF0Ll9yZVBvc2l0aW9uaW5nUGlja2VyKCk7XG5cbiAgICAgICAgICAgIC8vIEluaXRpYWxpemUgY29sb3IgcmVwcmVzZW50YXRpb25cbiAgICAgICAgICAgIGlmIChvcHQuZGVmYXVsdFJlcHJlc2VudGF0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhhdC5fcmVwcmVzZW50YXRpb24gPSBvcHQuZGVmYXVsdFJlcHJlc2VudGF0aW9uO1xuICAgICAgICAgICAgICAgIHRoYXQuc2V0Q29sb3JSZXByZXNlbnRhdGlvbih0aGF0Ll9yZXByZXNlbnRhdGlvbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFNob3cgcGlja3IgaWYgbG9ja2VkXG4gICAgICAgICAgICBpZiAob3B0LnNob3dBbHdheXMpIHtcbiAgICAgICAgICAgICAgICB0aGF0LnNob3coKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gSW5pdGlhbGl6YXRpb24gaXMgZG9uZSAtIHBpY2tyIGlzIHVzYWJsZSwgZmlyZSBpbml0IGV2ZW50XG4gICAgICAgICAgICB0aGF0Ll9pbml0aWFsaXppbmdBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoYXQuX2VtaXQoJ2luaXQnKTtcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBpbnN0YW5jZSB2aWEgbWV0aG9kXG4gICAgc3RhdGljIGNyZWF0ZSA9IG9wdGlvbnMgPT4gbmV3IFBpY2tyKG9wdGlvbnMpO1xuXG4gICAgLy8gRG9lcyBvbmx5IHRoZSBhYnNvbHV0bHkgYmFzaWMgdGhpbmcgdG8gaW5pdGlhbGl6ZSB0aGUgY29tcG9uZW50c1xuICAgIF9wcmVCdWlsZCgpIHtcbiAgICAgICAgY29uc3Qge29wdGlvbnN9ID0gdGhpcztcblxuICAgICAgICAvLyBSZXNvbHZlIGVsZW1lbnRzXG4gICAgICAgIGZvciAoY29uc3QgdHlwZSBvZiBbJ2VsJywgJ2NvbnRhaW5lciddKSB7XG4gICAgICAgICAgICBvcHRpb25zW3R5cGVdID0gXy5yZXNvbHZlRWxlbWVudChvcHRpb25zW3R5cGVdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENyZWF0ZSBlbGVtZW50IGFuZCBhcHBlbmQgaXQgdG8gYm9keSB0b1xuICAgICAgICAvLyBQcmV2ZW50IGluaXRpYWxpemF0aW9uIGVycm9yc1xuICAgICAgICB0aGlzLl9yb290ID0gYnVpbGRQaWNrcih0aGlzKTtcblxuICAgICAgICAvLyBDaGVjayBpZiBhIGN1c3RvbSBidXR0b24gaXMgdXNlZFxuICAgICAgICBpZiAob3B0aW9ucy51c2VBc0J1dHRvbikge1xuICAgICAgICAgICAgdGhpcy5fcm9vdC5idXR0b24gPSBvcHRpb25zLmVsOyAvLyBSZXBsYWNlIGJ1dHRvbiB3aXRoIGN1c3RvbWl6ZWQgYnV0dG9uXG4gICAgICAgIH1cblxuICAgICAgICBvcHRpb25zLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl9yb290LnJvb3QpO1xuICAgIH1cblxuICAgIF9maW5hbEJ1aWxkKCkge1xuICAgICAgICBjb25zdCBvcHQgPSB0aGlzLm9wdGlvbnM7XG4gICAgICAgIGNvbnN0IHJvb3QgPSB0aGlzLl9yb290O1xuXG4gICAgICAgIC8vIFJlbW92ZSBmcm9tIGJvZHlcbiAgICAgICAgb3B0LmNvbnRhaW5lci5yZW1vdmVDaGlsZChyb290LnJvb3QpO1xuXG4gICAgICAgIGlmIChvcHQuaW5saW5lKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBvcHQuZWwucGFyZW50RWxlbWVudDtcblxuICAgICAgICAgICAgaWYgKG9wdC5lbC5uZXh0U2libGluZykge1xuICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUocm9vdC5hcHAsIG9wdC5lbC5uZXh0U2libGluZyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChyb290LmFwcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvcHQuY29udGFpbmVyLmFwcGVuZENoaWxkKHJvb3QuYXBwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERvbid0IHJlcGxhY2UgdGhlIHRoZSBlbGVtZW50IGlmIGEgY3VzdG9tIGJ1dHRvbiBpcyB1c2VkXG4gICAgICAgIGlmICghb3B0LnVzZUFzQnV0dG9uKSB7XG5cbiAgICAgICAgICAgIC8vIFJlcGxhY2UgZWxlbWVudCB3aXRoIGFjdHVhbCBjb2xvci1waWNrZXJcbiAgICAgICAgICAgIG9wdC5lbC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChyb290LnJvb3QsIG9wdC5lbCk7XG4gICAgICAgIH0gZWxzZSBpZiAob3B0LmlubGluZSkge1xuICAgICAgICAgICAgb3B0LmVsLnJlbW92ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgaXQgc2hvdWxkIGJlIGltbWVkaWF0bHkgZGlzYWJsZWRcbiAgICAgICAgaWYgKG9wdC5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBpZiBjb2xvciBjb21wYXJpc29uIGlzIGRpc2FibGVkLCBpZiB5ZXMgLSByZW1vdmUgdHJhbnNpdGlvbnMgc28gZXZlcnl0aGluZyBrZWVwcyBzbW9vdGhseVxuICAgICAgICBpZiAoIW9wdC5jb21wYXJpc29uKSB7XG4gICAgICAgICAgICByb290LmJ1dHRvbi5zdHlsZS50cmFuc2l0aW9uID0gJ25vbmUnO1xuXG4gICAgICAgICAgICBpZiAoIW9wdC51c2VBc0J1dHRvbikge1xuICAgICAgICAgICAgICAgIHJvb3QucHJldmlldy5sYXN0Q29sb3Iuc3R5bGUudHJhbnNpdGlvbiA9ICdub25lJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cblxuICAgIF9idWlsZENvbXBvbmVudHMoKSB7XG5cbiAgICAgICAgLy8gSW5zdGFuY2UgcmVmZXJlbmNlXG4gICAgICAgIGNvbnN0IGluc3QgPSB0aGlzO1xuICAgICAgICBjb25zdCBjcyA9IHRoaXMub3B0aW9ucy5jb21wb25lbnRzO1xuICAgICAgICBjb25zdCBzbGlkZXJzID0gKGluc3Qub3B0aW9ucy5zbGlkZXJzIHx8ICd2JykucmVwZWF0KDIpO1xuICAgICAgICBjb25zdCBbc28sIHNoXSA9IHNsaWRlcnMubWF0Y2goL15bdmhdKyQvZykgPyBzbGlkZXJzIDogW107XG5cbiAgICAgICAgLy8gUmUtYXNzaWduIGlmIG51bGxcbiAgICAgICAgY29uc3QgZ2V0Q29sb3IgPSAoKSA9PlxuICAgICAgICAgICAgdGhpcy5fY29sb3IgfHwgKHRoaXMuX2NvbG9yID0gdGhpcy5fbGFzdENvbG9yLmNsb25lKCkpO1xuXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSB7XG5cbiAgICAgICAgICAgIHBhbGV0dGU6IE1vdmVhYmxlKHtcbiAgICAgICAgICAgICAgICBlbGVtZW50OiBpbnN0Ll9yb290LnBhbGV0dGUucGlja2VyLFxuICAgICAgICAgICAgICAgIHdyYXBwZXI6IGluc3QuX3Jvb3QucGFsZXR0ZS5wYWxldHRlLFxuXG4gICAgICAgICAgICAgICAgb25zdG9wOiAoKSA9PiBpbnN0Ll9lbWl0KCdjaGFuZ2VzdG9wJywgJ3NsaWRlcicsIGluc3QpLFxuICAgICAgICAgICAgICAgIG9uY2hhbmdlKHgsIHkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjcy5wYWxldHRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2xvciA9IGdldENvbG9yKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHtfcm9vdCwgb3B0aW9uc30gPSBpbnN0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7bGFzdENvbG9yLCBjdXJyZW50Q29sb3J9ID0gX3Jvb3QucHJldmlldztcblxuICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGlucHV0IGZpZWxkIG9ubHkgaWYgdGhlIHVzZXIgaXMgY3VycmVudGx5IG5vdCB0eXBpbmdcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluc3QuX3JlY2FsYykge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWxjdWxhdGUgc2F0dXJhdGlvbiBiYXNlZCBvbiB0aGUgcG9zaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yLnMgPSB4ICogMTAwO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvci52ID0gMTAwIC0geSAqIDEwMDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUHJldmVudCBmYWxsaW5nIHVuZGVyIHplcm9cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yLnYgPCAwID8gY29sb3IudiA9IDAgOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdC5fdXBkYXRlT3V0cHV0KCdzbGlkZXInKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFNldCBwaWNrZXIgYW5kIGdyYWRpZW50IGNvbG9yXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNzc1JHQmFTdHJpbmcgPSBjb2xvci50b1JHQkEoKS50b1N0cmluZygwKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmJhY2tncm91bmQgPSBjc3NSR0JhU3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLndyYXBwZXIuc3R5bGUuYmFja2dyb3VuZCA9IGBcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudCh0byB0b3AsIHJnYmEoMCwgMCwgMCwgJHtjb2xvci5hfSksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCBoc2xhKCR7Y29sb3IuaH0sIDEwMCUsIDUwJSwgJHtjb2xvci5hfSksIHJnYmEoMjU1LCAyNTUsIDI1NSwgJHtjb2xvci5hfSkpXG4gICAgICAgICAgICAgICAgICAgIGA7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgY29sb3IgaXMgbG9ja2VkXG4gICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5jb21wYXJpc29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfcm9vdC5idXR0b24uc3R5bGUuc2V0UHJvcGVydHkoJy0tcGNyLWNvbG9yJywgY3NzUkdCYVN0cmluZyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSB1c2VyIGNoYW5nZXMgdGhlIGNvbG9yLCByZW1vdmUgdGhlIGNsZWFyZWQgaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgX3Jvb3QuYnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoJ2NsZWFyJyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIW9wdGlvbnMudXNlQXNCdXR0b24gJiYgIWluc3QuX2xhc3RDb2xvcikge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBseSBjb2xvciB0byBib3RoIHRoZSBsYXN0IGFuZCBjdXJyZW50IGNvbG9yIHNpbmNlIHRoZSBjdXJyZW50IHN0YXRlIGlzIGNsZWFyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RDb2xvci5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1wY3ItY29sb3InLCBjc3NSR0JhU3RyaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgYSBzd2F0Y2ggd2hpY2ggY29sb3IgbWF0Y2hlcyB0aGUgY3VycmVudCBvbmVcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGV4YSA9IGNvbG9yLnRvSEVYQSgpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qge2VsLCBjb2xvcn0gb2YgaW5zdC5fc3dhdGNoQ29sb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbC5jbGFzc0xpc3RbaGV4YSA9PT0gY29sb3IudG9IRVhBKCkudG9TdHJpbmcoKSA/ICdhZGQnIDogJ3JlbW92ZSddKCdwY3ItYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBDaGFuZ2UgY3VycmVudCBjb2xvclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29sb3Iuc3R5bGUuc2V0UHJvcGVydHkoJy0tcGNyLWNvbG9yJywgY3NzUkdCYVN0cmluZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG5cbiAgICAgICAgICAgIGh1ZTogTW92ZWFibGUoe1xuICAgICAgICAgICAgICAgIGxvY2s6IHNoID09PSAndicgPyAnaCcgOiAndicsXG4gICAgICAgICAgICAgICAgZWxlbWVudDogaW5zdC5fcm9vdC5odWUucGlja2VyLFxuICAgICAgICAgICAgICAgIHdyYXBwZXI6IGluc3QuX3Jvb3QuaHVlLnNsaWRlcixcblxuICAgICAgICAgICAgICAgIG9uc3RvcDogKCkgPT4gaW5zdC5fZW1pdCgnY2hhbmdlc3RvcCcsICdzbGlkZXInLCBpbnN0KSxcbiAgICAgICAgICAgICAgICBvbmNoYW5nZSh2KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY3MuaHVlIHx8ICFjcy5wYWxldHRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2xvciA9IGdldENvbG9yKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIGh1ZVxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5zdC5fcmVjYWxjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvci5oID0gdiAqIDM2MDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBjb2xvclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gYGhzbCgke2NvbG9yLmh9LCAxMDAlLCA1MCUpYDtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cy5wYWxldHRlLnRyaWdnZXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcblxuICAgICAgICAgICAgb3BhY2l0eTogTW92ZWFibGUoe1xuICAgICAgICAgICAgICAgIGxvY2s6IHNvID09PSAndicgPyAnaCcgOiAndicsXG4gICAgICAgICAgICAgICAgZWxlbWVudDogaW5zdC5fcm9vdC5vcGFjaXR5LnBpY2tlcixcbiAgICAgICAgICAgICAgICB3cmFwcGVyOiBpbnN0Ll9yb290Lm9wYWNpdHkuc2xpZGVyLFxuXG4gICAgICAgICAgICAgICAgb25zdG9wOiAoKSA9PiBpbnN0Ll9lbWl0KCdjaGFuZ2VzdG9wJywgJ3NsaWRlcicsIGluc3QpLFxuICAgICAgICAgICAgICAgIG9uY2hhbmdlKHYpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjcy5vcGFjaXR5IHx8ICFjcy5wYWxldHRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2xvciA9IGdldENvbG9yKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIG9wYWNpdHlcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluc3QuX3JlY2FsYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IuYSA9IE1hdGgucm91bmQodiAqIDFlMikgLyAxMDA7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgY29sb3JcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmJhY2tncm91bmQgPSBgcmdiYSgwLCAwLCAwLCAke2NvbG9yLmF9KWA7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHMucGFsZXR0ZS50cmlnZ2VyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG5cbiAgICAgICAgICAgIHNlbGVjdGFibGU6IFNlbGVjdGFibGUoe1xuICAgICAgICAgICAgICAgIGVsZW1lbnRzOiBpbnN0Ll9yb290LmludGVyYWN0aW9uLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYWN0aXZlJyxcblxuICAgICAgICAgICAgICAgIG9uY2hhbmdlKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5zdC5fcmVwcmVzZW50YXRpb24gPSBlLnRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdHlwZScpLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIGluc3QuX3JlY2FsYyAmJiBpbnN0Ll91cGRhdGVPdXRwdXQoJ3N3YXRjaCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fY29tcG9uZW50cyA9IGNvbXBvbmVudHM7XG4gICAgfVxuXG4gICAgX2JpbmRFdmVudHMoKSB7XG4gICAgICAgIGNvbnN0IHtfcm9vdCwgb3B0aW9uc30gPSB0aGlzO1xuXG4gICAgICAgIGNvbnN0IGV2ZW50QmluZGluZ3MgPSBbXG5cbiAgICAgICAgICAgIC8vIENsZWFyIGNvbG9yXG4gICAgICAgICAgICBfLm9uKF9yb290LmludGVyYWN0aW9uLmNsZWFyLCAnY2xpY2snLCAoKSA9PiB0aGlzLl9jbGVhckNvbG9yKCkpLFxuXG4gICAgICAgICAgICAvLyBTZWxlY3QgbGFzdCBjb2xvciBvbiBjbGlja1xuICAgICAgICAgICAgXy5vbihbXG4gICAgICAgICAgICAgICAgX3Jvb3QuaW50ZXJhY3Rpb24uY2FuY2VsLFxuICAgICAgICAgICAgICAgIF9yb290LnByZXZpZXcubGFzdENvbG9yXG4gICAgICAgICAgICBdLCAnY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRIU1ZBKC4uLih0aGlzLl9sYXN0Q29sb3IgfHwgdGhpcy5fY29sb3IpLnRvSFNWQSgpLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0KCdjYW5jZWwnKTtcbiAgICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgICAvLyBTYXZlIGNvbG9yXG4gICAgICAgICAgICBfLm9uKF9yb290LmludGVyYWN0aW9uLnNhdmUsICdjbGljaycsICgpID0+IHtcbiAgICAgICAgICAgICAgICAhdGhpcy5hcHBseUNvbG9yKCkgJiYgIW9wdGlvbnMuc2hvd0Fsd2F5cyAmJiB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgICAvLyBVc2VyIGlucHV0XG4gICAgICAgICAgICBfLm9uKF9yb290LmludGVyYWN0aW9uLnJlc3VsdCwgWydrZXl1cCcsICdpbnB1dCddLCBlID0+IHtcblxuICAgICAgICAgICAgICAgIC8vIEZpcmUgbGlzdGVuZXIgaWYgaW5pdGlhbGl6YXRpb24gaXMgZmluaXNoIGFuZCBjaGFuZ2VkIGNvbG9yIHdhcyB2YWxpZFxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNldENvbG9yKGUudGFyZ2V0LnZhbHVlLCB0cnVlKSAmJiAhdGhpcy5faW5pdGlhbGl6aW5nQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXQoJ2NoYW5nZScsIHRoaXMuX2NvbG9yLCAnaW5wdXQnLCB0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1pdCgnY2hhbmdlc3RvcCcsICdpbnB1dCcsIHRoaXMpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9KSxcblxuICAgICAgICAgICAgLy8gRGV0ZWN0IHVzZXIgaW5wdXQgYW5kIGRpc2FibGUgYXV0by1yZWNhbGN1bGF0aW9uXG4gICAgICAgICAgICBfLm9uKF9yb290LmludGVyYWN0aW9uLnJlc3VsdCwgWydmb2N1cycsICdibHVyJ10sIGUgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlY2FsYyA9IGUudHlwZSA9PT0gJ2JsdXInO1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlY2FsYyAmJiB0aGlzLl91cGRhdGVPdXRwdXQobnVsbCk7XG4gICAgICAgICAgICB9KSxcblxuICAgICAgICAgICAgLy8gQ2FuY2VsIGlucHV0IGRldGVjdGlvbiBvbiBjb2xvciBjaGFuZ2VcbiAgICAgICAgICAgIF8ub24oW1xuICAgICAgICAgICAgICAgIF9yb290LnBhbGV0dGUucGFsZXR0ZSxcbiAgICAgICAgICAgICAgICBfcm9vdC5wYWxldHRlLnBpY2tlcixcbiAgICAgICAgICAgICAgICBfcm9vdC5odWUuc2xpZGVyLFxuICAgICAgICAgICAgICAgIF9yb290Lmh1ZS5waWNrZXIsXG4gICAgICAgICAgICAgICAgX3Jvb3Qub3BhY2l0eS5zbGlkZXIsXG4gICAgICAgICAgICAgICAgX3Jvb3Qub3BhY2l0eS5waWNrZXJcbiAgICAgICAgICAgIF0sIFsnbW91c2Vkb3duJywgJ3RvdWNoc3RhcnQnXSwgKCkgPT4gdGhpcy5fcmVjYWxjID0gdHJ1ZSwge3Bhc3NpdmU6IHRydWV9KVxuICAgICAgICBdO1xuXG4gICAgICAgIC8vIFByb3ZpZGUgaGlkaW5nIC8gc2hvd2luZyBhYmlsaXRpZXMgb25seSBpZiBzaG93QWx3YXlzIGlzIGZhbHNlXG4gICAgICAgIGlmICghb3B0aW9ucy5zaG93QWx3YXlzKSB7XG4gICAgICAgICAgICBjb25zdCBjayA9IG9wdGlvbnMuY2xvc2VXaXRoS2V5O1xuXG4gICAgICAgICAgICBldmVudEJpbmRpbmdzLnB1c2goXG5cbiAgICAgICAgICAgICAgICAvLyBTYXZlIGFuZCBoaWRlIC8gc2hvdyBwaWNrZXJcbiAgICAgICAgICAgICAgICBfLm9uKF9yb290LmJ1dHRvbiwgJ2NsaWNrJywgKCkgPT4gdGhpcy5pc09wZW4oKSA/IHRoaXMuaGlkZSgpIDogdGhpcy5zaG93KCkpLFxuXG4gICAgICAgICAgICAgICAgLy8gQ2xvc2Ugd2l0aCBlc2NhcGUga2V5XG4gICAgICAgICAgICAgICAgXy5vbihkb2N1bWVudCwgJ2tleXVwJywgZSA9PiB0aGlzLmlzT3BlbigpICYmIChlLmtleSA9PT0gY2sgfHwgZS5jb2RlID09PSBjaykgJiYgdGhpcy5oaWRlKCkpLFxuXG4gICAgICAgICAgICAgICAgLy8gQ2FuY2VsIHNlbGVjdGluZyBpZiB0aGUgdXNlciB0YXBzIGJlaGluZCB0aGUgY29sb3IgcGlja2VyXG4gICAgICAgICAgICAgICAgXy5vbihkb2N1bWVudCwgWyd0b3VjaHN0YXJ0JywgJ21vdXNlZG93biddLCBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNPcGVuKCkgJiYgIV8uZXZlbnRQYXRoKGUpLnNvbWUoZWwgPT4gZWwgPT09IF9yb290LmFwcCB8fCBlbCA9PT0gX3Jvb3QuYnV0dG9uKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7Y2FwdHVyZTogdHJ1ZX0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTWFrZSBpbnB1dCBhZGp1c3RhYmxlIGlmIGVuYWJsZWRcbiAgICAgICAgaWYgKG9wdGlvbnMuYWRqdXN0YWJsZU51bWJlcnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlcyA9IHtcbiAgICAgICAgICAgICAgICByZ2JhOiBbMjU1LCAyNTUsIDI1NSwgMV0sXG4gICAgICAgICAgICAgICAgaHN2YTogWzM2MCwgMTAwLCAxMDAsIDFdLFxuICAgICAgICAgICAgICAgIGhzbGE6IFszNjAsIDEwMCwgMTAwLCAxXSxcbiAgICAgICAgICAgICAgICBjbXlrOiBbMTAwLCAxMDAsIDEwMCwgMTAwXVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgXy5hZGp1c3RhYmxlSW5wdXROdW1iZXJzKF9yb290LmludGVyYWN0aW9uLnJlc3VsdCwgKG8sIHN0ZXAsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSByYW5nZXNbdGhpcy5nZXRDb2xvclJlcHJlc2VudGF0aW9uKCkudG9Mb3dlckNhc2UoKV07XG5cbiAgICAgICAgICAgICAgICBpZiAocmFuZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4ID0gcmFuZ2VbaW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBuZXh0IHJlYXNvbmFibGUgbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG52ID0gbyArIChtYXggPj0gMTAwID8gc3RlcCAqIDEwMDAgOiBzdGVwKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBBcHBseSByYW5nZSBvZiB6ZXJvIHVwIHRvIG1heCwgZml4IGZsb2F0aW5nLXBvaW50IGlzc3Vlc1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnYgPD0gMCA/IDAgOiBOdW1iZXIoKG52IDwgbWF4ID8gbnYgOiBtYXgpLnRvUHJlY2lzaW9uKDMpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuYXV0b1JlcG9zaXRpb24gJiYgIW9wdGlvbnMuaW5saW5lKSB7XG4gICAgICAgICAgICBsZXQgdGltZW91dCA9IG51bGw7XG4gICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcblxuICAgICAgICAgICAgLy8gUmUtY2FsYyBwb3NpdGlvbiBvbiB3aW5kb3cgcmVzaXplLCBzY3JvbGwgYW5kIHdoZWVsXG4gICAgICAgICAgICBldmVudEJpbmRpbmdzLnB1c2goXG4gICAgICAgICAgICAgICAgXy5vbih3aW5kb3csIFsnc2Nyb2xsJywgJ3Jlc2l6ZSddLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGF0LmlzT3BlbigpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmNsb3NlT25TY3JvbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRpbWVvdXQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB0aW1lb3V0ID0gbnVsbCwgMTAwKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBwb3NpdGlvbiBvbiBldmVyeSBmcmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiBycygpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fcmVQb3NpdGlvbmluZ1BpY2tlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGltZW91dCAhPT0gbnVsbCkgJiYgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHRpbWVvdXQgPSBudWxsLCAxMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge2NhcHR1cmU6IHRydWV9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNhdmUgYmluZGluZ3NcbiAgICAgICAgdGhpcy5fZXZlbnRCaW5kaW5ncyA9IGV2ZW50QmluZGluZ3M7XG4gICAgfVxuXG4gICAgX3JlUG9zaXRpb25pbmdQaWNrZXIoKSB7XG4gICAgICAgIGNvbnN0IHtvcHRpb25zfSA9IHRoaXM7XG5cbiAgICAgICAgLy8gTm8gcmVwb3NpdGlvbmluZyBuZWVkZWQgaWYgaW5saW5lXG4gICAgICAgIGlmICghb3B0aW9ucy5pbmxpbmUpIHtcbiAgICAgICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSB0aGlzLl9uYW5vcG9wLnVwZGF0ZSh7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyOiBkb2N1bWVudC5ib2R5LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBvcHRpb25zLnBvc2l0aW9uXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWwgPSB0aGlzLl9yb290LmFwcDtcbiAgICAgICAgICAgICAgICBjb25zdCBlYiA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgICAgIGVsLnN0eWxlLnRvcCA9IGAkeyh3aW5kb3cuaW5uZXJIZWlnaHQgLSBlYi5oZWlnaHQpIC8gMn1weGA7XG4gICAgICAgICAgICAgICAgZWwuc3R5bGUubGVmdCA9IGAkeyh3aW5kb3cuaW5uZXJXaWR0aCAtIGViLndpZHRoKSAvIDJ9cHhgO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgX3VwZGF0ZU91dHB1dChldmVudFNvdXJjZSkge1xuICAgICAgICBjb25zdCB7X3Jvb3QsIF9jb2xvciwgb3B0aW9uc30gPSB0aGlzO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIGNvbXBvbmVudCBpcyBwcmVzZW50XG4gICAgICAgIGlmIChfcm9vdC5pbnRlcmFjdGlvbi50eXBlKCkpIHtcblxuICAgICAgICAgICAgLy8gQ29uc3RydWN0IGZ1bmN0aW9uIG5hbWUgYW5kIGNhbGwgaWYgcHJlc2VudFxuICAgICAgICAgICAgY29uc3QgbWV0aG9kID0gYHRvJHtfcm9vdC5pbnRlcmFjdGlvbi50eXBlKCkuZ2V0QXR0cmlidXRlKCdkYXRhLXR5cGUnKX1gO1xuICAgICAgICAgICAgX3Jvb3QuaW50ZXJhY3Rpb24ucmVzdWx0LnZhbHVlID0gdHlwZW9mIF9jb2xvclttZXRob2RdID09PSAnZnVuY3Rpb24nID9cbiAgICAgICAgICAgICAgICBfY29sb3JbbWV0aG9kXSgpLnRvU3RyaW5nKG9wdGlvbnMub3V0cHV0UHJlY2lzaW9uKSA6ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmlyZSBsaXN0ZW5lciBpZiBpbml0aWFsaXphdGlvbiBpcyBmaW5pc2hcbiAgICAgICAgaWYgKCF0aGlzLl9pbml0aWFsaXppbmdBY3RpdmUgJiYgdGhpcy5fcmVjYWxjKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0KCdjaGFuZ2UnLCBfY29sb3IsIGV2ZW50U291cmNlLCB0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9jbGVhckNvbG9yKHNpbGVudCA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IHtfcm9vdCwgb3B0aW9uc30gPSB0aGlzO1xuXG4gICAgICAgIC8vIENoYW5nZSBvbmx5IHRoZSBidXR0b24gY29sb3IgaWYgaXQgaXNuJ3QgY3VzdG9taXplZFxuICAgICAgICBpZiAoIW9wdGlvbnMudXNlQXNCdXR0b24pIHtcbiAgICAgICAgICAgIF9yb290LmJ1dHRvbi5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1wY3ItY29sb3InLCAncmdiYSgwLCAwLCAwLCAwLjE1KScpO1xuICAgICAgICB9XG5cbiAgICAgICAgX3Jvb3QuYnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2NsZWFyJyk7XG5cbiAgICAgICAgaWYgKCFvcHRpb25zLnNob3dBbHdheXMpIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbGFzdENvbG9yID0gbnVsbDtcbiAgICAgICAgaWYgKCF0aGlzLl9pbml0aWFsaXppbmdBY3RpdmUgJiYgIXNpbGVudCkge1xuXG4gICAgICAgICAgICAvLyBGaXJlIGxpc3RlbmVyXG4gICAgICAgICAgICB0aGlzLl9lbWl0KCdzYXZlJywgbnVsbCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0KCdjbGVhcicpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX3BhcnNlTG9jYWxDb2xvcihzdHIpIHtcbiAgICAgICAgY29uc3Qge3ZhbHVlcywgdHlwZSwgYX0gPSBwYXJzZVRvSFNWQShzdHIpO1xuICAgICAgICBjb25zdCB7bG9ja09wYWNpdHl9ID0gdGhpcy5vcHRpb25zO1xuICAgICAgICBjb25zdCBhbHBoYU1ha2VzQUNoYW5nZSA9IGEgIT09IHVuZGVmaW5lZCAmJiBhICE9PSAxO1xuXG4gICAgICAgIC8vIElmIG5vIG9wYWNpdHkgaXMgYXBwbGllZCwgYWRkIHVuZGVmaW5lZCBhdCB0aGUgdmVyeSBlbmQgd2hpY2ggZ2V0c1xuICAgICAgICAvLyBTZXQgdG8gMSBpbiBzZXRIU1ZBXG4gICAgICAgIGlmICh2YWx1ZXMgJiYgdmFsdWVzLmxlbmd0aCA9PT0gMykge1xuICAgICAgICAgICAgdmFsdWVzWzNdID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlczogKCF2YWx1ZXMgfHwgKGxvY2tPcGFjaXR5ICYmIGFscGhhTWFrZXNBQ2hhbmdlKSkgPyBudWxsIDogdmFsdWVzLFxuICAgICAgICAgICAgdHlwZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIF90KGtleSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmkxOG5ba2V5XSB8fCBQaWNrci5JMThOX0RFRkFVTFRTW2tleV07XG4gICAgfVxuXG4gICAgX2VtaXQoZXZlbnQsIC4uLmFyZ3MpIHtcbiAgICAgICAgdGhpcy5fZXZlbnRMaXN0ZW5lcltldmVudF0uZm9yRWFjaChjYiA9PiBjYiguLi5hcmdzLCB0aGlzKSk7XG4gICAgfVxuXG4gICAgb24oZXZlbnQsIGNiKSB7XG4gICAgICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJbZXZlbnRdLnB1c2goY2IpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBvZmYoZXZlbnQsIGNiKSB7XG4gICAgICAgIGNvbnN0IGNhbGxCYWNrcyA9ICh0aGlzLl9ldmVudExpc3RlbmVyW2V2ZW50XSB8fCBbXSk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gY2FsbEJhY2tzLmluZGV4T2YoY2IpO1xuXG4gICAgICAgIGlmICh+aW5kZXgpIHtcbiAgICAgICAgICAgIGNhbGxCYWNrcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBwZW5kcyBhIGNvbG9yIHRvIHRoZSBzd2F0Y2ggcGFsZXR0ZVxuICAgICAqIEBwYXJhbSBjb2xvclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqL1xuICAgIGFkZFN3YXRjaChjb2xvcikge1xuICAgICAgICBjb25zdCB7dmFsdWVzfSA9IHRoaXMuX3BhcnNlTG9jYWxDb2xvcihjb2xvcik7XG5cbiAgICAgICAgaWYgKHZhbHVlcykge1xuICAgICAgICAgICAgY29uc3Qge19zd2F0Y2hDb2xvcnMsIF9yb290fSA9IHRoaXM7XG4gICAgICAgICAgICBjb25zdCBjb2xvciA9IEhTVmFDb2xvciguLi52YWx1ZXMpO1xuXG4gICAgICAgICAgICAvLyBDcmVhdGUgbmV3IHN3YXRjaCBIVE1MRWxlbWVudFxuICAgICAgICAgICAgY29uc3QgZWwgPSBfLmNyZWF0ZUVsZW1lbnRGcm9tU3RyaW5nKFxuICAgICAgICAgICAgICAgIGA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBzdHlsZT1cIi0tcGNyLWNvbG9yOiAke2NvbG9yLnRvUkdCQSgpLnRvU3RyaW5nKDApfVwiIGFyaWEtbGFiZWw9XCIke3RoaXMuX3QoJ2J0bjpzd2F0Y2gnKX1cIi8+YFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgLy8gQXBwZW5kIGVsZW1lbnQgYW5kIHNhdmUgc3dhdGNoIGRhdGFcbiAgICAgICAgICAgIF9yb290LnN3YXRjaGVzLmFwcGVuZENoaWxkKGVsKTtcbiAgICAgICAgICAgIF9zd2F0Y2hDb2xvcnMucHVzaCh7ZWwsIGNvbG9yfSk7XG5cbiAgICAgICAgICAgIC8vIEJpbmQgZXZlbnRcbiAgICAgICAgICAgIHRoaXMuX2V2ZW50QmluZGluZ3MucHVzaChcbiAgICAgICAgICAgICAgICBfLm9uKGVsLCAnY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0SFNWQSguLi5jb2xvci50b0hTVkEoKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXQoJ3N3YXRjaHNlbGVjdCcsIGNvbG9yKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1pdCgnY2hhbmdlJywgY29sb3IsICdzd2F0Y2gnLCB0aGlzKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhIHN3YXRjaCBjb2xvciBieSBpdCdzIGluZGV4XG4gICAgICogQHBhcmFtIGluZGV4XG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgcmVtb3ZlU3dhdGNoKGluZGV4KSB7XG4gICAgICAgIGNvbnN0IHN3YXRjaENvbG9yID0gdGhpcy5fc3dhdGNoQ29sb3JzW2luZGV4XTtcblxuICAgICAgICAvLyBDaGVjayBzd2F0Y2ggZGF0YVxuICAgICAgICBpZiAoc3dhdGNoQ29sb3IpIHtcbiAgICAgICAgICAgIGNvbnN0IHtlbH0gPSBzd2F0Y2hDb2xvcjtcblxuICAgICAgICAgICAgLy8gUmVtb3ZlIEhUTUwgY2hpbGQgYW5kIHN3YXRjaCBkYXRhXG4gICAgICAgICAgICB0aGlzLl9yb290LnN3YXRjaGVzLnJlbW92ZUNoaWxkKGVsKTtcbiAgICAgICAgICAgIHRoaXMuX3N3YXRjaENvbG9ycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgYXBwbHlDb2xvcihzaWxlbnQgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCB7cHJldmlldywgYnV0dG9ufSA9IHRoaXMuX3Jvb3Q7XG5cbiAgICAgICAgLy8gQ2hhbmdlIHByZXZpZXcgYW5kIGN1cnJlbnQgY29sb3JcbiAgICAgICAgY29uc3QgY3NzUkdCYVN0cmluZyA9IHRoaXMuX2NvbG9yLnRvUkdCQSgpLnRvU3RyaW5nKDApO1xuICAgICAgICBwcmV2aWV3Lmxhc3RDb2xvci5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1wY3ItY29sb3InLCBjc3NSR0JhU3RyaW5nKTtcblxuICAgICAgICAvLyBDaGFuZ2Ugb25seSB0aGUgYnV0dG9uIGNvbG9yIGlmIGl0IGlzbid0IGN1c3RvbWl6ZWRcbiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMudXNlQXNCdXR0b24pIHtcbiAgICAgICAgICAgIGJ1dHRvbi5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1wY3ItY29sb3InLCBjc3NSR0JhU3RyaW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFVzZXIgY2hhbmdlZCB0aGUgY29sb3Igc28gcmVtb3ZlIHRoZSBjbGVhciBjbGFzXG4gICAgICAgIGJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCdjbGVhcicpO1xuXG4gICAgICAgIC8vIFNhdmUgbGFzdCBjb2xvclxuICAgICAgICB0aGlzLl9sYXN0Q29sb3IgPSB0aGlzLl9jb2xvci5jbG9uZSgpO1xuXG4gICAgICAgIC8vIEZpcmUgbGlzdGVuZXJcbiAgICAgICAgaWYgKCF0aGlzLl9pbml0aWFsaXppbmdBY3RpdmUgJiYgIXNpbGVudCkge1xuICAgICAgICAgICAgdGhpcy5fZW1pdCgnc2F2ZScsIHRoaXMuX2NvbG9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlc3Ryb3kncyBhbGwgZnVuY3Rpb25hbGl0eXNcbiAgICAgKi9cbiAgICBkZXN0cm95KCkge1xuXG4gICAgICAgIC8vIENhbmNlbCBzZXR1cC1mcmFtZSBpZiBzZXRcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fc2V0dXBBbmltYXRpb25GcmFtZSk7XG5cbiAgICAgICAgLy8gVW5iaW5kIGV2ZW50c1xuICAgICAgICB0aGlzLl9ldmVudEJpbmRpbmdzLmZvckVhY2goYXJncyA9PiBfLm9mZiguLi5hcmdzKSk7XG5cbiAgICAgICAgLy8gRGVzdHJveSBzdWItY29tcG9uZW50c1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLl9jb21wb25lbnRzKVxuICAgICAgICAgICAgLmZvckVhY2goa2V5ID0+IHRoaXMuX2NvbXBvbmVudHNba2V5XS5kZXN0cm95KCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlc3Ryb3kncyBhbGwgZnVuY3Rpb25hbGl0eXMgYW5kIHJlbW92ZXNcbiAgICAgKiB0aGUgcGlja3IgZWxlbWVudC5cbiAgICAgKi9cbiAgICBkZXN0cm95QW5kUmVtb3ZlKCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgY29uc3Qge3Jvb3QsIGFwcH0gPSB0aGlzLl9yb290O1xuXG4gICAgICAgIC8vIFJlbW92ZSBlbGVtZW50XG4gICAgICAgIGlmIChyb290LnBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJvb3QucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZChyb290KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlbW92ZSAucGNyLWFwcFxuICAgICAgICBhcHAucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZChhcHApO1xuXG4gICAgICAgIC8vIFRoZXJlIGFyZSByZWZlcmVuY2VzIHRvIHZhcmlvdXMgRE9NIGVsZW1lbnRzIHN0b3JlZCBpbiB0aGUgcGlja3IgaW5zdGFuY2VcbiAgICAgICAgLy8gVGhpcyBjbGVhbnMgYWxsIG9mIHRoZW0gdG8gYXZvaWQgZGV0YWNoZWQgRE9Nc1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzKVxuICAgICAgICAgICAgLmZvckVhY2goa2V5ID0+IHRoaXNba2V5XSA9IG51bGwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhpZGVzIHRoZSBjb2xvci1waWNrZXIgdWkuXG4gICAgICovXG4gICAgaGlkZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3Jvb3QuYXBwLmNsYXNzTGlzdC5yZW1vdmUoJ3Zpc2libGUnKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXQoJ2hpZGUnKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3dzIHRoZSBjb2xvci1waWNrZXIgdWkuXG4gICAgICovXG4gICAgc2hvdygpIHtcbiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuZGlzYWJsZWQgJiYgIXRoaXMuaXNPcGVuKCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3Jvb3QuYXBwLmNsYXNzTGlzdC5hZGQoJ3Zpc2libGUnKTtcbiAgICAgICAgICAgIHRoaXMuX3JlUG9zaXRpb25pbmdQaWNrZXIoKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXQoJ3Nob3cnLCB0aGlzLl9jb2xvcik7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSBJZiB0aGUgY29sb3IgcGlja2VyIGlzIGN1cnJlbnRseSBvcGVuXG4gICAgICovXG4gICAgaXNPcGVuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm9vdC5hcHAuY2xhc3NMaXN0LmNvbnRhaW5zKCd2aXNpYmxlJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IGEgc3BlY2lmaWMgY29sb3IuXG4gICAgICogQHBhcmFtIGggSHVlXG4gICAgICogQHBhcmFtIHMgU2F0dXJhdGlvblxuICAgICAqIEBwYXJhbSB2IFZhbHVlXG4gICAgICogQHBhcmFtIGEgQWxwaGEgY2hhbm5lbCAoMCAtIDEpXG4gICAgICogQHBhcmFtIHNpbGVudCBJZiB0aGUgYnV0dG9uIHNob3VsZCBub3QgY2hhbmdlIHRoZSBjb2xvclxuICAgICAqIEByZXR1cm4gYm9vbGVhbiBpZiB0aGUgY29sb3IgaGFzIGJlZW4gYWNjZXB0ZWRcbiAgICAgKi9cbiAgICBzZXRIU1ZBKGggPSAzNjAsIHMgPSAwLCB2ID0gMCwgYSA9IDEsIHNpbGVudCA9IGZhbHNlKSB7XG5cbiAgICAgICAgLy8gRGVhY3RpdmF0ZSBjb2xvciBjYWxjdWxhdGlvblxuICAgICAgICBjb25zdCByZWNhbGMgPSB0aGlzLl9yZWNhbGM7IC8vIFNhdmUgc3RhdGVcbiAgICAgICAgdGhpcy5fcmVjYWxjID0gZmFsc2U7XG5cbiAgICAgICAgLy8gVmFsaWRhdGUgaW5wdXRcbiAgICAgICAgaWYgKGggPCAwIHx8IGggPiAzNjAgfHwgcyA8IDAgfHwgcyA+IDEwMCB8fCB2IDwgMCB8fCB2ID4gMTAwIHx8IGEgPCAwIHx8IGEgPiAxKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPdmVycmlkZSBjdXJyZW50IGNvbG9yIGFuZCByZS1hY3RpdmUgY29sb3IgY2FsY3VsYXRpb25cbiAgICAgICAgdGhpcy5fY29sb3IgPSBIU1ZhQ29sb3IoaCwgcywgdiwgYSk7XG5cbiAgICAgICAgLy8gVXBkYXRlIHNsaWRlciBhbmQgcGFsZXR0ZVxuICAgICAgICBjb25zdCB7aHVlLCBvcGFjaXR5LCBwYWxldHRlfSA9IHRoaXMuX2NvbXBvbmVudHM7XG4gICAgICAgIGh1ZS51cGRhdGUoKGggLyAzNjApKTtcbiAgICAgICAgb3BhY2l0eS51cGRhdGUoYSk7XG4gICAgICAgIHBhbGV0dGUudXBkYXRlKHMgLyAxMDAsIDEgLSAodiAvIDEwMCkpO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIGNhbGwgaXMgc2lsZW50XG4gICAgICAgIGlmICghc2lsZW50KSB7XG4gICAgICAgICAgICB0aGlzLmFwcGx5Q29sb3IoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFVwZGF0ZSBvdXRwdXQgaWYgcmVjYWxjdWxhdGlvbiBpcyBlbmFibGVkXG4gICAgICAgIGlmIChyZWNhbGMpIHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU91dHB1dCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVzdG9yZSBvbGQgc3RhdGVcbiAgICAgICAgdGhpcy5fcmVjYWxjID0gcmVjYWxjO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmllcyB0byBwYXJzZSBhIHN0cmluZyB3aGljaCByZXByZXNlbnRzIGEgY29sb3IuXG4gICAgICogRXhhbXBsZXM6ICNmZmZcbiAgICAgKiAgICAgICAgICAgcmdiIDEwIDEwIDIwMFxuICAgICAqICAgICAgICAgICBoc3ZhIDEwIDIwIDUgMC41XG4gICAgICogQHBhcmFtIHN0cmluZ1xuICAgICAqIEBwYXJhbSBzaWxlbnRcbiAgICAgKi9cbiAgICBzZXRDb2xvcihzdHJpbmcsIHNpbGVudCA9IGZhbHNlKSB7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgbnVsbFxuICAgICAgICBpZiAoc3RyaW5nID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLl9jbGVhckNvbG9yKHNpbGVudCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHt2YWx1ZXMsIHR5cGV9ID0gdGhpcy5fcGFyc2VMb2NhbENvbG9yKHN0cmluZyk7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgY29sb3IgaXMgb2tcbiAgICAgICAgaWYgKHZhbHVlcykge1xuXG4gICAgICAgICAgICAvLyBDaGFuZ2Ugc2VsZWN0ZWQgY29sb3IgZm9ybWF0XG4gICAgICAgICAgICBjb25zdCB1dHlwZSA9IHR5cGUudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIGNvbnN0IHtvcHRpb25zfSA9IHRoaXMuX3Jvb3QuaW50ZXJhY3Rpb247XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBvcHRpb25zLmZpbmQoZWwgPT4gZWwuZ2V0QXR0cmlidXRlKCdkYXRhLXR5cGUnKSA9PT0gdXR5cGUpO1xuXG4gICAgICAgICAgICAvLyBBdXRvIHNlbGVjdCBvbmx5IGlmIG5vdCBoaWRkZW5cbiAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgIXRhcmdldC5oaWRkZW4pIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGVsIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgZWwuY2xhc3NMaXN0W2VsID09PSB0YXJnZXQgPyAnYWRkJyA6ICdyZW1vdmUnXSgnYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBVcGRhdGUgY29sb3IgKGZpcmVzICdzYXZlJyBldmVudCBpZiBzaWxlbnQgaXMgJ2ZhbHNlJylcbiAgICAgICAgICAgIGlmICghdGhpcy5zZXRIU1ZBKC4uLnZhbHVlcywgc2lsZW50KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gVXBkYXRlIHJlcHJlc2VudGF0aW9uIChmaXJlcyAnY2hhbmdlJyBldmVudClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldENvbG9yUmVwcmVzZW50YXRpb24odXR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoYW5nZXMgdGhlIGNvbG9yIF9yZXByZXNlbnRhdGlvbi5cbiAgICAgKiBBbGxvd2VkIHZhbHVlcyBhcmUgSEVYLCBSR0IsIEhTViwgSFNMIGFuZCBDTVlLXG4gICAgICogQHBhcmFtIHR5cGVcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gaWYgdGhlIHNlbGVjdGVkIHR5cGUgd2FzIHZhbGlkLlxuICAgICAqL1xuICAgIHNldENvbG9yUmVwcmVzZW50YXRpb24odHlwZSkge1xuXG4gICAgICAgIC8vIEZvcmNlIHVwcGVyY2FzZSB0byBhbGxvdyBhIGNhc2Utc2Vuc2l0aXYgY29tcGFyaXNvblxuICAgICAgICB0eXBlID0gdHlwZS50b1VwcGVyQ2FzZSgpO1xuXG4gICAgICAgIC8vIEZpbmQgYnV0dG9uIHdpdGggZ2l2ZW4gdHlwZSBhbmQgdHJpZ2dlciBjbGljayBldmVudFxuICAgICAgICByZXR1cm4gISF0aGlzLl9yb290LmludGVyYWN0aW9uLm9wdGlvbnNcbiAgICAgICAgICAgIC5maW5kKHYgPT4gdi5nZXRBdHRyaWJ1dGUoJ2RhdGEtdHlwZScpLnN0YXJ0c1dpdGgodHlwZSkgJiYgIXYuY2xpY2soKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY3VycmVudCBjb2xvciByZXByZXNlbnRhaW9uLiBTZWUgc2V0Q29sb3JSZXByZXNlbnRhdGlvblxuICAgICAqIEByZXR1cm5zIHsqfVxuICAgICAqL1xuICAgIGdldENvbG9yUmVwcmVzZW50YXRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXByZXNlbnRhdGlvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBIU1ZhQ29sb3IgQ3VycmVudCBIU1ZhQ29sb3Igb2JqZWN0LlxuICAgICAqL1xuICAgIGdldENvbG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sb3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGNvbG9yLlxuICAgICAqIEByZXR1cm5zIHt7YSwgdG9IU1ZBLCB0b0hFWEEsIHMsIHYsIGgsIGNsb25lLCB0b0NNWUssIHRvSFNMQSwgdG9SR0JBfX1cbiAgICAgKi9cbiAgICBnZXRTZWxlY3RlZENvbG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFzdENvbG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIFRoZSByb290IEhUTUxFbGVtZW50IHdpdGggYWxsIGhpcyBjb21wb25lbnRzLlxuICAgICAqL1xuICAgIGdldFJvb3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb290O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc2FibGUgcGlja3JcbiAgICAgKi9cbiAgICBkaXNhYmxlKCkge1xuICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgdGhpcy5vcHRpb25zLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fcm9vdC5idXR0b24uY2xhc3NMaXN0LmFkZCgnZGlzYWJsZWQnKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW5hYmxlIHBpY2tyXG4gICAgICovXG4gICAgZW5hYmxlKCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fcm9vdC5idXR0b24uY2xhc3NMaXN0LnJlbW92ZSgnZGlzYWJsZWQnKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufVxuIiwgImltcG9ydCB7IFBsdWdpbiB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHsgRXh0ZW5zaW9uIH0gZnJvbSBcIkBjb2RlbWlycm9yL3N0YXRlXCI7XG5cbmltcG9ydCB7IERFRkFVTFRfU0VUVElOR1MsIENvZGVibG9ja0N1c3RvbWl6ZXJTZXR0aW5ncyB9IGZyb20gJy4vU2V0dGluZ3MnO1xuaW1wb3J0IHsgY29kZWJsb2NrSGlnaGxpZ2h0IH0gZnJvbSBcIi4vQ29kZUJsb2NrSGlnaGxpZ2h0XCI7XG5pbXBvcnQgeyBjb2RlYmxvY2tIZWFkZXIsIGNvbGxhcHNlRmllbGQgfSBmcm9tIFwiLi9IZWFkZXJcIjtcbmltcG9ydCB7IFJlYWRpbmdWaWV3IH0gZnJvbSBcIi4vUmVhZGluZ1ZpZXdcIjtcbmltcG9ydCB7IFNldHRpbmdzVGFiIH0gZnJvbSBcIi4vU2V0dGluZ3NUYWJcIjtcbmltcG9ydCB7IGdldEN1cnJlbnRNb2RlLCBsb2FkSWNvbnMsIEJMT0JTLCB1cGRhdGVTZXR0aW5nU3R5bGVzIH0gZnJvbSBcIi4vVXRpbHNcIjtcblxuLy8gbnBtIGkgQHNpbW9ud2VwL3BpY2tyXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvZGVibG9ja0N1c3RvbWl6ZXJQbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xuICBzZXR0aW5nczogQ29kZWJsb2NrQ3VzdG9taXplclNldHRpbmdzO1xuICBleHRlbnNpb25zOiBFeHRlbnNpb25bXTtcbiAgXG4gIGFzeW5jIG9ubG9hZCgpIHtcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ2NvZGVibG9jay1jdXN0b21pemVyJyk7XG4gICAgYXdhaXQgdGhpcy5sb2FkU2V0dGluZ3MoKTtcbiAgICB0aGlzLmV4dGVuc2lvbnMgPSBbXTtcblxuICAgIC8vIGVzbGludCBtYWluLnRzXG4gICAgXG4gIC8qIFByb2JsZW1zIHRvIHNvbHZlOlxuICAgIC0gaWYgYSBsYW5ndWFnZSBpcyBleGNsdWRlZCB0aGVuOlxuICAgICAgLSBoZWFkZXIgbmVlZHMgdG8gdW5mb2xkIGJlZm9yZSByZW1vdmluZyBpdCxcbiAgKi9cblxuICAgIGxvYWRJY29ucygpO1xuXG4gICAgY29kZWJsb2NrSGVhZGVyLnNldHRpbmdzID0gdGhpcy5zZXR0aW5ncztcbiAgICB0aGlzLmV4dGVuc2lvbnMucHVzaChjb2RlYmxvY2tIZWFkZXIpO1xuICAgIFxuICAgIGNvbGxhcHNlRmllbGQucGx1Z2luU2V0dGluZ3MgPSB0aGlzLnNldHRpbmdzO1xuICAgIHRoaXMuZXh0ZW5zaW9ucy5wdXNoKGNvbGxhcHNlRmllbGQpO1xuXG4gICAgdGhpcy5leHRlbnNpb25zLnB1c2goY29kZWJsb2NrSGlnaGxpZ2h0KHRoaXMuc2V0dGluZ3MpKTtcblxuICAgIHRoaXMucmVnaXN0ZXJFZGl0b3JFeHRlbnNpb24odGhpcy5leHRlbnNpb25zKTtcbiAgICBcbiAgICBjb25zdCBzZXR0aW5nc1RhYiA9IG5ldyBTZXR0aW5nc1RhYih0aGlzLmFwcCwgdGhpcyk7XG4gICAgdGhpcy5hZGRTZXR0aW5nVGFiKHNldHRpbmdzVGFiKTtcbiAgICBcbiAgICB1cGRhdGVTZXR0aW5nU3R5bGVzKHRoaXMuc2V0dGluZ3MpO1xuICAgIFxuICAgIHRoaXMucmVnaXN0ZXJFdmVudCh0aGlzLmFwcC53b3Jrc3BhY2Uub24oJ2Nzcy1jaGFuZ2UnLCB0aGlzLmhhbmRsZUNzc0NoYW5nZS5iaW5kKHRoaXMsIHNldHRpbmdzVGFiKSwgdGhpcykpO1xuXG4gICAgLy8gcmVhZGluZyBtb2RlXG4gICAgdGhpcy5yZWdpc3Rlck1hcmtkb3duUG9zdFByb2Nlc3Nvcihhc3luYyAoZWwsIGN0eCkgPT4geyAgICBcbiAgICAgIGF3YWl0IFJlYWRpbmdWaWV3KGVsLCBjdHgsIHRoaXMpXG4gICAgfSlcblxuICAgIGNvbnNvbGUubG9nKFwibG9hZGluZyBDb2RlQmxvY2sgQ3VzdG9taXplciBwbHVnaW5cIik7XG4gIH0vLyBvbmxvYWRcbiAgXG4gIGhhbmRsZUNzc0NoYW5nZShzZXR0aW5nc1RhYikge1xuICAgIGNvbnNvbGUubG9nKCd1cGRhdGluZyBjc3MnKTtcbiAgfS8vIGhhbmRsZUNzc0NoYW5nZVxuICBcbiAgb251bmxvYWQoKSB7XG4gICAgY29uc29sZS5sb2coXCJ1bmxvYWRpbmcgQ29kZUJsb2NrIEN1c3RvbWl6ZXIgcGx1Z2luXCIpO1xuICAgIC8vIHVubG9hZCBpY29uc1xuICAgIGZvciAoY29uc3QgdXJsIG9mIE9iamVjdC52YWx1ZXMoQkxPQlMpKSB7XG4gICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybClcbiAgICB9XG5cdH1cbiAgXG5cdGFzeW5jIGxvYWRTZXR0aW5ncygpIHtcblx0XHR0aGlzLnNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9TRVRUSU5HUywgYXdhaXQgdGhpcy5sb2FkRGF0YSgpKTtcblx0fVxuXG5cdGFzeW5jIHNhdmVTZXR0aW5ncygpIHtcblx0XHRhd2FpdCB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xuICAgIHRoaXMuYXBwLndvcmtzcGFjZS51cGRhdGVPcHRpb25zKCk7XG4gICAgLy8gdXBkYXRlU2V0dGluZ1N0eWxlcyh0aGlzLnNldHRpbmdzKTtcblx0fVxufVxuIiwgIi8vIENvbG9yIFR5cGluZ1xuZXhwb3J0IHR5cGUgSEVYID0gYCMke3N0cmluZ31gO1xuLy8gZXhwb3J0IHR5cGUgUkdCID0gYHJnYigke251bWJlcn0sICR7bnVtYmVyfSwgJHtudW1iZXJ9KWA7XG4vLyBleHBvcnQgdHlwZSBSR0JBID0gYHJnYmEoJHtudW1iZXJ9LCR7bnVtYmVyfSwke251bWJlcn0sJHtudW1iZXJ9KWA7XG4vLyBleHBvcnQgdHlwZSBIU0wgPSBgaHNsKCR7bnVtYmVyfSwke251bWJlcn0lLCR7bnVtYmVyfSUpYDtcbi8vIGV4cG9ydCB0eXBlIEhTTEEgPSBgaHNsKCR7bnVtYmVyfSwke251bWJlcn0lLCR7bnVtYmVyfSUsJHtudW1iZXJ9KWA7XG5leHBvcnQgdHlwZSBDU1MgPSBgLS0ke3N0cmluZ31gO1xuZXhwb3J0IHR5cGUgQ29sb3IgPSBIRVggfCBDU1M7XG5leHBvcnQgdHlwZSBQZXJjZW50YWdlID0gYCR7bnVtYmVyfSVgO1xuZXhwb3J0IHR5cGUgRGlzcGxheSA9IFwibm9uZVwiIHwgXCJ0aXRsZV9vbmx5XCIgfCBcImFsd2F5c1wiO1xuXG4vLyBJbnRlcmZhY2UgQ3JlYXRpb25cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lTW9kZUNvbG9ycyB7XG4gIGNvZGVibG9jazoge1xuICAgIGJhY2tncm91bmRDb2xvcjogQ29sb3I7XG4gICAgdGV4dENvbG9yOiBDb2xvcjtcbiAgfSxcbiAgZ3V0dGVyOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiBDb2xvcjtcbiAgICB0ZXh0Q29sb3I6IENvbG9yO1xuICB9LFxuICBoZWFkZXI6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IENvbG9yO1xuICAgIHRpdGxlOiB7XG4gICAgICB0ZXh0Q29sb3I6IENvbG9yO1xuICAgIH0sXG4gICAgbGFuZ3VhZ2VUYWc6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogQ29sb3I7XG4gICAgICB0ZXh0Q29sb3I6IENvbG9yO1xuICAgIH0sXG4gICAgbGluZUNvbG9yOiBDb2xvcjtcbiAgfSxcbiAgaGlnaGxpZ2h0czoge1xuICAgIGFjdGl2ZUNvZGVibG9ja0xpbmVDb2xvcjogQ29sb3I7XG4gICAgYWN0aXZlRWRpdG9yTGluZUNvbG9yOiBDb2xvcjtcbiAgICBkZWZhdWx0Q29sb3I6IENvbG9yO1xuICAgIGFsdGVybmF0aXZlSGlnaGxpZ2h0czogUmVjb3JkPHN0cmluZyxDb2xvcj47XG4gIH0sXG59XG5leHBvcnQgaW50ZXJmYWNlIENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZVNldHRpbmdzIHtcbiAgY29kZWJsb2NrOiB7XG4gICAgbGluZU51bWJlcnM6IGJvb2xlYW47XG4gICAgY3VydmF0dXJlOiBudW1iZXI7XG4gIH0sXG4gIGd1dHRlcjoge1xuICAgIGhpZ2hsaWdodDogYm9vbGVhbjtcbiAgfSxcbiAgaGVhZGVyOiB7XG4gICAgdGl0bGU6IHtcbiAgICAgIHRleHRGb250OiBzdHJpbmc7XG4gICAgICB0ZXh0Qm9sZDogYm9vbGVhbjtcbiAgICAgIHRleHRJdGFsaWM6IGJvb2xlYW47XG4gICAgfSxcbiAgICBsYW5ndWFnZVRhZzoge1xuICAgICAgZGlzcGxheTogRGlzcGxheTtcbiAgICAgIHRleHRGb250OiBzdHJpbmc7XG4gICAgICB0ZXh0Qm9sZDogYm9vbGVhbjtcbiAgICAgIHRleHRJdGFsaWM6IGJvb2xlYW47XG4gICAgfSxcbiAgICBsYW5ndWFnZUljb246IHtcbiAgICAgIGRpc3BsYXk6IERpc3BsYXk7XG4gICAgICBkaXNwbGF5Q29sb3I6IGJvb2xlYW47XG4gICAgfSxcbiAgfSxcbiAgaGlnaGxpZ2h0czoge1xuICAgIGFjdGl2ZUNvZGVibG9ja0xpbmU6IGJvb2xlYW47XG4gICAgYWN0aXZlRWRpdG9yTGluZTogYm9vbGVhbjtcbiAgfSxcbiAgYWR2YW5jZWQ6IHtcbiAgICBncmFkaWVudEhpZ2hsaWdodHM6IGJvb2xlYW47XG4gICAgZ3JhZGllbnRIaWdobGlnaHRzQ29sb3JTdG9wOiBQZXJjZW50YWdlO1xuICAgIGxhbmd1YWdlQm9yZGVyQ29sb3I6IGJvb2xlYW47XG4gICAgaWNvblNpemU6IG51bWJlcjtcbiAgfTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzIHtcbiAgbGlnaHQ6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZU1vZGVDb2xvcnM7XG4gIGRhcms6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZU1vZGVDb2xvcnM7XG59XG5leHBvcnQgaW50ZXJmYWNlIENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZSB7XG4gIHNldHRpbmdzOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVTZXR0aW5ncztcbiAgY29sb3JzOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVDb2xvcnM7XG59XG5leHBvcnQgaW50ZXJmYWNlIENvZGVibG9ja0N1c3RvbWl6ZXJTZXR0aW5ncyB7XG4gIHRoZW1lczogUmVjb3JkPHN0cmluZyxDb2RlYmxvY2tDdXN0b21pemVyVGhlbWU+O1xuICBzZWxlY3RlZFRoZW1lOiBzdHJpbmc7XG4gIGRlZmF1bHRUaGVtZTogc3RyaW5nO1xuICBjdXJyZW50VGhlbWU6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZTtcbiAgbmV3VGhlbWU6IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGVmYXVsdDogYm9vbGVhbjtcbiAgfSxcbiAgbmV3SGlnaGxpZ2h0OiBzdHJpbmc7XG4gIGV4Y2x1ZGVkTGFuZ3M6IHN0cmluZztcbn1cblxuLy8gVGhlbWUgRGVmYXVsdHNcbmNvbnN0IFRIRU1FX0RFRkFVTFRfU0VUVElOR1M6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZVNldHRpbmdzID0ge1xuICBjb2RlYmxvY2s6IHtcbiAgICBsaW5lTnVtYmVyczogdHJ1ZSxcbiAgICBjdXJ2YXR1cmU6IDEwLFxuICB9LFxuICBndXR0ZXI6IHtcbiAgICBoaWdobGlnaHQ6IHRydWUsXG4gIH0sXG4gIGhlYWRlcjoge1xuICAgIHRpdGxlOiB7XG4gICAgICB0ZXh0Rm9udDogJycsXG4gICAgICB0ZXh0Qm9sZDogZmFsc2UsXG4gICAgICB0ZXh0SXRhbGljOiBmYWxzZSxcbiAgICB9LFxuICAgIGxhbmd1YWdlVGFnOiB7XG4gICAgICBkaXNwbGF5OiBcImFsd2F5c1wiLFxuICAgICAgdGV4dEZvbnQ6ICcnLFxuICAgICAgdGV4dEJvbGQ6IHRydWUsXG4gICAgICB0ZXh0SXRhbGljOiB0cnVlLFxuICAgIH0sXG4gICAgbGFuZ3VhZ2VJY29uOiB7XG4gICAgICBkaXNwbGF5OiBcImFsd2F5c1wiLFxuICAgICAgZGlzcGxheUNvbG9yOiB0cnVlLFxuICAgIH0sXG4gIH0sXG4gIGhpZ2hsaWdodHM6IHtcbiAgICBhY3RpdmVDb2RlYmxvY2tMaW5lOiB0cnVlLFxuICAgIGFjdGl2ZUVkaXRvckxpbmU6IGZhbHNlLFxuICB9LFxuICBhZHZhbmNlZDoge1xuICAgIGdyYWRpZW50SGlnaGxpZ2h0czogZmFsc2UsXG4gICAgZ3JhZGllbnRIaWdobGlnaHRzQ29sb3JTdG9wOiAnNzAlJyxcbiAgICBsYW5ndWFnZUJvcmRlckNvbG9yOiBmYWxzZSxcbiAgICBpY29uU2l6ZTogMjgsXG4gIH0sXG59XG5leHBvcnQgY29uc3QgTkVXX1RIRU1FX0RFRkFVTFQ6IHtuYW1lOiBzdHJpbmcsIGRlZmF1bHQ6IGJvb2xlYW59ID0ge1xuICBuYW1lOiAnJyxcbiAgZGVmYXVsdDogZmFsc2UsXG59XG5leHBvcnQgY29uc3QgVEhFTUVfRkFMTEJBQ0tfQ09MT1JTOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVNb2RlQ29sb3JzID0ge1xuICBjb2RlYmxvY2s6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICctLWNvZGUtYmFja2dyb3VuZCcsXG4gICAgdGV4dENvbG9yOiAnLS1jb2RlLW5vcm1hbCcsXG4gIH0sXG4gIGd1dHRlcjoge1xuICAgIGJhY2tncm91bmRDb2xvcjogJy0tY29kZS1iYWNrZ3JvdW5kJyxcbiAgICB0ZXh0Q29sb3I6ICctLWNvZGUtY29tbWVudCcsXG4gIH0sXG4gIGhlYWRlcjoge1xuICAgIGJhY2tncm91bmRDb2xvcjogJy0tY29kZS1iYWNrZ3JvdW5kJyxcbiAgICB0aXRsZToge1xuICAgICAgdGV4dENvbG9yOiAnLS1jb2RlLWNvbW1lbnQnLFxuICAgIH0sXG4gICAgbGFuZ3VhZ2VUYWc6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJy0tY29kZS1iYWNrZ3JvdW5kJyxcbiAgICAgIHRleHRDb2xvcjogJy0tY29kZS1jb21tZW50JyxcbiAgICB9LFxuICAgIGxpbmVDb2xvcjogJy0tY29kZS1iYWNrZ3JvdW5kJyxcbiAgfSxcbiAgaGlnaGxpZ2h0czoge1xuICAgIGFjdGl2ZUNvZGVibG9ja0xpbmVDb2xvcjogJy0tY29sb3ItYmFzZS0zMCcsXG4gICAgYWN0aXZlRWRpdG9yTGluZUNvbG9yOiAnLS1jb2xvci1iYXNlLTIwJyxcbiAgICBkZWZhdWx0Q29sb3I6ICctLXRleHQtaGlnaGxpZ2h0LWJnJyxcbiAgICBhbHRlcm5hdGl2ZUhpZ2hsaWdodHM6IHt9LFxuICB9LFxufVxuXG4vLyBUaGVtZSBDcmVhdGlvblxuY29uc3QgREVGQVVMVF9USEVNRTogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lID0ge1xuICBzZXR0aW5nczogVEhFTUVfREVGQVVMVF9TRVRUSU5HUyxcbiAgY29sb3JzOiB7XG4gICAgbGlnaHQ6IFRIRU1FX0ZBTExCQUNLX0NPTE9SUyxcbiAgICBkYXJrOiBUSEVNRV9GQUxMQkFDS19DT0xPUlMsXG4gIH0sXG59XG5jb25zdCBTT0xBUklaRURfVEhFTUU6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZSA9IHtcbiAgc2V0dGluZ3M6IFRIRU1FX0RFRkFVTFRfU0VUVElOR1MsXG4gIGNvbG9yczoge1xuICAgIGxpZ2h0OiB7XG4gICAgICBjb2RlYmxvY2s6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnI0ZDRjZFNCcsXG4gICAgICAgIHRleHRDb2xvcjogJyNiYWJhYmEnLFxuICAgICAgfSxcbiAgICAgIGd1dHRlcjoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjRURFOEQ2JyxcbiAgICAgICAgdGV4dENvbG9yOiAnIzZjNmM2YycsXG4gICAgICB9LFxuICAgICAgaGVhZGVyOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJyNENUNDQjQnLFxuICAgICAgICB0aXRsZToge1xuICAgICAgICAgIHRleHRDb2xvcjogJyM4NjY3MDQnLFxuICAgICAgICB9LFxuICAgICAgICBsYW5ndWFnZVRhZzoge1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyNCOEI1QUEnLFxuICAgICAgICAgIHRleHRDb2xvcjogJyNDMjVGMzAnLFxuICAgICAgICB9LFxuICAgICAgICBsaW5lQ29sb3I6ICcjRURENDg5JyxcbiAgICAgIH0sXG4gICAgICBoaWdobGlnaHRzOiB7XG4gICAgICAgIGFjdGl2ZUNvZGVibG9ja0xpbmVDb2xvcjogJyNFREU4RDYnLFxuICAgICAgICBhY3RpdmVFZGl0b3JMaW5lQ29sb3I6ICcjNjA0NjA2MzMnLFxuICAgICAgICBkZWZhdWx0Q29sb3I6ICcjRTlERkJBJyxcbiAgICAgICAgYWx0ZXJuYXRpdmVIaWdobGlnaHRzOiB7fSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkYXJrOiB7XG4gICAgICBjb2RlYmxvY2s6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzAwMmIzNicsXG4gICAgICAgIHRleHRDb2xvcjogJyNiYWJhYmEnLFxuICAgICAgfSxcbiAgICAgIGd1dHRlcjoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjMDczNjQyJyxcbiAgICAgICAgdGV4dENvbG9yOiAnIzZjNmM2YycsXG4gICAgICB9LFxuICAgICAgaGVhZGVyOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJyMwYTQ1NTQnLFxuICAgICAgICB0aXRsZToge1xuICAgICAgICAgIHRleHRDb2xvcjogJyNkYWRhZGEnLFxuICAgICAgICB9LFxuICAgICAgICBsYW5ndWFnZVRhZzoge1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyMwMDgwODAnLFxuICAgICAgICAgIHRleHRDb2xvcjogJyMwMDAwMDAnLFxuICAgICAgICB9LFxuICAgICAgICBsaW5lQ29sb3I6ICcjNDZjY2VkJyxcbiAgICAgIH0sXG4gICAgICBoaWdobGlnaHRzOiB7XG4gICAgICAgIGFjdGl2ZUNvZGVibG9ja0xpbmVDb2xvcjogJyMwNzM2NDInLFxuICAgICAgICBhY3RpdmVFZGl0b3JMaW5lQ29sb3I6ICcjNDY4ZWViMzMnLFxuICAgICAgICBkZWZhdWx0Q29sb3I6ICcjMDU0YjVjJyxcbiAgICAgICAgYWx0ZXJuYXRpdmVIaWdobGlnaHRzOiB7fSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbn1cblxuLy8gUGx1Z2luIGRlZmF1bHQgc2V0dGluZ3NcbmV4cG9ydCBjb25zdCBERUZBVUxUX1NFVFRJTkdTOiBDb2RlYmxvY2tDdXN0b21pemVyU2V0dGluZ3MgPSB7XG4gIHRoZW1lczoge1xuICAgICdEZWZhdWx0JzogREVGQVVMVF9USEVNRSxcbiAgICAnU29sYXJpemVkJzogU09MQVJJWkVEX1RIRU1FLFxuICB9LFxuICBzZWxlY3RlZFRoZW1lOiAnRGVmYXVsdCcsXG4gIGRlZmF1bHRUaGVtZTogJ0RlZmF1bHQnLFxuICBjdXJyZW50VGhlbWU6IHN0cnVjdHVyZWRDbG9uZShERUZBVUxUX1RIRU1FKSxcbiAgbmV3VGhlbWU6IE5FV19USEVNRV9ERUZBVUxULFxuICBuZXdIaWdobGlnaHQ6ICcnLFxuICBleGNsdWRlZExhbmdzOiBcImRhdGF2aWV3LCBkYXRhdmlld2pzLCBhZC0qXCIsXG59XG4iLCAiaW1wb3J0IHsgVmlld1BsdWdpbiwgRGVjb3JhdGlvbiwgV2lkZ2V0VHlwZSB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5pbXBvcnQgeyBSYW5nZVNldCB9IGZyb20gXCJAY29kZW1pcnJvci9zdGF0ZVwiO1xuaW1wb3J0IHsgc3ludGF4VHJlZSB9IGZyb20gXCJAY29kZW1pcnJvci9sYW5ndWFnZVwiO1xuXG5pbXBvcnQgeyBzcGxpdEFuZFRyaW1TdHJpbmcsIHNlYXJjaFN0cmluZywgZ2V0SGlnaGxpZ2h0ZWRMaW5lcywgZ2V0TGFuZ3VhZ2VJY29uLCBnZXRMYW5ndWFnZU5hbWUsIGlzRXhjbHVkZWQgfSBmcm9tIFwiLi9VdGlsc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY29kZWJsb2NrSGlnaGxpZ2h0KHNldHRpbmdzOiBDb2RlYmxvY2tDdXN0b21pemVyU2V0dGluZ3MpIHtcbiAgY29uc3Qgdmlld1BsdWdpbiA9IFZpZXdQbHVnaW4uZnJvbUNsYXNzKFxuICAgIGNsYXNzIENvZGVibG9ja0hpZ2hsaWdodFBsdWdpbiB7XG4gICAgICBkZWNvcmF0aW9uczogRGVjb3JhdGlvblNldDtcbiAgICAgIHNldHRpbmdzOiBDb2RlYmxvY2tDdXN0b21pemVyU2V0dGluZ3M7XG4gICAgICBwcmV2QWx0ZXJuYXRlQ29sb3JzOiBDb2xvclNldHRpbmdzW107XG4gICAgICB2aWV3OiBFZGl0b3JWaWV3O1xuICAgICAgbXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcbiAgICAgIHByZXZCR0NvbG9yOiBzdHJpbmc7XG4gICAgICBwcmV2SExDb2xvcjogc3RyaW5nO1xuICAgICAgcHJldkV4Y2x1ZGVMYW5nczogc3RyaW5nO1xuICAgICAgcHJldlRleHRDb2xvcjogc3RyaW5nO1xuICAgICAgcHJldkJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuICAgICAgcHJldkhpZ2hsaWdodEd1dHRlcjogYm9vbGVhbjtcbiAgICAgIHByZXZMaW5lTnVtYmVyczogYm9vbGVhbjtcblxuICAgICAgY29uc3RydWN0b3IodmlldzogRWRpdG9yVmlldykge1xuICAgICAgICB0aGlzLmluaXRpYWxpemUodmlldywgc2V0dGluZ3MpO1xuICAgICAgfVxuXG4gICAgICBpbml0aWFsaXplKHZpZXc6IEVkaXRvclZpZXcsIHNldHRpbmdzOiBDb2RlYmxvY2tDdXN0b21pemVyU2V0dGluZ3MpIHtcbiAgICAgICAgdGhpcy52aWV3ID0gdmlldztcbiAgICAgICAgdGhpcy5zZXR0aW5ncyA9IHNldHRpbmdzO1xuICAgICAgICB0aGlzLmRlY29yYXRpb25zID0gdGhpcy5idWlsZERlY29yYXRpb25zKHZpZXcpO1xuICAgICAgICB0aGlzLnByZXZBbHRlcm5hdGVDb2xvcnMgPSBbXTtcbiAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyID0gc2V0dXBNdXRhdGlvbk9ic2VydmVyKHZpZXcsIHRoaXMpO1xuICAgICAgICB0aGlzLnByZXZCR0NvbG9yID0gJyc7XG4gICAgICAgIHRoaXMucHJldkhMQ29sb3IgPSAnJztcbiAgICAgICAgdGhpcy5wcmV2RXhjbHVkZUxhbmdzID0gJyc7XG4gICAgICAgIHRoaXMucHJldlRleHRDb2xvciA9ICcnO1xuICAgICAgICB0aGlzLnByZXZCYWNrZ3JvdW5kQ29sb3IgPSAnJztcbiAgICAgICAgdGhpcy5wcmV2SGlnaGxpZ2h0R3V0dGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMucHJldkxpbmVOdW1iZXJzID0gZmFsc2U7XG4gICAgICB9Ly8gaW5pdGlhbGl6ZVxuXG4gICAgICBmb3JjZVVwZGF0ZShlZGl0b3JWaWV3OiBFZGl0b3JWaWV3KSB7XG4gICAgICAgIHRoaXMudmlldyA9IGVkaXRvclZpZXc7XG4gICAgICAgIHRoaXMuZGVjb3JhdGlvbnMgPSB0aGlzLmJ1aWxkRGVjb3JhdGlvbnModGhpcy52aWV3KTtcbiAgICAgICAgdGhpcy52aWV3LnJlcXVlc3RNZWFzdXJlKCk7XG4gICAgICB9Ly8gZm9yY2VVcGRhdGVcblxuICAgICAgc2hvdWxkVXBkYXRlKHVwZGF0ZTogVmlld1VwZGF0ZSkge1xuICAgICAgICByZXR1cm4gKHVwZGF0ZS5kb2NDaGFuZ2VkIHx8IHVwZGF0ZS52aWV3cG9ydENoYW5nZWQgfHwgIXRoaXMuY29tcGFyZVNldHRpbmdzKCkpO1xuICAgICAgfS8vIHNob3VsZFVwZGF0ZVxuXG4gICAgICBjb21wYXJlU2V0dGluZ3MoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgdGhpcy5zZXR0aW5ncy5iYWNrZ3JvdW5kQ29sb3IgPT09IHRoaXMucHJldkJHQ29sb3IgJiZcbiAgICAgICAgICB0aGlzLnNldHRpbmdzLmhpZ2hsaWdodENvbG9yID09PSB0aGlzLnByZXZITENvbG9yICYmXG4gICAgICAgICAgdGhpcy5zZXR0aW5ncy5FeGNsdWRlTGFuZ3MgPT09IHRoaXMucHJldkV4Y2x1ZGVMYW5ncyAmJlxuICAgICAgICAgIGNvbXBhcmVBcnJheXModGhpcy5zZXR0aW5ncy5hbHRlcm5hdGVDb2xvcnMsIHRoaXMucHJldkFsdGVybmF0ZUNvbG9ycykgJiZcbiAgICAgICAgICB0aGlzLnNldHRpbmdzLmd1dHRlclRleHRDb2xvciA9PT0gdGhpcy5wcmV2VGV4dENvbG9yICYmXG4gICAgICAgICAgdGhpcy5zZXR0aW5ncy5ndXR0ZXJCYWNrZ3JvdW5kQ29sb3IgPT09IHRoaXMucHJldkJhY2tncm91bmRDb2xvciAmJlxuICAgICAgICAgIHRoaXMuc2V0dGluZ3MuYkd1dHRlckhpZ2hsaWdodCA9PT0gdGhpcy5wcmV2SGlnaGxpZ2h0R3V0dGVyICYmXG4gICAgICAgICAgdGhpcy5zZXR0aW5ncy5iRW5hYmxlTGluZU51bWJlcnMgPT09IHRoaXMucHJldkxpbmVOdW1iZXJzXG4gICAgICAgICk7XG4gICAgICB9Ly8gY29tcGFyZVNldHRpbmdzXG4gICAgICBcbiAgICAgIHVwZGF0ZVNldHRpbmdzKCkge1xuICAgICAgICB0aGlzLnByZXZCR0NvbG9yID0gdGhpcy5zZXR0aW5ncy5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICAgIHRoaXMucHJldkhMQ29sb3IgPSB0aGlzLnNldHRpbmdzLmhpZ2hsaWdodENvbG9yO1xuICAgICAgICB0aGlzLnByZXZFeGNsdWRlTGFuZ3MgPSB0aGlzLnNldHRpbmdzLkV4Y2x1ZGVMYW5ncztcbiAgICAgICAgdGhpcy5wcmV2QWx0ZXJuYXRlQ29sb3JzID0gdGhpcy5zZXR0aW5ncy5hbHRlcm5hdGVDb2xvcnMubWFwKCh7bmFtZX0pID0+IHtcbiAgICAgICAgICByZXR1cm4ge25hbWV9O1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5wcmV2VGV4dENvbG9yID0gdGhpcy5zZXR0aW5ncy5ndXR0ZXJUZXh0Q29sb3I7XG4gICAgICAgIHRoaXMucHJldkJhY2tncm91bmRDb2xvciA9IHRoaXMuc2V0dGluZ3MuZ3V0dGVyQmFja2dyb3VuZENvbG9yO1xuICAgICAgICB0aGlzLnByZXZIaWdobGlnaHRHdXR0ZXIgPSB0aGlzLnNldHRpbmdzLmJHdXR0ZXJIaWdobGlnaHQ7XG4gICAgICAgIHRoaXMucHJldkxpbmVOdW1iZXJzID0gdGhpcy5zZXR0aW5ncy5iRW5hYmxlTGluZU51bWJlcnM7XG4gICAgICB9Ly8gdXBkYXRlU2V0dGluZ3NcblxuICAgICAgdXBkYXRlKHVwZGF0ZTogVmlld1VwZGF0ZSkge1xuICAgICAgICBpZiAodGhpcy5zaG91bGRVcGRhdGUodXBkYXRlKSkge1xuICAgICAgICAgIHRoaXMudXBkYXRlU2V0dGluZ3MoKTtcbiAgICAgICAgICB0aGlzLmRlY29yYXRpb25zID0gdGhpcy5idWlsZERlY29yYXRpb25zKHVwZGF0ZS52aWV3KTtcbiAgICAgICAgfVxuICAgICAgfS8vIHVwZGF0ZVxuXG4gICAgICBkZXN0cm95KCkge1xuICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgfS8vIGRlc3Ryb3lcblxuICAgICAgZmlsdGVyVmlzaWJsZUNvZGVibG9ja3ModmlldzogRWRpdG9yVmlldywgY29kZWJsb2NrczogQ29kZWJsb2NrW10pOiBDb2RlYmxvY2tbXSB7XG4gICAgICAgIHJldHVybiBjb2RlYmxvY2tzLmZpbHRlcigoY29kZWJsb2NrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHZpZXcudmlzaWJsZVJhbmdlcy5zb21lKCh2aXNpYmxlUmFuZ2UpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoY29kZWJsb2NrLmZyb20gPCB2aXNpYmxlUmFuZ2UudG8gJiYgY29kZWJsb2NrLnRvID4gdmlzaWJsZVJhbmdlLmZyb20pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0vLyBmaWx0ZXJWaXNpYmxlQ29kZWJsb2Nrc1xuXG4gICAgICBkZWR1cGxpY2F0ZUNvZGVibG9ja3MoY29kZWJsb2NrczogQ29kZWJsb2NrW10pOiBDb2RlYmxvY2tbXSB7XG4gICAgICAgIGNvbnN0IGRlZHVwbGljYXRlZENvZGVibG9ja3MgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2RlYmxvY2tzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKGkgPT09IDAgfHwgY29kZWJsb2Nrc1tpXS5mcm9tICE9PSBjb2RlYmxvY2tzW2kgLSAxXS5mcm9tKSB7XG4gICAgICAgICAgICBkZWR1cGxpY2F0ZWRDb2RlYmxvY2tzLnB1c2goY29kZWJsb2Nrc1tpXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZWRDb2RlYmxvY2tzO1xuICAgICAgfS8vIGRlZHVwbGljYXRlQ29kZWJsb2Nrc1xuICBcbiAgICAgIGJ1aWxkRGVjb3JhdGlvbnModmlldzogRWRpdG9yVmlldyk6IERlY29yYXRpb25TZXQge1xuICAgICAgICBsZXQgbGluZU51bWJlciA9IDA7XG4gICAgICAgIGxldCBITCA9IFtdO1xuICAgICAgICBsZXQgYWx0SEwgPSBbXTtcbiAgICAgICAgbGV0IGxpbmVOdW1iZXJPZmZzZXQgPSAwO1xuICAgICAgICBsZXQgc2hvd051bWJlcnMgPSB0cnVlO1xuICAgICAgICAvLyBjb25zdCBFeGNsdWRlID0gdGhpcy5zZXR0aW5ncy5FeGNsdWRlTGFuZ3M7XG4gICAgICAgIC8vIGNvbnN0IEV4Y2x1ZGVMYW5ncyA9IHNwbGl0QW5kVHJpbVN0cmluZyhFeGNsdWRlKTtcbiAgICAgICAgbGV0IGJFeGNsdWRlID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGFsdGVybmF0ZUNvbG9ycyA9IHRoaXMuc2V0dGluZ3MuYWx0ZXJuYXRlQ29sb3JzIHx8IFtdO1xuICAgICAgICBjb25zdCBkZWNvcmF0aW9ucyA9IFtdO1xuXG4gICAgICAgIGlmICghdmlldy52aXNpYmxlUmFuZ2VzIHx8IHZpZXcudmlzaWJsZVJhbmdlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gUmFuZ2VTZXQuZW1wdHk7XG4gICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgLy8gRmluZCBhbGwgY29kZSBibG9ja3MgaW4gdGhlIGRvY3VtZW50XG4gICAgICAgIGNvbnN0IGNvZGVibG9ja3MgPSBmaW5kQ29kZWJsb2Nrcyh2aWV3LnN0YXRlLCB2aWV3LnN0YXRlLmRvYy5mcm9tLCB2aWV3LnN0YXRlLmRvYy50byk7XG4gICAgICAgIC8vIEZpbmQgY29kZSBibG9ja3MgdGhhdCBpbnRlcnNlY3Qgd2l0aCB0aGUgdmlzaWJsZSByYW5nZVxuICAgICAgICBjb25zdCB2aXNpYmxlQ29kZWJsb2NrcyA9IHRoaXMuZmlsdGVyVmlzaWJsZUNvZGVibG9ja3ModmlldywgY29kZWJsb2Nrcyk7XG4gICAgICAgIC8vIHJlbW92ZSBkdXBsaWNhdGVzXG4gICAgICAgIGNvbnN0IGRlZHVwbGljYXRlZENvZGVibG9ja3MgPSB0aGlzLmRlZHVwbGljYXRlQ29kZWJsb2Nrcyh2aXNpYmxlQ29kZWJsb2Nrcyk7XG5cbiAgICAgICAgZm9yIChjb25zdCBjb2RlYmxvY2sgb2YgZGVkdXBsaWNhdGVkQ29kZWJsb2Nrcykge1xuICAgICAgICAgIHN5bnRheFRyZWUodmlldy5zdGF0ZSkuaXRlcmF0ZSh7IGZyb206IGNvZGVibG9jay5mcm9tLCB0bzogY29kZWJsb2NrLnRvLFxuICAgICAgICAgICAgZW50ZXIobm9kZSkge1xuICAgICAgICAgICAgICBjb25zdCBsaW5lID0gdmlldy5zdGF0ZS5kb2MubGluZUF0KG5vZGUuZnJvbSk7XG4gICAgICAgICAgICAgIGNvbnN0IGxpbmVUZXh0ID0gdmlldy5zdGF0ZS5zbGljZURvYyhsaW5lLmZyb20sIGxpbmUudG8pO1xuICAgICAgICAgICAgICBjb25zdCBsYW5nID0gc2VhcmNoU3RyaW5nKGxpbmVUZXh0LCBcImBgYFwiKTtcbiAgICAgICAgICAgICAgY29uc3Qgc3RhcnRMaW5lID0gbm9kZS50eXBlLm5hbWUuaW5jbHVkZXMoXCJIeXBlck1ELWNvZGVibG9jay1iZWdpblwiKVxuICAgICAgICAgICAgICBjb25zdCBlbmRMaW5lID0gbm9kZS50eXBlLm5hbWUuaW5jbHVkZXMoXCJIeXBlck1ELWNvZGVibG9jay1lbmRcIilcbiAgICAgICAgICAgICAgaWYgKGxhbmcpIHtcbiAgICAgICAgICAgICAgICBiRXhjbHVkZSA9IGlzRXhjbHVkZWQobGluZVRleHQsIHNldHRpbmdzLkV4Y2x1ZGVMYW5ncyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGJFeGNsdWRlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVuZExpbmUpIHtcbiAgICAgICAgICAgICAgICAgIGJFeGNsdWRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoc3RhcnRMaW5lKSB7XG4gICAgICAgICAgICAgICAgbGluZU51bWJlciA9IDA7XG4gICAgICAgICAgICAgICAgbGluZU51bWJlck9mZnNldCA9IDA7IC8vc2VhcmNoU3RyaW5nKGNvZGVCbG9ja0ZpcnN0TGluZSwgXCJsbjpcIikvL1RPRE8gKEBtYXl1cmFua3YpIFNldCBsaW5lIG51bWJlciBvZmZzZXQgaGVyZSAtIFNob3VsZCBiZSBsbl92YWx1ZSAtIDEgc2luY2UgaXQgaXMgb2Zmc2V0LCBub3Qgc3RhcnRpbmcgbGluZSBudW1iZXIgLSAwIGlmIHRydWUgT1IgZmFsc2VcbiAgICAgICAgICAgICAgICBzaG93TnVtYmVycyA9IHRydWU7IC8vVE9ETyAoQG1heXVyYW5rdikgU2V0IHNob3dOdW1iZXJzIHRvIGJlIHRydWUgaWYgbG46PG51bWJlcj4gb3IgbG46dHJ1ZSBvciBmYWxzZSBpZiBsbjpmYWxzZVxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHNlYXJjaFN0cmluZyhsaW5lVGV4dCwgXCJITDpcIik7XG4gICAgICAgICAgICAgICAgSEwgPSBnZXRIaWdobGlnaHRlZExpbmVzKHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgYWx0SEwgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHsgbmFtZSB9IG9mIGFsdGVybmF0ZUNvbG9ycykge1xuICAgICAgICAgICAgICAgICAgY29uc3QgYWx0UGFyYW1zID0gc2VhcmNoU3RyaW5nKGxpbmVUZXh0LCBgJHtuYW1lfTpgKTtcbiAgICAgICAgICAgICAgICAgIGFsdEhMID0gYWx0SEwuY29uY2F0KGdldEhpZ2hsaWdodGVkTGluZXMoYWx0UGFyYW1zKS5tYXAoKGxpbmVOdW1iZXIpID0+ICh7IG5hbWUsIGxpbmVOdW1iZXIgfSkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgbGV0IGxpbmVDbGFzcyA9ICdjb2RlYmxvY2stY3VzdG9taXplci1saW5lJztcbiAgICAgICAgICAgICAgaWYgKEhMLmluY2x1ZGVzKGxpbmVOdW1iZXIpKSB7XG4gICAgICAgICAgICAgICAgbGluZUNsYXNzID0gJ2NvZGVibG9jay1jdXN0b21pemVyLWxpbmUtaGlnaGxpZ2h0ZWQnO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFsdEhMTWF0Y2ggPSBhbHRITC5maWx0ZXIoKGhsKSA9PiBobC5saW5lTnVtYmVyID09PSBsaW5lTnVtYmVyKTtcbiAgICAgICAgICAgICAgICBpZiAoYWx0SExNYXRjaC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICBsaW5lQ2xhc3MgPSBgY29kZWJsb2NrLWN1c3RvbWl6ZXItbGluZS1oaWdobGlnaHRlZC0ke2FsdEhMTWF0Y2hbMF0ubmFtZS5yZXBsYWNlKC9cXHMrL2csICctJykudG9Mb3dlckNhc2UoKX1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChub2RlLnR5cGUubmFtZSA9PT0gXCJIeXBlck1ELWNvZGVibG9ja19IeXBlck1ELWNvZGVibG9jay1iZ1wiIHx8IHN0YXJ0TGluZSB8fCBlbmRMaW5lKSB7XG4gICAgICAgICAgICAgICAgZGVjb3JhdGlvbnMucHVzaChEZWNvcmF0aW9uLmxpbmUoe2F0dHJpYnV0ZXM6IHtjbGFzczogbGluZUNsYXNzfX0pLnJhbmdlKG5vZGUuZnJvbSkpO1xuXG4gICAgICAgICAgICAgICAgZGVjb3JhdGlvbnMucHVzaChEZWNvcmF0aW9uLmxpbmUoe30pLnJhbmdlKG5vZGUuZnJvbSkpO1xuICAgICAgICAgICAgICAgIGRlY29yYXRpb25zLnB1c2goRGVjb3JhdGlvbi53aWRnZXQoeyB3aWRnZXQ6IG5ldyBMaW5lTnVtYmVyV2lkZ2V0KChzdGFydExpbmUgfHwgZW5kTGluZSkgPyBcIiBcIiA6IGxpbmVOdW1iZXIrbGluZU51bWJlck9mZnNldCxzaG93TnVtYmVycyksfSkucmFuZ2Uobm9kZS5mcm9tKSk7XG4gICAgICAgICAgICAgICAgbGluZU51bWJlcisrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBSYW5nZVNldC5vZihkZWNvcmF0aW9ucywgdHJ1ZSk7XG4gICAgICB9XG4gICAgfSwvLyBDb2RlYmxvY2tIaWdobGlnaHRQbHVnaW5cbiAgICB7XG4gICAgICBkZWNvcmF0aW9uczogKHZhbHVlKSA9PiB2YWx1ZS5kZWNvcmF0aW9ucyxcbiAgICB9XG4gICk7XG5cbiAgdmlld1BsdWdpbi5uYW1lID0gJ2NvZGVibG9ja0hpZ2hsaWdodCc7XG4gIHJldHVybiB2aWV3UGx1Z2luO1xufS8vIGNvZGVibG9ja0hpZ2hsaWdodFxuXG5mdW5jdGlvbiBjb21wYXJlQXJyYXlzKGFycmF5MSwgYXJyYXkyKSB7XG4gIFxuICBpZiAoYXJyYXkxLmxlbmd0aCAhPT0gYXJyYXkyLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5MS5sZW5ndGg7IGkrKykge1xuICAgIGlmICgoYXJyYXkxW2ldLm5hbWUgIT09IGFycmF5MltpXS5uYW1lKSB8fCAoYXJyYXkxW2ldLmN1cnJlbnRDb2xvciAhPT0gYXJyYXkyW2ldLmN1cnJlbnRDb2xvcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59Ly8gY29tcGFyZUFycmF5c1xuXG5jbGFzcyBMaW5lTnVtYmVyV2lkZ2V0IGV4dGVuZHMgV2lkZ2V0VHlwZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbGluZU51bWJlcjogbnVtYmVyLCBwcml2YXRlIHNob3dOdW1iZXJzOiBib29sZWFuKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGVxKG90aGVyOiBMaW5lTnVtYmVyV2lkZ2V0KSB7XG4gICAgcmV0dXJuIHRoaXMubGluZU51bWJlciA9PT0gb3RoZXIubGluZU51bWJlciAmJiB0aGlzLnNob3dOdW1iZXJzID09PSBvdGhlci5zaG93TnVtYmVycztcbiAgfVxuXG4gIHRvRE9NKHZpZXc6IEVkaXRvclZpZXcpOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG4gICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoYGNvZGVibG9jay1jdXN0b21pemVyLWxpbmUtbnVtYmVyJHt0aGlzLnNob3dOdW1iZXJzPycnOictaGlkZSd9YCk7XG4gICAgY29udGFpbmVyLmlubmVyVGV4dCA9IGAke3RoaXMubGluZU51bWJlcn1gO1xuXG4gICAgcmV0dXJuIGNvbnRhaW5lcjtcbiAgfVxufS8vIExpbmVOdW1iZXJXaWRnZXRcblxuZnVuY3Rpb24gZmluZENvZGVibG9ja3MoZG9jOiBUZXh0LCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpOiBTeW50YXhOb2RlW10ge1xuICBjb25zdCB0cmVlID0gc3ludGF4VHJlZShkb2MpO1xuICBjb25zdCBjb2RlYmxvY2tzOiBTeW50YXhOb2RlW10gPSBbXTtcblxuICB0cmVlLml0ZXJhdGUoeyBmcm9tLCB0byxcbiAgICBlbnRlcjogKG5vZGUpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgbm9kZS50eXBlLm5hbWUuaW5jbHVkZXMoXCJIeXBlck1ELWNvZGVibG9jay1iZWdpblwiKSB8fFxuICAgICAgICBub2RlLnR5cGUubmFtZSA9PT0gXCJIeXBlck1ELWNvZGVibG9ja19IeXBlck1ELWNvZGVibG9jay1iZ1wiIHx8XG4gICAgICAgIG5vZGUudHlwZS5uYW1lLmluY2x1ZGVzKFwiSHlwZXJNRC1jb2RlYmxvY2stZW5kXCIpXG4gICAgICApIHtcbiAgICAgICAgY29kZWJsb2Nrcy5wdXNoKG5vZGUpO1xuICAgICAgfVxuICAgIH0sXG4gIH0pO1xuXG4gIHJldHVybiBjb2RlYmxvY2tzO1xufS8vIGZpbmRDb2RlYmxvY2tzXG5cbmZ1bmN0aW9uIHNldHVwTXV0YXRpb25PYnNlcnZlcihlZGl0b3JWaWV3OiBFZGl0b3JWaWV3LCBwbHVnaW5JbnN0YW5jZTogYW55KSB7IC8vVE9ETyAoQG1heXVyYW5rdikgV2hhdCBkb2VzIHRoaXMgZG8/IFdvcmsgb3V0XG4gIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xuICAgIGZvciAoY29uc3QgbXV0YXRpb24gb2YgbXV0YXRpb25zKSB7XG4gICAgICBpZiAoXG4gICAgICAgIG11dGF0aW9uLnR5cGUgPT09IFwiYXR0cmlidXRlc1wiICYmXG4gICAgICAgIG11dGF0aW9uLmF0dHJpYnV0ZU5hbWUgPT09IFwiY2xhc3NcIiAmJlxuICAgICAgICAobXV0YXRpb24udGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcIkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luXCIpIHx8XG4gICAgICAgICAgbXV0YXRpb24udGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcIkh5cGVyTUQtY29kZWJsb2NrX0h5cGVyTUQtY29kZWJsb2NrLWJnXCIpIHx8XG4gICAgICAgICAgbXV0YXRpb24udGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhcIkh5cGVyTUQtY29kZWJsb2NrLWVuZFwiKSlcbiAgICAgICkge1xuICAgICAgICBwbHVnaW5JbnN0YW5jZS5mb3JjZVVwZGF0ZShlZGl0b3JWaWV3KTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIG9ic2VydmVyLm9ic2VydmUoZWRpdG9yVmlldy5kb20sIHtcbiAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICBzdWJ0cmVlOiB0cnVlLFxuICAgIGF0dHJpYnV0ZUZpbHRlcjogWydjbGFzcyddLCAvLyBPbmx5IG9ic2VydmUgY2hhbmdlcyB0byB0aGUgJ2NsYXNzJyBhdHRyaWJ1dGVcbiAgfSk7XG5cbiAgcmV0dXJuIG9ic2VydmVyO1xufSAvLyBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIiLCAiLy8gUHJpc20gTGFuZ3VhZ2VzXG4vLyBodHRwczovL3ByaXNtanMuY29tL3BsdWdpbnMvc2hvdy1sYW5ndWFnZS9cblxuZXhwb3J0IGNvbnN0IExhbmd1YWdlcyA9IHtcbiAgXCJub25lXCI6IFwiUGxhaW4gdGV4dFwiLFxuICBcInBsYWluXCI6IFwiUGxhaW4gdGV4dFwiLFxuICBcInBsYWludGV4dFwiOiBcIlBsYWluIHRleHRcIixcbiAgXCJ0ZXh0XCI6IFwiUGxhaW4gdGV4dFwiLFxuICBcInR4dFwiOiBcIlBsYWluIHRleHRcIixcbiAgXCJodG1sXCI6IFwiSFRNTFwiLFxuICBcInhtbFwiOiBcIlhNTFwiLFxuICBcInN2Z1wiOiBcIlNWR1wiLFxuICBcIm1hdGhtbFwiOiBcIk1hdGhNTFwiLFxuICBcInNzbWxcIjogXCJTU01MXCIsXG4gIFwicnNzXCI6IFwiUlNTXCIsXG4gIFwiY3NzXCI6IFwiQ1NTXCIsXG4gIFwiY2xpa2VcIjogXCJDLWxpa2VcIixcbiAgXCJqc1wiOiBcIkphdmFTY3JpcHRcIixcbiAgXCJhYmFwXCI6IFwiQUJBUFwiLFxuICBcImFibmZcIjogXCJBQk5GXCIsXG4gIFwiYWxcIjogXCJBTFwiLFxuICBcImFudGxyNFwiOiBcIkFOVExSNFwiLFxuICBcImc0XCI6IFwiQU5UTFI0XCIsXG4gIFwiYXBhY2hlY29uZlwiOiBcIkFwYWNoZSBDb25maWd1cmF0aW9uXCIsXG4gIFwiYXBsXCI6IFwiQVBMXCIsXG4gIFwiYXFsXCI6IFwiQVFMXCIsXG4gIFwiaW5vXCI6IFwiQXJkdWlub1wiLFxuICBcImFyZmZcIjogXCJBUkZGXCIsXG4gIFwiYXJtYXNtXCI6IFwiQVJNIEFzc2VtYmx5XCIsXG4gIFwiYXJtLWFzbVwiOiBcIkFSTSBBc3NlbWJseVwiLFxuICBcImFydFwiOiBcIkFydHVyb1wiLFxuICBcImFzY2lpZG9jXCI6IFwiQXNjaWlEb2NcIixcbiAgXCJhZG9jXCI6IFwiQXNjaWlEb2NcIixcbiAgXCJhc3BuZXRcIjogXCJBU1AuTkVUIChDIylcIixcbiAgXCJhc202NTAyXCI6IFwiNjUwMiBBc3NlbWJseVwiLFxuICBcImFzbWF0bWVsXCI6IFwiQXRtZWwgQVZSIEFzc2VtYmx5XCIsXG4gIFwiYXV0b2hvdGtleVwiOiBcIkF1dG9Ib3RrZXlcIixcbiAgXCJhdXRvaXRcIjogXCJBdXRvSXRcIixcbiAgXCJhdmlzeW50aFwiOiBcIkF2aVN5bnRoXCIsXG4gIFwiYXZzXCI6IFwiQXZpU3ludGhcIixcbiAgXCJhdnJvLWlkbFwiOiBcIkF2cm8gSURMXCIsXG4gIFwiYXZkbFwiOiBcIkF2cm8gSURMXCIsXG4gIFwiYXdrXCI6IFwiQVdLXCIsXG4gIFwiZ2F3a1wiOiBcIkdBV0tcIixcbiAgXCJzaFwiOiBcIlNoZWxsXCIsXG4gIFwiYmFzaWNcIjogXCJCQVNJQ1wiLFxuICBcImJiY29kZVwiOiBcIkJCY29kZVwiLFxuICBcImJialwiOiBcIkJCalwiLFxuICBcImJuZlwiOiBcIkJORlwiLFxuICBcInJibmZcIjogXCJSQk5GXCIsXG4gIFwiYnFuXCI6IFwiQlFOXCIsXG4gIFwiYnNsXCI6IFwiQlNMICgxQzpFbnRlcnByaXNlKVwiLFxuICBcIm9zY3JpcHRcIjogXCJPbmVTY3JpcHRcIixcbiAgXCJjc2hhcnBcIjogXCJDI1wiLFxuICBcImNzXCI6IFwiQyNcIixcbiAgXCJkb3RuZXRcIjogXCJDI1wiLFxuICBcImNwcFwiOiBcIkMrK1wiLFxuICBcImNmc2NyaXB0XCI6IFwiQ0ZTY3JpcHRcIixcbiAgXCJjZmNcIjogXCJDRlNjcmlwdFwiLFxuICBcImNpbFwiOiBcIkNJTFwiLFxuICBcImNpbGtjXCI6IFwiQ2lsay9DXCIsXG4gIFwiY2lsay1jXCI6IFwiQ2lsay9DXCIsXG4gIFwiY2lsa2NwcFwiOiBcIkNpbGsvQysrXCIsXG4gIFwiY2lsay1jcHBcIjogXCJDaWxrL0MrK1wiLFxuICBcImNpbGtcIjogXCJDaWxrL0MrK1wiLFxuICBcImNtYWtlXCI6IFwiQ01ha2VcIixcbiAgXCJjb2JvbFwiOiBcIkNPQk9MXCIsXG4gIFwiY29mZmVlXCI6IFwiQ29mZmVlU2NyaXB0XCIsXG4gIFwiY29uY1wiOiBcIkNvbmN1cm5hc1wiLFxuICBcImNzcFwiOiBcIkNvbnRlbnQtU2VjdXJpdHktUG9saWN5XCIsXG4gIFwiY3NzLWV4dHJhc1wiOiBcIkNTUyBFeHRyYXNcIixcbiAgXCJjc3ZcIjogXCJDU1ZcIixcbiAgXCJjdWVcIjogXCJDVUVcIixcbiAgXCJkYXRhd2VhdmVcIjogXCJEYXRhV2VhdmVcIixcbiAgXCJkYXhcIjogXCJEQVhcIixcbiAgXCJkamFuZ29cIjogXCJEamFuZ28vSmluamEyXCIsXG4gIFwiamluamEyXCI6IFwiRGphbmdvL0ppbmphMlwiLFxuICBcImRucy16b25lLWZpbGVcIjogXCJETlMgem9uZSBmaWxlXCIsXG4gIFwiZG5zLXpvbmVcIjogXCJETlMgem9uZSBmaWxlXCIsXG4gIFwiZG9ja2VyZmlsZVwiOiBcIkRvY2tlclwiLFxuICBcImRvdFwiOiBcIkRPVCAoR3JhcGh2aXopXCIsXG4gIFwiZ3ZcIjogXCJET1QgKEdyYXBodml6KVwiLFxuICBcImVibmZcIjogXCJFQk5GXCIsXG4gIFwiZWRpdG9yY29uZmlnXCI6IFwiRWRpdG9yQ29uZmlnXCIsXG4gIFwiZWpzXCI6IFwiRUpTXCIsXG4gIFwiZXRsdWFcIjogXCJFbWJlZGRlZCBMdWEgdGVtcGxhdGluZ1wiLFxuICBcImVyYlwiOiBcIkVSQlwiLFxuICBcImV4Y2VsLWZvcm11bGFcIjogXCJFeGNlbCBGb3JtdWxhXCIsXG4gIFwieGxzeFwiOiBcIkV4Y2VsIEZvcm11bGFcIixcbiAgXCJ4bHNcIjogXCJFeGNlbCBGb3JtdWxhXCIsXG4gIFwiZnNoYXJwXCI6IFwiRiNcIixcbiAgXCJmaXJlc3RvcmUtc2VjdXJpdHktcnVsZXNcIjogXCJGaXJlc3RvcmUgc2VjdXJpdHkgcnVsZXNcIixcbiAgXCJmdGxcIjogXCJGcmVlTWFya2VyIFRlbXBsYXRlIExhbmd1YWdlXCIsXG4gIFwiZ21sXCI6IFwiR2FtZU1ha2VyIExhbmd1YWdlXCIsXG4gIFwiZ2FtZW1ha2VybGFuZ3VhZ2VcIjogXCJHYW1lTWFrZXIgTGFuZ3VhZ2VcIixcbiAgXCJnYXBcIjogXCJHQVAgKENBUylcIixcbiAgXCJnY29kZVwiOiBcIkctY29kZVwiLFxuICBcImdkc2NyaXB0XCI6IFwiR0RTY3JpcHRcIixcbiAgXCJnZWRjb21cIjogXCJHRURDT01cIixcbiAgXCJnZXR0ZXh0XCI6IFwiZ2V0dGV4dFwiLFxuICBcInBvXCI6IFwiZ2V0dGV4dFwiLFxuICBcImdsc2xcIjogXCJHTFNMXCIsXG4gIFwiZ25cIjogXCJHTlwiLFxuICBcImduaVwiOiBcIkdOXCIsXG4gIFwibGlua2VyLXNjcmlwdFwiOiBcIkdOVSBMaW5rZXIgU2NyaXB0XCIsXG4gIFwibGRcIjogXCJHTlUgTGlua2VyIFNjcmlwdFwiLFxuICBcImdvLW1vZHVsZVwiOiBcIkdvIG1vZHVsZVwiLFxuICBcImdvLW1vZFwiOiBcIkdvIG1vZHVsZVwiLFxuICBcImdyYXBocWxcIjogXCJHcmFwaFFMXCIsXG4gIFwiaGJzXCI6IFwiSGFuZGxlYmFyc1wiLFxuICBcImhzXCI6IFwiSGFza2VsbFwiLFxuICBcImhjbFwiOiBcIkhDTFwiLFxuICBcImhsc2xcIjogXCJITFNMXCIsXG4gIFwiaHR0cFwiOiBcIkhUVFBcIixcbiAgXCJocGtwXCI6IFwiSFRUUCBQdWJsaWMtS2V5LVBpbnNcIixcbiAgXCJoc3RzXCI6IFwiSFRUUCBTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5XCIsXG4gIFwiaWNoaWdvamFtXCI6IFwiSWNoaWdvSmFtXCIsXG4gIFwiaWN1LW1lc3NhZ2UtZm9ybWF0XCI6IFwiSUNVIE1lc3NhZ2UgRm9ybWF0XCIsXG4gIFwiaWRyXCI6IFwiSWRyaXNcIixcbiAgXCJpZ25vcmVcIjogXCIuaWdub3JlXCIsXG4gIFwiZ2l0aWdub3JlXCI6IFwiLmdpdGlnbm9yZVwiLFxuICBcImhnaWdub3JlXCI6IFwiLmhnaWdub3JlXCIsXG4gIFwibnBtaWdub3JlXCI6IFwiLm5wbWlnbm9yZVwiLFxuICBcImluZm9ybTdcIjogXCJJbmZvcm0gN1wiLFxuICBcImphdmFkb2NcIjogXCJKYXZhRG9jXCIsXG4gIFwiamF2YWRvY2xpa2VcIjogXCJKYXZhRG9jLWxpa2VcIixcbiAgXCJqYXZhc3RhY2t0cmFjZVwiOiBcIkphdmEgc3RhY2sgdHJhY2VcIixcbiAgXCJqcVwiOiBcIkpRXCIsXG4gIFwianNkb2NcIjogXCJKU0RvY1wiLFxuICBcImpzLWV4dHJhc1wiOiBcIkpTIEV4dHJhc1wiLFxuICBcImpzb25cIjogXCJKU09OXCIsXG4gIFwid2VibWFuaWZlc3RcIjogXCJXZWIgQXBwIE1hbmlmZXN0XCIsXG4gIFwianNvbjVcIjogXCJKU09ONVwiLFxuICBcImpzb25wXCI6IFwiSlNPTlBcIixcbiAgXCJqc3N0YWNrdHJhY2VcIjogXCJKUyBzdGFjayB0cmFjZVwiLFxuICBcImpzLXRlbXBsYXRlc1wiOiBcIkpTIFRlbXBsYXRlc1wiLFxuICBcImtlZXBhbGl2ZWRcIjogXCJLZWVwYWxpdmVkIENvbmZpZ3VyZVwiLFxuICBcImt0c1wiOiBcIktvdGxpbiBTY3JpcHRcIixcbiAgXCJrdFwiOiBcIktvdGxpblwiLFxuICBcImt1bWlyXCI6IFwiS3VNaXIgKFx1MDQxQVx1MDQ0M1x1MDQxQ1x1MDQzOFx1MDQ0MClcIixcbiAgXCJrdW1cIjogXCJLdU1pciAoXHUwNDFBXHUwNDQzXHUwNDFDXHUwNDM4XHUwNDQwKVwiLFxuICBcImxhdGV4XCI6IFwiTGFUZVhcIixcbiAgXCJ0ZXhcIjogXCJUZVhcIixcbiAgXCJjb250ZXh0XCI6IFwiQ29uVGVYdFwiLFxuICBcImxpbHlwb25kXCI6IFwiTGlseVBvbmRcIixcbiAgXCJseVwiOiBcIkxpbHlQb25kXCIsXG4gIFwiZW1hY3NcIjogXCJMaXNwXCIsXG4gIFwiZWxpc3BcIjogXCJMaXNwXCIsXG4gIFwiZW1hY3MtbGlzcFwiOiBcIkxpc3BcIixcbiAgXCJsbHZtXCI6IFwiTExWTSBJUlwiLFxuICBcImxvZ1wiOiBcIkxvZyBmaWxlXCIsXG4gIFwibG9sY29kZVwiOiBcIkxPTENPREVcIixcbiAgXCJtYWdtYVwiOiBcIk1hZ21hIChDQVMpXCIsXG4gIFwibWRcIjogXCJNYXJrZG93blwiLFxuICBcIm1hcmt1cC10ZW1wbGF0aW5nXCI6IFwiTWFya3VwIHRlbXBsYXRpbmdcIixcbiAgXCJtYXRsYWJcIjogXCJNQVRMQUJcIixcbiAgXCJtYXhzY3JpcHRcIjogXCJNQVhTY3JpcHRcIixcbiAgXCJtZWxcIjogXCJNRUxcIixcbiAgXCJtZXRhZm9udFwiOiBcIk1FVEFGT05UXCIsXG4gIFwibW9uZ29kYlwiOiBcIk1vbmdvREJcIixcbiAgXCJtb29uXCI6IFwiTW9vblNjcmlwdFwiLFxuICBcIm4xcWxcIjogXCJOMVFMXCIsXG4gIFwibjRqc1wiOiBcIk40SlNcIixcbiAgXCJuNGpzZFwiOiBcIk40SlNcIixcbiAgXCJuYW5kMnRldHJpcy1oZGxcIjogXCJOYW5kIFRvIFRldHJpcyBIRExcIixcbiAgXCJuYW5pc2NyaXB0XCI6IFwiTmFuaW5vdmVsIFNjcmlwdFwiLFxuICBcIm5hbmlcIjogXCJOYW5pbm92ZWwgU2NyaXB0XCIsXG4gIFwibmFzbVwiOiBcIk5BU01cIixcbiAgXCJuZW9uXCI6IFwiTkVPTlwiLFxuICBcIm5naW54XCI6IFwibmdpbnhcIixcbiAgXCJuc2lzXCI6IFwiTlNJU1wiLFxuICBcIm9iamVjdGl2ZWNcIjogXCJPYmplY3RpdmUtQ1wiLFxuICBcIm9iamNcIjogXCJPYmplY3RpdmUtQ1wiLFxuICBcIm9jYW1sXCI6IFwiT0NhbWxcIixcbiAgXCJvcGVuY2xcIjogXCJPcGVuQ0xcIixcbiAgXCJvcGVucWFzbVwiOiBcIk9wZW5RYXNtXCIsXG4gIFwicWFzbVwiOiBcIk9wZW5RYXNtXCIsXG4gIFwicGFyaWdwXCI6IFwiUEFSSS9HUFwiLFxuICBcIm9iamVjdHBhc2NhbFwiOiBcIk9iamVjdCBQYXNjYWxcIixcbiAgXCJwc2xcIjogXCJQQVRST0wgU2NyaXB0aW5nIExhbmd1YWdlXCIsXG4gIFwicGNheGlzXCI6IFwiUEMtQXhpc1wiLFxuICBcInB4XCI6IFwiUEMtQXhpc1wiLFxuICBcInBlb3BsZWNvZGVcIjogXCJQZW9wbGVDb2RlXCIsXG4gIFwicGNvZGVcIjogXCJQZW9wbGVDb2RlXCIsXG4gIFwicGhwXCI6IFwiUEhQXCIsXG4gIFwicGhwZG9jXCI6IFwiUEhQRG9jXCIsXG4gIFwicGhwLWV4dHJhc1wiOiBcIlBIUCBFeHRyYXNcIixcbiAgXCJwbGFudC11bWxcIjogXCJQbGFudFVNTFwiLFxuICBcInBsYW50dW1sXCI6IFwiUGxhbnRVTUxcIixcbiAgXCJwbHNxbFwiOiBcIlBML1NRTFwiLFxuICBcInBvd2VycXVlcnlcIjogXCJQb3dlclF1ZXJ5XCIsXG4gIFwicHFcIjogXCJQb3dlclF1ZXJ5XCIsXG4gIFwibXNjcmlwdFwiOiBcIlBvd2VyUXVlcnlcIixcbiAgXCJwb3dlcnNoZWxsXCI6IFwiUG93ZXJTaGVsbFwiLFxuICBcInByb21xbFwiOiBcIlByb21RTFwiLFxuICBcInByb3BlcnRpZXNcIjogXCIucHJvcGVydGllc1wiLFxuICBcInByb3RvYnVmXCI6IFwiUHJvdG9jb2wgQnVmZmVyc1wiLFxuICBcInB1cmViYXNpY1wiOiBcIlB1cmVCYXNpY1wiLFxuICBcInBiZmFzbVwiOiBcIlB1cmVCYXNpY1wiLFxuICBcInB1cnNcIjogXCJQdXJlU2NyaXB0XCIsXG4gIFwicHlcIjogXCJQeXRob25cIixcbiAgXCJxc2hhcnBcIjogXCJRI1wiLFxuICBcInFzXCI6IFwiUSNcIixcbiAgXCJxXCI6IFwiUSAoa2RiKyBkYXRhYmFzZSlcIixcbiAgXCJxbWxcIjogXCJRTUxcIixcbiAgXCJya3RcIjogXCJSYWNrZXRcIixcbiAgXCJjc2h0bWxcIjogXCJSYXpvciBDI1wiLFxuICBcInJhem9yXCI6IFwiUmF6b3IgQyNcIixcbiAgXCJqc3hcIjogXCJSZWFjdCBKU1hcIixcbiAgXCJ0c3hcIjogXCJSZWFjdCBUU1hcIixcbiAgXCJyZW5weVwiOiBcIlJlbidweVwiLFxuICBcInJweVwiOiBcIlJlbidweVwiLFxuICBcInJlc1wiOiBcIlJlU2NyaXB0XCIsXG4gIFwicmVzdFwiOiBcInJlU1QgKHJlU3RydWN0dXJlZFRleHQpXCIsXG4gIFwicm9ib3RmcmFtZXdvcmtcIjogXCJSb2JvdCBGcmFtZXdvcmtcIixcbiAgXCJyb2JvdFwiOiBcIlJvYm90IEZyYW1ld29ya1wiLFxuICBcInJiXCI6IFwiUnVieVwiLFxuICBcInNhc1wiOiBcIlNBU1wiLFxuICBcInNhc3NcIjogXCJTYXNzIChTYXNzKVwiLFxuICBcInNjc3NcIjogXCJTYXNzIChTQ1NTKVwiLFxuICBcInNoZWxsLXNlc3Npb25cIjogXCJTaGVsbCBzZXNzaW9uXCIsXG4gIFwic2gtc2Vzc2lvblwiOiBcIlNoZWxsIHNlc3Npb25cIixcbiAgXCJzaGVsbHNlc3Npb25cIjogXCJTaGVsbCBzZXNzaW9uXCIsXG4gIFwic21sXCI6IFwiU01MXCIsXG4gIFwic21sbmpcIjogXCJTTUwvTkpcIixcbiAgXCJzb2xpZGl0eVwiOiBcIlNvbGlkaXR5IChFdGhlcmV1bSlcIixcbiAgXCJzb2xcIjogXCJTb2xpZGl0eSAoRXRoZXJldW0pXCIsXG4gIFwic29sdXRpb24tZmlsZVwiOiBcIlNvbHV0aW9uIGZpbGVcIixcbiAgXCJzbG5cIjogXCJTb2x1dGlvbiBmaWxlXCIsXG4gIFwic295XCI6IFwiU295IChDbG9zdXJlIFRlbXBsYXRlKVwiLFxuICBcInNwYXJxbFwiOiBcIlNQQVJRTFwiLFxuICBcInJxXCI6IFwiU1BBUlFMXCIsXG4gIFwic3BsdW5rLXNwbFwiOiBcIlNwbHVuayBTUExcIixcbiAgXCJzcWZcIjogXCJTUUY6IFN0YXR1cyBRdW8gRnVuY3Rpb24gKEFybWEgMylcIixcbiAgXCJzcWxcIjogXCJTUUxcIixcbiAgXCJzdGF0YVwiOiBcIlN0YXRhIEFkb1wiLFxuICBcImllY3N0XCI6IFwiU3RydWN0dXJlZCBUZXh0IChJRUMgNjExMzEtMylcIixcbiAgXCJzdXBlcmNvbGxpZGVyXCI6IFwiU3VwZXJDb2xsaWRlclwiLFxuICBcInNjbGFuZ1wiOiBcIlN1cGVyQ29sbGlkZXJcIixcbiAgXCJzeXN0ZW1kXCI6IFwiU3lzdGVtZCBjb25maWd1cmF0aW9uIGZpbGVcIixcbiAgXCJ0NC10ZW1wbGF0aW5nXCI6IFwiVDQgdGVtcGxhdGluZ1wiLFxuICBcInQ0LWNzXCI6IFwiVDQgVGV4dCBUZW1wbGF0ZXMgKEMjKVwiLFxuICBcInQ0XCI6IFwiVDQgVGV4dCBUZW1wbGF0ZXMgKEMjKVwiLFxuICBcInQ0LXZiXCI6IFwiVDQgVGV4dCBUZW1wbGF0ZXMgKFZCKVwiLFxuICBcInRhcFwiOiBcIlRBUFwiLFxuICBcInR0MlwiOiBcIlRlbXBsYXRlIFRvb2xraXQgMlwiLFxuICBcInRvbWxcIjogXCJUT01MXCIsXG4gIFwidHJpY2tsZVwiOiBcInRyaWNrbGVcIixcbiAgXCJ0cm95XCI6IFwidHJveVwiLFxuICBcInRyaWdcIjogXCJUcmlHXCIsXG4gIFwidHNcIjogXCJUeXBlU2NyaXB0XCIsXG4gIFwidHNjb25maWdcIjogXCJUU0NvbmZpZ1wiLFxuICBcInVzY3JpcHRcIjogXCJVbnJlYWxTY3JpcHRcIixcbiAgXCJ1Y1wiOiBcIlVucmVhbFNjcmlwdFwiLFxuICBcInVvcmF6b3JcIjogXCJVTyBSYXpvciBTY3JpcHRcIixcbiAgXCJ1cmlcIjogXCJVUklcIixcbiAgXCJ1cmxcIjogXCJVUkxcIixcbiAgXCJ2Ym5ldFwiOiBcIlZCLk5ldFwiLFxuICBcInZoZGxcIjogXCJWSERMXCIsXG4gIFwidmltXCI6IFwidmltXCIsXG4gIFwidmlzdWFsLWJhc2ljXCI6IFwiVmlzdWFsIEJhc2ljXCIsXG4gIFwidmJhXCI6IFwiVkJBXCIsXG4gIFwidmJcIjogXCJWaXN1YWwgQmFzaWNcIixcbiAgXCJ3YXNtXCI6IFwiV2ViQXNzZW1ibHlcIixcbiAgXCJ3ZWItaWRsXCI6IFwiV2ViIElETFwiLFxuICBcIndlYmlkbFwiOiBcIldlYiBJRExcIixcbiAgXCJ3Z3NsXCI6IFwiV0dTTFwiLFxuICBcIndpa2lcIjogXCJXaWtpIG1hcmt1cFwiLFxuICBcIndvbGZyYW1cIjogXCJXb2xmcmFtIGxhbmd1YWdlXCIsXG4gIFwibmJcIjogXCJNYXRoZW1hdGljYSBOb3RlYm9va1wiLFxuICBcIndsXCI6IFwiV29sZnJhbSBsYW5ndWFnZVwiLFxuICBcInhlb3JhY3ViZVwiOiBcIlhlb3JhQ3ViZVwiLFxuICBcInhtbC1kb2NcIjogXCJYTUwgZG9jICgubmV0KVwiLFxuICBcInhvam9cIjogXCJYb2pvIChSRUFMYmFzaWMpXCIsXG4gIFwieHF1ZXJ5XCI6IFwiWFF1ZXJ5XCIsXG4gIFwieWFtbFwiOiBcIllBTUxcIixcbiAgXCJ5bWxcIjogXCJZQU1MXCIsXG4gIFwieWFuZ1wiOiBcIllBTkdcIixcbn07IFxuICBcbi8vIG1hbnVhbGx5IGdlbmVyYXRlZCBsaXN0IGZyb20gaHR0cHM6Ly9wcmlzbWpzLmNvbS8gIC0gIDI5NyBsYW5ndWFnZXNcbmV4cG9ydCBjb25zdCBtYW51YWxMYW5nID0ge1xuICBcImNzc1wiOlwiQ1NTXCIsXG4gIFwiY2xpa2VcIjpcIkMtbGlrZVwiLFxuICBcImphdmFzY3JpcHRcIjpcIkphdmFTY3JpcHRcIixcbiAgXCJqc1wiOlwiSmF2YVNjcmlwdFwiLFxuICBcImFiYXBcIjpcIkFCQVBcIixcbiAgXCJhYm5mXCI6XCJBQk5GXCIsXG4gIFwiYWN0aW9uc2NyaXB0XCI6XCJBY3Rpb25TY3JpcHRcIixcbiAgXCJhZGFcIjpcIkFkYVwiLFxuICBcImFnZGFcIjpcIkFnZGFcIixcbiAgXCJhbFwiOlwiQUxcIixcbiAgXCJhbnRscjRcIjpcIkFOVExSNFwiLFxuICBcImc0XCI6XCJBTlRMUjRcIixcbiAgXCJhcGFjaGVjb25mXCI6XCJBcGFjaGUgQ29uZmlndXJhdGlvblwiLFxuICBcImFwZXhcIjpcIkFwZXhcIixcbiAgXCJhcGxcIjpcIkFQTFwiLFxuICBcImFwcGxlc2NyaXB0XCI6XCJBcHBsZVNjcmlwdFwiLFxuICBcImFxbFwiOlwiQVFMXCIsXG4gIFwiYXJkdWlub1wiOlwiQXJkdWlub1wiLFxuICBcImlub1wiOlwiQXJkdWlub1wiLFxuICBcImFyZmZcIjpcIkFSRkZcIixcbiAgXCJhcm1hc21cIjpcIkFSTSBBc3NlbWJseVwiLFxuICBcImFybS1hc21cIjpcIkFSTSBBc3NlbWJseVwiLFxuICBcImFydHVyb1wiOlwiQXJ0dXJvXCIsXG4gIFwiYXJ0XCI6XCJBcnR1cm9cIixcbiAgXCJhc2NpaWRvY1wiOlwiQXNjaWlEb2NcIixcbiAgXCJhZG9jXCI6XCJBc2NpaURvY1wiLFxuICBcImFzcG5ldFwiOlwiQVNQLk5FVCAoQyMpXCIsXG4gIFwiYXNtNjUwMlwiOlwiNjUwMiBBc3NlbWJseVwiLFxuICBcImFzbWF0bWVsXCI6XCJBdG1lbCBBVlIgQXNzZW1ibHlcIixcbiAgXCJhdXRvaG90a2V5XCI6XCJBdXRvSG90a2V5XCIsXG4gIFwiYXV0b2l0XCI6XCJBdXRvSXRcIixcbiAgXCJhdmlzeW50aFwiOlwiQXZpU3ludGhcIixcbiAgXCJhdnNcIjpcIkF2aVN5bnRoXCIsXG4gIFwiYXZyby1pZGxcIjpcIkF2cm8gSURMXCIsXG4gIFwiYXZkbFwiOlwiQXZybyBJRExcIixcbiAgXCJhd2tcIjpcIkFXS1wiLFxuICBcImdhd2tcIjpcIkdBV0tcIixcbiAgXCJiYXNoXCI6XCJTaGVsbFwiLFxuICBcInNoXCI6XCJTaGVsbFwiLFxuICBcInNoZWxsXCI6XCJTaGVsbFwiLFxuICBcImJhc2ljXCI6XCJCQVNJQ1wiLFxuICBcImJhdGNoXCI6XCJCYXRjaFwiLFxuICBcImJiY29kZVwiOlwiQkJjb2RlXCIsXG4gIFwic2hvcnRjb2RlXCI6XCJCQmNvZGVcIixcbiAgXCJiYmpcIjpcIkJCalwiLFxuICBcImJpcmJcIjpcIkJpcmJcIixcbiAgXCJiaXNvblwiOlwiQmlzb25cIixcbiAgXCJibmZcIjpcIkJORlwiLFxuICBcInJibmZcIjpcIkJORlwiLFxuICBcImJxblwiOlwiQlFOXCIsXG4gIFwiYnJhaW5mdWNrXCI6XCJCcmFpbmZ1Y2tcIixcbiAgXCJicmlnaHRzY3JpcHRcIjpcIkJyaWdodFNjcmlwdFwiLFxuICBcImJyb1wiOlwiQnJvXCIsXG4gIFwiYnNsXCI6XCJCU0wgKDFDKVwiLFxuICBcIm9zY3JpcHRcIjpcIkJTTCAoMUMpXCIsXG4gIFwiY1wiOlwiQ1wiLFxuICBcImNzaGFycFwiOlwiQyNcIixcbiAgXCJjc1wiOlwiQyNcIixcbiAgXCJkb3RuZXRcIjpcIkMjXCIsXG4gIFwiY3BwXCI6XCJDKytcIixcbiAgXCJjZnNjcmlwdFwiOlwiQ0ZTY3JpcHRcIixcbiAgXCJjZmNcIjpcIkNGU2NyaXB0XCIsXG4gIFwiY2hhaXNjcmlwdFwiOlwiQ2hhaVNjcmlwdFwiLFxuICBcImNpbFwiOlwiQ0lMXCIsXG4gIFwiY2lsa2NcIjpcIkNpbGsvQ1wiLFxuICBcImNpbGstY1wiOlwiQ2lsay9DXCIsXG4gIFwiY2lsa2NwcFwiOlwiQ2lsay9DKytcIixcbiAgXCJjaWxrLWNwcFwiOlwiQ2lsay9DKytcIixcbiAgXCJjaWxrXCI6XCJDaWxrL0MrK1wiLFxuICBcImNsb2p1cmVcIjpcIkNsb2p1cmVcIixcbiAgXCJjbWFrZVwiOlwiQ01ha2VcIixcbiAgXCJjb2JvbFwiOlwiQ09CT0xcIixcbiAgXCJjb2ZmZWVzY3JpcHRcIjpcIkNvZmZlZVNjcmlwdFwiLFxuICBcImNvZmZlZVwiOlwiQ29mZmVlU2NyaXB0XCIsXG4gIFwiY29uY3VybmFzXCI6XCJDb25jdXJuYXNcIixcbiAgXCJjb25jXCI6XCJDb25jdXJuYXNcIixcbiAgXCJjc3BcIjpcIkNvbnRlbnQtU2VjdXJpdHktUG9saWN5XCIsXG4gIFwiY29va2xhbmdcIjpcIkNvb2tsYW5nXCIsXG4gIFwiY29xXCI6XCJDb3FcIixcbiAgXCJjcnlzdGFsXCI6XCJDcnlzdGFsXCIsXG4gIFwiY3NzLWV4dHJhc1wiOlwiQ1NTIEV4dHJhc1wiLFxuICBcImNzdlwiOlwiQ1NWXCIsXG4gIFwiY3VlXCI6XCJDVUVcIixcbiAgXCJjeXBoZXJcIjpcIkN5cGhlclwiLFxuICBcImRcIjpcIkRcIixcbiAgXCJkYXJ0XCI6XCJEYXJ0XCIsXG4gIFwiZGF0YXdlYXZlXCI6XCJEYXRhV2VhdmVcIixcbiAgXCJkYXhcIjpcIkRBWFwiLFxuICBcImRoYWxsXCI6XCJEaGFsbFwiLFxuICBcImRpZmZcIjpcIkRpZmZcIixcbiAgXCJkamFuZ29cIjpcIkRqYW5nby9KaW5qYTJcIixcbiAgXCJqaW5qYTJcIjpcIkRqYW5nby9KaW5qYTJcIixcbiAgXCJkbnMtem9uZS1maWxlXCI6XCJETlMgem9uZSBmaWxlXCIsXG4gIFwiZG5zLXpvbmVcIjpcIkROUyB6b25lIGZpbGVcIixcbiAgXCJkb2NrZXJcIjpcIkRvY2tlclwiLFxuICBcImRvY2tlcmZpbGVcIjpcIkRvY2tlclwiLFxuICBcImRvdFwiOlwiRE9UIChHcmFwaHZpeilcIixcbiAgXCJndlwiOlwiRE9UIChHcmFwaHZpeilcIixcbiAgXCJlYm5mXCI6XCJFQk5GXCIsXG4gIFwiZWRpdG9yY29uZmlnXCI6XCJFZGl0b3JDb25maWdcIixcbiAgXCJlaWZmZWxcIjpcIkVpZmZlbFwiLFxuICBcImVqc1wiOlwiRUpTXCIsXG4gIFwiZXRhXCI6XCJFSlNcIixcbiAgXCJlbGl4aXJcIjpcIkVsaXhpclwiLFxuICBcImVsbVwiOlwiRWxtXCIsXG4gIFwiZXRsdWFcIjpcIkVtYmVkZGVkIEx1YSB0ZW1wbGF0aW5nXCIsXG4gIFwiZXJiXCI6XCJFUkJcIixcbiAgXCJlcmxhbmdcIjpcIkVybGFuZ1wiLFxuICBcImV4Y2VsLWZvcm11bGFcIjpcIkV4Y2VsIEZvcm11bGFcIixcbiAgXCJ4bHN4XCI6XCJFeGNlbCBGb3JtdWxhXCIsXG4gIFwieGxzXCI6XCJFeGNlbCBGb3JtdWxhXCIsXG4gIFwiZnNoYXJwXCI6XCJGI1wiLFxuICBcImZhY3RvclwiOlwiRmFjdG9yXCIsXG4gIFwiZmFsc2VcIjpcIkZhbHNlXCIsXG4gIFwiZmlyZXN0b3JlLXNlY3VyaXR5LXJ1bGVzXCI6XCJGaXJlc3RvcmUgc2VjdXJpdHkgcnVsZXNcIixcbiAgXCJmbG93XCI6XCJGbG93XCIsXG4gIFwiZm9ydHJhblwiOlwiRm9ydHJhblwiLFxuICBcImZ0bFwiOlwiRnJlZU1hcmtlciBUZW1wbGF0ZSBMYW5ndWFnZVwiLFxuICBcImdtbFwiOlwiR2FtZU1ha2VyIExhbmd1YWdlXCIsXG4gIFwiZ2FtZW1ha2VybGFuZ3VhZ2VcIjpcIkdhbWVNYWtlciBMYW5ndWFnZVwiLFxuICBcImdhcFwiOlwiR0FQIChDQVMpXCIsXG4gIFwiZ2NvZGVcIjpcIkctY29kZVwiLFxuICBcImdkc2NyaXB0XCI6XCJHRFNjcmlwdFwiLFxuICBcImdlZGNvbVwiOlwiR0VEQ09NXCIsXG4gIFwiZ2V0dGV4dFwiOlwiZ2V0dGV4dFwiLFxuICBcInBvXCI6XCJnZXR0ZXh0XCIsXG4gIFwiZ2hlcmtpblwiOlwiR2hlcmtpblwiLFxuICBcImdpdFwiOlwiR2l0XCIsXG4gIFwiZ2xzbFwiOlwiR0xTTFwiLFxuICBcImduXCI6XCJHTlwiLFxuICBcImduaVwiOlwiR05cIixcbiAgXCJsaW5rZXItc2NyaXB0XCI6XCJHTlUgTGlua2VyIFNjcmlwdFwiLFxuICBcImxkXCI6XCJHTlUgTGlua2VyIFNjcmlwdFwiLFxuICBcImdvXCI6XCJHb1wiLFxuICBcImdvLW1vZHVsZVwiOlwiR28gbW9kdWxlXCIsXG4gIFwiZ28tbW9kXCI6XCJHbyBtb2R1bGVcIixcbiAgXCJncmFkbGVcIjpcIkdyYWRsZVwiLFxuICBcImdyYXBocWxcIjpcIkdyYXBoUUxcIixcbiAgXCJncm9vdnlcIjpcIkdyb292eVwiLFxuICBcImhhbWxcIjpcIkhhbWxcIixcbiAgXCJoYW5kbGViYXJzXCI6XCJIYW5kbGViYXJzXCIsXG4gIFwiaGJzXCI6XCJIYW5kbGViYXJzXCIsXG4gIFwibXVzdGFjaGVcIjpcIkhhbmRsZWJhcnNcIixcbiAgXCJoYXNrZWxsXCI6XCJIYXNrZWxsXCIsXG4gIFwiaHNcIjpcIkhhc2tlbGxcIixcbiAgXCJoYXhlXCI6XCJIYXhlXCIsXG4gIFwiaGNsXCI6XCJIQ0xcIixcbiAgXCJobHNsXCI6XCJITFNMXCIsXG4gIFwiaG9vblwiOlwiSG9vblwiLFxuICBcImh0dHBcIjpcIkhUVFBcIixcbiAgXCJocGtwXCI6XCJIVFRQIFB1YmxpYy1LZXktUGluc1wiLFxuICBcImhzdHNcIjpcIkhUVFAgU3RyaWN0LVRyYW5zcG9ydC1TZWN1cml0eVwiLFxuICBcImljaGlnb2phbVwiOlwiSWNoaWdvSmFtXCIsXG4gIFwiaWNvblwiOlwiSWNvblwiLFxuICBcImljdS1tZXNzYWdlLWZvcm1hdFwiOlwiSUNVIE1lc3NhZ2UgRm9ybWF0XCIsXG4gIFwiaWRyaXNcIjpcIklkcmlzXCIsXG4gIFwiaWRyXCI6XCJJZHJpc1wiLFxuICBcImlnbm9yZVwiOlwiLmlnbm9yZVwiLFxuICBcImdpdGlnbm9yZVwiOlwiLmlnbm9yZVwiLFxuICBcImhnaWdub3JlXCI6XCIuaWdub3JlXCIsXG4gIFwibnBtaWdub3JlXCI6XCIuaWdub3JlXCIsXG4gIFwiaW5mb3JtN1wiOlwiSW5mb3JtIDdcIixcbiAgXCJpbmlcIjpcIkluaVwiLFxuICBcImlvXCI6XCJJb1wiLFxuICBcImpcIjpcIkpcIixcbiAgXCJqYXZhXCI6XCJKYXZhXCIsXG4gIFwiamF2YWRvY1wiOlwiSmF2YURvY1wiLFxuICBcImphdmFkb2NsaWtlXCI6XCJKYXZhRG9jLWxpa2VcIixcbiAgXCJqYXZhc3RhY2t0cmFjZVwiOlwiSmF2YSBzdGFjayB0cmFjZVwiLFxuICBcImpleGxcIjpcIkpleGxcIixcbiAgXCJqb2xpZVwiOlwiSm9saWVcIixcbiAgXCJqcVwiOlwiSlFcIixcbiAgXCJqc2RvY1wiOlwiSlNEb2NcIixcbiAgXCJqcy1leHRyYXNcIjpcIkpTIEV4dHJhc1wiLFxuICBcImpzb25cIjpcIkpTT05cIixcbiAgXCJ3ZWJtYW5pZmVzdFwiOlwiSlNPTlwiLFxuICBcImpzb241XCI6XCJKU09ONVwiLFxuICBcImpzb25wXCI6XCJKU09OUFwiLFxuICBcImpzc3RhY2t0cmFjZVwiOlwiSlMgc3RhY2sgdHJhY2VcIixcbiAgXCJqcy10ZW1wbGF0ZXNcIjpcIkpTIFRlbXBsYXRlc1wiLFxuICBcImp1bGlhXCI6XCJKdWxpYVwiLFxuICBcImtlZXBhbGl2ZWRcIjpcIktlZXBhbGl2ZWQgQ29uZmlndXJlXCIsXG4gIFwia2V5bWFuXCI6XCJLZXltYW5cIixcbiAgXCJrb3RsaW5cIjpcIktvdGxpblwiLFxuICBcImt0XCI6XCJLb3RsaW5cIixcbiAgXCJrdHNcIjpcIktvdGxpblwiLFxuICBcImt1bWlyXCI6XCJLdU1pciAoXHUwNDFBXHUwNDQzXHUwNDFDXHUwNDM4XHUwNDQwKVwiLFxuICBcImt1bVwiOlwiS3VNaXIgKFx1MDQxQVx1MDQ0M1x1MDQxQ1x1MDQzOFx1MDQ0MClcIixcbiAgXCJrdXN0b1wiOlwiS3VzdG9cIixcbiAgXCJsYXRleFwiOlwiTGFUZVhcIixcbiAgXCJ0ZXhcIjpcIkxhVGVYXCIsXG4gIFwiY29udGV4dFwiOlwiTGFUZVhcIixcbiAgXCJsYXR0ZVwiOlwiTGF0dGVcIixcbiAgXCJsZXNzXCI6XCJMZXNzXCIsXG4gIFwibGlseXBvbmRcIjpcIkxpbHlQb25kXCIsXG4gIFwibHlcIjpcIkxpbHlQb25kXCIsXG4gIFwibGlxdWlkXCI6XCJMaXF1aWRcIixcbiAgXCJsaXNwXCI6XCJMaXNwXCIsXG4gIFwiZW1hY3NcIjpcIkxpc3BcIixcbiAgXCJlbGlzcFwiOlwiTGlzcFwiLFxuICBcImVtYWNzLWxpc3BcIjpcIkxpc3BcIixcbiAgXCJsaXZlc2NyaXB0XCI6XCJMaXZlU2NyaXB0XCIsXG4gIFwibGx2bVwiOlwiTExWTSBJUlwiLFxuICBcImxvZ1wiOlwiTG9nIGZpbGVcIixcbiAgXCJsb2xjb2RlXCI6XCJMT0xDT0RFXCIsXG4gIFwibHVhXCI6XCJMdWFcIixcbiAgXCJtYWdtYVwiOlwiTWFnbWEgKENBUylcIixcbiAgXCJtYWtlZmlsZVwiOlwiTWFrZWZpbGVcIixcbiAgXCJtYXJrZG93blwiOlwiTWFya2Rvd25cIixcbiAgXCJtZFwiOlwiTWFya2Rvd25cIixcbiAgXCJtYXJrdXAtdGVtcGxhdGluZ1wiOlwiTWFya3VwIHRlbXBsYXRpbmdcIixcbiAgXCJtYXRhXCI6XCJNYXRhXCIsXG4gIFwibWF0bGFiXCI6XCJNQVRMQUJcIixcbiAgXCJtYXhzY3JpcHRcIjpcIk1BWFNjcmlwdFwiLFxuICBcIm1lbFwiOlwiTUVMXCIsXG4gIFwibWVybWFpZFwiOlwiTWVybWFpZFwiLFxuICBcIm1ldGFmb250XCI6XCJNRVRBRk9OVFwiLFxuICBcIm1pemFyXCI6XCJNaXphclwiLFxuICBcIm1vbmdvZGJcIjpcIk1vbmdvREJcIixcbiAgXCJtb25rZXlcIjpcIk1vbmtleVwiLFxuICBcIm1vb25zY3JpcHRcIjpcIk1vb25TY3JpcHRcIixcbiAgXCJtb29uXCI6XCJNb29uU2NyaXB0XCIsXG4gIFwibjFxbFwiOlwiTjFRTFwiLFxuICBcIm40anNcIjpcIk40SlNcIixcbiAgXCJuNGpzZFwiOlwiTjRKU1wiLFxuICBcIm5hbmQydGV0cmlzLWhkbFwiOlwiTmFuZCBUbyBUZXRyaXMgSERMXCIsXG4gIFwibmFuaXNjcmlwdFwiOlwiTmFuaW5vdmVsIFNjcmlwdFwiLFxuICBcIm5hbmlcIjpcIk5hbmlub3ZlbCBTY3JpcHRcIixcbiAgXCJuYXNtXCI6XCJOQVNNXCIsXG4gIFwibmVvblwiOlwiTkVPTlwiLFxuICBcIm5ldm9kXCI6XCJOZXZvZFwiLFxuICBcIm5naW54XCI6XCJuZ2lueFwiLFxuICBcIm5pbVwiOlwiTmltXCIsXG4gIFwibml4XCI6XCJOaXhcIixcbiAgXCJuc2lzXCI6XCJOU0lTXCIsXG4gIFwib2JqZWN0aXZlY1wiOlwiT2JqZWN0aXZlLUNcIixcbiAgXCJvYmpjXCI6XCJPYmplY3RpdmUtQ1wiLFxuICBcIm9jYW1sXCI6XCJPQ2FtbFwiLFxuICBcIm9kaW5cIjpcIk9kaW5cIixcbiAgXCJvcGVuY2xcIjpcIk9wZW5DTFwiLFxuICBcIm9wZW5xYXNtXCI6XCJPcGVuUWFzbVwiLFxuICBcInFhc21cIjpcIk9wZW5RYXNtXCIsXG4gIFwib3pcIjpcIk96XCIsXG4gIFwicGFyaWdwXCI6XCJQQVJJL0dQXCIsXG4gIFwicGFyc2VyXCI6XCJQYXJzZXJcIixcbiAgXCJwYXNjYWxcIjpcIlBhc2NhbFwiLFxuICBcIm9iamVjdHBhc2NhbFwiOlwiUGFzY2FsXCIsXG4gIFwicGFzY2FsaWdvXCI6XCJQYXNjYWxpZ29cIixcbiAgXCJwc2xcIjpcIlBBVFJPTCBTY3JpcHRpbmcgTGFuZ3VhZ2VcIixcbiAgXCJwY2F4aXNcIjpcIlBDLUF4aXNcIixcbiAgXCJweFwiOlwiUEMtQXhpc1wiLFxuICBcInBlb3BsZWNvZGVcIjpcIlBlb3BsZUNvZGVcIixcbiAgXCJwY29kZVwiOlwiUGVvcGxlQ29kZVwiLFxuICBcInBlcmxcIjpcIlBlcmxcIixcbiAgXCJwaHBcIjpcIlBIUFwiLFxuICBcInBocGRvY1wiOlwiUEhQRG9jXCIsXG4gIFwicGhwLWV4dHJhc1wiOlwiUEhQIEV4dHJhc1wiLFxuICBcInBsYW50LXVtbFwiOlwiUGxhbnRVTUxcIixcbiAgXCJwbGFudHVtbFwiOlwiUGxhbnRVTUxcIixcbiAgXCJwbHNxbFwiOlwiUEwvU1FMXCIsXG4gIFwicG93ZXJxdWVyeVwiOlwiUG93ZXJRdWVyeVwiLFxuICBcInBxXCI6XCJQb3dlclF1ZXJ5XCIsXG4gIFwibXNjcmlwdFwiOlwiUG93ZXJRdWVyeVwiLFxuICBcInBvd2Vyc2hlbGxcIjpcIlBvd2VyU2hlbGxcIixcbiAgXCJwcm9jZXNzaW5nXCI6XCJQcm9jZXNzaW5nXCIsXG4gIFwicHJvbG9nXCI6XCJQcm9sb2dcIixcbiAgXCJwcm9tcWxcIjpcIlByb21RTFwiLFxuICBcInByb3BlcnRpZXNcIjpcIi5wcm9wZXJ0aWVzXCIsXG4gIFwicHJvdG9idWZcIjpcIlByb3RvY29sIEJ1ZmZlcnNcIixcbiAgXCJwdWdcIjpcIlB1Z1wiLFxuICBcInB1cHBldFwiOlwiUHVwcGV0XCIsXG4gIFwicHVyZVwiOlwiUHVyZVwiLFxuICBcInB1cmViYXNpY1wiOlwiUHVyZUJhc2ljXCIsXG4gIFwicGJmYXNtXCI6XCJQdXJlQmFzaWNcIixcbiAgXCJwdXJlc2NyaXB0XCI6XCJQdXJlU2NyaXB0XCIsXG4gIFwicHVyc1wiOlwiUHVyZVNjcmlwdFwiLFxuICBcInB5dGhvblwiOlwiUHl0aG9uXCIsXG4gIFwicHlcIjpcIlB5dGhvblwiLFxuICBcInFzaGFycFwiOlwiUSNcIixcbiAgXCJxc1wiOlwiUSNcIixcbiAgXCJxXCI6XCJRIChrZGIrIGRhdGFiYXNlKVwiLFxuICBcInFtbFwiOlwiUU1MXCIsXG4gIFwicW9yZVwiOlwiUW9yZVwiLFxuICBcInJcIjpcIlJcIixcbiAgXCJyYWNrZXRcIjpcIlJhY2tldFwiLFxuICBcInJrdFwiOlwiUmFja2V0XCIsXG4gIFwiY3NodG1sXCI6XCJSYXpvciBDI1wiLFxuICBcImpzeFwiOlwiUmVhY3QgSlNYXCIsXG4gIFwidHN4XCI6XCJSZWFjdCBUU1hcIixcbiAgXCJyZWFzb25cIjpcIlJlYXNvblwiLFxuICBcInJlZ2V4XCI6XCJSZWdleFwiLFxuICBcInJlZ29cIjpcIlJlZ29cIixcbiAgXCJyZW5weVwiOlwiUmVuJ3B5XCIsXG4gIFwicnB5XCI6XCJSZW4ncHlcIixcbiAgXCJyZXNjcmlwdFwiOlwiUmVTY3JpcHRcIixcbiAgXCJyZXNcIjpcIlJlU2NyaXB0XCIsXG4gIFwicmVzdFwiOlwicmVTVCAocmVTdHJ1Y3R1cmVkVGV4dClcIixcbiAgXCJyaXBcIjpcIlJpcFwiLFxuICBcInJvYm9jb25mXCI6XCJSb2JvY29uZlwiLFxuICBcInJvYm90ZnJhbWV3b3JrXCI6XCJSb2JvdCBGcmFtZXdvcmtcIixcbiAgXCJyb2JvdFwiOlwiUm9ib3QgRnJhbWV3b3JrXCIsXG4gIFwicnVieVwiOlwiUnVieVwiLFxuICBcInJiXCI6XCJSdWJ5XCIsXG4gIFwicnVzdFwiOlwiUnVzdFwiLFxuICBcInNhc1wiOlwiU0FTXCIsXG4gIFwic2Fzc1wiOlwiU2FzcyAoU2FzcylcIixcbiAgXCJzY3NzXCI6XCJTYXNzIChTQ1NTKVwiLFxuICBcInNjYWxhXCI6XCJTY2FsYVwiLFxuICBcInNjaGVtZVwiOlwiU2NoZW1lXCIsXG4gIFwic2hlbGwtc2Vzc2lvblwiOlwiU2hlbGwgc2Vzc2lvblwiLFxuICBcInNoLXNlc3Npb25cIjpcIlNoZWxsIHNlc3Npb25cIixcbiAgXCJzaGVsbHNlc3Npb25cIjpcIlNoZWxsIHNlc3Npb25cIixcbiAgXCJzbWFsaVwiOlwiU21hbGlcIixcbiAgXCJzbWFsbHRhbGtcIjpcIlNtYWxsdGFsa1wiLFxuICBcInNtYXJ0eVwiOlwiU21hcnR5XCIsXG4gIFwic21sXCI6XCJTTUxcIixcbiAgXCJzbWxualwiOlwiU01MXCIsXG4gIFwic29saWRpdHlcIjpcIlNvbGlkaXR5IChFdGhlcmV1bSlcIixcbiAgXCJzb2xcIjpcIlNvbGlkaXR5IChFdGhlcmV1bSlcIixcbiAgXCJzb2x1dGlvbi1maWxlXCI6XCJTb2x1dGlvbiBmaWxlXCIsXG4gIFwic2xuXCI6XCJTb2x1dGlvbiBmaWxlXCIsXG4gIFwic295XCI6XCJTb3kgKENsb3N1cmUgVGVtcGxhdGUpXCIsXG4gIFwic3BhcnFsXCI6XCJTUEFSUUxcIixcbiAgXCJycVwiOlwiU1BBUlFMXCIsXG4gIFwic3BsdW5rLXNwbFwiOlwiU3BsdW5rIFNQTFwiLFxuICBcInNxZlwiOlwiU1FGXCIsXG4gIFwic3FsXCI6XCJTUUxcIixcbiAgXCJzcXVpcnJlbFwiOlwiU3F1aXJyZWxcIixcbiAgXCJzdGFuXCI6XCJTdGFuXCIsXG4gIFwic3RhdGFcIjpcIlN0YXRhIEFkb1wiLFxuICBcImllY3N0XCI6XCJTdHJ1Y3R1cmVkIFRleHQgKElFQyA2MTEzMS0zKVwiLFxuICBcInN0eWx1c1wiOlwiU3R5bHVzXCIsXG4gIFwic3VwZXJjb2xsaWRlclwiOlwiU3VwZXJDb2xsaWRlclwiLFxuICBcInNjbGFuZ1wiOlwiU3VwZXJDb2xsaWRlclwiLFxuICBcInN3aWZ0XCI6XCJTd2lmdFwiLFxuICBcInN5c3RlbWRcIjpcIlN5c3RlbWQgY29uZmlndXJhdGlvbiBmaWxlXCIsXG4gIFwidDQtdGVtcGxhdGluZ1wiOlwiVDQgdGVtcGxhdGluZ1wiLFxuICBcInQ0LWNzXCI6XCJUNCBUZXh0IFRlbXBsYXRlcyAoQyMpXCIsXG4gIFwidDRcIjpcIlQ0IFRleHQgVGVtcGxhdGVzIChDIylcIixcbiAgXCJ0NC12YlwiOlwiVDQgVGV4dCBUZW1wbGF0ZXMgKFZCKVwiLFxuICBcInRhcFwiOlwiVEFQXCIsXG4gIFwidGNsXCI6XCJUY2xcIixcbiAgXCJ0dDJcIjpcIlRlbXBsYXRlIFRvb2xraXQgMlwiLFxuICBcInRleHRpbGVcIjpcIlRleHRpbGVcIixcbiAgXCJ0b21sXCI6XCJUT01MXCIsXG4gIFwidHJlbW9yXCI6XCJUcmVtb3JcIixcbiAgXCJ0cmlja2xlXCI6XCJUcmVtb3JcIixcbiAgXCJ0cm95XCI6XCJUcmVtb3JcIixcbiAgXCJ0dXJ0bGVcIjpcIlR1cnRsZVwiLFxuICBcInRyaWdcIjpcIlR1cnRsZVwiLFxuICBcInR3aWdcIjpcIlR3aWdcIixcbiAgXCJ0eXBlc2NyaXB0XCI6XCJUeXBlU2NyaXB0XCIsXG4gIFwidHNcIjpcIlR5cGVTY3JpcHRcIixcbiAgXCJ0eXBvc2NyaXB0XCI6XCJUeXBvU2NyaXB0XCIsXG4gIFwidHNjb25maWdcIjpcIlR5cG9TY3JpcHRcIixcbiAgXCJ1bnJlYWxzY3JpcHRcIjpcIlVucmVhbFNjcmlwdFwiLFxuICBcInVzY3JpcHRcIjpcIlVucmVhbFNjcmlwdFwiLFxuICBcInVjXCI6XCJVbnJlYWxTY3JpcHRcIixcbiAgXCJ1b3Jhem9yXCI6XCJVTyBSYXpvciBTY3JpcHRcIixcbiAgXCJ1cmlcIjpcIlVSSVwiLFxuICBcInVybFwiOlwiVVJJXCIsXG4gIFwidlwiOlwiVlwiLFxuICBcInZhbGFcIjpcIlZhbGFcIixcbiAgXCJ2Ym5ldFwiOlwiVkIuTmV0XCIsXG4gIFwidmVsb2NpdHlcIjpcIlZlbG9jaXR5XCIsXG4gIFwidmVyaWxvZ1wiOlwiVmVyaWxvZ1wiLFxuICBcInZoZGxcIjpcIlZIRExcIixcbiAgXCJ2aW1cIjpcInZpbVwiLFxuICBcInZpc3VhbC1iYXNpY1wiOlwiVmlzdWFsIEJhc2ljXCIsXG4gIFwidmJcIjpcIlZpc3VhbCBCYXNpY1wiLFxuICBcInZiYVwiOlwiVmlzdWFsIEJhc2ljXCIsXG4gIFwid2FycHNjcmlwdFwiOlwiV2FycFNjcmlwdFwiLFxuICBcIndhc21cIjpcIldlYkFzc2VtYmx5XCIsXG4gIFwid2ViLWlkbFwiOlwiV2ViIElETFwiLFxuICBcIndlYmlkbFwiOlwiV2ViIElETFwiLFxuICBcIndnc2xcIjpcIldHU0xcIixcbiAgXCJ3aWtpXCI6XCJXaWtpIG1hcmt1cFwiLFxuICBcIndvbGZyYW1cIjpcIldvbGZyYW0gbGFuZ3VhZ2VcIixcbiAgXCJtYXRoZW1hdGljYVwiOlwiV29sZnJhbSBsYW5ndWFnZVwiLFxuICBcIm5iXCI6XCJXb2xmcmFtIGxhbmd1YWdlXCIsXG4gIFwid2xcIjpcIldvbGZyYW0gbGFuZ3VhZ2VcIixcbiAgXCJ3cmVuXCI6XCJXcmVuXCIsXG4gIFwieGVvcmFcIjpcIlhlb3JhXCIsXG4gIFwieGVvcmFjdWJlXCI6XCJYZW9yYVwiLFxuICBcInhtbC1kb2NcIjpcIlhNTCBkb2MgKC5uZXQpXCIsXG4gIFwieG9qb1wiOlwiWG9qbyAoUkVBTGJhc2ljKVwiLFxuICBcInhxdWVyeVwiOlwiWFF1ZXJ5XCIsXG4gIFwieWFtbFwiOlwiWUFNTFwiLFxuICBcInltbFwiOlwiWUFNTFwiLFxuICBcInlhbmdcIjpcIllBTkdcIixcbiAgXCJ6aWdcIjpcIlppZ1wiXG59XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS92c2NvZGUtaWNvbnMvdnNjb2RlLWljb25zL3dpa2kvTGlzdE9mRmlsZXNcbi8vIGh0dHBzOi8vZGV2aWNvbi5kZXYvXG5leHBvcnQgY29uc3QgSWNvbnMgPSB7XG4gIFwiLmdpdGlnbm9yZVwiOiBgPHBhdGggZD1cIk0yOS40NzIsMTQuNzUzLDE3LjI0NywyLjUyOGExLjgsMS44LDAsMCwwLTIuNTUsMEwxMi4xNTgsNS4wNjdsMy4yMiwzLjIyYTIuMTQxLDIuMTQxLDAsMCwxLDIuNzEyLDIuNzNsMy4xLDMuMWEyLjE0MywyLjE0MywwLDEsMS0xLjI4NSwxLjIxbC0yLjg5NS0yLjg5NXY3LjYxN2EyLjE0MSwyLjE0MSwwLDEsMS0xLjc2NC0uMDYyVjEyLjNhMi4xNDYsMi4xNDYsMCwwLDEtMS4xNjUtMi44MTRMMTAuOTExLDYuMzE0LDIuNTI4LDE0LjdhMS44LDEuOCwwLDAsMCwwLDIuNTUxTDE0Ljc1MywyOS40NzJhMS44LDEuOCwwLDAsMCwyLjU1LDBMMjkuNDcyLDE3LjNhMS44LDEuOCwwLDAsMCwwLTIuNTUxXCIgc3R5bGU9XCJmaWxsOiNkZDRjMzVcIi8+PHBhdGggZD1cIk0xMi4xNTgsNS4wNjdsMy4yMiwzLjIyYTIuMTQxLDIuMTQxLDAsMCwxLDIuNzEyLDIuNzNsMy4xLDMuMWEyLjE0MywyLjE0MywwLDEsMS0xLjI4NSwxLjIxbC0yLjg5NS0yLjg5NXY3LjYxN2EyLjE0MSwyLjE0MSwwLDEsMS0xLjc2NC0uMDYyVjEyLjNhMi4xNDYsMi4xNDYsMCwwLDEtMS4xNjUtMi44MTRMMTAuOTExLDYuMzE0XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcbiAgXCIuaGdpZ25vcmVcIjogYDxwYXRoIGQ9XCJNMjguMDQyLDIzLjE3MmM0Ljk4OS04LjMtMS4wNTQtMjEuNzUxLTEyLjEtMjAuMzg0QzUuOTU1LDQuMDIyLDUuNzk0LDE0LjUzLDE0LjU5MywxNy4wMjZjNy42MTQsMi4xNjIsMS41NzMsNi45OTIsMS43NDksMTAuMjA4czYuNjIsNC4zODIsMTEuNy00LjA2M1wiIHN0eWxlPVwiZmlsbDojMWIxYjFiXCIvPjxjaXJjbGUgY3g9XCI5Ljc4NFwiIGN5PVwiMjQuMjU3XCIgcj1cIjQuMzMyXCIgc3R5bGU9XCJmaWxsOiMxYjFiMWJcIi8+PGNpcmNsZSBjeD1cIjQuODM1XCIgY3k9XCIxNS4wOTlcIiByPVwiMi44MzVcIiBzdHlsZT1cImZpbGw6IzFiMWIxYlwiLz48cGF0aCBkPVwiTTI4LjIzMSwyMi44MzVjNC45ODktOC4zLTEuMDU0LTIxLjc1MS0xMi4xLTIwLjM4NEM2LjE0NCwzLjY4Niw1Ljk4MywxNC4xOTQsMTQuNzgxLDE2LjY5YzcuNjE0LDIuMTYyLDEuNTczLDYuOTkyLDEuNzQ5LDEwLjIwOHM2LjYyLDQuMzgyLDExLjctNC4wNjNcIiBzdHlsZT1cImZpbGw6I2JmYmZiZlwiLz48Y2lyY2xlIGN4PVwiOS45NzJcIiBjeT1cIjIzLjkyMVwiIHI9XCI0LjMzMlwiIHN0eWxlPVwiZmlsbDojYmZiZmJmXCIvPjxjaXJjbGUgY3g9XCI1LjAyM1wiIGN5PVwiMTQuNzYyXCIgcj1cIjIuODM1XCIgc3R5bGU9XCJmaWxsOiNiZmJmYmZcIi8+PHBhdGggZD1cIk0xNy44MTEsMjguMTY4YS42NjkuNjY5LDAsMCwxLC42MzUtLjk5NCw3LDcsMCwwLDAsMy43LS43NDZjMy4yNDctMS44NDEsOC4yNDQtMTAuNyw1LjczMS0xNi4yODVBMTIuNzcsMTIuNzcsMCwwLDAsMjUuMDQ5LDUuN2MtLjIzNi0uMjQ5LS4xLS4yMzYuMDU5LS4xNTJhMTAuMDgsMTAuMDgsMCwwLDEsMi44NTcsMy42NzYsMTQuNTc4LDE0LjU3OCwwLDAsMSwxLjEsMTAuMjc5Yy0uNDk0LDEuODE3LTIuMiw1LjkyOC00LjY5MSw3LjcwNnMtNS40MjQsMi44LTYuNTYzLjk1NU0xNS41NDgsMTYuNjczYy0xLjctLjUtMy44OTQtMS4yMDgtNS4xNjMtMi44NjdBOC4wODgsOC4wODgsMCwwLDEsOC44NTQsMTAuNDljLS4wNDMtLjI3LS4wOC0uNSwwLS41NThhMjEuODgyLDIxLjg4MiwwLDAsMCwxLjY4OCwyLjcyMyw2LjQ4Nyw2LjQ4NywwLDAsMCwzLjUyNiwyLjI1NiwxMi4zODMsMTIuMzgzLDAsMCwxLDMuODY3LDEuMzdjLjczOS42MjkuOCwxLjk4OS41NTIsMi4xNDJzLS43NTktMS4xLTIuOTM4LTEuNzQ5bS04LjE1NSwxMC40YzMuMzY5LDMuMTIxLDguNDM5LTEuMTY2LDYuMjA3LTQuOTU0LS4yNTEtLjQyNS0uNTc2LS43NDktLjQ2OS0uNDIzLjcxNCwyLjE3OC4wNTQsMy45LTEuMTc2LDQuNzg4YTQuMDYzLDQuMDYzLDAsMCwxLTQuMTkyLjMyOGMtLjM5LS4yLS41NTEuMDkyLS4zNy4yNjFtLTMuOTMtMTAuMTZjLjAxOC4yLjI5Mi40NTguNzIyLjU3NmEyLjk2OSwyLjk2OSwwLDAsMCwyLjU1LS40MTMsMi43NTksMi43NTksMCwwLDAsLjgxLTMuNDUyYy0uMTcyLS4zMDgtLjQtLjUzMy0uMjE4LS4wNDFBMi42OCwyLjY4LDAsMCwxLDYuMTQ4LDE2LjUzYTIuNDM5LDIuNDM5LDAsMCwxLTIuMS4xNjRjLS4zOTEtLjExOS0uNi4wMTYtLjU4LjIyM1wiLz48cGF0aCBkPVwiTTE5LjA1NiwyOC40MDdjLS4wMzMuMzg5LjQxNC40NjYsMS4wMTYuMzc2YTYuNzU1LDYuNzU1LDAsMCwwLDIuMzEzLS42NDgsOS41NCw5LjU0LDAsMCwwLDMuMzE0LTIuNjNjMi42NjItMy40NzMsMy42LTcuNTgyLDMuNDYtOC4xNzNBMTYuMTcyLDE2LjE3MiwwLDAsMSwyNywyMi42OTJjLTEuODg4LDIuOTY4LTMuMjU2LDQuNTQ4LTYuNDEzLDUuMzE0LS44NzkuMjEzLTEuNDg1LS4xMTItMS41MjkuNG0tNy0xMy41QTcuOTY3LDcuOTY3LDAsMCwwLDE0LjYsMTYuMDg5YTEyLjIsMTIuMiwwLDAsMSwyLjk2LDEuMzFjLjM3OC4yNTMuNjE4LjgxOS42NDIuMzE3cy0uMjg1LS45MzQtLjk3Ni0xLjE2NGExNS4yNzQsMTUuMjc0LDAsMCwwLTIuMDA5LS42NzRjLS40ODUtLjEtMS4yNzMtLjI4NS0xLjk0OS0uNDkzLS4zNzEtLjExNC0uNzQ4LS4zMTMtMS4yMTQtLjQ4M00xMC4wMzcsMjcuNzE4Yy40MjktLjA5LDIuOTI0LS43MzYsMy41MS0yLjc4OC4xODMtLjY0LjIxNS0uNTExLjE2NC0uMTY1YTMuOCwzLjgsMCwwLDEtMy4zNTgsMy4xMjNjLS4yODkuMDMtLjY2OC0uMS0uMzE1LS4xN001LjA0NiwxNy4yYTcuOTkxLDcuOTkxLDAsMCwwLDEuMTk1LS4zMzYsMi4zODMsMi4zODMsMCwwLDAsMS4yMzItMS43NDFjLjA2NC0uNTA1LjA4My0uMzc4LjEwOS0uMWEyLjYyNywyLjYyNywwLDAsMS0yLjE0NywyLjMyNGMtLjIuMDI4LS41Ni4wMTEtLjM4OS0uMTQzXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0yNy41NCwxNy40NDZjMi4xMjQtNi4xMjMtMi4zMjEtMTUuMzctMTEuMzE1LTE0LjI1OC04LjEyNiwxLTguMjU3LDkuNTU3LTEuMSwxMS41OSw4LjExMiwxLjIyOCwzLjIyNyw3LjM0NywyLjUzNSwxMC40MzMtLjYyMSwyLjc2Niw2LjU1NSwzLjIyMSw5Ljg3Ni03Ljc2NU03LjIxOSwyNi4yYTIuMDI4LDIuMDI4LDAsMCwxLDEuMzMyLjQ0MiwzLjUyNSwzLjUyNSwwLDAsMCwzLjc1NS0uOTgzQTQuMTU0LDQuMTU0LDAsMCwwLDEyLjg2OSwyMmMtLjgwNi0yLjMxOS00LjIyOS0yLjI3OC01Ljc1OC0uMzUzLTEuNjU0LDIuMTUtLjQsNC41MzkuMTA4LDQuNTQ4TTIuNjc2LDE1LjQ1MWExLjE2NiwxLjE2NiwwLDAsMCwuOTA4Ljg2M2MuNzMxLjEuODguNDM0LDEuNzQzLjI2M0EyLjQ2NCwyLjQ2NCwwLDAsMCw3LjEsMTQuOTE2YTEuNzcxLDEuNzcxLDAsMCwwLS44MjQtMi4xNCwyLjY4OSwyLjY4OSwwLDAsMC0zLjA0Ny4zNjMsMi4yNjMsMi4yNjMsMCwwLDAtLjU1OCwyLjMxMlwiIHN0eWxlPVwiZmlsbDojOTk5XCIvPjxwYXRoIGQ9XCJNMjEuOTgxLDIyLjIyOGMtMi4yLS4yNzItNS4zNiw0LjY5LTIuMzc4LDQuMTA5aDBhNS42NDUsNS42NDUsMCwwLDAsMy42ODMtMS45MzIsMjMuMTM2LDIzLjEzNiwwLDAsMCw0LjA1NS03LjJjLjUtMS44NjEuMjUxLTQuNzQ1LS4yNjktMi4wMzYtLjUzMywyLjc4MS0yLjg5Myw3LjMzNi01LjA5MSw3LjA2NE0xMC41MjMsMjYuMzYyQTIuNzc4LDIuNzc4LDAsMCwwLDEyLjUsMjIuOTljLS4xNjUtMS4yNzYtLjg2MSwxLjU4NC0yLjE1LDIuMDEyLTEuOTUzLjY0OC0xLjczMywxLjg2MS4xNzYsMS4zNjFtLTQuOTc4LTEwLjJjLjY2My0uMTczLDEuNTQtMS4wNzcsMS4xLTEuNzY3LS41MzctLjg1LTIuMDMzLS4xMjItMi4wODQuODI0cy4yNzcsMS4xMjcuOTc5Ljk0M1wiIHN0eWxlPVwiZmlsbDojZjNmM2YzXCIvPmAsXG4gIFwiLm5wbWlnbm9yZVwiOiBgPHBhdGggZD1cIk0yLDEwLjU1NUgzMHY5LjMzNUgxNnYxLjU1Nkg5Ljc3OFYxOS44ODlIMlptMS41NTYsNy43NzlINi42NjdWMTMuNjY2SDguMjIydjQuNjY3SDkuNzc4VjEyLjExMUgzLjU1NlptNy43NzgtNi4yMjN2Ny43NzloMy4xMTFWMTguMzM0aDMuMTExVjEyLjExMVptMy4xMTEsMS41NTZIMTZ2My4xMTJIMTQuNDQ0Wm00LjY2Ny0xLjU1NnY2LjIyM2gzLjExMVYxMy42NjZoMS41NTZ2NC42NjdoMS41NTZWMTMuNjY2aDEuNTU2djQuNjY3aDEuNTU2VjEyLjExMVpcIiBzdHlsZT1cImZpbGw6I2NiMzgzN1wiLz5gLFxuICBcIi5wcm9wZXJ0aWVzXCI6IGA8cGF0aCBkPVwiTTIzLjI2NSwyNC4zODFsLjktLjg5NGM0LjE2NC4xMzYsNC4yMjgtLjAxLDQuNDExLS40MzhsMS4xNDQtMi43ODVMMjkuODA1LDIwbC0uMDkzLS4yMzFjLS4wNDktLjEyMi0uMi0uNDg2LTIuOC0yLjk2NVYxNS41YzMtMi44OSwyLjkzNi0zLjAzOCwyLjc2NS0zLjQ2MUwyOC41MzgsOS4yMjVjLS4xNzEtLjQyMi0uMjM2LS41ODctNC4zNy0uNDc0bC0uOS0uOTNhMjAuMTY2LDIwLjE2NiwwLDAsMC0uMTQxLTQuMTA2bC0uMTE2LS4yNjMtMi45NzQtMS4zYy0uNDM4LS4yLS41OTItLjI3Mi0zLjQsMi43ODZsLTEuMjYyLS4wMTljLTIuODkxLTMuMDg2LTMuMDI4LTMuMDMtMy40NjEtMi44NTVMOS4xNDksMy4xODJjLS40MzMuMTc1LS41ODYuMjM3LS40MTgsNC40MzdsLS44OTMuODljLTQuMTYyLS4xMzYtNC4yMjYuMDEyLTQuNDA3LjQzOEwyLjI4NSwxMS43MzMsMi4xOTUsMTJsLjA5NC4yMzJjLjA0OS4xMi4xOTQuNDgsMi44LDIuOTYybDAsMS4zYy0zLDIuODktMi45MzUsMy4wMzgtMi43NjMsMy40NjJsMS4xMzgsMi44MTdjLjE3NC40MzEuMjM2LjU4NCw0LjM2OS40NzZsLjkuOTM1YTIwLjI0MywyMC4yNDMsMCwwLDAsLjEzNyw0LjFsLjExNi4yNjUsMi45OTMsMS4zMDhjLjQzNS4xODIuNTg2LjI0NywzLjM4Ni0yLjhsMS4yNjIuMDE2YzIuODk1LDMuMDksMy4wNDMsMy4wMywzLjQ2NiwyLjg1OWwyLjc1OS0xLjExNUMyMy4yODgsMjguNjQ0LDIzLjQ0LDI4LjU4MywyMy4yNjUsMjQuMzgxWk0xMS40MDcsMTcuODU3YTQuOTU3LDQuOTU3LDAsMSwxLDYuNDg4LDIuODI0QTUuMDE0LDUuMDE0LDAsMCwxLDExLjQwNywxNy44NTdaXCIgc3R5bGU9XCJmaWxsOiM5OWI4YzRcIi8+YCxcbiAgXCI2NTAyIEFzc2VtYmx5XCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCI4MzYuNjNcIiB5MT1cIjM2LjIwNVwiIHgyPVwiODQzLjgwMlwiIHkyPVwiMTQuNDhcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSg1MjUuOTIyIDMwLjI0OSkgcm90YXRlKDE4MCkgc2NhbGUoMC42MDcgMC42MDcpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZmXCIgc3RvcC1vcGFjaXR5PVwiMFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNmZmZcIiBzdG9wLW9wYWNpdHk9XCIwLjI3NVwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2Fzc2VtYmx5PC90aXRsZT48cGF0aCBkPVwiTTE2LDJjLTEuMjQ2LDMuMDU2LTIsNS4wNTctMy4zOTEsOC4wMjJBMjEuODg0LDIxLjg4NCwwLDAsMCwxNi4yLDEzLjE1NmExNC44NTgsMTQuODU4LDAsMCwxLTQtMi4yODNDMTAuNDMsMTQuNTc5LDcuNjQ2LDE5Ljg1NSwyLDMwYzUuMTg2LTIuOTk0LDkuMDEyLTQuNjQ4LDEyLjY5MS00Ljk2NlYyNC4yaC0uODM0di0uODM3aC44MzRWMjQuMmgxLjY3NVYyMi41MjFIMTQuNjkxdi0uODM0aC0uODM0VjIwLjAxM2guODM0di0uODM0aDEuNjc1di44MzRIMTcuMnYuODM3aC0uODM3di0uODM3SDE0LjY5MXYxLjY3NWgxLjY3NXYuODM0SDE3LjJWMjQuMmgtLjgzN3YuNzgzYzMuOTguMSw4LjAwNiwxLjc3MiwxMy42MzQsNS4wMjEtLjg2My0xLjU4OS0xLjYzNi0zLjAyMS0yLjM3Mi00LjM4NWEyNS41MjYsMjUuNTI2LDAsMCwwLTQuODMzLTMuMzMzQTE0LjQzNiwxNC40MzYsMCwwLDEsMjYuNjUsMjMuOEMxOS4xNyw5Ljg3MiwxOC41NjUsOC4wMiwxNiwyWk0xMC41MTEsMTkuMTc5aDEuNjcxdi44MzRoLjgzN3Y1LjAyMWgtLjgzN1YyMi41MjFIMTAuNTExdjIuNTEySDkuNjczVjIwLjAxM2guODM3Wm0wLC44MzR2MS42NzVoMS42NzFWMjAuMDEzWm03LjUyNi0uODM0aC44Mzd2LjgzNGguODM3di44MzdoLjgzNHYtLjgzN2guODM3di0uODM0aC44Mzd2NS44NTVoLS44MzdWMjAuODVoLS44Mzd2LjgzN2gtLjgzNFYyMC44NWgtLjgzN3Y0LjE4NGgtLjgzN1pcIiBzdHlsZT1cImZpbGw6IzAwMDBiZlwiLz48cGF0aCBkPVwiTTIzLjg4MSwxOC42NDJjLTYuMDY5LTguMjM3LTcuNDc2LTE0Ljg3Ni03LjgzMi0xNi40NjFBMTc1LjIxNywxNzUuMjE3LDAsMCwwLDIzLjg4MSwxOC42NDJaXCIgc3R5bGU9XCJmaWxsOiNmZmY7ZmlsbC1vcGFjaXR5OjAuMTY1NjgwNDY4MDgyNDI4XCIvPjxwYXRoIGQ9XCJNMTYuMDUxLDIuMTIsMTUuNiwzLjIyN2MtLjE1OS4zOTEtLjMxMS43NjUtLjQ2MSwxLjEzMXMtLjMuNzI0LS40NDgsMS4wNzctLjMuNy0uNDQ4LDEuMDUzLS4zLjcwNi0uNDY1LDEuMDY2LS4zMjkuNzI5LS41MDYsMS4xMTEtLjM2Mi43NzgtLjU2MSwxLjE5M2MtLjAyOC4wNTctLjA2MS4xMjMtLjA4OS4xODFBMjEuODcyLDIxLjg3MiwwLDAsMCwxNi4yLDEzLjE1NmExNC44NzksMTQuODc5LDAsMCwxLTMuOTg5LTIuMjc2bC0uMTQuMjg3Yy0uMDY1LjEzMy0uMTQ0LjI4My0uMjEyLjQybC0uMTA2LjIxOWMtLjg3OCwxLjc5My0yLjAwNiwzLjk4NC0zLjUyNCw2LjgyMiwzLjU1MS0yLDcuMzgxLTQuODg3LDE0LjMzOC0yLjQtLjM0OS0uNjYxLS42Ny0xLjI4LS45NzEtMS44NjNzLS41ODEtMS4xMjgtLjg0MS0xLjY0NC0uNS0xLS43MjUtMS40NjMtLjQzMy0uOS0uNjI5LTEuMzEzLS4zOC0uODE4LS41NTQtMS4yLS4zMzktLjc1NC0uNS0xLjExOFMxOC4wNDcsNi45LDE3LjksNi41NDZzLS4yOTEtLjcwOS0uNDM0LTEuMDY2Yy0uMDM2LS4wOTEtLjA3My0uMTg2LS4xMDktLjI3N0MxNi45NDksNC4yNDcsMTYuNTM2LDMuMjU4LDE2LjA1MSwyLjEyWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPmAsXG4gIFwiQWN0aW9uU2NyaXB0XCI6IGA8cGF0aCBkPVwiTTIsMTUuMjgxYzEuOTE4LDAsMi4xMS0xLjA1NSwyLjExLTEuOTE4YTE3LjExOSwxNy4xMTksMCwwLDAtLjE5Mi0yLjIwNSwxOC43MjMsMTguNzIzLDAsMCwxLS4xOTItMi4yMDVjMC0yLjQsMS42My0zLjQ1MiwzLjgzNi0zLjQ1MmguNTc1VjYuOTM4SDcuNjU4Yy0xLjUzNCwwLTIuMTEuNzY3LTIuMTEsMi4yMDVhMTQuNDEyLDE0LjQxMiwwLDAsMCwuMTkyLDEuOTE4LDE0LjMwNiwxNC4zMDYsMCwwLDEsLjE5MiwyLjAxNGMwLDEuNzI2LS42NzEsMi40OTMtMS45MTgsMi44Nzd2LjFjMS4xNTEuMjg4LDEuOTE4LDEuMTUxLDEuOTE4LDIuODc3YTE0LjMwNiwxNC4zMDYsMCwwLDEtLjE5MiwyLjAxNCwxMywxMywwLDAsMC0uMTkyLDEuOTE4YzAsMS40MzguNTc1LDIuMywyLjExLDIuM2guNDc5VjI2LjZINy41NjJjLTIuMjA1LDAtMy44MzYtLjk1OS0zLjgzNi0zLjY0NGExOC43MjMsMTguNzIzLDAsMCwxLC4xOTItMi4yMDUsMTUuNjgsMTUuNjgsMCwwLDAsLjE5Mi0yLjExYzAtLjg2My0uMjg4LTEuOTE4LTIuMTEtMS45MThaXCIgc3R5bGU9XCJmaWxsOiNjNDE3MThcIi8+PHBhdGggZD1cIk05LjQ3OSwxOC4wNjIsOC4yMzMsMjEuOEg2LjZMMTAuNjMsOS45MTFoMS44MjJMMTYuNDc5LDIxLjhIMTQuOTQ1TDEzLjcsMTguMDYyWm0zLjkzMi0xLjE1MUwxMi4yNiwxMy40NTlhOS4zNjQsOS4zNjQsMCwwLDEtLjU3NS0yLjIwNWgwYy0uMTkyLjY3MS0uMzg0LDEuNDM4LS41NzUsMi4xMUw5Ljk1OSwxNi44MTVoMy40NTJaXCIgc3R5bGU9XCJmaWxsOiNjNDE3MThcIi8+PHBhdGggZD1cIk0xNy45MTgsMTkuOTc5YTUuOTQxLDUuOTQxLDAsMCwwLDIuNzgxLjc2N2MxLjUzNCwwLDIuNDkzLS44NjMsMi40OTMtMi4wMTRzLS42NzEtMS43MjYtMi4yMDUtMi40Yy0xLjkxOC0uNjcxLTMuMTY0LTEuNzI2LTMuMTY0LTMuMzU2LDAtMS44MjIsMS41MzQtMy4yNiwzLjgzNi0zLjI2YTUuMTM1LDUuMTM1LDAsMCwxLDIuNTg5LjU3NWwtLjM4NCwxLjI0N2E1LjUxOSw1LjUxOSwwLDAsMC0yLjMtLjQ3OWMtMS42MywwLTIuMjA1Ljk1OS0yLjIwNSwxLjgyMiwwLDEuMTUxLjc2NywxLjYzLDIuNCwyLjMsMi4wMTQuNzY3LDMuMDY4LDEuNzI2LDMuMDY4LDMuNDUyLDAsMS44MjItMS4zNDIsMy40NTItNC4xMjMsMy40NTJhNS44MDcsNS44MDcsMCwwLDEtMy4wNjgtLjc2N1pcIiBzdHlsZT1cImZpbGw6I2M0MTcxOFwiLz48cGF0aCBkPVwiTTMwLDE2LjYyM2MtMS45MTgsMC0yLjExLDEuMTUxLTIuMTEsMS45MThhMTUuNjgsMTUuNjgsMCwwLDAsLjE5MiwyLjExLDE1LjczOCwxNS43MzgsMCwwLDEsLjE5MiwyLjIwNWMwLDIuNjg1LTEuNjMsMy42NDQtMy44MzYsMy42NDRoLS41NzVWMjUuMDYyaC40NzljMS40MzgsMCwyLjExLS44NjMsMi4xMS0yLjNhMTMsMTMsMCwwLDAtLjE5Mi0xLjkxOCwxNC4zMDYsMTQuMzA2LDAsMCwxLS4xOTItMi4wMTRjMC0xLjcyNi43NjctMi41ODksMS45MTgtMi44Nzd2LS4xYy0xLjE1MS0uMjg4LTEuOTE4LTEuMTUxLTEuOTE4LTIuODc3YTE0LjMwNiwxNC4zMDYsMCwwLDEsLjE5Mi0yLjAxNCwxMywxMywwLDAsMCwuMTkyLTEuOTE4YzAtMS40MzgtLjU3NS0yLjIwNS0yLjExLTIuM2gtLjQ3OVY1LjRoLjU3NWMyLjIwNSwwLDMuODM2LDEuMDU1LDMuODM2LDMuNDUyYTE3LjExOSwxNy4xMTksMCwwLDEtLjE5MiwyLjIwNSwxNy4xMTksMTcuMTE5LDAsMCwwLS4xOTIsMi4yMDVjMCwuOTU5LjI4OCwxLjkxOCwyLjExLDEuOTE4WlwiIHN0eWxlPVwiZmlsbDojYzQxNzE4XCIvPmAsXG4gIFwiQWRhXCI6IGA8cGF0aCBkPVwiTTI0LjU1NCwyMC4wNzVjLjIwOS4yNywxLjM1Ni45NjEsMS4zNywxLjI0NmE2LjkyMSw2LjkyMSwwLDAsMC0xLjQtLjMyNGMtLjQ2OC0uMTQyLS45NTEtLjI5My0xLjQxMi0uNDhhOS4yLDkuMiwwLDAsMS0yLjM3NS0xLjNBMy4xNDYsMy4xNDYsMCwwLDEsMTkuMywxNi43NWExLjcyMiwxLjcyMiwwLDAsMSwxLjc2Ny0xLjgyMiwzLjU4NCwzLjU4NCwwLDAsMSwxLjU5My4zMjFjLjE0Ni4wNjYsMS4zMS42MDYsMS4yNTYuODA5YTUuNSw1LjUsMCwwLDAtMS40MS0uMTEyYy0uNjQ5LjI0NC0uNC44MjgtLjE2OCwxLjMxMWE3Ljg3Nyw3Ljg3NywwLDAsMCwxLjA3OCwxLjU1NEMyMy41OCwxOS4wMDUsMjQuMywyMC4wODIsMjQuNTU0LDIwLjA3NVpcIiBzdHlsZT1cImZpbGw6IzBmMjNjM1wiLz48cGF0aCBkPVwiTTI0LjE0MSwxNi4yNzZjLjEyOC0uNTkuODE5LTEuMzg0LDEuMzQ0LS43NzNhNC4yLDQuMiwwLDAsMSwuNTc4LDEuOTE4Yy4xMi42NTYuMiwxLjMyNy4yNjEsMS45ODIuMDM4LjM3OS4zNCwxLjc5NC4xMjMsMi4wNzVhMjMuMjQsMjMuMjQsMCwwLDEtMi45MjItMi44MzgsMy43NjMsMy43NjMsMCwwLDEtLjkyNS0xLjdDMjIuNSwxNS44NjcsMjMuNDc5LDE2LjIxLDI0LjE0MSwxNi4yNzZaXCIgc3R5bGU9XCJmaWxsOiMxYTE5NzhcIi8+PHBhdGggZD1cIk0yNi4zLDE3Ljc4MWMuMTQxLS43MzItLjQwNi0yLjU5Mi0xLjA2Ny0yLjk0OWEuMDYuMDYsMCwwLDAsLjA0NC0uMDA3Yy0uMTU2LS40NDQtMS4zNTksMS4xMTYtMS4yMjgsMS4xNzQtLjMxNi0uMTM4Ljc3NC0xLjk4NC45ODgtMi4xNi43LS41NzgsMS4zNzItLjA4NiwxLjg0NS41NDNhNi4wMzYsNi4wMzYsMCwwLDEsLjczMyw0LjQzNCw0LjUsNC41LDAsMCwxLS40MjEsMS4zMTJjLS4xLjIyLS40NSwxLjEtLjY4MiwxLjE3NEExNC43NTQsMTQuNzU0LDAsMCwwLDI2LjMsMTcuNzgxWlwiIHN0eWxlPVwiZmlsbDojMGYyM2MzXCIvPjxwYXRoIGQ9XCJNMy42ODcsOC40Yy4xNzktLjE4OC0uMDQxLTEuNTI3LjMyNC0xLjU0OC4yNjItLjAxNS41NTMsMS43NDEuNjI3LDEuOTY4YTkuMiw5LjIsMCwwLDAsMS4xMjcsMi4zMjksNy41MjksNy41MjksMCwwLDAsNC4wMTYsMi45NzgsNC41NSw0LjU1LDAsMCwwLDIuMzY2LjJjLjkzMS0uMjA4LDEuODItLjU3NywyLjc1Ny0uNzY1LDEuMzUtLjI3LDMuMzQyLS4zNTIsNC40MzguNjQ3LjcuNjQxLjM3Ni43Ni4wNDMsMS40MjFhMi40NDUsMi40NDUsMCwwLDAsLjE3OCwyLjU2MmMuMjM1LjM0MiwxLjAzMy44MjcuNjc1LDEuMDk0LS41NjcuNDI0LTEuMjc3LS40NTItMS42MzYtLjc3Ni0xLjQtMS4yNjQtMi43MTEtMS4zMTMtNC40OTItMS4wNzRhOC45ODcsOC45ODcsMCwwLDEtNC44ODMtLjcwOEE5LjQ2OSw5LjQ2OSwwLDAsMSwzLjY4Nyw4LjRaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0xOS45NDEsMzBhMy42MTUsMy42MTUsMCwwLDEtMi4zMjUtLjgxN2MuNDY5LS4wOTIsMS4wMjEuMDI1LDEuNTA4LS4wNDRhOS43LDkuNywwLDAsMCwxLjc1NC0uNDNBMTAuNTM3LDEwLjUzNywwLDAsMCwyMy45LDI3LjE1NWE2LjU1LDYuNTUsMCwwLDAsMi43NTctNS4yMTRjLjE0OS0uMDg4LjMxNiwxLjAzNC4zMTksMS4wOTFhNS43ODksNS43ODksMCwwLDEtLjE5LDEuNzI3LDYuODY3LDYuODY3LDAsMCwxLTEuNDIzLDIuNzc0QTcuMjg2LDcuMjg2LDAsMCwxLDE5Ljk0MSwzMFpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTE4Ljk2MiwxOS4xMDlhNS43Niw1Ljc2LDAsMCwxLTIuMDUuODU5LDEzLjM4LDEzLjM4LDAsMCwxLTIuMjI0LjU0OSw4Ljg2MSw4Ljg2MSwwLDAsMS00LjQzNS0uNTEsOS45MzksOS45MzksMCwwLDEtMy44NDktMi40QzYuMDUyLDE3LjI0LDQuMywxNS4xOSw0Ljg1NiwxNC41NTdjLjI0OC0uMjgyLjg3NS44NDYsMSwuOTkyYTUsNSwwLDAsMCwxLjM1NywxLjExLDEwLjkxNywxMC45MTcsMCwwLDAsNC4wMzUsMS40NTYsNi42OTMsNi42OTMsMCwwLDAsMi4zNC0uMDk0LDEyLjc0MywxMi43NDMsMCwwLDEsMS42OTQtLjQ4NSw0LDQsMCwwLDEsMi4xMTMuNDU3QzE3LjczOSwxOC4xNjMsMTguOTE4LDE4LjczNiwxOC45NjIsMTkuMTA5WlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMjguMzEzLDE1LjA3OGExOS4yNzcsMTkuMjc3LDAsMCwxLS40NTMsMy43NzRjLS4xNzYtLjI0Mi4wMTYtMS40NywwLTEuNzkyYTYuMDMyLDYuMDMyLDAsMCwwLS4zODQtMi4wODdBNC45MjUsNC45MjUsMCwwLDAsMjYuMSwxMy4zMTJhMTQuNzI4LDE0LjcyOCwwLDAsMS0xLjI3LTEuNTM2Yy0xLjgzNy0yLjM4Mi0zLjI0NS01LjIxMS0yLjktOC4zLjAzNC0uMzA4LjA2OS0xLjQ0OC40MTEtMS40NDUuMTUyLDAsLjI2NiwxLjU2MS4yOSwxLjcxOGExMi41MjcsMTIuNTI3LDAsMCwwLDEuMjI0LDQuMTE2Yy42NywxLjIyMiwxLjk0NywyLjAyMywyLjgyNSwzLjFBNi41NzksNi41NzksMCwwLDEsMjguMzEzLDE1LjA3OFpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTE1LjcsMjYuOTM1YTEwLjg0NSwxMC44NDUsMCwwLDAsNi40MzYtLjY4Nyw2Ljk0MSw2Ljk0MSwwLDAsMCw0LjI3OC00LjQxOGMuMzE5LjItLjA0OCwxLjUyOS0uMTI4LDEuNzgxYTUuNzI2LDUuNzI2LDAsMCwxLTEuMDEsMS44MTMsOC45MzMsOC45MzMsMCwwLDEtMy4yNTcsMi41MTRDMjAuMzE2LDI4LjcxLDE2LjM1NywyOS41OSwxNS43LDI2LjkzNVpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTE5LjE1MSwxOS4zNzZjLjM2NywyLjEwNy0yLjk1NywzLjEyNC00LjQ3OCwzLjIxMy0xLjg1OS4xMS00LjkyOS0uMjkyLTYuMDYtMi4wMzEtLjY3My0xLjAzNS43ODEtLjA5LDEuMTg4LjA1OGE4LjY2Myw4LjY2MywwLDAsMCwzLjA2LjUsMTEuNiwxMS42LDAsMCwwLDMuMzA1LS41LDEzLjcyNSwxMy43MjUsMCwwLDAsMS41MzMtLjU3NkMxOCwxOS45MDgsMTguODIzLDE5LjM0OSwxOS4xNTEsMTkuMzc2WlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMjQuMTQyLDIzLjQ2Yy40LS45NDUtMS44ODMtMS41NzgtMi40NDUtMS44NThhNC44NTcsNC44NTcsMCwwLDEtMS4zMTUtLjg2N2MtLjE4MS0uMTgxLS44NzItLjkyLS44MDctMS4yMTlhNC45MTIsNC45MTIsMCwwLDEsMS4wODctLjE3NSw1LjkzLDUuOTMsMCwwLDEsLjg1NS41ODgsMTAuMzIzLDEwLjMyMywwLDAsMCwuOTY0LjVBMTUuNjE1LDE1LjYxNSwwLDAsMCwyNC42LDIxLjJjLjMwOC4wOSwxLjU0OS4yMDgsMS43MjcuNDI4QzI2LjI4NywyMS45MjQsMjQuMzU3LDIzLjY0OSwyNC4xNDIsMjMuNDZaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0yNi4xLDIyLjE3MmMuMjY1LjQzLTEuMDgsMS44MzEtMS4zNjMsMi4xMDVhOS4zNCw5LjM0LDAsMCwxLTIuNTY2LDEuNzI4LDcuNzQ4LDcuNzQ4LDAsMCwxLTIuNTYuNzUzYy0uNjc5LjA1OC0xLjk2Ni0uMTI0LTIuMTQxLS45NzlhNi45NTEsNi45NTEsMCwwLDEsMS4xNzctLjA4NmMuNDYyLS4wNTkuOTIxLS4xNDksMS4zNzYtLjI0NmExMy4wNjUsMTMuMDY1LDAsMCwwLDIuMTg0LS42NDUsMTEuNTA2LDExLjUwNiwwLDAsMCwyLjA4NC0xLjExLDEwLjg3MiwxMC44NzIsMCwwLDAsMS4wNzgtLjgyMkMyNS40NzQsMjIuNzgxLDI1Ljk4NiwyMi4xNjgsMjYuMSwyMi4xNzJaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0xOC43NTgsMTEuOTY1Yy0uMS0xLjMwOCwyLjYxMi0xLjMsMy4yNzEtMS4wOTJhNS45NzYsNS45NzYsMCwwLDEsMi45ODIsMi40NzVjLTEuMDgyLjgtMi40NDkuMDk0LTMuMy0uNjU0YTQuMzI0LDQuMzI0LDAsMCwwLTEuNDgxLTEuMDI5QzE5LjQyMSwxMS40LDE5LjQxMiwxMS43NTksMTguNzU4LDExLjk2NVpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTI1Ljc4MywxMy4zNDFjLS40NDQtLjAyOS0uMzE2LjA3MS0uNjQ3LS4yMTItLjM1OC0uMzA3LS42MTQtLjc5NS0uOTQ1LTEuMTQxLS41MzQtLjU1OC0xLjI0Mi0uODk1LTEuNzIzLTEuNDg1YTcuMjY5LDcuMjY5LDAsMCwxLTEuNjI0LTQuODQ4Yy4wMTgtMS40ODkuNDA3LjE4Ny41NTEuNjc1YTEyLjI3NiwxMi4yNzYsMCwwLDAsMS4xMjYsMi43MDgsNDYuMDU1LDQ2LjA1NSwwLDAsMCwzLjQsNC4zMjFDMjUuODgyLDEzLjM2MSwyNS44MjQsMTMuMzM4LDI1Ljc4MywxMy4zNDFaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0yMC4wNjgsMTQuNzU2Yy4wMzMtLjYyNS0uOTExLS43OTItMS4yMTEtMS40Mi0uMTY0LS4zNDMtLjIxMS0uNTY5LjAyOS0uNy4wODItLjA0NS4zODMuMDEyLjUtLjAyLjI3MS0uMDc2LjMzNS0uMjczLjU4MS0uNEExLjE5MywxLjE5MywwLDAsMSwyMS42LDEzLjIzNywxLjgyMSwxLjgyMSwwLDAsMSwyMC4wNjgsMTQuNzU2WlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMjAuNSwxNC43NDVhMS45MzEsMS45MzEsMCwwLDAsMS4zMjMtMS43Yy41MjQuMTM5LjkyOC42NTgsMS41MjEuNzcxYTIuNTg0LDIuNTg0LDAsMCwwLDEuMDI5LS4wMTdjLjIwNy0uMDQ1LjU0LS4yNzQuNzIxLS4yNTktLjAzMy4xNjMtLjQ2NC41NDYtLjU2NS43MTdhNC4yNDIsNC4yNDIsMCwwLDAtLjM4OC45Yy0uMjI5Ljc0MS0uMDYxLjczOS0uNzA5LjMxMWE0LjI4NCw0LjI4NCwwLDAsMC0xLjk1Ny0uNzJDMjEuMjA5LDE0LjcyMiwyMC41OTQsMTQuNzY3LDIwLjUsMTQuNzQ1WlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMTkuOTA1LDIwLjczNGEyLjAwOCwyLjAwOCwwLDAsMS0xLjQsMS43MTJjLS4yMDUuMDkxLTIuMDE4LjczMy0yLjAzMi4zNDgtLjAwNy0uMiwxLjYyNC0uOTU0LDEuODA5LTEuMTFhMy4zNTUsMy4zNTUsMCwwLDAsLjg2Ny0xLjA3MWMuMDU1LS4xMTIuMjMyLS45MjUuMjcxLS45NDNDMTkuNjQ0LDE5LjU2NCwxOS45MDgsMjAuNiwxOS45MDUsMjAuNzM0WlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMTEuMzczLDEyLjUzMmExMC42MjUsMTAuNjI1LDAsMCwxLDMuNzEtLjkxNCwxMC4yODIsMTAuMjgyLDAsMCwxLDEuODY1LjAyNGMuMzY2LjAzOSwxLjQ2OS4wNTQsMS43NC4zNDNhLjI1NS4yNTUsMCwwLDEtLjI3My4xNzNjLS4wMzcuMDc3LjI1MS4zNzEuMy40MjUtLjAzNC4wMzQtMS40NDUtLjQtMS41NzItLjQyNGExMC42MzIsMTAuNjMyLDAsMCwwLTIuMjgyLS4xMzQsMTYsMTYsMCwwLDAtMS44NDEuMTk0QTYuMjI0LDYuMjI0LDAsMCwxLDExLjM3MywxMi41MzJaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0yMi41MTIsMTAuNzMxYTEuODg4LDEuODg4LDAsMCwxLTEuNTE3LS42Yy0uMjQ3LS4zNDktLjczNy0xLjY5Mi0uMzg1LTIuMDIxLjIwOS0uMi4zODQuNjYyLjQ4NC44NDZBMTAuODIyLDEwLjgyMiwwLDAsMCwyMi41MTIsMTAuNzMxWlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMjcuNzg4LDE5LjJhMTkuMjEyLDE5LjIxMiwwLDAsMS0uNzQ5LDMuMzEzYy0uMTczLS4wNzctLjI3NS0uNzc4LS41NjItLjk1YTQuMDcsNC4wNywwLDAsMCwuNzYtMS4xNTRDMjcuMzg5LDIwLjEwNywyNy41NCwxOS4zNjMsMjcuNzg4LDE5LjJaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0xOS45ODEsMTEuODQzYy0uMTMyLjI2OC0uOTMyLDEuMS0xLjExOC40ODFDMTguNzU2LDExLjk2OCwxOS43MzksMTEuNDgzLDE5Ljk4MSwxMS44NDNabS0uNzQ3LjQ1Yy4yMjguMDA2LjAxMi0uMjQ4LjAxMi0uMjY2QzE5LjI0NSwxMS45ODQsMTguODc4LDEyLjI5MywxOS4yMzQsMTIuMjkzWlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPmAsXG4gIFwiQUxcIjogYDxwYXRoIGQ9XCJNMTEuNjE2LDcuOTg2QTEuNTU5LDEuNTU5LDAsMCwwLDEwLjE2LDdIMTAuMWExLjU1OCwxLjU1OCwwLDAsMC0xLjQ1Ni45ODZMMiwyNUg1LjgwNmwxLjAxNS0yLjgzNGg2LjYyMUwxNC40NTcsMjVoMy44Wk03Ljk0NCwxOC45NTZsMi4xODgtNi4xMTEsMi4xODgsNi4xMTZaXCIgc3R5bGU9XCJmaWxsOiMyZWE5OGVcIi8+PHBhdGggZD1cIk0yMy44MjksMjEuNjcxVjcuMTI5SDIwLjNWMjIuNzQ3QTIuMzQ2LDIuMzQ2LDAsMCwwLDIyLjU3LDI1SDMwVjIxLjY3MlpcIiBzdHlsZT1cImZpbGw6IzJlYTk4ZVwiLz5gLFxuICBcIkFOVExSNFwiOiBgPHBhdGggZD1cIk0xNC4xNzcsNy4yNzhhMi4wOCwyLjA4LDAsMCwxLDMuMDQxLS44QTMuNTcxLDMuNTcxLDAsMCwxLDE4LjIsOC4wMjJjMS4zNTYsMy4xMjIsMi45LDYuMTY1LDQuMTE5LDkuMzQ1LjY0NSwxLjUsMS40MjksMi45MzgsMS45OTQsNC40NjhhMS40NTUsMS40NTUsMCwwLDEtMi4yNTgsMS4zNzZjLTIuOC0xLjU3Mi01LjYyOC0zLjA5NC04LjM4NS00LjczMSwyLjAwOS4wMDgsNC4wMTgtLjAwOCw2LjAyNS4wMTNhMTkuNzA3LDE5LjcwNywwLDAsMC0xLjI4OC0yLjkxOGMtLjc4MS0xLjg1OC0xLjYtMy43LTIuMzU4LTUuNTY1YTkuNzgzLDkuNzgzLDAsMCwwLTEuMDMyLDIuMTI1Yy0xLjMsMy4xODItMi44Nyw2LjI0MS00LjEzNiw5LjQzNS0uMjgxLjU5LS40MjQsMS4zNDQtMS4wMzUsMS42OWExLjQ0NywxLjQ0NywwLDAsMS0yLjA5NC0uNzM4Yy0uMjQxLS42MS4xNTEtMS4yLjM4Mi0xLjc0My43NzktMS43MjUsMS42NDUtMy40MTMsMi4yODMtNS4yQzExLjY1LDEyLjgsMTIuOTE2LDEwLjA0MSwxNC4xNzcsNy4yNzhaXCIgc3R5bGU9XCJmaWxsOiNmZWZlZmVcIi8+PHBhdGggZD1cIk0xMy44MTcsMi4yQTEzLjkyMywxMy45MjMsMCwwLDEsMjkuNTI2LDEyLjU0OWExMy43MzMsMTMuNzMzLDAsMCwxLTIuMDgyLDExLjUxOUExNC4wNzQsMTQuMDc0LDAsMCwxLDcuNzM4LDI3LjI5M2ExMy44NTIsMTMuODUyLDAsMCwxLTUuNjE1LTkuNDgzQTE0LjE1MiwxNC4xNTIsMCwwLDEsMy40NTEsOS44NSwxMy45NjEsMTMuOTYxLDAsMCwxLDEzLjgxNywyLjJtLjM1OSw1LjA4Yy0xLjI2MSwyLjc2Mi0yLjUyNiw1LjUyNS0zLjc2Miw4LjMtLjYzOCwxLjc4Ni0xLjUsMy40NzMtMi4yODMsNS4yLS4yMzEuNTQyLS42MjMsMS4xMzMtLjM4MiwxLjc0M2ExLjQ0NywxLjQ0NywwLDAsMCwyLjA5NC43MzhjLjYxLS4zNDcuNzUzLTEuMSwxLjAzNS0xLjY5LDEuMjY2LTMuMTk0LDIuODMzLTYuMjUzLDQuMTM2LTkuNDM1YTkuNzgzLDkuNzgzLDAsMCwxLDEuMDMyLTIuMTI1Yy43NTYsMS44NjgsMS41NzcsMy43MDcsMi4zNTgsNS41NjVhMTkuNzA3LDE5LjcwNywwLDAsMSwxLjI4OCwyLjkxOGMtMi4wMDctLjAyLTQuMDE2LS4wMDUtNi4wMjUtLjAxMywyLjc1NywxLjYzNyw1LjU4OCwzLjE1OSw4LjM4NSw0LjczMWExLjQ1NSwxLjQ1NSwwLDAsMCwyLjI1OC0xLjM3NmMtLjU2NS0xLjUyOS0xLjM0OS0yLjk3MS0xLjk5NC00LjQ2OC0xLjIyLTMuMTc5LTIuNzYyLTYuMjIzLTQuMTE5LTkuMzQ1YTMuNTcxLDMuNTcxLDAsMCwwLS45ODItMS41NDRBMi4wOCwyLjA4LDAsMCwwLDE0LjE3Nyw3LjI3OFpcIiBzdHlsZT1cImZpbGw6I2U0NGEzMlwiLz5gLFxuICBcIkFwYWNoZSBDb25maWd1cmF0aW9uXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCItNTYwMi42ODJcIiB5MT1cIjc2OC41NDFcIiB4Mj1cIi01NTk4LjcyN1wiIHkyPVwiNzYzLjkxN1wiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDAuNDIzLCAtMC45MDYsIC0wLjkwNiwgLTAuNDIzLCAzMDgyLjg1MywgLTQ3NDguNTUxKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2Y2OTkyM1wiLz48c3RvcCBvZmZzZXQ9XCIwLjMxMlwiIHN0b3AtY29sb3I9XCIjZjc5YTIzXCIvPjxzdG9wIG9mZnNldD1cIjAuODM4XCIgc3RvcC1jb2xvcj1cIiNlOTc4MjZcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCItNTYzMS45NTJcIiB5MT1cIjc2OS4wNTJcIiB4Mj1cIi01NjAzLjczN1wiIHkyPVwiNzY5LjA1MlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDAuNDIzLCAtMC45MDYsIC0wLjkwNiwgLTAuNDIzLCAzMDgyLjg1MywgLTQ3NDguNTUxKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjAuMzIzXCIgc3RvcC1jb2xvcj1cIiM5ZTIwNjRcIi8+PHN0b3Agb2Zmc2V0PVwiMC42M1wiIHN0b3AtY29sb3I9XCIjYzkyMDM3XCIvPjxzdG9wIG9mZnNldD1cIjAuNzUxXCIgc3RvcC1jb2xvcj1cIiNjZDIzMzVcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZTk3ODI2XCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiY1wiIHgxPVwiLTU2MjguNTQ2XCIgeTE9XCI3NjYuMjIxXCIgeDI9XCItNTYxMS43MzNcIiB5Mj1cIjc2Ni4yMjFcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgwLjQyMywgLTAuOTA2LCAtMC45MDYsIC0wLjQyMywgMzA4Mi44NTMsIC00NzQ4LjU1MSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMyODI2NjJcIi8+PHN0b3Agb2Zmc2V0PVwiMC4wOTVcIiBzdG9wLWNvbG9yPVwiIzY2MmU4ZFwiLz48c3RvcCBvZmZzZXQ9XCIwLjc4OFwiIHN0b3AtY29sb3I9XCIjOWYyMDY0XCIvPjxzdG9wIG9mZnNldD1cIjAuOTQ5XCIgc3RvcC1jb2xvcj1cIiNjZDIwMzJcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJkXCIgeDE9XCItNTYzMC4zNjdcIiB5MT1cIjc2OS4zMTZcIiB4Mj1cIi01NjAyLjE1MlwiIHkyPVwiNzY5LjMxNlwiIHhsaW5rOmhyZWY9XCIjYlwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJlXCIgeDE9XCItNTYyOC4zMVwiIHkxPVwiNzY4LjkzM1wiIHgyPVwiLTU2MTMuNDgyXCIgeTI9XCI3NjguOTMzXCIgeGxpbms6aHJlZj1cIiNjXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImZcIiB4MT1cIi01NjMwLjM2N1wiIHkxPVwiNzY2LjM5NFwiIHgyPVwiLTU2MDIuMTUyXCIgeTI9XCI3NjYuMzk0XCIgeGxpbms6aHJlZj1cIiNiXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImdcIiB4MT1cIi01NjMyLjExOFwiIHkxPVwiNzY2LjUzOVwiIHgyPVwiLTU2MDMuOTAyXCIgeTI9XCI3NjYuNTM5XCIgeGxpbms6aHJlZj1cIiNiXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImhcIiB4MT1cIi01NjMwLjM2N1wiIHkxPVwiNzY1LjUyNlwiIHgyPVwiLTU2MDIuMTUyXCIgeTI9XCI3NjUuNTI2XCIgeGxpbms6aHJlZj1cIiNiXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImlcIiB4MT1cIi01NjMwLjM2N1wiIHkxPVwiNzY1LjYyNVwiIHgyPVwiLTU2MDIuMTUyXCIgeTI9XCI3NjUuNjI1XCIgeGxpbms6aHJlZj1cIiNiXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImpcIiB4MT1cIi01NjE0LjUxNlwiIHkxPVwiNzY1LjY0NVwiIHgyPVwiLTU2MDguMjhcIiB5Mj1cIjc2NS42NDVcIiB4bGluazpocmVmPVwiI2JcIi8+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfYXBhY2hlPC90aXRsZT48cGF0aCBkPVwiTTE5Ljk5MywyLjEzM2ExMC4yNjcsMTAuMjY3LDAsMCwwLTIuMDQsMi4wNTZsLjgsMS41MWExOS43MzMsMTkuNzMzLDAsMCwxLDEuNzA4LTIuMTQ0Yy4wNDQtLjA0OS4wNjgtLjA3Mi4wNjgtLjA3MmwtLjA2OC4wNzJhMTcuODY1LDE3Ljg2NSwwLDAsMC0xLjYsMi4xNzQsMzAuMSwzMC4xLDAsMCwwLDMuMTExLS4zODUsMy4yODgsMy4yODgsMCwwLDAtLjMtMi41UzIwLjksMS42LDE5Ljk5MywyLjEzM1pcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTE4LjYzOCwxMC43NDlsLjAxOCwwLS4xMTUuMDEzLS4wMjEuMDA5WlwiIHN0eWxlPVwiZmlsbDpub25lXCIvPjxwYXRoIGQ9XCJNMTcuODIxLDEzLjQ1NWMtLjA2Ni4wMTUtLjEzMi4wMjYtLjIuMDM2QzE3LjY4OSwxMy40ODEsMTcuNzU2LDEzLjQ2OSwxNy44MjEsMTMuNDU1WlwiIHN0eWxlPVwiZmlsbDpub25lXCIvPjxwYXRoIGQ9XCJNMTIuMjcsMTkuNTI0Yy4wMDktLjAyMy4wMTctLjA0NS4wMjUtLjA2OHEuMjY0LS43LjUyMy0xLjM1Ny4yOTEtLjc0MS41NzUtMS40MzYuMy0uNzMzLjU5LTEuNDE4LjMwNS0uNzE4LjYtMS4zODQuMjQtLjU0Mi40NzQtMS4wNDkuMDc4LS4xNjkuMTU1LS4zMzUuMTUzLS4zMjkuMy0uNjQ1LjEzOC0uMjkxLjI3NC0uNTdjLjAzLS4wNjIuMDYtLjEyMy4wOS0uMTg1bC4wMTUtLjAzLS4xLjAxMS0uMDc4LS4xNTRjLS4wMDcuMDE1LS4wMTUuMDMtLjAyMy4wNDVxLS4yMTEuNDE4LS40MTcuODQ1LS4xMTkuMjQ2LS4yMzguNDk1LS4zMjguNjg5LS42NDUsMS4zODlUMTMuNzY2LDE1LjFxLS4zLjctLjU5NCwxLjR0LS41NjcsMS4zODdxLS4yODkuNzItLjU2MiwxLjQyNi0uMDYyLjE1OS0uMTIzLjMxOC0uMjE5LjU2OS0uNDI2LDEuMTI0bC4xMjMuMjQzLjExLS4wMTIuMDEyLS4wMzNRMTIuMDA4LDIwLjIxNiwxMi4yNywxOS41MjRaXCIgc3R5bGU9XCJmaWxsOm5vbmVcIi8+PHBhdGggZD1cIk0xNy41NywxMy41WlwiIHN0eWxlPVwiZmlsbDpub25lXCIvPjxwYXRoIGQ9XCJNMTcuMzA1LDE0LjgxOGwtLjMxNS4wNTVoMGwuMTYxLS4wMjVDMTcuMiwxNC44MzksMTcuMjUzLDE0LjgyOSwxNy4zMDUsMTQuODE4WlwiIHN0eWxlPVwiZmlsbDojYmUyMDJlXCIvPjxwYXRoIGQ9XCJNMTcuMzA1LDE0LjgxOGwtLjMxNS4wNTVoMGwuMTYxLS4wMjVDMTcuMiwxNC44MzksMTcuMjUzLDE0LjgyOSwxNy4zMDUsMTQuODE4WlwiIHN0eWxlPVwiZmlsbDojYmUyMDJlO29wYWNpdHk6MC4zNDk5OTk5OTQwMzk1MzU1O2lzb2xhdGlvbjppc29sYXRlXCIvPjxwYXRoIGQ9XCJNMTcuNTczLDEzLjVoMGwuMDUtLjAwN2MuMDY4LS4wMS4xMzUtLjAyMi4yLS4wMzZsLS4yNDguMDQyWlwiIHN0eWxlPVwiZmlsbDojYmUyMDJlXCIvPjxwYXRoIGQ9XCJNMTcuNTczLDEzLjVoMGwuMDUtLjAwN2MuMDY4LS4wMS4xMzUtLjAyMi4yLS4wMzZsLS4yNDguMDQyWlwiIHN0eWxlPVwiZmlsbDojYmUyMDJlO29wYWNpdHk6MC4zNDk5OTk5OTQwMzk1MzU1O2lzb2xhdGlvbjppc29sYXRlXCIvPjxwYXRoIGQ9XCJNMTYuMzk0LDkuNnEuMzY1LS42ODIuNzM5LTEuMzMyLjM4OC0uNjc0Ljc4NC0xLjMwNWwuMDQ2LS4wNzVxLjM5Mi0uNjIuNzktMS4xOTFsLS44LTEuNTEtLjE4Mi4yMjVjLS4yMzEuMjg4LS40Ny42LS43MTYuOTI1LS4yNzcuMzctLjU2Mi43NjQtLjg1MSwxLjE3OS0uMjY3LjM4My0uNTM4Ljc4NC0uODA5LDEuMi0uMjMxLjM1My0uNDYyLjcxNy0uNjkyLDEuMDlsLS4wMjYuMDQyTDE1LjcxOCwxMC45UTE2LjA1MiwxMC4yNDQsMTYuMzk0LDkuNlpcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTExLjY1MSwyMS4xOTJxLS4yMDcuNTY4LS40MTUsMS4xNTlsLS4wMDYuMDE3LS4wNTkuMTY3Yy0uMDkzLjI2Ni0uMTc1LjUtLjM2MSwxLjA0OWEyLjEwNywyLjEwNywwLDAsMSwuNzg2LjkyNiwxLjY4LDEuNjgsMCwwLDAtLjU0NC0xLjE1NCwzLjYyMSwzLjYyMSwwLDAsMCwzLjQ4OS0xLjQyLDIuNzkxLDIuNzkxLDAsMCwwLC4xNjUtLjMxMywxLjQ1MSwxLjQ1MSwwLDAsMS0xLjQuNTEzbDAsMCwwLDBhNC4wNTksNC4wNTksMCwwLDAsMi4wNDYtMS42NzJjLjExMS0uMTc4LjIxOC0uMzcyLjMyOC0uNTg3YTMuMywzLjMsMCwwLDEtMy4xMDksMS4wMWwtLjg0Mi4wOTJDMTEuNywyMS4wNSwxMS42NzcsMjEuMTIxLDExLjY1MSwyMS4xOTJaXCIgc3R5bGU9XCJmaWxsOnVybCgjYylcIi8+PHBhdGggZD1cIk0xMi4wNDQsMTkuMzA2cS4yNzMtLjcwNi41NjItMS40MjYuMjc2LS42OS41NjctMS4zODd0LjU5NC0xLjRxLjMwOC0uNzExLjYyOS0xLjQxOXQuNjQ1LTEuMzg5cS4xMTgtLjI0OC4yMzgtLjQ5NS4yMDctLjQyNi40MTctLjg0NWMuMDA3LS4wMTUuMDE1LS4wMy4wMjMtLjA0NUwxNC42NzcsOC44NDdsLS4wNTEuMDgzYy0uMjQyLjQtLjQ4NC44LS43MjEsMS4yMTZzLS40NzUuODQ0LS43LDEuMjc2cS0uMjkxLjU0Ny0uNTY4LDEuMWwtLjExLjIyNWMtLjIyNy40NjctLjQzMi45MTgtLjYxNywxLjM1MnEtLjMxNS43MzctLjU1NiwxLjQwNmMtLjEwNy4yOTMtLjIuNTc2LS4yOTIuODQ3LS4wNzMuMjMyLS4xNDIuNDY0LS4yMDguN3EtLjIzNC44MTgtLjQsMS42MzFMMTEuNSwyMC43NDhxLjIwOC0uNTU0LjQyNi0xLjEyNFpcIiBzdHlsZT1cImZpbGw6dXJsKCNkKVwiLz48cGF0aCBkPVwiTTEwLjQzNSwxOC43NTVhMTYuMDcsMTYuMDcsMCwwLDAtLjI3MiwxLjk3NGMwLC4wMjMsMCwuMDQ2LS4wMDUuMDY5YTQuMTUsNC4xNSwwLDAsMC0xLjItMS4wMjksNS44MjUsNS44MjUsMCwwLDEsMS4xNzIsMi42OTMsMi42NDIsMi42NDIsMCwwLDEtMS4zMjUtLjIyNiwyLjY2MiwyLjY2MiwwLDAsMCwxLjEzLjY4NiwzLjI0NywzLjI0NywwLDAsMC0xLjU3MS43ODMsMy4zNTksMy4zNTksMCwwLDEsMS44NjEtLjM0MkM5LjUxLDI1LjM4OSw4Ljc5MywyNy42MjYsOC4wNzYsMzBhLjYyNS42MjUsMCwwLDAsLjQyNS0uNDEzYy4xMjgtLjQzLjk3Ni0zLjI1MSwyLjMwNi02Ljk1OWwuMTE1LS4zMTguMDMyLS4wODlxLjIxMS0uNTgzLjQzNy0xLjE5bC4xLS4yNzcsMC0uMDA1TDEwLjQ1LDE4LjY4NEMxMC40NDUsMTguNzA3LDEwLjQzOSwxOC43MzEsMTAuNDM1LDE4Ljc1NVpcIiBzdHlsZT1cImZpbGw6dXJsKCNlKVwiLz48cGF0aCBkPVwiTTE1Ljg4LDExLjA3OGwtLjA5LjE4NXEtLjEzNS4yNzktLjI3NC41Ny0uMTUuMzE1LS4zLjY0NWMtLjA1Mi4xMTEtLjEuMjIyLS4xNTUuMzM1cS0uMjM0LjUwOC0uNDc0LDEuMDQ5LS4zLjY2Ni0uNiwxLjM4NC0uMjkxLjY4NS0uNTksMS40MTgtLjI4NC43LS41NzUsMS40MzYtLjI1OS42NjEtLjUyMywxLjM1N2MtLjAwOS4wMjMtLjAxNy4wNDUtLjAyNS4wNjhxLS4yNjIuNjkzLS41MjksMS40MjJsLS4wMTIuMDMzLjg0Mi0uMDkyLS4wNS0uMDA5YTYsNiwwLDAsMCwzLjIxLTEuODA3LDcuOTg0LDcuOTg0LDAsMCwwLDEuMS0xLjUyNCwxMy4xMzksMTMuMTM5LDAsMCwwLC43MDYtMS40NjdjLjE5NS0uNDcyLjM4Mi0uOTgyLjU2Mi0xLjUzNmEzLjA1MywzLjA1MywwLDAsMS0uNzg4LjI3NGMtLjA1MS4wMTEtLjEuMDIxLS4xNTYuMDNzLS4xMDcuMDE4LS4xNjEuMDI1aDBhMy42NjgsMy42NjgsMCwwLDAsMS45NjItMS45MTMsMy4zNDQsMy4zNDQsMCwwLDEtMS4xMy40OTVjLS4wNjYuMDE1LS4xMzIuMDI2LS4yLjAzNmwtLjA1LjAwN2gwYTMuODIxLDMuODIxLDAsMCwwLC44MzktLjQ2OWMuMDUxLS4wMzguMS0uMDc4LjE0OC0uMTIuMDczLS4wNjMuMTQyLS4xMjkuMjA4LS4yLjA0Mi0uMDQ0LjA4My0uMDkuMTIzLS4xMzhhMy4yNywzLjI3LDAsMCwwLC4yNjMtLjM2MmMuMDI1LS4wNC4wNS0uMDguMDc0LS4xMjIuMDMxLS4wNi4wNjEtLjExOS4wOS0uMTc4LjEzMS0uMjY0LjIzNi0uNS4zMTktLjcwNi4wNDItLjEuMDc4LS4yLjEwOS0uMjg4LjAxMy0uMDM1LjAyNS0uMDcuMDM2LS4xLjAzMy0uMS4wNi0uMTg3LjA4MS0uMjY1YTIuNjA1LDIuNjA1LDAsMCwwLC4wNjItLjI3NWgwYTEuMDEsMS4wMSwwLDAsMS0uMTA5LjA3NSwzLjk2NSwzLjk2NSwwLDAsMS0xLjE2Mi40bC43NzMtLjA4NS0uNzczLjA4NS0uMDE4LDAtLjExOS4wMTkuMDIxLS4wMDktMi42NDUuMjlaXCIgc3R5bGU9XCJmaWxsOnVybCgjZilcIi8+PHBhdGggZD1cIk0xOC44NTgsNS43M2MtLjIzNS4zNjEtLjQ5Mi43NzEtLjc2OCwxLjIzNmwtLjA0NC4wNzRxLS4zNTguNi0uNzU5LDEuMzI3LS4zNDYuNjI2LS43MTksMS4zNDctLjMyNi42MjktLjY3MiwxLjMzNmwyLjY0NS0uMjlBMy4yMTYsMy4yMTYsMCwwLDAsMTkuOTksOS42MmMuMDg5LS4xMjguMTc4LS4yNjIuMjY3LS40LjI3Mi0uNDI0LjUzOC0uODkxLjc3Ni0xLjM1NWExNC4wNzQsMTQuMDc0LDAsMCwwLC41ODgtMS4yOTQsNi44LDYuOCwwLDAsMCwuMjMzLS43Yy4wNDgtLjE4NC4wODYtLjM1OC4xMTUtLjUyNEEzMC4xNTIsMzAuMTUyLDAsMCwxLDE4Ljg1OCw1LjczWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2cpXCIvPjxwYXRoIGQ9XCJNMTcuMTQ5LDE0Ljg0OGMtLjA1My4wMDktLjEwNy4wMTgtLjE2MS4wMjVoMEMxNy4wNDIsMTQuODY2LDE3LjEsMTQuODU3LDE3LjE0OSwxNC44NDhaXCIgc3R5bGU9XCJmaWxsOiNiZTIwMmVcIi8+PHBhdGggZD1cIk0xNy4xNDksMTQuODQ4Yy0uMDUzLjAwOS0uMTA3LjAxOC0uMTYxLjAyNWgwQzE3LjA0MiwxNC44NjYsMTcuMSwxNC44NTcsMTcuMTQ5LDE0Ljg0OFpcIiBzdHlsZT1cImZpbGw6I2JlMjAyZTtvcGFjaXR5OjAuMzQ5OTk5OTk0MDM5NTM1NTtpc29sYXRpb246aXNvbGF0ZVwiLz48cGF0aCBkPVwiTTE3LjE0OSwxNC44NDhjLS4wNTMuMDA5LS4xMDcuMDE4LS4xNjEuMDI1aDBDMTcuMDQyLDE0Ljg2NiwxNy4xLDE0Ljg1NywxNy4xNDksMTQuODQ4WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2gpXCIvPjxwYXRoIGQ9XCJNMTcuNTcsMTMuNWwuMDUtLjAwNy0uMDUuMDA3WlwiIHN0eWxlPVwiZmlsbDojYmUyMDJlXCIvPjxwYXRoIGQ9XCJNMTcuNTcsMTMuNWwuMDUtLjAwNy0uMDUuMDA3WlwiIHN0eWxlPVwiZmlsbDojYmUyMDJlO29wYWNpdHk6MC4zNDk5OTk5OTQwMzk1MzU1O2lzb2xhdGlvbjppc29sYXRlXCIvPjxwYXRoIGQ9XCJNMTcuNTcsMTMuNWwuMDUtLjAwNy0uMDUuMDA3WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2kpXCIvPjxwYXRoIGQ9XCJNMTcuNTcyLDEzLjVoMFpcIiBzdHlsZT1cImZpbGw6I2JlMjAyZVwiLz48cGF0aCBkPVwiTTE3LjU3MiwxMy41aDBaXCIgc3R5bGU9XCJmaWxsOiNiZTIwMmU7b3BhY2l0eTowLjM0OTk5OTk5NDAzOTUzNTU7aXNvbGF0aW9uOmlzb2xhdGVcIi8+PHBhdGggZD1cIk0xNy41NzIsMTMuNWgwWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2opXCIvPmAsXG4gIFwiQXBleFwiOiBgPHBhdGggZD1cIk0xMy42NTIsOC4zMzhBNC45MDYsNC45MDYsMCwwLDEsMTcuMiw2LjgxNGE0Ljk1Nyw0Ljk1NywwLDAsMSw0LjMyLDIuNTYsNS45NzIsNS45NzIsMCwwLDEsMi40NDItLjUxOSw2LjA4OSw2LjA4OSwwLDEsMS0xLjE4OSwxMi4wNiw0LjQxMiw0LjQxMiwwLDAsMS01Ljc4MiwxLjgxNkE1LjAzNCw1LjAzNCwwLDAsMSw3LjYzNCwyMi41YTQuNjQ2LDQuNjQ2LDAsMCwxLS45Ni4xLDQuNzMyLDQuNzMyLDAsMCwxLTIuMzM3LTguODEyLDUuNDM4LDUuNDM4LDAsMCwxLDkuMzE1LTUuNDUzXCIgc3R5bGU9XCJmaWxsOiMwZjliZDdcIi8+PHBhdGggZD1cIk0yNS4zNzYsMzAuOTY2aC0uNTYxYTQuNjU4LDQuNjU4LDAsMCwxLTEuMjg0LS4xMzcsMS45LDEuOSwwLDAsMS0uODE4LS40ODIsMS43MjYsMS43MjYsMCwwLDEtLjQ1NS0uODQzLDYuNzcsNi43NywwLDAsMS0uMTA2LTEuNDEzLDUuODg5LDUuODg5LDAsMCwwLS4wODQtMS4zMywxLDEsMCwwLDAtLjMtLjU0NCwxLjIyMywxLjIyMywwLDAsMC0uNjYtLjE3OWwtLjIzNi0uMDE0VjI0LjE0NWwuMjM2LS4wMTRhMS40ODIsMS40ODIsMCwwLDAsLjU0OS0uMS43MDYuNzA2LDAsMCwwLC4yNzMtLjI2NCwxLjM5NCwxLjM5NCwwLDAsMCwuMTgxLS41MjksNi42ODMsNi42ODMsMCwwLDAsLjA0NC0uOTM5LDguMTMyLDguMTMyLDAsMCwxLC4xMTItMS42NDMsMS43LDEuNywwLDAsMSwuNDQ4LS44NDEsMi4xNDQsMi4xNDQsMCwwLDEsLjkwNi0uNDkyLDQuNTE0LDQuNTE0LDAsMCwxLDEuMi0uMTE2aC41NjF2MS45aC0uMjVhMi41ODksMi41ODksMCwwLDAtLjc0My4wNTYuMjg0LjI4NCwwLDAsMC0uMTQ4LjExNy44MzkuODM5LDAsMCwwLS4wNTQuMzg2cTAsLjM3Mi0uMDUzLDEuNDEzYTMuNzQsMy43NCwwLDAsMS0uMTY2LDEuMDA5LDEuOTQ1LDEuOTQ1LDAsMCwxLS42OTMsMSwyLjAxLDIuMDEsMCwwLDEsLjcsMS4wNDQsNC42MjcsNC42MjcsMCwwLDEsLjE2MywxLjA3OWMuMDI3LjY1Ny4wNDEsMS4wNzQuMDQxLDEuMjU2YS44NzEuODcxLDAsMCwwLC4wNTcuNDA4QS4zNDMuMzQzLDAsMCwwLDI0LjQsMjlhMi4zODIsMi4zODIsMCwwLDAsLjcyOC4wNmguMjVaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0yMS4xMTgsMjUuNzg4VjI0LjM4MmExLjc1MiwxLjc1MiwwLDAsMCwuNjQ1LS4xMjkuOTM2LjkzNiwwLDAsMCwuMzc1LS4zNTQsMS42MjEsMS42MjEsMCwwLDAsLjIxNy0uNjI0QTYuODgsNi44OCwwLDAsMCwyMi40LDIyLjNhOCw4LDAsMCwxLC4xMDUtMS41ODUsMS40NTYsMS40NTYsMCwwLDEsLjM4MS0uNzIxLDEuOSwxLjksMCwwLDEsLjgtLjQzMSw0LjMzNiw0LjMzNiwwLDAsMSwxLjEyNS0uMTA1aC4zMTF2MS40YTIuODc2LDIuODc2LDAsMCwwLS44MzUuMDczLjUzLjUzLDAsMCwwLS4yNzIuMjIzLDEuMDc5LDEuMDc5LDAsMCwwLS4wODguNTEzcTAsLjM2OS0uMDUzLDEuNGEzLjUzMSwzLjUzMSwwLDAsMS0uMTUyLjk0LDEuOTE4LDEuOTE4LDAsMCwxLS4zMTMuNTk1LDIuNDcsMi40NywwLDAsMS0uNTgzLjQ4NiwyLjA0NSwyLjA0NSwwLDAsMSwuNTY1LjQ2NiwxLjg2OSwxLjg2OSwwLDAsMSwuMzM3LjY0Nyw0LjQxLDQuNDEsMCwwLDEsLjE1MiwxLjAycS4wNDEuOTczLjA0MSwxLjI0MmExLjEsMS4xLDAsMCwwLC4wOTQuNTM5LjU4NC41ODQsMCwwLDAsLjI4NC4yMzEsMi42NDksMi42NDksMCwwLDAsLjgyMy4wNzl2MS40MDZoLS4zMTFBNC40NzQsNC40NzQsMCwwLDEsMjMuNiwzMC41OWExLjY0NCwxLjY0NCwwLDAsMS0uNzEyLS40MTksMS40NzgsMS40NzgsMCwwLDEtLjM5LS43MjQsNi42MjEsNi42MjEsMCwwLDEtLjEtMS4zNTYsNi4zNzQsNi4zNzQsMCwwLDAtLjA5NC0xLjQsMS4yMzIsMS4yMzIsMCwwLDAtLjM5LS42NzFBMS40MzEsMS40MzEsMCwwLDAsMjEuMTE4LDI1Ljc4OFpcIiBzdHlsZT1cImZpbGw6IzAwNzJhMFwiLz48cGF0aCBkPVwiTTI3LjAxMSwzMC45NjZIMjYuNDVWMjkuMDU5aC4yNUEyLjMyOSwyLjMyOSwwLDAsMCwyNy40MjYsMjlhLjMyMy4zMjMsMCwwLDAsLjE2NS0uMTI3LjgxMi44MTIsMCwwLDAsLjA1OC0uMzc5cTAtLjM2LjA1LTEuMzc1YTMuNzI1LDMuNzI1LDAsMCwxLC4xNzMtMS4wNDcsMi4yMjMsMi4yMjMsMCwwLDEsLjM4Ny0uNywyLjE0NSwyLjE0NSwwLDAsMSwuMy0uMjkyLDIuMTQxLDIuMTQxLDAsMCwxLS40LS40LDIuNjEyLDIuNjEyLDAsMCwxLS40MjEtMS4wOTIsMTcuNTI1LDE3LjUyNSwwLDAsMS0uMS0xLjg0MSwxLjM1NywxLjM1NywwLDAsMC0uMDUzLS40NzljLS4wMDgtLjAxNi0uMDMxLS4wNjItLjEzNi0uMTA2YTIuNTI0LDIuNTI0LDAsMCwwLS43NTctLjA2aC0uMjVWMTkuMmguNTYxYTQuNzkzLDQuNzkzLDAsMCwxLDEuMjgzLjEzMywxLjg0MSwxLjg0MSwwLDAsMSwuODE4LjQ4NSwxLjc4MSwxLjc4MSwwLDAsMSwuNDUzLjg0Myw2LjYsNi42LDAsMCwxLC4xMDksMS40MTQsNi4zNTksNi4zNTksMCwwLDAsLjA3OSwxLjMzNi45OTIuOTkyLDAsMCwwLC4zLjUzNywxLjIyNiwxLjIyNiwwLDAsMCwuNjY0LjE4bC4yMzYuMDE0djEuODc5bC0uMjM2LjAxNGExLjQ4MiwxLjQ4MiwwLDAsMC0uNTQ5LjEuNjg2LjY4NiwwLDAsMC0uMjcuMjYyLDEuNDg0LDEuNDg0LDAsMCwwLS4xODYuNTM0LDYuNzQzLDYuNzQzLDAsMCwwLS4wNDMuOTMxLDguMzgzLDguMzgzLDAsMCwxLS4xMDgsMS42NDQsMS42OTQsMS42OTQsMCwwLDEtLjQ0Ni44NDYsMi4xNDMsMi4xNDMsMCwwLDEtLjkxMy40OTJBNC41LDQuNSwwLDAsMSwyNy4wMTEsMzAuOTY2WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMzAuNzA4LDI1Ljc4OGExLjc1MiwxLjc1MiwwLDAsMC0uNjQ1LjEyOS45MTguOTE4LDAsMCwwLS4zNzIuMzU0LDEuNzI1LDEuNzI1LDAsMCwwLS4yMi42MjQsNi44Miw2LjgyLDAsMCwwLS4wNDcuOTczLDguMjcsOC4yNywwLDAsMS0uMSwxLjU4OCwxLjQzOSwxLjQzOSwwLDAsMS0uMzc4LjcyNCwxLjksMS45LDAsMCwxLS44MDkuNDMxLDQuMzM2LDQuMzM2LDAsMCwxLTEuMTI1LjEwNUgyNi43VjI5LjMxYTIuNjUyLDIuNjUyLDAsMCwwLC44Mi0uMDc5QS41NzIuNTcyLDAsMCwwLDI3LjgsMjksMS4wNSwxLjA1LDAsMCwwLDI3LjksMjguNXEwLS4zNTcuMDUtMS4zNjVhMy41MywzLjUzLDAsMCwxLC4xNTgtLjk3NiwxLjk3NiwxLjk3NiwwLDAsMSwuMzQzLS42MjFBMi4wMzgsMi4wMzgsMCwwLDEsMjksMjUuMDg1YTIuNDE2LDIuNDE2LDAsMCwxLS42MzMtLjU1MSwyLjMzOSwyLjMzOSwwLDAsMS0uMzc1LS45ODQsMTcuNTY0LDE3LjU2NCwwLDAsMS0uMDk0LTEuOCwxLjU3MSwxLjU3MSwwLDAsMC0uMDc5LS41ODYuNDg3LjQ4NywwLDAsMC0uMjY0LS4yMjYsMi44LDIuOCwwLDAsMC0uODUzLS4wNzl2LTEuNGguMzExYTQuNTc2LDQuNTc2LDAsMCwxLDEuMjEzLjEyMywxLjU4NywxLjU4NywwLDAsMSwuNzA5LjQxOSwxLjUyOSwxLjUyOSwwLDAsMSwuMzkuNzI3LDYuNDM2LDYuNDM2LDAsMCwxLC4xLDEuMzU2LDYuODQyLDYuODQyLDAsMCwwLC4wODgsMS40LDEuMjIzLDEuMjIzLDAsMCwwLC4zOTMuNjcxLDEuNDQ3LDEuNDQ3LDAsMCwwLC44LjIzMVpcIiBzdHlsZT1cImZpbGw6IzAwNzJhMFwiLz5gLFxuICBcIkFQTFwiOiBgPHBhdGggZD1cIk0zMCwyOC4yNzUsMTYsMiwyLDI4LjI3NUgxNC4xNjJWMzBoMy42NzZWMjguMjc1Wk0xNy44MzgsMjQuODI2VjEzLjE2MWw2LjIxNSwxMS42NjVabS05Ljg5MSwwLDYuMjE1LTExLjY2NVYyNC44MjZaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+YCxcbiAgXCJBcHBsZVNjcmlwdFwiOiBgPHBhdGggZD1cIk0xNy4xODEsNC40MzdBNS45OTMsNS45OTMsMCwwLDEsMjEuNTc5LDJhNS45NzksNS45NzksMCwwLDEtMS40NDcsNC40NzYsNC43MjksNC43MjksMCwwLDEtNC4xNywxLjk2MUE1LjIsNS4yLDAsMCwxLDE3LjE4MSw0LjQzN1pcIiBzdHlsZT1cImZpbGw6I2E4YzJhYlwiLz48cGF0aCBkPVwiTTE2LjIsMTAuMDM0Yy45NDYsMCwyLjctMS4zLDQuOTg5LTEuM2E2LjI0OSw2LjI0OSwwLDAsMSw1LjQ4NCwyLjgsNi4wOCw2LjA4LDAsMCwwLTMuMDI4LDUuMyw2LjIzNSw2LjIzNSwwLDAsMCwzLjc3Miw1LjdzLTIuNjM3LDcuNDIyLTYuMiw3LjQyMmMtMS42MzYsMC0yLjkwOC0xLjEtNC42MzEtMS4xLTEuNzU3LDAtMy41LDEuMTQ0LTQuNjM1LDEuMTQ0QzguNywzMCw0LjU4NywyMi45NTksNC41ODcsMTcuM2MwLTUuNTY4LDMuNDc4LTguNDg5LDYuNzQtOC40ODlDMTMuNDQ4LDguODExLDE1LjA5MywxMC4wMzQsMTYuMiwxMC4wMzRaXCIgc3R5bGU9XCJmaWxsOiNhOGMyYWJcIi8+YCxcbiAgXCJBcmR1aW5vXCI6IGA8ZGVmcz48cmFkaWFsR3JhZGllbnQgaWQ9XCJhXCIgY3g9XCI3NjcuMTc5XCIgY3k9XCI1MTY5LjU0M1wiIHI9XCIxNC45ODlcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtNzE4LjExMiAtNDk1My45MTcpIHNjYWxlKDAuOTU1IDAuOTYyKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzM2YmFjMFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMyZDkwOTRcIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9hcmR1aW5vPC90aXRsZT48cGF0aCBkPVwiTTI5LjY0NSwxNS45MjVBMTMuNzcsMTMuNzcsMCwxLDEsMTUuODc2LDIuMDU2LDEzLjgxOSwxMy44MTksMCwwLDEsMjkuNjQ1LDE1LjkyNVpcIiBzdHlsZT1cInN0cm9rZTojMDI3OTdlO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6MS4xMzY3MjI4NDU0OTY5MjY3cHg7ZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMTAuNTgxLDExLjY0OGMyLjQxLS4wNzYsMy4zNTkuODM0LDQuNjA1LDIuMDY5LjI4NS4yODIuNTc5LjU5LjkuOTIxbC45MjItLjk5MWE2LjIyMyw2LjIyMywwLDAsMSwzLjI1Ni0xLjkzYzEuOTM5LS4yMTEsMy4xMTktLjEyMiw0LjMxMS44MTRhNS4wMjMsNS4wMjMsMCwwLDEsMi4yNDUsMy45LDUuNjUzLDUuNjUzLDAsMCwxLTMuMjUsNS4xNTYsNS45NzUsNS45NzUsMCwwLDEtMy45MTMuMTM1LDcuNjU2LDcuNjU2LDAsMCwxLTMuNTQxLTIuOTg3Yy0xLjY3OCwyLjE0Mi0zLjE4NywzLjI1My01LjIzNSwzLjE1NS03LjQ1Mi0uMzU0LTYuODQyLTEwLjA3NS0uMy0xMC4yNDdabTEuNjU3LDcuOTk0YTkuMTkzLDkuMTkzLDAsMCwwLDIuODU2LTIuOWMtLjc0LTEuMjQzLTIuMjA5LTIuODI0LTMuNDU1LTMuMTM0YTQuMzI4LDQuMzI4LDAsMCwwLTMuMjI0Ljc3NywzLjM4NCwzLjM4NCwwLDAsMC0uNzYyLDMuNjg2LDMuNjc0LDMuNjc0LDAsMCwwLDQuNTg1LDEuNTdabS0yLjk4LTMuNDg3LDMuMjc4LjAwNXYxLjIxbC0zLjI4My4wMDVabTEzLjQ0OCwzLjZBMy44NDMsMy44NDMsMCwwLDAsMjQuOTM3LDE3YTMuNDU4LDMuNDU4LDAsMCwwLTEuODYzLTMuMTA5LDMuNjQ4LDMuNjQ4LDAsMCwwLTQuMi43MjgsNy4zNjQsNy4zNjQsMCwwLDAtMS42NDksMi4xNTFBOC45MzYsOC45MzYsMCwwLDAsMTkuMiwxOS4yNTIsNC4wMjIsNC4wMjIsMCwwLDAsMjIuNzA2LDE5Ljc1NFptLTEuOTU1LTIuMzc2LTEuMDg4LS4wMDgsMC0xLjIxNywxLjA5MSwwVjE1LjA3NWwxLjEwNy0uMDA4LS4wMDcsMS4wOTMsMS4wODUsMHYxLjE2NWwtMS4wMjEtLjAwOHYxLjEySDIwLjc1M1pcIiBzdHlsZT1cInN0cm9rZTojMDAwO3N0cm9rZS13aWR0aDowLjEyMTAzMDk2NDgwOTI3NDgycHg7b3BhY2l0eTowLjE2ODA5OTk5OTQyNzc5NTQ7aXNvbGF0aW9uOmlzb2xhdGVcIi8+PHBhdGggZD1cIk00LjkxNywxNi4zMzdjMCw1LjM0OCw3LjM1NCw3LjM0LDEwLjk4NywxLjg5NCwzLjc2NSw1LjY0NywxMC44MjQsMy4yOCwxMC44MjQtMS45UzE5LjcsOC42NTYsMTUuOSwxNC40NDFjLTMuNi01LjcxOS0xMC45ODctMy40NTMtMTAuOTg3LDEuOVptMS45MzEsMGMwLTMuODYsNS40NTUtNS4wNzgsNy45OTIsMC0yLjU4OCw0Ljg4OS03Ljk5MiwzLjg1OS03Ljk5MiwwWm0xMC4xMTksMGMyLjI4Ni01LjE3OCw3Ljg4OS0zLjc1MSw3Ljg3Mi4wMDhTMTkuMTg2LDIxLjI3NywxNi45NjcsMTYuMzM3WlwiIHN0eWxlPVwiZmlsbDojZmZmO3N0cm9rZTojMDAwO3N0cm9rZS13aWR0aDowLjI0MjA2MTkyOTYxODU0OTY0cHhcIi8+PHJlY3QgeD1cIjguODk4XCIgeT1cIjE1Ljc5NVwiIHdpZHRoPVwiMy4yMzdcIiBoZWlnaHQ9XCIxLjA2N1wiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIwLjY0NCAxNi44NDYgMTkuNTc2IDE2Ljg0NiAxOS41NzYgMTUuNzEyIDIwLjY0NCAxNS43MTIgMjAuNjQ0IDE0LjY0NCAyMS43NzkgMTQuNjQ0IDIxLjc3OSAxNS43MTIgMjIuODQ3IDE1LjcxMiAyMi44NDcgMTYuODQ2IDIxLjc3OSAxNi44NDYgMjEuNzc5IDE3LjkxNCAyMC42NDQgMTcuOTE0IDIwLjY0NCAxNi44NDZcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuICBcIkFSTSBBc3NlbWJseVwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiODM2LjYzXCIgeTE9XCIzNi4yMDVcIiB4Mj1cIjg0My44MDJcIiB5Mj1cIjE0LjQ4XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoNTI1LjkyMiAzMC4yNDkpIHJvdGF0ZSgxODApIHNjYWxlKDAuNjA3IDAuNjA3KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiIHN0b3Atb3BhY2l0eT1cIjBcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZmZmXCIgc3RvcC1vcGFjaXR5PVwiMC4yNzVcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9hc3NlbWJseTwvdGl0bGU+PHBhdGggZD1cIk0xNiwyYy0xLjI0NiwzLjA1Ni0yLDUuMDU3LTMuMzkxLDguMDIyQTIxLjg4NCwyMS44ODQsMCwwLDAsMTYuMiwxMy4xNTZhMTQuODU4LDE0Ljg1OCwwLDAsMS00LTIuMjgzQzEwLjQzLDE0LjU3OSw3LjY0NiwxOS44NTUsMiwzMGM1LjE4Ni0yLjk5NCw5LjAxMi00LjY0OCwxMi42OTEtNC45NjZWMjQuMmgtLjgzNHYtLjgzN2guODM0VjI0LjJoMS42NzVWMjIuNTIxSDE0LjY5MXYtLjgzNGgtLjgzNFYyMC4wMTNoLjgzNHYtLjgzNGgxLjY3NXYuODM0SDE3LjJ2LjgzN2gtLjgzN3YtLjgzN0gxNC42OTF2MS42NzVoMS42NzV2LjgzNEgxNy4yVjI0LjJoLS44Mzd2Ljc4M2MzLjk4LjEsOC4wMDYsMS43NzIsMTMuNjM0LDUuMDIxLS44NjMtMS41ODktMS42MzYtMy4wMjEtMi4zNzItNC4zODVhMjUuNTI2LDI1LjUyNiwwLDAsMC00LjgzMy0zLjMzM0ExNC40MzYsMTQuNDM2LDAsMCwxLDI2LjY1LDIzLjhDMTkuMTcsOS44NzIsMTguNTY1LDguMDIsMTYsMlpNMTAuNTExLDE5LjE3OWgxLjY3MXYuODM0aC44Mzd2NS4wMjFoLS44MzdWMjIuNTIxSDEwLjUxMXYyLjUxMkg5LjY3M1YyMC4wMTNoLjgzN1ptMCwuODM0djEuNjc1aDEuNjcxVjIwLjAxM1ptNy41MjYtLjgzNGguODM3di44MzRoLjgzN3YuODM3aC44MzR2LS44MzdoLjgzN3YtLjgzNGguODM3djUuODU1aC0uODM3VjIwLjg1aC0uODM3di44MzdoLS44MzRWMjAuODVoLS44Mzd2NC4xODRoLS44MzdaXCIgc3R5bGU9XCJmaWxsOiMwMDAwYmZcIi8+PHBhdGggZD1cIk0yMy44ODEsMTguNjQyYy02LjA2OS04LjIzNy03LjQ3Ni0xNC44NzYtNy44MzItMTYuNDYxQTE3NS4yMTcsMTc1LjIxNywwLDAsMCwyMy44ODEsMTguNjQyWlwiIHN0eWxlPVwiZmlsbDojZmZmO2ZpbGwtb3BhY2l0eTowLjE2NTY4MDQ2ODA4MjQyOFwiLz48cGF0aCBkPVwiTTE2LjA1MSwyLjEyLDE1LjYsMy4yMjdjLS4xNTkuMzkxLS4zMTEuNzY1LS40NjEsMS4xMzFzLS4zLjcyNC0uNDQ4LDEuMDc3LS4zLjctLjQ0OCwxLjA1My0uMy43MDYtLjQ2NSwxLjA2Ni0uMzI5LjcyOS0uNTA2LDEuMTExLS4zNjIuNzc4LS41NjEsMS4xOTNjLS4wMjguMDU3LS4wNjEuMTIzLS4wODkuMTgxQTIxLjg3MiwyMS44NzIsMCwwLDAsMTYuMiwxMy4xNTZhMTQuODc5LDE0Ljg3OSwwLDAsMS0zLjk4OS0yLjI3NmwtLjE0LjI4N2MtLjA2NS4xMzMtLjE0NC4yODMtLjIxMi40MmwtLjEwNi4yMTljLS44NzgsMS43OTMtMi4wMDYsMy45ODQtMy41MjQsNi44MjIsMy41NTEtMiw3LjM4MS00Ljg4NywxNC4zMzgtMi40LS4zNDktLjY2MS0uNjctMS4yOC0uOTcxLTEuODYzcy0uNTgxLTEuMTI4LS44NDEtMS42NDQtLjUtMS0uNzI1LTEuNDYzLS40MzMtLjktLjYyOS0xLjMxMy0uMzgtLjgxOC0uNTU0LTEuMi0uMzM5LS43NTQtLjUtMS4xMThTMTguMDQ3LDYuOSwxNy45LDYuNTQ2cy0uMjkxLS43MDktLjQzNC0xLjA2NmMtLjAzNi0uMDkxLS4wNzMtLjE4Ni0uMTA5LS4yNzdDMTYuOTQ5LDQuMjQ3LDE2LjUzNiwzLjI1OCwxNi4wNTEsMi4xMlpcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz5gLFxuICBcIkFzY2lpRG9jXCI6IGA8cGF0aCBkPVwiTTMwLDMwSDJWMkgzMFpcIiBzdHlsZT1cImZpbGw6I2U0MDA0NlwiLz48cGF0aCBkPVwiTTIzLjczMSwyNC44M2EuNTg5LjU4OSwwLDAsMS0uNzYzLS4zMzdMMTYuNzI0LDkuMjY5LDEzLjkzLDE1Ljk5aDEuODMzYS41OS41OSwwLDAsMS0uMDI0LDEuMThIOC45YS41OS41OSwwLDAsMSwuMDI0LTEuMThoMy43MjdsMC0uMDEzTDE2LjE4NCw3LjVhLjU5MS41OTEsMCwwLDEsLjUzMy0uMzYzaDBhLjU5Mi41OTIsMCwwLDEsLjU1Ny4zNjZsNi43ODUsMTYuNTQ2LjAwOS4wMjFBLjU5LjU5LDAsMCwxLDIzLjczMSwyNC44M1pcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE0LjUxNiwxOC43OTFINy42NzlhLjU5LjU5LDAsMCwwLS4wMjQsMS4xOEgxMUw5LjMwOSwyNC4wNDNhLjU5LjU5LDAsMCwwLDEuMDg1LjQ2NGwwLS4wMTEsMS44NzUtNC41MDkuMDA1LS4wMTZoMi4yMTVhLjU5LjU5LDAsMCwwLC4wMjMtMS4xOFpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuICBcIkFTUC5ORVQgKEMjKVwiOiBgPHRpdGxlPmZpbGVfdHlwZV9hc3B4PC90aXRsZT48cG9seWdvbiBwb2ludHM9XCIyMi43NSAyIDYuMzUgMiA2LjM1IDMwIDI5LjY1IDMwIDI5LjY1IDkgMjIuNzUgMlwiIHN0eWxlPVwiZmlsbDojYzVjNWM1XCIvPjxwb2x5Z29uIHBvaW50cz1cIjI3LjM1IDI3LjcgOC43NSAyNy43IDguNzUgNC4zIDIwLjQ1IDQuMyAyMC40NSAxMS4zIDI3LjQ1IDExLjMgMjcuNDUgMjcuNyAyNy4zNSAyNy43XCIgc3R5bGU9XCJmaWxsOiNmNWY1ZjVcIi8+PHBhdGggZD1cIk0xMi4xLDMwLjk5NEExMS4wOTQsMTEuMDk0LDAsMSwxLDIzLjE5NCwxOS45LDExLjEwNiwxMS4xMDYsMCwwLDEsMTIuMSwzMC45OTRabTAtMjAuM0E5LjIsOS4yLDAsMSwwLDIxLjMsMTkuOSw5LjIxNiw5LjIxNiwwLDAsMCwxMi4xLDEwLjdaXCIgc3R5bGU9XCJmaWxsOiMzM2E5ZGNcIi8+PHJlY3QgeD1cIjIuMDk5XCIgeT1cIjE5LjQ1NVwiIHdpZHRoPVwiMjAuMDAzXCIgaGVpZ2h0PVwiMC44OVwiIHN0eWxlPVwiZmlsbDojMzNhOWRjO3N0cm9rZTojMzNhOWRjO3N0cm9rZS1taXRlcmxpbWl0OjEwXCIvPjxwYXRoIGQ9XCJNMTIuMzI1LDE1Ljc2M2EzMS45MywzMS45MywwLDAsMS04LjQ4NC0xLjExbC4yNDItLjgwN2EzMS4zNzQsMzEuMzc0LDAsMCwwLDE1Ljk5MiwwbC4yMzkuODA3QTI4LjA3NiwyOC4wNzYsMCwwLDEsMTIuMzI1LDE1Ljc2M1pcIiBzdHlsZT1cImZpbGw6IzMzYTlkYztzdHJva2U6IzMzYTlkYztzdHJva2UtbWl0ZXJsaW1pdDoxMFwiLz48cGF0aCBkPVwiTTQuMSwyNS43MjRsLS4yMzktLjgwN2EzMS42NTIsMzEuNjUyLDAsMCwxLDE2LjQ3MiwwbC0uMjQyLjgwN0EzMS4zOCwzMS4zOCwwLDAsMCw0LjEsMjUuNzI0WlwiIHN0eWxlPVwiZmlsbDojMzNhOWRjO3N0cm9rZTojMzNhOWRjO3N0cm9rZS1taXRlcmxpbWl0OjEwXCIvPjxwYXRoIGQ9XCJNOC41MzYsMjkuMDU1QTI1LjQzOCwyNS40MzgsMCwwLDEsOCwxMC42MDhsLjc3Ni4zMzFhMjQuNTU4LDI0LjU1OCwwLDAsMCwuNTMzLDE3Ljc4M1pcIiBzdHlsZT1cImZpbGw6IzMzYTlkYztzdHJva2U6IzMzYTlkYztzdHJva2UtbWl0ZXJsaW1pdDoxMFwiLz48cGF0aCBkPVwiTTE1LjYsMjkuMDU1bC0uNzc2LS4zMzNhMjQuNTU5LDI0LjU1OSwwLDAsMCwuNTMxLTE3Ljc4M2wuNzc2LS4zMzFBMjUuNDQzLDI1LjQ0MywwLDAsMSwxNS42LDI5LjA1NVpcIiBzdHlsZT1cImZpbGw6IzMzYTlkYztzdHJva2U6IzMzYTlkYztzdHJva2UtbWl0ZXJsaW1pdDoxMFwiLz48cmVjdCB4PVwiMTEuNjU1XCIgeT1cIjkuODk4XCIgd2lkdGg9XCIwLjg4OVwiIGhlaWdodD1cIjIwLjM3MVwiIHN0eWxlPVwiZmlsbDojMzNhOWRjO3N0cm9rZTojMzNhOWRjO3N0cm9rZS1taXRlcmxpbWl0OjEwXCIvPmAsXG4gIFwiQXV0b0hvdGtleVwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiNTQuNjA0XCIgeTE9XCIxNjguMzg4XCIgeDI9XCI1NC42MDRcIiB5Mj1cIjE5NC44ODVcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMzguNjA0IC0xNjUuNjM2KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2Q4ZDhkOFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNhM2EzYTNcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCI2OC43NTZcIiB5MT1cIjIwOS4xNTJcIiB4Mj1cIjkxLjYzOFwiIHkyPVwiMjA5LjE1MlwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKC01MC42MDEgLTE1OS40NDkpIHNjYWxlKDAuODMyIDAuODM3KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2Q3ZDdkN1wiLz48c3RvcCBvZmZzZXQ9XCIwLjVcIiBzdG9wLWNvbG9yPVwiI2U3ZTdlN1wiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNkN2Q3ZDdcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9hdXRvaG90a2V5PC90aXRsZT48cmVjdCB4PVwiMlwiIHk9XCIyLjgyNFwiIHdpZHRoPVwiMjhcIiBoZWlnaHQ9XCIyNi4zNTNcIiByeD1cIjMuMDg4XCIgcnk9XCIzLjA4OFwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMjYuODU2LDI5LjE4MUg1LjE0NEEzLjE0OCwzLjE0OCwwLDAsMSwyLDI2LjAzN1Y1Ljk2M0EzLjE0OCwzLjE0OCwwLDAsMSw1LjE0NCwyLjgxOUgyNi44NTZBMy4xNDgsMy4xNDgsMCwwLDEsMzAsNS45NjNWMjYuMDM3QTMuMTQ4LDMuMTQ4LDAsMCwxLDI2Ljg1NiwyOS4xODFaTTUuMTQ0LDIuOTYzYTMsMywwLDAsMC0zLDNoMFYyNi4wMzdhMywzLDAsMCwwLDMsM0gyNi44NTZhMywzLDAsMCwwLDMtM1Y1Ljk2M2EzLDMsMCwwLDAtMy0zWlwiIHN0eWxlPVwiZmlsbDojOGQ4ZDhkXCIvPjxyZWN0IHg9XCI0LjMxM1wiIHk9XCI0LjY0MVwiIHdpZHRoPVwiMjMuMTY5XCIgaGVpZ2h0PVwiMjEuOTRcIiByeD1cIjIuNTcxXCIgcnk9XCIyLjU3MVwiIHN0eWxlPVwiZmlsbDp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNMjQuOTExLDI2LjY0MUg2Ljg4NEEyLjYzNCwyLjYzNCwwLDAsMSw0LjI1MywyNC4wMVY3LjIxMkEyLjYzNCwyLjYzNCwwLDAsMSw2Ljg4NCw0LjU4MUgyNC45MTFhMi42MzQsMi42MzQsMCwwLDEsMi42MzEsMi42MzF2MTYuOEEyLjYzNCwyLjYzNCwwLDAsMSwyNC45MTEsMjYuNjQxWk02Ljg4NCw0LjdBMi41MTQsMi41MTQsMCwwLDAsNC4zNzMsNy4yMTJ2MTYuOGEyLjUxNCwyLjUxNCwwLDAsMCwyLjUxMSwyLjUxMUgyNC45MTFhMi41MTQsMi41MTQsMCwwLDAsMi41MTEtMi41MTFWNy4yMTJBMi41MTQsMi41MTQsMCwwLDAsMjQuOTExLDQuN1pcIiBzdHlsZT1cImZpbGw6I2Y4ZjhmOFwiLz48cGF0aCBkPVwiTTYuMTQ1LDIzLjlsMi4zNDMtNi4xaC44N2wyLjUsNi4xaC0uOTJsLS43MTItMS44NDhINy42NzNMNywyMy45Wk03LjksMjEuNEg5Ljk3NGwtLjYzNy0xLjdxLS4yOTEtLjc3LS40MzMtMS4yNjVBNy43NzYsNy43NzYsMCwwLDEsOC41NzYsMTkuNlpcIi8+PHBhdGggZD1cIk0xMy42MDcsMjMuOVYxNy44aC44MDd2Mi41aDMuMTcxVjE3LjhoLjgwN3Y2LjFoLS44MDdWMjEuMDIxaC0zLjE3VjIzLjlaXCIvPjxwYXRoIGQ9XCJNMjAuNDc4LDIzLjlWMTcuOGguODA3djMuMDI1bDMuMDMtMy4wMjVoMS4wOTRMMjIuODUsMjAuMjY3LDI1LjUyMiwyMy45SDI0LjQ1NmwtMi4xNzItMy4wODgtMSwuOTc0VjIzLjlaXCIvPmAsXG4gIFwiQXV0b0l0XCI6IGA8Y2lyY2xlIGN4PVwiMTZcIiBjeT1cIjE2XCIgcj1cIjEyLjU1MVwiIHN0eWxlPVwiZmlsbDojNWQ4M2FjXCIvPjxwYXRoIGQ9XCJNMiwxNkExNCwxNCwwLDEsMSwxNiwzMCwxNCwxNCwwLDAsMSwyLDE2Wk0xNiw0Ljc4OUExMS4yMTEsMTEuMjExLDAsMSwwLDI3LjIxMSwxNiwxMS4yMTEsMTEuMjExLDAsMCwwLDE2LDQuNzg5WlwiIHN0eWxlPVwiZmlsbDojZjBmMGYwXCIvPjxwYXRoIGQ9XCJNMjQuNTc2LDIwLjE1NmwtNi40LTkuMjY0YTMuMTMxLDMuMTMxLDAsMCwwLS44MTktLjgxOSwyLjM2LDIuMzYsMCwwLDAtMi40NDIuMDIzLDMuNTQzLDMuNTQzLDAsMCwwLS44MTIuOEw3LjUzMywyMC4xNTZoMy43NTJsNC44MDgtNi44LDEuODM4LDIuNzFxLjI2LjM2OC41NDQuNzg5dC41LjdxLS4zNjgtLjAzMS0uODY1LS4wMzFoLTMuNTNsLTEuOTE0LDIuNjM0WlwiIHN0eWxlPVwiZmlsbDojZjBmMGYwXCIvPmAsXG4gIFwiQXZybyBJRExcIjogYDxwYXRoIGQ9XCJNMiwxMS42NDloLjAyNWE0Ljc4NSw0Ljc4NSwwLDAsMCwyLjkxMSwxLjMzNmMyLjMwOC4yMjEsNC41OS0uNDg1LDYuOS0uMzI2YTcuMDMsNy4wMywwLDAsMSwyLjY4LjY2NGMuNS0uMzE5Ljk4OS0uNjYyLDEuNDg2LS45ODkuNS4zMjcuOTg0LjY3NCwxLjQ4OC45ODlhNi44MzQsNi44MzQsMCwwLDEsMi40ODctLjY1YzEuOTk1LS4xNjcsMy45NjcuMzA4LDUuOTU3LjM1OWE1LjIsNS4yLDAsMCwwLDQuMDI2LTEuMzgzSDMwdi4yMzZjLS4xNzguNzQ3LS44ODIsMS4xNzYtMS4yODQsMS43OWE0Ljk0OCw0Ljk0OCwwLDAsMS0uNzMxLjc5MSwzLjgsMy44LDAsMCwxLS41NjUuNzQ4LDIuNTUxLDIuNTUxLDAsMCwwLS41OTQuNTQxLDIuMTgxLDIuMTgxLDAsMCwxLS45Ni43NDksMS4xNDksMS4xNDksMCwwLDEtLjU2NS41Niw2LjY5LDYuNjksMCwwLDEtMS45NC4xODRjLjcyMy41NDgsMS41LDEuMDIsMi4yNDYsMS41MzUuNzgyLjUxMywxLjU0LDEuMDYxLDIuMzI2LDEuNTY4SDQuMDg5YzEuNS0xLjA1OCwzLjA1Ny0yLjAzNSw0LjU1LTMuMUE2LjgsNi44LDAsMCwxLDYuNywxNy4wNjVhMS4xNTUsMS4xNTUsMCwwLDEtLjU2OS0uNTYyLDIuMjgsMi4yOCwwLDAsMS0xLjA0My0uODZjLS4yNjgtLjMtLjY3LS40NjYtLjg1My0uODQzLS4yLS40MzYtLjY1OC0uNjY0LS45MDktMS4wNjctLjQtLjY0Mi0xLjEzNy0xLjA3Ni0xLjMyNy0xLjg0NnYtLjIzOW0yLjkzOSw4LjUyOHExMS4wNTkuMDA5LDIyLjEyLDBjLTMuNjY4LTIuNTEtNy4zNzYtNC45NjEtMTEuMDU5LTcuNDQ4LTMuNjg0LDIuNDg3LTcuMzkyLDQuOTQxLTExLjA2MSw3LjQ0OU00LjE2NywxMy4yYTcuODQyLDcuODQyLDAsMCwwLDIuODQuNzMxYzEuMTYzLjEyMywyLjM0MS4wNDYsMy41LjIzNmEyLjcsMi43LDAsMCwxLDEuNjA3Ljc4MWMuNjU5LS40NTIsMS4zMzItLjg4NSwxLjk4Ny0xLjM0MmwuMDEyLS4wNjRhNS4yOTQsNS4yOTQsMCwwLDAtMS44NzctLjVjLTIuNjkzLS4zMTYtNS4zODcuNzEyLTguMDY3LjE2bTEzLjY1Mi4zNTZjLjY4OC40NjYsMS4zODIuOTI1LDIuMDcsMS4zOTJhMi40ODgsMi40ODgsMCwwLDEsMS4zLS43MTksMTkuODU5LDE5Ljg1OSwwLDAsMSwzLjEzNy0uMjQ4LDkuMTA1LDkuMTA1LDAsMCwwLDMuNS0uNzY4Yy0yLjU4Mi41LTUuMTY4LS40MDktNy43NjEtLjJhNi4yNTYsNi4yNTYsMCwwLDAtMi4yNDUuNTQ1TTMuMzM5LDEzLjE2NmE3LjI2NCw3LjI2NCwwLDAsMCwyLjcyMywxLjNjLS4yMTktLjE1My0uMzc2LS40MTYtLjY1Ny0uNDU3YTcuOTU1LDcuOTU1LDAsMCwxLTIuMDY2LS44NDRtMjMuMzMzLjgyNWMtLjMxNy4wMjMtLjUuMy0uNzMzLjQ3M2E3LjIzMiw3LjIzMiwwLDAsMCwyLjcyNC0xLjMsOC4xMDYsOC4xMDYsMCwwLDEtMS45OTEuODI0bS0yMi41LjEyNmE1LjEyMSw1LjEyMSwwLDAsMCwyLjU4OSwxLjFjLS4xMTUtLjEyOC0uMjA5LS4zMTItLjQtLjMzNGExMC40NTksMTAuNDU5LDAsMCwxLTIuMTktLjc3MW0yMS40NjcuNzY4Yy0uMTg5LjAyMi0uMjg0LjItLjM5NC4zMzZhNS4xODcsNS4xODcsMCwwLDAsMi42LTEuMTA5LDEwLjQ3NywxMC40NzcsMCwwLDEtMi4yLjc3M002LjMsMTQuMjA2YTMuMjQzLDMuMjQzLDAsMCwwLDIuNDQ1LjM1MmMtLjEtLjA4LS4xODEtLjIxNS0uMzI1LS4yMDZxLTEuMDYzLS4wNC0yLjEyLS4xNDZtMTcuMzUxLjEzOWMtLjE3MS0uMDE5LS4yOTEuMS0uNDA2LjIxMWEzLjEwOCwzLjEwOCwwLDAsMCwyLjQyLS4zNTJxLTEsLjExMi0yLjAxNC4xNDFtLTE2Ljc0MS41MzhhMy42NjksMy42NjksMCwwLDAsMi40ODIuMzE5LDEuMTA3LDEuMTA3LDAsMCwwLS4yODEtLjM3Niw1LjE1OCw1LjE1OCwwLDAsMS0yLjIuMDU3bTE1LjcuMzE4YTMuNjc4LDMuNjc4LDAsMCwwLDIuNDg3LS4zMTksNS4xMjcsNS4xMjcsMCwwLDEtMi4yLS4wNTcsMS4xLDEuMSwwLDAsMC0uMjgzLjM3Nk00LjgzOCwxNC45NzdhNC4xMSw0LjExLDAsMCwwLDIuMTMzLjg0MWMtLjA1Ny0uMDg0LS4xMTQtLjE2OC0uMTcxLS4yNTRhNi45NDgsNi45NDgsMCwwLDEtMS45NjItLjU4N20yMC4zNjEuNTg5LS4xNjkuMjUzYTQuMTQxLDQuMTQxLDAsMCwwLDIuMTM2LS44NDMsNy4wMTUsNy4wMTUsMCwwLDEtMS45NjcuNTltLTE4LjEtLjEzYS44LjgsMCwwLDAsLjUzNC4zMSw3LjU3OSw3LjU3OSwwLDAsMCwyLjAzNy0uMDczYy0uMDA5LS4wMy0uMDI3LS4wOS0uMDM2LS4xMi0uNDU3LS4wNTEtLjkyMy4wNzQtMS4zODUuMDQ3QTcuMDU0LDcuMDU0LDAsMCwxLDcuMSwxNS40MzdtMTYuMTkxLjE1MWE2LjI4LDYuMjgsMCwwLDAtLjkxMy0uMDQxbC0uMDQyLjEyNmE3LjQxNiw3LjQxNiwwLDAsMCwyLjA0NS4wNzIuNy43LDAsMCwwLC41MjItLjMzMSw0LjM0OSw0LjM0OSwwLDAsMS0xLjYxMy4xNzRtLTE3LjUyLjMyN2EzLjEyLDMuMTIsMCwwLDAsMS43NTQuNDgxYy0uMDY1LS4yNC0uMzM0LS4yLS41MjMtLjIzNi0uNDE5LS4wNDEtLjgxNi0uMTg2LTEuMjMxLS4yNDZNMjUsMTYuMTYzYy0uMTg4LjA0MS0uNDUyLS4wMDYtLjUyMS4yMzJhMi44NzQsMi44NzQsMCwwLDAsMS43MzItLjQ4MmMtLjQuMDc5LS44LjIwNy0xLjIxMS4yNTFNNy43MzUsMTYuMTE5YTEsMSwwLDAsMCwuNzg5LjI3NSw5LjMzMSw5LjMzMSwwLDAsMCwxLjMyNS0uMTU4Yy0uMDIxLS4wOTMtLjAwOS0uMjc4LS4xNjMtLjIyOGE5Ljk4Myw5Ljk4MywwLDAsMS0xLjk1MS4xMTFtMTQuNDE1LjExOGE4LjE1Nyw4LjE1NywwLDAsMCwxLjQxMi4xNTQuOS45LDAsMCwwLC43LS4yNzQsOS4zODcsOS4zODcsMCwwLDEtMS45MzQtLjExYy0uMTYtLjA2LS4xNTUuMTMyLS4xNzYuMjNtLTE1LjQzOC40NGExLjk2MiwxLjk2MiwwLDAsMCwxLjMuMTgxbC0uMDkxLS4xMjZjLS40LjAwNi0uODA3LS4wMjItMS4yMDktLjA1NW0xLjYxNS4wNDNhMS4wMywxLjAzLDAsMCwwLC43MTYuMjk0Yy4xNzktLjEyNS4zNTgtLjI1Mi41MzEtLjM4NmE1Ljc0Nyw1Ljc0NywwLDAsMS0xLjI0Ny4wOTJtMTQuMS0uMDkzYy4yMzcuMTQ0LjQ2Ny40NzcuNzgyLjM0NS4xNjYtLjA1LjM2OS0uMDg5LjQ2MS0uMjU3YTUuMjcxLDUuMjcxLDAsMCwxLTEuMjQzLS4wODhtMS43MTMuMjYzYTIuMDA3LDIuMDA3LDAsMCwwLDEuMTQ1LS4yMTMsMTAuMjY5LDEwLjI2OSwwLDAsMS0xLjE0NC4wNDlDMjMuOTkzLDE2LjY2NywyMy45ODQsMTYuOTYxLDI0LjEzOCwxNi44OVpcIiBzdHlsZT1cImZpbGw6IzAwNDBmZlwiLz48cGF0aCBkPVwiTTcuNDM1LDE4Ljg4NlExMS43MTksMTYuMDEzLDE2LDEzLjEzN2w5LjMsNi4yNDRjLjIyMS4xNDcuNDM5LjMuNjQ4LjQ2NHEtOS45NDctLjAxLTE5Ljg5NCwwYy40NDMtLjM0NC45Mi0uNjQsMS4zODMtLjk1OG04LjI1NS01LjA2NmMtLjQ1NywxLjg1OS0uOTA3LDMuNzE5LTEuMzc1LDUuNTc2LjUyLjAxNSwxLjA0MS4wMTIsMS41NjIsMHEtLjAxMy0yLjg0MSwwLTUuNjhsLS4xODQuMW0tMi41LDEuNjg0Yy4yNTUuODU5LjQ4LDEuNzI4Ljc2MywyLjU3OS4yODktMS4yMzguNi0yLjQ3MS45LTMuNzA3LS41NS4zODYtMS4xMTQuNzUtMS42NjgsMS4xMjltMy4zNTctLjg3M2MtLjAwNi42ODIsMCwxLjM2NCwwLDIuMDQ2YTIuMSwyLjEsMCwwLDAsMS4wMTQtLjI1NGMuMTkzLS4xNDUuMS0uNDA5LjAxMS0uNTg2YTQuMjc2LDQuMjc2LDAsMCwwLTEuMDI0LTEuMjA3TTE4LjMyNywxNi40Yy0uMS41NDQtLjY2Ni43OTItMS4xNTEuOS40NzQuNy45NiwxLjM4OSwxLjQxNiwyLjEuNDY5LjAyNC45NC4wMTEsMS40MTEuMDA5YTEuNjMxLDEuNjMxLDAsMCwxLC4xNi0yLjk3NmMtLjgzNC0uNi0xLjctMS4xNC0yLjU0NC0xLjcyNy4zNDkuNS44MzEsMS4wMzcuNzA4LDEuN20tNi44MjIuMjQyYy4yNjcuOTIxLjUyOSwxLjg0NS43OTQsMi43NjcuNDQsMCwuODguMDA4LDEuMzIxLS4wMDctLjMzOS0xLjE2MS0uNjg1LTIuMzE5LTEuMDA5LTMuNDg0LS4zODUuMjE1LS43MzcuNDgyLTEuMS43MjRtOC44LjQ1MmEuOTQ2Ljk0NiwwLDAsMCwuMDU3LDEuN2MuNTMzLjA5Ljg1NS0uNTMzLjc3OS0uOTktLjAyNi0uNC0uNC0uODYxLS44MzYtLjcxNE03LjQsMTkuNHExLjMyNC4wMTgsMi42NSwwYy4yNTYtLjcuNDEzLTEuNDY4LjYyOS0yLjItMS4xLjcxNS0yLjE4NywxLjQ2MS0zLjI3OSwyLjE5NG0xNC4zNzctMS45YTEuNjE2LDEuNjE2LDAsMCwxLS44NzYsMS45YzEuMjMzLjAxOCwyLjQ2NS4wMTUsMy43LDAtLjkzNC0uNjQ0LTEuODgzLTEuMjY2LTIuODIyLTEuOW0tNS4yMjMuMTE1Yy0uMDEuNiwwLDEuMiwwLDEuOC40MTUsMCwuODMxLDAsMS4yNDgsMC0uNDE5LS42LS44LTEuMjE5LTEuMjQzLTEuNzk0bS01LjU0Ni45NDFoLjM0NmMtLjA1NS0uMTg3LS4xMDgtLjM3Ni0uMTY2LS41NjJhMy43NTEsMy43NTEsMCwwLDAtLjE4MS41NjNtLS4xOC42OTNjLS4wMTUuMDQtLjA0NS4xMTktLjA2MS4xNTkuMjc1LS4wMjYuNTkuMDcxLjg0Mi0uMDVDMTEuNDUzLDE5LjExMiwxMS4wNzQsMTkuMjc1LDEwLjgyNiwxOS4yNDRaXCIgc3R5bGU9XCJmaWxsOiMwMDQwZmZcIi8+YCxcbiAgXCJBV0tcIjogYDxwYXRoIGQ9XCJNMjYuOTI1LDI3LjczN0MyMy40MzEsMjYuMSwyNC42MDYsMTQuNTg4LDEzLjgxLDguMzE5LDE0LjA4OSw1Ljc5MiwxNC43NTgtLjUsNy45NjEsMyw2Ljg0NSwzLjEyOCw0LjkwNywyLjMzMSw0LDQuODMxdi4xMTRDMTYuOTE4LDMuOS4wODgsMTAuNTMsMTYuNzUsMjUuODQ0Yy0uMzczLjE3Ni0uNjc0LS4zMjUtMS45Ny4xbC0uMDE0LjAxNmMtMS43MjIsMS4xMzUsMS45MzMuNzY4LDQuMTU0LDEuMjc0LTEuNjExLjQxNy01LjU5NC0xLjEzNy02LjMsMS42NDUuODc3LS4zNywxLC4zMjksMS4wNzYsMS4wNzdBMjYuMjc3LDI2LjI3NywwLDAsMSwyMi4zNzksMjcuNWMxLjEuMjg1LDQuMTE4LDIuMDQ5LDUuMTIyLjU1MUMyNy41MTksMjcuOTMsMjcuMjIxLDI3Ljg3NiwyNi45MjUsMjcuNzM3WlwiLz48cGF0aCBkPVwiTTEwLjQ0NiwyLjk3bC0uMTIxLjA4OGEuMjY2LjI2NiwwLDAsMC0uMDExLjM3Ny4yMTEuMjExLDAsMCwwLC4wNDUuMDM5LjQxNi40MTYsMCwwLDAsLjUyMS0uMDYzLjI2My4yNjMsMCwwLDAsLjA3OC0uMzY0bC0uMDEtLjAxNGMtLjA3Ni0uMTQzLS4xNjMtLjE3Ny0uMzQtLjEyN0MxMC41NTMsMi45MjUsMTAuNSwyLjk0NiwxMC40NDYsMi45N1pcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTE4LDI2LjM2OGMuMTUxLS4wNDEuMzE4LS44MjguMTc0LS45NDlBNi4yOSw2LjI5LDAsMCwwLDE5LjQsMjYuNDg1YzEuMDIzLDEuMDA3LDIuNjY1LS4wMzIsMy40ODIuNzU5YTEwLjczNiwxMC43MzYsMCwwLDAsMS45NTcsMS4wMjdjLS4xMzktLjE1MS0uMDI5LS4xNDQuMTc5LS4wMTEtLjEzLS4zMzgtNC40MjEtNS4xNTYtNS4yMjYtNy4xOC4wOTUuMjkzLTEuNjA4LS44MjQtMi4wNzYtMS40MTktLjAyOC4wNTYtLjA5Mi0uMjUxLS4yMjgtLjQzNC0uMDQxLjA1LS4yLS40MzMtLjMtLjcyOC4wMzcuMTg3LS40NjItLjUtLjY1LS44MTgtLjA1Ni4wOS0uNzE5LjM3Mi0uODA5LjI4Ni0uNzI5LS40LDIuNTI5LDQuMDY2LjEyMiwyLjU1OS42NzYuNjgzLjYxNC40LTEuMDk1LS44NTIuMzY0LjQ1Mi0uMzE3LjMxMi0xLjU1My0xLjUyMy4xODYuMi0uMjE4LS41NzYtLjIxOC0uNTc2YTIuNjkyLDIuNjkyLDAsMCwwLS4xMzMtLjQ4M2MtLjA1Ni0uMzItLjI0MS0uNzIzLS4xMi0uNjUtMS40NDQtMS41NTYsMS4zMTQtMy4zLjcxOS0zLjY3MS0uMTExLDAtLjAyNy4wMTctLjE1MS0uMTA2LS4wOSwwLS40NjguMjg1LS41ODctLjIzNC4wMDYuMTMyLS4wMzQuNDA2LS4xNTMtLjEtLjAyMy4wNTIuMDE1LjEtLjAzLjE0NS0uMjI1LS41NzYtLjc3Mi0xLjYtMS4yMTctMi41MzktLjE1OC4xNTUtLjEzOC0uMDc2LS4xOTMtMS4wOTIuMDUzLjE0NC0uMjI1LDEuOTIxLS4yLjEzLS4xMjguMDA3LjEwOCwxLjI1OC0uMzQzLjIxLS4xNDEuMDUtLjMwNS0uMzYzLS4zNDEtMS4xNzgtLjA0OC42MjMtLjI5LjE4Ny0uNS0uOTIzLS4yNjkuNTA4LTEuNiwxLjc0My0uMzMzLDcuNjIyLS4wNTMtLjMxMy4xODYuMzQxLjc1NSwyLjQyNy4wMjEtLjAzOS0uMDIyLS4wODMuMDM4LS4xMzFhNi4zMjQsNi4zMjQsMCwwLDAsLjY3NywxLjM2NWMuNTQ0LjY1OC45OTUsMi4wNzQuOCwxLjI3N2ExMS44NjcsMTEuODY3LDAsMCwwLDIuNTU0LDMuMjQ5QTM0LjQyMywzNC40MjMsMCwwLDAsMTgsMjYuMzY4WlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMTAuODIzLDIuNTU3YS4yOTEuMjkxLDAsMCwwLS4wNTEtLjAyMmMtLjIyMS0uMDQtLjQyOS4xNTMtLjY1NC4wMzItLjE0NS4wODUtLjI1Ny0uMDM2LS4zNzUtLjA3M2EuMjI0LjIyNCwwLDAsMC0uMi4wMTQsNS44MjMsNS44MjMsMCwwLDAtLjgxNC41ODIsMS4wMzcsMS4wMzcsMCwwLDAtLjI3My40NDljLS4wMjEuMDQ4LS4wMzcuMTI2LjA1LjEzN2EyLjMsMi4zLDAsMCwwLC42ODIuMDQ1Yy4xNzctLjAyOC4yNzctLjE1Mi40MTgtLjIyMWExLjIsMS4yLDAsMCwwLC41OTItLjY4Yy4wNjQtLjE3NS4xNjEtLjE2Ny4yOC0uMlMxMC43LDIuNjIsMTAuODIzLDIuNTU3WlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMTAuMzI1LDMuMDU4bC4xMjEtLjA4OGEuMTE3LjExNywwLDAsMSwuMTIuMDY0Yy4wNDQuMS4xMDYuMTEyLjE5My4wNDcuMDMzLS4wMjUuMDcxLS4wNTguMTE4LS4wMjdhLjExOS4xMTksMCwwLDEsLjA0MS4xMjguMjc2LjI3NiwwLDAsMS0uMTg3LjI0OC4yNjYuMjY2LDAsMCwxLS4zLS4wM0MxMC4zNDEsMy4zMDgsMTAuMjYsMy4yLDEwLjMyNSwzLjA1OFpcIi8+YCxcbiAgXCJCYXRjaFwiOiBgPHBhdGggZD1cIk0yOS40LDI3LjZIMi41VjQuNUgyOS40Wm0tMjUuOS0xSDI4LjRWNS41SDMuNVpcIiBzdHlsZT1cImZpbGw6I2Q5YjQwMFwiLz48cG9seWdvbiBwb2ludHM9XCI2LjA3NyAxOS4zMTYgNS41MjIgMTguNDg0IDEwLjM2NiAxNS4yNTUgNS40NzkgMTEuMTg0IDYuMTIgMTAuNDE2IDEyLjAzNSAxNS4zNDQgNi4wNzcgMTkuMzE2XCIgc3R5bGU9XCJmaWxsOiNkOWI0MDBcIi8+PHJlY3QgeD1cIjEyLjdcIiB5PVwiMTguMlwiIHdpZHRoPVwiNy44XCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojZDliNDAwXCIvPjxyZWN0IHg9XCIyLjVcIiB5PVwiNS41XCIgd2lkdGg9XCIyNi45XCIgaGVpZ2h0PVwiMS45XCIgc3R5bGU9XCJmaWxsOiNkOWI0MDBcIi8+YCxcbiAgXCJDI1wiOiBgPHRpdGxlPmZpbGVfdHlwZV9jc2hhcnA8L3RpdGxlPjxwYXRoIGQ9XCJNMTkuNzkyLDcuMDcxaDIuNTUzVjkuNjI0SDI0LjlWNy4wNzFoMi41NTJWOS42MjRIMzB2Mi41NTJoLTIuNTV2Mi41NTFIMzBWMTcuMjhIMjcuNDQ5djIuNTUySDI0Ljl2LTIuNTVsLTIuNTUsMCwwLDIuNTUySDE5Ljc5M3YtMi41NWwtMi41NTMsMFYxNC43MjVoMi41NTNWMTIuMTc5SDE3LjI0VjkuNjIyaDIuNTU0Wm0yLjU1Myw3LjY1OEgyNC45VjEyLjE3NkgyMi4zNDVaXCIgc3R5bGU9XCJmaWxsOiMzNjg4MzJcIi8+PHBhdGggZD1cIk0xNC42ODksMjQuMDEzYTEwLjIsMTAuMiwwLDAsMS00LjY1My45MTUsNy42LDcuNiwwLDAsMS01Ljg5LTIuMzM2QTguODM5LDguODM5LDAsMCwxLDIsMTYuMzY3LDkuNDM2LDkuNDM2LDAsMCwxLDQuNDEyLDkuNjQ4YTguMTgxLDguMTgxLDAsMCwxLDYuMjU5LTIuNTc3LDExLjEsMTEuMSwwLDAsMSw0LjAxOC42Mzh2My43NDVhNi44MSw2LjgxLDAsMCwwLTMuNzIzLTEuMDM2LDQuNzkzLDQuNzkzLDAsMCwwLTMuNywxLjUyOSw1Ljg3OSw1Ljg3OSwwLDAsMC0xLjQwNyw0LjE0Miw1Ljc3NCw1Ljc3NCwwLDAsMCwxLjMyOCwzLjk5Miw0LjU1MSw0LjU1MSwwLDAsMCwzLjU3NSwxLjQ4Nyw3LjI4OCw3LjI4OCwwLDAsMCwzLjkyNy0xLjEwOFpcIiBzdHlsZT1cImZpbGw6IzM2ODgzMlwiLz5gLFxuICBcIkNcIjogYDx0aXRsZT5maWxlX3R5cGVfYzwvdGl0bGU+PHBhdGggZD1cIk0xMC42NzYsMTUuOTczYTEwLjA1MiwxMC4wNTIsMCwwLDAsMS4xNzUsNS4xNTEsNS40NDYsNS40NDYsMCwwLDAsNi4zMDYsMi40MDgsNC4yODQsNC4yODQsMCwwLDAsMy4wOS0zLjZjLjEwNy0uNi4xMDktLjYxLjEwOS0uNjEsMS43MzcuMjUxLDQuNTM3LjY1OCw2LjI3NC45MDZsLS4xMS40NGExMS4yNTYsMTEuMjU2LDAsMCwxLTIuNyw1LjM5LDkuNDM5LDkuNDM5LDAsMCwxLTUuMzY2LDIuNjg4LDE0LjYxLDE0LjYxLDAsMCwxLTguMjc3LS44MTlBMTAuMTUxLDEwLjE1MSwwLDAsMSw1LjQsMjEuNjg3YTE2LjIyNSwxNi4yMjUsMCwwLDEsLjAxOS0xMS40NSwxMC41MzgsMTAuNTM4LDAsMCwxLDguOTYzLTcuMDU0LDEzLjM1MywxMy4zNTMsMCwwLDEsNi42NjYuNTU1LDkuNTcxLDkuNTcxLDAsMCwxLDYuMTY3LDYuOWMuMDk0LjM1Mi4xMTQuNDE3LjExNC40MTctMS45MzIuMzUxLTQuMzE5LjgtNi4yMzgsMS4yMTUtLjM2Mi0xLjkxNS0xLjI2NS0zLjQyOC0zLjItMy45YTUuMjYzLDUuMjYzLDAsMCwwLTYuNjE2LDMuNTcsMTAuNDksMTAuNDksMCwwLDAtLjM4NSwxLjQzOUExMi4zMSwxMi4zMSwwLDAsMCwxMC42NzYsMTUuOTczWlwiIHN0eWxlPVwiZmlsbDojMDA1ZjkxXCIvPmAsXG4gIFwiQysrXCI6IGA8dGl0bGU+ZmlsZV90eXBlX2NwcDwvdGl0bGU+PHBhdGggZD1cIk0xNC43NDIsMjQuMDQ3YTEwLjI0MiwxMC4yNDIsMCwwLDEtNC42NzMuOTE5QTcuNjI4LDcuNjI4LDAsMCwxLDQuMTU1LDIyLjYyLDguODc2LDguODc2LDAsMCwxLDIsMTYuMzY5LDkuNDc2LDkuNDc2LDAsMCwxLDQuNDIyLDkuNjIxYTguMjE2LDguMjE2LDAsMCwxLDYuMjg1LTIuNTg4LDExLjE1MSwxMS4xNTEsMCwwLDEsNC4wMzUuNjQxdjMuNzYxQTYuODM5LDYuODM5LDAsMCwwLDExLDEwLjM5NSw0LjgxMyw0LjgxMywwLDAsMCw3LjI4OCwxMS45M2E1LjksNS45LDAsMCwwLTEuNDEzLDQuMTU5QTUuOCw1LjgsMCwwLDAsNy4yMDksMjAuMWE0LjU3LDQuNTcsMCwwLDAsMy41OSwxLjQ5Myw3LjMxOSw3LjMxOSwwLDAsMCwzLjk0My0xLjExM1pcIiBzdHlsZT1cImZpbGw6Izk4NGM5M1wiLz48cG9seWdvbiBwb2ludHM9XCIxNy4xMTIgMTQuODI5IDE3LjExMiAxMi40ODUgMTkuNDU2IDEyLjQ4NSAxOS40NTYgMTQuODI5IDIxLjggMTQuODI5IDIxLjggMTcuMTcyIDE5LjQ1NiAxNy4xNzIgMTkuNDU2IDE5LjUxNSAxNy4xMTIgMTkuNTE1IDE3LjExMiAxNy4xNzIgMTQuNzcgMTcuMTcyIDE0Ljc3IDE0LjgyOCAxNy4xMTIgMTQuODI5XCIgc3R5bGU9XCJmaWxsOiM5ODRjOTNcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjUuMzEzIDE0LjgyOSAyNS4zMTMgMTIuNDg1IDI3LjY1NyAxMi40ODUgMjcuNjU3IDE0LjgyOSAzMCAxNC44MjkgMzAgMTcuMTcyIDI3LjY1NyAxNy4xNzIgMjcuNjU3IDE5LjUxNSAyNS4zMTMgMTkuNTE1IDI1LjMxMyAxNy4xNzIgMjIuOTcxIDE3LjE3MiAyMi45NzEgMTQuODI4IDI1LjMxMyAxNC44MjlcIiBzdHlsZT1cImZpbGw6Izk4NGM5M1wiLz5gLFxuICBcIkNsb2p1cmVcIjogYDxwYXRoIGQ9XCJNMTYsMkExNCwxNCwwLDEsMCwzMCwxNiwxNC4wMTYsMTQuMDE2LDAsMCwwLDE2LDJcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE1LjQ4OCwxNi4yNTJjLS4xMjYuMjczLS4yNjUuNTc5LS40MDguOUEyMi45NjMsMjIuOTYzLDAsMCwwLDEzLjgsMjAuNjA1YTUuMTgxLDUuMTgxLDAsMCwwLS4xMTksMS4xNTVjMCwuMTc0LjAwOS4zNTYuMDI0LjU0MmE2LjY1OCw2LjY1OCwwLDAsMCw0LjQxMy4wNjcsMy45NjYsMy45NjYsMCwwLDEtLjQ0LS40NjZjLS45LTEuMTQ2LTEuNC0yLjgyNy0yLjE5NC01LjY1MlwiIHN0eWxlPVwiZmlsbDojOTFkYzQ3XCIvPjxwYXRoIGQ9XCJNMTIuMTY5LDEwLjU1NmE2LjY3Nyw2LjY3NywwLDAsMC0uMDc3LDEwLjg4MWMuNDExLTEuNzEsMS40NC0zLjI3NiwyLjk4My02LjQxNS0uMDkyLS4yNTItLjItLjUyNy0uMzEzLS44MTdhMTAuMjA3LDEwLjIwNywwLDAsMC0xLjYtMi44ODIsNC40MzksNC40MzksMCwwLDAtMS0uNzY3XCIgc3R5bGU9XCJmaWxsOiM5MWRjNDdcIi8+PHBhdGggZD1cIk0yMS44NCwyMy43YTEwLjg3NywxMC44NzcsMCwwLDEtMi4yNTctLjQ3MUE4LjAzNiw4LjAzNiwwLDAsMSwxMC43MTYsOS45ODJhNS45LDUuOSwwLDAsMC0xLjQtLjE3MWMtMi4zNTguMDIyLTQuODQ4LDEuMzI3LTUuODg0LDQuODUyYTYuNjA2LDYuNjA2LDAsMCwwLS4wNzQsMS4zNjEsMTIuNjQ5LDEyLjY0OSwwLDAsMCwyMyw3LjI3NCwxNC43MzcsMTQuNzM3LDAsMCwxLTMuNDQ4LjQ1OUE4Ljg4MSw4Ljg4MSwwLDAsMSwyMS44NCwyMy43XCIgc3R5bGU9XCJmaWxsOiM2M2IxMzJcIi8+PHBhdGggZD1cIk0xOS40NjMsMjEuMjQ0YTMuNTMsMy41MywwLDAsMCwuNS4xNzJBNi42OSw2LjY5LDAsMCwwLDIyLjcsMTYuMDIzaDBhNi42ODEsNi42ODEsMCwwLDAtOC43OS02LjM0OGMxLjM1OCwxLjU0OCwyLjAxMSwzLjc2MSwyLjY0Myw2LjE4MXYwcy4yLjY3My41NDcsMS41NjJhMTUuNDM0LDE1LjQzNCwwLDAsMCwxLjM2MywyLjc4OCwyLjkyNCwyLjkyNCwwLDAsMCwxLDEuMDM2XCIgc3R5bGU9XCJmaWxsOiM5MGI0ZmVcIi8+PHBhdGggZD1cIk0xNi4wMTMsMy4zNzJBMTIuNjMyLDEyLjYzMiwwLDAsMCw1LjczMSw4LjY1NmE2LjQyNSw2LjQyNSwwLDAsMSwzLjQ4LTEuMDA5LDYuOCw2LjgsMCwwLDEsMy4xODIuNzcyYy4xMzQuMDc3LjI2MS4xNi4zODYuMjQ2YTguMDM4LDguMDM4LDAsMCwxLDExLjI3Myw3LjM1OGgwYTguMDEzLDguMDEzLDAsMCwxLTIuMzkxLDUuNzE5LDkuODcxLDkuODcxLDAsMCwwLDEuMTQzLjA2NCw2LjI0LDYuMjQsMCwwLDAsNC4wNTEtMS4yNjMsNS4zNDgsNS4zNDgsMCwwLDAsMS43LTIuOTA2QTEyLjYzMiwxMi42MzIsMCwwLDAsMTYuMDEzLDMuMzcyXCIgc3R5bGU9XCJmaWxsOiM1ODgxZDhcIi8+YCxcbiAgXCJDTWFrZVwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiOS45NTVcIiB5MT1cIjkuMDk2XCIgeDI9XCIxNi42OFwiIHkyPVwiMjMuMzI0XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMSwgMCwgMCwgLTEsIDAsIDMyKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzEwMTFhMVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM2OTY5ZTFcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCIxNi4yMzFcIiB5MT1cIjE5LjY1NVwiIHgyPVwiMjUuNjE4XCIgeTI9XCIzLjc4MlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEsIDAsIDAsIC0xLCAwLCAzMilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNiNDBlMGVcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZmY1OTU5XCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiY1wiIHgxPVwiMjEuNjYzXCIgeTE9XCI0LjgyM1wiIHgyPVwiOC4zODFcIiB5Mj1cIjUuOTM4XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMSwgMCwgMCwgLTEsIDAsIDMyKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzAxYTMwMFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMwMWRmMDBcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJkXCIgeDE9XCIxNC42NDNcIiB5MT1cIjguMzY4XCIgeDI9XCIxNC40NzJcIiB5Mj1cIjE0LjE0NVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEsIDAsIDAsIC0xLCAwLCAzMilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM4NDg0ODRcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZDJkMmQyXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfY21ha2U8L3RpdGxlPjxwYXRoIGQ9XCJNMTcuMjU3LDE2LjkxOSwyLjI0NiwyOS43NDksMTUuOTk0LDIuMjgzWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMi4yNjIsMjkuNzY4bC0uMDM4LS4wM0wxNi4wMTIsMi4xOTNsLjAwOC4wODhMMTcuMjgzLDE2LjkzbC0uMDEuMDA4Wk0xNS45NzcsMi4zNzQsMi4zMjQsMjkuNjQ5LDE3LjIzLDE2LjkwOFpcIi8+PHBhdGggZD1cIk0xNy45NTIsMjQuOTMxLDE2LDIuMjgsMjkuNzY3LDI5Ljc1MVpcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTI5LjgxOCwyOS44bC0uMDYxLS4wMjVMMTcuOTI5LDI0Ljk0OGwwLS4wMTVMMTUuOTc1LDIuMjgybC4wNDctLjAxM1pNMTcuOTc2LDI0LjkxMywyOS43MTUsMjkuNywxNi4wMzYsMi40MDhaXCIvPjxwYXRoIGQ9XCJNMTEuMTYsMjIuMDk0bDE4LjYyMSw3LjY1NEgyLjI1WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2MpXCIvPjxwYXRoIGQ9XCJNMjkuNzgxLDI5Ljc3M0gyLjE4M2wuMDUxLS4wNDQsOC45MjEtNy42NjUuMDE0LjAwNiwxOC42MjIsNy42NTVabS0yNy40NjQtLjA1SDI5LjY1NGwtMTguNDg5LTcuNlpcIi8+PHBhdGggZD1cIk0xMS4xODksMjIuMTEybDYuMDU5LTUuMTY4Ljg0Myw3Ljk4WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2QpXCIvPjxwYXRoIGQ9XCJNMTguMTQ5LDI1bC0uMDc3LS4wMzItNi45NzgtMi44NDIsNi4xOTQtNS4yODMuMDEuMDk0Wm0tNi44NjUtMi45LDYuNzQ4LDIuNzQ5LS44MjQtNy44WlwiLz48cGF0aCBkPVwiTTI5LjcsMjkuOTExSDIuMjg1YS4yMjEuMjIxLDAsMCwxLS4xODItLjA4OC4yMjIuMjIyLDAsMCwxLC4wMjItLjJMMTUuODY0LDIuMTg3YS4xNjkuMTY5LDAsMCwxLC4xNC0uMWgwYS4xNTQuMTU0LDAsMCwxLC4xMy4wODVMMjkuODY3LDI5LjYwN2EuMjM4LjIzOCwwLDAsMSwuMDIuMjI2QS4yMTEuMjExLDAsMCwxLDI5LjcsMjkuOTExWm0tMjcuNDY4LS4xNmEuNDg0LjQ4NCwwLDAsMCwuMDU3LjAxMWgyNy40bC4wNzMtLjAwOWEuMjIxLjIyMSwwLDAsMC0uMDI4LS4wNzdMMTYsMi4yNDgsMTYsMi4yNiwyLjI2MSwyOS42ODRhLjI3OS4yNzksMCwwLDAtLjAyNS4wNjdaXCIvPmAsXG4gIFwiQ09CT0xcIjogYDxwYXRoIGQ9XCJNMjIuMjQsNi41NDZhNC40NDksNC40NDksMCwwLDAsMS43NjUtMi41MjIsNC42MzYsNC42MzYsMCwwLDEtLjAxOCwyLjE1N2MtLjIyMy41ODItLjU2NywxLjEwNy0uODM0LDEuNjY5YTIxLjc3MiwyMS43NzIsMCwwLDEsNC41NTktMi45MzhDMjcuMjMsNi40LDI1Ljg5MSw3LjMsMjQuOTA3LDguNDQyYy4xOS40MDkuMjguOTg5LjgsMS4xMDlhNS4wMzYsNS4wMzYsMCwwLDAsMi41LjE1NWMuOTEyLS4zMTMsMS4zNDUtMS4yNTgsMS44LTIuMDM1VjkuMTRhMTUuNzM4LDE1LjczOCwwLDAsMS0uNTgyLDEuNzQ4Yy4yLjU0Ny40MDksMS4wOTIuNTgyLDEuNjQ3di45NTJjLS4yMTQuMzY4LS40NDIuNzI2LS42NjMsMS4wODlhNS4yOTMsNS4yOTMsMCwwLDAtMS4wNjgtMS4xNjIsNC4wMyw0LjAzLDAsMCwwLTEuODUxLS4xMjUsMy4yMTIsMy4yMTIsMCwwLDAsMi40MTMsMS40N2MtLjM1OS4zNy0uNjYzLjkxMi0xLjIzLjk2OS0xLjY0MS4yNDctMy4yMDctLjUwNS00LjgzOS0uNS0uMjgyLjAyLS43MDcuMDI0LS43ODUuMzcyLDAsLjczNS4yMTcsMS40NTMuMTksMi4xODgtLjA1OSwxLjI1OC0uNTEyLDIuNDY2LS41MjksMy43MjZhMTMuNzg1LDEzLjc4NSwwLDAsMCwuODM4LDMuNDQ4Yy0uNTIzLS4wNzctMS4wNDQtLjE2Ni0xLjU2Mi0uMjYtLjEuMjA4LS4xODQuNDItLjI2LjYzNEE0LjUxNCw0LjUxNCwwLDAsMCwyMS44LDI2LjUzMWMtLjA2MS4xMjctLjE4Mi4zODEtLjI0MS41MDhsLS41NzMuMTM4Yy0uMTMxLjI0Ny0uMjYzLjQ5Mi0uNC43MzlhNC40MjEsNC40MjEsMCwwLDAtMi4yLjA2MWMtLjQ2Ni0uMTg2LS45MjgtLjM3Ni0xLjM4OS0uNTY3YTUuOTM5LDUuOTM5LDAsMCwwLC40MDctMi4zMTVjLS4yODItLjk4Mi0xLjYtLjk4NC0yLTEuODc3YTYuMjMzLDYuMjMzLDAsMCwxLTEuMDIyLTIuODUxYy0uODIzLS40MzMtMS40NTUtMS4yMjEtMi40LTEuNC0uMDQ4LjQwOS0uMDgzLjgyLS4xNTMsMS4yMjdBNi4wMTUsNi4wMTUsMCwwLDEsMTAuNDgxLDIyLjZjLjAzOS40MjIuMDc5Ljg0Mi4xMiwxLjI2NS4zNDYuMzI0LjY5MS42NDgsMS4wMzMuOTc0YTkuNzUyLDkuNzUyLDAsMCwxLTEuNDI2LjcxMywxMS4xMTQsMTEuMTE0LDAsMCwxLTEuNjg3LjA3N2MtLjI1OC0uMjU0LS41MTgtLjUwOC0uNzc3LS43NjRhNC44NzEsNC44NzEsMCwwLDAsLjExNC0yLjYwOGMuMTcxLS40LjMyNi0uODEyLjQ3NS0xLjIyMWE1LjU2NSw1LjU2NSwwLDAsMS0zLjAxLjIwNiw1LjEyLDUuMTIsMCwwLDEtMy4yOS00LjMzLDMuODU5LDMuODU5LDAsMCwxLDEuNDA3LTMuMjY4QTYuNDEsNi40MSwwLDAsMCwzLjIsMTYuMjU5YTMuMDM4LDMuMDM4LDAsMCwwLDIuNSwyLjQ2NiwzLjQ2MiwzLjQ2MiwwLDAsMCwxLjk2LS42NDMsNy40OCw3LjQ4LDAsMCwxLC4zNjMtNC4xMzMsNS41MjQsNS41MjQsMCwwLDEsMy41ODYtMi42Niw0LjIzNSw0LjIzNSwwLDAsMCwyLjAxMS0xLjU2NiwxMC42NywxMC42NywwLDAsMSwxLjUyOS0xLjMzYy0uMjI4LS4yMTktLjQ1My0uNDQtLjY4LS42NTlBMi4xNTQsMi4xNTQsMCwwLDAsMTUuOSw2LjAyM2MxLjI4NC0uMywyLjU1MS0uNjYxLDMuODItMS4wMTFhMy43OTMsMy43OTMsMCwwLDAsMS40MTUuNjA2Yy4zMTcuMzQ2LjQ5NCwxLjE1NywxLjEuOTI4TTE4LjQ1OCwxOS45MDhjLjA0Mi43NjgtLjA0OCwxLjY2NS42NzQsMi4xNTUsMC0uNzU1LS4wNDYtMS41MDctLjEtMi4yNlpcIiBzdHlsZT1cImZpbGw6IzAwNWNhNVwiLz5gLFxuICBcIkNvZmZlZVNjcmlwdFwiOiBgPHBhdGggZD1cIk0xMy4xMTQsNS43MjhjLjAyNS4xNTMtLjA1MS4yOC0uMzA2LjQwOGEzLjQ1NywzLjQ1NywwLDAsMC0xLjYzLS4yMjljLS42MzcuMDUxLTEuMTcyLjI1NS0xLjEuNjg4LjEuNDMzLjcxMy42ODgsMS44MDguNTg2LDIuNjc0LS4yMjksMi42NDktMi4wMzgsNi41NzEtMi4zOTQsMy4wNTYtLjI4LDQuNzYzLjY2Miw0Ljk5MiwxLjgwOC4xNzguODkxLS41NiwxLjc1Ny0yLjc3NiwxLjkzNi0xLjk2MS4xNzgtMy4xMDctLjM1Ny0zLjIwOS0uODkxLS4wNTEtLjI4LjEtLjY4OCwxLjA0NC0uNzkuMS40MzMuNjM3Ljg5MSwxLjkxLjc2NEMyMS4zNDEsNy41MzYsMjIuMSw3LjIsMjIsNi43Yy0uMS0uNTM1LTEuMDctLjg0LTIuNi0uNzEzLTMuMTA3LjI4LTMuODcxLDEuOTg3LTYuNTIsMi4yMTZDMTEsOC4zNzYsOS40NzIsNy42ODksOS4yNjgsNi42N2MtLjA3Ni0uMzgyLS4wNzYtMS4yNzMsMS45MS0xLjQ1MiwxLjAxOS0uMDc2LDEuODM0LjEsMS45MzYuNTA5Wk0zLjE4MSwxNi4zNzRBNS4yNzksNS4yNzksMCwwLDAsMi4wMSwxOS45OWE0LjIwNiw0LjIwNiwwLDAsMCwxLjY1NSwzLjA1Niw0LDQsMCwwLDAsMy4zNjIuNzksMTEuNDM0LDExLjQzNCwwLDAsMCwxLjUtLjQ4NCw0LjIzOCw0LjIzOCwwLDAsMS0yLjc1MS0xLjAxOSw0LjEzLDQuMTMsMCwwLDEtMS43MzItMi44MjdBMy43OSwzLjc5LDAsMCwxLDQuNjU4LDE2LjUsMy45NzcsMy45NzcsMCwwLDEsNy40MDksMTVhNC44MDYsNC44MDYsMCwwLDEsMy4yMDkuOTQyLDYuOTUsNi45NSwwLDAsMC0uODY2LS44NjYsNC4xLDQuMSwwLDAsMC0zLjQ2NC0uNjg4LDUuMiw1LjIsMCwwLDAtMy4xMDcsMS45ODdaTTE2LjgzMywxMC40OUE0MC44MzcsNDAuODM3LDAsMCwxLDguNSw5LjdDNi4yMzcsOS4xNCw1LjA0LDguNTI5LDUuMDQsNy43NGMwLS4zMzEuMTUzLS42MTEuNjExLS45NDItMS40MjYuNTYtMi4xOSwxLjAxOS0yLjE5LDEuNzMyLjA3Ni43OSwxLjM1LDEuNTc5LDMuOTQ4LDIuMTlhMzkuNDQzLDM5LjQ0MywwLDAsMCw5LjM0Ny45NDJBMzguOTkzLDM4Ljk5MywwLDAsMCwyNi4xLDEwLjcyYzIuNi0uNjExLDMuODQ2LTEuNDI2LDMuODQ2LTIuMTksMC0uNTYtLjU2LTEuMS0xLjU3OS0xLjVhLjg2Mi44NjIsMCwwLDEsLjQwOC42ODhjMCwuNzktMS4xNzIsMS40MjYtMy41NCwxLjk2MUEzOS4zMjQsMzkuMzI0LDAsMCwxLDE2LjgzMywxMC40OVptOS4zNzMsMi4xOWE0Mi4zMTUsNDIuMzE1LDAsMCwxLTkuMzQ3Ljk0Miw0NC4xNDQsNDQuMTQ0LDAsMCwxLTkuNDI0LS45NDJjLTIuMTktLjU2LTMuMzYyLTEuMTcyLTMuNzY5LTEuODA4YTIzLjE4NiwyMy4xODYsMCwwLDAsMi42LDcuNjQxYy45NDIsMS40MjYsMS44ODUsMi42NzQsMi44MjcsNC4wMjRhOS44ODMsOS44ODMsMCwwLDEsLjg2NiwyLjM2OSw0LjU1OSw0LjU1OSwwLDAsMCwyLjYsMS43MzIsMTAuNjExLDEwLjYxMSwwLDAsMCw0LjE3Ny42MTFoLjE1M2ExMS44MzksMTEuODM5LDAsMCwwLDQuMy0uNjExLDQuODY5LDQuODY5LDAsMCwwLDIuNTIxLTEuNzMyaC4wNzZhOS41OTIsOS41OTIsMCwwLDEsLjc5LTIuMzY5Yy45NDItMS4zNSwxLjg4NS0yLjYsMi44MjctNC4wMjRBMjQuNjIsMjQuNjIsMCwwLDAsMzAsMTAuODcyQzI5LjQ5MSwxMS41ODUsMjguMzE5LDEyLjIsMjYuMjA1LDEyLjY4MVpcIiBzdHlsZT1cImZpbGw6IzZmNGUzN1wiLz5gLFxuICBcIkNyeXN0YWxcIjogYDxwYXRoIGQ9XCJNMjkuOTQxLDE5LjgxNiwxOS44LDI5LjkyOGMtLjAyOC4wMjgtLjA4NS4wMjgtLjE2OS4wMjhMNS44LDI2LjI2N2MtLjAyOCwwLS4wODQtLjAyOC0uMTEzLS4xMTNMMiwxMi4zNTJhLjQxOS40MTksMCwwLDEsLjAyOC0uMTY5TDEyLjE2OCwyLjA3MmMuMDI4LS4wMjguMDg0LS4wMjguMTY5LS4wMjhsMTMuODMsMy43MThjLjAyOCwwLC4wODQuMDI4LjExMy4xMTNsMy42OSwxMy44QzMwLjAyNiwxOS43MzIsMzAsMTkuNzg4LDI5Ljk0MSwxOS44MTZaTTE2LjM5Myw4LjgzMiwyLjgxNywxMi40OTNxLS4wNDIsMCwwLC4wODRMMTIuNzYsMjIuNTJjLjAyOC4wMjguMDI4LDAsLjA4NCwwTDE2LjUwNiw4Ljk3MkMxNi40NDksOC44MzIsMTYuMzkzLDguODMyLDE2LjM5Myw4LjgzMlpcIiBzdHlsZT1cImZpbGw6I2M4YzhjOFwiLz5gLFxuICBcIkNTU1wiOiBgPHBvbHlnb24gcG9pbnRzPVwiNS45MDIgMjcuMjAxIDMuNjU2IDIgMjguMzQ0IDIgMjYuMDk1IDI3LjE5NyAxNS45ODUgMzAgNS45MDIgMjcuMjAxXCIgc3R5bGU9XCJmaWxsOiMxNTcyYjZcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTYgMjcuODU4IDI0LjE3IDI1LjU5MyAyNi4wOTIgNC4wNjEgMTYgNC4wNjEgMTYgMjcuODU4XCIgc3R5bGU9XCJmaWxsOiMzM2E5ZGNcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTYgMTMuMTkxIDIwLjA5IDEzLjE5MSAyMC4zNzIgMTAuMDI2IDE2IDEwLjAyNiAxNiA2LjkzNSAxNi4wMTEgNi45MzUgMjMuNzUgNi45MzUgMjMuNjc2IDcuNzY0IDIyLjkxNyAxNi4yODIgMTYgMTYuMjgyIDE2IDEzLjE5MVwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE2LjAxOSAyMS4yMTggMTYuMDA1IDIxLjIyMiAxMi41NjMgMjAuMjkyIDEyLjM0MyAxNy44MjcgMTAuNjcgMTcuODI3IDkuMjQgMTcuODI3IDkuNjczIDIyLjY4IDE2LjAwNCAyNC40MzggMTYuMDE5IDI0LjQzNCAxNi4wMTkgMjEuMjE4XCIgc3R5bGU9XCJmaWxsOiNlYmViZWJcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTkuODI3IDE2LjE1MSAxOS40NTUgMjAuMjkgMTYuMDA4IDIxLjIyIDE2LjAwOCAyNC40MzYgMjIuMzQ0IDIyLjY4IDIyLjM5MSAyMi4xNTggMjIuOTI4IDE2LjE1MSAxOS44MjcgMTYuMTUxXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTYuMDExIDYuOTM1IDE2LjAxMSA4Ljg1NSAxNi4wMTEgMTAuMDE4IDE2LjAxMSAxMC4wMjYgOC41NTUgMTAuMDI2IDguNTU1IDEwLjAyNiA4LjU0NSAxMC4wMjYgOC40ODMgOS4zMzEgOC4zNDIgNy43NjQgOC4yNjggNi45MzUgMTYuMDExIDYuOTM1XCIgc3R5bGU9XCJmaWxsOiNlYmViZWJcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTYgMTMuMTkxIDE2IDE1LjExMSAxNiAxNi4yNzQgMTYgMTYuMjgyIDEyLjYxMSAxNi4yODIgMTIuNjExIDE2LjI4MiAxMi42MDEgMTYuMjgyIDEyLjUzOSAxNS41ODcgMTIuMzk5IDE0LjAyIDEyLjMyNSAxMy4xOTEgMTYgMTMuMTkxXCIgc3R5bGU9XCJmaWxsOiNlYmViZWJcIi8+YCxcbiAgXCJDU1ZcIjogYDxwYXRoIGQ9XCJNMjIuMDM4LDJINi4zNzVhMS43NTUsMS43NTUsMCwwLDAtMS43NSwxLjc1djI0LjVBMS43NTUsMS43NTUsMCwwLDAsNi4zNzUsMzBoMTkuMjVhMS43NTUsMS43NTUsMCwwLDAsMS43NS0xLjc1VjYuODU2Wm0uNTI1LDIuODQ0LDEuNjYzLDEuNTMxSDIyLjU2M1pNNi4zNzUsMjguMjVWMy43NUgyMC44MTNWOC4xMjVoNC44MTNWMjguMjVaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+PHJlY3QgeD1cIjguMTI1XCIgeT1cIjE1LjA5N1wiIHdpZHRoPVwiMTMuMDc2XCIgaGVpZ2h0PVwiMS43NVwiIHN0eWxlPVwiZmlsbDojODI5ZWMyXCIvPjxyZWN0IHg9XCI4LjEyNVwiIHk9XCIyNC40MzlcIiB3aWR0aD1cIjkuNzYyXCIgaGVpZ2h0PVwiMS43NVwiIHN0eWxlPVwiZmlsbDojODI5ZWMyXCIvPjxyZWN0IHg9XCI4LjEyNVwiIHk9XCIxOS43NjNcIiB3aWR0aD1cIjE1Ljc1XCIgaGVpZ2h0PVwiMS43NVwiIHN0eWxlPVwiZmlsbDojODI5ZWMyXCIvPjxyZWN0IHg9XCI4LjEyNVwiIHk9XCIxMC4yM1wiIHdpZHRoPVwiMTUuNzVcIiBoZWlnaHQ9XCIxLjc1XCIgc3R5bGU9XCJmaWxsOiM4MjllYzJcIi8+YCxcbiAgXCJEXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCIxODUuNDU1XCIgeTE9XCIxNjAxLjY0MVwiIHgyPVwiMTgxLjk1NVwiIHkyPVwiMTYzMC4yMjRcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtNjIuNTIzIC02NjYuNjQ2KSBzY2FsZSgwLjQyNylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZmZmXCIgc3RvcC1vcGFjaXR5PVwiMFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIjE3Ni4xMzZcIiB5MT1cIjE2MDAuNVwiIHgyPVwiMTcyLjYzNlwiIHkyPVwiMTYyOS4wODNcIiB4bGluazpocmVmPVwiI2FcIi8+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfZGxhbmc8L3RpdGxlPjxwYXRoIGQ9XCJNMy45NzgsMTUuNDYyLDMuOTY5LDguNTA5QS41ODguNTg4LDAsMCwxLDQuNSw3Ljk0N2EuNjU4LjY1OCwwLDAsMSwuMDc2LDBsNi4wNzQtLjAwOWExNS43LDE1LjcsMCwwLDEsNi4wNjcuOTUsOC45LDguOSwwLDAsMSwyLjI0NCwxLjM1OSw0LjQ2OSw0LjQ2OSwwLDAsMSwyLjk0Ni0xLjA4Myw0LjExLDQuMTEsMCwwLDEsNC4yNzYsMy45MkE0LjExLDQuMTEsMCwwLDEsMjEuOTA3LDE3Yy0uMDg5LDAtLjE3Ny0uMDA4LS4yNjUtLjAxMmE2LjYxNyw2LjYxNywwLDAsMS0uMjMyLjk1Myw4NS4zODMsODUuMzgzLDAsMCwxLDguNTksMi42VjJIMlYxNS40UTIuOTkyLDE1LjQyLDMuOTc4LDE1LjQ2MlptMjIuOC03Ljk0NGExLjMyLDEuMzIsMCwwLDEsMS4zNzQsMS4yNTksMS4zNzksMS4zNzksMCwwLDEtMi43NDcsMEExLjMyLDEuMzIsMCwwLDEsMjYuNzgsNy41MTdaXCIgc3R5bGU9XCJmaWxsOiNiMDM5MzFcIi8+PHBhdGggZD1cIk0xNy44NjEsMTUuNzg3YTQuMTE0LDQuMTE0LDAsMCwwLTEuNzQ4LTMuNDU4LDUuODE0LDUuODE0LDAsMCwwLTEuNTA4LS44MjIsNy4zNTQsNy4zNTQsMCwwLDAtMS42MjktLjQzOCwyMS42MjksMjEuNjI5LDAsMCwwLTIuNTg4LS4xbC0yLjYxOSwwLC4wMDYsNC43MzdhODguODI3LDg4LjgyNywwLDAsMSw5LjkxLDEuNDA4QTQuOTE5LDQuOTE5LDAsMCwwLDE3Ljg2MSwxNS43ODdaXCIgc3R5bGU9XCJmaWxsOiNiMDM5MzFcIi8+PHBhdGggZD1cIk0yMC45OTMsMTguOTc5YTcuOTA2LDcuOTA2LDAsMCwxLTIuMTI4LDIuNTgyLDkuNzM5LDkuNzM5LDAsMCwxLTMuMjU2LDEuNzEsMTEuNTU4LDExLjU1OCwwLDAsMS0xLjk3MS40NzJoLS4wMTVhMzEuODU3LDMxLjg1NywwLDAsMS0zLjMyNi4xMTFsLTUuNjI1LjAyMmEuNjE2LjYxNiwwLDAsMS0uNjg2LS42ODFsLS4wMS03LjczNFEyLjk5MiwxNS40MiwyLDE1LjRWMzBIMzBWMjAuNTQ0YTg1LjM4Myw4NS4zODMsMCwwLDAtOC41OS0yLjZBNi45ODUsNi45ODUsMCwwLDEsMjAuOTkzLDE4Ljk3OVpcIiBzdHlsZT1cImZpbGw6I2IwMzkzMVwiLz48cGF0aCBkPVwiTTIwLjk5MywxOC45NzlhNy45MDYsNy45MDYsMCwwLDEtMi4xMjgsMi41ODIsOS43MzksOS43MzksMCwwLDEtMy4yNTYsMS43MSwxMS41NTgsMTEuNTU4LDAsMCwxLTEuOTcxLjQ3MmgtLjAxNWEzMS44NTcsMzEuODU3LDAsMCwxLTMuMzI2LjExMWwtNS42MjUuMDIyYS42MTYuNjE2LDAsMCwxLS42ODYtLjY4MWwtLjAxLTcuNzM0UTIuOTkyLDE1LjQyLDIsMTUuNFYzMEgzMFYyMC41NDRhODUuMzgzLDg1LjM4MywwLDAsMC04LjU5LTIuNkE2Ljk4NSw2Ljk4NSwwLDAsMSwyMC45OTMsMTguOTc5WlwiIHN0eWxlPVwib3BhY2l0eTowLjMwMDAwMDAxMTkyMDkyOTtpc29sYXRpb246aXNvbGF0ZTtmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0xMC40NzcsMjAuODM1YTE2LjAxNCwxNi4wMTQsMCwwLDAsMi44NzctLjIsNy42MzMsNy42MzMsMCwwLDAsMS42MjgtLjUsNS42MjgsNS42MjgsMCwwLDAsMS4xODctLjc0OCw0LjQ1Nyw0LjQ1NywwLDAsMCwxLjUxOC0yLjI3MSw4OC42OTEsODguNjkxLDAsMCwwLTkuOTEtMS40MDhsLjAwNiw1LjEzM1pcIiBzdHlsZT1cImZpbGw6I2IwMzkzMVwiLz48cGF0aCBkPVwiTTEwLjQ3NywyMC44MzVhMTYuMDE0LDE2LjAxNCwwLDAsMCwyLjg3Ny0uMiw3LjYzMyw3LjYzMywwLDAsMCwxLjYyOC0uNSw1LjYyOCw1LjYyOCwwLDAsMCwxLjE4Ny0uNzQ4LDQuNDU3LDQuNDU3LDAsMCwwLDEuNTE4LTIuMjcxLDg4LjY5MSw4OC42OTEsMCwwLDAtOS45MS0xLjQwOGwuMDA2LDUuMTMzWlwiIHN0eWxlPVwib3BhY2l0eTowLjMwMDAwMDAxMTkyMDkyOTtpc29sYXRpb246aXNvbGF0ZTtmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk0yMC4zODMsMTEuNzQ2YTYuOTkzLDYuOTkzLDAsMCwxLDEuMzYsNC4xNDgsNi42MTgsNi42MTgsMCwwLDEtLjEsMS4xYy4wODgsMCwuMTc2LjAxMi4yNjUuMDEyYTQuMTEsNC4xMSwwLDAsMCw0LjI3Ni0zLjkyLDQuMTEsNC4xMSwwLDAsMC00LjI3Ni0zLjkyLDQuNDcsNC40NywwLDAsMC0yLjk0NiwxLjA4M0E4LjEyMyw4LjEyMywwLDAsMSwyMC4zODMsMTEuNzQ2WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxlbGxpcHNlIGN4PVwiMjYuNzhcIiBjeT1cIjguNzc3XCIgcng9XCIxLjM3NFwiIHJ5PVwiMS4yNTlcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTQuNjczLDIzLjg3N2w1LjYyNS0uMDIyYTMxLjg3MSwzMS44NzEsMCwwLDAsMy4zMjYtLjExMWguMDE1YTExLjQ5LDExLjQ5LDAsMCwwLDEuOTcxLS40NzIsOS43MzksOS43MzksMCwwLDAsMy4yNTYtMS43MSw3LjkwNiw3LjkwNiwwLDAsMCwyLjEyOC0yLjU4Miw2Ljk4NSw2Ljk4NSwwLDAsMCwuNDE3LTEuMDM0LDcuMDU2LDcuMDU2LDAsMCwwLC4zMzItMi4wNTEsNi45OTIsNi45OTIsMCwwLDAtMS4zNi00LjE0OCw4LjEsOC4xLDAsMCwwLTEuNDIxLTEuNSw4Ljg3OCw4Ljg3OCwwLDAsMC0yLjI0NC0xLjM1OSwxNS42ODYsMTUuNjg2LDAsMCwwLTYuMDY3LS45NWwtNi4wNzQuMDA5YS42NTguNjU4LDAsMCwwLS4wNzYsMCwuNTg4LjU4OCwwLDAsMC0uNTMyLjU2MmwuMDA5LDYuOTUyLjAxLDcuNzM0QS42MTYuNjE2LDAsMCwwLDQuNjczLDIzLjg3N1ptMy4xLTEyLjkwOCwyLjYxOSwwYTIxLjYyMywyMS42MjMsMCwwLDEsMi41ODguMSw3LjM1NCw3LjM1NCwwLDAsMSwxLjYyOS40MzgsNS44MTQsNS44MTQsMCwwLDEsMS41MDguODIyLDQuMTE2LDQuMTE2LDAsMCwxLDEuNzQ4LDMuNDU4LDQuOTA1LDQuOTA1LDAsMCwxLS4xNzUsMS4zMjcsNC40NTcsNC40NTcsMCwwLDEtMS41MTgsMi4yNzEsNS42MTMsNS42MTMsMCwwLDEtMS4xODcuNzQ4LDcuNjY2LDcuNjY2LDAsMCwxLTEuNjI4LjUsMTYuMDA5LDE2LjAwOSwwLDAsMS0yLjg3Ny4ybC0yLjY5NCwwLS4wMDYtNS4xMzNaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcbiAgXCJEYXJ0XCI6IGA8cGF0aCBkPVwiTTE2LjczOSwyLjAzN2ExLjMxNCwxLjMxNCwwLDAsMC0uOTE2LjM3N2wtLjAxMy4wMUw3LjIyLDcuMzg5bDguNTY2LDguNTY2di4wMDZsMTAuMywxMC4zLDEuOTYzLTMuNTM2TDIwLjk2OCw1LjcyOGwtMy4zLTMuM2ExLjMwNywxLjMwNywwLDAsMC0uOTI3LS4zODhaXCIgc3R5bGU9XCJmaWxsOiM2NmMzZmFcIi8+PHBhdGggZD1cIk03LjI1LDcuMzUsMi4yODgsMTUuOTMxbC0uMDEuMDEzYTEuMzIyLDEuMzIyLDAsMCwwLS4zNzguOTE5LDEuMywxLjMsMCwwLDAsLjM4Ny45MjRMNi40LDIxLjlsMTYuMDg0LDYuMzI3LDMuNjM2LTIuMDItLjEtLjEtLjAyNSwwLTEwLjA4My0xMC4xSDE1LjlMNy4yNSw3LjM1WlwiIHN0eWxlPVwiZmlsbDojMjE1ODk2XCIvPjxwYXRoIGQ9XCJNNy4xOTIsNy4zNjJsOC43NjQsOC43NzNoLjAxM2wxMC4wODcsMTAuMSwzLjgzOS0uNzMyTDI5LjksMTQuMTRsLTQuMDU0LTMuOTczYTYuNTIxLDYuNTIxLDAsMCwwLTMuNjI0LTEuNjE2bDAtLjA0NEw3LjE5Miw3LjM2MlpcIiBzdHlsZT1cImZpbGw6IzIzNTk5N1wiLz48cGF0aCBkPVwiTTcuMjU2LDcuNDExbDguNzY4LDguNzY4di4wMTNMMjYuMTE2LDI2LjI4NGwtLjczNCwzLjgzOUgxNC4wMjJsLTMuOTcxLTQuMDU2YTYuNTIyLDYuNTIyLDAsMCwxLTEuNjE0LTMuNjI1bC0uMDQ0LDBMNy4yNTYsNy40MTFaXCIgc3R5bGU9XCJmaWxsOiM1OGI2ZjBcIi8+YCxcbiAgXCJEaGFsbFwiOiBgPHBhdGggZD1cIk0xNiwyLjA3QTEzLjkzLDEzLjkzLDAsMSwxLDIsMTYsMTMuOTMsMTMuOTMsMCwwLDEsMTYsMi4wN1pNMTMuMjgsMjIuMzJhMS40OSwxLjQ5LDAsMSwxLTEsMS44M0ExLjQ5LDEuNDksMCwwLDEsMTMuMjgsMjIuMzJabTgtMTUuNjhhLjUzLjUzLDAsMCwxLC4zOC42Ni41Mi41MiwwLDAsMS0uNjUuMzhsLS41LS4xM2E0Mi42Nyw0Mi42NywwLDAsMC0uMzcsNy4wN0MxOC4wNiwxNi40NSwxNC4zOSwyMiwxNC4zOSwyMmwxLjkzLTcuMThhMSwxLDAsMCwwLC44OS0uNjUuOTEuOTEsMCwwLDAtMS43NS0uNDcsMSwxLDAsMCwwLC40NSwxTDE0LDIxLjg1YTY4LjM4LDY4LjM4LDAsMCwwLTEuMzQtOS4yNSwzNC4yOCwzNC4yOCwwLDAsMCwzLjIxLTYuMzFsLS41LS4xM0EuNTUuNTUsMCwwLDEsMTUsNS41YS41My41MywwLDAsMSwuNjYtLjM4bDUuNjgsMS41MlpcIiBzdHlsZT1cImZpbGw6I2I3YjdiNztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz5gLFxuICBcIkRpZmZcIjogYDxyZWN0IHg9XCI2Ljk3NVwiIHk9XCIzXCIgd2lkdGg9XCIxOC4wNVwiIGhlaWdodD1cIjYuMDE3XCIgc3R5bGU9XCJmaWxsOiNjMDAwMDBcIi8+PHBhdGggZD1cIk0xMi45OTIsMTAuOTV2Ni4wMTdINi45NzV2Ni4wMTdoNi4wMTdWMjloNi4wMTdWMjIuOTgzaDYuMDE3VjE2Ljk2N0gxOS4wMDhWMTAuOTVaXCIgc3R5bGU9XCJmaWxsOmdyZWVuXCIvPmAsXG4gIFwiRGphbmdvL0ppbmphMlwiOiBgPGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPVwiYVwiIGN4PVwiMTZcIiBjeT1cIi0xMTkuMjgzXCIgcj1cIjEzLjVcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLCAwLCAwLCAtMC45NDUsIDAsIC05Ni43MzUpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjNTc1NzU3XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzJmMmYyZlwiLz48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2ppbmphPC90aXRsZT48cGF0aCBkPVwiTTI5LjM0LDMuMjQxYTM4LjI3MSwzOC4yNzEsMCwwLDEtOS40NTEsMy4wNGMtNC4yNDEuNTUtMTIuMzI5LDEuMS0xMy45MzUuNzEyQTIzLjMsMjMuMywwLDAsMSwzLjIsNi4xNTFsLjMzNCwxLjEzMkwyLjUsOC4xODhsLjE4My4zMjMuNDI0LjAzMiwxLjMuMTYyLjE4My41ODIuNzI3LjA2Ni4zNjQsMS4yMjhzMS41NDQuMTMsMiwuMTMsMS4zNjMtLjA2NCwxLjM2My0uMDY0bC4wMy40ODUuMzM0LjA2NHYuNTVsLS43MjguNjQ4LjE4My4wMzJ2LjIyNWExNS44MTYsMTUuODE2LDAsMCwxLTIuMy4wMzRjLS42NjYtLjEtLjc4OC0uMS0uNzg4LS4xbC0uMDYuMDY0LS4wMy4yOTFoLjE1MWwuMDYsMS4yNjIsMy4zNjMtLjEzLS4yNDMsNC4zNjUtLjAzLjU0OS0yLjg0OC0uMTYyLS4wMy0xLjE2NGguNjM1bC4wNjEtLjQ1My41NzUtLjEzLjA5MS0uMTI4LTIuMTUxLS41MTgtMS42MzYuNDg1LjI3My4yMjdoLjI3M2wuMDMuMzg5LjU3NS4wMzJWMTguN2wtLjYzNS4xNjIuMTIxLjI1Ny4xNTEuMXYuODczaC4zOTR2NC4wNDFsLS42MzcuMS4wOTEsMS4xNjQuMzkzLjA2Ni0uMDYsMi42NTEsMS43MjcuMDMyLS4zNjQtMi42MTksMi42MDUtLjA2NC0uMTgxLDEuNDIyLS4yNDMsMSwyLjYzNS4wMzIuMDMtMi41ODYsMS44MTctLjE2Mi0uMDksMS42NDktLjA2MS45NjloMS41NDZsLS4wNjEtMi42NTEuMjEzLjAzNC4wNi0xLjI2MmgtLjI0M2wtLjA5LS41MThMMTMuOCwyMS45bC4wNi0xLjcxM2guMzMzVjE5LjE0OWwtLjQyNC4wMzIuMDYxLTEuMjIuNDkzLS4wNDkuMDIzLS40LjI4LS4wNDEuMjg3LS4yMThMMTMuMTg3LDE2LjlsLTEuNzEyLjM3OS4xNjcuMjc0LjE4MS0uMDE1LjIxMS0uMDA4LjAzOS41LjQ3Ny0uMDIzLjAwOSwxLjA4Mi0yLjA1My0uMDQ3LjA2OS0xLjE1Ni4wNjctMS4wNTFWMTUuNDU1TDEwLjcsMTRsNC4xMTEtLjIxLDQuODkyLS4yODIuMDQ2LjkyOS0uMTc0LDIuMjMxTDE5LjUsMTguNzQ0bC0xLjgtLjAzMi0uMDA5LTEuNDU1LjY2Ny0uMDI0LjAzLS40MTEuMjczLS4wNDEtLjAxNC0uMDgxLjI3My0uMDE1LjE1MS0uMkwxNy4wMzQsMTYsMTUsMTYuNDRsLjE0NC4yNTEuMjI3LS4wMTd2LjExNGguMjh2LjQ2bC42LjAwOC0uMDA3LDEuMjc3aC0uNjA1bC0uMDA5LjI5MS4yMTMuMDI0LS4wMjMsMS4xMDguNDQ3LjAyNC0uMDUzLDQuMzktLjU5MS4xMi4wMDcuMjFoLjIwNnYxLjEyNGguMzRsLS4wOSwxLjUzNkwxNS45NzQsMjguN2wyLjE1MS4wNTYtLjA2OS0xLjE2NC0uMTU4LS45NjktLjAzMS0uODQxLDEuODI2LS4wMzItLjA1MywxLjMtLjAwOSwxLjM3NCwxLjAzMS4wODEsMS40LS4wNTYuNDQtLjEzLS4yNDMtLjczNi0uMDYtMS4xNTYtLjExNC0uODI0LDEuNzQyLS4wNjQtLjA3NiwxLjAxLS4wMDcsMS41ODUuNy4wNjQuNjktLjAxNS4zMzMtLjEwNS0uMi0xLjVMMjUuMiwyNS40NDVsLjMtLjAzMkwyNS41LDI0LjRsLjA4My0uMDE3LS4wMTQtLjIxOGgtLjM0MWwtLjA2OS0uNzQ0TDI1LjEzLDIwLjJsLjI1Ny0uMDA4VjE5LjEzM2wuMTA3LjAxN3YtLjIxbC0uMzgtLjAzNC4wMDktMS4yMjguNjM1LS4wNTYtLjAzNy0uNDEzLjI4LS4wMjQtLjAxNi0uMDgxLjM3MS0uMTg2LTEuODg2LS4zNzktMS45MTYuMzg5LjEyMS4yMjYuMy0uMDI0LjAxNi4xaC4yNWwuMDE0LjQ4NS42MjEtLjAwOC4wNTMsMS4xODgtMi4yLS4wMTctLjI1Ny0xLjc4Ni0uMjA2LS45NDYtLjE2Ni0xLjcuMS0uOTkzLDQuMzc3LS4zMzIuMDE0LTEuNDc5LjIyLS4wNTYtLjAxNC0uMjI1LS4xNjctLjFzLTIuMzkzLjM1NS0zLjE1MS40MzZsLS4zNzEuMDQtLjAyMy0uMjc0LS45MDUtLjQ3NC4wMTEtLjU1Mi4zMTEtLjAwOS4wMjMtLjc1OWEyNC44MDcsMjQuODA3LDAsMCwwLDIuNTQ0LS4yODNjLjY4OS0uMTYyLDEuNjY2LS4zMjMsMS42NjYtLjMyM0wyNi4yLDcuODA5bC45MTctLjI2Ny4wNzYtLjIxLDIuMDc0LS41NzQuMjM2LS4xOTQtLjc4OC0xLjcyMi4wNzYtLjM4OS40LS4yMS4yODgtLjg4MVpNMTkuMzc0LDkuOGwtLjAxMS42MjYuNDcuMDItLjAzLjU5NC0uOTIxLjYtLjA1Ny4xNzQuMzcxLDAsMCwuMTQ2LTIuODE0LjEzNy4wMTktLjQxNi4xMjgtLjIwNy4wMDktLjEzMywwLS4yODYuMDgtLjE5LjAzLS4xNTR2LS4xMWwuMTIxLS40ODVabS01Ljg4NS41MzMtLjA2OS40MjEuMjIuMjU5LS4wMTQuNDUzLjIuMzE1LS4wNTMuMzcyLjE1MS4yMTgtMi44NzEuMTEzLS4wMDctLjEuMzMzLS4wNDEuMDE2LS4xMjItLjcyNy0uMzk1LS4wMzktLjYzMS4zNDgtLjAxNy4wMy0uNjhabTQuMjQ5LDkuNywxLjc0Mi4xMTNMMTkuNDIsMjIuNWwuMjI3LDEuOTIzTDE3LjgsMjQuMzU0Wm0tMTEuNjYzLjEsMi43ODguMTQ1TDguNjIsMjEuOXYxLjM1OWwuMi43NTktMi43MjcuMTNabTE3Ljg0My4wMTV2NC4wMWwtMS43NzIuMTMtLjA2MS0yLjExOC0uMi0xLjk3M1pNMTAuNSwyMC4yNGwyLjA2LjAwOC4wMjEsMy43MThMMTAuNjU3LDI0bC0uMS0xLjIwNS0uMDA3LTEuMlpcIiBzdHlsZT1cInN0cm9rZTpyZWQ7c3Ryb2tlLXdpZHRoOjAuNXB4O2ZpbGw6dXJsKCNhKVwiLz5gLFxuICBcIkRvY2tlclwiOiBgPHBhdGggZD1cIk0xNi41NCwxMi42NjNIMTkuNHYyLjkyNGgxLjQ0NmE2LjI3Miw2LjI3MiwwLDAsMCwxLjk4OC0uMzMzLDUuMDkxLDUuMDkxLDAsMCwwLC45NjYtLjQzNiwzLjU4NCwzLjU4NCwwLDAsMS0uNjctMS44NDksMy45MDcsMy45MDcsMCwwLDEsLjctMi43NTNsLjMtLjM0OC4zNTguMjg4YTQuNTU4LDQuNTU4LDAsMCwxLDEuNzk1LDIuODkyLDQuMzc1LDQuMzc1LDAsMCwxLDMuMzE5LjMwOWwuMzkzLjIyNi0uMjA3LjRhNC4xNDEsNC4xNDEsMCwwLDEtNC4xNTcsMS45ODNjLTIuNDgsNi4xNjgtNy44NzEsOS4wODgtMTQuNDA5LDkuMDg4LTMuMzc4LDAtNi40NzYtMS4yNjMtOC4yNDEtNC4yNTlsLS4wMjktLjA0OUwyLjcsMjAuMjI3YTguMzE2LDguMzE2LDAsMCwxLS42NTktNC4yMDhsLjA0LS40MzNINC41MjZWMTIuNjYzSDcuMzg3VjkuOGg1LjcyMVY2Ljk0MkgxNi41NHY1LjcyMVpcIiBzdHlsZT1cImZpbGw6IzAwOTZlNlwiLz48cGF0aCBkPVwiTTEyLjAwNiwyNC41NjdhNi4wMjIsNi4wMjIsMCwwLDEtMy4xNC0zLjA4OSwxMC4zMjksMTAuMzI5LDAsMCwxLTIuMjY0LjM0M3EtLjUuMDI4LTEuMDQ1LjAyOC0uNjMyLDAtMS4zMzEtLjAzN2E5LjA1MSw5LjA1MSwwLDAsMCw3LDIuNzY5UTExLjYxOCwyNC41ODEsMTIuMDA2LDI0LjU2N1pcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTcuMDgsMTMuMzQ2aC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N0g2LjdWMTMuMzQ2Wm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yWm0tLjM2OCwwaC4ydjIuMDY3aC0uMlYxMy4zNDZaTTUsMTMuMTRINy40ODJ2Mi40NzlINVptMi44NTktMi44NjFoMi40OHYyLjQ3OUg3Ljg2M1ptMi4wNzcuMjA3aC4ydjIuMDY2aC0uMlptLS4zNzYsMGguMnYyLjA2NmgtLjJabS0uMzc2LDBoLjJ2Mi4wNjZoLS4yVjEwLjQ4NlptLS4zNzYsMGguMnYyLjA2NmgtLjJabS0uMzc2LDBoLjJ2Mi4wNjZoLS4yWm0tLjM2OCwwaC4ydjIuMDY2aC0uMlptLS4yMDcsMi42NTNoMi40OHYyLjQ4SDcuODYzVjEzLjE0Wm0yLjA3Ny4yMDdoLjJ2Mi4wNjdoLS4yWm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjJWMTMuMzQ2Wm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzY4LDBoLjJ2Mi4wNjdoLS4yWm0yLjY1NC0uMjA3SDEzLjJ2Mi40OGgtMi40OFYxMy4xNFptMi4wNzYuMjA3SDEzdjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yWm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzY4LDBoLjJ2Mi4wNjdoLS4yWm0tLjIwNi0zLjA2N0gxMy4ydjIuNDc5aC0yLjQ4VjEwLjI3OVptMi4wNzYuMjA3SDEzdjIuMDY2aC0uMlptLS4zNzYsMGguMnYyLjA2NmgtLjJabS0uMzc2LDBoLjJ2Mi4wNjZoLS4yWm0tLjM3NiwwaC4ydjIuMDY2aC0uMlptLS4zNzYsMGguMnYyLjA2NmgtLjJabS0uMzY4LDBoLjJ2Mi4wNjZoLS4yWm0yLjY1NCwyLjY1M2gyLjQ3OXYyLjQ4aC0yLjQ4VjEzLjE0Wm0yLjA3Ni4yMDdoLjJ2Mi4wNjdoLS4yWm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yWm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNjgsMGguMTkydjIuMDY3aC0uMlYxMy4zNDZabS0uMjA2LTMuMDY3aDIuNDc5djIuNDc5aC0yLjQ4VjEwLjI3OVptMi4wNzYuMjA3aC4ydjIuMDY2aC0uMlptLS4zNzYsMGguMnYyLjA2NmgtLjJabS0uMzc2LDBoLjJ2Mi4wNjZoLS4yWm0tLjM3NiwwaC4ydjIuMDY2aC0uMlptLS4zNzYsMGguMnYyLjA2NmgtLjJabS0uMzY4LDBoLjE5MnYyLjA2NmgtLjJWMTAuNDg2Wm0tLjIwNi0zLjA2N2gyLjQ3OVY5LjloLTIuNDhWNy40MTlabTIuMDc2LjIwNmguMlY5LjY5MWgtLjJabS0uMzc2LDBoLjJWOS42OTFoLS4yWm0tLjM3NiwwaC4yVjkuNjkxaC0uMlptLS4zNzYsMGguMlY5LjY5MWgtLjJabS0uMzc2LDBoLjJWOS42OTFoLS4yWm0tLjM2OCwwaC4xOTJWOS42OTFoLS4yVjcuNjI1Wm0yLjY1NCw1LjUxNGgyLjQ3OXYyLjQ4aC0yLjQ4VjEzLjE0Wm0yLjA3Ni4yMDdoLjE5NXYyLjA2N2gtLjJWMTMuMzQ2Wm0tLjM3NiwwaC4yMDZ2Mi4wNjdoLS4yMDZabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yWm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjIwNVYxMy4zNDZabS0uMzY4LDBoLjJ2Mi4wNjdoLS4xOTRWMTMuMzQ2WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTAuMTg4LDE5LjYzOGEuNjg0LjY4NCwwLDEsMS0uNjg0LjY4NEEuNjg0LjY4NCwwLDAsMSwxMC4xODgsMTkuNjM4Wm0wLC4xOTRhLjQ4OS40ODksMCwwLDEsLjE3Ny4wMzMuMi4yLDAsMSwwLC4yNzUuMjY5LjQ5LjQ5LDAsMSwxLS40NTMtLjNaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcbiAgXCJET1QgKEdyYXBodml6KVwiOiBgPHBvbHlnb24gcG9pbnRzPVwiMjMuOTQyIDMwIDEyLjY3OSAzMCAxLjQxNyAzMCAxLjQxNyAxNiAxLjQxNyAyIDEyLjY3OSAyIDIzLjk0MiAyIDIzLjk0MiAxNiAyMy45NDIgMzBcIiBzdHlsZT1cImZpbGw6I2U2ZTZlNlwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMy4yMDJcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjcuNDJcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjExLjYzOFwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMTUuODU2XCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIyMC4wNzRcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjI0LjI5M1wiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMjguNTExXCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyXCIgeT1cIjMuMjAyXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjU3M1wiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCI2LjIxOFwiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMTAuNDM2XCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIxNC42NTVcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjE4Ljg3M1wiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMjMuMDkxXCIgeT1cIjMuMjAyXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjU3M1wiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxnIHN0eWxlPVwib3BhY2l0eTowLjVcIj48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMjcuNDU2XCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIyNi40MDJcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjI1LjM0N1wiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMjMuMjM4XCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIyMi4xODRcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjIxLjEyOVwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMTkuMDJcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjE3Ljk2NVwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMTYuOTExXCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIxNC44MDJcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjEzLjc0N1wiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMTIuNjkzXCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIxMC41ODNcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjkuNTI5XCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCI4LjQ3NFwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiNi4zNjVcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjUuMzExXCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCI0LjI1NlwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48L2c+PGcgc3R5bGU9XCJvcGFjaXR5OjAuNVwiPjxyZWN0IHg9XCIyMi4wMzZcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIwLjk4MlwiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMTkuOTI3XCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIxNy44MThcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjE2Ljc2NFwiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMTUuNzA5XCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIxMy42XCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIxMi41NDVcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjExLjQ5MVwiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiOS4zODJcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjguMzI3XCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCI3LjI3M1wiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiNS4xNjRcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjQuMTA5XCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIzLjA1NVwiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48L2c+PHBhdGggZD1cIk0xMyw4Ljk3NmMtMi4zMDgsMC00LjEzMS0xLjI3NC00LjE5My0yLjk2OWgwYTIuNzc1LDIuNzc1LDAsMCwxLDEuMjUzLTIuMzIsNS4zLDUuMywwLDAsMSwyLjk0My0uOTYzLDUuMjk0LDUuMjk0LDAsMCwxLDMuMDA2Ljc0MywyLjc3NSwyLjc3NSwwLDAsMSwxLjQyMSwyLjIyMWMuMDY1LDEuNzUyLTEuNzc5LDMuMTk0LTQuMiwzLjI4M0MxMy4xNTgsOC45NzQsMTMuMDgsOC45NzYsMTMsOC45NzZabS4yMzItNS4ycS0uMDk1LDAtLjE5LDBhNC4yMzgsNC4yMzgsMCwwLDAtMi4zNTQuNzU2LDEuNzYxLDEuNzYxLDAsMCwwLS44MjgsMS40MzVDOS45LDcuMDksMTEuNDI4LDcuOTc4LDEzLjIsNy45MTdzMy4yMjMtMS4wNjksMy4xODEtMi4xOTFhMS43NjEsMS43NjEsMCwwLDAtLjkzMi0xLjM2OUE0LjE2NSw0LjE2NSwwLDAsMCwxMy4yMzQsMy43NzNaXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHBhdGggZD1cIk02LjQsMjkuMjgxQTUuMjM4LDUuMjM4LDAsMCwxLDMuNiwyOC41MTlhMi43NzUsMi43NzUsMCwwLDEtMS40MS0yLjIyOWMtLjA1Ni0xLjc1MiwxLjgtMy4xODUsNC4yMTMtMy4yNjJzNC4zNTYsMS4yMzYsNC40MTIsMi45ODhBMi43NzUsMi43NzUsMCwwLDEsOS41NDgsMjguMzNhNS4zLDUuMywwLDAsMS0yLjk0OC45NDhRNi41LDI5LjI4MSw2LjQsMjkuMjgxWm0uMTg2LTUuMi0uMTU2LDBjLTEuNzY2LjA1Ni0zLjIyOSwxLjA1Mi0zLjE5MywyLjE3NGExLjc2MSwxLjc2MSwwLDAsMCwuOTI0LDEuMzc0LDQuMjM1LDQuMjM1LDAsMCwwLDIuNC41OTMsNC4yMzUsNC4yMzUsMCwwLDAsMi4zNTctLjc0NCwxLjc2MSwxLjc2MSwwLDAsMCwuODM1LTEuNDNDOS43MjQsMjQuOTYxLDguMjksMjQuMDgsNi41OTEsMjQuMDhaXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHBhdGggZD1cIk0xOS4yNjEsMjkuMjZhNS4yMzgsNS4yMzgsMCwwLDEtMi44MDctLjc2MiwyLjc3NSwyLjc3NSwwLDAsMS0xLjQxLTIuMjI5aDBjLS4wNTUtMS43NTIsMS44LTMuMTg1LDQuMjEzLTMuMjYyYTUuMyw1LjMsMCwwLDEsMywuNzU5QTIuNiwyLjYsMCwwLDEsMjIuNCwyOC4zMWE1LjMsNS4zLDAsMCwxLTIuOTQ4Ljk0OFExOS4zNTgsMjkuMjYsMTkuMjYxLDI5LjI2Wk0xNi4xLDI2LjIzNmExLjc2MSwxLjc2MSwwLDAsMCwuOTI0LDEuMzc0LDQuNTcsNC41NywwLDAsMCw0Ljc1Ny0uMTUxLDEuNTU4LDEuNTU4LDAsMCwwLS4wODktMi44LDQuMjI2LDQuMjI2LDAsMCwwLTIuNC0uNTkzYy0xLjc2Ni4wNTYtMy4yMjgsMS4wNTItMy4xOTMsMi4xNzRaXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHBhdGggZD1cIk02LjIsMjMuNDc3QTI3LjQsMjcuNCwwLDAsMSw5Ljc2OSw4Ljk4NmwuNjg3LjM5MUEyNi42MDksMjYuNjA5LDAsMCwwLDYuOTg2LDIzLjQ1WlwiIHN0eWxlPVwiZmlsbDojNjU2NTY1XCIvPjxwYXRoIGQ9XCJNMTAuODUzLDcuOTU3YTcuMTcxLDcuMTcxLDAsMCwwLS4wNzUsMi4zMmwtLjc1OC0uOTMtMS4xNzgtLjIzQTcuMTY1LDcuMTY1LDAsMCwwLDEwLjg1Myw3Ljk1N1pcIiBzdHlsZT1cImZpbGw6IzY1NjU2NVwiLz48cGF0aCBkPVwiTTE5Ljg1NCwyMy40NzdsLS43OS0uMDI3YTI2LjU5LDI2LjU5LDAsMCwwLS45MTUtNy44ODQsMjYuNjI0LDI2LjYyNCwwLDAsMC0yLjU1NC02LjE4OWwuNjg3LS4zOTFhMjcuNDIzLDI3LjQyMywwLDAsMSwyLjYzLDYuMzczQTI3LjM3MiwyNy4zNzIsMCwwLDEsMTkuODU0LDIzLjQ3N1pcIiBzdHlsZT1cImZpbGw6IzY1NjU2NVwiLz48cGF0aCBkPVwiTTE1LjIsNy45NTdhNy4xNzEsNy4xNzEsMCwwLDAsMi4wMTEsMS4xNTlsLTEuMTc4LjIzLS43NTguOTNBNy4xNjUsNy4xNjUsMCwwLDAsMTUuMiw3Ljk1N1pcIiBzdHlsZT1cImZpbGw6IzY1NjU2NVwiLz48cmVjdCB4PVwiMTEuMzQ4XCIgeT1cIjkuOTQ1XCIgd2lkdGg9XCIzLjUxNVwiIGhlaWdodD1cIjAuNzkxXCIgdHJhbnNmb3JtPVwibWF0cml4KDAuMDE2LCAtMSwgMSwgMC4wMTYsIDIuNTU3LCAyMy4yNzkpXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHBhdGggZD1cIk0xMy4wNTQsMTMuNTI5YTcuMTcxLDcuMTcxLDAsMCwwLTEuMS0yLjA0NmwxLjEyMi40MjYsMS4xMzUtLjM5QTcuMTY1LDcuMTY1LDAsMCwwLDEzLjA1NCwxMy41MjlaXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHJlY3QgeD1cIjcuODA5XCIgeT1cIjIwLjA4MVwiIHdpZHRoPVwiNC43NTdcIiBoZWlnaHQ9XCIwLjc5MVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMTIuNTYgMTguMTA4KSByb3RhdGUoLTU3LjYwMylcIiBzdHlsZT1cImZpbGw6IzY1NjU2NVwiLz48cGF0aCBkPVwiTTguMTQ3LDIzLjY5NGE3LjE3MSw3LjE3MSwwLDAsMCwuMTMzLTIuMzE3bC43MzQuOTQ5LDEuMTcxLjI2QTcuMTY1LDcuMTY1LDAsMCwwLDguMTQ3LDIzLjY5NFpcIiBzdHlsZT1cImZpbGw6IzY1NjU2NVwiLz48cmVjdCB4PVwiMTUuNDE4XCIgeT1cIjE4LjA1MVwiIHdpZHRoPVwiMC43OTFcIiBoZWlnaHQ9XCI0LjkxOVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtOC4yNTcgMTAuOTUxKSByb3RhdGUoLTMwLjcwOClcIiBzdHlsZT1cImZpbGw6IzY1NjU2NVwiLz48cGF0aCBkPVwiTTE3LjgsMjMuODU2YTcuMTcxLDcuMTcxLDAsMCwwLTIuMDA2LTEuMTY4bDEuMTc5LS4yMjUuNzYyLS45MjdBNy4xNjUsNy4xNjUsMCwwLDAsMTcuOCwyMy44NTZaXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHBhdGggZD1cIk0xMy4wMjQsMTkuMTI1YTUuMjM4LDUuMjM4LDAsMCwxLTIuODA3LS43NjIsMi43NzUsMi43NzUsMCwwLDEtMS40MS0yLjIyOSwyLjc3NSwyLjc3NSwwLDAsMSwxLjI2Ni0yLjMxNCw1LjMsNS4zLDAsMCwxLDIuOTQ4LS45NDgsNi43MTIsNi43MTIsMCwwLDEsMi4xMzQuMzEzbC0uMzMxLDFhNS42NjgsNS42NjgsMCwwLDAtMS43NjktLjI2MSw0LjIzOCw0LjIzOCwwLDAsMC0yLjM1OC43NDQsMS43NjEsMS43NjEsMCwwLDAtLjgzNSwxLjQzLDEuNzYxLDEuNzYxLDAsMCwwLC45MjQsMS4zNzQsNC4yNDIsNC4yNDIsMCwwLDAsMi40LjU5Myw1LjcsNS43LDAsMCwwLDEuNjc4LS4zNzhsLjM3OC45ODVhNi44NDQsNi44NDQsMCwwLDEtMi4wMjIuNDQ4UTEzLjEyMSwxOS4xMjUsMTMuMDI0LDE5LjEyNVpcIiBzdHlsZT1cImZpbGw6IzY1NjU2NVwiLz48cGF0aCBkPVwiTTE1LjQzNSwxMi44NzZhNC4zMzgsNC4zMzgsMCwwLDAtLjk4NCwxLjYyMiwyLjA2NCwyLjA2NCwwLDAsMS0uMDE2LDIuODA2LDQuNCw0LjQsMCwwLDAsLjk4MiwxLjYsMy45MzIsMy45MzIsMCwwLDAsLjA3OC01Ljk4NkMxNS40NzYsMTIuOSwxNS40NTQsMTIuODkzLDE1LjQzNSwxMi44NzZaXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHBhdGggZD1cIk0xOS41MjUsMTUuMjc4YTI3LjkzMSwyNy45MzEsMCwwLDAtMS4yNjMtMy43NDIsNC4zNzYsNC4zNzYsMCwwLDAtMS43NzcuNTE3LDI2LjA2MywyNi4wNjMsMCwwLDEsMS4yNTMsMy42ODUsMjYuMDM4LDI2LjAzOCwwLDAsMSwuNzM0LDQuNTM0LDQuMzQ3LDQuMzQ3LDAsMCwwLDEuODI1LS4zNTFBMjcuOSwyNy45LDAsMCwwLDE5LjUyNSwxNS4yNzhaXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHBhdGggZD1cIk0xNi4xNTMsMTIuMjI5QTQuNDM3LDQuNDM3LDAsMSwwLDIyLjMsMTMuNSw0LjQzNyw0LjQzNywwLDAsMCwxNi4xNTMsMTIuMjI5Wm00LjgxMiw3LjMzMmE0LjM0Niw0LjM0NiwwLDEsMSwxLjI0OS02LjAxOEE0LjM0Niw0LjM0NiwwLDAsMSwyMC45NjUsMTkuNTYxWlwiIHN0eWxlPVwiZmlsbDojMmMyOTI4XCIvPjxwYXRoIGQ9XCJNMjIuMDE1LDE5LjE4NmEuODIyLjgyMiwwLDAsMC0uMTkyLS4yMDksNC4zNDcsNC4zNDcsMCwwLDEtLjMzMy4zMTksNC41MjIsNC41MjIsMCwwLDEtLjQ0Ni4zMzcsNC43Myw0LjczLDAsMCwxLS45NC40NzcuNjY5LjY2OSwwLDAsMCwuMDMxLjEuNjQuNjQsMCwwLDAsLjA0Ny4wOTRsLjQ4Ny44TDIyLjUsMTkuOTg0WlwiIHN0eWxlPVwiZmlsbDojMjgyODI4XCIvPjxyZWN0IHg9XCIyMC43OTNcIiB5PVwiMjAuNzg0XCIgd2lkdGg9XCIyLjE0N1wiIGhlaWdodD1cIjAuNDRcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTcuNzQgMTQuNDY1KSByb3RhdGUoLTMxLjM5NClcIiBzdHlsZT1cImZpbGw6IzI4MjgyOFwiLz48cmVjdCB4PVwiMjIuODY4XCIgeT1cIjIwLjk2XCIgd2lkdGg9XCIyLjE0N1wiIGhlaWdodD1cIjYuODg3XCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC05LjIwNyAxNi4wNDQpIHJvdGF0ZSgtMzEuMzk0KVwiIHN0eWxlPVwiZmlsbDojMjgyODI4XCIvPjxwYXRoIGQ9XCJNMjcuMDU0LDI3LjQ0M2wtLjIzNi0uMzg3LTEuODMzLDEuMTE5LjIzNi4zODdhLjkyNC45MjQsMCwwLDAsMS4yNzkuMTU5bC4xMS0uMDY3QS45MjQuOTI0LDAsMCwwLDI3LjA1NCwyNy40NDNaXCIgc3R5bGU9XCJmaWxsOiMyODI4MjhcIi8+PHBhdGggZD1cIk0yMC42OCwxNC44NDVhLjMxNS4zMTUsMCwwLDEsLjMzOC4wMjcsMS4wNzgsMS4wNzgsMCwwLDEsLjI5NC41NzgsMS4xLDEuMSwwLDAsMSwuMDI5LjY1NC4zMjcuMzI3LDAsMCwxLS4yNzguMi40NjguNDY4LDAsMCwxLS4zNy0uMS45MjIuOTIyLDAsMCwxLS4yNjItLjUuOTU1Ljk1NSwwLDAsMS0uMDEtLjU4NUEuNDY2LjQ2NiwwLDAsMSwyMC42OCwxNC44NDVabS4wNi4yMjdhLjE0OS4xNDksMCwwLDAtLjA3NC4wNjMuMjQ3LjI0NywwLDAsMC0uMDI3LjEzMiwxLjYyNiwxLjYyNiwwLDAsMCwuMDY0LjM1NSwxLjU5MiwxLjU5MiwwLDAsMCwuMTEyLjMyOS4yNjguMjY4LDAsMCwwLC4wOTQuMTEuMTQyLjE0MiwwLDAsMCwuMDk0LjAxNS4xMjEuMTIxLDAsMCwwLC4wNzgtLjA0OC4yMTEuMjExLDAsMCwwLC4wMjgtLjEyOCwyLjY0MywyLjY0MywwLDAsMC0uMTg2LS43MjIuMjM1LjIzNSwwLDAsMC0uMDkzLS4xMDdBLjExNi4xMTYsMCwwLDAsMjAuNzM5LDE1LjA3MlpcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTIxLjY5NCwxNC40YS4zLjMsMCwwLDEsLjM0Ni4wNTcsMS40OTMsMS40OTMsMCwwLDEsLjMyNS43LDEuNTIxLDEuNTIxLDAsMCwxLC4wNi43NzEuMzEuMzEsMCwwLDEtLjI3LjIyOC40NDYuNDQ2LDAsMCwxLS4zNzktLjEzNywxLjMxLDEuMzEsMCwwLDEtLjI5Mi0uNjE3LDEuMzQxLDEuMzQxLDAsMCwxLS4wNDEtLjdBLjQ0MS40NDEsMCwwLDEsMjEuNjk0LDE0LjRabS4wNzIuMjczYS4xMzYuMTM2LDAsMCwwLS4wNzIuMDY5LjMxNS4zMTUsMCwwLDAtLjAyMS4xNTUsMi4zNTEsMi4zNTEsMCwwLDAsLjA4NC40MjcsMi4zMSwyLjMxLDAsMCwwLC4xMzEuNC4zNDcuMzQ3LDAsMCwwLC4xLjEzNS4xMy4xMywwLDAsMCwuMS4wMjEuMTEuMTEsMCwwLDAsLjA3Ni0uMDU0LjI3NS4yNzUsMCwwLDAsLjAyMi0uMTUsMy43NzMsMy43NzMsMCwwLDAtLjIyNC0uODYyLjMxMS4zMTEsMCwwLDAtLjEtLjEzMkEuMS4xLDAsMCwwLDIxLjc2NiwxNC42NzRaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yMy40NzIsMTUuOTM0bC0uMjY5LjAzOC0uMzc5LTEuNDM5YS45NTUuOTU1LDAsMCwxLS4yNTcuMzkybC0uMDg3LS4zMzFhLjg0MS44NDEsMCwwLDAsLjE2OS0uMjYuODc0Ljg3NCwwLDAsMCwuMDc1LS4zODNsLjItLjA4OVpcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTI0LjQ1NSwxNS43OTRsLS4yNjkuMDM4LS40MjktMS42MjVhMSwxLDAsMCwxLS4yNDcuNDI5bC0uMS0uMzc2YS44NzQuODc0LDAsMCwwLC4xNjItLjI4NCwxLjAyOCwxLjAyOCwwLDAsMCwuMDY0LS40MjRsLjItLjA4OVpcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTI0LjYzNiwxMy4xMTdjLjEyNy0uMDU1LjI0OS0uMDA4LjM2OS4xNDRhMy4xMSwzLjExLDAsMCwxLC40MTYsMS4wMzQsMy4xNDMsMy4xNDMsMCwwLDEsLjE1MSwxLjExYy0uMDI5LjE5LS4xMTEuMjk0LS4yNDcuMzEycy0uMjcyLS4wNTktLjQtLjIzMWEyLjg1NSwyLjg1NSwwLDAsMS0uMzgxLS45NSwyLjg3MSwyLjg3MSwwLDAsMS0uMTMyLTEuMDM5QS40MzcuNDM3LDAsMCwxLDI0LjYzNiwxMy4xMTdabS4xMDcuNGEuMTI0LjEyNCwwLDAsMC0uMDY3LjA4OC41ODQuNTg0LDAsMCwwLDAsLjIyMSw1LjIxOCw1LjIxOCwwLDAsMCwuMTM5LjYzNSw1LjE1Myw1LjE1MywwLDAsMCwuMTg0LjYuNjYuNjYsMCwwLDAsLjEyLjIwOC4xMTguMTE4LDAsMCwwLC4xLjA0LjEuMSwwLDAsMCwuMDcxLS4wNzIuNTI4LjUyOCwwLDAsMCwwLS4yMTYsNS40NDIsNS40NDIsMCwwLDAtLjE0NC0uNjUzLDUuNDQ3LDUuNDQ3LDAsMCwwLS4xODktLjYxOS42MTIuNjEyLDAsMCwwLS4xMTktLjIwNUEuMDkzLjA5MywwLDAsMCwyNC43NDMsMTMuNTIyWlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMjYuNjM4LDE1LjQ4OGwtLjI2OS4wMzgtLjU0LTIuMDM5QTEuMTUxLDEuMTUxLDAsMCwxLDI1LjYsMTRsLS4xMjYtLjQ3NWEuOTkuOTksMCwwLDAsLjE0OC0uMzM3LDEuNDM2LDEuNDM2LDAsMCwwLC4wMzktLjUxNWwuMi0uMDg4WlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMjYuNjY2LDEyLjIzNmMuMTI3LS4wNTUuMjU1LjAxMi4zODUuMmE0LjU4NCw0LjU4NCwwLDAsMSwuNDc4LDEuMjY4LDQuNjIsNC42MiwwLDAsMSwuMjEzLDEuMzQzYy0uMDE4LjIyOS0uMS4zNTItLjIzMi4zN3MtLjI3OC0uMDgxLS40MjEtLjNhNC4yODQsNC4yODQsMCwwLDEtLjQ0My0xLjE3OSw0LjI4Myw0LjI4MywwLDAsMS0uMTk0LTEuMjcyQzI2LjQ2OCwxMi40MzgsMjYuNTM5LDEyLjI5MSwyNi42NjYsMTIuMjM2Wm0uMTMxLjVxLS4wNDYuMDE4LS4wNjQuMWEuODI5LjgyOSwwLDAsMCwuMDA5LjI2Niw3Ljg1Niw3Ljg1NiwwLDAsMCwuMTc4Ljc3OXEuMTQzLjU0MS4yMjEuNzM4YS45NDcuOTQ3LDAsMCwwLC4xMzQuMjU4LjExOS4xMTksMCwwLDAsLjEuMDUycS4wNDgtLjAwOS4wNjgtLjA4NWEuNzYyLjc2MiwwLDAsMC0uMDA4LS4yNjIsOC4xMTcsOC4xMTcsMCwwLDAtLjE4Mi0uOHEtLjE0OC0uNTU3LS4yMjctLjc1N2EuODkyLjg5MiwwLDAsMC0uMTMzLS4yNTZRMjYuODQzLDEyLjcxNCwyNi44LDEyLjczMlpcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTI3LjY4MSwxMS44Yy4xMjctLjA1NS4yNTcuMDIzLjM5My4yMzRhNS40MzEsNS40MzEsMCwwLDEsLjUwOSwxLjM4NSw1LjQ2Nyw1LjQ2NywwLDAsMSwuMjQ0LDEuNDZjLS4wMTMuMjQ5LS4wODguMzgxLS4yMjQuNHMtLjI4MS0uMDkyLS40My0uMzI4YTUuMTEsNS4xMSwwLDAsMS0uNDczLTEuMjk0LDUuMSw1LjEsMCwwLDEtLjIyNS0xLjM4OEMyNy40ODYsMTIuMDA4LDI3LjU1NSwxMS44NTEsMjcuNjgxLDExLjhabS4xNDQuNTQycS0uMDQ2LjAxOC0uMDYyLjEwNmEuOTcuOTcsMCwwLDAsLjAxNS4yODlxLjA0LjI1OS4yLjg1MXQuMjQuODA3YTEuMTEyLDEuMTEyLDAsMCwwLC4xNC4yODRxLjA1Ny4wNjcuMTA2LjA1OXQuMDY2LS4wOTFhLjkuOSwwLDAsMC0uMDE0LS4yODRxLS4wNC0uMjYtLjItLjg2N3QtLjI0NS0uODI3YTEuMDUzLDEuMDUzLDAsMCwwLS4xNC0uMjgxUTI3Ljg3MSwxMi4zMiwyNy44MjUsMTIuMzM4WlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMjkuOTE1LDE1LjAzNGwtLjI3LjAzNy0uNzA2LTIuNjYxYTEuNDc4LDEuNDc4LDAsMCwxLS4xOTIuNjM2bC0uMTY2LS42MjVBMS4yNDgsMS4yNDgsMCwwLDAsMjguNzA4LDEyYTIuMjE0LDIuMjE0LDAsMCwwLDAtLjY1M2wuMi0uMDg4WlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMjkuNzEyLDEwLjkyMWMuMTI3LS4wNTQuMjYzLjA0My40MDkuMjk0YTcuMzQ1LDcuMzQ1LDAsMCwxLC41NzIsMS42MTlBNy4zODIsNy4zODIsMCwwLDEsMzEsMTQuNTI3YzAsLjI4OC0uMDcyLjQ0LS4yMDkuNDU4cy0uMjg2LS4xMTQtLjQ0Ny0uMzkzYTYuOTg0LDYuOTg0LDAsMCwxLS41MzUtMS41MjQsNi45NDQsNi45NDQsMCwwLDEtLjI4Ny0xLjYyMUMyOS41MjMsMTEuMTUxLDI5LjU4NiwxMC45NzUsMjkuNzEyLDEwLjkyMVptLjE2OC42MzNxLS4wNDYuMDE4LS4wNTkuMTE5YTEuMjg3LDEuMjg3LDAsMCwwLC4wMjcuMzM0cS4wNTEuMy4yMzUuOTk0dC4yNzcuOTQ2YTEuNDg0LDEuNDg0LDAsMCwwLC4xNTQuMzM0cS4wNi4wOC4xMDkuMDcxdC4wNjMtLjFhMS4yLDEuMiwwLDAsMC0uMDI2LS4zM3EtLjA1MS0uMy0uMjM5LTEuMDExdC0uMjgyLS45NjVhMS40MiwxLjQyLDAsMCwwLS4xNTMtLjMzMlEyOS45MjYsMTEuNTM2LDI5Ljg4LDExLjU1M1pcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTIxLjE2NywxNi4zNjJhLjQyMi40MjIsMCwwLDEsLjMxOC4xODUsMS4wMDUsMS4wMDUsMCwwLDEtLjI3NywxLjAzLjQyLjQyLDAsMCwxLS4zNjYsMCwuNTkuNTksMCwwLDEtLjMxMS0uMjYxLjgwOC44MDgsMCwwLDEsLjI1NC0uODkzQS41NjEuNTYxLDAsMCwxLDIxLjE2NywxNi4zNjJabS0uMDUxLjE4OWEuMTc1LjE3NSwwLDAsMC0uMTkyLjA4NywxLjQ4NywxLjQ4NywwLDAsMC0uMTU1LjU2Ny4yMTYuMjE2LDAsMCwwLC4wMzkuMTI0LjE5MS4xOTEsMCwwLDAsLjA4NC4wNTguMTQ1LjE0NSwwLDAsMCwuMTg4LS4wNjksMS42NjYsMS42NjYsMCwwLDAsLjE2NC0uNi4xODkuMTg5LDAsMCwwLS4wNC0uMTIxQS4xNjMuMTYzLDAsMCwwLDIxLjExNywxNi41NTFaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yMi4zNzYsMTYuNTQ4YS4zODIuMzgyLDAsMCwxLC4zMTEuMjEyLDEuMDI0LDEuMDI0LDAsMCwxLS4wMTkuNjYsMS4wMjIsMS4wMjIsMCwwLDEtLjMxNS41ODEuMzguMzgsMCwwLDEtLjM3My4wMjUuNTMzLjUzMywwLDAsMS0uMy0uMjksMS4xODksMS4xODksMCwwLDEsLjMwOS0xLjFBLjUuNSwwLDAsMSwyMi4zNzYsMTYuNTQ4Wm0tLjA2Mi4yM2EuMTY3LjE2NywwLDAsMC0uMS4wMTMuMjM1LjIzNSwwLDAsMC0uMS4xLDIuMjE5LDIuMjE5LDAsMCwwLS4xODkuNjk0LjI2OS4yNjksMCwwLDAsLjAzMy4xNDcuMTY3LjE2NywwLDAsMCwuMDgzLjA2NC4xNDMuMTQzLDAsMCwwLC4xLDAsLjIwNi4yMDYsMCwwLDAsLjA5NC0uMSwyLjQzNiwyLjQzNiwwLDAsMCwuMi0uNzI3LjI0LjI0LDAsMCwwLS4wMzQtLjE0NEEuMTQxLjE0MSwwLDAsMCwyMi4zMTQsMTYuNzc4WlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMjMuMzcsMTguNTQxbC0uMjgxLS4xMS4zMjgtMS4yMjVhMSwxLDAsMCwxLS40NDIuMTUybC4wNzUtLjI4MWEuODgxLjg4MSwwLDAsMCwuMjkyLS4xLjY4LjY4LDAsMCwwLC4yNTktLjIzOGwuMjQyLjAzN1pcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTI0Ljc5MywxNi45MTlhLjM0OC4zNDgsMCwwLDEsLjMuMjY2LDEuNzUxLDEuNzUxLDAsMCwxLS4wNzUuODcsMS43NDksMS43NDksMCwwLDEtLjM3MS43OTEuMzQ1LjM0NSwwLDAsMS0uMzg4LjA3OC40ODguNDg4LDAsMCwxLS4yODgtLjM0OCwxLjU4NywxLjU4NywwLDAsMSwuMDY3LS43OSwxLjU3NywxLjU3NywwLDAsMSwuMzU0LS43MjdBLjQ1Ny40NTcsMCwwLDEsMjQuNzkzLDE2LjkxOVptLS4wODQuMzEyYS4xNDMuMTQzLDAsMCwwLS4xMDcuMDI1LjM1My4zNTMsMCwwLDAtLjEwNi4xNDEsNC4xMjYsNC4xMjYsMCwwLDAtLjI1Ny45NDguNDA4LjQwOCwwLDAsMCwuMDIxLjE5Mi4xNDMuMTQzLDAsMCwwLC4wOC4wNzUuMTIuMTIsMCwwLDAsLjEtLjAxMS4zMTguMzE4LDAsMCwwLC4xMDUtLjEzNyw0LjQxOCw0LjQxOCwwLDAsMCwuMjY2LS45ODEuMzc0LjM3NCwwLDAsMC0uMDIyLS4xODlBLjExOS4xMTksMCwwLDAsMjQuNzEsMTcuMjMxWlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMjUuNjQ5LDE5LjQzbC0uMjgxLS4xMS40MjgtMS42YTEuMDMzLDEuMDMzLDAsMCwxLS40NjIuMjI3bC4xLS4zNzFhLjkuOSwwLDAsMCwuMy0uMTUxLjkzLjkzLDAsMCwwLC4yODEtLjMyMWwuMjQyLjAzN1pcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTI3LjIxMSwxNy4yOTFhLjM0NC4zNDQsMCwwLDEsLjI4Mi4zMTksMi42OTIsMi42OTIsMCwwLDEtLjEzMSwxLjA4LDIuNjksMi42OSwwLDAsMS0uNDI3LDEsLjM0LjM0LDAsMCwxLS40LjEzLjQ4Ny40ODcsMCwwLDEtLjI3My0uNDA1LDIuNDk0LDIuNDk0LDAsMCwxLC4xMjItMSwyLjQ3LDIuNDcsMCwwLDEsLjQxLS45MzdBLjQ1MS40NTEsMCwwLDEsMjcuMjExLDE3LjI5MVptLS4xMDYuMzk0YS4xMzMuMTMzLDAsMCwwLS4xMS4wMzYuNTA5LjUwOSwwLDAsMC0uMTE3LjE4Miw2LjYyMiw2LjYyMiwwLDAsMC0uMzI1LDEuMi41OTEuNTkxLDAsMCwwLC4wMDkuMjM3LjEzMy4xMzMsMCwwLDAsLjA3Ny4wODYuMTEuMTEsMCwwLDAsLjEwNy0uMDIzLjQ2NS40NjUsMCwwLDAsLjExNi0uMTc4LDQuNjM5LDQuNjM5LDAsMCwwLC4yLS42MTksNC42NTgsNC42NTgsMCwwLDAsLjEzNi0uNjE1LjU1Mi41NTIsMCwwLDAtLjAxLS4yMzVBLjExLjExLDAsMCwwLDI3LjEwNSwxNy42ODVaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yNy45MjcsMjAuMzJsLS4yODEtLjExLjUyOC0xLjk3MWExLjEzNCwxLjEzNCwwLDAsMS0uNDgyLjNsLjEyMy0uNDZhLjk3Mi45NzIsMCwwLDAsLjMxNy0uMiwxLjI0OCwxLjI0OCwwLDAsMCwuMy0uNGwuMjQyLjAzN1pcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTI4Ljk1MywyMC43MjFsLS4yODEtLjExLjU3My0yLjEzOWExLjIsMS4yLDAsMCwxLS40OTEuMzM2bC4xMzQtLjVhMS4wMiwxLjAyLDAsMCwwLC4zMjMtLjIyLDEuNDEzLDEuNDEzLDAsMCwwLC4zMTQtLjQ0bC4yNDIuMDM3WlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMzAuNzE3LDE3LjgzYy4xNTEuMDIzLjIzOC4xNTUuMjYyLjRhNC40MzYsNC40MzYsMCwwLDEtLjIxMywxLjM4NSw0LjQzNCw0LjQzNCwwLDAsMS0uNTA5LDEuMzA3Yy0uMTQuMTk1LS4yOC4yNjMtLjQyMi4yMDdzLS4yMjYtLjIyLS4yNS0uNDg5YTQuMTk0LDQuMTk0LDAsMCwxLC4yLTEuMyw0LjE0Myw0LjE0MywwLDAsMSwuNDkyLTEuMjQxQzMwLjQyLDE3LjksMzAuNTY2LDE3LjgwNywzMC43MTcsMTcuODNabS0uMTM3LjUxM2EuMTMyLjEzMiwwLDAsMC0uMTE1LjA1My44LjgsMCwwLDAtLjEzMy4yNDEsNy41ODcsNy41ODcsMCwwLDAtLjI0NC43OTEsNy41MzksNy41MzksMCwwLDAtLjE4Ljc3OS45My45MywwLDAsMC0uMDA5LjMuMTMxLjEzMSwwLDAsMCwuMDczLjEuMTA4LjEwOCwwLDAsMCwuMTExLS4wMzkuNzQyLjc0MiwwLDAsMCwuMTMyLS4yMzcsNy44LDcuOCwwLDAsMCwuMjQ4LS44MDYsNy44MzUsNy44MzUsMCwwLDAsLjE4NS0uOC44ODQuODg0LDAsMCwwLC4wMDgtLjNRMzAuNjMzLDE4LjM1MywzMC41OCwxOC4zNDNaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+YCxcbiAgXCJFZGl0b3JDb25maWdcIjogYDxwYXRoIGQ9XCJNOC43MDksMTguMzUxYTEuMjY3LDEuMjY3LDAsMCwwLC41MzItMS4zNzlDOC42OTIsMTcuMjA3LDguNzE4LDE3Ljc0OSw4LjcwOSwxOC4zNTFaXCIgc3R5bGU9XCJmaWxsOiNlM2UzZjhcIi8+PHBhdGggZD1cIk0xNC45MjQsMTkuODUyYS44NzEuODcxLDAsMCwwLC42Mi0xLjEzNUExLjQzLDEuNDMsMCwwLDAsMTQuOTI0LDE5Ljg1MlpcIiBzdHlsZT1cImZpbGw6I2UzZTNmOFwiLz48cGF0aCBkPVwiTTIuNzEzLDI3LjA3OWExLjUzOCwxLjUzOCwwLDAsMCwuNTI0LDEuMzUzYzEuNDE0Ljc5NCw2LjM3Mi4xNzUsOC4wNTYtLjJhMTQuOTk0LDE0Ljk5NCwwLDAsMCwyLjQyNi0xLjIxMywyMi42NDMsMjIuNjQzLDAsMCwwLDQuNzEzLTIuNTU3YzEuMDgyLS43OTQsMi44LTMuMDI5LDIuOTg1LTQuMzY0bC0xLjQ3NS0uMzMyYy0uMDM1LDEuNS0uMzc1LDEuODQyLTEuNzExLDIuMTkxYTEwLjY2MiwxMC42NjIsMCwwLDEtMy41Ny4xNCwzLjM2MiwzLjM2MiwwLDAsMS0yLjMxMy0xLjU2MmMtMS4wNjUtMS40MTQuMjM2LTIuNC0xLjQ0OS0yLjUtMS43NzIsMi4xNzMtNC45LjYxMS02LjI2Ny4zOTNhMzAuMDY2LDMwLjA2NiwwLDAsMC0xLjkzOCw3LjYsMi43NDgsMi43NDgsMCwwLDEsMi4xMzguMzIzYzIuNjg4LDEuMDM5LjM0LDEuOTU1LS43MzMsMS42ODVDMy4zNjgsMjcuODY0LDMuMTQxLDI3LjM4NCwyLjcxMywyNy4wNzlaXCIgc3R5bGU9XCJmaWxsOiNmZGZkZmRcIi8+PHBhdGggZD1cIk02LjIzMSwxNC41MzdhMTEuNTM5LDExLjUzOSwwLDAsMSwyLjk4NSwxLjEyNmMxLjUxLjc1MSwxLjc4MS42NDYsMS45MiwxLjY5My4wMTcuMTkyLS4wMTcuMy41MzIuNDcxLjkyNS4yODgtLjUzMi0uMjI3LDEuOTQ2LS4yMThBMTYuNjQsMTYuNjQsMCwwLDEsMTkuNTU5LDE4LjljLjQ1NC4yODguMzY3LjY1NSwxLjkuNjExYTE4Ljc2NywxOC43NjcsMCwwLDAtMS4yLTYuMTYyYy0uODY0LTIuMDA3LTIuMDA3LTIuMzEzLTQuMzM4LTMuMDY0LTEuMzYyLS40MzYtNS4zNTktLjkxNi02LjYtLjE0OC0xLjE2MS43MjQtMS4zNzksMS41ODktMi40NjEsMy4xMDdBNS4zNjYsNS4zNjYsMCwwLDAsNi4yMzEsMTQuNTM3WlwiIHN0eWxlPVwiZmlsbDojZmRmZGZkXCIvPjxwYXRoIGQ9XCJNMTUuODQsMTguMjQ2Yy44NzMuMzU4LS4wNDQsMi42NzEtMS4yNTcsMi4xMTItLjM5My0xLjEwOC41NDEtMS43MzcuNzk0LTIuMjM0YTguNTEsOC41MSwwLDAsMC0yLjQ2MS0uMTQ4Yy0uNTc2LjIxOC0uNzA3LDEuNDQ5LS40MSwyLjAyNSwxLjQsMi43NDEsNy41NjcsMi4xNTYsNi45MTMuMDI2LS4yNjItLjg2NC0uNTA2LTEtMS4zODgtMS4zQTYuODg1LDYuODg1LDAsMCwwLDE1Ljg0LDE4LjI0NlpcIiBzdHlsZT1cImZpbGw6I2ZkZmRmZFwiLz48cGF0aCBkPVwiTTQuODY5LDE3Ljk0MWMuNy42NzIsMi4yNzguNzc3LDMuMy44MjlDOC4zLDE3LjQxNyw4LjQxMywxNi40LDkuNSwxNi40ODNhMS42LDEuNiwwLDAsMS0uMzA1LDIuMTMsMS4zODYsMS4zODYsMCwwLDAsMS4zNjItMS43NjMsMTQuNTQyLDE0LjU0MiwwLDAsMC00LjQ2LTEuODk0QTkuNTA2LDkuNTA2LDAsMCwwLDQuODY5LDE3Ljk0MVpcIiBzdHlsZT1cImZpbGw6I2ZkZmRmZFwiLz48cGF0aCBkPVwiTTMuMjI4LDI2LjU4MWMuNTc2LS4wNTIsMi4wNzcuMzg0LDIuMi44NzNDNC40OTQsMjcuNTY4LDMuMzA3LDI3LjQ4LDMuMjI4LDI2LjU4MVptLS41MTUuNWMuNDI4LjMwNS42NTUuNzg2LDEuMzg4Ljk2LDEuMDc0LjI3MSwzLjQyMS0uNjQ2LjczMy0xLjY4NUEyLjc0OCwyLjc0OCwwLDAsMCwyLjcsMjYuMDMyYTMwLjA2NiwzMC4wNjYsMCwwLDEsMS45MzgtNy42YzEuMzcuMjE4LDQuNDk1LDEuNzgxLDYuMjY3LS4zOTMsMS42ODUuMS4zODQsMS4wODIsMS40NDksMi41QTMuMzYyLDMuMzYyLDAsMCwwLDE0LjY2MiwyMi4xYTEwLjY2MiwxMC42NjIsMCwwLDAsMy41Ny0uMTRjMS4zMzUtLjM0OSwxLjY3Ni0uNjksMS43MTEtMi4xOTFsMS40NzUuMzMyYy0uMTgzLDEuMzM1LTEuOSwzLjU3LTIuOTg1LDQuMzY0YTIyLjY0MywyMi42NDMsMCwwLDEtNC43MTMsMi41NTcsMTQuOTk0LDE0Ljk5NCwwLDAsMS0yLjQyNiwxLjIxM2MtMS42ODUuMzc1LTYuNjQyLDEtOC4wNTYuMkExLjUzOCwxLjUzOCwwLDAsMSwyLjcxMywyNy4wNzlabTEyLjIxMS03LjIyN2ExLjQzLDEuNDMsMCwwLDEsLjYyLTEuMTM1QS44NzEuODcxLDAsMCwxLDE0LjkyNCwxOS44NTJabS45MTYtMS42MDZhNi44ODUsNi44ODUsMCwwLDEsMi4xOTEuNDhjLjg4Mi4zLDEuMTI2LjQzNiwxLjM4OCwxLjMuNjU1LDIuMTMtNS41MTYsMi43MTQtNi45MTMtLjAyNi0uMy0uNTc2LS4xNjYtMS44MDcuNDEtMi4wMjVhOC41MSw4LjUxLDAsMCwxLDIuNDYxLjE0OGMtLjI1My41LTEuMTg3LDEuMTI2LS43OTQsMi4yMzRDMTUuOCwyMC45MTcsMTYuNzEzLDE4LjYsMTUuODQsMTguMjQ2Wm0tNy4xMzEuMWMuMDA5LS42LS4wMTctMS4xNDMuNTMyLTEuMzc5QTEuMjY3LDEuMjY3LDAsMCwxLDguNzA5LDE4LjM1MVptLTMuODQtLjQxYTkuNTA2LDkuNTA2LDAsMCwxLDEuMjIyLTIuOTg1LDE0LjU0MiwxNC41NDIsMCwwLDEsNC40NiwxLjg5NEExLjM4NiwxLjM4NiwwLDAsMSw5LjE5LDE4LjYxM2ExLjYsMS42LDAsMCwwLC4zMDUtMi4xM2MtMS4wODItLjA3OS0xLjIuOTM0LTEuMzI3LDIuMjg3QzcuMTQ3LDE4LjcxNyw1LjU2NywxOC42MTMsNC44NjksMTcuOTQxWk00LDE3LjI0MmMtLjMyMy0uODktLjMyMy0yLjI3OCwxLjA0Ny0yLjM5MmwtLjcsMS45NDZDNC4xNjIsMTcuMjE2LDQuMTYyLDE3LjEyLDQsMTcuMjQyWm0yLjIzNC0yLjcwNmE1LjM2Niw1LjM2NiwwLDAsMSwuNjI4LTEuMjkyYzEuMDgyLTEuNTE5LDEuMy0yLjM4MywyLjQ2MS0zLjEwNywxLjIzOS0uNzY4LDUuMjM3LS4yODgsNi42LjE0OCwyLjMzLjc1MSwzLjQ3NCwxLjA1Niw0LjMzOCwzLjA2NGExOC43NjcsMTguNzY3LDAsMCwxLDEuMiw2LjE2MmMtMS41MzYuMDQ0LTEuNDQ5LS4zMjMtMS45LS42MTFhMTYuNjQsMTYuNjQsMCwwLDAtNS45NDQtMS4yOTJjLTIuNDc5LS4wMDktMS4wMjEuNTA2LTEuOTQ2LjIxOC0uNTUtLjE3NS0uNTE1LS4yNzktLjUzMi0uNDcxLS4xNC0xLjA0Ny0uNDEtLjk0My0xLjkyLTEuNjkzQTExLjUzOSwxMS41MzksMCwwLDAsNi4yMzEsMTQuNTM3Wm0xNS40NDktLjQyOGMtLjE2Ni0uNTUuMTQtLjUxNS42NzItLjg5YTkuMDIxLDkuMDIxLDAsMCwxLC45MjUtLjY1NWMxLjQwNS0uNzg2LDQuMDI0LS45MTYsNS4xNDEuMDE3QTIuNDc5LDIuNDc5LDAsMCwxLDI5LjUsMTQuNjVhNS44MzgsNS44MzgsMCwwLDEtMi42MTgsMy44MzIsNS4yMTMsNS4yMTMsMCwwLDEtNC43ODMsMS4yYy0uMTU3LS4zODQtLjAzNS0yLjgxOS0uMjE4LTMuNzE4LS4xNjYtLjgtLjA3OS0uODkuMzg0LTEuMzcsMS4zNjItMS40MTQsNC4zMTItMi40NDQsNS45ODgtMS4yMzEuNzA3LjUyNC41MDYuNzI0Ljg3MywxLjEyNi40NTQtLjQ4OS0uMzkzLTIuMTMtMy41MTctMi4wMjVDMjMuNDg2LDEyLjUyOSwyMi41NywxNC4xODcsMjEuNjgsMTQuMTA5Wk04Ljk3MSw5LjE0M2E4LjA5NCw4LjA5NCwwLDAsMSwyLjI3OC00LjZDMTIuNiwzLjUsMTQuMDE2LDIuNTA5LDE2LjA5NCwzLjY4N2MuNTE1LjI4OC40ODkuNDM2LjU0MSwxLjE1MmEzLjMxMiwzLjMxMiwwLDAsMS0uMTkyLDEuNWMtMS4zNzksNC40NTEtMi41MzEsMS44OTQtNi45NDgsMi45NWE2LjM3NCw2LjM3NCwwLDAsMSwyLjEyMS0zLjQxM2MxLjItMS4xNjEsMi4wNi0xLjkxMSwzLjg1OC0xLjY2N2ExLjg0MiwxLjg0MiwwLDAsMS0uMDUyLDIuMzIyYy0uOCwxLjI5Mi0xLDEuMjEzLS44ODIsMi4wOTUuNjI4LS4xNTcuODItLjc2OCwxLjEwOC0xLjM3OSwxLjc1NC0zLjY2Ni0uNzk0LTQuMTExLTIuMzU3LTMuNDM5QTEwLjM3MiwxMC4zNzIsMCwwLDAsOS43NjYsNy41NTRjLS4xMjIuMjQ0LS4yNTMuNTU5LS4zNjcuODI5Wm02LjkxMy4xODNDMTYuMDY3LDguMjM1LDE3LjE1LDcuOTY0LDE3LjE1LDQuNmMwLTEuNDQ5LTEuNzgxLTIuNzQ5LTQuMTExLTEuNzgxLTIsLjgyLTIuMywxLjQ0OS0zLjM2OSwzLjA1NS0xLDEuNTE5LS45NjksMy4xODYtMS44MzMsNC41OTEtLjI1My40LS40OC41NDEtLjc1OS45NDMtLjIuMy0uMzQ5LjY3Mi0uNTUsMS4wMjFBMTIuOTQsMTIuOTQsMCwwLDAsNS4zNjcsMTQuNGMtMS4wNDcuMDI2LTEuOTI5LjA0NC0yLjAzNCwxLjEyNi0uMTQsMS40ODQuNTU5LDEuODUuNTU5LDIuNDA5LS4wMDkuNi0yLjQ1Myw2LjY3Ny0xLjc3MiwxMC4zLjE5MiwxLC44NDcsMSwxLjg5NCwxLjEyNmExNy45MywxNy45MywwLDAsMCw4LjA1Ni0uNzA3bDQuMS0xLjk2NGExOC44NSwxOC44NSwwLDAsMCwzLjU2MS0yLjUsMTIuMzgzLDEyLjM4MywwLDAsMCwxLjMwOS0xLjcxOSwzLjIxMywzLjIxMywwLDAsMCwuOC0yLjIwOCw4LjQ3Myw4LjQ3MywwLDAsMSwyLjk4NSwxYy0uMDYxLjYtLjM1OC4zMTQtLjM1OC44NTVhMS4zNTUsMS4zNTUsMCwwLDAsMS4wNDctLjg5Yy0uMzU4LS41MjQtLjczMy0uNDM2LTEuMjQ4LS44NTVhOC4yMTIsOC4yMTIsMCwwLDEsMS43MTktLjcwN2MxLjIyMi0uNTA2LDMuMzA4LTIuMDQyLDMuODIzLTMuNDM5YTQuNDQ5LDQuNDQ5LDAsMCwwLS41NTktMy43MzYsNS40NDQsNS40NDQsMCwwLDAtMy42NDgtMS4xNjFjLTEuNTgsMC0zLjIxMiwxLjEzNS00LjQ4NiwxLjYyMy0uNDg5LS40MjgtLjUyNC0uOTE2LS44ODItMS4zODhBMTIuMjgxLDEyLjI4MSwwLDAsMCwxNS44ODQsOS4zMjZaXCIgc3R5bGU9XCJmaWxsOiMwMjAyMDJcIi8+PHBhdGggZD1cIk0yMS42OCwxNC4xMDljLjg5LjA3OSwxLjgwNy0xLjU4LDMuOTI4LTEuNjUsMy4xMjUtLjEsMy45NzEsMS41MzYsMy41MTcsMi4wMjUtLjM2Ny0uNC0uMTY2LS42LS44NzMtMS4xMjYtMS42NzYtMS4yMTMtNC42MjYtLjE4My01Ljk4OCwxLjIzMS0uNDYzLjQ4LS41NS41NjctLjM4NCwxLjM3LjE4My45LjA2MSwzLjMzNC4yMTgsMy43MThhNS4yMTMsNS4yMTMsMCwwLDAsNC43ODMtMS4yQTUuODM4LDUuODM4LDAsMCwwLDI5LjUsMTQuNjVhMi40NzksMi40NzksMCwwLDAtMS4wODItMi4wNjljLTEuMTE3LS45MzQtMy43MzYtLjgtNS4xNDEtLjAxN2E5LjAyMSw5LjAyMSwwLDAsMC0uOTI1LjY1NUMyMS44MTksMTMuNTk0LDIxLjUxNCwxMy41NTksMjEuNjgsMTQuMTA5WlwiIHN0eWxlPVwiZmlsbDojZmRmMmYyXCIvPjxwYXRoIGQ9XCJNOC45NzEsOS4xNDMsOS40LDguMzgzYy4xMTMtLjI3MS4yNDQtLjU4NS4zNjctLjgyOUExMC4zNzIsMTAuMzcyLDAsMCwxLDEzLjI5MiwzLjgxYzEuNTYyLS42NzIsNC4xMTEtLjIyNywyLjM1NywzLjQzOS0uMjg4LjYxMS0uNDgsMS4yMjItMS4xMDgsMS4zNzktLjEyMi0uODgyLjA3OS0uOC44ODItMi4wOTVhMS44NDIsMS44NDIsMCwwLDAsLjA1Mi0yLjMyMmMtMS44LS4yNDQtMi42NjIuNTA2LTMuODU4LDEuNjY3QTYuMzc0LDYuMzc0LDAsMCwwLDkuNSw5LjI5MWM0LjQxNi0xLjA1Niw1LjU2OSwxLjUsNi45NDgtMi45NWEzLjMxMiwzLjMxMiwwLDAsMCwuMTkyLTEuNWMtLjA1Mi0uNzE2LS4wMjYtLjg2NC0uNTQxLTEuMTUyLTIuMDc3LTEuMTc4LTMuNDkxLS4xOTItNC44NDQuODU1QTguMDk0LDguMDk0LDAsMCwwLDguOTcxLDkuMTQzWlwiIHN0eWxlPVwiZmlsbDojZmVmM2YzXCIvPjxwYXRoIGQ9XCJNNCwxNy4yNDJjLjE2Ni0uMTIyLjE2Ni0uMDI2LjM0OS0uNDQ1bC43LTEuOTQ2QzMuNjczLDE0Ljk2NCwzLjY3MywxNi4zNTIsNCwxNy4yNDJaXCIgc3R5bGU9XCJmaWxsOiNlZmVmZWZcIi8+PHBhdGggZD1cIk01LjQyOCwyNy40NTRjLS4xMjItLjQ4OS0xLjYyMy0uOTI1LTIuMi0uODczQzMuMzA3LDI3LjQ4LDQuNDk0LDI3LjU2OCw1LjQyOCwyNy40NTRaXCIgc3R5bGU9XCJmaWxsOiNmYWYxZjFcIi8+YCxcbiAgXCJFSlNcIjogYDxwYXRoIGQ9XCJNMiwxNy42NzJWMTQuMzI4bDExLjg2LTYuMlYxMS4yTDUuMSwxNS45MzlsOC43NjIsNC44MzV2My4xWm0yNy44MTQtOC44OEwxOS40NjUsMjMuMjI5SDE1LjkxMkwyNi4yODEsOC43OTFaTTI2Ljk0NywyMS41YS43OTQuNzk0LDAsMCwwLC42MTktLjI3OCwxLjA2MSwxLjA2MSwwLDAsMCwuMjQ4LS43MzIsMS4xNDEsMS4xNDEsMCwwLDAtLjI0OC0uNzUzLjc2OC43NjgsMCwwLDAtMS4yMTcsMCwxLjE0MSwxLjE0MSwwLDAsMC0uMjQ4Ljc1MywxLjA5LDEuMDksMCwwLDAsLjIzNy43MzJBLjc2My43NjMsMCwwLDAsMjYuOTQ3LDIxLjVabTIuMTg2LDEuMDQyYTMuMjM3LDMuMjM3LDAsMCwxLTQuMzUyLS4wMSwyLjg2NCwyLjg2NCwwLDAsMSwwLTQuMSwzLjIyMywzLjIyMywwLDAsMSw0LjM1MiwwQTIuNzczLDIuNzczLDAsMCwxLDMwLDIwLjQ4NiwyLjc0LDIuNzQsMCwwLDEsMjkuMTM0LDIyLjUzOFpNMTguODIxLDEzLjA2MWEuNzk0Ljc5NCwwLDAsMCwuNjE5LS4yNzgsMS4wNjEsMS4wNjEsMCwwLDAsLjI0OC0uNzMyLDEuMTQxLDEuMTQxLDAsMCwwLS4yNDgtLjc1My43NjkuNzY5LDAsMCwwLTEuMjE3LDAsMS4xNDEsMS4xNDEsMCwwLDAtLjI0OC43NTMsMS4wOSwxLjA5LDAsMCwwLC4yMzcuNzMyQS43NjMuNzYzLDAsMCwwLDE4LjgyMSwxMy4wNjFaTTIxLjAwNywxNC4xYTMuMjM3LDMuMjM3LDAsMCwxLTQuMzUyLS4wMSwyLjg2NCwyLjg2NCwwLDAsMSwwLTQuMSwzLjIyMywzLjIyMywwLDAsMSw0LjM1MiwwLDIuNzczLDIuNzczLDAsMCwxLC44NjYsMi4wNjNBMi43NCwyLjc0LDAsMCwxLDIxLjAwNywxNC4xWlwiIHN0eWxlPVwiZmlsbDojOTBhOTNhXCIvPmAsXG4gIFwiRWxpeGlyXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCIxNy4yNDlcIiB5MT1cIi0zMzUuNTk3XCIgeDI9XCIxNC45NzNcIiB5Mj1cIi0zMDkuOTk0XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMSwgMCwgMCwgLTEsIDAsIC0zMDYpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZmXCIgc3RvcC1vcGFjaXR5PVwiMFwiLz48c3RvcCBvZmZzZXQ9XCIwLjAxXCIgc3RvcC1jb2xvcj1cIiNmN2Y2ZjhcIiBzdG9wLW9wYWNpdHk9XCIwLjA0XCIvPjxzdG9wIG9mZnNldD1cIjAuMDlcIiBzdG9wLWNvbG9yPVwiI2FhOWNiM1wiIHN0b3Atb3BhY2l0eT1cIjAuMzlcIi8+PHN0b3Agb2Zmc2V0PVwiMC4yXCIgc3RvcC1jb2xvcj1cIiM2ZjU2N2VcIiBzdG9wLW9wYWNpdHk9XCIwLjY2XCIvPjxzdG9wIG9mZnNldD1cIjAuMzJcIiBzdG9wLWNvbG9yPVwiIzQ1MjQ1OVwiIHN0b3Atb3BhY2l0eT1cIjAuODZcIi8+PHN0b3Agb2Zmc2V0PVwiMC41XCIgc3RvcC1jb2xvcj1cIiMyZDA4NDNcIiBzdG9wLW9wYWNpdHk9XCIwLjk3XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzI2MDAzZFwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2VsaXhpcjwvdGl0bGU+PHBhdGggZD1cIk0xNy44LDguNTkxYzIuMDc5LDQuNTg0LDcuNjQsNi41LDcuMTQxLDEyLjQ3NC0uNTgyLDcuMDE3LTUuNTUxLDguNzg0LTguMzE2LDguOTA5YTguODE1LDguODE1LDAsMCwxLTkuNC03LjQ4NUM1LjYxOCwxNS4wNDYsMTIuNjU1LDMuNjMyLDE2LjcwOSwyQTE1LjA4MywxNS4wODMsMCwwLDAsMTcuOCw4LjU5MVptLS4xNjYsMTguODU3YS40MjMuNDIzLDAsMCwwLS4wNTctLjMyN2MtLjU5My0xLjEtNS44MS0xLjY0NS02LjkwNy0xLjc1MmE4LjI3Miw4LjI3MiwwLDAsMCwxLjYzNSwxLjMsNy43NjYsNy43NjYsMCwwLDAsMi44MTQsMS4wNDFDMTUuOTIyLDI3LjgzMSwxNy40NjcsMjcuOTMzLDE3LjYzNSwyNy40NDdaXCIgc3R5bGU9XCJmaWxsOiM3YzY0OGZcIi8+PGcgc3R5bGU9XCJvcGFjaXR5OjAuMjVcIj48cGF0aCBkPVwiTTE4LjI0OCwxMC42MThjNC40Nyw0LjgyMyw2LjQ0NSw0Ljk3OSw2LjIzNywxMC40NzgtLjI0OSw2LjQ3Ni00LjU0Myw4LjE5MS03LjA1OCw4LjQyLTQuMi41NTEtNy40OTUtMS41MjgtOC4zNTgtNS42ODZDNy4zMTIsMTcuMDYzLDEyLjk3OCw2LjAyMywxNi42MzcsNC4zNkExNS4zMjMsMTUuMzIzLDAsMCwwLDE4LjI1OCwxMC42WlwiIHN0eWxlPVwiZmlsbDojMjYwMDNkXCIvPjwvZz48ZyBzdHlsZT1cIm9wYWNpdHk6MC43NVwiPjxwYXRoIGQ9XCJNMTcuMzg1LDkuOTIxQzIwLjM2OSwxNCwyNC4zMTksMTMuNywyNSwxOS42NDFjLjA5NCw2LjkyMy0zLjYsOS4yODMtNi4yMzcsOS45NDgtNC41LDEuMjc5LTguNTE0LS42NDUtMTAuMDk0LTUtMy4wMzUtNywyLjY1MS0xOC41MTQsNi4zMS0yMC45MTVhMTUuMDgzLDE1LjA4MywwLDAsMCwyLjM3LDYuMjM3WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjwvZz5gLFxuICBcIkVsbVwiOiBgPHBhdGggZD1cIk0xNiwxNi43NjgsMi43NjgsMzBIMjkuMjMyWlwiIHN0eWxlPVwiZmlsbDojNWZiNGNiXCIvPjxwYXRoIGQ9XCJNMjQuMTMsMjMuMzYyLDMwLDI5LjIzMlYxNy40OTJaXCIgc3R5bGU9XCJmaWxsOiNlZWE0MDBcIi8+PHBhdGggZD1cIk0xNS4yMzIsMTYsMiwyLjc2OFYyOS4yMzJaXCIgc3R5bGU9XCJmaWxsOiM1OTYyNzdcIi8+PHBhdGggZD1cIk0zMCwxNC40NDhWMkgxNy41NTJaXCIgc3R5bGU9XCJmaWxsOiM1ZmI0Y2JcIi8+PHBhdGggZD1cIk0yMy4zOTIsOS4zNzZsNi41OTQsNi41OTQtNi42MjQsNi42MjRMMTYuNzY4LDE2Wk0yLjc2OCwyLDguODYzLDguMUgyMi4xMTFMMTYuMDE2LDJaXCIgc3R5bGU9XCJmaWxsOiM4Y2Q2MzZcIi8+PHBhdGggZD1cIk0xNiwxNS4yMzJsNi4wNTEtNi4wNTFIOS45NDlaXCIgc3R5bGU9XCJmaWxsOiNlZWE0MDBcIi8+YCxcbiAgXCJFUkJcIjogYDxwYXRoIGQ9XCJNNy4yNSwyNC43NWgxNy41TDEyLjUsMTIuNSw3LjI1LDE3Ljc1Wk0yLDMwSDMwVjJIMTZMMiwxNlptMjUuMzc1LTIuNjI1SDQuNjI1di0xMC41bDEyLjI1LTEyLjI1aDEwLjVaXCIgc3R5bGU9XCJmaWxsOiM5MjFhMWVcIi8+YCxcbiAgXCJFcmxhbmdcIjogYDxwYXRoIGQ9XCJNNi4zODgsMjMuODY3YTExLjAxMiwxMS4wMTIsMCwwLDEtMy40NDEtOC4yMzQsMTAuNzY1LDEwLjc2NSwwLDAsMSwyLjg2NC03LjVIMnYxNS43M1ptMjAuMDY2LDBhMTYuNDQsMTYuNDQsMCwwLDAsMi41MzctMy4xMzZsLTQuMjE4LTEuODczYTguMzA2LDguMzA2LDAsMCwxLTYuNjQxLDQuMTJjLTQuMzU5LS4wMTQtNi4wNzItMy4zMjktNi4wNjMtNy41ODRIMjguMzZhNi40NjUsNi40NjUsMCwwLDAsMC0uOTM1LDkuMDU3LDkuMDU3LDAsMCwwLTIuMDI5LTYuMzI2SDMwdjE1LjczSDI2LjQ1NlpNMTIuMzMyLDExLjc0MmEzLjcyMywzLjcyMywwLDAsMSwzLjktMy4yMywzLjI5LDMuMjksMCwwLDEsMy41MzIsMy4yM1pcIiBzdHlsZT1cImZpbGw6I2EyMDAzZVwiLz5gLFxuICBcIkYjXCI6IGA8cGF0aCBkPVwiTTIsMTYsMTUuMjg4LDIuNzEyVjkuMzU2TDguNjQ0LDE2bDYuNjQ0LDYuNjQ0djYuNjQ0WlwiIHN0eWxlPVwiZmlsbDojMzc4YmJhXCIvPjxwYXRoIGQ9XCJNMTAuNTQyLDE2bDQuNzQ2LTQuNzQ2djkuNDkyWlwiIHN0eWxlPVwiZmlsbDojMzc4YmJhXCIvPjxwYXRoIGQ9XCJNMzAsMTYsMTYuMjM3LDIuNzEyVjkuMzU2TDIyLjg4MSwxNmwtNi42NDQsNi42NDR2Ni42NDRaXCIgc3R5bGU9XCJmaWxsOiMzMGI5ZGJcIi8+YCxcbiAgXCJGaXJlc3RvcmUgc2VjdXJpdHkgcnVsZXNcIjogYDxwYXRoIGQ9XCJNNS44LDI0LjZsLjE3LS4yMzdMMTMuOTksOS4xNDlsLjAxNy0uMTYxLTMuNTM1LTYuNjRhLjY1Ni42NTYsMCwwLDAtMS4yMjcuMjA3WlwiIHN0eWxlPVwiZmlsbDojZmZjMjRhXCIvPjxwYXRoIGQ9XCJNNS45LDI0LjQybC4xMjgtLjI1TDEzLjk2NSw5LjExNCwxMC40MzksMi40NDhhLjYuNiwwLDAsMC0xLjEzMy4yMDZaXCIgc3R5bGU9XCJmaWxsOiNmZmE3MTJcIi8+PHBhdGggZD1cIk0xNi41ODQsMTQuMDFsMi42MzItMi43TDE2LjU4Myw2LjI4OWEuNjc4LjY3OCwwLDAsMC0xLjE5NSwwTDEzLjk4MSw4Ljk3MVY5LjJaXCIgc3R5bGU9XCJmaWxsOiNmNGJkNjJcIi8+PHBhdGggZD1cIk0xNi41MzcsMTMuOSwxOS4xLDExLjI4LDE2LjUzNyw2LjRhLjU4OS41ODksMCwwLDAtMS4wNzQtLjA0N0wxNC4wNDksOS4wODJsLS4wNDIuMTM5WlwiIHN0eWxlPVwiZmlsbDojZmZhNTBlXCIvPjxwb2x5Z29uIHBvaW50cz1cIjUuODAyIDI0LjYwMSA1Ljg3OSAyNC41MjMgNi4xNTggMjQuNDEgMTYuNDE4IDE0LjE4OCAxNi41NDggMTMuODM0IDEzLjk4OSA4Ljk1NiA1LjgwMiAyNC42MDFcIiBzdHlsZT1cImZpbGw6I2Y2ODIwY1wiLz48cGF0aCBkPVwiTTE2LjkxMiwyOS43NTYsMjYuMiwyNC41NzcsMjMuNTQ2LDguMjQ2QS42MzUuNjM1LDAsMCwwLDIyLjQ3MSw3LjlMNS44LDI0LjZsOS4yMzMsNS4xNTVhMS45MjcsMS45MjcsMCwwLDAsMS44NzgsMFwiIHN0eWxlPVwiZmlsbDojZmRlMDY4XCIvPjxwYXRoIGQ9XCJNMjYuMTE1LDI0LjUzNCwyMy40ODMsOC4zMjZhLjU1Ny41NTcsMCwwLDAtLjk2Ny0uMzUzTDUuOSwyNC41NjlsOS4xMzEsNS4xYTEuOTEyLDEuOTEyLDAsMCwwLDEuODYzLDBaXCIgc3R5bGU9XCJmaWxsOiNmY2NhM2ZcIi8+PHBhdGggZD1cIk0xNi45MTIsMjkuNmExLjkyNywxLjkyNywwLDAsMS0xLjg3OCwwTDUuODc2LDI0LjUyMiw1LjgsMjQuNmw5LjIzMyw1LjE1NWExLjkyNywxLjkyNywwLDAsMCwxLjg3OCwwTDI2LjIsMjQuNTc3bC0uMDIzLS4xNFpcIiBzdHlsZT1cImZpbGw6I2VlYWIzN1wiLz48cG9seWdvbiBwb2ludHM9XCIyMy4yMDEgMTMgMTUuNDA1IDE2LjUzNCAxNS40MDUgMjcuNjAzIDIxLjYyNSAyNC43ODUgMjEuNjI1IDMxIDMxIDI2Ljc0MyAzMSAxNi41MzQgMjMuMjAxIDEzXCIgc3R5bGU9XCJmaWxsOiMyNTI1MjVcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjMuMjAxIDE0LjczIDE2Ljk4NSAxNy41NDkgMTYuOTg1IDIwLjMyNyAyMy4yMDEgMTcuNTA3IDI5LjQyMSAyMC4zMjcgMjkuNDIxIDE3LjU0OSAyMy4yMDEgMTQuNzNcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cG9seWdvbiBwb2ludHM9XCIyMy4yMDEgMTkuNTY0IDE2Ljk4NSAyMi4zODEgMTYuOTg1IDI1LjE1OCAyMy4yMDEgMjIuMzM3IDI5LjQyMSAyNS4xNTggMjkuNDIxIDIyLjM4MSAyMy4yMDEgMTkuNTY0XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjguNjA2IDI2LjA5OCAyNS41NTEgMjQuNzEyIDIzLjIwMSAyNS43NzggMjMuMjAxIDI4LjU0OCAyOC42MDYgMjYuMDk4XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcbiAgXCJGbG93XCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCItNjcuOTA3XCIgeTE9XCItMzA4LjU1MVwiIHgyPVwiLTY3Ljg1N1wiIHkyPVwiLTMwOC41NjRcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg4Ny44MjIsIDAsIDAsIC04OC41MzMsIDU5ODQuNTMyLCAtMjcyOTAuNjE3KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZDQ0MVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNmZmIwNDdcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCItNjcuNjc0XCIgeTE9XCItMzEwLjEyMVwiIHgyPVwiLTY3LjY0N1wiIHkyPVwiLTMxMC4wNjNcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg4Ny44MjIsIDAsIDAsIC04OC41MzMsIDU5NjQuNjY3LCAtMjc0NDMpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZkNzU0XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2ZmYjUzMlwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImNcIiB4MT1cIi02Ny4wMjlcIiB5MT1cIi0zMTAuOTFcIiB4Mj1cIi02Ny4wMjlcIiB5Mj1cIi0zMTAuODZcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg4Ny44MjIsIDAsIDAsIC04OC41MzMsIDU5MDIuOCwgLTI3NTE4LjczMylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmQ2NDJcIi8+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZkNDQxXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2ZmYjUzMlwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImRcIiB4MT1cIi02Ni4yNTJcIiB5MT1cIi0zMTAuMzc3XCIgeDI9XCItNjYuMzJcIiB5Mj1cIi0zMTAuMzYyXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMTA2LjE5OCwgMCwgMCwgLTg4LjU1MSwgNzA0OC40MjgsIC0yNzQ3NC4xNjcpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZkNDQxXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2ZmYTgyOVwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2Zsb3c8L3RpdGxlPjxwYXRoIGQ9XCJNMjMuNDI2LDI5LjQxVjIyLjE3MmgtNy4xOGw3LjE4LDcuMjM4XCIgc3R5bGU9XCJmaWxsOiNmZmRmNTE7ZmlsbC1vcGFjaXR5OjAuNjk5OTk5OTg4MDc5MDcxXCIvPjxwYXRoIGQ9XCJNMjQuMjMxLDI1LjMwNlYxNy40NzdIMTYuNDY2bDcuNzY2LDcuODI5XCIgc3R5bGU9XCJmaWxsOiNmZjg5MDA7ZmlsbC1vcGFjaXR5OjAuNjk5OTk5OTg4MDc5MDcxXCIvPjxwYXRoIGQ9XCJNMTkuNTE1LDIyLjE3MVYzMGg3Ljc2NmwtNy43NjYtNy44MjlcIiBzdHlsZT1cImZpbGwtb3BhY2l0eTowLjY5OTk5OTk4ODA3OTA3MTtmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0yMi42MDgsMThWMTEuODA5SDE2LjQ2NkwyMi42MDgsMThcIiBzdHlsZT1cImZpbGw6I2ZmZGY0ZjtmaWxsLW9wYWNpdHk6MC42OTk5OTk5ODgwNzkwNzFcIi8+PHBhdGggZD1cIk0yNS41MjQsMTYuNTI1VjguN0gxNy43NTlsNy43NjYsNy44MjlcIiBzdHlsZT1cImZpbGwtb3BhY2l0eTowLjc5OTk5OTk1MjMxNjI4NDtmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk0xMi4yODgsMlY5LjgyOWg3Ljc2NkwxMi4yODgsMlwiIHN0eWxlPVwiZmlsbC1vcGFjaXR5OjAuODAwMDAwMDExOTIwOTI5O2ZpbGw6dXJsKCNjKVwiLz48cGF0aCBkPVwiTTE0LjExLDE0LjI2MlY2LjQzM0g0LjcxOWw3LjczMiw3LjgzLDEuNjU5LDBcIiBzdHlsZT1cImZpbGwtb3BhY2l0eTowLjg3OTk5OTk5NTIzMTYyODtmaWxsOnVybCgjZClcIi8+PHBhdGggZD1cIk0xNC4xMSwyOS45NThWMjAuNDg3SDQuNzE5bDkuMzkxLDkuNDcxXCIgc3R5bGU9XCJmaWxsOiNmZmI3MDA7ZmlsbC1vcGFjaXR5OjAuNjk5OTk5OTg4MDc5MDcxXCIvPjxwYXRoIGQ9XCJNMTQuMTEyLDIyLjExNFYxNC4yODVINi4zNDZsNy43NjYsNy44MjlcIiBzdHlsZT1cImZpbGw6I2ZmYjcwMDtmaWxsLW9wYWNpdHk6MC41XCIvPjxwYXRoIGQ9XCJNMTYuNDY1LDExLjgwOXY3LjgyOWg3Ljc2NmwtNy43NjYtNy44MjlcIiBzdHlsZT1cImZpbGw6I2ZmY2QyNTtmaWxsLW9wYWNpdHk6MC42OTk5OTk5ODgwNzkwNzFcIi8+PHBhdGggZD1cIk0xNC4wOTIsMTIuNjkxVjQuODYySDYuMzI2bDcuNzY2LDcuODI5XCIgc3R5bGU9XCJmaWxsOiNmZjg5MDA7ZmlsbC1vcGFjaXR5OjAuNzAwMDAwMDQ3NjgzNzE2XCIvPjxwYXRoIGQ9XCJNMTYuMjQ2LDIyLjE3MVYzMGg3Ljc2NmwtNy43NjYtNy44MjlcIiBzdHlsZT1cImZpbGw6I2ZmODkwMDtmaWxsLW9wYWNpdHk6MC42OTk5OTk5ODgwNzkwNzFcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjEuMTIyIDIyLjE3MiAxOC42MDkgMTkuNjM4IDE2LjQ2NSAxOS42MzggMTYuNDY2IDExLjgwOSAyMC44NDcgMTEuODA5IDE4Ljg4MiA5LjgyOSAxNC4wOTIgOS44MjkgMTQuMTEgMTQuMjYyIDE0LjExIDIwLjQ4NyAxNC4xMSAzMCAxNi4yNDYgMzAgMTYuMjQ2IDIyLjE3MiAyMS4xMjIgMjIuMTcyXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcbiAgXCJGb3J0cmFuXCI6IGA8ZyBpZD1cImczNzY4XCI+PHJlY3QgaWQ9XCJyZWN0ODgxXCIgeD1cIjIuMzRcIiB5PVwiMi4zNFwiIHdpZHRoPVwiMjcuMzNcIiBoZWlnaHQ9XCIyNy4zM1wiIHJ4PVwiNS4wOFwiIHN0eWxlPVwiZmlsbDojNzM0Zjk2XCIvPjxwYXRoIGlkPVwicGF0aDE0MTJcIiBkPVwiTTYuMDYsMjUuNWMwLTEuMDksMC0xLjE5LjEtMS4xOWwxLjI1LS4wNmMxLDAsMS4xOC0uMDYsMS40Mi0uMTlhLjc0Ljc0LDAsMCwwLC4zOS0uMzdjLjEyLS4yMy4xMi0uMjkuMTItNy43MiwwLTcsMC03LjUtLjEtNy42N2ExLjA2LDEuMDYsMCwwLDAtLjYzLS41LDEwLjIzLDEwLjIzLDAsMCwwLTEuMzgtLjFsLTEuMTcsMFY1LjMySDI1Ljk0djguODJIMjQuODlhOC41Niw4LjU2LDAsMCwxLTEuMi0uMDVjLS4xNCwwLS4xNS0uMDUtLjIyLS45NWExMi43MywxMi43MywwLDAsMC0uMzUtMi40MywzLjIyLDMuMjIsMCwwLDAtMi42My0yLjgxYy0uNTctLjEtMy4xLS4yLTUuMTktLjJIMTMuODd2Ni42M2wuNzUsMEE2LjMzLDYuMzMsMCwwLDAsMTYuNDksMTRhMS44OCwxLjg4LDAsMCwwLC44OS0uOTEsNS44Niw1Ljg2LDAsMCwwLC4zOS0xLjc1YzAtLjMzLjA4LS42Ni4xLS43M3MwLS4xMywxLjE4LS4xM0gyMC4yVjIxLjA2SDE3Ljg1bDAtLjYxYTcuODUsNy44NSwwLDAsMC0uNTQtMi42NmMtLjM2LS42OC0xLjA1LTEtMi40NS0xLjA4bC0uNzYtLjA3LS4yLDAsMCwzLjM0YzAsMy41MSwwLDMuNjUuMywzLjk0cy40My4zMiwzLjIyLjQyYy4wNSwwLC4wNy4yOC4wNywxLjE5djEuMThINi4wNlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48L2c+YCxcbiAgXCJGcmVlTWFya2VyIFRlbXBsYXRlIExhbmd1YWdlXCI6IGA8cGF0aCBkPVwiTTI0LjAyMywyMC45LDI1LjQwOCwyM2w0LjYxNS03TDI1LjQwOCw5bC0xLjM4NSwyLjFMMjcuMjU1LDE2WlwiIHN0eWxlPVwiZmlsbDojMDA1MGIyXCIvPjxwYXRoIGQ9XCJNNy45NzcsMTEuMSw2LjU5Miw5LDEuOTc3LDE2bDQuNjE1LDcsMS4zODUtMi4xTDQuNzQ1LDE2WlwiIHN0eWxlPVwiZmlsbDojMDA1MGIyXCIvPjxwYXRoIGQ9XCJNMTMuMDM1LDloMi44bC0uNDk0LDIuOGgyLjhMMTguNjM1LDloMi44bC0uNDk0LDIuOGgyLjhsLS40OTUsMi44aC0yLjhsLS40OTMsMi44aDIuOGwtLjQ5NCwyLjhoLTIuOEwxOC45NjcsMjNoLTIuOGwuNDkzLTIuOC0yLjgsMEwxMy4zNzUsMjNIMTAuNTY3bC40OTMtMi44LTIuOCwwLC40OTQtMi44aDIuOGwuNDkzLTIuNzkzaC0yLjhMOS43NDEsMTEuOGgyLjhabTEuMzE5LDguNGgyLjhsLjQ5NC0yLjhoLTIuOFpcIiBzdHlsZT1cImZpbGw6IzAwNTBiMlwiLz5gLFxuICBcIkdhbWVNYWtlciBMYW5ndWFnZVwiOiBgPHBhdGggZD1cIk0xNC4yMTYsMjQuMTY3aC0uOTg5YTMuMjQsMy4yNCwwLDAsMS0yLjgxMS0xLjY0OUw2LjY2NywxNmw0LjY4MS04LjE2N0gxNi4ybC00LjM0LDguMTc2LjA1Ny4wMzJMMTMuOTM2LDE5LjVIMTYuODJaTTguNDU1LDEwLjUzNWwtMS4yNy0yLjIxYTEsMSwwLDAsMC0uODU5LS40OTJIMmw0LDYuOTkyWk0yMS41NCw5LjQ4MmEzLjIzOSwzLjIzOSwwLDAsMC0yLjgxMi0xLjY0OUgxNy41MjNMMTUuMDQ1LDEyLjVIMTguMDJMMjAuMDgzLDE2bC00LjUzMSw4LjE2N2g1LjA1NkwyNS4zMzMsMTZaTTI2LDE3LjE3MmwtMi40Nyw0LjI3LDEuMjgzLDIuMjMzYTEsMSwwLDAsMCwuODU5LjQ5MkgzMFpcIiBzdHlsZT1cImZpbGw6IzhiYzM0YVwiLz5gLFxuICBcIkctY29kZVwiOiBgPHBhdGggZD1cIk0xNy4zMzMsMTYuMzU2aDBMMTcuMzA5LDIwLjhsLTIuMS0xLjAxOC4wMjMtNC40MzdoMGwxMC41NTgtMy4wMzgsMi4xMDYsMS4wMTNaXCIgc3R5bGU9XCJmaWxsOiM4ZTAwMDBcIi8+PHBhdGggZD1cIk0yNC40OTIsMTguNTc2YTE0LjkwOSwxNC45MDksMCwwLDEtMS4zNDMsMy4wNzQsNy44Niw3Ljg2LDAsMCwxLTEuMzksMS44MjksNi44LDYuOCwwLDAsMS0xLjcsMS4zMjQsNy40MDUsNy40MDUsMCwwLDEtMi4wMDYuODU1LDYsNiwwLDAsMS0zLjA3Mi4yM0E0LjY2OCw0LjY2OCwwLDAsMSwxMi40NCwyNC42NGE1LjMyMiw1LjMyMiwwLDAsMS0uNjM2LS42MjlsLS41MDgtLjI0NGE0LjcxNyw0LjcxNywwLDAsMCwuNDU3LjE4MSw1LjUyLDUuNTIsMCwwLDEtMS4wMTUtMS43NTgsOC4xMzUsOC4xMzUsMCwwLDEtLjQzLTEuNTMzYy0uMDIzLS4xMzEtLjA0My0uMjM5LS4wNjEtLjM0YTcuMjkyLDcuMjkyLDAsMCwwLC4zNzcsMS4zNTQsNS44MzYsNS44MzYsMCwwLDAsMS42MTQsMi4zMTljLjA2LjA1NC4xMjcuMS4xOS4xNDguMDQuMDA4LjA3OC4wMjIuMTE5LjAyOWE2LjQ1NCw2LjQ1NCwwLDAsMCwyLjkyOC0uMjE5LDguNCw4LjQsMCwwLDAsMS45MS0uODA3LDcuNjU4LDcuNjU4LDAsMCwwLDEuNTg5LTEuMjI3LDguNjYyLDguNjYyLDAsMCwwLDEuMjktMS42OSwxMi42NjcsMTIuNjY3LDAsMCwwLDEuMDE5LTIuMTk0TDIzLjMsMTljLjA1Ni0uMTUzLjA5MS0uMjU0LjA5MS0uMjU0WlwiIHN0eWxlPVwiZmlsbDojOGUwMDAwXCIvPjxwYXRoIGQ9XCJNMjQuNTI0LDQuMDEzYTExLjYsMTEuNiwwLDAsMC02LjU4OC0xLjk5NCwxMy44LDEzLjgsMCwwLDAtOS4zNzMsNC44NEExOC4yNDMsMTguMjQzLDAsMCwwLDQsMTguOGMuMDIxLDMuODUxLDEuNDgxLDcuODA2LDUuMTEyLDkuNTc1YTEzLjU2MywxMy41NjMsMCwwLDAsNC4xNTksMS41NjQsMTIuMTE0LDEyLjExNCwwLDAsMCw2Ljg2OS0xLjUyOWMtMi43MzQsMS4zMzMtNi4xMiwxLjk5My04Ljg5NC40LTIuNjg5LTEuNTQzLTMuOTgzLTQuNzI0LTQuMjIxLTcuNy0uNTEyLTYuNCwzLjEtMTMuNjQsOS4xMzItMTYuMjgxLDMuNTEyLTEuNTM3LDcuMzA3LTEuNTg1LDEwLjIzOSwxLjFDMjYuNzI3LDUuMjQ0LDI1LDQuMzA1LDI0LjUyNCw0LjAxM1ptLTE0LjM1OSwyNC44LS4xMzgtLjA5M1pcIiBzdHlsZT1cImZpbGw6IzhlMDAwMFwiLz48cGF0aCBkPVwiTTIyLjUyOSwyNi43ODhjLTMuMDQ0LDIuNTgyLTcuOTIsNC4xNDktMTEuNTU0LDEuODU3QzcuMjQsMjYuMjg5LDYuNTMsMjEuMDg5LDcuMjEyLDE3LjA4M2ExNy4yMTgsMTcuMjE4LDAsMCwxLDYuNy0xMC45N2MzLjc3MS0yLjYzNiw4Ljg4LTMuNDksMTIuNDg5LS4xODJsLTIuMjcsMy4yOTFjLTIuNTEtMi4zNTUtNi4zLTEuOTU2LTguOTQ1LS4wNTJBMTIuNDM0LDEyLjQzNCwwLDAsMCwxMC41LDE2LjJjLS42NjIsMi42MjMtLjUsNi4wMTEsMS41LDguMDQ3LDIuMDg4LDIuMTI5LDUuMTEyLDIuMTE2LDcuNjU2LjhBMTAuMzM0LDEwLjMzNCwwLDAsMCwyNC41LDE4LjYzNkwxNy4zMDcsMjAuOGwuMDIyLTQuNDM4TDI3Ljg5LDEzLjMxOWwuMS44MDZoMEExNi42MjUsMTYuNjI1LDAsMCwxLDIyLjUyOSwyNi43ODhaXCIgc3R5bGU9XCJmaWxsOiNiYTAwMDBcIi8+YCxcbiAgXCJHRFNjcmlwdFwiOiBgPHBhdGggZD1cIk0yOC4xNjYsMjEuMDI5djEuNjUyYS4zNzQuMzc0LDAsMCwxLS4yNi4zNTdsLTIuNi44NDFhLjM2Ny4zNjcsMCwwLDEtLjMzNS0uMDU0LjM3NC4zNzQsMCwwLDEtLjE1NS0uM3YtMS44bC0yLjQzOC40NjRWMjQuMDJhLjM3NS4zNzUsMCwwLDEtLjMyNS4zNzFsLTMuNTI1LjQ4M2MtLjAxNiwwLS4wMzQsMC0uMDUxLDBBLjM3NC4zNzQsMCwwLDEsMTguMSwyNC41VjIyLjU1N2wtMS44MTkuMDA4aC0uMjY3bC0xLjgxOS0uMDA4VjI0LjVhLjM3NS4zNzUsMCwwLDEtLjM3NS4zNzZjLS4wMTcsMC0uMDM0LDAtLjA1MiwwbC0zLjUyNS0uNDgzYS4zNzUuMzc1LDAsMCwxLS4zMjQtLjM3MVYyMi4xODRsLTIuNDM5LS40NjR2MS44YS4zNzQuMzc0LDAsMCwxLS4xNTQuMy4zNy4zNywwLDAsMS0uMzM2LjA1NGwtMi42LS44NDFhLjM3NC4zNzQsMCwwLDEtLjI1OS0uMzU3VjIxLjAyOWwtMS42MDgtLjU0MWE0LjU1OCw0LjU1OCwwLDAsMC0uMTI0LDEuMDRjMCw0LjMxNyw2LjA4Miw3LjY1LDEzLjYsNy42NzRoLjAxOWM3LjUxNy0uMDI0LDEzLjYtMy4zNTYsMTMuNi03LjY3NGE0LjU0LDQuNTQsMCwwLDAtLjEtLjk1WlwiIGZpbGw9XCIjNDc4Y2JmXCIvPjxwYXRoIGQ9XCJNMy43MTEsMTMuMzczVjIwLjFsLjkwNy4zMDZhLjM3NC4zNzQsMCwwLDEsLjI1Ni4zNTV2MS42NWwxLjg1NS42VjIxLjI2N2EuMzc2LjM3NiwwLDAsMSwuNDQ1LS4zNjlsMy4xODkuNjA5YS4zNzQuMzc0LDAsMCwxLC4zMDUuMzY4djEuODE4bDIuNzc1LjM3OXYtMS44OWEuMzc0LjM3NCwwLDAsMSwuMzc2LS4zNzVoMGwyLjMyNy4wMDksMi4zMjYtLjAwOWEuMzc0LjM3NCwwLDAsMSwuMzc3LjM3NXYxLjg5bDIuNzc1LS4zNzlWMjEuODc0YS4zNzMuMzczLDAsMCwxLC4zLS4zNjhsMy4xODktLjYwOWEuMzc3LjM3NywwLDAsMSwuNDQ2LjM2OXYxLjc0MWwxLjg1NS0uNlYyMC43NmEuMzc0LjM3NCwwLDAsMSwuMjU1LS4zNTVsLjYxOC0uMjA4VjEzLjM3M2guMDE3QTI2Ljc5MiwyNi43OTIsMCwwLDAsMzAsMTAuOTMxYTE5LjAyLDE5LjAyLDAsMCwwLTIuNTA5LTMuMjg4QTI0LjUwNywyNC41MDcsMCwwLDAsMjUsOS4wOTFhMTMuMDEsMTMuMDEsMCwwLDAtMS4yNzktMS4wNTIsMTUuMzY1LDE1LjM2NSwwLDAsMC0xLjM3NS0uODk0LDI4LjM1MywyOC4zNTMsMCwwLDAsLjIzMi0zLjA3MUExNS45NjgsMTUuOTY4LDAsMCwwLDE4Ljg0NywyLjhhMjYuNDQsMjYuNDQsMCwwLDAtMS4zODUsMi43LDkuNDYsOS40NiwwLDAsMC0xLjQ1My0uMTE2aC0uMDE4YTkuNDU3LDkuNDU3LDAsMCwwLTEuNDU0LjExNiwyNi4yNzUsMjYuMjc1LDAsMCwwLTEuMzg1LTIuN0ExNS45NjEsMTUuOTYxLDAsMCwwLDkuNDIyLDQuMDc1YTI4LjE0MiwyOC4xNDIsMCwwLDAsLjIzMiwzLjA3MSwxNS4zMTIsMTUuMzEyLDAsMCwwLTEuMzc2Ljg5NEExMy4wNiwxMy4wNiwwLDAsMCw3LDkuMDkxYTI0LjU1MywyNC41NTMsMCwwLDAtMi40OS0xLjQ0OEExOS4wMiwxOS4wMiwwLDAsMCwyLDEwLjkzMWEyNi43OTIsMjYuNzkyLDAsMCwwLDEuNjk0LDIuNDQzWlwiIGZpbGw9XCIjNDc4Y2JmXCIvPjxwYXRoIGQ9XCJtMTIuNDYyIDE2LjZhMi43MzkgMi43MzkgMCAxIDEtMi43NC0yLjczOCAyLjczOSAyLjczOSAwIDAgMSAyLjc0IDIuNzM4XCIgZmlsbD1cIiNmZmZcIi8+PHBhdGggZD1cIm0xMS44IDE2Ljc2NGExLjgxOSAxLjgxOSAwIDEgMS0xLjgxOS0xLjgxOSAxLjgxNyAxLjgxNyAwIDAgMSAxLjgxOSAxLjgxOVwiIGZpbGw9XCIjNDE0MDQyXCIvPjxwYXRoIGQ9XCJNMTYuMTY2LDE5LjU5YS44NDQuODQ0LDAsMCwxLS44ODItLjhWMTYuMjY3YS44ODYuODg2LDAsMCwxLDEuNzY0LDB2Mi41MjJhLjg0NS44NDUsMCwwLDEtLjg4My44XCIgZmlsbD1cIiNmZmZcIi8+PHBhdGggZD1cIm0xOS44NzEgMTYuNmEyLjczOSAyLjczOSAwIDEgMCAyLjc0LTIuNzM4IDIuNzM5IDIuNzM5IDAgMCAwLTIuNzQgMi43MzhcIiBmaWxsPVwiI2ZmZlwiLz48cGF0aCBkPVwibTIwLjUzMSAxNi43NjRhMS44MTggMS44MTggMCAxIDAgMS44MTctMS44MTkgMS44MTcgMS44MTcgMCAwIDAtMS44MTcgMS44MTlcIiBmaWxsPVwiIzQxNDA0MlwiLz5gLFxuICBcIkdpdFwiOiBgPHBhdGggZD1cIk0yOS40NzIsMTQuNzUzLDE3LjI0NywyLjUyOGExLjgsMS44LDAsMCwwLTIuNTUsMEwxMi4xNTgsNS4wNjdsMy4yMiwzLjIyYTIuMTQxLDIuMTQxLDAsMCwxLDIuNzEyLDIuNzNsMy4xLDMuMWEyLjE0MywyLjE0MywwLDEsMS0xLjI4NSwxLjIxbC0yLjg5NS0yLjg5NXY3LjYxN2EyLjE0MSwyLjE0MSwwLDEsMS0xLjc2NC0uMDYyVjEyLjNhMi4xNDYsMi4xNDYsMCwwLDEtMS4xNjUtMi44MTRMMTAuOTExLDYuMzE0LDIuNTI4LDE0LjdhMS44LDEuOCwwLDAsMCwwLDIuNTUxTDE0Ljc1MywyOS40NzJhMS44LDEuOCwwLDAsMCwyLjU1LDBMMjkuNDcyLDE3LjNhMS44LDEuOCwwLDAsMCwwLTIuNTUxXCIgc3R5bGU9XCJmaWxsOiNkZDRjMzVcIi8+PHBhdGggZD1cIk0xMi4xNTgsNS4wNjdsMy4yMiwzLjIyYTIuMTQxLDIuMTQxLDAsMCwxLDIuNzEyLDIuNzNsMy4xLDMuMWEyLjE0MywyLjE0MywwLDEsMS0xLjI4NSwxLjIxbC0yLjg5NS0yLjg5NXY3LjYxN2EyLjE0MSwyLjE0MSwwLDEsMS0xLjc2NC0uMDYyVjEyLjNhMi4xNDYsMi4xNDYsMCwwLDEtMS4xNjUtMi44MTRMMTAuOTExLDYuMzE0XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcbiAgXCJHTFNMXCI6IGA8cGF0aCBkPVwiTTcuNzc5LDE4LjkyM0EyLjMzMywyLjMzMywwLDAsMSw1LjQsMTcuMTZjLjMwNiwxLjQ2MiwxLjk2MSwyLjg5Miw3LjE4MywzLjUyOWExNC4yMjgsMTQuMjI4LDAsMCwwLDkuMjMyLTEuNjEycy43MzMtLjMyMi4yOTMuMTc2YzAsMC0zLjEwNywyLjg3My05LjIsMi45UzEuOTcsMTkuMTA3LDIsMTZjLS4wMjktMy4xMDcsNC44MDYtNi4xODUsMTAuOS02LjE1NXM5LjIsMi45LDkuMiwyLjljLjQ0LjUtLjI5My4xNzYtLjI5My4xNzYtMS4wODQtLjctNC4yODYtMi4wODktOS4yMzItMS42MTItNC44NjYuNDY5LTYuNDUzLDIuMTIyLTYuOTgxLDMuMjM1YTMuMjU0LDMuMjU0LDAsMCwwLS4zMTgsMS4yNCwyLjQyNCwyLjQyNCwwLDAsMSwyLjUtMi4zMTZBMi41MDcsMi41MDcsMCwwLDEsMTAuMywxNi4xOTUsMi41MDYsMi41MDYsMCwwLDEsNy43NzksMTguOTJabTE5LjY0Ny0xLjA3NEgzMHYuOTM3SDI2LjM0NFYxMy42MDloMS4wODJ2NC4yNFpNMjMuNDU0LDE2aDIuMTYzdjIuNzkxSDI0LjlsLS4xMDgtLjY0OWExLjksMS45LDAsMCwxLTEuNjE0Ljc4NiwyLjQxNCwyLjQxNCwwLDAsMS0yLjM3OS0yLjcxMSwyLjQ4NSwyLjQ4NSwwLDAsMSwyLjUzMS0yLjc0QTIuMDUzLDIuMDUzLDAsMCwxLDI1LjYsMTUuMjE3SDI0LjUxNWExLjEzNiwxLjEzNiwwLDAsMC0xLjEzMi0uODUxYy0uNzcxLDAtMS40ODUuNTM0LTEuNDg1LDEuODYsMCwxLjQxMy43NzEsMS43ODEsMS41MDYsMS43ODFhMS4yOCwxLjI4LDAsMCwwLDEuMjU0LTEuMTM5aC0xLjJWMTZaTTcuNzgxLDE0LjFhMS44NiwxLjg2LDAsMCwwLTEuOCwyLjEwNSwxLjg2LDEuODYsMCwwLDAsMS44LDIuMTA1LDEuODYsMS44NiwwLDAsMCwxLjgtMi4xMDVBMS44NiwxLjg2LDAsMCwwLDcuNzgxLDE0LjFabTIuOTExLDEuMzgzaC41MjV2LjQ2OGguMDEzYTEuMTIsMS4xMiwwLDAsMSwuOTg3LS41NjMsMS41NjUsMS41NjUsMCwwLDEsMS41MDYsMS42NzcsMS42NzUsMS42NzUsMCwwLDEtMS41ODMsMS44MjQsMSwxLDAsMCwxLS44OC0uNDQzaC0uMDEzVjIwLjFoLS41NTdWMTUuNDc5Wk0xMi4xLDE4LjRjLjYwOCwwLDEuMDE5LS41MjcsMS4wMTktMS4yNTQsMC0uNDI0LS4xNzEtMS4yNjQtMS4wMzItMS4yNjQtLjgsMC0uODkzLjg2Ny0uODkzLDEuNDA2LDAsLjg4LjU1MSwxLjExNC45MDUsMS4xMTRabTUtLjY1MmExLjM3OCwxLjM3OCwwLDAsMS0xLjQ4OCwxLjEzMywxLjQ4NywxLjQ4NywwLDAsMS0xLjQ4Mi0xLjY1OGMwLTEuMDI1LjQ5NC0xLjg0MiwxLjU4OC0xLjg0Mi45NTYsMCwxLjQyNC43NiwxLjQyNCwxLjkzMUgxNC43MjFjMCwuNjkuMzIzLDEuMDg5Ljk2MiwxLjA4OWEuODQxLjg0MSwwLDAsMCwuODU0LS42NTJIMTcuMVptLS41OS0uODhjLS4wMzItLjUxMy0uMjQ3LS45ODctLjkyNC0uOTg3YS45NzIuOTcyLDAsMCwwLS45MTguOTg3aDEuODQyWm0zLjcxMywxLjkxN2gtLjU1N1YxNi43NTFjMC0uNTc2LS4xNjUtLjg2Ny0uNzA5LS44NjctLjMxNywwLS44NzQuMi0uODc0LDEuMXYxLjhoLS41NTdWMTUuNDc5aC41MjV2LjQ2OGguMDEzYTEuMiwxLjIsMCwwLDEsMS0uNTYzLDEuMDQ2LDEuMDQ2LDAsMCwxLDEuMTU4LDEuMTUydjIuMjUzXCIgc3R5bGU9XCJmaWxsOiM0Mzg2YjVcIi8+YCxcbiAgXCJHbyBtb2R1bGVcIjogYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjU0LjUgMjI1XCI+PHRpdGxlPmZpbGVfdHlwZV9nb19wYWNrYWdlPC90aXRsZT48cGF0aCBkPVwiTTYxLjk0OSwxMy4wNjhjMTYuMDYtLjE0NywzMi4xNDMsMCw0OC4yMTEtLjA2Mi0zLjgxLDE2LjQwOC03LjQ2NiwzMi44NjItMTEuMjYxLDQ5LjI3N0gyNS41NDhjLTIuMzE5LDAtNC42MzcuMDc3LTYuOTU2LS4wOTNDMzMsNDUuNzc1LDQ3LjU2NiwyOS41LDYxLjk0OSwxMy4wNjhaXCIgc3R5bGU9XCJmaWxsOiNmMmU2YzlcIi8+PHBhdGggZD1cIk0xNDMuNTA5LDEzLjAxNGg0OC4wNzJjMTQuNDM3LDE2LjQzMSwyOS4wMTMsMzIuNzIzLDQzLjQxMSw0OS4xNzctOS4yNzQuMTkzLTE4LjU0OSwwLTI3LjgyMy4wODVIMTU0LjY1NEMxNTEuMDA2LDQ1LjgzNywxNDcuMTExLDI5LjQ2LDE0My41MDksMTMuMDE0WlwiIHN0eWxlPVwiZmlsbDojZjJlNmM5XCIvPjxwYXRoIGQ9XCJNMTEwLjE2LDEzLjAxNGgzMy4zNDljMy42LDE2LjQ0Niw3LjQ4OSwzMi44MjMsMTEuMTYsNDkuMjU0SDk4LjlDMTAyLjY5NCw0NS44NjgsMTA2LjM1LDI5LjQyMiwxMTAuMTYsMTMuMDE0WlwiIHN0eWxlPVwiZmlsbDojZWZjNzVlXCIvPjxwYXRoIGQ9XCJNMTguNTkyLDYyLjE4M2MyLjMxOS4xNyw0LjYzNy4wODUsNi45NTYuMDkzSDk4LjlxMCwyNi4wMjYuMDU0LDUyLjA1MmExOC44NTcsMTguODU3LDAsMCwwLDEuOTc5LjEzOWg1Mi4xMTRhMTQuNjkzLDE0LjY5MywwLDAsMCwxLjU0Ni0uMTA4Yy4xNDctMTcuMzY2LDAtMzQuNzMyLjA3LTUyLjFoNTIuNTE2YzkuMjc0LS4wNDYsMTguNTQ5LjEwOCwyNy44MjMtLjA4NVYyMTIuNjJIMTguNlExOC41OTIsMTM3LjQwNSwxOC41OTIsNjIuMTgzWlwiIHN0eWxlPVwiZmlsbDojZTdiZjU1XCIvPjxwYXRoIGQ9XCJNOTguOSw2Mi4yOTFoNTUuNzY5Yy0uMDYyLDE3LjM2Ni4wODUsMzQuNzMyLS4wNyw1Mi4xLS41MTguMDU0LTEuMDM2LjA5My0xLjU0Ni4xMDhIMTAwLjk0YTE4Ljg1NywxOC44NTcsMCwwLDEtMS45NzEtLjEzMUM5OC44NjEsOTYuOTkzLDk4Ljk2OSw3OS42MzQsOTguOSw2Mi4yOTFaXCIgc3R5bGU9XCJmaWxsOiNkYmI1NTFcIi8+PHJlY3QgeD1cIjM0LjM4OVwiIHk9XCIxNjMuNjgyXCIgd2lkdGg9XCI3Mi40MTdcIiBoZWlnaHQ9XCIyNy44ODVcIiBzdHlsZT1cImZpbGw6I2YyZjJmMlwiLz48cGF0aCBkPVwiTTYxLjQyMiwxMzcuMDg1Yy0uMzg4LDAtLjQ4Ny0uMTk0LS4yOTEtLjQ4N2wyLjA0MS0yLjYyNWExLjM5MywxLjM5MywwLDAsMSwxLjA2OS0uNDg3aDM0LjdjLjM4OCwwLC40ODcuMjkxLjI5MS41ODRMOTcuNTgyLDEzNi42YTEuNDgxLDEuNDgxLDAsMCwxLS45NzIuNTg0WlwiIHN0eWxlPVwiZmlsbDojY2UzMjYyXCIvPjxwYXRoIGQ9XCJNNDYuNzQsMTQ2LjAyOGMtLjM4OCwwLS40ODctLjE5NC0uMjkxLS40ODdsMi4wNDEtMi42MjVhMS4zOTMsMS4zOTMsMCwwLDEsMS4wNjktLjQ4N0g5My44OWEuNDQ3LjQ0NywwLDAsMSwuNDg3LjU4NGwtLjc3OCwyLjMzM2EuODUuODUsMCwwLDEtLjg3NS41ODRaXCIgc3R5bGU9XCJmaWxsOiNjZTMyNjJcIi8+PHBhdGggZD1cIk03MC4yNjQsMTU0Ljk3MWMtLjM4OCwwLS40ODctLjI5MS0uMjkxLS41ODRsMS4zNTctMi40M2ExLjI4OSwxLjI4OSwwLDAsMSwuOTcyLS41ODRIOTEuNzQ3Yy4zODgsMCwuNTg0LjI5MS41ODQuNjgxbC0uMTk0LDIuMzMzYS43MzEuNzMxLDAsMCwxLS42ODEuNjgxWlwiIHN0eWxlPVwiZmlsbDojY2UzMjYyXCIvPjxwYXRoIGQ9XCJNMTcxLjE2MywxMzUuMzM1Yy02LjEyNCwxLjU1Ni0xMC4zLDIuNzIyLTE2LjMzLDQuMjgtMS40NjIuMzg4LTEuNTU2LjQ4Ny0yLjgxOS0uOTcyYTEzLjAxMSwxMy4wMTEsMCwwLDAtNC41NjktMy42OTRjLTYuMTI0LTMuMDEzLTEyLjA1NC0yLjEzOC0xNy41OTQsMS40NjJhMjAuNjcxLDIwLjY3MSwwLDAsMC05LjkxOCwxOC40NjksMTUuMjQyLDE1LjI0MiwwLDAsMCwxMy4xMjMsMTUuMjYxYzYuNjEuODc1LDEyLjE1MS0xLjQ2MiwxNi41MjUtNi40MTUuODc1LTEuMDY5LDEuNjUzLTIuMjM2LDIuNjI1LTMuNkgxMzMuNDQ2Yy0yLjA0MSwwLTIuNTI4LTEuMjYzLTEuODQ3LTIuOTE2LDEuMjYzLTMuMDEzLDMuNi04LjA2OCw0Ljk1OC0xMC42YTIuNjI1LDIuNjI1LDAsMCwxLDIuNDMtMS41NTZoMzUuMzg0Yy0uMTk0LDIuNjI1LS4xOTQsNS4yNDktLjU4NCw3Ljg3NGE0MS40NTYsNDEuNDU2LDAsMCwxLTcuOTY3LDE5LjA0MmMtNi45OTUsOS4yMzQtMTYuMTM2LDE0Ljk3LTI3LjcsMTYuNTI1LTkuNTI2LDEuMjYzLTE4LjM3NC0uNTg0LTI2LjE0OC02LjQxNUEzMC41MzMsMzAuNTMzLDAsMCwxLDk5LjYyNSwxNjAuNTFjLTEuMjYzLTEwLjYsMS44NDctMjAuMTIyLDguMjYyLTI4LjQ4MUE0My4xMzcsNDMuMTM3LDAsMCwxLDEzNS4xLDExNS4yMTJjOS4xMzctMS42NTMsMTcuODg2LS41ODQsMjUuNzYsNC43NjNBMzAuNDcxLDMwLjQ3MSwwLDAsMSwxNzIuMTQsMTMzLjY4QzE3Mi43MTksMTM0LjU1OCwxNzIuMzMsMTM1LjA0NCwxNzEuMTYzLDEzNS4zMzVaXCIgc3R5bGU9XCJmaWxsOiNjZTMyNjJcIi8+PHBhdGggZD1cIk0yMDMuMzM4LDE4OS4wOWMtOC44NDYtLjE5NC0xNi45MTMtMi43MjItMjMuNzE5LTguNTU0YTMwLjQ4NSwzMC40ODUsMCwwLDEtMTAuNS0xOC43NjFjLTEuNzUtMTAuOTg0LDEuMjYzLTIwLjcsNy44NzQtMjkuMzU2LDcuMS05LjMzMSwxNS42NTEtMTQuMTkyLDI3LjIxOC0xNi4yMzMsOS45MTgtMS43NSwxOS4yNDctLjc3OCwyNy43LDQuOTU4LDcuNjgsNS4yNDksMTIuNDQyLDEyLjM0NSwxMy43MDYsMjEuNjc2LDEuNjUzLDEzLjEyMy0yLjEzOCwyMy44MTYtMTEuMTc5LDMyLjk1M2E0NC41NDIsNDQuNTQyLDAsMCwxLTIzLjMyOSwxMi40NDJDMjA4LjQ5LDE4OC43LDIwNS44NjYsMTg4LjgsMjAzLjMzOCwxODkuMDlabTIzLjEzNS0zOS4yNzFhMjcuOTc4LDI3Ljk3OCwwLDAsMC0uMjkxLTMuMjA4LDE2LjAxMywxNi4wMTMsMCwwLDAtMTguMzc1LTEzLjIzNXEtLjczNC4xMTktMS40NTQuMzA2Yy05LjA0LDIuMDQxLTE0Ljg3Myw3Ljc3Ny0xNy4wMTEsMTYuOTEzYTE2LjAwOSwxNi4wMDksMCwwLDAsOC45NDMsMTguMzc0LDE3LjgyLDE3LjgyLDAsMCwwLDE1Ljg0NS0uNTg0YzcuNjc5LTMuOTg1LDExLjg1OS0xMC4yMDYsMTIuMzQ4LTE4LjU2NlpcIiBzdHlsZT1cImZpbGw6I2NlMzI2MlwiLz48L3N2Zz5gLFxuICBcIkdvXCI6IGA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDI1NC41IDIyNVwiPjx0aXRsZT5maWxlX3R5cGVfZ288L3RpdGxlPjxwYXRoIGQ9XCJNLTQ2LjkyNiw4OWMtLjYyMSwwLS43NzctLjMxMS0uNDY2LS43NzdsMy4yNjItNC4xOTRhMi4yMjUsMi4yMjUsMCwwLDEsMS43MDgtLjc3N0gxMy4wMjZjLjYyMSwwLC43NzcuNDY2LjQ2Ni45MzJsLTIuNjQsNC4wMzhhMi4zNjcsMi4zNjcsMCwwLDEtMS41NTMuOTMyWlwiIHN0eWxlPVwiZmlsbDojMDBhY2Q3XCIvPjxwYXRoIGQ9XCJNLTcwLjM3OSwxMDMuMjg1Yy0uNjIxLDAtLjc3Ny0uMzExLS40NjYtLjc3N2wzLjI2Mi00LjE5NGEyLjIyNSwyLjIyNSwwLDAsMSwxLjcwOC0uNzc3SDQuOTVhLjcxNC43MTQsMCwwLDEsLjc3Ny45MzJMNC40ODQsMTAyLjJhMS4zNTgsMS4zNTgsMCwwLDEtMS40LjkzMlpcIiBzdHlsZT1cImZpbGw6IzAwYWNkN1wiLz48cGF0aCBkPVwiTS0zMi43OTIsMTE3LjU3NGMtLjYyMSwwLS43NzctLjQ2Ni0uNDY2LS45MzJsMi4xNzQtMy44ODNhMi4wNiwyLjA2LDAsMCwxLDEuNTUzLS45MzJIMS41MzNjLjYyMSwwLC45MzIuNDY2LjkzMiwxLjA4N2wtLjMxMSwzLjcyOGExLjE2NywxLjE2NywwLDAsMS0xLjA4NywxLjA4N1pcIiBzdHlsZT1cImZpbGw6IzAwYWNkN1wiLz48cGF0aCBkPVwiTTEyOC40MjYsODYuMmMtOS43ODUsMi40ODUtMTYuNDY0LDQuMzQ5LTI2LjA5Myw2LjgzNC0yLjMzLjYyMS0yLjQ4NS43NzctNC41LTEuNTUzLTIuMzMtMi42NC00LjAzOC00LjM0OS03LjMtNS45LTkuNzg1LTQuODE1LTE5LjI1OS0zLjQxNy0yOC4xMTIsMi4zMy0xMC41NjEsNi44MzQtMTYsMTYuOTI5LTE1Ljg0MiwyOS41MS4xNTUsMTIuNDI1LDguNywyMi42NzYsMjAuOTY4LDI0LjM4NSwxMC41NjEsMS40LDE5LjQxNC0yLjMzLDI2LjQtMTAuMjUxLDEuNC0xLjcwOCwyLjY0LTMuNTcyLDQuMTk0LTUuNzQ3SDY4LjE2M2MtMy4yNjIsMC00LjAzOC0yLjAxOS0yLjk1MS00LjY1OSwyLjAxOS00LjgxNSw1Ljc0Ny0xMi44OTEsNy45MjEtMTYuOTI5YTQuMTk0LDQuMTk0LDAsMCwxLDMuODgzLTIuNDg1aDU2LjUzNWMtLjMxMSw0LjE5NC0uMzExLDguMzg3LS45MzIsMTIuNTgxYTY2LjIzOSw2Ni4yMzksMCwwLDEtMTIuNzM2LDMwLjQ0MkMxMDguNywxNTkuNTEsOTQuMSwxNjguNjczLDc1LjYxOCwxNzEuMTU4Yy0xNS4yMjEsMi4wMTktMjkuMzU1LS45MzItNDEuNzgtMTAuMjUxYTQ4Ljc4NSw0OC43ODUsMCwwLDEtMTkuNzI1LTM0LjQ4Yy0yLjAxOS0xNi45MjksMi45NTEtMzIuMTUsMTMuMi00NS41MDhDMzguMzQyLDY2LjQ3NSw1Mi45NDIsNTcuMzEyLDcwLjgsNTQuMDVjMTQuNi0yLjY0LDI4LjU3OC0uOTMyLDQxLjE1OSw3LjYxYTQ4LjY4Niw0OC42ODYsMCwwLDEsMTguMDE3LDIxLjlDMTMwLjkxMSw4NC45NTgsMTMwLjI4OSw4NS43MzUsMTI4LjQyNiw4Ni4yWlwiIHN0eWxlPVwiZmlsbDojMDBhY2Q3XCIvPjxwYXRoIGQ9XCJNMTc5LjgzNSwxNzIuMDljLTE0LjEzNC0uMzExLTI3LjAyNS00LjM0OS0zNy45LTEzLjY2OGE0OC43MTEsNDguNzExLDAsMCwxLTE2Ljc3NC0yOS45NzZjLTIuOC0xNy41NTEsMi4wMTktMzMuMDgyLDEyLjU4MS00Ni45MDUsMTEuMzM4LTE0LjkxLDI1LjAwNi0yMi42NzYsNDMuNDg4LTI1LjkzOCwxNS44NDItMi44LDMwLjc1My0xLjI0Myw0NC4yNjUsNy45MjEsMTIuMjcsOC4zODcsMTkuODgsMTkuNzI1LDIxLjksMzQuNjM1LDIuNjQsMjAuOTY4LTMuNDE3LDM4LjA1Mi0xNy44NjEsNTIuNjUyYTcxLjE3LDcxLjE3LDAsMCwxLTM3LjI3NiwxOS44OEMxODguMDY3LDE3MS40NjksMTgzLjg3NCwxNzEuNjI0LDE3OS44MzUsMTcyLjA5Wk0yMTYuOCwxMDkuMzQzYTQ0LjcsNDQuNywwLDAsMC0uNDY2LTUuMTI1Yy0yLjgtMTUuMzc2LTE2LjkyOS0yNC4wNzQtMzEuNjg0LTIwLjY1Ny0xNC40NDQsMy4yNjItMjMuNzYzLDEyLjQyNS0yNy4xOCwyNy4wMjVhMjUuNTc5LDI1LjU3OSwwLDAsMCwxNC4yODksMjkuMzU1YzguNTQyLDMuNzI4LDE3LjA4NSwzLjI2MiwyNS4zMTctLjkzMkMyMDkuMzQ1LDEzMi42NCwyMTYuMDI0LDEyMi43LDIxNi44LDEwOS4zNDNaXCIgc3R5bGU9XCJmaWxsOiMwMGFjZDdcIi8+PC9zdmc+YCxcbiAgXCJHcmFkbGVcIjogYDxwYXRoIGQ9XCJNMTMuNSw2Ljk2NWg3LjkyM2w0LDYuODg3SDI5Ljk4QTE0LjEsMTQuMSwwLDAsMCwxMS4wMjQsMi45MzJMMTMuNSw2Ljk2NVwiIHN0eWxlPVwiZmlsbDojMDA2NTMzXCIvPjxwYXRoIGQ9XCJNMjUuNjI4LDE4bC00LjIwOSw3LjI1MkgxMC44MDZMNS41LDE2LjEwOCw5LjczOSw4LjgsNy40LDQuOTgxQTE0LjAzLDE0LjAzLDAsMSwwLDMwLDE4SDI1LjYyOFwiIHN0eWxlPVwiZmlsbDojODJiODE2XCIvPjxwYXRoIGQ9XCJNMjEuMDYxLDE1Ljk2M2E1LjAyNiw1LjAyNiwwLDEsMS01LjAyNi01LDUuMDEzLDUuMDEzLDAsMCwxLDUuMDI2LDVcIiBzdHlsZT1cImZpbGw6IzAwNjUzMlwiLz5gLFxuICBcIkdyYXBoUUxcIjogYDxyZWN0IHg9XCItMC40M1wiIHk9XCIxMi41MzRcIiB3aWR0aD1cIjIyLjkwMVwiIGhlaWdodD1cIjEuMTg3XCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC01Ljg1OCAxNi4xMDcpIHJvdGF0ZSgtNTkuOTk5KVwiIHN0eWxlPVwiZmlsbDojZTEwMDk4XCIvPjxyZWN0IHg9XCI0LjU0NVwiIHk9XCIyMS4xNjJcIiB3aWR0aD1cIjIyLjkwMlwiIGhlaWdodD1cIjEuMTg3XCIgc3R5bGU9XCJmaWxsOiNlMTAwOThcIi8+PHJlY3QgeD1cIjEwLjQzXCIgeT1cIjE4LjAwOFwiIHdpZHRoPVwiMS4xODdcIiBoZWlnaHQ9XCIxMy4yMjdcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTE1LjgxMiAyMS44NTcpIHJvdGF0ZSgtNTkuOTk5KVwiIHN0eWxlPVwiZmlsbDojZTEwMDk4XCIvPjxyZWN0IHg9XCIyMC4zODFcIiB5PVwiMC43NzFcIiB3aWR0aD1cIjEuMTg3XCIgaGVpZ2h0PVwiMTMuMjI3XCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDQuMDkyIDIxLjg1Nikgcm90YXRlKC01OS45OTkpXCIgc3R5bGU9XCJmaWxsOiNlMTAwOThcIi8+PHJlY3QgeD1cIjQuNDEyXCIgeT1cIjYuNzg3XCIgd2lkdGg9XCIxMy4yMjdcIiBoZWlnaHQ9XCIxLjE4N1wiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMi4yMTMgNi41MDIpIHJvdGF0ZSgtMzAuMDAxKVwiIHN0eWxlPVwiZmlsbDojZTEwMDk4XCIvPjxyZWN0IHg9XCIyMC4zODlcIiB5PVwiMS42NzdcIiB3aWR0aD1cIjEuMTg3XCIgaGVpZ2h0PVwiMjIuOTAxXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0zLjc1MyAxMi4yNSkgcm90YXRlKC0zMC4wMDEpXCIgc3R5bGU9XCJmaWxsOiNlMTAwOThcIi8+PHJlY3QgeD1cIjUuNDU0XCIgeT1cIjkuMzg2XCIgd2lkdGg9XCIxLjE4N1wiIGhlaWdodD1cIjEzLjIyOFwiIHN0eWxlPVwiZmlsbDojZTEwMDk4XCIvPjxyZWN0IHg9XCIyNS4zNlwiIHk9XCI5LjM4NlwiIHdpZHRoPVwiMS4xODdcIiBoZWlnaHQ9XCIxMy4yMjhcIiBzdHlsZT1cImZpbGw6I2UxMDA5OFwiLz48cmVjdCB4PVwiMTUuMjIyXCIgeT1cIjI0LjA5N1wiIHdpZHRoPVwiMTEuNTA0XCIgaGVpZ2h0PVwiMS4wMzdcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTkuNDk4IDEzLjc4NSkgcm90YXRlKC0zMC4wMDEpXCIgc3R5bGU9XCJmaWxsOiNlMTAwOThcIi8+PHBhdGggZD1cIk0yOC4xMiwyM2EyLjUsMi41LDAsMSwxLS45MTUtMy40MTFBMi41LDIuNSwwLDAsMSwyOC4xMiwyM1wiIHN0eWxlPVwiZmlsbDojZTEwMDk4XCIvPjxwYXRoIGQ9XCJNOC4yLDExLjVhMi41LDIuNSwwLDEsMS0uOTE1LTMuNDExQTIuNSwyLjUsMCwwLDEsOC4yLDExLjVcIiBzdHlsZT1cImZpbGw6I2UxMDA5OFwiLz48cGF0aCBkPVwiTTMuODgsMjNhMi41LDIuNSwwLDEsMSwzLjQxMS45MTVBMi41LDIuNSwwLDAsMSwzLjg4LDIzXCIgc3R5bGU9XCJmaWxsOiNlMTAwOThcIi8+PHBhdGggZD1cIk0yMy44LDExLjVhMi41LDIuNSwwLDEsMSwzLjQxMS45MTVBMi41LDIuNSwwLDAsMSwyMy44LDExLjVcIiBzdHlsZT1cImZpbGw6I2UxMDA5OFwiLz48cGF0aCBkPVwiTTE2LDMwYTIuNSwyLjUsMCwxLDEsMi41LTIuNUEyLjQ5MywyLjQ5MywwLDAsMSwxNiwzMFwiIHN0eWxlPVwiZmlsbDojZTEwMDk4XCIvPjxwYXRoIGQ9XCJNMTYsNi45OTFhMi41LDIuNSwwLDEsMSwyLjUtMi41LDIuNDkzLDIuNDkzLDAsMCwxLTIuNSwyLjVcIiBzdHlsZT1cImZpbGw6I2UxMDA5OFwiLz5gLFxuICBcIkdyb292eVwiOiBgPHBhdGggZD1cIk03LjQ1MywyOS44NjVjMC0uMDc0LjQ5NC0xLjcxNywxLjEtMy42NTFBMjEuODA4LDIxLjgwOCwwLDAsMCw5LjUsMjIuNmMtLjA3OS0uMDU2LS4zNS4wNDUtLjYuMjI0LS43NjQuNTM4LS45Mi40LTEuNDkxLTEuMzU2LS42MTctMS45LS42MzktMi4wOTEtLjMxNy0yLjgxLjIxLS40Ny4yLS41NzktLjE0Ny0xLjI3N2EzLjc1LDMuNzUsMCwwLDEtLjM3Ny0xLjA0NGMwLS4yNi0xLjQxMy0xLjQzOC0zLjY0Ny0zLjA0QTMuODQ1LDMuODQ1LDAsMCwxLDIsMTIuNWExMC40NzcsMTAuNDc3LDAsMCwxLDIuMzc4LS4wMzlsMi4zNzguMS4yMzItLjc0MWMuOTgxLTMuMTMsMi40NjMtNS45NTcsMy4xMjItNS45NTcuMTM3LDAsLjQxNi4yNjUuNjE5LjU4OC4zMzEuNTI3LjM3Ni44NTMuNDM1LDMuMTI2YTIzLjAxMywyMy4wMTMsMCwwLDAsLjE2NSwyLjczOWMuMDU1LjExLjIyOC0uMDM1LjM4NS0uMzIyLjItLjM2Ny40MTItLjQ2Ny43MS0uMzM1cy40ODUuMDQzLjY0Ni0uMzQ1Yy4yNDItLjU4MiwxLjQ1NS00LjUxMywxLjQ1NS00LjcxNywwLS4wNjkuMjQtLjkuNTM0LTEuODQ2cy42MzEtMi4wMzYuNzUxLTIuNDI0Yy4yMTMtLjY4OC4yNDYtLjYwNywxLjUyNCwzLjcyNiwxLjMyLDQuNDc0LDIuMDMsNi4xMjQsMi4zODUsNS41NDQuMjQ4LS40LDEuNTUtLjQyOCwxLjkxNC0uMDM0LjIwNy4yMjQuMzM4LjIyMS40NTMtLjAxLjIzNy0uNDguOC0uNC45NTMuMTQuMTE3LjQyMy4xNDcuNDIzLjMyLDBhLjgxMi44MTIsMCwwLDEsLjY5Mi0uNDY2Yy4zODksMCwuNTM4LjE2NC42NjYuNzM1bC4xNjUuNzM1LDIuNTU4LS4xODNBMTEuNTIxLDExLjUyMSwwLDAsMSwzMCwxMi40NjhhMjAuNzksMjAuNzksMCwwLDEtMi4zMjEsMS44ODljLTEuMjc3Ljk2LTIuMzQyLDEuNzc1LTIuMzY4LDEuODFhMTcuNjA3LDE3LjYwNywwLDAsMCwuMTI4LDEuODY3LDExLjA3NSwxMS4wNzUsMCwwLDEtLjU0NCw1LjcxMyw0LjMwOCw0LjMwOCwwLDAsMS0xLjAyMSwxLjQ5Yy0uMjc4LjE4Ni0uNTA2LjQtLjUwNi40ODZzLjMsMS4wNzcuNjYsMi4yMTJBOS42ODIsOS42ODIsMCwwLDEsMjQuNTY4LDMwYy0uMTA5LDAtMi43NTctMi4wNy02Ljg3Ni01LjM3M2ExMS4xNDMsMTEuMTQzLDAsMCwwLTEuNjQzLTEuMTg0Yy0uMTcxLDAtMS42NDksMS4xMzMtNS45ODQsNC41ODgtMi41MTQsMi0yLjYxMiwyLjA3My0yLjYxMiwxLjgzNVptNS4xNTgtNC43MjdjMS4zMzctMS4wNTEsMi42NjQtMi4wNzgsMi45NDctMi4yODIuNDg4LS4zNTEuNjUxLS4yNjMsMy4wMjEsMS42MzEsMS4zNzgsMS4xLDIuNzM3LDIuMTc0LDMuMDIxLDIuMzg0cy44NjguNjY2LDEuMywxLjAxM2MuNDkxLjQuNzQyLjQ5Mi42NzQuMjU2LS43Ny0yLjYzNC0uNzkzLTIuNjc4LTEuMzI3LTIuNDc2LS42NDQuMjQ0LTEuMDQzLS4wMDYtMS4yNDktLjc4M2ExLjczOSwxLjczOSwwLDAsMSwuMjQtMS40NTEsMi4zNzcsMi4zNzcsMCwwLDAtLjIyMS0yLjczMSw0LjI4OSw0LjI4OSwwLDAsMS0uNjg2LTEuNTNsLS4yNDEtMS4wMjMtLjUxNy43MWMtLjYzNi44NzMtMS40MTEuOTE4LTIuMDU5LjExOWwtLjQ3Ny0uNTg4LS41NTQuNzYyYy0uNTU1Ljc2My0xLjE5NC44NjItMS44NDQuMjg0LS4xNzktLjE1OS0uMjU4LS4xLS4yNTguMmExLjI0LDEuMjQsMCwwLDEtLjM3NS43NzdjLS42MTkuNTctMS4yMjMuNDE5LTEuNjMzLS40MDlMMTIsMTkuMjQ5bC0uMy43NzVhNy4wMzIsNy4wMzIsMCwwLDEtLjg1MywxLjQ3OSwxMy44OTEsMTMuODkxLDAsMCwwLTEuNDU1LDMuNjYzYy0uNSwxLjYyNy0uOSwzLjA0Mi0uOSwzLjE0M3MuMzgxLS4xNDEuODQ3LS41MzgsMS45NDItMS41ODIsMy4yNzktMi42MzNabTExLjM0My0xLjEzMWMxLjAxNS0xLjE1NCwxLjI1LTMuMjg4LjgtNy4yNzEtLjM3NS0zLjMyOS0uNTYyLTQuNDE5LS43ODQtNC41NjUtLjE1NC0uMS0uMTc3LjAxLS4wOTEuNDI2LjU2MiwyLjcuNTkzLDQuMDUzLjEsNC40MzQtLjMzNy4yNjItLjY5NS0uNzE5LS45NzYtMi42NzUtLjIxOC0xLjUxNS0uNDQ1LTIuMi0uNjE3LTEuODVhMy4zNTksMy4zNTksMCwwLDAsLjE2LDEuMDcsMjYuNzE4LDI2LjcxOCwwLDAsMSwuMzk0LDMuMzgxLDIxLjc1NywyMS43NTcsMCwwLDAsLjM3NSwzLjE1MWMuMzA5Ljk4NS44Ljc0NywxLjExOC0uNTRzLjM1LS40MjUuMDQ0LDEuMDU1Yy0uMzE3LDEuNTM2LTEuMjYsMi0yLjM1MiwxLjE1LS4xNzUtLjEzNi0uMjM0LDAtLjIzNC41NTVhNC45ODgsNC45ODgsMCwwLDEtLjMsMS41bC0uMy43NjUuNDA4LjEzOUEyLjI0NywyLjI0NywwLDAsMCwyMy45NTQsMjQuMDA3Wk05LjM0NiwyMS40NjhjMi4xMTgtMS4yMzIsMi41LTIuNjY4LDEuNzkzLTYuODA1YTIxLjk0MSwyMS45NDEsMCwwLDEtLjMtMi4zYzAtMS4wMjktLjI1Ni0uNTU0LS40NDguODMyLS4yNTQsMS44MzItMS4wMTYsMy4zODktMS42NTcsMy4zODMtLjU1Ny0uMDA1LS43MzgtLjIxLS45NjgtMS4wOTQtLjQxMy0xLjU4NS4wMzctNC4wMTgsMS4xODQtNi40MDYuODQtMS43NDksMS4zLTEuOTA4LDEuMy0uNDQ4LDAsMi4yNzYtLjc3Niw1LjYyNS0xLjE4NCw1LjExNWEzLjgxNCwzLjgxNCwwLDAsMSwuMDY1LTIuMmMuMi0uNzIuMTU3LTEuODE4LS4wNjYtMS44MTgtLjI1OSwwLS43NzMsMS45MS0uODQxLDMuMTI3LS4wNiwxLjA3Ni0uMDIyLDEuMzM4LjIzMSwxLjYxMi44ODguOTYyLDIuMDUyLTEuOTczLDIuMTExLTUuMzIzLjAzMS0xLjc1OS0uMTM4LTIuMjU0LS42NzQtMS45ODItLjc4MS40LTIuODgzLDUuODgzLTIuODgzLDcuNTIzLDAsMS4yODMuMzE5LDIuMTg2Ljg4LDIuNDkxLjk1NC41MTksMS44NzYtLjQsMi41MjktMi41MzFsLjI3NS0uODk0VjE0Ljk3YzAsMS43NTktLjU2NywyLjY4Ni0yLjM1NywzLjg1MmE4Ljg5Myw4Ljg5MywwLDAsMC0uODUyLjYsOS43NTgsOS43NTgsMCwwLDAsLjg5MiwyLjUzNCw1LjI4Myw1LjI4MywwLDAsMCwuOTY5LS40ODRabTEyLjc2NC0yLjE4NGMuMjEzLS40NzUuMjUtLjk5Mi4yLTIuODE3LS4wNS0xLjk4Ni0uMS0yLjMzNy0uNDg2LTMuMTQ0LS42OTEtMS40NTgtMS41NDQtMS4wODYtMS4wNDUuNDU1LjI2NS44Mi41ODkuNjguNDc1LS4yMDUtLjA5MS0uNy4wNzktLjcyMy4zNzUtLjA0MS41NTYsMS4yODEuNDE2LDMuMDU1LS4yNDIsMy4wNTUtLjQ1LDAtLjU5LS4zOS0uODgzLTIuNDU5YTYuNzUyLDYuNzUyLDAsMCwwLS4zNjItMS43MTRjLS4yMTcsMC0uMzE0LjM4OC0uMTc5LjcxOGEyOC4yMywyOC4yMywwLDAsMSwuNDUyLDIuODU5Yy40NDEsMy41MDcsMS4wNTcsNC43MDcsMS42OSwzLjI5M1ptLTguMzguMDU2YTMuMzg1LDMuMzg1LDAsMCwwLC4wOTUtMS4zM2MtLjA2LTEuMDA4LS4wOTQtMS4wODEtLjM2NC0uNzktLjM4Ny40MTktLjgtLjM3NS0uOTQ0LTEuOC0uMTA3LTEuMDgyLS4xNC0xLjA2MS42NC0uNDE1LjEuMDgxLjM0Ni0uMTk0LjU1My0uNjExLjM3Ny0uNzYzLjUtMS42OC4yMjgtMS42OC0uMDgxLDAtLjE0Ny4xMzQtLjE0Ny4zLDAsLjQyOS0uNC4zNjgtLjQ5NC0uMDc1LS4wNTMtLjI1OC0uMTY2LS4xNjctLjM2Ny4zLS4xNi4zNjktLjM1Ni42NzEtLjQzNC42NzFzLS4xODUtLjMtLjIzNy0uNjcxYy0uMDktLjY0Ni0uMS0uNjUtLjMtLjExM2EuOTUxLjk1MSwwLDAsMC0uMDEuOTY0LDE4LjgxOCwxOC44MTgsMCwwLDEsLjUyMSwzLjc5MWMwLDEuMTc0LjgsMi4xLDEuMjY3LDEuNDYzWm0yLjY4OC0xLjU1NmE3LjA1NSw3LjA1NSwwLDAsMCwuNDE2LTQuMjU5Yy0uMjM2LTEuMTQxLS42NDUtMS41NjgtMS4yMjItMS4yNzUtLjQyOS4yMTgtMS4wODIsMi43NDYtMS4wODQsNC4yLDAsMi4yNjIsMS4wNiwzLjAxNSwxLjg5LDEuMzM3Wm0tMS4wMDctMS43OTJhMy43NywzLjc3LDAsMCwxLS4yOS0xLjQxNmMwLS43NDUuMDIyLS43NzIuMi0uMy4yMi41ODYuNjExLjY4OC43NjEuMmExLjAzNSwxLjAzNSwwLDAsMC0uMDY1LS42NTZjLS4yMzItLjQ2OS0uMi0xLjEwNy4wNDktMS4xMDcuMjgsMCwuNjcyLDEuMTU0LjY3MiwxLjk4MiwwLC42MDktLjYxMywxLjg5My0uOSwxLjg5My0uMDcsMC0uMjYtLjI2OC0uNDIyLS42Wk0xOS4zNDgsMTcuN2E2LjQ0Nyw2LjQ0NywwLDAsMC0uMTQxLTQuOTE4Yy0uMzU4LS43NzMtMS4xNTMtLjkwNi0xLjQ3OS0uMjQ4YTExLjYwNywxMS42MDcsMCwwLDAtLjQ4OSwzLjg5NUMxNy40NzcsMTguMzQ4LDE4LjcxNiwxOS4xLDE5LjM0OCwxNy43Wk0xOC4xLDE1LjUyN2EyLjQ5MiwyLjQ5MiwwLDAsMS0uMzE4LTEuNTY1Yy4wMDgtLjkwOS4wMzEtLjk5MS4xMzUtLjQ3Mi4xNTMuNzY0LjQ3MywxLjA1Mi43NTMuNjc5LjE3NC0uMjMxLjE2Ni0uMzQxLS4wNS0uNjc2LS4yODgtLjQ0Ny0uMzQ0LTEuMDc5LS4xLTEuMDc5YTUuMDM3LDUuMDM3LDAsMCwxLDEuMDE3LDIuMjVjMCwuNDgtLjU2NCwxLjMyNy0uODg0LDEuMzI3QzE4LjUyNywxNS45OTEsMTguMjc2LDE1Ljc4MiwxOC4xLDE1LjUyN1ptOC42NjItMS4zMTgsMS41NDctMS4xNzUtMS42NTgtLjAxMmMtMS40ODQtLjAxMS0xLjY1OC4wNDMtMS42NTYuNTFhMTEuNTMyLDExLjUzMiwwLDAsMCwuMiwxLjg1N2MuMDExLDAsLjcxNi0uNTM0LDEuNTY3LTEuMThaTTYuNTM1LDE0bC4xNTgtLjk0OUw1LjMsMTIuOTU2Yy0uNzY0LS4wNTItMS4zODktLjAxMi0xLjM4OS4wODhhMTQuMSwxNC4xLDAsMCwwLDIuNDQ3LDEuOTM0QzYuMzcxLDE0Ljk2MSw2LjQ0OCwxNC41MjEsNi41MzUsMTRabTkuNTI2LTIuOTQxYTEuNjI0LDEuNjI0LDAsMCwxLC44MTkuNmMuMTkyLjM0OS4yNzYuMzI2LjU3My0uMTYzLjE5MS0uMzE1LjQ0LS41NzIuNTUzLS41NzJzLjItLjA2Ni4yLS4xNDZjMC0uMjc4LTIuMTIyLTcuMzA2LTIuMi03LjNzLTIuMjcsNy4zODYtMi4zMzcsNy45MjVjLS4wMjguMjI2LjA2LjMwOS4yMzEuMjE5LjE1Mi0uMDgxLjM2My4wNjMuNDY4LjMxOS4xNy40MTUuMjQuMzgyLjY0NC0uMzA2LjM4NC0uNjU0LjU0NC0uNzQyLDEuMDQ4LS41NzlaXCIgc3R5bGU9XCJmaWxsOiMzMzNcIi8+PHBhdGggZD1cIk0xNC41LDEyLjE3NWEuODUuODUsMCwwLDEtLjExNS0uMi43MzcuNzM3LDAsMCwwLS4xOTQtLjI5LjI4MS4yODEsMCwwLDAtLjMtLjA2MWMtLjA4Ny4wMzUtLjExMS4wMzktLjE1LjAyNC0uMDY1LS4wMjYtLjA4OS0uMTA2LS4wNy0uMjQyLjAyMy0uMTY5LjItLjgyNS41NDgtMi4wNTQuNzExLTIuNSwxLjY2Ni01LjY0NiwxLjc3Mi01LjgzOS4wMTItLjAyMS4wMTItLjAyMS4wMjQsMCwuMDYzLjExNC40MzIsMS4yNjYuOTM3LDIuOTIyLjY4MiwyLjI0LDEuMjUsNC4yMSwxLjI1LDQuMzM5LDAsLjA3OS0uMDYuMTI3LS4xODYuMTQ3LS4xNTcuMDI2LS4zMzkuMjEyLS41ODcuNmExLjY3NCwxLjY3NCwwLDAsMS0uMjI2LjMxYy0uMDQ4LjA0Ni0uMDUyLjA0OC0uMS4wNDhzLS4wNTYsMC0uMS0uMDQzYS45NTguOTU4LDAsMCwxLS4xLS4xNDQsMS4yNjgsMS4yNjgsMCwwLDAtLjQxNC0uNDIyLDEuNTI1LDEuNTI1LDAsMCwwLS43MzgtLjI4MS40MzQuNDM0LDAsMCwwLS40LjE1NiwyLjcxOCwyLjcxOCwwLDAsMC0uNDE2LjZjLS4yNTcuNDI1LS4zNDguNTEzLS40NDEuNDI2WlwiIHN0eWxlPVwiZmlsbDojNjM5OGFhXCIvPjxwYXRoIGQ9XCJNNi4yNTIsMTQuOTI4YTE5LjA1NSwxOS4wNTUsMCwwLDEtMi4zLTEuODM4Yy0uMDMxLS4wMzgtLjAzNC0uMDQ0LS4wMjUtLjA1N2EyLjcsMi43LDAsMCwxLDEuMTQtLjA4NWMuMjMuMDEyLDEuNjE5LjEsMS42MjEuMTA4cy0uMywxLjc3OS0uMzIxLDEuODgxQzYuMzU3LDE0Ljk4MSw2LjMzNywxNC45NzksNi4yNTIsMTQuOTI4WlwiIHN0eWxlPVwiZmlsbDojNjM5OGFhXCIvPjxwYXRoIGQ9XCJNMjUuMTc3LDE1LjM1QTE0LjIzOSwxNC4yMzksMCwwLDEsMjUsMTMuNTZhLjU1My41NTMsMCwwLDEsLjA0NC0uMjljLjA4MS0uMTUxLjI0NS0uMjA1LjctLjIzLjIyOC0uMDEzLDEuMjgxLS4wMTUsMi4wMjUsMGwuNTIxLjAwOEwyNy4wMjksMTRjLTEuMTQ0Ljg2Ny0xLjgxLDEuMzY5LTEuODM0LDEuMzgyLS4wMDYsMC0uMDEyLS4wMDYtLjAxOC0uMDI3aDBaXCIgc3R5bGU9XCJmaWxsOiM2Mzk4YWFcIi8+PHBhdGggZD1cIk04LjUwNiwyOC4yODFjMC0uMDcxLjE0OS0uNi41MjctMS44NzguOTA1LTMuMDU3LDEuMzE5LTQuMTY1LDEuODI3LTQuODkyYTcuNjY0LDcuNjY0LDAsMCwwLC45NjktMS43OTJMMTIsMTkuMjkybC4yMjUuNDQ4Yy4zOTQuNzg0LjYzMiwxLjAxMSwxLjA2MiwxLjAxNmExLjIzOSwxLjIzOSwwLDAsMCwxLjEtMS4xMzdjMC0uMTI0LjA0NC0uMjUxLjA4Ni0uMjUxYTEuMTE5LDEuMTE5LDAsMCwxLC4yMjYuMTQsMS4yNzEsMS4yNzEsMCwwLDAsLjY2Ni4zLjg3OS44NzksMCwwLDAsLjYwOS0uMTQ4LDIuNDcsMi40NywwLDAsMCwuNzExLS43NjRjLjE4Ny0uMjUyLjM0Ny0uNDU5LjM1NC0uNDU5cy4xNDMuMTU5LjMuMzUyYTUuMDkxLDUuMDkxLDAsMCwwLC40MjIuNDY3LDEuMDQ5LDEuMDQ5LDAsMCwwLDEuNTQ5LS4wOCw2LjExMSw2LjExMSwwLDAsMCwuNDY3LS41NzJjLjE2OC0uMjI4LjMwNy0uNDEuMzEtLjRzLjA2Ni4yNjkuMTQxLjU4NC4xNjkuNjcuMjA5Ljc4OWEzLjgyNiwzLjgyNiwwLDAsMCwuNjQyLDEuMjM0LDIuMTcsMi4xNywwLDAsMSwuNDY2LDEuMjQ2LDMuMDUxLDMuMDUxLDAsMCwxLS4zNTIsMS40NDcsMi4wNywyLjA3LDAsMCwwLS4yNjcuOTM0LDIuMDE3LDIuMDE3LDAsMCwwLC4yMTMuODUxLjc3My43NzMsMCwwLDAsMS4wNjkuNDEzLDEuMzUxLDEuMzUxLDAsMCwxLC4zMTYtLjA2OGMuMiwwLC4zMTUuMTkzLjU0Mi44ODEuMTU3LjQ3NC41LDEuNjM3LjUsMS42OTUsMCwuMDMtLjAxNi4wNTEtLjAzOS4wNTFhMS40ODYsMS40ODYsMCwwLDEtLjQwNy0uMjI0Yy0uMi0uMTQ0LTIuNjEyLTIuMDI5LTMuNDA4LTIuNjYzLTIuMTI4LTEuNjkzLTIuODI4LTIuMjMzLTMuMTcxLTIuNDQ2LS4zNy0uMjMtLjYyMi0uMjg1LS44MjctLjE3Ny0uMjU0LjEzMy0zLjcyNiwyLjg0Ny01Ljc1MSw0LjVBMTAuODQ2LDEwLjg0NiwwLDAsMSw4LjY1LDI4LjI1MWMtLjE0OS4wODMtLjE0My4wODEtLjE0My4wM1pcIiBzdHlsZT1cImZpbGw6IzYzOThhYVwiLz5gLFxuICBcIkhhbWxcIjogYDxwYXRoIGQ9XCJNMTUuMzExLDE2LjA0MywxMy40LDI5LjcyNmE2LjMyMiw2LjMyMiwwLDAsMS01Ljk1Ni0xLjI1bDMuMS0xMy4yNjZMNC42OSwzLjM0YTguMDMxLDguMDMxLDAsMCwxLDMuNzktLjY0Nmw1LjE0NCw5LjcsOC45MTQtNy41ODFzMywxLjA0MSwzLjI3LDIuMDQxbC0xMC41LDkuMTg0WlwiIHN0eWxlPVwiZmlsbDojZWNkZmE3XCIvPjxwYXRoIGQ9XCJNMjcuMDE2LDE3LjQxMWE0LjI0NCw0LjI0NCwwLDAsMC0uNTQxLS44MTIsNS43LDUuNywwLDAsMC0xLjQ1OC0xLjE4Nyw3LjMzMSw3LjMzMSwwLDAsMC0xLjY4Ny0uNzkxbC0uMjI5LS4wNjItLjE4Ny0uMDYyYy0uMTI1LS4wNDItLjIyOS0uMS0uMzMzLS4xNDZhMS4yODIsMS4yODIsMCwwLDEtLjQ1OC0uNDE3QTEuNzU0LDEuNzU0LDAsMCwxLDIyLDEyLjY0MmEyLjUxOCwyLjUxOCwwLDAsMSwuMS0uMzc1Yy4wNDItLjEyNS4wODMtLjI1LjEyNS0uNGEyLjY5MSwyLjY5MSwwLDAsMCwuMDYyLS42bC4xLS4wODMsMS4yNS0xLjA0MWMuMjI5LS4xODcuNDU4LS40LjY4Ny0uNTgzYTIuMiwyLjIsMCwwLDEsLjIyOS4xNDZzLjY0Ni4wNjIsMS0uOTE2bC0uMTg3LS4xMjUuMTI1LS4xLjMxMi0uMjcxYS42MTMuNjEzLDAsMCwwLC4yMjktLjM3NS41MjkuNTI5LDAsMCwwLS40MTcuMTI1bC0uMzMzLjI1LS4yMjkuMTY3TDIyLjE4NCw2LjQ3OGMuMTQ2LS4xMjUuMjcxLS4yMjkuNDE3LS4zNTRsLjYtLjU0MS4wNjItLjA2MmMuMDYyLjA0Mi4xLjA4My4xNjcuMTI1LjE0Ni4xLjMxMi4yMDguNDU4LjI5MmwuOTE2LjVjLjI5Mi4xNjcuNi4zMzMuOTE2LjQ3OWEzLjMyMywzLjMyMywwLDAsMCwuNDc5LjIwOGMuMDgzLjAyMS4xNjcuMDYyLjI1LjA4My4wNDIsMCwuMS4wMjEuMTQ2LjAyMWguMWEuMTUxLjE1MSwwLDAsMCwuMTI1LS4wODNWNy4xMjNhLjA3Ny4wNzcsMCwwLDEsLjAyMS0uMDYyVjYuOTc3YS4xMDguMTA4LDAsMCwwLS4wNDItLjA4M2MtLjAyMS0uMDQyLS4wNjItLjA4My0uMDgzLS4xMjVhMS41OSwxLjU5LDAsMCwwLS4xODctLjE4N2MtLjEyNS0uMTI1LS4yNzEtLjIyOS0uNC0uMzMzLS4yNzEtLjIwOC0uNTYyLS40LS44NTQtLjU4M2E3LjU0NSw3LjU0NSwwLDAsMC0uOS0uNSwzLjMyMywzLjMyMywwLDAsMC0uNDc5LS4yMDhjLS4wODMtLjAyMS0uMTY3LS4wNjItLjI3MS0uMDgzLS4wNDIsMC0uMS0uMDIxLS4xNjctLjAyMWEuMzEuMzEsMCwwLDAtLjEyNS4wMjEuNTIyLjUyMiwwLDAsMC0uMTY3LjEsMS42LDEuNiwwLDAsMC0uMzc1LjIwOGwtLjYyNS4zNTRjLS4xODcuMTQ2LS40LjMxMi0uNTgzLjQ1OGwtLjIwOC0uMTQ2cy0uODc1LjA4My0uNTgzLjY0NmwuMDgzLjA4M2MtLjgzMy42ODctMS42NDUsMS40LTIuNDU3LDIuMDgzLS44MzMuNzA4LTEuNjQ1LDEuNDE2LTIuNDc4LDIuMTQ1bC0xLjIyOSwxLjA4M2ExLjg3OCwxLjg3OCwwLDAsMS0uMjA4LjE4N2MtLjA0Mi0uMTI1LS4xLS4yMjktLjE0Ni0uMzMzbC0uMjkyLS42MjUtLjU2Mi0xLjI1Yy0uMzc1LS44MzMtLjc1LTEuNjY2LTEuMTQ1LTIuNUwxMS4yMDksNC44OTVsLS4xODctLjM3NWguMjVzLjA4My0uNjg3LS40MTctLjgxMmExLjQsMS40LDAsMCwwLS4yMDguMDIxYy0uMTg3LS4zNzUtLjM1NC0uNzUtLjU0MS0xLjEyNWgwbC0uMDgzLS4zMTJBLjMzLjMzLDAsMCwwLDkuOSwyLjFhLjM1Mi4zNTIsMCwwLDAtLjEtLjA0MmMtLjA2Mi0uMDIxLS4xLS4wMjEtLjE2Ny0uMDQyQTEuMjgxLDEuMjgxLDAsMCwwLDkuMzU1LDJhNC4wNTcsNC4wNTcsMCwwLDAtLjUyMS4wNDIsOC43NjcsOC43NjcsMCwwLDAtMS4wMi4xODdjLS4zMzMuMDgzLS42NjYuMTY3LTEsLjI3MWEzLjI3MiwzLjI3MiwwLDAsMC0uNDc5LjE4N2wtLjI1LjEyNWMtLjA0Mi4wMjEtLjA4My4wNjItLjEyNS4wODNMNS45LDIuOTU4Yy0uMDIxLjAyMS0uMDIxLjA0Mi0uMDQyLjA2MnYuMDYyaDBWMy4xYS4xNjQuMTY0LDAsMCwwLC4xLjEyNWMuMDQyLjAyMS4wNjIuMDQyLjA4My4wNDJhMS4zMjcsMS4zMjcsMCwwLDEsLjE0Ni4wNDIsMS4xODgsMS4xODgsMCwwLDAsLjI3MS4wMjEsNC4zODQsNC4zODQsMCwwLDAsLjUyMS0uMDQyYy4zMzMtLjA0Mi42ODctLjA4MywxLjAyLS4xNDZsMS4wMi0uMTY3Yy4xNjctLjAyMS4zMzMtLjA2Mi41MjEtLjEuMTQ2LjI5Mi4yOTIuNi40MzcuOS0uOTU4LjA4My0yLjQ1Ny4yMDgtMy4zOTUuMzEyLS4xLS4xODctLjE4Ny0uMzU0LS4yOTItLjU0MWEuMTI3LjEyNywwLDAsMC0uMTQ2LS4wNjIuMTA4LjEwOCwwLDAsMC0uMDYyLjE0NmMuMDYyLjE2Ny4xMjUuMzEyLjE4Ny40NzlhMS4xNjcsMS4xNjcsMCwwLDAtLjUuMTI1QTEuODI4LDEuODI4LDAsMCwwLDYuNCw1LjY0NWEzLjU2NywzLjU2NywwLDAsMSwuNDU4LS4xMjVsLjQzNywxLDEuMjUsMi44MzIsMS4yNywyLjgzMmMuNDE3LjkzNy44NTQsMS44NzQsMS4yOTEsMi44MzJoMGEuMDIuMDIsMCwwLDAsLjAyMS4wMjFsLS4xODcuNjI1LS41LDEuNzQ5Yy0uMzEyLDEuMTY2LS42LDIuMzUzLS45LDMuNTJMOS4xMDUsMjIuN2wtLjQxNywxLjc3Yy0uMjkyLDEuMTg3LS41NjIsMi4zNTMtLjksMy41MmEuMTI1LjEyNSwwLDAsMCwuMDIxLjA4MywzLjA3NiwzLjA3NiwwLDAsMCwuNi41NjIsNi4wNDgsNi4wNDgsMCwwLDAsLjY4Ny40MTcsOS40LDkuNCwwLDAsMCwxLjUuNiw2Ljk3Miw2Ljk3MiwwLDAsMCwxLjYyNC4yNzEsMy43MjgsMy43MjgsMCwwLDAsLjgzMy0uMDQyLDYuNTQ3LDYuNTQ3LDAsMCwwLC44MzMtLjE2Ny4yNTQuMjU0LDAsMCwwLC4xNjctLjE4N3YtLjAyMWMuMjI5LTEuMTQ1LjQxNy0yLjMxMi42MjUtMy40NTdsLjU4My0zLjQ3OGMuMTg3LTEuMTY2LjQtMi4zMTIuNTgzLTMuNDc4LjAyMS0uMTI1LjA0Mi0uMjcxLjA2Mi0uNC4wNDIuMDQyLjA2Mi4xLjEuMTQ2YTQuMTM3LDQuMTM3LDAsMCwwLC43MDguNjQ2LDcuMjEyLDcuMjEyLDAsMCwwLDEuNTgzLjgzMywxMS43NzQsMTEuNzc0LDAsMCwwLDEuNjY2LjUsMTAuMTgyLDEwLjE4MiwwLDAsMCwxLjEuMTg3LDIuNjIxLDIuNjIxLDAsMCwwLS4yNSwxLjIwOC4xMTUuMTE1LDAsMCwwLC4wNjIuMWguMDIxYTUuMTY0LDUuMTY0LDAsMCwwLDEuMjcuNDc5LDQuMzMzLDQuMzMzLDAsMCwwLDEuMzc1LjA2MiwyLjYyNywyLjYyNywwLDAsMCwxLjMzMy0uNTYyLDIuODI0LDIuODI0LDAsMCwwLC44MTItMS4xNjZsLjAyMS0uMDIxVjIxLjFsLjA2Mi0uNTYydi0uMDIxYTUuNDI3LDUuNDI3LDAsMCwwLC42MjUtLjQxNywyLjcxLDIuNzEsMCwwLDAsLjY0Ni0uNzI5LDEuODMzLDEuODMzLDAsMCwwLC4yNS0xLDIuNTYzLDIuNTYzLDAsMCwwLS4yOTItLjk1OFptLS40LTEwLjVabS0xLjQ3OS0xLjFhNy4xMiw3LjEyLDAsMCwxLC44MzMuNTQxYy4xMjUuMS4yNzEuMTg3LjQuMzEyYTEuMjU3LDEuMjU3LDAsMCwxLC4xNjcuMTY3bC4wNDIuMDQyaC0uMDQyYy0uMDgzLS4wMjEtLjE0Ni0uMDQyLS4yMjktLjA2Mi0uMTQ2LS4wNjItLjMxMi0uMTI1LS40NTgtLjE4N2E3LjEzMiw3LjEzMiwwLDAsMS0uODc1LS40NzlBNS42MSw1LjYxLDAsMCwxLDI0LjIsNS41MmEyLjUsMi41LDAsMCwxLS4yMjktLjI1bC4zMTIuMTI1YTYuNCw2LjQsMCwwLDEsLjg1NC40MTdabS0xLjQxNi0uOTE2LjAyMS4wMjF2LjA0MmEuMDIuMDIsMCwwLDAtLjAyMS0uMDIxVjQuODk1Wk04Ljg3NiwyLjU2MmE1LjAyMSw1LjAyMSwwLDAsMS0uOTM3LjMzMyw1LjM0Nyw1LjM0NywwLDAsMS0uOTc5LjE2Nyw0LjAxMyw0LjAxMywwLDAsMS0uNS4wMjEuNzgxLjc4MSwwLDAsMS0uMjI5LS4wMjFINi4xNjljLjAyMSwwLC4wMjEtLjAyMS4wNDItLjAyMS4wNjItLjA0Mi4xNDYtLjA2Mi4yMDgtLjEuMTQ2LS4wNjIuMzEyLS4xLjQ1OC0uMTY3LjMxMi0uMDgzLjY0Ni0uMTY3Ljk3OS0uMjI5YTguNCw4LjQsMCwwLDEsLjk3OS0uMTI1QTEuNTc2LDEuNTc2LDAsMCwwLDkuMTQ3LDIuNGExLjUzNiwxLjUzNiwwLDAsMS0uMjcxLjE2N1ptMTQuNDUzLDcuMS0xLjI5MSwxLTEuMjkxLDEuMDJjLS4zNTQuMjkyLS43MDguNTgzLTEuMDYyLjg1NC4wMjEtLjAyMS4wNDItLjA2Mi4wNjItLjA4My4xNjctLjIyOS4zMzMtLjQzNy41LS42NDYuMzU0LS40MTcuNjg3LS44NTQsMS4wNjItMS4yNXMuNzcxLS43OTEsMS4xNjYtMS4xNDVhNC44NzIsNC44NzIsMCwwLDEsLjY0Ni0uNWwuMTg3LS4xMjVjLjE4Ny4xNDYuNC4yOTIuNTgzLjQzNy0uMTY3LjE0Ni0uMzc1LjI5Mi0uNTYyLjQzN1pNOC4wNjQsNy4xbC4xLjFhNS42Myw1LjYzLDAsMCwxLC41ODMuNjQ2LDIuMjEsMi4yMSwwLDAsMSwuMzc1LjcyOS45MjEuOTIxLDAsMCwxLS4wNjIuNjI1bC0uMDIxLS4wNjJMOC4wNjQsNy4xWm0xLjAyLDIuMTY2YS43Mi43MiwwLDAsMCwuMTQ2LS4yNS44NjYuODY2LDAsMCwwLC4wNDItLjQ1OEExLjcsMS43LDAsMCwwLDguOSw3LjcyN2E0LjAxNSw0LjAxNSwwLDAsMC0uOTc5LS45bC0uMjI5LS40NzljLS4xNDYtLjMxMi0uMjkyLS42MjUtLjQ1OC0uOTE2LjMxMi0uMDgzLjY4Ny0uMjA4LDEuMS0uMzEyQTIwLjMxMywyMC4zMTMsMCwwLDEsOS4zNTUsN2E3Ljk2Myw3Ljk2MywwLDAsMSwuNzcxLDIuNTQxYy4wMjEuMjA4LDAsLjQzNywwLC42NjZzMCwuNDU4LjAyMS42ODdhNy42MDksNy42MDksMCwwLDAsLjE0Ni45NThMOS4wODQsOS4yNjhaTTE0LDI2LjI0MmEuOS45LDAsMCwxLS4xODcuMjA4LjQuNCwwLDAsMS0uMzMzLjEuMzU4LjM1OCwwLDAsMS0uMjI5LS4yMjkuOTgxLjk4MSwwLDAsMS0uMDgzLS4zNTQsMi4yNzUsMi4yNzUsMCwwLDEsLjA0Mi0uNzUsMi44MTYsMi44MTYsMCwwLDEsLjIyOS0uNzA4LDEuNDc4LDEuNDc4LDAsMCwxLC4yMDgtLjI5Mi4zNDEuMzQxLDAsMCwxLC4yOTItLjEyNWMuMSwwLC4yMDguMS4yNzEuMjA4YS43NC43NCwwLDAsMSwuMDgzLjE4N2wtLjI1LDEuNDc5Yy0uMDIxLjEtLjAyMS4xODctLjA0Mi4yNzFabTEuMjI5LTcuMTg1LS4zNzUsMi4xODdhMy4zMjksMy4zMjksMCwwLDAtLjEtLjQzN2MtLjEtLjQtLjIyOS0uNzcxLS4zNTQtMS4xNDVhMTUuNTM3LDE1LjUzNywwLDAsMC0uOTU4LTIuMTY2Yy4yMjkuNzcxLjUsMS41Ljc3MSwyLjI0OS4xNDYuMzc1LjI3MS43NS40LDEuMWwuMTg3LjU2MmMwLC4wMjEuMDIxLjA2Mi4wMjEuMDgzLS4wNjIuMzMzLS4xMjUuNjY2LS4xNjcsMS4wMmwtLjMxMiwxLjljLS4wMjEtLjA0Mi0uMDIxLS4wODMtLjA0Mi0uMTI1YS40ODYuNDg2LDAsMCwwLS4zMTItLjI5Mi41MjUuNTI1LDAsMCwwLS40MTcuMTI1LDEuOTQ0LDEuOTQ0LDAsMCwwLS4yNzEuMzEyLDIuMDM2LDIuMDM2LDAsMCwwLS4yNzEuNzUsMi4xMzEsMi4xMzEsMCwwLDAsMCwuODEyLDEuMDIxLDEuMDIxLDAsMCwwLC4xNDYuNC40ODYuNDg2LDAsMCwwLC4zMzMuMjcxLjQyOC40MjgsMCwwLDAsLjM3NS0uMTY3Yy4wNDItLjA0Mi4wODMtLjEuMTI1LS4xNDYtLjE0Ni45NzktLjMxMiwxLjk1OC0uNDU4LDIuOTU3YTIuNzI3LDIuNzI3LDAsMCwxLS41NjIuMTI1Yy0uMjUuMDQyLS41LjA2Mi0uNzUuMDgzYTUuNTMxLDUuNTMxLDAsMCwxLTEuNTQxLS4xNDYsNy44NDYsNy44NDYsMCwwLDEtMS41LS40NzksMy42MjUsMy42MjUsMCwwLDEtMS4yMjktLjg1NGMuMzEyLTEuMTQ1LjY2Ni0yLjI5MSwxLjAyLTMuNDM2bC41NDEtMS43MjkuNTIxLTEuNzQ5Yy4zNTQtMS4xNjYuNzA4LTIuMzMzLDEuMDQxLTMuNS4xNjctLjU4My4zMTItMS4xNjYuNDc5LTEuNzQ5YTMuNjI2LDMuNjI2LDAsMCwwLC4xODctMS44MzN2LS4wMjFjLS4wMjEtLjAyMS0uMDQyLS4wMjEtLjA0MiwwYTMuMTA5LDMuMTA5LDAsMCwwLS4yNS4yOTJjLS4yMjktLjUyMS0uNDc5LTEuMDItLjcwOC0xLjU0MWE0Ljc2NSw0Ljc2NSwwLDAsMS0uMTY3LS41ODMsNy4xNjUsNy4xNjUsMCwwLDEtLjIwOC0xLjMxMmMtLjAyMS0uMjI5LS4wMjEtLjQzNy0uMDIxLS42NjZzLjAyMS0uNDU4LDAtLjY4N2E3LjYyNSw3LjYyNSwwLDAsMC0uODMzLTIuNiwxMi41ODcsMTIuNTg3LDAsMCwwLTEuMS0xLjgzM2MuNjg3LS4xODcsMS40MTYtLjM3NSwyLS40NzkuMDgzLjE4Ny4xODcuMzU0LjI3MS41NDFMMTEuOTM4LDcuNmwxLjI1LDIuNDM3LjYyNSwxLjIwOC4zMTIuNmMuMDgzLjEyNS4xMjUuMjcxLjIwOC4zNzVsLS44MTIuNzVhLjA2OS4wNjksMCwwLDAsMCwuMS4wNzMuMDczLDAsMCwwLC4xLjAyMWMuNDM3LS4zMTIuODc1LS42NDYsMS4zMTItLjk3OWwxLjMxMi0xYy44NzUtLjY2NiwxLjcyOS0xLjMzMywyLjU4Mi0yczEuNzA4LTEuMzU0LDIuNTYyLTIuMDQxbC4wMjEtLjAyMWEyNC4zMTYsMjQuMzE2LDAsMCwwLDEuODc0LDEuNjQ1LDYuMTYyLDYuMTYyLDAsMCwwLS44NzUuNTQxLDguOTQzLDguOTQzLDAsMCwwLTEuMjI5LDEuMTI1LDEyLjI3OSwxMi4yNzksMCwwLDAtMS4wNDEsMS4yOTEsMTEuNzc4LDExLjc3OCwwLDAsMC0uNjQ2LDFjLTEuMjcsMS4wNDEtMi41MiwyLjEtMy43MjgsMy4yMDdhLjEyOC4xMjgsMCwwLDAtLjAyMS4xNDYuMTM4LjEzOCwwLDAsMCwuMTQ2LjA0Miw5LjEzNCw5LjEzNCwwLDAsMC0uMzEyLDEuMjVjLS4xMjUuNTgzLS4yNSwxLjE2Ni0uMzU0LDEuNzQ5Wm05LjIwNSwyLjc5MWEyLjUyNywyLjUyNywwLDAsMS0xLjAyLjQ1OCwzLjc2NywzLjc2NywwLDAsMS0xLjE4Ny4wNDIsNy4zNjEsNy4zNjEsMCwwLDEtMS4xNDUtLjIwOCwyLjAzNywyLjAzNywwLDAsMSwuMTY3LTEuMDQxYy4xNDYuMDIxLjI3MS4wMjEuNDE3LjA0MmEuMTE0LjExNCwwLDAsMCwuMTI1LS4wODMuMTI0LjEyNCwwLDAsMC0uMDgzLS4xNjdoMGMtLjEtLjA0Mi0uMTg3LS4wNjItLjI5Mi0uMWEyLjc3MSwyLjc3MSwwLDAsMSwuMjkyLS40Yy4xMjUtLjEyNS4yNS0uMjUuMzc1LS4zNTRhMy45OTIsMy45OTIsMCwwLDAsLjg1NC40LDIuODgxLDIuODgxLDAsMCwwLDEuMTI1LjEsMS41NSwxLjU1LDAsMCwwLDEuMDItLjU0MSwxLjUyNCwxLjUyNCwwLDAsMCwuMzU0LS45MTYuODUuODUsMCwwLDEsLjAyMS40LDQuNTExLDQuNTExLDAsMCwxLS4wODMuNTIxbC0uMDYyLjMxMkwyNSwyMC40OTRhLjkxOS45MTksMCwwLDAtLjMzMy4zNTQuNzUxLjc1MSwwLDAsMCwuNDc5LDBjLjAyMSwwLC4wMjEtLjAyMS4wNDItLjAyMS0uMDIxLjA2Mi0uMDIxLjEtLjA0Mi4xNjdhMi41NTIsMi41NTIsMCwwLDEtLjcwOC44NTRaTTI2LjUsMTkuMTE5YTIuMiwyLjIsMCwwLDEtLjQ1OC42MjUsMi42MzgsMi42MzgsMCwwLDEtLjI3MS4yMjksMi41ODUsMi41ODUsMCwwLDAtLjA2Mi0uNTYyLDEuNTM0LDEuNTM0LDAsMCwwLS4wODMtLjI5Mi41MzEuNTMxLDAsMCwwLS4xODctLjI1aDBjLS4wMjEsMC0uMDQyLDAtLjA0Mi4wMjFoMGExLjk1LDEuOTUsMCwwLDEtLjU2Mi43NzEsMS40MjksMS40MjksMCwwLDEtLjgxMi4yOTIsMi44NTcsMi44NTcsMCwwLDEtLjkxNi0uMTI1Yy0uMzEyLS4wODMtLjYyNS0uMTg3LS45MzctLjI5MmwtLjA0Mi0uMDIxYS4yLjIsMCwwLDAtLjE4Ny4wNDJjLS4xNjcuMjA4LS4yOTIuNC0uNDM3LjYtLjEuMTY3LS4xODcuMzEyLS4yNzEuNDc5LS4zNzUtLjE0Ni0uNzI5LS4yNzEtMS4xLS40MTctLjUyMS0uMjA4LTEuMDQxLS40MTctMS41Mi0uNjY2YTcuNjQ4LDcuNjQ4LDAsMCwxLTEuNC0uODEyLDIuOTQ5LDIuOTQ5LDAsMCwxLS45NzktMS4wNjJ2LS4wMjFhLjQwOS40MDksMCwwLDAtLjE4Ny0uMTg3YzAtLjA0Mi4wMjEtLjEuMDIxLS4xNDZhNy4zNyw3LjM3LDAsMCwwLC4xLTEuNTJjMS42ODctMS4xODcsMy4zMzItMi40MzcsNC45NTctMy43MjhsLS4wNjIuMTg3YTMuMjcsMy4yNywwLDAsMC0uMTQ2LDEuMDJBMi4wODksMi4wODksMCwwLDAsMjIuMTIyLDE1LjFhMi44MjUsMi44MjUsMCwwLDAsLjQ3OS4xODdsLjI1LjA2Mi4yMDguMDQyYTYuNjQ1LDYuNjQ1LDAsMCwxLDEuNTQxLjYyNSw2LjE1Niw2LjE1NiwwLDAsMSwxLjMxMi45NzksMi4yNzUsMi4yNzUsMCwwLDEsLjcwOCwxLjMzMywxLjUxLDEuNTEsMCwwLDEtLjEyNS43OTFaXCIgc3R5bGU9XCJmaWxsOiMzZjNlMjlcIi8+PHBhdGggZD1cIk0xMi42NjcsMjMuOTA5YTIuMTYxLDIuMTYxLDAsMCwwLS4zNTQuNzcxLDEuNTU2LDEuNTU2LDAsMCwwLS4wNjIuNDE3bC0uMDIxLjQxN2E0LjUzMyw0LjUzMywwLDAsMCwuMTQ2LDEuNjY2LDcuNjQ3LDcuNjQ3LDAsMCwwLC42NjYsMS41MmMtLjA4My0uMjcxLS4xODctLjUyMS0uMjcxLS43NzFzLS4xNjctLjUyMS0uMjI5LS43OTFhNS44OSw1Ljg5LDAsMCwxLS4xLTEuNmwuMDIxLS40MTdhMi41NTIsMi41NTIsMCwwLDEsLjA0Mi0uNCwzLjEzNywzLjEzNywwLDAsMSwuMjkyLS43MjksMi45NjcsMi45NjcsMCwwLDEsLjUyMS0uNjI1LDIuNTkxLDIuNTkxLDAsMCwxLC42NjYtLjQ3OSwyLjc2LDIuNzYsMCwwLDAtMS4zMTIsMS4wMlpcIiBzdHlsZT1cImZpbGw6IzNmM2UyOVwiLz5gLFxuICBcIkhhbmRsZWJhcnNcIjogYDxwYXRoIGQ9XCJNMTIuMywxMy4xYTQuMjM4LDQuMjM4LDAsMCwxLDIuNzI4LjlBNC41OTIsNC41OTIsMCwwLDEsMTYsMTUuMTI3YTQuMTQ0LDQuMTQ0LDAsMCwxLDIuMDM5LTEuNzQ3LDQuNzU3LDQuNzU3LDAsMCwxLDMuMjg2LjAxOSw3LjgzMyw3LjgzMywwLDAsMSwyLjQ0MywxLjU1OGMuNTY4LjUsMS4wOTQsMS4wNSwxLjY3OSwxLjUzM2EzLjQsMy40LDAsMCwwLDEuMDE5LjYxNCwxLjQyLDEuNDIsMCwwLDAsMS40Ni0uMzc5Ljk2NS45NjUsMCwwLDAtLjA1NS0xLjMyMy41NDUuNTQ1LDAsMCwwLS44LjEwOC42NTkuNjU5LDAsMCwwLC4wNS42ODYsMS4yMjIsMS4yMjIsMCwwLDEtLjYtLjkyNiwxLjAyMiwxLjAyMiwwLDAsMSwuNjkxLTEuMDMyLDIuMDA1LDIuMDA1LDAsMCwxLDIuMzEyLjY2MSwzLjI1OCwzLjI1OCwwLDAsMSwuNDQsMi4zMDgsMi43NjIsMi43NjIsMCwwLDEtMS4xMzcsMS44NzIsNS4wNTEsNS4wNTEsMCwwLDEtMy4wMTMuOCw4LjQ4OCw4LjQ4OCwwLDAsMS0yLjkzMi0uNjNjLTEuNTU4LS42MjYtMy4wMTYtMS40OTItNC42MjUtMS45OTJhMTMuOTc3LDEzLjk3NywwLDAsMC0xLjctLjM2M2MtLjQzLjAwNy0uODYxLS4wMTUtMS4yOS4wMTVhNS42OTIsNS42OTIsMCwwLDAtMS41MzQuMzQ5Yy0xLjYzNi41MDktMy4xMTYsMS40LTQuNywyLjAyNGE3LjYyNSw3LjYyNSwwLDAsMS00LjI0OS40NzQsMy43NCwzLjc0LDAsMCwxLTIuMTI1LTEuMTRBMi44NTYsMi44NTYsMCwwLDEsMiwxNi42NjhhMi43MjIsMi43MjIsMCwwLDEsLjU1NS0xLjg3NCwxLjk5NCwxLjk5NCwwLDAsMSwxLjY4Ny0uNjgsMS40MjUsMS40MjUsMCwwLDEsMS4wNjMuNTIsMS4wNCwxLjA0LDAsMCwxLC4xMjIuOTExLDEuNDU3LDEuNDU3LDAsMCwxLS41NTYuNjQ0LjY0My42NDMsMCwwLDAsLjA1MS0uNjgxLjU0Ny41NDcsMCwwLDAtLjgzMS0uMDc5Ljk3NS45NzUsMCwwLDAtLjE1MSwxLjExLDEuMzMxLDEuMzMxLDAsMCwwLDEuMDMyLjYyMywyLjMzMiwyLjMzMiwwLDAsMCwxLjYtLjdBMjguNTI2LDI4LjUyNiwwLDAsMSw5LjQsMTQuMDUzLDUuMjUxLDUuMjUxLDAsMCwxLDEyLjMsMTMuMVpcIiBzdHlsZT1cImZpbGw6I2MxOTc3MFwiLz5gLFxuICBcIkhhc2tlbGxcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjAuOTk2XCIgeTE9XCItMjA2LjA1N1wiIHgyPVwiMC45NTFcIiB5Mj1cIi0yMDYuMDU3XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMjU5Ljk0MSwgMCwgMCwgLTE4My40ODcsIC0yMzcuOTQxLCAtMzc3OTIuNzg4KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZhYmEwOVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNiNDJjMDFcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9oYXNrZWxsMjwvdGl0bGU+PHBhdGggZD1cIk0yLDI1Ljg4Miw4LjU4OCwxNiwyLDYuMTE4SDYuOTQxTDEzLjUyOSwxNiw2Ljk0MSwyNS44ODJabTYuNTg4LDBMMTUuMTc3LDE2LDguNTg4LDYuMTE4aDQuOTQxTDI2LjcwNiwyNS44ODJIMjEuNzY1bC00LjExNy02LjE3Ni00LjExOCw2LjE3NlpNMjQuNTEsMjAuMTE4bC0yLjItMy4yOTRIMzB2My4yOTRabS0zLjI5NC00Ljk0MS0yLjItMy4yOTRIMzB2My4yOTRaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+YCxcbiAgXCJIYXhlXCI6IGA8cGF0aCBkPVwiTTE2LDUuNSw1LjUsMTYsMTYsMjYuNSwyNi41LDE2LDE2LDUuNVwiIHN0eWxlPVwiZmlsbDojZjY4NzEyXCIvPjxwYXRoIGQ9XCJNMiwyLDE2LDUuNSw1LjUsMTYsMiwyXCIgc3R5bGU9XCJmaWxsOiNmYWIyMGJcIi8+PHBhdGggZD1cIk0zMCwyLDI2LjUsMTYsMTYsNS41LDMwLDJcIiBzdHlsZT1cImZpbGw6I2Y0NzIxNlwiLz48cGF0aCBkPVwiTTMwLDMwLDE2LDI2LjUsMjYuNSwxNiwzMCwzMFwiIHN0eWxlPVwiZmlsbDojZjI1YzE5XCIvPjxwYXRoIGQ9XCJNMiwzMCw1LjUsMTYsMTYsMjYuNSwyLDMwXCIgc3R5bGU9XCJmaWxsOiNmODljMGVcIi8+PHBhdGggZD1cIk0xNiw1LjUsMiwySDlsNywzLjVcIiBzdHlsZT1cImZpbGw6I2ZiYzcwN1wiLz48cGF0aCBkPVwiTTE2LDUuNSwzMCwySDIzTDE2LDUuNVwiIHN0eWxlPVwiZmlsbDojZmJjNzA3XCIvPjxwYXRoIGQ9XCJNMTYsMjYuNSwzMCwzMEgyM2wtNy0zLjVcIiBzdHlsZT1cImZpbGw6I2Y2ODcxMlwiLz48cGF0aCBkPVwiTTE2LDI2LjUsMiwzMEg5bDctMy41XCIgc3R5bGU9XCJmaWxsOiNmMjVjMTlcIi8+PHBhdGggZD1cIk01LjUsMTYsMiwzMFYyM2wzLjUtN1wiIHN0eWxlPVwiZmlsbDojZmZmMjAwXCIvPjxwYXRoIGQ9XCJNNS41LDE2LDIsMlY5bDMuNSw3XCIgc3R5bGU9XCJmaWxsOiNmZmYyMDBcIi8+PHBhdGggZD1cIk0yNi41LDE2LDMwLDJWOWwtMy41LDdcIiBzdHlsZT1cImZpbGw6I2YxNDcxZFwiLz48cGF0aCBkPVwiTTI2LjUsMTYsMzAsMzBWMjNsLTMuNS03XCIgc3R5bGU9XCJmaWxsOiNmMTQ3MWRcIi8+YCxcbiAgXCJITFNMXCI6IGA8cG9seWdvbiBwb2ludHM9XCI5LjUyNSAyMS45NDcgNy41NiAyMS45NDcgNy41NiAxNy4xIDMuOTU4IDE3LjEgMy45NTggMjEuOTQ3IDIgMjEuOTQ3IDIgMTAuMDQ0IDMuOTU4IDEwLjA0NCAzLjk1OCAxNC43OTIgNy41NiAxNC43OTIgNy41NiAxMC4wNDQgOS41MjUgMTAuMDQ0IDkuNTI1IDIxLjk0N1wiIHN0eWxlPVwiZmlsbDpibHVlXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE2LjY5MiAyMS45NDcgMTEuNTEzIDIxLjk0NyAxMS41MTMgMTAuMDQ0IDEzLjQ3MiAxMC4wNDQgMTMuNDcyIDE5Ljc3MyAxNi42OTIgMTkuNzczIDE2LjY5MiAyMS45NDdcIiBzdHlsZT1cImZpbGw6Ymx1ZVwiLz48cGF0aCBkPVwiTTE3LjQ2MiwyMS40OTFWMTguODM0YTMuNjc2LDMuNjc2LDAsMCwwLDEuMTQ2LjkwOSwyLjgwOSwyLjgwOSwwLDAsMCwxLjI0OS4zLDIuMDUsMi4wNSwwLDAsMCwuNjQ2LS4wOTIsMS4zMDksMS4zMDksMCwwLDAsLjQ2MS0uMjUyLDEuMDI5LDEuMDI5LDAsMCwwLC4yNzYtLjM4MiwxLjIzMSwxLjIzMSwwLDAsMCwuMDkxLS40NzgsMS4zLDEuMywwLDAsMC0uMTQ1LS42MjMsMS45MDcsMS45MDcsMCwwLDAtLjQtLjUwNiw0LjA3Nyw0LjA3NywwLDAsMC0uNi0uNDQ4cS0uMzQ2LS4yMTUtLjc0Ni0uNDM5YTQuMDQ1LDQuMDQ1LDAsMCwxLTEuNTE5LTEuNDE5LDMuODg0LDMuODg0LDAsMCwxLS41LTIuMDI2LDQuMjMyLDQuMjMyLDAsMCwxLC4yNzMtMS42LDMuMDIsMy4wMiwwLDAsMSwuNzQ0LTEuMSwyLjkzOCwyLjkzOCwwLDAsMSwxLjA4OC0uNjM0LDQuMTY3LDQuMTY3LDAsMCwxLDEuMzEtLjIsNS44MTYsNS44MTYsMCwwLDEsMS4yLjExMSwzLjgsMy44LDAsMCwxLC45NjcuMzQ1djIuNDgyYTIuODU5LDIuODU5LDAsMCwwLS40NzYtLjM2NSwzLjIxMiwzLjIxMiwwLDAsMC0uNTMtLjI2MkEzLjEsMy4xLDAsMCwwLDIxLjQ2LDEyYTIuNzk0LDIuNzk0LDAsMCwwLS41MTItLjA1LDEuOTk0LDEuOTk0LDAsMCwwLS42MDYuMDg3LDEuMzQ3LDEuMzQ3LDAsMCwwLS40NjEuMjQ1LDEuMDkyLDEuMDkyLDAsMCwwLS4yOTEuMzc3LDEuMTQ0LDEuMTQ0LDAsMCwwLS4xLjQ5NCwxLjIsMS4yLDAsMCwwLC4xMTUuNTM2LDEuNjU3LDEuNjU3LDAsMCwwLC4zMjguNDQ4LDMuNDYxLDMuNDYxLDAsMCwwLC41MTUuNDE1Yy4yLjEzNi40My4yNzUuNjg2LjQxOWE3LjA5NCw3LjA5NCwwLDAsMSwuOTM2LjYzNSwzLjcxMiwzLjcxMiwwLDAsMSwuNzEzLjc1OSwzLjI2OSwzLjI2OSwwLDAsMSwuNDU1Ljk2Nyw0LjU3Myw0LjU3MywwLDAsMSwuMTU4LDEuMjY2LDQuNDM5LDQuNDM5LDAsMCwxLS4yNzcsMS42NzIsMi44ODgsMi44ODgsMCwwLDEtLjc0OSwxLjEsMi44MjMsMi44MjMsMCwwLDEtMS4xLjYsNC43NDIsNC43NDIsMCwwLDEtMS4zMjUuMTgyLDUuNDc2LDUuNDc2LDAsMCwxLTEuMzYxLS4xNjZBMy40MSwzLjQxLDAsMCwxLDE3LjQ2MiwyMS40OTFaXCIgc3R5bGU9XCJmaWxsOmJsdWVcIi8+PHBvbHlnb24gcG9pbnRzPVwiMzAgMjEuOTQ3IDI0LjgyMiAyMS45NDcgMjQuODIyIDEwLjA0NCAyNi43OCAxMC4wNDQgMjYuNzggMTkuNzczIDMwIDE5Ljc3MyAzMCAyMS45NDdcIiBzdHlsZT1cImZpbGw6Ymx1ZVwiLz5gLFxuICBcIkhUTUxcIjogYDxwb2x5Z29uIHBvaW50cz1cIjUuOTAyIDI3LjIwMSAzLjY1NSAyIDI4LjM0NSAyIDI2LjA5NSAyNy4xOTcgMTUuOTg1IDMwIDUuOTAyIDI3LjIwMVwiIHN0eWxlPVwiZmlsbDojZTQ0ZjI2XCIvPjxwb2x5Z29uIHBvaW50cz1cIjE2IDI3Ljg1OCAyNC4xNyAyNS41OTMgMjYuMDkyIDQuMDYxIDE2IDQuMDYxIDE2IDI3Ljg1OFwiIHN0eWxlPVwiZmlsbDojZjE2NjJhXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE2IDEzLjQwNyAxMS45MSAxMy40MDcgMTEuNjI4IDEwLjI0MiAxNiAxMC4yNDIgMTYgNy4xNTEgMTUuOTg5IDcuMTUxIDguMjUgNy4xNTEgOC4zMjQgNy45ODEgOS4wODMgMTYuNDk4IDE2IDE2LjQ5OCAxNiAxMy40MDdcIiBzdHlsZT1cImZpbGw6I2ViZWJlYlwiLz48cG9seWdvbiBwb2ludHM9XCIxNiAyMS40MzQgMTUuOTg2IDIxLjQzOCAxMi41NDQgMjAuNTA5IDEyLjMyNCAxOC4wNDQgMTAuNjUxIDE4LjA0NCA5LjIyMSAxOC4wNDQgOS42NTQgMjIuODk2IDE1Ljk4NiAyNC42NTQgMTYgMjQuNjUgMTYgMjEuNDM0XCIgc3R5bGU9XCJmaWxsOiNlYmViZWJcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTUuOTg5IDEzLjQwNyAxNS45ODkgMTYuNDk4IDE5Ljc5NSAxNi40OTggMTkuNDM3IDIwLjUwNyAxNS45ODkgMjEuNDM3IDE1Ljk4OSAyNC42NTMgMjIuMzI2IDIyLjg5NiAyMi4zNzIgMjIuMzc0IDIzLjA5OCAxNC4yMzcgMjMuMTc0IDEzLjQwNyAyMi4zNDEgMTMuNDA3IDE1Ljk4OSAxMy40MDdcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cG9seWdvbiBwb2ludHM9XCIxNS45ODkgNy4xNTEgMTUuOTg5IDkuMDcxIDE1Ljk4OSAxMC4yMzUgMTUuOTg5IDEwLjI0MiAyMy40NDUgMTAuMjQyIDIzLjQ0NSAxMC4yNDIgMjMuNDU1IDEwLjI0MiAyMy41MTcgOS41NDggMjMuNjU4IDcuOTgxIDIzLjczMiA3LjE1MSAxNS45ODkgNy4xNTFcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuICBcIkhUVFBcIjogYDxkZWZzPjxyYWRpYWxHcmFkaWVudCBpZD1cImFcIiBjeD1cIjEyLjI3OFwiIGN5PVwiMjQuNTU3XCIgcj1cIjE4LjM3MVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEsIDAsIDAsIC0xLCAtMC4wMDEsIDM0LjAwMSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNkM2U5ZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMC4xNTVcIiBzdG9wLWNvbG9yPVwiI2QzZTlmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjc1XCIgc3RvcC1jb2xvcj1cIiM0MDc0YWVcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMzY0ODZjXCIvPjwvcmFkaWFsR3JhZGllbnQ+PHJhZGlhbEdyYWRpZW50IGlkPVwiYlwiIGN4PVwiMTAuNjU3XCIgY3k9XCIyNi43NDZcIiByPVwiMjYuNjZcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLCAwLCAwLCAtMSwgLTAuMDAxLCAzNC4wMDEpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZmXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiIHN0b3Atb3BhY2l0eT1cIjAuMTY1XCIvPjwvcmFkaWFsR3JhZGllbnQ+PHJhZGlhbEdyYWRpZW50IGlkPVwiY1wiIGN4PVwiLTQ1LjA1XCIgY3k9XCI5LjI4NVwiIHI9XCI0LjExNVwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKC0yMS45NzEgNDEuOTQyKSByb3RhdGUoMTQzLjczNClcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZmZmXCIgc3RvcC1vcGFjaXR5PVwiMFwiLz48L3JhZGlhbEdyYWRpZW50PjxyYWRpYWxHcmFkaWVudCBpZD1cImRcIiBjeD1cIi00MS40NTZcIiBjeT1cIjMyLjE1NFwiIHI9XCI0LjExNVwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDMuNTcxIDg3LjA3NSkgcm90YXRlKDE0My43MzQpIHNjYWxlKDEuMjk3KVwiIHhsaW5rOmhyZWY9XCIjY1wiLz48cmFkaWFsR3JhZGllbnQgaWQ9XCJlXCIgY3g9XCItNDguNDg1XCIgY3k9XCIxMy4yMzlcIiByPVwiNC4xMTVcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMjMuMDg0IDU1LjQxMykgcm90YXRlKDE0My43MzQpXCIgeGxpbms6aHJlZj1cIiNjXCIvPjxyYWRpYWxHcmFkaWVudCBpZD1cImZcIiBjeD1cIi00MC44ODNcIiBjeT1cIjE2LjAzNlwiIHI9XCI0LjExNVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KC0wLjg3LCAwLjYzOSwgLTAuNjM4LCAtMC44NywgLTkuMzUxLCA0Ny43MDYpXCIgeGxpbms6aHJlZj1cIiNjXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImdcIiB4MT1cIi02Ni41MDJcIiB5MT1cIjIuMjE5XCIgeDI9XCItNjQuNjI2XCIgeTI9XCI2Ljc0OVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDAuOTM5LCAtMC44NzksIC0wLjY4MywgLTAuNzMsIDg0LjgxLCAtMzMuNjI4KVwiIHhsaW5rOmhyZWY9XCIjY1wiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJoXCIgeDE9XCItMjYuNzkxXCIgeTE9XCIzOS4xNTlcIiB4Mj1cIi0yNC45OTlcIiB5Mj1cIjQ0LjY4M1wiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEuMTMxLCAwLjYxMywgMC40NzcsIC0wLjg3OSwgMjEuNjQ4LCA2OS4wNzEpXCIgeGxpbms6aHJlZj1cIiNjXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImlcIiB4MT1cIi02My4zODRcIiB5MT1cIjguMTc3XCIgeDI9XCItNjMuNTdcIiB5Mj1cIjQuNjlcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgwLjkxOCwgLTAuODU5LCAtMC42NjgsIC0wLjcxMywgNzcuODU3LCAtMzYuNDkzKVwiIHhsaW5rOmhyZWY9XCIjY1wiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJqXCIgeDE9XCItOTkuMjU5XCIgeTE9XCI4OS41NDVcIiB4Mj1cIi05OC44MjVcIiB5Mj1cIjkzLjAyM1wiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KC0xLjI4LCAtMC4xMjYsIC0wLjA5OCwgMC45OTUsIC0xMDEuNjM3LCAtOTMuMDE1KVwiIHhsaW5rOmhyZWY9XCIjY1wiLz48cmFkaWFsR3JhZGllbnQgaWQ9XCJrXCIgY3g9XCItMjAuNzEyXCIgY3k9XCI1Ny42MVwiIHI9XCIyLjgzNlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDAsIC0wLjg0MywgLTAuNzIxLCAwLCAyNi42MjUsIC0yMS42OTYpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjNzI5ZmNmXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzNiNjFhNlwiLz48L3JhZGlhbEdyYWRpZW50PjxyYWRpYWxHcmFkaWVudCBpZD1cImxcIiBjeD1cIi0yMC43MTJcIiBjeT1cIjM5Ljg1OFwiIHI9XCIyLjgzNlwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDI2LjYyNSA2My4wOTYpIHJvdGF0ZSg5MCkgc2NhbGUoMC44NDMgMC43MjEpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjNzI5ZmNmXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzUwOWUyZlwiLz48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2h0dHA8L3RpdGxlPjxwYXRoIGQ9XCJNMjguMDI2LDE0LjJBMTEuODc3LDExLjg3NywwLDEsMSwxNi4xNDksMi4zMjUsMTEuODc4LDExLjg3OCwwLDAsMSwyOC4wMjYsMTQuMlpcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTE2LjE0OSwyNi4zODZBMTIuMTgzLDEyLjE4MywwLDEsMSwyOC4zMzMsMTQuMiwxMi4yLDEyLjIsMCwwLDEsMTYuMTQ5LDI2LjM4NlptMC0yMy43NTRBMTEuNTcxLDExLjU3MSwwLDEsMCwyNy43MiwxNC4yLDExLjU4NCwxMS41ODQsMCwwLDAsMTYuMTQ5LDIuNjMyWlwiIHN0eWxlPVwiZmlsbDojMzkzOTZjXCIvPjxwYXRoIGQ9XCJNMjcuNjkzLDEyLjQyNGgwbC0uMzI4LjM3MWE3LDcsMCwwLDAtLjY1Ni0uNjQ0bC0uNS4wNzQtLjQ2LS41MTl2LjY0M2wuMzk0LjMuMjYyLjMuMzUtLjRjLjA4OC4xNjUuMTc1LjMzLjI2My41di40OTVsLS4zOTQuNDQ1LS43MjIuNS0uNTQ2LjU0NS0uMzUtLjQuMTc1LS40NDUtLjM1LS40LS41OTEtMS4yNjItLjUtLjU2OUwyMy42LDEyLjFsLjIuNzE4LjM3MS40MjFhMTcuMDY5LDE3LjA2OSwwLDAsMCwuNywxLjc4Myw5Ljk3OSw5Ljk3OSwwLDAsMCwxLjI2OC0uMXYuMzQ3bC0uNTI1LDEuMjg3LS40ODEuNTQ0LS4zOTQuODQzVjE5LjMzbC4xMzIuNTQ1LS4yMTkuMjQ3LS40ODIuMy0uNS40MjEuNDE2LjQ3LS41NjkuNS4xMDkuMzIxLS44NTMuOTY2SDIyLjJsLS40ODEuM2gtLjMwN3YtLjRsLS4xMy0uNzkzYy0uMTY5LS41LS4zNDYtLjk5MS0uNTI1LTEuNDg0LDAtLjM2NC4wMjItLjcyNS4wNDQtMS4wODlsLjIxOS0uNDk1LS4zMDctLjU5NS4wMjItLjgxNy0uNDE2LS40Ny4yMDgtLjY4LS4zMzgtLjM4NEgxOS42bC0uMi0uMjIzLS41OTEuMzcyLS4yNC0uMjczLS41NDcuNDdMMTYuOTExLDE1LjI3bC0uNDM3LTEuMDQuMzk0LS41OTMtLjIxOS0uMjQ3LjQ4MS0xLjEzOWMuMzk1LS40OTEuODA3LS45NjMsMS4yMjUtMS40MzZsLjc0NC0uMi44MzEtLjEuNTY5LjE0OS44MDkuODE2LjI4NC0uMzIxLjM5My0uMDQ5Ljc0NC4yNDdIMjMuM2wuMzk0LS4zNDcuMTc1LS4yNDctLjM5NC0uMjQ3LS42NTYtLjA0OWE2LjYsNi42LDAsMCwwLS41NjgtLjc0M2wtLjIxOS4xLS4wODguNjQ0LS4zOTQtLjQ0NS0uMDg3LS41LS40MzctLjM0NmgtLjE3NmwuNDM4LjQ5NS0uMTc1LjQ0NS0uMzUuMS4yMTktLjQ0NS0uMzk0LS4yLS4zNDktLjQtLjY1Ny4xNDgtLjA4Ny4yLS4zOTQuMjQ4LS4yMTkuNTQ1LS41NDYuMjcyLS4yNDEtLjI3MkgxNy44M1Y5LjQyOGwuNTY5LS4zaC40MzdsLS4wODgtLjM0NkwxOC40LDguNDM4bC41OS0uMTI0LjMyOC0uMzcxLjI2Mi0uNDQ2aC40ODJsLS4xMzItLjM0Ni4zMDctLjJ2LjRsLjY1Ni4xNDguNjU2LS41NDQuMDQ0LS4yNDguNTY4LS40YTQuMzUzLDQuMzUzLDAsMCwwLS42MTIuMVY1Ljk2M2wuMjE5LS41aC0uMjE5bC0uNDguNDQ1LS4xMzIuMjQ4LjEzMi4zNDctLjIxOS41OTMtLjM1LS4yLS4zMDYtLjM0Ni0uNDgyLjM0Ni0uMTc1LS43OTIuODMxLS41NDR2LS4zbC41MjUtLjM0Ni44MzEtLjIuNTY5LjIsMS4wNDkuMi0uMjYyLjNIMjIuNTFsLjU2OS41OTQuNDM3LS40OTUuMTMzLS4yMThhMTUuNTMsMTUuNTMsMCwwLDEsMi42MzUsMy4xNDdBMTEuNDUyLDExLjQ1MiwwLDAsMSwyNy42OTMsMTIuNDI0WlwiIHN0eWxlPVwiZmlsbDojMjA0YTg3O2ZpbGwtb3BhY2l0eTowLjcxMzQ1MDMxMjYxNDQ0MDlcIi8+PHBhdGggZD1cIk0xNi44NjEsNS41MTdsLS4wNDQuMy4zMDcuMi41MjQtLjM0Ni0uMjYyLS4zLS4zNS4yLS4xNzQtLjA1XCIgc3R5bGU9XCJmaWxsOiMyMDRhODc7ZmlsbC1vcGFjaXR5OjAuNzEzNDUwMzEyNjE0NDQwOVwiLz48cGF0aCBkPVwiTTE3LjM0MywzLjQ4OGwtMS4xMzgtLjQ0Ni0xLjMxMi4xNDgtMS42MTkuNDQ1LS4zMDYuMywxLjAwNi42OTN2LjRsLS4zOTQuNC41MjUsMS4wNC4zNDktLjIuNDM4LS42OTNhMTUuMDUzLDE1LjA1MywwLDAsMCwxLjkyNC0uNzQzbC41MjUtMS4zMzdcIiBzdHlsZT1cImZpbGw6IzIwNGE4NztmaWxsLW9wYWNpdHk6MC43MTM0NTAzMTI2MTQ0NDA5XCIvPjxwYXRoIGQ9XCJNMTguNTI0LDcuNjQ3LDE4LjM0OSw3LjJsLS4zMDcuMS4wODguNTQ0LjM5NC0uMlwiIHN0eWxlPVwiZmlsbDojMjA0YTg3O2ZpbGwtb3BhY2l0eTowLjcxMzQ1MDMxMjYxNDQ0MDlcIi8+PHBhdGggZD1cIk0xOC43LDcuNTQ3bC0uMDg4LjU5NS40ODEtLjEuMzUtLjM0Ni0uMzA2LS4zYy0uMS0uMjc0LS4yMjEtLjUyOS0uMzUtLjc5MmgtLjI2MnYuM2wuMTc0LjJ2LjQ0NVwiIHN0eWxlPVwiZmlsbDojMjA0YTg3O2ZpbGwtb3BhY2l0eTowLjcxMzQ1MDMxMjYxNDQ0MDlcIi8+PHBhdGggZD1cIk0xMi4yMjUsMTYuOTUzbC0uMzUtLjY5My0uNjU2LS4xNDgtLjM1LS45NC0uODc1LjEtLjc0My0uNTQ0LS43ODguNjkzdi4xMDlhMywzLDAsMCwxLS43NDMtLjIwOWwtLjE3NS0uNDk1VjE0LjI4bC0uNTI1LjA0OXEuMDY2LS41Mi4xMzEtMS4wMzlINi44NDVsLS4zMDYuNC0uMzA2LjE0OEw1LjgsMTMuNTg3bC0uMDQ0LS41NDUuMDg4LS41OTQuNjU2LS40OTVINy4wMmwuMDg3LS4zLjY1Ni4xNDguNDgxLjU5NS4wODgtLjk5MS44MzEtLjY5My4zMDYtLjc0My42MTItLjI0Ny4zNS0uNDk1Ljc4Ny0uMTQ5LjM5NC0uNTkzSDEwLjQzMmwuNzQ0LS4zNDdIMTEuN2wuNzQ0LS4yNDguMDg4LS4zLS4yNjMtLjI0OC0uMzA2LS4xLjA4OC0uMy0uMjE5LS40NDUtLjUyNS4yLjA4OC0uNC0uNjEyLS4zNDdMMTAuMyw2LjhsLjA0NC4zLS40ODEuMi0uMzA2LjY0My0uMTMxLS41OTRMOC41OTQsN2wtLjEzMS0uNDQ1LDEuMDk0LS42NDQuNDgxLS40NDUuMDQ0LS41NDQtLjI2Mi0uMTQ5LS4zNS0uMDUtLjIxOS41NDVzLS4zNjYuMDcyLS40Ni4wOTVBMTIuNSwxMi41LDAsMCwwLDQuNiwxMy4zNzFhNi43ODksNi43ODksMCwwLDAsLjQwOS43MTFsLjkxOC41NDQuOTE4LjI0OC4zOTQuNS42MTIuNDQ1LjM1LS4wNDkuMjYyLjExOHYuMDhsLS4zNS45NC0uMjYzLjQuMDg4LjItLjIxOS43NDIuNzg3LDEuNDM2Ljc4Ny42OTMuMzUuNDk1TDkuNiwyMS45bC4yNjMuNTkzTDkuNiwyMy42MzdzLS4wMjEtLjAwNy4wMTMuMTA3YTUuMjc4LDUuMjc4LDAsMCwwLDEuNDg4LjgwOWwuMTYxLS4xMjMtLjA4Ny0uMjQ3LjM1LS4zNDcuMTMxLS4zNDcuNTY5LS4yLjQzNy0xLjA4OS0uMTMxLS4zLjMwNi0uNDQ1LjY1Ni0uMTQ5LjM1LS43OTItLjA4OC0uOTkuNTI1LS43NDMuMDg4LS43NDNjLS43MTgtLjM1Ni0xLjQzLS43MjMtMi4xNDMtMS4wODlcIiBzdHlsZT1cImZpbGw6IzIwNGE4NztmaWxsLW9wYWNpdHk6MC43MTM0NTAzMTI2MTQ0NDA5XCIvPjxwYXRoIGQ9XCJNMTEuMjYzLDUuNzE1bC40MzcuM2guMzVWNS42NjZsLS40MzctLjItLjM1LjI0N1wiIHN0eWxlPVwiZmlsbDojMjA0YTg3O2ZpbGwtb3BhY2l0eTowLjcxMzQ1MDMxMjYxNDQ0MDlcIi8+PHBhdGggZD1cIk0xMC4xMjYsNS4zMTlsLS4yMTkuNTQ0aC40MzhsLjIxOS0uNWMuMTg5LS4xMzMuMzc2LS4yNjguNTY4LS40bC40MzguMTQ5Ljg3NS41OTQuNDM4LS40LS40ODItLjItLjIxOS0uNDQ2LS44MzEtLjEtLjA0NC0uMjQ4LS4zOTQuMS0uMTc1LjM0Ni0uMjE5LS40NDYtLjA4Ny4yLjA0NC41LS4zNS4zXCIgc3R5bGU9XCJmaWxsOiMyMDRhODc7ZmlsbC1vcGFjaXR5OjAuNzEzNDUwMzEyNjE0NDQwOVwiLz48cGF0aCBkPVwiTTExLjcsNC4wODFsLjIxOS0uMi40MzgtLjFhNi45LDYuOSwwLDAsMSwuOTE4LS4zNDdsLS4xNzQtLjMtLjU2NS4wODEtLjI2Ny4yNjYtLjQ0LjA2NC0uMzkxLjE4NC0uMTkuMDkyLS4xMTYuMTU1LjU2OC4xXCIgc3R5bGU9XCJmaWxsOiMyMDRhODc7ZmlsbC1vcGFjaXR5OjAuNzEzNDUwMzEyNjE0NDQwOVwiLz48cGF0aCBkPVwiTTEyLjQ0NCw4Ljc4NWwuMjYzLS40LS4zOTQtLjMuMTMxLjY5M1wiIHN0eWxlPVwiZmlsbDojMjA0YTg3O2ZpbGwtb3BhY2l0eTowLjcxMzQ1MDMxMjYxNDQ0MDlcIi8+PHBhdGggZD1cIk0xNi4xNDksMjUuNzgzQTExLjU4LDExLjU4LDAsMSwxLDI3LjcyOSwxNC4yLDExLjU5MywxMS41OTMsMCwwLDEsMTYuMTQ5LDI1Ljc4M1ptMC0yMi41NDhBMTAuOTY4LDEwLjk2OCwwLDEsMCwyNy4xMTcsMTQuMiwxMC45OCwxMC45OCwwLDAsMCwxNi4xNDksMy4yMzVaXCIgc3R5bGU9XCJvcGFjaXR5OjAuMzk1NjA0NDAxODI2ODU4NTtpc29sYXRpb246aXNvbGF0ZTtmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk01LjU0MSwxMC4yNDFhNC4xMTUsNC4xMTUsMCwxLDAsNi42MzYtNC44NjZoMEE0LjExNSw0LjExNSwwLDAsMCw1LjU0LDEwLjI0WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2MpXCIvPjxwYXRoIGQ9XCJNNy44MzYsOC41NThhMS4yNjgsMS4yNjgsMCwxLDAsMi4wNDYtMS41aDBhMS4yNjgsMS4yNjgsMCwwLDAtMi4wNDYsMS41WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTcuOTUyLDI0LjhhNS4zMzcsNS4zMzcsMCwxLDAsOC42MDctNi4zMTJ2MEE1LjMzNyw1LjMzNywwLDAsMCwxNy45NSwyNC44WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2QpXCIvPjxwYXRoIGQ9XCJNMjAuOTI4LDIyLjYxNmExLjY0NSwxLjY0NSwwLDEsMCwyLjY1My0xLjk0NmgwYTEuNjQ1LDEuNjQ1LDAsMCwwLTIuNjUzLDEuOTQ2WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNNC44NTksMTguNDkzQTQuMTE1LDQuMTE1LDAsMSwwLDExLjUsMTMuNjI2aDBhNC4xMTUsNC4xMTUsMCwwLDAtNi42MzYsNC44NjZaXCIgc3R5bGU9XCJmaWxsOnVybCgjZSlcIi8+PHBhdGggZD1cIk03LjE1NCwxNi44MDlhMS4yNjgsMS4yNjgsMCwxLDAsMi4wNDYtMS41aDBhMS4yNjgsMS4yNjgsMCwwLDAtMi4wNDYsMS41WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTIuNDA4LDEwLjI2OUE0LjQ0MSw0LjQ0MSwwLDEsMCwxOS41Nyw1LjAxNmgwYTQuNDQxLDQuNDQxLDAsMSwwLTcuMTYyLDUuMjUzWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2YpXCIvPjxwYXRoIGQ9XCJNMTQuODg1LDguNDUyYTEuMzY5LDEuMzY5LDAsMSwwLDIuMjA4LTEuNjE5aDBhMS4zNjksMS4zNjksMCwxLDAtMi4yMDgsMS42MTlaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xMi42OCwyNi4yMzhhMy44MywzLjgzLDAsMCwxLTIuOTA5LTEuMDg3Yy0xLjEzMy0xLjIxLTEuMi0zLjI1NS0uMi01Ljc1N2EyMS41NDIsMjEuNTQyLDAsMCwxLDUuMzA3LTcuMzI2QzIwLjA2NCw3LjIxNSwyNS45NDUsNS4zNTYsMjguMjcsNy44MzljMS4xMzMsMS4yMTEsMS4yLDMuMjU1LjIsNS43NTdhMjEuNTUzLDIxLjU1MywwLDAsMS01LjMwOCw3LjMyNkEyMS41NTEsMjEuNTUxLDAsMCwxLDE1LjUsMjUuNzMzLDkuMjI5LDkuMjI5LDAsMCwxLDEyLjY4LDI2LjIzOFpNMjUuMzQyLDcuMjhjLTIuNywwLTYuNiwxLjkwOC0xMC4xLDUuMTgzQTIxLDIxLDAsMCwwLDEwLjA3MSwxOS42Yy0uOTIxLDIuMy0uODg3LDQuMTM4LjA5NCw1LjE4N3MyLjgxNywxLjIsNS4xNjkuNDM3YTIxLDIxLDAsMCwwLDcuNDYtNC42OTIsMjEsMjEsMCwwLDAsNS4xNzUtNy4xMzJjLjkyMS0yLjMuODg4LTQuMTM4LS4wOTUtNS4xODdBMy4zNCwzLjM0LDAsMCwwLDI1LjM0Miw3LjI4WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2cpXCIvPjxwYXRoIGQ9XCJNMjEuNjgxLDIyLjA5NGEyMC42MzMsMjAuNjMzLDAsMCwxLTkuMzM5LTIuNzU5QzYuMSwxNS45NSwyLjQ3MywxMC45NTcsNC4wOTQsNy45NjhjLjc5LTEuNDU4LDIuNy0yLjE3NSw1LjQtMi4wMTJBMjEuNTQyLDIxLjU0MiwwLDAsMSwxOC4xMiw4LjY3NGEyMS41NDUsMjEuNTQ1LDAsMCwxLDYuOTg3LDUuNzQ2YzEuNiwyLjE2NywyLjA1MSw0LjE2MywxLjI2MSw1LjYyMUMyNS42MjIsMjEuNDE2LDIzLjkxNSwyMi4wOTQsMjEuNjgxLDIyLjA5NFpNOC43NTksNi40NzRjLTIuMSwwLTMuNTcyLjYxMi00LjE5LDEuNzUxQzMuMTE3LDEwLjksNi43MiwxNS42NzQsMTIuNiwxOC44NnMxMS44NDMsMy42LDEzLjI5NC45MjRjLjY4NS0xLjI2My4yNTEtMy4wNTQtMS4yMi01LjA0MmEyMSwyMSwwLDAsMC02LjgxLTUuNTkzQTIxLDIxLDAsMCwwLDkuNDU5LDYuNVE5LjEsNi40NzQsOC43NTksNi40NzRaXCIgc3R5bGU9XCJmaWxsOnVybCgjaClcIi8+PHBhdGggZD1cIk0xMCwyNC4wNzhhMy43NTcsMy43NTcsMCwwLDEtMi44NTEtMS4wNjVjLTEuMTEtMS4xODctMS4xODEtMy4xODktLjItNS42MzlhMjEuMDYyLDIxLjA2MiwwLDAsMSw1LjE4OS03LjE2M2M1LjA3My00Ljc0NywxMC44My02LjU2MywxMy4xLTQuMTMyaDBjMi4yNzUsMi40MzEuMDgzLDguMDUzLTQuOTksMTIuOGEyMS4wNTksMjEuMDU5LDAsMCwxLTcuNDkxLDQuN0E5LjAyNCw5LjAyNCwwLDAsMSwxMCwyNC4wNzhaTTIyLjM3Myw1LjU1M2MtMi42MywwLTYuNDM5LDEuODY0LTkuODU2LDUuMDYyQTIwLjUsMjAuNSwwLDAsMCw3LjQ2MywxNy41OGMtLjksMi4yMzktLjg2Niw0LjAzNC4wOSw1LjA1NXMyLjc0NSwxLjE3Miw1LjAzOC40MjRhMjAuNTEzLDIwLjUxMywwLDAsMCw3LjI4NC00LjU4MmM0Ljc2Ni00LjQ2LDYuOTk0LTkuODUzLDQuOTY1LTEyLjAyaDBBMy4yNTYsMy4yNTYsMCwwLDAsMjIuMzczLDUuNTUzWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2kpXCIvPjxwYXRoIGQ9XCJNMTcuNTEyLDE5LjQxM2MtLjg2LDAtMS43NDgtLjA0My0yLjY1OS0uMTMzQzcuNzg0LDE4LjU4NCwyLjUwNywxNS4zODgsMi44NCwxMmgwYy4zMzMtMy4zODMsNi4xMzMtNS40OSwxMy4yLTQuNzkxczEyLjM0NSwzLjg5MiwxMi4wMTIsNy4yNzVDMjcuNzYzLDE3LjQzNiwyMy4zMjQsMTkuNDEzLDE3LjUxMiwxOS40MTNaTTMuMzc4LDEyLjA1N2MtLjMsMy4wMzEsNC44NzMsNi4wMywxMS41MjgsNi42ODZzMTIuMzEyLTEuMjc3LDEyLjYxMS00LjMwOFMyMi42NDQsOC40MDYsMTUuOTg4LDcuNzUsMy42NzcsOS4wMjcsMy4zNzgsMTIuMDU3WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2opXCIvPjxwYXRoIGQ9XCJNNi4yNTEsMjkuOTY2aDYuNjc0VjIwLjgwOWgyLjk4MUw5LjU0OCwxMS40MzQsMy4yOTUsMjAuNzgybDIuOTU4LjAzMVpcIiBzdHlsZT1cImZpbGw6dXJsKCNrKVwiLz48cGF0aCBkPVwiTTEyLjkyNCwzMC4wNDVINi4yNTFhLjA0OS4wNDksMCwwLDEtLjAzOS0uMDIzYy0uMDEtLjAxNS0uMDE2LTMuMTM1LS4wMTYtMy4xNTZsMC01Ljk3NS0yLjktLjAzYS4wNi4wNiwwLDAsMS0uMDUxLS4wNDguMS4xLDAsMCwxLC4wMTEtLjA4NUw5LjUwOCwxMS4zOGEuMDU2LjA1NiwwLDAsMSwuMDQxLS4wMjUuMDUuMDUsMCwwLDEsLjA0LjAyNGw2LjM1Nyw5LjM3NWEuMS4xLDAsMCwxLC4wMTEuMDg2LjA1OS4wNTksMCwwLDEtLjA1MS4wNDhIMTIuOTh2OS4wNzhDMTIuOTgsMzAuMDEsMTIuOTU1LDMwLjA0NSwxMi45MjQsMzAuMDQ1Wm0tNi42MTgtLjE1OGg2LjU2MlYyMC44MDljMC0uMDQ0LjAyNS0uMDc5LjA1Ni0uMDc5aDIuODVMOS41NDksMTEuNTQ5LDMuNDI0LDIwLjdsMi44My4wM2MuMDMxLDAsLjA1NS4wMzYuMDU1LjA3OVpcIiBzdHlsZT1cImZpbGw6IzE4Mzg2OFwiLz48cGF0aCBkPVwiTTE5LjA1MywyMC41ODdsLTIuOTU4LjAzMSw2LjI1NCw5LjM0OCw2LjM1Ny05LjM3NUgyNS43MjRWMTEuNDM0SDE5LjA1MVpcIiBzdHlsZT1cImZpbGw6dXJsKCNsKVwiLz48cGF0aCBkPVwiTTI1Ljc4LDExLjQzNHY5LjA3OGgyLjkyNWEuMDU5LjA1OSwwLDAsMSwuMDUxLjA0OC4xLjEsMCwwLDEtLjAxMS4wODZsLTYuMzU3LDkuMzc1YS4wNS4wNSwwLDAsMS0uMDQuMDI0LjA1Ni4wNTYsMCwwLDEtLjA0MS0uMDI1bC02LjI1NC05LjM0OGEuMS4xLDAsMCwxLS4wMTEtLjA4NS4wNi4wNiwwLDAsMSwuMDUxLS4wNDhsMi45LS4wMywwLTUuOTc1YzAtLjAyMS4wMDYtMy4xNDEuMDE2LTMuMTU2YS4wNDkuMDQ5LDAsMCwxLC4wMzktLjAyM2g2LjY3NEMyNS43NTUsMTEuMzU1LDI1Ljc4LDExLjM5LDI1Ljc4LDExLjQzNFptLTYuNjcyLDkuMTUzYzAsLjA0My0uMDI1LjA3OS0uMDU1LjA3OWwtMi44My4wMyw2LjEyNSw5LjE1Niw2LjIyNi05LjE4MWgtMi44NWMtLjAzMSwwLS4wNTYtLjAzNS0uMDU2LS4wNzlWMTEuNTEzSDE5LjEwN1pcIiBzdHlsZT1cImZpbGw6IzE4Mzg2OFwiLz5gLFxuICBcIklkcmlzXCI6IGA8cGF0aCBkPVwiTTEzLjM3Niw2LjJjMy42LDEuMSw0LjUsMiw1LjgsNS4yLS4zLTQtMS45LTUuNi01LjgtNS4yWlwiIHN0eWxlPVwiZmlsbDojOGEwODE5XCIvPjxwYXRoIGQ9XCJNOC4zNzYsMTIuNGMyLjMuNyw1LDEuMyw2LDUuNy40LTUuNS0yLjItNS44LTYtNS43WlwiIHN0eWxlPVwiZmlsbDojOGEwODE5XCIvPjxwYXRoIGQ9XCJNOS45NzYsOC44YzMuNS43LDUuNywxLjcsNyw2LjIuMy01LjgtMi45LTYuNC03LTYuMlpcIiBzdHlsZT1cImZpbGw6IzhhMDgxOVwiLz48cGF0aCBkPVwiTTE0LjU3NiwyYzE5LjEsMTIuNC00LjIsMTIuNy44LDI3LjFsMywuOWMtOC4zLTExLjIsMTguNC0xNy0zLjgtMjhaXCIgc3R5bGU9XCJmaWxsOiM4YTA4MTlcIi8+YCxcbiAgXCJJbmlcIjogYDxwYXRoIGQ9XCJNMjMuMjY1LDI0LjM4MWwuOS0uODk0YzQuMTY0LjEzNiw0LjIyOC0uMDEsNC40MTEtLjQzOGwxLjE0NC0yLjc4NUwyOS44MDUsMjBsLS4wOTMtLjIzMWMtLjA0OS0uMTIyLS4yLS40ODYtMi44LTIuOTY1VjE1LjVjMy0yLjg5LDIuOTM2LTMuMDM4LDIuNzY1LTMuNDYxTDI4LjUzOCw5LjIyNWMtLjE3MS0uNDIyLS4yMzYtLjU4Ny00LjM3LS40NzRsLS45LS45M2EyMC4xNjYsMjAuMTY2LDAsMCwwLS4xNDEtNC4xMDZsLS4xMTYtLjI2My0yLjk3NC0xLjNjLS40MzgtLjItLjU5Mi0uMjcyLTMuNCwyLjc4NmwtMS4yNjItLjAxOWMtMi44OTEtMy4wODYtMy4wMjgtMy4wMy0zLjQ2MS0yLjg1NUw5LjE0OSwzLjE4MmMtLjQzMy4xNzUtLjU4Ni4yMzctLjQxOCw0LjQzN2wtLjg5My44OWMtNC4xNjItLjEzNi00LjIyNi4wMTItNC40MDcuNDM4TDIuMjg1LDExLjczMywyLjE5NSwxMmwuMDk0LjIzMmMuMDQ5LjEyLjE5NC40OCwyLjgsMi45NjJsMCwxLjNjLTMsMi44OS0yLjkzNSwzLjAzOC0yLjc2MywzLjQ2MmwxLjEzOCwyLjgxN2MuMTc0LjQzMS4yMzYuNTg0LDQuMzY5LjQ3NmwuOS45MzVhMjAuMjQzLDIwLjI0MywwLDAsMCwuMTM3LDQuMWwuMTE2LjI2NSwyLjk5MywxLjMwOGMuNDM1LjE4Mi41ODYuMjQ3LDMuMzg2LTIuOGwxLjI2Mi4wMTZjMi44OTUsMy4wOSwzLjA0MywzLjAzLDMuNDY2LDIuODU5bDIuNzU5LTEuMTE1QzIzLjI4OCwyOC42NDQsMjMuNDQsMjguNTgzLDIzLjI2NSwyNC4zODFaTTExLjQwNywxNy44NTdhNC45NTcsNC45NTcsMCwxLDEsNi40ODgsMi44MjRBNS4wMTQsNS4wMTQsMCwwLDEsMTEuNDA3LDE3Ljg1N1pcIiBzdHlsZT1cImZpbGw6Izk5YjhjNFwiLz5gLFxuICBcIklvXCI6IGA8cGF0aCBkPVwiTTIsMi44ODdINy4wNzVWNy41MUgyWm0uMDUyLDYuODNINy4wNFYyOC42MjZIMi4wNTJaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+PHBhdGggZD1cIk0xMy4yNzEsMjYuNDU0YTkuNzkxLDkuNzkxLDAsMCwxLTIuNjE2LTcuMTc4LDEwLjE0OCwxMC4xNDgsMCwwLDEsMi42MTYtNy4zNDMsOS4zMjEsOS4zMjEsMCwwLDEsNy4wNDctMi43Miw5LjM0LDkuMzQsMCwwLDEsNy4wNzUsMi43MkExMC4xNjgsMTAuMTY4LDAsMCwxLDMwLDE5LjI3NmE5LjgwOSw5LjgwOSwwLDAsMS0yLjYwNyw3LjE3OCw5LjQ1Niw5LjQ1NiwwLDAsMS03LjA3NSwyLjY1OUE5LjQzNiw5LjQzNiwwLDAsMSwxMy4yNzEsMjYuNDU0Wm0xMC40MzYtMi45NzJhNi43LDYuNywwLDAsMCwxLjE2Ni00LjI1OCw2Ljk0Myw2Ljk0MywwLDAsMC0xLjE2Ni00LjM1NCw0LjA0Nyw0LjA0NywwLDAsMC0zLjM4OS0xLjQ4Niw0LjAyMiw0LjAyMiwwLDAsMC0zLjM4LDEuNDg2LDYuOTkxLDYuOTkxLDAsMCwwLTEuMTU2LDQuMzU0LDYuNzQ0LDYuNzQ0LDAsMCwwLDEuMTU2LDQuMjU4LDQuMDUzLDQuMDUzLDAsMCwwLDMuMzgsMS40NkE0LjA3OCw0LjA3OCwwLDAsMCwyMy43MDcsMjMuNDgyWlwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPmAsXG4gIFwiSmF2YVwiOiBgPHBhdGggZD1cIk0xMi4zMjUsMjMuNjU0cy0xLjA3LjYyMi43NjEuODMzYTE2LjAyMywxNi4wMjMsMCwwLDAsNS44LS4yNDYsMTAuMDg4LDEwLjA4OCwwLDAsMCwxLjU0MS43NTJjLTUuNDgxLDIuMzQ5LTEyLjQwNS0uMTM2LTguMS0xLjMzOVwiIHN0eWxlPVwiZmlsbDojNTM4MmExXCIvPjxwYXRoIGQ9XCJNMTEuNjU2LDIwLjU4OHMtMS4yLjg4OC42MzMsMS4wNzhhMjIuNjE4LDIyLjYxOCwwLDAsMCw3LjQ4MS0uMzU5LDMuMzIsMy4zMiwwLDAsMCwxLjE1Mi43Yy02LjYyNywxLjkzOC0xNC4wMDkuMTUzLTkuMjY2LTEuNDIxXCIgc3R5bGU9XCJmaWxsOiM1MzgyYTFcIi8+PHBhdGggZD1cIk0xNy4zLDE1LjM4OGEyLjA1MSwyLjA1MSwwLDAsMS0uMzU1LDIuOTU0czMuNDI5LTEuNzcsMS44NTQtMy45ODdjLTEuNDcxLTIuMDY3LTIuNi0zLjA5NSwzLjUwOC02LjYzNiwwLDAtOS41ODYsMi4zOTQtNS4wMDcsNy42NjlcIiBzdHlsZT1cImZpbGw6IzUzODJhMVwiLz48cGF0aCBkPVwiTTI0LjU1MiwyNS45MjFzLjc5Mi42NTItLjg3MiwxLjE1N2MtMy4xNjQuOTU4LTEzLjE2OCwxLjI0OC0xNS45NDguMDM4LTEtLjQzNS44NzQtMS4wMzgsMS40NjQtMS4xNjRhMy44LDMuOCwwLDAsMSwuOTY2LS4xMDhjLTEuMTExLS43ODMtNy4xODEsMS41MzctMy4wODMsMi4yLDExLjE3NiwxLjgxMiwyMC4zNzItLjgxNiwxNy40NzMtMi4xMjRcIiBzdHlsZT1cImZpbGw6IzUzODJhMVwiLz48cGF0aCBkPVwiTTEyLjg0LDE3LjQxMnMtNS4wODksMS4yMDktMS44LDEuNjQ4YTM4LjIyNSwzOC4yMjUsMCwwLDAsNi43MzEtLjA3MmMyLjEwNi0uMTc4LDQuMjIxLS41NTUsNC4yMjEtLjU1NWE4LjkzNCw4LjkzNCwwLDAsMC0xLjI4LjY4NWMtNS4xNjgsMS4zNTktMTUuMTUxLjcyNy0xMi4yNzctLjY2M2E5LjYyOSw5LjYyOSwwLDAsMSw0LjQwNy0xLjA0MlwiIHN0eWxlPVwiZmlsbDojNTM4MmExXCIvPjxwYXRoIGQ9XCJNMjEuOTY5LDIyLjUxNWM1LjI1My0yLjczLDIuODI0LTUuMzUzLDEuMTI5LTVhMy45MzIsMy45MzIsMCwwLDAtLjYuMTYxLjk1Ny45NTcsMCwwLDEsLjQ0OS0uMzQ2YzMuMzU0LTEuMTc5LDUuOTMzLDMuNDc4LTEuMDgzLDUuMzIyYS40NTguNDU4LDAsMCwwLC4xMDYtLjEzOFwiIHN0eWxlPVwiZmlsbDojNTM4MmExXCIvPjxwYXRoIGQ9XCJNMTguOCwyczIuOTA5LDIuOTEtMi43NTksNy4zODZjLTQuNTQ2LDMuNTktMS4wMzcsNS42MzcsMCw3Ljk3NS0yLjY1My0yLjM5NC00LjYtNC41LTMuMjk0LTYuNDYzQzE0LjY2NCw4LjAxOSwxOS45NzYsNi42MjMsMTguOCwyXCIgc3R5bGU9XCJmaWxsOiM1MzgyYTFcIi8+PHBhdGggZD1cIk0xMy4zNTYsMjkuOTEyYzUuMDQyLjMyMywxMi43ODYtLjE3OSwxMi45NjktMi41NjUsMCwwLS4zNTMuOS00LjE2NywxLjYyM2E0MS40NTgsNDEuNDU4LDAsMCwxLTEyLjc2LjJzLjY0NS41MzMsMy45NTkuNzQ2XCIgc3R5bGU9XCJmaWxsOiM1MzgyYTFcIi8+YCxcbiAgXCJKYXZhU2NyaXB0XCI6IGA8cmVjdCB4PVwiMlwiIHk9XCIyXCIgd2lkdGg9XCIyOFwiIGhlaWdodD1cIjI4XCIgc3R5bGU9XCJmaWxsOiNmNWRlMTlcIi8+PHBhdGggZD1cIk0yMC44MDksMjMuODc1YTIuODY2LDIuODY2LDAsMCwwLDIuNiwxLjZjMS4wOSwwLDEuNzg3LS41NDUsMS43ODctMS4zLDAtLjktLjcxNi0xLjIyMi0xLjkxNi0xLjc0N2wtLjY1OC0uMjgyYy0xLjktLjgwOS0zLjE2LTEuODIyLTMuMTYtMy45NjQsMC0xLjk3MywxLjUtMy40NzYsMy44NTMtMy40NzZhMy44ODksMy44ODksMCwwLDEsMy43NDIsMi4xMDdMMjUsMTguMTI4QTEuNzg5LDEuNzg5LDAsMCwwLDIzLjMxMSwxN2ExLjE0NSwxLjE0NSwwLDAsMC0xLjI1OSwxLjEyOGMwLC43ODkuNDg5LDEuMTA5LDEuNjE4LDEuNmwuNjU4LjI4MmMyLjIzNi45NTksMy41LDEuOTM2LDMuNSw0LjEzMywwLDIuMzY5LTEuODYxLDMuNjY3LTQuMzYsMy42NjdhNS4wNTUsNS4wNTUsMCwwLDEtNC43OTUtMi42OTFabS05LjI5NS4yMjhjLjQxMy43MzMuNzg5LDEuMzUzLDEuNjkzLDEuMzUzLjg2NCwwLDEuNDEtLjMzOCwxLjQxLTEuNjUzVjE0Ljg1NmgyLjYzMXY4Ljk4MmMwLDIuNzI0LTEuNiwzLjk2NC0zLjkyOSwzLjk2NGE0LjA4NSw0LjA4NSwwLDAsMS0zLjk0Ny0yLjRaXCIvPmAsXG4gIFwiSlNPTlwiOiBgPHBhdGggZD1cIk00LjAxNCwxNC45NzZhMi41MSwyLjUxLDAsMCwwLDEuNTY3LS41MThBMi4zNzcsMi4zNzcsMCwwLDAsNi4zODYsMTMuMSwxNS4yNjEsMTUuMjYxLDAsMCwwLDYuNiwxMC4xNTZxLjAxMi0yLjA4NS4wNzUtMi43NDdhNS4yMzYsNS4yMzYsMCwwLDEsLjQxOC0xLjY4NiwzLjAyNSwzLjAyNSwwLDAsMSwuNzU1LTEuMDE4QTMuMDQ2LDMuMDQ2LDAsMCwxLDksNC4xMjUsNi43NjIsNi43NjIsMCwwLDEsMTAuNTQ0LDRoLjdWNS45NmgtLjM4N2EyLjMzOCwyLjMzOCwwLDAsMC0xLjcyMy40NjhBMy40LDMuNCwwLDAsMCw4LjcwOSw4LjUyYTM2LjA1NCwzNi4wNTQsMCwwLDEtLjEzNyw0LjEzMyw0LjczNCw0LjczNCwwLDAsMS0uNzY4LDIuMDZBNC41NjcsNC41NjcsMCwwLDEsNi4xLDE2YTMuODA5LDMuODA5LDAsMCwxLDEuOTkyLDEuNzU0LDguODYxLDguODYxLDAsMCwxLC42MTgsMy44NjVxMCwyLjQzNS4wNSwyLjlBMS43NTUsMS43NTUsMCwwLDAsOS4yNjQsMjUuN2EyLjYzOSwyLjYzOSwwLDAsMCwxLjU5Mi4zMzdoLjM4N1YyOGgtLjdhNS42NTUsNS42NTUsMCwwLDEtMS43NzMtLjIsMi45NywyLjk3LDAsMCwxLTEuMzI0LS45MywzLjM1MywzLjM1MywwLDAsMS0uNjgxLTEuNjNBMjQuMTc1LDI0LjE3NSwwLDAsMSw2LjYsMjIuMDA2LDE2LjQ2OSwxNi40NjksMCwwLDAsNi4zODYsMTguOWEyLjQwOCwyLjQwOCwwLDAsMC0uODA1LTEuMzYxLDIuNDg5LDIuNDg5LDAsMCwwLTEuNTY3LS41MjRaXCIgc3R5bGU9XCJmaWxsOiNmNWRlMTlcIi8+PHBhdGggZD1cIk0yNy45ODYsMTcuMDExYTIuNDg5LDIuNDg5LDAsMCwwLTEuNTY3LjUyNCwyLjQwOCwyLjQwOCwwLDAsMC0uODA1LDEuMzYxLDE2LjQ2OSwxNi40NjksMCwwLDAtLjIxMiwzLjEwOSwyNC4xNzUsMjQuMTc1LDAsMCwxLS4xNjksMy4yMzQsMy4zNTMsMy4zNTMsMCwwLDEtLjY4MSwxLjYzLDIuOTcsMi45NywwLDAsMS0xLjMyNC45Myw1LjY1NSw1LjY1NSwwLDAsMS0xLjc3My4yaC0uN1YyNi4wNGguMzg3YTIuNjM5LDIuNjM5LDAsMCwwLDEuNTkyLS4zMzcsMS43NTUsMS43NTUsMCwwLDAsLjUwNi0xLjE4NnEuMDUtLjQ2Mi4wNS0yLjlhOC44NjEsOC44NjEsMCwwLDEsLjYxOC0zLjg2NUEzLjgwOSwzLjgwOSwwLDAsMSwyNS45LDE2YTQuNTY3LDQuNTY3LDAsMCwxLTEuNy0xLjI4Niw0LjczNCw0LjczNCwwLDAsMS0uNzY4LTIuMDYsMzYuMDU0LDM2LjA1NCwwLDAsMS0uMTM3LTQuMTMzLDMuNCwzLjQsMCwwLDAtLjQyNS0yLjA5MiwyLjMzOCwyLjMzOCwwLDAsMC0xLjcyMy0uNDY4aC0uMzg3VjRoLjdBNi43NjIsNi43NjIsMCwwLDEsMjMsNC4xMjVhMy4wNDYsMy4wNDYsMCwwLDEsMS4xNDkuNTgxLDMuMDI1LDMuMDI1LDAsMCwxLC43NTUsMS4wMTgsNS4yMzYsNS4yMzYsMCwwLDEsLjQxOCwxLjY4NnEuMDYyLjY2Mi4wNzUsMi43NDdhMTUuMjYxLDE1LjI2MSwwLDAsMCwuMjEyLDIuOTQ3LDIuMzc3LDIuMzc3LDAsMCwwLC44MDUsMS4zNTUsMi41MSwyLjUxLDAsMCwwLDEuNTY3LjUxOFpcIiBzdHlsZT1cImZpbGw6I2Y1ZGUxOVwiLz5gLFxuICBcIkpTT041XCI6IGA8cGF0aCBkPVwiTTEyLjgxNSwxNS4xNjdsLjY4LTUuNjc2aDYuNDg5djJoLTQuNEwxNS4zMjksMTMuN2EyLjQsMi40LDAsMCwxLC4yNTItLjEyMiwyLjk2MiwyLjk2MiwwLDAsMSwuMzc0LS4xMywyLjksMi45LDAsMCwxLC40NTgtLjEwNiwyLjgzNCwyLjgzNCwwLDAsMSwuNTEyLS4wNDYsMy45ODMsMy45ODMsMCwwLDEsMS40NjYuMjUyLDIuNzM2LDIuNzM2LDAsMCwxLDEuMDc2LjcyMywzLjE2NywzLjE2NywwLDAsMSwuNjY0LDEuMTY4LDUsNSwwLDAsMSwuMjI4LDEuNTg4LDQuMTU3LDQuMTU3LDAsMCwxLS4yMzYsMS4zODcsMy4zMDcsMy4zMDcsMCwwLDEtMS45LDIuMDI5LDQuMyw0LjMsMCwwLDEtMS43MTUuMzEyLDQuNzUsNC43NSwwLDAsMS0xLjQ1OC0uMjI4LDQuMDU0LDQuMDU0LDAsMCwxLTEuMjUyLS42NTYsMy4zNTksMy4zNTksMCwwLDEtLjg3OC0xLjA0NiwyLjc4NywyLjc4NywwLDAsMS0uMzItMS4zODJIMTUuMThhMS40NTgsMS40NTgsMCwwLDAsLjM5Ljk3LDEuMzgzLDEuMzgzLDAsMCwwLDEuNTU4LjIwNiwxLjA4OSwxLjA4OSwwLDAsMCwuNC0uNDEyLDEuNzQ5LDEuNzQ5LDAsMCwwLC4yMDYtLjYxOCw0LjMsNC4zLDAsMCwwLC4wNjItLjc0LDIuNzA5LDIuNzA5LDAsMCwwLS4wOTItLjc0LDEuNTA2LDEuNTA2LDAsMCwwLS4yODItLjU1OCwxLjIyOSwxLjIyOSwwLDAsMC0uNS0uMzQ5LDEuNzgsMS43OCwwLDAsMC0uNzE4LS4xMywyLjEyMSwyLjEyMSwwLDAsMC0uNS4wNTQsMS44MDUsMS44MDUsMCwwLDAtLjM4Mi4xMzgsMS4zMTgsMS4zMTgsMCwwLDAtLjI3NC4xOSwxLjI4LDEuMjgsMCwwLDAtLjE5LjJsLTIuMDQ4LS40ODJcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTUuOTg1LDIzLjM0M2E0LjQ1LDQuNDUsMCwwLDEtMS4zMTEtLjU4LDMuMiwzLjIsMCwwLDEtLjg0OC0uODI0LDMuMDEyLDMuMDEyLDAsMCwxLS40NTgtMS4wMDgsNC44NzksNC44NzksMCwwLDEtLjEzLTEuMTQzdi0xLjU1YTIuMywyLjMsMCwwLDAtLjA3Ni0uNjE4LDEuMTg0LDEuMTg0LDAsMCwwLS4yMjItLjQ2Ni45NjkuOTY5LDAsMCwwLS4zODItLjMwNkExLjMyNCwxLjMyNCwwLDAsMCwyLDE2Ljc0NFYxNS4wMTJhMS4wNzQsMS4wNzQsMCwwLDAsLjkzNy0uNCwxLjg0MSwxLjg0MSwwLDAsMCwuMy0xLjF2LTEuNTVhNC44NzksNC44NzksMCwwLDEsLjEzLTEuMTQzLDMuMDM3LDMuMDM3LDAsMCwxLC40NTgtMS4wMDhBMy4xNywzLjE3LDAsMCwxLDQuNjcxLDlhNC40ODIsNC40ODIsMCwwLDEsMS4zMTEtLjU4bC40OCwxLjM0NGExLjIyMiwxLjIyMiwwLDAsMC0uNDg4LjMyOCwxLjc0MiwxLjc0MiwwLDAsMC0uMzA2LjUsMi41MjQsMi41MjQsMCwwLDAtLjE2LjYzNCw1LjgyNyw1LjgyNywwLDAsMC0uMDQ2Ljc0djEuNTVBMi44NDQsMi44NDQsMCwwLDEsNS4xMjYsMTQuOWEyLjM3LDIuMzcsMCwwLDEtMS4wNzYuOTgzLDIuMzU2LDIuMzU2LDAsMCwxLDEuMDc2Ljk5MiwyLjgwOCwyLjgwOCwwLDAsMSwuMzM2LDEuMzc0djEuNTVhNS44MjcsNS44MjcsMCwwLDAsLjA0Ni43NCwyLjU4NiwyLjU4NiwwLDAsMCwuMTYuNjM0LDEuNjg0LDEuNjg0LDAsMCwwLC4zMDYuNUExLjIyMiwxLjIyMiwwLDAsMCw2LjQ2MiwyMmMwLS4wMDUtLjQ3NywxLjM0NC0uNDc3LDEuMzQ0XCIgc3R5bGU9XCJmaWxsOiM5OTlcIi8+PHBhdGggZD1cIk04LjIxNSwxOS4zOTNhMS4yODksMS4yODksMCwwLDEsLjEtLjUxMiwxLjIxMiwxLjIxMiwwLDAsMSwuMjktLjQsMS4zNzMsMS4zNzMsMCwwLDEsLjQ1LS4yNzQsMS42MzcsMS42MzcsMCwwLDEsLjU4LS4xLDEuNTU1LDEuNTU1LDAsMCwxLC41NzIuMSwxLjI2OSwxLjI2OSwwLDAsMSwuNDUuMjc0LDEuMDc3LDEuMDc3LDAsMCwxLC4yOS40LDEuMjk0LDEuMjk0LDAsMCwxLDAsMS4wMjQsMS4xNTEsMS4xNTEsMCwwLDEtLjI5LjQxMiwxLjM4OCwxLjM4OCwwLDAsMS0uNDUuMjY4LDEuNjEzLDEuNjEzLDAsMCwxLS41NzIuMSwxLjU3OCwxLjU3OCwwLDAsMS0uNTgtLjEsMS40MDksMS40MDksMCwwLDEtLjQ1LS4yNjgsMS4yMjksMS4yMjksMCwwLDEtLjM5LS45MjRtMC02LjA4OGExLjI4OSwxLjI4OSwwLDAsMSwuMS0uNTEyLDEuMjEyLDEuMjEyLDAsMCwxLC4yOS0uNCwxLjM3MywxLjM3MywwLDAsMSwuNDUtLjI3NCwxLjYzNywxLjYzNywwLDAsMSwuNTgtLjEsMS41NTUsMS41NTUsMCwwLDEsLjU3Mi4xLDEuMjY5LDEuMjY5LDAsMCwxLC40NS4yNzQsMS4wNzcsMS4wNzcsMCwwLDEsLjI5LjQsMS4yOTQsMS4yOTQsMCwwLDEsMCwxLjAyNCwxLjE1MSwxLjE1MSwwLDAsMS0uMjkuNDEyLDEuMzg4LDEuMzg4LDAsMCwxLS40NS4yNjgsMS42MTMsMS42MTMsMCwwLDEtLjU3Mi4xLDEuNTc4LDEuNTc4LDAsMCwxLS41OC0uMSwxLjQwOSwxLjQwOSwwLDAsMS0uNDUtLjI2OCwxLjIyOSwxLjIyOSwwLDAsMS0uMzktLjkyNFwiIHN0eWxlPVwiZmlsbDojOTk5XCIvPjxwYXRoIGQ9XCJNMjQuMjQsMjAuMjkzYTMuNjQ4LDMuNjQ4LDAsMCwxLS4xMjIuOTI5LDQuNTM0LDQuNTM0LDAsMCwxLS4zMzYuODkxLDQuNzA2LDQuNzA2LDAsMCwxLS41LjgwNyw0LjAwNSw0LjAwNSwwLDAsMS0uNjEuNjY0bC0xLjMtLjYxYy4wODEtLjE3My4xNjgtLjM0OS4yNi0uNTI2YTQuODQ2LDQuODQ2LDAsMCwwLC4yNjgtLjU1OCw0LjQ0Myw0LjQ0MywwLDAsMCwuMjA2LS42NTYsMy40MDYsMy40MDYsMCwwLDAsLjA4NC0uOFYxOC42NTZoMi4wNTlsLS4wMDgsMS42MzZcIiBzdHlsZT1cImZpbGw6Izk5OVwiLz48cGF0aCBkPVwiTTI1LjUzOCwyMS45OTRhMS4yNTEsMS4yNTEsMCwwLDAsLjQ4OC0uMzI4LDEuNzA3LDEuNzA3LDAsMCwwLC4zMDYtLjUsMi41MjUsMi41MjUsMCwwLDAsLjE2LS42MzQsNS44MjYsNS44MjYsMCwwLDAsLjA0Ni0uNzR2LTEuNTVhMi44NDQsMi44NDQsMCwwLDEsLjMzNi0xLjM4MiwyLjM2NCwyLjM2NCwwLDAsMSwxLjA4NC0uOTgzLDIuMzY0LDIuMzY0LDAsMCwxLTEuMDg0LS45ODMsMi44NDQsMi44NDQsMCwwLDEtLjMzNi0xLjM4MnYtMS41NWE1LjgyNyw1LjgyNywwLDAsMC0uMDQ2LS43NCwyLjU4NiwyLjU4NiwwLDAsMC0uMTYtLjYzNCwxLjY4NCwxLjY4NCwwLDAsMC0uMzA2LS41LDEuMjIyLDEuMjIyLDAsMCwwLS40ODgtLjMyOGwuNDgtMS4zMzhBNC40NSw0LjQ1LDAsMCwxLDI3LjMyOSw5YTMuMDkyLDMuMDkyLDAsMCwxLC44NDguODE1LDIuODkyLDIuODkyLDAsMCwxLC40NSwxLjAwOCw0LjYwNiw0LjYwNiwwLDAsMSwuMTM4LDEuMTQzdjEuNTVhMi42NTUsMi42NTUsMCwwLDAsLjA2OC42MjYsMS40NDgsMS40NDgsMCwwLDAsLjIyMi40NzQsMS4wMzcsMS4wMzcsMCwwLDAsLjM4Mi4zLDEuMzc2LDEuMzc2LDAsMCwwLC41NjQuMTA2djEuNzMxYTEuMDc3LDEuMDc3LDAsMCwwLS45NDYuNDEyLDEuODI4LDEuODI4LDAsMCwwLS4yOSwxLjA4NHYxLjU1YTQuNjA2LDQuNjA2LDAsMCwxLS4xMzgsMS4xNDMsMi45MTUsMi45MTUsMCwwLDEtLjQ1LDEuMDA4LDMuMTU3LDMuMTU3LDAsMCwxLS44NDguODI0LDQuNDgyLDQuNDgyLDAsMCwxLTEuMzExLjU4bC0uNDgtMS4zNTJcIiBzdHlsZT1cImZpbGw6Izk5OVwiLz5gLFxuICBcIkp1bGlhXCI6IGA8cGF0aCBkPVwiTTcuNDQ4LDIxLjk4M1YxMy43NzVsLTIuNDMyLjY2OXY4LjcyOWEyLjY2LDIuNjYsMCwwLDEtLjEwNi45MjkuMzM2LjMzNiwwLDAsMS0uMzA4LjIzOS40MDUuNDA1LDAsMCwxLS4yMTItLjA3NCwxLjI4MiwxLjI4MiwwLDAsMS0uMjg3LS4zLDIuODEzLDIuODEzLDAsMCwwLS4zNzctLjQwOS44NzQuODc0LDAsMCwwLS42MTEtLjIwNywxLjIyLDEuMjIsMCwwLDAtLjgxMi4yNTUuNzg5Ljc4OSwwLDAsMC0uMy42MjdBLjkwNy45MDcsMCwwLDAsMi41NDIsMjVhMy4xMTUsMy4xMTUsMCwwLDAsMS41NjEuMzE5LDcuMDY1LDcuMDY1LDAsMCwwLDEuMzctLjEyMiwyLjM2MSwyLjM2MSwwLDAsMCwxLjA1Ny0uNDgzLDIuMjkyLDIuMjkyLDAsMCwwLC42OC0xLjAxNCw1LjA5NCw1LjA5NCwwLDAsMCwuMjM5LTEuNzE1WlwiIHN0eWxlPVwiZmlsbDojMjUyNTI1XCIvPjxwYXRoIGQ9XCJNMTAuODI1LDE0LjAwOEg4LjR2NS42MThhMi4yNDEsMi4yNDEsMCwwLDAsLjIxOC45NzcsMi40ODksMi40ODksMCwwLDAsLjYuOCwyLjksMi45LDAsMCwwLC44OTIuNTM2LDMuMDQ1LDMuMDQ1LDAsMCwwLDEuMS4yLDIuNTUsMi41NSwwLDAsMCwxLjA1MS0uMjQ0LDQuMzQ3LDQuMzQ3LDAsMCwwLDEuMDE5LS42NDh2Ljc0M0gxNS43MVYxNC4wMDhIMTMuMjg5djUuNzU2YTIuNzY0LDIuNzY0LDAsMCwxLS42NDguNzA2LDEuMTM5LDEuMTM5LDAsMCwxLS42NDguMjgxLDEuMTU1LDEuMTU1LDAsMCwxLS40NTctLjA5LDEuMjYzLDEuMjYzLDAsMCwxLS4zNzItLjIzOSwxLjA2LDEuMDYsMCwwLDEtLjI1LS4zNTYsMS4wOTEsMS4wOTEsMCwwLDEtLjA5LS40NDFaXCIgc3R5bGU9XCJmaWxsOiMyNTI1MjVcIi8+PHBhdGggZD1cIk0xOS4wNzQsMjEuOTgzVjEwLjEzMmwtMi40MTEuNjY5VjIxLjk4M1pcIiBzdHlsZT1cImZpbGw6IzI1MjUyNVwiLz48cGF0aCBkPVwiTTIwLjAzOCwxNC40NDR2Ny41NGgyLjQyMVYxMy43NzVaXCIgc3R5bGU9XCJmaWxsOiMyNTI1MjVcIi8+PHBhdGggZD1cIk0yNy41NjgsMTcuODYzdjIuM3EtLjM3Mi4yNzYtLjY3NC40NTdhMS4xNjUsMS4xNjUsMCwwLDEtLjYuMTgxLjQ2OC40NjgsMCwwLDEtLjI3Ni0uMDksMSwxLDAsMCwxLS4yMzQtLjIzOSwxLjEzOCwxLjEzOCwwLDAsMS0uMTY1LS4zNTYsMS41NzYsMS41NzYsMCwwLDEtLjA1OC0uNDMuOTY4Ljk2OCwwLDAsMSwuMTgxLS41NTIsMi4zMDYsMi4zMDYsMCwwLDEsLjQ3My0uNSw0LjU3Miw0LjU3MiwwLDAsMSwuNjQ4LS40Myw3LjYxMiw3LjYxMiwwLDAsMSwuNzA2LS4zNDVaTTMwLDIxLjk4M1YxNmEyLjA4MywyLjA4MywwLDAsMC0uMTkxLS45LDEuNzc5LDEuNzc5LDAsMCwwLS41OTUtLjY5LDMuMDA2LDMuMDA2LDAsMCwwLTEuMDI1LS40NDEsNi4yMjUsNi4yMjUsMCwwLDAtMS40ODEtLjE1NCw1LjczNSw1LjczNSwwLDAsMC0xLjMyNy4xNDksNC42LDQuNiwwLDAsMC0xLjEuNCwyLjM3MywyLjM3MywwLDAsMC0uNzU5LjYxMSwxLjIxNiwxLjIxNiwwLDAsMC0uMjgxLjc3Ljk1OC45NTgsMCwwLDAsLjMxOS43MzgsMS4xNzgsMS4xNzgsMCwwLDAsLjgyOC4yOTIsMS4zNjQsMS4zNjQsMCwwLDAsLjU0Ny0uMS44LjgsMCwwLDAsLjMzNS0uMjU1Ljk4Ni45ODYsMCwwLDAsLjE2NS0uMzcyLDEuOTc4LDEuOTc4LDAsMCwwLC4wNDgtLjQzNSwxLjAzMSwxLjAzMSwwLDAsMSwuMjIzLS42NjkuOTc1Ljk3NSwwLDAsMSwuOC0uMjc2LDEuMDA4LDEuMDA4LDAsMCwxLC43ODEuMzE5LDEuNTk0LDEuNTk0LDAsMCwxLC4yOTIsMS4wODN2Ljc4NmwtLjI2NS4wNjRxLS40ODguMTQ5LS45ODguMzEzdC0uOTYxLjM2MWE3Ljg4NCw3Ljg4NCwwLDAsMC0uODY1LjQzLDMuNTExLDMuNTExLDAsMCwwLS43MDYuNTMxLDIuMzE5LDIuMzE5LDAsMCwwLS40NzguNjY5LDEuOTE4LDEuOTE4LDAsMCwwLS4xNzUuODI4LDIuMDM0LDIuMDM0LDAsMCwwLC4xNjUuODIzLDEuODc2LDEuODc2LDAsMCwwLC40NzMuNjUzLDIuMjU1LDIuMjU1LDAsMCwwLC43NDkuNDM1LDIuOTA3LDIuOTA3LDAsMCwwLC45OTMuMTU5LDMuNjc5LDMuNjc5LDAsMCwwLC43LS4wNTgsMi41MDksMi41MDksMCwwLDAsLjUzNi0uMTY1LDIuMjA5LDIuMjA5LDAsMCwwLC40My0uMjVxLjE5MS0uMTQzLjM5My0uMzEzdi42MzdaXCIgc3R5bGU9XCJmaWxsOiMyNTI1MjVcIi8+PGNpcmNsZSBjeD1cIjYuMjA0XCIgY3k9XCIxMS42NzJcIiByPVwiMS41XCIgc3R5bGU9XCJmaWxsOiM2NjgyZGZcIi8+PHBhdGggZD1cIk02LjIsMTMuMjg3YTEuNjE1LDEuNjE1LDAsMSwxLDEuNjE1LTEuNjE1QTEuNjE3LDEuNjE3LDAsMCwxLDYuMiwxMy4yODdabTAtM2ExLjM4NSwxLjM4NSwwLDEsMCwxLjM4NSwxLjM4NUExLjM4NiwxLjM4NiwwLDAsMCw2LjIsMTAuMjg3WlwiIHN0eWxlPVwiZmlsbDojNDA2M2Q4XCIvPjxjaXJjbGUgY3g9XCIyMS40MTdcIiBjeT1cIjExLjY3MlwiIHI9XCIxLjVcIiBzdHlsZT1cImZpbGw6I2Q1NjM1Y1wiLz48cGF0aCBkPVwiTTIxLjQxNywxMy4yODdhMS42MTUsMS42MTUsMCwxLDEsMS42MTUtMS42MTVBMS42MTcsMS42MTcsMCwwLDEsMjEuNDE3LDEzLjI4N1ptMC0zQTEuMzg1LDEuMzg1LDAsMSwwLDIyLjgsMTEuNjcyLDEuMzg2LDEuMzg2LDAsMCwwLDIxLjQxNywxMC4yODdaXCIgc3R5bGU9XCJmaWxsOiNjYjNjMzNcIi8+PGNpcmNsZSBjeD1cIjIzLjM4NVwiIGN5PVwiOC4yOTdcIiByPVwiMS41XCIgc3R5bGU9XCJmaWxsOiM2MGFkNTFcIi8+PHBhdGggZD1cIk0yMy4zODUsOS45MTJBMS42MTUsMS42MTUsMCwxLDEsMjUsOC4zLDEuNjE3LDEuNjE3LDAsMCwxLDIzLjM4NSw5LjkxMlptMC0zQTEuMzg1LDEuMzg1LDAsMSwwLDI0Ljc3LDguMywxLjM4NiwxLjM4NiwwLDAsMCwyMy4zODUsNi45MTJaXCIgc3R5bGU9XCJmaWxsOiMzODk4MjZcIi8+PGNpcmNsZSBjeD1cIjI1LjM1NFwiIGN5PVwiMTEuNjcyXCIgcj1cIjEuNVwiIHN0eWxlPVwiZmlsbDojYWE3OWMxXCIvPjxwYXRoIGQ9XCJNMjUuMzU0LDEzLjI4N2ExLjYxNSwxLjYxNSwwLDEsMSwxLjYxNS0xLjYxNUExLjYxNywxLjYxNywwLDAsMSwyNS4zNTQsMTMuMjg3Wm0wLTNhMS4zODUsMS4zODUsMCwxLDAsMS4zODUsMS4zODVBMS4zODYsMS4zODYsMCwwLDAsMjUuMzU0LDEwLjI4N1pcIiBzdHlsZT1cImZpbGw6Izk1NThiMlwiLz5gLFxuICBcIktvdGxpblwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMzExLjMzNlwiIHkxPVwiMTQ1Mi4wNjRcIiB4Mj1cIjI4My4zNDJcIiB5Mj1cIjE0ODAuMDU4XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTI4MS40IC0xNDUwKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2U0NDg1N1wiLz48c3RvcCBvZmZzZXQ9XCIwLjQ3XCIgc3RvcC1jb2xvcj1cIiM5ZDRiOWRcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjNmQ1ZmFhXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfa290bGluPC90aXRsZT48cGF0aCBkPVwiTTMwLDMwSDJWMkgzMEwxNiwxNlpcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz5gLFxuICBcIkt1c3RvXCI6IGA8cmVjdCB4PVwiMC41NVwiIHk9XCIyMi4zMzlcIiB3aWR0aD1cIjE1LjQzM1wiIGhlaWdodD1cIjIuNzk2XCIgcng9XCIwLjQzOVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMTQuMzYzIDEyLjc5Nykgcm90YXRlKC00NC45OTkpXCIgc3R5bGU9XCJmaWxsOiNiOGQ0MzJcIi8+PHJlY3QgeD1cIjEuMzcyXCIgeT1cIjE2LjM4MlwiIHdpZHRoPVwiOS44NTlcIiBoZWlnaHQ9XCIyLjc5NlwiIHJ4PVwiMC40MzlcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTEwLjcyNyA5LjY2Mykgcm90YXRlKC00NC45OTkpXCIgc3R5bGU9XCJmaWxsOiNiOGQ0MzJcIi8+PHJlY3QgeD1cIjkuMjMyXCIgeT1cIjI0LjMwMVwiIHdpZHRoPVwiOS44NTlcIiBoZWlnaHQ9XCIyLjc5NlwiIHJ4PVwiMC40MzlcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTE0LjAyNCAxNy41NDEpIHJvdGF0ZSgtNDQuOTk5KVwiIHN0eWxlPVwiZmlsbDojYjhkNDMyXCIvPjxwb2x5Z29uIHBvaW50cz1cIjMwIDIgMiAyIDMwIDI5Ljk5OSAzMCAyXCIgc3R5bGU9XCJmaWxsOiMwMDc4ZDRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTAuMjgyIDEwLjI4MiAyMS43MTggMjEuNzE4IDMwIDEzLjQzNiAzMCAyIDE4LjU2NCAyIDEwLjI4MiAxMC4yODJcIiBzdHlsZT1cImZpbGw6IzU5YjRkOVwiLz48cG9seWdvbiBwb2ludHM9XCIzMCAyOS45OTkgMzAgMiAxNiAxNiAzMCAyOS45OTlcIiBzdHlsZT1cImZpbGw6I2ZmZjtvcGFjaXR5OjAuMjAwMDAwMDAyOTgwMjMyMjQ7aXNvbGF0aW9uOmlzb2xhdGVcIi8+PHJlY3QgeD1cIjE2LjIyNlwiIHk9XCI5LjAwMVwiIHdpZHRoPVwiMi43OTZcIiBoZWlnaHQ9XCIyLjc5NlwiIHJ4PVwiMC42MjJcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTIuMTkyIDE1LjUwNykgcm90YXRlKC00NC45OTkpXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHJlY3QgeD1cIjIwLjE4XCIgeT1cIjUuMDQ4XCIgd2lkdGg9XCIyLjc5NlwiIGhlaWdodD1cIjIuNzk2XCIgcng9XCIwLjYyMlwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxLjc2MiAxNy4xNDYpIHJvdGF0ZSgtNDQuOTk5KVwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxyZWN0IHg9XCIyMC4xOFwiIHk9XCIxMi45NTVcIiB3aWR0aD1cIjIuNzk2XCIgaGVpZ2h0PVwiMi43OTZcIiByeD1cIjAuNjIyXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0zLjgyOSAxOS40NjEpIHJvdGF0ZSgtNDQuOTk5KVwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxyZWN0IHg9XCIyNC4xMzNcIiB5PVwiOS4wMDJcIiB3aWR0aD1cIjIuNzk2XCIgaGVpZ2h0PVwiMi43OTZcIiByeD1cIjAuNjIyXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuMTI0IDIxLjA5OSkgcm90YXRlKC00NC45OTkpXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcbiAgXCJMYVRlWFwiOiBgPHBhdGggZD1cIk0xMS4zMzMsMTMuMTIyYy0uMTI4LTEuNTYyLS4yNDEtMi43NTYtMi4yODctMi43NTZINy45MXY4LjRoMi4xNDV2LjYxMWwtMy4wODMtLjAyOS0zLjA4Mi4wMjl2LS42MTFINi4wMzR2LTguNEg0Ljg4NGMtMi4wNDYsMC0yLjE1OSwxLjIwOC0yLjI4NywyLjc1NkgybC4yODQtMy4zNjdoOS4zNjJsLjI4NCwzLjM2N2gtLjZaXCIgc3R5bGU9XCJmaWxsOiNjZmNmY2ZcIi8+PHBhdGggZD1cIk0xOS4yODksMjIuNTNIMTAuNDFWMjEuOTJoMS41MDZWMTMuNDY3SDEwLjQxdi0uNjExaDguNjM3bC40MTIsMy4zNjdoLS42Yy0uMjEzLTEuODMzLS42ODItMi43NTYtMi44NTUtMi43NTZIMTMuNzkxVjE3LjJoLjgzOGMxLjM2NCwwLDEuNTA1LS42LDEuNTA1LTEuNjYyaC42djMuOTM1aC0uNmMwLTEuMDgtLjE0Mi0xLjY2Mi0xLjUwNS0xLjY2MmgtLjgzOHY0LjEwNmgyLjIxNmMyLjQ3MiwwLDMtMS4xMDgsMy4zLTMuMjI1aC42WlwiIHN0eWxlPVwiZmlsbDojY2ZjZmNmXCIvPjxwYXRoIGQ9XCJNMjcuNzI3LDE5LjE4NmMtLjU0LDAtMS45NiwwLTIuNDE1LjAyOVYxOC42aDEuMTc5bC0yLjU1Ny0zLjU1Mi0yLjUyOSwzLjM4MUE0LjEsNC4xLDAsMCwwLDIyLjcsMTguNnYuNjExYy0uMzU1LS4wMjktMS41NzYtLjAyOS0yLjAxNy0uMDI5LS40LDAtMS41NDgsMC0xLjg3NS4wMjlWMTguNmguMzgzYTcuNDU5LDcuNDU5LDAsMCwwLC44MjQtLjA0M2MuNS0uMDQzLjU0LS4wODUuNjY3LS4yNTZMMjMuNTM2LDE0LjVsLTMuMTUzLTQuNDE4SDE5VjkuNDdjLjM4NC4wMjgsMS43OS4wMjgsMi4yNzMuMDI4LjU4MiwwLDEuOTE4LDAsMi40MjktLjAyOHYuNjExSDIyLjUyOGwyLjExNywyLjk1NSwyLjA3NC0yLjc4NGE0LjEsNC4xLDAsMCwwLTEuMjkzLS4xN1Y5LjQ3Yy4zNTYuMDI4LDEuNTkxLjAyOCwyLjAzMi4wMjguNCwwLDEuNTM0LDAsMS44NjEtLjAyOHYuNjExaC0uMzY5YTUuMjY0LDUuMjY0LDAsMCwwLS44MzguMDQzYy0uNDY5LjA0My0uNTI2LjA3MS0uNjY3LjI1NmwtMi40LDMuMjFMMjguNjM2LDE4LjZIMzB2LjYxMUMyOS42NDUsMTkuMTg2LDI4LjE4MiwxOS4xODYsMjcuNzI3LDE5LjE4NlpcIiBzdHlsZT1cImZpbGw6I2NmY2ZjZlwiLz5gLFxuICBcIkxlc3NcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIi0zLjYwOVwiIHkxPVwiLTQ5Mi42ODVcIiB4Mj1cIi0zLjYwOVwiIHkyPVwiLTQ4MC4yNzFcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxOS43MTIgNTAyLjg5MSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwLjE1XCIgc3RvcC1jb2xvcj1cIiMyYTRmODRcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zODhcIiBzdG9wLWNvbG9yPVwiIzI5NGU4MlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMxNzJlNGVcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9sZXNzPC90aXRsZT48cGF0aCBkPVwiTTI4LjU1OSwyMC4yMjZhMi40LDIuNCwwLDAsMS0yLjM5NCwyLjM5NEg2LjA0YTIuNCwyLjQsMCwwLDEtMi4zOTQtMi4zOTRWMTIuNkEyLjQsMi40LDAsMCwxLDYuMDQsMTAuMjA2SDI2LjE2NUEyLjQsMi40LDAsMCwxLDI4LjU1OSwxMi42WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMjQuMzQ5LDE2LjI1YTEuOTcyLDEuOTcyLDAsMCwxLDEuNTc4LDEuODkxLDEuNjksMS42OSwwLDAsMS0uNjUzLDEuNCwyLjkzNCwyLjkzNCwwLDAsMS0xLjg2Mi41NTksNC41NTgsNC41NTgsMCwwLDEtMi4yNDEtLjYxOCwxLjk4NiwxLjk4NiwwLDAsMSwuMTYtLjY2OSwxLjgzLDEuODMsMCwwLDEsLjM1LS41NzYsMy43LDMuNywwLDAsMCwxLjY0OS40OTMuOTY1Ljk2NSwwLDAsMCwuNTEtLjExMi4zMzkuMzM5LDAsMCwwLC4xNzgtLjNxMC0uMzUzLS41NDYtLjUyOWwtLjY1My0uMjQ3cS0xLjQ4Mi0uNTQtMS40ODItMS43NjJhMS43NTMsMS43NTMsMCwwLDEsLjYyMy0xLjQxNiwyLjU4NywyLjU4NywwLDAsMSwxLjY3OC0uNjQ4LDUuMDk0LDUuMDk0LDAsMCwxLDEuMTUuMTQ3LDQuNTU1LDQuNTU1LDAsMCwxLDEuMDMyLjQ3MiwxLjY2OCwxLjY2OCwwLDAsMS0uMTMuNzIyLDEuMjIsMS4yMiwwLDAsMS0uMzguNTU4LDQuMjYxLDQuMjYxLDAsMCwwLTEuNjYtLjQ0Ni41NDQuNTQ0LDAsMCwwLS4zNjIuMTA2LjMzOC4zMzgsMCwwLDAtLjEyNC4yN3EwLC4yODIuNDUxLjQ0NmwuNzM2LjI1OVpcIiBzdHlsZT1cImZpbGw6I2Y2ZjZmNlwiLz48cGF0aCBkPVwiTTE5LjEsMTYuMjVhMS45NzIsMS45NzIsMCwwLDEsMS41NzcsMS44OTEsMS42OTEsMS42OTEsMCwwLDEtLjY1MiwxLjQsMi45MzcsMi45MzcsMCwwLDEtMS44NjIuNTU5LDQuNTYsNC41NiwwLDAsMS0yLjI0MS0uNjE4LDEuOTgxLDEuOTgxLDAsMCwxLC4xNi0uNjY5LDEuODIxLDEuODIxLDAsMCwxLC4zNS0uNTc2LDMuNywzLjcsMCwwLDAsMS42NDkuNDkzLjk2My45NjMsMCwwLDAsLjUxLS4xMTIuMzQuMzQsMCwwLDAsLjE3OC0uM3EwLS4zNTMtLjU0Ni0uNTI5bC0uNjUzLS4yNDdxLTEuNDgyLS41NC0xLjQ4Mi0xLjc2MmExLjc1MiwxLjc1MiwwLDAsMSwuNjIzLTEuNDE2LDIuNTg1LDIuNTg1LDAsMCwxLDEuNjc3LS42NDgsNS4wODgsNS4wODgsMCwwLDEsMS4xNS4xNDcsNC41NTIsNC41NTIsMCwwLDEsMS4wMzIuNDcyLDEuNjY4LDEuNjY4LDAsMCwxLS4xMy43MjIsMS4yMiwxLjIyLDAsMCwxLS4zOC41NTgsNC4yNjMsNC4yNjMsMCwwLDAtMS42NjEtLjQ0Ni41NDMuNTQzLDAsMCwwLS4zNjIuMTA2LjMzOS4zMzksMCwwLDAtLjEyNC4yN3EwLC4yODIuNDUxLjQ0NmwuNzM2LjI1OVpcIiBzdHlsZT1cImZpbGw6I2Y2ZjZmNlwiLz48cGF0aCBkPVwiTTE1LjI2NCwxNi4zMzNhMi44MjIsMi44MjIsMCwwLDAtLjE3Mi0xLDIuMjM5LDIuMjM5LDAsMCwwLS40OTItLjc4NywyLjI4LDIuMjgsMCwwLDAtLjc3Ny0uNTE3LDIuNzM3LDIuNzM3LDAsMCwwLTEuMDI2LS4zMTQsMi44LDIuOCwwLDAsMC0xLjE4LjM2MSwyLjI1NiwyLjI1NiwwLDAsMC0uODMuNjQ2LDIuNzY1LDIuNzY1LDAsMCwwLS40ODcuOTY5LDQuNCw0LjQsMCwwLDAtLjE2LDEuMjE2LDUuNjgxLDUuNjgxLDAsMCwwLC4xMywxLjI1NywyLjYyOCwyLjYyOCwwLDAsMCwuNDQ1LDEsMi4xMDcsMi4xMDcsMCwwLDAsLjgxOC42NTcsMi45MzUsMi45MzUsMCwwLDAsMS4yNTEuMjc3LDMuOTUyLDMuOTUyLDAsMCwwLDIuMzI0LS43MTIsMS44NjUsMS44NjUsMCwwLDAtLjQ4NC0xLjA4MSw2LjE4OCw2LjE4OCwwLDAsMS0uODU3LjI2MiwzLjIwOCwzLjIwOCwwLDAsMS0uNjU2LjA3OSwxLjAxNywxLjAxNywwLDAsMS0uODE1LS4yOSwxLjE4NywxLjE4NywwLDAsMS0uMjcxLS43N2gzLjA4M0E0LjQ0Nyw0LjQ0NywwLDAsMCwxNS4yNjQsMTYuMzMzWm0tMy4yNDguMDgxYTIuNDMzLDIuNDMzLDAsMCwxLC4yMTgtMSwuNjMyLjYzMiwwLDAsMSwuNTU5LS4yNjQuNjYuNjYsMCwwLDEsLjU4Mi4yODIsMS43NDksMS43NDksMCwwLDEsLjE5NC44NTZ2LjEzSDEyLjAxNlpcIiBzdHlsZT1cImZpbGw6I2Y2ZjZmNlwiLz48cGF0aCBkPVwiTTI5LjE4LDE3LjJhMS42MDUsMS42MDUsMCwwLDAtLjUzLDEuMjY1djIuMDUxYTEuODEsMS44MSwwLDAsMS0uNjgzLDEuNTU3LDIuOCwyLjgsMCwwLDEtMS42NTQuNTQ5bC0uMzczLDBWMjEuNTk0YTEuMjQxLDEuMjQxLDAsMCwwLC41OTUtLjMzNCwxLjM2OSwxLjM2OSwwLDAsMCwuNDE5LTEuMDQ3VjE4LjU1NmEyLjU0NSwyLjU0NSwwLDAsMSwuMjU3LTEuMzIzLDIuNSwyLjUsMCwwLDEsMS4yLS44MzgsMi41MjgsMi41MjgsMCwwLDEtMS4zMjQtMS4xNzksMi45NTYsMi45NTYsMCwwLDEtLjEzNS0xLjE2NVYxMi41MzNhMS40NTgsMS40NTgsMCwwLDAtLjM2Ni0xLjA1NCwxLjE1MiwxLjE1MiwwLDAsMC0uNjQ4LS4zMTR2LS45NmMuNDQ1LDAsLjY2OSwwLC45MjgsMGExLjY3NiwxLjY3NiwwLDAsMSwxLjAyMy40NDIsMiwyLDAsMCwxLC42NzMsMS4wMDksMi4zMywyLjMzLDAsMCwxLC4wODYuN3YxLjc1N2ExLjg0NiwxLjg0NiwwLDAsMCwuNSwxLjM4MywyLjExMywyLjExMywwLDAsMCwuODU0LjQ3OXYuNzk0YTEuOTQzLDEuOTQzLDAsMCwwLS44Mi40MjZaXCIgc3R5bGU9XCJmaWxsOiNmNmY2ZjY7c3Ryb2tlOiM0MDQwNDA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjVweFwiLz48cGF0aCBkPVwiTTUuNTk0LDEwLjIwNkg1LjI2YTEuNjczLDEuNjczLDAsMCwwLTEuMDIzLjQ0MiwxLjcxLDEuNzEsMCwwLDAtLjY3MywxLjAwOSwzLjUzMSwzLjUzMSwwLDAsMC0uMDM4Ljd2MS43NTdBMS44NjcsMS44NjcsMCwwLDEsMi45ODEsMTUuNSwyLjg0NywyLjg0NywwLDAsMSwyLDE1Ljk3N3YuNzkzYTIuNTUyLDIuNTUyLDAsMCwxLC45NDcuNDI2LDEuNjM4LDEuNjM4LDAsMCwxLC41NzcsMS4yNjV2Mi4wNTFBMS43ODEsMS43ODEsMCwwLDAsNC4xNiwyMi4wN2EyLjgsMi44LDAsMCwwLDEuNjU0LjU1bC40MjEsMFYyMS41OTRhMS40NywxLjQ3LDAsMCwxLS42NDMtLjMzNCwxLjM1NSwxLjM1NSwwLDAsMS0uMzcxLTEuMDQ3VjE4LjU1N2EyLjUxNiwyLjUxNiwwLDAsMC0uMzA1LTEuMzIzLDIuNSwyLjUsMCwwLDAtMS4yLS44MzgsMi41MjksMi41MjksMCwwLDAsMS4zMjQtMS4xNzgsMi44NTcsMi44NTcsMCwwLDAsLjE4My0xLjE2NVYxMi41MzRBMS40NjIsMS40NjIsMCwwLDEsNS41NCwxMS40OGExLjMxMywxLjMxMywwLDAsMSwuNTc1LS4yNzFsLjQyOCwwVjEwLjIwNkg1LjU5NFpcIiBzdHlsZT1cImZpbGw6I2Y2ZjZmNjtzdHJva2U6IzQwNDA0MDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yNXB4XCIvPjxwYXRoIGQ9XCJNOS41MzcsMTguNTI5aC0uMzJjLS4zNDgsMC0uNDc5LS4xODMtLjQ3OS0uNTUxVjExLjIxOWExLjI1NiwxLjI1NiwwLDAsMC0uMjY4LS44NTZjLS4xNS0uMTY0LS40MTEtLjE2Mi0uNzgzLS4xNjJINi45NjRsLS4wODUsMHY4LjEwNmExLjg3NSwxLjg3NSwwLDAsMCwuMzUyLDEuMjQsMS40NDEsMS40NDEsMCwwLDAsMS4xNDUuMzkzLDcuODU5LDcuODU5LDAsMCwwLDEuMjY5LS4xMTgsMi4yMywyLjIzLDAsMCwwLC4wMzYtLjUwOSwyLjI3OCwyLjI3OCwwLDAsMC0uMTQyLS43ODJaXCIgc3R5bGU9XCJmaWxsOiNmNmY2ZjZcIi8+YCxcbiAgXCJMaXF1aWRcIjogYDxwYXRoIGQ9XCJNMjkuOTg4LDIyLjM3MmwtLjc0OC4wNDhhNS4yMDksNS4yMDksMCwwLDEtMi45OS0uNjcxLDcuOCw3LjgsMCwwLDAtNy44LDAsNS4yNzUsNS4yNzUsMCwwLDEtNS4zLjAxQTcuMjYyLDcuMjYyLDAsMCwwLDkuMjYzLDIwLjdhNy4yMjksNy4yMjksMCwwLDAtMy45NCwxLjA2LDQuNzUxLDQuNzUxLDAsMCwxLTIuNDcuN2wtLjgzOCwwYzAsLjg4OS0uMDA5LDEuNzM5LS4wMTUsMi41MTVsLjg2MSwwYTcuMjM3LDcuMjM3LDAsMCwwLDMuNzUtMS4wNTIsNC43NjMsNC43NjMsMCwwLDEsMi42NTktLjcsNC44MzUsNC44MzUsMCwwLDEsMi42MzQuNzE4LDcuNzk0LDcuNzk0LDAsMCwwLDcuOCwwLDUuMjg3LDUuMjg3LDAsMCwxLDUuMzE5LDAsNy43MDksNy43MDksMCwwLDAsNC40Ljk4OUwzMCwyNC44ODhDMjkuOTk1LDI0LjEsMjkuOTkxLDIzLjI0OSwyOS45ODgsMjIuMzcyWlwiIHN0eWxlPVwiZmlsbDojMDA0OTk5XCIvPjxwYXRoIGQ9XCJNMjkuOTgzLDE1LjU4MWwtLjc0My4wNDdhNS4yMjYsNS4yMjYsMCwwLDEtMi45OS0uNjcxLDcuOCw3LjgsMCwwLDAtNy44LDAsNS4yNzgsNS4yNzgsMCwwLDEtNS4zLjAxQTcuMzEyLDcuMzEyLDAsMCwwLDkuMjYzLDEzLjkxYTcuMyw3LjMsMCwwLDAtMy45NDEsMS4wNiw0Ljc0Miw0Ljc0MiwwLDAsMS0yLjQ2OS43bC0uODI4LDBjMCwuODQ5LDAsMS42OTMsMCwyLjUxNWwuODQsMGE3LjIzNyw3LjIzNywwLDAsMCwzLjc1LTEuMDUyLDQuNyw0LjcsMCwwLDEsMi42NTktLjcsNC44LDQuOCwwLDAsMSwyLjYzNC43MTgsNy43OTQsNy43OTQsMCwwLDAsNy44LDAsNS4yODcsNS4yODcsMCwwLDEsNS4zMTksMCw3LjcwOSw3LjcwOSwwLDAsMCw0LjQuOTg5bC41NjgtLjAzN0MyOS45ODMsMTcuMjY5LDI5Ljk4MywxNi40MjQsMjkuOTgzLDE1LjU4MVpcIiBzdHlsZT1cImZpbGw6IzAwNDk5OVwiLz48cGF0aCBkPVwiTTI5LjI0LDkuMTM3YTUuMjU0LDUuMjU0LDAsMCwxLTIuOTktLjY3MSw3LjgsNy44LDAsMCwwLTcuOCwwLDUuMjc1LDUuMjc1LDAsMCwxLTUuMy4wMDlBNy4xNiw3LjE2LDAsMCwwLDkuMjYzLDcuNDJhNy4xNTksNy4xNTksMCwwLDAtMy45NCwxLjA1OSw0LjczOCw0LjczOCwwLDAsMS0yLjQ2OS43bC0uODM0LDBjMCwuODIsMCwxLjY2NCwwLDIuNTE3bC44MzYsMGE3LjIzNyw3LjIzNywwLDAsMCwzLjc1LTEuMDUyLDQuNzM4LDQuNzM4LDAsMCwxLDIuNjU5LS43MDYsNC44MTQsNC44MTQsMCwwLDEsMi42MzQuNzE5LDcuNzkxLDcuNzkxLDAsMCwwLDcuOCwwLDUuMjkzLDUuMjkzLDAsMCwxLDUuMzE5LDAsNy43MzIsNy43MzIsMCwwLDAsNC40Ljk4OGwuNTY4LS4wMzdjMC0uODU5LDAtMS43LjAwNy0yLjUxNlpcIiBzdHlsZT1cImZpbGw6IzAwNDk5OVwiLz5gLFxuICBcIkxpc3BcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjE5MjUuNzg1XCIgeTE9XCItMTM4My4wNzVcIiB4Mj1cIjIzMDIuMzUxXCIgeTI9XCItMTg2OC41NTdcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgwLjA0OCwgMCwgMCwgLTAuMDQ1LCAtODIuNTM5LCAtNTQuNjUpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjODM4MWM1XCIvPjxzdG9wIG9mZnNldD1cIjAuNTY2XCIgc3RvcC1jb2xvcj1cIiM3ZTU1YjNcIiBzdG9wLW9wYWNpdHk9XCIwLjk5NlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNhNTJlY2JcIiBzdG9wLW9wYWNpdHk9XCIwLjk5MlwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIjIyMTQuMTg3XCIgeTE9XCItMTc1MC4yMjVcIiB4Mj1cIjE5MzAuOTc0XCIgeTI9XCItMTQwOC4zNDJcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgwLjA1NCwgMCwgMCwgLTAuMDU0LCAtOTUuMTg4LCAtNjguNDg3KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzQxMWY1ZFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM1YjJhODVcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9lbWFjczwvdGl0bGU+PHBhdGggZD1cIk0yOS4zNjMsMTZBMTMuMzY0LDEzLjM2NCwwLDEsMSwxNiwyLjUsMTMuNDMyLDEzLjQzMiwwLDAsMSwyOS4zNjMsMTZaXCIgc3R5bGU9XCJzdHJva2Utd2lkdGg6MC43NXB4O2ZpbGw6dXJsKCNhKTtzdHJva2U6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTExLjQwNiwyNS40ODNhMTguMTU3LDE4LjE1NywwLDAsMCwyLjU4Ny0uMDQ4LDQxLjcyOCw0MS43MjgsMCwwLDAsNC41LS42MzksMzAuNjcxLDMwLjY3MSwwLDAsMCwzLjEzMi0uODM5YzEuMTQyLS40MjEsMS43NjQtLjc3OCwyLjA0My0xLjI4NGEuNjIuNjIsMCwwLDAtLjQ0MS0uNjkyYy0xLjM0Ny0uNTY1LTIuOTA4LS40NjMtNi0uNTI4LTMuNDI3LS4xMTgtNC41NjctLjY5MS01LjE3NC0xLjE1My0uNTgyLS40NjktLjI5LTEuNzY1LDIuMjA2LTIuOTA3YTU0LjI2Niw1NC4yNjYsMCwwLDEsNi4xODQtMS43M2MtMS42NTktLjgyLTQuNzUzLTIuMjYyLTUuMzg5LTIuNTczLS41NTgtLjI3My0xLjQ1MS0uNjg0LTEuNjQ0LTEuMTgyLS4yMTktLjQ3OC41MTgtLjg4OS45My0xLjAwN2EyMC4zLDIwLjMsMCwwLDEsNC45LS42NDcsNC4zMDgsNC4zMDgsMCwwLDAsMS0uMDY5QTEuNzY3LDEuNzY3LDAsMCwwLDIxLjg3OSw3LjlhMi43NzUsMi43NzUsMCwwLDAtMy4yODYtMS44MUMxNy4yMiw2LjMzOCwxMy45MDgsNy4zLDEzLjkwOCw3LjNjNC4wOTMtLjAzNSw0Ljc3OS4wMzMsNS4wODUuNDYxLjE4MS4yNTMtLjA4Mi42LTEuMTc0Ljc3Ny0xLjE4OS4xOTQtMy42NTkuNDI4LTMuNjU5LjQyOC0yLjM3LjE0MS00LjA0LjE1LTQuNTQsMS4yMS0uMzI3LjY5My4zNDksMS4zLjY0NSwxLjY4OGExMi43MjgsMTIuNzI4LDAsMCwwLDQuMjI1LDIuN2MuNDM4LjIwOCwxLjcyMy42LDEuNzIzLjZhMTEuNTIsMTEuNTIsMCwwLDAtOC4xLDIuMjg3Yy0xLjgwNywxLjY3Mi0xLjAwOCwzLjY2NSwyLjY5NSw0Ljg5MWExMi43NTUsMTIuNzU1LDAsMCwwLDYuNTM0Ljc3MmMxLjkyMi0uMSwyLjIyNC0uMDQyLDIuMjQ0LjExNi4wMjcuMjIyLTIuMTM0Ljc3My0yLjcyNC45NDQtMS41LjQzMy01LjQzNiwxLjMwNy01LjQ1NiwxLjMxMlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuICBcIkxpdmVTY3JpcHRcIjogYDxwb2x5Z29uIHBvaW50cz1cIjUuNTA0IDIuMDA3IDguOTg2IDIgOC45ODYgMjEuNzQ2IDEwLjc1OSAxOS45ODcgMTAuNzU5IDMuNzU1IDEyLjQ5NyAzLjc1NSAxMi40OTcgMTguMjQgMTQuMjUzIDE2LjQ4NyAxNC4yNTMgMy43NTUgMTUuOTk3IDMuNzU1IDE1Ljk5NyAxNC43MjkgMTcuNzM1IDEyLjk2MiAxNy43MzUgMy43NTUgMTkuNDYxIDMuNzU1IDE5LjQ2MSAxMS4yMjUgMjEuMjQ1IDkuNDYxIDIxLjI0NSAzLjc1NSAyMi45NzIgMy43NTUgMjIuOTcyIDcuNzIzIDI0LjczOCA1Ljk3NSAyNC43MzkgMy43NTUgMjYuNDgzIDMuNzU1IDI2LjQ4MyA1LjQ4MiAyOC4yMDkgNS40ODIgMjguMjA5IDcuMjY3IDI1LjkxMSA3LjI2OCAyNC4xODQgOC45OTMgMjguMjA5IDguOTkzIDI4LjIwOSAxMC43MTkgMjIuNDM4IDEwLjcxOSAyMC42OTggMTIuNTA0IDI4LjIwOSAxMi41MDQgMjguMjA5IDE0LjIzIDE4Ljk2MSAxNC4yMyAxNy4yMDUgMTYuMDE0IDI4LjIwOSAxNi4wMTQgMjguMjA5IDE3Ljc0MSAxNS40NTUgMTcuNzQxIDEzLjcxNSAxOS40OTYgMjguMjA5IDE5LjQ5NiAyOC4yMDkgMjEuMjUyIDExLjk4IDIxLjI1MiAxMC4yNDIgMjIuOTc4IDI5Ljk4MiAyMi45NzggMjkuOTg5IDI2LjQ4OSA4Ljk4NiAyNi40ODkgOC45ODYgMzAgNS41MDQgMzAgNS41MDQgMjYuNDg5IDIuMDExIDI2LjQ4OSAyLjAxMSAyMi45NzggNS41MDQgMjIuOTc4IDUuNTAzIDIgNS41MDQgMi4wMDdcIiBzdHlsZT1cImZpbGw6IzMxN2VhY1wiLz5gLFxuICBcIkxvZyBmaWxlXCI6IGA8cGF0aCBkPVwiTTI5LjQsMjcuNkgyLjVWNC41SDI5LjRabS0yNS45LTFIMjguNFY1LjVIMy41WlwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPjxyZWN0IHg9XCIyLjVcIiB5PVwiNS41XCIgd2lkdGg9XCIyNi45XCIgaGVpZ2h0PVwiMS45XCIgc3R5bGU9XCJmaWxsOiMwMGJkMDJcIi8+PHJlY3QgeD1cIjExLjMzM1wiIHk9XCI5LjVcIiB3aWR0aD1cIjguMTY3XCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPjxyZWN0IHg9XCIxMS4zMzNcIiB5PVwiMTIuMDgzXCIgd2lkdGg9XCIxMi41XCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPjxyZWN0IHg9XCIxMS4zMzNcIiB5PVwiMTQuNzVcIiB3aWR0aD1cIjEwLjYxN1wiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6IzAwYmQwMlwiLz48cmVjdCB4PVwiMTEuMzMzXCIgeT1cIjE3LjU4M1wiIHdpZHRoPVwiMTQuMTY3XCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPjxyZWN0IHg9XCIxMS4zMzNcIiB5PVwiMjAuNVwiIHdpZHRoPVwiOS44MzRcIiBoZWlnaHQ9XCIxXCIgc3R5bGU9XCJmaWxsOiMwMGJkMDJcIi8+PHJlY3QgeD1cIjExLjVcIiB5PVwiMjMuMDgzXCIgd2lkdGg9XCIxMi4xNjdcIiBoZWlnaHQ9XCIxXCIgc3R5bGU9XCJmaWxsOiMwMGJkMDJcIi8+PHJlY3QgeD1cIjUuNVwiIHk9XCI5LjVcIiB3aWR0aD1cIjQuMzMzXCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPjxyZWN0IHg9XCI1LjVcIiB5PVwiMTIuMDgzXCIgd2lkdGg9XCI0LjMzM1wiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6IzAwYmQwMlwiLz48cmVjdCB4PVwiNS41XCIgeT1cIjEyLjA4M1wiIHdpZHRoPVwiNC4zMzNcIiBoZWlnaHQ9XCIxXCIgc3R5bGU9XCJmaWxsOiMwMGJkMDJcIi8+PHJlY3QgeD1cIjUuNVwiIHk9XCIxNC42NjdcIiB3aWR0aD1cIjQuMzMzXCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPjxyZWN0IHg9XCI1LjVcIiB5PVwiMTcuMjVcIiB3aWR0aD1cIjQuMzMzXCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPjxyZWN0IHg9XCI1LjVcIiB5PVwiMjAuNVwiIHdpZHRoPVwiNC4zMzNcIiBoZWlnaHQ9XCIxXCIgc3R5bGU9XCJmaWxsOiMwMGJkMDJcIi8+PHJlY3QgeD1cIjUuNVwiIHk9XCIyMy4wODNcIiB3aWR0aD1cIjQuMzMzXCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPmAsXG4gIFwiTE9MQ09ERVwiOiBgPHBhdGggZD1cIk0yMS4zLDMuNzNhMy45NCwzLjk0LDAsMCwxLDEuMDQxLS42Miw4LjQzNSw4LjQzNSwwLDAsMSwuNTU2LDMuMzg1LDI0Ljg2NSwyNC44NjUsMCwwLDEtLjY0Myw1LjAxOWMtLjM2OC0uMTgtLjczNi0uMzY0LTEuMS0uNTU0YTExLjc1NCwxMS43NTQsMCwwLDAsLjI3My0zLjc0NywzLjA4LDMuMDgsMCwwLDAtLjI1NS0uODY1LDUuMTQyLDUuMTQyLDAsMCwwLTIuMDE2LDIuMDdjLS4zMTktLjI0LS42NTItLjQ1OS0uOTg1LS42NzZBMTUuNzE2LDE1LjcxNiwwLDAsMSwyMS4zLDMuNzNaXCIgc3R5bGU9XCJmaWxsOiNlZGVkZWRcIi8+PHBhdGggZD1cIk0xOS40NTEsOC42YTQuNTc0LDQuNTc0LDAsMCwxLDEuNTA5LTEuNTYzLDYuNjg1LDYuNjg1LDAsMCwxLC4wOSwyLjY3MUMyMC41MTcsOS4zNDMsMTkuOTc1LDguOTg3LDE5LjQ1MSw4LjZaXCIgc3R5bGU9XCJmaWxsOiNlZGVkZWRcIi8+PHBhdGggZD1cIk0xNi40NjEsMTAuMDc2Yy0uMDM4LTEuMTM0LS4wMzEtMi4yNjktLjAyNi0zLjQtLjkuNDkzLTEuNzU4LDEuMDcxLTIuNjQ4LDEuNTg5LS40NTMuMjctLjkwOC41MzYtMS4zNi44MDguMjI0LS4xNjMuNDU3LS4zMTIuNjktLjQ2Mi0uODYxLTEuMjI0LTEuOTcxLTIuNS0zLjUzLTIuNzQ4YTEwLjk2NCwxMC45NjQsMCwwLDAtLjM2NSw1LjE0N2MuMzE4LS4xOTUuNjMzLS40Ljk2Mi0uNTcyLS40NzQuMzE5LS45NjQuNjE1LTEuNDQ2LjkyLS45NTcuNi0xLjkyMiwxLjE5Mi0yLjg5MiwxLjc3N2ExLjIzMiwxLjIzMiwwLDAsMC0uMzkxLjMyYy0uMSwxLjM5NS0uMzQsNC4zOTItLjM0LDQuMzkyLS4yNTQsMy42NjgtLjUyMiw3LjMzNi0uODI2LDExLDQuMDYyLjM0Myw4LjExOC43NDIsMTIuMTc5LDEuMDc2QzE2LjQ1OCwyMy4zLDE2LjQ3MiwxNi42OSwxNi40NjEsMTAuMDc2WlwiIHN0eWxlPVwiZmlsbDojZWRlZGVkXCIvPjxwYXRoIGQ9XCJNMjEuMSwyLjk3N0E1Ljg4NCw1Ljg4NCwwLDAsMSwyMi43MDYsMmExMC4wNjQsMTAuMDY0LDAsMCwxLC43NzIsNC42MDYsMjQuNTkxLDI0LjU5MSwwLDAsMS0uNTA4LDQuNDU5YzEuMi44NDYsMi40MzMsMS42NDUsMy42MTgsMi41MDlxLjQ0LDYuMzguOTA3LDEyLjc1OGMuMDY2LjgzOS4wOTQsMS42OC4yMTYsMi41MTMtMy4wMjkuMjc5LTYuMDU3LjU5MS05LjA4NS44ODZhMTkuMTM3LDE5LjEzNywwLDAsMC0yLjE1OC4yN3YtLjA4M2MtLjAxLTYuNjE0LDAtMTMuMjI3LS4wMDctMTkuODQxLS4wMzgtMS4xMzQtLjAzMS0yLjI2OS0uMDI2LTMuNHYtLjFjLjQwNi4yOTIuODI2LjU2MiwxLjI0My44MzlBMTYuMjc0LDE2LjI3NCwwLDAsMSwyMS4xLDIuOTc3Wm0uMi43NTJhMTUuNzE2LDE1LjcxNiwwLDAsMC0zLjEyOCw0LjAxMWMuMzM0LjIxNy42NjYuNDM3Ljk4NS42NzZhNS4xNDIsNS4xNDIsMCwwLDEsMi4wMTYtMi4wNywzLjA4LDMuMDgsMCwwLDEsLjI1NS44NjUsMTEuNzU0LDExLjc1NCwwLDAsMS0uMjczLDMuNzQ3Yy4zNjQuMTkuNzMxLjM3NCwxLjEuNTU0YTI0Ljg2NSwyNC44NjUsMCwwLDAsLjY0My01LjAxOSw4LjQzNSw4LjQzNSwwLDAsMC0uNTU2LTMuMzg1QTMuOTQsMy45NCwwLDAsMCwyMS4zLDMuNzNaTTE5LjQ1MSw4LjZjLjUyNC4zODMsMS4wNjYuNzM5LDEuNiwxLjEwOGE2LjY4NSw2LjY4NSwwLDAsMC0uMDktMi42NzFBNC41NzQsNC41NzQsMCwwLDAsMTkuNDUxLDguNlpcIiBzdHlsZT1cImZpbGw6IzhkMjcwMVwiLz48cGF0aCBkPVwiTTkuMjE5LDUuMDYyYTMuNTgxLDMuNTgxLDAsMCwxLDIuMjA1Ljc0OEExMi45LDEyLjksMCwwLDEsMTMuNzg4LDguMjZjLS40NTMuMjctLjkwOC41MzYtMS4zNi44MDguMjI0LS4xNjMuNDU3LS4zMTIuNjktLjQ2Mi0uODYxLTEuMjI0LTEuOTcxLTIuNS0zLjUzLTIuNzQ4YTEwLjk2NCwxMC45NjQsMCwwLDAtLjM2NSw1LjE0N2MuMzE4LS4xOTUuNjMzLS40Ljk2Mi0uNTcyLS40NzQuMzE5LS45NjQuNjE1LTEuNDQ2LjkyQTE0LjEsMTQuMSwwLDAsMSw5LjIxOSw1LjA2MlpcIiBzdHlsZT1cImZpbGw6IzhkMjcwMVwiLz48cGF0aCBkPVwiTTEwLjUwNyw4LjQ3NmEyLjQ1NSwyLjQ1NSwwLDAsMSwxLjUxNy44OGwtLjM2LjJBMi42OSwyLjY5LDAsMCwwLDEwLjczOSw5YTMuMzE4LDMuMzE4LDAsMCwwLS4xNjUsMS4yODFsLS4zNDQuMTFBNy4wMjEsNy4wMjEsMCwwLDEsMTAuNTA3LDguNDc2WlwiIHN0eWxlPVwiZmlsbDojOGQyNzAxXCIvPjxwYXRoIGQ9XCJNMTIuMTM5LDEwLjY5M2EuNDg3LjQ4NywwLDAsMSwuNTQyLjAxLDEuNTUyLDEuNTUyLDAsMCwxLC4wNjIuNmMtLjAzOS43ODQuMDI0LDEuNTczLS4wNzYsMi4zNTRhMS4wMTMsMS4wMTMsMCwwLDEtMS4wMTIuODg2Yy0uMjMzLS4wNS0uMjc4LS4zNDEtLjI3OC0uNTQxLDAtLjY3NS4xLTEuMzQ3LjA2Ni0yLjAyNEExLjMsMS4zLDAsMCwxLDEyLjEzOSwxMC42OTNabS4xNSwxLjA4NGEuODkxLjg5MSwwLDAsMCwuMjUxLS44NjZDMTIuMjE4LDExLjA2MSwxMS45LDExLjUwNywxMi4yODksMTEuNzc3WlwiIHN0eWxlPVwiZmlsbDojOGQyNzAxXCIvPjxwYXRoIGQ9XCJNMTQuNSwxMy43MjhhMTcuNjcxLDE3LjY3MSwwLDAsMSwxLjkyOC0uODIyYy0uMDI0LjA2NC0uMDY5LjE5MS0uMDkyLjI1NS0uNjQ5LjM1OC0xLjM2LjYtMi4wMjEuOTM4YTEyLjExOCwxMi4xMTgsMCwwLDAtMy4yMzgsMi4yNDhBNy4yLDcuMiwwLDAsMSwxMCwxNy4zODFhNC4xNjYsNC4xNjYsMCwwLDEsLjk4LTEuMjQ2QTEyLjcyNywxMi43MjcsMCwwLDEsMTQuNSwxMy43MjhaXCIgc3R5bGU9XCJmaWxsOiM4ZDI3MDFcIi8+PHBhdGggZD1cIk03LjYyOCwxMy4yMzFhLjk4OS45ODksMCwwLDEsLjU5NC0uMTUyLDE4LjExNCwxOC4xMTQsMCwwLDEtLjEsMi42NTQuNzEzLjcxMywwLDAsMS0uODkyLjY1OCwyMS4xLDIxLjEsMCwwLDEsLjA4Mi0yLjIyNkExLjM4MywxLjM4MywwLDAsMSw3LjYyOCwxMy4yMzFabS4xNzkuODMxYy4yNjgtLjExMi4zMTktLjQxMy40MTItLjY1NEM3LjgyLDEzLjMxMiw3Ljc3NSwxMy43ODMsNy44MDcsMTQuMDYyWlwiIHN0eWxlPVwiZmlsbDojOGQyNzAxXCIvPjxwYXRoIGQ9XCJNMTAuODIzLDE3LjA5NGExMy45MzQsMTMuOTM0LDAsMCwxLDQuNjEyLTEuOTY4Yy0uMDEuMDY4LS4wMjkuMjA2LS4wMzkuMjc0YTE0LjI3MywxNC4yNzMsMCwwLDAtNC40NzUsMS45MTQsMi42MjYsMi42MjYsMCwwLDEtLjY4MS4zNDNDMTAuMywxNy4zNTYsMTAuNiwxNy4yNDksMTAuODIzLDE3LjA5NFpcIiBzdHlsZT1cImZpbGw6IzhkMjcwMVwiLz48cGF0aCBkPVwiTTUuMjY0LDE3LjU5QTUuMTQ0LDUuMTQ0LDAsMCwxLDgsMTcuMWExLjUsMS41LDAsMCwxLDEuMTQyLjY2NUE2Ljg1NCw2Ljg1NCwwLDAsMCw3LjYsMTcuMjc4YTYuOTY3LDYuOTY3LDAsMCwwLTIuNDg0LjU2NFpcIiBzdHlsZT1cImZpbGw6IzhkMjcwMVwiLz48cGF0aCBkPVwiTTEwLjU3OCwxNy43MjVhOS41OSw5LjU5LDAsMCwxLDMuNjEtLjU2NmMuMjQuMDIxLjMyMS4yLjMxMy40MjRhMy4yMzgsMy4yMzgsMCwwLDAtMS45NTYtLjA5LDIxLjY4OCwyMS42ODgsMCwwLDAtMi41NTcuNjU4QzkuOTk1LDE3LjgyOSwxMC4zNDUsMTcuODA5LDEwLjU3OCwxNy43MjVaXCIgc3R5bGU9XCJmaWxsOiM4ZDI3MDFcIi8+PHBhdGggZD1cIk05LjI2OCwxNy42NzZjLjE0OS0uMTc2LjUzMy0uMzMyLjY2NC0uMDYyYTEuMywxLjMsMCwwLDEtLjUxNi45OTNDOS4yNjgsMTguMzM3LDguOTczLDE3Ljk1Miw5LjI2OCwxNy42NzZaXCIgc3R5bGU9XCJmaWxsOiM4ZDI3MDFcIi8+PHBhdGggZD1cIk01Ljc0NCwxOC42MjlhNS45LDUuOSwwLDAsMSwzLjE4Mi0uNjE4Yy0uMTgyLjIzNS0uNDkzLjE3OC0uNzUxLjIwOGE1LjY2Myw1LjY2MywwLDAsMC0xLjcyLjMzYy0uMzQ0LjEyOC0uNjY1LjMxLTEuMDIuNDA5QS42LjYsMCwwLDEsNS43NDQsMTguNjI5WlwiIHN0eWxlPVwiZmlsbDojOGQyNzAxXCIvPjxwYXRoIGQ9XCJNNi45LDE5LjExNGE5LjY3Niw5LjY3NiwwLDAsMSwyLjItLjg1NGMtLjEuMy0uNDQxLjMzOC0uNy40NDRhNy44MzksNy44MzksMCwwLDAtMi41NjQsMS40MTVDNS45MzgsMTkuNTg0LDYuNDg4LDE5LjM2OSw2LjksMTkuMTE0WlwiIHN0eWxlPVwiZmlsbDojOGQyNzAxXCIvPjxwYXRoIGQ9XCJNMTEuNjM1LDE5LjdhMy4xMSwzLjExLDAsMCwwLDEuOTEtMS4zODNjLjM0Ny0uMS4yNzMuMjc1LjI2LjQ5NGEyLjA1NiwyLjA1NiwwLDAsMS0uOTUsMS4wMzYsMTIuMzY1LDEyLjM2NSwwLDAsMS0xLjgyNyw2LjQxOUEyLjM0MiwyLjM0MiwwLDAsMSw4Ljg3OSwyNy41YTIuMjUxLDIuMjUxLDAsMCwxLTEuNTM1LTEuNDksMTAuODk0LDEwLjg5NCwwLDAsMS0uNjktNC42NjVjLS4xNTctLjExMi0uMzY5LS4xNzktLjQ2LS4zNjItLjEzLS4yLjAxMS0uNDI1LjA0Ny0uNjMxLjE5LjE1MS4zNDUuMzkyLjYwNi40MmEzLjYxNywzLjYxNywwLDAsMCwxLjg2My0uNCwxLjU4OCwxLjU4OCwwLDAsMCwuNzA5LS42NjIsMy44ODEsMy44ODEsMCwwLDAsLjQzMS4yNjZBNC4yOCw0LjI4LDAsMCwwLDExLjYzNSwxOS43Wm0tMi4yLjgzNWE0LjEzMiw0LjEzMiwwLDAsMS0yLjQ2Mi44MDksMTEuMDQ5LDExLjA0OSwwLDAsMCwuMzU4LDMuNTI2LDMuMjI2LDMuMjI2LDAsMCwxLC45LTEuMjgyLDIuMDU1LDIuMDU1LDAsMCwxLDIuMy0uMiwyLjMsMi4zLDAsMCwxLC44ODQsMS4xNzIsMTQuNjU5LDE0LjY1OSwwLDAsMCwxLjAwNS00LjQ4OUE1LjE2Nyw1LjE2NywwLDAsMSw5LjQzNSwyMC41MzJabS0uMzI5LDMuMjZhMi4yNzMsMi4yNzMsMCwwLDAtMS41LDEuNDM0Yy0uMTIzLjI2OS4xLjUxNy4yMjUuNzM4LjMzMS40NjIuNzk1LDEsMS40MzEuODkzYTIuODY4LDIuODY4LDAsMCwwLDEuNzY5LTEuNkExLjYsMS42LDAsMCwwLDkuMTA2LDIzLjc5MlpcIiBzdHlsZT1cImZpbGw6IzhkMjcwMVwiLz5gLFxuICBcIkx1YVwiOiBgPHBhdGggZD1cIk0xNi41LDMwbC0uMDExLS4zMjFjLjQtLjAxNC44LS4wNDUsMS4xOS0uMDk0bC4wMzkuMzE5QzE3LjMxMiwyOS45NTIsMTYuOSwyOS45ODQsMTYuNSwzMFptLTEuMjIyLS4wMTFjLS40LS4wMjEtLjgxNC0uMDYxLTEuMjE2LS4xMThsLjA0NS0uMzE4Yy4zOTMuMDU1Ljc5My4wOTQsMS4xODguMTE1Wk0xOC45MiwyOS43bC0uMDY3LS4zMTRjLjM4Ny0uMDgzLjc3Ni0uMTg0LDEuMTU1LS4zbC4wOTQuMzA3QzE5LjcxNCwyOS41MTEsMTkuMzE2LDI5LjYxNSwxOC45MiwyOS43Wm0tNi4wNjMtLjA1M2MtLjQtLjA5MS0uNzkxLS4yLTEuMTc3LS4zMjZsLjEtLjMwNmMuMzc3LjEyMi43NjQuMjMsMS4xNS4zMTlabTguNC0uNjY1LS4xMjEtLjNjLjM2NC0uMTQ4LjcyOC0uMzE0LDEuMDgtLjQ5M2wuMDA2LDAsLjE0NS4yODYsMCwwQzIyLDI4LjY2MSwyMS42MjYsMjguODMxLDIxLjI1MywyOC45ODJabS0xMC43MTgtLjA4OGMtLjM3NC0uMTU4LS43NDUtLjMzNS0xLjEtLjUyNGwuMTUtLjI4NGMuMzUuMTg2LjcxMy4zNTgsMS4wNzguNTEyWm0xMi44OTMtMS4wMjEtLjE3LS4yNzNjLjMzNy0uMjEuNjY4LS40MzcuOTg0LS42NzVsLjE5My4yNTdDMjQuMTExLDI3LjQyNSwyMy43NzIsMjcuNjU4LDIzLjQyOCwyNy44NzNaTTguMzc5LDI3Ljc1MWMtLjM0MS0uMjItLjY3Ni0uNDU5LTEtLjcwOGwuMi0uMjUzYy4zMTIuMjQzLjY0LjQ3Ni45NzIuNjkxWm0xNy0xLjM0Ni0uMjE1LS4yMzljLjI5NC0uMjY1LjU4LS41NDYuODUxLS44MzZsLjIzNS4yMTlDMjUuOTcyLDI1Ljg0NiwyNS42NzksMjYuMTM0LDI1LjM3OCwyNi40Wk02LjQ1NCwyNi4yNTJjLS4zLS4yNzYtLjU4NS0uNTY5LS44NTYtLjg3bC4yMzktLjIxNWMuMjY1LjI5NC41NDcuNTguODM2Ljg1Wk0yNy4wNDEsMjQuNjJsLS4yNTMtLjJjLjI0NC0uMzEyLjQ3Ni0uNjM5LjY5Mi0uOTcybC4yNy4xNzVDMjcuNTI5LDIzLjk2NiwyNy4yOSwyNC4zLDI3LjA0MSwyNC42MlpNNC44MiwyNC40MzljLS4yNDQtLjMyNC0uNDc2LS42NjItLjY5Mi0xLjAwN2wuMjcyLS4xN2MuMjEuMzM3LjQzOC42NjguNjc2Ljk4NFptMjMuNTQ3LTEuODY3LS4yODQtLjE1MWMuMTg2LS4zNS4zNTgtLjcxMy41MTMtMS4wNzhsLjMuMTI1QzI4LjczNSwyMS44NDMsMjguNTU4LDIyLjIxNCwyOC4zNjgsMjIuNTcyWm0tMjQuODQxLS4yLS4wMDYtLjAxMmMtLjE4My0uMzU5LS4zNTItLjcyOC0uNS0xLjFsLjMtLjEyMWMuMTQ3LjM2Mi4zMTIuNzI0LjQ5MSwxLjA3NGwuMDA2LjAxMlpNMjkuMzIsMjAuMzI1bC0uMzA2LS4xYy4xMjItLjM3Ny4yMy0uNzY0LjMxOS0xLjE1bC4zMTMuMDcyQzI5LjU1NSwxOS41NDMsMjkuNDQ2LDE5LjkzOSwyOS4zMiwyMC4zMjVaTTIuNjA4LDIwLjEwN2MtLjEyLS4zODgtLjIyMy0uNzg2LS4zMDgtMS4xODJsLjMxNC0uMDY3Yy4wODMuMzg3LjE4NC43NzYuMywxLjE1NVpNMjkuODcsMTcuOTQ2bC0uMzE4LS4wNDVjLjA1Ni0uMzkzLjA5NC0uNzkzLjExNS0xLjE4OGwuMzIxLjAxN0MyOS45NjcsMTcuMTM1LDI5LjkyNywxNy41NDQsMjkuODcsMTcuOTQ2Wk0yLjEsMTcuNzJjLS4wNS0uNC0uMDgyLS44MTItLjEtMS4yMThsLjMyMS0uMDExYy4wMTQuNC4wNDYuOC4wOTQsMS4xOVptMjcuNTgyLTIuMmMtLjAxNC0uNC0uMDQ1LS44LS4wOTMtMS4xOWwuMzE5LS4wMzljLjA0OS40LjA4Mi44MTMuMSwxLjIxOFpNMi4zMzEsMTUuMywyLjAxLDE1LjI4Yy4wMjEtLjQwNS4wNjEtLjgxNC4xMTctMS4yMTZsLjMxOC4wNDVDMi4zOSwxNC41LDIuMzUyLDE0LjksMi4zMzEsMTUuM1ptMjcuMDU3LTIuMTQ0Yy0uMDgzLS4zODctLjE4NC0uNzc2LS4zLTEuMTU1TDI5LjQsMTEuOWMuMTE5LjM4OC4yMjMuNzg2LjMwNywxLjE4M1pNMi42NjMsMTIuOTM0bC0uMzEzLS4wNzJjLjA5MS0uNC4yLS43OTEuMzI2LTEuMTc3bC4zMDYuMUMyLjg1OSwxMi4xNjEsMi43NTIsMTIuNTQ4LDIuNjYzLDEyLjkzNFptMjYuMDI2LTIuMDYyYy0uMTQ5LS4zNjYtLjMxNS0uNzMyLS41LTEuMDg2bC4yODYtLjE0NmMuMTg1LjM2My4zNTUuNzM2LjUwNywxLjExMVpNMy40LDEwLjY2NWwtLjMtLjEyNWMuMTU4LS4zNzQuMzM0LS43NDUuNTI0LTEuMWwuMjg0LjE1QzMuNzI0LDkuOTM3LDMuNTUyLDEwLjMsMy40LDEwLjY2NVpNNC41MTMsOC41NTdsLS4yNy0uMTc0Yy4yMi0uMzQxLjQ1OC0uNjc2LjcwNy0xbC4yNTQuMkM0Ljk2MSw3LjksNC43MjgsOC4yMjQsNC41MTMsOC41NTdaTTUuOTc3LDYuNjc2bC0uMjM1LS4yMTljLjI3Ni0uMy41NjktLjU4NS44Ny0uODU3bC4yMTUuMjM5QzYuNTMzLDYuMSw2LjI0Nyw2LjM4Niw1Ljk3Nyw2LjY3NlptMS43Ny0xLjYtLjE5My0uMjU3Yy4zMjMtLjI0NC42NjItLjQ3NywxLjAwNy0uNjkybC4xNy4yNzJDOC4zOTQsNC42MTQsOC4wNjMsNC44NDEsNy43NDcsNS4wNzlabTE1LjcwNS0uNTU4LS4wMTgtLjAxMi4xNzUtLjI3LjAxOC4wMTFabS0xLjA0Ny0uNjE2Yy0uMzUtLjE4Ni0uNzEzLS4zNTgtMS4wNzgtLjUxMmwuMTI1LS4zYy4zNzQuMTU4Ljc0NS4zMzQsMS4xLjUyNFpNOS43NjksMy44MTVsLS4xNDYtLjI4Ni4wMTgtLjAwOWMuMzU2LS4xODEuNzI0LS4zNDksMS4wOTMtLjVsLjEyMS4zYy0uMzYxLjE0Ny0uNzIuMzExLTEuMDY4LjQ4OFptMTAuNDQtLjgzOGMtLjM3Ny0uMTIyLS43NjQtLjIyOS0xLjE1MS0uMzE3bC4wNzItLjMxM2MuNC4wOTEuNzkyLjIsMS4xNzguMzI1Wm0tOC4yMjktLjA2LS4wOTQtLjMwN2MuMzg4LS4xMTkuNzg2LS4yMjMsMS4xODItLjMwOGwuMDY3LjMxNEMxMi43NDcsMi43LDEyLjM1OSwyLjgsMTEuOTgsMi45MTdabTUuOS0uNDczYy0uMzkzLS4wNTUtLjc5My0uMDkyLTEuMTg4LS4xMTNsLjAxNi0uMzIxYy40MDUuMDIxLjgxNC4wNTksMS4yMTYuMTE1Wm0tMy41NzItLjAyNi0uMDQtLjMxOWMuNC0uMDUuODEyLS4wODMsMS4yMTgtLjFsLjAxMi4zMjFDMTUuMTA2LDIuMzM3LDE0LjcwNSwyLjM2OSwxNC4zMTIsMi40MThaXCIgc3R5bGU9XCJmaWxsOmdyYXlcIi8+PGNpcmNsZSBjeD1cIjE2XCIgY3k9XCIxNS45OThcIiByPVwiMTAuNzA4XCIgc3R5bGU9XCJmaWxsOm5hdnlcIi8+PGNpcmNsZSBjeD1cIjIwLjQzNVwiIGN5PVwiMTEuNTYyXCIgcj1cIjMuMTM2XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PGNpcmNsZSBjeD1cIjI2LjcwOFwiIGN5PVwiNS4yOVwiIHI9XCIzLjEzN1wiIHN0eWxlPVwiZmlsbDpuYXZ5XCIvPjxwYXRoIGQ9XCJNMTMuMSwyMS4zNTJ2LS43OUg5LjYyOVYxNC4zMjZoLS45djcuMDI2SDEzLjFcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE3LjkxNiwyMS4zNTJWMTYuM2gtLjh2Mi43ODVjMCwxLjAzMS0uNTQsMS43MDYtMS4zNzgsMS43MDZBLjk1Ljk1LDAsMCwxLDE0LjcsMTkuOFYxNi4zaC0uOHYzLjgxN2MwLC44MzguNjI2LDEuMzc4LDEuNjA5LDEuMzc4YTEuODYzLDEuODYzLDAsMCwwLDEuNjg3LS45MjV2Ljc4MWguNzIzXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0yMy43OTEsMjEuMzMzdi0uNjA3YS42NjQuNjY0LDAsMCwxLS4xNzMuMDE5Yy0uMjc5LDAtLjQzNC0uMTQ1LS40MzQtLjRWMTcuNTM2YzAtLjktLjY1NS0xLjM3OC0xLjktMS4zNzgtMS4yMjQsMC0xLjk3Ni40NzItMi4wMjQsMS42MzhoLjgxYy4wNjctLjYxNy40MzQtLjksMS4xODUtLjkuNzIzLDAsMS4xMjguMjcsMS4xMjguNzUydi4yMTJjMCwuMzM3LS4yLjQ4Mi0uODM4LjU1OWE1Ljc2Myw1Ljc2MywwLDAsMC0xLjYxOS4zMDgsMS4zMjcsMS4zMjcsMCwwLDAtLjg4NywxLjMxMWMwLC45MTYuNjM2LDEuNDU1LDEuNjU4LDEuNDU1YTIuMzYzLDIuMzYzLDAsMCwwLDEuNzE1LS43NDIuODU1Ljg1NSwwLDAsMCwuODI5LjY2NSwxLjk2NywxLjk2NywwLDAsMCwuNTQ5LS4wODdtLTEuNDA3LTEuNzI1YTEuMzY2LDEuMzY2LDAsMCwxLTEuNTEzLDEuMTg1Yy0uNjI2LDAtLjk5My0uMjIyLS45OTMtLjc3MSwwLS41My4zNTctLjc2MSwxLjIxNC0uODg3YTQsNCwwLDAsMCwxLjI5MS0uMjc5di43NTJcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuICBcIk1hcmtkb3duXCI6IGA8cmVjdCB4PVwiMi41XCIgeT1cIjcuOTU1XCIgd2lkdGg9XCIyN1wiIGhlaWdodD1cIjE2LjA5MVwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojNzU1ODM4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjUuOTA5IDIwLjYzNiA1LjkwOSAxMS4zNjQgOC42MzYgMTEuMzY0IDExLjM2NCAxNC43NzMgMTQuMDkxIDExLjM2NCAxNi44MTggMTEuMzY0IDE2LjgxOCAyMC42MzYgMTQuMDkxIDIwLjYzNiAxNC4wOTEgMTUuMzE4IDExLjM2NCAxOC43MjcgOC42MzYgMTUuMzE4IDguNjM2IDIwLjYzNiA1LjkwOSAyMC42MzZcIiBzdHlsZT1cImZpbGw6Izc1NTgzOFwiLz48cG9seWdvbiBwb2ludHM9XCIyMi45NTUgMjAuNjM2IDE4Ljg2NCAxNi4xMzYgMjEuNTkxIDE2LjEzNiAyMS41OTEgMTEuMzY0IDI0LjMxOCAxMS4zNjQgMjQuMzE4IDE2LjEzNiAyNy4wNDUgMTYuMTM2IDIyLjk1NSAyMC42MzZcIiBzdHlsZT1cImZpbGw6Izc1NTgzOFwiLz5gLFxuICBcIk1BVExBQlwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMTYuODAzXCIgeTE9XCIxNi42MzFcIiB4Mj1cIjE1LjAxM1wiIHkyPVwiMjIuNDExXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMSwgMCwgMCwgLTEsIDAsIDMyKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzUxMlwiLz48c3RvcCBvZmZzZXQ9XCIwLjIzXCIgc3RvcC1jb2xvcj1cIiM1MjNcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zNlwiIHN0b3AtY29sb3I9XCIjNTM0XCIvPjxzdG9wIG9mZnNldD1cIjAuNTFcIiBzdG9wLWNvbG9yPVwiIzY0NVwiLz48c3RvcCBvZmZzZXQ9XCIwLjY2XCIgc3RvcC1jb2xvcj1cIiM1NjhcIi8+PHN0b3Agb2Zmc2V0PVwiMC44NFwiIHN0b3AtY29sb3I9XCIjMjlkXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiMjkuNzFcIiB5MT1cIjE4Ljk4M1wiIHgyPVwiMTEuNzFcIiB5Mj1cIjE0LjU2M1wiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjAuMDgxXCIgc3RvcC1jb2xvcj1cIiNjMzNcIi8+PHN0b3Agb2Zmc2V0PVwiMC4xODlcIiBzdG9wLWNvbG9yPVwiI2RlNTIzOVwiLz48c3RvcCBvZmZzZXQ9XCIwLjMxM1wiIHN0b3AtY29sb3I9XCIjZjA2ZTNlXCIvPjxzdG9wIG9mZnNldD1cIjAuNDIxXCIgc3RvcC1jb2xvcj1cIiNmYTgwNDJcIi8+PHN0b3Agb2Zmc2V0PVwiMC41XCIgc3RvcC1jb2xvcj1cIiNmZTg2NDNcIi8+PHN0b3Agb2Zmc2V0PVwiMC41OFwiIHN0b3AtY29sb3I9XCIjZmE3ZjQyXCIvPjxzdG9wIG9mZnNldD1cIjAuNjk2XCIgc3RvcC1jb2xvcj1cIiNlZjZjM2VcIi8+PHN0b3Agb2Zmc2V0PVwiMC44MzNcIiBzdG9wLWNvbG9yPVwiI2RjNGMzN1wiLz48c3RvcCBvZmZzZXQ9XCIwLjkxNlwiIHN0b3AtY29sb3I9XCIjY2YzNjMzXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfbWF0bGFiPC90aXRsZT48cGF0aCBkPVwiTTIsMTcuNTVsNy45Ny0zLjIyYTIwLjcsMjAuNywwLDAsMSwyLjcyLTIuOTVjLjY2LS4zNSwxLjktLjE2LDQuMTctMi45OCwyLjItMi43NSwyLjktNS4xLDMuOTMtNS4xLDEuNjMsMCwyLjgzLDMuNTIsNC42NSw4Ljg1QTExNS42MjksMTE1LjYyOSwwLDAsMCwzMCwyNC4xMmMtMS45LTEuNzctMy41Mi0zLjY4LTUuMzctMy42My0xLjcyLjA0LTMuNjMsMi4wOC01LjcyLDQuNy0xLjY2LDIuMS0zLjg2LDMuNTQtNC43MiwzLjUxLDAsMC0yLjIyLTYuMjgtNC4wOC03LjNhMi42NDEsMi42NDEsMCwwLDAtMi4zOS4yTDIsMTcuNTRaXCIgc3R5bGU9XCJmaWxsOiM0OWRcIi8+PHBhdGggZD1cIk0xOS44LDQuMDJjLS42Ny45LTEuNDgsMi41NS0yLjk0LDQuMzgtMi4yNywyLjgyLTMuNSwyLjYzLTQuMTcsMi45OGExOS42NzQsMTkuNjc0LDAsMCwwLTIuNzIsMi45NWwzLjMsMi40MWMyLjgtMy44Miw0LjMtNy45Niw1LjQ3LTEwLjY0QTEzLjU3OSwxMy41NzksMCwwLDEsMTkuOCw0LjAyWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMjAuOCwzLjNjLTIuMTgsMC0zLjY3LDExLjQ4LTExLjcyLDE3Ljg5LDIuMjYtLjM3LDQuMjIsNS4yNCw1LjEyLDcuNTEsNC0uNjgsNy4yLTguMzMsMTAuNDMtOC4yMSwxLjg1LjA3LDMuNDcsMS44Niw1LjM3LDMuNjNDMjUuNjYsMTUsMjMuNjMsMy4zLDIwLjgsMy4zWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2IpXCIvPmAsXG4gIFwiTUFYU2NyaXB0XCI6IGA8cGF0aCBkPVwiTTE0LjQsNy41NjgsMjAuMjEyLDJINy4yNzNMNC44NDgsNy41MzZsOS41NTcuMDMyWk00Ljg0OCw3LjUzNmw2Ljg0NCwyLjZMMTQuNCw3LjU2OG0tLjAxMywzLjYyMi0yLjctMS4wNTNMNS4yNjMsMTYuMWw2LjI4Niw1LjgyMywyLjgwOC0xLjFMMTQuNCw3LjU2OG0wLDAsMTIuOCw4LjM3NkwyMC4yMTIsMk0yNy4yLDE1Ljk0NCwxNC4zOTEsMTEuMTltLS4wMzUsOS42MzYtLjAzMiwzLjY4NU0yMC4yMjgsMzBsLTguNjc5LTguMDczTDQuOCwyNC40NjQsNy4yNTcsMzBabTAsMEwyNy4yLDE1Ljk0NCwxNC4zMjUsMjQuNTEyTTI3LjIsMTUuOTQ0LDE0LjM1NywyMC44MjZcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzFkMWQxYjtzdHJva2UtbWl0ZXJsaW1pdDoyMi45MjU1ODQ3OTMwOTA4MjtzdHJva2Utd2lkdGg6MC4wMjgzNDk5OTkzMzgzODg0NDNweFwiLz48cG9seWdvbiBwb2ludHM9XCIxNC4zOTEgMTEuMTkgMjcuMiAxNS45NDQgMTQuNDA1IDcuNTY4IDE0LjM5MSAxMS4xOSAxNC4zOTEgMTEuMTlcIiBzdHlsZT1cImZpbGw6IzE4MWIxNztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIyNy4yIDE1Ljk0NCAxNC4zNTcgMjAuODI2IDE0LjMyNSAyNC41MDkgMTQuMzI2IDI0LjUxMSAyNy4yIDE1Ljk0NCAyNy4yIDE1Ljk0NFwiIHN0eWxlPVwiZmlsbDojMWExZDFhO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE0LjQwNSA3LjU2OCAyNy4yIDE1Ljk0NCAyMC4yMTIgMiAxNC40MDUgNy41NjggMTQuNDA1IDcuNTY4XCIgc3R5bGU9XCJmaWxsOiMwMDVmNWU7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjcuMiAxNS45NDQgMTQuMzI2IDI0LjUxMSAyMC4yMjggMzAgMjcuMiAxNS45NDQgMjcuMiAxNS45NDRcIiBzdHlsZT1cImZpbGw6IzAwNDI0MjtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxNC4zNTcgMjAuODI2IDI3LjIgMTUuOTQ0IDE0LjM5MSAxMS4xOSAxNC4zNTcgMjAuODI2IDE0LjM1NyAyMC44MjZcIiBzdHlsZT1cImZpbGw6IzAwNTE1MjtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxNC4zNTcgMjAuODI2IDE0LjM5MSAxMS4xOSAxMS42OTIgMTAuMTM3IDUuMjYzIDE2LjEwNCAxMS41NDkgMjEuOTI3IDE0LjM1NyAyMC44MjYgMTQuMzU3IDIwLjgyNlwiIHN0eWxlPVwiZmlsbDojMDA2OTZiO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjExLjY5MiAxMC4xMzcgMTQuMzkxIDExLjE5IDE0LjQwNSA3LjU2OCAxMS42OTIgMTAuMTM3IDExLjY5MiAxMC4xMzdcIiBzdHlsZT1cImZpbGw6IzFiMjcyNTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxNC4zNTcgMjAuODI2IDExLjU0OSAyMS45MjcgMTQuMzI1IDI0LjUwOSAxNC4zNTcgMjAuODI2IDE0LjM1NyAyMC44MjZcIiBzdHlsZT1cImZpbGw6IzFjMjYyNDtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxNC4zMjUgMjQuNTEyIDQuOCAyNC40NjQgNy4yNTcgMzAgMjAuMjI4IDMwIDE0LjMyNiAyNC41MTEgMTQuMzI1IDI0LjUxMiAxNC4zMjUgMjQuNTEyXCIgc3R5bGU9XCJmaWxsOiMwMDY0NjY7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiNC44NDggNy41MzYgMTQuNDA1IDcuNTY4IDIwLjIxMiAyIDcuMjczIDIgNC44NDggNy41MzYgNC44NDggNy41MzZcIiBzdHlsZT1cImZpbGw6IzAwNzY3YTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxNC40MDUgNy41NjggNC44NDggNy41MzYgMTEuNjkyIDEwLjEzNyAxNC40MDUgNy41NjggMTQuNDA1IDcuNTY4XCIgc3R5bGU9XCJmaWxsOiMxZTM5Mzg7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTEuNTQ5IDIxLjkyNyA0LjggMjQuNDY0IDE0LjMyNSAyNC41MTIgMTQuMzI1IDI0LjUwOSAxMS41NDkgMjEuOTI3IDExLjU0OSAyMS45MjdcIiBzdHlsZT1cImZpbGw6IzIwMzAyZTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz5gLFxuICBcIk1FTFwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiLTYxMS4zNDhcIiB5MT1cIi02Ny40ODhcIiB4Mj1cIi02MDAuMjcyXCIgeTI9XCItNjUuMzM1XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMS40MzcsIDAsIDAsIC0xLjQzNywgODk0LjQxNywgLTgyLjI5MilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMwZjYwNjdcIi8+PHN0b3Agb2Zmc2V0PVwiMC41XCIgc3RvcC1jb2xvcj1cIiMwNWFiYWNcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjNThiZWM0XCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiLTYwMy41OTRcIiB5MT1cIi03Ny42OTlcIiB4Mj1cIi02MDIuMDExXCIgeTI9XCItNTkuNjA0XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMS40MzcsIDAsIDAsIC0xLjQzNywgODk0LjQxNywgLTgyLjI5MilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMxMTdjODNcIi8+PHN0b3Agb2Zmc2V0PVwiMC41XCIgc3RvcC1jb2xvcj1cIiMyMWI1YjVcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjN2VkNGQ0XCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiY1wiIHgxPVwiLTYxMi43NTdcIiB5MT1cIi01OS45MDZcIiB4Mj1cIi02MTYuOTM0XCIgeTI9XCItNzIuNzZcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLjQzNywgMCwgMCwgLTEuNDM3LCA4OTQuNDE3LCAtODIuMjkyKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzlhY2NkM1wiLz48c3RvcCBvZmZzZXQ9XCIwLjVcIiBzdG9wLWNvbG9yPVwiIzcyYWViM1wiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMzMTdkN2ZcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJkXCIgeDE9XCItNjIxLjg1MVwiIHkxPVwiLTc0LjU3OVwiIHgyPVwiLTYxNC44NFwiIHkyPVwiLTcyLjMwMVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEuNDM3LCAwLCAwLCAtMS40MzcsIDg5NC40MTcsIC04Mi4yOTIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjMjE2MjZlXCIvPjxzdG9wIG9mZnNldD1cIjAuNVwiIHN0b3AtY29sb3I9XCIjMTU3Yzg0XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzAzYTNhNVwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImVcIiB4MT1cIi02MTYuMzY5XCIgeTE9XCItNjQuNDY5XCIgeDI9XCItNjI1LjM0XCIgeTI9XCItNzIuODM1XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMS40MzcsIDAsIDAsIC0xLjQzNywgODk0LjQxNywgLTgyLjI5MilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMwYjdjODFcIi8+PHN0b3Agb2Zmc2V0PVwiMC41XCIgc3RvcC1jb2xvcj1cIiMwNjhkOTBcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMTZiMWIxXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiZlwiIHgxPVwiLTYwOC4wNzJcIiB5MT1cIi03NC42NzhcIiB4Mj1cIi02MDMuNDg4XCIgeTI9XCItNzAuOTY2XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMS40MzcsIDAsIDAsIC0xLjQzNywgODk0LjQxNywgLTgyLjI5MilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMwYThhOGZcIi8+PHN0b3Agb2Zmc2V0PVwiMC41XCIgc3RvcC1jb2xvcj1cIiMwZjdjODJcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMWE1OTY0XCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiZ1wiIHgxPVwiLTYwMS4xMzRcIiB5MT1cIi03MC4xMTNcIiB4Mj1cIi02MDYuMDA4XCIgeTI9XCItNjcuMDY3XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMS40MzcsIDAsIDAsIC0xLjQzNywgODk0LjQxNywgLTgyLjI5MilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMyNTZhNzdcIi8+PHN0b3Agb2Zmc2V0PVwiMC41XCIgc3RvcC1jb2xvcj1cIiMwZDk0OTlcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMDZhMGEyXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfbWF5YTwvdGl0bGU+PHBhdGggZD1cIk0yMS42LDMuNDYySDMwTDE4Ljc2NywyNC4yMTFzLTEuODkzLTUuNS0yLjcwNi03LjQ1OVwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMjMuNjY5LDI5LjExOEgzMFYzLjQ2MkMyOS45OTUsMTYuODY5LDI0LjM2LDI5LjExOCwyMy42NjksMjkuMTE4WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNMTguNzY3LDI0LjIxMUgxMy41NDFMMiwzLjQ2MmMyLjA0Ny0uMjYsNi4xMzUtLjYxMSw4LjE2LS43NzZaXCIgc3R5bGU9XCJmaWxsOnVybCgjYylcIi8+PHBhdGggZD1cIk04LjY5MywxNi4wMTlDNi45NiwyMi44NjYsMS45OTUsMjkuMzIsMiwyOS4zMTRjNS43NTIsMCw2Ljk5MS0uODM1LDYuOTkxLTEuMjc2VjE2LjU0QzguODksMTYuMzcsOC43OTQsMTYuMTk0LDguNjkzLDE2LjAxOVpcIiBzdHlsZT1cImZpbGw6dXJsKCNkKVwiLz48cGF0aCBkPVwiTTIsMy40NjJWMjkuMzE0YzMuMTQ3LTUuMiw0Ljk4MS04LjYsNi42LTEzLjQ1QzQuNiw4Ljc5NCwyLDMuNDYyLDIsMy40NjJaXCIgc3R5bGU9XCJmaWxsOnVybCgjZSlcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjIzLjIzMyAyOC4xMDIgMjMuNjY5IDI5LjExOCAyMy42NjkgMTUuNjQ3IDIzLjIzMyAxNi4zNzVcIiBzdHlsZT1cImZpbGw6dXJsKCNmKVwiLz48cGF0aCBkPVwiTTIzLjY0NywxNS42NzN2MTMuNGwuMDE2LjA0M2MuNDUyLDAsNi4zMzItMTQuNSw2LjMzMi0yNS42NTZDMjkuOTk1LDMuNDYyLDI2LjQwNiwxMC45NDcsMjMuNjQ3LDE1LjY3M1pcIiBzdHlsZT1cImZpbGw6dXJsKCNnKVwiLz5gLFxuICBcIk1vbmdvREJcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIi02NDUuNzMyXCIgeTE9XCI4MzkuMTg4XCIgeDI9XCItNjU0LjU5XCIgeTI9XCI4MzkuMjVcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgtMC45NzcsIC0wLjMyMywgLTAuMjksIDAuODc3LCAtMzc1Ljk0NCwgLTkyOC4yODcpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMC4yMzFcIiBzdG9wLWNvbG9yPVwiIzk5OTg3NVwiLz48c3RvcCBvZmZzZXQ9XCIwLjU2M1wiIHN0b3AtY29sb3I9XCIjOWI5OTc3XCIvPjxzdG9wIG9mZnNldD1cIjAuNjgzXCIgc3RvcC1jb2xvcj1cIiNhMDlmN2VcIi8+PHN0b3Agb2Zmc2V0PVwiMC43NjhcIiBzdG9wLWNvbG9yPVwiI2E5YTg4OVwiLz48c3RvcCBvZmZzZXQ9XCIwLjgzN1wiIHN0b3AtY29sb3I9XCIjYjdiNjlhXCIvPjxzdG9wIG9mZnNldD1cIjAuODk2XCIgc3RvcC1jb2xvcj1cIiNjOWM3YjBcIi8+PHN0b3Agb2Zmc2V0PVwiMC45NDhcIiBzdG9wLWNvbG9yPVwiI2RlZGRjYlwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5NFwiIHN0b3AtY29sb3I9XCIjZjhmNmViXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2ZiZjllZlwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIi02NDQuMjg3XCIgeTE9XCI4MjMuNDA1XCIgeDI9XCItNjU3LjAyOFwiIHkyPVwiODQ1LjQ3NlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KC0wLjk3NywgLTAuMzIzLCAtMC4yOSwgMC44NzcsIC0zNzUuOTQ0LCAtOTI4LjI4NylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM0OGE1NDdcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjM2Y5MTQzXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiY1wiIHgxPVwiLTY0My4zODZcIiB5MT1cIjgzOS40ODVcIiB4Mj1cIi02NTIuNDE4XCIgeTI9XCI4MzMuNDE3XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoLTAuOTc3LCAtMC4zMjMsIC0wLjI5LCAwLjg3NywgLTM3NS45NDQsIC05MjguMjg3KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzQxYTI0N1wiLz48c3RvcCBvZmZzZXQ9XCIwLjM1MlwiIHN0b3AtY29sb3I9XCIjNGJhNzRiXCIvPjxzdG9wIG9mZnNldD1cIjAuOTU2XCIgc3RvcC1jb2xvcj1cIiM2N2I1NTRcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjNjliNjU1XCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfbW9uZ288L3RpdGxlPjxwYXRoIGQ9XCJNMTYuNjIsMzBsLS43NTEtLjI0OXMuMS0zLjgtMS4yNzUtNC4wNjdjLS45LTEuMDQ4LjEzMy00NC43NDEsMy40MjMtLjE0OWEyLjcxMiwyLjcxMiwwLDAsMC0xLjMzMywxLjUyM0ExNC4xLDE0LjEsMCwwLDAsMTYuNjIsMzBaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0xNy4wMjYsMjYuMzI5YTEzLjIyMywxMy4yMjMsMCwwLDAsNS0xMy4yMjVDMjAuNTU2LDYuNjE5LDE3LjA3NSw0LjQ4NywxNi43LDMuNjczYTkuNzkyLDkuNzkyLDAsMCwxLS44MjUtMS42bC4yNzcsMTguMDY5UzE1LjU3OCwyNS42NjQsMTcuMDI2LDI2LjMyOVpcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTE1LjQ4NywyNi41NjlTOS4zNjYsMjIuNCw5LjcyLDE1LjAyNUExNS41NCwxNS41NCwwLDAsMSwxNS4yMzksMy4zNzcsMS43MjUsMS43MjUsMCwwLDAsMTUuODQ2LDJjLjM4MS44Mi4zMTksMTIuMjQzLjM1OSwxMy41NzlDMTYuMzYsMjAuNzc2LDE1LjkxNiwyNS41ODgsMTUuNDg3LDI2LjU2OVpcIiBzdHlsZT1cImZpbGw6dXJsKCNjKVwiLz5gLFxuICBcIm5naW54XCI6IGA8cGF0aCBkPVwiTTE1Ljk0OCwyaC4wNjVhMTAuNDE4LDEwLjQxOCwwLDAsMSwuOTcyLjUyOFEyMi40MTQsNS42NSwyNy44NDMsOC43NzRhLjc5Mi43OTIsMCwwLDEsLjQxNC43ODhjLS4wMDgsNC4zODksMCw4Ljc3Ny0uMDA1LDEzLjE2NGEuODEzLjgxMywwLDAsMS0uMzU2LjUwN3EtNS43NzMsMy4zMjQtMTEuNTQ3LDYuNjQ0YS41ODcuNTg3LDAsMCwxLS42NTcuMDM3UTkuOTEyLDI2LjYsNC4xNDMsMjMuMjc0YS43LjcsMCwwLDEtLjQtLjY2NnEwLTYuNTgyLDAtMTMuMTYzYS42OTMuNjkzLDAsMCwxLC4zODctLjY3UTkuNTUyLDUuNjU3LDE0Ljk3NCwyLjUzNWMuMzIyLS4xODQuNjM4LS4zNzkuOTc0LS41MzVcIiBzdHlsZT1cImZpbGw6IzAxOTYzOVwiLz48cGF0aCBkPVwiTTguNzY3LDEwLjUzOHEwLDUuNDI5LDAsMTAuODU5YTEuNTA5LDEuNTA5LDAsMCwwLC40MjcsMS4wODcsMS42NDcsMS42NDcsMCwwLDAsMi4wNi4yMDYsMS41NjQsMS41NjQsMCwwLDAsLjY4NS0xLjI5M2MwLTIuNjItLjAwNS01LjI0LDAtNy44NnEzLjU4Myw0LjI5LDcuMTgxLDguNTY4YTIuODMzLDIuODMzLDAsMCwwLDIuNi43ODIsMS41NjEsMS41NjEsMCwwLDAsMS4yNTEtMS4zNzFxLjAwOC01LjU0MSwwLTExLjA4MWExLjU4MiwxLjU4MiwwLDAsMC0zLjE1MiwwYzAsMi42NjItLjAxNiw1LjMyMSwwLDcuOTgyLTIuMzQ2LTIuNzY2LTQuNjYzLTUuNTU2LTctOC4zMzJBMi44MTcsMi44MTcsMCwwLDAsMTAuMTcsOS4wMzMsMS41NzksMS41NzksMCwwLDAsOC43NjcsMTAuNTM4WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG4gIFwiTmltXCI6IGA8cGF0aCBkPVwiTTE2LjExMSw2LjQwNXMtMS4wNzMuODQ3LTIuMTY3LDEuNjlhMTUuMzYxLDE1LjM2MSwwLDAsMC00LjUyNy42NTFjLTEuMS0uNy0yLjA3LTEuNDY5LTIuMDctMS40NjlTNi41Miw4LjcsNiw5LjUzNWExMS4zODIsMTEuMzgyLDAsMCwwLTIuMjM2LDEuNDgyQzIuOTYxLDEwLjcsMi4wMywxMC4zMSwyLDEwLjNjMS4wNjMsMi4xNDUsMS43NzgsNC4yOTIsMy43MjIsNS41ODMsMy4xLTQuODg5LDE3LjQ4LTQuNDM5LDIwLjYzOS0uMDI4QzI4LjQsMTQuNzg3LDI5LjIsMTIuNSwzMCwxMC4zOGMtLjA4OC4wMjktMS4xODEuMzk1LTEuODg5LjY2NWExMS40ODksMTEuNDg5LDAsMCwwLTEuOTg2LTEuNTFjLS41MzctLjk4NC0xLjMxOS0yLjMxMy0xLjMxOS0yLjMxM3MtLjkyNy42ODktMiwxLjQ0YTIxLjI2NSwyMS4yNjUsMCwwLDAtNC42ODEtLjUxMmMtMS0uODI2LTIuMDE0LTEuNzQ2LTIuMDE0LTEuNzQ2WlwiIHN0eWxlPVwiZmlsbDojZjNkNDAwXCIvPjxwYXRoIGQ9XCJNMy4xLDE0Ljg1NGwyLjU1NCw2LjE4NWM0LjQzNSw1Ljg1LDE1Ljc1OSw2LjI1NywyMC43LjExMywxLjE2OC0yLjYzMywyLjc0NS02LjMzMywyLjc0NS02LjMzM2ExMy4zNzksMTMuMzc5LDAsMCwxLTQuNiwzLjg2OSwxMi4yMTcsMTIuMjE3LDAsMCwxLTIuOTgzLjc5M2wtNS40NjUtMi44MzItNS41LDIuNzc1YTE1LjY3OSwxNS42NzksMCwwLDEtMi45ODMtLjc2NEExNC4wNzYsMTQuMDc2LDAsMCwxLDMuMSwxNC44NTRaXCIgc3R5bGU9XCJmaWxsOiNmZmU5NTNcIi8+YCxcbiAgXCJOaXhcIjogYDxwYXRoIGQ9XCJNMTMsMTEuMTE1LDYuMTgzLDIzLjc2LDQuNTksMjAuODdsMS44MzktMy4zODctMy42NTEtLjAxTDIsMTYuMDI5bC44LTEuNDc3LDUuMi4wMTgsMS44NjgtMy40NDdaXCIgc3R5bGU9XCJmaWxsOiM3ZWJhZTQ7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xMy41MjcsMjEuMjIzaDEzLjY0bC0xLjU0MSwyLjkyMi0zLjY1OC0uMDExLDEuODE3LDMuMzg5LS43NzksMS40NDktMS41OTMsMC0yLjU4NC00LjgyNS0zLjcyMi0uMDA4WlwiIHN0eWxlPVwiZmlsbDojN2ViYWU0O2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMjEuNDY3LDE1LjY4MiwxNC42NDcsMy4wMzdsMy4xMzQtLjAzMkwxOS42LDYuNGwxLjgzNC0zLjM3OWgxLjU1N0wyMy43ODYsNC41LDIxLjE3NCw5LjMwN2wxLjg1NCwzLjQ1NVpcIiBzdHlsZT1cImZpbGw6IzdlYmFlNDtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTEwLjU0MiwxNi4zMjRsNi44MjEsMTIuNjQ1TDE0LjIyOSwyOWwtMS44MjEtMy40LTEuODM0LDMuMzhIOS4wMTZsLS44LTEuNDc2TDEwLjgzMSwyMi43LDguOTc2LDE5LjI0M1pcIiBzdHlsZT1cImZpbGw6IzUyNzdjMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTE4LjQ2NCwxMC43NTFINC44MjNMNi4zNjUsNy44MjlsMy42NTguMDExTDguMjA3LDQuNDUxLDguOTg2LDNsMS41OTIsMCwyLjU4NCw0LjgyNSwzLjcyMi4wMDhaXCIgc3R5bGU9XCJmaWxsOiM1Mjc3YzM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xOSwyMC44ODgsMjUuODE3LDguMjQ0bDEuNTkzLDIuODlMMjUuNTcxLDE0LjUybDMuNjUxLjAxTDMwLDE1Ljk3OWwtLjgsMS40NzctNS4yLS4wMTgtMS44NjgsMy40NDdaXCIgc3R5bGU9XCJmaWxsOiM1Mjc3YzM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+YCxcbiAgXCJOU0lTXCI6IGA8cGF0aCBkPVwiTTI3LjQzNSwxNi4wMzcsMjIuMDEyLDIxLjQ2bDUuNDIzLDUuNDIzXCIgc3R5bGU9XCJmaWxsOiMwMDU3N2JcIi8+PHBhdGggZD1cIk0yNi44ODQsMTUuNUgxNi4wNDhsNS40MjMsNS40MjNcIiBzdHlsZT1cImZpbGw6IzAwNzlhYVwiLz48cGF0aCBkPVwiTTI2Ljg4NCwxNC43MTIsMjEuNDYxLDkuMjg5bC01LjQyMyw1LjQyM1wiIHN0eWxlPVwiZmlsbDojMDA5NmQzXCIvPjxwYXRoIGQ9XCJNMjAuNTI4LDkuMTMxSDkuNjgzbDUuNDIzLDUuNDIzTTI3LjQzNSwzLjMyNSwyMi4wMTIsOC43NDhsNS40MjMsNS40MjNcIiBzdHlsZT1cImZpbGw6IzAxYjBmMFwiLz48cGF0aCBkPVwiTTIwLjUyOCw4LjM1NiwxNS4xMDUsMi45MzMsOS42ODMsOC4zNTZcIiBzdHlsZT1cImZpbGw6IzI3YmNmM1wiLz48cGF0aCBkPVwiTTE0LjE3MiwyLjc3NUgzLjMyN0w4Ljc0OSw4LjJcIiBzdHlsZT1cImZpbGw6IzRmYzlmNVwiLz48cGF0aCBkPVwiTTQuNTY4LDE1Ljk2Myw5Ljk5MSwxMC41NCw0LjU2OCw1LjExN1wiIHN0eWxlPVwiZmlsbDojNzkyMDFiXCIvPjxwYXRoIGQ9XCJNMTAuNTQxLDExLjA5MSw1LjExOSwxNi41MTNIMTUuOTY0XCIgc3R5bGU9XCJmaWxsOiNhNDJkMjZcIi8+PHBhdGggZD1cIk01LjExOSwxNy4yODhsNS40MjMsNS40MjMsNS40MjMtNS40MjNcIiBzdHlsZT1cImZpbGw6I2NjMzgyZlwiLz48cGF0aCBkPVwiTTQuNTY4LDE3LjgyOVYyOC42NzVsNS40MjMtNS40MjNMOC40LDIxLjY2NW0xMy45MTYsMS4yTDE2LjksMTcuNDQ3bC01LjQyMyw1LjQyM1wiIHN0eWxlPVwiZmlsbDojZjA0NTNmXCIvPjxwYXRoIGQ9XCJNMTEuNDc1LDIzLjY0NCwxNi45LDI5LjA2N2w1LjQyMy01LjQyM1wiIHN0eWxlPVwiZmlsbDojZjI2MjVkXCIvPjxwYXRoIGQ9XCJNMTcuODQsMjkuMjI1SDI4LjY4NUwyMy4yNjMsMjMuOFwiIHN0eWxlPVwiZmlsbDojZjQ3ZjdkXCIvPjxwYXRoIGQ9XCJNMjkuODg5LDI5LjMzN2wtMS42OC0xLjY4VjIuMzkyYS4zNzQuMzc0LDAsMCwwLS4yNDMtLjM1NUEuMjYzLjI2MywwLDAsMCwyNy44MjcsMmEuMzU5LjM1OSwwLDAsMC0uMjcxLjExMkwyMS40NzEsOC4yLDE1LjM4NSwyLjExMiwxNS4zLDIuMDM3aC0uMDM3QS4zMDcuMzA3LDAsMCwwLDE1LjEwNSwySDIuNGEuNDM0LjQzNCwwLDAsMC0uMjg5LjExMkEuMzguMzgsMCwwLDAsMiwyLjM5MmEuMzU5LjM1OSwwLDAsMCwuMTEyLjI3MWwxLjY4LDEuNjhWMjkuNjE3YS4zNzQuMzc0LDAsMCwwLC4yNDMuMzU1QS4zODcuMzg3LDAsMCwwLDQuMTg1LDMwYS4zNTkuMzU5LDAsMCwwLC4yNzEtLjExMkwxMC41NDEsMjMuOGw2LjA4NSw2LjA4NS4wODQuMDc1aC4wMzdBLjI1NC4yNTQsMCwwLDAsMTYuOSwzMEgyOS42MDlhLjM5NS4zOTUsMCwwLDAsLjI4LS42NjNaTTI3LjQzNSwzLjMyNVYxNC4xNzFMMjIuMDEyLDguNzQ4bDUuNDIzLTUuNDIzWk05Ljk5MSwxMC41NCw0LjU2OCwxNS45NjNWNS4xMTdMOS45OTEsMTAuNTRaTTkuNjgzLDkuMTMxSDIwLjUyOGwtNS40MjMsNS40MjNMOS42ODMsOS4xMzFabS44NTksMS45Niw1LjQyMyw1LjQyM0g1LjExOWw1LjQyMy01LjQyM1pNMTYuOSwxNy40NDdsNS40MjMsNS40MjNIMTEuNDc1TDE2LjksMTcuNDQ3Wk0xNi4wNDgsMTUuNUgyNi44OTNsLTUuNDIzLDUuNDIzTDE2LjA0OCwxNS41Wm01Ljk2NCw1Ljk2NCw1LjQyMy01LjQyM1YyNi44ODNMMjIuMDEyLDIxLjQ2Wm00Ljg3Mi02Ljc0OEgxNi4wNDhsNS40MjMtNS40MjMsNS40MTMsNS40MjNaTTIwLjUyOCw4LjM1Nkg5LjY4M2w1LjQyMy01LjQyMyw1LjQyMyw1LjQyM1pNMy4zMjcsMi43NzVIMTQuMTcyTDguNzQ5LDguMlptMS4yNDEsMjUuOVYxNy44MjlMOC40LDIxLjY2NWwxLjU4NywxLjU4N0w0LjU2OCwyOC42NzVabS41NTEtMTEuMzg3SDE1Ljk2NGwtNS40MjMsNS40MjNMNS4xMTksMTcuMjg4Wk0xNi45LDI5LjA2N2wtNS40MjMtNS40MjNIMjIuMzJMMTYuOSwyOS4wNjdabS45NDMuMTU5TDIzLjI2MywyMy44bDUuNDIzLDUuNDIzWlwiIHN0eWxlPVwiZmlsbDojNDY0MDQ5XCIvPmAsXG4gIFwiT2JqZWN0IFBhc2NhbFwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMTZcIiB5MT1cIi0wLjQ0M1wiIHgyPVwiMTZcIiB5Mj1cIjIyLjA0MlwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjAuMDIxXCIgc3RvcC1jb2xvcj1cIiNmZjBjMTVcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjOWEwYzBmXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfZGVscGhpPC90aXRsZT48Y2lyY2xlIGN4PVwiMTZcIiBjeT1cIjE2XCIgcj1cIjE0XCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0yNy41NDUsMTYuMjQzSDQuOTI0YS45MTQuOTE0LDAsMCwwLTEuMDkyLjgycS4wMzMuNDI5LjEuODQ5YTEyLjQsMTIuNCwwLDAsMCwyNC41MzIsMHEuMDc1LS41LjEwOC0xLjAyMUMyOC40NzgsMTYuNTIzLDI4LjIxMSwxNi4yMDcsMjcuNTQ1LDE2LjI0M1pcIiBzdHlsZT1cImZpbGw6I2ZmNjQ0M1wiLz48cG9seWxpbmUgcG9pbnRzPVwiMTguNDggMTEuNjQgMjMuNzA3IDcuMjY2IDE5Ljc4NyA1Ljg4IDE2IDExLjA1M1wiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCIxNS42OCAxMS4wMjYgMTguNjQgNS44OCAxNC44NTMgNS44OCAxMy4zMDcgMTEuMjkzXCIgc3R5bGU9XCJmaWxsOiNmYWU3ZTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjEzLjA0IDExLjM3MyAxMy42IDYuNzA2IDEwLjU4NyA3Ljk2IDExLjAxMyAxMi43NlwiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCIxMC43NDcgMTMgOS43ODcgOC43NiA3LjcwNyAxMC44NCA5LjY1MyAxNC42OFwiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCI5LjM4NyAxNS4wNTMgNy40OTMgMTIuMzc2IDYuNjQgMTQuNDY2IDkuMDQgMTYuNTE3XCIgc3R5bGU9XCJmaWxsOiNmYWU3ZTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjkuMDQgMTYuNzU3IDYuNjQgMTUuMjEzIDYuNDggMTcuNCA5LjIgMTguMzMzXCIgc3R5bGU9XCJmaWxsOiNmYWU3ZTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjkuMjI3IDE4Ljg0NiA2LjY0IDE4LjA0IDcuMjI3IDE5LjggOS41NDcgMTkuOFwiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCI5LjcwNyAyMC4wOTMgNy43MDcgMjAuMzg2IDguNjI3IDIxLjc0NiAxMC4yNjcgMjFcIiBzdHlsZT1cImZpbGw6I2ZhZTdlMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTIwLjAyMywxMy4wODlhNi42MSw2LjYxLDAsMCwwLTQuNTMtMkE2LjI5Myw2LjI5MywwLDAsMCwxMS4zLDIyLjA3bDQuOTQxLjEyOS0yLjA4LTQuMTZaXCIgc3R5bGU9XCJmaWxsOiNlZWU7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xNi41LDIyLjM2NmwtNS4yNjctLjEzOC0uMDQ0LS4wMzlhNi40NTMsNi40NTMsMCwwLDEsNC4zLTExLjI2NCw2Ljc4Nyw2Ljc4NywwLDAsMSw0LjY0MywyLjA1bC4xMjMuMTIzLTUuOSw0Ljk4MlptLTUuMTQtLjQ1NSw0LjYxNi4xMjFMMTMuOTYxLDE4bDUuODI1LTQuOTE5YTYuNDMsNi40MywwLDAsMC00LjI5Mi0xLjgzNSw2LjEzMyw2LjEzMywwLDAsMC00LjEzMSwxMC42NjdaXCIgc3R5bGU9XCJmaWxsOiNlZTRiMmVcIi8+PHBhdGggZD1cIk0xMi4wMTMsMjAuNDkzYy00LjE3My01LjgxMywyLjEwOS04LjE3MiwyLjQ3OC04LjQ1My40NTEtLjM0NC03LjU5LDEuNzg1LTMuMjI2LDguODhaXCIgc3R5bGU9XCJmaWxsOiNmMDRlMzE7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjAuNzIgMTIuNiAxMy41MiAxNy41NjcgMTMuNzMzIDE4LjU3MyAyMS40NjcgMTcuMDI2IDIwLjcyIDEyLjZcIiBzdHlsZT1cImZpbGw6I2VlZTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTEzLjYxLDE4Ljc2MSwxMy4zNDEsMTcuNWw3LjQ5NS01LjE3LjgxNCw0LjgyOFptLjA4OS0xLjEyMy4xNTguNzQ3TDIxLjI4MywxNi45LDIwLjYsMTIuODc0WlwiIHN0eWxlPVwiZmlsbDojZWU0YjJlXCIvPjxwYXRoIGQ9XCJNMTUuNzIzLDIxLjMxOWMtMy45My0uNjY4LTQuMjgzLjQyOC00LjI4My40MjhMMTAuMjY3LDI0LjQ0czEuMTItLjkwNyw1LjQ5MywwbC43Ni0xLjM4OFpcIiBzdHlsZT1cImZpbGw6I2RkMGMxMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTE0LjEyMiwyMS42Yy0uMDItLjItMS4xLS4zMTktMS42NzctLjEyMy0uNzMyLjI0OS0xLjIxOSwxLjE0Mi0xLjA0NSwxLjIxM2ExLjk3NSwxLjk3NSwwLDAsMSwxLjEyNS0uOTg2QzEzLjQ0NywyMS40OTMsMTQuMTQyLDIxLjgsMTQuMTIyLDIxLjZaXCIgc3R5bGU9XCJmaWxsOiNmZjZlNGY7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xNS41MiwxOC42MDZhMTEuMSwxMS4xLDAsMCwwLDEuNTQ3LDEuNDg3LDYuOSw2LjksMCwwLDEsMi43Miw0LjEwN2MtLjEwNywxLjA2Ny0xLjk3MywxLjc2LTEuOTczLDEuNzZsLTMuMzA3LTcuMTk0WlwiIHN0eWxlPVwiZmlsbDojZWVlO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTcuNzMsMjYuMTYxbC0zLjQ1Ny03LjUyMSwxLjMyLS4yMDguMDU3LjA4MWExMC44NjksMTAuODY5LDAsMCwwLDEuNTEyLDEuNDUxLDcsNywwLDAsMSwyLjc4Miw0LjIwN2wwLC4wMjIsMCwuMDIyYy0uMTE1LDEuMTUzLTIsMS44NjQtMi4wNzcsMS44OTRabS0yLjk5LTcuMjcsMy4xNTUsNi44NjNjLjQxNC0uMTc4LDEuNjMtLjc2MywxLjczLTEuNTQ4YTYuNzkzLDYuNzkzLDAsMCwwLTIuNjQ4LTMuOTgxbC0uMDEtLjAwN2ExMS45NCwxMS45NCwwLDAsMS0xLjUxNy0xLjQzOVpcIiBzdHlsZT1cImZpbGw6I2VlNGIyZVwiLz48cGF0aCBkPVwiTTI4LDEyLjc0MmMuMDI1LjM5NC4wMzQuNzkyLjAyNSwxLjE5NGExMy45NDYsMTMuOTQ2LDAsMCwxLTE5LjksMTIuM0ExMi44NiwxMi44NiwwLDAsMCwyOCwxMi43NDJaXCIgc3R5bGU9XCJmaWxsOiNlYWUwZGY7ZmlsbC1ydWxlOmV2ZW5vZGQ7b3BhY2l0eTowLjJcIi8+PHBhdGggZD1cIk0yLjM4MywxMy44OTNBMTMuOTQxLDEzLjk0MSwwLDAsMSwyNS43LDUuODNzLTUuMDA5LDUuOTc5LTEwLjU4NCw3LjkwN1MyLjM4MywxMy44OTMsMi4zODMsMTMuODkzWlwiIHN0eWxlPVwiZmlsbDojZWFlMGRmO29wYWNpdHk6MC4yXCIvPjxwYXRoIGQ9XCJNMy42MTgsMTguNjk0Yy0uMDQ0LS4zOTItLjA3Mi0uNzktLjA4My0xLjE5MUMzLjMyOSw5LjgwNywxMC4wMTIsNC4yLDE3LjcwOCwzLjk5MWExNC4yLDE0LjIsMCwwLDEsNS43MTksMS40NTgsMTMuMTI4LDEzLjEyOCwwLDAsMC03LjE4OC0yLjM2OWMtNy4xLjE5LTEzLjMwNiw1LjMtMTMuMTE2LDEyLjRBMTIuODczLDEyLjg3MywwLDAsMCwzLjYxOCwxOC42OTRaXCIgc3R5bGU9XCJmaWxsOiNlYWUwZGY7ZmlsbC1ydWxlOmV2ZW5vZGQ7b3BhY2l0eTowLjJcIi8+YCxcbiAgXCJPYmplY3RpdmUtQ1wiOiBgPHBhdGggZD1cIk0xMS4yOSwxNS45NzZhOC44OTIsOC44OTIsMCwwLDAsMS4wMzksNC41NTcsNC44MTgsNC44MTgsMCwwLDAsNS41NzksMi4xMywzLjc4OSwzLjc4OSwwLDAsMCwyLjczNC0zLjE4MWMuMDk1LS41MzUuMS0uNTQuMS0uNTQsMS41MzcuMjIyLDQuMDE0LjU4Miw1LjU1LjhsLS4xLjM4OUE5Ljk1OCw5Ljk1OCwwLDAsMSwyMy44LDI0LjlhOC4zNSw4LjM1LDAsMCwxLTQuNzQ3LDIuMzc4LDEyLjkyNSwxMi45MjUsMCwwLDEtNy4zMjItLjcyNSw4Ljk4LDguOTgsMCwwLDEtNS4xMDYtNS41MjRBMTQuMzUzLDE0LjM1MywwLDAsMSw2LjY0MiwxMC45YTkuMzIzLDkuMzIzLDAsMCwxLDcuOTI5LTYuMjQsMTEuODEyLDExLjgxMiwwLDAsMSw1LjkuNDkxLDguNDY3LDguNDY3LDAsMCwxLDUuNDU2LDYuMWMuMDgzLjMxMS4xLjM2OS4xLjM2OS0xLjcwOS4zMTEtMy44MjEuNzA1LTUuNTE4LDEuMDc1QzIwLjE4NiwxMSwxOS4zODcsOS42NjYsMTcuNjc4LDkuMjVhNC42NTYsNC42NTYsMCwwLDAtNS44NTMsMy4xNTgsOS4yOCw5LjI4LDAsMCwwLS4zNDEsMS4yNzNBMTAuODksMTAuODksMCwwLDAsMTEuMjksMTUuOTc2WlwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIuMDMzIDMwIDIuMDMzIDIgNy45NjcgMiA3Ljk2NyA0LjIyNyA0LjcyMyA0LjIyNyA0LjcyMyAyNy43NzMgNy45NjcgMjcuNzczIDcuOTY3IDMwIDIuMDMzIDMwXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjkuOTY3IDI5Ljk5OSAyNC4wMzMgMjkuOTk5IDI0LjAzMyAyNy43NzEgMjcuMjc3IDI3Ljc3MSAyNy4yNzcgNC4yMjYgMjQuMDMzIDQuMjI2IDI0LjAzMyAxLjk5OSAyOS45NjcgMS45OTkgMjkuOTY3IDI5Ljk5OVwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPmAsXG4gIFwiT0NhbWxcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIi03NDUuNjIzXCIgeTE9XCItOTIuNzZcIiB4Mj1cIi03NDUuNjIzXCIgeTI9XCItODUuMTA4XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoNzU4IDExMy4yOClcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmMjkxMDRcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZWM2ODEzXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiLTc0MS45OVwiIHkxPVwiLTEwOS40NzdcIiB4Mj1cIi03NDEuOTlcIiB5Mj1cIi04NS4wOTlcIiB4bGluazpocmVmPVwiI2FcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiY1wiIHgxPVwiLTc1Mi4xMTFcIiB5MT1cIi05My45MThcIiB4Mj1cIi03NTIuMTExXCIgeTI9XCItODUuMjg0XCIgeGxpbms6aHJlZj1cIiNhXCIvPjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX29jYW1sPC90aXRsZT48cGF0aCBkPVwiTTE2LjU3MSwyNS4yNDZhNC4yOCw0LjI4LDAsMCwwLS4wMzktLjcwOWMtLjA1OS0uMi0uMi0uMjE3LS4zLS4zNzRhMy41MDcsMy41MDcsMCwwLDEtLjUzMi0xLjQ3N2MtLjAyLS40NTMtLjItLjg4Ni0uMjE3LTEuMzM5LS4wMi0uMjE3LjAyLS40NTMsMC0uNjY5YTEuOTYzLDEuOTYzLDAsMCwwLS4wMzktLjMxNSwxLjEzMywxLjEzMywwLDAsMC0uMDM5LS4ybC4wNTktLjEzOGEyLjcyLDIuNzIsMCwwLDEsLjY1LS4wMzljLjI1NiwwLC41MTIuMDIuNzY4LjAyYTcuOTYxLDcuOTYxLDAsMCwwLDEuNTM2LS4wNTksMy43MjIsMy43MjIsMCwwLDAsMS45NDktLjg0Nyw0Ljk0Niw0Ljk0NiwwLDAsMCwxLjUzNi0yLjAwOGMuMTc3LS4zOTQuMTc3LTEuMDgzLjU1MS0xLjQuNDMzLS4zNzQsMS4xODEtLjMzNSwxLjY5My0uNTcxYTEuMTg3LDEuMTg3LDAsMCwxLC44MDctLjEzOGMuMjE3LjAzOS42My4zMTUuNzI5LS4wNTktLjA3OS0uMDM5LS4xLS4xMzgtLjEzOC0uMTc3LjQxNC0uMDM5LDAtMS0uMTU4LTEuMkEyLjIyNSwyLjIyNSwwLDAsMCwyNC4yNSwxM2EzLjUwOSwzLjUwOSwwLDAsMC0xLjUzNi0uMjE3Yy0uODg2LjE3Ny0uODI3LS4zMzUtMS4zMzktLjMzNS0uNjMsMC0xLjczMy4wMzktMS45My42M2ExLjU0LDEuNTQsMCwwLDEtLjMzNS41MTJjLS4xMzguMTc3LjAyLjM1NC0uMDM5LjU3MS0uMDc5LjIxNy0uMTc3Ljk4NS0uMjc2LDEuMjYtLjE3Ny40NTMtLjM5NCwxLjAyNC0uNzg4LDEuMDI0YTMuMTUyLDMuMTUyLDAsMCwxLTEuNDM3LS4wNzljLS4yNzYtLjEtLjcyOS0uMjU2LS45NDUtLjMzNS0xLjAyNC0uNDMzLTEuMi0uOTA2LTEuMi0uOTA2YTMuMDI2LDMuMDI2LDAsMCwxLS41MTItLjg2NmMtLjExOC0uNDE0LS4zMTUtLjc2OC0uMzk0LTFzLS4zLS41OTEtLjQ1My0uOTg1YTIuNjY3LDIuNjY3LDAsMCwwLS43MDktMS4wNjNjLS4zMTUtLjI3Ni0uNjEtLjcyOS0xLjI2LS41OTFhMS42NDEsMS42NDEsMCwwLDAtLjg2Ni4zMTVjLS4yMTcuMTc3LS4zLjU3MS0uNDkyLjg4Ni0uMTE4LjE3Ny0uMzE1LjcwOS0uNTEyLDEuMTYyYTEuOTI5LDEuOTI5LDAsMCwxLS4zMzUuNjVjLS4xMTguMDc5LS4yNTYuMi0uNDE0LjEzOGEuOTI0LjkyNCwwLDAsMS0uMzE1LS4yLDUuMzM0LDUuMzM0LDAsMCwxLS43MDktMS4xMjIsMTEuMSwxMS4xLDAsMCwwLS43ODgtMS4yNDEsMS4wMTYsMS4wMTYsMCwwLDAtLjk4NS0uNTUxYy0xLjAyNCwwLTEuMS41NzEtMS41NTYsMS40MThhNS41NzQsNS41NzQsMCwwLDEtLjY2OSwxLjRjLS4yMzYuMjU2LS45NDUsMS4zMzktMS40NTcsMS41MTZIMnY3LjYyYy4wMzktLjEuMDU5LS4yLjEtLjI3Ni4yLS40MTQuNjUtLjgwNy45MDYtMS4yMjFhMy41LDMuNSwwLDAsMCwuMzc0LS43MDksMy43NDMsMy43NDMsMCwwLDEsLjIzNi0uNzA5Ljc5NC43OTQsMCwwLDEsLjU3MS0uMzM1Yy4zNTQtLjA1OS42NS40OTIsMS4wODMuNzA5LjIuMDc5LDEuMDYzLjM5NCwxLjMxOS40NTMuNDMzLjEuOTA2LjIsMS4zMzkuMjc2LjIzNi4wMzkuNDUzLjA3OS43MDkuMWE3LjMsNy4zLDAsMCwxLDEuMDgzLjEsMi4yNzcsMi4yNzcsMCwwLDAtLjgwNywxLjIyMWMtLjE1OC40MzMtLjI3Ni45MjUtLjQ3MywxLjMzOS0uMjE3LjQ3My0uNjY5LjY2OS0uNjEsMS4yMjFhMi42NjgsMi42NjgsMCwwLDEsLjAyLjY4OSw0LjAwOSw0LjAwOSwwLDAsMS0uMjE3LjY4OWMtLjEuMzE1LS4yMTcsMS4zNTktLjM1NCwxLjY3NGwuOTA2LS4xMThoMEExMC42OTIsMTAuNjkyLDAsMCwwLDguNCwyNi4zODhhMy43MzcsMy43MzcsMCwwLDEsLjcyOS0xLjI4Yy4zMzUtLjM3NC4zMTUtLjg0Ny41MTItMS4zYTEyLjQ4OCwxMi40ODgsMCwwLDEsLjc2OC0xLjNjLjQ5Mi0uODA3LjgwNy0xLjgxMiwxLjg1MS0yLjAyOGEzLjMsMy4zLDAsMCwxLDEuMDI0LjcwOSw0LjQ1Miw0LjQ1MiwwLDAsMSwuODg2LDEuMSwxMi44NTEsMTIuODUxLDAsMCwxLC44ODYsMi42NzgsMS4yMjcsMS4yMjcsMCwwLDAsLjM5NC43MDksNS40NjIsNS40NjIsMCwwLDEsLjQzMy43MjljLjA3OS4xNzcuMi41NzEuMy43ODhhNi4yNjcsNi4yNjcsMCwwLDEsLjMxNS44MjdsLjg0Ny0uMDJoLjAydi0uMDJBOS43NTQsOS43NTQsMCwwLDEsMTYuNTcxLDI1LjI0NlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE2LjIxNywyNy4yMzVjLS4xLS4yLS4yMTctLjYxLS4zLS43ODhhNS40NjIsNS40NjIsMCwwLDAtLjQzMy0uNzI5LDEuMTE5LDEuMTE5LDAsMCwxLS4zOTQtLjcwOSwxMi40ODcsMTIuNDg3LDAsMCwwLS44ODYtMi42NzgsNC40NTIsNC40NTIsMCwwLDAtLjg4Ni0xLjEsMy4zLDMuMywwLDAsMC0xLjAyNC0uNzA5Yy0xLjA0NC4yLTEuMzU5LDEuMjIxLTEuODUxLDIuMDI4YTEyLjQ4OCwxMi40ODgsMCwwLDAtLjc2OCwxLjNjLS4yLjQzMy0uMTc3LjkyNS0uNTEyLDEuM2EzLjQ0MywzLjQ0MywwLDAsMC0uNzI5LDEuMjhjLS4wMzkuMS0uMTE4LDEuMDgzLS4yMTcsMS4zMTloMGwxLjUzNi0uMWMxLjQzNy4xLDEuMDI0LjY1LDMuMjQ5LjUzMmwzLjUyNS0uMTE4aDBBNi4yNjcsNi4yNjcsMCwwLDAsMTYuMjE3LDI3LjIzNVpcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTI2LjQ1NiwzLjhINS41NDRBMy41MjEsMy41MjEsMCwwLDAsMi4wMiw3LjMyOHY3LjY3OWgwYy41MTItLjE3NywxLjIyMS0xLjI2LDEuNDU3LTEuNTE2YTUuOTEzLDUuOTEzLDAsMCwwLC42NjktMS40Yy40NTMtLjgyNy41MzItMS40MTgsMS41NTYtMS40MThhMS4wMTYsMS4wMTYsMCwwLDEsLjk4NS41NTEsOS41NDcsOS41NDcsMCwwLDEsLjc4OCwxLjI0MSw0Ljg0OSw0Ljg0OSwwLDAsMCwuNzA5LDEuMTIyLDIsMiwwLDAsMCwuMzE1LjJjLjE1OC4wNTkuMy0uMDU5LjQxNC0uMTM4QTEuOTI5LDEuOTI5LDAsMCwwLDkuMjQ2LDEzYy4yLS40NTMuMzk0LS45NjUuNTEyLTEuMTYyLjItLjMxNS4yNzYtLjcwOS40OTItLjg4NmExLjU5LDEuNTksMCwwLDEsLjg2Ni0uMzE1Yy42NS0uMTM4Ljk0NS4zMTUsMS4yNi41OTFhMy4yODUsMy4yODUsMCwwLDEsLjcwOSwxLjA2M2MuMTU4LjM5NC4zNTQuNzY4LjQ1My45ODVhOC45NDYsOC45NDYsMCwwLDEsLjM5NCwxLDMuNzEzLDMuNzEzLDAsMCwwLC41MTIuODY2cy4xNzcuNDczLDEuMi45MDZhOC43NDksOC43NDksMCwwLDAsLjk0NS4zMzUsMy4xNTIsMy4xNTIsMCwwLDAsMS40MzcuMDc5Yy4zOTQsMCwuNjEtLjU3MS43ODgtMS4wMjQuMS0uMjc2LjIxNy0xLjA0NC4yNzYtMS4yNnMtLjEtLjM3NC4wMzktLjU3MWMuMTU4LS4yMTcuMjU2LS4yMzYuMzM1LS41MTIuMi0uNjEsMS4zLS42MywxLjkzLS42My41MzIsMCwuNDUzLjUxMiwxLjMzOS4zMzVhMy4yNDMsMy4yNDMsMCwwLDEsMS41MzYuMjE3LDIuMjI1LDIuMjI1LDAsMCwxLDEuMTQyLjU1MWMuMTU4LjIuNTcxLDEuMTYyLjE1OCwxLjIuMDM5LjAzOS4wNzkuMTM4LjEzOC4xNzctLjEuMzc0LS40OTIuMS0uNzI5LjA1OWExLjE4NywxLjE4NywwLDAsMC0uODA3LjEzOGMtLjUxMi4yMTctMS4yNDEuMi0xLjY5My41NzEtLjM3NC4zMTUtLjM3NCwxLS41NTEsMS40YTUuMTY3LDUuMTY3LDAsMCwxLTEuNTM2LDIuMDA4LDMuOSwzLjksMCwwLDEtMS45NDkuODQ3LDcuOTYxLDcuOTYxLDAsMCwxLTEuNTM2LjA1OWMtLjI1Ni0uMDItLjUxMi0uMDItLjc2OC0uMDItLjE1OCwwLS42NjktLjAyLS42NS4wMzlsLS4wNTkuMTM4YS43LjcsMCwwLDAsLjAzOS4yYy4wMi4xMTguMDIuMjE3LjAzOS4zMTUsMCwuMjE3LS4wMi40NTMsMCwuNjY5LjAyLjQ1My4yLjg2Ni4yMTcsMS4zMzlhMy4yNiwzLjI2LDAsMCwwLC41MzIsMS40NzdjLjEuMTU4LjIzNi4xNzcuMy4zNzRhNC4xNjMsNC4xNjMsMCwwLDEsLjAzOS43MDksOS42ODUsOS42ODUsMCwwLDAsLjgyNywyLjc1N3YuMDJoMGMuNTEyLS4wNzksMS4wNDQtLjI3NiwxLjcxMy0uMzc0LDEuMjQxLS4xNzcsMi45NTQtLjEsNC4wNTYtLjIsMi44LS4yNTYsNC4zMTIsMS4xNDIsNi44MTMuNTcxVjcuMzI4QTMuNTUxLDMuNTUxLDAsMCwwLDI2LjQ1NiwzLjhaTTE2LjAyLDIwLjM0M1pcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTguNDc4LDIzLjU3M2MuMi0uNDMzLjMxNS0uOTA2LjQ3My0xLjMzOWEyLjI3NywyLjI3NywwLDAsMSwuODA3LTEuMjIxLDcuMyw3LjMsMCwwLDAtMS4wODMtLjFjLS4yMzYtLjAyLS40NzMtLjA1OS0uNzA5LS4xLS40MzMtLjA3OS0uOTI1LS4xNzctMS4zMzktLjI3Ni0uMjU2LS4wNTktMS4xNDItLjM3NC0xLjMxOS0uNDUzLS40NTMtLjItLjc0OC0uNzY4LTEuMDgzLS43MDlhLjc5NC43OTQsMCwwLDAtLjU3MS4zMzUsMy43NDMsMy43NDMsMCwwLDAtLjIzNi43MDljLS4xLjIzNi0uMjU2LjQ3My0uMzc0LjcwOWExMi4yODksMTIuMjg5LDAsMCwwLS45MjUsMS4yYy0uMDM5LjEtLjA1OS4yLS4xLjN2NC43NDVhNS40LDUuNCwwLDAsMSwuNzI5LjE1OCw4Ljc3LDguNzcsMCwwLDAsNC4zNzEuMzU0bC4xNzctLjAyaDBjLjEzOC0uMzE1LjI1Ni0xLjM1OS4zNTQtMS42NzRhNS40OTQsNS40OTQsMCwwLDAsLjIxNy0uNjg5LDIuNjY4LDIuNjY4LDAsMCwwLS4wMi0uNjg5QzcuODA5LDI0LjI0Miw4LjI2MiwyNC4wNDUsOC40NzgsMjMuNTczWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2MpXCIvPmAsXG4gIFwiT3BlbkNMXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCIyOS42NjJcIiB5MT1cIjE4LjAyNlwiIHgyPVwiMjEuNDE5XCIgeTI9XCIyMC4yMzRcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cInJlZFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNmZjZhNmFcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCIyNC41ODhcIiB5MT1cIjkuNzQ4XCIgeDI9XCIxOC43NzZcIiB5Mj1cIjE1LjU2XCIgeGxpbms6aHJlZj1cIiNhXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImNcIiB4MT1cIjE4LjQ2NlwiIHkxPVwiNi42MTlcIiB4Mj1cIjE1LjkyNFwiIHkyPVwiMTMuNjAzXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjY2ZhNDBjXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2VkZDQ4MFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImRcIiB4MT1cIjEzLjE3XCIgeTE9XCI2LjUxXCIgeDI9XCIxMy4xN1wiIHkyPVwiMTIuOTk3XCIgeGxpbms6aHJlZj1cIiNjXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImVcIiB4MT1cIjguODA4XCIgeTE9XCI4LjQ4NlwiIHgyPVwiMTAuOTg4XCIgeTI9XCIxMy4xNjFcIiB4bGluazpocmVmPVwiI2NcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiZlwiIHgxPVwiNS41MDVcIiB5MT1cIjExLjQ3N1wiIHgyPVwiOC41NDZcIiB5Mj1cIjE0LjUxOVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzExYTExOVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMzN2FlM2RcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJnXCIgeDE9XCIzLjYzOVwiIHkxPVwiMTQuMjg1XCIgeDI9XCI2Ljg4M1wiIHkyPVwiMTYuMTU4XCIgeGxpbms6aHJlZj1cIiNmXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImhcIiB4MT1cIjIuMjY1XCIgeTE9XCIxNy43OTlcIiB4Mj1cIjUuMzc5XCIgeTI9XCIxOC45MzNcIiB4bGluazpocmVmPVwiI2ZcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiaVwiIHgxPVwiMlwiIHkxPVwiMjEuNjE0XCIgeDI9XCI0LjgzM1wiIHkyPVwiMjEuNjE0XCIgeGxpbms6aHJlZj1cIiNmXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImpcIiB4MT1cIjIwLjY2MlwiIHkxPVwiMTguOTQ5XCIgeDI9XCIxOC4wMjZcIiB5Mj1cIjE3LjQyOFwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjAuNVwiIHN0b3AtY29sb3I9XCIjNjQ2NDY0XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2NiY2JjYlwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImtcIiB4MT1cIjE2LjAyMVwiIHkxPVwiMjUuMjY0XCIgeDI9XCIxNi4wMjFcIiB5Mj1cIjIyLjY5MVwiIHhsaW5rOmhyZWY9XCIjalwiLz48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9vcGVuY2w8L3RpdGxlPjxwYXRoIGQ9XCJNMjcuODI4LDEzLjU3NGExNC42NzYsMTQuNjc2LDAsMCwxLC44MzUsMS41NDJBMTQuOTY0LDE0Ljk2NCwwLDAsMSwyOS45MiwyMi45SDIyLjEzM2ExMC4zNzcsMTAuMzc3LDAsMCwwLS45NjctNC40MjRaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0xNy43NTMsMTQuNDNhMTAuMDc0LDEwLjA3NCwwLDAsMSwyLjc3MiwyLjg3OGw2LjI3My01LjJhMTUuNTQsMTUuNTQsMCwwLDAtNC45ODgtNC4xNVpcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTE0Ljc4MSwxMy4wODZhOC44MjcsOC44MjcsMCwwLDEsMi4zNzYuOTY2TDIwLjY2Niw3LjQzYTEyLjcsMTIuNywwLDAsMC00LjY0NS0uOTUyWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2MpXCIvPjxwYXRoIGQ9XCJNMTQuMzY0LDEzbC42MTItNi40ODhhMTIuNDYsMTIuNDYsMCwwLDAtMy42MTEuODEzbC41MDcsNS42MzhBNy4yMTksNy4yMTksMCwwLDEsMTQuMzY0LDEzXCIgc3R5bGU9XCJmaWxsOnVybCgjZClcIi8+PHBhdGggZD1cIk0xMC45NDgsMTMuMTc5bC0uNjgzLTUuMzczQTE0LjU4OCwxNC41ODgsMCwwLDAsNy43NzMsOS4zNzlsMS43NCw0LjQyYTcuNTE4LDcuNTE4LDAsMCwxLDEuNDM1LS42MTlcIiBzdHlsZT1cImZpbGw6dXJsKCNlKVwiLz48cGF0aCBkPVwiTTguODYsMTQuMjA2LDYuNDc0LDEwLjUxMWMtLjQ1My40NC0uNzkuODItMS4wMDYsMS4wNzRxLS4yMjcuMjY3LS40MzYuNTM4TDcuNDgsMTUuMzg3YTguODcsOC44NywwLDAsMSwxLjM4LTEuMTgyXCIgc3R5bGU9XCJmaWxsOnVybCgjZilcIi8+PHBhdGggZD1cIk03LjA0NiwxNS44NzUsNC4zMzUsMTMuMTEyYTE0LjI1OSwxNC4yNTksMCwwLDAtMS4yNSwyLjQyOWwzLjAwNywxLjcxYTkuODI2LDkuODI2LDAsMCwxLC45NTQtMS4zNzZcIiBzdHlsZT1cImZpbGw6dXJsKCNnKVwiLz48cGF0aCBkPVwiTTUuNTI3LDE4LjM5M2wtMi43Ny0xLjk0NWExNS40NTIsMTUuNDUyLDAsMCwwLS42MywyLjgzbDIuOTA2LjYwN2ExMC4zNDMsMTAuMzQzLDAsMCwxLC40OTQtMS40OTJcIiBzdHlsZT1cImZpbGw6dXJsKCNoKVwiLz48cGF0aCBkPVwiTTQuODMzLDIwLjlhMTAuNjg0LDEwLjY4NCwwLDAsMC0uMSwySDIuMDkzYTE0LjMzMywxNC4zMzMsMCwwLDEtLjA2NC0yLjU3M1pcIiBzdHlsZT1cImZpbGw6dXJsKCNpKVwiLz48cGF0aCBkPVwiTTIyLjU1MSwxMi40NzgsMTQuNzUxLDIzLjFBMS41NDQsMS41NDQsMCwwLDEsMTcuNSwyNC40MjhaXCIgc3R5bGU9XCJmaWxsOnVybCgjailcIi8+PHBhdGggZD1cIk0xNi4wMjEsMjUuNTIyYTEuNTQ0LDEuNTQ0LDAsMSwxLDEuMDkyLS40NTJBMS41MzMsMS41MzMsMCwwLDEsMTYuMDIxLDI1LjUyMlpcIiBzdHlsZT1cImZpbGw6IzY0NjQ2NFwiLz48cGF0aCBkPVwiTTE3LjMwOCwyMy45NzhhMS4yODcsMS4yODcsMCwxLDEtLjM3Ny0uOTFBMS4yODMsMS4yODMsMCwwLDEsMTcuMzA4LDIzLjk3OFpcIiBzdHlsZT1cImZpbGw6dXJsKCNrKVwiLz5gLFxuICBcIlBhc2NhbFwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMTZcIiB5MT1cIi0wLjQ0M1wiIHgyPVwiMTZcIiB5Mj1cIjIyLjA0MlwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjAuMDIxXCIgc3RvcC1jb2xvcj1cIiNmZjBjMTVcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjOWEwYzBmXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfZGVscGhpPC90aXRsZT48Y2lyY2xlIGN4PVwiMTZcIiBjeT1cIjE2XCIgcj1cIjE0XCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0yNy41NDUsMTYuMjQzSDQuOTI0YS45MTQuOTE0LDAsMCwwLTEuMDkyLjgycS4wMzMuNDI5LjEuODQ5YTEyLjQsMTIuNCwwLDAsMCwyNC41MzIsMHEuMDc1LS41LjEwOC0xLjAyMUMyOC40NzgsMTYuNTIzLDI4LjIxMSwxNi4yMDcsMjcuNTQ1LDE2LjI0M1pcIiBzdHlsZT1cImZpbGw6I2ZmNjQ0M1wiLz48cG9seWxpbmUgcG9pbnRzPVwiMTguNDggMTEuNjQgMjMuNzA3IDcuMjY2IDE5Ljc4NyA1Ljg4IDE2IDExLjA1M1wiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCIxNS42OCAxMS4wMjYgMTguNjQgNS44OCAxNC44NTMgNS44OCAxMy4zMDcgMTEuMjkzXCIgc3R5bGU9XCJmaWxsOiNmYWU3ZTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjEzLjA0IDExLjM3MyAxMy42IDYuNzA2IDEwLjU4NyA3Ljk2IDExLjAxMyAxMi43NlwiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCIxMC43NDcgMTMgOS43ODcgOC43NiA3LjcwNyAxMC44NCA5LjY1MyAxNC42OFwiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCI5LjM4NyAxNS4wNTMgNy40OTMgMTIuMzc2IDYuNjQgMTQuNDY2IDkuMDQgMTYuNTE3XCIgc3R5bGU9XCJmaWxsOiNmYWU3ZTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjkuMDQgMTYuNzU3IDYuNjQgMTUuMjEzIDYuNDggMTcuNCA5LjIgMTguMzMzXCIgc3R5bGU9XCJmaWxsOiNmYWU3ZTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjkuMjI3IDE4Ljg0NiA2LjY0IDE4LjA0IDcuMjI3IDE5LjggOS41NDcgMTkuOFwiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCI5LjcwNyAyMC4wOTMgNy43MDcgMjAuMzg2IDguNjI3IDIxLjc0NiAxMC4yNjcgMjFcIiBzdHlsZT1cImZpbGw6I2ZhZTdlMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTIwLjAyMywxMy4wODlhNi42MSw2LjYxLDAsMCwwLTQuNTMtMkE2LjI5Myw2LjI5MywwLDAsMCwxMS4zLDIyLjA3bDQuOTQxLjEyOS0yLjA4LTQuMTZaXCIgc3R5bGU9XCJmaWxsOiNlZWU7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xNi41LDIyLjM2NmwtNS4yNjctLjEzOC0uMDQ0LS4wMzlhNi40NTMsNi40NTMsMCwwLDEsNC4zLTExLjI2NCw2Ljc4Nyw2Ljc4NywwLDAsMSw0LjY0MywyLjA1bC4xMjMuMTIzLTUuOSw0Ljk4MlptLTUuMTQtLjQ1NSw0LjYxNi4xMjFMMTMuOTYxLDE4bDUuODI1LTQuOTE5YTYuNDMsNi40MywwLDAsMC00LjI5Mi0xLjgzNSw2LjEzMyw2LjEzMywwLDAsMC00LjEzMSwxMC42NjdaXCIgc3R5bGU9XCJmaWxsOiNlZTRiMmVcIi8+PHBhdGggZD1cIk0xMi4wMTMsMjAuNDkzYy00LjE3My01LjgxMywyLjEwOS04LjE3MiwyLjQ3OC04LjQ1My40NTEtLjM0NC03LjU5LDEuNzg1LTMuMjI2LDguODhaXCIgc3R5bGU9XCJmaWxsOiNmMDRlMzE7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjAuNzIgMTIuNiAxMy41MiAxNy41NjcgMTMuNzMzIDE4LjU3MyAyMS40NjcgMTcuMDI2IDIwLjcyIDEyLjZcIiBzdHlsZT1cImZpbGw6I2VlZTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTEzLjYxLDE4Ljc2MSwxMy4zNDEsMTcuNWw3LjQ5NS01LjE3LjgxNCw0LjgyOFptLjA4OS0xLjEyMy4xNTguNzQ3TDIxLjI4MywxNi45LDIwLjYsMTIuODc0WlwiIHN0eWxlPVwiZmlsbDojZWU0YjJlXCIvPjxwYXRoIGQ9XCJNMTUuNzIzLDIxLjMxOWMtMy45My0uNjY4LTQuMjgzLjQyOC00LjI4My40MjhMMTAuMjY3LDI0LjQ0czEuMTItLjkwNyw1LjQ5MywwbC43Ni0xLjM4OFpcIiBzdHlsZT1cImZpbGw6I2RkMGMxMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTE0LjEyMiwyMS42Yy0uMDItLjItMS4xLS4zMTktMS42NzctLjEyMy0uNzMyLjI0OS0xLjIxOSwxLjE0Mi0xLjA0NSwxLjIxM2ExLjk3NSwxLjk3NSwwLDAsMSwxLjEyNS0uOTg2QzEzLjQ0NywyMS40OTMsMTQuMTQyLDIxLjgsMTQuMTIyLDIxLjZaXCIgc3R5bGU9XCJmaWxsOiNmZjZlNGY7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xNS41MiwxOC42MDZhMTEuMSwxMS4xLDAsMCwwLDEuNTQ3LDEuNDg3LDYuOSw2LjksMCwwLDEsMi43Miw0LjEwN2MtLjEwNywxLjA2Ny0xLjk3MywxLjc2LTEuOTczLDEuNzZsLTMuMzA3LTcuMTk0WlwiIHN0eWxlPVwiZmlsbDojZWVlO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTcuNzMsMjYuMTYxbC0zLjQ1Ny03LjUyMSwxLjMyLS4yMDguMDU3LjA4MWExMC44NjksMTAuODY5LDAsMCwwLDEuNTEyLDEuNDUxLDcsNywwLDAsMSwyLjc4Miw0LjIwN2wwLC4wMjIsMCwuMDIyYy0uMTE1LDEuMTUzLTIsMS44NjQtMi4wNzcsMS44OTRabS0yLjk5LTcuMjcsMy4xNTUsNi44NjNjLjQxNC0uMTc4LDEuNjMtLjc2MywxLjczLTEuNTQ4YTYuNzkzLDYuNzkzLDAsMCwwLTIuNjQ4LTMuOTgxbC0uMDEtLjAwN2ExMS45NCwxMS45NCwwLDAsMS0xLjUxNy0xLjQzOVpcIiBzdHlsZT1cImZpbGw6I2VlNGIyZVwiLz48cGF0aCBkPVwiTTI4LDEyLjc0MmMuMDI1LjM5NC4wMzQuNzkyLjAyNSwxLjE5NGExMy45NDYsMTMuOTQ2LDAsMCwxLTE5LjksMTIuM0ExMi44NiwxMi44NiwwLDAsMCwyOCwxMi43NDJaXCIgc3R5bGU9XCJmaWxsOiNlYWUwZGY7ZmlsbC1ydWxlOmV2ZW5vZGQ7b3BhY2l0eTowLjJcIi8+PHBhdGggZD1cIk0yLjM4MywxMy44OTNBMTMuOTQxLDEzLjk0MSwwLDAsMSwyNS43LDUuODNzLTUuMDA5LDUuOTc5LTEwLjU4NCw3LjkwN1MyLjM4MywxMy44OTMsMi4zODMsMTMuODkzWlwiIHN0eWxlPVwiZmlsbDojZWFlMGRmO29wYWNpdHk6MC4yXCIvPjxwYXRoIGQ9XCJNMy42MTgsMTguNjk0Yy0uMDQ0LS4zOTItLjA3Mi0uNzktLjA4My0xLjE5MUMzLjMyOSw5LjgwNywxMC4wMTIsNC4yLDE3LjcwOCwzLjk5MWExNC4yLDE0LjIsMCwwLDEsNS43MTksMS40NTgsMTMuMTI4LDEzLjEyOCwwLDAsMC03LjE4OC0yLjM2OWMtNy4xLjE5LTEzLjMwNiw1LjMtMTMuMTE2LDEyLjRBMTIuODczLDEyLjg3MywwLDAsMCwzLjYxOCwxOC42OTRaXCIgc3R5bGU9XCJmaWxsOiNlYWUwZGY7ZmlsbC1ydWxlOmV2ZW5vZGQ7b3BhY2l0eTowLjJcIi8+YCxcbiAgXCJQZXJsXCI6IGA8cGF0aCBkPVwiTTI5LjI1LDEzLjhhNi44ODgsNi44ODgsMCwwLDAtLjc0Mi0yLjI2OCwxLjAxMSwxLjAxMSwwLDAsMC0uMTcyLS4yMzMsOS40NzEsOS40NzEsMCwwLDEtMS43MjUtMi40LDguNjMyLDguNjMyLDAsMCwwLTEuMzk1LTIuMzgyQTYuOTA2LDYuOTA2LDAsMCwxLDI0LjEsNC42NDQsNC41NzIsNC41NzIsMCwwLDAsMjEuOTksMS43MjdhMS4wMDksMS4wMDksMCwwLDAtLjEtLjA1NCw4Ljg4Niw4Ljg4NiwwLDAsMC0xLjMtLjQ2OCwxLjAyMiwxLjAyMiwwLDAsMC0uMjYzLS4wMzUsMS4wMDksMS4wMDksMCwwLDAtLjIuMDIxLDUuNjA3LDUuNjA3LDAsMCwxLS44MDcuMTA3Yy0uMDUsMC0uMS0uMDA2LS4xNDktLjAwNmEyLjg0MiwyLjg0MiwwLDAsMC0xLjQxNi40NTNjLS4wOTQuMDUyLS4xODguMTA2LS4yODQuMTQ5cS0uMDQxLjAxOC0uMDc4LjAzOUExLjYzNywxLjYzNywwLDAsMSwxNy4wNjYsMmEzLjEwOSwzLjEwOSwwLDAsMC0uNzcyLjE5NCwxLDEsMCwwLDAtLjUwOC40ODMsMi4xODQsMi4xODQsMCwwLDEtLjQ2OS41QTQuMzgyLDQuMzgyLDAsMCwwLDE0LjU1NSw0YS45NjQuOTY0LDAsMCwwLS4xMTYuMjM0LDQuNjg3LDQuNjg3LDAsMCwxLTEuNTc0LDIuMiw2LjQ3MSw2LjQ3MSwwLDAsMC0uOC42MTMsMi43MzQsMi43MzQsMCwwLDAtLjYyNy0xLjYzNGMtLjAxNy0uMDE5LS4wMzUtLjAzOC0uMDUzLS4wNTZsMC0uMDE0YTIuMzc4LDIuMzc4LDAsMCwwLS4xMzUtLjU4NiwxLDEsMCwwLDAtLjEzMi0uMjM2QTUuMTY3LDUuMTY3LDAsMCwwLDkuNTExLDMuMTEzYS45ODguOTg4LDAsMCwwLS4zNDYtLjExOSwxLjUsMS41LDAsMCwxLS4xNDgtLjA3NywyLjA2LDIuMDYsMCwwLDAtMS0uMzExLDEuNDc2LDEuNDc2LDAsMCwwLS42ODEuMTY2Ljk4Ny45ODcsMCwwLDAtLjI3NC4yMDYsMS4zMjgsMS4zMjgsMCwwLDEtLjEyNS4wNjMsMS45LDEuOSwwLDAsMC0uOTA4Ljc3OCwyLjUzOSwyLjUzOSwwLDAsMC0uNTQxLjEwNiwxLjY1NiwxLjY1NiwwLDAsMS0uMzgzLjA1NywyLjMsMi4zLDAsMCwwLTEuNS41NDVsLS4xMDYuMWEyLjUzMywyLjUzMywwLDAsMC0xLDIuNTI1LDEuMDgsMS4wOCwwLDAsMCwuMDY4LjE2NUEyLjI5NCwyLjI5NCwwLDAsMCw0LjQ0Niw4LjQ3OGMtLjEuMjM4LS4yLjQ3My0uMzE0LjdhMS4wMDksMS4wMDksMCwwLDAtLjA4Ny4yOTNBMTEuMDUyLDExLjA1MiwwLDAsMCw0LDEyLjAzOWMwLC4wMiwwLC4wNC4wMDcuMDZhNS4yNzgsNS4yNzgsMCwwLDEsLjA0MS41NDcsMi45MjYsMi45MjYsMCwwLDAsLjkzMSwyLjRjLjAxNy4wMTQuMDM0LjAyNi4wNTIuMDM5bC4wMDguMDMxYTIuOCwyLjgsMCwwLDAsLjE1MS40NDcsMS4xODUsMS4xODUsMCwwLDAsLjYzMi42MTcsMS4yODksMS4yODksMCwwLDAsLjI0OC41NzEsMSwxLDAsMCwwLC4zMzIuMjc5LDIuNDUzLDIuNDUzLDAsMCwwLC40NjUuMTc2bC4wNjQuMDE4YS45NzYuOTc2LDAsMCwwLC4xOTIuMTcxQTUuODc5LDUuODc5LDAsMCwxLDcuODczLDE4YTEuMTMsMS4xMywwLDAsMCwxLjM1MS40MjcsMS41LDEuNSwwLDAsMCwuNzY1LjIxNSwxLjQyMSwxLjQyMSwwLDAsMCwuNjI0LS4xNDVsLjExNC0uMDI2Yy4wMjQuNDA4LjAzMy44MTcuMDI4LDEuMjIzYTEuMDQzLDEuMDQzLDAsMCwwLC4wMjYuMjQyLDEwLjc0NCwxMC43NDQsMCwwLDEsLjI2NiwxLjgyOC45MzEuOTMxLDAsMCwwLC4wMzEuMiw4LjQ5Miw4LjQ5MiwwLDAsMSwuMjY4LDEuODE1YzAsLjAzMSwwLC4wNjMuMDA4LjA5NGE2LjA4Myw2LjA4MywwLDAsMS0uNjEsMy41NzUuOTk0Ljk5NCwwLDAsMC0uMDg5LjI2MSwxLjA5MywxLjA5MywwLDAsMC0uMjM0LjA3OWwtLjA1LjAyMmEyLjAxMywyLjAxMywwLDAsMC0xLjIsMS4wNjUsMS4zMjIsMS4zMjIsMCwwLDAsLjA3NCwxLjA1NCwxLDEsMCwwLDAsLjMyNC4zNzEsMy41NDcsMy41NDcsMCwwLDAsMy41MDkuMywxLjU0NiwxLjU0NiwwLDAsMCwuODI5LTEuNjUzbC0uMDA1LS4wNjdhLjk4OS45ODksMCwwLDAsLjA1Ni0uMTU4LDExLjE4NiwxMS4xODYsMCwwLDAsLjI4OC0yLjA2OCw4LjkzOSw4LjkzOSwwLDAsMSwuMjU5LTEuODIyLDQuNzI3LDQuNzI3LDAsMCwwLC4zODktMS41ODhsLjA0Mi4wNDhhMTIuNjYxLDEyLjY2MSwwLDAsMCwxLjI1NSwxLjEyOSwxMC4zLDEwLjMsMCwwLDEsMS4xLjk4OWwtLjAxMS4wMzhhLjUzMi41MzIsMCwwLDEtLjM0Mi4zNTlsLS4wNDkuMDE3YTEuOTIxLDEuOTIxLDAsMCwwLTEuMTg0LDEuMzM0LDEuMzEzLDEuMzEzLDAsMCwwLC40NTIsMS4yMzQsMSwxLDAsMCwwLC40NDEuMjIyLDQuOTA4LDQuOTA4LDAsMCwwLDIuNzM1LS4xODEsMS41NTYsMS41NTYsMCwwLDAsLjI2Ni0uMTI0LDEuNDExLDEuNDExLDAsMCwwLC45Ny4zNzIsMi4zMjYsMi4zMjYsMCwwLDAsMS0uMjc0Yy4wNDktLjAyMy4xLS4wNDUuMTQtLjA2MmExLDEsMCwwLDAsLjYzNy0uODY0LDQuNTUzLDQuNTUzLDAsMCwwLS40NjgtMi4zNDMsMS41NiwxLjU2LDAsMCwwLS41MS0uNiwxMC44LDEwLjgsMCwwLDEsMS4zLTIuMTUsMi4xOTMsMi4xOTMsMCwwLDAsLjQ1MS0yLjAyNiwyLjUxOSwyLjUxOSwwLDAsMS0uMDQzLS4zOTQsMS4wNDYsMS4wNDYsMCwwLDAsMC0uMTQ4LDUuNzU2LDUuNzU2LDAsMCwxLC4wMTItMS4yNzksNy4xNjEsNy4xNjEsMCwwLDAsLjk1MSwxLjc5Myw3Ljg5Miw3Ljg5MiwwLDAsMSwuMTMzLDEuMSwxMC43MzMsMTAuNzMzLDAsMCwwLC4xMzMsMS4xODYsOS4zNiw5LjM2LDAsMCwxLS4yMjQsMy45LDEsMSwwLDAsMC0uMDMyLjM0aDBhLjk4Ljk4LDAsMCwwLS4xLjE3OSwyLjIzOCwyLjIzOCwwLDAsMC0uMzEyLDEuMjM1LDEuMDA3LDEuMDA3LDAsMCwwLC4wMzkuMiwxLjMxNSwxLjMxNSwwLDAsMCwxLjMyOC45NjNjLjA4NiwwLC4xNzctLjAwNi4yNjgtLjAxNGwuMDE5LDAsLjAzOC4wMTNhMi4xMDksMi4xMDksMCwwLDAsMi41MTctMS4wODgsMSwxLDAsMCwwLC4wNTgtLjczNSw1LjI4NSw1LjI4NSwwLDAsMS0uMjA4LTEuMDI3LDEuMDExLDEuMDExLDAsMCwwLS4wNDYtLjIxNyw2LjQ3LDYuNDcsMCwwLDEtLjIyMS0zLjIyLDEuMTEyLDEuMTEyLDAsMCwwLC4wMTUtLjExNCwzLjkwNywzLjkwNywwLDAsMSwuMDc0LS40NDMsMi43MzgsMi43MzgsMCwwLDAtLjE5My0yLjEsNC4zMzksNC4zMzksMCwwLDEsLjAyMS0uNDc2Yy4wMTEtLjE0Ny4wMjMtLjMuMDI3LS40NjNhMS41OSwxLjU5LDAsMCwwLC44NjItLjg1MSwxMi44MywxMi44MywwLDAsMCwuOTQ3LTIuMjMsMS43MTksMS43MTksMCwwLDAsLjE3Mi0xLjE4NSwxLjIzNCwxLjIzNCwwLDAsMCwuMTExLS4yNTFBMS40NjcsMS40NjcsMCwwLDAsMjkuMjUsMTMuOFpNMTguODYzLDIyLjc2OGMtLjAyNiwwLS4wNTMtLjAwOC0uMDgtLjAxbC0uMDI0LDBhMi43NDgsMi43NDgsMCwwLDEtLjIzNi0uMzIzYy0uMDU5LS4wODgtLjExOC0uMTc1LS4xNzgtLjI1OGEyLjI1MywyLjI1MywwLDAsMCwuMjA4LS4yMzQsMS4yNTUsMS4yNTUsMCwwLDAsLjYyOS0uMzIxQTMuMTg2LDMuMTg2LDAsMCwxLDE4Ljg2MywyMi43NjhaXCIgc3R5bGU9XCJmaWxsOiNlZGVkZWRcIi8+PHBhdGggZD1cIk0xOS4yODksMi4zYy0uNTQ4LS4wNjUtLjk2MS4zLTEuNDE5LjUwNi0uMzY4LjIwNi0uODE1LjE1Mi0xLjE4NS4zMDktLjI4Mi41NzktLjk0MS45MDgtMS4zLDEuNDQzYTUuNyw1LjcsMCwwLDEtMS45NDIsMi42OTQsNS40NjQsNS40NjQsMCwwLDAtMi4zNjgsMy4zOTRjLS4xNDUuMy0uMTIyLjc0Ni0uMjc3LDEtLjUxMS4xNDMtLjIzOS0uNTE2LS4zLS44MjUtLjA3NC0uNDcuMzQxLS43Ny4zNzMtMS4yMjZhMS44MzQsMS44MzQsMCwwLDAsLjIwOS0xLjA1M2MtLjA1Ni0uODE0LjE4OS0xLjgwNy0uMzkzLTIuNDc3LS4zNDktLjItLjIzOS0uNjIzLS4zNjYtLjk0N2E0LjIxNCw0LjIxNCwwLDAsMC0xLjMtMS4xMzljLS40MTktLjA0MS0uODA2LS41NDItMS4yMzItLjMyMy0uMjY2LjMwOS0uNzYzLjMwNS0uOTIyLjcxMy0uMS41MTYtLjY4OC4zNzQtMS4wNjguNS0uNDg4LjE4NS0xLjExOC4wMDYtMS41MTguMzgyLS40MTEuNDEtMS4wMzQuOTYxLS44MzUsMS42MDYuNDU3Ljg4MiwxLjY0NS40MzgsMi4zMTcuOTc0QTE3Ljk5LDE3Ljk5LDAsMCwxLDUuMDM2LDkuNjFhMTAuMDUxLDEwLjA1MSwwLDAsMC0uMDQ0LDIuMzMyYy4xMjMuNzczLS4wODMsMS43NzIuNjA2LDIuMzE5LjM4LjEzNy4zNTcuNTcyLjUuODg3LjEzNC4yOS40MjctLjExMy41NDMuMTkzLjMzOC4xODQuMDM3LjU2MS4yMi44LjI2My4xMzcuNjM5LjEyOC44MjIuNDI2YTYuODQ0LDYuODQ0LDAsMCwxLC45NzUuODA2Yy4yMy40NjcuNTMxLS40NTQuNzgzLS4xMDkuMTcuMjg1LjUwNi41MjIuODE5LjI4NWEyLjk5MywyLjk5MywwLDAsMCwxLjMyNC0uNTU2LDE4LjAzMywxOC4wMzMsMCwwLDEsLjE3MSwyLjcxOCwxMS43MzMsMTEuNzMzLDAsMCwxLC4yOSwyLDkuNDA5LDkuNDA5LDAsMCwxLC4zLDIuMDMsNy4xMTEsNy4xMTEsMCwwLDEtLjcwOSw0LjE2LDEuMDEyLDEuMDEyLDAsMCwxLS44MDcuOGMtLjI5MS4xMy0uOS4zNjYtLjY5Mi43NzZhMi41NDksMi41NDksMCwwLDAsMi41Mi4yMTRjLjUxLS4yNDMuMDczLS44NTguMzM0LTEuMjI2LjM0My0xLjMuMTc0LTIuNjkxLjU3NS0zLjk4NWEzLjc2MiwzLjc2MiwwLDAsMCwuMy0yLjFjLjA3OS0uNDQtLjEwNS0uOTY5LjE4Ny0xLjMyOWExLjgxMywxLjgxMywwLDAsMSwuNDgzLTEuMiwxNC43NjIsMTQuNzYyLDAsMCwwLC4xNDQtMi4wMjYsMy4yMTQsMy4yMTQsMCwwLDEsMS4yNjctLjEyN2MuMDE4LjM3NS0uMjcyLjgxMi0uMTksMS4yMzRBMS45NDgsMS45NDgsMCwwLDEsMTUuNSwyMC4zYTIuODQ5LDIuODQ5LDAsMCwwLC4xNjgsMi4zMDhjLjc4Mi44MzksMS44LDEuNDMyLDIuNTM2LDIuMzI3LjMxNC4yMDUuMi41MTcuMDM4Ljc4NGExLjUyOCwxLjUyOCwwLDAsMS0uOTg3LDEuMDM0Yy0uMzA4LjEyMS0uODA2LjU2Ni0uNDQyLjg4MmEzLjkwNiwzLjkwNiwwLDAsMCwyLjE3OC0uMTQ0Yy40NzYtLjE3MS4zLS43MzguNDg4LTEuMDg4LjMuMjMzLjQyMy43NjUuNzExLDEuMDY5LjMuNDMzLjgwNy4wNzMsMS4xNTYtLjA2MmEzLjU0OSwzLjU0OSwwLDAsMC0uMzcyLTEuODQyYy0uMTY3LS4zNzgtLjgtLjM4NS0uNzctLjg1MmExMS43NjEsMTEuNzYxLDAsMCwxLDEuNzEyLTNjLjUxLS40NzkuMTMtMS4xOTEuMTU4LTEuOEE2Ljc2NSw2Ljc2NSwwLDAsMSwyMy4xNTgsMTUuNWExNS44ODksMTUuODg5LDAsMCwwLC42OTIsMi4xNCw2LjIzLDYuMjMsMCwwLDAsMS4xLDIuMjQ2Yy4yMzcuODExLjE3NiwxLjcxLjMzMSwyLjU1MWExMC40NCwxMC40NCwwLDAsMS0uMjQyLDQuMzQ3Yy4wNC41MTgtLjQ1Ny45LS40MTUsMS40MDguMTQuNDY5LjcuMDkzLjk5LjI5YTEuMTEsMS4xMSwwLDAsMCwxLjMyNC0uNTcyLDYuMjEyLDYuMjEyLDAsMCwxLS4yNDctMS4yMjMsNy40NTQsNy40NTQsMCwwLDEtLjI1NS0zLjcxOWMuMDQ2LS42NjkuNDU3LTEuNS0uMDczLTIuMDcyLS4xNDgtLjYxOS4xLTEuMjg1LS4wNDktMS45MTVhMTIuODc3LDEyLjg3NywwLDAsMS0uMTIyLTQuOTMzYy4wOTMtLjIyNy4wMTMtLjY0OS4yNDctLjc3NWExLjg1MSwxLjg1MSwwLDAsMSwuMzE1LDEuMjMyLDMuNywzLjcsMCwwLDEsLjA3OSwyLjA4MWMtLjQyNC41MzEtLjE2MywxLjI0OC0uMTA5LDEuODUuMDY4LjQyMi41MTYuMTE4LjU4OS0uMTQ0YTExLjg1MSwxMS44NTEsMCwwLDAsLjk0NC0yLjI0MWMuMjY5LS4zNTYuMDE0LS43NywwLTEuMTQyLjQxMy0uMDQ5LjI1Ni0uNTA2LjAzNS0uN2E1LjkzLDUuOTMsMCwwLDAtLjY2Ny0yLjIsMTAuNDY0LDEwLjQ2NCwwLDAsMS0xLjk0MS0yLjcyM2MtLjUyOC0xLjYzOS0yLjA0Mi0yLjcyNi0yLjU1Ni00LjM3OWEzLjU1NiwzLjU1NiwwLDAsMC0xLjY1Mi0yLjMxN0E3Ljg4MSw3Ljg4MSwwLDAsMCwyMC4zMiwyLjE3LDYuNSw2LjUsMCwwLDEsMTkuMjg5LDIuM1ptLjQsMTQuNjZhMzguOTA3LDM4LjkwNywwLDAsMSwuNSw0LjI5MSw0LjE3NSw0LjE3NSwwLDAsMS0uNzYsMi41MTdjLS4xMi40MjUtLjQ4Ni4wMTItLjc1MS0uMDE2LS42NDMtLjAxOC0uODgyLS42ODMtMS4yMzItMS4xMDctLjM2LS4zNDQtLjEtLjguMTMzLTEuMTMxLjI1Mi0uMTc5LjM1LS41NzkuNzA4LS41NDguNC0uMDA3LjMxNi0uNDg3LjI2LS43NDMuMjM4LS4zNjIuMDkyLS44OTIuMzI4LTEuMjgzLjQxOS0uMTgyLjI5NC0uODIuNDQyLTEuMTguMTE1LS4yNTYuMDE3LS43NDkuMzM0LS44NTQuMDM3LS4wMDYuMDQ5LjAxMi4wNDIuMDUyWlwiIHN0eWxlPVwiZmlsbDojM2EzYzViXCIvPmAsXG4gIFwiUEhQXCI6IGA8ZGVmcz48cmFkaWFsR3JhZGllbnQgaWQ9XCJhXCIgY3g9XCItMTYuMTE0XCIgY3k9XCIyMC41MzJcIiByPVwiMTguMzg0XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoMjYuNTIgLTkuMzA3KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjVcIiBzdG9wLWNvbG9yPVwiIzRjNmI5NlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMyMzFmMjBcIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9waHA8L3RpdGxlPjxlbGxpcHNlIGN4PVwiMTZcIiBjeT1cIjE2XCIgcng9XCIxNFwiIHJ5PVwiNy4zNjVcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48ZWxsaXBzZSBjeD1cIjE2XCIgY3k9XCIxNlwiIHJ4PVwiMTMuNDUzXCIgcnk9XCI2LjgxOFwiIHN0eWxlPVwiZmlsbDojNjI4MGI2XCIvPjxwYXRoIGQ9XCJNMTguNzI1LDE4LjJsLjY2Ny0zLjQzNGExLjc1MiwxLjc1MiwwLDAsMC0uMzcyLTEuNzE5LDIuOTI5LDIuOTI5LDAsMCwwLTItLjUyNUgxNS44NjdsLjMzMS0xLjdhLjIxOS4yMTksMCwwLDAtLjIxNS0uMjZoLTEuNmEuMjE5LjIxOSwwLDAsMC0uMjE1LjE3N2wtLjcwOSwzLjY0NmEyLjA1MSwyLjA1MSwwLDAsMC0uNDc3LTEuMDU0LDIuNzgzLDIuNzgzLDAsMCwwLTIuMi0uODA3SDcuN2EuMjE5LjIxOSwwLDAsMC0uMjE1LjE3N2wtMS40MzQsNy4zOGEuMjE5LjIxOSwwLDAsMCwuMjE1LjI2SDcuODY5YS4yMTkuMjE5LDAsMCwwLC4yMTUtLjE3N2wuMzQ3LTEuNzg1aDEuMmE1LjE2Nyw1LjE2NywwLDAsMCwxLjU2OC0uMiwzLjA2OCwzLjA2OCwwLDAsMCwxLjE1LS42ODksMy41MzgsMy41MzgsMCwwLDAsLjY4LS44NDRsLS4yODcsMS40NzVhLjIxOS4yMTksMCwwLDAsLjIxNS4yNmgxLjZhLjIxOS4yMTksMCwwLDAsLjIxNS0uMTc3bC43ODctNC4wNTFoMS4wOTRjLjQ2NiwwLC42LjA5My42NC4xMzNzLjEuMTY1LjAyNS41NjlsLS42MzUsMy4yNjVhLjIxOS4yMTksMCwwLDAsLjIxNS4yNmgxLjYyQS4yMTkuMjE5LDAsMCwwLDE4LjcyNSwxOC4yWk0xMS4zMywxNS4zNjZhMS43NDksMS43NDksMCwwLDEtLjU2MSwxLjA5MiwyLjE3MSwyLjE3MSwwLDAsMS0xLjMxNS4zMjFIOC43NDJsLjUxNS0yLjY1MWguOTIxYy42NzcsMCwuOTQ5LjE0NSwxLjA1OS4yNjZBMS4xODEsMS4xODEsMCwwLDEsMTEuMzMsMTUuMzY2WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMjUuNTQ2LDEzLjMzMmEyLjc4MywyLjc4MywwLDAsMC0yLjItLjgwN0gyMC4yNTVhLjIxOS4yMTksMCwwLDAtLjIxNS4xNzdsLTEuNDM0LDcuMzhhLjIxOS4yMTksMCwwLDAsLjIxNS4yNmgxLjYwOGEuMjE5LjIxOSwwLDAsMCwuMjE1LS4xNzdsLjM0Ny0xLjc4NWgxLjJhNS4xNjcsNS4xNjcsMCwwLDAsMS41NjgtLjIsMy4wNjgsMy4wNjgsMCwwLDAsMS4xNS0uNjg5LDMuNDI1LDMuNDI1LDAsMCwwLDEuMDc2LTEuOTI3QTIuNTEyLDIuNTEyLDAsMCwwLDI1LjU0NiwxMy4zMzJabS0xLjY2NywyLjAzNGExLjc0OSwxLjc0OSwwLDAsMS0uNTYxLDEuMDkyQTIuMTcxLDIuMTcxLDAsMCwxLDIyLDE2Ljc3OEgyMS4yOWwuNTE1LTIuNjUxaC45MjFjLjY3NywwLC45NDkuMTQ1LDEuMDU5LjI2NkExLjE4MSwxLjE4MSwwLDAsMSwyMy44NzksMTUuMzY2WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTAuMTc4LDEzLjkwOGExLjY0NSwxLjY0NSwwLDAsMSwxLjIyMS4zMzgsMS4zNCwxLjM0LDAsMCwxLC4xNDUsMS4xNjEsMS45NDUsMS45NDUsMCwwLDEtLjY0MiwxLjIyM0EyLjM2MSwyLjM2MSwwLDAsMSw5LjQ1NCwxN0g4LjQ3NmwuNi0zLjA4OVpNNi4yNjEsMjAuMTI0SDcuODY5bC4zODEtMS45NjJIOS42MjdhNC45MzEsNC45MzEsMCwwLDAsMS41LS4xOTEsMi44NCwyLjg0LDAsMCwwLDEuMDctLjY0MiwzLjIwNywzLjIwNywwLDAsMCwxLjAxLTEuODA4LDIuMywyLjMsMCwwLDAtLjM4NS0yLjA0NCwyLjU2OCwyLjU2OCwwLDAsMC0yLjAzNS0uNzMySDcuN1pcIiBzdHlsZT1cImZpbGw6IzAwMDAwNFwiLz48cGF0aCBkPVwiTTE0LjM4NywxMC43ODJoMS42TDE1LjYsMTIuNzQ0aDEuNDIxYTIuNzY3LDIuNzY3LDAsMCwxLDEuODUuNDY4LDEuNTQ4LDEuNTQ4LDAsMCwxLC4zMDUsMS41MTZsLS42NjcsMy40MzRIMTYuODlsLjYzNS0zLjI2NWEuODg2Ljg4NiwwLDAsMC0uMDgtLjc2LDEuMTIxLDEuMTIxLDAsMCwwLS44LS4ySDE1LjM3bC0uODIyLDQuMjI4aC0xLjZaXCIgc3R5bGU9XCJmaWxsOiMwMDAwMDRcIi8+PHBhdGggZD1cIk0yMi43MjcsMTMuOTA4YTEuNjQ1LDEuNjQ1LDAsMCwxLDEuMjIxLjMzOCwxLjM0LDEuMzQsMCwwLDEsLjE0NSwxLjE2MSwxLjk0NSwxLjk0NSwwLDAsMS0uNjQyLDEuMjIzQTIuMzYxLDIuMzYxLDAsMCwxLDIyLDE3aC0uOTc4bC42LTMuMDg5Wk0xOC44MSwyMC4xMjRoMS42MDhsLjM4MS0xLjk2MmgxLjM3N2E0LjkzMSw0LjkzMSwwLDAsMCwxLjUtLjE5MSwyLjg0LDIuODQsMCwwLDAsMS4wNy0uNjQyLDMuMjA3LDMuMjA3LDAsMCwwLDEuMDEtMS44MDgsMi4zLDIuMywwLDAsMC0uMzg1LTIuMDQ0LDIuNTY4LDIuNTY4LDAsMCwwLTIuMDM1LS43MzJIMjAuMjQ0WlwiIHN0eWxlPVwiZmlsbDojMDAwMDA0XCIvPmAsXG4gIFwiUEwvU1FMXCI6IGA8cGF0aCBkPVwiTTguNTYyLDE1LjI1NkEyMS4xNTksMjEuMTU5LDAsMCwwLDE2LDE2LjQ0OWEyMS4xNTksMjEuMTU5LDAsMCwwLDcuNDM4LTEuMTk0YzEuODY0LS43MjcsMi41MjUtMS41MzUsMi41MjUtMlY5LjdhMTAuMzU3LDEwLjM1NywwLDAsMS0yLjA4NCwxLjA3NkEyMi4yOTMsMjIuMjkzLDAsMCwxLDE2LDEyLjA3OGEyMi4zNiwyMi4zNiwwLDAsMS03Ljg3OS0xLjNBMTAuMjgsMTAuMjgsMCwwLDEsNi4wMzcsOS43djMuNTVDNi4wMzcsMTMuNzI0LDYuNywxNC41MjgsOC41NjIsMTUuMjU2WlwiIHN0eWxlPVwiZmlsbDpyZWRcIi8+PHBhdGggZD1cIk04LjU2MiwyMS45NjFhMTUuNjExLDE1LjYxMSwwLDAsMCwyLjYuNzQxQTI0LjksMjQuOSwwLDAsMCwxNiwyMy4xNTVhMjQuOSwyNC45LDAsMCwwLDQuODM4LS40NTIsMTUuNjE0LDE1LjYxNCwwLDAsMCwyLjYtLjc0MWMxLjg2NC0uNzI3LDIuNTI1LTEuNTM1LDIuNTI1LTJ2LTMuMzlhMTAuNzA2LDEwLjcwNiwwLDAsMS0xLjY5Mi44MjVBMjMuNDksMjMuNDksMCwwLDEsMTYsMTguNzRhMjMuNDksMjMuNDksMCwwLDEtOC4yNzEtMS4zNDgsMTAuODI5LDEwLjgyOSwwLDAsMS0xLjY5Mi0uODI1VjE5Ljk2QzYuMDM3LDIwLjQyNiw2LjcsMjEuMjMxLDguNTYyLDIxLjk2MVpcIiBzdHlsZT1cImZpbGw6cmVkXCIvPjxwYXRoIGQ9XCJNMTYsMzBjNS41LDAsOS45NjMtMS43NDQsOS45NjMtMy44OTRWMjMuMjY5YTEwLjUsMTAuNSwwLDAsMS0xLjUzNS43NjJsLS4xNTcuMDYzQTIzLjQ4NywyMy40ODcsMCwwLDEsMTYsMjUuNDQ1YTIzLjQyMiwyMy40MjIsMCwwLDEtOC4yNzEtMS4zNTFjLS4wNTQtLjAyLS4xMDYtLjA0My0uMTU3LS4wNjNhMTAuNSwxMC41LDAsMCwxLTEuNTM1LS43NjJ2Mi44MzdDNi4wMzcsMjguMjU2LDEwLjUsMzAsMTYsMzBaXCIgc3R5bGU9XCJmaWxsOnJlZFwiLz48ZWxsaXBzZSBjeD1cIjE2XCIgY3k9XCI1Ljg5NFwiIHJ4PVwiOS45NjNcIiByeT1cIjMuODk0XCIgc3R5bGU9XCJmaWxsOnJlZFwiLz5gLFxuICBcIlBsYWluIHRleHRcIjogYDxwYXRoIGQ9XCJNMjIuMDM4LDJINi4zNzVhMS43NTUsMS43NTUsMCwwLDAtMS43NSwxLjc1djI0LjVBMS43NTUsMS43NTUsMCwwLDAsNi4zNzUsMzBoMTkuMjVhMS43NTUsMS43NTUsMCwwLDAsMS43NS0xLjc1VjYuODU2Wm0uNTI1LDIuODQ0LDEuNjYzLDEuNTMxSDIyLjU2M1pNNi4zNzUsMjguMjVWMy43NUgyMC44MTNWOC4xMjVoNC44MTNWMjguMjVaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+PHJlY3QgeD1cIjguMTI1XCIgeT1cIjE1LjA5N1wiIHdpZHRoPVwiMTMuMDc2XCIgaGVpZ2h0PVwiMS43NVwiIHN0eWxlPVwiZmlsbDojODI5ZWMyXCIvPjxyZWN0IHg9XCI4LjEyNVwiIHk9XCIyNC40MzlcIiB3aWR0aD1cIjkuNzYyXCIgaGVpZ2h0PVwiMS43NVwiIHN0eWxlPVwiZmlsbDojODI5ZWMyXCIvPjxyZWN0IHg9XCI4LjEyNVwiIHk9XCIxOS43NjNcIiB3aWR0aD1cIjE1Ljc1XCIgaGVpZ2h0PVwiMS43NVwiIHN0eWxlPVwiZmlsbDojODI5ZWMyXCIvPjxyZWN0IHg9XCI4LjEyNVwiIHk9XCIxMC4yM1wiIHdpZHRoPVwiMTUuNzVcIiBoZWlnaHQ9XCIxLjc1XCIgc3R5bGU9XCJmaWxsOiM4MjllYzJcIi8+YCxcbiAgXCJQbGFudFVNTFwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiLTMzLjQyM1wiIHkxPVwiLTI1MC45MTFcIiB4Mj1cIi0zMy4zNTNcIiB5Mj1cIi0yNTAuODU4XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMzcuMTM0LCAyNi4wMDEsIDEzLjU3NSwgLTE5LjM4NywgNDY3My40NzMsIC0zOTgyLjAxOSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM3Njc2NzZcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIi0zMi4xMDdcIiB5MT1cIi0yNDIuNTYzXCIgeDI9XCItMzIuMDI4XCIgeTI9XCItMjQyLjU4NlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDgxLjA4MSwgNTYuNzc0LCAxNy4zMDYsIC0yNC43MTUsIDY4MDQuMDIxLCAtNDE0OS42NDQpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjMDA3OWI5XCIvPjxzdG9wIG9mZnNldD1cIjFcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJjXCIgeDE9XCItMzMuMjgyXCIgeTE9XCItMjQzLjQyM1wiIHgyPVwiLTMzLjIyNFwiIHkyPVwiLTI0My40NTVcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg2MC4wMDMsIDQyLjAxNSwgMzQuMTg0LCAtNDguODIsIDEwMzQzLjAwNSwgLTEwNDY5LjA4NClcIiB4bGluazpocmVmPVwiI2JcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiZFwiIHgxPVwiMTIuMzU2XCIgeTE9XCIyNi4yNjhcIiB4Mj1cIjE0LjAxMVwiIHkyPVwiMjYuMjY4XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjNTk1OTU5XCIvPjxzdG9wIG9mZnNldD1cIjAuMDg3XCIgc3RvcC1jb2xvcj1cIiM2ZTZlNmVcIi8+PHN0b3Agb2Zmc2V0PVwiMC4yNDJcIiBzdG9wLWNvbG9yPVwiIzhjOGM4Y1wiLz48c3RvcCBvZmZzZXQ9XCIwLjQwNVwiIHN0b3AtY29sb3I9XCIjYTRhNGE0XCIvPjxzdG9wIG9mZnNldD1cIjAuNTc3XCIgc3RvcC1jb2xvcj1cIiNiNWI1YjVcIi8+PHN0b3Agb2Zmc2V0PVwiMC43NjVcIiBzdG9wLWNvbG9yPVwiI2JmYmZiZlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNjMmMyYzJcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJlXCIgeDE9XCIxOC4yOTFcIiB5MT1cIjI2LjE3MVwiIHgyPVwiMTkuOTQ2XCIgeTI9XCIyNi4xNzFcIiB4bGluazpocmVmPVwiI2RcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiZlwiIHgxPVwiMjQuNDRcIiB5MT1cIjI2LjE3MVwiIHgyPVwiMjYuMDk2XCIgeTI9XCIyNi4xNzFcIiB4bGluazpocmVmPVwiI2RcIi8+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfcGxhbnR1bWw8L3RpdGxlPjxwb2x5Z29uIHBvaW50cz1cIjIwLjMwNSAxNy44NzIgMjcuMTYgMjIuNDE4IDIxLjcyIDI1LjQ5MyAxNC44NjEgMjAuOTk5IDIwLjMwNSAxNy44NzJcIiBzdHlsZT1cImZpbGw6IzFjMGE0MlwiLz48cGF0aCBkPVwiTTIxLjcxNiwyNS42MTlsLS4wNTUtLjAzNi03LjAwNS00LjU5LDUuNjUzLTMuMjQ3LDcuMDU2LDQuNjhabS02LjY1LTQuNjEzLDYuNjU4LDQuMzYyLDUuMjMxLTIuOTU3TDIwLjMsMThaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI2LjQwMSAxMS45MDkgMjkuNDE4IDEzLjU5MiAyNy4wNyAxNS4wODggMjQuMjEzIDEzLjI0NyAyNi40MDEgMTEuOTA5XCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0yNy4wNjksMTUuMjE1bC0zLjA1OC0xLjk3LDIuMzg3LTEuNDYsMy4yMjgsMS44Wm0tMi42NTQtMS45NjZMMjcuMDcsMTQuOTYsMjkuMjA4LDEzLjZsLTIuOC0xLjU2NVpcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTQuNDk4IDE3LjgwNyAyMS4zNTQgMjIuMzU0IDE1LjkxNCAyNS40MjkgOS4wNTUgMjAuOTM1IDE0LjQ5OCAxNy44MDdcIiBzdHlsZT1cImZpbGw6I2ZmYmQzZlwiLz48cGF0aCBkPVwiTTE1LjkxLDI1LjU1NGwtLjA1NS0uMDM2TDguODUsMjAuOTI5LDE0LjUsMTcuNjgxbDcuMDU2LDQuNjhaTTkuMjYsMjAuOTQxLDE1LjkxOCwyNS4zbDUuMjMxLTIuOTU3LTYuNjU0LTQuNDEzWlwiLz48cG9seWdvbiBwb2ludHM9XCI3Ljk5IDE3Ljk2NiAxNC45NTQgMjIuMzY2IDkuNTc3IDI1LjUwNCAyLjIxOCAyMC44NDkgNy45OSAxNy45NjZcIiBzdHlsZT1cImZpbGw6I2ExMWY0MFwiLz48cGF0aCBkPVwiTTkuNTc1LDI1LjYyOSwyLDIwLjgzOGw2LTMsNy4xNjQsNC41MjdaTTIuNDM2LDIwLjg2LDkuNTgsMjUuMzc4bDUuMTY4LTMuMDE2TDcuOTg0LDE4LjA4OVpcIi8+PHBvbHlnb24gcG9pbnRzPVwiMi4xMTEgMjEuMDIxIDkuNDQzIDI1LjUxNSA5LjQ0MyAyOS4wNjMgMi4xMTEgMjQuMzMyIDIuMTExIDIxLjAyMVwiIHN0eWxlPVwiZmlsbDp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNOS41NSwyOS4yNiwyLDI0LjM5MVYyMC44MjlMOS41NSwyNS40NTVaTTIuMjE4LDI0LjI3NGw3LjExOCw0LjU5MlYyNS41NzVMMi4yMTgsMjEuMjEzWlwiLz48cG9seWdvbiBwb2ludHM9XCIyNC4wNzEgMTMuMzQzIDI3LjAwOSAxNS4yMjIgMjcuMDA5IDIyLjEzMSAyNC4wNzEgMjAuMjQ3IDI0LjA3MSAxMy4zNDNcIiBzdHlsZT1cImZpbGw6dXJsKCNjKVwiLz48cGF0aCBkPVwiTTI3LjA2MywyMi4yMjlsLTMuMDQ1LTEuOTUzVjEzLjI0NWwzLjA0NSwxLjk0N1ptLTIuOTM4LTIuMDEyLDIuODMxLDEuODE1VjE1LjI1MWwtMi44MzEtMS44MVpcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjcuMTQ5IDIyLjUyNiAyNy4xNDkgMTUuMTk0IDI5LjUxNCAxMy43NzUgMjkuNTE0IDI5LjE0OSAyOC4zMzEgMjkuMTQ5IDkuNjQ2IDI5LjE0OSA5LjY0NiAyNS42MDEgMTUuMDg2IDIyLjUyNiAxNS43ODUgMjUuNjAxIDE1Ljc5NiAyNS42MDEgMjEuNDcyIDIyLjUyNiAyMS44OTEgMjUuNjAxIDIxLjk0NSAyNS42MDEgMjcuMTQ5IDIyLjUyNlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMjkuNjIxLDI5LjI1Nkg5LjUzOVYyNS41MzhsNS42Mi0zLjE3Ny43LDMuMDgzLDUuNy0zLjA4Ny40MjIsMy4xLDUuMDYxLTIuOTkxVjE1LjEzM2wyLjU4LTEuNTQ4Wk05Ljc1MywyOS4wNDFIMjkuNDA3VjEzLjk2NGwtMi4xNTEsMS4yOXY3LjMzMmwtLjA1My4wMzEtNS4yMjksMy4wOUgyMS44bC0uNDExLTMuMDE0LTUuNTY0LDMuMDE0SDE1LjdsLS42ODYtMy4wMTgtNS4yNiwyLjk3M1pcIi8+PHJlY3QgeD1cIjEyLjM1NlwiIHk9XCIyNS40NFwiIHdpZHRoPVwiMS42NTZcIiBoZWlnaHQ9XCIxLjY1NlwiIHJ4PVwiMC4yMTVcIiByeT1cIjAuMjE1XCIgc3R5bGU9XCJmaWxsOnVybCgjZClcIi8+PHBhdGggZD1cIk0xMy44LDI3LjJIMTIuNTdhLjMyMi4zMjIsMCwwLDEtLjMyMi0uMzIyVjI1LjY1NWEuMzIyLjMyMiwwLDAsMSwuMzIyLS4zMjJIMTMuOGEuMzIyLjMyMiwwLDAsMSwuMzIyLjMyMnYxLjIyNkEuMzIyLjMyMiwwLDAsMSwxMy44LDI3LjJaTTEyLjU3LDI1LjU0N2EuMTA4LjEwOCwwLDAsMC0uMTA3LjEwN3YxLjIyNmEuMTA4LjEwOCwwLDAsMCwuMTA3LjEwN0gxMy44YS4xMDguMTA4LDAsMCwwLC4xMDctLjEwN1YyNS42NTVhLjEwOC4xMDgsMCwwLDAtLjEwNy0uMTA3WlwiLz48cmVjdCB4PVwiMTguMjkxXCIgeT1cIjI1LjM0M1wiIHdpZHRoPVwiMS42NTZcIiBoZWlnaHQ9XCIxLjY1NlwiIHJ4PVwiMC4yMTVcIiByeT1cIjAuMjE1XCIgc3R5bGU9XCJmaWxsOnVybCgjZSlcIi8+PHBhdGggZD1cIk0xOS43MzIsMjcuMTA2SDE4LjUwNWEuMzIyLjMyMiwwLDAsMS0uMzIyLS4zMjJWMjUuNTU4YS4zMjIuMzIyLDAsMCwxLC4zMjItLjMyMmgxLjIyNmEuMzIyLjMyMiwwLDAsMSwuMzIyLjMyMnYxLjIyNkEuMzIyLjMyMiwwLDAsMSwxOS43MzIsMjcuMTA2Wm0tMS4yMjYtMS42NTZhLjEwOC4xMDgsMCwwLDAtLjEwNy4xMDd2MS4yMjZhLjEwOC4xMDgsMCwwLDAsLjEwNy4xMDdoMS4yMjZhLjEwOC4xMDgsMCwwLDAsLjEwNy0uMTA3VjI1LjU1OGEuMTA4LjEwOCwwLDAsMC0uMTA3LS4xMDdaXCIvPjxyZWN0IHg9XCIyNC40NFwiIHk9XCIyNS4zNDNcIiB3aWR0aD1cIjEuNjU2XCIgaGVpZ2h0PVwiMS42NTZcIiByeD1cIjAuMjE1XCIgcnk9XCIwLjIxNVwiIHN0eWxlPVwiZmlsbDp1cmwoI2YpXCIvPjxwYXRoIGQ9XCJNMjUuODgxLDI3LjEwNkgyNC42NTVhLjMyMi4zMjIsMCwwLDEtLjMyMi0uMzIyVjI1LjU1OGEuMzIyLjMyMiwwLDAsMSwuMzIyLS4zMjJoMS4yMjZhLjMyMi4zMjIsMCwwLDEsLjMyMi4zMjJ2MS4yMjZBLjMyMi4zMjIsMCwwLDEsMjUuODgxLDI3LjEwNlptLTEuMjI2LTEuNjU2YS4xMDguMTA4LDAsMCwwLS4xMDcuMTA3djEuMjI2YS4xMDguMTA4LDAsMCwwLC4xMDcuMTA3aDEuMjI2YS4xMDguMTA4LDAsMCwwLC4xMDctLjEwN1YyNS41NThhLjEwOC4xMDgsMCwwLDAtLjEwNy0uMTA3WlwiLz48cGF0aCBkPVwiTTI3LjIxNSwxMS4yM2MtLjA1Mi4wNjktLjQxNy0uMjYyLS42NTMtLjUyNmE0LjQwOCw0LjQwOCwwLDAsMS0uNTE2LS43M0EyLjYsMi42LDAsMCwxLDI1LjcsOS4yYTIuMzU4LDIuMzU4LDAsMCwxLS4wNTItLjY4MiwyLjk1OSwyLjk1OSwwLDAsMSwuMTI5LS43NDksMy4xNDIsMy4xNDIsMCwwLDEsLjc4Ny0xLjIwNywxNS41MzIsMTUuNTMyLDAsMCwwLDEuMjgzLTEuNCwzLjA2MiwzLjA2MiwwLDAsMCwuNDc5LS45MjcsMy45NzksMy45NzksMCwwLDAsLjE1MS0uODU1Yy4wMTktLjM2NC0uMDI1LS41OTMuMDIzLS42MTNzLjIxNS4yNzQuMjg3LjU2NGEzLjE2NywzLjE2NywwLDAsMS0uNDU4LDIuMSw2LjksNi45LDAsMCwxLTEuMDk0LDEuNDQ4LDIuOCwyLjgsMCwwLDAtLjg0OSwxLjIzNEEyLjQ2NiwyLjQ2NiwwLDAsMCwyNi4zLDguOGEzLjQ2NSwzLjQ2NSwwLDAsMCwuNDc2LDEuNTQyQzI3LjA2NCwxMC45MTQsMjcuMjU2LDExLjE3NSwyNy4yMTUsMTEuMjNaXCIgc3R5bGU9XCJmaWxsOiNlYTJkMmVcIi8+PHBhdGggZD1cIk0yNy4xOTMsMTEuMjY2Yy0uMTI0LDAtLjQ5Mi0uMzY1LS42NTEtLjU0NGE0LjQ3OCw0LjQ3OCwwLDAsMS0uNTItLjczNCwyLjYyOCwyLjYyOCwwLDAsMS0uMzQ2LS43ODEsMi4zNzUsMi4zNzUsMCwwLDEtLjA1My0uNjksMi45NzgsMi45NzgsMCwwLDEsLjEzLS43NTYsMy4yMDgsMy4yMDgsMCwwLDEsLjc5My0xLjIxNmMuMjk0LS4zMzEuNS0uNTI4LjY1OS0uNjg2YTQuMzkzLDQuMzkzLDAsMCwwLC42MjItLjcxMSwzLjA1MiwzLjA1MiwwLDAsMCwuNDc2LS45MTksMy45NTEsMy45NTEsMCwwLDAsLjE1LS44NDljLjAwOC0uMTU5LDAtLjI5NCwwLS4zOTMsMC0uMTU5LS4wMDYtLjIyNS4wMzgtLjI0M2EuMDUuMDUsMCwwLDEsLjA0MywwLDEuMjI2LDEuMjI2LDAsMCwxLC4yOC41NzksMy4xNjcsMy4xNjcsMCwwLDEtLjQ2LDIuMTIxLDYuOTI4LDYuOTI4LDAsMCwxLTEuMSwxLjQ1M2MtLjA1NS4wNi0uMTA5LjExNi0uMTYyLjE3MWEyLjMsMi4zLDAsMCwwLS42ODEsMS4wNTIsMi40NywyLjQ3LDAsMCwwLS4wODIuNjczLDMuNDU4LDMuNDU4LDAsMCwwLC40NzMsMS41M2MuMTE0LjIzMS4yMTUuNDE1LjI4OS41NDkuMTI5LjIzNS4xNzguMzIzLjE0Mi4zNjloMGEuMDUxLjA1MSwwLDAsMS0uMDQuMDJaTTI4LjUxMiwyLjhhLjg2My44NjMsMCwwLDAsMCwuMTljMCwuMS4wMDcuMjM2LDAsLjRhNC4wMjEsNC4wMjEsMCwwLDEtLjE1Mi44NjEsMy4xMDYsMy4xMDYsMCwwLDEtLjQ4My45MzQsNC40MzcsNC40MzcsMCwwLDEtLjYyOS43MTljLS4xNjIuMTU4LS4zNjQuMzU0LS42NTcuNjgzYTMuMTY4LDMuMTY4LDAsMCwwLS43ODIsMS4yLDIuOTMzLDIuOTMzLDAsMCwwLS4xMjguNzQzLDIuMzI1LDIuMzI1LDAsMCwwLC4wNTIuNjc1LDIuNTksMi41OSwwLDAsMCwuMzQxLjc2Nyw0LjQyMiw0LjQyMiwwLDAsMCwuNTEzLjcyNSwyLjAzNSwyLjAzNSwwLDAsMCwuNjExLjUyNiwxLjE4MywxLjE4MywwLDAsMC0uMTQ3LS4zMWMtLjA3NC0uMTM0LS4xNzUtLjMxOC0uMjktLjU1MUEzLjUsMy41LDAsMCwxLDI2LjI3OCw4LjhhMi41MywyLjUzLDAsMCwxLC4wODQtLjY4OCwyLjM3NSwyLjM3NSwwLDAsMSwuNjk0LTEuMDc1Yy4wNTItLjA1NS4xMDYtLjExMS4xNjEtLjE3MWE2Ljg3OSw2Ljg3OSwwLDAsMCwxLjA5LTEuNDQyLDMuMTE5LDMuMTE5LDAsMCwwLC40NTYtMi4wODNBMS4yODEsMS4yODEsMCwwLDAsMjguNTEyLDIuOFpcIi8+PHBhdGggZD1cIk0yOS45NzIsNi4wODdjLS4wMTktLjA4OC0uNDMyLS4wNC0uNzY2LjA3M2EyLjYsMi42LDAsMCwwLTEuMDU5LjcyMiwyLjgsMi44LDAsMCwwLS45MTYsMS44NTUsMi45NzIsMi45NzIsMCwwLDAsLjI1OCwxLjA2Yy4yMjEuNTcyLjQ1NS43NzMuNDQ0LDEuMjI1LS4wMDcuMy0uMTE0LjQ4NC0uMDQ4LjU0OXMuMzE0LS4xLjQ2Mi0uMzEzYTEuOCwxLjgsMCwwLDAsLjI1OS0xLjAyMmMtLjA0Ni0uODE1LS42LTEuMDE1LS42MDgtMS44YTEuODU4LDEuODU4LDAsMCwxLC4xMjktLjY3NkMyOC41Nyw2LjUwOSwzMC4wMDgsNi4yNTIsMjkuOTcyLDYuMDg3WlwiIHN0eWxlPVwiZmlsbDojZWEyZDJlXCIvPjxwYXRoIGQ9XCJNMjcuOTM0LDExLjYxN2EuMDk0LjA5NCwwLDAsMS0uMDY5LS4wMjZjLS4wNDYtLjA0Ni0uMDMtLjEyMi0uMDA1LS4yMzdhMS43MTgsMS43MTgsMCwwLDAsLjA0NS0uMzMxLDEuMzc0LDEuMzc0LDAsMCwwLS4yMTQtLjcyLDUsNSwwLDAsMS0uMjI4LS40OTUsMi45OCwyLjk4LDAsMCwxLS4yNTktMS4wNywyLjgxLDIuODEsMCwwLDEsLjkyMy0xLjg3NCwyLjY0LDIuNjQsMCwwLDEsMS4wNy0uNzI5LDEuNDgyLDEuNDgyLDAsMCwxLC43NjYtLjFBLjA2NS4wNjUsMCwwLDEsMzAsNi4wODFoMGMuMDE1LjA3LS4wOTIuMTIxLS4zMDYuMjI0YTIuNzMsMi43MywwLDAsMC0xLjU0MiwxLjQ2MywxLjgyNywxLjgyNywwLDAsMC0uMTI3LjY2NywxLjY0NSwxLjY0NSwwLDAsMCwuMjkxLjg4NSwxLjg4OSwxLjg4OSwwLDAsMSwuMzE3LjkxNCwxLjgxNCwxLjgxNCwwLDAsMS0uMjY0LDEuMDM5LjgwOS44MDksMCwwLDEtLjQyMS4zNDJabTEuODg5LTUuNTQ5YTIuMTE3LDIuMTE3LDAsMCwwLS42MDguMTE3LDIuNTg4LDIuNTg4LDAsMCwwLTEuMDQ4LjcxNSwyLjc2NCwyLjc2NCwwLDAsMC0uOTA5LDEuODM3LDIuOTM1LDIuOTM1LDAsMCwwLC4yNTYsMS4wNSw0Ljk1NSw0Ljk1NSwwLDAsMCwuMjI1LjQ5LDEuNDMzLDEuNDMzLDAsMCwxLC4yMi43NDUsMS43NjUsMS43NjUsMCwwLDEtLjA0Ny4zNDFjLS4wMTkuMDkxLS4wMzUuMTYzLS4wMDkuMTg4YS4wNDYuMDQ2LDAsMCwwLC4wMzguMDEuNzY5Ljc2OSwwLDAsMCwuMzgyLS4zMiwxLjc5MywxLjc5MywwLDAsMCwuMjU0LTEuMDA1LDEuODQ0LDEuODQ0LDAsMCwwLS4zMS0uODksMS43MTEsMS43MTEsMCwwLDEtLjMtLjkxMSwxLjg3NywxLjg3NywwLDAsMSwuMTMtLjY4NkEyLjc3NiwyLjc3NiwwLDAsMSwyOS42Nyw2LjI1N2MuMTI2LS4wNjEuMjgzLS4xMzYuMjc3LS4xNjRsLS4wMDgtLjAwN0EuMjY0LjI2NCwwLDAsMCwyOS44MjMsNi4wNjhaXCIvPmAsXG4gIFwiUG93ZXJRdWVyeVwiOiBgPHBhdGggZD1cIk0zMCwyNS41ODNIMjUuNzU3VjE1LjM3OGE4LjI3MSw4LjI3MSwwLDAsMC0uODMyLTQuMjYxQTMuMDYxLDMuMDYxLDAsMCwwLDIyLjExOCw5LjhhMy4zODMsMy4zODMsMCwwLDAtMi44MjYsMS42NjQsNi43OTEsNi43OTEsMCwwLDAtMS4xNjEsMy45ODdWMjUuNTgzSDEzLjg2OVYxNS4wMzFxMC01LjIzMS0zLjY5NC01LjIzMWEzLjMzMiwzLjMzMiwwLDAsMC0yLjgyNiwxLjU3Myw2LjkzNSw2LjkzNSwwLDAsMC0xLjEwNiw0LjA3OFYyNS41ODNIMlY2Ljg1Nkg2LjI0M1Y5LjgxOGguMDczYTYuNDg4LDYuNDg4LDAsMCwxLDUuOTA3LTMuNCw1LjU2OSw1LjU2OSwwLDAsMSwzLjM5MywxLjA3QTUuMzI4LDUuMzI4LDAsMCwxLDE3LjYsMTAuMjk0YTYuNjgzLDYuNjgzLDAsMCwxLDYuMjE4LTMuODc3UTMwLDYuNDE3LDMwLDE0LjA0M1pcIiBzdHlsZT1cImZpbGw6I2NmY2ZjZlwiLz5gLFxuICBcIlBvd2VyU2hlbGxcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjIzLjMyNVwiIHkxPVwiLTExOC41NDNcIiB4Mj1cIjcuMjZcIiB5Mj1cIi0xMDQuMTkzXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMSwgMCwgMCwgLTEsIDAsIC05NilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM1MzkxZmVcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjM2U2ZGJmXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiNy4xXCIgeTE9XCItMTA0LjAwMlwiIHgyPVwiMjMuMDAxXCIgeTI9XCItMTE4LjI5MlwiIHhsaW5rOmhyZWY9XCIjYVwiLz48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9wb3dlcnNoZWxsPC90aXRsZT48cGF0aCBkPVwiTTMuMTc0LDI2LjU4OWExLjE1NCwxLjE1NCwwLDAsMS0uOTI4LS40MjMsMS4yMzQsMS4yMzQsMCwwLDEtLjIxLTEuMDUyTDYuMjMzLDYuNzhBMS44LDEuOCwwLDAsMSw3LjkxNCw1LjQxSDI4LjgyNmExLjE1NywxLjE1NywwLDAsMSwuOTI4LjQyMywxLjIzNSwxLjIzNSwwLDAsMSwuMjEsMS4wNTJsLTQuMiwxOC4zMzVhMS44LDEuOCwwLDAsMS0xLjY4MSwxLjM3SDMuMTc0WlwiIHN0eWxlPVwiZmlsbC1ydWxlOmV2ZW5vZGQ7ZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNNy45MTQsNS42NDZIMjguODI2YS45MTMuOTEzLDAsMCwxLC45MDgsMS4xODdsLTQuMiwxOC4zMzRhMS41NzUsMS41NzUsMCwwLDEtMS40NTEsMS4xODdIMy4xNzRhLjkxMy45MTMsMCwwLDEtLjkwOC0xLjE4N2w0LjItMTguMzM0QTEuNTc0LDEuNTc0LDAsMCwxLDcuOTE0LDUuNjQ2WlwiIHN0eWxlPVwiZmlsbC1ydWxlOmV2ZW5vZGQ7ZmlsbDp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNMTYuMDQsMjEuNTQ0aDUuMDg2YTEuMTE4LDEuMTE4LDAsMCwxLDAsMi4yMzRIMTYuMDRhMS4xMTgsMS4xMTgsMCwwLDEsMC0yLjIzNFpcIiBzdHlsZT1cImZpbGw6IzJjNTU5MTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTE5LjMzOSwxNi41NzhhMS43NjIsMS43NjIsMCwwLDEtLjU5MS42TDkuMzA5LDIzLjk1M2ExLjIyNCwxLjIyNCwwLDAsMS0xLjQzOC0xLjk3N2w4LjUxMi02LjE2NHYtLjEyNkwxMS4wMzUsMTBhMS4yMjQsMS4yMjQsMCwwLDEsMS43ODItMS42NzJsNi40MTgsNi44MjdBMS4xNjYsMS4xNjYsMCwwLDEsMTkuMzM5LDE2LjU3OFpcIiBzdHlsZT1cImZpbGw6IzJjNTU5MTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTE5LjEsMTYuMzQyYTEuNzQ5LDEuNzQ5LDAsMCwxLS41OS42TDkuMDc0LDIzLjcxOGExLjIyNSwxLjIyNSwwLDAsMS0xLjQzOS0xLjk3N2w4LjUxMy02LjE2NFYxNS40NUwxMC44LDkuNzYxYTEuMjI0LDEuMjI0LDAsMCwxLDEuNzgzLTEuNjcyTDE5LDE0LjkxNkExLjE2MiwxLjE2MiwwLDAsMSwxOS4xLDE2LjM0MlpcIiBzdHlsZT1cImZpbGw6I2ZmZjtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTE1LjksMjEuNDEyaDUuMDg2YTEuMDU5LDEuMDU5LDAsMSwxLDAsMi4xMThIMTUuOWExLjA1OSwxLjA1OSwwLDEsMSwwLTIuMTE4WlwiIHN0eWxlPVwiZmlsbDojZmZmO2ZpbGwtcnVsZTpldmVub2RkXCIvPmAsICBcbiAgXCJQcm9jZXNzaW5nXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCIxNlwiIHkxPVwiM1wiIHgyPVwiMTZcIiB5Mj1cIjI5XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjMWM0YzcwXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzBjMmI0MlwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3Byb2Nlc3NpbmdsYW5nPC90aXRsZT48cGF0aCBkPVwiTTE1LjkyMiwxOS45NjJhMTMsMTMsMCwwLDEtMS42NDctLjA3N3Y1LjU1MmEyNy43NiwyNy43NiwwLDAsMSwzLjMzMi40NjFWMjlINS45NjhWMjUuOUEyNy45ODgsMjcuOTg4LDAsMCwxLDkuMywyNS40MzhWNi43MTVhMjguMjE1LDI4LjIxNSwwLDAsMS0zLjMzMS0uNDZ2LTMuMUg4Ljk1NUMxMC4xOCwzLjE1MywxMy41NDksMywxNi4yMywzYzYuMzE4LDAsOS44LDIuOTQ4LDkuOCw4QzI2LjAzMSwxNi4wMTgsMjIuMiwxOS45NjIsMTUuOTIyLDE5Ljk2MlpNMTYsNy4wNThjLS42MTMsMC0xLjE0OSwwLTEuNzIzLjAzOHY4LjYxNWE5LjY5NCw5LjY5NCwwLDAsMCwxLjQ1NS4xMTVjMy4wMjUtLjAzOCw1LjEzLTEuNzIzLDUuMTMtNC41MTlDMjAuODYyLDguNywxOS40MDcsNy4wNTgsMTYsNy4wNThaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+YCxcbiAgXCJQcm9sb2dcIjogYDxkZWZzPjxyYWRpYWxHcmFkaWVudCBpZD1cImFcIiBjeD1cIjEzNDEuMjVcIiBjeT1cIi0zMzk2Ljg2NlwiIHI9XCIxOC4yOTlcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMTMyNy4wNzcgMzQwNS45MzUpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZmXCIvPjxzdG9wIG9mZnNldD1cIjAuMTgxXCIgc3RvcC1jb2xvcj1cIiNmYmZiZmJcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zNjVcIiBzdG9wLWNvbG9yPVwiI2VmZWZmMFwiLz48c3RvcCBvZmZzZXQ9XCIwLjU1MlwiIHN0b3AtY29sb3I9XCIjZGFkYmRjXCIvPjxzdG9wIG9mZnNldD1cIjAuNzM4XCIgc3RvcC1jb2xvcj1cIiNiZWJmYzJcIi8+PHN0b3Agb2Zmc2V0PVwiMC44MjRcIiBzdG9wLWNvbG9yPVwiI2FlYjBiM1wiLz48L3JhZGlhbEdyYWRpZW50PjxyYWRpYWxHcmFkaWVudCBpZD1cImJcIiBjeD1cIjYuNjc4XCIgY3k9XCI4NC43NFwiIHI9XCIxNS41NTRcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMS44ODQgLTg2LjE1NCkgc2NhbGUoMS4wNzIgMS4xNjYpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmFmZGZmXCIvPjxzdG9wIG9mZnNldD1cIjAuMDc5XCIgc3RvcC1jb2xvcj1cIiNlZWY1ZmFcIi8+PHN0b3Agb2Zmc2V0PVwiMC4yMlwiIHN0b3AtY29sb3I9XCIjY2ZkZmVjXCIvPjxzdG9wIG9mZnNldD1cIjAuNDA3XCIgc3RvcC1jb2xvcj1cIiM5ZGJiZDVcIi8+PHN0b3Agb2Zmc2V0PVwiMC42MzFcIiBzdG9wLWNvbG9yPVwiIzU4OGFiNVwiLz48c3RvcCBvZmZzZXQ9XCIwLjc0NVwiIHN0b3AtY29sb3I9XCIjMzI2ZmE0XCIvPjxzdG9wIG9mZnNldD1cIjAuNzk5XCIgc3RvcC1jb2xvcj1cIiMyYjY2OThcIi8+PHN0b3Agb2Zmc2V0PVwiMC44OTdcIiBzdG9wLWNvbG9yPVwiIzE3NGU3OFwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5NFwiIHN0b3AtY29sb3I9XCIjMDAzMTUyXCIvPjwvcmFkaWFsR3JhZGllbnQ+PHJhZGlhbEdyYWRpZW50IGlkPVwiY1wiIGN4PVwiMTEuMjQxXCIgY3k9XCItOS44OTdcIiByPVwiMTYuNTk0XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAyMi42MzEpIHNjYWxlKDEgMS4wNjIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZkNTQwXCIvPjxzdG9wIG9mZnNldD1cIjAuNjY3XCIgc3RvcC1jb2xvcj1cIiNlYzFjMjRcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OTRcIiBzdG9wLWNvbG9yPVwiIzc2MDAwMFwiLz48L3JhZGlhbEdyYWRpZW50PjxyYWRpYWxHcmFkaWVudCBpZD1cImRcIiBjeD1cIjEyLjI4NlwiIGN5PVwiMjYuMTI3XCIgcj1cIjIuMDgzXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZGRkZmUwXCIvPjxzdG9wIG9mZnNldD1cIjAuMTc0XCIgc3RvcC1jb2xvcj1cIiNkOWRiZGNcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zNTFcIiBzdG9wLWNvbG9yPVwiI2NkY2ZkMFwiLz48c3RvcCBvZmZzZXQ9XCIwLjUzMVwiIHN0b3AtY29sb3I9XCIjYjhiYWJiXCIvPjxzdG9wIG9mZnNldD1cIjAuNzExXCIgc3RvcC1jb2xvcj1cIiM5YzllOWZcIi8+PHN0b3Agb2Zmc2V0PVwiMC44OTFcIiBzdG9wLWNvbG9yPVwiIzc4Nzk3YlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM1ZTVmNjFcIi8+PC9yYWRpYWxHcmFkaWVudD48cmFkaWFsR3JhZGllbnQgaWQ9XCJlXCIgY3g9XCIxOS4wNjRcIiBjeT1cIjI2LjEyN1wiIHI9XCIyLjA4M1wiIHhsaW5rOmhyZWY9XCIjZFwiLz48cmFkaWFsR3JhZGllbnQgaWQ9XCJmXCIgY3g9XCIxNS40MzRcIiBjeT1cIjE2LjE5MVwiIHI9XCIyLjY4N1wiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC40NjEpXCIgeGxpbms6aHJlZj1cIiNkXCIvPjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3Byb2xvZzwvdGl0bGU+PGcgc3R5bGU9XCJpc29sYXRpb246aXNvbGF0ZVwiPjxjaXJjbGUgY3g9XCIxNlwiIGN5PVwiMTZcIiByPVwiMTRcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTYuNjAyIDE0LjkyKSByb3RhdGUoLTQyLjI2NSlcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTE5LjkzOCw2LjMwOWE5Ljc4NSw5Ljc4NSwwLDAsMC02LjUtMi4zMzlDOC41NjQsMy45NywzLjc3NCw3LjcsMy40MDUsMTQuOTYxYy0uNCw3LjgsNC43NSwxMi44NjIsMTIsMTIuODYyLDEwLjczMywwLDE2LjY3Mi05Ljc4LDEwLjAyNy0yMC4zODgsNC42NzEsMTAuNi0uNTI3LDE3LjI3OS03LjIzNiwxNy4yNzktNS40NDEsMC05LjYxLTMuNjUxLTkuNjEtMTAuMzQ1QzguNTgyLDQuNzA5LDE1LjgyMyw0LjAzOSwxOS45MzgsNi4zMDlaXCIgc3R5bGU9XCJmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk0yMi43LDEwLjQxNWMtLjI5My0uOTQtLjY0NS0yLjc4OC42MzQtMy44NmEzLjcyOSwzLjcyOSwwLDAsMC0zLjg0NCwxLjUzNEE5LjE2NSw5LjE2NSwwLDAsMCwxMiw4LjEsMy43MjksMy43MjksMCwwLDAsOC4xNTIsNi41NTVjMS4zMDksMS4xLjkxLDMuMDA1LjYxNCwzLjkyM0ExMC41MTcsMTAuNTE3LDAsMCwwLDYuMSwxNy41MjRjMCwyLjE3NCwxLjQsNC42NDUsMS42NzUsNy45NTVsMS43NjgtMS41MzJhMTEuNzQzLDExLjc0MywwLDAsMCw2LjIxMiwxLjQzMywxMS43NDEsMTEuNzQxLDAsMCwwLDYuMjEyLTEuNDMzbDEuNzY5LDEuNTMyYy4yOC0zLjMxLDEuNjc1LTUuNzgxLDEuNjc1LTcuOTU1QTEwLjUxMiwxMC41MTIsMCwwLDAsMjIuNywxMC40MTVaXCIgc3R5bGU9XCJmaWxsOnVybCgjYylcIi8+PHBhdGggZD1cIk0xMC43MjIsMjcuODY3YTEuNjIxLDEuNjIxLDAsMSwxLDMuMjQsMGMwLC4wMTgsMCwuMDM1LDAsLjA1M2EyLjIzNCwyLjIzNCwwLDEsMC0zLjIyOC4xMjZDMTAuNzI1LDI3Ljk4NywxMC43MjIsMjcuOTI3LDEwLjcyMiwyNy44NjdaXCIgc3R5bGU9XCJmaWxsOnVybCgjZClcIi8+PHBhdGggZD1cIk0yMC42MjksMjcuODY3YTEuNjIxLDEuNjIxLDAsMSwwLTMuMjQsMGMwLC4wMTgsMCwuMDM1LDAsLjA1M2EyLjIzNCwyLjIzNCwwLDEsMSwzLjIyOC4xMjZBMS42NzgsMS42NzgsMCwwLDAsMjAuNjI5LDI3Ljg2N1pcIiBzdHlsZT1cImZpbGw6dXJsKCNlKVwiLz48ZyBzdHlsZT1cIm9wYWNpdHk6MC41MzttaXgtYmxlbmQtbW9kZTptdWx0aXBseVwiPjxwYXRoIGQ9XCJNOC4zNDYsMTguNGMtLjEzMi42NjctLjk3MS44NzctLjk3MS44NzdBMS4zNTksMS4zNTksMCwwLDEsNi44MDksMTguMWEyLjkyOSwyLjkyOSwwLDAsMCwuNDQzLDEuNzkzQTIuOTI3LDIuOTI3LDAsMCwwLDguMzQ2LDE4LjRaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PHBhdGggZD1cIk0xMC4wMDgsMTguNzM3Yy0uMTMyLjY2Ny0uOTcyLjg3Ny0uOTcyLjg3N2ExLjM2LDEuMzYsMCwwLDEtLjU2Ni0xLjE4MiwyLjkyOSwyLjkyOSwwLDAsMCwuNDQ0LDEuNzkzQTIuOTI2LDIuOTI2LDAsMCwwLDEwLjAwOCwxOC43MzdaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PHBhdGggZD1cIk04LjgzMywyMC4yNDljLS4xMzIuNjY3LS45NzEuODc3LS45NzEuODc3QTEuMzU5LDEuMzU5LDAsMCwxLDcuMywxOS45NDRhMi45MjksMi45MjksMCwwLDAsLjQ0MywxLjc5M0EyLjkyNSwyLjkyNSwwLDAsMCw4LjgzMywyMC4yNDlaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PHBhdGggZD1cIk0xMC41LDIwLjU4M2MtLjEzMi42NjctLjk3MS44NzctLjk3MS44NzdhMS4zNiwxLjM2LDAsMCwxLS41NjYtMS4xODJBMi45MjksMi45MjksMCwwLDAsOS40LDIyLjA3MiwyLjkyNywyLjkyNywwLDAsMCwxMC41LDIwLjU4M1pcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz48cGF0aCBkPVwiTTkuMzI4LDIyLjEyMWMtLjEzMi42NjctLjk3Mi44NzctLjk3Mi44NzdhMS4zNiwxLjM2LDAsMCwxLS41NjUtMS4xODIsMi45MjksMi45MjksMCwwLDAsLjQ0MywxLjc5M0EyLjkyNiwyLjkyNiwwLDAsMCw5LjMyOCwyMi4xMjFaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PHBhdGggZD1cIk0xMS42NjQsMTkuMDdjLS4xMzIuNjY3LS45NzIuODc3LS45NzIuODc3YTEuMzU5LDEuMzU5LDAsMCwxLS41NjUtMS4xODIsMi45MywyLjkzLDAsMCwwLC40NDMsMS43OTNBMi45MjcsMi45MjcsMCwwLDAsMTEuNjY0LDE5LjA3WlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjwvZz48ZyBzdHlsZT1cIm9wYWNpdHk6MC41MzttaXgtYmxlbmQtbW9kZTptdWx0aXBseVwiPjxwYXRoIGQ9XCJNMjMuMTU3LDE4LjRjLjEzMi42NjcuOTcxLjg3Ny45NzEuODc3YTEuMzU5LDEuMzU5LDAsMCwwLC41NjYtMS4xODIsMi45MywyLjkzLDAsMCwxLS40NDMsMS43OTNBMi45MjcsMi45MjcsMCwwLDEsMjMuMTU3LDE4LjRaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PHBhdGggZD1cIk0yMS40OTUsMTguNzM3Yy4xMzIuNjY3Ljk3Mi44NzcuOTcyLjg3N2ExLjM2LDEuMzYsMCwwLDAsLjU2NS0xLjE4MiwyLjkzMSwyLjkzMSwwLDAsMS0uNDQ0LDEuNzkzQTIuOTI2LDIuOTI2LDAsMCwxLDIxLjQ5NSwxOC43MzdaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PHBhdGggZD1cIk0yMi42NjksMjAuMjQ5Yy4xMzIuNjY3Ljk3MS44NzcuOTcxLjg3N2ExLjM2LDEuMzYsMCwwLDAsLjU2Ni0xLjE4MiwyLjkyOSwyLjkyOSwwLDAsMS0uNDQzLDEuNzkzQTIuOTI2LDIuOTI2LDAsMCwxLDIyLjY2OSwyMC4yNDlaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PHBhdGggZD1cIk0yMS4wMDgsMjAuNTgzYy4xMzIuNjY3Ljk3MS44NzcuOTcxLjg3N2ExLjM1OSwxLjM1OSwwLDAsMCwuNTY1LTEuMTgyLDIuOTI4LDIuOTI4LDAsMCwxLS40NDMsMS43OTNBMi45MjcsMi45MjcsMCwwLDEsMjEuMDA4LDIwLjU4M1pcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz48cGF0aCBkPVwiTTIyLjE3NSwyMi4xMjFjLjEzMi42NjcuOTcyLjg3Ny45NzIuODc3YTEuMzYsMS4zNiwwLDAsMCwuNTY1LTEuMTgyLDIuOTI4LDIuOTI4LDAsMCwxLS40NDQsMS43OTNBMi45MjcsMi45MjcsMCwwLDEsMjIuMTc1LDIyLjEyMVpcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz48cGF0aCBkPVwiTTE5LjgzOCwxOS4wN2MuMTMyLjY2Ny45NzIuODc3Ljk3Mi44NzdhMS4zNTksMS4zNTksMCwwLDAsLjU2NS0xLjE4MiwyLjkyOCwyLjkyOCwwLDAsMS0uNDQzLDEuNzkzQTIuOTI4LDIuOTI4LDAsMCwxLDE5LjgzOCwxOS4wN1pcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz48L2c+PGNpcmNsZSBjeD1cIjExLjMzOVwiIGN5PVwiMTQuMDc0XCIgcj1cIjMuODE2XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PGNpcmNsZSBjeD1cIjEyLjEzXCIgY3k9XCIxNC40NDZcIiByPVwiMS44NjFcIiBzdHlsZT1cImZpbGw6I2JkYmZjMVwiLz48Y2lyY2xlIGN4PVwiMTIuMTNcIiBjeT1cIjE0LjQ0NlwiIHI9XCIxLjE5MVwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjxjaXJjbGUgY3g9XCIxMS42MDNcIiBjeT1cIjE0LjAyN1wiIHI9XCIwLjM1N1wiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxjaXJjbGUgY3g9XCIyMC4xMTJcIiBjeT1cIjE0LjA3NFwiIHI9XCIzLjgxNlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxjaXJjbGUgY3g9XCIyMC45MDNcIiBjeT1cIjE0LjQ0NlwiIHI9XCIxLjg2MVwiIHN0eWxlPVwiZmlsbDojYmRiZmMxXCIvPjxjaXJjbGUgY3g9XCIyMC45MDNcIiBjeT1cIjE0LjQ0NlwiIHI9XCIxLjE5MVwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjxjaXJjbGUgY3g9XCIyMC4zNzVcIiBjeT1cIjE0LjAyN1wiIHI9XCIwLjM1N1wiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTUuNzA2LDIxLjUyYzAtMS40MTIsMi4xNTctMy40MTMsMi4xNTctNC44ODdhMi4xNTcsMi4xNTcsMCwwLDAtNC4zMTMsMEMxMy41NSwxOC4xMDcsMTUuNzA2LDIwLjEwOCwxNS43MDYsMjEuNTJaXCIgc3R5bGU9XCJmaWxsOnVybCgjZilcIi8+PC9nPmAsXG4gIFwiUHJvdG9jb2wgQnVmZmVyc1wiOiBgPHBvbHlnb24gcG9pbnRzPVwiMTUuOTk2IDMuMjIgMjYuOTY2IDkuNyAyNi45NTQgMjIuMyAxNiAyOC43OCA1LjAzOCAyMi40MDggNS4wMzQgOS42MjggMTUuOTk2IDMuMjJcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE2LDIsMy45ODcsOS4wMmwwLDE0TDE2LDMwbDEyLTcuMS4wMTMtMTMuOFpNMjYuOTU0LDIyLjMsMTYsMjguNzgsNS4wMzgsMjIuNDA4bDAtMTIuNzhMMTYsMy4yMiwyNi45NjYsOS43WlwiIHN0eWxlPVwiZmlsbDojMTcxYzFlXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI1LjU2OSAxMy42NTQgMTkuOTQ2IDE2Ljk2NCAxOS45NDMgMjQuODkgMjUuNTkgMjEuNTY1IDI1LjU2OSAxMy42NTRcIiBzdHlsZT1cImZpbGw6IzFlYThmZlwiLz48cG9seWdvbiBwb2ludHM9XCIyMy4yODIgMTIuMzAzIDI1LjU2OSAxMy42NTQgMTkuOTQ2IDE2Ljk2NCAxOS45NDMgMjQuODkgMTcuMzI3IDIzLjM3IDE3LjM0OCAxNS44NzUgMjMuMjgyIDEyLjMwM1wiIHN0eWxlPVwiZmlsbDojNTBiZmZmXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIyLjUxMiAxMC4zNSAyMi41MTQgMTEuODE2IDE2LjQxMSAxNS40OTggMTYuNDE4IDIzLjU5NyAxNC45OTggMjQuNDMxIDE0Ljk5NCAxNC44NTYgMjIuNTEyIDEwLjM1XCIgc3R5bGU9XCJmaWxsOiM5N2ZmMjdcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjAuMDA4IDguODcxIDIyLjUxMiAxMC4zNSAxNC45OTQgMTQuODU2IDE0Ljk5OCAyNC40MzEgMTIuMTk0IDIyLjgwMSAxMi4xODkgMTMuNDEzIDIwLjAwOCA4Ljg3MVwiIHN0eWxlPVwiZmlsbDojYzJmZjcyXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE5LjIyNiA2LjYwNiAxOS4yMjYgOC4zNzQgMTEuMjEgMTMuMDc0IDExLjIxIDIzLjE3MiA5LjgwOCAyMy45ODggOS44MzUgMTIuMjc3IDE5LjIyNiA2LjYwNlwiIHN0eWxlPVwiZmlsbDojZmYyNzRiXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE2LjE2IDQuNzg0IDYuNTMgMTAuMzk0IDYuNTI5IDIyLjA3MSA5LjgyNyAyMy45ODggOS44MzUgMTIuMjc3IDE5LjIzNSA2LjYwNiAxNi4xNiA0Ljc4NFwiIHN0eWxlPVwiZmlsbDojZmY1Yzc3XCIvPmAsXG4gIFwiUHVnXCI6IGA8cGF0aCBkPVwiTTI1LjUxNCwxMi44NDZjLS4wNTItLjkzOC4yMDktMS44MjUtLjIwOS0yLjU1NC0xLjA0My0xLjgyNS0zLjY0OS0yLjg2Ny04Ljg2My0yLjg2N1Y3LjM3Mmgwdi4wNTJjLTUuNzM1LDAtOC4xODUsMS4wNDMtOS4yMjcsMi44NjdhNS42LDUuNiwwLDAsMC0uNDY5LDIuNTU0LDkuNTQ2LDkuNTQ2LDAsMCwwLS4yNjEsMi40NWMuMTU2LDEuMTQ3LjI2MSwyLjI5NC40MTcsMy4zMzYuMTU2Ljg4NiwxLjQwOCwxLjU2NCwxLjU2NCwyLjQuMzEzLDIuMjQyLDIuMjk0LDMuMjg0LDguMDI4LDMuMjg0di4yNjFoLS4xdi0uMjYxYzUuMjEzLDAsNy40LTEuMDQzLDcuNzE2LTMuMjg0LjEtLjgzNCwxLjE0Ny0xLjUxMiwxLjMtMi40LjE1Ni0xLjA0My4yMDktMi4xOS4zNjUtMy4zMzZBMTEuNzc0LDExLjc3NCwwLDAsMCwyNS41MTQsMTIuODQ2WlwiIHN0eWxlPVwiZmlsbDojZWZjY2EzXCIvPjxwYXRoIGQ9XCJNMTYuMTgyLDEzLjY4YTMuMjQxLDMuMjQxLDAsMCwxLDIuMTksMS4xNDdjLjczLjYyNiwxLjkyOSwxLjA0MywyLjQ1LDEuNjE2YTQuNzE1LDQuNzE1LDAsMCwxLDEuNDA4LDEuOTgxLDguOSw4LjksMCwwLDEsLjMxMywyLjI0MmMwLC4yNjEuMTU2LjIwOS41NzMsMGE5LjAyLDkuMDIsMCwwLDAsMi4xOS0xLjg3N2MtLjE1Ni44ODYtMS4yNTEsMS42NjgtMS4zNTUsMi41LS4zMTMsMi4yNDItMi41LDMuMzM2LTcuODcyLDMuMzM2aC4zMTNcIiBzdHlsZT1cImZpbGw6I2NjYWM4ZFwiLz48cGF0aCBkPVwiTTE5LjUxOSwxMS45MDhjLjIwOS42NzguODg2LDMuMDI0LS40NjksMi4yNDJhMi41NTcsMi41NTcsMCwwLDEsLjkzOCwxLjU2NCwxLjgzMSwxLjgzMSwwLDAsMCwxLjMsMS40MDgsMy40NzksMy40NzksMCwwLDAsMi41NTQtLjYyNiwyLjk1NiwyLjk1NiwwLDAsMCwuNjc4LTMuMjg0LDIuNDMsMi40MywwLDAsMC0yLjEzNy0xLjYxNkMyMS40LDExLjMzNCwxOS4zMSwxMS4xMjYsMTkuNTE5LDExLjkwOFpcIiBzdHlsZT1cImZpbGw6I2NjYWM4ZFwiLz48Y2lyY2xlIGN4PVwiMjIuMTc4XCIgY3k9XCIxNC40MVwiIHI9XCIxLjkyOVwiLz48Y2lyY2xlIGN4PVwiMjEuNjU2XCIgY3k9XCIxMy41MjRcIiByPVwiMC41MjFcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE5LjIwNiwxNC4zMDZhMTcuNjgsMTcuNjgsMCwwLDEsMi43MTEsMi4zNDZjLjkzOCwxLjIuOTM4LDEuNDA4LjkzOCwxLjQwOGwtLjY3OC4zMTNhNy4xLDcuMSwwLDAsMC0yLjEzNy0yLjVjLTEuMi0uNjc4LTEuMzU1LTEuMjUxLTEuMzU1LTEuMjUxWlwiIHN0eWxlPVwiZmlsbDojZWZjY2EzXCIvPjxwYXRoIGQ9XCJNMTYuMjM1LDEzLjY4YTMuNjA1LDMuNjA1LDAsMCwwLTIuMzQ2LDEuMTQ3Yy0uNzMuNjI2LTIuMDMzLDEuMDQzLTIuNSwxLjYxNmE0LjgwNiw0LjgwNiwwLDAsMC0xLjQ2LDEuOTgxLDguOSw4LjksMCwwLDAtLjMxMywyLjI0MmMwLC4yNjEuMDUyLjMxMy0uNjI2LDBBNy45NzIsNy45NzIsMCwwLDEsNi44LDE4Ljc4OWMuMTU2Ljg4NiwxLjI1MSwxLjY2OCwxLjM1NSwyLjUuMzEzLDIuMTksMi41LDMuMjg0LDcuODcyLDMuMjg0aC4zNjVcIiBzdHlsZT1cImZpbGw6I2NjYWM4ZFwiLz48cGF0aCBkPVwiTTIxLjIzOSwxNy4yNzdhNi41NTIsNi41NTIsMCwwLDAtNS4xMDktMi42MDdoMGE2LjYzOCw2LjYzOCwwLDAsMC01LjEwOSwyLjYwNywzLjg2MSwzLjg2MSwwLDAsMC0xLjA0MywzLjE4YzAsNC42NCwxLjYxNiwzLjIzMiwyLjcxMSwzLjgwNmE3LjQ2Niw3LjQ2NiwwLDAsMCwzLjM4OS4zMTNoMGE3LjQsNy40LDAsMCwwLDMuMzg5LS4zMTNjMS4wOTUtLjU3MywyLjcxMS44MzQsMi43MTEtMy44MDZBMy4zODYsMy4zODYsMCwwLDAsMjEuMjM5LDE3LjI3N1pcIiBzdHlsZT1cImZpbGw6IzU2MzMyYlwiLz48cGF0aCBkPVwiTTE2LjAyNiwxNS45NzRhOS41NDksOS41NDksMCwwLDEtLjQ2OSwyLjU1NGwuNTczLS4xNTZaXCIgc3R5bGU9XCJmaWxsOiM0NDI4MjNcIi8+PHBhdGggZD1cIk0xNi4xODIsMTUuOTc0YTkuNTQ5LDkuNTQ5LDAsMCwwLC40NjksMi41NTRsLS41NzMtLjE1NlpcIiBzdHlsZT1cImZpbGw6IzQ0MjgyM1wiLz48cGF0aCBkPVwiTTE0LjM1OCwxNS40NTNjLS4yMDktLjUyMS41NzMtMS4zNTUsMS44MjUtMS4zNTVzMi4wMzMuODM0LDEuODI1LDEuMzU1LTEuMDQzLjY3OC0xLjgyNS42NzhDMTUuMzQ4LDE2LjEzLDE0LjU2NiwxNS45NzQsMTQuMzU4LDE1LjQ1M1pcIiBzdHlsZT1cImZpbGw6IzU2MzMyYlwiLz48cGF0aCBkPVwiTTE2LjE4MiwxNS45NzRjMC0uMS43My0uMSwxLjE0Ny0uMzY1LDAsMC0uODM0LjI2MS0uOTkxLjE1NmEuNjU2LjY1NiwwLDAsMS0uMjA5LS4zNjUuNjU2LjY1NiwwLDAsMS0uMjA5LjM2NWMtLjE1Ni4xLTEuMDk1LS4xNTYtMS4wOTUtLjE1NmE4LjA1OCw4LjA1OCwwLDAsMSwxLjIuMzY1di40MTdhMTAuNDkyLDEwLjQ5MiwwLDAsMCwuMSwyLjAzM2MuMTU2LjIwOS4xLTEuNDYuMS0yLjAzM0ExLjMsMS4zLDAsMCwxLDE2LjE4MiwxNS45NzRaXCIvPjxwYXRoIGQ9XCJNMTYuMTgyLDE4Ljk0NWEzLjM1LDMuMzUsMCwwLDEsMS42MTYuNjc4LDMuMTIxLDMuMTIxLDAsMCwwLTEuNjE2LTEuMDk1LDMuMDM2LDMuMDM2LDAsMCwwLTEuODI1LDEuMkEzLjMxMiwzLjMxMiwwLDAsMSwxNi4xODIsMTguOTQ1WlwiIHN0eWxlPVwiZmlsbDojN2Y0YTQxXCIvPjxwYXRoIGQ9XCJNMTYuMDc4LDIyLjhhOC45LDguOSwwLDAsMS0yLjQtLjQ2OWMtLjE1Ni0uMDUyLS4zMTMuMDUyLS40NjksMGE2LjE3Miw2LjE3MiwwLDAsMS0zLjE4LTIuMTM3di4yMDljMCw0LjY0LDEuNjE2LDMuMjMyLDIuNzExLDMuODA2YTcuNDY2LDcuNDY2LDAsMCwwLDMuMzg5LjMxM2gwYTcuNCw3LjQsMCwwLDAsMy4zODktLjMxM2MxLjA5NS0uNTczLDIuNzExLjgzNCwyLjcxMS0zLjgwNnYtLjQ2OUE1LjkxNCw1LjkxNCwwLDAsMSwxOSwyMi4yODJjLS4xNTYuMDUyLS40MTctLjA1Mi0uNTczLS4wNTJBNy4wNDUsNy4wNDUsMCwwLDEsMTYuMDc4LDIyLjhaXCIgc3R5bGU9XCJmaWxsOiM0NDI4MjNcIi8+PHBhdGggZD1cIk0xMy45NDEsMjAuM3MtLjU3MywxLjY2OC0uMTU2LDIuNGwtLjUyMS0uMjA5QTE1LjQzMywxNS40MzMsMCwwLDEsMTMuOTQxLDIwLjNaXCIgc3R5bGU9XCJmaWxsOiM0NDI4MjNcIi8+PHBhdGggZD1cIk0xOC4zMiwyMC4zcy41NzMsMS42NjguMTU2LDIuNEwxOSwyMi40OTFBMTAuNjI5LDEwLjYyOSwwLDAsMCwxOC4zMiwyMC4zWlwiIHN0eWxlPVwiZmlsbDojNDQyODIzXCIvPjxwYXRoIGQ9XCJNMTIuNTg1LDExLjkwOGMtLjIwOS42NzgtLjg4NiwzLjAyNC40NjksMi4yNDJhMi41NTcsMi41NTcsMCwwLDAtLjkzOCwxLjU2NCwxLjgzMSwxLjgzMSwwLDAsMS0xLjMsMS40MDhBMy40NzksMy40NzksMCwwLDEsOC4yNTgsMTYuNWEyLjk1NiwyLjk1NiwwLDAsMS0uNjc4LTMuMjg0LDIuNDMsMi40MywwLDAsMSwyLjEzNy0xLjYxNkMxMC43MDksMTEuMzM0LDEyLjc5NCwxMS4xMjYsMTIuNTg1LDExLjkwOFpcIiBzdHlsZT1cImZpbGw6I2NjYWM4ZFwiLz48cGF0aCBkPVwiTTE2LjEzLDE4LjUyOGEzLjM5MywzLjM5MywwLDAsMSwyLjQ1LDIuODY3di0uMWEzLjA1MSwzLjA1MSwwLDAsMC0yLjQ1LTIuOTE5LDMsMywwLDAsMC0yLjQ1LDIuOTE5di4xQTMuNDYzLDMuNDYzLDAsMCwxLDE2LjEzLDE4LjUyOFpcIi8+PGVsbGlwc2UgY3g9XCIxNi41NDZcIiBjeT1cIjE1LjEzOFwiIHJ4PVwiMC4xNTZcIiByeT1cIjAuMzEzXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0zLjI1NiA0LjYxMSkgcm90YXRlKC0xNC40NilcIiBzdHlsZT1cImZpbGw6IzMzMTcxMlwiLz48ZWxsaXBzZSBjeD1cIjE1LjYwOVwiIGN5PVwiMTUuMTQ2XCIgcng9XCIwLjMxM1wiIHJ5PVwiMC4xNTZcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTMuNDgyIDI1LjU2Nykgcm90YXRlKC03Mi43NjUpXCIgc3R5bGU9XCJmaWxsOiMzMzE3MTJcIi8+PGNpcmNsZSBjeD1cIjEwLjAzMVwiIGN5PVwiMTQuNDFcIiByPVwiMS45MjlcIi8+PGNpcmNsZSBjeD1cIjEwLjU1MlwiIGN5PVwiMTMuNTI0XCIgcj1cIjAuNTIxXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xNi43LDE0LjQxcy0uNTIxLjIwOS0uNjI2LjI2MWEyLjQ5MiwyLjQ5MiwwLDAsMS0uNjI2LS4yNjFIMTYuN1pcIiBzdHlsZT1cImZpbGw6IzdmNGE0MVwiLz48cGF0aCBkPVwiTTEyLjksMTQuMzA2YTE3LjY4LDE3LjY4LDAsMCwwLTIuNzExLDIuMzQ2Yy0uOTM4LDEuMi0uOTM4LDEuNDA4LS45MzgsMS40MDhsLjY3OC4zMTNhNy4xLDcuMSwwLDAsMSwyLjEzNy0yLjVjMS4yLS42NzgsMS4zNTUtMS4yNTEsMS4zNTUtMS4yNTFaXCIgc3R5bGU9XCJmaWxsOiNlZmNjYTNcIi8+PHBhdGggZD1cIk05LjA5MiwxMC44MTNhNC41MTksNC41MTksMCwwLDEtMS45MjksMi4yOTRBMi4xOSwyLjE5LDAsMCwwLDkuMDkyLDEwLjgxM1pcIiBzdHlsZT1cImZpbGw6I2NjYWM4ZFwiLz48cGF0aCBkPVwiTTIyLjkwOCwxMC44MTNhNC41MTksNC41MTksMCwwLDAsMS45MjksMi4yOTRBMi4xOSwyLjE5LDAsMCwxLDIyLjkwOCwxMC44MTNaXCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PHBhdGggZD1cIk0xOS4zMSwxMy44MzZhNS4xNiw1LjE2LDAsMCwwLTMuMDc2LTEuNDA4aC4xNTZhMy44NTIsMy44NTIsMCwwLDAtMy4wMjQsMS40MDgsNC44MzIsNC44MzIsMCwwLDEsMy4wMjQtMS4wNDNoMEE1Ljc4NSw1Ljc4NSwwLDAsMSwxOS4zMSwxMy44MzZaXCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PHBhdGggZD1cIk0xNy43NDYsMTAuOTY5YTIuNDU1LDIuNDU1LDAsMCwwLTEuNTY0LS45MzhoLjE1NmExLjc4NiwxLjc4NiwwLDAsMC0xLjUxMi45MzgsMi4xODcsMi4xODcsMCwwLDEsMS41MTItLjY3OGgwQTEuODk0LDEuODk0LDAsMCwxLDE3Ljc0NiwxMC45NjlaXCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PHBhdGggZD1cIk0xMC4wMzEsMTcuNzQ2YTIuNTQ1LDIuNTQ1LDAsMCwxLTEuNzczLjIwOUg4LjA1YTMuNjgsMy42OCwwLDAsMS0uODg2LTEuNTEyQTIuMjcsMi4yNywwLDAsMCwxMC4wMzEsMTcuNzQ2WlwiIHN0eWxlPVwiZmlsbDojY2NhYzhkXCIvPjxwYXRoIGQ9XCJNMjIuMTI2LDE3Ljc0NmEyLjU0NSwyLjU0NSwwLDAsMCwxLjc3My4yMDlIMjMuNjlhMS43NDksMS43NDksMCwwLDAsMS4wOTUtMS41MTJBMi4wMiwyLjAyLDAsMCwxLDIyLjEyNiwxNy43NDZaXCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PHBhdGggZD1cIk0xMS4yMywxMC43MDlhNC43NSw0Ljc1LDAsMCwxLDIuMjQyLjFjLjkzOC4zMTMuMjA5LDEuNTY0LjM2NSwxLjYxNmEyLjg2NSwyLjg2NSwwLDAsMSwyLjI0Mi0uNzNjMS43NzMuMSwxLjk4MS44ODYsMi4yNDIuNzMuMjYxLS4xLS4yNjEtMi4xOSwyLjQ1LTEuNzIsMCwwLTIuNzYzLS43My0yLjY1OSwxLjI1MWEzLjY3NSwzLjY3NSwwLDAsMC0zLjg1OC0uMVMxNC44MjcsOS45MjcsMTEuMjMsMTAuNzA5WlwiIHN0eWxlPVwiZmlsbDojY2NhYzhkXCIvPjxwYXRoIGQ9XCJNMTAuNSw4cy0yLjQsMi45NzItMi43MTEsNC4xMThjLS4zNjUsMS4xNDctLjYyNiw1Ljk0My0uOTM4LDYuNjIxTDUuNzU2LDE0LjA0NWwyLjAzMy00LjlaXCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PHBhdGggZD1cIk0yMS42NTYsOHMyLjQsMi45NzIsMi43MTEsNC4xMThjLjM2NSwxLjE0Ny42MjYsNS45NDMuOTM4LDYuNjIxTDI2LjQsMTQuMDQ1bC0yLjAzMy00LjlaXCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PHBhdGggZD1cIk0yMS41LDhhMTEuNjE3LDExLjYxNywwLDAsMSwzLjI4NCw0LjU4OGMuNzMsMi40NS40MTcsNS40NzQuOTkxLDUuODM5LjgzNC41MjEsMS43Mi0yLjYwNywyLjAzMy0yLjkxOS40NjktLjUyMSwyLjA4NS0xLjg3NywyLjE5LTIuMTM3cy0zLjIzMi0zLjkxLTQuNzQ0LTQuNjRDMjMuNTg1LDcuODkzLDIxLjQsNy43ODksMjEuNSw4WlwiIHN0eWxlPVwiZmlsbDojNTYzMzJiXCIvPjxwYXRoIGQ9XCJNMjMuNjksOS4zYTE1LjM3OSwxNS4zNzksMCwwLDEsMi45NzIsOC42NTRsMS4yLTIuNDVBMTYuNTY0LDE2LjU2NCwwLDAsMCwyMy42OSw5LjNaXCIgc3R5bGU9XCJmaWxsOiM0NDI4MjNcIi8+PHBhdGggZD1cIk0xMC41LDhhMTEuNjE3LDExLjYxNywwLDAsMC0zLjI4NCw0LjU4OGMtLjczLDIuNDUtLjQxNyw1LjQ3NC0uOTkxLDUuODM5LS44MzQuNTIxLTEuNzItMi42MDctMi4wMzMtMi45MTktLjQ2OS0uNTIxLTIuMDg1LTEuODc3LTIuMTktMi4xMzdzMy4yMzItMy45MSw0Ljc0NC00LjY0QzguNDE1LDcuODkzLDEwLjYsNy43ODksMTAuNSw4WlwiIHN0eWxlPVwiZmlsbDojNTYzMzJiXCIvPjxwYXRoIGQ9XCJNOC4zMSw5LjNhMTUuMzc5LDE1LjM3OSwwLDAsMC0yLjk3Miw4LjY1NEw0LjE0LDE1LjVBMTYuNTY0LDE2LjU2NCwwLDAsMSw4LjMxLDkuM1pcIiBzdHlsZT1cImZpbGw6IzQ0MjgyM1wiLz48cGF0aCBkPVwiTTYuNjQyLDE4LjAwN2E0LjExOCw0LjExOCwwLDAsMCwuNTczLDEuNTY0Yy4zNjUuMzY1LjEtLjMxMy4xLS4zMTNzLS4zNjUtLjIwOS0uMzEzLTEuNzJTNi42NDIsMTguMDA3LDYuNjQyLDE4LjAwN1pcIiBzdHlsZT1cImZpbGw6I2NjYWM4ZFwiLz48cGF0aCBkPVwiTTI1LjQxLDE4LjAwN2E0LjExOCw0LjExOCwwLDAsMS0uNTczLDEuNTY0Yy0uMzY1LjM2NS0uMS0uMzEzLS4xLS4zMTNzLjM2NS0uMjA5LjMxMy0xLjcyQzI0Ljk5MywxNi4wNzgsMjUuNDEsMTguMDA3LDI1LjQxLDE4LjAwN1pcIiBzdHlsZT1cImZpbGw6I2NjYWM4ZFwiLz48Y2lyY2xlIGN4PVwiMTMuODg5XCIgY3k9XCIxNy4xMjFcIiByPVwiMC4xNTZcIiBzdHlsZT1cImZpbGw6IzQ0MjgyM1wiLz48Y2lyY2xlIGN4PVwiMTIuODQ2XCIgY3k9XCIxOC4yMTZcIiByPVwiMC4xNTZcIiBzdHlsZT1cImZpbGw6IzQ0MjgyM1wiLz48Y2lyY2xlIGN4PVwiMTIuNTMzXCIgY3k9XCIxNy4xMjFcIiByPVwiMC4xNTZcIiBzdHlsZT1cImZpbGw6IzQ0MjgyM1wiLz48Y2lyY2xlIGN4PVwiMTguMTY0XCIgY3k9XCIxNy4xMjFcIiByPVwiMC4xNTZcIiBzdHlsZT1cImZpbGw6IzQ0MjgyM1wiLz48Y2lyY2xlIGN4PVwiMTkuMTU0XCIgY3k9XCIxOC4yMTZcIiByPVwiMC4xNTZcIiBzdHlsZT1cImZpbGw6IzQ0MjgyM1wiLz48Y2lyY2xlIGN4PVwiMTkuNDY3XCIgY3k9XCIxNy4xMjFcIiByPVwiMC4xNTZcIiBzdHlsZT1cImZpbGw6IzQ0MjgyM1wiLz5gLFxuICBcIlB1cHBldFwiOiBgPHBhdGggZD1cIk0yNS4wODksMTEuODIySDE4LjdMMTUuMjY3LDguMzg4VjJINi45MTF2OC4zNTdIMTMuM2wzLjQyMiwzLjQyMmgwdjQuNDMxaDBsLTMuNDM0LDMuNDM0SDYuOTExVjMwaDguMzU3VjIzLjYxMmgwTDE4LjcsMjAuMTc4aDYuMzg4Wk05LjcsNC43ODZoMi43ODZWNy41NzFIOS43Wk0xMi40ODIsMjcuMkg5LjdWMjQuNDE3aDIuNzg2WlwiIHN0eWxlPVwiZmlsbDojZmZhZTFhXCIvPmAsXG4gIFwiUHVyZVNjcmlwdFwiOiBgPHJlY3Qgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgc3R5bGU9XCJmaWxsOiMxNjE3MWJcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjEuODkyIDIyLjEzNiAxOS43MDYgMjAuMDk1IDEwLjEwNyAyMC4wOTUgMTIuMjkzIDIyLjEzNiAyMS44OTIgMjIuMTM2XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTIuMjkzIDE0Ljk4IDEwLjEwNyAxNy4wMjEgMTkuNzA2IDE3LjAyMSAyMS44OTIgMTQuOTggMTIuMjkzIDE0Ljk4XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjEuODkxIDExLjkwNiAxOS43MDYgOS44NjQgMTAuMTA3IDkuODY0IDEyLjI5MyAxMS45MDYgMjEuODkxIDExLjkwNlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNOS4xLDEzLjkyNiw3LjY1MiwxMi40ODIsMi4zLDE3LjgzNmExLjAyMywxLjAyMywwLDAsMCwwLDEuNDQzbDUuMzU0LDUuMzU0TDkuMSwyMy4xOSw0LjQ2NCwxOC41NThaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0yOS43LDEyLjcyMSwyNC4zNDgsNy4zNjYsMjIuOSw4LjgxbDQuNjMsNC42MzJMMjIuOSwxOC4wNzVsMS40NDMsMS40NDNMMjkuNywxNC4xNjVhMS4wMjEsMS4wMjEsMCwwLDAsMC0xLjQ0NFpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuICBcIlB5dGhvblwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiLTEzMy4yNjhcIiB5MT1cIi0yMDIuOTFcIiB4Mj1cIi0xMzMuMTk4XCIgeTI9XCItMjAyLjg0XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoMjUyNDMuMDYxIDM4NTE5LjE3KSBzY2FsZSgxODkuMzggMTg5LjgxKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzM4N2ViOFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMzNjY5OTRcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCItMTMzLjU3NVwiIHkxPVwiLTIwMy4yMDNcIiB4Mj1cIi0xMzMuNDk1XCIgeTI9XCItMjAzLjEzM1wiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDI1MzA5LjA2MSAzODU4My40Mikgc2NhbGUoMTg5LjM4IDE4OS44MSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmUwNTJcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZmZjMzMxXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfcHl0aG9uPC90aXRsZT48cGF0aCBkPVwiTTE1Ljg4NSwyLjFjLTcuMSwwLTYuNjUxLDMuMDctNi42NTEsMy4wN1Y4LjM2aDYuNzUydjFINi41NDVTMiw4LjgsMiwxNi4wMDVzNC4wMTMsNi45MTIsNC4wMTMsNi45MTJIOC4zM1YxOS41NTZzLS4xMy00LjAxMywzLjktNC4wMTNoNi43NjJzMy43NzIuMDYsMy43NzItMy42NTJWNS44cy41NzItMy43MTItNi44NDItMy43MTJoMFpNMTIuMTUzLDQuMjM3YTEuMjE0LDEuMjE0LDAsMSwxLTEuMTgzLDEuMjQ0di0uMDJhMS4yMTQsMS4yMTQsMCwwLDEsMS4yMTQtMS4yMTRoMFpcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTE2LjA4NSwyOS45MWM3LjEsMCw2LjY1MS0zLjA4LDYuNjUxLTMuMDhWMjMuNjVIMTUuOTg1di0xaDkuNDdTMzAsMjMuMTU4LDMwLDE1Ljk5NXMtNC4wMTMtNi45MTItNC4wMTMtNi45MTJIMjMuNjRWMTIuNHMuMTMsNC4wMTMtMy45LDQuMDEzSDEyLjk3NVM5LjIsMTYuMzU2LDkuMiwyMC4wNjhWMjYuMnMtLjU3MiwzLjcxMiw2Ljg0MiwzLjcxMmguMDRabTMuNzMyLTIuMTQ3QTEuMjE0LDEuMjE0LDAsMSwxLDIxLDI2LjUxOXYuMDNhMS4yMTQsMS4yMTQsMCwwLDEtMS4yMTQsMS4yMTRoLjAzWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2IpXCIvPmAsXG4gIFwiUSAoa2RiKyBkYXRhYmFzZSlcIjogYDxwYXRoIGQ9XCJNMjAuMDkyLDI5VjE5LjY4MkE2Ljk1Myw2Ljk1MywwLDAsMSwxNy43LDIxLjY0NWE2Ljc0Myw2Ljc0MywwLDAsMS0zLjA4OS43MjRBNi41NTcsNi41NTcsMCwwLDEsOS40MTMsMjAsMTEuMDgxLDExLjA4MSwwLDAsMSw3LDEyLjQ3NSwxMC4wMzMsMTAuMDMzLDAsMCwxLDkuMjY0LDUuNSw3LjI1MSw3LjI1MSwwLDAsMSwxNC44NzQsM2E2LjI2Niw2LjI2NiwwLDAsMSwzLjIuNzg1LDcuMzI5LDcuMzI5LDAsMCwxLDIuNCwyLjM3M1YzLjQxOUgyNVYyOVptLjE1Ny0xNi41NDJhNi40OTIsNi40OTIsMCwwLDAtMS4xNi00LjIzMiwzLjYzNCwzLjYzNCwwLDAsMC0yLjkwNS0xLjM4NywzLjc0MiwzLjc0MiwwLDAsMC0yLjk3NSwxLjQxMyw2Ljg4MSw2Ljg4MSwwLDAsMC0xLjIsNC40ODUsNi43NjcsNi43NjcsMCwwLDAsMS4xNTIsNC40MDZBMy41OTMsMy41OTMsMCwwLDAsMTYuMDA5LDE4LjVhMy43ODYsMy43ODYsMCwwLDAsMi45NjYtMS41MThBNi44ODksNi44ODksMCwwLDAsMjAuMjQ5LDEyLjQ1OFpcIiBzdHlsZT1cImZpbGw6IzFlNzhiM1wiLz5gLFxuICBcIlEjXCI6IGA8cGF0aCBkPVwiTTE5LjQ1MSw2LjIxOGgyLjYzOFY4Ljg1NmgyLjYzN1Y2LjIxOGgyLjYzN1Y4Ljg1NkgzMFYxMS41SDI3LjM2NHYyLjYzNkgzMFYxNi43N0gyNy4zNjR2Mi42MzdIMjQuNzI3VjE2Ljc2OUgyMi4wOTFsMCwyLjYzN0gxOS40NTNWMTYuNzY4SDE2LjgxNVYxNC4xMjdoMi42MzhWMTEuNUgxNi44MTVWOC44NTNoMi42MzlabTIuNjM4LDcuOTE0aDIuNjM3VjExLjVIMjIuMDg5WlwiIHN0eWxlPVwiZmlsbDojMzNjXCIvPjxwYXRoIGQ9XCJNMTQuMDE4LDIxLjUyNGExMS40MzYsMTEuNDM2LDAsMCwwLDEuNTcyLTYuMTkyLDEwLjg3NywxMC44NzcsMCwwLDAtMS44NTgtNi42QTUuODg5LDUuODg5LDAsMCwwLDguODA4LDYuMTUzYTUuOTIxLDUuOTIxLDAsMCwwLTQuOTQsMi41ODFBMTAuODQyLDEwLjg0MiwwLDAsMCwyLDE1LjMzM2ExMC44NTMsMTAuODUzLDAsMCwwLDEuODY4LDYuNTkyLDUuOTE4LDUuOTE4LDAsMCwwLDQuOTQxLDIuNTg4LDUuNzQzLDUuNzQzLDAsMCwwLDMuMjYtLjk4N2wyLjMwNiwyLjMyMSwxLjU3Ny0yLjRabS01LjE3LTEuMjE4LDEuMTE3LDEuMTIxYTMuMjI5LDMuMjI5LDAsMCwxLTEuMTc0LjIxNywzLjMzNSwzLjMzNSwwLDAsMS0yLjgzNy0xLjU5Myw4LjEyNSw4LjEyNSwwLDAsMS0xLjE4LTQuNzE5LDguMSw4LjEsMCwwLDEsMS4xODQtNC43MjQsMy4zNzIsMy4zNzIsMCwwLDEsMi44Ny0xLjU4OCwzLjMxLDMuMzEsMCwwLDEsMi44MTksMS41ODUsOC4xNzgsOC4xNzgsMCwwLDEsMS4xNzIsNC43MjYsOS4xMTMsOS4xMTMsMCwwLDEtLjgzMyw0LjE1bC0xLjU2LTEuNTcxWlwiIHN0eWxlPVwiZmlsbDojMzNjXCIvPmAsXG4gIFwiUU1MXCI6IGA8cGF0aCBkPVwiTTI3LjMsNUg1Ljg4NkwyLDguOTU4VjI2SDI2LjExNEwzMCwyMi4wNDJWNVpNMTYuOSwyMy4wN2wtMS44MjguODUyTDEzLjUsMjEuMzMxYTMuOTY4LDMuOTY4LDAsMCwxLTEuMDgyLjEwNmMtMS44NDUsMC0zLjEyMy0uNS0zLjg1LTEuNDlhOC4wMyw4LjAzLDAsMCwxLTEuMDgyLTQuNyw4LjM1MSw4LjM1MSwwLDAsMSwxLjEtNC43NzMsNC4zNzksNC4zNzksMCwwLDEsMy44MzMtMS41NjFjMS44MjgsMCwzLjA4Ny41MTUsMy44MzMsMS41NDRhOC4zNTEsOC4zNTEsMCwwLDEsMS4xLDQuNzczLDEwLjgwOSwxMC44MDksMCwwLDEtLjQ1MiwzLjQ0LDMuOSwzLjksMCwwLDEtMS40NzMsMlptNS44NDgtMS42N2EyLjczNSwyLjczNSwwLDAsMS0yLjE2OC0uNjkyQTQuMTkyLDQuMTkyLDAsMCwxLDIwLDE4LjFWMTRIMTlWMTJoMVY5aDJ2M2gydjJIMjJ2My45YTMuOTA3LDMuOTA3LDAsMCwwLC4xNjgsMS40MzdjLjExMi4yMzEuMzkzLjM1NS44Ni4zNTVsMS41MzMtLjA1My4wOTMsMS41NDRBMTIuNTE5LDEyLjUxOSwwLDAsMSwyMi43NDgsMjEuNFpNMTIuNDE2LDEwLjYxNGEyLjQsMi40LDAsMCwwLTIuMjg5LDEuMSw3LjY1Nyw3LjY1NywwLDAsMC0uNiwzLjUxMyw3LjEzMSw3LjEzMSwwLDAsMCwuNiwzLjQ0MkEyLjQ0LDIuNDQsMCwwLDAsMTIuNDMzLDE5LjdhMi40MTcsMi40MTcsMCwwLDAsMi4yODktMS4wMTEsNy4zNDMsNy4zNDMsMCwwLDAsLjU4Ni0zLjQ0Miw3LjY5Miw3LjY5MiwwLDAsMC0uNi0zLjUzMUEyLjQsMi40LDAsMCwwLDEyLjQxNiwxMC42MTRaXCIgc3R5bGU9XCJmaWxsOiM0MWNkNTJcIi8+YCxcbiAgXCJSXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCItMTM0LjgxMVwiIHkxPVwiLTEwMy4yODRcIiB4Mj1cIi0xMzQuNzcyXCIgeTI9XCItMTAzLjMyM1wiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDcyMS4wOTQsIDAsIDAsIC00ODIuOTM3LCA5NzIxMy41OTUsIC00OTg3NC41MTIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjY2JjZWQwXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzg0ODM4YlwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIi0xMzUuMzc4XCIgeTE9XCItMTAyLjk4NVwiIHgyPVwiLTEzNS4zMzlcIiB5Mj1cIi0xMDMuMDI0XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMzk4LCAwLCAwLCAtNDA2LjEyNCwgNTM4OTMsIC00MTgxMi44MzYpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjMjc2ZGMzXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzE2NWNhYVwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3I8L3RpdGxlPjxwYXRoIGQ9XCJNMTYsMjMuOTU2Yy03LjczMiwwLTE0LTQuMi0xNC05LjM3NlM4LjI2OCw1LjIsMTYsNS4yLDMwLDkuNCwzMCwxNC41OCwyMy43MzIsMjMuOTU2LDE2LDIzLjk1NlpNMTguMTQzLDguODdDMTIuMjY2LDguODcsNy41LDExLjc0LDcuNSwxNS4yOHM0Ljc2NCw2LjQxLDEwLjY0MSw2LjQxLDEwLjIxNC0xLjk2MiwxMC4yMTQtNi40MVMyNC4wMiw4Ljg3LDE4LjE0Myw4Ljg3WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMjMuMzIxLDE5LjcyNmExMC41NDUsMTAuNTQ1LDAsMCwxLDEuMzQuNSwyLjU5MSwyLjU5MSwwLDAsMSwuNjguNDg1LDEuODM1LDEuODM1LDAsMCwxLC4zMTEuNDQ3bDMuMzM5LDUuNjMtNS40LDAtMi41MjQtNC43NGE2LjEsNi4xLDAsMCwwLS44MzUtMS4xNDUuODc5Ljg3OSwwLDAsMC0uNjQxLS4yOTFIMTguMzExdjYuMTczbC00Ljc3NiwwVjExLjAyNmg5LjU5MVMyNy41LDExLjEsMjcuNSwxNS4yNjEsMjMuMzIxLDE5LjcyNiwyMy4zMjEsMTkuNzI2Wm0tMi4wNzctNS4yOC0yLjg5MSwwdjIuNjgxaDIuODkzYTEuMzIzLDEuMzIzLDAsMCwwLDEuMzQtMS4zNjRBMS4yNDcsMS4yNDcsMCwwLDAsMjEuMjQ0LDE0LjQ0N1pcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz5gLFxuICBcIlJhY2tldFwiOiBgPGNpcmNsZSBjeD1cIjE2XCIgY3k9XCIxNlwiIHI9XCIxNFwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMjcuMDE2LDI0LjY0MWExNCwxNCwwLDAsMC0xNS44LTIxLjhDMTYuOSw1LjgyMiwyNC40MTMsMTUuNTQ5LDI3LjAxNiwyNC42NDFaXCIgc3R5bGU9XCJmaWxsOiMzZTViYTlcIi8+PHBhdGggZD1cIk0xMy45OTUsMTAuOTNhMjQuMywyNC4zLDAsMCwwLTcuMjItNS40NkExNCwxNCwwLDAsMCw1LjQ2MywyNS4yMTcsMzkuNTYsMzkuNTYsMCwwLDEsMTMuOTk1LDEwLjkzWlwiIHN0eWxlPVwiZmlsbDojOWYxZDIwXCIvPjxwYXRoIGQ9XCJNMTYuNTc1LDE0LjFBMzIuNjQ1LDMyLjY0NSwwLDAsMCw5LjQzLDI4LjM2NWExNC4wMTYsMTQuMDE2LDAsMCwwLDEzLjMtLjA4OUEzOC42NDIsMzguNjQyLDAsMCwwLDE2LjU3NSwxNC4xWlwiIHN0eWxlPVwiZmlsbDojOWYxZDIwXCIvPmAsXG4gIFwiUmF6b3IgQyNcIjogYDxwYXRoIGQ9XCJNMjMuODQ0LDI3LjY5MmExNi4zMzIsMTYuMzMyLDAsMCwxLTYuNjQ1LDEuM3EtNi4zNjQsMC0xMC4wMTMtMy4yNDNhMTEuMywxMS4zLDAsMCwxLTMuNjQ5LTguOUExMy43MTYsMTMuNzE2LDAsMCwxLDcuMzIyLDYuOTUxLDEyLjcxNiwxMi43MTYsMCwwLDEsMTYuOSwzLjAwOGExMS42NzYsMTEuNjc2LDAsMCwxLDguNDI1LDMuMDA2LDkuOTk0LDkuOTk0LDAsMCwxLDMuMTQyLDcuNTMzLDEwLjE4NywxMC4xODcsMCwwLDEtMi4zMTgsNy4xMTQsNy41MzIsNy41MzIsMCwwLDEtNS44MTcsMi41NDcsMi42MTMsMi42MTMsMCwwLDEtMS44NDUtLjY0MiwyLjMyMywyLjMyMywwLDAsMS0uNzY0LTEuNiw0LjksNC45LDAsMCwxLTQuMTQ4LDIuMjQzLDQuNiw0LjYsMCwwLDEtMy41MDctMS40NzksNS43MDYsNS43MDYsMCwwLDEtMS4zODQtNC4wNjMsOS45MTMsOS45MTMsMCwwLDEsMi4yLTYuMzU3cTIuMi0yLjc2Myw0LjgtMi43NjNhNS4wNjMsNS4wNjMsMCwwLDEsNC4yNTYsMS43MTZsLjMxMS0xLjMzOGgyLjQwNWwtMi4wODEsOS4wOGExMC43MTYsMTAuNzE2LDAsMCwwLS4zNTIsMi4yNDNxMCwuOTcyLjc0NC45NzJhNC44MTksNC44MTksMCwwLDAsMy44NzctMi4wNDcsOC45Myw4LjkzLDAsMCwwLDEuNjIxLTUuNjgxLDcuOTgsNy45OCwwLDAsMC0yLjY3NS02LjE3NSw5Ljg4Nyw5Ljg4NywwLDAsMC02LjkxOS0yLjQzMkExMC42LDEwLjYsMCwwLDAsOC43MTMsOC4zNTJhMTIuMDY2LDEyLjA2NiwwLDAsMC0zLjIsOC40OTUsOS41NjEsOS41NjEsMCwwLDAsMy4wNiw3LjU3M3EzLjA2LDIuNyw4LjU4NiwyLjdhMTMuNzU3LDEzLjc1NywwLDAsMCw1LjY3NS0xLjA1NFpNMTkuNDY2LDEyLjI1YTMuOTc3LDMuOTc3LDAsMCwwLTMuNi0xLjcxNnEtMS44MjQsMC0zLjI2MywyLjIzYTguNzI2LDguNzI2LDAsMCwwLTEuNDM5LDQuODI0cTAsMy42MzUsMi45MDUsMy42MzVBMy43NzEsMy43NzEsMCwwLDAsMTYuNzIsMjAuMDRhNi4zMDksNi4zMDksMCwwLDAsMS43LTMuMlpcIiBzdHlsZT1cImZpbGw6IzM2ODgzMlwiLz5gLFxuICBcIlJlYWN0IEpTWFwiOiBgPGNpcmNsZSBjeD1cIjE2XCIgY3k9XCIxNS45NzRcIiByPVwiMi41XCIgc3R5bGU9XCJmaWxsOiMwMGQ4ZmZcIi8+PHBhdGggZD1cIk0xNiwyMS43MDZhMjguMzg1LDI4LjM4NSwwLDAsMS04Ljg4LTEuMiwxMS4zLDExLjMsMCwwLDEtMy42NTctMS45NThBMy41NDMsMy41NDMsMCwwLDEsMiwxNS45NzRjMC0xLjY1MywxLjgxNi0zLjI3Myw0Ljg1OC00LjMzM0EyOC43NTUsMjguNzU1LDAsMCwxLDE2LDEwLjI5M2EyOC42NzQsMjguNjc0LDAsMCwxLDkuMDIyLDEuMzI0LDExLjM3NiwxMS4zNzYsMCwwLDEsMy41MzgsMS44NjZBMy4zOTEsMy4zOTEsMCwwLDEsMzAsMTUuOTc0YzAsMS43MTgtMi4wMywzLjQ1OS01LjMsNC41NDFBMjguOCwyOC44LDAsMCwxLDE2LDIxLjcwNlptMC0xMC4yMTdhMjcuOTQ4LDI3Ljk0OCwwLDAsMC04Ljc0OSwxLjI4MmMtMi44Ljk3Ny00LjA1NSwyLjMxMy00LjA1NSwzLjIsMCwuOTI4LDEuMzQ5LDIuMzg3LDQuMzExLDMuNEEyNy4yMSwyNy4yMSwwLDAsMCwxNiwyMC41MWEyNy42LDI3LjYsMCwwLDAsOC4zMjUtMS4xM0MyNy40LDE4LjM2MSwyOC44LDE2LjksMjguOCwxNS45NzRhMi4zMjcsMi4zMjcsMCwwLDAtMS4wMS0xLjU3MywxMC4xOTQsMTAuMTk0LDAsMCwwLTMuMTYxLTEuNjU0QTI3LjQ2MiwyNy40NjIsMCwwLDAsMTYsMTEuNDg5WlwiIHN0eWxlPVwiZmlsbDojMDBkOGZmXCIvPjxwYXRoIGQ9XCJNMTAuMzIsMjguNDQzYTIuNjM5LDIuNjM5LDAsMCwxLTEuMzM2LS4zMjhjLTEuNDMyLS44MjYtMS45MjgtMy4yMDgtMS4zMjctNi4zNzNhMjguNzU1LDI4Ljc1NSwwLDAsMSwzLjQtOC41OTNoMEEyOC42NzYsMjguNjc2LDAsMCwxLDE2LjcxLDUuOTk1YTExLjM3NiwxMS4zNzYsMCwwLDEsMy4zODQtMi4xMzMsMy4zOTEsMy4zOTEsMCwwLDEsMi44NzgsMGMxLjQ4OS44NTgsMS45ODIsMy40ODYsMS4yODcsNi44NTlhMjguODA2LDI4LjgwNiwwLDAsMS0zLjMxNiw4LjEzMywyOC4zODUsMjguMzg1LDAsMCwxLTUuNDc2LDcuMDkzLDExLjMsMTEuMywwLDAsMS0zLjUyMywyLjE4OUE0LjkyNiw0LjkyNiwwLDAsMSwxMC4zMiwyOC40NDNabTEuNzczLTE0LjdhMjcuOTQ4LDI3Ljk0OCwwLDAsMC0zLjI2LDguMjE5Yy0uNTUzLDIuOTE1LS4wMjIsNC42NjguNzUsNS4xMTQuOC40NjMsMi43NDIuMDI0LDUuMS0yLjAzNmEyNy4yMDksMjcuMjA5LDAsMCwwLDUuMjI3LTYuNzksMjcuNiwyNy42LDAsMCwwLDMuMTgxLTcuNzc2Yy42NTQtMy4xNzUuMDg5LTUuMTE5LS43MTMtNS41ODFhMi4zMjcsMi4zMjcsMCwwLDAtMS44NjguMDg5QTEwLjE5NCwxMC4xOTQsMCwwLDAsMTcuNSw2LjlhMjcuNDY0LDI3LjQ2NCwwLDAsMC01LjQsNi44NDlaXCIgc3R5bGU9XCJmaWxsOiMwMGQ4ZmZcIi8+PHBhdGggZD1cIk0yMS42NzcsMjguNDU2Yy0xLjM1NSwwLTMuMDc2LS44Mi00Ljg2OC0yLjM2MWEyOC43NTYsMjguNzU2LDAsMCwxLTUuNzQ3LTcuMjM3aDBhMjguNjc2LDI4LjY3NiwwLDAsMS0zLjM3NC04LjQ3MSwxMS4zNzYsMTEuMzc2LDAsMCwxLS4xNTgtNEEzLjM5MSwzLjM5MSwwLDAsMSw4Ljk2NCwzLjljMS40ODctLjg2MSw0LjAxLjAyNCw2LjU4NSwyLjMxYTI4LjgsMjguOCwwLDAsMSw1LjM5LDYuOTM0LDI4LjM4NCwyOC4zODQsMCwwLDEsMy40MSw4LjI4NywxMS4zLDExLjMsMCwwLDEsLjEzNyw0LjE0NiwzLjU0MywzLjU0MywwLDAsMS0xLjQ5NCwyLjU1NUEyLjU5LDIuNTksMCwwLDEsMjEuNjc3LDI4LjQ1NlptLTkuNTgtMTAuMmEyNy45NDksMjcuOTQ5LDAsMCwwLDUuNDkyLDYuOTI5YzIuMjQ5LDEuOTM1LDQuMDMzLDIuMzUxLDQuOCwxLjkuOC0uNDY1LDEuMzktMi4zNjMuNzgyLTUuNDM0QTI3LjIxMiwyNy4yMTIsMCwwLDAsMTkuOSwxMy43NCwyNy42LDI3LjYsMCwwLDAsMTQuNzU1LDcuMWMtMi40MjQtMi4xNTItNC4zOS0yLjYzMy01LjE5MS0yLjE2OWEyLjMyNywyLjMyNywwLDAsMC0uODU1LDEuNjYyLDEwLjE5NCwxMC4xOTQsMCwwLDAsLjE1MywzLjU2NSwyNy40NjUsMjcuNDY1LDAsMCwwLDMuMjM2LDguMVpcIiBzdHlsZT1cImZpbGw6IzAwZDhmZlwiLz5gLFxuICBcIlJlYWN0IFRTWFwiOiBgPGNpcmNsZSBjeD1cIjE2XCIgY3k9XCIxNS45NzRcIiByPVwiMi41XCIgc3R5bGU9XCJmaWxsOiMwMDdhY2NcIi8+PHBhdGggZD1cIk0xNiwyMS43MDZhMjguMzg1LDI4LjM4NSwwLDAsMS04Ljg4LTEuMiwxMS4zLDExLjMsMCwwLDEtMy42NTctMS45NThBMy41NDMsMy41NDMsMCwwLDEsMiwxNS45NzRjMC0xLjY1MywxLjgxNi0zLjI3Myw0Ljg1OC00LjMzM0EyOC43NTUsMjguNzU1LDAsMCwxLDE2LDEwLjI5M2EyOC42NzQsMjguNjc0LDAsMCwxLDkuMDIyLDEuMzI0LDExLjM3NiwxMS4zNzYsMCwwLDEsMy41MzgsMS44NjZBMy4zOTEsMy4zOTEsMCwwLDEsMzAsMTUuOTc0YzAsMS43MTgtMi4wMywzLjQ1OS01LjMsNC41NDFBMjguOCwyOC44LDAsMCwxLDE2LDIxLjcwNlptMC0xMC4yMTdhMjcuOTQ4LDI3Ljk0OCwwLDAsMC04Ljc0OSwxLjI4MmMtMi44Ljk3Ny00LjA1NSwyLjMxMy00LjA1NSwzLjIsMCwuOTI4LDEuMzQ5LDIuMzg3LDQuMzExLDMuNEEyNy4yMSwyNy4yMSwwLDAsMCwxNiwyMC41MWEyNy42LDI3LjYsMCwwLDAsOC4zMjUtMS4xM0MyNy40LDE4LjM2MSwyOC44LDE2LjksMjguOCwxNS45NzRhMi4zMjcsMi4zMjcsMCwwLDAtMS4wMS0xLjU3MywxMC4xOTQsMTAuMTk0LDAsMCwwLTMuMTYxLTEuNjU0QTI3LjQ2MiwyNy40NjIsMCwwLDAsMTYsMTEuNDg5WlwiIHN0eWxlPVwiZmlsbDojMDA3YWNjXCIvPjxwYXRoIGQ9XCJNMTAuMzIsMjguNDQzYTIuNjM5LDIuNjM5LDAsMCwxLTEuMzM2LS4zMjhjLTEuNDMyLS44MjYtMS45MjgtMy4yMDgtMS4zMjctNi4zNzNhMjguNzU1LDI4Ljc1NSwwLDAsMSwzLjQtOC41OTNoMEEyOC42NzYsMjguNjc2LDAsMCwxLDE2LjcxLDUuOTk1YTExLjM3NiwxMS4zNzYsMCwwLDEsMy4zODQtMi4xMzMsMy4zOTEsMy4zOTEsMCwwLDEsMi44NzgsMGMxLjQ4OS44NTgsMS45ODIsMy40ODYsMS4yODcsNi44NTlhMjguODA2LDI4LjgwNiwwLDAsMS0zLjMxNiw4LjEzMywyOC4zODUsMjguMzg1LDAsMCwxLTUuNDc2LDcuMDkzLDExLjMsMTEuMywwLDAsMS0zLjUyMywyLjE4OUE0LjkyNiw0LjkyNiwwLDAsMSwxMC4zMiwyOC40NDNabTEuNzczLTE0LjdhMjcuOTQ4LDI3Ljk0OCwwLDAsMC0zLjI2LDguMjE5Yy0uNTUzLDIuOTE1LS4wMjIsNC42NjguNzUsNS4xMTQuOC40NjMsMi43NDIuMDI0LDUuMS0yLjAzNmEyNy4yMDksMjcuMjA5LDAsMCwwLDUuMjI3LTYuNzksMjcuNiwyNy42LDAsMCwwLDMuMTgxLTcuNzc2Yy42NTQtMy4xNzUuMDg5LTUuMTE5LS43MTMtNS41ODFhMi4zMjcsMi4zMjcsMCwwLDAtMS44NjguMDg5QTEwLjE5NCwxMC4xOTQsMCwwLDAsMTcuNSw2LjlhMjcuNDY0LDI3LjQ2NCwwLDAsMC01LjQsNi44NDlaXCIgc3R5bGU9XCJmaWxsOiMwMDdhY2NcIi8+PHBhdGggZD1cIk0yMS42NzcsMjguNDU2Yy0xLjM1NSwwLTMuMDc2LS44Mi00Ljg2OC0yLjM2MWEyOC43NTYsMjguNzU2LDAsMCwxLTUuNzQ3LTcuMjM3aDBhMjguNjc2LDI4LjY3NiwwLDAsMS0zLjM3NC04LjQ3MSwxMS4zNzYsMTEuMzc2LDAsMCwxLS4xNTgtNEEzLjM5MSwzLjM5MSwwLDAsMSw4Ljk2NCwzLjljMS40ODctLjg2MSw0LjAxLjAyNCw2LjU4NSwyLjMxYTI4LjgsMjguOCwwLDAsMSw1LjM5LDYuOTM0LDI4LjM4NCwyOC4zODQsMCwwLDEsMy40MSw4LjI4NywxMS4zLDExLjMsMCwwLDEsLjEzNyw0LjE0NiwzLjU0MywzLjU0MywwLDAsMS0xLjQ5NCwyLjU1NUEyLjU5LDIuNTksMCwwLDEsMjEuNjc3LDI4LjQ1NlptLTkuNTgtMTAuMmEyNy45NDksMjcuOTQ5LDAsMCwwLDUuNDkyLDYuOTI5YzIuMjQ5LDEuOTM1LDQuMDMzLDIuMzUxLDQuOCwxLjkuOC0uNDY1LDEuMzktMi4zNjMuNzgyLTUuNDM0QTI3LjIxMiwyNy4yMTIsMCwwLDAsMTkuOSwxMy43NCwyNy42LDI3LjYsMCwwLDAsMTQuNzU1LDcuMWMtMi40MjQtMi4xNTItNC4zOS0yLjYzMy01LjE5MS0yLjE2OWEyLjMyNywyLjMyNywwLDAsMC0uODU1LDEuNjYyLDEwLjE5NCwxMC4xOTQsMCwwLDAsLjE1MywzLjU2NSwyNy40NjUsMjcuNDY1LDAsMCwwLDMuMjM2LDguMVpcIiBzdHlsZT1cImZpbGw6IzAwN2FjY1wiLz5gLFxuICBcIlJlYXNvblwiOiBgPHBvbHlsaW5lIHBvaW50cz1cIjIgMiAzMCAyIDMwIDMwIDIgMzAgMiAyXCIgc3R5bGU9XCJmaWxsOiNkZDRiMzlcIi8+PHBhdGggZD1cIk05LjA1MSwxNy41MjdxMi41MzcsMCw1LjA3MiwwQTQuOTQ3LDQuOTQ3LDAsMCwxLDE3LjEsMTguNWEzLjI5LDMuMjksMCwwLDEsMS4xMjgsMi4yNjcsNC4xMTcsNC4xMTcsMCwwLDEtLjc3OCwzLjAyMiwzLjYsMy42LDAsMCwxLTEuMTM3LjkwNWwyLjI0NywzLjU0OS0zLjA2MSwwLTEuNi0zLjA0My0yLjE1NCwwLDAsMy4wMzJIOS4wNTFWMTcuNTI3bTIuNjksMi4xMjgsMCwzLjQzOCwxLjk4OSwwYTIuMTg0LDIuMTg0LDAsMCwwLDEuNDY4LS40NTIsMS44MTQsMS44MTQsMCwwLDAsLjQ4Mi0xLjU0NCwxLjQ2OSwxLjQ2OSwwLDAsMC0uNzA1LTEuMTgsMi43NjgsMi43NjgsMCwwLDAtMS40MzctLjI2OUMxMi45NCwxOS42NTQsMTEuNzQxLDE5LjY1NSwxMS43NDEsMTkuNjU1Wm04LjM4NC0yLjEzaDguMzV2Mi4xM2gtNS42NlYyMS44bDUuMTEsMHYyLjExOUgyMi44MlYyNi4xaDUuODI0djIuMTQySDIwLjEyNVYxNy41MjVaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcbiAgXCJSZWdvXCI6IGA8ZGVmcz48Y2xpcFBhdGggaWQ9XCJhXCI+PHBhdGggZD1cIk03LjA1NSwxNi4yNDFjMy40MTUtMTAuMjIsMTQuNzU5LTkuNDczLDE3LjkyNCwwbC4xLDUuODkzYTE1LjU2MiwxNS41NjIsMCwwLDAtOS4wMzYsNy4yNDZBMTcuNjQxLDE3LjY0MSwwLDAsMCw3LjAzLDIyLjM0NlpcIiBzdHlsZT1cImZpbGw6bm9uZVwiLz48L2NsaXBQYXRoPjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3JlZ288L3RpdGxlPjxwYXRoIGQ9XCJNNy4wMywxNi4yNDFsMi42LTQuNTU5Yy0yLjQxOC0uMzEyLTIuNjA2LTMuNDMxLS44LTkuMDYyQzMuODA5LDguODUzLDIuNDIsMTAuMjI4LDcuMDMsMTYuMjQxWlwiIHN0eWxlPVwiZmlsbDojYmZiZmJmO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMjQuOTcsMTYuMjQxbC0yLjU5NS00LjU1OWMyLjQxOC0uMzEyLDIuNjA2LTMuNDMxLjgtOS4wNjJDMjguMTkxLDguODUzLDI5LjU4LDEwLjIyOCwyNC45NywxNi4yNDFaXCIgc3R5bGU9XCJmaWxsOiNiZmJmYmY7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk03LjA1NSwxNi4yNDFjMy40MTUtMTAuMjIsMTQuNzU5LTkuNDczLDE3LjkyNCwwbC4xLDUuODkzYTE1LjU2MiwxNS41NjIsMCwwLDAtOS4wMzYsNy4yNDZBMTcuNjQxLDE3LjY0MSwwLDAsMCw3LjAzLDIyLjM0NlpcIiBzdHlsZT1cImZpbGw6bm9uZVwiLz48ZyBzdHlsZT1cImNsaXAtcGF0aDp1cmwoI2EpXCI+PHJlY3QgeD1cIjE2LjA1M1wiIHk9XCI3Ljk2MlwiIHdpZHRoPVwiOS41NDlcIiBoZWlnaHQ9XCIyMS44OTlcIiBzdHlsZT1cImZpbGw6IzUzNjM2N1wiLz48cmVjdCB4PVwiNS4zMjJcIiB5PVwiNy45NjJcIiB3aWR0aD1cIjEwLjczMlwiIGhlaWdodD1cIjIxLjg5OVwiIHN0eWxlPVwiZmlsbDojNzg5MjlhXCIvPjwvZz48Y2lyY2xlIGN4PVwiMTYuMDRcIiBjeT1cIjE2LjI0MVwiIHI9XCIxLjE2NlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG4gIFwiUmVTY3JpcHRcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjExLjQyMVwiIHkxPVwiLTIyMS43MDVcIiB4Mj1cIjIxLjUwOVwiIHkyPVwiLTI0OC43OTJcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLCAwLCAwLCAtMSwgMCwgLTIxOClcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNlODRmNGZcIi8+PHN0b3Agb2Zmc2V0PVwiMC40MDlcIiBzdG9wLWNvbG9yPVwiI2RiNDY0NlwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5OVwiIHN0b3AtY29sb3I9XCIjY2IzOTM5XCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfcmVzY3JpcHQ8L3RpdGxlPjxwYXRoIGQ9XCJNMiwxMC45N2MwLTMuNzM4LDAtNS42Ljk1Mi02LjkxNmE0Ljk5Miw0Ljk5MiwwLDAsMSwxLjEtMS4xQzUuMzY0LDIsNy4yMzMsMiwxMC45NjksMkgyMS4wM2MzLjczOCwwLDUuNjA1LDAsNi45MTYuOTUxYTQuOTkyLDQuOTkyLDAsMCwxLDEuMSwxLjFDMzAsNS4zNjQsMzAsNy4yMzIsMzAsMTAuOTdWMjEuMDNjMCwzLjczNywwLDUuNjA1LS45NTIsNi45MTZhNC45NjYsNC45NjYsMCwwLDEtMS4xLDEuMUMyNi42MzYsMzAsMjQuNzY4LDMwLDIxLjAzLDMwSDEwLjk2OWMtMy43MzYsMC01LjYsMC02LjkxNS0uOTUyYTQuOTY2LDQuOTY2LDAsMCwxLTEuMS0xLjFDMiwyNi42MzYsMiwyNC43NjcsMiwyMS4wM1pcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTIwLjk3NCwxNS41NTRhMy4zMjUsMy4zMjUsMCwxLDAtMy4zMjQtMy4zMjVBMy4zMjUsMy4zMjUsMCwwLDAsMjAuOTc0LDE1LjU1NFpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTkuMzE2LDExLjgwOWE0LjY3Niw0LjY3NiwwLDAsMSwuMjA2LTEuOTg3QTEuODg2LDEuODg2LDAsMCwxLDEwLjM0NSw5YTQuNyw0LjcsMCwwLDEsMS45ODctLjIwNWgyLjY0VjIxLjA0NWE0LjY4Niw0LjY4NiwwLDAsMS0uMTQ0LDEuNjY0LDEuODkyLDEuODkyLDAsMCwxLTEuMDIsMS4wMiw0LjcyLDQuNzIsMCwwLDEtMS42NjQuMTQzLDQuNzE3LDQuNzE3LDAsMCwxLTEuNjY0LS4xNDMsMS44OTIsMS44OTIsMCwwLDEtMS4wMi0xLjAyLDQuNzIsNC43MiwwLDAsMS0uMTQzLTEuNjY0WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG4gIFwicmVTVCAocmVTdHJ1Y3R1cmVkVGV4dClcIjogYDxwYXRoIGQ9XCJNMTYsMzBBMTMuODU5LDEzLjg1OSwwLDAsMSwyLjI4NiwxNiwxNC4xNDksMTQuMTQ5LDAsMCwxLDYuMyw2LjEsMTMuNTE3LDEzLjUxNywwLDAsMSwyNS43LDYuMSwxNC4xNDksMTQuMTQ5LDAsMCwxLDI5LjcxNCwxNiwxMy44NTksMTMuODU5LDAsMCwxLDE2LDMwWlwiIHN0eWxlPVwiZmlsbDojY2UzZjMxXCIvPjxwYXRoIGQ9XCJNMTEuODY5LDIzLjAxNWgtLjRhNC4yNjMsNC4yNjMsMCwwLDEtMS4wNDgtLjExMywxLjM4NywxLjM4NywwLDAsMS0uNzY3LS41NDgsMi4yLDIuMiwwLDAsMS0uNDA5LTEuMDI2QTEzLjI4LDEzLjI4LDAsMCwxLDkuMTU5LDE5LjZhMTIuNzgsMTIuNzgsMCwwLDAtLjA4LTEuNjg3LDEuNzczLDEuNzczLDAsMCwwLS40MDUtLjkyNCwxLjMyNSwxLjMyNSwwLDAsMC0xLjAyNi0uMzkxVjE1LjRhMS4zMjUsMS4zMjUsMCwwLDAsMS4wMjYtLjM5MSwxLjc3MywxLjc3MywwLDAsMCwuNDA1LS45MjQsMTIuNzgsMTIuNzgsMCwwLDAsLjA4LTEuNjg3LDEzLjI4LDEzLjI4LDAsMCwxLC4wODQtMS43MzEsMi4yLDIuMiwwLDAsMSwuNDA5LTEuMDI2LDEuMzg3LDEuMzg3LDAsMCwxLC43NjctLjU0OCw0LjI2Myw0LjI2MywwLDAsMSwxLjA0OC0uMTEzaC40djEuMTRoLS4yMjZxLS43NiwwLS45MzEuNGE3LjcyLDcuNzIsMCwwLDAtLjE3MiwyLjE3LDQuODc2LDQuODc2LDAsMCwxLS40MTYsMi4zMTZBMi4xMTcsMi4xMTcsMCwwLDEsOC44NTksMTZhMi4wODksMi4wODksMCwwLDEsMS4yNjQuOTg2QTQuODc2LDQuODc2LDAsMCwxLDEwLjU0LDE5LjNhNy43Miw3LjcyLDAsMCwwLC4xNzIsMi4xN3EuMTcyLjQuOTMxLjRoLjIyNlptMS42LTMuMTQxaDEuMDM1VjE2LjQyaDEuNDU5bDEuOTcsMy40NTRoMS4xODRMMTcuMDQsMTYuMzA4YTIuMjQzLDIuMjQzLDAsMCwwLDEuODMzLTIuMzE5YzAtMS43LTEuMi0yLjI5NC0yLjg1NS0yLjI5NEgxMy40NzRabTEuMDM1LTQuM1YxMi41M2gxLjM1OWMxLjI3MiwwLDEuOTcuMzg2LDEuOTcsMS40NTlzLS43LDEuNTgzLTEuOTcsMS41ODNabTUuNTU3LTYuNTkxaC40YTQuMjYzLDQuMjYzLDAsMCwxLDEuMDQ4LjExMywxLjM4NywxLjM4NywwLDAsMSwuNzY3LjU0OCwyLjIsMi4yLDAsMCwxLC40MDksMS4wMjYsMTMuMjgsMTMuMjgsMCwwLDEsLjA4NCwxLjczMSwxMi43OCwxMi43OCwwLDAsMCwuMDgsMS42ODcsMS43NzMsMS43NzMsMCwwLDAsLjQwNS45MjQsMS4zMjUsMS4zMjUsMCwwLDAsMS4wMjYuMzkxdjEuMTkxYTEuMzI1LDEuMzI1LDAsMCwwLTEuMDI2LjM5MSwxLjc3MywxLjc3MywwLDAsMC0uNDA1LjkyNCwxMi43OCwxMi43OCwwLDAsMC0uMDgsMS42ODcsMTMuMjgsMTMuMjgsMCwwLDEtLjA4NCwxLjczMSwyLjIsMi4yLDAsMCwxLS40MDksMS4wMjYsMS4zODcsMS4zODcsMCwwLDEtLjc2Ny41NDgsNC4yNjMsNC4yNjMsMCwwLDEtMS4wNDguMTEzaC0uNHYtMS4xNGguMjI2cS43NiwwLC45MzEtLjRBNy43Miw3LjcyLDAsMCwwLDIxLjQsMTkuM2E0Ljg3Niw0Ljg3NiwwLDAsMSwuNDE2LTIuMzE2QTIuMDg5LDIuMDg5LDAsMCwxLDIzLjA3NSwxNmEyLjExNywyLjExNywwLDAsMS0xLjI2NC0uOTk0LDQuODc2LDQuODc2LDAsMCwxLS40MTYtMi4zMTYsNy43Miw3LjcyLDAsMCwwLS4xNzItMi4xN3EtLjE3Mi0uNC0uOTMxLS40aC0uMjI2WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG4gIFwiUm9ib3QgRnJhbWV3b3JrXCI6IGA8Y2lyY2xlIGN4PVwiMTZcIiBjeT1cIjE2XCIgcj1cIjE0XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xMC4zODcsMTQuNmEyLjcyNywyLjcyNywwLDAsMSw1LjQ1MywwLC45OS45OSwwLDEsMS0xLjk4LDAsLjc0Ni43NDYsMCwwLDAtMS40OTIsMCwuOTkuOTksMCwxLDEtMS45OCwwbTExLjMsNC41ODZhLjk5MS45OTEsMCwwLDEtLjk5Mi45OTJIMTEuNTA4YS45OTIuOTkyLDAsMCwxLDAtMS45ODRoOS4xODRhLjk5NC45OTQsMCwwLDEsLjk5Mi45OTJNMTcuMzkxLDE1LjE2YS45OTIuOTkyLDAsMCwxLC4yNy0xLjM3NWwyLjI5My0xLjU1MWEuOTg5Ljk4OSwwLDEsMSwxLjEwOSwxLjYzN2wtMi4zLDEuNTUxYS45NjUuOTY1LDAsMCwxLS41NTEuMTcyLjk5NC45OTQsMCwwLDEtLjgyNC0uNDM0bTYuMjg5LDYuMDk0YS43MDcuNzA3LDAsMCwxLS4yMDcuNWwtMS43MDcsMS43MDdhLjcwNy43MDcsMCwwLDEtLjUuMjA3SDEwLjhhLjcwNy43MDcsMCwwLDEtLjUtLjIwN0w4LjYsMjEuNzU0YS43MDcuNzA3LDAsMCwxLS4yMDctLjVWMTAuOGEuNzA3LjcwNywwLDAsMSwuMjA3LS41TDEwLjMsOC41OTRhLjcwNy43MDcsMCwwLDEsLjUtLjIwN0gyMS4yNjZhLjcwNy43MDcsMCwwLDEsLjUuMjA3TDIzLjQ3MywxMC4zYS43MDcuNzA3LDAsMCwxLC4yMDcuNVpNMjUuMTI5LDkuMTYsMjIuOSw2LjkzQTEuODA3LDEuODA3LDAsMCwwLDIxLjYyOSw2LjRIMTAuNDM4YTEuODA3LDEuODA3LDAsMCwwLTEuMjczLjUyN0w2LjkzOCw5LjE2YTEuOCwxLjgsMCwwLDAtLjUyNywxLjI3VjIxLjYyMWExLjgsMS44LDAsMCwwLC41MjcsMS4yNzNsMi4yMjcsMi4yM2ExLjgxLDEuODEsMCwwLDAsMS4yNzMuNTIzSDIxLjYyOWExLjgsMS44LDAsMCwwLDEuMjczLS41MjNsMi4yMjctMi4yM2ExLjc4NCwxLjc4NCwwLDAsMCwuNTI3LTEuMjczVjEwLjQzNGExLjc4NCwxLjc4NCwwLDAsMC0uNTI3LTEuMjczXCIvPmAsXG4gIFwiUnVieVwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiLTIzNS45NTdcIiB5MT1cIi0zMDguNTc5XCIgeDI9XCItMjM1Ljk4NlwiIHkyPVwiLTMwOC41MjdcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgyMDIuOTM1LCAwLCAwLCAtMjAyLjc4LCA0NzkxMC40NjEsIC02MjU0MS4xNilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmYjc2NTVcIi8+PHN0b3Agb2Zmc2V0PVwiMC40MVwiIHN0b3AtY29sb3I9XCIjZTQyYjFlXCIvPjxzdG9wIG9mZnNldD1cIjAuOTlcIiBzdG9wLWNvbG9yPVwiIzkwMFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM5MDBcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCItMjM1LjU3MVwiIHkxPVwiLTMwOS4wODdcIiB4Mj1cIi0yMzUuNjk3XCIgeTI9XCItMzA5LjA0MVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDYwLjMwOCwgMCwgMCwgLTExMS43NzgsIDE0MjM2LjM1MSwgLTM0NTI1LjM5NSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM4NzExMDFcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjOTExMjA5XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzkxMTIwOVwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImNcIiB4MT1cIi0yMzUuODk2XCIgeTE9XCItMzEzLjM2MlwiIHgyPVwiLTIzNS45MzdcIiB5Mj1cIi0zMTMuMTI5XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMTg4LjMyLCAwLCAwLCAtMjEuOTg2LCA0NDQ0Ny4zMDIsIC02ODU2Ljg4MilcIiB4bGluazpocmVmPVwiI2JcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiZFwiIHgxPVwiLTIzMy41MTVcIiB5MT1cIi0zMDkuMDgyXCIgeDI9XCItMjMzLjQ5N1wiIHkyPVwiLTMwOS4xNjFcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg2NS4yMjIsIDAsIDAsIC05Ny4xLCAxNTIzNy44MDIsIC0yOTk5MS44MTQpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZmXCIvPjxzdG9wIG9mZnNldD1cIjAuMjNcIiBzdG9wLWNvbG9yPVwiI2U1NzI1MlwiLz48c3RvcCBvZmZzZXQ9XCIwLjQ2XCIgc3RvcC1jb2xvcj1cIiNkZTNiMjBcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjYTYwMDAzXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2E2MDAwM1wiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImVcIiB4MT1cIi0yMzUuMzE0XCIgeTE9XCItMzA5LjUzNFwiIHgyPVwiLTIzNS4zMVwiIHkyPVwiLTMwOS42MDdcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxMDUuMzIsIDAsIDAsIC0xMDYuODI1LCAyNDc5OC45MjUsIC0zMzA1My4xNTIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZmXCIvPjxzdG9wIG9mZnNldD1cIjAuMjNcIiBzdG9wLWNvbG9yPVwiI2U0NzE0ZVwiLz48c3RvcCBvZmZzZXQ9XCIwLjU2XCIgc3RvcC1jb2xvcj1cIiNiZTFhMGRcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjYTgwZDAwXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2E4MGQwMFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImZcIiB4MT1cIi0yMzUuODgyXCIgeTE9XCItMzExLjg1MVwiIHgyPVwiLTIzNS44NjlcIiB5Mj1cIi0zMTEuOTM1XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoOTQuMzIxLCAwLCAwLCAtNjYuNDE4LCAyMjI3MS40OTksIC0yMDcwNy4wMDQpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZmXCIvPjxzdG9wIG9mZnNldD1cIjAuMThcIiBzdG9wLWNvbG9yPVwiI2U0NjM0MlwiLz48c3RvcCBvZmZzZXQ9XCIwLjRcIiBzdG9wLWNvbG9yPVwiI2M4MjQxMFwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5XCIgc3RvcC1jb2xvcj1cIiNhODBkMDBcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjYTgwZDAwXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiZ1wiIHgxPVwiLTIzNS40MTJcIiB5MT1cIi0zMjEuMDc0XCIgeDI9XCItMjM1LjMzM1wiIHkyPVwiLTMyMC45NThcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg3MC43NjcsIDAsIDAsIC0yNC4zMDEsIDE2Njc4LjExNiwgLTc3OTguNjQ3KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjU0XCIgc3RvcC1jb2xvcj1cIiNjODFmMTFcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjYmYwOTA1XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2JmMDkwNVwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImhcIiB4MT1cIi0yMjMuODIxXCIgeTE9XCItMzEwLjExNlwiIHgyPVwiLTIyMy43OTZcIiB5Mj1cIi0zMTAuMThcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxOC4xNzcsIDAsIDAsIC03Mi42NDUsIDQwNzEuMDE3LCAtMjI1MTAuMjMzKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjMxXCIgc3RvcC1jb2xvcj1cIiNkZTQwMjRcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjYmYxOTBiXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2JmMTkwYlwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImlcIiB4MT1cIi0yMzUuNTYxXCIgeTE9XCItMzA5LjI1OFwiIHgyPVwiLTIzNS40MjRcIiB5Mj1cIi0zMDkuMTE2XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMTU4LjE2MiwgMCwgMCwgLTE1Ny45MzcsIDM3MjU2LjMxMywgLTQ4ODE5LjM4MilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNiZDAwMTJcIi8+PHN0b3Agb2Zmc2V0PVwiMC4wN1wiIHN0b3AtY29sb3I9XCIjZmZmXCIvPjxzdG9wIG9mZnNldD1cIjAuMTdcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjI3XCIgc3RvcC1jb2xvcj1cIiNjODJmMWNcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zM1wiIHN0b3AtY29sb3I9XCIjODIwYzAxXCIvPjxzdG9wIG9mZnNldD1cIjAuNDZcIiBzdG9wLWNvbG9yPVwiI2EzMTYwMVwiLz48c3RvcCBvZmZzZXQ9XCIwLjcyXCIgc3RvcC1jb2xvcj1cIiNiMzEzMDFcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjZTgyNjA5XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2U4MjYwOVwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImpcIiB4MT1cIi0yMzUuNDI0XCIgeTE9XCItMzA5LjE0M1wiIHgyPVwiLTIzNS40NzZcIiB5Mj1cIi0zMDkuMTI2XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMTI3LjA3NCwgMCwgMCwgLTk3LjQwOSwgMjk5MzIuMjI5LCAtMzAwODYuOTQ3KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzhjMGMwMVwiLz48c3RvcCBvZmZzZXQ9XCIwLjU0XCIgc3RvcC1jb2xvcj1cIiM5OTBjMDBcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjYTgwZDBlXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2E4MGQwZVwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImtcIiB4MT1cIi0yMzUuODM5XCIgeTE9XCItMzA5LjYwNFwiIHgyPVwiLTIzNS45MDFcIiB5Mj1cIi0zMDkuNTU1XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoOTQuMDExLCAwLCAwLCAtMTA1LjYwMywgMjIxOTguNzQzLCAtMzI2NzYuODU2KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzdlMTEwYlwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5XCIgc3RvcC1jb2xvcj1cIiM5ZTBjMDBcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjOWUwYzAwXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwibFwiIHgxPVwiLTIzNS44NTRcIiB5MT1cIi0zMTEuMjRcIiB4Mj1cIi0yMzUuODkxXCIgeTI9XCItMzExLjIwMlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDc5LjcwMiwgMCwgMCwgLTgxLjc5MSwgMTg4MjcuMzk3LCAtMjU0NDcuOTA1KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzc5MTMwZFwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5XCIgc3RvcC1jb2xvcj1cIiM5ZTEyMGJcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjOWUxMjBiXCIvPjwvbGluZWFyR3JhZGllbnQ+PHJhZGlhbEdyYWRpZW50IGlkPVwibVwiIGN4PVwiLTIzNS44ODJcIiBjeT1cIi0zMTIuNTQzXCIgcj1cIjAuMDc2XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoOTMuMTEzLCAwLCAwLCAtNDguNjU1LCAyMTk4Ni4wNzMsIC0xNTE5My42MSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNhODBkMDBcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjN2UwZTA4XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzdlMGUwOFwiLz48L3JhZGlhbEdyYWRpZW50PjxyYWRpYWxHcmFkaWVudCBpZD1cIm5cIiBjeD1cIi0yMzUuMjgyXCIgY3k9XCItMzA5LjcwNFwiIHI9XCIwLjA5N1wiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDk3LjQzNCwgMCwgMCwgLTc1Ljg0OCwgMjI5MzcuMDU3LCAtMjM0NjcuODQpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjYTMwYzAwXCIvPjxzdG9wIG9mZnNldD1cIjAuOTlcIiBzdG9wLWNvbG9yPVwiIzgwMGUwOFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM4MDBlMDhcIi8+PC9yYWRpYWxHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJvXCIgeDE9XCItMjMxLjI0MVwiIHkxPVwiLTMwOS40MzVcIiB4Mj1cIi0yMzEuMjk5XCIgeTI9XCItMzA5LjMzN1wiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDQwLjEzNywgMCwgMCwgLTgxLjE0MywgOTI4Ni45OTgsIC0yNTA3OC41ODkpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjOGIyMTE0XCIvPjxzdG9wIG9mZnNldD1cIjAuNDNcIiBzdG9wLWNvbG9yPVwiIzllMTAwYVwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5XCIgc3RvcC1jb2xvcj1cIiNiMzEwMGNcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjYjMxMDBjXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwicFwiIHgxPVwiLTIzNS44OThcIiB5MT1cIi0zMTcuNDY2XCIgeDI9XCItMjM1LjgzMVwiIHkyPVwiLTMxNy41MzdcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg3OC4wOTksIDAsIDAsIC0zMi42MjQsIDE4NDQ3LjM2MSwgLTEwMzUzLjU1MylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNiMzEwMDBcIi8+PHN0b3Agb2Zmc2V0PVwiMC40NFwiIHN0b3AtY29sb3I9XCIjOTEwZjA4XCIvPjxzdG9wIG9mZnNldD1cIjAuOTlcIiBzdG9wLWNvbG9yPVwiIzc5MWMxMlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM3OTFjMTJcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9ydWJ5PC90aXRsZT48cGF0aCBkPVwiTTIzLjY5MywyMC40NjksNy43MDcsMjkuOTYxbDIwLjctMS40TDMwLDcuNjg1WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMjguNDQsMjguNTQyLDI2LjY2MSwxNi4yNjNsLTQuODQ2LDYuNFpcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTI4LjQ2NCwyOC41NDIsMTUuNDMsMjcuNTE5LDcuNzc2LDI5LjkzNFpcIiBzdHlsZT1cImZpbGw6dXJsKCNjKVwiLz48cGF0aCBkPVwiTTcuNzk0LDI5LjkzNywxMS4wNSwxOS4yNywzLjg4NSwyMC44WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2QpXCIvPjxwYXRoIGQ9XCJNMjEuODEzLDIyLjdsLTMtMTEuNzM1TDEwLjI0MywxOVpcIiBzdHlsZT1cImZpbGw6dXJsKCNlKVwiLz48cGF0aCBkPVwiTTI5LjMyLDExLjEyN2wtOC4xLTYuNjE5LTIuMjU3LDcuM1pcIiBzdHlsZT1cImZpbGw6dXJsKCNmKVwiLz48cGF0aCBkPVwiTTI1LjUzLDIuMTQ4LDIwLjc2Myw0Ljc4MmwtMy4wMDctMi42N1pcIiBzdHlsZT1cImZpbGw6dXJsKCNnKVwiLz48cGF0aCBkPVwiTTIsMjQuMzhsMi0zLjY0MkwyLjM4MiwxNi40WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2gpXCIvPjxwYXRoIGQ9XCJNMi4yNzQsMTYuMjYzLDMuOSwyMC44NzNsNy4wNjItMS41ODRMMTkuMDI0LDExLjgsMjEuMyw0LjU2OWwtMy41ODMtMi41My02LjA5MSwyLjI4QzkuNzA2LDYuMSw1Ljk4Miw5LjYzNSw1Ljg0OCw5LjdzLTIuNDU5LDQuNDY0LTMuNTc0LDYuNTYyWlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNNy45ODEsNy45ODFDMTIuMTQsMy44NTgsMTcuNSwxLjQyMSwxOS41NTksMy41cy0uMTI0LDcuMTIxLTQuMjgzLDExLjI0NFM1LjgyMSwyMS40MzQsMy43NjUsMTkuMzU4LDMuODIyLDEyLjEsNy45ODEsNy45ODFaXCIgc3R5bGU9XCJmaWxsOnVybCgjaSlcIi8+PHBhdGggZD1cIk03Ljc5NCwyOS45MzNsMy4yMzEtMTAuNywxMC43MjksMy40NDdjLTMuODc5LDMuNjM4LTguMTk0LDYuNzEzLTEzLjk2LDcuMjU0WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2opXCIvPjxwYXRoIGQ9XCJNMTkuMDM4LDExLjc3NGwyLjc1NCwxMC45MWMzLjI0LTMuNDA3LDYuMTQ5LTcuMDcsNy41NzMtMTEuNmwtMTAuMzI4LjY5MVpcIiBzdHlsZT1cImZpbGw6dXJsKCNrKVwiLz48cGF0aCBkPVwiTTI5LjMzNywxMS4xMzljMS4xLTMuMzI3LDEuMzU3LTguMS0zLjg0MS04Ljk4NUwyMS4yMzEsNC41MDlsOC4xMDYsNi42MjlaXCIgc3R5bGU9XCJmaWxsOnVybCgjbClcIi8+PHBhdGggZD1cIk0yLDI0LjMzMmMuMTUzLDUuNDksNC4xMTQsNS41NzIsNS44LDUuNjJsLTMuOS05LjFMMiwyNC4zMzJaXCIgc3R5bGU9XCJmaWxsOiM5ZTEyMDlcIi8+PHBhdGggZD1cIk0xOS4wNTMsMTEuNzkxYzIuNDksMS41MzEsNy41MDksNC42LDcuNjEsNC42NjFhMTcuNTUyLDE3LjU1MiwwLDAsMCwyLjYxOS01LjM0M2wtMTAuMjI5LjY4M1pcIiBzdHlsZT1cImZpbGw6dXJsKCNtKVwiLz48cGF0aCBkPVwiTTExLjAyMSwxOS4yMzJsNC4zMTksOC4zMzJhMjcuOTI0LDI3LjkyNCwwLDAsMCw2LjM4NS00Ljg4bC0xMC43LTMuNDUyWlwiIHN0eWxlPVwiZmlsbDp1cmwoI24pXCIvPjxwYXRoIGQ9XCJNMy44ODcsMjAuODYxbC0uNjEyLDcuMjg3YzEuMTU1LDEuNTc3LDIuNzQzLDEuNzE0LDQuNDA5LDEuNTkxLTEuMjA1LTMtMy42MTQtOS0zLjgtOC44NzhaXCIgc3R5bGU9XCJmaWxsOnVybCgjbylcIi8+PHBhdGggZD1cIk0yMS4yMDYsNC41MjhsOC41OCwxLjJjLS40NTgtMS45NC0xLjg2NC0zLjE5Mi00LjI2MS0zLjU4NGwtNC4zMTksMi4zOFpcIiBzdHlsZT1cImZpbGw6dXJsKCNwKVwiLz5gLFxuICBcIlJ1c3RcIjogYDxkZWZzPjxyYWRpYWxHcmFkaWVudCBpZD1cImFcIiBjeD1cIi00OTIuMDM1XCIgY3k9XCItODgzLjM3XCIgcj1cIjEzLjk5OFwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDAuODY2LCAtMC41LCAtMC4zLCAtMC41MiwgMTc3LjEwNiwgLTY4OS4wMzMpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjN2Q3ZDdkXCIvPjxzdG9wIG9mZnNldD1cIjAuMjY3XCIgc3RvcC1jb2xvcj1cIiM3ZTdjN2FcIi8+PHN0b3Agb2Zmc2V0PVwiMC40NVwiIHN0b3AtY29sb3I9XCIjODE3ODcxXCIvPjxzdG9wIG9mZnNldD1cIjAuNjA4XCIgc3RvcC1jb2xvcj1cIiM4NjcxNjJcIi8+PHN0b3Agb2Zmc2V0PVwiMC43NTNcIiBzdG9wLWNvbG9yPVwiIzhkNjg0Y1wiLz48c3RvcCBvZmZzZXQ9XCIwLjg4NlwiIHN0b3AtY29sb3I9XCIjOTY1YzMwXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2EwNGYxMlwiLz48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3J1c3Q8L3RpdGxlPjxwYXRoIGQ9XCJNMTUuMTI0LDUuM2EuODMyLjgzMiwwLDEsMSwuODMyLjgzMmgwYS44MzEuODMxLDAsMCwxLS44MzItLjgzMk01LjIsMTIuODM0YS44MzIuODMyLDAsMSwxLC44MzIuODMyaDBhLjgzMi44MzIsMCwwLDEtLjgzMi0uODMybTE5Ljg1Ni4wMzlhLjgzMi44MzIsMCwxLDEsLjgzMi44MzIuODMxLjgzMSwwLDAsMS0uODMyLS44MzJoME03LjYwNSwxNC4wMTNhLjc2Ljc2LDAsMCwwLC4zODYtMWwtLjM2OS0uODM1SDkuMDc0djYuNTQ1SDYuMTQ0YTEwLjI0NywxMC4yNDcsMCwwLDEtLjMzMi0zLjkxMVptNi4wNzQuMTYxVjEyLjI0NWgzLjQ1OGMuMTc5LDAsMS4yNjEuMjA2LDEuMjYxLDEuMDE2LDAsLjY3Mi0uODMuOTEzLTEuNTEzLjkxM1pNOC45NTgsMjQuNTYxYS44MzIuODMyLDAsMSwxLC44MzIuODMyLjgzMS44MzEsMCwwLDEtLjgzMi0uODMyaDBtMTIuMzMxLjAzOWEuODMyLjgzMiwwLDEsMSwuODMyLjgzMi44MzIuODMyLDAsMCwxLS44MzItLjgzMmgwbS4yNTctMS44ODdhLjc1OC43NTgsMCwwLDAtLjkuNTg0bC0uNDE4LDEuOTQ5YTEwLjI0OSwxMC4yNDksMCwwLDEtOC41NDUtLjA0MWwtLjQxNy0xLjk0OWEuNzU5Ljc1OSwwLDAsMC0uOS0uNTgzaDBsLTEuNzIxLjM3YTEwLjIzMywxMC4yMzMsMCwwLDEtLjg5LTEuMDQ5aDguMzc0Yy4wOTUsMCwuMTU4LS4wMTcuMTU4LS4xVjE4LjkyOGMwLS4wODYtLjA2My0uMS0uMTU4LS4xaC0yLjQ1VjE2Ljk0N2gyLjY0OWExLjY2NSwxLjY2NSwwLDAsMSwxLjYyOSwxLjQxMmMuMTA1LjQxMy4zMzYsMS43NTcuNDk0LDIuMTg3LjE1Ny40ODMuOCwxLjQ0NywxLjQ4MiwxLjQ0N2g0LjMyM2ExMC4yNDMsMTAuMjQzLDAsMCwxLS45NDksMS4xWm00LjY1LTcuODIxYTEwLjI2MSwxMC4yNjEsMCwwLDEsLjAyMiwxLjc3OUgyNS4xNjdjLS4xMDUsMC0uMTQ4LjA2OS0uMTQ4LjE3MnYuNDgzYzAsMS4xMzYtLjY0MSwxLjM4NC0xLjIsMS40NDctLjUzNS4wNi0xLjEyOC0uMjI0LTEuMi0uNTUxYTMuNjE2LDMuNjE2LDAsMCwwLTEuNjcxLTIuODA4YzEuMDMtLjY1NCwyLjEtMS42MTksMi4xLTIuOTExQTMuMjkyLDMuMjkyLDAsMCwwLDIxLjQ0LDkuOGE0LjU1OSw0LjU1OSwwLDAsMC0yLjItLjcyNEg4LjM2N0ExMC4yNDYsMTAuMjQ2LDAsMCwxLDE0LjEsNS44NGwxLjI4MiwxLjM0NGEuNzU4Ljc1OCwwLDAsMCwxLjA3Mi4wMjZoMGwxLjQzNC0xLjM3MmExMC4yNDgsMTAuMjQ4LDAsMCwxLDcuMDE1LDVsLS45ODIsMi4yMTdhLjc2MS43NjEsMCwwLDAsLjM4NiwxWm0yLjQ0OC4wMzYtLjAzMy0uMzQzLDEuMDExLS45NDNhLjQyLjQyLDAsMCwwLS4wMTMtLjU5NS40MjguNDI4LDAsMCwwLS4xMjEtLjA4MUwyOC4yLDEyLjQ4M2wtLjEtLjMzNC44MDYtMS4xMmEuNDIyLjQyMiwwLDAsMC0uMTMtLjU4MS40My40MywwLDAsMC0uMTMzLS4wNTVsLTEuMzYzLS4yMjItLjE2NC0uMzA2LjU3My0xLjI1N2EuNDE5LjQxOSwwLDAsMC0uMjM2LS41NDQuNDI2LjQyNiwwLDAsMC0uMTQ2LS4wMjlsLTEuMzgzLjA0OEwyNS43LDcuODE5bC4zMTgtMS4zNDdhLjQyMS40MjEsMCwwLDAtLjM0My0uNDg3LjQzNS40MzUsMCwwLDAtLjE0NCwwTDI0LjE4Myw2LjNsLS4yNjYtLjIxOUwyMy45NjYsNC43YS40MjEuNDIxLDAsMCwwLS40MzEtLjQxMS40MjYuNDI2LDAsMCwwLS4xNDEuMDI4bC0xLjI1Ny41NzMtLjMwNi0uMTY0LS4yMjItMS4zNjNhLjQyMS40MjEsMCwwLDAtLjUtLjMxOC40My40MywwLDAsMC0uMTMzLjA1NWwtMS4xMjEuODA2LS4zMzMtLjEtLjQ4My0xLjI5M2EuNDIxLjQyMSwwLDAsMC0uNTU1LS4yMTUuNDQyLjQ0MiwwLDAsMC0uMTIuMDhMMTcuNDE4LDMuMzlsLS4zNDMtLjAzM0wxNi4zNDcsMi4xOGEuNDIxLjQyMSwwLDAsMC0uNjg4LDBsLS43MjgsMS4xNzctLjM0My4wMzMtLjk0My0xLjAxMmEuNDIxLjQyMSwwLDAsMC0uNTk1LjAxNS40NDIuNDQyLDAsMCwwLS4wOC4xMkwxMi40ODMsMy44bC0uMzMzLjEtMS4xMi0uOGEuNDIyLjQyMiwwLDAsMC0uNTgxLjEzLjQzLjQzLDAsMCwwLS4wNTUuMTMzbC0uMjIyLDEuMzYzLS4zMDYuMTY0TDguNjA4LDQuMzE3YS40MjEuNDIxLDAsMCwwLS41NDQuMjM5LjQ0NC40NDQsMCwwLDAtLjAyOC4xNDRsLjA0OCwxLjM4M0w3LjgxOCw2LjMsNi40NzEsNS45ODRhLjQyMS40MjEsMCwwLDAtLjQ4Ny4zNDMuNDM1LjQzNSwwLDAsMCwwLC4xNDRMNi4zLDcuODE5bC0uMjE4LjI2NUw0LjcsOC4wMzZhLjQyMi40MjIsMCwwLDAtLjM4My41NzNMNC44OSw5Ljg2NmwtLjE2NC4zMDYtMS4zNjMuMjIyYS40Mi40MiwwLDAsMC0uMzE4LjUuNDMuNDMsMCwwLDAsLjA1NS4xMzNsLjgwNiwxLjEyLS4xLjMzNC0xLjI5My40ODNhLjQyMS40MjEsMCwwLDAtLjIxNS41NTUuNDE0LjQxNCwwLDAsMCwuMDgxLjEyMWwxLjAxMS45NDMtLjAzMy4zNDMtMS4xNzcuNzI4YS40MjEuNDIxLDAsMCwwLDAsLjY4OGwxLjE3Ny43MjguMDMzLjM0My0xLjAxMS45NDNhLjQyMS40MjEsMCwwLDAsLjAxNS41OTUuNDM2LjQzNiwwLDAsMCwuMTE5LjA4bDEuMjkzLjQ4My4xLjMzNEwzLjEsMjAuOTcyYS40MjEuNDIxLDAsMCwwLC4xMzEuNTgxLjQzLjQzLDAsMCwwLC4xMzMuMDU1bDEuMzYzLjIyMi4xNjQuMzA3LS41NzMsMS4yNTdhLjQyMi40MjIsMCwwLDAsLjI0LjU0NS40MzguNDM4LDAsMCwwLC4xNDMuMDI4bDEuMzgzLS4wNDguMjE5LjI2Ni0uMzE3LDEuMzQ4YS40Mi40MiwwLDAsMCwuMzQxLjQ4Ni40LjQsMCwwLDAsLjE0NiwwTDcuODE4LDI1LjdsLjI2Ni4yMThMOC4wMzUsMjcuM2EuNDE5LjQxOSwwLDAsMCwuNDI5LjQxLjQxMy40MTMsMCwwLDAsLjE0My0uMDI4bDEuMjU3LS41NzMuMzA2LjE2NC4yMjIsMS4zNjJhLjQyMS40MjEsMCwwLDAsLjUuMzE5LjQwNy40MDcsMCwwLDAsLjEzMy0uMDU1bDEuMTItLjgwNy4zMzQuMS40ODMsMS4yOTJhLjQyMi40MjIsMCwwLDAsLjU1Ni4yMTQuNDM2LjQzNiwwLDAsMCwuMTE5LS4wOGwuOTQzLTEuMDExLjM0My4wMzQuNzI4LDEuMTc3YS40MjIuNDIyLDAsMCwwLC41ODguMS40MTMuNDEzLDAsMCwwLC4xLS4xbC43MjgtMS4xNzcuMzQzLS4wMzQuOTQzLDEuMDExYS40MjEuNDIxLDAsMCwwLC41OTUtLjAxNS40MzYuNDM2LDAsMCwwLC4wOC0uMTE5bC40ODMtMS4yOTIuMzM0LS4xLDEuMTIuODA3YS40MjEuNDIxLDAsMCwwLC41ODEtLjEzMS40My40MywwLDAsMCwuMDU1LS4xMzNsLjIyMi0xLjM2Mi4zMDYtLjE2NCwxLjI1Ny41NzNhLjQyMS40MjEsMCwwLDAsLjU0NC0uMjM5LjQzOC40MzgsMCwwLDAsLjAyOC0uMTQzbC0uMDQ4LTEuMzg0LjI2NS0uMjE4LDEuMzQ3LjMxN2EuNDIxLjQyMSwwLDAsMCwuNDg3LS4zNC40NDcuNDQ3LDAsMCwwLDAtLjE0NkwyNS43LDI0LjE4M2wuMjE4LS4yNjYsMS4zODMuMDQ4YS40MjEuNDIxLDAsMCwwLC40MS0uNDMxLjQuNCwwLDAsMC0uMDI4LS4xNDJsLS41NzMtMS4yNTcuMTY0LS4zMDcsMS4zNjMtLjIyMmEuNDIxLjQyMSwwLDAsMCwuMzE5LS41LjQzNC40MzQsMCwwLDAtLjA1Ni0uMTM1bC0uODA2LTEuMTIuMS0uMzM0LDEuMjkzLS40ODNhLjQyLjQyLDAsMCwwLC4yMTUtLjU1NC40MTQuNDE0LDAsMCwwLS4wODEtLjEyMWwtMS4wMTEtLjk0My4wMzMtLjM0MywxLjE3Ny0uNzI4YS40MjEuNDIxLDAsMCwwLDAtLjY4OFpcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz5gLFxuICBcIlNBU1wiOiBgPHBhdGggZD1cIk0xNi4wMTgsMzBBMTQsMTQsMCwxLDEsMzAsMTYuMiwxNCwxNCwwLDAsMSwxNi4wMTgsMzBaXCIgc3R5bGU9XCJmaWxsOiMwMDJiYjVcIi8+PHBhdGggZD1cIk05LjE3LDIyLjYzYy4wMjYuMDYxLjA0Ni4xMjQuMDc3LjE4MywyLjIxNSw0LjIwNiw3LjczOCw0LjYxNiwxMC43NTYsMi40NTRhNi4wMTcsNi4wMTcsMCwwLDAsMS43MzEtOC41ODMsMTUuNywxNS43LDAsMCwwLTEuMzE4LTEuNzMxYy0uODgxLTEuMDY3LTEuNzU1LTIuMTQtMi42MzYtMy4yMDctLjM2Ni0uNDQzLS43NjctLjgzNS0xLjQxNi0uNjgzYTEuMzkzLDEuMzkzLDAsMCwwLS44MTYsMi4zMTFjLjg4OCwxLjEwNiwxLjgxOSwyLjE3NywyLjcsMy4yODZhMy44NzQsMy44NzQsMCwwLDEsLjU4OSw0LjQsNS40MjMsNS40MjMsMCwwLDEtNSwzLjEzNEE2LjYsNi42LDAsMCwxLDkuMTcsMjIuNjNaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0yMi40OTQsOS42MDljLjA4LS4yNDgtLjA2Ni0uMzctLjE0MS0uNTA5QTcuNDc3LDcuNDc3LDAsMCwwLDEyLjYsNi4yMzdjLTMuMywxLjYzLTUuMSw1LjM1Mi0yLjYzNyw5LjE0N2E1Ni41Myw1Ni41MywwLDAsMCw0LjEzNSw1LjEyLDEuMDEyLDEuMDEyLDAsMCwwLC43MDkuMzQ1LDEuMzg0LDEuMzg0LDAsMCwwLDEuNDI4LS43NjUsMS4yNDcsMS4yNDcsMCwwLDAtLjE3My0xLjUwN2MtLjg3Ni0xLjA1MS0xLjc2OS0yLjA4OC0yLjYxNS0zLjE2MmE0LjEzLDQuMTMsMCwwLDEsLjMyMy01Ljc3MUE2LjA1NCw2LjA1NCwwLDAsMSwxOS45ODQsOC4xMyw1LjE5LDUuMTksMCwwLDEsMjIuNDk0LDkuNjA5WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG4gIFwiU2FzcyAoU2FzcylcIjogYDxwYXRoIGQ9XCJNMjYuMTEsMTcuNTcyYTUuOCw1LjgsMCwwLDAtMi41MzcuNTg4LDUuMzQ1LDUuMzQ1LDAsMCwxLS41NjgtMS4zMTQsMy41MywzLjUzLDAsMCwxLS4wNTEtMS4xLDkuODExLDkuODExLDAsMCwxLC4zMzItMS4xOTJjLS4wMDUtLjA1MS0uMDYxLS4yOTItLjYyNC0uM3MtMS4wNDguMTA3LTEuMS4yNTZhNi4xNzEsNi4xNzEsMCwwLDAtLjIzNS44MzQsMTkuNjg2LDE5LjY4NiwwLDAsMS0xLjcxMywzLjI5NCwzLjE4NiwzLjE4NiwwLDAsMS0uNDQtMi4wNjYsOS44MTEsOS44MTEsMCwwLDEsLjMzMi0xLjE5MmMtLjAwNS0uMDUxLS4wNjEtLjI5Mi0uNjI0LS4zcy0xLjA0OC4xMDctMS4xLjI1Ni0uMTE4LjUtLjIzNS44MzQtMS40ODMsMy4zODYtMS44NDEsNC4xNzNjLS4xODQuNC0uMzQzLjcyNi0uNDU1Ljk0NmgwYS4yMzMuMjMzLDAsMCwxLS4wMi4wNDFjLS4xLjE4OS0uMTUzLjI5Mi0uMTUzLjI5MnYuMDA1Yy0uMDc3LjEzOC0uMTU5LjI2Ni0uMi4yNjZhMS43MTEsMS43MTEsMCwwLDEsLjAxLS44NjljLjItMS4wNTkuNjktMi43MDUuNjg1LTIuNzYyLDAtLjAzMS4wOTItLjMxNy0uMzE3LS40NjVhLjUwOC41MDgsMCwwLDAtLjU3OC4xYy0uMDM2LDAtLjA2MS4wODctLjA2MS4wODdzLjQ0NS0xLjg1MS0uODQ5LTEuODUxYTMuODU1LDMuODU1LDAsMCwwLTIuNDc1LDEuNjgzYy0uMzQ4LjE4OS0xLjA4OS41OTMtMS44ODIsMS4wMjgtLjMuMTY5LS42MTQuMzM4LS45MDUuNS0uMDItLjAyLS4wNDEtLjA0Ni0uMDYxLS4wNjZDNi44NywxNy42LDMuOTc1LDE2LjQxNiw0LjEsMTQuMTcxYy4wNDYtLjgxOC4zMjctMi45NjYsNS41NTktNS41NzUsNC4zMDYtMi4xMjIsNy43MzMtMS41MzQsOC4zMjYtLjIzLjg0OSwxLjg2Mi0xLjgzNiw1LjMxOS02LjI4NSw1LjgyYTMuMzUxLDMuMzUxLDAsMCwxLTIuODEzLS43MTFjLS4yMzUtLjI1Ni0uMjcxLS4yNzEtLjM1OC0uMjItLjE0My4wNzctLjA1MS4zMDcsMCwuNDRhMi42MjYsMi42MjYsMCwwLDAsMS42MDYsMS4yNjMsOC41NSw4LjU1LDAsMCwwLDUuMjE3LS41MTdjMi43LTEuMDQzLDQuOC0zLjk0Myw0LjE4NC02LjM3Mi0uNjE5LTIuNDY1LTQuNzEtMy4yNzgtOC41ODItMS45QTE5LjUsMTkuNSwwLDAsMCw0LjM1OSw5Ljk1MmMtMi4xMzMsMS45OTUtMi40NywzLjcyOC0yLjMzMiw0LjQ1NS41LDIuNTc4LDQuMDUxLDQuMjU1LDUuNDcyLDUuNS0uMDcyLjA0MS0uMTM4LjA3Ny0uMTk0LjEwNy0uNzExLjM1My0zLjQyMSwxLjc3LTQuMSwzLjI2OC0uNzY3LDEuNy4xMjMsMi45MTUuNzExLDMuMDc5YTQuMzc0LDQuMzc0LDAsMCwwLDQuNzEtMS45MDhBNC43MjUsNC43MjUsMCwwLDAsOS4wNDksMjAuMWEuMTA3LjEwNywwLDAsMC0uMDItLjAzMWwuNTU3LS4zMjdjLjM2My0uMjE1LjcyMS0uNDE0LDEuMDI4LS41NzhhNi43NCw2Ljc0LDAsMCwwLS4zNjMsMS44NjIsMy44ODYsMy44ODYsMCwwLDAsLjgzNCwyLjcuOTIxLjkyMSwwLDAsMCwuNjc1LjIyYy42LDAsLjg3NS0uNSwxLjE3Ni0xLjA5NC4zNjgtLjcyNi43LTEuNTcuNy0xLjU3cy0uNDE0LDIuMjgxLjcxMSwyLjI4MWMuNDA5LDAsLjgyMy0uNTMyLDEuMDA4LS44di4wMDVzLjAxLS4wMTUuMDMxLS4wNTFsLjA2Ni0uMTA3di0uMDFjLjE2NC0uMjg2LjUzMi0uOTM2LDEuMDc5LTIuMDE1LjcwNi0xLjM5MSwxLjM4Ni0zLjEzLDEuMzg2LTMuMTNhOC44ODgsOC44ODgsMCwwLDAsLjI3MSwxLjEzLDEwLjY0MywxMC42NDMsMCwwLDAsLjU4MywxLjMwOWMtLjE2NC4yMy0uMjY2LjM1OC0uMjY2LjM1OGwuMDA1LjAwNWMtLjEzMy4xNzQtLjI3Ni4zNjMtLjQzNS41NDdhMTYuMywxNi4zLDAsMCwwLTEuMzE0LDEuNjQ3LjQ0Ny40NDcsMCwwLDAsLjEyMy42LDEuMTE2LDEuMTE2LDAsMCwwLC42ODUuMTEzLDMuMTQ3LDMuMTQ3LDAsMCwwLDEuMDI4LS4yMzUsMy40NSwzLjQ1LDAsMCwwLC44ODUtLjQ2NSwxLjk4LDEuOTgsMCwwLDAsLjg0OS0xLjc0NCwzLjUyMSwzLjUyMSwwLDAsMC0uMzIyLTEuMjMzYy4wNTEtLjA3Mi4xLS4xNDMuMTQ4LS4yMTVhMjMuNDI4LDIzLjQyOCwwLDAsMCwxLjUzNC0yLjY0OSw4Ljg4OCw4Ljg4OCwwLDAsMCwuMjcxLDEuMTMsNy41Nyw3LjU3LDAsMCwwLC41LDEuMTI1QTQuODYxLDQuODYxLDAsMCwwLDIwLjk2NSwyMC44Yy0uMzIyLjkzMS0uMDcyLDEuMzUuNCwxLjQ0N2ExLjQyNSwxLjQyNSwwLDAsMCwuNzQ3LS4xNTMsMy40LDMuNCwwLDAsMCwuOTQ2LS40ODYsMi4xMjYsMi4xMjYsMCwwLDAsMS4wNDMtMS43MjksMy4yNjgsMy4yNjgsMCwwLDAtLjIzNS0xLjAyMyw1LjM1Niw1LjM1NiwwLDAsMSwyLjcxNi0uMzEyYzIuNDM0LjI4NiwyLjkxNSwxLjgwNSwyLjgyMywyLjQ0NWExLjYxOCwxLjYxOCwwLDAsMS0uNzcyLDEuMDk0Yy0uMTY5LjEwNy0uMjI1LjE0My0uMjEuMjIuMDIuMTEzLjEuMTA3LjI0NS4wODdBMS45LDEuOSwwLDAsMCwzMCwyMC43Yy4wNzctMS41LTEuMzU1LTMuMTQ1LTMuODg3LTMuMTNaTTcuMzMsMjMuOWMtLjgwOC44OC0xLjkzMywxLjIxMi0yLjQxOS45MzEtLjUyMi0uMy0uMzE3LTEuNi42NzUtMi41MzJhMTIuODg0LDEyLjg4NCwwLDAsMSwxLjktMS40MTdjLjExOC0uMDcyLjI5Mi0uMTc0LjUtLjNsLjA1Ni0uMDMxaDBsLjEyMy0uMDc3QTMuNDkzLDMuNDkzLDAsMCwxLDcuMzMsMjMuOVptNS44ODEtNGMtLjI4MS42ODUtLjg2OSwyLjQ0LTEuMjI3LDIuMzQyLS4zMDctLjA4Mi0uNS0xLjQxMi0uMDYxLTIuNzI2YTYuMTkzLDYuMTkzLDAsMCwxLC45NTYtMS43NTRjLjQ0LS40OTEuOTI2LS42NTUsMS4wNDMtLjQ1NWE5LjA2Miw5LjA2MiwwLDAsMS0uNzExLDIuNTkzWm00Ljg1MywyLjMyMmMtLjExOC4wNjEtLjIzLjEtLjI4MS4wNzItLjAzNi0uMDIuMDUxLS4xLjA1MS0uMXMuNjA5LS42NTUuODQ5LS45NTFjLjEzOC0uMTc0LjMtLjM3OC40NzYtLjYwOVYyMC43YzAsLjc4Mi0uNzU3LDEuMzA5LTEuMDk0LDEuNTI0Wm0zLjc0NC0uODU0Yy0uMDg3LS4wNjEtLjA3Mi0uMjY2LjIyLS45MDVhMy40MDgsMy40MDgsMCwwLDEsLjgzNC0xLjA3NCwxLjQ0OCwxLjQ0OCwwLDAsMSwuMDgyLjQ3MSwxLjU0NywxLjU0NywwLDAsMS0xLjEzNSwxLjUwOVpcIiBzdHlsZT1cImZpbGw6I2NkNjc5OVwiLz5gLFxuICBcIlNhc3MgKFNDU1MpXCI6IGA8cGF0aCBkPVwiTTE2LjE3MSwxOC43Yy0uNDgxLjIyMS0xLjAwOC41MDktMi4wNjMsMS4wODgtLjQuMjI1LS44MTguNDUtMS4yMDcuNjYyLS4wMjctLjAyNy0uMDU1LS4wNjEtLjA4Mi0uMDg5LTIuMDg3LTIuMjMtNS45NDctMy44MDUtNS43ODMtNi44LjA2MS0xLjA5MS40MzYtMy45NTUsNy40MTMtNy40MzMsNS43NDItMi44MywxMC4zMTEtMi4wNDYsMTEuMS0uMzA3QzI2LjY4Myw4LjMsMjMuMSwxMi45MTMsMTcuMTcsMTMuNTgyYTQuNDY5LDQuNDY5LDAsMCwxLTMuNzUxLS45NDhjLS4zMTQtLjM0MS0uMzYxLS4zNjEtLjQ3Ny0uMjkzLS4xOTEuMS0uMDY4LjQwOSwwLC41ODZhMy41LDMuNSwwLDAsMCwyLjE0MSwxLjY4NCwxMS40LDExLjQsMCwwLDAsNi45NTYtLjY4OWMzLjU5NC0xLjM5MSw2LjQtNS4yNTgsNS41NzgtOC41LS44MjUtMy4yODctNi4yODEtNC4zNzEtMTEuNDQzLTIuNTM3YTI2LDI2LDAsMCwwLTguNzksNS4wNDdjLTIuODQ0LDIuNjYtMy4yOTQsNC45NzItMy4xMSw1Ljk0LjY2MiwzLjQzNyw1LjQsNS42NzQsNy4zLDcuMzMxLS4xLjA1NS0uMTg0LjEtLjI1OS4xNDMtLjk0OC40NzEtNC41NjIsMi4zNi01LjQ2Myw0LjM1OC0xLjAyMywyLjI2NC4xNjQsMy44ODcuOTQ4LDQuMTA1YTUuODMyLDUuODMyLDAsMCwwLDYuMjgxLTIuNTQ0LDYuMyw2LjMsMCwwLDAsLjU1OS01LjgsNS4wMyw1LjAzLDAsMCwxLC43MTYtLjQ3N2MuNDg0LS4yODYuOTQ1LS41NjgsMS4zNTQtLjc4NmwwLDBhMTAuNDc1LDEwLjQ3NSwwLDAsMSw0LjQ3NS0uOTg5YzMuMjQ2LjM4MiwzLjg4NywyLjQwNywzLjc2NCwzLjI2YTIuMTU3LDIuMTU3LDAsMCwxLTEuMDMsMS40NTljLS4yMjUuMTQzLS4zLjE5MS0uMjguMjkzLjAyNy4xNS4xMzYuMTQzLjMyNy4xMTZhMi41MzUsMi41MzUsMCwwLDAsMS43NjYtMi4yNTdjLjEtMi0xLjgwNy00LjE5NC01LjE4My00LjE3NGE3Ljc1Myw3Ljc1MywwLDAsMC0yLjk0Ni41ODdxLS4yMjUuMDkzLS40MzcuMlptLTQuODI1LDcuODM5Yy0xLjA3OCwxLjE3My0yLjU3OCwxLjYxNi0zLjIyNiwxLjI0MS0uNy0uNC0uNDIzLTIuMTM1LjktMy4zNzZhMTcuMTgsMTcuMTgsMCwwLDEsMi41My0xLjg4OWMuMTU3LS4xLjM4OS0uMjMyLjY2OC0uNC4wNDgtLjAyNy4wNzUtLjA0MS4wNzUtLjA0MWwuMTY0LS4xQTQuNjU4LDQuNjU4LDAsMCwxLDExLjM0NiwyNi41MzlaXCIgc3R5bGU9XCJmaWxsOiNjZDY3OTlcIi8+YCxcbiAgXCJTY2FsYVwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiLTEzNC45MDdcIiB5MT1cIjIwNC41NzJcIiB4Mj1cIi0xMzQuODk2XCIgeTI9XCIyMDQuNTcyXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMTUzOCwgMCwgMCwgLTk2MS4yNSwgMjA3NDk1LCAxOTY2NjEpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZTYyZDJhXCIvPjxzdG9wIG9mZnNldD1cIjAuNlwiIHN0b3AtY29sb3I9XCIjZGYzZjNkXCIvPjxzdG9wIG9mZnNldD1cIjAuOFwiIHN0b3AtY29sb3I9XCIjZGYzZjNkXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2U2MmQyYVwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIi0xMzQuOTA3XCIgeTE9XCIyMDMuNzgxXCIgeDI9XCItMTM0Ljg5NlwiIHkyPVwiMjAzLjc4MVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDE1MzgsIDAsIDAsIC05NjEuMjUsIDIwNzQ5NSwgMTk1ODkyKVwiIHhsaW5rOmhyZWY9XCIjYVwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJjXCIgeDE9XCItMTM0LjkwN1wiIHkxPVwiMjA1LjM2M1wiIHgyPVwiLTEzNC44OTZcIiB5Mj1cIjIwNS4zNjNcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxNTM4LCAwLCAwLCAtOTYxLjI1LCAyMDc0OTUsIDE5NzQzMClcIiB4bGluazpocmVmPVwiI2FcIi8+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfc2NhbGE8L3RpdGxlPjxwYXRoIGQ9XCJNNy4zODQsMTkuMjMxdjIuMTU0YzAsLjM2Myw3LjgzMy45NzEsMTIuOTM3LDIuMTU0LDIuNDY1LS41NzEsNC4yOTUtMS4yNzcsNC4yOTUtMi4xNTRWMTkuMjMxYzAtLjg3Ny0xLjgzLTEuNTgyLTQuMjk1LTIuMTU0LTUuMSwxLjE4My0xMi45MzcsMS43OTEtMTIuOTM3LDIuMTU0XCIgc3R5bGU9XCJmaWxsOiM3ZjBjMWRcIi8+PHBhdGggZD1cIk03LjM4NCwxMC42MTV2Mi4xNTRjMCwuMzYzLDcuODMzLjk3MSwxMi45MzcsMi4xNTQsMi40NjUtLjU3MSw0LjI5NS0xLjI3Nyw0LjI5NS0yLjE1NFYxMC42MTVjMC0uODc3LTEuODMtMS41ODItNC4yOTUtMi4xNTQtNS4xLDEuMTgzLTEyLjkzNywxLjc5MS0xMi45MzcsMi4xNTRcIiBzdHlsZT1cImZpbGw6IzdmMGMxZFwiLz48cGF0aCBkPVwiTTcuMzg0LDE0LjkyM3Y2LjQ2MmMwLS41MzgsMTcuMjMyLTEuNjE1LDE3LjIzMi00LjMwOFYxMC42MTVjMCwyLjY5Mi0xNy4yMzIsMy43NjktMTcuMjMyLDQuMzA4XCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk03LjM4NCw2LjMwOFYxMi43N2MwLS41MzgsMTcuMjMyLTEuNjE1LDE3LjIzMi00LjMwOFYyYzAsMi42OTItMTcuMjMyLDMuNzY5LTE3LjIzMiw0LjMwOFwiIHN0eWxlPVwiZmlsbDp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNNy4zODQsMjMuNTM4VjMwYzAtLjUzOCwxNy4yMzItMS42MTUsMTcuMjMyLTQuMzA4VjE5LjIzMWMwLDIuNjkyLTE3LjIzMiwzLjc2OS0xNy4yMzIsNC4zMDhcIiBzdHlsZT1cImZpbGw6dXJsKCNjKVwiLz5gLFxuICBcIlNoZWxsIHNlc3Npb25cIjogYDxwYXRoIGQ9XCJNMjkuNCwyNy42SDIuNVY0LjVIMjkuNFptLTI1LjktMUgyOC40VjUuNUgzLjVaXCIgc3R5bGU9XCJmaWxsOiNkOWI0MDBcIi8+PHBvbHlnb24gcG9pbnRzPVwiNi4wNzcgMTkuMzE2IDUuNTIyIDE4LjQ4NCAxMC4zNjYgMTUuMjU1IDUuNDc5IDExLjE4NCA2LjEyIDEwLjQxNiAxMi4wMzUgMTUuMzQ0IDYuMDc3IDE5LjMxNlwiIHN0eWxlPVwiZmlsbDojZDliNDAwXCIvPjxyZWN0IHg9XCIxMi43XCIgeT1cIjE4LjJcIiB3aWR0aD1cIjcuOFwiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6I2Q5YjQwMFwiLz48cmVjdCB4PVwiMi41XCIgeT1cIjUuNVwiIHdpZHRoPVwiMjYuOVwiIGhlaWdodD1cIjEuOVwiIHN0eWxlPVwiZmlsbDojZDliNDAwXCIvPmAsXG4gIFwiU2hlbGxcIjogYDxwYXRoIGQ9XCJNMjkuNCwyNy42SDIuNVY0LjVIMjkuNFptLTI1LjktMUgyOC40VjUuNUgzLjVaXCIgc3R5bGU9XCJmaWxsOiNkOWI0MDBcIi8+PHBvbHlnb24gcG9pbnRzPVwiNi4wNzcgMTkuMzE2IDUuNTIyIDE4LjQ4NCAxMC4zNjYgMTUuMjU1IDUuNDc5IDExLjE4NCA2LjEyIDEwLjQxNiAxMi4wMzUgMTUuMzQ0IDYuMDc3IDE5LjMxNlwiIHN0eWxlPVwiZmlsbDojZDliNDAwXCIvPjxyZWN0IHg9XCIxMi43XCIgeT1cIjE4LjJcIiB3aWR0aD1cIjcuOFwiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6I2Q5YjQwMFwiLz48cmVjdCB4PVwiMi41XCIgeT1cIjUuNVwiIHdpZHRoPVwiMjYuOVwiIGhlaWdodD1cIjEuOVwiIHN0eWxlPVwiZmlsbDojZDliNDAwXCIvPmAsXG4gIFwiU21hcnR5XCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCIxMy44NTlcIiB5MT1cIjI5LjIxOVwiIHgyPVwiMTguMTA2XCIgeTI9XCIyOS4yMTlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwLjAzNFwiIHN0b3AtY29sb3I9XCIjNjM2MzYxXCIvPjxzdG9wIG9mZnNldD1cIjAuMTc4XCIgc3RvcC1jb2xvcj1cIiM2YzZkNzBcIi8+PHN0b3Agb2Zmc2V0PVwiMC4yMTlcIiBzdG9wLWNvbG9yPVwiIzZmNzE3NVwiLz48c3RvcCBvZmZzZXQ9XCIwLjMwOVwiIHN0b3AtY29sb3I9XCIjNjE2MzY2XCIvPjxzdG9wIG9mZnNldD1cIjAuNDgxXCIgc3RvcC1jb2xvcj1cIiMzYzNkM2ZcIi8+PHN0b3Agb2Zmc2V0PVwiMC43MTZcIiBzdG9wLWNvbG9yPVwiIzAxMDEwMVwiLz48c3RvcCBvZmZzZXQ9XCIwLjcxOVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM2MzZhNmVcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCIxNS4xNzhcIiB5MT1cIjI5LjczNFwiIHgyPVwiMTYuNzg3XCIgeTI9XCIyOS43MzRcIiB4bGluazpocmVmPVwiI2FcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiY1wiIHgxPVwiMTUuMjc3XCIgeTE9XCIyOS44ODFcIiB4Mj1cIjE2LjY4OFwiIHkyPVwiMjkuODgxXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMC4wMzRcIiBzdG9wLWNvbG9yPVwiIzliOWI5OFwiLz48c3RvcCBvZmZzZXQ9XCIwLjEzMVwiIHN0b3AtY29sb3I9XCIjYTRhNWE3XCIvPjxzdG9wIG9mZnNldD1cIjAuMjE5XCIgc3RvcC1jb2xvcj1cIiNhZWIxYjhcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zNTJcIiBzdG9wLWNvbG9yPVwiIzlmYTRhYlwiLz48c3RvcCBvZmZzZXQ9XCIwLjYwNVwiIHN0b3AtY29sb3I9XCIjNzg4MTg4XCIvPjxzdG9wIG9mZnNldD1cIjAuNzE5XCIgc3RvcC1jb2xvcj1cIiM2NTcwNzZcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjOGI5NDlhXCIvPjwvbGluZWFyR3JhZGllbnQ+PHJhZGlhbEdyYWRpZW50IGlkPVwiZFwiIGN4PVwiLTguNDU2XCIgY3k9XCItMTYuNjE2XCIgcj1cIjE5LjM4M1wiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDM0LjA0MiAzNy4wNjMpIHNjYWxlKDEuMDU0KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjAuMDM0XCIgc3RvcC1jb2xvcj1cIiM3MDcwNmVcIi8+PHN0b3Agb2Zmc2V0PVwiMC4xMTJcIiBzdG9wLWNvbG9yPVwiIzYxNjI2MVwiLz48c3RvcCBvZmZzZXQ9XCIwLjIxOVwiIHN0b3AtY29sb3I9XCIjNDY0NzRhXCIvPjxzdG9wIG9mZnNldD1cIjAuNDA4XCIgc3RvcC1jb2xvcj1cIiM0ODQ5NGNcIi8+PHN0b3Agb2Zmc2V0PVwiMC40ODdcIiBzdG9wLWNvbG9yPVwiIzRlNTA1M1wiLz48c3RvcCBvZmZzZXQ9XCIwLjU0NFwiIHN0b3AtY29sb3I9XCIjNWE1YzVmXCIvPjxzdG9wIG9mZnNldD1cIjAuNTkyXCIgc3RvcC1jb2xvcj1cIiM2YTZlNzFcIi8+PHN0b3Agb2Zmc2V0PVwiMC42MzNcIiBzdG9wLWNvbG9yPVwiIzdmODU4OFwiLz48c3RvcCBvZmZzZXQ9XCIwLjY2N1wiIHN0b3AtY29sb3I9XCIjOTc5ZWExXCIvPjxzdG9wIG9mZnNldD1cIjAuNzE5XCIgc3RvcC1jb2xvcj1cIiMzZDQ0NDdcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjNjU2YzcwXCIvPjwvcmFkaWFsR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiZVwiIHgxPVwiMTYuMTI2XCIgeTE9XCIyOC4xMDhcIiB4Mj1cIjE2LjA1XCIgeTI9XCIyNi44OTNcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwLjAzNFwiIHN0b3AtY29sb3I9XCIjOWI5Yjk4XCIvPjxzdG9wIG9mZnNldD1cIjAuMTA5XCIgc3RvcC1jb2xvcj1cIiNhNWE2YTdcIi8+PHN0b3Agb2Zmc2V0PVwiMC4yMTlcIiBzdG9wLWNvbG9yPVwiI2JhYmNjNFwiLz48c3RvcCBvZmZzZXQ9XCIwLjMxMVwiIHN0b3AtY29sb3I9XCIjYWJhZWI1XCIvPjxzdG9wIG9mZnNldD1cIjAuNDg3XCIgc3RvcC1jb2xvcj1cIiM4NDg5OGZcIi8+PHN0b3Agb2Zmc2V0PVwiMC43MTlcIiBzdG9wLWNvbG9yPVwiIzQ4NTA1NFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM4Yjk0OWFcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJmXCIgeDE9XCIxNi4wMTNcIiB5MT1cIjI2LjU0MlwiIHgyPVwiMTUuODk1XCIgeTI9XCIyNC42MzVcIiB4bGluazpocmVmPVwiI2VcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiZ1wiIHgxPVwiMTYuMDIzXCIgeTE9XCIyNS41NDZcIiB4Mj1cIjE1Ljg4N1wiIHkyPVwiMjMuMzU1XCIgeGxpbms6aHJlZj1cIiNlXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImhcIiB4MT1cIjE2LjAxM1wiIHkxPVwiMjcuNjI3XCIgeDI9XCIxNS44OTVcIiB5Mj1cIjI1LjcyXCIgeGxpbms6aHJlZj1cIiNlXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImpcIiB4MT1cIjEzLjY4XCIgeTE9XCIyOC44MDVcIiB4Mj1cIjE4LjI4NFwiIHkyPVwiMjguODA1XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMC4wMzRcIiBzdG9wLWNvbG9yPVwiIzU0NTQ1M1wiLz48c3RvcCBvZmZzZXQ9XCIwLjA3MVwiIHN0b3AtY29sb3I9XCIjNjE2MjYyXCIvPjxzdG9wIG9mZnNldD1cIjAuMTQzXCIgc3RvcC1jb2xvcj1cIiM4NDg1ODlcIi8+PHN0b3Agb2Zmc2V0PVwiMC4yMTlcIiBzdG9wLWNvbG9yPVwiI2FlYjFiOFwiLz48c3RvcCBvZmZzZXQ9XCIwLjM1MlwiIHN0b3AtY29sb3I9XCIjOWZhNGFiXCIvPjxzdG9wIG9mZnNldD1cIjAuNjA1XCIgc3RvcC1jb2xvcj1cIiM3ODgxODhcIi8+PHN0b3Agb2Zmc2V0PVwiMC43MTlcIiBzdG9wLWNvbG9yPVwiIzY1NzA3NlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM1MDU2NTlcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJrXCIgeDE9XCIxMi4xNTlcIiB5MT1cIjI1LjgxM1wiIHgyPVwiMTkuNDc1XCIgeTI9XCIyNS44MTNcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNlNWUxZGZcIi8+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZGRkYWQ2XCIvPjxzdG9wIG9mZnNldD1cIjAuMDM4XCIgc3RvcC1jb2xvcj1cIiNjZWNjYzlcIi8+PHN0b3Agb2Zmc2V0PVwiMC4xMTJcIiBzdG9wLWNvbG9yPVwiI2E3YTlhOFwiLz48c3RvcCBvZmZzZXQ9XCIwLjIxMlwiIHN0b3AtY29sb3I9XCIjNjk3MDcyXCIvPjxzdG9wIG9mZnNldD1cIjAuMjY0XCIgc3RvcC1jb2xvcj1cIiM0NjUwNTRcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zMDNcIiBzdG9wLWNvbG9yPVwiIzYzNmM2ZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjM5OFwiIHN0b3AtY29sb3I9XCIjYTVhYWFjXCIvPjxzdG9wIG9mZnNldD1cIjAuNDc4XCIgc3RvcC1jb2xvcj1cIiNkNWQ3ZDlcIi8+PHN0b3Agb2Zmc2V0PVwiMC41MzlcIiBzdG9wLWNvbG9yPVwiI2YzZjRmNVwiLz48c3RvcCBvZmZzZXQ9XCIwLjU3M1wiIHN0b3AtY29sb3I9XCIjZmVmZWZmXCIvPjxzdG9wIG9mZnNldD1cIjAuNjJcIiBzdG9wLWNvbG9yPVwiI2Y0ZjVmNlwiLz48c3RvcCBvZmZzZXQ9XCIwLjY5OVwiIHN0b3AtY29sb3I9XCIjZGFkY2RmXCIvPjxzdG9wIG9mZnNldD1cIjAuOFwiIHN0b3AtY29sb3I9XCIjYjBiNGI5XCIvPjxzdG9wIG9mZnNldD1cIjAuODc2XCIgc3RvcC1jb2xvcj1cIiM4YjkyOThcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZDFkM2Q0XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2E3YTlhY1wiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImxcIiB4MT1cIjEyLjE1OVwiIHkxPVwiMjQuNzI4XCIgeDI9XCIxOS40NzVcIiB5Mj1cIjI0LjcyOFwiIHhsaW5rOmhyZWY9XCIja1wiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJtXCIgeDE9XCIxMi4xNTlcIiB5MT1cIjIzLjU0OFwiIHgyPVwiMTkuNDc1XCIgeTI9XCIyMy41NDhcIiB4bGluazpocmVmPVwiI2tcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiblwiIHgxPVwiMTIuMTU5XCIgeTE9XCIyNi44OThcIiB4Mj1cIjE5LjQ3NVwiIHkyPVwiMjYuODk4XCIgeGxpbms6aHJlZj1cIiNrXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cIm9cIiB4MT1cIjEyLjE1OVwiIHkxPVwiMjUuOTY3XCIgeDI9XCIxOS40NzVcIiB5Mj1cIjI1Ljk2N1wiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2U1ZTFkZlwiLz48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNkZGU4ZDBcIi8+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZDJmM2JhXCIvPjxzdG9wIG9mZnNldD1cIjAuMDM2XCIgc3RvcC1jb2xvcj1cIiNjNWU0YjFcIi8+PHN0b3Agb2Zmc2V0PVwiMC4xMDVcIiBzdG9wLWNvbG9yPVwiI2E0YmQ5OFwiLz48c3RvcCBvZmZzZXQ9XCIwLjE5OVwiIHN0b3AtY29sb3I9XCIjNmU3ZjcxXCIvPjxzdG9wIG9mZnNldD1cIjAuMjY0XCIgc3RvcC1jb2xvcj1cIiM0NjUwNTRcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zMDNcIiBzdG9wLWNvbG9yPVwiIzYzNmM2ZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjM5OFwiIHN0b3AtY29sb3I9XCIjYTVhYWFjXCIvPjxzdG9wIG9mZnNldD1cIjAuNDc4XCIgc3RvcC1jb2xvcj1cIiNkNWQ3ZDlcIi8+PHN0b3Agb2Zmc2V0PVwiMC41MzlcIiBzdG9wLWNvbG9yPVwiI2YzZjRmNVwiLz48c3RvcCBvZmZzZXQ9XCIwLjU3M1wiIHN0b3AtY29sb3I9XCIjZmVmZWZmXCIvPjxzdG9wIG9mZnNldD1cIjAuNjJcIiBzdG9wLWNvbG9yPVwiI2Y0ZjVmNlwiLz48c3RvcCBvZmZzZXQ9XCIwLjY5OVwiIHN0b3AtY29sb3I9XCIjZGFkY2RmXCIvPjxzdG9wIG9mZnNldD1cIjAuOFwiIHN0b3AtY29sb3I9XCIjYjBiNGI5XCIvPjxzdG9wIG9mZnNldD1cIjAuODc2XCIgc3RvcC1jb2xvcj1cIiM4YjkyOThcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZDFkM2Q0XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2E3YTlhY1wiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cInBcIiB4MT1cIjEyLjE1OVwiIHkxPVwiMjQuODgzXCIgeDI9XCIxOS40NzVcIiB5Mj1cIjI0Ljg4M1wiIHhsaW5rOmhyZWY9XCIjb1wiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJxXCIgeDE9XCIxMi4xNTlcIiB5MT1cIjI3LjA1XCIgeDI9XCIxOS40NzVcIiB5Mj1cIjI3LjA1XCIgeGxpbms6aHJlZj1cIiNvXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cInJcIiB4MT1cIjExLjkwMlwiIHkxPVwiMjMuMjAxXCIgeDI9XCIxOS44ODRcIiB5Mj1cIjIzLjIwMVwiIHhsaW5rOmhyZWY9XCIjZVwiLz48cmFkaWFsR3JhZGllbnQgaWQ9XCJzXCIgY3g9XCItMTYuOTgzXCIgY3k9XCItMjIuOTQ4XCIgcj1cIjEwLjcxOFwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDM0LjA0MiAzNy4wNjMpIHNjYWxlKDEuMDU0KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZmZkMVwiLz48c3RvcCBvZmZzZXQ9XCIwLjUwNVwiIHN0b3AtY29sb3I9XCIjZmYwXCIvPjxzdG9wIG9mZnNldD1cIjAuNTY4XCIgc3RvcC1jb2xvcj1cIiNmZGY3MDBcIi8+PHN0b3Agb2Zmc2V0PVwiMC42NjRcIiBzdG9wLWNvbG9yPVwiI2Y2ZTIwMFwiLz48c3RvcCBvZmZzZXQ9XCIwLjc4MlwiIHN0b3AtY29sb3I9XCIjZWJiZjAwXCIvPjxzdG9wIG9mZnNldD1cIjAuOTA2XCIgc3RvcC1jb2xvcj1cIiNkZTkyMDBcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZGE5ODE5XCIvPjwvcmFkaWFsR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfc21hcnR5PC90aXRsZT48cGF0aCBkPVwiTTEzLjg1OSwyOC43NzZhLjI0Mi4yNDIsMCwwLDAsLjEyOC4xOTEsMTIsMTIsMCwwLDAsMS4zOTIuNjIyLDQuMyw0LjMsMCwwLDAsLjU3OC4wNzJoLjA1MmE0LjMsNC4zLDAsMCwwLC41NzgtLjA3MiwxMi4wMTQsMTIuMDE0LDAsMCwwLDEuMzkyLS42MjIuMjQzLjI0MywwLDAsMCwuMTI4LS4xOTFsLTIuMTM3LjE5MlpcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTE2LjAxNCwzMGExLjEyMywxLjEyMywwLDAsMCwuNjg4LS4yNDcuMTc1LjE3NSwwLDAsMCwuMDg1LS4xMjZ2LS4xMDVhMy4yMzUsMy4yMzUsMCwwLDAtLjc3My0uMDUzaC0uMDYzYTMuMjM3LDMuMjM3LDAsMCwwLS43NzMuMDUzdi4xMDVhLjE3NS4xNzUsMCwwLDAsLjA4NS4xMjYsMS4xMjIsMS4xMjIsMCwwLDAsLjY4OC4yNDdaXCIgc3R5bGU9XCJmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk0xNS45NTEsMjkuODA3YTQuNzMyLDQuNzMyLDAsMCwxLS42NzQtLjA0NCwxLjEwNSwxLjEwNSwwLDAsMCwuNjc0LjIzN2guMDYzYTEuMTA2LDEuMTA2LDAsMCwwLC42NzUtLjIzNyw0LjczMyw0LjczMywwLDAsMS0uNjc1LjA0NFpcIiBzdHlsZT1cImZpbGw6dXJsKCNjKVwiLz48cGF0aCBkPVwiTTE5LjgwOSwyNi44MzhhMSwxLDAsMCwwLS4yMzQuMzg5Yy0uMDM2LjE4MS0uMS41ODUtMS4zMjYsMS40MDZsLS4wMjUuMDE3YS40MzUuNDM1LDAsMCwxLS4wODYuMDM3LDkuOTY4LDkuOTY4LDAsMCwxLTIuMTU1LjIwOSw5Ljk2OCw5Ljk2OCwwLDAsMS0yLjE1Ni0uMjA5LjQzNi40MzYsMCwwLDEtLjA4NS0uMDM2bC0uMDI1LS4wMTdhNC41NzksNC41NzksMCwwLDEtMS4xMi0uOTU3Yy0uMTY0LS4yMTktLjM3My0uMjU3LS4zOS0uMzQ1YTIxLjA1NSwyMS4wNTUsMCwwLDAsMy44NTUuMDU3LDEzLjA0OSwxMy4wNDksMCwwLDAsMy43NjEtLjY1NEEuNjkyLjY5MiwwLDAsMSwxOS44MDksMjYuODM4WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2QpXCIvPjxwYXRoIGQ9XCJNMTkuNzcyLDI2Ljg4YS45ODUuOTg1LDAsMCwxLS4yNDYuMTI5Yy0uMDc2LjAyOC0uMjQ1LjA3OC0uMjQ1LjA3OGEyNS4xNSwyNS4xNSwwLDAsMS02LjQ1OC40MzZjLS4xMzYtLjAwOS0uMzItLjAyOC0uMzItLjAyOGExLjA2MiwxLjA2MiwwLDAsMS0uMTQtLjAyOCwxLjAxNiwxLjAxNiwwLDAsMSwuMTQuMTA3Yy4xNi4wMTMuMzE5LjAxOS4zMTkuMDE5YTI2Ljg2NCwyNi44NjQsMCwwLDAsNi43NDMtLjMyM2wuMDA5LS4wNDJBLjg4NS44ODUsMCwwLDEsMTkuNzcyLDI2Ljg4WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2UpXCIvPjxwYXRoIGQ9XCJNMTkuNDM5LDI1LjM4MnMuMjQ1LS4wNy4yNDUtLjE2MmEuMTE0LjExNCwwLDAsMC0uMDEzLS4wNjUuMjE0LjIxNCwwLDAsMS0uMDYxLS4xNDQuNDM3LjQzNywwLDAsMSwuMTE5LS4yNywxLjA2OSwxLjA2OSwwLDAsMS0uMi4xYy0uMDc2LjAyOC0uMjQ1LjA3OC0uMjQ1LjA3OGEyNS4xNTEsMjUuMTUxLDAsMCwxLTYuNDU4LjQzNmMtLjEzNi0uMDA5LS4zMi0uMDI4LS4zMi0uMDI4YTEuMDU1LDEuMDU1LDAsMCwxLS4xODEtLjA0MS4zNzcuMzc3LDAsMCwxLC4wNzguMjE3LjcxNi43MTYsMCwwLDEtLjI1NC40MzIuNjczLjY3MywwLDAsMSwuMzY4LS4wNzlBMjYuMiwyNi4yLDAsMCwwLDE5LjQzOSwyNS4zODJaXCIgc3R5bGU9XCJmaWxsOnVybCgjZilcIi8+PHBhdGggZD1cIk0xOS40MzksMjQuMjI5cy4yNDUtLjA3OC4yNDUtLjE4MmEuMTQzLjE0MywwLDAsMC0uMDEzLS4wNzMuMjU0LjI1NCwwLDAsMS0uMDYxLS4xNjIuNTE0LjUxNCwwLDAsMSwuMTE5LS4zLDEuMDI2LDEuMDI2LDAsMCwxLS4yLjExMWMtLjA3Ni4wMzItLjI0NS4wODgtLjI0NS4wODhhMjIuNTA3LDIyLjUwNywwLDAsMS02LjQ1OC40ODljLS4xMzYtLjAxLS4zMi0uMDMyLS4zMi0uMDMyYS45NTMuOTUzLDAsMCwxLS4xODEtLjA0Ni40NTUuNDU1LDAsMCwxLC4wNzguMjQzLjgyNS44MjUsMCwwLDEtLjI1NC40ODQuNjE0LjYxNCwwLDAsMSwuMzY4LS4wODlDMTMuMDE0LDI0Ljc1OCwxNi45MzUsMjUuMDQxLDE5LjQzOSwyNC4yMjlaXCIgc3R5bGU9XCJmaWxsOnVybCgjZylcIi8+PHBhdGggZD1cIk0xOS40MzksMjYuNDY3cy4yNDUtLjA3LjI0NS0uMTYzYS4xMTUuMTE1LDAsMCwwLS4wMTMtLjA2NS4yMTQuMjE0LDAsMCwxLS4wNjEtLjE0NC40MzUuNDM1LDAsMCwxLC4xMTktLjI3LDEuMDcsMS4wNywwLDAsMS0uMi4xYy0uMDc2LjAyOC0uMjQ1LjA3OC0uMjQ1LjA3OGEyNS4xNjIsMjUuMTYyLDAsMCwxLTYuNDU4LjQzNmMtLjEzNi0uMDA5LS4zMi0uMDI4LS4zMi0uMDI4YTEuMDQyLDEuMDQyLDAsMCwxLS4xODEtLjA0MS4zNzcuMzc3LDAsMCwxLC4wNzguMjE3LjcxNy43MTcsMCwwLDEtLjI1NC40MzIuNjcuNjcsMCwwLDEsLjM2OC0uMDc5QTI2LjIwNywyNi4yMDcsMCwwLDAsMTkuNDM5LDI2LjQ2N1pcIiBzdHlsZT1cImZpbGw6dXJsKCNoKVwiLz48cGF0aCBkPVwiTTE5LjQzOSwyNi40NjdzLjI0NS0uMDcuMjQ1LS4xNjNhLjExNS4xMTUsMCwwLDAtLjAxMy0uMDY1LjIxNC4yMTQsMCwwLDEtLjA2MS0uMTQ0LjQzNS40MzUsMCwwLDEsLjExOS0uMjcsMS4wNywxLjA3LDAsMCwxLS4yLjFjLS4wNzYuMDI4LS4yNDUuMDc4LS4yNDUuMDc4YTI1LjE2OCwyNS4xNjgsMCwwLDEtNi40NTguNDM2Yy0uMTM2LS4wMDktLjMyLS4wMjgtLjMyLS4wMjhhMS4wNDIsMS4wNDIsMCwwLDEtLjE4MS0uMDQxLjM3Ni4zNzYsMCwwLDEsLjA3OC4yMTcuNzE3LjcxNywwLDAsMS0uMjU0LjQzMi42Ny42NywwLDAsMSwuMzY4LS4wNzlBMjYuMjA3LDI2LjIwNywwLDAsMCwxOS40MzksMjYuNDY3WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2gpXCIvPjxwYXRoIGQ9XCJNMTguMjI0LDI4LjY1YS40MzUuNDM1LDAsMCwxLS4wODYuMDM3LDkuOTY4LDkuOTY4LDAsMCwxLTIuMTU1LjIwOSw5Ljk2OCw5Ljk2OCwwLDAsMS0yLjE1Ni0uMjA5LjQzNi40MzYsMCwwLDEtLjA4NS0uMDM2bC0uMDI1LS4wMTctLjAyOS0uMDE5YS4xMTIuMTEyLDAsMCwwLDAsLjA3M2MuMDI0LjA3My4xNDcuMS4xNDcuMWE5Ljk0Myw5Ljk0MywwLDAsMCwyLjE1LjIwOSw5Ljk0Miw5Ljk0MiwwLDAsMCwyLjE1LS4yMDlzLjEyNi0uMDI5LjE0Ny0uMWEuMTE4LjExOCwwLDAsMCwwLS4wNzNsLS4wMjkuMDE5WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2opXCIvPjxwYXRoIGQ9XCJNMTkuOTQ0LDI1LjVzLjA0MS4yNTItLjQxOC40MjNjLS4wNzYuMDI4LS4yNDUuMDc4LS4yNDUuMDc4YTI1LjE2MiwyNS4xNjIsMCwwLDEtNi40NTguNDM2Yy0uMTM2LS4wMDktLjMyLS4wMjgtLjMyLS4wMjgtLjI3Ni0uMDM4LS40NjctLjE2LS40NTUtLjMwOCwwLDAtLjAzMy0uMjQ5LjQ2Ni0uMjQ5YTI2LjIsMjYuMiwwLDAsMCw2LjkyNS0uNDcycy4yNDUtLjA3LjI0NS0uMTYyYS4xMTEuMTExLDAsMCwwLS4wMTMtLjA2NlMxOS45NDQsMjUuMzEyLDE5Ljk0NCwyNS41WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2spXCIvPjxwYXRoIGQ9XCJNMTkuOTQ0LDI0LjQxNnMuMDQxLjI1Mi0uNDE4LjQyM2MtLjA3Ni4wMjgtLjI0NS4wNzgtLjI0NS4wNzhhMjUuMTUxLDI1LjE1MSwwLDAsMS02LjQ1OC40MzZjLS4xMzYtLjAwOS0uMzItLjAyOC0uMzItLjAyOC0uMjc2LS4wMzgtLjQ2Ny0uMTYtLjQ1NS0uMzA4LDAsMC0uMDMzLS4yNDguNDY2LS4yNDhhMjYuMTkzLDI2LjE5MywwLDAsMCw2LjkyNS0uNDcycy4yNDUtLjA3LjI0NS0uMTYyYS4xMS4xMSwwLDAsMC0uMDEzLS4wNjVTMTkuOTQ0LDI0LjIyNywxOS45NDQsMjQuNDE2WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2wpXCIvPjxwYXRoIGQ9XCJNMTkuODkzLDI0LjQwNnYtLjAyMWMtLjAxMi4wNzYtLjA3OC4yMzYtLjQxNy4zNTUtLjA3Ni4wMjYtLjI0NS4wNzMtLjI0NS4wNzNhMjIuMzcyLDIyLjM3MiwwLDAsMS01LjEuNWgwYTIyLjE1NSwyMi4xNTUsMCwwLDAsNS4xLS40NDFzLjE2OS0uMDQ3LjI0NS0uMDczQzE5LjkzMywyNC42NDMsMTkuODkzLDI0LjQwNiwxOS44OTMsMjQuNDA2WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTkuODkzLDI1LjQ5MVYyNS40N2MtLjAxMi4wNzYtLjA3OC4yMzYtLjQxNy4zNTUtLjA3Ni4wMjctLjI0NS4wNzMtLjI0NS4wNzNhMjIuMzgsMjIuMzgsMCwwLDEtNS4xLjVoMGEyMi4xNzEsMjIuMTcxLDAsMCwwLDUuMS0uNDQxcy4xNjktLjA0Ny4yNDUtLjA3M0MxOS45MzMsMjUuNzI4LDE5Ljg5MywyNS40OTEsMTkuODkzLDI1LjQ5MVpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE5Ljk0NCwyMy4wMzRzLjA0MS4zMjktLjQxOC41NTJjLS4wNzYuMDM3LS4yNDUuMS0uMjQ1LjFhMTkuNDA5LDE5LjQwOSwwLDAsMS02LjQ1OC41NjljLS4xMzYtLjAxMi0uMzItLjAzNy0uMzItLjAzNy0uMjc2LS4wNS0uNDY3LS4yMDktLjQ1NS0uNCwwLDAtLjAzMy0uMzI0LjQ2Ni0uMzI0YTE4LjI4MywxOC4yODMsMCwwLDAsNi45MjUtLjQ2MSwxLjAxNCwxLjAxNCwwLDAsMCwuNDQ0LS4yMzhBLjUzLjUzLDAsMCwxLDE5Ljk0NCwyMy4wMzRaXCIgc3R5bGU9XCJmaWxsOnVybCgjbSlcIi8+PHBhdGggZD1cIk0xOS45NDQsMjYuNTg2cy4wNDEuMjUyLS40MTguNDIzYy0uMDc2LjAyOC0uMjQ1LjA3OC0uMjQ1LjA3OGEyNS4xNSwyNS4xNSwwLDAsMS02LjQ1OC40MzZjLS4xMzYtLjAwOS0uMzItLjAyOC0uMzItLjAyOC0uMjc2LS4wMzgtLjQ2Ny0uMTYtLjQ1NS0uMzA4LDAsMC0uMDMzLS4yNDguNDY2LS4yNDhhMjYuMjA3LDI2LjIwNywwLDAsMCw2LjkyNS0uNDcycy4yNDUtLjA3LjI0NS0uMTYzYS4xMTEuMTExLDAsMCwwLS4wMTMtLjA2NVMxOS45NDQsMjYuNCwxOS45NDQsMjYuNTg2WlwiIHN0eWxlPVwiZmlsbDp1cmwoI24pXCIvPjxwYXRoIGQ9XCJNMTkuODkzLDI2LjU3NnYtLjAyMWMtLjAxMi4wNzYtLjA3OC4yMzYtLjQxNy4zNTUtLjA3Ni4wMjYtLjI0NS4wNzMtLjI0NS4wNzNhMjIuMzcyLDIyLjM3MiwwLDAsMS01LjEuNWgwYTIyLjE2MywyMi4xNjMsMCwwLDAsNS4xLS40NDFzLjE2OS0uMDQ3LjI0NS0uMDczQzE5LjkzMywyNi44MTMsMTkuODkzLDI2LjU3NiwxOS44OTMsMjYuNTc2WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTkuODkzLDIzLjMyMVYyMy4zYy0uMDEyLjA3Ni0uMDc4LjIzNi0uNDE3LjM1NS0uMDc2LjAyNy0uMjQ1LjA3My0uMjQ1LjA3M2EyMi4zNzIsMjIuMzcyLDAsMCwxLTUuMS41aDBhMjIuMTU2LDIyLjE1NiwwLDAsMCw1LjEtLjQ0MXMuMTY5LS4wNDcuMjQ1LS4wNzNDMTkuOTMzLDIzLjU1OCwxOS44OTMsMjMuMzIxLDE5Ljg5MywyMy4zMjFaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xMi40MTcsMjUuODgxcy0uMjM2LDAtLjI0MS4wOC4yNDYuMDg1LjI0Ni4wODUuMTc1LDAsLjMuMDA1Yy42MTktLjAxMywxLjk5My0uMDM4LDMuNDM3LS4xNjZDMTQuMzg0LDI1Ljk1OCwxMi43MjMsMjUuODgzLDEyLjQxNywyNS44ODFaXCIgc3R5bGU9XCJmaWxsOnVybCgjbylcIi8+PHBhdGggZD1cIk0xMi40MTcsMjQuOHMtLjIzNiwwLS4yNDEuMDguMjQ2LjA4NS4yNDYuMDg1LjE3NSwwLC4zLjAwNWMuNjE5LS4wMTIsMS45OTMtLjAzOCwzLjQzNy0uMTY2QzE0LjM4NCwyNC44NzQsMTIuNzIzLDI0LjgsMTIuNDE3LDI0LjhaXCIgc3R5bGU9XCJmaWxsOnVybCgjcClcIi8+PHBhdGggZD1cIk0xMi40MTcsMjYuOTY1cy0uMjM2LDAtLjI0MS4wOC4yNDYuMDg1LjI0Ni4wODUuMTc1LDAsLjMuMDA1Yy42MTktLjAxMiwxLjk5My0uMDM4LDMuNDM3LS4xNjZDMTQuMzg0LDI3LjA0MiwxMi43MjMsMjYuOTY2LDEyLjQxNywyNi45NjVaXCIgc3R5bGU9XCJmaWxsOnVybCgjcSlcIi8+PHBhdGggZD1cIk0xMS45NjUsMjIuNzc5cy0uMjc0LjMxNS4zMTkuNzExYzAsMCw1Ljc3NS41ODcsNy42LS42OTVDMTkuODg0LDIyLjc5NSwxMy42MjMsMjMuMzIsMTEuOTY1LDIyLjc3OVpcIiBzdHlsZT1cImZpbGw6dXJsKCNyKVwiLz48cGF0aCBkPVwiTTIwLjAzNSwyMi43NzlhNC40NDksNC40NDksMCwwLDAsLjgxLTEuMTU1LDMuMzg2LDMuMzg2LDAsMCwwLC4yLTEuMTE1LDYuNzMzLDYuNzMzLDAsMCwxLC42MzItMi45MWMuNTM0LTEuMDE0LDIuODEtNC40NDcsMi44MS03LjQ2MkE4LjAxMiw4LjAxMiwwLDAsMCwxNiwyYTguMDEyLDguMDEyLDAsMCwwLTguNDgzLDguMTM2YzAsMy4wMTUsMi4yNzYsNi40NDgsMi44MSw3LjQ2MmE2LjczMSw2LjczMSwwLDAsMSwuNjMyLDIuOTEsMy4zODQsMy4zODQsMCwwLDAsLjIsMS4xMTUsNC40NTMsNC40NTMsMCwwLDAsLjgxLDEuMTU1LDEzLjg2NiwxMy44NjYsMCwwLDAsMy45ODcuMzdBMTUuMTUxLDE1LjE1MSwwLDAsMCwyMC4wMzUsMjIuNzc5WlwiIHN0eWxlPVwiZmlsbDp1cmwoI3MpXCIvPmAsXG4gIFwiU29saWRpdHkgKEV0aGVyZXVtKVwiOiBgPHBhdGggZD1cIk0yMC40NzcsMmwtNC41LDhoLTlsNC41LThoOVwiIHN0eWxlPVwiZmlsbDojYzFjMWMxO29wYWNpdHk6MC40NTtpc29sYXRpb246aXNvbGF0ZVwiLz48cGF0aCBkPVwiTTExLjUyLDMwbDQuNS04aDlsLTQuNSw4aC05XCIgc3R5bGU9XCJmaWxsOiNjMWMxYzE7b3BhY2l0eTowLjQ1O2lzb2xhdGlvbjppc29sYXRlXCIvPjxwYXRoIGQ9XCJNMTUuOTc1LDEwaDlsLTQuNS04aC05WlwiIHN0eWxlPVwiZmlsbDojYzFjMWMxO29wYWNpdHk6MC42O2lzb2xhdGlvbjppc29sYXRlXCIvPjxwYXRoIGQ9XCJNMTYuMDIyLDIyaC05bDQuNSw4aDlaXCIgc3R5bGU9XCJmaWxsOiNjMWMxYzE7b3BhY2l0eTowLjY7aXNvbGF0aW9uOmlzb2xhdGVcIi8+PHBhdGggZD1cIk0xMS40NzcsMThsNC41LTgtNC41LTgtNC41LDhaXCIgc3R5bGU9XCJmaWxsOiNjMWMxYzE7b3BhY2l0eTowLjg7aXNvbGF0aW9uOmlzb2xhdGVcIi8+PHBhdGggZD1cIk0yMC41MiwxNGwtNC41LDgsNC41LDgsNC41LThaXCIgc3R5bGU9XCJmaWxsOiNjMWMxYzE7b3BhY2l0eTowLjg7aXNvbGF0aW9uOmlzb2xhdGVcIi8+YCxcbiAgXCJTb2x1dGlvbiBmaWxlXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCIxNlwiIHkxPVwiLTE4Mi4wNzJcIiB4Mj1cIjE2XCIgeTI9XCItMjA5LjkyOFwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEsIDAsIDAsIC0xLCAwLCAtMTgwKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNmZmZcIiBzdG9wLW9wYWNpdHk9XCIwXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfc2xuPC90aXRsZT48cGF0aCBkPVwiTTYuMDQ1LDIzLjk5MWExLjE2NiwxLjE2NiwwLDAsMS0xLjIwOC4xOTFMMi43MTgsMjMuM0ExLjE2OCwxLjE2OCwwLDAsMSwyLDIyLjIyMlY5Ljc3OEExLjE2NSwxLjE2NSwwLDAsMSwyLjcxOCw4LjdsMi4xMTktLjg4M2ExLjE2OSwxLjE2OSwwLDAsMSwxLjIwOC4xOTFsLjQ3Ni40MDhBLjY0Ni42NDYsMCwwLDAsNS41LDguOTQyVjIzLjA1OGEuNjQ2LjY0NiwwLDAsMCwxLjAyMS41MjVaXCIgc3R5bGU9XCJmaWxsOiM1MjIxOGFcIi8+PHBhdGggZD1cIk0yLjcxOCwyMy4zQTEuMTY5LDEuMTY5LDAsMCwxLDIsMjIuMjIydi0uMWEuNjc0LjY3NCwwLDAsMCwxLjE3NC40NTJMMjEuMjUsMi41ODNhMS43NDMsMS43NDMsMCwwLDEsMS45OS0uMzM4bDUuNzY5LDIuNzc4QTEuNzQ5LDEuNzQ5LDAsMCwxLDMwLDYuNnYuMDY3YTEuMSwxLjEsMCwwLDAtMS44LS44NTRMNi41MjEsMjMuNTgzbC0uNDc2LjQwOGExLjE2NiwxLjE2NiwwLDAsMS0xLjIwOC4xOTFaXCIgc3R5bGU9XCJmaWxsOiM2YzMzYWZcIi8+PHBhdGggZD1cIk0yLjcxOCw4LjdBMS4xNjgsMS4xNjgsMCwwLDAsMiw5Ljc3OHYuMWEuNjc0LjY3NCwwLDAsMSwxLjE3NC0uNDUyTDIxLjI1LDI5LjQxNmExLjc0MywxLjc0MywwLDAsMCwxLjk5LjMzOGw1Ljc2OS0yLjc3OEExLjc0NywxLjc0NywwLDAsMCwzMCwyNS40di0uMDY4YTEuMSwxLjEsMCwwLDEtMS44Ljg1NUw2LjUyMSw4LjQxN2wtLjQ3Ni0uNDA4YTEuMTY2LDEuMTY2LDAsMCwwLTEuMjA4LS4xOTFaXCIgc3R5bGU9XCJmaWxsOiM4NTRjYzdcIi8+PHBhdGggZD1cIk0yMy4yNCwyOS43NTVhMS43NDMsMS43NDMsMCwwLDEtMS45OS0uMzM4QTEuMDI1LDEuMDI1LDAsMCwwLDIzLDI4LjY5MlYzLjMwOGExLjAyNSwxLjAyNSwwLDAsMC0xLjc1LS43MjUsMS43NDMsMS43NDMsMCwwLDEsMS45OS0uMzM4bDUuNzY4LDIuNzc0QTEuNzQ5LDEuNzQ5LDAsMCwxLDMwLDYuNlYyNS40MDVhMS43NTEsMS43NTEsMCwwLDEtLjk5MSwxLjU3N1pcIiBzdHlsZT1cImZpbGw6I2IxNzlmMVwiLz48ZyBzdHlsZT1cIm9wYWNpdHk6MC4yNVwiPjxwYXRoIGQ9XCJNMjIuMDkzLDI5Ljg4M2ExLjc0LDEuNzQsMCwwLDAsMS4xNDctLjEyOGw1Ljc2OC0yLjc3NEExLjc0OSwxLjc0OSwwLDAsMCwzMCwyNS40VjYuNmExLjc1LDEuNzUsMCwwLDAtLjk5Mi0xLjU3N0wyMy4yNCwyLjI0NWExLjc0MiwxLjc0MiwwLDAsMC0xLjk5LjMzOWwtOS4zLDEwLjI4NEw2LjUyMSw4LjQxNmwtLjQ3Ni0uNDA4YTEuMTY4LDEuMTY4LDAsMCwwLTEuMjA3LS4xOTFMMi43MTksOC43QTEuMTY3LDEuMTY3LDAsMCwwLDIsOS42ODljMCwuMDI5LDAsLjA1OSwwLC4wODhWMjIuMjIxYzAsLjAzLDAsLjA1OSwwLC4wODhhMS4xNjcsMS4xNjcsMCwwLDAsLjcxNS45ODlsMi4xMTkuODgzYTEuMjI2LDEuMjI2LDAsMCwwLC4xNTUuMDUyLDEuMTY1LDEuMTY1LDAsMCwwLDEuMDUyLS4yNDNsLjQ3Ni0uNDA4LDUuNDMtNC40NTIsOS4zLDEwLjI4NUExLjczMywxLjczMywwLDAsMCwyMi4wOTMsMjkuODgzWk0yMywxMC4wNzIsMTUuNzcsMTYsMjMsMjEuOTI3Wk01LjUsMTJsMy42MTksNEw1LjUsMjBaXCIgc3R5bGU9XCJmaWxsLXJ1bGU6ZXZlbm9kZDtmaWxsOnVybCgjYSlcIi8+PC9nPmAsXG4gIFwiU1BBUlFMXCI6IGA8cGF0aCBkPVwiTTI2LjI4NCwyMC4zNjFjLS4xNjUtLjA4NC0uMzU5LS4xNjQtLjUyMy0uMjQ4SDI1LjlzLTEuMTU4LS41LTEuMjQtNC4xNzZjLS4xMTEtMy42NTUsMS4xLTQuMjg5LDEuMS00LjI4OWE0Ljk2LDQuOTYsMCwwLDAsMi4xNzYtMi4xNDMsNS4xMjIsNS4xMjIsMCwwLDAtMi4xMjItNi45MjcsNS4zNDIsNS4zNDIsMCwwLDAtNy4xMzgsMi4xNDYsNS4wNjcsNS4wNjcsMCwwLDAtLjUyMywzLjIxNEwxOC4xLDcuODU1cy4zLDEuMzE5LTIuODM5LDMuMjcyYy0zLjExNSwxLjk1LTQuNTQ5Ljk2Mi00LjU0OS45NjJsLjA4Mi4xMzhhMi4xMzEsMi4xMzEsMCwwLDAtLjI3My0uMTY3LDUuMTE3LDUuMTE3LDAsMSwwLC44MjUsOC41MmwtLjAyNS4wNTVzMS4xMjktLjkzMyw0LjQwNy44MjdjMi41OTIsMS4zNzQsMi45NzksMi43NDgsMy4wMzMsMy4yNGE1LjEsNS4xLDAsMCwwLDIuNyw0LjcsNS4xMjQsNS4xMjQsMCwxLDAsNC44MjUtOS4wNDFabS01Ljc5LjY4NWMtLjQxMi4xMzgtMS42LjMtNC4wNzctMS4wMTctMi43LTEuNDU0LTMuMTE1LTIuNjY0LTMuMTY5LTMuMDIxYTUuNDA2LDUuNDA2LDAsMCwwLS4wNTctMS4zMTlsLjAyOS4wMjZTMTMsMTQuNTM0LDE2LjA4NCwxMi42MzljMi43NTctMS43MDUsNC4wMjYtMS4zNzQsNC4yNDUtMS4yOTNhMi44MywyLjgzLDAsMCwwLC40Ny4yNzcsNC4wODIsNC4wODIsMCwwLDAsLjk2NC4zODNjLjM4Ny4zNTcsMS4wNzYsMS4zNzQsMS4xNTgsNC4xcy0uNzE3LDMuNzY0LTEuMTU4LDQuMTIxQTUuMDQsNS4wNCwwLDAsMCwyMC40OTQsMjEuMDQ3WlwiIHN0eWxlPVwiZmlsbDojMGM0NzljXCIvPjxwYXRoIGQ9XCJNMjAuMTM1LDQuMjI5YTMuODYxLDMuODYxLDAsMCwwLS4wODIsNS4zODZjLS43MTctLjY4NS0uNjg4LTIuMTE3LjAyOS0zLjQ2MmEuNjczLjY3MywwLDAsMSwuNzQ2LS4yNzdjLjAyNSwwLC4wNTQuMDI5LjA4Mi4wMjlhLjk5My45OTMsMCwwLDAsLjI3Ni4wMjZBMS4wNTYsMS4wNTYsMCwwLDAsMjIuMiw0LjgwNWEuOTM0LjkzNCwwLDAsMC0uMy0uNjg1YzEuMzgtLjkwNywyLjk1LTEuMDE3LDMuNjEtLjQxMmguMDI5QTMuODI2LDMuODI2LDAsMCwwLDIwLjEzNSw0LjIyOVpNNS4xNDUsMTMuODQ2YTMuODU5LDMuODU5LDAsMCwwLS4wODIsNS4zODljLS43MTctLjY4OS0uNjkyLTIuMTE3LjAyNS0zLjQ2NWEuNjY4LjY2OCwwLDAsMSwuNzQ2LS4yNzNjLjAyNSwwLC4wNTQuMDI5LjA4Mi4wMjlhMSwxLDAsMCwwLC4yNzYuMDI2QTEuMDU2LDEuMDU2LDAsMCwwLDcuMjEsMTQuNDI1YS45NDUuOTQ1LDAsMCwwLS4zLS42ODljMS4zNzctLjkwNywyLjk0Ny0xLjAxNywzLjYxLS40MTJoLjAyNUEzLjg1MiwzLjg1MiwwLDAsMCw1LjE0NSwxMy44NDZabTE1Ljg3Miw4LjE2M2EzLjg2NSwzLjg2NSwwLDAsMC0uMDgyLDUuMzg5Yy0uNzE3LS42ODktLjY4OC0yLjExNy4wMjktMy40NjVhLjY2OC42NjgsMCwwLDEsLjc0Ni0uMjczYy4wMjUsMCwuMDU0LjAyNi4wODIuMDI2YS44ODcuODg3LDAsMCwwLC4yNzYuMDI5LDEuMDU3LDEuMDU3LDAsMCwwLDEuMDE4LTEuMTI2LjkzNi45MzYsMCwwLDAtLjMtLjY4OWMxLjM4LS45MDcsMi45NS0xLjAxNywzLjYxLS40MTJoLjAyOUEzLjgyOSwzLjgyOSwwLDAsMCwyMS4wMTcsMjIuMDA5WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG4gIFwiU1FGXCI6IGA8cGF0aCBkPVwiTTI1LDIzLjVIN2E1LjAxNSw1LjAxNSwwLDAsMS01LTV2LTZhNS4wMTUsNS4wMTUsMCwwLDEsNS01SDI1YTUuMDE1LDUuMDE1LDAsMCwxLDUsNXY2YTUuMDE1LDUuMDE1LDAsMCwxLTUsNVpcIi8+PHBhdGggZD1cIk03LDE5LjQ2MWE0LjgxLDQuODEsMCwwLDEtMS40MTQtLjIsNS4wNTIsNS4wNTIsMCwwLDEtMS4xMTEtLjQ3MmwtLjQuNDMyaC0uNUwzLjUsMTYuMDUySDRhOC40NjIsOC40NjIsMCwwLDAsLjQzMS45NTMsNC42MzgsNC42MzgsMCwwLDAsLjYwNi45LDMuMTc3LDMuMTc3LDAsMCwwLC44LjY3NSwxLjk4NSwxLjk4NSwwLDAsMCwxLjAyOS4yNiwxLjY3MiwxLjY3MiwwLDAsMCwxLjIxNi0uNDExQTEuMzgyLDEuMzgyLDAsMCwwLDguNSwxNy4zOTFhMS4xNTYsMS4xNTYsMCwwLDAtLjM1OS0uODYyLDIuOTQ1LDIuOTQ1LDAsMCwwLTEuMTExLS42cS0uNDktLjE2Ny0uOS0uMzF0LS43NzMtLjI5MmEyLjU4LDIuNTgsMCwwLDEtMS4yMzktMS4wMDcsMi43MywyLjczLDAsMCwxLS40MDUtMS40NjUsMi40MDYsMi40MDYsMCwwLDEsLjIxLS45ODYsMi42MDgsMi42MDgsMCwwLDEsLjYxMi0uODUsMi45NjcsMi45NjcsMCwwLDEsLjk4NS0uNTc1LDMuNzIyLDMuNzIyLDAsMCwxLDEuMzA2LS4yMjMsMy45ODQsMy45ODQsMCwwLDEsMS4yODguMiw1LjE1MSw1LjE1MSwwLDAsMSwuOTQ0LjQwOGwuMzU2LS4zN2guNTA3bC4wNDcsMi45ODhoLS41cS0uMTc1LS40ODMtLjQxMS0uOTg3YTQuMzMyLDQuMzMyLDAsMCwwLS41LS44MzksMi4zLDIuMywwLDAsMC0uNjU5LS41NzMsMS43MjksMS43MjksMCwwLDAtLjg3NS0uMjE0QTEuNDM3LDEuNDM3LDAsMCwwLDYsMTEuMjEyYTEuMjMzLDEuMjMzLDAsMCwwLS40LjkzNCwxLjE0MSwxLjE0MSwwLDAsMCwuMzQ3Ljg2LDIuOTUxLDIuOTUxLDAsMCwwLDEuMDgyLjU4OHEuNDMxLjE1NC44OC4zMDl0LjguM2EyLjg4NSwyLjg4NSwwLDAsMSwxLjI4Ni45NTUsMi41MTIsMi41MTIsMCwwLDEsLjQ0LDEuNTEyLDIuNjMyLDIuNjMyLDAsMCwxLS45MjcsMS45ODUsMy4zNjcsMy4zNjcsMCwwLDEtMS4wNzkuNkE0LjM5MSw0LjM5MSwwLDAsMSw3LDE5LjQ2MVpcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz48cGF0aCBkPVwiTTE4LjkyMSwxMS40MzRhNC4zMzgsNC4zMzgsMCwwLDEsLjk3MSwxLjQzMiw0LjgzNCw0LjgzNCwwLDAsMSwuMzU5LDEuOTE0LDQuOTU4LDQuOTU4LDAsMCwxLS43MiwyLjY4LDQuMDM2LDQuMDM2LDAsMCwxLTIuMDM4LDEuNjYxLDIuMTUxLDIuMTUxLDAsMCwwLC40MiwxLjI3MiwxLjE2OCwxLjE2OCwwLDAsMCwuOTUuNTM3LDMuNTYzLDMuNTYzLDAsMCwwLC41OTItLjA0M3EuMjU0LS4wNDMuNDU4LS4xdi41NDNhNS43NTMsNS43NTMsMCwwLDEtLjk4NS4zLDYuMDU0LDYuMDU0LDAsMCwxLTEuMzcuMTUxLDIuMjA2LDIuMjA2LDAsMCwxLTEuNjEyLS42MjEsMi41NzQsMi41NzQsMCwwLDEtLjcwOC0xLjczMkE0LjU3OSw0LjU3OSwwLDAsMSwxMy43LDE5YTQuMTg2LDQuMTg2LDAsMCwxLTEuMjUzLS45MzIsNC4zODgsNC4zODgsMCwwLDEtLjg0Mi0xLjM3Nyw0Ljc2OSw0Ljc2OSwwLDAsMS0uMzEyLTEuNzUzLDUuMjM3LDUuMjM3LDAsMCwxLC4zNDctMS45NDgsNC41LDQuNSwwLDAsMSwuOTUzLTEuNSw0LjExOSw0LjExOSwwLDAsMSwxLjQyNS0uOTQyLDQuODYsNC44NiwwLDAsMSwzLjUtLjAwOUE0LjI0Nyw0LjI0NywwLDAsMSwxOC45MjEsMTEuNDM0Wm0tMS41LDYuMjY2YTQuODU3LDQuODU3LDAsMCwwLC4zNzktMS4yNzMsOS45ODEsOS45ODEsMCwwLDAsLjExNy0xLjYwNiwxMC41MzQsMTAuNTM0LDAsMCwwLS4xLTEuNDgsNC45MzYsNC45MzYsMCwwLDAtLjM0Ny0xLjI4MiwyLjQxLDIuNDEsMCwwLDAtLjY2NS0uOSwxLjU3MSwxLjU3MSwwLDAsMC0xLjAzMi0uMzQsMS43MywxLjczLDAsMCwwLTEuNiwxLjA2LDYuNjM0LDYuNjM0LDAsMCwwLS41NDgsMi45OTMsOS41ODMsOS41ODMsMCwwLDAsLjEyLDEuNTUxLDQuOCw0LjgsMCwwLDAsLjM3NiwxLjI3MywyLjI4NiwyLjI4NiwwLDAsMCwuNjY1Ljg1NiwxLjU5MSwxLjU5MSwwLDAsMCwuOTkxLjMwNiwxLjYxMSwxLjYxMSwwLDAsMCwuOTkxLS4zMDlBMi4xMzUsMi4xMzUsMCwwLDAsMTcuNDIzLDE3LjdaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+PHBhdGggZD1cIk0yOC41LDEyLjhoLS40NTVhMy45MywzLjkzLDAsMCwwLS42LTEuMDg2LDEuMzg1LDEuMzg1LDAsMCwwLS44MTItLjYzYy0uMTE2LS4wMTYtLjI3Mi0uMDMxLS40NjUtLjA0M3MtLjM3My0uMDE5LS41MzUtLjAxOUgyNC4zNDl2My40MzNoLjgyMmExLjk2OSwxLjk2OSwwLDAsMCwuNjA2LS4wODMsMS4wNTQsMS4wNTQsMCwwLDAsLjQ1NS0uMywxLjU5MSwxLjU5MSwwLDAsMCwuMjgzLS41MTYsMi42MzUsMi42MzUsMCwwLDAsLjE2Ni0uNjIxaC40NDN2My42ODZoLS40NDNhMi40NzEsMi40NzEsMCwwLDAtLjE4MS0uNjc2LDIuMDk0LDIuMDk0LDAsMCwwLS4yNjgtLjUyOCwxLjAxMiwxLjAxMiwwLDAsMC0uNDMxLS4yOTMsMS44NDIsMS44NDIsMCwwLDAtLjYzLS4xaC0uODIydjIuOWEuODQyLjg0MiwwLDAsMCwuMDc5LjM4LjU4LjU4LDAsMCwwLC4zLjI1NiwxLjg3LDEuODcsMCwwLDAsLjM1My4xcS4yMjQuMDQ2LjQ0Ni4wNzF2LjQ4MmgtNC40NnYtLjQ4MmwuNDQ5LS4wNTJhMS41MjUsMS41MjUsMCwwLDAsLjM5MS0uMDgzLjU0Ny41NDcsMCwwLDAsLjI5Mi0uMjQxLjg0Mi44NDIsMCwwLDAsLjA4Mi0uNHYtNi4xOGEuODY3Ljg2NywwLDAsMC0uMDczLS4zNjcuNTc1LjU3NSwwLDAsMC0uMy0uMjYyLDIuMzQxLDIuMzQxLDAsMCwwLS40MzEtLjEzNnEtLjI2OC0uMDYyLS40MDgtLjA4di0uNDgySDI4LjVaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+YCxcbiAgXCJTUUY6IFN0YXR1cyBRdW8gRnVuY3Rpb24gKEFybWEgMylcIjogYDxwYXRoIGQ9XCJNMjUsMjMuNUg3YTUuMDE1LDUuMDE1LDAsMCwxLTUtNXYtNmE1LjAxNSw1LjAxNSwwLDAsMSw1LTVIMjVhNS4wMTUsNS4wMTUsMCwwLDEsNSw1djZhNS4wMTUsNS4wMTUsMCwwLDEtNSw1WlwiLz48cGF0aCBkPVwiTTcsMTkuNDYxYTQuODEsNC44MSwwLDAsMS0xLjQxNC0uMiw1LjA1Miw1LjA1MiwwLDAsMS0xLjExMS0uNDcybC0uNC40MzJoLS41TDMuNSwxNi4wNTJINGE4LjQ2Miw4LjQ2MiwwLDAsMCwuNDMxLjk1Myw0LjYzOCw0LjYzOCwwLDAsMCwuNjA2LjksMy4xNzcsMy4xNzcsMCwwLDAsLjguNjc1LDEuOTg1LDEuOTg1LDAsMCwwLDEuMDI5LjI2LDEuNjcyLDEuNjcyLDAsMCwwLDEuMjE2LS40MTFBMS4zODIsMS4zODIsMCwwLDAsOC41LDE3LjM5MWExLjE1NiwxLjE1NiwwLDAsMC0uMzU5LS44NjIsMi45NDUsMi45NDUsMCwwLDAtMS4xMTEtLjZxLS40OS0uMTY3LS45LS4zMXQtLjc3My0uMjkyYTIuNTgsMi41OCwwLDAsMS0xLjIzOS0xLjAwNywyLjczLDIuNzMsMCwwLDEtLjQwNS0xLjQ2NSwyLjQwNiwyLjQwNiwwLDAsMSwuMjEtLjk4NiwyLjYwOCwyLjYwOCwwLDAsMSwuNjEyLS44NSwyLjk2NywyLjk2NywwLDAsMSwuOTg1LS41NzUsMy43MjIsMy43MjIsMCwwLDEsMS4zMDYtLjIyMywzLjk4NCwzLjk4NCwwLDAsMSwxLjI4OC4yLDUuMTUxLDUuMTUxLDAsMCwxLC45NDQuNDA4bC4zNTYtLjM3aC41MDdsLjA0NywyLjk4OGgtLjVxLS4xNzUtLjQ4My0uNDExLS45ODdhNC4zMzIsNC4zMzIsMCwwLDAtLjUtLjgzOSwyLjMsMi4zLDAsMCwwLS42NTktLjU3MywxLjcyOSwxLjcyOSwwLDAsMC0uODc1LS4yMTRBMS40MzcsMS40MzcsMCwwLDAsNiwxMS4yMTJhMS4yMzMsMS4yMzMsMCwwLDAtLjQuOTM0LDEuMTQxLDEuMTQxLDAsMCwwLC4zNDcuODYsMi45NTEsMi45NTEsMCwwLDAsMS4wODIuNTg4cS40MzEuMTU0Ljg4LjMwOXQuOC4zYTIuODg1LDIuODg1LDAsMCwxLDEuMjg2Ljk1NSwyLjUxMiwyLjUxMiwwLDAsMSwuNDQsMS41MTIsMi42MzIsMi42MzIsMCwwLDEtLjkyNywxLjk4NSwzLjM2NywzLjM2NywwLDAsMS0xLjA3OS42QTQuMzkxLDQuMzkxLDAsMCwxLDcsMTkuNDYxWlwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPjxwYXRoIGQ9XCJNMTguOTIxLDExLjQzNGE0LjMzOCw0LjMzOCwwLDAsMSwuOTcxLDEuNDMyLDQuODM0LDQuODM0LDAsMCwxLC4zNTksMS45MTQsNC45NTgsNC45NTgsMCwwLDEtLjcyLDIuNjgsNC4wMzYsNC4wMzYsMCwwLDEtMi4wMzgsMS42NjEsMi4xNTEsMi4xNTEsMCwwLDAsLjQyLDEuMjcyLDEuMTY4LDEuMTY4LDAsMCwwLC45NS41MzcsMy41NjMsMy41NjMsMCwwLDAsLjU5Mi0uMDQzcS4yNTQtLjA0My40NTgtLjF2LjU0M2E1Ljc1Myw1Ljc1MywwLDAsMS0uOTg1LjMsNi4wNTQsNi4wNTQsMCwwLDEtMS4zNy4xNTEsMi4yMDYsMi4yMDYsMCwwLDEtMS42MTItLjYyMSwyLjU3NCwyLjU3NCwwLDAsMS0uNzA4LTEuNzMyQTQuNTc5LDQuNTc5LDAsMCwxLDEzLjcsMTlhNC4xODYsNC4xODYsMCwwLDEtMS4yNTMtLjkzMiw0LjM4OCw0LjM4OCwwLDAsMS0uODQyLTEuMzc3LDQuNzY5LDQuNzY5LDAsMCwxLS4zMTItMS43NTMsNS4yMzcsNS4yMzcsMCwwLDEsLjM0Ny0xLjk0OCw0LjUsNC41LDAsMCwxLC45NTMtMS41LDQuMTE5LDQuMTE5LDAsMCwxLDEuNDI1LS45NDIsNC44Niw0Ljg2LDAsMCwxLDMuNS0uMDA5QTQuMjQ3LDQuMjQ3LDAsMCwxLDE4LjkyMSwxMS40MzRabS0xLjUsNi4yNjZhNC44NTcsNC44NTcsMCwwLDAsLjM3OS0xLjI3Myw5Ljk4MSw5Ljk4MSwwLDAsMCwuMTE3LTEuNjA2LDEwLjUzNCwxMC41MzQsMCwwLDAtLjEtMS40OCw0LjkzNiw0LjkzNiwwLDAsMC0uMzQ3LTEuMjgyLDIuNDEsMi40MSwwLDAsMC0uNjY1LS45LDEuNTcxLDEuNTcxLDAsMCwwLTEuMDMyLS4zNCwxLjczLDEuNzMsMCwwLDAtMS42LDEuMDYsNi42MzQsNi42MzQsMCwwLDAtLjU0OCwyLjk5Myw5LjU4Myw5LjU4MywwLDAsMCwuMTIsMS41NTEsNC44LDQuOCwwLDAsMCwuMzc2LDEuMjczLDIuMjg2LDIuMjg2LDAsMCwwLC42NjUuODU2LDEuNTkxLDEuNTkxLDAsMCwwLC45OTEuMzA2LDEuNjExLDEuNjExLDAsMCwwLC45OTEtLjMwOUEyLjEzNSwyLjEzNSwwLDAsMCwxNy40MjMsMTcuN1pcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz48cGF0aCBkPVwiTTI4LjUsMTIuOGgtLjQ1NWEzLjkzLDMuOTMsMCwwLDAtLjYtMS4wODYsMS4zODUsMS4zODUsMCwwLDAtLjgxMi0uNjNjLS4xMTYtLjAxNi0uMjcyLS4wMzEtLjQ2NS0uMDQzcy0uMzczLS4wMTktLjUzNS0uMDE5SDI0LjM0OXYzLjQzM2guODIyYTEuOTY5LDEuOTY5LDAsMCwwLC42MDYtLjA4MywxLjA1NCwxLjA1NCwwLDAsMCwuNDU1LS4zLDEuNTkxLDEuNTkxLDAsMCwwLC4yODMtLjUxNiwyLjYzNSwyLjYzNSwwLDAsMCwuMTY2LS42MjFoLjQ0M3YzLjY4NmgtLjQ0M2EyLjQ3MSwyLjQ3MSwwLDAsMC0uMTgxLS42NzYsMi4wOTQsMi4wOTQsMCwwLDAtLjI2OC0uNTI4LDEuMDEyLDEuMDEyLDAsMCwwLS40MzEtLjI5MywxLjg0MiwxLjg0MiwwLDAsMC0uNjMtLjFoLS44MjJ2Mi45YS44NDIuODQyLDAsMCwwLC4wNzkuMzguNTguNTgsMCwwLDAsLjMuMjU2LDEuODcsMS44NywwLDAsMCwuMzUzLjFxLjIyNC4wNDYuNDQ2LjA3MXYuNDgyaC00LjQ2di0uNDgybC40NDktLjA1MmExLjUyNSwxLjUyNSwwLDAsMCwuMzkxLS4wODMuNTQ3LjU0NywwLDAsMCwuMjkyLS4yNDEuODQyLjg0MiwwLDAsMCwuMDgyLS40di02LjE4YS44NjcuODY3LDAsMCwwLS4wNzMtLjM2Ny41NzUuNTc1LDAsMCwwLS4zLS4yNjIsMi4zNDEsMi4zNDEsMCwwLDAtLjQzMS0uMTM2cS0uMjY4LS4wNjItLjQwOC0uMDh2LS40ODJIMjguNVpcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz5gLFxuICBcIlNRTFwiOiBgPHBhdGggZD1cIk04LjU2MiwxNS4yNTZBMjEuMTU5LDIxLjE1OSwwLDAsMCwxNiwxNi40NDlhMjEuMTU5LDIxLjE1OSwwLDAsMCw3LjQzOC0xLjE5NGMxLjg2NC0uNzI3LDIuNTI1LTEuNTM1LDIuNTI1LTJWOS43YTEwLjM1NywxMC4zNTcsMCwwLDEtMi4wODQsMS4wNzZBMjIuMjkzLDIyLjI5MywwLDAsMSwxNiwxMi4wNzhhMjIuMzYsMjIuMzYsMCwwLDEtNy44NzktMS4zQTEwLjI4LDEwLjI4LDAsMCwxLDYuMDM3LDkuN3YzLjU1QzYuMDM3LDEzLjcyNCw2LjcsMTQuNTI4LDguNTYyLDE1LjI1NlpcIiBzdHlsZT1cImZpbGw6I2ZmZGE0NFwiLz48cGF0aCBkPVwiTTguNTYyLDIxLjk2MWExNS42MTEsMTUuNjExLDAsMCwwLDIuNi43NDFBMjQuOSwyNC45LDAsMCwwLDE2LDIzLjE1NWEyNC45LDI0LjksMCwwLDAsNC44MzgtLjQ1MiwxNS42MTQsMTUuNjE0LDAsMCwwLDIuNi0uNzQxYzEuODY0LS43MjcsMi41MjUtMS41MzUsMi41MjUtMnYtMy4zOWExMC43MDYsMTAuNzA2LDAsMCwxLTEuNjkyLjgyNUEyMy40OSwyMy40OSwwLDAsMSwxNiwxOC43NGEyMy40OSwyMy40OSwwLDAsMS04LjI3MS0xLjM0OCwxMC44MjksMTAuODI5LDAsMCwxLTEuNjkyLS44MjVWMTkuOTZDNi4wMzcsMjAuNDI2LDYuNywyMS4yMzEsOC41NjIsMjEuOTYxWlwiIHN0eWxlPVwiZmlsbDojZmZkYTQ0XCIvPjxwYXRoIGQ9XCJNMTYsMzBjNS41LDAsOS45NjMtMS43NDQsOS45NjMtMy44OTRWMjMuMjY5YTEwLjUsMTAuNSwwLDAsMS0xLjUzNS43NjJsLS4xNTcuMDYzQTIzLjQ4NywyMy40ODcsMCwwLDEsMTYsMjUuNDQ1YTIzLjQyMiwyMy40MjIsMCwwLDEtOC4yNzEtMS4zNTFjLS4wNTQtLjAyLS4xMDYtLjA0My0uMTU3LS4wNjNhMTAuNSwxMC41LDAsMCwxLTEuNTM1LS43NjJ2Mi44MzdDNi4wMzcsMjguMjU2LDEwLjUsMzAsMTYsMzBaXCIgc3R5bGU9XCJmaWxsOiNmZmRhNDRcIi8+PGVsbGlwc2UgY3g9XCIxNlwiIGN5PVwiNS44OTRcIiByeD1cIjkuOTYzXCIgcnk9XCIzLjg5NFwiIHN0eWxlPVwiZmlsbDojZmZkYTQ0XCIvPmAsXG4gIFwiU3F1aXJyZWxcIjogYDxwYXRoIGQ9XCJNMTIuOTY2LDI3LjNhMTguOTI2LDE4LjkyNiwwLDAsMS01LjcwNy0uOTE1Yy0xLjgzMi0uNTkyLTQuMDQ0LTEuNTQtNC45MzEtMy42NDVhLjU1Ny41NTcsMCwwLDEtLjAyNS0uMDczLDEyLjIxNCwxMi4yMTQsMCwwLDEsLjc2My03LjUzMWMxLjUyMi00LjAwOCwzLjcxLTYuNzM5LDYuNS04LjExNmExMC40MjIsMTAuNDIyLDAsMCwxLDcuNi0uNTUsMTAuNDI2LDEwLjQyNiwwLDAsMSw2LjA0LDQuNjM5LDExLjA1NywxMS4wNTcsMCwwLDEsMS4wNTgsMi4zMjYsMTAuNjYsMTAuNjYsMCwwLDEtNS4zNzgsMTIuNjg5bC0uMDIuMDA5QTE0LjgzMiwxNC44MzIsMCwwLDEsMTIuOTY2LDI3LjNaXCIvPjxwYXRoIGQ9XCJNMjIuNzIsMTEuMzkzYTEwLjE0NCwxMC4xNDQsMCwwLDAtMTIuOS0zLjg2OUM2LjcsOS4wNjEsNC43ODQsMTIuMiwzLjU5MywxNS4zMzRhMTEuOSwxMS45LDAsMCwwLS43NDYsNy4xODdjLjc4MywxLjg2LDIuNzc5LDIuNzQ0LDQuNTgyLDMuMzI3YTE2LjIwNiwxNi4yMDYsMCwwLDAsMTEuMjEzLS4yMzJBMTAuMTEsMTAuMTEsMCwwLDAsMjMuNzI3LDEzLjYsMTAuNDg4LDEwLjQ4OCwwLDAsMCwyMi43MiwxMS4zOTNaXCIgc3R5bGU9XCJmaWxsOiNhMDVhMmNcIi8+PHBhdGggZD1cIk0xNS43ODIsNi43MkE4LjI2Myw4LjI2MywwLDAsMSwxNy42NCw4LjA4NCw5LjY1LDkuNjUsMCwwLDEsMTkuMDgsOS44YTkuMzE3LDkuMzE3LDAsMCwxLTEuNTMxLDExLjkyMUExNC45MzMsMTQuOTMzLDAsMCwxLDcuNjU2LDI0LjdhNy41ODEsNy41ODEsMCwwLDEtNC4xMzUtMS4xLDguNDU0LDguNDU0LDAsMCwwLDMuOTA3LDIuMjQxLDE2LjIwOCwxNi4yMDgsMCwwLDAsMTEuMjE0LS4yMzNBMTAuMTEyLDEwLjExMiwwLDAsMCwyMy43MjcsMTMuNmExMC40ODcsMTAuNDg3LDAsMCwwLTEuMDA3LTIuMjExQTkuOTczLDkuOTczLDAsMCwwLDE1Ljc4Miw2LjcyWlwiIHN0eWxlPVwiZmlsbC1vcGFjaXR5OjAuMzEzNzI1NTAxMjk4OTA0NFwiLz48cGF0aCBkPVwiTTIzLjQ3NiwxMy4zODlsLTEuMDYyLTIuODk1LjE1Mi0uMjM2QTYuODc1LDYuODc1LDAsMCwxLDI3LjUwOSw3LjdhMi4xNzcsMi4xNzcsMCwwLDEsMS44NzkuNTg4LDMuMzc2LDMuMzc2LDAsMCwxLC4xLDMuNzI5Yy0uMzQzLjI5Mi0uNzUxLjEyNC0xLjIyMi0uMDdhMi44MjEsMi44MjEsMCwwLDAtMi4xMzMtLjI3LDEwLjIsMTAuMiwwLDAsMC0yLjA0NywxLjIwOVpcIi8+PHBhdGggZD1cIk0yMy4wMzksMTAuNTYzYzEuMjIzLTEuOSw1LjEwNy0yLjkxNSw1LjkxMi0xLjkyM2EyLjk3LDIuOTcsMCwwLDEsLjE3NywyLjk0NWMtLjI0NS4yMDctMS44MzctMS4wNTktMy4yMjUtLjQyM0ExMC41NzQsMTAuNTc0LDAsMCwwLDIzLjczLDEyLjQ1WlwiIHN0eWxlPVwiZmlsbDojNTAyZDE2XCIvPjxwYXRoIGQ9XCJNMjkuNCw5LjcyN2EuOC44LDAsMCwxLS4yLjQ2OWMtLjIyOS4xNjItMS45LS41MDYtMy4yMzguMDU2YTEyLjQzOSwxMi40MzksMCwwLDAtMi4wNzEsMS4wN0wyMy4yLDEwLjM0Yy0uMDU3LjA3NC0uMTE2LjE0Ny0uMTY1LjIyM2wuNjkyLDEuODg2QTEwLjU3NywxMC41NzcsMCwwLDEsMjUuOSwxMS4xNjJjMS4zODgtLjYzNiwyLjk4LjYzMSwzLjIyNS40MjNBMi44NDYsMi44NDYsMCwwLDAsMjkuNCw5LjcyN1pcIiBzdHlsZT1cImZpbGwtb3BhY2l0eTowLjMxMzcyNTUwMTI5ODkwNDRcIi8+PHBhdGggZD1cIk0yMS4zODIsMjUuMThhMi4yMzYsMi4yMzYsMCwwLDEtMS4xNDctLjMyMy41NjMuNTYzLDAsMCwxLS4wODItLjg4OGMuNzM3LS42ODQuNjA3LTIuMTczLS40MS00LjY4OWEzNi41MjYsMzYuNTI2LDAsMCwwLTUuMTIzLTguODI1bC0uMzUtLjQzYy0xLjUxMi0xLjg2NS0yLjM1OC0yLjgxNS0zLjU1NC0yLjNhLjU2Mi41NjIsMCwwLDEtLjQxMy4wMTYuNTcxLjU3MSwwLDAsMS0uMzc3LS41OTIsMi4xMTksMi4xMTksMCwwLDEsMS40NjEtMmM0LjcxNi0xLjQ4MSwxMC4yNi44MTQsMTIuOTA1LDUuMzQ0YTExLjIsMTEuMiwwLDAsMS0xLjQzMSwxMy45OTFBMS45MTksMS45MTksMCwwLDEsMjEuMzgyLDI1LjE4WlwiLz48cGF0aCBkPVwiTTIzLjgxMiwxMC43ODNjLTIuNDQ0LTQuMTkyLTcuNzMtNi41MjgtMTIuMjctNS4wOTMtMS4wMDcuMjQ4LTEuMDY1LDEuNTM1LTEuMDUyLDEuNTE3LDEuNzc2LS43NjcsMi45NTMuOTE5LDQuNTY2LDIuODlhMzYuOSwzNi45LDAsMCwxLDUuMjA5LDguOTcxYy44OSwyLjIsMS40LDQuMjY3LjI3LDUuMzEyYTEuNSwxLjUsMCwwLDAsMS45MDktLjI3NEExMC42NDYsMTAuNjQ2LDAsMCwwLDIzLjgxMiwxMC43ODNaXCIgc3R5bGU9XCJmaWxsOiM1MDJkMTZcIi8+PHBhdGggZD1cIk0yMy42NDksMTAuMzQ2YTkuMzE0LDkuMzE0LDAsMCwxLTIuNTE4LDcuNzI1Yy0uNDU1LjQ4Ni0uODczLjE3Ny0xLjI2My4wNjMuMTM4LjMxMy4yNzEuNjI2LjQuOTM2Ljg5LDIuMiwxLjQsNC4yNjYuMjcxLDUuMzEyYTEuNSwxLjUsMCwwLDAsMS45MDktLjI3NEMyNi4wODksMjAuMTgzLDI2LjM1NywxNC45MTksMjMuNjQ5LDEwLjM0NlpcIiBzdHlsZT1cImZpbGwtb3BhY2l0eTowLjMxMzcyNTUwMTI5ODkwNDRcIi8+YCxcbiAgXCJTdGFuXCI6IGA8dGl0bGU+ZmlsZV90eXBlX3N0YW48L3RpdGxlPjxwYXRoIGQ9XCJNMTYsMkExNCwxNCwwLDAsMCw1LjY4OCwyNS40NjljMS43LS41MTQsMy40MTEtLjk5Miw0LjgwNi0xLjM1Nyw0LjAzNy0xLjA1NCwxMC45NDgtMi44MzYsMTEuOTQ2LTUuMDgyLS4yOC43OC0xLjIxOCwyLjg3LTEuMjE4LDIuODctMS4yNzksMS4yNDctNy4wOSwyLjYzMS0xMC45MTcsMy4zNjctMS4yMi4yMzUtMi42MTQuNTA3LTQuMDI2LjgwNkExNCwxNCwwLDAsMCwyOC40NjcsOS42MjhjLTIuNTI2LjQwOC0xMC41LDEuODU0LTEyLjUzOSwyLjMxNS0yLjI1NS41MDktNi43ODksMS40MzMtNy42OTQsMi45OTNDOC44LDEzLjUsMTAuNDkyLDkuNzQ0LDEwLjQ5Miw5Ljc0NGMxLjIxNi0yLDYuNi0zLjQyNSwxMC4zNTgtNC40NjMuODc2LS4yNDIsMS45MjItLjUzOSwzLjAyMy0uODU4QTEzLjkzNCwxMy45MzQsMCwwLDAsMTYsMlpcIiBzdHlsZT1cImZpbGw6I2IyMDAxZFwiLz48cGF0aCBkPVwiTTguMjIzLDE0Ljk4N2MtLjI1MiwxLjE3NSwzLjUyLDIuMzEzLDYuOTIxLDMuMzg5YTI2LjM2MiwyNi4zNjIsMCwwLDEsNS42NjcsMi4xOTIsMy4wODUsMy4wODUsMCwwLDAsMS42NjItMS42MTRjLjM3Ny0xLjQ4OS0zLjAxMy0zLjM5My01LjI3NC00LjIyOWEzMy4zMzcsMzMuMzM3LDAsMCwxLTQuNDA3LTIuMDQyYy00LjMxNiwxLjE0My00LjU2OSwyLjMtNC41NjksMi4zWlwiIHN0eWxlPVwiZmlsbDojNTkwODE1XCIvPmAsXG4gIFwiU3RhdGEgQWRvXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCIxNlwiIHkxPVwiMlwiIHgyPVwiMTZcIiB5Mj1cIjMwXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjOGFhN2MwXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzNjNmU4ZlwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3N0YXRhPC90aXRsZT48cmVjdCB4PVwiMlwiIHk9XCIyXCIgd2lkdGg9XCIyOFwiIGhlaWdodD1cIjI4XCIgcng9XCIxLjU1NlwiIHJ5PVwiMS41NTZcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cmVjdCB4PVwiMTMuMTcxXCIgeT1cIjYuMDE1XCIgd2lkdGg9XCI1Ljc1NlwiIGhlaWdodD1cIjUuNzU2XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHJlY3QgeD1cIjIwLjMyNlwiIHk9XCI2LjAxNVwiIHdpZHRoPVwiNS43NTZcIiBoZWlnaHQ9XCI1Ljc1NlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxyZWN0IHg9XCIyMC4zMjZcIiB5PVwiMTMuMTcxXCIgd2lkdGg9XCI1Ljc1NlwiIGhlaWdodD1cIjUuNzU2XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHJlY3QgeD1cIjEzLjE3MVwiIHk9XCIxMy4xNzFcIiB3aWR0aD1cIjUuNzU2XCIgaGVpZ2h0PVwiNS43NTZcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cmVjdCB4PVwiNi4wMTVcIiB5PVwiMTMuMTcxXCIgd2lkdGg9XCI1Ljc1NlwiIGhlaWdodD1cIjUuNzU2XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHJlY3QgeD1cIjYuMDE1XCIgeT1cIjIwLjMyNlwiIHdpZHRoPVwiNS43NTZcIiBoZWlnaHQ9XCI1Ljc1NlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxyZWN0IHg9XCIxMy4xNzFcIiB5PVwiMjAuMzI2XCIgd2lkdGg9XCI1Ljc1NlwiIGhlaWdodD1cIjUuNzU2XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcbiAgXCJTdHlsdXNcIjogYDx0aXRsZT5maWxlX3R5cGVfc3R5bHVzPC90aXRsZT48cGF0aCBkPVwiTTYuMzE1LDIwLjc3NmMuNzI2LS44NjkuODEyLTEuNzY2LjI0OS0zLjQzMi0uMzU2LTEuMDU0LS45NDctMS44NjUtLjUxMy0yLjUyMS40NjMtLjcsMS40NDUtLjAyMS42MjcuOTExbC4xNjQuMTE0Yy45ODMuMTE0LDEuNDY3LTEuMjMyLjczMy0xLjYxNi0xLjkzNy0xLjAxMS0zLjYzMS45MzMtMi44ODQsMy4xODMuMzIuOTU0Ljc2OSwxLjk2NS40MDYsMi43N0ExLjc5NCwxLjc5NCwwLDAsMSwzLjc3MywyMS4zYy0uODQ3LjA0My0uMjg1LTEuOS42OTEtMi4zODUuMDg1LS4wNDMuMjA2LS4xLjA5My0uMjQyYTIuMTM0LDIuMTM0LDAsMCwwLTIuMzE0LDEuMkMxLjA2MSwyMi4xMjEsNC40ODUsMjIuOTU0LDYuMzE1LDIwLjc3NlpcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz48cGF0aCBkPVwiTTI3LjQ2MiwxNC4xNGMuMjc4LjY4NC43LDEuMzYuNDQ5LDEuOTU4LS4yMDYuNTEzLS40NzcuNzI2LS43NzYuNzc2LS40Mi4wNzEtLjMwNi0xLjI0Ni40MTMtMS42MzguMDY0LS4wMzYuMTU3LS4yMDYuMDcxLS4zMDZhMS42MzYsMS42MzYsMCwwLDAtMS43Ljk2MWMtLjgsMS42ODcsMS44MjMsMi4xNSwzLjExMi40OTEuNTEzLS42NjIuNTM0LTEuMzE3LjA0My0yLjUwNi0uMzEzLS43NTUtLjc5LTEuMzE3LS40OTEtMS44MTYuMzItLjUyNywxLjA4OS0uMDcxLjUxMy42MzRsLjEyOC4wNzFjLjc0OC4wNDMsMS4wNTQtLjk1NC40ODQtMS4yQTEuODM0LDEuODM0LDAsMCwwLDI3LjQ2MiwxNC4xNFpcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz48cGF0aCBkPVwiTTE3Ljk1LDEyLjMzOGMtLjUyLS40MTMtMS45NzkuMjc4LTIuMzkyLDEuM2ExNi4yMTMsMTYuMjEzLDAsMCwxLTIuMDQzLDQuMDM3Yy0uOC44NzYtLjg3Ni4yLS44LS4zMDZBMTUuMzI3LDE1LjMyNywwLDAsMSwxNC43LDEyLjY1MmMtLjIzNS0uMzQ5LTEuNzczLS4zLTIuODQxLDEuMzYtLjQuNjI3LTEuMzEsMi43MTMtMi4zMjEsNC4zNTgtLjIyMS4zNTYtLjUuMTA3LS4yODUtLjcyNmEzOS44LDM5LjgsMCwwLDEsMS44NzMtNS42ODIsMzkuMDcyLDM5LjA3MiwwLDAsMSw2LjkyMS0uODE5Yy4yNjMtLjA3MS40NDEtLjMwNiwwLS4zMmE0Ni43NzgsNDYuNzc4LDAsMCwwLTYuNTkzLjQ0MSw0LjkyMyw0LjkyMywwLDAsMSwxLjQ0NS0xLjk0NCwxLjc4NywxLjc4NywwLDAsMC0yLjI2NC43MTksMTIuMjg3LDEyLjI4NywwLDAsMC0uODE5LDEuNDUzLDI0LjE5NCwyNC4xOTQsMCwwLDAtMy45OC44NjJjLS43ODMuMy0uNywxLjI0Ni0uMjIxLDEuMDY4YTMxLjYzMSwzMS42MzEsMCwwLDEsMy44MTYtMS4xLDMwLjI5MiwzMC4yOTIsMCwwLDAtMS44NjUsNS42ODJjLS40NDEsMi40OTIsMS4xLDIuNDc4LDEuODU4LDEuNS44MTktMS4wNzUsMi41MjgtNC44NTYsMi43OTEtNS4yNTUuMDc4LS4xMzUuMTg1LS4wNjQuMTI4LjA1Ny0xLjkwOCwzLjgwOS0xLjc0NCw1LjI4My0uMiw0Ljk1NmE0LjkyOSw0LjkyOSwwLDAsMCwyLjIxNC0xLjk2NWMuMDY0LS4xNS4yLS4xMzUuMTcxLS4wNzEtMS4yMSwzLjE0LTIuNzQ4LDUuNjgyLTMuNzgxLDYuNDc5LS45NC43MTktMS42MzgtLjg0LDEuNjg3LTMuMDc2LjQ5MS0uMzM1LjI2My0uNzktLjI5Mi0uNjM0aDBhMjkuNzkzLDI5Ljc5MywwLDAsMC04Ljc4NiwzLjMyNWMtLjE2NC4xMTQtLjMxMy4yMDYtLjMwNi40NDEuMDA3LjEzNS4yNDIuMDg1LjM1Ni4wMTRBMjIuNzcxLDIyLjc3MSwwLDAsMSwxMS4xLDIwLjlhLjE1OC4xNTgsMCwwLDAsLjExNC4wMDdjLjEyMS0uMDI4LjExNC4wMzYuMDM2LjA4NS0uMTc4LjEtLjM1Ni4xOTItLjQuMjA2LTEuNzY2LjY5MS0yLjgzNCwyLjIxNC0yLjQ1NiwyLjk5LjMyLjY2OSwyLjA1MS40MjcsMi44NjktLjAxNCwyLjAwOC0xLjA4OSwzLjQ2OC0zLjIyNSw0LjQ2NC02LjE3M0MxNi42LDE1LjM4NiwxNy42OTMsMTIuNDI0LDE3Ljk1LDEyLjMzOFpcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz48cGF0aCBkPVwiTTI5LjYyLDE4LjM2OWE0OC4xNDUsNDguMTQ1LDAsMCwwLTEzLjQyOS45NjhjLS45MjYuMjQyLS42NjkuNzMzLS4yLjY0MS4wMDcsMCwuMjA2LS4wNS4yMTQtLjA1YTQyLjI3OSw0Mi4yNzksMCwwLDEsMTIuMzc1LS4yNDJDMjkuMDE0LDE5Ljc2NSwzMC4zMTcsMTguNDYyLDI5LjYyLDE4LjM2OVpcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz48cGF0aCBkPVwiTTE4Ljg2MSwxNy45ODVjLjkxMS0uNDU2LDIuMjY0LTMuMjc1LDMuMTU0LTQuODIuMDY0LS4xMTQuMTc4LS4wMjEuMTE0LjA1Ny0yLjI1LDMuODczLTEuMyw0LjMyMi0uNDA2LDQuMjY1LDEuMTg5LS4wNzEsMi4yODYtMS43OCwyLjUyOC0yLjE2NS4xLS4xNS4xNTctLjAyOC4xLjA3OC0uMDU3LjE3OC0uMjYzLjQ5MS0uNDU2LjkxOS0uMjcxLjYwNS4wMTQuODQuMjQ5Ljk0Ny4zNy4xNzgsMS4zODEuMDY0LDEuNTM4LS41NTUtMS4wMTEtLjAyMSwxLjQxLTQuNzkyLDEuNjU5LTUuMDg0YTEuNzE4LDEuNzE4LDAsMCwwLTIuMi45NzVjLTEuMDE4LDIuMDE1LTEuODczLDMuNjM4LTIuNDA3LDMuNjY3LTEuMDQuMDU3LDEuMi00LjQ5MywxLjU1OS00LjYzNS0uMjIxLS4zMi0xLjYzOC0uMTg1LTIuNDI4LDEuMDQtLjI4NS40NDEtMi4wMjIsMy41MTctMi40NDksNC4wMjMtLjc1NS45LS44MTIuMTI4LS42LS43NjlhMTAuNTY5LDEwLjU2OSwwLDAsMSwuMzQ5LTEuMTMyLDUuMzI0LDUuMzI0LDAsMCwxLDEuMzYtMS44NDRjMi4yLTIuNDQyLDMuNDYtNC40MjIsMi45NjItNS4yLS40NDEtLjY5MS0xLjkxNS0uMzg0LTIuODYyLDEuMDQtMS43NDQsMi42MTMtMy4zNTQsNi4xOTUtMy41Niw3LjgzMlMxOC4wNTYsMTguMzgzLDE4Ljg2MSwxNy45ODVabS45MjYtNC43OTJjLjA3OC0uMTc4LjEyOC0uMjI4LjI2My0uNTI3aDBBMjQuOTM0LDI0LjkzNCwwLDAsMSwyMi40OTIsOC4yOGMuNDItLjQ0MSwxLjAxMS4xNTctLjA1NywxLjc5NGExNi40NjIsMTYuNDYyLDAsMCwxLTIuMTE1LDIuNjQydi4wMDdjLS4yLjIyMS0uMzc3LjQwNi0uNDU2LjUxM0MxOS44MDgsMTMuMzA3LDE5Ljc0NCwxMy4yOTIsMTkuNzg3LDEzLjE5M1pcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz5gLFxuICBcIlNWR1wiOiBgPHBhdGggZD1cIk03LjY3NCwxNC40ODhhMi4yMTgsMi4yMTgsMCwxLDAsMCwzLjEzN0gyNC4zMjZhMi4yMTgsMi4yMTgsMCwxLDAsMC0zLjEzN1pcIiBzdHlsZT1cImZpbGw6I2ZmYjEzYjtzdHJva2U6IzAwMDtzdHJva2Utd2lkdGg6My43MzAwMDAwMTkwNzM0OXB4XCIvPjxwYXRoIGQ9XCJNMTEuMjIyLDkuMDZBMi4yMTgsMi4yMTgsMCwxLDAsOSwxMS4yNzhMMjAuNzc4LDIzLjA1MkEyLjIxOCwyLjIxOCwwLDEsMCwyMywyMC44MzRaXCIgc3R5bGU9XCJmaWxsOiNmZmIxM2I7c3Ryb2tlOiMwMDA7c3Ryb2tlLXdpZHRoOjMuNzMwMDAwMDE5MDczNDlweFwiLz48cGF0aCBkPVwiTTE3LjU2OCw3LjczYTIuMjE4LDIuMjE4LDAsMSwwLTMuMTM3LDBWMjQuMzgyYTIuMjE4LDIuMjE4LDAsMSwwLDMuMTM3LDBaXCIgc3R5bGU9XCJmaWxsOiNmZmIxM2I7c3Ryb2tlOiMwMDA7c3Ryb2tlLXdpZHRoOjMuNzMwMDAwMDE5MDczNDlweFwiLz48cGF0aCBkPVwiTTIzLDExLjI3OEEyLjIxOCwyLjIxOCwwLDEsMCwyMC43NzgsOS4wNkw5LDIwLjgzNGEyLjIxOCwyLjIxOCwwLDEsMCwyLjIxOCwyLjIxOFpcIiBzdHlsZT1cImZpbGw6I2ZmYjEzYjtzdHJva2U6IzAwMDtzdHJva2Utd2lkdGg6My43MzAwMDAwMTkwNzM0OXB4XCIvPjxwYXRoIGQ9XCJNNy42NzQsMTQuNDg4YTIuMjE4LDIuMjE4LDAsMSwwLDAsMy4xMzdIMjQuMzI2YTIuMjE4LDIuMjE4LDAsMSwwLDAtMy4xMzdaXCIgc3R5bGU9XCJmaWxsOiNmZmIxM2JcIi8+PHBhdGggZD1cIk0xMS4yMjIsOS4wNkEyLjIxOCwyLjIxOCwwLDEsMCw5LDExLjI3OEwyMC43NzgsMjMuMDUyQTIuMjE4LDIuMjE4LDAsMSwwLDIzLDIwLjgzNFpcIiBzdHlsZT1cImZpbGw6I2ZmYjEzYlwiLz48cGF0aCBkPVwiTTE3LjU2OCw3LjczYTIuMjE4LDIuMjE4LDAsMSwwLTMuMTM3LDBWMjQuMzgyYTIuMjE4LDIuMjE4LDAsMSwwLDMuMTM3LDBaXCIgc3R5bGU9XCJmaWxsOiNmZmIxM2JcIi8+PHBhdGggZD1cIk0yMywxMS4yNzhBMi4yMTgsMi4yMTgsMCwxLDAsMjAuNzc4LDkuMDZMOSwyMC44MzRhMi4yMTgsMi4yMTgsMCwxLDAsMi4yMTgsMi4yMThaXCIgc3R5bGU9XCJmaWxsOiNmZmIxM2JcIi8+PHBhdGggZD1cIk0yLDE2LjA1NkgzMFYyNS45NWE0LjAzNSw0LjAzNSwwLDAsMS00LjEwNiw0LjEwNkg2LjEwNkE0LjAzNSw0LjAzNSwwLDAsMSwyLDI1Ljk1WlwiLz48cGF0aCBkPVwiTTYuMiwyMy4wNDVBMy42MjgsMy42MjgsMCwxLDEsMTIuNCwyMC40OEgxMC4yN0ExLjUsMS41LDAsMSwwLDcuNywyMS41NDFoMGExLjYsMS42LDAsMCwwLDEuMDYyLjQ0MWgwYTQuMTE4LDQuMTE4LDAsMCwxLDIuNTY2LDEuMDYzaDBhMy42MjgsMy42MjgsMCwxLDEtNi4xOTQsMi41NjVINy4yNjRBMS41LDEuNSwwLDEsMCw5LjgzLDI0LjU1aDBhMS45NDgsMS45NDgsMCwwLDAtMS4wNjMtLjQ0aDBBNC40NjUsNC40NjUsMCwwLDEsNi4yLDIzLjA0NVpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE5LjY1MSwxNi44NTIsMTcuMDg1LDI5LjI0SDE0Ljk2TDEyLjQsMTYuODUySDE0LjUybDEuNSw3LjI1NSwxLjUtNy4yNTVaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0yMy4yOCwyMS45ODNoMy42Mjh2My42MjhoMGEzLjYyOCwzLjYyOCwwLDEsMS03LjI1NywwaDBWMjAuNDhoMGEzLjYyOCwzLjYyOCwwLDAsMSw3LjI1NywwSDI0Ljc4M2ExLjUsMS41LDAsMSwwLTMuMDA1LDB2NS4xM2gwYTEuNSwxLjUsMCwwLDAsMy4wMDUsMGgwdi0xLjVoLTEuNVYyMS45ODNaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcbiAgXCJTd2lmdFwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiLTEzNC40OTRcIiB5MT1cIi0xNzEuODJcIiB4Mj1cIi0xMzQuNDk3XCIgeTI9XCItMTcxLjg5XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMjQwLCAwLCAwLCAtMjA1LjYsIDMyMjk1LCAtMzUzMTIuNTg1KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2Y4ODUzNVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNmZDIyMjFcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9zd2lmdDwvdGl0bGU+PHBhdGggZD1cIk0xOS40MjIsNC4wMDdzNi4yMTcsMy41NTQsNy44NDQsOS4yYzEuNDY2LDUuMS4yOTIsNy41MzQuMjkyLDcuNTM0YTguOTE1LDguOTE1LDAsMCwxLDEuNzQyLDIuOCw0LjgyNSw0LjgyNSwwLDAsMSwuMjksNC40NTNzLS4xLTIuMDgtMy4yLTIuNTExYy0yLjg0MS0uNC0zLjg3NCwyLjM2Ni05LjMsMi4yMzJBMTguNDM1LDE4LjQzNSwwLDAsMSwyLDE5LjM1NEM0LjY1MSwyMC44LDguMTI0LDIzLjA0NSwxMi40NDksMjIuN3M1LjIyOC0xLjY3NCw1LjIyOC0xLjY3NEE2Ni45LDY2LjksMCwwLDEsNC44OTEsNy42NDNjMy40LDIuODQ1LDExLjgyMiw4LjUwNywxMS42MjYsOC4zNjNBNzUuODI2LDc1LjgyNiwwLDAsMSw4LjA5Miw2LjI0UzIwLjcyOCwxNi42MjksMjEuNzQ1LDE2LjU2M2MuNDE4LS44NjEsMi41NzktNS4zMTgtMi4zMjQtMTIuNTU3WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPmAsXG4gIFwiU3lzdGVtZCBjb25maWd1cmF0aW9uIGZpbGVcIjogYDxwYXRoIGQ9XCJNMiwxMnY4SDUuMjU2VjE4Ljc2OUgzLjNWMTMuMjMxSDUuMjU2VjEyWlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMjYuNzQ0LDEydjEuMjMxSDI4Ljd2NS41MzhIMjYuNzQ0VjIwSDMwVjEyWlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMTcuNjI4LDE2bDUuMjEtMi43Njl2NS41MzhaXCIgc3R5bGU9XCJmaWxsOiMzMGQ0NzVcIi8+PGVsbGlwc2UgY3g9XCIxMi4wOTNcIiBjeT1cIjE2XCIgcng9XCIyLjkzXCIgcnk9XCIyLjc2OVwiIHN0eWxlPVwiZmlsbDojMzBkNDc1XCIvPmAsXG4gIFwiVDQgdGVtcGxhdGluZ1wiOiBgPHBhdGggZD1cIk0xOS41NDUsNi4wMzVIMTMuMjdWMjRIOC4zVjYuMDM1SDIuMDU1VjJoMTcuNDlaXCIgc3R5bGU9XCJmaWxsOiMxZTg4ZTVcIi8+PHBhdGggZD1cIk0yNy41NjcsMTBWMjIuNjA4aDIuNFYyNS45aC0yLjRWMzBIMjMuNTUxVjI1LjlIMTQuODM0VjIyLjQ1NXExLjE1OC0xLjMsMi40LTIuODM4dDIuNC0zLjE3M3ExLjE1OC0xLjYzMiwyLjE1NS0zLjI4NUEzMi45MjUsMzIuOTI1LDAsMCwwLDIzLjQ4MSwxMFpNMTguNzgxLDIyLjYwOGg0Ljc3VjE1LjYyMXEtLjQ4OC45MDctMS4wNiwxLjgzNHQtMS4yLDEuODI3cS0uNjI4LjktMS4yNjksMS43NDNUMTguNzgxLDIyLjYwOFpcIiBzdHlsZT1cImZpbGw6IzFlODhlNVwiLz5gLFxuICBcIlQ0IFRleHQgVGVtcGxhdGVzIChDIylcIjogYDxwYXRoIGQ9XCJNMTkuNTQ1LDYuMDM1SDEzLjI3VjI0SDguM1Y2LjAzNUgyLjA1NVYyaDE3LjQ5WlwiIHN0eWxlPVwiZmlsbDojMWU4OGU1XCIvPjxwYXRoIGQ9XCJNMjcuNTY3LDEwVjIyLjYwOGgyLjRWMjUuOWgtMi40VjMwSDIzLjU1MVYyNS45SDE0LjgzNFYyMi40NTVxMS4xNTgtMS4zLDIuNC0yLjgzOHQyLjQtMy4xNzNxMS4xNTgtMS42MzIsMi4xNTUtMy4yODVBMzIuOTI1LDMyLjkyNSwwLDAsMCwyMy40ODEsMTBaTTE4Ljc4MSwyMi42MDhoNC43N1YxNS42MjFxLS40ODguOTA3LTEuMDYsMS44MzR0LTEuMiwxLjgyN3EtLjYyOC45LTEuMjY5LDEuNzQzVDE4Ljc4MSwyMi42MDhaXCIgc3R5bGU9XCJmaWxsOiMxZTg4ZTVcIi8+YCxcbiAgXCJUNCBUZXh0IFRlbXBsYXRlcyAoVkIpXCI6IGA8cGF0aCBkPVwiTTE5LjU0NSw2LjAzNUgxMy4yN1YyNEg4LjNWNi4wMzVIMi4wNTVWMmgxNy40OVpcIiBzdHlsZT1cImZpbGw6IzFlODhlNVwiLz48cGF0aCBkPVwiTTI3LjU2NywxMFYyMi42MDhoMi40VjI1LjloLTIuNFYzMEgyMy41NTFWMjUuOUgxNC44MzRWMjIuNDU1cTEuMTU4LTEuMywyLjQtMi44Mzh0Mi40LTMuMTczcTEuMTU4LTEuNjMyLDIuMTU1LTMuMjg1QTMyLjkyNSwzMi45MjUsMCwwLDAsMjMuNDgxLDEwWk0xOC43ODEsMjIuNjA4aDQuNzdWMTUuNjIxcS0uNDg4LjkwNy0xLjA2LDEuODM0dC0xLjIsMS44MjdxLS42MjguOS0xLjI2OSwxLjc0M1QxOC43ODEsMjIuNjA4WlwiIHN0eWxlPVwiZmlsbDojMWU4OGU1XCIvPmAsXG4gIFwiVGNsXCI6IGA8cGF0aCBkPVwiTTIxLjk0MiwyLjg3NmMuMDQsMi40NjgtLjAzMyw0LjkxLTIuMTY5LDcuMjNsLS4wNzkuMDg5aC4xMTlsLjg3My4wMTNjLTEuNDE4LDIuOTUtMi4zNDEsNS44OTItNC4zOCw4LjgzbC0uMDczLjEwNi4xMjYtLjAyMywxLjA3OC0uMmE1Ljg1MSw1Ljg1MSwwLDAsMS0zLjQ4NCwzLjY1Yy0uMzktNS40NTUsMi4zMzMtMTAuMjcsNC42NDUtMTUuMDcxbC4wMDctLjAxMy0uMDg2LS4wNmMtMy43ODYsNC4yMzMtNS40OTEsMTAuMi02LjEzNiwxNS4xMjdhNC41ODIsNC41ODIsMCwwLDEtMi4xNDUtMi45ODhsLjkuMzc3LjA5My4wNC0uMDItLjFjLS42ODEtMy4wMjguMzc2LTUuMiwxLjQtOC4wNTZsLjczNy40OTMuMDg2LjA2LDAtLjFjLS4wNTgtMi4zMiwxLjUtNC42NDksMy41NzctNi43MjdsLjI4OC43Ny4wNC4xLjA1Ni0uMS42MzEtMS4wNTEsMC0uMDA3QTYuMSw2LjEsMCwwLDEsMjEuOTQyLDIuODc2WlwiIHN0eWxlPVwiZmlsbDojYzNiMTVmXCIvPjxwYXRoIGQ9XCJNMjEuOTQ4LDIuODc1YTYuMTMxLDYuMTMxLDAsMCwwLTMuOTI2LDIuMzg4bDAsLjAwNy0uNjMxLDEuMDUxLS4wNTYuMS0uMDQtLjFMMTcsNS41NDRjLTIuMDcyLDIuMDc4LTMuNjM1LDQuNDA3LTMuNTc3LDYuNzI3bDAsLjEtLjA4Ni0uMDYtLjczNy0uNDkzYy0xLjAyNSwyLjg1Ni0yLjA4Myw1LjAyOS0xLjQsOC4wNTZsLjAyLjEtLjA5My0uMDQtLjg4Ni0uMzc0YzAsLjAxOC4wMDcuMDM1LjAxLjA1M2E0LjUzMyw0LjUzMywwLDAsMCwyLjEyNiwyLjkzMmMuMDUtLjM4MS4xMDUtLjc3MS4xNjktMS4xNjQtMS41NDMtMy42MTQtLjItNi4yNzEuNDA3LTguNjYxbC45MzkuNTQyYy0uMTMtMi4yMzgsMS4xODQtNC42NTEsMi44OTMtNi43NTdsLjUuODczQzE4LjU1NSw0Ljc2OSwxOS41NiwzLjcyLDIxLjk0OCwyLjg3NVpcIiBzdHlsZT1cImZpbGw6I2VmZjFjYjtzdHJva2U6I2VmZjFjYlwiLz48cGF0aCBkPVwiTTIyLjUxOCwybC0uMDU2LjAxYy0yLjA4Mi4zNjMtNC4xMjEsMS4xMjgtNS4wMTUsMi45NTlsLS4zNzctLjY1OC0uMDMzLS4wNi0uMDUuMDVhMjAuODUsMjAuODUsMCwwLDAtMi45MzksMy41QTUuOTM5LDUuOTM5LDAsMCwwLDEyLjgzNSwxMWwtLjUzMi0uNjY0LS4wNTMtLjA2Ni0uMDM2LjA3NmEyNy41MzUsMjcuNTM1LDAsMCwwLTEuNjkzLDQuNyw2LjczLDYuNzMsMCwwLDAtLjE1OSwzLjcxOWwtLjg3Ni0uNTA5LS4wNzMtLjA0My0uMDA3LjA4NmE1LjUyOSw1LjUyOSwwLDAsMCwyLjAxNyw0Ljg0M2wtLjk3Mi4yNDEtLjIuMDUuMi4wNTNhNC4yNTgsNC4yNTgsMCwwLDEsMS40NTUuNiwxLjMyNSwxLjMyNSwwLDAsMSwuNTE2LDEuM1YyOC4xbC4wMS4wMTMsMS4yMTcsMS43NDUuMS4xMzlWMjUuNzE5YTMuNDY2LDMuNDY2LDAsMCwxLC42MjEtMS40ODRBMS42MzksMS42MzksMCwwLDEsMTUuNSwyMy43bC4xODItLjAyMy0uMTY1LS4wNzYtLjY0MS0uM2E5LjExMiw5LjExMiwwLDAsMCwzLjY5My01LjMyMmwuMDItLjA4Ni0uMDgzLjAyMy0uNzkzLjIxNWExMS42NjksMTEuNjY5LDAsMCwwLDIuMDg5LTMuNUMyMC41MTIsMTMsMjEuMTgsMTEuMTY2LDIxLjcyOCw5LjdsLjAzLS4wNzktLjA4My4wMDctLjYxMi4wNDNhNi42NTUsNi42NTUsMCwwLDAsMS4zODItMy41MjcsMTcuMDM5LDE3LjAzOSwwLDAsMCwuMDc5LTQuMDg2Wm0tLjU3NS44NzZjLjA0LDIuNDY4LS4wMzMsNC45MS0yLjE2OSw3LjIzbC0uMDc5LjA4OWguMTE5bC44NzMuMDEzYy0xLjQxOCwyLjk1LTIuMzQxLDUuODkyLTQuMzgsOC44M2wtLjA3My4xMDYuMTI2LS4wMjMsMS4wNzgtLjJhNS44NTEsNS44NTEsMCwwLDEtMy40ODQsMy42NWMtLjM5LTUuNDU1LDIuMzMzLTEwLjI3LDQuNjQ1LTE1LjA3MWwuMDA3LS4wMTMtLjA4Ni0uMDZjLTMuNzg2LDQuMjMzLTUuNDkxLDEwLjItNi4xMzYsMTUuMTI3YTQuNTgyLDQuNTgyLDAsMCwxLTIuMTQ1LTIuOTg4bC45LjM3Ny4wOTMuMDQtLjAyLS4xYy0uNjgxLTMuMDI4LjM3Ni01LjIsMS40LTguMDU2bC43MzcuNDkzLjA4Ni4wNiwwLS4xYy0uMDU4LTIuMzIsMS41LTQuNjQ5LDMuNTc3LTYuNzI3bC4yODguNzcuMDQuMS4wNTYtLjEuNjMxLTEuMDUxLDAtLjAwN0E2LjEsNi4xLDAsMCwxLDIxLjk0MiwyLjg3NlpcIi8+YCxcbiAgXCJUZW1wbGF0ZSBUb29sa2l0IDJcIjogYDxwYXRoIGQ9XCJNOC45MDcsMjMuMDIxSDguODc4YTMuMzA1LDMuMzA1LDAsMCwxLTIuMDExLS42NjFBMi41NjEsMi41NjEsMCwwLDEsNS44MywyMC4zMzRWMTYuMUg0LjI4OGEzLjA1LDMuMDUsMCwwLDEtMi43MzgtMS42OSwzLjMsMy4zLDAsMCwxLC40NDEtMy41MywyLjI2NSwyLjI2NSwwLDAsMSwxLjgxNS0uOWg5LjY1YTMuMDUsMy4wNSwwLDAsMSwyLjczOCwxLjY5LDMuMywzLjMsMCwwLDEtLjQ0MSwzLjUzLDIuMjY1LDIuMjY1LDAsMCwxLTEuODE1LjlIMTEuOTU1djQuMjMxYTIuNTYxLDIuNTYxLDAsMCwxLTEuMDM3LDIuMDI2QTMuMzA1LDMuMzA1LDAsMCwxLDguOTA3LDIzLjAyMVpNNC4yNjQsMTEuNjM2YTEuMzksMS4zOSwwLDAsMC0xLjM4OCwxLjM4OHYuMDMzYTEuMzksMS4zOSwwLDAsMCwxLjM4OCwxLjM4OEg3LjQ4N3Y1Ljg4MWMwLC41NzIuNjI0LDEuMDM3LDEuMzksMS4wMzdoLjAyOWMuNzY3LDAsMS4zOS0uNDY1LDEuMzktMS4wMzdWMTQuNDQ2aDMuMjIzYTEuMzksMS4zOSwwLDAsMCwxLjM4OC0xLjM4OHYtLjAzM2ExLjM5LDEuMzksMCwwLDAtMS4zODgtMS4zODhaXCIgc3R5bGU9XCJmaWxsOiMwMTVkOWFcIi8+PHBhdGggZD1cIk0xNC45ODEsMTIuOTUzdi4wMzNhMS41MzMsMS41MzMsMCwwLDEtMS41MzMsMS41MzNIMTAuMzd2NS43MzdhMS4zOTMsMS4zOTMsMCwwLDEtMS41MzUsMS4xODFIOC44MDZhMS4zOTMsMS4zOTMsMCwwLDEtMS41MzUtMS4xODFWMTQuNTE4SDQuMTkyQTEuNTMzLDEuNTMzLDAsMCwxLDIuNjYsMTIuOTg2di0uMDMzQTEuNTMzLDEuNTMzLDAsMCwxLDQuMTkyLDExLjQyaDkuMjU3QTEuNTMzLDEuNTMzLDAsMCwxLDE0Ljk4MSwxMi45NTNabS00LjIyMyw5LjIyMmEyLjQxOCwyLjQxOCwwLDAsMCwuOTgtMS45MTJWMTUuODg4aDIuMTI3YTIuMTE0LDIuMTE0LDAsMCwwLDEuNy0uODQ2LDIuOTkyLDIuOTkyLDAsMCwwLTIuMTgtNC45OUgzLjczNWEyLjExNCwyLjExNCwwLDAsMC0xLjcuODQ2LDIuOTkyLDIuOTkyLDAsMCwwLDIuMTgsNC45OUg1Ljl2NC4zNzVhMi40MTgsMi40MTgsMCwwLDAsLjk4LDEuOTEyLDMuMTYsMy4xNiwwLDAsMCwxLjkyMy42MzFoLjAyOUEzLjE2LDMuMTYsMCwwLDAsMTAuNzU4LDIyLjE3NFpcIiBzdHlsZT1cImZpbGw6IzNiY2VmY1wiLz48cGF0aCBkPVwiTTIzLjYwNywyMy4wMjFoLS4wMjlhMy4zMDUsMy4zMDUsMCwwLDEtMi4wMTEtLjY2MSwyLjU2MSwyLjU2MSwwLDAsMS0xLjAzNy0yLjAyNlYxNi4xSDE4Ljk4OGEzLjA1LDMuMDUsMCwwLDEtMi43MzgtMS42OSwzLjMsMy4zLDAsMCwxLC40NDEtMy41MywyLjI2NSwyLjI2NSwwLDAsMSwxLjgxNS0uOWg5LjY1YTMuMDUsMy4wNSwwLDAsMSwyLjczOCwxLjY5LDMuMywzLjMsMCwwLDEtLjQ0MSwzLjUzLDIuMjY1LDIuMjY1LDAsMCwxLTEuODE1LjlIMjYuNjU1djQuMjMxYTIuNTYxLDIuNTYxLDAsMCwxLTEuMDM3LDIuMDI2QTMuMzA1LDMuMzA1LDAsMCwxLDIzLjYwNywyMy4wMjFaTTE4Ljk2NCwxMS42MzZhMS4zOSwxLjM5LDAsMCwwLTEuMzg4LDEuMzg4di4wMzNhMS4zOSwxLjM5LDAsMCwwLDEuMzg4LDEuMzg4aDMuMjIzdjUuODgxYzAsLjU3Mi42MjQsMS4wMzcsMS4zOSwxLjAzN2guMDI5Yy43NjcsMCwxLjM5LS40NjUsMS4zOS0xLjAzN1YxNC40NDZoMy4yMjNhMS4zOSwxLjM5LDAsMCwwLDEuMzg4LTEuMzg4di0uMDMzYTEuMzksMS4zOSwwLDAsMC0xLjM4OC0xLjM4OFpcIiBzdHlsZT1cImZpbGw6IzAxNWQ5YVwiLz48cGF0aCBkPVwiTTI5LjY4MSwxMi45NTN2LjAzM2ExLjUzMywxLjUzMywwLDAsMS0xLjUzMywxLjUzM0gyNS4wN3Y1LjczN2ExLjM5MywxLjM5MywwLDAsMS0xLjUzNSwxLjE4MWgtLjAyOWExLjM5MywxLjM5MywwLDAsMS0xLjUzNS0xLjE4MVYxNC41MThIMTguODkyYTEuNTMzLDEuNTMzLDAsMCwxLTEuNTMzLTEuNTMzdi0uMDMzYTEuNTMzLDEuNTMzLDAsMCwxLDEuNTMzLTEuNTMzaDkuMjU3QTEuNTMzLDEuNTMzLDAsMCwxLDI5LjY4MSwxMi45NTNabS00LjIyMyw5LjIyMmEyLjQxOCwyLjQxOCwwLDAsMCwuOTgtMS45MTJWMTUuODg4aDIuMTI3YTIuMTE0LDIuMTE0LDAsMCwwLDEuNy0uODQ2LDIuOTkyLDIuOTkyLDAsMCwwLTIuMTgtNC45OWgtOS42NWEyLjExNCwyLjExNCwwLDAsMC0xLjcuODQ2LDIuOTkyLDIuOTkyLDAsMCwwLDIuMTgsNC45OUgyMC42djQuMzc1YTIuNDE4LDIuNDE4LDAsMCwwLC45OCwxLjkxMiwzLjE2LDMuMTYsMCwwLDAsMS45MjMuNjMxaC4wMjlBMy4xNiwzLjE2LDAsMCwwLDI1LjQ1OCwyMi4xNzRaXCIgc3R5bGU9XCJmaWxsOiMzYmNlZmNcIi8+YCxcbiAgXCJUZVhcIjogYDxwYXRoIGQ9XCJNMTEuMzMzLDEzLjEyMmMtLjEyOC0xLjU2Mi0uMjQxLTIuNzU2LTIuMjg3LTIuNzU2SDcuOTF2OC40aDIuMTQ1di42MTFsLTMuMDgzLS4wMjktMy4wODIuMDI5di0uNjExSDYuMDM0di04LjRINC44ODRjLTIuMDQ2LDAtMi4xNTksMS4yMDgtMi4yODcsMi43NTZIMmwuMjg0LTMuMzY3aDkuMzYybC4yODQsMy4zNjdoLS42WlwiIHN0eWxlPVwiZmlsbDojY2ZjZmNmXCIvPjxwYXRoIGQ9XCJNMTkuMjg5LDIyLjUzSDEwLjQxVjIxLjkyaDEuNTA2VjEzLjQ2N0gxMC40MXYtLjYxMWg4LjYzN2wuNDEyLDMuMzY3aC0uNmMtLjIxMy0xLjgzMy0uNjgyLTIuNzU2LTIuODU1LTIuNzU2SDEzLjc5MVYxNy4yaC44MzhjMS4zNjQsMCwxLjUwNS0uNiwxLjUwNS0xLjY2MmguNnYzLjkzNWgtLjZjMC0xLjA4LS4xNDItMS42NjItMS41MDUtMS42NjJoLS44Mzh2NC4xMDZoMi4yMTZjMi40NzIsMCwzLTEuMTA4LDMuMy0zLjIyNWguNlpcIiBzdHlsZT1cImZpbGw6I2NmY2ZjZlwiLz48cGF0aCBkPVwiTTI3LjcyNywxOS4xODZjLS41NCwwLTEuOTYsMC0yLjQxNS4wMjlWMTguNmgxLjE3OWwtMi41NTctMy41NTItMi41MjksMy4zODFBNC4xLDQuMSwwLDAsMCwyMi43LDE4LjZ2LjYxMWMtLjM1NS0uMDI5LTEuNTc2LS4wMjktMi4wMTctLjAyOS0uNCwwLTEuNTQ4LDAtMS44NzUuMDI5VjE4LjZoLjM4M2E3LjQ1OSw3LjQ1OSwwLDAsMCwuODI0LS4wNDNjLjUtLjA0My41NC0uMDg1LjY2Ny0uMjU2TDIzLjUzNiwxNC41bC0zLjE1My00LjQxOEgxOVY5LjQ3Yy4zODQuMDI4LDEuNzkuMDI4LDIuMjczLjAyOC41ODIsMCwxLjkxOCwwLDIuNDI5LS4wMjh2LjYxMUgyMi41MjhsMi4xMTcsMi45NTUsMi4wNzQtMi43ODRhNC4xLDQuMSwwLDAsMC0xLjI5My0uMTdWOS40N2MuMzU2LjAyOCwxLjU5MS4wMjgsMi4wMzIuMDI4LjQsMCwxLjUzNCwwLDEuODYxLS4wMjh2LjYxMWgtLjM2OWE1LjI2NCw1LjI2NCwwLDAsMC0uODM4LjA0M2MtLjQ2OS4wNDMtLjUyNi4wNzEtLjY2Ny4yNTZsLTIuNCwzLjIxTDI4LjYzNiwxOC42SDMwdi42MTFDMjkuNjQ1LDE5LjE4NiwyOC4xODIsMTkuMTg2LDI3LjcyNywxOS4xODZaXCIgc3R5bGU9XCJmaWxsOiNjZmNmY2ZcIi8+YCxcbiAgXCJUZXh0aWxlXCI6IGA8cGF0aCBkPVwiTTI4LjY4MSwyNi4wNzVIMy4zMTlBMS4zMTcsMS4zMTcsMCwwLDEsMiwyNC43NTZWNy4yNDRBMS4zMTcsMS4zMTcsMCwwLDEsMy4zMTksNS45MjVIMjguNjgxQTEuMzE3LDEuMzE3LDAsMCwxLDMwLDcuMjQ0VjI0Ljc2QTEuMzE2LDEuMzE2LDAsMCwxLDI4LjY4MSwyNi4wNzVaXCIgc3R5bGU9XCJmaWxsOiNmZmU3YWNcIi8+PHBhdGggZD1cIk02LjA2NiwxMi44NDhhNC45ODcsNC45ODcsMCwwLDEsMS41MDgtLjY1OVYxMC42NjRhMy43LDMuNywwLDAsMSwuNzQzLS4zMyw3Ljg2OSw3Ljg2OSwwLDAsMSwxLjMyNy0uMzQ3aC42NDJ2Mi4zOTFoMi40ODRWMTMuNkgxMC4yODZ2NC44NDhhMy4xNzIsMy4xNzIsMCwwLDAsLjI5LDEuNjA5LDEuMDcsMS4wNywwLDAsMCwuOTcxLjQ0OCw3LjEyNyw3LjEyNywwLDAsMCwuNzYtLjA0OCwzLjMzOCwzLjMzOCwwLDAsMCwuNzgyLS4xOGwuMTMyLjYyYTIuMzg4LDIuMzg4LDAsMCwxLS41LjM1Niw1LjQ1Nyw1LjQ1NywwLDAsMS0uNzUyLjM1Niw1LjgzNyw1LjgzNywwLDAsMS0uOTIzLjI4MUE0Ljc2OSw0Ljc2OSwwLDAsMSwxMCwyMmEyLjM4NSwyLjM4NSwwLDAsMS0xLjgyNC0uNjM3LDIuOTQ3LDIuOTQ3LDAsMCwxLS42LTIuMDYyVjEzLjU5MUg2LjA2NlpcIi8+PHBhdGggZD1cIk0xNC42MDcsMjAuNDUzYTEuNDQ3LDEuNDQ3LDAsMCwxLC40MzEtMS4wOSwxLjU5MSwxLjU5MSwwLDAsMSwxLjE0Ny0uNDEzLDEuNjQ5LDEuNjQ5LDAsMCwxLDEuMTY1LjQxMywxLjQyMiwxLjQyMiwwLDAsMSwuNDUzLDEuMDksMS4zNjksMS4zNjksMCwwLDEtLjQ1MywxLjA4MSwxLjY5MiwxLjY5MiwwLDAsMS0xLjE2NS40LDEuNjEsMS42MSwwLDAsMS0xLjE0Ny0uNEExLjQyNywxLjQyNywwLDAsMSwxNC42MDcsMjAuNDUzWlwiLz5gLFxuICBcIlRPTUxcIjogYDxwYXRoIGQ9XCJNMjIuNzYsNi44M3YzLjI1aC01VjI1LjE3SDE0LjI2VjEwLjA4aC01VjYuODNaXCIgc3R5bGU9XCJmaWxsOiM3ZjdmN2ZcIi8+PHBhdGggZD1cIk0yLDJIOC4yVjUuMDlINS4zNHYyMS44SDguMlYzMEgyWlwiIHN0eWxlPVwiZmlsbDojYmZiZmJmXCIvPjxwYXRoIGQ9XCJNMzAsMzBIMjMuOFYyNi45MWgyLjg2VjUuMTFIMjMuOFYySDMwWlwiIHN0eWxlPVwiZmlsbDojYmZiZmJmXCIvPmAsXG4gIFwiVFNDb25maWdcIjogYDxwYXRoIGQ9XCJNMjMuODI3LDguMjQzQTQuNDI0LDQuNDI0LDAsMCwxLDI2LjA1LDkuNTI0YTUuODUzLDUuODUzLDAsMCwxLC44NTIsMS4xNDNjLjAxMS4wNDUtMS41MzQsMS4wODMtMi40NzEsMS42NjItLjAzNC4wMjMtLjE2OS0uMTI0LS4zMjItLjM1YTIuMDE0LDIuMDE0LDAsMCwwLTEuNjctMWMtMS4wNzctLjA3NC0xLjc3MS40OS0xLjc2NiwxLjQzM2ExLjMsMS4zLDAsMCwwLC4xNTMuNjY2Yy4yMzcuNDkuNjc3Ljc4NCwyLjA1OSwxLjM4MywyLjU0NCwxLjEsMy42MzYsMS44MTcsNC4zMSwyLjg0M2E1LjE1OCw1LjE1OCwwLDAsMSwuNDE2LDQuMzMzLDQuNzY0LDQuNzY0LDAsMCwxLTMuOTMyLDIuODE1LDEwLjksMTAuOSwwLDAsMS0yLjcwOC0uMDI4LDYuNTMxLDYuNTMxLDAsMCwxLTMuNjE2LTEuODg0LDYuMjc4LDYuMjc4LDAsMCwxLS45MjYtMS4zNzEsMi42NTUsMi42NTUsMCwwLDEsLjMyNy0uMjA4Yy4xNTgtLjA5Ljc1Ni0uNDM0LDEuMzItLjc2MWwxLjAyNC0uNi4yMTQuMzEyYTQuNzcxLDQuNzcxLDAsMCwwLDEuMzUsMS4yOTIsMy4zLDMuMywwLDAsMCwzLjQ1OC0uMTc1LDEuNTQ1LDEuNTQ1LDAsMCwwLC4yLTEuOTc0Yy0uMjc2LS40LS44NC0uNzI3LTIuNDQzLTEuNDIyYTguOCw4LjgsMCwwLDEtMy4zNDktMi4wNTUsNC42ODcsNC42ODcsMCwwLDEtLjk3Ni0xLjc3Nyw3LjExNiw3LjExNiwwLDAsMS0uMDYyLTIuMjY4LDQuMzMyLDQuMzMyLDAsMCwxLDMuNjQ0LTMuMzc0QTksOSwwLDAsMSwyMy44MjcsOC4yNDNaTTE1LjQ4NCw5LjcyNmwuMDExLDEuNDU0aC00LjYzVjI0LjMyOEg3LjZWMTEuMTgzSDIuOTdWOS43NTVhMTMuOTg2LDEzLjk4NiwwLDAsMSwuMDQtMS40NjZjLjAxNy0uMDIzLDIuODMyLS4wMzQsNi4yNDUtLjAyOGw2LjIxMS4wMTdaXCIgc3R5bGU9XCJmaWxsOiMwMDdhY2NcIi8+PHBhdGggZD1cIk0yNy4wNzUsMjUuMTA3bC4zNjMtLjM2MWMxLjY4LjA1NSwxLjcwNiwwLDEuNzgtLjE3N2wuNDYyLTEuMTI0LjAzNC0uMTA3LS4wMzgtLjA5M2MtLjAyLS4wNDktLjA4MS0uMi0xLjEzLTEuMnYtLjUyNmMxLjIxMS0xLjE2NiwxLjE4NS0xLjIyNiwxLjExNi0xLjRsLS40Ni0xLjEzNmMtLjA2OS0uMTctLjEtLjIzNy0xLjc2My0uMTkxbC0uMzY0LS4zNjdhOC4xMzgsOC4xMzgsMCwwLDAtLjA1Ny0xLjY1N2wtLjA0Ny0uMTA2LTEuMi0uNTI1Yy0uMTc3LS4wODEtLjIzOS0uMTEtMS4zNzIsMS4xMjRsLS41MDktLjAwOGMtMS4xNjctMS4yNDUtMS4yMjItMS4yMjMtMS40LTEuMTUybC0xLjExNS40NTJjLS4xNzUuMDcxLS4yMzYuMS0uMTY5LDEuNzlsLS4zNi4zNTljLTEuNjgtLjA1NS0xLjcsMC0xLjc3OC4xNzdMMTguNjA2LDIwbC0uMDM2LjEwOC4wMzguMDk0Yy4wMi4wNDguMDc4LjE5NCwxLjEzLDEuMnYuNTI1Yy0xLjIxMSwxLjE2Ni0xLjE4NCwxLjIyNi0xLjExNSwxLjRsLjQ1OSwxLjEzN2MuMDcuMTc0LjEuMjM2LDEuNzYzLjE5MmwuMzYzLjM3N2E4LjE2OSw4LjE2OSwwLDAsMCwuMDU1LDEuNjU0bC4wNDcuMTA3LDEuMjA4LjUyOGMuMTc2LjA3My4yMzYuMSwxLjM2Ni0xLjEzbC41MDkuMDA2YzEuMTY4LDEuMjQ3LDEuMjI4LDEuMjIzLDEuNCwxLjE1NGwxLjExMy0uNDVDMjcuMDgyLDI2LjgyNywyNy4xNDMsMjYuOCwyNy4wNzUsMjUuMTA3Wm0tNC43ODgtMi42MzJhMiwyLDAsMSwxLDIuNjE4LDEuMTRBMi4wMjMsMi4wMjMsMCwwLDEsMjIuMjg3LDIyLjQ3NVpcIiBzdHlsZT1cImZpbGw6Izk5YjhjNFwiLz5gLFxuICBcIlR3aWdcIjogYDxwYXRoIGQ9XCJNNC41NzQsNS40NjNjLjI2Mi40LDIuNS0xLjYwOCw0LjQ1NC0xLjE2MSwyLjA2MS40NzIsNC4wMTQsMy43MjQsNC44NDgsMTMuN2E0MC4xOCw0MC4xOCwwLDAsMSwzLjU0MSwzLjYxcS41My42MTQsMS4wMTMsMS4yMmExMS44NDcsMTEuODQ3LDAsMCwxLC4yMjktMS40LDEyLjMsMTIuMywwLDAsMSwxLjk4MS00LjRBMTkuMTUxLDE5LjE1MSwwLDAsMCwxNy4yNzIsNy45Yy0xLjAzLTEuNDQ1LTQuNi02LjQ3OC04LjU0Ni01Ljg0M0M2LjE4MiwyLjQ2NSw0LjMsNS4wNTQsNC41NzQsNS40NjNaXCIgc3R5bGU9XCJmaWxsOiM2M2JmNmFcIi8+PHBhdGggZD1cIk0yNC40LDMwYy0uMzItMi41NjctLjQ0OC00Ljc2LS41LTYuNDQ5LS4wOTQtMy4yMzIuMS00LjU0MS45LTUuNzU2LjE5My0uMjk1LDEuMjg4LTEuOTc1LDIuNTgtMS44NjMsMS40NjYuMTI4LDIuMjEzLDIuNDE0LDIuMzYyLDIuMzM3LjE3NS0uMDktLjM2LTMuNTQzLTIuNTMyLTQuNDMxLTIuNi0xLjA2My02LjMxMiwyLjA3LTcuOCw1LjE1NGExMi4yMjMsMTIuMjIzLDAsMCwwLS44NTcsMi44MSwzMi41NTUsMzIuNTU1LDAsMCwwLS43MSw4LjJaXCIgc3R5bGU9XCJmaWxsOiM3NGQ3NGRcIi8+PHBhdGggZD1cIk0yLjIzOCwxMy45MzVjLjE0NS0uNDQ3LDIuNDY4LS4yNTksNC41NC4yOTMsMi41LjY2Niw3LDIuMzQ0LDExLjY1MSw4LjYwNkExMi41NDQsMTIuNTQ0LDAsMCwxLDIwLjI3OSwzMEgxMC4zODZhMjEuODc1LDIxLjg3NSwwLDAsMC0uMTc1LTQuNjIsMTQuOSwxNC45LDAsMCwwLTIuNDU5LTcuMTU4QzUuNDQxLDE1LjE1OSwyLjA1NSwxNC41LDIuMjM4LDEzLjkzNVpcIiBzdHlsZT1cImZpbGw6Izc4ZGM1MFwiLz48cGF0aCBkPVwiTTE3LjMsMjEuMzIzYTEuNzUzLDEuNzUzLDAsMSwxLS41MTMtMS4yNEExLjc0OCwxLjc0OCwwLDAsMSwxNy4zLDIxLjMyM1pcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTIxLjk3NSwyMS4zMjNhMS43NTMsMS43NTMsMCwxLDEtLjUxMy0xLjI0QTEuNzQ4LDEuNzQ4LDAsMCwxLDIxLjk3NSwyMS4zMjNaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcbiAgXCJUeXBlU2NyaXB0XCI6IGA8cmVjdCB4PVwiMlwiIHk9XCIyXCIgd2lkdGg9XCIyOFwiIGhlaWdodD1cIjI4XCIgcng9XCIxLjMxMlwiIHN0eWxlPVwiZmlsbDojMzE3OGM2XCIvPjxwYXRoIGQ9XCJNMTguMjQ1LDIzLjc1OXYzLjA2OGE2LjQ5Miw2LjQ5MiwwLDAsMCwxLjc2NC41NzUsMTEuNTYsMTEuNTYsMCwwLDAsMi4xNDYuMTkyLDkuOTY4LDkuOTY4LDAsMCwwLDIuMDg4LS4yMTEsNS4xMSw1LjExLDAsMCwwLDEuNzM1LS43LDMuNTQyLDMuNTQyLDAsMCwwLDEuMTgxLTEuMjY2LDQuNDY5LDQuNDY5LDAsMCwwLC4xODYtMy4zOTQsMy40MDksMy40MDksMCwwLDAtLjcxNy0xLjExNyw1LjIzNiw1LjIzNiwwLDAsMC0xLjEyMy0uODc3LDEyLjAyNywxMi4wMjcsMCwwLDAtMS40NzctLjczNHEtLjYtLjI0OS0xLjA4LS40ODRhNS41LDUuNSwwLDAsMS0uODEzLS40NzksMi4wODksMi4wODksMCwwLDEtLjUxNi0uNTE4LDEuMDkxLDEuMDkxLDAsMCwxLS4xODEtLjYxOCwxLjAzOSwxLjAzOSwwLDAsMSwuMTYyLS41NzEsMS40LDEuNCwwLDAsMSwuNDU5LS40MzYsMi40MzksMi40MzksMCwwLDEsLjcyNi0uMjgzLDQuMjExLDQuMjExLDAsMCwxLC45NTYtLjEsNS45NDIsNS45NDIsMCwwLDEsLjgwOC4wNTgsNi4yOTIsNi4yOTIsMCwwLDEsLjg1Ni4xNzcsNS45OTQsNS45OTQsMCwwLDEsLjgzNi4zLDQuNjU3LDQuNjU3LDAsMCwxLC43NTEuNDIyVjEzLjlhNy41MDksNy41MDksMCwwLDAtMS41MjUtLjQsMTIuNDI2LDEyLjQyNiwwLDAsMC0xLjktLjEyOSw4Ljc2Nyw4Ljc2NywwLDAsMC0yLjA2NC4yMzUsNS4yMzksNS4yMzksMCwwLDAtMS43MTYuNzMzLDMuNjU1LDMuNjU1LDAsMCwwLTEuMTcxLDEuMjcxLDMuNzMxLDMuNzMxLDAsMCwwLS40MzEsMS44NDUsMy41ODgsMy41ODgsMCwwLDAsLjc4OSwyLjM0LDYsNiwwLDAsMCwyLjM5NSwxLjYzOXEuNjMuMjYsMS4xNzUuNTA5YTYuNDU4LDYuNDU4LDAsMCwxLC45NDIuNTE3LDIuNDYzLDIuNDYzLDAsMCwxLC42MjYuNTg1LDEuMiwxLjIsMCwwLDEsLjIzLjcxOSwxLjEsMS4xLDAsMCwxLS4xNDQuNTUyLDEuMjY5LDEuMjY5LDAsMCwxLS40MzUuNDQxLDIuMzgxLDIuMzgxLDAsMCwxLS43MjYuMjkyLDQuMzc3LDQuMzc3LDAsMCwxLTEuMDE4LjEwNSw1Ljc3Myw1Ljc3MywwLDAsMS0xLjk2OS0uMzVBNS44NzQsNS44NzQsMCwwLDEsMTguMjQ1LDIzLjc1OVptLTUuMTU0LTcuNjM4aDRWMTMuNTk0SDUuOTM4djIuNTI3SDkuOTJWMjcuMzc1aDMuMTcxWlwiIHN0eWxlPVwiZmlsbDojZmZmO2ZpbGwtcnVsZTpldmVub2RkXCIvPmAsXG4gIFwiVHlwb1NjcmlwdFwiOiBgPHBhdGggZD1cIk0yMy4wOTMsMjEuM2EzLjg0NywzLjg0NywwLDAsMS0xLjE4LjE2NWMtMy41NTUsMC04Ljc3OC0xMi40MjQtOC43NzgtMTYuNTU5LDAtMS41MjMuMzYyLTIuMDMxLjg3LTIuNDY2QzkuNjUzLDIuOTQzLDQuNDMsNC41MzksMi43NjEsNi41N2E0LjA0OCw0LjA0OCwwLDAsMC0uNTgsMi4zMjFDMi4xODEsMTUuMzQ4LDkuMDcyLDMwLDEzLjkzMywzMGMyLjI0OCwwLDYuMDQxLTMuNyw5LjE2LTguN1wiIHN0eWxlPVwiZmlsbDojZmY4NzAwXCIvPjxwYXRoIGQ9XCJNMjAuODIzLDJjNC41LDAsOSwuNzI1LDksMy4yNjQsMCw1LjE1MS0zLjI2NCwxMS4zODktNC45MzMsMTEuMzg5LTIuOTc0LDAtNi42NzMtOC4yNjktNi42NzMtMTIuNCwwLTEuODg2LjcyNS0yLjI0OSwyLjYxMS0yLjI0OVwiIHN0eWxlPVwiZmlsbDojZmY4NzAwXCIvPmAsXG4gIFwiVlwiOiBgPHBhdGggZD1cIk0yMC40NjcsMjkuMjg4LDI5Ljk1MiwyLjkxM2EuNS41LDAsMCwwLS41NjYtLjcyOEwyMS45MjcsMi45YTEuNDY0LDEuNDY0LDAsMCwwLTEuMTQxLjlMMTIuMDA3LDI5LjAwNmEuNTczLjU3MywwLDAsMCwuNTc4LjgxM2g3LjI2YS42NTcuNjU3LDAsMCwwLC41NzctLjRaXCIgc3R5bGU9XCJmaWxsOiM1MzZiOGFcIi8+PHBhdGggZD1cIk0yLjYxNCwyLjE4NWw3LjQ1OS43MTlhMS40NjYsMS40NjYsMCwwLDEsMS4xNDIuOUwyMC4xOCwyOS40MTNhLjI4Ni4yODYsMCwwLDEtLjI4OS40MDZIMTIuNTg1YTEuMzExLDEuMzExLDAsMCwxLTEuMTUyLS44MUwyLjA0OCwyLjkxM0EuNS41LDAsMCwxLDIuNjE0LDIuMTg1WlwiIHN0eWxlPVwiZmlsbDojNWQ4N2JmXCIvPmAsXG4gIFwiVmFsYVwiOiBgPHBhdGggZD1cIk0xMi41MDksMTcuMTkzYy0uMTY1LTYuODM2LS4zMjUtMTIuNDU1LS4zNTctMTIuNDg3QTcuOTE2LDcuOTE2LDAsMCwwLDkuODc5LDUuODc0LDcuNjA2LDcuNjA2LDAsMCwwLDcuMzI0LDkuMTg4YTguNDIyLDguNDIyLDAsMCwwLS41ODcsMy41NDMsNC42NjUsNC42NjUsMCwwLDAsLjIsMS45NjIsMy40MTcsMy40MTcsMCwwLDEsLjE4Mi41NmMtLjAxMi4wMDktLjMzOC0uMDE4LS43MjQtLjA2MS0xLjg2OC0uMjA3LTIuNzg2LTEuMDUtMy0yLjc1N0E2LjMxMiw2LjMxMiwwLDAsMSw0Ljg1LDcuNzE5YTE1LjEzNCwxNS4xMzQsMCwwLDEsOC40MTQtNS4xNjMsMTIuODkxLDEyLjg5MSwwLDAsMSwyLjU0Mi0uMjM1bDEuNzQ4LS4wNS4wNTksMi41MDZjLjAzMiwxLjM3OC4xLDYuMzU4LjE2MSwxMS4wNjdzLS4yNTIsOC4yOS0uMjE5LDguNEMxOS41LDE3Ljg3OSwyMiwxMy4wNzMsMjQuMzY3LDYuMjUzbDEuNDI3LTMuOTgzSDI4LjU0Yy0uMDIyLjA2My0yLjc1MSw2LjUtNS41MTQsMTMuOTE2bC01LjQ3MywxMy41NUgxMi45NzZDMTIuOTc2LDI3LjkwNiwxMi41MzUsMTguNDg2LDEyLjUwOSwxNy4xOTNaXCIgc3R5bGU9XCJmaWxsOiM0MDM3NTdcIi8+PHBhdGggZD1cIk0xNy43MzIsMzBIMTIuNzEzdi0uMjYzYzAtMS4xMzctLjE3LTUuMTkyLS4zMDctOC40NTItLjA4MS0xLjkyOS0uMTUtMy42LS4xNjEtNC4wODctLjE1Ni02LjQ3OS0uMjg2LTExLS4zMzYtMTIuMTYzYTExLjY3NCwxMS42NzQsMCwwLDAtMS44NzQsMS4wNDksNy4zNDgsNy4zNDgsMCwwLDAtMi40NjYsMy4yQTguMTQ2LDguMTQ2LDAsMCwwLDcsMTIuNzMxLDQuMzcsNC4zNywwLDAsMCw3LjE4NSwxNC42Yy4yMTUuNTY5LjI3My43MjMuMS44NTktLjA5My4wNzMtLjEwNy4wODQtLjkxNi0uMDA3LTEuOTc2LS4yMTktMy0xLjE2Ny0zLjIzNC0yLjk4NkE2LjU2OCw2LjU2OCwwLDAsMSw0LjY0LDcuNTYxLDE1LjQzOSwxNS40MzksMCwwLDEsMTMuMiwyLjMsMTMuMTc2LDEzLjE3NiwwLDAsMSwxNS44LDIuMDU4TDE3LjgxMSwybC4wNjUsMi43N2MuMDMyLDEuMzkyLjEwNiw2LjQ2MS4xNjEsMTEuMDcuMDMxLDIuNjE2LS4wNTIsNC45MTUtLjEyNCw2LjQzLjkzMS0yLjc2MywxLjk1OC01LjI3LDMuMDMzLTcuOSwxLjA0My0yLjU0NywyLjEyMi01LjE4LDMuMTczLTguMjA3bDEuNDkxLTQuMTZoMy4zbC0uMTI1LjM1MWMwLC4wMDctLjAzMS4wNzYtLjA4NC4yLTEuMSwyLjYyMi0zLjI1OSw3Ljg4OS01LjQzLDEzLjcxN1ptLTQuNDk1LS41MjZoNC4xNGw1LjQwNy0xMy4zODZjMi4xMjQtNS43LDQuMjQzLTEwLjg3Niw1LjM2Mi0xMy41NTVIMjUuOTc5TDI0LjYxNCw2LjM0MmMtMS4wNTUsMy4wMzgtMi4xMzcsNS42NzgtMy4xODMsOC4yMzEtMS4zMTEsMy4yLTIuNTUsNi4yMjYtMy42MjYsOS43NDdsLS4yNTUuODMxLS4yNDgtLjgzM2EzLjI3NCwzLjI3NCwwLDAsMSwuMDIxLS44MzljLjA3NC0xLjM1LjIyOS00LjE1OC4xODgtNy42MzMtLjA1NS00LjYwNy0uMTI5LTkuNjc0LS4xNjEtMTEuMDY0TDE3LjMsMi41NDFsLTEuNDg0LjA0M2ExMi43MjksMTIuNzI5LDAsMCwwLTIuNDkuMjI4QTE0Ljg4NywxNC44ODcsMCwwLDAsNS4wNiw3Ljg3N2E2LjA3MSw2LjA3MSwwLDAsMC0xLjQsNC41MjRjLjIsMS41OCwxLjAyOCwyLjMzNiwyLjc3LDIuNTI5bC4zMzMuMDM1Yy0uMDE5LS4wNTQtLjA0MS0uMTE0LS4wNjYtLjE3OWE0Ljg5Myw0Ljg5MywwLDAsMS0uMjE5LTIuMDU1LDguNyw4LjcsMCwwLDEsLjYtMy42MzgsNy44ODMsNy44ODMsMCwwLDEsMi42NDQtMy40M2MuMDIyLS4wMTYsMi4yMzItMS41MjUsMi42MTUtMS4xNDIuMDkyLjA5Mi4xMzEuMTMxLjQzMywxMi42NjZoMGMuMDEuNDg1LjA4LDIuMTQ5LjE2LDQuMDc2QzEzLjA2LDI0LjMxMywxMy4yMTcsMjguMDYsMTMuMjM3LDI5LjQ3NFpcIiBzdHlsZT1cImZpbGw6I2M4YzhjOFwiLz5gLFxuICBcIlZCLk5ldFwiOiBgPHBhdGggZD1cIk02LjY3LDcuODM2LDksMTguOTE1LDExLjMzNiw3LjgzNkgxNkwxMS4zMzYsMjQuMTY0SDYuNjcyTDIsNy44MzZaXCIgc3R5bGU9XCJmaWxsOiMwMDUxOWFcIi8+PHBhdGggZD1cIk0xOC4zMzEsNy44MzZoNy42YTQuMDgsNC4wOCwwLDAsMSwyLjksMS43NDksMy43OCwzLjc4LDAsMCwxLC41NzEsMi4wNCwzLjk4NSwzLjk4NSwwLDAsMS0uNTcxLDIuMDM0LDQuMTA4LDQuMTA4LDAsMCwxLTIuMzQxLDEuNzYzLDQuMSw0LjEsMCwwLDEsMi45MjksMS43NTYsMy44LDMuOCwwLDAsMSwuNTgsMi4xLDQuNjYzLDQuNjYzLDAsMCwxLS41NzksMi41NDYsNS4wNDcsNS4wNDcsMCwwLDEtMy41LDIuMzM4SDE4LjMzMVpNMjMsMTQuMjUyaDEuMTY2YTEuNzU0LDEuNzU0LDAsMCwwLDAtMy41SDIzWm0wLDdIMjQuMzlhMi4wNDcsMi4wNDcsMCwwLDAsMC00LjA4OUgyM1pcIiBzdHlsZT1cImZpbGw6IzAwNTE5YVwiLz5gLFxuICBcIlZCQVwiOiBgPHBvbHlnb24gcG9pbnRzPVwiMTAuNDU3IDExLjA5MiAxNi4wMTQgMTMuODM5IDE2LjAxNCAxOC4zMDcgMTAuNDU3IDE1LjM4MiAxMC40NTcgMTEuMDkyXCIgc3R5bGU9XCJmaWxsOiM2NDgzYzBcIi8+PHBhdGggZD1cIk0xNi4yLDE4LjYxM2wtNS45MjYtMy4xMlYxMC44TDE2LjIsMTMuNzI0Wk0xMC42NDIsMTUuMjcsMTUuODMsMThWMTMuOTUzbC01LjE4OC0yLjU2NFpcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTYuMzcxIDEzLjgzOSAxNi4zNzEgMTguMzA3IDIxLjMxNSAxNS44MTQgMjEuMzE1IDExLjM1NCAxNi4zNzEgMTMuODM5XCIgc3R5bGU9XCJmaWxsOiM2NDgzYzBcIi8+PHBhdGggZD1cIk0xNi4xODYsMTguNjA3VjEzLjcyNWw1LjMxMy0yLjY3djQuODczWm0uMzY5LTQuNjU1djQuMDU1TDIxLjEzLDE1LjdWMTEuNjUzWlwiLz48cG9seWdvbiBwb2ludHM9XCIxMC43MDMgMTAuNzk3IDE2LjE4NiAxMy41OCAyMS4wODIgMTEuMDY0IDE1Ljc3NyA4LjM4OSAxMC43MDMgMTAuNzk3XCIgc3R5bGU9XCJmaWxsOiM2NDgzYzBcIi8+PHBhdGggZD1cIk0xNi4xODcsMTMuNzg4bC01LjktMyw1LjUtMi42MDgsNS43MDksMi44NzlaTTExLjEyMiwxMC44bDUuMDY0LDIuNTcsNC40OS0yLjMwOC00LjktMi40NzFaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE4Ljk1NyAxNS44MjkgMjQuNTE1IDE4LjU3NSAyNC41MTUgMjMuMDQzIDE4Ljk1NyAyMC4xMTggMTguOTU3IDE1LjgyOVwiIHN0eWxlPVwiZmlsbDojOTUyNzgxXCIvPjxwYXRoIGQ9XCJNMjQuNywyMy4zNDlsLTUuOTI2LTMuMTJ2LTQuN0wyNC43LDE4LjQ2Wm0tNS41NTctMy4zNDMsNS4xODgsMi43MzFWMTguNjg5bC01LjE4OC0yLjU2NFpcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjQuODcxIDE4LjU3NSAyNC44NzEgMjMuMDQzIDI5LjgxNSAyMC41NSAyOS44MTUgMTYuMDkgMjQuODcxIDE4LjU3NVwiIHN0eWxlPVwiZmlsbDojOTUyNzgxXCIvPjxwYXRoIGQ9XCJNMjQuNjg3LDIzLjM0M1YxOC40NjFMMzAsMTUuNzkxdjQuODczWm0uMzY5LTQuNjU1djQuMDU1bDQuNTc1LTIuMzA4VjE2LjM4OVpcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTkuMjAzIDE1LjU0NiAyNC42ODcgMTguMzI5IDI5LjU4MyAxNS44MTIgMjQuMzY0IDEzLjM0NiAxOS4yMDMgMTUuNTQ2XCIgc3R5bGU9XCJmaWxsOiM5NTI3ODFcIi8+PHBhdGggZD1cIk0yNC42ODcsMTguNTM2bC01LjkyLTMuMDA1LDUuNi0yLjM4N0wzMCwxNS44MDVaTTE5LjY0LDE1LjU2bDUuMDQ2LDIuNTYxLDQuNDc5LTIuMy00LjgwNi0yLjI3WlwiLz48cG9seWdvbiBwb2ludHM9XCIyLjE5IDE1LjQ5NiA3Ljc0OCAxOC4yNDMgNy43NDggMjIuNzExIDIuMTkgMTkuNzg2IDIuMTkgMTUuNDk2XCIgc3R5bGU9XCJmaWxsOiNkODdiMzBcIi8+PHBhdGggZD1cIk03LjkzMiwyMy4wMTcsMi4wMDYsMTkuOVYxNS4ybDUuOTI2LDIuOTI5Wk0yLjM3NSwxOS42NzRsNS4xODgsMi43MzFWMTguMzU3TDIuMzc1LDE1Ljc5M1pcIi8+PHBvbHlnb24gcG9pbnRzPVwiOC4xMDQgMTguMjQzIDguMTA0IDIyLjcxMSAxMy4wNDggMjAuMjE4IDEzLjA0OCAxNS43NTggOC4xMDQgMTguMjQzXCIgc3R5bGU9XCJmaWxsOiNkODdiMzBcIi8+PHBhdGggZD1cIk03LjkyLDIzLjAxMVYxOC4xMjlsNS4zMTMtMi42N3Y0Ljg3M1ptLjM2OS00LjY1NXY0LjA1NUwxMi44NjQsMjAuMVYxNi4wNTdaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIuNDM2IDE1LjIxMyA3LjkyIDE3Ljk5NyAxMi44MTYgMTUuNDggNy41OTcgMTMuMDE0IDIuNDM2IDE1LjIxM1wiIHN0eWxlPVwiZmlsbDojZDg3YjMwXCIvPjxwYXRoIGQ9XCJNNy45MiwxOC4yLDIsMTUuMmw1LjYtMi4zODcsNS42MzIsMi42NjFaTTIuODczLDE1LjIyOGw1LjA0NiwyLjU2MSw0LjQ3OS0yLjMtNC44MDYtMi4yN1pcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTAuODc1IDE2LjI5NiAxNi40MzIgMTkuMDQyIDE2LjQzMiAyMy41MTEgMTAuODc1IDIwLjU4NSAxMC44NzUgMTYuMjk2XCIgc3R5bGU9XCJmaWxsOiNlMGQ0MDBcIi8+PHBhdGggZD1cIk0xNi42MTcsMjMuODE2LDEwLjY5MSwyMC43VjE2bDUuOTI2LDIuOTI5Wk0xMS4wNiwyMC40NzRsNS4xODgsMi43MzFWMTkuMTU3TDExLjA2LDE2LjU5M1pcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTYuNzg5IDE5LjA0MiAxNi43ODkgMjMuNTExIDIxLjczMyAyMS4wMTcgMjEuNzMzIDE2LjU1NyAxNi43ODkgMTkuMDQyXCIgc3R5bGU9XCJmaWxsOiNlMGQ0MDBcIi8+PHBhdGggZD1cIk0xNi42LDIzLjgxMVYxOC45MjlsNS4zMTMtMi42N3Y0Ljg3M1ptLjM2OS00LjY1NXY0LjA1NUwyMS41NDksMjAuOVYxNi44NTdaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjExLjEyMSAxNi4wMDEgMTYuNjA1IDE4Ljc4NCAyMS41MDEgMTYuMjY3IDE2LjE5NiAxMy41OTMgMTEuMTIxIDE2LjAwMVwiIHN0eWxlPVwiZmlsbDojZTBkNDAwXCIvPjxwYXRoIGQ9XCJNMTYuNjA1LDE4Ljk5MWwtNS45LTMsNS41LTIuNjA4LDUuNzA5LDIuODc5Wk0xMS41NCwxNi4wMDZsNS4wNjQsMi41Nyw0LjQ5LTIuMzA4LTQuOS0yLjQ3MVpcIi8+YCxcbiAgXCJWZWxvY2l0eVwiOiBgPHBhdGggZD1cIk0xNi4yNDUsMjQuMTg3QTguMzUyLDguMzUyLDAsMSwxLDI0LjYsMTUuODM1LDguMzYyLDguMzYyLDAsMCwxLDE2LjI0NSwyNC4xODdabTAtMTQuNzYyYTYuNDEsNi40MSwwLDEsMCw2LjQxLDYuNDFBNi40MTcsNi40MTcsMCwwLDAsMTYuMjQ1LDkuNDI1WlwiLz48cG9seWdvbiBwb2ludHM9XCIyOS4xMzIgOC41NTEgMjUuNDUxIDYuNTMxIDI1LjQ1MSA3LjQ3NCAxNS44MjEgNy40NzQgMTUuODIxIDkuNDI0IDI1LjQ1MSA5LjQyNCAyNS40NTEgMTAuNTcxIDI5LjEzMiA4LjU1MVwiIHN0eWxlPVwiZmlsbDojMjYyNjkyXCIvPjxwb2x5Z29uIHBvaW50cz1cIjguOTg0IDIgNi45NjQgNS42ODcgNy45MDYgNS42ODcgNy45MDYgMTUuMzI4IDkuODU3IDE1LjMyOCA5Ljg1NyA1LjY4NyAxMS4wMDQgNS42ODcgOC45ODQgMlwiIHN0eWxlPVwiZmlsbDojMjYyNjkzXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIzLjcwNSAzMCAyMS42ODUgMjYuMjQzIDIyLjYyOCAyNi4yNDMgMjIuNjI4IDE2LjQxNyAyNC41NzggMTYuNDE3IDI0LjU3OCAyNi4yNDMgMjUuNzI1IDI2LjI0MyAyMy43MDUgMzBcIiBzdHlsZT1cImZpbGw6IzI2MjY5M1wiLz48cG9seWdvbiBwb2ludHM9XCIyLjg2OCAyMy4zMiA2LjYzNCAyMS4zIDYuNjM0IDIyLjI0MiAxNi40ODQgMjIuMjQyIDE2LjQ4NCAyNC4xOTIgNi42MzQgMjQuMTkyIDYuNjM0IDI1LjM0IDIuODY4IDIzLjMyXCIgc3R5bGU9XCJmaWxsOiMyNjI2OTJcIi8+YCxcbiAgXCJWZXJpbG9nXCI6IGA8cGF0aCBkPVwiTTI5LjAwNywxNy40aC4wMzdhMS40NDksMS40NDksMCwwLDAsLjkzOC0uMzE2LDEuNDczLDEuNDczLDAsMCwwLC41MTktMS4wMzFWMTUuOWExLjQxMywxLjQxMywwLDAsMC0xLjM3Ni0xLjNoLS4wMDljLS42ODcsMC0xLjM3NCwwLTIuMDYyLDBIMjUuNVYxMS45NTZsMy41MTMsMGguMDM0QTEuNDExLDEuNDExLDAsMCwwLDMwLjUsMTAuNmwwLS4wOSwwLS4wMzJhMS40MTIsMS40MTIsMCwwLDAtLjY0Ni0xLjEsMS40NTUsMS40NTUsMCwwLDAtLjgzNS0uMjI1SDI1LjQ1NmEyLjk2LDIuOTYsMCwwLDAtLjI3OC0xLjAzNCwyLjkwOSwyLjkwOSwwLDAsMC0xLjctMS40NjEsMi42ODQsMi42ODQsMCwwLDAtLjYyOS0uMTNWNC45NDdjMC0uNjksMC0xLjM4LDAtMi4wNjNBMS40MTQsMS40MTQsMCwwLDAsMjEuNDgxLDEuNWgtLjExNmExLjQsMS40LDAsMCwwLTEuMzE5LDEuMzg4cTAsMS4xNTQsMCwyLjMwNlY2LjVIMTcuNFY0Ljk4MWMwLS43LDAtMS40LDAtMi4wODdBMS40MSwxLjQxLDAsMCwwLDE2LjA1MywxLjVIMTUuOWExLjQwOCwxLjQwOCwwLDAsMC0xLjMsMS4zODNjMCwuNjg4LDAsMS4zNzYsMCwyLjA2NFY2LjUwOHEtMS4zMTksMC0yLjYzOSwwVjQuODg4YzAtLjY2NiwwLTEuMzMyLDAtMS45ODlhMS4zNjYsMS4zNjYsMCwwLDAtLjQtLjk3NSwxLjQsMS40LDAsMCwwLS45ODQtLjQyNEgxMC41QTEuNDEsMS40MSwwLDAsMCw5LjE1OSwyLjg4MWMwLC42ODMsMCwxLjM2NiwwLDIuMDQ5djEuNmEyLjkzMywyLjkzMywwLDAsMC0yLjQ2NiwxLjksMi44NzgsMi44NzgsMCwwLDAtLjE2MS43MjZINC45NTdjLS42OTMsMC0xLjM4NiwwLTIuMDczLDBIMi44NzZBMS40MTMsMS40MTMsMCwwLDAsMS41LDEwLjV2LjA5NWExLjQxNywxLjQxNywwLDAsMCwuNTc1LDEuMDkxLDEuNDYzLDEuNDYzLDAsMCwwLC44ODcuMjczaC4wMTdsMy41MjIsMFYxNC42SDQuOTQ4Yy0uNjg2LDAtMS4zNzUsMC0yLjA1NywwQTEuNDI4LDEuNDI4LDAsMCwwLDEuNSwxNS45MTNWMTYuMWExLjQsMS40LDAsMCwwLDEuMzg2LDEuM2MuNzExLDAsMS40MjMsMCwyLjEzNSwwSDYuNVYyMC4wNWwtLjI5MiwwYy0uNjEzLS4wMDctMS4yMjYsMC0xLjgzOCwwSDMuMDg3YTEuNjMzLDEuNjMzLDAsMCwwLS45MTguMjExQTEuNDM3LDEuNDM3LDAsMCwwLDEuNSwyMS40VjIxLjVhMS40MTcsMS40MTcsMCwwLDAsMS4zNzUsMS4zMzdoLjAwNXEuNjQ1LDAsMS4yOSwwSDYuNTQ2YTIuODMyLDIuODMyLDAsMCwwLDEuOTc4LDIuNSwyLjcxMiwyLjcxMiwwLDAsMCwuNjMxLjEyOHYxLjYyYzAsLjY3OCwwLDEuMzU0LDAsMi4wMjVhMS40LDEuNCwwLDEsMCwyLjgtLjA5MmwwLTMuNTI3SDE0LjZ2My41MTZBMS40MTQsMS40MTQsMCwwLDAsMTUuOTQ3LDMwLjVIMTYuMWExLjQxMSwxLjQxMSwwLDAsMCwxLjMtMS4zODVxLjAwNi0xLjA2NiwwLTIuMTMxVjI1LjVoMi42NDRWMjkuMUExLjQyMywxLjQyMywwLDAsMCwyMS40LDMwLjVoLjExOWExLjQwOCwxLjQwOCwwLDAsMCwxLjE2LS43NDEsMS42NDMsMS42NDMsMCwwLDAsLjE2Ny0uODMzVjI1LjQ3NGEyLjY3MSwyLjY3MSwwLDAsMCwuNjItLjEyOCwyLjkyOCwyLjkyOCwwLDAsMCwxLjg4Ni0xLjg4OCwyLjgzNCwyLjgzNCwwLDAsMCwuMTIzLS42MTNoMS41ODFjLjY4NywwLDEuMzc1LDAsMi4wNTcsMGguMDA4QTEuNDIyLDEuNDIyLDAsMCwwLDMwLjUsMjEuNDgxdi0uMTE4YTEuNDA5LDEuNDA5LDAsMCwwLTEuMzgyLTEuMzE4aDBjLS43MTgsMC0xLjQzNiwwLTIuMTU0LDBIMjUuNVYxNy40WlwiIHN0eWxlPVwiZmlsbDojYzVjNWM1O29wYWNpdHk6MC4zXCIvPjxwYXRoIGQ9XCJNMTAuNTE1LDJoLjA1NmEuOTEuOTEsMCwwLDEsLjg4Ni44OTNjLjAwNiwxLjEwOCwwLDIuMjE2LDAsMy4zMjQtLjYsMC0xLjIsMC0xLjgsMCwwLTEuMTExLDAtMi4yMjIsMC0zLjMzM0EuOTA3LjkwNywwLDAsMSwxMC41MTUsMlpcIiBzdHlsZT1cImZpbGw6IzFhMzQ4ZlwiLz48cGF0aCBkPVwiTTE1LjkzNywyaC4xMTZhLjkxMi45MTIsMCwwLDEsLjg0Ni44ODljLjAwNiwxLjEwOSwwLDIuMjE5LDAsMy4zMjlIMTUuMWMwLTEuMTEsMC0yLjIyLDAtMy4zM0EuOTExLjkxMSwwLDAsMSwxNS45MzcsMlpcIiBzdHlsZT1cImZpbGw6IzFhMzQ4ZlwiLz48cGF0aCBkPVwiTTIxLjM5MiwyaC4wODlhLjkwNy45MDcsMCwwLDEsLjg1OS44ODFjLjAwNywxLjExMiwwLDIuMjI1LDAsMy4zMzdoLTEuOGMwLTEuMTA5LDAtMi4yMTcsMC0zLjMyNkEuOTEyLjkxMiwwLDAsMSwyMS4zOTIsMlpcIiBzdHlsZT1cImZpbGw6IzFhMzQ4ZlwiLz48cGF0aCBkPVwiTTIsMTAuNTE4YS45MDguOTA4LDAsMCwxLC44ODItLjg1OWMxLjExMi0uMDA3LDIuMjIzLDAsMy4zMzQsMHEwLC45LDAsMS44Yy0xLjA3OSwwLTIuMTU4LDAtMy4yMzcsMGEuOTgzLjk4MywwLDAsMS0uNi0uMTczQS45MjQuOTI0LDAsMCwxLDIsMTAuNTcxWlwiIHN0eWxlPVwiZmlsbDojMWEzNDhmXCIvPjxwYXRoIGQ9XCJNMjUuNzg2LDkuNjU1aDMuMjMzYTEsMSwwLDAsMSwuNTYxLjE0My45MjQuOTI0LDAsMCwxLC40Mi43MTZ2LjA1OGEuOTMzLjkzMywwLDAsMS0uMy42NTEuOTU3Ljk1NywwLDAsMS0uNjc3LjIzNGMtMS4wNzksMC0yLjE1OCwwLTMuMjM3LDBRMjUuNzg2LDEwLjU1NiwyNS43ODYsOS42NTVaXCIgc3R5bGU9XCJmaWxsOiMxYTM0OGZcIi8+PHBhdGggZD1cIk0yLDE1Ljk0NGEuOTEzLjkxMywwLDAsMSwuODg4LS44NDJjMS4xMDktLjAwNywyLjIxOSwwLDMuMzI4LDBxMCwuOSwwLDEuOGMtMS4xMDksMC0yLjIxNywwLTMuMzI2LDBBLjkxNS45MTUsMCwwLDEsMiwxNi4wNjNaXCIgc3R5bGU9XCJmaWxsOiMxYTM0OGZcIi8+PHBhdGggZD1cIk0yNS43ODYsMTUuMWMxLjEwOSwwLDIuMjE4LDAsMy4zMjYsMGEuOTE0LjkxNCwwLDAsMSwuODg5LjgzNXYuMTE3YS45NDYuOTQ2LDAsMCwxLS4zMzEuNjQxLjk3My45NzMsMCwwLDEtLjY1MS4yMDdIMjUuNzg2UTI1Ljc4NSwxNiwyNS43ODYsMTUuMVpcIiBzdHlsZT1cImZpbGw6IzFhMzQ4ZlwiLz48cGF0aCBkPVwiTTIuNDMzLDIwLjY3OGExLjEyMSwxLjEyMSwwLDAsMSwuNjQzLS4xMzZjMS4wNDMuMDA2LDIuMDg2LS4wMDYsMy4xMjkuMDA2LjAyOC42LDAsMS4yLjAxMiwxLjgtMS4xMSwwLTIuMjIxLDAtMy4zMzEsMEEuOTExLjkxMSwwLDAsMSwyLDIxLjQ4M1YyMS40QS45MjUuOTI1LDAsMCwxLDIuNDMzLDIwLjY3OFpcIiBzdHlsZT1cImZpbGw6IzFhMzQ4ZlwiLz48cGF0aCBkPVwiTTI1Ljc4NiwyMC41NDNjMS4xMDgsMCwyLjIxNiwwLDMuMzI0LDBhLjkxNC45MTQsMCwwLDEsLjg5Ljg0N3YuMDlhLjkxMS45MTEsMCwwLDEtLjg4OC44NTljLTEuMTA5LjAwNy0yLjIxOCwwLTMuMzI2LDBDMjUuNzg2LDIxLjc0MywyNS43ODUsMjEuMTQzLDI1Ljc4NiwyMC41NDNaXCIgc3R5bGU9XCJmaWxsOiMxYTM0OGZcIi8+PHBhdGggZD1cIk05LjY1NiwyNS43ODFoMS44YzAsMS4wODEsMCwyLjE2MiwwLDMuMjQzYS45NTcuOTU3LDAsMCwxLS4yMzUuNjc3LjkzMS45MzEsMCwwLDEtLjY1My4zaC0uMDUyYS45MDcuOTA3LDAsMCwxLS44Ni0uODgyQzkuNjUxLDI4LjAwNiw5LjY1OCwyNi44OTQsOS42NTYsMjUuNzgxWlwiIHN0eWxlPVwiZmlsbDojMWEzNDhmXCIvPjxwYXRoIGQ9XCJNMTUuMSwyNS43ODFoMS44YzAsMS4xMSwwLDIuMjIsMCwzLjMzYS45MTQuOTE0LDAsMCwxLS44MzYuODg5aC0uMTE2YS45NC45NCwwLDAsMS0uNjE5LS4zMDYuOTYyLjk2MiwwLDAsMS0uMjI4LS42NzNRMTUuMSwyNy40LDE1LjEsMjUuNzgxWlwiIHN0eWxlPVwiZmlsbDojMWEzNDhmXCIvPjxwYXRoIGQ9XCJNMjAuNTQ3LDI5LjEwNmMwLTEuMTA4LDAtMi4yMTcsMC0zLjMyNWgxLjhjMCwxLjA0OCwwLDIuMSwwLDMuMTQ0YTEuMTc4LDEuMTc4LDAsMCwxLS4xMDUuNTkuOTIuOTIsMCwwLDEtLjc1Ni40ODRIMjEuNEEuOTExLjkxMSwwLDAsMSwyMC41NDcsMjkuMTA2WlwiIHN0eWxlPVwiZmlsbDojMWEzNDhmXCIvPjxwYXRoIGQ9XCJNMjQuNzMyLDguMzQ5QTIuNDI5LDIuNDI5LDAsMCwwLDIzLjMxLDcuMTMxLDMuMjQ1LDMuMjQ1LDAsMCwwLDIyLjI1NCw3Yy00LjMuMDA4LTguNi0uMDExLTEyLjkwNS4wMUEyLjQzNiwyLjQzNiwwLDAsMCw3LjE1Nyw4LjYwNiwzLjYxMSwzLjYxMSwwLDAsMCw3LDkuOTM0cTAsNi4yNSwwLDEyLjVhMi42NzMsMi42NzMsMCwwLDAsLjI2OCwxLjIxOUEyLjQzMSwyLjQzMSwwLDAsMCw4LjY4OCwyNC44NywzLjc1NiwzLjc1NiwwLDAsMCw5LjkyNywyNUgyMi4wN2EzLjc2MiwzLjc2MiwwLDAsMCwxLjI0My0uMTI3QTIuNDI5LDIuNDI5LDAsMCwwLDI0Ljg3NSwyMy4zLDMuOCwzLjgsMCwwLDAsMjUsMjIuMDcxcTAtNi4yNSwwLTEyLjVBMi42ODYsMi42ODYsMCwwLDAsMjQuNzMyLDguMzQ5WlwiIHN0eWxlPVwiZmlsbDojMWEzNDhmXCIvPjxwYXRoIGQ9XCJNNy41LDguMzA3bC4wODQtLjJxLjk2OCwwLDEuOTM1LjAyNGguMzk0cS4xNzksMCwuMzk0LS4wMTIuNzc2LS4wMzYsMi44MDctLjAzNi40MDYsMCwuNzg4LjAwNnQuNzQxLjAxOGEuMjM0LjIzNCwwLDAsMSwuMTA4LjEwOGwtLjAyNC4xOTFxLS4wNzIuMTE5LS4zNTguMTE5aC0uMWExMC4zLDEwLjMsMCwwLDAtMS4xLjA1NCwyLjE3OSwyLjE3OSwwLDAsMC0xLC4yNDUuNDMyLjQzMiwwLDAsMC0uMTU1LjM0Niw0LjA1LDQuMDUsMCwwLDAsLjM5NCwxLjRsMS44MTgsNC4yMTcuNjM0LDEuNHEuOTIxLDIuMjIyLDEuODE5LDQuNTM5LjEuMjUxLjE3OS40NTRsLjgtMS45NTlxLjYyLTEuNDgxLDEuMjUyLTMuMTU0bC44MjMtMi4yNDZxLjAyNC0uMDcyLjEzMS0uNDc4YTE3LjAyNiwxNy4wMjYsMCwwLDAsMS4xNTctNCwuNTYxLjU2MSwwLDAsMC0uMTYxLS4zNjQsMS4xNjUsMS4xNjUsMCwwLDAtLjUyLS4zLDcuNzIzLDcuNzIzLDAsMCwwLS45MzItLjE0M2wtLjg4NC0uMTA4YS4zMzcuMzM3LDAsMCwxLS4xMDgtLjJsLjAzNi0uMSwzLjg3LS4wMzZIMjMuNmEzLjEsMy4xLDAsMCwxLC44ODUuMDg0bC4wMTIuMWEuNjQxLjY0MSwwLDAsMS0uMDcyLjI1MSwyLjQ0OSwyLjQ0OSwwLDAsMS0uNTI2LjExOSwzLjYsMy42LDAsMCwwLTEuMjQ0LjI4MSwxLjgxNSwxLjgxNSwwLDAsMC0uNS42ODdsLTMuMTM0LDcuNzY1cS0xLjQ2NiwzLjUtMi4wODYsNS40MjNsLS4zNDUsMS4wMzlhLjUzMS41MzEsMCwwLDEtLjI2My4xLDEuMzgzLDEuMzgzLDAsMCwxLS4zLS4wMzZxLTEuNDIyLTMuNjc2LTIuMzE4LTUuNjgxTDEwLjA1NSw5LjkyYTMuMjQ3LDMuMjQ3LDAsMCwwLS41OTEtLjg5LDUuNDYzLDUuNDYzLDAsMCwwLTEuMzc5LS40MjQsNC4zNDcsNC4zNDcsMCwwLDEtLjQ2Ni0uMTE5QS4zMjYuMzI2LDAsMCwxLDcuNSw4LjMwN1pcIiBzdHlsZT1cImZpbGw6I2M1YzJmZlwiLz5gLFxuICBcIlZIRExcIjogYDxwYXRoIGQ9XCJNMiwySDMwVjMwSDJabTEuNjg5LjA2N0ExLjYyNCwxLjYyNCwwLDAsMCwyLjA2MywzLjY5MlYyOC4zMTRBMS42MjUsMS42MjUsMCwwLDAsMy42ODksMjkuOTRIMjguMzE2YTEuNjI1LDEuNjI1LDAsMCwwLDEuNjI2LTEuNjI2VjMuNjkyYTEuNjI0LDEuNjI0LDAsMCwwLTEuNjI2LTEuNjI1Wk0zLjAwOCwyOC4wNzlhLjkxMS45MTEsMCwwLDAsLjkxMS45MTJIMjguMDgzYS45MTEuOTExLDAsMCwwLC45MTEtLjkxMlYzLjkxOWEuOTEuOTEsMCwwLDAtLjkxMS0uOTExSDMuOTE5YS45MS45MSwwLDAsMC0uOTExLjkxMVpcIiBzdHlsZT1cImZpbGw6IzBkOWIzNVwiLz48cG9seWdvbiBwb2ludHM9XCIyNS41MiA1LjUwMiAxOC44NTggMjYuNDkxIDEzLjE1NCAyNi40OTEgNi40OTIgNS41MDIgMTAuNTA4IDUuNTAyIDE2LjAyOSAyMi43OTUgMjEuNTA0IDUuNTAyIDI1LjUyIDUuNTAyXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcbiAgXCJ2aW1cIjogYDxkZWZzPjxjbGlwUGF0aCBpZD1cImFcIj48cG9seWdvbiBwb2ludHM9XCIyIDIgMzAgMiAzMCAzMCAyIDMwIDIgMiAyIDJcIiBzdHlsZT1cImZpbGw6bm9uZTtjbGlwLXJ1bGU6ZXZlbm9kZFwiLz48L2NsaXBQYXRoPjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3ZpbTwvdGl0bGU+PHBvbHlnb24gcG9pbnRzPVwiMjkuOTg5IDE1Ljg1NiAxNS44NTYgMi4wMTEgMi4wMTEgMTYuMTM2IDE1Ljg1NiAyOS45ODkgMjkuOTg5IDE1Ljg1NiAyOS45ODkgMTUuODU2XCIgc3R5bGU9XCJmaWxsOiMyMzFmMjA7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PGcgc3R5bGU9XCJjbGlwLXBhdGg6dXJsKCNhKVwiPjxwb2x5Z29uIHBvaW50cz1cIjI5Ljk4OSAxNS44NTYgMTUuODU2IDIuMDExIDIuMDExIDE2LjEzNiAxNS44NTYgMjkuOTg5IDI5Ljk4OSAxNS44NTYgMjkuOTg5IDE1Ljg1NlwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjwvZz48cG9seWdvbiBwb2ludHM9XCIyOC41NzUgMTUuODU2IDI5LjQyMiAxNS44NTYgMTUuODU2IDI5LjQyMiAxNS44NTYgMjguNTc1IDI4LjU3NSAxNS44NTYgMjguNTc1IDE1Ljg1NlwiIHN0eWxlPVwiZmlsbDojMjk2OTVkO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI4LjU3NSAxNS44NTYgMjkuNDIyIDE1Ljg1NiAxNS44NTYgMjkuNDIyIDE1Ljg1NiAyOC41NzUgMjguNTc1IDE1Ljg1NiAyOC41NzUgMTUuODU2XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMi41NzggMTYuMTM2IDMuNDI1IDE2LjEzNiAxNS44NTYgMjguNTc1IDE1Ljg1NiAyOS40MjIgMi41NzggMTYuMTM2IDIuNTc4IDE2LjEzNlwiIHN0eWxlPVwiZmlsbDojMzE3MzY3O2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIuNTc4IDE2LjEzNiAzLjQyNSAxNi4xMzYgMTUuODU2IDI4LjU3NSAxNS44NTYgMjkuNDIyIDIuNTc4IDE2LjEzNiAyLjU3OCAxNi4xMzZcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCIxNS44NTYgMy40MTggMTUuODU2IDIuNTc4IDIuNTc4IDE2LjEzNiAzLjQyNSAxNi4xMzYgMTUuODU2IDMuNDE4IDE1Ljg1NiAzLjQxOFwiIHN0eWxlPVwiZmlsbDojNjBjMmFjO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE1Ljg1NiAzLjQxOCAxNS44NTYgMi41NzggMi41NzggMTYuMTM2IDMuNDI1IDE2LjEzNiAxNS44NTYgMy40MTggMTUuODU2IDMuNDE4XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTUuODU2IDIuNTc4IDE1Ljg1NiAzLjQxOCAyOC41NzUgMTUuODU2IDI5LjQyMiAxNS44NTYgMTUuODU2IDIuNTc4IDE1Ljg1NiAyLjU3OFwiIHN0eWxlPVwiZmlsbDojNDNiNTRhO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE1Ljg1NiAyLjU3OCAxNS44NTYgMy40MTggMjguNTc1IDE1Ljg1NiAyOS40MjIgMTUuODU2IDE1Ljg1NiAyLjU3OCAxNS44NTYgMi41NzhcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCIxNS44NTYgMjguNTc1IDI4LjU3NSAxNS44NTYgMTUuODU2IDMuNDE4IDMuNDI1IDE2LjEzNiAxNS44NTYgMjguNTc1IDE1Ljg1NiAyOC41NzVcIiBzdHlsZT1cImZpbGw6IzNjODM3NjtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxNS44NTYgMjguNTc1IDI4LjU3NSAxNS44NTYgMTUuODU2IDMuNDE4IDMuNDI1IDE2LjEzNiAxNS44NTYgMjguNTc1IDE1Ljg1NiAyOC41NzVcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCIxOC40OTggNi4yNDYgMTkuMzQ1IDcuMSAxMy41MDIgMTMuMDI4IDEzLjUwMiA3LjEgMTQuMDY5IDcuMSAxNC45MTYgNi4yNDYgMTQuOTE2IDMuOTkyIDE0LjA2OSAzLjEzOCA0LjY1MiAzLjEzOCAzLjgwNSAzLjk5MiAzLjgwNSA2LjI0NiA0LjY1MiA3LjEgNS4zMTIgNy4xIDUuMzEyIDI2LjMxNCA2LjM0NiAyNy4xNjEgOS4yNjcgMjcuMTYxIDI5LjUxNiA2LjI0NiAyOS41MTYgMy45OTIgMjguNjY5IDMuMTM4IDE5LjQzOCAzLjEzOCAxOC40OTggMy45OTIgMTguNDk4IDYuMjQ2IDE4LjQ5OCA2LjI0NlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE4LjQ5OCA2LjI0NiAxOS4zNDUgNy4xIDEzLjUwMiAxMy4wMjggMTMuNTAyIDcuMSAxNC4wNjkgNy4xIDE0LjkxNiA2LjI0NiAxNC45MTYgMy45OTIgMTQuMDY5IDMuMTM4IDQuNjUyIDMuMTM4IDMuODA1IDMuOTkyIDMuODA1IDYuMjQ2IDQuNjUyIDcuMSA1LjMxMiA3LjEgNS4zMTIgMjYuMzE0IDYuMzQ2IDI3LjE2MSA5LjI2NyAyNy4xNjEgMjkuNTE2IDYuMjQ2IDI5LjUxNiAzLjk5MiAyOC42NjkgMy4xMzggMTkuNDM4IDMuMTM4IDE4LjQ5OCAzLjk5MiAxOC40OTggNi4yNDYgMTguNDk4IDYuMjQ2XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiNC45MzIgNi41MzMgNC4zNjUgNS45NjYgNC4zNjUgNC4yNzIgNC45MzIgMy43MDUgMTMuNzg5IDMuNjk4IDE0LjM0OSA0LjI3MiAxMy43ODkgNC41NDQgMTMuNTAyIDQuMjcyIDQuOTMyIDUuNjc5IDQuOTMyIDYuNTMzIDQuOTMyIDYuNTMzXCIgc3R5bGU9XCJmaWxsOiNmZmY7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiNC45MzIgNi41MzMgNC4zNjUgNS45NjYgNC4zNjUgNC4yNzIgNC45MzIgMy43MDUgMTMuNzg5IDMuNjk4IDE0LjM0OSA0LjI3MiAxMy43ODkgNC41NDQgMTMuNTAyIDQuMjcyIDQuOTMyIDUuNjc5IDQuOTMyIDYuNTMzIDQuOTMyIDYuNTMzXCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiNi42MjYgMjYuNTk0IDUuOTY2IDI2LjAyNyA1Ljk2NiA2LjUyNiA2LjYyNiA1Ljk2NiA2LjYyNiAyNi41OTQgNi42MjYgMjYuNTk0XCIgc3R5bGU9XCJmaWxsOiNmZmY7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiNi42MjYgMjYuNTk0IDUuOTY2IDI2LjAyNyA1Ljk2NiA2LjUyNiA2LjYyNiA1Ljk2NiA2LjYyNiAyNi41OTQgNi42MjYgMjYuNTk0XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjAuNzU5IDYuNTMzIDIxLjMyNiA1Ljk2NiAyMS4zMjYgNy4xIDExLjkwMiAxNi43MDMgMTIuOTQyIDE0LjQ0MiAyMC43NTkgNi41MzMgMjAuNzU5IDYuNTMzXCIgc3R5bGU9XCJmaWxsOiNmZmY7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjAuNzU5IDYuNTMzIDIxLjMyNiA1Ljk2NiAyMS4zMjYgNy4xIDExLjkwMiAxNi43MDMgMTIuOTQyIDE0LjQ0MiAyMC43NTkgNi41MzMgMjAuNzU5IDYuNTMzXCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiNi44MiA1LjY4NiA2LjYyNiA1Ljk2NiA1Ljk2NiA2LjUzMyA0LjkzMiA2LjUzMyA0LjkzMiA1LjM5OSA2LjgyIDUuNjg2IDYuODIgNS42ODZcIiBzdHlsZT1cImZpbGw6IzkyOTQ5NztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCI2LjgyIDUuNjg2IDYuNjI2IDUuOTY2IDUuOTY2IDYuNTMzIDQuOTMyIDYuNTMzIDQuOTMyIDUuMzk5IDYuODIgNS42ODYgNi44MiA1LjY4NlwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjEyLjk0MiA2LjUzMyAxMi45NDIgMTQuNDQyIDExLjkwMiAxNi42OTYgMTEuOTAyIDUuOTU4IDEzLjUwMiA1Ljk1OCAxMy43ODkgNS42NzggMTMuNTAyIDQuMjcyIDE0LjM0OSA0LjI3MiAxNC4zNDkgNS45NjYgMTMuNzg5IDYuNTMzIDEyLjk0MiA2LjUzMyAxMi45NDIgNi41MzNcIiBzdHlsZT1cImZpbGw6IzkyOTQ5NztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxMi45NDIgNi41MzMgMTIuOTQyIDE0LjQ0MiAxMS45MDIgMTYuNjk2IDExLjkwMiA1Ljk1OCAxMy41MDIgNS45NTggMTMuNzg5IDUuNjc4IDEzLjUwMiA0LjI3MiAxNC4zNDkgNC4yNzIgMTQuMzQ5IDUuOTY2IDEzLjc4OSA2LjUzMyAxMi45NDIgNi41MzMgMTIuOTQyIDYuNTMzXCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTkuNjI1IDYuNTMzIDE5LjA2NSA1Ljk2NiAxOS4wNjUgNC4yNzIgMTkuNzE4IDMuNzA1IDI4LjI5NSAzLjcwNSAyOC45NTYgNC4yNzIgMjguMDA4IDUuMTE5IDE5LjYyNSA1LjY3OSAxOS42MjUgNi41MzMgMTkuNjI1IDYuNTMzXCIgc3R5bGU9XCJmaWxsOiNmZmY7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTkuNjI1IDYuNTMzIDE5LjA2NSA1Ljk2NiAxOS4wNjUgNC4yNzIgMTkuNzE4IDMuNzA1IDI4LjI5NSAzLjcwNSAyOC45NTYgNC4yNzIgMjguMDA4IDUuMTE5IDE5LjYyNSA1LjY3OSAxOS42MjUgNi41MzMgMTkuNjI1IDYuNTMzXCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjguOTU2IDUuOTY2IDkuMDc0IDI2LjU5NCA2LjYyNiAyNi41OTQgNi42MjYgMjUuNzQ3IDguNDIgMjUuNzQ3IDI4LjI5NSA1LjM5OSAyOC4wMDggNC4yNzIgMjguOTU2IDQuMjcyIDI4Ljk1NiA1Ljk2NiAyOC45NTYgNS45NjZcIiBzdHlsZT1cImZpbGw6IzkyOTQ5NztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIyOC45NTYgNS45NjYgOS4wNzQgMjYuNTk0IDYuNjI2IDI2LjU5NCA2LjYyNiAyNS43NDcgOC40MiAyNS43NDcgMjguMjk1IDUuMzk5IDI4LjAwOCA0LjI3MiAyOC45NTYgNC4yNzIgMjguOTU2IDUuOTY2IDI4Ljk1NiA1Ljk2NlwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjIxLjUxMiA1LjY4NiAyMS4zMTkgNS45NjYgMjAuNzU5IDYuNTMzIDE5LjYyNSA2LjUzMyAxOS42MjUgNS4zOTkgMjEuNTEyIDUuNjg2IDIxLjUxMiA1LjY4NlwiIHN0eWxlPVwiZmlsbDojOTI5NDk3O2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIxLjUxMiA1LjY4NiAyMS4zMTkgNS45NjYgMjAuNzU5IDYuNTMzIDE5LjYyNSA2LjUzMyAxOS42MjUgNS4zOTkgMjEuNTEyIDUuNjg2IDIxLjUxMiA1LjY4NlwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjExLjkwMiAxNi42OTYgMTEuOTAyIDUuOTU4IDEzLjUwMiA1Ljk1OCAxMy43ODkgNS42NzkgMTMuNzg5IDQuNTQ0IDEzLjUwMiA0LjI2NSA1LjIxMiA0LjI2NSA0LjkzMiA0LjU0NCA0LjkzMiA1LjY3OSA1LjIxMiA1Ljk1OCA2LjYyNiA1Ljk1OCA2LjYyNiAyNS43NDcgNi45OTIgMjYuMDI3IDguNjA3IDI2LjAyNyAyOC4zODkgNS4zOTkgMjguMzg5IDQuNTg4IDI4LjEwMiA0LjI2NSAxOS45MTIgNC4yNjUgMTkuNjI1IDQuNTQ0IDE5LjYyNSA1LjY4NiAxOS45MTIgNS45NjYgMjEuMzI2IDUuOTY2IDIxLjMyNiA3LjEgMTEuOTAyIDE2LjY5NiAxMS45MDIgMTYuNjk2XCIgc3R5bGU9XCJmaWxsOiNkMGQyZDM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTEuOTAyIDE2LjY5NiAxMS45MDIgNS45NTggMTMuNTAyIDUuOTU4IDEzLjc4OSA1LjY3OSAxMy43ODkgNC41NDQgMTMuNTAyIDQuMjY1IDUuMjEyIDQuMjY1IDQuOTMyIDQuNTQ0IDQuOTMyIDUuNjc5IDUuMjEyIDUuOTU4IDYuNjI2IDUuOTU4IDYuNjI2IDI1Ljc0NyA2Ljk5MiAyNi4wMjcgOC42MDcgMjYuMDI3IDI4LjM4OSA1LjM5OSAyOC4zODkgNC41ODggMjguMTAyIDQuMjY1IDE5LjkxMiA0LjI2NSAxOS42MjUgNC41NDQgMTkuNjI1IDUuNjg2IDE5LjkxMiA1Ljk2NiAyMS4zMjYgNS45NjYgMjEuMzI2IDcuMSAxMS45MDIgMTYuNjk2IDExLjkwMiAxNi42OTZcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCIxNy4wNDEgMTYuNzExIDE3LjcwMSAxNi4xNDQgMTkuMzk1IDE2LjE0NCAxOS44NjkgMTYuNzExIDE5LjMwMiAxOC40MDUgMTguNjQ5IDE4Ljk3MiAxNi45NTUgMTguOTcyIDE2LjQ3NCAxOC40MDUgMTcuMDQxIDE2LjcxMSAxNy4wNDEgMTYuNzExXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjA7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTcuMDQxIDE2LjcxMSAxNy43MDEgMTYuMTQ0IDE5LjM5NSAxNi4xNDQgMTkuODY5IDE2LjcxMSAxOS4zMDIgMTguNDA1IDE4LjY0OSAxOC45NzIgMTYuOTU1IDE4Ljk3MiAxNi40NzQgMTguNDA1IDE3LjA0MSAxNi43MTEgMTcuMDQxIDE2LjcxMVwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjE3LjYwOCAyNi4wMzQgMTkuMzA5IDIwLjk1MyAxOC43NDIgMjAuOTUzIDE5LjMwOSAxOS4yNTEgMjEuODQzIDE5LjI1MSAyMi40MSAxOS44MTkgMjIuNzkgMTkuODE5IDIzLjM1IDE5LjI1MSAyNS4yMzggMTkuMjUxIDI1LjgwNSAxOS44MTkgMjYuMTc4IDE5LjgxOSAyNi43NDUgMTkuMjUxIDI4LjgxMiAxOS4yNTEgMjkuNTY2IDIwLjM4NiAyOC4zMzEgMjQuNDA1IDI4Ljg5MSAyNC40MDUgMjguMzQ2IDI2LjAzNCAyNC45NTEgMjYuMDM0IDI2LjI3OCAyMi4wNzkgMjUuNDMxIDIyLjA3OSAyNC42NDkgMjQuMzkxIDI1LjIwOSAyNC4zOTEgMjQuNjc4IDI2LjAzNCAyMS4yODMgMjYuMDM0IDIyLjYwMyAyMi4wNzkgMjEuNzU2IDIyLjA3OSAyMC45NjcgMjQuNDA1IDIxLjUzNCAyNC40MDUgMjEuMDAzIDI2LjAzNCAxNy42MDggMjYuMDM0IDE3LjYwOCAyNi4wMzRcIiBzdHlsZT1cImZpbGw6IzIzMWYyMDtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxNy42MDggMjYuMDM0IDE5LjMwOSAyMC45NTMgMTguNzQyIDIwLjk1MyAxOS4zMDkgMTkuMjUxIDIxLjg0MyAxOS4yNTEgMjIuNDEgMTkuODE5IDIyLjc5IDE5LjgxOSAyMy4zNSAxOS4yNTEgMjUuMjM4IDE5LjI1MSAyNS44MDUgMTkuODE5IDI2LjE3OCAxOS44MTkgMjYuNzQ1IDE5LjI1MSAyOC44MTIgMTkuMjUxIDI5LjU2NiAyMC4zODYgMjguMzMxIDI0LjQwNSAyOC44OTEgMjQuNDA1IDI4LjM0NiAyNi4wMzQgMjQuOTUxIDI2LjAzNCAyNi4yNzggMjIuMDc5IDI1LjQzMSAyMi4wNzkgMjQuNjQ5IDI0LjM5MSAyNS4yMDkgMjQuMzkxIDI0LjY3OCAyNi4wMzQgMjEuMjgzIDI2LjAzNCAyMi42MDMgMjIuMDc5IDIxLjc1NiAyMi4wNzkgMjAuOTY3IDI0LjQwNSAyMS41MzQgMjQuNDA1IDIxLjAwMyAyNi4wMzQgMTcuNjA4IDI2LjAzNCAxNy42MDggMjYuMDM0XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjguNTU0IDE5LjgxOSAyOC45OTIgMjAuNDQzIDI3LjU5OSAyNC45MDcgMjguMTU5IDI0LjkwNyAyNy45NzIgMjUuNDY3IDI1LjcxMSAyNS40NjcgMjcuMDMyIDIxLjUxMiAyNS4wNTEgMjEuNTEyIDIzLjkyNCAyNC45MDcgMjQuNDg0IDI0LjkwNyAyNC4yOTcgMjUuNDY3IDIyLjAzNiAyNS40NjcgMjMuMzU3IDIxLjUxMiAyMS4zNzYgMjEuNTEyIDIwLjI0OSAyNC45MDcgMjAuODE2IDI0LjkwNyAyMC42MjIgMjUuNDY3IDE4LjM2MSAyNS40NjcgMjAuMDYzIDIwLjM4NiAxOS40OTUgMjAuMzg2IDE5LjY4MiAxOS44MTkgMjEuNzU2IDE5LjgxOSAyMi4zMjMgMjAuMzg2IDIyLjg4MyAyMC4zODYgMjMuNDUgMTkuODE5IDI1LjE0NCAxOS44MTkgMjUuNzExIDIwLjM4NiAyNi4yNzggMjAuMzg2IDI2Ljg0NSAxOS44MTkgMjguNTU0IDE5LjgxOSAyOC41NTQgMTkuODE5XCIgc3R5bGU9XCJmaWxsOiNkMGQyZDM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjguNTU0IDE5LjgxOSAyOC45OTIgMjAuNDQzIDI3LjU5OSAyNC45MDcgMjguMTU5IDI0LjkwNyAyNy45NzIgMjUuNDY3IDI1LjcxMSAyNS40NjcgMjcuMDMyIDIxLjUxMiAyNS4wNTEgMjEuNTEyIDIzLjkyNCAyNC45MDcgMjQuNDg0IDI0LjkwNyAyNC4yOTcgMjUuNDY3IDIyLjAzNiAyNS40NjcgMjMuMzU3IDIxLjUxMiAyMS4zNzYgMjEuNTEyIDIwLjI0OSAyNC45MDcgMjAuODE2IDI0LjkwNyAyMC42MjIgMjUuNDY3IDE4LjM2MSAyNS40NjcgMjAuMDYzIDIwLjM4NiAxOS40OTUgMjAuMzg2IDE5LjY4MiAxOS44MTkgMjEuNzU2IDE5LjgxOSAyMi4zMjMgMjAuMzg2IDIyLjg4MyAyMC4zODYgMjMuNDUgMTkuODE5IDI1LjE0NCAxOS44MTkgMjUuNzExIDIwLjM4NiAyNi4yNzggMjAuMzg2IDI2Ljg0NSAxOS44MTkgMjguNTU0IDE5LjgxOSAyOC41NTQgMTkuODE5XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBhdGggZD1cIk0xOS4wMjIsMTkuMjUxLDE3LjI5MiwyNC40aC41ODlsLS41NiwxLjYzN0gxMy45MzNsMS42OTQtNS4wODJIMTUuMDZsMy45NjItMS43Wm0tMy45NjIsMS43LjU2Ny0xLjdoMy40bC0zLjk2MiwxLjdaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjA7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xOS4wMjIsMTkuMjUxLDE3LjI5MiwyNC40aC41ODlsLS41NiwxLjYzN0gxMy45MzNsMS42OTQtNS4wODJIMTUuMDZsMy45NjItMS43Wm0tMy45NjIsMS43LjU2Ny0xLjdoMy40bC0zLjk2MiwxLjdaXCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTYuOTQ3IDI1LjQ2NyAxNy4xMzQgMjQuOTA3IDE2LjU2NyAyNC45MDcgMTguMjY4IDE5LjgxOSAxNS45MTQgMTkuODE5IDE1LjcyIDIwLjM4NiAxNi4zOCAyMC4zODYgMTQuNjg2IDI1LjQ2NyAxNi45NDcgMjUuNDY3IDE2Ljk0NyAyNS40NjdcIiBzdHlsZT1cImZpbGw6I2QwZDJkMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxNi45NDcgMjUuNDY3IDE3LjEzNCAyNC45MDcgMTYuNTY3IDI0LjkwNyAxOC4yNjggMTkuODE5IDE1LjkxNCAxOS44MTkgMTUuNzIgMjAuMzg2IDE2LjM4IDIwLjM4NiAxNC42ODYgMjUuNDY3IDE2Ljk0NyAyNS40NjcgMTYuOTQ3IDI1LjQ2N1wiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjE4LjgyOCAxOC4xMjUgMTkuMjA4IDE2Ljk5MSAxOS4wMjIgMTYuNzExIDE3Ljg4OCAxNi43MTEgMTcuNTE0IDE2Ljk5MSAxNy4xMzQgMTguMTI1IDE3LjMyOCAxOC40MDUgMTguNDYyIDE4LjQwNSAxOC44MjggMTguMTI1IDE4LjgyOCAxOC4xMjVcIiBzdHlsZT1cImZpbGw6I2QwZDJkMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxOC44MjggMTguMTI1IDE5LjIwOCAxNi45OTEgMTkuMDIyIDE2LjcxMSAxNy44ODggMTYuNzExIDE3LjUxNCAxNi45OTEgMTcuMTM0IDE4LjEyNSAxNy4zMjggMTguNDA1IDE4LjQ2MiAxOC40MDUgMTguODI4IDE4LjEyNSAxOC44MjggMTguMTI1XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+YCxcbiAgXCJWaXN1YWwgQmFzaWNcIjogYDxwYXRoIGQ9XCJNNi42Nyw3LjgzNiw5LDE4LjkxNSwxMS4zMzYsNy44MzZIMTZMMTEuMzM2LDI0LjE2NEg2LjY3MkwyLDcuODM2WlwiIHN0eWxlPVwiZmlsbDojMDA1MTlhXCIvPjxwYXRoIGQ9XCJNMTguMzMxLDcuODM2aDcuNmE0LjA4LDQuMDgsMCwwLDEsMi45LDEuNzQ5LDMuNzgsMy43OCwwLDAsMSwuNTcxLDIuMDQsMy45ODUsMy45ODUsMCwwLDEtLjU3MSwyLjAzNCw0LjEwOCw0LjEwOCwwLDAsMS0yLjM0MSwxLjc2Myw0LjEsNC4xLDAsMCwxLDIuOTI5LDEuNzU2LDMuOCwzLjgsMCwwLDEsLjU4LDIuMSw0LjY2Myw0LjY2MywwLDAsMS0uNTc5LDIuNTQ2LDUuMDQ3LDUuMDQ3LDAsMCwxLTMuNSwyLjMzOEgxOC4zMzFaTTIzLDE0LjI1MmgxLjE2NmExLjc1NCwxLjc1NCwwLDAsMCwwLTMuNUgyM1ptMCw3SDI0LjM5YTIuMDQ3LDIuMDQ3LDAsMCwwLDAtNC4wODlIMjNaXCIgc3R5bGU9XCJmaWxsOiMwMDUxOWFcIi8+YCxcbiAgXCJXZWJBc3NlbWJseVwiOiBgPHBhdGggZD1cIk0xOS4xNTMsMi4zNVYyLjVhMy4yLDMuMiwwLDEsMS02LjQsMGgwVjIuMzVIMlYzMC4yNjlIMjkuOTE5VjIuMzVaXCIgc3R5bGU9XCJmaWxsOiM2NTRmZjBcIi8+PHBhdGggZD1cIk04LjQ4NSwxNy40aDEuODVMMTEuNiwyNC4xMjNoLjAyM0wxMy4xNCwxNy40aDEuNzMxbDEuMzcxLDYuODFoLjAyN2wxLjQ0LTYuODFoMS44MTVsLTIuMzU4LDkuODg1SDE1LjMyOWwtMS4zNi02LjcyOGgtLjAzNmwtMS40NTYsNi43MjhoLTEuODdabTEzLjEyNCwwaDIuOTE3bDIuOSw5Ljg4NUgyNS41MTVsLS42My0yLjJIMjEuNTYybC0uNDg2LDIuMkgxOS4yMTdabTEuMTEsMi40MzctLjgwNywzLjYyN2gyLjUxMkwyMy41LDE5LjgzMlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuICBcIldvbGZyYW0gbGFuZ3VhZ2VcIjogYDxwYXRoIGQ9XCJNMzAsMjAuNTUsMjUuOTQsMTYsMzAsMTEuNDVsLTUuOTQ4LTEuMjk0LjU5NS02LjA2N0wxOS4wNzEsNi41NDMsMTUuOTkzLDEuMjc5LDEyLjkyOSw2LjU0Myw3LjM1Myw0LjA4OWwuNTk1LDYuMDY3TDIsMTEuNDUsNi4wNTksMTYsMiwyMC41NWw1Ljk0OCwxLjI5NC0uNTk1LDYuMDY3LDUuNTc2LTIuNDU0LDMuMDc4LDUuMjY0LDMuMDYzLTUuMjY0LDUuNTkxLDIuNDU0LS42MS02LjA2N1pcIiBzdHlsZT1cImZpbGw6I2QxMFwiLz48cGF0aCBkPVwiTTE5LjM1MywxMS40NWE2Ljk2OCw2Ljk2OCwwLDAsMS0zLjQyLjg2Miw1LjQ0Niw1LjQ0NiwwLDAsMS0zLjIxMi0uODYyQTcuMSw3LjEsMCwwLDEsMTIuNSwxNC44YTYuMjI1LDYuMjI1LDAsMCwxLTEuODc0LDIuOTE0LDcuNDU0LDcuNDU0LDAsMCwxLDMuMTM4LDEuMTksOS42NTksOS42NTksMCwwLDEsMi4yMTYsMi43MjEsOC4xOTQsOC4xOTQsMCwwLDEsMi4xNDEtMi42OTEsNy42MDUsNy42MDUsMCwwLDEsMy4yNDItMS4yLDEyLjU2MiwxMi41NjIsMCwwLDEtMS45MzMtMi45NDRBNi43MTgsNi43MTgsMCwwLDEsMTkuMzUzLDExLjQ1Wm0tMS45LDYuNTQzYTUuMjMzLDUuMjMzLDAsMCwwLTEuNDU3LDEuNjM2LDYuMjM2LDYuMjM2LDAsMCwwLTEuNS0xLjYyMSw1LjE5MSw1LjE5MSwwLDAsMC0xLjk0OC0uODQ4LDYuODM5LDYuODM5LDAsMCwwLDEuMTE1LTIuMDA3LDYuMTgsNi4xOCwwLDAsMCwuMjIzLTIuMDgyLDYuMzE3LDYuMzE3LDAsMCwwLDIuMDgyLjQ0Niw2LjU1Miw2LjU1MiwwLDAsMCwyLjE3MS0uNDYxLDQuNTIxLDQuNTIxLDAsMCwwLC4wNzQsMi4xNTYsNi43MSw2LjcxLDAsMCwwLDEuMjQ5LDEuOTMzQTcuMDMxLDcuMDMxLDAsMCwwLDE3LjQ1LDE3Ljk5M1ptNC4yMzgtNC4wMTVjLS4zNTctMS4xNzUuNjU0LTYuNzA2LjY1NC02LjcwNlMxOC41NSw5Ljg0NCwxNS44ODgsOS44NDRzLTYuMjMtMi41NzItNi4yMy0yLjU3MiwxLjE3NSw0LjAxNS40NjEsNi41ODctNC4zODcsNS40NzItNC4zODcsNS40NzIsNC43ODguMjgzLDYuNiwxLjUsMy42NTgsNS45NDgsMy42NTgsNS45NDgsMi40NTQtNS4yLDMuNDgtNS45NDgsNi44LTEuNSw2LjgtMS41LTQuMjIzLTQuMTc4LTQuNTgtNS4zNTNabS0yLjg0LDUuOTYzYTkuNDQ0LDkuNDQ0LDAsMCwwLTIuODQsNC4xNzhzLTEuNDEzLTMuMTUyLTIuOTc0LTQuMjIzUzguMywxOC41NDMsOC4zLDE4LjU0M3MyLjQ1NC0yLjE3MSwzLjA0OC00LjFhMTEuOTIzLDExLjkyMywwLDAsMC0uMS00Ljk1MiwxMS4zLDExLjMsMCwwLDAsNC42NjksMS42MjFjMi4wMzcsMCw0Ljg0OC0xLjYyMSw0Ljg0OC0xLjYyMXMtLjgxOCwzLjAzMy0uMTY0LDQuOTIyLDMuMTA4LDQuMTM0LDMuMTA4LDQuMTM0YTEwLjU1NywxMC41NTcsMCwwLDAtNC44NjIsMS40WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG4gIFwiWE1MXCI6IGA8cGF0aCBkPVwiTTIwLjQyLDIxLjE1N2wyLjIxMSwyLjIxMUwzMCwxNiwyMi42MzEsOC42MzEsMjAuNDIsMTAuODQzLDI1LjU4LDE2WlwiIHN0eWxlPVwiZmlsbDojZjE2NjJhXCIvPjxwYXRoIGQ9XCJNMTEuNTgsMTAuODQzLDkuMzY5LDguNjMxLDIsMTZsNy4zNjksNy4zNjksMi4yMTEtMi4yMTFMNi40MiwxNlpcIiBzdHlsZT1cImZpbGw6I2YxNjYyYVwiLz48cGF0aCBkPVwiTTE3LjQxMSw3LjY3N2wxLjYuNDM3LTQuNDIsMTYuMjA5LTEuNi0uNDM3LDQuNDItMTYuMjA5WlwiIHN0eWxlPVwiZmlsbDojZjE2NjJhXCIvPmAsXG4gIFwiWFF1ZXJ5XCI6IGA8cGF0aCBkPVwiTTIwLjQyLDIxLjE1N2wyLjIxMSwyLjIxMUwzMCwxNiwyMi42MzEsOC42MzEsMjAuNDIsMTAuODQzLDI1LjU4LDE2Wk0xMS41OCwxMC44NDMsOS4zNjksOC42MzEsMiwxNmw3LjM2OSw3LjM2OSwyLjIxMS0yLjIxMUw2LjQyLDE2Wm01LjgzMS0zLjE2NiwxLjYuNDM3LTQuNDIsMTYuMjA5LTEuNi0uNDM3WlwiIHN0eWxlPVwiZmlsbDojZjE2NjJhXCIvPjxwYXRoIGQ9XCJNMjAuMzMyLDE4LjQ2MmEzLjM1NCwzLjM1NCwwLDAsMSwuOTc1LTEuNDIzLDQuMDE0LDQuMDE0LDAsMCwxLDEuNjE3LS44QTkuMTE4LDkuMTE4LDAsMCwxLDI1LjEzOCwxNmE1LjQ3Miw1LjQ3MiwwLDAsMSwzLjY4MSwxLjAzOUEzLjUsMy41LDAsMCwxLDMwLDE5LjgwOGE0LjQ3LDQuNDcsMCwwLDEtLjI0LDEuNDkxLDMuMTI0LDMuMTI0LDAsMCwxLS44MzgsMS4yMzlsLTEuNjc1LDEuNmExLjUxMiwxLjUxMiwwLDAsMC0uNDI0Ljc4OSw1LjMwNyw1LjMwNywwLDAsMC0uMSwxLjFIMjN2LS41NGE2LjMyLDYuMzIsMCwwLDEsLjIwNy0xLjc3OCwyLjg4NiwyLjg4NiwwLDAsMSwuNzgtMS4yNGwxLjM1Mi0xLjI4OWExLjg0LDEuODQsMCwwLDAsLjU2My0uODk0LDMuNjgyLDMuNjgyLDAsMCwwLC4xLS44LDEuNSwxLjUsMCwwLDAtLjI1Mi0uOS45LjksMCwwLDAtLjc3OS0uMzQ2LDEuMjU1LDEuMjU1LDAsMCwwLS40ODMuMDg2LjcyNC43MjQsMCwwLDAtLjM0NC4zMzcsMi4zNDcsMi4zNDcsMCwwLDAtLjIxNy43MjEsNy42MTQsNy42MTQsMCwwLDAtLjA4MSwxLjI0SDIwQTYuMTU1LDYuMTU1LDAsMCwxLDIwLjMzMiwxOC40NjJabTYuNDU3LDguNVYzMEgyMi45MzZWMjYuOTYyWlwiIHN0eWxlPVwiZmlsbDojZmNiYTAwXCIvPmAsXG4gIFwiWUFNTFwiOiBgPHBhdGggZD1cIk0yLDEyLjIxOGMuNzU1LDAsMS41MS0uMDA4LDIuMjY0LDBsLjA1My4wMzhRNS43LDEzLjYzOCw3LjA3OCwxNS4wMTRjLjg5MS0uOTA2LDEuOC0xLjc5NCwyLjctMi43LjA1My0uMDUyLjExLS4xMTMuMTkyLS4xLjYwOCwwLDEuMjE1LDAsMS44MjMsMGExLjQsMS40LDAsMCwxLC4zNTMuMDE5Yy0uNy42Ny0xLjM3NywxLjM2OS0yLjA2OSwyLjA1TDUuNTQ1LDE4LjhjLS4zMzEuMzI0LS42NDguNjYzLS45ODkuOTc1LS43NTQuMDIyLTEuNTExLjAwNy0yLjI2Ni4wMDcsMS4yMjMtMS4yMDksMi40MzEtMi40MzMsMy42NTgtMy42MzdDNC42MjcsMTQuODQxLDMuMzE4LDEzLjUyNSwyLDEyLjIxOFpcIiBzdHlsZT1cImZpbGw6I2ZmZTg4NVwiLz48cGF0aCBkPVwiTTEyLjcsMTIuMjE4Yy42MTMsMCwxLjIyNiwwLDEuODM5LDBxMCwzLjc4MywwLDcuNTY2Yy0uNjExLDAtMS4yMjIuMDEyLTEuODMyLS4wMDgsMC0xLjY2NCwwLTMuMzI5LDAtNC45OTQtMS42LDEuNjA3LTMuMjA5LDMuMi00LjgxMSw0LjgtLjA4OS4wOC0uMTY2LjIxNy0uMzA1LjE5NC0uODI0LS4wMDYtMS42NDksMC0yLjQ3NCwwUTguOTE2LDE2LDEyLjcsMTIuMjE4WlwiIHN0eWxlPVwiZmlsbDojZmZlODg1XCIvPjxwYXRoIGQ9XCJNMTQuOTU4LDEyLjIyYy40Ny0uMDA5LjkzOSwwLDEuNDA5LDAsLjgzNi44NTMsMS42OSwxLjY4OSwyLjUzNiwyLjUzMnExLjI2OC0xLjI2NywyLjUzOS0yLjUzMi43LDAsMS40LDAtLjAwOCwzLjc4NCwwLDcuNTY3Yy0uNDcxLDAtLjk0My4wMDYtMS40MTQsMHEuMDA4LTIuMzg3LDAtNC43NzNjLS44NDQuODQzLTEuNjc2LDEuNy0yLjUyNiwyLjUzNi0uODU2LS44MzUtMS42ODctMS42OTUtMi41MzItMi41NDEsMCwxLjU5NC0uMDA2LDMuMTg4LjAwNiw0Ljc4MS0uNDcyLDAtLjk0My4wMDUtMS40MTUsMFExNC45NTgsMTYsMTQuOTU4LDEyLjIyWlwiIHN0eWxlPVwiZmlsbDojZmZlODg1XCIvPjxwYXRoIGQ9XCJNMjMuMjU5LDEyLjIxN2MuNDcyLDAsLjk0NC0uMDA3LDEuNDE2LDBxLS4wMDcsMy4wODMsMCw2LjE2NmMxLjI2LDAsMi41MjEsMCwzLjc4MiwwLC4wNjMuMDA2LjE0NC0uMDEyLjE5MS4wNDUuNDQ4LjQ1NC45MDcuOSwxLjM1MywxLjM1NHEtMy4zNzEuMDA3LTYuNzQxLDBRMjMuMjY3LDE2LDIzLjI1OSwxMi4yMTdaXCIgc3R5bGU9XCJmaWxsOiNmZmU4ODVcIi8+YCxcbiAgXCJZQU5HXCI6IGA8cGF0aCBkPVwiTTguODc3LDIzLjE1OWMwLTUuNTM1LDMuOTkyLTcuMTY4LDcuODk0LTcuMTY4LDMuMzU3LDAsNS45ODgtMy44MTEsNS45ODgtNi42MjQsMC0zLjYyMS0yLjQ4Ny01LjgzMS00Ljg4Mi03LjEyQTEzLjg4MSwxMy44ODEsMCwxLDAsMTQuNSwyOS44QzEwLjQ5MSwyOC4yNDgsOC44NzcsMjUuMzI0LDguODc3LDIzLjE1OVpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE0LjQ4MiwyOS45MTdBMTQsMTQsMCwwLDEsMTYsMmExNC4xNTQsMTQuMTU0LDAsMCwxLDEuODkzLjEzMWwuMDQuMDEzYzIuMjU1LDEuMjEzLDQuOTQ0LDMuNDUyLDQuOTQ0LDcuMjIzLDAsMi43MTUtMi41NjQsNi43NDEtNi4xMDYsNi43NDEtMi45LDAtNy43NzYuOTE2LTcuNzc2LDcuMDUsMCwyLjAyMiwxLjQ1MSw0Ljk0Niw1LjU0Miw2LjUzMVpNMTYsMi4yMzZBMTMuNzY1LDEzLjc2NSwwLDAsMCwxMy42MzcsMjkuNTZjLTMuNTgxLTEuNjg0LTQuODc3LTQuNDQ3LTQuODc3LTYuNCwwLTYuNTc2LDUuNi03LjI4Niw4LjAxMi03LjI4NiwzLjQwNiwwLDUuODctMy44ODYsNS44Ny02LjUwNiwwLTMuNjQ1LTIuNjA2LTUuODItNC44LTcuMDA2QTEzLjkyOCwxMy45MjgsMCwwLDAsMTYsMi4yMzZaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PHBhdGggZD1cIk0yOS44ODIsMTZhMTMuODgyLDEzLjg4MiwwLDAsMC0xMi0xMy43NTJjMi40LDEuMjg5LDQuODgyLDMuNSw0Ljg4Miw3LjEyLDAsMi44MTMtMi42MzEsNi42MjQtNS45ODgsNi42MjQtMy45LDAtNy44OTQsMS42MzMtNy44OTQsNy4xNjgsMCwyLjE2NiwxLjYxMyw1LjA4OSw1LjYxOCw2LjY0MUExMy44NzUsMTMuODc1LDAsMCwwLDI5Ljg4MiwxNlpcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz48cGF0aCBkPVwiTTE2LDMwYTE0LjIsMTQuMiwwLDAsMS0xLjUxOC0uMDgzbC0uMDMtLjAwN2MtNC4yLTEuNjI4LTUuNjkzLTQuNjU0LTUuNjkzLTYuNzUsMC02LjU3Niw1LjYtNy4yODYsOC4wMTItNy4yODYsMy40MDYsMCw1Ljg3LTMuODg2LDUuODctNi41MDYsMC0zLjY1NS0yLjYyMS01LjgzMy00LjgyLTcuMDE2bC4wNzItLjIyMUExNCwxNCwwLDAsMSwxNiwzMFptLTEuNDc3LS4zMTZBMTMuNzU2LDEzLjc1NiwwLDAsMCwyOS43NjQsMTYsMTMuODA3LDEzLjgwNywwLDAsMCwxOC41LDIuNDY2YzIuMTE1LDEuMjcyLDQuMzc3LDMuNDQxLDQuMzc3LDYuOSwwLDIuNzE1LTIuNTY0LDYuNzQxLTYuMTA2LDYuNzQxLTIuOSwwLTcuNzc2LjkxNi03Ljc3Niw3LjA1QzksMjUuMTc4LDEwLjQ0MywyOC4xLDE0LjUyMywyOS42ODRaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PGNpcmNsZSBjeD1cIjE1Ljk0M1wiIGN5PVwiMjIuNzg3XCIgcj1cIjEuNTA2XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PGNpcmNsZSBjeD1cIjE2LjAwN1wiIGN5PVwiOS4xNDJcIiByPVwiMS41MDZcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz5gLFxuICBcIlppZ1wiOiBgPHBvbHlnb24gcG9pbnRzPVwiNS43MzMgMTkuNzMxIDUuNzMzIDEyLjI2NCA4LjUzMyAxMi4yNjQgOC41MzMgOC41MzEgMiA4LjUzMSAyIDIzLjQ2NCA1LjU0NyAyMy40NjQgOC45MDcgMTkuNzMxIDUuNzMzIDE5LjczMVwiIHN0eWxlPVwiZmlsbDojZjdhNDFkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI2LjQ1MyA4LjUzMSAyMy4wOTMgMTIuMjY0IDI2LjI2NyAxMi4yNjQgMjYuMjY3IDE5LjczMSAyMy40NjcgMTkuNzMxIDIzLjQ2NyAyMy40NjQgMzAgMjMuNDY0IDMwIDguNTMxIDI2LjQ1MyA4LjUzMVwiIHN0eWxlPVwiZmlsbDojZjdhNDFkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI2Ljg3NSA2LjcwNyAyMC41MTMgOC41MzEgOS40NjcgOC41MzEgOS40NjcgMTIuMjY0IDE2Ljg0NyAxMi4yNjQgNS4xMTUgMjUuMjkzIDExLjQ5NyAyMy40NjQgMjIuNTMzIDIzLjQ2NCAyMi41MzMgMTkuNzMxIDE1LjE0OCAxOS43MzEgMjYuODc1IDYuNzA3XCIgc3R5bGU9XCJmaWxsOiNmN2E0MWRcIi8+YFxufSIsICJpbXBvcnQgeyBMYW5ndWFnZXMsIG1hbnVhbExhbmcsIEljb25zIH0gZnJvbSBcIi4vQ29uc3RcIjtcbmltcG9ydCB7IENvZGVibG9ja0N1c3RvbWl6ZXJTZXR0aW5ncyB9IGZyb20gXCIuL1NldHRpbmdzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdEFuZFRyaW1TdHJpbmcoc3RyKSB7XG4gIGlmICghc3RyKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIFxuICAvLyBSZXBsYWNlICogd2l0aCAuKlxuICBzdHIgPSBzdHIucmVwbGFjZSgvXFwqL2csICcuKicpO1xuICBcbiAgaWYgKCFzdHIuaW5jbHVkZXMoXCIsXCIpKSB7XG4gICAgcmV0dXJuIFtzdHJdO1xuICB9XG4gIFxuICByZXR1cm4gc3RyLnNwbGl0KFwiLFwiKS5tYXAocyA9PiBzLnRyaW0oKSk7XG59Ly8gc3BsaXRBbmRUcmltU3RyaW5nXG5cbmV4cG9ydCBmdW5jdGlvbiBzZWFyY2hTdHJpbmcoc3RyLCBzZWFyY2hUZXJtKSB7XG4gIGNvbnN0IG9yaWdpbmFsU3RyID0gc3RyO1xuICBzdHIgPSBzdHIudG9Mb3dlckNhc2UoKTtcbiAgc2VhcmNoVGVybSA9IHNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKTtcbiAgaWYgKHNlYXJjaFRlcm0gPT09IFwiZmlsZTpcIikge1xuICAgIGlmIChzdHIuaW5jbHVkZXMoc2VhcmNoVGVybSkpIHtcbiAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBzdHIuaW5kZXhPZihzZWFyY2hUZXJtKSArIHNlYXJjaFRlcm0ubGVuZ3RoO1xuICAgICAgbGV0IHJlc3VsdCA9IFwiXCI7XG4gICAgICBpZiAoc3RyW3N0YXJ0SW5kZXhdID09PSBcIlxcXCJcIikge1xuICAgICAgICBjb25zdCBlbmRJbmRleCA9IHN0ci5pbmRleE9mKFwiXFxcIlwiLCBzdGFydEluZGV4ICsgMSk7XG4gICAgICAgIGlmIChlbmRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICByZXN1bHQgPSBvcmlnaW5hbFN0ci5zdWJzdHJpbmcoc3RhcnRJbmRleCArIDEsIGVuZEluZGV4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgPSBvcmlnaW5hbFN0ci5zdWJzdHJpbmcoc3RhcnRJbmRleCArIDEpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBlbmRJbmRleCA9IHN0ci5pbmRleE9mKFwiIFwiLCBzdGFydEluZGV4KTtcbiAgICAgICAgaWYgKGVuZEluZGV4ICE9PSAtMSkge1xuICAgICAgICAgIHJlc3VsdCA9IG9yaWdpbmFsU3RyLnN1YnN0cmluZyhzdGFydEluZGV4LCBlbmRJbmRleCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gb3JpZ2luYWxTdHIuc3Vic3RyaW5nKHN0YXJ0SW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0LnRyaW0oKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoc2VhcmNoVGVybSA9PT0gXCJgYGBcIikge1xuICAgIGlmIChzdHIuc3RhcnRzV2l0aChzZWFyY2hUZXJtKSkge1xuICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IHNlYXJjaFRlcm0ubGVuZ3RoO1xuICAgICAgY29uc3QgZW5kSW5kZXggPSBzdHIuaW5kZXhPZihcIiBcIiwgc3RhcnRJbmRleCk7XG4gICAgICBsZXQgd29yZCA9IFwiXCI7XG4gICAgICBpZiAoZW5kSW5kZXggIT09LTEpIHtcbiAgICAgICAgd29yZCA9IG9yaWdpbmFsU3RyLnN1YnN0cmluZyhzdGFydEluZGV4LCBlbmRJbmRleCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3b3JkID0gb3JpZ2luYWxTdHIuc3Vic3RyaW5nKHN0YXJ0SW5kZXgpO1xuICAgICAgfVxuICAgICAgaWYgKCF3b3JkLmluY2x1ZGVzKFwiOlwiKSkge1xuICAgICAgICBpZiAod29yZC50b0xvd2VyQ2FzZSgpID09PSBcImZvbGRcIikgXG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZXR1cm4gd29yZDtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoc2VhcmNoVGVybSA9PT0gJ2ZvbGQnKSB7XG4gICAgaWYgKHN0ci5pbmNsdWRlcyhcIiBmb2xkIFwiKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGluZGV4ID0gc3RyLmluZGV4T2Yoc2VhcmNoVGVybSk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSAmJiBpbmRleCA9PT0gc3RyLmxlbmd0aCAtIHNlYXJjaFRlcm0ubGVuZ3RoICYmIHN0cltpbmRleCAtIDFdID09PSBcIiBcIikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChzdHIuaW5jbHVkZXMoXCJgYGBmb2xkIFwiKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChzdHIuaW5jbHVkZXMoXCJgYGBmb2xkXCIpICYmIHN0ci5pbmRleE9mKFwiYGBgZm9sZFwiKSArIFwiYGBgZm9sZFwiLmxlbmd0aCA9PT0gc3RyLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgaWYgKHN0ci5pbmNsdWRlcyhzZWFyY2hUZXJtKSkge1xuICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IHN0ci5pbmRleE9mKHNlYXJjaFRlcm0pICsgc2VhcmNoVGVybS5sZW5ndGg7XG4gICAgICBjb25zdCBlbmRJbmRleCA9IHN0ci5pbmRleE9mKFwiIFwiLCBzdGFydEluZGV4KTtcbiAgICAgIGlmIChlbmRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsU3RyLnN1YnN0cmluZyhzdGFydEluZGV4LCBlbmRJbmRleCkudHJpbSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsU3RyLnN1YnN0cmluZyhzdGFydEluZGV4KS50cmltKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICByZXR1cm4gbnVsbDtcbn0vL3NlYXJjaFN0cmluZ1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGlnaGxpZ2h0ZWRMaW5lcyhwYXJhbXM6IHN0cmluZyk6IG51bWJlcltdIHtcbiAgaWYgKCFwYXJhbXMpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCB0cmltbWVkUGFyYW1zID0gcGFyYW1zLnRyaW0oKTtcbiAgY29uc3QgbGluZXMgPSB0cmltbWVkUGFyYW1zLnNwbGl0KFwiLFwiKTtcblxuICByZXR1cm4gbGluZXMubWFwKGxpbmUgPT4ge1xuICAgIGlmIChsaW5lLmluY2x1ZGVzKFwiLVwiKSkge1xuICAgICAgY29uc3QgcmFuZ2UgPSBsaW5lLnNwbGl0KFwiLVwiKTtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gcGFyc2VJbnQocmFuZ2VbMF0sIDEwKTtcbiAgICAgIGNvbnN0IGVuZCA9IHBhcnNlSW50KHJhbmdlWzFdLCAxMCk7XG4gICAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogZW5kIC0gc3RhcnQgKyAxIH0sIChfLCBpKSA9PiBzdGFydCArIGkpO1xuICAgIH1cbiAgICByZXR1cm4gcGFyc2VJbnQobGluZSwgMTApO1xuICB9KS5mbGF0KCk7XG59Ly8gZ2V0SGlnaGxpZ2h0ZWRMaW5lc1xuXG5leHBvcnQgZnVuY3Rpb24gaXNFeGNsdWRlZChsaW5lVGV4dDogc3RyaW5nLCBleGNsdWRlTGFuZ3M6IHN0cmluZ1tdKSA6IGJvb2xlYW4ge1xuICBjb25zdCBjb2RlQmxvY2tMYW5nID0gc2VhcmNoU3RyaW5nKGxpbmVUZXh0LCBcImBgYFwiKTtcbiAgY29uc3QgcmVnZXhMYW5ncyA9IHNwbGl0QW5kVHJpbVN0cmluZyhleGNsdWRlTGFuZ3MpLm1hcChsYW5nID0+IG5ldyBSZWdFeHAoYF4ke2xhbmcucmVwbGFjZSgvXFwqL2csICcuKicpfSRgLCAnaScpKTtcbiAgXG4gIGZvciAoY29uc3QgcmVnZXhMYW5nIG9mIHJlZ2V4TGFuZ3MpIHtcbiAgICBpZiAoY29kZUJsb2NrTGFuZyAmJiByZWdleExhbmcudGVzdChjb2RlQmxvY2tMYW5nKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIFxuICByZXR1cm4gZmFsc2U7XG59Ly8gaXNFeGNsdWRlZFxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGFuZ3VhZ2VJY29uKERpc3BsYXlOYW1lKSB7XG4gIGlmICghRGlzcGxheU5hbWUpXG4gICAgcmV0dXJuIFwiXCI7XG4gICAgXG4gIGlmIChJY29ucy5oYXNPd25Qcm9wZXJ0eShEaXNwbGF5TmFtZSkpIHtcbiAgICByZXR1cm4gSWNvbnNbRGlzcGxheU5hbWVdO1xuICB9XG4gIFxuICByZXR1cm4gbnVsbDtcbn0vLyBnZXRMYW5ndWFnZUljb25cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExhbmd1YWdlTmFtZShjb2RlKSB7XG4gIGlmICghY29kZSlcbiAgICByZXR1cm4gXCJcIjtcbiAgXG4gIGNvZGUgPSBjb2RlLnRvTG93ZXJDYXNlKCk7XG4gIFxuICBpZiAoTGFuZ3VhZ2VzLmhhc093blByb3BlcnR5KGNvZGUpKSB7XG4gICAgcmV0dXJuIExhbmd1YWdlc1tjb2RlXTtcbiAgfSBlbHNlIGlmIChtYW51YWxMYW5nLmhhc093blByb3BlcnR5KGNvZGUpKSB7XG4gICAgcmV0dXJuIG1hbnVhbExhbmdbY29kZV07XG4gIH0gZWxzZSBpZiAoY29kZSl7XG4gICAgICByZXR1cm4gY29kZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGNvZGUuc2xpY2UoMSk7XG4gIH1cbiAgXG4gIHJldHVybiBcIlwiO1xufS8vIGdldExhbmd1YWdlTmFtZVxuXG5leHBvcnQgY29uc3QgQkxPQlM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbmV4cG9ydCBmdW5jdGlvbiBsb2FkSWNvbnMoKXtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoSWNvbnMpKSB7XG4gICAgQkxPQlNba2V5LnJlcGxhY2UoL1xccy9nLCBcIl9cIildID0gVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHZpZXdCb3g9XCIwIDAgMzIgMzJcIj4ke3ZhbHVlfTwvc3ZnPmBdLCB7IHR5cGU6IFwiaW1hZ2Uvc3ZnK3htbFwiIH0pKTtcbiAgfVxufS8vIGxvYWRJY29uc1xuXG4vLyBGdW5jdGlvbnMgZm9yIGRpc3BsYXlpbmcgaGVhZGVyIEJFR0lOXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29udGFpbmVyKHNwZWNpZmljOiBib29sZWFuKSB7XG4gIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKGBjb2RlYmxvY2stY3VzdG9taXplci1oZWFkZXItY29udGFpbmVyJHtzcGVjaWZpYz8nLXNwZWNpZmljJzonJ31gKTtcbiAgcmV0dXJuIGNvbnRhaW5lcjtcbn0vLyBjcmVhdGVDb250YWluZXJcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvZGVibG9ja0xhbmcobGFuZzogc3RyaW5nKSB7XG4gIGNvbnN0IGNvZGVibG9ja0xhbmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICBjb2RlYmxvY2tMYW5nLmlubmVyVGV4dCA9IGxhbmc7XG4gIGNvZGVibG9ja0xhbmcuY2xhc3NMaXN0LmFkZChgY29kZWJsb2NrLWN1c3RvbWl6ZXItaGVhZGVyLWxhbmd1YWdlLXRhZy0ke2dldExhbmd1YWdlTmFtZShsYW5nKS50b0xvd2VyQ2FzZSgpfWApO1xuICByZXR1cm4gY29kZWJsb2NrTGFuZztcbn0vLyBjcmVhdGVDb2RlYmxvY2tMYW5nXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb2RlYmxvY2tJY29uKGRpc3BsYXlMYW5nOiBzdHJpbmcpIHtcbiAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgY29uc3QgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImltZ1wiKTtcbiAgaW1nLmNsYXNzTGlzdC5hZGQoXCJjb2RlYmxvY2stY3VzdG9taXplci1pY29uXCIpO1xuICBpbWcud2lkdGggPSAyODsgLy8zMlxuICBpbWcuc3JjID0gQkxPQlNbZGlzcGxheUxhbmcucmVwbGFjZSgvXFxzL2csIFwiX1wiKV07XG5cbiAgZGl2LmFwcGVuZENoaWxkKGltZyk7XG4gIFxuICByZXR1cm4gZGl2O1xufS8vIGNyZWF0ZUNvZGVibG9ja0ljb25cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZpbGVOYW1lKHRleHQ6IHN0cmluZykge1xuICBjb25zdCBmaWxlTmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gIGZpbGVOYW1lLmlubmVyVGV4dCA9IHRleHQ7XG4gIGZpbGVOYW1lLmNsYXNzTGlzdC5hZGQoXCJjb2RlYmxvY2stY3VzdG9taXplci1oZWFkZXItdGV4dFwiKTtcbiAgcmV0dXJuIGZpbGVOYW1lO1xufS8vIGNyZWF0ZUZpbGVOYW1lXG5cbi8vIEZ1bmN0aW9ucyBmb3IgZGlzcGxheWluZyBoZWFkZXIgRU5EXG5cbmNvbnN0IHN0eWxlc0RpY3QgPSB7XG4gIGFjdGl2ZUNvZGVCbG9ja0xpbmVDb2xvcjogJ2NvZGVibG9jay1hY3RpdmUtbGluZS1jb2xvcicsXG4gIGFjdGl2ZUxpbmVDb2xvcjogJ2VkaXRvci1hY3RpdmUtbGluZS1jb2xvcicsXG4gIGJhY2tncm91bmRDb2xvcjogJ2NvZGVibG9jay1iYWNrZ3JvdW5kLWNvbG9yJyxcbiAgaGlnaGxpZ2h0Q29sb3I6ICdoaWdobGlnaHQtY29sb3InLFxuICBoZWFkZXJDb2xvcjogJ2hlYWRlci1iYWNrZ3JvdW5kLWNvbG9yJyxcbiAgaGVhZGVyVGV4dENvbG9yOiAnaGVhZGVyLXRleHQtY29sb3InLFxuICBoZWFkZXJMaW5lQ29sb3I6ICdoZWFkZXItbGluZS1jb2xvcicsXG4gIGd1dHRlclRleHRDb2xvcjogJ2d1dHRlci10ZXh0LWNvbG9yJyxcbiAgZ3V0dGVyQmFja2dyb3VuZENvbG9yOiAnZ3V0dGVyLWJhY2tncm91bmQtY29sb3InLFxuICBjb2RlQmxvY2tMYW5nQ29sb3I6ICdsYW5ndWFnZS10YWctdGV4dC1jb2xvcicsXG4gIGNvZGVCbG9ja0xhbmdCYWNrZ3JvdW5kQ29sb3I6ICdsYW5ndWFnZS10YWctYmFja2dyb3VuZC1jb2xvcicsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVTZXR0aW5nU3R5bGVzKHNldHRpbmdzOiBDb2RlYmxvY2tDdXN0b21pemVyU2V0dGluZ3MpIHtcbiAgbGV0IGNvbG9yVGhlbWVzID0gc2V0dGluZ3MuY29sb3JUaGVtZXM7XG4gIGxldCBzdHlsZUlkID0gJ2NvZGVibG9jay1jdXN0b21pemVyLXN0eWxlcydcbiAgbGV0IHN0eWxlVGFnID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc3R5bGVJZCk7XG4gIGlmICh0eXBlb2Yoc3R5bGVUYWcpID09ICd1bmRlZmluZWQnIHx8IHN0eWxlVGFnID09IG51bGwpIHtcbiAgICBzdHlsZVRhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgc3R5bGVUYWcuaWQgPSBzdHlsZUlkO1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQoc3R5bGVUYWcpO1xuICB9XG4gIGxldCBjdXJyZW50TW9kZSA9IGdldEN1cnJlbnRNb2RlKClcbiAgbGV0IGRlZmF1bHRDb2xvcnMgPSBzZXR0aW5ncy5jb2xvclRoZW1lcy5maW5kKCh0aGVtZSkgPT4ge3JldHVybiB0aGVtZVsnbmFtZSddID09IGAke2N1cnJlbnRNb2RlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2N1cnJlbnRNb2RlLnNsaWNlKDEpfSBUaGVtZWB9KVsnY29sb3JzJ107XG4gIGxldCB0aGVtZUNvbG9ycyA9IHNldHRpbmdzLmNvbG9yVGhlbWVzLmZpbmQoKHRoZW1lKSA9PiB7cmV0dXJuIHRoZW1lWyduYW1lJ10gPT0gc2V0dGluZ3MuU2VsZWN0ZWRUaGVtZX0pWydjb2xvcnMnXTtcbiAgbGV0IGN1cnJlbnRUaGVtZSA9IHtuYW1lOiAnY3VycmVudCcsIGNvbG9yczoge319O1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhzdHlsZXNEaWN0KSkge1xuICAgIGxldCBkZWZhdWx0VmFsdWUgPSBhY2Nlc3NTZXR0aW5nKGtleSxkZWZhdWx0Q29sb3JzKS50b0xvd2VyQ2FzZSgpO1xuICAgIGxldCB0aGVtZVZhbHVlID0gYWNjZXNzU2V0dGluZyhrZXksdGhlbWVDb2xvcnMpLnRvTG93ZXJDYXNlKCk7XG4gICAgbGV0IHNldHRpbmdzVmFsdWUgPSBhY2Nlc3NTZXR0aW5nKGtleSxzZXR0aW5ncykudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoZGVmYXVsdFZhbHVlICE9PSBzZXR0aW5nc1ZhbHVlKSB7XG4gICAgICBjdXJyZW50VGhlbWVbJ2NvbG9ycyddW2tleV0gPSBzZXR0aW5nc1ZhbHVlO1xuICAgIH0gZWxzZSBpZiAoZGVmYXVsdFZhbHVlICE9PSB0aGVtZVZhbHVlKSB7XG4gICAgICBjdXJyZW50VGhlbWVbJ2NvbG9ycyddW2tleV0gPSB0aGVtZVZhbHVlO1xuICAgIH1cbiAgfVxuICBsZXQgYWx0SGlnaGxpZ2h0U3R5bGluZyA9IHNldHRpbmdzLmFsdGVybmF0ZUNvbG9ycy5yZWR1Y2UoKHN0eWxpbmcsYWx0SGlnaGxpZ2h0KSA9PiB7cmV0dXJuIHN0eWxpbmcgKyBgXG4gICAgLmNvZGVibG9jay1jdXN0b21pemVyLWxpbmUtaGlnaGxpZ2h0ZWQtJHthbHRIaWdobGlnaHRbJ25hbWUnXS5yZXBsYWNlKC9cXHMrL2csICctJykudG9Mb3dlckNhc2UoKX0ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29kZWJsb2NrLWN1c3RvbWlzZXItaGlnaGxpZ2h0LSR7YWx0SGlnaGxpZ2h0WyduYW1lJ10ucmVwbGFjZSgvXFxzKy9nLCAnLScpLnRvTG93ZXJDYXNlKCl9LWNvbG9yKSAhaW1wb3J0YW50O1xuICAgIH1cbiAgYH0sJycpO1xuICBsZXQgdGV4dFNldHRpbmdzU3R5bGVzID0gYFxuICAgIGJvZHkuY29kZWJsb2NrLWN1c3RvbWl6ZXIgW2NsYXNzXj1cImNvZGVibG9jay1jdXN0b21pemVyLWhlYWRlci1sYW5ndWFnZS10YWdcIl0ge1xuICAgICAgLS1jb2RlYmxvY2stY3VzdG9taXplci1sYW5ndWFnZS10YWctdGV4dC1ib2xkOiAke3NldHRpbmdzLmhlYWRlci5iQ29kZWJsb2NrTGFuZ0JvbGQ/J2JvbGQnOidub3JtYWwnfTtcbiAgICAgIC0tY29kZWJsb2NrLWN1c3RvbWl6ZXItbGFuZ3VhZ2UtdGFnLXRleHQtaXRhbGljOiAke3NldHRpbmdzLmhlYWRlci5iQ29kZWJsb2NrTGFuZ0l0YWxpYz8naXRhbGljJzonbm9ybWFsJ307XG4gICAgfVxuICAgIGJvZHkuY29kZWJsb2NrLWN1c3RvbWl6ZXIgLmNvZGVibG9jay1jdXN0b21pemVyLWhlYWRlci10ZXh0IHtcbiAgICAgIC0tY29kZWJsb2NrLWN1c3RvbWl6ZXItaGVhZGVyLXRleHQtYm9sZDogJHtzZXR0aW5ncy5oZWFkZXIuYkhlYWRlckJvbGQ/J2JvbGQnOidub3JtYWwnfTtcbiAgICAgIC0tY29kZWJsb2NrLWN1c3RvbWl6ZXItaGVhZGVyLXRleHQtaXRhbGljOiAke3NldHRpbmdzLmhlYWRlci5iSGVhZGVySXRhbGljPydpdGFsaWMnOidub3JtYWwnfTtcbiAgICB9XG4gIGA7XG4gIHN0eWxlVGFnLmlubmVyVGV4dCA9IGNvbG9yVGhlbWVzLnJlZHVjZSgoc3R5bGVzLHRoZW1lKSA9PiB7XG4gICAgcmV0dXJuIHN0eWxlcyArIGZvcm1hdFN0eWxlcyh0aGVtZSxzZXR0aW5ncy5hbHRlcm5hdGVDb2xvcnMpO1xuICB9LGZvcm1hdFN0eWxlcyhjdXJyZW50VGhlbWUsc2V0dGluZ3MuYWx0ZXJuYXRlQ29sb3JzKSthbHRIaWdobGlnaHRTdHlsaW5nK3RleHRTZXR0aW5nc1N0eWxlcykudHJpbSgpLnJlcGxhY2UoL1tcXHJcXG5cXHNdKy9nLCAnICcpO1xuICB1cGRhdGVTZXR0aW5nQ2xhc3NlcyhzZXR0aW5ncyk7XG59Ly8gc2V0U3R5bGVzXG5cbmZ1bmN0aW9uIHVwZGF0ZVNldHRpbmdDbGFzc2VzKHNldHRpbmdzKSB7XG4gIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShcImNvZGVibG9jay1jdXN0b21pemVyLWFjdGl2ZS1saW5lLWhpZ2hsaWdodFwiLFwiY29kZWJsb2NrLWN1c3RvbWl6ZXItYWN0aXZlLWxpbmUtaGlnaGxpZ2h0LWNvZGVibG9ja1wiLFwiY29kZWJsb2NrLWN1c3RvbWl6ZXItYWN0aXZlLWxpbmUtaGlnaGxpZ2h0LWVkaXRvclwiKVxuICBpZiAoc2V0dGluZ3MuYkFjdGl2ZUxpbmVIaWdobGlnaHQgJiYgc2V0dGluZ3MuYkFjdGl2ZUNvZGVibG9ja0xpbmVIaWdobGlnaHQpIHtcbiAgICAvLyBJbnNpZGUgYW5kIG91dHNpZGUgb2YgY29kZWJsb2NrcyB3aXRoIGRpZmZlcmVudCBjb2xvcnNcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoXCJjb2RlYmxvY2stY3VzdG9taXplci1hY3RpdmUtbGluZS1oaWdobGlnaHRcIik7XG4gIH0gZWxzZSBpZiAoc2V0dGluZ3MuYkFjdGl2ZUxpbmVIaWdobGlnaHQgJiYgIXNldHRpbmdzLmJBY3RpdmVDb2RlYmxvY2tMaW5lSGlnaGxpZ2h0KSB7XG4gICAgLy8gT25seSBvdXRzaWRlIGNvZGVibG9ja3NcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoXCJjb2RlYmxvY2stY3VzdG9taXplci1hY3RpdmUtbGluZS1oaWdobGlnaHQtZWRpdG9yXCIpO1xuICB9IGVsc2UgaWYgKCFzZXR0aW5ncy5iQWN0aXZlTGluZUhpZ2hsaWdodCAmJiBzZXR0aW5ncy5iQWN0aXZlQ29kZWJsb2NrTGluZUhpZ2hsaWdodCkge1xuICAgIC8vIE9ubHkgaW5zaWRlIGNvZGVibG9ja3NcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoXCJjb2RlYmxvY2stY3VzdG9taXplci1hY3RpdmUtbGluZS1oaWdobGlnaHQtY29kZWJsb2NrXCIpO1xuICB9XG4gIFxuICBpZiAoc2V0dGluZ3MuYkVuYWJsZUxpbmVOdW1iZXJzKSB7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiY29kZWJsb2NrLWN1c3RvbWl6ZXItc2hvdy1saW5lLW51bWJlcnNcIik7XG4gIH0gZWxzZSB7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKFwiY29kZWJsb2NrLWN1c3RvbWl6ZXItc2hvdy1saW5lLW51bWJlcnNcIik7XG4gIH1cblxuICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoXCJjb2RlYmxvY2stY3VzdG9taXplci1zaG93LWxhbmduYW1lc1wiLFwiY29kZWJsb2NrLWN1c3RvbWl6ZXItc2hvdy1sYW5nbmFtZXMtYWx3YXlzXCIpO1xuICBpZiAoc2V0dGluZ3MuaGVhZGVyLmJBbHdheXNEaXNwbGF5Q29kZWJsb2NrTGFuZyAmJiBzZXR0aW5ncy5iRGlzcGxheUNvZGVCbG9ja0xhbmd1YWdlKSB7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiY29kZWJsb2NrLWN1c3RvbWl6ZXItc2hvdy1sYW5nbmFtZXMtYWx3YXlzXCIpO1xuICB9IGVsc2UgaWYgKHNldHRpbmdzLmJEaXNwbGF5Q29kZUJsb2NrTGFuZ3VhZ2UpIHtcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoXCJjb2RlYmxvY2stY3VzdG9taXplci1zaG93LWxhbmduYW1lc1wiKTtcbiAgfVxuXG4gIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShcImNvZGVibG9jay1jdXN0b21pemVyLXNob3ctbGFuZ2ljb25zXCIsXCJjb2RlYmxvY2stY3VzdG9taXplci1zaG93LWxhbmdpY29ucy1hbHdheXNcIik7XG4gIGlmIChzZXR0aW5ncy5oZWFkZXIuYkFsd2F5c0Rpc3BsYXlDb2RlYmxvY2tJY29uICYmIHNldHRpbmdzLmJEaXNwbGF5Q29kZUJsb2NrSWNvbikge1xuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChcImNvZGVibG9jay1jdXN0b21pemVyLXNob3ctbGFuZ2ljb25zLWFsd2F5c1wiKTtcbiAgfSBlbHNlIGlmIChzZXR0aW5ncy5iRGlzcGxheUNvZGVCbG9ja0ljb24pIHtcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoXCJjb2RlYmxvY2stY3VzdG9taXplci1zaG93LWxhbmdpY29uc1wiKTtcbiAgfVxuXG4gIGlmIChzZXR0aW5ncy5iR3V0dGVySGlnaGxpZ2h0KSB7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdjb2RlYmxvY2stY3VzdG9taXplci1ndXR0ZXItaGlnaGxpZ2h0Jyk7XG4gIH0gZWxzZSB7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdjb2RlYmxvY2stY3VzdG9taXplci1ndXR0ZXItaGlnaGxpZ2h0Jyk7XG4gIH1cbn0vLyB1cGRhdGVTZXR0aW5nU3R5bGVzXG5cbmZ1bmN0aW9uIGZvcm1hdFN0eWxlcyh0aGVtZToge25hbWU6IHN0cmluZywgY29sb3JzOiBDb2RlYmxvY2tDdXN0b21pemVyQ29sb3JzfSxhbHRlcm5hdGVDb2xvcnMpIHsgLy9UT0RPIChAbWF5dXJhbmt2KSBBZGQgdHlwZSBoaW50IGZvciBhbHRlcm5hdGVDb2xvcnNcbiAgbGV0IGN1cnJlbnQgPSB0aGVtZVsnbmFtZSddID09IFwiY3VycmVudFwiO1xuICBsZXQgdGhlbWVDbGFzcyA9ICcnXG4gIGxldCBhbHRIaWdobGlnaHRTdHlsZXMgPSAnJ1xuICBpZiAodGhlbWVbJ25hbWUnXSA9PSAnTGlnaHQgVGhlbWUnKSB7XG4gICAgdGhlbWVDbGFzcyA9ICcudGhlbWUtbGlnaHQnO1xuICAgIGFsdEhpZ2hsaWdodFN0eWxlcyA9IGFkZEFsdEhpZ2hsaWdodENvbG9ycyhhbHRlcm5hdGVDb2xvcnMsdHJ1ZSk7XG4gIH0gZWxzZSBpZiAodGhlbWVbJ25hbWUnXSA9PSAnRGFyayBUaGVtZScpIHtcbiAgICB0aGVtZUNsYXNzID0gJy50aGVtZS1kYXJrJztcbiAgICBhbHRIaWdobGlnaHRTdHlsZXMgPSBhZGRBbHRIaWdobGlnaHRDb2xvcnMoYWx0ZXJuYXRlQ29sb3JzLGZhbHNlKTtcbiAgfSBlbHNlIGlmICh0aGVtZVsnbmFtZSddICE9ICdjdXJyZW50Jykge1xuICAgIHJldHVybiAnJztcbiAgICAvLyB0aGVtZUNsYXNzID0gdGhlbWVbJ25hbWUnXS5yZXBsYWNlKC9cXHMrL2csICctJykudG9Mb3dlckNhc2UoKTtcbiAgfVxuICByZXR1cm4gYFxuICAgIGJvZHkuY29kZWJsb2NrLWN1c3RvbWl6ZXIke2N1cnJlbnQgPycnOnRoZW1lQ2xhc3N9IHtcbiAgICAgICR7T2JqZWN0LmtleXMoc3R5bGVzRGljdCkucmVkdWNlKCh2YXJpYWJsZXMsa2V5KT0+e1xuICAgICAgICBsZXQgY3NzVmFyaWFibGUgPSBgLS1jb2RlYmxvY2stY3VzdG9taXplci0ke3N0eWxlc0RpY3Rba2V5XX1gO1xuICAgICAgICBsZXQgY3NzVmFsdWUgPSBhY2Nlc3NTZXR0aW5nKGtleSx0aGVtZVsnY29sb3JzJ10pO1xuICAgICAgICBsZXQgY3NzSW1wb3J0YW50ID0gKGN1cnJlbnQ/JyAhaW1wb3J0YW50JzonJyk7XG4gICAgICAgIGlmIChjc3NWYWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIHZhcmlhYmxlcyArIGAke2Nzc1ZhcmlhYmxlfTogJHtjc3NWYWx1ZSArIGNzc0ltcG9ydGFudH07YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdmFyaWFibGVzO1xuICAgICAgICB9XG4gICAgICB9LGFsdEhpZ2hsaWdodFN0eWxlcyl9XG4gICAgfVxuICBgO1xufS8vIGZvcm1hdFN0eWxlc1xuXG5mdW5jdGlvbiBhZGRBbHRIaWdobGlnaHRDb2xvcnMoYWx0ZXJuYXRlQ29sb3JzLCBsaWdodFRoZW1lOiBib29sZWFuKSB7IC8vVE9ETyAoQG1heXVyYW5rdikgQWRkIHR5cGUgaGludCBmb3IgYWx0ZXJuYXRlQ29sb3JzXG4gIGxldCBrZXkgPSBsaWdodFRoZW1lPydsaWdodENvbG9yJzonZGFya0NvbG9yJztcbiAgcmV0dXJuIGFsdGVybmF0ZUNvbG9ycy5yZWR1Y2UoKGFsdEhpZ2hsaWdodFN0eWxlcyxhbHRIaWdobGlnaHQpID0+IHtyZXR1cm4gYWx0SGlnaGxpZ2h0U3R5bGVzICsgYC0tY29kZWJsb2NrLWN1c3RvbWlzZXItaGlnaGxpZ2h0LSR7YWx0SGlnaGxpZ2h0WyduYW1lJ10ucmVwbGFjZSgvXFxzKy9nLCAnLScpLnRvTG93ZXJDYXNlKCl9LWNvbG9yOiAke2FsdEhpZ2hsaWdodFtrZXldfTtgfSwnJylcbn1cblxuZnVuY3Rpb24gYWNjZXNzU2V0dGluZyhrZXk6IHN0cmluZywgc2V0dGluZ3M6IENvZGVibG9ja0N1c3RvbWl6ZXJTZXR0aW5ncykge1xuICBpZiAoa2V5IGluIHNldHRpbmdzKSB7XG4gICAgcmV0dXJuIHNldHRpbmdzW2tleV07XG4gIH0gZWxzZSBpZiAoJ2hlYWRlcicgaW4gc2V0dGluZ3MpIHtcbiAgICBpZiAoa2V5IGluIHNldHRpbmdzWydoZWFkZXInXSkge1xuICAgICAgcmV0dXJuIHNldHRpbmdzWydoZWFkZXInXVtrZXldO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgYWx0X2tleSA9IGtleS5jaGFyQXQoNikudG9Mb3dlckNhc2UoKStrZXkuc2xpY2UoNyk7XG4gICAgICBpZiAoYWx0X2tleSBpbiBzZXR0aW5nc1snaGVhZGVyJ10pIHtcbiAgICAgICAgcmV0dXJuIHNldHRpbmdzWydoZWFkZXInXVthbHRfa2V5XTtcbiAgICAgIH0gXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLy8gU2V0dGluZyBNYW5hZ2VtZW50XG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3VycmVudE1vZGUoKSB7XG4gIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5Jyk7XG4gIGlmIChib2R5ICE9PSBudWxsKXtcbiAgICBpZiAoYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ3RoZW1lLWxpZ2h0JykpIHtcbiAgICAgIHJldHVybiBcImxpZ2h0XCI7XG4gICAgfSBlbHNlIGlmIChib2R5LmNsYXNzTGlzdC5jb250YWlucygndGhlbWUtZGFyaycpKSB7XG4gICAgICByZXR1cm4gXCJkYXJrXCI7XG4gICAgfVxuICB9XG4gIGNvbnNvbGUubG9nKCdXYXJuaW5nOiBDb3VsZG5cXCd0IGdldCBjdXJyZW50IHRoZW1lJyk7XG4gIHJldHVybiBcImxpZ2h0XCI7XG59IiwgImltcG9ydCB7IFN0YXRlRmllbGQsIFN0YXRlRWZmZWN0LCBSYW5nZVNldEJ1aWxkZXIgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivc3RhdGVcIjtcbmltcG9ydCB7IEVkaXRvclZpZXcsIERlY29yYXRpb24sIFdpZGdldFR5cGUgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuXG5pbXBvcnQgeyBzZWFyY2hTdHJpbmcsIGdldExhbmd1YWdlTmFtZSwgZ2V0TGFuZ3VhZ2VJY29uLCBpc0V4Y2x1ZGVkLCBjcmVhdGVDb250YWluZXIsIGNyZWF0ZVdyYXBwZXIsIGNyZWF0ZUNvZGVibG9ja0xhbmcsIGNyZWF0ZUNvZGVibG9ja0ljb24sIGNyZWF0ZUZpbGVOYW1lIH0gZnJvbSBcIi4vVXRpbHNcIjtcblxuZnVuY3Rpb24gZGVmYXVsdEZvbGQoc3RhdGU6IEVkaXRvclN0YXRlLCBzZXR0aW5nczogQ29kZWJsb2NrQ3VzdG9taXplclNldHRpbmdzKSB7XG4gIGxldCBDb2xsYXBzZVN0YXJ0ID0gbnVsbDtcbiAgbGV0IENvbGxhcHNlRW5kID0gbnVsbDtcbiAgbGV0IEZvbGQgPSBmYWxzZTtcbiAgbGV0IGJsb2NrRm91bmQgPSBmYWxzZTtcbiAgbGV0IGJFeGNsdWRlID0gZmFsc2U7XG4gIGNvbnN0IGJ1aWxkZXIgPSBuZXcgUmFuZ2VTZXRCdWlsZGVyPERlY29yYXRpb24+KCk7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgc3RhdGUuZG9jLmxpbmVzOyBpKyspIHtcbiAgICBjb25zdCBsaW5lVGV4dCA9IHN0YXRlLmRvYy5saW5lKGkpLnRleHQudG9TdHJpbmcoKTtcbiAgICBjb25zdCBsaW5lID0gc3RhdGUuZG9jLmxpbmUoaSk7XG4gICAgYkV4Y2x1ZGUgPSBpc0V4Y2x1ZGVkKGxpbmVUZXh0LCBzZXR0aW5ncy5FeGNsdWRlTGFuZ3MpO1xuICAgIGlmIChsaW5lVGV4dC5zdGFydHNXaXRoKCdgYGAnKSAmJiBsaW5lVGV4dC5pbmRleE9mKCdgYGAnLCAzKSA9PT0gLTEpIHtcbiAgICAgIGlmIChiRXhjbHVkZSlcbiAgICAgICAgY29udGludWU7XG4gICAgICBpZiAoQ29sbGFwc2VTdGFydCA9PT0gbnVsbCkge1xuICAgICAgICBGb2xkID0gc2VhcmNoU3RyaW5nKGxpbmVUZXh0LCBcImZvbGRcIik7XG4gICAgICAgIGlmIChGb2xkKVxuICAgICAgICAgIENvbGxhcHNlU3RhcnQgPSBsaW5lLmZyb207XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBibG9ja0ZvdW5kID0gdHJ1ZTtcbiAgICAgICAgQ29sbGFwc2VFbmQgPSBsaW5lLnRvO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChibG9ja0ZvdW5kKSB7XG4gICAgICAgIGlmIChDb2xsYXBzZVN0YXJ0ICE9IG51bGwgJiYgQ29sbGFwc2VFbmQgIT0gbnVsbCApeyAgICAgICAgICAgIFxuICAgICAgICAgIGNvbnN0IGRlY29yYXRpb24gPSBEZWNvcmF0aW9uLnJlcGxhY2UoeyBlZmZlY3Q6IENvbGxhcHNlLm9mKFtkb0ZvbGQucmFuZ2UoQ29sbGFwc2VTdGFydCwgQ29sbGFwc2VFbmQpXSksIGJsb2NrOnRydWUsIHNpZGU6LTEgfSk7XG4gICAgICAgICAgYnVpbGRlci5hZGQoQ29sbGFwc2VTdGFydCwgQ29sbGFwc2VFbmQsIGRlY29yYXRpb24gKTtcbiAgICAgICAgICBDb2xsYXBzZVN0YXJ0ID0gbnVsbDtcbiAgICAgICAgICBDb2xsYXBzZUVuZCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIGJsb2NrRm91bmQgPSBmYWxzZTtcbiAgICB9XG4gIH0vLyBmb3JcbiAgXG4gIHJldHVybiBidWlsZGVyLmZpbmlzaCgpO1xufS8vIGRlZmF1bHRGb2xkXG5cbmxldCBzZXR0aW5nczogQ29kZWJsb2NrQ3VzdG9taXplclNldHRpbmdzO1xuZXhwb3J0IGNvbnN0IGNvZGVibG9ja0hlYWRlciA9IFN0YXRlRmllbGQuZGVmaW5lPERlY29yYXRpb25TZXQ+KHtcbiAgY3JlYXRlKHN0YXRlKTogRGVjb3JhdGlvblNldCB7XG4gICAgcmV0dXJuIERlY29yYXRpb24ubm9uZTsgICAgXG4gIH0sXG4gIHVwZGF0ZShvbGRTdGF0ZTogRGVjb3JhdGlvblNldCwgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogRGVjb3JhdGlvblNldCB7XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBSYW5nZVNldEJ1aWxkZXI8RGVjb3JhdGlvbj4oKTtcbiAgICBsZXQgV2lkZ2V0U3RhcnQgPSBudWxsO1xuICAgIGxldCBGb2xkID0gZmFsc2U7XG4gICAgbGV0IGZpbGVOYW1lID0gbnVsbDtcbiAgICBsZXQgYkV4Y2x1ZGUgPSBmYWxzZTtcbiAgICBsZXQgc3BlY2lmaWNIZWFkZXIgPSB0cnVlOyAgICAgXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0cmFuc2FjdGlvbi5zdGF0ZS5kb2MubGluZXM7IGkrKykge1xuICAgICAgY29uc3QgbGluZVRleHQgPSB0cmFuc2FjdGlvbi5zdGF0ZS5kb2MubGluZShpKS50ZXh0LnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCBsaW5lID0gdHJhbnNhY3Rpb24uc3RhdGUuZG9jLmxpbmUoaSk7XG4gICAgICBjb25zdCBsYW5nID0gc2VhcmNoU3RyaW5nKGxpbmVUZXh0LCBcImBgYFwiKTsgICAgICBcbiAgICAgIGJFeGNsdWRlID0gaXNFeGNsdWRlZChsaW5lVGV4dCwgdGhpcy5zZXR0aW5ncy5FeGNsdWRlTGFuZ3MpO1xuICAgICAgc3BlY2lmaWNIZWFkZXIgPSB0cnVlO1xuICAgICAgaWYgKGxpbmVUZXh0LnN0YXJ0c1dpdGgoJ2BgYCcpICYmIGxpbmVUZXh0LmluZGV4T2YoJ2BgYCcsIDMpID09PSAtMSkge1xuICAgICAgICBpZiAoV2lkZ2V0U3RhcnQgPT09IG51bGwpIHtcbiAgICAgICAgICBXaWRnZXRTdGFydCA9IGxpbmU7XG4gICAgICAgICAgZmlsZU5hbWUgPSBzZWFyY2hTdHJpbmcobGluZVRleHQsIFwiZmlsZTpcIik7XG4gICAgICAgICAgRm9sZCA9IHNlYXJjaFN0cmluZyhsaW5lVGV4dCwgXCJmb2xkXCIpO1xuICAgICAgICAgIGlmICghYkV4Y2x1ZGUpIHtcbiAgICAgICAgICAgIGlmIChmaWxlTmFtZSA9PT0gbnVsbCB8fCBmaWxlTmFtZSA9PT0gXCJcIikge1xuICAgICAgICAgICAgICBpZiAoRm9sZCkge1xuICAgICAgICAgICAgICAgIGZpbGVOYW1lID0gJ0NvbGxhcHNlZCBDb2RlJztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmaWxlTmFtZSA9ICcnO1xuICAgICAgICAgICAgICAgIHNwZWNpZmljSGVhZGVyID0gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJ1aWxkZXIuYWRkKFdpZGdldFN0YXJ0LmZyb20sIFdpZGdldFN0YXJ0LmZyb20sIGNyZWF0ZURlY29yYXRpb25XaWRnZXQoZmlsZU5hbWUsIGdldExhbmd1YWdlTmFtZShsYW5nKSwgc3BlY2lmaWNIZWFkZXIpKTtcbiAgICAgICAgICAgIC8vRWRpdG9yVmlldy5yZXF1ZXN0TWVhc3VyZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgV2lkZ2V0U3RhcnQgPSBudWxsO1xuICAgICAgICAgIEZvbGQgPSBmYWxzZTtcbiAgICAgICAgICBmaWxlTmFtZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIFxuICAgIHJldHVybiBidWlsZGVyLmZpbmlzaCgpO1xuICB9LFxuICBwcm92aWRlKGZpZWxkOiBTdGF0ZUZpZWxkPERlY29yYXRpb25TZXQ+KTogRXh0ZW5zaW9uIHtcbiAgICByZXR1cm4gRWRpdG9yVmlldy5kZWNvcmF0aW9ucy5mcm9tKGZpZWxkKTtcbiAgfSxcbn0pOy8vIGNvZGVibG9ja0hlYWRlclxuXG5mdW5jdGlvbiBjcmVhdGVEZWNvcmF0aW9uV2lkZ2V0KHRleHRUb0Rpc3BsYXk6IHN0cmluZywgbGFuZ3VhZ2VOYW1lOiBzdHJpbmcsIHNwZWNpZmljSGVhZGVyOiBib29sZWFuKSB7XG4gIHJldHVybiBEZWNvcmF0aW9uLndpZGdldCh7IFxuICAgIHdpZGdldDogbmV3IFRleHRBYm92ZUNvZGVibG9ja1dpZGdldCh0ZXh0VG9EaXNwbGF5LCBsYW5ndWFnZU5hbWUsIHNwZWNpZmljSGVhZGVyKSwgYmxvY2s6IHRydWV9KTtcbn0vLyBjcmVhdGVEZWNvcmF0aW9uV2lkZ2V0XG5cbmNvbnN0IENvbGxhcHNlID0gU3RhdGVFZmZlY3QuZGVmaW5lKCksIFVuQ29sbGFwc2UgPSBTdGF0ZUVmZmVjdC5kZWZpbmUoKVxuXG5sZXQgcGx1Z2luU2V0dGluZ3M6IENvZGVibG9ja0N1c3RvbWl6ZXJTZXR0aW5ncztcbmV4cG9ydCBjb25zdCBjb2xsYXBzZUZpZWxkID0gU3RhdGVGaWVsZC5kZWZpbmUoeyAgXG4gIGNyZWF0ZShzdGF0ZSkge1xuICAgIHJldHVybiBkZWZhdWx0Rm9sZChzdGF0ZSwgY29sbGFwc2VGaWVsZC5wbHVnaW5TZXR0aW5ncyk7XG4gICAgLy9yZXR1cm4gRGVjb3JhdGlvbi5ub25lICAgXG4gIH0sXG4gIHVwZGF0ZSh2YWx1ZSwgdHIpIHtcbiAgICB2YWx1ZSA9IHZhbHVlLm1hcCh0ci5jaGFuZ2VzKVxuICAgIGZvciAoY29uc3QgZWZmZWN0IG9mIHRyLmVmZmVjdHMpIHtcbiAgICAgIGlmIChlZmZlY3QuaXMoQ29sbGFwc2UpKVxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnVwZGF0ZSh7YWRkOiBlZmZlY3QudmFsdWUsIHNvcnQ6IHRydWV9KTtcbiAgICAgIGVsc2UgaWYgKGVmZmVjdC5pcyhVbkNvbGxhcHNlKSkgXG4gICAgICAgIHZhbHVlID0gdmFsdWUudXBkYXRlKHtmaWx0ZXI6IGVmZmVjdC52YWx1ZX0pO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG4gIHByb3ZpZGU6IGYgPT4gRWRpdG9yVmlldy5kZWNvcmF0aW9ucy5mcm9tKGYpXG59KVxuXG5jb25zdCBkb0ZvbGQgPSBEZWNvcmF0aW9uLnJlcGxhY2Uoe2Jsb2NrOiB0cnVlfSk7XG5cbmNsYXNzIFRleHRBYm92ZUNvZGVibG9ja1dpZGdldCBleHRlbmRzIFdpZGdldFR5cGUge1xuICB0ZXh0OiBzdHJpbmc7XG4gIG9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyO1xuICB2aWV3OiBFZGl0b3JWaWV3O1xuXG4gIGNvbnN0cnVjdG9yKHRleHQ6IHN0cmluZywgTGFuZzogc3RyaW5nLCBzcGVjaWZpY0hlYWRlcjogYm9vbGVhbikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50ZXh0ID0gdGV4dDsgICAgXG4gICAgdGhpcy5MYW5nID0gTGFuZztcbiAgICB0aGlzLnNwZWNpZmljSGVhZGVyID0gc3BlY2lmaWNIZWFkZXI7XG4gICAgdGhpcy5vYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHRoaXMuaGFuZGxlTXV0YXRpb24pOyAgICBcbiAgfVxuICBcbiAgaGFuZGxlTXV0YXRpb24gPSAobXV0YXRpb25zLCB2aWV3KSA9PiB7XG4gICAgbXV0YXRpb25zLmZvckVhY2gobXV0YXRpb24gPT4ge1xuICAgICAgaWYgKG11dGF0aW9uLnRhcmdldC5oYXNBdHRyaWJ1dGUoXCJkYXRhLWNsaWNrZWRcIikpe1xuICAgICAgICBoYW5kbGVDbGljayh0aGlzLnZpZXcsIG11dGF0aW9uLnRhcmdldCk7ICAgICAgICBcbiAgICAgICAgLy90aGlzLnZpZXcudXBkYXRlKFtdKTtcbiAgICAgICAgLy90aGlzLnZpZXcuc3RhdGUudXBkYXRlKCk7XG4gICAgICAgIC8vRWRpdG9yVmlldy5yZXF1ZXN0TWVhc3VyZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvL3RoaXMudmlldy51cGRhdGUoW10pO1xuICAgIC8vdGhpcy52aWV3LnN0YXRlLnVwZGF0ZSgpO1xuICAgIC8vdGhpcy52aWV3LnJlcXVlc3RNZWFzdXJlKCk7XG4gIH1cbiAgICBcbiAgZXEob3RoZXI6IFRleHRBYm92ZUNvZGVibG9ja1dpZGdldCkge1xuICAgIHJldHVybiBvdGhlci50ZXh0ID09IHRoaXMudGV4dCAmJiBvdGhlci5MYW5nID09IHRoaXMuTGFuZyAmJiBvdGhlci5zcGVjaWZpY0hlYWRlciA9PSB0aGlzLnNwZWNpZmljSGVhZGVyXG4gIH1cbiAgICBcbiAgdG9ET00odmlldzogRWRpdG9yVmlldyk6IEhUTUxFbGVtZW50IHtcbiAgICB0aGlzLnZpZXcgPSB2aWV3O1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGNyZWF0ZUNvbnRhaW5lcih0aGlzLnNwZWNpZmljSGVhZGVyKTtcbiAgICBpZiAodGhpcy5MYW5nKXtcbiAgICAgIGNvbnN0IEljb24gPSBnZXRMYW5ndWFnZUljb24odGhpcy5MYW5nKVxuICAgICAgaWYgKEljb24pIHtcbiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGNyZWF0ZUNvZGVibG9ja0ljb24odGhpcy5MYW5nKSk7XG4gICAgICB9XG4gICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoY3JlYXRlQ29kZWJsb2NrTGFuZyh0aGlzLkxhbmcpKTtcbiAgICB9XG5cbiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoY3JlYXRlRmlsZU5hbWUodGhpcy50ZXh0KSk7ICAgXG4gICAgXG4gICAgdGhpcy5vYnNlcnZlci52aWV3ID0gdmlldztcbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUoY29udGFpbmVyLCB7IGF0dHJpYnV0ZXM6IHRydWUgfSk7ICAgXG4gICAgXG4gICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgZXZlbnQgPT4ge1xuICAgICAgY29udGFpbmVyLnNldEF0dHJpYnV0ZShcImRhdGEtY2xpY2tlZFwiLCBcInRydWVcIik7XG4gICAgfSk7XG4gICAgLy9FZGl0b3JWaWV3LnJlcXVlc3RNZWFzdXJlO1xuXG4gICAgcmV0dXJuIGNvbnRhaW5lcjtcbiAgfVxuICAgICAgXG4gIGRlc3Ryb3koZG9tOiBIVE1MRWxlbWVudCkge1xuICAgIGRvbS5yZW1vdmVBdHRyaWJ1dGUoXCJkYXRhLWNsaWNrZWRcIik7XG4gICAgZG9tLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgaGFuZGxlQ2xpY2spO1xuICAgIHRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgaWdub3JlRXZlbnQoKSB7IHJldHVybiBmYWxzZTsgfVxuICBcbn0vLyBUZXh0QWJvdmVDb2RlYmxvY2tXaWRnZXRcbiAgXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlQ2xpY2sodmlldzogRWRpdG9yVmlldywgdGFyZ2V0OiBIVE1MRWxlbWVudCl7XG4gIC8vdmlldy5zdGF0ZS51cGRhdGUoKTtcbiAgLy92aWV3LnVwZGF0ZShbXSk7XG4gIC8vdmlldy5yZXF1ZXN0TWVhc3VyZSh7fSk7ICBcbiAgY29uc3QgUG9zID0gdmlldy5wb3NBdERPTSh0YXJnZXQpO1xuXG4gIGNvbnN0IGVmZmVjdCA9IHZpZXcuc3RhdGUuZmllbGQoY29sbGFwc2VGaWVsZCwgZmFsc2UpO1xuICBsZXQgaXNGb2xkZWQgPSBmYWxzZTtcbiAgZWZmZWN0LmJldHdlZW4oUG9zLCBQb3MsICgpID0+IHsgaXNGb2xkZWQgPSB0cnVlfSk7XG4gIFxuICBsZXQgQ29sbGFwc2VTdGFydDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIGxldCBDb2xsYXBzZUVuZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIGxldCBXaWRnZXRTdGFydDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIC8vIE5PVEU6IENhbid0IHVzZSBmb3IgbG9vcCBvdmVyIHZpZXcudmlzaWJsZVJhbmdlcywgYmVjYXVzZSB0aGF0IHdheSB0aGUgY2xvc2luZyBiYWNrdGlja3Mgd291bGRuJ3QgYmUgZm91bmQgYW5kIGNvbGxhcHNlIHdvdWxkIG5vdCBiZSBwb3NzaWJsZVxuICBsZXQgYmxvY2tGb3VuZCA9IGZhbHNlO1xuICBmb3IgKGxldCBpID0gMTsgaSA8IHZpZXcuc3RhdGUuZG9jLmxpbmVzOyBpKyspIHtcbiAgICBjb25zdCBsaW5lVGV4dCA9IHZpZXcuc3RhdGUuZG9jLmxpbmUoaSkudGV4dC50b1N0cmluZygpO1xuICAgIGNvbnN0IGxpbmUgPSB2aWV3LnN0YXRlLmRvYy5saW5lKGkpO1xuICAgIGlmIChsaW5lVGV4dC5zdGFydHNXaXRoKCdgYGAnKSAmJiBsaW5lVGV4dC5pbmRleE9mKCdgYGAnLCAzKSA9PT0gLTEpIHtcbiAgICAgIGlmIChXaWRnZXRTdGFydCA9PT0gbnVsbCkge1xuICAgICAgICBXaWRnZXRTdGFydCA9IGxpbmUuZnJvbTtcbiAgICAgICAgaWYgKFBvcyA9PT0gbGluZS5mcm9tKXtcbiAgICAgICAgICAgIENvbGxhcHNlU3RhcnQgPSBsaW5lLmZyb207XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJsb2NrRm91bmQgPSB0cnVlO1xuICAgICAgICBDb2xsYXBzZUVuZCA9IGxpbmUudG87XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGlmIChibG9ja0ZvdW5kKSB7XG4gICAgICBpZiAoQ29sbGFwc2VTdGFydCAhPSBudWxsICYmIENvbGxhcHNlRW5kICE9IG51bGwgKXtcbiAgICAgICAgaWYgKGlzRm9sZGVkKXtcbiAgICAgICAgICB2aWV3LmRpc3BhdGNoKHsgZWZmZWN0czogVW5Db2xsYXBzZS5vZigoZnJvbSwgdG8pID0+IHRvIDw9IENvbGxhcHNlU3RhcnQgfHwgZnJvbSA+PSBDb2xsYXBzZUVuZCkgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdmlldy5kaXNwYXRjaCh7IGVmZmVjdHM6IENvbGxhcHNlLm9mKFtkb0ZvbGQucmFuZ2UoQ29sbGFwc2VTdGFydCwgQ29sbGFwc2VFbmQpXSkgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdmlldy5yZXF1ZXN0TWVhc3VyZSgpO1xuICAgICAgICBDb2xsYXBzZVN0YXJ0ID0gbnVsbDtcbiAgICAgICAgQ29sbGFwc2VFbmQgPSBudWxsO1xuICAgICAgfS8vaWYgKENvbGxhcHNlU3RhcnRcbiAgICAgIFdpZGdldFN0YXJ0ID0gbnVsbDtcbiAgICAgIGJsb2NrRm91bmQgPSBmYWxzZTtcbiAgICB9XG4gIH0vLyBmb3Jcbn0vLyBoYW5kbGVDbGljayIsICJpbXBvcnQgeyBNYXJrZG93blZpZXcsIE1hcmtkb3duUG9zdFByb2Nlc3NvckNvbnRleHQsIHNhbml0aXplSFRNTFRvRG9tIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmltcG9ydCB7IHNlYXJjaFN0cmluZywgZ2V0SGlnaGxpZ2h0ZWRMaW5lcywgZ2V0TGFuZ3VhZ2VOYW1lLCBpc0V4Y2x1ZGVkLCBnZXRMYW5ndWFnZUljb24sIGNyZWF0ZUNvbnRhaW5lciwgY3JlYXRlQ29kZWJsb2NrTGFuZywgY3JlYXRlQ29kZWJsb2NrSWNvbiwgY3JlYXRlRmlsZU5hbWUgfSBmcm9tIFwiLi9VdGlsc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gUmVhZGluZ1ZpZXcoY29kZUJsb2NrRWxlbWVudDogSFRNTEVsZW1lbnQsIGNvbnRleHQ6IE1hcmtkb3duUG9zdFByb2Nlc3NvckNvbnRleHQsIHBsdWdpbjogQ29kZWJsb2NrQ3VzdG9taXplclBsdWdpbikge1xuICBjb25zdCBjb2RlRWxtOiBIVE1MRWxlbWVudCA9IGNvZGVCbG9ja0VsZW1lbnQucXVlcnlTZWxlY3RvcigncHJlID4gY29kZScpO1xuICBcbiAgaWYgKCFjb2RlRWxtKSBcbiAgICByZXR1cm47XG5cbiAgY29uc3QgY2xhc3NSZWdleCA9IC9ebGFuZ3VhZ2UtXFxTKy87XG4gIGNvbnN0IG1hdGNoID0gQXJyYXkuZnJvbShjb2RlRWxtLmNsYXNzTGlzdCkuc29tZShjbGFzc05hbWUgPT4gY2xhc3NSZWdleC50ZXN0KGNsYXNzTmFtZSkpO1xuICBpZiAobWF0Y2gpXG4gICAgd2hpbGUoIWNvZGVFbG0uY2xhc3NMaXN0LmNvbnRhaW5zKFwiaXMtbG9hZGVkXCIpKVxuICAgICAgYXdhaXQgc2xlZXAoMik7XG4gICAgXG4gIGNvbnN0IGNvZGVCbG9ja1NlY3Rpb25JbmZvID0gY29udGV4dC5nZXRTZWN0aW9uSW5mbyhjb2RlRWxtKTtcblxuICBsZXQgY29kZUJsb2NrRmlyc3RMaW5lID0gXCJcIjtcbiAgaWYgKGNvZGVCbG9ja1NlY3Rpb25JbmZvKSB7XG4gICAgY29uc3QgdmlldyA9IHBsdWdpbi5hcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KTtcbiAgICBpZiAodmlldyAmJiB2aWV3LmVkaXRvcilcbiAgICAgIGNvZGVCbG9ja0ZpcnN0TGluZSA9IHZpZXcuZWRpdG9yLmdldExpbmUoY29kZUJsb2NrU2VjdGlvbkluZm8ubGluZVN0YXJ0KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBQREYgZXhwb3J0XG4gICAgY29uc3QgZmlsZSA9IHBsdWdpbi5hcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKGNvbnRleHQuc291cmNlUGF0aCk7XG4gICAgaWYgKCFmaWxlKSB7XG4gICAgICAvL2NvbnNvbGUuZXJyb3IoYEZpbGUgbm90IGZvdW5kOiAke2NvbnRleHQuc291cmNlUGF0aH1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cdFx0Y29uc3QgY2FjaGUgPSBwbHVnaW4uYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0Q2FjaGUoY29udGV4dC5zb3VyY2VQYXRoKTtcblx0XHRjb25zdCBmaWxlQ29udGVudCA9IGF3YWl0IHBsdWdpbi5hcHAudmF1bHQuY2FjaGVkUmVhZCg8VEZpbGU+IGZpbGUpLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgLy9jb25zb2xlLmVycm9yKGBFcnJvciByZWFkaW5nIGZpbGU6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICAgIHJldHVybiAnJztcbiAgICB9KTtcblx0XHRjb25zdCBmaWxlQ29udGVudExpbmVzID0gZmlsZUNvbnRlbnQuc3BsaXQoL1xcbi9nKTtcblx0XHRjb25zdCBjb2RlQmxvY2tGaXJzdExpbmVzOiBzdHJpbmdbXSA9IFtdO1xuXG5cdFx0aWYgKGNhY2hlLnNlY3Rpb25zKSB7XG4gICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgY2FjaGUuc2VjdGlvbnMpIHtcbiAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ2NvZGUnKSB7XG4gICAgICAgICAgY29uc3QgbGluZVN0YXJ0ID0gZWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lO1xuICAgICAgICAgIGNvbnN0IGNvZGVCbG9ja0ZpcnN0TGluZSA9IGZpbGVDb250ZW50TGluZXNbbGluZVN0YXJ0XTtcbiAgICAgICAgICBpZiAoIWlzQWRtb25pdGlvbihjb2RlQmxvY2tGaXJzdExpbmUpKSB7XG4gICAgICAgICAgICBjb2RlQmxvY2tGaXJzdExpbmVzLnB1c2goY29kZUJsb2NrRmlyc3RMaW5lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy9jb25zb2xlLmVycm9yKGBNZXRhZGF0YSBjYWNoZSBub3QgZm91bmQgZm9yIGZpbGU6ICR7Y29udGV4dC5zb3VyY2VQYXRofWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgUERGRXhwb3J0KGNvZGVCbG9ja0VsZW1lbnQsIHBsdWdpbiwgY29kZUJsb2NrRmlyc3RMaW5lcyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vY29uc29sZS5lcnJvcihgRXJyb3IgZXhwb3J0aW5nIHRvIFBERjogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgXG4gIGNvbnN0IGNvZGVCbG9ja0xhbmcgPSBzZWFyY2hTdHJpbmcoY29kZUJsb2NrRmlyc3RMaW5lLCBcImBgYFwiKTtcbiAgY29uc3QgaGlnaGxpZ2h0ZWRMaW5lc1BhcmFtcyA9IHNlYXJjaFN0cmluZyhjb2RlQmxvY2tGaXJzdExpbmUsIFwiSEw6XCIpO1xuICBjb25zdCBsaW5lc1RvSGlnaGxpZ2h0ID0gZ2V0SGlnaGxpZ2h0ZWRMaW5lcyhoaWdobGlnaHRlZExpbmVzUGFyYW1zKTtcbiAgY29uc3QgRmlsZU5hbWUgPSBzZWFyY2hTdHJpbmcoY29kZUJsb2NrRmlyc3RMaW5lLCBcImZpbGU6XCIpO1xuICBjb25zdCBGb2xkID0gc2VhcmNoU3RyaW5nKGNvZGVCbG9ja0ZpcnN0TGluZSwgXCJmb2xkXCIpO1xuICBjb25zdCBsaW5lTnVtYmVyT2Zmc2V0ID0gMDsgLy9zZWFyY2hTdHJpbmcoY29kZUJsb2NrRmlyc3RMaW5lLCBcImxuOlwiKS8vVE9ETyAoQG1heXVyYW5rdikgU2V0IGxpbmUgbnVtYmVyIG9mZnNldCBoZXJlIC0gU2hvdWxkIGJlIGxuX3ZhbHVlIC0gMSBzaW5jZSBpdCBpcyBvZmZzZXQsIG5vdCBzdGFydGluZyBsaW5lIG51bWJlciAtIDAgaWYgdHJ1ZSBPUiBmYWxzZVxuICBjb25zdCBzaG93TnVtYmVycyA9IHRydWU7IC8vVE9ETyAoQG1heXVyYW5rdikgU2V0IHNob3dOdW1iZXJzIHRvIGJlIHRydWUgaWYgbG46PG51bWJlcj4gb3IgbG46dHJ1ZSBvciBmYWxzZSBpZiBsbjpmYWxzZVxuICBjb25zdCBhbHRlcm5hdGVDb2xvcnMgPSBwbHVnaW4uc2V0dGluZ3MuYWx0ZXJuYXRlQ29sb3JzIHx8IFtdO1xuICBsZXQgYWx0SEwgPSBbXTtcbiAgZm9yIChjb25zdCB7IG5hbWUgfSBvZiBhbHRlcm5hdGVDb2xvcnMpIHtcbiAgICBjb25zdCBhbHRQYXJhbXMgPSBzZWFyY2hTdHJpbmcoY29kZUJsb2NrRmlyc3RMaW5lLCBgJHtuYW1lfTpgKTtcbiAgICBhbHRITCA9IGFsdEhMLmNvbmNhdChnZXRIaWdobGlnaHRlZExpbmVzKGFsdFBhcmFtcykubWFwKChsaW5lTnVtYmVyKSA9PiAoeyBuYW1lLCBsaW5lTnVtYmVyIH0pKSk7XG4gIH1cblxuICBsZXQgaXNDb2RlQmxvY2tFeGNsdWRlZCA9IGZhbHNlO1xuICBpc0NvZGVCbG9ja0V4Y2x1ZGVkID0gaXNFeGNsdWRlZChjb2RlQmxvY2tGaXJzdExpbmUsIHBsdWdpbi5zZXR0aW5ncy5FeGNsdWRlTGFuZ3MpO1xuXG4gIGNvbnN0IGNvZGVFbGVtZW50cyA9IGNvZGVCbG9ja0VsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJjb2RlXCIpO1xuICBjb25zdCBjb2RlQmxvY2tQcmVFbGVtZW50OiBIVE1MUHJlRWxlbWVudCB8IG51bGwgPSBjb2RlQmxvY2tFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJwcmU6bm90KC5mcm9udG1hdHRlcilcIik7XG4gIGlmIChjb2RlQmxvY2tQcmVFbGVtZW50ID09PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICghaXNDb2RlQmxvY2tFeGNsdWRlZCkge1xuICAgIGNvZGVCbG9ja1ByZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChgY29kZWJsb2NrLWN1c3RvbWl6ZXItcHJlYCk7XG4gIH1cbiAgXG4gIEFkZEhlYWRlckFuZEhpZ2hsaWdodChpc0NvZGVCbG9ja0V4Y2x1ZGVkLCBGaWxlTmFtZSwgY29kZUJsb2NrUHJlRWxlbWVudCwgY29kZUJsb2NrTGFuZywgRm9sZCwgY29kZUVsZW1lbnRzLCBzaG93TnVtYmVycywgbGluZU51bWJlck9mZnNldCwgbGluZXNUb0hpZ2hsaWdodCwgYWx0SEwgKTtcbn0vLyBSZWFkaW5nVmlld1xuXG5mdW5jdGlvbiBpc0FkbW9uaXRpb24obGluZVRleHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBhZFR5cGVzID0gW1wiYWQtbm90ZVwiLCBcImFkLXNlZWFsc29cIiwgXCJhZC1hYnN0cmFjdFwiLCBcImFkLXN1bW1hcnlcIiwgXCJhZC10bGRyXCIsIFwiYWQtaW5mb1wiLCBcImFkLXRvZG9cIiwgXCJhZC10aXBcIiwgXCJhZC1oaW50XCIsIFwiYWQtaW1wb3J0YW50XCIsIFwiYWQtc3VjY2Vzc1wiLCBcImFkLWNoZWNrXCIsIFwiYWQtZG9uZVwiLCBcImFkLXF1ZXN0aW9uXCIsIFwiYWQtaGVscFwiLCBcImFkLWZhcVwiLCBcImFkLXdhcm5pbmdcIiwgXCJhZC1jYXV0aW9uXCIsIFwiYWQtYXR0ZW50aW9uXCIsIFwiYWQtZmFpbHVyZVwiLCBcImFkLWZhaWxcIiwgXCJhZC1taXNzaW5nXCIsIFwiYWQtZGFuZ2VyXCIsIFwiYWQtZXJyb3JcIiwgXCJhZC1idWdcIiwgXCJhZC1leGFtcGxlXCIsIFwiYWQtcXVvdGVcIiwgXCJhZC1jaXRlXCJdOyAvL1RPRE8gKEBtYXl1cmFua3YpIHJlZmFjdG9yIHRvIHVzZSByZWdleFxuICBjb25zdCBjb2RlQmxvY2tMYW5nID0gc2VhcmNoU3RyaW5nKGxpbmVUZXh0LCBcImBgYFwiKTtcbiAgcmV0dXJuIGFkVHlwZXMuc29tZSgoYWRUeXBlKSA9PiBjb2RlQmxvY2tMYW5nICYmIGNvZGVCbG9ja0xhbmcuc3RhcnRzV2l0aChhZFR5cGUpKTtcbn0vLyBpc0FkbW9uaXRpb25cblxuZnVuY3Rpb24gSGVhZGVyV2lkZ2V0KHByZUVsZW1lbnRzLCB0ZXh0VG9EaXNwbGF5OiBzdHJpbmcsIHNwZWNpZmljSGVhZGVyOiBib29sZWFuLCBjb2RlYmxvY2tMYW5ndWFnZTogc3RyaW5nLCBDb2xsYXBzZTogYm9vbGVhbikge1xuICBjb25zdCBwYXJlbnQgPSBwcmVFbGVtZW50cy5wYXJlbnROb2RlO1xuICBcbiAgY29uc3QgY29udGFpbmVyID0gY3JlYXRlQ29udGFpbmVyKHNwZWNpZmljSGVhZGVyKTtcbiAgaWYgKGNvZGVibG9ja0xhbmd1YWdlKXtcbiAgICBjb25zdCBJY29uID0gZ2V0TGFuZ3VhZ2VJY29uKGNvZGVibG9ja0xhbmd1YWdlKVxuICAgIGlmIChJY29uKSB7XG4gICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoY3JlYXRlQ29kZWJsb2NrSWNvbihjb2RlYmxvY2tMYW5ndWFnZSkpO1xuICAgIH1cbiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoY3JlYXRlQ29kZWJsb2NrTGFuZyhjb2RlYmxvY2tMYW5ndWFnZSkpO1xuICB9XG4gIGNvbnRhaW5lci5hcHBlbmRDaGlsZChjcmVhdGVGaWxlTmFtZSh0ZXh0VG9EaXNwbGF5KSk7ICAgXG4gIHBhcmVudC5pbnNlcnRCZWZvcmUoY29udGFpbmVyLCBwcmVFbGVtZW50cyk7XG4gIFxuICAvLyBBZGQgZXZlbnQgbGlzdGVuZXIgdG8gdGhlIHdpZGdldCBlbGVtZW50XG4gIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24oKSB7XG4gICAgLy8gVG9nZ2xlIHRoZSBcImNvbGxhcHNlZFwiIGNsYXNzIG9uIHRoZSBjb2RlYmxvY2sgZWxlbWVudFxuICAgIHByZUVsZW1lbnRzLmNsYXNzTGlzdC50b2dnbGUoXCJjb2RlYmxvY2stY3VzdG9taXplci1jb2RlYmxvY2stY29sbGFwc2VkXCIpO1xuICB9KTtcbiAgXG4gIGlmIChDb2xsYXBzZSkge1xuICAgIHByZUVsZW1lbnRzLmNsYXNzTGlzdC5hZGQoYGNvZGVibG9jay1jdXN0b21pemVyLWNvZGVibG9jay1jb2xsYXBzZWRgKTtcbiAgfVxuICBcbn0vLyBIZWFkZXJXaWRnZXRcblxuZnVuY3Rpb24gY3JlYXRlTGluZU51bWJlckVsZW1lbnQobGluZU51bWJlcixzaG93TnVtYmVycykge1xuICBjb25zdCBsaW5lTnVtYmVyV3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gIGxpbmVOdW1iZXJXcmFwcGVyLmNsYXNzTGlzdC5hZGQoYGNvZGVibG9jay1jdXN0b21pemVyLWxpbmUtbnVtYmVyJHtzaG93TnVtYmVycz8nJzonLWhpZGUnfWApO1xuICBsaW5lTnVtYmVyV3JhcHBlci5zZXRUZXh0KGxpbmVOdW1iZXIpO1xuICBcbiAgcmV0dXJuIGxpbmVOdW1iZXJXcmFwcGVyO1xufS8vIGNyZWF0ZUxpbmVOdW1iZXJFbGVtZW50XG5cbmZ1bmN0aW9uIGNyZWF0ZUxpbmVUZXh0RWxlbWVudChsaW5lKSB7XG4gIGNvbnN0IGxpbmVUZXh0ID0gbGluZSAhPT0gXCJcIiA/IGxpbmUgOiBcIjxicj5cIjtcbiAgY29uc3Qgc2FuaXRpemVkVGV4dCA9IHNhbml0aXplSFRNTFRvRG9tKGxpbmVUZXh0KTtcbiAgY29uc3QgbGluZUNvbnRlbnRXcmFwcGVyID0gY3JlYXRlRGl2KHtjbHM6IGBjb2RlYmxvY2stY3VzdG9taXplci1saW5lLXRleHRgLCB0ZXh0OiBzYW5pdGl6ZWRUZXh0fSk7ICBcbiAgXG4gIHJldHVybiBsaW5lQ29udGVudFdyYXBwZXI7XG59Ly8gY3JlYXRlTGluZVRleHRFbGVtZW50XG5cbmZ1bmN0aW9uIGhpZ2hsaWdodExpbmVzKGNvZGVFbGVtZW50cywgc2hvd051bWJlcnMsIGxpbmVOdW1iZXJPZmZzZXQsIGxpbmVzVG9IaWdobGlnaHQsIGFsdEhMKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY29kZUVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGxpbmVzID0gY29kZUVsZW1lbnRzW2ldLmlubmVySFRNTC5zcGxpdChcIlxcblwiKTtcbiAgICBjb25zdCBwcmVFbG0gPSBjb2RlRWxlbWVudHNbaV0ucGFyZW50Tm9kZTtcbiAgICBpZiAocHJlRWxtID09PSBudWxsIHx8IHByZUVsbS5ub2RlTmFtZSAhPT0gXCJQUkVcIikgLy8gb25seSBwcm9jZXNzIHByZSA+IGNvZGUgZWxlbWVudHNcbiAgICAgIHJldHVybjtcblxuICAgIGlmIChsaW5lcy5sZW5ndGggPT0gMSkge1xuICAgICAgbGluZXMgPSBbJycsJyddO1xuICAgIH1cbiAgICBjb2RlRWxlbWVudHNbaV0uaW5uZXJIVE1MID0gXCJcIjtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGxpbmVzLmxlbmd0aCAtIDE7IGorKykge1xuICAgICAgY29uc3QgbGluZSA9IGxpbmVzW2pdO1xuICAgICAgY29uc3QgbGluZU51bWJlciA9IGogKyAxO1xuICAgICAgY29uc3QgaXNIaWdobGlnaHRlZCA9IGxpbmVzVG9IaWdobGlnaHQuaW5jbHVkZXMobGluZU51bWJlcik7XG4gICAgICBjb25zdCBhbHRITE1hdGNoID0gYWx0SEwuZmlsdGVyKChobCkgPT4gaGwubGluZU51bWJlciA9PT0gbGluZU51bWJlcik7XG5cbiAgICAgIC8vIGNyZWF0ZSBsaW5lIGVsZW1lbnRcbiAgICAgIGNvbnN0IGxpbmVXcmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgIGlmIChpc0hpZ2hsaWdodGVkKSB7XG4gICAgICAgIGxpbmVXcmFwcGVyLmNsYXNzTGlzdC5hZGQoYGNvZGVibG9jay1jdXN0b21pemVyLWxpbmUtaGlnaGxpZ2h0ZWRgKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGFsdEhMTWF0Y2gubGVuZ3RoID4gMCkge1xuICAgICAgICBsaW5lV3JhcHBlci5jbGFzc0xpc3QuYWRkKGBjb2RlYmxvY2stY3VzdG9taXplci1saW5lLWhpZ2hsaWdodGVkLSR7YWx0SExNYXRjaFswXS5uYW1lLnJlcGxhY2UoL1xccysvZywgJy0nKS50b0xvd2VyQ2FzZSgpfWApO1xuICAgICAgfVxuICAgICAgY29kZUVsZW1lbnRzW2ldLmFwcGVuZENoaWxkKGxpbmVXcmFwcGVyKTtcblxuICAgICAgLy8gY3JlYXRlIGxpbmUgbnVtYmVyIGVsZW1lbnRcbiAgICAgIGNvbnN0IGxpbmVOdW1iZXJFbCA9IGNyZWF0ZUxpbmVOdW1iZXJFbGVtZW50KGxpbmVOdW1iZXIrbGluZU51bWJlck9mZnNldCxzaG93TnVtYmVycyk7XG4gICAgICBsaW5lV3JhcHBlci5hcHBlbmRDaGlsZChsaW5lTnVtYmVyRWwpO1xuXG4gICAgICAvLyBjcmVhdGUgbGluZSB0ZXh0IGVsZW1lbnRcbiAgICAgIGNvbnN0IGxpbmVUZXh0RWwgPSBjcmVhdGVMaW5lVGV4dEVsZW1lbnQobGluZSk7XG4gICAgICBsaW5lV3JhcHBlci5hcHBlbmRDaGlsZChsaW5lVGV4dEVsKTtcbiAgICB9XG4gIH1cbn0vLyBoaWdobGlnaHRMaW5lc1xuXG5mdW5jdGlvbiBBZGRIZWFkZXJBbmRIaWdobGlnaHQoaXNDb2RlQmxvY2tFeGNsdWRlZCwgZmlsZU5hbWUsIGNvZGVCbG9ja1ByZUVsZW1lbnQsIGNvZGVCbG9ja0xhbmcsIEZvbGQsIGNvZGVFbGVtZW50cywgc2hvd051bWJlcnMsIGxpbmVOdW1iZXJPZmZzZXQsIGxpbmVzVG9IaWdobGlnaHQsIGFsdEhMICl7XG4gIGlmICghaXNDb2RlQmxvY2tFeGNsdWRlZCkge1xuICAgIGxldCBzcGVjaWZpY0hlYWRlciA9IHRydWU7XG4gICAgaWYgKGZpbGVOYW1lID09PSBudWxsIHx8IGZpbGVOYW1lID09PSBcIlwiKSB7XG4gICAgICBpZiAoRm9sZCkge1xuICAgICAgICBmaWxlTmFtZSA9ICdDb2xsYXBzZWQgQ29kZSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaWxlTmFtZSA9ICcnO1xuICAgICAgICBzcGVjaWZpY0hlYWRlciA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBIZWFkZXJXaWRnZXQoY29kZUJsb2NrUHJlRWxlbWVudCwgZmlsZU5hbWUsIHNwZWNpZmljSGVhZGVyLCBnZXRMYW5ndWFnZU5hbWUoY29kZUJsb2NrTGFuZyksIEZvbGQpO1xuICAgIGhpZ2hsaWdodExpbmVzKGNvZGVFbGVtZW50cywgc2hvd051bWJlcnMsIGxpbmVOdW1iZXJPZmZzZXQsIGxpbmVzVG9IaWdobGlnaHQsIGFsdEhMKTtcbiAgICBcbiAgICBpZiAoY29kZUJsb2NrUHJlRWxlbWVudC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICBjb2RlQmxvY2tQcmVFbGVtZW50LnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZChgY29kZWJsb2NrLWN1c3RvbWl6ZXItcHJlLXBhcmVudGApO1xuICAgIH1cbiAgfVxufS8vIEFkZEhlYWRlckFuZEhpZ2hsaWdodFxuXG5mdW5jdGlvbiBQREZFeHBvcnQoY29kZUJsb2NrRWxlbWVudDogSFRNTEVsZW1lbnQsIHBsdWdpbjogQ29kZWJsb2NrQ3VzdG9taXplclBsdWdpbiwgY29kZUJsb2NrRmlyc3RMaW5lczogc3RyaW5nW10pIHtcbiAgY29uc3QgY29kZUJsb2NrcyA9IGNvZGVCbG9ja0VsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlID4gY29kZScpO1xuXHRjb2RlQmxvY2tzLmZvckVhY2goKGNvZGVFbG0sIGtleSkgPT4ge1xuICAgIGNvbnN0IGNvZGVCbG9ja0ZpcnN0TGluZSA9IGNvZGVCbG9ja0ZpcnN0TGluZXNba2V5XTtcbiAgICBjb25zdCBjb2RlQmxvY2tMYW5nID0gc2VhcmNoU3RyaW5nKGNvZGVCbG9ja0ZpcnN0TGluZSwgXCJgYGBcIik7XG4gICAgY29uc3QgaGlnaGxpZ2h0ZWRMaW5lc1BhcmFtcyA9IHNlYXJjaFN0cmluZyhjb2RlQmxvY2tGaXJzdExpbmUsIFwiSEw6XCIpO1xuICAgIGNvbnN0IGxpbmVzVG9IaWdobGlnaHQgPSBnZXRIaWdobGlnaHRlZExpbmVzKGhpZ2hsaWdodGVkTGluZXNQYXJhbXMpO1xuICAgIGNvbnN0IGZpbGVOYW1lID0gc2VhcmNoU3RyaW5nKGNvZGVCbG9ja0ZpcnN0TGluZSwgXCJmaWxlOlwiKTtcbiAgICBjb25zdCBGb2xkID0gc2VhcmNoU3RyaW5nKGNvZGVCbG9ja0ZpcnN0TGluZSwgXCJmb2xkXCIpO1xuICAgIGNvbnN0IGxpbmVOdW1iZXJPZmZzZXQgPSAwOyAvL3NlYXJjaFN0cmluZyhjb2RlQmxvY2tGaXJzdExpbmUsIFwibG46XCIpLy9UT0RPIChAbWF5dXJhbmt2KSBTZXQgbGluZSBudW1iZXIgb2Zmc2V0IGhlcmUgLSBTaG91bGQgYmUgbG5fdmFsdWUgLSAxIHNpbmNlIGl0IGlzIG9mZnNldCwgbm90IHN0YXJ0aW5nIGxpbmUgbnVtYmVyIC0gMCBpZiB0cnVlIE9SIGZhbHNlXG4gICAgY29uc3Qgc2hvd051bWJlcnMgPSB0cnVlOyAvL1RPRE8gKEBtYXl1cmFua3YpIFNldCBzaG93TnVtYmVycyB0byBiZSB0cnVlIGlmIGxuOjxudW1iZXI+IG9yIGxuOnRydWUgb3IgZmFsc2UgaWYgbG46ZmFsc2VcbiAgICBjb25zdCBhbHRlcm5hdGVDb2xvcnMgPSBwbHVnaW4uc2V0dGluZ3MuYWx0ZXJuYXRlQ29sb3JzIHx8IFtdO1xuICAgIGxldCBhbHRITCA9IFtdO1xuICAgIGZvciAoY29uc3QgeyBuYW1lLCBfIH0gb2YgYWx0ZXJuYXRlQ29sb3JzKSB7XG4gICAgICBjb25zdCBhbHRQYXJhbXMgPSBzZWFyY2hTdHJpbmcoY29kZUJsb2NrRmlyc3RMaW5lLCBgJHtuYW1lfTpgKTtcbiAgICAgIGFsdEhMID0gYWx0SEwuY29uY2F0KGdldEhpZ2hsaWdodGVkTGluZXMoYWx0UGFyYW1zKS5tYXAoKGxpbmVOdW1iZXIpID0+ICh7IG5hbWUsIGxpbmVOdW1iZXIgfSkpKTtcbiAgICB9XG5cbiAgICBsZXQgaXNDb2RlQmxvY2tFeGNsdWRlZCA9IGZhbHNlO1xuICAgIGlzQ29kZUJsb2NrRXhjbHVkZWQgPSBpc0V4Y2x1ZGVkKGNvZGVCbG9ja0ZpcnN0TGluZSwgcGx1Z2luLnNldHRpbmdzLkV4Y2x1ZGVMYW5ncyk7XG5cbiAgICBjb25zdCBjb2RlQmxvY2tQcmVFbGVtZW50OiBIVE1MUHJlRWxlbWVudCB8IG51bGwgPSBjb2RlRWxtLnBhcmVudEVsZW1lbnQ7XG4gICAgaWYgKGNvZGVCbG9ja1ByZUVsZW1lbnQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWlzQ29kZUJsb2NrRXhjbHVkZWQpe1xuICAgICAgY29kZUJsb2NrUHJlRWxlbWVudC5jbGFzc0xpc3QuYWRkKGBjb2RlYmxvY2stY3VzdG9taXplci1wcmVgKTtcbiAgICB9XG4gICAgY29uc3QgY29kZUVsZW1lbnRzID0gY29kZUJsb2NrUHJlRWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImNvZGVcIik7XG5cbiAgICBBZGRIZWFkZXJBbmRIaWdobGlnaHQoaXNDb2RlQmxvY2tFeGNsdWRlZCwgZmlsZU5hbWUsIGNvZGVCbG9ja1ByZUVsZW1lbnQsIGNvZGVCbG9ja0xhbmcsIEZvbGQsIGNvZGVFbGVtZW50cywgc2hvd051bWJlcnMsIGxpbmVOdW1iZXJPZmZzZXQsIGxpbmVzVG9IaWdobGlnaHQsIGFsdEhMICk7XG5cdH0pXG59Ly8gUERGRXhwb3J0XG4iLCAiaW1wb3J0IHsgQXBwLCBQbHVnaW5TZXR0aW5nVGFiLCBTZXR0aW5nLCBOb3RpY2UsIFRleHRDb21wb25lbnQsIERyb3Bkb3duQ29tcG9uZW50LCBTbGlkZXJDb21wb25lbnQsIFRvZ2dsZUNvbXBvbmVudCwgRXh0cmFCdXR0b25Db21wb25lbnQgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCBQaWNrciBmcm9tIFwiQHNpbW9ud2VwL3BpY2tyXCI7XG5pbXBvcnQgeyBDb2xvclRyYW5zbGF0b3IgfSBmcm9tIFwiY29sb3J0cmFuc2xhdG9yXCI7XG5cbmltcG9ydCBDb2RlYmxvY2tDdXN0b21pemVyUGx1Z2luIGZyb20gXCIuL21haW5cIjtcbmltcG9ydCB7IGdldEN1cnJlbnRNb2RlIH0gZnJvbSBcIi4vVXRpbHNcIjtcbmltcG9ydCB7IENvbG9yLCBDU1MsIEhFWCwgRGlzcGxheSwgQ29kZWJsb2NrQ3VzdG9taXplclNldHRpbmdzLCBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVDb2xvcnMsIERFRkFVTFRfU0VUVElOR1MsIE5FV19USEVNRV9ERUZBVUxUIH0gZnJvbSAnLi9TZXR0aW5ncyc7XG5cbmNvbnN0IERJU1BMQVlfT1BUSU9OUzogUmVjb3JkPHN0cmluZyxzdHJpbmc+ID0ge1xuICBcIm5vbmVcIjogXCJOZXZlclwiLFxuICBcInRpdGxlX29ubHlcIjogXCJUaXRsZSBPbmx5XCIsXG4gIFwiYWx3YXlzXCI6IFwiQWx3YXlzXCIsXG59XG5cbmV4cG9ydCBjbGFzcyBTZXR0aW5nc1RhYiBleHRlbmRzIFBsdWdpblNldHRpbmdUYWIge1xuXHRwbHVnaW46IENvZGVibG9ja0N1c3RvbWl6ZXJQbHVnaW47XG4gIHBpY2tyczogUmVjb3JkPHN0cmluZyxQaWNrclJlc2V0dGFibGU+O1xuICBkaXNhYmxlYWJsZUNvbXBvbmVudHM6IFJlY29yZDxzdHJpbmcsQXJyYXk8VG9nZ2xlQ29tcG9uZW50IHwgU2xpZGVyQ29tcG9uZW50IHwgVGV4dENvbXBvbmVudCB8IEV4dHJhQnV0dG9uQ29tcG9uZW50Pj5cblxuXHRjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcGx1Z2luOiBDb2RlYmxvY2tDdXN0b21pemVyUGx1Z2luKSB7XG5cdFx0c3VwZXIoYXBwLCBwbHVnaW4pO1xuXHRcdHRoaXMucGx1Z2luID0gcGx1Z2luO1xuICAgIHRoaXMucGlja3JzID0ge31cbiAgICB0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50cyA9IHt9O1xuXHR9XG5cbiAgLyoqXG5cdCAqICBCdWlsZHMgdGhlIGh0bWwgcGFnZSB0aGF0IGlzIHNob3dlZCBpbiB0aGUgc2V0dGluZ3MuXG5cdCAqL1xuXHRkaXNwbGF5KCkge1xuICAgIGNvbnN0IHtjb250YWluZXJFbH0gPSB0aGlzO1xuICAgIGNvbnRhaW5lckVsLmVtcHR5KCk7XG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2gyJywge3RleHQ6ICdTZXR0aW5ncyBmb3IgdGhlIENvZGVibG9jayBDdXN0b21pemVyIFBsdWdpbi4nfSk7XG5cbiAgICB0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50cyA9IHtcbiAgICAgICdsaW5lTnVtYmVycyc6IFtdLFxuICAgICAgJ2hlYWRlckxhbmd1YWdlVGFncyc6IFtdLFxuICAgICAgJ2hlYWRlckxhbmd1YWdlSWNvbnMnOiBbXSxcbiAgICAgICdlZGl0b3JBY3RpdmVMaW5lSGlnaGxpZ2h0JzogW10sXG4gICAgICAnY29kZWJsb2NrQWN0aXZlTGluZUhpZ2hsaWdodCc6IFtdLFxuICAgICAgJ2dyYWRpZW50SGlnaGxpZ2h0aW5nJzogW10sXG4gICAgfTtcblxuICAgIC8vID09PT09PT09PT0gR2VuZXJhbCA9PT09PT09PT09XG5cdFx0Ly9jb250YWluZXJFbC5jcmVhdGVFbCgnaDMnLCB7dGV4dDogJ0dlbmVyYWwgU2V0dGluZ3MnfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdFeGNsdWRlIExhbmd1YWdlcycpXG4gICAgICAuc2V0RGVzYygnRGVmaW5lIGxhbmd1YWdlcyBpbiBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9uIHdoaWNoIHRoZSBwbHVnaW4gc2hvdWxkIG5vdCBhcHBseS4gWW91IGNhbiB1c2UgYSB3aWxkY2FyZCAoKikgZWl0aGVyIGF0IHRoZSBiZWdpbm5pbmcsIG9yIGF0IHRoZSBlbmQuIEZvciBleGFtcGxlOiBhZC0qIHdpbGwgZXhjbHVkZSBjb2RlYmxvY2tzIHdoZXJlIHRoZSBsYW5ndWFnZSBzdGFydHMgd2l0aCBhZC0gZS5nLjogYWQtaW5mbywgYWQtZXJyb3IgZXRjLicpXG4gICAgICAuYWRkVGV4dCh0ZXh0ID0+IHRleHRcbiAgICAgICAgLnNldFBsYWNlaG9sZGVyKCdlLmcuIGRhdGF2aWV3LCBweXRob24gZXRjLicpXG4gICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5leGNsdWRlZExhbmdzKVxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZXhjbHVkZWRMYW5ncyA9IHZhbHVlO1xuICAgICAgICAgIChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuICAgICAgICB9KSk7XG5cbiAgICAvLyA9PT09PT09PT09IFRoZW1lcyA9PT09PT09PT09XG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2gzJywge3RleHQ6ICdUaGVtZSBTZXR0aW5ncyd9KTtcblxuICAgIGxldCB0aGVtZURyb3Bkb3duOiBEcm9wZG93bkNvbXBvbmVudDtcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKFwiU2VsZWN0IFRoZW1lXCIpXG4gICAgICAuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG4gICAgICAgIHRoZW1lRHJvcGRvd24gPSBkcm9wZG93bjtcbiAgICAgICAgdGhpcy51cGRhdGVEcm9wZG93bih0aGVtZURyb3Bkb3duLHRoaXMucGx1Z2luLnNldHRpbmdzKTtcbiAgICAgICAgdGhlbWVEcm9wZG93bi5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lID0gdmFsdWU7XG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lID0gc3RydWN0dXJlZENsb25lKHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lc1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lXSlcbiAgICAgICAgICB0aGlzLnVwZGF0ZVBpY2tyQ29sb3JzKCk7XG4gICAgICAgICAgdGhpcy51cGRhdGVBbHRlcm5hdGl2ZUhpZ2hsaWdodHMoYWx0ZXJuYXRpdmVIaWdobGlnaHRzQ29udGFpbmVyKTtcbiAgICAgICAgICAoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIDtcbiAgICAgIH0pXG4gICAgICAuYWRkRXh0cmFCdXR0b24oYnV0dG9uID0+IHtcbiAgICAgICAgYnV0dG9uLnNldFRvb2x0aXAoXCJVcGRhdGUgdGhlbWVcIik7XG4gICAgICAgIGJ1dHRvbi5zZXRJY29uKCdhcnJvdy11cCcpO1xuICAgICAgICBidXR0b24ub25DbGljaygoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWUgaW4gREVGQVVMVF9TRVRUSU5HUy50aGVtZXMpXG4gICAgICAgICAgICBuZXcgTm90aWNlKCdZb3UgY2Fubm90IHVwZGF0ZSB0aGUgZGVmYXVsdCB0aGVtZXMnKTsgLy9OT1NPTkFSXG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy50aGVtZXNbdGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZV0gPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQWx0ZXJuYXRpdmVIaWdobGlnaHRzKGFsdGVybmF0aXZlSGlnaGxpZ2h0c0NvbnRhaW5lcik7XG4gICAgICAgICAgICBuZXcgTm90aWNlKGAke3RoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWV9IHRoZW1lIHNhdmVkIHN1Y2Nlc3NmdWxseSFgKTsgLy9OT1NPTkFSXG4gICAgICAgICAgICAoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgIC5hZGRFeHRyYUJ1dHRvbihidXR0b24gPT4ge1xuICAgICAgICBidXR0b24uc2V0VG9vbHRpcChcIkRlbGV0ZSB0aGVtZVwiKTtcbiAgICAgICAgYnV0dG9uLnNldEljb24oJ3RyYXNoJyk7XG4gICAgICAgIGJ1dHRvbi5vbkNsaWNrKCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZS50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBuZXcgTm90aWNlKCdTZWxlY3QgYSB0aGVtZSBmaXJzdCB0byBkZWxldGUnKTsgLy9OT1NPTkFSXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdUaGVtZS5uYW1lIGluIERFRkFVTFRfU0VUVElOR1MudGhlbWVzKSB7XG4gICAgICAgICAgICBuZXcgTm90aWNlKCdZb3UgY2Fubm90IGRlbGV0ZSB0aGUgZGVmYXVsdCB0aGVtZXMnKTsgLy9OT1NPTkFSXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnBsdWdpbi5zZXR0aW5ncy5kZWZhdWx0VGhlbWUgPT09IHRoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWUpXG4gICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmRlZmF1bHRUaGVtZSA9ICdEZWZhdWx0JztcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnBsdWdpbi5zZXR0aW5ncy50aGVtZXNbdGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZV1cbiAgICAgICAgICAgIG5ldyBOb3RpY2UoYCR7dGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZX0gdGhlbWUgZGVsZXRlZCBzdWNjZXNzZnVsbHkhYCk7IC8vTk9TT05BUlxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZSA9IFwiRGVmYXVsdFwiO1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lID0gc3RydWN0dXJlZENsb25lKHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lc1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lXSlcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRHJvcGRvd24odGhlbWVEcm9wZG93bix0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVBpY2tyQ29sb3JzKCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUFsdGVybmF0aXZlSGlnaGxpZ2h0cyhhbHRlcm5hdGl2ZUhpZ2hsaWdodHNDb250YWluZXIpO1xuICAgICAgICAgICAgKGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIGxldCBuZXdUaGVtZU5hbWU6IFRleHRDb21wb25lbnQ7XG4gICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3VGhlbWUgPSBORVdfVEhFTUVfREVGQVVMVFxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoJ0FkZCBOZXcgVGhlbWUnKVxuICAgICAgLnNldERlc2MoJ0NyZWF0ZSBhIG5ldyB0aGVtZSBmcm9tIHRoZSBjdXJyZW50IHNldHRpbmdzLicpXG4gICAgICAuYWRkVGV4dCh0ZXh0ID0+IHtuZXdUaGVtZU5hbWUgPSB0ZXh0XG4gICAgICAgIC5zZXRQbGFjZWhvbGRlcignTmV3IHRoZW1lIG5hbWUnKVxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3VGhlbWUubmFtZSlcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLm5ld1RoZW1lLm5hbWUgPSB2YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4ge3JldHVybiB0b2dnbGVcbiAgICAgICAgLnNldFRvb2x0aXAoXCJTYXZlIGFzIHRoZSBkZWZhdWx0IHRoZW1lXCIpXG4gICAgICAgIC5zZXRWYWx1ZShmYWxzZSlcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLm5ld1RoZW1lLmRlZmF1bHQgPSB2YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9KSAgXG4gICAgICAuYWRkRXh0cmFCdXR0b24oYnV0dG9uID0+IHtcbiAgICAgICAgYnV0dG9uLnNldFRvb2x0aXAoXCJTYXZlIHRoZW1lXCIpO1xuICAgICAgICBidXR0b24uc2V0SWNvbigncGx1cycpO1xuICAgICAgICBidXR0b24ub25DbGljaygoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdUaGVtZS5uYW1lLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBuZXcgTm90aWNlKCdTZXQgYSBuYW1lIGZvciB5b3VyIHRoZW1lJyk7IC8vTk9TT05BUlxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMucGx1Z2luLnNldHRpbmdzLm5ld1RoZW1lLm5hbWUgaW4gREVGQVVMVF9TRVRUSU5HUy50aGVtZXMpIHtcbiAgICAgICAgICBuZXcgTm90aWNlKCdZb3UgY2FuXFwndCBvdmVyd3JpdGUgdGhlIGRlZmF1bHQgdGhlbWVzJyk7IC8vTk9TT05BUlxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdUaGVtZS5uYW1lIGluIHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lcykge1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudGhlbWVzW3RoaXMucGx1Z2luLnNldHRpbmdzLm5ld1RoZW1lLm5hbWVdID0gc3RydWN0dXJlZENsb25lKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZSk7XG4gICAgICAgICAgICBuZXcgTm90aWNlKGAke3RoaXMucGx1Z2luLnNldHRpbmdzLm5ld1RoZW1lLm5hbWV9IHRoZW1lIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5IWApOyAvL05PU09OQVJcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudGhlbWVzW3RoaXMucGx1Z2luLnNldHRpbmdzLm5ld1RoZW1lLm5hbWVdID0gc3RydWN0dXJlZENsb25lKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZSk7XG4gICAgICAgICAgICBuZXcgTm90aWNlKGAke3RoaXMucGx1Z2luLnNldHRpbmdzLm5ld1RoZW1lLm5hbWV9IHRoZW1lIHNhdmVkIHN1Y2Nlc3NmdWxseSFgKTsgLy9OT1NPTkFSXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWUgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdUaGVtZS5uYW1lO1xuICAgICAgICAgIGlmICh0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdUaGVtZS5kZWZhdWx0KVxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZGVmYXVsdFRoZW1lID0gdGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZURyb3Bkb3duKHRoZW1lRHJvcGRvd24sdGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xuICAgICAgICAgIHRoaXMudXBkYXRlQWx0ZXJuYXRpdmVIaWdobGlnaHRzKGFsdGVybmF0aXZlSGlnaGxpZ2h0c0NvbnRhaW5lcik7XG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3VGhlbWUgPSBORVdfVEhFTUVfREVGQVVMVDtcbiAgICAgICAgICBuZXdUaGVtZU5hbWUuc2V0VmFsdWUoXCJcIik7XG4gICAgICAgICAgKGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoNCcsIHt0ZXh0OiAnQ29kZWJsb2NrIEFwcGVhcmFuY2UnfSk7XG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZSgnQ29kZWJsb2NrIEJhY2tncm91bmQgQ29sb3InKVxuICAgICAgLnRoZW4oKHNldHRpbmcpID0+IHt0aGlzLmNyZWF0ZVBpY2tyKFxuICAgICAgICB0aGlzLnBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLFxuICAgICAgICAnY29kZWJsb2NrX2JhY2tncm91bmQnLFxuICAgICAgICAocmVsZXZhbnRUaGVtZUNvbG9yczogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzKSA9PiByZWxldmFudFRoZW1lQ29sb3JzW2dldEN1cnJlbnRNb2RlKCldLmNvZGVibG9jay5iYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgIChyZWxldmFudFRoZW1lQ29sb3JzOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVDb2xvcnMsIHNhdmVDb2xvcjogQ29sb3IpID0+IHtyZWxldmFudFRoZW1lQ29sb3JzW2dldEN1cnJlbnRNb2RlKCldLmNvZGVibG9jay5iYWNrZ3JvdW5kQ29sb3IgPSBzYXZlQ29sb3J9LFxuICAgICAgKX0pO1xuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoJ0NvZGVibG9jayBUZXh0IENvbG9yJylcbiAgICAgIC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcbiAgICAgICAgdGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcbiAgICAgICAgJ2NvZGVibG9ja190ZXh0JyxcbiAgICAgICAgKHJlbGV2YW50VGhlbWVDb2xvcnM6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZUNvbG9ycykgPT4gcmVsZXZhbnRUaGVtZUNvbG9yc1tnZXRDdXJyZW50TW9kZSgpXS5jb2RlYmxvY2sudGV4dENvbG9yLFxuICAgICAgICAocmVsZXZhbnRUaGVtZUNvbG9yczogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzLCBzYXZlQ29sb3I6IENvbG9yKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG9yc1tnZXRDdXJyZW50TW9kZSgpXS5jb2RlYmxvY2sudGV4dENvbG9yID0gc2F2ZUNvbG9yfSxcbiAgICAgICl9KTtcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdDb2RlYmxvY2sgQ3VydmF0dXJlJylcbiAgICAgIC5zZXREZXNjKCdEZXRlcm1pbmVzIGhvdyByb3VuZGVkIHRoZSBjb2RlYmxvY2tzIGFwcGVhciBpbiBwaXhlbHMuJylcbiAgICAgIC50aGVuKChzZXR0aW5nKSA9PiB7XG4gICAgICAgIGxldCByZXNldHRhYmxlU2xpZGVyOiBTbGlkZXJDb21wb25lbnQ7XG4gICAgICAgIHNldHRpbmcuYWRkU2xpZGVyKChzbGlkZXIpID0+IHtcbiAgICAgICAgICByZXNldHRhYmxlU2xpZGVyID0gc2xpZGVyXG4gICAgICAgICAgICAuc2V0TGltaXRzKDAsMjUsMSlcbiAgICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuY29kZWJsb2NrLmN1cnZhdHVyZSlcbiAgICAgICAgICAgIC5zZXREeW5hbWljVG9vbHRpcCgpXG4gICAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5jb2RlYmxvY2suY3VydmF0dXJlID0gdmFsdWU7XG4gICAgICAgICAgICAgIChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpOyAgICBcbiAgICAgICAgICAgIH0pfSk7XG4gICAgICAgIHNldHRpbmcuYWRkRXh0cmFCdXR0b24oKGJ1dHRvbikgPT4ge2J1dHRvblxuICAgICAgICAgIC5zZXRJY29uKFwicmVzZXRcIilcbiAgICAgICAgICAub25DbGljaygoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuY29kZWJsb2NrLmN1cnZhdHVyZSA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lc1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lXS5zZXR0aW5ncy5jb2RlYmxvY2suY3VydmF0dXJlO1xuICAgICAgICAgICAgcmVzZXR0YWJsZVNsaWRlci5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuY29kZWJsb2NrLmN1cnZhdHVyZSk7XG4gICAgICAgICAgICAoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5zZXRUb29sdGlwKCdSZXN0b3JlIGRlZmF1bHQgaWNvbiBzaXplJyk7XG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgICAgXG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2g0Jywge3RleHQ6ICdHdXR0ZXIgQXBwZWFyYW5jZSd9KTtcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdFbmFibGUgTGluZSBOdW1iZXJzJylcbiAgICAgIC5zZXREZXNjKCdJZiBkaXNhYmxlZCwgdGhlIGJlbG93IHNldHRpbmdzIGFyZSBkaXNhYmxlZCB0b28uJylcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZVxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmNvZGVibG9jay5saW5lTnVtYmVycylcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5jb2RlYmxvY2subGluZU51bWJlcnMgPSB2YWx1ZTtcbiAgICAgICAgICB0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snbGluZU51bWJlcnMnXS5mb3JFYWNoKGNvbXBvbmVudCA9PiB7Y29tcG9uZW50LnNldERpc2FibGVkKCF2YWx1ZSl9KTtcbiAgICAgICAgICAoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTsgICAgICAgICBcbiAgICAgICAgfSkpO1xuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoJ0d1dHRlciBCYWNrZ3JvdW5kIENvbG9yJylcbiAgICAgIC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcbiAgICAgICAgdGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcbiAgICAgICAgJ2d1dHRlcl9iYWNrZ3JvdW5kJyxcbiAgICAgICAgKHJlbGV2YW50VGhlbWVDb2xvcnM6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZUNvbG9ycykgPT4gcmVsZXZhbnRUaGVtZUNvbG9yc1tnZXRDdXJyZW50TW9kZSgpXS5ndXR0ZXIuYmFja2dyb3VuZENvbG9yLFxuICAgICAgICAocmVsZXZhbnRUaGVtZUNvbG9yczogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzLCBzYXZlQ29sb3I6IENvbG9yKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG9yc1tnZXRDdXJyZW50TW9kZSgpXS5ndXR0ZXIuYmFja2dyb3VuZENvbG9yID0gc2F2ZUNvbG9yfSxcbiAgICAgICAgKCkgPT4gIXRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5jb2RlYmxvY2subGluZU51bWJlcnMsXG4gICAgICAgICl9KTtcbiAgICAgIHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydsaW5lTnVtYmVycyddLnB1c2godGhpcy5waWNrcnNbJ2d1dHRlcl9iYWNrZ3JvdW5kJ10ucmVzZXRCdXR0b24pO1xuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoJ0xpbmUgTnVtYmVyIENvbG9yJylcbiAgICAgIC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcbiAgICAgICAgdGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcbiAgICAgICAgJ2xpbmVfbnVtYmVyJyxcbiAgICAgICAgKHJlbGV2YW50VGhlbWVDb2xvcnM6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZUNvbG9ycykgPT4gcmVsZXZhbnRUaGVtZUNvbG9yc1tnZXRDdXJyZW50TW9kZSgpXS5ndXR0ZXIudGV4dENvbG9yLFxuICAgICAgICAocmVsZXZhbnRUaGVtZUNvbG9yczogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzLCBzYXZlQ29sb3I6IENvbG9yKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG9yc1tnZXRDdXJyZW50TW9kZSgpXS5ndXR0ZXIudGV4dENvbG9yID0gc2F2ZUNvbG9yfSxcbiAgICAgICAgKCkgPT4gIXRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5jb2RlYmxvY2subGluZU51bWJlcnMsXG4gICAgICAgICl9KTtcbiAgICAgIHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydsaW5lTnVtYmVycyddLnB1c2godGhpcy5waWNrcnNbJ2xpbmVfbnVtYmVyJ10ucmVzZXRCdXR0b24pO1xuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoJ0hpZ2hsaWdodCBMaW5lIE51bWJlcnMnKVxuICAgICAgLnNldERlc2MoJ0lmIGVuYWJsZWQsIGhpZ2hsaWdodHMgd2lsbCBhbHNvIGhpZ2hsaWdodCB0aGUgbGluZSBudW1iZXJzLicpXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB7bGV0IGhpZ2hsaWdodExpbmVOdW1iZXJzVG9nZ2xlID0gdG9nZ2xlXG4gICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuZ3V0dGVyLmhpZ2hsaWdodClcbiAgICAgICAgLnNldERpc2FibGVkKCF0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuY29kZWJsb2NrLmxpbmVOdW1iZXJzKVxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmd1dHRlci5oaWdobGlnaHQgPSB2YWx1ZTtcbiAgICAgICAgICAoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2xpbmVOdW1iZXJzJ10ucHVzaChoaWdobGlnaHRMaW5lTnVtYmVyc1RvZ2dsZSk7XG4gICAgICB9KTtcblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDQnLCB7dGV4dDogJ0hlYWRlciBBcHBlYXJhbmNlJ30pO1xuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoJ0hlYWRlciBCYWNrZ3JvdW5kIENvbG9yJylcbiAgICAgIC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcbiAgICAgICAgdGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcbiAgICAgICAgJ2hlYWRlcl9iYWNrZ3JvdW5kJyxcbiAgICAgICAgKHJlbGV2YW50VGhlbWVDb2xvcnM6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZUNvbG9ycykgPT4gcmVsZXZhbnRUaGVtZUNvbG9yc1tnZXRDdXJyZW50TW9kZSgpXS5oZWFkZXIuYmFja2dyb3VuZENvbG9yLFxuICAgICAgICAocmVsZXZhbnRUaGVtZUNvbG9yczogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzLCBzYXZlQ29sb3I6IENvbG9yKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG9yc1tnZXRDdXJyZW50TW9kZSgpXS5oZWFkZXIuYmFja2dyb3VuZENvbG9yID0gc2F2ZUNvbG9yfSxcbiAgICAgICl9KTtcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdIZWFkZXIgVGl0bGUgVGV4dCBTdHlsaW5nJylcbiAgICAgIC5zZXREZXNjKCdTdHlsZSB0aGUgaGVhZGVyIHRpdGxlIHRleHQgdXNpbmcgYm9sZCBhbmQgaXRhbGljIHRvZ2dsZXMsIGJ5IHNldHRpbmcgYSBmb250IG9yIGJ5IHNldHRpbmcgYSB0ZXh0IGNvbG9yLicpXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB7dG9nZ2xlXG4gICAgICAgIC5zZXRUb29sdGlwKFwiVG9nZ2xlIGJvbGQgdGl0bGUgdGV4dFwiKVxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci50aXRsZS50ZXh0Qm9sZClcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIudGl0bGUudGV4dEJvbGQgPSB2YWx1ZTtcbiAgICAgICAgICAoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4ge3RvZ2dsZVxuICAgICAgICAuc2V0VG9vbHRpcChcIlRvZ2dsZSBpdGFsaWMgdGl0bGUgdGV4dFwiKVxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci50aXRsZS50ZXh0SXRhbGljKVxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci50aXRsZS50ZXh0SXRhbGljID0gdmFsdWU7XG4gICAgICAgICAgKGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgIC5hZGRUZXh0KHRleHQgPT4ge3RleHRcbiAgICAgICAgLnNldFBsYWNlaG9sZGVyKCdGb250JylcbiAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIudGl0bGUudGV4dEZvbnQpXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLnRpdGxlLnRleHRGb250ID0gdmFsdWU7XG4gICAgICAgICAgKGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgIC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcbiAgICAgICAgdGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcbiAgICAgICAgJ2hlYWRlcl90aXRsZV90ZXh0JyxcbiAgICAgICAgKHJlbGV2YW50VGhlbWVDb2xvcnM6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZUNvbG9ycykgPT4gcmVsZXZhbnRUaGVtZUNvbG9yc1tnZXRDdXJyZW50TW9kZSgpXS5oZWFkZXIudGl0bGUudGV4dENvbG9yLFxuICAgICAgICAocmVsZXZhbnRUaGVtZUNvbG9yczogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzLCBzYXZlQ29sb3I6IENvbG9yKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG9yc1tnZXRDdXJyZW50TW9kZSgpXS5oZWFkZXIudGl0bGUudGV4dENvbG9yID0gc2F2ZUNvbG9yfSxcbiAgICAgICl9KTtcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdIZWFkZXIgU2VwYXJhdG9yIENvbG9yJylcbiAgICAgIC5zZXREZXNjKCdDb2xvciBvZiB0aGUgbGluZSBzZXBhcmF0aW5nIHRoZSBjb2RlYmxvY2sgaGVhZGVyIGFuZCB0aGUgY29kZWJsb2NrLicpXG4gICAgICAudGhlbigoc2V0dGluZykgPT4ge3RoaXMuY3JlYXRlUGlja3IoXG4gICAgICAgIHRoaXMucGx1Z2luLGNvbnRhaW5lckVsLHNldHRpbmcsXG4gICAgICAgICdoZWFkZXJfc2VwYXJhdG9yJyxcbiAgICAgICAgKHJlbGV2YW50VGhlbWVDb2xvcnM6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZUNvbG9ycykgPT4gcmVsZXZhbnRUaGVtZUNvbG9yc1tnZXRDdXJyZW50TW9kZSgpXS5oZWFkZXIubGluZUNvbG9yLFxuICAgICAgICAocmVsZXZhbnRUaGVtZUNvbG9yczogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzLCBzYXZlQ29sb3I6IENvbG9yKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG9yc1tnZXRDdXJyZW50TW9kZSgpXS5oZWFkZXIubGluZUNvbG9yID0gc2F2ZUNvbG9yfSxcbiAgICAgICl9KTtcblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDUnLCB7dGV4dDogJ0hlYWRlciBMYW5ndWFnZSBUYWcgQXBwZWFyYW5jZSd9KTtcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdEaXNwbGF5IEhlYWRlciBMYW5ndWFnZSBUYWdzJylcbiAgICAgIC5zZXREZXNjKCdEZXRlcm1pbmUgd2hlbiB0byBzaG93IGxhbmd1YWdlIHRhZ3MgaW4gdGhlIGhlYWRlci4gXCJUaXRsZSBPbmx5XCIgd2lsbCBvbmx5IHNob3cgbGFuZ3VhZ2UgdGFncyB3aGVuIHRoZSB0aXRsZSBwYXJhbWV0ZXIgaXMgc2V0LiBJZiBzZXQgdG8gXCJOb25lXCIsIHRoZSBiZWxvdyBzZXR0aW5ncyBhcmUgZGlzYWJsZWQgdG9vLicpXG4gICAgICAuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiBkcm9wZG93blxuICAgICAgICAuYWRkT3B0aW9ucyhESVNQTEFZX09QVElPTlMpXG4gICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLmRpc3BsYXkpXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWU6IERpc3BsYXkpID0+IHtcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLmRpc3BsYXkgPSB2YWx1ZTtcbiAgICAgICAgICB0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snaGVhZGVyTGFuZ3VhZ2VUYWdzJ10uZm9yRWFjaChjb21wb25lbnQgPT4ge2NvbXBvbmVudC5zZXREaXNhYmxlZCh2YWx1ZT09PVwibm9uZVwiKX0pO1xuICAgICAgICAgIChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuICAgICAgICB9KSk7XG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZSgnSGVhZGVyIExhbmd1YWdlIFRhZyBCYWNrZ3JvdW5kIENvbG9yJylcbiAgICAgIC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcbiAgICAgICAgdGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcbiAgICAgICAgJ2hlYWRlcl9sYW5ndWFnZV90YWdfYmFja2dyb3VuZCcsXG4gICAgICAgIChyZWxldmFudFRoZW1lQ29sb3JzOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVDb2xvcnMpID0+IHJlbGV2YW50VGhlbWVDb2xvcnNbZ2V0Q3VycmVudE1vZGUoKV0uaGVhZGVyLmxhbmd1YWdlVGFnLmJhY2tncm91bmRDb2xvcixcbiAgICAgICAgKHJlbGV2YW50VGhlbWVDb2xvcnM6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZUNvbG9ycywgc2F2ZUNvbG9yOiBDb2xvcikgPT4ge3JlbGV2YW50VGhlbWVDb2xvcnNbZ2V0Q3VycmVudE1vZGUoKV0uaGVhZGVyLmxhbmd1YWdlVGFnLmJhY2tncm91bmRDb2xvciA9IHNhdmVDb2xvcn0sXG4gICAgICAgICgpID0+IHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcuZGlzcGxheSA9PT0gJ25vbmUnLFxuICAgICAgKX0pO1xuICAgICAgdGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2hlYWRlckxhbmd1YWdlVGFncyddLnB1c2godGhpcy5waWNrcnNbJ2hlYWRlcl9sYW5ndWFnZV90YWdfYmFja2dyb3VuZCddLnJlc2V0QnV0dG9uKTtcbiAgICBsZXQgbGFuZ3VhZ2VUYWdzQm9sZFRvZ2dsZTogVG9nZ2xlQ29tcG9uZW50O1xuICAgIGxldCBsYW5ndWFnZVRhZ3NJdGFsaWNUb2dnbGU6IFRvZ2dsZUNvbXBvbmVudDtcbiAgICBsZXQgbGFuZ3VhZ2VJY29uc0ZvbnRUZXh0OiBUZXh0Q29tcG9uZW50O1xuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoJ0hlYWRlciBMYW5ndWFnZSBUYWcgVGV4dCBTdHlsaW5nJylcbiAgICAgIC5zZXREZXNjKCdTdHlsZSB0aGUgaGVhZGVyIGxhbmd1YWdlIHRhZyB0ZXh0IHVzaW5nIGJvbGQgYW5kIGl0YWxpYyB0b2dnbGVzLCBieSBzZXR0aW5nIGEgZm9udCBvciBieSBzZXR0aW5nIGEgdGV4dCBjb2xvci4nKVxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4ge2xhbmd1YWdlVGFnc0JvbGRUb2dnbGUgPSB0b2dnbGVcbiAgICAgICAgLnNldFRvb2x0aXAoXCJUb2dnbGUgYm9sZCBsYW5ndWFnZSB0YWcgdGV4dFwiKVxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy50ZXh0Qm9sZClcbiAgICAgICAgLnNldERpc2FibGVkKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcuZGlzcGxheT09PVwibm9uZVwiKVxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy50ZXh0Qm9sZCA9IHZhbHVlO1xuICAgICAgICAgIChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2hlYWRlckxhbmd1YWdlVGFncyddLnB1c2gobGFuZ3VhZ2VUYWdzQm9sZFRvZ2dsZSk7XG4gICAgICB9KVxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4ge2xhbmd1YWdlVGFnc0l0YWxpY1RvZ2dsZSA9IHRvZ2dsZVxuICAgICAgICAuc2V0VG9vbHRpcChcIlRvZ2dsZSBpdGFsaWMgbGFuZ3VhZ2UgdGFnIHRleHRcIilcbiAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcudGV4dEl0YWxpYylcbiAgICAgICAgLnNldERpc2FibGVkKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcuZGlzcGxheT09PVwibm9uZVwiKVxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy50ZXh0SXRhbGljID0gdmFsdWU7XG4gICAgICAgICAgKGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snaGVhZGVyTGFuZ3VhZ2VUYWdzJ10ucHVzaChsYW5ndWFnZVRhZ3NJdGFsaWNUb2dnbGUpO1xuICAgICAgfSlcbiAgICAgIC5hZGRUZXh0KHRleHQgPT4ge2xhbmd1YWdlSWNvbnNGb250VGV4dCA9IHRleHRcbiAgICAgICAgLnNldFBsYWNlaG9sZGVyKCdGb250JylcbiAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcudGV4dEZvbnQpXG4gICAgICAgIC5zZXREaXNhYmxlZCh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLmRpc3BsYXk9PT1cIm5vbmVcIilcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcudGV4dEZvbnQgPSB2YWx1ZTtcbiAgICAgICAgICAoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydoZWFkZXJMYW5ndWFnZVRhZ3MnXS5wdXNoKGxhbmd1YWdlSWNvbnNGb250VGV4dCk7XG4gICAgICB9KVxuICAgICAgLnRoZW4oKHNldHRpbmcpID0+IHt0aGlzLmNyZWF0ZVBpY2tyKFxuICAgICAgICB0aGlzLnBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLFxuICAgICAgICAnaGVhZGVyX2xhbmd1YWdlX3RhZ190ZXh0JyxcbiAgICAgICAgKHJlbGV2YW50VGhlbWVDb2xvcnM6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZUNvbG9ycykgPT4gcmVsZXZhbnRUaGVtZUNvbG9yc1tnZXRDdXJyZW50TW9kZSgpXS5oZWFkZXIubGFuZ3VhZ2VUYWcudGV4dENvbG9yLFxuICAgICAgICAocmVsZXZhbnRUaGVtZUNvbG9yczogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzLCBzYXZlQ29sb3I6IENvbG9yKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG9yc1tnZXRDdXJyZW50TW9kZSgpXS5oZWFkZXIubGFuZ3VhZ2VUYWcudGV4dENvbG9yID0gc2F2ZUNvbG9yfSxcbiAgICAgICAgKCkgPT4gdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy5kaXNwbGF5ID09PSAnbm9uZScsXG4gICAgICApfSk7XG4gICAgICB0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snaGVhZGVyTGFuZ3VhZ2VUYWdzJ10ucHVzaCh0aGlzLnBpY2tyc1snaGVhZGVyX2xhbmd1YWdlX3RhZ190ZXh0J10ucmVzZXRCdXR0b24pO1xuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoNScsIHt0ZXh0OiAnSGVhZGVyIExhbmd1YWdlIEljb24gQXBwZWFyYW5jZSd9KTtcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdEaXNwbGF5IExhbmd1YWdlIEljb25zJylcbiAgICAgIC5zZXREZXNjKCdEZXRlcm1pbmUgd2hlbiB0byBzaG93IGxhbmd1YWdlIGljb25zIHdoZXJlIGF2YWlsYWJsZS4gXCJUaXRsZSBPbmx5XCIgd2lsbCBvbmx5IHNob3cgbGFuZ3VhZ2UgdGFncyB3aGVuIHRoZSB0aXRsZSBwYXJhbWV0ZXIgaXMgc2V0LiBJZiBzZXQgdG8gXCJOb25lXCIsIHRoZSBiZWxvdyBzZXR0aW5ncyBhcmUgZGlzYWJsZWQgdG9vLicpXG4gICAgICAuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiBkcm9wZG93blxuICAgICAgICAuYWRkT3B0aW9ucyhESVNQTEFZX09QVElPTlMpXG4gICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlSWNvbi5kaXNwbGF5KVxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlOiBEaXNwbGF5KSA9PiB7XG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZUljb24uZGlzcGxheSA9IHZhbHVlO1xuICAgICAgICAgIHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydoZWFkZXJMYW5ndWFnZUljb25zJ10uZm9yRWFjaChjb21wb25lbnQgPT4ge2NvbXBvbmVudC5zZXREaXNhYmxlZCh2YWx1ZT09PVwibm9uZVwiKX0pO1xuICAgICAgICAgIChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuICAgICAgICB9KSk7XG4gICAgbGV0IGxhbmd1YWdlSWNvbnNDb2xvcmVkVG9nZ2xlOiBUb2dnbGVDb21wb25lbnQ7XG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZSgnTGFuZ3VhZ2UgSWNvbnMgQ29sb3JlZCcpXG4gICAgICAuc2V0RGVzYygnSWYgZGlzYWJsZWQsIGxhbmd1YWdlIGljb25zIHdpbGwgYmUgYmxhY2sgYW5kIHdoaXRlLicpXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB7bGFuZ3VhZ2VJY29uc0NvbG9yZWRUb2dnbGUgPSB0b2dnbGVcbiAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VJY29uLmRpc3BsYXlDb2xvcilcbiAgICAgICAgLnNldERpc2FibGVkKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VJY29uLmRpc3BsYXk9PT1cIm5vbmVcIilcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VJY29uLmRpc3BsYXlDb2xvciA9IHZhbHVlO1xuICAgICAgICAgIChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuICAgICAgICB9KVxuICAgICAgICB0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snaGVhZGVyTGFuZ3VhZ2VJY29ucyddLnB1c2gobGFuZ3VhZ2VJY29uc0NvbG9yZWRUb2dnbGUpO1xuICAgICAgfSk7XG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZSgnTGFuZ3VhZ2UgSWNvbiBTaXplJylcbiAgICAgIC5zZXREZXNjKCdTZXQgdGhlIHNpemUgb2YgdGhlIGRpc3BsYXllZCBsYW5ndWFnZSBpY29ucy4nKVxuICAgICAgLnRoZW4oKHNldHRpbmcpID0+IHtcbiAgICAgICAgbGV0IHJlc2V0dGFibGVTbGlkZXI6IFNsaWRlckNvbXBvbmVudDtcbiAgICAgICAgc2V0dGluZy5hZGRTbGlkZXIoKHNsaWRlcikgPT4ge3Jlc2V0dGFibGVTbGlkZXIgPSBzbGlkZXJcbiAgICAgICAgICAuc2V0TGltaXRzKDEwLDQwLDEpXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5hZHZhbmNlZC5pY29uU2l6ZSlcbiAgICAgICAgICAuc2V0RGlzYWJsZWQodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZUljb24uZGlzcGxheT09PVwibm9uZVwiKVxuICAgICAgICAgIC5zZXREeW5hbWljVG9vbHRpcCgpXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmljb25TaXplID0gdmFsdWU7XG4gICAgICAgICAgICAoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTsgICAgXG4gICAgICAgICAgfSlcbiAgICAgICAgICB0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snaGVhZGVyTGFuZ3VhZ2VJY29ucyddLnB1c2gocmVzZXR0YWJsZVNsaWRlcik7XG4gICAgICAgIH0pO1xuICAgICAgICBsZXQgcmVzZXRCdXR0b246IEV4dHJhQnV0dG9uQ29tcG9uZW50O1xuICAgICAgICBzZXR0aW5nLmFkZEV4dHJhQnV0dG9uKChidXR0b24pID0+IHtyZXNldEJ1dHRvbiA9IGJ1dHRvblxuICAgICAgICAgIC5zZXRJY29uKFwicmVzZXRcIilcbiAgICAgICAgICAuc2V0RGlzYWJsZWQodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZUljb24uZGlzcGxheT09PVwibm9uZVwiKVxuICAgICAgICAgIC5vbkNsaWNrKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5hZHZhbmNlZC5pY29uU2l6ZSA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lc1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lXS5zZXR0aW5ncy5hZHZhbmNlZC5pY29uU2l6ZTtcbiAgICAgICAgICAgIHJlc2V0dGFibGVTbGlkZXIuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmljb25TaXplKTtcbiAgICAgICAgICAgIChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLnNldFRvb2x0aXAoJ1Jlc3RvcmUgZGVmYXVsdCBpY29uIHNpemUnKTtcbiAgICAgICAgICB0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snaGVhZGVyTGFuZ3VhZ2VJY29ucyddLnB1c2gocmVzZXRCdXR0b24pO1xuICAgICAgICB9KVxuICAgICAgfSlcblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDQnLCB7dGV4dDogJ0hpZ2hsaWdodGluZyBBcHBlYXJhbmNlJ30pO1xuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoJ0VkaXRvciBBY3RpdmUgTGluZSBIaWdobGlnaHQnKVxuICAgICAgLnNldERlc2MoJ0lmIGVuYWJsZWQsIGhpZ2hsaWdodHMgdGhlIGFjdGl2ZSBsaW5lIG91dHNpZGUgY29kZWJsb2Nrcy4nKVxuICAgICAgLnNldENsYXNzKCdjb2RlYmxvY2stY3VzdG9taXplci1zcGFjZWQnKVxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4ge3JldHVybiB0b2dnbGVcbiAgICAgICAgLnNldFRvb2x0aXAoJ1RvZ2dsZSBlZGl0b3IgYWN0aXZlIGxpbmUgaGlnaGxpZ2h0aW5nJylcbiAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oaWdobGlnaHRzLmFjdGl2ZUVkaXRvckxpbmUpXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGlnaGxpZ2h0cy5hY3RpdmVFZGl0b3JMaW5lID0gdmFsdWU7XG4gICAgICAgICAgdGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2VkaXRvckFjdGl2ZUxpbmVIaWdobGlnaHQnXS5mb3JFYWNoKGNvbXBvbmVudCA9PiB7Y29tcG9uZW50LnNldERpc2FibGVkKCF2YWx1ZSl9KTtcbiAgICAgICAgICAoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICAgLnRoZW4oKHNldHRpbmcpID0+IHt0aGlzLmNyZWF0ZVBpY2tyKFxuICAgICAgICB0aGlzLnBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLFxuICAgICAgICAnZWRpdG9yX2FjdGl2ZV9saW5lX2hpZ2hsaWdodCcsXG4gICAgICAgIChyZWxldmFudFRoZW1lQ29sb3JzOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVDb2xvcnMpID0+IHJlbGV2YW50VGhlbWVDb2xvcnNbZ2V0Q3VycmVudE1vZGUoKV0uaGlnaGxpZ2h0cy5hY3RpdmVFZGl0b3JMaW5lQ29sb3IsXG4gICAgICAgIChyZWxldmFudFRoZW1lQ29sb3JzOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVDb2xvcnMsIHNhdmVDb2xvcjogQ29sb3IpID0+IHtyZWxldmFudFRoZW1lQ29sb3JzW2dldEN1cnJlbnRNb2RlKCldLmhpZ2hsaWdodHMuYWN0aXZlRWRpdG9yTGluZUNvbG9yID0gc2F2ZUNvbG9yfSxcbiAgICAgICAgKCkgPT4gIXRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oaWdobGlnaHRzLmFjdGl2ZUVkaXRvckxpbmUsXG4gICAgICAgICl9KTtcbiAgICAgIHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydlZGl0b3JBY3RpdmVMaW5lSGlnaGxpZ2h0J10ucHVzaCh0aGlzLnBpY2tyc1snZWRpdG9yX2FjdGl2ZV9saW5lX2hpZ2hsaWdodCddLnJlc2V0QnV0dG9uKTtcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdDb2RlYmxvY2sgQWN0aXZlIExpbmUgSGlnaGxpZ2h0JylcbiAgICAgIC5zZXREZXNjKCdJZiBlbmFibGVkLCBoaWdobGlnaHRzIHRoZSBhY3RpdmUgbGluZSBpbnNpZGUgY29kZWJsb2Nrcy4nKVxuICAgICAgLnNldENsYXNzKCdjb2RlYmxvY2stY3VzdG9taXplci1zcGFjZWQnKVxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4ge3JldHVybiB0b2dnbGVcbiAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oaWdobGlnaHRzLmFjdGl2ZUNvZGVibG9ja0xpbmUpXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGlnaGxpZ2h0cy5hY3RpdmVDb2RlYmxvY2tMaW5lID0gdmFsdWU7IFxuICAgICAgICAgIHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydjb2RlYmxvY2tBY3RpdmVMaW5lSGlnaGxpZ2h0J10uZm9yRWFjaChjb21wb25lbnQgPT4ge2NvbXBvbmVudC5zZXREaXNhYmxlZCghdmFsdWUpfSk7XG4gICAgICAgICAgKGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgIC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcbiAgICAgICAgdGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcbiAgICAgICAgJ2NvZGVibG9ja19hY3RpdmVfbGluZV9oaWdobGlnaHQnLFxuICAgICAgICAocmVsZXZhbnRUaGVtZUNvbG9yczogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzKSA9PiByZWxldmFudFRoZW1lQ29sb3JzW2dldEN1cnJlbnRNb2RlKCldLmhpZ2hsaWdodHMuYWN0aXZlQ29kZWJsb2NrTGluZUNvbG9yLFxuICAgICAgICAocmVsZXZhbnRUaGVtZUNvbG9yczogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzLCBzYXZlQ29sb3I6IENvbG9yKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG9yc1tnZXRDdXJyZW50TW9kZSgpXS5oaWdobGlnaHRzLmFjdGl2ZUNvZGVibG9ja0xpbmVDb2xvciA9IHNhdmVDb2xvcn0sXG4gICAgICAgICgpID0+ICF0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGlnaGxpZ2h0cy5hY3RpdmVDb2RlYmxvY2tMaW5lLFxuICAgICAgKX0pO1xuICAgICAgdGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2NvZGVibG9ja0FjdGl2ZUxpbmVIaWdobGlnaHQnXS5wdXNoKHRoaXMucGlja3JzWydjb2RlYmxvY2tfYWN0aXZlX2xpbmVfaGlnaGxpZ2h0J10ucmVzZXRCdXR0b24pO1xuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoJ0RlZmF1bHQgSGlnaGxpZ2h0IENvbG9yJylcbiAgICAgIC5zZXREZXNjKCdVc2VkIGJ5IHRoZSBcXCdobFxcJyBwYXJhbWV0ZXIuJylcbiAgICAgIC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcbiAgICAgICAgdGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcbiAgICAgICAgJ2RlZmF1bHRfaGlnaGxpZ2h0JyxcbiAgICAgICAgKHJlbGV2YW50VGhlbWVDb2xvcnM6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZUNvbG9ycykgPT4gcmVsZXZhbnRUaGVtZUNvbG9yc1tnZXRDdXJyZW50TW9kZSgpXS5oaWdobGlnaHRzLmRlZmF1bHRDb2xvcixcbiAgICAgICAgKHJlbGV2YW50VGhlbWVDb2xvcnM6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZUNvbG9ycywgc2F2ZUNvbG9yOiBDb2xvcikgPT4ge3JlbGV2YW50VGhlbWVDb2xvcnNbZ2V0Q3VycmVudE1vZGUoKV0uaGlnaGxpZ2h0cy5kZWZhdWx0Q29sb3IgPSBzYXZlQ29sb3J9LFxuICAgICAgKX0pO1xuICAgIGxldCBuZXdIaWdobGlnaHRUZXh0OiBUZXh0Q29tcG9uZW50O1xuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoXCJBZGQgQWx0ZXJuYXRpdmUgSGlnaGxpZ2h0XCIpXG4gICAgICAuc2V0RGVzYygnRGVmaW5lIGEgbmV3IGFsdGVybmF0aXZlIGhpZ2hsaWdodCBuYW1lLiBDb2xvcnMgY2FuIGJlIG1vZGlmaWVkIGFmdGVyIGl0IGlzIGFkZGVkLicpXG4gICAgICAuYWRkVGV4dCh2YWx1ZSA9PiB7bmV3SGlnaGxpZ2h0VGV4dCA9IHZhbHVlXG4gICAgICAgIC5zZXRQbGFjZWhvbGRlcignZS5nLiBlcnJvciwgd2FybicpXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdIaWdobGlnaHQgPSB2YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICAgLmFkZEJ1dHRvbigoYnV0dG9uKSA9PiB7XG4gICAgICAgIGJ1dHRvbi5zZXRCdXR0b25UZXh0KFwiQWRkXCIpO1xuICAgICAgICBidXR0b24ub25DbGljaygoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMucGx1Z2luLnNldHRpbmdzLm5ld0hpZ2hsaWdodC50cmltKCkgPT09IFwiXCIpIHtcbiAgICAgICAgICAgIG5ldyBOb3RpY2UoXCJQbGVhc2UgZW50ZXIgYSBjb2xvciBuYW1lLlwiKTsgLy9OT1NPTkFSXG4gICAgICAgICAgfSBlbHNlIGlmICghQ09MT1JfTkFNRV9SRUdFWC50ZXN0KHRoaXMucGx1Z2luLnNldHRpbmdzLm5ld0hpZ2hsaWdodCkpIHtcbiAgICAgICAgICAgIG5ldyBOb3RpY2UoYFwiJHt0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdIaWdobGlnaHR9XCIgaXMgbm90IGEgdmFsaWQgY29sb3IgbmFtZS5gKTsgLy9OT1NPTkFSXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdIaWdobGlnaHQgPT09ICdobCcpIHtcbiAgICAgICAgICAgIG5ldyBOb3RpY2UoXCJDYW5ub3Qgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgaGlnaGxpZ2h0IHBhcmFtZXRlci5cIik7IC8vTk9TT05BUlxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3SGlnaGxpZ2h0IGluIHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5jb2xvcnMubGlnaHQuaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHMpIHtcbiAgICAgICAgICAgICAgLy90b2RvIChAbWF5dXJhbmt2KSBGdXR1cmU6IEZvY3VzIG9uIGV4aXN0aW5nIGhpZ2hsaWdodGVyXG4gICAgICAgICAgICAgIG5ldyBOb3RpY2UoYEEgaGlnaGxpZ2h0IHdpdGggdGhlIG5hbWUgXCIke3RoaXMucGx1Z2luLnNldHRpbmdzLm5ld0hpZ2hsaWdodH1cIiBhbHJlYWR5IGV4aXN0cy5gKTsgLy9OT1NPTkFSXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCBuZXdDb2xvciA9IGdldFJhbmRvbUNvbG9yKCk7XG4gICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5jb2xvcnMubGlnaHQuaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHNbdGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3SGlnaGxpZ2h0XSA9IG5ld0NvbG9yO1xuICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuY29sb3JzLmRhcmsuaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHNbdGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3SGlnaGxpZ2h0XSA9IG5ld0NvbG9yO1xuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUFsdGVybmF0aXZlSGlnaGxpZ2h0cyhhbHRlcm5hdGl2ZUhpZ2hsaWdodHNDb250YWluZXIpO1xuICAgICAgICAgICAgICBuZXcgTm90aWNlKGBBZGRlZCBoaWdobGlnaHQgXCIke3RoaXMucGx1Z2luLnNldHRpbmdzLm5ld0hpZ2hsaWdodH1cIi5gKTsgLy9OT1NPTkFSXG4gICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLm5ld0hpZ2hsaWdodCA9IFwiXCI7XG4gICAgICAgICAgICAgIG5ld0hpZ2hsaWdodFRleHQuc2V0VmFsdWUoXCJcIik7XG4gICAgICAgICAgICAgIChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICBjb25zdCBhbHRlcm5hdGl2ZUhpZ2hsaWdodHNDb250YWluZXIgPSBjb250YWluZXJFbC5jcmVhdGVEaXYoKVxuICAgIHRoaXMudXBkYXRlQWx0ZXJuYXRpdmVIaWdobGlnaHRzKGFsdGVybmF0aXZlSGlnaGxpZ2h0c0NvbnRhaW5lcilcblxuICAgIC8vID09PT09PT09PT0gQWR2YW5jZWQgPT09PT09PT09PVxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMycsIHt0ZXh0OiAnQWR2YW5jZWQgU2V0dGluZ3MnfSk7XG4gICAgXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZSgnR3JhZGllbnQgSGlnaGxpZ2h0aW5nJylcbiAgICAgIC5zZXREZXNjKCdJZiBlbmFibGVkLCBoaWdobGlnaHRzIGZhZGUgYXdheSB0byB0aGUgcmlnaHQuIFRoZSBzbGlkZXIgc2V0cyB0aGUgZ3JhZGllbnQgY29sb3Igc3RvcCBhcyBhIHBlcmNlbnRhZ2UuJylcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZVxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmdyYWRpZW50SGlnaGxpZ2h0cylcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5hZHZhbmNlZC5ncmFkaWVudEhpZ2hsaWdodHMgPSB2YWx1ZTtcbiAgICAgICAgICB0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snZ3JhZGllbnRIaWdobGlnaHRpbmcnXS5mb3JFYWNoKGNvbXBvbmVudCA9PiB7Y29tcG9uZW50LnNldERpc2FibGVkKCF2YWx1ZSl9KTtcbiAgICAgICAgICAoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcbiAgICAgICAgfSkpXG4gICAgICAudGhlbigoc2V0dGluZykgPT4ge1xuICAgICAgICBsZXQgcmVzZXR0YWJsZVNsaWRlcjogU2xpZGVyQ29tcG9uZW50O1xuICAgICAgICBzZXR0aW5nLmFkZFNsaWRlcigoc2xpZGVyKSA9PiB7XG4gICAgICAgICAgcmVzZXR0YWJsZVNsaWRlciA9IHNsaWRlclxuICAgICAgICAgICAgLnNldExpbWl0cygwLDEwMCwxKVxuICAgICAgICAgICAgLnNldFZhbHVlKCt0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQuZ3JhZGllbnRIaWdobGlnaHRzQ29sb3JTdG9wLnNsaWNlKDAsLTEpKVxuICAgICAgICAgICAgLnNldER5bmFtaWNUb29sdGlwKClcbiAgICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmdyYWRpZW50SGlnaGxpZ2h0c0NvbG9yU3RvcCA9IGAke3ZhbHVlfSVgO1xuICAgICAgICAgICAgICAoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTsgICAgXG4gICAgICAgICAgICB9KX0pO1xuICAgICAgICBsZXQgcmVzZXRCdXR0b246IEV4dHJhQnV0dG9uQ29tcG9uZW50O1xuICAgICAgICBzZXR0aW5nLmFkZEV4dHJhQnV0dG9uKChidXR0b24pID0+IHtyZXNldEJ1dHRvbiA9IGJ1dHRvblxuICAgICAgICAgIC5zZXRJY29uKFwicmVzZXRcIilcbiAgICAgICAgICAub25DbGljaygoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQuZ3JhZGllbnRIaWdobGlnaHRzQ29sb3JTdG9wID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudGhlbWVzW3RoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWVdLnNldHRpbmdzLmFkdmFuY2VkLmdyYWRpZW50SGlnaGxpZ2h0c0NvbG9yU3RvcDtcbiAgICAgICAgICAgIHJlc2V0dGFibGVTbGlkZXIuc2V0VmFsdWUoK3RoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5hZHZhbmNlZC5ncmFkaWVudEhpZ2hsaWdodHNDb2xvclN0b3Auc2xpY2UoMCwtMSkpO1xuICAgICAgICAgICAgKGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuc2V0VG9vbHRpcCgnUmVzdG9yZSBkZWZhdWx0IGNvbG9yIHN0b3AnKTtcbiAgICAgICAgdGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2dyYWRpZW50SGlnaGxpZ2h0aW5nJ10ucHVzaChyZXNldHRhYmxlU2xpZGVyKTtcbiAgICAgICAgdGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2dyYWRpZW50SGlnaGxpZ2h0aW5nJ10ucHVzaChyZXNldEJ1dHRvbik7XG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoJ0xhbmd1YWdlIENvbG9yZWQgQm9yZGVycycpXG4gICAgICAuc2V0RGVzYygnSWYgZW5hYmxlZCwgbGFuZ3VhZ2VzIHdpdGggaWNvbnMgZGlzcGxheSBhIGxlZnQgYm9yZGVyIHdpdGggdGhlIGNvbG9yIG9mIHRoZSBpY29uLicpXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHRvZ2dsZVxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmxhbmd1YWdlQm9yZGVyQ29sb3IpXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQubGFuZ3VhZ2VCb3JkZXJDb2xvciA9IHZhbHVlO1xuICAgICAgICAgIChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuICAgICAgICB9KSlcblxuICAgIC8vID09PT09PT09PT0gRG9uYXRpb24gPT09PT09PT09PVxuICAgIGNvbnN0IGRvbmF0aW9uRGl2ID0gY29udGFpbmVyRWwuY3JlYXRlRWwoXCJkaXZcIiwgeyBjbHM6IFwiY29kZWJsb2NrLWN1c3RvbWl6ZXItZG9uYXRpb25cIiwgfSk7ICAgIFxuICAgIGNvbnN0IGRvbmF0aW9uVGV4dCA9IGNyZWF0ZUVsKFwicFwiKTtcbiAgICBjb25zdCBkb25hdGlvbkJ1dHRvbiA9IGNyZWF0ZUVsKFwiYVwiLCB7IGhyZWY6IFwiaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9UaGVQaXJhdGVLaW5nXCJ9KTtcbiAgICBcbiAgICBkb25hdGlvblRleHQuYXBwZW5kVGV4dChcIklmIHlvdSBsaWtlIHRoaXMgcGx1Z2luLCBhbmQgd291bGQgbGlrZSB0byBoZWxwIHN1cHBvcnQgY29udGludWVkIGRldmVsb3BtZW50LCB1c2UgdGhlIGJ1dHRvbiBiZWxvdyFcIik7XG4gICAgZG9uYXRpb25CdXR0b24uaW5uZXJIVE1MID0gYDxpbWcgc3JjPVwiaHR0cHM6Ly9pbWcuYnV5bWVhY29mZmVlLmNvbS9idXR0b24tYXBpLz90ZXh0PUJ1eSBtZSBhIGNvZmZlZSZlbW9qaT0mc2x1Zz1UaGVQaXJhdGVLaW5nJmJ1dHRvbl9jb2xvdXI9ZTNlN2VmJmZvbnRfY29sb3VyPTI2MjYyNiZmb250X2ZhbWlseT1JbnRlciZvdXRsaW5lX2NvbG91cj0yNjI2MjYmY29mZmVlX2NvbG91cj1mZjAwMDBcIiBoZWlnaHQ9XCI0MnB4XCI+YDtcbiAgICBcbiAgICBkb25hdGlvbkRpdi5hcHBlbmRDaGlsZChkb25hdGlvblRleHQpO1xuICAgIGRvbmF0aW9uRGl2LmFwcGVuZENoaWxkKGRvbmF0aW9uQnV0dG9uKTtcblx0fS8vZGlzcGxheVxuXG4gIC8vIFNldHRpbmcgQ3JlYXRpb25cbiAgY3JlYXRlUGlja3IocGx1Z2luOiBDb2RlYmxvY2tDdXN0b21pemVyUGx1Z2luLCBjb250YWluZXJFbDogSFRNTEVsZW1lbnQsIHNldHRpbmc6IFNldHRpbmcsIGlkOiBzdHJpbmcsIGdldFJlbGV2YW50VGhlbWVDb2xvcjogKHJlbGV2YW50VGhlbWVDb2xvcnM6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZUNvbG9ycyk9PkNvbG9yLCBzYXZlUmVsZXZhbnRUaGVtZUNvbG9yOiAocmVsZXZhbnRUaGVtZUNvbG9yczogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzLCBzYXZlQ29sb3I6IENvbG9yKT0+dm9pZCwgZGlzYWJsZWQ/OiAoKT0+Ym9vbGVhbikge1xuICAgIGxldCBwaWNrcjogUGlja3JSZXNldHRhYmxlID0gbmV3IFBpY2tyUmVzZXR0YWJsZShwbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxnZXRSZWxldmFudFRoZW1lQ29sb3Isc2F2ZVJlbGV2YW50VGhlbWVDb2xvcik7XG4gICAgcGlja3JcbiAgICAgIC5vbignc2hvdycsIChjb2xvcjogUGlja3IuSFNWYUNvbG9yLCBpbnN0YW5jZTogUGlja3IpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBkaXNhYmxlZCAhPT0gJ3VuZGVmaW5lZCcgJiYgZGlzYWJsZWQoKSlcbiAgICAgICAgICBpbnN0YW5jZS5oaWRlKClcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiAoaW5zdGFuY2UuZ2V0Um9vdCgpIGFzIGFueSkuaW50ZXJhY3Rpb24ucmVzdWx0LnNlbGVjdCgpKSlcbiAgICAgIH0pXG4gICAgICAub24oJ3NhdmUnLCAoY29sb3I6IFBpY2tyLkhTVmFDb2xvciwgaW5zdGFuY2U6IFBpY2tyUmVzZXR0YWJsZSkgPT4ge1xuICAgICAgICBjb25zdCBzYXZlZENvbG9yOiBDb2xvciA9IGAjJHtjb2xvci50b0hFWEEoKS50b1N0cmluZygpLnN1YnN0cmluZygxKX1gO1xuICAgICAgICBpbnN0YW5jZS5oaWRlKCk7XG4gICAgICAgIGluc3RhbmNlLmFkZFN3YXRjaChzYXZlZENvbG9yKTtcbiAgICAgICAgaW5zdGFuY2Uuc2F2ZUNvbG9yKHNhdmVkQ29sb3IpO1xuICAgICAgfSlcbiAgICAgIC5vbignY2FuY2VsJywgKGluc3RhbmNlOiBQaWNrclJlc2V0dGFibGUpID0+IHtpbnN0YW5jZS5oaWRlKCl9KTtcbiAgICBzZXR0aW5nLmFkZEV4dHJhQnV0dG9uKChidXR0b24pID0+IHtwaWNrci5yZXNldEJ1dHRvbiA9IGJ1dHRvblxuICAgICAgLnNldEljb24oXCJyZXNldFwiKVxuICAgICAgLnNldERpc2FibGVkKHR5cGVvZiBkaXNhYmxlZCAhPT0gJ3VuZGVmaW5lZCcgJiYgZGlzYWJsZWQoKSlcbiAgICAgIC5zZXRUb29sdGlwKCdSZXN0b3JlIGRlZmF1bHQgY29sb3InKVxuICAgICAgLm9uQ2xpY2soKCkgPT4ge3BpY2tyLnJlc2V0Q29sb3IoKX0pO1xuICAgIH0pO1xuICAgIHRoaXMucGlja3JzW2lkXT1waWNrcjtcbiAgfVxuICBjcmVhdGVEdWFsUGlja3IocGx1Z2luOiBDb2RlYmxvY2tDdXN0b21pemVyUGx1Z2luLCBjb250YWluZXJFbDogSFRNTEVsZW1lbnQsIHNldHRpbmc6IFNldHRpbmcsIGlkOiBzdHJpbmcsIGdldFJlbGV2YW50VGhlbWVDb2xvcnM6IFJlY29yZDwnbGlnaHQnfCdkYXJrJywocmVsZXZhbnRUaGVtZUNvbG9yczogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzKT0+Q29sb3I+LCBzYXZlUmVsZXZhbnRUaGVtZUNvbG9yczogUmVjb3JkPCdsaWdodCd8J2RhcmsnLChyZWxldmFudFRoZW1lQ29sb3JzOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVDb2xvcnMsIHNhdmVDb2xvcjogQ29sb3IpPT52b2lkPiwgcmVzZXRFbmFibGVkOiAoKT0+Ym9vbGVhbikge1xuICAgIGxldCBsaWdodFBpY2tyOiBQaWNrclJlc2V0dGFibGUgPSBuZXcgUGlja3JSZXNldHRhYmxlKHBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLGdldFJlbGV2YW50VGhlbWVDb2xvcnMubGlnaHQsc2F2ZVJlbGV2YW50VGhlbWVDb2xvcnMubGlnaHQsJ1NlbGVjdCBjb2xvciBmb3IgbGlnaHQgdGhlbWUnKTtcbiAgICBsaWdodFBpY2tyXG4gICAgICAub24oJ3Nob3cnLCAoY29sb3I6IFBpY2tyLkhTVmFDb2xvciwgaW5zdGFuY2U6IFBpY2tyKSA9PiB7cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiAoaW5zdGFuY2UuZ2V0Um9vdCgpIGFzIGFueSkuaW50ZXJhY3Rpb24ucmVzdWx0LnNlbGVjdCgpKSl9KVxuICAgICAgLm9uKCdzYXZlJywgKGNvbG9yOiBQaWNrci5IU1ZhQ29sb3IsIGluc3RhbmNlOiBQaWNrclJlc2V0dGFibGUpID0+IHtcbiAgICAgICAgY29uc3Qgc2F2ZWRDb2xvcjogQ29sb3IgPSBgIyR7Y29sb3IudG9IRVhBKCkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMSl9YDtcbiAgICAgICAgaW5zdGFuY2UuaGlkZSgpO1xuICAgICAgICBpbnN0YW5jZS5hZGRTd2F0Y2goc2F2ZWRDb2xvcik7XG4gICAgICAgIGluc3RhbmNlLnNhdmVDb2xvcihzYXZlZENvbG9yKTtcbiAgICAgIH0pXG4gICAgICAub24oJ2NhbmNlbCcsIChpbnN0YW5jZTogUGlja3JSZXNldHRhYmxlKSA9PiB7aW5zdGFuY2UuaGlkZSgpfSk7XG4gICAgbGV0IGRhcmtQaWNrcjogUGlja3JSZXNldHRhYmxlID0gbmV3IFBpY2tyUmVzZXR0YWJsZShwbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxnZXRSZWxldmFudFRoZW1lQ29sb3JzLmRhcmssc2F2ZVJlbGV2YW50VGhlbWVDb2xvcnMuZGFyaywnU2VsZWN0IGNvbG9yIGZvciBkYXJrIHRoZW1lJyk7XG4gICAgZGFya1BpY2tyXG4gICAgICAub24oJ3Nob3cnLCAoY29sb3I6IFBpY2tyLkhTVmFDb2xvciwgaW5zdGFuY2U6IFBpY2tyKSA9PiB7cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiAoaW5zdGFuY2UuZ2V0Um9vdCgpIGFzIGFueSkuaW50ZXJhY3Rpb24ucmVzdWx0LnNlbGVjdCgpKSl9KVxuICAgICAgLm9uKCdzYXZlJywgKGNvbG9yOiBQaWNrci5IU1ZhQ29sb3IsIGluc3RhbmNlOiBQaWNrclJlc2V0dGFibGUpID0+IHtcbiAgICAgICAgY29uc3Qgc2F2ZWRDb2xvcjogQ29sb3IgPSBgIyR7Y29sb3IudG9IRVhBKCkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMSl9YDtcbiAgICAgICAgaW5zdGFuY2UuaGlkZSgpO1xuICAgICAgICBpbnN0YW5jZS5hZGRTd2F0Y2goc2F2ZWRDb2xvcik7XG4gICAgICAgIGluc3RhbmNlLnNhdmVDb2xvcihzYXZlZENvbG9yKTtcbiAgICAgIH0pXG4gICAgICAub24oJ2NhbmNlbCcsIChpbnN0YW5jZTogUGlja3JSZXNldHRhYmxlKSA9PiB7aW5zdGFuY2UuaGlkZSgpfSk7XG4gICAgc2V0dGluZy5hZGRFeHRyYUJ1dHRvbigoYnV0dG9uKSA9PiB7bGV0IHJlc2V0QnV0dG9uID0gYnV0dG9uXG4gICAgICAuc2V0SWNvbihcInJlc2V0XCIpXG4gICAgICAuc2V0VG9vbHRpcCgnUmVzdG9yZSBkZWZhdWx0IGNvbG9yJylcbiAgICAgIC5zZXREaXNhYmxlZCghcmVzZXRFbmFibGVkKCkpXG4gICAgICAub25DbGljaygoKSA9PiB7XG4gICAgICAgIGxpZ2h0UGlja3IucmVzZXRDb2xvcigpO1xuICAgICAgICBkYXJrUGlja3IucmVzZXRDb2xvcigpO1xuICAgICAgfSk7XG4gICAgICBsaWdodFBpY2tyLnJlc2V0QnV0dG9uID0gcmVzZXRCdXR0b247XG4gICAgICBkYXJrUGlja3IucmVzZXRCdXR0b24gPSByZXNldEJ1dHRvbjtcbiAgICB9KTtcbiAgICB0aGlzLnBpY2tyc1tgJHtpZH1fbGlnaHRgXT1saWdodFBpY2tyO1xuICAgIHRoaXMucGlja3JzW2Ake2lkfV9kYXJrYF09ZGFya1BpY2tyO1xuICB9XG5cbiAgLy8gU2V0dGluZyBVcGRhdGVzXG4gIHVwZGF0ZURyb3Bkb3duKGRyb3Bkb3duOiBEcm9wZG93bkNvbXBvbmVudCwgc2V0dGluZ3M6IENvZGVibG9ja0N1c3RvbWl6ZXJTZXR0aW5ncykge1xuICAgIGRyb3Bkb3duLnNlbGVjdEVsLmVtcHR5KCk7XG4gICAgT2JqZWN0LmtleXMoc2V0dGluZ3MudGhlbWVzKS5mb3JFYWNoKCh0aGVtZV9uYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIGRyb3Bkb3duLmFkZE9wdGlvbih0aGVtZV9uYW1lLCB0aGVtZV9uYW1lKTsgICAgICAgICAgICBcbiAgICB9KVxuICAgIGRyb3Bkb3duLnNldFZhbHVlKHNldHRpbmdzLnNlbGVjdGVkVGhlbWUpO1xuICB9XG4gIHVwZGF0ZVBpY2tyQ29sb3JzKCkge1xuICAgIE9iamVjdC5lbnRyaWVzKHRoaXMucGlja3JzKS5mb3JFYWNoKChbaWQscGlja3JdKSA9PiB7cGlja3IucmVzZXRDb2xvcigpfSlcbiAgfVxuICB1cGRhdGVBbHRlcm5hdGl2ZUhpZ2hsaWdodHMoYWx0ZXJuYXRpdmVIaWdobGlnaHRzQ29udGFpbmVyOiBIVE1MRGl2RWxlbWVudCkge1xuICAgIGFsdGVybmF0aXZlSGlnaGxpZ2h0c0NvbnRhaW5lci5lbXB0eSgpO1xuICAgIE9iamVjdC5rZXlzKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5jb2xvcnMubGlnaHQuaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHMpLmZvckVhY2goKGFsdGVybmF0aXZlSGlnaGxpZ2h0TmFtZSkgPT4ge1xuICAgICAgbmV3IFNldHRpbmcoYWx0ZXJuYXRpdmVIaWdobGlnaHRzQ29udGFpbmVyKVxuICAgICAgICAuc2V0TmFtZShhbHRlcm5hdGl2ZUhpZ2hsaWdodE5hbWUpXG4gICAgICAgIC5zZXREZXNjKGBUbyBoaWdobGlnaHQgbGluZXMgd2l0aCB0aGlzIGhpZ2hsaWdodCwgdXNlIHRoZSAke2FsdGVybmF0aXZlSGlnaGxpZ2h0TmFtZX0gcGFyYW1ldGVyLmApXG4gICAgICAgIC50aGVuKChzZXR0aW5nKSA9PiB7XG4gICAgICAgICAgdGhpcy5jcmVhdGVEdWFsUGlja3IoXG4gICAgICAgICAgICB0aGlzLnBsdWdpbixhbHRlcm5hdGl2ZUhpZ2hsaWdodHNDb250YWluZXIsc2V0dGluZyxcbiAgICAgICAgICAgIGBhbHRlcm5hdGl2ZV9oaWdobGlnaHRfJHthbHRlcm5hdGl2ZUhpZ2hsaWdodE5hbWV9YCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgJ2xpZ2h0JzoocmVsZXZhbnRUaGVtZUNvbG9yczogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzKSA9PiByZWxldmFudFRoZW1lQ29sb3JzLmxpZ2h0LmhpZ2hsaWdodHMuYWx0ZXJuYXRpdmVIaWdobGlnaHRzW2FsdGVybmF0aXZlSGlnaGxpZ2h0TmFtZV0sXG4gICAgICAgICAgICAgICdkYXJrJzoocmVsZXZhbnRUaGVtZUNvbG9yczogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzKSA9PiByZWxldmFudFRoZW1lQ29sb3JzLmRhcmsuaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHNbYWx0ZXJuYXRpdmVIaWdobGlnaHROYW1lXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICdsaWdodCc6KHJlbGV2YW50VGhlbWVDb2xvcnM6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZUNvbG9ycywgc2F2ZUNvbG9yOiBDb2xvcikgPT4ge3JlbGV2YW50VGhlbWVDb2xvcnMubGlnaHQuaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHNbYWx0ZXJuYXRpdmVIaWdobGlnaHROYW1lXSA9IHNhdmVDb2xvcn0sXG4gICAgICAgICAgICAgICdkYXJrJzoocmVsZXZhbnRUaGVtZUNvbG9yczogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzLCBzYXZlQ29sb3I6IENvbG9yKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG9ycy5kYXJrLmhpZ2hsaWdodHMuYWx0ZXJuYXRpdmVIaWdobGlnaHRzW2FsdGVybmF0aXZlSGlnaGxpZ2h0TmFtZV0gPSBzYXZlQ29sb3J9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICgpID0+IGFsdGVybmF0aXZlSGlnaGxpZ2h0TmFtZSBpbiB0aGlzLnBsdWdpbi5zZXR0aW5ncy50aGVtZXNbdGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZV0uY29sb3JzLmxpZ2h0LmhpZ2hsaWdodHMuYWx0ZXJuYXRpdmVIaWdobGlnaHRzLFxuICAgICAgICAgICk7XG4gICAgICAgICAgc2V0dGluZy5hZGRFeHRyYUJ1dHRvbigoYnV0dG9uKSA9PiB7YnV0dG9uXG4gICAgICAgICAgICAuc2V0SWNvbihcInRyYXNoXCIpXG4gICAgICAgICAgICAuc2V0VG9vbHRpcChcIkRlbGV0ZSBoaWdobGlnaHRcIilcbiAgICAgICAgICAgIC5vbkNsaWNrKCgpID0+IHtcbiAgICAgICAgICAgICAgZGVsZXRlIHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5jb2xvcnMubGlnaHQuaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHNbYWx0ZXJuYXRpdmVIaWdobGlnaHROYW1lXVxuICAgICAgICAgICAgICBkZWxldGUgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLmNvbG9ycy5kYXJrLmhpZ2hsaWdodHMuYWx0ZXJuYXRpdmVIaWdobGlnaHRzW2FsdGVybmF0aXZlSGlnaGxpZ2h0TmFtZV1cbiAgICAgICAgICAgICAgbmV3IE5vdGljZShgUmVtb3ZlZCBoaWdobGlnaHQgXCIke2FsdGVybmF0aXZlSGlnaGxpZ2h0TmFtZX1cIi5gKTsgLy9OT1NPTkFSXG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlQWx0ZXJuYXRpdmVIaWdobGlnaHRzKGFsdGVybmF0aXZlSGlnaGxpZ2h0c0NvbnRhaW5lcik7XG4gICAgICAgICAgICAgIChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgfSlcbiAgfVxufS8vIFNldHRpbmdzVGFiXG5cbmNsYXNzIFBpY2tyUmVzZXR0YWJsZSBleHRlbmRzIFBpY2tyIHtcbiAgc2F2ZUNvbG9yOiAoc2F2ZUNvbG9yOiBDb2xvcik9PnZvaWQ7XG4gIHJlc2V0Q29sb3I6ICgpPT52b2lkO1xuICBnZXRDdXJyZW50Q29sb3I6IChhY2Nlc3NUaGVtZTogYm9vbGVhbik9PnZvaWQ7XG4gIHJlc2V0QnV0dG9uOiBFeHRyYUJ1dHRvbkNvbXBvbmVudDtcblxuICBjb25zdHJ1Y3RvcihwbHVnaW46IENvZGVibG9ja0N1c3RvbWl6ZXJQbHVnaW4sIGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCwgc2V0dGluZzogU2V0dGluZywgZ2V0UmVsZXZhbnRUaGVtZUNvbG9yOiAocmVsZXZhbnRUaGVtZUNvbG9yczogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzKT0+Q29sb3IsIHNhdmVSZWxldmFudFRoZW1lQ29sb3I6IChyZWxldmFudFRoZW1lQ29sb3JzOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVDb2xvcnMsIHNhdmVDb2xvcjogQ29sb3IpPT52b2lkLCB0b29sdGlwPzogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2V0dGluZ3M6IFBpY2tyLk9wdGlvbnMgPSB7XG4gICAgICBlbDogc2V0dGluZy5jb250cm9sRWwuY3JlYXRlRGl2KHtjbHM6IFwicGlja2VyXCJ9KSxcbiAgICAgIHRoZW1lOiAnbmFubycsXG4gICAgICBkZWZhdWx0OiBnZXRDb2xvcihnZXRSZWxldmFudFRoZW1lQ29sb3IocGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5jb2xvcnMpKSxcbiAgICAgIHBvc2l0aW9uOiBcImxlZnQtbWlkZGxlXCIsXG4gICAgICBsb2NrT3BhY2l0eTogZmFsc2UsXG4gICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIHByZXZpZXc6IHRydWUsXG4gICAgICAgIGh1ZTogdHJ1ZSxcbiAgICAgICAgb3BhY2l0eTogdHJ1ZSxcbiAgICAgICAgaW50ZXJhY3Rpb246IHtcbiAgICAgICAgICBoZXg6IHRydWUsXG4gICAgICAgICAgcmdiYTogdHJ1ZSxcbiAgICAgICAgICBoc2xhOiBmYWxzZSxcbiAgICAgICAgICBpbnB1dDogdHJ1ZSxcbiAgICAgICAgICBjYW5jZWw6IHRydWUsXG4gICAgICAgICAgc2F2ZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBpMThuOiB7XG4gICAgICAgICd1aTpkaWFsb2cnOiAnQ29sb3IgcGlja2VyIGRpYWxvZycsXG4gICAgICAgICdidG46dG9nZ2xlJzogKHR5cGVvZiB0b29sdGlwICE9PSAndW5kZWZpbmVkJyk/dG9vbHRpcDonU2VsZWN0IGNvbG9yJyxcbiAgICAgICAgJ2J0bjpzd2F0Y2gnOiAnQ29sb3Igc3dhdGNoJyxcbiAgICAgICAgJ2J0bjpsYXN0LWNvbG9yJzogJ1VzZSBwcmV2aW91cyBjb2xvcicsXG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAoY29udGFpbmVyRWwucGFyZW50RWxlbWVudCAhPT0gbnVsbClcbiAgICAgIHNldHRpbmdzLmNvbnRhaW5lciA9IGNvbnRhaW5lckVsLnBhcmVudEVsZW1lbnQ7XG4gICAgc3VwZXIoc2V0dGluZ3MpO1xuICAgIHRoaXMuc2F2ZUNvbG9yID0gKHNhdmVDb2xvcjogQ29sb3IpID0+IHtcbiAgICAgIHNhdmVSZWxldmFudFRoZW1lQ29sb3IocGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5jb2xvcnMsc2F2ZUNvbG9yKTtcbiAgICAgIChhc3luYyAoKSA9PiB7YXdhaXQgcGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcbiAgICB9O1xuICAgIHRoaXMucmVzZXRDb2xvciA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc2V0Q29sb3I6IENvbG9yID0gZ2V0UmVsZXZhbnRUaGVtZUNvbG9yKHBsdWdpbi5zZXR0aW5ncy50aGVtZXNbcGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWVdLmNvbG9ycyk7XG4gICAgICB0aGlzLnNldENvbG9yKGdldENvbG9yKHJlc2V0Q29sb3IpKTtcbiAgICAgIHRoaXMuc2F2ZUNvbG9yKHJlc2V0Q29sb3IpO1xuICAgIH07XG4gIH1cbn1cblxuLy8gQ29sb3IgTWFuYWdlbWVudFxuZnVuY3Rpb24gZ2V0UmFuZG9tQ29sb3IoKTogQ29sb3Ige1xuICBjb25zdCBsZXR0ZXJzID0gXCIwMTIzNDU2Nzg5QUJDREVGXCI7XG4gIGxldCBjb2xvciA9IFwiXCI7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNjsgaSsrKVxuICAgIGNvbG9yICs9IGxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTYpXTtcbiAgcmV0dXJuIGAjJHtjb2xvcn1GRmA7XG59XG5mdW5jdGlvbiBpc0Nzcyhwb3NzaWJsZUNzczogc3RyaW5nKTogcG9zc2libGVDc3MgaXMgQ1NTIHtcbiAgcmV0dXJuIHBvc3NpYmxlQ3NzLnN0YXJ0c1dpdGgoJy0tJykgJiYgdHlwZW9mIHBvc3NpYmxlQ3NzID09PSAnc3RyaW5nJztcbn1cbmZ1bmN0aW9uIGNhbGMoY2FsY1N0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgc3BsaXRTdHJpbmcgPSBjYWxjU3RyaW5nLnJlcGxhY2UoLyhcXGQqKSUvZywnJDEnKS5zcGxpdCgnICcpO1xuICBjb25zdCBvcGVyYXRvcnM6IHtba2V5OiBzdHJpbmddOiAobnVtMTpudW1iZXIsIG51bTI6bnVtYmVyKSA9PiBudW1iZXJ9ID0ge1xuICAgICcrJzogKG51bTE6bnVtYmVyLCBudW0yOm51bWJlcik6bnVtYmVyID0+IE1hdGgubWF4KG51bTErbnVtMiwwKSxcbiAgICAnLSc6IChudW0xOm51bWJlciAsbnVtMjpudW1iZXIpOm51bWJlciA9PiBNYXRoLm1heChudW0xLW51bTIsMCksXG4gIH1cbiAgaWYgKHNwbGl0U3RyaW5nLmxlbmd0aCA9PT0gMylcbiAgICBpZiAoc3BsaXRTdHJpbmdbMV0gaW4gb3BlcmF0b3JzKXtcbiAgICAgIHJldHVybiBgJHtvcGVyYXRvcnNbc3BsaXRTdHJpbmdbMV1dKHBhcnNlRmxvYXQoc3BsaXRTdHJpbmdbMF0pLHBhcnNlRmxvYXQoc3BsaXRTdHJpbmdbMl0pKX0lYFxuICAgIH1cbiAgY29uc29sZS5sb2coJ1dhcm5pbmc6IENvdWxkblxcJ3QgcGFyc2UgY2FsYyBzdHJpbmcnKTtcbiAgcmV0dXJuIGNhbGNTdHJpbmc7XG59XG5mdW5jdGlvbiBnZXRDc3NWYXJpYWJsZShjc3NWYXJpYWJsZTogQ1NTKTogSEVYIHtcbiAgbGV0IHZhcmlhYmxlVmFsdWUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZhbHVlKGNzc1ZhcmlhYmxlKS50cmltKCk7XG4gIGlmICh0eXBlb2YgdmFyaWFibGVWYWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YXJpYWJsZVZhbHVlLnRyaW0oKS5zdGFydHNXaXRoKCcjJykpXG4gICAgcmV0dXJuIGAjJHt2YXJpYWJsZVZhbHVlLnRyaW0oKS5zdWJzdHJpbmcoMSl9YDtcbiAgZWxzZSBpZiAodmFyaWFibGVWYWx1ZS5zdGFydHNXaXRoKCdyZ2InKSlcbiAgICByZXR1cm4gYCMke0NvbG9yVHJhbnNsYXRvci50b0hFWEEodmFyaWFibGVWYWx1ZS5yZXBsYWNlKC9jYWxjXFwoKC4qPylcXCkvZywobWF0Y2gsY2FwdHVyZSk9PmNhbGMoY2FwdHVyZSkpKS5zdWJzdHJpbmcoMSl9YDtcbiAgZWxzZSBpZiAodmFyaWFibGVWYWx1ZS5zdGFydHNXaXRoKCdoc2wnKSlcbiAgICByZXR1cm4gYCMke0NvbG9yVHJhbnNsYXRvci50b0hFWEEodmFyaWFibGVWYWx1ZS5yZXBsYWNlKC9jYWxjXFwoKC4qPylcXCkvZywobWF0Y2gsY2FwdHVyZSk9PmNhbGMoY2FwdHVyZSkpKS5zdWJzdHJpbmcoMSl9YDtcbiAgZWxzZSB7XG4gICAgY29uc29sZS5sb2coYFdhcm5pbmc6IENvdWxkbid0IGRldGVybWluZSBjb2xvciBmb3JtYXQgLSAke3ZhcmlhYmxlVmFsdWV9YCk7XG4gIH1cbiAgcmV0dXJuIGAjJHtDb2xvclRyYW5zbGF0b3IudG9IRVhBKHZhcmlhYmxlVmFsdWUpLnN1YnN0cmluZygxKX1gO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbG9yKHRoZW1lQ29sb3I6IENvbG9yKTogQ29sb3Ige1xuICByZXR1cm4gaXNDc3ModGhlbWVDb2xvcik/Z2V0Q3NzVmFyaWFibGUodGhlbWVDb2xvcik6dGhlbWVDb2xvcjs7XG59XG5cbi8vIFJlZ2V4IFRlc3RzXG5jb25zdCBDT0xPUl9OQU1FX1JFR0VYID0gL15bXlxcZF1cXHcqJC8iLCAidmFyIHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdD1PYmplY3QuYXNzaWdufHxmdW5jdGlvbih0KXtmb3IodmFyIGUscj0xLG49YXJndW1lbnRzLmxlbmd0aDtyPG47cisrKWZvcih2YXIgaSBpbiBlPWFyZ3VtZW50c1tyXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxpKSYmKHRbaV09ZVtpXSk7cmV0dXJuIHR9LHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtmdW5jdGlvbiBlKHQsZSxyKXtpZihyfHwyPT09YXJndW1lbnRzLmxlbmd0aClmb3IodmFyIG4saT0wLG89ZS5sZW5ndGg7aTxvO2krKykhbiYmaSBpbiBlfHwobnx8KG49QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSwwLGkpKSxuW2ldPWVbaV0pO3JldHVybiB0LmNvbmNhdChufHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKSl9dmFyIHIsbixpLG87IWZ1bmN0aW9uKHQpe3QuSEVYPVwiSEVYXCIsdC5SR0I9XCJSR0JcIix0LkhTTD1cIkhTTFwiLHQuQ01ZSz1cIkNNWUtcIn0ocnx8KHI9e30pKSxmdW5jdGlvbih0KXt0LkFOQUxPR09VUz1cIkFOQUxPR09VU1wiLHQuQ09NUExFTUVOVEFSWT1cIkNPTVBMRU1FTlRBUllcIix0LlNQTElUX0NPTVBMRU1FTlRBUlk9XCJTUExJVF9DT01QTEVNRU5UQVJZXCIsdC5UUklBRElDPVwiVFJJQURJQ1wiLHQuVEVUUkFESUM9XCJURVRSQURJQ1wiLHQuU1FVQVJFPVwiU1FVQVJFXCJ9KG58fChuPXt9KSksZnVuY3Rpb24odCl7dC5BRERJVElWRT1cIkFERElUSVZFXCIsdC5TVUJUUkFDVElWRT1cIlNVQlRSQUNUSVZFXCJ9KGl8fChpPXt9KSksZnVuY3Rpb24odCl7dC5ibGFjaz1cIiMwMDAwMDBcIix0LnNpbHZlcj1cIiNDMEMwQzBcIix0LmdyYXk9XCIjODA4MDgwXCIsdC53aGl0ZT1cIiNGRkZGRkZcIix0Lm1hcm9vbj1cIiM4MDAwMDBcIix0LnJlZD1cIiNGRjAwMDBcIix0LnB1cnBsZT1cIiM4MDAwODBcIix0LmZ1Y2hzaWE9XCIjRkYwMEZGXCIsdC5ncmVlbj1cIiMwMDgwMDBcIix0LmxpbWU9XCIjMDBGRjAwXCIsdC5vbGl2ZT1cIiM4MDgwMDBcIix0LnllbGxvdz1cIiNGRkZGMDBcIix0Lm5hdnk9XCIjMDAwMDgwXCIsdC5ibHVlPVwiIzAwMDBGRlwiLHQudGVhbD1cIiMwMDgwODBcIix0LmFxdWE9XCIjMDBGRkZGXCIsdC5vcmFuZ2U9XCIjRkZBNTAwXCIsdC5hbGljZWJsdWU9XCIjRjBGOEZGXCIsdC5hbnRpcXVld2hpdGU9XCIjRkFFQkQ3XCIsdC5hcXVhbWFyaW5lPVwiIzdGRkZENFwiLHQuYXp1cmU9XCIjRjBGRkZGXCIsdC5iZWlnZT1cIiNGNUY1RENcIix0LmJpc3F1ZT1cIiNGRkU0QzRcIix0LmJsYW5jaGVkYWxtb25kPVwiI0ZGRUJDRFwiLHQuYmx1ZXZpb2xldD1cIiM4QTJCRTJcIix0LmJyb3duPVwiI0E1MkEyQVwiLHQuYnVybHl3b29kPVwiI0RFQjg4N1wiLHQuY2FkZXRibHVlPVwiIzVGOUVBMFwiLHQuY2hhcnRyZXVzZT1cIiM3RkZGMDBcIix0LmNob2NvbGF0ZT1cIiNEMjY5MUVcIix0LmNvcmFsPVwiI0ZGN0Y1MFwiLHQuY29ybmZsb3dlcmJsdWU9XCIjNjQ5NUVEXCIsdC5jb3Juc2lsaz1cIiNGRkY4RENcIix0LmNyaW1zb249XCIjREMxNDNDXCIsdC5jeWFuPVwiIzAwRkZGRlwiLHQuZGFya2JsdWU9XCIjMDAwMDhCXCIsdC5kYXJrY3lhbj1cIiMwMDhCOEJcIix0LmRhcmtnb2xkZW5yb2Q9XCIjQjg4NjBCXCIsdC5kYXJrZ3JheT1cIiNBOUE5QTlcIix0LmRhcmtncmVlbj1cIiMwMDY0MDBcIix0LmRhcmtncmV5PVwiI0E5QTlBOVwiLHQuZGFya2toYWtpPVwiI0JEQjc2QlwiLHQuZGFya21hZ2VudGE9XCIjOEIwMDhCXCIsdC5kYXJrb2xpdmVncmVlbj1cIiM1NTZCMkZcIix0LmRhcmtvcmFuZ2U9XCIjRkY4QzAwXCIsdC5kYXJrb3JjaGlkPVwiIzk5MzJDQ1wiLHQuZGFya3JlZD1cIiM4QjAwMDBcIix0LmRhcmtzYWxtb249XCIjRTk5NjdBXCIsdC5kYXJrc2VhZ3JlZW49XCIjOEZCQzhGXCIsdC5kYXJrc2xhdGVibHVlPVwiIzQ4M0Q4QlwiLHQuZGFya3NsYXRlZ3JheT1cIiMyRjRGNEZcIix0LmRhcmtzbGF0ZWdyZXk9XCIjMkY0RjRGXCIsdC5kYXJrdHVycXVvaXNlPVwiIzAwQ0VEMVwiLHQuZGFya3Zpb2xldD1cIiM5NDAwRDNcIix0LmRlZXBwaW5rPVwiI0ZGMTQ5M1wiLHQuZGVlcHNreWJsdWU9XCIjMDBCRkZGXCIsdC5kaW1ncmF5PVwiIzY5Njk2OVwiLHQuZGltZ3JleT1cIiM2OTY5NjlcIix0LmRvZGdlcmJsdWU9XCIjMUU5MEZGXCIsdC5maXJlYnJpY2s9XCIjQjIyMjIyXCIsdC5mbG9yYWx3aGl0ZT1cIiNGRkZBRjBcIix0LmZvcmVzdGdyZWVuPVwiIzIyOEIyMlwiLHQuZ2FpbnNib3JvPVwiI0RDRENEQ1wiLHQuZ2hvc3R3aGl0ZT1cIiNGOEY4RkZcIix0LmdvbGQ9XCIjRkZENzAwXCIsdC5nb2xkZW5yb2Q9XCIjREFBNTIwXCIsdC5ncmVlbnllbGxvdz1cIiNBREZGMkZcIix0LmdyZXk9XCIjODA4MDgwXCIsdC5ob25leWRldz1cIiNGMEZGRjBcIix0LmhvdHBpbms9XCIjRkY2OUI0XCIsdC5pbmRpYW5yZWQ9XCIjQ0Q1QzVDXCIsdC5pbmRpZ289XCIjNEIwMDgyXCIsdC5pdm9yeT1cIiNGRkZGRjBcIix0LmtoYWtpPVwiI0YwRTY4Q1wiLHQubGF2ZW5kZXI9XCIjRTZFNkZBXCIsdC5sYXZlbmRlcmJsdXNoPVwiI0ZGRjBGNVwiLHQubGF3bmdyZWVuPVwiIzdDRkMwMFwiLHQubGVtb25jaGlmZm9uPVwiI0ZGRkFDRFwiLHQubGlnaHRibHVlPVwiI0FERDhFNlwiLHQubGlnaHRjb3JhbD1cIiNGMDgwODBcIix0LmxpZ2h0Y3lhbj1cIiNFMEZGRkZcIix0LmxpZ2h0Z29sZGVucm9keWVsbG93PVwiI0ZBRkFEMlwiLHQubGlnaHRncmF5PVwiI0QzRDNEM1wiLHQubGlnaHRncmVlbj1cIiM5MEVFOTBcIix0LmxpZ2h0Z3JleT1cIiNEM0QzRDNcIix0LmxpZ2h0cGluaz1cIiNGRkI2QzFcIix0LmxpZ2h0c2FsbW9uPVwiI0ZGQTA3QVwiLHQubGlnaHRzZWFncmVlbj1cIiMyMEIyQUFcIix0LmxpZ2h0c2t5Ymx1ZT1cIiM4N0NFRkFcIix0LmxpZ2h0c2xhdGVncmF5PVwiIzc3ODg5OVwiLHQubGlnaHRzbGF0ZWdyZXk9XCIjNzc4ODk5XCIsdC5saWdodHN0ZWVsYmx1ZT1cIiNCMEM0REVcIix0LmxpZ2h0eWVsbG93PVwiI0ZGRkZFMFwiLHQubGltZWdyZWVuPVwiIzMyQ0QzMlwiLHQubGluZW49XCIjRkFGMEU2XCIsdC5tYWdlbnRhPVwiI0ZGMDBGRlwiLHQubWVkaXVtYXF1YW1hcmluZT1cIiM2NkNEQUFcIix0Lm1lZGl1bWJsdWU9XCIjMDAwMENEXCIsdC5tZWRpdW1vcmNoaWQ9XCIjQkE1NUQzXCIsdC5tZWRpdW1wdXJwbGU9XCIjOTM3MERCXCIsdC5tZWRpdW1zZWFncmVlbj1cIiMzQ0IzNzFcIix0Lm1lZGl1bXNsYXRlYmx1ZT1cIiM3QjY4RUVcIix0Lm1lZGl1bXNwcmluZ2dyZWVuPVwiIzAwRkE5QVwiLHQubWVkaXVtdHVycXVvaXNlPVwiIzQ4RDFDQ1wiLHQubWVkaXVtdmlvbGV0cmVkPVwiI0M3MTU4NVwiLHQubWlkbmlnaHRibHVlPVwiIzE5MTk3MFwiLHQubWludGNyZWFtPVwiI0Y1RkZGQVwiLHQubWlzdHlyb3NlPVwiI0ZGRTRFMVwiLHQubW9jY2FzaW49XCIjRkZFNEI1XCIsdC5uYXZham93aGl0ZT1cIiNGRkRFQURcIix0Lm9sZGxhY2U9XCIjRkRGNUU2XCIsdC5vbGl2ZWRyYWI9XCIjNkI4RTIzXCIsdC5vcmFuZ2VyZWQ9XCIjRkY0NTAwXCIsdC5vcmNoaWQ9XCIjREE3MEQ2XCIsdC5wYWxlZ29sZGVucm9kPVwiI0VFRThBQVwiLHQucGFsZWdyZWVuPVwiIzk4RkI5OFwiLHQucGFsZXR1cnF1b2lzZT1cIiNBRkVFRUVcIix0LnBhbGV2aW9sZXRyZWQ9XCIjREI3MDkzXCIsdC5wYXBheWF3aGlwPVwiI0ZGRUZENVwiLHQucGVhY2hwdWZmPVwiI0ZGREFCOVwiLHQucGVydT1cIiNDRDg1M0ZcIix0LnBpbms9XCIjRkZDMENCXCIsdC5wbHVtPVwiI0REQTBERFwiLHQucG93ZGVyYmx1ZT1cIiNCMEUwRTZcIix0LnJvc3licm93bj1cIiNCQzhGOEZcIix0LnJveWFsYmx1ZT1cIiM0MTY5RTFcIix0LnNhZGRsZWJyb3duPVwiIzhCNDUxM1wiLHQuc2FsbW9uPVwiI0ZBODA3MlwiLHQuc2FuZHlicm93bj1cIiNGNEE0NjBcIix0LnNlYWdyZWVuPVwiIzJFOEI1N1wiLHQuc2Vhc2hlbGw9XCIjRkZGNUVFXCIsdC5zaWVubmE9XCIjQTA1MjJEXCIsdC5za3libHVlPVwiIzg3Q0VFQlwiLHQuc2xhdGVibHVlPVwiIzZBNUFDRFwiLHQuc2xhdGVncmF5PVwiIzcwODA5MFwiLHQuc2xhdGVncmV5PVwiIzcwODA5MFwiLHQuc25vdz1cIiNGRkZBRkFcIix0LnNwcmluZ2dyZWVuPVwiIzAwRkY3RlwiLHQuc3RlZWxibHVlPVwiIzQ2ODJCNFwiLHQudGFuPVwiI0QyQjQ4Q1wiLHQudGhpc3RsZT1cIiNEOEJGRDhcIix0LnRvbWF0bz1cIiNGRjYzNDdcIix0LnR1cnF1b2lzZT1cIiM0MEUwRDBcIix0LnZpb2xldD1cIiNFRTgyRUVcIix0LndoZWF0PVwiI0Y1REVCM1wiLHQud2hpdGVzbW9rZT1cIiNGNUY1RjVcIix0LnllbGxvd2dyZWVuPVwiIzlBQ0QzMlwiLHQucmViZWNjYXB1cnBsZT1cIiM2NjMzOTlcIn0ob3x8KG89e30pKTt2YXIgYSx1LGMscyxkLGgsbCxmPU9iamVjdC5rZXlzKG8pLGc9e0hFWDpbXCJyXCIsXCJnXCIsXCJiXCIsXCJhXCJdLFJHQjpbXCJyXCIsXCJnXCIsXCJiXCIsXCJhXCJdLEhTTDpbXCJoXCIsXCJzXCIsXCJsXCIsXCJhXCJdLENNWUs6W1wiY1wiLFwibVwiLFwieVwiLFwia1wiLFwiYVwiXX0scD17QkdSOnIuUkdCLEFCR1I6ci5SR0IsSExTOnIuSFNMLEFITFM6ci5IU0wsQ0tNWTpyLkNNWUssQUNLTVk6ci5DTVlLfSxiPSgoYT17fSlbci5IRVhdPS9eIyg/OihbYS1mXFxkXSkoW2EtZlxcZF0pKFthLWZcXGRdKShbYS1mXFxkXSk/fChbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSk/KSQvaSxhW3IuUkdCXT0vXnJnYmE/XFxzKlxcKFxccyooPzooKD86XFxkKlxcLik/XFxkKyU/KVxccyosXFxzKigoPzpcXGQqXFwuKT9cXGQrJT8pXFxzKixcXHMqKCg/OlxcZCpcXC4pP1xcZCslPykoPzpcXHMqLFxccyooKD86XFxkKlxcLik/XFxkKykpP3woKD86XFxkKlxcLik/XFxkKyU/KVxccyooKD86XFxkKlxcLik/XFxkKyU/KVxccyooKD86XFxkKlxcLik/XFxkKyU/KSg/OlxccypcXC9cXHMqKCg/OlxcZCpcXC4pP1xcZCslPykpPylcXHMqXFwpJC8sYVtyLkhTTF09L15oc2xhP1xccypcXChcXHMqKD86KC0/KD86XFxkKlxcLik/XFxkKyg/OmRlZ3xncmFkfHJhZHx0dXJuKT8pXFxzKixcXHMqKCg/OlxcZCpcXC4pP1xcZCspJVxccyosXFxzKigoPzpcXGQqXFwuKT9cXGQrKSUoPzpcXHMqLFxccyooKD86XFxkKlxcLik/XFxkKykpP3woLT8oPzpcXGQqXFwuKT9cXGQrKD86ZGVnfGdyYWR8cmFkfHR1cm4pPylcXHMqKCg/OlxcZCpcXC4pP1xcZCspJVxccyooKD86XFxkKlxcLik/XFxkKyklKD86XFxzKlxcL1xccyooKD86XFxkKlxcLik/XFxkKyU/KSk/KVxccypcXCkkLyxhW3IuQ01ZS109L14oPzpkZXZpY2UtY215a3xjbXlrKVxccypcXChcXHMqKD86KCg/OlxcZCpcXC4pP1xcZCslPylcXHMqLFxccyooKD86XFxkKlxcLik/XFxkKyU/KVxccyosXFxzKigoPzpcXGQqXFwuKT9cXGQrJT8pXFxzKixcXHMqKCg/OlxcZCpcXC4pP1xcZCslPykoPzpcXHMqLFxccyooKD86XFxkKlxcLik/XFxkKykpP3woKD86XFxkKlxcLik/XFxkKyU/KVxccyooKD86XFxkKlxcLik/XFxkKyU/KVxccyooKD86XFxkKlxcLik/XFxkKyU/KVxccyooKD86XFxkKlxcLik/XFxkKyU/KSg/OlxccypcXC9cXHMqKCg/OlxcZCpcXC4pP1xcZCslPykpPylcXHMqXFwpJC8sYSksRj0vXigtPyg/OlxcZCpcXC4pP1xcZCspKCg/OmRlZ3xncmFkfHJhZHx0dXJuKT8pJC8sbT0vXihcXGQrKD86XFwuXFxkKyk/fFxcLlxcZCspJSQvLHk9L14weChbYS1mXFxkXXsxLDJ9KSQvaSxBPS9cXHsoXFxkKylcXH0vZyxFPVwiVGhlIHByb3ZpZGVkIHN0cmluZyBjb2xvciBkb2Vzbid0IGhhdmUgYSBjb3JyZWN0IGZvcm1hdFwiLHY9XCJUaGUgcHJvdmlkZWQgY29sb3Igb2JqZWN0IGRvZXNuJ3QgaGF2ZSB0aGUgcHJvcGVyIGtleXMgb3IgZm9ybWF0XCIsSD1mdW5jdGlvbih0LGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlKX0sQj1mdW5jdGlvbih0KXtyZXR1cm4rXCJcIi5jb25jYXQodCkucmVwbGFjZShtLFwiJDFcIil9LEM9ZnVuY3Rpb24odCl7cmV0dXJuIG0udGVzdChcIlwiLmNvbmNhdCh0KSk/Qih0KTpNYXRoLm1pbigrdCwxMDApfSxNPWZ1bmN0aW9uKHQpe3JldHVybiAxPT09dC5sZW5ndGgmJih0Kz10KSxwYXJzZUludCh0LDE2KX0sUj1mdW5jdGlvbih0KXt2YXIgZT1HKHQsMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7cmV0dXJuIDE9PT1lLmxlbmd0aD9cIjB4MFwiLmNvbmNhdChlKTpcIjB4XCIuY29uY2F0KGUpfSxEPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPSExKSwhZSYmbS50ZXN0KHQpP01hdGgubWluKDI1NSpCKHQpLzEwMCwyNTUpOnkudGVzdCh0KT8oMz09PXQubGVuZ3RoJiYodCs9dC5zbGljZSgtMSkpLGU/Ryh0KS8yNTU6Ryh0KSk6TWF0aC5taW4oK3QsZT8xOjI1NSl9LFM9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubWluKG0udGVzdCh0KT9CKHQpLzEwMDordCwxKX0sTD1mdW5jdGlvbih0KXtyZXR1cm4gZShbXSx0LCEwKS5zb3J0KCkuam9pbihcIlwiKS50b1VwcGVyQ2FzZSgpfSxHPWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9Nik7dmFyIHI9TWF0aC5wb3coMTAsZSk7cmV0dXJuIE1hdGgucm91bmQoK3Qqcikvcn0saz1mdW5jdGlvbih0LGUscil7cmV0dXJuIE1hdGgubWF4KGUsTWF0aC5taW4odCxyKSl9LE89ZnVuY3Rpb24odCxlLHIpe3JldHVybiByPDAmJihyKz02KSxyPj02JiYoci09NiksRyhyPDE/MjU1KigoZS10KSpyK3QpOnI8Mz8yNTUqZTpyPDQ/MjU1KigoZS10KSooNC1yKSt0KToyNTUqdCl9LFg9ZnVuY3Rpb24odCxlLHIpe2UvPTEwMDt2YXIgbj0oci89MTAwKTw9LjU/ciooZSsxKTpyK2UtciplLGk9MipyLW47cmV0dXJue3I6TyhpLG4sKHQvPTYwKSsyKSxnOk8oaSxuLHQpLGI6TyhpLG4sdC0yKX19LFk9ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJue3I6RygyNTUqKDEtdCkqKG49MS1uKSksZzpHKDI1NSooMS1lKSpuKSxiOkcoMjU1KigxLXIpKm4pfX0saj1mdW5jdGlvbih0LGUscil7dC89MjU1LGUvPTI1NSxyLz0yNTU7dmFyIG49MS1NYXRoLm1heCh0LGUsciksaT0xLW4sbz1pJiYoaS1lKS9pLGE9aSYmKGktcikvaTtyZXR1cm57YzpHKDEwMCooaSYmKGktdCkvaSkpLG06RygxMDAqbykseTpHKDEwMCphKSxrOkcoMTAwKm4pfX0sSz1mdW5jdGlvbih0LGUscixuKXt2b2lkIDA9PT1uJiYobj0xKSx0Lz0yNTUsZS89MjU1LHIvPTI1NSxuPU1hdGgubWluKG4sMSk7dmFyIGk9TWF0aC5tYXgodCxlLHIpLG89TWF0aC5taW4odCxlLHIpLGE9aS1vLHU9MCxjPTAscz0oaStvKS8yO2lmKDAhPT1hKXtzd2l0Y2goaSl7Y2FzZSB0OnU9KGUtcikvYSU2O2JyZWFrO2Nhc2UgZTp1PShyLXQpL2ErMjticmVhaztjYXNlIHI6dT0odC1lKS9hKzR9KHU9Ryg2MCp1KSk8MCYmKHUrPTM2MCksYz1hLygxLU1hdGguYWJzKDIqcy0xKSl9cmV0dXJue2g6dSxzOkcoMTAwKmMpLGw6RygxMDAqcyksYTpufX0sST1mdW5jdGlvbih0LGUpe2lmKHQ8MCYmKHQrPTM2MCksdD4zNjAmJih0LT0zNjApLDM2MD09PXR8fDA9PT10KXJldHVybiB0O3ZhciByPVtbMCwxMjBdLFsxMjAsMTgwXSxbMTgwLDI0MF0sWzI0MCwzNjBdXSxuPVtbMCw2MF0sWzYwLDEyMF0sWzEyMCwyNDBdLFsyNDAsMzYwXV0saT1lP246cixvPTAsYT0wLHU9MCxjPTA7cmV0dXJuKGU/cjpuKS5maW5kKChmdW5jdGlvbihlLHIpe3JldHVybiB0Pj1lWzBdJiZ0PGVbMV0mJihvPWVbMF0sYT1lWzFdLHU9aVtyXVswXSxjPWlbcl1bMV0sITApfSkpLHUrKGMtdSkvKGEtbykqKHQtbyl9LFA9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT0hMSk7dmFyIHI9TChPYmplY3Qua2V5cyh0KSk7cmV0dXJuIGdbcFtyXV0ucmVkdWNlKChmdW5jdGlvbihyLG4pe3ZhciBpLG8sYT10W25dO3JldHVybiB2b2lkIDAhPT1hJiYoZT9yLnB1c2goKGk9RyhhLDApLDE9PT0obz1HKGksMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkpLmxlbmd0aCYmKG89XCIwXCIuY29uY2F0KG8pKSxvKSk6ci5wdXNoKGEpKSxyfSksW10pfSxUPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQucmVwbGFjZShBLChmdW5jdGlvbih0LHIpe3JldHVyblwiXCIuY29uY2F0KGVbK3ItMV0pfSkpfSx3PSgodT17fSlbci5IRVhdPWZ1bmN0aW9uKHQpe3ZhciBlPVAodCwhMCkscj00PT09ZS5sZW5ndGg/XCIjezF9ezJ9ezN9ezR9XCI6XCIjezF9ezJ9ezN9XCI7cmV0dXJuIFQocixlKX0sdVtyLlJHQl09ZnVuY3Rpb24odCl7dmFyIGU9UCh0KSxyPTQ9PT1lLmxlbmd0aD9cInJnYmEoezF9LHsyfSx7M30sezR9KVwiOlwicmdiKHsxfSx7Mn0sezN9KVwiO3JldHVybiBUKHIsZSl9LHVbci5IU0xdPWZ1bmN0aW9uKHQpe3ZhciBlPVAodCkscj00PT09ZS5sZW5ndGg/XCJoc2xhKHsxfSx7Mn0lLHszfSUsezR9KVwiOlwiaHNsKHsxfSx7Mn0lLHszfSUpXCI7cmV0dXJuIFQocixlKX0sdVtyLkNNWUtdPWZ1bmN0aW9uKHQpe3ZhciBlPVAodCkscj01PT09ZS5sZW5ndGg/XCJjbXlrKHsxfSUsezJ9JSx7M30lLHs0fSUsezV9KVwiOlwiY215ayh7MX0lLHsyfSUsezN9JSx7NH0lKVwiO3JldHVybiBUKHIsZSl9LHUpLHg9ZnVuY3Rpb24odCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpe3ZhciBlPXQubWF0Y2goRikscj0rZVsxXTtzd2l0Y2goZVsyXSl7Y2FzZVwicmFkXCI6dD1HKDE4MCpyL01hdGguUEkpO2JyZWFrO2Nhc2VcInR1cm5cIjp0PUcoMzYwKnIpO2JyZWFrO2RlZmF1bHQ6dD1yfX1yZXR1cm4odD4zNjB8fHQ8MCkmJih0LT0zNjAqTWF0aC5mbG9vcih0LzM2MCkpLHR9LE49ZnVuY3Rpb24odCl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQmJih0PW0udGVzdCh0KT9CKHQpLzEwMDordCksaXNOYU4oK3QpfHx0PjE/MTpHKHQpfSxWPWZ1bmN0aW9uKHIsbixvKXtyZXR1cm4gbi5yZWR1Y2UoKGZ1bmN0aW9uKG4sYSl7cmV0dXJuIGUoZShbXSxuLCEwKSxbdCh0KHt9LHIpLHtoOm89PT1pLkFERElUSVZFP3goci5oK2EpOngoSShJKHIuaCwhMSkrYSwhMCkpfSldLCExKX0pLFt0KHt9LHIpXSl9LFU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gVih0LFszMCwtMzBdLGUpfSxxPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFYodCxbMTgwXSxlKX0sJD1mdW5jdGlvbih0LGUpe3JldHVybiBWKHQsWzE1MCwtMTUwXSxlKX0sXz1mdW5jdGlvbih0LGUpe3JldHVybiBWKHQsWzEyMCwtMTIwXSxlKX0sUT1mdW5jdGlvbih0LGUpe3JldHVybiBWKHQsWzYwLC0xMjAsMTgwXSxlKX0sej1mdW5jdGlvbih0LGUpe3JldHVybiBWKHQsWzkwLC05MCwxODBdLGUpfSxKPWZ1bmN0aW9uKHQpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiB0P2Z1bmN0aW9uKHQpe3ZhciBlO2lmKE9iamVjdC5rZXlzKHIpLnNvbWUoKGZ1bmN0aW9uKHIpe2lmKGJbcl0udGVzdCh0KSlyZXR1cm4gZT1yLCEwfSkpLCFlJiZ+Zi5pbmRleE9mKHQpJiYoZT1yLkhFWCksIWUpdGhyb3cgbmV3IEVycm9yKEUpO3JldHVybiBlfSh0KTpmdW5jdGlvbih0KXt2YXIgZSxuPSExLGk9TChPYmplY3Qua2V5cyh0KSk7aWYocFtpXSYmKGU9cFtpXSksZSYmZT09PXIuUkdCKXt2YXIgbz1PYmplY3QuZW50cmllcyh0KS5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4heS50ZXN0KFwiXCIuY29uY2F0KHRbMV0pKX0pKSxhPU9iamVjdC5lbnRyaWVzKHQpLnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiEobS50ZXN0KFwiXCIuY29uY2F0KHRbMV0pKXx8IXkudGVzdChcIlwiLmNvbmNhdCh0WzFdKSkmJiFpc05hTigrdFsxXSkmJit0WzFdPD0yNTUpfSkpO28mJmEmJihuPSEwKSxvfHwoZT1yLkhFWCl9aWYoIWV8fG4pdGhyb3cgbmV3IEVycm9yKHYpO3JldHVybiBlfSh0KX0sVz0oKGM9e30pW3IuSEVYXT1mdW5jdGlvbih0KXt2YXIgZT0ofmYuaW5kZXhPZih0KT9vW3RdOnQpLm1hdGNoKGIuSEVYKSxyPXtyOk0oZVsxXXx8ZVs1XSksZzpNKGVbMl18fGVbNl0pLGI6TShlWzNdfHxlWzddKX0sbj1lWzRdfHxlWzhdO3JldHVybiB2b2lkIDAhPT1uJiYoci5hPU0obikvMjU1KSxyfSxjW3IuUkdCXT1mdW5jdGlvbih0KXt2YXIgZT10Lm1hdGNoKGIuUkdCKSxyPUQoZVsxXXx8ZVs1XSksbj1EKGVbMl18fGVbNl0pLGk9RChlWzNdfHxlWzddKSxvPWVbNF18fGVbOF0sYT17cjpNYXRoLm1pbihyLDI1NSksZzpNYXRoLm1pbihuLDI1NSksYjpNYXRoLm1pbihpLDI1NSl9O3JldHVybiB2b2lkIDAhPT1vJiYoYS5hPU4obykpLGF9LGNbci5IU0xdPWZ1bmN0aW9uKHQpe3ZhciBlPXQubWF0Y2goYi5IU0wpLHI9eChlWzFdfHxlWzVdKSxuPUMoZVsyXXx8ZVs2XSksaT1DKGVbM118fGVbN10pLG89ZVs0XXx8ZVs4XSxhPVgocixuLGkpO3JldHVybiB2b2lkIDAhPT1vJiYoYS5hPU4obykpLGF9LGNbci5DTVlLXT1mdW5jdGlvbih0KXt2YXIgZT10Lm1hdGNoKGIuQ01ZSykscj1TKGVbMV18fGVbNl0pLG49UyhlWzJdfHxlWzddKSxpPVMoZVszXXx8ZVs4XSksbz1TKGVbNF18fGVbOV0pLGE9ZVs1XXx8ZVsxMF0sdT1ZKHIsbixpLG8pO3JldHVybiB2b2lkIDAhPT1hJiYodS5hPU4oYSkpLHV9LGMpLFo9KChzPXt9KVtyLkhFWF09ZnVuY3Rpb24odCl7dmFyIGU9e3I6RChcIlwiLmNvbmNhdCh0LnIpKSxnOkQoXCJcIi5jb25jYXQodC5nKSksYjpEKFwiXCIuY29uY2F0KHQuYikpfTtyZXR1cm4gSCh0LFwiYVwiKSYmKGUuYT1NYXRoLm1pbihEKFwiXCIuY29uY2F0KHQuYSksITApLDEpKSxlfSxzW3IuUkdCXT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5IRVgodCl9LHNbci5IU0xdPWZ1bmN0aW9uKHQpe3ZhciBlPUMoXCJcIi5jb25jYXQodC5zKSkscj1DKFwiXCIuY29uY2F0KHQubCkpLG49WCh4KHQuaCksZSxyKTtyZXR1cm4gSCh0LFwiYVwiKSYmKG4uYT1OKHQuYSkpLG59LHNbci5DTVlLXT1mdW5jdGlvbih0KXt2YXIgZT1TKFwiXCIuY29uY2F0KHQuYykpLHI9UyhcIlwiLmNvbmNhdCh0Lm0pKSxuPVMoXCJcIi5jb25jYXQodC55KSksaT1TKFwiXCIuY29uY2F0KHQuaykpLG89WShlLHIsbixpKTtyZXR1cm4gSCh0LFwiYVwiKSYmKG8uYT1OKHQuYSkpLG99LHMpLHR0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPUoodCkpLFwic3RyaW5nXCI9PXR5cGVvZiB0P1dbZV0odCk6WltlXSh0KX0sZXQ9KChkPXt9KVtyLkhFWF09ZnVuY3Rpb24odCl7cmV0dXJue3I6Uih0LnIpLGc6Uih0LmcpLGI6Uih0LmIpfX0sZC5IRVhBPWZ1bmN0aW9uKHQpe3ZhciBlPWV0LkhFWCh0KTtyZXR1cm4gZS5hPUgodCxcImFcIik/UigyNTUqdC5hKTpcIjB4RkZcIixlfSxkW3IuUkdCXT1mdW5jdGlvbih0LGUpe3JldHVybiBIKHQsXCJhXCIpJiZkZWxldGUgdC5hLG90KHQsZSl9LGQuUkdCQT1mdW5jdGlvbih0LGUpe3JldHVybiB0LmE9SCh0LFwiYVwiKT9HKHQuYSk6MSxvdCh0LGUpfSxkW3IuSFNMXT1mdW5jdGlvbih0LGUpe3ZhciByPUsodC5yLHQuZyx0LmIpO3JldHVybiBkZWxldGUgci5hLGF0KHIsZSl9LGQuSFNMQT1mdW5jdGlvbih0LGUpe3ZhciByPWV0LkhTTCh0LGUpO3JldHVybiByLmE9SCh0LFwiYVwiKT9HKHQuYSxlKToxLHJ9LGRbci5DTVlLXT1mdW5jdGlvbih0LGUpe3JldHVybiB1dChqKHQucix0LmcsdC5iKSxlKX0sZC5DTVlLQT1mdW5jdGlvbih0LGUpe3ZhciByPWV0LkNNWUsodCxlKTtyZXR1cm4gci5hPUgodCxcImFcIik/Ryh0LmEsZSk6MSxyfSxkKSxydD1mdW5jdGlvbihlLG4saSxvKXt2YXIgYT1KKGUpLHU9XCJzdHJpbmdcIj09dHlwZW9mIGUsYz10dChlLGEpLHM9XCJzdHJpbmdcIj09dHlwZW9mIGUmJkgoYyxcImFcIil8fFwic3RyaW5nXCIhPXR5cGVvZiBlJiZIKGUsXCJhXCIpLGQ9SyhjLnIsYy5nLGMuYixjLmEpO3N8fGRlbGV0ZSBkLmE7dmFyIGg9aT9kLmwvKG4rMSk6KDEwMC1kLmwpLyhuKzEpLGw9QXJyYXkobikuZmlsbChudWxsKS5tYXAoKGZ1bmN0aW9uKGUscil7cmV0dXJuIHQodCh7fSxkKSx7bDpkLmwraCoocisxKSooMS0yKitpKX0pfSkpO3N3aXRjaChhKXtjYXNlIHIuSEVYOmRlZmF1bHQ6cmV0dXJuIGwubWFwKChmdW5jdGlvbihlKXt2YXIgcj1YKGUuaCxlLnMsZS5sKTtyZXR1cm4gcyYmKHIuYT1lLmEpLHU/cz93LkhFWChvdCh0KHQoe30scikse2E6RygyNTUqci5hKX0pLG8pKTp3LkhFWChvdChyLG8pKTpzP2V0LkhFWEEocik6ZXQuSEVYKHIpfSkpO2Nhc2Ugci5SR0I6cmV0dXJuIGwubWFwKChmdW5jdGlvbih0KXt2YXIgZT1YKHQuaCx0LnMsdC5sKTtyZXR1cm4gcyYmKGUuYT10LmEpLHU/dy5SR0Iob3QoZSxvKSk6cz9ldC5SR0JBKGUsbyk6ZXQuUkdCKGUsbyl9KSk7Y2FzZSByLkhTTDpyZXR1cm4gbC5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB1P3cuSFNMKGF0KGUsbykpOnM/ZXQuSFNMQSh0KHQoe30sWChlLmgsZS5zLGUubCkpLHthOmUuYX0pLG8pOmV0LkhTTChYKGUuaCxlLnMsZS5sKSxvKX0pKX19LG50PSgoaD17YnVpbGRIYXJtb255OmZ1bmN0aW9uKHQsZSxuLGkpe3ZhciBvPUoodCksYT10dCh0LG8pLHU9SyhhLnIsYS5nLGEuYixhLmEpLGM9XCJzdHJpbmdcIj09dHlwZW9mIHQmJkgoYSxcImFcIil8fFwic3RyaW5nXCIhPXR5cGVvZiB0JiZIKHQsXCJhXCIpLHM9XCJzdHJpbmdcIj09dHlwZW9mIHQ7c3dpdGNoKG8pe2Nhc2Ugci5IRVg6ZGVmYXVsdDpyZXR1cm4gYz90aGlzLkhFWEEoYXQodSwwKSxlLG4scyk6dGhpcy5IRVgoYXQodSwwKSxlLG4scyk7Y2FzZSByLkhTTDpyZXR1cm4gYz90aGlzLkhTTEEodSxlLG4scyxpKTp0aGlzLkhTTCh1LGUsbixzLGkpO2Nhc2Ugci5SR0I6cmV0dXJuIGM/dGhpcy5SR0JBKHUsZSxuLHMsaSk6dGhpcy5SR0IodSxlLG4scyxpKX19fSlbci5IRVhdPWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiBlKHQscikubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbj93LkhFWChYKHQuaCx0LnMsdC5sKSk6ZXQuSEVYKFgodC5oLHQucyx0LmwpKX0pKX0saC5IRVhBPWZ1bmN0aW9uKGUscixuLGkpe3JldHVybiByKGUsbikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gaT93LkhFWCh0KHQoe30sWChlLmgsZS5zLGUubCkpLHthOjI1NSpOKGUuYSl9KSk6ZXQuSEVYQSh0KHQoe30sWChlLmgsZS5zLGUubCkpLHthOk4oZS5hKX0pKX0pKX0saFtyLlJHQl09ZnVuY3Rpb24odCxlLHIsbixpKXtyZXR1cm4gZSh0LHIpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG4/dy5SR0Iob3QoWCh0LmgsdC5zLHQubCksaSkpOmV0LlJHQihYKHQuaCx0LnMsdC5sKSxpKX0pKX0saC5SR0JBPWZ1bmN0aW9uKGUscixuLGksbyl7cmV0dXJuIHIoZSxuKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBpP3cuUkdCKG90KHQodCh7fSxYKGUuaCxlLnMsZS5sKSkse2E6TihlLmEpfSksbykpOmV0LlJHQkEodCh0KHt9LFgoZS5oLGUucyxlLmwpKSx7YTpOKGUuYSl9KSxvKX0pKX0saFtyLkhTTF09ZnVuY3Rpb24odCxlLHIsbixpKXtyZXR1cm4gZSh0LHIpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG4/dy5IU0woYXQoe2g6dC5oLHM6dC5zLGw6dC5sfSxpKSk6ZXQuSFNMKFgodC5oLHQucyx0LmwpLGkpfSkpfSxoLkhTTEE9ZnVuY3Rpb24oZSxyLG4saSxvKXtyZXR1cm4gcihlLG4pLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGk/dy5IU0woYXQodCh0KHt9LGUpLHthOk4oZS5hKX0pLG8pKTpldC5IU0xBKHQodCh7fSxYKGUuaCxlLnMsZS5sKSkse2E6TihlLmEpfSksbyl9KSl9LGgpLGl0PSgobD17bWl4OmZ1bmN0aW9uKGUscil7dmFyIG4sbyxhLHUsYyxzLGQsaCxsLGYsZyxwLGIsRixtLHk9ZS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPUoodCk7cmV0dXJuIHR0KHQsZSl9KSksQT1yPT09aS5TVUJUUkFDVElWRT95Lm1hcCgoZnVuY3Rpb24odCl7dmFyIGUscixuLGksbyxhLHUsYyxzLGQsaCxsLGYsZyxwPShlPXQucixyPXQuZyxuPXQuYixpPU1hdGgubWluKGUscixuKSxvPU1hdGgubWluKDI1NS1lLDI1NS1yLDI1NS1uKSxhPWUtaSx1PXItaSxjPW4taSxzPU1hdGgubWluKGEsdSksZD1hLXMsaD0odStzKS8yLGw9KGMrdS1zKS8yLGY9TWF0aC5tYXgoZCxoLGwpL01hdGgubWF4KGEsdSxjKSxnPWlzTmFOKGYpfHxmPT09MS8wfHxmPD0wPzE6Zix7cjpkL2crbyx5OmgvZytvLGI6bC9nK299KTtyZXR1cm4gSCh0LFwiYVwiKSYmKHAuYT10LmEpLHB9KSk6bnVsbDtmdW5jdGlvbiBFKGUpe3ZhciBuPXI9PT1pLkFERElUSVZFP3tyOjAsZzowLGI6MCxhOjB9OntyOjAseTowLGI6MCxhOjB9O3JldHVybiBlLnJlZHVjZSgoZnVuY3Rpb24oZSxuKXt2YXIgbz1IKG4sXCJhXCIpP24uYToxLGE9e3I6TWF0aC5taW4oZS5yK24ucipvLDI1NSksYjpNYXRoLm1pbihlLmIrbi5iKm8sMjU1KSxhOjEtKDEtbykqKDEtZS5hKX0sdT1cImdcImluIGU/ZS5nOmUueSxjPVwiZ1wiaW4gbj9uLmc6bi55O3JldHVybiB0KHQoe30sYSkscj09PWkuQURESVRJVkU/e2c6TWF0aC5taW4odStjKm8sMjU1KX06e3k6TWF0aC5taW4odStjKm8sMjU1KX0pfSksbil9aWYocj09PWkuQURESVRJVkUpbj1FKHkpO2Vsc2V7dmFyIHY9RShBKTtvPXYucixhPXYueSx1PXYuYixjPU1hdGgubWluKG8sYSx1KSxzPU1hdGgubWluKDI1NS1vLDI1NS1hLDI1NS11KSxkPW8tYyxoPWEtYyxsPXUtYyxmPU1hdGgubWluKGgsbCksZz1kK2gtZixwPWgrZixiPTIqKGwtZiksRj1NYXRoLm1heChnLHAsYikvTWF0aC5tYXgoZCxoLGwpLG09aXNOYU4oRil8fEY9PT0xLzB8fEY8PTA/MTpGLChuPXtyOmcvbStzLGc6cC9tK3MsYjpiL20rc30pLmE9di5hfXJldHVybntyOkcobi5yKSxnOkcobi5nKSxiOkcobi5iKSxhOmsobi5hLDAsMSl9fX0pW3IuSEVYXT1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5taXgodCxlKTtyZXR1cm4gZGVsZXRlIG4uYSxyP3cuSEVYKG4pOmV0LkhFWChuKX0sbC5IRVhBPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLm1peCh0LGUpO3JldHVybiBuLmE9cj8yNTUqTihuLmEpOk4obi5hKSxyP3cuSEVYKG4pOmV0LkhFWEEobil9LGxbci5SR0JdPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPXRoaXMubWl4KHQsZSk7cmV0dXJuIGRlbGV0ZSBpLmEscj93LlJHQihpKTpldC5SR0IoaSxuKX0sbC5SR0JBPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPXRoaXMubWl4KHQsZSk7cmV0dXJuIHI/dy5SR0IoaSk6ZXQuUkdCQShpLG4pfSxsW3IuSFNMXT1mdW5jdGlvbih0LGUscixuKXt2YXIgaT10aGlzLm1peCh0LGUpLG89SyhpLnIsaS5nLGkuYik7cmV0dXJuIGRlbGV0ZSBpLmEsZGVsZXRlIG8uYSxyP3cuSFNMKG8pOmV0LkhTTChpLG4pfSxsLkhTTEE9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9dGhpcy5taXgodCxlKSxvPUsoaS5yLGkuZyxpLmIsaS5hKTtyZXR1cm4gcj93LkhTTChvKTpldC5IU0xBKGksbil9LGwpLG90PWZ1bmN0aW9uKGUscil7cmV0dXJuIHQoe3I6RyhlLnIsciksZzpHKGUuZyxyKSxiOkcoZS5iLHIpfSxIKGUsXCJhXCIpP3thOkcoZS5hLHIpfTp7fSl9LGF0PWZ1bmN0aW9uKGUscil7cmV0dXJuIHQoe2g6RyhlLmgsciksczpHKGUucyxyKSxsOkcoZS5sLHIpfSxIKGUsXCJhXCIpP3thOkcoZS5hLHIpfTp7fSl9LHV0PWZ1bmN0aW9uKHQsZSl7cmV0dXJue2M6Ryh0LmMsZSksbTpHKHQubSxlKSx5OkcodC55LGUpLGs6Ryh0LmssZSl9fSxjdD1mdW5jdGlvbih0LGUscixuLGksbyl7dmFyIGE9aSh0dCh0LGUpLG4pO3JldHVybiByP28oYSk6YX0sc3Q9ZnVuY3Rpb24odCxlLHIsbixpLG8sYSl7cjwxJiYocj01KTt2YXIgdT1mdW5jdGlvbih0LGUscil7dmFyIG49ci0xLGk9KGUuci10LnIpL24sbz0oZS5nLXQuZykvbixhPShlLmItdC5iKS9uLHU9Tih0LmEpLGM9KE4oZS5hKS11KS9uO3JldHVybiBBcnJheShyKS5maWxsKG51bGwpLm1hcCgoZnVuY3Rpb24ocixzKXtyZXR1cm4gMD09PXM/dDpzPT09bj9lOntyOkcodC5yK2kqcyksZzpHKHQuZytvKnMpLGI6Ryh0LmIrYSpzKSxhOkcodStjKnMpfX0pKX0odHQodCksdHQoZSkscik7cmV0dXJuIHUubWFwKChmdW5jdGlvbih0KXt2YXIgZT1vKHQsaSk7cmV0dXJuIG4/YShlKTplfSkpfSxkdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxlKXt2b2lkIDA9PT1lJiYoZT02KSx0aGlzLnJnYj10dCh0KSx0aGlzLl9kZWNpbWFscz1lLHRoaXMudXBkYXRlSFNMKCksdGhpcy51cGRhdGVDTVlLKCl9cmV0dXJuIGUucHJvdG90eXBlLnVwZGF0ZVJHQj1mdW5jdGlvbigpe3RoaXMucmdiPXQodCh7fSxYKHRoaXMuaHNsLmgsdGhpcy5oc2wucyx0aGlzLmhzbC5sKSkse2E6dGhpcy5oc2wuYX0pfSxlLnByb3RvdHlwZS51cGRhdGVSR0JGcm9tQ01ZSz1mdW5jdGlvbigpe3RoaXMucmdiPXQodCh7fSxZKHRoaXMuY215ay5jLHRoaXMuY215ay5tLHRoaXMuY215ay55LHRoaXMuY215ay5rKSkse2E6dGhpcy5yZ2IuYX0pfSxlLnByb3RvdHlwZS51cGRhdGVIU0w9ZnVuY3Rpb24oKXt0aGlzLmhzbD1LKHRoaXMucmdiLnIsdGhpcy5yZ2IuZyx0aGlzLnJnYi5iLHRoaXMucmdiLmEpfSxlLnByb3RvdHlwZS51cGRhdGVDTVlLPWZ1bmN0aW9uKCl7dGhpcy5jbXlrPWoodGhpcy5yZ2Iucix0aGlzLnJnYi5nLHRoaXMucmdiLmIpfSxlLnByb3RvdHlwZS51cGRhdGVSR0JBbmRDTVlLPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudXBkYXRlUkdCKCksdGhpcy51cGRhdGVDTVlLKCksdGhpc30sZS5wcm90b3R5cGUudXBkYXRlSFNMQW5kQ01ZSz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnVwZGF0ZUhTTCgpLHRoaXMudXBkYXRlQ01ZSygpLHRoaXN9LGUucHJvdG90eXBlLnVwZGF0ZVJHQkFuZEhTTD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnVwZGF0ZVJHQkZyb21DTVlLKCksdGhpcy51cGRhdGVIU0woKSx0aGlzfSxlLnByb3RvdHlwZS5zZXREZWNpbWFscz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZGVjaW1hbHM9dCx0aGlzfSxlLnByb3RvdHlwZS5zZXRIPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhzbC5oPXgodCksdGhpcy51cGRhdGVSR0JBbmRDTVlLKCl9LGUucHJvdG90eXBlLnNldFM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaHNsLnM9ayh0LDAsMTAwKSx0aGlzLnVwZGF0ZVJHQkFuZENNWUsoKX0sZS5wcm90b3R5cGUuc2V0TD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oc2wubD1rKHQsMCwxMDApLHRoaXMudXBkYXRlUkdCQW5kQ01ZSygpfSxlLnByb3RvdHlwZS5zZXRSPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJnYi5yPWsodCwwLDI1NSksdGhpcy51cGRhdGVIU0xBbmRDTVlLKCl9LGUucHJvdG90eXBlLnNldEc9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmdiLmc9ayh0LDAsMjU1KSx0aGlzLnVwZGF0ZUhTTEFuZENNWUsoKX0sZS5wcm90b3R5cGUuc2V0Qj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZ2IuYj1rKHQsMCwyNTUpLHRoaXMudXBkYXRlSFNMQW5kQ01ZSygpfSxlLnByb3RvdHlwZS5zZXRBPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhzbC5hPXRoaXMucmdiLmE9ayh0LDAsMSksdGhpc30sZS5wcm90b3R5cGUuc2V0Qz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbXlrLmM9ayh0LDAsMTAwKSx0aGlzLnVwZGF0ZVJHQkFuZEhTTCgpfSxlLnByb3RvdHlwZS5zZXRNPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNteWsubT1rKHQsMCwxMDApLHRoaXMudXBkYXRlUkdCQW5kSFNMKCl9LGUucHJvdG90eXBlLnNldFk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY215ay55PWsodCwwLDEwMCksdGhpcy51cGRhdGVSR0JBbmRIU0woKX0sZS5wcm90b3R5cGUuc2V0Sz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbXlrLms9ayh0LDAsMTAwKSx0aGlzLnVwZGF0ZVJHQkFuZEhTTCgpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJkZWNpbWFsc1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVjaW1hbHN9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiSFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRyh0aGlzLmhzbC5oLHRoaXMuZGVjaW1hbHMpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIlNcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEcodGhpcy5oc2wucyx0aGlzLmRlY2ltYWxzKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJMXCIse2dldDpmdW5jdGlvbigpe3JldHVybiBHKHRoaXMuaHNsLmwsdGhpcy5kZWNpbWFscyl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiUlwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRyh0aGlzLnJnYi5yLHRoaXMuZGVjaW1hbHMpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkdcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEcodGhpcy5yZ2IuZyx0aGlzLmRlY2ltYWxzKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJCXCIse2dldDpmdW5jdGlvbigpe3JldHVybiBHKHRoaXMucmdiLmIsdGhpcy5kZWNpbWFscyl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiQVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRyh0aGlzLmhzbC5hLHRoaXMuZGVjaW1hbHMpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkNcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEcodGhpcy5jbXlrLmMsdGhpcy5kZWNpbWFscyl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiTVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRyh0aGlzLmNteWsubSx0aGlzLmRlY2ltYWxzKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJZXCIse2dldDpmdW5jdGlvbigpe3JldHVybiBHKHRoaXMuY215ay55LHRoaXMuZGVjaW1hbHMpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIktcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEcodGhpcy5jbXlrLmssdGhpcy5kZWNpbWFscyl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiSEVYT2JqZWN0XCIse2dldDpmdW5jdGlvbigpe3JldHVybiBldC5IRVgodGhpcy5yZ2IpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkhFWEFPYmplY3RcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGV0LkhFWEEodGhpcy5yZ2IpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIlJHQk9iamVjdFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm57cjp0aGlzLlIsZzp0aGlzLkcsYjp0aGlzLkJ9fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIlJHQkFPYmplY3RcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHQodCh7fSx0aGlzLlJHQk9iamVjdCkse2E6dGhpcy5BfSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiSFNMT2JqZWN0XCIse2dldDpmdW5jdGlvbigpe3JldHVybntoOnRoaXMuSCxzOnRoaXMuUyxsOnRoaXMuTH19LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiSFNMQU9iamVjdFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdCh0KHt9LHRoaXMuSFNMT2JqZWN0KSx7YTp0aGlzLkF9KX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJDTVlLT2JqZWN0XCIse2dldDpmdW5jdGlvbigpe3JldHVybntjOnRoaXMuQyxtOnRoaXMuTSx5OnRoaXMuWSxrOnRoaXMuS319LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiQ01ZS0FPYmplY3RcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHQodCh7fSx0aGlzLkNNWUtPYmplY3QpLHthOnRoaXMuQX0pfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkhFWFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5IRVgoe3I6dGhpcy5SLGc6dGhpcy5HLGI6dGhpcy5CfSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiSEVYQVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5IRVgoe3I6dGhpcy5SLGc6dGhpcy5HLGI6dGhpcy5CLGE6MjU1KnRoaXMuQX0pfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIlJHQlwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5SR0Ioe3I6dGhpcy5SLGc6dGhpcy5HLGI6dGhpcy5CfSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiUkdCQVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5SR0Ioe3I6dGhpcy5SLGc6dGhpcy5HLGI6dGhpcy5CLGE6dGhpcy5BfSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiSFNMXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB3LkhTTCh7aDp0aGlzLkgsczp0aGlzLlMsbDp0aGlzLkx9KX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJIU0xBXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB3LkhTTCh7aDp0aGlzLkgsczp0aGlzLlMsbDp0aGlzLkwsYTp0aGlzLkF9KX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJDTVlLXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB3LkNNWUsoe2M6dGhpcy5DLG06dGhpcy5NLHk6dGhpcy5ZLGs6dGhpcy5LfSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiQ01ZS0FcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuQ01ZSyh7Yzp0aGlzLkMsbTp0aGlzLk0seTp0aGlzLlksazp0aGlzLkssYTp0aGlzLkF9KX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnRvSEVYPWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9ITApO3ZhciByPUoodCk7cmV0dXJuIGN0KHQscixlLDAsZXQuSEVYLHcuSEVYKX0sZS50b0hFWEE9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT0hMCk7dmFyIHI9Sih0KTtyZXR1cm4gY3QodCxyLGUsMCxldC5IRVhBLHcuSEVYKX0sZS50b1JHQj1mdW5jdGlvbih0LGUscil7dm9pZCAwPT09ZSYmKGU9ITApLHZvaWQgMD09PXImJihyPTYpO3ZhciBuPUoodCk7cmV0dXJuIGN0KHQsbixlLHIsZXQuUkdCLHcuUkdCKX0sZS50b1JHQkE9ZnVuY3Rpb24odCxlLHIpe3ZvaWQgMD09PWUmJihlPSEwKSx2b2lkIDA9PT1yJiYocj02KTt2YXIgbj1KKHQpO3JldHVybiBjdCh0LG4sZSxyLGV0LlJHQkEsdy5SR0IpfSxlLnRvSFNMPWZ1bmN0aW9uKHQsZSxyKXt2b2lkIDA9PT1lJiYoZT0hMCksdm9pZCAwPT09ciYmKHI9Nik7dmFyIG49Sih0KTtyZXR1cm4gY3QodCxuLGUscixldC5IU0wsdy5IU0wpfSxlLnRvSFNMQT1mdW5jdGlvbih0LGUscil7dm9pZCAwPT09ZSYmKGU9ITApLHZvaWQgMD09PXImJihyPTYpO3ZhciBuPUoodCk7cmV0dXJuIGN0KHQsbixlLHIsZXQuSFNMQSx3LkhTTCl9LGUudG9DTVlLPWZ1bmN0aW9uKHQsZSxyKXt2b2lkIDA9PT1lJiYoZT0hMCksdm9pZCAwPT09ciYmKHI9Nik7dmFyIG49Sih0KTtyZXR1cm4gY3QodCxuLGUscixldC5DTVlLLHcuQ01ZSyl9LGUudG9DTVlLQT1mdW5jdGlvbih0LGUscil7dm9pZCAwPT09ZSYmKGU9ITApLHZvaWQgMD09PXImJihyPTYpO3ZhciBuPUoodCk7cmV0dXJuIGN0KHQsbixlLHIsZXQuQ01ZS0Esdy5DTVlLKX0sZS5nZXRCbGVuZEhFWD1mdW5jdGlvbih0LGUscixuLGkpe3JldHVybiB2b2lkIDA9PT1yJiYocj01KSx2b2lkIDA9PT1uJiYobj0hMCksdm9pZCAwPT09aSYmKGk9Niksc3QodCxlLHIsbixpLGV0LkhFWCx3LkhFWCl9LGUuZ2V0QmxlbmRIRVhBPWZ1bmN0aW9uKHQsZSxyLG4saSl7cmV0dXJuIHZvaWQgMD09PXImJihyPTUpLHZvaWQgMD09PW4mJihuPSEwKSx2b2lkIDA9PT1pJiYoaT02KSxzdCh0LGUscixuLGksZXQuSEVYQSx3LkhFWCl9LGUuZ2V0QmxlbmRSR0I9ZnVuY3Rpb24odCxlLHIsbixpKXtyZXR1cm4gdm9pZCAwPT09ciYmKHI9NSksdm9pZCAwPT09biYmKG49ITApLHZvaWQgMD09PWkmJihpPTYpLHN0KHQsZSxyLG4saSxldC5SR0Isdy5SR0IpfSxlLmdldEJsZW5kUkdCQT1mdW5jdGlvbih0LGUscixuLGkpe3JldHVybiB2b2lkIDA9PT1yJiYocj01KSx2b2lkIDA9PT1uJiYobj0hMCksdm9pZCAwPT09aSYmKGk9Niksc3QodCxlLHIsbixpLGV0LlJHQkEsdy5SR0IpfSxlLmdldEJsZW5kSFNMPWZ1bmN0aW9uKHQsZSxyLG4saSl7cmV0dXJuIHZvaWQgMD09PXImJihyPTUpLHZvaWQgMD09PW4mJihuPSEwKSx2b2lkIDA9PT1pJiYoaT02KSxzdCh0LGUscixuLGksZXQuSFNMLHcuSFNMKX0sZS5nZXRCbGVuZEhTTEE9ZnVuY3Rpb24odCxlLHIsbixpKXtyZXR1cm4gdm9pZCAwPT09ciYmKHI9NSksdm9pZCAwPT09biYmKG49ITApLHZvaWQgMD09PWkmJihpPTYpLHN0KHQsZSxyLG4saSxldC5IU0xBLHcuSFNMKX0sZS5nZXRNaXhIRVg9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1pLkFERElUSVZFKSx2b2lkIDA9PT1yJiYocj0hMCksaXQuSEVYKHQsZSxyKX0sZS5nZXRNaXhIRVhBPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9aS5BRERJVElWRSksdm9pZCAwPT09ciYmKHI9ITApLGl0LkhFWEEodCxlLHIpfSxlLmdldE1peFJHQj1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9aS5BRERJVElWRSksdm9pZCAwPT09ciYmKHI9ITApLHZvaWQgMD09PW4mJihuPTYpLGl0LlJHQih0LGUscixuKX0sZS5nZXRNaXhSR0JBPWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiB2b2lkIDA9PT1lJiYoZT1pLkFERElUSVZFKSx2b2lkIDA9PT1yJiYocj0hMCksdm9pZCAwPT09biYmKG49NiksaXQuUkdCQSh0LGUscixuKX0sZS5nZXRNaXhIU0w9ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIHZvaWQgMD09PWUmJihlPWkuQURESVRJVkUpLHZvaWQgMD09PXImJihyPSEwKSx2b2lkIDA9PT1uJiYobj02KSxpdC5IU0wodCxlLHIsbil9LGUuZ2V0TWl4SFNMQT1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9aS5BRERJVElWRSksdm9pZCAwPT09ciYmKHI9ITApLHZvaWQgMD09PW4mJihuPTYpLGl0LkhTTEEodCxlLHIsbil9LGUuZ2V0U2hhZGVzPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdm9pZCAwPT09ciYmKHI9NikscnQodCxlLCEwLHIpfSxlLmdldFRpbnRzPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdm9pZCAwPT09ciYmKHI9NikscnQodCxlLCExLHIpfSxlLmdldEhhcm1vbnk9ZnVuY3Rpb24odCxlLHIsbyl7cmV0dXJuIHZvaWQgMD09PWUmJihlPW4uQ09NUExFTUVOVEFSWSksdm9pZCAwPT09ciYmKHI9aS5BRERJVElWRSksdm9pZCAwPT09byYmKG89NiksZnVuY3Rpb24odCxlLHIsaSl7dmFyIG87cmV0dXJuKG89e30sb1tuLkFOQUxPR09VU109bnQuYnVpbGRIYXJtb255KGUsVSxpLHIpLG9bbi5DT01QTEVNRU5UQVJZXT1udC5idWlsZEhhcm1vbnkoZSxxLGksciksb1tuLlNQTElUX0NPTVBMRU1FTlRBUlldPW50LmJ1aWxkSGFybW9ueShlLCQsaSxyKSxvW24uVFJJQURJQ109bnQuYnVpbGRIYXJtb255KGUsXyxpLHIpLG9bbi5URVRSQURJQ109bnQuYnVpbGRIYXJtb255KGUsUSxpLHIpLG9bbi5TUVVBUkVdPW50LmJ1aWxkSGFybW9ueShlLHosaSxyKSxvKVt0XX0oZSx0LG8scil9LGV9KCk7ZXhwb3J0e2R0IGFzIENvbG9yVHJhbnNsYXRvcixuIGFzIEhhcm1vbnksaSBhcyBNaXh9O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBQUEsU0FBMkNBLElBQU1DLElBQUFBO0FBQzFCLGtCQUFBLE9BQVpDLFdBQTBDLFlBQUEsT0FBWEMsVUFDeENBLFFBQU9ELFVBQVVELEdBQUFBLElBQ1EsY0FBQSxPQUFYRyxVQUF5QkEsT0FBT0MsTUFDOUNELE9BQU8sQ0FBQSxHQUFJ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O0FBQUEsRUFDUixPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxXQUFXO0FBQUEsRUFDWCxVQUFVO0FBQUEsRUFDVixNQUFNO0FBQUEsRUFDTixVQUFVO0FBQUEsRUFDVixPQUFPO0FBQUEsRUFDUCxZQUFZO0FBQUEsRUFDWixPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxTQUFTO0FBQUEsRUFDVCxVQUFVO0FBQUEsRUFDVixXQUFXO0FBQUEsRUFDWCxZQUFZO0FBQUEsRUFDWixRQUFRO0FBQUEsRUFDUixTQUFTO0FBQUEsRUFDVCxTQUFTO0FBQUEsRUFDVCxVQUFVO0FBQUEsRUFDVixRQUFRO0FBQUEsRUFDUixPQUFPO0FBQUEsRUFDUCxjQUFjO0FBQUEsRUFDZCxPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxhQUFhO0FBQUEsRUFDYixPQUFPO0FBQUEsRUFDUCxVQUFVO0FBQUEsRUFDVixVQUFVO0FBQUEsRUFDVixpQkFBaUI7QUFBQSxFQUNqQixZQUFZO0FBQUEsRUFDWixjQUFjO0FBQUEsRUFDZCxPQUFPO0FBQUEsRUFDUCxNQUFNO0FBQUEsRUFDTixRQUFRO0FBQUEsRUFDUixnQkFBZ0I7QUFBQSxFQUNoQixPQUFPO0FBQUEsRUFDUCxTQUFTO0FBQUEsRUFDVCxPQUFPO0FBQUEsRUFDUCxpQkFBaUI7QUFBQSxFQUNqQixRQUFRO0FBQUEsRUFDUixPQUFPO0FBQUEsRUFDUCxVQUFVO0FBQUEsRUFDViw0QkFBNEI7QUFBQSxFQUM1QixPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxxQkFBcUI7QUFBQSxFQUNyQixPQUFPO0FBQUEsRUFDUCxTQUFTO0FBQUEsRUFDVCxZQUFZO0FBQUEsRUFDWixVQUFVO0FBQUEsRUFDVixXQUFXO0FBQUEsRUFDWCxNQUFNO0FBQUEsRUFDTixRQUFRO0FBQUEsRUFDUixNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxpQkFBaUI7QUFBQSxFQUNqQixNQUFNO0FBQUEsRUFDTixhQUFhO0FBQUEsRUFDYixVQUFVO0FBQUEsRUFDVixXQUFXO0FBQUEsRUFDWCxPQUFPO0FBQUEsRUFDUCxNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixhQUFhO0FBQUEsRUFDYixzQkFBc0I7QUFBQSxFQUN0QixPQUFPO0FBQUEsRUFDUCxVQUFVO0FBQUEsRUFDVixhQUFhO0FBQUEsRUFDYixZQUFZO0FBQUEsRUFDWixhQUFhO0FBQUEsRUFDYixXQUFXO0FBQUEsRUFDWCxXQUFXO0FBQUEsRUFDWCxlQUFlO0FBQUEsRUFDZixrQkFBa0I7QUFBQSxFQUNsQixNQUFNO0FBQUEsRUFDTixTQUFTO0FBQUEsRUFDVCxhQUFhO0FBQUEsRUFDYixRQUFRO0FBQUEsRUFDUixlQUFlO0FBQUEsRUFDZixTQUFTO0FBQUEsRUFDVCxTQUFTO0FBQUEsRUFDVCxnQkFBZ0I7QUFBQSxFQUNoQixnQkFBZ0I7QUFBQSxFQUNoQixjQUFjO0FBQUEsRUFDZCxPQUFPO0FBQUEsRUFDUCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQUEsRUFDVCxPQUFPO0FBQUEsRUFDUCxTQUFTO0FBQUEsRUFDVCxPQUFPO0FBQUEsRUFDUCxXQUFXO0FBQUEsRUFDWCxZQUFZO0FBQUEsRUFDWixNQUFNO0FBQUEsRUFDTixTQUFTO0FBQUEsRUFDVCxTQUFTO0FBQUEsRUFDVCxjQUFjO0FBQUEsRUFDZCxRQUFRO0FBQUEsRUFDUixPQUFPO0FBQUEsRUFDUCxXQUFXO0FBQUEsRUFDWCxTQUFTO0FBQUEsRUFDVCxNQUFNO0FBQUEsRUFDTixxQkFBcUI7QUFBQSxFQUNyQixVQUFVO0FBQUEsRUFDVixhQUFhO0FBQUEsRUFDYixPQUFPO0FBQUEsRUFDUCxZQUFZO0FBQUEsRUFDWixXQUFXO0FBQUEsRUFDWCxRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixTQUFTO0FBQUEsRUFDVCxtQkFBbUI7QUFBQSxFQUNuQixjQUFjO0FBQUEsRUFDZCxRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixTQUFTO0FBQUEsRUFDVCxRQUFRO0FBQUEsRUFDUixjQUFjO0FBQUEsRUFDZCxRQUFRO0FBQUEsRUFDUixTQUFTO0FBQUEsRUFDVCxVQUFVO0FBQUEsRUFDVixZQUFZO0FBQUEsRUFDWixRQUFRO0FBQUEsRUFDUixVQUFVO0FBQUEsRUFDVixnQkFBZ0I7QUFBQSxFQUNoQixPQUFPO0FBQUEsRUFDUCxVQUFVO0FBQUEsRUFDVixNQUFNO0FBQUEsRUFDTixjQUFjO0FBQUEsRUFDZCxTQUFTO0FBQUEsRUFDVCxPQUFPO0FBQUEsRUFDUCxVQUFVO0FBQUEsRUFDVixjQUFjO0FBQUEsRUFDZCxhQUFhO0FBQUEsRUFDYixZQUFZO0FBQUEsRUFDWixTQUFTO0FBQUEsRUFDVCxjQUFjO0FBQUEsRUFDZCxNQUFNO0FBQUEsRUFDTixXQUFXO0FBQUEsRUFDWCxjQUFjO0FBQUEsRUFDZCxVQUFVO0FBQUEsRUFDVixjQUFjO0FBQUEsRUFDZCxZQUFZO0FBQUEsRUFDWixhQUFhO0FBQUEsRUFDYixVQUFVO0FBQUEsRUFDVixRQUFRO0FBQUEsRUFDUixNQUFNO0FBQUEsRUFDTixVQUFVO0FBQUEsRUFDVixNQUFNO0FBQUEsRUFDTixLQUFLO0FBQUEsRUFDTCxPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxVQUFVO0FBQUEsRUFDVixTQUFTO0FBQUEsRUFDVCxPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxTQUFTO0FBQUEsRUFDVCxPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxRQUFRO0FBQUEsRUFDUixrQkFBa0I7QUFBQSxFQUNsQixTQUFTO0FBQUEsRUFDVCxNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixpQkFBaUI7QUFBQSxFQUNqQixjQUFjO0FBQUEsRUFDZCxnQkFBZ0I7QUFBQSxFQUNoQixPQUFPO0FBQUEsRUFDUCxTQUFTO0FBQUEsRUFDVCxZQUFZO0FBQUEsRUFDWixPQUFPO0FBQUEsRUFDUCxpQkFBaUI7QUFBQSxFQUNqQixPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxVQUFVO0FBQUEsRUFDVixNQUFNO0FBQUEsRUFDTixjQUFjO0FBQUEsRUFDZCxPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxTQUFTO0FBQUEsRUFDVCxTQUFTO0FBQUEsRUFDVCxpQkFBaUI7QUFBQSxFQUNqQixVQUFVO0FBQUEsRUFDVixXQUFXO0FBQUEsRUFDWCxpQkFBaUI7QUFBQSxFQUNqQixTQUFTO0FBQUEsRUFDVCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQUEsRUFDVCxPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxRQUFRO0FBQUEsRUFDUixXQUFXO0FBQUEsRUFDWCxRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixNQUFNO0FBQUEsRUFDTixZQUFZO0FBQUEsRUFDWixXQUFXO0FBQUEsRUFDWCxNQUFNO0FBQUEsRUFDTixXQUFXO0FBQUEsRUFDWCxPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxTQUFTO0FBQUEsRUFDVCxRQUFRO0FBQUEsRUFDUixPQUFPO0FBQUEsRUFDUCxnQkFBZ0I7QUFBQSxFQUNoQixPQUFPO0FBQUEsRUFDUCxNQUFNO0FBQUEsRUFDTixRQUFRO0FBQUEsRUFDUixXQUFXO0FBQUEsRUFDWCxVQUFVO0FBQUEsRUFDVixRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixXQUFXO0FBQUEsRUFDWCxNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixhQUFhO0FBQUEsRUFDYixXQUFXO0FBQUEsRUFDWCxRQUFRO0FBQUEsRUFDUixVQUFVO0FBQUEsRUFDVixRQUFRO0FBQUEsRUFDUixPQUFPO0FBQUEsRUFDUCxRQUFRO0FBQ1Y7QUFHTyxJQUFNLGFBQWE7QUFBQSxFQUN4QixPQUFNO0FBQUEsRUFDTixTQUFRO0FBQUEsRUFDUixjQUFhO0FBQUEsRUFDYixNQUFLO0FBQUEsRUFDTCxRQUFPO0FBQUEsRUFDUCxRQUFPO0FBQUEsRUFD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QUFLO0FBQUEsRUFDTCxPQUFNO0FBQUEsRUFDTixTQUFRO0FBQUEsRUFDUixPQUFNO0FBQUEsRUFDTixTQUFRO0FBQUEsRUFDUixTQUFRO0FBQUEsRUFDUixPQUFNO0FBQUEsRUFDTixXQUFVO0FBQUEsRUFDVixTQUFRO0FBQUEsRUFDUixRQUFPO0FBQUEsRUFDUCxZQUFXO0FBQUEsRUFDWCxNQUFLO0FBQUEsRUFDTCxVQUFTO0FBQUEsRUFDVCxRQUFPO0FBQUEsRUFDUCxTQUFRO0FBQUEsRUFDUixTQUFRO0FBQUEsRUFDUixjQUFhO0FBQUEsRUFDYixjQUFhO0FBQUEsRUFDYixRQUFPO0FBQUEsRUFDUCxPQUFNO0FBQUEsRUFDTixXQUFVO0FBQUEsRUFDVixPQUFNO0FBQUEsRUFDTixTQUFRO0FBQUEsRUFDUixZQUFXO0FBQUEsRUFDWCxZQUFXO0FBQUEsRUFDWCxNQUFLO0FBQUEsRUFDTCxxQkFBb0I7QUFBQSxFQUNwQixRQUFPO0FBQUEsRUFDUCxVQUFTO0FBQUEsRUFDVCxhQUFZO0FBQUEsRUFDWixPQUFNO0FBQUEsRUFDTixXQUFVO0FBQUEsRUFDVixZQUFXO0FBQUEsRUFDWCxTQUFRO0FBQUEsRUFDUixXQUFVO0FBQUEsRUFDVixVQUFTO0FBQUEsRUFDVCxjQUFhO0FBQUEsRUFDYixRQUFPO0FBQUEsRUFDUCxRQUFPO0FBQUEsRUFDUCxRQUFPO0FBQUEsRUFDUCxTQUFRO0FBQUEsRUFDUixtQkFBa0I7QUFBQSxFQUNsQixjQUFhO0FBQUEsRUFDYixRQUFPO0FBQUEsRUFDUCxRQUFPO0FBQUEsRUFDUCxRQUFPO0FBQUEsRUFDUCxTQUFRO0FBQUEsRUFDUixTQUFRO0FBQUEsRUFDUixPQUFNO0FBQUEsRUFDTixPQUFNO0FBQUEsRUFDTixRQUFPO0FBQUEsRUFDUCxjQUFhO0FBQUEsRUFDYixRQUFPO0FBQUEsRUFDUCxTQUFRO0FBQUEsRUFDUixRQUFPO0FBQUEsRUFDUCxVQUFTO0FBQUEsRUFDVCxZQUFXO0FBQUEsRUFDWCxRQUFPO0FBQUEsRUFDUCxNQUFLO0FBQUEsRUFDTCxVQUFTO0FBQUEsRUFDVCxVQUFTO0FBQUEsRUFDVCxVQUFTO0FBQUEsRUFDVCxnQkFBZTtBQUFBLEVBQ2YsYUFBWTtBQUFBLEVBQ1osT0FBTTtBQUFBLEVBQ04sVUFBUztBQUFBLEVBQ1QsTUFBSztBQUFBLEVBQ0wsY0FBYTtBQUFBLEVBQ2IsU0FBUTtBQUFBLEVBQ1IsUUFBTztBQUFBLEVBQ1AsT0FBTTtBQUFBLEVBQ04sVUFBUztBQUFBLEVBQ1QsY0FBYTtBQUFBLEVBQ2IsYUFBWTtBQUFBLEVBQ1osWUFBVztBQUFBLEVBQ1gsU0FBUTtBQUFBLEVBQ1IsY0FBYTtBQUFBLEVBQ2IsTUFBSztBQUFBLEVBQ0wsV0FBVTtBQUFBLEVBQ1YsY0FBYTtBQUFBLEVBQ2IsY0FBYTtBQUFBLEVBQ2IsVUFBUztBQUFBLEVBQ1QsVUFBUztBQUFBLEVBQ1QsY0FBYTtBQUFBLEVBQ2IsWUFBVztBQUFBLEVBQ1gsT0FBTTtBQUFBLEVBQ04sVUFBUztBQUFBLEVBQ1QsUUFBTztBQUFBLEVBQ1AsYUFBWTtBQUFBLEVBQ1osVUFBUztBQUFBLEVBQ1QsY0FBYTtBQUFBLEVBQ2IsUUFBTztBQUFBLEVBQ1AsVUFBUztBQUFBLEVBQ1QsTUFBSztBQUFBLEVBQ0wsVUFBUztBQUFBLEVBQ1QsTUFBSztBQUFBLEVBQ0wsS0FBSTtBQUFBLEVBQ0osT0FBTTtBQUFBLEVBQ04sUUFBTztBQUFBLEVBQ1AsS0FBSTtBQUFBLEVBQ0osVUFBUztBQUFBLEVBQ1QsT0FBTTtBQUFBLEVBQ04sVUFBUztBQUFBLEVBQ1QsT0FBTTtBQUFBLEVBQ04sT0FBTTtBQUFBLEVBQ04sVUFBUztBQUFBLEVBQ1QsU0FBUTtBQUFBLEVBQ1IsUUFBTztBQUFBLEVBQ1AsU0FBUTtBQUFBLEVBQ1IsT0FBTTtBQUFBLEVBQ04sWUFBVztBQUFBLEVBQ1gsT0FBTTtBQUFBLEVBQ04sUUFBTztBQUFBLEVBQ1AsT0FBTTtBQUFBLEVBQ04sWUFBVztBQUFBLEVBQ1gsa0JBQWlCO0FBQUEsRUFDakIsU0FBUTtBQUFBLEVBQ1IsUUFBTztBQUFBLEVBQ1AsTUFBSztBQUFBLEVBQ0wsUUFBTztB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aEIsV0FBVztBQUFBLEVBQ1gsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsS0FBSztBQUFBLEVBQ0wsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1QsUUFBUTtBQUFBLEVBQ1IsaUJBQWlCO0FBQUEsRUFDakIsVUFBVTtBQUFBLEVBQ1Ysa0JBQWtCO0FBQUEsRUFDbEIsZ0JBQWdCO0FBQUEsRUFDaEIsT0FBTztBQUFBLEVBQ1AsVUFBVTtBQUFBLEVBQ1YsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsVUFBVTtBQUFBLEVBQ1YsTUFBTTtBQUFBLEVBQ04sNEJBQTRCO0FBQUEsRUFDNUIsUUFBUTtBQUFBLEVBQ1IsV0FBVztBQUFBLEVBQ1gsZ0NBQWdDO0FBQUEsRUFDaEMsc0JBQXNCO0FBQUEsRUFDdEIsVUFBVTtBQUFBLEVBQ1YsWUFBWTtBQUFBLEVBQ1osT0FBTztBQUFBLEVBQ1AsUUFBUTtBQUFBLEVBQ1IsYUFBYTtBQUFBLEVBQ2IsTUFBTTtBQUFBLEVBQ04sVUFBVTtBQUFBLEVBQ1YsV0FBVztBQUFBLEVBQ1gsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsY0FBYztBQUFBLEVBQ2QsV0FBVztBQUFBLEVBQ1gsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1QsT0FBTztBQUFBLEVBQ1AsTUFBTTtBQUFBLEVBQ04sUUFBUTtBQUFBLEVBQ1IsY0FBYztBQUFBLEVBQ2QsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1QsU0FBUztBQUFBLEVBQ1QsVUFBVTtBQUFBLEVBQ1YsU0FBUztBQUFBLEVBQ1QsU0FBUztBQUFBLEVBQ1QsUUFBUTtBQUFBLEVBQ1IsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsY0FBYztBQUFBLEVBQ2QsWUFBWTtBQUFBLEVBQ1osV0FBVztBQUFBLEVBQ1gsT0FBTztBQUFBLEVBQ1AsWUFBWTtBQUFBLEVBQ1osVUFBVTtBQUFBLEVBQ1YsYUFBYTtBQUFBLEVBQ2IsT0FBTztBQUFBLEVBQ1AsV0FBVztBQUFBLEVBQ1gsU0FBUztBQUFBLEVBQ1QsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsUUFBUTtBQUFBLEVBQ1IsaUJBQWlCO0FBQUEsRUFDakIsZUFBZTtBQUFBLEVBQ2YsU0FBUztBQUFBLEVBQ1QsVUFBVTtBQUFBLEVBQ1YsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsVUFBVTtBQUFBLEVBQ1YsY0FBYztBQUFBLEVBQ2QsWUFBWTtBQUFBLEVBQ1osY0FBYztBQUFBLEVBQ2QsY0FBYztBQUFBLEVBQ2QsY0FBYztBQUFBLEVBQ2QsVUFBVTtBQUFBLEVBQ1Ysb0JBQW9CO0FBQUEsRUFDcEIsT0FBTztBQUFBLEVBQ1AsVUFBVTtBQUFBLEVBQ1YsY0FBYztBQUFBLEVBQ2QsVUFBVTtBQUFBLEVBQ1YscUJBQXFCO0FBQUEsRUFDckIsTUFBTTtBQUFBLEVBQ04sT0FBTztBQUFBLEVBQ1AsS0FBSztBQUFBLEVBQ0wsVUFBVTtBQUFBLEVBQ1YsWUFBWTtBQUFBLEVBQ1osYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsWUFBWTtBQUFBLEVBQ1osMkJBQTJCO0FBQUEsRUFDM0IsbUJBQW1CO0FBQUEsRUFDbkIsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsU0FBUztBQUFBLEVBQ1QsaUJBQWlCO0FBQUEsRUFDakIsU0FBUztBQUFBLEVBQ1QsVUFBVTtBQUFBLEVBQ1YsdUJBQXVCO0FBQUEsRUFDdkIsaUJBQWlCO0FBQUEsRUFDakIsVUFBVTtBQUFBLEVBQ1YsT0FBTztBQUFBLEVBQ1AscUNBQXFDO0FBQUEsRUFDckMsT0FBTztBQUFBLEVBQ1AsWUFBWTtBQUFBLEVBQ1osUUFBUTtBQUFBLEVBQ1IsYUFBYTtBQUFBLEVBQ2IsVUFBVTtBQUFBLEVBQ1YsT0FBTztBQUFBLEVB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RSxhQUFXLFdBQVVBLEdBQUUsYUFBVyxXQUFVQSxHQUFFLFVBQVEsV0FBVUEsR0FBRSxhQUFXLFdBQVVBLEdBQUUsZUFBYSxXQUFVQSxHQUFFLGdCQUFjLFdBQVVBLEdBQUUsZ0JBQWMsV0FBVUEsR0FBRSxnQkFBYyxXQUFVQSxHQUFFLGdCQUFjLFdBQVVBLEdBQUUsYUFBVyxXQUFVQSxHQUFFLFdBQVMsV0FBVUEsR0FBRSxjQUFZLFdBQVVBLEdBQUUsVUFBUSxXQUFVQSxHQUFFLFVBQVEsV0FBVUEsR0FBRSxhQUFXLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLGNBQVksV0FBVUEsR0FBRSxjQUFZLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLGFBQVcsV0FBVUEsR0FBRSxPQUFLLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLGNBQVksV0FBVUEsR0FBRSxPQUFLLFdBQVVBLEdBQUUsV0FBUyxXQUFVQSxHQUFFLFVBQVEsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsU0FBTyxXQUFVQSxHQUFFLFFBQU0sV0FBVUEsR0FBRSxRQUFNLFdBQVVBLEdBQUUsV0FBUyxXQUFVQSxHQUFFLGdCQUFjLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLGVBQWEsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsYUFBVyxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSx1QkFBcUIsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsYUFBVyxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsY0FBWSxXQUFVQSxHQUFFLGdCQUFjLFdBQVVBLEdBQUUsZUFBYSxXQUFVQSxHQUFFLGlCQUFlLFdBQVVBLEdBQUUsaUJBQWUsV0FBVUEsR0FBRSxpQkFBZSxXQUFVQSxHQUFFLGNBQVksV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsUUFBTSxXQUFVQSxHQUFFLFVBQVEsV0FBVUEsR0FBRSxtQkFBaUIsV0FBVUEsR0FBRSxhQUFXLFdBQVVBLEdBQUUsZUFBYSxXQUFVQSxHQUFFLGVBQWEs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QUFFO0FBQUMsTUFBR0QsS0FBRSxNQUFJQSxNQUFHLE1BQUtBLEtBQUUsUUFBTUEsTUFBRyxNQUFLLFFBQU1BLE1BQUcsTUFBSUE7QUFBRSxXQUFPQTtBQUFFLE1BQUlFLEtBQUUsQ0FBQyxDQUFDLEdBQUUsR0FBRyxHQUFFLENBQUMsS0FBSSxHQUFHLEdBQUUsQ0FBQyxLQUFJLEdBQUcsR0FBRSxDQUFDLEtBQUksR0FBRyxDQUFDLEdBQUVDLEtBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBRSxHQUFFLENBQUMsSUFBRyxHQUFHLEdBQUUsQ0FBQyxLQUFJLEdBQUcsR0FBRSxDQUFDLEtBQUksR0FBRyxDQUFDLEdBQUVDLEtBQUVILEtBQUVFLEtBQUVELElBQUVHLEtBQUUsR0FBRUMsS0FBRSxHQUFFQyxLQUFFLEdBQUVDLEtBQUU7QUFBRSxVQUFPUCxLQUFFQyxLQUFFQyxJQUFHLEtBQU0sU0FBU0YsSUFBRUMsSUFBRTtBQUFDLFdBQU9GLE1BQUdDLEdBQUUsQ0FBQyxLQUFHRCxLQUFFQyxHQUFFLENBQUMsTUFBSUksS0FBRUosR0FBRSxDQUFDLEdBQUVLLEtBQUVMLEdBQUUsQ0FBQyxHQUFFTSxLQUFFSCxHQUFFRixFQUFDLEVBQUUsQ0FBQyxHQUFFTSxLQUFFSixHQUFFRixFQUFDLEVBQUUsQ0FBQyxHQUFFO0FBQUEsRUFBRyxDQUFFLEdBQUVLLE1BQUdDLEtBQUVELE9BQUlELEtBQUVELE9BQUlMLEtBQUVLO0FBQUU7QUFBcm1HLElBQXVtRyxJQUFFLFNBQVNMLElBQUVDLElBQUU7QUFBQyxhQUFTQSxPQUFJQSxLQUFFO0FBQUksTUFBSUMsS0FBRSxFQUFFLE9BQU8sS0FBS0YsRUFBQyxDQUFDO0FBQUUsU0FBTyxFQUFFLEVBQUVFLEVBQUMsQ0FBQyxFQUFFLE9BQVEsU0FBU0EsSUFBRUMsSUFBRTtBQUFDLFFBQUlDLElBQUVDLElBQUVDLEtBQUVOLEdBQUVHLEVBQUM7QUFBRSxXQUFPLFdBQVNHLE9BQUlMLEtBQUVDLEdBQUUsTUFBTUUsS0FBRSxFQUFFRSxJQUFFLENBQUMsR0FBRSxPQUFLRCxLQUFF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RUFBQyxJQUFHSCxNQUFHQSxPQUFJLEVBQUUsS0FBSTtBQUFDLFVBQUlJLEtBQUUsT0FBTyxRQUFRTCxFQUFDLEVBQUUsS0FBTSxTQUFTQSxJQUFFO0FBQUMsZUFBTSxDQUFDLEVBQUUsS0FBSyxHQUFHLE9BQU9BLEdBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQSxNQUFDLENBQUUsR0FBRU0sS0FBRSxPQUFPLFFBQVFOLEVBQUMsRUFBRSxLQUFNLFNBQVNBLElBQUU7QUFBQyxlQUFNLEVBQUUsRUFBRSxLQUFLLEdBQUcsT0FBT0EsR0FBRSxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsT0FBT0EsR0FBRSxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsTUFBTSxDQUFDQSxHQUFFLENBQUMsQ0FBQyxLQUFHLENBQUNBLEdBQUUsQ0FBQyxLQUFHO0FBQUEsTUFBSSxDQUFFO0FBQUUsTUFBQUssTUFBR0MsT0FBSUgsS0FBRSxPQUFJRSxPQUFJSixLQUFFLEVBQUU7QUFBQSxJQUFJO0FBQUMsUUFBRyxDQUFDQSxNQUFHRTtBQUFFLFlBQU0sSUFBSSxNQUFNLENBQUM7QUFBRSxXQUFPRjtBQUFBLEVBQUMsRUFBRUQsRUFBQztBQUFDO0FBQXppSyxJQUEyaUssTUFBSSxJQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBRSxTQUFTQSxJQUFFO0FBQUMsTUFBSUMsTUFBRyxDQUFDLEVBQUUsUUFBUUQsRUFBQyxJQUFFLEVBQUVBLEVBQUMsSUFBRUEsSUFBRyxNQUFNLEVBQUUsR0FBRyxHQUFFRSxLQUFFLEVBQUMsR0FBRSxFQUFFRCxHQUFFLENBQUMsS0FBR0EsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLEVBQUVBLEdBQUUsQ0FBQyxLQUFHQSxHQUFFLENBQUMsQ0FBQyxHQUFFLEdBQUUsRUFBRUEsR0FBRSxDQUFDLEtBQUdBLEdBQUUsQ0FBQyxDQUFDLEVBQUMsR0FBRUUsS0FBRUYsR0FBRSxDQUFDLEtBQUdBLEdBQUUsQ0FBQztBQUFFLFNBQU8sV0FBU0UsT0FBSUQsR0FBRSxJQUFFLEVBQUVDLEVBQUMsSUFBRSxNQUFLRDtBQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxTQUFTRixJQUFFO0FBQUMsTUFBSUMsS0FBRUQsR0FBRSxNQUFNLEVBQUUsR0FBRyxHQUFFRSxLQUFFLEVBQUVELEdBQUUsQ0FBQyxLQUFHQSxHQUFFLENBQUMsQ0FBQyxHQUFFRSxLQUFFLEVBQUVGLEdBQUUsQ0FBQyxLQUFHQSxHQUFFLENBQUMsQ0FBQyxHQUFFRyxLQUFFLEVBQUVILEdBQUUsQ0FBQyxLQUFHQSxHQUFFLENBQUMsQ0FBQyxHQUFFSSxLQUFFSixHQUFFLENBQUMsS0FBR0EsR0FBRSxDQUFDLEdBQUVLLEtBQUUsRUFBQyxHQUFFLEtBQUssSUFBSUosSUFBRSxHQUFHLEdBQUUsR0FBRSxLQUFLLElBQUlDLElBQUUsR0FBRyxHQUFFLEdBQUUsS0FBSyxJQUFJQyxJQUFFLEdBQUcsRUFBQztBQUFFLFNBQU8sV0FBU0MsT0FBSUMsR0FBRSxJQUFFLEVBQUVELEVBQUMsSUFBR0M7QUFBQyxHQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsU0FBU04sSUFBRTtBQUFDLE1BQUlDLEtBQUVELEdBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRUUsS0FBRSxFQUFFRCxHQUFFLENBQUMsS0FBR0EsR0FBRSxDQUFDLENBQUMsR0FBRUUsS0FBRSxFQUFFRixHQUFFLENBQUMsS0FBR0EsR0FBRSxDQUFDLENBQUMsR0FBRUcsS0FBRSxFQUFFSCxHQUFFLENBQUMsS0FBR0EsR0FBRSxDQUFDLENBQUMsR0FBRUksS0FBRUosR0FBRSxDQUFDLEtBQUdBLEdBQUUsQ0FBQyxHQUFFSyxLQUFFLEVBQUVKLElBQUVDLElBQUVDLEVBQUM7QUFBRSxTQUFPLFdBQVNDLE9BQUlDLEdBQUUsSUFBRSxFQUFFRCxFQUFDLElBQUdDO0FBQUMsR0FBRSxFQUFFLEVBQUUsSUFBSSxJQUFFLFNBQVNOLElBQUU7QUFBQyxNQUFJQyxLQUFFRCxHQUFFLE1BQU0sRUFBRSxJQUFJLEdBQUVFLEtBQUUsRUFBRUQsR0FBRSxDQUFDLEtBQUdBLEdBQUUsQ0FBQyxDQUFDLEdBQUVFLEtBQUUsRUFBRUYsR0FBRSxDQUFDLEtBQUdBLEdBQUUsQ0FBQyxDQUFDLEdBQUVHLEtBQUUsRUFBRUgsR0FBRSxDQUFDLEtBQUdBLEdBQUUsQ0FBQyxDQUFDLEdBQUVJLEtBQUUsRUFBRUosR0FBRSxDQUFDLEtBQUdBLEdBQUUsQ0FBQyxDQUFDLEdBQUVLLEtBQUVMLEdBQUUsQ0FBQyxLQUFHQSxHQUFFLEVBQUUsR0FBRU0sS0FBRSxFQUFFTCxJQUFFQyxJQUFFQyxJQUFFQyxFQUFDO0FBQUUsU0FBTyxXQUFTQyxPQUFJQyxHQUFFLElBQUUsRUFBRUQsRUFBQyxJQUFHQztBQUFDLEdBQUU7QUFBcnRMLElBQXd0TCxNQUFJLElBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFFLFNBQVNQLElBQUU7QUFBQyxNQUFJQyxLQUFFLEVBQUMsR0FBRSxFQUFFLEdBQUcsT0FBT0QsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLEVBQUUsR0FBRyxPQUFPQSxHQUFFLENBQUMsQ0FBQyxHQUFFLEdBQUUsRUFBRSxHQUFHLE9BQU9BLEdBQUUsQ0FBQyxDQUFDLEVBQUM7QUFBRSxTQUFPLEVBQUVBLElBQUUsR0FBRyxNQUFJQyxHQUFFLElBQUUsS0FBSyxJQUFJLEVBQUUsR0FBRyxPQUFPRCxHQUFFLENBQUMsR0FBRSxJQUFFLEdBQUUsQ0FBQyxJQUFHQztBQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxTQUFTRCxJQUFFO0FBQUMsU0FBTyxLQUFLLElBQUlBLEVBQUM7QUFBQyxHQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsU0FBU0EsSUFBRTtBQUFDLE1BQUlDLEtBQUUsRUFBRSxHQUFHLE9BQU9ELEdBQUUsQ0FBQyxDQUFDLEdBQUVFLEtBQUUsRUFBRSxHQUFHLE9BQU9GLEdBQUUsQ0FBQyxDQUFDLEdBQUVHLEtBQUUsRUFBRSxFQUFFSCxHQUFFLENBQUMsR0FBRUMsSUFBRUMsRUFBQztBQUFFLFNBQU8sRUFBRUYsSUFBRSxHQUFHLE1BQUlHLEdBQUUsSUFBRSxFQUFFSCxHQUFFLENBQUMs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LEtBQUssSUFBSUcsSUFBRU4sSUFBRUUsSUFBRU0sSUFBRUwsRUFBQztBQUFBLElBQUUsS0FBSyxFQUFFO0FBQUksYUFBT0ksS0FBRSxLQUFLLEtBQUtELElBQUVOLElBQUVFLElBQUVNLElBQUVMLEVBQUMsSUFBRSxLQUFLLElBQUlHLElBQUVOLElBQUVFLElBQUVNLElBQUVMLEVBQUM7QUFBQSxFQUFDO0FBQUMsRUFBQyxHQUFHLEVBQUUsR0FBRyxJQUFFLFNBQVNKLElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxTQUFPRixHQUFFRCxJQUFFRSxFQUFDLEVBQUUsSUFBSyxTQUFTRixJQUFFO0FBQUMsV0FBT0csS0FBRSxFQUFFLElBQUksRUFBRUgsR0FBRSxHQUFFQSxHQUFFLEdBQUVBLEdBQUUsQ0FBQyxDQUFDLElBQUUsR0FBRyxJQUFJLEVBQUVBLEdBQUUsR0FBRUEsR0FBRSxHQUFFQSxHQUFFLENBQUMsQ0FBQztBQUFBLEVBQUMsQ0FBRTtBQUFDLEdBQUUsRUFBRSxPQUFLLFNBQVNDLElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxTQUFPRixHQUFFRCxJQUFFRSxFQUFDLEVBQUUsSUFBSyxTQUFTRixJQUFFO0FBQUMsV0FBT0csS0FBRSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRSxFQUFFSCxHQUFFLEdBQUVBLEdBQUUsR0FBRUEsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFDLEdBQUUsTUFBSSxFQUFFQSxHQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBRSxHQUFHLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRSxFQUFFQSxHQUFFLEdBQUVBLEdBQUUsR0FBRUEsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFDLEdBQUUsRUFBRUEsR0FBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO0FBQUEsRUFBQyxDQUFFO0FBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLFNBQVNELElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxTQUFPSCxHQUFFRCxJQUFFRSxFQUFDLEVBQUUsSUFBSyxTQUFTRixJQUFFO0FBQUMsV0FBT0csS0FBRSxFQUFFLElBQUksR0FBRyxFQUFFSCxHQUFFLEdBQUVBLEdBQUUsR0FBRUEsR0FBRSxDQUFDLEdBQUVJLEVBQUMsQ0FBQyxJQUFFLEdBQUcsSUFBSSxFQUFFSixHQUFFLEdBQUVBLEdBQUUsR0FBRUEsR0FBRSxDQUFDLEdBQUVJLEVBQUM7QUFBQSxFQUFDLENBQUU7QUFBQyxHQUFFLEVBQUUsT0FBSyxTQUFTSCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsU0FBT0gsR0FBRUQsSUFBRUUsRUFBQyxFQUFFLElBQUssU0FBU0YsSUFBRTtBQUFDLFdBQU9HLEtBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxFQUFFSCxHQUFFLEdBQUVBLEdBQUUsR0FBRUEsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFDLEdBQUUsRUFBRUEsR0FBRSxDQUFDLEVBQUMsQ0FBQyxHQUFFSSxFQUFDLENBQUMsSUFBRSxHQUFHLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRSxFQUFFSixHQUFFLEdBQUVBLEdBQUUsR0FBRUEsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFDLEdBQUUsRUFBRUEsR0FBRSxDQUFDLEVBQUMsQ0FBQyxHQUFFSSxFQUFDO0FBQUEsRUFBQyxDQUFFO0FBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLFNBQVNMLElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxTQUFPSCxHQUFFRCxJQUFFRSxFQUFDLEVBQUUsSUFBSyxTQUFTRixJQUFFO0FBQUMsV0FBT0csS0FBRSxFQUFFLElBQUksR0FBRyxFQUFDLEdBQUVILEdBQUUsR0FBRSxHQUFFQSxHQUFFLEdBQUUsR0FBRUEsR0FBRSxFQUFDLEdBQUVJLEVBQUMsQ0FBQyxJQUFFLEdBQUcsSUFBSSxFQUFFSixHQUFFLEdBQUVBLEdBQUUsR0FBRUEsR0FBRSxDQUFDLEdBQUVJLEVBQUM7QUFBQSxFQUFDLENBQUU7QUFBQyxHQUFFLEVBQUUsT0FBSyxTQUFTSCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsU0FBT0gsR0FBRUQsSUFBRUUsRUFBQyxFQUFFLElBQUssU0FBU0YsSUFBRTtBQUFDLFdBQU9HLEtBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRUgsRUFBQyxHQUFFLEVBQUMsR0FBRSxFQUFFQSxHQUFFLENBQUMsRUFBQyxDQUFDLEdBQUVJLEVBQUMsQ0FBQyxJQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUVKLEdBQUUsR0FBRUEsR0FBRSxHQUFFQSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUMsR0FBRSxFQUFFQSxHQUFFLENBQUMsRUFBQyxDQUFDLEdBQUVJLEVBQUM7QUFBQSxFQUFDLENBQUU7QUFBQyxHQUFFO0FBQTNxUixJQUE4cVIsT0FBSyxJQUFFLEVBQUMsS0FBSSxTQUFTSixJQUFFQyxJQUFFO0FBQUMsTUFBSUMsSUFBRUUsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsS0FBRWxCLEdBQUUsSUFBSyxTQUFTRCxJQUFFO0FBQUMsUUFBSUMsS0FBRSxFQUFFRCxFQUFDO0FBQUUsV0FBTyxHQUFHQSxJQUFFQyxFQUFDO0FBQUEsRUFBQyxDQUFFLEdBQUVtQixLQUFFbEIsT0FBSSxFQUFFLGNBQVlpQixHQUFFLElBQUssU0FBU25CLElBQUU7QUFBQyxRQUFJQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxNQUFHZCxLQUFFRCxHQUFFLEdBQUVFLEtBQUVGLEdBQUUsR0FBRUcsS0FBRUgsR0FBRSxHQUFFSSxLQUFFLEtBQUssSUFBSUgsSUFBRUMsSUFBRUMsRUFBQyxHQUFFRSxLQUFFLEtBQUssSUFBSSxNQUFJSixJQUFFLE1BQUlDLElBQUUsTUFBSUMsRUFBQyxHQUFFRyxLQUFFTCxLQUFFRyxJQUFFRyxLQUFFTCxLQUFFRSxJQUFFSSxLQUFFTCxLQUFFQyxJQUFFSyxLQUFFLEtBQUssSUFBSUgsSUFBRUMsRUFBQyxHQUFFRyxLQUFFSixLQUFFRyxJQUFFRSxNQUFHSixLQUFFRSxNQUFHLEdBQUVHLE1BQUdKLEtBQUVELEtBQUVFLE1BQUcsR0FBRUksS0FBRSxLQUFLLElBQUlILElBQUVDLElBQUVDLEVBQUMsSUFBRSxLQUFLLElBQUlOLElBQUVDLElBQUVDLEVBQUMsR0FBRU0sS0FBRSxNQUFNRCxFQUFDLEtBQUdBLE9BQUksSUFBRSxLQUFHQSxNQUFHLElBQUUsSUFBRUEsSUFBRSxFQUFDLEdBQUVILEtBQUVJLEtBQUVULElBQUUsR0FBRU0sS0FBRUcsS0FBRVQsSUFBRSxHQUFFTyxLQUFFRSxLQUFFVCxHQUFDO0FBQUcsV0FBTyxFQUFFTCxJQUFFLEdBQUcsTUFBSWUsR0FBRSxJQUFFZixHQUFFLElBQUdlO0FBQUEsRUFBQyxDQUFFLElBQUU7QUFBSyxXQUFTTSxHQUFFcEIsSUFBRTtBQUFDLFFBQUlFLEtBQUVELE9BQUksRUFBRSxXQUFTLEVBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxFQUFDLElBQUUsRUFBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEVBQUM7QUFBRSxXQUFPRCxHQUFFLE9BQVEsU0FBU0EsSUFBRUUsSUFBRTtBQUFDLFVBQUlFLEtBQUUsRUFBRUYsSUFBRSxHQUFHLElBQUVBLEdBQUUsSUFBRSxHQUFFRyxLQUFFLEVBQUMsR0FBRSxLQUFLLElBQUlMLEdBQUUsSUFBRUUsR0FBRSxJQUFFRSxJQUFFLEdBQUcsR0FBRSxHQUFFLEtBQUssSUFBSUosR0FBRSxJQUFFRSxHQUFFLElBQUVFLElBQUUsR0FBRyxHQUFFLEdBQUUsS0FBRyxJQUFFQSxPQUFJLElBQUVKLEdBQUUsR0FBRSxHQUFFTSxLQUFFLE9BQU1OLEtBQUVBLEdBQUUsSUFBRUEsR0FBRSxHQUFFTyxLQUFFLE9BQU1MLEtBQUVBLEdBQUUsSUFBRUEsR0FBRTtBQUFFLGFBQU8sRUFBRSxFQUFFLENBQUMsR0FBRUcsRUFBQyxHQUFFSixPQUFJLEVBQUUsV0FBUyxFQUFDLEdBQUUsS0FBSyxJQUFJSyxLQUFFQyxLQUFFSCxJQUFFLEdBQUcsRUFBQyxJQUFFLEVBQUMsR0FBRSxLQUFLLElBQUlFLEtBQUVDLEtBQUVILElBQUUsR0FBRyxFQUFDLENBQUM7QUFBQSxJQUFDLEdBQUdGLEVBQUM7QUFBQSxFQUFDO0FBQUMsTUFBR0QsT0FBSSxFQUFFO0FBQVMsSUFBQUMsS0FBRWtCLEdBQUVGLEVBQUM7QUFBQSxPQUFNO0FBQUMsUUFBSUcsS0FBRUQsR0FBRUQsRUFBQztBQUFFLElBQUFmLEtBQUVpQixHQUFFLEdBQUVoQixLQUFFZ0IsR0FBRSxHQUFFZixLQUFFZSxHQUFFLEdBQUVkLEtBQUUsS0FBSyxJQUFJSCxJQUFFQyxJQUFFQyxFQUFDLEdBQUVFLEtBQUUsS0FBSyxJQUFJLE1BQUlKLElBQUUsTUFBSUMsSUFBRSxNQUFJQyxFQUFDLEdBQUVHLEtBQUVMLEtBQUVHLElBQUVHLEtBQUVMLEtBQUVFLElBQUVJLEtBQUVMLEtBQUVDLElBQUVLLEtBQUUsS0FBSyxJQUFJRixJQUFFQyxFQUFDLEdBQUVFLEtBQUVKLEtBQUVDLEtBQUVFLElBQUVFLEtBQUVKLEtBQUVFLElBQUVHLEtBQUUsS0FBR0osS0FBRUMsS0FBR0ksS0FBRSxLQUFLLElBQUlILElBQUVDLElBQUVDLEVBQUMsSUFBRSxLQUFLLElBQUlOLElBQUVDLElBQUVDLEVBQUMsR0FBRU0sS0FBRSxNQUFNRCxFQUFDLEtBQUdBLE9BQUksSUFBRSxLQUFHQSxNQUFHLElBQUUsSUFBRUEsS0FBR2QsS0FBRSxFQUFDLEdBQUVXLEtBQUVJLEtBQUVULElBQUUsR0FBRU0sS0FBRUcsS0FBRVQsSUFBRSxHQUFFTyxLQUFFRSxLQUFFVCxHQUFDLEdBQUcsSUFBRWEsR0FBRTtBQUFBLEVBQUM7QUFBQyxTQUFNLEVBQUMsR0FBRSxFQUFFbkIsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFQSxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUVBLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRUEsR0FBRSxHQUFFLEdBQUUsQ0FBQyxFQUFDO0FBQUMsRUFBQyxHQUFHLEVBQUUsR0FBRyxJQUFFLFNBQVNILElBQUVDLElBQUVDLElBQUU7QUFBQyxNQUFJQyxLQUFFLEtBQUssSUFBSUgsSUFBRUMsRUFBQztBQUFFLFNBQU8sT0FBT0UsR0FBRSxHQUFFRCxLQUFFLEVBQUUsSUFBSUMsRUFBQyxJQUFFLEdBQUcsSUFBSUEsRUFBQztBQUFDLEdBQUUsRUFBRSxPQUFLLFNBQVNILElBQUVDLElBQUVDLElBQUU7QUFBQyxNQUFJQyxLQUFFLEtBQUssSUFBSUgsSUFBRUMsRUFBQztBQUFFLFNBQU9FLEdBQUUsSUFBRUQsS0FBRSxNQUFJLEVBQUVDLEdBQUUsQ0FBQyxJQUFFLEVBQUVBLEdBQUUsQ0FBQyxHQUFFRCxLQUFFLEVBQUUsSUFBSUMsRUFBQyxJQUFFLEdBQUcsS0FBS0EsRUFBQztBQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxTQUFTSCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsTUFBSUMsS0FBRSxLQUFLLElBQUlKLElBQUVDLEVBQUM7QUFBRSxTQUFPLE9BQU9HLEdBQUUsR0FBRUYsS0FBRSxFQUFFLElBQUlFLEVBQUMsSUFBRSxHQUFHLElBQUlBLElBQUVELEVBQUM7QUFBQyxHQUFFLEVBQUUsT0FBSyxTQUFTSCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsTUFBSUMsS0FBRSxLQUFLLElBQUlKLElBQUVDLEVBQUM7QUFBRSxTQUFPQyxLQUFFLEVBQUUsSUFBSUUsRUFBQyxJQUFFLEdBQUcsS0FBS0EsSUFBRUQsRUFBQztBQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxTQUFTSCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsTUFBSUMsS0FBRSxLQUFLLElBQUlKLElBQUVDLEVBQUMsR0FBRUksS0FBRSxFQUFFRCxHQUFFLEdBQUVBLEdBQUUsR0FBRUEsR0FBRSxDQUFDO0FBQUUsU0FBTyxPQUFPQSxHQUFF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QVUsR0FBRSxLQUFLLFdBQVcsR0FBRTtBQUFBLEVBQUksR0FBRUEsR0FBRSxVQUFVLGtCQUFnQixXQUFVO0FBQUMsV0FBTyxLQUFLLGtCQUFrQixHQUFFLEtBQUssVUFBVSxHQUFFO0FBQUEsRUFBSSxHQUFFQSxHQUFFLFVBQVUsY0FBWSxTQUFTRCxJQUFFO0FBQUMsV0FBTyxLQUFLLFlBQVVBLElBQUU7QUFBQSxFQUFJLEdBQUVDLEdBQUUsVUFBVSxPQUFLLFNBQVNELElBQUU7QUFBQyxXQUFPLEtBQUssSUFBSSxJQUFFLEVBQUVBLEVBQUMsR0FBRSxLQUFLLGlCQUFpQjtBQUFBLEVBQUMsR0FBRUMsR0FBRSxVQUFVLE9BQUssU0FBU0QsSUFBRTtBQUFDLFdBQU8sS0FBSyxJQUFJLElBQUUsRUFBRUEsSUFBRSxHQUFFLEdBQUcsR0FBRSxLQUFLLGlCQUFpQjtBQUFBLEVBQUMsR0FBRUMsR0FBRSxVQUFVLE9BQUssU0FBU0QsSUFBRTtBQUFDLFdBQU8sS0FBSyxJQUFJLElBQUUsRUFBRUEsSUFBRSxHQUFFLEdBQUcsR0FBRSxLQUFLLGlCQUFpQjtBQUFBLEVBQUMsR0FBRUMsR0FBRSxVQUFVLE9BQUssU0FBU0QsSUFBRTtBQUFDLFdBQU8sS0FBSyxJQUFJLElBQUUsRUFBRUEsSUFBRSxHQUFFLEdBQUcsR0FBRSxLQUFLLGlCQUFpQjtBQUFBLEVBQUMsR0FBRUMsR0FBRSxVQUFVLE9BQUssU0FBU0QsSUFBRTtBQUFDLFdBQU8sS0FBSyxJQUFJLElBQUUsRUFBRUEsSUFBRSxHQUFFLEdBQUcsR0FBRSxLQUFLLGlCQUFpQjtBQUFBLEVBQUMsR0FBRUMsR0FBRSxVQUFVLE9BQUssU0FBU0QsSUFBRTtBQUFDLFdBQU8sS0FBSyxJQUFJLElBQUUsRUFBRUEsSUFBRSxHQUFFLEdBQUcsR0FBRSxLQUFLLGlCQUFpQjtBQUFBLEVBQUMsR0FBRUMsR0FBRSxVQUFVLE9BQUssU0FBU0QsSUFBRTtBQUFDLFdBQU8sS0FBSyxJQUFJLElBQUUsS0FBSyxJQUFJLElBQUUsRUFBRUEsSUFBRSxHQUFFLENBQUMsR0FBRTtBQUFBLEVBQUksR0FBRUMsR0FBRSxVQUFVLE9BQUssU0FBU0QsSUFBRTtBQUFDLFdBQU8sS0FBSyxLQUFLLElBQUUsRUFBRUEsSUFBRSxHQUFFLEdBQUcsR0FBRSxLQUFLLGdCQUFnQjtBQUFBLEVBQUMsR0FBRUMsR0FBRSxVQUFVLE9BQUssU0FBU0QsSUFBRTtBQUFDLFdBQU8sS0FBSyxLQUFLLElBQUUsRUFBRUEsSUFBRSxHQUFFLEdBQUcsR0FBRSxLQUFLLGdCQUFnQjtBQUFBLEVBQUMsR0FBRUMsR0FBRSxVQUFVLE9BQUssU0FBU0QsSUFBRTtBQUFDLFdBQU8sS0FBSyxLQUFLLElBQUUsRUFBRUEsSUFBRSxHQUFFLEdBQUcsR0FBRSxLQUFLLGdCQUFnQjtBQUFBLEVBQUMsR0FBRUMsR0FBRSxVQUFVLE9BQUssU0FBU0QsSUFBRTtBQUFDLFdBQU8sS0FBSyxLQUFLLElBQUUsRUFBRUEsSUFBRSxHQUFFLEdBQUcsR0FBRSxLQUFLLGdCQUFnQjtBQUFBLEVBQUMsR0FBRSxPQUFPLGVBQWVDLEdBQUUsV0FBVSxZQUFXLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxLQUFLO0FBQUEsRUFBUyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLEtBQUksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsS0FBSyxJQUFJLEdBQUUsS0FBSyxRQUFRO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLEtBQUksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsS0FBSyxJQUFJLEdBQUUsS0FBSyxRQUFRO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLEtBQUksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsS0FBSyxJQUFJLEdBQUUsS0FBSyxRQUFRO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLEtBQUksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsS0FBSyxJQUFJLEdBQUUsS0FBSyxRQUFRO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLEtBQUksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsS0FBSyxJQUFJLEdBQUUsS0FBSyxRQUFRO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLEtBQUksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsS0FBSyxJQUFJLEdBQUUsS0FBSyxRQUFRO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLEtBQUksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsS0FBSyxJQUFJLEdBQUUsS0FBSyxRQUFRO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLEtBQUksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsS0FBSyxLQUFLLEdBQUUsS0FBSyxRQUFRO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLEtBQUksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsS0FBSyxLQUFLLEdBQUUsS0FBSyxRQUFRO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLEtBQUksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsS0FBSyxLQUFLLEdBQUUsS0FBSyxRQUFRO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLEtBQUksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsS0FBSyxLQUFLLEdBQUUsS0FBSyxRQUFRO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLGFBQVksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEdBQUcsSUFBSSxLQUFLLEdBQUc7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsY0FBYSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sR0FBRyxLQUFLLEtBQUssR0FBRztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxhQUFZLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTSxFQUFDLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxFQUFDO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLGNBQWEsRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSyxTQUFTLEdBQUUsRUFBQyxHQUFFLEtBQUssRUFBQyxDQUFDO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLGFBQVksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFNLEVBQUMsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEVBQUM7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsY0FBYSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFLLFNBQVMsR0FBRSxFQUFDLEdBQUUsS0FBSyxFQUFDLENBQUM7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsY0FBYSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU0sRUFBQyxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssRUFBQztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxlQUFjLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUssVUFBVSxHQUFFLEVBQUMsR0FBRSxLQUFLLEVBQUMsQ0FBQztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxPQUFNLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLElBQUksRUFBQyxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssRUFBQyxDQUFDO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLFFBQU8sRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsSUFBSSxFQUFDLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsTUFBSSxLQUFLLEVBQUMsQ0FBQztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxPQUFNLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLElBQUksRUFBQyxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssRUFBQyxDQUFDO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLFFBQU8sRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsSUFBSSxFQUFDLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxFQUFDLENBQUM7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsT0FBTSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxJQUFJLEVBQUMsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEVBQUMsQ0FBQztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxRQUFPLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLElBQUksRUFBQyxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssRUFBQyxDQUFDO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLFFBQU8sRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsS0FBSyxFQUFDLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxFQUFDLENBQUM7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsU0FBUSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxLQUFLLEVBQUMsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEVBQUMsQ0FBQztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRUEsR0FBRSxRQUFNLFNBQVNELElBQUVDLElBQUU7QUFBQyxlQUFTQSxPQUFJQSxLQUFFO0FBQUksUUFBSUMsS0FBRSxFQUFFRixFQUFDO0FBQUUsV0FBTyxHQUFHQSxJQUFFRSxJQUFFRCxJQUFFLEdBQUUsR0FBRyxLQUFJLEVBQUUsR0FBRztBQUFBLEVBQUMsR0FBRUEsR0FBRSxTQUFPLFNBQVNELElBQUVDLElBQUU7QUFBQyxlQUFTQSxPQUFJQSxLQUFFO0FBQUksUUFBSUMsS0FBRSxFQUFFRixFQUFDO0FBQUUsV0FBTyxHQUFHQSxJQUFFRSxJQUFFRCxJQUFFLEdBQUUsR0FBRyxNQUFLLEVBQUUsR0FBRztBQUFBLEVBQUMsR0FBRUEsR0FBRSxRQUFNLFNBQVNELElBQUVDLElBQUVDLElBQUU7QUFBQyxlQUFTRCxPQUFJQSxLQUFFLE9BQUksV0FBU0MsT0FBSUEsS0FBRTtBQUFHLFFBQUlDLEtBQUUsRUFBRUgsRUFBQztBQUFFLFdBQU8sR0FBR0EsSUFBRUcsSUFBRUYsSUFBRUMsSUFBRSxHQUFHLEtBQUksRUFBRSxHQUFHO0FBQUEsRUFBQyxHQUFFRCxHQUFFLFNBQU8sU0FBU0QsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLGVBQVNELE9BQUlBLEtBQUUsT0FBSSxXQUFTQyxPQUFJQSxLQUFFO0FBQUcsUUFBSUMsS0FBRSxFQUFFSCxFQUFDO0FBQUUsV0FBTyxHQUFHQSxJQUFFRyxJQUFFRixJQUFFQyxJQUFFLEdBQUcsTUFBSyxFQUFFLEdBQUc7QUFBQSxFQUFDLEdBQUVELEdBQUUsUUFBTSxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsZUFBU0QsT0FBSUEsS0FBRSxPQUFJLFdBQVNDLE9BQUlBLEtBQUU7QUFBRyxRQUFJQyxLQUFFLEVBQUVILEVBQUM7QUFBRSxXQUFPLEdBQUdBLElBQUVHLElBQUVGLElBQUVDLElBQUUsR0FBRyxLQUFJLEVBQUUsR0FBRztBQUFBLEVBQUMsR0FBRUQsR0FBRSxTQUFPLFNBQVNELElBQUVDLElBQUVDLElBQUU7QUFBQyxlQUFTRCxPQUFJQSxLQUFFLE9BQUksV0FBU0MsT0FBSUEsS0FBRTtBQUFHLFFBQUlDLEtBQUUsRUFBRUgsRUFBQztBQUFFLFdBQU8sR0FBR0EsSUFBRUcsSUFBRUYsSUFBRUMsSUFBRSxHQUFHLE1BQUssRUFBRSxHQUFHO0FBQUEsRUFBQyxHQUFFRCxHQUFFLFNBQU8sU0FBU0QsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLGVBQVNELE9BQUlBLEtBQUUsT0FBSSxXQUFTQyxPQUFJQSxLQUFFO0FBQUcsUUFBSUMsS0FBRSxFQUFFSCxFQUFDO0FBQUUsV0FBTyxHQUFHQSxJQUFFRyxJQUFFRixJQUFFQyxJQUFFLEdBQUcsTUFBSyxFQUFFLElBQUk7QUFBQSxFQUFDLEdBQUVELEdBQUUsVUFBUSxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsZUFBU0QsT0FBSUEsS0FBRSxPQUFJLFdBQVNDLE9BQUlBLEtBQUU7QUFBRyxRQUFJQyxLQUFFLEVBQUVILEVBQUM7QUFBRSxXQUFPLEdBQUdBLElBQUVHLElBQUVGLElBQUVDLElBQUUsR0FBRyxPQUFNLEVBQUUsSUFBSTtBQUFBLEVBQUMsR0FBRUQsR0FBRSxjQUFZLFNBQVNELElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxXQUFPLFdBQVNGLE9BQUlBLEtBQUUsSUFBRyxXQUFTQyxPQUFJQSxLQUFFLE9BQUksV0FBU0MsT0FBSUEsS0FBRSxJQUFHLEdBQUdKLElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUUsR0FBRyxLQUFJLEVBQUUsR0FBRztBQUFBLEVBQUMsR0FBRUgsR0FBRSxlQUFhLFNBQVNELElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxXQUFPLFdBQVNGLE9BQUlBLEtBQUUsSUFBRyxXQUFTQyxPQUFJQSxLQUFFLE9BQUksV0FBU0MsT0FBSUEsS0FBRSxJQUFHLEdBQUdKLElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUUsR0FBRyxNQUFLLEVBQUUsR0FBRztBQUFBLEVBQUMsR0FBRUgsR0FBRSxjQUFZLFNBQVNELElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxXQUFPLFdBQVNGLE9BQUlBLEtBQUUsSUFBRyxXQUFTQyxPQUFJQSxLQUFFLE9BQUksV0FBU0MsT0FBSUEsS0FBRSxJQUFHLEdBQUdKLElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUUsR0FBRyxLQUFJLEVBQUUsR0FBRztBQUFBLEVBQUMsR0FBRUgsR0FBRSxlQUFhLFNBQVNELElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxXQUFPLFdBQVNGLE9BQUlBLEtBQUUsSUFBRyxXQUFTQyxPQUFJQSxLQUFFLE9BQUksV0FBU0MsT0FBSUEsS0FBRSxJQUFHLEdBQUdKLElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUUsR0FBRyxNQUFLLEVBQUUsR0FBRztBQUFBLEVBQUMsR0FBRUgsR0FBRSxjQUFZLFNBQVNELElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxXQUFPLFdBQVNGLE9BQUlBLEtBQUUsSUFBRyxXQUFTQyxPQUFJQSxLQUFFLE9BQUksV0FBU0MsT0FBSUEsS0FBRSxJQUFHLEdBQUdKLElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUUsR0FBRyxLQUFJLEVBQUUsR0FBRztBQUFBLEVBQUMsR0FBRUgsR0FBRSxlQUFhLFNBQVNELElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxXQUFPLFdBQVNGLE9BQUlBLEtBQUUsSUFBRyxXQUFTQyxPQUFJQSxLQUFFLE9BQUksV0FBU0MsT0FBSUEsS0FBRSxJQUFHLEdBQUdKLElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUUsR0FBRyxNQUFLLEVBQUUsR0FBRztBQUFBLEVBQUMsR0FBRUgsR0FBRSxZQUFVLFNBQVNELElBQUVDLElBQUVDLElBQUU7QUFBQyxXQUFPLFdBQVNELE9BQUlBLEtBQUUsRUFBRSxXQUFVLFdBQVNDLE9BQUlBLEtBQUUsT0FBSSxHQUFHLElBQUlGLElBQUVDLElBQUVDLEVBQUM7QUFBQSxFQUFDLEdBQUVELEdBQUUsYUFBVyxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsV0FBTyxXQUFTRCxPQUFJQSxLQUFFLEVBQUUsV0FBVSxXQUFTQyxPQUFJQSxLQUFFLE9BQUksR0FBRyxLQUFLRixJQUFFQyxJQUFFQyxFQUFDO0FBQUEsRUFBQyxHQUFFRCxHQUFFLFlBQVUsU0FBU0QsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFdBQU8sV0FBU0YsT0FBSUEsS0FBRSxFQUFFLFdBQVUsV0FBU0MsT0FBSUEsS0FBRSxPQUFJLFdBQVNDLE9BQUlBLEtBQUUsSUFBRyxHQUFHLElBQUlILElBQUVDLElBQUVDLElBQUVDLEVBQUM7QUFBQSxFQUFDLEdBQUVGLEdBQUUsYUFBVyxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsV0FBTyxXQUFTRixPQUFJQSxLQUFFLEVBQUUsV0FBVSxXQUFTQyxPQUFJQSxLQUFFLE9BQUksV0FBU0MsT0FBSUEsS0FBRSxJQUFHLEdBQUcsS0FBS0gsSUFBRUMsSUFBRUMsSUFBRUMsRUFBQztBQUFBLEVBQUMsR0FBRUYsR0FBRSxZQUFVLFNBQVNELElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxXQUFPLFdBQVNGLE9BQUlBLEtBQUUsRUFBRSxXQUFVLFdBQVNDLE9BQUlBLEtBQUUsT0FBSSxXQUFTQyxPQUFJQSxLQUFFLElBQUcsR0FBRyxJQUFJSCxJQUFFQyxJQUFFQyxJQUFFQyxFQUFDO0FBQUEsRUFBQyxHQUFFRixHQUFFLGFBQVcsU0FBU0QsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFdBQU8sV0FBU0YsT0FBSUEsS0FBRSxFQUFFLFdBQVUsV0FBU0MsT0FBSUEsS0FBRSxPQUFJLFdBQVNDLE9BQUlBLEtBQUUsSUFBRyxHQUFHLEtBQUtILElBQUVDLElBQUVDLElBQUVDLEVBQUM7QUFBQSxFQUFDLEdBQUVGLEdBQUUsWUFBVSxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsV0FBTyxXQUFTQSxPQUFJQSxLQUFFLElBQUcsR0FBR0YsSUFBRUMsSUFBRSxNQUFHQyxFQUFDO0FBQUEsRUFBQyxHQUFFRCxHQUFFLFdBQVMsU0FBU0QsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFdBQU8sV0FBU0EsT0FBSUEs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QUFJLHVDQUF1QztBQUVuRCxlQUFXLE9BQU8sT0FBTyxPQUFPLEtBQUssR0FBRztBQUN0QyxVQUFJLGdCQUFnQixHQUFHO0FBQUEsSUFDekI7QUFBQSxFQUNIO0FBQUEsRUFFQSxNQUFNLGVBQWU7QUFDcEIsU0FBSyxXQUFXLE9BQU8sT0FBTyxDQUFDLEdBQUcsa0JBQWtCLE1BQU0sS0FBSyxTQUFTLENBQUM7QUFBQSxFQUMxRTtBQUFBLEVBRUEsTUFBTSxlQUFlO0FBQ3BCLFVBQU0sS0FBSyxTQUFTLEtBQUssUUFBUTtBQUMvQixTQUFLLElBQUksVUFBVSxjQUFjO0FBQUEsRUFFcEM7QUFDRDsiLAogICJuYW1lcyI6IFsicm9vdCIsICJmYWN0b3J5IiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImRlZmluZSIsICJhbWQiLCAic2VsZiIsICJfX3dlYnBhY2tfcmVxdWlyZV9fIiwgImRlZmluaXRpb24iLCAia2V5IiwgIm8iLCAiT2JqZWN0IiwgImRlZmluZVByb3BlcnR5IiwgImVudW1lcmFibGUiLCAiZ2V0IiwgIm9iaiIsICJwcm9wIiwgInByb3RvdHlwZSIsICJoYXNPd25Qcm9wZXJ0eSIsICJjYWxsIiwgIlN5bWJvbCIsICJ0b1N0cmluZ1RhZyIsICJ2YWx1ZSIsICJlIiwgInQiLCAiTCIsICJldmVudExpc3RlbmVyIiwgIm1ldGhvZCIsICJlbGVtZW50cyIsICJldmVudHMiLCAiZm4iLCAib3B0aW9ucyIsICJIVE1MQ29sbGVjdGlvbiIsICJOb2RlTGlzdCIsICJBcnJheSIsICJmcm9tIiwgImlzQXJyYXkiLCAiZWwiLCAiZXYiLCAiY2FwdHVyZSIsICJzbGljZSIsICJhcmd1bWVudHMiLCAicCIsICJyIiwgImEiLCAibCIsICJzIiwgImkiLCAiYyIsICJvbiIsICJiaW5kIiwgIm9mZiIsICJjcmVhdGVFbGVtZW50RnJvbVN0cmluZyIsICJodG1sIiwgImRpdiIsICJkb2N1bWVudCIsICJjcmVhdGVFbGVtZW50IiwgImlubmVySFRNTCIsICJ0cmltIiwgImZpcnN0RWxlbWVudENoaWxkIiwgImNyZWF0ZUZyb21UZW1wbGF0ZSIsICJzdHIiLCAicmVtb3ZlQXR0cmlidXRlIiwgIm5hbWUiLCAiZ2V0QXR0cmlidXRlIiwgInJlc29sdmUiLCAiZWxlbWVudCIsICJiYXNlIiwgImNvbiIsICJzdWJ0cmVlIiwgImNoaWxkIiwgImNoaWxkcmVuIiwgImFyciIsICJzdWIiLCAicHVzaCIsICJrZXlzIiwgImxlbmd0aCIsICJldmVudFBhdGgiLCAiZXZ0IiwgInBhdGgiLCAiY29tcG9zZWRQYXRoIiwgInRhcmdldCIsICJwYXJlbnRFbGVtZW50IiwgIndpbmRvdyIsICJyZXNvbHZlRWxlbWVudCIsICJ2YWwiLCAiRWxlbWVudCIsICJzcGxpdCIsICJyZWR1Y2UiLCAicHYiLCAiY3YiLCAiY2kiLCAicXVlcnlTZWxlY3RvciIsICJzaGFkb3dSb290IiwgImFkanVzdGFibGVJbnB1dE51bWJlcnMiLCAibWFwcGVyIiwgInYiLCAiaGFuZGxlU2Nyb2xsIiwgImluYyIsICJOdW1iZXIiLCAic2hpZnRLZXkiLCAiY3RybEtleSIsICJkZWx0YVkiLCAiaW5kZXgiLCAic2VsZWN0aW9uU3RhcnQiLCAicmVwbGFjZSIsICJmb2N1cyIsICJzZXRTZWxlY3Rpb25SYW5nZSIsICJwcmV2ZW50RGVmYXVsdCIsICJkaXNwYXRjaEV2ZW50IiwgIkV2ZW50IiwgInBhc3NpdmUiLCAibWluIiwgIm1heCIsICJmbG9vciIsICJyb3VuZCIsICJNYXRoIiwgImhzdlRvUmdiIiwgImgiLCAiZiIsICJxIiwgIm1vZCIsICJoc3ZUb0hzbCIsICJyZ2JUb0hzdiIsICJnIiwgImIiLCAibWluVmFsIiwgIm1heFZhbCIsICJkZWx0YSIsICJkciIsICJkZyIsICJkYiIsICJjbXlrVG9Ic3YiLCAibSIsICJ5IiwgImsiLCAiaHNsVG9Ic3YiLCAibnMiLCAiaXNOYU4iLCAiaGV4VG9Ic3YiLCAiaGV4IiwgIm1hdGNoIiwgIm1hcCIsICJwYXJzZUludCIsICJwYXJzZVRvSFNWQSIsICJ0b0xvd2VyQ2FzZSIsICJjdHgiLCAiZ2V0Q29udGV4dCIsICJmaWxsU3R5bGUiLCAicmVnZXgiLCAiY215ayIsICJyZ2JhIiwgImhzbGEiLCAiaHN2YSIsICJoZXhhIiwgIm51bWFyaXplIiwgImFycmF5IiwgInRlc3QiLCAidW5kZWZpbmVkIiwgImludmFsaWQiLCAidHlwZSIsICJleGVjIiwgImFscGhhVmFsaWQiLCAidmFsdWVzIiwgImpvaW4iLCAicmF3IiwgInN1YnN0cmluZyIsICJIU1ZhQ29sb3IiLCAib3JpZ2luYWwiLCAibmV4dCIsICJwcmVjaXNpb24iLCAidG9GaXhlZCIsICJ0aGF0IiwgInRvSFNWQSIsICJ0b1N0cmluZyIsICJ0b0hTTEEiLCAidG9SR0JBIiwgInRvQ01ZSyIsICJyZ2IiLCAidG9IRVhBIiwgInBhZFN0YXJ0IiwgImFscGhhIiwgInRvVXBwZXJDYXNlIiwgImNsb25lIiwgImNsYW1wIiwgIk1vdmVhYmxlIiwgIm9wdCIsICJhc3NpZ24iLCAibG9jayIsICJvbmNoYW5nZSIsICJvbnN0b3AiLCAiX2tleWJvYXJkIiwgImFjdGl2ZUVsZW1lbnQiLCAid3JhcHBlciIsICJ1cCIsICJyaWdodCIsICJkb3duIiwgImxlZnQiLCAieG0iLCAieW0iLCAidXBkYXRlIiwgImNhY2hlIiwgIngiLCAic3RhcnRzV2l0aCIsICJfdGFwc3RhcnQiLCAiXyIsICJfdGFwc3RvcCIsICJfdGFwbW92ZSIsICJjYW5jZWxhYmxlIiwgImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsICJ0b3VjaCIsICJ0b3VjaGVzIiwgImNsaWVudFgiLCAiY2xpZW50WSIsICJ3aWR0aCIsICJ0b3AiLCAiaGVpZ2h0IiwgInN0eWxlIiwgIm9mZnNldFdpZHRoIiwgIm9mZnNldEhlaWdodCIsICJjeCIsICJjeSIsICJ0cmlnZ2VyIiwgImRlc3Ryb3kiLCAiU2VsZWN0YWJsZSIsICJjbGFzc05hbWUiLCAib25UYXAiLCAiZm9yRWFjaCIsICJjbGFzc0xpc3QiLCAic3RvcFByb3BhZ2F0aW9uIiwgImRlZmF1bHRzIiwgInZhcmlhbnRGbGlwT3JkZXIiLCAic3RhcnQiLCAibWlkZGxlIiwgImVuZCIsICJwb3NpdGlvbkZsaXBPcmRlciIsICJib3R0b20iLCAicG9zaXRpb24iLCAibWFyZ2luIiwgInJlcG9zaXRpb24iLCAicmVmZXJlbmNlIiwgInBvcHBlciIsICJjb250YWluZXIiLCAiZG9jdW1lbnRFbGVtZW50IiwgIm9yaWdpbmFsTGVmdCIsICJvcmlnaW5hbFRvcCIsICJyZWZCb3giLCAicG9wQm94IiwgInBvc2l0aW9uU3RvcmUiLCAidmFyaWFudFN0b3JlIiwgInZzIiwgInZtIiwgInZlIiwgImhzIiwgImhtIiwgImhlIiwgInBvc0tleSIsICJ2YXJLZXkiLCAicG9zaXRpb25zIiwgInZhcmlhbnRzIiwgInZlcnRpY2FsIiwgInBvc2l0aW9uVmFsIiwgInBvc2l0aW9uS2V5IiwgInZhcmlhbnRLZXkiLCAicG9zaXRpb25TaXplIiwgInZhcmlhbnRTaXplIiwgInBvc2l0aW9uTWF4aW11bSIsICJ2YXJpYW50TWF4aW11bSIsICJwb3NpdGlvbk1pbmltdW0iLCAidmFyaWFudE1pbmltdW0iLCAidmFyaWFudFZhbCIsICJFIiwgIlBpY2tyIiwgImNvbnN0cnVjdG9yIiwgImluaXQiLCAic2F2ZSIsICJoaWRlIiwgInNob3ciLCAiY2xlYXIiLCAiY2hhbmdlIiwgImNoYW5nZXN0b3AiLCAiY2FuY2VsIiwgInN3YXRjaHNlbGVjdCIsICJ0aGlzIiwgIkRFRkFVTFRfT1BUSU9OUyIsICJzd2F0Y2hlcyIsICJjb21wb25lbnRzIiwgInRoZW1lIiwgInNsaWRlcnMiLCAibG9ja09wYWNpdHkiLCAicGFkZGluZyIsICJpbmNsdWRlcyIsICJpbnRlcmFjdGlvbiIsICJwcmV2aWV3IiwgIm9wYWNpdHkiLCAiaHVlIiwgInBhbGV0dGUiLCAiX3ByZUJ1aWxkIiwgIl9idWlsZENvbXBvbmVudHMiLCAiX2JpbmRFdmVudHMiLCAiX2ZpbmFsQnVpbGQiLCAiY29sb3IiLCAiYWRkU3dhdGNoIiwgImJ1dHRvbiIsICJhcHAiLCAiX3Jvb3QiLCAiX25hbm9wb3AiLCAiYmFzZU9wdGlvbnMiLCAiSFRNTEVsZW1lbnQiLCAiW29iamVjdCBPYmplY3RdIiwgIkVycm9yIiwgInNldEF0dHJpYnV0ZSIsICJfdCIsICJfc2V0dXBBbmltYXRpb25GcmFtZSIsICJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCAiY2IiLCAic2V0Q29sb3IiLCAiZGVmYXVsdCIsICJfcmVQb3NpdGlvbmluZ1BpY2tlciIsICJkZWZhdWx0UmVwcmVzZW50YXRpb24iLCAiX3JlcHJlc2VudGF0aW9uIiwgInNldENvbG9yUmVwcmVzZW50YXRpb24iLCAic2hvd0Fsd2F5cyIsICJfaW5pdGlhbGl6aW5nQWN0aXZlIiwgIl9lbWl0IiwgImluc3RhbmNlIiwgInVzZUFzQnV0dG9uIiwgImlubGluZSIsICJhcHBDbGFzcyIsICJoaWRkZW4iLCAiaW5wdXQiLCAiaW50IiwgImZpbmQiLCAiYWRkIiwgImNvbnRhaW5zIiwgImFwcGVuZENoaWxkIiwgInJlbW92ZUNoaWxkIiwgInBhcmVudCIsICJuZXh0U2libGluZyIsICJpbnNlcnRCZWZvcmUiLCAicmVtb3ZlIiwgInBhcmVudE5vZGUiLCAicmVwbGFjZUNoaWxkIiwgImRpc2FibGVkIiwgImRpc2FibGUiLCAiY29tcGFyaXNvbiIsICJ0cmFuc2l0aW9uIiwgImxhc3RDb2xvciIsICJpbnN0IiwgImNzIiwgInJlcGVhdCIsICJzbyIsICJzaCIsICJnZXRDb2xvciIsICJfY29sb3IiLCAiX2xhc3RDb2xvciIsICJwaWNrZXIiLCAiY3VycmVudENvbG9yIiwgIl9yZWNhbGMiLCAiX3VwZGF0ZU91dHB1dCIsICJjc3NSR0JhU3RyaW5nIiwgImJhY2tncm91bmQiLCAic2V0UHJvcGVydHkiLCAiX3N3YXRjaENvbG9ycyIsICJzbGlkZXIiLCAiYmFja2dyb3VuZENvbG9yIiwgInNlbGVjdGFibGUiLCAiX2NvbXBvbmVudHMiLCAiZXZlbnRCaW5kaW5ncyIsICJfY2xlYXJDb2xvciIsICJzZXRIU1ZBIiwgImFwcGx5Q29sb3IiLCAicmVzdWx0IiwgInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiIsICJjayIsICJjbG9zZVdpdGhLZXkiLCAiaXNPcGVuIiwgImNvZGUiLCAic29tZSIsICJhZGp1c3RhYmxlTnVtYmVycyIsICJyYW5nZXMiLCAic3RlcCIsICJyYW5nZSIsICJnZXRDb2xvclJlcHJlc2VudGF0aW9uIiwgIm52IiwgInRvUHJlY2lzaW9uIiwgImF1dG9SZXBvc2l0aW9uIiwgInRpbWVvdXQiLCAiY2xvc2VPblNjcm9sbCIsICJzZXRUaW1lb3V0IiwgInJzIiwgImNsZWFyVGltZW91dCIsICJfZXZlbnRCaW5kaW5ncyIsICJib2R5IiwgImViIiwgImlubmVySGVpZ2h0IiwgImlubmVyV2lkdGgiLCAiZXZlbnRTb3VyY2UiLCAib3V0cHV0UHJlY2lzaW9uIiwgInNpbGVudCIsICJfcGFyc2VMb2NhbENvbG9yIiwgImFscGhhTWFrZXNBQ2hhbmdlIiwgImkxOG4iLCAiSTE4Tl9ERUZBVUxUUyIsICJldmVudCIsICJhcmdzIiwgIl9ldmVudExpc3RlbmVyIiwgImNhbGxCYWNrcyIsICJpbmRleE9mIiwgInNwbGljZSIsICJyZW1vdmVTd2F0Y2giLCAic3dhdGNoQ29sb3IiLCAiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCAiZGVzdHJveUFuZFJlbW92ZSIsICJyZWNhbGMiLCAic3RyaW5nIiwgInV0eXBlIiwgImNsaWNrIiwgImdldFNlbGVjdGVkQ29sb3IiLCAiZ2V0Um9vdCIsICJlbmFibGUiLCAiVkVSU0lPTiIsICJpbXBvcnRfb2JzaWRpYW4iLCAicyIsICJfIiwgImkiLCAic2V0dGluZ3MiLCAiaSIsICJsaW5lTnVtYmVyIiwgImltcG9ydF9zdGF0ZSIsICJpbXBvcnRfdmlldyIsICJpIiwgImkiLCAiZiIsICJpIiwgImNvZGVCbG9ja0ZpcnN0TGluZSIsICJDb2xsYXBzZSIsICJpIiwgImoiLCAiXyIsICJpbXBvcnRfb2JzaWRpYW4iLCAidCIsICJlIiwgInIiLCAibiIsICJpIiwgIm8iLCAiYSIsICJ1IiwgImMiLCAicyIsICJkIiwgImgiLCAibCIsICJmIiwgImciLCAicCIsICJiIiwgIkYiLCAibSIsICJ5IiwgIkEiLCAiRSIsICJ2IiwgInZhbHVlIiwgIlBpY2tyIiwgImkiXQp9Cg==
+//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibm9kZV9tb2R1bGVzL0BzaW1vbndlcC9waWNrci9kaXN0L3dlYnBhY2s6L3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsICJub2RlX21vZHVsZXMvQHNpbW9ud2VwL3BpY2tyL2Rpc3Qvd2VicGFjazovd2VicGFjay9ib290c3RyYXAiLCAibm9kZV9tb2R1bGVzL0BzaW1vbndlcC9waWNrci9kaXN0L3dlYnBhY2s6L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsICJub2RlX21vZHVsZXMvQHNpbW9ud2VwL3BpY2tyL2Rpc3Qvd2VicGFjazovd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsICJub2RlX21vZHVsZXMvQHNpbW9ud2VwL3BpY2tyL2Rpc3Qvd2VicGFjazovd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsICJub2RlX21vZHVsZXMvQHNpbW9ud2VwL3BpY2tyL2Rpc3Qvd2VicGFjazovc3JjL2pzL3V0aWxzL3V0aWxzLmpzIiwgIm5vZGVfbW9kdWxlcy9Ac2ltb253ZXAvcGlja3IvZGlzdC93ZWJwYWNrOi9zcmMvanMvdXRpbHMvY29sb3IuanMiLCAibm9kZV9tb2R1bGVzL0BzaW1vbndlcC9waWNrci9kaXN0L3dlYnBhY2s6L3NyYy9qcy91dGlscy9oc3ZhY29sb3IuanMiLCAibm9kZV9tb2R1bGVzL0BzaW1vbndlcC9waWNrci9kaXN0L3dlYnBhY2s6L3NyYy9qcy9saWJzL21vdmVhYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy9Ac2ltb253ZXAvcGlja3IvZGlzdC93ZWJwYWNrOi9zcmMvanMvbGlicy9zZWxlY3RhYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy9Ac2ltb253ZXAvcGlja3IvZGlzdC93ZWJwYWNrOi9zcmMvanMvdGVtcGxhdGUuanMiLCAibm9kZV9tb2R1bGVzL0BzaW1vbndlcC9waWNrci9kaXN0L3NyYy9OYW5vUG9wLnRzIiwgIm5vZGVfbW9kdWxlcy9Ac2ltb253ZXAvcGlja3IvZGlzdC93ZWJwYWNrOi9zcmMvanMvcGlja3IuanMiLCAic3JjL21haW4udHMiLCAic3JjL1NldHRpbmdzLnRzIiwgInNyYy9Db2RlQmxvY2tIaWdobGlnaHQudHMiLCAic3JjL0NvbnN0LnRzIiwgInNyYy9VdGlscy50cyIsICJzcmMvSGVhZGVyLnRzIiwgInNyYy9SZWFkaW5nVmlld09sZC50cyIsICJzcmMvU2V0dGluZ3NUYWIudHMiLCAibm9kZV9tb2R1bGVzL2NvbG9ydHJhbnNsYXRvci9lc20vaW5kZXguanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIlBpY2tyXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIlBpY2tyXCJdID0gZmFjdG9yeSgpO1xufSkoc2VsZiwgZnVuY3Rpb24oKSB7XG5yZXR1cm4gIiwgIi8vIFRoZSByZXF1aXJlIHNjb3BlXG52YXIgX193ZWJwYWNrX3JlcXVpcmVfXyA9IHt9O1xuXG4iLCAiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwgIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCAiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwgIi8qIGVzbGludC1kaXNhYmxlIHByZWZlci1yZXN0LXBhcmFtcyAqL1xyXG5mdW5jdGlvbiBldmVudExpc3RlbmVyKG1ldGhvZCwgZWxlbWVudHMsIGV2ZW50cywgZm4sIG9wdGlvbnMgPSB7fSkge1xyXG5cclxuICAgIC8vIE5vcm1hbGl6ZSBhcnJheVxyXG4gICAgaWYgKGVsZW1lbnRzIGluc3RhbmNlb2YgSFRNTENvbGxlY3Rpb24gfHwgZWxlbWVudHMgaW5zdGFuY2VvZiBOb2RlTGlzdCkge1xyXG4gICAgICAgIGVsZW1lbnRzID0gQXJyYXkuZnJvbShlbGVtZW50cyk7XHJcbiAgICB9IGVsc2UgaWYgKCFBcnJheS5pc0FycmF5KGVsZW1lbnRzKSkge1xyXG4gICAgICAgIGVsZW1lbnRzID0gW2VsZW1lbnRzXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXZlbnRzKSkge1xyXG4gICAgICAgIGV2ZW50cyA9IFtldmVudHNdO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3QgZWwgb2YgZWxlbWVudHMpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGV2IG9mIGV2ZW50cykge1xyXG4gICAgICAgICAgICBlbFttZXRob2RdKGV2LCBmbiwge2NhcHR1cmU6IGZhbHNlLCAuLi5vcHRpb25zfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xyXG59XHJcblxyXG4vKipcclxuICogQWRkIGV2ZW50KHMpIHRvIGVsZW1lbnQocykuXHJcbiAqIEBwYXJhbSBlbGVtZW50cyBET00tRWxlbWVudHNcclxuICogQHBhcmFtIGV2ZW50cyBFdmVudCBuYW1lc1xyXG4gKiBAcGFyYW0gZm4gQ2FsbGJhY2tcclxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgb3B0aW9uc1xyXG4gKiBAcmV0dXJuIEFycmF5IHBhc3NlZCBhcmd1bWVudHNcclxuICovXHJcbmV4cG9ydCBjb25zdCBvbiA9IGV2ZW50TGlzdGVuZXIuYmluZChudWxsLCAnYWRkRXZlbnRMaXN0ZW5lcicpO1xyXG5cclxuLyoqXHJcbiAqIFJlbW92ZSBldmVudChzKSBmcm9tIGVsZW1lbnQocykuXHJcbiAqIEBwYXJhbSBlbGVtZW50cyBET00tRWxlbWVudHNcclxuICogQHBhcmFtIGV2ZW50cyBFdmVudCBuYW1lc1xyXG4gKiBAcGFyYW0gZm4gQ2FsbGJhY2tcclxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgb3B0aW9uc1xyXG4gKiBAcmV0dXJuIEFycmF5IHBhc3NlZCBhcmd1bWVudHNcclxuICovXHJcbmV4cG9ydCBjb25zdCBvZmYgPSBldmVudExpc3RlbmVyLmJpbmQobnVsbCwgJ3JlbW92ZUV2ZW50TGlzdGVuZXInKTtcclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIGFuIERPTS1FbGVtZW50IG91dCBvZiBhIHN0cmluZyAoU2luZ2xlIGVsZW1lbnQpLlxyXG4gKiBAcGFyYW0gaHRtbCBIVE1MIHJlcHJlc2VudGluZyBhIHNpbmdsZSBlbGVtZW50XHJcbiAqIEByZXR1cm5zIHtFbGVtZW50IHwgbnVsbH0gVGhlIGVsZW1lbnQuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRWxlbWVudEZyb21TdHJpbmcoaHRtbCkge1xyXG4gICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICBkaXYuaW5uZXJIVE1MID0gaHRtbC50cmltKCk7XHJcbiAgICByZXR1cm4gZGl2LmZpcnN0RWxlbWVudENoaWxkO1xyXG59XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhIG5ldyBodG1sIGVsZW1lbnQsIGV2ZXJ5IGVsZW1lbnQgd2hpY2ggaGFzXHJcbiAqIGEgJzpyZWYnIGF0dHJpYnV0ZSB3aWxsIGJlIHNhdmVkIGluIGEgb2JqZWN0ICh3aGljaCB3aWxsIGJlIHJldHVybmVkKVxyXG4gKiB3aGVyZSB0aGUgdmFsdWUgb2YgJzpyZWYnIGlzIHRoZSBvYmplY3Qta2V5IGFuZCB0aGUgdmFsdWUgdGhlIEhUTUxFbGVtZW50LlxyXG4gKlxyXG4gKiBJdCdzIHBvc3NpYmxlIHRvIGNyZWF0ZSBhIGhpZXJhcmNoeSBpZiB5b3UgYWRkIGEgJzpvYmonIGF0dHJpYnV0ZS4gRXZlcnlcclxuICogc2libGluZyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBvYmplY3Qgd2hpY2ggd2lsbCBnZXQgdGhlIG5hbWUgZnJvbSB0aGUgJ2RhdGEtY29uJyBhdHRyaWJ1dGUuXHJcbiAqXHJcbiAqIElmIHlvdSB3YW50IHRvIGNyZWF0ZSBhbiBBcnJheSBvdXQgb2YgbXVsdGlwbGUgZWxlbWVudHMsIHlvdSBjYW4gdXNlIHRoZSAnOmFycicgYXR0cmlidXRlLFxyXG4gKiB0aGUgdmFsdWUgZGVmaW5lcyB0aGUga2V5IGFuZCBhbGwgZWxlbWVudHMsIHdoaWNoIGhhcyB0aGUgc2FtZSBwYXJlbnQgYW5kIHRoZSBzYW1lICdkYXRhLWFycicgYXR0cmlidXRlLFxyXG4gKiB3b3VsZCBiZSBhZGRlZCB0byBpdC5cclxuICpcclxuICogQHBhcmFtIHN0ciAtIFRoZSBIVE1MIFN0cmluZy5cclxuICovXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRnJvbVRlbXBsYXRlKHN0cikge1xyXG5cclxuICAgIC8vIFJlbW92ZXMgYW4gYXR0cmlidXRlIGZyb20gYSBIVE1MRWxlbWVudCBhbmQgcmV0dXJucyB0aGUgdmFsdWUuXHJcbiAgICBjb25zdCByZW1vdmVBdHRyaWJ1dGUgPSAoZWwsIG5hbWUpID0+IHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IGVsLmdldEF0dHJpYnV0ZShuYW1lKTtcclxuICAgICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBSZWN1cnNpdmUgZnVuY3Rpb24gdG8gcmVzb2x2ZSB0ZW1wbGF0ZVxyXG4gICAgY29uc3QgcmVzb2x2ZSA9IChlbGVtZW50LCBiYXNlID0ge30pID0+IHtcclxuXHJcbiAgICAgICAgLy8gQ2hlY2sga2V5IGFuZCBjb250YWluZXIgYXR0cmlidXRlXHJcbiAgICAgICAgY29uc3QgY29uID0gcmVtb3ZlQXR0cmlidXRlKGVsZW1lbnQsICc6b2JqJyk7XHJcbiAgICAgICAgY29uc3Qga2V5ID0gcmVtb3ZlQXR0cmlidXRlKGVsZW1lbnQsICc6cmVmJyk7XHJcbiAgICAgICAgY29uc3Qgc3VidHJlZSA9IGNvbiA/IChiYXNlW2Nvbl0gPSB7fSkgOiBiYXNlO1xyXG5cclxuICAgICAgICAvLyBDaGVjayBhbmQgc2F2ZSBlbGVtZW50XHJcbiAgICAgICAga2V5ICYmIChiYXNlW2tleV0gPSBlbGVtZW50KTtcclxuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIEFycmF5LmZyb20oZWxlbWVudC5jaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgY29uc3QgYXJyID0gcmVtb3ZlQXR0cmlidXRlKGNoaWxkLCAnOmFycicpO1xyXG4gICAgICAgICAgICBjb25zdCBzdWIgPSByZXNvbHZlKGNoaWxkLCBhcnIgPyB7fSA6IHN1YnRyZWUpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGFycikge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZXJlIGlzIGFscmVhZHkgYW4gYXJyYXkgYW5kIGFkZCBlbGVtZW50XHJcbiAgICAgICAgICAgICAgICAoc3VidHJlZVthcnJdIHx8IChzdWJ0cmVlW2Fycl0gPSBbXSkpXHJcbiAgICAgICAgICAgICAgICAgICAgLnB1c2goT2JqZWN0LmtleXMoc3ViKS5sZW5ndGggPyBzdWIgOiBjaGlsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBiYXNlO1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gcmVzb2x2ZShjcmVhdGVFbGVtZW50RnJvbVN0cmluZyhzdHIpKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFBvbHlmaWxsIGZvciBzYWZhcmkgJiBmaXJlZm94IGZvciB0aGUgZXZlbnRQYXRoIGV2ZW50IHByb3BlcnR5LlxyXG4gKiBAcGFyYW0gZXZ0IFRoZSBldmVudCBvYmplY3QuXHJcbiAqIEByZXR1cm4gW1N0cmluZ10gZXZlbnQgcGF0aC5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBldmVudFBhdGgoZXZ0KSB7XHJcbiAgICBsZXQgcGF0aCA9IGV2dC5wYXRoIHx8IChldnQuY29tcG9zZWRQYXRoICYmIGV2dC5jb21wb3NlZFBhdGgoKSk7XHJcbiAgICBpZiAocGF0aCkge1xyXG4gICAgICAgIHJldHVybiBwYXRoO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBlbCA9IGV2dC50YXJnZXQucGFyZW50RWxlbWVudDtcclxuICAgIHBhdGggPSBbZXZ0LnRhcmdldCwgZWxdO1xyXG4gICAgd2hpbGUgKGVsID0gZWwucGFyZW50RWxlbWVudCkge1xyXG4gICAgICAgIHBhdGgucHVzaChlbCk7XHJcbiAgICB9XHJcblxyXG4gICAgcGF0aC5wdXNoKGRvY3VtZW50LCB3aW5kb3cpO1xyXG4gICAgcmV0dXJuIHBhdGg7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXNvbHZlcyBhIEhUTUxFbGVtZW50IGJ5IHF1ZXJ5LlxyXG4gKiBAcGFyYW0gdmFsXHJcbiAqIEByZXR1cm5zIHtudWxsfERvY3VtZW50fEVsZW1lbnR9XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUVsZW1lbnQodmFsKSB7XHJcbiAgICBpZiAodmFsIGluc3RhbmNlb2YgRWxlbWVudCkge1xyXG4gICAgICAgIHJldHVybiB2YWw7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbC5zcGxpdCgvPj4vZykucmVkdWNlKChwdiwgY3YsIGNpLCBhKSA9PiB7XHJcbiAgICAgICAgICAgIHB2ID0gcHYucXVlcnlTZWxlY3Rvcihjdik7XHJcbiAgICAgICAgICAgIHJldHVybiBjaSA8IGEubGVuZ3RoIC0gMSA/IHB2LnNoYWRvd1Jvb3QgOiBwdjtcclxuICAgICAgICB9LCBkb2N1bWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIHRoZSBhYmlsaXR5IHRvIGNoYW5nZSBudW1iZXJzIGluIGFuIGlucHV0IGZpZWxkIHdpdGggdGhlIHNjcm9sbC13aGVlbC5cclxuICogQHBhcmFtIGVsXHJcbiAqIEBwYXJhbSBtYXBwZXJcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGp1c3RhYmxlSW5wdXROdW1iZXJzKGVsLCBtYXBwZXIgPSB2ID0+IHYpIHtcclxuXHJcbiAgICBmdW5jdGlvbiBoYW5kbGVTY3JvbGwoZSkge1xyXG4gICAgICAgIGNvbnN0IGluYyA9IChbMC4wMDEsIDAuMDEsIDAuMV0pW051bWJlcihlLnNoaWZ0S2V5IHx8IGUuY3RybEtleSAqIDIpXSAqIChlLmRlbHRhWSA8IDAgPyAxIDogLTEpO1xyXG5cclxuICAgICAgICBsZXQgaW5kZXggPSAwO1xyXG4gICAgICAgIGxldCBvZmYgPSBlbC5zZWxlY3Rpb25TdGFydDtcclxuICAgICAgICBlbC52YWx1ZSA9IGVsLnZhbHVlLnJlcGxhY2UoL1tcXGQuXSsvZywgKHYsIGkpID0+IHtcclxuXHJcbiAgICAgICAgICAgIC8vIENoZWNrIGlmIG51bWJlciBpcyBpbiBjdXJzb3IgcmFuZ2UgYW5kIGluY3JlYXNlIGl0XHJcbiAgICAgICAgICAgIGlmIChpIDw9IG9mZiAmJiBpICsgdi5sZW5ndGggPj0gb2ZmKSB7XHJcbiAgICAgICAgICAgICAgICBvZmYgPSBpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hcHBlcihOdW1iZXIodiksIGluYywgaW5kZXgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpbmRleCsrO1xyXG4gICAgICAgICAgICByZXR1cm4gdjtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgZWwuZm9jdXMoKTtcclxuICAgICAgICBlbC5zZXRTZWxlY3Rpb25SYW5nZShvZmYsIG9mZik7XHJcblxyXG4gICAgICAgIC8vIFByZXZlbnQgZGVmYXVsdCBhbmQgdHJpZ2dlciBpbnB1dCBldmVudFxyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBlbC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQmluZCBldmVudHNcclxuICAgIG9uKGVsLCAnZm9jdXMnLCAoKSA9PiBvbih3aW5kb3csICd3aGVlbCcsIGhhbmRsZVNjcm9sbCwge3Bhc3NpdmU6IGZhbHNlfSkpO1xyXG4gICAgb24oZWwsICdibHVyJywgKCkgPT4gb2ZmKHdpbmRvdywgJ3doZWVsJywgaGFuZGxlU2Nyb2xsKSk7XHJcbn1cclxuIiwgIi8vIFNob3J0aGFuZHNcclxuY29uc3Qge21pbiwgbWF4LCBmbG9vciwgcm91bmR9ID0gTWF0aDtcclxuXHJcbi8qKlxyXG4gKiBUcmllcyB0byBjb252ZXJ0IGEgY29sb3IgbmFtZSB0byByZ2IvYSBoZXggcmVwcmVzZW50YXRpb25cclxuICogQHBhcmFtIG5hbWVcclxuICogQHJldHVybnMge3N0cmluZyB8IENhbnZhc0dyYWRpZW50IHwgQ2FudmFzUGF0dGVybn1cclxuICovXHJcbmZ1bmN0aW9uIHN0YW5kYXJkaXplQ29sb3IobmFtZSkge1xyXG5cclxuICAgIC8vIFNpbmNlIGludmFsaWQgY29sb3IncyB3aWxsIGJlIHBhcnNlZCBhcyBibGFjaywgZmlsdGVyIHRoZW0gb3V0XHJcbiAgICBpZiAobmFtZS50b0xvd2VyQ2FzZSgpID09PSAnYmxhY2snKSB7XHJcbiAgICAgICAgcmV0dXJuICcjMDAwJztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjdHggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKS5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgY3R4LmZpbGxTdHlsZSA9IG5hbWU7XHJcbiAgICByZXR1cm4gY3R4LmZpbGxTdHlsZSA9PT0gJyMwMDAnID8gbnVsbCA6IGN0eC5maWxsU3R5bGU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0IEhTViBzcGVjdHJ1bSB0byBSR0IuXHJcbiAqIEBwYXJhbSBoIEh1ZVxyXG4gKiBAcGFyYW0gcyBTYXR1cmF0aW9uXHJcbiAqIEBwYXJhbSB2IFZhbHVlXHJcbiAqIEByZXR1cm5zIHtudW1iZXJbXX0gQXJyYXkgd2l0aCByZ2IgdmFsdWVzLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGhzdlRvUmdiKGgsIHMsIHYpIHtcclxuICAgIGggPSAoaCAvIDM2MCkgKiA2O1xyXG4gICAgcyAvPSAxMDA7XHJcbiAgICB2IC89IDEwMDtcclxuXHJcbiAgICBjb25zdCBpID0gZmxvb3IoaCk7XHJcblxyXG4gICAgY29uc3QgZiA9IGggLSBpO1xyXG4gICAgY29uc3QgcCA9IHYgKiAoMSAtIHMpO1xyXG4gICAgY29uc3QgcSA9IHYgKiAoMSAtIGYgKiBzKTtcclxuICAgIGNvbnN0IHQgPSB2ICogKDEgLSAoMSAtIGYpICogcyk7XHJcblxyXG4gICAgY29uc3QgbW9kID0gaSAlIDY7XHJcbiAgICBjb25zdCByID0gW3YsIHEsIHAsIHAsIHQsIHZdW21vZF07XHJcbiAgICBjb25zdCBnID0gW3QsIHYsIHYsIHEsIHAsIHBdW21vZF07XHJcbiAgICBjb25zdCBiID0gW3AsIHAsIHQsIHYsIHYsIHFdW21vZF07XHJcblxyXG4gICAgcmV0dXJuIFtcclxuICAgICAgICByICogMjU1LFxyXG4gICAgICAgIGcgKiAyNTUsXHJcbiAgICAgICAgYiAqIDI1NVxyXG4gICAgXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbnZlcnQgSFNWIHNwZWN0cnVtIHRvIEhleC5cclxuICogQHBhcmFtIGggSHVlXHJcbiAqIEBwYXJhbSBzIFNhdHVyYXRpb25cclxuICogQHBhcmFtIHYgVmFsdWVcclxuICogQHJldHVybnMge3N0cmluZ1tdfSBIZXggdmFsdWVzXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaHN2VG9IZXgoaCwgcywgdikge1xyXG4gICAgcmV0dXJuIGhzdlRvUmdiKGgsIHMsIHYpLm1hcCh2ID0+XHJcbiAgICAgICAgcm91bmQodikudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJylcclxuICAgICk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0IEhTViBzcGVjdHJ1bSB0byBDTVlLLlxyXG4gKiBAcGFyYW0gaCBIdWVcclxuICogQHBhcmFtIHMgU2F0dXJhdGlvblxyXG4gKiBAcGFyYW0gdiBWYWx1ZVxyXG4gKiBAcmV0dXJucyB7bnVtYmVyW119IENNWUsgdmFsdWVzXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaHN2VG9DbXlrKGgsIHMsIHYpIHtcclxuICAgIGNvbnN0IHJnYiA9IGhzdlRvUmdiKGgsIHMsIHYpO1xyXG4gICAgY29uc3QgciA9IHJnYlswXSAvIDI1NTtcclxuICAgIGNvbnN0IGcgPSByZ2JbMV0gLyAyNTU7XHJcbiAgICBjb25zdCBiID0gcmdiWzJdIC8gMjU1O1xyXG5cclxuICAgIGNvbnN0IGsgPSBtaW4oMSAtIHIsIDEgLSBnLCAxIC0gYik7XHJcbiAgICBjb25zdCBjID0gayA9PT0gMSA/IDAgOiAoMSAtIHIgLSBrKSAvICgxIC0gayk7XHJcbiAgICBjb25zdCBtID0gayA9PT0gMSA/IDAgOiAoMSAtIGcgLSBrKSAvICgxIC0gayk7XHJcbiAgICBjb25zdCB5ID0gayA9PT0gMSA/IDAgOiAoMSAtIGIgLSBrKSAvICgxIC0gayk7XHJcblxyXG4gICAgcmV0dXJuIFtcclxuICAgICAgICBjICogMTAwLFxyXG4gICAgICAgIG0gKiAxMDAsXHJcbiAgICAgICAgeSAqIDEwMCxcclxuICAgICAgICBrICogMTAwXHJcbiAgICBdO1xyXG59XHJcblxyXG4vKipcclxuICogQ29udmVydCBIU1Ygc3BlY3RydW0gdG8gSFNMLlxyXG4gKiBAcGFyYW0gaCBIdWVcclxuICogQHBhcmFtIHMgU2F0dXJhdGlvblxyXG4gKiBAcGFyYW0gdiBWYWx1ZVxyXG4gKiBAcmV0dXJucyB7bnVtYmVyW119IEhTTCB2YWx1ZXNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBoc3ZUb0hzbChoLCBzLCB2KSB7XHJcbiAgICBzIC89IDEwMDtcclxuICAgIHYgLz0gMTAwO1xyXG5cclxuICAgIGNvbnN0IGwgPSAoMiAtIHMpICogdiAvIDI7XHJcblxyXG4gICAgaWYgKGwgIT09IDApIHtcclxuICAgICAgICBpZiAobCA9PT0gMSkge1xyXG4gICAgICAgICAgICBzID0gMDtcclxuICAgICAgICB9IGVsc2UgaWYgKGwgPCAwLjUpIHtcclxuICAgICAgICAgICAgcyA9IHMgKiB2IC8gKGwgKiAyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzID0gcyAqIHYgLyAoMiAtIGwgKiAyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFtcclxuICAgICAgICBoLFxyXG4gICAgICAgIHMgKiAxMDAsXHJcbiAgICAgICAgbCAqIDEwMFxyXG4gICAgXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbnZlcnQgUkdCIHRvIEhTVi5cclxuICogQHBhcmFtIHIgUmVkXHJcbiAqIEBwYXJhbSBnIEdyZWVuXHJcbiAqIEBwYXJhbSBiIEJsdWVcclxuICogQHJldHVybiB7bnVtYmVyW119IEhTViB2YWx1ZXMuXHJcbiAqL1xyXG5mdW5jdGlvbiByZ2JUb0hzdihyLCBnLCBiKSB7XHJcbiAgICByIC89IDI1NTtcclxuICAgIGcgLz0gMjU1O1xyXG4gICAgYiAvPSAyNTU7XHJcblxyXG4gICAgY29uc3QgbWluVmFsID0gbWluKHIsIGcsIGIpO1xyXG4gICAgY29uc3QgbWF4VmFsID0gbWF4KHIsIGcsIGIpO1xyXG4gICAgY29uc3QgZGVsdGEgPSBtYXhWYWwgLSBtaW5WYWw7XHJcblxyXG4gICAgbGV0IGgsIHM7XHJcbiAgICBjb25zdCB2ID0gbWF4VmFsO1xyXG4gICAgaWYgKGRlbHRhID09PSAwKSB7XHJcbiAgICAgICAgaCA9IHMgPSAwO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBzID0gZGVsdGEgLyBtYXhWYWw7XHJcbiAgICAgICAgY29uc3QgZHIgPSAoKChtYXhWYWwgLSByKSAvIDYpICsgKGRlbHRhIC8gMikpIC8gZGVsdGE7XHJcbiAgICAgICAgY29uc3QgZGcgPSAoKChtYXhWYWwgLSBnKSAvIDYpICsgKGRlbHRhIC8gMikpIC8gZGVsdGE7XHJcbiAgICAgICAgY29uc3QgZGIgPSAoKChtYXhWYWwgLSBiKSAvIDYpICsgKGRlbHRhIC8gMikpIC8gZGVsdGE7XHJcblxyXG4gICAgICAgIGlmIChyID09PSBtYXhWYWwpIHtcclxuICAgICAgICAgICAgaCA9IGRiIC0gZGc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChnID09PSBtYXhWYWwpIHtcclxuICAgICAgICAgICAgaCA9ICgxIC8gMykgKyBkciAtIGRiO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoYiA9PT0gbWF4VmFsKSB7XHJcbiAgICAgICAgICAgIGggPSAoMiAvIDMpICsgZGcgLSBkcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChoIDwgMCkge1xyXG4gICAgICAgICAgICBoICs9IDE7XHJcbiAgICAgICAgfSBlbHNlIGlmIChoID4gMSkge1xyXG4gICAgICAgICAgICBoIC09IDE7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBbXHJcbiAgICAgICAgaCAqIDM2MCxcclxuICAgICAgICBzICogMTAwLFxyXG4gICAgICAgIHYgKiAxMDBcclxuICAgIF07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0IENNWUsgdG8gSFNWLlxyXG4gKiBAcGFyYW0gYyBDeWFuXHJcbiAqIEBwYXJhbSBtIE1hZ2VudGFcclxuICogQHBhcmFtIHkgWWVsbG93XHJcbiAqIEBwYXJhbSBrIEtleSAoQmxhY2spXHJcbiAqIEByZXR1cm4ge251bWJlcltdfSBIU1YgdmFsdWVzLlxyXG4gKi9cclxuZnVuY3Rpb24gY215a1RvSHN2KGMsIG0sIHksIGspIHtcclxuICAgIGMgLz0gMTAwO1xyXG4gICAgbSAvPSAxMDA7XHJcbiAgICB5IC89IDEwMDtcclxuICAgIGsgLz0gMTAwO1xyXG5cclxuICAgIGNvbnN0IHIgPSAoMSAtIG1pbigxLCBjICogKDEgLSBrKSArIGspKSAqIDI1NTtcclxuICAgIGNvbnN0IGcgPSAoMSAtIG1pbigxLCBtICogKDEgLSBrKSArIGspKSAqIDI1NTtcclxuICAgIGNvbnN0IGIgPSAoMSAtIG1pbigxLCB5ICogKDEgLSBrKSArIGspKSAqIDI1NTtcclxuXHJcbiAgICByZXR1cm4gWy4uLnJnYlRvSHN2KHIsIGcsIGIpXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbnZlcnQgSFNMIHRvIEhTVi5cclxuICogQHBhcmFtIGggSHVlXHJcbiAqIEBwYXJhbSBzIFNhdHVyYXRpb25cclxuICogQHBhcmFtIGwgTGlnaHRuZXNzXHJcbiAqIEByZXR1cm4ge251bWJlcltdfSBIU1YgdmFsdWVzLlxyXG4gKi9cclxuZnVuY3Rpb24gaHNsVG9Ic3YoaCwgcywgbCkge1xyXG4gICAgcyAvPSAxMDA7XHJcbiAgICBsIC89IDEwMDtcclxuICAgIHMgKj0gbCA8IDAuNSA/IGwgOiAxIC0gbDtcclxuXHJcbiAgICBjb25zdCBucyA9ICgyICogcyAvIChsICsgcykpICogMTAwO1xyXG4gICAgY29uc3QgdiA9IChsICsgcykgKiAxMDA7XHJcbiAgICByZXR1cm4gW2gsIGlzTmFOKG5zKSA/IDAgOiBucywgdl07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0IEhFWCB0byBIU1YuXHJcbiAqIEBwYXJhbSBoZXggSGV4YWRlY2ltYWwgc3RyaW5nIG9mIHJnYiBjb2xvcnMsIGNhbiBoYXZlIGxlbmd0aCAzIG9yIDYuXHJcbiAqIEByZXR1cm4ge251bWJlcltdfSBIU1YgdmFsdWVzLlxyXG4gKi9cclxuZnVuY3Rpb24gaGV4VG9Ic3YoaGV4KSB7XHJcbiAgICByZXR1cm4gcmdiVG9Ic3YoLi4uaGV4Lm1hdGNoKC8uezJ9L2cpLm1hcCh2ID0+IHBhcnNlSW50KHYsIDE2KSkpO1xyXG59XHJcblxyXG4vKipcclxuICogVHJ5J3MgdG8gcGFyc2UgYSBzdHJpbmcgd2hpY2ggcmVwcmVzZW50cyBhIGNvbG9yIHRvIGEgSFNWIGFycmF5LlxyXG4gKiBDdXJyZW50IHN1cHBvcnRlZCB0eXBlcyBhcmUgY215aywgcmdiYSwgaHNsYSBhbmQgaGV4YWRlY2ltYWwuXHJcbiAqIEBwYXJhbSBzdHJcclxuICogQHJldHVybiB7Kn1cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVRvSFNWQShzdHIpIHtcclxuXHJcbiAgICAvLyBDaGVjayBpZiBzdHJpbmcgaXMgYSBjb2xvci1uYW1lXHJcbiAgICBzdHIgPSBzdHIubWF0Y2goL15bYS16QS1aXSskLykgPyBzdGFuZGFyZGl6ZUNvbG9yKHN0cikgOiBzdHI7XHJcblxyXG4gICAgLy8gUmVndWxhciBleHByZXNzaW9ucyB0byBtYXRjaCBkaWZmZXJlbnQgdHlwZXMgb2YgY29sb3IgcmVwcmVzZW50aW9uXHJcbiAgICBjb25zdCByZWdleCA9IHtcclxuICAgICAgICBjbXlrOiAvXmNteWtbXFxEXSsoW1xcZC5dKylbXFxEXSsoW1xcZC5dKylbXFxEXSsoW1xcZC5dKylbXFxEXSsoW1xcZC5dKykvaSxcclxuICAgICAgICByZ2JhOiAvXigocmdiYSl8cmdiKVtcXERdKyhbXFxkLl0rKVtcXERdKyhbXFxkLl0rKVtcXERdKyhbXFxkLl0rKVtcXERdKj8oW1xcZC5dK3wkKS9pLFxyXG4gICAgICAgIGhzbGE6IC9eKChoc2xhKXxoc2wpW1xcRF0rKFtcXGQuXSspW1xcRF0rKFtcXGQuXSspW1xcRF0rKFtcXGQuXSspW1xcRF0qPyhbXFxkLl0rfCQpL2ksXHJcbiAgICAgICAgaHN2YTogL14oKGhzdmEpfGhzdilbXFxEXSsoW1xcZC5dKylbXFxEXSsoW1xcZC5dKylbXFxEXSsoW1xcZC5dKylbXFxEXSo/KFtcXGQuXSt8JCkvaSxcclxuICAgICAgICBoZXhhOiAvXiM/KChbXFxkQS1GYS1mXXszLDR9KXwoW1xcZEEtRmEtZl17Nn0pfChbXFxkQS1GYS1mXXs4fSkpJC9pXHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGFrZXMgYW4gQXJyYXkgb2YgYW55IHR5cGUsIGNvbnZlcnQgc3RyaW5ncyB3aGljaCByZXByZXNlbnRzXHJcbiAgICAgKiBhIG51bWJlciB0byBhIG51bWJlciBhbiBhbnl0aGluZyBlbHNlIHRvIHVuZGVmaW5lZC5cclxuICAgICAqIEBwYXJhbSBhcnJheVxyXG4gICAgICogQHJldHVybiB7Kn1cclxuICAgICAqL1xyXG4gICAgY29uc3QgbnVtYXJpemUgPSBhcnJheSA9PiBhcnJheS5tYXAodiA9PiAvXih8XFxkKylcXC5cXGQrfFxcZCskLy50ZXN0KHYpID8gTnVtYmVyKHYpIDogdW5kZWZpbmVkKTtcclxuXHJcbiAgICBsZXQgbWF0Y2g7XHJcbiAgICBpbnZhbGlkOiBmb3IgKGNvbnN0IHR5cGUgaW4gcmVnZXgpIHtcclxuXHJcbiAgICAgICAgLy8gQ2hlY2sgaWYgY3VycmVudCBzY2hlbWUgcGFzc2VkXHJcbiAgICAgICAgaWYgKCEobWF0Y2ggPSByZWdleFt0eXBlXS5leGVjKHN0cikpKSB7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gTWF0Y2hbMl0gZG9lcyBvbmx5IGNvbnRhaW4gYSB0cnVseSB2YWx1ZSBpZiByZ2JhLCBoc2xhLCBvciBoc2xhIGdvdCBtYXRjaGVkXHJcbiAgICAgICAgY29uc3QgYWxwaGFWYWxpZCA9IGEgPT4gKCEhbWF0Y2hbMl0gPT09ICh0eXBlb2YgYSA9PT0gJ251bWJlcicpKTtcclxuXHJcbiAgICAgICAgLy8gVHJ5IHRvIGNvbnZlcnRcclxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSAnY215ayc6IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IFssIGMsIG0sIHksIGtdID0gbnVtYXJpemUobWF0Y2gpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChjID4gMTAwIHx8IG0gPiAxMDAgfHwgeSA+IDEwMCB8fCBrID4gMTAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaW52YWxpZDtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge3ZhbHVlczogY215a1RvSHN2KGMsIG0sIHksIGspLCB0eXBlfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlICdyZ2JhJzoge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgWywgLCAsIHIsIGcsIGIsIGFdID0gbnVtYXJpemUobWF0Y2gpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChyID4gMjU1IHx8IGcgPiAyNTUgfHwgYiA+IDI1NSB8fCBhIDwgMCB8fCBhID4gMSB8fCAhYWxwaGFWYWxpZChhKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrIGludmFsaWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZXM6IFsuLi5yZ2JUb0hzdihyLCBnLCBiKSwgYV0sIGEsIHR5cGV9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgJ2hleGEnOiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgWywgaGV4XSA9IG1hdGNoO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChoZXgubGVuZ3RoID09PSA0IHx8IGhleC5sZW5ndGggPT09IDMpIHtcclxuICAgICAgICAgICAgICAgICAgICBoZXggPSBoZXguc3BsaXQoJycpLm1hcCh2ID0+IHYgKyB2KS5qb2luKCcnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCByYXcgPSBoZXguc3Vic3RyaW5nKDAsIDYpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGEgPSBoZXguc3Vic3RyaW5nKDYpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgMCAtIDI1NSB0byAwIC0gMSBmb3Igb3BhY2l0eVxyXG4gICAgICAgICAgICAgICAgYSA9IGEgPyAocGFyc2VJbnQoYSwgMTYpIC8gMjU1KSA6IHVuZGVmaW5lZDtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge3ZhbHVlczogWy4uLmhleFRvSHN2KHJhdyksIGFdLCBhLCB0eXBlfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlICdoc2xhJzoge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgWywgLCAsIGgsIHMsIGwsIGFdID0gbnVtYXJpemUobWF0Y2gpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChoID4gMzYwIHx8IHMgPiAxMDAgfHwgbCA+IDEwMCB8fCBhIDwgMCB8fCBhID4gMSB8fCAhYWxwaGFWYWxpZChhKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrIGludmFsaWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZXM6IFsuLi5oc2xUb0hzdihoLCBzLCBsKSwgYV0sIGEsIHR5cGV9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgJ2hzdmEnOiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBbLCAsICwgaCwgcywgdiwgYV0gPSBudW1hcml6ZShtYXRjaCk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGggPiAzNjAgfHwgcyA+IDEwMCB8fCB2ID4gMTAwIHx8IGEgPCAwIHx8IGEgPiAxIHx8ICFhbHBoYVZhbGlkKGEpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWsgaW52YWxpZDtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge3ZhbHVlczogW2gsIHMsIHYsIGFdLCBhLCB0eXBlfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge3ZhbHVlczogbnVsbCwgdHlwZTogbnVsbH07XHJcbn1cclxuIiwgImltcG9ydCB7aHN2VG9DbXlrLCBoc3ZUb0hleCwgaHN2VG9Ic2wsIGhzdlRvUmdifSBmcm9tICcuL2NvbG9yJztcclxuXHJcbi8qKlxyXG4gKiBTaW1wbGUgY2xhc3Mgd2hpY2ggaG9sZHMgdGhlIHByb3BlcnRpZXNcclxuICogb2YgdGhlIGNvbG9yIHJlcHJlc2VudGlvbiBtb2RlbCBoc2xhIChodWUgc2F0dXJhdGlvbiBsaWdodG5lc3MgYWxwaGEpXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gSFNWYUNvbG9yKGggPSAwLCBzID0gMCwgdiA9IDAsIGEgPSAxKSB7XHJcbiAgICBjb25zdCBtYXBwZXIgPSAob3JpZ2luYWwsIG5leHQpID0+IChwcmVjaXNpb24gPSAtMSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXh0KH5wcmVjaXNpb24gPyBvcmlnaW5hbC5tYXAodiA9PiBOdW1iZXIodi50b0ZpeGVkKHByZWNpc2lvbikpKSA6IG9yaWdpbmFsKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgdGhhdCA9IHtcclxuICAgICAgICBoLCBzLCB2LCBhLFxyXG5cclxuICAgICAgICB0b0hTVkEoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGhzdmEgPSBbdGhhdC5oLCB0aGF0LnMsIHRoYXQudiwgdGhhdC5hXTtcclxuICAgICAgICAgICAgaHN2YS50b1N0cmluZyA9IG1hcHBlcihoc3ZhLCBhcnIgPT4gYGhzdmEoJHthcnJbMF19LCAke2FyclsxXX0lLCAke2FyclsyXX0lLCAke3RoYXQuYX0pYCk7XHJcbiAgICAgICAgICAgIHJldHVybiBoc3ZhO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHRvSFNMQSgpIHtcclxuICAgICAgICAgICAgY29uc3QgaHNsYSA9IFsuLi5oc3ZUb0hzbCh0aGF0LmgsIHRoYXQucywgdGhhdC52KSwgdGhhdC5hXTtcclxuICAgICAgICAgICAgaHNsYS50b1N0cmluZyA9IG1hcHBlcihoc2xhLCBhcnIgPT4gYGhzbGEoJHthcnJbMF19LCAke2FyclsxXX0lLCAke2FyclsyXX0lLCAke3RoYXQuYX0pYCk7XHJcbiAgICAgICAgICAgIHJldHVybiBoc2xhO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHRvUkdCQSgpIHtcclxuICAgICAgICAgICAgY29uc3QgcmdiYSA9IFsuLi5oc3ZUb1JnYih0aGF0LmgsIHRoYXQucywgdGhhdC52KSwgdGhhdC5hXTtcclxuICAgICAgICAgICAgcmdiYS50b1N0cmluZyA9IG1hcHBlcihyZ2JhLCBhcnIgPT4gYHJnYmEoJHthcnJbMF19LCAke2FyclsxXX0sICR7YXJyWzJdfSwgJHt0aGF0LmF9KWApO1xyXG4gICAgICAgICAgICByZXR1cm4gcmdiYTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB0b0NNWUsoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNteWsgPSBoc3ZUb0NteWsodGhhdC5oLCB0aGF0LnMsIHRoYXQudik7XHJcbiAgICAgICAgICAgIGNteWsudG9TdHJpbmcgPSBtYXBwZXIoY215aywgYXJyID0+IGBjbXlrKCR7YXJyWzBdfSUsICR7YXJyWzFdfSUsICR7YXJyWzJdfSUsICR7YXJyWzNdfSUpYCk7XHJcbiAgICAgICAgICAgIHJldHVybiBjbXlrO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHRvSEVYQSgpIHtcclxuICAgICAgICAgICAgY29uc3QgaGV4ID0gaHN2VG9IZXgodGhhdC5oLCB0aGF0LnMsIHRoYXQudik7XHJcblxyXG4gICAgICAgICAgICAvLyBDaGVjayBpZiBhbHBoYSBjaGFubmVsIG1ha2Ugc2Vuc2UsIGNvbnZlcnQgaXQgdG8gMjU1IG51bWJlciBzcGFjZSwgY29udmVydFxyXG4gICAgICAgICAgICAvLyBUbyBoZXggYW5kIHBhZCBpdCB3aXRoIHplcm9zIGlmIG5lZWRldC5cclxuICAgICAgICAgICAgY29uc3QgYWxwaGEgPSB0aGF0LmEgPj0gMSA/ICcnIDogTnVtYmVyKCh0aGF0LmEgKiAyNTUpLnRvRml4ZWQoMCkpXHJcbiAgICAgICAgICAgICAgICAudG9TdHJpbmcoMTYpXHJcbiAgICAgICAgICAgICAgICAudG9VcHBlckNhc2UoKS5wYWRTdGFydCgyLCAnMCcpO1xyXG5cclxuICAgICAgICAgICAgYWxwaGEgJiYgaGV4LnB1c2goYWxwaGEpO1xyXG4gICAgICAgICAgICBoZXgudG9TdHJpbmcgPSAoKSA9PiBgIyR7aGV4LmpvaW4oJycpLnRvVXBwZXJDYXNlKCl9YDtcclxuICAgICAgICAgICAgcmV0dXJuIGhleDtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBjbG9uZTogKCkgPT4gSFNWYUNvbG9yKHRoYXQuaCwgdGhhdC5zLCB0aGF0LnYsIHRoYXQuYSlcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHRoYXQ7XHJcbn1cclxuIiwgImltcG9ydCAqIGFzIF8gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xyXG5cclxuY29uc3QgY2xhbXAgPSB2ID0+IE1hdGgubWF4KE1hdGgubWluKHYsIDEpLCAwKTtcclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTW92ZWFibGUob3B0KSB7XHJcblxyXG4gICAgY29uc3QgdGhhdCA9IHtcclxuXHJcbiAgICAgICAgLy8gQXNzaWduIGRlZmF1bHQgdmFsdWVzXHJcbiAgICAgICAgb3B0aW9uczogT2JqZWN0LmFzc2lnbih7XHJcbiAgICAgICAgICAgIGxvY2s6IG51bGwsXHJcbiAgICAgICAgICAgIG9uY2hhbmdlOiAoKSA9PiAwLFxyXG4gICAgICAgICAgICBvbnN0b3A6ICgpID0+IDBcclxuICAgICAgICB9LCBvcHQpLFxyXG5cclxuICAgICAgICBfa2V5Ym9hcmQoZSkge1xyXG4gICAgICAgICAgICBjb25zdCB7b3B0aW9uc30gPSB0aGF0O1xyXG4gICAgICAgICAgICBjb25zdCB7dHlwZSwga2V5fSA9IGU7XHJcblxyXG4gICAgICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIE1vdmFibGUgaXMgZm9jdXNlZCBhbmQgdGhlbiBtb3ZlIGl0IGJhc2VkIG9uIGFycm93IGtleSBpbnB1dHNcclxuICAgICAgICAgICAgLy8gRm9yIGltcHJvdmVkIGFjY2Vzc2liaWxpdHlcclxuICAgICAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IG9wdGlvbnMud3JhcHBlcikge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qge2xvY2t9ID0gdGhhdC5vcHRpb25zO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdXAgPSBrZXkgPT09ICdBcnJvd1VwJztcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0ga2V5ID09PSAnQXJyb3dSaWdodCc7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkb3duID0ga2V5ID09PSAnQXJyb3dEb3duJztcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBrZXkgPT09ICdBcnJvd0xlZnQnO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAna2V5ZG93bicgJiYgKHVwIHx8IHJpZ2h0IHx8IGRvd24gfHwgbGVmdCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgeG0gPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB5bSA9IDA7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2NrID09PSAndicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeG0gPSAodXAgfHwgcmlnaHQpID8gMSA6IC0xO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobG9jayA9PT0gJ2gnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHhtID0gKHVwIHx8IHJpZ2h0KSA/IC0xIDogMTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB5bSA9IHVwID8gLTEgOiAoZG93biA/IDEgOiAwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeG0gPSBsZWZ0ID8gLTEgOiAocmlnaHQgPyAxIDogMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGF0LnVwZGF0ZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhbXAodGhhdC5jYWNoZS54ICsgKDAuMDEgKiB4bSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFtcCh0aGF0LmNhY2hlLnkgKyAoMC4wMSAqIHltKSlcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5LnN0YXJ0c1dpdGgoJ0Fycm93JykpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGF0Lm9wdGlvbnMub25zdG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgX3RhcHN0YXJ0KGV2dCkge1xyXG4gICAgICAgICAgICBfLm9uKGRvY3VtZW50LCBbJ21vdXNldXAnLCAndG91Y2hlbmQnLCAndG91Y2hjYW5jZWwnXSwgdGhhdC5fdGFwc3RvcCk7XHJcbiAgICAgICAgICAgIF8ub24oZG9jdW1lbnQsIFsnbW91c2Vtb3ZlJywgJ3RvdWNobW92ZSddLCB0aGF0Ll90YXBtb3ZlKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChldnQuY2FuY2VsYWJsZSkge1xyXG4gICAgICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIFRyaWdnZXJcclxuICAgICAgICAgICAgdGhhdC5fdGFwbW92ZShldnQpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIF90YXBtb3ZlKGV2dCkge1xyXG4gICAgICAgICAgICBjb25zdCB7b3B0aW9ucywgY2FjaGV9ID0gdGhhdDtcclxuICAgICAgICAgICAgY29uc3Qge2xvY2ssIGVsZW1lbnQsIHdyYXBwZXJ9ID0gb3B0aW9ucztcclxuICAgICAgICAgICAgY29uc3QgYiA9IHdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgICAgICAgICBsZXQgeCA9IDAsIHkgPSAwO1xyXG4gICAgICAgICAgICBpZiAoZXZ0KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0b3VjaCA9IGV2dCAmJiBldnQudG91Y2hlcyAmJiBldnQudG91Y2hlc1swXTtcclxuICAgICAgICAgICAgICAgIHggPSBldnQgPyAodG91Y2ggfHwgZXZ0KS5jbGllbnRYIDogMDtcclxuICAgICAgICAgICAgICAgIHkgPSBldnQgPyAodG91Y2ggfHwgZXZ0KS5jbGllbnRZIDogMDtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBSZXNldCB0byBib3VuZHNcclxuICAgICAgICAgICAgICAgIGlmICh4IDwgYi5sZWZ0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgeCA9IGIubGVmdDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoeCA+IGIubGVmdCArIGIud2lkdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICB4ID0gYi5sZWZ0ICsgYi53aWR0aDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh5IDwgYi50b3ApIHtcclxuICAgICAgICAgICAgICAgICAgICB5ID0gYi50b3A7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHkgPiBiLnRvcCArIGIuaGVpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgeSA9IGIudG9wICsgYi5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gTm9ybWFsaXplXHJcbiAgICAgICAgICAgICAgICB4IC09IGIubGVmdDtcclxuICAgICAgICAgICAgICAgIHkgLT0gYi50b3A7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2FjaGUpIHtcclxuICAgICAgICAgICAgICAgIHggPSBjYWNoZS54ICogYi53aWR0aDtcclxuICAgICAgICAgICAgICAgIHkgPSBjYWNoZS55ICogYi5oZWlnaHQ7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChsb2NrICE9PSAnaCcpIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUubGVmdCA9IGBjYWxjKCR7eCAvIGIud2lkdGggKiAxMDB9JSAtICR7ZWxlbWVudC5vZmZzZXRXaWR0aCAvIDJ9cHgpYDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGxvY2sgIT09ICd2Jykge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS50b3AgPSBgY2FsYygke3kgLyBiLmhlaWdodCAqIDEwMH0lIC0gJHtlbGVtZW50Lm9mZnNldEhlaWdodCAvIDJ9cHgpYDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhhdC5jYWNoZSA9IHt4OiB4IC8gYi53aWR0aCwgeTogeSAvIGIuaGVpZ2h0fTtcclxuICAgICAgICAgICAgY29uc3QgY3ggPSBjbGFtcCh4IC8gYi53aWR0aCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGN5ID0gY2xhbXAoeSAvIGIuaGVpZ2h0KTtcclxuXHJcbiAgICAgICAgICAgIHN3aXRjaCAobG9jaykge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAndic6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMub25jaGFuZ2UoY3gpO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnaCc6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMub25jaGFuZ2UoY3kpO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5vbmNoYW5nZShjeCwgY3kpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgX3RhcHN0b3AoKSB7XHJcbiAgICAgICAgICAgIHRoYXQub3B0aW9ucy5vbnN0b3AoKTtcclxuICAgICAgICAgICAgXy5vZmYoZG9jdW1lbnQsIFsnbW91c2V1cCcsICd0b3VjaGVuZCcsICd0b3VjaGNhbmNlbCddLCB0aGF0Ll90YXBzdG9wKTtcclxuICAgICAgICAgICAgXy5vZmYoZG9jdW1lbnQsIFsnbW91c2Vtb3ZlJywgJ3RvdWNobW92ZSddLCB0aGF0Ll90YXBtb3ZlKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB0cmlnZ2VyKCkge1xyXG4gICAgICAgICAgICB0aGF0Ll90YXBtb3ZlKCk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgdXBkYXRlKHggPSAwLCB5ID0gMCkge1xyXG4gICAgICAgICAgICBjb25zdCB7bGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0fSA9IHRoYXQub3B0aW9ucy53cmFwcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5sb2NrID09PSAnaCcpIHtcclxuICAgICAgICAgICAgICAgIHkgPSB4O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGF0Ll90YXBtb3ZlKHtcclxuICAgICAgICAgICAgICAgIGNsaWVudFg6IGxlZnQgKyB3aWR0aCAqIHgsXHJcbiAgICAgICAgICAgICAgICBjbGllbnRZOiB0b3AgKyBoZWlnaHQgKiB5XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGRlc3Ryb3koKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHtvcHRpb25zLCBfdGFwc3RhcnQsIF9rZXlib2FyZH0gPSB0aGF0O1xyXG4gICAgICAgICAgICBfLm9mZihkb2N1bWVudCwgWydrZXlkb3duJywgJ2tleXVwJ10sIF9rZXlib2FyZCk7XHJcbiAgICAgICAgICAgIF8ub2ZmKFtvcHRpb25zLndyYXBwZXIsIG9wdGlvbnMuZWxlbWVudF0sICdtb3VzZWRvd24nLCBfdGFwc3RhcnQpO1xyXG4gICAgICAgICAgICBfLm9mZihbb3B0aW9ucy53cmFwcGVyLCBvcHRpb25zLmVsZW1lbnRdLCAndG91Y2hzdGFydCcsIF90YXBzdGFydCwge1xyXG4gICAgICAgICAgICAgICAgcGFzc2l2ZTogZmFsc2VcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBJbml0aWxpemVcclxuICAgIGNvbnN0IHtvcHRpb25zLCBfdGFwc3RhcnQsIF9rZXlib2FyZH0gPSB0aGF0O1xyXG4gICAgXy5vbihbb3B0aW9ucy53cmFwcGVyLCBvcHRpb25zLmVsZW1lbnRdLCAnbW91c2Vkb3duJywgX3RhcHN0YXJ0KTtcclxuICAgIF8ub24oW29wdGlvbnMud3JhcHBlciwgb3B0aW9ucy5lbGVtZW50XSwgJ3RvdWNoc3RhcnQnLCBfdGFwc3RhcnQsIHtcclxuICAgICAgICBwYXNzaXZlOiBmYWxzZVxyXG4gICAgfSk7XHJcblxyXG4gICAgXy5vbihkb2N1bWVudCwgWydrZXlkb3duJywgJ2tleXVwJ10sIF9rZXlib2FyZCk7XHJcblxyXG4gICAgcmV0dXJuIHRoYXQ7XHJcbn1cclxuIiwgImltcG9ydCAqIGFzIF8gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTZWxlY3RhYmxlKG9wdCA9IHt9KSB7XG4gICAgb3B0ID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICAgIG9uY2hhbmdlOiAoKSA9PiAwLFxuICAgICAgICBjbGFzc05hbWU6ICcnLFxuICAgICAgICBlbGVtZW50czogW11cbiAgICB9LCBvcHQpO1xuXG4gICAgY29uc3Qgb25UYXAgPSBfLm9uKG9wdC5lbGVtZW50cywgJ2NsaWNrJywgZXZ0ID0+IHtcbiAgICAgICAgb3B0LmVsZW1lbnRzLmZvckVhY2goZSA9PlxuICAgICAgICAgICAgZS5jbGFzc0xpc3RbZXZ0LnRhcmdldCA9PT0gZSA/ICdhZGQnIDogJ3JlbW92ZSddKG9wdC5jbGFzc05hbWUpXG4gICAgICAgICk7XG5cbiAgICAgICAgb3B0Lm9uY2hhbmdlKGV2dCk7XG5cbiAgICAgICAgLy8gRml4IGZvciBodHRwczovL2dpdGh1Yi5jb20vU2ltb253ZXAvcGlja3IvaXNzdWVzLzI0M1xuICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBkZXN0cm95OiAoKSA9PiBfLm9mZiguLi5vblRhcClcbiAgICB9O1xufVxuIiwgImltcG9ydCAqIGFzIF8gZnJvbSAnLi91dGlscy91dGlscyc7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBpbnN0YW5jZSA9PiB7XHJcblxyXG4gICAgY29uc3Qge1xyXG4gICAgICAgIGNvbXBvbmVudHMsXHJcbiAgICAgICAgdXNlQXNCdXR0b24sXHJcbiAgICAgICAgaW5saW5lLFxyXG4gICAgICAgIGFwcENsYXNzLFxyXG4gICAgICAgIHRoZW1lLFxyXG4gICAgICAgIGxvY2tPcGFjaXR5XHJcbiAgICB9ID0gaW5zdGFuY2Uub3B0aW9ucztcclxuXHJcbiAgICAvLyBVdGlsc1xyXG4gICAgY29uc3QgaGlkZGVuID0gY29uID0+IGNvbiA/ICcnIDogJ3N0eWxlPVwiZGlzcGxheTpub25lXCIgaGlkZGVuJztcclxuICAgIGNvbnN0IHQgPSBzdHIgPT4gaW5zdGFuY2UuX3Qoc3RyKTtcclxuXHJcbiAgICBjb25zdCByb290ID0gXy5jcmVhdGVGcm9tVGVtcGxhdGUoYFxyXG4gICAgICA8ZGl2IDpyZWY9XCJyb290XCIgY2xhc3M9XCJwaWNrclwiPlxyXG5cclxuICAgICAgICAke3VzZUFzQnV0dG9uID8gJycgOiAnPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgOnJlZj1cImJ1dHRvblwiIGNsYXNzPVwicGNyLWJ1dHRvblwiPjwvYnV0dG9uPid9XHJcblxyXG4gICAgICAgIDxkaXYgOnJlZj1cImFwcFwiIGNsYXNzPVwicGNyLWFwcCAke2FwcENsYXNzIHx8ICcnfVwiIGRhdGEtdGhlbWU9XCIke3RoZW1lfVwiICR7aW5saW5lID8gJ3N0eWxlPVwicG9zaXRpb246IHVuc2V0XCInIDogJyd9IGFyaWEtbGFiZWw9XCIke3QoJ3VpOmRpYWxvZycsICdjb2xvciBwaWNrZXIgZGlhbG9nJyl9XCIgcm9sZT1cIndpbmRvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBjci1zZWxlY3Rpb25cIiAke2hpZGRlbihjb21wb25lbnRzLnBhbGV0dGUpfT5cclxuICAgICAgICAgICAgPGRpdiA6b2JqPVwicHJldmlld1wiIGNsYXNzPVwicGNyLWNvbG9yLXByZXZpZXdcIiAke2hpZGRlbihjb21wb25lbnRzLnByZXZpZXcpfT5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiA6cmVmPVwibGFzdENvbG9yXCIgY2xhc3M9XCJwY3ItbGFzdC1jb2xvclwiIGFyaWEtbGFiZWw9XCIke3QoJ2J0bjpsYXN0LWNvbG9yJyl9XCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGRpdiA6cmVmPVwiY3VycmVudENvbG9yXCIgY2xhc3M9XCJwY3ItY3VycmVudC1jb2xvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgOm9iaj1cInBhbGV0dGVcIiBjbGFzcz1cInBjci1jb2xvci1wYWxldHRlXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiA6cmVmPVwicGlja2VyXCIgY2xhc3M9XCJwY3ItcGlja2VyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiA6cmVmPVwicGFsZXR0ZVwiIGNsYXNzPVwicGNyLXBhbGV0dGVcIiB0YWJpbmRleD1cIjBcIiBhcmlhLWxhYmVsPVwiJHt0KCdhcmlhOnBhbGV0dGUnKX1cIiByb2xlPVwibGlzdGJveFwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgOm9iaj1cImh1ZVwiIGNsYXNzPVwicGNyLWNvbG9yLWNob29zZXJcIiAke2hpZGRlbihjb21wb25lbnRzLmh1ZSl9PlxyXG4gICAgICAgICAgICAgIDxkaXYgOnJlZj1cInBpY2tlclwiIGNsYXNzPVwicGNyLXBpY2tlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgOnJlZj1cInNsaWRlclwiIGNsYXNzPVwicGNyLWh1ZSBwY3Itc2xpZGVyXCIgdGFiaW5kZXg9XCIwXCIgYXJpYS1sYWJlbD1cIiR7dCgnYXJpYTpodWUnKX1cIiByb2xlPVwic2xpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiA6b2JqPVwib3BhY2l0eVwiIGNsYXNzPVwicGNyLWNvbG9yLW9wYWNpdHlcIiAke2hpZGRlbihjb21wb25lbnRzLm9wYWNpdHkpfT5cclxuICAgICAgICAgICAgICA8ZGl2IDpyZWY9XCJwaWNrZXJcIiBjbGFzcz1cInBjci1waWNrZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IDpyZWY9XCJzbGlkZXJcIiBjbGFzcz1cInBjci1vcGFjaXR5IHBjci1zbGlkZXJcIiB0YWJpbmRleD1cIjBcIiBhcmlhLWxhYmVsPVwiJHt0KCdhcmlhOm9wYWNpdHknLCAnb3BhY2l0eSBzZWxlY3Rpb24gc2xpZGVyJyl9XCIgcm9sZT1cInNsaWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwY3Itc3dhdGNoZXMgJHtjb21wb25lbnRzLnBhbGV0dGUgPyAnJyA6ICdwY3ItbGFzdCd9XCIgOnJlZj1cInN3YXRjaGVzXCI+PC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiA6b2JqPVwiaW50ZXJhY3Rpb25cIiBjbGFzcz1cInBjci1pbnRlcmFjdGlvblwiICR7aGlkZGVuKE9iamVjdC5rZXlzKGNvbXBvbmVudHMuaW50ZXJhY3Rpb24pLmxlbmd0aCl9PlxyXG4gICAgICAgICAgICA8aW5wdXQgOnJlZj1cInJlc3VsdFwiIGNsYXNzPVwicGNyLXJlc3VsdFwiIHR5cGU9XCJ0ZXh0XCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgJHtoaWRkZW4oY29tcG9uZW50cy5pbnRlcmFjdGlvbi5pbnB1dCl9IGFyaWEtbGFiZWw9XCIke3QoJ2FyaWE6aW5wdXQnLCAnY29sb3IgaW5wdXQgZmllbGQnKX1cIj5cclxuXHJcbiAgICAgICAgICAgIDxpbnB1dCA6YXJyPVwib3B0aW9uc1wiIGNsYXNzPVwicGNyLXR5cGVcIiBkYXRhLXR5cGU9XCJIRVhBXCIgdmFsdWU9XCIke2xvY2tPcGFjaXR5ID8gJ0hFWCcgOiAnSEVYQSd9XCIgdHlwZT1cImJ1dHRvblwiICR7aGlkZGVuKGNvbXBvbmVudHMuaW50ZXJhY3Rpb24uaGV4KX0+XHJcbiAgICAgICAgICAgIDxpbnB1dCA6YXJyPVwib3B0aW9uc1wiIGNsYXNzPVwicGNyLXR5cGVcIiBkYXRhLXR5cGU9XCJSR0JBXCIgdmFsdWU9XCIke2xvY2tPcGFjaXR5ID8gJ1JHQicgOiAnUkdCQSd9XCIgdHlwZT1cImJ1dHRvblwiICR7aGlkZGVuKGNvbXBvbmVudHMuaW50ZXJhY3Rpb24ucmdiYSl9PlxyXG4gICAgICAgICAgICA8aW5wdXQgOmFycj1cIm9wdGlvbnNcIiBjbGFzcz1cInBjci10eXBlXCIgZGF0YS10eXBlPVwiSFNMQVwiIHZhbHVlPVwiJHtsb2NrT3BhY2l0eSA/ICdIU0wnIDogJ0hTTEEnfVwiIHR5cGU9XCJidXR0b25cIiAke2hpZGRlbihjb21wb25lbnRzLmludGVyYWN0aW9uLmhzbGEpfT5cclxuICAgICAgICAgICAgPGlucHV0IDphcnI9XCJvcHRpb25zXCIgY2xhc3M9XCJwY3ItdHlwZVwiIGRhdGEtdHlwZT1cIkhTVkFcIiB2YWx1ZT1cIiR7bG9ja09wYWNpdHkgPyAnSFNWJyA6ICdIU1ZBJ31cIiB0eXBlPVwiYnV0dG9uXCIgJHtoaWRkZW4oY29tcG9uZW50cy5pbnRlcmFjdGlvbi5oc3ZhKX0+XHJcbiAgICAgICAgICAgIDxpbnB1dCA6YXJyPVwib3B0aW9uc1wiIGNsYXNzPVwicGNyLXR5cGVcIiBkYXRhLXR5cGU9XCJDTVlLXCIgdmFsdWU9XCJDTVlLXCIgdHlwZT1cImJ1dHRvblwiICR7aGlkZGVuKGNvbXBvbmVudHMuaW50ZXJhY3Rpb24uY215ayl9PlxyXG5cclxuICAgICAgICAgICAgPGlucHV0IDpyZWY9XCJzYXZlXCIgY2xhc3M9XCJwY3Itc2F2ZVwiIHZhbHVlPVwiJHt0KCdidG46c2F2ZScpfVwiIHR5cGU9XCJidXR0b25cIiAke2hpZGRlbihjb21wb25lbnRzLmludGVyYWN0aW9uLnNhdmUpfSBhcmlhLWxhYmVsPVwiJHt0KCdhcmlhOmJ0bjpzYXZlJyl9XCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCA6cmVmPVwiY2FuY2VsXCIgY2xhc3M9XCJwY3ItY2FuY2VsXCIgdmFsdWU9XCIke3QoJ2J0bjpjYW5jZWwnKX1cIiB0eXBlPVwiYnV0dG9uXCIgJHtoaWRkZW4oY29tcG9uZW50cy5pbnRlcmFjdGlvbi5jYW5jZWwpfSBhcmlhLWxhYmVsPVwiJHt0KCdhcmlhOmJ0bjpjYW5jZWwnKX1cIj5cclxuICAgICAgICAgICAgPGlucHV0IDpyZWY9XCJjbGVhclwiIGNsYXNzPVwicGNyLWNsZWFyXCIgdmFsdWU9XCIke3QoJ2J0bjpjbGVhcicpfVwiIHR5cGU9XCJidXR0b25cIiAke2hpZGRlbihjb21wb25lbnRzLmludGVyYWN0aW9uLmNsZWFyKX0gYXJpYS1sYWJlbD1cIiR7dCgnYXJpYTpidG46Y2xlYXInKX1cIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIGApO1xyXG5cclxuICAgIGNvbnN0IGludCA9IHJvb3QuaW50ZXJhY3Rpb247XHJcblxyXG4gICAgLy8gU2VsZWN0IG9wdGlvbiB3aGljaCBpcyBub3QgaGlkZGVuXHJcbiAgICBpbnQub3B0aW9ucy5maW5kKG8gPT4gIW8uaGlkZGVuICYmICFvLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpKTtcclxuXHJcbiAgICAvLyBBcHBlbmQgbWV0aG9kIHRvIGZpbmQgY3VycmVudGx5IGFjdGl2ZSBvcHRpb25cclxuICAgIGludC50eXBlID0gKCkgPT4gaW50Lm9wdGlvbnMuZmluZChlID0+IGUuY2xhc3NMaXN0LmNvbnRhaW5zKCdhY3RpdmUnKSk7XHJcbiAgICByZXR1cm4gcm9vdDtcclxufTtcclxuIiwgInR5cGUgRGlyZWN0aW9uID0gJ3RvcCcgfCAnbGVmdCcgfCAnYm90dG9tJyB8ICdyaWdodCc7XG5cbmV4cG9ydCB0eXBlIFZhcmlhbnRGbGlwT3JkZXIgPSB7XG4gICAgc3RhcnQ6IHN0cmluZztcbiAgICBtaWRkbGU6IHN0cmluZztcbiAgICBlbmQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFBvc2l0aW9uRmxpcE9yZGVyID0ge1xuICAgIHRvcDogc3RyaW5nO1xuICAgIHJpZ2h0OiBzdHJpbmc7XG4gICAgYm90dG9tOiBzdHJpbmc7XG4gICAgbGVmdDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgTmFub1BvcFBvc2l0aW9uID1cbiAgICAndG9wLXN0YXJ0JyB8ICd0b3AtbWlkZGxlJyB8ICd0b3AtZW5kJyB8XG4gICAgJ2xlZnQtc3RhcnQnIHwgJ2xlZnQtbWlkZGxlJyB8ICdsZWZ0LWVuZCcgfFxuICAgICdyaWdodC1zdGFydCcgfCAncmlnaHQtbWlkZGxlJyB8ICdyaWdodC1lbmQnIHxcbiAgICAnYm90dG9tLXN0YXJ0JyB8ICdib3R0b20tbWlkZGxlJyB8ICdib3R0b20tZW5kJyB8IERpcmVjdGlvbjtcblxuZXhwb3J0IHR5cGUgTmFub1BvcE9wdGlvbnMgPSB7XG4gICAgY29udGFpbmVyOiBET01SZWN0O1xuICAgIHBvc2l0aW9uOiBOYW5vUG9wUG9zaXRpb247XG4gICAgdmFyaWFudEZsaXBPcmRlcjogVmFyaWFudEZsaXBPcmRlcjtcbiAgICBwb3NpdGlvbkZsaXBPcmRlcjogUG9zaXRpb25GbGlwT3JkZXI7XG4gICAgbWFyZ2luOiBudW1iZXI7XG4gICAgcmVmZXJlbmNlPzogSFRNTEVsZW1lbnQ7XG4gICAgcG9wcGVyPzogSFRNTEVsZW1lbnQ7XG59O1xuXG50eXBlIEF2YWlsYWJsZVBvc2l0aW9ucyA9IHtcbiAgICB0OiBudW1iZXI7XG4gICAgYjogbnVtYmVyO1xuICAgIGw6IG51bWJlcjtcbiAgICByOiBudW1iZXI7XG59O1xuXG50eXBlIEF2YWlsYWJsZVZhcmlhbnRzID0ge1xuICAgIHZzOiBudW1iZXI7XG4gICAgdm06IG51bWJlcjtcbiAgICB2ZTogbnVtYmVyO1xuICAgIGhzOiBudW1iZXI7XG4gICAgaG06IG51bWJlcjtcbiAgICBoZTogbnVtYmVyO1xufTtcblxudHlwZSBQb3NpdGlvblBhaXJzID0gW0RpcmVjdGlvbiwgRGlyZWN0aW9uXTtcbmV4cG9ydCB0eXBlIFBvc2l0aW9uTWF0Y2ggPSAndHMnIHwgJ3RtJyB8ICd0ZScgfCAnYnMnIHwgJ2JtJyB8ICdiZScgfCAnbHMnIHwgJ2xtJyB8ICdsZScgfCAncnMnIHwgJ3JtJyB8ICdyZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmFub1BvcCB7XG4gICAgdXBkYXRlKHVwZGF0ZWRPcHRpb25zPzogUGFydGlhbDxOYW5vUG9wT3B0aW9ucz4pOiBQb3NpdGlvbk1hdGNoIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOYW5vUG9wQ29uc3RydWN0b3Ige1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHJlZmVyZW5jZSBSZWZlcmVuY2UgZWxlbWVudFxuICAgICAqIEBwYXJhbSBwb3BwZXIgQWN0dWFsIHBvcHBlciBlbGVtZW50XG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgb3B0aW9uc1xuICAgICAqL1xuICAgIChyZWZlcmVuY2U6IEhUTUxFbGVtZW50LCBwb3BwZXI6IEhUTUxFbGVtZW50LCBvcHRpb25zPzogUGFydGlhbDxOYW5vUG9wT3B0aW9ucz4pOiBOYW5vUG9wO1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIG9wdGlvbnMgUGFydGlhbCBvcHRpb25zIHdoaWNoIGdldCBtZXJnZWQgd2l0aCB0aGUgY3VycmVudCBvbmVcbiAgICAgKi9cbiAgICAob3B0aW9ucz86IFBhcnRpYWw8TmFub1BvcE9wdGlvbnM+KTogTmFub1BvcDtcbn1cblxuLy8gRXhwb3J0IGN1cnJlbnQgdmVyc2lvblxuZXhwb3J0IGNvbnN0IHZlcnNpb24gPSBWRVJTSU9OO1xuXG4vLyBFeHBvcnQgZGVmYXVsdFxuZXhwb3J0IGNvbnN0IGRlZmF1bHRzID0ge1xuICAgIHZhcmlhbnRGbGlwT3JkZXI6IHtzdGFydDogJ3NtZScsIG1pZGRsZTogJ21zZScsIGVuZDogJ2Vtcyd9LFxuICAgIHBvc2l0aW9uRmxpcE9yZGVyOiB7dG9wOiAndGJybCcsIHJpZ2h0OiAncmx0YicsIGJvdHRvbTogJ2J0cmwnLCBsZWZ0OiAnbHJidCd9LFxuICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcbiAgICBtYXJnaW46IDhcbn07XG5cbi8qKlxuICogUmVwb3NpdGlvbnMgYW4gZWxlbWVudCBvbmNlIHVzaW5nIHRoZSBwcm92aWRlZCBvcHRpb25zIGFuZCBlbGVtZW50cy5cbiAqIEBwYXJhbSByZWZlcmVuY2UgUmVmZXJlbmNlIGVsZW1lbnRcbiAqIEBwYXJhbSBwb3BwZXIgUG9wcGVyIGVsZW1lbnRcbiAqIEBwYXJhbSBvcHQgT3B0aW9uYWwsIGFkZGl0aW9uYWwgb3B0aW9uc1xuICovXG5leHBvcnQgY29uc3QgcmVwb3NpdGlvbiA9IChcbiAgICByZWZlcmVuY2U6IEhUTUxFbGVtZW50LFxuICAgIHBvcHBlcjogSFRNTEVsZW1lbnQsXG4gICAgb3B0PzogUGFydGlhbDxOYW5vUG9wT3B0aW9ucz5cbik6IFBvc2l0aW9uTWF0Y2ggfCBudWxsID0+IHtcbiAgICBjb25zdCB7XG4gICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgbWFyZ2luLFxuICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgdmFyaWFudEZsaXBPcmRlcixcbiAgICAgICAgcG9zaXRpb25GbGlwT3JkZXJcbiAgICB9ID0ge1xuICAgICAgICBjb250YWluZXI6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgICAgLi4uZGVmYXVsdHMsXG4gICAgICAgIC4uLm9wdFxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBSZXNldCBwb3NpdGlvbiB0byByZXNvbHZlIHZpZXdwb3J0XG4gICAgICogU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9wb3NpdGlvbiNmaXhlZFxuICAgICAqL1xuICAgIGNvbnN0IHtsZWZ0OiBvcmlnaW5hbExlZnQsIHRvcDogb3JpZ2luYWxUb3B9ID0gcG9wcGVyLnN0eWxlO1xuICAgIHBvcHBlci5zdHlsZS5sZWZ0ID0gJzAnO1xuICAgIHBvcHBlci5zdHlsZS50b3AgPSAnMCc7XG5cbiAgICBjb25zdCByZWZCb3ggPSByZWZlcmVuY2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgcG9wQm94ID0gcG9wcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgLyoqXG4gICAgICogSG9sZHMgY29vcmRpbmF0ZXMgb2YgdG9wLCBsZWZ0LCBib3R0b20gYW5kIHJpZ2h0IGFsaWdubWVudFxuICAgICAqL1xuICAgIGNvbnN0IHBvc2l0aW9uU3RvcmU6IEF2YWlsYWJsZVBvc2l0aW9ucyA9IHtcbiAgICAgICAgdDogcmVmQm94LnRvcCAtIHBvcEJveC5oZWlnaHQgLSBtYXJnaW4sXG4gICAgICAgIGI6IHJlZkJveC5ib3R0b20gKyBtYXJnaW4sXG4gICAgICAgIHI6IHJlZkJveC5yaWdodCArIG1hcmdpbixcbiAgICAgICAgbDogcmVmQm94LmxlZnQgLSBwb3BCb3gud2lkdGggLSBtYXJnaW5cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogSG9sZHMgY29ycmVzcG9uZGluZyB2YXJpYW50cyAoc3RhcnQsIG1pZGRsZSwgZW5kKS5cbiAgICAgKiBUaGUgdmFsdWVzIGRlcGVuZCBvbiBob3Jpem9udGFsIC8gdmVydGljYWwgb3JpZW50YXRpb25cbiAgICAgKi9cbiAgICBjb25zdCB2YXJpYW50U3RvcmU6IEF2YWlsYWJsZVZhcmlhbnRzID0ge1xuICAgICAgICB2czogcmVmQm94LmxlZnQsXG4gICAgICAgIHZtOiByZWZCb3gubGVmdCArIHJlZkJveC53aWR0aCAvIDIgKyAtcG9wQm94LndpZHRoIC8gMixcbiAgICAgICAgdmU6IHJlZkJveC5sZWZ0ICsgcmVmQm94LndpZHRoIC0gcG9wQm94LndpZHRoLFxuICAgICAgICBoczogcmVmQm94LnRvcCxcbiAgICAgICAgaG06IHJlZkJveC5ib3R0b20gLSByZWZCb3guaGVpZ2h0IC8gMiAtIHBvcEJveC5oZWlnaHQgLyAyLFxuICAgICAgICBoZTogcmVmQm94LmJvdHRvbSAtIHBvcEJveC5oZWlnaHRcbiAgICB9O1xuXG4gICAgLy8gRXh0cmFjdCBwb3NpdGlvbiBhbmQgdmFyaWFudFxuICAgIC8vIFRvcC1zdGFydCAtPiB0b3AgaXMgXCJwb3NpdGlvblwiIGFuZCBcInN0YXJ0XCIgaXMgdGhlIHZhcmlhbnRcbiAgICBjb25zdCBbcG9zS2V5LCB2YXJLZXkgPSAnbWlkZGxlJ10gPSBwb3NpdGlvbi5zcGxpdCgnLScpO1xuICAgIGNvbnN0IHBvc2l0aW9ucyA9IHBvc2l0aW9uRmxpcE9yZGVyW3Bvc0tleSBhcyBrZXlvZiBQb3NpdGlvbkZsaXBPcmRlcl07XG4gICAgY29uc3QgdmFyaWFudHMgPSB2YXJpYW50RmxpcE9yZGVyW3ZhcktleSBhcyBrZXlvZiBWYXJpYW50RmxpcE9yZGVyXTtcblxuICAgIC8vIFRyeSBvdXQgYWxsIHBvc3NpYmxlIGNvbWJpbmF0aW9ucywgc3RhcnRpbmcgd2l0aCB0aGUgcHJlZmVycmVkIG9uZS5cbiAgICBjb25zdCB7dG9wLCBsZWZ0LCBib3R0b20sIHJpZ2h0fSA9IGNvbnRhaW5lcjtcblxuICAgIGZvciAoY29uc3QgcCBvZiBwb3NpdGlvbnMpIHtcbiAgICAgICAgY29uc3QgdmVydGljYWwgPSAocCA9PT0gJ3QnIHx8IHAgPT09ICdiJyk7XG5cbiAgICAgICAgLy8gVGhlIHBvc2l0aW9uLXZhbHVlXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uVmFsID0gcG9zaXRpb25TdG9yZVtwIGFzIGtleW9mIEF2YWlsYWJsZVBvc2l0aW9uc107XG5cbiAgICAgICAgLy8gV2hpY2ggcHJvcGVydHkgaGFzIHRvIGJlIGNoYW5nZXMuXG4gICAgICAgIGNvbnN0IFtwb3NpdGlvbktleSwgdmFyaWFudEtleV0gPSAodmVydGljYWwgPyBbJ3RvcCcsICdsZWZ0J10gOiBbJ2xlZnQnLCAndG9wJ10pIGFzIFBvc2l0aW9uUGFpcnM7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIGJveCByZWZlcnMgdG8gdGhlIHNpemUgb2YgdGhlIHBvcHBlciBlbGVtZW50LiBEZXBlbmRpbmcgb24gdGhlIG9yaWVudGF0aW9uIHRoaXMgaXMgd2lkdGggb3IgaGVpZ2h0LlxuICAgICAgICAgKiBUaGUgbGltaXQgaXMgdGhlIGNvcnJlc3BvbmRpbmcsIG1heGltdW0gdmFsdWUgZm9yIHRoaXMgcG9zaXRpb24uXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBbcG9zaXRpb25TaXplLCB2YXJpYW50U2l6ZV0gPSB2ZXJ0aWNhbCA/IFtwb3BCb3guaGVpZ2h0LCBwb3BCb3gud2lkdGhdIDogW3BvcEJveC53aWR0aCwgcG9wQm94LmhlaWdodF07XG4gICAgICAgIGNvbnN0IFtwb3NpdGlvbk1heGltdW0sIHZhcmlhbnRNYXhpbXVtXSA9IHZlcnRpY2FsID8gW2JvdHRvbSwgcmlnaHRdIDogW3JpZ2h0LCBib3R0b21dO1xuICAgICAgICBjb25zdCBbcG9zaXRpb25NaW5pbXVtLCB2YXJpYW50TWluaW11bV0gPSB2ZXJ0aWNhbCA/IFt0b3AsIGxlZnRdIDogW2xlZnQsIHRvcF07XG5cbiAgICAgICAgLy8gU2tpcCBwcmUtY2xpcHBlZCB2YWx1ZXNcbiAgICAgICAgaWYgKHBvc2l0aW9uVmFsIDwgcG9zaXRpb25NaW5pbXVtIHx8IChwb3NpdGlvblZhbCArIHBvc2l0aW9uU2l6ZSkgPiBwb3NpdGlvbk1heGltdW0pIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCB2IG9mIHZhcmlhbnRzKSB7XG5cbiAgICAgICAgICAgIC8vIFRoZSBwb3NpdGlvbi12YWx1ZSwgdGhlIHJlbGF0ZWQgc2l6ZSB2YWx1ZSBvZiB0aGUgcG9wcGVyIGFuZCB0aGUgbGltaXRcbiAgICAgICAgICAgIGNvbnN0IHZhcmlhbnRWYWwgPSB2YXJpYW50U3RvcmVbKCh2ZXJ0aWNhbCA/ICd2JyA6ICdoJykgKyB2KSBhcyBrZXlvZiBBdmFpbGFibGVWYXJpYW50c107XG5cbiAgICAgICAgICAgIGlmICh2YXJpYW50VmFsIDwgdmFyaWFudE1pbmltdW0gfHwgKHZhcmlhbnRWYWwgKyB2YXJpYW50U2l6ZSkgPiB2YXJpYW50TWF4aW11bSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBBcHBseSBzdHlsZXMgYW5kIG5vcm1hbGl6ZSB2aWV3cG9ydFxuICAgICAgICAgICAgcG9wcGVyLnN0eWxlW3ZhcmlhbnRLZXldID0gYCR7dmFyaWFudFZhbCAtIHBvcEJveFt2YXJpYW50S2V5XX1weGA7XG4gICAgICAgICAgICBwb3BwZXIuc3R5bGVbcG9zaXRpb25LZXldID0gYCR7cG9zaXRpb25WYWwgLSBwb3BCb3hbcG9zaXRpb25LZXldfXB4YDtcbiAgICAgICAgICAgIHJldHVybiAocCArIHYpIGFzIFBvc2l0aW9uTWF0Y2g7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXZlcnQgc3R5bGUgdmFsdWVzICh3b24ndCB3b3JrIHdpdGggc3R5bGVkLWVsZW1lbnRzIG9yIHNpbWlsYXIgc3lzdGVtcylcbiAgICAvLyBcIkZpeFwiIGZvciBodHRwczovL2dpdGh1Yi5jb20vU2ltb253ZXAvbmFub3BvcC9pc3N1ZXMvN1xuICAgIHBvcHBlci5zdHlsZS5sZWZ0ID0gb3JpZ2luYWxMZWZ0O1xuICAgIHBvcHBlci5zdHlsZS50b3AgPSBvcmlnaW5hbFRvcDtcblxuICAgIHJldHVybiBudWxsO1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgc3RhdGVmdWwgcG9wcGVyLlxuICogWW91IGNhbiBlaXRoZXIuLi5cbiAqIC4uLiBwYXNzIGFuIG9wdGlvbnMgb2JqZWN0OiBjcmVhdGVQb3BwZXIoPG9wdGlvbnM+KVxuICogLi4uIHBhc3MgYm90aCB0aGUgcmVmZXJlbmNlIGFuZCBwb3BwZXI6IGNyZWF0ZSg8cmVmPiwgPGVsPiwgPD9vcHRpb25zPilcbiAqIC4uLiBwYXNzIG5vdGhpbmcsIGluIHRoaXMgY2FzZSB5b3UnbGwgaGF2ZSB0byBzZXQgYXQgbGVhc3QgYm90aCBhIHJlZmVyZW5jZSBhbmQgYSBwb3BwZXIgaW4gdXBkYXRlLlxuICpcbiAqIEBwYXJhbSByZWZlcmVuY2UgfCBvcHRpb25zIFJlZmVyZW5jZSBlbGVtZW50IG9yIG9wdGlvbnNcbiAqIEBwYXJhbSBwb3BwZXIgUG9wcGVyIGVsZW1lbnRcbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGFkZGl0aW9uYWwgb3B0aW9uc1xuICovXG5leHBvcnQgY29uc3QgY3JlYXRlUG9wcGVyOiBOYW5vUG9wQ29uc3RydWN0b3IgPSAoXG4gICAgcmVmZXJlbmNlPzogSFRNTEVsZW1lbnQgfCBQYXJ0aWFsPE5hbm9Qb3BPcHRpb25zPixcbiAgICBwb3BwZXI/OiBIVE1MRWxlbWVudCxcbiAgICBvcHRpb25zPzogUGFydGlhbDxOYW5vUG9wT3B0aW9ucz5cbik6IE5hbm9Qb3AgPT4ge1xuXG4gICAgLy8gUmVzb2x2ZSBvcHRpb25zXG4gICAgY29uc3QgYmFzZU9wdGlvbnM6IFBhcnRpYWw8TmFub1BvcE9wdGlvbnM+ID0gdHlwZW9mIHJlZmVyZW5jZSA9PT0gJ29iamVjdCcgJiYgIShyZWZlcmVuY2UgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkgP1xuICAgICAgICByZWZlcmVuY2UgOiB7cmVmZXJlbmNlLCBwb3BwZXIsIC4uLm9wdGlvbnN9O1xuXG4gICAgcmV0dXJuIHtcblxuICAgICAgICAvKipcbiAgICAgICAgICogUmVwb3NpdGlvbnMgdGhlIGN1cnJlbnQgcG9wcGVyLlxuICAgICAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBvcHRpb25zIHdoaWNoIGdldCBtZXJnZWQgd2l0aCB0aGUgY3VycmVudCBvbmVzLlxuICAgICAgICAgKi9cbiAgICAgICAgdXBkYXRlKG9wdGlvbnM6IFBhcnRpYWw8TmFub1BvcE9wdGlvbnM+ID0gYmFzZU9wdGlvbnMpOiBQb3NpdGlvbk1hdGNoIHwgbnVsbCB7XG4gICAgICAgICAgICBjb25zdCB7cmVmZXJlbmNlLCBwb3BwZXJ9ID0gT2JqZWN0LmFzc2lnbihiYXNlT3B0aW9ucywgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIGlmICghcG9wcGVyIHx8ICFyZWZlcmVuY2UpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BvcHBlci0gb3IgcmVmZXJlbmNlLWVsZW1lbnQgbWlzc2luZy4nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlcG9zaXRpb24ocmVmZXJlbmNlLCBwb3BwZXIsIGJhc2VPcHRpb25zKTtcbiAgICAgICAgfVxuICAgIH07XG59O1xuIiwgImltcG9ydCAqIGFzIF8gZnJvbSAnLi91dGlscy91dGlscyc7XG5pbXBvcnQge3BhcnNlVG9IU1ZBfSBmcm9tICcuL3V0aWxzL2NvbG9yJztcbmltcG9ydCB7SFNWYUNvbG9yfSBmcm9tICcuL3V0aWxzL2hzdmFjb2xvcic7XG5pbXBvcnQgTW92ZWFibGUgZnJvbSAnLi9saWJzL21vdmVhYmxlJztcbmltcG9ydCBTZWxlY3RhYmxlIGZyb20gJy4vbGlicy9zZWxlY3RhYmxlJztcbmltcG9ydCBidWlsZFBpY2tyIGZyb20gJy4vdGVtcGxhdGUnO1xuaW1wb3J0IHtjcmVhdGVQb3BwZXJ9IGZyb20gJ25hbm9wb3AnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQaWNrciB7XG5cbiAgICAvLyBFeHBvc2UgcGlja3IgdXRpbHNcbiAgICBzdGF0aWMgdXRpbHMgPSBfO1xuXG4gICAgLy8gQXNzaWduIHZlcnNpb24gYW5kIGV4cG9ydFxuICAgIHN0YXRpYyB2ZXJzaW9uID0gVkVSU0lPTjtcblxuICAgIC8vIERlZmF1bHQgc3RyaW5nc1xuICAgIHN0YXRpYyBJMThOX0RFRkFVTFRTID0ge1xuXG4gICAgICAgIC8vIFN0cmluZ3MgdmlzaWJsZSBpbiB0aGUgVUlcbiAgICAgICAgJ3VpOmRpYWxvZyc6ICdjb2xvciBwaWNrZXIgZGlhbG9nJyxcbiAgICAgICAgJ2J0bjp0b2dnbGUnOiAndG9nZ2xlIGNvbG9yIHBpY2tlciBkaWFsb2cnLFxuICAgICAgICAnYnRuOnN3YXRjaCc6ICdjb2xvciBzd2F0Y2gnLFxuICAgICAgICAnYnRuOmxhc3QtY29sb3InOiAndXNlIHByZXZpb3VzIGNvbG9yJyxcbiAgICAgICAgJ2J0bjpzYXZlJzogJ1NhdmUnLFxuICAgICAgICAnYnRuOmNhbmNlbCc6ICdDYW5jZWwnLFxuICAgICAgICAnYnRuOmNsZWFyJzogJ0NsZWFyJyxcblxuICAgICAgICAvLyBTdHJpbmdzIHVzZWQgZm9yIGFyaWEtbGFiZWxzXG4gICAgICAgICdhcmlhOmJ0bjpzYXZlJzogJ3NhdmUgYW5kIGNsb3NlJyxcbiAgICAgICAgJ2FyaWE6YnRuOmNhbmNlbCc6ICdjYW5jZWwgYW5kIGNsb3NlJyxcbiAgICAgICAgJ2FyaWE6YnRuOmNsZWFyJzogJ2NsZWFyIGFuZCBjbG9zZScsXG4gICAgICAgICdhcmlhOmlucHV0JzogJ2NvbG9yIGlucHV0IGZpZWxkJyxcbiAgICAgICAgJ2FyaWE6cGFsZXR0ZSc6ICdjb2xvciBzZWxlY3Rpb24gYXJlYScsXG4gICAgICAgICdhcmlhOmh1ZSc6ICdodWUgc2VsZWN0aW9uIHNsaWRlcicsXG4gICAgICAgICdhcmlhOm9wYWNpdHknOiAnc2VsZWN0aW9uIHNsaWRlcidcbiAgICB9O1xuXG4gICAgLy8gRGVmYXVsdCBvcHRpb25zXG4gICAgc3RhdGljIERFRkFVTFRfT1BUSU9OUyA9IHtcbiAgICAgICAgYXBwQ2xhc3M6IG51bGwsXG4gICAgICAgIHRoZW1lOiAnY2xhc3NpYycsXG4gICAgICAgIHVzZUFzQnV0dG9uOiBmYWxzZSxcbiAgICAgICAgcGFkZGluZzogOCxcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICBjb21wYXJpc29uOiB0cnVlLFxuICAgICAgICBjbG9zZU9uU2Nyb2xsOiBmYWxzZSxcbiAgICAgICAgb3V0cHV0UHJlY2lzaW9uOiAwLFxuICAgICAgICBsb2NrT3BhY2l0eTogZmFsc2UsXG4gICAgICAgIGF1dG9SZXBvc2l0aW9uOiB0cnVlLFxuICAgICAgICBjb250YWluZXI6ICdib2R5JyxcblxuICAgICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgICAgICBpbnRlcmFjdGlvbjoge31cbiAgICAgICAgfSxcblxuICAgICAgICBpMThuOiB7fSxcbiAgICAgICAgc3dhdGNoZXM6IG51bGwsXG4gICAgICAgIGlubGluZTogZmFsc2UsXG4gICAgICAgIHNsaWRlcnM6IG51bGwsXG5cbiAgICAgICAgZGVmYXVsdDogJyM0MjQ0NWEnLFxuICAgICAgICBkZWZhdWx0UmVwcmVzZW50YXRpb246IG51bGwsXG4gICAgICAgIHBvc2l0aW9uOiAnYm90dG9tLW1pZGRsZScsXG4gICAgICAgIGFkanVzdGFibGVOdW1iZXJzOiB0cnVlLFxuICAgICAgICBzaG93QWx3YXlzOiBmYWxzZSxcblxuICAgICAgICBjbG9zZVdpdGhLZXk6ICdFc2NhcGUnXG4gICAgfTtcblxuICAgIC8vIFdpbGwgYmUgdXNlZCB0byBwcmV2ZW50IHNwZWNpZmljIGFjdGlvbnMgZHVyaW5nIGluaXRpbGl6YXRpb25cbiAgICBfaW5pdGlhbGl6aW5nQWN0aXZlID0gdHJ1ZTtcblxuICAgIC8vIElmIHRoZSBjdXJyZW50IGNvbG9yIHZhbHVlIHNob3VsZCBiZSByZWNhbGN1bGF0ZWRcbiAgICBfcmVjYWxjID0gdHJ1ZTtcblxuICAgIC8vIFBvc2l0aW9uaW5nIGVuZ2luZSBhbmQgRE9NLVRyZWVcbiAgICBfbmFub3BvcCA9IG51bGw7XG4gICAgX3Jvb3QgPSBudWxsO1xuXG4gICAgLy8gQ3VycmVudCBhbmQgbGFzdCBjb2xvciBmb3IgY29tcGFyaXNvblxuICAgIF9jb2xvciA9IEhTVmFDb2xvcigpO1xuICAgIF9sYXN0Q29sb3IgPSBIU1ZhQ29sb3IoKTtcbiAgICBfc3dhdGNoQ29sb3JzID0gW107XG5cbiAgICAvLyBBbmltYXRpb24gZnJhbWUgdXNlZCBmb3Igc2V0dXAuXG4gICAgLy8gV2lsbCBiZSBjYW5jZWxsZWQgaW4gY2FzZSBvZiBkZXN0cnVjdGlvbi5cbiAgICBfc2V0dXBBbmltYXRpb25GcmFtZSA9IG51bGw7XG5cbiAgICAvLyBFdmVubGlzdGVuZXIgbmFtZTogW2NhbGxiYWNrc11cbiAgICBfZXZlbnRMaXN0ZW5lciA9IHtcbiAgICAgICAgaW5pdDogW10sXG4gICAgICAgIHNhdmU6IFtdLFxuICAgICAgICBoaWRlOiBbXSxcbiAgICAgICAgc2hvdzogW10sXG4gICAgICAgIGNsZWFyOiBbXSxcbiAgICAgICAgY2hhbmdlOiBbXSxcbiAgICAgICAgY2hhbmdlc3RvcDogW10sXG4gICAgICAgIGNhbmNlbDogW10sXG4gICAgICAgIHN3YXRjaHNlbGVjdDogW11cbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3Iob3B0KSB7XG5cbiAgICAgICAgLy8gQXNzaWduIGRlZmF1bHQgdmFsdWVzXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdCA9IE9iamVjdC5hc3NpZ24oey4uLlBpY2tyLkRFRkFVTFRfT1BUSU9OU30sIG9wdCk7XG5cbiAgICAgICAgY29uc3Qge3N3YXRjaGVzLCBjb21wb25lbnRzLCB0aGVtZSwgc2xpZGVycywgbG9ja09wYWNpdHksIHBhZGRpbmd9ID0gb3B0O1xuXG4gICAgICAgIGlmIChbJ25hbm8nLCAnbW9ub2xpdGgnXS5pbmNsdWRlcyh0aGVtZSkgJiYgIXNsaWRlcnMpIHtcbiAgICAgICAgICAgIG9wdC5zbGlkZXJzID0gJ2gnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgaW50ZXJhY3Rpb24gc2VjdGlvblxuICAgICAgICBpZiAoIWNvbXBvbmVudHMuaW50ZXJhY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHMuaW50ZXJhY3Rpb24gPSB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE92ZXJ3cml0ZSBwYWxldHRlIGlmIHByZXZpZXcsIG9wYWNpdHkgb3IgaHVlIGFyZSB0cnVlXG4gICAgICAgIGNvbnN0IHtwcmV2aWV3LCBvcGFjaXR5LCBodWUsIHBhbGV0dGV9ID0gY29tcG9uZW50cztcbiAgICAgICAgY29tcG9uZW50cy5vcGFjaXR5ID0gKCFsb2NrT3BhY2l0eSAmJiBvcGFjaXR5KTtcbiAgICAgICAgY29tcG9uZW50cy5wYWxldHRlID0gcGFsZXR0ZSB8fCBwcmV2aWV3IHx8IG9wYWNpdHkgfHwgaHVlO1xuXG4gICAgICAgIC8vIEluaXRpYWxpemUgcGlja2VyXG4gICAgICAgIHRoaXMuX3ByZUJ1aWxkKCk7XG4gICAgICAgIHRoaXMuX2J1aWxkQ29tcG9uZW50cygpO1xuICAgICAgICB0aGlzLl9iaW5kRXZlbnRzKCk7XG4gICAgICAgIHRoaXMuX2ZpbmFsQnVpbGQoKTtcblxuICAgICAgICAvLyBBcHBlbmQgcHJlLWRlZmluZWQgc3dhdGNoIGNvbG9yc1xuICAgICAgICBpZiAoc3dhdGNoZXMgJiYgc3dhdGNoZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBzd2F0Y2hlcy5mb3JFYWNoKGNvbG9yID0+IHRoaXMuYWRkU3dhdGNoKGNvbG9yKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJbml0aWFsaXplIHBvc2l0aW9uaW5nIGVuZ2luZVxuICAgICAgICBjb25zdCB7YnV0dG9uLCBhcHB9ID0gdGhpcy5fcm9vdDtcbiAgICAgICAgdGhpcy5fbmFub3BvcCA9IGNyZWF0ZVBvcHBlcihidXR0b24sIGFwcCwge1xuICAgICAgICAgICAgbWFyZ2luOiBwYWRkaW5nXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEluaXRpYWxpemUgYWNjZXNzaWJpbGl0eVxuICAgICAgICBidXR0b24uc2V0QXR0cmlidXRlKCdyb2xlJywgJ2J1dHRvbicpO1xuICAgICAgICBidXR0b24uc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgdGhpcy5fdCgnYnRuOnRvZ2dsZScpKTtcblxuICAgICAgICAvLyBJbml0aWxpemF0aW9uIGlzIGZpbmlzaCwgcGlja3IgaXMgdmlzaWJsZSBhbmQgcmVhZHkgZm9yIHVzYWdlXG4gICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICB0aGlzLl9zZXR1cEFuaW1hdGlvbkZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKChmdW5jdGlvbiBjYigpIHtcblxuICAgICAgICAgICAgLy8gVE9ETzogUGVyZm9ybWFuY2UgaXNzdWUgZHVlIHRvIGhpZ2ggY2FsbC1yYXRlP1xuICAgICAgICAgICAgaWYgKCFhcHAub2Zmc2V0V2lkdGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQXBwbHkgZGVmYXVsdCBjb2xvclxuICAgICAgICAgICAgdGhhdC5zZXRDb2xvcihvcHQuZGVmYXVsdCk7XG4gICAgICAgICAgICB0aGF0Ll9yZVBvc2l0aW9uaW5nUGlja2VyKCk7XG5cbiAgICAgICAgICAgIC8vIEluaXRpYWxpemUgY29sb3IgcmVwcmVzZW50YXRpb25cbiAgICAgICAgICAgIGlmIChvcHQuZGVmYXVsdFJlcHJlc2VudGF0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhhdC5fcmVwcmVzZW50YXRpb24gPSBvcHQuZGVmYXVsdFJlcHJlc2VudGF0aW9uO1xuICAgICAgICAgICAgICAgIHRoYXQuc2V0Q29sb3JSZXByZXNlbnRhdGlvbih0aGF0Ll9yZXByZXNlbnRhdGlvbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFNob3cgcGlja3IgaWYgbG9ja2VkXG4gICAgICAgICAgICBpZiAob3B0LnNob3dBbHdheXMpIHtcbiAgICAgICAgICAgICAgICB0aGF0LnNob3coKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gSW5pdGlhbGl6YXRpb24gaXMgZG9uZSAtIHBpY2tyIGlzIHVzYWJsZSwgZmlyZSBpbml0IGV2ZW50XG4gICAgICAgICAgICB0aGF0Ll9pbml0aWFsaXppbmdBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoYXQuX2VtaXQoJ2luaXQnKTtcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBpbnN0YW5jZSB2aWEgbWV0aG9kXG4gICAgc3RhdGljIGNyZWF0ZSA9IG9wdGlvbnMgPT4gbmV3IFBpY2tyKG9wdGlvbnMpO1xuXG4gICAgLy8gRG9lcyBvbmx5IHRoZSBhYnNvbHV0bHkgYmFzaWMgdGhpbmcgdG8gaW5pdGlhbGl6ZSB0aGUgY29tcG9uZW50c1xuICAgIF9wcmVCdWlsZCgpIHtcbiAgICAgICAgY29uc3Qge29wdGlvbnN9ID0gdGhpcztcblxuICAgICAgICAvLyBSZXNvbHZlIGVsZW1lbnRzXG4gICAgICAgIGZvciAoY29uc3QgdHlwZSBvZiBbJ2VsJywgJ2NvbnRhaW5lciddKSB7XG4gICAgICAgICAgICBvcHRpb25zW3R5cGVdID0gXy5yZXNvbHZlRWxlbWVudChvcHRpb25zW3R5cGVdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENyZWF0ZSBlbGVtZW50IGFuZCBhcHBlbmQgaXQgdG8gYm9keSB0b1xuICAgICAgICAvLyBQcmV2ZW50IGluaXRpYWxpemF0aW9uIGVycm9yc1xuICAgICAgICB0aGlzLl9yb290ID0gYnVpbGRQaWNrcih0aGlzKTtcblxuICAgICAgICAvLyBDaGVjayBpZiBhIGN1c3RvbSBidXR0b24gaXMgdXNlZFxuICAgICAgICBpZiAob3B0aW9ucy51c2VBc0J1dHRvbikge1xuICAgICAgICAgICAgdGhpcy5fcm9vdC5idXR0b24gPSBvcHRpb25zLmVsOyAvLyBSZXBsYWNlIGJ1dHRvbiB3aXRoIGN1c3RvbWl6ZWQgYnV0dG9uXG4gICAgICAgIH1cblxuICAgICAgICBvcHRpb25zLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl9yb290LnJvb3QpO1xuICAgIH1cblxuICAgIF9maW5hbEJ1aWxkKCkge1xuICAgICAgICBjb25zdCBvcHQgPSB0aGlzLm9wdGlvbnM7XG4gICAgICAgIGNvbnN0IHJvb3QgPSB0aGlzLl9yb290O1xuXG4gICAgICAgIC8vIFJlbW92ZSBmcm9tIGJvZHlcbiAgICAgICAgb3B0LmNvbnRhaW5lci5yZW1vdmVDaGlsZChyb290LnJvb3QpO1xuXG4gICAgICAgIGlmIChvcHQuaW5saW5lKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBvcHQuZWwucGFyZW50RWxlbWVudDtcblxuICAgICAgICAgICAgaWYgKG9wdC5lbC5uZXh0U2libGluZykge1xuICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUocm9vdC5hcHAsIG9wdC5lbC5uZXh0U2libGluZyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChyb290LmFwcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvcHQuY29udGFpbmVyLmFwcGVuZENoaWxkKHJvb3QuYXBwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERvbid0IHJlcGxhY2UgdGhlIHRoZSBlbGVtZW50IGlmIGEgY3VzdG9tIGJ1dHRvbiBpcyB1c2VkXG4gICAgICAgIGlmICghb3B0LnVzZUFzQnV0dG9uKSB7XG5cbiAgICAgICAgICAgIC8vIFJlcGxhY2UgZWxlbWVudCB3aXRoIGFjdHVhbCBjb2xvci1waWNrZXJcbiAgICAgICAgICAgIG9wdC5lbC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChyb290LnJvb3QsIG9wdC5lbCk7XG4gICAgICAgIH0gZWxzZSBpZiAob3B0LmlubGluZSkge1xuICAgICAgICAgICAgb3B0LmVsLnJlbW92ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgaXQgc2hvdWxkIGJlIGltbWVkaWF0bHkgZGlzYWJsZWRcbiAgICAgICAgaWYgKG9wdC5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBpZiBjb2xvciBjb21wYXJpc29uIGlzIGRpc2FibGVkLCBpZiB5ZXMgLSByZW1vdmUgdHJhbnNpdGlvbnMgc28gZXZlcnl0aGluZyBrZWVwcyBzbW9vdGhseVxuICAgICAgICBpZiAoIW9wdC5jb21wYXJpc29uKSB7XG4gICAgICAgICAgICByb290LmJ1dHRvbi5zdHlsZS50cmFuc2l0aW9uID0gJ25vbmUnO1xuXG4gICAgICAgICAgICBpZiAoIW9wdC51c2VBc0J1dHRvbikge1xuICAgICAgICAgICAgICAgIHJvb3QucHJldmlldy5sYXN0Q29sb3Iuc3R5bGUudHJhbnNpdGlvbiA9ICdub25lJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cblxuICAgIF9idWlsZENvbXBvbmVudHMoKSB7XG5cbiAgICAgICAgLy8gSW5zdGFuY2UgcmVmZXJlbmNlXG4gICAgICAgIGNvbnN0IGluc3QgPSB0aGlzO1xuICAgICAgICBjb25zdCBjcyA9IHRoaXMub3B0aW9ucy5jb21wb25lbnRzO1xuICAgICAgICBjb25zdCBzbGlkZXJzID0gKGluc3Qub3B0aW9ucy5zbGlkZXJzIHx8ICd2JykucmVwZWF0KDIpO1xuICAgICAgICBjb25zdCBbc28sIHNoXSA9IHNsaWRlcnMubWF0Y2goL15bdmhdKyQvZykgPyBzbGlkZXJzIDogW107XG5cbiAgICAgICAgLy8gUmUtYXNzaWduIGlmIG51bGxcbiAgICAgICAgY29uc3QgZ2V0Q29sb3IgPSAoKSA9PlxuICAgICAgICAgICAgdGhpcy5fY29sb3IgfHwgKHRoaXMuX2NvbG9yID0gdGhpcy5fbGFzdENvbG9yLmNsb25lKCkpO1xuXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSB7XG5cbiAgICAgICAgICAgIHBhbGV0dGU6IE1vdmVhYmxlKHtcbiAgICAgICAgICAgICAgICBlbGVtZW50OiBpbnN0Ll9yb290LnBhbGV0dGUucGlja2VyLFxuICAgICAgICAgICAgICAgIHdyYXBwZXI6IGluc3QuX3Jvb3QucGFsZXR0ZS5wYWxldHRlLFxuXG4gICAgICAgICAgICAgICAgb25zdG9wOiAoKSA9PiBpbnN0Ll9lbWl0KCdjaGFuZ2VzdG9wJywgJ3NsaWRlcicsIGluc3QpLFxuICAgICAgICAgICAgICAgIG9uY2hhbmdlKHgsIHkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjcy5wYWxldHRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2xvciA9IGdldENvbG9yKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHtfcm9vdCwgb3B0aW9uc30gPSBpbnN0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7bGFzdENvbG9yLCBjdXJyZW50Q29sb3J9ID0gX3Jvb3QucHJldmlldztcblxuICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGlucHV0IGZpZWxkIG9ubHkgaWYgdGhlIHVzZXIgaXMgY3VycmVudGx5IG5vdCB0eXBpbmdcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluc3QuX3JlY2FsYykge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWxjdWxhdGUgc2F0dXJhdGlvbiBiYXNlZCBvbiB0aGUgcG9zaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yLnMgPSB4ICogMTAwO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvci52ID0gMTAwIC0geSAqIDEwMDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUHJldmVudCBmYWxsaW5nIHVuZGVyIHplcm9cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yLnYgPCAwID8gY29sb3IudiA9IDAgOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdC5fdXBkYXRlT3V0cHV0KCdzbGlkZXInKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFNldCBwaWNrZXIgYW5kIGdyYWRpZW50IGNvbG9yXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNzc1JHQmFTdHJpbmcgPSBjb2xvci50b1JHQkEoKS50b1N0cmluZygwKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmJhY2tncm91bmQgPSBjc3NSR0JhU3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLndyYXBwZXIuc3R5bGUuYmFja2dyb3VuZCA9IGBcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudCh0byB0b3AsIHJnYmEoMCwgMCwgMCwgJHtjb2xvci5hfSksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCBoc2xhKCR7Y29sb3IuaH0sIDEwMCUsIDUwJSwgJHtjb2xvci5hfSksIHJnYmEoMjU1LCAyNTUsIDI1NSwgJHtjb2xvci5hfSkpXG4gICAgICAgICAgICAgICAgICAgIGA7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgY29sb3IgaXMgbG9ja2VkXG4gICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5jb21wYXJpc29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfcm9vdC5idXR0b24uc3R5bGUuc2V0UHJvcGVydHkoJy0tcGNyLWNvbG9yJywgY3NzUkdCYVN0cmluZyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSB1c2VyIGNoYW5nZXMgdGhlIGNvbG9yLCByZW1vdmUgdGhlIGNsZWFyZWQgaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgX3Jvb3QuYnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoJ2NsZWFyJyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIW9wdGlvbnMudXNlQXNCdXR0b24gJiYgIWluc3QuX2xhc3RDb2xvcikge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBseSBjb2xvciB0byBib3RoIHRoZSBsYXN0IGFuZCBjdXJyZW50IGNvbG9yIHNpbmNlIHRoZSBjdXJyZW50IHN0YXRlIGlzIGNsZWFyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RDb2xvci5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1wY3ItY29sb3InLCBjc3NSR0JhU3RyaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgYSBzd2F0Y2ggd2hpY2ggY29sb3IgbWF0Y2hlcyB0aGUgY3VycmVudCBvbmVcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGV4YSA9IGNvbG9yLnRvSEVYQSgpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qge2VsLCBjb2xvcn0gb2YgaW5zdC5fc3dhdGNoQ29sb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbC5jbGFzc0xpc3RbaGV4YSA9PT0gY29sb3IudG9IRVhBKCkudG9TdHJpbmcoKSA/ICdhZGQnIDogJ3JlbW92ZSddKCdwY3ItYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBDaGFuZ2UgY3VycmVudCBjb2xvclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29sb3Iuc3R5bGUuc2V0UHJvcGVydHkoJy0tcGNyLWNvbG9yJywgY3NzUkdCYVN0cmluZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG5cbiAgICAgICAgICAgIGh1ZTogTW92ZWFibGUoe1xuICAgICAgICAgICAgICAgIGxvY2s6IHNoID09PSAndicgPyAnaCcgOiAndicsXG4gICAgICAgICAgICAgICAgZWxlbWVudDogaW5zdC5fcm9vdC5odWUucGlja2VyLFxuICAgICAgICAgICAgICAgIHdyYXBwZXI6IGluc3QuX3Jvb3QuaHVlLnNsaWRlcixcblxuICAgICAgICAgICAgICAgIG9uc3RvcDogKCkgPT4gaW5zdC5fZW1pdCgnY2hhbmdlc3RvcCcsICdzbGlkZXInLCBpbnN0KSxcbiAgICAgICAgICAgICAgICBvbmNoYW5nZSh2KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY3MuaHVlIHx8ICFjcy5wYWxldHRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2xvciA9IGdldENvbG9yKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIGh1ZVxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5zdC5fcmVjYWxjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvci5oID0gdiAqIDM2MDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBjb2xvclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gYGhzbCgke2NvbG9yLmh9LCAxMDAlLCA1MCUpYDtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cy5wYWxldHRlLnRyaWdnZXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcblxuICAgICAgICAgICAgb3BhY2l0eTogTW92ZWFibGUoe1xuICAgICAgICAgICAgICAgIGxvY2s6IHNvID09PSAndicgPyAnaCcgOiAndicsXG4gICAgICAgICAgICAgICAgZWxlbWVudDogaW5zdC5fcm9vdC5vcGFjaXR5LnBpY2tlcixcbiAgICAgICAgICAgICAgICB3cmFwcGVyOiBpbnN0Ll9yb290Lm9wYWNpdHkuc2xpZGVyLFxuXG4gICAgICAgICAgICAgICAgb25zdG9wOiAoKSA9PiBpbnN0Ll9lbWl0KCdjaGFuZ2VzdG9wJywgJ3NsaWRlcicsIGluc3QpLFxuICAgICAgICAgICAgICAgIG9uY2hhbmdlKHYpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjcy5vcGFjaXR5IHx8ICFjcy5wYWxldHRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2xvciA9IGdldENvbG9yKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIG9wYWNpdHlcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluc3QuX3JlY2FsYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IuYSA9IE1hdGgucm91bmQodiAqIDFlMikgLyAxMDA7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgY29sb3JcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmJhY2tncm91bmQgPSBgcmdiYSgwLCAwLCAwLCAke2NvbG9yLmF9KWA7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHMucGFsZXR0ZS50cmlnZ2VyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG5cbiAgICAgICAgICAgIHNlbGVjdGFibGU6IFNlbGVjdGFibGUoe1xuICAgICAgICAgICAgICAgIGVsZW1lbnRzOiBpbnN0Ll9yb290LmludGVyYWN0aW9uLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYWN0aXZlJyxcblxuICAgICAgICAgICAgICAgIG9uY2hhbmdlKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5zdC5fcmVwcmVzZW50YXRpb24gPSBlLnRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdHlwZScpLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIGluc3QuX3JlY2FsYyAmJiBpbnN0Ll91cGRhdGVPdXRwdXQoJ3N3YXRjaCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fY29tcG9uZW50cyA9IGNvbXBvbmVudHM7XG4gICAgfVxuXG4gICAgX2JpbmRFdmVudHMoKSB7XG4gICAgICAgIGNvbnN0IHtfcm9vdCwgb3B0aW9uc30gPSB0aGlzO1xuXG4gICAgICAgIGNvbnN0IGV2ZW50QmluZGluZ3MgPSBbXG5cbiAgICAgICAgICAgIC8vIENsZWFyIGNvbG9yXG4gICAgICAgICAgICBfLm9uKF9yb290LmludGVyYWN0aW9uLmNsZWFyLCAnY2xpY2snLCAoKSA9PiB0aGlzLl9jbGVhckNvbG9yKCkpLFxuXG4gICAgICAgICAgICAvLyBTZWxlY3QgbGFzdCBjb2xvciBvbiBjbGlja1xuICAgICAgICAgICAgXy5vbihbXG4gICAgICAgICAgICAgICAgX3Jvb3QuaW50ZXJhY3Rpb24uY2FuY2VsLFxuICAgICAgICAgICAgICAgIF9yb290LnByZXZpZXcubGFzdENvbG9yXG4gICAgICAgICAgICBdLCAnY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRIU1ZBKC4uLih0aGlzLl9sYXN0Q29sb3IgfHwgdGhpcy5fY29sb3IpLnRvSFNWQSgpLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0KCdjYW5jZWwnKTtcbiAgICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgICAvLyBTYXZlIGNvbG9yXG4gICAgICAgICAgICBfLm9uKF9yb290LmludGVyYWN0aW9uLnNhdmUsICdjbGljaycsICgpID0+IHtcbiAgICAgICAgICAgICAgICAhdGhpcy5hcHBseUNvbG9yKCkgJiYgIW9wdGlvbnMuc2hvd0Fsd2F5cyAmJiB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgICAvLyBVc2VyIGlucHV0XG4gICAgICAgICAgICBfLm9uKF9yb290LmludGVyYWN0aW9uLnJlc3VsdCwgWydrZXl1cCcsICdpbnB1dCddLCBlID0+IHtcblxuICAgICAgICAgICAgICAgIC8vIEZpcmUgbGlzdGVuZXIgaWYgaW5pdGlhbGl6YXRpb24gaXMgZmluaXNoIGFuZCBjaGFuZ2VkIGNvbG9yIHdhcyB2YWxpZFxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNldENvbG9yKGUudGFyZ2V0LnZhbHVlLCB0cnVlKSAmJiAhdGhpcy5faW5pdGlhbGl6aW5nQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXQoJ2NoYW5nZScsIHRoaXMuX2NvbG9yLCAnaW5wdXQnLCB0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1pdCgnY2hhbmdlc3RvcCcsICdpbnB1dCcsIHRoaXMpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9KSxcblxuICAgICAgICAgICAgLy8gRGV0ZWN0IHVzZXIgaW5wdXQgYW5kIGRpc2FibGUgYXV0by1yZWNhbGN1bGF0aW9uXG4gICAgICAgICAgICBfLm9uKF9yb290LmludGVyYWN0aW9uLnJlc3VsdCwgWydmb2N1cycsICdibHVyJ10sIGUgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlY2FsYyA9IGUudHlwZSA9PT0gJ2JsdXInO1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlY2FsYyAmJiB0aGlzLl91cGRhdGVPdXRwdXQobnVsbCk7XG4gICAgICAgICAgICB9KSxcblxuICAgICAgICAgICAgLy8gQ2FuY2VsIGlucHV0IGRldGVjdGlvbiBvbiBjb2xvciBjaGFuZ2VcbiAgICAgICAgICAgIF8ub24oW1xuICAgICAgICAgICAgICAgIF9yb290LnBhbGV0dGUucGFsZXR0ZSxcbiAgICAgICAgICAgICAgICBfcm9vdC5wYWxldHRlLnBpY2tlcixcbiAgICAgICAgICAgICAgICBfcm9vdC5odWUuc2xpZGVyLFxuICAgICAgICAgICAgICAgIF9yb290Lmh1ZS5waWNrZXIsXG4gICAgICAgICAgICAgICAgX3Jvb3Qub3BhY2l0eS5zbGlkZXIsXG4gICAgICAgICAgICAgICAgX3Jvb3Qub3BhY2l0eS5waWNrZXJcbiAgICAgICAgICAgIF0sIFsnbW91c2Vkb3duJywgJ3RvdWNoc3RhcnQnXSwgKCkgPT4gdGhpcy5fcmVjYWxjID0gdHJ1ZSwge3Bhc3NpdmU6IHRydWV9KVxuICAgICAgICBdO1xuXG4gICAgICAgIC8vIFByb3ZpZGUgaGlkaW5nIC8gc2hvd2luZyBhYmlsaXRpZXMgb25seSBpZiBzaG93QWx3YXlzIGlzIGZhbHNlXG4gICAgICAgIGlmICghb3B0aW9ucy5zaG93QWx3YXlzKSB7XG4gICAgICAgICAgICBjb25zdCBjayA9IG9wdGlvbnMuY2xvc2VXaXRoS2V5O1xuXG4gICAgICAgICAgICBldmVudEJpbmRpbmdzLnB1c2goXG5cbiAgICAgICAgICAgICAgICAvLyBTYXZlIGFuZCBoaWRlIC8gc2hvdyBwaWNrZXJcbiAgICAgICAgICAgICAgICBfLm9uKF9yb290LmJ1dHRvbiwgJ2NsaWNrJywgKCkgPT4gdGhpcy5pc09wZW4oKSA/IHRoaXMuaGlkZSgpIDogdGhpcy5zaG93KCkpLFxuXG4gICAgICAgICAgICAgICAgLy8gQ2xvc2Ugd2l0aCBlc2NhcGUga2V5XG4gICAgICAgICAgICAgICAgXy5vbihkb2N1bWVudCwgJ2tleXVwJywgZSA9PiB0aGlzLmlzT3BlbigpICYmIChlLmtleSA9PT0gY2sgfHwgZS5jb2RlID09PSBjaykgJiYgdGhpcy5oaWRlKCkpLFxuXG4gICAgICAgICAgICAgICAgLy8gQ2FuY2VsIHNlbGVjdGluZyBpZiB0aGUgdXNlciB0YXBzIGJlaGluZCB0aGUgY29sb3IgcGlja2VyXG4gICAgICAgICAgICAgICAgXy5vbihkb2N1bWVudCwgWyd0b3VjaHN0YXJ0JywgJ21vdXNlZG93biddLCBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNPcGVuKCkgJiYgIV8uZXZlbnRQYXRoKGUpLnNvbWUoZWwgPT4gZWwgPT09IF9yb290LmFwcCB8fCBlbCA9PT0gX3Jvb3QuYnV0dG9uKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB7Y2FwdHVyZTogdHJ1ZX0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTWFrZSBpbnB1dCBhZGp1c3RhYmxlIGlmIGVuYWJsZWRcbiAgICAgICAgaWYgKG9wdGlvbnMuYWRqdXN0YWJsZU51bWJlcnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlcyA9IHtcbiAgICAgICAgICAgICAgICByZ2JhOiBbMjU1LCAyNTUsIDI1NSwgMV0sXG4gICAgICAgICAgICAgICAgaHN2YTogWzM2MCwgMTAwLCAxMDAsIDFdLFxuICAgICAgICAgICAgICAgIGhzbGE6IFszNjAsIDEwMCwgMTAwLCAxXSxcbiAgICAgICAgICAgICAgICBjbXlrOiBbMTAwLCAxMDAsIDEwMCwgMTAwXVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgXy5hZGp1c3RhYmxlSW5wdXROdW1iZXJzKF9yb290LmludGVyYWN0aW9uLnJlc3VsdCwgKG8sIHN0ZXAsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSByYW5nZXNbdGhpcy5nZXRDb2xvclJlcHJlc2VudGF0aW9uKCkudG9Mb3dlckNhc2UoKV07XG5cbiAgICAgICAgICAgICAgICBpZiAocmFuZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4ID0gcmFuZ2VbaW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBuZXh0IHJlYXNvbmFibGUgbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG52ID0gbyArIChtYXggPj0gMTAwID8gc3RlcCAqIDEwMDAgOiBzdGVwKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBBcHBseSByYW5nZSBvZiB6ZXJvIHVwIHRvIG1heCwgZml4IGZsb2F0aW5nLXBvaW50IGlzc3Vlc1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnYgPD0gMCA/IDAgOiBOdW1iZXIoKG52IDwgbWF4ID8gbnYgOiBtYXgpLnRvUHJlY2lzaW9uKDMpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuYXV0b1JlcG9zaXRpb24gJiYgIW9wdGlvbnMuaW5saW5lKSB7XG4gICAgICAgICAgICBsZXQgdGltZW91dCA9IG51bGw7XG4gICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcblxuICAgICAgICAgICAgLy8gUmUtY2FsYyBwb3NpdGlvbiBvbiB3aW5kb3cgcmVzaXplLCBzY3JvbGwgYW5kIHdoZWVsXG4gICAgICAgICAgICBldmVudEJpbmRpbmdzLnB1c2goXG4gICAgICAgICAgICAgICAgXy5vbih3aW5kb3csIFsnc2Nyb2xsJywgJ3Jlc2l6ZSddLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGF0LmlzT3BlbigpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmNsb3NlT25TY3JvbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRpbWVvdXQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB0aW1lb3V0ID0gbnVsbCwgMTAwKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBwb3NpdGlvbiBvbiBldmVyeSBmcmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiBycygpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fcmVQb3NpdGlvbmluZ1BpY2tlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGltZW91dCAhPT0gbnVsbCkgJiYgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHRpbWVvdXQgPSBudWxsLCAxMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge2NhcHR1cmU6IHRydWV9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNhdmUgYmluZGluZ3NcbiAgICAgICAgdGhpcy5fZXZlbnRCaW5kaW5ncyA9IGV2ZW50QmluZGluZ3M7XG4gICAgfVxuXG4gICAgX3JlUG9zaXRpb25pbmdQaWNrZXIoKSB7XG4gICAgICAgIGNvbnN0IHtvcHRpb25zfSA9IHRoaXM7XG5cbiAgICAgICAgLy8gTm8gcmVwb3NpdGlvbmluZyBuZWVkZWQgaWYgaW5saW5lXG4gICAgICAgIGlmICghb3B0aW9ucy5pbmxpbmUpIHtcbiAgICAgICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSB0aGlzLl9uYW5vcG9wLnVwZGF0ZSh7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyOiBkb2N1bWVudC5ib2R5LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBvcHRpb25zLnBvc2l0aW9uXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWwgPSB0aGlzLl9yb290LmFwcDtcbiAgICAgICAgICAgICAgICBjb25zdCBlYiA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgICAgIGVsLnN0eWxlLnRvcCA9IGAkeyh3aW5kb3cuaW5uZXJIZWlnaHQgLSBlYi5oZWlnaHQpIC8gMn1weGA7XG4gICAgICAgICAgICAgICAgZWwuc3R5bGUubGVmdCA9IGAkeyh3aW5kb3cuaW5uZXJXaWR0aCAtIGViLndpZHRoKSAvIDJ9cHhgO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgX3VwZGF0ZU91dHB1dChldmVudFNvdXJjZSkge1xuICAgICAgICBjb25zdCB7X3Jvb3QsIF9jb2xvciwgb3B0aW9uc30gPSB0aGlzO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIGNvbXBvbmVudCBpcyBwcmVzZW50XG4gICAgICAgIGlmIChfcm9vdC5pbnRlcmFjdGlvbi50eXBlKCkpIHtcblxuICAgICAgICAgICAgLy8gQ29uc3RydWN0IGZ1bmN0aW9uIG5hbWUgYW5kIGNhbGwgaWYgcHJlc2VudFxuICAgICAgICAgICAgY29uc3QgbWV0aG9kID0gYHRvJHtfcm9vdC5pbnRlcmFjdGlvbi50eXBlKCkuZ2V0QXR0cmlidXRlKCdkYXRhLXR5cGUnKX1gO1xuICAgICAgICAgICAgX3Jvb3QuaW50ZXJhY3Rpb24ucmVzdWx0LnZhbHVlID0gdHlwZW9mIF9jb2xvclttZXRob2RdID09PSAnZnVuY3Rpb24nID9cbiAgICAgICAgICAgICAgICBfY29sb3JbbWV0aG9kXSgpLnRvU3RyaW5nKG9wdGlvbnMub3V0cHV0UHJlY2lzaW9uKSA6ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmlyZSBsaXN0ZW5lciBpZiBpbml0aWFsaXphdGlvbiBpcyBmaW5pc2hcbiAgICAgICAgaWYgKCF0aGlzLl9pbml0aWFsaXppbmdBY3RpdmUgJiYgdGhpcy5fcmVjYWxjKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0KCdjaGFuZ2UnLCBfY29sb3IsIGV2ZW50U291cmNlLCB0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9jbGVhckNvbG9yKHNpbGVudCA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IHtfcm9vdCwgb3B0aW9uc30gPSB0aGlzO1xuXG4gICAgICAgIC8vIENoYW5nZSBvbmx5IHRoZSBidXR0b24gY29sb3IgaWYgaXQgaXNuJ3QgY3VzdG9taXplZFxuICAgICAgICBpZiAoIW9wdGlvbnMudXNlQXNCdXR0b24pIHtcbiAgICAgICAgICAgIF9yb290LmJ1dHRvbi5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1wY3ItY29sb3InLCAncmdiYSgwLCAwLCAwLCAwLjE1KScpO1xuICAgICAgICB9XG5cbiAgICAgICAgX3Jvb3QuYnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2NsZWFyJyk7XG5cbiAgICAgICAgaWYgKCFvcHRpb25zLnNob3dBbHdheXMpIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbGFzdENvbG9yID0gbnVsbDtcbiAgICAgICAgaWYgKCF0aGlzLl9pbml0aWFsaXppbmdBY3RpdmUgJiYgIXNpbGVudCkge1xuXG4gICAgICAgICAgICAvLyBGaXJlIGxpc3RlbmVyXG4gICAgICAgICAgICB0aGlzLl9lbWl0KCdzYXZlJywgbnVsbCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0KCdjbGVhcicpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX3BhcnNlTG9jYWxDb2xvcihzdHIpIHtcbiAgICAgICAgY29uc3Qge3ZhbHVlcywgdHlwZSwgYX0gPSBwYXJzZVRvSFNWQShzdHIpO1xuICAgICAgICBjb25zdCB7bG9ja09wYWNpdHl9ID0gdGhpcy5vcHRpb25zO1xuICAgICAgICBjb25zdCBhbHBoYU1ha2VzQUNoYW5nZSA9IGEgIT09IHVuZGVmaW5lZCAmJiBhICE9PSAxO1xuXG4gICAgICAgIC8vIElmIG5vIG9wYWNpdHkgaXMgYXBwbGllZCwgYWRkIHVuZGVmaW5lZCBhdCB0aGUgdmVyeSBlbmQgd2hpY2ggZ2V0c1xuICAgICAgICAvLyBTZXQgdG8gMSBpbiBzZXRIU1ZBXG4gICAgICAgIGlmICh2YWx1ZXMgJiYgdmFsdWVzLmxlbmd0aCA9PT0gMykge1xuICAgICAgICAgICAgdmFsdWVzWzNdID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlczogKCF2YWx1ZXMgfHwgKGxvY2tPcGFjaXR5ICYmIGFscGhhTWFrZXNBQ2hhbmdlKSkgPyBudWxsIDogdmFsdWVzLFxuICAgICAgICAgICAgdHlwZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIF90KGtleSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmkxOG5ba2V5XSB8fCBQaWNrci5JMThOX0RFRkFVTFRTW2tleV07XG4gICAgfVxuXG4gICAgX2VtaXQoZXZlbnQsIC4uLmFyZ3MpIHtcbiAgICAgICAgdGhpcy5fZXZlbnRMaXN0ZW5lcltldmVudF0uZm9yRWFjaChjYiA9PiBjYiguLi5hcmdzLCB0aGlzKSk7XG4gICAgfVxuXG4gICAgb24oZXZlbnQsIGNiKSB7XG4gICAgICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJbZXZlbnRdLnB1c2goY2IpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBvZmYoZXZlbnQsIGNiKSB7XG4gICAgICAgIGNvbnN0IGNhbGxCYWNrcyA9ICh0aGlzLl9ldmVudExpc3RlbmVyW2V2ZW50XSB8fCBbXSk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gY2FsbEJhY2tzLmluZGV4T2YoY2IpO1xuXG4gICAgICAgIGlmICh+aW5kZXgpIHtcbiAgICAgICAgICAgIGNhbGxCYWNrcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBwZW5kcyBhIGNvbG9yIHRvIHRoZSBzd2F0Y2ggcGFsZXR0ZVxuICAgICAqIEBwYXJhbSBjb2xvclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqL1xuICAgIGFkZFN3YXRjaChjb2xvcikge1xuICAgICAgICBjb25zdCB7dmFsdWVzfSA9IHRoaXMuX3BhcnNlTG9jYWxDb2xvcihjb2xvcik7XG5cbiAgICAgICAgaWYgKHZhbHVlcykge1xuICAgICAgICAgICAgY29uc3Qge19zd2F0Y2hDb2xvcnMsIF9yb290fSA9IHRoaXM7XG4gICAgICAgICAgICBjb25zdCBjb2xvciA9IEhTVmFDb2xvciguLi52YWx1ZXMpO1xuXG4gICAgICAgICAgICAvLyBDcmVhdGUgbmV3IHN3YXRjaCBIVE1MRWxlbWVudFxuICAgICAgICAgICAgY29uc3QgZWwgPSBfLmNyZWF0ZUVsZW1lbnRGcm9tU3RyaW5nKFxuICAgICAgICAgICAgICAgIGA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBzdHlsZT1cIi0tcGNyLWNvbG9yOiAke2NvbG9yLnRvUkdCQSgpLnRvU3RyaW5nKDApfVwiIGFyaWEtbGFiZWw9XCIke3RoaXMuX3QoJ2J0bjpzd2F0Y2gnKX1cIi8+YFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgLy8gQXBwZW5kIGVsZW1lbnQgYW5kIHNhdmUgc3dhdGNoIGRhdGFcbiAgICAgICAgICAgIF9yb290LnN3YXRjaGVzLmFwcGVuZENoaWxkKGVsKTtcbiAgICAgICAgICAgIF9zd2F0Y2hDb2xvcnMucHVzaCh7ZWwsIGNvbG9yfSk7XG5cbiAgICAgICAgICAgIC8vIEJpbmQgZXZlbnRcbiAgICAgICAgICAgIHRoaXMuX2V2ZW50QmluZGluZ3MucHVzaChcbiAgICAgICAgICAgICAgICBfLm9uKGVsLCAnY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0SFNWQSguLi5jb2xvci50b0hTVkEoKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXQoJ3N3YXRjaHNlbGVjdCcsIGNvbG9yKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1pdCgnY2hhbmdlJywgY29sb3IsICdzd2F0Y2gnLCB0aGlzKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhIHN3YXRjaCBjb2xvciBieSBpdCdzIGluZGV4XG4gICAgICogQHBhcmFtIGluZGV4XG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgcmVtb3ZlU3dhdGNoKGluZGV4KSB7XG4gICAgICAgIGNvbnN0IHN3YXRjaENvbG9yID0gdGhpcy5fc3dhdGNoQ29sb3JzW2luZGV4XTtcblxuICAgICAgICAvLyBDaGVjayBzd2F0Y2ggZGF0YVxuICAgICAgICBpZiAoc3dhdGNoQ29sb3IpIHtcbiAgICAgICAgICAgIGNvbnN0IHtlbH0gPSBzd2F0Y2hDb2xvcjtcblxuICAgICAgICAgICAgLy8gUmVtb3ZlIEhUTUwgY2hpbGQgYW5kIHN3YXRjaCBkYXRhXG4gICAgICAgICAgICB0aGlzLl9yb290LnN3YXRjaGVzLnJlbW92ZUNoaWxkKGVsKTtcbiAgICAgICAgICAgIHRoaXMuX3N3YXRjaENvbG9ycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgYXBwbHlDb2xvcihzaWxlbnQgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCB7cHJldmlldywgYnV0dG9ufSA9IHRoaXMuX3Jvb3Q7XG5cbiAgICAgICAgLy8gQ2hhbmdlIHByZXZpZXcgYW5kIGN1cnJlbnQgY29sb3JcbiAgICAgICAgY29uc3QgY3NzUkdCYVN0cmluZyA9IHRoaXMuX2NvbG9yLnRvUkdCQSgpLnRvU3RyaW5nKDApO1xuICAgICAgICBwcmV2aWV3Lmxhc3RDb2xvci5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1wY3ItY29sb3InLCBjc3NSR0JhU3RyaW5nKTtcblxuICAgICAgICAvLyBDaGFuZ2Ugb25seSB0aGUgYnV0dG9uIGNvbG9yIGlmIGl0IGlzbid0IGN1c3RvbWl6ZWRcbiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMudXNlQXNCdXR0b24pIHtcbiAgICAgICAgICAgIGJ1dHRvbi5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1wY3ItY29sb3InLCBjc3NSR0JhU3RyaW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFVzZXIgY2hhbmdlZCB0aGUgY29sb3Igc28gcmVtb3ZlIHRoZSBjbGVhciBjbGFzXG4gICAgICAgIGJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCdjbGVhcicpO1xuXG4gICAgICAgIC8vIFNhdmUgbGFzdCBjb2xvclxuICAgICAgICB0aGlzLl9sYXN0Q29sb3IgPSB0aGlzLl9jb2xvci5jbG9uZSgpO1xuXG4gICAgICAgIC8vIEZpcmUgbGlzdGVuZXJcbiAgICAgICAgaWYgKCF0aGlzLl9pbml0aWFsaXppbmdBY3RpdmUgJiYgIXNpbGVudCkge1xuICAgICAgICAgICAgdGhpcy5fZW1pdCgnc2F2ZScsIHRoaXMuX2NvbG9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlc3Ryb3kncyBhbGwgZnVuY3Rpb25hbGl0eXNcbiAgICAgKi9cbiAgICBkZXN0cm95KCkge1xuXG4gICAgICAgIC8vIENhbmNlbCBzZXR1cC1mcmFtZSBpZiBzZXRcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fc2V0dXBBbmltYXRpb25GcmFtZSk7XG5cbiAgICAgICAgLy8gVW5iaW5kIGV2ZW50c1xuICAgICAgICB0aGlzLl9ldmVudEJpbmRpbmdzLmZvckVhY2goYXJncyA9PiBfLm9mZiguLi5hcmdzKSk7XG5cbiAgICAgICAgLy8gRGVzdHJveSBzdWItY29tcG9uZW50c1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLl9jb21wb25lbnRzKVxuICAgICAgICAgICAgLmZvckVhY2goa2V5ID0+IHRoaXMuX2NvbXBvbmVudHNba2V5XS5kZXN0cm95KCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlc3Ryb3kncyBhbGwgZnVuY3Rpb25hbGl0eXMgYW5kIHJlbW92ZXNcbiAgICAgKiB0aGUgcGlja3IgZWxlbWVudC5cbiAgICAgKi9cbiAgICBkZXN0cm95QW5kUmVtb3ZlKCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgY29uc3Qge3Jvb3QsIGFwcH0gPSB0aGlzLl9yb290O1xuXG4gICAgICAgIC8vIFJlbW92ZSBlbGVtZW50XG4gICAgICAgIGlmIChyb290LnBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJvb3QucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZChyb290KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlbW92ZSAucGNyLWFwcFxuICAgICAgICBhcHAucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZChhcHApO1xuXG4gICAgICAgIC8vIFRoZXJlIGFyZSByZWZlcmVuY2VzIHRvIHZhcmlvdXMgRE9NIGVsZW1lbnRzIHN0b3JlZCBpbiB0aGUgcGlja3IgaW5zdGFuY2VcbiAgICAgICAgLy8gVGhpcyBjbGVhbnMgYWxsIG9mIHRoZW0gdG8gYXZvaWQgZGV0YWNoZWQgRE9Nc1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzKVxuICAgICAgICAgICAgLmZvckVhY2goa2V5ID0+IHRoaXNba2V5XSA9IG51bGwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhpZGVzIHRoZSBjb2xvci1waWNrZXIgdWkuXG4gICAgICovXG4gICAgaGlkZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3Jvb3QuYXBwLmNsYXNzTGlzdC5yZW1vdmUoJ3Zpc2libGUnKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXQoJ2hpZGUnKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3dzIHRoZSBjb2xvci1waWNrZXIgdWkuXG4gICAgICovXG4gICAgc2hvdygpIHtcbiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuZGlzYWJsZWQgJiYgIXRoaXMuaXNPcGVuKCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3Jvb3QuYXBwLmNsYXNzTGlzdC5hZGQoJ3Zpc2libGUnKTtcbiAgICAgICAgICAgIHRoaXMuX3JlUG9zaXRpb25pbmdQaWNrZXIoKTtcbiAgICAgICAgICAgIHRoaXMuX2VtaXQoJ3Nob3cnLCB0aGlzLl9jb2xvcik7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSBJZiB0aGUgY29sb3IgcGlja2VyIGlzIGN1cnJlbnRseSBvcGVuXG4gICAgICovXG4gICAgaXNPcGVuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm9vdC5hcHAuY2xhc3NMaXN0LmNvbnRhaW5zKCd2aXNpYmxlJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IGEgc3BlY2lmaWMgY29sb3IuXG4gICAgICogQHBhcmFtIGggSHVlXG4gICAgICogQHBhcmFtIHMgU2F0dXJhdGlvblxuICAgICAqIEBwYXJhbSB2IFZhbHVlXG4gICAgICogQHBhcmFtIGEgQWxwaGEgY2hhbm5lbCAoMCAtIDEpXG4gICAgICogQHBhcmFtIHNpbGVudCBJZiB0aGUgYnV0dG9uIHNob3VsZCBub3QgY2hhbmdlIHRoZSBjb2xvclxuICAgICAqIEByZXR1cm4gYm9vbGVhbiBpZiB0aGUgY29sb3IgaGFzIGJlZW4gYWNjZXB0ZWRcbiAgICAgKi9cbiAgICBzZXRIU1ZBKGggPSAzNjAsIHMgPSAwLCB2ID0gMCwgYSA9IDEsIHNpbGVudCA9IGZhbHNlKSB7XG5cbiAgICAgICAgLy8gRGVhY3RpdmF0ZSBjb2xvciBjYWxjdWxhdGlvblxuICAgICAgICBjb25zdCByZWNhbGMgPSB0aGlzLl9yZWNhbGM7IC8vIFNhdmUgc3RhdGVcbiAgICAgICAgdGhpcy5fcmVjYWxjID0gZmFsc2U7XG5cbiAgICAgICAgLy8gVmFsaWRhdGUgaW5wdXRcbiAgICAgICAgaWYgKGggPCAwIHx8IGggPiAzNjAgfHwgcyA8IDAgfHwgcyA+IDEwMCB8fCB2IDwgMCB8fCB2ID4gMTAwIHx8IGEgPCAwIHx8IGEgPiAxKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPdmVycmlkZSBjdXJyZW50IGNvbG9yIGFuZCByZS1hY3RpdmUgY29sb3IgY2FsY3VsYXRpb25cbiAgICAgICAgdGhpcy5fY29sb3IgPSBIU1ZhQ29sb3IoaCwgcywgdiwgYSk7XG5cbiAgICAgICAgLy8gVXBkYXRlIHNsaWRlciBhbmQgcGFsZXR0ZVxuICAgICAgICBjb25zdCB7aHVlLCBvcGFjaXR5LCBwYWxldHRlfSA9IHRoaXMuX2NvbXBvbmVudHM7XG4gICAgICAgIGh1ZS51cGRhdGUoKGggLyAzNjApKTtcbiAgICAgICAgb3BhY2l0eS51cGRhdGUoYSk7XG4gICAgICAgIHBhbGV0dGUudXBkYXRlKHMgLyAxMDAsIDEgLSAodiAvIDEwMCkpO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIGNhbGwgaXMgc2lsZW50XG4gICAgICAgIGlmICghc2lsZW50KSB7XG4gICAgICAgICAgICB0aGlzLmFwcGx5Q29sb3IoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFVwZGF0ZSBvdXRwdXQgaWYgcmVjYWxjdWxhdGlvbiBpcyBlbmFibGVkXG4gICAgICAgIGlmIChyZWNhbGMpIHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU91dHB1dCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVzdG9yZSBvbGQgc3RhdGVcbiAgICAgICAgdGhpcy5fcmVjYWxjID0gcmVjYWxjO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmllcyB0byBwYXJzZSBhIHN0cmluZyB3aGljaCByZXByZXNlbnRzIGEgY29sb3IuXG4gICAgICogRXhhbXBsZXM6ICNmZmZcbiAgICAgKiAgICAgICAgICAgcmdiIDEwIDEwIDIwMFxuICAgICAqICAgICAgICAgICBoc3ZhIDEwIDIwIDUgMC41XG4gICAgICogQHBhcmFtIHN0cmluZ1xuICAgICAqIEBwYXJhbSBzaWxlbnRcbiAgICAgKi9cbiAgICBzZXRDb2xvcihzdHJpbmcsIHNpbGVudCA9IGZhbHNlKSB7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgbnVsbFxuICAgICAgICBpZiAoc3RyaW5nID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLl9jbGVhckNvbG9yKHNpbGVudCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHt2YWx1ZXMsIHR5cGV9ID0gdGhpcy5fcGFyc2VMb2NhbENvbG9yKHN0cmluZyk7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgY29sb3IgaXMgb2tcbiAgICAgICAgaWYgKHZhbHVlcykge1xuXG4gICAgICAgICAgICAvLyBDaGFuZ2Ugc2VsZWN0ZWQgY29sb3IgZm9ybWF0XG4gICAgICAgICAgICBjb25zdCB1dHlwZSA9IHR5cGUudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIGNvbnN0IHtvcHRpb25zfSA9IHRoaXMuX3Jvb3QuaW50ZXJhY3Rpb247XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBvcHRpb25zLmZpbmQoZWwgPT4gZWwuZ2V0QXR0cmlidXRlKCdkYXRhLXR5cGUnKSA9PT0gdXR5cGUpO1xuXG4gICAgICAgICAgICAvLyBBdXRvIHNlbGVjdCBvbmx5IGlmIG5vdCBoaWRkZW5cbiAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgIXRhcmdldC5oaWRkZW4pIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGVsIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgZWwuY2xhc3NMaXN0W2VsID09PSB0YXJnZXQgPyAnYWRkJyA6ICdyZW1vdmUnXSgnYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBVcGRhdGUgY29sb3IgKGZpcmVzICdzYXZlJyBldmVudCBpZiBzaWxlbnQgaXMgJ2ZhbHNlJylcbiAgICAgICAgICAgIGlmICghdGhpcy5zZXRIU1ZBKC4uLnZhbHVlcywgc2lsZW50KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gVXBkYXRlIHJlcHJlc2VudGF0aW9uIChmaXJlcyAnY2hhbmdlJyBldmVudClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldENvbG9yUmVwcmVzZW50YXRpb24odXR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoYW5nZXMgdGhlIGNvbG9yIF9yZXByZXNlbnRhdGlvbi5cbiAgICAgKiBBbGxvd2VkIHZhbHVlcyBhcmUgSEVYLCBSR0IsIEhTViwgSFNMIGFuZCBDTVlLXG4gICAgICogQHBhcmFtIHR5cGVcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gaWYgdGhlIHNlbGVjdGVkIHR5cGUgd2FzIHZhbGlkLlxuICAgICAqL1xuICAgIHNldENvbG9yUmVwcmVzZW50YXRpb24odHlwZSkge1xuXG4gICAgICAgIC8vIEZvcmNlIHVwcGVyY2FzZSB0byBhbGxvdyBhIGNhc2Utc2Vuc2l0aXYgY29tcGFyaXNvblxuICAgICAgICB0eXBlID0gdHlwZS50b1VwcGVyQ2FzZSgpO1xuXG4gICAgICAgIC8vIEZpbmQgYnV0dG9uIHdpdGggZ2l2ZW4gdHlwZSBhbmQgdHJpZ2dlciBjbGljayBldmVudFxuICAgICAgICByZXR1cm4gISF0aGlzLl9yb290LmludGVyYWN0aW9uLm9wdGlvbnNcbiAgICAgICAgICAgIC5maW5kKHYgPT4gdi5nZXRBdHRyaWJ1dGUoJ2RhdGEtdHlwZScpLnN0YXJ0c1dpdGgodHlwZSkgJiYgIXYuY2xpY2soKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY3VycmVudCBjb2xvciByZXByZXNlbnRhaW9uLiBTZWUgc2V0Q29sb3JSZXByZXNlbnRhdGlvblxuICAgICAqIEByZXR1cm5zIHsqfVxuICAgICAqL1xuICAgIGdldENvbG9yUmVwcmVzZW50YXRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXByZXNlbnRhdGlvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBIU1ZhQ29sb3IgQ3VycmVudCBIU1ZhQ29sb3Igb2JqZWN0LlxuICAgICAqL1xuICAgIGdldENvbG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sb3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGNvbG9yLlxuICAgICAqIEByZXR1cm5zIHt7YSwgdG9IU1ZBLCB0b0hFWEEsIHMsIHYsIGgsIGNsb25lLCB0b0NNWUssIHRvSFNMQSwgdG9SR0JBfX1cbiAgICAgKi9cbiAgICBnZXRTZWxlY3RlZENvbG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFzdENvbG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIFRoZSByb290IEhUTUxFbGVtZW50IHdpdGggYWxsIGhpcyBjb21wb25lbnRzLlxuICAgICAqL1xuICAgIGdldFJvb3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb290O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpc2FibGUgcGlja3JcbiAgICAgKi9cbiAgICBkaXNhYmxlKCkge1xuICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgdGhpcy5vcHRpb25zLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fcm9vdC5idXR0b24uY2xhc3NMaXN0LmFkZCgnZGlzYWJsZWQnKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW5hYmxlIHBpY2tyXG4gICAgICovXG4gICAgZW5hYmxlKCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fcm9vdC5idXR0b24uY2xhc3NMaXN0LnJlbW92ZSgnZGlzYWJsZWQnKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufVxuIiwgImltcG9ydCB7IFBsdWdpbiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBERUZBVUxUX1NFVFRJTkdTLCBDb2RlYmxvY2tDdXN0b21pemVyU2V0dGluZ3MgfSBmcm9tICcuL1NldHRpbmdzJztcbmltcG9ydCB7IGNvZGVibG9ja0hpZ2hsaWdodCB9IGZyb20gXCIuL0NvZGVCbG9ja0hpZ2hsaWdodFwiO1xuaW1wb3J0IHsgY29kZWJsb2NrSGVhZGVyLCBjb2xsYXBzZUZpZWxkIH0gZnJvbSBcIi4vSGVhZGVyXCI7XG5pbXBvcnQgeyBSZWFkaW5nVmlldyB9IGZyb20gXCIuL1JlYWRpbmdWaWV3T2xkXCI7XG5pbXBvcnQgeyBTZXR0aW5nc1RhYiB9IGZyb20gXCIuL1NldHRpbmdzVGFiXCI7XG5pbXBvcnQgeyBsb2FkSWNvbnMsIEJMT0JTLCB1cGRhdGVTZXR0aW5nU3R5bGVzIH0gZnJvbSBcIi4vVXRpbHNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29kZWJsb2NrQ3VzdG9taXplclBsdWdpbiBleHRlbmRzIFBsdWdpbiB7XG4gIHNldHRpbmdzOiBDb2RlYmxvY2tDdXN0b21pemVyU2V0dGluZ3M7XG4gIFxuICBhc3luYyBvbmxvYWQoKSB7XG4gICAgYXdhaXQgdGhpcy5sb2FkU2V0dGluZ3MoKTtcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ2NvZGVibG9jay1jdXN0b21pemVyJyk7XG5cbiAgICBsb2FkSWNvbnMoKTtcblxuICAgIGNvZGVibG9ja0hlYWRlci5zZXR0aW5ncyA9IHRoaXMuc2V0dGluZ3M7XG4gICAgXG4gICAgY29sbGFwc2VGaWVsZC5wbHVnaW5TZXR0aW5ncyA9IHRoaXMuc2V0dGluZ3M7XG4gICAgdGhpcy5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihbXG4gICAgICBjb2RlYmxvY2tIZWFkZXIsXG4gICAgICBjb2xsYXBzZUZpZWxkLFxuICAgICAgY29kZWJsb2NrSGlnaGxpZ2h0KHRoaXMuc2V0dGluZ3MpXG4gICAgXSk7XG4gICAgXG4gICAgY29uc3Qgc2V0dGluZ3NUYWIgPSBuZXcgU2V0dGluZ3NUYWIodGhpcy5hcHAsIHRoaXMpO1xuICAgIHRoaXMuYWRkU2V0dGluZ1RhYihzZXR0aW5nc1RhYik7XG4gICAgXG4gICAgLy91cGRhdGVTZXR0aW5nU3R5bGVzKHRoaXMuc2V0dGluZ3MpO1xuICAgIFxuICAgIHRoaXMucmVnaXN0ZXJFdmVudCh0aGlzLmFwcC53b3Jrc3BhY2Uub24oJ2Nzcy1jaGFuZ2UnLCB0aGlzLmhhbmRsZUNzc0NoYW5nZS5iaW5kKHRoaXMsIHNldHRpbmdzVGFiKSwgdGhpcykpO1xuXG4gICAgLy8gcmVhZGluZyBtb2RlXG4gICAgdGhpcy5yZWdpc3Rlck1hcmtkb3duUG9zdFByb2Nlc3Nvcihhc3luYyAoZWwsIGN0eCkgPT4geyAgICBcbiAgICAgIGF3YWl0IFJlYWRpbmdWaWV3KGVsLCBjdHgsIHRoaXMpXG4gICAgfSlcblxuICAgIGNvbnNvbGUubG9nKFwibG9hZGluZyBDb2RlQmxvY2sgQ3VzdG9taXplciBwbHVnaW5cIik7XG4gIH0vLyBvbmxvYWRcbiAgXG4gIGhhbmRsZUNzc0NoYW5nZShzZXR0aW5nc1RhYikge1xuICAgIGNvbnNvbGUubG9nKCd1cGRhdGluZyBjc3MnKTtcbiAgfS8vIGhhbmRsZUNzc0NoYW5nZVxuICBcbiAgb251bmxvYWQoKSB7XG4gICAgY29uc29sZS5sb2coXCJ1bmxvYWRpbmcgQ29kZUJsb2NrIEN1c3RvbWl6ZXIgcGx1Z2luXCIpO1xuICAgIC8vIHVubG9hZCBpY29uc1xuICAgIGZvciAoY29uc3QgdXJsIG9mIE9iamVjdC52YWx1ZXMoQkxPQlMpKSB7XG4gICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybClcbiAgICB9XG5cdH1cbiAgXG5cdGFzeW5jIGxvYWRTZXR0aW5ncygpIHtcblx0XHR0aGlzLnNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9TRVRUSU5HUywgYXdhaXQgdGhpcy5sb2FkRGF0YSgpKTtcblx0fVxuXG5cdGFzeW5jIHNhdmVTZXR0aW5ncygpIHtcblx0XHRhd2FpdCB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xuICAgIHRoaXMuYXBwLndvcmtzcGFjZS51cGRhdGVPcHRpb25zKCk7XG4gICAgLy8gdXBkYXRlU2V0dGluZ1N0eWxlcyh0aGlzLnNldHRpbmdzKTtcblx0fVxufVxuIiwgIi8vIENvbG9yIFR5cGluZ1xuZXhwb3J0IHR5cGUgSEVYID0gYCMke3N0cmluZ31gO1xuLy8gZXhwb3J0IHR5cGUgUkdCID0gYHJnYigke251bWJlcn0sICR7bnVtYmVyfSwgJHtudW1iZXJ9KWA7XG4vLyBleHBvcnQgdHlwZSBSR0JBID0gYHJnYmEoJHtudW1iZXJ9LCR7bnVtYmVyfSwke251bWJlcn0sJHtudW1iZXJ9KWA7XG4vLyBleHBvcnQgdHlwZSBIU0wgPSBgaHNsKCR7bnVtYmVyfSwke251bWJlcn0lLCR7bnVtYmVyfSUpYDtcbi8vIGV4cG9ydCB0eXBlIEhTTEEgPSBgaHNsKCR7bnVtYmVyfSwke251bWJlcn0lLCR7bnVtYmVyfSUsJHtudW1iZXJ9KWA7XG5leHBvcnQgdHlwZSBDU1MgPSBgLS0ke3N0cmluZ31gO1xuZXhwb3J0IHR5cGUgQ29sb3IgPSBIRVggfCBDU1M7XG5leHBvcnQgdHlwZSBQZXJjZW50YWdlID0gYCR7bnVtYmVyfSVgO1xuZXhwb3J0IHR5cGUgRGlzcGxheSA9IFwibm9uZVwiIHwgXCJ0aXRsZV9vbmx5XCIgfCBcImFsd2F5c1wiO1xuXG4vLyBJbnRlcmZhY2UgQ3JlYXRpb25cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lTW9kZUNvbG9ycyB7XG4gIGNvZGVibG9jazoge1xuICAgIGJhY2tncm91bmRDb2xvcjogQ29sb3I7XG4gICAgdGV4dENvbG9yOiBDb2xvcjtcbiAgfSxcbiAgZ3V0dGVyOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiBDb2xvcjtcbiAgICB0ZXh0Q29sb3I6IENvbG9yO1xuICB9LFxuICBoZWFkZXI6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IENvbG9yO1xuICAgIHRpdGxlOiB7XG4gICAgICB0ZXh0Q29sb3I6IENvbG9yO1xuICAgIH0sXG4gICAgbGFuZ3VhZ2VUYWc6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogQ29sb3I7XG4gICAgICB0ZXh0Q29sb3I6IENvbG9yO1xuICAgIH0sXG4gICAgbGluZUNvbG9yOiBDb2xvcjtcbiAgfSxcbiAgaGlnaGxpZ2h0czoge1xuICAgIGFjdGl2ZUNvZGVibG9ja0xpbmVDb2xvcjogQ29sb3I7XG4gICAgYWN0aXZlRWRpdG9yTGluZUNvbG9yOiBDb2xvcjtcbiAgICBkZWZhdWx0Q29sb3I6IENvbG9yO1xuICAgIGFsdGVybmF0aXZlSGlnaGxpZ2h0czogUmVjb3JkPHN0cmluZyxDb2xvcj47XG4gIH0sXG59XG5leHBvcnQgaW50ZXJmYWNlIENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZVNldHRpbmdzIHtcbiAgY29kZWJsb2NrOiB7XG4gICAgbGluZU51bWJlcnM6IGJvb2xlYW47XG4gICAgY3VydmF0dXJlOiBudW1iZXI7XG4gIH0sXG4gIGd1dHRlcjoge1xuICAgIGhpZ2hsaWdodDogYm9vbGVhbjtcbiAgfSxcbiAgaGVhZGVyOiB7XG4gICAgdGl0bGU6IHtcbiAgICAgIHRleHRGb250OiBzdHJpbmc7XG4gICAgICB0ZXh0Qm9sZDogYm9vbGVhbjtcbiAgICAgIHRleHRJdGFsaWM6IGJvb2xlYW47XG4gICAgfSxcbiAgICBsYW5ndWFnZVRhZzoge1xuICAgICAgZGlzcGxheTogRGlzcGxheTtcbiAgICAgIHRleHRGb250OiBzdHJpbmc7XG4gICAgICB0ZXh0Qm9sZDogYm9vbGVhbjtcbiAgICAgIHRleHRJdGFsaWM6IGJvb2xlYW47XG4gICAgfSxcbiAgICBsYW5ndWFnZUljb246IHtcbiAgICAgIGRpc3BsYXk6IERpc3BsYXk7XG4gICAgICBkaXNwbGF5Q29sb3I6IGJvb2xlYW47XG4gICAgfSxcbiAgICBjb2xsYXBzZVBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIH0sXG4gIGhpZ2hsaWdodHM6IHtcbiAgICBhY3RpdmVDb2RlYmxvY2tMaW5lOiBib29sZWFuO1xuICAgIGFjdGl2ZUVkaXRvckxpbmU6IGJvb2xlYW47XG4gIH0sXG4gIGFkdmFuY2VkOiB7XG4gICAgZ3JhZGllbnRIaWdobGlnaHRzOiBib29sZWFuO1xuICAgIGdyYWRpZW50SGlnaGxpZ2h0c0NvbG9yU3RvcDogUGVyY2VudGFnZTtcbiAgICBsYW5ndWFnZUJvcmRlckNvbG9yOiBib29sZWFuO1xuICAgIGljb25TaXplOiBudW1iZXI7XG4gIH07XG59XG5leHBvcnQgaW50ZXJmYWNlIENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZUNvbG9ycyB7XG4gIGxpZ2h0OiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVNb2RlQ29sb3JzO1xuICBkYXJrOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVNb2RlQ29sb3JzO1xufVxuZXhwb3J0IGludGVyZmFjZSBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWUge1xuICBzZXR0aW5nczogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lU2V0dGluZ3M7XG4gIGNvbG9yczogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzO1xufVxuZXhwb3J0IGludGVyZmFjZSBDb2RlYmxvY2tDdXN0b21pemVyU2V0dGluZ3Mge1xuICB0aGVtZXM6IFJlY29yZDxzdHJpbmcsQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lPjtcbiAgc2VsZWN0ZWRUaGVtZTogc3RyaW5nO1xuICBkZWZhdWx0VGhlbWU6IHN0cmluZztcbiAgY3VycmVudFRoZW1lOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWU7XG4gIG5ld1RoZW1lOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRlZmF1bHQ6IGJvb2xlYW47XG4gIH0sXG4gIG5ld0hpZ2hsaWdodDogc3RyaW5nO1xuICBleGNsdWRlZExhbmdzOiBzdHJpbmc7XG59XG5cbi8vIFRoZW1lIERlZmF1bHRzXG5leHBvcnQgY29uc3QgTkVXX1RIRU1FX0RFRkFVTFQ6IHtuYW1lOiBzdHJpbmcsIGRlZmF1bHQ6IGJvb2xlYW59ID0ge1xuICBuYW1lOiAnJyxcbiAgZGVmYXVsdDogZmFsc2UsXG59XG5jb25zdCBUSEVNRV9ERUZBVUxUX1NFVFRJTkdTOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVTZXR0aW5ncyA9IHtcbiAgY29kZWJsb2NrOiB7XG4gICAgbGluZU51bWJlcnM6IHRydWUsXG4gICAgY3VydmF0dXJlOiAxMCxcbiAgfSxcbiAgZ3V0dGVyOiB7XG4gICAgaGlnaGxpZ2h0OiB0cnVlLFxuICB9LFxuICBoZWFkZXI6IHtcbiAgICB0aXRsZToge1xuICAgICAgdGV4dEZvbnQ6ICcnLFxuICAgICAgdGV4dEJvbGQ6IGZhbHNlLFxuICAgICAgdGV4dEl0YWxpYzogZmFsc2UsXG4gICAgfSxcbiAgICBsYW5ndWFnZVRhZzoge1xuICAgICAgZGlzcGxheTogXCJhbHdheXNcIixcbiAgICAgIHRleHRGb250OiAnJyxcbiAgICAgIHRleHRCb2xkOiB0cnVlLFxuICAgICAgdGV4dEl0YWxpYzogdHJ1ZSxcbiAgICB9LFxuICAgIGxhbmd1YWdlSWNvbjoge1xuICAgICAgZGlzcGxheTogXCJhbHdheXNcIixcbiAgICAgIGRpc3BsYXlDb2xvcjogdHJ1ZSxcbiAgICB9LFxuICAgIGNvbGxhcHNlUGxhY2Vob2xkZXI6ICcnLFxuICB9LFxuICBoaWdobGlnaHRzOiB7XG4gICAgYWN0aXZlQ29kZWJsb2NrTGluZTogdHJ1ZSxcbiAgICBhY3RpdmVFZGl0b3JMaW5lOiBmYWxzZSxcbiAgfSxcbiAgYWR2YW5jZWQ6IHtcbiAgICBncmFkaWVudEhpZ2hsaWdodHM6IGZhbHNlLFxuICAgIGdyYWRpZW50SGlnaGxpZ2h0c0NvbG9yU3RvcDogJzcwJScsXG4gICAgbGFuZ3VhZ2VCb3JkZXJDb2xvcjogZmFsc2UsXG4gICAgaWNvblNpemU6IDI4LFxuICB9LFxufVxuZXhwb3J0IGNvbnN0IFRIRU1FX0ZBTExCQUNLX0NPTE9SUzogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lTW9kZUNvbG9ycyA9IHtcbiAgY29kZWJsb2NrOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiAnLS1jb2RlLWJhY2tncm91bmQnLFxuICAgIHRleHRDb2xvcjogJy0tY29kZS1ub3JtYWwnLFxuICB9LFxuICBndXR0ZXI6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICctLWNvZGUtYmFja2dyb3VuZCcsXG4gICAgdGV4dENvbG9yOiAnLS1jb2RlLWNvbW1lbnQnLFxuICB9LFxuICBoZWFkZXI6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICctLWNvZGUtYmFja2dyb3VuZCcsXG4gICAgdGl0bGU6IHtcbiAgICAgIHRleHRDb2xvcjogJy0tY29kZS1jb21tZW50JyxcbiAgICB9LFxuICAgIGxhbmd1YWdlVGFnOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICctLWNvZGUtYmFja2dyb3VuZCcsXG4gICAgICB0ZXh0Q29sb3I6ICctLWNvZGUtY29tbWVudCcsXG4gICAgfSxcbiAgICBsaW5lQ29sb3I6ICctLWNvZGUtYmFja2dyb3VuZCcsXG4gIH0sXG4gIGhpZ2hsaWdodHM6IHtcbiAgICBhY3RpdmVDb2RlYmxvY2tMaW5lQ29sb3I6ICctLWNvbG9yLWJhc2UtMzAnLFxuICAgIGFjdGl2ZUVkaXRvckxpbmVDb2xvcjogJy0tY29sb3ItYmFzZS0yMCcsXG4gICAgZGVmYXVsdENvbG9yOiAnLS10ZXh0LWhpZ2hsaWdodC1iZycsXG4gICAgYWx0ZXJuYXRpdmVIaWdobGlnaHRzOiB7fSxcbiAgfSxcbn1cblxuLy8gVGhlbWUgQ3JlYXRpb25cbmNvbnN0IERFRkFVTFRfVEhFTUU6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZSA9IHtcbiAgc2V0dGluZ3M6IFRIRU1FX0RFRkFVTFRfU0VUVElOR1MsXG4gIGNvbG9yczoge1xuICAgIGxpZ2h0OiBUSEVNRV9GQUxMQkFDS19DT0xPUlMsXG4gICAgZGFyazogVEhFTUVfRkFMTEJBQ0tfQ09MT1JTLFxuICB9LFxufVxuY29uc3QgU09MQVJJWkVEX1RIRU1FOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWUgPSB7XG4gIHNldHRpbmdzOiBUSEVNRV9ERUZBVUxUX1NFVFRJTkdTLFxuICBjb2xvcnM6IHtcbiAgICBsaWdodDoge1xuICAgICAgY29kZWJsb2NrOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJyNGQ0Y2RTQnLFxuICAgICAgICB0ZXh0Q29sb3I6ICcjYmFiYWJhJyxcbiAgICAgIH0sXG4gICAgICBndXR0ZXI6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnI0VERThENicsXG4gICAgICAgIHRleHRDb2xvcjogJyM2YzZjNmMnLFxuICAgICAgfSxcbiAgICAgIGhlYWRlcjoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjRDVDQ0I0JyxcbiAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICB0ZXh0Q29sb3I6ICcjODY2NzA0JyxcbiAgICAgICAgfSxcbiAgICAgICAgbGFuZ3VhZ2VUYWc6IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjQjhCNUFBJyxcbiAgICAgICAgICB0ZXh0Q29sb3I6ICcjQzI1RjMwJyxcbiAgICAgICAgfSxcbiAgICAgICAgbGluZUNvbG9yOiAnI0VERDQ4OScsXG4gICAgICB9LFxuICAgICAgaGlnaGxpZ2h0czoge1xuICAgICAgICBhY3RpdmVDb2RlYmxvY2tMaW5lQ29sb3I6ICcjRURFOEQ2JyxcbiAgICAgICAgYWN0aXZlRWRpdG9yTGluZUNvbG9yOiAnIzYwNDYwNjMzJyxcbiAgICAgICAgZGVmYXVsdENvbG9yOiAnI0U5REZCQScsXG4gICAgICAgIGFsdGVybmF0aXZlSGlnaGxpZ2h0czoge30sXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGFyazoge1xuICAgICAgY29kZWJsb2NrOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJyMwMDJiMzYnLFxuICAgICAgICB0ZXh0Q29sb3I6ICcjYmFiYWJhJyxcbiAgICAgIH0sXG4gICAgICBndXR0ZXI6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzA3MzY0MicsXG4gICAgICAgIHRleHRDb2xvcjogJyM2YzZjNmMnLFxuICAgICAgfSxcbiAgICAgIGhlYWRlcjoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjMGE0NTU0JyxcbiAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICB0ZXh0Q29sb3I6ICcjZGFkYWRhJyxcbiAgICAgICAgfSxcbiAgICAgICAgbGFuZ3VhZ2VUYWc6IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjMDA4MDgwJyxcbiAgICAgICAgICB0ZXh0Q29sb3I6ICcjMDAwMDAwJyxcbiAgICAgICAgfSxcbiAgICAgICAgbGluZUNvbG9yOiAnIzQ2Y2NlZCcsXG4gICAgICB9LFxuICAgICAgaGlnaGxpZ2h0czoge1xuICAgICAgICBhY3RpdmVDb2RlYmxvY2tMaW5lQ29sb3I6ICcjMDczNjQyJyxcbiAgICAgICAgYWN0aXZlRWRpdG9yTGluZUNvbG9yOiAnIzQ2OGVlYjMzJyxcbiAgICAgICAgZGVmYXVsdENvbG9yOiAnIzA1NGI1YycsXG4gICAgICAgIGFsdGVybmF0aXZlSGlnaGxpZ2h0czoge30sXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG59XG5cbi8vIFBsdWdpbiBkZWZhdWx0IHNldHRpbmdzXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRVRUSU5HUzogQ29kZWJsb2NrQ3VzdG9taXplclNldHRpbmdzID0ge1xuICB0aGVtZXM6IHtcbiAgICAnRGVmYXVsdCc6IERFRkFVTFRfVEhFTUUsXG4gICAgJ1NvbGFyaXplZCc6IFNPTEFSSVpFRF9USEVNRSxcbiAgfSxcbiAgc2VsZWN0ZWRUaGVtZTogJ0RlZmF1bHQnLFxuICBkZWZhdWx0VGhlbWU6ICdEZWZhdWx0JyxcbiAgY3VycmVudFRoZW1lOiBzdHJ1Y3R1cmVkQ2xvbmUoREVGQVVMVF9USEVNRSksXG4gIG5ld1RoZW1lOiBORVdfVEhFTUVfREVGQVVMVCxcbiAgbmV3SGlnaGxpZ2h0OiAnJyxcbiAgZXhjbHVkZWRMYW5nczogXCJkYXRhdmlldywgZGF0YXZpZXdqcywgYWQtKlwiLFxufVxuIiwgImltcG9ydCB7IFZpZXdQbHVnaW4sIERlY29yYXRpb24sIFdpZGdldFR5cGUgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuaW1wb3J0IHsgUmFuZ2VTZXQgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivc3RhdGVcIjtcbmltcG9ydCB7IHN5bnRheFRyZWUgfSBmcm9tIFwiQGNvZGVtaXJyb3IvbGFuZ3VhZ2VcIjtcblxuaW1wb3J0IHsgc3BsaXRBbmRUcmltU3RyaW5nLCBzZWFyY2hTdHJpbmcsIGdldEhpZ2hsaWdodGVkTGluZXMsIGdldExhbmd1YWdlSWNvbiwgZ2V0TGFuZ3VhZ2VOYW1lLCBpc0V4Y2x1ZGVkIH0gZnJvbSBcIi4vVXRpbHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvZGVibG9ja0hpZ2hsaWdodChzZXR0aW5nczogQ29kZWJsb2NrQ3VzdG9taXplclNldHRpbmdzKSB7XG4gIGNvbnN0IHZpZXdQbHVnaW4gPSBWaWV3UGx1Z2luLmZyb21DbGFzcyhcbiAgICBjbGFzcyBDb2RlYmxvY2tIaWdobGlnaHRQbHVnaW4ge1xuICAgICAgZGVjb3JhdGlvbnM6IERlY29yYXRpb25TZXQ7XG4gICAgICBzZXR0aW5nczogQ29kZWJsb2NrQ3VzdG9taXplclNldHRpbmdzO1xuICAgICAgcHJldkFsdGVybmF0ZUNvbG9yczogQ29sb3JTZXR0aW5nc1tdO1xuICAgICAgdmlldzogRWRpdG9yVmlldztcbiAgICAgIG11dGF0aW9uT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXI7XG4gICAgICBwcmV2QkdDb2xvcjogc3RyaW5nO1xuICAgICAgcHJldkhMQ29sb3I6IHN0cmluZztcbiAgICAgIHByZXZFeGNsdWRlTGFuZ3M6IHN0cmluZztcbiAgICAgIHByZXZUZXh0Q29sb3I6IHN0cmluZztcbiAgICAgIHByZXZCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgICAgIHByZXZIaWdobGlnaHRHdXR0ZXI6IGJvb2xlYW47XG4gICAgICBwcmV2TGluZU51bWJlcnM6IGJvb2xlYW47XG5cbiAgICAgIGNvbnN0cnVjdG9yKHZpZXc6IEVkaXRvclZpZXcpIHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplKHZpZXcsIHNldHRpbmdzKTtcbiAgICAgIH1cblxuICAgICAgaW5pdGlhbGl6ZSh2aWV3OiBFZGl0b3JWaWV3LCBzZXR0aW5nczogQ29kZWJsb2NrQ3VzdG9taXplclNldHRpbmdzKSB7XG4gICAgICAgIHRoaXMudmlldyA9IHZpZXc7XG4gICAgICAgIHRoaXMuc2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICAgICAgdGhpcy5kZWNvcmF0aW9ucyA9IHRoaXMuYnVpbGREZWNvcmF0aW9ucyh2aWV3KTtcbiAgICAgICAgdGhpcy5wcmV2QWx0ZXJuYXRlQ29sb3JzID0gW107XG4gICAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlciA9IHNldHVwTXV0YXRpb25PYnNlcnZlcih2aWV3LCB0aGlzKTtcbiAgICAgICAgdGhpcy5wcmV2QkdDb2xvciA9ICcnO1xuICAgICAgICB0aGlzLnByZXZITENvbG9yID0gJyc7XG4gICAgICAgIHRoaXMucHJldkV4Y2x1ZGVMYW5ncyA9ICcnO1xuICAgICAgICB0aGlzLnByZXZUZXh0Q29sb3IgPSAnJztcbiAgICAgICAgdGhpcy5wcmV2QmFja2dyb3VuZENvbG9yID0gJyc7XG4gICAgICAgIHRoaXMucHJldkhpZ2hsaWdodEd1dHRlciA9IGZhbHNlO1xuICAgICAgICB0aGlzLnByZXZMaW5lTnVtYmVycyA9IGZhbHNlO1xuICAgICAgfS8vIGluaXRpYWxpemVcblxuICAgICAgZm9yY2VVcGRhdGUoZWRpdG9yVmlldzogRWRpdG9yVmlldykge1xuICAgICAgICB0aGlzLnZpZXcgPSBlZGl0b3JWaWV3O1xuICAgICAgICB0aGlzLmRlY29yYXRpb25zID0gdGhpcy5idWlsZERlY29yYXRpb25zKHRoaXMudmlldyk7XG4gICAgICAgIHRoaXMudmlldy5yZXF1ZXN0TWVhc3VyZSgpO1xuICAgICAgfS8vIGZvcmNlVXBkYXRlXG5cbiAgICAgIHNob3VsZFVwZGF0ZSh1cGRhdGU6IFZpZXdVcGRhdGUpIHtcbiAgICAgICAgcmV0dXJuICh1cGRhdGUuZG9jQ2hhbmdlZCB8fCB1cGRhdGUudmlld3BvcnRDaGFuZ2VkIHx8ICF0aGlzLmNvbXBhcmVTZXR0aW5ncygpKTtcbiAgICAgIH0vLyBzaG91bGRVcGRhdGVcblxuICAgICAgY29tcGFyZVNldHRpbmdzKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHRoaXMuc2V0dGluZ3MuYmFja2dyb3VuZENvbG9yID09PSB0aGlzLnByZXZCR0NvbG9yICYmXG4gICAgICAgICAgdGhpcy5zZXR0aW5ncy5oaWdobGlnaHRDb2xvciA9PT0gdGhpcy5wcmV2SExDb2xvciAmJlxuICAgICAgICAgIHRoaXMuc2V0dGluZ3MuRXhjbHVkZUxhbmdzID09PSB0aGlzLnByZXZFeGNsdWRlTGFuZ3MgJiZcbiAgICAgICAgICBjb21wYXJlQXJyYXlzKHRoaXMuc2V0dGluZ3MuYWx0ZXJuYXRlQ29sb3JzLCB0aGlzLnByZXZBbHRlcm5hdGVDb2xvcnMpICYmXG4gICAgICAgICAgdGhpcy5zZXR0aW5ncy5ndXR0ZXJUZXh0Q29sb3IgPT09IHRoaXMucHJldlRleHRDb2xvciAmJlxuICAgICAgICAgIHRoaXMuc2V0dGluZ3MuZ3V0dGVyQmFja2dyb3VuZENvbG9yID09PSB0aGlzLnByZXZCYWNrZ3JvdW5kQ29sb3IgJiZcbiAgICAgICAgICB0aGlzLnNldHRpbmdzLmJHdXR0ZXJIaWdobGlnaHQgPT09IHRoaXMucHJldkhpZ2hsaWdodEd1dHRlciAmJlxuICAgICAgICAgIHRoaXMuc2V0dGluZ3MuYkVuYWJsZUxpbmVOdW1iZXJzID09PSB0aGlzLnByZXZMaW5lTnVtYmVyc1xuICAgICAgICApO1xuICAgICAgfS8vIGNvbXBhcmVTZXR0aW5nc1xuICAgICAgXG4gICAgICB1cGRhdGVTZXR0aW5ncygpIHtcbiAgICAgICAgdGhpcy5wcmV2QkdDb2xvciA9IHRoaXMuc2V0dGluZ3MuYmFja2dyb3VuZENvbG9yO1xuICAgICAgICB0aGlzLnByZXZITENvbG9yID0gdGhpcy5zZXR0aW5ncy5oaWdobGlnaHRDb2xvcjtcbiAgICAgICAgdGhpcy5wcmV2RXhjbHVkZUxhbmdzID0gdGhpcy5zZXR0aW5ncy5FeGNsdWRlTGFuZ3M7XG4gICAgICAgIHRoaXMucHJldkFsdGVybmF0ZUNvbG9ycyA9IHRoaXMuc2V0dGluZ3MuYWx0ZXJuYXRlQ29sb3JzLm1hcCgoe25hbWV9KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtuYW1lfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucHJldlRleHRDb2xvciA9IHRoaXMuc2V0dGluZ3MuZ3V0dGVyVGV4dENvbG9yO1xuICAgICAgICB0aGlzLnByZXZCYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLnNldHRpbmdzLmd1dHRlckJhY2tncm91bmRDb2xvcjtcbiAgICAgICAgdGhpcy5wcmV2SGlnaGxpZ2h0R3V0dGVyID0gdGhpcy5zZXR0aW5ncy5iR3V0dGVySGlnaGxpZ2h0O1xuICAgICAgICB0aGlzLnByZXZMaW5lTnVtYmVycyA9IHRoaXMuc2V0dGluZ3MuYkVuYWJsZUxpbmVOdW1iZXJzO1xuICAgICAgfS8vIHVwZGF0ZVNldHRpbmdzXG5cbiAgICAgIHVwZGF0ZSh1cGRhdGU6IFZpZXdVcGRhdGUpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvdWxkVXBkYXRlKHVwZGF0ZSkpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVNldHRpbmdzKCk7XG4gICAgICAgICAgdGhpcy5kZWNvcmF0aW9ucyA9IHRoaXMuYnVpbGREZWNvcmF0aW9ucyh1cGRhdGUudmlldyk7XG4gICAgICAgIH1cbiAgICAgIH0vLyB1cGRhdGVcblxuICAgICAgZGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH0vLyBkZXN0cm95XG5cbiAgICAgIGZpbHRlclZpc2libGVDb2RlYmxvY2tzKHZpZXc6IEVkaXRvclZpZXcsIGNvZGVibG9ja3M6IENvZGVibG9ja1tdKTogQ29kZWJsb2NrW10ge1xuICAgICAgICByZXR1cm4gY29kZWJsb2Nrcy5maWx0ZXIoKGNvZGVibG9jaykgPT4ge1xuICAgICAgICAgIHJldHVybiB2aWV3LnZpc2libGVSYW5nZXMuc29tZSgodmlzaWJsZVJhbmdlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKGNvZGVibG9jay5mcm9tIDwgdmlzaWJsZVJhbmdlLnRvICYmIGNvZGVibG9jay50byA+IHZpc2libGVSYW5nZS5mcm9tKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9Ly8gZmlsdGVyVmlzaWJsZUNvZGVibG9ja3NcblxuICAgICAgZGVkdXBsaWNhdGVDb2RlYmxvY2tzKGNvZGVibG9ja3M6IENvZGVibG9ja1tdKTogQ29kZWJsb2NrW10ge1xuICAgICAgICBjb25zdCBkZWR1cGxpY2F0ZWRDb2RlYmxvY2tzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29kZWJsb2Nrcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChpID09PSAwIHx8IGNvZGVibG9ja3NbaV0uZnJvbSAhPT0gY29kZWJsb2Nrc1tpIC0gMV0uZnJvbSkge1xuICAgICAgICAgICAgZGVkdXBsaWNhdGVkQ29kZWJsb2Nrcy5wdXNoKGNvZGVibG9ja3NbaV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVkdXBsaWNhdGVkQ29kZWJsb2NrcztcbiAgICAgIH0vLyBkZWR1cGxpY2F0ZUNvZGVibG9ja3NcbiAgXG4gICAgICBidWlsZERlY29yYXRpb25zKHZpZXc6IEVkaXRvclZpZXcpOiBEZWNvcmF0aW9uU2V0IHtcbiAgICAgICAgbGV0IGxpbmVOdW1iZXIgPSAwO1xuICAgICAgICBsZXQgSEwgPSBbXTtcbiAgICAgICAgbGV0IGFsdEhMID0gW107XG4gICAgICAgIGxldCBsaW5lTnVtYmVyT2Zmc2V0ID0gMDtcbiAgICAgICAgbGV0IHNob3dOdW1iZXJzID0gdHJ1ZTtcbiAgICAgICAgLy8gY29uc3QgRXhjbHVkZSA9IHRoaXMuc2V0dGluZ3MuRXhjbHVkZUxhbmdzO1xuICAgICAgICAvLyBjb25zdCBFeGNsdWRlTGFuZ3MgPSBzcGxpdEFuZFRyaW1TdHJpbmcoRXhjbHVkZSk7XG4gICAgICAgIGxldCBiRXhjbHVkZSA9IGZhbHNlO1xuICAgICAgICBjb25zdCBhbHRlcm5hdGVDb2xvcnMgPSB0aGlzLnNldHRpbmdzLmFsdGVybmF0ZUNvbG9ycyB8fCBbXTtcbiAgICAgICAgY29uc3QgZGVjb3JhdGlvbnMgPSBbXTtcblxuICAgICAgICBpZiAoIXZpZXcudmlzaWJsZVJhbmdlcyB8fCB2aWV3LnZpc2libGVSYW5nZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIFJhbmdlU2V0LmVtcHR5O1xuICAgICAgICB9XG4gICAgICAgICAgXG4gICAgICAgIC8vIEZpbmQgYWxsIGNvZGUgYmxvY2tzIGluIHRoZSBkb2N1bWVudFxuICAgICAgICBjb25zdCBjb2RlYmxvY2tzID0gZmluZENvZGVibG9ja3Modmlldy5zdGF0ZSwgdmlldy5zdGF0ZS5kb2MuZnJvbSwgdmlldy5zdGF0ZS5kb2MudG8pO1xuICAgICAgICAvLyBGaW5kIGNvZGUgYmxvY2tzIHRoYXQgaW50ZXJzZWN0IHdpdGggdGhlIHZpc2libGUgcmFuZ2VcbiAgICAgICAgY29uc3QgdmlzaWJsZUNvZGVibG9ja3MgPSB0aGlzLmZpbHRlclZpc2libGVDb2RlYmxvY2tzKHZpZXcsIGNvZGVibG9ja3MpO1xuICAgICAgICAvLyByZW1vdmUgZHVwbGljYXRlc1xuICAgICAgICBjb25zdCBkZWR1cGxpY2F0ZWRDb2RlYmxvY2tzID0gdGhpcy5kZWR1cGxpY2F0ZUNvZGVibG9ja3ModmlzaWJsZUNvZGVibG9ja3MpO1xuXG4gICAgICAgIGZvciAoY29uc3QgY29kZWJsb2NrIG9mIGRlZHVwbGljYXRlZENvZGVibG9ja3MpIHtcbiAgICAgICAgICBzeW50YXhUcmVlKHZpZXcuc3RhdGUpLml0ZXJhdGUoeyBmcm9tOiBjb2RlYmxvY2suZnJvbSwgdG86IGNvZGVibG9jay50byxcbiAgICAgICAgICAgIGVudGVyKG5vZGUpIHtcbiAgICAgICAgICAgICAgY29uc3QgbGluZSA9IHZpZXcuc3RhdGUuZG9jLmxpbmVBdChub2RlLmZyb20pO1xuICAgICAgICAgICAgICBjb25zdCBsaW5lVGV4dCA9IHZpZXcuc3RhdGUuc2xpY2VEb2MobGluZS5mcm9tLCBsaW5lLnRvKTtcbiAgICAgICAgICAgICAgY29uc3QgbGFuZyA9IHNlYXJjaFN0cmluZyhsaW5lVGV4dCwgXCJgYGBcIik7XG4gICAgICAgICAgICAgIGNvbnN0IHN0YXJ0TGluZSA9IG5vZGUudHlwZS5uYW1lLmluY2x1ZGVzKFwiSHlwZXJNRC1jb2RlYmxvY2stYmVnaW5cIilcbiAgICAgICAgICAgICAgY29uc3QgZW5kTGluZSA9IG5vZGUudHlwZS5uYW1lLmluY2x1ZGVzKFwiSHlwZXJNRC1jb2RlYmxvY2stZW5kXCIpXG4gICAgICAgICAgICAgIGlmIChsYW5nKSB7XG4gICAgICAgICAgICAgICAgYkV4Y2x1ZGUgPSBpc0V4Y2x1ZGVkKGxpbmVUZXh0LCBzZXR0aW5ncy5FeGNsdWRlTGFuZ3MpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChiRXhjbHVkZSkge1xuICAgICAgICAgICAgICAgIGlmIChlbmRMaW5lKSB7XG4gICAgICAgICAgICAgICAgICBiRXhjbHVkZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHN0YXJ0TGluZSkge1xuICAgICAgICAgICAgICAgIGxpbmVOdW1iZXIgPSAwO1xuICAgICAgICAgICAgICAgIGxpbmVOdW1iZXJPZmZzZXQgPSAwOyAvL3NlYXJjaFN0cmluZyhjb2RlQmxvY2tGaXJzdExpbmUsIFwibG46XCIpLy9UT0RPIChAbWF5dXJhbmt2KSBTZXQgbGluZSBudW1iZXIgb2Zmc2V0IGhlcmUgLSBTaG91bGQgYmUgbG5fdmFsdWUgLSAxIHNpbmNlIGl0IGlzIG9mZnNldCwgbm90IHN0YXJ0aW5nIGxpbmUgbnVtYmVyIC0gMCBpZiB0cnVlIE9SIGZhbHNlXG4gICAgICAgICAgICAgICAgc2hvd051bWJlcnMgPSB0cnVlOyAvL1RPRE8gKEBtYXl1cmFua3YpIFNldCBzaG93TnVtYmVycyB0byBiZSB0cnVlIGlmIGxuOjxudW1iZXI+IG9yIGxuOnRydWUgb3IgZmFsc2UgaWYgbG46ZmFsc2VcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSBzZWFyY2hTdHJpbmcobGluZVRleHQsIFwiSEw6XCIpO1xuICAgICAgICAgICAgICAgIEhMID0gZ2V0SGlnaGxpZ2h0ZWRMaW5lcyhwYXJhbXMpO1xuICAgICAgICAgICAgICAgIGFsdEhMID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB7IG5hbWUgfSBvZiBhbHRlcm5hdGVDb2xvcnMpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGFsdFBhcmFtcyA9IHNlYXJjaFN0cmluZyhsaW5lVGV4dCwgYCR7bmFtZX06YCk7XG4gICAgICAgICAgICAgICAgICBhbHRITCA9IGFsdEhMLmNvbmNhdChnZXRIaWdobGlnaHRlZExpbmVzKGFsdFBhcmFtcykubWFwKChsaW5lTnVtYmVyKSA9PiAoeyBuYW1lLCBsaW5lTnVtYmVyIH0pKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxldCBsaW5lQ2xhc3MgPSAnY29kZWJsb2NrLWN1c3RvbWl6ZXItbGluZSc7XG4gICAgICAgICAgICAgIGlmIChITC5pbmNsdWRlcyhsaW5lTnVtYmVyKSkge1xuICAgICAgICAgICAgICAgIGxpbmVDbGFzcyA9ICdjb2RlYmxvY2stY3VzdG9taXplci1saW5lLWhpZ2hsaWdodGVkJztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbHRITE1hdGNoID0gYWx0SEwuZmlsdGVyKChobCkgPT4gaGwubGluZU51bWJlciA9PT0gbGluZU51bWJlcik7XG4gICAgICAgICAgICAgICAgaWYgKGFsdEhMTWF0Y2gubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgbGluZUNsYXNzID0gYGNvZGVibG9jay1jdXN0b21pemVyLWxpbmUtaGlnaGxpZ2h0ZWQtJHthbHRITE1hdGNoWzBdLm5hbWUucmVwbGFjZSgvXFxzKy9nLCAnLScpLnRvTG93ZXJDYXNlKCl9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAobm9kZS50eXBlLm5hbWUgPT09IFwiSHlwZXJNRC1jb2RlYmxvY2tfSHlwZXJNRC1jb2RlYmxvY2stYmdcIiB8fCBzdGFydExpbmUgfHwgZW5kTGluZSkge1xuICAgICAgICAgICAgICAgIGRlY29yYXRpb25zLnB1c2goRGVjb3JhdGlvbi5saW5lKHthdHRyaWJ1dGVzOiB7Y2xhc3M6IGxpbmVDbGFzc319KS5yYW5nZShub2RlLmZyb20pKTtcblxuICAgICAgICAgICAgICAgIGRlY29yYXRpb25zLnB1c2goRGVjb3JhdGlvbi5saW5lKHt9KS5yYW5nZShub2RlLmZyb20pKTtcbiAgICAgICAgICAgICAgICBkZWNvcmF0aW9ucy5wdXNoKERlY29yYXRpb24ud2lkZ2V0KHsgd2lkZ2V0OiBuZXcgTGluZU51bWJlcldpZGdldCgoc3RhcnRMaW5lIHx8IGVuZExpbmUpID8gXCIgXCIgOiBsaW5lTnVtYmVyK2xpbmVOdW1iZXJPZmZzZXQsc2hvd051bWJlcnMpLH0pLnJhbmdlKG5vZGUuZnJvbSkpO1xuICAgICAgICAgICAgICAgIGxpbmVOdW1iZXIrKztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUmFuZ2VTZXQub2YoZGVjb3JhdGlvbnMsIHRydWUpO1xuICAgICAgfVxuICAgIH0sLy8gQ29kZWJsb2NrSGlnaGxpZ2h0UGx1Z2luXG4gICAge1xuICAgICAgZGVjb3JhdGlvbnM6ICh2YWx1ZSkgPT4gdmFsdWUuZGVjb3JhdGlvbnMsXG4gICAgfVxuICApO1xuXG4gIHZpZXdQbHVnaW4ubmFtZSA9ICdjb2RlYmxvY2tIaWdobGlnaHQnO1xuICByZXR1cm4gdmlld1BsdWdpbjtcbn0vLyBjb2RlYmxvY2tIaWdobGlnaHRcblxuZnVuY3Rpb24gY29tcGFyZUFycmF5cyhhcnJheTEsIGFycmF5Mikge1xuICBcbiAgaWYgKGFycmF5MS5sZW5ndGggIT09IGFycmF5Mi5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheTEubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoKGFycmF5MVtpXS5uYW1lICE9PSBhcnJheTJbaV0ubmFtZSkgfHwgKGFycmF5MVtpXS5jdXJyZW50Q29sb3IgIT09IGFycmF5MltpXS5jdXJyZW50Q29sb3IpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufS8vIGNvbXBhcmVBcnJheXNcblxuY2xhc3MgTGluZU51bWJlcldpZGdldCBleHRlbmRzIFdpZGdldFR5cGUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxpbmVOdW1iZXI6IG51bWJlciwgcHJpdmF0ZSBzaG93TnVtYmVyczogYm9vbGVhbikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBlcShvdGhlcjogTGluZU51bWJlcldpZGdldCkge1xuICAgIHJldHVybiB0aGlzLmxpbmVOdW1iZXIgPT09IG90aGVyLmxpbmVOdW1iZXIgJiYgdGhpcy5zaG93TnVtYmVycyA9PT0gb3RoZXIuc2hvd051bWJlcnM7XG4gIH1cblxuICB0b0RPTSh2aWV3OiBFZGl0b3JWaWV3KTogSFRNTEVsZW1lbnQge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKGBjb2RlYmxvY2stY3VzdG9taXplci1saW5lLW51bWJlciR7dGhpcy5zaG93TnVtYmVycz8nJzonLWhpZGUnfWApO1xuICAgIGNvbnRhaW5lci5pbm5lclRleHQgPSBgJHt0aGlzLmxpbmVOdW1iZXJ9YDtcblxuICAgIHJldHVybiBjb250YWluZXI7XG4gIH1cbn0vLyBMaW5lTnVtYmVyV2lkZ2V0XG5cbmZ1bmN0aW9uIGZpbmRDb2RlYmxvY2tzKGRvYzogVGV4dCwgZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKTogU3ludGF4Tm9kZVtdIHtcbiAgY29uc3QgdHJlZSA9IHN5bnRheFRyZWUoZG9jKTtcbiAgY29uc3QgY29kZWJsb2NrczogU3ludGF4Tm9kZVtdID0gW107XG5cbiAgdHJlZS5pdGVyYXRlKHsgZnJvbSwgdG8sXG4gICAgZW50ZXI6IChub2RlKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIG5vZGUudHlwZS5uYW1lLmluY2x1ZGVzKFwiSHlwZXJNRC1jb2RlYmxvY2stYmVnaW5cIikgfHxcbiAgICAgICAgbm9kZS50eXBlLm5hbWUgPT09IFwiSHlwZXJNRC1jb2RlYmxvY2tfSHlwZXJNRC1jb2RlYmxvY2stYmdcIiB8fFxuICAgICAgICBub2RlLnR5cGUubmFtZS5pbmNsdWRlcyhcIkh5cGVyTUQtY29kZWJsb2NrLWVuZFwiKVxuICAgICAgKSB7XG4gICAgICAgIGNvZGVibG9ja3MucHVzaChub2RlKTtcbiAgICAgIH1cbiAgICB9LFxuICB9KTtcblxuICByZXR1cm4gY29kZWJsb2Nrcztcbn0vLyBmaW5kQ29kZWJsb2Nrc1xuXG5mdW5jdGlvbiBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIoZWRpdG9yVmlldzogRWRpdG9yVmlldywgcGx1Z2luSW5zdGFuY2U6IGFueSkgeyAvL1RPRE8gKEBtYXl1cmFua3YpIFdoYXQgZG9lcyB0aGlzIGRvPyBXb3JrIG91dFxuICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnMpID0+IHtcbiAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykge1xuICAgICAgaWYgKFxuICAgICAgICBtdXRhdGlvbi50eXBlID09PSBcImF0dHJpYnV0ZXNcIiAmJlxuICAgICAgICBtdXRhdGlvbi5hdHRyaWJ1dGVOYW1lID09PSBcImNsYXNzXCIgJiZcbiAgICAgICAgKG11dGF0aW9uLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJIeXBlck1ELWNvZGVibG9jay1iZWdpblwiKSB8fFxuICAgICAgICAgIG11dGF0aW9uLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJIeXBlck1ELWNvZGVibG9ja19IeXBlck1ELWNvZGVibG9jay1iZ1wiKSB8fFxuICAgICAgICAgIG11dGF0aW9uLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoXCJIeXBlck1ELWNvZGVibG9jay1lbmRcIikpXG4gICAgICApIHtcbiAgICAgICAgcGx1Z2luSW5zdGFuY2UuZm9yY2VVcGRhdGUoZWRpdG9yVmlldyk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICBvYnNlcnZlci5vYnNlcnZlKGVkaXRvclZpZXcuZG9tLCB7XG4gICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgc3VidHJlZTogdHJ1ZSxcbiAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnY2xhc3MnXSwgLy8gT25seSBvYnNlcnZlIGNoYW5nZXMgdG8gdGhlICdjbGFzcycgYXR0cmlidXRlXG4gIH0pO1xuXG4gIHJldHVybiBvYnNlcnZlcjtcbn0gLy8gc2V0dXBNdXRhdGlvbk9ic2VydmVyIiwgIi8vIFByaXNtIExhbmd1YWdlc1xuLy8gaHR0cHM6Ly9wcmlzbWpzLmNvbS9wbHVnaW5zL3Nob3ctbGFuZ3VhZ2UvXG5cbmV4cG9ydCBjb25zdCBMYW5ndWFnZXMgPSB7XG4gIFwibm9uZVwiOiBcIlBsYWluIHRleHRcIixcbiAgXCJwbGFpblwiOiBcIlBsYWluIHRleHRcIixcbiAgXCJwbGFpbnRleHRcIjogXCJQbGFpbiB0ZXh0XCIsXG4gIFwidGV4dFwiOiBcIlBsYWluIHRleHRcIixcbiAgXCJ0eHRcIjogXCJQbGFpbiB0ZXh0XCIsXG4gIFwiaHRtbFwiOiBcIkhUTUxcIixcbiAgXCJ4bWxcIjogXCJYTUxcIixcbiAgXCJzdmdcIjogXCJTVkdcIixcbiAgXCJtYXRobWxcIjogXCJNYXRoTUxcIixcbiAgXCJzc21sXCI6IFwiU1NNTFwiLFxuICBcInJzc1wiOiBcIlJTU1wiLFxuICBcImNzc1wiOiBcIkNTU1wiLFxuICBcImNsaWtlXCI6IFwiQy1saWtlXCIsXG4gIFwianNcIjogXCJKYXZhU2NyaXB0XCIsXG4gIFwiYWJhcFwiOiBcIkFCQVBcIixcbiAgXCJhYm5mXCI6IFwiQUJORlwiLFxuICBcImFsXCI6IFwiQUxcIixcbiAgXCJhbnRscjRcIjogXCJBTlRMUjRcIixcbiAgXCJnNFwiOiBcIkFOVExSNFwiLFxuICBcImFwYWNoZWNvbmZcIjogXCJBcGFjaGUgQ29uZmlndXJhdGlvblwiLFxuICBcImFwbFwiOiBcIkFQTFwiLFxuICBcImFxbFwiOiBcIkFRTFwiLFxuICBcImlub1wiOiBcIkFyZHVpbm9cIixcbiAgXCJhcmZmXCI6IFwiQVJGRlwiLFxuICBcImFybWFzbVwiOiBcIkFSTSBBc3NlbWJseVwiLFxuICBcImFybS1hc21cIjogXCJBUk0gQXNzZW1ibHlcIixcbiAgXCJhcnRcIjogXCJBcnR1cm9cIixcbiAgXCJhc2NpaWRvY1wiOiBcIkFzY2lpRG9jXCIsXG4gIFwiYWRvY1wiOiBcIkFzY2lpRG9jXCIsXG4gIFwiYXNwbmV0XCI6IFwiQVNQLk5FVCAoQyMpXCIsXG4gIFwiYXNtNjUwMlwiOiBcIjY1MDIgQXNzZW1ibHlcIixcbiAgXCJhc21hdG1lbFwiOiBcIkF0bWVsIEFWUiBBc3NlbWJseVwiLFxuICBcImF1dG9ob3RrZXlcIjogXCJBdXRvSG90a2V5XCIsXG4gIFwiYXV0b2l0XCI6IFwiQXV0b0l0XCIsXG4gIFwiYXZpc3ludGhcIjogXCJBdmlTeW50aFwiLFxuICBcImF2c1wiOiBcIkF2aVN5bnRoXCIsXG4gIFwiYXZyby1pZGxcIjogXCJBdnJvIElETFwiLFxuICBcImF2ZGxcIjogXCJBdnJvIElETFwiLFxuICBcImF3a1wiOiBcIkFXS1wiLFxuICBcImdhd2tcIjogXCJHQVdLXCIsXG4gIFwic2hcIjogXCJTaGVsbFwiLFxuICBcImJhc2ljXCI6IFwiQkFTSUNcIixcbiAgXCJiYmNvZGVcIjogXCJCQmNvZGVcIixcbiAgXCJiYmpcIjogXCJCQmpcIixcbiAgXCJibmZcIjogXCJCTkZcIixcbiAgXCJyYm5mXCI6IFwiUkJORlwiLFxuICBcImJxblwiOiBcIkJRTlwiLFxuICBcImJzbFwiOiBcIkJTTCAoMUM6RW50ZXJwcmlzZSlcIixcbiAgXCJvc2NyaXB0XCI6IFwiT25lU2NyaXB0XCIsXG4gIFwiY3NoYXJwXCI6IFwiQyNcIixcbiAgXCJjc1wiOiBcIkMjXCIsXG4gIFwiZG90bmV0XCI6IFwiQyNcIixcbiAgXCJjcHBcIjogXCJDKytcIixcbiAgXCJjZnNjcmlwdFwiOiBcIkNGU2NyaXB0XCIsXG4gIFwiY2ZjXCI6IFwiQ0ZTY3JpcHRcIixcbiAgXCJjaWxcIjogXCJDSUxcIixcbiAgXCJjaWxrY1wiOiBcIkNpbGsvQ1wiLFxuICBcImNpbGstY1wiOiBcIkNpbGsvQ1wiLFxuICBcImNpbGtjcHBcIjogXCJDaWxrL0MrK1wiLFxuICBcImNpbGstY3BwXCI6IFwiQ2lsay9DKytcIixcbiAgXCJjaWxrXCI6IFwiQ2lsay9DKytcIixcbiAgXCJjbWFrZVwiOiBcIkNNYWtlXCIsXG4gIFwiY29ib2xcIjogXCJDT0JPTFwiLFxuICBcImNvZmZlZVwiOiBcIkNvZmZlZVNjcmlwdFwiLFxuICBcImNvbmNcIjogXCJDb25jdXJuYXNcIixcbiAgXCJjc3BcIjogXCJDb250ZW50LVNlY3VyaXR5LVBvbGljeVwiLFxuICBcImNzcy1leHRyYXNcIjogXCJDU1MgRXh0cmFzXCIsXG4gIFwiY3N2XCI6IFwiQ1NWXCIsXG4gIFwiY3VlXCI6IFwiQ1VFXCIsXG4gIFwiZGF0YXdlYXZlXCI6IFwiRGF0YVdlYXZlXCIsXG4gIFwiZGF4XCI6IFwiREFYXCIsXG4gIFwiZGphbmdvXCI6IFwiRGphbmdvL0ppbmphMlwiLFxuICBcImppbmphMlwiOiBcIkRqYW5nby9KaW5qYTJcIixcbiAgXCJkbnMtem9uZS1maWxlXCI6IFwiRE5TIHpvbmUgZmlsZVwiLFxuICBcImRucy16b25lXCI6IFwiRE5TIHpvbmUgZmlsZVwiLFxuICBcImRvY2tlcmZpbGVcIjogXCJEb2NrZXJcIixcbiAgXCJkb3RcIjogXCJET1QgKEdyYXBodml6KVwiLFxuICBcImd2XCI6IFwiRE9UIChHcmFwaHZpeilcIixcbiAgXCJlYm5mXCI6IFwiRUJORlwiLFxuICBcImVkaXRvcmNvbmZpZ1wiOiBcIkVkaXRvckNvbmZpZ1wiLFxuICBcImVqc1wiOiBcIkVKU1wiLFxuICBcImV0bHVhXCI6IFwiRW1iZWRkZWQgTHVhIHRlbXBsYXRpbmdcIixcbiAgXCJlcmJcIjogXCJFUkJcIixcbiAgXCJleGNlbC1mb3JtdWxhXCI6IFwiRXhjZWwgRm9ybXVsYVwiLFxuICBcInhsc3hcIjogXCJFeGNlbCBGb3JtdWxhXCIsXG4gIFwieGxzXCI6IFwiRXhjZWwgRm9ybXVsYVwiLFxuICBcImZzaGFycFwiOiBcIkYjXCIsXG4gIFwiZmlyZXN0b3JlLXNlY3VyaXR5LXJ1bGVzXCI6IFwiRmlyZXN0b3JlIHNlY3VyaXR5IHJ1bGVzXCIsXG4gIFwiZnRsXCI6IFwiRnJlZU1hcmtlciBUZW1wbGF0ZSBMYW5ndWFnZVwiLFxuICBcImdtbFwiOiBcIkdhbWVNYWtlciBMYW5ndWFnZVwiLFxuICBcImdhbWVtYWtlcmxhbmd1YWdlXCI6IFwiR2FtZU1ha2VyIExhbmd1YWdlXCIsXG4gIFwiZ2FwXCI6IFwiR0FQIChDQVMpXCIsXG4gIFwiZ2NvZGVcIjogXCJHLWNvZGVcIixcbiAgXCJnZHNjcmlwdFwiOiBcIkdEU2NyaXB0XCIsXG4gIFwiZ2VkY29tXCI6IFwiR0VEQ09NXCIsXG4gIFwiZ2V0dGV4dFwiOiBcImdldHRleHRcIixcbiAgXCJwb1wiOiBcImdldHRleHRcIixcbiAgXCJnbHNsXCI6IFwiR0xTTFwiLFxuICBcImduXCI6IFwiR05cIixcbiAgXCJnbmlcIjogXCJHTlwiLFxuICBcImxpbmtlci1zY3JpcHRcIjogXCJHTlUgTGlua2VyIFNjcmlwdFwiLFxuICBcImxkXCI6IFwiR05VIExpbmtlciBTY3JpcHRcIixcbiAgXCJnby1tb2R1bGVcIjogXCJHbyBtb2R1bGVcIixcbiAgXCJnby1tb2RcIjogXCJHbyBtb2R1bGVcIixcbiAgXCJncmFwaHFsXCI6IFwiR3JhcGhRTFwiLFxuICBcImhic1wiOiBcIkhhbmRsZWJhcnNcIixcbiAgXCJoc1wiOiBcIkhhc2tlbGxcIixcbiAgXCJoY2xcIjogXCJIQ0xcIixcbiAgXCJobHNsXCI6IFwiSExTTFwiLFxuICBcImh0dHBcIjogXCJIVFRQXCIsXG4gIFwiaHBrcFwiOiBcIkhUVFAgUHVibGljLUtleS1QaW5zXCIsXG4gIFwiaHN0c1wiOiBcIkhUVFAgU3RyaWN0LVRyYW5zcG9ydC1TZWN1cml0eVwiLFxuICBcImljaGlnb2phbVwiOiBcIkljaGlnb0phbVwiLFxuICBcImljdS1tZXNzYWdlLWZvcm1hdFwiOiBcIklDVSBNZXNzYWdlIEZvcm1hdFwiLFxuICBcImlkclwiOiBcIklkcmlzXCIsXG4gIFwiaWdub3JlXCI6IFwiLmlnbm9yZVwiLFxuICBcImdpdGlnbm9yZVwiOiBcIi5naXRpZ25vcmVcIixcbiAgXCJoZ2lnbm9yZVwiOiBcIi5oZ2lnbm9yZVwiLFxuICBcIm5wbWlnbm9yZVwiOiBcIi5ucG1pZ25vcmVcIixcbiAgXCJpbmZvcm03XCI6IFwiSW5mb3JtIDdcIixcbiAgXCJqYXZhZG9jXCI6IFwiSmF2YURvY1wiLFxuICBcImphdmFkb2NsaWtlXCI6IFwiSmF2YURvYy1saWtlXCIsXG4gIFwiamF2YXN0YWNrdHJhY2VcIjogXCJKYXZhIHN0YWNrIHRyYWNlXCIsXG4gIFwianFcIjogXCJKUVwiLFxuICBcImpzZG9jXCI6IFwiSlNEb2NcIixcbiAgXCJqcy1leHRyYXNcIjogXCJKUyBFeHRyYXNcIixcbiAgXCJqc29uXCI6IFwiSlNPTlwiLFxuICBcIndlYm1hbmlmZXN0XCI6IFwiV2ViIEFwcCBNYW5pZmVzdFwiLFxuICBcImpzb241XCI6IFwiSlNPTjVcIixcbiAgXCJqc29ucFwiOiBcIkpTT05QXCIsXG4gIFwianNzdGFja3RyYWNlXCI6IFwiSlMgc3RhY2sgdHJhY2VcIixcbiAgXCJqcy10ZW1wbGF0ZXNcIjogXCJKUyBUZW1wbGF0ZXNcIixcbiAgXCJrZWVwYWxpdmVkXCI6IFwiS2VlcGFsaXZlZCBDb25maWd1cmVcIixcbiAgXCJrdHNcIjogXCJLb3RsaW4gU2NyaXB0XCIsXG4gIFwia3RcIjogXCJLb3RsaW5cIixcbiAgXCJrdW1pclwiOiBcIkt1TWlyIChcdTA0MUFcdTA0NDNcdTA0MUNcdTA0MzhcdTA0NDApXCIsXG4gIFwia3VtXCI6IFwiS3VNaXIgKFx1MDQxQVx1MDQ0M1x1MDQxQ1x1MDQzOFx1MDQ0MClcIixcbiAgXCJsYXRleFwiOiBcIkxhVGVYXCIsXG4gIFwidGV4XCI6IFwiVGVYXCIsXG4gIFwiY29udGV4dFwiOiBcIkNvblRlWHRcIixcbiAgXCJsaWx5cG9uZFwiOiBcIkxpbHlQb25kXCIsXG4gIFwibHlcIjogXCJMaWx5UG9uZFwiLFxuICBcImVtYWNzXCI6IFwiTGlzcFwiLFxuICBcImVsaXNwXCI6IFwiTGlzcFwiLFxuICBcImVtYWNzLWxpc3BcIjogXCJMaXNwXCIsXG4gIFwibGx2bVwiOiBcIkxMVk0gSVJcIixcbiAgXCJsb2dcIjogXCJMb2cgZmlsZVwiLFxuICBcImxvbGNvZGVcIjogXCJMT0xDT0RFXCIsXG4gIFwibWFnbWFcIjogXCJNYWdtYSAoQ0FTKVwiLFxuICBcIm1kXCI6IFwiTWFya2Rvd25cIixcbiAgXCJtYXJrdXAtdGVtcGxhdGluZ1wiOiBcIk1hcmt1cCB0ZW1wbGF0aW5nXCIsXG4gIFwibWF0bGFiXCI6IFwiTUFUTEFCXCIsXG4gIFwibWF4c2NyaXB0XCI6IFwiTUFYU2NyaXB0XCIsXG4gIFwibWVsXCI6IFwiTUVMXCIsXG4gIFwibWV0YWZvbnRcIjogXCJNRVRBRk9OVFwiLFxuICBcIm1vbmdvZGJcIjogXCJNb25nb0RCXCIsXG4gIFwibW9vblwiOiBcIk1vb25TY3JpcHRcIixcbiAgXCJuMXFsXCI6IFwiTjFRTFwiLFxuICBcIm40anNcIjogXCJONEpTXCIsXG4gIFwibjRqc2RcIjogXCJONEpTXCIsXG4gIFwibmFuZDJ0ZXRyaXMtaGRsXCI6IFwiTmFuZCBUbyBUZXRyaXMgSERMXCIsXG4gIFwibmFuaXNjcmlwdFwiOiBcIk5hbmlub3ZlbCBTY3JpcHRcIixcbiAgXCJuYW5pXCI6IFwiTmFuaW5vdmVsIFNjcmlwdFwiLFxuICBcIm5hc21cIjogXCJOQVNNXCIsXG4gIFwibmVvblwiOiBcIk5FT05cIixcbiAgXCJuZ2lueFwiOiBcIm5naW54XCIsXG4gIFwibnNpc1wiOiBcIk5TSVNcIixcbiAgXCJvYmplY3RpdmVjXCI6IFwiT2JqZWN0aXZlLUNcIixcbiAgXCJvYmpjXCI6IFwiT2JqZWN0aXZlLUNcIixcbiAgXCJvY2FtbFwiOiBcIk9DYW1sXCIsXG4gIFwib3BlbmNsXCI6IFwiT3BlbkNMXCIsXG4gIFwib3BlbnFhc21cIjogXCJPcGVuUWFzbVwiLFxuICBcInFhc21cIjogXCJPcGVuUWFzbVwiLFxuICBcInBhcmlncFwiOiBcIlBBUkkvR1BcIixcbiAgXCJvYmplY3RwYXNjYWxcIjogXCJPYmplY3QgUGFzY2FsXCIsXG4gIFwicHNsXCI6IFwiUEFUUk9MIFNjcmlwdGluZyBMYW5ndWFnZVwiLFxuICBcInBjYXhpc1wiOiBcIlBDLUF4aXNcIixcbiAgXCJweFwiOiBcIlBDLUF4aXNcIixcbiAgXCJwZW9wbGVjb2RlXCI6IFwiUGVvcGxlQ29kZVwiLFxuICBcInBjb2RlXCI6IFwiUGVvcGxlQ29kZVwiLFxuICBcInBocFwiOiBcIlBIUFwiLFxuICBcInBocGRvY1wiOiBcIlBIUERvY1wiLFxuICBcInBocC1leHRyYXNcIjogXCJQSFAgRXh0cmFzXCIsXG4gIFwicGxhbnQtdW1sXCI6IFwiUGxhbnRVTUxcIixcbiAgXCJwbGFudHVtbFwiOiBcIlBsYW50VU1MXCIsXG4gIFwicGxzcWxcIjogXCJQTC9TUUxcIixcbiAgXCJwb3dlcnF1ZXJ5XCI6IFwiUG93ZXJRdWVyeVwiLFxuICBcInBxXCI6IFwiUG93ZXJRdWVyeVwiLFxuICBcIm1zY3JpcHRcIjogXCJQb3dlclF1ZXJ5XCIsXG4gIFwicG93ZXJzaGVsbFwiOiBcIlBvd2VyU2hlbGxcIixcbiAgXCJwcm9tcWxcIjogXCJQcm9tUUxcIixcbiAgXCJwcm9wZXJ0aWVzXCI6IFwiLnByb3BlcnRpZXNcIixcbiAgXCJwcm90b2J1ZlwiOiBcIlByb3RvY29sIEJ1ZmZlcnNcIixcbiAgXCJwdXJlYmFzaWNcIjogXCJQdXJlQmFzaWNcIixcbiAgXCJwYmZhc21cIjogXCJQdXJlQmFzaWNcIixcbiAgXCJwdXJzXCI6IFwiUHVyZVNjcmlwdFwiLFxuICBcInB5XCI6IFwiUHl0aG9uXCIsXG4gIFwicXNoYXJwXCI6IFwiUSNcIixcbiAgXCJxc1wiOiBcIlEjXCIsXG4gIFwicVwiOiBcIlEgKGtkYisgZGF0YWJhc2UpXCIsXG4gIFwicW1sXCI6IFwiUU1MXCIsXG4gIFwicmt0XCI6IFwiUmFja2V0XCIsXG4gIFwiY3NodG1sXCI6IFwiUmF6b3IgQyNcIixcbiAgXCJyYXpvclwiOiBcIlJhem9yIEMjXCIsXG4gIFwianN4XCI6IFwiUmVhY3QgSlNYXCIsXG4gIFwidHN4XCI6IFwiUmVhY3QgVFNYXCIsXG4gIFwicmVucHlcIjogXCJSZW4ncHlcIixcbiAgXCJycHlcIjogXCJSZW4ncHlcIixcbiAgXCJyZXNcIjogXCJSZVNjcmlwdFwiLFxuICBcInJlc3RcIjogXCJyZVNUIChyZVN0cnVjdHVyZWRUZXh0KVwiLFxuICBcInJvYm90ZnJhbWV3b3JrXCI6IFwiUm9ib3QgRnJhbWV3b3JrXCIsXG4gIFwicm9ib3RcIjogXCJSb2JvdCBGcmFtZXdvcmtcIixcbiAgXCJyYlwiOiBcIlJ1YnlcIixcbiAgXCJzYXNcIjogXCJTQVNcIixcbiAgXCJzYXNzXCI6IFwiU2FzcyAoU2FzcylcIixcbiAgXCJzY3NzXCI6IFwiU2FzcyAoU0NTUylcIixcbiAgXCJzaGVsbC1zZXNzaW9uXCI6IFwiU2hlbGwgc2Vzc2lvblwiLFxuICBcInNoLXNlc3Npb25cIjogXCJTaGVsbCBzZXNzaW9uXCIsXG4gIFwic2hlbGxzZXNzaW9uXCI6IFwiU2hlbGwgc2Vzc2lvblwiLFxuICBcInNtbFwiOiBcIlNNTFwiLFxuICBcInNtbG5qXCI6IFwiU01ML05KXCIsXG4gIFwic29saWRpdHlcIjogXCJTb2xpZGl0eSAoRXRoZXJldW0pXCIsXG4gIFwic29sXCI6IFwiU29saWRpdHkgKEV0aGVyZXVtKVwiLFxuICBcInNvbHV0aW9uLWZpbGVcIjogXCJTb2x1dGlvbiBmaWxlXCIsXG4gIFwic2xuXCI6IFwiU29sdXRpb24gZmlsZVwiLFxuICBcInNveVwiOiBcIlNveSAoQ2xvc3VyZSBUZW1wbGF0ZSlcIixcbiAgXCJzcGFycWxcIjogXCJTUEFSUUxcIixcbiAgXCJycVwiOiBcIlNQQVJRTFwiLFxuICBcInNwbHVuay1zcGxcIjogXCJTcGx1bmsgU1BMXCIsXG4gIFwic3FmXCI6IFwiU1FGOiBTdGF0dXMgUXVvIEZ1bmN0aW9uIChBcm1hIDMpXCIsXG4gIFwic3FsXCI6IFwiU1FMXCIsXG4gIFwic3RhdGFcIjogXCJTdGF0YSBBZG9cIixcbiAgXCJpZWNzdFwiOiBcIlN0cnVjdHVyZWQgVGV4dCAoSUVDIDYxMTMxLTMpXCIsXG4gIFwic3VwZXJjb2xsaWRlclwiOiBcIlN1cGVyQ29sbGlkZXJcIixcbiAgXCJzY2xhbmdcIjogXCJTdXBlckNvbGxpZGVyXCIsXG4gIFwic3lzdGVtZFwiOiBcIlN5c3RlbWQgY29uZmlndXJhdGlvbiBmaWxlXCIsXG4gIFwidDQtdGVtcGxhdGluZ1wiOiBcIlQ0IHRlbXBsYXRpbmdcIixcbiAgXCJ0NC1jc1wiOiBcIlQ0IFRleHQgVGVtcGxhdGVzIChDIylcIixcbiAgXCJ0NFwiOiBcIlQ0IFRleHQgVGVtcGxhdGVzIChDIylcIixcbiAgXCJ0NC12YlwiOiBcIlQ0IFRleHQgVGVtcGxhdGVzIChWQilcIixcbiAgXCJ0YXBcIjogXCJUQVBcIixcbiAgXCJ0dDJcIjogXCJUZW1wbGF0ZSBUb29sa2l0IDJcIixcbiAgXCJ0b21sXCI6IFwiVE9NTFwiLFxuICBcInRyaWNrbGVcIjogXCJ0cmlja2xlXCIsXG4gIFwidHJveVwiOiBcInRyb3lcIixcbiAgXCJ0cmlnXCI6IFwiVHJpR1wiLFxuICBcInRzXCI6IFwiVHlwZVNjcmlwdFwiLFxuICBcInRzY29uZmlnXCI6IFwiVFNDb25maWdcIixcbiAgXCJ1c2NyaXB0XCI6IFwiVW5yZWFsU2NyaXB0XCIsXG4gIFwidWNcIjogXCJVbnJlYWxTY3JpcHRcIixcbiAgXCJ1b3Jhem9yXCI6IFwiVU8gUmF6b3IgU2NyaXB0XCIsXG4gIFwidXJpXCI6IFwiVVJJXCIsXG4gIFwidXJsXCI6IFwiVVJMXCIsXG4gIFwidmJuZXRcIjogXCJWQi5OZXRcIixcbiAgXCJ2aGRsXCI6IFwiVkhETFwiLFxuICBcInZpbVwiOiBcInZpbVwiLFxuICBcInZpc3VhbC1iYXNpY1wiOiBcIlZpc3VhbCBCYXNpY1wiLFxuICBcInZiYVwiOiBcIlZCQVwiLFxuICBcInZiXCI6IFwiVmlzdWFsIEJhc2ljXCIsXG4gIFwid2FzbVwiOiBcIldlYkFzc2VtYmx5XCIsXG4gIFwid2ViLWlkbFwiOiBcIldlYiBJRExcIixcbiAgXCJ3ZWJpZGxcIjogXCJXZWIgSURMXCIsXG4gIFwid2dzbFwiOiBcIldHU0xcIixcbiAgXCJ3aWtpXCI6IFwiV2lraSBtYXJrdXBcIixcbiAgXCJ3b2xmcmFtXCI6IFwiV29sZnJhbSBsYW5ndWFnZVwiLFxuICBcIm5iXCI6IFwiTWF0aGVtYXRpY2EgTm90ZWJvb2tcIixcbiAgXCJ3bFwiOiBcIldvbGZyYW0gbGFuZ3VhZ2VcIixcbiAgXCJ4ZW9yYWN1YmVcIjogXCJYZW9yYUN1YmVcIixcbiAgXCJ4bWwtZG9jXCI6IFwiWE1MIGRvYyAoLm5ldClcIixcbiAgXCJ4b2pvXCI6IFwiWG9qbyAoUkVBTGJhc2ljKVwiLFxuICBcInhxdWVyeVwiOiBcIlhRdWVyeVwiLFxuICBcInlhbWxcIjogXCJZQU1MXCIsXG4gIFwieW1sXCI6IFwiWUFNTFwiLFxuICBcInlhbmdcIjogXCJZQU5HXCIsXG59OyBcbiAgXG4vLyBtYW51YWxseSBnZW5lcmF0ZWQgbGlzdCBmcm9tIGh0dHBzOi8vcHJpc21qcy5jb20vICAtICAyOTcgbGFuZ3VhZ2VzXG5leHBvcnQgY29uc3QgbWFudWFsTGFuZyA9IHtcbiAgXCJjc3NcIjpcIkNTU1wiLFxuICBcImNsaWtlXCI6XCJDLWxpa2VcIixcbiAgXCJqYXZhc2NyaXB0XCI6XCJKYXZhU2NyaXB0XCIsXG4gIFwianNcIjpcIkphdmFTY3JpcHRcIixcbiAgXCJhYmFwXCI6XCJBQkFQXCIsXG4gIFwiYWJuZlwiOlwiQUJORlwiLFxuICBcImFjdGlvbnNjcmlwdFwiOlwiQWN0aW9uU2NyaXB0XCIsXG4gIFwiYWRhXCI6XCJBZGFcIixcbiAgXCJhZ2RhXCI6XCJBZ2RhXCIsXG4gIFwiYWxcIjpcIkFMXCIsXG4gIFwiYW50bHI0XCI6XCJBTlRMUjRcIixcbiAgXCJnNFwiOlwiQU5UTFI0XCIsXG4gIFwiYXBhY2hlY29uZlwiOlwiQXBhY2hlIENvbmZpZ3VyYXRpb25cIixcbiAgXCJhcGV4XCI6XCJBcGV4XCIsXG4gIFwiYXBsXCI6XCJBUExcIixcbiAgXCJhcHBsZXNjcmlwdFwiOlwiQXBwbGVTY3JpcHRcIixcbiAgXCJhcWxcIjpcIkFRTFwiLFxuICBcImFyZHVpbm9cIjpcIkFyZHVpbm9cIixcbiAgXCJpbm9cIjpcIkFyZHVpbm9cIixcbiAgXCJhcmZmXCI6XCJBUkZGXCIsXG4gIFwiYXJtYXNtXCI6XCJBUk0gQXNzZW1ibHlcIixcbiAgXCJhcm0tYXNtXCI6XCJBUk0gQXNzZW1ibHlcIixcbiAgXCJhcnR1cm9cIjpcIkFydHVyb1wiLFxuICBcImFydFwiOlwiQXJ0dXJvXCIsXG4gIFwiYXNjaWlkb2NcIjpcIkFzY2lpRG9jXCIsXG4gIFwiYWRvY1wiOlwiQXNjaWlEb2NcIixcbiAgXCJhc3BuZXRcIjpcIkFTUC5ORVQgKEMjKVwiLFxuICBcImFzbTY1MDJcIjpcIjY1MDIgQXNzZW1ibHlcIixcbiAgXCJhc21hdG1lbFwiOlwiQXRtZWwgQVZSIEFzc2VtYmx5XCIsXG4gIFwiYXV0b2hvdGtleVwiOlwiQXV0b0hvdGtleVwiLFxuICBcImF1dG9pdFwiOlwiQXV0b0l0XCIsXG4gIFwiYXZpc3ludGhcIjpcIkF2aVN5bnRoXCIsXG4gIFwiYXZzXCI6XCJBdmlTeW50aFwiLFxuICBcImF2cm8taWRsXCI6XCJBdnJvIElETFwiLFxuICBcImF2ZGxcIjpcIkF2cm8gSURMXCIsXG4gIFwiYXdrXCI6XCJBV0tcIixcbiAgXCJnYXdrXCI6XCJHQVdLXCIsXG4gIFwiYmFzaFwiOlwiU2hlbGxcIixcbiAgXCJzaFwiOlwiU2hlbGxcIixcbiAgXCJzaGVsbFwiOlwiU2hlbGxcIixcbiAgXCJiYXNpY1wiOlwiQkFTSUNcIixcbiAgXCJiYXRjaFwiOlwiQmF0Y2hcIixcbiAgXCJiYmNvZGVcIjpcIkJCY29kZVwiLFxuICBcInNob3J0Y29kZVwiOlwiQkJjb2RlXCIsXG4gIFwiYmJqXCI6XCJCQmpcIixcbiAgXCJiaXJiXCI6XCJCaXJiXCIsXG4gIFwiYmlzb25cIjpcIkJpc29uXCIsXG4gIFwiYm5mXCI6XCJCTkZcIixcbiAgXCJyYm5mXCI6XCJCTkZcIixcbiAgXCJicW5cIjpcIkJRTlwiLFxuICBcImJyYWluZnVja1wiOlwiQnJhaW5mdWNrXCIsXG4gIFwiYnJpZ2h0c2NyaXB0XCI6XCJCcmlnaHRTY3JpcHRcIixcbiAgXCJicm9cIjpcIkJyb1wiLFxuICBcImJzbFwiOlwiQlNMICgxQylcIixcbiAgXCJvc2NyaXB0XCI6XCJCU0wgKDFDKVwiLFxuICBcImNcIjpcIkNcIixcbiAgXCJjc2hhcnBcIjpcIkMjXCIsXG4gIFwiY3NcIjpcIkMjXCIsXG4gIFwiZG90bmV0XCI6XCJDI1wiLFxuICBcImNwcFwiOlwiQysrXCIsXG4gIFwiY2ZzY3JpcHRcIjpcIkNGU2NyaXB0XCIsXG4gIFwiY2ZjXCI6XCJDRlNjcmlwdFwiLFxuICBcImNoYWlzY3JpcHRcIjpcIkNoYWlTY3JpcHRcIixcbiAgXCJjaWxcIjpcIkNJTFwiLFxuICBcImNpbGtjXCI6XCJDaWxrL0NcIixcbiAgXCJjaWxrLWNcIjpcIkNpbGsvQ1wiLFxuICBcImNpbGtjcHBcIjpcIkNpbGsvQysrXCIsXG4gIFwiY2lsay1jcHBcIjpcIkNpbGsvQysrXCIsXG4gIFwiY2lsa1wiOlwiQ2lsay9DKytcIixcbiAgXCJjbG9qdXJlXCI6XCJDbG9qdXJlXCIsXG4gIFwiY21ha2VcIjpcIkNNYWtlXCIsXG4gIFwiY29ib2xcIjpcIkNPQk9MXCIsXG4gIFwiY29mZmVlc2NyaXB0XCI6XCJDb2ZmZWVTY3JpcHRcIixcbiAgXCJjb2ZmZWVcIjpcIkNvZmZlZVNjcmlwdFwiLFxuICBcImNvbmN1cm5hc1wiOlwiQ29uY3VybmFzXCIsXG4gIFwiY29uY1wiOlwiQ29uY3VybmFzXCIsXG4gIFwiY3NwXCI6XCJDb250ZW50LVNlY3VyaXR5LVBvbGljeVwiLFxuICBcImNvb2tsYW5nXCI6XCJDb29rbGFuZ1wiLFxuICBcImNvcVwiOlwiQ29xXCIsXG4gIFwiY3J5c3RhbFwiOlwiQ3J5c3RhbFwiLFxuICBcImNzcy1leHRyYXNcIjpcIkNTUyBFeHRyYXNcIixcbiAgXCJjc3ZcIjpcIkNTVlwiLFxuICBcImN1ZVwiOlwiQ1VFXCIsXG4gIFwiY3lwaGVyXCI6XCJDeXBoZXJcIixcbiAgXCJkXCI6XCJEXCIsXG4gIFwiZGFydFwiOlwiRGFydFwiLFxuICBcImRhdGF3ZWF2ZVwiOlwiRGF0YVdlYXZlXCIsXG4gIFwiZGF4XCI6XCJEQVhcIixcbiAgXCJkaGFsbFwiOlwiRGhhbGxcIixcbiAgXCJkaWZmXCI6XCJEaWZmXCIsXG4gIFwiZGphbmdvXCI6XCJEamFuZ28vSmluamEyXCIsXG4gIFwiamluamEyXCI6XCJEamFuZ28vSmluamEyXCIsXG4gIFwiZG5zLXpvbmUtZmlsZVwiOlwiRE5TIHpvbmUgZmlsZVwiLFxuICBcImRucy16b25lXCI6XCJETlMgem9uZSBmaWxlXCIsXG4gIFwiZG9ja2VyXCI6XCJEb2NrZXJcIixcbiAgXCJkb2NrZXJmaWxlXCI6XCJEb2NrZXJcIixcbiAgXCJkb3RcIjpcIkRPVCAoR3JhcGh2aXopXCIsXG4gIFwiZ3ZcIjpcIkRPVCAoR3JhcGh2aXopXCIsXG4gIFwiZWJuZlwiOlwiRUJORlwiLFxuICBcImVkaXRvcmNvbmZpZ1wiOlwiRWRpdG9yQ29uZmlnXCIsXG4gIFwiZWlmZmVsXCI6XCJFaWZmZWxcIixcbiAgXCJlanNcIjpcIkVKU1wiLFxuICBcImV0YVwiOlwiRUpTXCIsXG4gIFwiZWxpeGlyXCI6XCJFbGl4aXJcIixcbiAgXCJlbG1cIjpcIkVsbVwiLFxuICBcImV0bHVhXCI6XCJFbWJlZGRlZCBMdWEgdGVtcGxhdGluZ1wiLFxuICBcImVyYlwiOlwiRVJCXCIsXG4gIFwiZXJsYW5nXCI6XCJFcmxhbmdcIixcbiAgXCJleGNlbC1mb3JtdWxhXCI6XCJFeGNlbCBGb3JtdWxhXCIsXG4gIFwieGxzeFwiOlwiRXhjZWwgRm9ybXVsYVwiLFxuICBcInhsc1wiOlwiRXhjZWwgRm9ybXVsYVwiLFxuICBcImZzaGFycFwiOlwiRiNcIixcbiAgXCJmYWN0b3JcIjpcIkZhY3RvclwiLFxuICBcImZhbHNlXCI6XCJGYWxzZVwiLFxuICBcImZpcmVzdG9yZS1zZWN1cml0eS1ydWxlc1wiOlwiRmlyZXN0b3JlIHNlY3VyaXR5IHJ1bGVzXCIsXG4gIFwiZmxvd1wiOlwiRmxvd1wiLFxuICBcImZvcnRyYW5cIjpcIkZvcnRyYW5cIixcbiAgXCJmdGxcIjpcIkZyZWVNYXJrZXIgVGVtcGxhdGUgTGFuZ3VhZ2VcIixcbiAgXCJnbWxcIjpcIkdhbWVNYWtlciBMYW5ndWFnZVwiLFxuICBcImdhbWVtYWtlcmxhbmd1YWdlXCI6XCJHYW1lTWFrZXIgTGFuZ3VhZ2VcIixcbiAgXCJnYXBcIjpcIkdBUCAoQ0FTKVwiLFxuICBcImdjb2RlXCI6XCJHLWNvZGVcIixcbiAgXCJnZHNjcmlwdFwiOlwiR0RTY3JpcHRcIixcbiAgXCJnZWRjb21cIjpcIkdFRENPTVwiLFxuICBcImdldHRleHRcIjpcImdldHRleHRcIixcbiAgXCJwb1wiOlwiZ2V0dGV4dFwiLFxuICBcImdoZXJraW5cIjpcIkdoZXJraW5cIixcbiAgXCJnaXRcIjpcIkdpdFwiLFxuICBcImdsc2xcIjpcIkdMU0xcIixcbiAgXCJnblwiOlwiR05cIixcbiAgXCJnbmlcIjpcIkdOXCIsXG4gIFwibGlua2VyLXNjcmlwdFwiOlwiR05VIExpbmtlciBTY3JpcHRcIixcbiAgXCJsZFwiOlwiR05VIExpbmtlciBTY3JpcHRcIixcbiAgXCJnb1wiOlwiR29cIixcbiAgXCJnby1tb2R1bGVcIjpcIkdvIG1vZHVsZVwiLFxuICBcImdvLW1vZFwiOlwiR28gbW9kdWxlXCIsXG4gIFwiZ3JhZGxlXCI6XCJHcmFkbGVcIixcbiAgXCJncmFwaHFsXCI6XCJHcmFwaFFMXCIsXG4gIFwiZ3Jvb3Z5XCI6XCJHcm9vdnlcIixcbiAgXCJoYW1sXCI6XCJIYW1sXCIsXG4gIFwiaGFuZGxlYmFyc1wiOlwiSGFuZGxlYmFyc1wiLFxuICBcImhic1wiOlwiSGFuZGxlYmFyc1wiLFxuICBcIm11c3RhY2hlXCI6XCJIYW5kbGViYXJzXCIsXG4gIFwiaGFza2VsbFwiOlwiSGFza2VsbFwiLFxuICBcImhzXCI6XCJIYXNrZWxsXCIsXG4gIFwiaGF4ZVwiOlwiSGF4ZVwiLFxuICBcImhjbFwiOlwiSENMXCIsXG4gIFwiaGxzbFwiOlwiSExTTFwiLFxuICBcImhvb25cIjpcIkhvb25cIixcbiAgXCJodHRwXCI6XCJIVFRQXCIsXG4gIFwiaHBrcFwiOlwiSFRUUCBQdWJsaWMtS2V5LVBpbnNcIixcbiAgXCJoc3RzXCI6XCJIVFRQIFN0cmljdC1UcmFuc3BvcnQtU2VjdXJpdHlcIixcbiAgXCJpY2hpZ29qYW1cIjpcIkljaGlnb0phbVwiLFxuICBcImljb25cIjpcIkljb25cIixcbiAgXCJpY3UtbWVzc2FnZS1mb3JtYXRcIjpcIklDVSBNZXNzYWdlIEZvcm1hdFwiLFxuICBcImlkcmlzXCI6XCJJZHJpc1wiLFxuICBcImlkclwiOlwiSWRyaXNcIixcbiAgXCJpZ25vcmVcIjpcIi5pZ25vcmVcIixcbiAgXCJnaXRpZ25vcmVcIjpcIi5pZ25vcmVcIixcbiAgXCJoZ2lnbm9yZVwiOlwiLmlnbm9yZVwiLFxuICBcIm5wbWlnbm9yZVwiOlwiLmlnbm9yZVwiLFxuICBcImluZm9ybTdcIjpcIkluZm9ybSA3XCIsXG4gIFwiaW5pXCI6XCJJbmlcIixcbiAgXCJpb1wiOlwiSW9cIixcbiAgXCJqXCI6XCJKXCIsXG4gIFwiamF2YVwiOlwiSmF2YVwiLFxuICBcImphdmFkb2NcIjpcIkphdmFEb2NcIixcbiAgXCJqYXZhZG9jbGlrZVwiOlwiSmF2YURvYy1saWtlXCIsXG4gIFwiamF2YXN0YWNrdHJhY2VcIjpcIkphdmEgc3RhY2sgdHJhY2VcIixcbiAgXCJqZXhsXCI6XCJKZXhsXCIsXG4gIFwiam9saWVcIjpcIkpvbGllXCIsXG4gIFwianFcIjpcIkpRXCIsXG4gIFwianNkb2NcIjpcIkpTRG9jXCIsXG4gIFwianMtZXh0cmFzXCI6XCJKUyBFeHRyYXNcIixcbiAgXCJqc29uXCI6XCJKU09OXCIsXG4gIFwid2VibWFuaWZlc3RcIjpcIkpTT05cIixcbiAgXCJqc29uNVwiOlwiSlNPTjVcIixcbiAgXCJqc29ucFwiOlwiSlNPTlBcIixcbiAgXCJqc3N0YWNrdHJhY2VcIjpcIkpTIHN0YWNrIHRyYWNlXCIsXG4gIFwianMtdGVtcGxhdGVzXCI6XCJKUyBUZW1wbGF0ZXNcIixcbiAgXCJqdWxpYVwiOlwiSnVsaWFcIixcbiAgXCJrZWVwYWxpdmVkXCI6XCJLZWVwYWxpdmVkIENvbmZpZ3VyZVwiLFxuICBcImtleW1hblwiOlwiS2V5bWFuXCIsXG4gIFwia290bGluXCI6XCJLb3RsaW5cIixcbiAgXCJrdFwiOlwiS290bGluXCIsXG4gIFwia3RzXCI6XCJLb3RsaW5cIixcbiAgXCJrdW1pclwiOlwiS3VNaXIgKFx1MDQxQVx1MDQ0M1x1MDQxQ1x1MDQzOFx1MDQ0MClcIixcbiAgXCJrdW1cIjpcIkt1TWlyIChcdTA0MUFcdTA0NDNcdTA0MUNcdTA0MzhcdTA0NDApXCIsXG4gIFwia3VzdG9cIjpcIkt1c3RvXCIsXG4gIFwibGF0ZXhcIjpcIkxhVGVYXCIsXG4gIFwidGV4XCI6XCJMYVRlWFwiLFxuICBcImNvbnRleHRcIjpcIkxhVGVYXCIsXG4gIFwibGF0dGVcIjpcIkxhdHRlXCIsXG4gIFwibGVzc1wiOlwiTGVzc1wiLFxuICBcImxpbHlwb25kXCI6XCJMaWx5UG9uZFwiLFxuICBcImx5XCI6XCJMaWx5UG9uZFwiLFxuICBcImxpcXVpZFwiOlwiTGlxdWlkXCIsXG4gIFwibGlzcFwiOlwiTGlzcFwiLFxuICBcImVtYWNzXCI6XCJMaXNwXCIsXG4gIFwiZWxpc3BcIjpcIkxpc3BcIixcbiAgXCJlbWFjcy1saXNwXCI6XCJMaXNwXCIsXG4gIFwibGl2ZXNjcmlwdFwiOlwiTGl2ZVNjcmlwdFwiLFxuICBcImxsdm1cIjpcIkxMVk0gSVJcIixcbiAgXCJsb2dcIjpcIkxvZyBmaWxlXCIsXG4gIFwibG9sY29kZVwiOlwiTE9MQ09ERVwiLFxuICBcImx1YVwiOlwiTHVhXCIsXG4gIFwibWFnbWFcIjpcIk1hZ21hIChDQVMpXCIsXG4gIFwibWFrZWZpbGVcIjpcIk1ha2VmaWxlXCIsXG4gIFwibWFya2Rvd25cIjpcIk1hcmtkb3duXCIsXG4gIFwibWRcIjpcIk1hcmtkb3duXCIsXG4gIFwibWFya3VwLXRlbXBsYXRpbmdcIjpcIk1hcmt1cCB0ZW1wbGF0aW5nXCIsXG4gIFwibWF0YVwiOlwiTWF0YVwiLFxuICBcIm1hdGxhYlwiOlwiTUFUTEFCXCIsXG4gIFwibWF4c2NyaXB0XCI6XCJNQVhTY3JpcHRcIixcbiAgXCJtZWxcIjpcIk1FTFwiLFxuICBcIm1lcm1haWRcIjpcIk1lcm1haWRcIixcbiAgXCJtZXRhZm9udFwiOlwiTUVUQUZPTlRcIixcbiAgXCJtaXphclwiOlwiTWl6YXJcIixcbiAgXCJtb25nb2RiXCI6XCJNb25nb0RCXCIsXG4gIFwibW9ua2V5XCI6XCJNb25rZXlcIixcbiAgXCJtb29uc2NyaXB0XCI6XCJNb29uU2NyaXB0XCIsXG4gIFwibW9vblwiOlwiTW9vblNjcmlwdFwiLFxuICBcIm4xcWxcIjpcIk4xUUxcIixcbiAgXCJuNGpzXCI6XCJONEpTXCIsXG4gIFwibjRqc2RcIjpcIk40SlNcIixcbiAgXCJuYW5kMnRldHJpcy1oZGxcIjpcIk5hbmQgVG8gVGV0cmlzIEhETFwiLFxuICBcIm5hbmlzY3JpcHRcIjpcIk5hbmlub3ZlbCBTY3JpcHRcIixcbiAgXCJuYW5pXCI6XCJOYW5pbm92ZWwgU2NyaXB0XCIsXG4gIFwibmFzbVwiOlwiTkFTTVwiLFxuICBcIm5lb25cIjpcIk5FT05cIixcbiAgXCJuZXZvZFwiOlwiTmV2b2RcIixcbiAgXCJuZ2lueFwiOlwibmdpbnhcIixcbiAgXCJuaW1cIjpcIk5pbVwiLFxuICBcIm5peFwiOlwiTml4XCIsXG4gIFwibnNpc1wiOlwiTlNJU1wiLFxuICBcIm9iamVjdGl2ZWNcIjpcIk9iamVjdGl2ZS1DXCIsXG4gIFwib2JqY1wiOlwiT2JqZWN0aXZlLUNcIixcbiAgXCJvY2FtbFwiOlwiT0NhbWxcIixcbiAgXCJvZGluXCI6XCJPZGluXCIsXG4gIFwib3BlbmNsXCI6XCJPcGVuQ0xcIixcbiAgXCJvcGVucWFzbVwiOlwiT3BlblFhc21cIixcbiAgXCJxYXNtXCI6XCJPcGVuUWFzbVwiLFxuICBcIm96XCI6XCJPelwiLFxuICBcInBhcmlncFwiOlwiUEFSSS9HUFwiLFxuICBcInBhcnNlclwiOlwiUGFyc2VyXCIsXG4gIFwicGFzY2FsXCI6XCJQYXNjYWxcIixcbiAgXCJvYmplY3RwYXNjYWxcIjpcIlBhc2NhbFwiLFxuICBcInBhc2NhbGlnb1wiOlwiUGFzY2FsaWdvXCIsXG4gIFwicHNsXCI6XCJQQVRST0wgU2NyaXB0aW5nIExhbmd1YWdlXCIsXG4gIFwicGNheGlzXCI6XCJQQy1BeGlzXCIsXG4gIFwicHhcIjpcIlBDLUF4aXNcIixcbiAgXCJwZW9wbGVjb2RlXCI6XCJQZW9wbGVDb2RlXCIsXG4gIFwicGNvZGVcIjpcIlBlb3BsZUNvZGVcIixcbiAgXCJwZXJsXCI6XCJQZXJsXCIsXG4gIFwicGhwXCI6XCJQSFBcIixcbiAgXCJwaHBkb2NcIjpcIlBIUERvY1wiLFxuICBcInBocC1leHRyYXNcIjpcIlBIUCBFeHRyYXNcIixcbiAgXCJwbGFudC11bWxcIjpcIlBsYW50VU1MXCIsXG4gIFwicGxhbnR1bWxcIjpcIlBsYW50VU1MXCIsXG4gIFwicGxzcWxcIjpcIlBML1NRTFwiLFxuICBcInBvd2VycXVlcnlcIjpcIlBvd2VyUXVlcnlcIixcbiAgXCJwcVwiOlwiUG93ZXJRdWVyeVwiLFxuICBcIm1zY3JpcHRcIjpcIlBvd2VyUXVlcnlcIixcbiAgXCJwb3dlcnNoZWxsXCI6XCJQb3dlclNoZWxsXCIsXG4gIFwicHJvY2Vzc2luZ1wiOlwiUHJvY2Vzc2luZ1wiLFxuICBcInByb2xvZ1wiOlwiUHJvbG9nXCIsXG4gIFwicHJvbXFsXCI6XCJQcm9tUUxcIixcbiAgXCJwcm9wZXJ0aWVzXCI6XCIucHJvcGVydGllc1wiLFxuICBcInByb3RvYnVmXCI6XCJQcm90b2NvbCBCdWZmZXJzXCIsXG4gIFwicHVnXCI6XCJQdWdcIixcbiAgXCJwdXBwZXRcIjpcIlB1cHBldFwiLFxuICBcInB1cmVcIjpcIlB1cmVcIixcbiAgXCJwdXJlYmFzaWNcIjpcIlB1cmVCYXNpY1wiLFxuICBcInBiZmFzbVwiOlwiUHVyZUJhc2ljXCIsXG4gIFwicHVyZXNjcmlwdFwiOlwiUHVyZVNjcmlwdFwiLFxuICBcInB1cnNcIjpcIlB1cmVTY3JpcHRcIixcbiAgXCJweXRob25cIjpcIlB5dGhvblwiLFxuICBcInB5XCI6XCJQeXRob25cIixcbiAgXCJxc2hhcnBcIjpcIlEjXCIsXG4gIFwicXNcIjpcIlEjXCIsXG4gIFwicVwiOlwiUSAoa2RiKyBkYXRhYmFzZSlcIixcbiAgXCJxbWxcIjpcIlFNTFwiLFxuICBcInFvcmVcIjpcIlFvcmVcIixcbiAgXCJyXCI6XCJSXCIsXG4gIFwicmFja2V0XCI6XCJSYWNrZXRcIixcbiAgXCJya3RcIjpcIlJhY2tldFwiLFxuICBcImNzaHRtbFwiOlwiUmF6b3IgQyNcIixcbiAgXCJqc3hcIjpcIlJlYWN0IEpTWFwiLFxuICBcInRzeFwiOlwiUmVhY3QgVFNYXCIsXG4gIFwicmVhc29uXCI6XCJSZWFzb25cIixcbiAgXCJyZWdleFwiOlwiUmVnZXhcIixcbiAgXCJyZWdvXCI6XCJSZWdvXCIsXG4gIFwicmVucHlcIjpcIlJlbidweVwiLFxuICBcInJweVwiOlwiUmVuJ3B5XCIsXG4gIFwicmVzY3JpcHRcIjpcIlJlU2NyaXB0XCIsXG4gIFwicmVzXCI6XCJSZVNjcmlwdFwiLFxuICBcInJlc3RcIjpcInJlU1QgKHJlU3RydWN0dXJlZFRleHQpXCIsXG4gIFwicmlwXCI6XCJSaXBcIixcbiAgXCJyb2JvY29uZlwiOlwiUm9ib2NvbmZcIixcbiAgXCJyb2JvdGZyYW1ld29ya1wiOlwiUm9ib3QgRnJhbWV3b3JrXCIsXG4gIFwicm9ib3RcIjpcIlJvYm90IEZyYW1ld29ya1wiLFxuICBcInJ1YnlcIjpcIlJ1YnlcIixcbiAgXCJyYlwiOlwiUnVieVwiLFxuICBcInJ1c3RcIjpcIlJ1c3RcIixcbiAgXCJzYXNcIjpcIlNBU1wiLFxuICBcInNhc3NcIjpcIlNhc3MgKFNhc3MpXCIsXG4gIFwic2Nzc1wiOlwiU2FzcyAoU0NTUylcIixcbiAgXCJzY2FsYVwiOlwiU2NhbGFcIixcbiAgXCJzY2hlbWVcIjpcIlNjaGVtZVwiLFxuICBcInNoZWxsLXNlc3Npb25cIjpcIlNoZWxsIHNlc3Npb25cIixcbiAgXCJzaC1zZXNzaW9uXCI6XCJTaGVsbCBzZXNzaW9uXCIsXG4gIFwic2hlbGxzZXNzaW9uXCI6XCJTaGVsbCBzZXNzaW9uXCIsXG4gIFwic21hbGlcIjpcIlNtYWxpXCIsXG4gIFwic21hbGx0YWxrXCI6XCJTbWFsbHRhbGtcIixcbiAgXCJzbWFydHlcIjpcIlNtYXJ0eVwiLFxuICBcInNtbFwiOlwiU01MXCIsXG4gIFwic21sbmpcIjpcIlNNTFwiLFxuICBcInNvbGlkaXR5XCI6XCJTb2xpZGl0eSAoRXRoZXJldW0pXCIsXG4gIFwic29sXCI6XCJTb2xpZGl0eSAoRXRoZXJldW0pXCIsXG4gIFwic29sdXRpb24tZmlsZVwiOlwiU29sdXRpb24gZmlsZVwiLFxuICBcInNsblwiOlwiU29sdXRpb24gZmlsZVwiLFxuICBcInNveVwiOlwiU295IChDbG9zdXJlIFRlbXBsYXRlKVwiLFxuICBcInNwYXJxbFwiOlwiU1BBUlFMXCIsXG4gIFwicnFcIjpcIlNQQVJRTFwiLFxuICBcInNwbHVuay1zcGxcIjpcIlNwbHVuayBTUExcIixcbiAgXCJzcWZcIjpcIlNRRlwiLFxuICBcInNxbFwiOlwiU1FMXCIsXG4gIFwic3F1aXJyZWxcIjpcIlNxdWlycmVsXCIsXG4gIFwic3RhblwiOlwiU3RhblwiLFxuICBcInN0YXRhXCI6XCJTdGF0YSBBZG9cIixcbiAgXCJpZWNzdFwiOlwiU3RydWN0dXJlZCBUZXh0IChJRUMgNjExMzEtMylcIixcbiAgXCJzdHlsdXNcIjpcIlN0eWx1c1wiLFxuICBcInN1cGVyY29sbGlkZXJcIjpcIlN1cGVyQ29sbGlkZXJcIixcbiAgXCJzY2xhbmdcIjpcIlN1cGVyQ29sbGlkZXJcIixcbiAgXCJzd2lmdFwiOlwiU3dpZnRcIixcbiAgXCJzeXN0ZW1kXCI6XCJTeXN0ZW1kIGNvbmZpZ3VyYXRpb24gZmlsZVwiLFxuICBcInQ0LXRlbXBsYXRpbmdcIjpcIlQ0IHRlbXBsYXRpbmdcIixcbiAgXCJ0NC1jc1wiOlwiVDQgVGV4dCBUZW1wbGF0ZXMgKEMjKVwiLFxuICBcInQ0XCI6XCJUNCBUZXh0IFRlbXBsYXRlcyAoQyMpXCIsXG4gIFwidDQtdmJcIjpcIlQ0IFRleHQgVGVtcGxhdGVzIChWQilcIixcbiAgXCJ0YXBcIjpcIlRBUFwiLFxuICBcInRjbFwiOlwiVGNsXCIsXG4gIFwidHQyXCI6XCJUZW1wbGF0ZSBUb29sa2l0IDJcIixcbiAgXCJ0ZXh0aWxlXCI6XCJUZXh0aWxlXCIsXG4gIFwidG9tbFwiOlwiVE9NTFwiLFxuICBcInRyZW1vclwiOlwiVHJlbW9yXCIsXG4gIFwidHJpY2tsZVwiOlwiVHJlbW9yXCIsXG4gIFwidHJveVwiOlwiVHJlbW9yXCIsXG4gIFwidHVydGxlXCI6XCJUdXJ0bGVcIixcbiAgXCJ0cmlnXCI6XCJUdXJ0bGVcIixcbiAgXCJ0d2lnXCI6XCJUd2lnXCIsXG4gIFwidHlwZXNjcmlwdFwiOlwiVHlwZVNjcmlwdFwiLFxuICBcInRzXCI6XCJUeXBlU2NyaXB0XCIsXG4gIFwidHlwb3NjcmlwdFwiOlwiVHlwb1NjcmlwdFwiLFxuICBcInRzY29uZmlnXCI6XCJUeXBvU2NyaXB0XCIsXG4gIFwidW5yZWFsc2NyaXB0XCI6XCJVbnJlYWxTY3JpcHRcIixcbiAgXCJ1c2NyaXB0XCI6XCJVbnJlYWxTY3JpcHRcIixcbiAgXCJ1Y1wiOlwiVW5yZWFsU2NyaXB0XCIsXG4gIFwidW9yYXpvclwiOlwiVU8gUmF6b3IgU2NyaXB0XCIsXG4gIFwidXJpXCI6XCJVUklcIixcbiAgXCJ1cmxcIjpcIlVSSVwiLFxuICBcInZcIjpcIlZcIixcbiAgXCJ2YWxhXCI6XCJWYWxhXCIsXG4gIFwidmJuZXRcIjpcIlZCLk5ldFwiLFxuICBcInZlbG9jaXR5XCI6XCJWZWxvY2l0eVwiLFxuICBcInZlcmlsb2dcIjpcIlZlcmlsb2dcIixcbiAgXCJ2aGRsXCI6XCJWSERMXCIsXG4gIFwidmltXCI6XCJ2aW1cIixcbiAgXCJ2aXN1YWwtYmFzaWNcIjpcIlZpc3VhbCBCYXNpY1wiLFxuICBcInZiXCI6XCJWaXN1YWwgQmFzaWNcIixcbiAgXCJ2YmFcIjpcIlZpc3VhbCBCYXNpY1wiLFxuICBcIndhcnBzY3JpcHRcIjpcIldhcnBTY3JpcHRcIixcbiAgXCJ3YXNtXCI6XCJXZWJBc3NlbWJseVwiLFxuICBcIndlYi1pZGxcIjpcIldlYiBJRExcIixcbiAgXCJ3ZWJpZGxcIjpcIldlYiBJRExcIixcbiAgXCJ3Z3NsXCI6XCJXR1NMXCIsXG4gIFwid2lraVwiOlwiV2lraSBtYXJrdXBcIixcbiAgXCJ3b2xmcmFtXCI6XCJXb2xmcmFtIGxhbmd1YWdlXCIsXG4gIFwibWF0aGVtYXRpY2FcIjpcIldvbGZyYW0gbGFuZ3VhZ2VcIixcbiAgXCJuYlwiOlwiV29sZnJhbSBsYW5ndWFnZVwiLFxuICBcIndsXCI6XCJXb2xmcmFtIGxhbmd1YWdlXCIsXG4gIFwid3JlblwiOlwiV3JlblwiLFxuICBcInhlb3JhXCI6XCJYZW9yYVwiLFxuICBcInhlb3JhY3ViZVwiOlwiWGVvcmFcIixcbiAgXCJ4bWwtZG9jXCI6XCJYTUwgZG9jICgubmV0KVwiLFxuICBcInhvam9cIjpcIlhvam8gKFJFQUxiYXNpYylcIixcbiAgXCJ4cXVlcnlcIjpcIlhRdWVyeVwiLFxuICBcInlhbWxcIjpcIllBTUxcIixcbiAgXCJ5bWxcIjpcIllBTUxcIixcbiAgXCJ5YW5nXCI6XCJZQU5HXCIsXG4gIFwiemlnXCI6XCJaaWdcIlxufVxuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdnNjb2RlLWljb25zL3ZzY29kZS1pY29ucy93aWtpL0xpc3RPZkZpbGVzXG4vLyBodHRwczovL2Rldmljb24uZGV2L1xuZXhwb3J0IGNvbnN0IEljb25zID0ge1xuICBcIi5naXRpZ25vcmVcIjogYDxwYXRoIGQ9XCJNMjkuNDcyLDE0Ljc1MywxNy4yNDcsMi41MjhhMS44LDEuOCwwLDAsMC0yLjU1LDBMMTIuMTU4LDUuMDY3bDMuMjIsMy4yMmEyLjE0MSwyLjE0MSwwLDAsMSwyLjcxMiwyLjczbDMuMSwzLjFhMi4xNDMsMi4xNDMsMCwxLDEtMS4yODUsMS4yMWwtMi44OTUtMi44OTV2Ny42MTdhMi4xNDEsMi4xNDEsMCwxLDEtMS43NjQtLjA2MlYxMi4zYTIuMTQ2LDIuMTQ2LDAsMCwxLTEuMTY1LTIuODE0TDEwLjkxMSw2LjMxNCwyLjUyOCwxNC43YTEuOCwxLjgsMCwwLDAsMCwyLjU1MUwxNC43NTMsMjkuNDcyYTEuOCwxLjgsMCwwLDAsMi41NSwwTDI5LjQ3MiwxNy4zYTEuOCwxLjgsMCwwLDAsMC0yLjU1MVwiIHN0eWxlPVwiZmlsbDojZGQ0YzM1XCIvPjxwYXRoIGQ9XCJNMTIuMTU4LDUuMDY3bDMuMjIsMy4yMmEyLjE0MSwyLjE0MSwwLDAsMSwyLjcxMiwyLjczbDMuMSwzLjFhMi4xNDMsMi4xNDMsMCwxLDEtMS4yODUsMS4yMWwtMi44OTUtMi44OTV2Ny42MTdhMi4xNDEsMi4xNDEsMCwxLDEtMS43NjQtLjA2MlYxMi4zYTIuMTQ2LDIuMTQ2LDAsMCwxLTEuMTY1LTIuODE0TDEwLjkxMSw2LjMxNFwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG4gIFwiLmhnaWdub3JlXCI6IGA8cGF0aCBkPVwiTTI4LjA0MiwyMy4xNzJjNC45ODktOC4zLTEuMDU0LTIxLjc1MS0xMi4xLTIwLjM4NEM1Ljk1NSw0LjAyMiw1Ljc5NCwxNC41MywxNC41OTMsMTcuMDI2YzcuNjE0LDIuMTYyLDEuNTczLDYuOTkyLDEuNzQ5LDEwLjIwOHM2LjYyLDQuMzgyLDExLjctNC4wNjNcIiBzdHlsZT1cImZpbGw6IzFiMWIxYlwiLz48Y2lyY2xlIGN4PVwiOS43ODRcIiBjeT1cIjI0LjI1N1wiIHI9XCI0LjMzMlwiIHN0eWxlPVwiZmlsbDojMWIxYjFiXCIvPjxjaXJjbGUgY3g9XCI0LjgzNVwiIGN5PVwiMTUuMDk5XCIgcj1cIjIuODM1XCIgc3R5bGU9XCJmaWxsOiMxYjFiMWJcIi8+PHBhdGggZD1cIk0yOC4yMzEsMjIuODM1YzQuOTg5LTguMy0xLjA1NC0yMS43NTEtMTIuMS0yMC4zODRDNi4xNDQsMy42ODYsNS45ODMsMTQuMTk0LDE0Ljc4MSwxNi42OWM3LjYxNCwyLjE2MiwxLjU3Myw2Ljk5MiwxLjc0OSwxMC4yMDhzNi42Miw0LjM4MiwxMS43LTQuMDYzXCIgc3R5bGU9XCJmaWxsOiNiZmJmYmZcIi8+PGNpcmNsZSBjeD1cIjkuOTcyXCIgY3k9XCIyMy45MjFcIiByPVwiNC4zMzJcIiBzdHlsZT1cImZpbGw6I2JmYmZiZlwiLz48Y2lyY2xlIGN4PVwiNS4wMjNcIiBjeT1cIjE0Ljc2MlwiIHI9XCIyLjgzNVwiIHN0eWxlPVwiZmlsbDojYmZiZmJmXCIvPjxwYXRoIGQ9XCJNMTcuODExLDI4LjE2OGEuNjY5LjY2OSwwLDAsMSwuNjM1LS45OTQsNyw3LDAsMCwwLDMuNy0uNzQ2YzMuMjQ3LTEuODQxLDguMjQ0LTEwLjcsNS43MzEtMTYuMjg1QTEyLjc3LDEyLjc3LDAsMCwwLDI1LjA0OSw1LjdjLS4yMzYtLjI0OS0uMS0uMjM2LjA1OS0uMTUyYTEwLjA4LDEwLjA4LDAsMCwxLDIuODU3LDMuNjc2LDE0LjU3OCwxNC41NzgsMCwwLDEsMS4xLDEwLjI3OWMtLjQ5NCwxLjgxNy0yLjIsNS45MjgtNC42OTEsNy43MDZzLTUuNDI0LDIuOC02LjU2My45NTVNMTUuNTQ4LDE2LjY3M2MtMS43LS41LTMuODk0LTEuMjA4LTUuMTYzLTIuODY3QTguMDg4LDguMDg4LDAsMCwxLDguODU0LDEwLjQ5Yy0uMDQzLS4yNy0uMDgtLjUsMC0uNTU4YTIxLjg4MiwyMS44ODIsMCwwLDAsMS42ODgsMi43MjMsNi40ODcsNi40ODcsMCwwLDAsMy41MjYsMi4yNTYsMTIuMzgzLDEyLjM4MywwLDAsMSwzLjg2NywxLjM3Yy43MzkuNjI5LjgsMS45ODkuNTUyLDIuMTQycy0uNzU5LTEuMS0yLjkzOC0xLjc0OW0tOC4xNTUsMTAuNGMzLjM2OSwzLjEyMSw4LjQzOS0xLjE2Niw2LjIwNy00Ljk1NC0uMjUxLS40MjUtLjU3Ni0uNzQ5LS40NjktLjQyMy43MTQsMi4xNzguMDU0LDMuOS0xLjE3Niw0Ljc4OGE0LjA2Myw0LjA2MywwLDAsMS00LjE5Mi4zMjhjLS4zOS0uMi0uNTUxLjA5Mi0uMzcuMjYxbS0zLjkzLTEwLjE2Yy4wMTguMi4yOTIuNDU4LjcyMi41NzZhMi45NjksMi45NjksMCwwLDAsMi41NS0uNDEzLDIuNzU5LDIuNzU5LDAsMCwwLC44MS0zLjQ1MmMtLjE3Mi0uMzA4LS40LS41MzMtLjIxOC0uMDQxQTIuNjgsMi42OCwwLDAsMSw2LjE0OCwxNi41M2EyLjQzOSwyLjQzOSwwLDAsMS0yLjEuMTY0Yy0uMzkxLS4xMTktLjYuMDE2LS41OC4yMjNcIi8+PHBhdGggZD1cIk0xOS4wNTYsMjguNDA3Yy0uMDMzLjM4OS40MTQuNDY2LDEuMDE2LjM3NmE2Ljc1NSw2Ljc1NSwwLDAsMCwyLjMxMy0uNjQ4LDkuNTQsOS41NCwwLDAsMCwzLjMxNC0yLjYzYzIuNjYyLTMuNDczLDMuNi03LjU4MiwzLjQ2LTguMTczQTE2LjE3MiwxNi4xNzIsMCwwLDEsMjcsMjIuNjkyYy0xLjg4OCwyLjk2OC0zLjI1Niw0LjU0OC02LjQxMyw1LjMxNC0uODc5LjIxMy0xLjQ4NS0uMTEyLTEuNTI5LjRtLTctMTMuNUE3Ljk2Nyw3Ljk2NywwLDAsMCwxNC42LDE2LjA4OWExMi4yLDEyLjIsMCwwLDEsMi45NiwxLjMxYy4zNzguMjUzLjYxOC44MTkuNjQyLjMxN3MtLjI4NS0uOTM0LS45NzYtMS4xNjRhMTUuMjc0LDE1LjI3NCwwLDAsMC0yLjAwOS0uNjc0Yy0uNDg1LS4xLTEuMjczLS4yODUtMS45NDktLjQ5My0uMzcxLS4xMTQtLjc0OC0uMzEzLTEuMjE0LS40ODNNMTAuMDM3LDI3LjcxOGMuNDI5LS4wOSwyLjkyNC0uNzM2LDMuNTEtMi43ODguMTgzLS42NC4yMTUtLjUxMS4xNjQtLjE2NWEzLjgsMy44LDAsMCwxLTMuMzU4LDMuMTIzYy0uMjg5LjAzLS42NjgtLjEtLjMxNS0uMTdNNS4wNDYsMTcuMmE3Ljk5MSw3Ljk5MSwwLDAsMCwxLjE5NS0uMzM2LDIuMzgzLDIuMzgzLDAsMCwwLDEuMjMyLTEuNzQxYy4wNjQtLjUwNS4wODMtLjM3OC4xMDktLjFhMi42MjcsMi42MjcsMCwwLDEtMi4xNDcsMi4zMjRjLS4yLjAyOC0uNTYuMDExLS4zODktLjE0M1wiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMjcuNTQsMTcuNDQ2YzIuMTI0LTYuMTIzLTIuMzIxLTE1LjM3LTExLjMxNS0xNC4yNTgtOC4xMjYsMS04LjI1Nyw5LjU1Ny0xLjEsMTEuNTksOC4xMTIsMS4yMjgsMy4yMjcsNy4zNDcsMi41MzUsMTAuNDMzLS42MjEsMi43NjYsNi41NTUsMy4yMjEsOS44NzYtNy43NjVNNy4yMTksMjYuMmEyLjAyOCwyLjAyOCwwLDAsMSwxLjMzMi40NDIsMy41MjUsMy41MjUsMCwwLDAsMy43NTUtLjk4M0E0LjE1NCw0LjE1NCwwLDAsMCwxMi44NjksMjJjLS44MDYtMi4zMTktNC4yMjktMi4yNzgtNS43NTgtLjM1My0xLjY1NCwyLjE1LS40LDQuNTM5LjEwOCw0LjU0OE0yLjY3NiwxNS40NTFhMS4xNjYsMS4xNjYsMCwwLDAsLjkwOC44NjNjLjczMS4xLjg4LjQzNCwxLjc0My4yNjNBMi40NjQsMi40NjQsMCwwLDAsNy4xLDE0LjkxNmExLjc3MSwxLjc3MSwwLDAsMC0uODI0LTIuMTQsMi42ODksMi42ODksMCwwLDAtMy4wNDcuMzYzLDIuMjYzLDIuMjYzLDAsMCwwLS41NTgsMi4zMTJcIiBzdHlsZT1cImZpbGw6Izk5OVwiLz48cGF0aCBkPVwiTTIxLjk4MSwyMi4yMjhjLTIuMi0uMjcyLTUuMzYsNC42OS0yLjM3OCw0LjEwOWgwYTUuNjQ1LDUuNjQ1LDAsMCwwLDMuNjgzLTEuOTMyLDIzLjEzNiwyMy4xMzYsMCwwLDAsNC4wNTUtNy4yYy41LTEuODYxLjI1MS00Ljc0NS0uMjY5LTIuMDM2LS41MzMsMi43ODEtMi44OTMsNy4zMzYtNS4wOTEsNy4wNjRNMTAuNTIzLDI2LjM2MkEyLjc3OCwyLjc3OCwwLDAsMCwxMi41LDIyLjk5Yy0uMTY1LTEuMjc2LS44NjEsMS41ODQtMi4xNSwyLjAxMi0xLjk1My42NDgtMS43MzMsMS44NjEuMTc2LDEuMzYxbS00Ljk3OC0xMC4yYy42NjMtLjE3MywxLjU0LTEuMDc3LDEuMS0xLjc2Ny0uNTM3LS44NS0yLjAzMy0uMTIyLTIuMDg0LjgyNHMuMjc3LDEuMTI3Ljk3OS45NDNcIiBzdHlsZT1cImZpbGw6I2YzZjNmM1wiLz5gLFxuICBcIi5ucG1pZ25vcmVcIjogYDxwYXRoIGQ9XCJNMiwxMC41NTVIMzB2OS4zMzVIMTZ2MS41NTZIOS43NzhWMTkuODg5SDJabTEuNTU2LDcuNzc5SDYuNjY3VjEzLjY2Nkg4LjIyMnY0LjY2N0g5Ljc3OFYxMi4xMTFIMy41NTZabTcuNzc4LTYuMjIzdjcuNzc5aDMuMTExVjE4LjMzNGgzLjExMVYxMi4xMTFabTMuMTExLDEuNTU2SDE2djMuMTEySDE0LjQ0NFptNC42NjctMS41NTZ2Ni4yMjNoMy4xMTFWMTMuNjY2aDEuNTU2djQuNjY3aDEuNTU2VjEzLjY2NmgxLjU1NnY0LjY2N2gxLjU1NlYxMi4xMTFaXCIgc3R5bGU9XCJmaWxsOiNjYjM4MzdcIi8+YCxcbiAgXCIucHJvcGVydGllc1wiOiBgPHBhdGggZD1cIk0yMy4yNjUsMjQuMzgxbC45LS44OTRjNC4xNjQuMTM2LDQuMjI4LS4wMSw0LjQxMS0uNDM4bDEuMTQ0LTIuNzg1TDI5LjgwNSwyMGwtLjA5My0uMjMxYy0uMDQ5LS4xMjItLjItLjQ4Ni0yLjgtMi45NjVWMTUuNWMzLTIuODksMi45MzYtMy4wMzgsMi43NjUtMy40NjFMMjguNTM4LDkuMjI1Yy0uMTcxLS40MjItLjIzNi0uNTg3LTQuMzctLjQ3NGwtLjktLjkzYTIwLjE2NiwyMC4xNjYsMCwwLDAtLjE0MS00LjEwNmwtLjExNi0uMjYzLTIuOTc0LTEuM2MtLjQzOC0uMi0uNTkyLS4yNzItMy40LDIuNzg2bC0xLjI2Mi0uMDE5Yy0yLjg5MS0zLjA4Ni0zLjAyOC0zLjAzLTMuNDYxLTIuODU1TDkuMTQ5LDMuMTgyYy0uNDMzLjE3NS0uNTg2LjIzNy0uNDE4LDQuNDM3bC0uODkzLjg5Yy00LjE2Mi0uMTM2LTQuMjI2LjAxMi00LjQwNy40MzhMMi4yODUsMTEuNzMzLDIuMTk1LDEybC4wOTQuMjMyYy4wNDkuMTIuMTk0LjQ4LDIuOCwyLjk2MmwwLDEuM2MtMywyLjg5LTIuOTM1LDMuMDM4LTIuNzYzLDMuNDYybDEuMTM4LDIuODE3Yy4xNzQuNDMxLjIzNi41ODQsNC4zNjkuNDc2bC45LjkzNWEyMC4yNDMsMjAuMjQzLDAsMCwwLC4xMzcsNC4xbC4xMTYuMjY1LDIuOTkzLDEuMzA4Yy40MzUuMTgyLjU4Ni4yNDcsMy4zODYtMi44bDEuMjYyLjAxNmMyLjg5NSwzLjA5LDMuMDQzLDMuMDMsMy40NjYsMi44NTlsMi43NTktMS4xMTVDMjMuMjg4LDI4LjY0NCwyMy40NCwyOC41ODMsMjMuMjY1LDI0LjM4MVpNMTEuNDA3LDE3Ljg1N2E0Ljk1Nyw0Ljk1NywwLDEsMSw2LjQ4OCwyLjgyNEE1LjAxNCw1LjAxNCwwLDAsMSwxMS40MDcsMTcuODU3WlwiIHN0eWxlPVwiZmlsbDojOTliOGM0XCIvPmAsXG4gIFwiNjUwMiBBc3NlbWJseVwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiODM2LjYzXCIgeTE9XCIzNi4yMDVcIiB4Mj1cIjg0My44MDJcIiB5Mj1cIjE0LjQ4XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoNTI1LjkyMiAzMC4yNDkpIHJvdGF0ZSgxODApIHNjYWxlKDAuNjA3IDAuNjA3KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiIHN0b3Atb3BhY2l0eT1cIjBcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZmZmXCIgc3RvcC1vcGFjaXR5PVwiMC4yNzVcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9hc3NlbWJseTwvdGl0bGU+PHBhdGggZD1cIk0xNiwyYy0xLjI0NiwzLjA1Ni0yLDUuMDU3LTMuMzkxLDguMDIyQTIxLjg4NCwyMS44ODQsMCwwLDAsMTYuMiwxMy4xNTZhMTQuODU4LDE0Ljg1OCwwLDAsMS00LTIuMjgzQzEwLjQzLDE0LjU3OSw3LjY0NiwxOS44NTUsMiwzMGM1LjE4Ni0yLjk5NCw5LjAxMi00LjY0OCwxMi42OTEtNC45NjZWMjQuMmgtLjgzNHYtLjgzN2guODM0VjI0LjJoMS42NzVWMjIuNTIxSDE0LjY5MXYtLjgzNGgtLjgzNFYyMC4wMTNoLjgzNHYtLjgzNGgxLjY3NXYuODM0SDE3LjJ2LjgzN2gtLjgzN3YtLjgzN0gxNC42OTF2MS42NzVoMS42NzV2LjgzNEgxNy4yVjI0LjJoLS44Mzd2Ljc4M2MzLjk4LjEsOC4wMDYsMS43NzIsMTMuNjM0LDUuMDIxLS44NjMtMS41ODktMS42MzYtMy4wMjEtMi4zNzItNC4zODVhMjUuNTI2LDI1LjUyNiwwLDAsMC00LjgzMy0zLjMzM0ExNC40MzYsMTQuNDM2LDAsMCwxLDI2LjY1LDIzLjhDMTkuMTcsOS44NzIsMTguNTY1LDguMDIsMTYsMlpNMTAuNTExLDE5LjE3OWgxLjY3MXYuODM0aC44Mzd2NS4wMjFoLS44MzdWMjIuNTIxSDEwLjUxMXYyLjUxMkg5LjY3M1YyMC4wMTNoLjgzN1ptMCwuODM0djEuNjc1aDEuNjcxVjIwLjAxM1ptNy41MjYtLjgzNGguODM3di44MzRoLjgzN3YuODM3aC44MzR2LS44MzdoLjgzN3YtLjgzNGguODM3djUuODU1aC0uODM3VjIwLjg1aC0uODM3di44MzdoLS44MzRWMjAuODVoLS44Mzd2NC4xODRoLS44MzdaXCIgc3R5bGU9XCJmaWxsOiMwMDAwYmZcIi8+PHBhdGggZD1cIk0yMy44ODEsMTguNjQyYy02LjA2OS04LjIzNy03LjQ3Ni0xNC44NzYtNy44MzItMTYuNDYxQTE3NS4yMTcsMTc1LjIxNywwLDAsMCwyMy44ODEsMTguNjQyWlwiIHN0eWxlPVwiZmlsbDojZmZmO2ZpbGwtb3BhY2l0eTowLjE2NTY4MDQ2ODA4MjQyOFwiLz48cGF0aCBkPVwiTTE2LjA1MSwyLjEyLDE1LjYsMy4yMjdjLS4xNTkuMzkxLS4zMTEuNzY1LS40NjEsMS4xMzFzLS4zLjcyNC0uNDQ4LDEuMDc3LS4zLjctLjQ0OCwxLjA1My0uMy43MDYtLjQ2NSwxLjA2Ni0uMzI5LjcyOS0uNTA2LDEuMTExLS4zNjIuNzc4LS41NjEsMS4xOTNjLS4wMjguMDU3LS4wNjEuMTIzLS4wODkuMTgxQTIxLjg3MiwyMS44NzIsMCwwLDAsMTYuMiwxMy4xNTZhMTQuODc5LDE0Ljg3OSwwLDAsMS0zLjk4OS0yLjI3NmwtLjE0LjI4N2MtLjA2NS4xMzMtLjE0NC4yODMtLjIxMi40MmwtLjEwNi4yMTljLS44NzgsMS43OTMtMi4wMDYsMy45ODQtMy41MjQsNi44MjIsMy41NTEtMiw3LjM4MS00Ljg4NywxNC4zMzgtMi40LS4zNDktLjY2MS0uNjctMS4yOC0uOTcxLTEuODYzcy0uNTgxLTEuMTI4LS44NDEtMS42NDQtLjUtMS0uNzI1LTEuNDYzLS40MzMtLjktLjYyOS0xLjMxMy0uMzgtLjgxOC0uNTU0LTEuMi0uMzM5LS43NTQtLjUtMS4xMThTMTguMDQ3LDYuOSwxNy45LDYuNTQ2cy0uMjkxLS43MDktLjQzNC0xLjA2NmMtLjAzNi0uMDkxLS4wNzMtLjE4Ni0uMTA5LS4yNzdDMTYuOTQ5LDQuMjQ3LDE2LjUzNiwzLjI1OCwxNi4wNTEsMi4xMlpcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz5gLFxuICBcIkFjdGlvblNjcmlwdFwiOiBgPHBhdGggZD1cIk0yLDE1LjI4MWMxLjkxOCwwLDIuMTEtMS4wNTUsMi4xMS0xLjkxOGExNy4xMTksMTcuMTE5LDAsMCwwLS4xOTItMi4yMDUsMTguNzIzLDE4LjcyMywwLDAsMS0uMTkyLTIuMjA1YzAtMi40LDEuNjMtMy40NTIsMy44MzYtMy40NTJoLjU3NVY2LjkzOEg3LjY1OGMtMS41MzQsMC0yLjExLjc2Ny0yLjExLDIuMjA1YTE0LjQxMiwxNC40MTIsMCwwLDAsLjE5MiwxLjkxOCwxNC4zMDYsMTQuMzA2LDAsMCwxLC4xOTIsMi4wMTRjMCwxLjcyNi0uNjcxLDIuNDkzLTEuOTE4LDIuODc3di4xYzEuMTUxLjI4OCwxLjkxOCwxLjE1MSwxLjkxOCwyLjg3N2ExNC4zMDYsMTQuMzA2LDAsMCwxLS4xOTIsMi4wMTQsMTMsMTMsMCwwLDAtLjE5MiwxLjkxOGMwLDEuNDM4LjU3NSwyLjMsMi4xMSwyLjNoLjQ3OVYyNi42SDcuNTYyYy0yLjIwNSwwLTMuODM2LS45NTktMy44MzYtMy42NDRhMTguNzIzLDE4LjcyMywwLDAsMSwuMTkyLTIuMjA1LDE1LjY4LDE1LjY4LDAsMCwwLC4xOTItMi4xMWMwLS44NjMtLjI4OC0xLjkxOC0yLjExLTEuOTE4WlwiIHN0eWxlPVwiZmlsbDojYzQxNzE4XCIvPjxwYXRoIGQ9XCJNOS40NzksMTguMDYyLDguMjMzLDIxLjhINi42TDEwLjYzLDkuOTExaDEuODIyTDE2LjQ3OSwyMS44SDE0Ljk0NUwxMy43LDE4LjA2MlptMy45MzItMS4xNTFMMTIuMjYsMTMuNDU5YTkuMzY0LDkuMzY0LDAsMCwxLS41NzUtMi4yMDVoMGMtLjE5Mi42NzEtLjM4NCwxLjQzOC0uNTc1LDIuMTFMOS45NTksMTYuODE1aDMuNDUyWlwiIHN0eWxlPVwiZmlsbDojYzQxNzE4XCIvPjxwYXRoIGQ9XCJNMTcuOTE4LDE5Ljk3OWE1Ljk0MSw1Ljk0MSwwLDAsMCwyLjc4MS43NjdjMS41MzQsMCwyLjQ5My0uODYzLDIuNDkzLTIuMDE0cy0uNjcxLTEuNzI2LTIuMjA1LTIuNGMtMS45MTgtLjY3MS0zLjE2NC0xLjcyNi0zLjE2NC0zLjM1NiwwLTEuODIyLDEuNTM0LTMuMjYsMy44MzYtMy4yNmE1LjEzNSw1LjEzNSwwLDAsMSwyLjU4OS41NzVsLS4zODQsMS4yNDdhNS41MTksNS41MTksMCwwLDAtMi4zLS40NzljLTEuNjMsMC0yLjIwNS45NTktMi4yMDUsMS44MjIsMCwxLjE1MS43NjcsMS42MywyLjQsMi4zLDIuMDE0Ljc2NywzLjA2OCwxLjcyNiwzLjA2OCwzLjQ1MiwwLDEuODIyLTEuMzQyLDMuNDUyLTQuMTIzLDMuNDUyYTUuODA3LDUuODA3LDAsMCwxLTMuMDY4LS43NjdaXCIgc3R5bGU9XCJmaWxsOiNjNDE3MThcIi8+PHBhdGggZD1cIk0zMCwxNi42MjNjLTEuOTE4LDAtMi4xMSwxLjE1MS0yLjExLDEuOTE4YTE1LjY4LDE1LjY4LDAsMCwwLC4xOTIsMi4xMSwxNS43MzgsMTUuNzM4LDAsMCwxLC4xOTIsMi4yMDVjMCwyLjY4NS0xLjYzLDMuNjQ0LTMuODM2LDMuNjQ0aC0uNTc1VjI1LjA2MmguNDc5YzEuNDM4LDAsMi4xMS0uODYzLDIuMTEtMi4zYTEzLDEzLDAsMCwwLS4xOTItMS45MTgsMTQuMzA2LDE0LjMwNiwwLDAsMS0uMTkyLTIuMDE0YzAtMS43MjYuNzY3LTIuNTg5LDEuOTE4LTIuODc3di0uMWMtMS4xNTEtLjI4OC0xLjkxOC0xLjE1MS0xLjkxOC0yLjg3N2ExNC4zMDYsMTQuMzA2LDAsMCwxLC4xOTItMi4wMTQsMTMsMTMsMCwwLDAsLjE5Mi0xLjkxOGMwLTEuNDM4LS41NzUtMi4yMDUtMi4xMS0yLjNoLS40NzlWNS40aC41NzVjMi4yMDUsMCwzLjgzNiwxLjA1NSwzLjgzNiwzLjQ1MmExNy4xMTksMTcuMTE5LDAsMCwxLS4xOTIsMi4yMDUsMTcuMTE5LDE3LjExOSwwLDAsMC0uMTkyLDIuMjA1YzAsLjk1OS4yODgsMS45MTgsMi4xMSwxLjkxOFpcIiBzdHlsZT1cImZpbGw6I2M0MTcxOFwiLz5gLFxuICBcIkFkYVwiOiBgPHBhdGggZD1cIk0yNC41NTQsMjAuMDc1Yy4yMDkuMjcsMS4zNTYuOTYxLDEuMzcsMS4yNDZhNi45MjEsNi45MjEsMCwwLDAtMS40LS4zMjRjLS40NjgtLjE0Mi0uOTUxLS4yOTMtMS40MTItLjQ4YTkuMiw5LjIsMCwwLDEtMi4zNzUtMS4zQTMuMTQ2LDMuMTQ2LDAsMCwxLDE5LjMsMTYuNzVhMS43MjIsMS43MjIsMCwwLDEsMS43NjctMS44MjIsMy41ODQsMy41ODQsMCwwLDEsMS41OTMuMzIxYy4xNDYuMDY2LDEuMzEuNjA2LDEuMjU2LjgwOWE1LjUsNS41LDAsMCwwLTEuNDEtLjExMmMtLjY0OS4yNDQtLjQuODI4LS4xNjgsMS4zMTFhNy44NzcsNy44NzcsMCwwLDAsMS4wNzgsMS41NTRDMjMuNTgsMTkuMDA1LDI0LjMsMjAuMDgyLDI0LjU1NCwyMC4wNzVaXCIgc3R5bGU9XCJmaWxsOiMwZjIzYzNcIi8+PHBhdGggZD1cIk0yNC4xNDEsMTYuMjc2Yy4xMjgtLjU5LjgxOS0xLjM4NCwxLjM0NC0uNzczYTQuMiw0LjIsMCwwLDEsLjU3OCwxLjkxOGMuMTIuNjU2LjIsMS4zMjcuMjYxLDEuOTgyLjAzOC4zNzkuMzQsMS43OTQuMTIzLDIuMDc1YTIzLjI0LDIzLjI0LDAsMCwxLTIuOTIyLTIuODM4LDMuNzYzLDMuNzYzLDAsMCwxLS45MjUtMS43QzIyLjUsMTUuODY3LDIzLjQ3OSwxNi4yMSwyNC4xNDEsMTYuMjc2WlwiIHN0eWxlPVwiZmlsbDojMWExOTc4XCIvPjxwYXRoIGQ9XCJNMjYuMywxNy43ODFjLjE0MS0uNzMyLS40MDYtMi41OTItMS4wNjctMi45NDlhLjA2LjA2LDAsMCwwLC4wNDQtLjAwN2MtLjE1Ni0uNDQ0LTEuMzU5LDEuMTE2LTEuMjI4LDEuMTc0LS4zMTYtLjEzOC43NzQtMS45ODQuOTg4LTIuMTYuNy0uNTc4LDEuMzcyLS4wODYsMS44NDUuNTQzYTYuMDM2LDYuMDM2LDAsMCwxLC43MzMsNC40MzQsNC41LDQuNSwwLDAsMS0uNDIxLDEuMzEyYy0uMS4yMi0uNDUsMS4xLS42ODIsMS4xNzRBMTQuNzU0LDE0Ljc1NCwwLDAsMCwyNi4zLDE3Ljc4MVpcIiBzdHlsZT1cImZpbGw6IzBmMjNjM1wiLz48cGF0aCBkPVwiTTMuNjg3LDguNGMuMTc5LS4xODgtLjA0MS0xLjUyNy4zMjQtMS41NDguMjYyLS4wMTUuNTUzLDEuNzQxLjYyNywxLjk2OGE5LjIsOS4yLDAsMCwwLDEuMTI3LDIuMzI5LDcuNTI5LDcuNTI5LDAsMCwwLDQuMDE2LDIuOTc4LDQuNTUsNC41NSwwLDAsMCwyLjM2Ni4yYy45MzEtLjIwOCwxLjgyLS41NzcsMi43NTctLjc2NSwxLjM1LS4yNywzLjM0Mi0uMzUyLDQuNDM4LjY0Ny43LjY0MS4zNzYuNzYuMDQzLDEuNDIxYTIuNDQ1LDIuNDQ1LDAsMCwwLC4xNzgsMi41NjJjLjIzNS4zNDIsMS4wMzMuODI3LjY3NSwxLjA5NC0uNTY3LjQyNC0xLjI3Ny0uNDUyLTEuNjM2LS43NzYtMS40LTEuMjY0LTIuNzExLTEuMzEzLTQuNDkyLTEuMDc0YTguOTg3LDguOTg3LDAsMCwxLTQuODgzLS43MDhBOS40NjksOS40NjksMCwwLDEsMy42ODcsOC40WlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMTkuOTQxLDMwYTMuNjE1LDMuNjE1LDAsMCwxLTIuMzI1LS44MTdjLjQ2OS0uMDkyLDEuMDIxLjAyNSwxLjUwOC0uMDQ0YTkuNyw5LjcsMCwwLDAsMS43NTQtLjQzQTEwLjUzNywxMC41MzcsMCwwLDAsMjMuOSwyNy4xNTVhNi41NSw2LjU1LDAsMCwwLDIuNzU3LTUuMjE0Yy4xNDktLjA4OC4zMTYsMS4wMzQuMzE5LDEuMDkxYTUuNzg5LDUuNzg5LDAsMCwxLS4xOSwxLjcyNyw2Ljg2Nyw2Ljg2NywwLDAsMS0xLjQyMywyLjc3NEE3LjI4Niw3LjI4NiwwLDAsMSwxOS45NDEsMzBaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0xOC45NjIsMTkuMTA5YTUuNzYsNS43NiwwLDAsMS0yLjA1Ljg1OSwxMy4zOCwxMy4zOCwwLDAsMS0yLjIyNC41NDksOC44NjEsOC44NjEsMCwwLDEtNC40MzUtLjUxLDkuOTM5LDkuOTM5LDAsMCwxLTMuODQ5LTIuNEM2LjA1MiwxNy4yNCw0LjMsMTUuMTksNC44NTYsMTQuNTU3Yy4yNDgtLjI4Mi44NzUuODQ2LDEsLjk5MmE1LDUsMCwwLDAsMS4zNTcsMS4xMSwxMC45MTcsMTAuOTE3LDAsMCwwLDQuMDM1LDEuNDU2LDYuNjkzLDYuNjkzLDAsMCwwLDIuMzQtLjA5NCwxMi43NDMsMTIuNzQzLDAsMCwxLDEuNjk0LS40ODUsNCw0LDAsMCwxLDIuMTEzLjQ1N0MxNy43MzksMTguMTYzLDE4LjkxOCwxOC43MzYsMTguOTYyLDE5LjEwOVpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTI4LjMxMywxNS4wNzhhMTkuMjc3LDE5LjI3NywwLDAsMS0uNDUzLDMuNzc0Yy0uMTc2LS4yNDIuMDE2LTEuNDcsMC0xLjc5MmE2LjAzMiw2LjAzMiwwLDAsMC0uMzg0LTIuMDg3QTQuOTI1LDQuOTI1LDAsMCwwLDI2LjEsMTMuMzEyYTE0LjcyOCwxNC43MjgsMCwwLDEtMS4yNy0xLjUzNmMtMS44MzctMi4zODItMy4yNDUtNS4yMTEtMi45LTguMy4wMzQtLjMwOC4wNjktMS40NDguNDExLTEuNDQ1LjE1MiwwLC4yNjYsMS41NjEuMjksMS43MThhMTIuNTI3LDEyLjUyNywwLDAsMCwxLjIyNCw0LjExNmMuNjcsMS4yMjIsMS45NDcsMi4wMjMsMi44MjUsMy4xQTYuNTc5LDYuNTc5LDAsMCwxLDI4LjMxMywxNS4wNzhaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0xNS43LDI2LjkzNWExMC44NDUsMTAuODQ1LDAsMCwwLDYuNDM2LS42ODcsNi45NDEsNi45NDEsMCwwLDAsNC4yNzgtNC40MThjLjMxOS4yLS4wNDgsMS41MjktLjEyOCwxLjc4MWE1LjcyNiw1LjcyNiwwLDAsMS0xLjAxLDEuODEzLDguOTMzLDguOTMzLDAsMCwxLTMuMjU3LDIuNTE0QzIwLjMxNiwyOC43MSwxNi4zNTcsMjkuNTksMTUuNywyNi45MzVaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0xOS4xNTEsMTkuMzc2Yy4zNjcsMi4xMDctMi45NTcsMy4xMjQtNC40NzgsMy4yMTMtMS44NTkuMTEtNC45MjktLjI5Mi02LjA2LTIuMDMxLS42NzMtMS4wMzUuNzgxLS4wOSwxLjE4OC4wNThhOC42NjMsOC42NjMsMCwwLDAsMy4wNi41LDExLjYsMTEuNiwwLDAsMCwzLjMwNS0uNSwxMy43MjUsMTMuNzI1LDAsMCwwLDEuNTMzLS41NzZDMTgsMTkuOTA4LDE4LjgyMywxOS4zNDksMTkuMTUxLDE5LjM3NlpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTI0LjE0MiwyMy40NmMuNC0uOTQ1LTEuODgzLTEuNTc4LTIuNDQ1LTEuODU4YTQuODU3LDQuODU3LDAsMCwxLTEuMzE1LS44NjdjLS4xODEtLjE4MS0uODcyLS45Mi0uODA3LTEuMjE5YTQuOTEyLDQuOTEyLDAsMCwxLDEuMDg3LS4xNzUsNS45Myw1LjkzLDAsMCwxLC44NTUuNTg4LDEwLjMyMywxMC4zMjMsMCwwLDAsLjk2NC41QTE1LjYxNSwxNS42MTUsMCwwLDAsMjQuNiwyMS4yYy4zMDguMDksMS41NDkuMjA4LDEuNzI3LjQyOEMyNi4yODcsMjEuOTI0LDI0LjM1NywyMy42NDksMjQuMTQyLDIzLjQ2WlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMjYuMSwyMi4xNzJjLjI2NS40My0xLjA4LDEuODMxLTEuMzYzLDIuMTA1YTkuMzQsOS4zNCwwLDAsMS0yLjU2NiwxLjcyOCw3Ljc0OCw3Ljc0OCwwLDAsMS0yLjU2Ljc1M2MtLjY3OS4wNTgtMS45NjYtLjEyNC0yLjE0MS0uOTc5YTYuOTUxLDYuOTUxLDAsMCwxLDEuMTc3LS4wODZjLjQ2Mi0uMDU5LjkyMS0uMTQ5LDEuMzc2LS4yNDZhMTMuMDY1LDEzLjA2NSwwLDAsMCwyLjE4NC0uNjQ1LDExLjUwNiwxMS41MDYsMCwwLDAsMi4wODQtMS4xMSwxMC44NzIsMTAuODcyLDAsMCwwLDEuMDc4LS44MjJDMjUuNDc0LDIyLjc4MSwyNS45ODYsMjIuMTY4LDI2LjEsMjIuMTcyWlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMTguNzU4LDExLjk2NWMtLjEtMS4zMDgsMi42MTItMS4zLDMuMjcxLTEuMDkyYTUuOTc2LDUuOTc2LDAsMCwxLDIuOTgyLDIuNDc1Yy0xLjA4Mi44LTIuNDQ5LjA5NC0zLjMtLjY1NGE0LjMyNCw0LjMyNCwwLDAsMC0xLjQ4MS0xLjAyOUMxOS40MjEsMTEuNCwxOS40MTIsMTEuNzU5LDE4Ljc1OCwxMS45NjVaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0yNS43ODMsMTMuMzQxYy0uNDQ0LS4wMjktLjMxNi4wNzEtLjY0Ny0uMjEyLS4zNTgtLjMwNy0uNjE0LS43OTUtLjk0NS0xLjE0MS0uNTM0LS41NTgtMS4yNDItLjg5NS0xLjcyMy0xLjQ4NWE3LjI2OSw3LjI2OSwwLDAsMS0xLjYyNC00Ljg0OGMuMDE4LTEuNDg5LjQwNy4xODcuNTUxLjY3NWExMi4yNzYsMTIuMjc2LDAsMCwwLDEuMTI2LDIuNzA4LDQ2LjA1NSw0Ni4wNTUsMCwwLDAsMy40LDQuMzIxQzI1Ljg4MiwxMy4zNjEsMjUuODI0LDEzLjMzOCwyNS43ODMsMTMuMzQxWlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMjAuMDY4LDE0Ljc1NmMuMDMzLS42MjUtLjkxMS0uNzkyLTEuMjExLTEuNDItLjE2NC0uMzQzLS4yMTEtLjU2OS4wMjktLjcuMDgyLS4wNDUuMzgzLjAxMi41LS4wMi4yNzEtLjA3Ni4zMzUtLjI3My41ODEtLjRBMS4xOTMsMS4xOTMsMCwwLDEsMjEuNiwxMy4yMzcsMS44MjEsMS44MjEsMCwwLDEsMjAuMDY4LDE0Ljc1NlpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTIwLjUsMTQuNzQ1YTEuOTMxLDEuOTMxLDAsMCwwLDEuMzIzLTEuN2MuNTI0LjEzOS45MjguNjU4LDEuNTIxLjc3MWEyLjU4NCwyLjU4NCwwLDAsMCwxLjAyOS0uMDE3Yy4yMDctLjA0NS41NC0uMjc0LjcyMS0uMjU5LS4wMzMuMTYzLS40NjQuNTQ2LS41NjUuNzE3YTQuMjQyLDQuMjQyLDAsMCwwLS4zODguOWMtLjIyOS43NDEtLjA2MS43MzktLjcwOS4zMTFhNC4yODQsNC4yODQsMCwwLDAtMS45NTctLjcyQzIxLjIwOSwxNC43MjIsMjAuNTk0LDE0Ljc2NywyMC41LDE0Ljc0NVpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTE5LjkwNSwyMC43MzRhMi4wMDgsMi4wMDgsMCwwLDEtMS40LDEuNzEyYy0uMjA1LjA5MS0yLjAxOC43MzMtMi4wMzIuMzQ4LS4wMDctLjIsMS42MjQtLjk1NCwxLjgwOS0xLjExYTMuMzU1LDMuMzU1LDAsMCwwLC44NjctMS4wNzFjLjA1NS0uMTEyLjIzMi0uOTI1LjI3MS0uOTQzQzE5LjY0NCwxOS41NjQsMTkuOTA4LDIwLjYsMTkuOTA1LDIwLjczNFpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTExLjM3MywxMi41MzJhMTAuNjI1LDEwLjYyNSwwLDAsMSwzLjcxLS45MTQsMTAuMjgyLDEwLjI4MiwwLDAsMSwxLjg2NS4wMjRjLjM2Ni4wMzksMS40NjkuMDU0LDEuNzQuMzQzYS4yNTUuMjU1LDAsMCwxLS4yNzMuMTczYy0uMDM3LjA3Ny4yNTEuMzcxLjMuNDI1LS4wMzQuMDM0LTEuNDQ1LS40LTEuNTcyLS40MjRhMTAuNjMyLDEwLjYzMiwwLDAsMC0yLjI4Mi0uMTM0LDE2LDE2LDAsMCwwLTEuODQxLjE5NEE2LjIyNCw2LjIyNCwwLDAsMSwxMS4zNzMsMTIuNTMyWlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMjIuNTEyLDEwLjczMWExLjg4OCwxLjg4OCwwLDAsMS0xLjUxNy0uNmMtLjI0Ny0uMzQ5LS43MzctMS42OTItLjM4NS0yLjAyMS4yMDktLjIuMzg0LjY2Mi40ODQuODQ2QTEwLjgyMiwxMC44MjIsMCwwLDAsMjIuNTEyLDEwLjczMVpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTI3Ljc4OCwxOS4yYTE5LjIxMiwxOS4yMTIsMCwwLDEtLjc0OSwzLjMxM2MtLjE3My0uMDc3LS4yNzUtLjc3OC0uNTYyLS45NWE0LjA3LDQuMDcsMCwwLDAsLjc2LTEuMTU0QzI3LjM4OSwyMC4xMDcsMjcuNTQsMTkuMzYzLDI3Ljc4OCwxOS4yWlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMTkuOTgxLDExLjg0M2MtLjEzMi4yNjgtLjkzMiwxLjEtMS4xMTguNDgxQzE4Ljc1NiwxMS45NjgsMTkuNzM5LDExLjQ4MywxOS45ODEsMTEuODQzWm0tLjc0Ny40NWMuMjI4LjAwNi4wMTItLjI0OC4wMTItLjI2NkMxOS4yNDUsMTEuOTg0LDE4Ljg3OCwxMi4yOTMsMTkuMjM0LDEyLjI5M1pcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz5gLFxuICBcIkFMXCI6IGA8cGF0aCBkPVwiTTExLjYxNiw3Ljk4NkExLjU1OSwxLjU1OSwwLDAsMCwxMC4xNiw3SDEwLjFhMS41NTgsMS41NTgsMCwwLDAtMS40NTYuOTg2TDIsMjVINS44MDZsMS4wMTUtMi44MzRoNi42MjFMMTQuNDU3LDI1aDMuOFpNNy45NDQsMTguOTU2bDIuMTg4LTYuMTExLDIuMTg4LDYuMTE2WlwiIHN0eWxlPVwiZmlsbDojMmVhOThlXCIvPjxwYXRoIGQ9XCJNMjMuODI5LDIxLjY3MVY3LjEyOUgyMC4zVjIyLjc0N0EyLjM0NiwyLjM0NiwwLDAsMCwyMi41NywyNUgzMFYyMS42NzJaXCIgc3R5bGU9XCJmaWxsOiMyZWE5OGVcIi8+YCxcbiAgXCJBTlRMUjRcIjogYDxwYXRoIGQ9XCJNMTQuMTc3LDcuMjc4YTIuMDgsMi4wOCwwLDAsMSwzLjA0MS0uOEEzLjU3MSwzLjU3MSwwLDAsMSwxOC4yLDguMDIyYzEuMzU2LDMuMTIyLDIuOSw2LjE2NSw0LjExOSw5LjM0NS42NDUsMS41LDEuNDI5LDIuOTM4LDEuOTk0LDQuNDY4YTEuNDU1LDEuNDU1LDAsMCwxLTIuMjU4LDEuMzc2Yy0yLjgtMS41NzItNS42MjgtMy4wOTQtOC4zODUtNC43MzEsMi4wMDkuMDA4LDQuMDE4LS4wMDgsNi4wMjUuMDEzYTE5LjcwNywxOS43MDcsMCwwLDAtMS4yODgtMi45MThjLS43ODEtMS44NTgtMS42LTMuNy0yLjM1OC01LjU2NWE5Ljc4Myw5Ljc4MywwLDAsMC0xLjAzMiwyLjEyNWMtMS4zLDMuMTgyLTIuODcsNi4yNDEtNC4xMzYsOS40MzUtLjI4MS41OS0uNDI0LDEuMzQ0LTEuMDM1LDEuNjlhMS40NDcsMS40NDcsMCwwLDEtMi4wOTQtLjczOGMtLjI0MS0uNjEuMTUxLTEuMi4zODItMS43NDMuNzc5LTEuNzI1LDEuNjQ1LTMuNDEzLDIuMjgzLTUuMkMxMS42NSwxMi44LDEyLjkxNiwxMC4wNDEsMTQuMTc3LDcuMjc4WlwiIHN0eWxlPVwiZmlsbDojZmVmZWZlXCIvPjxwYXRoIGQ9XCJNMTMuODE3LDIuMkExMy45MjMsMTMuOTIzLDAsMCwxLDI5LjUyNiwxMi41NDlhMTMuNzMzLDEzLjczMywwLDAsMS0yLjA4MiwxMS41MTlBMTQuMDc0LDE0LjA3NCwwLDAsMSw3LjczOCwyNy4yOTNhMTMuODUyLDEzLjg1MiwwLDAsMS01LjYxNS05LjQ4M0ExNC4xNTIsMTQuMTUyLDAsMCwxLDMuNDUxLDkuODUsMTMuOTYxLDEzLjk2MSwwLDAsMSwxMy44MTcsMi4ybS4zNTksNS4wOGMtMS4yNjEsMi43NjItMi41MjYsNS41MjUtMy43NjIsOC4zLS42MzgsMS43ODYtMS41LDMuNDczLTIuMjgzLDUuMi0uMjMxLjU0Mi0uNjIzLDEuMTMzLS4zODIsMS43NDNhMS40NDcsMS40NDcsMCwwLDAsMi4wOTQuNzM4Yy42MS0uMzQ3Ljc1My0xLjEsMS4wMzUtMS42OSwxLjI2Ni0zLjE5NCwyLjgzMy02LjI1Myw0LjEzNi05LjQzNWE5Ljc4Myw5Ljc4MywwLDAsMSwxLjAzMi0yLjEyNWMuNzU2LDEuODY4LDEuNTc3LDMuNzA3LDIuMzU4LDUuNTY1YTE5LjcwNywxOS43MDcsMCwwLDEsMS4yODgsMi45MThjLTIuMDA3LS4wMi00LjAxNi0uMDA1LTYuMDI1LS4wMTMsMi43NTcsMS42MzcsNS41ODgsMy4xNTksOC4zODUsNC43MzFhMS40NTUsMS40NTUsMCwwLDAsMi4yNTgtMS4zNzZjLS41NjUtMS41MjktMS4zNDktMi45NzEtMS45OTQtNC40NjgtMS4yMi0zLjE3OS0yLjc2Mi02LjIyMy00LjExOS05LjM0NWEzLjU3MSwzLjU3MSwwLDAsMC0uOTgyLTEuNTQ0QTIuMDgsMi4wOCwwLDAsMCwxNC4xNzcsNy4yNzhaXCIgc3R5bGU9XCJmaWxsOiNlNDRhMzJcIi8+YCxcbiAgXCJBcGFjaGUgQ29uZmlndXJhdGlvblwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiLTU2MDIuNjgyXCIgeTE9XCI3NjguNTQxXCIgeDI9XCItNTU5OC43MjdcIiB5Mj1cIjc2My45MTdcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgwLjQyMywgLTAuOTA2LCAtMC45MDYsIC0wLjQyMywgMzA4Mi44NTMsIC00NzQ4LjU1MSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmNjk5MjNcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zMTJcIiBzdG9wLWNvbG9yPVwiI2Y3OWEyM1wiLz48c3RvcCBvZmZzZXQ9XCIwLjgzOFwiIHN0b3AtY29sb3I9XCIjZTk3ODI2XCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiLTU2MzEuOTUyXCIgeTE9XCI3NjkuMDUyXCIgeDI9XCItNTYwMy43MzdcIiB5Mj1cIjc2OS4wNTJcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgwLjQyMywgLTAuOTA2LCAtMC45MDYsIC0wLjQyMywgMzA4Mi44NTMsIC00NzQ4LjU1MSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwLjMyM1wiIHN0b3AtY29sb3I9XCIjOWUyMDY0XCIvPjxzdG9wIG9mZnNldD1cIjAuNjNcIiBzdG9wLWNvbG9yPVwiI2M5MjAzN1wiLz48c3RvcCBvZmZzZXQ9XCIwLjc1MVwiIHN0b3AtY29sb3I9XCIjY2QyMzM1XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2U5NzgyNlwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImNcIiB4MT1cIi01NjI4LjU0NlwiIHkxPVwiNzY2LjIyMVwiIHgyPVwiLTU2MTEuNzMzXCIgeTI9XCI3NjYuMjIxXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMC40MjMsIC0wLjkwNiwgLTAuOTA2LCAtMC40MjMsIDMwODIuODUzLCAtNDc0OC41NTEpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjMjgyNjYyXCIvPjxzdG9wIG9mZnNldD1cIjAuMDk1XCIgc3RvcC1jb2xvcj1cIiM2NjJlOGRcIi8+PHN0b3Agb2Zmc2V0PVwiMC43ODhcIiBzdG9wLWNvbG9yPVwiIzlmMjA2NFwiLz48c3RvcCBvZmZzZXQ9XCIwLjk0OVwiIHN0b3AtY29sb3I9XCIjY2QyMDMyXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiZFwiIHgxPVwiLTU2MzAuMzY3XCIgeTE9XCI3NjkuMzE2XCIgeDI9XCItNTYwMi4xNTJcIiB5Mj1cIjc2OS4zMTZcIiB4bGluazpocmVmPVwiI2JcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiZVwiIHgxPVwiLTU2MjguMzFcIiB5MT1cIjc2OC45MzNcIiB4Mj1cIi01NjEzLjQ4MlwiIHkyPVwiNzY4LjkzM1wiIHhsaW5rOmhyZWY9XCIjY1wiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJmXCIgeDE9XCItNTYzMC4zNjdcIiB5MT1cIjc2Ni4zOTRcIiB4Mj1cIi01NjAyLjE1MlwiIHkyPVwiNzY2LjM5NFwiIHhsaW5rOmhyZWY9XCIjYlwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJnXCIgeDE9XCItNTYzMi4xMThcIiB5MT1cIjc2Ni41MzlcIiB4Mj1cIi01NjAzLjkwMlwiIHkyPVwiNzY2LjUzOVwiIHhsaW5rOmhyZWY9XCIjYlwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJoXCIgeDE9XCItNTYzMC4zNjdcIiB5MT1cIjc2NS41MjZcIiB4Mj1cIi01NjAyLjE1MlwiIHkyPVwiNzY1LjUyNlwiIHhsaW5rOmhyZWY9XCIjYlwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJpXCIgeDE9XCItNTYzMC4zNjdcIiB5MT1cIjc2NS42MjVcIiB4Mj1cIi01NjAyLjE1MlwiIHkyPVwiNzY1LjYyNVwiIHhsaW5rOmhyZWY9XCIjYlwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJqXCIgeDE9XCItNTYxNC41MTZcIiB5MT1cIjc2NS42NDVcIiB4Mj1cIi01NjA4LjI4XCIgeTI9XCI3NjUuNjQ1XCIgeGxpbms6aHJlZj1cIiNiXCIvPjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2FwYWNoZTwvdGl0bGU+PHBhdGggZD1cIk0xOS45OTMsMi4xMzNhMTAuMjY3LDEwLjI2NywwLDAsMC0yLjA0LDIuMDU2bC44LDEuNTFhMTkuNzMzLDE5LjczMywwLDAsMSwxLjcwOC0yLjE0NGMuMDQ0LS4wNDkuMDY4LS4wNzIuMDY4LS4wNzJsLS4wNjguMDcyYTE3Ljg2NSwxNy44NjUsMCwwLDAtMS42LDIuMTc0LDMwLjEsMzAuMSwwLDAsMCwzLjExMS0uMzg1LDMuMjg4LDMuMjg4LDAsMCwwLS4zLTIuNVMyMC45LDEuNiwxOS45OTMsMi4xMzNaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0xOC42MzgsMTAuNzQ5bC4wMTgsMC0uMTE1LjAxMy0uMDIxLjAwOVpcIiBzdHlsZT1cImZpbGw6bm9uZVwiLz48cGF0aCBkPVwiTTE3LjgyMSwxMy40NTVjLS4wNjYuMDE1LS4xMzIuMDI2LS4yLjAzNkMxNy42ODksMTMuNDgxLDE3Ljc1NiwxMy40NjksMTcuODIxLDEzLjQ1NVpcIiBzdHlsZT1cImZpbGw6bm9uZVwiLz48cGF0aCBkPVwiTTEyLjI3LDE5LjUyNGMuMDA5LS4wMjMuMDE3LS4wNDUuMDI1LS4wNjhxLjI2NC0uNy41MjMtMS4zNTcuMjkxLS43NDEuNTc1LTEuNDM2LjMtLjczMy41OS0xLjQxOC4zMDUtLjcxOC42LTEuMzg0LjI0LS41NDIuNDc0LTEuMDQ5LjA3OC0uMTY5LjE1NS0uMzM1LjE1My0uMzI5LjMtLjY0NS4xMzgtLjI5MS4yNzQtLjU3Yy4wMy0uMDYyLjA2LS4xMjMuMDktLjE4NWwuMDE1LS4wMy0uMS4wMTEtLjA3OC0uMTU0Yy0uMDA3LjAxNS0uMDE1LjAzLS4wMjMuMDQ1cS0uMjExLjQxOC0uNDE3Ljg0NS0uMTE5LjI0Ni0uMjM4LjQ5NS0uMzI4LjY4OS0uNjQ1LDEuMzg5VDEzLjc2NiwxNS4xcS0uMy43LS41OTQsMS40dC0uNTY3LDEuMzg3cS0uMjg5LjcyLS41NjIsMS40MjYtLjA2Mi4xNTktLjEyMy4zMTgtLjIxOS41NjktLjQyNiwxLjEyNGwuMTIzLjI0My4xMS0uMDEyLjAxMi0uMDMzUTEyLjAwOCwyMC4yMTYsMTIuMjcsMTkuNTI0WlwiIHN0eWxlPVwiZmlsbDpub25lXCIvPjxwYXRoIGQ9XCJNMTcuNTcsMTMuNVpcIiBzdHlsZT1cImZpbGw6bm9uZVwiLz48cGF0aCBkPVwiTTE3LjMwNSwxNC44MThsLS4zMTUuMDU1aDBsLjE2MS0uMDI1QzE3LjIsMTQuODM5LDE3LjI1MywxNC44MjksMTcuMzA1LDE0LjgxOFpcIiBzdHlsZT1cImZpbGw6I2JlMjAyZVwiLz48cGF0aCBkPVwiTTE3LjMwNSwxNC44MThsLS4zMTUuMDU1aDBsLjE2MS0uMDI1QzE3LjIsMTQuODM5LDE3LjI1MywxNC44MjksMTcuMzA1LDE0LjgxOFpcIiBzdHlsZT1cImZpbGw6I2JlMjAyZTtvcGFjaXR5OjAuMzQ5OTk5OTk0MDM5NTM1NTtpc29sYXRpb246aXNvbGF0ZVwiLz48cGF0aCBkPVwiTTE3LjU3MywxMy41aDBsLjA1LS4wMDdjLjA2OC0uMDEuMTM1LS4wMjIuMi0uMDM2bC0uMjQ4LjA0MlpcIiBzdHlsZT1cImZpbGw6I2JlMjAyZVwiLz48cGF0aCBkPVwiTTE3LjU3MywxMy41aDBsLjA1LS4wMDdjLjA2OC0uMDEuMTM1LS4wMjIuMi0uMDM2bC0uMjQ4LjA0MlpcIiBzdHlsZT1cImZpbGw6I2JlMjAyZTtvcGFjaXR5OjAuMzQ5OTk5OTk0MDM5NTM1NTtpc29sYXRpb246aXNvbGF0ZVwiLz48cGF0aCBkPVwiTTE2LjM5NCw5LjZxLjM2NS0uNjgyLjczOS0xLjMzMi4zODgtLjY3NC43ODQtMS4zMDVsLjA0Ni0uMDc1cS4zOTItLjYyLjc5LTEuMTkxbC0uOC0xLjUxLS4xODIuMjI1Yy0uMjMxLjI4OC0uNDcuNi0uNzE2LjkyNS0uMjc3LjM3LS41NjIuNzY0LS44NTEsMS4xNzktLjI2Ny4zODMtLjUzOC43ODQtLjgwOSwxLjItLjIzMS4zNTMtLjQ2Mi43MTctLjY5MiwxLjA5bC0uMDI2LjA0MkwxNS43MTgsMTAuOVExNi4wNTIsMTAuMjQ0LDE2LjM5NCw5LjZaXCIgc3R5bGU9XCJmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk0xMS42NTEsMjEuMTkycS0uMjA3LjU2OC0uNDE1LDEuMTU5bC0uMDA2LjAxNy0uMDU5LjE2N2MtLjA5My4yNjYtLjE3NS41LS4zNjEsMS4wNDlhMi4xMDcsMi4xMDcsMCwwLDEsLjc4Ni45MjYsMS42OCwxLjY4LDAsMCwwLS41NDQtMS4xNTQsMy42MjEsMy42MjEsMCwwLDAsMy40ODktMS40MiwyLjc5MSwyLjc5MSwwLDAsMCwuMTY1LS4zMTMsMS40NTEsMS40NTEsMCwwLDEtMS40LjUxM2wwLDAsMCwwYTQuMDU5LDQuMDU5LDAsMCwwLDIuMDQ2LTEuNjcyYy4xMTEtLjE3OC4yMTgtLjM3Mi4zMjgtLjU4N2EzLjMsMy4zLDAsMCwxLTMuMTA5LDEuMDFsLS44NDIuMDkyQzExLjcsMjEuMDUsMTEuNjc3LDIxLjEyMSwxMS42NTEsMjEuMTkyWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2MpXCIvPjxwYXRoIGQ9XCJNMTIuMDQ0LDE5LjMwNnEuMjczLS43MDYuNTYyLTEuNDI2LjI3Ni0uNjkuNTY3LTEuMzg3dC41OTQtMS40cS4zMDgtLjcxMS42MjktMS40MTl0LjY0NS0xLjM4OXEuMTE4LS4yNDguMjM4LS40OTUuMjA3LS40MjYuNDE3LS44NDVjLjAwNy0uMDE1LjAxNS0uMDMuMDIzLS4wNDVMMTQuNjc3LDguODQ3bC0uMDUxLjA4M2MtLjI0Mi40LS40ODQuOC0uNzIxLDEuMjE2cy0uNDc1Ljg0NC0uNywxLjI3NnEtLjI5MS41NDctLjU2OCwxLjFsLS4xMS4yMjVjLS4yMjcuNDY3LS40MzIuOTE4LS42MTcsMS4zNTJxLS4zMTUuNzM3LS41NTYsMS40MDZjLS4xMDcuMjkzLS4yLjU3Ni0uMjkyLjg0Ny0uMDczLjIzMi0uMTQyLjQ2NC0uMjA4LjdxLS4yMzQuODE4LS40LDEuNjMxTDExLjUsMjAuNzQ4cS4yMDgtLjU1NC40MjYtMS4xMjRaXCIgc3R5bGU9XCJmaWxsOnVybCgjZClcIi8+PHBhdGggZD1cIk0xMC40MzUsMTguNzU1YTE2LjA3LDE2LjA3LDAsMCwwLS4yNzIsMS45NzRjMCwuMDIzLDAsLjA0Ni0uMDA1LjA2OWE0LjE1LDQuMTUsMCwwLDAtMS4yLTEuMDI5LDUuODI1LDUuODI1LDAsMCwxLDEuMTcyLDIuNjkzLDIuNjQyLDIuNjQyLDAsMCwxLTEuMzI1LS4yMjYsMi42NjIsMi42NjIsMCwwLDAsMS4xMy42ODYsMy4yNDcsMy4yNDcsMCwwLDAtMS41NzEuNzgzLDMuMzU5LDMuMzU5LDAsMCwxLDEuODYxLS4zNDJDOS41MSwyNS4zODksOC43OTMsMjcuNjI2LDguMDc2LDMwYS42MjUuNjI1LDAsMCwwLC40MjUtLjQxM2MuMTI4LS40My45NzYtMy4yNTEsMi4zMDYtNi45NTlsLjExNS0uMzE4LjAzMi0uMDg5cS4yMTEtLjU4My40MzctMS4xOWwuMS0uMjc3LDAtLjAwNUwxMC40NSwxOC42ODRDMTAuNDQ1LDE4LjcwNywxMC40MzksMTguNzMxLDEwLjQzNSwxOC43NTVaXCIgc3R5bGU9XCJmaWxsOnVybCgjZSlcIi8+PHBhdGggZD1cIk0xNS44OCwxMS4wNzhsLS4wOS4xODVxLS4xMzUuMjc5LS4yNzQuNTctLjE1LjMxNS0uMy42NDVjLS4wNTIuMTExLS4xLjIyMi0uMTU1LjMzNXEtLjIzNC41MDgtLjQ3NCwxLjA0OS0uMy42NjYtLjYsMS4zODQtLjI5MS42ODUtLjU5LDEuNDE4LS4yODQuNy0uNTc1LDEuNDM2LS4yNTkuNjYxLS41MjMsMS4zNTdjLS4wMDkuMDIzLS4wMTcuMDQ1LS4wMjUuMDY4cS0uMjYyLjY5My0uNTI5LDEuNDIybC0uMDEyLjAzMy44NDItLjA5Mi0uMDUtLjAwOWE2LDYsMCwwLDAsMy4yMS0xLjgwNyw3Ljk4NCw3Ljk4NCwwLDAsMCwxLjEtMS41MjQsMTMuMTM5LDEzLjEzOSwwLDAsMCwuNzA2LTEuNDY3Yy4xOTUtLjQ3Mi4zODItLjk4Mi41NjItMS41MzZhMy4wNTMsMy4wNTMsMCwwLDEtLjc4OC4yNzRjLS4wNTEuMDExLS4xLjAyMS0uMTU2LjAzcy0uMTA3LjAxOC0uMTYxLjAyNWgwYTMuNjY4LDMuNjY4LDAsMCwwLDEuOTYyLTEuOTEzLDMuMzQ0LDMuMzQ0LDAsMCwxLTEuMTMuNDk1Yy0uMDY2LjAxNS0uMTMyLjAyNi0uMi4wMzZsLS4wNS4wMDdoMGEzLjgyMSwzLjgyMSwwLDAsMCwuODM5LS40NjljLjA1MS0uMDM4LjEtLjA3OC4xNDgtLjEyLjA3My0uMDYzLjE0Mi0uMTI5LjIwOC0uMi4wNDItLjA0NC4wODMtLjA5LjEyMy0uMTM4YTMuMjcsMy4yNywwLDAsMCwuMjYzLS4zNjJjLjAyNS0uMDQuMDUtLjA4LjA3NC0uMTIyLjAzMS0uMDYuMDYxLS4xMTkuMDktLjE3OC4xMzEtLjI2NC4yMzYtLjUuMzE5LS43MDYuMDQyLS4xLjA3OC0uMi4xMDktLjI4OC4wMTMtLjAzNS4wMjUtLjA3LjAzNi0uMS4wMzMtLjEuMDYtLjE4Ny4wODEtLjI2NWEyLjYwNSwyLjYwNSwwLDAsMCwuMDYyLS4yNzVoMGExLjAxLDEuMDEsMCwwLDEtLjEwOS4wNzUsMy45NjUsMy45NjUsMCwwLDEtMS4xNjIuNGwuNzczLS4wODUtLjc3My4wODUtLjAxOCwwLS4xMTkuMDE5LjAyMS0uMDA5LTIuNjQ1LjI5WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2YpXCIvPjxwYXRoIGQ9XCJNMTguODU4LDUuNzNjLS4yMzUuMzYxLS40OTIuNzcxLS43NjgsMS4yMzZsLS4wNDQuMDc0cS0uMzU4LjYtLjc1OSwxLjMyNy0uMzQ2LjYyNi0uNzE5LDEuMzQ3LS4zMjYuNjI5LS42NzIsMS4zMzZsMi42NDUtLjI5QTMuMjE2LDMuMjE2LDAsMCwwLDE5Ljk5LDkuNjJjLjA4OS0uMTI4LjE3OC0uMjYyLjI2Ny0uNC4yNzItLjQyNC41MzgtLjg5MS43NzYtMS4zNTVhMTQuMDc0LDE0LjA3NCwwLDAsMCwuNTg4LTEuMjk0LDYuOCw2LjgsMCwwLDAsLjIzMy0uN2MuMDQ4LS4xODQuMDg2LS4zNTguMTE1LS41MjRBMzAuMTUyLDMwLjE1MiwwLDAsMSwxOC44NTgsNS43M1pcIiBzdHlsZT1cImZpbGw6dXJsKCNnKVwiLz48cGF0aCBkPVwiTTE3LjE0OSwxNC44NDhjLS4wNTMuMDA5LS4xMDcuMDE4LS4xNjEuMDI1aDBDMTcuMDQyLDE0Ljg2NiwxNy4xLDE0Ljg1NywxNy4xNDksMTQuODQ4WlwiIHN0eWxlPVwiZmlsbDojYmUyMDJlXCIvPjxwYXRoIGQ9XCJNMTcuMTQ5LDE0Ljg0OGMtLjA1My4wMDktLjEwNy4wMTgtLjE2MS4wMjVoMEMxNy4wNDIsMTQuODY2LDE3LjEsMTQuODU3LDE3LjE0OSwxNC44NDhaXCIgc3R5bGU9XCJmaWxsOiNiZTIwMmU7b3BhY2l0eTowLjM0OTk5OTk5NDAzOTUzNTU7aXNvbGF0aW9uOmlzb2xhdGVcIi8+PHBhdGggZD1cIk0xNy4xNDksMTQuODQ4Yy0uMDUzLjAwOS0uMTA3LjAxOC0uMTYxLjAyNWgwQzE3LjA0MiwxNC44NjYsMTcuMSwxNC44NTcsMTcuMTQ5LDE0Ljg0OFpcIiBzdHlsZT1cImZpbGw6dXJsKCNoKVwiLz48cGF0aCBkPVwiTTE3LjU3LDEzLjVsLjA1LS4wMDctLjA1LjAwN1pcIiBzdHlsZT1cImZpbGw6I2JlMjAyZVwiLz48cGF0aCBkPVwiTTE3LjU3LDEzLjVsLjA1LS4wMDctLjA1LjAwN1pcIiBzdHlsZT1cImZpbGw6I2JlMjAyZTtvcGFjaXR5OjAuMzQ5OTk5OTk0MDM5NTM1NTtpc29sYXRpb246aXNvbGF0ZVwiLz48cGF0aCBkPVwiTTE3LjU3LDEzLjVsLjA1LS4wMDctLjA1LjAwN1pcIiBzdHlsZT1cImZpbGw6dXJsKCNpKVwiLz48cGF0aCBkPVwiTTE3LjU3MiwxMy41aDBaXCIgc3R5bGU9XCJmaWxsOiNiZTIwMmVcIi8+PHBhdGggZD1cIk0xNy41NzIsMTMuNWgwWlwiIHN0eWxlPVwiZmlsbDojYmUyMDJlO29wYWNpdHk6MC4zNDk5OTk5OTQwMzk1MzU1O2lzb2xhdGlvbjppc29sYXRlXCIvPjxwYXRoIGQ9XCJNMTcuNTcyLDEzLjVoMFpcIiBzdHlsZT1cImZpbGw6dXJsKCNqKVwiLz5gLFxuICBcIkFwZXhcIjogYDxwYXRoIGQ9XCJNMTMuNjUyLDguMzM4QTQuOTA2LDQuOTA2LDAsMCwxLDE3LjIsNi44MTRhNC45NTcsNC45NTcsMCwwLDEsNC4zMiwyLjU2LDUuOTcyLDUuOTcyLDAsMCwxLDIuNDQyLS41MTksNi4wODksNi4wODksMCwxLDEtMS4xODksMTIuMDYsNC40MTIsNC40MTIsMCwwLDEtNS43ODIsMS44MTZBNS4wMzQsNS4wMzQsMCwwLDEsNy42MzQsMjIuNWE0LjY0Niw0LjY0NiwwLDAsMS0uOTYuMSw0LjczMiw0LjczMiwwLDAsMS0yLjMzNy04LjgxMiw1LjQzOCw1LjQzOCwwLDAsMSw5LjMxNS01LjQ1M1wiIHN0eWxlPVwiZmlsbDojMGY5YmQ3XCIvPjxwYXRoIGQ9XCJNMjUuMzc2LDMwLjk2NmgtLjU2MWE0LjY1OCw0LjY1OCwwLDAsMS0xLjI4NC0uMTM3LDEuOSwxLjksMCwwLDEtLjgxOC0uNDgyLDEuNzI2LDEuNzI2LDAsMCwxLS40NTUtLjg0Myw2Ljc3LDYuNzcsMCwwLDEtLjEwNi0xLjQxMyw1Ljg4OSw1Ljg4OSwwLDAsMC0uMDg0LTEuMzMsMSwxLDAsMCwwLS4zLS41NDQsMS4yMjMsMS4yMjMsMCwwLDAtLjY2LS4xNzlsLS4yMzYtLjAxNFYyNC4xNDVsLjIzNi0uMDE0YTEuNDgyLDEuNDgyLDAsMCwwLC41NDktLjEuNzA2LjcwNiwwLDAsMCwuMjczLS4yNjQsMS4zOTQsMS4zOTQsMCwwLDAsLjE4MS0uNTI5LDYuNjgzLDYuNjgzLDAsMCwwLC4wNDQtLjkzOSw4LjEzMiw4LjEzMiwwLDAsMSwuMTEyLTEuNjQzLDEuNywxLjcsMCwwLDEsLjQ0OC0uODQxLDIuMTQ0LDIuMTQ0LDAsMCwxLC45MDYtLjQ5Miw0LjUxNCw0LjUxNCwwLDAsMSwxLjItLjExNmguNTYxdjEuOWgtLjI1YTIuNTg5LDIuNTg5LDAsMCwwLS43NDMuMDU2LjI4NC4yODQsMCwwLDAtLjE0OC4xMTcuODM5LjgzOSwwLDAsMC0uMDU0LjM4NnEwLC4zNzItLjA1MywxLjQxM2EzLjc0LDMuNzQsMCwwLDEtLjE2NiwxLjAwOSwxLjk0NSwxLjk0NSwwLDAsMS0uNjkzLDEsMi4wMSwyLjAxLDAsMCwxLC43LDEuMDQ0LDQuNjI3LDQuNjI3LDAsMCwxLC4xNjMsMS4wNzljLjAyNy42NTcuMDQxLDEuMDc0LjA0MSwxLjI1NmEuODcxLjg3MSwwLDAsMCwuMDU3LjQwOEEuMzQzLjM0MywwLDAsMCwyNC40LDI5YTIuMzgyLDIuMzgyLDAsMCwwLC43MjguMDZoLjI1WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMjEuMTE4LDI1Ljc4OFYyNC4zODJhMS43NTIsMS43NTIsMCwwLDAsLjY0NS0uMTI5LjkzNi45MzYsMCwwLDAsLjM3NS0uMzU0LDEuNjIxLDEuNjIxLDAsMCwwLC4yMTctLjYyNEE2Ljg4LDYuODgsMCwwLDAsMjIuNCwyMi4zYTgsOCwwLDAsMSwuMTA1LTEuNTg1LDEuNDU2LDEuNDU2LDAsMCwxLC4zODEtLjcyMSwxLjksMS45LDAsMCwxLC44LS40MzEsNC4zMzYsNC4zMzYsMCwwLDEsMS4xMjUtLjEwNWguMzExdjEuNGEyLjg3NiwyLjg3NiwwLDAsMC0uODM1LjA3My41My41MywwLDAsMC0uMjcyLjIyMywxLjA3OSwxLjA3OSwwLDAsMC0uMDg4LjUxM3EwLC4zNjktLjA1MywxLjRhMy41MzEsMy41MzEsMCwwLDEtLjE1Mi45NCwxLjkxOCwxLjkxOCwwLDAsMS0uMzEzLjU5NSwyLjQ3LDIuNDcsMCwwLDEtLjU4My40ODYsMi4wNDUsMi4wNDUsMCwwLDEsLjU2NS40NjYsMS44NjksMS44NjksMCwwLDEsLjMzNy42NDcsNC40MSw0LjQxLDAsMCwxLC4xNTIsMS4wMnEuMDQxLjk3My4wNDEsMS4yNDJhMS4xLDEuMSwwLDAsMCwuMDk0LjUzOS41ODQuNTg0LDAsMCwwLC4yODQuMjMxLDIuNjQ5LDIuNjQ5LDAsMCwwLC44MjMuMDc5djEuNDA2aC0uMzExQTQuNDc0LDQuNDc0LDAsMCwxLDIzLjYsMzAuNTlhMS42NDQsMS42NDQsMCwwLDEtLjcxMi0uNDE5LDEuNDc4LDEuNDc4LDAsMCwxLS4zOS0uNzI0LDYuNjIxLDYuNjIxLDAsMCwxLS4xLTEuMzU2LDYuMzc0LDYuMzc0LDAsMCwwLS4wOTQtMS40LDEuMjMyLDEuMjMyLDAsMCwwLS4zOS0uNjcxQTEuNDMxLDEuNDMxLDAsMCwwLDIxLjExOCwyNS43ODhaXCIgc3R5bGU9XCJmaWxsOiMwMDcyYTBcIi8+PHBhdGggZD1cIk0yNy4wMTEsMzAuOTY2SDI2LjQ1VjI5LjA1OWguMjVBMi4zMjksMi4zMjksMCwwLDAsMjcuNDI2LDI5YS4zMjMuMzIzLDAsMCwwLC4xNjUtLjEyNy44MTIuODEyLDAsMCwwLC4wNTgtLjM3OXEwLS4zNi4wNS0xLjM3NWEzLjcyNSwzLjcyNSwwLDAsMSwuMTczLTEuMDQ3LDIuMjIzLDIuMjIzLDAsMCwxLC4zODctLjcsMi4xNDUsMi4xNDUsMCwwLDEsLjMtLjI5MiwyLjE0MSwyLjE0MSwwLDAsMS0uNC0uNCwyLjYxMiwyLjYxMiwwLDAsMS0uNDIxLTEuMDkyLDE3LjUyNSwxNy41MjUsMCwwLDEtLjEtMS44NDEsMS4zNTcsMS4zNTcsMCwwLDAtLjA1My0uNDc5Yy0uMDA4LS4wMTYtLjAzMS0uMDYyLS4xMzYtLjEwNmEyLjUyNCwyLjUyNCwwLDAsMC0uNzU3LS4wNmgtLjI1VjE5LjJoLjU2MWE0Ljc5Myw0Ljc5MywwLDAsMSwxLjI4My4xMzMsMS44NDEsMS44NDEsMCwwLDEsLjgxOC40ODUsMS43ODEsMS43ODEsMCwwLDEsLjQ1My44NDMsNi42LDYuNiwwLDAsMSwuMTA5LDEuNDE0LDYuMzU5LDYuMzU5LDAsMCwwLC4wNzksMS4zMzYuOTkyLjk5MiwwLDAsMCwuMy41MzcsMS4yMjYsMS4yMjYsMCwwLDAsLjY2NC4xOGwuMjM2LjAxNHYxLjg3OWwtLjIzNi4wMTRhMS40ODIsMS40ODIsMCwwLDAtLjU0OS4xLjY4Ni42ODYsMCwwLDAtLjI3LjI2MiwxLjQ4NCwxLjQ4NCwwLDAsMC0uMTg2LjUzNCw2Ljc0Myw2Ljc0MywwLDAsMC0uMDQzLjkzMSw4LjM4Myw4LjM4MywwLDAsMS0uMTA4LDEuNjQ0LDEuNjk0LDEuNjk0LDAsMCwxLS40NDYuODQ2LDIuMTQzLDIuMTQzLDAsMCwxLS45MTMuNDkyQTQuNSw0LjUsMCwwLDEsMjcuMDExLDMwLjk2NlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTMwLjcwOCwyNS43ODhhMS43NTIsMS43NTIsMCwwLDAtLjY0NS4xMjkuOTE4LjkxOCwwLDAsMC0uMzcyLjM1NCwxLjcyNSwxLjcyNSwwLDAsMC0uMjIuNjI0LDYuODIsNi44MiwwLDAsMC0uMDQ3Ljk3Myw4LjI3LDguMjcsMCwwLDEtLjEsMS41ODgsMS40MzksMS40MzksMCwwLDEtLjM3OC43MjQsMS45LDEuOSwwLDAsMS0uODA5LjQzMSw0LjMzNiw0LjMzNiwwLDAsMS0xLjEyNS4xMDVIMjYuN1YyOS4zMWEyLjY1MiwyLjY1MiwwLDAsMCwuODItLjA3OUEuNTcyLjU3MiwwLDAsMCwyNy44LDI5LDEuMDUsMS4wNSwwLDAsMCwyNy45LDI4LjVxMC0uMzU3LjA1LTEuMzY1YTMuNTMsMy41MywwLDAsMSwuMTU4LS45NzYsMS45NzYsMS45NzYsMCwwLDEsLjM0My0uNjIxQTIuMDM4LDIuMDM4LDAsMCwxLDI5LDI1LjA4NWEyLjQxNiwyLjQxNiwwLDAsMS0uNjMzLS41NTEsMi4zMzksMi4zMzksMCwwLDEtLjM3NS0uOTg0LDE3LjU2NCwxNy41NjQsMCwwLDEtLjA5NC0xLjgsMS41NzEsMS41NzEsMCwwLDAtLjA3OS0uNTg2LjQ4Ny40ODcsMCwwLDAtLjI2NC0uMjI2LDIuOCwyLjgsMCwwLDAtLjg1My0uMDc5di0xLjRoLjMxMWE0LjU3Niw0LjU3NiwwLDAsMSwxLjIxMy4xMjMsMS41ODcsMS41ODcsMCwwLDEsLjcwOS40MTksMS41MjksMS41MjksMCwwLDEsLjM5LjcyNyw2LjQzNiw2LjQzNiwwLDAsMSwuMSwxLjM1Niw2Ljg0Miw2Ljg0MiwwLDAsMCwuMDg4LDEuNCwxLjIyMywxLjIyMywwLDAsMCwuMzkzLjY3MSwxLjQ0NywxLjQ0NywwLDAsMCwuOC4yMzFaXCIgc3R5bGU9XCJmaWxsOiMwMDcyYTBcIi8+YCxcbiAgXCJBUExcIjogYDxwYXRoIGQ9XCJNMzAsMjguMjc1LDE2LDIsMiwyOC4yNzVIMTQuMTYyVjMwaDMuNjc2VjI4LjI3NVpNMTcuODM4LDI0LjgyNlYxMy4xNjFsNi4yMTUsMTEuNjY1Wm0tOS44OTEsMCw2LjIxNS0xMS42NjVWMjQuODI2WlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPmAsXG4gIFwiQXBwbGVTY3JpcHRcIjogYDxwYXRoIGQ9XCJNMTcuMTgxLDQuNDM3QTUuOTkzLDUuOTkzLDAsMCwxLDIxLjU3OSwyYTUuOTc5LDUuOTc5LDAsMCwxLTEuNDQ3LDQuNDc2LDQuNzI5LDQuNzI5LDAsMCwxLTQuMTcsMS45NjFBNS4yLDUuMiwwLDAsMSwxNy4xODEsNC40MzdaXCIgc3R5bGU9XCJmaWxsOiNhOGMyYWJcIi8+PHBhdGggZD1cIk0xNi4yLDEwLjAzNGMuOTQ2LDAsMi43LTEuMyw0Ljk4OS0xLjNhNi4yNDksNi4yNDksMCwwLDEsNS40ODQsMi44LDYuMDgsNi4wOCwwLDAsMC0zLjAyOCw1LjMsNi4yMzUsNi4yMzUsMCwwLDAsMy43NzIsNS43cy0yLjYzNyw3LjQyMi02LjIsNy40MjJjLTEuNjM2LDAtMi45MDgtMS4xLTQuNjMxLTEuMS0xLjc1NywwLTMuNSwxLjE0NC00LjYzNSwxLjE0NEM4LjcsMzAsNC41ODcsMjIuOTU5LDQuNTg3LDE3LjNjMC01LjU2OCwzLjQ3OC04LjQ4OSw2Ljc0LTguNDg5QzEzLjQ0OCw4LjgxMSwxNS4wOTMsMTAuMDM0LDE2LjIsMTAuMDM0WlwiIHN0eWxlPVwiZmlsbDojYThjMmFiXCIvPmAsXG4gIFwiQXJkdWlub1wiOiBgPGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPVwiYVwiIGN4PVwiNzY3LjE3OVwiIGN5PVwiNTE2OS41NDNcIiByPVwiMTQuOTg5XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTcxOC4xMTIgLTQ5NTMuOTE3KSBzY2FsZSgwLjk1NSAwLjk2MilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMzNmJhYzBcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMmQ5MDk0XCIvPjwvcmFkaWFsR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfYXJkdWlubzwvdGl0bGU+PHBhdGggZD1cIk0yOS42NDUsMTUuOTI1QTEzLjc3LDEzLjc3LDAsMSwxLDE1Ljg3NiwyLjA1NiwxMy44MTksMTMuODE5LDAsMCwxLDI5LjY0NSwxNS45MjVaXCIgc3R5bGU9XCJzdHJva2U6IzAyNzk3ZTtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOjEuMTM2NzIyODQ1NDk2OTI2N3B4O2ZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTEwLjU4MSwxMS42NDhjMi40MS0uMDc2LDMuMzU5LjgzNCw0LjYwNSwyLjA2OS4yODUuMjgyLjU3OS41OS45LjkyMWwuOTIyLS45OTFhNi4yMjMsNi4yMjMsMCwwLDEsMy4yNTYtMS45M2MxLjkzOS0uMjExLDMuMTE5LS4xMjIsNC4zMTEuODE0YTUuMDIzLDUuMDIzLDAsMCwxLDIuMjQ1LDMuOSw1LjY1Myw1LjY1MywwLDAsMS0zLjI1LDUuMTU2LDUuOTc1LDUuOTc1LDAsMCwxLTMuOTEzLjEzNSw3LjY1Niw3LjY1NiwwLDAsMS0zLjU0MS0yLjk4N2MtMS42NzgsMi4xNDItMy4xODcsMy4yNTMtNS4yMzUsMy4xNTUtNy40NTItLjM1NC02Ljg0Mi0xMC4wNzUtLjMtMTAuMjQ3Wm0xLjY1Nyw3Ljk5NGE5LjE5Myw5LjE5MywwLDAsMCwyLjg1Ni0yLjljLS43NC0xLjI0My0yLjIwOS0yLjgyNC0zLjQ1NS0zLjEzNGE0LjMyOCw0LjMyOCwwLDAsMC0zLjIyNC43NzcsMy4zODQsMy4zODQsMCwwLDAtLjc2MiwzLjY4NiwzLjY3NCwzLjY3NCwwLDAsMCw0LjU4NSwxLjU3Wm0tMi45OC0zLjQ4NywzLjI3OC4wMDV2MS4yMWwtMy4yODMuMDA1Wm0xMy40NDgsMy42QTMuODQzLDMuODQzLDAsMCwwLDI0LjkzNywxN2EzLjQ1OCwzLjQ1OCwwLDAsMC0xLjg2My0zLjEwOSwzLjY0OCwzLjY0OCwwLDAsMC00LjIuNzI4LDcuMzY0LDcuMzY0LDAsMCwwLTEuNjQ5LDIuMTUxQTguOTM2LDguOTM2LDAsMCwwLDE5LjIsMTkuMjUyLDQuMDIyLDQuMDIyLDAsMCwwLDIyLjcwNiwxOS43NTRabS0xLjk1NS0yLjM3Ni0xLjA4OC0uMDA4LDAtMS4yMTcsMS4wOTEsMFYxNS4wNzVsMS4xMDctLjAwOC0uMDA3LDEuMDkzLDEuMDg1LDB2MS4xNjVsLTEuMDIxLS4wMDh2MS4xMkgyMC43NTNaXCIgc3R5bGU9XCJzdHJva2U6IzAwMDtzdHJva2Utd2lkdGg6MC4xMjEwMzA5NjQ4MDkyNzQ4MnB4O29wYWNpdHk6MC4xNjgwOTk5OTk0Mjc3OTU0O2lzb2xhdGlvbjppc29sYXRlXCIvPjxwYXRoIGQ9XCJNNC45MTcsMTYuMzM3YzAsNS4zNDgsNy4zNTQsNy4zNCwxMC45ODcsMS44OTQsMy43NjUsNS42NDcsMTAuODI0LDMuMjgsMTAuODI0LTEuOVMxOS43LDguNjU2LDE1LjksMTQuNDQxYy0zLjYtNS43MTktMTAuOTg3LTMuNDUzLTEwLjk4NywxLjlabTEuOTMxLDBjMC0zLjg2LDUuNDU1LTUuMDc4LDcuOTkyLDAtMi41ODgsNC44ODktNy45OTIsMy44NTktNy45OTIsMFptMTAuMTE5LDBjMi4yODYtNS4xNzgsNy44ODktMy43NTEsNy44NzIuMDA4UzE5LjE4NiwyMS4yNzcsMTYuOTY3LDE2LjMzN1pcIiBzdHlsZT1cImZpbGw6I2ZmZjtzdHJva2U6IzAwMDtzdHJva2Utd2lkdGg6MC4yNDIwNjE5Mjk2MTg1NDk2NHB4XCIvPjxyZWN0IHg9XCI4Ljg5OFwiIHk9XCIxNS43OTVcIiB3aWR0aD1cIjMuMjM3XCIgaGVpZ2h0PVwiMS4wNjdcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cG9seWdvbiBwb2ludHM9XCIyMC42NDQgMTYuODQ2IDE5LjU3NiAxNi44NDYgMTkuNTc2IDE1LjcxMiAyMC42NDQgMTUuNzEyIDIwLjY0NCAxNC42NDQgMjEuNzc5IDE0LjY0NCAyMS43NzkgMTUuNzEyIDIyLjg0NyAxNS43MTIgMjIuODQ3IDE2Ljg0NiAyMS43NzkgMTYuODQ2IDIxLjc3OSAxNy45MTQgMjAuNjQ0IDE3LjkxNCAyMC42NDQgMTYuODQ2XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcbiAgXCJBUk0gQXNzZW1ibHlcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjgzNi42M1wiIHkxPVwiMzYuMjA1XCIgeDI9XCI4NDMuODAyXCIgeTI9XCIxNC40OFwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDUyNS45MjIgMzAuMjQ5KSByb3RhdGUoMTgwKSBzY2FsZSgwLjYwNyAwLjYwNylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmZcIiBzdG9wLW9wYWNpdHk9XCIwXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiIHN0b3Atb3BhY2l0eT1cIjAuMjc1XCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfYXNzZW1ibHk8L3RpdGxlPjxwYXRoIGQ9XCJNMTYsMmMtMS4yNDYsMy4wNTYtMiw1LjA1Ny0zLjM5MSw4LjAyMkEyMS44ODQsMjEuODg0LDAsMCwwLDE2LjIsMTMuMTU2YTE0Ljg1OCwxNC44NTgsMCwwLDEtNC0yLjI4M0MxMC40MywxNC41NzksNy42NDYsMTkuODU1LDIsMzBjNS4xODYtMi45OTQsOS4wMTItNC42NDgsMTIuNjkxLTQuOTY2VjI0LjJoLS44MzR2LS44MzdoLjgzNFYyNC4yaDEuNjc1VjIyLjUyMUgxNC42OTF2LS44MzRoLS44MzRWMjAuMDEzaC44MzR2LS44MzRoMS42NzV2LjgzNEgxNy4ydi44MzdoLS44Mzd2LS44MzdIMTQuNjkxdjEuNjc1aDEuNjc1di44MzRIMTcuMlYyNC4yaC0uODM3di43ODNjMy45OC4xLDguMDA2LDEuNzcyLDEzLjYzNCw1LjAyMS0uODYzLTEuNTg5LTEuNjM2LTMuMDIxLTIuMzcyLTQuMzg1YTI1LjUyNiwyNS41MjYsMCwwLDAtNC44MzMtMy4zMzNBMTQuNDM2LDE0LjQzNiwwLDAsMSwyNi42NSwyMy44QzE5LjE3LDkuODcyLDE4LjU2NSw4LjAyLDE2LDJaTTEwLjUxMSwxOS4xNzloMS42NzF2LjgzNGguODM3djUuMDIxaC0uODM3VjIyLjUyMUgxMC41MTF2Mi41MTJIOS42NzNWMjAuMDEzaC44MzdabTAsLjgzNHYxLjY3NWgxLjY3MVYyMC4wMTNabTcuNTI2LS44MzRoLjgzN3YuODM0aC44Mzd2LjgzN2guODM0di0uODM3aC44Mzd2LS44MzRoLjgzN3Y1Ljg1NWgtLjgzN1YyMC44NWgtLjgzN3YuODM3aC0uODM0VjIwLjg1aC0uODM3djQuMTg0aC0uODM3WlwiIHN0eWxlPVwiZmlsbDojMDAwMGJmXCIvPjxwYXRoIGQ9XCJNMjMuODgxLDE4LjY0MmMtNi4wNjktOC4yMzctNy40NzYtMTQuODc2LTcuODMyLTE2LjQ2MUExNzUuMjE3LDE3NS4yMTcsMCwwLDAsMjMuODgxLDE4LjY0MlpcIiBzdHlsZT1cImZpbGw6I2ZmZjtmaWxsLW9wYWNpdHk6MC4xNjU2ODA0NjgwODI0MjhcIi8+PHBhdGggZD1cIk0xNi4wNTEsMi4xMiwxNS42LDMuMjI3Yy0uMTU5LjM5MS0uMzExLjc2NS0uNDYxLDEuMTMxcy0uMy43MjQtLjQ0OCwxLjA3Ny0uMy43LS40NDgsMS4wNTMtLjMuNzA2LS40NjUsMS4wNjYtLjMyOS43MjktLjUwNiwxLjExMS0uMzYyLjc3OC0uNTYxLDEuMTkzYy0uMDI4LjA1Ny0uMDYxLjEyMy0uMDg5LjE4MUEyMS44NzIsMjEuODcyLDAsMCwwLDE2LjIsMTMuMTU2YTE0Ljg3OSwxNC44NzksMCwwLDEtMy45ODktMi4yNzZsLS4xNC4yODdjLS4wNjUuMTMzLS4xNDQuMjgzLS4yMTIuNDJsLS4xMDYuMjE5Yy0uODc4LDEuNzkzLTIuMDA2LDMuOTg0LTMuNTI0LDYuODIyLDMuNTUxLTIsNy4zODEtNC44ODcsMTQuMzM4LTIuNC0uMzQ5LS42NjEtLjY3LTEuMjgtLjk3MS0xLjg2M3MtLjU4MS0xLjEyOC0uODQxLTEuNjQ0LS41LTEtLjcyNS0xLjQ2My0uNDMzLS45LS42MjktMS4zMTMtLjM4LS44MTgtLjU1NC0xLjItLjMzOS0uNzU0LS41LTEuMTE4UzE4LjA0Nyw2LjksMTcuOSw2LjU0NnMtLjI5MS0uNzA5LS40MzQtMS4wNjZjLS4wMzYtLjA5MS0uMDczLS4xODYtLjEwOS0uMjc3QzE2Ljk0OSw0LjI0NywxNi41MzYsMy4yNTgsMTYuMDUxLDIuMTJaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+YCxcbiAgXCJBc2NpaURvY1wiOiBgPHBhdGggZD1cIk0zMCwzMEgyVjJIMzBaXCIgc3R5bGU9XCJmaWxsOiNlNDAwNDZcIi8+PHBhdGggZD1cIk0yMy43MzEsMjQuODNhLjU4OS41ODksMCwwLDEtLjc2My0uMzM3TDE2LjcyNCw5LjI2OSwxMy45MywxNS45OWgxLjgzM2EuNTkuNTksMCwwLDEtLjAyNCwxLjE4SDguOWEuNTkuNTksMCwwLDEsLjAyNC0xLjE4aDMuNzI3bDAtLjAxM0wxNi4xODQsNy41YS41OTEuNTkxLDAsMCwxLC41MzMtLjM2M2gwYS41OTIuNTkyLDAsMCwxLC41NTcuMzY2bDYuNzg1LDE2LjU0Ni4wMDkuMDIxQS41OS41OSwwLDAsMSwyMy43MzEsMjQuODNaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xNC41MTYsMTguNzkxSDcuNjc5YS41OS41OSwwLDAsMC0uMDI0LDEuMThIMTFMOS4zMDksMjQuMDQzYS41OS41OSwwLDAsMCwxLjA4NS40NjRsMC0uMDExLDEuODc1LTQuNTA5LjAwNS0uMDE2aDIuMjE1YS41OS41OSwwLDAsMCwuMDIzLTEuMThaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcbiAgXCJBU1AuTkVUIChDIylcIjogYDx0aXRsZT5maWxlX3R5cGVfYXNweDwvdGl0bGU+PHBvbHlnb24gcG9pbnRzPVwiMjIuNzUgMiA2LjM1IDIgNi4zNSAzMCAyOS42NSAzMCAyOS42NSA5IDIyLjc1IDJcIiBzdHlsZT1cImZpbGw6I2M1YzVjNVwiLz48cG9seWdvbiBwb2ludHM9XCIyNy4zNSAyNy43IDguNzUgMjcuNyA4Ljc1IDQuMyAyMC40NSA0LjMgMjAuNDUgMTEuMyAyNy40NSAxMS4zIDI3LjQ1IDI3LjcgMjcuMzUgMjcuN1wiIHN0eWxlPVwiZmlsbDojZjVmNWY1XCIvPjxwYXRoIGQ9XCJNMTIuMSwzMC45OTRBMTEuMDk0LDExLjA5NCwwLDEsMSwyMy4xOTQsMTkuOSwxMS4xMDYsMTEuMTA2LDAsMCwxLDEyLjEsMzAuOTk0Wm0wLTIwLjNBOS4yLDkuMiwwLDEsMCwyMS4zLDE5LjksOS4yMTYsOS4yMTYsMCwwLDAsMTIuMSwxMC43WlwiIHN0eWxlPVwiZmlsbDojMzNhOWRjXCIvPjxyZWN0IHg9XCIyLjA5OVwiIHk9XCIxOS40NTVcIiB3aWR0aD1cIjIwLjAwM1wiIGhlaWdodD1cIjAuODlcIiBzdHlsZT1cImZpbGw6IzMzYTlkYztzdHJva2U6IzMzYTlkYztzdHJva2UtbWl0ZXJsaW1pdDoxMFwiLz48cGF0aCBkPVwiTTEyLjMyNSwxNS43NjNhMzEuOTMsMzEuOTMsMCwwLDEtOC40ODQtMS4xMWwuMjQyLS44MDdhMzEuMzc0LDMxLjM3NCwwLDAsMCwxNS45OTIsMGwuMjM5LjgwN0EyOC4wNzYsMjguMDc2LDAsMCwxLDEyLjMyNSwxNS43NjNaXCIgc3R5bGU9XCJmaWxsOiMzM2E5ZGM7c3Ryb2tlOiMzM2E5ZGM7c3Ryb2tlLW1pdGVybGltaXQ6MTBcIi8+PHBhdGggZD1cIk00LjEsMjUuNzI0bC0uMjM5LS44MDdhMzEuNjUyLDMxLjY1MiwwLDAsMSwxNi40NzIsMGwtLjI0Mi44MDdBMzEuMzgsMzEuMzgsMCwwLDAsNC4xLDI1LjcyNFpcIiBzdHlsZT1cImZpbGw6IzMzYTlkYztzdHJva2U6IzMzYTlkYztzdHJva2UtbWl0ZXJsaW1pdDoxMFwiLz48cGF0aCBkPVwiTTguNTM2LDI5LjA1NUEyNS40MzgsMjUuNDM4LDAsMCwxLDgsMTAuNjA4bC43NzYuMzMxYTI0LjU1OCwyNC41NTgsMCwwLDAsLjUzMywxNy43ODNaXCIgc3R5bGU9XCJmaWxsOiMzM2E5ZGM7c3Ryb2tlOiMzM2E5ZGM7c3Ryb2tlLW1pdGVybGltaXQ6MTBcIi8+PHBhdGggZD1cIk0xNS42LDI5LjA1NWwtLjc3Ni0uMzMzYTI0LjU1OSwyNC41NTksMCwwLDAsLjUzMS0xNy43ODNsLjc3Ni0uMzMxQTI1LjQ0MywyNS40NDMsMCwwLDEsMTUuNiwyOS4wNTVaXCIgc3R5bGU9XCJmaWxsOiMzM2E5ZGM7c3Ryb2tlOiMzM2E5ZGM7c3Ryb2tlLW1pdGVybGltaXQ6MTBcIi8+PHJlY3QgeD1cIjExLjY1NVwiIHk9XCI5Ljg5OFwiIHdpZHRoPVwiMC44ODlcIiBoZWlnaHQ9XCIyMC4zNzFcIiBzdHlsZT1cImZpbGw6IzMzYTlkYztzdHJva2U6IzMzYTlkYztzdHJva2UtbWl0ZXJsaW1pdDoxMFwiLz5gLFxuICBcIkF1dG9Ib3RrZXlcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjU0LjYwNFwiIHkxPVwiMTY4LjM4OFwiIHgyPVwiNTQuNjA0XCIgeTI9XCIxOTQuODg1XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTM4LjYwNCAtMTY1LjYzNilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNkOGQ4ZDhcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjYTNhM2EzXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiNjguNzU2XCIgeTE9XCIyMDkuMTUyXCIgeDI9XCI5MS42MzhcIiB5Mj1cIjIwOS4xNTJcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtNTAuNjAxIC0xNTkuNDQ5KSBzY2FsZSgwLjgzMiAwLjgzNylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNkN2Q3ZDdcIi8+PHN0b3Agb2Zmc2V0PVwiMC41XCIgc3RvcC1jb2xvcj1cIiNlN2U3ZTdcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZDdkN2Q3XCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfYXV0b2hvdGtleTwvdGl0bGU+PHJlY3QgeD1cIjJcIiB5PVwiMi44MjRcIiB3aWR0aD1cIjI4XCIgaGVpZ2h0PVwiMjYuMzUzXCIgcng9XCIzLjA4OFwiIHJ5PVwiMy4wODhcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTI2Ljg1NiwyOS4xODFINS4xNDRBMy4xNDgsMy4xNDgsMCwwLDEsMiwyNi4wMzdWNS45NjNBMy4xNDgsMy4xNDgsMCwwLDEsNS4xNDQsMi44MTlIMjYuODU2QTMuMTQ4LDMuMTQ4LDAsMCwxLDMwLDUuOTYzVjI2LjAzN0EzLjE0OCwzLjE0OCwwLDAsMSwyNi44NTYsMjkuMTgxWk01LjE0NCwyLjk2M2EzLDMsMCwwLDAtMywzaDBWMjYuMDM3YTMsMywwLDAsMCwzLDNIMjYuODU2YTMsMywwLDAsMCwzLTNWNS45NjNhMywzLDAsMCwwLTMtM1pcIiBzdHlsZT1cImZpbGw6IzhkOGQ4ZFwiLz48cmVjdCB4PVwiNC4zMTNcIiB5PVwiNC42NDFcIiB3aWR0aD1cIjIzLjE2OVwiIGhlaWdodD1cIjIxLjk0XCIgcng9XCIyLjU3MVwiIHJ5PVwiMi41NzFcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTI0LjkxMSwyNi42NDFINi44ODRBMi42MzQsMi42MzQsMCwwLDEsNC4yNTMsMjQuMDFWNy4yMTJBMi42MzQsMi42MzQsMCwwLDEsNi44ODQsNC41ODFIMjQuOTExYTIuNjM0LDIuNjM0LDAsMCwxLDIuNjMxLDIuNjMxdjE2LjhBMi42MzQsMi42MzQsMCwwLDEsMjQuOTExLDI2LjY0MVpNNi44ODQsNC43QTIuNTE0LDIuNTE0LDAsMCwwLDQuMzczLDcuMjEydjE2LjhhMi41MTQsMi41MTQsMCwwLDAsMi41MTEsMi41MTFIMjQuOTExYTIuNTE0LDIuNTE0LDAsMCwwLDIuNTExLTIuNTExVjcuMjEyQTIuNTE0LDIuNTE0LDAsMCwwLDI0LjkxMSw0LjdaXCIgc3R5bGU9XCJmaWxsOiNmOGY4ZjhcIi8+PHBhdGggZD1cIk02LjE0NSwyMy45bDIuMzQzLTYuMWguODdsMi41LDYuMWgtLjkybC0uNzEyLTEuODQ4SDcuNjczTDcsMjMuOVpNNy45LDIxLjRIOS45NzRsLS42MzctMS43cS0uMjkxLS43Ny0uNDMzLTEuMjY1QTcuNzc2LDcuNzc2LDAsMCwxLDguNTc2LDE5LjZaXCIvPjxwYXRoIGQ9XCJNMTMuNjA3LDIzLjlWMTcuOGguODA3djIuNWgzLjE3MVYxNy44aC44MDd2Ni4xaC0uODA3VjIxLjAyMWgtMy4xN1YyMy45WlwiLz48cGF0aCBkPVwiTTIwLjQ3OCwyMy45VjE3LjhoLjgwN3YzLjAyNWwzLjAzLTMuMDI1aDEuMDk0TDIyLjg1LDIwLjI2NywyNS41MjIsMjMuOUgyNC40NTZsLTIuMTcyLTMuMDg4LTEsLjk3NFYyMy45WlwiLz5gLFxuICBcIkF1dG9JdFwiOiBgPGNpcmNsZSBjeD1cIjE2XCIgY3k9XCIxNlwiIHI9XCIxMi41NTFcIiBzdHlsZT1cImZpbGw6IzVkODNhY1wiLz48cGF0aCBkPVwiTTIsMTZBMTQsMTQsMCwxLDEsMTYsMzAsMTQsMTQsMCwwLDEsMiwxNlpNMTYsNC43ODlBMTEuMjExLDExLjIxMSwwLDEsMCwyNy4yMTEsMTYsMTEuMjExLDExLjIxMSwwLDAsMCwxNiw0Ljc4OVpcIiBzdHlsZT1cImZpbGw6I2YwZjBmMFwiLz48cGF0aCBkPVwiTTI0LjU3NiwyMC4xNTZsLTYuNC05LjI2NGEzLjEzMSwzLjEzMSwwLDAsMC0uODE5LS44MTksMi4zNiwyLjM2LDAsMCwwLTIuNDQyLjAyMywzLjU0MywzLjU0MywwLDAsMC0uODEyLjhMNy41MzMsMjAuMTU2aDMuNzUybDQuODA4LTYuOCwxLjgzOCwyLjcxcS4yNi4zNjguNTQ0Ljc4OXQuNS43cS0uMzY4LS4wMzEtLjg2NS0uMDMxaC0zLjUzbC0xLjkxNCwyLjYzNFpcIiBzdHlsZT1cImZpbGw6I2YwZjBmMFwiLz5gLFxuICBcIkF2cm8gSURMXCI6IGA8cGF0aCBkPVwiTTIsMTEuNjQ5aC4wMjVhNC43ODUsNC43ODUsMCwwLDAsMi45MTEsMS4zMzZjMi4zMDguMjIxLDQuNTktLjQ4NSw2LjktLjMyNmE3LjAzLDcuMDMsMCwwLDEsMi42OC42NjRjLjUtLjMxOS45ODktLjY2MiwxLjQ4Ni0uOTg5LjUuMzI3Ljk4NC42NzQsMS40ODguOTg5YTYuODM0LDYuODM0LDAsMCwxLDIuNDg3LS42NWMxLjk5NS0uMTY3LDMuOTY3LjMwOCw1Ljk1Ny4zNTlhNS4yLDUuMiwwLDAsMCw0LjAyNi0xLjM4M0gzMHYuMjM2Yy0uMTc4Ljc0Ny0uODgyLDEuMTc2LTEuMjg0LDEuNzlhNC45NDgsNC45NDgsMCwwLDEtLjczMS43OTEsMy44LDMuOCwwLDAsMS0uNTY1Ljc0OCwyLjU1MSwyLjU1MSwwLDAsMC0uNTk0LjU0MSwyLjE4MSwyLjE4MSwwLDAsMS0uOTYuNzQ5LDEuMTQ5LDEuMTQ5LDAsMCwxLS41NjUuNTYsNi42OSw2LjY5LDAsMCwxLTEuOTQuMTg0Yy43MjMuNTQ4LDEuNSwxLjAyLDIuMjQ2LDEuNTM1Ljc4Mi41MTMsMS41NCwxLjA2MSwyLjMyNiwxLjU2OEg0LjA4OWMxLjUtMS4wNTgsMy4wNTctMi4wMzUsNC41NS0zLjFBNi44LDYuOCwwLDAsMSw2LjcsMTcuMDY1YTEuMTU1LDEuMTU1LDAsMCwxLS41NjktLjU2MiwyLjI4LDIuMjgsMCwwLDEtMS4wNDMtLjg2Yy0uMjY4LS4zLS42Ny0uNDY2LS44NTMtLjg0My0uMi0uNDM2LS42NTgtLjY2NC0uOTA5LTEuMDY3LS40LS42NDItMS4xMzctMS4wNzYtMS4zMjctMS44NDZ2LS4yMzltMi45MzksOC41MjhxMTEuMDU5LjAwOSwyMi4xMiwwYy0zLjY2OC0yLjUxLTcuMzc2LTQuOTYxLTExLjA1OS03LjQ0OC0zLjY4NCwyLjQ4Ny03LjM5Miw0Ljk0MS0xMS4wNjEsNy40NDlNNC4xNjcsMTMuMmE3Ljg0Miw3Ljg0MiwwLDAsMCwyLjg0LjczMWMxLjE2My4xMjMsMi4zNDEuMDQ2LDMuNS4yMzZhMi43LDIuNywwLDAsMSwxLjYwNy43ODFjLjY1OS0uNDUyLDEuMzMyLS44ODUsMS45ODctMS4zNDJsLjAxMi0uMDY0YTUuMjk0LDUuMjk0LDAsMCwwLTEuODc3LS41Yy0yLjY5My0uMzE2LTUuMzg3LjcxMi04LjA2Ny4xNm0xMy42NTIuMzU2Yy42ODguNDY2LDEuMzgyLjkyNSwyLjA3LDEuMzkyYTIuNDg4LDIuNDg4LDAsMCwxLDEuMy0uNzE5LDE5Ljg1OSwxOS44NTksMCwwLDEsMy4xMzctLjI0OCw5LjEwNSw5LjEwNSwwLDAsMCwzLjUtLjc2OGMtMi41ODIuNS01LjE2OC0uNDA5LTcuNzYxLS4yYTYuMjU2LDYuMjU2LDAsMCwwLTIuMjQ1LjU0NU0zLjMzOSwxMy4xNjZhNy4yNjQsNy4yNjQsMCwwLDAsMi43MjMsMS4zYy0uMjE5LS4xNTMtLjM3Ni0uNDE2LS42NTctLjQ1N2E3Ljk1NSw3Ljk1NSwwLDAsMS0yLjA2Ni0uODQ0bTIzLjMzMy44MjVjLS4zMTcuMDIzLS41LjMtLjczMy40NzNhNy4yMzIsNy4yMzIsMCwwLDAsMi43MjQtMS4zLDguMTA2LDguMTA2LDAsMCwxLTEuOTkxLjgyNG0tMjIuNS4xMjZhNS4xMjEsNS4xMjEsMCwwLDAsMi41ODksMS4xYy0uMTE1LS4xMjgtLjIwOS0uMzEyLS40LS4zMzRhMTAuNDU5LDEwLjQ1OSwwLDAsMS0yLjE5LS43NzFtMjEuNDY3Ljc2OGMtLjE4OS4wMjItLjI4NC4yLS4zOTQuMzM2YTUuMTg3LDUuMTg3LDAsMCwwLDIuNi0xLjEwOSwxMC40NzcsMTAuNDc3LDAsMCwxLTIuMi43NzNNNi4zLDE0LjIwNmEzLjI0MywzLjI0MywwLDAsMCwyLjQ0NS4zNTJjLS4xLS4wOC0uMTgxLS4yMTUtLjMyNS0uMjA2cS0xLjA2My0uMDQtMi4xMi0uMTQ2bTE3LjM1MS4xMzljLS4xNzEtLjAxOS0uMjkxLjEtLjQwNi4yMTFhMy4xMDgsMy4xMDgsMCwwLDAsMi40Mi0uMzUycS0xLC4xMTItMi4wMTQuMTQxbS0xNi43NDEuNTM4YTMuNjY5LDMuNjY5LDAsMCwwLDIuNDgyLjMxOSwxLjEwNywxLjEwNywwLDAsMC0uMjgxLS4zNzYsNS4xNTgsNS4xNTgsMCwwLDEtMi4yLjA1N20xNS43LjMxOGEzLjY3OCwzLjY3OCwwLDAsMCwyLjQ4Ny0uMzE5LDUuMTI3LDUuMTI3LDAsMCwxLTIuMi0uMDU3LDEuMSwxLjEsMCwwLDAtLjI4My4zNzZNNC44MzgsMTQuOTc3YTQuMTEsNC4xMSwwLDAsMCwyLjEzMy44NDFjLS4wNTctLjA4NC0uMTE0LS4xNjgtLjE3MS0uMjU0YTYuOTQ4LDYuOTQ4LDAsMCwxLTEuOTYyLS41ODdtMjAuMzYxLjU4OS0uMTY5LjI1M2E0LjE0MSw0LjE0MSwwLDAsMCwyLjEzNi0uODQzLDcuMDE1LDcuMDE1LDAsMCwxLTEuOTY3LjU5bS0xOC4xLS4xM2EuOC44LDAsMCwwLC41MzQuMzEsNy41NzksNy41NzksMCwwLDAsMi4wMzctLjA3M2MtLjAwOS0uMDMtLjAyNy0uMDktLjAzNi0uMTItLjQ1Ny0uMDUxLS45MjMuMDc0LTEuMzg1LjA0N0E3LjA1NCw3LjA1NCwwLDAsMSw3LjEsMTUuNDM3bTE2LjE5MS4xNTFhNi4yOCw2LjI4LDAsMCwwLS45MTMtLjA0MWwtLjA0Mi4xMjZhNy40MTYsNy40MTYsMCwwLDAsMi4wNDUuMDcyLjcuNywwLDAsMCwuNTIyLS4zMzEsNC4zNDksNC4zNDksMCwwLDEtMS42MTMuMTc0bS0xNy41Mi4zMjdhMy4xMiwzLjEyLDAsMCwwLDEuNzU0LjQ4MWMtLjA2NS0uMjQtLjMzNC0uMi0uNTIzLS4yMzYtLjQxOS0uMDQxLS44MTYtLjE4Ni0xLjIzMS0uMjQ2TTI1LDE2LjE2M2MtLjE4OC4wNDEtLjQ1Mi0uMDA2LS41MjEuMjMyYTIuODc0LDIuODc0LDAsMCwwLDEuNzMyLS40ODJjLS40LjA3OS0uOC4yMDctMS4yMTEuMjUxTTcuNzM1LDE2LjExOWExLDEsMCwwLDAsLjc4OS4yNzUsOS4zMzEsOS4zMzEsMCwwLDAsMS4zMjUtLjE1OGMtLjAyMS0uMDkzLS4wMDktLjI3OC0uMTYzLS4yMjhhOS45ODMsOS45ODMsMCwwLDEtMS45NTEuMTExbTE0LjQxNS4xMThhOC4xNTcsOC4xNTcsMCwwLDAsMS40MTIuMTU0LjkuOSwwLDAsMCwuNy0uMjc0LDkuMzg3LDkuMzg3LDAsMCwxLTEuOTM0LS4xMWMtLjE2LS4wNi0uMTU1LjEzMi0uMTc2LjIzbS0xNS40MzguNDRhMS45NjIsMS45NjIsMCwwLDAsMS4zLjE4MWwtLjA5MS0uMTI2Yy0uNC4wMDYtLjgwNy0uMDIyLTEuMjA5LS4wNTVtMS42MTUuMDQzYTEuMDMsMS4wMywwLDAsMCwuNzE2LjI5NGMuMTc5LS4xMjUuMzU4LS4yNTIuNTMxLS4zODZhNS43NDcsNS43NDcsMCwwLDEtMS4yNDcuMDkybTE0LjEtLjA5M2MuMjM3LjE0NC40NjcuNDc3Ljc4Mi4zNDUuMTY2LS4wNS4zNjktLjA4OS40NjEtLjI1N2E1LjI3MSw1LjI3MSwwLDAsMS0xLjI0My0uMDg4bTEuNzEzLjI2M2EyLjAwNywyLjAwNywwLDAsMCwxLjE0NS0uMjEzLDEwLjI2OSwxMC4yNjksMCwwLDEtMS4xNDQuMDQ5QzIzLjk5MywxNi42NjcsMjMuOTg0LDE2Ljk2MSwyNC4xMzgsMTYuODlaXCIgc3R5bGU9XCJmaWxsOiMwMDQwZmZcIi8+PHBhdGggZD1cIk03LjQzNSwxOC44ODZRMTEuNzE5LDE2LjAxMywxNiwxMy4xMzdsOS4zLDYuMjQ0Yy4yMjEuMTQ3LjQzOS4zLjY0OC40NjRxLTkuOTQ3LS4wMS0xOS44OTQsMGMuNDQzLS4zNDQuOTItLjY0LDEuMzgzLS45NThtOC4yNTUtNS4wNjZjLS40NTcsMS44NTktLjkwNywzLjcxOS0xLjM3NSw1LjU3Ni41Mi4wMTUsMS4wNDEuMDEyLDEuNTYyLDBxLS4wMTMtMi44NDEsMC01LjY4bC0uMTg0LjFtLTIuNSwxLjY4NGMuMjU1Ljg1OS40OCwxLjcyOC43NjMsMi41NzkuMjg5LTEuMjM4LjYtMi40NzEuOS0zLjcwNy0uNTUuMzg2LTEuMTE0Ljc1LTEuNjY4LDEuMTI5bTMuMzU3LS44NzNjLS4wMDYuNjgyLDAsMS4zNjQsMCwyLjA0NmEyLjEsMi4xLDAsMCwwLDEuMDE0LS4yNTRjLjE5My0uMTQ1LjEtLjQwOS4wMTEtLjU4NmE0LjI3Niw0LjI3NiwwLDAsMC0xLjAyNC0xLjIwN00xOC4zMjcsMTYuNGMtLjEuNTQ0LS42NjYuNzkyLTEuMTUxLjkuNDc0LjcuOTYsMS4zODksMS40MTYsMi4xLjQ2OS4wMjQuOTQuMDExLDEuNDExLjAwOWExLjYzMSwxLjYzMSwwLDAsMSwuMTYtMi45NzZjLS44MzQtLjYtMS43LTEuMTQtMi41NDQtMS43MjcuMzQ5LjUuODMxLDEuMDM3LjcwOCwxLjdtLTYuODIyLjI0MmMuMjY3LjkyMS41MjksMS44NDUuNzk0LDIuNzY3LjQ0LDAsLjg4LjAwOCwxLjMyMS0uMDA3LS4zMzktMS4xNjEtLjY4NS0yLjMxOS0xLjAwOS0zLjQ4NC0uMzg1LjIxNS0uNzM3LjQ4Mi0xLjEuNzI0bTguOC40NTJhLjk0Ni45NDYsMCwwLDAsLjA1NywxLjdjLjUzMy4wOS44NTUtLjUzMy43NzktLjk5LS4wMjYtLjQtLjQtLjg2MS0uODM2LS43MTRNNy40LDE5LjRxMS4zMjQuMDE4LDIuNjUsMGMuMjU2LS43LjQxMy0xLjQ2OC42MjktMi4yLTEuMS43MTUtMi4xODcsMS40NjEtMy4yNzksMi4xOTRtMTQuMzc3LTEuOWExLjYxNiwxLjYxNiwwLDAsMS0uODc2LDEuOWMxLjIzMy4wMTgsMi40NjUuMDE1LDMuNywwLS45MzQtLjY0NC0xLjg4My0xLjI2Ni0yLjgyMi0xLjltLTUuMjIzLjExNWMtLjAxLjYsMCwxLjIsMCwxLjguNDE1LDAsLjgzMSwwLDEuMjQ4LDAtLjQxOS0uNi0uOC0xLjIxOS0xLjI0My0xLjc5NG0tNS41NDYuOTQxaC4zNDZjLS4wNTUtLjE4Ny0uMTA4LS4zNzYtLjE2Ni0uNTYyYTMuNzUxLDMuNzUxLDAsMCwwLS4xODEuNTYzbS0uMTguNjkzYy0uMDE1LjA0LS4wNDUuMTE5LS4wNjEuMTU5LjI3NS0uMDI2LjU5LjA3MS44NDItLjA1QzExLjQ1MywxOS4xMTIsMTEuMDc0LDE5LjI3NSwxMC44MjYsMTkuMjQ0WlwiIHN0eWxlPVwiZmlsbDojMDA0MGZmXCIvPmAsXG4gIFwiQVdLXCI6IGA8cGF0aCBkPVwiTTI2LjkyNSwyNy43MzdDMjMuNDMxLDI2LjEsMjQuNjA2LDE0LjU4OCwxMy44MSw4LjMxOSwxNC4wODksNS43OTIsMTQuNzU4LS41LDcuOTYxLDMsNi44NDUsMy4xMjgsNC45MDcsMi4zMzEsNCw0LjgzMXYuMTE0QzE2LjkxOCwzLjkuMDg4LDEwLjUzLDE2Ljc1LDI1Ljg0NGMtLjM3My4xNzYtLjY3NC0uMzI1LTEuOTcuMWwtLjAxNC4wMTZjLTEuNzIyLDEuMTM1LDEuOTMzLjc2OCw0LjE1NCwxLjI3NC0xLjYxMS40MTctNS41OTQtMS4xMzctNi4zLDEuNjQ1Ljg3Ny0uMzcsMSwuMzI5LDEuMDc2LDEuMDc3QTI2LjI3NywyNi4yNzcsMCwwLDEsMjIuMzc5LDI3LjVjMS4xLjI4NSw0LjExOCwyLjA0OSw1LjEyMi41NTFDMjcuNTE5LDI3LjkzLDI3LjIyMSwyNy44NzYsMjYuOTI1LDI3LjczN1pcIi8+PHBhdGggZD1cIk0xMC40NDYsMi45N2wtLjEyMS4wODhhLjI2Ni4yNjYsMCwwLDAtLjAxMS4zNzcuMjExLjIxMSwwLDAsMCwuMDQ1LjAzOS40MTYuNDE2LDAsMCwwLC41MjEtLjA2My4yNjMuMjYzLDAsMCwwLC4wNzgtLjM2NGwtLjAxLS4wMTRjLS4wNzYtLjE0My0uMTYzLS4xNzctLjM0LS4xMjdDMTAuNTUzLDIuOTI1LDEwLjUsMi45NDYsMTAuNDQ2LDIuOTdaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0xOCwyNi4zNjhjLjE1MS0uMDQxLjMxOC0uODI4LjE3NC0uOTQ5QTYuMjksNi4yOSwwLDAsMCwxOS40LDI2LjQ4NWMxLjAyMywxLjAwNywyLjY2NS0uMDMyLDMuNDgyLjc1OWExMC43MzYsMTAuNzM2LDAsMCwwLDEuOTU3LDEuMDI3Yy0uMTM5LS4xNTEtLjAyOS0uMTQ0LjE3OS0uMDExLS4xMy0uMzM4LTQuNDIxLTUuMTU2LTUuMjI2LTcuMTguMDk1LjI5My0xLjYwOC0uODI0LTIuMDc2LTEuNDE5LS4wMjguMDU2LS4wOTItLjI1MS0uMjI4LS40MzQtLjA0MS4wNS0uMi0uNDMzLS4zLS43MjguMDM3LjE4Ny0uNDYyLS41LS42NS0uODE4LS4wNTYuMDktLjcxOS4zNzItLjgwOS4yODYtLjcyOS0uNCwyLjUyOSw0LjA2Ni4xMjIsMi41NTkuNjc2LjY4My42MTQuNC0xLjA5NS0uODUyLjM2NC40NTItLjMxNy4zMTItMS41NTMtMS41MjMuMTg2LjItLjIxOC0uNTc2LS4yMTgtLjU3NmEyLjY5MiwyLjY5MiwwLDAsMC0uMTMzLS40ODNjLS4wNTYtLjMyLS4yNDEtLjcyMy0uMTItLjY1LTEuNDQ0LTEuNTU2LDEuMzE0LTMuMy43MTktMy42NzEtLjExMSwwLS4wMjcuMDE3LS4xNTEtLjEwNi0uMDksMC0uNDY4LjI4NS0uNTg3LS4yMzQuMDA2LjEzMi0uMDM0LjQwNi0uMTUzLS4xLS4wMjMuMDUyLjAxNS4xLS4wMy4xNDUtLjIyNS0uNTc2LS43NzItMS42LTEuMjE3LTIuNTM5LS4xNTguMTU1LS4xMzgtLjA3Ni0uMTkzLTEuMDkyLjA1My4xNDQtLjIyNSwxLjkyMS0uMi4xMy0uMTI4LjAwNy4xMDgsMS4yNTgtLjM0My4yMS0uMTQxLjA1LS4zMDUtLjM2My0uMzQxLTEuMTc4LS4wNDguNjIzLS4yOS4xODctLjUtLjkyMy0uMjY5LjUwOC0xLjYsMS43NDMtLjMzMyw3LjYyMi0uMDUzLS4zMTMuMTg2LjM0MS43NTUsMi40MjcuMDIxLS4wMzktLjAyMi0uMDgzLjAzOC0uMTMxYTYuMzI0LDYuMzI0LDAsMCwwLC42NzcsMS4zNjVjLjU0NC42NTguOTk1LDIuMDc0LjgsMS4yNzdhMTEuODY3LDExLjg2NywwLDAsMCwyLjU1NCwzLjI0OUEzNC40MjMsMzQuNDIzLDAsMCwwLDE4LDI2LjM2OFpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTEwLjgyMywyLjU1N2EuMjkxLjI5MSwwLDAsMC0uMDUxLS4wMjJjLS4yMjEtLjA0LS40MjkuMTUzLS42NTQuMDMyLS4xNDUuMDg1LS4yNTctLjAzNi0uMzc1LS4wNzNhLjIyNC4yMjQsMCwwLDAtLjIuMDE0LDUuODIzLDUuODIzLDAsMCwwLS44MTQuNTgyLDEuMDM3LDEuMDM3LDAsMCwwLS4yNzMuNDQ5Yy0uMDIxLjA0OC0uMDM3LjEyNi4wNS4xMzdhMi4zLDIuMywwLDAsMCwuNjgyLjA0NWMuMTc3LS4wMjguMjc3LS4xNTIuNDE4LS4yMjFhMS4yLDEuMiwwLDAsMCwuNTkyLS42OGMuMDY0LS4xNzUuMTYxLS4xNjcuMjgtLjJTMTAuNywyLjYyLDEwLjgyMywyLjU1N1pcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTEwLjMyNSwzLjA1OGwuMTIxLS4wODhhLjExNy4xMTcsMCwwLDEsLjEyLjA2NGMuMDQ0LjEuMTA2LjExMi4xOTMuMDQ3LjAzMy0uMDI1LjA3MS0uMDU4LjExOC0uMDI3YS4xMTkuMTE5LDAsMCwxLC4wNDEuMTI4LjI3Ni4yNzYsMCwwLDEtLjE4Ny4yNDguMjY2LjI2NiwwLDAsMS0uMy0uMDNDMTAuMzQxLDMuMzA4LDEwLjI2LDMuMiwxMC4zMjUsMy4wNThaXCIvPmAsXG4gIFwiQmF0Y2hcIjogYDxwYXRoIGQ9XCJNMjkuNCwyNy42SDIuNVY0LjVIMjkuNFptLTI1LjktMUgyOC40VjUuNUgzLjVaXCIgc3R5bGU9XCJmaWxsOiNkOWI0MDBcIi8+PHBvbHlnb24gcG9pbnRzPVwiNi4wNzcgMTkuMzE2IDUuNTIyIDE4LjQ4NCAxMC4zNjYgMTUuMjU1IDUuNDc5IDExLjE4NCA2LjEyIDEwLjQxNiAxMi4wMzUgMTUuMzQ0IDYuMDc3IDE5LjMxNlwiIHN0eWxlPVwiZmlsbDojZDliNDAwXCIvPjxyZWN0IHg9XCIxMi43XCIgeT1cIjE4LjJcIiB3aWR0aD1cIjcuOFwiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6I2Q5YjQwMFwiLz48cmVjdCB4PVwiMi41XCIgeT1cIjUuNVwiIHdpZHRoPVwiMjYuOVwiIGhlaWdodD1cIjEuOVwiIHN0eWxlPVwiZmlsbDojZDliNDAwXCIvPmAsXG4gIFwiQyNcIjogYDx0aXRsZT5maWxlX3R5cGVfY3NoYXJwPC90aXRsZT48cGF0aCBkPVwiTTE5Ljc5Miw3LjA3MWgyLjU1M1Y5LjYyNEgyNC45VjcuMDcxaDIuNTUyVjkuNjI0SDMwdjIuNTUyaC0yLjU1djIuNTUxSDMwVjE3LjI4SDI3LjQ0OXYyLjU1MkgyNC45di0yLjU1bC0yLjU1LDAsMCwyLjU1MkgxOS43OTN2LTIuNTVsLTIuNTUzLDBWMTQuNzI1aDIuNTUzVjEyLjE3OUgxNy4yNFY5LjYyMmgyLjU1NFptMi41NTMsNy42NThIMjQuOVYxMi4xNzZIMjIuMzQ1WlwiIHN0eWxlPVwiZmlsbDojMzY4ODMyXCIvPjxwYXRoIGQ9XCJNMTQuNjg5LDI0LjAxM2ExMC4yLDEwLjIsMCwwLDEtNC42NTMuOTE1LDcuNiw3LjYsMCwwLDEtNS44OS0yLjMzNkE4LjgzOSw4LjgzOSwwLDAsMSwyLDE2LjM2Nyw5LjQzNiw5LjQzNiwwLDAsMSw0LjQxMiw5LjY0OGE4LjE4MSw4LjE4MSwwLDAsMSw2LjI1OS0yLjU3NywxMS4xLDExLjEsMCwwLDEsNC4wMTguNjM4djMuNzQ1YTYuODEsNi44MSwwLDAsMC0zLjcyMy0xLjAzNiw0Ljc5Myw0Ljc5MywwLDAsMC0zLjcsMS41MjksNS44NzksNS44NzksMCwwLDAtMS40MDcsNC4xNDIsNS43NzQsNS43NzQsMCwwLDAsMS4zMjgsMy45OTIsNC41NTEsNC41NTEsMCwwLDAsMy41NzUsMS40ODcsNy4yODgsNy4yODgsMCwwLDAsMy45MjctMS4xMDhaXCIgc3R5bGU9XCJmaWxsOiMzNjg4MzJcIi8+YCxcbiAgXCJDXCI6IGA8dGl0bGU+ZmlsZV90eXBlX2M8L3RpdGxlPjxwYXRoIGQ9XCJNMTAuNjc2LDE1Ljk3M2ExMC4wNTIsMTAuMDUyLDAsMCwwLDEuMTc1LDUuMTUxLDUuNDQ2LDUuNDQ2LDAsMCwwLDYuMzA2LDIuNDA4LDQuMjg0LDQuMjg0LDAsMCwwLDMuMDktMy42Yy4xMDctLjYuMTA5LS42MS4xMDktLjYxLDEuNzM3LjI1MSw0LjUzNy42NTgsNi4yNzQuOTA2bC0uMTEuNDRhMTEuMjU2LDExLjI1NiwwLDAsMS0yLjcsNS4zOSw5LjQzOSw5LjQzOSwwLDAsMS01LjM2NiwyLjY4OCwxNC42MSwxNC42MSwwLDAsMS04LjI3Ny0uODE5QTEwLjE1MSwxMC4xNTEsMCwwLDEsNS40LDIxLjY4N2ExNi4yMjUsMTYuMjI1LDAsMCwxLC4wMTktMTEuNDUsMTAuNTM4LDEwLjUzOCwwLDAsMSw4Ljk2My03LjA1NCwxMy4zNTMsMTMuMzUzLDAsMCwxLDYuNjY2LjU1NSw5LjU3MSw5LjU3MSwwLDAsMSw2LjE2Nyw2LjljLjA5NC4zNTIuMTE0LjQxNy4xMTQuNDE3LTEuOTMyLjM1MS00LjMxOS44LTYuMjM4LDEuMjE1LS4zNjItMS45MTUtMS4yNjUtMy40MjgtMy4yLTMuOWE1LjI2Myw1LjI2MywwLDAsMC02LjYxNiwzLjU3LDEwLjQ5LDEwLjQ5LDAsMCwwLS4zODUsMS40MzlBMTIuMzEsMTIuMzEsMCwwLDAsMTAuNjc2LDE1Ljk3M1pcIiBzdHlsZT1cImZpbGw6IzAwNWY5MVwiLz5gLFxuICBcIkMrK1wiOiBgPHRpdGxlPmZpbGVfdHlwZV9jcHA8L3RpdGxlPjxwYXRoIGQ9XCJNMTQuNzQyLDI0LjA0N2ExMC4yNDIsMTAuMjQyLDAsMCwxLTQuNjczLjkxOUE3LjYyOCw3LjYyOCwwLDAsMSw0LjE1NSwyMi42Miw4Ljg3Niw4Ljg3NiwwLDAsMSwyLDE2LjM2OSw5LjQ3Niw5LjQ3NiwwLDAsMSw0LjQyMiw5LjYyMWE4LjIxNiw4LjIxNiwwLDAsMSw2LjI4NS0yLjU4OCwxMS4xNTEsMTEuMTUxLDAsMCwxLDQuMDM1LjY0MXYzLjc2MUE2LjgzOSw2LjgzOSwwLDAsMCwxMSwxMC4zOTUsNC44MTMsNC44MTMsMCwwLDAsNy4yODgsMTEuOTNhNS45LDUuOSwwLDAsMC0xLjQxMyw0LjE1OUE1LjgsNS44LDAsMCwwLDcuMjA5LDIwLjFhNC41Nyw0LjU3LDAsMCwwLDMuNTksMS40OTMsNy4zMTksNy4zMTksMCwwLDAsMy45NDMtMS4xMTNaXCIgc3R5bGU9XCJmaWxsOiM5ODRjOTNcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTcuMTEyIDE0LjgyOSAxNy4xMTIgMTIuNDg1IDE5LjQ1NiAxMi40ODUgMTkuNDU2IDE0LjgyOSAyMS44IDE0LjgyOSAyMS44IDE3LjE3MiAxOS40NTYgMTcuMTcyIDE5LjQ1NiAxOS41MTUgMTcuMTEyIDE5LjUxNSAxNy4xMTIgMTcuMTcyIDE0Ljc3IDE3LjE3MiAxNC43NyAxNC44MjggMTcuMTEyIDE0LjgyOVwiIHN0eWxlPVwiZmlsbDojOTg0YzkzXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI1LjMxMyAxNC44MjkgMjUuMzEzIDEyLjQ4NSAyNy42NTcgMTIuNDg1IDI3LjY1NyAxNC44MjkgMzAgMTQuODI5IDMwIDE3LjE3MiAyNy42NTcgMTcuMTcyIDI3LjY1NyAxOS41MTUgMjUuMzEzIDE5LjUxNSAyNS4zMTMgMTcuMTcyIDIyLjk3MSAxNy4xNzIgMjIuOTcxIDE0LjgyOCAyNS4zMTMgMTQuODI5XCIgc3R5bGU9XCJmaWxsOiM5ODRjOTNcIi8+YCxcbiAgXCJDbG9qdXJlXCI6IGA8cGF0aCBkPVwiTTE2LDJBMTQsMTQsMCwxLDAsMzAsMTYsMTQuMDE2LDE0LjAxNiwwLDAsMCwxNiwyXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xNS40ODgsMTYuMjUyYy0uMTI2LjI3My0uMjY1LjU3OS0uNDA4LjlBMjIuOTYzLDIyLjk2MywwLDAsMCwxMy44LDIwLjYwNWE1LjE4MSw1LjE4MSwwLDAsMC0uMTE5LDEuMTU1YzAsLjE3NC4wMDkuMzU2LjAyNC41NDJhNi42NTgsNi42NTgsMCwwLDAsNC40MTMuMDY3LDMuOTY2LDMuOTY2LDAsMCwxLS40NC0uNDY2Yy0uOS0xLjE0Ni0xLjQtMi44MjctMi4xOTQtNS42NTJcIiBzdHlsZT1cImZpbGw6IzkxZGM0N1wiLz48cGF0aCBkPVwiTTEyLjE2OSwxMC41NTZhNi42NzcsNi42NzcsMCwwLDAtLjA3NywxMC44ODFjLjQxMS0xLjcxLDEuNDQtMy4yNzYsMi45ODMtNi40MTUtLjA5Mi0uMjUyLS4yLS41MjctLjMxMy0uODE3YTEwLjIwNywxMC4yMDcsMCwwLDAtMS42LTIuODgyLDQuNDM5LDQuNDM5LDAsMCwwLTEtLjc2N1wiIHN0eWxlPVwiZmlsbDojOTFkYzQ3XCIvPjxwYXRoIGQ9XCJNMjEuODQsMjMuN2ExMC44NzcsMTAuODc3LDAsMCwxLTIuMjU3LS40NzFBOC4wMzYsOC4wMzYsMCwwLDEsMTAuNzE2LDkuOTgyYTUuOSw1LjksMCwwLDAtMS40LS4xNzFjLTIuMzU4LjAyMi00Ljg0OCwxLjMyNy01Ljg4NCw0Ljg1MmE2LjYwNiw2LjYwNiwwLDAsMC0uMDc0LDEuMzYxLDEyLjY0OSwxMi42NDksMCwwLDAsMjMsNy4yNzQsMTQuNzM3LDE0LjczNywwLDAsMS0zLjQ0OC40NTlBOC44ODEsOC44ODEsMCwwLDEsMjEuODQsMjMuN1wiIHN0eWxlPVwiZmlsbDojNjNiMTMyXCIvPjxwYXRoIGQ9XCJNMTkuNDYzLDIxLjI0NGEzLjUzLDMuNTMsMCwwLDAsLjUuMTcyQTYuNjksNi42OSwwLDAsMCwyMi43LDE2LjAyM2gwYTYuNjgxLDYuNjgxLDAsMCwwLTguNzktNi4zNDhjMS4zNTgsMS41NDgsMi4wMTEsMy43NjEsMi42NDMsNi4xODF2MHMuMi42NzMuNTQ3LDEuNTYyYTE1LjQzNCwxNS40MzQsMCwwLDAsMS4zNjMsMi43ODgsMi45MjQsMi45MjQsMCwwLDAsMSwxLjAzNlwiIHN0eWxlPVwiZmlsbDojOTBiNGZlXCIvPjxwYXRoIGQ9XCJNMTYuMDEzLDMuMzcyQTEyLjYzMiwxMi42MzIsMCwwLDAsNS43MzEsOC42NTZhNi40MjUsNi40MjUsMCwwLDEsMy40OC0xLjAwOSw2LjgsNi44LDAsMCwxLDMuMTgyLjc3MmMuMTM0LjA3Ny4yNjEuMTYuMzg2LjI0NmE4LjAzOCw4LjAzOCwwLDAsMSwxMS4yNzMsNy4zNThoMGE4LjAxMyw4LjAxMywwLDAsMS0yLjM5MSw1LjcxOSw5Ljg3MSw5Ljg3MSwwLDAsMCwxLjE0My4wNjQsNi4yNCw2LjI0LDAsMCwwLDQuMDUxLTEuMjYzLDUuMzQ4LDUuMzQ4LDAsMCwwLDEuNy0yLjkwNkExMi42MzIsMTIuNjMyLDAsMCwwLDE2LjAxMywzLjM3MlwiIHN0eWxlPVwiZmlsbDojNTg4MWQ4XCIvPmAsXG4gIFwiQ01ha2VcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjkuOTU1XCIgeTE9XCI5LjA5NlwiIHgyPVwiMTYuNjhcIiB5Mj1cIjIzLjMyNFwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEsIDAsIDAsIC0xLCAwLCAzMilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMxMDExYTFcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjNjk2OWUxXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiMTYuMjMxXCIgeTE9XCIxOS42NTVcIiB4Mj1cIjI1LjYxOFwiIHkyPVwiMy43ODJcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLCAwLCAwLCAtMSwgMCwgMzIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjYjQwZTBlXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2ZmNTk1OVwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImNcIiB4MT1cIjIxLjY2M1wiIHkxPVwiNC44MjNcIiB4Mj1cIjguMzgxXCIgeTI9XCI1LjkzOFwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEsIDAsIDAsIC0xLCAwLCAzMilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMwMWEzMDBcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMDFkZjAwXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiZFwiIHgxPVwiMTQuNjQzXCIgeTE9XCI4LjM2OFwiIHgyPVwiMTQuNDcyXCIgeTI9XCIxNC4xNDVcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLCAwLCAwLCAtMSwgMCwgMzIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjODQ4NDg0XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2QyZDJkMlwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2NtYWtlPC90aXRsZT48cGF0aCBkPVwiTTE3LjI1NywxNi45MTksMi4yNDYsMjkuNzQ5LDE1Ljk5NCwyLjI4M1pcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTIuMjYyLDI5Ljc2OGwtLjAzOC0uMDNMMTYuMDEyLDIuMTkzbC4wMDguMDg4TDE3LjI4MywxNi45M2wtLjAxLjAwOFpNMTUuOTc3LDIuMzc0LDIuMzI0LDI5LjY0OSwxNy4yMywxNi45MDhaXCIvPjxwYXRoIGQ9XCJNMTcuOTUyLDI0LjkzMSwxNiwyLjI4LDI5Ljc2NywyOS43NTFaXCIgc3R5bGU9XCJmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk0yOS44MTgsMjkuOGwtLjA2MS0uMDI1TDE3LjkyOSwyNC45NDhsMC0uMDE1TDE1Ljk3NSwyLjI4MmwuMDQ3LS4wMTNaTTE3Ljk3NiwyNC45MTMsMjkuNzE1LDI5LjcsMTYuMDM2LDIuNDA4WlwiLz48cGF0aCBkPVwiTTExLjE2LDIyLjA5NGwxOC42MjEsNy42NTRIMi4yNVpcIiBzdHlsZT1cImZpbGw6dXJsKCNjKVwiLz48cGF0aCBkPVwiTTI5Ljc4MSwyOS43NzNIMi4xODNsLjA1MS0uMDQ0LDguOTIxLTcuNjY1LjAxNC4wMDYsMTguNjIyLDcuNjU1Wm0tMjcuNDY0LS4wNUgyOS42NTRsLTE4LjQ4OS03LjZaXCIvPjxwYXRoIGQ9XCJNMTEuMTg5LDIyLjExMmw2LjA1OS01LjE2OC44NDMsNy45OFpcIiBzdHlsZT1cImZpbGw6dXJsKCNkKVwiLz48cGF0aCBkPVwiTTE4LjE0OSwyNWwtLjA3Ny0uMDMyLTYuOTc4LTIuODQyLDYuMTk0LTUuMjgzLjAxLjA5NFptLTYuODY1LTIuOSw2Ljc0OCwyLjc0OS0uODI0LTcuOFpcIi8+PHBhdGggZD1cIk0yOS43LDI5LjkxMUgyLjI4NWEuMjIxLjIyMSwwLDAsMS0uMTgyLS4wODguMjIyLjIyMiwwLDAsMSwuMDIyLS4yTDE1Ljg2NCwyLjE4N2EuMTY5LjE2OSwwLDAsMSwuMTQtLjFoMGEuMTU0LjE1NCwwLDAsMSwuMTMuMDg1TDI5Ljg2NywyOS42MDdhLjIzOC4yMzgsMCwwLDEsLjAyLjIyNkEuMjExLjIxMSwwLDAsMSwyOS43LDI5LjkxMVptLTI3LjQ2OC0uMTZhLjQ4NC40ODQsMCwwLDAsLjA1Ny4wMTFoMjcuNGwuMDczLS4wMDlhLjIyMS4yMjEsMCwwLDAtLjAyOC0uMDc3TDE2LDIuMjQ4LDE2LDIuMjYsMi4yNjEsMjkuNjg0YS4yNzkuMjc5LDAsMCwwLS4wMjUuMDY3WlwiLz5gLFxuICBcIkNPQk9MXCI6IGA8cGF0aCBkPVwiTTIyLjI0LDYuNTQ2YTQuNDQ5LDQuNDQ5LDAsMCwwLDEuNzY1LTIuNTIyLDQuNjM2LDQuNjM2LDAsMCwxLS4wMTgsMi4xNTdjLS4yMjMuNTgyLS41NjcsMS4xMDctLjgzNCwxLjY2OWEyMS43NzIsMjEuNzcyLDAsMCwxLDQuNTU5LTIuOTM4QzI3LjIzLDYuNCwyNS44OTEsNy4zLDI0LjkwNyw4LjQ0MmMuMTkuNDA5LjI4Ljk4OS44LDEuMTA5YTUuMDM2LDUuMDM2LDAsMCwwLDIuNS4xNTVjLjkxMi0uMzEzLDEuMzQ1LTEuMjU4LDEuOC0yLjAzNVY5LjE0YTE1LjczOCwxNS43MzgsMCwwLDEtLjU4MiwxLjc0OGMuMi41NDcuNDA5LDEuMDkyLjU4MiwxLjY0N3YuOTUyYy0uMjE0LjM2OC0uNDQyLjcyNi0uNjYzLDEuMDg5YTUuMjkzLDUuMjkzLDAsMCwwLTEuMDY4LTEuMTYyLDQuMDMsNC4wMywwLDAsMC0xLjg1MS0uMTI1LDMuMjEyLDMuMjEyLDAsMCwwLDIuNDEzLDEuNDdjLS4zNTkuMzctLjY2My45MTItMS4yMy45NjktMS42NDEuMjQ3LTMuMjA3LS41MDUtNC44MzktLjUtLjI4Mi4wMi0uNzA3LjAyNC0uNzg1LjM3MiwwLC43MzUuMjE3LDEuNDUzLjE5LDIuMTg4LS4wNTksMS4yNTgtLjUxMiwyLjQ2Ni0uNTI5LDMuNzI2YTEzLjc4NSwxMy43ODUsMCwwLDAsLjgzOCwzLjQ0OGMtLjUyMy0uMDc3LTEuMDQ0LS4xNjYtMS41NjItLjI2LS4xLjIwOC0uMTg0LjQyLS4yNi42MzRBNC41MTQsNC41MTQsMCwwLDAsMjEuOCwyNi41MzFjLS4wNjEuMTI3LS4xODIuMzgxLS4yNDEuNTA4bC0uNTczLjEzOGMtLjEzMS4yNDctLjI2My40OTItLjQuNzM5YTQuNDIxLDQuNDIxLDAsMCwwLTIuMi4wNjFjLS40NjYtLjE4Ni0uOTI4LS4zNzYtMS4zODktLjU2N2E1LjkzOSw1LjkzOSwwLDAsMCwuNDA3LTIuMzE1Yy0uMjgyLS45ODItMS42LS45ODQtMi0xLjg3N2E2LjIzMyw2LjIzMywwLDAsMS0xLjAyMi0yLjg1MWMtLjgyMy0uNDMzLTEuNDU1LTEuMjIxLTIuNC0xLjQtLjA0OC40MDktLjA4My44Mi0uMTUzLDEuMjI3QTYuMDE1LDYuMDE1LDAsMCwxLDEwLjQ4MSwyMi42Yy4wMzkuNDIyLjA3OS44NDIuMTIsMS4yNjUuMzQ2LjMyNC42OTEuNjQ4LDEuMDMzLjk3NGE5Ljc1Miw5Ljc1MiwwLDAsMS0xLjQyNi43MTMsMTEuMTE0LDExLjExNCwwLDAsMS0xLjY4Ny4wNzdjLS4yNTgtLjI1NC0uNTE4LS41MDgtLjc3Ny0uNzY0YTQuODcxLDQuODcxLDAsMCwwLC4xMTQtMi42MDhjLjE3MS0uNC4zMjYtLjgxMi40NzUtMS4yMjFhNS41NjUsNS41NjUsMCwwLDEtMy4wMS4yMDYsNS4xMiw1LjEyLDAsMCwxLTMuMjktNC4zMywzLjg1OSwzLjg1OSwwLDAsMSwxLjQwNy0zLjI2OEE2LjQxLDYuNDEsMCwwLDAsMy4yLDE2LjI1OWEzLjAzOCwzLjAzOCwwLDAsMCwyLjUsMi40NjYsMy40NjIsMy40NjIsMCwwLDAsMS45Ni0uNjQzLDcuNDgsNy40OCwwLDAsMSwuMzYzLTQuMTMzLDUuNTI0LDUuNTI0LDAsMCwxLDMuNTg2LTIuNjYsNC4yMzUsNC4yMzUsMCwwLDAsMi4wMTEtMS41NjYsMTAuNjcsMTAuNjcsMCwwLDEsMS41MjktMS4zM2MtLjIyOC0uMjE5LS40NTMtLjQ0LS42OC0uNjU5QTIuMTU0LDIuMTU0LDAsMCwwLDE1LjksNi4wMjNjMS4yODQtLjMsMi41NTEtLjY2MSwzLjgyLTEuMDExYTMuNzkzLDMuNzkzLDAsMCwwLDEuNDE1LjYwNmMuMzE3LjM0Ni40OTQsMS4xNTcsMS4xLjkyOE0xOC40NTgsMTkuOTA4Yy4wNDIuNzY4LS4wNDgsMS42NjUuNjc0LDIuMTU1LDAtLjc1NS0uMDQ2LTEuNTA3LS4xLTIuMjZaXCIgc3R5bGU9XCJmaWxsOiMwMDVjYTVcIi8+YCxcbiAgXCJDb2ZmZWVTY3JpcHRcIjogYDxwYXRoIGQ9XCJNMTMuMTE0LDUuNzI4Yy4wMjUuMTUzLS4wNTEuMjgtLjMwNi40MDhhMy40NTcsMy40NTcsMCwwLDAtMS42My0uMjI5Yy0uNjM3LjA1MS0xLjE3Mi4yNTUtMS4xLjY4OC4xLjQzMy43MTMuNjg4LDEuODA4LjU4NiwyLjY3NC0uMjI5LDIuNjQ5LTIuMDM4LDYuNTcxLTIuMzk0LDMuMDU2LS4yOCw0Ljc2My42NjIsNC45OTIsMS44MDguMTc4Ljg5MS0uNTYsMS43NTctMi43NzYsMS45MzYtMS45NjEuMTc4LTMuMTA3LS4zNTctMy4yMDktLjg5MS0uMDUxLS4yOC4xLS42ODgsMS4wNDQtLjc5LjEuNDMzLjYzNy44OTEsMS45MS43NjRDMjEuMzQxLDcuNTM2LDIyLjEsNy4yLDIyLDYuN2MtLjEtLjUzNS0xLjA3LS44NC0yLjYtLjcxMy0zLjEwNy4yOC0zLjg3MSwxLjk4Ny02LjUyLDIuMjE2QzExLDguMzc2LDkuNDcyLDcuNjg5LDkuMjY4LDYuNjdjLS4wNzYtLjM4Mi0uMDc2LTEuMjczLDEuOTEtMS40NTIsMS4wMTktLjA3NiwxLjgzNC4xLDEuOTM2LjUwOVpNMy4xODEsMTYuMzc0QTUuMjc5LDUuMjc5LDAsMCwwLDIuMDEsMTkuOTlhNC4yMDYsNC4yMDYsMCwwLDAsMS42NTUsMy4wNTYsNCw0LDAsMCwwLDMuMzYyLjc5LDExLjQzNCwxMS40MzQsMCwwLDAsMS41LS40ODQsNC4yMzgsNC4yMzgsMCwwLDEtMi43NTEtMS4wMTksNC4xMyw0LjEzLDAsMCwxLTEuNzMyLTIuODI3QTMuNzksMy43OSwwLDAsMSw0LjY1OCwxNi41LDMuOTc3LDMuOTc3LDAsMCwxLDcuNDA5LDE1YTQuODA2LDQuODA2LDAsMCwxLDMuMjA5Ljk0Miw2Ljk1LDYuOTUsMCwwLDAtLjg2Ni0uODY2LDQuMSw0LjEsMCwwLDAtMy40NjQtLjY4OCw1LjIsNS4yLDAsMCwwLTMuMTA3LDEuOTg3Wk0xNi44MzMsMTAuNDlBNDAuODM3LDQwLjgzNywwLDAsMSw4LjUsOS43QzYuMjM3LDkuMTQsNS4wNCw4LjUyOSw1LjA0LDcuNzRjMC0uMzMxLjE1My0uNjExLjYxMS0uOTQyLTEuNDI2LjU2LTIuMTksMS4wMTktMi4xOSwxLjczMi4wNzYuNzksMS4zNSwxLjU3OSwzLjk0OCwyLjE5YTM5LjQ0MywzOS40NDMsMCwwLDAsOS4zNDcuOTQyQTM4Ljk5MywzOC45OTMsMCwwLDAsMjYuMSwxMC43MmMyLjYtLjYxMSwzLjg0Ni0xLjQyNiwzLjg0Ni0yLjE5LDAtLjU2LS41Ni0xLjEtMS41NzktMS41YS44NjIuODYyLDAsMCwxLC40MDguNjg4YzAsLjc5LTEuMTcyLDEuNDI2LTMuNTQsMS45NjFBMzkuMzI0LDM5LjMyNCwwLDAsMSwxNi44MzMsMTAuNDlabTkuMzczLDIuMTlhNDIuMzE1LDQyLjMxNSwwLDAsMS05LjM0Ny45NDIsNDQuMTQ0LDQ0LjE0NCwwLDAsMS05LjQyNC0uOTQyYy0yLjE5LS41Ni0zLjM2Mi0xLjE3Mi0zLjc2OS0xLjgwOGEyMy4xODYsMjMuMTg2LDAsMCwwLDIuNiw3LjY0MWMuOTQyLDEuNDI2LDEuODg1LDIuNjc0LDIuODI3LDQuMDI0YTkuODgzLDkuODgzLDAsMCwxLC44NjYsMi4zNjksNC41NTksNC41NTksMCwwLDAsMi42LDEuNzMyLDEwLjYxMSwxMC42MTEsMCwwLDAsNC4xNzcuNjExaC4xNTNhMTEuODM5LDExLjgzOSwwLDAsMCw0LjMtLjYxMSw0Ljg2OSw0Ljg2OSwwLDAsMCwyLjUyMS0xLjczMmguMDc2YTkuNTkyLDkuNTkyLDAsMCwxLC43OS0yLjM2OWMuOTQyLTEuMzUsMS44ODUtMi42LDIuODI3LTQuMDI0QTI0LjYyLDI0LjYyLDAsMCwwLDMwLDEwLjg3MkMyOS40OTEsMTEuNTg1LDI4LjMxOSwxMi4yLDI2LjIwNSwxMi42ODFaXCIgc3R5bGU9XCJmaWxsOiM2ZjRlMzdcIi8+YCxcbiAgXCJDcnlzdGFsXCI6IGA8cGF0aCBkPVwiTTI5Ljk0MSwxOS44MTYsMTkuOCwyOS45MjhjLS4wMjguMDI4LS4wODUuMDI4LS4xNjkuMDI4TDUuOCwyNi4yNjdjLS4wMjgsMC0uMDg0LS4wMjgtLjExMy0uMTEzTDIsMTIuMzUyYS40MTkuNDE5LDAsMCwxLC4wMjgtLjE2OUwxMi4xNjgsMi4wNzJjLjAyOC0uMDI4LjA4NC0uMDI4LjE2OS0uMDI4bDEzLjgzLDMuNzE4Yy4wMjgsMCwuMDg0LjAyOC4xMTMuMTEzbDMuNjksMTMuOEMzMC4wMjYsMTkuNzMyLDMwLDE5Ljc4OCwyOS45NDEsMTkuODE2Wk0xNi4zOTMsOC44MzIsMi44MTcsMTIuNDkzcS0uMDQyLDAsMCwuMDg0TDEyLjc2LDIyLjUyYy4wMjguMDI4LjAyOCwwLC4wODQsMEwxNi41MDYsOC45NzJDMTYuNDQ5LDguODMyLDE2LjM5Myw4LjgzMiwxNi4zOTMsOC44MzJaXCIgc3R5bGU9XCJmaWxsOiNjOGM4YzhcIi8+YCxcbiAgXCJDU1NcIjogYDxwb2x5Z29uIHBvaW50cz1cIjUuOTAyIDI3LjIwMSAzLjY1NiAyIDI4LjM0NCAyIDI2LjA5NSAyNy4xOTcgMTUuOTg1IDMwIDUuOTAyIDI3LjIwMVwiIHN0eWxlPVwiZmlsbDojMTU3MmI2XCIvPjxwb2x5Z29uIHBvaW50cz1cIjE2IDI3Ljg1OCAyNC4xNyAyNS41OTMgMjYuMDkyIDQuMDYxIDE2IDQuMDYxIDE2IDI3Ljg1OFwiIHN0eWxlPVwiZmlsbDojMzNhOWRjXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE2IDEzLjE5MSAyMC4wOSAxMy4xOTEgMjAuMzcyIDEwLjAyNiAxNiAxMC4wMjYgMTYgNi45MzUgMTYuMDExIDYuOTM1IDIzLjc1IDYuOTM1IDIzLjY3NiA3Ljc2NCAyMi45MTcgMTYuMjgyIDE2IDE2LjI4MiAxNiAxMy4xOTFcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cG9seWdvbiBwb2ludHM9XCIxNi4wMTkgMjEuMjE4IDE2LjAwNSAyMS4yMjIgMTIuNTYzIDIwLjI5MiAxMi4zNDMgMTcuODI3IDEwLjY3IDE3LjgyNyA5LjI0IDE3LjgyNyA5LjY3MyAyMi42OCAxNi4wMDQgMjQuNDM4IDE2LjAxOSAyNC40MzQgMTYuMDE5IDIxLjIxOFwiIHN0eWxlPVwiZmlsbDojZWJlYmViXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE5LjgyNyAxNi4xNTEgMTkuNDU1IDIwLjI5IDE2LjAwOCAyMS4yMiAxNi4wMDggMjQuNDM2IDIyLjM0NCAyMi42OCAyMi4zOTEgMjIuMTU4IDIyLjkyOCAxNi4xNTEgMTkuODI3IDE2LjE1MVwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE2LjAxMSA2LjkzNSAxNi4wMTEgOC44NTUgMTYuMDExIDEwLjAxOCAxNi4wMTEgMTAuMDI2IDguNTU1IDEwLjAyNiA4LjU1NSAxMC4wMjYgOC41NDUgMTAuMDI2IDguNDgzIDkuMzMxIDguMzQyIDcuNzY0IDguMjY4IDYuOTM1IDE2LjAxMSA2LjkzNVwiIHN0eWxlPVwiZmlsbDojZWJlYmViXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE2IDEzLjE5MSAxNiAxNS4xMTEgMTYgMTYuMjc0IDE2IDE2LjI4MiAxMi42MTEgMTYuMjgyIDEyLjYxMSAxNi4yODIgMTIuNjAxIDE2LjI4MiAxMi41MzkgMTUuNTg3IDEyLjM5OSAxNC4wMiAxMi4zMjUgMTMuMTkxIDE2IDEzLjE5MVwiIHN0eWxlPVwiZmlsbDojZWJlYmViXCIvPmAsXG4gIFwiQ1NWXCI6IGA8cGF0aCBkPVwiTTIyLjAzOCwySDYuMzc1YTEuNzU1LDEuNzU1LDAsMCwwLTEuNzUsMS43NXYyNC41QTEuNzU1LDEuNzU1LDAsMCwwLDYuMzc1LDMwaDE5LjI1YTEuNzU1LDEuNzU1LDAsMCwwLDEuNzUtMS43NVY2Ljg1NlptLjUyNSwyLjg0NCwxLjY2MywxLjUzMUgyMi41NjNaTTYuMzc1LDI4LjI1VjMuNzVIMjAuODEzVjguMTI1aDQuODEzVjI4LjI1WlwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPjxyZWN0IHg9XCI4LjEyNVwiIHk9XCIxNS4wOTdcIiB3aWR0aD1cIjEzLjA3NlwiIGhlaWdodD1cIjEuNzVcIiBzdHlsZT1cImZpbGw6IzgyOWVjMlwiLz48cmVjdCB4PVwiOC4xMjVcIiB5PVwiMjQuNDM5XCIgd2lkdGg9XCI5Ljc2MlwiIGhlaWdodD1cIjEuNzVcIiBzdHlsZT1cImZpbGw6IzgyOWVjMlwiLz48cmVjdCB4PVwiOC4xMjVcIiB5PVwiMTkuNzYzXCIgd2lkdGg9XCIxNS43NVwiIGhlaWdodD1cIjEuNzVcIiBzdHlsZT1cImZpbGw6IzgyOWVjMlwiLz48cmVjdCB4PVwiOC4xMjVcIiB5PVwiMTAuMjNcIiB3aWR0aD1cIjE1Ljc1XCIgaGVpZ2h0PVwiMS43NVwiIHN0eWxlPVwiZmlsbDojODI5ZWMyXCIvPmAsXG4gIFwiRFwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMTg1LjQ1NVwiIHkxPVwiMTYwMS42NDFcIiB4Mj1cIjE4MS45NTVcIiB5Mj1cIjE2MzAuMjI0XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTYyLjUyMyAtNjY2LjY0Nikgc2NhbGUoMC40MjcpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZmXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiIHN0b3Atb3BhY2l0eT1cIjBcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCIxNzYuMTM2XCIgeTE9XCIxNjAwLjVcIiB4Mj1cIjE3Mi42MzZcIiB5Mj1cIjE2MjkuMDgzXCIgeGxpbms6aHJlZj1cIiNhXCIvPjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2RsYW5nPC90aXRsZT48cGF0aCBkPVwiTTMuOTc4LDE1LjQ2MiwzLjk2OSw4LjUwOUEuNTg4LjU4OCwwLDAsMSw0LjUsNy45NDdhLjY1OC42NTgsMCwwLDEsLjA3NiwwbDYuMDc0LS4wMDlhMTUuNywxNS43LDAsMCwxLDYuMDY3Ljk1LDguOSw4LjksMCwwLDEsMi4yNDQsMS4zNTksNC40NjksNC40NjksMCwwLDEsMi45NDYtMS4wODMsNC4xMSw0LjExLDAsMCwxLDQuMjc2LDMuOTJBNC4xMSw0LjExLDAsMCwxLDIxLjkwNywxN2MtLjA4OSwwLS4xNzctLjAwOC0uMjY1LS4wMTJhNi42MTcsNi42MTcsMCwwLDEtLjIzMi45NTMsODUuMzgzLDg1LjM4MywwLDAsMSw4LjU5LDIuNlYySDJWMTUuNFEyLjk5MiwxNS40MiwzLjk3OCwxNS40NjJabTIyLjgtNy45NDRhMS4zMiwxLjMyLDAsMCwxLDEuMzc0LDEuMjU5LDEuMzc5LDEuMzc5LDAsMCwxLTIuNzQ3LDBBMS4zMiwxLjMyLDAsMCwxLDI2Ljc4LDcuNTE3WlwiIHN0eWxlPVwiZmlsbDojYjAzOTMxXCIvPjxwYXRoIGQ9XCJNMTcuODYxLDE1Ljc4N2E0LjExNCw0LjExNCwwLDAsMC0xLjc0OC0zLjQ1OCw1LjgxNCw1LjgxNCwwLDAsMC0xLjUwOC0uODIyLDcuMzU0LDcuMzU0LDAsMCwwLTEuNjI5LS40MzgsMjEuNjI5LDIxLjYyOSwwLDAsMC0yLjU4OC0uMWwtMi42MTksMCwuMDA2LDQuNzM3YTg4LjgyNyw4OC44MjcsMCwwLDEsOS45MSwxLjQwOEE0LjkxOSw0LjkxOSwwLDAsMCwxNy44NjEsMTUuNzg3WlwiIHN0eWxlPVwiZmlsbDojYjAzOTMxXCIvPjxwYXRoIGQ9XCJNMjAuOTkzLDE4Ljk3OWE3LjkwNiw3LjkwNiwwLDAsMS0yLjEyOCwyLjU4Miw5LjczOSw5LjczOSwwLDAsMS0zLjI1NiwxLjcxLDExLjU1OCwxMS41NTgsMCwwLDEtMS45NzEuNDcyaC0uMDE1YTMxLjg1NywzMS44NTcsMCwwLDEtMy4zMjYuMTExbC01LjYyNS4wMjJhLjYxNi42MTYsMCwwLDEtLjY4Ni0uNjgxbC0uMDEtNy43MzRRMi45OTIsMTUuNDIsMiwxNS40VjMwSDMwVjIwLjU0NGE4NS4zODMsODUuMzgzLDAsMCwwLTguNTktMi42QTYuOTg1LDYuOTg1LDAsMCwxLDIwLjk5MywxOC45NzlaXCIgc3R5bGU9XCJmaWxsOiNiMDM5MzFcIi8+PHBhdGggZD1cIk0yMC45OTMsMTguOTc5YTcuOTA2LDcuOTA2LDAsMCwxLTIuMTI4LDIuNTgyLDkuNzM5LDkuNzM5LDAsMCwxLTMuMjU2LDEuNzEsMTEuNTU4LDExLjU1OCwwLDAsMS0xLjk3MS40NzJoLS4wMTVhMzEuODU3LDMxLjg1NywwLDAsMS0zLjMyNi4xMTFsLTUuNjI1LjAyMmEuNjE2LjYxNiwwLDAsMS0uNjg2LS42ODFsLS4wMS03LjczNFEyLjk5MiwxNS40MiwyLDE1LjRWMzBIMzBWMjAuNTQ0YTg1LjM4Myw4NS4zODMsMCwwLDAtOC41OS0yLjZBNi45ODUsNi45ODUsMCwwLDEsMjAuOTkzLDE4Ljk3OVpcIiBzdHlsZT1cIm9wYWNpdHk6MC4zMDAwMDAwMTE5MjA5Mjk7aXNvbGF0aW9uOmlzb2xhdGU7ZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMTAuNDc3LDIwLjgzNWExNi4wMTQsMTYuMDE0LDAsMCwwLDIuODc3LS4yLDcuNjMzLDcuNjMzLDAsMCwwLDEuNjI4LS41LDUuNjI4LDUuNjI4LDAsMCwwLDEuMTg3LS43NDgsNC40NTcsNC40NTcsMCwwLDAsMS41MTgtMi4yNzEsODguNjkxLDg4LjY5MSwwLDAsMC05LjkxLTEuNDA4bC4wMDYsNS4xMzNaXCIgc3R5bGU9XCJmaWxsOiNiMDM5MzFcIi8+PHBhdGggZD1cIk0xMC40NzcsMjAuODM1YTE2LjAxNCwxNi4wMTQsMCwwLDAsMi44NzctLjIsNy42MzMsNy42MzMsMCwwLDAsMS42MjgtLjUsNS42MjgsNS42MjgsMCwwLDAsMS4xODctLjc0OCw0LjQ1Nyw0LjQ1NywwLDAsMCwxLjUxOC0yLjI3MSw4OC42OTEsODguNjkxLDAsMCwwLTkuOTEtMS40MDhsLjAwNiw1LjEzM1pcIiBzdHlsZT1cIm9wYWNpdHk6MC4zMDAwMDAwMTE5MjA5Mjk7aXNvbGF0aW9uOmlzb2xhdGU7ZmlsbDp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNMjAuMzgzLDExLjc0NmE2Ljk5Myw2Ljk5MywwLDAsMSwxLjM2LDQuMTQ4LDYuNjE4LDYuNjE4LDAsMCwxLS4xLDEuMWMuMDg4LDAsLjE3Ni4wMTIuMjY1LjAxMmE0LjExLDQuMTEsMCwwLDAsNC4yNzYtMy45Miw0LjExLDQuMTEsMCwwLDAtNC4yNzYtMy45Miw0LjQ3LDQuNDcsMCwwLDAtMi45NDYsMS4wODNBOC4xMjMsOC4xMjMsMCwwLDEsMjAuMzgzLDExLjc0NlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48ZWxsaXBzZSBjeD1cIjI2Ljc4XCIgY3k9XCI4Ljc3N1wiIHJ4PVwiMS4zNzRcIiByeT1cIjEuMjU5XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk00LjY3MywyMy44NzdsNS42MjUtLjAyMmEzMS44NzEsMzEuODcxLDAsMCwwLDMuMzI2LS4xMTFoLjAxNWExMS40OSwxMS40OSwwLDAsMCwxLjk3MS0uNDcyLDkuNzM5LDkuNzM5LDAsMCwwLDMuMjU2LTEuNzEsNy45MDYsNy45MDYsMCwwLDAsMi4xMjgtMi41ODIsNi45ODUsNi45ODUsMCwwLDAsLjQxNy0xLjAzNCw3LjA1Niw3LjA1NiwwLDAsMCwuMzMyLTIuMDUxLDYuOTkyLDYuOTkyLDAsMCwwLTEuMzYtNC4xNDgsOC4xLDguMSwwLDAsMC0xLjQyMS0xLjUsOC44NzgsOC44NzgsMCwwLDAtMi4yNDQtMS4zNTksMTUuNjg2LDE1LjY4NiwwLDAsMC02LjA2Ny0uOTVsLTYuMDc0LjAwOWEuNjU4LjY1OCwwLDAsMC0uMDc2LDAsLjU4OC41ODgsMCwwLDAtLjUzMi41NjJsLjAwOSw2Ljk1Mi4wMSw3LjczNEEuNjE2LjYxNiwwLDAsMCw0LjY3MywyMy44NzdabTMuMS0xMi45MDgsMi42MTksMGEyMS42MjMsMjEuNjIzLDAsMCwxLDIuNTg4LjEsNy4zNTQsNy4zNTQsMCwwLDEsMS42MjkuNDM4LDUuODE0LDUuODE0LDAsMCwxLDEuNTA4LjgyMiw0LjExNiw0LjExNiwwLDAsMSwxLjc0OCwzLjQ1OCw0LjkwNSw0LjkwNSwwLDAsMS0uMTc1LDEuMzI3LDQuNDU3LDQuNDU3LDAsMCwxLTEuNTE4LDIuMjcxLDUuNjEzLDUuNjEzLDAsMCwxLTEuMTg3Ljc0OCw3LjY2Niw3LjY2NiwwLDAsMS0xLjYyOC41LDE2LjAwOSwxNi4wMDksMCwwLDEtMi44NzcuMmwtMi42OTQsMC0uMDA2LTUuMTMzWlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG4gIFwiRGFydFwiOiBgPHBhdGggZD1cIk0xNi43MzksMi4wMzdhMS4zMTQsMS4zMTQsMCwwLDAtLjkxNi4zNzdsLS4wMTMuMDFMNy4yMiw3LjM4OWw4LjU2Niw4LjU2NnYuMDA2bDEwLjMsMTAuMywxLjk2My0zLjUzNkwyMC45NjgsNS43MjhsLTMuMy0zLjNhMS4zMDcsMS4zMDcsMCwwLDAtLjkyNy0uMzg4WlwiIHN0eWxlPVwiZmlsbDojNjZjM2ZhXCIvPjxwYXRoIGQ9XCJNNy4yNSw3LjM1LDIuMjg4LDE1LjkzMWwtLjAxLjAxM2ExLjMyMiwxLjMyMiwwLDAsMC0uMzc4LjkxOSwxLjMsMS4zLDAsMCwwLC4zODcuOTI0TDYuNCwyMS45bDE2LjA4NCw2LjMyNywzLjYzNi0yLjAyLS4xLS4xLS4wMjUsMC0xMC4wODMtMTAuMUgxNS45TDcuMjUsNy4zNVpcIiBzdHlsZT1cImZpbGw6IzIxNTg5NlwiLz48cGF0aCBkPVwiTTcuMTkyLDcuMzYybDguNzY0LDguNzczaC4wMTNsMTAuMDg3LDEwLjEsMy44MzktLjczMkwyOS45LDE0LjE0bC00LjA1NC0zLjk3M2E2LjUyMSw2LjUyMSwwLDAsMC0zLjYyNC0xLjYxNmwwLS4wNDRMNy4xOTIsNy4zNjJaXCIgc3R5bGU9XCJmaWxsOiMyMzU5OTdcIi8+PHBhdGggZD1cIk03LjI1Niw3LjQxMWw4Ljc2OCw4Ljc2OHYuMDEzTDI2LjExNiwyNi4yODRsLS43MzQsMy44MzlIMTQuMDIybC0zLjk3MS00LjA1NmE2LjUyMiw2LjUyMiwwLDAsMS0xLjYxNC0zLjYyNWwtLjA0NCwwTDcuMjU2LDcuNDExWlwiIHN0eWxlPVwiZmlsbDojNThiNmYwXCIvPmAsXG4gIFwiRGhhbGxcIjogYDxwYXRoIGQ9XCJNMTYsMi4wN0ExMy45MywxMy45MywwLDEsMSwyLDE2LDEzLjkzLDEzLjkzLDAsMCwxLDE2LDIuMDdaTTEzLjI4LDIyLjMyYTEuNDksMS40OSwwLDEsMS0xLDEuODNBMS40OSwxLjQ5LDAsMCwxLDEzLjI4LDIyLjMyWm04LTE1LjY4YS41My41MywwLDAsMSwuMzguNjYuNTIuNTIsMCwwLDEtLjY1LjM4bC0uNS0uMTNhNDIuNjcsNDIuNjcsMCwwLDAtLjM3LDcuMDdDMTguMDYsMTYuNDUsMTQuMzksMjIsMTQuMzksMjJsMS45My03LjE4YTEsMSwwLDAsMCwuODktLjY1LjkxLjkxLDAsMCwwLTEuNzUtLjQ3LDEsMSwwLDAsMCwuNDUsMUwxNCwyMS44NWE2OC4zOCw2OC4zOCwwLDAsMC0xLjM0LTkuMjUsMzQuMjgsMzQuMjgsMCwwLDAsMy4yMS02LjMxbC0uNS0uMTNBLjU1LjU1LDAsMCwxLDE1LDUuNWEuNTMuNTMsMCwwLDEsLjY2LS4zOGw1LjY4LDEuNTJaXCIgc3R5bGU9XCJmaWxsOiNiN2I3Yjc7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+YCxcbiAgXCJEaWZmXCI6IGA8cmVjdCB4PVwiNi45NzVcIiB5PVwiM1wiIHdpZHRoPVwiMTguMDVcIiBoZWlnaHQ9XCI2LjAxN1wiIHN0eWxlPVwiZmlsbDojYzAwMDAwXCIvPjxwYXRoIGQ9XCJNMTIuOTkyLDEwLjk1djYuMDE3SDYuOTc1djYuMDE3aDYuMDE3VjI5aDYuMDE3VjIyLjk4M2g2LjAxN1YxNi45NjdIMTkuMDA4VjEwLjk1WlwiIHN0eWxlPVwiZmlsbDpncmVlblwiLz5gLFxuICBcIkRqYW5nby9KaW5qYTJcIjogYDxkZWZzPjxyYWRpYWxHcmFkaWVudCBpZD1cImFcIiBjeD1cIjE2XCIgY3k9XCItMTE5LjI4M1wiIHI9XCIxMy41XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMSwgMCwgMCwgLTAuOTQ1LCAwLCAtOTYuNzM1KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzU3NTc1N1wiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMyZjJmMmZcIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9qaW5qYTwvdGl0bGU+PHBhdGggZD1cIk0yOS4zNCwzLjI0MWEzOC4yNzEsMzguMjcxLDAsMCwxLTkuNDUxLDMuMDRjLTQuMjQxLjU1LTEyLjMyOSwxLjEtMTMuOTM1LjcxMkEyMy4zLDIzLjMsMCwwLDEsMy4yLDYuMTUxbC4zMzQsMS4xMzJMMi41LDguMTg4bC4xODMuMzIzLjQyNC4wMzIsMS4zLjE2Mi4xODMuNTgyLjcyNy4wNjYuMzY0LDEuMjI4czEuNTQ0LjEzLDIsLjEzLDEuMzYzLS4wNjQsMS4zNjMtLjA2NGwuMDMuNDg1LjMzNC4wNjR2LjU1bC0uNzI4LjY0OC4xODMuMDMydi4yMjVhMTUuODE2LDE1LjgxNiwwLDAsMS0yLjMuMDM0Yy0uNjY2LS4xLS43ODgtLjEtLjc4OC0uMWwtLjA2LjA2NC0uMDMuMjkxaC4xNTFsLjA2LDEuMjYyLDMuMzYzLS4xMy0uMjQzLDQuMzY1LS4wMy41NDktMi44NDgtLjE2Mi0uMDMtMS4xNjRoLjYzNWwuMDYxLS40NTMuNTc1LS4xMy4wOTEtLjEyOC0yLjE1MS0uNTE4LTEuNjM2LjQ4NS4yNzMuMjI3aC4yNzNsLjAzLjM4OS41NzUuMDMyVjE4LjdsLS42MzUuMTYyLjEyMS4yNTcuMTUxLjF2Ljg3M2guMzk0djQuMDQxbC0uNjM3LjEuMDkxLDEuMTY0LjM5My4wNjYtLjA2LDIuNjUxLDEuNzI3LjAzMi0uMzY0LTIuNjE5LDIuNjA1LS4wNjQtLjE4MSwxLjQyMi0uMjQzLDEsMi42MzUuMDMyLjAzLTIuNTg2LDEuODE3LS4xNjItLjA5LDEuNjQ5LS4wNjEuOTY5aDEuNTQ2bC0uMDYxLTIuNjUxLjIxMy4wMzQuMDYtMS4yNjJoLS4yNDNsLS4wOS0uNTE4TDEzLjgsMjEuOWwuMDYtMS43MTNoLjMzM1YxOS4xNDlsLS40MjQuMDMyLjA2MS0xLjIyLjQ5My0uMDQ5LjAyMy0uNC4yOC0uMDQxLjI4Ny0uMjE4TDEzLjE4NywxNi45bC0xLjcxMi4zNzkuMTY3LjI3NC4xODEtLjAxNS4yMTEtLjAwOC4wMzkuNS40NzctLjAyMy4wMDksMS4wODItMi4wNTMtLjA0Ny4wNjktMS4xNTYuMDY3LTEuMDUxVjE1LjQ1NUwxMC43LDE0bDQuMTExLS4yMSw0Ljg5Mi0uMjgyLjA0Ni45MjktLjE3NCwyLjIzMUwxOS41LDE4Ljc0NGwtMS44LS4wMzItLjAwOS0xLjQ1NS42NjctLjAyNC4wMy0uNDExLjI3My0uMDQxLS4wMTQtLjA4MS4yNzMtLjAxNS4xNTEtLjJMMTcuMDM0LDE2LDE1LDE2LjQ0bC4xNDQuMjUxLjIyNy0uMDE3di4xMTRoLjI4di40NmwuNi4wMDgtLjAwNywxLjI3N2gtLjYwNWwtLjAwOS4yOTEuMjEzLjAyNC0uMDIzLDEuMTA4LjQ0Ny4wMjQtLjA1Myw0LjM5LS41OTEuMTIuMDA3LjIxaC4yMDZ2MS4xMjRoLjM0bC0uMDksMS41MzZMMTUuOTc0LDI4LjdsMi4xNTEuMDU2LS4wNjktMS4xNjQtLjE1OC0uOTY5LS4wMzEtLjg0MSwxLjgyNi0uMDMyLS4wNTMsMS4zLS4wMDksMS4zNzQsMS4wMzEuMDgxLDEuNC0uMDU2LjQ0LS4xMy0uMjQzLS43MzYtLjA2LTEuMTU2LS4xMTQtLjgyNCwxLjc0Mi0uMDY0LS4wNzYsMS4wMS0uMDA3LDEuNTg1LjcuMDY0LjY5LS4wMTUuMzMzLS4xMDUtLjItMS41TDI1LjIsMjUuNDQ1bC4zLS4wMzJMMjUuNSwyNC40bC4wODMtLjAxNy0uMDE0LS4yMThoLS4zNDFsLS4wNjktLjc0NEwyNS4xMywyMC4ybC4yNTctLjAwOFYxOS4xMzNsLjEwNy4wMTd2LS4yMWwtLjM4LS4wMzQuMDA5LTEuMjI4LjYzNS0uMDU2LS4wMzctLjQxMy4yOC0uMDI0LS4wMTYtLjA4MS4zNzEtLjE4Ni0xLjg4Ni0uMzc5LTEuOTE2LjM4OS4xMjEuMjI2LjMtLjAyNC4wMTYuMWguMjVsLjAxNC40ODUuNjIxLS4wMDguMDUzLDEuMTg4LTIuMi0uMDE3LS4yNTctMS43ODYtLjIwNi0uOTQ2LS4xNjYtMS43LjEtLjk5Myw0LjM3Ny0uMzMyLjAxNC0xLjQ3OS4yMi0uMDU2LS4wMTQtLjIyNS0uMTY3LS4xcy0yLjM5My4zNTUtMy4xNTEuNDM2bC0uMzcxLjA0LS4wMjMtLjI3NC0uOTA1LS40NzQuMDExLS41NTIuMzExLS4wMDkuMDIzLS43NTlhMjQuODA3LDI0LjgwNywwLDAsMCwyLjU0NC0uMjgzYy42ODktLjE2MiwxLjY2Ni0uMzIzLDEuNjY2LS4zMjNMMjYuMiw3LjgwOWwuOTE3LS4yNjcuMDc2LS4yMSwyLjA3NC0uNTc0LjIzNi0uMTk0LS43ODgtMS43MjIuMDc2LS4zODkuNC0uMjEuMjg4LS44ODFaTTE5LjM3NCw5LjhsLS4wMTEuNjI2LjQ3LjAyLS4wMy41OTQtLjkyMS42LS4wNTcuMTc0LjM3MSwwLDAsLjE0Ni0yLjgxNC4xMzcuMDE5LS40MTYuMTI4LS4yMDcuMDA5LS4xMzMsMC0uMjg2LjA4LS4xOS4wMy0uMTU0di0uMTFsLjEyMS0uNDg1Wm0tNS44ODUuNTMzLS4wNjkuNDIxLjIyLjI1OS0uMDE0LjQ1My4yLjMxNS0uMDUzLjM3Mi4xNTEuMjE4LTIuODcxLjExMy0uMDA3LS4xLjMzMy0uMDQxLjAxNi0uMTIyLS43MjctLjM5NS0uMDM5LS42MzEuMzQ4LS4wMTcuMDMtLjY4Wm00LjI0OSw5LjcsMS43NDIuMTEzTDE5LjQyLDIyLjVsLjIyNywxLjkyM0wxNy44LDI0LjM1NFptLTExLjY2My4xLDIuNzg4LjE0NUw4LjYyLDIxLjl2MS4zNTlsLjIuNzU5LTIuNzI3LjEzWm0xNy44NDMuMDE1djQuMDFsLTEuNzcyLjEzLS4wNjEtMi4xMTgtLjItMS45NzNaTTEwLjUsMjAuMjRsMi4wNi4wMDguMDIxLDMuNzE4TDEwLjY1NywyNGwtLjEtMS4yMDUtLjAwNy0xLjJaXCIgc3R5bGU9XCJzdHJva2U6cmVkO3N0cm9rZS13aWR0aDowLjVweDtmaWxsOnVybCgjYSlcIi8+YCxcbiAgXCJEb2NrZXJcIjogYDxwYXRoIGQ9XCJNMTYuNTQsMTIuNjYzSDE5LjR2Mi45MjRoMS40NDZhNi4yNzIsNi4yNzIsMCwwLDAsMS45ODgtLjMzMyw1LjA5MSw1LjA5MSwwLDAsMCwuOTY2LS40MzYsMy41ODQsMy41ODQsMCwwLDEtLjY3LTEuODQ5LDMuOTA3LDMuOTA3LDAsMCwxLC43LTIuNzUzbC4zLS4zNDguMzU4LjI4OGE0LjU1OCw0LjU1OCwwLDAsMSwxLjc5NSwyLjg5Miw0LjM3NSw0LjM3NSwwLDAsMSwzLjMxOS4zMDlsLjM5My4yMjYtLjIwNy40YTQuMTQxLDQuMTQxLDAsMCwxLTQuMTU3LDEuOTgzYy0yLjQ4LDYuMTY4LTcuODcxLDkuMDg4LTE0LjQwOSw5LjA4OC0zLjM3OCwwLTYuNDc2LTEuMjYzLTguMjQxLTQuMjU5bC0uMDI5LS4wNDlMMi43LDIwLjIyN2E4LjMxNiw4LjMxNiwwLDAsMS0uNjU5LTQuMjA4bC4wNC0uNDMzSDQuNTI2VjEyLjY2M0g3LjM4N1Y5LjhoNS43MjFWNi45NDJIMTYuNTR2NS43MjFaXCIgc3R5bGU9XCJmaWxsOiMwMDk2ZTZcIi8+PHBhdGggZD1cIk0xMi4wMDYsMjQuNTY3YTYuMDIyLDYuMDIyLDAsMCwxLTMuMTQtMy4wODksMTAuMzI5LDEwLjMyOSwwLDAsMS0yLjI2NC4zNDNxLS41LjAyOC0xLjA0NS4wMjgtLjYzMiwwLTEuMzMxLS4wMzdhOS4wNTEsOS4wNTEsMCwwLDAsNywyLjc2OVExMS42MTgsMjQuNTgxLDEyLjAwNiwyNC41NjdaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk03LjA4LDEzLjM0NmguMnYyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdINi43VjEzLjM0NlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yWm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNjgsMGguMnYyLjA2N2gtLjJWMTMuMzQ2Wk01LDEzLjE0SDcuNDgydjIuNDc5SDVabTIuODU5LTIuODYxaDIuNDh2Mi40NzlINy44NjNabTIuMDc3LjIwN2guMnYyLjA2NmgtLjJabS0uMzc2LDBoLjJ2Mi4wNjZoLS4yWm0tLjM3NiwwaC4ydjIuMDY2aC0uMlYxMC40ODZabS0uMzc2LDBoLjJ2Mi4wNjZoLS4yWm0tLjM3NiwwaC4ydjIuMDY2aC0uMlptLS4zNjgsMGguMnYyLjA2NmgtLjJabS0uMjA3LDIuNjUzaDIuNDh2Mi40OEg3Ljg2M1YxMy4xNFptMi4wNzcuMjA3aC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yVjEzLjM0NlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yWm0tLjM2OCwwaC4ydjIuMDY3aC0uMlptMi42NTQtLjIwN0gxMy4ydjIuNDhoLTIuNDhWMTMuMTRabTIuMDc2LjIwN0gxM3YyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yWm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yWm0tLjM2OCwwaC4ydjIuMDY3aC0uMlptLS4yMDYtMy4wNjdIMTMuMnYyLjQ3OWgtMi40OFYxMC4yNzlabTIuMDc2LjIwN0gxM3YyLjA2NmgtLjJabS0uMzc2LDBoLjJ2Mi4wNjZoLS4yWm0tLjM3NiwwaC4ydjIuMDY2aC0uMlptLS4zNzYsMGguMnYyLjA2NmgtLjJabS0uMzc2LDBoLjJ2Mi4wNjZoLS4yWm0tLjM2OCwwaC4ydjIuMDY2aC0uMlptMi42NTQsMi42NTNoMi40Nzl2Mi40OGgtMi40OFYxMy4xNFptMi4wNzYuMjA3aC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yWm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzY4LDBoLjE5MnYyLjA2N2gtLjJWMTMuMzQ2Wm0tLjIwNi0zLjA2N2gyLjQ3OXYyLjQ3OWgtMi40OFYxMC4yNzlabTIuMDc2LjIwN2guMnYyLjA2NmgtLjJabS0uMzc2LDBoLjJ2Mi4wNjZoLS4yWm0tLjM3NiwwaC4ydjIuMDY2aC0uMlptLS4zNzYsMGguMnYyLjA2NmgtLjJabS0uMzc2LDBoLjJ2Mi4wNjZoLS4yWm0tLjM2OCwwaC4xOTJ2Mi4wNjZoLS4yVjEwLjQ4NlptLS4yMDYtMy4wNjdoMi40NzlWOS45aC0yLjQ4VjcuNDE5Wm0yLjA3Ni4yMDZoLjJWOS42OTFoLS4yWm0tLjM3NiwwaC4yVjkuNjkxaC0uMlptLS4zNzYsMGguMlY5LjY5MWgtLjJabS0uMzc2LDBoLjJWOS42OTFoLS4yWm0tLjM3NiwwaC4yVjkuNjkxaC0uMlptLS4zNjgsMGguMTkyVjkuNjkxaC0uMlY3LjYyNVptMi42NTQsNS41MTRoMi40Nzl2Mi40OGgtMi40OFYxMy4xNFptMi4wNzYuMjA3aC4xOTV2Mi4wNjdoLS4yVjEzLjM0NlptLS4zNzYsMGguMjA2djIuMDY3aC0uMjA2Wm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yMDVWMTMuMzQ2Wm0tLjM2OCwwaC4ydjIuMDY3aC0uMTk0VjEzLjM0NlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTEwLjE4OCwxOS42MzhhLjY4NC42ODQsMCwxLDEtLjY4NC42ODRBLjY4NC42ODQsMCwwLDEsMTAuMTg4LDE5LjYzOFptMCwuMTk0YS40ODkuNDg5LDAsMCwxLC4xNzcuMDMzLjIuMiwwLDEsMCwuMjc1LjI2OS40OS40OSwwLDEsMS0uNDUzLS4zWlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG4gIFwiRE9UIChHcmFwaHZpeilcIjogYDxwb2x5Z29uIHBvaW50cz1cIjIzLjk0MiAzMCAxMi42NzkgMzAgMS40MTcgMzAgMS40MTcgMTYgMS40MTcgMiAxMi42NzkgMiAyMy45NDIgMiAyMy45NDIgMTYgMjMuOTQyIDMwXCIgc3R5bGU9XCJmaWxsOiNlNmU2ZTZcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjMuMjAyXCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCI3LjQyXCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIxMS42MzhcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjE1Ljg1NlwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMjAuMDc0XCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIyNC4yOTNcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjI4LjUxMVwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMlwiIHk9XCIzLjIwMlwiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS41NzNcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiNi4yMThcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjEwLjQzNlwiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMTQuNjU1XCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIxOC44NzNcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIzLjA5MVwiIHk9XCIzLjIwMlwiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS41NzNcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48ZyBzdHlsZT1cIm9wYWNpdHk6MC41XCI+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjI3LjQ1NlwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMjYuNDAyXCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIyNS4zNDdcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjIzLjIzOFwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMjIuMTg0XCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIyMS4xMjlcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjE5LjAyXCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIxNy45NjVcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjE2LjkxMVwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMTQuODAyXCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIxMy43NDdcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjEyLjY5M1wiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMTAuNTgzXCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCI5LjUyOVwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiOC40NzRcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjYuMzY1XCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCI1LjMxMVwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiNC4yNTZcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PC9nPjxnIHN0eWxlPVwib3BhY2l0eTowLjVcIj48cmVjdCB4PVwiMjIuMDM2XCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyMC45ODJcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjE5LjkyN1wiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMTcuODE4XCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIxNi43NjRcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjE1LjcwOVwiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMTMuNlwiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMTIuNTQ1XCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIxMS40OTFcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjkuMzgyXCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCI4LjMyN1wiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiNy4yNzNcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjUuMTY0XCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCI0LjEwOVwiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMy4wNTVcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PC9nPjxwYXRoIGQ9XCJNMTMsOC45NzZjLTIuMzA4LDAtNC4xMzEtMS4yNzQtNC4xOTMtMi45NjloMGEyLjc3NSwyLjc3NSwwLDAsMSwxLjI1My0yLjMyLDUuMyw1LjMsMCwwLDEsMi45NDMtLjk2Myw1LjI5NCw1LjI5NCwwLDAsMSwzLjAwNi43NDMsMi43NzUsMi43NzUsMCwwLDEsMS40MjEsMi4yMjFjLjA2NSwxLjc1Mi0xLjc3OSwzLjE5NC00LjIsMy4yODNDMTMuMTU4LDguOTc0LDEzLjA4LDguOTc2LDEzLDguOTc2Wm0uMjMyLTUuMnEtLjA5NSwwLS4xOSwwYTQuMjM4LDQuMjM4LDAsMCwwLTIuMzU0Ljc1NiwxLjc2MSwxLjc2MSwwLDAsMC0uODI4LDEuNDM1QzkuOSw3LjA5LDExLjQyOCw3Ljk3OCwxMy4yLDcuOTE3czMuMjIzLTEuMDY5LDMuMTgxLTIuMTkxYTEuNzYxLDEuNzYxLDAsMCwwLS45MzItMS4zNjlBNC4xNjUsNC4xNjUsMCwwLDAsMTMuMjM0LDMuNzczWlwiIHN0eWxlPVwiZmlsbDojNjU2NTY1XCIvPjxwYXRoIGQ9XCJNNi40LDI5LjI4MUE1LjIzOCw1LjIzOCwwLDAsMSwzLjYsMjguNTE5YTIuNzc1LDIuNzc1LDAsMCwxLTEuNDEtMi4yMjljLS4wNTYtMS43NTIsMS44LTMuMTg1LDQuMjEzLTMuMjYyczQuMzU2LDEuMjM2LDQuNDEyLDIuOTg4QTIuNzc1LDIuNzc1LDAsMCwxLDkuNTQ4LDI4LjMzYTUuMyw1LjMsMCwwLDEtMi45NDguOTQ4UTYuNSwyOS4yODEsNi40LDI5LjI4MVptLjE4Ni01LjItLjE1NiwwYy0xLjc2Ni4wNTYtMy4yMjksMS4wNTItMy4xOTMsMi4xNzRhMS43NjEsMS43NjEsMCwwLDAsLjkyNCwxLjM3NCw0LjIzNSw0LjIzNSwwLDAsMCwyLjQuNTkzLDQuMjM1LDQuMjM1LDAsMCwwLDIuMzU3LS43NDQsMS43NjEsMS43NjEsMCwwLDAsLjgzNS0xLjQzQzkuNzI0LDI0Ljk2MSw4LjI5LDI0LjA4LDYuNTkxLDI0LjA4WlwiIHN0eWxlPVwiZmlsbDojNjU2NTY1XCIvPjxwYXRoIGQ9XCJNMTkuMjYxLDI5LjI2YTUuMjM4LDUuMjM4LDAsMCwxLTIuODA3LS43NjIsMi43NzUsMi43NzUsMCwwLDEtMS40MS0yLjIyOWgwYy0uMDU1LTEuNzUyLDEuOC0zLjE4NSw0LjIxMy0zLjI2MmE1LjMsNS4zLDAsMCwxLDMsLjc1OUEyLjYsMi42LDAsMCwxLDIyLjQsMjguMzFhNS4zLDUuMywwLDAsMS0yLjk0OC45NDhRMTkuMzU4LDI5LjI2LDE5LjI2MSwyOS4yNlpNMTYuMSwyNi4yMzZhMS43NjEsMS43NjEsMCwwLDAsLjkyNCwxLjM3NCw0LjU3LDQuNTcsMCwwLDAsNC43NTctLjE1MSwxLjU1OCwxLjU1OCwwLDAsMC0uMDg5LTIuOCw0LjIyNiw0LjIyNiwwLDAsMC0yLjQtLjU5M2MtMS43NjYuMDU2LTMuMjI4LDEuMDUyLTMuMTkzLDIuMTc0WlwiIHN0eWxlPVwiZmlsbDojNjU2NTY1XCIvPjxwYXRoIGQ9XCJNNi4yLDIzLjQ3N0EyNy40LDI3LjQsMCwwLDEsOS43NjksOC45ODZsLjY4Ny4zOTFBMjYuNjA5LDI2LjYwOSwwLDAsMCw2Ljk4NiwyMy40NVpcIiBzdHlsZT1cImZpbGw6IzY1NjU2NVwiLz48cGF0aCBkPVwiTTEwLjg1Myw3Ljk1N2E3LjE3MSw3LjE3MSwwLDAsMC0uMDc1LDIuMzJsLS43NTgtLjkzLTEuMTc4LS4yM0E3LjE2NSw3LjE2NSwwLDAsMCwxMC44NTMsNy45NTdaXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHBhdGggZD1cIk0xOS44NTQsMjMuNDc3bC0uNzktLjAyN2EyNi41OSwyNi41OSwwLDAsMC0uOTE1LTcuODg0LDI2LjYyNCwyNi42MjQsMCwwLDAtMi41NTQtNi4xODlsLjY4Ny0uMzkxYTI3LjQyMywyNy40MjMsMCwwLDEsMi42Myw2LjM3M0EyNy4zNzIsMjcuMzcyLDAsMCwxLDE5Ljg1NCwyMy40NzdaXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHBhdGggZD1cIk0xNS4yLDcuOTU3YTcuMTcxLDcuMTcxLDAsMCwwLDIuMDExLDEuMTU5bC0xLjE3OC4yMy0uNzU4LjkzQTcuMTY1LDcuMTY1LDAsMCwwLDE1LjIsNy45NTdaXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHJlY3QgeD1cIjExLjM0OFwiIHk9XCI5Ljk0NVwiIHdpZHRoPVwiMy41MTVcIiBoZWlnaHQ9XCIwLjc5MVwiIHRyYW5zZm9ybT1cIm1hdHJpeCgwLjAxNiwgLTEsIDEsIDAuMDE2LCAyLjU1NywgMjMuMjc5KVwiIHN0eWxlPVwiZmlsbDojNjU2NTY1XCIvPjxwYXRoIGQ9XCJNMTMuMDU0LDEzLjUyOWE3LjE3MSw3LjE3MSwwLDAsMC0xLjEtMi4wNDZsMS4xMjIuNDI2LDEuMTM1LS4zOUE3LjE2NSw3LjE2NSwwLDAsMCwxMy4wNTQsMTMuNTI5WlwiIHN0eWxlPVwiZmlsbDojNjU2NTY1XCIvPjxyZWN0IHg9XCI3LjgwOVwiIHk9XCIyMC4wODFcIiB3aWR0aD1cIjQuNzU3XCIgaGVpZ2h0PVwiMC43OTFcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTEyLjU2IDE4LjEwOCkgcm90YXRlKC01Ny42MDMpXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHBhdGggZD1cIk04LjE0NywyMy42OTRhNy4xNzEsNy4xNzEsMCwwLDAsLjEzMy0yLjMxN2wuNzM0Ljk0OSwxLjE3MS4yNkE3LjE2NSw3LjE2NSwwLDAsMCw4LjE0NywyMy42OTRaXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHJlY3QgeD1cIjE1LjQxOFwiIHk9XCIxOC4wNTFcIiB3aWR0aD1cIjAuNzkxXCIgaGVpZ2h0PVwiNC45MTlcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTguMjU3IDEwLjk1MSkgcm90YXRlKC0zMC43MDgpXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHBhdGggZD1cIk0xNy44LDIzLjg1NmE3LjE3MSw3LjE3MSwwLDAsMC0yLjAwNi0xLjE2OGwxLjE3OS0uMjI1Ljc2Mi0uOTI3QTcuMTY1LDcuMTY1LDAsMCwwLDE3LjgsMjMuODU2WlwiIHN0eWxlPVwiZmlsbDojNjU2NTY1XCIvPjxwYXRoIGQ9XCJNMTMuMDI0LDE5LjEyNWE1LjIzOCw1LjIzOCwwLDAsMS0yLjgwNy0uNzYyLDIuNzc1LDIuNzc1LDAsMCwxLTEuNDEtMi4yMjksMi43NzUsMi43NzUsMCwwLDEsMS4yNjYtMi4zMTQsNS4zLDUuMywwLDAsMSwyLjk0OC0uOTQ4LDYuNzEyLDYuNzEyLDAsMCwxLDIuMTM0LjMxM2wtLjMzMSwxYTUuNjY4LDUuNjY4LDAsMCwwLTEuNzY5LS4yNjEsNC4yMzgsNC4yMzgsMCwwLDAtMi4zNTguNzQ0LDEuNzYxLDEuNzYxLDAsMCwwLS44MzUsMS40MywxLjc2MSwxLjc2MSwwLDAsMCwuOTI0LDEuMzc0LDQuMjQyLDQuMjQyLDAsMCwwLDIuNC41OTMsNS43LDUuNywwLDAsMCwxLjY3OC0uMzc4bC4zNzguOTg1YTYuODQ0LDYuODQ0LDAsMCwxLTIuMDIyLjQ0OFExMy4xMjEsMTkuMTI1LDEzLjAyNCwxOS4xMjVaXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHBhdGggZD1cIk0xNS40MzUsMTIuODc2YTQuMzM4LDQuMzM4LDAsMCwwLS45ODQsMS42MjIsMi4wNjQsMi4wNjQsMCwwLDEtLjAxNiwyLjgwNiw0LjQsNC40LDAsMCwwLC45ODIsMS42LDMuOTMyLDMuOTMyLDAsMCwwLC4wNzgtNS45ODZDMTUuNDc2LDEyLjksMTUuNDU0LDEyLjg5MywxNS40MzUsMTIuODc2WlwiIHN0eWxlPVwiZmlsbDojNjU2NTY1XCIvPjxwYXRoIGQ9XCJNMTkuNTI1LDE1LjI3OGEyNy45MzEsMjcuOTMxLDAsMCwwLTEuMjYzLTMuNzQyLDQuMzc2LDQuMzc2LDAsMCwwLTEuNzc3LjUxNywyNi4wNjMsMjYuMDYzLDAsMCwxLDEuMjUzLDMuNjg1LDI2LjAzOCwyNi4wMzgsMCwwLDEsLjczNCw0LjUzNCw0LjM0Nyw0LjM0NywwLDAsMCwxLjgyNS0uMzUxQTI3LjksMjcuOSwwLDAsMCwxOS41MjUsMTUuMjc4WlwiIHN0eWxlPVwiZmlsbDojNjU2NTY1XCIvPjxwYXRoIGQ9XCJNMTYuMTUzLDEyLjIyOUE0LjQzNyw0LjQzNywwLDEsMCwyMi4zLDEzLjUsNC40MzcsNC40MzcsMCwwLDAsMTYuMTUzLDEyLjIyOVptNC44MTIsNy4zMzJhNC4zNDYsNC4zNDYsMCwxLDEsMS4yNDktNi4wMThBNC4zNDYsNC4zNDYsMCwwLDEsMjAuOTY1LDE5LjU2MVpcIiBzdHlsZT1cImZpbGw6IzJjMjkyOFwiLz48cGF0aCBkPVwiTTIyLjAxNSwxOS4xODZhLjgyMi44MjIsMCwwLDAtLjE5Mi0uMjA5LDQuMzQ3LDQuMzQ3LDAsMCwxLS4zMzMuMzE5LDQuNTIyLDQuNTIyLDAsMCwxLS40NDYuMzM3LDQuNzMsNC43MywwLDAsMS0uOTQuNDc3LjY2OS42NjksMCwwLDAsLjAzMS4xLjY0LjY0LDAsMCwwLC4wNDcuMDk0bC40ODcuOEwyMi41LDE5Ljk4NFpcIiBzdHlsZT1cImZpbGw6IzI4MjgyOFwiLz48cmVjdCB4PVwiMjAuNzkzXCIgeT1cIjIwLjc4NFwiIHdpZHRoPVwiMi4xNDdcIiBoZWlnaHQ9XCIwLjQ0XCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC03Ljc0IDE0LjQ2NSkgcm90YXRlKC0zMS4zOTQpXCIgc3R5bGU9XCJmaWxsOiMyODI4MjhcIi8+PHJlY3QgeD1cIjIyLjg2OFwiIHk9XCIyMC45NlwiIHdpZHRoPVwiMi4xNDdcIiBoZWlnaHQ9XCI2Ljg4N1wiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtOS4yMDcgMTYuMDQ0KSByb3RhdGUoLTMxLjM5NClcIiBzdHlsZT1cImZpbGw6IzI4MjgyOFwiLz48cGF0aCBkPVwiTTI3LjA1NCwyNy40NDNsLS4yMzYtLjM4Ny0xLjgzMywxLjExOS4yMzYuMzg3YS45MjQuOTI0LDAsMCwwLDEuMjc5LjE1OWwuMTEtLjA2N0EuOTI0LjkyNCwwLDAsMCwyNy4wNTQsMjcuNDQzWlwiIHN0eWxlPVwiZmlsbDojMjgyODI4XCIvPjxwYXRoIGQ9XCJNMjAuNjgsMTQuODQ1YS4zMTUuMzE1LDAsMCwxLC4zMzguMDI3LDEuMDc4LDEuMDc4LDAsMCwxLC4yOTQuNTc4LDEuMSwxLjEsMCwwLDEsLjAyOS42NTQuMzI3LjMyNywwLDAsMS0uMjc4LjIuNDY4LjQ2OCwwLDAsMS0uMzctLjEuOTIyLjkyMiwwLDAsMS0uMjYyLS41Ljk1NS45NTUsMCwwLDEtLjAxLS41ODVBLjQ2Ni40NjYsMCwwLDEsMjAuNjgsMTQuODQ1Wm0uMDYuMjI3YS4xNDkuMTQ5LDAsMCwwLS4wNzQuMDYzLjI0Ny4yNDcsMCwwLDAtLjAyNy4xMzIsMS42MjYsMS42MjYsMCwwLDAsLjA2NC4zNTUsMS41OTIsMS41OTIsMCwwLDAsLjExMi4zMjkuMjY4LjI2OCwwLDAsMCwuMDk0LjExLjE0Mi4xNDIsMCwwLDAsLjA5NC4wMTUuMTIxLjEyMSwwLDAsMCwuMDc4LS4wNDguMjExLjIxMSwwLDAsMCwuMDI4LS4xMjgsMi42NDMsMi42NDMsMCwwLDAtLjE4Ni0uNzIyLjIzNS4yMzUsMCwwLDAtLjA5My0uMTA3QS4xMTYuMTE2LDAsMCwwLDIwLjczOSwxNS4wNzJaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yMS42OTQsMTQuNGEuMy4zLDAsMCwxLC4zNDYuMDU3LDEuNDkzLDEuNDkzLDAsMCwxLC4zMjUuNywxLjUyMSwxLjUyMSwwLDAsMSwuMDYuNzcxLjMxLjMxLDAsMCwxLS4yNy4yMjguNDQ2LjQ0NiwwLDAsMS0uMzc5LS4xMzcsMS4zMSwxLjMxLDAsMCwxLS4yOTItLjYxNywxLjM0MSwxLjM0MSwwLDAsMS0uMDQxLS43QS40NDEuNDQxLDAsMCwxLDIxLjY5NCwxNC40Wm0uMDcyLjI3M2EuMTM2LjEzNiwwLDAsMC0uMDcyLjA2OS4zMTUuMzE1LDAsMCwwLS4wMjEuMTU1LDIuMzUxLDIuMzUxLDAsMCwwLC4wODQuNDI3LDIuMzEsMi4zMSwwLDAsMCwuMTMxLjQuMzQ3LjM0NywwLDAsMCwuMS4xMzUuMTMuMTMsMCwwLDAsLjEuMDIxLjExLjExLDAsMCwwLC4wNzYtLjA1NC4yNzUuMjc1LDAsMCwwLC4wMjItLjE1LDMuNzczLDMuNzczLDAsMCwwLS4yMjQtLjg2Mi4zMTEuMzExLDAsMCwwLS4xLS4xMzJBLjEuMSwwLDAsMCwyMS43NjYsMTQuNjc0WlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMjMuNDcyLDE1LjkzNGwtLjI2OS4wMzgtLjM3OS0xLjQzOWEuOTU1Ljk1NSwwLDAsMS0uMjU3LjM5MmwtLjA4Ny0uMzMxYS44NDEuODQxLDAsMCwwLC4xNjktLjI2Ljg3NC44NzQsMCwwLDAsLjA3NS0uMzgzbC4yLS4wODlaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yNC40NTUsMTUuNzk0bC0uMjY5LjAzOC0uNDI5LTEuNjI1YTEsMSwwLDAsMS0uMjQ3LjQyOWwtLjEtLjM3NmEuODc0Ljg3NCwwLDAsMCwuMTYyLS4yODQsMS4wMjgsMS4wMjgsMCwwLDAsLjA2NC0uNDI0bC4yLS4wODlaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yNC42MzYsMTMuMTE3Yy4xMjctLjA1NS4yNDktLjAwOC4zNjkuMTQ0YTMuMTEsMy4xMSwwLDAsMSwuNDE2LDEuMDM0LDMuMTQzLDMuMTQzLDAsMCwxLC4xNTEsMS4xMWMtLjAyOS4xOS0uMTExLjI5NC0uMjQ3LjMxMnMtLjI3Mi0uMDU5LS40LS4yMzFhMi44NTUsMi44NTUsMCwwLDEtLjM4MS0uOTUsMi44NzEsMi44NzEsMCwwLDEtLjEzMi0xLjAzOUEuNDM3LjQzNywwLDAsMSwyNC42MzYsMTMuMTE3Wm0uMTA3LjRhLjEyNC4xMjQsMCwwLDAtLjA2Ny4wODguNTg0LjU4NCwwLDAsMCwwLC4yMjEsNS4yMTgsNS4yMTgsMCwwLDAsLjEzOS42MzUsNS4xNTMsNS4xNTMsMCwwLDAsLjE4NC42LjY2LjY2LDAsMCwwLC4xMi4yMDguMTE4LjExOCwwLDAsMCwuMS4wNC4xLjEsMCwwLDAsLjA3MS0uMDcyLjUyOC41MjgsMCwwLDAsMC0uMjE2LDUuNDQyLDUuNDQyLDAsMCwwLS4xNDQtLjY1Myw1LjQ0Nyw1LjQ0NywwLDAsMC0uMTg5LS42MTkuNjEyLjYxMiwwLDAsMC0uMTE5LS4yMDVBLjA5My4wOTMsMCwwLDAsMjQuNzQzLDEzLjUyMlpcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTI2LjYzOCwxNS40ODhsLS4yNjkuMDM4LS41NC0yLjAzOUExLjE1MSwxLjE1MSwwLDAsMSwyNS42LDE0bC0uMTI2LS40NzVhLjk5Ljk5LDAsMCwwLC4xNDgtLjMzNywxLjQzNiwxLjQzNiwwLDAsMCwuMDM5LS41MTVsLjItLjA4OFpcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTI2LjY2NiwxMi4yMzZjLjEyNy0uMDU1LjI1NS4wMTIuMzg1LjJhNC41ODQsNC41ODQsMCwwLDEsLjQ3OCwxLjI2OCw0LjYyLDQuNjIsMCwwLDEsLjIxMywxLjM0M2MtLjAxOC4yMjktLjEuMzUyLS4yMzIuMzdzLS4yNzgtLjA4MS0uNDIxLS4zYTQuMjg0LDQuMjg0LDAsMCwxLS40NDMtMS4xNzksNC4yODMsNC4yODMsMCwwLDEtLjE5NC0xLjI3MkMyNi40NjgsMTIuNDM4LDI2LjUzOSwxMi4yOTEsMjYuNjY2LDEyLjIzNlptLjEzMS41cS0uMDQ2LjAxOC0uMDY0LjFhLjgyOS44MjksMCwwLDAsLjAwOS4yNjYsNy44NTYsNy44NTYsMCwwLDAsLjE3OC43NzlxLjE0My41NDEuMjIxLjczOGEuOTQ3Ljk0NywwLDAsMCwuMTM0LjI1OC4xMTkuMTE5LDAsMCwwLC4xLjA1MnEuMDQ4LS4wMDkuMDY4LS4wODVhLjc2Mi43NjIsMCwwLDAtLjAwOC0uMjYyLDguMTE3LDguMTE3LDAsMCwwLS4xODItLjhxLS4xNDgtLjU1Ny0uMjI3LS43NTdhLjg5Mi44OTIsMCwwLDAtLjEzMy0uMjU2UTI2Ljg0MywxMi43MTQsMjYuOCwxMi43MzJaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yNy42ODEsMTEuOGMuMTI3LS4wNTUuMjU3LjAyMy4zOTMuMjM0YTUuNDMxLDUuNDMxLDAsMCwxLC41MDksMS4zODUsNS40NjcsNS40NjcsMCwwLDEsLjI0NCwxLjQ2Yy0uMDEzLjI0OS0uMDg4LjM4MS0uMjI0LjRzLS4yODEtLjA5Mi0uNDMtLjMyOGE1LjExLDUuMTEsMCwwLDEtLjQ3My0xLjI5NCw1LjEsNS4xLDAsMCwxLS4yMjUtMS4zODhDMjcuNDg2LDEyLjAwOCwyNy41NTUsMTEuODUxLDI3LjY4MSwxMS44Wm0uMTQ0LjU0MnEtLjA0Ni4wMTgtLjA2Mi4xMDZhLjk3Ljk3LDAsMCwwLC4wMTUuMjg5cS4wNC4yNTkuMi44NTF0LjI0LjgwN2ExLjExMiwxLjExMiwwLDAsMCwuMTQuMjg0cS4wNTcuMDY3LjEwNi4wNTl0LjA2Ni0uMDkxYS45LjksMCwwLDAtLjAxNC0uMjg0cS0uMDQtLjI2LS4yLS44Njd0LS4yNDUtLjgyN2ExLjA1MywxLjA1MywwLDAsMC0uMTQtLjI4MVEyNy44NzEsMTIuMzIsMjcuODI1LDEyLjMzOFpcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTI5LjkxNSwxNS4wMzRsLS4yNy4wMzctLjcwNi0yLjY2MWExLjQ3OCwxLjQ3OCwwLDAsMS0uMTkyLjYzNmwtLjE2Ni0uNjI1QTEuMjQ4LDEuMjQ4LDAsMCwwLDI4LjcwOCwxMmEyLjIxNCwyLjIxNCwwLDAsMCwwLS42NTNsLjItLjA4OFpcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTI5LjcxMiwxMC45MjFjLjEyNy0uMDU0LjI2My4wNDMuNDA5LjI5NGE3LjM0NSw3LjM0NSwwLDAsMSwuNTcyLDEuNjE5QTcuMzgyLDcuMzgyLDAsMCwxLDMxLDE0LjUyN2MwLC4yODgtLjA3Mi40NC0uMjA5LjQ1OHMtLjI4Ni0uMTE0LS40NDctLjM5M2E2Ljk4NCw2Ljk4NCwwLDAsMS0uNTM1LTEuNTI0LDYuOTQ0LDYuOTQ0LDAsMCwxLS4yODctMS42MjFDMjkuNTIzLDExLjE1MSwyOS41ODYsMTAuOTc1LDI5LjcxMiwxMC45MjFabS4xNjguNjMzcS0uMDQ2LjAxOC0uMDU5LjExOWExLjI4NywxLjI4NywwLDAsMCwuMDI3LjMzNHEuMDUxLjMuMjM1Ljk5NHQuMjc3Ljk0NmExLjQ4NCwxLjQ4NCwwLDAsMCwuMTU0LjMzNHEuMDYuMDguMTA5LjA3MXQuMDYzLS4xYTEuMiwxLjIsMCwwLDAtLjAyNi0uMzNxLS4wNTEtLjMtLjIzOS0xLjAxMXQtLjI4Mi0uOTY1YTEuNDIsMS40MiwwLDAsMC0uMTUzLS4zMzJRMjkuOTI2LDExLjUzNiwyOS44OCwxMS41NTNaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yMS4xNjcsMTYuMzYyYS40MjIuNDIyLDAsMCwxLC4zMTguMTg1LDEuMDA1LDEuMDA1LDAsMCwxLS4yNzcsMS4wMy40Mi40MiwwLDAsMS0uMzY2LDAsLjU5LjU5LDAsMCwxLS4zMTEtLjI2MS44MDguODA4LDAsMCwxLC4yNTQtLjg5M0EuNTYxLjU2MSwwLDAsMSwyMS4xNjcsMTYuMzYyWm0tLjA1MS4xODlhLjE3NS4xNzUsMCwwLDAtLjE5Mi4wODcsMS40ODcsMS40ODcsMCwwLDAtLjE1NS41NjcuMjE2LjIxNiwwLDAsMCwuMDM5LjEyNC4xOTEuMTkxLDAsMCwwLC4wODQuMDU4LjE0NS4xNDUsMCwwLDAsLjE4OC0uMDY5LDEuNjY2LDEuNjY2LDAsMCwwLC4xNjQtLjYuMTg5LjE4OSwwLDAsMC0uMDQtLjEyMUEuMTYzLjE2MywwLDAsMCwyMS4xMTcsMTYuNTUxWlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMjIuMzc2LDE2LjU0OGEuMzgyLjM4MiwwLDAsMSwuMzExLjIxMiwxLjAyNCwxLjAyNCwwLDAsMS0uMDE5LjY2LDEuMDIyLDEuMDIyLDAsMCwxLS4zMTUuNTgxLjM4LjM4LDAsMCwxLS4zNzMuMDI1LjUzMy41MzMsMCwwLDEtLjMtLjI5LDEuMTg5LDEuMTg5LDAsMCwxLC4zMDktMS4xQS41LjUsMCwwLDEsMjIuMzc2LDE2LjU0OFptLS4wNjIuMjNhLjE2Ny4xNjcsMCwwLDAtLjEuMDEzLjIzNS4yMzUsMCwwLDAtLjEuMSwyLjIxOSwyLjIxOSwwLDAsMC0uMTg5LjY5NC4yNjkuMjY5LDAsMCwwLC4wMzMuMTQ3LjE2Ny4xNjcsMCwwLDAsLjA4My4wNjQuMTQzLjE0MywwLDAsMCwuMSwwLC4yMDYuMjA2LDAsMCwwLC4wOTQtLjEsMi40MzYsMi40MzYsMCwwLDAsLjItLjcyNy4yNC4yNCwwLDAsMC0uMDM0LS4xNDRBLjE0MS4xNDEsMCwwLDAsMjIuMzE0LDE2Ljc3OFpcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTIzLjM3LDE4LjU0MWwtLjI4MS0uMTEuMzI4LTEuMjI1YTEsMSwwLDAsMS0uNDQyLjE1MmwuMDc1LS4yODFhLjg4MS44ODEsMCwwLDAsLjI5Mi0uMS42OC42OCwwLDAsMCwuMjU5LS4yMzhsLjI0Mi4wMzdaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yNC43OTMsMTYuOTE5YS4zNDguMzQ4LDAsMCwxLC4zLjI2NiwxLjc1MSwxLjc1MSwwLDAsMS0uMDc1Ljg3LDEuNzQ5LDEuNzQ5LDAsMCwxLS4zNzEuNzkxLjM0NS4zNDUsMCwwLDEtLjM4OC4wNzguNDg4LjQ4OCwwLDAsMS0uMjg4LS4zNDgsMS41ODcsMS41ODcsMCwwLDEsLjA2Ny0uNzksMS41NzcsMS41NzcsMCwwLDEsLjM1NC0uNzI3QS40NTcuNDU3LDAsMCwxLDI0Ljc5MywxNi45MTlabS0uMDg0LjMxMmEuMTQzLjE0MywwLDAsMC0uMTA3LjAyNS4zNTMuMzUzLDAsMCwwLS4xMDYuMTQxLDQuMTI2LDQuMTI2LDAsMCwwLS4yNTcuOTQ4LjQwOC40MDgsMCwwLDAsLjAyMS4xOTIuMTQzLjE0MywwLDAsMCwuMDguMDc1LjEyLjEyLDAsMCwwLC4xLS4wMTEuMzE4LjMxOCwwLDAsMCwuMTA1LS4xMzcsNC40MTgsNC40MTgsMCwwLDAsLjI2Ni0uOTgxLjM3NC4zNzQsMCwwLDAtLjAyMi0uMTg5QS4xMTkuMTE5LDAsMCwwLDI0LjcxLDE3LjIzMVpcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTI1LjY0OSwxOS40M2wtLjI4MS0uMTEuNDI4LTEuNmExLjAzMywxLjAzMywwLDAsMS0uNDYyLjIyN2wuMS0uMzcxYS45LjksMCwwLDAsLjMtLjE1MS45My45MywwLDAsMCwuMjgxLS4zMjFsLjI0Mi4wMzdaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yNy4yMTEsMTcuMjkxYS4zNDQuMzQ0LDAsMCwxLC4yODIuMzE5LDIuNjkyLDIuNjkyLDAsMCwxLS4xMzEsMS4wOCwyLjY5LDIuNjksMCwwLDEtLjQyNywxLC4zNC4zNCwwLDAsMS0uNC4xMy40ODcuNDg3LDAsMCwxLS4yNzMtLjQwNSwyLjQ5NCwyLjQ5NCwwLDAsMSwuMTIyLTEsMi40NywyLjQ3LDAsMCwxLC40MS0uOTM3QS40NTEuNDUxLDAsMCwxLDI3LjIxMSwxNy4yOTFabS0uMTA2LjM5NGEuMTMzLjEzMywwLDAsMC0uMTEuMDM2LjUwOS41MDksMCwwLDAtLjExNy4xODIsNi42MjIsNi42MjIsMCwwLDAtLjMyNSwxLjIuNTkxLjU5MSwwLDAsMCwuMDA5LjIzNy4xMzMuMTMzLDAsMCwwLC4wNzcuMDg2LjExLjExLDAsMCwwLC4xMDctLjAyMy40NjUuNDY1LDAsMCwwLC4xMTYtLjE3OCw0LjYzOSw0LjYzOSwwLDAsMCwuMi0uNjE5LDQuNjU4LDQuNjU4LDAsMCwwLC4xMzYtLjYxNS41NTIuNTUyLDAsMCwwLS4wMS0uMjM1QS4xMS4xMSwwLDAsMCwyNy4xMDUsMTcuNjg1WlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMjcuOTI3LDIwLjMybC0uMjgxLS4xMS41MjgtMS45NzFhMS4xMzQsMS4xMzQsMCwwLDEtLjQ4Mi4zbC4xMjMtLjQ2YS45NzIuOTcyLDAsMCwwLC4zMTctLjIsMS4yNDgsMS4yNDgsMCwwLDAsLjMtLjRsLjI0Mi4wMzdaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yOC45NTMsMjAuNzIxbC0uMjgxLS4xMS41NzMtMi4xMzlhMS4yLDEuMiwwLDAsMS0uNDkxLjMzNmwuMTM0LS41YTEuMDIsMS4wMiwwLDAsMCwuMzIzLS4yMiwxLjQxMywxLjQxMywwLDAsMCwuMzE0LS40NGwuMjQyLjAzN1pcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTMwLjcxNywxNy44M2MuMTUxLjAyMy4yMzguMTU1LjI2Mi40YTQuNDM2LDQuNDM2LDAsMCwxLS4yMTMsMS4zODUsNC40MzQsNC40MzQsMCwwLDEtLjUwOSwxLjMwN2MtLjE0LjE5NS0uMjguMjYzLS40MjIuMjA3cy0uMjI2LS4yMi0uMjUtLjQ4OWE0LjE5NCw0LjE5NCwwLDAsMSwuMi0xLjMsNC4xNDMsNC4xNDMsMCwwLDEsLjQ5Mi0xLjI0MUMzMC40MiwxNy45LDMwLjU2NiwxNy44MDcsMzAuNzE3LDE3LjgzWm0tLjEzNy41MTNhLjEzMi4xMzIsMCwwLDAtLjExNS4wNTMuOC44LDAsMCwwLS4xMzMuMjQxLDcuNTg3LDcuNTg3LDAsMCwwLS4yNDQuNzkxLDcuNTM5LDcuNTM5LDAsMCwwLS4xOC43NzkuOTMuOTMsMCwwLDAtLjAwOS4zLjEzMS4xMzEsMCwwLDAsLjA3My4xLjEwOC4xMDgsMCwwLDAsLjExMS0uMDM5Ljc0Mi43NDIsMCwwLDAsLjEzMi0uMjM3LDcuOCw3LjgsMCwwLDAsLjI0OC0uODA2LDcuODM1LDcuODM1LDAsMCwwLC4xODUtLjguODg0Ljg4NCwwLDAsMCwuMDA4LS4zUTMwLjYzMywxOC4zNTMsMzAuNTgsMTguMzQzWlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPmAsXG4gIFwiRWRpdG9yQ29uZmlnXCI6IGA8cGF0aCBkPVwiTTguNzA5LDE4LjM1MWExLjI2NywxLjI2NywwLDAsMCwuNTMyLTEuMzc5QzguNjkyLDE3LjIwNyw4LjcxOCwxNy43NDksOC43MDksMTguMzUxWlwiIHN0eWxlPVwiZmlsbDojZTNlM2Y4XCIvPjxwYXRoIGQ9XCJNMTQuOTI0LDE5Ljg1MmEuODcxLjg3MSwwLDAsMCwuNjItMS4xMzVBMS40MywxLjQzLDAsMCwwLDE0LjkyNCwxOS44NTJaXCIgc3R5bGU9XCJmaWxsOiNlM2UzZjhcIi8+PHBhdGggZD1cIk0yLjcxMywyNy4wNzlhMS41MzgsMS41MzgsMCwwLDAsLjUyNCwxLjM1M2MxLjQxNC43OTQsNi4zNzIuMTc1LDguMDU2LS4yYTE0Ljk5NCwxNC45OTQsMCwwLDAsMi40MjYtMS4yMTMsMjIuNjQzLDIyLjY0MywwLDAsMCw0LjcxMy0yLjU1N2MxLjA4Mi0uNzk0LDIuOC0zLjAyOSwyLjk4NS00LjM2NGwtMS40NzUtLjMzMmMtLjAzNSwxLjUtLjM3NSwxLjg0Mi0xLjcxMSwyLjE5MWExMC42NjIsMTAuNjYyLDAsMCwxLTMuNTcuMTQsMy4zNjIsMy4zNjIsMCwwLDEtMi4zMTMtMS41NjJjLTEuMDY1LTEuNDE0LjIzNi0yLjQtMS40NDktMi41LTEuNzcyLDIuMTczLTQuOS42MTEtNi4yNjcuMzkzYTMwLjA2NiwzMC4wNjYsMCwwLDAtMS45MzgsNy42LDIuNzQ4LDIuNzQ4LDAsMCwxLDIuMTM4LjMyM2MyLjY4OCwxLjAzOS4zNCwxLjk1NS0uNzMzLDEuNjg1QzMuMzY4LDI3Ljg2NCwzLjE0MSwyNy4zODQsMi43MTMsMjcuMDc5WlwiIHN0eWxlPVwiZmlsbDojZmRmZGZkXCIvPjxwYXRoIGQ9XCJNNi4yMzEsMTQuNTM3YTExLjUzOSwxMS41MzksMCwwLDEsMi45ODUsMS4xMjZjMS41MS43NTEsMS43ODEuNjQ2LDEuOTIsMS42OTMuMDE3LjE5Mi0uMDE3LjMuNTMyLjQ3MS45MjUuMjg4LS41MzItLjIyNywxLjk0Ni0uMjE4QTE2LjY0LDE2LjY0LDAsMCwxLDE5LjU1OSwxOC45Yy40NTQuMjg4LjM2Ny42NTUsMS45LjYxMWExOC43NjcsMTguNzY3LDAsMCwwLTEuMi02LjE2MmMtLjg2NC0yLjAwNy0yLjAwNy0yLjMxMy00LjMzOC0zLjA2NC0xLjM2Mi0uNDM2LTUuMzU5LS45MTYtNi42LS4xNDgtMS4xNjEuNzI0LTEuMzc5LDEuNTg5LTIuNDYxLDMuMTA3QTUuMzY2LDUuMzY2LDAsMCwwLDYuMjMxLDE0LjUzN1pcIiBzdHlsZT1cImZpbGw6I2ZkZmRmZFwiLz48cGF0aCBkPVwiTTE1Ljg0LDE4LjI0NmMuODczLjM1OC0uMDQ0LDIuNjcxLTEuMjU3LDIuMTEyLS4zOTMtMS4xMDguNTQxLTEuNzM3Ljc5NC0yLjIzNGE4LjUxLDguNTEsMCwwLDAtMi40NjEtLjE0OGMtLjU3Ni4yMTgtLjcwNywxLjQ0OS0uNDEsMi4wMjUsMS40LDIuNzQxLDcuNTY3LDIuMTU2LDYuOTEzLjAyNi0uMjYyLS44NjQtLjUwNi0xLTEuMzg4LTEuM0E2Ljg4NSw2Ljg4NSwwLDAsMCwxNS44NCwxOC4yNDZaXCIgc3R5bGU9XCJmaWxsOiNmZGZkZmRcIi8+PHBhdGggZD1cIk00Ljg2OSwxNy45NDFjLjcuNjcyLDIuMjc4Ljc3NywzLjMuODI5QzguMywxNy40MTcsOC40MTMsMTYuNCw5LjUsMTYuNDgzYTEuNiwxLjYsMCwwLDEtLjMwNSwyLjEzLDEuMzg2LDEuMzg2LDAsMCwwLDEuMzYyLTEuNzYzLDE0LjU0MiwxNC41NDIsMCwwLDAtNC40Ni0xLjg5NEE5LjUwNiw5LjUwNiwwLDAsMCw0Ljg2OSwxNy45NDFaXCIgc3R5bGU9XCJmaWxsOiNmZGZkZmRcIi8+PHBhdGggZD1cIk0zLjIyOCwyNi41ODFjLjU3Ni0uMDUyLDIuMDc3LjM4NCwyLjIuODczQzQuNDk0LDI3LjU2OCwzLjMwNywyNy40OCwzLjIyOCwyNi41ODFabS0uNTE1LjVjLjQyOC4zMDUuNjU1Ljc4NiwxLjM4OC45NiwxLjA3NC4yNzEsMy40MjEtLjY0Ni43MzMtMS42ODVBMi43NDgsMi43NDgsMCwwLDAsMi43LDI2LjAzMmEzMC4wNjYsMzAuMDY2LDAsMCwxLDEuOTM4LTcuNmMxLjM3LjIxOCw0LjQ5NSwxLjc4MSw2LjI2Ny0uMzkzLDEuNjg1LjEuMzg0LDEuMDgyLDEuNDQ5LDIuNUEzLjM2MiwzLjM2MiwwLDAsMCwxNC42NjIsMjIuMWExMC42NjIsMTAuNjYyLDAsMCwwLDMuNTctLjE0YzEuMzM1LS4zNDksMS42NzYtLjY5LDEuNzExLTIuMTkxbDEuNDc1LjMzMmMtLjE4MywxLjMzNS0xLjksMy41Ny0yLjk4NSw0LjM2NGEyMi42NDMsMjIuNjQzLDAsMCwxLTQuNzEzLDIuNTU3LDE0Ljk5NCwxNC45OTQsMCwwLDEtMi40MjYsMS4yMTNjLTEuNjg1LjM3NS02LjY0MiwxLTguMDU2LjJBMS41MzgsMS41MzgsMCwwLDEsMi43MTMsMjcuMDc5Wm0xMi4yMTEtNy4yMjdhMS40MywxLjQzLDAsMCwxLC42Mi0xLjEzNUEuODcxLjg3MSwwLDAsMSwxNC45MjQsMTkuODUyWm0uOTE2LTEuNjA2YTYuODg1LDYuODg1LDAsMCwxLDIuMTkxLjQ4Yy44ODIuMywxLjEyNi40MzYsMS4zODgsMS4zLjY1NSwyLjEzLTUuNTE2LDIuNzE0LTYuOTEzLS4wMjYtLjMtLjU3Ni0uMTY2LTEuODA3LjQxLTIuMDI1YTguNTEsOC41MSwwLDAsMSwyLjQ2MS4xNDhjLS4yNTMuNS0xLjE4NywxLjEyNi0uNzk0LDIuMjM0QzE1LjgsMjAuOTE3LDE2LjcxMywxOC42LDE1Ljg0LDE4LjI0NlptLTcuMTMxLjFjLjAwOS0uNi0uMDE3LTEuMTQzLjUzMi0xLjM3OUExLjI2NywxLjI2NywwLDAsMSw4LjcwOSwxOC4zNTFabS0zLjg0LS40MWE5LjUwNiw5LjUwNiwwLDAsMSwxLjIyMi0yLjk4NSwxNC41NDIsMTQuNTQyLDAsMCwxLDQuNDYsMS44OTRBMS4zODYsMS4zODYsMCwwLDEsOS4xOSwxOC42MTNhMS42LDEuNiwwLDAsMCwuMzA1LTIuMTNjLTEuMDgyLS4wNzktMS4yLjkzNC0xLjMyNywyLjI4N0M3LjE0NywxOC43MTcsNS41NjcsMTguNjEzLDQuODY5LDE3Ljk0MVpNNCwxNy4yNDJjLS4zMjMtLjg5LS4zMjMtMi4yNzgsMS4wNDctMi4zOTJsLS43LDEuOTQ2QzQuMTYyLDE3LjIxNiw0LjE2MiwxNy4xMiw0LDE3LjI0MlptMi4yMzQtMi43MDZhNS4zNjYsNS4zNjYsMCwwLDEsLjYyOC0xLjI5MmMxLjA4Mi0xLjUxOSwxLjMtMi4zODMsMi40NjEtMy4xMDcsMS4yMzktLjc2OCw1LjIzNy0uMjg4LDYuNi4xNDgsMi4zMy43NTEsMy40NzQsMS4wNTYsNC4zMzgsMy4wNjRhMTguNzY3LDE4Ljc2NywwLDAsMSwxLjIsNi4xNjJjLTEuNTM2LjA0NC0xLjQ0OS0uMzIzLTEuOS0uNjExYTE2LjY0LDE2LjY0LDAsMCwwLTUuOTQ0LTEuMjkyYy0yLjQ3OS0uMDA5LTEuMDIxLjUwNi0xLjk0Ni4yMTgtLjU1LS4xNzUtLjUxNS0uMjc5LS41MzItLjQ3MS0uMTQtMS4wNDctLjQxLS45NDMtMS45Mi0xLjY5M0ExMS41MzksMTEuNTM5LDAsMCwwLDYuMjMxLDE0LjUzN1ptMTUuNDQ5LS40MjhjLS4xNjYtLjU1LjE0LS41MTUuNjcyLS44OWE5LjAyMSw5LjAyMSwwLDAsMSwuOTI1LS42NTVjMS40MDUtLjc4Niw0LjAyNC0uOTE2LDUuMTQxLjAxN0EyLjQ3OSwyLjQ3OSwwLDAsMSwyOS41LDE0LjY1YTUuODM4LDUuODM4LDAsMCwxLTIuNjE4LDMuODMyLDUuMjEzLDUuMjEzLDAsMCwxLTQuNzgzLDEuMmMtLjE1Ny0uMzg0LS4wMzUtMi44MTktLjIxOC0zLjcxOC0uMTY2LS44LS4wNzktLjg5LjM4NC0xLjM3LDEuMzYyLTEuNDE0LDQuMzEyLTIuNDQ0LDUuOTg4LTEuMjMxLjcwNy41MjQuNTA2LjcyNC44NzMsMS4xMjYuNDU0LS40ODktLjM5My0yLjEzLTMuNTE3LTIuMDI1QzIzLjQ4NiwxMi41MjksMjIuNTcsMTQuMTg3LDIxLjY4LDE0LjEwOVpNOC45NzEsOS4xNDNhOC4wOTQsOC4wOTQsMCwwLDEsMi4yNzgtNC42QzEyLjYsMy41LDE0LjAxNiwyLjUwOSwxNi4wOTQsMy42ODdjLjUxNS4yODguNDg5LjQzNi41NDEsMS4xNTJhMy4zMTIsMy4zMTIsMCwwLDEtLjE5MiwxLjVjLTEuMzc5LDQuNDUxLTIuNTMxLDEuODk0LTYuOTQ4LDIuOTVhNi4zNzQsNi4zNzQsMCwwLDEsMi4xMjEtMy40MTNjMS4yLTEuMTYxLDIuMDYtMS45MTEsMy44NTgtMS42NjdhMS44NDIsMS44NDIsMCwwLDEtLjA1MiwyLjMyMmMtLjgsMS4yOTItMSwxLjIxMy0uODgyLDIuMDk1LjYyOC0uMTU3LjgyLS43NjgsMS4xMDgtMS4zNzksMS43NTQtMy42NjYtLjc5NC00LjExMS0yLjM1Ny0zLjQzOUExMC4zNzIsMTAuMzcyLDAsMCwwLDkuNzY2LDcuNTU0Yy0uMTIyLjI0NC0uMjUzLjU1OS0uMzY3LjgyOVptNi45MTMuMTgzQzE2LjA2Nyw4LjIzNSwxNy4xNSw3Ljk2NCwxNy4xNSw0LjZjMC0xLjQ0OS0xLjc4MS0yLjc0OS00LjExMS0xLjc4MS0yLC44Mi0yLjMsMS40NDktMy4zNjksMy4wNTUtMSwxLjUxOS0uOTY5LDMuMTg2LTEuODMzLDQuNTkxLS4yNTMuNC0uNDguNTQxLS43NTkuOTQzLS4yLjMtLjM0OS42NzItLjU1LDEuMDIxQTEyLjk0LDEyLjk0LDAsMCwwLDUuMzY3LDE0LjRjLTEuMDQ3LjAyNi0xLjkyOS4wNDQtMi4wMzQsMS4xMjYtLjE0LDEuNDg0LjU1OSwxLjg1LjU1OSwyLjQwOS0uMDA5LjYtMi40NTMsNi42NzctMS43NzIsMTAuMy4xOTIsMSwuODQ3LDEsMS44OTQsMS4xMjZhMTcuOTMsMTcuOTMsMCwwLDAsOC4wNTYtLjcwN2w0LjEtMS45NjRhMTguODUsMTguODUsMCwwLDAsMy41NjEtMi41LDEyLjM4MywxMi4zODMsMCwwLDAsMS4zMDktMS43MTksMy4yMTMsMy4yMTMsMCwwLDAsLjgtMi4yMDgsOC40NzMsOC40NzMsMCwwLDEsMi45ODUsMWMtLjA2MS42LS4zNTguMzE0LS4zNTguODU1YTEuMzU1LDEuMzU1LDAsMCwwLDEuMDQ3LS44OWMtLjM1OC0uNTI0LS43MzMtLjQzNi0xLjI0OC0uODU1YTguMjEyLDguMjEyLDAsMCwxLDEuNzE5LS43MDdjMS4yMjItLjUwNiwzLjMwOC0yLjA0MiwzLjgyMy0zLjQzOWE0LjQ0OSw0LjQ0OSwwLDAsMC0uNTU5LTMuNzM2LDUuNDQ0LDUuNDQ0LDAsMCwwLTMuNjQ4LTEuMTYxYy0xLjU4LDAtMy4yMTIsMS4xMzUtNC40ODYsMS42MjMtLjQ4OS0uNDI4LS41MjQtLjkxNi0uODgyLTEuMzg4QTEyLjI4MSwxMi4yODEsMCwwLDAsMTUuODg0LDkuMzI2WlwiIHN0eWxlPVwiZmlsbDojMDIwMjAyXCIvPjxwYXRoIGQ9XCJNMjEuNjgsMTQuMTA5Yy44OS4wNzksMS44MDctMS41OCwzLjkyOC0xLjY1LDMuMTI1LS4xLDMuOTcxLDEuNTM2LDMuNTE3LDIuMDI1LS4zNjctLjQtLjE2Ni0uNi0uODczLTEuMTI2LTEuNjc2LTEuMjEzLTQuNjI2LS4xODMtNS45ODgsMS4yMzEtLjQ2My40OC0uNTUuNTY3LS4zODQsMS4zNy4xODMuOS4wNjEsMy4zMzQuMjE4LDMuNzE4YTUuMjEzLDUuMjEzLDAsMCwwLDQuNzgzLTEuMkE1LjgzOCw1LjgzOCwwLDAsMCwyOS41LDE0LjY1YTIuNDc5LDIuNDc5LDAsMCwwLTEuMDgyLTIuMDY5Yy0xLjExNy0uOTM0LTMuNzM2LS44LTUuMTQxLS4wMTdhOS4wMjEsOS4wMjEsMCwwLDAtLjkyNS42NTVDMjEuODE5LDEzLjU5NCwyMS41MTQsMTMuNTU5LDIxLjY4LDE0LjEwOVpcIiBzdHlsZT1cImZpbGw6I2ZkZjJmMlwiLz48cGF0aCBkPVwiTTguOTcxLDkuMTQzLDkuNCw4LjM4M2MuMTEzLS4yNzEuMjQ0LS41ODUuMzY3LS44MjlBMTAuMzcyLDEwLjM3MiwwLDAsMSwxMy4yOTIsMy44MWMxLjU2Mi0uNjcyLDQuMTExLS4yMjcsMi4zNTcsMy40MzktLjI4OC42MTEtLjQ4LDEuMjIyLTEuMTA4LDEuMzc5LS4xMjItLjg4Mi4wNzktLjguODgyLTIuMDk1YTEuODQyLDEuODQyLDAsMCwwLC4wNTItMi4zMjJjLTEuOC0uMjQ0LTIuNjYyLjUwNi0zLjg1OCwxLjY2N0E2LjM3NCw2LjM3NCwwLDAsMCw5LjUsOS4yOTFjNC40MTYtMS4wNTYsNS41NjksMS41LDYuOTQ4LTIuOTVhMy4zMTIsMy4zMTIsMCwwLDAsLjE5Mi0xLjVjLS4wNTItLjcxNi0uMDI2LS44NjQtLjU0MS0xLjE1Mi0yLjA3Ny0xLjE3OC0zLjQ5MS0uMTkyLTQuODQ0Ljg1NUE4LjA5NCw4LjA5NCwwLDAsMCw4Ljk3MSw5LjE0M1pcIiBzdHlsZT1cImZpbGw6I2ZlZjNmM1wiLz48cGF0aCBkPVwiTTQsMTcuMjQyYy4xNjYtLjEyMi4xNjYtLjAyNi4zNDktLjQ0NWwuNy0xLjk0NkMzLjY3MywxNC45NjQsMy42NzMsMTYuMzUyLDQsMTcuMjQyWlwiIHN0eWxlPVwiZmlsbDojZWZlZmVmXCIvPjxwYXRoIGQ9XCJNNS40MjgsMjcuNDU0Yy0uMTIyLS40ODktMS42MjMtLjkyNS0yLjItLjg3M0MzLjMwNywyNy40OCw0LjQ5NCwyNy41NjgsNS40MjgsMjcuNDU0WlwiIHN0eWxlPVwiZmlsbDojZmFmMWYxXCIvPmAsXG4gIFwiRUpTXCI6IGA8cGF0aCBkPVwiTTIsMTcuNjcyVjE0LjMyOGwxMS44Ni02LjJWMTEuMkw1LjEsMTUuOTM5bDguNzYyLDQuODM1djMuMVptMjcuODE0LTguODhMMTkuNDY1LDIzLjIyOUgxNS45MTJMMjYuMjgxLDguNzkxWk0yNi45NDcsMjEuNWEuNzk0Ljc5NCwwLDAsMCwuNjE5LS4yNzgsMS4wNjEsMS4wNjEsMCwwLDAsLjI0OC0uNzMyLDEuMTQxLDEuMTQxLDAsMCwwLS4yNDgtLjc1My43NjguNzY4LDAsMCwwLTEuMjE3LDAsMS4xNDEsMS4xNDEsMCwwLDAtLjI0OC43NTMsMS4wOSwxLjA5LDAsMCwwLC4yMzcuNzMyQS43NjMuNzYzLDAsMCwwLDI2Ljk0NywyMS41Wm0yLjE4NiwxLjA0MmEzLjIzNywzLjIzNywwLDAsMS00LjM1Mi0uMDEsMi44NjQsMi44NjQsMCwwLDEsMC00LjEsMy4yMjMsMy4yMjMsMCwwLDEsNC4zNTIsMEEyLjc3MywyLjc3MywwLDAsMSwzMCwyMC40ODYsMi43NCwyLjc0LDAsMCwxLDI5LjEzNCwyMi41MzhaTTE4LjgyMSwxMy4wNjFhLjc5NC43OTQsMCwwLDAsLjYxOS0uMjc4LDEuMDYxLDEuMDYxLDAsMCwwLC4yNDgtLjczMiwxLjE0MSwxLjE0MSwwLDAsMC0uMjQ4LS43NTMuNzY5Ljc2OSwwLDAsMC0xLjIxNywwLDEuMTQxLDEuMTQxLDAsMCwwLS4yNDguNzUzLDEuMDksMS4wOSwwLDAsMCwuMjM3LjczMkEuNzYzLjc2MywwLDAsMCwxOC44MjEsMTMuMDYxWk0yMS4wMDcsMTQuMWEzLjIzNywzLjIzNywwLDAsMS00LjM1Mi0uMDEsMi44NjQsMi44NjQsMCwwLDEsMC00LjEsMy4yMjMsMy4yMjMsMCwwLDEsNC4zNTIsMCwyLjc3MywyLjc3MywwLDAsMSwuODY2LDIuMDYzQTIuNzQsMi43NCwwLDAsMSwyMS4wMDcsMTQuMVpcIiBzdHlsZT1cImZpbGw6IzkwYTkzYVwiLz5gLFxuICBcIkVsaXhpclwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMTcuMjQ5XCIgeTE9XCItMzM1LjU5N1wiIHgyPVwiMTQuOTczXCIgeTI9XCItMzA5Ljk5NFwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEsIDAsIDAsIC0xLCAwLCAtMzA2KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiIHN0b3Atb3BhY2l0eT1cIjBcIi8+PHN0b3Agb2Zmc2V0PVwiMC4wMVwiIHN0b3AtY29sb3I9XCIjZjdmNmY4XCIgc3RvcC1vcGFjaXR5PVwiMC4wNFwiLz48c3RvcCBvZmZzZXQ9XCIwLjA5XCIgc3RvcC1jb2xvcj1cIiNhYTljYjNcIiBzdG9wLW9wYWNpdHk9XCIwLjM5XCIvPjxzdG9wIG9mZnNldD1cIjAuMlwiIHN0b3AtY29sb3I9XCIjNmY1NjdlXCIgc3RvcC1vcGFjaXR5PVwiMC42NlwiLz48c3RvcCBvZmZzZXQ9XCIwLjMyXCIgc3RvcC1jb2xvcj1cIiM0NTI0NTlcIiBzdG9wLW9wYWNpdHk9XCIwLjg2XCIvPjxzdG9wIG9mZnNldD1cIjAuNVwiIHN0b3AtY29sb3I9XCIjMmQwODQzXCIgc3RvcC1vcGFjaXR5PVwiMC45N1wiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMyNjAwM2RcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9lbGl4aXI8L3RpdGxlPjxwYXRoIGQ9XCJNMTcuOCw4LjU5MWMyLjA3OSw0LjU4NCw3LjY0LDYuNSw3LjE0MSwxMi40NzQtLjU4Miw3LjAxNy01LjU1MSw4Ljc4NC04LjMxNiw4LjkwOWE4LjgxNSw4LjgxNSwwLDAsMS05LjQtNy40ODVDNS42MTgsMTUuMDQ2LDEyLjY1NSwzLjYzMiwxNi43MDksMkExNS4wODMsMTUuMDgzLDAsMCwwLDE3LjgsOC41OTFabS0uMTY2LDE4Ljg1N2EuNDIzLjQyMywwLDAsMC0uMDU3LS4zMjdjLS41OTMtMS4xLTUuODEtMS42NDUtNi45MDctMS43NTJhOC4yNzIsOC4yNzIsMCwwLDAsMS42MzUsMS4zLDcuNzY2LDcuNzY2LDAsMCwwLDIuODE0LDEuMDQxQzE1LjkyMiwyNy44MzEsMTcuNDY3LDI3LjkzMywxNy42MzUsMjcuNDQ3WlwiIHN0eWxlPVwiZmlsbDojN2M2NDhmXCIvPjxnIHN0eWxlPVwib3BhY2l0eTowLjI1XCI+PHBhdGggZD1cIk0xOC4yNDgsMTAuNjE4YzQuNDcsNC44MjMsNi40NDUsNC45NzksNi4yMzcsMTAuNDc4LS4yNDksNi40NzYtNC41NDMsOC4xOTEtNy4wNTgsOC40Mi00LjIuNTUxLTcuNDk1LTEuNTI4LTguMzU4LTUuNjg2QzcuMzEyLDE3LjA2MywxMi45NzgsNi4wMjMsMTYuNjM3LDQuMzZBMTUuMzIzLDE1LjMyMywwLDAsMCwxOC4yNTgsMTAuNlpcIiBzdHlsZT1cImZpbGw6IzI2MDAzZFwiLz48L2c+PGcgc3R5bGU9XCJvcGFjaXR5OjAuNzVcIj48cGF0aCBkPVwiTTE3LjM4NSw5LjkyMUMyMC4zNjksMTQsMjQuMzE5LDEzLjcsMjUsMTkuNjQxYy4wOTQsNi45MjMtMy42LDkuMjgzLTYuMjM3LDkuOTQ4LTQuNSwxLjI3OS04LjUxNC0uNjQ1LTEwLjA5NC01LTMuMDM1LTcsMi42NTEtMTguNTE0LDYuMzEtMjAuOTE1YTE1LjA4MywxNS4wODMsMCwwLDAsMi4zNyw2LjIzN1pcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48L2c+YCxcbiAgXCJFbG1cIjogYDxwYXRoIGQ9XCJNMTYsMTYuNzY4LDIuNzY4LDMwSDI5LjIzMlpcIiBzdHlsZT1cImZpbGw6IzVmYjRjYlwiLz48cGF0aCBkPVwiTTI0LjEzLDIzLjM2MiwzMCwyOS4yMzJWMTcuNDkyWlwiIHN0eWxlPVwiZmlsbDojZWVhNDAwXCIvPjxwYXRoIGQ9XCJNMTUuMjMyLDE2LDIsMi43NjhWMjkuMjMyWlwiIHN0eWxlPVwiZmlsbDojNTk2Mjc3XCIvPjxwYXRoIGQ9XCJNMzAsMTQuNDQ4VjJIMTcuNTUyWlwiIHN0eWxlPVwiZmlsbDojNWZiNGNiXCIvPjxwYXRoIGQ9XCJNMjMuMzkyLDkuMzc2bDYuNTk0LDYuNTk0LTYuNjI0LDYuNjI0TDE2Ljc2OCwxNlpNMi43NjgsMiw4Ljg2Myw4LjFIMjIuMTExTDE2LjAxNiwyWlwiIHN0eWxlPVwiZmlsbDojOGNkNjM2XCIvPjxwYXRoIGQ9XCJNMTYsMTUuMjMybDYuMDUxLTYuMDUxSDkuOTQ5WlwiIHN0eWxlPVwiZmlsbDojZWVhNDAwXCIvPmAsXG4gIFwiRVJCXCI6IGA8cGF0aCBkPVwiTTcuMjUsMjQuNzVoMTcuNUwxMi41LDEyLjUsNy4yNSwxNy43NVpNMiwzMEgzMFYySDE2TDIsMTZabTI1LjM3NS0yLjYyNUg0LjYyNXYtMTAuNWwxMi4yNS0xMi4yNWgxMC41WlwiIHN0eWxlPVwiZmlsbDojOTIxYTFlXCIvPmAsXG4gIFwiRXJsYW5nXCI6IGA8cGF0aCBkPVwiTTYuMzg4LDIzLjg2N2ExMS4wMTIsMTEuMDEyLDAsMCwxLTMuNDQxLTguMjM0LDEwLjc2NSwxMC43NjUsMCwwLDEsMi44NjQtNy41SDJ2MTUuNzNabTIwLjA2NiwwYTE2LjQ0LDE2LjQ0LDAsMCwwLDIuNTM3LTMuMTM2bC00LjIxOC0xLjg3M2E4LjMwNiw4LjMwNiwwLDAsMS02LjY0MSw0LjEyYy00LjM1OS0uMDE0LTYuMDcyLTMuMzI5LTYuMDYzLTcuNTg0SDI4LjM2YTYuNDY1LDYuNDY1LDAsMCwwLDAtLjkzNSw5LjA1Nyw5LjA1NywwLDAsMC0yLjAyOS02LjMyNkgzMHYxNS43M0gyNi40NTZaTTEyLjMzMiwxMS43NDJhMy43MjMsMy43MjMsMCwwLDEsMy45LTMuMjMsMy4yOSwzLjI5LDAsMCwxLDMuNTMyLDMuMjNaXCIgc3R5bGU9XCJmaWxsOiNhMjAwM2VcIi8+YCxcbiAgXCJGI1wiOiBgPHBhdGggZD1cIk0yLDE2LDE1LjI4OCwyLjcxMlY5LjM1Nkw4LjY0NCwxNmw2LjY0NCw2LjY0NHY2LjY0NFpcIiBzdHlsZT1cImZpbGw6IzM3OGJiYVwiLz48cGF0aCBkPVwiTTEwLjU0MiwxNmw0Ljc0Ni00Ljc0NnY5LjQ5MlpcIiBzdHlsZT1cImZpbGw6IzM3OGJiYVwiLz48cGF0aCBkPVwiTTMwLDE2LDE2LjIzNywyLjcxMlY5LjM1NkwyMi44ODEsMTZsLTYuNjQ0LDYuNjQ0djYuNjQ0WlwiIHN0eWxlPVwiZmlsbDojMzBiOWRiXCIvPmAsXG4gIFwiRmlyZXN0b3JlIHNlY3VyaXR5IHJ1bGVzXCI6IGA8cGF0aCBkPVwiTTUuOCwyNC42bC4xNy0uMjM3TDEzLjk5LDkuMTQ5bC4wMTctLjE2MS0zLjUzNS02LjY0YS42NTYuNjU2LDAsMCwwLTEuMjI3LjIwN1pcIiBzdHlsZT1cImZpbGw6I2ZmYzI0YVwiLz48cGF0aCBkPVwiTTUuOSwyNC40MmwuMTI4LS4yNUwxMy45NjUsOS4xMTQsMTAuNDM5LDIuNDQ4YS42LjYsMCwwLDAtMS4xMzMuMjA2WlwiIHN0eWxlPVwiZmlsbDojZmZhNzEyXCIvPjxwYXRoIGQ9XCJNMTYuNTg0LDE0LjAxbDIuNjMyLTIuN0wxNi41ODMsNi4yODlhLjY3OC42NzgsMCwwLDAtMS4xOTUsMEwxMy45ODEsOC45NzFWOS4yWlwiIHN0eWxlPVwiZmlsbDojZjRiZDYyXCIvPjxwYXRoIGQ9XCJNMTYuNTM3LDEzLjksMTkuMSwxMS4yOCwxNi41MzcsNi40YS41ODkuNTg5LDAsMCwwLTEuMDc0LS4wNDdMMTQuMDQ5LDkuMDgybC0uMDQyLjEzOVpcIiBzdHlsZT1cImZpbGw6I2ZmYTUwZVwiLz48cG9seWdvbiBwb2ludHM9XCI1LjgwMiAyNC42MDEgNS44NzkgMjQuNTIzIDYuMTU4IDI0LjQxIDE2LjQxOCAxNC4xODggMTYuNTQ4IDEzLjgzNCAxMy45ODkgOC45NTYgNS44MDIgMjQuNjAxXCIgc3R5bGU9XCJmaWxsOiNmNjgyMGNcIi8+PHBhdGggZD1cIk0xNi45MTIsMjkuNzU2LDI2LjIsMjQuNTc3LDIzLjU0Niw4LjI0NkEuNjM1LjYzNSwwLDAsMCwyMi40NzEsNy45TDUuOCwyNC42bDkuMjMzLDUuMTU1YTEuOTI3LDEuOTI3LDAsMCwwLDEuODc4LDBcIiBzdHlsZT1cImZpbGw6I2ZkZTA2OFwiLz48cGF0aCBkPVwiTTI2LjExNSwyNC41MzQsMjMuNDgzLDguMzI2YS41NTcuNTU3LDAsMCwwLS45NjctLjM1M0w1LjksMjQuNTY5bDkuMTMxLDUuMWExLjkxMiwxLjkxMiwwLDAsMCwxLjg2MywwWlwiIHN0eWxlPVwiZmlsbDojZmNjYTNmXCIvPjxwYXRoIGQ9XCJNMTYuOTEyLDI5LjZhMS45MjcsMS45MjcsMCwwLDEtMS44NzgsMEw1Ljg3NiwyNC41MjIsNS44LDI0LjZsOS4yMzMsNS4xNTVhMS45MjcsMS45MjcsMCwwLDAsMS44NzgsMEwyNi4yLDI0LjU3N2wtLjAyMy0uMTRaXCIgc3R5bGU9XCJmaWxsOiNlZWFiMzdcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjMuMjAxIDEzIDE1LjQwNSAxNi41MzQgMTUuNDA1IDI3LjYwMyAyMS42MjUgMjQuNzg1IDIxLjYyNSAzMSAzMSAyNi43NDMgMzEgMTYuNTM0IDIzLjIwMSAxM1wiIHN0eWxlPVwiZmlsbDojMjUyNTI1XCIvPjxwb2x5Z29uIHBvaW50cz1cIjIzLjIwMSAxNC43MyAxNi45ODUgMTcuNTQ5IDE2Ljk4NSAyMC4zMjcgMjMuMjAxIDE3LjUwNyAyOS40MjEgMjAuMzI3IDI5LjQyMSAxNy41NDkgMjMuMjAxIDE0LjczXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjMuMjAxIDE5LjU2NCAxNi45ODUgMjIuMzgxIDE2Ljk4NSAyNS4xNTggMjMuMjAxIDIyLjMzNyAyOS40MjEgMjUuMTU4IDI5LjQyMSAyMi4zODEgMjMuMjAxIDE5LjU2NFwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI4LjYwNiAyNi4wOTggMjUuNTUxIDI0LjcxMiAyMy4yMDEgMjUuNzc4IDIzLjIwMSAyOC41NDggMjguNjA2IDI2LjA5OFwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG4gIFwiRmxvd1wiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiLTY3LjkwN1wiIHkxPVwiLTMwOC41NTFcIiB4Mj1cIi02Ny44NTdcIiB5Mj1cIi0zMDguNTY0XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoODcuODIyLCAwLCAwLCAtODguNTMzLCA1OTg0LjUzMiwgLTI3MjkwLjYxNylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmQ0NDFcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZmZiMDQ3XCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiLTY3LjY3NFwiIHkxPVwiLTMxMC4xMjFcIiB4Mj1cIi02Ny42NDdcIiB5Mj1cIi0zMTAuMDYzXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoODcuODIyLCAwLCAwLCAtODguNTMzLCA1OTY0LjY2NywgLTI3NDQzKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZDc1NFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNmZmI1MzJcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJjXCIgeDE9XCItNjcuMDI5XCIgeTE9XCItMzEwLjkxXCIgeDI9XCItNjcuMDI5XCIgeTI9XCItMzEwLjg2XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoODcuODIyLCAwLCAwLCAtODguNTMzLCA1OTAyLjgsIC0yNzUxOC43MzMpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZkNjQyXCIvPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZDQ0MVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNmZmI1MzJcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJkXCIgeDE9XCItNjYuMjUyXCIgeTE9XCItMzEwLjM3N1wiIHgyPVwiLTY2LjMyXCIgeTI9XCItMzEwLjM2MlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEwNi4xOTgsIDAsIDAsIC04OC41NTEsIDcwNDguNDI4LCAtMjc0NzQuMTY3KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZDQ0MVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNmZmE4MjlcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9mbG93PC90aXRsZT48cGF0aCBkPVwiTTIzLjQyNiwyOS40MVYyMi4xNzJoLTcuMThsNy4xOCw3LjIzOFwiIHN0eWxlPVwiZmlsbDojZmZkZjUxO2ZpbGwtb3BhY2l0eTowLjY5OTk5OTk4ODA3OTA3MVwiLz48cGF0aCBkPVwiTTI0LjIzMSwyNS4zMDZWMTcuNDc3SDE2LjQ2Nmw3Ljc2Niw3LjgyOVwiIHN0eWxlPVwiZmlsbDojZmY4OTAwO2ZpbGwtb3BhY2l0eTowLjY5OTk5OTk4ODA3OTA3MVwiLz48cGF0aCBkPVwiTTE5LjUxNSwyMi4xNzFWMzBoNy43NjZsLTcuNzY2LTcuODI5XCIgc3R5bGU9XCJmaWxsLW9wYWNpdHk6MC42OTk5OTk5ODgwNzkwNzE7ZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMjIuNjA4LDE4VjExLjgwOUgxNi40NjZMMjIuNjA4LDE4XCIgc3R5bGU9XCJmaWxsOiNmZmRmNGY7ZmlsbC1vcGFjaXR5OjAuNjk5OTk5OTg4MDc5MDcxXCIvPjxwYXRoIGQ9XCJNMjUuNTI0LDE2LjUyNVY4LjdIMTcuNzU5bDcuNzY2LDcuODI5XCIgc3R5bGU9XCJmaWxsLW9wYWNpdHk6MC43OTk5OTk5NTIzMTYyODQ7ZmlsbDp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNMTIuMjg4LDJWOS44MjloNy43NjZMMTIuMjg4LDJcIiBzdHlsZT1cImZpbGwtb3BhY2l0eTowLjgwMDAwMDAxMTkyMDkyOTtmaWxsOnVybCgjYylcIi8+PHBhdGggZD1cIk0xNC4xMSwxNC4yNjJWNi40MzNINC43MTlsNy43MzIsNy44MywxLjY1OSwwXCIgc3R5bGU9XCJmaWxsLW9wYWNpdHk6MC44Nzk5OTk5OTUyMzE2Mjg7ZmlsbDp1cmwoI2QpXCIvPjxwYXRoIGQ9XCJNMTQuMTEsMjkuOTU4VjIwLjQ4N0g0LjcxOWw5LjM5MSw5LjQ3MVwiIHN0eWxlPVwiZmlsbDojZmZiNzAwO2ZpbGwtb3BhY2l0eTowLjY5OTk5OTk4ODA3OTA3MVwiLz48cGF0aCBkPVwiTTE0LjExMiwyMi4xMTRWMTQuMjg1SDYuMzQ2bDcuNzY2LDcuODI5XCIgc3R5bGU9XCJmaWxsOiNmZmI3MDA7ZmlsbC1vcGFjaXR5OjAuNVwiLz48cGF0aCBkPVwiTTE2LjQ2NSwxMS44MDl2Ny44MjloNy43NjZsLTcuNzY2LTcuODI5XCIgc3R5bGU9XCJmaWxsOiNmZmNkMjU7ZmlsbC1vcGFjaXR5OjAuNjk5OTk5OTg4MDc5MDcxXCIvPjxwYXRoIGQ9XCJNMTQuMDkyLDEyLjY5MVY0Ljg2Mkg2LjMyNmw3Ljc2Niw3LjgyOVwiIHN0eWxlPVwiZmlsbDojZmY4OTAwO2ZpbGwtb3BhY2l0eTowLjcwMDAwMDA0NzY4MzcxNlwiLz48cGF0aCBkPVwiTTE2LjI0NiwyMi4xNzFWMzBoNy43NjZsLTcuNzY2LTcuODI5XCIgc3R5bGU9XCJmaWxsOiNmZjg5MDA7ZmlsbC1vcGFjaXR5OjAuNjk5OTk5OTg4MDc5MDcxXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIxLjEyMiAyMi4xNzIgMTguNjA5IDE5LjYzOCAxNi40NjUgMTkuNjM4IDE2LjQ2NiAxMS44MDkgMjAuODQ3IDExLjgwOSAxOC44ODIgOS44MjkgMTQuMDkyIDkuODI5IDE0LjExIDE0LjI2MiAxNC4xMSAyMC40ODcgMTQuMTEgMzAgMTYuMjQ2IDMwIDE2LjI0NiAyMi4xNzIgMjEuMTIyIDIyLjE3MlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG4gIFwiRm9ydHJhblwiOiBgPGcgaWQ9XCJnMzc2OFwiPjxyZWN0IGlkPVwicmVjdDg4MVwiIHg9XCIyLjM0XCIgeT1cIjIuMzRcIiB3aWR0aD1cIjI3LjMzXCIgaGVpZ2h0PVwiMjcuMzNcIiByeD1cIjUuMDhcIiBzdHlsZT1cImZpbGw6IzczNGY5NlwiLz48cGF0aCBpZD1cInBhdGgxNDEyXCIgZD1cIk02LjA2LDI1LjVjMC0xLjA5LDAtMS4xOS4xLTEuMTlsMS4yNS0uMDZjMSwwLDEuMTgtLjA2LDEuNDItLjE5YS43NC43NCwwLDAsMCwuMzktLjM3Yy4xMi0uMjMuMTItLjI5LjEyLTcuNzIsMC03LDAtNy41LS4xLTcuNjdhMS4wNiwxLjA2LDAsMCwwLS42My0uNSwxMC4yMywxMC4yMywwLDAsMC0xLjM4LS4xbC0xLjE3LDBWNS4zMkgyNS45NHY4LjgySDI0Ljg5YTguNTYsOC41NiwwLDAsMS0xLjItLjA1Yy0uMTQsMC0uMTUtLjA1LS4yMi0uOTVhMTIuNzMsMTIuNzMsMCwwLDAtLjM1LTIuNDMsMy4yMiwzLjIyLDAsMCwwLTIuNjMtMi44MWMtLjU3LS4xLTMuMS0uMi01LjE5LS4ySDEzLjg3djYuNjNsLjc1LDBBNi4zMyw2LjMzLDAsMCwwLDE2LjQ5LDE0YTEuODgsMS44OCwwLDAsMCwuODktLjkxLDUuODYsNS44NiwwLDAsMCwuMzktMS43NWMwLS4zMy4wOC0uNjYuMS0uNzNzMC0uMTMsMS4xOC0uMTNIMjAuMlYyMS4wNkgxNy44NWwwLS42MWE3Ljg1LDcuODUsMCwwLDAtLjU0LTIuNjZjLS4zNi0uNjgtMS4wNS0xLTIuNDUtMS4wOGwtLjc2LS4wNy0uMiwwLDAsMy4zNGMwLDMuNTEsMCwzLjY1LjMsMy45NHMuNDMuMzIsMy4yMi40MmMuMDUsMCwuMDcuMjguMDcsMS4xOXYxLjE4SDYuMDZaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PC9nPmAsXG4gIFwiRnJlZU1hcmtlciBUZW1wbGF0ZSBMYW5ndWFnZVwiOiBgPHBhdGggZD1cIk0yNC4wMjMsMjAuOSwyNS40MDgsMjNsNC42MTUtN0wyNS40MDgsOWwtMS4zODUsMi4xTDI3LjI1NSwxNlpcIiBzdHlsZT1cImZpbGw6IzAwNTBiMlwiLz48cGF0aCBkPVwiTTcuOTc3LDExLjEsNi41OTIsOSwxLjk3NywxNmw0LjYxNSw3LDEuMzg1LTIuMUw0Ljc0NSwxNlpcIiBzdHlsZT1cImZpbGw6IzAwNTBiMlwiLz48cGF0aCBkPVwiTTEzLjAzNSw5aDIuOGwtLjQ5NCwyLjhoMi44TDE4LjYzNSw5aDIuOGwtLjQ5NCwyLjhoMi44bC0uNDk1LDIuOGgtMi44bC0uNDkzLDIuOGgyLjhsLS40OTQsMi44aC0yLjhMMTguOTY3LDIzaC0yLjhsLjQ5My0yLjgtMi44LDBMMTMuMzc1LDIzSDEwLjU2N2wuNDkzLTIuOC0yLjgsMCwuNDk0LTIuOGgyLjhsLjQ5My0yLjc5M2gtMi44TDkuNzQxLDExLjhoMi44Wm0xLjMxOSw4LjRoMi44bC40OTQtMi44aC0yLjhaXCIgc3R5bGU9XCJmaWxsOiMwMDUwYjJcIi8+YCxcbiAgXCJHYW1lTWFrZXIgTGFuZ3VhZ2VcIjogYDxwYXRoIGQ9XCJNMTQuMjE2LDI0LjE2N2gtLjk4OWEzLjI0LDMuMjQsMCwwLDEtMi44MTEtMS42NDlMNi42NjcsMTZsNC42ODEtOC4xNjdIMTYuMmwtNC4zNCw4LjE3Ni4wNTcuMDMyTDEzLjkzNiwxOS41SDE2LjgyWk04LjQ1NSwxMC41MzVsLTEuMjctMi4yMWExLDEsMCwwLDAtLjg1OS0uNDkySDJsNCw2Ljk5MlpNMjEuNTQsOS40ODJhMy4yMzksMy4yMzksMCwwLDAtMi44MTItMS42NDlIMTcuNTIzTDE1LjA0NSwxMi41SDE4LjAyTDIwLjA4MywxNmwtNC41MzEsOC4xNjdoNS4wNTZMMjUuMzMzLDE2Wk0yNiwxNy4xNzJsLTIuNDcsNC4yNywxLjI4MywyLjIzM2ExLDEsMCwwLDAsLjg1OS40OTJIMzBaXCIgc3R5bGU9XCJmaWxsOiM4YmMzNGFcIi8+YCxcbiAgXCJHLWNvZGVcIjogYDxwYXRoIGQ9XCJNMTcuMzMzLDE2LjM1NmgwTDE3LjMwOSwyMC44bC0yLjEtMS4wMTguMDIzLTQuNDM3aDBsMTAuNTU4LTMuMDM4LDIuMTA2LDEuMDEzWlwiIHN0eWxlPVwiZmlsbDojOGUwMDAwXCIvPjxwYXRoIGQ9XCJNMjQuNDkyLDE4LjU3NmExNC45MDksMTQuOTA5LDAsMCwxLTEuMzQzLDMuMDc0LDcuODYsNy44NiwwLDAsMS0xLjM5LDEuODI5LDYuOCw2LjgsMCwwLDEtMS43LDEuMzI0LDcuNDA1LDcuNDA1LDAsMCwxLTIuMDA2Ljg1NSw2LDYsMCwwLDEtMy4wNzIuMjNBNC42NjgsNC42NjgsMCwwLDEsMTIuNDQsMjQuNjRhNS4zMjIsNS4zMjIsMCwwLDEtLjYzNi0uNjI5bC0uNTA4LS4yNDRhNC43MTcsNC43MTcsMCwwLDAsLjQ1Ny4xODEsNS41Miw1LjUyLDAsMCwxLTEuMDE1LTEuNzU4LDguMTM1LDguMTM1LDAsMCwxLS40My0xLjUzM2MtLjAyMy0uMTMxLS4wNDMtLjIzOS0uMDYxLS4zNGE3LjI5Miw3LjI5MiwwLDAsMCwuMzc3LDEuMzU0LDUuODM2LDUuODM2LDAsMCwwLDEuNjE0LDIuMzE5Yy4wNi4wNTQuMTI3LjEuMTkuMTQ4LjA0LjAwOC4wNzguMDIyLjExOS4wMjlhNi40NTQsNi40NTQsMCwwLDAsMi45MjgtLjIxOSw4LjQsOC40LDAsMCwwLDEuOTEtLjgwNyw3LjY1OCw3LjY1OCwwLDAsMCwxLjU4OS0xLjIyNyw4LjY2Miw4LjY2MiwwLDAsMCwxLjI5LTEuNjksMTIuNjY3LDEyLjY2NywwLDAsMCwxLjAxOS0yLjE5NEwyMy4zLDE5Yy4wNTYtLjE1My4wOTEtLjI1NC4wOTEtLjI1NFpcIiBzdHlsZT1cImZpbGw6IzhlMDAwMFwiLz48cGF0aCBkPVwiTTI0LjUyNCw0LjAxM2ExMS42LDExLjYsMCwwLDAtNi41ODgtMS45OTQsMTMuOCwxMy44LDAsMCwwLTkuMzczLDQuODRBMTguMjQzLDE4LjI0MywwLDAsMCw0LDE4LjhjLjAyMSwzLjg1MSwxLjQ4MSw3LjgwNiw1LjExMiw5LjU3NWExMy41NjMsMTMuNTYzLDAsMCwwLDQuMTU5LDEuNTY0LDEyLjExNCwxMi4xMTQsMCwwLDAsNi44NjktMS41MjljLTIuNzM0LDEuMzMzLTYuMTIsMS45OTMtOC44OTQuNC0yLjY4OS0xLjU0My0zLjk4My00LjcyNC00LjIyMS03LjctLjUxMi02LjQsMy4xLTEzLjY0LDkuMTMyLTE2LjI4MSwzLjUxMi0xLjUzNyw3LjMwNy0xLjU4NSwxMC4yMzksMS4xQzI2LjcyNyw1LjI0NCwyNSw0LjMwNSwyNC41MjQsNC4wMTNabS0xNC4zNTksMjQuOC0uMTM4LS4wOTNaXCIgc3R5bGU9XCJmaWxsOiM4ZTAwMDBcIi8+PHBhdGggZD1cIk0yMi41MjksMjYuNzg4Yy0zLjA0NCwyLjU4Mi03LjkyLDQuMTQ5LTExLjU1NCwxLjg1N0M3LjI0LDI2LjI4OSw2LjUzLDIxLjA4OSw3LjIxMiwxNy4wODNhMTcuMjE4LDE3LjIxOCwwLDAsMSw2LjctMTAuOTdjMy43NzEtMi42MzYsOC44OC0zLjQ5LDEyLjQ4OS0uMTgybC0yLjI3LDMuMjkxYy0yLjUxLTIuMzU1LTYuMy0xLjk1Ni04Ljk0NS0uMDUyQTEyLjQzNCwxMi40MzQsMCwwLDAsMTAuNSwxNi4yYy0uNjYyLDIuNjIzLS41LDYuMDExLDEuNSw4LjA0NywyLjA4OCwyLjEyOSw1LjExMiwyLjExNiw3LjY1Ni44QTEwLjMzNCwxMC4zMzQsMCwwLDAsMjQuNSwxOC42MzZMMTcuMzA3LDIwLjhsLjAyMi00LjQzOEwyNy44OSwxMy4zMTlsLjEuODA2aDBBMTYuNjI1LDE2LjYyNSwwLDAsMSwyMi41MjksMjYuNzg4WlwiIHN0eWxlPVwiZmlsbDojYmEwMDAwXCIvPmAsXG4gIFwiR0RTY3JpcHRcIjogYDxwYXRoIGQ9XCJNMjguMTY2LDIxLjAyOXYxLjY1MmEuMzc0LjM3NCwwLDAsMS0uMjYuMzU3bC0yLjYuODQxYS4zNjcuMzY3LDAsMCwxLS4zMzUtLjA1NC4zNzQuMzc0LDAsMCwxLS4xNTUtLjN2LTEuOGwtMi40MzguNDY0VjI0LjAyYS4zNzUuMzc1LDAsMCwxLS4zMjUuMzcxbC0zLjUyNS40ODNjLS4wMTYsMC0uMDM0LDAtLjA1MSwwQS4zNzQuMzc0LDAsMCwxLDE4LjEsMjQuNVYyMi41NTdsLTEuODE5LjAwOGgtLjI2N2wtMS44MTktLjAwOFYyNC41YS4zNzUuMzc1LDAsMCwxLS4zNzUuMzc2Yy0uMDE3LDAtLjAzNCwwLS4wNTIsMGwtMy41MjUtLjQ4M2EuMzc1LjM3NSwwLDAsMS0uMzI0LS4zNzFWMjIuMTg0bC0yLjQzOS0uNDY0djEuOGEuMzc0LjM3NCwwLDAsMS0uMTU0LjMuMzcuMzcsMCwwLDEtLjMzNi4wNTRsLTIuNi0uODQxYS4zNzQuMzc0LDAsMCwxLS4yNTktLjM1N1YyMS4wMjlsLTEuNjA4LS41NDFhNC41NTgsNC41NTgsMCwwLDAtLjEyNCwxLjA0YzAsNC4zMTcsNi4wODIsNy42NSwxMy42LDcuNjc0aC4wMTljNy41MTctLjAyNCwxMy42LTMuMzU2LDEzLjYtNy42NzRhNC41NCw0LjU0LDAsMCwwLS4xLS45NVpcIiBmaWxsPVwiIzQ3OGNiZlwiLz48cGF0aCBkPVwiTTMuNzExLDEzLjM3M1YyMC4xbC45MDcuMzA2YS4zNzQuMzc0LDAsMCwxLC4yNTYuMzU1djEuNjVsMS44NTUuNlYyMS4yNjdhLjM3Ni4zNzYsMCwwLDEsLjQ0NS0uMzY5bDMuMTg5LjYwOWEuMzc0LjM3NCwwLDAsMSwuMzA1LjM2OHYxLjgxOGwyLjc3NS4zNzl2LTEuODlhLjM3NC4zNzQsMCwwLDEsLjM3Ni0uMzc1aDBsMi4zMjcuMDA5LDIuMzI2LS4wMDlhLjM3NC4zNzQsMCwwLDEsLjM3Ny4zNzV2MS44OWwyLjc3NS0uMzc5VjIxLjg3NGEuMzczLjM3MywwLDAsMSwuMy0uMzY4bDMuMTg5LS42MDlhLjM3Ny4zNzcsMCwwLDEsLjQ0Ni4zNjl2MS43NDFsMS44NTUtLjZWMjAuNzZhLjM3NC4zNzQsMCwwLDEsLjI1NS0uMzU1bC42MTgtLjIwOFYxMy4zNzNoLjAxN0EyNi43OTIsMjYuNzkyLDAsMCwwLDMwLDEwLjkzMWExOS4wMiwxOS4wMiwwLDAsMC0yLjUwOS0zLjI4OEEyNC41MDcsMjQuNTA3LDAsMCwwLDI1LDkuMDkxYTEzLjAxLDEzLjAxLDAsMCwwLTEuMjc5LTEuMDUyLDE1LjM2NSwxNS4zNjUsMCwwLDAtMS4zNzUtLjg5NCwyOC4zNTMsMjguMzUzLDAsMCwwLC4yMzItMy4wNzFBMTUuOTY4LDE1Ljk2OCwwLDAsMCwxOC44NDcsMi44YTI2LjQ0LDI2LjQ0LDAsMCwwLTEuMzg1LDIuNyw5LjQ2LDkuNDYsMCwwLDAtMS40NTMtLjExNmgtLjAxOGE5LjQ1Nyw5LjQ1NywwLDAsMC0xLjQ1NC4xMTYsMjYuMjc1LDI2LjI3NSwwLDAsMC0xLjM4NS0yLjdBMTUuOTYxLDE1Ljk2MSwwLDAsMCw5LjQyMiw0LjA3NWEyOC4xNDIsMjguMTQyLDAsMCwwLC4yMzIsMy4wNzEsMTUuMzEyLDE1LjMxMiwwLDAsMC0xLjM3Ni44OTRBMTMuMDYsMTMuMDYsMCwwLDAsNyw5LjA5MWEyNC41NTMsMjQuNTUzLDAsMCwwLTIuNDktMS40NDhBMTkuMDIsMTkuMDIsMCwwLDAsMiwxMC45MzFhMjYuNzkyLDI2Ljc5MiwwLDAsMCwxLjY5NCwyLjQ0M1pcIiBmaWxsPVwiIzQ3OGNiZlwiLz48cGF0aCBkPVwibTEyLjQ2MiAxNi42YTIuNzM5IDIuNzM5IDAgMSAxLTIuNzQtMi43MzggMi43MzkgMi43MzkgMCAwIDEgMi43NCAyLjczOFwiIGZpbGw9XCIjZmZmXCIvPjxwYXRoIGQ9XCJtMTEuOCAxNi43NjRhMS44MTkgMS44MTkgMCAxIDEtMS44MTktMS44MTkgMS44MTcgMS44MTcgMCAwIDEgMS44MTkgMS44MTlcIiBmaWxsPVwiIzQxNDA0MlwiLz48cGF0aCBkPVwiTTE2LjE2NiwxOS41OWEuODQ0Ljg0NCwwLDAsMS0uODgyLS44VjE2LjI2N2EuODg2Ljg4NiwwLDAsMSwxLjc2NCwwdjIuNTIyYS44NDUuODQ1LDAsMCwxLS44ODMuOFwiIGZpbGw9XCIjZmZmXCIvPjxwYXRoIGQ9XCJtMTkuODcxIDE2LjZhMi43MzkgMi43MzkgMCAxIDAgMi43NC0yLjczOCAyLjczOSAyLjczOSAwIDAgMC0yLjc0IDIuNzM4XCIgZmlsbD1cIiNmZmZcIi8+PHBhdGggZD1cIm0yMC41MzEgMTYuNzY0YTEuODE4IDEuODE4IDAgMSAwIDEuODE3LTEuODE5IDEuODE3IDEuODE3IDAgMCAwLTEuODE3IDEuODE5XCIgZmlsbD1cIiM0MTQwNDJcIi8+YCxcbiAgXCJHaXRcIjogYDxwYXRoIGQ9XCJNMjkuNDcyLDE0Ljc1MywxNy4yNDcsMi41MjhhMS44LDEuOCwwLDAsMC0yLjU1LDBMMTIuMTU4LDUuMDY3bDMuMjIsMy4yMmEyLjE0MSwyLjE0MSwwLDAsMSwyLjcxMiwyLjczbDMuMSwzLjFhMi4xNDMsMi4xNDMsMCwxLDEtMS4yODUsMS4yMWwtMi44OTUtMi44OTV2Ny42MTdhMi4xNDEsMi4xNDEsMCwxLDEtMS43NjQtLjA2MlYxMi4zYTIuMTQ2LDIuMTQ2LDAsMCwxLTEuMTY1LTIuODE0TDEwLjkxMSw2LjMxNCwyLjUyOCwxNC43YTEuOCwxLjgsMCwwLDAsMCwyLjU1MUwxNC43NTMsMjkuNDcyYTEuOCwxLjgsMCwwLDAsMi41NSwwTDI5LjQ3MiwxNy4zYTEuOCwxLjgsMCwwLDAsMC0yLjU1MVwiIHN0eWxlPVwiZmlsbDojZGQ0YzM1XCIvPjxwYXRoIGQ9XCJNMTIuMTU4LDUuMDY3bDMuMjIsMy4yMmEyLjE0MSwyLjE0MSwwLDAsMSwyLjcxMiwyLjczbDMuMSwzLjFhMi4xNDMsMi4xNDMsMCwxLDEtMS4yODUsMS4yMWwtMi44OTUtMi44OTV2Ny42MTdhMi4xNDEsMi4xNDEsMCwxLDEtMS43NjQtLjA2MlYxMi4zYTIuMTQ2LDIuMTQ2LDAsMCwxLTEuMTY1LTIuODE0TDEwLjkxMSw2LjMxNFwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG4gIFwiR0xTTFwiOiBgPHBhdGggZD1cIk03Ljc3OSwxOC45MjNBMi4zMzMsMi4zMzMsMCwwLDEsNS40LDE3LjE2Yy4zMDYsMS40NjIsMS45NjEsMi44OTIsNy4xODMsMy41MjlhMTQuMjI4LDE0LjIyOCwwLDAsMCw5LjIzMi0xLjYxMnMuNzMzLS4zMjIuMjkzLjE3NmMwLDAtMy4xMDcsMi44NzMtOS4yLDIuOVMxLjk3LDE5LjEwNywyLDE2Yy0uMDI5LTMuMTA3LDQuODA2LTYuMTg1LDEwLjktNi4xNTVzOS4yLDIuOSw5LjIsMi45Yy40NC41LS4yOTMuMTc2LS4yOTMuMTc2LTEuMDg0LS43LTQuMjg2LTIuMDg5LTkuMjMyLTEuNjEyLTQuODY2LjQ2OS02LjQ1MywyLjEyMi02Ljk4MSwzLjIzNWEzLjI1NCwzLjI1NCwwLDAsMC0uMzE4LDEuMjQsMi40MjQsMi40MjQsMCwwLDEsMi41LTIuMzE2QTIuNTA3LDIuNTA3LDAsMCwxLDEwLjMsMTYuMTk1LDIuNTA2LDIuNTA2LDAsMCwxLDcuNzc5LDE4LjkyWm0xOS42NDctMS4wNzRIMzB2LjkzN0gyNi4zNDRWMTMuNjA5aDEuMDgydjQuMjRaTTIzLjQ1NCwxNmgyLjE2M3YyLjc5MUgyNC45bC0uMTA4LS42NDlhMS45LDEuOSwwLDAsMS0xLjYxNC43ODYsMi40MTQsMi40MTQsMCwwLDEtMi4zNzktMi43MTEsMi40ODUsMi40ODUsMCwwLDEsMi41MzEtMi43NEEyLjA1MywyLjA1MywwLDAsMSwyNS42LDE1LjIxN0gyNC41MTVhMS4xMzYsMS4xMzYsMCwwLDAtMS4xMzItLjg1MWMtLjc3MSwwLTEuNDg1LjUzNC0xLjQ4NSwxLjg2LDAsMS40MTMuNzcxLDEuNzgxLDEuNTA2LDEuNzgxYTEuMjgsMS4yOCwwLDAsMCwxLjI1NC0xLjEzOWgtMS4yVjE2Wk03Ljc4MSwxNC4xYTEuODYsMS44NiwwLDAsMC0xLjgsMi4xMDUsMS44NiwxLjg2LDAsMCwwLDEuOCwyLjEwNSwxLjg2LDEuODYsMCwwLDAsMS44LTIuMTA1QTEuODYsMS44NiwwLDAsMCw3Ljc4MSwxNC4xWm0yLjkxMSwxLjM4M2guNTI1di40NjhoLjAxM2ExLjEyLDEuMTIsMCwwLDEsLjk4Ny0uNTYzLDEuNTY1LDEuNTY1LDAsMCwxLDEuNTA2LDEuNjc3LDEuNjc1LDEuNjc1LDAsMCwxLTEuNTgzLDEuODI0LDEsMSwwLDAsMS0uODgtLjQ0M2gtLjAxM1YyMC4xaC0uNTU3VjE1LjQ3OVpNMTIuMSwxOC40Yy42MDgsMCwxLjAxOS0uNTI3LDEuMDE5LTEuMjU0LDAtLjQyNC0uMTcxLTEuMjY0LTEuMDMyLTEuMjY0LS44LDAtLjg5My44NjctLjg5MywxLjQwNiwwLC44OC41NTEsMS4xMTQuOTA1LDEuMTE0Wm01LS42NTJhMS4zNzgsMS4zNzgsMCwwLDEtMS40ODgsMS4xMzMsMS40ODcsMS40ODcsMCwwLDEtMS40ODItMS42NThjMC0xLjAyNS40OTQtMS44NDIsMS41ODgtMS44NDIuOTU2LDAsMS40MjQuNzYsMS40MjQsMS45MzFIMTQuNzIxYzAsLjY5LjMyMywxLjA4OS45NjIsMS4wODlhLjg0MS44NDEsMCwwLDAsLjg1NC0uNjUySDE3LjFabS0uNTktLjg4Yy0uMDMyLS41MTMtLjI0Ny0uOTg3LS45MjQtLjk4N2EuOTcyLjk3MiwwLDAsMC0uOTE4Ljk4N2gxLjg0MlptMy43MTMsMS45MTdoLS41NTdWMTYuNzUxYzAtLjU3Ni0uMTY1LS44NjctLjcwOS0uODY3LS4zMTcsMC0uODc0LjItLjg3NCwxLjF2MS44aC0uNTU3VjE1LjQ3OWguNTI1di40NjhoLjAxM2ExLjIsMS4yLDAsMCwxLDEtLjU2MywxLjA0NiwxLjA0NiwwLDAsMSwxLjE1OCwxLjE1MnYyLjI1M1wiIHN0eWxlPVwiZmlsbDojNDM4NmI1XCIvPmAsXG4gIFwiR28gbW9kdWxlXCI6IGA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDI1NC41IDIyNVwiPjx0aXRsZT5maWxlX3R5cGVfZ29fcGFja2FnZTwvdGl0bGU+PHBhdGggZD1cIk02MS45NDksMTMuMDY4YzE2LjA2LS4xNDcsMzIuMTQzLDAsNDguMjExLS4wNjItMy44MSwxNi40MDgtNy40NjYsMzIuODYyLTExLjI2MSw0OS4yNzdIMjUuNTQ4Yy0yLjMxOSwwLTQuNjM3LjA3Ny02Ljk1Ni0uMDkzQzMzLDQ1Ljc3NSw0Ny41NjYsMjkuNSw2MS45NDksMTMuMDY4WlwiIHN0eWxlPVwiZmlsbDojZjJlNmM5XCIvPjxwYXRoIGQ9XCJNMTQzLjUwOSwxMy4wMTRoNDguMDcyYzE0LjQzNywxNi40MzEsMjkuMDEzLDMyLjcyMyw0My40MTEsNDkuMTc3LTkuMjc0LjE5My0xOC41NDksMC0yNy44MjMuMDg1SDE1NC42NTRDMTUxLjAwNiw0NS44MzcsMTQ3LjExMSwyOS40NiwxNDMuNTA5LDEzLjAxNFpcIiBzdHlsZT1cImZpbGw6I2YyZTZjOVwiLz48cGF0aCBkPVwiTTExMC4xNiwxMy4wMTRoMzMuMzQ5YzMuNiwxNi40NDYsNy40ODksMzIuODIzLDExLjE2LDQ5LjI1NEg5OC45QzEwMi42OTQsNDUuODY4LDEwNi4zNSwyOS40MjIsMTEwLjE2LDEzLjAxNFpcIiBzdHlsZT1cImZpbGw6I2VmYzc1ZVwiLz48cGF0aCBkPVwiTTE4LjU5Miw2Mi4xODNjMi4zMTkuMTcsNC42MzcuMDg1LDYuOTU2LjA5M0g5OC45cTAsMjYuMDI2LjA1NCw1Mi4wNTJhMTguODU3LDE4Ljg1NywwLDAsMCwxLjk3OS4xMzloNTIuMTE0YTE0LjY5MywxNC42OTMsMCwwLDAsMS41NDYtLjEwOGMuMTQ3LTE3LjM2NiwwLTM0LjczMi4wNy01Mi4xaDUyLjUxNmM5LjI3NC0uMDQ2LDE4LjU0OS4xMDgsMjcuODIzLS4wODVWMjEyLjYySDE4LjZRMTguNTkyLDEzNy40MDUsMTguNTkyLDYyLjE4M1pcIiBzdHlsZT1cImZpbGw6I2U3YmY1NVwiLz48cGF0aCBkPVwiTTk4LjksNjIuMjkxaDU1Ljc2OWMtLjA2MiwxNy4zNjYuMDg1LDM0LjczMi0uMDcsNTIuMS0uNTE4LjA1NC0xLjAzNi4wOTMtMS41NDYuMTA4SDEwMC45NGExOC44NTcsMTguODU3LDAsMCwxLTEuOTcxLS4xMzFDOTguODYxLDk2Ljk5Myw5OC45NjksNzkuNjM0LDk4LjksNjIuMjkxWlwiIHN0eWxlPVwiZmlsbDojZGJiNTUxXCIvPjxyZWN0IHg9XCIzNC4zODlcIiB5PVwiMTYzLjY4MlwiIHdpZHRoPVwiNzIuNDE3XCIgaGVpZ2h0PVwiMjcuODg1XCIgc3R5bGU9XCJmaWxsOiNmMmYyZjJcIi8+PHBhdGggZD1cIk02MS40MjIsMTM3LjA4NWMtLjM4OCwwLS40ODctLjE5NC0uMjkxLS40ODdsMi4wNDEtMi42MjVhMS4zOTMsMS4zOTMsMCwwLDEsMS4wNjktLjQ4N2gzNC43Yy4zODgsMCwuNDg3LjI5MS4yOTEuNTg0TDk3LjU4MiwxMzYuNmExLjQ4MSwxLjQ4MSwwLDAsMS0uOTcyLjU4NFpcIiBzdHlsZT1cImZpbGw6I2NlMzI2MlwiLz48cGF0aCBkPVwiTTQ2Ljc0LDE0Ni4wMjhjLS4zODgsMC0uNDg3LS4xOTQtLjI5MS0uNDg3bDIuMDQxLTIuNjI1YTEuMzkzLDEuMzkzLDAsMCwxLDEuMDY5LS40ODdIOTMuODlhLjQ0Ny40NDcsMCwwLDEsLjQ4Ny41ODRsLS43NzgsMi4zMzNhLjg1Ljg1LDAsMCwxLS44NzUuNTg0WlwiIHN0eWxlPVwiZmlsbDojY2UzMjYyXCIvPjxwYXRoIGQ9XCJNNzAuMjY0LDE1NC45NzFjLS4zODgsMC0uNDg3LS4yOTEtLjI5MS0uNTg0bDEuMzU3LTIuNDNhMS4yODksMS4yODksMCwwLDEsLjk3Mi0uNTg0SDkxLjc0N2MuMzg4LDAsLjU4NC4yOTEuNTg0LjY4MWwtLjE5NCwyLjMzM2EuNzMxLjczMSwwLDAsMS0uNjgxLjY4MVpcIiBzdHlsZT1cImZpbGw6I2NlMzI2MlwiLz48cGF0aCBkPVwiTTE3MS4xNjMsMTM1LjMzNWMtNi4xMjQsMS41NTYtMTAuMywyLjcyMi0xNi4zMyw0LjI4LTEuNDYyLjM4OC0xLjU1Ni40ODctMi44MTktLjk3MmExMy4wMTEsMTMuMDExLDAsMCwwLTQuNTY5LTMuNjk0Yy02LjEyNC0zLjAxMy0xMi4wNTQtMi4xMzgtMTcuNTk0LDEuNDYyYTIwLjY3MSwyMC42NzEsMCwwLDAtOS45MTgsMTguNDY5LDE1LjI0MiwxNS4yNDIsMCwwLDAsMTMuMTIzLDE1LjI2MWM2LjYxLjg3NSwxMi4xNTEtMS40NjIsMTYuNTI1LTYuNDE1Ljg3NS0xLjA2OSwxLjY1My0yLjIzNiwyLjYyNS0zLjZIMTMzLjQ0NmMtMi4wNDEsMC0yLjUyOC0xLjI2My0xLjg0Ny0yLjkxNiwxLjI2My0zLjAxMywzLjYtOC4wNjgsNC45NTgtMTAuNmEyLjYyNSwyLjYyNSwwLDAsMSwyLjQzLTEuNTU2aDM1LjM4NGMtLjE5NCwyLjYyNS0uMTk0LDUuMjQ5LS41ODQsNy44NzRhNDEuNDU2LDQxLjQ1NiwwLDAsMS03Ljk2NywxOS4wNDJjLTYuOTk1LDkuMjM0LTE2LjEzNiwxNC45Ny0yNy43LDE2LjUyNS05LjUyNiwxLjI2My0xOC4zNzQtLjU4NC0yNi4xNDgtNi40MTVBMzAuNTMzLDMwLjUzMywwLDAsMSw5OS42MjUsMTYwLjUxYy0xLjI2My0xMC42LDEuODQ3LTIwLjEyMiw4LjI2Mi0yOC40ODFBNDMuMTM3LDQzLjEzNywwLDAsMSwxMzUuMSwxMTUuMjEyYzkuMTM3LTEuNjUzLDE3Ljg4Ni0uNTg0LDI1Ljc2LDQuNzYzQTMwLjQ3MSwzMC40NzEsMCwwLDEsMTcyLjE0LDEzMy42OEMxNzIuNzE5LDEzNC41NTgsMTcyLjMzLDEzNS4wNDQsMTcxLjE2MywxMzUuMzM1WlwiIHN0eWxlPVwiZmlsbDojY2UzMjYyXCIvPjxwYXRoIGQ9XCJNMjAzLjMzOCwxODkuMDljLTguODQ2LS4xOTQtMTYuOTEzLTIuNzIyLTIzLjcxOS04LjU1NGEzMC40ODUsMzAuNDg1LDAsMCwxLTEwLjUtMTguNzYxYy0xLjc1LTEwLjk4NCwxLjI2My0yMC43LDcuODc0LTI5LjM1Niw3LjEtOS4zMzEsMTUuNjUxLTE0LjE5MiwyNy4yMTgtMTYuMjMzLDkuOTE4LTEuNzUsMTkuMjQ3LS43NzgsMjcuNyw0Ljk1OCw3LjY4LDUuMjQ5LDEyLjQ0MiwxMi4zNDUsMTMuNzA2LDIxLjY3NiwxLjY1MywxMy4xMjMtMi4xMzgsMjMuODE2LTExLjE3OSwzMi45NTNhNDQuNTQyLDQ0LjU0MiwwLDAsMS0yMy4zMjksMTIuNDQyQzIwOC40OSwxODguNywyMDUuODY2LDE4OC44LDIwMy4zMzgsMTg5LjA5Wm0yMy4xMzUtMzkuMjcxYTI3Ljk3OCwyNy45NzgsMCwwLDAtLjI5MS0zLjIwOCwxNi4wMTMsMTYuMDEzLDAsMCwwLTE4LjM3NS0xMy4yMzVxLS43MzQuMTE5LTEuNDU0LjMwNmMtOS4wNCwyLjA0MS0xNC44NzMsNy43NzctMTcuMDExLDE2LjkxM2ExNi4wMDksMTYuMDA5LDAsMCwwLDguOTQzLDE4LjM3NCwxNy44MiwxNy44MiwwLDAsMCwxNS44NDUtLjU4NGM3LjY3OS0zLjk4NSwxMS44NTktMTAuMjA2LDEyLjM0OC0xOC41NjZaXCIgc3R5bGU9XCJmaWxsOiNjZTMyNjJcIi8+PC9zdmc+YCxcbiAgXCJHb1wiOiBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyNTQuNSAyMjVcIj48dGl0bGU+ZmlsZV90eXBlX2dvPC90aXRsZT48cGF0aCBkPVwiTS00Ni45MjYsODljLS42MjEsMC0uNzc3LS4zMTEtLjQ2Ni0uNzc3bDMuMjYyLTQuMTk0YTIuMjI1LDIuMjI1LDAsMCwxLDEuNzA4LS43NzdIMTMuMDI2Yy42MjEsMCwuNzc3LjQ2Ni40NjYuOTMybC0yLjY0LDQuMDM4YTIuMzY3LDIuMzY3LDAsMCwxLTEuNTUzLjkzMlpcIiBzdHlsZT1cImZpbGw6IzAwYWNkN1wiLz48cGF0aCBkPVwiTS03MC4zNzksMTAzLjI4NWMtLjYyMSwwLS43NzctLjMxMS0uNDY2LS43NzdsMy4yNjItNC4xOTRhMi4yMjUsMi4yMjUsMCwwLDEsMS43MDgtLjc3N0g0Ljk1YS43MTQuNzE0LDAsMCwxLC43NzcuOTMyTDQuNDg0LDEwMi4yYTEuMzU4LDEuMzU4LDAsMCwxLTEuNC45MzJaXCIgc3R5bGU9XCJmaWxsOiMwMGFjZDdcIi8+PHBhdGggZD1cIk0tMzIuNzkyLDExNy41NzRjLS42MjEsMC0uNzc3LS40NjYtLjQ2Ni0uOTMybDIuMTc0LTMuODgzYTIuMDYsMi4wNiwwLDAsMSwxLjU1My0uOTMySDEuNTMzYy42MjEsMCwuOTMyLjQ2Ni45MzIsMS4wODdsLS4zMTEsMy43MjhhMS4xNjcsMS4xNjcsMCwwLDEtMS4wODcsMS4wODdaXCIgc3R5bGU9XCJmaWxsOiMwMGFjZDdcIi8+PHBhdGggZD1cIk0xMjguNDI2LDg2LjJjLTkuNzg1LDIuNDg1LTE2LjQ2NCw0LjM0OS0yNi4wOTMsNi44MzQtMi4zMy42MjEtMi40ODUuNzc3LTQuNS0xLjU1My0yLjMzLTIuNjQtNC4wMzgtNC4zNDktNy4zLTUuOS05Ljc4NS00LjgxNS0xOS4yNTktMy40MTctMjguMTEyLDIuMzMtMTAuNTYxLDYuODM0LTE2LDE2LjkyOS0xNS44NDIsMjkuNTEuMTU1LDEyLjQyNSw4LjcsMjIuNjc2LDIwLjk2OCwyNC4zODUsMTAuNTYxLDEuNCwxOS40MTQtMi4zMywyNi40LTEwLjI1MSwxLjQtMS43MDgsMi42NC0zLjU3Miw0LjE5NC01Ljc0N0g2OC4xNjNjLTMuMjYyLDAtNC4wMzgtMi4wMTktMi45NTEtNC42NTksMi4wMTktNC44MTUsNS43NDctMTIuODkxLDcuOTIxLTE2LjkyOWE0LjE5NCw0LjE5NCwwLDAsMSwzLjg4My0yLjQ4NWg1Ni41MzVjLS4zMTEsNC4xOTQtLjMxMSw4LjM4Ny0uOTMyLDEyLjU4MWE2Ni4yMzksNjYuMjM5LDAsMCwxLTEyLjczNiwzMC40NDJDMTA4LjcsMTU5LjUxLDk0LjEsMTY4LjY3Myw3NS42MTgsMTcxLjE1OGMtMTUuMjIxLDIuMDE5LTI5LjM1NS0uOTMyLTQxLjc4LTEwLjI1MWE0OC43ODUsNDguNzg1LDAsMCwxLTE5LjcyNS0zNC40OGMtMi4wMTktMTYuOTI5LDIuOTUxLTMyLjE1LDEzLjItNDUuNTA4QzM4LjM0Miw2Ni40NzUsNTIuOTQyLDU3LjMxMiw3MC44LDU0LjA1YzE0LjYtMi42NCwyOC41NzgtLjkzMiw0MS4xNTksNy42MWE0OC42ODYsNDguNjg2LDAsMCwxLDE4LjAxNywyMS45QzEzMC45MTEsODQuOTU4LDEzMC4yODksODUuNzM1LDEyOC40MjYsODYuMlpcIiBzdHlsZT1cImZpbGw6IzAwYWNkN1wiLz48cGF0aCBkPVwiTTE3OS44MzUsMTcyLjA5Yy0xNC4xMzQtLjMxMS0yNy4wMjUtNC4zNDktMzcuOS0xMy42NjhhNDguNzExLDQ4LjcxMSwwLDAsMS0xNi43NzQtMjkuOTc2Yy0yLjgtMTcuNTUxLDIuMDE5LTMzLjA4MiwxMi41ODEtNDYuOTA1LDExLjMzOC0xNC45MSwyNS4wMDYtMjIuNjc2LDQzLjQ4OC0yNS45MzgsMTUuODQyLTIuOCwzMC43NTMtMS4yNDMsNDQuMjY1LDcuOTIxLDEyLjI3LDguMzg3LDE5Ljg4LDE5LjcyNSwyMS45LDM0LjYzNSwyLjY0LDIwLjk2OC0zLjQxNywzOC4wNTItMTcuODYxLDUyLjY1MmE3MS4xNyw3MS4xNywwLDAsMS0zNy4yNzYsMTkuODhDMTg4LjA2NywxNzEuNDY5LDE4My44NzQsMTcxLjYyNCwxNzkuODM1LDE3Mi4wOVpNMjE2LjgsMTA5LjM0M2E0NC43LDQ0LjcsMCwwLDAtLjQ2Ni01LjEyNWMtMi44LTE1LjM3Ni0xNi45MjktMjQuMDc0LTMxLjY4NC0yMC42NTctMTQuNDQ0LDMuMjYyLTIzLjc2MywxMi40MjUtMjcuMTgsMjcuMDI1YTI1LjU3OSwyNS41NzksMCwwLDAsMTQuMjg5LDI5LjM1NWM4LjU0MiwzLjcyOCwxNy4wODUsMy4yNjIsMjUuMzE3LS45MzJDMjA5LjM0NSwxMzIuNjQsMjE2LjAyNCwxMjIuNywyMTYuOCwxMDkuMzQzWlwiIHN0eWxlPVwiZmlsbDojMDBhY2Q3XCIvPjwvc3ZnPmAsXG4gIFwiR3JhZGxlXCI6IGA8cGF0aCBkPVwiTTEzLjUsNi45NjVoNy45MjNsNCw2Ljg4N0gyOS45OEExNC4xLDE0LjEsMCwwLDAsMTEuMDI0LDIuOTMyTDEzLjUsNi45NjVcIiBzdHlsZT1cImZpbGw6IzAwNjUzM1wiLz48cGF0aCBkPVwiTTI1LjYyOCwxOGwtNC4yMDksNy4yNTJIMTAuODA2TDUuNSwxNi4xMDgsOS43MzksOC44LDcuNCw0Ljk4MUExNC4wMywxNC4wMywwLDEsMCwzMCwxOEgyNS42MjhcIiBzdHlsZT1cImZpbGw6IzgyYjgxNlwiLz48cGF0aCBkPVwiTTIxLjA2MSwxNS45NjNhNS4wMjYsNS4wMjYsMCwxLDEtNS4wMjYtNSw1LjAxMyw1LjAxMywwLDAsMSw1LjAyNiw1XCIgc3R5bGU9XCJmaWxsOiMwMDY1MzJcIi8+YCxcbiAgXCJHcmFwaFFMXCI6IGA8cmVjdCB4PVwiLTAuNDNcIiB5PVwiMTIuNTM0XCIgd2lkdGg9XCIyMi45MDFcIiBoZWlnaHQ9XCIxLjE4N1wiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtNS44NTggMTYuMTA3KSByb3RhdGUoLTU5Ljk5OSlcIiBzdHlsZT1cImZpbGw6I2UxMDA5OFwiLz48cmVjdCB4PVwiNC41NDVcIiB5PVwiMjEuMTYyXCIgd2lkdGg9XCIyMi45MDJcIiBoZWlnaHQ9XCIxLjE4N1wiIHN0eWxlPVwiZmlsbDojZTEwMDk4XCIvPjxyZWN0IHg9XCIxMC40M1wiIHk9XCIxOC4wMDhcIiB3aWR0aD1cIjEuMTg3XCIgaGVpZ2h0PVwiMTMuMjI3XCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0xNS44MTIgMjEuODU3KSByb3RhdGUoLTU5Ljk5OSlcIiBzdHlsZT1cImZpbGw6I2UxMDA5OFwiLz48cmVjdCB4PVwiMjAuMzgxXCIgeT1cIjAuNzcxXCIgd2lkdGg9XCIxLjE4N1wiIGhlaWdodD1cIjEzLjIyN1wiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSg0LjA5MiAyMS44NTYpIHJvdGF0ZSgtNTkuOTk5KVwiIHN0eWxlPVwiZmlsbDojZTEwMDk4XCIvPjxyZWN0IHg9XCI0LjQxMlwiIHk9XCI2Ljc4N1wiIHdpZHRoPVwiMTMuMjI3XCIgaGVpZ2h0PVwiMS4xODdcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTIuMjEzIDYuNTAyKSByb3RhdGUoLTMwLjAwMSlcIiBzdHlsZT1cImZpbGw6I2UxMDA5OFwiLz48cmVjdCB4PVwiMjAuMzg5XCIgeT1cIjEuNjc3XCIgd2lkdGg9XCIxLjE4N1wiIGhlaWdodD1cIjIyLjkwMVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMy43NTMgMTIuMjUpIHJvdGF0ZSgtMzAuMDAxKVwiIHN0eWxlPVwiZmlsbDojZTEwMDk4XCIvPjxyZWN0IHg9XCI1LjQ1NFwiIHk9XCI5LjM4NlwiIHdpZHRoPVwiMS4xODdcIiBoZWlnaHQ9XCIxMy4yMjhcIiBzdHlsZT1cImZpbGw6I2UxMDA5OFwiLz48cmVjdCB4PVwiMjUuMzZcIiB5PVwiOS4zODZcIiB3aWR0aD1cIjEuMTg3XCIgaGVpZ2h0PVwiMTMuMjI4XCIgc3R5bGU9XCJmaWxsOiNlMTAwOThcIi8+PHJlY3QgeD1cIjE1LjIyMlwiIHk9XCIyNC4wOTdcIiB3aWR0aD1cIjExLjUwNFwiIGhlaWdodD1cIjEuMDM3XCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC05LjQ5OCAxMy43ODUpIHJvdGF0ZSgtMzAuMDAxKVwiIHN0eWxlPVwiZmlsbDojZTEwMDk4XCIvPjxwYXRoIGQ9XCJNMjguMTIsMjNhMi41LDIuNSwwLDEsMS0uOTE1LTMuNDExQTIuNSwyLjUsMCwwLDEsMjguMTIsMjNcIiBzdHlsZT1cImZpbGw6I2UxMDA5OFwiLz48cGF0aCBkPVwiTTguMiwxMS41YTIuNSwyLjUsMCwxLDEtLjkxNS0zLjQxMUEyLjUsMi41LDAsMCwxLDguMiwxMS41XCIgc3R5bGU9XCJmaWxsOiNlMTAwOThcIi8+PHBhdGggZD1cIk0zLjg4LDIzYTIuNSwyLjUsMCwxLDEsMy40MTEuOTE1QTIuNSwyLjUsMCwwLDEsMy44OCwyM1wiIHN0eWxlPVwiZmlsbDojZTEwMDk4XCIvPjxwYXRoIGQ9XCJNMjMuOCwxMS41YTIuNSwyLjUsMCwxLDEsMy40MTEuOTE1QTIuNSwyLjUsMCwwLDEsMjMuOCwxMS41XCIgc3R5bGU9XCJmaWxsOiNlMTAwOThcIi8+PHBhdGggZD1cIk0xNiwzMGEyLjUsMi41LDAsMSwxLDIuNS0yLjVBMi40OTMsMi40OTMsMCwwLDEsMTYsMzBcIiBzdHlsZT1cImZpbGw6I2UxMDA5OFwiLz48cGF0aCBkPVwiTTE2LDYuOTkxYTIuNSwyLjUsMCwxLDEsMi41LTIuNSwyLjQ5MywyLjQ5MywwLDAsMS0yLjUsMi41XCIgc3R5bGU9XCJmaWxsOiNlMTAwOThcIi8+YCxcbiAgXCJHcm9vdnlcIjogYDxwYXRoIGQ9XCJNNy40NTMsMjkuODY1YzAtLjA3NC40OTQtMS43MTcsMS4xLTMuNjUxQTIxLjgwOCwyMS44MDgsMCwwLDAsOS41LDIyLjZjLS4wNzktLjA1Ni0uMzUuMDQ1LS42LjIyNC0uNzY0LjUzOC0uOTIuNC0xLjQ5MS0xLjM1Ni0uNjE3LTEuOS0uNjM5LTIuMDkxLS4zMTctMi44MS4yMS0uNDcuMi0uNTc5LS4xNDctMS4yNzdhMy43NSwzLjc1LDAsMCwxLS4zNzctMS4wNDRjMC0uMjYtMS40MTMtMS40MzgtMy42NDctMy4wNEEzLjg0NSwzLjg0NSwwLDAsMSwyLDEyLjVhMTAuNDc3LDEwLjQ3NywwLDAsMSwyLjM3OC0uMDM5bDIuMzc4LjEuMjMyLS43NDFjLjk4MS0zLjEzLDIuNDYzLTUuOTU3LDMuMTIyLTUuOTU3LjEzNywwLC40MTYuMjY1LjYxOS41ODguMzMxLjUyNy4zNzYuODUzLjQzNSwzLjEyNmEyMy4wMTMsMjMuMDEzLDAsMCwwLC4xNjUsMi43MzljLjA1NS4xMS4yMjgtLjAzNS4zODUtLjMyMi4yLS4zNjcuNDEyLS40NjcuNzEtLjMzNXMuNDg1LjA0My42NDYtLjM0NWMuMjQyLS41ODIsMS40NTUtNC41MTMsMS40NTUtNC43MTcsMC0uMDY5LjI0LS45LjUzNC0xLjg0NnMuNjMxLTIuMDM2Ljc1MS0yLjQyNGMuMjEzLS42ODguMjQ2LS42MDcsMS41MjQsMy43MjYsMS4zMiw0LjQ3NCwyLjAzLDYuMTI0LDIuMzg1LDUuNTQ0LjI0OC0uNCwxLjU1LS40MjgsMS45MTQtLjAzNC4yMDcuMjI0LjMzOC4yMjEuNDUzLS4wMS4yMzctLjQ4LjgtLjQuOTUzLjE0LjExNy40MjMuMTQ3LjQyMy4zMiwwYS44MTIuODEyLDAsMCwxLC42OTItLjQ2NmMuMzg5LDAsLjUzOC4xNjQuNjY2LjczNWwuMTY1LjczNSwyLjU1OC0uMTgzQTExLjUyMSwxMS41MjEsMCwwLDEsMzAsMTIuNDY4YTIwLjc5LDIwLjc5LDAsMCwxLTIuMzIxLDEuODg5Yy0xLjI3Ny45Ni0yLjM0MiwxLjc3NS0yLjM2OCwxLjgxYTE3LjYwNywxNy42MDcsMCwwLDAsLjEyOCwxLjg2NywxMS4wNzUsMTEuMDc1LDAsMCwxLS41NDQsNS43MTMsNC4zMDgsNC4zMDgsMCwwLDEtMS4wMjEsMS40OWMtLjI3OC4xODYtLjUwNi40LS41MDYuNDg2cy4zLDEuMDc3LjY2LDIuMjEyQTkuNjgyLDkuNjgyLDAsMCwxLDI0LjU2OCwzMGMtLjEwOSwwLTIuNzU3LTIuMDctNi44NzYtNS4zNzNhMTEuMTQzLDExLjE0MywwLDAsMC0xLjY0My0xLjE4NGMtLjE3MSwwLTEuNjQ5LDEuMTMzLTUuOTg0LDQuNTg4LTIuNTE0LDItMi42MTIsMi4wNzMtMi42MTIsMS44MzVabTUuMTU4LTQuNzI3YzEuMzM3LTEuMDUxLDIuNjY0LTIuMDc4LDIuOTQ3LTIuMjgyLjQ4OC0uMzUxLjY1MS0uMjYzLDMuMDIxLDEuNjMxLDEuMzc4LDEuMSwyLjczNywyLjE3NCwzLjAyMSwyLjM4NHMuODY4LjY2NiwxLjMsMS4wMTNjLjQ5MS40Ljc0Mi40OTIuNjc0LjI1Ni0uNzctMi42MzQtLjc5My0yLjY3OC0xLjMyNy0yLjQ3Ni0uNjQ0LjI0NC0xLjA0My0uMDA2LTEuMjQ5LS43ODNhMS43MzksMS43MzksMCwwLDEsLjI0LTEuNDUxLDIuMzc3LDIuMzc3LDAsMCwwLS4yMjEtMi43MzEsNC4yODksNC4yODksMCwwLDEtLjY4Ni0xLjUzbC0uMjQxLTEuMDIzLS41MTcuNzFjLS42MzYuODczLTEuNDExLjkxOC0yLjA1OS4xMTlsLS40NzctLjU4OC0uNTU0Ljc2MmMtLjU1NS43NjMtMS4xOTQuODYyLTEuODQ0LjI4NC0uMTc5LS4xNTktLjI1OC0uMS0uMjU4LjJhMS4yNCwxLjI0LDAsMCwxLS4zNzUuNzc3Yy0uNjE5LjU3LTEuMjIzLjQxOS0xLjYzMy0uNDA5TDEyLDE5LjI0OWwtLjMuNzc1YTcuMDMyLDcuMDMyLDAsMCwxLS44NTMsMS40NzksMTMuODkxLDEzLjg5MSwwLDAsMC0xLjQ1NSwzLjY2M2MtLjUsMS42MjctLjksMy4wNDItLjksMy4xNDNzLjM4MS0uMTQxLjg0Ny0uNTM4LDEuOTQyLTEuNTgyLDMuMjc5LTIuNjMzWm0xMS4zNDMtMS4xMzFjMS4wMTUtMS4xNTQsMS4yNS0zLjI4OC44LTcuMjcxLS4zNzUtMy4zMjktLjU2Mi00LjQxOS0uNzg0LTQuNTY1LS4xNTQtLjEtLjE3Ny4wMS0uMDkxLjQyNi41NjIsMi43LjU5Myw0LjA1My4xLDQuNDM0LS4zMzcuMjYyLS42OTUtLjcxOS0uOTc2LTIuNjc1LS4yMTgtMS41MTUtLjQ0NS0yLjItLjYxNy0xLjg1YTMuMzU5LDMuMzU5LDAsMCwwLC4xNiwxLjA3LDI2LjcxOCwyNi43MTgsMCwwLDEsLjM5NCwzLjM4MSwyMS43NTcsMjEuNzU3LDAsMCwwLC4zNzUsMy4xNTFjLjMwOS45ODUuOC43NDcsMS4xMTgtLjU0cy4zNS0uNDI1LjA0NCwxLjA1NWMtLjMxNywxLjUzNi0xLjI2LDItMi4zNTIsMS4xNS0uMTc1LS4xMzYtLjIzNCwwLS4yMzQuNTU1YTQuOTg4LDQuOTg4LDAsMCwxLS4zLDEuNWwtLjMuNzY1LjQwOC4xMzlBMi4yNDcsMi4yNDcsMCwwLDAsMjMuOTU0LDI0LjAwN1pNOS4zNDYsMjEuNDY4YzIuMTE4LTEuMjMyLDIuNS0yLjY2OCwxLjc5My02LjgwNWEyMS45NDEsMjEuOTQxLDAsMCwxLS4zLTIuM2MwLTEuMDI5LS4yNTYtLjU1NC0uNDQ4LjgzMi0uMjU0LDEuODMyLTEuMDE2LDMuMzg5LTEuNjU3LDMuMzgzLS41NTctLjAwNS0uNzM4LS4yMS0uOTY4LTEuMDk0LS40MTMtMS41ODUuMDM3LTQuMDE4LDEuMTg0LTYuNDA2Ljg0LTEuNzQ5LDEuMy0xLjkwOCwxLjMtLjQ0OCwwLDIuMjc2LS43NzYsNS42MjUtMS4xODQsNS4xMTVhMy44MTQsMy44MTQsMCwwLDEsLjA2NS0yLjJjLjItLjcyLjE1Ny0xLjgxOC0uMDY2LTEuODE4LS4yNTksMC0uNzczLDEuOTEtLjg0MSwzLjEyNy0uMDYsMS4wNzYtLjAyMiwxLjMzOC4yMzEsMS42MTIuODg4Ljk2MiwyLjA1Mi0xLjk3MywyLjExMS01LjMyMy4wMzEtMS43NTktLjEzOC0yLjI1NC0uNjc0LTEuOTgyLS43ODEuNC0yLjg4Myw1Ljg4My0yLjg4Myw3LjUyMywwLDEuMjgzLjMxOSwyLjE4Ni44OCwyLjQ5MS45NTQuNTE5LDEuODc2LS40LDIuNTI5LTIuNTMxbC4yNzUtLjg5NFYxNC45N2MwLDEuNzU5LS41NjcsMi42ODYtMi4zNTcsMy44NTJhOC44OTMsOC44OTMsMCwwLDAtLjg1Mi42LDkuNzU4LDkuNzU4LDAsMCwwLC44OTIsMi41MzQsNS4yODMsNS4yODMsMCwwLDAsLjk2OS0uNDg0Wm0xMi43NjQtMi4xODRjLjIxMy0uNDc1LjI1LS45OTIuMi0yLjgxNy0uMDUtMS45ODYtLjEtMi4zMzctLjQ4Ni0zLjE0NC0uNjkxLTEuNDU4LTEuNTQ0LTEuMDg2LTEuMDQ1LjQ1NS4yNjUuODIuNTg5LjY4LjQ3NS0uMjA1LS4wOTEtLjcuMDc5LS43MjMuMzc1LS4wNDEuNTU2LDEuMjgxLjQxNiwzLjA1NS0uMjQyLDMuMDU1LS40NSwwLS41OS0uMzktLjg4My0yLjQ1OWE2Ljc1Miw2Ljc1MiwwLDAsMC0uMzYyLTEuNzE0Yy0uMjE3LDAtLjMxNC4zODgtLjE3OS43MThhMjguMjMsMjguMjMsMCwwLDEsLjQ1MiwyLjg1OWMuNDQxLDMuNTA3LDEuMDU3LDQuNzA3LDEuNjksMy4yOTNabS04LjM4LjA1NmEzLjM4NSwzLjM4NSwwLDAsMCwuMDk1LTEuMzNjLS4wNi0xLjAwOC0uMDk0LTEuMDgxLS4zNjQtLjc5LS4zODcuNDE5LS44LS4zNzUtLjk0NC0xLjgtLjEwNy0xLjA4Mi0uMTQtMS4wNjEuNjQtLjQxNS4xLjA4MS4zNDYtLjE5NC41NTMtLjYxMS4zNzctLjc2My41LTEuNjguMjI4LTEuNjgtLjA4MSwwLS4xNDcuMTM0LS4xNDcuMywwLC40MjktLjQuMzY4LS40OTQtLjA3NS0uMDUzLS4yNTgtLjE2Ni0uMTY3LS4zNjcuMy0uMTYuMzY5LS4zNTYuNjcxLS40MzQuNjcxcy0uMTg1LS4zLS4yMzctLjY3MWMtLjA5LS42NDYtLjEtLjY1LS4zLS4xMTNhLjk1MS45NTEsMCwwLDAtLjAxLjk2NCwxOC44MTgsMTguODE4LDAsMCwxLC41MjEsMy43OTFjMCwxLjE3NC44LDIuMSwxLjI2NywxLjQ2M1ptMi42ODgtMS41NTZhNy4wNTUsNy4wNTUsMCwwLDAsLjQxNi00LjI1OWMtLjIzNi0xLjE0MS0uNjQ1LTEuNTY4LTEuMjIyLTEuMjc1LS40MjkuMjE4LTEuMDgyLDIuNzQ2LTEuMDg0LDQuMiwwLDIuMjYyLDEuMDYsMy4wMTUsMS44OSwxLjMzN1ptLTEuMDA3LTEuNzkyYTMuNzcsMy43NywwLDAsMS0uMjktMS40MTZjMC0uNzQ1LjAyMi0uNzcyLjItLjMuMjIuNTg2LjYxMS42ODguNzYxLjJhMS4wMzUsMS4wMzUsMCwwLDAtLjA2NS0uNjU2Yy0uMjMyLS40NjktLjItMS4xMDcuMDQ5LTEuMTA3LjI4LDAsLjY3MiwxLjE1NC42NzIsMS45ODIsMCwuNjA5LS42MTMsMS44OTMtLjksMS44OTMtLjA3LDAtLjI2LS4yNjgtLjQyMi0uNlpNMTkuMzQ4LDE3LjdhNi40NDcsNi40NDcsMCwwLDAtLjE0MS00LjkxOGMtLjM1OC0uNzczLTEuMTUzLS45MDYtMS40NzktLjI0OGExMS42MDcsMTEuNjA3LDAsMCwwLS40ODksMy44OTVDMTcuNDc3LDE4LjM0OCwxOC43MTYsMTkuMSwxOS4zNDgsMTcuN1pNMTguMSwxNS41MjdhMi40OTIsMi40OTIsMCwwLDEtLjMxOC0xLjU2NWMuMDA4LS45MDkuMDMxLS45OTEuMTM1LS40NzIuMTUzLjc2NC40NzMsMS4wNTIuNzUzLjY3OS4xNzQtLjIzMS4xNjYtLjM0MS0uMDUtLjY3Ni0uMjg4LS40NDctLjM0NC0xLjA3OS0uMS0xLjA3OWE1LjAzNyw1LjAzNywwLDAsMSwxLjAxNywyLjI1YzAsLjQ4LS41NjQsMS4zMjctLjg4NCwxLjMyN0MxOC41MjcsMTUuOTkxLDE4LjI3NiwxNS43ODIsMTguMSwxNS41MjdabTguNjYyLTEuMzE4LDEuNTQ3LTEuMTc1LTEuNjU4LS4wMTJjLTEuNDg0LS4wMTEtMS42NTguMDQzLTEuNjU2LjUxYTExLjUzMiwxMS41MzIsMCwwLDAsLjIsMS44NTdjLjAxMSwwLC43MTYtLjUzNCwxLjU2Ny0xLjE4Wk02LjUzNSwxNGwuMTU4LS45NDlMNS4zLDEyLjk1NmMtLjc2NC0uMDUyLTEuMzg5LS4wMTItMS4zODkuMDg4YTE0LjEsMTQuMSwwLDAsMCwyLjQ0NywxLjkzNEM2LjM3MSwxNC45NjEsNi40NDgsMTQuNTIxLDYuNTM1LDE0Wm05LjUyNi0yLjk0MWExLjYyNCwxLjYyNCwwLDAsMSwuODE5LjZjLjE5Mi4zNDkuMjc2LjMyNi41NzMtLjE2My4xOTEtLjMxNS40NC0uNTcyLjU1My0uNTcycy4yLS4wNjYuMi0uMTQ2YzAtLjI3OC0yLjEyMi03LjMwNi0yLjItNy4zcy0yLjI3LDcuMzg2LTIuMzM3LDcuOTI1Yy0uMDI4LjIyNi4wNi4zMDkuMjMxLjIxOS4xNTItLjA4MS4zNjMuMDYzLjQ2OC4zMTkuMTcuNDE1LjI0LjM4Mi42NDQtLjMwNi4zODQtLjY1NC41NDQtLjc0MiwxLjA0OC0uNTc5WlwiIHN0eWxlPVwiZmlsbDojMzMzXCIvPjxwYXRoIGQ9XCJNMTQuNSwxMi4xNzVhLjg1Ljg1LDAsMCwxLS4xMTUtLjIuNzM3LjczNywwLDAsMC0uMTk0LS4yOS4yODEuMjgxLDAsMCwwLS4zLS4wNjFjLS4wODcuMDM1LS4xMTEuMDM5LS4xNS4wMjQtLjA2NS0uMDI2LS4wODktLjEwNi0uMDctLjI0Mi4wMjMtLjE2OS4yLS44MjUuNTQ4LTIuMDU0LjcxMS0yLjUsMS42NjYtNS42NDYsMS43NzItNS44MzkuMDEyLS4wMjEuMDEyLS4wMjEuMDI0LDAsLjA2My4xMTQuNDMyLDEuMjY2LjkzNywyLjkyMi42ODIsMi4yNCwxLjI1LDQuMjEsMS4yNSw0LjMzOSwwLC4wNzktLjA2LjEyNy0uMTg2LjE0Ny0uMTU3LjAyNi0uMzM5LjIxMi0uNTg3LjZhMS42NzQsMS42NzQsMCwwLDEtLjIyNi4zMWMtLjA0OC4wNDYtLjA1Mi4wNDgtLjEuMDQ4cy0uMDU2LDAtLjEtLjA0M2EuOTU4Ljk1OCwwLDAsMS0uMS0uMTQ0LDEuMjY4LDEuMjY4LDAsMCwwLS40MTQtLjQyMiwxLjUyNSwxLjUyNSwwLDAsMC0uNzM4LS4yODEuNDM0LjQzNCwwLDAsMC0uNC4xNTYsMi43MTgsMi43MTgsMCwwLDAtLjQxNi42Yy0uMjU3LjQyNS0uMzQ4LjUxMy0uNDQxLjQyNlpcIiBzdHlsZT1cImZpbGw6IzYzOThhYVwiLz48cGF0aCBkPVwiTTYuMjUyLDE0LjkyOGExOS4wNTUsMTkuMDU1LDAsMCwxLTIuMy0xLjgzOGMtLjAzMS0uMDM4LS4wMzQtLjA0NC0uMDI1LS4wNTdhMi43LDIuNywwLDAsMSwxLjE0LS4wODVjLjIzLjAxMiwxLjYxOS4xLDEuNjIxLjEwOHMtLjMsMS43NzktLjMyMSwxLjg4MUM2LjM1NywxNC45ODEsNi4zMzcsMTQuOTc5LDYuMjUyLDE0LjkyOFpcIiBzdHlsZT1cImZpbGw6IzYzOThhYVwiLz48cGF0aCBkPVwiTTI1LjE3NywxNS4zNUExNC4yMzksMTQuMjM5LDAsMCwxLDI1LDEzLjU2YS41NTMuNTUzLDAsMCwxLC4wNDQtLjI5Yy4wODEtLjE1MS4yNDUtLjIwNS43LS4yMy4yMjgtLjAxMywxLjI4MS0uMDE1LDIuMDI1LDBsLjUyMS4wMDhMMjcuMDI5LDE0Yy0xLjE0NC44NjctMS44MSwxLjM2OS0xLjgzNCwxLjM4Mi0uMDA2LDAtLjAxMi0uMDA2LS4wMTgtLjAyN2gwWlwiIHN0eWxlPVwiZmlsbDojNjM5OGFhXCIvPjxwYXRoIGQ9XCJNOC41MDYsMjguMjgxYzAtLjA3MS4xNDktLjYuNTI3LTEuODc4LjkwNS0zLjA1NywxLjMxOS00LjE2NSwxLjgyNy00Ljg5MmE3LjY2NCw3LjY2NCwwLDAsMCwuOTY5LTEuNzkyTDEyLDE5LjI5MmwuMjI1LjQ0OGMuMzk0Ljc4NC42MzIsMS4wMTEsMS4wNjIsMS4wMTZhMS4yMzksMS4yMzksMCwwLDAsMS4xLTEuMTM3YzAtLjEyNC4wNDQtLjI1MS4wODYtLjI1MWExLjExOSwxLjExOSwwLDAsMSwuMjI2LjE0LDEuMjcxLDEuMjcxLDAsMCwwLC42NjYuMy44NzkuODc5LDAsMCwwLC42MDktLjE0OCwyLjQ3LDIuNDcsMCwwLDAsLjcxMS0uNzY0Yy4xODctLjI1Mi4zNDctLjQ1OS4zNTQtLjQ1OXMuMTQzLjE1OS4zLjM1MmE1LjA5MSw1LjA5MSwwLDAsMCwuNDIyLjQ2NywxLjA0OSwxLjA0OSwwLDAsMCwxLjU0OS0uMDgsNi4xMTEsNi4xMTEsMCwwLDAsLjQ2Ny0uNTcyYy4xNjgtLjIyOC4zMDctLjQxLjMxLS40cy4wNjYuMjY5LjE0MS41ODQuMTY5LjY3LjIwOS43ODlhMy44MjYsMy44MjYsMCwwLDAsLjY0MiwxLjIzNCwyLjE3LDIuMTcsMCwwLDEsLjQ2NiwxLjI0NiwzLjA1MSwzLjA1MSwwLDAsMS0uMzUyLDEuNDQ3LDIuMDcsMi4wNywwLDAsMC0uMjY3LjkzNCwyLjAxNywyLjAxNywwLDAsMCwuMjEzLjg1MS43NzMuNzczLDAsMCwwLDEuMDY5LjQxMywxLjM1MSwxLjM1MSwwLDAsMSwuMzE2LS4wNjhjLjIsMCwuMzE1LjE5My41NDIuODgxLjE1Ny40NzQuNSwxLjYzNy41LDEuNjk1LDAsLjAzLS4wMTYuMDUxLS4wMzkuMDUxYTEuNDg2LDEuNDg2LDAsMCwxLS40MDctLjIyNGMtLjItLjE0NC0yLjYxMi0yLjAyOS0zLjQwOC0yLjY2My0yLjEyOC0xLjY5My0yLjgyOC0yLjIzMy0zLjE3MS0yLjQ0Ni0uMzctLjIzLS42MjItLjI4NS0uODI3LS4xNzctLjI1NC4xMzMtMy43MjYsMi44NDctNS43NTEsNC41QTEwLjg0NiwxMC44NDYsMCwwLDEsOC42NSwyOC4yNTFjLS4xNDkuMDgzLS4xNDMuMDgxLS4xNDMuMDNaXCIgc3R5bGU9XCJmaWxsOiM2Mzk4YWFcIi8+YCxcbiAgXCJIYW1sXCI6IGA8cGF0aCBkPVwiTTE1LjMxMSwxNi4wNDMsMTMuNCwyOS43MjZhNi4zMjIsNi4zMjIsMCwwLDEtNS45NTYtMS4yNWwzLjEtMTMuMjY2TDQuNjksMy4zNGE4LjAzMSw4LjAzMSwwLDAsMSwzLjc5LS42NDZsNS4xNDQsOS43LDguOTE0LTcuNTgxczMsMS4wNDEsMy4yNywyLjA0MWwtMTAuNSw5LjE4NFpcIiBzdHlsZT1cImZpbGw6I2VjZGZhN1wiLz48cGF0aCBkPVwiTTI3LjAxNiwxNy40MTFhNC4yNDQsNC4yNDQsMCwwLDAtLjU0MS0uODEyLDUuNyw1LjcsMCwwLDAtMS40NTgtMS4xODcsNy4zMzEsNy4zMzEsMCwwLDAtMS42ODctLjc5MWwtLjIyOS0uMDYyLS4xODctLjA2MmMtLjEyNS0uMDQyLS4yMjktLjEtLjMzMy0uMTQ2YTEuMjgyLDEuMjgyLDAsMCwxLS40NTgtLjQxN0ExLjc1NCwxLjc1NCwwLDAsMSwyMiwxMi42NDJhMi41MTgsMi41MTgsMCwwLDEsLjEtLjM3NWMuMDQyLS4xMjUuMDgzLS4yNS4xMjUtLjRhMi42OTEsMi42OTEsMCwwLDAsLjA2Mi0uNmwuMS0uMDgzLDEuMjUtMS4wNDFjLjIyOS0uMTg3LjQ1OC0uNC42ODctLjU4M2EyLjIsMi4yLDAsMCwxLC4yMjkuMTQ2cy42NDYuMDYyLDEtLjkxNmwtLjE4Ny0uMTI1LjEyNS0uMS4zMTItLjI3MWEuNjEzLjYxMywwLDAsMCwuMjI5LS4zNzUuNTI5LjUyOSwwLDAsMC0uNDE3LjEyNWwtLjMzMy4yNS0uMjI5LjE2N0wyMi4xODQsNi40NzhjLjE0Ni0uMTI1LjI3MS0uMjI5LjQxNy0uMzU0bC42LS41NDEuMDYyLS4wNjJjLjA2Mi4wNDIuMS4wODMuMTY3LjEyNS4xNDYuMS4zMTIuMjA4LjQ1OC4yOTJsLjkxNi41Yy4yOTIuMTY3LjYuMzMzLjkxNi40NzlhMy4zMjMsMy4zMjMsMCwwLDAsLjQ3OS4yMDhjLjA4My4wMjEuMTY3LjA2Mi4yNS4wODMuMDQyLDAsLjEuMDIxLjE0Ni4wMjFoLjFhLjE1MS4xNTEsMCwwLDAsLjEyNS0uMDgzVjcuMTIzYS4wNzcuMDc3LDAsMCwxLC4wMjEtLjA2MlY2Ljk3N2EuMTA4LjEwOCwwLDAsMC0uMDQyLS4wODNjLS4wMjEtLjA0Mi0uMDYyLS4wODMtLjA4My0uMTI1YTEuNTksMS41OSwwLDAsMC0uMTg3LS4xODdjLS4xMjUtLjEyNS0uMjcxLS4yMjktLjQtLjMzMy0uMjcxLS4yMDgtLjU2Mi0uNC0uODU0LS41ODNhNy41NDUsNy41NDUsMCwwLDAtLjktLjUsMy4zMjMsMy4zMjMsMCwwLDAtLjQ3OS0uMjA4Yy0uMDgzLS4wMjEtLjE2Ny0uMDYyLS4yNzEtLjA4My0uMDQyLDAtLjEtLjAyMS0uMTY3LS4wMjFhLjMxLjMxLDAsMCwwLS4xMjUuMDIxLjUyMi41MjIsMCwwLDAtLjE2Ny4xLDEuNiwxLjYsMCwwLDAtLjM3NS4yMDhsLS42MjUuMzU0Yy0uMTg3LjE0Ni0uNC4zMTItLjU4My40NThsLS4yMDgtLjE0NnMtLjg3NS4wODMtLjU4My42NDZsLjA4My4wODNjLS44MzMuNjg3LTEuNjQ1LDEuNC0yLjQ1NywyLjA4My0uODMzLjcwOC0xLjY0NSwxLjQxNi0yLjQ3OCwyLjE0NWwtMS4yMjksMS4wODNhMS44NzgsMS44NzgsMCwwLDEtLjIwOC4xODdjLS4wNDItLjEyNS0uMS0uMjI5LS4xNDYtLjMzM2wtLjI5Mi0uNjI1LS41NjItMS4yNWMtLjM3NS0uODMzLS43NS0xLjY2Ni0xLjE0NS0yLjVMMTEuMjA5LDQuODk1bC0uMTg3LS4zNzVoLjI1cy4wODMtLjY4Ny0uNDE3LS44MTJhMS40LDEuNCwwLDAsMC0uMjA4LjAyMWMtLjE4Ny0uMzc1LS4zNTQtLjc1LS41NDEtMS4xMjVoMGwtLjA4My0uMzEyQS4zMy4zMywwLDAsMCw5LjksMi4xYS4zNTIuMzUyLDAsMCwwLS4xLS4wNDJjLS4wNjItLjAyMS0uMS0uMDIxLS4xNjctLjA0MkExLjI4MSwxLjI4MSwwLDAsMCw5LjM1NSwyYTQuMDU3LDQuMDU3LDAsMCwwLS41MjEuMDQyLDguNzY3LDguNzY3LDAsMCwwLTEuMDIuMTg3Yy0uMzMzLjA4My0uNjY2LjE2Ny0xLC4yNzFhMy4yNzIsMy4yNzIsMCwwLDAtLjQ3OS4xODdsLS4yNS4xMjVjLS4wNDIuMDIxLS4wODMuMDYyLS4xMjUuMDgzTDUuOSwyLjk1OGMtLjAyMS4wMjEtLjAyMS4wNDItLjA0Mi4wNjJ2LjA2MmgwVjMuMWEuMTY0LjE2NCwwLDAsMCwuMS4xMjVjLjA0Mi4wMjEuMDYyLjA0Mi4wODMuMDQyYTEuMzI3LDEuMzI3LDAsMCwxLC4xNDYuMDQyLDEuMTg4LDEuMTg4LDAsMCwwLC4yNzEuMDIxLDQuMzg0LDQuMzg0LDAsMCwwLC41MjEtLjA0MmMuMzMzLS4wNDIuNjg3LS4wODMsMS4wMi0uMTQ2bDEuMDItLjE2N2MuMTY3LS4wMjEuMzMzLS4wNjIuNTIxLS4xLjE0Ni4yOTIuMjkyLjYuNDM3LjktLjk1OC4wODMtMi40NTcuMjA4LTMuMzk1LjMxMi0uMS0uMTg3LS4xODctLjM1NC0uMjkyLS41NDFhLjEyNy4xMjcsMCwwLDAtLjE0Ni0uMDYyLjEwOC4xMDgsMCwwLDAtLjA2Mi4xNDZjLjA2Mi4xNjcuMTI1LjMxMi4xODcuNDc5YTEuMTY3LDEuMTY3LDAsMCwwLS41LjEyNUExLjgyOCwxLjgyOCwwLDAsMCw2LjQsNS42NDVhMy41NjcsMy41NjcsMCwwLDEsLjQ1OC0uMTI1bC40MzcsMSwxLjI1LDIuODMyLDEuMjcsMi44MzJjLjQxNy45MzcuODU0LDEuODc0LDEuMjkxLDIuODMyaDBhLjAyLjAyLDAsMCwwLC4wMjEuMDIxbC0uMTg3LjYyNS0uNSwxLjc0OWMtLjMxMiwxLjE2Ni0uNiwyLjM1My0uOSwzLjUyTDkuMTA1LDIyLjdsLS40MTcsMS43N2MtLjI5MiwxLjE4Ny0uNTYyLDIuMzUzLS45LDMuNTJhLjEyNS4xMjUsMCwwLDAsLjAyMS4wODMsMy4wNzYsMy4wNzYsMCwwLDAsLjYuNTYyLDYuMDQ4LDYuMDQ4LDAsMCwwLC42ODcuNDE3LDkuNCw5LjQsMCwwLDAsMS41LjYsNi45NzIsNi45NzIsMCwwLDAsMS42MjQuMjcxLDMuNzI4LDMuNzI4LDAsMCwwLC44MzMtLjA0Miw2LjU0Nyw2LjU0NywwLDAsMCwuODMzLS4xNjcuMjU0LjI1NCwwLDAsMCwuMTY3LS4xODd2LS4wMjFjLjIyOS0xLjE0NS40MTctMi4zMTIuNjI1LTMuNDU3bC41ODMtMy40NzhjLjE4Ny0xLjE2Ni40LTIuMzEyLjU4My0zLjQ3OC4wMjEtLjEyNS4wNDItLjI3MS4wNjItLjQuMDQyLjA0Mi4wNjIuMS4xLjE0NmE0LjEzNyw0LjEzNywwLDAsMCwuNzA4LjY0Niw3LjIxMiw3LjIxMiwwLDAsMCwxLjU4My44MzMsMTEuNzc0LDExLjc3NCwwLDAsMCwxLjY2Ni41LDEwLjE4MiwxMC4xODIsMCwwLDAsMS4xLjE4NywyLjYyMSwyLjYyMSwwLDAsMC0uMjUsMS4yMDguMTE1LjExNSwwLDAsMCwuMDYyLjFoLjAyMWE1LjE2NCw1LjE2NCwwLDAsMCwxLjI3LjQ3OSw0LjMzMyw0LjMzMywwLDAsMCwxLjM3NS4wNjIsMi42MjcsMi42MjcsMCwwLDAsMS4zMzMtLjU2MiwyLjgyNCwyLjgyNCwwLDAsMCwuODEyLTEuMTY2bC4wMjEtLjAyMVYyMS4xbC4wNjItLjU2MnYtLjAyMWE1LjQyNyw1LjQyNywwLDAsMCwuNjI1LS40MTcsMi43MSwyLjcxLDAsMCwwLC42NDYtLjcyOSwxLjgzMywxLjgzMywwLDAsMCwuMjUtMSwyLjU2MywyLjU2MywwLDAsMC0uMjkyLS45NThabS0uNC0xMC41Wm0tMS40NzktMS4xYTcuMTIsNy4xMiwwLDAsMSwuODMzLjU0MWMuMTI1LjEuMjcxLjE4Ny40LjMxMmExLjI1NywxLjI1NywwLDAsMSwuMTY3LjE2N2wuMDQyLjA0MmgtLjA0MmMtLjA4My0uMDIxLS4xNDYtLjA0Mi0uMjI5LS4wNjItLjE0Ni0uMDYyLS4zMTItLjEyNS0uNDU4LS4xODdhNy4xMzIsNy4xMzIsMCwwLDEtLjg3NS0uNDc5QTUuNjEsNS42MSwwLDAsMSwyNC4yLDUuNTJhMi41LDIuNSwwLDAsMS0uMjI5LS4yNWwuMzEyLjEyNWE2LjQsNi40LDAsMCwxLC44NTQuNDE3Wm0tMS40MTYtLjkxNi4wMjEuMDIxdi4wNDJhLjAyLjAyLDAsMCwwLS4wMjEtLjAyMVY0Ljg5NVpNOC44NzYsMi41NjJhNS4wMjEsNS4wMjEsMCwwLDEtLjkzNy4zMzMsNS4zNDcsNS4zNDcsMCwwLDEtLjk3OS4xNjcsNC4wMTMsNC4wMTMsMCwwLDEtLjUuMDIxLjc4MS43ODEsMCwwLDEtLjIyOS0uMDIxSDYuMTY5Yy4wMjEsMCwuMDIxLS4wMjEuMDQyLS4wMjEuMDYyLS4wNDIuMTQ2LS4wNjIuMjA4LS4xLjE0Ni0uMDYyLjMxMi0uMS40NTgtLjE2Ny4zMTItLjA4My42NDYtLjE2Ny45NzktLjIyOWE4LjQsOC40LDAsMCwxLC45NzktLjEyNUExLjU3NiwxLjU3NiwwLDAsMCw5LjE0NywyLjRhMS41MzYsMS41MzYsMCwwLDEtLjI3MS4xNjdabTE0LjQ1Myw3LjEtMS4yOTEsMS0xLjI5MSwxLjAyYy0uMzU0LjI5Mi0uNzA4LjU4My0xLjA2Mi44NTQuMDIxLS4wMjEuMDQyLS4wNjIuMDYyLS4wODMuMTY3LS4yMjkuMzMzLS40MzcuNS0uNjQ2LjM1NC0uNDE3LjY4Ny0uODU0LDEuMDYyLTEuMjVzLjc3MS0uNzkxLDEuMTY2LTEuMTQ1YTQuODcyLDQuODcyLDAsMCwxLC42NDYtLjVsLjE4Ny0uMTI1Yy4xODcuMTQ2LjQuMjkyLjU4My40MzctLjE2Ny4xNDYtLjM3NS4yOTItLjU2Mi40MzdaTTguMDY0LDcuMWwuMS4xYTUuNjMsNS42MywwLDAsMSwuNTgzLjY0NiwyLjIxLDIuMjEsMCwwLDEsLjM3NS43MjkuOTIxLjkyMSwwLDAsMS0uMDYyLjYyNWwtLjAyMS0uMDYyTDguMDY0LDcuMVptMS4wMiwyLjE2NmEuNzIuNzIsMCwwLDAsLjE0Ni0uMjUuODY2Ljg2NiwwLDAsMCwuMDQyLS40NThBMS43LDEuNywwLDAsMCw4LjksNy43MjdhNC4wMTUsNC4wMTUsMCwwLDAtLjk3OS0uOWwtLjIyOS0uNDc5Yy0uMTQ2LS4zMTItLjI5Mi0uNjI1LS40NTgtLjkxNi4zMTItLjA4My42ODctLjIwOCwxLjEtLjMxMkEyMC4zMTMsMjAuMzEzLDAsMCwxLDkuMzU1LDdhNy45NjMsNy45NjMsMCwwLDEsLjc3MSwyLjU0MWMuMDIxLjIwOCwwLC40MzcsMCwuNjY2czAsLjQ1OC4wMjEuNjg3YTcuNjA5LDcuNjA5LDAsMCwwLC4xNDYuOTU4TDkuMDg0LDkuMjY4Wk0xNCwyNi4yNDJhLjkuOSwwLDAsMS0uMTg3LjIwOC40LjQsMCwwLDEtLjMzMy4xLjM1OC4zNTgsMCwwLDEtLjIyOS0uMjI5Ljk4MS45ODEsMCwwLDEtLjA4My0uMzU0LDIuMjc1LDIuMjc1LDAsMCwxLC4wNDItLjc1LDIuODE2LDIuODE2LDAsMCwxLC4yMjktLjcwOCwxLjQ3OCwxLjQ3OCwwLDAsMSwuMjA4LS4yOTIuMzQxLjM0MSwwLDAsMSwuMjkyLS4xMjVjLjEsMCwuMjA4LjEuMjcxLjIwOGEuNzQuNzQsMCwwLDEsLjA4My4xODdsLS4yNSwxLjQ3OWMtLjAyMS4xLS4wMjEuMTg3LS4wNDIuMjcxWm0xLjIyOS03LjE4NS0uMzc1LDIuMTg3YTMuMzI5LDMuMzI5LDAsMCwwLS4xLS40MzdjLS4xLS40LS4yMjktLjc3MS0uMzU0LTEuMTQ1YTE1LjUzNywxNS41MzcsMCwwLDAtLjk1OC0yLjE2NmMuMjI5Ljc3MS41LDEuNS43NzEsMi4yNDkuMTQ2LjM3NS4yNzEuNzUuNCwxLjFsLjE4Ny41NjJjMCwuMDIxLjAyMS4wNjIuMDIxLjA4My0uMDYyLjMzMy0uMTI1LjY2Ni0uMTY3LDEuMDJsLS4zMTIsMS45Yy0uMDIxLS4wNDItLjAyMS0uMDgzLS4wNDItLjEyNWEuNDg2LjQ4NiwwLDAsMC0uMzEyLS4yOTIuNTI1LjUyNSwwLDAsMC0uNDE3LjEyNSwxLjk0NCwxLjk0NCwwLDAsMC0uMjcxLjMxMiwyLjAzNiwyLjAzNiwwLDAsMC0uMjcxLjc1LDIuMTMxLDIuMTMxLDAsMCwwLDAsLjgxMiwxLjAyMSwxLjAyMSwwLDAsMCwuMTQ2LjQuNDg2LjQ4NiwwLDAsMCwuMzMzLjI3MS40MjguNDI4LDAsMCwwLC4zNzUtLjE2N2MuMDQyLS4wNDIuMDgzLS4xLjEyNS0uMTQ2LS4xNDYuOTc5LS4zMTIsMS45NTgtLjQ1OCwyLjk1N2EyLjcyNywyLjcyNywwLDAsMS0uNTYyLjEyNWMtLjI1LjA0Mi0uNS4wNjItLjc1LjA4M2E1LjUzMSw1LjUzMSwwLDAsMS0xLjU0MS0uMTQ2LDcuODQ2LDcuODQ2LDAsMCwxLTEuNS0uNDc5LDMuNjI1LDMuNjI1LDAsMCwxLTEuMjI5LS44NTRjLjMxMi0xLjE0NS42NjYtMi4yOTEsMS4wMi0zLjQzNmwuNTQxLTEuNzI5LjUyMS0xLjc0OWMuMzU0LTEuMTY2LjcwOC0yLjMzMywxLjA0MS0zLjUuMTY3LS41ODMuMzEyLTEuMTY2LjQ3OS0xLjc0OWEzLjYyNiwzLjYyNiwwLDAsMCwuMTg3LTEuODMzdi0uMDIxYy0uMDIxLS4wMjEtLjA0Mi0uMDIxLS4wNDIsMGEzLjEwOSwzLjEwOSwwLDAsMC0uMjUuMjkyYy0uMjI5LS41MjEtLjQ3OS0xLjAyLS43MDgtMS41NDFhNC43NjUsNC43NjUsMCwwLDEtLjE2Ny0uNTgzLDcuMTY1LDcuMTY1LDAsMCwxLS4yMDgtMS4zMTJjLS4wMjEtLjIyOS0uMDIxLS40MzctLjAyMS0uNjY2cy4wMjEtLjQ1OCwwLS42ODdhNy42MjUsNy42MjUsMCwwLDAtLjgzMy0yLjYsMTIuNTg3LDEyLjU4NywwLDAsMC0xLjEtMS44MzNjLjY4Ny0uMTg3LDEuNDE2LS4zNzUsMi0uNDc5LjA4My4xODcuMTg3LjM1NC4yNzEuNTQxTDExLjkzOCw3LjZsMS4yNSwyLjQzNy42MjUsMS4yMDguMzEyLjZjLjA4My4xMjUuMTI1LjI3MS4yMDguMzc1bC0uODEyLjc1YS4wNjkuMDY5LDAsMCwwLDAsLjEuMDczLjA3MywwLDAsMCwuMS4wMjFjLjQzNy0uMzEyLjg3NS0uNjQ2LDEuMzEyLS45NzlsMS4zMTItMWMuODc1LS42NjYsMS43MjktMS4zMzMsMi41ODItMnMxLjcwOC0xLjM1NCwyLjU2Mi0yLjA0MWwuMDIxLS4wMjFhMjQuMzE2LDI0LjMxNiwwLDAsMCwxLjg3NCwxLjY0NSw2LjE2Miw2LjE2MiwwLDAsMC0uODc1LjU0MSw4Ljk0Myw4Ljk0MywwLDAsMC0xLjIyOSwxLjEyNSwxMi4yNzksMTIuMjc5LDAsMCwwLTEuMDQxLDEuMjkxLDExLjc3OCwxMS43NzgsMCwwLDAtLjY0NiwxYy0xLjI3LDEuMDQxLTIuNTIsMi4xLTMuNzI4LDMuMjA3YS4xMjguMTI4LDAsMCwwLS4wMjEuMTQ2LjEzOC4xMzgsMCwwLDAsLjE0Ni4wNDIsOS4xMzQsOS4xMzQsMCwwLDAtLjMxMiwxLjI1Yy0uMTI1LjU4My0uMjUsMS4xNjYtLjM1NCwxLjc0OVptOS4yMDUsMi43OTFhMi41MjcsMi41MjcsMCwwLDEtMS4wMi40NTgsMy43NjcsMy43NjcsMCwwLDEtMS4xODcuMDQyLDcuMzYxLDcuMzYxLDAsMCwxLTEuMTQ1LS4yMDgsMi4wMzcsMi4wMzcsMCwwLDEsLjE2Ny0xLjA0MWMuMTQ2LjAyMS4yNzEuMDIxLjQxNy4wNDJhLjExNC4xMTQsMCwwLDAsLjEyNS0uMDgzLjEyNC4xMjQsMCwwLDAtLjA4My0uMTY3aDBjLS4xLS4wNDItLjE4Ny0uMDYyLS4yOTItLjFhMi43NzEsMi43NzEsMCwwLDEsLjI5Mi0uNGMuMTI1LS4xMjUuMjUtLjI1LjM3NS0uMzU0YTMuOTkyLDMuOTkyLDAsMCwwLC44NTQuNCwyLjg4MSwyLjg4MSwwLDAsMCwxLjEyNS4xLDEuNTUsMS41NSwwLDAsMCwxLjAyLS41NDEsMS41MjQsMS41MjQsMCwwLDAsLjM1NC0uOTE2Ljg1Ljg1LDAsMCwxLC4wMjEuNCw0LjUxMSw0LjUxMSwwLDAsMS0uMDgzLjUyMWwtLjA2Mi4zMTJMMjUsMjAuNDk0YS45MTkuOTE5LDAsMCwwLS4zMzMuMzU0Ljc1MS43NTEsMCwwLDAsLjQ3OSwwYy4wMjEsMCwuMDIxLS4wMjEuMDQyLS4wMjEtLjAyMS4wNjItLjAyMS4xLS4wNDIuMTY3YTIuNTUyLDIuNTUyLDAsMCwxLS43MDguODU0Wk0yNi41LDE5LjExOWEyLjIsMi4yLDAsMCwxLS40NTguNjI1LDIuNjM4LDIuNjM4LDAsMCwxLS4yNzEuMjI5LDIuNTg1LDIuNTg1LDAsMCwwLS4wNjItLjU2MiwxLjUzNCwxLjUzNCwwLDAsMC0uMDgzLS4yOTIuNTMxLjUzMSwwLDAsMC0uMTg3LS4yNWgwYy0uMDIxLDAtLjA0MiwwLS4wNDIuMDIxaDBhMS45NSwxLjk1LDAsMCwxLS41NjIuNzcxLDEuNDI5LDEuNDI5LDAsMCwxLS44MTIuMjkyLDIuODU3LDIuODU3LDAsMCwxLS45MTYtLjEyNWMtLjMxMi0uMDgzLS42MjUtLjE4Ny0uOTM3LS4yOTJsLS4wNDItLjAyMWEuMi4yLDAsMCwwLS4xODcuMDQyYy0uMTY3LjIwOC0uMjkyLjQtLjQzNy42LS4xLjE2Ny0uMTg3LjMxMi0uMjcxLjQ3OS0uMzc1LS4xNDYtLjcyOS0uMjcxLTEuMS0uNDE3LS41MjEtLjIwOC0xLjA0MS0uNDE3LTEuNTItLjY2NmE3LjY0OCw3LjY0OCwwLDAsMS0xLjQtLjgxMiwyLjk0OSwyLjk0OSwwLDAsMS0uOTc5LTEuMDYydi0uMDIxYS40MDkuNDA5LDAsMCwwLS4xODctLjE4N2MwLS4wNDIuMDIxLS4xLjAyMS0uMTQ2YTcuMzcsNy4zNywwLDAsMCwuMS0xLjUyYzEuNjg3LTEuMTg3LDMuMzMyLTIuNDM3LDQuOTU3LTMuNzI4bC0uMDYyLjE4N2EzLjI3LDMuMjcsMCwwLDAtLjE0NiwxLjAyQTIuMDg5LDIuMDg5LDAsMCwwLDIyLjEyMiwxNS4xYTIuODI1LDIuODI1LDAsMCwwLC40NzkuMTg3bC4yNS4wNjIuMjA4LjA0MmE2LjY0NSw2LjY0NSwwLDAsMSwxLjU0MS42MjUsNi4xNTYsNi4xNTYsMCwwLDEsMS4zMTIuOTc5LDIuMjc1LDIuMjc1LDAsMCwxLC43MDgsMS4zMzMsMS41MSwxLjUxLDAsMCwxLS4xMjUuNzkxWlwiIHN0eWxlPVwiZmlsbDojM2YzZTI5XCIvPjxwYXRoIGQ9XCJNMTIuNjY3LDIzLjkwOWEyLjE2MSwyLjE2MSwwLDAsMC0uMzU0Ljc3MSwxLjU1NiwxLjU1NiwwLDAsMC0uMDYyLjQxN2wtLjAyMS40MTdhNC41MzMsNC41MzMsMCwwLDAsLjE0NiwxLjY2Niw3LjY0Nyw3LjY0NywwLDAsMCwuNjY2LDEuNTJjLS4wODMtLjI3MS0uMTg3LS41MjEtLjI3MS0uNzcxcy0uMTY3LS41MjEtLjIyOS0uNzkxYTUuODksNS44OSwwLDAsMS0uMS0xLjZsLjAyMS0uNDE3YTIuNTUyLDIuNTUyLDAsMCwxLC4wNDItLjQsMy4xMzcsMy4xMzcsMCwwLDEsLjI5Mi0uNzI5LDIuOTY3LDIuOTY3LDAsMCwxLC41MjEtLjYyNSwyLjU5MSwyLjU5MSwwLDAsMSwuNjY2LS40NzksMi43NiwyLjc2LDAsMCwwLTEuMzEyLDEuMDJaXCIgc3R5bGU9XCJmaWxsOiMzZjNlMjlcIi8+YCxcbiAgXCJIYW5kbGViYXJzXCI6IGA8cGF0aCBkPVwiTTEyLjMsMTMuMWE0LjIzOCw0LjIzOCwwLDAsMSwyLjcyOC45QTQuNTkyLDQuNTkyLDAsMCwxLDE2LDE1LjEyN2E0LjE0NCw0LjE0NCwwLDAsMSwyLjAzOS0xLjc0Nyw0Ljc1Nyw0Ljc1NywwLDAsMSwzLjI4Ni4wMTksNy44MzMsNy44MzMsMCwwLDEsMi40NDMsMS41NThjLjU2OC41LDEuMDk0LDEuMDUsMS42NzksMS41MzNhMy40LDMuNCwwLDAsMCwxLjAxOS42MTQsMS40MiwxLjQyLDAsMCwwLDEuNDYtLjM3OS45NjUuOTY1LDAsMCwwLS4wNTUtMS4zMjMuNTQ1LjU0NSwwLDAsMC0uOC4xMDguNjU5LjY1OSwwLDAsMCwuMDUuNjg2LDEuMjIyLDEuMjIyLDAsMCwxLS42LS45MjYsMS4wMjIsMS4wMjIsMCwwLDEsLjY5MS0xLjAzMiwyLjAwNSwyLjAwNSwwLDAsMSwyLjMxMi42NjEsMy4yNTgsMy4yNTgsMCwwLDEsLjQ0LDIuMzA4LDIuNzYyLDIuNzYyLDAsMCwxLTEuMTM3LDEuODcyLDUuMDUxLDUuMDUxLDAsMCwxLTMuMDEzLjgsOC40ODgsOC40ODgsMCwwLDEtMi45MzItLjYzYy0xLjU1OC0uNjI2LTMuMDE2LTEuNDkyLTQuNjI1LTEuOTkyYTEzLjk3NywxMy45NzcsMCwwLDAtMS43LS4zNjNjLS40My4wMDctLjg2MS0uMDE1LTEuMjkuMDE1YTUuNjkyLDUuNjkyLDAsMCwwLTEuNTM0LjM0OWMtMS42MzYuNTA5LTMuMTE2LDEuNC00LjcsMi4wMjRhNy42MjUsNy42MjUsMCwwLDEtNC4yNDkuNDc0LDMuNzQsMy43NCwwLDAsMS0yLjEyNS0xLjE0QTIuODU2LDIuODU2LDAsMCwxLDIsMTYuNjY4YTIuNzIyLDIuNzIyLDAsMCwxLC41NTUtMS44NzQsMS45OTQsMS45OTQsMCwwLDEsMS42ODctLjY4LDEuNDI1LDEuNDI1LDAsMCwxLDEuMDYzLjUyLDEuMDQsMS4wNCwwLDAsMSwuMTIyLjkxMSwxLjQ1NywxLjQ1NywwLDAsMS0uNTU2LjY0NC42NDMuNjQzLDAsMCwwLC4wNTEtLjY4MS41NDcuNTQ3LDAsMCwwLS44MzEtLjA3OS45NzUuOTc1LDAsMCwwLS4xNTEsMS4xMSwxLjMzMSwxLjMzMSwwLDAsMCwxLjAzMi42MjMsMi4zMzIsMi4zMzIsMCwwLDAsMS42LS43QTI4LjUyNiwyOC41MjYsMCwwLDEsOS40LDE0LjA1Myw1LjI1MSw1LjI1MSwwLDAsMSwxMi4zLDEzLjFaXCIgc3R5bGU9XCJmaWxsOiNjMTk3NzBcIi8+YCxcbiAgXCJIYXNrZWxsXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCIwLjk5NlwiIHkxPVwiLTIwNi4wNTdcIiB4Mj1cIjAuOTUxXCIgeTI9XCItMjA2LjA1N1wiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDI1OS45NDEsIDAsIDAsIC0xODMuNDg3LCAtMjM3Ljk0MSwgLTM3NzkyLjc4OClcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmYWJhMDlcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjYjQyYzAxXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfaGFza2VsbDI8L3RpdGxlPjxwYXRoIGQ9XCJNMiwyNS44ODIsOC41ODgsMTYsMiw2LjExOEg2Ljk0MUwxMy41MjksMTYsNi45NDEsMjUuODgyWm02LjU4OCwwTDE1LjE3NywxNiw4LjU4OCw2LjExOGg0Ljk0MUwyNi43MDYsMjUuODgySDIxLjc2NWwtNC4xMTctNi4xNzYtNC4xMTgsNi4xNzZaTTI0LjUxLDIwLjExOGwtMi4yLTMuMjk0SDMwdjMuMjk0Wm0tMy4yOTQtNC45NDEtMi4yLTMuMjk0SDMwdjMuMjk0WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPmAsXG4gIFwiSGF4ZVwiOiBgPHBhdGggZD1cIk0xNiw1LjUsNS41LDE2LDE2LDI2LjUsMjYuNSwxNiwxNiw1LjVcIiBzdHlsZT1cImZpbGw6I2Y2ODcxMlwiLz48cGF0aCBkPVwiTTIsMiwxNiw1LjUsNS41LDE2LDIsMlwiIHN0eWxlPVwiZmlsbDojZmFiMjBiXCIvPjxwYXRoIGQ9XCJNMzAsMiwyNi41LDE2LDE2LDUuNSwzMCwyXCIgc3R5bGU9XCJmaWxsOiNmNDcyMTZcIi8+PHBhdGggZD1cIk0zMCwzMCwxNiwyNi41LDI2LjUsMTYsMzAsMzBcIiBzdHlsZT1cImZpbGw6I2YyNWMxOVwiLz48cGF0aCBkPVwiTTIsMzAsNS41LDE2LDE2LDI2LjUsMiwzMFwiIHN0eWxlPVwiZmlsbDojZjg5YzBlXCIvPjxwYXRoIGQ9XCJNMTYsNS41LDIsMkg5bDcsMy41XCIgc3R5bGU9XCJmaWxsOiNmYmM3MDdcIi8+PHBhdGggZD1cIk0xNiw1LjUsMzAsMkgyM0wxNiw1LjVcIiBzdHlsZT1cImZpbGw6I2ZiYzcwN1wiLz48cGF0aCBkPVwiTTE2LDI2LjUsMzAsMzBIMjNsLTctMy41XCIgc3R5bGU9XCJmaWxsOiNmNjg3MTJcIi8+PHBhdGggZD1cIk0xNiwyNi41LDIsMzBIOWw3LTMuNVwiIHN0eWxlPVwiZmlsbDojZjI1YzE5XCIvPjxwYXRoIGQ9XCJNNS41LDE2LDIsMzBWMjNsMy41LTdcIiBzdHlsZT1cImZpbGw6I2ZmZjIwMFwiLz48cGF0aCBkPVwiTTUuNSwxNiwyLDJWOWwzLjUsN1wiIHN0eWxlPVwiZmlsbDojZmZmMjAwXCIvPjxwYXRoIGQ9XCJNMjYuNSwxNiwzMCwyVjlsLTMuNSw3XCIgc3R5bGU9XCJmaWxsOiNmMTQ3MWRcIi8+PHBhdGggZD1cIk0yNi41LDE2LDMwLDMwVjIzbC0zLjUtN1wiIHN0eWxlPVwiZmlsbDojZjE0NzFkXCIvPmAsXG4gIFwiSExTTFwiOiBgPHBvbHlnb24gcG9pbnRzPVwiOS41MjUgMjEuOTQ3IDcuNTYgMjEuOTQ3IDcuNTYgMTcuMSAzLjk1OCAxNy4xIDMuOTU4IDIxLjk0NyAyIDIxLjk0NyAyIDEwLjA0NCAzLjk1OCAxMC4wNDQgMy45NTggMTQuNzkyIDcuNTYgMTQuNzkyIDcuNTYgMTAuMDQ0IDkuNTI1IDEwLjA0NCA5LjUyNSAyMS45NDdcIiBzdHlsZT1cImZpbGw6Ymx1ZVwiLz48cG9seWdvbiBwb2ludHM9XCIxNi42OTIgMjEuOTQ3IDExLjUxMyAyMS45NDcgMTEuNTEzIDEwLjA0NCAxMy40NzIgMTAuMDQ0IDEzLjQ3MiAxOS43NzMgMTYuNjkyIDE5Ljc3MyAxNi42OTIgMjEuOTQ3XCIgc3R5bGU9XCJmaWxsOmJsdWVcIi8+PHBhdGggZD1cIk0xNy40NjIsMjEuNDkxVjE4LjgzNGEzLjY3NiwzLjY3NiwwLDAsMCwxLjE0Ni45MDksMi44MDksMi44MDksMCwwLDAsMS4yNDkuMywyLjA1LDIuMDUsMCwwLDAsLjY0Ni0uMDkyLDEuMzA5LDEuMzA5LDAsMCwwLC40NjEtLjI1MiwxLjAyOSwxLjAyOSwwLDAsMCwuMjc2LS4zODIsMS4yMzEsMS4yMzEsMCwwLDAsLjA5MS0uNDc4LDEuMywxLjMsMCwwLDAtLjE0NS0uNjIzLDEuOTA3LDEuOTA3LDAsMCwwLS40LS41MDYsNC4wNzcsNC4wNzcsMCwwLDAtLjYtLjQ0OHEtLjM0Ni0uMjE1LS43NDYtLjQzOWE0LjA0NSw0LjA0NSwwLDAsMS0xLjUxOS0xLjQxOSwzLjg4NCwzLjg4NCwwLDAsMS0uNS0yLjAyNiw0LjIzMiw0LjIzMiwwLDAsMSwuMjczLTEuNiwzLjAyLDMuMDIsMCwwLDEsLjc0NC0xLjEsMi45MzgsMi45MzgsMCwwLDEsMS4wODgtLjYzNCw0LjE2Nyw0LjE2NywwLDAsMSwxLjMxLS4yLDUuODE2LDUuODE2LDAsMCwxLDEuMi4xMTEsMy44LDMuOCwwLDAsMSwuOTY3LjM0NXYyLjQ4MmEyLjg1OSwyLjg1OSwwLDAsMC0uNDc2LS4zNjUsMy4yMTIsMy4yMTIsMCwwLDAtLjUzLS4yNjJBMy4xLDMuMSwwLDAsMCwyMS40NiwxMmEyLjc5NCwyLjc5NCwwLDAsMC0uNTEyLS4wNSwxLjk5NCwxLjk5NCwwLDAsMC0uNjA2LjA4NywxLjM0NywxLjM0NywwLDAsMC0uNDYxLjI0NSwxLjA5MiwxLjA5MiwwLDAsMC0uMjkxLjM3NywxLjE0NCwxLjE0NCwwLDAsMC0uMS40OTQsMS4yLDEuMiwwLDAsMCwuMTE1LjUzNiwxLjY1NywxLjY1NywwLDAsMCwuMzI4LjQ0OCwzLjQ2MSwzLjQ2MSwwLDAsMCwuNTE1LjQxNWMuMi4xMzYuNDMuMjc1LjY4Ni40MTlhNy4wOTQsNy4wOTQsMCwwLDEsLjkzNi42MzUsMy43MTIsMy43MTIsMCwwLDEsLjcxMy43NTksMy4yNjksMy4yNjksMCwwLDEsLjQ1NS45NjcsNC41NzMsNC41NzMsMCwwLDEsLjE1OCwxLjI2Niw0LjQzOSw0LjQzOSwwLDAsMS0uMjc3LDEuNjcyLDIuODg4LDIuODg4LDAsMCwxLS43NDksMS4xLDIuODIzLDIuODIzLDAsMCwxLTEuMS42LDQuNzQyLDQuNzQyLDAsMCwxLTEuMzI1LjE4Miw1LjQ3Niw1LjQ3NiwwLDAsMS0xLjM2MS0uMTY2QTMuNDEsMy40MSwwLDAsMSwxNy40NjIsMjEuNDkxWlwiIHN0eWxlPVwiZmlsbDpibHVlXCIvPjxwb2x5Z29uIHBvaW50cz1cIjMwIDIxLjk0NyAyNC44MjIgMjEuOTQ3IDI0LjgyMiAxMC4wNDQgMjYuNzggMTAuMDQ0IDI2Ljc4IDE5Ljc3MyAzMCAxOS43NzMgMzAgMjEuOTQ3XCIgc3R5bGU9XCJmaWxsOmJsdWVcIi8+YCxcbiAgXCJIVE1MXCI6IGA8cG9seWdvbiBwb2ludHM9XCI1LjkwMiAyNy4yMDEgMy42NTUgMiAyOC4zNDUgMiAyNi4wOTUgMjcuMTk3IDE1Ljk4NSAzMCA1LjkwMiAyNy4yMDFcIiBzdHlsZT1cImZpbGw6I2U0NGYyNlwiLz48cG9seWdvbiBwb2ludHM9XCIxNiAyNy44NTggMjQuMTcgMjUuNTkzIDI2LjA5MiA0LjA2MSAxNiA0LjA2MSAxNiAyNy44NThcIiBzdHlsZT1cImZpbGw6I2YxNjYyYVwiLz48cG9seWdvbiBwb2ludHM9XCIxNiAxMy40MDcgMTEuOTEgMTMuNDA3IDExLjYyOCAxMC4yNDIgMTYgMTAuMjQyIDE2IDcuMTUxIDE1Ljk4OSA3LjE1MSA4LjI1IDcuMTUxIDguMzI0IDcuOTgxIDkuMDgzIDE2LjQ5OCAxNiAxNi40OTggMTYgMTMuNDA3XCIgc3R5bGU9XCJmaWxsOiNlYmViZWJcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTYgMjEuNDM0IDE1Ljk4NiAyMS40MzggMTIuNTQ0IDIwLjUwOSAxMi4zMjQgMTguMDQ0IDEwLjY1MSAxOC4wNDQgOS4yMjEgMTguMDQ0IDkuNjU0IDIyLjg5NiAxNS45ODYgMjQuNjU0IDE2IDI0LjY1IDE2IDIxLjQzNFwiIHN0eWxlPVwiZmlsbDojZWJlYmViXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE1Ljk4OSAxMy40MDcgMTUuOTg5IDE2LjQ5OCAxOS43OTUgMTYuNDk4IDE5LjQzNyAyMC41MDcgMTUuOTg5IDIxLjQzNyAxNS45ODkgMjQuNjUzIDIyLjMyNiAyMi44OTYgMjIuMzcyIDIyLjM3NCAyMy4wOTggMTQuMjM3IDIzLjE3NCAxMy40MDcgMjIuMzQxIDEzLjQwNyAxNS45ODkgMTMuNDA3XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTUuOTg5IDcuMTUxIDE1Ljk4OSA5LjA3MSAxNS45ODkgMTAuMjM1IDE1Ljk4OSAxMC4yNDIgMjMuNDQ1IDEwLjI0MiAyMy40NDUgMTAuMjQyIDIzLjQ1NSAxMC4yNDIgMjMuNTE3IDkuNTQ4IDIzLjY1OCA3Ljk4MSAyMy43MzIgNy4xNTEgMTUuOTg5IDcuMTUxXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcbiAgXCJIVFRQXCI6IGA8ZGVmcz48cmFkaWFsR3JhZGllbnQgaWQ9XCJhXCIgY3g9XCIxMi4yNzhcIiBjeT1cIjI0LjU1N1wiIHI9XCIxOC4zNzFcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLCAwLCAwLCAtMSwgLTAuMDAxLCAzNC4wMDEpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZDNlOWZmXCIvPjxzdG9wIG9mZnNldD1cIjAuMTU1XCIgc3RvcC1jb2xvcj1cIiNkM2U5ZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMC43NVwiIHN0b3AtY29sb3I9XCIjNDA3NGFlXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzM2NDg2Y1wiLz48L3JhZGlhbEdyYWRpZW50PjxyYWRpYWxHcmFkaWVudCBpZD1cImJcIiBjeD1cIjEwLjY1N1wiIGN5PVwiMjYuNzQ2XCIgcj1cIjI2LjY2XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMSwgMCwgMCwgLTEsIC0wLjAwMSwgMzQuMDAxKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNmZmZcIiBzdG9wLW9wYWNpdHk9XCIwLjE2NVwiLz48L3JhZGlhbEdyYWRpZW50PjxyYWRpYWxHcmFkaWVudCBpZD1cImNcIiBjeD1cIi00NS4wNVwiIGN5PVwiOS4yODVcIiByPVwiNC4xMTVcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMjEuOTcxIDQxLjk0Mikgcm90YXRlKDE0My43MzQpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZmXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiIHN0b3Atb3BhY2l0eT1cIjBcIi8+PC9yYWRpYWxHcmFkaWVudD48cmFkaWFsR3JhZGllbnQgaWQ9XCJkXCIgY3g9XCItNDEuNDU2XCIgY3k9XCIzMi4xNTRcIiByPVwiNC4xMTVcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgzLjU3MSA4Ny4wNzUpIHJvdGF0ZSgxNDMuNzM0KSBzY2FsZSgxLjI5NylcIiB4bGluazpocmVmPVwiI2NcIi8+PHJhZGlhbEdyYWRpZW50IGlkPVwiZVwiIGN4PVwiLTQ4LjQ4NVwiIGN5PVwiMTMuMjM5XCIgcj1cIjQuMTE1XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTIzLjA4NCA1NS40MTMpIHJvdGF0ZSgxNDMuNzM0KVwiIHhsaW5rOmhyZWY9XCIjY1wiLz48cmFkaWFsR3JhZGllbnQgaWQ9XCJmXCIgY3g9XCItNDAuODgzXCIgY3k9XCIxNi4wMzZcIiByPVwiNC4xMTVcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgtMC44NywgMC42MzksIC0wLjYzOCwgLTAuODcsIC05LjM1MSwgNDcuNzA2KVwiIHhsaW5rOmhyZWY9XCIjY1wiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJnXCIgeDE9XCItNjYuNTAyXCIgeTE9XCIyLjIxOVwiIHgyPVwiLTY0LjYyNlwiIHkyPVwiNi43NDlcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgwLjkzOSwgLTAuODc5LCAtMC42ODMsIC0wLjczLCA4NC44MSwgLTMzLjYyOClcIiB4bGluazpocmVmPVwiI2NcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiaFwiIHgxPVwiLTI2Ljc5MVwiIHkxPVwiMzkuMTU5XCIgeDI9XCItMjQuOTk5XCIgeTI9XCI0NC42ODNcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLjEzMSwgMC42MTMsIDAuNDc3LCAtMC44NzksIDIxLjY0OCwgNjkuMDcxKVwiIHhsaW5rOmhyZWY9XCIjY1wiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJpXCIgeDE9XCItNjMuMzg0XCIgeTE9XCI4LjE3N1wiIHgyPVwiLTYzLjU3XCIgeTI9XCI0LjY5XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMC45MTgsIC0wLjg1OSwgLTAuNjY4LCAtMC43MTMsIDc3Ljg1NywgLTM2LjQ5MylcIiB4bGluazpocmVmPVwiI2NcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwialwiIHgxPVwiLTk5LjI1OVwiIHkxPVwiODkuNTQ1XCIgeDI9XCItOTguODI1XCIgeTI9XCI5My4wMjNcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgtMS4yOCwgLTAuMTI2LCAtMC4wOTgsIDAuOTk1LCAtMTAxLjYzNywgLTkzLjAxNSlcIiB4bGluazpocmVmPVwiI2NcIi8+PHJhZGlhbEdyYWRpZW50IGlkPVwia1wiIGN4PVwiLTIwLjcxMlwiIGN5PVwiNTcuNjFcIiByPVwiMi44MzZcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgwLCAtMC44NDMsIC0wLjcyMSwgMCwgMjYuNjI1LCAtMjEuNjk2KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzcyOWZjZlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMzYjYxYTZcIi8+PC9yYWRpYWxHcmFkaWVudD48cmFkaWFsR3JhZGllbnQgaWQ9XCJsXCIgY3g9XCItMjAuNzEyXCIgY3k9XCIzOS44NThcIiByPVwiMi44MzZcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgyNi42MjUgNjMuMDk2KSByb3RhdGUoOTApIHNjYWxlKDAuODQzIDAuNzIxKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzcyOWZjZlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM1MDllMmZcIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9odHRwPC90aXRsZT48cGF0aCBkPVwiTTI4LjAyNiwxNC4yQTExLjg3NywxMS44NzcsMCwxLDEsMTYuMTQ5LDIuMzI1LDExLjg3OCwxMS44NzgsMCwwLDEsMjguMDI2LDE0LjJaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0xNi4xNDksMjYuMzg2QTEyLjE4MywxMi4xODMsMCwxLDEsMjguMzMzLDE0LjIsMTIuMiwxMi4yLDAsMCwxLDE2LjE0OSwyNi4zODZabTAtMjMuNzU0QTExLjU3MSwxMS41NzEsMCwxLDAsMjcuNzIsMTQuMiwxMS41ODQsMTEuNTg0LDAsMCwwLDE2LjE0OSwyLjYzMlpcIiBzdHlsZT1cImZpbGw6IzM5Mzk2Y1wiLz48cGF0aCBkPVwiTTI3LjY5MywxMi40MjRoMGwtLjMyOC4zNzFhNyw3LDAsMCwwLS42NTYtLjY0NGwtLjUuMDc0LS40Ni0uNTE5di42NDNsLjM5NC4zLjI2Mi4zLjM1LS40Yy4wODguMTY1LjE3NS4zMy4yNjMuNXYuNDk1bC0uMzk0LjQ0NS0uNzIyLjUtLjU0Ni41NDUtLjM1LS40LjE3NS0uNDQ1LS4zNS0uNC0uNTkxLTEuMjYyLS41LS41NjlMMjMuNiwxMi4xbC4yLjcxOC4zNzEuNDIxYTE3LjA2OSwxNy4wNjksMCwwLDAsLjcsMS43ODMsOS45NzksOS45NzksMCwwLDAsMS4yNjgtLjF2LjM0N2wtLjUyNSwxLjI4Ny0uNDgxLjU0NC0uMzk0Ljg0M1YxOS4zM2wuMTMyLjU0NS0uMjE5LjI0Ny0uNDgyLjMtLjUuNDIxLjQxNi40Ny0uNTY5LjUuMTA5LjMyMS0uODUzLjk2NkgyMi4ybC0uNDgxLjNoLS4zMDd2LS40bC0uMTMtLjc5M2MtLjE2OS0uNS0uMzQ2LS45OTEtLjUyNS0xLjQ4NCwwLS4zNjQuMDIyLS43MjUuMDQ0LTEuMDg5bC4yMTktLjQ5NS0uMzA3LS41OTUuMDIyLS44MTctLjQxNi0uNDcuMjA4LS42OC0uMzM4LS4zODRIMTkuNmwtLjItLjIyMy0uNTkxLjM3Mi0uMjQtLjI3My0uNTQ3LjQ3TDE2LjkxMSwxNS4yN2wtLjQzNy0xLjA0LjM5NC0uNTkzLS4yMTktLjI0Ny40ODEtMS4xMzljLjM5NS0uNDkxLjgwNy0uOTYzLDEuMjI1LTEuNDM2bC43NDQtLjIuODMxLS4xLjU2OS4xNDkuODA5LjgxNi4yODQtLjMyMS4zOTMtLjA0OS43NDQuMjQ3SDIzLjNsLjM5NC0uMzQ3LjE3NS0uMjQ3LS4zOTQtLjI0Ny0uNjU2LS4wNDlhNi42LDYuNiwwLDAsMC0uNTY4LS43NDNsLS4yMTkuMS0uMDg4LjY0NC0uMzk0LS40NDUtLjA4Ny0uNS0uNDM3LS4zNDZoLS4xNzZsLjQzOC40OTUtLjE3NS40NDUtLjM1LjEuMjE5LS40NDUtLjM5NC0uMi0uMzQ5LS40LS42NTcuMTQ4LS4wODcuMi0uMzk0LjI0OC0uMjE5LjU0NS0uNTQ2LjI3Mi0uMjQxLS4yNzJIMTcuODNWOS40MjhsLjU2OS0uM2guNDM3bC0uMDg4LS4zNDZMMTguNCw4LjQzOGwuNTktLjEyNC4zMjgtLjM3MS4yNjItLjQ0NmguNDgybC0uMTMyLS4zNDYuMzA3LS4ydi40bC42NTYuMTQ4LjY1Ni0uNTQ0LjA0NC0uMjQ4LjU2OC0uNGE0LjM1Myw0LjM1MywwLDAsMC0uNjEyLjFWNS45NjNsLjIxOS0uNWgtLjIxOWwtLjQ4LjQ0NS0uMTMyLjI0OC4xMzIuMzQ3LS4yMTkuNTkzLS4zNS0uMi0uMzA2LS4zNDYtLjQ4Mi4zNDYtLjE3NS0uNzkyLjgzMS0uNTQ0di0uM2wuNTI1LS4zNDYuODMxLS4yLjU2OS4yLDEuMDQ5LjItLjI2Mi4zSDIyLjUxbC41NjkuNTk0LjQzNy0uNDk1LjEzMy0uMjE4YTE1LjUzLDE1LjUzLDAsMCwxLDIuNjM1LDMuMTQ3QTExLjQ1MiwxMS40NTIsMCwwLDEsMjcuNjkzLDEyLjQyNFpcIiBzdHlsZT1cImZpbGw6IzIwNGE4NztmaWxsLW9wYWNpdHk6MC43MTM0NTAzMTI2MTQ0NDA5XCIvPjxwYXRoIGQ9XCJNMTYuODYxLDUuNTE3bC0uMDQ0LjMuMzA3LjIuNTI0LS4zNDYtLjI2Mi0uMy0uMzUuMi0uMTc0LS4wNVwiIHN0eWxlPVwiZmlsbDojMjA0YTg3O2ZpbGwtb3BhY2l0eTowLjcxMzQ1MDMxMjYxNDQ0MDlcIi8+PHBhdGggZD1cIk0xNy4zNDMsMy40ODhsLTEuMTM4LS40NDYtMS4zMTIuMTQ4LTEuNjE5LjQ0NS0uMzA2LjMsMS4wMDYuNjkzdi40bC0uMzk0LjQuNTI1LDEuMDQuMzQ5LS4yLjQzOC0uNjkzYTE1LjA1MywxNS4wNTMsMCwwLDAsMS45MjQtLjc0M2wuNTI1LTEuMzM3XCIgc3R5bGU9XCJmaWxsOiMyMDRhODc7ZmlsbC1vcGFjaXR5OjAuNzEzNDUwMzEyNjE0NDQwOVwiLz48cGF0aCBkPVwiTTE4LjUyNCw3LjY0NywxOC4zNDksNy4ybC0uMzA3LjEuMDg4LjU0NC4zOTQtLjJcIiBzdHlsZT1cImZpbGw6IzIwNGE4NztmaWxsLW9wYWNpdHk6MC43MTM0NTAzMTI2MTQ0NDA5XCIvPjxwYXRoIGQ9XCJNMTguNyw3LjU0N2wtLjA4OC41OTUuNDgxLS4xLjM1LS4zNDYtLjMwNi0uM2MtLjEtLjI3NC0uMjIxLS41MjktLjM1LS43OTJoLS4yNjJ2LjNsLjE3NC4ydi40NDVcIiBzdHlsZT1cImZpbGw6IzIwNGE4NztmaWxsLW9wYWNpdHk6MC43MTM0NTAzMTI2MTQ0NDA5XCIvPjxwYXRoIGQ9XCJNMTIuMjI1LDE2Ljk1M2wtLjM1LS42OTMtLjY1Ni0uMTQ4LS4zNS0uOTQtLjg3NS4xLS43NDMtLjU0NC0uNzg4LjY5M3YuMTA5YTMsMywwLDAsMS0uNzQzLS4yMDlsLS4xNzUtLjQ5NVYxNC4yOGwtLjUyNS4wNDlxLjA2Ni0uNTIuMTMxLTEuMDM5SDYuODQ1bC0uMzA2LjQtLjMwNi4xNDhMNS44LDEzLjU4N2wtLjA0NC0uNTQ1LjA4OC0uNTk0LjY1Ni0uNDk1SDcuMDJsLjA4Ny0uMy42NTYuMTQ4LjQ4MS41OTUuMDg4LS45OTEuODMxLS42OTMuMzA2LS43NDMuNjEyLS4yNDcuMzUtLjQ5NS43ODctLjE0OS4zOTQtLjU5M0gxMC40MzJsLjc0NC0uMzQ3SDExLjdsLjc0NC0uMjQ4LjA4OC0uMy0uMjYzLS4yNDgtLjMwNi0uMS4wODgtLjMtLjIxOS0uNDQ1LS41MjUuMi4wODgtLjQtLjYxMi0uMzQ3TDEwLjMsNi44bC4wNDQuMy0uNDgxLjItLjMwNi42NDMtLjEzMS0uNTk0TDguNTk0LDdsLS4xMzEtLjQ0NSwxLjA5NC0uNjQ0LjQ4MS0uNDQ1LjA0NC0uNTQ0LS4yNjItLjE0OS0uMzUtLjA1LS4yMTkuNTQ1cy0uMzY2LjA3Mi0uNDYuMDk1QTEyLjUsMTIuNSwwLDAsMCw0LjYsMTMuMzcxYTYuNzg5LDYuNzg5LDAsMCwwLC40MDkuNzExbC45MTguNTQ0LjkxOC4yNDguMzk0LjUuNjEyLjQ0NS4zNS0uMDQ5LjI2Mi4xMTh2LjA4bC0uMzUuOTQtLjI2My40LjA4OC4yLS4yMTkuNzQyLjc4NywxLjQzNi43ODcuNjkzLjM1LjQ5NUw5LjYsMjEuOWwuMjYzLjU5M0w5LjYsMjMuNjM3cy0uMDIxLS4wMDcuMDEzLjEwN2E1LjI3OCw1LjI3OCwwLDAsMCwxLjQ4OC44MDlsLjE2MS0uMTIzLS4wODctLjI0Ny4zNS0uMzQ3LjEzMS0uMzQ3LjU2OS0uMi40MzctMS4wODktLjEzMS0uMy4zMDYtLjQ0NS42NTYtLjE0OS4zNS0uNzkyLS4wODgtLjk5LjUyNS0uNzQzLjA4OC0uNzQzYy0uNzE4LS4zNTYtMS40My0uNzIzLTIuMTQzLTEuMDg5XCIgc3R5bGU9XCJmaWxsOiMyMDRhODc7ZmlsbC1vcGFjaXR5OjAuNzEzNDUwMzEyNjE0NDQwOVwiLz48cGF0aCBkPVwiTTExLjI2Myw1LjcxNWwuNDM3LjNoLjM1VjUuNjY2bC0uNDM3LS4yLS4zNS4yNDdcIiBzdHlsZT1cImZpbGw6IzIwNGE4NztmaWxsLW9wYWNpdHk6MC43MTM0NTAzMTI2MTQ0NDA5XCIvPjxwYXRoIGQ9XCJNMTAuMTI2LDUuMzE5bC0uMjE5LjU0NGguNDM4bC4yMTktLjVjLjE4OS0uMTMzLjM3Ni0uMjY4LjU2OC0uNGwuNDM4LjE0OS44NzUuNTk0LjQzOC0uNC0uNDgyLS4yLS4yMTktLjQ0Ni0uODMxLS4xLS4wNDQtLjI0OC0uMzk0LjEtLjE3NS4zNDYtLjIxOS0uNDQ2LS4wODcuMi4wNDQuNS0uMzUuM1wiIHN0eWxlPVwiZmlsbDojMjA0YTg3O2ZpbGwtb3BhY2l0eTowLjcxMzQ1MDMxMjYxNDQ0MDlcIi8+PHBhdGggZD1cIk0xMS43LDQuMDgxbC4yMTktLjIuNDM4LS4xYTYuOSw2LjksMCwwLDEsLjkxOC0uMzQ3bC0uMTc0LS4zLS41NjUuMDgxLS4yNjcuMjY2LS40NC4wNjQtLjM5MS4xODQtLjE5LjA5Mi0uMTE2LjE1NS41NjguMVwiIHN0eWxlPVwiZmlsbDojMjA0YTg3O2ZpbGwtb3BhY2l0eTowLjcxMzQ1MDMxMjYxNDQ0MDlcIi8+PHBhdGggZD1cIk0xMi40NDQsOC43ODVsLjI2My0uNC0uMzk0LS4zLjEzMS42OTNcIiBzdHlsZT1cImZpbGw6IzIwNGE4NztmaWxsLW9wYWNpdHk6MC43MTM0NTAzMTI2MTQ0NDA5XCIvPjxwYXRoIGQ9XCJNMTYuMTQ5LDI1Ljc4M0ExMS41OCwxMS41OCwwLDEsMSwyNy43MjksMTQuMiwxMS41OTMsMTEuNTkzLDAsMCwxLDE2LjE0OSwyNS43ODNabTAtMjIuNTQ4QTEwLjk2OCwxMC45NjgsMCwxLDAsMjcuMTE3LDE0LjIsMTAuOTgsMTAuOTgsMCwwLDAsMTYuMTQ5LDMuMjM1WlwiIHN0eWxlPVwib3BhY2l0eTowLjM5NTYwNDQwMTgyNjg1ODU7aXNvbGF0aW9uOmlzb2xhdGU7ZmlsbDp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNNS41NDEsMTAuMjQxYTQuMTE1LDQuMTE1LDAsMSwwLDYuNjM2LTQuODY2aDBBNC4xMTUsNC4xMTUsMCwwLDAsNS41NCwxMC4yNFpcIiBzdHlsZT1cImZpbGw6dXJsKCNjKVwiLz48cGF0aCBkPVwiTTcuODM2LDguNTU4YTEuMjY4LDEuMjY4LDAsMSwwLDIuMDQ2LTEuNWgwYTEuMjY4LDEuMjY4LDAsMCwwLTIuMDQ2LDEuNVpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE3Ljk1MiwyNC44YTUuMzM3LDUuMzM3LDAsMSwwLDguNjA3LTYuMzEydjBBNS4zMzcsNS4zMzcsMCwwLDAsMTcuOTUsMjQuOFpcIiBzdHlsZT1cImZpbGw6dXJsKCNkKVwiLz48cGF0aCBkPVwiTTIwLjkyOCwyMi42MTZhMS42NDUsMS42NDUsMCwxLDAsMi42NTMtMS45NDZoMGExLjY0NSwxLjY0NSwwLDAsMC0yLjY1MywxLjk0NlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTQuODU5LDE4LjQ5M0E0LjExNSw0LjExNSwwLDEsMCwxMS41LDEzLjYyNmgwYTQuMTE1LDQuMTE1LDAsMCwwLTYuNjM2LDQuODY2WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2UpXCIvPjxwYXRoIGQ9XCJNNy4xNTQsMTYuODA5YTEuMjY4LDEuMjY4LDAsMSwwLDIuMDQ2LTEuNWgwYTEuMjY4LDEuMjY4LDAsMCwwLTIuMDQ2LDEuNVpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTEyLjQwOCwxMC4yNjlBNC40NDEsNC40NDEsMCwxLDAsMTkuNTcsNS4wMTZoMGE0LjQ0MSw0LjQ0MSwwLDEsMC03LjE2Miw1LjI1M1pcIiBzdHlsZT1cImZpbGw6dXJsKCNmKVwiLz48cGF0aCBkPVwiTTE0Ljg4NSw4LjQ1MmExLjM2OSwxLjM2OSwwLDEsMCwyLjIwOC0xLjYxOWgwYTEuMzY5LDEuMzY5LDAsMSwwLTIuMjA4LDEuNjE5WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTIuNjgsMjYuMjM4YTMuODMsMy44MywwLDAsMS0yLjkwOS0xLjA4N2MtMS4xMzMtMS4yMS0xLjItMy4yNTUtLjItNS43NTdhMjEuNTQyLDIxLjU0MiwwLDAsMSw1LjMwNy03LjMyNkMyMC4wNjQsNy4yMTUsMjUuOTQ1LDUuMzU2LDI4LjI3LDcuODM5YzEuMTMzLDEuMjExLDEuMiwzLjI1NS4yLDUuNzU3YTIxLjU1MywyMS41NTMsMCwwLDEtNS4zMDgsNy4zMjZBMjEuNTUxLDIxLjU1MSwwLDAsMSwxNS41LDI1LjczMyw5LjIyOSw5LjIyOSwwLDAsMSwxMi42OCwyNi4yMzhaTTI1LjM0Miw3LjI4Yy0yLjcsMC02LjYsMS45MDgtMTAuMSw1LjE4M0EyMSwyMSwwLDAsMCwxMC4wNzEsMTkuNmMtLjkyMSwyLjMtLjg4Nyw0LjEzOC4wOTQsNS4xODdzMi44MTcsMS4yLDUuMTY5LjQzN2EyMSwyMSwwLDAsMCw3LjQ2LTQuNjkyLDIxLDIxLDAsMCwwLDUuMTc1LTcuMTMyYy45MjEtMi4zLjg4OC00LjEzOC0uMDk1LTUuMTg3QTMuMzQsMy4zNCwwLDAsMCwyNS4zNDIsNy4yOFpcIiBzdHlsZT1cImZpbGw6dXJsKCNnKVwiLz48cGF0aCBkPVwiTTIxLjY4MSwyMi4wOTRhMjAuNjMzLDIwLjYzMywwLDAsMS05LjMzOS0yLjc1OUM2LjEsMTUuOTUsMi40NzMsMTAuOTU3LDQuMDk0LDcuOTY4Yy43OS0xLjQ1OCwyLjctMi4xNzUsNS40LTIuMDEyQTIxLjU0MiwyMS41NDIsMCwwLDEsMTguMTIsOC42NzRhMjEuNTQ1LDIxLjU0NSwwLDAsMSw2Ljk4Nyw1Ljc0NmMxLjYsMi4xNjcsMi4wNTEsNC4xNjMsMS4yNjEsNS42MjFDMjUuNjIyLDIxLjQxNiwyMy45MTUsMjIuMDk0LDIxLjY4MSwyMi4wOTRaTTguNzU5LDYuNDc0Yy0yLjEsMC0zLjU3Mi42MTItNC4xOSwxLjc1MUMzLjExNywxMC45LDYuNzIsMTUuNjc0LDEyLjYsMTguODZzMTEuODQzLDMuNiwxMy4yOTQuOTI0Yy42ODUtMS4yNjMuMjUxLTMuMDU0LTEuMjItNS4wNDJhMjEsMjEsMCwwLDAtNi44MS01LjU5M0EyMSwyMSwwLDAsMCw5LjQ1OSw2LjVROS4xLDYuNDc0LDguNzU5LDYuNDc0WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2gpXCIvPjxwYXRoIGQ9XCJNMTAsMjQuMDc4YTMuNzU3LDMuNzU3LDAsMCwxLTIuODUxLTEuMDY1Yy0xLjExLTEuMTg3LTEuMTgxLTMuMTg5LS4yLTUuNjM5YTIxLjA2MiwyMS4wNjIsMCwwLDEsNS4xODktNy4xNjNjNS4wNzMtNC43NDcsMTAuODMtNi41NjMsMTMuMS00LjEzMmgwYzIuMjc1LDIuNDMxLjA4Myw4LjA1My00Ljk5LDEyLjhhMjEuMDU5LDIxLjA1OSwwLDAsMS03LjQ5MSw0LjdBOS4wMjQsOS4wMjQsMCwwLDEsMTAsMjQuMDc4Wk0yMi4zNzMsNS41NTNjLTIuNjMsMC02LjQzOSwxLjg2NC05Ljg1Niw1LjA2MkEyMC41LDIwLjUsMCwwLDAsNy40NjMsMTcuNThjLS45LDIuMjM5LS44NjYsNC4wMzQuMDksNS4wNTVzMi43NDUsMS4xNzIsNS4wMzguNDI0YTIwLjUxMywyMC41MTMsMCwwLDAsNy4yODQtNC41ODJjNC43NjYtNC40Niw2Ljk5NC05Ljg1Myw0Ljk2NS0xMi4wMmgwQTMuMjU2LDMuMjU2LDAsMCwwLDIyLjM3Myw1LjU1M1pcIiBzdHlsZT1cImZpbGw6dXJsKCNpKVwiLz48cGF0aCBkPVwiTTE3LjUxMiwxOS40MTNjLS44NiwwLTEuNzQ4LS4wNDMtMi42NTktLjEzM0M3Ljc4NCwxOC41ODQsMi41MDcsMTUuMzg4LDIuODQsMTJoMGMuMzMzLTMuMzgzLDYuMTMzLTUuNDksMTMuMi00Ljc5MXMxMi4zNDUsMy44OTIsMTIuMDEyLDcuMjc1QzI3Ljc2MywxNy40MzYsMjMuMzI0LDE5LjQxMywxNy41MTIsMTkuNDEzWk0zLjM3OCwxMi4wNTdjLS4zLDMuMDMxLDQuODczLDYuMDMsMTEuNTI4LDYuNjg2czEyLjMxMi0xLjI3NywxMi42MTEtNC4zMDhTMjIuNjQ0LDguNDA2LDE1Ljk4OCw3Ljc1LDMuNjc3LDkuMDI3LDMuMzc4LDEyLjA1N1pcIiBzdHlsZT1cImZpbGw6dXJsKCNqKVwiLz48cGF0aCBkPVwiTTYuMjUxLDI5Ljk2Nmg2LjY3NFYyMC44MDloMi45ODFMOS41NDgsMTEuNDM0LDMuMjk1LDIwLjc4MmwyLjk1OC4wMzFaXCIgc3R5bGU9XCJmaWxsOnVybCgjaylcIi8+PHBhdGggZD1cIk0xMi45MjQsMzAuMDQ1SDYuMjUxYS4wNDkuMDQ5LDAsMCwxLS4wMzktLjAyM2MtLjAxLS4wMTUtLjAxNi0zLjEzNS0uMDE2LTMuMTU2bDAtNS45NzUtMi45LS4wM2EuMDYuMDYsMCwwLDEtLjA1MS0uMDQ4LjEuMSwwLDAsMSwuMDExLS4wODVMOS41MDgsMTEuMzhhLjA1Ni4wNTYsMCwwLDEsLjA0MS0uMDI1LjA1LjA1LDAsMCwxLC4wNC4wMjRsNi4zNTcsOS4zNzVhLjEuMSwwLDAsMSwuMDExLjA4Ni4wNTkuMDU5LDAsMCwxLS4wNTEuMDQ4SDEyLjk4djkuMDc4QzEyLjk4LDMwLjAxLDEyLjk1NSwzMC4wNDUsMTIuOTI0LDMwLjA0NVptLTYuNjE4LS4xNThoNi41NjJWMjAuODA5YzAtLjA0NC4wMjUtLjA3OS4wNTYtLjA3OWgyLjg1TDkuNTQ5LDExLjU0OSwzLjQyNCwyMC43bDIuODMuMDNjLjAzMSwwLC4wNTUuMDM2LjA1NS4wNzlaXCIgc3R5bGU9XCJmaWxsOiMxODM4NjhcIi8+PHBhdGggZD1cIk0xOS4wNTMsMjAuNTg3bC0yLjk1OC4wMzEsNi4yNTQsOS4zNDgsNi4zNTctOS4zNzVIMjUuNzI0VjExLjQzNEgxOS4wNTFaXCIgc3R5bGU9XCJmaWxsOnVybCgjbClcIi8+PHBhdGggZD1cIk0yNS43OCwxMS40MzR2OS4wNzhoMi45MjVhLjA1OS4wNTksMCwwLDEsLjA1MS4wNDguMS4xLDAsMCwxLS4wMTEuMDg2bC02LjM1Nyw5LjM3NWEuMDUuMDUsMCwwLDEtLjA0LjAyNC4wNTYuMDU2LDAsMCwxLS4wNDEtLjAyNWwtNi4yNTQtOS4zNDhhLjEuMSwwLDAsMS0uMDExLS4wODUuMDYuMDYsMCwwLDEsLjA1MS0uMDQ4bDIuOS0uMDMsMC01Ljk3NWMwLS4wMjEuMDA2LTMuMTQxLjAxNi0zLjE1NmEuMDQ5LjA0OSwwLDAsMSwuMDM5LS4wMjNoNi42NzRDMjUuNzU1LDExLjM1NSwyNS43OCwxMS4zOSwyNS43OCwxMS40MzRabS02LjY3Miw5LjE1M2MwLC4wNDMtLjAyNS4wNzktLjA1NS4wNzlsLTIuODMuMDMsNi4xMjUsOS4xNTYsNi4yMjYtOS4xODFoLTIuODVjLS4wMzEsMC0uMDU2LS4wMzUtLjA1Ni0uMDc5VjExLjUxM0gxOS4xMDdaXCIgc3R5bGU9XCJmaWxsOiMxODM4NjhcIi8+YCxcbiAgXCJJZHJpc1wiOiBgPHBhdGggZD1cIk0xMy4zNzYsNi4yYzMuNiwxLjEsNC41LDIsNS44LDUuMi0uMy00LTEuOS01LjYtNS44LTUuMlpcIiBzdHlsZT1cImZpbGw6IzhhMDgxOVwiLz48cGF0aCBkPVwiTTguMzc2LDEyLjRjMi4zLjcsNSwxLjMsNiw1LjcuNC01LjUtMi4yLTUuOC02LTUuN1pcIiBzdHlsZT1cImZpbGw6IzhhMDgxOVwiLz48cGF0aCBkPVwiTTkuOTc2LDguOGMzLjUuNyw1LjcsMS43LDcsNi4yLjMtNS44LTIuOS02LjQtNy02LjJaXCIgc3R5bGU9XCJmaWxsOiM4YTA4MTlcIi8+PHBhdGggZD1cIk0xNC41NzYsMmMxOS4xLDEyLjQtNC4yLDEyLjcuOCwyNy4xbDMsLjljLTguMy0xMS4yLDE4LjQtMTctMy44LTI4WlwiIHN0eWxlPVwiZmlsbDojOGEwODE5XCIvPmAsXG4gIFwiSW5pXCI6IGA8cGF0aCBkPVwiTTIzLjI2NSwyNC4zODFsLjktLjg5NGM0LjE2NC4xMzYsNC4yMjgtLjAxLDQuNDExLS40MzhsMS4xNDQtMi43ODVMMjkuODA1LDIwbC0uMDkzLS4yMzFjLS4wNDktLjEyMi0uMi0uNDg2LTIuOC0yLjk2NVYxNS41YzMtMi44OSwyLjkzNi0zLjAzOCwyLjc2NS0zLjQ2MUwyOC41MzgsOS4yMjVjLS4xNzEtLjQyMi0uMjM2LS41ODctNC4zNy0uNDc0bC0uOS0uOTNhMjAuMTY2LDIwLjE2NiwwLDAsMC0uMTQxLTQuMTA2bC0uMTE2LS4yNjMtMi45NzQtMS4zYy0uNDM4LS4yLS41OTItLjI3Mi0zLjQsMi43ODZsLTEuMjYyLS4wMTljLTIuODkxLTMuMDg2LTMuMDI4LTMuMDMtMy40NjEtMi44NTVMOS4xNDksMy4xODJjLS40MzMuMTc1LS41ODYuMjM3LS40MTgsNC40MzdsLS44OTMuODljLTQuMTYyLS4xMzYtNC4yMjYuMDEyLTQuNDA3LjQzOEwyLjI4NSwxMS43MzMsMi4xOTUsMTJsLjA5NC4yMzJjLjA0OS4xMi4xOTQuNDgsMi44LDIuOTYybDAsMS4zYy0zLDIuODktMi45MzUsMy4wMzgtMi43NjMsMy40NjJsMS4xMzgsMi44MTdjLjE3NC40MzEuMjM2LjU4NCw0LjM2OS40NzZsLjkuOTM1YTIwLjI0MywyMC4yNDMsMCwwLDAsLjEzNyw0LjFsLjExNi4yNjUsMi45OTMsMS4zMDhjLjQzNS4xODIuNTg2LjI0NywzLjM4Ni0yLjhsMS4yNjIuMDE2YzIuODk1LDMuMDksMy4wNDMsMy4wMywzLjQ2NiwyLjg1OWwyLjc1OS0xLjExNUMyMy4yODgsMjguNjQ0LDIzLjQ0LDI4LjU4MywyMy4yNjUsMjQuMzgxWk0xMS40MDcsMTcuODU3YTQuOTU3LDQuOTU3LDAsMSwxLDYuNDg4LDIuODI0QTUuMDE0LDUuMDE0LDAsMCwxLDExLjQwNywxNy44NTdaXCIgc3R5bGU9XCJmaWxsOiM5OWI4YzRcIi8+YCxcbiAgXCJJb1wiOiBgPHBhdGggZD1cIk0yLDIuODg3SDcuMDc1VjcuNTFIMlptLjA1Miw2LjgzSDcuMDRWMjguNjI2SDIuMDUyWlwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPjxwYXRoIGQ9XCJNMTMuMjcxLDI2LjQ1NGE5Ljc5MSw5Ljc5MSwwLDAsMS0yLjYxNi03LjE3OCwxMC4xNDgsMTAuMTQ4LDAsMCwxLDIuNjE2LTcuMzQzLDkuMzIxLDkuMzIxLDAsMCwxLDcuMDQ3LTIuNzIsOS4zNCw5LjM0LDAsMCwxLDcuMDc1LDIuNzJBMTAuMTY4LDEwLjE2OCwwLDAsMSwzMCwxOS4yNzZhOS44MDksOS44MDksMCwwLDEtMi42MDcsNy4xNzgsOS40NTYsOS40NTYsMCwwLDEtNy4wNzUsMi42NTlBOS40MzYsOS40MzYsMCwwLDEsMTMuMjcxLDI2LjQ1NFptMTAuNDM2LTIuOTcyYTYuNyw2LjcsMCwwLDAsMS4xNjYtNC4yNTgsNi45NDMsNi45NDMsMCwwLDAtMS4xNjYtNC4zNTQsNC4wNDcsNC4wNDcsMCwwLDAtMy4zODktMS40ODYsNC4wMjIsNC4wMjIsMCwwLDAtMy4zOCwxLjQ4Niw2Ljk5MSw2Ljk5MSwwLDAsMC0xLjE1Niw0LjM1NCw2Ljc0NCw2Ljc0NCwwLDAsMCwxLjE1Niw0LjI1OCw0LjA1Myw0LjA1MywwLDAsMCwzLjM4LDEuNDZBNC4wNzgsNC4wNzgsMCwwLDAsMjMuNzA3LDIzLjQ4MlpcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz5gLFxuICBcIkphdmFcIjogYDxwYXRoIGQ9XCJNMTIuMzI1LDIzLjY1NHMtMS4wNy42MjIuNzYxLjgzM2ExNi4wMjMsMTYuMDIzLDAsMCwwLDUuOC0uMjQ2LDEwLjA4OCwxMC4wODgsMCwwLDAsMS41NDEuNzUyYy01LjQ4MSwyLjM0OS0xMi40MDUtLjEzNi04LjEtMS4zMzlcIiBzdHlsZT1cImZpbGw6IzUzODJhMVwiLz48cGF0aCBkPVwiTTExLjY1NiwyMC41ODhzLTEuMi44ODguNjMzLDEuMDc4YTIyLjYxOCwyMi42MTgsMCwwLDAsNy40ODEtLjM1OSwzLjMyLDMuMzIsMCwwLDAsMS4xNTIuN2MtNi42MjcsMS45MzgtMTQuMDA5LjE1My05LjI2Ni0xLjQyMVwiIHN0eWxlPVwiZmlsbDojNTM4MmExXCIvPjxwYXRoIGQ9XCJNMTcuMywxNS4zODhhMi4wNTEsMi4wNTEsMCwwLDEtLjM1NSwyLjk1NHMzLjQyOS0xLjc3LDEuODU0LTMuOTg3Yy0xLjQ3MS0yLjA2Ny0yLjYtMy4wOTUsMy41MDgtNi42MzYsMCwwLTkuNTg2LDIuMzk0LTUuMDA3LDcuNjY5XCIgc3R5bGU9XCJmaWxsOiM1MzgyYTFcIi8+PHBhdGggZD1cIk0yNC41NTIsMjUuOTIxcy43OTIuNjUyLS44NzIsMS4xNTdjLTMuMTY0Ljk1OC0xMy4xNjgsMS4yNDgtMTUuOTQ4LjAzOC0xLS40MzUuODc0LTEuMDM4LDEuNDY0LTEuMTY0YTMuOCwzLjgsMCwwLDEsLjk2Ni0uMTA4Yy0xLjExMS0uNzgzLTcuMTgxLDEuNTM3LTMuMDgzLDIuMiwxMS4xNzYsMS44MTIsMjAuMzcyLS44MTYsMTcuNDczLTIuMTI0XCIgc3R5bGU9XCJmaWxsOiM1MzgyYTFcIi8+PHBhdGggZD1cIk0xMi44NCwxNy40MTJzLTUuMDg5LDEuMjA5LTEuOCwxLjY0OGEzOC4yMjUsMzguMjI1LDAsMCwwLDYuNzMxLS4wNzJjMi4xMDYtLjE3OCw0LjIyMS0uNTU1LDQuMjIxLS41NTVhOC45MzQsOC45MzQsMCwwLDAtMS4yOC42ODVjLTUuMTY4LDEuMzU5LTE1LjE1MS43MjctMTIuMjc3LS42NjNhOS42MjksOS42MjksMCwwLDEsNC40MDctMS4wNDJcIiBzdHlsZT1cImZpbGw6IzUzODJhMVwiLz48cGF0aCBkPVwiTTIxLjk2OSwyMi41MTVjNS4yNTMtMi43MywyLjgyNC01LjM1MywxLjEyOS01YTMuOTMyLDMuOTMyLDAsMCwwLS42LjE2MS45NTcuOTU3LDAsMCwxLC40NDktLjM0NmMzLjM1NC0xLjE3OSw1LjkzMywzLjQ3OC0xLjA4Myw1LjMyMmEuNDU4LjQ1OCwwLDAsMCwuMTA2LS4xMzhcIiBzdHlsZT1cImZpbGw6IzUzODJhMVwiLz48cGF0aCBkPVwiTTE4LjgsMnMyLjkwOSwyLjkxLTIuNzU5LDcuMzg2Yy00LjU0NiwzLjU5LTEuMDM3LDUuNjM3LDAsNy45NzUtMi42NTMtMi4zOTQtNC42LTQuNS0zLjI5NC02LjQ2M0MxNC42NjQsOC4wMTksMTkuOTc2LDYuNjIzLDE4LjgsMlwiIHN0eWxlPVwiZmlsbDojNTM4MmExXCIvPjxwYXRoIGQ9XCJNMTMuMzU2LDI5LjkxMmM1LjA0Mi4zMjMsMTIuNzg2LS4xNzksMTIuOTY5LTIuNTY1LDAsMC0uMzUzLjktNC4xNjcsMS42MjNhNDEuNDU4LDQxLjQ1OCwwLDAsMS0xMi43Ni4ycy42NDUuNTMzLDMuOTU5Ljc0NlwiIHN0eWxlPVwiZmlsbDojNTM4MmExXCIvPmAsXG4gIFwiSmF2YVNjcmlwdFwiOiBgPHJlY3QgeD1cIjJcIiB5PVwiMlwiIHdpZHRoPVwiMjhcIiBoZWlnaHQ9XCIyOFwiIHN0eWxlPVwiZmlsbDojZjVkZTE5XCIvPjxwYXRoIGQ9XCJNMjAuODA5LDIzLjg3NWEyLjg2NiwyLjg2NiwwLDAsMCwyLjYsMS42YzEuMDksMCwxLjc4Ny0uNTQ1LDEuNzg3LTEuMywwLS45LS43MTYtMS4yMjItMS45MTYtMS43NDdsLS42NTgtLjI4MmMtMS45LS44MDktMy4xNi0xLjgyMi0zLjE2LTMuOTY0LDAtMS45NzMsMS41LTMuNDc2LDMuODUzLTMuNDc2YTMuODg5LDMuODg5LDAsMCwxLDMuNzQyLDIuMTA3TDI1LDE4LjEyOEExLjc4OSwxLjc4OSwwLDAsMCwyMy4zMTEsMTdhMS4xNDUsMS4xNDUsMCwwLDAtMS4yNTksMS4xMjhjMCwuNzg5LjQ4OSwxLjEwOSwxLjYxOCwxLjZsLjY1OC4yODJjMi4yMzYuOTU5LDMuNSwxLjkzNiwzLjUsNC4xMzMsMCwyLjM2OS0xLjg2MSwzLjY2Ny00LjM2LDMuNjY3YTUuMDU1LDUuMDU1LDAsMCwxLTQuNzk1LTIuNjkxWm0tOS4yOTUuMjI4Yy40MTMuNzMzLjc4OSwxLjM1MywxLjY5MywxLjM1My44NjQsMCwxLjQxLS4zMzgsMS40MS0xLjY1M1YxNC44NTZoMi42MzF2OC45ODJjMCwyLjcyNC0xLjYsMy45NjQtMy45MjksMy45NjRhNC4wODUsNC4wODUsMCwwLDEtMy45NDctMi40WlwiLz5gLFxuICBcIkpTT05cIjogYDxwYXRoIGQ9XCJNNC4wMTQsMTQuOTc2YTIuNTEsMi41MSwwLDAsMCwxLjU2Ny0uNTE4QTIuMzc3LDIuMzc3LDAsMCwwLDYuMzg2LDEzLjEsMTUuMjYxLDE1LjI2MSwwLDAsMCw2LjYsMTAuMTU2cS4wMTItMi4wODUuMDc1LTIuNzQ3YTUuMjM2LDUuMjM2LDAsMCwxLC40MTgtMS42ODYsMy4wMjUsMy4wMjUsMCwwLDEsLjc1NS0xLjAxOEEzLjA0NiwzLjA0NiwwLDAsMSw5LDQuMTI1LDYuNzYyLDYuNzYyLDAsMCwxLDEwLjU0NCw0aC43VjUuOTZoLS4zODdhMi4zMzgsMi4zMzgsMCwwLDAtMS43MjMuNDY4QTMuNCwzLjQsMCwwLDAsOC43MDksOC41MmEzNi4wNTQsMzYuMDU0LDAsMCwxLS4xMzcsNC4xMzMsNC43MzQsNC43MzQsMCwwLDEtLjc2OCwyLjA2QTQuNTY3LDQuNTY3LDAsMCwxLDYuMSwxNmEzLjgwOSwzLjgwOSwwLDAsMSwxLjk5MiwxLjc1NCw4Ljg2MSw4Ljg2MSwwLDAsMSwuNjE4LDMuODY1cTAsMi40MzUuMDUsMi45QTEuNzU1LDEuNzU1LDAsMCwwLDkuMjY0LDI1LjdhMi42MzksMi42MzksMCwwLDAsMS41OTIuMzM3aC4zODdWMjhoLS43YTUuNjU1LDUuNjU1LDAsMCwxLTEuNzczLS4yLDIuOTcsMi45NywwLDAsMS0xLjMyNC0uOTMsMy4zNTMsMy4zNTMsMCwwLDEtLjY4MS0xLjYzQTI0LjE3NSwyNC4xNzUsMCwwLDEsNi42LDIyLjAwNiwxNi40NjksMTYuNDY5LDAsMCwwLDYuMzg2LDE4LjlhMi40MDgsMi40MDgsMCwwLDAtLjgwNS0xLjM2MSwyLjQ4OSwyLjQ4OSwwLDAsMC0xLjU2Ny0uNTI0WlwiIHN0eWxlPVwiZmlsbDojZjVkZTE5XCIvPjxwYXRoIGQ9XCJNMjcuOTg2LDE3LjAxMWEyLjQ4OSwyLjQ4OSwwLDAsMC0xLjU2Ny41MjQsMi40MDgsMi40MDgsMCwwLDAtLjgwNSwxLjM2MSwxNi40NjksMTYuNDY5LDAsMCwwLS4yMTIsMy4xMDksMjQuMTc1LDI0LjE3NSwwLDAsMS0uMTY5LDMuMjM0LDMuMzUzLDMuMzUzLDAsMCwxLS42ODEsMS42MywyLjk3LDIuOTcsMCwwLDEtMS4zMjQuOTMsNS42NTUsNS42NTUsMCwwLDEtMS43NzMuMmgtLjdWMjYuMDRoLjM4N2EyLjYzOSwyLjYzOSwwLDAsMCwxLjU5Mi0uMzM3LDEuNzU1LDEuNzU1LDAsMCwwLC41MDYtMS4xODZxLjA1LS40NjIuMDUtMi45YTguODYxLDguODYxLDAsMCwxLC42MTgtMy44NjVBMy44MDksMy44MDksMCwwLDEsMjUuOSwxNmE0LjU2Nyw0LjU2NywwLDAsMS0xLjctMS4yODYsNC43MzQsNC43MzQsMCwwLDEtLjc2OC0yLjA2LDM2LjA1NCwzNi4wNTQsMCwwLDEtLjEzNy00LjEzMywzLjQsMy40LDAsMCwwLS40MjUtMi4wOTIsMi4zMzgsMi4zMzgsMCwwLDAtMS43MjMtLjQ2OGgtLjM4N1Y0aC43QTYuNzYyLDYuNzYyLDAsMCwxLDIzLDQuMTI1YTMuMDQ2LDMuMDQ2LDAsMCwxLDEuMTQ5LjU4MSwzLjAyNSwzLjAyNSwwLDAsMSwuNzU1LDEuMDE4LDUuMjM2LDUuMjM2LDAsMCwxLC40MTgsMS42ODZxLjA2Mi42NjIuMDc1LDIuNzQ3YTE1LjI2MSwxNS4yNjEsMCwwLDAsLjIxMiwyLjk0NywyLjM3NywyLjM3NywwLDAsMCwuODA1LDEuMzU1LDIuNTEsMi41MSwwLDAsMCwxLjU2Ny41MThaXCIgc3R5bGU9XCJmaWxsOiNmNWRlMTlcIi8+YCxcbiAgXCJKU09ONVwiOiBgPHBhdGggZD1cIk0xMi44MTUsMTUuMTY3bC42OC01LjY3Nmg2LjQ4OXYyaC00LjRMMTUuMzI5LDEzLjdhMi40LDIuNCwwLDAsMSwuMjUyLS4xMjIsMi45NjIsMi45NjIsMCwwLDEsLjM3NC0uMTMsMi45LDIuOSwwLDAsMSwuNDU4LS4xMDYsMi44MzQsMi44MzQsMCwwLDEsLjUxMi0uMDQ2LDMuOTgzLDMuOTgzLDAsMCwxLDEuNDY2LjI1MiwyLjczNiwyLjczNiwwLDAsMSwxLjA3Ni43MjMsMy4xNjcsMy4xNjcsMCwwLDEsLjY2NCwxLjE2OCw1LDUsMCwwLDEsLjIyOCwxLjU4OCw0LjE1Nyw0LjE1NywwLDAsMS0uMjM2LDEuMzg3LDMuMzA3LDMuMzA3LDAsMCwxLTEuOSwyLjAyOSw0LjMsNC4zLDAsMCwxLTEuNzE1LjMxMiw0Ljc1LDQuNzUsMCwwLDEtMS40NTgtLjIyOCw0LjA1NCw0LjA1NCwwLDAsMS0xLjI1Mi0uNjU2LDMuMzU5LDMuMzU5LDAsMCwxLS44NzgtMS4wNDYsMi43ODcsMi43ODcsMCwwLDEtLjMyLTEuMzgySDE1LjE4YTEuNDU4LDEuNDU4LDAsMCwwLC4zOS45NywxLjM4MywxLjM4MywwLDAsMCwxLjU1OC4yMDYsMS4wODksMS4wODksMCwwLDAsLjQtLjQxMiwxLjc0OSwxLjc0OSwwLDAsMCwuMjA2LS42MTgsNC4zLDQuMywwLDAsMCwuMDYyLS43NCwyLjcwOSwyLjcwOSwwLDAsMC0uMDkyLS43NCwxLjUwNiwxLjUwNiwwLDAsMC0uMjgyLS41NTgsMS4yMjksMS4yMjksMCwwLDAtLjUtLjM0OSwxLjc4LDEuNzgsMCwwLDAtLjcxOC0uMTMsMi4xMjEsMi4xMjEsMCwwLDAtLjUuMDU0LDEuODA1LDEuODA1LDAsMCwwLS4zODIuMTM4LDEuMzE4LDEuMzE4LDAsMCwwLS4yNzQuMTksMS4yOCwxLjI4LDAsMCwwLS4xOS4ybC0yLjA0OC0uNDgyXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk01Ljk4NSwyMy4zNDNhNC40NSw0LjQ1LDAsMCwxLTEuMzExLS41OCwzLjIsMy4yLDAsMCwxLS44NDgtLjgyNCwzLjAxMiwzLjAxMiwwLDAsMS0uNDU4LTEuMDA4LDQuODc5LDQuODc5LDAsMCwxLS4xMy0xLjE0M3YtMS41NWEyLjMsMi4zLDAsMCwwLS4wNzYtLjYxOCwxLjE4NCwxLjE4NCwwLDAsMC0uMjIyLS40NjYuOTY5Ljk2OSwwLDAsMC0uMzgyLS4zMDZBMS4zMjQsMS4zMjQsMCwwLDAsMiwxNi43NDRWMTUuMDEyYTEuMDc0LDEuMDc0LDAsMCwwLC45MzctLjQsMS44NDEsMS44NDEsMCwwLDAsLjMtMS4xdi0xLjU1YTQuODc5LDQuODc5LDAsMCwxLC4xMy0xLjE0MywzLjAzNywzLjAzNywwLDAsMSwuNDU4LTEuMDA4QTMuMTcsMy4xNywwLDAsMSw0LjY3MSw5YTQuNDgyLDQuNDgyLDAsMCwxLDEuMzExLS41OGwuNDgsMS4zNDRhMS4yMjIsMS4yMjIsMCwwLDAtLjQ4OC4zMjgsMS43NDIsMS43NDIsMCwwLDAtLjMwNi41LDIuNTI0LDIuNTI0LDAsMCwwLS4xNi42MzQsNS44MjcsNS44MjcsMCwwLDAtLjA0Ni43NHYxLjU1QTIuODQ0LDIuODQ0LDAsMCwxLDUuMTI2LDE0LjlhMi4zNywyLjM3LDAsMCwxLTEuMDc2Ljk4MywyLjM1NiwyLjM1NiwwLDAsMSwxLjA3Ni45OTIsMi44MDgsMi44MDgsMCwwLDEsLjMzNiwxLjM3NHYxLjU1YTUuODI3LDUuODI3LDAsMCwwLC4wNDYuNzQsMi41ODYsMi41ODYsMCwwLDAsLjE2LjYzNCwxLjY4NCwxLjY4NCwwLDAsMCwuMzA2LjVBMS4yMjIsMS4yMjIsMCwwLDAsNi40NjIsMjJjMC0uMDA1LS40NzcsMS4zNDQtLjQ3NywxLjM0NFwiIHN0eWxlPVwiZmlsbDojOTk5XCIvPjxwYXRoIGQ9XCJNOC4yMTUsMTkuMzkzYTEuMjg5LDEuMjg5LDAsMCwxLC4xLS41MTIsMS4yMTIsMS4yMTIsMCwwLDEsLjI5LS40LDEuMzczLDEuMzczLDAsMCwxLC40NS0uMjc0LDEuNjM3LDEuNjM3LDAsMCwxLC41OC0uMSwxLjU1NSwxLjU1NSwwLDAsMSwuNTcyLjEsMS4yNjksMS4yNjksMCwwLDEsLjQ1LjI3NCwxLjA3NywxLjA3NywwLDAsMSwuMjkuNCwxLjI5NCwxLjI5NCwwLDAsMSwwLDEuMDI0LDEuMTUxLDEuMTUxLDAsMCwxLS4yOS40MTIsMS4zODgsMS4zODgsMCwwLDEtLjQ1LjI2OCwxLjYxMywxLjYxMywwLDAsMS0uNTcyLjEsMS41NzgsMS41NzgsMCwwLDEtLjU4LS4xLDEuNDA5LDEuNDA5LDAsMCwxLS40NS0uMjY4LDEuMjI5LDEuMjI5LDAsMCwxLS4zOS0uOTI0bTAtNi4wODhhMS4yODksMS4yODksMCwwLDEsLjEtLjUxMiwxLjIxMiwxLjIxMiwwLDAsMSwuMjktLjQsMS4zNzMsMS4zNzMsMCwwLDEsLjQ1LS4yNzQsMS42MzcsMS42MzcsMCwwLDEsLjU4LS4xLDEuNTU1LDEuNTU1LDAsMCwxLC41NzIuMSwxLjI2OSwxLjI2OSwwLDAsMSwuNDUuMjc0LDEuMDc3LDEuMDc3LDAsMCwxLC4yOS40LDEuMjk0LDEuMjk0LDAsMCwxLDAsMS4wMjQsMS4xNTEsMS4xNTEsMCwwLDEtLjI5LjQxMiwxLjM4OCwxLjM4OCwwLDAsMS0uNDUuMjY4LDEuNjEzLDEuNjEzLDAsMCwxLS41NzIuMSwxLjU3OCwxLjU3OCwwLDAsMS0uNTgtLjEsMS40MDksMS40MDksMCwwLDEtLjQ1LS4yNjgsMS4yMjksMS4yMjksMCwwLDEtLjM5LS45MjRcIiBzdHlsZT1cImZpbGw6Izk5OVwiLz48cGF0aCBkPVwiTTI0LjI0LDIwLjI5M2EzLjY0OCwzLjY0OCwwLDAsMS0uMTIyLjkyOSw0LjUzNCw0LjUzNCwwLDAsMS0uMzM2Ljg5MSw0LjcwNiw0LjcwNiwwLDAsMS0uNS44MDcsNC4wMDUsNC4wMDUsMCwwLDEtLjYxLjY2NGwtMS4zLS42MWMuMDgxLS4xNzMuMTY4LS4zNDkuMjYtLjUyNmE0Ljg0Niw0Ljg0NiwwLDAsMCwuMjY4LS41NTgsNC40NDMsNC40NDMsMCwwLDAsLjIwNi0uNjU2LDMuNDA2LDMuNDA2LDAsMCwwLC4wODQtLjhWMTguNjU2aDIuMDU5bC0uMDA4LDEuNjM2XCIgc3R5bGU9XCJmaWxsOiM5OTlcIi8+PHBhdGggZD1cIk0yNS41MzgsMjEuOTk0YTEuMjUxLDEuMjUxLDAsMCwwLC40ODgtLjMyOCwxLjcwNywxLjcwNywwLDAsMCwuMzA2LS41LDIuNTI1LDIuNTI1LDAsMCwwLC4xNi0uNjM0LDUuODI2LDUuODI2LDAsMCwwLC4wNDYtLjc0di0xLjU1YTIuODQ0LDIuODQ0LDAsMCwxLC4zMzYtMS4zODIsMi4zNjQsMi4zNjQsMCwwLDEsMS4wODQtLjk4MywyLjM2NCwyLjM2NCwwLDAsMS0xLjA4NC0uOTgzLDIuODQ0LDIuODQ0LDAsMCwxLS4zMzYtMS4zODJ2LTEuNTVhNS44MjcsNS44MjcsMCwwLDAtLjA0Ni0uNzQsMi41ODYsMi41ODYsMCwwLDAtLjE2LS42MzQsMS42ODQsMS42ODQsMCwwLDAtLjMwNi0uNSwxLjIyMiwxLjIyMiwwLDAsMC0uNDg4LS4zMjhsLjQ4LTEuMzM4QTQuNDUsNC40NSwwLDAsMSwyNy4zMjksOWEzLjA5MiwzLjA5MiwwLDAsMSwuODQ4LjgxNSwyLjg5MiwyLjg5MiwwLDAsMSwuNDUsMS4wMDgsNC42MDYsNC42MDYsMCwwLDEsLjEzOCwxLjE0M3YxLjU1YTIuNjU1LDIuNjU1LDAsMCwwLC4wNjguNjI2LDEuNDQ4LDEuNDQ4LDAsMCwwLC4yMjIuNDc0LDEuMDM3LDEuMDM3LDAsMCwwLC4zODIuMywxLjM3NiwxLjM3NiwwLDAsMCwuNTY0LjEwNnYxLjczMWExLjA3NywxLjA3NywwLDAsMC0uOTQ2LjQxMiwxLjgyOCwxLjgyOCwwLDAsMC0uMjksMS4wODR2MS41NWE0LjYwNiw0LjYwNiwwLDAsMS0uMTM4LDEuMTQzLDIuOTE1LDIuOTE1LDAsMCwxLS40NSwxLjAwOCwzLjE1NywzLjE1NywwLDAsMS0uODQ4LjgyNCw0LjQ4Miw0LjQ4MiwwLDAsMS0xLjMxMS41OGwtLjQ4LTEuMzUyXCIgc3R5bGU9XCJmaWxsOiM5OTlcIi8+YCxcbiAgXCJKdWxpYVwiOiBgPHBhdGggZD1cIk03LjQ0OCwyMS45ODNWMTMuNzc1bC0yLjQzMi42Njl2OC43MjlhMi42NiwyLjY2LDAsMCwxLS4xMDYuOTI5LjMzNi4zMzYsMCwwLDEtLjMwOC4yMzkuNDA1LjQwNSwwLDAsMS0uMjEyLS4wNzQsMS4yODIsMS4yODIsMCwwLDEtLjI4Ny0uMywyLjgxMywyLjgxMywwLDAsMC0uMzc3LS40MDkuODc0Ljg3NCwwLDAsMC0uNjExLS4yMDcsMS4yMiwxLjIyLDAsMCwwLS44MTIuMjU1Ljc4OS43ODksMCwwLDAtLjMuNjI3QS45MDcuOTA3LDAsMCwwLDIuNTQyLDI1YTMuMTE1LDMuMTE1LDAsMCwwLDEuNTYxLjMxOSw3LjA2NSw3LjA2NSwwLDAsMCwxLjM3LS4xMjIsMi4zNjEsMi4zNjEsMCwwLDAsMS4wNTctLjQ4MywyLjI5MiwyLjI5MiwwLDAsMCwuNjgtMS4wMTQsNS4wOTQsNS4wOTQsMCwwLDAsLjIzOS0xLjcxNVpcIiBzdHlsZT1cImZpbGw6IzI1MjUyNVwiLz48cGF0aCBkPVwiTTEwLjgyNSwxNC4wMDhIOC40djUuNjE4YTIuMjQxLDIuMjQxLDAsMCwwLC4yMTguOTc3LDIuNDg5LDIuNDg5LDAsMCwwLC42LjgsMi45LDIuOSwwLDAsMCwuODkyLjUzNiwzLjA0NSwzLjA0NSwwLDAsMCwxLjEuMiwyLjU1LDIuNTUsMCwwLDAsMS4wNTEtLjI0NCw0LjM0Nyw0LjM0NywwLDAsMCwxLjAxOS0uNjQ4di43NDNIMTUuNzFWMTQuMDA4SDEzLjI4OXY1Ljc1NmEyLjc2NCwyLjc2NCwwLDAsMS0uNjQ4LjcwNiwxLjEzOSwxLjEzOSwwLDAsMS0uNjQ4LjI4MSwxLjE1NSwxLjE1NSwwLDAsMS0uNDU3LS4wOSwxLjI2MywxLjI2MywwLDAsMS0uMzcyLS4yMzksMS4wNiwxLjA2LDAsMCwxLS4yNS0uMzU2LDEuMDkxLDEuMDkxLDAsMCwxLS4wOS0uNDQxWlwiIHN0eWxlPVwiZmlsbDojMjUyNTI1XCIvPjxwYXRoIGQ9XCJNMTkuMDc0LDIxLjk4M1YxMC4xMzJsLTIuNDExLjY2OVYyMS45ODNaXCIgc3R5bGU9XCJmaWxsOiMyNTI1MjVcIi8+PHBhdGggZD1cIk0yMC4wMzgsMTQuNDQ0djcuNTRoMi40MjFWMTMuNzc1WlwiIHN0eWxlPVwiZmlsbDojMjUyNTI1XCIvPjxwYXRoIGQ9XCJNMjcuNTY4LDE3Ljg2M3YyLjNxLS4zNzIuMjc2LS42NzQuNDU3YTEuMTY1LDEuMTY1LDAsMCwxLS42LjE4MS40NjguNDY4LDAsMCwxLS4yNzYtLjA5LDEsMSwwLDAsMS0uMjM0LS4yMzksMS4xMzgsMS4xMzgsMCwwLDEtLjE2NS0uMzU2LDEuNTc2LDEuNTc2LDAsMCwxLS4wNTgtLjQzLjk2OC45NjgsMCwwLDEsLjE4MS0uNTUyLDIuMzA2LDIuMzA2LDAsMCwxLC40NzMtLjUsNC41NzIsNC41NzIsMCwwLDEsLjY0OC0uNDMsNy42MTIsNy42MTIsMCwwLDEsLjcwNi0uMzQ1Wk0zMCwyMS45ODNWMTZhMi4wODMsMi4wODMsMCwwLDAtLjE5MS0uOSwxLjc3OSwxLjc3OSwwLDAsMC0uNTk1LS42OSwzLjAwNiwzLjAwNiwwLDAsMC0xLjAyNS0uNDQxLDYuMjI1LDYuMjI1LDAsMCwwLTEuNDgxLS4xNTQsNS43MzUsNS43MzUsMCwwLDAtMS4zMjcuMTQ5LDQuNiw0LjYsMCwwLDAtMS4xLjQsMi4zNzMsMi4zNzMsMCwwLDAtLjc1OS42MTEsMS4yMTYsMS4yMTYsMCwwLDAtLjI4MS43Ny45NTguOTU4LDAsMCwwLC4zMTkuNzM4LDEuMTc4LDEuMTc4LDAsMCwwLC44MjguMjkyLDEuMzY0LDEuMzY0LDAsMCwwLC41NDctLjEuOC44LDAsMCwwLC4zMzUtLjI1NS45ODYuOTg2LDAsMCwwLC4xNjUtLjM3MiwxLjk3OCwxLjk3OCwwLDAsMCwuMDQ4LS40MzUsMS4wMzEsMS4wMzEsMCwwLDEsLjIyMy0uNjY5Ljk3NS45NzUsMCwwLDEsLjgtLjI3NiwxLjAwOCwxLjAwOCwwLDAsMSwuNzgxLjMxOSwxLjU5NCwxLjU5NCwwLDAsMSwuMjkyLDEuMDgzdi43ODZsLS4yNjUuMDY0cS0uNDg4LjE0OS0uOTg4LjMxM3QtLjk2MS4zNjFhNy44ODQsNy44ODQsMCwwLDAtLjg2NS40MywzLjUxMSwzLjUxMSwwLDAsMC0uNzA2LjUzMSwyLjMxOSwyLjMxOSwwLDAsMC0uNDc4LjY2OSwxLjkxOCwxLjkxOCwwLDAsMC0uMTc1LjgyOCwyLjAzNCwyLjAzNCwwLDAsMCwuMTY1LjgyMywxLjg3NiwxLjg3NiwwLDAsMCwuNDczLjY1MywyLjI1NSwyLjI1NSwwLDAsMCwuNzQ5LjQzNSwyLjkwNywyLjkwNywwLDAsMCwuOTkzLjE1OSwzLjY3OSwzLjY3OSwwLDAsMCwuNy0uMDU4LDIuNTA5LDIuNTA5LDAsMCwwLC41MzYtLjE2NSwyLjIwOSwyLjIwOSwwLDAsMCwuNDMtLjI1cS4xOTEtLjE0My4zOTMtLjMxM3YuNjM3WlwiIHN0eWxlPVwiZmlsbDojMjUyNTI1XCIvPjxjaXJjbGUgY3g9XCI2LjIwNFwiIGN5PVwiMTEuNjcyXCIgcj1cIjEuNVwiIHN0eWxlPVwiZmlsbDojNjY4MmRmXCIvPjxwYXRoIGQ9XCJNNi4yLDEzLjI4N2ExLjYxNSwxLjYxNSwwLDEsMSwxLjYxNS0xLjYxNUExLjYxNywxLjYxNywwLDAsMSw2LjIsMTMuMjg3Wm0wLTNhMS4zODUsMS4zODUsMCwxLDAsMS4zODUsMS4zODVBMS4zODYsMS4zODYsMCwwLDAsNi4yLDEwLjI4N1pcIiBzdHlsZT1cImZpbGw6IzQwNjNkOFwiLz48Y2lyY2xlIGN4PVwiMjEuNDE3XCIgY3k9XCIxMS42NzJcIiByPVwiMS41XCIgc3R5bGU9XCJmaWxsOiNkNTYzNWNcIi8+PHBhdGggZD1cIk0yMS40MTcsMTMuMjg3YTEuNjE1LDEuNjE1LDAsMSwxLDEuNjE1LTEuNjE1QTEuNjE3LDEuNjE3LDAsMCwxLDIxLjQxNywxMy4yODdabTAtM0ExLjM4NSwxLjM4NSwwLDEsMCwyMi44LDExLjY3MiwxLjM4NiwxLjM4NiwwLDAsMCwyMS40MTcsMTAuMjg3WlwiIHN0eWxlPVwiZmlsbDojY2IzYzMzXCIvPjxjaXJjbGUgY3g9XCIyMy4zODVcIiBjeT1cIjguMjk3XCIgcj1cIjEuNVwiIHN0eWxlPVwiZmlsbDojNjBhZDUxXCIvPjxwYXRoIGQ9XCJNMjMuMzg1LDkuOTEyQTEuNjE1LDEuNjE1LDAsMSwxLDI1LDguMywxLjYxNywxLjYxNywwLDAsMSwyMy4zODUsOS45MTJabTAtM0ExLjM4NSwxLjM4NSwwLDEsMCwyNC43Nyw4LjMsMS4zODYsMS4zODYsMCwwLDAsMjMuMzg1LDYuOTEyWlwiIHN0eWxlPVwiZmlsbDojMzg5ODI2XCIvPjxjaXJjbGUgY3g9XCIyNS4zNTRcIiBjeT1cIjExLjY3MlwiIHI9XCIxLjVcIiBzdHlsZT1cImZpbGw6I2FhNzljMVwiLz48cGF0aCBkPVwiTTI1LjM1NCwxMy4yODdhMS42MTUsMS42MTUsMCwxLDEsMS42MTUtMS42MTVBMS42MTcsMS42MTcsMCwwLDEsMjUuMzU0LDEzLjI4N1ptMC0zYTEuMzg1LDEuMzg1LDAsMSwwLDEuMzg1LDEuMzg1QTEuMzg2LDEuMzg2LDAsMCwwLDI1LjM1NCwxMC4yODdaXCIgc3R5bGU9XCJmaWxsOiM5NTU4YjJcIi8+YCxcbiAgXCJLb3RsaW5cIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjMxMS4zMzZcIiB5MT1cIjE0NTIuMDY0XCIgeDI9XCIyODMuMzQyXCIgeTI9XCIxNDgwLjA1OFwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKC0yODEuNCAtMTQ1MClcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNlNDQ4NTdcIi8+PHN0b3Agb2Zmc2V0PVwiMC40N1wiIHN0b3AtY29sb3I9XCIjOWQ0YjlkXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzZkNWZhYVwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2tvdGxpbjwvdGl0bGU+PHBhdGggZD1cIk0zMCwzMEgyVjJIMzBMMTYsMTZaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+YCxcbiAgXCJLdXN0b1wiOiBgPHJlY3QgeD1cIjAuNTVcIiB5PVwiMjIuMzM5XCIgd2lkdGg9XCIxNS40MzNcIiBoZWlnaHQ9XCIyLjc5NlwiIHJ4PVwiMC40MzlcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTE0LjM2MyAxMi43OTcpIHJvdGF0ZSgtNDQuOTk5KVwiIHN0eWxlPVwiZmlsbDojYjhkNDMyXCIvPjxyZWN0IHg9XCIxLjM3MlwiIHk9XCIxNi4zODJcIiB3aWR0aD1cIjkuODU5XCIgaGVpZ2h0PVwiMi43OTZcIiByeD1cIjAuNDM5XCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0xMC43MjcgOS42NjMpIHJvdGF0ZSgtNDQuOTk5KVwiIHN0eWxlPVwiZmlsbDojYjhkNDMyXCIvPjxyZWN0IHg9XCI5LjIzMlwiIHk9XCIyNC4zMDFcIiB3aWR0aD1cIjkuODU5XCIgaGVpZ2h0PVwiMi43OTZcIiByeD1cIjAuNDM5XCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0xNC4wMjQgMTcuNTQxKSByb3RhdGUoLTQ0Ljk5OSlcIiBzdHlsZT1cImZpbGw6I2I4ZDQzMlwiLz48cG9seWdvbiBwb2ludHM9XCIzMCAyIDIgMiAzMCAyOS45OTkgMzAgMlwiIHN0eWxlPVwiZmlsbDojMDA3OGQ0XCIvPjxwb2x5Z29uIHBvaW50cz1cIjEwLjI4MiAxMC4yODIgMjEuNzE4IDIxLjcxOCAzMCAxMy40MzYgMzAgMiAxOC41NjQgMiAxMC4yODIgMTAuMjgyXCIgc3R5bGU9XCJmaWxsOiM1OWI0ZDlcIi8+PHBvbHlnb24gcG9pbnRzPVwiMzAgMjkuOTk5IDMwIDIgMTYgMTYgMzAgMjkuOTk5XCIgc3R5bGU9XCJmaWxsOiNmZmY7b3BhY2l0eTowLjIwMDAwMDAwMjk4MDIzMjI0O2lzb2xhdGlvbjppc29sYXRlXCIvPjxyZWN0IHg9XCIxNi4yMjZcIiB5PVwiOS4wMDFcIiB3aWR0aD1cIjIuNzk2XCIgaGVpZ2h0PVwiMi43OTZcIiByeD1cIjAuNjIyXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0yLjE5MiAxNS41MDcpIHJvdGF0ZSgtNDQuOTk5KVwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxyZWN0IHg9XCIyMC4xOFwiIHk9XCI1LjA0OFwiIHdpZHRoPVwiMi43OTZcIiBoZWlnaHQ9XCIyLjc5NlwiIHJ4PVwiMC42MjJcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMS43NjIgMTcuMTQ2KSByb3RhdGUoLTQ0Ljk5OSlcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cmVjdCB4PVwiMjAuMThcIiB5PVwiMTIuOTU1XCIgd2lkdGg9XCIyLjc5NlwiIGhlaWdodD1cIjIuNzk2XCIgcng9XCIwLjYyMlwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMy44MjkgMTkuNDYxKSByb3RhdGUoLTQ0Ljk5OSlcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cmVjdCB4PVwiMjQuMTMzXCIgeT1cIjkuMDAyXCIgd2lkdGg9XCIyLjc5NlwiIGhlaWdodD1cIjIuNzk2XCIgcng9XCIwLjYyMlwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjEyNCAyMS4wOTkpIHJvdGF0ZSgtNDQuOTk5KVwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG4gIFwiTGFUZVhcIjogYDxwYXRoIGQ9XCJNMTEuMzMzLDEzLjEyMmMtLjEyOC0xLjU2Mi0uMjQxLTIuNzU2LTIuMjg3LTIuNzU2SDcuOTF2OC40aDIuMTQ1di42MTFsLTMuMDgzLS4wMjktMy4wODIuMDI5di0uNjExSDYuMDM0di04LjRINC44ODRjLTIuMDQ2LDAtMi4xNTksMS4yMDgtMi4yODcsMi43NTZIMmwuMjg0LTMuMzY3aDkuMzYybC4yODQsMy4zNjdoLS42WlwiIHN0eWxlPVwiZmlsbDojY2ZjZmNmXCIvPjxwYXRoIGQ9XCJNMTkuMjg5LDIyLjUzSDEwLjQxVjIxLjkyaDEuNTA2VjEzLjQ2N0gxMC40MXYtLjYxMWg4LjYzN2wuNDEyLDMuMzY3aC0uNmMtLjIxMy0xLjgzMy0uNjgyLTIuNzU2LTIuODU1LTIuNzU2SDEzLjc5MVYxNy4yaC44MzhjMS4zNjQsMCwxLjUwNS0uNiwxLjUwNS0xLjY2MmguNnYzLjkzNWgtLjZjMC0xLjA4LS4xNDItMS42NjItMS41MDUtMS42NjJoLS44Mzh2NC4xMDZoMi4yMTZjMi40NzIsMCwzLTEuMTA4LDMuMy0zLjIyNWguNlpcIiBzdHlsZT1cImZpbGw6I2NmY2ZjZlwiLz48cGF0aCBkPVwiTTI3LjcyNywxOS4xODZjLS41NCwwLTEuOTYsMC0yLjQxNS4wMjlWMTguNmgxLjE3OWwtMi41NTctMy41NTItMi41MjksMy4zODFBNC4xLDQuMSwwLDAsMCwyMi43LDE4LjZ2LjYxMWMtLjM1NS0uMDI5LTEuNTc2LS4wMjktMi4wMTctLjAyOS0uNCwwLTEuNTQ4LDAtMS44NzUuMDI5VjE4LjZoLjM4M2E3LjQ1OSw3LjQ1OSwwLDAsMCwuODI0LS4wNDNjLjUtLjA0My41NC0uMDg1LjY2Ny0uMjU2TDIzLjUzNiwxNC41bC0zLjE1My00LjQxOEgxOVY5LjQ3Yy4zODQuMDI4LDEuNzkuMDI4LDIuMjczLjAyOC41ODIsMCwxLjkxOCwwLDIuNDI5LS4wMjh2LjYxMUgyMi41MjhsMi4xMTcsMi45NTUsMi4wNzQtMi43ODRhNC4xLDQuMSwwLDAsMC0xLjI5My0uMTdWOS40N2MuMzU2LjAyOCwxLjU5MS4wMjgsMi4wMzIuMDI4LjQsMCwxLjUzNCwwLDEuODYxLS4wMjh2LjYxMWgtLjM2OWE1LjI2NCw1LjI2NCwwLDAsMC0uODM4LjA0M2MtLjQ2OS4wNDMtLjUyNi4wNzEtLjY2Ny4yNTZsLTIuNCwzLjIxTDI4LjYzNiwxOC42SDMwdi42MTFDMjkuNjQ1LDE5LjE4NiwyOC4xODIsMTkuMTg2LDI3LjcyNywxOS4xODZaXCIgc3R5bGU9XCJmaWxsOiNjZmNmY2ZcIi8+YCxcbiAgXCJMZXNzXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCItMy42MDlcIiB5MT1cIi00OTIuNjg1XCIgeDI9XCItMy42MDlcIiB5Mj1cIi00ODAuMjcxXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoMTkuNzEyIDUwMi44OTEpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMC4xNVwiIHN0b3AtY29sb3I9XCIjMmE0Zjg0XCIvPjxzdG9wIG9mZnNldD1cIjAuMzg4XCIgc3RvcC1jb2xvcj1cIiMyOTRlODJcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMTcyZTRlXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfbGVzczwvdGl0bGU+PHBhdGggZD1cIk0yOC41NTksMjAuMjI2YTIuNCwyLjQsMCwwLDEtMi4zOTQsMi4zOTRINi4wNGEyLjQsMi40LDAsMCwxLTIuMzk0LTIuMzk0VjEyLjZBMi40LDIuNCwwLDAsMSw2LjA0LDEwLjIwNkgyNi4xNjVBMi40LDIuNCwwLDAsMSwyOC41NTksMTIuNlpcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTI0LjM0OSwxNi4yNWExLjk3MiwxLjk3MiwwLDAsMSwxLjU3OCwxLjg5MSwxLjY5LDEuNjksMCwwLDEtLjY1MywxLjQsMi45MzQsMi45MzQsMCwwLDEtMS44NjIuNTU5LDQuNTU4LDQuNTU4LDAsMCwxLTIuMjQxLS42MTgsMS45ODYsMS45ODYsMCwwLDEsLjE2LS42NjksMS44MywxLjgzLDAsMCwxLC4zNS0uNTc2LDMuNywzLjcsMCwwLDAsMS42NDkuNDkzLjk2NS45NjUsMCwwLDAsLjUxLS4xMTIuMzM5LjMzOSwwLDAsMCwuMTc4LS4zcTAtLjM1My0uNTQ2LS41MjlsLS42NTMtLjI0N3EtMS40ODItLjU0LTEuNDgyLTEuNzYyYTEuNzUzLDEuNzUzLDAsMCwxLC42MjMtMS40MTYsMi41ODcsMi41ODcsMCwwLDEsMS42NzgtLjY0OCw1LjA5NCw1LjA5NCwwLDAsMSwxLjE1LjE0Nyw0LjU1NSw0LjU1NSwwLDAsMSwxLjAzMi40NzIsMS42NjgsMS42NjgsMCwwLDEtLjEzLjcyMiwxLjIyLDEuMjIsMCwwLDEtLjM4LjU1OCw0LjI2MSw0LjI2MSwwLDAsMC0xLjY2LS40NDYuNTQ0LjU0NCwwLDAsMC0uMzYyLjEwNi4zMzguMzM4LDAsMCwwLS4xMjQuMjdxMCwuMjgyLjQ1MS40NDZsLjczNi4yNTlaXCIgc3R5bGU9XCJmaWxsOiNmNmY2ZjZcIi8+PHBhdGggZD1cIk0xOS4xLDE2LjI1YTEuOTcyLDEuOTcyLDAsMCwxLDEuNTc3LDEuODkxLDEuNjkxLDEuNjkxLDAsMCwxLS42NTIsMS40LDIuOTM3LDIuOTM3LDAsMCwxLTEuODYyLjU1OSw0LjU2LDQuNTYsMCwwLDEtMi4yNDEtLjYxOCwxLjk4MSwxLjk4MSwwLDAsMSwuMTYtLjY2OSwxLjgyMSwxLjgyMSwwLDAsMSwuMzUtLjU3NiwzLjcsMy43LDAsMCwwLDEuNjQ5LjQ5My45NjMuOTYzLDAsMCwwLC41MS0uMTEyLjM0LjM0LDAsMCwwLC4xNzgtLjNxMC0uMzUzLS41NDYtLjUyOWwtLjY1My0uMjQ3cS0xLjQ4Mi0uNTQtMS40ODItMS43NjJhMS43NTIsMS43NTIsMCwwLDEsLjYyMy0xLjQxNiwyLjU4NSwyLjU4NSwwLDAsMSwxLjY3Ny0uNjQ4LDUuMDg4LDUuMDg4LDAsMCwxLDEuMTUuMTQ3LDQuNTUyLDQuNTUyLDAsMCwxLDEuMDMyLjQ3MiwxLjY2OCwxLjY2OCwwLDAsMS0uMTMuNzIyLDEuMjIsMS4yMiwwLDAsMS0uMzguNTU4LDQuMjYzLDQuMjYzLDAsMCwwLTEuNjYxLS40NDYuNTQzLjU0MywwLDAsMC0uMzYyLjEwNi4zMzkuMzM5LDAsMCwwLS4xMjQuMjdxMCwuMjgyLjQ1MS40NDZsLjczNi4yNTlaXCIgc3R5bGU9XCJmaWxsOiNmNmY2ZjZcIi8+PHBhdGggZD1cIk0xNS4yNjQsMTYuMzMzYTIuODIyLDIuODIyLDAsMCwwLS4xNzItMSwyLjIzOSwyLjIzOSwwLDAsMC0uNDkyLS43ODcsMi4yOCwyLjI4LDAsMCwwLS43NzctLjUxNywyLjczNywyLjczNywwLDAsMC0xLjAyNi0uMzE0LDIuOCwyLjgsMCwwLDAtMS4xOC4zNjEsMi4yNTYsMi4yNTYsMCwwLDAtLjgzLjY0NiwyLjc2NSwyLjc2NSwwLDAsMC0uNDg3Ljk2OSw0LjQsNC40LDAsMCwwLS4xNiwxLjIxNiw1LjY4MSw1LjY4MSwwLDAsMCwuMTMsMS4yNTcsMi42MjgsMi42MjgsMCwwLDAsLjQ0NSwxLDIuMTA3LDIuMTA3LDAsMCwwLC44MTguNjU3LDIuOTM1LDIuOTM1LDAsMCwwLDEuMjUxLjI3NywzLjk1MiwzLjk1MiwwLDAsMCwyLjMyNC0uNzEyLDEuODY1LDEuODY1LDAsMCwwLS40ODQtMS4wODEsNi4xODgsNi4xODgsMCwwLDEtLjg1Ny4yNjIsMy4yMDgsMy4yMDgsMCwwLDEtLjY1Ni4wNzksMS4wMTcsMS4wMTcsMCwwLDEtLjgxNS0uMjksMS4xODcsMS4xODcsMCwwLDEtLjI3MS0uNzdoMy4wODNBNC40NDcsNC40NDcsMCwwLDAsMTUuMjY0LDE2LjMzM1ptLTMuMjQ4LjA4MWEyLjQzMywyLjQzMywwLDAsMSwuMjE4LTEsLjYzMi42MzIsMCwwLDEsLjU1OS0uMjY0LjY2LjY2LDAsMCwxLC41ODIuMjgyLDEuNzQ5LDEuNzQ5LDAsMCwxLC4xOTQuODU2di4xM0gxMi4wMTZaXCIgc3R5bGU9XCJmaWxsOiNmNmY2ZjZcIi8+PHBhdGggZD1cIk0yOS4xOCwxNy4yYTEuNjA1LDEuNjA1LDAsMCwwLS41MywxLjI2NXYyLjA1MWExLjgxLDEuODEsMCwwLDEtLjY4MywxLjU1NywyLjgsMi44LDAsMCwxLTEuNjU0LjU0OWwtLjM3MywwVjIxLjU5NGExLjI0MSwxLjI0MSwwLDAsMCwuNTk1LS4zMzQsMS4zNjksMS4zNjksMCwwLDAsLjQxOS0xLjA0N1YxOC41NTZhMi41NDUsMi41NDUsMCwwLDEsLjI1Ny0xLjMyMywyLjUsMi41LDAsMCwxLDEuMi0uODM4LDIuNTI4LDIuNTI4LDAsMCwxLTEuMzI0LTEuMTc5LDIuOTU2LDIuOTU2LDAsMCwxLS4xMzUtMS4xNjVWMTIuNTMzYTEuNDU4LDEuNDU4LDAsMCwwLS4zNjYtMS4wNTQsMS4xNTIsMS4xNTIsMCwwLDAtLjY0OC0uMzE0di0uOTZjLjQ0NSwwLC42NjksMCwuOTI4LDBhMS42NzYsMS42NzYsMCwwLDEsMS4wMjMuNDQyLDIsMiwwLDAsMSwuNjczLDEuMDA5LDIuMzMsMi4zMywwLDAsMSwuMDg2Ljd2MS43NTdhMS44NDYsMS44NDYsMCwwLDAsLjUsMS4zODMsMi4xMTMsMi4xMTMsMCwwLDAsLjg1NC40Nzl2Ljc5NGExLjk0MywxLjk0MywwLDAsMC0uODIuNDI2WlwiIHN0eWxlPVwiZmlsbDojZjZmNmY2O3N0cm9rZTojNDA0MDQwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjI1cHhcIi8+PHBhdGggZD1cIk01LjU5NCwxMC4yMDZINS4yNmExLjY3MywxLjY3MywwLDAsMC0xLjAyMy40NDIsMS43MSwxLjcxLDAsMCwwLS42NzMsMS4wMDksMy41MzEsMy41MzEsMCwwLDAtLjAzOC43djEuNzU3QTEuODY3LDEuODY3LDAsMCwxLDIuOTgxLDE1LjUsMi44NDcsMi44NDcsMCwwLDEsMiwxNS45Nzd2Ljc5M2EyLjU1MiwyLjU1MiwwLDAsMSwuOTQ3LjQyNiwxLjYzOCwxLjYzOCwwLDAsMSwuNTc3LDEuMjY1djIuMDUxQTEuNzgxLDEuNzgxLDAsMCwwLDQuMTYsMjIuMDdhMi44LDIuOCwwLDAsMCwxLjY1NC41NWwuNDIxLDBWMjEuNTk0YTEuNDcsMS40NywwLDAsMS0uNjQzLS4zMzQsMS4zNTUsMS4zNTUsMCwwLDEtLjM3MS0xLjA0N1YxOC41NTdhMi41MTYsMi41MTYsMCwwLDAtLjMwNS0xLjMyMywyLjUsMi41LDAsMCwwLTEuMi0uODM4LDIuNTI5LDIuNTI5LDAsMCwwLDEuMzI0LTEuMTc4LDIuODU3LDIuODU3LDAsMCwwLC4xODMtMS4xNjVWMTIuNTM0QTEuNDYyLDEuNDYyLDAsMCwxLDUuNTQsMTEuNDhhMS4zMTMsMS4zMTMsMCwwLDEsLjU3NS0uMjcxbC40MjgsMFYxMC4yMDZINS41OTRaXCIgc3R5bGU9XCJmaWxsOiNmNmY2ZjY7c3Ryb2tlOiM0MDQwNDA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjVweFwiLz48cGF0aCBkPVwiTTkuNTM3LDE4LjUyOWgtLjMyYy0uMzQ4LDAtLjQ3OS0uMTgzLS40NzktLjU1MVYxMS4yMTlhMS4yNTYsMS4yNTYsMCwwLDAtLjI2OC0uODU2Yy0uMTUtLjE2NC0uNDExLS4xNjItLjc4My0uMTYySDYuOTY0bC0uMDg1LDB2OC4xMDZhMS44NzUsMS44NzUsMCwwLDAsLjM1MiwxLjI0LDEuNDQxLDEuNDQxLDAsMCwwLDEuMTQ1LjM5Myw3Ljg1OSw3Ljg1OSwwLDAsMCwxLjI2OS0uMTE4LDIuMjMsMi4yMywwLDAsMCwuMDM2LS41MDksMi4yNzgsMi4yNzgsMCwwLDAtLjE0Mi0uNzgyWlwiIHN0eWxlPVwiZmlsbDojZjZmNmY2XCIvPmAsXG4gIFwiTGlxdWlkXCI6IGA8cGF0aCBkPVwiTTI5Ljk4OCwyMi4zNzJsLS43NDguMDQ4YTUuMjA5LDUuMjA5LDAsMCwxLTIuOTktLjY3MSw3LjgsNy44LDAsMCwwLTcuOCwwLDUuMjc1LDUuMjc1LDAsMCwxLTUuMy4wMUE3LjI2Miw3LjI2MiwwLDAsMCw5LjI2MywyMC43YTcuMjI5LDcuMjI5LDAsMCwwLTMuOTQsMS4wNiw0Ljc1MSw0Ljc1MSwwLDAsMS0yLjQ3LjdsLS44MzgsMGMwLC44ODktLjAwOSwxLjczOS0uMDE1LDIuNTE1bC44NjEsMGE3LjIzNyw3LjIzNywwLDAsMCwzLjc1LTEuMDUyLDQuNzYzLDQuNzYzLDAsMCwxLDIuNjU5LS43LDQuODM1LDQuODM1LDAsMCwxLDIuNjM0LjcxOCw3Ljc5NCw3Ljc5NCwwLDAsMCw3LjgsMCw1LjI4Nyw1LjI4NywwLDAsMSw1LjMxOSwwLDcuNzA5LDcuNzA5LDAsMCwwLDQuNC45ODlMMzAsMjQuODg4QzI5Ljk5NSwyNC4xLDI5Ljk5MSwyMy4yNDksMjkuOTg4LDIyLjM3MlpcIiBzdHlsZT1cImZpbGw6IzAwNDk5OVwiLz48cGF0aCBkPVwiTTI5Ljk4MywxNS41ODFsLS43NDMuMDQ3YTUuMjI2LDUuMjI2LDAsMCwxLTIuOTktLjY3MSw3LjgsNy44LDAsMCwwLTcuOCwwLDUuMjc4LDUuMjc4LDAsMCwxLTUuMy4wMUE3LjMxMiw3LjMxMiwwLDAsMCw5LjI2MywxMy45MWE3LjMsNy4zLDAsMCwwLTMuOTQxLDEuMDYsNC43NDIsNC43NDIsMCwwLDEtMi40NjkuN2wtLjgyOCwwYzAsLjg0OSwwLDEuNjkzLDAsMi41MTVsLjg0LDBhNy4yMzcsNy4yMzcsMCwwLDAsMy43NS0xLjA1Miw0LjcsNC43LDAsMCwxLDIuNjU5LS43LDQuOCw0LjgsMCwwLDEsMi42MzQuNzE4LDcuNzk0LDcuNzk0LDAsMCwwLDcuOCwwLDUuMjg3LDUuMjg3LDAsMCwxLDUuMzE5LDAsNy43MDksNy43MDksMCwwLDAsNC40Ljk4OWwuNTY4LS4wMzdDMjkuOTgzLDE3LjI2OSwyOS45ODMsMTYuNDI0LDI5Ljk4MywxNS41ODFaXCIgc3R5bGU9XCJmaWxsOiMwMDQ5OTlcIi8+PHBhdGggZD1cIk0yOS4yNCw5LjEzN2E1LjI1NCw1LjI1NCwwLDAsMS0yLjk5LS42NzEsNy44LDcuOCwwLDAsMC03LjgsMCw1LjI3NSw1LjI3NSwwLDAsMS01LjMuMDA5QTcuMTYsNy4xNiwwLDAsMCw5LjI2Myw3LjQyYTcuMTU5LDcuMTU5LDAsMCwwLTMuOTQsMS4wNTksNC43MzgsNC43MzgsMCwwLDEtMi40NjkuN2wtLjgzNCwwYzAsLjgyLDAsMS42NjQsMCwyLjUxN2wuODM2LDBhNy4yMzcsNy4yMzcsMCwwLDAsMy43NS0xLjA1Miw0LjczOCw0LjczOCwwLDAsMSwyLjY1OS0uNzA2LDQuODE0LDQuODE0LDAsMCwxLDIuNjM0LjcxOSw3Ljc5MSw3Ljc5MSwwLDAsMCw3LjgsMCw1LjI5Myw1LjI5MywwLDAsMSw1LjMxOSwwLDcuNzMyLDcuNzMyLDAsMCwwLDQuNC45ODhsLjU2OC0uMDM3YzAtLjg1OSwwLTEuNy4wMDctMi41MTZaXCIgc3R5bGU9XCJmaWxsOiMwMDQ5OTlcIi8+YCxcbiAgXCJMaXNwXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCIxOTI1Ljc4NVwiIHkxPVwiLTEzODMuMDc1XCIgeDI9XCIyMzAyLjM1MVwiIHkyPVwiLTE4NjguNTU3XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMC4wNDgsIDAsIDAsIC0wLjA0NSwgLTgyLjUzOSwgLTU0LjY1KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzgzODFjNVwiLz48c3RvcCBvZmZzZXQ9XCIwLjU2NlwiIHN0b3AtY29sb3I9XCIjN2U1NWIzXCIgc3RvcC1vcGFjaXR5PVwiMC45OTZcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjYTUyZWNiXCIgc3RvcC1vcGFjaXR5PVwiMC45OTJcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCIyMjE0LjE4N1wiIHkxPVwiLTE3NTAuMjI1XCIgeDI9XCIxOTMwLjk3NFwiIHkyPVwiLTE0MDguMzQyXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMC4wNTQsIDAsIDAsIC0wLjA1NCwgLTk1LjE4OCwgLTY4LjQ4NylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM0MTFmNWRcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjNWIyYTg1XCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfZW1hY3M8L3RpdGxlPjxwYXRoIGQ9XCJNMjkuMzYzLDE2QTEzLjM2NCwxMy4zNjQsMCwxLDEsMTYsMi41LDEzLjQzMiwxMy40MzIsMCwwLDEsMjkuMzYzLDE2WlwiIHN0eWxlPVwic3Ryb2tlLXdpZHRoOjAuNzVweDtmaWxsOnVybCgjYSk7c3Ryb2tlOnVybCgjYilcIi8+PHBhdGggZD1cIk0xMS40MDYsMjUuNDgzYTE4LjE1NywxOC4xNTcsMCwwLDAsMi41ODctLjA0OCw0MS43MjgsNDEuNzI4LDAsMCwwLDQuNS0uNjM5LDMwLjY3MSwzMC42NzEsMCwwLDAsMy4xMzItLjgzOWMxLjE0Mi0uNDIxLDEuNzY0LS43NzgsMi4wNDMtMS4yODRhLjYyLjYyLDAsMCwwLS40NDEtLjY5MmMtMS4zNDctLjU2NS0yLjkwOC0uNDYzLTYtLjUyOC0zLjQyNy0uMTE4LTQuNTY3LS42OTEtNS4xNzQtMS4xNTMtLjU4Mi0uNDY5LS4yOS0xLjc2NSwyLjIwNi0yLjkwN2E1NC4yNjYsNTQuMjY2LDAsMCwxLDYuMTg0LTEuNzNjLTEuNjU5LS44Mi00Ljc1My0yLjI2Mi01LjM4OS0yLjU3My0uNTU4LS4yNzMtMS40NTEtLjY4NC0xLjY0NC0xLjE4Mi0uMjE5LS40NzguNTE4LS44ODkuOTMtMS4wMDdhMjAuMywyMC4zLDAsMCwxLDQuOS0uNjQ3LDQuMzA4LDQuMzA4LDAsMCwwLDEtLjA2OUExLjc2NywxLjc2NywwLDAsMCwyMS44NzksNy45YTIuNzc1LDIuNzc1LDAsMCwwLTMuMjg2LTEuODFDMTcuMjIsNi4zMzgsMTMuOTA4LDcuMywxMy45MDgsNy4zYzQuMDkzLS4wMzUsNC43NzkuMDMzLDUuMDg1LjQ2MS4xODEuMjUzLS4wODIuNi0xLjE3NC43NzctMS4xODkuMTk0LTMuNjU5LjQyOC0zLjY1OS40MjgtMi4zNy4xNDEtNC4wNC4xNS00LjU0LDEuMjEtLjMyNy42OTMuMzQ5LDEuMy42NDUsMS42ODhhMTIuNzI4LDEyLjcyOCwwLDAsMCw0LjIyNSwyLjdjLjQzOC4yMDgsMS43MjMuNiwxLjcyMy42YTExLjUyLDExLjUyLDAsMCwwLTguMSwyLjI4N2MtMS44MDcsMS42NzItMS4wMDgsMy42NjUsMi42OTUsNC44OTFhMTIuNzU1LDEyLjc1NSwwLDAsMCw2LjUzNC43NzJjMS45MjItLjEsMi4yMjQtLjA0MiwyLjI0NC4xMTYuMDI3LjIyMi0yLjEzNC43NzMtMi43MjQuOTQ0LTEuNS40MzMtNS40MzYsMS4zMDctNS40NTYsMS4zMTJaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcbiAgXCJMaXZlU2NyaXB0XCI6IGA8cG9seWdvbiBwb2ludHM9XCI1LjUwNCAyLjAwNyA4Ljk4NiAyIDguOTg2IDIxLjc0NiAxMC43NTkgMTkuOTg3IDEwLjc1OSAzLjc1NSAxMi40OTcgMy43NTUgMTIuNDk3IDE4LjI0IDE0LjI1MyAxNi40ODcgMTQuMjUzIDMuNzU1IDE1Ljk5NyAzLjc1NSAxNS45OTcgMTQuNzI5IDE3LjczNSAxMi45NjIgMTcuNzM1IDMuNzU1IDE5LjQ2MSAzLjc1NSAxOS40NjEgMTEuMjI1IDIxLjI0NSA5LjQ2MSAyMS4yNDUgMy43NTUgMjIuOTcyIDMuNzU1IDIyLjk3MiA3LjcyMyAyNC43MzggNS45NzUgMjQuNzM5IDMuNzU1IDI2LjQ4MyAzLjc1NSAyNi40ODMgNS40ODIgMjguMjA5IDUuNDgyIDI4LjIwOSA3LjI2NyAyNS45MTEgNy4yNjggMjQuMTg0IDguOTkzIDI4LjIwOSA4Ljk5MyAyOC4yMDkgMTAuNzE5IDIyLjQzOCAxMC43MTkgMjAuNjk4IDEyLjUwNCAyOC4yMDkgMTIuNTA0IDI4LjIwOSAxNC4yMyAxOC45NjEgMTQuMjMgMTcuMjA1IDE2LjAxNCAyOC4yMDkgMTYuMDE0IDI4LjIwOSAxNy43NDEgMTUuNDU1IDE3Ljc0MSAxMy43MTUgMTkuNDk2IDI4LjIwOSAxOS40OTYgMjguMjA5IDIxLjI1MiAxMS45OCAyMS4yNTIgMTAuMjQyIDIyLjk3OCAyOS45ODIgMjIuOTc4IDI5Ljk4OSAyNi40ODkgOC45ODYgMjYuNDg5IDguOTg2IDMwIDUuNTA0IDMwIDUuNTA0IDI2LjQ4OSAyLjAxMSAyNi40ODkgMi4wMTEgMjIuOTc4IDUuNTA0IDIyLjk3OCA1LjUwMyAyIDUuNTA0IDIuMDA3XCIgc3R5bGU9XCJmaWxsOiMzMTdlYWNcIi8+YCxcbiAgXCJMb2cgZmlsZVwiOiBgPHBhdGggZD1cIk0yOS40LDI3LjZIMi41VjQuNUgyOS40Wm0tMjUuOS0xSDI4LjRWNS41SDMuNVpcIiBzdHlsZT1cImZpbGw6IzAwYmQwMlwiLz48cmVjdCB4PVwiMi41XCIgeT1cIjUuNVwiIHdpZHRoPVwiMjYuOVwiIGhlaWdodD1cIjEuOVwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPjxyZWN0IHg9XCIxMS4zMzNcIiB5PVwiOS41XCIgd2lkdGg9XCI4LjE2N1wiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6IzAwYmQwMlwiLz48cmVjdCB4PVwiMTEuMzMzXCIgeT1cIjEyLjA4M1wiIHdpZHRoPVwiMTIuNVwiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6IzAwYmQwMlwiLz48cmVjdCB4PVwiMTEuMzMzXCIgeT1cIjE0Ljc1XCIgd2lkdGg9XCIxMC42MTdcIiBoZWlnaHQ9XCIxXCIgc3R5bGU9XCJmaWxsOiMwMGJkMDJcIi8+PHJlY3QgeD1cIjExLjMzM1wiIHk9XCIxNy41ODNcIiB3aWR0aD1cIjE0LjE2N1wiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6IzAwYmQwMlwiLz48cmVjdCB4PVwiMTEuMzMzXCIgeT1cIjIwLjVcIiB3aWR0aD1cIjkuODM0XCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPjxyZWN0IHg9XCIxMS41XCIgeT1cIjIzLjA4M1wiIHdpZHRoPVwiMTIuMTY3XCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPjxyZWN0IHg9XCI1LjVcIiB5PVwiOS41XCIgd2lkdGg9XCI0LjMzM1wiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6IzAwYmQwMlwiLz48cmVjdCB4PVwiNS41XCIgeT1cIjEyLjA4M1wiIHdpZHRoPVwiNC4zMzNcIiBoZWlnaHQ9XCIxXCIgc3R5bGU9XCJmaWxsOiMwMGJkMDJcIi8+PHJlY3QgeD1cIjUuNVwiIHk9XCIxMi4wODNcIiB3aWR0aD1cIjQuMzMzXCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPjxyZWN0IHg9XCI1LjVcIiB5PVwiMTQuNjY3XCIgd2lkdGg9XCI0LjMzM1wiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6IzAwYmQwMlwiLz48cmVjdCB4PVwiNS41XCIgeT1cIjE3LjI1XCIgd2lkdGg9XCI0LjMzM1wiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6IzAwYmQwMlwiLz48cmVjdCB4PVwiNS41XCIgeT1cIjIwLjVcIiB3aWR0aD1cIjQuMzMzXCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPjxyZWN0IHg9XCI1LjVcIiB5PVwiMjMuMDgzXCIgd2lkdGg9XCI0LjMzM1wiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6IzAwYmQwMlwiLz5gLFxuICBcIkxPTENPREVcIjogYDxwYXRoIGQ9XCJNMjEuMywzLjczYTMuOTQsMy45NCwwLDAsMSwxLjA0MS0uNjIsOC40MzUsOC40MzUsMCwwLDEsLjU1NiwzLjM4NSwyNC44NjUsMjQuODY1LDAsMCwxLS42NDMsNS4wMTljLS4zNjgtLjE4LS43MzYtLjM2NC0xLjEtLjU1NGExMS43NTQsMTEuNzU0LDAsMCwwLC4yNzMtMy43NDcsMy4wOCwzLjA4LDAsMCwwLS4yNTUtLjg2NSw1LjE0Miw1LjE0MiwwLDAsMC0yLjAxNiwyLjA3Yy0uMzE5LS4yNC0uNjUyLS40NTktLjk4NS0uNjc2QTE1LjcxNiwxNS43MTYsMCwwLDEsMjEuMywzLjczWlwiIHN0eWxlPVwiZmlsbDojZWRlZGVkXCIvPjxwYXRoIGQ9XCJNMTkuNDUxLDguNmE0LjU3NCw0LjU3NCwwLDAsMSwxLjUwOS0xLjU2Myw2LjY4NSw2LjY4NSwwLDAsMSwuMDksMi42NzFDMjAuNTE3LDkuMzQzLDE5Ljk3NSw4Ljk4NywxOS40NTEsOC42WlwiIHN0eWxlPVwiZmlsbDojZWRlZGVkXCIvPjxwYXRoIGQ9XCJNMTYuNDYxLDEwLjA3NmMtLjAzOC0xLjEzNC0uMDMxLTIuMjY5LS4wMjYtMy40LS45LjQ5My0xLjc1OCwxLjA3MS0yLjY0OCwxLjU4OS0uNDUzLjI3LS45MDguNTM2LTEuMzYuODA4LjIyNC0uMTYzLjQ1Ny0uMzEyLjY5LS40NjItLjg2MS0xLjIyNC0xLjk3MS0yLjUtMy41My0yLjc0OGExMC45NjQsMTAuOTY0LDAsMCwwLS4zNjUsNS4xNDdjLjMxOC0uMTk1LjYzMy0uNC45NjItLjU3Mi0uNDc0LjMxOS0uOTY0LjYxNS0xLjQ0Ni45Mi0uOTU3LjYtMS45MjIsMS4xOTItMi44OTIsMS43NzdhMS4yMzIsMS4yMzIsMCwwLDAtLjM5MS4zMmMtLjEsMS4zOTUtLjM0LDQuMzkyLS4zNCw0LjM5Mi0uMjU0LDMuNjY4LS41MjIsNy4zMzYtLjgyNiwxMSw0LjA2Mi4zNDMsOC4xMTguNzQyLDEyLjE3OSwxLjA3NkMxNi40NTgsMjMuMywxNi40NzIsMTYuNjksMTYuNDYxLDEwLjA3NlpcIiBzdHlsZT1cImZpbGw6I2VkZWRlZFwiLz48cGF0aCBkPVwiTTIxLjEsMi45NzdBNS44ODQsNS44ODQsMCwwLDEsMjIuNzA2LDJhMTAuMDY0LDEwLjA2NCwwLDAsMSwuNzcyLDQuNjA2LDI0LjU5MSwyNC41OTEsMCwwLDEtLjUwOCw0LjQ1OWMxLjIuODQ2LDIuNDMzLDEuNjQ1LDMuNjE4LDIuNTA5cS40NCw2LjM4LjkwNywxMi43NThjLjA2Ni44MzkuMDk0LDEuNjguMjE2LDIuNTEzLTMuMDI5LjI3OS02LjA1Ny41OTEtOS4wODUuODg2YTE5LjEzNywxOS4xMzcsMCwwLDAtMi4xNTguMjd2LS4wODNjLS4wMS02LjYxNCwwLTEzLjIyNy0uMDA3LTE5Ljg0MS0uMDM4LTEuMTM0LS4wMzEtMi4yNjktLjAyNi0zLjR2LS4xYy40MDYuMjkyLjgyNi41NjIsMS4yNDMuODM5QTE2LjI3NCwxNi4yNzQsMCwwLDEsMjEuMSwyLjk3N1ptLjIuNzUyYTE1LjcxNiwxNS43MTYsMCwwLDAtMy4xMjgsNC4wMTFjLjMzNC4yMTcuNjY2LjQzNy45ODUuNjc2YTUuMTQyLDUuMTQyLDAsMCwxLDIuMDE2LTIuMDcsMy4wOCwzLjA4LDAsMCwxLC4yNTUuODY1LDExLjc1NCwxMS43NTQsMCwwLDEtLjI3MywzLjc0N2MuMzY0LjE5LjczMS4zNzQsMS4xLjU1NGEyNC44NjUsMjQuODY1LDAsMCwwLC42NDMtNS4wMTksOC40MzUsOC40MzUsMCwwLDAtLjU1Ni0zLjM4NUEzLjk0LDMuOTQsMCwwLDAsMjEuMywzLjczWk0xOS40NTEsOC42Yy41MjQuMzgzLDEuMDY2LjczOSwxLjYsMS4xMDhhNi42ODUsNi42ODUsMCwwLDAtLjA5LTIuNjcxQTQuNTc0LDQuNTc0LDAsMCwwLDE5LjQ1MSw4LjZaXCIgc3R5bGU9XCJmaWxsOiM4ZDI3MDFcIi8+PHBhdGggZD1cIk05LjIxOSw1LjA2MmEzLjU4MSwzLjU4MSwwLDAsMSwyLjIwNS43NDhBMTIuOSwxMi45LDAsMCwxLDEzLjc4OCw4LjI2Yy0uNDUzLjI3LS45MDguNTM2LTEuMzYuODA4LjIyNC0uMTYzLjQ1Ny0uMzEyLjY5LS40NjItLjg2MS0xLjIyNC0xLjk3MS0yLjUtMy41My0yLjc0OGExMC45NjQsMTAuOTY0LDAsMCwwLS4zNjUsNS4xNDdjLjMxOC0uMTk1LjYzMy0uNC45NjItLjU3Mi0uNDc0LjMxOS0uOTY0LjYxNS0xLjQ0Ni45MkExNC4xLDE0LjEsMCwwLDEsOS4yMTksNS4wNjJaXCIgc3R5bGU9XCJmaWxsOiM4ZDI3MDFcIi8+PHBhdGggZD1cIk0xMC41MDcsOC40NzZhMi40NTUsMi40NTUsMCwwLDEsMS41MTcuODhsLS4zNi4yQTIuNjksMi42OSwwLDAsMCwxMC43MzksOWEzLjMxOCwzLjMxOCwwLDAsMC0uMTY1LDEuMjgxbC0uMzQ0LjExQTcuMDIxLDcuMDIxLDAsMCwxLDEwLjUwNyw4LjQ3NlpcIiBzdHlsZT1cImZpbGw6IzhkMjcwMVwiLz48cGF0aCBkPVwiTTEyLjEzOSwxMC42OTNhLjQ4Ny40ODcsMCwwLDEsLjU0Mi4wMSwxLjU1MiwxLjU1MiwwLDAsMSwuMDYyLjZjLS4wMzkuNzg0LjAyNCwxLjU3My0uMDc2LDIuMzU0YTEuMDEzLDEuMDEzLDAsMCwxLTEuMDEyLjg4NmMtLjIzMy0uMDUtLjI3OC0uMzQxLS4yNzgtLjU0MSwwLS42NzUuMS0xLjM0Ny4wNjYtMi4wMjRBMS4zLDEuMywwLDAsMSwxMi4xMzksMTAuNjkzWm0uMTUsMS4wODRhLjg5MS44OTEsMCwwLDAsLjI1MS0uODY2QzEyLjIxOCwxMS4wNjEsMTEuOSwxMS41MDcsMTIuMjg5LDExLjc3N1pcIiBzdHlsZT1cImZpbGw6IzhkMjcwMVwiLz48cGF0aCBkPVwiTTE0LjUsMTMuNzI4YTE3LjY3MSwxNy42NzEsMCwwLDEsMS45MjgtLjgyMmMtLjAyNC4wNjQtLjA2OS4xOTEtLjA5Mi4yNTUtLjY0OS4zNTgtMS4zNi42LTIuMDIxLjkzOGExMi4xMTgsMTIuMTE4LDAsMCwwLTMuMjM4LDIuMjQ4QTcuMiw3LjIsMCwwLDEsMTAsMTcuMzgxYTQuMTY2LDQuMTY2LDAsMCwxLC45OC0xLjI0NkExMi43MjcsMTIuNzI3LDAsMCwxLDE0LjUsMTMuNzI4WlwiIHN0eWxlPVwiZmlsbDojOGQyNzAxXCIvPjxwYXRoIGQ9XCJNNy42MjgsMTMuMjMxYS45ODkuOTg5LDAsMCwxLC41OTQtLjE1MiwxOC4xMTQsMTguMTE0LDAsMCwxLS4xLDIuNjU0LjcxMy43MTMsMCwwLDEtLjg5Mi42NTgsMjEuMSwyMS4xLDAsMCwxLC4wODItMi4yMjZBMS4zODMsMS4zODMsMCwwLDEsNy42MjgsMTMuMjMxWm0uMTc5LjgzMWMuMjY4LS4xMTIuMzE5LS40MTMuNDEyLS42NTRDNy44MiwxMy4zMTIsNy43NzUsMTMuNzgzLDcuODA3LDE0LjA2MlpcIiBzdHlsZT1cImZpbGw6IzhkMjcwMVwiLz48cGF0aCBkPVwiTTEwLjgyMywxNy4wOTRhMTMuOTM0LDEzLjkzNCwwLDAsMSw0LjYxMi0xLjk2OGMtLjAxLjA2OC0uMDI5LjIwNi0uMDM5LjI3NGExNC4yNzMsMTQuMjczLDAsMCwwLTQuNDc1LDEuOTE0LDIuNjI2LDIuNjI2LDAsMCwxLS42ODEuMzQzQzEwLjMsMTcuMzU2LDEwLjYsMTcuMjQ5LDEwLjgyMywxNy4wOTRaXCIgc3R5bGU9XCJmaWxsOiM4ZDI3MDFcIi8+PHBhdGggZD1cIk01LjI2NCwxNy41OUE1LjE0NCw1LjE0NCwwLDAsMSw4LDE3LjFhMS41LDEuNSwwLDAsMSwxLjE0Mi42NjVBNi44NTQsNi44NTQsMCwwLDAsNy42LDE3LjI3OGE2Ljk2Nyw2Ljk2NywwLDAsMC0yLjQ4NC41NjRaXCIgc3R5bGU9XCJmaWxsOiM4ZDI3MDFcIi8+PHBhdGggZD1cIk0xMC41NzgsMTcuNzI1YTkuNTksOS41OSwwLDAsMSwzLjYxLS41NjZjLjI0LjAyMS4zMjEuMi4zMTMuNDI0YTMuMjM4LDMuMjM4LDAsMCwwLTEuOTU2LS4wOSwyMS42ODgsMjEuNjg4LDAsMCwwLTIuNTU3LjY1OEM5Ljk5NSwxNy44MjksMTAuMzQ1LDE3LjgwOSwxMC41NzgsMTcuNzI1WlwiIHN0eWxlPVwiZmlsbDojOGQyNzAxXCIvPjxwYXRoIGQ9XCJNOS4yNjgsMTcuNjc2Yy4xNDktLjE3Ni41MzMtLjMzMi42NjQtLjA2MmExLjMsMS4zLDAsMCwxLS41MTYuOTkzQzkuMjY4LDE4LjMzNyw4Ljk3MywxNy45NTIsOS4yNjgsMTcuNjc2WlwiIHN0eWxlPVwiZmlsbDojOGQyNzAxXCIvPjxwYXRoIGQ9XCJNNS43NDQsMTguNjI5YTUuOSw1LjksMCwwLDEsMy4xODItLjYxOGMtLjE4Mi4yMzUtLjQ5My4xNzgtLjc1MS4yMDhhNS42NjMsNS42NjMsMCwwLDAtMS43Mi4zM2MtLjM0NC4xMjgtLjY2NS4zMS0xLjAyLjQwOUEuNi42LDAsMCwxLDUuNzQ0LDE4LjYyOVpcIiBzdHlsZT1cImZpbGw6IzhkMjcwMVwiLz48cGF0aCBkPVwiTTYuOSwxOS4xMTRhOS42NzYsOS42NzYsMCwwLDEsMi4yLS44NTRjLS4xLjMtLjQ0MS4zMzgtLjcuNDQ0YTcuODM5LDcuODM5LDAsMCwwLTIuNTY0LDEuNDE1QzUuOTM4LDE5LjU4NCw2LjQ4OCwxOS4zNjksNi45LDE5LjExNFpcIiBzdHlsZT1cImZpbGw6IzhkMjcwMVwiLz48cGF0aCBkPVwiTTExLjYzNSwxOS43YTMuMTEsMy4xMSwwLDAsMCwxLjkxLTEuMzgzYy4zNDctLjEuMjczLjI3NS4yNi40OTRhMi4wNTYsMi4wNTYsMCwwLDEtLjk1LDEuMDM2LDEyLjM2NSwxMi4zNjUsMCwwLDEtMS44MjcsNi40MTlBMi4zNDIsMi4zNDIsMCwwLDEsOC44NzksMjcuNWEyLjI1MSwyLjI1MSwwLDAsMS0xLjUzNS0xLjQ5LDEwLjg5NCwxMC44OTQsMCwwLDEtLjY5LTQuNjY1Yy0uMTU3LS4xMTItLjM2OS0uMTc5LS40Ni0uMzYyLS4xMy0uMi4wMTEtLjQyNS4wNDctLjYzMS4xOS4xNTEuMzQ1LjM5Mi42MDYuNDJhMy42MTcsMy42MTcsMCwwLDAsMS44NjMtLjQsMS41ODgsMS41ODgsMCwwLDAsLjcwOS0uNjYyLDMuODgxLDMuODgxLDAsMCwwLC40MzEuMjY2QTQuMjgsNC4yOCwwLDAsMCwxMS42MzUsMTkuN1ptLTIuMi44MzVhNC4xMzIsNC4xMzIsMCwwLDEtMi40NjIuODA5LDExLjA0OSwxMS4wNDksMCwwLDAsLjM1OCwzLjUyNiwzLjIyNiwzLjIyNiwwLDAsMSwuOS0xLjI4MiwyLjA1NSwyLjA1NSwwLDAsMSwyLjMtLjIsMi4zLDIuMywwLDAsMSwuODg0LDEuMTcyLDE0LjY1OSwxNC42NTksMCwwLDAsMS4wMDUtNC40ODlBNS4xNjcsNS4xNjcsMCwwLDEsOS40MzUsMjAuNTMyWm0tLjMyOSwzLjI2YTIuMjczLDIuMjczLDAsMCwwLTEuNSwxLjQzNGMtLjEyMy4yNjkuMS41MTcuMjI1LjczOC4zMzEuNDYyLjc5NSwxLDEuNDMxLjg5M2EyLjg2OCwyLjg2OCwwLDAsMCwxLjc2OS0xLjZBMS42LDEuNiwwLDAsMCw5LjEwNiwyMy43OTJaXCIgc3R5bGU9XCJmaWxsOiM4ZDI3MDFcIi8+YCxcbiAgXCJMdWFcIjogYDxwYXRoIGQ9XCJNMTYuNSwzMGwtLjAxMS0uMzIxYy40LS4wMTQuOC0uMDQ1LDEuMTktLjA5NGwuMDM5LjMxOUMxNy4zMTIsMjkuOTUyLDE2LjksMjkuOTg0LDE2LjUsMzBabS0xLjIyMi0uMDExYy0uNC0uMDIxLS44MTQtLjA2MS0xLjIxNi0uMTE4bC4wNDUtLjMxOGMuMzkzLjA1NS43OTMuMDk0LDEuMTg4LjExNVpNMTguOTIsMjkuN2wtLjA2Ny0uMzE0Yy4zODctLjA4My43NzYtLjE4NCwxLjE1NS0uM2wuMDk0LjMwN0MxOS43MTQsMjkuNTExLDE5LjMxNiwyOS42MTUsMTguOTIsMjkuN1ptLTYuMDYzLS4wNTNjLS40LS4wOTEtLjc5MS0uMi0xLjE3Ny0uMzI2bC4xLS4zMDZjLjM3Ny4xMjIuNzY0LjIzLDEuMTUuMzE5Wm04LjQtLjY2NS0uMTIxLS4zYy4zNjQtLjE0OC43MjgtLjMxNCwxLjA4LS40OTNsLjAwNiwwLC4xNDUuMjg2LDAsMEMyMiwyOC42NjEsMjEuNjI2LDI4LjgzMSwyMS4yNTMsMjguOTgyWm0tMTAuNzE4LS4wODhjLS4zNzQtLjE1OC0uNzQ1LS4zMzUtMS4xLS41MjRsLjE1LS4yODRjLjM1LjE4Ni43MTMuMzU4LDEuMDc4LjUxMlptMTIuODkzLTEuMDIxLS4xNy0uMjczYy4zMzctLjIxLjY2OC0uNDM3Ljk4NC0uNjc1bC4xOTMuMjU3QzI0LjExMSwyNy40MjUsMjMuNzcyLDI3LjY1OCwyMy40MjgsMjcuODczWk04LjM3OSwyNy43NTFjLS4zNDEtLjIyLS42NzYtLjQ1OS0xLS43MDhsLjItLjI1M2MuMzEyLjI0My42NC40NzYuOTcyLjY5MVptMTctMS4zNDYtLjIxNS0uMjM5Yy4yOTQtLjI2NS41OC0uNTQ2Ljg1MS0uODM2bC4yMzUuMjE5QzI1Ljk3MiwyNS44NDYsMjUuNjc5LDI2LjEzNCwyNS4zNzgsMjYuNFpNNi40NTQsMjYuMjUyYy0uMy0uMjc2LS41ODUtLjU2OS0uODU2LS44N2wuMjM5LS4yMTVjLjI2NS4yOTQuNTQ3LjU4LjgzNi44NVpNMjcuMDQxLDI0LjYybC0uMjUzLS4yYy4yNDQtLjMxMi40NzYtLjYzOS42OTItLjk3MmwuMjcuMTc1QzI3LjUyOSwyMy45NjYsMjcuMjksMjQuMywyNy4wNDEsMjQuNjJaTTQuODIsMjQuNDM5Yy0uMjQ0LS4zMjQtLjQ3Ni0uNjYyLS42OTItMS4wMDdsLjI3Mi0uMTdjLjIxLjMzNy40MzguNjY4LjY3Ni45ODRabTIzLjU0Ny0xLjg2Ny0uMjg0LS4xNTFjLjE4Ni0uMzUuMzU4LS43MTMuNTEzLTEuMDc4bC4zLjEyNUMyOC43MzUsMjEuODQzLDI4LjU1OCwyMi4yMTQsMjguMzY4LDIyLjU3MlptLTI0Ljg0MS0uMi0uMDA2LS4wMTJjLS4xODMtLjM1OS0uMzUyLS43MjgtLjUtMS4xbC4zLS4xMjFjLjE0Ny4zNjIuMzEyLjcyNC40OTEsMS4wNzRsLjAwNi4wMTJaTTI5LjMyLDIwLjMyNWwtLjMwNi0uMWMuMTIyLS4zNzcuMjMtLjc2NC4zMTktMS4xNWwuMzEzLjA3MkMyOS41NTUsMTkuNTQzLDI5LjQ0NiwxOS45MzksMjkuMzIsMjAuMzI1Wk0yLjYwOCwyMC4xMDdjLS4xMi0uMzg4LS4yMjMtLjc4Ni0uMzA4LTEuMTgybC4zMTQtLjA2N2MuMDgzLjM4Ny4xODQuNzc2LjMsMS4xNTVaTTI5Ljg3LDE3Ljk0NmwtLjMxOC0uMDQ1Yy4wNTYtLjM5My4wOTQtLjc5My4xMTUtMS4xODhsLjMyMS4wMTdDMjkuOTY3LDE3LjEzNSwyOS45MjcsMTcuNTQ0LDI5Ljg3LDE3Ljk0NlpNMi4xLDE3LjcyYy0uMDUtLjQtLjA4Mi0uODEyLS4xLTEuMjE4bC4zMjEtLjAxMWMuMDE0LjQuMDQ2LjguMDk0LDEuMTlabTI3LjU4Mi0yLjJjLS4wMTQtLjQtLjA0NS0uOC0uMDkzLTEuMTlsLjMxOS0uMDM5Yy4wNDkuNC4wODIuODEzLjEsMS4yMThaTTIuMzMxLDE1LjMsMi4wMSwxNS4yOGMuMDIxLS40MDUuMDYxLS44MTQuMTE3LTEuMjE2bC4zMTguMDQ1QzIuMzksMTQuNSwyLjM1MiwxNC45LDIuMzMxLDE1LjNabTI3LjA1Ny0yLjE0NGMtLjA4My0uMzg3LS4xODQtLjc3Ni0uMy0xLjE1NUwyOS40LDExLjljLjExOS4zODguMjIzLjc4Ni4zMDcsMS4xODNaTTIuNjYzLDEyLjkzNGwtLjMxMy0uMDcyYy4wOTEtLjQuMi0uNzkxLjMyNi0xLjE3N2wuMzA2LjFDMi44NTksMTIuMTYxLDIuNzUyLDEyLjU0OCwyLjY2MywxMi45MzRabTI2LjAyNi0yLjA2MmMtLjE0OS0uMzY2LS4zMTUtLjczMi0uNS0xLjA4NmwuMjg2LS4xNDZjLjE4NS4zNjMuMzU1LjczNi41MDcsMS4xMTFaTTMuNCwxMC42NjVsLS4zLS4xMjVjLjE1OC0uMzc0LjMzNC0uNzQ1LjUyNC0xLjFsLjI4NC4xNUMzLjcyNCw5LjkzNywzLjU1MiwxMC4zLDMuNCwxMC42NjVaTTQuNTEzLDguNTU3bC0uMjctLjE3NGMuMjItLjM0MS40NTgtLjY3Ni43MDctMWwuMjU0LjJDNC45NjEsNy45LDQuNzI4LDguMjI0LDQuNTEzLDguNTU3Wk01Ljk3Nyw2LjY3NmwtLjIzNS0uMjE5Yy4yNzYtLjMuNTY5LS41ODUuODctLjg1N2wuMjE1LjIzOUM2LjUzMyw2LjEsNi4yNDcsNi4zODYsNS45NzcsNi42NzZabTEuNzctMS42LS4xOTMtLjI1N2MuMzIzLS4yNDQuNjYyLS40NzcsMS4wMDctLjY5MmwuMTcuMjcyQzguMzk0LDQuNjE0LDguMDYzLDQuODQxLDcuNzQ3LDUuMDc5Wm0xNS43MDUtLjU1OC0uMDE4LS4wMTIuMTc1LS4yNy4wMTguMDExWm0tMS4wNDctLjYxNmMtLjM1LS4xODYtLjcxMy0uMzU4LTEuMDc4LS41MTJsLjEyNS0uM2MuMzc0LjE1OC43NDUuMzM0LDEuMS41MjRaTTkuNzY5LDMuODE1bC0uMTQ2LS4yODYuMDE4LS4wMDljLjM1Ni0uMTgxLjcyNC0uMzQ5LDEuMDkzLS41bC4xMjEuM2MtLjM2MS4xNDctLjcyLjMxMS0xLjA2OC40ODhabTEwLjQ0LS44MzhjLS4zNzctLjEyMi0uNzY0LS4yMjktMS4xNTEtLjMxN2wuMDcyLS4zMTNjLjQuMDkxLjc5Mi4yLDEuMTc4LjMyNVptLTguMjI5LS4wNi0uMDk0LS4zMDdjLjM4OC0uMTE5Ljc4Ni0uMjIzLDEuMTgyLS4zMDhsLjA2Ny4zMTRDMTIuNzQ3LDIuNywxMi4zNTksMi44LDExLjk4LDIuOTE3Wm01LjktLjQ3M2MtLjM5My0uMDU1LS43OTMtLjA5Mi0xLjE4OC0uMTEzbC4wMTYtLjMyMWMuNDA1LjAyMS44MTQuMDU5LDEuMjE2LjExNVptLTMuNTcyLS4wMjYtLjA0LS4zMTljLjQtLjA1LjgxMi0uMDgzLDEuMjE4LS4xbC4wMTIuMzIxQzE1LjEwNiwyLjMzNywxNC43MDUsMi4zNjksMTQuMzEyLDIuNDE4WlwiIHN0eWxlPVwiZmlsbDpncmF5XCIvPjxjaXJjbGUgY3g9XCIxNlwiIGN5PVwiMTUuOTk4XCIgcj1cIjEwLjcwOFwiIHN0eWxlPVwiZmlsbDpuYXZ5XCIvPjxjaXJjbGUgY3g9XCIyMC40MzVcIiBjeT1cIjExLjU2MlwiIHI9XCIzLjEzNlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxjaXJjbGUgY3g9XCIyNi43MDhcIiBjeT1cIjUuMjlcIiByPVwiMy4xMzdcIiBzdHlsZT1cImZpbGw6bmF2eVwiLz48cGF0aCBkPVwiTTEzLjEsMjEuMzUydi0uNzlIOS42MjlWMTQuMzI2aC0uOXY3LjAyNkgxMy4xXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xNy45MTYsMjEuMzUyVjE2LjNoLS44djIuNzg1YzAsMS4wMzEtLjU0LDEuNzA2LTEuMzc4LDEuNzA2QS45NS45NSwwLDAsMSwxNC43LDE5LjhWMTYuM2gtLjh2My44MTdjMCwuODM4LjYyNiwxLjM3OCwxLjYwOSwxLjM3OGExLjg2MywxLjg2MywwLDAsMCwxLjY4Ny0uOTI1di43ODFoLjcyM1wiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMjMuNzkxLDIxLjMzM3YtLjYwN2EuNjY0LjY2NCwwLDAsMS0uMTczLjAxOWMtLjI3OSwwLS40MzQtLjE0NS0uNDM0LS40VjE3LjUzNmMwLS45LS42NTUtMS4zNzgtMS45LTEuMzc4LTEuMjI0LDAtMS45NzYuNDcyLTIuMDI0LDEuNjM4aC44MWMuMDY3LS42MTcuNDM0LS45LDEuMTg1LS45LjcyMywwLDEuMTI4LjI3LDEuMTI4Ljc1MnYuMjEyYzAsLjMzNy0uMi40ODItLjgzOC41NTlhNS43NjMsNS43NjMsMCwwLDAtMS42MTkuMzA4LDEuMzI3LDEuMzI3LDAsMCwwLS44ODcsMS4zMTFjMCwuOTE2LjYzNiwxLjQ1NSwxLjY1OCwxLjQ1NWEyLjM2MywyLjM2MywwLDAsMCwxLjcxNS0uNzQyLjg1NS44NTUsMCwwLDAsLjgyOS42NjUsMS45NjcsMS45NjcsMCwwLDAsLjU0OS0uMDg3bS0xLjQwNy0xLjcyNWExLjM2NiwxLjM2NiwwLDAsMS0xLjUxMywxLjE4NWMtLjYyNiwwLS45OTMtLjIyMi0uOTkzLS43NzEsMC0uNTMuMzU3LS43NjEsMS4yMTQtLjg4N2E0LDQsMCwwLDAsMS4yOTEtLjI3OXYuNzUyXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcbiAgXCJNYXJrZG93blwiOiBgPHJlY3QgeD1cIjIuNVwiIHk9XCI3Ljk1NVwiIHdpZHRoPVwiMjdcIiBoZWlnaHQ9XCIxNi4wOTFcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6Izc1NTgzOFwiLz48cG9seWdvbiBwb2ludHM9XCI1LjkwOSAyMC42MzYgNS45MDkgMTEuMzY0IDguNjM2IDExLjM2NCAxMS4zNjQgMTQuNzczIDE0LjA5MSAxMS4zNjQgMTYuODE4IDExLjM2NCAxNi44MTggMjAuNjM2IDE0LjA5MSAyMC42MzYgMTQuMDkxIDE1LjMxOCAxMS4zNjQgMTguNzI3IDguNjM2IDE1LjMxOCA4LjYzNiAyMC42MzYgNS45MDkgMjAuNjM2XCIgc3R5bGU9XCJmaWxsOiM3NTU4MzhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjIuOTU1IDIwLjYzNiAxOC44NjQgMTYuMTM2IDIxLjU5MSAxNi4xMzYgMjEuNTkxIDExLjM2NCAyNC4zMTggMTEuMzY0IDI0LjMxOCAxNi4xMzYgMjcuMDQ1IDE2LjEzNiAyMi45NTUgMjAuNjM2XCIgc3R5bGU9XCJmaWxsOiM3NTU4MzhcIi8+YCxcbiAgXCJNQVRMQUJcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjE2LjgwM1wiIHkxPVwiMTYuNjMxXCIgeDI9XCIxNS4wMTNcIiB5Mj1cIjIyLjQxMVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEsIDAsIDAsIC0xLCAwLCAzMilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM1MTJcIi8+PHN0b3Agb2Zmc2V0PVwiMC4yM1wiIHN0b3AtY29sb3I9XCIjNTIzXCIvPjxzdG9wIG9mZnNldD1cIjAuMzZcIiBzdG9wLWNvbG9yPVwiIzUzNFwiLz48c3RvcCBvZmZzZXQ9XCIwLjUxXCIgc3RvcC1jb2xvcj1cIiM2NDVcIi8+PHN0b3Agb2Zmc2V0PVwiMC42NlwiIHN0b3AtY29sb3I9XCIjNTY4XCIvPjxzdG9wIG9mZnNldD1cIjAuODRcIiBzdG9wLWNvbG9yPVwiIzI5ZFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIjI5LjcxXCIgeTE9XCIxOC45ODNcIiB4Mj1cIjExLjcxXCIgeTI9XCIxNC41NjNcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwLjA4MVwiIHN0b3AtY29sb3I9XCIjYzMzXCIvPjxzdG9wIG9mZnNldD1cIjAuMTg5XCIgc3RvcC1jb2xvcj1cIiNkZTUyMzlcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zMTNcIiBzdG9wLWNvbG9yPVwiI2YwNmUzZVwiLz48c3RvcCBvZmZzZXQ9XCIwLjQyMVwiIHN0b3AtY29sb3I9XCIjZmE4MDQyXCIvPjxzdG9wIG9mZnNldD1cIjAuNVwiIHN0b3AtY29sb3I9XCIjZmU4NjQzXCIvPjxzdG9wIG9mZnNldD1cIjAuNThcIiBzdG9wLWNvbG9yPVwiI2ZhN2Y0MlwiLz48c3RvcCBvZmZzZXQ9XCIwLjY5NlwiIHN0b3AtY29sb3I9XCIjZWY2YzNlXCIvPjxzdG9wIG9mZnNldD1cIjAuODMzXCIgc3RvcC1jb2xvcj1cIiNkYzRjMzdcIi8+PHN0b3Agb2Zmc2V0PVwiMC45MTZcIiBzdG9wLWNvbG9yPVwiI2NmMzYzM1wiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX21hdGxhYjwvdGl0bGU+PHBhdGggZD1cIk0yLDE3LjU1bDcuOTctMy4yMmEyMC43LDIwLjcsMCwwLDEsMi43Mi0yLjk1Yy42Ni0uMzUsMS45LS4xNiw0LjE3LTIuOTgsMi4yLTIuNzUsMi45LTUuMSwzLjkzLTUuMSwxLjYzLDAsMi44MywzLjUyLDQuNjUsOC44NUExMTUuNjI5LDExNS42MjksMCwwLDAsMzAsMjQuMTJjLTEuOS0xLjc3LTMuNTItMy42OC01LjM3LTMuNjMtMS43Mi4wNC0zLjYzLDIuMDgtNS43Miw0LjctMS42NiwyLjEtMy44NiwzLjU0LTQuNzIsMy41MSwwLDAtMi4yMi02LjI4LTQuMDgtNy4zYTIuNjQxLDIuNjQxLDAsMCwwLTIuMzkuMkwyLDE3LjU0WlwiIHN0eWxlPVwiZmlsbDojNDlkXCIvPjxwYXRoIGQ9XCJNMTkuOCw0LjAyYy0uNjcuOS0xLjQ4LDIuNTUtMi45NCw0LjM4LTIuMjcsMi44Mi0zLjUsMi42My00LjE3LDIuOThhMTkuNjc0LDE5LjY3NCwwLDAsMC0yLjcyLDIuOTVsMy4zLDIuNDFjMi44LTMuODIsNC4zLTcuOTYsNS40Ny0xMC42NEExMy41NzksMTMuNTc5LDAsMCwxLDE5LjgsNC4wMlpcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTIwLjgsMy4zYy0yLjE4LDAtMy42NywxMS40OC0xMS43MiwxNy44OSwyLjI2LS4zNyw0LjIyLDUuMjQsNS4xMiw3LjUxLDQtLjY4LDcuMi04LjMzLDEwLjQzLTguMjEsMS44NS4wNywzLjQ3LDEuODYsNS4zNywzLjYzQzI1LjY2LDE1LDIzLjYzLDMuMywyMC44LDMuM1pcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz5gLFxuICBcIk1BWFNjcmlwdFwiOiBgPHBhdGggZD1cIk0xNC40LDcuNTY4LDIwLjIxMiwySDcuMjczTDQuODQ4LDcuNTM2bDkuNTU3LjAzMlpNNC44NDgsNy41MzZsNi44NDQsMi42TDE0LjQsNy41NjhtLS4wMTMsMy42MjItMi43LTEuMDUzTDUuMjYzLDE2LjFsNi4yODYsNS44MjMsMi44MDgtMS4xTDE0LjQsNy41NjhtMCwwLDEyLjgsOC4zNzZMMjAuMjEyLDJNMjcuMiwxNS45NDQsMTQuMzkxLDExLjE5bS0uMDM1LDkuNjM2LS4wMzIsMy42ODVNMjAuMjI4LDMwbC04LjY3OS04LjA3M0w0LjgsMjQuNDY0LDcuMjU3LDMwWm0wLDBMMjcuMiwxNS45NDQsMTQuMzI1LDI0LjUxMk0yNy4yLDE1Ljk0NCwxNC4zNTcsMjAuODI2XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMxZDFkMWI7c3Ryb2tlLW1pdGVybGltaXQ6MjIuOTI1NTg0NzkzMDkwODI7c3Ryb2tlLXdpZHRoOjAuMDI4MzQ5OTk5MzM4Mzg4NDQzcHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTQuMzkxIDExLjE5IDI3LjIgMTUuOTQ0IDE0LjQwNSA3LjU2OCAxNC4zOTEgMTEuMTkgMTQuMzkxIDExLjE5XCIgc3R5bGU9XCJmaWxsOiMxODFiMTc7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjcuMiAxNS45NDQgMTQuMzU3IDIwLjgyNiAxNC4zMjUgMjQuNTA5IDE0LjMyNiAyNC41MTEgMjcuMiAxNS45NDQgMjcuMiAxNS45NDRcIiBzdHlsZT1cImZpbGw6IzFhMWQxYTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxNC40MDUgNy41NjggMjcuMiAxNS45NDQgMjAuMjEyIDIgMTQuNDA1IDcuNTY4IDE0LjQwNSA3LjU2OFwiIHN0eWxlPVwiZmlsbDojMDA1ZjVlO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI3LjIgMTUuOTQ0IDE0LjMyNiAyNC41MTEgMjAuMjI4IDMwIDI3LjIgMTUuOTQ0IDI3LjIgMTUuOTQ0XCIgc3R5bGU9XCJmaWxsOiMwMDQyNDI7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTQuMzU3IDIwLjgyNiAyNy4yIDE1Ljk0NCAxNC4zOTEgMTEuMTkgMTQuMzU3IDIwLjgyNiAxNC4zNTcgMjAuODI2XCIgc3R5bGU9XCJmaWxsOiMwMDUxNTI7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTQuMzU3IDIwLjgyNiAxNC4zOTEgMTEuMTkgMTEuNjkyIDEwLjEzNyA1LjI2MyAxNi4xMDQgMTEuNTQ5IDIxLjkyNyAxNC4zNTcgMjAuODI2IDE0LjM1NyAyMC44MjZcIiBzdHlsZT1cImZpbGw6IzAwNjk2YjtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxMS42OTIgMTAuMTM3IDE0LjM5MSAxMS4xOSAxNC40MDUgNy41NjggMTEuNjkyIDEwLjEzNyAxMS42OTIgMTAuMTM3XCIgc3R5bGU9XCJmaWxsOiMxYjI3MjU7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTQuMzU3IDIwLjgyNiAxMS41NDkgMjEuOTI3IDE0LjMyNSAyNC41MDkgMTQuMzU3IDIwLjgyNiAxNC4zNTcgMjAuODI2XCIgc3R5bGU9XCJmaWxsOiMxYzI2MjQ7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTQuMzI1IDI0LjUxMiA0LjggMjQuNDY0IDcuMjU3IDMwIDIwLjIyOCAzMCAxNC4zMjYgMjQuNTExIDE0LjMyNSAyNC41MTIgMTQuMzI1IDI0LjUxMlwiIHN0eWxlPVwiZmlsbDojMDA2NDY2O2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjQuODQ4IDcuNTM2IDE0LjQwNSA3LjU2OCAyMC4yMTIgMiA3LjI3MyAyIDQuODQ4IDcuNTM2IDQuODQ4IDcuNTM2XCIgc3R5bGU9XCJmaWxsOiMwMDc2N2E7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTQuNDA1IDcuNTY4IDQuODQ4IDcuNTM2IDExLjY5MiAxMC4xMzcgMTQuNDA1IDcuNTY4IDE0LjQwNSA3LjU2OFwiIHN0eWxlPVwiZmlsbDojMWUzOTM4O2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjExLjU0OSAyMS45MjcgNC44IDI0LjQ2NCAxNC4zMjUgMjQuNTEyIDE0LjMyNSAyNC41MDkgMTEuNTQ5IDIxLjkyNyAxMS41NDkgMjEuOTI3XCIgc3R5bGU9XCJmaWxsOiMyMDMwMmU7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+YCxcbiAgXCJNRUxcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIi02MTEuMzQ4XCIgeTE9XCItNjcuNDg4XCIgeDI9XCItNjAwLjI3MlwiIHkyPVwiLTY1LjMzNVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEuNDM3LCAwLCAwLCAtMS40MzcsIDg5NC40MTcsIC04Mi4yOTIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjMGY2MDY3XCIvPjxzdG9wIG9mZnNldD1cIjAuNVwiIHN0b3AtY29sb3I9XCIjMDVhYmFjXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzU4YmVjNFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIi02MDMuNTk0XCIgeTE9XCItNzcuNjk5XCIgeDI9XCItNjAyLjAxMVwiIHkyPVwiLTU5LjYwNFwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEuNDM3LCAwLCAwLCAtMS40MzcsIDg5NC40MTcsIC04Mi4yOTIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjMTE3YzgzXCIvPjxzdG9wIG9mZnNldD1cIjAuNVwiIHN0b3AtY29sb3I9XCIjMjFiNWI1XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzdlZDRkNFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImNcIiB4MT1cIi02MTIuNzU3XCIgeTE9XCItNTkuOTA2XCIgeDI9XCItNjE2LjkzNFwiIHkyPVwiLTcyLjc2XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMS40MzcsIDAsIDAsIC0xLjQzNywgODk0LjQxNywgLTgyLjI5MilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM5YWNjZDNcIi8+PHN0b3Agb2Zmc2V0PVwiMC41XCIgc3RvcC1jb2xvcj1cIiM3MmFlYjNcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMzE3ZDdmXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiZFwiIHgxPVwiLTYyMS44NTFcIiB5MT1cIi03NC41NzlcIiB4Mj1cIi02MTQuODRcIiB5Mj1cIi03Mi4zMDFcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLjQzNywgMCwgMCwgLTEuNDM3LCA4OTQuNDE3LCAtODIuMjkyKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzIxNjI2ZVwiLz48c3RvcCBvZmZzZXQ9XCIwLjVcIiBzdG9wLWNvbG9yPVwiIzE1N2M4NFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMwM2EzYTVcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJlXCIgeDE9XCItNjE2LjM2OVwiIHkxPVwiLTY0LjQ2OVwiIHgyPVwiLTYyNS4zNFwiIHkyPVwiLTcyLjgzNVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEuNDM3LCAwLCAwLCAtMS40MzcsIDg5NC40MTcsIC04Mi4yOTIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjMGI3YzgxXCIvPjxzdG9wIG9mZnNldD1cIjAuNVwiIHN0b3AtY29sb3I9XCIjMDY4ZDkwXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzE2YjFiMVwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImZcIiB4MT1cIi02MDguMDcyXCIgeTE9XCItNzQuNjc4XCIgeDI9XCItNjAzLjQ4OFwiIHkyPVwiLTcwLjk2NlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEuNDM3LCAwLCAwLCAtMS40MzcsIDg5NC40MTcsIC04Mi4yOTIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjMGE4YThmXCIvPjxzdG9wIG9mZnNldD1cIjAuNVwiIHN0b3AtY29sb3I9XCIjMGY3YzgyXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzFhNTk2NFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImdcIiB4MT1cIi02MDEuMTM0XCIgeTE9XCItNzAuMTEzXCIgeDI9XCItNjA2LjAwOFwiIHkyPVwiLTY3LjA2N1wiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEuNDM3LCAwLCAwLCAtMS40MzcsIDg5NC40MTcsIC04Mi4yOTIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjMjU2YTc3XCIvPjxzdG9wIG9mZnNldD1cIjAuNVwiIHN0b3AtY29sb3I9XCIjMGQ5NDk5XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzA2YTBhMlwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX21heWE8L3RpdGxlPjxwYXRoIGQ9XCJNMjEuNiwzLjQ2MkgzMEwxOC43NjcsMjQuMjExcy0xLjg5My01LjUtMi43MDYtNy40NTlcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTIzLjY2OSwyOS4xMThIMzBWMy40NjJDMjkuOTk1LDE2Ljg2OSwyNC4zNiwyOS4xMTgsMjMuNjY5LDI5LjExOFpcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTE4Ljc2NywyNC4yMTFIMTMuNTQxTDIsMy40NjJjMi4wNDctLjI2LDYuMTM1LS42MTEsOC4xNi0uNzc2WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2MpXCIvPjxwYXRoIGQ9XCJNOC42OTMsMTYuMDE5QzYuOTYsMjIuODY2LDEuOTk1LDI5LjMyLDIsMjkuMzE0YzUuNzUyLDAsNi45OTEtLjgzNSw2Ljk5MS0xLjI3NlYxNi41NEM4Ljg5LDE2LjM3LDguNzk0LDE2LjE5NCw4LjY5MywxNi4wMTlaXCIgc3R5bGU9XCJmaWxsOnVybCgjZClcIi8+PHBhdGggZD1cIk0yLDMuNDYyVjI5LjMxNGMzLjE0Ny01LjIsNC45ODEtOC42LDYuNi0xMy40NUM0LjYsOC43OTQsMiwzLjQ2MiwyLDMuNDYyWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2UpXCIvPjxwb2x5bGluZSBwb2ludHM9XCIyMy4yMzMgMjguMTAyIDIzLjY2OSAyOS4xMTggMjMuNjY5IDE1LjY0NyAyMy4yMzMgMTYuMzc1XCIgc3R5bGU9XCJmaWxsOnVybCgjZilcIi8+PHBhdGggZD1cIk0yMy42NDcsMTUuNjczdjEzLjRsLjAxNi4wNDNjLjQ1MiwwLDYuMzMyLTE0LjUsNi4zMzItMjUuNjU2QzI5Ljk5NSwzLjQ2MiwyNi40MDYsMTAuOTQ3LDIzLjY0NywxNS42NzNaXCIgc3R5bGU9XCJmaWxsOnVybCgjZylcIi8+YCxcbiAgXCJNb25nb0RCXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCItNjQ1LjczMlwiIHkxPVwiODM5LjE4OFwiIHgyPVwiLTY1NC41OVwiIHkyPVwiODM5LjI1XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoLTAuOTc3LCAtMC4zMjMsIC0wLjI5LCAwLjg3NywgLTM3NS45NDQsIC05MjguMjg3KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjAuMjMxXCIgc3RvcC1jb2xvcj1cIiM5OTk4NzVcIi8+PHN0b3Agb2Zmc2V0PVwiMC41NjNcIiBzdG9wLWNvbG9yPVwiIzliOTk3N1wiLz48c3RvcCBvZmZzZXQ9XCIwLjY4M1wiIHN0b3AtY29sb3I9XCIjYTA5ZjdlXCIvPjxzdG9wIG9mZnNldD1cIjAuNzY4XCIgc3RvcC1jb2xvcj1cIiNhOWE4ODlcIi8+PHN0b3Agb2Zmc2V0PVwiMC44MzdcIiBzdG9wLWNvbG9yPVwiI2I3YjY5YVwiLz48c3RvcCBvZmZzZXQ9XCIwLjg5NlwiIHN0b3AtY29sb3I9XCIjYzljN2IwXCIvPjxzdG9wIG9mZnNldD1cIjAuOTQ4XCIgc3RvcC1jb2xvcj1cIiNkZWRkY2JcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OTRcIiBzdG9wLWNvbG9yPVwiI2Y4ZjZlYlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNmYmY5ZWZcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCItNjQ0LjI4N1wiIHkxPVwiODIzLjQwNVwiIHgyPVwiLTY1Ny4wMjhcIiB5Mj1cIjg0NS40NzZcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgtMC45NzcsIC0wLjMyMywgLTAuMjksIDAuODc3LCAtMzc1Ljk0NCwgLTkyOC4yODcpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjNDhhNTQ3XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzNmOTE0M1wiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImNcIiB4MT1cIi02NDMuMzg2XCIgeTE9XCI4MzkuNDg1XCIgeDI9XCItNjUyLjQxOFwiIHkyPVwiODMzLjQxN1wiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KC0wLjk3NywgLTAuMzIzLCAtMC4yOSwgMC44NzcsIC0zNzUuOTQ0LCAtOTI4LjI4NylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM0MWEyNDdcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zNTJcIiBzdG9wLWNvbG9yPVwiIzRiYTc0YlwiLz48c3RvcCBvZmZzZXQ9XCIwLjk1NlwiIHN0b3AtY29sb3I9XCIjNjdiNTU0XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzY5YjY1NVwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX21vbmdvPC90aXRsZT48cGF0aCBkPVwiTTE2LjYyLDMwbC0uNzUxLS4yNDlzLjEtMy44LTEuMjc1LTQuMDY3Yy0uOS0xLjA0OC4xMzMtNDQuNzQxLDMuNDIzLS4xNDlhMi43MTIsMi43MTIsMCwwLDAtMS4zMzMsMS41MjNBMTQuMSwxNC4xLDAsMCwwLDE2LjYyLDMwWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMTcuMDI2LDI2LjMyOWExMy4yMjMsMTMuMjIzLDAsMCwwLDUtMTMuMjI1QzIwLjU1Niw2LjYxOSwxNy4wNzUsNC40ODcsMTYuNywzLjY3M2E5Ljc5Miw5Ljc5MiwwLDAsMS0uODI1LTEuNmwuMjc3LDE4LjA2OVMxNS41NzgsMjUuNjY0LDE3LjAyNiwyNi4zMjlaXCIgc3R5bGU9XCJmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk0xNS40ODcsMjYuNTY5UzkuMzY2LDIyLjQsOS43MiwxNS4wMjVBMTUuNTQsMTUuNTQsMCwwLDEsMTUuMjM5LDMuMzc3LDEuNzI1LDEuNzI1LDAsMCwwLDE1Ljg0NiwyYy4zODEuODIuMzE5LDEyLjI0My4zNTksMTMuNTc5QzE2LjM2LDIwLjc3NiwxNS45MTYsMjUuNTg4LDE1LjQ4NywyNi41NjlaXCIgc3R5bGU9XCJmaWxsOnVybCgjYylcIi8+YCxcbiAgXCJuZ2lueFwiOiBgPHBhdGggZD1cIk0xNS45NDgsMmguMDY1YTEwLjQxOCwxMC40MTgsMCwwLDEsLjk3Mi41MjhRMjIuNDE0LDUuNjUsMjcuODQzLDguNzc0YS43OTIuNzkyLDAsMCwxLC40MTQuNzg4Yy0uMDA4LDQuMzg5LDAsOC43NzctLjAwNSwxMy4xNjRhLjgxMy44MTMsMCwwLDEtLjM1Ni41MDdxLTUuNzczLDMuMzI0LTExLjU0Nyw2LjY0NGEuNTg3LjU4NywwLDAsMS0uNjU3LjAzN1E5LjkxMiwyNi42LDQuMTQzLDIzLjI3NGEuNy43LDAsMCwxLS40LS42NjZxMC02LjU4MiwwLTEzLjE2M2EuNjkzLjY5MywwLDAsMSwuMzg3LS42N1E5LjU1Miw1LjY1NywxNC45NzQsMi41MzVjLjMyMi0uMTg0LjYzOC0uMzc5Ljk3NC0uNTM1XCIgc3R5bGU9XCJmaWxsOiMwMTk2MzlcIi8+PHBhdGggZD1cIk04Ljc2NywxMC41MzhxMCw1LjQyOSwwLDEwLjg1OWExLjUwOSwxLjUwOSwwLDAsMCwuNDI3LDEuMDg3LDEuNjQ3LDEuNjQ3LDAsMCwwLDIuMDYuMjA2LDEuNTY0LDEuNTY0LDAsMCwwLC42ODUtMS4yOTNjMC0yLjYyLS4wMDUtNS4yNCwwLTcuODZxMy41ODMsNC4yOSw3LjE4MSw4LjU2OGEyLjgzMywyLjgzMywwLDAsMCwyLjYuNzgyLDEuNTYxLDEuNTYxLDAsMCwwLDEuMjUxLTEuMzcxcS4wMDgtNS41NDEsMC0xMS4wODFhMS41ODIsMS41ODIsMCwwLDAtMy4xNTIsMGMwLDIuNjYyLS4wMTYsNS4zMjEsMCw3Ljk4Mi0yLjM0Ni0yLjc2Ni00LjY2My01LjU1Ni03LTguMzMyQTIuODE3LDIuODE3LDAsMCwwLDEwLjE3LDkuMDMzLDEuNTc5LDEuNTc5LDAsMCwwLDguNzY3LDEwLjUzOFpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuICBcIk5pbVwiOiBgPHBhdGggZD1cIk0xNi4xMTEsNi40MDVzLTEuMDczLjg0Ny0yLjE2NywxLjY5YTE1LjM2MSwxNS4zNjEsMCwwLDAtNC41MjcuNjUxYy0xLjEtLjctMi4wNy0xLjQ2OS0yLjA3LTEuNDY5UzYuNTIsOC43LDYsOS41MzVhMTEuMzgyLDExLjM4MiwwLDAsMC0yLjIzNiwxLjQ4MkMyLjk2MSwxMC43LDIuMDMsMTAuMzEsMiwxMC4zYzEuMDYzLDIuMTQ1LDEuNzc4LDQuMjkyLDMuNzIyLDUuNTgzLDMuMS00Ljg4OSwxNy40OC00LjQzOSwyMC42MzktLjAyOEMyOC40LDE0Ljc4NywyOS4yLDEyLjUsMzAsMTAuMzhjLS4wODguMDI5LTEuMTgxLjM5NS0xLjg4OS42NjVhMTEuNDg5LDExLjQ4OSwwLDAsMC0xLjk4Ni0xLjUxYy0uNTM3LS45ODQtMS4zMTktMi4zMTMtMS4zMTktMi4zMTNzLS45MjcuNjg5LTIsMS40NGEyMS4yNjUsMjEuMjY1LDAsMCwwLTQuNjgxLS41MTJjLTEtLjgyNi0yLjAxNC0xLjc0Ni0yLjAxNC0xLjc0NlpcIiBzdHlsZT1cImZpbGw6I2YzZDQwMFwiLz48cGF0aCBkPVwiTTMuMSwxNC44NTRsMi41NTQsNi4xODVjNC40MzUsNS44NSwxNS43NTksNi4yNTcsMjAuNy4xMTMsMS4xNjgtMi42MzMsMi43NDUtNi4zMzMsMi43NDUtNi4zMzNhMTMuMzc5LDEzLjM3OSwwLDAsMS00LjYsMy44NjksMTIuMjE3LDEyLjIxNywwLDAsMS0yLjk4My43OTNsLTUuNDY1LTIuODMyLTUuNSwyLjc3NWExNS42NzksMTUuNjc5LDAsMCwxLTIuOTgzLS43NjRBMTQuMDc2LDE0LjA3NiwwLDAsMSwzLjEsMTQuODU0WlwiIHN0eWxlPVwiZmlsbDojZmZlOTUzXCIvPmAsXG4gIFwiTml4XCI6IGA8cGF0aCBkPVwiTTEzLDExLjExNSw2LjE4MywyMy43Niw0LjU5LDIwLjg3bDEuODM5LTMuMzg3LTMuNjUxLS4wMUwyLDE2LjAyOWwuOC0xLjQ3Nyw1LjIuMDE4LDEuODY4LTMuNDQ3WlwiIHN0eWxlPVwiZmlsbDojN2ViYWU0O2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTMuNTI3LDIxLjIyM2gxMy42NGwtMS41NDEsMi45MjItMy42NTgtLjAxMSwxLjgxNywzLjM4OS0uNzc5LDEuNDQ5LTEuNTkzLDAtMi41ODQtNC44MjUtMy43MjItLjAwOFpcIiBzdHlsZT1cImZpbGw6IzdlYmFlNDtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTIxLjQ2NywxNS42ODIsMTQuNjQ3LDMuMDM3bDMuMTM0LS4wMzJMMTkuNiw2LjRsMS44MzQtMy4zNzloMS41NTdMMjMuNzg2LDQuNSwyMS4xNzQsOS4zMDdsMS44NTQsMy40NTVaXCIgc3R5bGU9XCJmaWxsOiM3ZWJhZTQ7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xMC41NDIsMTYuMzI0bDYuODIxLDEyLjY0NUwxNC4yMjksMjlsLTEuODIxLTMuNC0xLjgzNCwzLjM4SDkuMDE2bC0uOC0xLjQ3NkwxMC44MzEsMjIuNyw4Ljk3NiwxOS4yNDNaXCIgc3R5bGU9XCJmaWxsOiM1Mjc3YzM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xOC40NjQsMTAuNzUxSDQuODIzTDYuMzY1LDcuODI5bDMuNjU4LjAxMUw4LjIwNyw0LjQ1MSw4Ljk4NiwzbDEuNTkyLDAsMi41ODQsNC44MjUsMy43MjIuMDA4WlwiIHN0eWxlPVwiZmlsbDojNTI3N2MzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTksMjAuODg4LDI1LjgxNyw4LjI0NGwxLjU5MywyLjg5TDI1LjU3MSwxNC41MmwzLjY1MS4wMUwzMCwxNS45NzlsLS44LDEuNDc3LTUuMi0uMDE4LTEuODY4LDMuNDQ3WlwiIHN0eWxlPVwiZmlsbDojNTI3N2MzO2ZpbGwtcnVsZTpldmVub2RkXCIvPmAsXG4gIFwiTlNJU1wiOiBgPHBhdGggZD1cIk0yNy40MzUsMTYuMDM3LDIyLjAxMiwyMS40Nmw1LjQyMyw1LjQyM1wiIHN0eWxlPVwiZmlsbDojMDA1NzdiXCIvPjxwYXRoIGQ9XCJNMjYuODg0LDE1LjVIMTYuMDQ4bDUuNDIzLDUuNDIzXCIgc3R5bGU9XCJmaWxsOiMwMDc5YWFcIi8+PHBhdGggZD1cIk0yNi44ODQsMTQuNzEyLDIxLjQ2MSw5LjI4OWwtNS40MjMsNS40MjNcIiBzdHlsZT1cImZpbGw6IzAwOTZkM1wiLz48cGF0aCBkPVwiTTIwLjUyOCw5LjEzMUg5LjY4M2w1LjQyMyw1LjQyM00yNy40MzUsMy4zMjUsMjIuMDEyLDguNzQ4bDUuNDIzLDUuNDIzXCIgc3R5bGU9XCJmaWxsOiMwMWIwZjBcIi8+PHBhdGggZD1cIk0yMC41MjgsOC4zNTYsMTUuMTA1LDIuOTMzLDkuNjgzLDguMzU2XCIgc3R5bGU9XCJmaWxsOiMyN2JjZjNcIi8+PHBhdGggZD1cIk0xNC4xNzIsMi43NzVIMy4zMjdMOC43NDksOC4yXCIgc3R5bGU9XCJmaWxsOiM0ZmM5ZjVcIi8+PHBhdGggZD1cIk00LjU2OCwxNS45NjMsOS45OTEsMTAuNTQsNC41NjgsNS4xMTdcIiBzdHlsZT1cImZpbGw6Izc5MjAxYlwiLz48cGF0aCBkPVwiTTEwLjU0MSwxMS4wOTEsNS4xMTksMTYuNTEzSDE1Ljk2NFwiIHN0eWxlPVwiZmlsbDojYTQyZDI2XCIvPjxwYXRoIGQ9XCJNNS4xMTksMTcuMjg4bDUuNDIzLDUuNDIzLDUuNDIzLTUuNDIzXCIgc3R5bGU9XCJmaWxsOiNjYzM4MmZcIi8+PHBhdGggZD1cIk00LjU2OCwxNy44MjlWMjguNjc1bDUuNDIzLTUuNDIzTDguNCwyMS42NjVtMTMuOTE2LDEuMkwxNi45LDE3LjQ0N2wtNS40MjMsNS40MjNcIiBzdHlsZT1cImZpbGw6I2YwNDUzZlwiLz48cGF0aCBkPVwiTTExLjQ3NSwyMy42NDQsMTYuOSwyOS4wNjdsNS40MjMtNS40MjNcIiBzdHlsZT1cImZpbGw6I2YyNjI1ZFwiLz48cGF0aCBkPVwiTTE3Ljg0LDI5LjIyNUgyOC42ODVMMjMuMjYzLDIzLjhcIiBzdHlsZT1cImZpbGw6I2Y0N2Y3ZFwiLz48cGF0aCBkPVwiTTI5Ljg4OSwyOS4zMzdsLTEuNjgtMS42OFYyLjM5MmEuMzc0LjM3NCwwLDAsMC0uMjQzLS4zNTVBLjI2My4yNjMsMCwwLDAsMjcuODI3LDJhLjM1OS4zNTksMCwwLDAtLjI3MS4xMTJMMjEuNDcxLDguMiwxNS4zODUsMi4xMTIsMTUuMywyLjAzN2gtLjAzN0EuMzA3LjMwNywwLDAsMCwxNS4xMDUsMkgyLjRhLjQzNC40MzQsMCwwLDAtLjI4OS4xMTJBLjM4LjM4LDAsMCwwLDIsMi4zOTJhLjM1OS4zNTksMCwwLDAsLjExMi4yNzFsMS42OCwxLjY4VjI5LjYxN2EuMzc0LjM3NCwwLDAsMCwuMjQzLjM1NUEuMzg3LjM4NywwLDAsMCw0LjE4NSwzMGEuMzU5LjM1OSwwLDAsMCwuMjcxLS4xMTJMMTAuNTQxLDIzLjhsNi4wODUsNi4wODUuMDg0LjA3NWguMDM3QS4yNTQuMjU0LDAsMCwwLDE2LjksMzBIMjkuNjA5YS4zOTUuMzk1LDAsMCwwLC4yOC0uNjYzWk0yNy40MzUsMy4zMjVWMTQuMTcxTDIyLjAxMiw4Ljc0OGw1LjQyMy01LjQyM1pNOS45OTEsMTAuNTQsNC41NjgsMTUuOTYzVjUuMTE3TDkuOTkxLDEwLjU0Wk05LjY4Myw5LjEzMUgyMC41MjhsLTUuNDIzLDUuNDIzTDkuNjgzLDkuMTMxWm0uODU5LDEuOTYsNS40MjMsNS40MjNINS4xMTlsNS40MjMtNS40MjNaTTE2LjksMTcuNDQ3bDUuNDIzLDUuNDIzSDExLjQ3NUwxNi45LDE3LjQ0N1pNMTYuMDQ4LDE1LjVIMjYuODkzbC01LjQyMyw1LjQyM0wxNi4wNDgsMTUuNVptNS45NjQsNS45NjQsNS40MjMtNS40MjNWMjYuODgzTDIyLjAxMiwyMS40NlptNC44NzItNi43NDhIMTYuMDQ4bDUuNDIzLTUuNDIzLDUuNDEzLDUuNDIzWk0yMC41MjgsOC4zNTZIOS42ODNsNS40MjMtNS40MjMsNS40MjMsNS40MjNaTTMuMzI3LDIuNzc1SDE0LjE3Mkw4Ljc0OSw4LjJabTEuMjQxLDI1LjlWMTcuODI5TDguNCwyMS42NjVsMS41ODcsMS41ODdMNC41NjgsMjguNjc1Wm0uNTUxLTExLjM4N0gxNS45NjRsLTUuNDIzLDUuNDIzTDUuMTE5LDE3LjI4OFpNMTYuOSwyOS4wNjdsLTUuNDIzLTUuNDIzSDIyLjMyTDE2LjksMjkuMDY3Wm0uOTQzLjE1OUwyMy4yNjMsMjMuOGw1LjQyMyw1LjQyM1pcIiBzdHlsZT1cImZpbGw6IzQ2NDA0OVwiLz5gLFxuICBcIk9iamVjdCBQYXNjYWxcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjE2XCIgeTE9XCItMC40NDNcIiB4Mj1cIjE2XCIgeTI9XCIyMi4wNDJcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwLjAyMVwiIHN0b3AtY29sb3I9XCIjZmYwYzE1XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzlhMGMwZlwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2RlbHBoaTwvdGl0bGU+PGNpcmNsZSBjeD1cIjE2XCIgY3k9XCIxNlwiIHI9XCIxNFwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMjcuNTQ1LDE2LjI0M0g0LjkyNGEuOTE0LjkxNCwwLDAsMC0xLjA5Mi44MnEuMDMzLjQyOS4xLjg0OWExMi40LDEyLjQsMCwwLDAsMjQuNTMyLDBxLjA3NS0uNS4xMDgtMS4wMjFDMjguNDc4LDE2LjUyMywyOC4yMTEsMTYuMjA3LDI3LjU0NSwxNi4yNDNaXCIgc3R5bGU9XCJmaWxsOiNmZjY0NDNcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjE4LjQ4IDExLjY0IDIzLjcwNyA3LjI2NiAxOS43ODcgNS44OCAxNiAxMS4wNTNcIiBzdHlsZT1cImZpbGw6I2ZhZTdlMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWxpbmUgcG9pbnRzPVwiMTUuNjggMTEuMDI2IDE4LjY0IDUuODggMTQuODUzIDUuODggMTMuMzA3IDExLjI5M1wiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCIxMy4wNCAxMS4zNzMgMTMuNiA2LjcwNiAxMC41ODcgNy45NiAxMS4wMTMgMTIuNzZcIiBzdHlsZT1cImZpbGw6I2ZhZTdlMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWxpbmUgcG9pbnRzPVwiMTAuNzQ3IDEzIDkuNzg3IDguNzYgNy43MDcgMTAuODQgOS42NTMgMTQuNjhcIiBzdHlsZT1cImZpbGw6I2ZhZTdlMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWxpbmUgcG9pbnRzPVwiOS4zODcgMTUuMDUzIDcuNDkzIDEyLjM3NiA2LjY0IDE0LjQ2NiA5LjA0IDE2LjUxN1wiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCI5LjA0IDE2Ljc1NyA2LjY0IDE1LjIxMyA2LjQ4IDE3LjQgOS4yIDE4LjMzM1wiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCI5LjIyNyAxOC44NDYgNi42NCAxOC4wNCA3LjIyNyAxOS44IDkuNTQ3IDE5LjhcIiBzdHlsZT1cImZpbGw6I2ZhZTdlMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWxpbmUgcG9pbnRzPVwiOS43MDcgMjAuMDkzIDcuNzA3IDIwLjM4NiA4LjYyNyAyMS43NDYgMTAuMjY3IDIxXCIgc3R5bGU9XCJmaWxsOiNmYWU3ZTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0yMC4wMjMsMTMuMDg5YTYuNjEsNi42MSwwLDAsMC00LjUzLTJBNi4yOTMsNi4yOTMsMCwwLDAsMTEuMywyMi4wN2w0Ljk0MS4xMjktMi4wOC00LjE2WlwiIHN0eWxlPVwiZmlsbDojZWVlO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTYuNSwyMi4zNjZsLTUuMjY3LS4xMzgtLjA0NC0uMDM5YTYuNDUzLDYuNDUzLDAsMCwxLDQuMy0xMS4yNjQsNi43ODcsNi43ODcsMCwwLDEsNC42NDMsMi4wNWwuMTIzLjEyMy01LjksNC45ODJabS01LjE0LS40NTUsNC42MTYuMTIxTDEzLjk2MSwxOGw1LjgyNS00LjkxOWE2LjQzLDYuNDMsMCwwLDAtNC4yOTItMS44MzUsNi4xMzMsNi4xMzMsMCwwLDAtNC4xMzEsMTAuNjY3WlwiIHN0eWxlPVwiZmlsbDojZWU0YjJlXCIvPjxwYXRoIGQ9XCJNMTIuMDEzLDIwLjQ5M2MtNC4xNzMtNS44MTMsMi4xMDktOC4xNzIsMi40NzgtOC40NTMuNDUxLS4zNDQtNy41OSwxLjc4NS0zLjIyNiw4Ljg4WlwiIHN0eWxlPVwiZmlsbDojZjA0ZTMxO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIwLjcyIDEyLjYgMTMuNTIgMTcuNTY3IDEzLjczMyAxOC41NzMgMjEuNDY3IDE3LjAyNiAyMC43MiAxMi42XCIgc3R5bGU9XCJmaWxsOiNlZWU7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xMy42MSwxOC43NjEsMTMuMzQxLDE3LjVsNy40OTUtNS4xNy44MTQsNC44MjhabS4wODktMS4xMjMuMTU4Ljc0N0wyMS4yODMsMTYuOSwyMC42LDEyLjg3NFpcIiBzdHlsZT1cImZpbGw6I2VlNGIyZVwiLz48cGF0aCBkPVwiTTE1LjcyMywyMS4zMTljLTMuOTMtLjY2OC00LjI4My40MjgtNC4yODMuNDI4TDEwLjI2NywyNC40NHMxLjEyLS45MDcsNS40OTMsMGwuNzYtMS4zODhaXCIgc3R5bGU9XCJmaWxsOiNkZDBjMTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xNC4xMjIsMjEuNmMtLjAyLS4yLTEuMS0uMzE5LTEuNjc3LS4xMjMtLjczMi4yNDktMS4yMTksMS4xNDItMS4wNDUsMS4yMTNhMS45NzUsMS45NzUsMCwwLDEsMS4xMjUtLjk4NkMxMy40NDcsMjEuNDkzLDE0LjE0MiwyMS44LDE0LjEyMiwyMS42WlwiIHN0eWxlPVwiZmlsbDojZmY2ZTRmO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTUuNTIsMTguNjA2YTExLjEsMTEuMSwwLDAsMCwxLjU0NywxLjQ4Nyw2LjksNi45LDAsMCwxLDIuNzIsNC4xMDdjLS4xMDcsMS4wNjctMS45NzMsMS43Ni0xLjk3MywxLjc2bC0zLjMwNy03LjE5NFpcIiBzdHlsZT1cImZpbGw6I2VlZTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTE3LjczLDI2LjE2MWwtMy40NTctNy41MjEsMS4zMi0uMjA4LjA1Ny4wODFhMTAuODY5LDEwLjg2OSwwLDAsMCwxLjUxMiwxLjQ1MSw3LDcsMCwwLDEsMi43ODIsNC4yMDdsMCwuMDIyLDAsLjAyMmMtLjExNSwxLjE1My0yLDEuODY0LTIuMDc3LDEuODk0Wm0tMi45OS03LjI3LDMuMTU1LDYuODYzYy40MTQtLjE3OCwxLjYzLS43NjMsMS43My0xLjU0OGE2Ljc5Myw2Ljc5MywwLDAsMC0yLjY0OC0zLjk4MWwtLjAxLS4wMDdhMTEuOTQsMTEuOTQsMCwwLDEtMS41MTctMS40MzlaXCIgc3R5bGU9XCJmaWxsOiNlZTRiMmVcIi8+PHBhdGggZD1cIk0yOCwxMi43NDJjLjAyNS4zOTQuMDM0Ljc5Mi4wMjUsMS4xOTRhMTMuOTQ2LDEzLjk0NiwwLDAsMS0xOS45LDEyLjNBMTIuODYsMTIuODYsMCwwLDAsMjgsMTIuNzQyWlwiIHN0eWxlPVwiZmlsbDojZWFlMGRmO2ZpbGwtcnVsZTpldmVub2RkO29wYWNpdHk6MC4yXCIvPjxwYXRoIGQ9XCJNMi4zODMsMTMuODkzQTEzLjk0MSwxMy45NDEsMCwwLDEsMjUuNyw1Ljgzcy01LjAwOSw1Ljk3OS0xMC41ODQsNy45MDdTMi4zODMsMTMuODkzLDIuMzgzLDEzLjg5M1pcIiBzdHlsZT1cImZpbGw6I2VhZTBkZjtvcGFjaXR5OjAuMlwiLz48cGF0aCBkPVwiTTMuNjE4LDE4LjY5NGMtLjA0NC0uMzkyLS4wNzItLjc5LS4wODMtMS4xOTFDMy4zMjksOS44MDcsMTAuMDEyLDQuMiwxNy43MDgsMy45OTFhMTQuMiwxNC4yLDAsMCwxLDUuNzE5LDEuNDU4LDEzLjEyOCwxMy4xMjgsMCwwLDAtNy4xODgtMi4zNjljLTcuMS4xOS0xMy4zMDYsNS4zLTEzLjExNiwxMi40QTEyLjg3MywxMi44NzMsMCwwLDAsMy42MTgsMTguNjk0WlwiIHN0eWxlPVwiZmlsbDojZWFlMGRmO2ZpbGwtcnVsZTpldmVub2RkO29wYWNpdHk6MC4yXCIvPmAsXG4gIFwiT2JqZWN0aXZlLUNcIjogYDxwYXRoIGQ9XCJNMTEuMjksMTUuOTc2YTguODkyLDguODkyLDAsMCwwLDEuMDM5LDQuNTU3LDQuODE4LDQuODE4LDAsMCwwLDUuNTc5LDIuMTMsMy43ODksMy43ODksMCwwLDAsMi43MzQtMy4xODFjLjA5NS0uNTM1LjEtLjU0LjEtLjU0LDEuNTM3LjIyMiw0LjAxNC41ODIsNS41NS44bC0uMS4zODlBOS45NTgsOS45NTgsMCwwLDEsMjMuOCwyNC45YTguMzUsOC4zNSwwLDAsMS00Ljc0NywyLjM3OCwxMi45MjUsMTIuOTI1LDAsMCwxLTcuMzIyLS43MjUsOC45OCw4Ljk4LDAsMCwxLTUuMTA2LTUuNTI0QTE0LjM1MywxNC4zNTMsMCwwLDEsNi42NDIsMTAuOWE5LjMyMyw5LjMyMywwLDAsMSw3LjkyOS02LjI0LDExLjgxMiwxMS44MTIsMCwwLDEsNS45LjQ5MSw4LjQ2Nyw4LjQ2NywwLDAsMSw1LjQ1Niw2LjFjLjA4My4zMTEuMS4zNjkuMS4zNjktMS43MDkuMzExLTMuODIxLjcwNS01LjUxOCwxLjA3NUMyMC4xODYsMTEsMTkuMzg3LDkuNjY2LDE3LjY3OCw5LjI1YTQuNjU2LDQuNjU2LDAsMCwwLTUuODUzLDMuMTU4LDkuMjgsOS4yOCwwLDAsMC0uMzQxLDEuMjczQTEwLjg5LDEwLjg5LDAsMCwwLDExLjI5LDE1Ljk3NlpcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz48cG9seWdvbiBwb2ludHM9XCIyLjAzMyAzMCAyLjAzMyAyIDcuOTY3IDIgNy45NjcgNC4yMjcgNC43MjMgNC4yMjcgNC43MjMgMjcuNzczIDcuOTY3IDI3Ljc3MyA3Ljk2NyAzMCAyLjAzMyAzMFwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI5Ljk2NyAyOS45OTkgMjQuMDMzIDI5Ljk5OSAyNC4wMzMgMjcuNzcxIDI3LjI3NyAyNy43NzEgMjcuMjc3IDQuMjI2IDI0LjAzMyA0LjIyNiAyNC4wMzMgMS45OTkgMjkuOTY3IDEuOTk5IDI5Ljk2NyAyOS45OTlcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz5gLFxuICBcIk9DYW1sXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCItNzQ1LjYyM1wiIHkxPVwiLTkyLjc2XCIgeDI9XCItNzQ1LjYyM1wiIHkyPVwiLTg1LjEwOFwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDc1OCAxMTMuMjgpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZjI5MTA0XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2VjNjgxM1wiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIi03NDEuOTlcIiB5MT1cIi0xMDkuNDc3XCIgeDI9XCItNzQxLjk5XCIgeTI9XCItODUuMDk5XCIgeGxpbms6aHJlZj1cIiNhXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImNcIiB4MT1cIi03NTIuMTExXCIgeTE9XCItOTMuOTE4XCIgeDI9XCItNzUyLjExMVwiIHkyPVwiLTg1LjI4NFwiIHhsaW5rOmhyZWY9XCIjYVwiLz48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9vY2FtbDwvdGl0bGU+PHBhdGggZD1cIk0xNi41NzEsMjUuMjQ2YTQuMjgsNC4yOCwwLDAsMC0uMDM5LS43MDljLS4wNTktLjItLjItLjIxNy0uMy0uMzc0YTMuNTA3LDMuNTA3LDAsMCwxLS41MzItMS40NzdjLS4wMi0uNDUzLS4yLS44ODYtLjIxNy0xLjMzOS0uMDItLjIxNy4wMi0uNDUzLDAtLjY2OWExLjk2MywxLjk2MywwLDAsMC0uMDM5LS4zMTUsMS4xMzMsMS4xMzMsMCwwLDAtLjAzOS0uMmwuMDU5LS4xMzhhMi43MiwyLjcyLDAsMCwxLC42NS0uMDM5Yy4yNTYsMCwuNTEyLjAyLjc2OC4wMmE3Ljk2MSw3Ljk2MSwwLDAsMCwxLjUzNi0uMDU5LDMuNzIyLDMuNzIyLDAsMCwwLDEuOTQ5LS44NDcsNC45NDYsNC45NDYsMCwwLDAsMS41MzYtMi4wMDhjLjE3Ny0uMzk0LjE3Ny0xLjA4My41NTEtMS40LjQzMy0uMzc0LDEuMTgxLS4zMzUsMS42OTMtLjU3MWExLjE4NywxLjE4NywwLDAsMSwuODA3LS4xMzhjLjIxNy4wMzkuNjMuMzE1LjcyOS0uMDU5LS4wNzktLjAzOS0uMS0uMTM4LS4xMzgtLjE3Ny40MTQtLjAzOSwwLTEtLjE1OC0xLjJBMi4yMjUsMi4yMjUsMCwwLDAsMjQuMjUsMTNhMy41MDksMy41MDksMCwwLDAtMS41MzYtLjIxN2MtLjg4Ni4xNzctLjgyNy0uMzM1LTEuMzM5LS4zMzUtLjYzLDAtMS43MzMuMDM5LTEuOTMuNjNhMS41NCwxLjU0LDAsMCwxLS4zMzUuNTEyYy0uMTM4LjE3Ny4wMi4zNTQtLjAzOS41NzEtLjA3OS4yMTctLjE3Ny45ODUtLjI3NiwxLjI2LS4xNzcuNDUzLS4zOTQsMS4wMjQtLjc4OCwxLjAyNGEzLjE1MiwzLjE1MiwwLDAsMS0xLjQzNy0uMDc5Yy0uMjc2LS4xLS43MjktLjI1Ni0uOTQ1LS4zMzUtMS4wMjQtLjQzMy0xLjItLjkwNi0xLjItLjkwNmEzLjAyNiwzLjAyNiwwLDAsMS0uNTEyLS44NjZjLS4xMTgtLjQxNC0uMzE1LS43NjgtLjM5NC0xcy0uMy0uNTkxLS40NTMtLjk4NWEyLjY2NywyLjY2NywwLDAsMC0uNzA5LTEuMDYzYy0uMzE1LS4yNzYtLjYxLS43MjktMS4yNi0uNTkxYTEuNjQxLDEuNjQxLDAsMCwwLS44NjYuMzE1Yy0uMjE3LjE3Ny0uMy41NzEtLjQ5Mi44ODYtLjExOC4xNzctLjMxNS43MDktLjUxMiwxLjE2MmExLjkyOSwxLjkyOSwwLDAsMS0uMzM1LjY1Yy0uMTE4LjA3OS0uMjU2LjItLjQxNC4xMzhhLjkyNC45MjQsMCwwLDEtLjMxNS0uMiw1LjMzNCw1LjMzNCwwLDAsMS0uNzA5LTEuMTIyLDExLjEsMTEuMSwwLDAsMC0uNzg4LTEuMjQxLDEuMDE2LDEuMDE2LDAsMCwwLS45ODUtLjU1MWMtMS4wMjQsMC0xLjEuNTcxLTEuNTU2LDEuNDE4YTUuNTc0LDUuNTc0LDAsMCwxLS42NjksMS40Yy0uMjM2LjI1Ni0uOTQ1LDEuMzM5LTEuNDU3LDEuNTE2SDJ2Ny42MmMuMDM5LS4xLjA1OS0uMi4xLS4yNzYuMi0uNDE0LjY1LS44MDcuOTA2LTEuMjIxYTMuNSwzLjUsMCwwLDAsLjM3NC0uNzA5LDMuNzQzLDMuNzQzLDAsMCwxLC4yMzYtLjcwOS43OTQuNzk0LDAsMCwxLC41NzEtLjMzNWMuMzU0LS4wNTkuNjUuNDkyLDEuMDgzLjcwOS4yLjA3OSwxLjA2My4zOTQsMS4zMTkuNDUzLjQzMy4xLjkwNi4yLDEuMzM5LjI3Ni4yMzYuMDM5LjQ1My4wNzkuNzA5LjFhNy4zLDcuMywwLDAsMSwxLjA4My4xLDIuMjc3LDIuMjc3LDAsMCwwLS44MDcsMS4yMjFjLS4xNTguNDMzLS4yNzYuOTI1LS40NzMsMS4zMzktLjIxNy40NzMtLjY2OS42NjktLjYxLDEuMjIxYTIuNjY4LDIuNjY4LDAsMCwxLC4wMi42ODksNC4wMDksNC4wMDksMCwwLDEtLjIxNy42ODljLS4xLjMxNS0uMjE3LDEuMzU5LS4zNTQsMS42NzRsLjkwNi0uMTE4aDBBMTAuNjkyLDEwLjY5MiwwLDAsMCw4LjQsMjYuMzg4YTMuNzM3LDMuNzM3LDAsMCwxLC43MjktMS4yOGMuMzM1LS4zNzQuMzE1LS44NDcuNTEyLTEuM2ExMi40ODgsMTIuNDg4LDAsMCwxLC43NjgtMS4zYy40OTItLjgwNy44MDctMS44MTIsMS44NTEtMi4wMjhhMy4zLDMuMywwLDAsMSwxLjAyNC43MDksNC40NTIsNC40NTIsMCwwLDEsLjg4NiwxLjEsMTIuODUxLDEyLjg1MSwwLDAsMSwuODg2LDIuNjc4LDEuMjI3LDEuMjI3LDAsMCwwLC4zOTQuNzA5LDUuNDYyLDUuNDYyLDAsMCwxLC40MzMuNzI5Yy4wNzkuMTc3LjIuNTcxLjMuNzg4YTYuMjY3LDYuMjY3LDAsMCwxLC4zMTUuODI3bC44NDctLjAyaC4wMnYtLjAyQTkuNzU0LDkuNzU0LDAsMCwxLDE2LjU3MSwyNS4yNDZaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xNi4yMTcsMjcuMjM1Yy0uMS0uMi0uMjE3LS42MS0uMy0uNzg4YTUuNDYyLDUuNDYyLDAsMCwwLS40MzMtLjcyOSwxLjExOSwxLjExOSwwLDAsMS0uMzk0LS43MDksMTIuNDg3LDEyLjQ4NywwLDAsMC0uODg2LTIuNjc4LDQuNDUyLDQuNDUyLDAsMCwwLS44ODYtMS4xLDMuMywzLjMsMCwwLDAtMS4wMjQtLjcwOWMtMS4wNDQuMi0xLjM1OSwxLjIyMS0xLjg1MSwyLjAyOGExMi40ODgsMTIuNDg4LDAsMCwwLS43NjgsMS4zYy0uMi40MzMtLjE3Ny45MjUtLjUxMiwxLjNhMy40NDMsMy40NDMsMCwwLDAtLjcyOSwxLjI4Yy0uMDM5LjEtLjExOCwxLjA4My0uMjE3LDEuMzE5aDBsMS41MzYtLjFjMS40MzcuMSwxLjAyNC42NSwzLjI0OS41MzJsMy41MjUtLjExOGgwQTYuMjY3LDYuMjY3LDAsMCwwLDE2LjIxNywyNy4yMzVaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0yNi40NTYsMy44SDUuNTQ0QTMuNTIxLDMuNTIxLDAsMCwwLDIuMDIsNy4zMjh2Ny42NzloMGMuNTEyLS4xNzcsMS4yMjEtMS4yNiwxLjQ1Ny0xLjUxNmE1LjkxMyw1LjkxMywwLDAsMCwuNjY5LTEuNGMuNDUzLS44MjcuNTMyLTEuNDE4LDEuNTU2LTEuNDE4YTEuMDE2LDEuMDE2LDAsMCwxLC45ODUuNTUxLDkuNTQ3LDkuNTQ3LDAsMCwxLC43ODgsMS4yNDEsNC44NDksNC44NDksMCwwLDAsLjcwOSwxLjEyMiwyLDIsMCwwLDAsLjMxNS4yYy4xNTguMDU5LjMtLjA1OS40MTQtLjEzOEExLjkyOSwxLjkyOSwwLDAsMCw5LjI0NiwxM2MuMi0uNDUzLjM5NC0uOTY1LjUxMi0xLjE2Mi4yLS4zMTUuMjc2LS43MDkuNDkyLS44ODZhMS41OSwxLjU5LDAsMCwxLC44NjYtLjMxNWMuNjUtLjEzOC45NDUuMzE1LDEuMjYuNTkxYTMuMjg1LDMuMjg1LDAsMCwxLC43MDksMS4wNjNjLjE1OC4zOTQuMzU0Ljc2OC40NTMuOTg1YTguOTQ2LDguOTQ2LDAsMCwxLC4zOTQsMSwzLjcxMywzLjcxMywwLDAsMCwuNTEyLjg2NnMuMTc3LjQ3MywxLjIuOTA2YTguNzQ5LDguNzQ5LDAsMCwwLC45NDUuMzM1LDMuMTUyLDMuMTUyLDAsMCwwLDEuNDM3LjA3OWMuMzk0LDAsLjYxLS41NzEuNzg4LTEuMDI0LjEtLjI3Ni4yMTctMS4wNDQuMjc2LTEuMjZzLS4xLS4zNzQuMDM5LS41NzFjLjE1OC0uMjE3LjI1Ni0uMjM2LjMzNS0uNTEyLjItLjYxLDEuMy0uNjMsMS45My0uNjMuNTMyLDAsLjQ1My41MTIsMS4zMzkuMzM1YTMuMjQzLDMuMjQzLDAsMCwxLDEuNTM2LjIxNywyLjIyNSwyLjIyNSwwLDAsMSwxLjE0Mi41NTFjLjE1OC4yLjU3MSwxLjE2Mi4xNTgsMS4yLjAzOS4wMzkuMDc5LjEzOC4xMzguMTc3LS4xLjM3NC0uNDkyLjEtLjcyOS4wNTlhMS4xODcsMS4xODcsMCwwLDAtLjgwNy4xMzhjLS41MTIuMjE3LTEuMjQxLjItMS42OTMuNTcxLS4zNzQuMzE1LS4zNzQsMS0uNTUxLDEuNGE1LjE2Nyw1LjE2NywwLDAsMS0xLjUzNiwyLjAwOCwzLjksMy45LDAsMCwxLTEuOTQ5Ljg0Nyw3Ljk2MSw3Ljk2MSwwLDAsMS0xLjUzNi4wNTljLS4yNTYtLjAyLS41MTItLjAyLS43NjgtLjAyLS4xNTgsMC0uNjY5LS4wMi0uNjUuMDM5bC0uMDU5LjEzOGEuNy43LDAsMCwwLC4wMzkuMmMuMDIuMTE4LjAyLjIxNy4wMzkuMzE1LDAsLjIxNy0uMDIuNDUzLDAsLjY2OS4wMi40NTMuMi44NjYuMjE3LDEuMzM5YTMuMjYsMy4yNiwwLDAsMCwuNTMyLDEuNDc3Yy4xLjE1OC4yMzYuMTc3LjMuMzc0YTQuMTYzLDQuMTYzLDAsMCwxLC4wMzkuNzA5LDkuNjg1LDkuNjg1LDAsMCwwLC44MjcsMi43NTd2LjAyaDBjLjUxMi0uMDc5LDEuMDQ0LS4yNzYsMS43MTMtLjM3NCwxLjI0MS0uMTc3LDIuOTU0LS4xLDQuMDU2LS4yLDIuOC0uMjU2LDQuMzEyLDEuMTQyLDYuODEzLjU3MVY3LjMyOEEzLjU1MSwzLjU1MSwwLDAsMCwyNi40NTYsMy44Wk0xNi4wMiwyMC4zNDNaXCIgc3R5bGU9XCJmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk04LjQ3OCwyMy41NzNjLjItLjQzMy4zMTUtLjkwNi40NzMtMS4zMzlhMi4yNzcsMi4yNzcsMCwwLDEsLjgwNy0xLjIyMSw3LjMsNy4zLDAsMCwwLTEuMDgzLS4xYy0uMjM2LS4wMi0uNDczLS4wNTktLjcwOS0uMS0uNDMzLS4wNzktLjkyNS0uMTc3LTEuMzM5LS4yNzYtLjI1Ni0uMDU5LTEuMTQyLS4zNzQtMS4zMTktLjQ1My0uNDUzLS4yLS43NDgtLjc2OC0xLjA4My0uNzA5YS43OTQuNzk0LDAsMCwwLS41NzEuMzM1LDMuNzQzLDMuNzQzLDAsMCwwLS4yMzYuNzA5Yy0uMS4yMzYtLjI1Ni40NzMtLjM3NC43MDlhMTIuMjg5LDEyLjI4OSwwLDAsMC0uOTI1LDEuMmMtLjAzOS4xLS4wNTkuMi0uMS4zdjQuNzQ1YTUuNCw1LjQsMCwwLDEsLjcyOS4xNTgsOC43Nyw4Ljc3LDAsMCwwLDQuMzcxLjM1NGwuMTc3LS4wMmgwYy4xMzgtLjMxNS4yNTYtMS4zNTkuMzU0LTEuNjc0YTUuNDk0LDUuNDk0LDAsMCwwLC4yMTctLjY4OSwyLjY2OCwyLjY2OCwwLDAsMC0uMDItLjY4OUM3LjgwOSwyNC4yNDIsOC4yNjIsMjQuMDQ1LDguNDc4LDIzLjU3M1pcIiBzdHlsZT1cImZpbGw6dXJsKCNjKVwiLz5gLFxuICBcIk9wZW5DTFwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMjkuNjYyXCIgeTE9XCIxOC4wMjZcIiB4Mj1cIjIxLjQxOVwiIHkyPVwiMjAuMjM0XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCJyZWRcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZmY2YTZhXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiMjQuNTg4XCIgeTE9XCI5Ljc0OFwiIHgyPVwiMTguNzc2XCIgeTI9XCIxNS41NlwiIHhsaW5rOmhyZWY9XCIjYVwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJjXCIgeDE9XCIxOC40NjZcIiB5MT1cIjYuNjE5XCIgeDI9XCIxNS45MjRcIiB5Mj1cIjEzLjYwM1wiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2NmYTQwY1wiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNlZGQ0ODBcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJkXCIgeDE9XCIxMy4xN1wiIHkxPVwiNi41MVwiIHgyPVwiMTMuMTdcIiB5Mj1cIjEyLjk5N1wiIHhsaW5rOmhyZWY9XCIjY1wiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJlXCIgeDE9XCI4LjgwOFwiIHkxPVwiOC40ODZcIiB4Mj1cIjEwLjk4OFwiIHkyPVwiMTMuMTYxXCIgeGxpbms6aHJlZj1cIiNjXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImZcIiB4MT1cIjUuNTA1XCIgeTE9XCIxMS40NzdcIiB4Mj1cIjguNTQ2XCIgeTI9XCIxNC41MTlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMxMWExMTlcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMzdhZTNkXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiZ1wiIHgxPVwiMy42MzlcIiB5MT1cIjE0LjI4NVwiIHgyPVwiNi44ODNcIiB5Mj1cIjE2LjE1OFwiIHhsaW5rOmhyZWY9XCIjZlwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJoXCIgeDE9XCIyLjI2NVwiIHkxPVwiMTcuNzk5XCIgeDI9XCI1LjM3OVwiIHkyPVwiMTguOTMzXCIgeGxpbms6aHJlZj1cIiNmXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImlcIiB4MT1cIjJcIiB5MT1cIjIxLjYxNFwiIHgyPVwiNC44MzNcIiB5Mj1cIjIxLjYxNFwiIHhsaW5rOmhyZWY9XCIjZlwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJqXCIgeDE9XCIyMC42NjJcIiB5MT1cIjE4Ljk0OVwiIHgyPVwiMTguMDI2XCIgeTI9XCIxNy40MjhcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwLjVcIiBzdG9wLWNvbG9yPVwiIzY0NjQ2NFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNjYmNiY2JcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJrXCIgeDE9XCIxNi4wMjFcIiB5MT1cIjI1LjI2NFwiIHgyPVwiMTYuMDIxXCIgeTI9XCIyMi42OTFcIiB4bGluazpocmVmPVwiI2pcIi8+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfb3BlbmNsPC90aXRsZT48cGF0aCBkPVwiTTI3LjgyOCwxMy41NzRhMTQuNjc2LDE0LjY3NiwwLDAsMSwuODM1LDEuNTQyQTE0Ljk2NCwxNC45NjQsMCwwLDEsMjkuOTIsMjIuOUgyMi4xMzNhMTAuMzc3LDEwLjM3NywwLDAsMC0uOTY3LTQuNDI0WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMTcuNzUzLDE0LjQzYTEwLjA3NCwxMC4wNzQsMCwwLDEsMi43NzIsMi44NzhsNi4yNzMtNS4yYTE1LjU0LDE1LjU0LDAsMCwwLTQuOTg4LTQuMTVaXCIgc3R5bGU9XCJmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk0xNC43ODEsMTMuMDg2YTguODI3LDguODI3LDAsMCwxLDIuMzc2Ljk2NkwyMC42NjYsNy40M2ExMi43LDEyLjcsMCwwLDAtNC42NDUtLjk1MlpcIiBzdHlsZT1cImZpbGw6dXJsKCNjKVwiLz48cGF0aCBkPVwiTTE0LjM2NCwxM2wuNjEyLTYuNDg4YTEyLjQ2LDEyLjQ2LDAsMCwwLTMuNjExLjgxM2wuNTA3LDUuNjM4QTcuMjE5LDcuMjE5LDAsMCwxLDE0LjM2NCwxM1wiIHN0eWxlPVwiZmlsbDp1cmwoI2QpXCIvPjxwYXRoIGQ9XCJNMTAuOTQ4LDEzLjE3OWwtLjY4My01LjM3M0ExNC41ODgsMTQuNTg4LDAsMCwwLDcuNzczLDkuMzc5bDEuNzQsNC40MmE3LjUxOCw3LjUxOCwwLDAsMSwxLjQzNS0uNjE5XCIgc3R5bGU9XCJmaWxsOnVybCgjZSlcIi8+PHBhdGggZD1cIk04Ljg2LDE0LjIwNiw2LjQ3NCwxMC41MTFjLS40NTMuNDQtLjc5LjgyLTEuMDA2LDEuMDc0cS0uMjI3LjI2Ny0uNDM2LjUzOEw3LjQ4LDE1LjM4N2E4Ljg3LDguODcsMCwwLDEsMS4zOC0xLjE4MlwiIHN0eWxlPVwiZmlsbDp1cmwoI2YpXCIvPjxwYXRoIGQ9XCJNNy4wNDYsMTUuODc1LDQuMzM1LDEzLjExMmExNC4yNTksMTQuMjU5LDAsMCwwLTEuMjUsMi40MjlsMy4wMDcsMS43MWE5LjgyNiw5LjgyNiwwLDAsMSwuOTU0LTEuMzc2XCIgc3R5bGU9XCJmaWxsOnVybCgjZylcIi8+PHBhdGggZD1cIk01LjUyNywxOC4zOTNsLTIuNzctMS45NDVhMTUuNDUyLDE1LjQ1MiwwLDAsMC0uNjMsMi44M2wyLjkwNi42MDdhMTAuMzQzLDEwLjM0MywwLDAsMSwuNDk0LTEuNDkyXCIgc3R5bGU9XCJmaWxsOnVybCgjaClcIi8+PHBhdGggZD1cIk00LjgzMywyMC45YTEwLjY4NCwxMC42ODQsMCwwLDAtLjEsMkgyLjA5M2ExNC4zMzMsMTQuMzMzLDAsMCwxLS4wNjQtMi41NzNaXCIgc3R5bGU9XCJmaWxsOnVybCgjaSlcIi8+PHBhdGggZD1cIk0yMi41NTEsMTIuNDc4LDE0Ljc1MSwyMy4xQTEuNTQ0LDEuNTQ0LDAsMCwxLDE3LjUsMjQuNDI4WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2opXCIvPjxwYXRoIGQ9XCJNMTYuMDIxLDI1LjUyMmExLjU0NCwxLjU0NCwwLDEsMSwxLjA5Mi0uNDUyQTEuNTMzLDEuNTMzLDAsMCwxLDE2LjAyMSwyNS41MjJaXCIgc3R5bGU9XCJmaWxsOiM2NDY0NjRcIi8+PHBhdGggZD1cIk0xNy4zMDgsMjMuOTc4YTEuMjg3LDEuMjg3LDAsMSwxLS4zNzctLjkxQTEuMjgzLDEuMjgzLDAsMCwxLDE3LjMwOCwyMy45NzhaXCIgc3R5bGU9XCJmaWxsOnVybCgjaylcIi8+YCxcbiAgXCJQYXNjYWxcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjE2XCIgeTE9XCItMC40NDNcIiB4Mj1cIjE2XCIgeTI9XCIyMi4wNDJcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwLjAyMVwiIHN0b3AtY29sb3I9XCIjZmYwYzE1XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzlhMGMwZlwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2RlbHBoaTwvdGl0bGU+PGNpcmNsZSBjeD1cIjE2XCIgY3k9XCIxNlwiIHI9XCIxNFwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMjcuNTQ1LDE2LjI0M0g0LjkyNGEuOTE0LjkxNCwwLDAsMC0xLjA5Mi44MnEuMDMzLjQyOS4xLjg0OWExMi40LDEyLjQsMCwwLDAsMjQuNTMyLDBxLjA3NS0uNS4xMDgtMS4wMjFDMjguNDc4LDE2LjUyMywyOC4yMTEsMTYuMjA3LDI3LjU0NSwxNi4yNDNaXCIgc3R5bGU9XCJmaWxsOiNmZjY0NDNcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjE4LjQ4IDExLjY0IDIzLjcwNyA3LjI2NiAxOS43ODcgNS44OCAxNiAxMS4wNTNcIiBzdHlsZT1cImZpbGw6I2ZhZTdlMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWxpbmUgcG9pbnRzPVwiMTUuNjggMTEuMDI2IDE4LjY0IDUuODggMTQuODUzIDUuODggMTMuMzA3IDExLjI5M1wiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCIxMy4wNCAxMS4zNzMgMTMuNiA2LjcwNiAxMC41ODcgNy45NiAxMS4wMTMgMTIuNzZcIiBzdHlsZT1cImZpbGw6I2ZhZTdlMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWxpbmUgcG9pbnRzPVwiMTAuNzQ3IDEzIDkuNzg3IDguNzYgNy43MDcgMTAuODQgOS42NTMgMTQuNjhcIiBzdHlsZT1cImZpbGw6I2ZhZTdlMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWxpbmUgcG9pbnRzPVwiOS4zODcgMTUuMDUzIDcuNDkzIDEyLjM3NiA2LjY0IDE0LjQ2NiA5LjA0IDE2LjUxN1wiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCI5LjA0IDE2Ljc1NyA2LjY0IDE1LjIxMyA2LjQ4IDE3LjQgOS4yIDE4LjMzM1wiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCI5LjIyNyAxOC44NDYgNi42NCAxOC4wNCA3LjIyNyAxOS44IDkuNTQ3IDE5LjhcIiBzdHlsZT1cImZpbGw6I2ZhZTdlMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWxpbmUgcG9pbnRzPVwiOS43MDcgMjAuMDkzIDcuNzA3IDIwLjM4NiA4LjYyNyAyMS43NDYgMTAuMjY3IDIxXCIgc3R5bGU9XCJmaWxsOiNmYWU3ZTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0yMC4wMjMsMTMuMDg5YTYuNjEsNi42MSwwLDAsMC00LjUzLTJBNi4yOTMsNi4yOTMsMCwwLDAsMTEuMywyMi4wN2w0Ljk0MS4xMjktMi4wOC00LjE2WlwiIHN0eWxlPVwiZmlsbDojZWVlO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTYuNSwyMi4zNjZsLTUuMjY3LS4xMzgtLjA0NC0uMDM5YTYuNDUzLDYuNDUzLDAsMCwxLDQuMy0xMS4yNjQsNi43ODcsNi43ODcsMCwwLDEsNC42NDMsMi4wNWwuMTIzLjEyMy01LjksNC45ODJabS01LjE0LS40NTUsNC42MTYuMTIxTDEzLjk2MSwxOGw1LjgyNS00LjkxOWE2LjQzLDYuNDMsMCwwLDAtNC4yOTItMS44MzUsNi4xMzMsNi4xMzMsMCwwLDAtNC4xMzEsMTAuNjY3WlwiIHN0eWxlPVwiZmlsbDojZWU0YjJlXCIvPjxwYXRoIGQ9XCJNMTIuMDEzLDIwLjQ5M2MtNC4xNzMtNS44MTMsMi4xMDktOC4xNzIsMi40NzgtOC40NTMuNDUxLS4zNDQtNy41OSwxLjc4NS0zLjIyNiw4Ljg4WlwiIHN0eWxlPVwiZmlsbDojZjA0ZTMxO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIwLjcyIDEyLjYgMTMuNTIgMTcuNTY3IDEzLjczMyAxOC41NzMgMjEuNDY3IDE3LjAyNiAyMC43MiAxMi42XCIgc3R5bGU9XCJmaWxsOiNlZWU7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xMy42MSwxOC43NjEsMTMuMzQxLDE3LjVsNy40OTUtNS4xNy44MTQsNC44MjhabS4wODktMS4xMjMuMTU4Ljc0N0wyMS4yODMsMTYuOSwyMC42LDEyLjg3NFpcIiBzdHlsZT1cImZpbGw6I2VlNGIyZVwiLz48cGF0aCBkPVwiTTE1LjcyMywyMS4zMTljLTMuOTMtLjY2OC00LjI4My40MjgtNC4yODMuNDI4TDEwLjI2NywyNC40NHMxLjEyLS45MDcsNS40OTMsMGwuNzYtMS4zODhaXCIgc3R5bGU9XCJmaWxsOiNkZDBjMTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xNC4xMjIsMjEuNmMtLjAyLS4yLTEuMS0uMzE5LTEuNjc3LS4xMjMtLjczMi4yNDktMS4yMTksMS4xNDItMS4wNDUsMS4yMTNhMS45NzUsMS45NzUsMCwwLDEsMS4xMjUtLjk4NkMxMy40NDcsMjEuNDkzLDE0LjE0MiwyMS44LDE0LjEyMiwyMS42WlwiIHN0eWxlPVwiZmlsbDojZmY2ZTRmO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTUuNTIsMTguNjA2YTExLjEsMTEuMSwwLDAsMCwxLjU0NywxLjQ4Nyw2LjksNi45LDAsMCwxLDIuNzIsNC4xMDdjLS4xMDcsMS4wNjctMS45NzMsMS43Ni0xLjk3MywxLjc2bC0zLjMwNy03LjE5NFpcIiBzdHlsZT1cImZpbGw6I2VlZTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTE3LjczLDI2LjE2MWwtMy40NTctNy41MjEsMS4zMi0uMjA4LjA1Ny4wODFhMTAuODY5LDEwLjg2OSwwLDAsMCwxLjUxMiwxLjQ1MSw3LDcsMCwwLDEsMi43ODIsNC4yMDdsMCwuMDIyLDAsLjAyMmMtLjExNSwxLjE1My0yLDEuODY0LTIuMDc3LDEuODk0Wm0tMi45OS03LjI3LDMuMTU1LDYuODYzYy40MTQtLjE3OCwxLjYzLS43NjMsMS43My0xLjU0OGE2Ljc5Myw2Ljc5MywwLDAsMC0yLjY0OC0zLjk4MWwtLjAxLS4wMDdhMTEuOTQsMTEuOTQsMCwwLDEtMS41MTctMS40MzlaXCIgc3R5bGU9XCJmaWxsOiNlZTRiMmVcIi8+PHBhdGggZD1cIk0yOCwxMi43NDJjLjAyNS4zOTQuMDM0Ljc5Mi4wMjUsMS4xOTRhMTMuOTQ2LDEzLjk0NiwwLDAsMS0xOS45LDEyLjNBMTIuODYsMTIuODYsMCwwLDAsMjgsMTIuNzQyWlwiIHN0eWxlPVwiZmlsbDojZWFlMGRmO2ZpbGwtcnVsZTpldmVub2RkO29wYWNpdHk6MC4yXCIvPjxwYXRoIGQ9XCJNMi4zODMsMTMuODkzQTEzLjk0MSwxMy45NDEsMCwwLDEsMjUuNyw1Ljgzcy01LjAwOSw1Ljk3OS0xMC41ODQsNy45MDdTMi4zODMsMTMuODkzLDIuMzgzLDEzLjg5M1pcIiBzdHlsZT1cImZpbGw6I2VhZTBkZjtvcGFjaXR5OjAuMlwiLz48cGF0aCBkPVwiTTMuNjE4LDE4LjY5NGMtLjA0NC0uMzkyLS4wNzItLjc5LS4wODMtMS4xOTFDMy4zMjksOS44MDcsMTAuMDEyLDQuMiwxNy43MDgsMy45OTFhMTQuMiwxNC4yLDAsMCwxLDUuNzE5LDEuNDU4LDEzLjEyOCwxMy4xMjgsMCwwLDAtNy4xODgtMi4zNjljLTcuMS4xOS0xMy4zMDYsNS4zLTEzLjExNiwxMi40QTEyLjg3MywxMi44NzMsMCwwLDAsMy42MTgsMTguNjk0WlwiIHN0eWxlPVwiZmlsbDojZWFlMGRmO2ZpbGwtcnVsZTpldmVub2RkO29wYWNpdHk6MC4yXCIvPmAsXG4gIFwiUGVybFwiOiBgPHBhdGggZD1cIk0yOS4yNSwxMy44YTYuODg4LDYuODg4LDAsMCwwLS43NDItMi4yNjgsMS4wMTEsMS4wMTEsMCwwLDAtLjE3Mi0uMjMzLDkuNDcxLDkuNDcxLDAsMCwxLTEuNzI1LTIuNCw4LjYzMiw4LjYzMiwwLDAsMC0xLjM5NS0yLjM4MkE2LjkwNiw2LjkwNiwwLDAsMSwyNC4xLDQuNjQ0LDQuNTcyLDQuNTcyLDAsMCwwLDIxLjk5LDEuNzI3YTEuMDA5LDEuMDA5LDAsMCwwLS4xLS4wNTQsOC44ODYsOC44ODYsMCwwLDAtMS4zLS40NjgsMS4wMjIsMS4wMjIsMCwwLDAtLjI2My0uMDM1LDEuMDA5LDEuMDA5LDAsMCwwLS4yLjAyMSw1LjYwNyw1LjYwNywwLDAsMS0uODA3LjEwN2MtLjA1LDAtLjEtLjAwNi0uMTQ5LS4wMDZhMi44NDIsMi44NDIsMCwwLDAtMS40MTYuNDUzYy0uMDk0LjA1Mi0uMTg4LjEwNi0uMjg0LjE0OXEtLjA0MS4wMTgtLjA3OC4wMzlBMS42MzcsMS42MzcsMCwwLDEsMTcuMDY2LDJhMy4xMDksMy4xMDksMCwwLDAtLjc3Mi4xOTQsMSwxLDAsMCwwLS41MDguNDgzLDIuMTg0LDIuMTg0LDAsMCwxLS40NjkuNUE0LjM4Miw0LjM4MiwwLDAsMCwxNC41NTUsNGEuOTY0Ljk2NCwwLDAsMC0uMTE2LjIzNCw0LjY4Nyw0LjY4NywwLDAsMS0xLjU3NCwyLjIsNi40NzEsNi40NzEsMCwwLDAtLjguNjEzLDIuNzM0LDIuNzM0LDAsMCwwLS42MjctMS42MzRjLS4wMTctLjAxOS0uMDM1LS4wMzgtLjA1My0uMDU2bDAtLjAxNGEyLjM3OCwyLjM3OCwwLDAsMC0uMTM1LS41ODYsMSwxLDAsMCwwLS4xMzItLjIzNkE1LjE2Nyw1LjE2NywwLDAsMCw5LjUxMSwzLjExM2EuOTg4Ljk4OCwwLDAsMC0uMzQ2LS4xMTksMS41LDEuNSwwLDAsMS0uMTQ4LS4wNzcsMi4wNiwyLjA2LDAsMCwwLTEtLjMxMSwxLjQ3NiwxLjQ3NiwwLDAsMC0uNjgxLjE2Ni45ODcuOTg3LDAsMCwwLS4yNzQuMjA2LDEuMzI4LDEuMzI4LDAsMCwxLS4xMjUuMDYzLDEuOSwxLjksMCwwLDAtLjkwOC43NzgsMi41MzksMi41MzksMCwwLDAtLjU0MS4xMDYsMS42NTYsMS42NTYsMCwwLDEtLjM4My4wNTcsMi4zLDIuMywwLDAsMC0xLjUuNTQ1bC0uMTA2LjFhMi41MzMsMi41MzMsMCwwLDAtMSwyLjUyNSwxLjA4LDEuMDgsMCwwLDAsLjA2OC4xNjVBMi4yOTQsMi4yOTQsMCwwLDAsNC40NDYsOC40NzhjLS4xLjIzOC0uMi40NzMtLjMxNC43YTEuMDA5LDEuMDA5LDAsMCwwLS4wODcuMjkzQTExLjA1MiwxMS4wNTIsMCwwLDAsNCwxMi4wMzljMCwuMDIsMCwuMDQuMDA3LjA2YTUuMjc4LDUuMjc4LDAsMCwxLC4wNDEuNTQ3LDIuOTI2LDIuOTI2LDAsMCwwLC45MzEsMi40Yy4wMTcuMDE0LjAzNC4wMjYuMDUyLjAzOWwuMDA4LjAzMWEyLjgsMi44LDAsMCwwLC4xNTEuNDQ3LDEuMTg1LDEuMTg1LDAsMCwwLC42MzIuNjE3LDEuMjg5LDEuMjg5LDAsMCwwLC4yNDguNTcxLDEsMSwwLDAsMCwuMzMyLjI3OSwyLjQ1MywyLjQ1MywwLDAsMCwuNDY1LjE3NmwuMDY0LjAxOGEuOTc2Ljk3NiwwLDAsMCwuMTkyLjE3MUE1Ljg3OSw1Ljg3OSwwLDAsMSw3Ljg3MywxOGExLjEzLDEuMTMsMCwwLDAsMS4zNTEuNDI3LDEuNSwxLjUsMCwwLDAsLjc2NS4yMTUsMS40MjEsMS40MjEsMCwwLDAsLjYyNC0uMTQ1bC4xMTQtLjAyNmMuMDI0LjQwOC4wMzMuODE3LjAyOCwxLjIyM2ExLjA0MywxLjA0MywwLDAsMCwuMDI2LjI0MiwxMC43NDQsMTAuNzQ0LDAsMCwxLC4yNjYsMS44MjguOTMxLjkzMSwwLDAsMCwuMDMxLjIsOC40OTIsOC40OTIsMCwwLDEsLjI2OCwxLjgxNWMwLC4wMzEsMCwuMDYzLjAwOC4wOTRhNi4wODMsNi4wODMsMCwwLDEtLjYxLDMuNTc1Ljk5NC45OTQsMCwwLDAtLjA4OS4yNjEsMS4wOTMsMS4wOTMsMCwwLDAtLjIzNC4wNzlsLS4wNS4wMjJhMi4wMTMsMi4wMTMsMCwwLDAtMS4yLDEuMDY1LDEuMzIyLDEuMzIyLDAsMCwwLC4wNzQsMS4wNTQsMSwxLDAsMCwwLC4zMjQuMzcxLDMuNTQ3LDMuNTQ3LDAsMCwwLDMuNTA5LjMsMS41NDYsMS41NDYsMCwwLDAsLjgyOS0xLjY1M2wtLjAwNS0uMDY3YS45ODkuOTg5LDAsMCwwLC4wNTYtLjE1OCwxMS4xODYsMTEuMTg2LDAsMCwwLC4yODgtMi4wNjgsOC45MzksOC45MzksMCwwLDEsLjI1OS0xLjgyMiw0LjcyNyw0LjcyNywwLDAsMCwuMzg5LTEuNTg4bC4wNDIuMDQ4YTEyLjY2MSwxMi42NjEsMCwwLDAsMS4yNTUsMS4xMjksMTAuMywxMC4zLDAsMCwxLDEuMS45ODlsLS4wMTEuMDM4YS41MzIuNTMyLDAsMCwxLS4zNDIuMzU5bC0uMDQ5LjAxN2ExLjkyMSwxLjkyMSwwLDAsMC0xLjE4NCwxLjMzNCwxLjMxMywxLjMxMywwLDAsMCwuNDUyLDEuMjM0LDEsMSwwLDAsMCwuNDQxLjIyMiw0LjkwOCw0LjkwOCwwLDAsMCwyLjczNS0uMTgxLDEuNTU2LDEuNTU2LDAsMCwwLC4yNjYtLjEyNCwxLjQxMSwxLjQxMSwwLDAsMCwuOTcuMzcyLDIuMzI2LDIuMzI2LDAsMCwwLDEtLjI3NGMuMDQ5LS4wMjMuMS0uMDQ1LjE0LS4wNjJhMSwxLDAsMCwwLC42MzctLjg2NCw0LjU1Myw0LjU1MywwLDAsMC0uNDY4LTIuMzQzLDEuNTYsMS41NiwwLDAsMC0uNTEtLjYsMTAuOCwxMC44LDAsMCwxLDEuMy0yLjE1LDIuMTkzLDIuMTkzLDAsMCwwLC40NTEtMi4wMjYsMi41MTksMi41MTksMCwwLDEtLjA0My0uMzk0LDEuMDQ2LDEuMDQ2LDAsMCwwLDAtLjE0OCw1Ljc1Niw1Ljc1NiwwLDAsMSwuMDEyLTEuMjc5LDcuMTYxLDcuMTYxLDAsMCwwLC45NTEsMS43OTMsNy44OTIsNy44OTIsMCwwLDEsLjEzMywxLjEsMTAuNzMzLDEwLjczMywwLDAsMCwuMTMzLDEuMTg2LDkuMzYsOS4zNiwwLDAsMS0uMjI0LDMuOSwxLDEsMCwwLDAtLjAzMi4zNGgwYS45OC45OCwwLDAsMC0uMS4xNzksMi4yMzgsMi4yMzgsMCwwLDAtLjMxMiwxLjIzNSwxLjAwNywxLjAwNywwLDAsMCwuMDM5LjIsMS4zMTUsMS4zMTUsMCwwLDAsMS4zMjguOTYzYy4wODYsMCwuMTc3LS4wMDYuMjY4LS4wMTRsLjAxOSwwLC4wMzguMDEzYTIuMTA5LDIuMTA5LDAsMCwwLDIuNTE3LTEuMDg4LDEsMSwwLDAsMCwuMDU4LS43MzUsNS4yODUsNS4yODUsMCwwLDEtLjIwOC0xLjAyNywxLjAxMSwxLjAxMSwwLDAsMC0uMDQ2LS4yMTcsNi40Nyw2LjQ3LDAsMCwxLS4yMjEtMy4yMiwxLjExMiwxLjExMiwwLDAsMCwuMDE1LS4xMTQsMy45MDcsMy45MDcsMCwwLDEsLjA3NC0uNDQzLDIuNzM4LDIuNzM4LDAsMCwwLS4xOTMtMi4xLDQuMzM5LDQuMzM5LDAsMCwxLC4wMjEtLjQ3NmMuMDExLS4xNDcuMDIzLS4zLjAyNy0uNDYzYTEuNTksMS41OSwwLDAsMCwuODYyLS44NTEsMTIuODMsMTIuODMsMCwwLDAsLjk0Ny0yLjIzLDEuNzE5LDEuNzE5LDAsMCwwLC4xNzItMS4xODUsMS4yMzQsMS4yMzQsMCwwLDAsLjExMS0uMjUxQTEuNDY3LDEuNDY3LDAsMCwwLDI5LjI1LDEzLjhaTTE4Ljg2MywyMi43NjhjLS4wMjYsMC0uMDUzLS4wMDgtLjA4LS4wMWwtLjAyNCwwYTIuNzQ4LDIuNzQ4LDAsMCwxLS4yMzYtLjMyM2MtLjA1OS0uMDg4LS4xMTgtLjE3NS0uMTc4LS4yNThhMi4yNTMsMi4yNTMsMCwwLDAsLjIwOC0uMjM0LDEuMjU1LDEuMjU1LDAsMCwwLC42MjktLjMyMUEzLjE4NiwzLjE4NiwwLDAsMSwxOC44NjMsMjIuNzY4WlwiIHN0eWxlPVwiZmlsbDojZWRlZGVkXCIvPjxwYXRoIGQ9XCJNMTkuMjg5LDIuM2MtLjU0OC0uMDY1LS45NjEuMy0xLjQxOS41MDYtLjM2OC4yMDYtLjgxNS4xNTItMS4xODUuMzA5LS4yODIuNTc5LS45NDEuOTA4LTEuMywxLjQ0M2E1LjcsNS43LDAsMCwxLTEuOTQyLDIuNjk0LDUuNDY0LDUuNDY0LDAsMCwwLTIuMzY4LDMuMzk0Yy0uMTQ1LjMtLjEyMi43NDYtLjI3NywxLS41MTEuMTQzLS4yMzktLjUxNi0uMy0uODI1LS4wNzQtLjQ3LjM0MS0uNzcuMzczLTEuMjI2YTEuODM0LDEuODM0LDAsMCwwLC4yMDktMS4wNTNjLS4wNTYtLjgxNC4xODktMS44MDctLjM5My0yLjQ3Ny0uMzQ5LS4yLS4yMzktLjYyMy0uMzY2LS45NDdhNC4yMTQsNC4yMTQsMCwwLDAtMS4zLTEuMTM5Yy0uNDE5LS4wNDEtLjgwNi0uNTQyLTEuMjMyLS4zMjMtLjI2Ni4zMDktLjc2My4zMDUtLjkyMi43MTMtLjEuNTE2LS42ODguMzc0LTEuMDY4LjUtLjQ4OC4xODUtMS4xMTguMDA2LTEuNTE4LjM4Mi0uNDExLjQxLTEuMDM0Ljk2MS0uODM1LDEuNjA2LjQ1Ny44ODIsMS42NDUuNDM4LDIuMzE3Ljk3NEExNy45OSwxNy45OSwwLDAsMSw1LjAzNiw5LjYxYTEwLjA1MSwxMC4wNTEsMCwwLDAtLjA0NCwyLjMzMmMuMTIzLjc3My0uMDgzLDEuNzcyLjYwNiwyLjMxOS4zOC4xMzcuMzU3LjU3Mi41Ljg4Ny4xMzQuMjkuNDI3LS4xMTMuNTQzLjE5My4zMzguMTg0LjAzNy41NjEuMjIuOC4yNjMuMTM3LjYzOS4xMjguODIyLjQyNmE2Ljg0NCw2Ljg0NCwwLDAsMSwuOTc1LjgwNmMuMjMuNDY3LjUzMS0uNDU0Ljc4My0uMTA5LjE3LjI4NS41MDYuNTIyLjgxOS4yODVhMi45OTMsMi45OTMsMCwwLDAsMS4zMjQtLjU1NiwxOC4wMzMsMTguMDMzLDAsMCwxLC4xNzEsMi43MTgsMTEuNzMzLDExLjczMywwLDAsMSwuMjksMiw5LjQwOSw5LjQwOSwwLDAsMSwuMywyLjAzLDcuMTExLDcuMTExLDAsMCwxLS43MDksNC4xNiwxLjAxMiwxLjAxMiwwLDAsMS0uODA3LjhjLS4yOTEuMTMtLjkuMzY2LS42OTIuNzc2YTIuNTQ5LDIuNTQ5LDAsMCwwLDIuNTIuMjE0Yy41MS0uMjQzLjA3My0uODU4LjMzNC0xLjIyNi4zNDMtMS4zLjE3NC0yLjY5MS41NzUtMy45ODVhMy43NjIsMy43NjIsMCwwLDAsLjMtMi4xYy4wNzktLjQ0LS4xMDUtLjk2OS4xODctMS4zMjlhMS44MTMsMS44MTMsMCwwLDEsLjQ4My0xLjIsMTQuNzYyLDE0Ljc2MiwwLDAsMCwuMTQ0LTIuMDI2LDMuMjE0LDMuMjE0LDAsMCwxLDEuMjY3LS4xMjdjLjAxOC4zNzUtLjI3Mi44MTItLjE5LDEuMjM0QTEuOTQ4LDEuOTQ4LDAsMCwxLDE1LjUsMjAuM2EyLjg0OSwyLjg0OSwwLDAsMCwuMTY4LDIuMzA4Yy43ODIuODM5LDEuOCwxLjQzMiwyLjUzNiwyLjMyNy4zMTQuMjA1LjIuNTE3LjAzOC43ODRhMS41MjgsMS41MjgsMCwwLDEtLjk4NywxLjAzNGMtLjMwOC4xMjEtLjgwNi41NjYtLjQ0Mi44ODJhMy45MDYsMy45MDYsMCwwLDAsMi4xNzgtLjE0NGMuNDc2LS4xNzEuMy0uNzM4LjQ4OC0xLjA4OC4zLjIzMy40MjMuNzY1LjcxMSwxLjA2OS4zLjQzMy44MDcuMDczLDEuMTU2LS4wNjJhMy41NDksMy41NDksMCwwLDAtLjM3Mi0xLjg0MmMtLjE2Ny0uMzc4LS44LS4zODUtLjc3LS44NTJhMTEuNzYxLDExLjc2MSwwLDAsMSwxLjcxMi0zYy41MS0uNDc5LjEzLTEuMTkxLjE1OC0xLjhBNi43NjUsNi43NjUsMCwwLDEsMjMuMTU4LDE1LjVhMTUuODg5LDE1Ljg4OSwwLDAsMCwuNjkyLDIuMTQsNi4yMyw2LjIzLDAsMCwwLDEuMSwyLjI0NmMuMjM3LjgxMS4xNzYsMS43MS4zMzEsMi41NTFhMTAuNDQsMTAuNDQsMCwwLDEtLjI0Miw0LjM0N2MuMDQuNTE4LS40NTcuOS0uNDE1LDEuNDA4LjE0LjQ2OS43LjA5My45OS4yOWExLjExLDEuMTEsMCwwLDAsMS4zMjQtLjU3Miw2LjIxMiw2LjIxMiwwLDAsMS0uMjQ3LTEuMjIzLDcuNDU0LDcuNDU0LDAsMCwxLS4yNTUtMy43MTljLjA0Ni0uNjY5LjQ1Ny0xLjUtLjA3My0yLjA3Mi0uMTQ4LS42MTkuMS0xLjI4NS0uMDQ5LTEuOTE1YTEyLjg3NywxMi44NzcsMCwwLDEtLjEyMi00LjkzM2MuMDkzLS4yMjcuMDEzLS42NDkuMjQ3LS43NzVhMS44NTEsMS44NTEsMCwwLDEsLjMxNSwxLjIzMiwzLjcsMy43LDAsMCwxLC4wNzksMi4wODFjLS40MjQuNTMxLS4xNjMsMS4yNDgtLjEwOSwxLjg1LjA2OC40MjIuNTE2LjExOC41ODktLjE0NGExMS44NTEsMTEuODUxLDAsMCwwLC45NDQtMi4yNDFjLjI2OS0uMzU2LjAxNC0uNzcsMC0xLjE0Mi40MTMtLjA0OS4yNTYtLjUwNi4wMzUtLjdhNS45Myw1LjkzLDAsMCwwLS42NjctMi4yLDEwLjQ2NCwxMC40NjQsMCwwLDEtMS45NDEtMi43MjNjLS41MjgtMS42MzktMi4wNDItMi43MjYtMi41NTYtNC4zNzlhMy41NTYsMy41NTYsMCwwLDAtMS42NTItMi4zMTdBNy44ODEsNy44ODEsMCwwLDAsMjAuMzIsMi4xNyw2LjUsNi41LDAsMCwxLDE5LjI4OSwyLjNabS40LDE0LjY2YTM4LjkwNywzOC45MDcsMCwwLDEsLjUsNC4yOTEsNC4xNzUsNC4xNzUsMCwwLDEtLjc2LDIuNTE3Yy0uMTIuNDI1LS40ODYuMDEyLS43NTEtLjAxNi0uNjQzLS4wMTgtLjg4Mi0uNjgzLTEuMjMyLTEuMTA3LS4zNi0uMzQ0LS4xLS44LjEzMy0xLjEzMS4yNTItLjE3OS4zNS0uNTc5LjcwOC0uNTQ4LjQtLjAwNy4zMTYtLjQ4Ny4yNi0uNzQzLjIzOC0uMzYyLjA5Mi0uODkyLjMyOC0xLjI4My40MTktLjE4Mi4yOTQtLjgyLjQ0Mi0xLjE4LjExNS0uMjU2LjAxNy0uNzQ5LjMzNC0uODU0LjAzNy0uMDA2LjA0OS4wMTIuMDQyLjA1MlpcIiBzdHlsZT1cImZpbGw6IzNhM2M1YlwiLz5gLFxuICBcIlBIUFwiOiBgPGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPVwiYVwiIGN4PVwiLTE2LjExNFwiIGN5PVwiMjAuNTMyXCIgcj1cIjE4LjM4NFwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDI2LjUyIC05LjMwNylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMC41XCIgc3RvcC1jb2xvcj1cIiM0YzZiOTZcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMjMxZjIwXCIvPjwvcmFkaWFsR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfcGhwPC90aXRsZT48ZWxsaXBzZSBjeD1cIjE2XCIgY3k9XCIxNlwiIHJ4PVwiMTRcIiByeT1cIjcuMzY1XCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PGVsbGlwc2UgY3g9XCIxNlwiIGN5PVwiMTZcIiByeD1cIjEzLjQ1M1wiIHJ5PVwiNi44MThcIiBzdHlsZT1cImZpbGw6IzYyODBiNlwiLz48cGF0aCBkPVwiTTE4LjcyNSwxOC4ybC42NjctMy40MzRhMS43NTIsMS43NTIsMCwwLDAtLjM3Mi0xLjcxOSwyLjkyOSwyLjkyOSwwLDAsMC0yLS41MjVIMTUuODY3bC4zMzEtMS43YS4yMTkuMjE5LDAsMCwwLS4yMTUtLjI2aC0xLjZhLjIxOS4yMTksMCwwLDAtLjIxNS4xNzdsLS43MDksMy42NDZhMi4wNTEsMi4wNTEsMCwwLDAtLjQ3Ny0xLjA1NCwyLjc4MywyLjc4MywwLDAsMC0yLjItLjgwN0g3LjdhLjIxOS4yMTksMCwwLDAtLjIxNS4xNzdsLTEuNDM0LDcuMzhhLjIxOS4yMTksMCwwLDAsLjIxNS4yNkg3Ljg2OWEuMjE5LjIxOSwwLDAsMCwuMjE1LS4xNzdsLjM0Ny0xLjc4NWgxLjJhNS4xNjcsNS4xNjcsMCwwLDAsMS41NjgtLjIsMy4wNjgsMy4wNjgsMCwwLDAsMS4xNS0uNjg5LDMuNTM4LDMuNTM4LDAsMCwwLC42OC0uODQ0bC0uMjg3LDEuNDc1YS4yMTkuMjE5LDAsMCwwLC4yMTUuMjZoMS42YS4yMTkuMjE5LDAsMCwwLC4yMTUtLjE3N2wuNzg3LTQuMDUxaDEuMDk0Yy40NjYsMCwuNi4wOTMuNjQuMTMzcy4xLjE2NS4wMjUuNTY5bC0uNjM1LDMuMjY1YS4yMTkuMjE5LDAsMCwwLC4yMTUuMjZoMS42MkEuMjE5LjIxOSwwLDAsMCwxOC43MjUsMTguMlpNMTEuMzMsMTUuMzY2YTEuNzQ5LDEuNzQ5LDAsMCwxLS41NjEsMS4wOTIsMi4xNzEsMi4xNzEsMCwwLDEtMS4zMTUuMzIxSDguNzQybC41MTUtMi42NTFoLjkyMWMuNjc3LDAsLjk0OS4xNDUsMS4wNTkuMjY2QTEuMTgxLDEuMTgxLDAsMCwxLDExLjMzLDE1LjM2NlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTI1LjU0NiwxMy4zMzJhMi43ODMsMi43ODMsMCwwLDAtMi4yLS44MDdIMjAuMjU1YS4yMTkuMjE5LDAsMCwwLS4yMTUuMTc3bC0xLjQzNCw3LjM4YS4yMTkuMjE5LDAsMCwwLC4yMTUuMjZoMS42MDhhLjIxOS4yMTksMCwwLDAsLjIxNS0uMTc3bC4zNDctMS43ODVoMS4yYTUuMTY3LDUuMTY3LDAsMCwwLDEuNTY4LS4yLDMuMDY4LDMuMDY4LDAsMCwwLDEuMTUtLjY4OSwzLjQyNSwzLjQyNSwwLDAsMCwxLjA3Ni0xLjkyN0EyLjUxMiwyLjUxMiwwLDAsMCwyNS41NDYsMTMuMzMyWm0tMS42NjcsMi4wMzRhMS43NDksMS43NDksMCwwLDEtLjU2MSwxLjA5MkEyLjE3MSwyLjE3MSwwLDAsMSwyMiwxNi43NzhIMjEuMjlsLjUxNS0yLjY1MWguOTIxYy42NzcsMCwuOTQ5LjE0NSwxLjA1OS4yNjZBMS4xODEsMS4xODEsMCwwLDEsMjMuODc5LDE1LjM2NlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTEwLjE3OCwxMy45MDhhMS42NDUsMS42NDUsMCwwLDEsMS4yMjEuMzM4LDEuMzQsMS4zNCwwLDAsMSwuMTQ1LDEuMTYxLDEuOTQ1LDEuOTQ1LDAsMCwxLS42NDIsMS4yMjNBMi4zNjEsMi4zNjEsMCwwLDEsOS40NTQsMTdIOC40NzZsLjYtMy4wODlaTTYuMjYxLDIwLjEyNEg3Ljg2OWwuMzgxLTEuOTYySDkuNjI3YTQuOTMxLDQuOTMxLDAsMCwwLDEuNS0uMTkxLDIuODQsMi44NCwwLDAsMCwxLjA3LS42NDIsMy4yMDcsMy4yMDcsMCwwLDAsMS4wMS0xLjgwOCwyLjMsMi4zLDAsMCwwLS4zODUtMi4wNDQsMi41NjgsMi41NjgsMCwwLDAtMi4wMzUtLjczMkg3LjdaXCIgc3R5bGU9XCJmaWxsOiMwMDAwMDRcIi8+PHBhdGggZD1cIk0xNC4zODcsMTAuNzgyaDEuNkwxNS42LDEyLjc0NGgxLjQyMWEyLjc2NywyLjc2NywwLDAsMSwxLjg1LjQ2OCwxLjU0OCwxLjU0OCwwLDAsMSwuMzA1LDEuNTE2bC0uNjY3LDMuNDM0SDE2Ljg5bC42MzUtMy4yNjVhLjg4Ni44ODYsMCwwLDAtLjA4LS43NiwxLjEyMSwxLjEyMSwwLDAsMC0uOC0uMkgxNS4zN2wtLjgyMiw0LjIyOGgtMS42WlwiIHN0eWxlPVwiZmlsbDojMDAwMDA0XCIvPjxwYXRoIGQ9XCJNMjIuNzI3LDEzLjkwOGExLjY0NSwxLjY0NSwwLDAsMSwxLjIyMS4zMzgsMS4zNCwxLjM0LDAsMCwxLC4xNDUsMS4xNjEsMS45NDUsMS45NDUsMCwwLDEtLjY0MiwxLjIyM0EyLjM2MSwyLjM2MSwwLDAsMSwyMiwxN2gtLjk3OGwuNi0zLjA4OVpNMTguODEsMjAuMTI0aDEuNjA4bC4zODEtMS45NjJoMS4zNzdhNC45MzEsNC45MzEsMCwwLDAsMS41LS4xOTEsMi44NCwyLjg0LDAsMCwwLDEuMDctLjY0MiwzLjIwNywzLjIwNywwLDAsMCwxLjAxLTEuODA4LDIuMywyLjMsMCwwLDAtLjM4NS0yLjA0NCwyLjU2OCwyLjU2OCwwLDAsMC0yLjAzNS0uNzMySDIwLjI0NFpcIiBzdHlsZT1cImZpbGw6IzAwMDAwNFwiLz5gLFxuICBcIlBML1NRTFwiOiBgPHBhdGggZD1cIk04LjU2MiwxNS4yNTZBMjEuMTU5LDIxLjE1OSwwLDAsMCwxNiwxNi40NDlhMjEuMTU5LDIxLjE1OSwwLDAsMCw3LjQzOC0xLjE5NGMxLjg2NC0uNzI3LDIuNTI1LTEuNTM1LDIuNTI1LTJWOS43YTEwLjM1NywxMC4zNTcsMCwwLDEtMi4wODQsMS4wNzZBMjIuMjkzLDIyLjI5MywwLDAsMSwxNiwxMi4wNzhhMjIuMzYsMjIuMzYsMCwwLDEtNy44NzktMS4zQTEwLjI4LDEwLjI4LDAsMCwxLDYuMDM3LDkuN3YzLjU1QzYuMDM3LDEzLjcyNCw2LjcsMTQuNTI4LDguNTYyLDE1LjI1NlpcIiBzdHlsZT1cImZpbGw6cmVkXCIvPjxwYXRoIGQ9XCJNOC41NjIsMjEuOTYxYTE1LjYxMSwxNS42MTEsMCwwLDAsMi42Ljc0MUEyNC45LDI0LjksMCwwLDAsMTYsMjMuMTU1YTI0LjksMjQuOSwwLDAsMCw0LjgzOC0uNDUyLDE1LjYxNCwxNS42MTQsMCwwLDAsMi42LS43NDFjMS44NjQtLjcyNywyLjUyNS0xLjUzNSwyLjUyNS0ydi0zLjM5YTEwLjcwNiwxMC43MDYsMCwwLDEtMS42OTIuODI1QTIzLjQ5LDIzLjQ5LDAsMCwxLDE2LDE4Ljc0YTIzLjQ5LDIzLjQ5LDAsMCwxLTguMjcxLTEuMzQ4LDEwLjgyOSwxMC44MjksMCwwLDEtMS42OTItLjgyNVYxOS45NkM2LjAzNywyMC40MjYsNi43LDIxLjIzMSw4LjU2MiwyMS45NjFaXCIgc3R5bGU9XCJmaWxsOnJlZFwiLz48cGF0aCBkPVwiTTE2LDMwYzUuNSwwLDkuOTYzLTEuNzQ0LDkuOTYzLTMuODk0VjIzLjI2OWExMC41LDEwLjUsMCwwLDEtMS41MzUuNzYybC0uMTU3LjA2M0EyMy40ODcsMjMuNDg3LDAsMCwxLDE2LDI1LjQ0NWEyMy40MjIsMjMuNDIyLDAsMCwxLTguMjcxLTEuMzUxYy0uMDU0LS4wMi0uMTA2LS4wNDMtLjE1Ny0uMDYzYTEwLjUsMTAuNSwwLDAsMS0xLjUzNS0uNzYydjIuODM3QzYuMDM3LDI4LjI1NiwxMC41LDMwLDE2LDMwWlwiIHN0eWxlPVwiZmlsbDpyZWRcIi8+PGVsbGlwc2UgY3g9XCIxNlwiIGN5PVwiNS44OTRcIiByeD1cIjkuOTYzXCIgcnk9XCIzLjg5NFwiIHN0eWxlPVwiZmlsbDpyZWRcIi8+YCxcbiAgXCJQbGFpbiB0ZXh0XCI6IGA8cGF0aCBkPVwiTTIyLjAzOCwySDYuMzc1YTEuNzU1LDEuNzU1LDAsMCwwLTEuNzUsMS43NXYyNC41QTEuNzU1LDEuNzU1LDAsMCwwLDYuMzc1LDMwaDE5LjI1YTEuNzU1LDEuNzU1LDAsMCwwLDEuNzUtMS43NVY2Ljg1NlptLjUyNSwyLjg0NCwxLjY2MywxLjUzMUgyMi41NjNaTTYuMzc1LDI4LjI1VjMuNzVIMjAuODEzVjguMTI1aDQuODEzVjI4LjI1WlwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPjxyZWN0IHg9XCI4LjEyNVwiIHk9XCIxNS4wOTdcIiB3aWR0aD1cIjEzLjA3NlwiIGhlaWdodD1cIjEuNzVcIiBzdHlsZT1cImZpbGw6IzgyOWVjMlwiLz48cmVjdCB4PVwiOC4xMjVcIiB5PVwiMjQuNDM5XCIgd2lkdGg9XCI5Ljc2MlwiIGhlaWdodD1cIjEuNzVcIiBzdHlsZT1cImZpbGw6IzgyOWVjMlwiLz48cmVjdCB4PVwiOC4xMjVcIiB5PVwiMTkuNzYzXCIgd2lkdGg9XCIxNS43NVwiIGhlaWdodD1cIjEuNzVcIiBzdHlsZT1cImZpbGw6IzgyOWVjMlwiLz48cmVjdCB4PVwiOC4xMjVcIiB5PVwiMTAuMjNcIiB3aWR0aD1cIjE1Ljc1XCIgaGVpZ2h0PVwiMS43NVwiIHN0eWxlPVwiZmlsbDojODI5ZWMyXCIvPmAsXG4gIFwiUGxhbnRVTUxcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIi0zMy40MjNcIiB5MT1cIi0yNTAuOTExXCIgeDI9XCItMzMuMzUzXCIgeTI9XCItMjUwLjg1OFwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDM3LjEzNCwgMjYuMDAxLCAxMy41NzUsIC0xOS4zODcsIDQ2NzMuNDczLCAtMzk4Mi4wMTkpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjNzY3Njc2XCIvPjxzdG9wIG9mZnNldD1cIjFcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCItMzIuMTA3XCIgeTE9XCItMjQyLjU2M1wiIHgyPVwiLTMyLjAyOFwiIHkyPVwiLTI0Mi41ODZcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg4MS4wODEsIDU2Ljc3NCwgMTcuMzA2LCAtMjQuNzE1LCA2ODA0LjAyMSwgLTQxNDkuNjQ0KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzAwNzliOVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiY1wiIHgxPVwiLTMzLjI4MlwiIHkxPVwiLTI0My40MjNcIiB4Mj1cIi0zMy4yMjRcIiB5Mj1cIi0yNDMuNDU1XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoNjAuMDAzLCA0Mi4wMTUsIDM0LjE4NCwgLTQ4LjgyLCAxMDM0My4wMDUsIC0xMDQ2OS4wODQpXCIgeGxpbms6aHJlZj1cIiNiXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImRcIiB4MT1cIjEyLjM1NlwiIHkxPVwiMjYuMjY4XCIgeDI9XCIxNC4wMTFcIiB5Mj1cIjI2LjI2OFwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzU5NTk1OVwiLz48c3RvcCBvZmZzZXQ9XCIwLjA4N1wiIHN0b3AtY29sb3I9XCIjNmU2ZTZlXCIvPjxzdG9wIG9mZnNldD1cIjAuMjQyXCIgc3RvcC1jb2xvcj1cIiM4YzhjOGNcIi8+PHN0b3Agb2Zmc2V0PVwiMC40MDVcIiBzdG9wLWNvbG9yPVwiI2E0YTRhNFwiLz48c3RvcCBvZmZzZXQ9XCIwLjU3N1wiIHN0b3AtY29sb3I9XCIjYjViNWI1XCIvPjxzdG9wIG9mZnNldD1cIjAuNzY1XCIgc3RvcC1jb2xvcj1cIiNiZmJmYmZcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjYzJjMmMyXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiZVwiIHgxPVwiMTguMjkxXCIgeTE9XCIyNi4xNzFcIiB4Mj1cIjE5Ljk0NlwiIHkyPVwiMjYuMTcxXCIgeGxpbms6aHJlZj1cIiNkXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImZcIiB4MT1cIjI0LjQ0XCIgeTE9XCIyNi4xNzFcIiB4Mj1cIjI2LjA5NlwiIHkyPVwiMjYuMTcxXCIgeGxpbms6aHJlZj1cIiNkXCIvPjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3BsYW50dW1sPC90aXRsZT48cG9seWdvbiBwb2ludHM9XCIyMC4zMDUgMTcuODcyIDI3LjE2IDIyLjQxOCAyMS43MiAyNS40OTMgMTQuODYxIDIwLjk5OSAyMC4zMDUgMTcuODcyXCIgc3R5bGU9XCJmaWxsOiMxYzBhNDJcIi8+PHBhdGggZD1cIk0yMS43MTYsMjUuNjE5bC0uMDU1LS4wMzYtNy4wMDUtNC41OSw1LjY1My0zLjI0Nyw3LjA1Niw0LjY4Wm0tNi42NS00LjYxMyw2LjY1OCw0LjM2Miw1LjIzMS0yLjk1N0wyMC4zLDE4WlwiLz48cG9seWdvbiBwb2ludHM9XCIyNi40MDEgMTEuOTA5IDI5LjQxOCAxMy41OTIgMjcuMDcgMTUuMDg4IDI0LjIxMyAxMy4yNDcgMjYuNDAxIDExLjkwOVwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMjcuMDY5LDE1LjIxNWwtMy4wNTgtMS45NywyLjM4Ny0xLjQ2LDMuMjI4LDEuOFptLTIuNjU0LTEuOTY2TDI3LjA3LDE0Ljk2LDI5LjIwOCwxMy42bC0yLjgtMS41NjVaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE0LjQ5OCAxNy44MDcgMjEuMzU0IDIyLjM1NCAxNS45MTQgMjUuNDI5IDkuMDU1IDIwLjkzNSAxNC40OTggMTcuODA3XCIgc3R5bGU9XCJmaWxsOiNmZmJkM2ZcIi8+PHBhdGggZD1cIk0xNS45MSwyNS41NTRsLS4wNTUtLjAzNkw4Ljg1LDIwLjkyOSwxNC41LDE3LjY4MWw3LjA1Niw0LjY4Wk05LjI2LDIwLjk0MSwxNS45MTgsMjUuM2w1LjIzMS0yLjk1Ny02LjY1NC00LjQxM1pcIi8+PHBvbHlnb24gcG9pbnRzPVwiNy45OSAxNy45NjYgMTQuOTU0IDIyLjM2NiA5LjU3NyAyNS41MDQgMi4yMTggMjAuODQ5IDcuOTkgMTcuOTY2XCIgc3R5bGU9XCJmaWxsOiNhMTFmNDBcIi8+PHBhdGggZD1cIk05LjU3NSwyNS42MjksMiwyMC44MzhsNi0zLDcuMTY0LDQuNTI3Wk0yLjQzNiwyMC44Niw5LjU4LDI1LjM3OGw1LjE2OC0zLjAxNkw3Ljk4NCwxOC4wODlaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIuMTExIDIxLjAyMSA5LjQ0MyAyNS41MTUgOS40NDMgMjkuMDYzIDIuMTExIDI0LjMzMiAyLjExMSAyMS4wMjFcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTkuNTUsMjkuMjYsMiwyNC4zOTFWMjAuODI5TDkuNTUsMjUuNDU1Wk0yLjIxOCwyNC4yNzRsNy4xMTgsNC41OTJWMjUuNTc1TDIuMjE4LDIxLjIxM1pcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjQuMDcxIDEzLjM0MyAyNy4wMDkgMTUuMjIyIDI3LjAwOSAyMi4xMzEgMjQuMDcxIDIwLjI0NyAyNC4wNzEgMTMuMzQzXCIgc3R5bGU9XCJmaWxsOnVybCgjYylcIi8+PHBhdGggZD1cIk0yNy4wNjMsMjIuMjI5bC0zLjA0NS0xLjk1M1YxMy4yNDVsMy4wNDUsMS45NDdabS0yLjkzOC0yLjAxMiwyLjgzMSwxLjgxNVYxNS4yNTFsLTIuODMxLTEuODFaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI3LjE0OSAyMi41MjYgMjcuMTQ5IDE1LjE5NCAyOS41MTQgMTMuNzc1IDI5LjUxNCAyOS4xNDkgMjguMzMxIDI5LjE0OSA5LjY0NiAyOS4xNDkgOS42NDYgMjUuNjAxIDE1LjA4NiAyMi41MjYgMTUuNzg1IDI1LjYwMSAxNS43OTYgMjUuNjAxIDIxLjQ3MiAyMi41MjYgMjEuODkxIDI1LjYwMSAyMS45NDUgMjUuNjAxIDI3LjE0OSAyMi41MjZcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTI5LjYyMSwyOS4yNTZIOS41MzlWMjUuNTM4bDUuNjItMy4xNzcuNywzLjA4Myw1LjctMy4wODcuNDIyLDMuMSw1LjA2MS0yLjk5MVYxNS4xMzNsMi41OC0xLjU0OFpNOS43NTMsMjkuMDQxSDI5LjQwN1YxMy45NjRsLTIuMTUxLDEuMjl2Ny4zMzJsLS4wNTMuMDMxLTUuMjI5LDMuMDlIMjEuOGwtLjQxMS0zLjAxNC01LjU2NCwzLjAxNEgxNS43bC0uNjg2LTMuMDE4LTUuMjYsMi45NzNaXCIvPjxyZWN0IHg9XCIxMi4zNTZcIiB5PVwiMjUuNDRcIiB3aWR0aD1cIjEuNjU2XCIgaGVpZ2h0PVwiMS42NTZcIiByeD1cIjAuMjE1XCIgcnk9XCIwLjIxNVwiIHN0eWxlPVwiZmlsbDp1cmwoI2QpXCIvPjxwYXRoIGQ9XCJNMTMuOCwyNy4ySDEyLjU3YS4zMjIuMzIyLDAsMCwxLS4zMjItLjMyMlYyNS42NTVhLjMyMi4zMjIsMCwwLDEsLjMyMi0uMzIySDEzLjhhLjMyMi4zMjIsMCwwLDEsLjMyMi4zMjJ2MS4yMjZBLjMyMi4zMjIsMCwwLDEsMTMuOCwyNy4yWk0xMi41NywyNS41NDdhLjEwOC4xMDgsMCwwLDAtLjEwNy4xMDd2MS4yMjZhLjEwOC4xMDgsMCwwLDAsLjEwNy4xMDdIMTMuOGEuMTA4LjEwOCwwLDAsMCwuMTA3LS4xMDdWMjUuNjU1YS4xMDguMTA4LDAsMCwwLS4xMDctLjEwN1pcIi8+PHJlY3QgeD1cIjE4LjI5MVwiIHk9XCIyNS4zNDNcIiB3aWR0aD1cIjEuNjU2XCIgaGVpZ2h0PVwiMS42NTZcIiByeD1cIjAuMjE1XCIgcnk9XCIwLjIxNVwiIHN0eWxlPVwiZmlsbDp1cmwoI2UpXCIvPjxwYXRoIGQ9XCJNMTkuNzMyLDI3LjEwNkgxOC41MDVhLjMyMi4zMjIsMCwwLDEtLjMyMi0uMzIyVjI1LjU1OGEuMzIyLjMyMiwwLDAsMSwuMzIyLS4zMjJoMS4yMjZhLjMyMi4zMjIsMCwwLDEsLjMyMi4zMjJ2MS4yMjZBLjMyMi4zMjIsMCwwLDEsMTkuNzMyLDI3LjEwNlptLTEuMjI2LTEuNjU2YS4xMDguMTA4LDAsMCwwLS4xMDcuMTA3djEuMjI2YS4xMDguMTA4LDAsMCwwLC4xMDcuMTA3aDEuMjI2YS4xMDguMTA4LDAsMCwwLC4xMDctLjEwN1YyNS41NThhLjEwOC4xMDgsMCwwLDAtLjEwNy0uMTA3WlwiLz48cmVjdCB4PVwiMjQuNDRcIiB5PVwiMjUuMzQzXCIgd2lkdGg9XCIxLjY1NlwiIGhlaWdodD1cIjEuNjU2XCIgcng9XCIwLjIxNVwiIHJ5PVwiMC4yMTVcIiBzdHlsZT1cImZpbGw6dXJsKCNmKVwiLz48cGF0aCBkPVwiTTI1Ljg4MSwyNy4xMDZIMjQuNjU1YS4zMjIuMzIyLDAsMCwxLS4zMjItLjMyMlYyNS41NThhLjMyMi4zMjIsMCwwLDEsLjMyMi0uMzIyaDEuMjI2YS4zMjIuMzIyLDAsMCwxLC4zMjIuMzIydjEuMjI2QS4zMjIuMzIyLDAsMCwxLDI1Ljg4MSwyNy4xMDZabS0xLjIyNi0xLjY1NmEuMTA4LjEwOCwwLDAsMC0uMTA3LjEwN3YxLjIyNmEuMTA4LjEwOCwwLDAsMCwuMTA3LjEwN2gxLjIyNmEuMTA4LjEwOCwwLDAsMCwuMTA3LS4xMDdWMjUuNTU4YS4xMDguMTA4LDAsMCwwLS4xMDctLjEwN1pcIi8+PHBhdGggZD1cIk0yNy4yMTUsMTEuMjNjLS4wNTIuMDY5LS40MTctLjI2Mi0uNjUzLS41MjZhNC40MDgsNC40MDgsMCwwLDEtLjUxNi0uNzNBMi42LDIuNiwwLDAsMSwyNS43LDkuMmEyLjM1OCwyLjM1OCwwLDAsMS0uMDUyLS42ODIsMi45NTksMi45NTksMCwwLDEsLjEyOS0uNzQ5LDMuMTQyLDMuMTQyLDAsMCwxLC43ODctMS4yMDcsMTUuNTMyLDE1LjUzMiwwLDAsMCwxLjI4My0xLjQsMy4wNjIsMy4wNjIsMCwwLDAsLjQ3OS0uOTI3LDMuOTc5LDMuOTc5LDAsMCwwLC4xNTEtLjg1NWMuMDE5LS4zNjQtLjAyNS0uNTkzLjAyMy0uNjEzcy4yMTUuMjc0LjI4Ny41NjRhMy4xNjcsMy4xNjcsMCwwLDEtLjQ1OCwyLjEsNi45LDYuOSwwLDAsMS0xLjA5NCwxLjQ0OCwyLjgsMi44LDAsMCwwLS44NDksMS4yMzRBMi40NjYsMi40NjYsMCwwLDAsMjYuMyw4LjhhMy40NjUsMy40NjUsMCwwLDAsLjQ3NiwxLjU0MkMyNy4wNjQsMTAuOTE0LDI3LjI1NiwxMS4xNzUsMjcuMjE1LDExLjIzWlwiIHN0eWxlPVwiZmlsbDojZWEyZDJlXCIvPjxwYXRoIGQ9XCJNMjcuMTkzLDExLjI2NmMtLjEyNCwwLS40OTItLjM2NS0uNjUxLS41NDRhNC40NzgsNC40NzgsMCwwLDEtLjUyLS43MzQsMi42MjgsMi42MjgsMCwwLDEtLjM0Ni0uNzgxLDIuMzc1LDIuMzc1LDAsMCwxLS4wNTMtLjY5LDIuOTc4LDIuOTc4LDAsMCwxLC4xMy0uNzU2LDMuMjA4LDMuMjA4LDAsMCwxLC43OTMtMS4yMTZjLjI5NC0uMzMxLjUtLjUyOC42NTktLjY4NmE0LjM5Myw0LjM5MywwLDAsMCwuNjIyLS43MTEsMy4wNTIsMy4wNTIsMCwwLDAsLjQ3Ni0uOTE5LDMuOTUxLDMuOTUxLDAsMCwwLC4xNS0uODQ5Yy4wMDgtLjE1OSwwLS4yOTQsMC0uMzkzLDAtLjE1OS0uMDA2LS4yMjUuMDM4LS4yNDNhLjA1LjA1LDAsMCwxLC4wNDMsMCwxLjIyNiwxLjIyNiwwLDAsMSwuMjguNTc5LDMuMTY3LDMuMTY3LDAsMCwxLS40NiwyLjEyMSw2LjkyOCw2LjkyOCwwLDAsMS0xLjEsMS40NTNjLS4wNTUuMDYtLjEwOS4xMTYtLjE2Mi4xNzFhMi4zLDIuMywwLDAsMC0uNjgxLDEuMDUyLDIuNDcsMi40NywwLDAsMC0uMDgyLjY3MywzLjQ1OCwzLjQ1OCwwLDAsMCwuNDczLDEuNTNjLjExNC4yMzEuMjE1LjQxNS4yODkuNTQ5LjEyOS4yMzUuMTc4LjMyMy4xNDIuMzY5aDBhLjA1MS4wNTEsMCwwLDEtLjA0LjAyWk0yOC41MTIsMi44YS44NjMuODYzLDAsMCwwLDAsLjE5YzAsLjEuMDA3LjIzNiwwLC40YTQuMDIxLDQuMDIxLDAsMCwxLS4xNTIuODYxLDMuMTA2LDMuMTA2LDAsMCwxLS40ODMuOTM0LDQuNDM3LDQuNDM3LDAsMCwxLS42MjkuNzE5Yy0uMTYyLjE1OC0uMzY0LjM1NC0uNjU3LjY4M2EzLjE2OCwzLjE2OCwwLDAsMC0uNzgyLDEuMiwyLjkzMywyLjkzMywwLDAsMC0uMTI4Ljc0MywyLjMyNSwyLjMyNSwwLDAsMCwuMDUyLjY3NSwyLjU5LDIuNTksMCwwLDAsLjM0MS43NjcsNC40MjIsNC40MjIsMCwwLDAsLjUxMy43MjUsMi4wMzUsMi4wMzUsMCwwLDAsLjYxMS41MjYsMS4xODMsMS4xODMsMCwwLDAtLjE0Ny0uMzFjLS4wNzQtLjEzNC0uMTc1LS4zMTgtLjI5LS41NTFBMy41LDMuNSwwLDAsMSwyNi4yNzgsOC44YTIuNTMsMi41MywwLDAsMSwuMDg0LS42ODgsMi4zNzUsMi4zNzUsMCwwLDEsLjY5NC0xLjA3NWMuMDUyLS4wNTUuMTA2LS4xMTEuMTYxLS4xNzFhNi44NzksNi44NzksMCwwLDAsMS4wOS0xLjQ0MiwzLjExOSwzLjExOSwwLDAsMCwuNDU2LTIuMDgzQTEuMjgxLDEuMjgxLDAsMCwwLDI4LjUxMiwyLjhaXCIvPjxwYXRoIGQ9XCJNMjkuOTcyLDYuMDg3Yy0uMDE5LS4wODgtLjQzMi0uMDQtLjc2Ni4wNzNhMi42LDIuNiwwLDAsMC0xLjA1OS43MjIsMi44LDIuOCwwLDAsMC0uOTE2LDEuODU1LDIuOTcyLDIuOTcyLDAsMCwwLC4yNTgsMS4wNmMuMjIxLjU3Mi40NTUuNzczLjQ0NCwxLjIyNS0uMDA3LjMtLjExNC40ODQtLjA0OC41NDlzLjMxNC0uMS40NjItLjMxM2ExLjgsMS44LDAsMCwwLC4yNTktMS4wMjJjLS4wNDYtLjgxNS0uNi0xLjAxNS0uNjA4LTEuOGExLjg1OCwxLjg1OCwwLDAsMSwuMTI5LS42NzZDMjguNTcsNi41MDksMzAuMDA4LDYuMjUyLDI5Ljk3Miw2LjA4N1pcIiBzdHlsZT1cImZpbGw6I2VhMmQyZVwiLz48cGF0aCBkPVwiTTI3LjkzNCwxMS42MTdhLjA5NC4wOTQsMCwwLDEtLjA2OS0uMDI2Yy0uMDQ2LS4wNDYtLjAzLS4xMjItLjAwNS0uMjM3YTEuNzE4LDEuNzE4LDAsMCwwLC4wNDUtLjMzMSwxLjM3NCwxLjM3NCwwLDAsMC0uMjE0LS43Miw1LDUsMCwwLDEtLjIyOC0uNDk1LDIuOTgsMi45OCwwLDAsMS0uMjU5LTEuMDcsMi44MSwyLjgxLDAsMCwxLC45MjMtMS44NzQsMi42NCwyLjY0LDAsMCwxLDEuMDctLjcyOSwxLjQ4MiwxLjQ4MiwwLDAsMSwuNzY2LS4xQS4wNjUuMDY1LDAsMCwxLDMwLDYuMDgxaDBjLjAxNS4wNy0uMDkyLjEyMS0uMzA2LjIyNGEyLjczLDIuNzMsMCwwLDAtMS41NDIsMS40NjMsMS44MjcsMS44MjcsMCwwLDAtLjEyNy42NjcsMS42NDUsMS42NDUsMCwwLDAsLjI5MS44ODUsMS44ODksMS44ODksMCwwLDEsLjMxNy45MTQsMS44MTQsMS44MTQsMCwwLDEtLjI2NCwxLjAzOS44MDkuODA5LDAsMCwxLS40MjEuMzQyWm0xLjg4OS01LjU0OWEyLjExNywyLjExNywwLDAsMC0uNjA4LjExNywyLjU4OCwyLjU4OCwwLDAsMC0xLjA0OC43MTUsMi43NjQsMi43NjQsMCwwLDAtLjkwOSwxLjgzNywyLjkzNSwyLjkzNSwwLDAsMCwuMjU2LDEuMDUsNC45NTUsNC45NTUsMCwwLDAsLjIyNS40OSwxLjQzMywxLjQzMywwLDAsMSwuMjIuNzQ1LDEuNzY1LDEuNzY1LDAsMCwxLS4wNDcuMzQxYy0uMDE5LjA5MS0uMDM1LjE2My0uMDA5LjE4OGEuMDQ2LjA0NiwwLDAsMCwuMDM4LjAxLjc2OS43NjksMCwwLDAsLjM4Mi0uMzIsMS43OTMsMS43OTMsMCwwLDAsLjI1NC0xLjAwNSwxLjg0NCwxLjg0NCwwLDAsMC0uMzEtLjg5LDEuNzExLDEuNzExLDAsMCwxLS4zLS45MTEsMS44NzcsMS44NzcsMCwwLDEsLjEzLS42ODZBMi43NzYsMi43NzYsMCwwLDEsMjkuNjcsNi4yNTdjLjEyNi0uMDYxLjI4My0uMTM2LjI3Ny0uMTY0bC0uMDA4LS4wMDdBLjI2NC4yNjQsMCwwLDAsMjkuODIzLDYuMDY4WlwiLz5gLFxuICBcIlBvd2VyUXVlcnlcIjogYDxwYXRoIGQ9XCJNMzAsMjUuNTgzSDI1Ljc1N1YxNS4zNzhhOC4yNzEsOC4yNzEsMCwwLDAtLjgzMi00LjI2MUEzLjA2MSwzLjA2MSwwLDAsMCwyMi4xMTgsOS44YTMuMzgzLDMuMzgzLDAsMCwwLTIuODI2LDEuNjY0LDYuNzkxLDYuNzkxLDAsMCwwLTEuMTYxLDMuOTg3VjI1LjU4M0gxMy44NjlWMTUuMDMxcTAtNS4yMzEtMy42OTQtNS4yMzFhMy4zMzIsMy4zMzIsMCwwLDAtMi44MjYsMS41NzMsNi45MzUsNi45MzUsMCwwLDAtMS4xMDYsNC4wNzhWMjUuNTgzSDJWNi44NTZINi4yNDNWOS44MThoLjA3M2E2LjQ4OCw2LjQ4OCwwLDAsMSw1LjkwNy0zLjQsNS41NjksNS41NjksMCwwLDEsMy4zOTMsMS4wN0E1LjMyOCw1LjMyOCwwLDAsMSwxNy42LDEwLjI5NGE2LjY4Myw2LjY4MywwLDAsMSw2LjIxOC0zLjg3N1EzMCw2LjQxNywzMCwxNC4wNDNaXCIgc3R5bGU9XCJmaWxsOiNjZmNmY2ZcIi8+YCxcbiAgXCJQb3dlclNoZWxsXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCIyMy4zMjVcIiB5MT1cIi0xMTguNTQzXCIgeDI9XCI3LjI2XCIgeTI9XCItMTA0LjE5M1wiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEsIDAsIDAsIC0xLCAwLCAtOTYpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjNTM5MWZlXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzNlNmRiZlwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIjcuMVwiIHkxPVwiLTEwNC4wMDJcIiB4Mj1cIjIzLjAwMVwiIHkyPVwiLTExOC4yOTJcIiB4bGluazpocmVmPVwiI2FcIi8+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfcG93ZXJzaGVsbDwvdGl0bGU+PHBhdGggZD1cIk0zLjE3NCwyNi41ODlhMS4xNTQsMS4xNTQsMCwwLDEtLjkyOC0uNDIzLDEuMjM0LDEuMjM0LDAsMCwxLS4yMS0xLjA1Mkw2LjIzMyw2Ljc4QTEuOCwxLjgsMCwwLDEsNy45MTQsNS40MUgyOC44MjZhMS4xNTcsMS4xNTcsMCwwLDEsLjkyOC40MjMsMS4yMzUsMS4yMzUsMCwwLDEsLjIxLDEuMDUybC00LjIsMTguMzM1YTEuOCwxLjgsMCwwLDEtMS42ODEsMS4zN0gzLjE3NFpcIiBzdHlsZT1cImZpbGwtcnVsZTpldmVub2RkO2ZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTcuOTE0LDUuNjQ2SDI4LjgyNmEuOTEzLjkxMywwLDAsMSwuOTA4LDEuMTg3bC00LjIsMTguMzM0YTEuNTc1LDEuNTc1LDAsMCwxLTEuNDUxLDEuMTg3SDMuMTc0YS45MTMuOTEzLDAsMCwxLS45MDgtMS4xODdsNC4yLTE4LjMzNEExLjU3NCwxLjU3NCwwLDAsMSw3LjkxNCw1LjY0NlpcIiBzdHlsZT1cImZpbGwtcnVsZTpldmVub2RkO2ZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTE2LjA0LDIxLjU0NGg1LjA4NmExLjExOCwxLjExOCwwLDAsMSwwLDIuMjM0SDE2LjA0YTEuMTE4LDEuMTE4LDAsMCwxLDAtMi4yMzRaXCIgc3R5bGU9XCJmaWxsOiMyYzU1OTE7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xOS4zMzksMTYuNTc4YTEuNzYyLDEuNzYyLDAsMCwxLS41OTEuNkw5LjMwOSwyMy45NTNhMS4yMjQsMS4yMjQsMCwwLDEtMS40MzgtMS45NzdsOC41MTItNi4xNjR2LS4xMjZMMTEuMDM1LDEwYTEuMjI0LDEuMjI0LDAsMCwxLDEuNzgyLTEuNjcybDYuNDE4LDYuODI3QTEuMTY2LDEuMTY2LDAsMCwxLDE5LjMzOSwxNi41NzhaXCIgc3R5bGU9XCJmaWxsOiMyYzU1OTE7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xOS4xLDE2LjM0MmExLjc0OSwxLjc0OSwwLDAsMS0uNTkuNkw5LjA3NCwyMy43MThhMS4yMjUsMS4yMjUsMCwwLDEtMS40MzktMS45NzdsOC41MTMtNi4xNjRWMTUuNDVMMTAuOCw5Ljc2MWExLjIyNCwxLjIyNCwwLDAsMSwxLjc4My0xLjY3MkwxOSwxNC45MTZBMS4xNjIsMS4xNjIsMCwwLDEsMTkuMSwxNi4zNDJaXCIgc3R5bGU9XCJmaWxsOiNmZmY7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xNS45LDIxLjQxMmg1LjA4NmExLjA1OSwxLjA1OSwwLDEsMSwwLDIuMTE4SDE1LjlhMS4wNTksMS4wNTksMCwxLDEsMC0yLjExOFpcIiBzdHlsZT1cImZpbGw6I2ZmZjtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz5gLCAgXG4gIFwiUHJvY2Vzc2luZ1wiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMTZcIiB5MT1cIjNcIiB4Mj1cIjE2XCIgeTI9XCIyOVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzFjNGM3MFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMwYzJiNDJcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9wcm9jZXNzaW5nbGFuZzwvdGl0bGU+PHBhdGggZD1cIk0xNS45MjIsMTkuOTYyYTEzLDEzLDAsMCwxLTEuNjQ3LS4wNzd2NS41NTJhMjcuNzYsMjcuNzYsMCwwLDEsMy4zMzIuNDYxVjI5SDUuOTY4VjI1LjlBMjcuOTg4LDI3Ljk4OCwwLDAsMSw5LjMsMjUuNDM4VjYuNzE1YTI4LjIxNSwyOC4yMTUsMCwwLDEtMy4zMzEtLjQ2di0zLjFIOC45NTVDMTAuMTgsMy4xNTMsMTMuNTQ5LDMsMTYuMjMsM2M2LjMxOCwwLDkuOCwyLjk0OCw5LjgsOEMyNi4wMzEsMTYuMDE4LDIyLjIsMTkuOTYyLDE1LjkyMiwxOS45NjJaTTE2LDcuMDU4Yy0uNjEzLDAtMS4xNDksMC0xLjcyMy4wMzh2OC42MTVhOS42OTQsOS42OTQsMCwwLDAsMS40NTUuMTE1YzMuMDI1LS4wMzgsNS4xMy0xLjcyMyw1LjEzLTQuNTE5QzIwLjg2Miw4LjcsMTkuNDA3LDcuMDU4LDE2LDcuMDU4WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPmAsXG4gIFwiUHJvbG9nXCI6IGA8ZGVmcz48cmFkaWFsR3JhZGllbnQgaWQ9XCJhXCIgY3g9XCIxMzQxLjI1XCIgY3k9XCItMzM5Ni44NjZcIiByPVwiMTguMjk5XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTEzMjcuMDc3IDM0MDUuOTM1KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjE4MVwiIHN0b3AtY29sb3I9XCIjZmJmYmZiXCIvPjxzdG9wIG9mZnNldD1cIjAuMzY1XCIgc3RvcC1jb2xvcj1cIiNlZmVmZjBcIi8+PHN0b3Agb2Zmc2V0PVwiMC41NTJcIiBzdG9wLWNvbG9yPVwiI2RhZGJkY1wiLz48c3RvcCBvZmZzZXQ9XCIwLjczOFwiIHN0b3AtY29sb3I9XCIjYmViZmMyXCIvPjxzdG9wIG9mZnNldD1cIjAuODI0XCIgc3RvcC1jb2xvcj1cIiNhZWIwYjNcIi8+PC9yYWRpYWxHcmFkaWVudD48cmFkaWFsR3JhZGllbnQgaWQ9XCJiXCIgY3g9XCI2LjY3OFwiIGN5PVwiODQuNzRcIiByPVwiMTUuNTU0XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTEuODg0IC04Ni4xNTQpIHNjYWxlKDEuMDcyIDEuMTY2KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZhZmRmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjA3OVwiIHN0b3AtY29sb3I9XCIjZWVmNWZhXCIvPjxzdG9wIG9mZnNldD1cIjAuMjJcIiBzdG9wLWNvbG9yPVwiI2NmZGZlY1wiLz48c3RvcCBvZmZzZXQ9XCIwLjQwN1wiIHN0b3AtY29sb3I9XCIjOWRiYmQ1XCIvPjxzdG9wIG9mZnNldD1cIjAuNjMxXCIgc3RvcC1jb2xvcj1cIiM1ODhhYjVcIi8+PHN0b3Agb2Zmc2V0PVwiMC43NDVcIiBzdG9wLWNvbG9yPVwiIzMyNmZhNFwiLz48c3RvcCBvZmZzZXQ9XCIwLjc5OVwiIHN0b3AtY29sb3I9XCIjMmI2Njk4XCIvPjxzdG9wIG9mZnNldD1cIjAuODk3XCIgc3RvcC1jb2xvcj1cIiMxNzRlNzhcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OTRcIiBzdG9wLWNvbG9yPVwiIzAwMzE1MlwiLz48L3JhZGlhbEdyYWRpZW50PjxyYWRpYWxHcmFkaWVudCBpZD1cImNcIiBjeD1cIjExLjI0MVwiIGN5PVwiLTkuODk3XCIgcj1cIjE2LjU5NFwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMjIuNjMxKSBzY2FsZSgxIDEuMDYyKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZDU0MFwiLz48c3RvcCBvZmZzZXQ9XCIwLjY2N1wiIHN0b3AtY29sb3I9XCIjZWMxYzI0XCIvPjxzdG9wIG9mZnNldD1cIjAuOTk0XCIgc3RvcC1jb2xvcj1cIiM3NjAwMDBcIi8+PC9yYWRpYWxHcmFkaWVudD48cmFkaWFsR3JhZGllbnQgaWQ9XCJkXCIgY3g9XCIxMi4yODZcIiBjeT1cIjI2LjEyN1wiIHI9XCIyLjA4M1wiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2RkZGZlMFwiLz48c3RvcCBvZmZzZXQ9XCIwLjE3NFwiIHN0b3AtY29sb3I9XCIjZDlkYmRjXCIvPjxzdG9wIG9mZnNldD1cIjAuMzUxXCIgc3RvcC1jb2xvcj1cIiNjZGNmZDBcIi8+PHN0b3Agb2Zmc2V0PVwiMC41MzFcIiBzdG9wLWNvbG9yPVwiI2I4YmFiYlwiLz48c3RvcCBvZmZzZXQ9XCIwLjcxMVwiIHN0b3AtY29sb3I9XCIjOWM5ZTlmXCIvPjxzdG9wIG9mZnNldD1cIjAuODkxXCIgc3RvcC1jb2xvcj1cIiM3ODc5N2JcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjNWU1ZjYxXCIvPjwvcmFkaWFsR3JhZGllbnQ+PHJhZGlhbEdyYWRpZW50IGlkPVwiZVwiIGN4PVwiMTkuMDY0XCIgY3k9XCIyNi4xMjdcIiByPVwiMi4wODNcIiB4bGluazpocmVmPVwiI2RcIi8+PHJhZGlhbEdyYWRpZW50IGlkPVwiZlwiIGN4PVwiMTUuNDM0XCIgY3k9XCIxNi4xOTFcIiByPVwiMi42ODdcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNDYxKVwiIHhsaW5rOmhyZWY9XCIjZFwiLz48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9wcm9sb2c8L3RpdGxlPjxnIHN0eWxlPVwiaXNvbGF0aW9uOmlzb2xhdGVcIj48Y2lyY2xlIGN4PVwiMTZcIiBjeT1cIjE2XCIgcj1cIjE0XCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC02LjYwMiAxNC45Mikgcm90YXRlKC00Mi4yNjUpXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0xOS45MzgsNi4zMDlhOS43ODUsOS43ODUsMCwwLDAtNi41LTIuMzM5QzguNTY0LDMuOTcsMy43NzQsNy43LDMuNDA1LDE0Ljk2MWMtLjQsNy44LDQuNzUsMTIuODYyLDEyLDEyLjg2MiwxMC43MzMsMCwxNi42NzItOS43OCwxMC4wMjctMjAuMzg4LDQuNjcxLDEwLjYtLjUyNywxNy4yNzktNy4yMzYsMTcuMjc5LTUuNDQxLDAtOS42MS0zLjY1MS05LjYxLTEwLjM0NUM4LjU4Miw0LjcwOSwxNS44MjMsNC4wMzksMTkuOTM4LDYuMzA5WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNMjIuNywxMC40MTVjLS4yOTMtLjk0LS42NDUtMi43ODguNjM0LTMuODZhMy43MjksMy43MjksMCwwLDAtMy44NDQsMS41MzRBOS4xNjUsOS4xNjUsMCwwLDAsMTIsOC4xLDMuNzI5LDMuNzI5LDAsMCwwLDguMTUyLDYuNTU1YzEuMzA5LDEuMS45MSwzLjAwNS42MTQsMy45MjNBMTAuNTE3LDEwLjUxNywwLDAsMCw2LjEsMTcuNTI0YzAsMi4xNzQsMS40LDQuNjQ1LDEuNjc1LDcuOTU1bDEuNzY4LTEuNTMyYTExLjc0MywxMS43NDMsMCwwLDAsNi4yMTIsMS40MzMsMTEuNzQxLDExLjc0MSwwLDAsMCw2LjIxMi0xLjQzM2wxLjc2OSwxLjUzMmMuMjgtMy4zMSwxLjY3NS01Ljc4MSwxLjY3NS03Ljk1NUExMC41MTIsMTAuNTEyLDAsMCwwLDIyLjcsMTAuNDE1WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2MpXCIvPjxwYXRoIGQ9XCJNMTAuNzIyLDI3Ljg2N2ExLjYyMSwxLjYyMSwwLDEsMSwzLjI0LDBjMCwuMDE4LDAsLjAzNSwwLC4wNTNhMi4yMzQsMi4yMzQsMCwxLDAtMy4yMjguMTI2QzEwLjcyNSwyNy45ODcsMTAuNzIyLDI3LjkyNywxMC43MjIsMjcuODY3WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2QpXCIvPjxwYXRoIGQ9XCJNMjAuNjI5LDI3Ljg2N2ExLjYyMSwxLjYyMSwwLDEsMC0zLjI0LDBjMCwuMDE4LDAsLjAzNSwwLC4wNTNhMi4yMzQsMi4yMzQsMCwxLDEsMy4yMjguMTI2QTEuNjc4LDEuNjc4LDAsMCwwLDIwLjYyOSwyNy44NjdaXCIgc3R5bGU9XCJmaWxsOnVybCgjZSlcIi8+PGcgc3R5bGU9XCJvcGFjaXR5OjAuNTM7bWl4LWJsZW5kLW1vZGU6bXVsdGlwbHlcIj48cGF0aCBkPVwiTTguMzQ2LDE4LjRjLS4xMzIuNjY3LS45NzEuODc3LS45NzEuODc3QTEuMzU5LDEuMzU5LDAsMCwxLDYuODA5LDE4LjFhMi45MjksMi45MjksMCwwLDAsLjQ0MywxLjc5M0EyLjkyNywyLjkyNywwLDAsMCw4LjM0NiwxOC40WlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjxwYXRoIGQ9XCJNMTAuMDA4LDE4LjczN2MtLjEzMi42NjctLjk3Mi44NzctLjk3Mi44NzdhMS4zNiwxLjM2LDAsMCwxLS41NjYtMS4xODIsMi45MjksMi45MjksMCwwLDAsLjQ0NCwxLjc5M0EyLjkyNiwyLjkyNiwwLDAsMCwxMC4wMDgsMTguNzM3WlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjxwYXRoIGQ9XCJNOC44MzMsMjAuMjQ5Yy0uMTMyLjY2Ny0uOTcxLjg3Ny0uOTcxLjg3N0ExLjM1OSwxLjM1OSwwLDAsMSw3LjMsMTkuOTQ0YTIuOTI5LDIuOTI5LDAsMCwwLC40NDMsMS43OTNBMi45MjUsMi45MjUsMCwwLDAsOC44MzMsMjAuMjQ5WlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjxwYXRoIGQ9XCJNMTAuNSwyMC41ODNjLS4xMzIuNjY3LS45NzEuODc3LS45NzEuODc3YTEuMzYsMS4zNiwwLDAsMS0uNTY2LTEuMTgyQTIuOTI5LDIuOTI5LDAsMCwwLDkuNCwyMi4wNzIsMi45MjcsMi45MjcsMCwwLDAsMTAuNSwyMC41ODNaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PHBhdGggZD1cIk05LjMyOCwyMi4xMjFjLS4xMzIuNjY3LS45NzIuODc3LS45NzIuODc3YTEuMzYsMS4zNiwwLDAsMS0uNTY1LTEuMTgyLDIuOTI5LDIuOTI5LDAsMCwwLC40NDMsMS43OTNBMi45MjYsMi45MjYsMCwwLDAsOS4zMjgsMjIuMTIxWlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjxwYXRoIGQ9XCJNMTEuNjY0LDE5LjA3Yy0uMTMyLjY2Ny0uOTcyLjg3Ny0uOTcyLjg3N2ExLjM1OSwxLjM1OSwwLDAsMS0uNTY1LTEuMTgyLDIuOTMsMi45MywwLDAsMCwuNDQzLDEuNzkzQTIuOTI3LDIuOTI3LDAsMCwwLDExLjY2NCwxOS4wN1pcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz48L2c+PGcgc3R5bGU9XCJvcGFjaXR5OjAuNTM7bWl4LWJsZW5kLW1vZGU6bXVsdGlwbHlcIj48cGF0aCBkPVwiTTIzLjE1NywxOC40Yy4xMzIuNjY3Ljk3MS44NzcuOTcxLjg3N2ExLjM1OSwxLjM1OSwwLDAsMCwuNTY2LTEuMTgyLDIuOTMsMi45MywwLDAsMS0uNDQzLDEuNzkzQTIuOTI3LDIuOTI3LDAsMCwxLDIzLjE1NywxOC40WlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjxwYXRoIGQ9XCJNMjEuNDk1LDE4LjczN2MuMTMyLjY2Ny45NzIuODc3Ljk3Mi44NzdhMS4zNiwxLjM2LDAsMCwwLC41NjUtMS4xODIsMi45MzEsMi45MzEsMCwwLDEtLjQ0NCwxLjc5M0EyLjkyNiwyLjkyNiwwLDAsMSwyMS40OTUsMTguNzM3WlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjxwYXRoIGQ9XCJNMjIuNjY5LDIwLjI0OWMuMTMyLjY2Ny45NzEuODc3Ljk3MS44NzdhMS4zNiwxLjM2LDAsMCwwLC41NjYtMS4xODIsMi45MjksMi45MjksMCwwLDEtLjQ0MywxLjc5M0EyLjkyNiwyLjkyNiwwLDAsMSwyMi42NjksMjAuMjQ5WlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjxwYXRoIGQ9XCJNMjEuMDA4LDIwLjU4M2MuMTMyLjY2Ny45NzEuODc3Ljk3MS44NzdhMS4zNTksMS4zNTksMCwwLDAsLjU2NS0xLjE4MiwyLjkyOCwyLjkyOCwwLDAsMS0uNDQzLDEuNzkzQTIuOTI3LDIuOTI3LDAsMCwxLDIxLjAwOCwyMC41ODNaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PHBhdGggZD1cIk0yMi4xNzUsMjIuMTIxYy4xMzIuNjY3Ljk3Mi44NzcuOTcyLjg3N2ExLjM2LDEuMzYsMCwwLDAsLjU2NS0xLjE4MiwyLjkyOCwyLjkyOCwwLDAsMS0uNDQ0LDEuNzkzQTIuOTI3LDIuOTI3LDAsMCwxLDIyLjE3NSwyMi4xMjFaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PHBhdGggZD1cIk0xOS44MzgsMTkuMDdjLjEzMi42NjcuOTcyLjg3Ny45NzIuODc3YTEuMzU5LDEuMzU5LDAsMCwwLC41NjUtMS4xODIsMi45MjgsMi45MjgsMCwwLDEtLjQ0MywxLjc5M0EyLjkyOCwyLjkyOCwwLDAsMSwxOS44MzgsMTkuMDdaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PC9nPjxjaXJjbGUgY3g9XCIxMS4zMzlcIiBjeT1cIjE0LjA3NFwiIHI9XCIzLjgxNlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxjaXJjbGUgY3g9XCIxMi4xM1wiIGN5PVwiMTQuNDQ2XCIgcj1cIjEuODYxXCIgc3R5bGU9XCJmaWxsOiNiZGJmYzFcIi8+PGNpcmNsZSBjeD1cIjEyLjEzXCIgY3k9XCIxNC40NDZcIiByPVwiMS4xOTFcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz48Y2lyY2xlIGN4PVwiMTEuNjAzXCIgY3k9XCIxNC4wMjdcIiByPVwiMC4zNTdcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48Y2lyY2xlIGN4PVwiMjAuMTEyXCIgY3k9XCIxNC4wNzRcIiByPVwiMy44MTZcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48Y2lyY2xlIGN4PVwiMjAuOTAzXCIgY3k9XCIxNC40NDZcIiByPVwiMS44NjFcIiBzdHlsZT1cImZpbGw6I2JkYmZjMVwiLz48Y2lyY2xlIGN4PVwiMjAuOTAzXCIgY3k9XCIxNC40NDZcIiByPVwiMS4xOTFcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz48Y2lyY2xlIGN4PVwiMjAuMzc1XCIgY3k9XCIxNC4wMjdcIiByPVwiMC4zNTdcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE1LjcwNiwyMS41MmMwLTEuNDEyLDIuMTU3LTMuNDEzLDIuMTU3LTQuODg3YTIuMTU3LDIuMTU3LDAsMCwwLTQuMzEzLDBDMTMuNTUsMTguMTA3LDE1LjcwNiwyMC4xMDgsMTUuNzA2LDIxLjUyWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2YpXCIvPjwvZz5gLFxuICBcIlByb3RvY29sIEJ1ZmZlcnNcIjogYDxwb2x5Z29uIHBvaW50cz1cIjE1Ljk5NiAzLjIyIDI2Ljk2NiA5LjcgMjYuOTU0IDIyLjMgMTYgMjguNzggNS4wMzggMjIuNDA4IDUuMDM0IDkuNjI4IDE1Ljk5NiAzLjIyXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xNiwyLDMuOTg3LDkuMDJsMCwxNEwxNiwzMGwxMi03LjEuMDEzLTEzLjhaTTI2Ljk1NCwyMi4zLDE2LDI4Ljc4LDUuMDM4LDIyLjQwOGwwLTEyLjc4TDE2LDMuMjIsMjYuOTY2LDkuN1pcIiBzdHlsZT1cImZpbGw6IzE3MWMxZVwiLz48cG9seWdvbiBwb2ludHM9XCIyNS41NjkgMTMuNjU0IDE5Ljk0NiAxNi45NjQgMTkuOTQzIDI0Ljg5IDI1LjU5IDIxLjU2NSAyNS41NjkgMTMuNjU0XCIgc3R5bGU9XCJmaWxsOiMxZWE4ZmZcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjMuMjgyIDEyLjMwMyAyNS41NjkgMTMuNjU0IDE5Ljk0NiAxNi45NjQgMTkuOTQzIDI0Ljg5IDE3LjMyNyAyMy4zNyAxNy4zNDggMTUuODc1IDIzLjI4MiAxMi4zMDNcIiBzdHlsZT1cImZpbGw6IzUwYmZmZlwiLz48cG9seWdvbiBwb2ludHM9XCIyMi41MTIgMTAuMzUgMjIuNTE0IDExLjgxNiAxNi40MTEgMTUuNDk4IDE2LjQxOCAyMy41OTcgMTQuOTk4IDI0LjQzMSAxNC45OTQgMTQuODU2IDIyLjUxMiAxMC4zNVwiIHN0eWxlPVwiZmlsbDojOTdmZjI3XCIvPjxwb2x5Z29uIHBvaW50cz1cIjIwLjAwOCA4Ljg3MSAyMi41MTIgMTAuMzUgMTQuOTk0IDE0Ljg1NiAxNC45OTggMjQuNDMxIDEyLjE5NCAyMi44MDEgMTIuMTg5IDEzLjQxMyAyMC4wMDggOC44NzFcIiBzdHlsZT1cImZpbGw6I2MyZmY3MlwiLz48cG9seWdvbiBwb2ludHM9XCIxOS4yMjYgNi42MDYgMTkuMjI2IDguMzc0IDExLjIxIDEzLjA3NCAxMS4yMSAyMy4xNzIgOS44MDggMjMuOTg4IDkuODM1IDEyLjI3NyAxOS4yMjYgNi42MDZcIiBzdHlsZT1cImZpbGw6I2ZmMjc0YlwiLz48cG9seWdvbiBwb2ludHM9XCIxNi4xNiA0Ljc4NCA2LjUzIDEwLjM5NCA2LjUyOSAyMi4wNzEgOS44MjcgMjMuOTg4IDkuODM1IDEyLjI3NyAxOS4yMzUgNi42MDYgMTYuMTYgNC43ODRcIiBzdHlsZT1cImZpbGw6I2ZmNWM3N1wiLz5gLFxuICBcIlB1Z1wiOiBgPHBhdGggZD1cIk0yNS41MTQsMTIuODQ2Yy0uMDUyLS45MzguMjA5LTEuODI1LS4yMDktMi41NTQtMS4wNDMtMS44MjUtMy42NDktMi44NjctOC44NjMtMi44NjdWNy4zNzJoMHYuMDUyYy01LjczNSwwLTguMTg1LDEuMDQzLTkuMjI3LDIuODY3YTUuNiw1LjYsMCwwLDAtLjQ2OSwyLjU1NCw5LjU0Niw5LjU0NiwwLDAsMC0uMjYxLDIuNDVjLjE1NiwxLjE0Ny4yNjEsMi4yOTQuNDE3LDMuMzM2LjE1Ni44ODYsMS40MDgsMS41NjQsMS41NjQsMi40LjMxMywyLjI0MiwyLjI5NCwzLjI4NCw4LjAyOCwzLjI4NHYuMjYxaC0uMXYtLjI2MWM1LjIxMywwLDcuNC0xLjA0Myw3LjcxNi0zLjI4NC4xLS44MzQsMS4xNDctMS41MTIsMS4zLTIuNC4xNTYtMS4wNDMuMjA5LTIuMTkuMzY1LTMuMzM2QTExLjc3NCwxMS43NzQsMCwwLDAsMjUuNTE0LDEyLjg0NlpcIiBzdHlsZT1cImZpbGw6I2VmY2NhM1wiLz48cGF0aCBkPVwiTTE2LjE4MiwxMy42OGEzLjI0MSwzLjI0MSwwLDAsMSwyLjE5LDEuMTQ3Yy43My42MjYsMS45MjksMS4wNDMsMi40NSwxLjYxNmE0LjcxNSw0LjcxNSwwLDAsMSwxLjQwOCwxLjk4MSw4LjksOC45LDAsMCwxLC4zMTMsMi4yNDJjMCwuMjYxLjE1Ni4yMDkuNTczLDBhOS4wMiw5LjAyLDAsMCwwLDIuMTktMS44NzdjLS4xNTYuODg2LTEuMjUxLDEuNjY4LTEuMzU1LDIuNS0uMzEzLDIuMjQyLTIuNSwzLjMzNi03Ljg3MiwzLjMzNmguMzEzXCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PHBhdGggZD1cIk0xOS41MTksMTEuOTA4Yy4yMDkuNjc4Ljg4NiwzLjAyNC0uNDY5LDIuMjQyYTIuNTU3LDIuNTU3LDAsMCwxLC45MzgsMS41NjQsMS44MzEsMS44MzEsMCwwLDAsMS4zLDEuNDA4LDMuNDc5LDMuNDc5LDAsMCwwLDIuNTU0LS42MjYsMi45NTYsMi45NTYsMCwwLDAsLjY3OC0zLjI4NCwyLjQzLDIuNDMsMCwwLDAtMi4xMzctMS42MTZDMjEuNCwxMS4zMzQsMTkuMzEsMTEuMTI2LDE5LjUxOSwxMS45MDhaXCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PGNpcmNsZSBjeD1cIjIyLjE3OFwiIGN5PVwiMTQuNDFcIiByPVwiMS45MjlcIi8+PGNpcmNsZSBjeD1cIjIxLjY1NlwiIGN5PVwiMTMuNTI0XCIgcj1cIjAuNTIxXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xOS4yMDYsMTQuMzA2YTE3LjY4LDE3LjY4LDAsMCwxLDIuNzExLDIuMzQ2Yy45MzgsMS4yLjkzOCwxLjQwOC45MzgsMS40MDhsLS42NzguMzEzYTcuMSw3LjEsMCwwLDAtMi4xMzctMi41Yy0xLjItLjY3OC0xLjM1NS0xLjI1MS0xLjM1NS0xLjI1MVpcIiBzdHlsZT1cImZpbGw6I2VmY2NhM1wiLz48cGF0aCBkPVwiTTE2LjIzNSwxMy42OGEzLjYwNSwzLjYwNSwwLDAsMC0yLjM0NiwxLjE0N2MtLjczLjYyNi0yLjAzMywxLjA0My0yLjUsMS42MTZhNC44MDYsNC44MDYsMCwwLDAtMS40NiwxLjk4MSw4LjksOC45LDAsMCwwLS4zMTMsMi4yNDJjMCwuMjYxLjA1Mi4zMTMtLjYyNiwwQTcuOTcyLDcuOTcyLDAsMCwxLDYuOCwxOC43ODljLjE1Ni44ODYsMS4yNTEsMS42NjgsMS4zNTUsMi41LjMxMywyLjE5LDIuNSwzLjI4NCw3Ljg3MiwzLjI4NGguMzY1XCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PHBhdGggZD1cIk0yMS4yMzksMTcuMjc3YTYuNTUyLDYuNTUyLDAsMCwwLTUuMTA5LTIuNjA3aDBhNi42MzgsNi42MzgsMCwwLDAtNS4xMDksMi42MDcsMy44NjEsMy44NjEsMCwwLDAtMS4wNDMsMy4xOGMwLDQuNjQsMS42MTYsMy4yMzIsMi43MTEsMy44MDZhNy40NjYsNy40NjYsMCwwLDAsMy4zODkuMzEzaDBhNy40LDcuNCwwLDAsMCwzLjM4OS0uMzEzYzEuMDk1LS41NzMsMi43MTEuODM0LDIuNzExLTMuODA2QTMuMzg2LDMuMzg2LDAsMCwwLDIxLjIzOSwxNy4yNzdaXCIgc3R5bGU9XCJmaWxsOiM1NjMzMmJcIi8+PHBhdGggZD1cIk0xNi4wMjYsMTUuOTc0YTkuNTQ5LDkuNTQ5LDAsMCwxLS40NjksMi41NTRsLjU3My0uMTU2WlwiIHN0eWxlPVwiZmlsbDojNDQyODIzXCIvPjxwYXRoIGQ9XCJNMTYuMTgyLDE1Ljk3NGE5LjU0OSw5LjU0OSwwLDAsMCwuNDY5LDIuNTU0bC0uNTczLS4xNTZaXCIgc3R5bGU9XCJmaWxsOiM0NDI4MjNcIi8+PHBhdGggZD1cIk0xNC4zNTgsMTUuNDUzYy0uMjA5LS41MjEuNTczLTEuMzU1LDEuODI1LTEuMzU1czIuMDMzLjgzNCwxLjgyNSwxLjM1NS0xLjA0My42NzgtMS44MjUuNjc4QzE1LjM0OCwxNi4xMywxNC41NjYsMTUuOTc0LDE0LjM1OCwxNS40NTNaXCIgc3R5bGU9XCJmaWxsOiM1NjMzMmJcIi8+PHBhdGggZD1cIk0xNi4xODIsMTUuOTc0YzAtLjEuNzMtLjEsMS4xNDctLjM2NSwwLDAtLjgzNC4yNjEtLjk5MS4xNTZhLjY1Ni42NTYsMCwwLDEtLjIwOS0uMzY1LjY1Ni42NTYsMCwwLDEtLjIwOS4zNjVjLS4xNTYuMS0xLjA5NS0uMTU2LTEuMDk1LS4xNTZhOC4wNTgsOC4wNTgsMCwwLDEsMS4yLjM2NXYuNDE3YTEwLjQ5MiwxMC40OTIsMCwwLDAsLjEsMi4wMzNjLjE1Ni4yMDkuMS0xLjQ2LjEtMi4wMzNBMS4zLDEuMywwLDAsMSwxNi4xODIsMTUuOTc0WlwiLz48cGF0aCBkPVwiTTE2LjE4MiwxOC45NDVhMy4zNSwzLjM1LDAsMCwxLDEuNjE2LjY3OCwzLjEyMSwzLjEyMSwwLDAsMC0xLjYxNi0xLjA5NSwzLjAzNiwzLjAzNiwwLDAsMC0xLjgyNSwxLjJBMy4zMTIsMy4zMTIsMCwwLDEsMTYuMTgyLDE4Ljk0NVpcIiBzdHlsZT1cImZpbGw6IzdmNGE0MVwiLz48cGF0aCBkPVwiTTE2LjA3OCwyMi44YTguOSw4LjksMCwwLDEtMi40LS40NjljLS4xNTYtLjA1Mi0uMzEzLjA1Mi0uNDY5LDBhNi4xNzIsNi4xNzIsMCwwLDEtMy4xOC0yLjEzN3YuMjA5YzAsNC42NCwxLjYxNiwzLjIzMiwyLjcxMSwzLjgwNmE3LjQ2Niw3LjQ2NiwwLDAsMCwzLjM4OS4zMTNoMGE3LjQsNy40LDAsMCwwLDMuMzg5LS4zMTNjMS4wOTUtLjU3MywyLjcxMS44MzQsMi43MTEtMy44MDZ2LS40NjlBNS45MTQsNS45MTQsMCwwLDEsMTksMjIuMjgyYy0uMTU2LjA1Mi0uNDE3LS4wNTItLjU3My0uMDUyQTcuMDQ1LDcuMDQ1LDAsMCwxLDE2LjA3OCwyMi44WlwiIHN0eWxlPVwiZmlsbDojNDQyODIzXCIvPjxwYXRoIGQ9XCJNMTMuOTQxLDIwLjNzLS41NzMsMS42NjgtLjE1NiwyLjRsLS41MjEtLjIwOUExNS40MzMsMTUuNDMzLDAsMCwxLDEzLjk0MSwyMC4zWlwiIHN0eWxlPVwiZmlsbDojNDQyODIzXCIvPjxwYXRoIGQ9XCJNMTguMzIsMjAuM3MuNTczLDEuNjY4LjE1NiwyLjRMMTksMjIuNDkxQTEwLjYyOSwxMC42MjksMCwwLDAsMTguMzIsMjAuM1pcIiBzdHlsZT1cImZpbGw6IzQ0MjgyM1wiLz48cGF0aCBkPVwiTTEyLjU4NSwxMS45MDhjLS4yMDkuNjc4LS44ODYsMy4wMjQuNDY5LDIuMjQyYTIuNTU3LDIuNTU3LDAsMCwwLS45MzgsMS41NjQsMS44MzEsMS44MzEsMCwwLDEtMS4zLDEuNDA4QTMuNDc5LDMuNDc5LDAsMCwxLDguMjU4LDE2LjVhMi45NTYsMi45NTYsMCwwLDEtLjY3OC0zLjI4NCwyLjQzLDIuNDMsMCwwLDEsMi4xMzctMS42MTZDMTAuNzA5LDExLjMzNCwxMi43OTQsMTEuMTI2LDEyLjU4NSwxMS45MDhaXCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PHBhdGggZD1cIk0xNi4xMywxOC41MjhhMy4zOTMsMy4zOTMsMCwwLDEsMi40NSwyLjg2N3YtLjFhMy4wNTEsMy4wNTEsMCwwLDAtMi40NS0yLjkxOSwzLDMsMCwwLDAtMi40NSwyLjkxOXYuMUEzLjQ2MywzLjQ2MywwLDAsMSwxNi4xMywxOC41MjhaXCIvPjxlbGxpcHNlIGN4PVwiMTYuNTQ2XCIgY3k9XCIxNS4xMzhcIiByeD1cIjAuMTU2XCIgcnk9XCIwLjMxM1wiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMy4yNTYgNC42MTEpIHJvdGF0ZSgtMTQuNDYpXCIgc3R5bGU9XCJmaWxsOiMzMzE3MTJcIi8+PGVsbGlwc2UgY3g9XCIxNS42MDlcIiBjeT1cIjE1LjE0NlwiIHJ4PVwiMC4zMTNcIiByeT1cIjAuMTU2XCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0zLjQ4MiAyNS41NjcpIHJvdGF0ZSgtNzIuNzY1KVwiIHN0eWxlPVwiZmlsbDojMzMxNzEyXCIvPjxjaXJjbGUgY3g9XCIxMC4wMzFcIiBjeT1cIjE0LjQxXCIgcj1cIjEuOTI5XCIvPjxjaXJjbGUgY3g9XCIxMC41NTJcIiBjeT1cIjEzLjUyNFwiIHI9XCIwLjUyMVwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTYuNywxNC40MXMtLjUyMS4yMDktLjYyNi4yNjFhMi40OTIsMi40OTIsMCwwLDEtLjYyNi0uMjYxSDE2LjdaXCIgc3R5bGU9XCJmaWxsOiM3ZjRhNDFcIi8+PHBhdGggZD1cIk0xMi45LDE0LjMwNmExNy42OCwxNy42OCwwLDAsMC0yLjcxMSwyLjM0NmMtLjkzOCwxLjItLjkzOCwxLjQwOC0uOTM4LDEuNDA4bC42NzguMzEzYTcuMSw3LjEsMCwwLDEsMi4xMzctMi41YzEuMi0uNjc4LDEuMzU1LTEuMjUxLDEuMzU1LTEuMjUxWlwiIHN0eWxlPVwiZmlsbDojZWZjY2EzXCIvPjxwYXRoIGQ9XCJNOS4wOTIsMTAuODEzYTQuNTE5LDQuNTE5LDAsMCwxLTEuOTI5LDIuMjk0QTIuMTksMi4xOSwwLDAsMCw5LjA5MiwxMC44MTNaXCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PHBhdGggZD1cIk0yMi45MDgsMTAuODEzYTQuNTE5LDQuNTE5LDAsMCwwLDEuOTI5LDIuMjk0QTIuMTksMi4xOSwwLDAsMSwyMi45MDgsMTAuODEzWlwiIHN0eWxlPVwiZmlsbDojY2NhYzhkXCIvPjxwYXRoIGQ9XCJNMTkuMzEsMTMuODM2YTUuMTYsNS4xNiwwLDAsMC0zLjA3Ni0xLjQwOGguMTU2YTMuODUyLDMuODUyLDAsMCwwLTMuMDI0LDEuNDA4LDQuODMyLDQuODMyLDAsMCwxLDMuMDI0LTEuMDQzaDBBNS43ODUsNS43ODUsMCwwLDEsMTkuMzEsMTMuODM2WlwiIHN0eWxlPVwiZmlsbDojY2NhYzhkXCIvPjxwYXRoIGQ9XCJNMTcuNzQ2LDEwLjk2OWEyLjQ1NSwyLjQ1NSwwLDAsMC0xLjU2NC0uOTM4aC4xNTZhMS43ODYsMS43ODYsMCwwLDAtMS41MTIuOTM4LDIuMTg3LDIuMTg3LDAsMCwxLDEuNTEyLS42NzhoMEExLjg5NCwxLjg5NCwwLDAsMSwxNy43NDYsMTAuOTY5WlwiIHN0eWxlPVwiZmlsbDojY2NhYzhkXCIvPjxwYXRoIGQ9XCJNMTAuMDMxLDE3Ljc0NmEyLjU0NSwyLjU0NSwwLDAsMS0xLjc3My4yMDlIOC4wNWEzLjY4LDMuNjgsMCwwLDEtLjg4Ni0xLjUxMkEyLjI3LDIuMjcsMCwwLDAsMTAuMDMxLDE3Ljc0NlpcIiBzdHlsZT1cImZpbGw6I2NjYWM4ZFwiLz48cGF0aCBkPVwiTTIyLjEyNiwxNy43NDZhMi41NDUsMi41NDUsMCwwLDAsMS43NzMuMjA5SDIzLjY5YTEuNzQ5LDEuNzQ5LDAsMCwwLDEuMDk1LTEuNTEyQTIuMDIsMi4wMiwwLDAsMSwyMi4xMjYsMTcuNzQ2WlwiIHN0eWxlPVwiZmlsbDojY2NhYzhkXCIvPjxwYXRoIGQ9XCJNMTEuMjMsMTAuNzA5YTQuNzUsNC43NSwwLDAsMSwyLjI0Mi4xYy45MzguMzEzLjIwOSwxLjU2NC4zNjUsMS42MTZhMi44NjUsMi44NjUsMCwwLDEsMi4yNDItLjczYzEuNzczLjEsMS45ODEuODg2LDIuMjQyLjczLjI2MS0uMS0uMjYxLTIuMTksMi40NS0xLjcyLDAsMC0yLjc2My0uNzMtMi42NTksMS4yNTFhMy42NzUsMy42NzUsMCwwLDAtMy44NTgtLjFTMTQuODI3LDkuOTI3LDExLjIzLDEwLjcwOVpcIiBzdHlsZT1cImZpbGw6I2NjYWM4ZFwiLz48cGF0aCBkPVwiTTEwLjUsOHMtMi40LDIuOTcyLTIuNzExLDQuMTE4Yy0uMzY1LDEuMTQ3LS42MjYsNS45NDMtLjkzOCw2LjYyMUw1Ljc1NiwxNC4wNDVsMi4wMzMtNC45WlwiIHN0eWxlPVwiZmlsbDojY2NhYzhkXCIvPjxwYXRoIGQ9XCJNMjEuNjU2LDhzMi40LDIuOTcyLDIuNzExLDQuMTE4Yy4zNjUsMS4xNDcuNjI2LDUuOTQzLjkzOCw2LjYyMUwyNi40LDE0LjA0NWwtMi4wMzMtNC45WlwiIHN0eWxlPVwiZmlsbDojY2NhYzhkXCIvPjxwYXRoIGQ9XCJNMjEuNSw4YTExLjYxNywxMS42MTcsMCwwLDEsMy4yODQsNC41ODhjLjczLDIuNDUuNDE3LDUuNDc0Ljk5MSw1LjgzOS44MzQuNTIxLDEuNzItMi42MDcsMi4wMzMtMi45MTkuNDY5LS41MjEsMi4wODUtMS44NzcsMi4xOS0yLjEzN3MtMy4yMzItMy45MS00Ljc0NC00LjY0QzIzLjU4NSw3Ljg5MywyMS40LDcuNzg5LDIxLjUsOFpcIiBzdHlsZT1cImZpbGw6IzU2MzMyYlwiLz48cGF0aCBkPVwiTTIzLjY5LDkuM2ExNS4zNzksMTUuMzc5LDAsMCwxLDIuOTcyLDguNjU0bDEuMi0yLjQ1QTE2LjU2NCwxNi41NjQsMCwwLDAsMjMuNjksOS4zWlwiIHN0eWxlPVwiZmlsbDojNDQyODIzXCIvPjxwYXRoIGQ9XCJNMTAuNSw4YTExLjYxNywxMS42MTcsMCwwLDAtMy4yODQsNC41ODhjLS43MywyLjQ1LS40MTcsNS40NzQtLjk5MSw1LjgzOS0uODM0LjUyMS0xLjcyLTIuNjA3LTIuMDMzLTIuOTE5LS40NjktLjUyMS0yLjA4NS0xLjg3Ny0yLjE5LTIuMTM3czMuMjMyLTMuOTEsNC43NDQtNC42NEM4LjQxNSw3Ljg5MywxMC42LDcuNzg5LDEwLjUsOFpcIiBzdHlsZT1cImZpbGw6IzU2MzMyYlwiLz48cGF0aCBkPVwiTTguMzEsOS4zYTE1LjM3OSwxNS4zNzksMCwwLDAtMi45NzIsOC42NTRMNC4xNCwxNS41QTE2LjU2NCwxNi41NjQsMCwwLDEsOC4zMSw5LjNaXCIgc3R5bGU9XCJmaWxsOiM0NDI4MjNcIi8+PHBhdGggZD1cIk02LjY0MiwxOC4wMDdhNC4xMTgsNC4xMTgsMCwwLDAsLjU3MywxLjU2NGMuMzY1LjM2NS4xLS4zMTMuMS0uMzEzcy0uMzY1LS4yMDktLjMxMy0xLjcyUzYuNjQyLDE4LjAwNyw2LjY0MiwxOC4wMDdaXCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PHBhdGggZD1cIk0yNS40MSwxOC4wMDdhNC4xMTgsNC4xMTgsMCwwLDEtLjU3MywxLjU2NGMtLjM2NS4zNjUtLjEtLjMxMy0uMS0uMzEzcy4zNjUtLjIwOS4zMTMtMS43MkMyNC45OTMsMTYuMDc4LDI1LjQxLDE4LjAwNywyNS40MSwxOC4wMDdaXCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PGNpcmNsZSBjeD1cIjEzLjg4OVwiIGN5PVwiMTcuMTIxXCIgcj1cIjAuMTU2XCIgc3R5bGU9XCJmaWxsOiM0NDI4MjNcIi8+PGNpcmNsZSBjeD1cIjEyLjg0NlwiIGN5PVwiMTguMjE2XCIgcj1cIjAuMTU2XCIgc3R5bGU9XCJmaWxsOiM0NDI4MjNcIi8+PGNpcmNsZSBjeD1cIjEyLjUzM1wiIGN5PVwiMTcuMTIxXCIgcj1cIjAuMTU2XCIgc3R5bGU9XCJmaWxsOiM0NDI4MjNcIi8+PGNpcmNsZSBjeD1cIjE4LjE2NFwiIGN5PVwiMTcuMTIxXCIgcj1cIjAuMTU2XCIgc3R5bGU9XCJmaWxsOiM0NDI4MjNcIi8+PGNpcmNsZSBjeD1cIjE5LjE1NFwiIGN5PVwiMTguMjE2XCIgcj1cIjAuMTU2XCIgc3R5bGU9XCJmaWxsOiM0NDI4MjNcIi8+PGNpcmNsZSBjeD1cIjE5LjQ2N1wiIGN5PVwiMTcuMTIxXCIgcj1cIjAuMTU2XCIgc3R5bGU9XCJmaWxsOiM0NDI4MjNcIi8+YCxcbiAgXCJQdXBwZXRcIjogYDxwYXRoIGQ9XCJNMjUuMDg5LDExLjgyMkgxOC43TDE1LjI2Nyw4LjM4OFYySDYuOTExdjguMzU3SDEzLjNsMy40MjIsMy40MjJoMHY0LjQzMWgwbC0zLjQzNCwzLjQzNEg2LjkxMVYzMGg4LjM1N1YyMy42MTJoMEwxOC43LDIwLjE3OGg2LjM4OFpNOS43LDQuNzg2aDIuNzg2VjcuNTcxSDkuN1pNMTIuNDgyLDI3LjJIOS43VjI0LjQxN2gyLjc4NlpcIiBzdHlsZT1cImZpbGw6I2ZmYWUxYVwiLz5gLFxuICBcIlB1cmVTY3JpcHRcIjogYDxyZWN0IHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHN0eWxlPVwiZmlsbDojMTYxNzFiXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIxLjg5MiAyMi4xMzYgMTkuNzA2IDIwLjA5NSAxMC4xMDcgMjAuMDk1IDEyLjI5MyAyMi4xMzYgMjEuODkyIDIyLjEzNlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwb2x5Z29uIHBvaW50cz1cIjEyLjI5MyAxNC45OCAxMC4xMDcgMTcuMDIxIDE5LjcwNiAxNy4wMjEgMjEuODkyIDE0Ljk4IDEyLjI5MyAxNC45OFwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIxLjg5MSAxMS45MDYgMTkuNzA2IDkuODY0IDEwLjEwNyA5Ljg2NCAxMi4yOTMgMTEuOTA2IDIxLjg5MSAxMS45MDZcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTkuMSwxMy45MjYsNy42NTIsMTIuNDgyLDIuMywxNy44MzZhMS4wMjMsMS4wMjMsMCwwLDAsMCwxLjQ0M2w1LjM1NCw1LjM1NEw5LjEsMjMuMTksNC40NjQsMTguNTU4WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMjkuNywxMi43MjEsMjQuMzQ4LDcuMzY2LDIyLjksOC44MWw0LjYzLDQuNjMyTDIyLjksMTguMDc1bDEuNDQzLDEuNDQzTDI5LjcsMTQuMTY1YTEuMDIxLDEuMDIxLDAsMCwwLDAtMS40NDRaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcbiAgXCJQeXRob25cIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIi0xMzMuMjY4XCIgeTE9XCItMjAyLjkxXCIgeDI9XCItMTMzLjE5OFwiIHkyPVwiLTIwMi44NFwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDI1MjQzLjA2MSAzODUxOS4xNykgc2NhbGUoMTg5LjM4IDE4OS44MSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMzODdlYjhcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMzY2OTk0XCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiLTEzMy41NzVcIiB5MT1cIi0yMDMuMjAzXCIgeDI9XCItMTMzLjQ5NVwiIHkyPVwiLTIwMy4xMzNcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgyNTMwOS4wNjEgMzg1ODMuNDIpIHNjYWxlKDE4OS4zOCAxODkuODEpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZlMDUyXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2ZmYzMzMVwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3B5dGhvbjwvdGl0bGU+PHBhdGggZD1cIk0xNS44ODUsMi4xYy03LjEsMC02LjY1MSwzLjA3LTYuNjUxLDMuMDdWOC4zNmg2Ljc1MnYxSDYuNTQ1UzIsOC44LDIsMTYuMDA1czQuMDEzLDYuOTEyLDQuMDEzLDYuOTEySDguMzNWMTkuNTU2cy0uMTMtNC4wMTMsMy45LTQuMDEzaDYuNzYyczMuNzcyLjA2LDMuNzcyLTMuNjUyVjUuOHMuNTcyLTMuNzEyLTYuODQyLTMuNzEyaDBaTTEyLjE1Myw0LjIzN2ExLjIxNCwxLjIxNCwwLDEsMS0xLjE4MywxLjI0NHYtLjAyYTEuMjE0LDEuMjE0LDAsMCwxLDEuMjE0LTEuMjE0aDBaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0xNi4wODUsMjkuOTFjNy4xLDAsNi42NTEtMy4wOCw2LjY1MS0zLjA4VjIzLjY1SDE1Ljk4NXYtMWg5LjQ3UzMwLDIzLjE1OCwzMCwxNS45OTVzLTQuMDEzLTYuOTEyLTQuMDEzLTYuOTEySDIzLjY0VjEyLjRzLjEzLDQuMDEzLTMuOSw0LjAxM0gxMi45NzVTOS4yLDE2LjM1Niw5LjIsMjAuMDY4VjI2LjJzLS41NzIsMy43MTIsNi44NDIsMy43MTJoLjA0Wm0zLjczMi0yLjE0N0ExLjIxNCwxLjIxNCwwLDEsMSwyMSwyNi41MTl2LjAzYTEuMjE0LDEuMjE0LDAsMCwxLTEuMjE0LDEuMjE0aC4wM1pcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz5gLFxuICBcIlEgKGtkYisgZGF0YWJhc2UpXCI6IGA8cGF0aCBkPVwiTTIwLjA5MiwyOVYxOS42ODJBNi45NTMsNi45NTMsMCwwLDEsMTcuNywyMS42NDVhNi43NDMsNi43NDMsMCwwLDEtMy4wODkuNzI0QTYuNTU3LDYuNTU3LDAsMCwxLDkuNDEzLDIwLDExLjA4MSwxMS4wODEsMCwwLDEsNywxMi40NzUsMTAuMDMzLDEwLjAzMywwLDAsMSw5LjI2NCw1LjUsNy4yNTEsNy4yNTEsMCwwLDEsMTQuODc0LDNhNi4yNjYsNi4yNjYsMCwwLDEsMy4yLjc4NSw3LjMyOSw3LjMyOSwwLDAsMSwyLjQsMi4zNzNWMy40MTlIMjVWMjlabS4xNTctMTYuNTQyYTYuNDkyLDYuNDkyLDAsMCwwLTEuMTYtNC4yMzIsMy42MzQsMy42MzQsMCwwLDAtMi45MDUtMS4zODcsMy43NDIsMy43NDIsMCwwLDAtMi45NzUsMS40MTMsNi44ODEsNi44ODEsMCwwLDAtMS4yLDQuNDg1LDYuNzY3LDYuNzY3LDAsMCwwLDEuMTUyLDQuNDA2QTMuNTkzLDMuNTkzLDAsMCwwLDE2LjAwOSwxOC41YTMuNzg2LDMuNzg2LDAsMCwwLDIuOTY2LTEuNTE4QTYuODg5LDYuODg5LDAsMCwwLDIwLjI0OSwxMi40NThaXCIgc3R5bGU9XCJmaWxsOiMxZTc4YjNcIi8+YCxcbiAgXCJRI1wiOiBgPHBhdGggZD1cIk0xOS40NTEsNi4yMThoMi42MzhWOC44NTZoMi42MzdWNi4yMThoMi42MzdWOC44NTZIMzBWMTEuNUgyNy4zNjR2Mi42MzZIMzBWMTYuNzdIMjcuMzY0djIuNjM3SDI0LjcyN1YxNi43NjlIMjIuMDkxbDAsMi42MzdIMTkuNDUzVjE2Ljc2OEgxNi44MTVWMTQuMTI3aDIuNjM4VjExLjVIMTYuODE1VjguODUzaDIuNjM5Wm0yLjYzOCw3LjkxNGgyLjYzN1YxMS41SDIyLjA4OVpcIiBzdHlsZT1cImZpbGw6IzMzY1wiLz48cGF0aCBkPVwiTTE0LjAxOCwyMS41MjRhMTEuNDM2LDExLjQzNiwwLDAsMCwxLjU3Mi02LjE5MiwxMC44NzcsMTAuODc3LDAsMCwwLTEuODU4LTYuNkE1Ljg4OSw1Ljg4OSwwLDAsMCw4LjgwOCw2LjE1M2E1LjkyMSw1LjkyMSwwLDAsMC00Ljk0LDIuNTgxQTEwLjg0MiwxMC44NDIsMCwwLDAsMiwxNS4zMzNhMTAuODUzLDEwLjg1MywwLDAsMCwxLjg2OCw2LjU5Miw1LjkxOCw1LjkxOCwwLDAsMCw0Ljk0MSwyLjU4OCw1Ljc0Myw1Ljc0MywwLDAsMCwzLjI2LS45ODdsMi4zMDYsMi4zMjEsMS41NzctMi40Wm0tNS4xNy0xLjIxOCwxLjExNywxLjEyMWEzLjIyOSwzLjIyOSwwLDAsMS0xLjE3NC4yMTcsMy4zMzUsMy4zMzUsMCwwLDEtMi44MzctMS41OTMsOC4xMjUsOC4xMjUsMCwwLDEtMS4xOC00LjcxOSw4LjEsOC4xLDAsMCwxLDEuMTg0LTQuNzI0LDMuMzcyLDMuMzcyLDAsMCwxLDIuODctMS41ODgsMy4zMSwzLjMxLDAsMCwxLDIuODE5LDEuNTg1LDguMTc4LDguMTc4LDAsMCwxLDEuMTcyLDQuNzI2LDkuMTEzLDkuMTEzLDAsMCwxLS44MzMsNC4xNWwtMS41Ni0xLjU3MVpcIiBzdHlsZT1cImZpbGw6IzMzY1wiLz5gLFxuICBcIlFNTFwiOiBgPHBhdGggZD1cIk0yNy4zLDVINS44ODZMMiw4Ljk1OFYyNkgyNi4xMTRMMzAsMjIuMDQyVjVaTTE2LjksMjMuMDdsLTEuODI4Ljg1MkwxMy41LDIxLjMzMWEzLjk2OCwzLjk2OCwwLDAsMS0xLjA4Mi4xMDZjLTEuODQ1LDAtMy4xMjMtLjUtMy44NS0xLjQ5YTguMDMsOC4wMywwLDAsMS0xLjA4Mi00LjcsOC4zNTEsOC4zNTEsMCwwLDEsMS4xLTQuNzczLDQuMzc5LDQuMzc5LDAsMCwxLDMuODMzLTEuNTYxYzEuODI4LDAsMy4wODcuNTE1LDMuODMzLDEuNTQ0YTguMzUxLDguMzUxLDAsMCwxLDEuMSw0Ljc3MywxMC44MDksMTAuODA5LDAsMCwxLS40NTIsMy40NCwzLjksMy45LDAsMCwxLTEuNDczLDJabTUuODQ4LTEuNjdhMi43MzUsMi43MzUsMCwwLDEtMi4xNjgtLjY5MkE0LjE5Miw0LjE5MiwwLDAsMSwyMCwxOC4xVjE0SDE5VjEyaDFWOWgydjNoMnYySDIydjMuOWEzLjkwNywzLjkwNywwLDAsMCwuMTY4LDEuNDM3Yy4xMTIuMjMxLjM5My4zNTUuODYuMzU1bDEuNTMzLS4wNTMuMDkzLDEuNTQ0QTEyLjUxOSwxMi41MTksMCwwLDEsMjIuNzQ4LDIxLjRaTTEyLjQxNiwxMC42MTRhMi40LDIuNCwwLDAsMC0yLjI4OSwxLjEsNy42NTcsNy42NTcsMCwwLDAtLjYsMy41MTMsNy4xMzEsNy4xMzEsMCwwLDAsLjYsMy40NDJBMi40NCwyLjQ0LDAsMCwwLDEyLjQzMywxOS43YTIuNDE3LDIuNDE3LDAsMCwwLDIuMjg5LTEuMDExLDcuMzQzLDcuMzQzLDAsMCwwLC41ODYtMy40NDIsNy42OTIsNy42OTIsMCwwLDAtLjYtMy41MzFBMi40LDIuNCwwLDAsMCwxMi40MTYsMTAuNjE0WlwiIHN0eWxlPVwiZmlsbDojNDFjZDUyXCIvPmAsXG4gIFwiUlwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiLTEzNC44MTFcIiB5MT1cIi0xMDMuMjg0XCIgeDI9XCItMTM0Ljc3MlwiIHkyPVwiLTEwMy4zMjNcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg3MjEuMDk0LCAwLCAwLCAtNDgyLjkzNywgOTcyMTMuNTk1LCAtNDk4NzQuNTEyKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2NiY2VkMFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM4NDgzOGJcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCItMTM1LjM3OFwiIHkxPVwiLTEwMi45ODVcIiB4Mj1cIi0xMzUuMzM5XCIgeTI9XCItMTAzLjAyNFwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDM5OCwgMCwgMCwgLTQwNi4xMjQsIDUzODkzLCAtNDE4MTIuODM2KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzI3NmRjM1wiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMxNjVjYWFcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9yPC90aXRsZT48cGF0aCBkPVwiTTE2LDIzLjk1NmMtNy43MzIsMC0xNC00LjItMTQtOS4zNzZTOC4yNjgsNS4yLDE2LDUuMiwzMCw5LjQsMzAsMTQuNTgsMjMuNzMyLDIzLjk1NiwxNiwyMy45NTZaTTE4LjE0Myw4Ljg3QzEyLjI2Niw4Ljg3LDcuNSwxMS43NCw3LjUsMTUuMjhzNC43NjQsNi40MSwxMC42NDEsNi40MSwxMC4yMTQtMS45NjIsMTAuMjE0LTYuNDFTMjQuMDIsOC44NywxOC4xNDMsOC44N1pcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTIzLjMyMSwxOS43MjZhMTAuNTQ1LDEwLjU0NSwwLDAsMSwxLjM0LjUsMi41OTEsMi41OTEsMCwwLDEsLjY4LjQ4NSwxLjgzNSwxLjgzNSwwLDAsMSwuMzExLjQ0N2wzLjMzOSw1LjYzLTUuNCwwLTIuNTI0LTQuNzRhNi4xLDYuMSwwLDAsMC0uODM1LTEuMTQ1Ljg3OS44NzksMCwwLDAtLjY0MS0uMjkxSDE4LjMxMXY2LjE3M2wtNC43NzYsMFYxMS4wMjZoOS41OTFTMjcuNSwxMS4xLDI3LjUsMTUuMjYxLDIzLjMyMSwxOS43MjYsMjMuMzIxLDE5LjcyNlptLTIuMDc3LTUuMjgtMi44OTEsMHYyLjY4MWgyLjg5M2ExLjMyMywxLjMyMywwLDAsMCwxLjM0LTEuMzY0QTEuMjQ3LDEuMjQ3LDAsMCwwLDIxLjI0NCwxNC40NDdaXCIgc3R5bGU9XCJmaWxsOnVybCgjYilcIi8+YCxcbiAgXCJSYWNrZXRcIjogYDxjaXJjbGUgY3g9XCIxNlwiIGN5PVwiMTZcIiByPVwiMTRcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTI3LjAxNiwyNC42NDFhMTQsMTQsMCwwLDAtMTUuOC0yMS44QzE2LjksNS44MjIsMjQuNDEzLDE1LjU0OSwyNy4wMTYsMjQuNjQxWlwiIHN0eWxlPVwiZmlsbDojM2U1YmE5XCIvPjxwYXRoIGQ9XCJNMTMuOTk1LDEwLjkzYTI0LjMsMjQuMywwLDAsMC03LjIyLTUuNDZBMTQsMTQsMCwwLDAsNS40NjMsMjUuMjE3LDM5LjU2LDM5LjU2LDAsMCwxLDEzLjk5NSwxMC45M1pcIiBzdHlsZT1cImZpbGw6IzlmMWQyMFwiLz48cGF0aCBkPVwiTTE2LjU3NSwxNC4xQTMyLjY0NSwzMi42NDUsMCwwLDAsOS40MywyOC4zNjVhMTQuMDE2LDE0LjAxNiwwLDAsMCwxMy4zLS4wODlBMzguNjQyLDM4LjY0MiwwLDAsMCwxNi41NzUsMTQuMVpcIiBzdHlsZT1cImZpbGw6IzlmMWQyMFwiLz5gLFxuICBcIlJhem9yIEMjXCI6IGA8cGF0aCBkPVwiTTIzLjg0NCwyNy42OTJhMTYuMzMyLDE2LjMzMiwwLDAsMS02LjY0NSwxLjNxLTYuMzY0LDAtMTAuMDEzLTMuMjQzYTExLjMsMTEuMywwLDAsMS0zLjY0OS04LjlBMTMuNzE2LDEzLjcxNiwwLDAsMSw3LjMyMiw2Ljk1MSwxMi43MTYsMTIuNzE2LDAsMCwxLDE2LjksMy4wMDhhMTEuNjc2LDExLjY3NiwwLDAsMSw4LjQyNSwzLjAwNiw5Ljk5NCw5Ljk5NCwwLDAsMSwzLjE0Miw3LjUzMywxMC4xODcsMTAuMTg3LDAsMCwxLTIuMzE4LDcuMTE0LDcuNTMyLDcuNTMyLDAsMCwxLTUuODE3LDIuNTQ3LDIuNjEzLDIuNjEzLDAsMCwxLTEuODQ1LS42NDIsMi4zMjMsMi4zMjMsMCwwLDEtLjc2NC0xLjYsNC45LDQuOSwwLDAsMS00LjE0OCwyLjI0Myw0LjYsNC42LDAsMCwxLTMuNTA3LTEuNDc5LDUuNzA2LDUuNzA2LDAsMCwxLTEuMzg0LTQuMDYzLDkuOTEzLDkuOTEzLDAsMCwxLDIuMi02LjM1N3EyLjItMi43NjMsNC44LTIuNzYzYTUuMDYzLDUuMDYzLDAsMCwxLDQuMjU2LDEuNzE2bC4zMTEtMS4zMzhoMi40MDVsLTIuMDgxLDkuMDhhMTAuNzE2LDEwLjcxNiwwLDAsMC0uMzUyLDIuMjQzcTAsLjk3Mi43NDQuOTcyYTQuODE5LDQuODE5LDAsMCwwLDMuODc3LTIuMDQ3LDguOTMsOC45MywwLDAsMCwxLjYyMS01LjY4MSw3Ljk4LDcuOTgsMCwwLDAtMi42NzUtNi4xNzUsOS44ODcsOS44ODcsMCwwLDAtNi45MTktMi40MzJBMTAuNiwxMC42LDAsMCwwLDguNzEzLDguMzUyYTEyLjA2NiwxMi4wNjYsMCwwLDAtMy4yLDguNDk1LDkuNTYxLDkuNTYxLDAsMCwwLDMuMDYsNy41NzNxMy4wNiwyLjcsOC41ODYsMi43YTEzLjc1NywxMy43NTcsMCwwLDAsNS42NzUtMS4wNTRaTTE5LjQ2NiwxMi4yNWEzLjk3NywzLjk3NywwLDAsMC0zLjYtMS43MTZxLTEuODI0LDAtMy4yNjMsMi4yM2E4LjcyNiw4LjcyNiwwLDAsMC0xLjQzOSw0LjgyNHEwLDMuNjM1LDIuOTA1LDMuNjM1QTMuNzcxLDMuNzcxLDAsMCwwLDE2LjcyLDIwLjA0YTYuMzA5LDYuMzA5LDAsMCwwLDEuNy0zLjJaXCIgc3R5bGU9XCJmaWxsOiMzNjg4MzJcIi8+YCxcbiAgXCJSZWFjdCBKU1hcIjogYDxjaXJjbGUgY3g9XCIxNlwiIGN5PVwiMTUuOTc0XCIgcj1cIjIuNVwiIHN0eWxlPVwiZmlsbDojMDBkOGZmXCIvPjxwYXRoIGQ9XCJNMTYsMjEuNzA2YTI4LjM4NSwyOC4zODUsMCwwLDEtOC44OC0xLjIsMTEuMywxMS4zLDAsMCwxLTMuNjU3LTEuOTU4QTMuNTQzLDMuNTQzLDAsMCwxLDIsMTUuOTc0YzAtMS42NTMsMS44MTYtMy4yNzMsNC44NTgtNC4zMzNBMjguNzU1LDI4Ljc1NSwwLDAsMSwxNiwxMC4yOTNhMjguNjc0LDI4LjY3NCwwLDAsMSw5LjAyMiwxLjMyNCwxMS4zNzYsMTEuMzc2LDAsMCwxLDMuNTM4LDEuODY2QTMuMzkxLDMuMzkxLDAsMCwxLDMwLDE1Ljk3NGMwLDEuNzE4LTIuMDMsMy40NTktNS4zLDQuNTQxQTI4LjgsMjguOCwwLDAsMSwxNiwyMS43MDZabTAtMTAuMjE3YTI3Ljk0OCwyNy45NDgsMCwwLDAtOC43NDksMS4yODJjLTIuOC45NzctNC4wNTUsMi4zMTMtNC4wNTUsMy4yLDAsLjkyOCwxLjM0OSwyLjM4Nyw0LjMxMSwzLjRBMjcuMjEsMjcuMjEsMCwwLDAsMTYsMjAuNTFhMjcuNiwyNy42LDAsMCwwLDguMzI1LTEuMTNDMjcuNCwxOC4zNjEsMjguOCwxNi45LDI4LjgsMTUuOTc0YTIuMzI3LDIuMzI3LDAsMCwwLTEuMDEtMS41NzMsMTAuMTk0LDEwLjE5NCwwLDAsMC0zLjE2MS0xLjY1NEEyNy40NjIsMjcuNDYyLDAsMCwwLDE2LDExLjQ4OVpcIiBzdHlsZT1cImZpbGw6IzAwZDhmZlwiLz48cGF0aCBkPVwiTTEwLjMyLDI4LjQ0M2EyLjYzOSwyLjYzOSwwLDAsMS0xLjMzNi0uMzI4Yy0xLjQzMi0uODI2LTEuOTI4LTMuMjA4LTEuMzI3LTYuMzczYTI4Ljc1NSwyOC43NTUsMCwwLDEsMy40LTguNTkzaDBBMjguNjc2LDI4LjY3NiwwLDAsMSwxNi43MSw1Ljk5NWExMS4zNzYsMTEuMzc2LDAsMCwxLDMuMzg0LTIuMTMzLDMuMzkxLDMuMzkxLDAsMCwxLDIuODc4LDBjMS40ODkuODU4LDEuOTgyLDMuNDg2LDEuMjg3LDYuODU5YTI4LjgwNiwyOC44MDYsMCwwLDEtMy4zMTYsOC4xMzMsMjguMzg1LDI4LjM4NSwwLDAsMS01LjQ3Niw3LjA5MywxMS4zLDExLjMsMCwwLDEtMy41MjMsMi4xODlBNC45MjYsNC45MjYsMCwwLDEsMTAuMzIsMjguNDQzWm0xLjc3My0xNC43YTI3Ljk0OCwyNy45NDgsMCwwLDAtMy4yNiw4LjIxOWMtLjU1MywyLjkxNS0uMDIyLDQuNjY4Ljc1LDUuMTE0LjguNDYzLDIuNzQyLjAyNCw1LjEtMi4wMzZhMjcuMjA5LDI3LjIwOSwwLDAsMCw1LjIyNy02Ljc5LDI3LjYsMjcuNiwwLDAsMCwzLjE4MS03Ljc3NmMuNjU0LTMuMTc1LjA4OS01LjExOS0uNzEzLTUuNTgxYTIuMzI3LDIuMzI3LDAsMCwwLTEuODY4LjA4OUExMC4xOTQsMTAuMTk0LDAsMCwwLDE3LjUsNi45YTI3LjQ2NCwyNy40NjQsMCwwLDAtNS40LDYuODQ5WlwiIHN0eWxlPVwiZmlsbDojMDBkOGZmXCIvPjxwYXRoIGQ9XCJNMjEuNjc3LDI4LjQ1NmMtMS4zNTUsMC0zLjA3Ni0uODItNC44NjgtMi4zNjFhMjguNzU2LDI4Ljc1NiwwLDAsMS01Ljc0Ny03LjIzN2gwYTI4LjY3NiwyOC42NzYsMCwwLDEtMy4zNzQtOC40NzEsMTEuMzc2LDExLjM3NiwwLDAsMS0uMTU4LTRBMy4zOTEsMy4zOTEsMCwwLDEsOC45NjQsMy45YzEuNDg3LS44NjEsNC4wMS4wMjQsNi41ODUsMi4zMWEyOC44LDI4LjgsMCwwLDEsNS4zOSw2LjkzNCwyOC4zODQsMjguMzg0LDAsMCwxLDMuNDEsOC4yODcsMTEuMywxMS4zLDAsMCwxLC4xMzcsNC4xNDYsMy41NDMsMy41NDMsMCwwLDEtMS40OTQsMi41NTVBMi41OSwyLjU5LDAsMCwxLDIxLjY3NywyOC40NTZabS05LjU4LTEwLjJhMjcuOTQ5LDI3Ljk0OSwwLDAsMCw1LjQ5Miw2LjkyOWMyLjI0OSwxLjkzNSw0LjAzMywyLjM1MSw0LjgsMS45LjgtLjQ2NSwxLjM5LTIuMzYzLjc4Mi01LjQzNEEyNy4yMTIsMjcuMjEyLDAsMCwwLDE5LjksMTMuNzQsMjcuNiwyNy42LDAsMCwwLDE0Ljc1NSw3LjFjLTIuNDI0LTIuMTUyLTQuMzktMi42MzMtNS4xOTEtMi4xNjlhMi4zMjcsMi4zMjcsMCwwLDAtLjg1NSwxLjY2MiwxMC4xOTQsMTAuMTk0LDAsMCwwLC4xNTMsMy41NjUsMjcuNDY1LDI3LjQ2NSwwLDAsMCwzLjIzNiw4LjFaXCIgc3R5bGU9XCJmaWxsOiMwMGQ4ZmZcIi8+YCxcbiAgXCJSZWFjdCBUU1hcIjogYDxjaXJjbGUgY3g9XCIxNlwiIGN5PVwiMTUuOTc0XCIgcj1cIjIuNVwiIHN0eWxlPVwiZmlsbDojMDA3YWNjXCIvPjxwYXRoIGQ9XCJNMTYsMjEuNzA2YTI4LjM4NSwyOC4zODUsMCwwLDEtOC44OC0xLjIsMTEuMywxMS4zLDAsMCwxLTMuNjU3LTEuOTU4QTMuNTQzLDMuNTQzLDAsMCwxLDIsMTUuOTc0YzAtMS42NTMsMS44MTYtMy4yNzMsNC44NTgtNC4zMzNBMjguNzU1LDI4Ljc1NSwwLDAsMSwxNiwxMC4yOTNhMjguNjc0LDI4LjY3NCwwLDAsMSw5LjAyMiwxLjMyNCwxMS4zNzYsMTEuMzc2LDAsMCwxLDMuNTM4LDEuODY2QTMuMzkxLDMuMzkxLDAsMCwxLDMwLDE1Ljk3NGMwLDEuNzE4LTIuMDMsMy40NTktNS4zLDQuNTQxQTI4LjgsMjguOCwwLDAsMSwxNiwyMS43MDZabTAtMTAuMjE3YTI3Ljk0OCwyNy45NDgsMCwwLDAtOC43NDksMS4yODJjLTIuOC45NzctNC4wNTUsMi4zMTMtNC4wNTUsMy4yLDAsLjkyOCwxLjM0OSwyLjM4Nyw0LjMxMSwzLjRBMjcuMjEsMjcuMjEsMCwwLDAsMTYsMjAuNTFhMjcuNiwyNy42LDAsMCwwLDguMzI1LTEuMTNDMjcuNCwxOC4zNjEsMjguOCwxNi45LDI4LjgsMTUuOTc0YTIuMzI3LDIuMzI3LDAsMCwwLTEuMDEtMS41NzMsMTAuMTk0LDEwLjE5NCwwLDAsMC0zLjE2MS0xLjY1NEEyNy40NjIsMjcuNDYyLDAsMCwwLDE2LDExLjQ4OVpcIiBzdHlsZT1cImZpbGw6IzAwN2FjY1wiLz48cGF0aCBkPVwiTTEwLjMyLDI4LjQ0M2EyLjYzOSwyLjYzOSwwLDAsMS0xLjMzNi0uMzI4Yy0xLjQzMi0uODI2LTEuOTI4LTMuMjA4LTEuMzI3LTYuMzczYTI4Ljc1NSwyOC43NTUsMCwwLDEsMy40LTguNTkzaDBBMjguNjc2LDI4LjY3NiwwLDAsMSwxNi43MSw1Ljk5NWExMS4zNzYsMTEuMzc2LDAsMCwxLDMuMzg0LTIuMTMzLDMuMzkxLDMuMzkxLDAsMCwxLDIuODc4LDBjMS40ODkuODU4LDEuOTgyLDMuNDg2LDEuMjg3LDYuODU5YTI4LjgwNiwyOC44MDYsMCwwLDEtMy4zMTYsOC4xMzMsMjguMzg1LDI4LjM4NSwwLDAsMS01LjQ3Niw3LjA5MywxMS4zLDExLjMsMCwwLDEtMy41MjMsMi4xODlBNC45MjYsNC45MjYsMCwwLDEsMTAuMzIsMjguNDQzWm0xLjc3My0xNC43YTI3Ljk0OCwyNy45NDgsMCwwLDAtMy4yNiw4LjIxOWMtLjU1MywyLjkxNS0uMDIyLDQuNjY4Ljc1LDUuMTE0LjguNDYzLDIuNzQyLjAyNCw1LjEtMi4wMzZhMjcuMjA5LDI3LjIwOSwwLDAsMCw1LjIyNy02Ljc5LDI3LjYsMjcuNiwwLDAsMCwzLjE4MS03Ljc3NmMuNjU0LTMuMTc1LjA4OS01LjExOS0uNzEzLTUuNTgxYTIuMzI3LDIuMzI3LDAsMCwwLTEuODY4LjA4OUExMC4xOTQsMTAuMTk0LDAsMCwwLDE3LjUsNi45YTI3LjQ2NCwyNy40NjQsMCwwLDAtNS40LDYuODQ5WlwiIHN0eWxlPVwiZmlsbDojMDA3YWNjXCIvPjxwYXRoIGQ9XCJNMjEuNjc3LDI4LjQ1NmMtMS4zNTUsMC0zLjA3Ni0uODItNC44NjgtMi4zNjFhMjguNzU2LDI4Ljc1NiwwLDAsMS01Ljc0Ny03LjIzN2gwYTI4LjY3NiwyOC42NzYsMCwwLDEtMy4zNzQtOC40NzEsMTEuMzc2LDExLjM3NiwwLDAsMS0uMTU4LTRBMy4zOTEsMy4zOTEsMCwwLDEsOC45NjQsMy45YzEuNDg3LS44NjEsNC4wMS4wMjQsNi41ODUsMi4zMWEyOC44LDI4LjgsMCwwLDEsNS4zOSw2LjkzNCwyOC4zODQsMjguMzg0LDAsMCwxLDMuNDEsOC4yODcsMTEuMywxMS4zLDAsMCwxLC4xMzcsNC4xNDYsMy41NDMsMy41NDMsMCwwLDEtMS40OTQsMi41NTVBMi41OSwyLjU5LDAsMCwxLDIxLjY3NywyOC40NTZabS05LjU4LTEwLjJhMjcuOTQ5LDI3Ljk0OSwwLDAsMCw1LjQ5Miw2LjkyOWMyLjI0OSwxLjkzNSw0LjAzMywyLjM1MSw0LjgsMS45LjgtLjQ2NSwxLjM5LTIuMzYzLjc4Mi01LjQzNEEyNy4yMTIsMjcuMjEyLDAsMCwwLDE5LjksMTMuNzQsMjcuNiwyNy42LDAsMCwwLDE0Ljc1NSw3LjFjLTIuNDI0LTIuMTUyLTQuMzktMi42MzMtNS4xOTEtMi4xNjlhMi4zMjcsMi4zMjcsMCwwLDAtLjg1NSwxLjY2MiwxMC4xOTQsMTAuMTk0LDAsMCwwLC4xNTMsMy41NjUsMjcuNDY1LDI3LjQ2NSwwLDAsMCwzLjIzNiw4LjFaXCIgc3R5bGU9XCJmaWxsOiMwMDdhY2NcIi8+YCxcbiAgXCJSZWFzb25cIjogYDxwb2x5bGluZSBwb2ludHM9XCIyIDIgMzAgMiAzMCAzMCAyIDMwIDIgMlwiIHN0eWxlPVwiZmlsbDojZGQ0YjM5XCIvPjxwYXRoIGQ9XCJNOS4wNTEsMTcuNTI3cTIuNTM3LDAsNS4wNzIsMEE0Ljk0Nyw0Ljk0NywwLDAsMSwxNy4xLDE4LjVhMy4yOSwzLjI5LDAsMCwxLDEuMTI4LDIuMjY3LDQuMTE3LDQuMTE3LDAsMCwxLS43NzgsMy4wMjIsMy42LDMuNiwwLDAsMS0xLjEzNy45MDVsMi4yNDcsMy41NDktMy4wNjEsMC0xLjYtMy4wNDMtMi4xNTQsMCwwLDMuMDMySDkuMDUxVjE3LjUyN20yLjY5LDIuMTI4LDAsMy40MzgsMS45ODksMGEyLjE4NCwyLjE4NCwwLDAsMCwxLjQ2OC0uNDUyLDEuODE0LDEuODE0LDAsMCwwLC40ODItMS41NDQsMS40NjksMS40NjksMCwwLDAtLjcwNS0xLjE4LDIuNzY4LDIuNzY4LDAsMCwwLTEuNDM3LS4yNjlDMTIuOTQsMTkuNjU0LDExLjc0MSwxOS42NTUsMTEuNzQxLDE5LjY1NVptOC4zODQtMi4xM2g4LjM1djIuMTNoLTUuNjZWMjEuOGw1LjExLDB2Mi4xMTlIMjIuODJWMjYuMWg1LjgyNHYyLjE0MkgyMC4xMjVWMTcuNTI1WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG4gIFwiUmVnb1wiOiBgPGRlZnM+PGNsaXBQYXRoIGlkPVwiYVwiPjxwYXRoIGQ9XCJNNy4wNTUsMTYuMjQxYzMuNDE1LTEwLjIyLDE0Ljc1OS05LjQ3MywxNy45MjQsMGwuMSw1Ljg5M2ExNS41NjIsMTUuNTYyLDAsMCwwLTkuMDM2LDcuMjQ2QTE3LjY0MSwxNy42NDEsMCwwLDAsNy4wMywyMi4zNDZaXCIgc3R5bGU9XCJmaWxsOm5vbmVcIi8+PC9jbGlwUGF0aD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9yZWdvPC90aXRsZT48cGF0aCBkPVwiTTcuMDMsMTYuMjQxbDIuNi00LjU1OWMtMi40MTgtLjMxMi0yLjYwNi0zLjQzMS0uOC05LjA2MkMzLjgwOSw4Ljg1MywyLjQyLDEwLjIyOCw3LjAzLDE2LjI0MVpcIiBzdHlsZT1cImZpbGw6I2JmYmZiZjtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTI0Ljk3LDE2LjI0MWwtMi41OTUtNC41NTljMi40MTgtLjMxMiwyLjYwNi0zLjQzMS44LTkuMDYyQzI4LjE5MSw4Ljg1MywyOS41OCwxMC4yMjgsMjQuOTcsMTYuMjQxWlwiIHN0eWxlPVwiZmlsbDojYmZiZmJmO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNNy4wNTUsMTYuMjQxYzMuNDE1LTEwLjIyLDE0Ljc1OS05LjQ3MywxNy45MjQsMGwuMSw1Ljg5M2ExNS41NjIsMTUuNTYyLDAsMCwwLTkuMDM2LDcuMjQ2QTE3LjY0MSwxNy42NDEsMCwwLDAsNy4wMywyMi4zNDZaXCIgc3R5bGU9XCJmaWxsOm5vbmVcIi8+PGcgc3R5bGU9XCJjbGlwLXBhdGg6dXJsKCNhKVwiPjxyZWN0IHg9XCIxNi4wNTNcIiB5PVwiNy45NjJcIiB3aWR0aD1cIjkuNTQ5XCIgaGVpZ2h0PVwiMjEuODk5XCIgc3R5bGU9XCJmaWxsOiM1MzYzNjdcIi8+PHJlY3QgeD1cIjUuMzIyXCIgeT1cIjcuOTYyXCIgd2lkdGg9XCIxMC43MzJcIiBoZWlnaHQ9XCIyMS44OTlcIiBzdHlsZT1cImZpbGw6Izc4OTI5YVwiLz48L2c+PGNpcmNsZSBjeD1cIjE2LjA0XCIgY3k9XCIxNi4yNDFcIiByPVwiMS4xNjZcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuICBcIlJlU2NyaXB0XCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCIxMS40MjFcIiB5MT1cIi0yMjEuNzA1XCIgeDI9XCIyMS41MDlcIiB5Mj1cIi0yNDguNzkyXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMSwgMCwgMCwgLTEsIDAsIC0yMTgpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZTg0ZjRmXCIvPjxzdG9wIG9mZnNldD1cIjAuNDA5XCIgc3RvcC1jb2xvcj1cIiNkYjQ2NDZcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OTlcIiBzdG9wLWNvbG9yPVwiI2NiMzkzOVwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3Jlc2NyaXB0PC90aXRsZT48cGF0aCBkPVwiTTIsMTAuOTdjMC0zLjczOCwwLTUuNi45NTItNi45MTZhNC45OTIsNC45OTIsMCwwLDEsMS4xLTEuMUM1LjM2NCwyLDcuMjMzLDIsMTAuOTY5LDJIMjEuMDNjMy43MzgsMCw1LjYwNSwwLDYuOTE2Ljk1MWE0Ljk5Miw0Ljk5MiwwLDAsMSwxLjEsMS4xQzMwLDUuMzY0LDMwLDcuMjMyLDMwLDEwLjk3VjIxLjAzYzAsMy43MzcsMCw1LjYwNS0uOTUyLDYuOTE2YTQuOTY2LDQuOTY2LDAsMCwxLTEuMSwxLjFDMjYuNjM2LDMwLDI0Ljc2OCwzMCwyMS4wMywzMEgxMC45NjljLTMuNzM2LDAtNS42LDAtNi45MTUtLjk1MmE0Ljk2Niw0Ljk2NiwwLDAsMS0xLjEtMS4xQzIsMjYuNjM2LDIsMjQuNzY3LDIsMjEuMDNaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0yMC45NzQsMTUuNTU0YTMuMzI1LDMuMzI1LDAsMSwwLTMuMzI0LTMuMzI1QTMuMzI1LDMuMzI1LDAsMCwwLDIwLjk3NCwxNS41NTRaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk05LjMxNiwxMS44MDlhNC42NzYsNC42NzYsMCwwLDEsLjIwNi0xLjk4N0ExLjg4NiwxLjg4NiwwLDAsMSwxMC4zNDUsOWE0LjcsNC43LDAsMCwxLDEuOTg3LS4yMDVoMi42NFYyMS4wNDVhNC42ODYsNC42ODYsMCwwLDEtLjE0NCwxLjY2NCwxLjg5MiwxLjg5MiwwLDAsMS0xLjAyLDEuMDIsNC43Miw0LjcyLDAsMCwxLTEuNjY0LjE0Myw0LjcxNyw0LjcxNywwLDAsMS0xLjY2NC0uMTQzLDEuODkyLDEuODkyLDAsMCwxLTEuMDItMS4wMiw0LjcyLDQuNzIsMCwwLDEtLjE0My0xLjY2NFpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuICBcInJlU1QgKHJlU3RydWN0dXJlZFRleHQpXCI6IGA8cGF0aCBkPVwiTTE2LDMwQTEzLjg1OSwxMy44NTksMCwwLDEsMi4yODYsMTYsMTQuMTQ5LDE0LjE0OSwwLDAsMSw2LjMsNi4xLDEzLjUxNywxMy41MTcsMCwwLDEsMjUuNyw2LjEsMTQuMTQ5LDE0LjE0OSwwLDAsMSwyOS43MTQsMTYsMTMuODU5LDEzLjg1OSwwLDAsMSwxNiwzMFpcIiBzdHlsZT1cImZpbGw6I2NlM2YzMVwiLz48cGF0aCBkPVwiTTExLjg2OSwyMy4wMTVoLS40YTQuMjYzLDQuMjYzLDAsMCwxLTEuMDQ4LS4xMTMsMS4zODcsMS4zODcsMCwwLDEtLjc2Ny0uNTQ4LDIuMiwyLjIsMCwwLDEtLjQwOS0xLjAyNkExMy4yOCwxMy4yOCwwLDAsMSw5LjE1OSwxOS42YTEyLjc4LDEyLjc4LDAsMCwwLS4wOC0xLjY4NywxLjc3MywxLjc3MywwLDAsMC0uNDA1LS45MjQsMS4zMjUsMS4zMjUsMCwwLDAtMS4wMjYtLjM5MVYxNS40YTEuMzI1LDEuMzI1LDAsMCwwLDEuMDI2LS4zOTEsMS43NzMsMS43NzMsMCwwLDAsLjQwNS0uOTI0LDEyLjc4LDEyLjc4LDAsMCwwLC4wOC0xLjY4NywxMy4yOCwxMy4yOCwwLDAsMSwuMDg0LTEuNzMxLDIuMiwyLjIsMCwwLDEsLjQwOS0xLjAyNiwxLjM4NywxLjM4NywwLDAsMSwuNzY3LS41NDgsNC4yNjMsNC4yNjMsMCwwLDEsMS4wNDgtLjExM2guNHYxLjE0aC0uMjI2cS0uNzYsMC0uOTMxLjRhNy43Miw3LjcyLDAsMCwwLS4xNzIsMi4xNyw0Ljg3Niw0Ljg3NiwwLDAsMS0uNDE2LDIuMzE2QTIuMTE3LDIuMTE3LDAsMCwxLDguODU5LDE2YTIuMDg5LDIuMDg5LDAsMCwxLDEuMjY0Ljk4NkE0Ljg3Niw0Ljg3NiwwLDAsMSwxMC41NCwxOS4zYTcuNzIsNy43MiwwLDAsMCwuMTcyLDIuMTdxLjE3Mi40LjkzMS40aC4yMjZabTEuNi0zLjE0MWgxLjAzNVYxNi40MmgxLjQ1OWwxLjk3LDMuNDU0aDEuMTg0TDE3LjA0LDE2LjMwOGEyLjI0MywyLjI0MywwLDAsMCwxLjgzMy0yLjMxOWMwLTEuNy0xLjItMi4yOTQtMi44NTUtMi4yOTRIMTMuNDc0Wm0xLjAzNS00LjNWMTIuNTNoMS4zNTljMS4yNzIsMCwxLjk3LjM4NiwxLjk3LDEuNDU5cy0uNywxLjU4My0xLjk3LDEuNTgzWm01LjU1Ny02LjU5MWguNGE0LjI2Myw0LjI2MywwLDAsMSwxLjA0OC4xMTMsMS4zODcsMS4zODcsMCwwLDEsLjc2Ny41NDgsMi4yLDIuMiwwLDAsMSwuNDA5LDEuMDI2LDEzLjI4LDEzLjI4LDAsMCwxLC4wODQsMS43MzEsMTIuNzgsMTIuNzgsMCwwLDAsLjA4LDEuNjg3LDEuNzczLDEuNzczLDAsMCwwLC40MDUuOTI0LDEuMzI1LDEuMzI1LDAsMCwwLDEuMDI2LjM5MXYxLjE5MWExLjMyNSwxLjMyNSwwLDAsMC0xLjAyNi4zOTEsMS43NzMsMS43NzMsMCwwLDAtLjQwNS45MjQsMTIuNzgsMTIuNzgsMCwwLDAtLjA4LDEuNjg3LDEzLjI4LDEzLjI4LDAsMCwxLS4wODQsMS43MzEsMi4yLDIuMiwwLDAsMS0uNDA5LDEuMDI2LDEuMzg3LDEuMzg3LDAsMCwxLS43NjcuNTQ4LDQuMjYzLDQuMjYzLDAsMCwxLTEuMDQ4LjExM2gtLjR2LTEuMTRoLjIyNnEuNzYsMCwuOTMxLS40QTcuNzIsNy43MiwwLDAsMCwyMS40LDE5LjNhNC44NzYsNC44NzYsMCwwLDEsLjQxNi0yLjMxNkEyLjA4OSwyLjA4OSwwLDAsMSwyMy4wNzUsMTZhMi4xMTcsMi4xMTcsMCwwLDEtMS4yNjQtLjk5NCw0Ljg3Niw0Ljg3NiwwLDAsMS0uNDE2LTIuMzE2LDcuNzIsNy43MiwwLDAsMC0uMTcyLTIuMTdxLS4xNzItLjQtLjkzMS0uNGgtLjIyNlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuICBcIlJvYm90IEZyYW1ld29ya1wiOiBgPGNpcmNsZSBjeD1cIjE2XCIgY3k9XCIxNlwiIHI9XCIxNFwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTAuMzg3LDE0LjZhMi43MjcsMi43MjcsMCwwLDEsNS40NTMsMCwuOTkuOTksMCwxLDEtMS45OCwwLC43NDYuNzQ2LDAsMCwwLTEuNDkyLDAsLjk5Ljk5LDAsMSwxLTEuOTgsMG0xMS4zLDQuNTg2YS45OTEuOTkxLDAsMCwxLS45OTIuOTkySDExLjUwOGEuOTkyLjk5MiwwLDAsMSwwLTEuOTg0aDkuMTg0YS45OTQuOTk0LDAsMCwxLC45OTIuOTkyTTE3LjM5MSwxNS4xNmEuOTkyLjk5MiwwLDAsMSwuMjctMS4zNzVsMi4yOTMtMS41NTFhLjk4OS45ODksMCwxLDEsMS4xMDksMS42MzdsLTIuMywxLjU1MWEuOTY1Ljk2NSwwLDAsMS0uNTUxLjE3Mi45OTQuOTk0LDAsMCwxLS44MjQtLjQzNG02LjI4OSw2LjA5NGEuNzA3LjcwNywwLDAsMS0uMjA3LjVsLTEuNzA3LDEuNzA3YS43MDcuNzA3LDAsMCwxLS41LjIwN0gxMC44YS43MDcuNzA3LDAsMCwxLS41LS4yMDdMOC42LDIxLjc1NGEuNzA3LjcwNywwLDAsMS0uMjA3LS41VjEwLjhhLjcwNy43MDcsMCwwLDEsLjIwNy0uNUwxMC4zLDguNTk0YS43MDcuNzA3LDAsMCwxLC41LS4yMDdIMjEuMjY2YS43MDcuNzA3LDAsMCwxLC41LjIwN0wyMy40NzMsMTAuM2EuNzA3LjcwNywwLDAsMSwuMjA3LjVaTTI1LjEyOSw5LjE2LDIyLjksNi45M0ExLjgwNywxLjgwNywwLDAsMCwyMS42MjksNi40SDEwLjQzOGExLjgwNywxLjgwNywwLDAsMC0xLjI3My41MjdMNi45MzgsOS4xNmExLjgsMS44LDAsMCwwLS41MjcsMS4yN1YyMS42MjFhMS44LDEuOCwwLDAsMCwuNTI3LDEuMjczbDIuMjI3LDIuMjNhMS44MSwxLjgxLDAsMCwwLDEuMjczLjUyM0gyMS42MjlhMS44LDEuOCwwLDAsMCwxLjI3My0uNTIzbDIuMjI3LTIuMjNhMS43ODQsMS43ODQsMCwwLDAsLjUyNy0xLjI3M1YxMC40MzRhMS43ODQsMS43ODQsMCwwLDAtLjUyNy0xLjI3M1wiLz5gLFxuICBcIlJ1YnlcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIi0yMzUuOTU3XCIgeTE9XCItMzA4LjU3OVwiIHgyPVwiLTIzNS45ODZcIiB5Mj1cIi0zMDguNTI3XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMjAyLjkzNSwgMCwgMCwgLTIwMi43OCwgNDc5MTAuNDYxLCAtNjI1NDEuMTYpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmI3NjU1XCIvPjxzdG9wIG9mZnNldD1cIjAuNDFcIiBzdG9wLWNvbG9yPVwiI2U0MmIxZVwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5XCIgc3RvcC1jb2xvcj1cIiM5MDBcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjOTAwXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiLTIzNS41NzFcIiB5MT1cIi0zMDkuMDg3XCIgeDI9XCItMjM1LjY5N1wiIHkyPVwiLTMwOS4wNDFcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg2MC4zMDgsIDAsIDAsIC0xMTEuNzc4LCAxNDIzNi4zNTEsIC0zNDUyNS4zOTUpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjODcxMTAxXCIvPjxzdG9wIG9mZnNldD1cIjAuOTlcIiBzdG9wLWNvbG9yPVwiIzkxMTIwOVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM5MTEyMDlcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJjXCIgeDE9XCItMjM1Ljg5NlwiIHkxPVwiLTMxMy4zNjJcIiB4Mj1cIi0yMzUuOTM3XCIgeTI9XCItMzEzLjEyOVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDE4OC4zMiwgMCwgMCwgLTIxLjk4NiwgNDQ0NDcuMzAyLCAtNjg1Ni44ODIpXCIgeGxpbms6aHJlZj1cIiNiXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImRcIiB4MT1cIi0yMzMuNTE1XCIgeTE9XCItMzA5LjA4MlwiIHgyPVwiLTIzMy40OTdcIiB5Mj1cIi0zMDkuMTYxXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoNjUuMjIyLCAwLCAwLCAtOTcuMSwgMTUyMzcuODAyLCAtMjk5OTEuODE0KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjIzXCIgc3RvcC1jb2xvcj1cIiNlNTcyNTJcIi8+PHN0b3Agb2Zmc2V0PVwiMC40NlwiIHN0b3AtY29sb3I9XCIjZGUzYjIwXCIvPjxzdG9wIG9mZnNldD1cIjAuOTlcIiBzdG9wLWNvbG9yPVwiI2E2MDAwM1wiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNhNjAwMDNcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJlXCIgeDE9XCItMjM1LjMxNFwiIHkxPVwiLTMwOS41MzRcIiB4Mj1cIi0yMzUuMzFcIiB5Mj1cIi0zMDkuNjA3XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMTA1LjMyLCAwLCAwLCAtMTA2LjgyNSwgMjQ3OTguOTI1LCAtMzMwNTMuMTUyKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjIzXCIgc3RvcC1jb2xvcj1cIiNlNDcxNGVcIi8+PHN0b3Agb2Zmc2V0PVwiMC41NlwiIHN0b3AtY29sb3I9XCIjYmUxYTBkXCIvPjxzdG9wIG9mZnNldD1cIjAuOTlcIiBzdG9wLWNvbG9yPVwiI2E4MGQwMFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNhODBkMDBcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJmXCIgeDE9XCItMjM1Ljg4MlwiIHkxPVwiLTMxMS44NTFcIiB4Mj1cIi0yMzUuODY5XCIgeTI9XCItMzExLjkzNVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDk0LjMyMSwgMCwgMCwgLTY2LjQxOCwgMjIyNzEuNDk5LCAtMjA3MDcuMDA0KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjE4XCIgc3RvcC1jb2xvcj1cIiNlNDYzNDJcIi8+PHN0b3Agb2Zmc2V0PVwiMC40XCIgc3RvcC1jb2xvcj1cIiNjODI0MTBcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjYTgwZDAwXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2E4MGQwMFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImdcIiB4MT1cIi0yMzUuNDEyXCIgeTE9XCItMzIxLjA3NFwiIHgyPVwiLTIzNS4zMzNcIiB5Mj1cIi0zMjAuOTU4XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoNzAuNzY3LCAwLCAwLCAtMjQuMzAxLCAxNjY3OC4xMTYsIC03Nzk4LjY0NylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMC41NFwiIHN0b3AtY29sb3I9XCIjYzgxZjExXCIvPjxzdG9wIG9mZnNldD1cIjAuOTlcIiBzdG9wLWNvbG9yPVwiI2JmMDkwNVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNiZjA5MDVcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJoXCIgeDE9XCItMjIzLjgyMVwiIHkxPVwiLTMxMC4xMTZcIiB4Mj1cIi0yMjMuNzk2XCIgeTI9XCItMzEwLjE4XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMTguMTc3LCAwLCAwLCAtNzIuNjQ1LCA0MDcxLjAxNywgLTIyNTEwLjIzMylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zMVwiIHN0b3AtY29sb3I9XCIjZGU0MDI0XCIvPjxzdG9wIG9mZnNldD1cIjAuOTlcIiBzdG9wLWNvbG9yPVwiI2JmMTkwYlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNiZjE5MGJcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJpXCIgeDE9XCItMjM1LjU2MVwiIHkxPVwiLTMwOS4yNThcIiB4Mj1cIi0yMzUuNDI0XCIgeTI9XCItMzA5LjExNlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDE1OC4xNjIsIDAsIDAsIC0xNTcuOTM3LCAzNzI1Ni4zMTMsIC00ODgxOS4zODIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjYmQwMDEyXCIvPjxzdG9wIG9mZnNldD1cIjAuMDdcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjE3XCIgc3RvcC1jb2xvcj1cIiNmZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMC4yN1wiIHN0b3AtY29sb3I9XCIjYzgyZjFjXCIvPjxzdG9wIG9mZnNldD1cIjAuMzNcIiBzdG9wLWNvbG9yPVwiIzgyMGMwMVwiLz48c3RvcCBvZmZzZXQ9XCIwLjQ2XCIgc3RvcC1jb2xvcj1cIiNhMzE2MDFcIi8+PHN0b3Agb2Zmc2V0PVwiMC43MlwiIHN0b3AtY29sb3I9XCIjYjMxMzAxXCIvPjxzdG9wIG9mZnNldD1cIjAuOTlcIiBzdG9wLWNvbG9yPVwiI2U4MjYwOVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNlODI2MDlcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJqXCIgeDE9XCItMjM1LjQyNFwiIHkxPVwiLTMwOS4xNDNcIiB4Mj1cIi0yMzUuNDc2XCIgeTI9XCItMzA5LjEyNlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEyNy4wNzQsIDAsIDAsIC05Ny40MDksIDI5OTMyLjIyOSwgLTMwMDg2Ljk0NylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM4YzBjMDFcIi8+PHN0b3Agb2Zmc2V0PVwiMC41NFwiIHN0b3AtY29sb3I9XCIjOTkwYzAwXCIvPjxzdG9wIG9mZnNldD1cIjAuOTlcIiBzdG9wLWNvbG9yPVwiI2E4MGQwZVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNhODBkMGVcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJrXCIgeDE9XCItMjM1LjgzOVwiIHkxPVwiLTMwOS42MDRcIiB4Mj1cIi0yMzUuOTAxXCIgeTI9XCItMzA5LjU1NVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDk0LjAxMSwgMCwgMCwgLTEwNS42MDMsIDIyMTk4Ljc0MywgLTMyNjc2Ljg1NilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM3ZTExMGJcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjOWUwYzAwXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzllMGMwMFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImxcIiB4MT1cIi0yMzUuODU0XCIgeTE9XCItMzExLjI0XCIgeDI9XCItMjM1Ljg5MVwiIHkyPVwiLTMxMS4yMDJcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg3OS43MDIsIDAsIDAsIC04MS43OTEsIDE4ODI3LjM5NywgLTI1NDQ3LjkwNSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM3OTEzMGRcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjOWUxMjBiXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzllMTIwYlwiLz48L2xpbmVhckdyYWRpZW50PjxyYWRpYWxHcmFkaWVudCBpZD1cIm1cIiBjeD1cIi0yMzUuODgyXCIgY3k9XCItMzEyLjU0M1wiIHI9XCIwLjA3NlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDkzLjExMywgMCwgMCwgLTQ4LjY1NSwgMjE5ODYuMDczLCAtMTUxOTMuNjEpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjYTgwZDAwXCIvPjxzdG9wIG9mZnNldD1cIjAuOTlcIiBzdG9wLWNvbG9yPVwiIzdlMGUwOFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM3ZTBlMDhcIi8+PC9yYWRpYWxHcmFkaWVudD48cmFkaWFsR3JhZGllbnQgaWQ9XCJuXCIgY3g9XCItMjM1LjI4MlwiIGN5PVwiLTMwOS43MDRcIiByPVwiMC4wOTdcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg5Ny40MzQsIDAsIDAsIC03NS44NDgsIDIyOTM3LjA1NywgLTIzNDY3Ljg0KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2EzMGMwMFwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5XCIgc3RvcC1jb2xvcj1cIiM4MDBlMDhcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjODAwZTA4XCIvPjwvcmFkaWFsR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwib1wiIHgxPVwiLTIzMS4yNDFcIiB5MT1cIi0zMDkuNDM1XCIgeDI9XCItMjMxLjI5OVwiIHkyPVwiLTMwOS4zMzdcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg0MC4xMzcsIDAsIDAsIC04MS4xNDMsIDkyODYuOTk4LCAtMjUwNzguNTg5KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzhiMjExNFwiLz48c3RvcCBvZmZzZXQ9XCIwLjQzXCIgc3RvcC1jb2xvcj1cIiM5ZTEwMGFcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjYjMxMDBjXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2IzMTAwY1wiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cInBcIiB4MT1cIi0yMzUuODk4XCIgeTE9XCItMzE3LjQ2NlwiIHgyPVwiLTIzNS44MzFcIiB5Mj1cIi0zMTcuNTM3XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoNzguMDk5LCAwLCAwLCAtMzIuNjI0LCAxODQ0Ny4zNjEsIC0xMDM1My41NTMpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjYjMxMDAwXCIvPjxzdG9wIG9mZnNldD1cIjAuNDRcIiBzdG9wLWNvbG9yPVwiIzkxMGYwOFwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5XCIgc3RvcC1jb2xvcj1cIiM3OTFjMTJcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjNzkxYzEyXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfcnVieTwvdGl0bGU+PHBhdGggZD1cIk0yMy42OTMsMjAuNDY5LDcuNzA3LDI5Ljk2MWwyMC43LTEuNEwzMCw3LjY4NVpcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTI4LjQ0LDI4LjU0MiwyNi42NjEsMTYuMjYzbC00Ljg0Niw2LjRaXCIgc3R5bGU9XCJmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk0yOC40NjQsMjguNTQyLDE1LjQzLDI3LjUxOSw3Ljc3NiwyOS45MzRaXCIgc3R5bGU9XCJmaWxsOnVybCgjYylcIi8+PHBhdGggZD1cIk03Ljc5NCwyOS45MzcsMTEuMDUsMTkuMjcsMy44ODUsMjAuOFpcIiBzdHlsZT1cImZpbGw6dXJsKCNkKVwiLz48cGF0aCBkPVwiTTIxLjgxMywyMi43bC0zLTExLjczNUwxMC4yNDMsMTlaXCIgc3R5bGU9XCJmaWxsOnVybCgjZSlcIi8+PHBhdGggZD1cIk0yOS4zMiwxMS4xMjdsLTguMS02LjYxOS0yLjI1Nyw3LjNaXCIgc3R5bGU9XCJmaWxsOnVybCgjZilcIi8+PHBhdGggZD1cIk0yNS41MywyLjE0OCwyMC43NjMsNC43ODJsLTMuMDA3LTIuNjdaXCIgc3R5bGU9XCJmaWxsOnVybCgjZylcIi8+PHBhdGggZD1cIk0yLDI0LjM4bDItMy42NDJMMi4zODIsMTYuNFpcIiBzdHlsZT1cImZpbGw6dXJsKCNoKVwiLz48cGF0aCBkPVwiTTIuMjc0LDE2LjI2MywzLjksMjAuODczbDcuMDYyLTEuNTg0TDE5LjAyNCwxMS44LDIxLjMsNC41NjlsLTMuNTgzLTIuNTMtNi4wOTEsMi4yOEM5LjcwNiw2LjEsNS45ODIsOS42MzUsNS44NDgsOS43cy0yLjQ1OSw0LjQ2NC0zLjU3NCw2LjU2MlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTcuOTgxLDcuOTgxQzEyLjE0LDMuODU4LDE3LjUsMS40MjEsMTkuNTU5LDMuNXMtLjEyNCw3LjEyMS00LjI4MywxMS4yNDRTNS44MjEsMjEuNDM0LDMuNzY1LDE5LjM1OCwzLjgyMiwxMi4xLDcuOTgxLDcuOTgxWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2kpXCIvPjxwYXRoIGQ9XCJNNy43OTQsMjkuOTMzbDMuMjMxLTEwLjcsMTAuNzI5LDMuNDQ3Yy0zLjg3OSwzLjYzOC04LjE5NCw2LjcxMy0xMy45Niw3LjI1NFpcIiBzdHlsZT1cImZpbGw6dXJsKCNqKVwiLz48cGF0aCBkPVwiTTE5LjAzOCwxMS43NzRsMi43NTQsMTAuOTFjMy4yNC0zLjQwNyw2LjE0OS03LjA3LDcuNTczLTExLjZsLTEwLjMyOC42OTFaXCIgc3R5bGU9XCJmaWxsOnVybCgjaylcIi8+PHBhdGggZD1cIk0yOS4zMzcsMTEuMTM5YzEuMS0zLjMyNywxLjM1Ny04LjEtMy44NDEtOC45ODVMMjEuMjMxLDQuNTA5bDguMTA2LDYuNjI5WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2wpXCIvPjxwYXRoIGQ9XCJNMiwyNC4zMzJjLjE1Myw1LjQ5LDQuMTE0LDUuNTcyLDUuOCw1LjYybC0zLjktOS4xTDIsMjQuMzMyWlwiIHN0eWxlPVwiZmlsbDojOWUxMjA5XCIvPjxwYXRoIGQ9XCJNMTkuMDUzLDExLjc5MWMyLjQ5LDEuNTMxLDcuNTA5LDQuNiw3LjYxLDQuNjYxYTE3LjU1MiwxNy41NTIsMCwwLDAsMi42MTktNS4zNDNsLTEwLjIyOS42ODNaXCIgc3R5bGU9XCJmaWxsOnVybCgjbSlcIi8+PHBhdGggZD1cIk0xMS4wMjEsMTkuMjMybDQuMzE5LDguMzMyYTI3LjkyNCwyNy45MjQsMCwwLDAsNi4zODUtNC44OGwtMTAuNy0zLjQ1MlpcIiBzdHlsZT1cImZpbGw6dXJsKCNuKVwiLz48cGF0aCBkPVwiTTMuODg3LDIwLjg2MWwtLjYxMiw3LjI4N2MxLjE1NSwxLjU3NywyLjc0MywxLjcxNCw0LjQwOSwxLjU5MS0xLjIwNS0zLTMuNjE0LTktMy44LTguODc4WlwiIHN0eWxlPVwiZmlsbDp1cmwoI28pXCIvPjxwYXRoIGQ9XCJNMjEuMjA2LDQuNTI4bDguNTgsMS4yYy0uNDU4LTEuOTQtMS44NjQtMy4xOTItNC4yNjEtMy41ODRsLTQuMzE5LDIuMzhaXCIgc3R5bGU9XCJmaWxsOnVybCgjcClcIi8+YCxcbiAgXCJSdXN0XCI6IGA8ZGVmcz48cmFkaWFsR3JhZGllbnQgaWQ9XCJhXCIgY3g9XCItNDkyLjAzNVwiIGN5PVwiLTg4My4zN1wiIHI9XCIxMy45OThcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgwLjg2NiwgLTAuNSwgLTAuMywgLTAuNTIsIDE3Ny4xMDYsIC02ODkuMDMzKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzdkN2Q3ZFwiLz48c3RvcCBvZmZzZXQ9XCIwLjI2N1wiIHN0b3AtY29sb3I9XCIjN2U3YzdhXCIvPjxzdG9wIG9mZnNldD1cIjAuNDVcIiBzdG9wLWNvbG9yPVwiIzgxNzg3MVwiLz48c3RvcCBvZmZzZXQ9XCIwLjYwOFwiIHN0b3AtY29sb3I9XCIjODY3MTYyXCIvPjxzdG9wIG9mZnNldD1cIjAuNzUzXCIgc3RvcC1jb2xvcj1cIiM4ZDY4NGNcIi8+PHN0b3Agb2Zmc2V0PVwiMC44ODZcIiBzdG9wLWNvbG9yPVwiIzk2NWMzMFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNhMDRmMTJcIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9ydXN0PC90aXRsZT48cGF0aCBkPVwiTTE1LjEyNCw1LjNhLjgzMi44MzIsMCwxLDEsLjgzMi44MzJoMGEuODMxLjgzMSwwLDAsMS0uODMyLS44MzJNNS4yLDEyLjgzNGEuODMyLjgzMiwwLDEsMSwuODMyLjgzMmgwYS44MzIuODMyLDAsMCwxLS44MzItLjgzMm0xOS44NTYuMDM5YS44MzIuODMyLDAsMSwxLC44MzIuODMyLjgzMS44MzEsMCwwLDEtLjgzMi0uODMyaDBNNy42MDUsMTQuMDEzYS43Ni43NiwwLDAsMCwuMzg2LTFsLS4zNjktLjgzNUg5LjA3NHY2LjU0NUg2LjE0NGExMC4yNDcsMTAuMjQ3LDAsMCwxLS4zMzItMy45MTFabTYuMDc0LjE2MVYxMi4yNDVoMy40NThjLjE3OSwwLDEuMjYxLjIwNiwxLjI2MSwxLjAxNiwwLC42NzItLjgzLjkxMy0xLjUxMy45MTNaTTguOTU4LDI0LjU2MWEuODMyLjgzMiwwLDEsMSwuODMyLjgzMi44MzEuODMxLDAsMCwxLS44MzItLjgzMmgwbTEyLjMzMS4wMzlhLjgzMi44MzIsMCwxLDEsLjgzMi44MzIuODMyLjgzMiwwLDAsMS0uODMyLS44MzJoMG0uMjU3LTEuODg3YS43NTguNzU4LDAsMCwwLS45LjU4NGwtLjQxOCwxLjk0OWExMC4yNDksMTAuMjQ5LDAsMCwxLTguNTQ1LS4wNDFsLS40MTctMS45NDlhLjc1OS43NTksMCwwLDAtLjktLjU4M2gwbC0xLjcyMS4zN2ExMC4yMzMsMTAuMjMzLDAsMCwxLS44OS0xLjA0OWg4LjM3NGMuMDk1LDAsLjE1OC0uMDE3LjE1OC0uMVYxOC45MjhjMC0uMDg2LS4wNjMtLjEtLjE1OC0uMWgtMi40NVYxNi45NDdoMi42NDlhMS42NjUsMS42NjUsMCwwLDEsMS42MjksMS40MTJjLjEwNS40MTMuMzM2LDEuNzU3LjQ5NCwyLjE4Ny4xNTcuNDgzLjgsMS40NDcsMS40ODIsMS40NDdoNC4zMjNhMTAuMjQzLDEwLjI0MywwLDAsMS0uOTQ5LDEuMVptNC42NS03LjgyMWExMC4yNjEsMTAuMjYxLDAsMCwxLC4wMjIsMS43NzlIMjUuMTY3Yy0uMTA1LDAtLjE0OC4wNjktLjE0OC4xNzJ2LjQ4M2MwLDEuMTM2LS42NDEsMS4zODQtMS4yLDEuNDQ3LS41MzUuMDYtMS4xMjgtLjIyNC0xLjItLjU1MWEzLjYxNiwzLjYxNiwwLDAsMC0xLjY3MS0yLjgwOGMxLjAzLS42NTQsMi4xLTEuNjE5LDIuMS0yLjkxMUEzLjI5MiwzLjI5MiwwLDAsMCwyMS40NCw5LjhhNC41NTksNC41NTksMCwwLDAtMi4yLS43MjRIOC4zNjdBMTAuMjQ2LDEwLjI0NiwwLDAsMSwxNC4xLDUuODRsMS4yODIsMS4zNDRhLjc1OC43NTgsMCwwLDAsMS4wNzIuMDI2aDBsMS40MzQtMS4zNzJhMTAuMjQ4LDEwLjI0OCwwLDAsMSw3LjAxNSw1bC0uOTgyLDIuMjE3YS43NjEuNzYxLDAsMCwwLC4zODYsMVptMi40NDguMDM2LS4wMzMtLjM0MywxLjAxMS0uOTQzYS40Mi40MiwwLDAsMC0uMDEzLS41OTUuNDI4LjQyOCwwLDAsMC0uMTIxLS4wODFMMjguMiwxMi40ODNsLS4xLS4zMzQuODA2LTEuMTJhLjQyMi40MjIsMCwwLDAtLjEzLS41ODEuNDMuNDMsMCwwLDAtLjEzMy0uMDU1bC0xLjM2My0uMjIyLS4xNjQtLjMwNi41NzMtMS4yNTdhLjQxOS40MTksMCwwLDAtLjIzNi0uNTQ0LjQyNi40MjYsMCwwLDAtLjE0Ni0uMDI5bC0xLjM4My4wNDhMMjUuNyw3LjgxOWwuMzE4LTEuMzQ3YS40MjEuNDIxLDAsMCwwLS4zNDMtLjQ4Ny40MzUuNDM1LDAsMCwwLS4xNDQsMEwyNC4xODMsNi4zbC0uMjY2LS4yMTlMMjMuOTY2LDQuN2EuNDIxLjQyMSwwLDAsMC0uNDMxLS40MTEuNDI2LjQyNiwwLDAsMC0uMTQxLjAyOGwtMS4yNTcuNTczLS4zMDYtLjE2NC0uMjIyLTEuMzYzYS40MjEuNDIxLDAsMCwwLS41LS4zMTguNDMuNDMsMCwwLDAtLjEzMy4wNTVsLTEuMTIxLjgwNi0uMzMzLS4xLS40ODMtMS4yOTNhLjQyMS40MjEsMCwwLDAtLjU1NS0uMjE1LjQ0Mi40NDIsMCwwLDAtLjEyLjA4TDE3LjQxOCwzLjM5bC0uMzQzLS4wMzNMMTYuMzQ3LDIuMThhLjQyMS40MjEsMCwwLDAtLjY4OCwwbC0uNzI4LDEuMTc3LS4zNDMuMDMzLS45NDMtMS4wMTJhLjQyMS40MjEsMCwwLDAtLjU5NS4wMTUuNDQyLjQ0MiwwLDAsMC0uMDguMTJMMTIuNDgzLDMuOGwtLjMzMy4xLTEuMTItLjhhLjQyMi40MjIsMCwwLDAtLjU4MS4xMy40My40MywwLDAsMC0uMDU1LjEzM2wtLjIyMiwxLjM2My0uMzA2LjE2NEw4LjYwOCw0LjMxN2EuNDIxLjQyMSwwLDAsMC0uNTQ0LjIzOS40NDQuNDQ0LDAsMCwwLS4wMjguMTQ0bC4wNDgsMS4zODNMNy44MTgsNi4zLDYuNDcxLDUuOTg0YS40MjEuNDIxLDAsMCwwLS40ODcuMzQzLjQzNS40MzUsMCwwLDAsMCwuMTQ0TDYuMyw3LjgxOWwtLjIxOC4yNjVMNC43LDguMDM2YS40MjIuNDIyLDAsMCwwLS4zODMuNTczTDQuODksOS44NjZsLS4xNjQuMzA2LTEuMzYzLjIyMmEuNDIuNDIsMCwwLDAtLjMxOC41LjQzLjQzLDAsMCwwLC4wNTUuMTMzbC44MDYsMS4xMi0uMS4zMzQtMS4yOTMuNDgzYS40MjEuNDIxLDAsMCwwLS4yMTUuNTU1LjQxNC40MTQsMCwwLDAsLjA4MS4xMjFsMS4wMTEuOTQzLS4wMzMuMzQzLTEuMTc3LjcyOGEuNDIxLjQyMSwwLDAsMCwwLC42ODhsMS4xNzcuNzI4LjAzMy4zNDMtMS4wMTEuOTQzYS40MjEuNDIxLDAsMCwwLC4wMTUuNTk1LjQzNi40MzYsMCwwLDAsLjExOS4wOGwxLjI5My40ODMuMS4zMzRMMy4xLDIwLjk3MmEuNDIxLjQyMSwwLDAsMCwuMTMxLjU4MS40My40MywwLDAsMCwuMTMzLjA1NWwxLjM2My4yMjIuMTY0LjMwNy0uNTczLDEuMjU3YS40MjIuNDIyLDAsMCwwLC4yNC41NDUuNDM4LjQzOCwwLDAsMCwuMTQzLjAyOGwxLjM4My0uMDQ4LjIxOS4yNjYtLjMxNywxLjM0OGEuNDIuNDIsMCwwLDAsLjM0MS40ODYuNC40LDAsMCwwLC4xNDYsMEw3LjgxOCwyNS43bC4yNjYuMjE4TDguMDM1LDI3LjNhLjQxOS40MTksMCwwLDAsLjQyOS40MS40MTMuNDEzLDAsMCwwLC4xNDMtLjAyOGwxLjI1Ny0uNTczLjMwNi4xNjQuMjIyLDEuMzYyYS40MjEuNDIxLDAsMCwwLC41LjMxOS40MDcuNDA3LDAsMCwwLC4xMzMtLjA1NWwxLjEyLS44MDcuMzM0LjEuNDgzLDEuMjkyYS40MjIuNDIyLDAsMCwwLC41NTYuMjE0LjQzNi40MzYsMCwwLDAsLjExOS0uMDhsLjk0My0xLjAxMS4zNDMuMDM0LjcyOCwxLjE3N2EuNDIyLjQyMiwwLDAsMCwuNTg4LjEuNDEzLjQxMywwLDAsMCwuMS0uMWwuNzI4LTEuMTc3LjM0My0uMDM0Ljk0MywxLjAxMWEuNDIxLjQyMSwwLDAsMCwuNTk1LS4wMTUuNDM2LjQzNiwwLDAsMCwuMDgtLjExOWwuNDgzLTEuMjkyLjMzNC0uMSwxLjEyLjgwN2EuNDIxLjQyMSwwLDAsMCwuNTgxLS4xMzEuNDMuNDMsMCwwLDAsLjA1NS0uMTMzbC4yMjItMS4zNjIuMzA2LS4xNjQsMS4yNTcuNTczYS40MjEuNDIxLDAsMCwwLC41NDQtLjIzOS40MzguNDM4LDAsMCwwLC4wMjgtLjE0M2wtLjA0OC0xLjM4NC4yNjUtLjIxOCwxLjM0Ny4zMTdhLjQyMS40MjEsMCwwLDAsLjQ4Ny0uMzQuNDQ3LjQ0NywwLDAsMCwwLS4xNDZMMjUuNywyNC4xODNsLjIxOC0uMjY2LDEuMzgzLjA0OGEuNDIxLjQyMSwwLDAsMCwuNDEtLjQzMS40LjQsMCwwLDAtLjAyOC0uMTQybC0uNTczLTEuMjU3LjE2NC0uMzA3LDEuMzYzLS4yMjJhLjQyMS40MjEsMCwwLDAsLjMxOS0uNS40MzQuNDM0LDAsMCwwLS4wNTYtLjEzNWwtLjgwNi0xLjEyLjEtLjMzNCwxLjI5My0uNDgzYS40Mi40MiwwLDAsMCwuMjE1LS41NTQuNDE0LjQxNCwwLDAsMC0uMDgxLS4xMjFsLTEuMDExLS45NDMuMDMzLS4zNDMsMS4xNzctLjcyOGEuNDIxLjQyMSwwLDAsMCwwLS42ODhaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+YCxcbiAgXCJTQVNcIjogYDxwYXRoIGQ9XCJNMTYuMDE4LDMwQTE0LDE0LDAsMSwxLDMwLDE2LjIsMTQsMTQsMCwwLDEsMTYuMDE4LDMwWlwiIHN0eWxlPVwiZmlsbDojMDAyYmI1XCIvPjxwYXRoIGQ9XCJNOS4xNywyMi42M2MuMDI2LjA2MS4wNDYuMTI0LjA3Ny4xODMsMi4yMTUsNC4yMDYsNy43MzgsNC42MTYsMTAuNzU2LDIuNDU0YTYuMDE3LDYuMDE3LDAsMCwwLDEuNzMxLTguNTgzLDE1LjcsMTUuNywwLDAsMC0xLjMxOC0xLjczMWMtLjg4MS0xLjA2Ny0xLjc1NS0yLjE0LTIuNjM2LTMuMjA3LS4zNjYtLjQ0My0uNzY3LS44MzUtMS40MTYtLjY4M2ExLjM5MywxLjM5MywwLDAsMC0uODE2LDIuMzExYy44ODgsMS4xMDYsMS44MTksMi4xNzcsMi43LDMuMjg2YTMuODc0LDMuODc0LDAsMCwxLC41ODksNC40LDUuNDIzLDUuNDIzLDAsMCwxLTUsMy4xMzRBNi42LDYuNiwwLDAsMSw5LjE3LDIyLjYzWlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMjIuNDk0LDkuNjA5Yy4wOC0uMjQ4LS4wNjYtLjM3LS4xNDEtLjUwOUE3LjQ3Nyw3LjQ3NywwLDAsMCwxMi42LDYuMjM3Yy0zLjMsMS42My01LjEsNS4zNTItMi42MzcsOS4xNDdhNTYuNTMsNTYuNTMsMCwwLDAsNC4xMzUsNS4xMiwxLjAxMiwxLjAxMiwwLDAsMCwuNzA5LjM0NSwxLjM4NCwxLjM4NCwwLDAsMCwxLjQyOC0uNzY1LDEuMjQ3LDEuMjQ3LDAsMCwwLS4xNzMtMS41MDdjLS44NzYtMS4wNTEtMS43NjktMi4wODgtMi42MTUtMy4xNjJhNC4xMyw0LjEzLDAsMCwxLC4zMjMtNS43NzFBNi4wNTQsNi4wNTQsMCwwLDEsMTkuOTg0LDguMTMsNS4xOSw1LjE5LDAsMCwxLDIyLjQ5NCw5LjYwOVpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuICBcIlNhc3MgKFNhc3MpXCI6IGA8cGF0aCBkPVwiTTI2LjExLDE3LjU3MmE1LjgsNS44LDAsMCwwLTIuNTM3LjU4OCw1LjM0NSw1LjM0NSwwLDAsMS0uNTY4LTEuMzE0LDMuNTMsMy41MywwLDAsMS0uMDUxLTEuMSw5LjgxMSw5LjgxMSwwLDAsMSwuMzMyLTEuMTkyYy0uMDA1LS4wNTEtLjA2MS0uMjkyLS42MjQtLjNzLTEuMDQ4LjEwNy0xLjEuMjU2YTYuMTcxLDYuMTcxLDAsMCwwLS4yMzUuODM0LDE5LjY4NiwxOS42ODYsMCwwLDEtMS43MTMsMy4yOTQsMy4xODYsMy4xODYsMCwwLDEtLjQ0LTIuMDY2LDkuODExLDkuODExLDAsMCwxLC4zMzItMS4xOTJjLS4wMDUtLjA1MS0uMDYxLS4yOTItLjYyNC0uM3MtMS4wNDguMTA3LTEuMS4yNTYtLjExOC41LS4yMzUuODM0LTEuNDgzLDMuMzg2LTEuODQxLDQuMTczYy0uMTg0LjQtLjM0My43MjYtLjQ1NS45NDZoMGEuMjMzLjIzMywwLDAsMS0uMDIuMDQxYy0uMS4xODktLjE1My4yOTItLjE1My4yOTJ2LjAwNWMtLjA3Ny4xMzgtLjE1OS4yNjYtLjIuMjY2YTEuNzExLDEuNzExLDAsMCwxLC4wMS0uODY5Yy4yLTEuMDU5LjY5LTIuNzA1LjY4NS0yLjc2MiwwLS4wMzEuMDkyLS4zMTctLjMxNy0uNDY1YS41MDguNTA4LDAsMCwwLS41NzguMWMtLjAzNiwwLS4wNjEuMDg3LS4wNjEuMDg3cy40NDUtMS44NTEtLjg0OS0xLjg1MWEzLjg1NSwzLjg1NSwwLDAsMC0yLjQ3NSwxLjY4M2MtLjM0OC4xODktMS4wODkuNTkzLTEuODgyLDEuMDI4LS4zLjE2OS0uNjE0LjMzOC0uOTA1LjUtLjAyLS4wMi0uMDQxLS4wNDYtLjA2MS0uMDY2QzYuODcsMTcuNiwzLjk3NSwxNi40MTYsNC4xLDE0LjE3MWMuMDQ2LS44MTguMzI3LTIuOTY2LDUuNTU5LTUuNTc1LDQuMzA2LTIuMTIyLDcuNzMzLTEuNTM0LDguMzI2LS4yMy44NDksMS44NjItMS44MzYsNS4zMTktNi4yODUsNS44MmEzLjM1MSwzLjM1MSwwLDAsMS0yLjgxMy0uNzExYy0uMjM1LS4yNTYtLjI3MS0uMjcxLS4zNTgtLjIyLS4xNDMuMDc3LS4wNTEuMzA3LDAsLjQ0YTIuNjI2LDIuNjI2LDAsMCwwLDEuNjA2LDEuMjYzLDguNTUsOC41NSwwLDAsMCw1LjIxNy0uNTE3YzIuNy0xLjA0Myw0LjgtMy45NDMsNC4xODQtNi4zNzItLjYxOS0yLjQ2NS00LjcxLTMuMjc4LTguNTgyLTEuOUExOS41LDE5LjUsMCwwLDAsNC4zNTksOS45NTJjLTIuMTMzLDEuOTk1LTIuNDcsMy43MjgtMi4zMzIsNC40NTUuNSwyLjU3OCw0LjA1MSw0LjI1NSw1LjQ3Miw1LjUtLjA3Mi4wNDEtLjEzOC4wNzctLjE5NC4xMDctLjcxMS4zNTMtMy40MjEsMS43Ny00LjEsMy4yNjgtLjc2NywxLjcuMTIzLDIuOTE1LjcxMSwzLjA3OWE0LjM3NCw0LjM3NCwwLDAsMCw0LjcxLTEuOTA4QTQuNzI1LDQuNzI1LDAsMCwwLDkuMDQ5LDIwLjFhLjEwNy4xMDcsMCwwLDAtLjAyLS4wMzFsLjU1Ny0uMzI3Yy4zNjMtLjIxNS43MjEtLjQxNCwxLjAyOC0uNTc4YTYuNzQsNi43NCwwLDAsMC0uMzYzLDEuODYyLDMuODg2LDMuODg2LDAsMCwwLC44MzQsMi43LjkyMS45MjEsMCwwLDAsLjY3NS4yMmMuNiwwLC44NzUtLjUsMS4xNzYtMS4wOTQuMzY4LS43MjYuNy0xLjU3LjctMS41N3MtLjQxNCwyLjI4MS43MTEsMi4yODFjLjQwOSwwLC44MjMtLjUzMiwxLjAwOC0uOHYuMDA1cy4wMS0uMDE1LjAzMS0uMDUxbC4wNjYtLjEwN3YtLjAxYy4xNjQtLjI4Ni41MzItLjkzNiwxLjA3OS0yLjAxNS43MDYtMS4zOTEsMS4zODYtMy4xMywxLjM4Ni0zLjEzYTguODg4LDguODg4LDAsMCwwLC4yNzEsMS4xMywxMC42NDMsMTAuNjQzLDAsMCwwLC41ODMsMS4zMDljLS4xNjQuMjMtLjI2Ni4zNTgtLjI2Ni4zNThsLjAwNS4wMDVjLS4xMzMuMTc0LS4yNzYuMzYzLS40MzUuNTQ3YTE2LjMsMTYuMywwLDAsMC0xLjMxNCwxLjY0Ny40NDcuNDQ3LDAsMCwwLC4xMjMuNiwxLjExNiwxLjExNiwwLDAsMCwuNjg1LjExMywzLjE0NywzLjE0NywwLDAsMCwxLjAyOC0uMjM1LDMuNDUsMy40NSwwLDAsMCwuODg1LS40NjUsMS45OCwxLjk4LDAsMCwwLC44NDktMS43NDQsMy41MjEsMy41MjEsMCwwLDAtLjMyMi0xLjIzM2MuMDUxLS4wNzIuMS0uMTQzLjE0OC0uMjE1YTIzLjQyOCwyMy40MjgsMCwwLDAsMS41MzQtMi42NDksOC44ODgsOC44ODgsMCwwLDAsLjI3MSwxLjEzLDcuNTcsNy41NywwLDAsMCwuNSwxLjEyNUE0Ljg2MSw0Ljg2MSwwLDAsMCwyMC45NjUsMjAuOGMtLjMyMi45MzEtLjA3MiwxLjM1LjQsMS40NDdhMS40MjUsMS40MjUsMCwwLDAsLjc0Ny0uMTUzLDMuNCwzLjQsMCwwLDAsLjk0Ni0uNDg2LDIuMTI2LDIuMTI2LDAsMCwwLDEuMDQzLTEuNzI5LDMuMjY4LDMuMjY4LDAsMCwwLS4yMzUtMS4wMjMsNS4zNTYsNS4zNTYsMCwwLDEsMi43MTYtLjMxMmMyLjQzNC4yODYsMi45MTUsMS44MDUsMi44MjMsMi40NDVhMS42MTgsMS42MTgsMCwwLDEtLjc3MiwxLjA5NGMtLjE2OS4xMDctLjIyNS4xNDMtLjIxLjIyLjAyLjExMy4xLjEwNy4yNDUuMDg3QTEuOSwxLjksMCwwLDAsMzAsMjAuN2MuMDc3LTEuNS0xLjM1NS0zLjE0NS0zLjg4Ny0zLjEzWk03LjMzLDIzLjljLS44MDguODgtMS45MzMsMS4yMTItMi40MTkuOTMxLS41MjItLjMtLjMxNy0xLjYuNjc1LTIuNTMyYTEyLjg4NCwxMi44ODQsMCwwLDEsMS45LTEuNDE3Yy4xMTgtLjA3Mi4yOTItLjE3NC41LS4zbC4wNTYtLjAzMWgwbC4xMjMtLjA3N0EzLjQ5MywzLjQ5MywwLDAsMSw3LjMzLDIzLjlabTUuODgxLTRjLS4yODEuNjg1LS44NjksMi40NC0xLjIyNywyLjM0Mi0uMzA3LS4wODItLjUtMS40MTItLjA2MS0yLjcyNmE2LjE5Myw2LjE5MywwLDAsMSwuOTU2LTEuNzU0Yy40NC0uNDkxLjkyNi0uNjU1LDEuMDQzLS40NTVhOS4wNjIsOS4wNjIsMCwwLDEtLjcxMSwyLjU5M1ptNC44NTMsMi4zMjJjLS4xMTguMDYxLS4yMy4xLS4yODEuMDcyLS4wMzYtLjAyLjA1MS0uMS4wNTEtLjFzLjYwOS0uNjU1Ljg0OS0uOTUxYy4xMzgtLjE3NC4zLS4zNzguNDc2LS42MDlWMjAuN2MwLC43ODItLjc1NywxLjMwOS0xLjA5NCwxLjUyNFptMy43NDQtLjg1NGMtLjA4Ny0uMDYxLS4wNzItLjI2Ni4yMi0uOTA1YTMuNDA4LDMuNDA4LDAsMCwxLC44MzQtMS4wNzQsMS40NDgsMS40NDgsMCwwLDEsLjA4Mi40NzEsMS41NDcsMS41NDcsMCwwLDEtMS4xMzUsMS41MDlaXCIgc3R5bGU9XCJmaWxsOiNjZDY3OTlcIi8+YCxcbiAgXCJTYXNzIChTQ1NTKVwiOiBgPHBhdGggZD1cIk0xNi4xNzEsMTguN2MtLjQ4MS4yMjEtMS4wMDguNTA5LTIuMDYzLDEuMDg4LS40LjIyNS0uODE4LjQ1LTEuMjA3LjY2Mi0uMDI3LS4wMjctLjA1NS0uMDYxLS4wODItLjA4OS0yLjA4Ny0yLjIzLTUuOTQ3LTMuODA1LTUuNzgzLTYuOC4wNjEtMS4wOTEuNDM2LTMuOTU1LDcuNDEzLTcuNDMzLDUuNzQyLTIuODMsMTAuMzExLTIuMDQ2LDExLjEtLjMwN0MyNi42ODMsOC4zLDIzLjEsMTIuOTEzLDE3LjE3LDEzLjU4MmE0LjQ2OSw0LjQ2OSwwLDAsMS0zLjc1MS0uOTQ4Yy0uMzE0LS4zNDEtLjM2MS0uMzYxLS40NzctLjI5My0uMTkxLjEtLjA2OC40MDksMCwuNTg2YTMuNSwzLjUsMCwwLDAsMi4xNDEsMS42ODQsMTEuNCwxMS40LDAsMCwwLDYuOTU2LS42ODljMy41OTQtMS4zOTEsNi40LTUuMjU4LDUuNTc4LTguNS0uODI1LTMuMjg3LTYuMjgxLTQuMzcxLTExLjQ0My0yLjUzN2EyNiwyNiwwLDAsMC04Ljc5LDUuMDQ3Yy0yLjg0NCwyLjY2LTMuMjk0LDQuOTcyLTMuMTEsNS45NC42NjIsMy40MzcsNS40LDUuNjc0LDcuMyw3LjMzMS0uMS4wNTUtLjE4NC4xLS4yNTkuMTQzLS45NDguNDcxLTQuNTYyLDIuMzYtNS40NjMsNC4zNTgtMS4wMjMsMi4yNjQuMTY0LDMuODg3Ljk0OCw0LjEwNWE1LjgzMiw1LjgzMiwwLDAsMCw2LjI4MS0yLjU0NCw2LjMsNi4zLDAsMCwwLC41NTktNS44LDUuMDMsNS4wMywwLDAsMSwuNzE2LS40NzdjLjQ4NC0uMjg2Ljk0NS0uNTY4LDEuMzU0LS43ODZsMCwwYTEwLjQ3NSwxMC40NzUsMCwwLDEsNC40NzUtLjk4OWMzLjI0Ni4zODIsMy44ODcsMi40MDcsMy43NjQsMy4yNmEyLjE1NywyLjE1NywwLDAsMS0xLjAzLDEuNDU5Yy0uMjI1LjE0My0uMy4xOTEtLjI4LjI5My4wMjcuMTUuMTM2LjE0My4zMjcuMTE2YTIuNTM1LDIuNTM1LDAsMCwwLDEuNzY2LTIuMjU3Yy4xLTItMS44MDctNC4xOTQtNS4xODMtNC4xNzRhNy43NTMsNy43NTMsMCwwLDAtMi45NDYuNTg3cS0uMjI1LjA5My0uNDM3LjJabS00LjgyNSw3LjgzOWMtMS4wNzgsMS4xNzMtMi41NzgsMS42MTYtMy4yMjYsMS4yNDEtLjctLjQtLjQyMy0yLjEzNS45LTMuMzc2YTE3LjE4LDE3LjE4LDAsMCwxLDIuNTMtMS44ODljLjE1Ny0uMS4zODktLjIzMi42NjgtLjQuMDQ4LS4wMjcuMDc1LS4wNDEuMDc1LS4wNDFsLjE2NC0uMUE0LjY1OCw0LjY1OCwwLDAsMSwxMS4zNDYsMjYuNTM5WlwiIHN0eWxlPVwiZmlsbDojY2Q2Nzk5XCIvPmAsXG4gIFwiU2NhbGFcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIi0xMzQuOTA3XCIgeTE9XCIyMDQuNTcyXCIgeDI9XCItMTM0Ljg5NlwiIHkyPVwiMjA0LjU3MlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDE1MzgsIDAsIDAsIC05NjEuMjUsIDIwNzQ5NSwgMTk2NjYxKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2U2MmQyYVwiLz48c3RvcCBvZmZzZXQ9XCIwLjZcIiBzdG9wLWNvbG9yPVwiI2RmM2YzZFwiLz48c3RvcCBvZmZzZXQ9XCIwLjhcIiBzdG9wLWNvbG9yPVwiI2RmM2YzZFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNlNjJkMmFcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCItMTM0LjkwN1wiIHkxPVwiMjAzLjc4MVwiIHgyPVwiLTEzNC44OTZcIiB5Mj1cIjIwMy43ODFcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxNTM4LCAwLCAwLCAtOTYxLjI1LCAyMDc0OTUsIDE5NTg5MilcIiB4bGluazpocmVmPVwiI2FcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiY1wiIHgxPVwiLTEzNC45MDdcIiB5MT1cIjIwNS4zNjNcIiB4Mj1cIi0xMzQuODk2XCIgeTI9XCIyMDUuMzYzXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMTUzOCwgMCwgMCwgLTk2MS4yNSwgMjA3NDk1LCAxOTc0MzApXCIgeGxpbms6aHJlZj1cIiNhXCIvPjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3NjYWxhPC90aXRsZT48cGF0aCBkPVwiTTcuMzg0LDE5LjIzMXYyLjE1NGMwLC4zNjMsNy44MzMuOTcxLDEyLjkzNywyLjE1NCwyLjQ2NS0uNTcxLDQuMjk1LTEuMjc3LDQuMjk1LTIuMTU0VjE5LjIzMWMwLS44NzctMS44My0xLjU4Mi00LjI5NS0yLjE1NC01LjEsMS4xODMtMTIuOTM3LDEuNzkxLTEyLjkzNywyLjE1NFwiIHN0eWxlPVwiZmlsbDojN2YwYzFkXCIvPjxwYXRoIGQ9XCJNNy4zODQsMTAuNjE1djIuMTU0YzAsLjM2Myw3LjgzMy45NzEsMTIuOTM3LDIuMTU0LDIuNDY1LS41NzEsNC4yOTUtMS4yNzcsNC4yOTUtMi4xNTRWMTAuNjE1YzAtLjg3Ny0xLjgzLTEuNTgyLTQuMjk1LTIuMTU0LTUuMSwxLjE4My0xMi45MzcsMS43OTEtMTIuOTM3LDIuMTU0XCIgc3R5bGU9XCJmaWxsOiM3ZjBjMWRcIi8+PHBhdGggZD1cIk03LjM4NCwxNC45MjN2Ni40NjJjMC0uNTM4LDE3LjIzMi0xLjYxNSwxNy4yMzItNC4zMDhWMTAuNjE1YzAsMi42OTItMTcuMjMyLDMuNzY5LTE3LjIzMiw0LjMwOFwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNNy4zODQsNi4zMDhWMTIuNzdjMC0uNTM4LDE3LjIzMi0xLjYxNSwxNy4yMzItNC4zMDhWMmMwLDIuNjkyLTE3LjIzMiwzLjc2OS0xNy4yMzIsNC4zMDhcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTcuMzg0LDIzLjUzOFYzMGMwLS41MzgsMTcuMjMyLTEuNjE1LDE3LjIzMi00LjMwOFYxOS4yMzFjMCwyLjY5Mi0xNy4yMzIsMy43NjktMTcuMjMyLDQuMzA4XCIgc3R5bGU9XCJmaWxsOnVybCgjYylcIi8+YCxcbiAgXCJTaGVsbCBzZXNzaW9uXCI6IGA8cGF0aCBkPVwiTTI5LjQsMjcuNkgyLjVWNC41SDI5LjRabS0yNS45LTFIMjguNFY1LjVIMy41WlwiIHN0eWxlPVwiZmlsbDojZDliNDAwXCIvPjxwb2x5Z29uIHBvaW50cz1cIjYuMDc3IDE5LjMxNiA1LjUyMiAxOC40ODQgMTAuMzY2IDE1LjI1NSA1LjQ3OSAxMS4xODQgNi4xMiAxMC40MTYgMTIuMDM1IDE1LjM0NCA2LjA3NyAxOS4zMTZcIiBzdHlsZT1cImZpbGw6I2Q5YjQwMFwiLz48cmVjdCB4PVwiMTIuN1wiIHk9XCIxOC4yXCIgd2lkdGg9XCI3LjhcIiBoZWlnaHQ9XCIxXCIgc3R5bGU9XCJmaWxsOiNkOWI0MDBcIi8+PHJlY3QgeD1cIjIuNVwiIHk9XCI1LjVcIiB3aWR0aD1cIjI2LjlcIiBoZWlnaHQ9XCIxLjlcIiBzdHlsZT1cImZpbGw6I2Q5YjQwMFwiLz5gLFxuICBcIlNoZWxsXCI6IGA8cGF0aCBkPVwiTTI5LjQsMjcuNkgyLjVWNC41SDI5LjRabS0yNS45LTFIMjguNFY1LjVIMy41WlwiIHN0eWxlPVwiZmlsbDojZDliNDAwXCIvPjxwb2x5Z29uIHBvaW50cz1cIjYuMDc3IDE5LjMxNiA1LjUyMiAxOC40ODQgMTAuMzY2IDE1LjI1NSA1LjQ3OSAxMS4xODQgNi4xMiAxMC40MTYgMTIuMDM1IDE1LjM0NCA2LjA3NyAxOS4zMTZcIiBzdHlsZT1cImZpbGw6I2Q5YjQwMFwiLz48cmVjdCB4PVwiMTIuN1wiIHk9XCIxOC4yXCIgd2lkdGg9XCI3LjhcIiBoZWlnaHQ9XCIxXCIgc3R5bGU9XCJmaWxsOiNkOWI0MDBcIi8+PHJlY3QgeD1cIjIuNVwiIHk9XCI1LjVcIiB3aWR0aD1cIjI2LjlcIiBoZWlnaHQ9XCIxLjlcIiBzdHlsZT1cImZpbGw6I2Q5YjQwMFwiLz5gLFxuICBcIlNtYXJ0eVwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMTMuODU5XCIgeTE9XCIyOS4yMTlcIiB4Mj1cIjE4LjEwNlwiIHkyPVwiMjkuMjE5XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMC4wMzRcIiBzdG9wLWNvbG9yPVwiIzYzNjM2MVwiLz48c3RvcCBvZmZzZXQ9XCIwLjE3OFwiIHN0b3AtY29sb3I9XCIjNmM2ZDcwXCIvPjxzdG9wIG9mZnNldD1cIjAuMjE5XCIgc3RvcC1jb2xvcj1cIiM2ZjcxNzVcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zMDlcIiBzdG9wLWNvbG9yPVwiIzYxNjM2NlwiLz48c3RvcCBvZmZzZXQ9XCIwLjQ4MVwiIHN0b3AtY29sb3I9XCIjM2MzZDNmXCIvPjxzdG9wIG9mZnNldD1cIjAuNzE2XCIgc3RvcC1jb2xvcj1cIiMwMTAxMDFcIi8+PHN0b3Agb2Zmc2V0PVwiMC43MTlcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjNjM2YTZlXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiMTUuMTc4XCIgeTE9XCIyOS43MzRcIiB4Mj1cIjE2Ljc4N1wiIHkyPVwiMjkuNzM0XCIgeGxpbms6aHJlZj1cIiNhXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImNcIiB4MT1cIjE1LjI3N1wiIHkxPVwiMjkuODgxXCIgeDI9XCIxNi42ODhcIiB5Mj1cIjI5Ljg4MVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjAuMDM0XCIgc3RvcC1jb2xvcj1cIiM5YjliOThcIi8+PHN0b3Agb2Zmc2V0PVwiMC4xMzFcIiBzdG9wLWNvbG9yPVwiI2E0YTVhN1wiLz48c3RvcCBvZmZzZXQ9XCIwLjIxOVwiIHN0b3AtY29sb3I9XCIjYWViMWI4XCIvPjxzdG9wIG9mZnNldD1cIjAuMzUyXCIgc3RvcC1jb2xvcj1cIiM5ZmE0YWJcIi8+PHN0b3Agb2Zmc2V0PVwiMC42MDVcIiBzdG9wLWNvbG9yPVwiIzc4ODE4OFwiLz48c3RvcCBvZmZzZXQ9XCIwLjcxOVwiIHN0b3AtY29sb3I9XCIjNjU3MDc2XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzhiOTQ5YVwiLz48L2xpbmVhckdyYWRpZW50PjxyYWRpYWxHcmFkaWVudCBpZD1cImRcIiBjeD1cIi04LjQ1NlwiIGN5PVwiLTE2LjYxNlwiIHI9XCIxOS4zODNcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgzNC4wNDIgMzcuMDYzKSBzY2FsZSgxLjA1NClcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwLjAzNFwiIHN0b3AtY29sb3I9XCIjNzA3MDZlXCIvPjxzdG9wIG9mZnNldD1cIjAuMTEyXCIgc3RvcC1jb2xvcj1cIiM2MTYyNjFcIi8+PHN0b3Agb2Zmc2V0PVwiMC4yMTlcIiBzdG9wLWNvbG9yPVwiIzQ2NDc0YVwiLz48c3RvcCBvZmZzZXQ9XCIwLjQwOFwiIHN0b3AtY29sb3I9XCIjNDg0OTRjXCIvPjxzdG9wIG9mZnNldD1cIjAuNDg3XCIgc3RvcC1jb2xvcj1cIiM0ZTUwNTNcIi8+PHN0b3Agb2Zmc2V0PVwiMC41NDRcIiBzdG9wLWNvbG9yPVwiIzVhNWM1ZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjU5MlwiIHN0b3AtY29sb3I9XCIjNmE2ZTcxXCIvPjxzdG9wIG9mZnNldD1cIjAuNjMzXCIgc3RvcC1jb2xvcj1cIiM3Zjg1ODhcIi8+PHN0b3Agb2Zmc2V0PVwiMC42NjdcIiBzdG9wLWNvbG9yPVwiIzk3OWVhMVwiLz48c3RvcCBvZmZzZXQ9XCIwLjcxOVwiIHN0b3AtY29sb3I9XCIjM2Q0NDQ3XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzY1NmM3MFwiLz48L3JhZGlhbEdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImVcIiB4MT1cIjE2LjEyNlwiIHkxPVwiMjguMTA4XCIgeDI9XCIxNi4wNVwiIHkyPVwiMjYuODkzXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMC4wMzRcIiBzdG9wLWNvbG9yPVwiIzliOWI5OFwiLz48c3RvcCBvZmZzZXQ9XCIwLjEwOVwiIHN0b3AtY29sb3I9XCIjYTVhNmE3XCIvPjxzdG9wIG9mZnNldD1cIjAuMjE5XCIgc3RvcC1jb2xvcj1cIiNiYWJjYzRcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zMTFcIiBzdG9wLWNvbG9yPVwiI2FiYWViNVwiLz48c3RvcCBvZmZzZXQ9XCIwLjQ4N1wiIHN0b3AtY29sb3I9XCIjODQ4OThmXCIvPjxzdG9wIG9mZnNldD1cIjAuNzE5XCIgc3RvcC1jb2xvcj1cIiM0ODUwNTRcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjOGI5NDlhXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiZlwiIHgxPVwiMTYuMDEzXCIgeTE9XCIyNi41NDJcIiB4Mj1cIjE1Ljg5NVwiIHkyPVwiMjQuNjM1XCIgeGxpbms6aHJlZj1cIiNlXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImdcIiB4MT1cIjE2LjAyM1wiIHkxPVwiMjUuNTQ2XCIgeDI9XCIxNS44ODdcIiB5Mj1cIjIzLjM1NVwiIHhsaW5rOmhyZWY9XCIjZVwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJoXCIgeDE9XCIxNi4wMTNcIiB5MT1cIjI3LjYyN1wiIHgyPVwiMTUuODk1XCIgeTI9XCIyNS43MlwiIHhsaW5rOmhyZWY9XCIjZVwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJqXCIgeDE9XCIxMy42OFwiIHkxPVwiMjguODA1XCIgeDI9XCIxOC4yODRcIiB5Mj1cIjI4LjgwNVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjAuMDM0XCIgc3RvcC1jb2xvcj1cIiM1NDU0NTNcIi8+PHN0b3Agb2Zmc2V0PVwiMC4wNzFcIiBzdG9wLWNvbG9yPVwiIzYxNjI2MlwiLz48c3RvcCBvZmZzZXQ9XCIwLjE0M1wiIHN0b3AtY29sb3I9XCIjODQ4NTg5XCIvPjxzdG9wIG9mZnNldD1cIjAuMjE5XCIgc3RvcC1jb2xvcj1cIiNhZWIxYjhcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zNTJcIiBzdG9wLWNvbG9yPVwiIzlmYTRhYlwiLz48c3RvcCBvZmZzZXQ9XCIwLjYwNVwiIHN0b3AtY29sb3I9XCIjNzg4MTg4XCIvPjxzdG9wIG9mZnNldD1cIjAuNzE5XCIgc3RvcC1jb2xvcj1cIiM2NTcwNzZcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjNTA1NjU5XCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwia1wiIHgxPVwiMTIuMTU5XCIgeTE9XCIyNS44MTNcIiB4Mj1cIjE5LjQ3NVwiIHkyPVwiMjUuODEzXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZTVlMWRmXCIvPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2RkZGFkNlwiLz48c3RvcCBvZmZzZXQ9XCIwLjAzOFwiIHN0b3AtY29sb3I9XCIjY2VjY2M5XCIvPjxzdG9wIG9mZnNldD1cIjAuMTEyXCIgc3RvcC1jb2xvcj1cIiNhN2E5YThcIi8+PHN0b3Agb2Zmc2V0PVwiMC4yMTJcIiBzdG9wLWNvbG9yPVwiIzY5NzA3MlwiLz48c3RvcCBvZmZzZXQ9XCIwLjI2NFwiIHN0b3AtY29sb3I9XCIjNDY1MDU0XCIvPjxzdG9wIG9mZnNldD1cIjAuMzAzXCIgc3RvcC1jb2xvcj1cIiM2MzZjNmZcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zOThcIiBzdG9wLWNvbG9yPVwiI2E1YWFhY1wiLz48c3RvcCBvZmZzZXQ9XCIwLjQ3OFwiIHN0b3AtY29sb3I9XCIjZDVkN2Q5XCIvPjxzdG9wIG9mZnNldD1cIjAuNTM5XCIgc3RvcC1jb2xvcj1cIiNmM2Y0ZjVcIi8+PHN0b3Agb2Zmc2V0PVwiMC41NzNcIiBzdG9wLWNvbG9yPVwiI2ZlZmVmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjYyXCIgc3RvcC1jb2xvcj1cIiNmNGY1ZjZcIi8+PHN0b3Agb2Zmc2V0PVwiMC42OTlcIiBzdG9wLWNvbG9yPVwiI2RhZGNkZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjhcIiBzdG9wLWNvbG9yPVwiI2IwYjRiOVwiLz48c3RvcCBvZmZzZXQ9XCIwLjg3NlwiIHN0b3AtY29sb3I9XCIjOGI5Mjk4XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2QxZDNkNFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNhN2E5YWNcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJsXCIgeDE9XCIxMi4xNTlcIiB5MT1cIjI0LjcyOFwiIHgyPVwiMTkuNDc1XCIgeTI9XCIyNC43MjhcIiB4bGluazpocmVmPVwiI2tcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwibVwiIHgxPVwiMTIuMTU5XCIgeTE9XCIyMy41NDhcIiB4Mj1cIjE5LjQ3NVwiIHkyPVwiMjMuNTQ4XCIgeGxpbms6aHJlZj1cIiNrXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cIm5cIiB4MT1cIjEyLjE1OVwiIHkxPVwiMjYuODk4XCIgeDI9XCIxOS40NzVcIiB5Mj1cIjI2Ljg5OFwiIHhsaW5rOmhyZWY9XCIja1wiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJvXCIgeDE9XCIxMi4xNTlcIiB5MT1cIjI1Ljk2N1wiIHgyPVwiMTkuNDc1XCIgeTI9XCIyNS45NjdcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNlNWUxZGZcIi8+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZGRlOGQwXCIvPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2QyZjNiYVwiLz48c3RvcCBvZmZzZXQ9XCIwLjAzNlwiIHN0b3AtY29sb3I9XCIjYzVlNGIxXCIvPjxzdG9wIG9mZnNldD1cIjAuMTA1XCIgc3RvcC1jb2xvcj1cIiNhNGJkOThcIi8+PHN0b3Agb2Zmc2V0PVwiMC4xOTlcIiBzdG9wLWNvbG9yPVwiIzZlN2Y3MVwiLz48c3RvcCBvZmZzZXQ9XCIwLjI2NFwiIHN0b3AtY29sb3I9XCIjNDY1MDU0XCIvPjxzdG9wIG9mZnNldD1cIjAuMzAzXCIgc3RvcC1jb2xvcj1cIiM2MzZjNmZcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zOThcIiBzdG9wLWNvbG9yPVwiI2E1YWFhY1wiLz48c3RvcCBvZmZzZXQ9XCIwLjQ3OFwiIHN0b3AtY29sb3I9XCIjZDVkN2Q5XCIvPjxzdG9wIG9mZnNldD1cIjAuNTM5XCIgc3RvcC1jb2xvcj1cIiNmM2Y0ZjVcIi8+PHN0b3Agb2Zmc2V0PVwiMC41NzNcIiBzdG9wLWNvbG9yPVwiI2ZlZmVmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjYyXCIgc3RvcC1jb2xvcj1cIiNmNGY1ZjZcIi8+PHN0b3Agb2Zmc2V0PVwiMC42OTlcIiBzdG9wLWNvbG9yPVwiI2RhZGNkZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjhcIiBzdG9wLWNvbG9yPVwiI2IwYjRiOVwiLz48c3RvcCBvZmZzZXQ9XCIwLjg3NlwiIHN0b3AtY29sb3I9XCIjOGI5Mjk4XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2QxZDNkNFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNhN2E5YWNcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJwXCIgeDE9XCIxMi4xNTlcIiB5MT1cIjI0Ljg4M1wiIHgyPVwiMTkuNDc1XCIgeTI9XCIyNC44ODNcIiB4bGluazpocmVmPVwiI29cIi8+PGxpbmVhckdyYWRpZW50IGlkPVwicVwiIHgxPVwiMTIuMTU5XCIgeTE9XCIyNy4wNVwiIHgyPVwiMTkuNDc1XCIgeTI9XCIyNy4wNVwiIHhsaW5rOmhyZWY9XCIjb1wiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJyXCIgeDE9XCIxMS45MDJcIiB5MT1cIjIzLjIwMVwiIHgyPVwiMTkuODg0XCIgeTI9XCIyMy4yMDFcIiB4bGluazpocmVmPVwiI2VcIi8+PHJhZGlhbEdyYWRpZW50IGlkPVwic1wiIGN4PVwiLTE2Ljk4M1wiIGN5PVwiLTIyLjk0OFwiIHI9XCIxMC43MThcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgzNC4wNDIgMzcuMDYzKSBzY2FsZSgxLjA1NClcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmZmZDFcIi8+PHN0b3Agb2Zmc2V0PVwiMC41MDVcIiBzdG9wLWNvbG9yPVwiI2ZmMFwiLz48c3RvcCBvZmZzZXQ9XCIwLjU2OFwiIHN0b3AtY29sb3I9XCIjZmRmNzAwXCIvPjxzdG9wIG9mZnNldD1cIjAuNjY0XCIgc3RvcC1jb2xvcj1cIiNmNmUyMDBcIi8+PHN0b3Agb2Zmc2V0PVwiMC43ODJcIiBzdG9wLWNvbG9yPVwiI2ViYmYwMFwiLz48c3RvcCBvZmZzZXQ9XCIwLjkwNlwiIHN0b3AtY29sb3I9XCIjZGU5MjAwXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2RhOTgxOVwiLz48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3NtYXJ0eTwvdGl0bGU+PHBhdGggZD1cIk0xMy44NTksMjguNzc2YS4yNDIuMjQyLDAsMCwwLC4xMjguMTkxLDEyLDEyLDAsMCwwLDEuMzkyLjYyMiw0LjMsNC4zLDAsMCwwLC41NzguMDcyaC4wNTJhNC4zLDQuMywwLDAsMCwuNTc4LS4wNzIsMTIuMDE0LDEyLjAxNCwwLDAsMCwxLjM5Mi0uNjIyLjI0My4yNDMsMCwwLDAsLjEyOC0uMTkxbC0yLjEzNy4xOTJaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0xNi4wMTQsMzBhMS4xMjMsMS4xMjMsMCwwLDAsLjY4OC0uMjQ3LjE3NS4xNzUsMCwwLDAsLjA4NS0uMTI2di0uMTA1YTMuMjM1LDMuMjM1LDAsMCwwLS43NzMtLjA1M2gtLjA2M2EzLjIzNywzLjIzNywwLDAsMC0uNzczLjA1M3YuMTA1YS4xNzUuMTc1LDAsMCwwLC4wODUuMTI2LDEuMTIyLDEuMTIyLDAsMCwwLC42ODguMjQ3WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNMTUuOTUxLDI5LjgwN2E0LjczMiw0LjczMiwwLDAsMS0uNjc0LS4wNDQsMS4xMDUsMS4xMDUsMCwwLDAsLjY3NC4yMzdoLjA2M2ExLjEwNiwxLjEwNiwwLDAsMCwuNjc1LS4yMzcsNC43MzMsNC43MzMsMCwwLDEtLjY3NS4wNDRaXCIgc3R5bGU9XCJmaWxsOnVybCgjYylcIi8+PHBhdGggZD1cIk0xOS44MDksMjYuODM4YTEsMSwwLDAsMC0uMjM0LjM4OWMtLjAzNi4xODEtLjEuNTg1LTEuMzI2LDEuNDA2bC0uMDI1LjAxN2EuNDM1LjQzNSwwLDAsMS0uMDg2LjAzNyw5Ljk2OCw5Ljk2OCwwLDAsMS0yLjE1NS4yMDksOS45NjgsOS45NjgsMCwwLDEtMi4xNTYtLjIwOS40MzYuNDM2LDAsMCwxLS4wODUtLjAzNmwtLjAyNS0uMDE3YTQuNTc5LDQuNTc5LDAsMCwxLTEuMTItLjk1N2MtLjE2NC0uMjE5LS4zNzMtLjI1Ny0uMzktLjM0NWEyMS4wNTUsMjEuMDU1LDAsMCwwLDMuODU1LjA1NywxMy4wNDksMTMuMDQ5LDAsMCwwLDMuNzYxLS42NTRBLjY5Mi42OTIsMCwwLDEsMTkuODA5LDI2LjgzOFpcIiBzdHlsZT1cImZpbGw6dXJsKCNkKVwiLz48cGF0aCBkPVwiTTE5Ljc3MiwyNi44OGEuOTg1Ljk4NSwwLDAsMS0uMjQ2LjEyOWMtLjA3Ni4wMjgtLjI0NS4wNzgtLjI0NS4wNzhhMjUuMTUsMjUuMTUsMCwwLDEtNi40NTguNDM2Yy0uMTM2LS4wMDktLjMyLS4wMjgtLjMyLS4wMjhhMS4wNjIsMS4wNjIsMCwwLDEtLjE0LS4wMjgsMS4wMTYsMS4wMTYsMCwwLDEsLjE0LjEwN2MuMTYuMDEzLjMxOS4wMTkuMzE5LjAxOWEyNi44NjQsMjYuODY0LDAsMCwwLDYuNzQzLS4zMjNsLjAwOS0uMDQyQS44ODUuODg1LDAsMCwxLDE5Ljc3MiwyNi44OFpcIiBzdHlsZT1cImZpbGw6dXJsKCNlKVwiLz48cGF0aCBkPVwiTTE5LjQzOSwyNS4zODJzLjI0NS0uMDcuMjQ1LS4xNjJhLjExNC4xMTQsMCwwLDAtLjAxMy0uMDY1LjIxNC4yMTQsMCwwLDEtLjA2MS0uMTQ0LjQzNy40MzcsMCwwLDEsLjExOS0uMjcsMS4wNjksMS4wNjksMCwwLDEtLjIuMWMtLjA3Ni4wMjgtLjI0NS4wNzgtLjI0NS4wNzhhMjUuMTUxLDI1LjE1MSwwLDAsMS02LjQ1OC40MzZjLS4xMzYtLjAwOS0uMzItLjAyOC0uMzItLjAyOGExLjA1NSwxLjA1NSwwLDAsMS0uMTgxLS4wNDEuMzc3LjM3NywwLDAsMSwuMDc4LjIxNy43MTYuNzE2LDAsMCwxLS4yNTQuNDMyLjY3My42NzMsMCwwLDEsLjM2OC0uMDc5QTI2LjIsMjYuMiwwLDAsMCwxOS40MzksMjUuMzgyWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2YpXCIvPjxwYXRoIGQ9XCJNMTkuNDM5LDI0LjIyOXMuMjQ1LS4wNzguMjQ1LS4xODJhLjE0My4xNDMsMCwwLDAtLjAxMy0uMDczLjI1NC4yNTQsMCwwLDEtLjA2MS0uMTYyLjUxNC41MTQsMCwwLDEsLjExOS0uMywxLjAyNiwxLjAyNiwwLDAsMS0uMi4xMTFjLS4wNzYuMDMyLS4yNDUuMDg4LS4yNDUuMDg4YTIyLjUwNywyMi41MDcsMCwwLDEtNi40NTguNDg5Yy0uMTM2LS4wMS0uMzItLjAzMi0uMzItLjAzMmEuOTUzLjk1MywwLDAsMS0uMTgxLS4wNDYuNDU1LjQ1NSwwLDAsMSwuMDc4LjI0My44MjUuODI1LDAsMCwxLS4yNTQuNDg0LjYxNC42MTQsMCwwLDEsLjM2OC0uMDg5QzEzLjAxNCwyNC43NTgsMTYuOTM1LDI1LjA0MSwxOS40MzksMjQuMjI5WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2cpXCIvPjxwYXRoIGQ9XCJNMTkuNDM5LDI2LjQ2N3MuMjQ1LS4wNy4yNDUtLjE2M2EuMTE1LjExNSwwLDAsMC0uMDEzLS4wNjUuMjE0LjIxNCwwLDAsMS0uMDYxLS4xNDQuNDM1LjQzNSwwLDAsMSwuMTE5LS4yNywxLjA3LDEuMDcsMCwwLDEtLjIuMWMtLjA3Ni4wMjgtLjI0NS4wNzgtLjI0NS4wNzhhMjUuMTYyLDI1LjE2MiwwLDAsMS02LjQ1OC40MzZjLS4xMzYtLjAwOS0uMzItLjAyOC0uMzItLjAyOGExLjA0MiwxLjA0MiwwLDAsMS0uMTgxLS4wNDEuMzc3LjM3NywwLDAsMSwuMDc4LjIxNy43MTcuNzE3LDAsMCwxLS4yNTQuNDMyLjY3LjY3LDAsMCwxLC4zNjgtLjA3OUEyNi4yMDcsMjYuMjA3LDAsMCwwLDE5LjQzOSwyNi40NjdaXCIgc3R5bGU9XCJmaWxsOnVybCgjaClcIi8+PHBhdGggZD1cIk0xOS40MzksMjYuNDY3cy4yNDUtLjA3LjI0NS0uMTYzYS4xMTUuMTE1LDAsMCwwLS4wMTMtLjA2NS4yMTQuMjE0LDAsMCwxLS4wNjEtLjE0NC40MzUuNDM1LDAsMCwxLC4xMTktLjI3LDEuMDcsMS4wNywwLDAsMS0uMi4xYy0uMDc2LjAyOC0uMjQ1LjA3OC0uMjQ1LjA3OGEyNS4xNjgsMjUuMTY4LDAsMCwxLTYuNDU4LjQzNmMtLjEzNi0uMDA5LS4zMi0uMDI4LS4zMi0uMDI4YTEuMDQyLDEuMDQyLDAsMCwxLS4xODEtLjA0MS4zNzYuMzc2LDAsMCwxLC4wNzguMjE3LjcxNy43MTcsMCwwLDEtLjI1NC40MzIuNjcuNjcsMCwwLDEsLjM2OC0uMDc5QTI2LjIwNywyNi4yMDcsMCwwLDAsMTkuNDM5LDI2LjQ2N1pcIiBzdHlsZT1cImZpbGw6dXJsKCNoKVwiLz48cGF0aCBkPVwiTTE4LjIyNCwyOC42NWEuNDM1LjQzNSwwLDAsMS0uMDg2LjAzNyw5Ljk2OCw5Ljk2OCwwLDAsMS0yLjE1NS4yMDksOS45NjgsOS45NjgsMCwwLDEtMi4xNTYtLjIwOS40MzYuNDM2LDAsMCwxLS4wODUtLjAzNmwtLjAyNS0uMDE3LS4wMjktLjAxOWEuMTEyLjExMiwwLDAsMCwwLC4wNzNjLjAyNC4wNzMuMTQ3LjEuMTQ3LjFhOS45NDMsOS45NDMsMCwwLDAsMi4xNS4yMDksOS45NDIsOS45NDIsMCwwLDAsMi4xNS0uMjA5cy4xMjYtLjAyOS4xNDctLjFhLjExOC4xMTgsMCwwLDAsMC0uMDczbC0uMDI5LjAxOVpcIiBzdHlsZT1cImZpbGw6dXJsKCNqKVwiLz48cGF0aCBkPVwiTTE5Ljk0NCwyNS41cy4wNDEuMjUyLS40MTguNDIzYy0uMDc2LjAyOC0uMjQ1LjA3OC0uMjQ1LjA3OGEyNS4xNjIsMjUuMTYyLDAsMCwxLTYuNDU4LjQzNmMtLjEzNi0uMDA5LS4zMi0uMDI4LS4zMi0uMDI4LS4yNzYtLjAzOC0uNDY3LS4xNi0uNDU1LS4zMDgsMCwwLS4wMzMtLjI0OS40NjYtLjI0OWEyNi4yLDI2LjIsMCwwLDAsNi45MjUtLjQ3MnMuMjQ1LS4wNy4yNDUtLjE2MmEuMTExLjExMSwwLDAsMC0uMDEzLS4wNjZTMTkuOTQ0LDI1LjMxMiwxOS45NDQsMjUuNVpcIiBzdHlsZT1cImZpbGw6dXJsKCNrKVwiLz48cGF0aCBkPVwiTTE5Ljk0NCwyNC40MTZzLjA0MS4yNTItLjQxOC40MjNjLS4wNzYuMDI4LS4yNDUuMDc4LS4yNDUuMDc4YTI1LjE1MSwyNS4xNTEsMCwwLDEtNi40NTguNDM2Yy0uMTM2LS4wMDktLjMyLS4wMjgtLjMyLS4wMjgtLjI3Ni0uMDM4LS40NjctLjE2LS40NTUtLjMwOCwwLDAtLjAzMy0uMjQ4LjQ2Ni0uMjQ4YTI2LjE5MywyNi4xOTMsMCwwLDAsNi45MjUtLjQ3MnMuMjQ1LS4wNy4yNDUtLjE2MmEuMTEuMTEsMCwwLDAtLjAxMy0uMDY1UzE5Ljk0NCwyNC4yMjcsMTkuOTQ0LDI0LjQxNlpcIiBzdHlsZT1cImZpbGw6dXJsKCNsKVwiLz48cGF0aCBkPVwiTTE5Ljg5MywyNC40MDZ2LS4wMjFjLS4wMTIuMDc2LS4wNzguMjM2LS40MTcuMzU1LS4wNzYuMDI2LS4yNDUuMDczLS4yNDUuMDczYTIyLjM3MiwyMi4zNzIsMCwwLDEtNS4xLjVoMGEyMi4xNTUsMjIuMTU1LDAsMCwwLDUuMS0uNDQxcy4xNjktLjA0Ny4yNDUtLjA3M0MxOS45MzMsMjQuNjQzLDE5Ljg5MywyNC40MDYsMTkuODkzLDI0LjQwNlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE5Ljg5MywyNS40OTFWMjUuNDdjLS4wMTIuMDc2LS4wNzguMjM2LS40MTcuMzU1LS4wNzYuMDI3LS4yNDUuMDczLS4yNDUuMDczYTIyLjM4LDIyLjM4LDAsMCwxLTUuMS41aDBhMjIuMTcxLDIyLjE3MSwwLDAsMCw1LjEtLjQ0MXMuMTY5LS4wNDcuMjQ1LS4wNzNDMTkuOTMzLDI1LjcyOCwxOS44OTMsMjUuNDkxLDE5Ljg5MywyNS40OTFaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xOS45NDQsMjMuMDM0cy4wNDEuMzI5LS40MTguNTUyYy0uMDc2LjAzNy0uMjQ1LjEtLjI0NS4xYTE5LjQwOSwxOS40MDksMCwwLDEtNi40NTguNTY5Yy0uMTM2LS4wMTItLjMyLS4wMzctLjMyLS4wMzctLjI3Ni0uMDUtLjQ2Ny0uMjA5LS40NTUtLjQsMCwwLS4wMzMtLjMyNC40NjYtLjMyNGExOC4yODMsMTguMjgzLDAsMCwwLDYuOTI1LS40NjEsMS4wMTQsMS4wMTQsMCwwLDAsLjQ0NC0uMjM4QS41My41MywwLDAsMSwxOS45NDQsMjMuMDM0WlwiIHN0eWxlPVwiZmlsbDp1cmwoI20pXCIvPjxwYXRoIGQ9XCJNMTkuOTQ0LDI2LjU4NnMuMDQxLjI1Mi0uNDE4LjQyM2MtLjA3Ni4wMjgtLjI0NS4wNzgtLjI0NS4wNzhhMjUuMTUsMjUuMTUsMCwwLDEtNi40NTguNDM2Yy0uMTM2LS4wMDktLjMyLS4wMjgtLjMyLS4wMjgtLjI3Ni0uMDM4LS40NjctLjE2LS40NTUtLjMwOCwwLDAtLjAzMy0uMjQ4LjQ2Ni0uMjQ4YTI2LjIwNywyNi4yMDcsMCwwLDAsNi45MjUtLjQ3MnMuMjQ1LS4wNy4yNDUtLjE2M2EuMTExLjExMSwwLDAsMC0uMDEzLS4wNjVTMTkuOTQ0LDI2LjQsMTkuOTQ0LDI2LjU4NlpcIiBzdHlsZT1cImZpbGw6dXJsKCNuKVwiLz48cGF0aCBkPVwiTTE5Ljg5MywyNi41NzZ2LS4wMjFjLS4wMTIuMDc2LS4wNzguMjM2LS40MTcuMzU1LS4wNzYuMDI2LS4yNDUuMDczLS4yNDUuMDczYTIyLjM3MiwyMi4zNzIsMCwwLDEtNS4xLjVoMGEyMi4xNjMsMjIuMTYzLDAsMCwwLDUuMS0uNDQxcy4xNjktLjA0Ny4yNDUtLjA3M0MxOS45MzMsMjYuODEzLDE5Ljg5MywyNi41NzYsMTkuODkzLDI2LjU3NlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE5Ljg5MywyMy4zMjFWMjMuM2MtLjAxMi4wNzYtLjA3OC4yMzYtLjQxNy4zNTUtLjA3Ni4wMjctLjI0NS4wNzMtLjI0NS4wNzNhMjIuMzcyLDIyLjM3MiwwLDAsMS01LjEuNWgwYTIyLjE1NiwyMi4xNTYsMCwwLDAsNS4xLS40NDFzLjE2OS0uMDQ3LjI0NS0uMDczQzE5LjkzMywyMy41NTgsMTkuODkzLDIzLjMyMSwxOS44OTMsMjMuMzIxWlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTIuNDE3LDI1Ljg4MXMtLjIzNiwwLS4yNDEuMDguMjQ2LjA4NS4yNDYuMDg1LjE3NSwwLC4zLjAwNWMuNjE5LS4wMTMsMS45OTMtLjAzOCwzLjQzNy0uMTY2QzE0LjM4NCwyNS45NTgsMTIuNzIzLDI1Ljg4MywxMi40MTcsMjUuODgxWlwiIHN0eWxlPVwiZmlsbDp1cmwoI28pXCIvPjxwYXRoIGQ9XCJNMTIuNDE3LDI0LjhzLS4yMzYsMC0uMjQxLjA4LjI0Ni4wODUuMjQ2LjA4NS4xNzUsMCwuMy4wMDVjLjYxOS0uMDEyLDEuOTkzLS4wMzgsMy40MzctLjE2NkMxNC4zODQsMjQuODc0LDEyLjcyMywyNC44LDEyLjQxNywyNC44WlwiIHN0eWxlPVwiZmlsbDp1cmwoI3ApXCIvPjxwYXRoIGQ9XCJNMTIuNDE3LDI2Ljk2NXMtLjIzNiwwLS4yNDEuMDguMjQ2LjA4NS4yNDYuMDg1LjE3NSwwLC4zLjAwNWMuNjE5LS4wMTIsMS45OTMtLjAzOCwzLjQzNy0uMTY2QzE0LjM4NCwyNy4wNDIsMTIuNzIzLDI2Ljk2NiwxMi40MTcsMjYuOTY1WlwiIHN0eWxlPVwiZmlsbDp1cmwoI3EpXCIvPjxwYXRoIGQ9XCJNMTEuOTY1LDIyLjc3OXMtLjI3NC4zMTUuMzE5LjcxMWMwLDAsNS43NzUuNTg3LDcuNi0uNjk1QzE5Ljg4NCwyMi43OTUsMTMuNjIzLDIzLjMyLDExLjk2NSwyMi43NzlaXCIgc3R5bGU9XCJmaWxsOnVybCgjcilcIi8+PHBhdGggZD1cIk0yMC4wMzUsMjIuNzc5YTQuNDQ5LDQuNDQ5LDAsMCwwLC44MS0xLjE1NSwzLjM4NiwzLjM4NiwwLDAsMCwuMi0xLjExNSw2LjczMyw2LjczMywwLDAsMSwuNjMyLTIuOTFjLjUzNC0xLjAxNCwyLjgxLTQuNDQ3LDIuODEtNy40NjJBOC4wMTIsOC4wMTIsMCwwLDAsMTYsMmE4LjAxMiw4LjAxMiwwLDAsMC04LjQ4Myw4LjEzNmMwLDMuMDE1LDIuMjc2LDYuNDQ4LDIuODEsNy40NjJhNi43MzEsNi43MzEsMCwwLDEsLjYzMiwyLjkxLDMuMzg0LDMuMzg0LDAsMCwwLC4yLDEuMTE1LDQuNDUzLDQuNDUzLDAsMCwwLC44MSwxLjE1NSwxMy44NjYsMTMuODY2LDAsMCwwLDMuOTg3LjM3QTE1LjE1MSwxNS4xNTEsMCwwLDAsMjAuMDM1LDIyLjc3OVpcIiBzdHlsZT1cImZpbGw6dXJsKCNzKVwiLz5gLFxuICBcIlNvbGlkaXR5IChFdGhlcmV1bSlcIjogYDxwYXRoIGQ9XCJNMjAuNDc3LDJsLTQuNSw4aC05bDQuNS04aDlcIiBzdHlsZT1cImZpbGw6I2MxYzFjMTtvcGFjaXR5OjAuNDU7aXNvbGF0aW9uOmlzb2xhdGVcIi8+PHBhdGggZD1cIk0xMS41MiwzMGw0LjUtOGg5bC00LjUsOGgtOVwiIHN0eWxlPVwiZmlsbDojYzFjMWMxO29wYWNpdHk6MC40NTtpc29sYXRpb246aXNvbGF0ZVwiLz48cGF0aCBkPVwiTTE1Ljk3NSwxMGg5bC00LjUtOGgtOVpcIiBzdHlsZT1cImZpbGw6I2MxYzFjMTtvcGFjaXR5OjAuNjtpc29sYXRpb246aXNvbGF0ZVwiLz48cGF0aCBkPVwiTTE2LjAyMiwyMmgtOWw0LjUsOGg5WlwiIHN0eWxlPVwiZmlsbDojYzFjMWMxO29wYWNpdHk6MC42O2lzb2xhdGlvbjppc29sYXRlXCIvPjxwYXRoIGQ9XCJNMTEuNDc3LDE4bDQuNS04LTQuNS04LTQuNSw4WlwiIHN0eWxlPVwiZmlsbDojYzFjMWMxO29wYWNpdHk6MC44O2lzb2xhdGlvbjppc29sYXRlXCIvPjxwYXRoIGQ9XCJNMjAuNTIsMTRsLTQuNSw4LDQuNSw4LDQuNS04WlwiIHN0eWxlPVwiZmlsbDojYzFjMWMxO29wYWNpdHk6MC44O2lzb2xhdGlvbjppc29sYXRlXCIvPmAsXG4gIFwiU29sdXRpb24gZmlsZVwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMTZcIiB5MT1cIi0xODIuMDcyXCIgeDI9XCIxNlwiIHkyPVwiLTIwOS45MjhcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLCAwLCAwLCAtMSwgMCwgLTE4MClcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZmZmXCIgc3RvcC1vcGFjaXR5PVwiMFwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3NsbjwvdGl0bGU+PHBhdGggZD1cIk02LjA0NSwyMy45OTFhMS4xNjYsMS4xNjYsMCwwLDEtMS4yMDguMTkxTDIuNzE4LDIzLjNBMS4xNjgsMS4xNjgsMCwwLDEsMiwyMi4yMjJWOS43NzhBMS4xNjUsMS4xNjUsMCwwLDEsMi43MTgsOC43bDIuMTE5LS44ODNhMS4xNjksMS4xNjksMCwwLDEsMS4yMDguMTkxbC40NzYuNDA4QS42NDYuNjQ2LDAsMCwwLDUuNSw4Ljk0MlYyMy4wNThhLjY0Ni42NDYsMCwwLDAsMS4wMjEuNTI1WlwiIHN0eWxlPVwiZmlsbDojNTIyMThhXCIvPjxwYXRoIGQ9XCJNMi43MTgsMjMuM0ExLjE2OSwxLjE2OSwwLDAsMSwyLDIyLjIyMnYtLjFhLjY3NC42NzQsMCwwLDAsMS4xNzQuNDUyTDIxLjI1LDIuNTgzYTEuNzQzLDEuNzQzLDAsMCwxLDEuOTktLjMzOGw1Ljc2OSwyLjc3OEExLjc0OSwxLjc0OSwwLDAsMSwzMCw2LjZ2LjA2N2ExLjEsMS4xLDAsMCwwLTEuOC0uODU0TDYuNTIxLDIzLjU4M2wtLjQ3Ni40MDhhMS4xNjYsMS4xNjYsMCwwLDEtMS4yMDguMTkxWlwiIHN0eWxlPVwiZmlsbDojNmMzM2FmXCIvPjxwYXRoIGQ9XCJNMi43MTgsOC43QTEuMTY4LDEuMTY4LDAsMCwwLDIsOS43Nzh2LjFhLjY3NC42NzQsMCwwLDEsMS4xNzQtLjQ1MkwyMS4yNSwyOS40MTZhMS43NDMsMS43NDMsMCwwLDAsMS45OS4zMzhsNS43NjktMi43NzhBMS43NDcsMS43NDcsMCwwLDAsMzAsMjUuNHYtLjA2OGExLjEsMS4xLDAsMCwxLTEuOC44NTVMNi41MjEsOC40MTdsLS40NzYtLjQwOGExLjE2NiwxLjE2NiwwLDAsMC0xLjIwOC0uMTkxWlwiIHN0eWxlPVwiZmlsbDojODU0Y2M3XCIvPjxwYXRoIGQ9XCJNMjMuMjQsMjkuNzU1YTEuNzQzLDEuNzQzLDAsMCwxLTEuOTktLjMzOEExLjAyNSwxLjAyNSwwLDAsMCwyMywyOC42OTJWMy4zMDhhMS4wMjUsMS4wMjUsMCwwLDAtMS43NS0uNzI1LDEuNzQzLDEuNzQzLDAsMCwxLDEuOTktLjMzOGw1Ljc2OCwyLjc3NEExLjc0OSwxLjc0OSwwLDAsMSwzMCw2LjZWMjUuNDA1YTEuNzUxLDEuNzUxLDAsMCwxLS45OTEsMS41NzdaXCIgc3R5bGU9XCJmaWxsOiNiMTc5ZjFcIi8+PGcgc3R5bGU9XCJvcGFjaXR5OjAuMjVcIj48cGF0aCBkPVwiTTIyLjA5MywyOS44ODNhMS43NCwxLjc0LDAsMCwwLDEuMTQ3LS4xMjhsNS43NjgtMi43NzRBMS43NDksMS43NDksMCwwLDAsMzAsMjUuNFY2LjZhMS43NSwxLjc1LDAsMCwwLS45OTItMS41NzdMMjMuMjQsMi4yNDVhMS43NDIsMS43NDIsMCwwLDAtMS45OS4zMzlsLTkuMywxMC4yODRMNi41MjEsOC40MTZsLS40NzYtLjQwOGExLjE2OCwxLjE2OCwwLDAsMC0xLjIwNy0uMTkxTDIuNzE5LDguN0ExLjE2NywxLjE2NywwLDAsMCwyLDkuNjg5YzAsLjAyOSwwLC4wNTksMCwuMDg4VjIyLjIyMWMwLC4wMywwLC4wNTksMCwuMDg4YTEuMTY3LDEuMTY3LDAsMCwwLC43MTUuOTg5bDIuMTE5Ljg4M2ExLjIyNiwxLjIyNiwwLDAsMCwuMTU1LjA1MiwxLjE2NSwxLjE2NSwwLDAsMCwxLjA1Mi0uMjQzbC40NzYtLjQwOCw1LjQzLTQuNDUyLDkuMywxMC4yODVBMS43MzMsMS43MzMsMCwwLDAsMjIuMDkzLDI5Ljg4M1pNMjMsMTAuMDcyLDE1Ljc3LDE2LDIzLDIxLjkyN1pNNS41LDEybDMuNjE5LDRMNS41LDIwWlwiIHN0eWxlPVwiZmlsbC1ydWxlOmV2ZW5vZGQ7ZmlsbDp1cmwoI2EpXCIvPjwvZz5gLFxuICBcIlNQQVJRTFwiOiBgPHBhdGggZD1cIk0yNi4yODQsMjAuMzYxYy0uMTY1LS4wODQtLjM1OS0uMTY0LS41MjMtLjI0OEgyNS45cy0xLjE1OC0uNS0xLjI0LTQuMTc2Yy0uMTExLTMuNjU1LDEuMS00LjI4OSwxLjEtNC4yODlhNC45Niw0Ljk2LDAsMCwwLDIuMTc2LTIuMTQzLDUuMTIyLDUuMTIyLDAsMCwwLTIuMTIyLTYuOTI3LDUuMzQyLDUuMzQyLDAsMCwwLTcuMTM4LDIuMTQ2LDUuMDY3LDUuMDY3LDAsMCwwLS41MjMsMy4yMTRMMTguMSw3Ljg1NXMuMywxLjMxOS0yLjgzOSwzLjI3MmMtMy4xMTUsMS45NS00LjU0OS45NjItNC41NDkuOTYybC4wODIuMTM4YTIuMTMxLDIuMTMxLDAsMCwwLS4yNzMtLjE2Nyw1LjExNyw1LjExNywwLDEsMCwuODI1LDguNTJsLS4wMjUuMDU1czEuMTI5LS45MzMsNC40MDcuODI3YzIuNTkyLDEuMzc0LDIuOTc5LDIuNzQ4LDMuMDMzLDMuMjRhNS4xLDUuMSwwLDAsMCwyLjcsNC43LDUuMTI0LDUuMTI0LDAsMSwwLDQuODI1LTkuMDQxWm0tNS43OS42ODVjLS40MTIuMTM4LTEuNi4zLTQuMDc3LTEuMDE3LTIuNy0xLjQ1NC0zLjExNS0yLjY2NC0zLjE2OS0zLjAyMWE1LjQwNiw1LjQwNiwwLDAsMC0uMDU3LTEuMzE5bC4wMjkuMDI2UzEzLDE0LjUzNCwxNi4wODQsMTIuNjM5YzIuNzU3LTEuNzA1LDQuMDI2LTEuMzc0LDQuMjQ1LTEuMjkzYTIuODMsMi44MywwLDAsMCwuNDcuMjc3LDQuMDgyLDQuMDgyLDAsMCwwLC45NjQuMzgzYy4zODcuMzU3LDEuMDc2LDEuMzc0LDEuMTU4LDQuMXMtLjcxNywzLjc2NC0xLjE1OCw0LjEyMUE1LjA0LDUuMDQsMCwwLDAsMjAuNDk0LDIxLjA0N1pcIiBzdHlsZT1cImZpbGw6IzBjNDc5Y1wiLz48cGF0aCBkPVwiTTIwLjEzNSw0LjIyOWEzLjg2MSwzLjg2MSwwLDAsMC0uMDgyLDUuMzg2Yy0uNzE3LS42ODUtLjY4OC0yLjExNy4wMjktMy40NjJhLjY3My42NzMsMCwwLDEsLjc0Ni0uMjc3Yy4wMjUsMCwuMDU0LjAyOS4wODIuMDI5YS45OTMuOTkzLDAsMCwwLC4yNzYuMDI2QTEuMDU2LDEuMDU2LDAsMCwwLDIyLjIsNC44MDVhLjkzNC45MzQsMCwwLDAtLjMtLjY4NWMxLjM4LS45MDcsMi45NS0xLjAxNywzLjYxLS40MTJoLjAyOUEzLjgyNiwzLjgyNiwwLDAsMCwyMC4xMzUsNC4yMjlaTTUuMTQ1LDEzLjg0NmEzLjg1OSwzLjg1OSwwLDAsMC0uMDgyLDUuMzg5Yy0uNzE3LS42ODktLjY5Mi0yLjExNy4wMjUtMy40NjVhLjY2OC42NjgsMCwwLDEsLjc0Ni0uMjczYy4wMjUsMCwuMDU0LjAyOS4wODIuMDI5YTEsMSwwLDAsMCwuMjc2LjAyNkExLjA1NiwxLjA1NiwwLDAsMCw3LjIxLDE0LjQyNWEuOTQ1Ljk0NSwwLDAsMC0uMy0uNjg5YzEuMzc3LS45MDcsMi45NDctMS4wMTcsMy42MS0uNDEyaC4wMjVBMy44NTIsMy44NTIsMCwwLDAsNS4xNDUsMTMuODQ2Wm0xNS44NzIsOC4xNjNhMy44NjUsMy44NjUsMCwwLDAtLjA4Miw1LjM4OWMtLjcxNy0uNjg5LS42ODgtMi4xMTcuMDI5LTMuNDY1YS42NjguNjY4LDAsMCwxLC43NDYtLjI3M2MuMDI1LDAsLjA1NC4wMjYuMDgyLjAyNmEuODg3Ljg4NywwLDAsMCwuMjc2LjAyOSwxLjA1NywxLjA1NywwLDAsMCwxLjAxOC0xLjEyNi45MzYuOTM2LDAsMCwwLS4zLS42ODljMS4zOC0uOTA3LDIuOTUtMS4wMTcsMy42MS0uNDEyaC4wMjlBMy44MjksMy44MjksMCwwLDAsMjEuMDE3LDIyLjAwOVpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuICBcIlNRRlwiOiBgPHBhdGggZD1cIk0yNSwyMy41SDdhNS4wMTUsNS4wMTUsMCwwLDEtNS01di02YTUuMDE1LDUuMDE1LDAsMCwxLDUtNUgyNWE1LjAxNSw1LjAxNSwwLDAsMSw1LDV2NmE1LjAxNSw1LjAxNSwwLDAsMS01LDVaXCIvPjxwYXRoIGQ9XCJNNywxOS40NjFhNC44MSw0LjgxLDAsMCwxLTEuNDE0LS4yLDUuMDUyLDUuMDUyLDAsMCwxLTEuMTExLS40NzJsLS40LjQzMmgtLjVMMy41LDE2LjA1Mkg0YTguNDYyLDguNDYyLDAsMCwwLC40MzEuOTUzLDQuNjM4LDQuNjM4LDAsMCwwLC42MDYuOSwzLjE3NywzLjE3NywwLDAsMCwuOC42NzUsMS45ODUsMS45ODUsMCwwLDAsMS4wMjkuMjYsMS42NzIsMS42NzIsMCwwLDAsMS4yMTYtLjQxMUExLjM4MiwxLjM4MiwwLDAsMCw4LjUsMTcuMzkxYTEuMTU2LDEuMTU2LDAsMCwwLS4zNTktLjg2MiwyLjk0NSwyLjk0NSwwLDAsMC0xLjExMS0uNnEtLjQ5LS4xNjctLjktLjMxdC0uNzczLS4yOTJhMi41OCwyLjU4LDAsMCwxLTEuMjM5LTEuMDA3LDIuNzMsMi43MywwLDAsMS0uNDA1LTEuNDY1LDIuNDA2LDIuNDA2LDAsMCwxLC4yMS0uOTg2LDIuNjA4LDIuNjA4LDAsMCwxLC42MTItLjg1LDIuOTY3LDIuOTY3LDAsMCwxLC45ODUtLjU3NSwzLjcyMiwzLjcyMiwwLDAsMSwxLjMwNi0uMjIzLDMuOTg0LDMuOTg0LDAsMCwxLDEuMjg4LjIsNS4xNTEsNS4xNTEsMCwwLDEsLjk0NC40MDhsLjM1Ni0uMzdoLjUwN2wuMDQ3LDIuOTg4aC0uNXEtLjE3NS0uNDgzLS40MTEtLjk4N2E0LjMzMiw0LjMzMiwwLDAsMC0uNS0uODM5LDIuMywyLjMsMCwwLDAtLjY1OS0uNTczLDEuNzI5LDEuNzI5LDAsMCwwLS44NzUtLjIxNEExLjQzNywxLjQzNywwLDAsMCw2LDExLjIxMmExLjIzMywxLjIzMywwLDAsMC0uNC45MzQsMS4xNDEsMS4xNDEsMCwwLDAsLjM0Ny44NiwyLjk1MSwyLjk1MSwwLDAsMCwxLjA4Mi41ODhxLjQzMS4xNTQuODguMzA5dC44LjNhMi44ODUsMi44ODUsMCwwLDEsMS4yODYuOTU1LDIuNTEyLDIuNTEyLDAsMCwxLC40NCwxLjUxMiwyLjYzMiwyLjYzMiwwLDAsMS0uOTI3LDEuOTg1LDMuMzY3LDMuMzY3LDAsMCwxLTEuMDc5LjZBNC4zOTEsNC4zOTEsMCwwLDEsNywxOS40NjFaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+PHBhdGggZD1cIk0xOC45MjEsMTEuNDM0YTQuMzM4LDQuMzM4LDAsMCwxLC45NzEsMS40MzIsNC44MzQsNC44MzQsMCwwLDEsLjM1OSwxLjkxNCw0Ljk1OCw0Ljk1OCwwLDAsMS0uNzIsMi42OCw0LjAzNiw0LjAzNiwwLDAsMS0yLjAzOCwxLjY2MSwyLjE1MSwyLjE1MSwwLDAsMCwuNDIsMS4yNzIsMS4xNjgsMS4xNjgsMCwwLDAsLjk1LjUzNywzLjU2MywzLjU2MywwLDAsMCwuNTkyLS4wNDNxLjI1NC0uMDQzLjQ1OC0uMXYuNTQzYTUuNzUzLDUuNzUzLDAsMCwxLS45ODUuMyw2LjA1NCw2LjA1NCwwLDAsMS0xLjM3LjE1MSwyLjIwNiwyLjIwNiwwLDAsMS0xLjYxMi0uNjIxLDIuNTc0LDIuNTc0LDAsMCwxLS43MDgtMS43MzJBNC41NzksNC41NzksMCwwLDEsMTMuNywxOWE0LjE4Niw0LjE4NiwwLDAsMS0xLjI1My0uOTMyLDQuMzg4LDQuMzg4LDAsMCwxLS44NDItMS4zNzcsNC43NjksNC43NjksMCwwLDEtLjMxMi0xLjc1Myw1LjIzNyw1LjIzNywwLDAsMSwuMzQ3LTEuOTQ4LDQuNSw0LjUsMCwwLDEsLjk1My0xLjUsNC4xMTksNC4xMTksMCwwLDEsMS40MjUtLjk0Miw0Ljg2LDQuODYsMCwwLDEsMy41LS4wMDlBNC4yNDcsNC4yNDcsMCwwLDEsMTguOTIxLDExLjQzNFptLTEuNSw2LjI2NmE0Ljg1Nyw0Ljg1NywwLDAsMCwuMzc5LTEuMjczLDkuOTgxLDkuOTgxLDAsMCwwLC4xMTctMS42MDYsMTAuNTM0LDEwLjUzNCwwLDAsMC0uMS0xLjQ4LDQuOTM2LDQuOTM2LDAsMCwwLS4zNDctMS4yODIsMi40MSwyLjQxLDAsMCwwLS42NjUtLjksMS41NzEsMS41NzEsMCwwLDAtMS4wMzItLjM0LDEuNzMsMS43MywwLDAsMC0xLjYsMS4wNiw2LjYzNCw2LjYzNCwwLDAsMC0uNTQ4LDIuOTkzLDkuNTgzLDkuNTgzLDAsMCwwLC4xMiwxLjU1MSw0LjgsNC44LDAsMCwwLC4zNzYsMS4yNzMsMi4yODYsMi4yODYsMCwwLDAsLjY2NS44NTYsMS41OTEsMS41OTEsMCwwLDAsLjk5MS4zMDYsMS42MTEsMS42MTEsMCwwLDAsLjk5MS0uMzA5QTIuMTM1LDIuMTM1LDAsMCwwLDE3LjQyMywxNy43WlwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPjxwYXRoIGQ9XCJNMjguNSwxMi44aC0uNDU1YTMuOTMsMy45MywwLDAsMC0uNi0xLjA4NiwxLjM4NSwxLjM4NSwwLDAsMC0uODEyLS42M2MtLjExNi0uMDE2LS4yNzItLjAzMS0uNDY1LS4wNDNzLS4zNzMtLjAxOS0uNTM1LS4wMTlIMjQuMzQ5djMuNDMzaC44MjJhMS45NjksMS45NjksMCwwLDAsLjYwNi0uMDgzLDEuMDU0LDEuMDU0LDAsMCwwLC40NTUtLjMsMS41OTEsMS41OTEsMCwwLDAsLjI4My0uNTE2LDIuNjM1LDIuNjM1LDAsMCwwLC4xNjYtLjYyMWguNDQzdjMuNjg2aC0uNDQzYTIuNDcxLDIuNDcxLDAsMCwwLS4xODEtLjY3NiwyLjA5NCwyLjA5NCwwLDAsMC0uMjY4LS41MjgsMS4wMTIsMS4wMTIsMCwwLDAtLjQzMS0uMjkzLDEuODQyLDEuODQyLDAsMCwwLS42My0uMWgtLjgyMnYyLjlhLjg0Mi44NDIsMCwwLDAsLjA3OS4zOC41OC41OCwwLDAsMCwuMy4yNTYsMS44NywxLjg3LDAsMCwwLC4zNTMuMXEuMjI0LjA0Ni40NDYuMDcxdi40ODJoLTQuNDZ2LS40ODJsLjQ0OS0uMDUyYTEuNTI1LDEuNTI1LDAsMCwwLC4zOTEtLjA4My41NDcuNTQ3LDAsMCwwLC4yOTItLjI0MS44NDIuODQyLDAsMCwwLC4wODItLjR2LTYuMThhLjg2Ny44NjcsMCwwLDAtLjA3My0uMzY3LjU3NS41NzUsMCwwLDAtLjMtLjI2MiwyLjM0MSwyLjM0MSwwLDAsMC0uNDMxLS4xMzZxLS4yNjgtLjA2Mi0uNDA4LS4wOHYtLjQ4MkgyOC41WlwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPmAsXG4gIFwiU1FGOiBTdGF0dXMgUXVvIEZ1bmN0aW9uIChBcm1hIDMpXCI6IGA8cGF0aCBkPVwiTTI1LDIzLjVIN2E1LjAxNSw1LjAxNSwwLDAsMS01LTV2LTZhNS4wMTUsNS4wMTUsMCwwLDEsNS01SDI1YTUuMDE1LDUuMDE1LDAsMCwxLDUsNXY2YTUuMDE1LDUuMDE1LDAsMCwxLTUsNVpcIi8+PHBhdGggZD1cIk03LDE5LjQ2MWE0LjgxLDQuODEsMCwwLDEtMS40MTQtLjIsNS4wNTIsNS4wNTIsMCwwLDEtMS4xMTEtLjQ3MmwtLjQuNDMyaC0uNUwzLjUsMTYuMDUySDRhOC40NjIsOC40NjIsMCwwLDAsLjQzMS45NTMsNC42MzgsNC42MzgsMCwwLDAsLjYwNi45LDMuMTc3LDMuMTc3LDAsMCwwLC44LjY3NSwxLjk4NSwxLjk4NSwwLDAsMCwxLjAyOS4yNiwxLjY3MiwxLjY3MiwwLDAsMCwxLjIxNi0uNDExQTEuMzgyLDEuMzgyLDAsMCwwLDguNSwxNy4zOTFhMS4xNTYsMS4xNTYsMCwwLDAtLjM1OS0uODYyLDIuOTQ1LDIuOTQ1LDAsMCwwLTEuMTExLS42cS0uNDktLjE2Ny0uOS0uMzF0LS43NzMtLjI5MmEyLjU4LDIuNTgsMCwwLDEtMS4yMzktMS4wMDcsMi43MywyLjczLDAsMCwxLS40MDUtMS40NjUsMi40MDYsMi40MDYsMCwwLDEsLjIxLS45ODYsMi42MDgsMi42MDgsMCwwLDEsLjYxMi0uODUsMi45NjcsMi45NjcsMCwwLDEsLjk4NS0uNTc1LDMuNzIyLDMuNzIyLDAsMCwxLDEuMzA2LS4yMjMsMy45ODQsMy45ODQsMCwwLDEsMS4yODguMiw1LjE1MSw1LjE1MSwwLDAsMSwuOTQ0LjQwOGwuMzU2LS4zN2guNTA3bC4wNDcsMi45ODhoLS41cS0uMTc1LS40ODMtLjQxMS0uOTg3YTQuMzMyLDQuMzMyLDAsMCwwLS41LS44MzksMi4zLDIuMywwLDAsMC0uNjU5LS41NzMsMS43MjksMS43MjksMCwwLDAtLjg3NS0uMjE0QTEuNDM3LDEuNDM3LDAsMCwwLDYsMTEuMjEyYTEuMjMzLDEuMjMzLDAsMCwwLS40LjkzNCwxLjE0MSwxLjE0MSwwLDAsMCwuMzQ3Ljg2LDIuOTUxLDIuOTUxLDAsMCwwLDEuMDgyLjU4OHEuNDMxLjE1NC44OC4zMDl0LjguM2EyLjg4NSwyLjg4NSwwLDAsMSwxLjI4Ni45NTUsMi41MTIsMi41MTIsMCwwLDEsLjQ0LDEuNTEyLDIuNjMyLDIuNjMyLDAsMCwxLS45MjcsMS45ODUsMy4zNjcsMy4zNjcsMCwwLDEtMS4wNzkuNkE0LjM5MSw0LjM5MSwwLDAsMSw3LDE5LjQ2MVpcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz48cGF0aCBkPVwiTTE4LjkyMSwxMS40MzRhNC4zMzgsNC4zMzgsMCwwLDEsLjk3MSwxLjQzMiw0LjgzNCw0LjgzNCwwLDAsMSwuMzU5LDEuOTE0LDQuOTU4LDQuOTU4LDAsMCwxLS43MiwyLjY4LDQuMDM2LDQuMDM2LDAsMCwxLTIuMDM4LDEuNjYxLDIuMTUxLDIuMTUxLDAsMCwwLC40MiwxLjI3MiwxLjE2OCwxLjE2OCwwLDAsMCwuOTUuNTM3LDMuNTYzLDMuNTYzLDAsMCwwLC41OTItLjA0M3EuMjU0LS4wNDMuNDU4LS4xdi41NDNhNS43NTMsNS43NTMsMCwwLDEtLjk4NS4zLDYuMDU0LDYuMDU0LDAsMCwxLTEuMzcuMTUxLDIuMjA2LDIuMjA2LDAsMCwxLTEuNjEyLS42MjEsMi41NzQsMi41NzQsMCwwLDEtLjcwOC0xLjczMkE0LjU3OSw0LjU3OSwwLDAsMSwxMy43LDE5YTQuMTg2LDQuMTg2LDAsMCwxLTEuMjUzLS45MzIsNC4zODgsNC4zODgsMCwwLDEtLjg0Mi0xLjM3Nyw0Ljc2OSw0Ljc2OSwwLDAsMS0uMzEyLTEuNzUzLDUuMjM3LDUuMjM3LDAsMCwxLC4zNDctMS45NDgsNC41LDQuNSwwLDAsMSwuOTUzLTEuNSw0LjExOSw0LjExOSwwLDAsMSwxLjQyNS0uOTQyLDQuODYsNC44NiwwLDAsMSwzLjUtLjAwOUE0LjI0Nyw0LjI0NywwLDAsMSwxOC45MjEsMTEuNDM0Wm0tMS41LDYuMjY2YTQuODU3LDQuODU3LDAsMCwwLC4zNzktMS4yNzMsOS45ODEsOS45ODEsMCwwLDAsLjExNy0xLjYwNiwxMC41MzQsMTAuNTM0LDAsMCwwLS4xLTEuNDgsNC45MzYsNC45MzYsMCwwLDAtLjM0Ny0xLjI4MiwyLjQxLDIuNDEsMCwwLDAtLjY2NS0uOSwxLjU3MSwxLjU3MSwwLDAsMC0xLjAzMi0uMzQsMS43MywxLjczLDAsMCwwLTEuNiwxLjA2LDYuNjM0LDYuNjM0LDAsMCwwLS41NDgsMi45OTMsOS41ODMsOS41ODMsMCwwLDAsLjEyLDEuNTUxLDQuOCw0LjgsMCwwLDAsLjM3NiwxLjI3MywyLjI4NiwyLjI4NiwwLDAsMCwuNjY1Ljg1NiwxLjU5MSwxLjU5MSwwLDAsMCwuOTkxLjMwNiwxLjYxMSwxLjYxMSwwLDAsMCwuOTkxLS4zMDlBMi4xMzUsMi4xMzUsMCwwLDAsMTcuNDIzLDE3LjdaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+PHBhdGggZD1cIk0yOC41LDEyLjhoLS40NTVhMy45MywzLjkzLDAsMCwwLS42LTEuMDg2LDEuMzg1LDEuMzg1LDAsMCwwLS44MTItLjYzYy0uMTE2LS4wMTYtLjI3Mi0uMDMxLS40NjUtLjA0M3MtLjM3My0uMDE5LS41MzUtLjAxOUgyNC4zNDl2My40MzNoLjgyMmExLjk2OSwxLjk2OSwwLDAsMCwuNjA2LS4wODMsMS4wNTQsMS4wNTQsMCwwLDAsLjQ1NS0uMywxLjU5MSwxLjU5MSwwLDAsMCwuMjgzLS41MTYsMi42MzUsMi42MzUsMCwwLDAsLjE2Ni0uNjIxaC40NDN2My42ODZoLS40NDNhMi40NzEsMi40NzEsMCwwLDAtLjE4MS0uNjc2LDIuMDk0LDIuMDk0LDAsMCwwLS4yNjgtLjUyOCwxLjAxMiwxLjAxMiwwLDAsMC0uNDMxLS4yOTMsMS44NDIsMS44NDIsMCwwLDAtLjYzLS4xaC0uODIydjIuOWEuODQyLjg0MiwwLDAsMCwuMDc5LjM4LjU4LjU4LDAsMCwwLC4zLjI1NiwxLjg3LDEuODcsMCwwLDAsLjM1My4xcS4yMjQuMDQ2LjQ0Ni4wNzF2LjQ4MmgtNC40NnYtLjQ4MmwuNDQ5LS4wNTJhMS41MjUsMS41MjUsMCwwLDAsLjM5MS0uMDgzLjU0Ny41NDcsMCwwLDAsLjI5Mi0uMjQxLjg0Mi44NDIsMCwwLDAsLjA4Mi0uNHYtNi4xOGEuODY3Ljg2NywwLDAsMC0uMDczLS4zNjcuNTc1LjU3NSwwLDAsMC0uMy0uMjYyLDIuMzQxLDIuMzQxLDAsMCwwLS40MzEtLjEzNnEtLjI2OC0uMDYyLS40MDgtLjA4di0uNDgySDI4LjVaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+YCxcbiAgXCJTUUxcIjogYDxwYXRoIGQ9XCJNOC41NjIsMTUuMjU2QTIxLjE1OSwyMS4xNTksMCwwLDAsMTYsMTYuNDQ5YTIxLjE1OSwyMS4xNTksMCwwLDAsNy40MzgtMS4xOTRjMS44NjQtLjcyNywyLjUyNS0xLjUzNSwyLjUyNS0yVjkuN2ExMC4zNTcsMTAuMzU3LDAsMCwxLTIuMDg0LDEuMDc2QTIyLjI5MywyMi4yOTMsMCwwLDEsMTYsMTIuMDc4YTIyLjM2LDIyLjM2LDAsMCwxLTcuODc5LTEuM0ExMC4yOCwxMC4yOCwwLDAsMSw2LjAzNyw5Ljd2My41NUM2LjAzNywxMy43MjQsNi43LDE0LjUyOCw4LjU2MiwxNS4yNTZaXCIgc3R5bGU9XCJmaWxsOiNmZmRhNDRcIi8+PHBhdGggZD1cIk04LjU2MiwyMS45NjFhMTUuNjExLDE1LjYxMSwwLDAsMCwyLjYuNzQxQTI0LjksMjQuOSwwLDAsMCwxNiwyMy4xNTVhMjQuOSwyNC45LDAsMCwwLDQuODM4LS40NTIsMTUuNjE0LDE1LjYxNCwwLDAsMCwyLjYtLjc0MWMxLjg2NC0uNzI3LDIuNTI1LTEuNTM1LDIuNTI1LTJ2LTMuMzlhMTAuNzA2LDEwLjcwNiwwLDAsMS0xLjY5Mi44MjVBMjMuNDksMjMuNDksMCwwLDEsMTYsMTguNzRhMjMuNDksMjMuNDksMCwwLDEtOC4yNzEtMS4zNDgsMTAuODI5LDEwLjgyOSwwLDAsMS0xLjY5Mi0uODI1VjE5Ljk2QzYuMDM3LDIwLjQyNiw2LjcsMjEuMjMxLDguNTYyLDIxLjk2MVpcIiBzdHlsZT1cImZpbGw6I2ZmZGE0NFwiLz48cGF0aCBkPVwiTTE2LDMwYzUuNSwwLDkuOTYzLTEuNzQ0LDkuOTYzLTMuODk0VjIzLjI2OWExMC41LDEwLjUsMCwwLDEtMS41MzUuNzYybC0uMTU3LjA2M0EyMy40ODcsMjMuNDg3LDAsMCwxLDE2LDI1LjQ0NWEyMy40MjIsMjMuNDIyLDAsMCwxLTguMjcxLTEuMzUxYy0uMDU0LS4wMi0uMTA2LS4wNDMtLjE1Ny0uMDYzYTEwLjUsMTAuNSwwLDAsMS0xLjUzNS0uNzYydjIuODM3QzYuMDM3LDI4LjI1NiwxMC41LDMwLDE2LDMwWlwiIHN0eWxlPVwiZmlsbDojZmZkYTQ0XCIvPjxlbGxpcHNlIGN4PVwiMTZcIiBjeT1cIjUuODk0XCIgcng9XCI5Ljk2M1wiIHJ5PVwiMy44OTRcIiBzdHlsZT1cImZpbGw6I2ZmZGE0NFwiLz5gLFxuICBcIlNxdWlycmVsXCI6IGA8cGF0aCBkPVwiTTEyLjk2NiwyNy4zYTE4LjkyNiwxOC45MjYsMCwwLDEtNS43MDctLjkxNWMtMS44MzItLjU5Mi00LjA0NC0xLjU0LTQuOTMxLTMuNjQ1YS41NTcuNTU3LDAsMCwxLS4wMjUtLjA3MywxMi4yMTQsMTIuMjE0LDAsMCwxLC43NjMtNy41MzFjMS41MjItNC4wMDgsMy43MS02LjczOSw2LjUtOC4xMTZhMTAuNDIyLDEwLjQyMiwwLDAsMSw3LjYtLjU1LDEwLjQyNiwxMC40MjYsMCwwLDEsNi4wNCw0LjYzOSwxMS4wNTcsMTEuMDU3LDAsMCwxLDEuMDU4LDIuMzI2LDEwLjY2LDEwLjY2LDAsMCwxLTUuMzc4LDEyLjY4OWwtLjAyLjAwOUExNC44MzIsMTQuODMyLDAsMCwxLDEyLjk2NiwyNy4zWlwiLz48cGF0aCBkPVwiTTIyLjcyLDExLjM5M2ExMC4xNDQsMTAuMTQ0LDAsMCwwLTEyLjktMy44NjlDNi43LDkuMDYxLDQuNzg0LDEyLjIsMy41OTMsMTUuMzM0YTExLjksMTEuOSwwLDAsMC0uNzQ2LDcuMTg3Yy43ODMsMS44NiwyLjc3OSwyLjc0NCw0LjU4MiwzLjMyN2ExNi4yMDYsMTYuMjA2LDAsMCwwLDExLjIxMy0uMjMyQTEwLjExLDEwLjExLDAsMCwwLDIzLjcyNywxMy42LDEwLjQ4OCwxMC40ODgsMCwwLDAsMjIuNzIsMTEuMzkzWlwiIHN0eWxlPVwiZmlsbDojYTA1YTJjXCIvPjxwYXRoIGQ9XCJNMTUuNzgyLDYuNzJBOC4yNjMsOC4yNjMsMCwwLDEsMTcuNjQsOC4wODQsOS42NSw5LjY1LDAsMCwxLDE5LjA4LDkuOGE5LjMxNyw5LjMxNywwLDAsMS0xLjUzMSwxMS45MjFBMTQuOTMzLDE0LjkzMywwLDAsMSw3LjY1NiwyNC43YTcuNTgxLDcuNTgxLDAsMCwxLTQuMTM1LTEuMSw4LjQ1NCw4LjQ1NCwwLDAsMCwzLjkwNywyLjI0MSwxNi4yMDgsMTYuMjA4LDAsMCwwLDExLjIxNC0uMjMzQTEwLjExMiwxMC4xMTIsMCwwLDAsMjMuNzI3LDEzLjZhMTAuNDg3LDEwLjQ4NywwLDAsMC0xLjAwNy0yLjIxMUE5Ljk3Myw5Ljk3MywwLDAsMCwxNS43ODIsNi43MlpcIiBzdHlsZT1cImZpbGwtb3BhY2l0eTowLjMxMzcyNTUwMTI5ODkwNDRcIi8+PHBhdGggZD1cIk0yMy40NzYsMTMuMzg5bC0xLjA2Mi0yLjg5NS4xNTItLjIzNkE2Ljg3NSw2Ljg3NSwwLDAsMSwyNy41MDksNy43YTIuMTc3LDIuMTc3LDAsMCwxLDEuODc5LjU4OCwzLjM3NiwzLjM3NiwwLDAsMSwuMSwzLjcyOWMtLjM0My4yOTItLjc1MS4xMjQtMS4yMjItLjA3YTIuODIxLDIuODIxLDAsMCwwLTIuMTMzLS4yNywxMC4yLDEwLjIsMCwwLDAtMi4wNDcsMS4yMDlaXCIvPjxwYXRoIGQ9XCJNMjMuMDM5LDEwLjU2M2MxLjIyMy0xLjksNS4xMDctMi45MTUsNS45MTItMS45MjNhMi45NywyLjk3LDAsMCwxLC4xNzcsMi45NDVjLS4yNDUuMjA3LTEuODM3LTEuMDU5LTMuMjI1LS40MjNBMTAuNTc0LDEwLjU3NCwwLDAsMCwyMy43MywxMi40NVpcIiBzdHlsZT1cImZpbGw6IzUwMmQxNlwiLz48cGF0aCBkPVwiTTI5LjQsOS43MjdhLjguOCwwLDAsMS0uMi40NjljLS4yMjkuMTYyLTEuOS0uNTA2LTMuMjM4LjA1NmExMi40MzksMTIuNDM5LDAsMCwwLTIuMDcxLDEuMDdMMjMuMiwxMC4zNGMtLjA1Ny4wNzQtLjExNi4xNDctLjE2NS4yMjNsLjY5MiwxLjg4NkExMC41NzcsMTAuNTc3LDAsMCwxLDI1LjksMTEuMTYyYzEuMzg4LS42MzYsMi45OC42MzEsMy4yMjUuNDIzQTIuODQ2LDIuODQ2LDAsMCwwLDI5LjQsOS43MjdaXCIgc3R5bGU9XCJmaWxsLW9wYWNpdHk6MC4zMTM3MjU1MDEyOTg5MDQ0XCIvPjxwYXRoIGQ9XCJNMjEuMzgyLDI1LjE4YTIuMjM2LDIuMjM2LDAsMCwxLTEuMTQ3LS4zMjMuNTYzLjU2MywwLDAsMS0uMDgyLS44ODhjLjczNy0uNjg0LjYwNy0yLjE3My0uNDEtNC42ODlhMzYuNTI2LDM2LjUyNiwwLDAsMC01LjEyMy04LjgyNWwtLjM1LS40M2MtMS41MTItMS44NjUtMi4zNTgtMi44MTUtMy41NTQtMi4zYS41NjIuNTYyLDAsMCwxLS40MTMuMDE2LjU3MS41NzEsMCwwLDEtLjM3Ny0uNTkyLDIuMTE5LDIuMTE5LDAsMCwxLDEuNDYxLTJjNC43MTYtMS40ODEsMTAuMjYuODE0LDEyLjkwNSw1LjM0NGExMS4yLDExLjIsMCwwLDEtMS40MzEsMTMuOTkxQTEuOTE5LDEuOTE5LDAsMCwxLDIxLjM4MiwyNS4xOFpcIi8+PHBhdGggZD1cIk0yMy44MTIsMTAuNzgzYy0yLjQ0NC00LjE5Mi03LjczLTYuNTI4LTEyLjI3LTUuMDkzLTEuMDA3LjI0OC0xLjA2NSwxLjUzNS0xLjA1MiwxLjUxNywxLjc3Ni0uNzY3LDIuOTUzLjkxOSw0LjU2NiwyLjg5YTM2LjksMzYuOSwwLDAsMSw1LjIwOSw4Ljk3MWMuODksMi4yLDEuNCw0LjI2Ny4yNyw1LjMxMmExLjUsMS41LDAsMCwwLDEuOTA5LS4yNzRBMTAuNjQ2LDEwLjY0NiwwLDAsMCwyMy44MTIsMTAuNzgzWlwiIHN0eWxlPVwiZmlsbDojNTAyZDE2XCIvPjxwYXRoIGQ9XCJNMjMuNjQ5LDEwLjM0NmE5LjMxNCw5LjMxNCwwLDAsMS0yLjUxOCw3LjcyNWMtLjQ1NS40ODYtLjg3My4xNzctMS4yNjMuMDYzLjEzOC4zMTMuMjcxLjYyNi40LjkzNi44OSwyLjIsMS40LDQuMjY2LjI3MSw1LjMxMmExLjUsMS41LDAsMCwwLDEuOTA5LS4yNzRDMjYuMDg5LDIwLjE4MywyNi4zNTcsMTQuOTE5LDIzLjY0OSwxMC4zNDZaXCIgc3R5bGU9XCJmaWxsLW9wYWNpdHk6MC4zMTM3MjU1MDEyOTg5MDQ0XCIvPmAsXG4gIFwiU3RhblwiOiBgPHRpdGxlPmZpbGVfdHlwZV9zdGFuPC90aXRsZT48cGF0aCBkPVwiTTE2LDJBMTQsMTQsMCwwLDAsNS42ODgsMjUuNDY5YzEuNy0uNTE0LDMuNDExLS45OTIsNC44MDYtMS4zNTcsNC4wMzctMS4wNTQsMTAuOTQ4LTIuODM2LDExLjk0Ni01LjA4Mi0uMjguNzgtMS4yMTgsMi44Ny0xLjIxOCwyLjg3LTEuMjc5LDEuMjQ3LTcuMDksMi42MzEtMTAuOTE3LDMuMzY3LTEuMjIuMjM1LTIuNjE0LjUwNy00LjAyNi44MDZBMTQsMTQsMCwwLDAsMjguNDY3LDkuNjI4Yy0yLjUyNi40MDgtMTAuNSwxLjg1NC0xMi41MzksMi4zMTUtMi4yNTUuNTA5LTYuNzg5LDEuNDMzLTcuNjk0LDIuOTkzQzguOCwxMy41LDEwLjQ5Miw5Ljc0NCwxMC40OTIsOS43NDRjMS4yMTYtMiw2LjYtMy40MjUsMTAuMzU4LTQuNDYzLjg3Ni0uMjQyLDEuOTIyLS41MzksMy4wMjMtLjg1OEExMy45MzQsMTMuOTM0LDAsMCwwLDE2LDJaXCIgc3R5bGU9XCJmaWxsOiNiMjAwMWRcIi8+PHBhdGggZD1cIk04LjIyMywxNC45ODdjLS4yNTIsMS4xNzUsMy41MiwyLjMxMyw2LjkyMSwzLjM4OWEyNi4zNjIsMjYuMzYyLDAsMCwxLDUuNjY3LDIuMTkyLDMuMDg1LDMuMDg1LDAsMCwwLDEuNjYyLTEuNjE0Yy4zNzctMS40ODktMy4wMTMtMy4zOTMtNS4yNzQtNC4yMjlhMzMuMzM3LDMzLjMzNywwLDAsMS00LjQwNy0yLjA0MmMtNC4zMTYsMS4xNDMtNC41NjksMi4zLTQuNTY5LDIuM1pcIiBzdHlsZT1cImZpbGw6IzU5MDgxNVwiLz5gLFxuICBcIlN0YXRhIEFkb1wiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMTZcIiB5MT1cIjJcIiB4Mj1cIjE2XCIgeTI9XCIzMFwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzhhYTdjMFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMzYzZlOGZcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9zdGF0YTwvdGl0bGU+PHJlY3QgeD1cIjJcIiB5PVwiMlwiIHdpZHRoPVwiMjhcIiBoZWlnaHQ9XCIyOFwiIHJ4PVwiMS41NTZcIiByeT1cIjEuNTU2XCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHJlY3QgeD1cIjEzLjE3MVwiIHk9XCI2LjAxNVwiIHdpZHRoPVwiNS43NTZcIiBoZWlnaHQ9XCI1Ljc1NlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxyZWN0IHg9XCIyMC4zMjZcIiB5PVwiNi4wMTVcIiB3aWR0aD1cIjUuNzU2XCIgaGVpZ2h0PVwiNS43NTZcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cmVjdCB4PVwiMjAuMzI2XCIgeT1cIjEzLjE3MVwiIHdpZHRoPVwiNS43NTZcIiBoZWlnaHQ9XCI1Ljc1NlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxyZWN0IHg9XCIxMy4xNzFcIiB5PVwiMTMuMTcxXCIgd2lkdGg9XCI1Ljc1NlwiIGhlaWdodD1cIjUuNzU2XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHJlY3QgeD1cIjYuMDE1XCIgeT1cIjEzLjE3MVwiIHdpZHRoPVwiNS43NTZcIiBoZWlnaHQ9XCI1Ljc1NlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxyZWN0IHg9XCI2LjAxNVwiIHk9XCIyMC4zMjZcIiB3aWR0aD1cIjUuNzU2XCIgaGVpZ2h0PVwiNS43NTZcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cmVjdCB4PVwiMTMuMTcxXCIgeT1cIjIwLjMyNlwiIHdpZHRoPVwiNS43NTZcIiBoZWlnaHQ9XCI1Ljc1NlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG4gIFwiU3R5bHVzXCI6IGA8dGl0bGU+ZmlsZV90eXBlX3N0eWx1czwvdGl0bGU+PHBhdGggZD1cIk02LjMxNSwyMC43NzZjLjcyNi0uODY5LjgxMi0xLjc2Ni4yNDktMy40MzItLjM1Ni0xLjA1NC0uOTQ3LTEuODY1LS41MTMtMi41MjEuNDYzLS43LDEuNDQ1LS4wMjEuNjI3LjkxMWwuMTY0LjExNGMuOTgzLjExNCwxLjQ2Ny0xLjIzMi43MzMtMS42MTYtMS45MzctMS4wMTEtMy42MzEuOTMzLTIuODg0LDMuMTgzLjMyLjk1NC43NjksMS45NjUuNDA2LDIuNzdBMS43OTQsMS43OTQsMCwwLDEsMy43NzMsMjEuM2MtLjg0Ny4wNDMtLjI4NS0xLjkuNjkxLTIuMzg1LjA4NS0uMDQzLjIwNi0uMS4wOTMtLjI0MmEyLjEzNCwyLjEzNCwwLDAsMC0yLjMxNCwxLjJDMS4wNjEsMjIuMTIxLDQuNDg1LDIyLjk1NCw2LjMxNSwyMC43NzZaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+PHBhdGggZD1cIk0yNy40NjIsMTQuMTRjLjI3OC42ODQuNywxLjM2LjQ0OSwxLjk1OC0uMjA2LjUxMy0uNDc3LjcyNi0uNzc2Ljc3Ni0uNDIuMDcxLS4zMDYtMS4yNDYuNDEzLTEuNjM4LjA2NC0uMDM2LjE1Ny0uMjA2LjA3MS0uMzA2YTEuNjM2LDEuNjM2LDAsMCwwLTEuNy45NjFjLS44LDEuNjg3LDEuODIzLDIuMTUsMy4xMTIuNDkxLjUxMy0uNjYyLjUzNC0xLjMxNy4wNDMtMi41MDYtLjMxMy0uNzU1LS43OS0xLjMxNy0uNDkxLTEuODE2LjMyLS41MjcsMS4wODktLjA3MS41MTMuNjM0bC4xMjguMDcxYy43NDguMDQzLDEuMDU0LS45NTQuNDg0LTEuMkExLjgzNCwxLjgzNCwwLDAsMCwyNy40NjIsMTQuMTRaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+PHBhdGggZD1cIk0xNy45NSwxMi4zMzhjLS41Mi0uNDEzLTEuOTc5LjI3OC0yLjM5MiwxLjNhMTYuMjEzLDE2LjIxMywwLDAsMS0yLjA0Myw0LjAzN2MtLjguODc2LS44NzYuMi0uOC0uMzA2QTE1LjMyNywxNS4zMjcsMCwwLDEsMTQuNywxMi42NTJjLS4yMzUtLjM0OS0xLjc3My0uMy0yLjg0MSwxLjM2LS40LjYyNy0xLjMxLDIuNzEzLTIuMzIxLDQuMzU4LS4yMjEuMzU2LS41LjEwNy0uMjg1LS43MjZhMzkuOCwzOS44LDAsMCwxLDEuODczLTUuNjgyLDM5LjA3MiwzOS4wNzIsMCwwLDEsNi45MjEtLjgxOWMuMjYzLS4wNzEuNDQxLS4zMDYsMC0uMzJhNDYuNzc4LDQ2Ljc3OCwwLDAsMC02LjU5My40NDEsNC45MjMsNC45MjMsMCwwLDEsMS40NDUtMS45NDQsMS43ODcsMS43ODcsMCwwLDAtMi4yNjQuNzE5LDEyLjI4NywxMi4yODcsMCwwLDAtLjgxOSwxLjQ1MywyNC4xOTQsMjQuMTk0LDAsMCwwLTMuOTguODYyYy0uNzgzLjMtLjcsMS4yNDYtLjIyMSwxLjA2OGEzMS42MzEsMzEuNjMxLDAsMCwxLDMuODE2LTEuMSwzMC4yOTIsMzAuMjkyLDAsMCwwLTEuODY1LDUuNjgyYy0uNDQxLDIuNDkyLDEuMSwyLjQ3OCwxLjg1OCwxLjUuODE5LTEuMDc1LDIuNTI4LTQuODU2LDIuNzkxLTUuMjU1LjA3OC0uMTM1LjE4NS0uMDY0LjEyOC4wNTctMS45MDgsMy44MDktMS43NDQsNS4yODMtLjIsNC45NTZhNC45MjksNC45MjksMCwwLDAsMi4yMTQtMS45NjVjLjA2NC0uMTUuMi0uMTM1LjE3MS0uMDcxLTEuMjEsMy4xNC0yLjc0OCw1LjY4Mi0zLjc4MSw2LjQ3OS0uOTQuNzE5LTEuNjM4LS44NCwxLjY4Ny0zLjA3Ni40OTEtLjMzNS4yNjMtLjc5LS4yOTItLjYzNGgwYTI5Ljc5MywyOS43OTMsMCwwLDAtOC43ODYsMy4zMjVjLS4xNjQuMTE0LS4zMTMuMjA2LS4zMDYuNDQxLjAwNy4xMzUuMjQyLjA4NS4zNTYuMDE0QTIyLjc3MSwyMi43NzEsMCwwLDEsMTEuMSwyMC45YS4xNTguMTU4LDAsMCwwLC4xMTQuMDA3Yy4xMjEtLjAyOC4xMTQuMDM2LjAzNi4wODUtLjE3OC4xLS4zNTYuMTkyLS40LjIwNi0xLjc2Ni42OTEtMi44MzQsMi4yMTQtMi40NTYsMi45OS4zMi42NjksMi4wNTEuNDI3LDIuODY5LS4wMTQsMi4wMDgtMS4wODksMy40NjgtMy4yMjUsNC40NjQtNi4xNzNDMTYuNiwxNS4zODYsMTcuNjkzLDEyLjQyNCwxNy45NSwxMi4zMzhaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+PHBhdGggZD1cIk0yOS42MiwxOC4zNjlhNDguMTQ1LDQ4LjE0NSwwLDAsMC0xMy40MjkuOTY4Yy0uOTI2LjI0Mi0uNjY5LjczMy0uMi42NDEuMDA3LDAsLjIwNi0uMDUuMjE0LS4wNWE0Mi4yNzksNDIuMjc5LDAsMCwxLDEyLjM3NS0uMjQyQzI5LjAxNCwxOS43NjUsMzAuMzE3LDE4LjQ2MiwyOS42MiwxOC4zNjlaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+PHBhdGggZD1cIk0xOC44NjEsMTcuOTg1Yy45MTEtLjQ1NiwyLjI2NC0zLjI3NSwzLjE1NC00LjgyLjA2NC0uMTE0LjE3OC0uMDIxLjExNC4wNTctMi4yNSwzLjg3My0xLjMsNC4zMjItLjQwNiw0LjI2NSwxLjE4OS0uMDcxLDIuMjg2LTEuNzgsMi41MjgtMi4xNjUuMS0uMTUuMTU3LS4wMjguMS4wNzgtLjA1Ny4xNzgtLjI2My40OTEtLjQ1Ni45MTktLjI3MS42MDUuMDE0Ljg0LjI0OS45NDcuMzcuMTc4LDEuMzgxLjA2NCwxLjUzOC0uNTU1LTEuMDExLS4wMjEsMS40MS00Ljc5MiwxLjY1OS01LjA4NGExLjcxOCwxLjcxOCwwLDAsMC0yLjIuOTc1Yy0xLjAxOCwyLjAxNS0xLjg3MywzLjYzOC0yLjQwNywzLjY2Ny0xLjA0LjA1NywxLjItNC40OTMsMS41NTktNC42MzUtLjIyMS0uMzItMS42MzgtLjE4NS0yLjQyOCwxLjA0LS4yODUuNDQxLTIuMDIyLDMuNTE3LTIuNDQ5LDQuMDIzLS43NTUuOS0uODEyLjEyOC0uNi0uNzY5YTEwLjU2OSwxMC41NjksMCwwLDEsLjM0OS0xLjEzMiw1LjMyNCw1LjMyNCwwLDAsMSwxLjM2LTEuODQ0YzIuMi0yLjQ0MiwzLjQ2LTQuNDIyLDIuOTYyLTUuMi0uNDQxLS42OTEtMS45MTUtLjM4NC0yLjg2MiwxLjA0LTEuNzQ0LDIuNjEzLTMuMzU0LDYuMTk1LTMuNTYsNy44MzJTMTguMDU2LDE4LjM4MywxOC44NjEsMTcuOTg1Wm0uOTI2LTQuNzkyYy4wNzgtLjE3OC4xMjgtLjIyOC4yNjMtLjUyN2gwQTI0LjkzNCwyNC45MzQsMCwwLDEsMjIuNDkyLDguMjhjLjQyLS40NDEsMS4wMTEuMTU3LS4wNTcsMS43OTRhMTYuNDYyLDE2LjQ2MiwwLDAsMS0yLjExNSwyLjY0MnYuMDA3Yy0uMi4yMjEtLjM3Ny40MDYtLjQ1Ni41MTNDMTkuODA4LDEzLjMwNywxOS43NDQsMTMuMjkyLDE5Ljc4NywxMy4xOTNaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+YCxcbiAgXCJTVkdcIjogYDxwYXRoIGQ9XCJNNy42NzQsMTQuNDg4YTIuMjE4LDIuMjE4LDAsMSwwLDAsMy4xMzdIMjQuMzI2YTIuMjE4LDIuMjE4LDAsMSwwLDAtMy4xMzdaXCIgc3R5bGU9XCJmaWxsOiNmZmIxM2I7c3Ryb2tlOiMwMDA7c3Ryb2tlLXdpZHRoOjMuNzMwMDAwMDE5MDczNDlweFwiLz48cGF0aCBkPVwiTTExLjIyMiw5LjA2QTIuMjE4LDIuMjE4LDAsMSwwLDksMTEuMjc4TDIwLjc3OCwyMy4wNTJBMi4yMTgsMi4yMTgsMCwxLDAsMjMsMjAuODM0WlwiIHN0eWxlPVwiZmlsbDojZmZiMTNiO3N0cm9rZTojMDAwO3N0cm9rZS13aWR0aDozLjczMDAwMDAxOTA3MzQ5cHhcIi8+PHBhdGggZD1cIk0xNy41NjgsNy43M2EyLjIxOCwyLjIxOCwwLDEsMC0zLjEzNywwVjI0LjM4MmEyLjIxOCwyLjIxOCwwLDEsMCwzLjEzNywwWlwiIHN0eWxlPVwiZmlsbDojZmZiMTNiO3N0cm9rZTojMDAwO3N0cm9rZS13aWR0aDozLjczMDAwMDAxOTA3MzQ5cHhcIi8+PHBhdGggZD1cIk0yMywxMS4yNzhBMi4yMTgsMi4yMTgsMCwxLDAsMjAuNzc4LDkuMDZMOSwyMC44MzRhMi4yMTgsMi4yMTgsMCwxLDAsMi4yMTgsMi4yMThaXCIgc3R5bGU9XCJmaWxsOiNmZmIxM2I7c3Ryb2tlOiMwMDA7c3Ryb2tlLXdpZHRoOjMuNzMwMDAwMDE5MDczNDlweFwiLz48cGF0aCBkPVwiTTcuNjc0LDE0LjQ4OGEyLjIxOCwyLjIxOCwwLDEsMCwwLDMuMTM3SDI0LjMyNmEyLjIxOCwyLjIxOCwwLDEsMCwwLTMuMTM3WlwiIHN0eWxlPVwiZmlsbDojZmZiMTNiXCIvPjxwYXRoIGQ9XCJNMTEuMjIyLDkuMDZBMi4yMTgsMi4yMTgsMCwxLDAsOSwxMS4yNzhMMjAuNzc4LDIzLjA1MkEyLjIxOCwyLjIxOCwwLDEsMCwyMywyMC44MzRaXCIgc3R5bGU9XCJmaWxsOiNmZmIxM2JcIi8+PHBhdGggZD1cIk0xNy41NjgsNy43M2EyLjIxOCwyLjIxOCwwLDEsMC0zLjEzNywwVjI0LjM4MmEyLjIxOCwyLjIxOCwwLDEsMCwzLjEzNywwWlwiIHN0eWxlPVwiZmlsbDojZmZiMTNiXCIvPjxwYXRoIGQ9XCJNMjMsMTEuMjc4QTIuMjE4LDIuMjE4LDAsMSwwLDIwLjc3OCw5LjA2TDksMjAuODM0YTIuMjE4LDIuMjE4LDAsMSwwLDIuMjE4LDIuMjE4WlwiIHN0eWxlPVwiZmlsbDojZmZiMTNiXCIvPjxwYXRoIGQ9XCJNMiwxNi4wNTZIMzBWMjUuOTVhNC4wMzUsNC4wMzUsMCwwLDEtNC4xMDYsNC4xMDZINi4xMDZBNC4wMzUsNC4wMzUsMCwwLDEsMiwyNS45NVpcIi8+PHBhdGggZD1cIk02LjIsMjMuMDQ1QTMuNjI4LDMuNjI4LDAsMSwxLDEyLjQsMjAuNDhIMTAuMjdBMS41LDEuNSwwLDEsMCw3LjcsMjEuNTQxaDBhMS42LDEuNiwwLDAsMCwxLjA2Mi40NDFoMGE0LjExOCw0LjExOCwwLDAsMSwyLjU2NiwxLjA2M2gwYTMuNjI4LDMuNjI4LDAsMSwxLTYuMTk0LDIuNTY1SDcuMjY0QTEuNSwxLjUsMCwxLDAsOS44MywyNC41NWgwYTEuOTQ4LDEuOTQ4LDAsMCwwLTEuMDYzLS40NGgwQTQuNDY1LDQuNDY1LDAsMCwxLDYuMiwyMy4wNDVaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xOS42NTEsMTYuODUyLDE3LjA4NSwyOS4yNEgxNC45NkwxMi40LDE2Ljg1MkgxNC41MmwxLjUsNy4yNTUsMS41LTcuMjU1WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMjMuMjgsMjEuOTgzaDMuNjI4djMuNjI4aDBhMy42MjgsMy42MjgsMCwxLDEtNy4yNTcsMGgwVjIwLjQ4aDBhMy42MjgsMy42MjgsMCwwLDEsNy4yNTcsMEgyNC43ODNhMS41LDEuNSwwLDEsMC0zLjAwNSwwdjUuMTNoMGExLjUsMS41LDAsMCwwLDMuMDA1LDBoMHYtMS41aC0xLjVWMjEuOTgzWlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG4gIFwiU3dpZnRcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIi0xMzQuNDk0XCIgeTE9XCItMTcxLjgyXCIgeDI9XCItMTM0LjQ5N1wiIHkyPVwiLTE3MS44OVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDI0MCwgMCwgMCwgLTIwNS42LCAzMjI5NSwgLTM1MzEyLjU4NSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmODg1MzVcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZmQyMjIxXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfc3dpZnQ8L3RpdGxlPjxwYXRoIGQ9XCJNMTkuNDIyLDQuMDA3czYuMjE3LDMuNTU0LDcuODQ0LDkuMmMxLjQ2Niw1LjEuMjkyLDcuNTM0LjI5Miw3LjUzNGE4LjkxNSw4LjkxNSwwLDAsMSwxLjc0MiwyLjgsNC44MjUsNC44MjUsMCwwLDEsLjI5LDQuNDUzcy0uMS0yLjA4LTMuMi0yLjUxMWMtMi44NDEtLjQtMy44NzQsMi4zNjYtOS4zLDIuMjMyQTE4LjQzNSwxOC40MzUsMCwwLDEsMiwxOS4zNTRDNC42NTEsMjAuOCw4LjEyNCwyMy4wNDUsMTIuNDQ5LDIyLjdzNS4yMjgtMS42NzQsNS4yMjgtMS42NzRBNjYuOSw2Ni45LDAsMCwxLDQuODkxLDcuNjQzYzMuNCwyLjg0NSwxMS44MjIsOC41MDcsMTEuNjI2LDguMzYzQTc1LjgyNiw3NS44MjYsMCwwLDEsOC4wOTIsNi4yNFMyMC43MjgsMTYuNjI5LDIxLjc0NSwxNi41NjNjLjQxOC0uODYxLDIuNTc5LTUuMzE4LTIuMzI0LTEyLjU1N1pcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz5gLFxuICBcIlN5c3RlbWQgY29uZmlndXJhdGlvbiBmaWxlXCI6IGA8cGF0aCBkPVwiTTIsMTJ2OEg1LjI1NlYxOC43NjlIMy4zVjEzLjIzMUg1LjI1NlYxMlpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTI2Ljc0NCwxMnYxLjIzMUgyOC43djUuNTM4SDI2Ljc0NFYyMEgzMFYxMlpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTE3LjYyOCwxNmw1LjIxLTIuNzY5djUuNTM4WlwiIHN0eWxlPVwiZmlsbDojMzBkNDc1XCIvPjxlbGxpcHNlIGN4PVwiMTIuMDkzXCIgY3k9XCIxNlwiIHJ4PVwiMi45M1wiIHJ5PVwiMi43NjlcIiBzdHlsZT1cImZpbGw6IzMwZDQ3NVwiLz5gLFxuICBcIlQ0IHRlbXBsYXRpbmdcIjogYDxwYXRoIGQ9XCJNMTkuNTQ1LDYuMDM1SDEzLjI3VjI0SDguM1Y2LjAzNUgyLjA1NVYyaDE3LjQ5WlwiIHN0eWxlPVwiZmlsbDojMWU4OGU1XCIvPjxwYXRoIGQ9XCJNMjcuNTY3LDEwVjIyLjYwOGgyLjRWMjUuOWgtMi40VjMwSDIzLjU1MVYyNS45SDE0LjgzNFYyMi40NTVxMS4xNTgtMS4zLDIuNC0yLjgzOHQyLjQtMy4xNzNxMS4xNTgtMS42MzIsMi4xNTUtMy4yODVBMzIuOTI1LDMyLjkyNSwwLDAsMCwyMy40ODEsMTBaTTE4Ljc4MSwyMi42MDhoNC43N1YxNS42MjFxLS40ODguOTA3LTEuMDYsMS44MzR0LTEuMiwxLjgyN3EtLjYyOC45LTEuMjY5LDEuNzQzVDE4Ljc4MSwyMi42MDhaXCIgc3R5bGU9XCJmaWxsOiMxZTg4ZTVcIi8+YCxcbiAgXCJUNCBUZXh0IFRlbXBsYXRlcyAoQyMpXCI6IGA8cGF0aCBkPVwiTTE5LjU0NSw2LjAzNUgxMy4yN1YyNEg4LjNWNi4wMzVIMi4wNTVWMmgxNy40OVpcIiBzdHlsZT1cImZpbGw6IzFlODhlNVwiLz48cGF0aCBkPVwiTTI3LjU2NywxMFYyMi42MDhoMi40VjI1LjloLTIuNFYzMEgyMy41NTFWMjUuOUgxNC44MzRWMjIuNDU1cTEuMTU4LTEuMywyLjQtMi44Mzh0Mi40LTMuMTczcTEuMTU4LTEuNjMyLDIuMTU1LTMuMjg1QTMyLjkyNSwzMi45MjUsMCwwLDAsMjMuNDgxLDEwWk0xOC43ODEsMjIuNjA4aDQuNzdWMTUuNjIxcS0uNDg4LjkwNy0xLjA2LDEuODM0dC0xLjIsMS44MjdxLS42MjguOS0xLjI2OSwxLjc0M1QxOC43ODEsMjIuNjA4WlwiIHN0eWxlPVwiZmlsbDojMWU4OGU1XCIvPmAsXG4gIFwiVDQgVGV4dCBUZW1wbGF0ZXMgKFZCKVwiOiBgPHBhdGggZD1cIk0xOS41NDUsNi4wMzVIMTMuMjdWMjRIOC4zVjYuMDM1SDIuMDU1VjJoMTcuNDlaXCIgc3R5bGU9XCJmaWxsOiMxZTg4ZTVcIi8+PHBhdGggZD1cIk0yNy41NjcsMTBWMjIuNjA4aDIuNFYyNS45aC0yLjRWMzBIMjMuNTUxVjI1LjlIMTQuODM0VjIyLjQ1NXExLjE1OC0xLjMsMi40LTIuODM4dDIuNC0zLjE3M3ExLjE1OC0xLjYzMiwyLjE1NS0zLjI4NUEzMi45MjUsMzIuOTI1LDAsMCwwLDIzLjQ4MSwxMFpNMTguNzgxLDIyLjYwOGg0Ljc3VjE1LjYyMXEtLjQ4OC45MDctMS4wNiwxLjgzNHQtMS4yLDEuODI3cS0uNjI4LjktMS4yNjksMS43NDNUMTguNzgxLDIyLjYwOFpcIiBzdHlsZT1cImZpbGw6IzFlODhlNVwiLz5gLFxuICBcIlRjbFwiOiBgPHBhdGggZD1cIk0yMS45NDIsMi44NzZjLjA0LDIuNDY4LS4wMzMsNC45MS0yLjE2OSw3LjIzbC0uMDc5LjA4OWguMTE5bC44NzMuMDEzYy0xLjQxOCwyLjk1LTIuMzQxLDUuODkyLTQuMzgsOC44M2wtLjA3My4xMDYuMTI2LS4wMjMsMS4wNzgtLjJhNS44NTEsNS44NTEsMCwwLDEtMy40ODQsMy42NWMtLjM5LTUuNDU1LDIuMzMzLTEwLjI3LDQuNjQ1LTE1LjA3MWwuMDA3LS4wMTMtLjA4Ni0uMDZjLTMuNzg2LDQuMjMzLTUuNDkxLDEwLjItNi4xMzYsMTUuMTI3YTQuNTgyLDQuNTgyLDAsMCwxLTIuMTQ1LTIuOTg4bC45LjM3Ny4wOTMuMDQtLjAyLS4xYy0uNjgxLTMuMDI4LjM3Ni01LjIsMS40LTguMDU2bC43MzcuNDkzLjA4Ni4wNiwwLS4xYy0uMDU4LTIuMzIsMS41LTQuNjQ5LDMuNTc3LTYuNzI3bC4yODguNzcuMDQuMS4wNTYtLjEuNjMxLTEuMDUxLDAtLjAwN0E2LjEsNi4xLDAsMCwxLDIxLjk0MiwyLjg3NlpcIiBzdHlsZT1cImZpbGw6I2MzYjE1ZlwiLz48cGF0aCBkPVwiTTIxLjk0OCwyLjg3NWE2LjEzMSw2LjEzMSwwLDAsMC0zLjkyNiwyLjM4OGwwLC4wMDctLjYzMSwxLjA1MS0uMDU2LjEtLjA0LS4xTDE3LDUuNTQ0Yy0yLjA3MiwyLjA3OC0zLjYzNSw0LjQwNy0zLjU3Nyw2LjcyN2wwLC4xLS4wODYtLjA2LS43MzctLjQ5M2MtMS4wMjUsMi44NTYtMi4wODMsNS4wMjktMS40LDguMDU2bC4wMi4xLS4wOTMtLjA0LS44ODYtLjM3NGMwLC4wMTguMDA3LjAzNS4wMS4wNTNhNC41MzMsNC41MzMsMCwwLDAsMi4xMjYsMi45MzJjLjA1LS4zODEuMTA1LS43NzEuMTY5LTEuMTY0LTEuNTQzLTMuNjE0LS4yLTYuMjcxLjQwNy04LjY2MWwuOTM5LjU0MmMtLjEzLTIuMjM4LDEuMTg0LTQuNjUxLDIuODkzLTYuNzU3bC41Ljg3M0MxOC41NTUsNC43NjksMTkuNTYsMy43MiwyMS45NDgsMi44NzVaXCIgc3R5bGU9XCJmaWxsOiNlZmYxY2I7c3Ryb2tlOiNlZmYxY2JcIi8+PHBhdGggZD1cIk0yMi41MTgsMmwtLjA1Ni4wMWMtMi4wODIuMzYzLTQuMTIxLDEuMTI4LTUuMDE1LDIuOTU5bC0uMzc3LS42NTgtLjAzMy0uMDYtLjA1LjA1YTIwLjg1LDIwLjg1LDAsMCwwLTIuOTM5LDMuNUE1LjkzOSw1LjkzOSwwLDAsMCwxMi44MzUsMTFsLS41MzItLjY2NC0uMDUzLS4wNjYtLjAzNi4wNzZhMjcuNTM1LDI3LjUzNSwwLDAsMC0xLjY5Myw0LjcsNi43Myw2LjczLDAsMCwwLS4xNTksMy43MTlsLS44NzYtLjUwOS0uMDczLS4wNDMtLjAwNy4wODZhNS41MjksNS41MjksMCwwLDAsMi4wMTcsNC44NDNsLS45NzIuMjQxLS4yLjA1LjIuMDUzYTQuMjU4LDQuMjU4LDAsMCwxLDEuNDU1LjYsMS4zMjUsMS4zMjUsMCwwLDEsLjUxNiwxLjNWMjguMWwuMDEuMDEzLDEuMjE3LDEuNzQ1LjEuMTM5VjI1LjcxOWEzLjQ2NiwzLjQ2NiwwLDAsMSwuNjIxLTEuNDg0QTEuNjM5LDEuNjM5LDAsMCwxLDE1LjUsMjMuN2wuMTgyLS4wMjMtLjE2NS0uMDc2LS42NDEtLjNhOS4xMTIsOS4xMTIsMCwwLDAsMy42OTMtNS4zMjJsLjAyLS4wODYtLjA4My4wMjMtLjc5My4yMTVhMTEuNjY5LDExLjY2OSwwLDAsMCwyLjA4OS0zLjVDMjAuNTEyLDEzLDIxLjE4LDExLjE2NiwyMS43MjgsOS43bC4wMy0uMDc5LS4wODMuMDA3LS42MTIuMDQzYTYuNjU1LDYuNjU1LDAsMCwwLDEuMzgyLTMuNTI3LDE3LjAzOSwxNy4wMzksMCwwLDAsLjA3OS00LjA4NlptLS41NzUuODc2Yy4wNCwyLjQ2OC0uMDMzLDQuOTEtMi4xNjksNy4yM2wtLjA3OS4wODloLjExOWwuODczLjAxM2MtMS40MTgsMi45NS0yLjM0MSw1Ljg5Mi00LjM4LDguODNsLS4wNzMuMTA2LjEyNi0uMDIzLDEuMDc4LS4yYTUuODUxLDUuODUxLDAsMCwxLTMuNDg0LDMuNjVjLS4zOS01LjQ1NSwyLjMzMy0xMC4yNyw0LjY0NS0xNS4wNzFsLjAwNy0uMDEzLS4wODYtLjA2Yy0zLjc4Niw0LjIzMy01LjQ5MSwxMC4yLTYuMTM2LDE1LjEyN2E0LjU4Miw0LjU4MiwwLDAsMS0yLjE0NS0yLjk4OGwuOS4zNzcuMDkzLjA0LS4wMi0uMWMtLjY4MS0zLjAyOC4zNzYtNS4yLDEuNC04LjA1NmwuNzM3LjQ5My4wODYuMDYsMC0uMWMtLjA1OC0yLjMyLDEuNS00LjY0OSwzLjU3Ny02LjcyN2wuMjg4Ljc3LjA0LjEuMDU2LS4xLjYzMS0xLjA1MSwwLS4wMDdBNi4xLDYuMSwwLDAsMSwyMS45NDIsMi44NzZaXCIvPmAsXG4gIFwiVGVtcGxhdGUgVG9vbGtpdCAyXCI6IGA8cGF0aCBkPVwiTTguOTA3LDIzLjAyMUg4Ljg3OGEzLjMwNSwzLjMwNSwwLDAsMS0yLjAxMS0uNjYxQTIuNTYxLDIuNTYxLDAsMCwxLDUuODMsMjAuMzM0VjE2LjFINC4yODhhMy4wNSwzLjA1LDAsMCwxLTIuNzM4LTEuNjksMy4zLDMuMywwLDAsMSwuNDQxLTMuNTMsMi4yNjUsMi4yNjUsMCwwLDEsMS44MTUtLjloOS42NWEzLjA1LDMuMDUsMCwwLDEsMi43MzgsMS42OSwzLjMsMy4zLDAsMCwxLS40NDEsMy41MywyLjI2NSwyLjI2NSwwLDAsMS0xLjgxNS45SDExLjk1NXY0LjIzMWEyLjU2MSwyLjU2MSwwLDAsMS0xLjAzNywyLjAyNkEzLjMwNSwzLjMwNSwwLDAsMSw4LjkwNywyMy4wMjFaTTQuMjY0LDExLjYzNmExLjM5LDEuMzksMCwwLDAtMS4zODgsMS4zODh2LjAzM2ExLjM5LDEuMzksMCwwLDAsMS4zODgsMS4zODhINy40ODd2NS44ODFjMCwuNTcyLjYyNCwxLjAzNywxLjM5LDEuMDM3aC4wMjljLjc2NywwLDEuMzktLjQ2NSwxLjM5LTEuMDM3VjE0LjQ0NmgzLjIyM2ExLjM5LDEuMzksMCwwLDAsMS4zODgtMS4zODh2LS4wMzNhMS4zOSwxLjM5LDAsMCwwLTEuMzg4LTEuMzg4WlwiIHN0eWxlPVwiZmlsbDojMDE1ZDlhXCIvPjxwYXRoIGQ9XCJNMTQuOTgxLDEyLjk1M3YuMDMzYTEuNTMzLDEuNTMzLDAsMCwxLTEuNTMzLDEuNTMzSDEwLjM3djUuNzM3YTEuMzkzLDEuMzkzLDAsMCwxLTEuNTM1LDEuMTgxSDguODA2YTEuMzkzLDEuMzkzLDAsMCwxLTEuNTM1LTEuMTgxVjE0LjUxOEg0LjE5MkExLjUzMywxLjUzMywwLDAsMSwyLjY2LDEyLjk4NnYtLjAzM0ExLjUzMywxLjUzMywwLDAsMSw0LjE5MiwxMS40Mmg5LjI1N0ExLjUzMywxLjUzMywwLDAsMSwxNC45ODEsMTIuOTUzWm0tNC4yMjMsOS4yMjJhMi40MTgsMi40MTgsMCwwLDAsLjk4LTEuOTEyVjE1Ljg4OGgyLjEyN2EyLjExNCwyLjExNCwwLDAsMCwxLjctLjg0NiwyLjk5MiwyLjk5MiwwLDAsMC0yLjE4LTQuOTlIMy43MzVhMi4xMTQsMi4xMTQsMCwwLDAtMS43Ljg0NiwyLjk5MiwyLjk5MiwwLDAsMCwyLjE4LDQuOTlINS45djQuMzc1YTIuNDE4LDIuNDE4LDAsMCwwLC45OCwxLjkxMiwzLjE2LDMuMTYsMCwwLDAsMS45MjMuNjMxaC4wMjlBMy4xNiwzLjE2LDAsMCwwLDEwLjc1OCwyMi4xNzRaXCIgc3R5bGU9XCJmaWxsOiMzYmNlZmNcIi8+PHBhdGggZD1cIk0yMy42MDcsMjMuMDIxaC0uMDI5YTMuMzA1LDMuMzA1LDAsMCwxLTIuMDExLS42NjEsMi41NjEsMi41NjEsMCwwLDEtMS4wMzctMi4wMjZWMTYuMUgxOC45ODhhMy4wNSwzLjA1LDAsMCwxLTIuNzM4LTEuNjksMy4zLDMuMywwLDAsMSwuNDQxLTMuNTMsMi4yNjUsMi4yNjUsMCwwLDEsMS44MTUtLjloOS42NWEzLjA1LDMuMDUsMCwwLDEsMi43MzgsMS42OSwzLjMsMy4zLDAsMCwxLS40NDEsMy41MywyLjI2NSwyLjI2NSwwLDAsMS0xLjgxNS45SDI2LjY1NXY0LjIzMWEyLjU2MSwyLjU2MSwwLDAsMS0xLjAzNywyLjAyNkEzLjMwNSwzLjMwNSwwLDAsMSwyMy42MDcsMjMuMDIxWk0xOC45NjQsMTEuNjM2YTEuMzksMS4zOSwwLDAsMC0xLjM4OCwxLjM4OHYuMDMzYTEuMzksMS4zOSwwLDAsMCwxLjM4OCwxLjM4OGgzLjIyM3Y1Ljg4MWMwLC41NzIuNjI0LDEuMDM3LDEuMzksMS4wMzdoLjAyOWMuNzY3LDAsMS4zOS0uNDY1LDEuMzktMS4wMzdWMTQuNDQ2aDMuMjIzYTEuMzksMS4zOSwwLDAsMCwxLjM4OC0xLjM4OHYtLjAzM2ExLjM5LDEuMzksMCwwLDAtMS4zODgtMS4zODhaXCIgc3R5bGU9XCJmaWxsOiMwMTVkOWFcIi8+PHBhdGggZD1cIk0yOS42ODEsMTIuOTUzdi4wMzNhMS41MzMsMS41MzMsMCwwLDEtMS41MzMsMS41MzNIMjUuMDd2NS43MzdhMS4zOTMsMS4zOTMsMCwwLDEtMS41MzUsMS4xODFoLS4wMjlhMS4zOTMsMS4zOTMsMCwwLDEtMS41MzUtMS4xODFWMTQuNTE4SDE4Ljg5MmExLjUzMywxLjUzMywwLDAsMS0xLjUzMy0xLjUzM3YtLjAzM2ExLjUzMywxLjUzMywwLDAsMSwxLjUzMy0xLjUzM2g5LjI1N0ExLjUzMywxLjUzMywwLDAsMSwyOS42ODEsMTIuOTUzWm0tNC4yMjMsOS4yMjJhMi40MTgsMi40MTgsMCwwLDAsLjk4LTEuOTEyVjE1Ljg4OGgyLjEyN2EyLjExNCwyLjExNCwwLDAsMCwxLjctLjg0NiwyLjk5MiwyLjk5MiwwLDAsMC0yLjE4LTQuOTloLTkuNjVhMi4xMTQsMi4xMTQsMCwwLDAtMS43Ljg0NiwyLjk5MiwyLjk5MiwwLDAsMCwyLjE4LDQuOTlIMjAuNnY0LjM3NWEyLjQxOCwyLjQxOCwwLDAsMCwuOTgsMS45MTIsMy4xNiwzLjE2LDAsMCwwLDEuOTIzLjYzMWguMDI5QTMuMTYsMy4xNiwwLDAsMCwyNS40NTgsMjIuMTc0WlwiIHN0eWxlPVwiZmlsbDojM2JjZWZjXCIvPmAsXG4gIFwiVGVYXCI6IGA8cGF0aCBkPVwiTTExLjMzMywxMy4xMjJjLS4xMjgtMS41NjItLjI0MS0yLjc1Ni0yLjI4Ny0yLjc1Nkg3LjkxdjguNGgyLjE0NXYuNjExbC0zLjA4My0uMDI5LTMuMDgyLjAyOXYtLjYxMUg2LjAzNHYtOC40SDQuODg0Yy0yLjA0NiwwLTIuMTU5LDEuMjA4LTIuMjg3LDIuNzU2SDJsLjI4NC0zLjM2N2g5LjM2MmwuMjg0LDMuMzY3aC0uNlpcIiBzdHlsZT1cImZpbGw6I2NmY2ZjZlwiLz48cGF0aCBkPVwiTTE5LjI4OSwyMi41M0gxMC40MVYyMS45MmgxLjUwNlYxMy40NjdIMTAuNDF2LS42MTFoOC42MzdsLjQxMiwzLjM2N2gtLjZjLS4yMTMtMS44MzMtLjY4Mi0yLjc1Ni0yLjg1NS0yLjc1NkgxMy43OTFWMTcuMmguODM4YzEuMzY0LDAsMS41MDUtLjYsMS41MDUtMS42NjJoLjZ2My45MzVoLS42YzAtMS4wOC0uMTQyLTEuNjYyLTEuNTA1LTEuNjYyaC0uODM4djQuMTA2aDIuMjE2YzIuNDcyLDAsMy0xLjEwOCwzLjMtMy4yMjVoLjZaXCIgc3R5bGU9XCJmaWxsOiNjZmNmY2ZcIi8+PHBhdGggZD1cIk0yNy43MjcsMTkuMTg2Yy0uNTQsMC0xLjk2LDAtMi40MTUuMDI5VjE4LjZoMS4xNzlsLTIuNTU3LTMuNTUyLTIuNTI5LDMuMzgxQTQuMSw0LjEsMCwwLDAsMjIuNywxOC42di42MTFjLS4zNTUtLjAyOS0xLjU3Ni0uMDI5LTIuMDE3LS4wMjktLjQsMC0xLjU0OCwwLTEuODc1LjAyOVYxOC42aC4zODNhNy40NTksNy40NTksMCwwLDAsLjgyNC0uMDQzYy41LS4wNDMuNTQtLjA4NS42NjctLjI1NkwyMy41MzYsMTQuNWwtMy4xNTMtNC40MThIMTlWOS40N2MuMzg0LjAyOCwxLjc5LjAyOCwyLjI3My4wMjguNTgyLDAsMS45MTgsMCwyLjQyOS0uMDI4di42MTFIMjIuNTI4bDIuMTE3LDIuOTU1LDIuMDc0LTIuNzg0YTQuMSw0LjEsMCwwLDAtMS4yOTMtLjE3VjkuNDdjLjM1Ni4wMjgsMS41OTEuMDI4LDIuMDMyLjAyOC40LDAsMS41MzQsMCwxLjg2MS0uMDI4di42MTFoLS4zNjlhNS4yNjQsNS4yNjQsMCwwLDAtLjgzOC4wNDNjLS40NjkuMDQzLS41MjYuMDcxLS42NjcuMjU2bC0yLjQsMy4yMUwyOC42MzYsMTguNkgzMHYuNjExQzI5LjY0NSwxOS4xODYsMjguMTgyLDE5LjE4NiwyNy43MjcsMTkuMTg2WlwiIHN0eWxlPVwiZmlsbDojY2ZjZmNmXCIvPmAsXG4gIFwiVGV4dGlsZVwiOiBgPHBhdGggZD1cIk0yOC42ODEsMjYuMDc1SDMuMzE5QTEuMzE3LDEuMzE3LDAsMCwxLDIsMjQuNzU2VjcuMjQ0QTEuMzE3LDEuMzE3LDAsMCwxLDMuMzE5LDUuOTI1SDI4LjY4MUExLjMxNywxLjMxNywwLDAsMSwzMCw3LjI0NFYyNC43NkExLjMxNiwxLjMxNiwwLDAsMSwyOC42ODEsMjYuMDc1WlwiIHN0eWxlPVwiZmlsbDojZmZlN2FjXCIvPjxwYXRoIGQ9XCJNNi4wNjYsMTIuODQ4YTQuOTg3LDQuOTg3LDAsMCwxLDEuNTA4LS42NTlWMTAuNjY0YTMuNywzLjcsMCwwLDEsLjc0My0uMzMsNy44NjksNy44NjksMCwwLDEsMS4zMjctLjM0N2guNjQydjIuMzkxaDIuNDg0VjEzLjZIMTAuMjg2djQuODQ4YTMuMTcyLDMuMTcyLDAsMCwwLC4yOSwxLjYwOSwxLjA3LDEuMDcsMCwwLDAsLjk3MS40NDgsNy4xMjcsNy4xMjcsMCwwLDAsLjc2LS4wNDgsMy4zMzgsMy4zMzgsMCwwLDAsLjc4Mi0uMThsLjEzMi42MmEyLjM4OCwyLjM4OCwwLDAsMS0uNS4zNTYsNS40NTcsNS40NTcsMCwwLDEtLjc1Mi4zNTYsNS44MzcsNS44MzcsMCwwLDEtLjkyMy4yODFBNC43NjksNC43NjksMCwwLDEsMTAsMjJhMi4zODUsMi4zODUsMCwwLDEtMS44MjQtLjYzNywyLjk0NywyLjk0NywwLDAsMS0uNi0yLjA2MlYxMy41OTFINi4wNjZaXCIvPjxwYXRoIGQ9XCJNMTQuNjA3LDIwLjQ1M2ExLjQ0NywxLjQ0NywwLDAsMSwuNDMxLTEuMDksMS41OTEsMS41OTEsMCwwLDEsMS4xNDctLjQxMywxLjY0OSwxLjY0OSwwLDAsMSwxLjE2NS40MTMsMS40MjIsMS40MjIsMCwwLDEsLjQ1MywxLjA5LDEuMzY5LDEuMzY5LDAsMCwxLS40NTMsMS4wODEsMS42OTIsMS42OTIsMCwwLDEtMS4xNjUuNCwxLjYxLDEuNjEsMCwwLDEtMS4xNDctLjRBMS40MjcsMS40MjcsMCwwLDEsMTQuNjA3LDIwLjQ1M1pcIi8+YCxcbiAgXCJUT01MXCI6IGA8cGF0aCBkPVwiTTIyLjc2LDYuODN2My4yNWgtNVYyNS4xN0gxNC4yNlYxMC4wOGgtNVY2LjgzWlwiIHN0eWxlPVwiZmlsbDojN2Y3ZjdmXCIvPjxwYXRoIGQ9XCJNMiwySDguMlY1LjA5SDUuMzR2MjEuOEg4LjJWMzBIMlpcIiBzdHlsZT1cImZpbGw6I2JmYmZiZlwiLz48cGF0aCBkPVwiTTMwLDMwSDIzLjhWMjYuOTFoMi44NlY1LjExSDIzLjhWMkgzMFpcIiBzdHlsZT1cImZpbGw6I2JmYmZiZlwiLz5gLFxuICBcIlRTQ29uZmlnXCI6IGA8cGF0aCBkPVwiTTIzLjgyNyw4LjI0M0E0LjQyNCw0LjQyNCwwLDAsMSwyNi4wNSw5LjUyNGE1Ljg1Myw1Ljg1MywwLDAsMSwuODUyLDEuMTQzYy4wMTEuMDQ1LTEuNTM0LDEuMDgzLTIuNDcxLDEuNjYyLS4wMzQuMDIzLS4xNjktLjEyNC0uMzIyLS4zNWEyLjAxNCwyLjAxNCwwLDAsMC0xLjY3LTFjLTEuMDc3LS4wNzQtMS43NzEuNDktMS43NjYsMS40MzNhMS4zLDEuMywwLDAsMCwuMTUzLjY2NmMuMjM3LjQ5LjY3Ny43ODQsMi4wNTksMS4zODMsMi41NDQsMS4xLDMuNjM2LDEuODE3LDQuMzEsMi44NDNhNS4xNTgsNS4xNTgsMCwwLDEsLjQxNiw0LjMzMyw0Ljc2NCw0Ljc2NCwwLDAsMS0zLjkzMiwyLjgxNSwxMC45LDEwLjksMCwwLDEtMi43MDgtLjAyOCw2LjUzMSw2LjUzMSwwLDAsMS0zLjYxNi0xLjg4NCw2LjI3OCw2LjI3OCwwLDAsMS0uOTI2LTEuMzcxLDIuNjU1LDIuNjU1LDAsMCwxLC4zMjctLjIwOGMuMTU4LS4wOS43NTYtLjQzNCwxLjMyLS43NjFsMS4wMjQtLjYuMjE0LjMxMmE0Ljc3MSw0Ljc3MSwwLDAsMCwxLjM1LDEuMjkyLDMuMywzLjMsMCwwLDAsMy40NTgtLjE3NSwxLjU0NSwxLjU0NSwwLDAsMCwuMi0xLjk3NGMtLjI3Ni0uNC0uODQtLjcyNy0yLjQ0My0xLjQyMmE4LjgsOC44LDAsMCwxLTMuMzQ5LTIuMDU1LDQuNjg3LDQuNjg3LDAsMCwxLS45NzYtMS43NzcsNy4xMTYsNy4xMTYsMCwwLDEtLjA2Mi0yLjI2OCw0LjMzMiw0LjMzMiwwLDAsMSwzLjY0NC0zLjM3NEE5LDksMCwwLDEsMjMuODI3LDguMjQzWk0xNS40ODQsOS43MjZsLjAxMSwxLjQ1NGgtNC42M1YyNC4zMjhINy42VjExLjE4M0gyLjk3VjkuNzU1YTEzLjk4NiwxMy45ODYsMCwwLDEsLjA0LTEuNDY2Yy4wMTctLjAyMywyLjgzMi0uMDM0LDYuMjQ1LS4wMjhsNi4yMTEuMDE3WlwiIHN0eWxlPVwiZmlsbDojMDA3YWNjXCIvPjxwYXRoIGQ9XCJNMjcuMDc1LDI1LjEwN2wuMzYzLS4zNjFjMS42OC4wNTUsMS43MDYsMCwxLjc4LS4xNzdsLjQ2Mi0xLjEyNC4wMzQtLjEwNy0uMDM4LS4wOTNjLS4wMi0uMDQ5LS4wODEtLjItMS4xMy0xLjJ2LS41MjZjMS4yMTEtMS4xNjYsMS4xODUtMS4yMjYsMS4xMTYtMS40bC0uNDYtMS4xMzZjLS4wNjktLjE3LS4xLS4yMzctMS43NjMtLjE5MWwtLjM2NC0uMzY3YTguMTM4LDguMTM4LDAsMCwwLS4wNTctMS42NTdsLS4wNDctLjEwNi0xLjItLjUyNWMtLjE3Ny0uMDgxLS4yMzktLjExLTEuMzcyLDEuMTI0bC0uNTA5LS4wMDhjLTEuMTY3LTEuMjQ1LTEuMjIyLTEuMjIzLTEuNC0xLjE1MmwtMS4xMTUuNDUyYy0uMTc1LjA3MS0uMjM2LjEtLjE2OSwxLjc5bC0uMzYuMzU5Yy0xLjY4LS4wNTUtMS43LDAtMS43NzguMTc3TDE4LjYwNiwyMGwtLjAzNi4xMDguMDM4LjA5NGMuMDIuMDQ4LjA3OC4xOTQsMS4xMywxLjJ2LjUyNWMtMS4yMTEsMS4xNjYtMS4xODQsMS4yMjYtMS4xMTUsMS40bC40NTksMS4xMzdjLjA3LjE3NC4xLjIzNiwxLjc2My4xOTJsLjM2My4zNzdhOC4xNjksOC4xNjksMCwwLDAsLjA1NSwxLjY1NGwuMDQ3LjEwNywxLjIwOC41MjhjLjE3Ni4wNzMuMjM2LjEsMS4zNjYtMS4xM2wuNTA5LjAwNmMxLjE2OCwxLjI0NywxLjIyOCwxLjIyMywxLjQsMS4xNTRsMS4xMTMtLjQ1QzI3LjA4MiwyNi44MjcsMjcuMTQzLDI2LjgsMjcuMDc1LDI1LjEwN1ptLTQuNzg4LTIuNjMyYTIsMiwwLDEsMSwyLjYxOCwxLjE0QTIuMDIzLDIuMDIzLDAsMCwxLDIyLjI4NywyMi40NzVaXCIgc3R5bGU9XCJmaWxsOiM5OWI4YzRcIi8+YCxcbiAgXCJUd2lnXCI6IGA8cGF0aCBkPVwiTTQuNTc0LDUuNDYzYy4yNjIuNCwyLjUtMS42MDgsNC40NTQtMS4xNjEsMi4wNjEuNDcyLDQuMDE0LDMuNzI0LDQuODQ4LDEzLjdhNDAuMTgsNDAuMTgsMCwwLDEsMy41NDEsMy42MXEuNTMuNjE0LDEuMDEzLDEuMjJhMTEuODQ3LDExLjg0NywwLDAsMSwuMjI5LTEuNCwxMi4zLDEyLjMsMCwwLDEsMS45ODEtNC40QTE5LjE1MSwxOS4xNTEsMCwwLDAsMTcuMjcyLDcuOWMtMS4wMy0xLjQ0NS00LjYtNi40NzgtOC41NDYtNS44NDNDNi4xODIsMi40NjUsNC4zLDUuMDU0LDQuNTc0LDUuNDYzWlwiIHN0eWxlPVwiZmlsbDojNjNiZjZhXCIvPjxwYXRoIGQ9XCJNMjQuNCwzMGMtLjMyLTIuNTY3LS40NDgtNC43Ni0uNS02LjQ0OS0uMDk0LTMuMjMyLjEtNC41NDEuOS01Ljc1Ni4xOTMtLjI5NSwxLjI4OC0xLjk3NSwyLjU4LTEuODYzLDEuNDY2LjEyOCwyLjIxMywyLjQxNCwyLjM2MiwyLjMzNy4xNzUtLjA5LS4zNi0zLjU0My0yLjUzMi00LjQzMS0yLjYtMS4wNjMtNi4zMTIsMi4wNy03LjgsNS4xNTRhMTIuMjIzLDEyLjIyMywwLDAsMC0uODU3LDIuODEsMzIuNTU1LDMyLjU1NSwwLDAsMC0uNzEsOC4yWlwiIHN0eWxlPVwiZmlsbDojNzRkNzRkXCIvPjxwYXRoIGQ9XCJNMi4yMzgsMTMuOTM1Yy4xNDUtLjQ0NywyLjQ2OC0uMjU5LDQuNTQuMjkzLDIuNS42NjYsNywyLjM0NCwxMS42NTEsOC42MDZBMTIuNTQ0LDEyLjU0NCwwLDAsMSwyMC4yNzksMzBIMTAuMzg2YTIxLjg3NSwyMS44NzUsMCwwLDAtLjE3NS00LjYyLDE0LjksMTQuOSwwLDAsMC0yLjQ1OS03LjE1OEM1LjQ0MSwxNS4xNTksMi4wNTUsMTQuNSwyLjIzOCwxMy45MzVaXCIgc3R5bGU9XCJmaWxsOiM3OGRjNTBcIi8+PHBhdGggZD1cIk0xNy4zLDIxLjMyM2ExLjc1MywxLjc1MywwLDEsMS0uNTEzLTEuMjRBMS43NDgsMS43NDgsMCwwLDEsMTcuMywyMS4zMjNaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0yMS45NzUsMjEuMzIzYTEuNzUzLDEuNzUzLDAsMSwxLS41MTMtMS4yNEExLjc0OCwxLjc0OCwwLDAsMSwyMS45NzUsMjEuMzIzWlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG4gIFwiVHlwZVNjcmlwdFwiOiBgPHJlY3QgeD1cIjJcIiB5PVwiMlwiIHdpZHRoPVwiMjhcIiBoZWlnaHQ9XCIyOFwiIHJ4PVwiMS4zMTJcIiBzdHlsZT1cImZpbGw6IzMxNzhjNlwiLz48cGF0aCBkPVwiTTE4LjI0NSwyMy43NTl2My4wNjhhNi40OTIsNi40OTIsMCwwLDAsMS43NjQuNTc1LDExLjU2LDExLjU2LDAsMCwwLDIuMTQ2LjE5Miw5Ljk2OCw5Ljk2OCwwLDAsMCwyLjA4OC0uMjExLDUuMTEsNS4xMSwwLDAsMCwxLjczNS0uNywzLjU0MiwzLjU0MiwwLDAsMCwxLjE4MS0xLjI2Niw0LjQ2OSw0LjQ2OSwwLDAsMCwuMTg2LTMuMzk0LDMuNDA5LDMuNDA5LDAsMCwwLS43MTctMS4xMTcsNS4yMzYsNS4yMzYsMCwwLDAtMS4xMjMtLjg3NywxMi4wMjcsMTIuMDI3LDAsMCwwLTEuNDc3LS43MzRxLS42LS4yNDktMS4wOC0uNDg0YTUuNSw1LjUsMCwwLDEtLjgxMy0uNDc5LDIuMDg5LDIuMDg5LDAsMCwxLS41MTYtLjUxOCwxLjA5MSwxLjA5MSwwLDAsMS0uMTgxLS42MTgsMS4wMzksMS4wMzksMCwwLDEsLjE2Mi0uNTcxLDEuNCwxLjQsMCwwLDEsLjQ1OS0uNDM2LDIuNDM5LDIuNDM5LDAsMCwxLC43MjYtLjI4Myw0LjIxMSw0LjIxMSwwLDAsMSwuOTU2LS4xLDUuOTQyLDUuOTQyLDAsMCwxLC44MDguMDU4LDYuMjkyLDYuMjkyLDAsMCwxLC44NTYuMTc3LDUuOTk0LDUuOTk0LDAsMCwxLC44MzYuMyw0LjY1Nyw0LjY1NywwLDAsMSwuNzUxLjQyMlYxMy45YTcuNTA5LDcuNTA5LDAsMCwwLTEuNTI1LS40LDEyLjQyNiwxMi40MjYsMCwwLDAtMS45LS4xMjksOC43NjcsOC43NjcsMCwwLDAtMi4wNjQuMjM1LDUuMjM5LDUuMjM5LDAsMCwwLTEuNzE2LjczMywzLjY1NSwzLjY1NSwwLDAsMC0xLjE3MSwxLjI3MSwzLjczMSwzLjczMSwwLDAsMC0uNDMxLDEuODQ1LDMuNTg4LDMuNTg4LDAsMCwwLC43ODksMi4zNCw2LDYsMCwwLDAsMi4zOTUsMS42MzlxLjYzLjI2LDEuMTc1LjUwOWE2LjQ1OCw2LjQ1OCwwLDAsMSwuOTQyLjUxNywyLjQ2MywyLjQ2MywwLDAsMSwuNjI2LjU4NSwxLjIsMS4yLDAsMCwxLC4yMy43MTksMS4xLDEuMSwwLDAsMS0uMTQ0LjU1MiwxLjI2OSwxLjI2OSwwLDAsMS0uNDM1LjQ0MSwyLjM4MSwyLjM4MSwwLDAsMS0uNzI2LjI5Miw0LjM3Nyw0LjM3NywwLDAsMS0xLjAxOC4xMDUsNS43NzMsNS43NzMsMCwwLDEtMS45NjktLjM1QTUuODc0LDUuODc0LDAsMCwxLDE4LjI0NSwyMy43NTlabS01LjE1NC03LjYzOGg0VjEzLjU5NEg1LjkzOHYyLjUyN0g5LjkyVjI3LjM3NWgzLjE3MVpcIiBzdHlsZT1cImZpbGw6I2ZmZjtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz5gLFxuICBcIlR5cG9TY3JpcHRcIjogYDxwYXRoIGQ9XCJNMjMuMDkzLDIxLjNhMy44NDcsMy44NDcsMCwwLDEtMS4xOC4xNjVjLTMuNTU1LDAtOC43NzgtMTIuNDI0LTguNzc4LTE2LjU1OSwwLTEuNTIzLjM2Mi0yLjAzMS44Ny0yLjQ2NkM5LjY1MywyLjk0Myw0LjQzLDQuNTM5LDIuNzYxLDYuNTdhNC4wNDgsNC4wNDgsMCwwLDAtLjU4LDIuMzIxQzIuMTgxLDE1LjM0OCw5LjA3MiwzMCwxMy45MzMsMzBjMi4yNDgsMCw2LjA0MS0zLjcsOS4xNi04LjdcIiBzdHlsZT1cImZpbGw6I2ZmODcwMFwiLz48cGF0aCBkPVwiTTIwLjgyMywyYzQuNSwwLDksLjcyNSw5LDMuMjY0LDAsNS4xNTEtMy4yNjQsMTEuMzg5LTQuOTMzLDExLjM4OS0yLjk3NCwwLTYuNjczLTguMjY5LTYuNjczLTEyLjQsMC0xLjg4Ni43MjUtMi4yNDksMi42MTEtMi4yNDlcIiBzdHlsZT1cImZpbGw6I2ZmODcwMFwiLz5gLFxuICBcIlZcIjogYDxwYXRoIGQ9XCJNMjAuNDY3LDI5LjI4OCwyOS45NTIsMi45MTNhLjUuNSwwLDAsMC0uNTY2LS43MjhMMjEuOTI3LDIuOWExLjQ2NCwxLjQ2NCwwLDAsMC0xLjE0MS45TDEyLjAwNywyOS4wMDZhLjU3My41NzMsMCwwLDAsLjU3OC44MTNoNy4yNmEuNjU3LjY1NywwLDAsMCwuNTc3LS40WlwiIHN0eWxlPVwiZmlsbDojNTM2YjhhXCIvPjxwYXRoIGQ9XCJNMi42MTQsMi4xODVsNy40NTkuNzE5YTEuNDY2LDEuNDY2LDAsMCwxLDEuMTQyLjlMMjAuMTgsMjkuNDEzYS4yODYuMjg2LDAsMCwxLS4yODkuNDA2SDEyLjU4NWExLjMxMSwxLjMxMSwwLDAsMS0xLjE1Mi0uODFMMi4wNDgsMi45MTNBLjUuNSwwLDAsMSwyLjYxNCwyLjE4NVpcIiBzdHlsZT1cImZpbGw6IzVkODdiZlwiLz5gLFxuICBcIlZhbGFcIjogYDxwYXRoIGQ9XCJNMTIuNTA5LDE3LjE5M2MtLjE2NS02LjgzNi0uMzI1LTEyLjQ1NS0uMzU3LTEyLjQ4N0E3LjkxNiw3LjkxNiwwLDAsMCw5Ljg3OSw1Ljg3NCw3LjYwNiw3LjYwNiwwLDAsMCw3LjMyNCw5LjE4OGE4LjQyMiw4LjQyMiwwLDAsMC0uNTg3LDMuNTQzLDQuNjY1LDQuNjY1LDAsMCwwLC4yLDEuOTYyLDMuNDE3LDMuNDE3LDAsMCwxLC4xODIuNTZjLS4wMTIuMDA5LS4zMzgtLjAxOC0uNzI0LS4wNjEtMS44NjgtLjIwNy0yLjc4Ni0xLjA1LTMtMi43NTdBNi4zMTIsNi4zMTIsMCwwLDEsNC44NSw3LjcxOWExNS4xMzQsMTUuMTM0LDAsMCwxLDguNDE0LTUuMTYzLDEyLjg5MSwxMi44OTEsMCwwLDEsMi41NDItLjIzNWwxLjc0OC0uMDUuMDU5LDIuNTA2Yy4wMzIsMS4zNzguMSw2LjM1OC4xNjEsMTEuMDY3cy0uMjUyLDguMjktLjIxOSw4LjRDMTkuNSwxNy44NzksMjIsMTMuMDczLDI0LjM2Nyw2LjI1M2wxLjQyNy0zLjk4M0gyOC41NGMtLjAyMi4wNjMtMi43NTEsNi41LTUuNTE0LDEzLjkxNmwtNS40NzMsMTMuNTVIMTIuOTc2QzEyLjk3NiwyNy45MDYsMTIuNTM1LDE4LjQ4NiwxMi41MDksMTcuMTkzWlwiIHN0eWxlPVwiZmlsbDojNDAzNzU3XCIvPjxwYXRoIGQ9XCJNMTcuNzMyLDMwSDEyLjcxM3YtLjI2M2MwLTEuMTM3LS4xNy01LjE5Mi0uMzA3LTguNDUyLS4wODEtMS45MjktLjE1LTMuNi0uMTYxLTQuMDg3LS4xNTYtNi40NzktLjI4Ni0xMS0uMzM2LTEyLjE2M2ExMS42NzQsMTEuNjc0LDAsMCwwLTEuODc0LDEuMDQ5LDcuMzQ4LDcuMzQ4LDAsMCwwLTIuNDY2LDMuMkE4LjE0Niw4LjE0NiwwLDAsMCw3LDEyLjczMSw0LjM3LDQuMzcsMCwwLDAsNy4xODUsMTQuNmMuMjE1LjU2OS4yNzMuNzIzLjEuODU5LS4wOTMuMDczLS4xMDcuMDg0LS45MTYtLjAwNy0xLjk3Ni0uMjE5LTMtMS4xNjctMy4yMzQtMi45ODZBNi41NjgsNi41NjgsMCwwLDEsNC42NCw3LjU2MSwxNS40MzksMTUuNDM5LDAsMCwxLDEzLjIsMi4zLDEzLjE3NiwxMy4xNzYsMCwwLDEsMTUuOCwyLjA1OEwxNy44MTEsMmwuMDY1LDIuNzdjLjAzMiwxLjM5Mi4xMDYsNi40NjEuMTYxLDExLjA3LjAzMSwyLjYxNi0uMDUyLDQuOTE1LS4xMjQsNi40My45MzEtMi43NjMsMS45NTgtNS4yNywzLjAzMy03LjksMS4wNDMtMi41NDcsMi4xMjItNS4xOCwzLjE3My04LjIwN2wxLjQ5MS00LjE2aDMuM2wtLjEyNS4zNTFjMCwuMDA3LS4wMzEuMDc2LS4wODQuMi0xLjEsMi42MjItMy4yNTksNy44ODktNS40MywxMy43MTdabS00LjQ5NS0uNTI2aDQuMTRsNS40MDctMTMuMzg2YzIuMTI0LTUuNyw0LjI0My0xMC44NzYsNS4zNjItMTMuNTU1SDI1Ljk3OUwyNC42MTQsNi4zNDJjLTEuMDU1LDMuMDM4LTIuMTM3LDUuNjc4LTMuMTgzLDguMjMxLTEuMzExLDMuMi0yLjU1LDYuMjI2LTMuNjI2LDkuNzQ3bC0uMjU1LjgzMS0uMjQ4LS44MzNhMy4yNzQsMy4yNzQsMCwwLDEsLjAyMS0uODM5Yy4wNzQtMS4zNS4yMjktNC4xNTguMTg4LTcuNjMzLS4wNTUtNC42MDctLjEyOS05LjY3NC0uMTYxLTExLjA2NEwxNy4zLDIuNTQxbC0xLjQ4NC4wNDNhMTIuNzI5LDEyLjcyOSwwLDAsMC0yLjQ5LjIyOEExNC44ODcsMTQuODg3LDAsMCwwLDUuMDYsNy44NzdhNi4wNzEsNi4wNzEsMCwwLDAtMS40LDQuNTI0Yy4yLDEuNTgsMS4wMjgsMi4zMzYsMi43NywyLjUyOWwuMzMzLjAzNWMtLjAxOS0uMDU0LS4wNDEtLjExNC0uMDY2LS4xNzlhNC44OTMsNC44OTMsMCwwLDEtLjIxOS0yLjA1NSw4LjcsOC43LDAsMCwxLC42LTMuNjM4LDcuODgzLDcuODgzLDAsMCwxLDIuNjQ0LTMuNDNjLjAyMi0uMDE2LDIuMjMyLTEuNTI1LDIuNjE1LTEuMTQyLjA5Mi4wOTIuMTMxLjEzMS40MzMsMTIuNjY2aDBjLjAxLjQ4NS4wOCwyLjE0OS4xNiw0LjA3NkMxMy4wNiwyNC4zMTMsMTMuMjE3LDI4LjA2LDEzLjIzNywyOS40NzRaXCIgc3R5bGU9XCJmaWxsOiNjOGM4YzhcIi8+YCxcbiAgXCJWQi5OZXRcIjogYDxwYXRoIGQ9XCJNNi42Nyw3LjgzNiw5LDE4LjkxNSwxMS4zMzYsNy44MzZIMTZMMTEuMzM2LDI0LjE2NEg2LjY3MkwyLDcuODM2WlwiIHN0eWxlPVwiZmlsbDojMDA1MTlhXCIvPjxwYXRoIGQ9XCJNMTguMzMxLDcuODM2aDcuNmE0LjA4LDQuMDgsMCwwLDEsMi45LDEuNzQ5LDMuNzgsMy43OCwwLDAsMSwuNTcxLDIuMDQsMy45ODUsMy45ODUsMCwwLDEtLjU3MSwyLjAzNCw0LjEwOCw0LjEwOCwwLDAsMS0yLjM0MSwxLjc2Myw0LjEsNC4xLDAsMCwxLDIuOTI5LDEuNzU2LDMuOCwzLjgsMCwwLDEsLjU4LDIuMSw0LjY2Myw0LjY2MywwLDAsMS0uNTc5LDIuNTQ2LDUuMDQ3LDUuMDQ3LDAsMCwxLTMuNSwyLjMzOEgxOC4zMzFaTTIzLDE0LjI1MmgxLjE2NmExLjc1NCwxLjc1NCwwLDAsMCwwLTMuNUgyM1ptMCw3SDI0LjM5YTIuMDQ3LDIuMDQ3LDAsMCwwLDAtNC4wODlIMjNaXCIgc3R5bGU9XCJmaWxsOiMwMDUxOWFcIi8+YCxcbiAgXCJWQkFcIjogYDxwb2x5Z29uIHBvaW50cz1cIjEwLjQ1NyAxMS4wOTIgMTYuMDE0IDEzLjgzOSAxNi4wMTQgMTguMzA3IDEwLjQ1NyAxNS4zODIgMTAuNDU3IDExLjA5MlwiIHN0eWxlPVwiZmlsbDojNjQ4M2MwXCIvPjxwYXRoIGQ9XCJNMTYuMiwxOC42MTNsLTUuOTI2LTMuMTJWMTAuOEwxNi4yLDEzLjcyNFpNMTAuNjQyLDE1LjI3LDE1LjgzLDE4VjEzLjk1M2wtNS4xODgtMi41NjRaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE2LjM3MSAxMy44MzkgMTYuMzcxIDE4LjMwNyAyMS4zMTUgMTUuODE0IDIxLjMxNSAxMS4zNTQgMTYuMzcxIDEzLjgzOVwiIHN0eWxlPVwiZmlsbDojNjQ4M2MwXCIvPjxwYXRoIGQ9XCJNMTYuMTg2LDE4LjYwN1YxMy43MjVsNS4zMTMtMi42N3Y0Ljg3M1ptLjM2OS00LjY1NXY0LjA1NUwyMS4xMywxNS43VjExLjY1M1pcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTAuNzAzIDEwLjc5NyAxNi4xODYgMTMuNTggMjEuMDgyIDExLjA2NCAxNS43NzcgOC4zODkgMTAuNzAzIDEwLjc5N1wiIHN0eWxlPVwiZmlsbDojNjQ4M2MwXCIvPjxwYXRoIGQ9XCJNMTYuMTg3LDEzLjc4OGwtNS45LTMsNS41LTIuNjA4LDUuNzA5LDIuODc5Wk0xMS4xMjIsMTAuOGw1LjA2NCwyLjU3LDQuNDktMi4zMDgtNC45LTIuNDcxWlwiLz48cG9seWdvbiBwb2ludHM9XCIxOC45NTcgMTUuODI5IDI0LjUxNSAxOC41NzUgMjQuNTE1IDIzLjA0MyAxOC45NTcgMjAuMTE4IDE4Ljk1NyAxNS44MjlcIiBzdHlsZT1cImZpbGw6Izk1Mjc4MVwiLz48cGF0aCBkPVwiTTI0LjcsMjMuMzQ5bC01LjkyNi0zLjEydi00LjdMMjQuNywxOC40NlptLTUuNTU3LTMuMzQzLDUuMTg4LDIuNzMxVjE4LjY4OWwtNS4xODgtMi41NjRaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI0Ljg3MSAxOC41NzUgMjQuODcxIDIzLjA0MyAyOS44MTUgMjAuNTUgMjkuODE1IDE2LjA5IDI0Ljg3MSAxOC41NzVcIiBzdHlsZT1cImZpbGw6Izk1Mjc4MVwiLz48cGF0aCBkPVwiTTI0LjY4NywyMy4zNDNWMTguNDYxTDMwLDE1Ljc5MXY0Ljg3M1ptLjM2OS00LjY1NXY0LjA1NWw0LjU3NS0yLjMwOFYxNi4zODlaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE5LjIwMyAxNS41NDYgMjQuNjg3IDE4LjMyOSAyOS41ODMgMTUuODEyIDI0LjM2NCAxMy4zNDYgMTkuMjAzIDE1LjU0NlwiIHN0eWxlPVwiZmlsbDojOTUyNzgxXCIvPjxwYXRoIGQ9XCJNMjQuNjg3LDE4LjUzNmwtNS45Mi0zLjAwNSw1LjYtMi4zODdMMzAsMTUuODA1Wk0xOS42NCwxNS41Nmw1LjA0NiwyLjU2MSw0LjQ3OS0yLjMtNC44MDYtMi4yN1pcIi8+PHBvbHlnb24gcG9pbnRzPVwiMi4xOSAxNS40OTYgNy43NDggMTguMjQzIDcuNzQ4IDIyLjcxMSAyLjE5IDE5Ljc4NiAyLjE5IDE1LjQ5NlwiIHN0eWxlPVwiZmlsbDojZDg3YjMwXCIvPjxwYXRoIGQ9XCJNNy45MzIsMjMuMDE3LDIuMDA2LDE5LjlWMTUuMmw1LjkyNiwyLjkyOVpNMi4zNzUsMTkuNjc0bDUuMTg4LDIuNzMxVjE4LjM1N0wyLjM3NSwxNS43OTNaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjguMTA0IDE4LjI0MyA4LjEwNCAyMi43MTEgMTMuMDQ4IDIwLjIxOCAxMy4wNDggMTUuNzU4IDguMTA0IDE4LjI0M1wiIHN0eWxlPVwiZmlsbDojZDg3YjMwXCIvPjxwYXRoIGQ9XCJNNy45MiwyMy4wMTFWMTguMTI5bDUuMzEzLTIuNjd2NC44NzNabS4zNjktNC42NTV2NC4wNTVMMTIuODY0LDIwLjFWMTYuMDU3WlwiLz48cG9seWdvbiBwb2ludHM9XCIyLjQzNiAxNS4yMTMgNy45MiAxNy45OTcgMTIuODE2IDE1LjQ4IDcuNTk3IDEzLjAxNCAyLjQzNiAxNS4yMTNcIiBzdHlsZT1cImZpbGw6I2Q4N2IzMFwiLz48cGF0aCBkPVwiTTcuOTIsMTguMiwyLDE1LjJsNS42LTIuMzg3LDUuNjMyLDIuNjYxWk0yLjg3MywxNS4yMjhsNS4wNDYsMi41NjEsNC40NzktMi4zLTQuODA2LTIuMjdaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjEwLjg3NSAxNi4yOTYgMTYuNDMyIDE5LjA0MiAxNi40MzIgMjMuNTExIDEwLjg3NSAyMC41ODUgMTAuODc1IDE2LjI5NlwiIHN0eWxlPVwiZmlsbDojZTBkNDAwXCIvPjxwYXRoIGQ9XCJNMTYuNjE3LDIzLjgxNiwxMC42OTEsMjAuN1YxNmw1LjkyNiwyLjkyOVpNMTEuMDYsMjAuNDc0bDUuMTg4LDIuNzMxVjE5LjE1N0wxMS4wNiwxNi41OTNaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE2Ljc4OSAxOS4wNDIgMTYuNzg5IDIzLjUxMSAyMS43MzMgMjEuMDE3IDIxLjczMyAxNi41NTcgMTYuNzg5IDE5LjA0MlwiIHN0eWxlPVwiZmlsbDojZTBkNDAwXCIvPjxwYXRoIGQ9XCJNMTYuNiwyMy44MTFWMTguOTI5bDUuMzEzLTIuNjd2NC44NzNabS4zNjktNC42NTV2NC4wNTVMMjEuNTQ5LDIwLjlWMTYuODU3WlwiLz48cG9seWdvbiBwb2ludHM9XCIxMS4xMjEgMTYuMDAxIDE2LjYwNSAxOC43ODQgMjEuNTAxIDE2LjI2NyAxNi4xOTYgMTMuNTkzIDExLjEyMSAxNi4wMDFcIiBzdHlsZT1cImZpbGw6I2UwZDQwMFwiLz48cGF0aCBkPVwiTTE2LjYwNSwxOC45OTFsLTUuOS0zLDUuNS0yLjYwOCw1LjcwOSwyLjg3OVpNMTEuNTQsMTYuMDA2bDUuMDY0LDIuNTcsNC40OS0yLjMwOC00LjktMi40NzFaXCIvPmAsXG4gIFwiVmVsb2NpdHlcIjogYDxwYXRoIGQ9XCJNMTYuMjQ1LDI0LjE4N0E4LjM1Miw4LjM1MiwwLDEsMSwyNC42LDE1LjgzNSw4LjM2Miw4LjM2MiwwLDAsMSwxNi4yNDUsMjQuMTg3Wm0wLTE0Ljc2MmE2LjQxLDYuNDEsMCwxLDAsNi40MSw2LjQxQTYuNDE3LDYuNDE3LDAsMCwwLDE2LjI0NSw5LjQyNVpcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjkuMTMyIDguNTUxIDI1LjQ1MSA2LjUzMSAyNS40NTEgNy40NzQgMTUuODIxIDcuNDc0IDE1LjgyMSA5LjQyNCAyNS40NTEgOS40MjQgMjUuNDUxIDEwLjU3MSAyOS4xMzIgOC41NTFcIiBzdHlsZT1cImZpbGw6IzI2MjY5MlwiLz48cG9seWdvbiBwb2ludHM9XCI4Ljk4NCAyIDYuOTY0IDUuNjg3IDcuOTA2IDUuNjg3IDcuOTA2IDE1LjMyOCA5Ljg1NyAxNS4zMjggOS44NTcgNS42ODcgMTEuMDA0IDUuNjg3IDguOTg0IDJcIiBzdHlsZT1cImZpbGw6IzI2MjY5M1wiLz48cG9seWdvbiBwb2ludHM9XCIyMy43MDUgMzAgMjEuNjg1IDI2LjI0MyAyMi42MjggMjYuMjQzIDIyLjYyOCAxNi40MTcgMjQuNTc4IDE2LjQxNyAyNC41NzggMjYuMjQzIDI1LjcyNSAyNi4yNDMgMjMuNzA1IDMwXCIgc3R5bGU9XCJmaWxsOiMyNjI2OTNcIi8+PHBvbHlnb24gcG9pbnRzPVwiMi44NjggMjMuMzIgNi42MzQgMjEuMyA2LjYzNCAyMi4yNDIgMTYuNDg0IDIyLjI0MiAxNi40ODQgMjQuMTkyIDYuNjM0IDI0LjE5MiA2LjYzNCAyNS4zNCAyLjg2OCAyMy4zMlwiIHN0eWxlPVwiZmlsbDojMjYyNjkyXCIvPmAsXG4gIFwiVmVyaWxvZ1wiOiBgPHBhdGggZD1cIk0yOS4wMDcsMTcuNGguMDM3YTEuNDQ5LDEuNDQ5LDAsMCwwLC45MzgtLjMxNiwxLjQ3MywxLjQ3MywwLDAsMCwuNTE5LTEuMDMxVjE1LjlhMS40MTMsMS40MTMsMCwwLDAtMS4zNzYtMS4zaC0uMDA5Yy0uNjg3LDAtMS4zNzQsMC0yLjA2MiwwSDI1LjVWMTEuOTU2bDMuNTEzLDBoLjAzNEExLjQxMSwxLjQxMSwwLDAsMCwzMC41LDEwLjZsMC0uMDksMC0uMDMyYTEuNDEyLDEuNDEyLDAsMCwwLS42NDYtMS4xLDEuNDU1LDEuNDU1LDAsMCwwLS44MzUtLjIyNUgyNS40NTZhMi45NiwyLjk2LDAsMCwwLS4yNzgtMS4wMzQsMi45MDksMi45MDksMCwwLDAtMS43LTEuNDYxLDIuNjg0LDIuNjg0LDAsMCwwLS42MjktLjEzVjQuOTQ3YzAtLjY5LDAtMS4zOCwwLTIuMDYzQTEuNDE0LDEuNDE0LDAsMCwwLDIxLjQ4MSwxLjVoLS4xMTZhMS40LDEuNCwwLDAsMC0xLjMxOSwxLjM4OHEwLDEuMTU0LDAsMi4zMDZWNi41SDE3LjRWNC45ODFjMC0uNywwLTEuNCwwLTIuMDg3QTEuNDEsMS40MSwwLDAsMCwxNi4wNTMsMS41SDE1LjlhMS40MDgsMS40MDgsMCwwLDAtMS4zLDEuMzgzYzAsLjY4OCwwLDEuMzc2LDAsMi4wNjRWNi41MDhxLTEuMzE5LDAtMi42MzksMFY0Ljg4OGMwLS42NjYsMC0xLjMzMiwwLTEuOTg5YTEuMzY2LDEuMzY2LDAsMCwwLS40LS45NzUsMS40LDEuNCwwLDAsMC0uOTg0LS40MjRIMTAuNUExLjQxLDEuNDEsMCwwLDAsOS4xNTksMi44ODFjMCwuNjgzLDAsMS4zNjYsMCwyLjA0OXYxLjZhMi45MzMsMi45MzMsMCwwLDAtMi40NjYsMS45LDIuODc4LDIuODc4LDAsMCwwLS4xNjEuNzI2SDQuOTU3Yy0uNjkzLDAtMS4zODYsMC0yLjA3MywwSDIuODc2QTEuNDEzLDEuNDEzLDAsMCwwLDEuNSwxMC41di4wOTVhMS40MTcsMS40MTcsMCwwLDAsLjU3NSwxLjA5MSwxLjQ2MywxLjQ2MywwLDAsMCwuODg3LjI3M2guMDE3bDMuNTIyLDBWMTQuNkg0Ljk0OGMtLjY4NiwwLTEuMzc1LDAtMi4wNTcsMEExLjQyOCwxLjQyOCwwLDAsMCwxLjUsMTUuOTEzVjE2LjFhMS40LDEuNCwwLDAsMCwxLjM4NiwxLjNjLjcxMSwwLDEuNDIzLDAsMi4xMzUsMEg2LjVWMjAuMDVsLS4yOTIsMGMtLjYxMy0uMDA3LTEuMjI2LDAtMS44MzgsMEgzLjA4N2ExLjYzMywxLjYzMywwLDAsMC0uOTE4LjIxMUExLjQzNywxLjQzNywwLDAsMCwxLjUsMjEuNFYyMS41YTEuNDE3LDEuNDE3LDAsMCwwLDEuMzc1LDEuMzM3aC4wMDVxLjY0NSwwLDEuMjksMEg2LjU0NmEyLjgzMiwyLjgzMiwwLDAsMCwxLjk3OCwyLjUsMi43MTIsMi43MTIsMCwwLDAsLjYzMS4xMjh2MS42MmMwLC42NzgsMCwxLjM1NCwwLDIuMDI1YTEuNCwxLjQsMCwxLDAsMi44LS4wOTJsMC0zLjUyN0gxNC42djMuNTE2QTEuNDE0LDEuNDE0LDAsMCwwLDE1Ljk0NywzMC41SDE2LjFhMS40MTEsMS40MTEsMCwwLDAsMS4zLTEuMzg1cS4wMDYtMS4wNjYsMC0yLjEzMVYyNS41aDIuNjQ0VjI5LjFBMS40MjMsMS40MjMsMCwwLDAsMjEuNCwzMC41aC4xMTlhMS40MDgsMS40MDgsMCwwLDAsMS4xNi0uNzQxLDEuNjQzLDEuNjQzLDAsMCwwLC4xNjctLjgzM1YyNS40NzRhMi42NzEsMi42NzEsMCwwLDAsLjYyLS4xMjgsMi45MjgsMi45MjgsMCwwLDAsMS44ODYtMS44ODgsMi44MzQsMi44MzQsMCwwLDAsLjEyMy0uNjEzaDEuNTgxYy42ODcsMCwxLjM3NSwwLDIuMDU3LDBoLjAwOEExLjQyMiwxLjQyMiwwLDAsMCwzMC41LDIxLjQ4MXYtLjExOGExLjQwOSwxLjQwOSwwLDAsMC0xLjM4Mi0xLjMxOGgwYy0uNzE4LDAtMS40MzYsMC0yLjE1NCwwSDI1LjVWMTcuNFpcIiBzdHlsZT1cImZpbGw6I2M1YzVjNTtvcGFjaXR5OjAuM1wiLz48cGF0aCBkPVwiTTEwLjUxNSwyaC4wNTZhLjkxLjkxLDAsMCwxLC44ODYuODkzYy4wMDYsMS4xMDgsMCwyLjIxNiwwLDMuMzI0LS42LDAtMS4yLDAtMS44LDAsMC0xLjExMSwwLTIuMjIyLDAtMy4zMzNBLjkwNy45MDcsMCwwLDEsMTAuNTE1LDJaXCIgc3R5bGU9XCJmaWxsOiMxYTM0OGZcIi8+PHBhdGggZD1cIk0xNS45MzcsMmguMTE2YS45MTIuOTEyLDAsMCwxLC44NDYuODg5Yy4wMDYsMS4xMDksMCwyLjIxOSwwLDMuMzI5SDE1LjFjMC0xLjExLDAtMi4yMiwwLTMuMzNBLjkxMS45MTEsMCwwLDEsMTUuOTM3LDJaXCIgc3R5bGU9XCJmaWxsOiMxYTM0OGZcIi8+PHBhdGggZD1cIk0yMS4zOTIsMmguMDg5YS45MDcuOTA3LDAsMCwxLC44NTkuODgxYy4wMDcsMS4xMTIsMCwyLjIyNSwwLDMuMzM3aC0xLjhjMC0xLjEwOSwwLTIuMjE3LDAtMy4zMjZBLjkxMi45MTIsMCwwLDEsMjEuMzkyLDJaXCIgc3R5bGU9XCJmaWxsOiMxYTM0OGZcIi8+PHBhdGggZD1cIk0yLDEwLjUxOGEuOTA4LjkwOCwwLDAsMSwuODgyLS44NTljMS4xMTItLjAwNywyLjIyMywwLDMuMzM0LDBxMCwuOSwwLDEuOGMtMS4wNzksMC0yLjE1OCwwLTMuMjM3LDBhLjk4My45ODMsMCwwLDEtLjYtLjE3M0EuOTI0LjkyNCwwLDAsMSwyLDEwLjU3MVpcIiBzdHlsZT1cImZpbGw6IzFhMzQ4ZlwiLz48cGF0aCBkPVwiTTI1Ljc4Niw5LjY1NWgzLjIzM2ExLDEsMCwwLDEsLjU2MS4xNDMuOTI0LjkyNCwwLDAsMSwuNDIuNzE2di4wNThhLjkzMy45MzMsMCwwLDEtLjMuNjUxLjk1Ny45NTcsMCwwLDEtLjY3Ny4yMzRjLTEuMDc5LDAtMi4xNTgsMC0zLjIzNywwUTI1Ljc4NiwxMC41NTYsMjUuNzg2LDkuNjU1WlwiIHN0eWxlPVwiZmlsbDojMWEzNDhmXCIvPjxwYXRoIGQ9XCJNMiwxNS45NDRhLjkxMy45MTMsMCwwLDEsLjg4OC0uODQyYzEuMTA5LS4wMDcsMi4yMTksMCwzLjMyOCwwcTAsLjksMCwxLjhjLTEuMTA5LDAtMi4yMTcsMC0zLjMyNiwwQS45MTUuOTE1LDAsMCwxLDIsMTYuMDYzWlwiIHN0eWxlPVwiZmlsbDojMWEzNDhmXCIvPjxwYXRoIGQ9XCJNMjUuNzg2LDE1LjFjMS4xMDksMCwyLjIxOCwwLDMuMzI2LDBhLjkxNC45MTQsMCwwLDEsLjg4OS44MzV2LjExN2EuOTQ2Ljk0NiwwLDAsMS0uMzMxLjY0MS45NzMuOTczLDAsMCwxLS42NTEuMjA3SDI1Ljc4NlEyNS43ODUsMTYsMjUuNzg2LDE1LjFaXCIgc3R5bGU9XCJmaWxsOiMxYTM0OGZcIi8+PHBhdGggZD1cIk0yLjQzMywyMC42NzhhMS4xMjEsMS4xMjEsMCwwLDEsLjY0My0uMTM2YzEuMDQzLjAwNiwyLjA4Ni0uMDA2LDMuMTI5LjAwNi4wMjguNiwwLDEuMi4wMTIsMS44LTEuMTEsMC0yLjIyMSwwLTMuMzMxLDBBLjkxMS45MTEsMCwwLDEsMiwyMS40ODNWMjEuNEEuOTI1LjkyNSwwLDAsMSwyLjQzMywyMC42NzhaXCIgc3R5bGU9XCJmaWxsOiMxYTM0OGZcIi8+PHBhdGggZD1cIk0yNS43ODYsMjAuNTQzYzEuMTA4LDAsMi4yMTYsMCwzLjMyNCwwYS45MTQuOTE0LDAsMCwxLC44OS44NDd2LjA5YS45MTEuOTExLDAsMCwxLS44ODguODU5Yy0xLjEwOS4wMDctMi4yMTgsMC0zLjMyNiwwQzI1Ljc4NiwyMS43NDMsMjUuNzg1LDIxLjE0MywyNS43ODYsMjAuNTQzWlwiIHN0eWxlPVwiZmlsbDojMWEzNDhmXCIvPjxwYXRoIGQ9XCJNOS42NTYsMjUuNzgxaDEuOGMwLDEuMDgxLDAsMi4xNjIsMCwzLjI0M2EuOTU3Ljk1NywwLDAsMS0uMjM1LjY3Ny45MzEuOTMxLDAsMCwxLS42NTMuM2gtLjA1MmEuOTA3LjkwNywwLDAsMS0uODYtLjg4MkM5LjY1MSwyOC4wMDYsOS42NTgsMjYuODk0LDkuNjU2LDI1Ljc4MVpcIiBzdHlsZT1cImZpbGw6IzFhMzQ4ZlwiLz48cGF0aCBkPVwiTTE1LjEsMjUuNzgxaDEuOGMwLDEuMTEsMCwyLjIyLDAsMy4zM2EuOTE0LjkxNCwwLDAsMS0uODM2Ljg4OWgtLjExNmEuOTQuOTQsMCwwLDEtLjYxOS0uMzA2Ljk2Mi45NjIsMCwwLDEtLjIyOC0uNjczUTE1LjEsMjcuNCwxNS4xLDI1Ljc4MVpcIiBzdHlsZT1cImZpbGw6IzFhMzQ4ZlwiLz48cGF0aCBkPVwiTTIwLjU0NywyOS4xMDZjMC0xLjEwOCwwLTIuMjE3LDAtMy4zMjVoMS44YzAsMS4wNDgsMCwyLjEsMCwzLjE0NGExLjE3OCwxLjE3OCwwLDAsMS0uMTA1LjU5LjkyLjkyLDAsMCwxLS43NTYuNDg0SDIxLjRBLjkxMS45MTEsMCwwLDEsMjAuNTQ3LDI5LjEwNlpcIiBzdHlsZT1cImZpbGw6IzFhMzQ4ZlwiLz48cGF0aCBkPVwiTTI0LjczMiw4LjM0OUEyLjQyOSwyLjQyOSwwLDAsMCwyMy4zMSw3LjEzMSwzLjI0NSwzLjI0NSwwLDAsMCwyMi4yNTQsN2MtNC4zLjAwOC04LjYtLjAxMS0xMi45MDUuMDFBMi40MzYsMi40MzYsMCwwLDAsNy4xNTcsOC42MDYsMy42MTEsMy42MTEsMCwwLDAsNyw5LjkzNHEwLDYuMjUsMCwxMi41YTIuNjczLDIuNjczLDAsMCwwLC4yNjgsMS4yMTlBMi40MzEsMi40MzEsMCwwLDAsOC42ODgsMjQuODcsMy43NTYsMy43NTYsMCwwLDAsOS45MjcsMjVIMjIuMDdhMy43NjIsMy43NjIsMCwwLDAsMS4yNDMtLjEyN0EyLjQyOSwyLjQyOSwwLDAsMCwyNC44NzUsMjMuMywzLjgsMy44LDAsMCwwLDI1LDIyLjA3MXEwLTYuMjUsMC0xMi41QTIuNjg2LDIuNjg2LDAsMCwwLDI0LjczMiw4LjM0OVpcIiBzdHlsZT1cImZpbGw6IzFhMzQ4ZlwiLz48cGF0aCBkPVwiTTcuNSw4LjMwN2wuMDg0LS4ycS45NjgsMCwxLjkzNS4wMjRoLjM5NHEuMTc5LDAsLjM5NC0uMDEyLjc3Ni0uMDM2LDIuODA3LS4wMzYuNDA2LDAsLjc4OC4wMDZ0Ljc0MS4wMThhLjIzNC4yMzQsMCwwLDEsLjEwOC4xMDhsLS4wMjQuMTkxcS0uMDcyLjExOS0uMzU4LjExOWgtLjFhMTAuMywxMC4zLDAsMCwwLTEuMS4wNTQsMi4xNzksMi4xNzksMCwwLDAtMSwuMjQ1LjQzMi40MzIsMCwwLDAtLjE1NS4zNDYsNC4wNSw0LjA1LDAsMCwwLC4zOTQsMS40bDEuODE4LDQuMjE3LjYzNCwxLjRxLjkyMSwyLjIyMiwxLjgxOSw0LjUzOS4xLjI1MS4xNzkuNDU0bC44LTEuOTU5cS42Mi0xLjQ4MSwxLjI1Mi0zLjE1NGwuODIzLTIuMjQ2cS4wMjQtLjA3Mi4xMzEtLjQ3OGExNy4wMjYsMTcuMDI2LDAsMCwwLDEuMTU3LTQsLjU2MS41NjEsMCwwLDAtLjE2MS0uMzY0LDEuMTY1LDEuMTY1LDAsMCwwLS41Mi0uMyw3LjcyMyw3LjcyMywwLDAsMC0uOTMyLS4xNDNsLS44ODQtLjEwOGEuMzM3LjMzNywwLDAsMS0uMTA4LS4ybC4wMzYtLjEsMy44Ny0uMDM2SDIzLjZhMy4xLDMuMSwwLDAsMSwuODg1LjA4NGwuMDEyLjFhLjY0MS42NDEsMCwwLDEtLjA3Mi4yNTEsMi40NDksMi40NDksMCwwLDEtLjUyNi4xMTksMy42LDMuNiwwLDAsMC0xLjI0NC4yODEsMS44MTUsMS44MTUsMCwwLDAtLjUuNjg3bC0zLjEzNCw3Ljc2NXEtMS40NjYsMy41LTIuMDg2LDUuNDIzbC0uMzQ1LDEuMDM5YS41MzEuNTMxLDAsMCwxLS4yNjMuMSwxLjM4MywxLjM4MywwLDAsMS0uMy0uMDM2cS0xLjQyMi0zLjY3Ni0yLjMxOC01LjY4MUwxMC4wNTUsOS45MmEzLjI0NywzLjI0NywwLDAsMC0uNTkxLS44OSw1LjQ2Myw1LjQ2MywwLDAsMC0xLjM3OS0uNDI0LDQuMzQ3LDQuMzQ3LDAsMCwxLS40NjYtLjExOUEuMzI2LjMyNiwwLDAsMSw3LjUsOC4zMDdaXCIgc3R5bGU9XCJmaWxsOiNjNWMyZmZcIi8+YCxcbiAgXCJWSERMXCI6IGA8cGF0aCBkPVwiTTIsMkgzMFYzMEgyWm0xLjY4OS4wNjdBMS42MjQsMS42MjQsMCwwLDAsMi4wNjMsMy42OTJWMjguMzE0QTEuNjI1LDEuNjI1LDAsMCwwLDMuNjg5LDI5Ljk0SDI4LjMxNmExLjYyNSwxLjYyNSwwLDAsMCwxLjYyNi0xLjYyNlYzLjY5MmExLjYyNCwxLjYyNCwwLDAsMC0xLjYyNi0xLjYyNVpNMy4wMDgsMjguMDc5YS45MTEuOTExLDAsMCwwLC45MTEuOTEySDI4LjA4M2EuOTExLjkxMSwwLDAsMCwuOTExLS45MTJWMy45MTlhLjkxLjkxLDAsMCwwLS45MTEtLjkxMUgzLjkxOWEuOTEuOTEsMCwwLDAtLjkxMS45MTFaXCIgc3R5bGU9XCJmaWxsOiMwZDliMzVcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjUuNTIgNS41MDIgMTguODU4IDI2LjQ5MSAxMy4xNTQgMjYuNDkxIDYuNDkyIDUuNTAyIDEwLjUwOCA1LjUwMiAxNi4wMjkgMjIuNzk1IDIxLjUwNCA1LjUwMiAyNS41MiA1LjUwMlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG4gIFwidmltXCI6IGA8ZGVmcz48Y2xpcFBhdGggaWQ9XCJhXCI+PHBvbHlnb24gcG9pbnRzPVwiMiAyIDMwIDIgMzAgMzAgMiAzMCAyIDIgMiAyXCIgc3R5bGU9XCJmaWxsOm5vbmU7Y2xpcC1ydWxlOmV2ZW5vZGRcIi8+PC9jbGlwUGF0aD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV92aW08L3RpdGxlPjxwb2x5Z29uIHBvaW50cz1cIjI5Ljk4OSAxNS44NTYgMTUuODU2IDIuMDExIDIuMDExIDE2LjEzNiAxNS44NTYgMjkuOTg5IDI5Ljk4OSAxNS44NTYgMjkuOTg5IDE1Ljg1NlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxnIHN0eWxlPVwiY2xpcC1wYXRoOnVybCgjYSlcIj48cG9seWdvbiBwb2ludHM9XCIyOS45ODkgMTUuODU2IDE1Ljg1NiAyLjAxMSAyLjAxMSAxNi4xMzYgMTUuODU2IDI5Ljk4OSAyOS45ODkgMTUuODU2IDI5Ljk4OSAxNS44NTZcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48L2c+PHBvbHlnb24gcG9pbnRzPVwiMjguNTc1IDE1Ljg1NiAyOS40MjIgMTUuODU2IDE1Ljg1NiAyOS40MjIgMTUuODU2IDI4LjU3NSAyOC41NzUgMTUuODU2IDI4LjU3NSAxNS44NTZcIiBzdHlsZT1cImZpbGw6IzI5Njk1ZDtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIyOC41NzUgMTUuODU2IDI5LjQyMiAxNS44NTYgMTUuODU2IDI5LjQyMiAxNS44NTYgMjguNTc1IDI4LjU3NSAxNS44NTYgMjguNTc1IDE1Ljg1NlwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjIuNTc4IDE2LjEzNiAzLjQyNSAxNi4xMzYgMTUuODU2IDI4LjU3NSAxNS44NTYgMjkuNDIyIDIuNTc4IDE2LjEzNiAyLjU3OCAxNi4xMzZcIiBzdHlsZT1cImZpbGw6IzMxNzM2NztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIyLjU3OCAxNi4xMzYgMy40MjUgMTYuMTM2IDE1Ljg1NiAyOC41NzUgMTUuODU2IDI5LjQyMiAyLjU3OCAxNi4xMzYgMi41NzggMTYuMTM2XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTUuODU2IDMuNDE4IDE1Ljg1NiAyLjU3OCAyLjU3OCAxNi4xMzYgMy40MjUgMTYuMTM2IDE1Ljg1NiAzLjQxOCAxNS44NTYgMy40MThcIiBzdHlsZT1cImZpbGw6IzYwYzJhYztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxNS44NTYgMy40MTggMTUuODU2IDIuNTc4IDIuNTc4IDE2LjEzNiAzLjQyNSAxNi4xMzYgMTUuODU2IDMuNDE4IDE1Ljg1NiAzLjQxOFwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjE1Ljg1NiAyLjU3OCAxNS44NTYgMy40MTggMjguNTc1IDE1Ljg1NiAyOS40MjIgMTUuODU2IDE1Ljg1NiAyLjU3OCAxNS44NTYgMi41NzhcIiBzdHlsZT1cImZpbGw6IzQzYjU0YTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxNS44NTYgMi41NzggMTUuODU2IDMuNDE4IDI4LjU3NSAxNS44NTYgMjkuNDIyIDE1Ljg1NiAxNS44NTYgMi41NzggMTUuODU2IDIuNTc4XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTUuODU2IDI4LjU3NSAyOC41NzUgMTUuODU2IDE1Ljg1NiAzLjQxOCAzLjQyNSAxNi4xMzYgMTUuODU2IDI4LjU3NSAxNS44NTYgMjguNTc1XCIgc3R5bGU9XCJmaWxsOiMzYzgzNzY7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTUuODU2IDI4LjU3NSAyOC41NzUgMTUuODU2IDE1Ljg1NiAzLjQxOCAzLjQyNSAxNi4xMzYgMTUuODU2IDI4LjU3NSAxNS44NTYgMjguNTc1XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTguNDk4IDYuMjQ2IDE5LjM0NSA3LjEgMTMuNTAyIDEzLjAyOCAxMy41MDIgNy4xIDE0LjA2OSA3LjEgMTQuOTE2IDYuMjQ2IDE0LjkxNiAzLjk5MiAxNC4wNjkgMy4xMzggNC42NTIgMy4xMzggMy44MDUgMy45OTIgMy44MDUgNi4yNDYgNC42NTIgNy4xIDUuMzEyIDcuMSA1LjMxMiAyNi4zMTQgNi4zNDYgMjcuMTYxIDkuMjY3IDI3LjE2MSAyOS41MTYgNi4yNDYgMjkuNTE2IDMuOTkyIDI4LjY2OSAzLjEzOCAxOS40MzggMy4xMzggMTguNDk4IDMuOTkyIDE4LjQ5OCA2LjI0NiAxOC40OTggNi4yNDZcIiBzdHlsZT1cImZpbGw6IzIzMWYyMDtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxOC40OTggNi4yNDYgMTkuMzQ1IDcuMSAxMy41MDIgMTMuMDI4IDEzLjUwMiA3LjEgMTQuMDY5IDcuMSAxNC45MTYgNi4yNDYgMTQuOTE2IDMuOTkyIDE0LjA2OSAzLjEzOCA0LjY1MiAzLjEzOCAzLjgwNSAzLjk5MiAzLjgwNSA2LjI0NiA0LjY1MiA3LjEgNS4zMTIgNy4xIDUuMzEyIDI2LjMxNCA2LjM0NiAyNy4xNjEgOS4yNjcgMjcuMTYxIDI5LjUxNiA2LjI0NiAyOS41MTYgMy45OTIgMjguNjY5IDMuMTM4IDE5LjQzOCAzLjEzOCAxOC40OTggMy45OTIgMTguNDk4IDYuMjQ2IDE4LjQ5OCA2LjI0NlwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjQuOTMyIDYuNTMzIDQuMzY1IDUuOTY2IDQuMzY1IDQuMjcyIDQuOTMyIDMuNzA1IDEzLjc4OSAzLjY5OCAxNC4zNDkgNC4yNzIgMTMuNzg5IDQuNTQ0IDEzLjUwMiA0LjI3MiA0LjkzMiA1LjY3OSA0LjkzMiA2LjUzMyA0LjkzMiA2LjUzM1wiIHN0eWxlPVwiZmlsbDojZmZmO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjQuOTMyIDYuNTMzIDQuMzY1IDUuOTY2IDQuMzY1IDQuMjcyIDQuOTMyIDMuNzA1IDEzLjc4OSAzLjY5OCAxNC4zNDkgNC4yNzIgMTMuNzg5IDQuNTQ0IDEzLjUwMiA0LjI3MiA0LjkzMiA1LjY3OSA0LjkzMiA2LjUzMyA0LjkzMiA2LjUzM1wiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjYuNjI2IDI2LjU5NCA1Ljk2NiAyNi4wMjcgNS45NjYgNi41MjYgNi42MjYgNS45NjYgNi42MjYgMjYuNTk0IDYuNjI2IDI2LjU5NFwiIHN0eWxlPVwiZmlsbDojZmZmO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjYuNjI2IDI2LjU5NCA1Ljk2NiAyNi4wMjcgNS45NjYgNi41MjYgNi42MjYgNS45NjYgNi42MjYgMjYuNTk0IDYuNjI2IDI2LjU5NFwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjIwLjc1OSA2LjUzMyAyMS4zMjYgNS45NjYgMjEuMzI2IDcuMSAxMS45MDIgMTYuNzAzIDEyLjk0MiAxNC40NDIgMjAuNzU5IDYuNTMzIDIwLjc1OSA2LjUzM1wiIHN0eWxlPVwiZmlsbDojZmZmO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIwLjc1OSA2LjUzMyAyMS4zMjYgNS45NjYgMjEuMzI2IDcuMSAxMS45MDIgMTYuNzAzIDEyLjk0MiAxNC40NDIgMjAuNzU5IDYuNTMzIDIwLjc1OSA2LjUzM1wiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjYuODIgNS42ODYgNi42MjYgNS45NjYgNS45NjYgNi41MzMgNC45MzIgNi41MzMgNC45MzIgNS4zOTkgNi44MiA1LjY4NiA2LjgyIDUuNjg2XCIgc3R5bGU9XCJmaWxsOiM5Mjk0OTc7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiNi44MiA1LjY4NiA2LjYyNiA1Ljk2NiA1Ljk2NiA2LjUzMyA0LjkzMiA2LjUzMyA0LjkzMiA1LjM5OSA2LjgyIDUuNjg2IDYuODIgNS42ODZcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCIxMi45NDIgNi41MzMgMTIuOTQyIDE0LjQ0MiAxMS45MDIgMTYuNjk2IDExLjkwMiA1Ljk1OCAxMy41MDIgNS45NTggMTMuNzg5IDUuNjc4IDEzLjUwMiA0LjI3MiAxNC4zNDkgNC4yNzIgMTQuMzQ5IDUuOTY2IDEzLjc4OSA2LjUzMyAxMi45NDIgNi41MzMgMTIuOTQyIDYuNTMzXCIgc3R5bGU9XCJmaWxsOiM5Mjk0OTc7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTIuOTQyIDYuNTMzIDEyLjk0MiAxNC40NDIgMTEuOTAyIDE2LjY5NiAxMS45MDIgNS45NTggMTMuNTAyIDUuOTU4IDEzLjc4OSA1LjY3OCAxMy41MDIgNC4yNzIgMTQuMzQ5IDQuMjcyIDE0LjM0OSA1Ljk2NiAxMy43ODkgNi41MzMgMTIuOTQyIDYuNTMzIDEyLjk0MiA2LjUzM1wiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjE5LjYyNSA2LjUzMyAxOS4wNjUgNS45NjYgMTkuMDY1IDQuMjcyIDE5LjcxOCAzLjcwNSAyOC4yOTUgMy43MDUgMjguOTU2IDQuMjcyIDI4LjAwOCA1LjExOSAxOS42MjUgNS42NzkgMTkuNjI1IDYuNTMzIDE5LjYyNSA2LjUzM1wiIHN0eWxlPVwiZmlsbDojZmZmO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE5LjYyNSA2LjUzMyAxOS4wNjUgNS45NjYgMTkuMDY1IDQuMjcyIDE5LjcxOCAzLjcwNSAyOC4yOTUgMy43MDUgMjguOTU2IDQuMjcyIDI4LjAwOCA1LjExOSAxOS42MjUgNS42NzkgMTkuNjI1IDYuNTMzIDE5LjYyNSA2LjUzM1wiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjI4Ljk1NiA1Ljk2NiA5LjA3NCAyNi41OTQgNi42MjYgMjYuNTk0IDYuNjI2IDI1Ljc0NyA4LjQyIDI1Ljc0NyAyOC4yOTUgNS4zOTkgMjguMDA4IDQuMjcyIDI4Ljk1NiA0LjI3MiAyOC45NTYgNS45NjYgMjguOTU2IDUuOTY2XCIgc3R5bGU9XCJmaWxsOiM5Mjk0OTc7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjguOTU2IDUuOTY2IDkuMDc0IDI2LjU5NCA2LjYyNiAyNi41OTQgNi42MjYgMjUuNzQ3IDguNDIgMjUuNzQ3IDI4LjI5NSA1LjM5OSAyOC4wMDggNC4yNzIgMjguOTU2IDQuMjcyIDI4Ljk1NiA1Ljk2NiAyOC45NTYgNS45NjZcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCIyMS41MTIgNS42ODYgMjEuMzE5IDUuOTY2IDIwLjc1OSA2LjUzMyAxOS42MjUgNi41MzMgMTkuNjI1IDUuMzk5IDIxLjUxMiA1LjY4NiAyMS41MTIgNS42ODZcIiBzdHlsZT1cImZpbGw6IzkyOTQ5NztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIyMS41MTIgNS42ODYgMjEuMzE5IDUuOTY2IDIwLjc1OSA2LjUzMyAxOS42MjUgNi41MzMgMTkuNjI1IDUuMzk5IDIxLjUxMiA1LjY4NiAyMS41MTIgNS42ODZcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCIxMS45MDIgMTYuNjk2IDExLjkwMiA1Ljk1OCAxMy41MDIgNS45NTggMTMuNzg5IDUuNjc5IDEzLjc4OSA0LjU0NCAxMy41MDIgNC4yNjUgNS4yMTIgNC4yNjUgNC45MzIgNC41NDQgNC45MzIgNS42NzkgNS4yMTIgNS45NTggNi42MjYgNS45NTggNi42MjYgMjUuNzQ3IDYuOTkyIDI2LjAyNyA4LjYwNyAyNi4wMjcgMjguMzg5IDUuMzk5IDI4LjM4OSA0LjU4OCAyOC4xMDIgNC4yNjUgMTkuOTEyIDQuMjY1IDE5LjYyNSA0LjU0NCAxOS42MjUgNS42ODYgMTkuOTEyIDUuOTY2IDIxLjMyNiA1Ljk2NiAyMS4zMjYgNy4xIDExLjkwMiAxNi42OTYgMTEuOTAyIDE2LjY5NlwiIHN0eWxlPVwiZmlsbDojZDBkMmQzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjExLjkwMiAxNi42OTYgMTEuOTAyIDUuOTU4IDEzLjUwMiA1Ljk1OCAxMy43ODkgNS42NzkgMTMuNzg5IDQuNTQ0IDEzLjUwMiA0LjI2NSA1LjIxMiA0LjI2NSA0LjkzMiA0LjU0NCA0LjkzMiA1LjY3OSA1LjIxMiA1Ljk1OCA2LjYyNiA1Ljk1OCA2LjYyNiAyNS43NDcgNi45OTIgMjYuMDI3IDguNjA3IDI2LjAyNyAyOC4zODkgNS4zOTkgMjguMzg5IDQuNTg4IDI4LjEwMiA0LjI2NSAxOS45MTIgNC4yNjUgMTkuNjI1IDQuNTQ0IDE5LjYyNSA1LjY4NiAxOS45MTIgNS45NjYgMjEuMzI2IDUuOTY2IDIxLjMyNiA3LjEgMTEuOTAyIDE2LjY5NiAxMS45MDIgMTYuNjk2XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTcuMDQxIDE2LjcxMSAxNy43MDEgMTYuMTQ0IDE5LjM5NSAxNi4xNDQgMTkuODY5IDE2LjcxMSAxOS4zMDIgMTguNDA1IDE4LjY0OSAxOC45NzIgMTYuOTU1IDE4Ljk3MiAxNi40NzQgMTguNDA1IDE3LjA0MSAxNi43MTEgMTcuMDQxIDE2LjcxMVwiIHN0eWxlPVwiZmlsbDojMjMxZjIwO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE3LjA0MSAxNi43MTEgMTcuNzAxIDE2LjE0NCAxOS4zOTUgMTYuMTQ0IDE5Ljg2OSAxNi43MTEgMTkuMzAyIDE4LjQwNSAxOC42NDkgMTguOTcyIDE2Ljk1NSAxOC45NzIgMTYuNDc0IDE4LjQwNSAxNy4wNDEgMTYuNzExIDE3LjA0MSAxNi43MTFcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCIxNy42MDggMjYuMDM0IDE5LjMwOSAyMC45NTMgMTguNzQyIDIwLjk1MyAxOS4zMDkgMTkuMjUxIDIxLjg0MyAxOS4yNTEgMjIuNDEgMTkuODE5IDIyLjc5IDE5LjgxOSAyMy4zNSAxOS4yNTEgMjUuMjM4IDE5LjI1MSAyNS44MDUgMTkuODE5IDI2LjE3OCAxOS44MTkgMjYuNzQ1IDE5LjI1MSAyOC44MTIgMTkuMjUxIDI5LjU2NiAyMC4zODYgMjguMzMxIDI0LjQwNSAyOC44OTEgMjQuNDA1IDI4LjM0NiAyNi4wMzQgMjQuOTUxIDI2LjAzNCAyNi4yNzggMjIuMDc5IDI1LjQzMSAyMi4wNzkgMjQuNjQ5IDI0LjM5MSAyNS4yMDkgMjQuMzkxIDI0LjY3OCAyNi4wMzQgMjEuMjgzIDI2LjAzNCAyMi42MDMgMjIuMDc5IDIxLjc1NiAyMi4wNzkgMjAuOTY3IDI0LjQwNSAyMS41MzQgMjQuNDA1IDIxLjAwMyAyNi4wMzQgMTcuNjA4IDI2LjAzNCAxNy42MDggMjYuMDM0XCIgc3R5bGU9XCJmaWxsOiMyMzFmMjA7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTcuNjA4IDI2LjAzNCAxOS4zMDkgMjAuOTUzIDE4Ljc0MiAyMC45NTMgMTkuMzA5IDE5LjI1MSAyMS44NDMgMTkuMjUxIDIyLjQxIDE5LjgxOSAyMi43OSAxOS44MTkgMjMuMzUgMTkuMjUxIDI1LjIzOCAxOS4yNTEgMjUuODA1IDE5LjgxOSAyNi4xNzggMTkuODE5IDI2Ljc0NSAxOS4yNTEgMjguODEyIDE5LjI1MSAyOS41NjYgMjAuMzg2IDI4LjMzMSAyNC40MDUgMjguODkxIDI0LjQwNSAyOC4zNDYgMjYuMDM0IDI0Ljk1MSAyNi4wMzQgMjYuMjc4IDIyLjA3OSAyNS40MzEgMjIuMDc5IDI0LjY0OSAyNC4zOTEgMjUuMjA5IDI0LjM5MSAyNC42NzggMjYuMDM0IDIxLjI4MyAyNi4wMzQgMjIuNjAzIDIyLjA3OSAyMS43NTYgMjIuMDc5IDIwLjk2NyAyNC40MDUgMjEuNTM0IDI0LjQwNSAyMS4wMDMgMjYuMDM0IDE3LjYwOCAyNi4wMzQgMTcuNjA4IDI2LjAzNFwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjI4LjU1NCAxOS44MTkgMjguOTkyIDIwLjQ0MyAyNy41OTkgMjQuOTA3IDI4LjE1OSAyNC45MDcgMjcuOTcyIDI1LjQ2NyAyNS43MTEgMjUuNDY3IDI3LjAzMiAyMS41MTIgMjUuMDUxIDIxLjUxMiAyMy45MjQgMjQuOTA3IDI0LjQ4NCAyNC45MDcgMjQuMjk3IDI1LjQ2NyAyMi4wMzYgMjUuNDY3IDIzLjM1NyAyMS41MTIgMjEuMzc2IDIxLjUxMiAyMC4yNDkgMjQuOTA3IDIwLjgxNiAyNC45MDcgMjAuNjIyIDI1LjQ2NyAxOC4zNjEgMjUuNDY3IDIwLjA2MyAyMC4zODYgMTkuNDk1IDIwLjM4NiAxOS42ODIgMTkuODE5IDIxLjc1NiAxOS44MTkgMjIuMzIzIDIwLjM4NiAyMi44ODMgMjAuMzg2IDIzLjQ1IDE5LjgxOSAyNS4xNDQgMTkuODE5IDI1LjcxMSAyMC4zODYgMjYuMjc4IDIwLjM4NiAyNi44NDUgMTkuODE5IDI4LjU1NCAxOS44MTkgMjguNTU0IDE5LjgxOVwiIHN0eWxlPVwiZmlsbDojZDBkMmQzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI4LjU1NCAxOS44MTkgMjguOTkyIDIwLjQ0MyAyNy41OTkgMjQuOTA3IDI4LjE1OSAyNC45MDcgMjcuOTcyIDI1LjQ2NyAyNS43MTEgMjUuNDY3IDI3LjAzMiAyMS41MTIgMjUuMDUxIDIxLjUxMiAyMy45MjQgMjQuOTA3IDI0LjQ4NCAyNC45MDcgMjQuMjk3IDI1LjQ2NyAyMi4wMzYgMjUuNDY3IDIzLjM1NyAyMS41MTIgMjEuMzc2IDIxLjUxMiAyMC4yNDkgMjQuOTA3IDIwLjgxNiAyNC45MDcgMjAuNjIyIDI1LjQ2NyAxOC4zNjEgMjUuNDY3IDIwLjA2MyAyMC4zODYgMTkuNDk1IDIwLjM4NiAxOS42ODIgMTkuODE5IDIxLjc1NiAxOS44MTkgMjIuMzIzIDIwLjM4NiAyMi44ODMgMjAuMzg2IDIzLjQ1IDE5LjgxOSAyNS4xNDQgMTkuODE5IDI1LjcxMSAyMC4zODYgMjYuMjc4IDIwLjM4NiAyNi44NDUgMTkuODE5IDI4LjU1NCAxOS44MTkgMjguNTU0IDE5LjgxOVwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwYXRoIGQ9XCJNMTkuMDIyLDE5LjI1MSwxNy4yOTIsMjQuNGguNTg5bC0uNTYsMS42MzdIMTMuOTMzbDEuNjk0LTUuMDgySDE1LjA2bDMuOTYyLTEuN1ptLTMuOTYyLDEuNy41NjctMS43aDMuNGwtMy45NjIsMS43WlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTkuMDIyLDE5LjI1MSwxNy4yOTIsMjQuNGguNTg5bC0uNTYsMS42MzdIMTMuOTMzbDEuNjk0LTUuMDgySDE1LjA2bDMuOTYyLTEuN1ptLTMuOTYyLDEuNy41NjctMS43aDMuNGwtMy45NjIsMS43WlwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjE2Ljk0NyAyNS40NjcgMTcuMTM0IDI0LjkwNyAxNi41NjcgMjQuOTA3IDE4LjI2OCAxOS44MTkgMTUuOTE0IDE5LjgxOSAxNS43MiAyMC4zODYgMTYuMzggMjAuMzg2IDE0LjY4NiAyNS40NjcgMTYuOTQ3IDI1LjQ2NyAxNi45NDcgMjUuNDY3XCIgc3R5bGU9XCJmaWxsOiNkMGQyZDM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTYuOTQ3IDI1LjQ2NyAxNy4xMzQgMjQuOTA3IDE2LjU2NyAyNC45MDcgMTguMjY4IDE5LjgxOSAxNS45MTQgMTkuODE5IDE1LjcyIDIwLjM4NiAxNi4zOCAyMC4zODYgMTQuNjg2IDI1LjQ2NyAxNi45NDcgMjUuNDY3IDE2Ljk0NyAyNS40NjdcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCIxOC44MjggMTguMTI1IDE5LjIwOCAxNi45OTEgMTkuMDIyIDE2LjcxMSAxNy44ODggMTYuNzExIDE3LjUxNCAxNi45OTEgMTcuMTM0IDE4LjEyNSAxNy4zMjggMTguNDA1IDE4LjQ2MiAxOC40MDUgMTguODI4IDE4LjEyNSAxOC44MjggMTguMTI1XCIgc3R5bGU9XCJmaWxsOiNkMGQyZDM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTguODI4IDE4LjEyNSAxOS4yMDggMTYuOTkxIDE5LjAyMiAxNi43MTEgMTcuODg4IDE2LjcxMSAxNy41MTQgMTYuOTkxIDE3LjEzNCAxOC4xMjUgMTcuMzI4IDE4LjQwNSAxOC40NjIgMTguNDA1IDE4LjgyOCAxOC4xMjUgMTguODI4IDE4LjEyNVwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPmAsXG4gIFwiVmlzdWFsIEJhc2ljXCI6IGA8cGF0aCBkPVwiTTYuNjcsNy44MzYsOSwxOC45MTUsMTEuMzM2LDcuODM2SDE2TDExLjMzNiwyNC4xNjRINi42NzJMMiw3LjgzNlpcIiBzdHlsZT1cImZpbGw6IzAwNTE5YVwiLz48cGF0aCBkPVwiTTE4LjMzMSw3LjgzNmg3LjZhNC4wOCw0LjA4LDAsMCwxLDIuOSwxLjc0OSwzLjc4LDMuNzgsMCwwLDEsLjU3MSwyLjA0LDMuOTg1LDMuOTg1LDAsMCwxLS41NzEsMi4wMzQsNC4xMDgsNC4xMDgsMCwwLDEtMi4zNDEsMS43NjMsNC4xLDQuMSwwLDAsMSwyLjkyOSwxLjc1NiwzLjgsMy44LDAsMCwxLC41OCwyLjEsNC42NjMsNC42NjMsMCwwLDEtLjU3OSwyLjU0Niw1LjA0Nyw1LjA0NywwLDAsMS0zLjUsMi4zMzhIMTguMzMxWk0yMywxNC4yNTJoMS4xNjZhMS43NTQsMS43NTQsMCwwLDAsMC0zLjVIMjNabTAsN0gyNC4zOWEyLjA0NywyLjA0NywwLDAsMCwwLTQuMDg5SDIzWlwiIHN0eWxlPVwiZmlsbDojMDA1MTlhXCIvPmAsXG4gIFwiV2ViQXNzZW1ibHlcIjogYDxwYXRoIGQ9XCJNMTkuMTUzLDIuMzVWMi41YTMuMiwzLjIsMCwxLDEtNi40LDBoMFYyLjM1SDJWMzAuMjY5SDI5LjkxOVYyLjM1WlwiIHN0eWxlPVwiZmlsbDojNjU0ZmYwXCIvPjxwYXRoIGQ9XCJNOC40ODUsMTcuNGgxLjg1TDExLjYsMjQuMTIzaC4wMjNMMTMuMTQsMTcuNGgxLjczMWwxLjM3MSw2LjgxaC4wMjdsMS40NC02LjgxaDEuODE1bC0yLjM1OCw5Ljg4NUgxNS4zMjlsLTEuMzYtNi43MjhoLS4wMzZsLTEuNDU2LDYuNzI4aC0xLjg3Wm0xMy4xMjQsMGgyLjkxN2wyLjksOS44ODVIMjUuNTE1bC0uNjMtMi4ySDIxLjU2MmwtLjQ4NiwyLjJIMTkuMjE3Wm0xLjExLDIuNDM3LS44MDcsMy42MjdoMi41MTJMMjMuNSwxOS44MzJaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcbiAgXCJXb2xmcmFtIGxhbmd1YWdlXCI6IGA8cGF0aCBkPVwiTTMwLDIwLjU1LDI1Ljk0LDE2LDMwLDExLjQ1bC01Ljk0OC0xLjI5NC41OTUtNi4wNjdMMTkuMDcxLDYuNTQzLDE1Ljk5MywxLjI3OSwxMi45MjksNi41NDMsNy4zNTMsNC4wODlsLjU5NSw2LjA2N0wyLDExLjQ1LDYuMDU5LDE2LDIsMjAuNTVsNS45NDgsMS4yOTQtLjU5NSw2LjA2Nyw1LjU3Ni0yLjQ1NCwzLjA3OCw1LjI2NCwzLjA2My01LjI2NCw1LjU5MSwyLjQ1NC0uNjEtNi4wNjdaXCIgc3R5bGU9XCJmaWxsOiNkMTBcIi8+PHBhdGggZD1cIk0xOS4zNTMsMTEuNDVhNi45NjgsNi45NjgsMCwwLDEtMy40Mi44NjIsNS40NDYsNS40NDYsMCwwLDEtMy4yMTItLjg2MkE3LjEsNy4xLDAsMCwxLDEyLjUsMTQuOGE2LjIyNSw2LjIyNSwwLDAsMS0xLjg3NCwyLjkxNCw3LjQ1NCw3LjQ1NCwwLDAsMSwzLjEzOCwxLjE5LDkuNjU5LDkuNjU5LDAsMCwxLDIuMjE2LDIuNzIxLDguMTk0LDguMTk0LDAsMCwxLDIuMTQxLTIuNjkxLDcuNjA1LDcuNjA1LDAsMCwxLDMuMjQyLTEuMiwxMi41NjIsMTIuNTYyLDAsMCwxLTEuOTMzLTIuOTQ0QTYuNzE4LDYuNzE4LDAsMCwxLDE5LjM1MywxMS40NVptLTEuOSw2LjU0M2E1LjIzMyw1LjIzMywwLDAsMC0xLjQ1NywxLjYzNiw2LjIzNiw2LjIzNiwwLDAsMC0xLjUtMS42MjEsNS4xOTEsNS4xOTEsMCwwLDAtMS45NDgtLjg0OCw2LjgzOSw2LjgzOSwwLDAsMCwxLjExNS0yLjAwNyw2LjE4LDYuMTgsMCwwLDAsLjIyMy0yLjA4Miw2LjMxNyw2LjMxNywwLDAsMCwyLjA4Mi40NDYsNi41NTIsNi41NTIsMCwwLDAsMi4xNzEtLjQ2MSw0LjUyMSw0LjUyMSwwLDAsMCwuMDc0LDIuMTU2LDYuNzEsNi43MSwwLDAsMCwxLjI0OSwxLjkzM0E3LjAzMSw3LjAzMSwwLDAsMCwxNy40NSwxNy45OTNabTQuMjM4LTQuMDE1Yy0uMzU3LTEuMTc1LjY1NC02LjcwNi42NTQtNi43MDZTMTguNTUsOS44NDQsMTUuODg4LDkuODQ0cy02LjIzLTIuNTcyLTYuMjMtMi41NzIsMS4xNzUsNC4wMTUuNDYxLDYuNTg3LTQuMzg3LDUuNDcyLTQuMzg3LDUuNDcyLDQuNzg4LjI4Myw2LjYsMS41LDMuNjU4LDUuOTQ4LDMuNjU4LDUuOTQ4LDIuNDU0LTUuMiwzLjQ4LTUuOTQ4LDYuOC0xLjUsNi44LTEuNS00LjIyMy00LjE3OC00LjU4LTUuMzUzWm0tMi44NCw1Ljk2M2E5LjQ0NCw5LjQ0NCwwLDAsMC0yLjg0LDQuMTc4cy0xLjQxMy0zLjE1Mi0yLjk3NC00LjIyM1M4LjMsMTguNTQzLDguMywxOC41NDNzMi40NTQtMi4xNzEsMy4wNDgtNC4xYTExLjkyMywxMS45MjMsMCwwLDAtLjEtNC45NTIsMTEuMywxMS4zLDAsMCwwLDQuNjY5LDEuNjIxYzIuMDM3LDAsNC44NDgtMS42MjEsNC44NDgtMS42MjFzLS44MTgsMy4wMzMtLjE2NCw0LjkyMiwzLjEwOCw0LjEzNCwzLjEwOCw0LjEzNGExMC41NTcsMTAuNTU3LDAsMCwwLTQuODYyLDEuNFpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuICBcIlhNTFwiOiBgPHBhdGggZD1cIk0yMC40MiwyMS4xNTdsMi4yMTEsMi4yMTFMMzAsMTYsMjIuNjMxLDguNjMxLDIwLjQyLDEwLjg0MywyNS41OCwxNlpcIiBzdHlsZT1cImZpbGw6I2YxNjYyYVwiLz48cGF0aCBkPVwiTTExLjU4LDEwLjg0Myw5LjM2OSw4LjYzMSwyLDE2bDcuMzY5LDcuMzY5LDIuMjExLTIuMjExTDYuNDIsMTZaXCIgc3R5bGU9XCJmaWxsOiNmMTY2MmFcIi8+PHBhdGggZD1cIk0xNy40MTEsNy42NzdsMS42LjQzNy00LjQyLDE2LjIwOS0xLjYtLjQzNyw0LjQyLTE2LjIwOVpcIiBzdHlsZT1cImZpbGw6I2YxNjYyYVwiLz5gLFxuICBcIlhRdWVyeVwiOiBgPHBhdGggZD1cIk0yMC40MiwyMS4xNTdsMi4yMTEsMi4yMTFMMzAsMTYsMjIuNjMxLDguNjMxLDIwLjQyLDEwLjg0MywyNS41OCwxNlpNMTEuNTgsMTAuODQzLDkuMzY5LDguNjMxLDIsMTZsNy4zNjksNy4zNjksMi4yMTEtMi4yMTFMNi40MiwxNlptNS44MzEtMy4xNjYsMS42LjQzNy00LjQyLDE2LjIwOS0xLjYtLjQzN1pcIiBzdHlsZT1cImZpbGw6I2YxNjYyYVwiLz48cGF0aCBkPVwiTTIwLjMzMiwxOC40NjJhMy4zNTQsMy4zNTQsMCwwLDEsLjk3NS0xLjQyMyw0LjAxNCw0LjAxNCwwLDAsMSwxLjYxNy0uOEE5LjExOCw5LjExOCwwLDAsMSwyNS4xMzgsMTZhNS40NzIsNS40NzIsMCwwLDEsMy42ODEsMS4wMzlBMy41LDMuNSwwLDAsMSwzMCwxOS44MDhhNC40Nyw0LjQ3LDAsMCwxLS4yNCwxLjQ5MSwzLjEyNCwzLjEyNCwwLDAsMS0uODM4LDEuMjM5bC0xLjY3NSwxLjZhMS41MTIsMS41MTIsMCwwLDAtLjQyNC43ODksNS4zMDcsNS4zMDcsMCwwLDAtLjEsMS4xSDIzdi0uNTRhNi4zMiw2LjMyLDAsMCwxLC4yMDctMS43NzgsMi44ODYsMi44ODYsMCwwLDEsLjc4LTEuMjRsMS4zNTItMS4yODlhMS44NCwxLjg0LDAsMCwwLC41NjMtLjg5NCwzLjY4MiwzLjY4MiwwLDAsMCwuMS0uOCwxLjUsMS41LDAsMCwwLS4yNTItLjkuOS45LDAsMCwwLS43NzktLjM0NiwxLjI1NSwxLjI1NSwwLDAsMC0uNDgzLjA4Ni43MjQuNzI0LDAsMCwwLS4zNDQuMzM3LDIuMzQ3LDIuMzQ3LDAsMCwwLS4yMTcuNzIxLDcuNjE0LDcuNjE0LDAsMCwwLS4wODEsMS4yNEgyMEE2LjE1NSw2LjE1NSwwLDAsMSwyMC4zMzIsMTguNDYyWm02LjQ1Nyw4LjVWMzBIMjIuOTM2VjI2Ljk2MlpcIiBzdHlsZT1cImZpbGw6I2ZjYmEwMFwiLz5gLFxuICBcIllBTUxcIjogYDxwYXRoIGQ9XCJNMiwxMi4yMThjLjc1NSwwLDEuNTEtLjAwOCwyLjI2NCwwbC4wNTMuMDM4UTUuNywxMy42MzgsNy4wNzgsMTUuMDE0Yy44OTEtLjkwNiwxLjgtMS43OTQsMi43LTIuNy4wNTMtLjA1Mi4xMS0uMTEzLjE5Mi0uMS42MDgsMCwxLjIxNSwwLDEuODIzLDBhMS40LDEuNCwwLDAsMSwuMzUzLjAxOWMtLjcuNjctMS4zNzcsMS4zNjktMi4wNjksMi4wNUw1LjU0NSwxOC44Yy0uMzMxLjMyNC0uNjQ4LjY2My0uOTg5Ljk3NS0uNzU0LjAyMi0xLjUxMS4wMDctMi4yNjYuMDA3LDEuMjIzLTEuMjA5LDIuNDMxLTIuNDMzLDMuNjU4LTMuNjM3QzQuNjI3LDE0Ljg0MSwzLjMxOCwxMy41MjUsMiwxMi4yMThaXCIgc3R5bGU9XCJmaWxsOiNmZmU4ODVcIi8+PHBhdGggZD1cIk0xMi43LDEyLjIxOGMuNjEzLDAsMS4yMjYsMCwxLjgzOSwwcTAsMy43ODMsMCw3LjU2NmMtLjYxMSwwLTEuMjIyLjAxMi0xLjgzMi0uMDA4LDAtMS42NjQsMC0zLjMyOSwwLTQuOTk0LTEuNiwxLjYwNy0zLjIwOSwzLjItNC44MTEsNC44LS4wODkuMDgtLjE2Ni4yMTctLjMwNS4xOTQtLjgyNC0uMDA2LTEuNjQ5LDAtMi40NzQsMFE4LjkxNiwxNiwxMi43LDEyLjIxOFpcIiBzdHlsZT1cImZpbGw6I2ZmZTg4NVwiLz48cGF0aCBkPVwiTTE0Ljk1OCwxMi4yMmMuNDctLjAwOS45MzksMCwxLjQwOSwwLC44MzYuODUzLDEuNjksMS42ODksMi41MzYsMi41MzJxMS4yNjgtMS4yNjcsMi41MzktMi41MzIuNywwLDEuNCwwLS4wMDgsMy43ODQsMCw3LjU2N2MtLjQ3MSwwLS45NDMuMDA2LTEuNDE0LDBxLjAwOC0yLjM4NywwLTQuNzczYy0uODQ0Ljg0My0xLjY3NiwxLjctMi41MjYsMi41MzYtLjg1Ni0uODM1LTEuNjg3LTEuNjk1LTIuNTMyLTIuNTQxLDAsMS41OTQtLjAwNiwzLjE4OC4wMDYsNC43ODEtLjQ3MiwwLS45NDMuMDA1LTEuNDE1LDBRMTQuOTU4LDE2LDE0Ljk1OCwxMi4yMlpcIiBzdHlsZT1cImZpbGw6I2ZmZTg4NVwiLz48cGF0aCBkPVwiTTIzLjI1OSwxMi4yMTdjLjQ3MiwwLC45NDQtLjAwNywxLjQxNiwwcS0uMDA3LDMuMDgzLDAsNi4xNjZjMS4yNiwwLDIuNTIxLDAsMy43ODIsMCwuMDYzLjAwNi4xNDQtLjAxMi4xOTEuMDQ1LjQ0OC40NTQuOTA3LjksMS4zNTMsMS4zNTRxLTMuMzcxLjAwNy02Ljc0MSwwUTIzLjI2NywxNiwyMy4yNTksMTIuMjE3WlwiIHN0eWxlPVwiZmlsbDojZmZlODg1XCIvPmAsXG4gIFwiWUFOR1wiOiBgPHBhdGggZD1cIk04Ljg3NywyMy4xNTljMC01LjUzNSwzLjk5Mi03LjE2OCw3Ljg5NC03LjE2OCwzLjM1NywwLDUuOTg4LTMuODExLDUuOTg4LTYuNjI0LDAtMy42MjEtMi40ODctNS44MzEtNC44ODItNy4xMkExMy44ODEsMTMuODgxLDAsMSwwLDE0LjUsMjkuOEMxMC40OTEsMjguMjQ4LDguODc3LDI1LjMyNCw4Ljg3NywyMy4xNTlaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xNC40ODIsMjkuOTE3QTE0LDE0LDAsMCwxLDE2LDJhMTQuMTU0LDE0LjE1NCwwLDAsMSwxLjg5My4xMzFsLjA0LjAxM2MyLjI1NSwxLjIxMyw0Ljk0NCwzLjQ1Miw0Ljk0NCw3LjIyMywwLDIuNzE1LTIuNTY0LDYuNzQxLTYuMTA2LDYuNzQxLTIuOSwwLTcuNzc2LjkxNi03Ljc3Niw3LjA1LDAsMi4wMjIsMS40NTEsNC45NDYsNS41NDIsNi41MzFaTTE2LDIuMjM2QTEzLjc2NSwxMy43NjUsMCwwLDAsMTMuNjM3LDI5LjU2Yy0zLjU4MS0xLjY4NC00Ljg3Ny00LjQ0Ny00Ljg3Ny02LjQsMC02LjU3Niw1LjYtNy4yODYsOC4wMTItNy4yODYsMy40MDYsMCw1Ljg3LTMuODg2LDUuODctNi41MDYsMC0zLjY0NS0yLjYwNi01LjgyLTQuOC03LjAwNkExMy45MjgsMTMuOTI4LDAsMCwwLDE2LDIuMjM2WlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjxwYXRoIGQ9XCJNMjkuODgyLDE2YTEzLjg4MiwxMy44ODIsMCwwLDAtMTItMTMuNzUyYzIuNCwxLjI4OSw0Ljg4MiwzLjUsNC44ODIsNy4xMiwwLDIuODEzLTIuNjMxLDYuNjI0LTUuOTg4LDYuNjI0LTMuOSwwLTcuODk0LDEuNjMzLTcuODk0LDcuMTY4LDAsMi4xNjYsMS42MTMsNS4wODksNS42MTgsNi42NDFBMTMuODc1LDEzLjg3NSwwLDAsMCwyOS44ODIsMTZaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PHBhdGggZD1cIk0xNiwzMGExNC4yLDE0LjIsMCwwLDEtMS41MTgtLjA4M2wtLjAzLS4wMDdjLTQuMi0xLjYyOC01LjY5My00LjY1NC01LjY5My02Ljc1LDAtNi41NzYsNS42LTcuMjg2LDguMDEyLTcuMjg2LDMuNDA2LDAsNS44Ny0zLjg4Niw1Ljg3LTYuNTA2LDAtMy42NTUtMi42MjEtNS44MzMtNC44Mi03LjAxNmwuMDcyLS4yMjFBMTQsMTQsMCwwLDEsMTYsMzBabS0xLjQ3Ny0uMzE2QTEzLjc1NiwxMy43NTYsMCwwLDAsMjkuNzY0LDE2LDEzLjgwNywxMy44MDcsMCwwLDAsMTguNSwyLjQ2NmMyLjExNSwxLjI3Miw0LjM3NywzLjQ0MSw0LjM3Nyw2LjksMCwyLjcxNS0yLjU2NCw2Ljc0MS02LjEwNiw2Ljc0MS0yLjksMC03Ljc3Ni45MTYtNy43NzYsNy4wNUM5LDI1LjE3OCwxMC40NDMsMjguMSwxNC41MjMsMjkuNjg0WlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjxjaXJjbGUgY3g9XCIxNS45NDNcIiBjeT1cIjIyLjc4N1wiIHI9XCIxLjUwNlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxjaXJjbGUgY3g9XCIxNi4wMDdcIiBjeT1cIjkuMTQyXCIgcj1cIjEuNTA2XCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+YCxcbiAgXCJaaWdcIjogYDxwb2x5Z29uIHBvaW50cz1cIjUuNzMzIDE5LjczMSA1LjczMyAxMi4yNjQgOC41MzMgMTIuMjY0IDguNTMzIDguNTMxIDIgOC41MzEgMiAyMy40NjQgNS41NDcgMjMuNDY0IDguOTA3IDE5LjczMSA1LjczMyAxOS43MzFcIiBzdHlsZT1cImZpbGw6I2Y3YTQxZFwiLz48cG9seWdvbiBwb2ludHM9XCIyNi40NTMgOC41MzEgMjMuMDkzIDEyLjI2NCAyNi4yNjcgMTIuMjY0IDI2LjI2NyAxOS43MzEgMjMuNDY3IDE5LjczMSAyMy40NjcgMjMuNDY0IDMwIDIzLjQ2NCAzMCA4LjUzMSAyNi40NTMgOC41MzFcIiBzdHlsZT1cImZpbGw6I2Y3YTQxZFwiLz48cG9seWdvbiBwb2ludHM9XCIyNi44NzUgNi43MDcgMjAuNTEzIDguNTMxIDkuNDY3IDguNTMxIDkuNDY3IDEyLjI2NCAxNi44NDcgMTIuMjY0IDUuMTE1IDI1LjI5MyAxMS40OTcgMjMuNDY0IDIyLjUzMyAyMy40NjQgMjIuNTMzIDE5LjczMSAxNS4xNDggMTkuNzMxIDI2Ljg3NSA2LjcwN1wiIHN0eWxlPVwiZmlsbDojZjdhNDFkXCIvPmBcbn0iLCAiaW1wb3J0IHsgTGFuZ3VhZ2VzLCBtYW51YWxMYW5nLCBJY29ucyB9IGZyb20gXCIuL0NvbnN0XCI7XG5pbXBvcnQgeyBDb2RlYmxvY2tDdXN0b21pemVyU2V0dGluZ3MgfSBmcm9tIFwiLi9TZXR0aW5nc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRBbmRUcmltU3RyaW5nKHN0cikge1xuICBpZiAoIXN0cikge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBcbiAgLy8gUmVwbGFjZSAqIHdpdGggLipcbiAgc3RyID0gc3RyLnJlcGxhY2UoL1xcKi9nLCAnLionKTtcbiAgXG4gIGlmICghc3RyLmluY2x1ZGVzKFwiLFwiKSkge1xuICAgIHJldHVybiBbc3RyXTtcbiAgfVxuICBcbiAgcmV0dXJuIHN0ci5zcGxpdChcIixcIikubWFwKHMgPT4gcy50cmltKCkpO1xufS8vIHNwbGl0QW5kVHJpbVN0cmluZ1xuXG5leHBvcnQgZnVuY3Rpb24gc2VhcmNoU3RyaW5nKHN0ciwgc2VhcmNoVGVybSkge1xuICBjb25zdCBvcmlnaW5hbFN0ciA9IHN0cjtcbiAgc3RyID0gc3RyLnRvTG93ZXJDYXNlKCk7XG4gIHNlYXJjaFRlcm0gPSBzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChzZWFyY2hUZXJtID09PSBcImZpbGU6XCIpIHtcbiAgICBpZiAoc3RyLmluY2x1ZGVzKHNlYXJjaFRlcm0pKSB7XG4gICAgICBjb25zdCBzdGFydEluZGV4ID0gc3RyLmluZGV4T2Yoc2VhcmNoVGVybSkgKyBzZWFyY2hUZXJtLmxlbmd0aDtcbiAgICAgIGxldCByZXN1bHQgPSBcIlwiO1xuICAgICAgaWYgKHN0cltzdGFydEluZGV4XSA9PT0gXCJcXFwiXCIpIHtcbiAgICAgICAgY29uc3QgZW5kSW5kZXggPSBzdHIuaW5kZXhPZihcIlxcXCJcIiwgc3RhcnRJbmRleCArIDEpO1xuICAgICAgICBpZiAoZW5kSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgcmVzdWx0ID0gb3JpZ2luYWxTdHIuc3Vic3RyaW5nKHN0YXJ0SW5kZXggKyAxLCBlbmRJbmRleCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gb3JpZ2luYWxTdHIuc3Vic3RyaW5nKHN0YXJ0SW5kZXggKyAxKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZW5kSW5kZXggPSBzdHIuaW5kZXhPZihcIiBcIiwgc3RhcnRJbmRleCk7XG4gICAgICAgIGlmIChlbmRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICByZXN1bHQgPSBvcmlnaW5hbFN0ci5zdWJzdHJpbmcoc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IG9yaWdpbmFsU3RyLnN1YnN0cmluZyhzdGFydEluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdC50cmltKCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHNlYXJjaFRlcm0gPT09IFwiYGBgXCIpIHtcbiAgICBpZiAoc3RyLnN0YXJ0c1dpdGgoc2VhcmNoVGVybSkpIHtcbiAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBzZWFyY2hUZXJtLmxlbmd0aDtcbiAgICAgIGNvbnN0IGVuZEluZGV4ID0gc3RyLmluZGV4T2YoXCIgXCIsIHN0YXJ0SW5kZXgpO1xuICAgICAgbGV0IHdvcmQgPSBcIlwiO1xuICAgICAgaWYgKGVuZEluZGV4ICE9PS0xKSB7XG4gICAgICAgIHdvcmQgPSBvcmlnaW5hbFN0ci5zdWJzdHJpbmcoc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd29yZCA9IG9yaWdpbmFsU3RyLnN1YnN0cmluZyhzdGFydEluZGV4KTtcbiAgICAgIH1cbiAgICAgIGlmICghd29yZC5pbmNsdWRlcyhcIjpcIikpIHtcbiAgICAgICAgaWYgKHdvcmQudG9Mb3dlckNhc2UoKSA9PT0gXCJmb2xkXCIpIFxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgcmV0dXJuIHdvcmQ7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKHNlYXJjaFRlcm0gPT09ICdmb2xkJykge1xuICAgIGlmIChzdHIuaW5jbHVkZXMoXCIgZm9sZCBcIikpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBpbmRleCA9IHN0ci5pbmRleE9mKHNlYXJjaFRlcm0pO1xuICAgIGlmIChpbmRleCAhPT0gLTEgJiYgaW5kZXggPT09IHN0ci5sZW5ndGggLSBzZWFyY2hUZXJtLmxlbmd0aCAmJiBzdHJbaW5kZXggLSAxXSA9PT0gXCIgXCIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoc3RyLmluY2x1ZGVzKFwiYGBgZm9sZCBcIikpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoc3RyLmluY2x1ZGVzKFwiYGBgZm9sZFwiKSAmJiBzdHIuaW5kZXhPZihcImBgYGZvbGRcIikgKyBcImBgYGZvbGRcIi5sZW5ndGggPT09IHN0ci5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgIGlmIChzdHIuaW5jbHVkZXMoc2VhcmNoVGVybSkpIHtcbiAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBzdHIuaW5kZXhPZihzZWFyY2hUZXJtKSArIHNlYXJjaFRlcm0ubGVuZ3RoO1xuICAgICAgY29uc3QgZW5kSW5kZXggPSBzdHIuaW5kZXhPZihcIiBcIiwgc3RhcnRJbmRleCk7XG4gICAgICBpZiAoZW5kSW5kZXggIT09IC0xKSB7XG4gICAgICAgIHJldHVybiBvcmlnaW5hbFN0ci5zdWJzdHJpbmcoc3RhcnRJbmRleCwgZW5kSW5kZXgpLnRyaW0oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBvcmlnaW5hbFN0ci5zdWJzdHJpbmcoc3RhcnRJbmRleCkudHJpbSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgcmV0dXJuIG51bGw7XG59Ly9zZWFyY2hTdHJpbmdcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhpZ2hsaWdodGVkTGluZXMocGFyYW1zOiBzdHJpbmcpOiBudW1iZXJbXSB7XG4gIGlmICghcGFyYW1zKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3QgdHJpbW1lZFBhcmFtcyA9IHBhcmFtcy50cmltKCk7XG4gIGNvbnN0IGxpbmVzID0gdHJpbW1lZFBhcmFtcy5zcGxpdChcIixcIik7XG5cbiAgcmV0dXJuIGxpbmVzLm1hcChsaW5lID0+IHtcbiAgICBpZiAobGluZS5pbmNsdWRlcyhcIi1cIikpIHtcbiAgICAgIGNvbnN0IHJhbmdlID0gbGluZS5zcGxpdChcIi1cIik7XG4gICAgICBjb25zdCBzdGFydCA9IHBhcnNlSW50KHJhbmdlWzBdLCAxMCk7XG4gICAgICBjb25zdCBlbmQgPSBwYXJzZUludChyYW5nZVsxXSwgMTApO1xuICAgICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IGVuZCAtIHN0YXJ0ICsgMSB9LCAoXywgaSkgPT4gc3RhcnQgKyBpKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlSW50KGxpbmUsIDEwKTtcbiAgfSkuZmxhdCgpO1xufS8vIGdldEhpZ2hsaWdodGVkTGluZXNcblxuZXhwb3J0IGZ1bmN0aW9uIGlzRXhjbHVkZWQobGluZVRleHQ6IHN0cmluZywgZXhjbHVkZUxhbmdzOiBzdHJpbmdbXSkgOiBib29sZWFuIHtcbiAgY29uc3QgY29kZUJsb2NrTGFuZyA9IHNlYXJjaFN0cmluZyhsaW5lVGV4dCwgXCJgYGBcIik7XG4gIGNvbnN0IHJlZ2V4TGFuZ3MgPSBzcGxpdEFuZFRyaW1TdHJpbmcoZXhjbHVkZUxhbmdzKS5tYXAobGFuZyA9PiBuZXcgUmVnRXhwKGBeJHtsYW5nLnJlcGxhY2UoL1xcKi9nLCAnLionKX0kYCwgJ2knKSk7XG4gIFxuICBmb3IgKGNvbnN0IHJlZ2V4TGFuZyBvZiByZWdleExhbmdzKSB7XG4gICAgaWYgKGNvZGVCbG9ja0xhbmcgJiYgcmVnZXhMYW5nLnRlc3QoY29kZUJsb2NrTGFuZykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBcbiAgcmV0dXJuIGZhbHNlO1xufS8vIGlzRXhjbHVkZWRcblxuZXhwb3J0IGZ1bmN0aW9uIGdldExhbmd1YWdlSWNvbihEaXNwbGF5TmFtZSkge1xuICBpZiAoIURpc3BsYXlOYW1lKVxuICAgIHJldHVybiBcIlwiO1xuICAgIFxuICBpZiAoSWNvbnMuaGFzT3duUHJvcGVydHkoRGlzcGxheU5hbWUpKSB7XG4gICAgcmV0dXJuIEljb25zW0Rpc3BsYXlOYW1lXTtcbiAgfVxuICBcbiAgcmV0dXJuIG51bGw7XG59Ly8gZ2V0TGFuZ3VhZ2VJY29uXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYW5ndWFnZU5hbWUoY29kZSkge1xuICBpZiAoIWNvZGUpXG4gICAgcmV0dXJuIFwiXCI7XG4gIFxuICBjb2RlID0gY29kZS50b0xvd2VyQ2FzZSgpO1xuICBcbiAgaWYgKExhbmd1YWdlcy5oYXNPd25Qcm9wZXJ0eShjb2RlKSkge1xuICAgIHJldHVybiBMYW5ndWFnZXNbY29kZV07XG4gIH0gZWxzZSBpZiAobWFudWFsTGFuZy5oYXNPd25Qcm9wZXJ0eShjb2RlKSkge1xuICAgIHJldHVybiBtYW51YWxMYW5nW2NvZGVdO1xuICB9IGVsc2UgaWYgKGNvZGUpe1xuICAgICAgcmV0dXJuIGNvZGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBjb2RlLnNsaWNlKDEpO1xuICB9XG4gIFxuICByZXR1cm4gXCJcIjtcbn0vLyBnZXRMYW5ndWFnZU5hbWVcblxuZXhwb3J0IGNvbnN0IEJMT0JTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5leHBvcnQgZnVuY3Rpb24gbG9hZEljb25zKCl7XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKEljb25zKSkge1xuICAgIEJMT0JTW2tleS5yZXBsYWNlKC9cXHMvZywgXCJfXCIpXSA9IFVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW2A8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB2aWV3Qm94PVwiMCAwIDMyIDMyXCI+JHt2YWx1ZX08L3N2Zz5gXSwgeyB0eXBlOiBcImltYWdlL3N2Zyt4bWxcIiB9KSk7XG4gIH1cbn0vLyBsb2FkSWNvbnNcblxuLy8gRnVuY3Rpb25zIGZvciBkaXNwbGF5aW5nIGhlYWRlciBCRUdJTlxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbnRhaW5lcihzcGVjaWZpYzogYm9vbGVhbikge1xuICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICBjb250YWluZXIuY2xhc3NMaXN0LmFkZChgY29kZWJsb2NrLWN1c3RvbWl6ZXItaGVhZGVyLWNvbnRhaW5lciR7c3BlY2lmaWM/Jy1zcGVjaWZpYyc6Jyd9YCk7XG4gIHJldHVybiBjb250YWluZXI7XG59Ly8gY3JlYXRlQ29udGFpbmVyXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb2RlYmxvY2tMYW5nKGxhbmc6IHN0cmluZykge1xuICBjb25zdCBjb2RlYmxvY2tMYW5nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgY29kZWJsb2NrTGFuZy5pbm5lclRleHQgPSBsYW5nO1xuICBjb2RlYmxvY2tMYW5nLmNsYXNzTGlzdC5hZGQoYGNvZGVibG9jay1jdXN0b21pemVyLWhlYWRlci1sYW5ndWFnZS10YWctJHtnZXRMYW5ndWFnZU5hbWUobGFuZykudG9Mb3dlckNhc2UoKX1gKTtcbiAgcmV0dXJuIGNvZGVibG9ja0xhbmc7XG59Ly8gY3JlYXRlQ29kZWJsb2NrTGFuZ1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29kZWJsb2NrSWNvbihkaXNwbGF5TGFuZzogc3RyaW5nKSB7XG4gIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gIGNvbnN0IGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIik7XG4gIGltZy5jbGFzc0xpc3QuYWRkKFwiY29kZWJsb2NrLWN1c3RvbWl6ZXItaWNvblwiKTtcbiAgaW1nLndpZHRoID0gMjg7IC8vMzJcbiAgaW1nLnNyYyA9IEJMT0JTW2Rpc3BsYXlMYW5nLnJlcGxhY2UoL1xccy9nLCBcIl9cIildO1xuXG4gIGRpdi5hcHBlbmRDaGlsZChpbWcpO1xuICBcbiAgcmV0dXJuIGRpdjtcbn0vLyBjcmVhdGVDb2RlYmxvY2tJY29uXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGaWxlTmFtZSh0ZXh0OiBzdHJpbmcpIHtcbiAgY29uc3QgZmlsZU5hbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICBmaWxlTmFtZS5pbm5lclRleHQgPSB0ZXh0O1xuICBmaWxlTmFtZS5jbGFzc0xpc3QuYWRkKFwiY29kZWJsb2NrLWN1c3RvbWl6ZXItaGVhZGVyLXRleHRcIik7XG4gIHJldHVybiBmaWxlTmFtZTtcbn0vLyBjcmVhdGVGaWxlTmFtZVxuXG4vLyBGdW5jdGlvbnMgZm9yIGRpc3BsYXlpbmcgaGVhZGVyIEVORFxuXG5jb25zdCBzdHlsZXNEaWN0ID0ge1xuICBhY3RpdmVDb2RlQmxvY2tMaW5lQ29sb3I6ICdjb2RlYmxvY2stYWN0aXZlLWxpbmUtY29sb3InLFxuICBhY3RpdmVMaW5lQ29sb3I6ICdlZGl0b3ItYWN0aXZlLWxpbmUtY29sb3InLFxuICBiYWNrZ3JvdW5kQ29sb3I6ICdjb2RlYmxvY2stYmFja2dyb3VuZC1jb2xvcicsXG4gIGhpZ2hsaWdodENvbG9yOiAnaGlnaGxpZ2h0LWNvbG9yJyxcbiAgaGVhZGVyQ29sb3I6ICdoZWFkZXItYmFja2dyb3VuZC1jb2xvcicsXG4gIGhlYWRlclRleHRDb2xvcjogJ2hlYWRlci10ZXh0LWNvbG9yJyxcbiAgaGVhZGVyTGluZUNvbG9yOiAnaGVhZGVyLWxpbmUtY29sb3InLFxuICBndXR0ZXJUZXh0Q29sb3I6ICdndXR0ZXItdGV4dC1jb2xvcicsXG4gIGd1dHRlckJhY2tncm91bmRDb2xvcjogJ2d1dHRlci1iYWNrZ3JvdW5kLWNvbG9yJyxcbiAgY29kZUJsb2NrTGFuZ0NvbG9yOiAnbGFuZ3VhZ2UtdGFnLXRleHQtY29sb3InLFxuICBjb2RlQmxvY2tMYW5nQmFja2dyb3VuZENvbG9yOiAnbGFuZ3VhZ2UtdGFnLWJhY2tncm91bmQtY29sb3InLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlU2V0dGluZ1N0eWxlcyhzZXR0aW5nczogQ29kZWJsb2NrQ3VzdG9taXplclNldHRpbmdzKSB7XG4gIGxldCBjb2xvclRoZW1lcyA9IHNldHRpbmdzLmNvbG9yVGhlbWVzO1xuICBsZXQgc3R5bGVJZCA9ICdjb2RlYmxvY2stY3VzdG9taXplci1zdHlsZXMnXG4gIGxldCBzdHlsZVRhZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHN0eWxlSWQpO1xuICBpZiAodHlwZW9mKHN0eWxlVGFnKSA9PSAndW5kZWZpbmVkJyB8fCBzdHlsZVRhZyA9PSBudWxsKSB7XG4gICAgc3R5bGVUYWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgIHN0eWxlVGFnLmlkID0gc3R5bGVJZDtcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLmFwcGVuZENoaWxkKHN0eWxlVGFnKTtcbiAgfVxuICBsZXQgY3VycmVudE1vZGUgPSBnZXRDdXJyZW50TW9kZSgpXG4gIGxldCBkZWZhdWx0Q29sb3JzID0gc2V0dGluZ3MuY29sb3JUaGVtZXMuZmluZCgodGhlbWUpID0+IHtyZXR1cm4gdGhlbWVbJ25hbWUnXSA9PSBgJHtjdXJyZW50TW9kZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStjdXJyZW50TW9kZS5zbGljZSgxKX0gVGhlbWVgfSlbJ2NvbG9ycyddO1xuICBsZXQgdGhlbWVDb2xvcnMgPSBzZXR0aW5ncy5jb2xvclRoZW1lcy5maW5kKCh0aGVtZSkgPT4ge3JldHVybiB0aGVtZVsnbmFtZSddID09IHNldHRpbmdzLlNlbGVjdGVkVGhlbWV9KVsnY29sb3JzJ107XG4gIGxldCBjdXJyZW50VGhlbWUgPSB7bmFtZTogJ2N1cnJlbnQnLCBjb2xvcnM6IHt9fTtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoc3R5bGVzRGljdCkpIHtcbiAgICBsZXQgZGVmYXVsdFZhbHVlID0gYWNjZXNzU2V0dGluZyhrZXksZGVmYXVsdENvbG9ycykudG9Mb3dlckNhc2UoKTtcbiAgICBsZXQgdGhlbWVWYWx1ZSA9IGFjY2Vzc1NldHRpbmcoa2V5LHRoZW1lQ29sb3JzKS50b0xvd2VyQ2FzZSgpO1xuICAgIGxldCBzZXR0aW5nc1ZhbHVlID0gYWNjZXNzU2V0dGluZyhrZXksc2V0dGluZ3MpLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGRlZmF1bHRWYWx1ZSAhPT0gc2V0dGluZ3NWYWx1ZSkge1xuICAgICAgY3VycmVudFRoZW1lWydjb2xvcnMnXVtrZXldID0gc2V0dGluZ3NWYWx1ZTtcbiAgICB9IGVsc2UgaWYgKGRlZmF1bHRWYWx1ZSAhPT0gdGhlbWVWYWx1ZSkge1xuICAgICAgY3VycmVudFRoZW1lWydjb2xvcnMnXVtrZXldID0gdGhlbWVWYWx1ZTtcbiAgICB9XG4gIH1cbiAgbGV0IGFsdEhpZ2hsaWdodFN0eWxpbmcgPSBzZXR0aW5ncy5hbHRlcm5hdGVDb2xvcnMucmVkdWNlKChzdHlsaW5nLGFsdEhpZ2hsaWdodCkgPT4ge3JldHVybiBzdHlsaW5nICsgYFxuICAgIC5jb2RlYmxvY2stY3VzdG9taXplci1saW5lLWhpZ2hsaWdodGVkLSR7YWx0SGlnaGxpZ2h0WyduYW1lJ10ucmVwbGFjZSgvXFxzKy9nLCAnLScpLnRvTG93ZXJDYXNlKCl9IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvZGVibG9jay1jdXN0b21pc2VyLWhpZ2hsaWdodC0ke2FsdEhpZ2hsaWdodFsnbmFtZSddLnJlcGxhY2UoL1xccysvZywgJy0nKS50b0xvd2VyQ2FzZSgpfS1jb2xvcikgIWltcG9ydGFudDtcbiAgICB9XG4gIGB9LCcnKTtcbiAgbGV0IHRleHRTZXR0aW5nc1N0eWxlcyA9IGBcbiAgICBib2R5LmNvZGVibG9jay1jdXN0b21pemVyIFtjbGFzc149XCJjb2RlYmxvY2stY3VzdG9taXplci1oZWFkZXItbGFuZ3VhZ2UtdGFnXCJdIHtcbiAgICAgIC0tY29kZWJsb2NrLWN1c3RvbWl6ZXItbGFuZ3VhZ2UtdGFnLXRleHQtYm9sZDogJHtzZXR0aW5ncy5oZWFkZXIuYkNvZGVibG9ja0xhbmdCb2xkPydib2xkJzonbm9ybWFsJ307XG4gICAgICAtLWNvZGVibG9jay1jdXN0b21pemVyLWxhbmd1YWdlLXRhZy10ZXh0LWl0YWxpYzogJHtzZXR0aW5ncy5oZWFkZXIuYkNvZGVibG9ja0xhbmdJdGFsaWM/J2l0YWxpYyc6J25vcm1hbCd9O1xuICAgIH1cbiAgICBib2R5LmNvZGVibG9jay1jdXN0b21pemVyIC5jb2RlYmxvY2stY3VzdG9taXplci1oZWFkZXItdGV4dCB7XG4gICAgICAtLWNvZGVibG9jay1jdXN0b21pemVyLWhlYWRlci10ZXh0LWJvbGQ6ICR7c2V0dGluZ3MuaGVhZGVyLmJIZWFkZXJCb2xkPydib2xkJzonbm9ybWFsJ307XG4gICAgICAtLWNvZGVibG9jay1jdXN0b21pemVyLWhlYWRlci10ZXh0LWl0YWxpYzogJHtzZXR0aW5ncy5oZWFkZXIuYkhlYWRlckl0YWxpYz8naXRhbGljJzonbm9ybWFsJ307XG4gICAgfVxuICBgO1xuICBzdHlsZVRhZy5pbm5lclRleHQgPSBjb2xvclRoZW1lcy5yZWR1Y2UoKHN0eWxlcyx0aGVtZSkgPT4ge1xuICAgIHJldHVybiBzdHlsZXMgKyBmb3JtYXRTdHlsZXModGhlbWUsc2V0dGluZ3MuYWx0ZXJuYXRlQ29sb3JzKTtcbiAgfSxmb3JtYXRTdHlsZXMoY3VycmVudFRoZW1lLHNldHRpbmdzLmFsdGVybmF0ZUNvbG9ycykrYWx0SGlnaGxpZ2h0U3R5bGluZyt0ZXh0U2V0dGluZ3NTdHlsZXMpLnRyaW0oKS5yZXBsYWNlKC9bXFxyXFxuXFxzXSsvZywgJyAnKTtcbiAgdXBkYXRlU2V0dGluZ0NsYXNzZXMoc2V0dGluZ3MpO1xufS8vIHNldFN0eWxlc1xuXG5mdW5jdGlvbiB1cGRhdGVTZXR0aW5nQ2xhc3NlcyhzZXR0aW5ncykge1xuICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoXCJjb2RlYmxvY2stY3VzdG9taXplci1hY3RpdmUtbGluZS1oaWdobGlnaHRcIixcImNvZGVibG9jay1jdXN0b21pemVyLWFjdGl2ZS1saW5lLWhpZ2hsaWdodC1jb2RlYmxvY2tcIixcImNvZGVibG9jay1jdXN0b21pemVyLWFjdGl2ZS1saW5lLWhpZ2hsaWdodC1lZGl0b3JcIilcbiAgaWYgKHNldHRpbmdzLmJBY3RpdmVMaW5lSGlnaGxpZ2h0ICYmIHNldHRpbmdzLmJBY3RpdmVDb2RlYmxvY2tMaW5lSGlnaGxpZ2h0KSB7XG4gICAgLy8gSW5zaWRlIGFuZCBvdXRzaWRlIG9mIGNvZGVibG9ja3Mgd2l0aCBkaWZmZXJlbnQgY29sb3JzXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiY29kZWJsb2NrLWN1c3RvbWl6ZXItYWN0aXZlLWxpbmUtaGlnaGxpZ2h0XCIpO1xuICB9IGVsc2UgaWYgKHNldHRpbmdzLmJBY3RpdmVMaW5lSGlnaGxpZ2h0ICYmICFzZXR0aW5ncy5iQWN0aXZlQ29kZWJsb2NrTGluZUhpZ2hsaWdodCkge1xuICAgIC8vIE9ubHkgb3V0c2lkZSBjb2RlYmxvY2tzXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiY29kZWJsb2NrLWN1c3RvbWl6ZXItYWN0aXZlLWxpbmUtaGlnaGxpZ2h0LWVkaXRvclwiKTtcbiAgfSBlbHNlIGlmICghc2V0dGluZ3MuYkFjdGl2ZUxpbmVIaWdobGlnaHQgJiYgc2V0dGluZ3MuYkFjdGl2ZUNvZGVibG9ja0xpbmVIaWdobGlnaHQpIHtcbiAgICAvLyBPbmx5IGluc2lkZSBjb2RlYmxvY2tzXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiY29kZWJsb2NrLWN1c3RvbWl6ZXItYWN0aXZlLWxpbmUtaGlnaGxpZ2h0LWNvZGVibG9ja1wiKTtcbiAgfVxuICBcbiAgaWYgKHNldHRpbmdzLmJFbmFibGVMaW5lTnVtYmVycykge1xuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChcImNvZGVibG9jay1jdXN0b21pemVyLXNob3ctbGluZS1udW1iZXJzXCIpO1xuICB9IGVsc2Uge1xuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShcImNvZGVibG9jay1jdXN0b21pemVyLXNob3ctbGluZS1udW1iZXJzXCIpO1xuICB9XG5cbiAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKFwiY29kZWJsb2NrLWN1c3RvbWl6ZXItc2hvdy1sYW5nbmFtZXNcIixcImNvZGVibG9jay1jdXN0b21pemVyLXNob3ctbGFuZ25hbWVzLWFsd2F5c1wiKTtcbiAgaWYgKHNldHRpbmdzLmhlYWRlci5iQWx3YXlzRGlzcGxheUNvZGVibG9ja0xhbmcgJiYgc2V0dGluZ3MuYkRpc3BsYXlDb2RlQmxvY2tMYW5ndWFnZSkge1xuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChcImNvZGVibG9jay1jdXN0b21pemVyLXNob3ctbGFuZ25hbWVzLWFsd2F5c1wiKTtcbiAgfSBlbHNlIGlmIChzZXR0aW5ncy5iRGlzcGxheUNvZGVCbG9ja0xhbmd1YWdlKSB7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiY29kZWJsb2NrLWN1c3RvbWl6ZXItc2hvdy1sYW5nbmFtZXNcIik7XG4gIH1cblxuICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoXCJjb2RlYmxvY2stY3VzdG9taXplci1zaG93LWxhbmdpY29uc1wiLFwiY29kZWJsb2NrLWN1c3RvbWl6ZXItc2hvdy1sYW5naWNvbnMtYWx3YXlzXCIpO1xuICBpZiAoc2V0dGluZ3MuaGVhZGVyLmJBbHdheXNEaXNwbGF5Q29kZWJsb2NrSWNvbiAmJiBzZXR0aW5ncy5iRGlzcGxheUNvZGVCbG9ja0ljb24pIHtcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoXCJjb2RlYmxvY2stY3VzdG9taXplci1zaG93LWxhbmdpY29ucy1hbHdheXNcIik7XG4gIH0gZWxzZSBpZiAoc2V0dGluZ3MuYkRpc3BsYXlDb2RlQmxvY2tJY29uKSB7XG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiY29kZWJsb2NrLWN1c3RvbWl6ZXItc2hvdy1sYW5naWNvbnNcIik7XG4gIH1cblxuICBpZiAoc2V0dGluZ3MuYkd1dHRlckhpZ2hsaWdodCkge1xuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnY29kZWJsb2NrLWN1c3RvbWl6ZXItZ3V0dGVyLWhpZ2hsaWdodCcpO1xuICB9IGVsc2Uge1xuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnY29kZWJsb2NrLWN1c3RvbWl6ZXItZ3V0dGVyLWhpZ2hsaWdodCcpO1xuICB9XG59Ly8gdXBkYXRlU2V0dGluZ1N0eWxlc1xuXG5mdW5jdGlvbiBmb3JtYXRTdHlsZXModGhlbWU6IHtuYW1lOiBzdHJpbmcsIGNvbG9yczogQ29kZWJsb2NrQ3VzdG9taXplckNvbG9yc30sYWx0ZXJuYXRlQ29sb3JzKSB7IC8vVE9ETyAoQG1heXVyYW5rdikgQWRkIHR5cGUgaGludCBmb3IgYWx0ZXJuYXRlQ29sb3JzXG4gIGxldCBjdXJyZW50ID0gdGhlbWVbJ25hbWUnXSA9PSBcImN1cnJlbnRcIjtcbiAgbGV0IHRoZW1lQ2xhc3MgPSAnJ1xuICBsZXQgYWx0SGlnaGxpZ2h0U3R5bGVzID0gJydcbiAgaWYgKHRoZW1lWyduYW1lJ10gPT0gJ0xpZ2h0IFRoZW1lJykge1xuICAgIHRoZW1lQ2xhc3MgPSAnLnRoZW1lLWxpZ2h0JztcbiAgICBhbHRIaWdobGlnaHRTdHlsZXMgPSBhZGRBbHRIaWdobGlnaHRDb2xvcnMoYWx0ZXJuYXRlQ29sb3JzLHRydWUpO1xuICB9IGVsc2UgaWYgKHRoZW1lWyduYW1lJ10gPT0gJ0RhcmsgVGhlbWUnKSB7XG4gICAgdGhlbWVDbGFzcyA9ICcudGhlbWUtZGFyayc7XG4gICAgYWx0SGlnaGxpZ2h0U3R5bGVzID0gYWRkQWx0SGlnaGxpZ2h0Q29sb3JzKGFsdGVybmF0ZUNvbG9ycyxmYWxzZSk7XG4gIH0gZWxzZSBpZiAodGhlbWVbJ25hbWUnXSAhPSAnY3VycmVudCcpIHtcbiAgICByZXR1cm4gJyc7XG4gICAgLy8gdGhlbWVDbGFzcyA9IHRoZW1lWyduYW1lJ10ucmVwbGFjZSgvXFxzKy9nLCAnLScpLnRvTG93ZXJDYXNlKCk7XG4gIH1cbiAgcmV0dXJuIGBcbiAgICBib2R5LmNvZGVibG9jay1jdXN0b21pemVyJHtjdXJyZW50ID8nJzp0aGVtZUNsYXNzfSB7XG4gICAgICAke09iamVjdC5rZXlzKHN0eWxlc0RpY3QpLnJlZHVjZSgodmFyaWFibGVzLGtleSk9PntcbiAgICAgICAgbGV0IGNzc1ZhcmlhYmxlID0gYC0tY29kZWJsb2NrLWN1c3RvbWl6ZXItJHtzdHlsZXNEaWN0W2tleV19YDtcbiAgICAgICAgbGV0IGNzc1ZhbHVlID0gYWNjZXNzU2V0dGluZyhrZXksdGhlbWVbJ2NvbG9ycyddKTtcbiAgICAgICAgbGV0IGNzc0ltcG9ydGFudCA9IChjdXJyZW50PycgIWltcG9ydGFudCc6JycpO1xuICAgICAgICBpZiAoY3NzVmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiB2YXJpYWJsZXMgKyBgJHtjc3NWYXJpYWJsZX06ICR7Y3NzVmFsdWUgKyBjc3NJbXBvcnRhbnR9O2A7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHZhcmlhYmxlcztcbiAgICAgICAgfVxuICAgICAgfSxhbHRIaWdobGlnaHRTdHlsZXMpfVxuICAgIH1cbiAgYDtcbn0vLyBmb3JtYXRTdHlsZXNcblxuZnVuY3Rpb24gYWRkQWx0SGlnaGxpZ2h0Q29sb3JzKGFsdGVybmF0ZUNvbG9ycywgbGlnaHRUaGVtZTogYm9vbGVhbikgeyAvL1RPRE8gKEBtYXl1cmFua3YpIEFkZCB0eXBlIGhpbnQgZm9yIGFsdGVybmF0ZUNvbG9yc1xuICBsZXQga2V5ID0gbGlnaHRUaGVtZT8nbGlnaHRDb2xvcic6J2RhcmtDb2xvcic7XG4gIHJldHVybiBhbHRlcm5hdGVDb2xvcnMucmVkdWNlKChhbHRIaWdobGlnaHRTdHlsZXMsYWx0SGlnaGxpZ2h0KSA9PiB7cmV0dXJuIGFsdEhpZ2hsaWdodFN0eWxlcyArIGAtLWNvZGVibG9jay1jdXN0b21pc2VyLWhpZ2hsaWdodC0ke2FsdEhpZ2hsaWdodFsnbmFtZSddLnJlcGxhY2UoL1xccysvZywgJy0nKS50b0xvd2VyQ2FzZSgpfS1jb2xvcjogJHthbHRIaWdobGlnaHRba2V5XX07YH0sJycpXG59XG5cbmZ1bmN0aW9uIGFjY2Vzc1NldHRpbmcoa2V5OiBzdHJpbmcsIHNldHRpbmdzOiBDb2RlYmxvY2tDdXN0b21pemVyU2V0dGluZ3MpIHtcbiAgaWYgKGtleSBpbiBzZXR0aW5ncykge1xuICAgIHJldHVybiBzZXR0aW5nc1trZXldO1xuICB9IGVsc2UgaWYgKCdoZWFkZXInIGluIHNldHRpbmdzKSB7XG4gICAgaWYgKGtleSBpbiBzZXR0aW5nc1snaGVhZGVyJ10pIHtcbiAgICAgIHJldHVybiBzZXR0aW5nc1snaGVhZGVyJ11ba2V5XTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGFsdF9rZXkgPSBrZXkuY2hhckF0KDYpLnRvTG93ZXJDYXNlKCkra2V5LnNsaWNlKDcpO1xuICAgICAgaWYgKGFsdF9rZXkgaW4gc2V0dGluZ3NbJ2hlYWRlciddKSB7XG4gICAgICAgIHJldHVybiBzZXR0aW5nc1snaGVhZGVyJ11bYWx0X2tleV07XG4gICAgICB9IFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi8vIFNldHRpbmcgTWFuYWdlbWVudFxuZXhwb3J0IGZ1bmN0aW9uIGdldEN1cnJlbnRNb2RlKCkge1xuICBjb25zdCBib2R5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpO1xuICBpZiAoYm9keSAhPT0gbnVsbCl7XG4gICAgaWYgKGJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCd0aGVtZS1saWdodCcpKSB7XG4gICAgICByZXR1cm4gXCJsaWdodFwiO1xuICAgIH0gZWxzZSBpZiAoYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ3RoZW1lLWRhcmsnKSkge1xuICAgICAgcmV0dXJuIFwiZGFya1wiO1xuICAgIH1cbiAgfVxuICBjb25zb2xlLmxvZygnV2FybmluZzogQ291bGRuXFwndCBnZXQgY3VycmVudCB0aGVtZScpO1xuICByZXR1cm4gXCJsaWdodFwiO1xufSIsICJpbXBvcnQgeyBTdGF0ZUZpZWxkLCBTdGF0ZUVmZmVjdCwgUmFuZ2VTZXRCdWlsZGVyIH0gZnJvbSBcIkBjb2RlbWlycm9yL3N0YXRlXCI7XG5pbXBvcnQgeyBFZGl0b3JWaWV3LCBEZWNvcmF0aW9uLCBXaWRnZXRUeXBlIH0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcblxuaW1wb3J0IHsgc2VhcmNoU3RyaW5nLCBnZXRMYW5ndWFnZU5hbWUsIGdldExhbmd1YWdlSWNvbiwgaXNFeGNsdWRlZCwgY3JlYXRlQ29udGFpbmVyLCBjcmVhdGVXcmFwcGVyLCBjcmVhdGVDb2RlYmxvY2tMYW5nLCBjcmVhdGVDb2RlYmxvY2tJY29uLCBjcmVhdGVGaWxlTmFtZSB9IGZyb20gXCIuL1V0aWxzXCI7XG5cbmZ1bmN0aW9uIGRlZmF1bHRGb2xkKHN0YXRlOiBFZGl0b3JTdGF0ZSwgc2V0dGluZ3M6IENvZGVibG9ja0N1c3RvbWl6ZXJTZXR0aW5ncykge1xuICBsZXQgQ29sbGFwc2VTdGFydCA9IG51bGw7XG4gIGxldCBDb2xsYXBzZUVuZCA9IG51bGw7XG4gIGxldCBGb2xkID0gZmFsc2U7XG4gIGxldCBibG9ja0ZvdW5kID0gZmFsc2U7XG4gIGxldCBiRXhjbHVkZSA9IGZhbHNlO1xuICBjb25zdCBidWlsZGVyID0gbmV3IFJhbmdlU2V0QnVpbGRlcjxEZWNvcmF0aW9uPigpO1xuICBmb3IgKGxldCBpID0gMTsgaSA8IHN0YXRlLmRvYy5saW5lczsgaSsrKSB7XG4gICAgY29uc3QgbGluZVRleHQgPSBzdGF0ZS5kb2MubGluZShpKS50ZXh0LnRvU3RyaW5nKCk7XG4gICAgY29uc3QgbGluZSA9IHN0YXRlLmRvYy5saW5lKGkpO1xuICAgIGJFeGNsdWRlID0gaXNFeGNsdWRlZChsaW5lVGV4dCwgc2V0dGluZ3MuRXhjbHVkZUxhbmdzKTtcbiAgICBpZiAobGluZVRleHQuc3RhcnRzV2l0aCgnYGBgJykgJiYgbGluZVRleHQuaW5kZXhPZignYGBgJywgMykgPT09IC0xKSB7XG4gICAgICBpZiAoYkV4Y2x1ZGUpXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgaWYgKENvbGxhcHNlU3RhcnQgPT09IG51bGwpIHtcbiAgICAgICAgRm9sZCA9IHNlYXJjaFN0cmluZyhsaW5lVGV4dCwgXCJmb2xkXCIpO1xuICAgICAgICBpZiAoRm9sZClcbiAgICAgICAgICBDb2xsYXBzZVN0YXJ0ID0gbGluZS5mcm9tO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmxvY2tGb3VuZCA9IHRydWU7XG4gICAgICAgIENvbGxhcHNlRW5kID0gbGluZS50bztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYmxvY2tGb3VuZCkge1xuICAgICAgICBpZiAoQ29sbGFwc2VTdGFydCAhPSBudWxsICYmIENvbGxhcHNlRW5kICE9IG51bGwgKXsgICAgICAgICAgICBcbiAgICAgICAgICBjb25zdCBkZWNvcmF0aW9uID0gRGVjb3JhdGlvbi5yZXBsYWNlKHsgZWZmZWN0OiBDb2xsYXBzZS5vZihbZG9Gb2xkLnJhbmdlKENvbGxhcHNlU3RhcnQsIENvbGxhcHNlRW5kKV0pLCBibG9jazp0cnVlLCBzaWRlOi0xIH0pO1xuICAgICAgICAgIGJ1aWxkZXIuYWRkKENvbGxhcHNlU3RhcnQsIENvbGxhcHNlRW5kLCBkZWNvcmF0aW9uICk7XG4gICAgICAgICAgQ29sbGFwc2VTdGFydCA9IG51bGw7XG4gICAgICAgICAgQ29sbGFwc2VFbmQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICBibG9ja0ZvdW5kID0gZmFsc2U7XG4gICAgfVxuICB9Ly8gZm9yXG4gIFxuICByZXR1cm4gYnVpbGRlci5maW5pc2goKTtcbn0vLyBkZWZhdWx0Rm9sZFxuXG5sZXQgc2V0dGluZ3M6IENvZGVibG9ja0N1c3RvbWl6ZXJTZXR0aW5ncztcbmV4cG9ydCBjb25zdCBjb2RlYmxvY2tIZWFkZXIgPSBTdGF0ZUZpZWxkLmRlZmluZTxEZWNvcmF0aW9uU2V0Pih7XG4gIGNyZWF0ZShzdGF0ZSk6IERlY29yYXRpb25TZXQge1xuICAgIHJldHVybiBEZWNvcmF0aW9uLm5vbmU7ICAgIFxuICB9LFxuICB1cGRhdGUob2xkU3RhdGU6IERlY29yYXRpb25TZXQsIHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbik6IERlY29yYXRpb25TZXQge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgUmFuZ2VTZXRCdWlsZGVyPERlY29yYXRpb24+KCk7XG4gICAgbGV0IFdpZGdldFN0YXJ0ID0gbnVsbDtcbiAgICBsZXQgRm9sZCA9IGZhbHNlO1xuICAgIGxldCBmaWxlTmFtZSA9IG51bGw7XG4gICAgbGV0IGJFeGNsdWRlID0gZmFsc2U7XG4gICAgbGV0IHNwZWNpZmljSGVhZGVyID0gdHJ1ZTsgICAgIFxuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdHJhbnNhY3Rpb24uc3RhdGUuZG9jLmxpbmVzOyBpKyspIHtcbiAgICAgIGNvbnN0IGxpbmVUZXh0ID0gdHJhbnNhY3Rpb24uc3RhdGUuZG9jLmxpbmUoaSkudGV4dC50b1N0cmluZygpO1xuICAgICAgY29uc3QgbGluZSA9IHRyYW5zYWN0aW9uLnN0YXRlLmRvYy5saW5lKGkpO1xuICAgICAgY29uc3QgbGFuZyA9IHNlYXJjaFN0cmluZyhsaW5lVGV4dCwgXCJgYGBcIik7ICAgICAgXG4gICAgICBiRXhjbHVkZSA9IGlzRXhjbHVkZWQobGluZVRleHQsIHRoaXMuc2V0dGluZ3MuRXhjbHVkZUxhbmdzKTtcbiAgICAgIHNwZWNpZmljSGVhZGVyID0gdHJ1ZTtcbiAgICAgIGlmIChsaW5lVGV4dC5zdGFydHNXaXRoKCdgYGAnKSAmJiBsaW5lVGV4dC5pbmRleE9mKCdgYGAnLCAzKSA9PT0gLTEpIHtcbiAgICAgICAgaWYgKFdpZGdldFN0YXJ0ID09PSBudWxsKSB7XG4gICAgICAgICAgV2lkZ2V0U3RhcnQgPSBsaW5lO1xuICAgICAgICAgIGZpbGVOYW1lID0gc2VhcmNoU3RyaW5nKGxpbmVUZXh0LCBcImZpbGU6XCIpO1xuICAgICAgICAgIEZvbGQgPSBzZWFyY2hTdHJpbmcobGluZVRleHQsIFwiZm9sZFwiKTtcbiAgICAgICAgICBpZiAoIWJFeGNsdWRlKSB7XG4gICAgICAgICAgICBpZiAoZmlsZU5hbWUgPT09IG51bGwgfHwgZmlsZU5hbWUgPT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgaWYgKEZvbGQpIHtcbiAgICAgICAgICAgICAgICBmaWxlTmFtZSA9ICdDb2xsYXBzZWQgQ29kZSc7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZmlsZU5hbWUgPSAnJztcbiAgICAgICAgICAgICAgICBzcGVjaWZpY0hlYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidWlsZGVyLmFkZChXaWRnZXRTdGFydC5mcm9tLCBXaWRnZXRTdGFydC5mcm9tLCBjcmVhdGVEZWNvcmF0aW9uV2lkZ2V0KGZpbGVOYW1lLCBnZXRMYW5ndWFnZU5hbWUobGFuZyksIHNwZWNpZmljSGVhZGVyKSk7XG4gICAgICAgICAgICAvL0VkaXRvclZpZXcucmVxdWVzdE1lYXN1cmU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIFdpZGdldFN0YXJ0ID0gbnVsbDtcbiAgICAgICAgICBGb2xkID0gZmFsc2U7XG4gICAgICAgICAgZmlsZU5hbWUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICBcbiAgICByZXR1cm4gYnVpbGRlci5maW5pc2goKTtcbiAgfSxcbiAgcHJvdmlkZShmaWVsZDogU3RhdGVGaWVsZDxEZWNvcmF0aW9uU2V0Pik6IEV4dGVuc2lvbiB7XG4gICAgcmV0dXJuIEVkaXRvclZpZXcuZGVjb3JhdGlvbnMuZnJvbShmaWVsZCk7XG4gIH0sXG59KTsvLyBjb2RlYmxvY2tIZWFkZXJcblxuZnVuY3Rpb24gY3JlYXRlRGVjb3JhdGlvbldpZGdldCh0ZXh0VG9EaXNwbGF5OiBzdHJpbmcsIGxhbmd1YWdlTmFtZTogc3RyaW5nLCBzcGVjaWZpY0hlYWRlcjogYm9vbGVhbikge1xuICByZXR1cm4gRGVjb3JhdGlvbi53aWRnZXQoeyBcbiAgICB3aWRnZXQ6IG5ldyBUZXh0QWJvdmVDb2RlYmxvY2tXaWRnZXQodGV4dFRvRGlzcGxheSwgbGFuZ3VhZ2VOYW1lLCBzcGVjaWZpY0hlYWRlciksIGJsb2NrOiB0cnVlfSk7XG59Ly8gY3JlYXRlRGVjb3JhdGlvbldpZGdldFxuXG5jb25zdCBDb2xsYXBzZSA9IFN0YXRlRWZmZWN0LmRlZmluZSgpLCBVbkNvbGxhcHNlID0gU3RhdGVFZmZlY3QuZGVmaW5lKClcblxubGV0IHBsdWdpblNldHRpbmdzOiBDb2RlYmxvY2tDdXN0b21pemVyU2V0dGluZ3M7XG5leHBvcnQgY29uc3QgY29sbGFwc2VGaWVsZCA9IFN0YXRlRmllbGQuZGVmaW5lKHsgIFxuICBjcmVhdGUoc3RhdGUpIHtcbiAgICByZXR1cm4gZGVmYXVsdEZvbGQoc3RhdGUsIGNvbGxhcHNlRmllbGQucGx1Z2luU2V0dGluZ3MpO1xuICAgIC8vcmV0dXJuIERlY29yYXRpb24ubm9uZSAgIFxuICB9LFxuICB1cGRhdGUodmFsdWUsIHRyKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5tYXAodHIuY2hhbmdlcylcbiAgICBmb3IgKGNvbnN0IGVmZmVjdCBvZiB0ci5lZmZlY3RzKSB7XG4gICAgICBpZiAoZWZmZWN0LmlzKENvbGxhcHNlKSlcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS51cGRhdGUoe2FkZDogZWZmZWN0LnZhbHVlLCBzb3J0OiB0cnVlfSk7XG4gICAgICBlbHNlIGlmIChlZmZlY3QuaXMoVW5Db2xsYXBzZSkpIFxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnVwZGF0ZSh7ZmlsdGVyOiBlZmZlY3QudmFsdWV9KTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9LFxuICBwcm92aWRlOiBmID0+IEVkaXRvclZpZXcuZGVjb3JhdGlvbnMuZnJvbShmKVxufSlcblxuY29uc3QgZG9Gb2xkID0gRGVjb3JhdGlvbi5yZXBsYWNlKHtibG9jazogdHJ1ZX0pO1xuXG5jbGFzcyBUZXh0QWJvdmVDb2RlYmxvY2tXaWRnZXQgZXh0ZW5kcyBXaWRnZXRUeXBlIHtcbiAgdGV4dDogc3RyaW5nO1xuICBvYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcbiAgdmlldzogRWRpdG9yVmlldztcblxuICBjb25zdHJ1Y3Rvcih0ZXh0OiBzdHJpbmcsIExhbmc6IHN0cmluZywgc3BlY2lmaWNIZWFkZXI6IGJvb2xlYW4pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudGV4dCA9IHRleHQ7ICAgIFxuICAgIHRoaXMuTGFuZyA9IExhbmc7XG4gICAgdGhpcy5zcGVjaWZpY0hlYWRlciA9IHNwZWNpZmljSGVhZGVyO1xuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcih0aGlzLmhhbmRsZU11dGF0aW9uKTsgICAgXG4gIH1cbiAgXG4gIGhhbmRsZU11dGF0aW9uID0gKG11dGF0aW9ucywgdmlldykgPT4ge1xuICAgIG11dGF0aW9ucy5mb3JFYWNoKG11dGF0aW9uID0+IHtcbiAgICAgIGlmIChtdXRhdGlvbi50YXJnZXQuaGFzQXR0cmlidXRlKFwiZGF0YS1jbGlja2VkXCIpKXtcbiAgICAgICAgaGFuZGxlQ2xpY2sodGhpcy52aWV3LCBtdXRhdGlvbi50YXJnZXQpOyAgICAgICAgXG4gICAgICAgIC8vdGhpcy52aWV3LnVwZGF0ZShbXSk7XG4gICAgICAgIC8vdGhpcy52aWV3LnN0YXRlLnVwZGF0ZSgpO1xuICAgICAgICAvL0VkaXRvclZpZXcucmVxdWVzdE1lYXN1cmU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy90aGlzLnZpZXcudXBkYXRlKFtdKTtcbiAgICAvL3RoaXMudmlldy5zdGF0ZS51cGRhdGUoKTtcbiAgICAvL3RoaXMudmlldy5yZXF1ZXN0TWVhc3VyZSgpO1xuICB9XG4gICAgXG4gIGVxKG90aGVyOiBUZXh0QWJvdmVDb2RlYmxvY2tXaWRnZXQpIHtcbiAgICByZXR1cm4gb3RoZXIudGV4dCA9PSB0aGlzLnRleHQgJiYgb3RoZXIuTGFuZyA9PSB0aGlzLkxhbmcgJiYgb3RoZXIuc3BlY2lmaWNIZWFkZXIgPT0gdGhpcy5zcGVjaWZpY0hlYWRlclxuICB9XG4gICAgXG4gIHRvRE9NKHZpZXc6IEVkaXRvclZpZXcpOiBIVE1MRWxlbWVudCB7XG4gICAgdGhpcy52aWV3ID0gdmlldztcbiAgICBjb25zdCBjb250YWluZXIgPSBjcmVhdGVDb250YWluZXIodGhpcy5zcGVjaWZpY0hlYWRlcik7XG4gICAgaWYgKHRoaXMuTGFuZyl7XG4gICAgICBjb25zdCBJY29uID0gZ2V0TGFuZ3VhZ2VJY29uKHRoaXMuTGFuZylcbiAgICAgIGlmIChJY29uKSB7XG4gICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChjcmVhdGVDb2RlYmxvY2tJY29uKHRoaXMuTGFuZykpO1xuICAgICAgfVxuICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGNyZWF0ZUNvZGVibG9ja0xhbmcodGhpcy5MYW5nKSk7XG4gICAgfVxuXG4gICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGNyZWF0ZUZpbGVOYW1lKHRoaXMudGV4dCkpOyAgIFxuICAgIFxuICAgIHRoaXMub2JzZXJ2ZXIudmlldyA9IHZpZXc7XG4gICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKGNvbnRhaW5lciwgeyBhdHRyaWJ1dGVzOiB0cnVlIH0pOyAgIFxuICAgIFxuICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIGV2ZW50ID0+IHtcbiAgICAgIGNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoXCJkYXRhLWNsaWNrZWRcIiwgXCJ0cnVlXCIpO1xuICAgIH0pO1xuICAgIC8vRWRpdG9yVmlldy5yZXF1ZXN0TWVhc3VyZTtcblxuICAgIHJldHVybiBjb250YWluZXI7XG4gIH1cbiAgICAgIFxuICBkZXN0cm95KGRvbTogSFRNTEVsZW1lbnQpIHtcbiAgICBkb20ucmVtb3ZlQXR0cmlidXRlKFwiZGF0YS1jbGlja2VkXCIpO1xuICAgIGRvbS5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIGhhbmRsZUNsaWNrKTtcbiAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIGlnbm9yZUV2ZW50KCkgeyByZXR1cm4gZmFsc2U7IH1cbiAgXG59Ly8gVGV4dEFib3ZlQ29kZWJsb2NrV2lkZ2V0XG4gIFxuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZUNsaWNrKHZpZXc6IEVkaXRvclZpZXcsIHRhcmdldDogSFRNTEVsZW1lbnQpe1xuICAvL3ZpZXcuc3RhdGUudXBkYXRlKCk7XG4gIC8vdmlldy51cGRhdGUoW10pO1xuICAvL3ZpZXcucmVxdWVzdE1lYXN1cmUoe30pOyAgXG4gIGNvbnN0IFBvcyA9IHZpZXcucG9zQXRET00odGFyZ2V0KTtcblxuICBjb25zdCBlZmZlY3QgPSB2aWV3LnN0YXRlLmZpZWxkKGNvbGxhcHNlRmllbGQsIGZhbHNlKTtcbiAgbGV0IGlzRm9sZGVkID0gZmFsc2U7XG4gIGVmZmVjdC5iZXR3ZWVuKFBvcywgUG9zLCAoKSA9PiB7IGlzRm9sZGVkID0gdHJ1ZX0pO1xuICBcbiAgbGV0IENvbGxhcHNlU3RhcnQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBsZXQgQ29sbGFwc2VFbmQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBsZXQgV2lkZ2V0U3RhcnQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAvLyBOT1RFOiBDYW4ndCB1c2UgZm9yIGxvb3Agb3ZlciB2aWV3LnZpc2libGVSYW5nZXMsIGJlY2F1c2UgdGhhdCB3YXkgdGhlIGNsb3NpbmcgYmFja3RpY2tzIHdvdWxkbid0IGJlIGZvdW5kIGFuZCBjb2xsYXBzZSB3b3VsZCBub3QgYmUgcG9zc2libGVcbiAgbGV0IGJsb2NrRm91bmQgPSBmYWxzZTtcbiAgZm9yIChsZXQgaSA9IDE7IGkgPCB2aWV3LnN0YXRlLmRvYy5saW5lczsgaSsrKSB7XG4gICAgY29uc3QgbGluZVRleHQgPSB2aWV3LnN0YXRlLmRvYy5saW5lKGkpLnRleHQudG9TdHJpbmcoKTtcbiAgICBjb25zdCBsaW5lID0gdmlldy5zdGF0ZS5kb2MubGluZShpKTtcbiAgICBpZiAobGluZVRleHQuc3RhcnRzV2l0aCgnYGBgJykgJiYgbGluZVRleHQuaW5kZXhPZignYGBgJywgMykgPT09IC0xKSB7XG4gICAgICBpZiAoV2lkZ2V0U3RhcnQgPT09IG51bGwpIHtcbiAgICAgICAgV2lkZ2V0U3RhcnQgPSBsaW5lLmZyb207XG4gICAgICAgIGlmIChQb3MgPT09IGxpbmUuZnJvbSl7XG4gICAgICAgICAgICBDb2xsYXBzZVN0YXJ0ID0gbGluZS5mcm9tO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBibG9ja0ZvdW5kID0gdHJ1ZTtcbiAgICAgICAgQ29sbGFwc2VFbmQgPSBsaW5lLnRvO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBpZiAoYmxvY2tGb3VuZCkge1xuICAgICAgaWYgKENvbGxhcHNlU3RhcnQgIT0gbnVsbCAmJiBDb2xsYXBzZUVuZCAhPSBudWxsICl7XG4gICAgICAgIGlmIChpc0ZvbGRlZCl7XG4gICAgICAgICAgdmlldy5kaXNwYXRjaCh7IGVmZmVjdHM6IFVuQ29sbGFwc2Uub2YoKGZyb20sIHRvKSA9PiB0byA8PSBDb2xsYXBzZVN0YXJ0IHx8IGZyb20gPj0gQ29sbGFwc2VFbmQpIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHZpZXcuZGlzcGF0Y2goeyBlZmZlY3RzOiBDb2xsYXBzZS5vZihbZG9Gb2xkLnJhbmdlKENvbGxhcHNlU3RhcnQsIENvbGxhcHNlRW5kKV0pIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZpZXcucmVxdWVzdE1lYXN1cmUoKTtcbiAgICAgICAgQ29sbGFwc2VTdGFydCA9IG51bGw7XG4gICAgICAgIENvbGxhcHNlRW5kID0gbnVsbDtcbiAgICAgIH0vL2lmIChDb2xsYXBzZVN0YXJ0XG4gICAgICBXaWRnZXRTdGFydCA9IG51bGw7XG4gICAgICBibG9ja0ZvdW5kID0gZmFsc2U7XG4gICAgfVxuICB9Ly8gZm9yXG59Ly8gaGFuZGxlQ2xpY2siLCAiaW1wb3J0IHsgTWFya2Rvd25WaWV3LCBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0LCBzYW5pdGl6ZUhUTUxUb0RvbSB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgeyBzZWFyY2hTdHJpbmcsIGdldEhpZ2hsaWdodGVkTGluZXMsIGdldExhbmd1YWdlTmFtZSwgaXNFeGNsdWRlZCwgZ2V0TGFuZ3VhZ2VJY29uLCBjcmVhdGVDb250YWluZXIsIGNyZWF0ZUNvZGVibG9ja0xhbmcsIGNyZWF0ZUNvZGVibG9ja0ljb24sIGNyZWF0ZUZpbGVOYW1lIH0gZnJvbSBcIi4vVXRpbHNcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIFJlYWRpbmdWaWV3KGNvZGVCbG9ja0VsZW1lbnQ6IEhUTUxFbGVtZW50LCBjb250ZXh0OiBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0LCBwbHVnaW46IENvZGVibG9ja0N1c3RvbWl6ZXJQbHVnaW4pIHtcbiAgY29uc3QgY29kZUVsbTogSFRNTEVsZW1lbnQgPSBjb2RlQmxvY2tFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3ByZSA+IGNvZGUnKTtcbiAgXG4gIGlmICghY29kZUVsbSkgXG4gICAgcmV0dXJuO1xuXG4gIGNvbnN0IGNsYXNzUmVnZXggPSAvXmxhbmd1YWdlLVxcUysvO1xuICBjb25zdCBtYXRjaCA9IEFycmF5LmZyb20oY29kZUVsbS5jbGFzc0xpc3QpLnNvbWUoY2xhc3NOYW1lID0+IGNsYXNzUmVnZXgudGVzdChjbGFzc05hbWUpKTtcbiAgaWYgKG1hdGNoKVxuICAgIHdoaWxlKCFjb2RlRWxtLmNsYXNzTGlzdC5jb250YWlucyhcImlzLWxvYWRlZFwiKSlcbiAgICAgIGF3YWl0IHNsZWVwKDIpO1xuICAgIFxuICBjb25zdCBjb2RlQmxvY2tTZWN0aW9uSW5mbyA9IGNvbnRleHQuZ2V0U2VjdGlvbkluZm8oY29kZUVsbSk7XG5cbiAgbGV0IGNvZGVCbG9ja0ZpcnN0TGluZSA9IFwiXCI7XG4gIGlmIChjb2RlQmxvY2tTZWN0aW9uSW5mbykge1xuICAgIGNvbnN0IHZpZXcgPSBwbHVnaW4uYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk7XG4gICAgaWYgKHZpZXcgJiYgdmlldy5lZGl0b3IpXG4gICAgICBjb2RlQmxvY2tGaXJzdExpbmUgPSB2aWV3LmVkaXRvci5nZXRMaW5lKGNvZGVCbG9ja1NlY3Rpb25JbmZvLmxpbmVTdGFydCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gUERGIGV4cG9ydFxuICAgIGNvbnN0IGZpbGUgPSBwbHVnaW4uYXBwLnZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChjb250ZXh0LnNvdXJjZVBhdGgpO1xuICAgIGlmICghZmlsZSkge1xuICAgICAgLy9jb25zb2xlLmVycm9yKGBGaWxlIG5vdCBmb3VuZDogJHtjb250ZXh0LnNvdXJjZVBhdGh9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXHRcdGNvbnN0IGNhY2hlID0gcGx1Z2luLmFwcC5tZXRhZGF0YUNhY2hlLmdldENhY2hlKGNvbnRleHQuc291cmNlUGF0aCk7XG5cdFx0Y29uc3QgZmlsZUNvbnRlbnQgPSBhd2FpdCBwbHVnaW4uYXBwLnZhdWx0LmNhY2hlZFJlYWQoPFRGaWxlPiBmaWxlKS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIC8vY29uc29sZS5lcnJvcihgRXJyb3IgcmVhZGluZyBmaWxlOiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSk7XG5cdFx0Y29uc3QgZmlsZUNvbnRlbnRMaW5lcyA9IGZpbGVDb250ZW50LnNwbGl0KC9cXG4vZyk7XG5cdFx0Y29uc3QgY29kZUJsb2NrRmlyc3RMaW5lczogc3RyaW5nW10gPSBbXTtcblxuXHRcdGlmIChjYWNoZS5zZWN0aW9ucykge1xuICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGNhY2hlLnNlY3Rpb25zKSB7XG4gICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09ICdjb2RlJykge1xuICAgICAgICAgIGNvbnN0IGxpbmVTdGFydCA9IGVsZW1lbnQucG9zaXRpb24uc3RhcnQubGluZTtcbiAgICAgICAgICBjb25zdCBjb2RlQmxvY2tGaXJzdExpbmUgPSBmaWxlQ29udGVudExpbmVzW2xpbmVTdGFydF07XG4gICAgICAgICAgaWYgKCFpc0FkbW9uaXRpb24oY29kZUJsb2NrRmlyc3RMaW5lKSkge1xuICAgICAgICAgICAgY29kZUJsb2NrRmlyc3RMaW5lcy5wdXNoKGNvZGVCbG9ja0ZpcnN0TGluZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vY29uc29sZS5lcnJvcihgTWV0YWRhdGEgY2FjaGUgbm90IGZvdW5kIGZvciBmaWxlOiAke2NvbnRleHQuc291cmNlUGF0aH1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IFBERkV4cG9ydChjb2RlQmxvY2tFbGVtZW50LCBwbHVnaW4sIGNvZGVCbG9ja0ZpcnN0TGluZXMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvL2NvbnNvbGUuZXJyb3IoYEVycm9yIGV4cG9ydGluZyB0byBQREY6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG4gIFxuICBjb25zdCBjb2RlQmxvY2tMYW5nID0gc2VhcmNoU3RyaW5nKGNvZGVCbG9ja0ZpcnN0TGluZSwgXCJgYGBcIik7XG4gIGNvbnN0IGhpZ2hsaWdodGVkTGluZXNQYXJhbXMgPSBzZWFyY2hTdHJpbmcoY29kZUJsb2NrRmlyc3RMaW5lLCBcIkhMOlwiKTtcbiAgY29uc3QgbGluZXNUb0hpZ2hsaWdodCA9IGdldEhpZ2hsaWdodGVkTGluZXMoaGlnaGxpZ2h0ZWRMaW5lc1BhcmFtcyk7XG4gIGNvbnN0IEZpbGVOYW1lID0gc2VhcmNoU3RyaW5nKGNvZGVCbG9ja0ZpcnN0TGluZSwgXCJmaWxlOlwiKTtcbiAgY29uc3QgRm9sZCA9IHNlYXJjaFN0cmluZyhjb2RlQmxvY2tGaXJzdExpbmUsIFwiZm9sZFwiKTtcbiAgY29uc3QgbGluZU51bWJlck9mZnNldCA9IDA7IC8vc2VhcmNoU3RyaW5nKGNvZGVCbG9ja0ZpcnN0TGluZSwgXCJsbjpcIikvL1RPRE8gKEBtYXl1cmFua3YpIFNldCBsaW5lIG51bWJlciBvZmZzZXQgaGVyZSAtIFNob3VsZCBiZSBsbl92YWx1ZSAtIDEgc2luY2UgaXQgaXMgb2Zmc2V0LCBub3Qgc3RhcnRpbmcgbGluZSBudW1iZXIgLSAwIGlmIHRydWUgT1IgZmFsc2VcbiAgY29uc3Qgc2hvd051bWJlcnMgPSB0cnVlOyAvL1RPRE8gKEBtYXl1cmFua3YpIFNldCBzaG93TnVtYmVycyB0byBiZSB0cnVlIGlmIGxuOjxudW1iZXI+IG9yIGxuOnRydWUgb3IgZmFsc2UgaWYgbG46ZmFsc2VcbiAgY29uc3QgYWx0ZXJuYXRlQ29sb3JzID0gcGx1Z2luLnNldHRpbmdzLmFsdGVybmF0ZUNvbG9ycyB8fCBbXTtcbiAgbGV0IGFsdEhMID0gW107XG4gIGZvciAoY29uc3QgeyBuYW1lIH0gb2YgYWx0ZXJuYXRlQ29sb3JzKSB7XG4gICAgY29uc3QgYWx0UGFyYW1zID0gc2VhcmNoU3RyaW5nKGNvZGVCbG9ja0ZpcnN0TGluZSwgYCR7bmFtZX06YCk7XG4gICAgYWx0SEwgPSBhbHRITC5jb25jYXQoZ2V0SGlnaGxpZ2h0ZWRMaW5lcyhhbHRQYXJhbXMpLm1hcCgobGluZU51bWJlcikgPT4gKHsgbmFtZSwgbGluZU51bWJlciB9KSkpO1xuICB9XG5cbiAgbGV0IGlzQ29kZUJsb2NrRXhjbHVkZWQgPSBmYWxzZTtcbiAgaXNDb2RlQmxvY2tFeGNsdWRlZCA9IGlzRXhjbHVkZWQoY29kZUJsb2NrRmlyc3RMaW5lLCBwbHVnaW4uc2V0dGluZ3MuRXhjbHVkZUxhbmdzKTtcblxuICBjb25zdCBjb2RlRWxlbWVudHMgPSBjb2RlQmxvY2tFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiY29kZVwiKTtcbiAgY29uc3QgY29kZUJsb2NrUHJlRWxlbWVudDogSFRNTFByZUVsZW1lbnQgfCBudWxsID0gY29kZUJsb2NrRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwicHJlOm5vdCguZnJvbnRtYXR0ZXIpXCIpO1xuICBpZiAoY29kZUJsb2NrUHJlRWxlbWVudCA9PT0gbnVsbCkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoIWlzQ29kZUJsb2NrRXhjbHVkZWQpIHtcbiAgICBjb2RlQmxvY2tQcmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoYGNvZGVibG9jay1jdXN0b21pemVyLXByZWApO1xuICB9XG4gIFxuICBBZGRIZWFkZXJBbmRIaWdobGlnaHQoaXNDb2RlQmxvY2tFeGNsdWRlZCwgRmlsZU5hbWUsIGNvZGVCbG9ja1ByZUVsZW1lbnQsIGNvZGVCbG9ja0xhbmcsIEZvbGQsIGNvZGVFbGVtZW50cywgc2hvd051bWJlcnMsIGxpbmVOdW1iZXJPZmZzZXQsIGxpbmVzVG9IaWdobGlnaHQsIGFsdEhMICk7XG59Ly8gUmVhZGluZ1ZpZXdcblxuZnVuY3Rpb24gaXNBZG1vbml0aW9uKGxpbmVUZXh0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgYWRUeXBlcyA9IFtcImFkLW5vdGVcIiwgXCJhZC1zZWVhbHNvXCIsIFwiYWQtYWJzdHJhY3RcIiwgXCJhZC1zdW1tYXJ5XCIsIFwiYWQtdGxkclwiLCBcImFkLWluZm9cIiwgXCJhZC10b2RvXCIsIFwiYWQtdGlwXCIsIFwiYWQtaGludFwiLCBcImFkLWltcG9ydGFudFwiLCBcImFkLXN1Y2Nlc3NcIiwgXCJhZC1jaGVja1wiLCBcImFkLWRvbmVcIiwgXCJhZC1xdWVzdGlvblwiLCBcImFkLWhlbHBcIiwgXCJhZC1mYXFcIiwgXCJhZC13YXJuaW5nXCIsIFwiYWQtY2F1dGlvblwiLCBcImFkLWF0dGVudGlvblwiLCBcImFkLWZhaWx1cmVcIiwgXCJhZC1mYWlsXCIsIFwiYWQtbWlzc2luZ1wiLCBcImFkLWRhbmdlclwiLCBcImFkLWVycm9yXCIsIFwiYWQtYnVnXCIsIFwiYWQtZXhhbXBsZVwiLCBcImFkLXF1b3RlXCIsIFwiYWQtY2l0ZVwiXTsgLy9UT0RPIChAbWF5dXJhbmt2KSByZWZhY3RvciB0byB1c2UgcmVnZXhcbiAgY29uc3QgY29kZUJsb2NrTGFuZyA9IHNlYXJjaFN0cmluZyhsaW5lVGV4dCwgXCJgYGBcIik7XG4gIHJldHVybiBhZFR5cGVzLnNvbWUoKGFkVHlwZSkgPT4gY29kZUJsb2NrTGFuZyAmJiBjb2RlQmxvY2tMYW5nLnN0YXJ0c1dpdGgoYWRUeXBlKSk7XG59Ly8gaXNBZG1vbml0aW9uXG5cbmZ1bmN0aW9uIEhlYWRlcldpZGdldChwcmVFbGVtZW50cywgdGV4dFRvRGlzcGxheTogc3RyaW5nLCBzcGVjaWZpY0hlYWRlcjogYm9vbGVhbiwgY29kZWJsb2NrTGFuZ3VhZ2U6IHN0cmluZywgQ29sbGFwc2U6IGJvb2xlYW4pIHtcbiAgY29uc3QgcGFyZW50ID0gcHJlRWxlbWVudHMucGFyZW50Tm9kZTtcbiAgXG4gIGNvbnN0IGNvbnRhaW5lciA9IGNyZWF0ZUNvbnRhaW5lcihzcGVjaWZpY0hlYWRlcik7XG4gIGlmIChjb2RlYmxvY2tMYW5ndWFnZSl7XG4gICAgY29uc3QgSWNvbiA9IGdldExhbmd1YWdlSWNvbihjb2RlYmxvY2tMYW5ndWFnZSlcbiAgICBpZiAoSWNvbikge1xuICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGNyZWF0ZUNvZGVibG9ja0ljb24oY29kZWJsb2NrTGFuZ3VhZ2UpKTtcbiAgICB9XG4gICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGNyZWF0ZUNvZGVibG9ja0xhbmcoY29kZWJsb2NrTGFuZ3VhZ2UpKTtcbiAgfVxuICBjb250YWluZXIuYXBwZW5kQ2hpbGQoY3JlYXRlRmlsZU5hbWUodGV4dFRvRGlzcGxheSkpOyAgIFxuICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGNvbnRhaW5lciwgcHJlRWxlbWVudHMpO1xuICBcbiAgLy8gQWRkIGV2ZW50IGxpc3RlbmVyIHRvIHRoZSB3aWRnZXQgZWxlbWVudFxuICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uKCkge1xuICAgIC8vIFRvZ2dsZSB0aGUgXCJjb2xsYXBzZWRcIiBjbGFzcyBvbiB0aGUgY29kZWJsb2NrIGVsZW1lbnRcbiAgICBwcmVFbGVtZW50cy5jbGFzc0xpc3QudG9nZ2xlKFwiY29kZWJsb2NrLWN1c3RvbWl6ZXItY29kZWJsb2NrLWNvbGxhcHNlZFwiKTtcbiAgfSk7XG4gIFxuICBpZiAoQ29sbGFwc2UpIHtcbiAgICBwcmVFbGVtZW50cy5jbGFzc0xpc3QuYWRkKGBjb2RlYmxvY2stY3VzdG9taXplci1jb2RlYmxvY2stY29sbGFwc2VkYCk7XG4gIH1cbiAgXG59Ly8gSGVhZGVyV2lkZ2V0XG5cbmZ1bmN0aW9uIGNyZWF0ZUxpbmVOdW1iZXJFbGVtZW50KGxpbmVOdW1iZXIsc2hvd051bWJlcnMpIHtcbiAgY29uc3QgbGluZU51bWJlcldyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICBsaW5lTnVtYmVyV3JhcHBlci5jbGFzc0xpc3QuYWRkKGBjb2RlYmxvY2stY3VzdG9taXplci1saW5lLW51bWJlciR7c2hvd051bWJlcnM/Jyc6Jy1oaWRlJ31gKTtcbiAgbGluZU51bWJlcldyYXBwZXIuc2V0VGV4dChsaW5lTnVtYmVyKTtcbiAgXG4gIHJldHVybiBsaW5lTnVtYmVyV3JhcHBlcjtcbn0vLyBjcmVhdGVMaW5lTnVtYmVyRWxlbWVudFxuXG5mdW5jdGlvbiBjcmVhdGVMaW5lVGV4dEVsZW1lbnQobGluZSkge1xuICBjb25zdCBsaW5lVGV4dCA9IGxpbmUgIT09IFwiXCIgPyBsaW5lIDogXCI8YnI+XCI7XG4gIGNvbnN0IHNhbml0aXplZFRleHQgPSBzYW5pdGl6ZUhUTUxUb0RvbShsaW5lVGV4dCk7XG4gIGNvbnN0IGxpbmVDb250ZW50V3JhcHBlciA9IGNyZWF0ZURpdih7Y2xzOiBgY29kZWJsb2NrLWN1c3RvbWl6ZXItbGluZS10ZXh0YCwgdGV4dDogc2FuaXRpemVkVGV4dH0pOyAgXG4gIFxuICByZXR1cm4gbGluZUNvbnRlbnRXcmFwcGVyO1xufS8vIGNyZWF0ZUxpbmVUZXh0RWxlbWVudFxuXG5mdW5jdGlvbiBoaWdobGlnaHRMaW5lcyhjb2RlRWxlbWVudHMsIHNob3dOdW1iZXJzLCBsaW5lTnVtYmVyT2Zmc2V0LCBsaW5lc1RvSGlnaGxpZ2h0LCBhbHRITCkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGNvZGVFbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBsaW5lcyA9IGNvZGVFbGVtZW50c1tpXS5pbm5lckhUTUwuc3BsaXQoXCJcXG5cIik7XG4gICAgY29uc3QgcHJlRWxtID0gY29kZUVsZW1lbnRzW2ldLnBhcmVudE5vZGU7XG4gICAgaWYgKHByZUVsbSA9PT0gbnVsbCB8fCBwcmVFbG0ubm9kZU5hbWUgIT09IFwiUFJFXCIpIC8vIG9ubHkgcHJvY2VzcyBwcmUgPiBjb2RlIGVsZW1lbnRzXG4gICAgICByZXR1cm47XG5cbiAgICBpZiAobGluZXMubGVuZ3RoID09IDEpIHtcbiAgICAgIGxpbmVzID0gWycnLCcnXTtcbiAgICB9XG4gICAgY29kZUVsZW1lbnRzW2ldLmlubmVySFRNTCA9IFwiXCI7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBsaW5lcy5sZW5ndGggLSAxOyBqKyspIHtcbiAgICAgIGNvbnN0IGxpbmUgPSBsaW5lc1tqXTtcbiAgICAgIGNvbnN0IGxpbmVOdW1iZXIgPSBqICsgMTtcbiAgICAgIGNvbnN0IGlzSGlnaGxpZ2h0ZWQgPSBsaW5lc1RvSGlnaGxpZ2h0LmluY2x1ZGVzKGxpbmVOdW1iZXIpO1xuICAgICAgY29uc3QgYWx0SExNYXRjaCA9IGFsdEhMLmZpbHRlcigoaGwpID0+IGhsLmxpbmVOdW1iZXIgPT09IGxpbmVOdW1iZXIpO1xuXG4gICAgICAvLyBjcmVhdGUgbGluZSBlbGVtZW50XG4gICAgICBjb25zdCBsaW5lV3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICBpZiAoaXNIaWdobGlnaHRlZCkge1xuICAgICAgICBsaW5lV3JhcHBlci5jbGFzc0xpc3QuYWRkKGBjb2RlYmxvY2stY3VzdG9taXplci1saW5lLWhpZ2hsaWdodGVkYCk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChhbHRITE1hdGNoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGluZVdyYXBwZXIuY2xhc3NMaXN0LmFkZChgY29kZWJsb2NrLWN1c3RvbWl6ZXItbGluZS1oaWdobGlnaHRlZC0ke2FsdEhMTWF0Y2hbMF0ubmFtZS5yZXBsYWNlKC9cXHMrL2csICctJykudG9Mb3dlckNhc2UoKX1gKTtcbiAgICAgIH1cbiAgICAgIGNvZGVFbGVtZW50c1tpXS5hcHBlbmRDaGlsZChsaW5lV3JhcHBlcik7XG5cbiAgICAgIC8vIGNyZWF0ZSBsaW5lIG51bWJlciBlbGVtZW50XG4gICAgICBjb25zdCBsaW5lTnVtYmVyRWwgPSBjcmVhdGVMaW5lTnVtYmVyRWxlbWVudChsaW5lTnVtYmVyK2xpbmVOdW1iZXJPZmZzZXQsc2hvd051bWJlcnMpO1xuICAgICAgbGluZVdyYXBwZXIuYXBwZW5kQ2hpbGQobGluZU51bWJlckVsKTtcblxuICAgICAgLy8gY3JlYXRlIGxpbmUgdGV4dCBlbGVtZW50XG4gICAgICBjb25zdCBsaW5lVGV4dEVsID0gY3JlYXRlTGluZVRleHRFbGVtZW50KGxpbmUpO1xuICAgICAgbGluZVdyYXBwZXIuYXBwZW5kQ2hpbGQobGluZVRleHRFbCk7XG4gICAgfVxuICB9XG59Ly8gaGlnaGxpZ2h0TGluZXNcblxuZnVuY3Rpb24gQWRkSGVhZGVyQW5kSGlnaGxpZ2h0KGlzQ29kZUJsb2NrRXhjbHVkZWQsIGZpbGVOYW1lLCBjb2RlQmxvY2tQcmVFbGVtZW50LCBjb2RlQmxvY2tMYW5nLCBGb2xkLCBjb2RlRWxlbWVudHMsIHNob3dOdW1iZXJzLCBsaW5lTnVtYmVyT2Zmc2V0LCBsaW5lc1RvSGlnaGxpZ2h0LCBhbHRITCApe1xuICBpZiAoIWlzQ29kZUJsb2NrRXhjbHVkZWQpIHtcbiAgICBsZXQgc3BlY2lmaWNIZWFkZXIgPSB0cnVlO1xuICAgIGlmIChmaWxlTmFtZSA9PT0gbnVsbCB8fCBmaWxlTmFtZSA9PT0gXCJcIikge1xuICAgICAgaWYgKEZvbGQpIHtcbiAgICAgICAgZmlsZU5hbWUgPSAnQ29sbGFwc2VkIENvZGUnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmlsZU5hbWUgPSAnJztcbiAgICAgICAgc3BlY2lmaWNIZWFkZXIgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgSGVhZGVyV2lkZ2V0KGNvZGVCbG9ja1ByZUVsZW1lbnQsIGZpbGVOYW1lLCBzcGVjaWZpY0hlYWRlciwgZ2V0TGFuZ3VhZ2VOYW1lKGNvZGVCbG9ja0xhbmcpLCBGb2xkKTtcbiAgICBoaWdobGlnaHRMaW5lcyhjb2RlRWxlbWVudHMsIHNob3dOdW1iZXJzLCBsaW5lTnVtYmVyT2Zmc2V0LCBsaW5lc1RvSGlnaGxpZ2h0LCBhbHRITCk7XG4gICAgXG4gICAgaWYgKGNvZGVCbG9ja1ByZUVsZW1lbnQucGFyZW50RWxlbWVudCkge1xuICAgICAgY29kZUJsb2NrUHJlRWxlbWVudC5wYXJlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoYGNvZGVibG9jay1jdXN0b21pemVyLXByZS1wYXJlbnRgKTtcbiAgICB9XG4gIH1cbn0vLyBBZGRIZWFkZXJBbmRIaWdobGlnaHRcblxuZnVuY3Rpb24gUERGRXhwb3J0KGNvZGVCbG9ja0VsZW1lbnQ6IEhUTUxFbGVtZW50LCBwbHVnaW46IENvZGVibG9ja0N1c3RvbWl6ZXJQbHVnaW4sIGNvZGVCbG9ja0ZpcnN0TGluZXM6IHN0cmluZ1tdKSB7XG4gIGNvbnN0IGNvZGVCbG9ja3MgPSBjb2RlQmxvY2tFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3ByZSA+IGNvZGUnKTtcblx0Y29kZUJsb2Nrcy5mb3JFYWNoKChjb2RlRWxtLCBrZXkpID0+IHtcbiAgICBjb25zdCBjb2RlQmxvY2tGaXJzdExpbmUgPSBjb2RlQmxvY2tGaXJzdExpbmVzW2tleV07XG4gICAgY29uc3QgY29kZUJsb2NrTGFuZyA9IHNlYXJjaFN0cmluZyhjb2RlQmxvY2tGaXJzdExpbmUsIFwiYGBgXCIpO1xuICAgIGNvbnN0IGhpZ2hsaWdodGVkTGluZXNQYXJhbXMgPSBzZWFyY2hTdHJpbmcoY29kZUJsb2NrRmlyc3RMaW5lLCBcIkhMOlwiKTtcbiAgICBjb25zdCBsaW5lc1RvSGlnaGxpZ2h0ID0gZ2V0SGlnaGxpZ2h0ZWRMaW5lcyhoaWdobGlnaHRlZExpbmVzUGFyYW1zKTtcbiAgICBjb25zdCBmaWxlTmFtZSA9IHNlYXJjaFN0cmluZyhjb2RlQmxvY2tGaXJzdExpbmUsIFwiZmlsZTpcIik7XG4gICAgY29uc3QgRm9sZCA9IHNlYXJjaFN0cmluZyhjb2RlQmxvY2tGaXJzdExpbmUsIFwiZm9sZFwiKTtcbiAgICBjb25zdCBsaW5lTnVtYmVyT2Zmc2V0ID0gMDsgLy9zZWFyY2hTdHJpbmcoY29kZUJsb2NrRmlyc3RMaW5lLCBcImxuOlwiKS8vVE9ETyAoQG1heXVyYW5rdikgU2V0IGxpbmUgbnVtYmVyIG9mZnNldCBoZXJlIC0gU2hvdWxkIGJlIGxuX3ZhbHVlIC0gMSBzaW5jZSBpdCBpcyBvZmZzZXQsIG5vdCBzdGFydGluZyBsaW5lIG51bWJlciAtIDAgaWYgdHJ1ZSBPUiBmYWxzZVxuICAgIGNvbnN0IHNob3dOdW1iZXJzID0gdHJ1ZTsgLy9UT0RPIChAbWF5dXJhbmt2KSBTZXQgc2hvd051bWJlcnMgdG8gYmUgdHJ1ZSBpZiBsbjo8bnVtYmVyPiBvciBsbjp0cnVlIG9yIGZhbHNlIGlmIGxuOmZhbHNlXG4gICAgY29uc3QgYWx0ZXJuYXRlQ29sb3JzID0gcGx1Z2luLnNldHRpbmdzLmFsdGVybmF0ZUNvbG9ycyB8fCBbXTtcbiAgICBsZXQgYWx0SEwgPSBbXTtcbiAgICBmb3IgKGNvbnN0IHsgbmFtZSwgXyB9IG9mIGFsdGVybmF0ZUNvbG9ycykge1xuICAgICAgY29uc3QgYWx0UGFyYW1zID0gc2VhcmNoU3RyaW5nKGNvZGVCbG9ja0ZpcnN0TGluZSwgYCR7bmFtZX06YCk7XG4gICAgICBhbHRITCA9IGFsdEhMLmNvbmNhdChnZXRIaWdobGlnaHRlZExpbmVzKGFsdFBhcmFtcykubWFwKChsaW5lTnVtYmVyKSA9PiAoeyBuYW1lLCBsaW5lTnVtYmVyIH0pKSk7XG4gICAgfVxuXG4gICAgbGV0IGlzQ29kZUJsb2NrRXhjbHVkZWQgPSBmYWxzZTtcbiAgICBpc0NvZGVCbG9ja0V4Y2x1ZGVkID0gaXNFeGNsdWRlZChjb2RlQmxvY2tGaXJzdExpbmUsIHBsdWdpbi5zZXR0aW5ncy5FeGNsdWRlTGFuZ3MpO1xuXG4gICAgY29uc3QgY29kZUJsb2NrUHJlRWxlbWVudDogSFRNTFByZUVsZW1lbnQgfCBudWxsID0gY29kZUVsbS5wYXJlbnRFbGVtZW50O1xuICAgIGlmIChjb2RlQmxvY2tQcmVFbGVtZW50ID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFpc0NvZGVCbG9ja0V4Y2x1ZGVkKXtcbiAgICAgIGNvZGVCbG9ja1ByZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChgY29kZWJsb2NrLWN1c3RvbWl6ZXItcHJlYCk7XG4gICAgfVxuICAgIGNvbnN0IGNvZGVFbGVtZW50cyA9IGNvZGVCbG9ja1ByZUVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJjb2RlXCIpO1xuXG4gICAgQWRkSGVhZGVyQW5kSGlnaGxpZ2h0KGlzQ29kZUJsb2NrRXhjbHVkZWQsIGZpbGVOYW1lLCBjb2RlQmxvY2tQcmVFbGVtZW50LCBjb2RlQmxvY2tMYW5nLCBGb2xkLCBjb2RlRWxlbWVudHMsIHNob3dOdW1iZXJzLCBsaW5lTnVtYmVyT2Zmc2V0LCBsaW5lc1RvSGlnaGxpZ2h0LCBhbHRITCApO1xuXHR9KVxufS8vIFBERkV4cG9ydFxuIiwgImltcG9ydCB7IEFwcCwgUGx1Z2luU2V0dGluZ1RhYiwgU2V0dGluZywgTm90aWNlLCBUZXh0Q29tcG9uZW50LCBEcm9wZG93bkNvbXBvbmVudCwgU2xpZGVyQ29tcG9uZW50LCBUb2dnbGVDb21wb25lbnQsIEV4dHJhQnV0dG9uQ29tcG9uZW50IH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgUGlja3IgZnJvbSBcIkBzaW1vbndlcC9waWNrclwiO1xuaW1wb3J0IHsgQ29sb3JUcmFuc2xhdG9yIH0gZnJvbSBcImNvbG9ydHJhbnNsYXRvclwiO1xuXG5pbXBvcnQgQ29kZWJsb2NrQ3VzdG9taXplclBsdWdpbiBmcm9tIFwiLi9tYWluXCI7XG5pbXBvcnQgeyBnZXRDdXJyZW50TW9kZSB9IGZyb20gXCIuL1V0aWxzXCI7XG5pbXBvcnQgeyBDb2xvciwgQ1NTLCBIRVgsIERpc3BsYXksIENvZGVibG9ja0N1c3RvbWl6ZXJTZXR0aW5ncywgQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzLCBERUZBVUxUX1NFVFRJTkdTLCBORVdfVEhFTUVfREVGQVVMVCB9IGZyb20gJy4vU2V0dGluZ3MnO1xuXG5jb25zdCBESVNQTEFZX09QVElPTlM6IFJlY29yZDxzdHJpbmcsc3RyaW5nPiA9IHtcbiAgXCJub25lXCI6IFwiTmV2ZXJcIixcbiAgXCJ0aXRsZV9vbmx5XCI6IFwiVGl0bGUgT25seVwiLFxuICBcImFsd2F5c1wiOiBcIkFsd2F5c1wiLFxufVxuXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NUYWIgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcblx0cGx1Z2luOiBDb2RlYmxvY2tDdXN0b21pemVyUGx1Z2luO1xuICBwaWNrcnM6IFJlY29yZDxzdHJpbmcsUGlja3JSZXNldHRhYmxlPjtcbiAgZGlzYWJsZWFibGVDb21wb25lbnRzOiBSZWNvcmQ8c3RyaW5nLEFycmF5PFRvZ2dsZUNvbXBvbmVudCB8IFNsaWRlckNvbXBvbmVudCB8IFRleHRDb21wb25lbnQgfCBFeHRyYUJ1dHRvbkNvbXBvbmVudD4+XG5cblx0Y29uc3RydWN0b3IoYXBwOiBBcHAsIHBsdWdpbjogQ29kZWJsb2NrQ3VzdG9taXplclBsdWdpbikge1xuXHRcdHN1cGVyKGFwcCwgcGx1Z2luKTtcblx0XHR0aGlzLnBsdWdpbiA9IHBsdWdpbjtcbiAgICB0aGlzLnBpY2tycyA9IHt9XG4gICAgdGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHMgPSB7fTtcblx0fVxuXG4gIC8qKlxuXHQgKiAgQnVpbGRzIHRoZSBodG1sIHBhZ2UgdGhhdCBpcyBzaG93ZWQgaW4gdGhlIHNldHRpbmdzLlxuXHQgKi9cblx0ZGlzcGxheSgpIHtcbiAgICBjb25zdCB7Y29udGFpbmVyRWx9ID0gdGhpcztcbiAgICBjb250YWluZXJFbC5lbXB0eSgpO1xuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMicsIHt0ZXh0OiAnU2V0dGluZ3MgZm9yIHRoZSBDb2RlYmxvY2sgQ3VzdG9taXplciBQbHVnaW4uJ30pO1xuXG4gICAgdGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHMgPSB7XG4gICAgICAnbGluZU51bWJlcnMnOiBbXSxcbiAgICAgICdoZWFkZXJMYW5ndWFnZVRhZ3MnOiBbXSxcbiAgICAgICdoZWFkZXJMYW5ndWFnZUljb25zJzogW10sXG4gICAgICAnZWRpdG9yQWN0aXZlTGluZUhpZ2hsaWdodCc6IFtdLFxuICAgICAgJ2NvZGVibG9ja0FjdGl2ZUxpbmVIaWdobGlnaHQnOiBbXSxcbiAgICAgICdncmFkaWVudEhpZ2hsaWdodGluZyc6IFtdLFxuICAgIH07XG5cbiAgICAvLyA9PT09PT09PT09IEdlbmVyYWwgPT09PT09PT09PVxuXHRcdC8vY29udGFpbmVyRWwuY3JlYXRlRWwoJ2gzJywge3RleHQ6ICdHZW5lcmFsIFNldHRpbmdzJ30pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZSgnRXhjbHVkZSBMYW5ndWFnZXMnKVxuICAgICAgLnNldERlc2MoJ0RlZmluZSBsYW5ndWFnZXMgaW4gYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvbiB3aGljaCB0aGUgcGx1Z2luIHNob3VsZCBub3QgYXBwbHkuIFlvdSBjYW4gdXNlIGEgd2lsZGNhcmQgKCopIGVpdGhlciBhdCB0aGUgYmVnaW5uaW5nLCBvciBhdCB0aGUgZW5kLiBGb3IgZXhhbXBsZTogYWQtKiB3aWxsIGV4Y2x1ZGUgY29kZWJsb2NrcyB3aGVyZSB0aGUgbGFuZ3VhZ2Ugc3RhcnRzIHdpdGggYWQtIGUuZy46IGFkLWluZm8sIGFkLWVycm9yIGV0Yy4nKVxuICAgICAgLmFkZFRleHQodGV4dCA9PiB0ZXh0XG4gICAgICAgIC5zZXRQbGFjZWhvbGRlcignZS5nLiBkYXRhdmlldywgcHl0aG9uIGV0Yy4nKVxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZXhjbHVkZWRMYW5ncylcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmV4Y2x1ZGVkTGFuZ3MgPSB2YWx1ZTtcbiAgICAgICAgICAoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcbiAgICAgICAgfSkpO1xuXG4gICAgLy8gPT09PT09PT09PSBUaGVtZXMgPT09PT09PT09PVxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMycsIHt0ZXh0OiAnVGhlbWUgU2V0dGluZ3MnfSk7XG5cbiAgICBsZXQgdGhlbWVEcm9wZG93bjogRHJvcGRvd25Db21wb25lbnQ7XG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIlNlbGVjdCBUaGVtZVwiKVxuICAgICAgLmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4ge1xuICAgICAgICB0aGVtZURyb3Bkb3duID0gZHJvcGRvd247XG4gICAgICAgIHRoaXMudXBkYXRlRHJvcGRvd24odGhlbWVEcm9wZG93bix0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XG4gICAgICAgIHRoZW1lRHJvcGRvd24ub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZSA9IHZhbHVlO1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZSA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy50aGVtZXNbdGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZV0pXG4gICAgICAgICAgdGhpcy51cGRhdGVQaWNrckNvbG9ycygpO1xuICAgICAgICAgIHRoaXMudXBkYXRlQWx0ZXJuYXRpdmVIaWdobGlnaHRzKGFsdGVybmF0aXZlSGlnaGxpZ2h0c0NvbnRhaW5lcik7XG4gICAgICAgICAgKGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG4gICAgICAgIH0pO1xuICAgICAgICA7XG4gICAgICB9KVxuICAgICAgLmFkZEV4dHJhQnV0dG9uKGJ1dHRvbiA9PiB7XG4gICAgICAgIGJ1dHRvbi5zZXRUb29sdGlwKFwiVXBkYXRlIHRoZW1lXCIpO1xuICAgICAgICBidXR0b24uc2V0SWNvbignYXJyb3ctdXAnKTtcbiAgICAgICAgYnV0dG9uLm9uQ2xpY2soKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lIGluIERFRkFVTFRfU0VUVElOR1MudGhlbWVzKVxuICAgICAgICAgICAgbmV3IE5vdGljZSgnWW91IGNhbm5vdCB1cGRhdGUgdGhlIGRlZmF1bHQgdGhlbWVzJyk7IC8vTk9TT05BUlxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MudGhlbWVzW3RoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWVdID0gc3RydWN0dXJlZENsb25lKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUFsdGVybmF0aXZlSGlnaGxpZ2h0cyhhbHRlcm5hdGl2ZUhpZ2hsaWdodHNDb250YWluZXIpO1xuICAgICAgICAgICAgbmV3IE5vdGljZShgJHt0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lfSB0aGVtZSBzYXZlZCBzdWNjZXNzZnVsbHkhYCk7IC8vTk9TT05BUlxuICAgICAgICAgICAgKGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAuYWRkRXh0cmFCdXR0b24oYnV0dG9uID0+IHtcbiAgICAgICAgYnV0dG9uLnNldFRvb2x0aXAoXCJEZWxldGUgdGhlbWVcIik7XG4gICAgICAgIGJ1dHRvbi5zZXRJY29uKCd0cmFzaCcpO1xuICAgICAgICBidXR0b24ub25DbGljaygoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWUudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgbmV3IE5vdGljZSgnU2VsZWN0IGEgdGhlbWUgZmlyc3QgdG8gZGVsZXRlJyk7IC8vTk9TT05BUlxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3VGhlbWUubmFtZSBpbiBERUZBVUxUX1NFVFRJTkdTLnRoZW1lcykge1xuICAgICAgICAgICAgbmV3IE5vdGljZSgnWW91IGNhbm5vdCBkZWxldGUgdGhlIGRlZmF1bHQgdGhlbWVzJyk7IC8vTk9TT05BUlxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wbHVnaW4uc2V0dGluZ3MuZGVmYXVsdFRoZW1lID09PSB0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lKVxuICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5kZWZhdWx0VGhlbWUgPSAnRGVmYXVsdCc7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5wbHVnaW4uc2V0dGluZ3MudGhlbWVzW3RoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWVdXG4gICAgICAgICAgICBuZXcgTm90aWNlKGAke3RoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWV9IHRoZW1lIGRlbGV0ZWQgc3VjY2Vzc2Z1bGx5IWApOyAvL05PU09OQVJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWUgPSBcIkRlZmF1bHRcIjtcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZSA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy50aGVtZXNbdGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZV0pXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZURyb3Bkb3duKHRoZW1lRHJvcGRvd24sdGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQaWNrckNvbG9ycygpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVBbHRlcm5hdGl2ZUhpZ2hsaWdodHMoYWx0ZXJuYXRpdmVIaWdobGlnaHRzQ29udGFpbmVyKTtcbiAgICAgICAgICAgIChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICBsZXQgbmV3VGhlbWVOYW1lOiBUZXh0Q29tcG9uZW50O1xuICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLm5ld1RoZW1lID0gTkVXX1RIRU1FX0RFRkFVTFRcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdBZGQgTmV3IFRoZW1lJylcbiAgICAgIC5zZXREZXNjKCdDcmVhdGUgYSBuZXcgdGhlbWUgZnJvbSB0aGUgY3VycmVudCBzZXR0aW5ncy4nKVxuICAgICAgLmFkZFRleHQodGV4dCA9PiB7bmV3VGhlbWVOYW1lID0gdGV4dFxuICAgICAgICAuc2V0UGxhY2Vob2xkZXIoJ05ldyB0aGVtZSBuYW1lJylcbiAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLm5ld1RoZW1lLm5hbWUpXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdUaGVtZS5uYW1lID0gdmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHtyZXR1cm4gdG9nZ2xlXG4gICAgICAgIC5zZXRUb29sdGlwKFwiU2F2ZSBhcyB0aGUgZGVmYXVsdCB0aGVtZVwiKVxuICAgICAgICAuc2V0VmFsdWUoZmFsc2UpXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdUaGVtZS5kZWZhdWx0ID0gdmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgfSkgIFxuICAgICAgLmFkZEV4dHJhQnV0dG9uKGJ1dHRvbiA9PiB7XG4gICAgICAgIGJ1dHRvbi5zZXRUb29sdGlwKFwiU2F2ZSB0aGVtZVwiKTtcbiAgICAgICAgYnV0dG9uLnNldEljb24oJ3BsdXMnKTtcbiAgICAgICAgYnV0dG9uLm9uQ2xpY2soKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3VGhlbWUubmFtZS50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgbmV3IE5vdGljZSgnU2V0IGEgbmFtZSBmb3IgeW91ciB0aGVtZScpOyAvL05PU09OQVJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdUaGVtZS5uYW1lIGluIERFRkFVTFRfU0VUVElOR1MudGhlbWVzKSB7XG4gICAgICAgICAgbmV3IE5vdGljZSgnWW91IGNhblxcJ3Qgb3ZlcndyaXRlIHRoZSBkZWZhdWx0IHRoZW1lcycpOyAvL05PU09OQVJcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3VGhlbWUubmFtZSBpbiB0aGlzLnBsdWdpbi5zZXR0aW5ncy50aGVtZXMpIHtcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lc1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdUaGVtZS5uYW1lXSA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUpO1xuICAgICAgICAgICAgbmV3IE5vdGljZShgJHt0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdUaGVtZS5uYW1lfSB0aGVtZSB1cGRhdGVkIHN1Y2Nlc3NmdWxseSFgKTsgLy9OT1NPTkFSXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lc1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdUaGVtZS5uYW1lXSA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUpO1xuICAgICAgICAgICAgbmV3IE5vdGljZShgJHt0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdUaGVtZS5uYW1lfSB0aGVtZSBzYXZlZCBzdWNjZXNzZnVsbHkhYCk7IC8vTk9TT05BUlxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3VGhlbWUubmFtZTtcbiAgICAgICAgICBpZiAodGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3VGhlbWUuZGVmYXVsdClcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmRlZmF1bHRUaGVtZSA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWU7XG4gICAgICAgICAgdGhpcy51cGRhdGVEcm9wZG93bih0aGVtZURyb3Bkb3duLHRoaXMucGx1Z2luLnNldHRpbmdzKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUFsdGVybmF0aXZlSGlnaGxpZ2h0cyhhbHRlcm5hdGl2ZUhpZ2hsaWdodHNDb250YWluZXIpO1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLm5ld1RoZW1lID0gTkVXX1RIRU1FX0RFRkFVTFQ7XG4gICAgICAgICAgbmV3VGhlbWVOYW1lLnNldFZhbHVlKFwiXCIpO1xuICAgICAgICAgIChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDQnLCB7dGV4dDogJ0NvZGVibG9jayBBcHBlYXJhbmNlJ30pO1xuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoJ0NvZGVibG9jayBCYWNrZ3JvdW5kIENvbG9yJylcbiAgICAgIC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcbiAgICAgICAgdGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcbiAgICAgICAgJ2NvZGVibG9ja19iYWNrZ3JvdW5kJyxcbiAgICAgICAgKHJlbGV2YW50VGhlbWVDb2xvcnM6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZUNvbG9ycykgPT4gcmVsZXZhbnRUaGVtZUNvbG9yc1tnZXRDdXJyZW50TW9kZSgpXS5jb2RlYmxvY2suYmFja2dyb3VuZENvbG9yLFxuICAgICAgICAocmVsZXZhbnRUaGVtZUNvbG9yczogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzLCBzYXZlQ29sb3I6IENvbG9yKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG9yc1tnZXRDdXJyZW50TW9kZSgpXS5jb2RlYmxvY2suYmFja2dyb3VuZENvbG9yID0gc2F2ZUNvbG9yfSxcbiAgICAgICl9KTtcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdDb2RlYmxvY2sgVGV4dCBDb2xvcicpXG4gICAgICAudGhlbigoc2V0dGluZykgPT4ge3RoaXMuY3JlYXRlUGlja3IoXG4gICAgICAgIHRoaXMucGx1Z2luLGNvbnRhaW5lckVsLHNldHRpbmcsXG4gICAgICAgICdjb2RlYmxvY2tfdGV4dCcsXG4gICAgICAgIChyZWxldmFudFRoZW1lQ29sb3JzOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVDb2xvcnMpID0+IHJlbGV2YW50VGhlbWVDb2xvcnNbZ2V0Q3VycmVudE1vZGUoKV0uY29kZWJsb2NrLnRleHRDb2xvcixcbiAgICAgICAgKHJlbGV2YW50VGhlbWVDb2xvcnM6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZUNvbG9ycywgc2F2ZUNvbG9yOiBDb2xvcikgPT4ge3JlbGV2YW50VGhlbWVDb2xvcnNbZ2V0Q3VycmVudE1vZGUoKV0uY29kZWJsb2NrLnRleHRDb2xvciA9IHNhdmVDb2xvcn0sXG4gICAgICApfSk7XG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZSgnQ29kZWJsb2NrIEN1cnZhdHVyZScpXG4gICAgICAuc2V0RGVzYygnRGV0ZXJtaW5lcyBob3cgcm91bmRlZCB0aGUgY29kZWJsb2NrcyBhcHBlYXIgaW4gcGl4ZWxzLicpXG4gICAgICAudGhlbigoc2V0dGluZykgPT4ge1xuICAgICAgICBsZXQgcmVzZXR0YWJsZVNsaWRlcjogU2xpZGVyQ29tcG9uZW50O1xuICAgICAgICBzZXR0aW5nLmFkZFNsaWRlcigoc2xpZGVyKSA9PiB7XG4gICAgICAgICAgcmVzZXR0YWJsZVNsaWRlciA9IHNsaWRlclxuICAgICAgICAgICAgLnNldExpbWl0cygwLDI1LDEpXG4gICAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmNvZGVibG9jay5jdXJ2YXR1cmUpXG4gICAgICAgICAgICAuc2V0RHluYW1pY1Rvb2x0aXAoKVxuICAgICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuY29kZWJsb2NrLmN1cnZhdHVyZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTsgICAgXG4gICAgICAgICAgICB9KX0pO1xuICAgICAgICBzZXR0aW5nLmFkZEV4dHJhQnV0dG9uKChidXR0b24pID0+IHtidXR0b25cbiAgICAgICAgICAuc2V0SWNvbihcInJlc2V0XCIpXG4gICAgICAgICAgLm9uQ2xpY2soKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmNvZGVibG9jay5jdXJ2YXR1cmUgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy50aGVtZXNbdGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZV0uc2V0dGluZ3MuY29kZWJsb2NrLmN1cnZhdHVyZTtcbiAgICAgICAgICAgIHJlc2V0dGFibGVTbGlkZXIuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmNvZGVibG9jay5jdXJ2YXR1cmUpO1xuICAgICAgICAgICAgKGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuc2V0VG9vbHRpcCgnUmVzdG9yZSBkZWZhdWx0IGljb24gc2l6ZScpO1xuICAgICAgICB9KVxuICAgICAgfSlcbiAgICAgIFxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoNCcsIHt0ZXh0OiAnR3V0dGVyIEFwcGVhcmFuY2UnfSk7XG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZSgnRW5hYmxlIExpbmUgTnVtYmVycycpXG4gICAgICAuc2V0RGVzYygnSWYgZGlzYWJsZWQsIHRoZSBiZWxvdyBzZXR0aW5ncyBhcmUgZGlzYWJsZWQgdG9vLicpXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGVcbiAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5jb2RlYmxvY2subGluZU51bWJlcnMpXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuY29kZWJsb2NrLmxpbmVOdW1iZXJzID0gdmFsdWU7XG4gICAgICAgICAgdGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2xpbmVOdW1iZXJzJ10uZm9yRWFjaChjb21wb25lbnQgPT4ge2NvbXBvbmVudC5zZXREaXNhYmxlZCghdmFsdWUpfSk7XG4gICAgICAgICAgKGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7ICAgICAgICAgXG4gICAgICAgIH0pKTtcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdHdXR0ZXIgQmFja2dyb3VuZCBDb2xvcicpXG4gICAgICAudGhlbigoc2V0dGluZykgPT4ge3RoaXMuY3JlYXRlUGlja3IoXG4gICAgICAgIHRoaXMucGx1Z2luLGNvbnRhaW5lckVsLHNldHRpbmcsXG4gICAgICAgICdndXR0ZXJfYmFja2dyb3VuZCcsXG4gICAgICAgIChyZWxldmFudFRoZW1lQ29sb3JzOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVDb2xvcnMpID0+IHJlbGV2YW50VGhlbWVDb2xvcnNbZ2V0Q3VycmVudE1vZGUoKV0uZ3V0dGVyLmJhY2tncm91bmRDb2xvcixcbiAgICAgICAgKHJlbGV2YW50VGhlbWVDb2xvcnM6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZUNvbG9ycywgc2F2ZUNvbG9yOiBDb2xvcikgPT4ge3JlbGV2YW50VGhlbWVDb2xvcnNbZ2V0Q3VycmVudE1vZGUoKV0uZ3V0dGVyLmJhY2tncm91bmRDb2xvciA9IHNhdmVDb2xvcn0sXG4gICAgICAgICgpID0+ICF0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuY29kZWJsb2NrLmxpbmVOdW1iZXJzLFxuICAgICAgICApfSk7XG4gICAgICB0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snbGluZU51bWJlcnMnXS5wdXNoKHRoaXMucGlja3JzWydndXR0ZXJfYmFja2dyb3VuZCddLnJlc2V0QnV0dG9uKTtcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdMaW5lIE51bWJlciBDb2xvcicpXG4gICAgICAudGhlbigoc2V0dGluZykgPT4ge3RoaXMuY3JlYXRlUGlja3IoXG4gICAgICAgIHRoaXMucGx1Z2luLGNvbnRhaW5lckVsLHNldHRpbmcsXG4gICAgICAgICdsaW5lX251bWJlcicsXG4gICAgICAgIChyZWxldmFudFRoZW1lQ29sb3JzOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVDb2xvcnMpID0+IHJlbGV2YW50VGhlbWVDb2xvcnNbZ2V0Q3VycmVudE1vZGUoKV0uZ3V0dGVyLnRleHRDb2xvcixcbiAgICAgICAgKHJlbGV2YW50VGhlbWVDb2xvcnM6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZUNvbG9ycywgc2F2ZUNvbG9yOiBDb2xvcikgPT4ge3JlbGV2YW50VGhlbWVDb2xvcnNbZ2V0Q3VycmVudE1vZGUoKV0uZ3V0dGVyLnRleHRDb2xvciA9IHNhdmVDb2xvcn0sXG4gICAgICAgICgpID0+ICF0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuY29kZWJsb2NrLmxpbmVOdW1iZXJzLFxuICAgICAgICApfSk7XG4gICAgICB0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snbGluZU51bWJlcnMnXS5wdXNoKHRoaXMucGlja3JzWydsaW5lX251bWJlciddLnJlc2V0QnV0dG9uKTtcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdIaWdobGlnaHQgTGluZSBOdW1iZXJzJylcbiAgICAgIC5zZXREZXNjKCdJZiBlbmFibGVkLCBoaWdobGlnaHRzIHdpbGwgYWxzbyBoaWdobGlnaHQgdGhlIGxpbmUgbnVtYmVycy4nKVxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4ge2xldCBoaWdobGlnaHRMaW5lTnVtYmVyc1RvZ2dsZSA9IHRvZ2dsZVxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmd1dHRlci5oaWdobGlnaHQpXG4gICAgICAgIC5zZXREaXNhYmxlZCghdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmNvZGVibG9jay5saW5lTnVtYmVycylcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5ndXR0ZXIuaGlnaGxpZ2h0ID0gdmFsdWU7XG4gICAgICAgICAgKGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydsaW5lTnVtYmVycyddLnB1c2goaGlnaGxpZ2h0TGluZU51bWJlcnNUb2dnbGUpO1xuICAgICAgfSk7XG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2g0Jywge3RleHQ6ICdIZWFkZXIgQXBwZWFyYW5jZSd9KTtcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdIZWFkZXIgQmFja2dyb3VuZCBDb2xvcicpXG4gICAgICAudGhlbigoc2V0dGluZykgPT4ge3RoaXMuY3JlYXRlUGlja3IoXG4gICAgICAgIHRoaXMucGx1Z2luLGNvbnRhaW5lckVsLHNldHRpbmcsXG4gICAgICAgICdoZWFkZXJfYmFja2dyb3VuZCcsXG4gICAgICAgIChyZWxldmFudFRoZW1lQ29sb3JzOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVDb2xvcnMpID0+IHJlbGV2YW50VGhlbWVDb2xvcnNbZ2V0Q3VycmVudE1vZGUoKV0uaGVhZGVyLmJhY2tncm91bmRDb2xvcixcbiAgICAgICAgKHJlbGV2YW50VGhlbWVDb2xvcnM6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZUNvbG9ycywgc2F2ZUNvbG9yOiBDb2xvcikgPT4ge3JlbGV2YW50VGhlbWVDb2xvcnNbZ2V0Q3VycmVudE1vZGUoKV0uaGVhZGVyLmJhY2tncm91bmRDb2xvciA9IHNhdmVDb2xvcn0sXG4gICAgICApfSk7XG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZSgnSGVhZGVyIFRpdGxlIFRleHQgU3R5bGluZycpXG4gICAgICAuc2V0RGVzYygnU3R5bGUgdGhlIGhlYWRlciB0aXRsZSB0ZXh0IHVzaW5nIGJvbGQgYW5kIGl0YWxpYyB0b2dnbGVzLCBieSBzZXR0aW5nIGEgZm9udCBvciBieSBzZXR0aW5nIGEgdGV4dCBjb2xvci4nKVxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4ge3RvZ2dsZVxuICAgICAgICAuc2V0VG9vbHRpcChcIlRvZ2dsZSBib2xkIHRpdGxlIHRleHRcIilcbiAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIudGl0bGUudGV4dEJvbGQpXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLnRpdGxlLnRleHRCb2xkID0gdmFsdWU7XG4gICAgICAgICAgKGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHt0b2dnbGVcbiAgICAgICAgLnNldFRvb2x0aXAoXCJUb2dnbGUgaXRhbGljIHRpdGxlIHRleHRcIilcbiAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIudGl0bGUudGV4dEl0YWxpYylcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIudGl0bGUudGV4dEl0YWxpYyA9IHZhbHVlO1xuICAgICAgICAgIChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAuYWRkVGV4dCh0ZXh0ID0+IHt0ZXh0XG4gICAgICAgIC5zZXRQbGFjZWhvbGRlcignRm9udCcpXG4gICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLnRpdGxlLnRleHRGb250KVxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci50aXRsZS50ZXh0Rm9udCA9IHZhbHVlO1xuICAgICAgICAgIChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAudGhlbigoc2V0dGluZykgPT4ge3RoaXMuY3JlYXRlUGlja3IoXG4gICAgICAgIHRoaXMucGx1Z2luLGNvbnRhaW5lckVsLHNldHRpbmcsXG4gICAgICAgICdoZWFkZXJfdGl0bGVfdGV4dCcsXG4gICAgICAgIChyZWxldmFudFRoZW1lQ29sb3JzOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVDb2xvcnMpID0+IHJlbGV2YW50VGhlbWVDb2xvcnNbZ2V0Q3VycmVudE1vZGUoKV0uaGVhZGVyLnRpdGxlLnRleHRDb2xvcixcbiAgICAgICAgKHJlbGV2YW50VGhlbWVDb2xvcnM6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZUNvbG9ycywgc2F2ZUNvbG9yOiBDb2xvcikgPT4ge3JlbGV2YW50VGhlbWVDb2xvcnNbZ2V0Q3VycmVudE1vZGUoKV0uaGVhZGVyLnRpdGxlLnRleHRDb2xvciA9IHNhdmVDb2xvcn0sXG4gICAgICApfSk7XG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZSgnQ29sbGFwc2UgUGxhY2Vob2xkZXIgVGV4dCcpXG4gICAgICAuc2V0RGVzYygnVGl0bGUgcGxhY2Vob2xkZXIgdGV4dCBmb3IgY29sbGFwc2VkIGNvZGUgd2hlbiBubyB0aXRsZSBwYXJhbWV0ZXIgaXMgc2V0LicpXG4gICAgICAuYWRkVGV4dCh0ZXh0ID0+IHRleHRcbiAgICAgICAgLnNldFBsYWNlaG9sZGVyKCdDb2xsYXBzZWQgQ29kZScpXG4gICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmNvbGxhcHNlUGxhY2Vob2xkZXIpXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmNvbGxhcHNlUGxhY2Vob2xkZXIgPSB2YWx1ZTtcbiAgICAgICAgICAoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcbiAgICAgICAgfSkpO1xuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoJ0hlYWRlciBTZXBhcmF0b3IgQ29sb3InKVxuICAgICAgLnNldERlc2MoJ0NvbG9yIG9mIHRoZSBsaW5lIHNlcGFyYXRpbmcgdGhlIGNvZGVibG9jayBoZWFkZXIgYW5kIHRoZSBjb2RlYmxvY2suJylcbiAgICAgIC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcbiAgICAgICAgdGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcbiAgICAgICAgJ2hlYWRlcl9zZXBhcmF0b3InLFxuICAgICAgICAocmVsZXZhbnRUaGVtZUNvbG9yczogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzKSA9PiByZWxldmFudFRoZW1lQ29sb3JzW2dldEN1cnJlbnRNb2RlKCldLmhlYWRlci5saW5lQ29sb3IsXG4gICAgICAgIChyZWxldmFudFRoZW1lQ29sb3JzOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVDb2xvcnMsIHNhdmVDb2xvcjogQ29sb3IpID0+IHtyZWxldmFudFRoZW1lQ29sb3JzW2dldEN1cnJlbnRNb2RlKCldLmhlYWRlci5saW5lQ29sb3IgPSBzYXZlQ29sb3J9LFxuICAgICAgKX0pO1xuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoNScsIHt0ZXh0OiAnSGVhZGVyIExhbmd1YWdlIFRhZyBBcHBlYXJhbmNlJ30pO1xuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoJ0Rpc3BsYXkgSGVhZGVyIExhbmd1YWdlIFRhZ3MnKVxuICAgICAgLnNldERlc2MoJ0RldGVybWluZSB3aGVuIHRvIHNob3cgbGFuZ3VhZ2UgdGFncyBpbiB0aGUgaGVhZGVyLiBcIlRpdGxlIE9ubHlcIiB3aWxsIG9ubHkgc2hvdyBsYW5ndWFnZSB0YWdzIHdoZW4gdGhlIHRpdGxlIHBhcmFtZXRlciBpcyBzZXQuIElmIHNldCB0byBcIk5vbmVcIiwgdGhlIGJlbG93IHNldHRpbmdzIGFyZSBkaXNhYmxlZCB0b28uJylcbiAgICAgIC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IGRyb3Bkb3duXG4gICAgICAgIC5hZGRPcHRpb25zKERJU1BMQVlfT1BUSU9OUylcbiAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcuZGlzcGxheSlcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZTogRGlzcGxheSkgPT4ge1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcuZGlzcGxheSA9IHZhbHVlO1xuICAgICAgICAgIHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydoZWFkZXJMYW5ndWFnZVRhZ3MnXS5mb3JFYWNoKGNvbXBvbmVudCA9PiB7Y29tcG9uZW50LnNldERpc2FibGVkKHZhbHVlPT09XCJub25lXCIpfSk7XG4gICAgICAgICAgKGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG4gICAgICAgIH0pKTtcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdIZWFkZXIgTGFuZ3VhZ2UgVGFnIEJhY2tncm91bmQgQ29sb3InKVxuICAgICAgLnRoZW4oKHNldHRpbmcpID0+IHt0aGlzLmNyZWF0ZVBpY2tyKFxuICAgICAgICB0aGlzLnBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLFxuICAgICAgICAnaGVhZGVyX2xhbmd1YWdlX3RhZ19iYWNrZ3JvdW5kJyxcbiAgICAgICAgKHJlbGV2YW50VGhlbWVDb2xvcnM6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZUNvbG9ycykgPT4gcmVsZXZhbnRUaGVtZUNvbG9yc1tnZXRDdXJyZW50TW9kZSgpXS5oZWFkZXIubGFuZ3VhZ2VUYWcuYmFja2dyb3VuZENvbG9yLFxuICAgICAgICAocmVsZXZhbnRUaGVtZUNvbG9yczogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzLCBzYXZlQ29sb3I6IENvbG9yKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG9yc1tnZXRDdXJyZW50TW9kZSgpXS5oZWFkZXIubGFuZ3VhZ2VUYWcuYmFja2dyb3VuZENvbG9yID0gc2F2ZUNvbG9yfSxcbiAgICAgICAgKCkgPT4gdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy5kaXNwbGF5ID09PSAnbm9uZScsXG4gICAgICApfSk7XG4gICAgICB0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snaGVhZGVyTGFuZ3VhZ2VUYWdzJ10ucHVzaCh0aGlzLnBpY2tyc1snaGVhZGVyX2xhbmd1YWdlX3RhZ19iYWNrZ3JvdW5kJ10ucmVzZXRCdXR0b24pO1xuICAgIGxldCBsYW5ndWFnZVRhZ3NCb2xkVG9nZ2xlOiBUb2dnbGVDb21wb25lbnQ7XG4gICAgbGV0IGxhbmd1YWdlVGFnc0l0YWxpY1RvZ2dsZTogVG9nZ2xlQ29tcG9uZW50O1xuICAgIGxldCBsYW5ndWFnZUljb25zRm9udFRleHQ6IFRleHRDb21wb25lbnQ7XG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZSgnSGVhZGVyIExhbmd1YWdlIFRhZyBUZXh0IFN0eWxpbmcnKVxuICAgICAgLnNldERlc2MoJ1N0eWxlIHRoZSBoZWFkZXIgbGFuZ3VhZ2UgdGFnIHRleHQgdXNpbmcgYm9sZCBhbmQgaXRhbGljIHRvZ2dsZXMsIGJ5IHNldHRpbmcgYSBmb250IG9yIGJ5IHNldHRpbmcgYSB0ZXh0IGNvbG9yLicpXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB7bGFuZ3VhZ2VUYWdzQm9sZFRvZ2dsZSA9IHRvZ2dsZVxuICAgICAgICAuc2V0VG9vbHRpcChcIlRvZ2dsZSBib2xkIGxhbmd1YWdlIHRhZyB0ZXh0XCIpXG4gICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLnRleHRCb2xkKVxuICAgICAgICAuc2V0RGlzYWJsZWQodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy5kaXNwbGF5PT09XCJub25lXCIpXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLnRleHRCb2xkID0gdmFsdWU7XG4gICAgICAgICAgKGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snaGVhZGVyTGFuZ3VhZ2VUYWdzJ10ucHVzaChsYW5ndWFnZVRhZ3NCb2xkVG9nZ2xlKTtcbiAgICAgIH0pXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB7bGFuZ3VhZ2VUYWdzSXRhbGljVG9nZ2xlID0gdG9nZ2xlXG4gICAgICAgIC5zZXRUb29sdGlwKFwiVG9nZ2xlIGl0YWxpYyBsYW5ndWFnZSB0YWcgdGV4dFwiKVxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy50ZXh0SXRhbGljKVxuICAgICAgICAuc2V0RGlzYWJsZWQodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy5kaXNwbGF5PT09XCJub25lXCIpXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLnRleHRJdGFsaWMgPSB2YWx1ZTtcbiAgICAgICAgICAoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydoZWFkZXJMYW5ndWFnZVRhZ3MnXS5wdXNoKGxhbmd1YWdlVGFnc0l0YWxpY1RvZ2dsZSk7XG4gICAgICB9KVxuICAgICAgLmFkZFRleHQodGV4dCA9PiB7bGFuZ3VhZ2VJY29uc0ZvbnRUZXh0ID0gdGV4dFxuICAgICAgICAuc2V0UGxhY2Vob2xkZXIoJ0ZvbnQnKVxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy50ZXh0Rm9udClcbiAgICAgICAgLnNldERpc2FibGVkKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcuZGlzcGxheT09PVwibm9uZVwiKVxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy50ZXh0Rm9udCA9IHZhbHVlO1xuICAgICAgICAgIChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2hlYWRlckxhbmd1YWdlVGFncyddLnB1c2gobGFuZ3VhZ2VJY29uc0ZvbnRUZXh0KTtcbiAgICAgIH0pXG4gICAgICAudGhlbigoc2V0dGluZykgPT4ge3RoaXMuY3JlYXRlUGlja3IoXG4gICAgICAgIHRoaXMucGx1Z2luLGNvbnRhaW5lckVsLHNldHRpbmcsXG4gICAgICAgICdoZWFkZXJfbGFuZ3VhZ2VfdGFnX3RleHQnLFxuICAgICAgICAocmVsZXZhbnRUaGVtZUNvbG9yczogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzKSA9PiByZWxldmFudFRoZW1lQ29sb3JzW2dldEN1cnJlbnRNb2RlKCldLmhlYWRlci5sYW5ndWFnZVRhZy50ZXh0Q29sb3IsXG4gICAgICAgIChyZWxldmFudFRoZW1lQ29sb3JzOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVDb2xvcnMsIHNhdmVDb2xvcjogQ29sb3IpID0+IHtyZWxldmFudFRoZW1lQ29sb3JzW2dldEN1cnJlbnRNb2RlKCldLmhlYWRlci5sYW5ndWFnZVRhZy50ZXh0Q29sb3IgPSBzYXZlQ29sb3J9LFxuICAgICAgICAoKSA9PiB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLmRpc3BsYXkgPT09ICdub25lJyxcbiAgICAgICl9KTtcbiAgICAgIHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydoZWFkZXJMYW5ndWFnZVRhZ3MnXS5wdXNoKHRoaXMucGlja3JzWydoZWFkZXJfbGFuZ3VhZ2VfdGFnX3RleHQnXS5yZXNldEJ1dHRvbik7XG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2g1Jywge3RleHQ6ICdIZWFkZXIgTGFuZ3VhZ2UgSWNvbiBBcHBlYXJhbmNlJ30pO1xuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoJ0Rpc3BsYXkgTGFuZ3VhZ2UgSWNvbnMnKVxuICAgICAgLnNldERlc2MoJ0RldGVybWluZSB3aGVuIHRvIHNob3cgbGFuZ3VhZ2UgaWNvbnMgd2hlcmUgYXZhaWxhYmxlLiBcIlRpdGxlIE9ubHlcIiB3aWxsIG9ubHkgc2hvdyBsYW5ndWFnZSB0YWdzIHdoZW4gdGhlIHRpdGxlIHBhcmFtZXRlciBpcyBzZXQuIElmIHNldCB0byBcIk5vbmVcIiwgdGhlIGJlbG93IHNldHRpbmdzIGFyZSBkaXNhYmxlZCB0b28uJylcbiAgICAgIC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IGRyb3Bkb3duXG4gICAgICAgIC5hZGRPcHRpb25zKERJU1BMQVlfT1BUSU9OUylcbiAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VJY29uLmRpc3BsYXkpXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWU6IERpc3BsYXkpID0+IHtcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlSWNvbi5kaXNwbGF5ID0gdmFsdWU7XG4gICAgICAgICAgdGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2hlYWRlckxhbmd1YWdlSWNvbnMnXS5mb3JFYWNoKGNvbXBvbmVudCA9PiB7Y29tcG9uZW50LnNldERpc2FibGVkKHZhbHVlPT09XCJub25lXCIpfSk7XG4gICAgICAgICAgKGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG4gICAgICAgIH0pKTtcbiAgICBsZXQgbGFuZ3VhZ2VJY29uc0NvbG9yZWRUb2dnbGU6IFRvZ2dsZUNvbXBvbmVudDtcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdMYW5ndWFnZSBJY29ucyBDb2xvcmVkJylcbiAgICAgIC5zZXREZXNjKCdJZiBkaXNhYmxlZCwgbGFuZ3VhZ2UgaWNvbnMgd2lsbCBiZSBibGFjayBhbmQgd2hpdGUuJylcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHtsYW5ndWFnZUljb25zQ29sb3JlZFRvZ2dsZSA9IHRvZ2dsZVxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZUljb24uZGlzcGxheUNvbG9yKVxuICAgICAgICAuc2V0RGlzYWJsZWQodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZUljb24uZGlzcGxheT09PVwibm9uZVwiKVxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZUljb24uZGlzcGxheUNvbG9yID0gdmFsdWU7XG4gICAgICAgICAgKGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydoZWFkZXJMYW5ndWFnZUljb25zJ10ucHVzaChsYW5ndWFnZUljb25zQ29sb3JlZFRvZ2dsZSk7XG4gICAgICB9KTtcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdMYW5ndWFnZSBJY29uIFNpemUnKVxuICAgICAgLnNldERlc2MoJ1NldCB0aGUgc2l6ZSBvZiB0aGUgZGlzcGxheWVkIGxhbmd1YWdlIGljb25zLicpXG4gICAgICAudGhlbigoc2V0dGluZykgPT4ge1xuICAgICAgICBsZXQgcmVzZXR0YWJsZVNsaWRlcjogU2xpZGVyQ29tcG9uZW50O1xuICAgICAgICBzZXR0aW5nLmFkZFNsaWRlcigoc2xpZGVyKSA9PiB7cmVzZXR0YWJsZVNsaWRlciA9IHNsaWRlclxuICAgICAgICAgIC5zZXRMaW1pdHMoMTAsNDAsMSlcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmljb25TaXplKVxuICAgICAgICAgIC5zZXREaXNhYmxlZCh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlSWNvbi5kaXNwbGF5PT09XCJub25lXCIpXG4gICAgICAgICAgLnNldER5bmFtaWNUb29sdGlwKClcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQuaWNvblNpemUgPSB2YWx1ZTtcbiAgICAgICAgICAgIChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpOyAgICBcbiAgICAgICAgICB9KVxuICAgICAgICAgIHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydoZWFkZXJMYW5ndWFnZUljb25zJ10ucHVzaChyZXNldHRhYmxlU2xpZGVyKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGxldCByZXNldEJ1dHRvbjogRXh0cmFCdXR0b25Db21wb25lbnQ7XG4gICAgICAgIHNldHRpbmcuYWRkRXh0cmFCdXR0b24oKGJ1dHRvbikgPT4ge3Jlc2V0QnV0dG9uID0gYnV0dG9uXG4gICAgICAgICAgLnNldEljb24oXCJyZXNldFwiKVxuICAgICAgICAgIC5zZXREaXNhYmxlZCh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlSWNvbi5kaXNwbGF5PT09XCJub25lXCIpXG4gICAgICAgICAgLm9uQ2xpY2soKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmljb25TaXplID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudGhlbWVzW3RoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWVdLnNldHRpbmdzLmFkdmFuY2VkLmljb25TaXplO1xuICAgICAgICAgICAgcmVzZXR0YWJsZVNsaWRlci5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQuaWNvblNpemUpO1xuICAgICAgICAgICAgKGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuc2V0VG9vbHRpcCgnUmVzdG9yZSBkZWZhdWx0IGljb24gc2l6ZScpO1xuICAgICAgICAgIHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydoZWFkZXJMYW5ndWFnZUljb25zJ10ucHVzaChyZXNldEJ1dHRvbik7XG4gICAgICAgIH0pXG4gICAgICB9KVxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoNCcsIHt0ZXh0OiAnSGlnaGxpZ2h0aW5nIEFwcGVhcmFuY2UnfSk7XG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZSgnRWRpdG9yIEFjdGl2ZSBMaW5lIEhpZ2hsaWdodCcpXG4gICAgICAuc2V0RGVzYygnSWYgZW5hYmxlZCwgaGlnaGxpZ2h0cyB0aGUgYWN0aXZlIGxpbmUgb3V0c2lkZSBjb2RlYmxvY2tzLicpXG4gICAgICAuc2V0Q2xhc3MoJ2NvZGVibG9jay1jdXN0b21pemVyLXNwYWNlZCcpXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB7cmV0dXJuIHRvZ2dsZVxuICAgICAgICAuc2V0VG9vbHRpcCgnVG9nZ2xlIGVkaXRvciBhY3RpdmUgbGluZSBoaWdobGlnaHRpbmcnKVxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhpZ2hsaWdodHMuYWN0aXZlRWRpdG9yTGluZSlcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oaWdobGlnaHRzLmFjdGl2ZUVkaXRvckxpbmUgPSB2YWx1ZTtcbiAgICAgICAgICB0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snZWRpdG9yQWN0aXZlTGluZUhpZ2hsaWdodCddLmZvckVhY2goY29tcG9uZW50ID0+IHtjb21wb25lbnQuc2V0RGlzYWJsZWQoIXZhbHVlKX0pO1xuICAgICAgICAgIChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAudGhlbigoc2V0dGluZykgPT4ge3RoaXMuY3JlYXRlUGlja3IoXG4gICAgICAgIHRoaXMucGx1Z2luLGNvbnRhaW5lckVsLHNldHRpbmcsXG4gICAgICAgICdlZGl0b3JfYWN0aXZlX2xpbmVfaGlnaGxpZ2h0JyxcbiAgICAgICAgKHJlbGV2YW50VGhlbWVDb2xvcnM6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZUNvbG9ycykgPT4gcmVsZXZhbnRUaGVtZUNvbG9yc1tnZXRDdXJyZW50TW9kZSgpXS5oaWdobGlnaHRzLmFjdGl2ZUVkaXRvckxpbmVDb2xvcixcbiAgICAgICAgKHJlbGV2YW50VGhlbWVDb2xvcnM6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZUNvbG9ycywgc2F2ZUNvbG9yOiBDb2xvcikgPT4ge3JlbGV2YW50VGhlbWVDb2xvcnNbZ2V0Q3VycmVudE1vZGUoKV0uaGlnaGxpZ2h0cy5hY3RpdmVFZGl0b3JMaW5lQ29sb3IgPSBzYXZlQ29sb3J9LFxuICAgICAgICAoKSA9PiAhdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhpZ2hsaWdodHMuYWN0aXZlRWRpdG9yTGluZSxcbiAgICAgICAgKX0pO1xuICAgICAgdGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2VkaXRvckFjdGl2ZUxpbmVIaWdobGlnaHQnXS5wdXNoKHRoaXMucGlja3JzWydlZGl0b3JfYWN0aXZlX2xpbmVfaGlnaGxpZ2h0J10ucmVzZXRCdXR0b24pO1xuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoJ0NvZGVibG9jayBBY3RpdmUgTGluZSBIaWdobGlnaHQnKVxuICAgICAgLnNldERlc2MoJ0lmIGVuYWJsZWQsIGhpZ2hsaWdodHMgdGhlIGFjdGl2ZSBsaW5lIGluc2lkZSBjb2RlYmxvY2tzLicpXG4gICAgICAuc2V0Q2xhc3MoJ2NvZGVibG9jay1jdXN0b21pemVyLXNwYWNlZCcpXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB7cmV0dXJuIHRvZ2dsZVxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhpZ2hsaWdodHMuYWN0aXZlQ29kZWJsb2NrTGluZSlcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oaWdobGlnaHRzLmFjdGl2ZUNvZGVibG9ja0xpbmUgPSB2YWx1ZTsgXG4gICAgICAgICAgdGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2NvZGVibG9ja0FjdGl2ZUxpbmVIaWdobGlnaHQnXS5mb3JFYWNoKGNvbXBvbmVudCA9PiB7Y29tcG9uZW50LnNldERpc2FibGVkKCF2YWx1ZSl9KTtcbiAgICAgICAgICAoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICAgLnRoZW4oKHNldHRpbmcpID0+IHt0aGlzLmNyZWF0ZVBpY2tyKFxuICAgICAgICB0aGlzLnBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLFxuICAgICAgICAnY29kZWJsb2NrX2FjdGl2ZV9saW5lX2hpZ2hsaWdodCcsXG4gICAgICAgIChyZWxldmFudFRoZW1lQ29sb3JzOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVDb2xvcnMpID0+IHJlbGV2YW50VGhlbWVDb2xvcnNbZ2V0Q3VycmVudE1vZGUoKV0uaGlnaGxpZ2h0cy5hY3RpdmVDb2RlYmxvY2tMaW5lQ29sb3IsXG4gICAgICAgIChyZWxldmFudFRoZW1lQ29sb3JzOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVDb2xvcnMsIHNhdmVDb2xvcjogQ29sb3IpID0+IHtyZWxldmFudFRoZW1lQ29sb3JzW2dldEN1cnJlbnRNb2RlKCldLmhpZ2hsaWdodHMuYWN0aXZlQ29kZWJsb2NrTGluZUNvbG9yID0gc2F2ZUNvbG9yfSxcbiAgICAgICAgKCkgPT4gIXRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oaWdobGlnaHRzLmFjdGl2ZUNvZGVibG9ja0xpbmUsXG4gICAgICApfSk7XG4gICAgICB0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snY29kZWJsb2NrQWN0aXZlTGluZUhpZ2hsaWdodCddLnB1c2godGhpcy5waWNrcnNbJ2NvZGVibG9ja19hY3RpdmVfbGluZV9oaWdobGlnaHQnXS5yZXNldEJ1dHRvbik7XG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZSgnRGVmYXVsdCBIaWdobGlnaHQgQ29sb3InKVxuICAgICAgLnNldERlc2MoJ1VzZWQgYnkgdGhlIFxcJ2hsXFwnIHBhcmFtZXRlci4nKVxuICAgICAgLnRoZW4oKHNldHRpbmcpID0+IHt0aGlzLmNyZWF0ZVBpY2tyKFxuICAgICAgICB0aGlzLnBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLFxuICAgICAgICAnZGVmYXVsdF9oaWdobGlnaHQnLFxuICAgICAgICAocmVsZXZhbnRUaGVtZUNvbG9yczogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzKSA9PiByZWxldmFudFRoZW1lQ29sb3JzW2dldEN1cnJlbnRNb2RlKCldLmhpZ2hsaWdodHMuZGVmYXVsdENvbG9yLFxuICAgICAgICAocmVsZXZhbnRUaGVtZUNvbG9yczogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzLCBzYXZlQ29sb3I6IENvbG9yKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG9yc1tnZXRDdXJyZW50TW9kZSgpXS5oaWdobGlnaHRzLmRlZmF1bHRDb2xvciA9IHNhdmVDb2xvcn0sXG4gICAgICApfSk7XG4gICAgbGV0IG5ld0hpZ2hsaWdodFRleHQ6IFRleHRDb21wb25lbnQ7XG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZShcIkFkZCBBbHRlcm5hdGl2ZSBIaWdobGlnaHRcIilcbiAgICAgIC5zZXREZXNjKCdEZWZpbmUgYSBuZXcgYWx0ZXJuYXRpdmUgaGlnaGxpZ2h0IG5hbWUuIENvbG9ycyBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXIgaXQgaXMgYWRkZWQuJylcbiAgICAgIC5hZGRUZXh0KHZhbHVlID0+IHtuZXdIaWdobGlnaHRUZXh0ID0gdmFsdWVcbiAgICAgICAgLnNldFBsYWNlaG9sZGVyKCdlLmcuIGVycm9yLCB3YXJuJylcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLm5ld0hpZ2hsaWdodCA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAuYWRkQnV0dG9uKChidXR0b24pID0+IHtcbiAgICAgICAgYnV0dG9uLnNldEJ1dHRvblRleHQoXCJBZGRcIik7XG4gICAgICAgIGJ1dHRvbi5vbkNsaWNrKCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3SGlnaGxpZ2h0LnRyaW0oKSA9PT0gXCJcIikge1xuICAgICAgICAgICAgbmV3IE5vdGljZShcIlBsZWFzZSBlbnRlciBhIGNvbG9yIG5hbWUuXCIpOyAvL05PU09OQVJcbiAgICAgICAgICB9IGVsc2UgaWYgKCFDT0xPUl9OQU1FX1JFR0VYLnRlc3QodGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3SGlnaGxpZ2h0KSkge1xuICAgICAgICAgICAgbmV3IE5vdGljZShgXCIke3RoaXMucGx1Z2luLnNldHRpbmdzLm5ld0hpZ2hsaWdodH1cIiBpcyBub3QgYSB2YWxpZCBjb2xvciBuYW1lLmApOyAvL05PU09OQVJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucGx1Z2luLnNldHRpbmdzLm5ld0hpZ2hsaWdodCA9PT0gJ2hsJykge1xuICAgICAgICAgICAgbmV3IE5vdGljZShcIkNhbm5vdCBvdmVycmlkZSB0aGUgZGVmYXVsdCBoaWdobGlnaHQgcGFyYW1ldGVyLlwiKTsgLy9OT1NPTkFSXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdIaWdobGlnaHQgaW4gdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLmNvbG9ycy5saWdodC5oaWdobGlnaHRzLmFsdGVybmF0aXZlSGlnaGxpZ2h0cykge1xuICAgICAgICAgICAgICAvL3RvZG8gKEBtYXl1cmFua3YpIEZ1dHVyZTogRm9jdXMgb24gZXhpc3RpbmcgaGlnaGxpZ2h0ZXJcbiAgICAgICAgICAgICAgbmV3IE5vdGljZShgQSBoaWdobGlnaHQgd2l0aCB0aGUgbmFtZSBcIiR7dGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3SGlnaGxpZ2h0fVwiIGFscmVhZHkgZXhpc3RzLmApOyAvL05PU09OQVJcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld0NvbG9yID0gZ2V0UmFuZG9tQ29sb3IoKTtcbiAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLmNvbG9ycy5saWdodC5oaWdobGlnaHRzLmFsdGVybmF0aXZlSGlnaGxpZ2h0c1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdIaWdobGlnaHRdID0gbmV3Q29sb3I7XG4gICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5jb2xvcnMuZGFyay5oaWdobGlnaHRzLmFsdGVybmF0aXZlSGlnaGxpZ2h0c1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdIaWdobGlnaHRdID0gbmV3Q29sb3I7XG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlQWx0ZXJuYXRpdmVIaWdobGlnaHRzKGFsdGVybmF0aXZlSGlnaGxpZ2h0c0NvbnRhaW5lcik7XG4gICAgICAgICAgICAgIG5ldyBOb3RpY2UoYEFkZGVkIGhpZ2hsaWdodCBcIiR7dGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3SGlnaGxpZ2h0fVwiLmApOyAvL05PU09OQVJcbiAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3SGlnaGxpZ2h0ID0gXCJcIjtcbiAgICAgICAgICAgICAgbmV3SGlnaGxpZ2h0VGV4dC5zZXRWYWx1ZShcIlwiKTtcbiAgICAgICAgICAgICAgKGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIGNvbnN0IGFsdGVybmF0aXZlSGlnaGxpZ2h0c0NvbnRhaW5lciA9IGNvbnRhaW5lckVsLmNyZWF0ZURpdigpXG4gICAgdGhpcy51cGRhdGVBbHRlcm5hdGl2ZUhpZ2hsaWdodHMoYWx0ZXJuYXRpdmVIaWdobGlnaHRzQ29udGFpbmVyKVxuXG4gICAgLy8gPT09PT09PT09PSBBZHZhbmNlZCA9PT09PT09PT09XG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2gzJywge3RleHQ6ICdBZHZhbmNlZCBTZXR0aW5ncyd9KTtcbiAgICBcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdHcmFkaWVudCBIaWdobGlnaHRpbmcnKVxuICAgICAgLnNldERlc2MoJ0lmIGVuYWJsZWQsIGhpZ2hsaWdodHMgZmFkZSBhd2F5IHRvIHRoZSByaWdodC4gVGhlIHNsaWRlciBzZXRzIHRoZSBncmFkaWVudCBjb2xvciBzdG9wIGFzIGEgcGVyY2VudGFnZS4nKVxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlXG4gICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQuZ3JhZGllbnRIaWdobGlnaHRzKVxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmdyYWRpZW50SGlnaGxpZ2h0cyA9IHZhbHVlO1xuICAgICAgICAgIHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydncmFkaWVudEhpZ2hsaWdodGluZyddLmZvckVhY2goY29tcG9uZW50ID0+IHtjb21wb25lbnQuc2V0RGlzYWJsZWQoIXZhbHVlKX0pO1xuICAgICAgICAgIChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuICAgICAgICB9KSlcbiAgICAgIC50aGVuKChzZXR0aW5nKSA9PiB7XG4gICAgICAgIGxldCByZXNldHRhYmxlU2xpZGVyOiBTbGlkZXJDb21wb25lbnQ7XG4gICAgICAgIHNldHRpbmcuYWRkU2xpZGVyKChzbGlkZXIpID0+IHtcbiAgICAgICAgICByZXNldHRhYmxlU2xpZGVyID0gc2xpZGVyXG4gICAgICAgICAgICAuc2V0TGltaXRzKDAsMTAwLDEpXG4gICAgICAgICAgICAuc2V0VmFsdWUoK3RoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5hZHZhbmNlZC5ncmFkaWVudEhpZ2hsaWdodHNDb2xvclN0b3Auc2xpY2UoMCwtMSkpXG4gICAgICAgICAgICAuc2V0RHluYW1pY1Rvb2x0aXAoKVxuICAgICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQuZ3JhZGllbnRIaWdobGlnaHRzQ29sb3JTdG9wID0gYCR7dmFsdWV9JWA7XG4gICAgICAgICAgICAgIChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpOyAgICBcbiAgICAgICAgICAgIH0pfSk7XG4gICAgICAgIGxldCByZXNldEJ1dHRvbjogRXh0cmFCdXR0b25Db21wb25lbnQ7XG4gICAgICAgIHNldHRpbmcuYWRkRXh0cmFCdXR0b24oKGJ1dHRvbikgPT4ge3Jlc2V0QnV0dG9uID0gYnV0dG9uXG4gICAgICAgICAgLnNldEljb24oXCJyZXNldFwiKVxuICAgICAgICAgIC5vbkNsaWNrKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5hZHZhbmNlZC5ncmFkaWVudEhpZ2hsaWdodHNDb2xvclN0b3AgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy50aGVtZXNbdGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZV0uc2V0dGluZ3MuYWR2YW5jZWQuZ3JhZGllbnRIaWdobGlnaHRzQ29sb3JTdG9wO1xuICAgICAgICAgICAgcmVzZXR0YWJsZVNsaWRlci5zZXRWYWx1ZSgrdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmdyYWRpZW50SGlnaGxpZ2h0c0NvbG9yU3RvcC5zbGljZSgwLC0xKSk7XG4gICAgICAgICAgICAoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5zZXRUb29sdGlwKCdSZXN0b3JlIGRlZmF1bHQgY29sb3Igc3RvcCcpO1xuICAgICAgICB0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snZ3JhZGllbnRIaWdobGlnaHRpbmcnXS5wdXNoKHJlc2V0dGFibGVTbGlkZXIpO1xuICAgICAgICB0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snZ3JhZGllbnRIaWdobGlnaHRpbmcnXS5wdXNoKHJlc2V0QnV0dG9uKTtcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZSgnTGFuZ3VhZ2UgQ29sb3JlZCBCb3JkZXJzJylcbiAgICAgIC5zZXREZXNjKCdJZiBlbmFibGVkLCBsYW5ndWFnZXMgd2l0aCBpY29ucyBkaXNwbGF5IGEgbGVmdCBib3JkZXIgd2l0aCB0aGUgY29sb3Igb2YgdGhlIGljb24uJylcbiAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4gdG9nZ2xlXG4gICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQubGFuZ3VhZ2VCb3JkZXJDb2xvcilcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5hZHZhbmNlZC5sYW5ndWFnZUJvcmRlckNvbG9yID0gdmFsdWU7XG4gICAgICAgICAgKGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG4gICAgICAgIH0pKVxuXG4gICAgLy8gPT09PT09PT09PSBEb25hdGlvbiA9PT09PT09PT09XG4gICAgY29uc3QgZG9uYXRpb25EaXYgPSBjb250YWluZXJFbC5jcmVhdGVFbChcImRpdlwiLCB7IGNsczogXCJjb2RlYmxvY2stY3VzdG9taXplci1kb25hdGlvblwiLCB9KTsgICAgXG4gICAgY29uc3QgZG9uYXRpb25UZXh0ID0gY3JlYXRlRWwoXCJwXCIpO1xuICAgIGNvbnN0IGRvbmF0aW9uQnV0dG9uID0gY3JlYXRlRWwoXCJhXCIsIHsgaHJlZjogXCJodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL1RoZVBpcmF0ZUtpbmdcIn0pO1xuICAgIFxuICAgIGRvbmF0aW9uVGV4dC5hcHBlbmRUZXh0KFwiSWYgeW91IGxpa2UgdGhpcyBwbHVnaW4sIGFuZCB3b3VsZCBsaWtlIHRvIGhlbHAgc3VwcG9ydCBjb250aW51ZWQgZGV2ZWxvcG1lbnQsIHVzZSB0aGUgYnV0dG9uIGJlbG93IVwiKTtcbiAgICBkb25hdGlvbkJ1dHRvbi5pbm5lckhUTUwgPSBgPGltZyBzcmM9XCJodHRwczovL2ltZy5idXltZWFjb2ZmZWUuY29tL2J1dHRvbi1hcGkvP3RleHQ9QnV5IG1lIGEgY29mZmVlJmVtb2ppPSZzbHVnPVRoZVBpcmF0ZUtpbmcmYnV0dG9uX2NvbG91cj1lM2U3ZWYmZm9udF9jb2xvdXI9MjYyNjI2JmZvbnRfZmFtaWx5PUludGVyJm91dGxpbmVfY29sb3VyPTI2MjYyNiZjb2ZmZWVfY29sb3VyPWZmMDAwMFwiIGhlaWdodD1cIjQycHhcIj5gO1xuICAgIFxuICAgIGRvbmF0aW9uRGl2LmFwcGVuZENoaWxkKGRvbmF0aW9uVGV4dCk7XG4gICAgZG9uYXRpb25EaXYuYXBwZW5kQ2hpbGQoZG9uYXRpb25CdXR0b24pO1xuXHR9Ly9kaXNwbGF5XG5cbiAgLy8gU2V0dGluZyBDcmVhdGlvblxuICBjcmVhdGVQaWNrcihwbHVnaW46IENvZGVibG9ja0N1c3RvbWl6ZXJQbHVnaW4sIGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCwgc2V0dGluZzogU2V0dGluZywgaWQ6IHN0cmluZywgZ2V0UmVsZXZhbnRUaGVtZUNvbG9yOiAocmVsZXZhbnRUaGVtZUNvbG9yczogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzKT0+Q29sb3IsIHNhdmVSZWxldmFudFRoZW1lQ29sb3I6IChyZWxldmFudFRoZW1lQ29sb3JzOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVDb2xvcnMsIHNhdmVDb2xvcjogQ29sb3IpPT52b2lkLCBkaXNhYmxlZD86ICgpPT5ib29sZWFuKSB7XG4gICAgbGV0IHBpY2tyOiBQaWNrclJlc2V0dGFibGUgPSBuZXcgUGlja3JSZXNldHRhYmxlKHBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLGdldFJlbGV2YW50VGhlbWVDb2xvcixzYXZlUmVsZXZhbnRUaGVtZUNvbG9yKTtcbiAgICBwaWNrclxuICAgICAgLm9uKCdzaG93JywgKGNvbG9yOiBQaWNrci5IU1ZhQ29sb3IsIGluc3RhbmNlOiBQaWNrcikgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGRpc2FibGVkICE9PSAndW5kZWZpbmVkJyAmJiBkaXNhYmxlZCgpKVxuICAgICAgICAgIGluc3RhbmNlLmhpZGUoKVxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IChpbnN0YW5jZS5nZXRSb290KCkgYXMgYW55KS5pbnRlcmFjdGlvbi5yZXN1bHQuc2VsZWN0KCkpKVxuICAgICAgfSlcbiAgICAgIC5vbignc2F2ZScsIChjb2xvcjogUGlja3IuSFNWYUNvbG9yLCBpbnN0YW5jZTogUGlja3JSZXNldHRhYmxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHNhdmVkQ29sb3I6IENvbG9yID0gYCMke2NvbG9yLnRvSEVYQSgpLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDEpfWA7XG4gICAgICAgIGluc3RhbmNlLmhpZGUoKTtcbiAgICAgICAgaW5zdGFuY2UuYWRkU3dhdGNoKHNhdmVkQ29sb3IpO1xuICAgICAgICBpbnN0YW5jZS5zYXZlQ29sb3Ioc2F2ZWRDb2xvcik7XG4gICAgICB9KVxuICAgICAgLm9uKCdjYW5jZWwnLCAoaW5zdGFuY2U6IFBpY2tyUmVzZXR0YWJsZSkgPT4ge2luc3RhbmNlLmhpZGUoKX0pO1xuICAgIHNldHRpbmcuYWRkRXh0cmFCdXR0b24oKGJ1dHRvbikgPT4ge3BpY2tyLnJlc2V0QnV0dG9uID0gYnV0dG9uXG4gICAgICAuc2V0SWNvbihcInJlc2V0XCIpXG4gICAgICAuc2V0RGlzYWJsZWQodHlwZW9mIGRpc2FibGVkICE9PSAndW5kZWZpbmVkJyAmJiBkaXNhYmxlZCgpKVxuICAgICAgLnNldFRvb2x0aXAoJ1Jlc3RvcmUgZGVmYXVsdCBjb2xvcicpXG4gICAgICAub25DbGljaygoKSA9PiB7cGlja3IucmVzZXRDb2xvcigpfSk7XG4gICAgfSk7XG4gICAgdGhpcy5waWNrcnNbaWRdPXBpY2tyO1xuICB9XG4gIGNyZWF0ZUR1YWxQaWNrcihwbHVnaW46IENvZGVibG9ja0N1c3RvbWl6ZXJQbHVnaW4sIGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCwgc2V0dGluZzogU2V0dGluZywgaWQ6IHN0cmluZywgZ2V0UmVsZXZhbnRUaGVtZUNvbG9yczogUmVjb3JkPCdsaWdodCd8J2RhcmsnLChyZWxldmFudFRoZW1lQ29sb3JzOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVDb2xvcnMpPT5Db2xvcj4sIHNhdmVSZWxldmFudFRoZW1lQ29sb3JzOiBSZWNvcmQ8J2xpZ2h0J3wnZGFyaycsKHJlbGV2YW50VGhlbWVDb2xvcnM6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZUNvbG9ycywgc2F2ZUNvbG9yOiBDb2xvcik9PnZvaWQ+LCByZXNldEVuYWJsZWQ6ICgpPT5ib29sZWFuKSB7XG4gICAgbGV0IGxpZ2h0UGlja3I6IFBpY2tyUmVzZXR0YWJsZSA9IG5ldyBQaWNrclJlc2V0dGFibGUocGx1Z2luLGNvbnRhaW5lckVsLHNldHRpbmcsZ2V0UmVsZXZhbnRUaGVtZUNvbG9ycy5saWdodCxzYXZlUmVsZXZhbnRUaGVtZUNvbG9ycy5saWdodCwnU2VsZWN0IGNvbG9yIGZvciBsaWdodCB0aGVtZScpO1xuICAgIGxpZ2h0UGlja3JcbiAgICAgIC5vbignc2hvdycsIChjb2xvcjogUGlja3IuSFNWYUNvbG9yLCBpbnN0YW5jZTogUGlja3IpID0+IHtyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IChpbnN0YW5jZS5nZXRSb290KCkgYXMgYW55KS5pbnRlcmFjdGlvbi5yZXN1bHQuc2VsZWN0KCkpKX0pXG4gICAgICAub24oJ3NhdmUnLCAoY29sb3I6IFBpY2tyLkhTVmFDb2xvciwgaW5zdGFuY2U6IFBpY2tyUmVzZXR0YWJsZSkgPT4ge1xuICAgICAgICBjb25zdCBzYXZlZENvbG9yOiBDb2xvciA9IGAjJHtjb2xvci50b0hFWEEoKS50b1N0cmluZygpLnN1YnN0cmluZygxKX1gO1xuICAgICAgICBpbnN0YW5jZS5oaWRlKCk7XG4gICAgICAgIGluc3RhbmNlLmFkZFN3YXRjaChzYXZlZENvbG9yKTtcbiAgICAgICAgaW5zdGFuY2Uuc2F2ZUNvbG9yKHNhdmVkQ29sb3IpO1xuICAgICAgfSlcbiAgICAgIC5vbignY2FuY2VsJywgKGluc3RhbmNlOiBQaWNrclJlc2V0dGFibGUpID0+IHtpbnN0YW5jZS5oaWRlKCl9KTtcbiAgICBsZXQgZGFya1BpY2tyOiBQaWNrclJlc2V0dGFibGUgPSBuZXcgUGlja3JSZXNldHRhYmxlKHBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLGdldFJlbGV2YW50VGhlbWVDb2xvcnMuZGFyayxzYXZlUmVsZXZhbnRUaGVtZUNvbG9ycy5kYXJrLCdTZWxlY3QgY29sb3IgZm9yIGRhcmsgdGhlbWUnKTtcbiAgICBkYXJrUGlja3JcbiAgICAgIC5vbignc2hvdycsIChjb2xvcjogUGlja3IuSFNWYUNvbG9yLCBpbnN0YW5jZTogUGlja3IpID0+IHtyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IChpbnN0YW5jZS5nZXRSb290KCkgYXMgYW55KS5pbnRlcmFjdGlvbi5yZXN1bHQuc2VsZWN0KCkpKX0pXG4gICAgICAub24oJ3NhdmUnLCAoY29sb3I6IFBpY2tyLkhTVmFDb2xvciwgaW5zdGFuY2U6IFBpY2tyUmVzZXR0YWJsZSkgPT4ge1xuICAgICAgICBjb25zdCBzYXZlZENvbG9yOiBDb2xvciA9IGAjJHtjb2xvci50b0hFWEEoKS50b1N0cmluZygpLnN1YnN0cmluZygxKX1gO1xuICAgICAgICBpbnN0YW5jZS5oaWRlKCk7XG4gICAgICAgIGluc3RhbmNlLmFkZFN3YXRjaChzYXZlZENvbG9yKTtcbiAgICAgICAgaW5zdGFuY2Uuc2F2ZUNvbG9yKHNhdmVkQ29sb3IpO1xuICAgICAgfSlcbiAgICAgIC5vbignY2FuY2VsJywgKGluc3RhbmNlOiBQaWNrclJlc2V0dGFibGUpID0+IHtpbnN0YW5jZS5oaWRlKCl9KTtcbiAgICBzZXR0aW5nLmFkZEV4dHJhQnV0dG9uKChidXR0b24pID0+IHtsZXQgcmVzZXRCdXR0b24gPSBidXR0b25cbiAgICAgIC5zZXRJY29uKFwicmVzZXRcIilcbiAgICAgIC5zZXRUb29sdGlwKCdSZXN0b3JlIGRlZmF1bHQgY29sb3InKVxuICAgICAgLnNldERpc2FibGVkKCFyZXNldEVuYWJsZWQoKSlcbiAgICAgIC5vbkNsaWNrKCgpID0+IHtcbiAgICAgICAgbGlnaHRQaWNrci5yZXNldENvbG9yKCk7XG4gICAgICAgIGRhcmtQaWNrci5yZXNldENvbG9yKCk7XG4gICAgICB9KTtcbiAgICAgIGxpZ2h0UGlja3IucmVzZXRCdXR0b24gPSByZXNldEJ1dHRvbjtcbiAgICAgIGRhcmtQaWNrci5yZXNldEJ1dHRvbiA9IHJlc2V0QnV0dG9uO1xuICAgIH0pO1xuICAgIHRoaXMucGlja3JzW2Ake2lkfV9saWdodGBdPWxpZ2h0UGlja3I7XG4gICAgdGhpcy5waWNrcnNbYCR7aWR9X2RhcmtgXT1kYXJrUGlja3I7XG4gIH1cblxuICAvLyBTZXR0aW5nIFVwZGF0ZXNcbiAgdXBkYXRlRHJvcGRvd24oZHJvcGRvd246IERyb3Bkb3duQ29tcG9uZW50LCBzZXR0aW5nczogQ29kZWJsb2NrQ3VzdG9taXplclNldHRpbmdzKSB7XG4gICAgZHJvcGRvd24uc2VsZWN0RWwuZW1wdHkoKTtcbiAgICBPYmplY3Qua2V5cyhzZXR0aW5ncy50aGVtZXMpLmZvckVhY2goKHRoZW1lX25hbWU6IHN0cmluZykgPT4ge1xuICAgICAgZHJvcGRvd24uYWRkT3B0aW9uKHRoZW1lX25hbWUsIHRoZW1lX25hbWUpOyAgICAgICAgICAgIFxuICAgIH0pXG4gICAgZHJvcGRvd24uc2V0VmFsdWUoc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZSk7XG4gIH1cbiAgdXBkYXRlUGlja3JDb2xvcnMoKSB7XG4gICAgT2JqZWN0LmVudHJpZXModGhpcy5waWNrcnMpLmZvckVhY2goKFtpZCxwaWNrcl0pID0+IHtwaWNrci5yZXNldENvbG9yKCl9KVxuICB9XG4gIHVwZGF0ZUFsdGVybmF0aXZlSGlnaGxpZ2h0cyhhbHRlcm5hdGl2ZUhpZ2hsaWdodHNDb250YWluZXI6IEhUTUxEaXZFbGVtZW50KSB7XG4gICAgYWx0ZXJuYXRpdmVIaWdobGlnaHRzQ29udGFpbmVyLmVtcHR5KCk7XG4gICAgT2JqZWN0LmtleXModGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLmNvbG9ycy5saWdodC5oaWdobGlnaHRzLmFsdGVybmF0aXZlSGlnaGxpZ2h0cykuZm9yRWFjaCgoYWx0ZXJuYXRpdmVIaWdobGlnaHROYW1lKSA9PiB7XG4gICAgICBuZXcgU2V0dGluZyhhbHRlcm5hdGl2ZUhpZ2hsaWdodHNDb250YWluZXIpXG4gICAgICAgIC5zZXROYW1lKGFsdGVybmF0aXZlSGlnaGxpZ2h0TmFtZSlcbiAgICAgICAgLnNldERlc2MoYFRvIGhpZ2hsaWdodCBsaW5lcyB3aXRoIHRoaXMgaGlnaGxpZ2h0LCB1c2UgdGhlICR7YWx0ZXJuYXRpdmVIaWdobGlnaHROYW1lfSBwYXJhbWV0ZXIuYClcbiAgICAgICAgLnRoZW4oKHNldHRpbmcpID0+IHtcbiAgICAgICAgICB0aGlzLmNyZWF0ZUR1YWxQaWNrcihcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLGFsdGVybmF0aXZlSGlnaGxpZ2h0c0NvbnRhaW5lcixzZXR0aW5nLFxuICAgICAgICAgICAgYGFsdGVybmF0aXZlX2hpZ2hsaWdodF8ke2FsdGVybmF0aXZlSGlnaGxpZ2h0TmFtZX1gLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAnbGlnaHQnOihyZWxldmFudFRoZW1lQ29sb3JzOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVDb2xvcnMpID0+IHJlbGV2YW50VGhlbWVDb2xvcnMubGlnaHQuaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHNbYWx0ZXJuYXRpdmVIaWdobGlnaHROYW1lXSxcbiAgICAgICAgICAgICAgJ2RhcmsnOihyZWxldmFudFRoZW1lQ29sb3JzOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVDb2xvcnMpID0+IHJlbGV2YW50VGhlbWVDb2xvcnMuZGFyay5oaWdobGlnaHRzLmFsdGVybmF0aXZlSGlnaGxpZ2h0c1thbHRlcm5hdGl2ZUhpZ2hsaWdodE5hbWVdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgJ2xpZ2h0JzoocmVsZXZhbnRUaGVtZUNvbG9yczogQ29kZWJsb2NrQ3VzdG9taXplclRoZW1lQ29sb3JzLCBzYXZlQ29sb3I6IENvbG9yKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG9ycy5saWdodC5oaWdobGlnaHRzLmFsdGVybmF0aXZlSGlnaGxpZ2h0c1thbHRlcm5hdGl2ZUhpZ2hsaWdodE5hbWVdID0gc2F2ZUNvbG9yfSxcbiAgICAgICAgICAgICAgJ2RhcmsnOihyZWxldmFudFRoZW1lQ29sb3JzOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVDb2xvcnMsIHNhdmVDb2xvcjogQ29sb3IpID0+IHtyZWxldmFudFRoZW1lQ29sb3JzLmRhcmsuaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHNbYWx0ZXJuYXRpdmVIaWdobGlnaHROYW1lXSA9IHNhdmVDb2xvcn0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKCkgPT4gYWx0ZXJuYXRpdmVIaWdobGlnaHROYW1lIGluIHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lc1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lXS5jb2xvcnMubGlnaHQuaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHMsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBzZXR0aW5nLmFkZEV4dHJhQnV0dG9uKChidXR0b24pID0+IHtidXR0b25cbiAgICAgICAgICAgIC5zZXRJY29uKFwidHJhc2hcIilcbiAgICAgICAgICAgIC5zZXRUb29sdGlwKFwiRGVsZXRlIGhpZ2hsaWdodFwiKVxuICAgICAgICAgICAgLm9uQ2xpY2soKCkgPT4ge1xuICAgICAgICAgICAgICBkZWxldGUgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLmNvbG9ycy5saWdodC5oaWdobGlnaHRzLmFsdGVybmF0aXZlSGlnaGxpZ2h0c1thbHRlcm5hdGl2ZUhpZ2hsaWdodE5hbWVdXG4gICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuY29sb3JzLmRhcmsuaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHNbYWx0ZXJuYXRpdmVIaWdobGlnaHROYW1lXVxuICAgICAgICAgICAgICBuZXcgTm90aWNlKGBSZW1vdmVkIGhpZ2hsaWdodCBcIiR7YWx0ZXJuYXRpdmVIaWdobGlnaHROYW1lfVwiLmApOyAvL05PU09OQVJcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVBbHRlcm5hdGl2ZUhpZ2hsaWdodHMoYWx0ZXJuYXRpdmVIaWdobGlnaHRzQ29udGFpbmVyKTtcbiAgICAgICAgICAgICAgKGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICB9KVxuICB9XG59Ly8gU2V0dGluZ3NUYWJcblxuY2xhc3MgUGlja3JSZXNldHRhYmxlIGV4dGVuZHMgUGlja3Ige1xuICBzYXZlQ29sb3I6IChzYXZlQ29sb3I6IENvbG9yKT0+dm9pZDtcbiAgcmVzZXRDb2xvcjogKCk9PnZvaWQ7XG4gIGdldEN1cnJlbnRDb2xvcjogKGFjY2Vzc1RoZW1lOiBib29sZWFuKT0+dm9pZDtcbiAgcmVzZXRCdXR0b246IEV4dHJhQnV0dG9uQ29tcG9uZW50O1xuXG4gIGNvbnN0cnVjdG9yKHBsdWdpbjogQ29kZWJsb2NrQ3VzdG9taXplclBsdWdpbiwgY29udGFpbmVyRWw6IEhUTUxFbGVtZW50LCBzZXR0aW5nOiBTZXR0aW5nLCBnZXRSZWxldmFudFRoZW1lQ29sb3I6IChyZWxldmFudFRoZW1lQ29sb3JzOiBDb2RlYmxvY2tDdXN0b21pemVyVGhlbWVDb2xvcnMpPT5Db2xvciwgc2F2ZVJlbGV2YW50VGhlbWVDb2xvcjogKHJlbGV2YW50VGhlbWVDb2xvcnM6IENvZGVibG9ja0N1c3RvbWl6ZXJUaGVtZUNvbG9ycywgc2F2ZUNvbG9yOiBDb2xvcik9PnZvaWQsIHRvb2x0aXA/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBzZXR0aW5nczogUGlja3IuT3B0aW9ucyA9IHtcbiAgICAgIGVsOiBzZXR0aW5nLmNvbnRyb2xFbC5jcmVhdGVEaXYoe2NsczogXCJwaWNrZXJcIn0pLFxuICAgICAgdGhlbWU6ICduYW5vJyxcbiAgICAgIGRlZmF1bHQ6IGdldENvbG9yKGdldFJlbGV2YW50VGhlbWVDb2xvcihwbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLmNvbG9ycykpLFxuICAgICAgcG9zaXRpb246IFwibGVmdC1taWRkbGVcIixcbiAgICAgIGxvY2tPcGFjaXR5OiBmYWxzZSxcbiAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgcHJldmlldzogdHJ1ZSxcbiAgICAgICAgaHVlOiB0cnVlLFxuICAgICAgICBvcGFjaXR5OiB0cnVlLFxuICAgICAgICBpbnRlcmFjdGlvbjoge1xuICAgICAgICAgIGhleDogdHJ1ZSxcbiAgICAgICAgICByZ2JhOiB0cnVlLFxuICAgICAgICAgIGhzbGE6IGZhbHNlLFxuICAgICAgICAgIGlucHV0OiB0cnVlLFxuICAgICAgICAgIGNhbmNlbDogdHJ1ZSxcbiAgICAgICAgICBzYXZlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGkxOG46IHtcbiAgICAgICAgJ3VpOmRpYWxvZyc6ICdDb2xvciBwaWNrZXIgZGlhbG9nJyxcbiAgICAgICAgJ2J0bjp0b2dnbGUnOiAodHlwZW9mIHRvb2x0aXAgIT09ICd1bmRlZmluZWQnKT90b29sdGlwOidTZWxlY3QgY29sb3InLFxuICAgICAgICAnYnRuOnN3YXRjaCc6ICdDb2xvciBzd2F0Y2gnLFxuICAgICAgICAnYnRuOmxhc3QtY29sb3InOiAnVXNlIHByZXZpb3VzIGNvbG9yJyxcbiAgICAgIH1cbiAgICB9O1xuICAgIGlmIChjb250YWluZXJFbC5wYXJlbnRFbGVtZW50ICE9PSBudWxsKVxuICAgICAgc2V0dGluZ3MuY29udGFpbmVyID0gY29udGFpbmVyRWwucGFyZW50RWxlbWVudDtcbiAgICBzdXBlcihzZXR0aW5ncyk7XG4gICAgdGhpcy5zYXZlQ29sb3IgPSAoc2F2ZUNvbG9yOiBDb2xvcikgPT4ge1xuICAgICAgc2F2ZVJlbGV2YW50VGhlbWVDb2xvcihwbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLmNvbG9ycyxzYXZlQ29sb3IpO1xuICAgICAgKGFzeW5jICgpID0+IHthd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuICAgIH07XG4gICAgdGhpcy5yZXNldENvbG9yID0gKCkgPT4ge1xuICAgICAgY29uc3QgcmVzZXRDb2xvcjogQ29sb3IgPSBnZXRSZWxldmFudFRoZW1lQ29sb3IocGx1Z2luLnNldHRpbmdzLnRoZW1lc1twbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZV0uY29sb3JzKTtcbiAgICAgIHRoaXMuc2V0Q29sb3IoZ2V0Q29sb3IocmVzZXRDb2xvcikpO1xuICAgICAgdGhpcy5zYXZlQ29sb3IocmVzZXRDb2xvcik7XG4gICAgfTtcbiAgfVxufVxuXG4vLyBDb2xvciBNYW5hZ2VtZW50XG5mdW5jdGlvbiBnZXRSYW5kb21Db2xvcigpOiBDb2xvciB7XG4gIGNvbnN0IGxldHRlcnMgPSBcIjAxMjM0NTY3ODlBQkNERUZcIjtcbiAgbGV0IGNvbG9yID0gXCJcIjtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCA2OyBpKyspXG4gICAgY29sb3IgKz0gbGV0dGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxNildO1xuICByZXR1cm4gYCMke2NvbG9yfUZGYDtcbn1cbmZ1bmN0aW9uIGlzQ3NzKHBvc3NpYmxlQ3NzOiBzdHJpbmcpOiBwb3NzaWJsZUNzcyBpcyBDU1Mge1xuICByZXR1cm4gcG9zc2libGVDc3Muc3RhcnRzV2l0aCgnLS0nKSAmJiB0eXBlb2YgcG9zc2libGVDc3MgPT09ICdzdHJpbmcnO1xufVxuZnVuY3Rpb24gY2FsYyhjYWxjU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBzcGxpdFN0cmluZyA9IGNhbGNTdHJpbmcucmVwbGFjZSgvKFxcZCopJS9nLCckMScpLnNwbGl0KCcgJyk7XG4gIGNvbnN0IG9wZXJhdG9yczoge1trZXk6IHN0cmluZ106IChudW0xOm51bWJlciwgbnVtMjpudW1iZXIpID0+IG51bWJlcn0gPSB7XG4gICAgJysnOiAobnVtMTpudW1iZXIsIG51bTI6bnVtYmVyKTpudW1iZXIgPT4gTWF0aC5tYXgobnVtMStudW0yLDApLFxuICAgICctJzogKG51bTE6bnVtYmVyICxudW0yOm51bWJlcik6bnVtYmVyID0+IE1hdGgubWF4KG51bTEtbnVtMiwwKSxcbiAgfVxuICBpZiAoc3BsaXRTdHJpbmcubGVuZ3RoID09PSAzKVxuICAgIGlmIChzcGxpdFN0cmluZ1sxXSBpbiBvcGVyYXRvcnMpe1xuICAgICAgcmV0dXJuIGAke29wZXJhdG9yc1tzcGxpdFN0cmluZ1sxXV0ocGFyc2VGbG9hdChzcGxpdFN0cmluZ1swXSkscGFyc2VGbG9hdChzcGxpdFN0cmluZ1syXSkpfSVgXG4gICAgfVxuICBjb25zb2xlLmxvZygnV2FybmluZzogQ291bGRuXFwndCBwYXJzZSBjYWxjIHN0cmluZycpO1xuICByZXR1cm4gY2FsY1N0cmluZztcbn1cbmZ1bmN0aW9uIGdldENzc1ZhcmlhYmxlKGNzc1ZhcmlhYmxlOiBDU1MpOiBIRVgge1xuICBsZXQgdmFyaWFibGVWYWx1ZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLmdldFByb3BlcnR5VmFsdWUoY3NzVmFyaWFibGUpLnRyaW0oKTtcbiAgaWYgKHR5cGVvZiB2YXJpYWJsZVZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhcmlhYmxlVmFsdWUudHJpbSgpLnN0YXJ0c1dpdGgoJyMnKSlcbiAgICByZXR1cm4gYCMke3ZhcmlhYmxlVmFsdWUudHJpbSgpLnN1YnN0cmluZygxKX1gO1xuICBlbHNlIGlmICh2YXJpYWJsZVZhbHVlLnN0YXJ0c1dpdGgoJ3JnYicpKVxuICAgIHJldHVybiBgIyR7Q29sb3JUcmFuc2xhdG9yLnRvSEVYQSh2YXJpYWJsZVZhbHVlLnJlcGxhY2UoL2NhbGNcXCgoLio/KVxcKS9nLChtYXRjaCxjYXB0dXJlKT0+Y2FsYyhjYXB0dXJlKSkpLnN1YnN0cmluZygxKX1gO1xuICBlbHNlIGlmICh2YXJpYWJsZVZhbHVlLnN0YXJ0c1dpdGgoJ2hzbCcpKVxuICAgIHJldHVybiBgIyR7Q29sb3JUcmFuc2xhdG9yLnRvSEVYQSh2YXJpYWJsZVZhbHVlLnJlcGxhY2UoL2NhbGNcXCgoLio/KVxcKS9nLChtYXRjaCxjYXB0dXJlKT0+Y2FsYyhjYXB0dXJlKSkpLnN1YnN0cmluZygxKX1gO1xuICBlbHNlIHtcbiAgICBjb25zb2xlLmxvZyhgV2FybmluZzogQ291bGRuJ3QgZGV0ZXJtaW5lIGNvbG9yIGZvcm1hdCAtICR7dmFyaWFibGVWYWx1ZX1gKTtcbiAgfVxuICByZXR1cm4gYCMke0NvbG9yVHJhbnNsYXRvci50b0hFWEEodmFyaWFibGVWYWx1ZSkuc3Vic3RyaW5nKDEpfWA7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sb3IodGhlbWVDb2xvcjogQ29sb3IpOiBDb2xvciB7XG4gIHJldHVybiBpc0Nzcyh0aGVtZUNvbG9yKT9nZXRDc3NWYXJpYWJsZSh0aGVtZUNvbG9yKTp0aGVtZUNvbG9yOztcbn1cblxuLy8gUmVnZXggVGVzdHNcbmNvbnN0IENPTE9SX05BTUVfUkVHRVggPSAvXlteXFxkXVxcdyokLyIsICJ2YXIgdD1mdW5jdGlvbigpe3JldHVybiB0PU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxyPTEsbj1hcmd1bWVudHMubGVuZ3RoO3I8bjtyKyspZm9yKHZhciBpIGluIGU9YXJndW1lbnRzW3JdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLGkpJiYodFtpXT1lW2ldKTtyZXR1cm4gdH0sdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Z1bmN0aW9uIGUodCxlLHIpe2lmKHJ8fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgbixpPTAsbz1lLmxlbmd0aDtpPG87aSsrKSFuJiZpIGluIGV8fChufHwobj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlLDAsaSkpLG5baV09ZVtpXSk7cmV0dXJuIHQuY29uY2F0KG58fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpKX12YXIgcixuLGksbzshZnVuY3Rpb24odCl7dC5IRVg9XCJIRVhcIix0LlJHQj1cIlJHQlwiLHQuSFNMPVwiSFNMXCIsdC5DTVlLPVwiQ01ZS1wifShyfHwocj17fSkpLGZ1bmN0aW9uKHQpe3QuQU5BTE9HT1VTPVwiQU5BTE9HT1VTXCIsdC5DT01QTEVNRU5UQVJZPVwiQ09NUExFTUVOVEFSWVwiLHQuU1BMSVRfQ09NUExFTUVOVEFSWT1cIlNQTElUX0NPTVBMRU1FTlRBUllcIix0LlRSSUFESUM9XCJUUklBRElDXCIsdC5URVRSQURJQz1cIlRFVFJBRElDXCIsdC5TUVVBUkU9XCJTUVVBUkVcIn0obnx8KG49e30pKSxmdW5jdGlvbih0KXt0LkFERElUSVZFPVwiQURESVRJVkVcIix0LlNVQlRSQUNUSVZFPVwiU1VCVFJBQ1RJVkVcIn0oaXx8KGk9e30pKSxmdW5jdGlvbih0KXt0LmJsYWNrPVwiIzAwMDAwMFwiLHQuc2lsdmVyPVwiI0MwQzBDMFwiLHQuZ3JheT1cIiM4MDgwODBcIix0LndoaXRlPVwiI0ZGRkZGRlwiLHQubWFyb29uPVwiIzgwMDAwMFwiLHQucmVkPVwiI0ZGMDAwMFwiLHQucHVycGxlPVwiIzgwMDA4MFwiLHQuZnVjaHNpYT1cIiNGRjAwRkZcIix0LmdyZWVuPVwiIzAwODAwMFwiLHQubGltZT1cIiMwMEZGMDBcIix0Lm9saXZlPVwiIzgwODAwMFwiLHQueWVsbG93PVwiI0ZGRkYwMFwiLHQubmF2eT1cIiMwMDAwODBcIix0LmJsdWU9XCIjMDAwMEZGXCIsdC50ZWFsPVwiIzAwODA4MFwiLHQuYXF1YT1cIiMwMEZGRkZcIix0Lm9yYW5nZT1cIiNGRkE1MDBcIix0LmFsaWNlYmx1ZT1cIiNGMEY4RkZcIix0LmFudGlxdWV3aGl0ZT1cIiNGQUVCRDdcIix0LmFxdWFtYXJpbmU9XCIjN0ZGRkQ0XCIsdC5henVyZT1cIiNGMEZGRkZcIix0LmJlaWdlPVwiI0Y1RjVEQ1wiLHQuYmlzcXVlPVwiI0ZGRTRDNFwiLHQuYmxhbmNoZWRhbG1vbmQ9XCIjRkZFQkNEXCIsdC5ibHVldmlvbGV0PVwiIzhBMkJFMlwiLHQuYnJvd249XCIjQTUyQTJBXCIsdC5idXJseXdvb2Q9XCIjREVCODg3XCIsdC5jYWRldGJsdWU9XCIjNUY5RUEwXCIsdC5jaGFydHJldXNlPVwiIzdGRkYwMFwiLHQuY2hvY29sYXRlPVwiI0QyNjkxRVwiLHQuY29yYWw9XCIjRkY3RjUwXCIsdC5jb3JuZmxvd2VyYmx1ZT1cIiM2NDk1RURcIix0LmNvcm5zaWxrPVwiI0ZGRjhEQ1wiLHQuY3JpbXNvbj1cIiNEQzE0M0NcIix0LmN5YW49XCIjMDBGRkZGXCIsdC5kYXJrYmx1ZT1cIiMwMDAwOEJcIix0LmRhcmtjeWFuPVwiIzAwOEI4QlwiLHQuZGFya2dvbGRlbnJvZD1cIiNCODg2MEJcIix0LmRhcmtncmF5PVwiI0E5QTlBOVwiLHQuZGFya2dyZWVuPVwiIzAwNjQwMFwiLHQuZGFya2dyZXk9XCIjQTlBOUE5XCIsdC5kYXJra2hha2k9XCIjQkRCNzZCXCIsdC5kYXJrbWFnZW50YT1cIiM4QjAwOEJcIix0LmRhcmtvbGl2ZWdyZWVuPVwiIzU1NkIyRlwiLHQuZGFya29yYW5nZT1cIiNGRjhDMDBcIix0LmRhcmtvcmNoaWQ9XCIjOTkzMkNDXCIsdC5kYXJrcmVkPVwiIzhCMDAwMFwiLHQuZGFya3NhbG1vbj1cIiNFOTk2N0FcIix0LmRhcmtzZWFncmVlbj1cIiM4RkJDOEZcIix0LmRhcmtzbGF0ZWJsdWU9XCIjNDgzRDhCXCIsdC5kYXJrc2xhdGVncmF5PVwiIzJGNEY0RlwiLHQuZGFya3NsYXRlZ3JleT1cIiMyRjRGNEZcIix0LmRhcmt0dXJxdW9pc2U9XCIjMDBDRUQxXCIsdC5kYXJrdmlvbGV0PVwiIzk0MDBEM1wiLHQuZGVlcHBpbms9XCIjRkYxNDkzXCIsdC5kZWVwc2t5Ymx1ZT1cIiMwMEJGRkZcIix0LmRpbWdyYXk9XCIjNjk2OTY5XCIsdC5kaW1ncmV5PVwiIzY5Njk2OVwiLHQuZG9kZ2VyYmx1ZT1cIiMxRTkwRkZcIix0LmZpcmVicmljaz1cIiNCMjIyMjJcIix0LmZsb3JhbHdoaXRlPVwiI0ZGRkFGMFwiLHQuZm9yZXN0Z3JlZW49XCIjMjI4QjIyXCIsdC5nYWluc2Jvcm89XCIjRENEQ0RDXCIsdC5naG9zdHdoaXRlPVwiI0Y4RjhGRlwiLHQuZ29sZD1cIiNGRkQ3MDBcIix0LmdvbGRlbnJvZD1cIiNEQUE1MjBcIix0LmdyZWVueWVsbG93PVwiI0FERkYyRlwiLHQuZ3JleT1cIiM4MDgwODBcIix0LmhvbmV5ZGV3PVwiI0YwRkZGMFwiLHQuaG90cGluaz1cIiNGRjY5QjRcIix0LmluZGlhbnJlZD1cIiNDRDVDNUNcIix0LmluZGlnbz1cIiM0QjAwODJcIix0Lml2b3J5PVwiI0ZGRkZGMFwiLHQua2hha2k9XCIjRjBFNjhDXCIsdC5sYXZlbmRlcj1cIiNFNkU2RkFcIix0LmxhdmVuZGVyYmx1c2g9XCIjRkZGMEY1XCIsdC5sYXduZ3JlZW49XCIjN0NGQzAwXCIsdC5sZW1vbmNoaWZmb249XCIjRkZGQUNEXCIsdC5saWdodGJsdWU9XCIjQUREOEU2XCIsdC5saWdodGNvcmFsPVwiI0YwODA4MFwiLHQubGlnaHRjeWFuPVwiI0UwRkZGRlwiLHQubGlnaHRnb2xkZW5yb2R5ZWxsb3c9XCIjRkFGQUQyXCIsdC5saWdodGdyYXk9XCIjRDNEM0QzXCIsdC5saWdodGdyZWVuPVwiIzkwRUU5MFwiLHQubGlnaHRncmV5PVwiI0QzRDNEM1wiLHQubGlnaHRwaW5rPVwiI0ZGQjZDMVwiLHQubGlnaHRzYWxtb249XCIjRkZBMDdBXCIsdC5saWdodHNlYWdyZWVuPVwiIzIwQjJBQVwiLHQubGlnaHRza3libHVlPVwiIzg3Q0VGQVwiLHQubGlnaHRzbGF0ZWdyYXk9XCIjNzc4ODk5XCIsdC5saWdodHNsYXRlZ3JleT1cIiM3Nzg4OTlcIix0LmxpZ2h0c3RlZWxibHVlPVwiI0IwQzRERVwiLHQubGlnaHR5ZWxsb3c9XCIjRkZGRkUwXCIsdC5saW1lZ3JlZW49XCIjMzJDRDMyXCIsdC5saW5lbj1cIiNGQUYwRTZcIix0Lm1hZ2VudGE9XCIjRkYwMEZGXCIsdC5tZWRpdW1hcXVhbWFyaW5lPVwiIzY2Q0RBQVwiLHQubWVkaXVtYmx1ZT1cIiMwMDAwQ0RcIix0Lm1lZGl1bW9yY2hpZD1cIiNCQTU1RDNcIix0Lm1lZGl1bXB1cnBsZT1cIiM5MzcwREJcIix0Lm1lZGl1bXNlYWdyZWVuPVwiIzNDQjM3MVwiLHQubWVkaXVtc2xhdGVibHVlPVwiIzdCNjhFRVwiLHQubWVkaXVtc3ByaW5nZ3JlZW49XCIjMDBGQTlBXCIsdC5tZWRpdW10dXJxdW9pc2U9XCIjNDhEMUNDXCIsdC5tZWRpdW12aW9sZXRyZWQ9XCIjQzcxNTg1XCIsdC5taWRuaWdodGJsdWU9XCIjMTkxOTcwXCIsdC5taW50Y3JlYW09XCIjRjVGRkZBXCIsdC5taXN0eXJvc2U9XCIjRkZFNEUxXCIsdC5tb2NjYXNpbj1cIiNGRkU0QjVcIix0Lm5hdmFqb3doaXRlPVwiI0ZGREVBRFwiLHQub2xkbGFjZT1cIiNGREY1RTZcIix0Lm9saXZlZHJhYj1cIiM2QjhFMjNcIix0Lm9yYW5nZXJlZD1cIiNGRjQ1MDBcIix0Lm9yY2hpZD1cIiNEQTcwRDZcIix0LnBhbGVnb2xkZW5yb2Q9XCIjRUVFOEFBXCIsdC5wYWxlZ3JlZW49XCIjOThGQjk4XCIsdC5wYWxldHVycXVvaXNlPVwiI0FGRUVFRVwiLHQucGFsZXZpb2xldHJlZD1cIiNEQjcwOTNcIix0LnBhcGF5YXdoaXA9XCIjRkZFRkQ1XCIsdC5wZWFjaHB1ZmY9XCIjRkZEQUI5XCIsdC5wZXJ1PVwiI0NEODUzRlwiLHQucGluaz1cIiNGRkMwQ0JcIix0LnBsdW09XCIjRERBMEREXCIsdC5wb3dkZXJibHVlPVwiI0IwRTBFNlwiLHQucm9zeWJyb3duPVwiI0JDOEY4RlwiLHQucm95YWxibHVlPVwiIzQxNjlFMVwiLHQuc2FkZGxlYnJvd249XCIjOEI0NTEzXCIsdC5zYWxtb249XCIjRkE4MDcyXCIsdC5zYW5keWJyb3duPVwiI0Y0QTQ2MFwiLHQuc2VhZ3JlZW49XCIjMkU4QjU3XCIsdC5zZWFzaGVsbD1cIiNGRkY1RUVcIix0LnNpZW5uYT1cIiNBMDUyMkRcIix0LnNreWJsdWU9XCIjODdDRUVCXCIsdC5zbGF0ZWJsdWU9XCIjNkE1QUNEXCIsdC5zbGF0ZWdyYXk9XCIjNzA4MDkwXCIsdC5zbGF0ZWdyZXk9XCIjNzA4MDkwXCIsdC5zbm93PVwiI0ZGRkFGQVwiLHQuc3ByaW5nZ3JlZW49XCIjMDBGRjdGXCIsdC5zdGVlbGJsdWU9XCIjNDY4MkI0XCIsdC50YW49XCIjRDJCNDhDXCIsdC50aGlzdGxlPVwiI0Q4QkZEOFwiLHQudG9tYXRvPVwiI0ZGNjM0N1wiLHQudHVycXVvaXNlPVwiIzQwRTBEMFwiLHQudmlvbGV0PVwiI0VFODJFRVwiLHQud2hlYXQ9XCIjRjVERUIzXCIsdC53aGl0ZXNtb2tlPVwiI0Y1RjVGNVwiLHQueWVsbG93Z3JlZW49XCIjOUFDRDMyXCIsdC5yZWJlY2NhcHVycGxlPVwiIzY2MzM5OVwifShvfHwobz17fSkpO3ZhciBhLHUsYyxzLGQsaCxsLGY9T2JqZWN0LmtleXMobyksZz17SEVYOltcInJcIixcImdcIixcImJcIixcImFcIl0sUkdCOltcInJcIixcImdcIixcImJcIixcImFcIl0sSFNMOltcImhcIixcInNcIixcImxcIixcImFcIl0sQ01ZSzpbXCJjXCIsXCJtXCIsXCJ5XCIsXCJrXCIsXCJhXCJdfSxwPXtCR1I6ci5SR0IsQUJHUjpyLlJHQixITFM6ci5IU0wsQUhMUzpyLkhTTCxDS01ZOnIuQ01ZSyxBQ0tNWTpyLkNNWUt9LGI9KChhPXt9KVtyLkhFWF09L14jKD86KFthLWZcXGRdKShbYS1mXFxkXSkoW2EtZlxcZF0pKFthLWZcXGRdKT98KFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KT8pJC9pLGFbci5SR0JdPS9ecmdiYT9cXHMqXFwoXFxzKig/OigoPzpcXGQqXFwuKT9cXGQrJT8pXFxzKixcXHMqKCg/OlxcZCpcXC4pP1xcZCslPylcXHMqLFxccyooKD86XFxkKlxcLik/XFxkKyU/KSg/OlxccyosXFxzKigoPzpcXGQqXFwuKT9cXGQrKSk/fCgoPzpcXGQqXFwuKT9cXGQrJT8pXFxzKigoPzpcXGQqXFwuKT9cXGQrJT8pXFxzKigoPzpcXGQqXFwuKT9cXGQrJT8pKD86XFxzKlxcL1xccyooKD86XFxkKlxcLik/XFxkKyU/KSk/KVxccypcXCkkLyxhW3IuSFNMXT0vXmhzbGE/XFxzKlxcKFxccyooPzooLT8oPzpcXGQqXFwuKT9cXGQrKD86ZGVnfGdyYWR8cmFkfHR1cm4pPylcXHMqLFxccyooKD86XFxkKlxcLik/XFxkKyklXFxzKixcXHMqKCg/OlxcZCpcXC4pP1xcZCspJSg/OlxccyosXFxzKigoPzpcXGQqXFwuKT9cXGQrKSk/fCgtPyg/OlxcZCpcXC4pP1xcZCsoPzpkZWd8Z3JhZHxyYWR8dHVybik/KVxccyooKD86XFxkKlxcLik/XFxkKyklXFxzKigoPzpcXGQqXFwuKT9cXGQrKSUoPzpcXHMqXFwvXFxzKigoPzpcXGQqXFwuKT9cXGQrJT8pKT8pXFxzKlxcKSQvLGFbci5DTVlLXT0vXig/OmRldmljZS1jbXlrfGNteWspXFxzKlxcKFxccyooPzooKD86XFxkKlxcLik/XFxkKyU/KVxccyosXFxzKigoPzpcXGQqXFwuKT9cXGQrJT8pXFxzKixcXHMqKCg/OlxcZCpcXC4pP1xcZCslPylcXHMqLFxccyooKD86XFxkKlxcLik/XFxkKyU/KSg/OlxccyosXFxzKigoPzpcXGQqXFwuKT9cXGQrKSk/fCgoPzpcXGQqXFwuKT9cXGQrJT8pXFxzKigoPzpcXGQqXFwuKT9cXGQrJT8pXFxzKigoPzpcXGQqXFwuKT9cXGQrJT8pXFxzKigoPzpcXGQqXFwuKT9cXGQrJT8pKD86XFxzKlxcL1xccyooKD86XFxkKlxcLik/XFxkKyU/KSk/KVxccypcXCkkLyxhKSxGPS9eKC0/KD86XFxkKlxcLik/XFxkKykoKD86ZGVnfGdyYWR8cmFkfHR1cm4pPykkLyxtPS9eKFxcZCsoPzpcXC5cXGQrKT98XFwuXFxkKyklJC8seT0vXjB4KFthLWZcXGRdezEsMn0pJC9pLEE9L1xceyhcXGQrKVxcfS9nLEU9XCJUaGUgcHJvdmlkZWQgc3RyaW5nIGNvbG9yIGRvZXNuJ3QgaGF2ZSBhIGNvcnJlY3QgZm9ybWF0XCIsdj1cIlRoZSBwcm92aWRlZCBjb2xvciBvYmplY3QgZG9lc24ndCBoYXZlIHRoZSBwcm9wZXIga2V5cyBvciBmb3JtYXRcIixIPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpfSxCPWZ1bmN0aW9uKHQpe3JldHVybitcIlwiLmNvbmNhdCh0KS5yZXBsYWNlKG0sXCIkMVwiKX0sQz1mdW5jdGlvbih0KXtyZXR1cm4gbS50ZXN0KFwiXCIuY29uY2F0KHQpKT9CKHQpOk1hdGgubWluKCt0LDEwMCl9LE09ZnVuY3Rpb24odCl7cmV0dXJuIDE9PT10Lmxlbmd0aCYmKHQrPXQpLHBhcnNlSW50KHQsMTYpfSxSPWZ1bmN0aW9uKHQpe3ZhciBlPUcodCwwKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtyZXR1cm4gMT09PWUubGVuZ3RoP1wiMHgwXCIuY29uY2F0KGUpOlwiMHhcIi5jb25jYXQoZSl9LEQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLCFlJiZtLnRlc3QodCk/TWF0aC5taW4oMjU1KkIodCkvMTAwLDI1NSk6eS50ZXN0KHQpPygzPT09dC5sZW5ndGgmJih0Kz10LnNsaWNlKC0xKSksZT9HKHQpLzI1NTpHKHQpKTpNYXRoLm1pbigrdCxlPzE6MjU1KX0sUz1mdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5taW4obS50ZXN0KHQpP0IodCkvMTAwOit0LDEpfSxMPWZ1bmN0aW9uKHQpe3JldHVybiBlKFtdLHQsITApLnNvcnQoKS5qb2luKFwiXCIpLnRvVXBwZXJDYXNlKCl9LEc9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT02KTt2YXIgcj1NYXRoLnBvdygxMCxlKTtyZXR1cm4gTWF0aC5yb3VuZCgrdCpyKS9yfSxrPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gTWF0aC5tYXgoZSxNYXRoLm1pbih0LHIpKX0sTz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHI8MCYmKHIrPTYpLHI+PTYmJihyLT02KSxHKHI8MT8yNTUqKChlLXQpKnIrdCk6cjwzPzI1NSplOnI8ND8yNTUqKChlLXQpKig0LXIpK3QpOjI1NSp0KX0sWD1mdW5jdGlvbih0LGUscil7ZS89MTAwO3ZhciBuPShyLz0xMDApPD0uNT9yKihlKzEpOnIrZS1yKmUsaT0yKnItbjtyZXR1cm57cjpPKGksbiwodC89NjApKzIpLGc6TyhpLG4sdCksYjpPKGksbix0LTIpfX0sWT1mdW5jdGlvbih0LGUscixuKXtyZXR1cm57cjpHKDI1NSooMS10KSoobj0xLW4pKSxnOkcoMjU1KigxLWUpKm4pLGI6RygyNTUqKDEtcikqbil9fSxqPWZ1bmN0aW9uKHQsZSxyKXt0Lz0yNTUsZS89MjU1LHIvPTI1NTt2YXIgbj0xLU1hdGgubWF4KHQsZSxyKSxpPTEtbixvPWkmJihpLWUpL2ksYT1pJiYoaS1yKS9pO3JldHVybntjOkcoMTAwKihpJiYoaS10KS9pKSksbTpHKDEwMCpvKSx5OkcoMTAwKmEpLGs6RygxMDAqbil9fSxLPWZ1bmN0aW9uKHQsZSxyLG4pe3ZvaWQgMD09PW4mJihuPTEpLHQvPTI1NSxlLz0yNTUsci89MjU1LG49TWF0aC5taW4obiwxKTt2YXIgaT1NYXRoLm1heCh0LGUsciksbz1NYXRoLm1pbih0LGUsciksYT1pLW8sdT0wLGM9MCxzPShpK28pLzI7aWYoMCE9PWEpe3N3aXRjaChpKXtjYXNlIHQ6dT0oZS1yKS9hJTY7YnJlYWs7Y2FzZSBlOnU9KHItdCkvYSsyO2JyZWFrO2Nhc2Ugcjp1PSh0LWUpL2ErNH0odT1HKDYwKnUpKTwwJiYodSs9MzYwKSxjPWEvKDEtTWF0aC5hYnMoMipzLTEpKX1yZXR1cm57aDp1LHM6RygxMDAqYyksbDpHKDEwMCpzKSxhOm59fSxJPWZ1bmN0aW9uKHQsZSl7aWYodDwwJiYodCs9MzYwKSx0PjM2MCYmKHQtPTM2MCksMzYwPT09dHx8MD09PXQpcmV0dXJuIHQ7dmFyIHI9W1swLDEyMF0sWzEyMCwxODBdLFsxODAsMjQwXSxbMjQwLDM2MF1dLG49W1swLDYwXSxbNjAsMTIwXSxbMTIwLDI0MF0sWzI0MCwzNjBdXSxpPWU/bjpyLG89MCxhPTAsdT0wLGM9MDtyZXR1cm4oZT9yOm4pLmZpbmQoKGZ1bmN0aW9uKGUscil7cmV0dXJuIHQ+PWVbMF0mJnQ8ZVsxXSYmKG89ZVswXSxhPWVbMV0sdT1pW3JdWzBdLGM9aVtyXVsxXSwhMCl9KSksdSsoYy11KS8oYS1vKSoodC1vKX0sUD1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPSExKTt2YXIgcj1MKE9iamVjdC5rZXlzKHQpKTtyZXR1cm4gZ1twW3JdXS5yZWR1Y2UoKGZ1bmN0aW9uKHIsbil7dmFyIGksbyxhPXRbbl07cmV0dXJuIHZvaWQgMCE9PWEmJihlP3IucHVzaCgoaT1HKGEsMCksMT09PShvPUcoaSwwKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSkubGVuZ3RoJiYobz1cIjBcIi5jb25jYXQobykpLG8pKTpyLnB1c2goYSkpLHJ9KSxbXSl9LFQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5yZXBsYWNlKEEsKGZ1bmN0aW9uKHQscil7cmV0dXJuXCJcIi5jb25jYXQoZVsrci0xXSl9KSl9LHc9KCh1PXt9KVtyLkhFWF09ZnVuY3Rpb24odCl7dmFyIGU9UCh0LCEwKSxyPTQ9PT1lLmxlbmd0aD9cIiN7MX17Mn17M317NH1cIjpcIiN7MX17Mn17M31cIjtyZXR1cm4gVChyLGUpfSx1W3IuUkdCXT1mdW5jdGlvbih0KXt2YXIgZT1QKHQpLHI9ND09PWUubGVuZ3RoP1wicmdiYSh7MX0sezJ9LHszfSx7NH0pXCI6XCJyZ2IoezF9LHsyfSx7M30pXCI7cmV0dXJuIFQocixlKX0sdVtyLkhTTF09ZnVuY3Rpb24odCl7dmFyIGU9UCh0KSxyPTQ9PT1lLmxlbmd0aD9cImhzbGEoezF9LHsyfSUsezN9JSx7NH0pXCI6XCJoc2woezF9LHsyfSUsezN9JSlcIjtyZXR1cm4gVChyLGUpfSx1W3IuQ01ZS109ZnVuY3Rpb24odCl7dmFyIGU9UCh0KSxyPTU9PT1lLmxlbmd0aD9cImNteWsoezF9JSx7Mn0lLHszfSUsezR9JSx7NX0pXCI6XCJjbXlrKHsxfSUsezJ9JSx7M30lLHs0fSUpXCI7cmV0dXJuIFQocixlKX0sdSkseD1mdW5jdGlvbih0KXtpZihcInN0cmluZ1wiPT10eXBlb2YgdCl7dmFyIGU9dC5tYXRjaChGKSxyPStlWzFdO3N3aXRjaChlWzJdKXtjYXNlXCJyYWRcIjp0PUcoMTgwKnIvTWF0aC5QSSk7YnJlYWs7Y2FzZVwidHVyblwiOnQ9RygzNjAqcik7YnJlYWs7ZGVmYXVsdDp0PXJ9fXJldHVybih0PjM2MHx8dDwwKSYmKHQtPTM2MCpNYXRoLmZsb29yKHQvMzYwKSksdH0sTj1mdW5jdGlvbih0KXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdCYmKHQ9bS50ZXN0KHQpP0IodCkvMTAwOit0KSxpc05hTigrdCl8fHQ+MT8xOkcodCl9LFY9ZnVuY3Rpb24ocixuLG8pe3JldHVybiBuLnJlZHVjZSgoZnVuY3Rpb24obixhKXtyZXR1cm4gZShlKFtdLG4sITApLFt0KHQoe30scikse2g6bz09PWkuQURESVRJVkU/eChyLmgrYSk6eChJKEkoci5oLCExKSthLCEwKSl9KV0sITEpfSksW3Qoe30scildKX0sVT1mdW5jdGlvbih0LGUpe3JldHVybiBWKHQsWzMwLC0zMF0sZSl9LHE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gVih0LFsxODBdLGUpfSwkPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFYodCxbMTUwLC0xNTBdLGUpfSxfPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFYodCxbMTIwLC0xMjBdLGUpfSxRPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFYodCxbNjAsLTEyMCwxODBdLGUpfSx6PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFYodCxbOTAsLTkwLDE4MF0sZSl9LEo9ZnVuY3Rpb24odCl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQ/ZnVuY3Rpb24odCl7dmFyIGU7aWYoT2JqZWN0LmtleXMocikuc29tZSgoZnVuY3Rpb24ocil7aWYoYltyXS50ZXN0KHQpKXJldHVybiBlPXIsITB9KSksIWUmJn5mLmluZGV4T2YodCkmJihlPXIuSEVYKSwhZSl0aHJvdyBuZXcgRXJyb3IoRSk7cmV0dXJuIGV9KHQpOmZ1bmN0aW9uKHQpe3ZhciBlLG49ITEsaT1MKE9iamVjdC5rZXlzKHQpKTtpZihwW2ldJiYoZT1wW2ldKSxlJiZlPT09ci5SR0Ipe3ZhciBvPU9iamVjdC5lbnRyaWVzKHQpLnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiF5LnRlc3QoXCJcIi5jb25jYXQodFsxXSkpfSkpLGE9T2JqZWN0LmVudHJpZXModCkuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIShtLnRlc3QoXCJcIi5jb25jYXQodFsxXSkpfHwheS50ZXN0KFwiXCIuY29uY2F0KHRbMV0pKSYmIWlzTmFOKCt0WzFdKSYmK3RbMV08PTI1NSl9KSk7byYmYSYmKG49ITApLG98fChlPXIuSEVYKX1pZighZXx8bil0aHJvdyBuZXcgRXJyb3Iodik7cmV0dXJuIGV9KHQpfSxXPSgoYz17fSlbci5IRVhdPWZ1bmN0aW9uKHQpe3ZhciBlPSh+Zi5pbmRleE9mKHQpP29bdF06dCkubWF0Y2goYi5IRVgpLHI9e3I6TShlWzFdfHxlWzVdKSxnOk0oZVsyXXx8ZVs2XSksYjpNKGVbM118fGVbN10pfSxuPWVbNF18fGVbOF07cmV0dXJuIHZvaWQgMCE9PW4mJihyLmE9TShuKS8yNTUpLHJ9LGNbci5SR0JdPWZ1bmN0aW9uKHQpe3ZhciBlPXQubWF0Y2goYi5SR0IpLHI9RChlWzFdfHxlWzVdKSxuPUQoZVsyXXx8ZVs2XSksaT1EKGVbM118fGVbN10pLG89ZVs0XXx8ZVs4XSxhPXtyOk1hdGgubWluKHIsMjU1KSxnOk1hdGgubWluKG4sMjU1KSxiOk1hdGgubWluKGksMjU1KX07cmV0dXJuIHZvaWQgMCE9PW8mJihhLmE9TihvKSksYX0sY1tyLkhTTF09ZnVuY3Rpb24odCl7dmFyIGU9dC5tYXRjaChiLkhTTCkscj14KGVbMV18fGVbNV0pLG49QyhlWzJdfHxlWzZdKSxpPUMoZVszXXx8ZVs3XSksbz1lWzRdfHxlWzhdLGE9WChyLG4saSk7cmV0dXJuIHZvaWQgMCE9PW8mJihhLmE9TihvKSksYX0sY1tyLkNNWUtdPWZ1bmN0aW9uKHQpe3ZhciBlPXQubWF0Y2goYi5DTVlLKSxyPVMoZVsxXXx8ZVs2XSksbj1TKGVbMl18fGVbN10pLGk9UyhlWzNdfHxlWzhdKSxvPVMoZVs0XXx8ZVs5XSksYT1lWzVdfHxlWzEwXSx1PVkocixuLGksbyk7cmV0dXJuIHZvaWQgMCE9PWEmJih1LmE9TihhKSksdX0sYyksWj0oKHM9e30pW3IuSEVYXT1mdW5jdGlvbih0KXt2YXIgZT17cjpEKFwiXCIuY29uY2F0KHQucikpLGc6RChcIlwiLmNvbmNhdCh0LmcpKSxiOkQoXCJcIi5jb25jYXQodC5iKSl9O3JldHVybiBIKHQsXCJhXCIpJiYoZS5hPU1hdGgubWluKEQoXCJcIi5jb25jYXQodC5hKSwhMCksMSkpLGV9LHNbci5SR0JdPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLkhFWCh0KX0sc1tyLkhTTF09ZnVuY3Rpb24odCl7dmFyIGU9QyhcIlwiLmNvbmNhdCh0LnMpKSxyPUMoXCJcIi5jb25jYXQodC5sKSksbj1YKHgodC5oKSxlLHIpO3JldHVybiBIKHQsXCJhXCIpJiYobi5hPU4odC5hKSksbn0sc1tyLkNNWUtdPWZ1bmN0aW9uKHQpe3ZhciBlPVMoXCJcIi5jb25jYXQodC5jKSkscj1TKFwiXCIuY29uY2F0KHQubSkpLG49UyhcIlwiLmNvbmNhdCh0LnkpKSxpPVMoXCJcIi5jb25jYXQodC5rKSksbz1ZKGUscixuLGkpO3JldHVybiBIKHQsXCJhXCIpJiYoby5hPU4odC5hKSksb30scyksdHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9Sih0KSksXCJzdHJpbmdcIj09dHlwZW9mIHQ/V1tlXSh0KTpaW2VdKHQpfSxldD0oKGQ9e30pW3IuSEVYXT1mdW5jdGlvbih0KXtyZXR1cm57cjpSKHQuciksZzpSKHQuZyksYjpSKHQuYil9fSxkLkhFWEE9ZnVuY3Rpb24odCl7dmFyIGU9ZXQuSEVYKHQpO3JldHVybiBlLmE9SCh0LFwiYVwiKT9SKDI1NSp0LmEpOlwiMHhGRlwiLGV9LGRbci5SR0JdPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIEgodCxcImFcIikmJmRlbGV0ZSB0LmEsb3QodCxlKX0sZC5SR0JBPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuYT1IKHQsXCJhXCIpP0codC5hKToxLG90KHQsZSl9LGRbci5IU0xdPWZ1bmN0aW9uKHQsZSl7dmFyIHI9Syh0LnIsdC5nLHQuYik7cmV0dXJuIGRlbGV0ZSByLmEsYXQocixlKX0sZC5IU0xBPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZXQuSFNMKHQsZSk7cmV0dXJuIHIuYT1IKHQsXCJhXCIpP0codC5hLGUpOjEscn0sZFtyLkNNWUtdPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHV0KGoodC5yLHQuZyx0LmIpLGUpfSxkLkNNWUtBPWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZXQuQ01ZSyh0LGUpO3JldHVybiByLmE9SCh0LFwiYVwiKT9HKHQuYSxlKToxLHJ9LGQpLHJ0PWZ1bmN0aW9uKGUsbixpLG8pe3ZhciBhPUooZSksdT1cInN0cmluZ1wiPT10eXBlb2YgZSxjPXR0KGUsYSkscz1cInN0cmluZ1wiPT10eXBlb2YgZSYmSChjLFwiYVwiKXx8XCJzdHJpbmdcIiE9dHlwZW9mIGUmJkgoZSxcImFcIiksZD1LKGMucixjLmcsYy5iLGMuYSk7c3x8ZGVsZXRlIGQuYTt2YXIgaD1pP2QubC8obisxKTooMTAwLWQubCkvKG4rMSksbD1BcnJheShuKS5maWxsKG51bGwpLm1hcCgoZnVuY3Rpb24oZSxyKXtyZXR1cm4gdCh0KHt9LGQpLHtsOmQubCtoKihyKzEpKigxLTIqK2kpfSl9KSk7c3dpdGNoKGEpe2Nhc2Ugci5IRVg6ZGVmYXVsdDpyZXR1cm4gbC5tYXAoKGZ1bmN0aW9uKGUpe3ZhciByPVgoZS5oLGUucyxlLmwpO3JldHVybiBzJiYoci5hPWUuYSksdT9zP3cuSEVYKG90KHQodCh7fSxyKSx7YTpHKDI1NSpyLmEpfSksbykpOncuSEVYKG90KHIsbykpOnM/ZXQuSEVYQShyKTpldC5IRVgocil9KSk7Y2FzZSByLlJHQjpyZXR1cm4gbC5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPVgodC5oLHQucyx0LmwpO3JldHVybiBzJiYoZS5hPXQuYSksdT93LlJHQihvdChlLG8pKTpzP2V0LlJHQkEoZSxvKTpldC5SR0IoZSxvKX0pKTtjYXNlIHIuSFNMOnJldHVybiBsLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHU/dy5IU0woYXQoZSxvKSk6cz9ldC5IU0xBKHQodCh7fSxYKGUuaCxlLnMsZS5sKSkse2E6ZS5hfSksbyk6ZXQuSFNMKFgoZS5oLGUucyxlLmwpLG8pfSkpfX0sbnQ9KChoPXtidWlsZEhhcm1vbnk6ZnVuY3Rpb24odCxlLG4saSl7dmFyIG89Sih0KSxhPXR0KHQsbyksdT1LKGEucixhLmcsYS5iLGEuYSksYz1cInN0cmluZ1wiPT10eXBlb2YgdCYmSChhLFwiYVwiKXx8XCJzdHJpbmdcIiE9dHlwZW9mIHQmJkgodCxcImFcIikscz1cInN0cmluZ1wiPT10eXBlb2YgdDtzd2l0Y2gobyl7Y2FzZSByLkhFWDpkZWZhdWx0OnJldHVybiBjP3RoaXMuSEVYQShhdCh1LDApLGUsbixzKTp0aGlzLkhFWChhdCh1LDApLGUsbixzKTtjYXNlIHIuSFNMOnJldHVybiBjP3RoaXMuSFNMQSh1LGUsbixzLGkpOnRoaXMuSFNMKHUsZSxuLHMsaSk7Y2FzZSByLlJHQjpyZXR1cm4gYz90aGlzLlJHQkEodSxlLG4scyxpKTp0aGlzLlJHQih1LGUsbixzLGkpfX19KVtyLkhFWF09ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIGUodCxyKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBuP3cuSEVYKFgodC5oLHQucyx0LmwpKTpldC5IRVgoWCh0LmgsdC5zLHQubCkpfSkpfSxoLkhFWEE9ZnVuY3Rpb24oZSxyLG4saSl7cmV0dXJuIHIoZSxuKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBpP3cuSEVYKHQodCh7fSxYKGUuaCxlLnMsZS5sKSkse2E6MjU1Kk4oZS5hKX0pKTpldC5IRVhBKHQodCh7fSxYKGUuaCxlLnMsZS5sKSkse2E6TihlLmEpfSkpfSkpfSxoW3IuUkdCXT1mdW5jdGlvbih0LGUscixuLGkpe3JldHVybiBlKHQscikubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbj93LlJHQihvdChYKHQuaCx0LnMsdC5sKSxpKSk6ZXQuUkdCKFgodC5oLHQucyx0LmwpLGkpfSkpfSxoLlJHQkE9ZnVuY3Rpb24oZSxyLG4saSxvKXtyZXR1cm4gcihlLG4pLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGk/dy5SR0Iob3QodCh0KHt9LFgoZS5oLGUucyxlLmwpKSx7YTpOKGUuYSl9KSxvKSk6ZXQuUkdCQSh0KHQoe30sWChlLmgsZS5zLGUubCkpLHthOk4oZS5hKX0pLG8pfSkpfSxoW3IuSFNMXT1mdW5jdGlvbih0LGUscixuLGkpe3JldHVybiBlKHQscikubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbj93LkhTTChhdCh7aDp0Lmgsczp0LnMsbDp0Lmx9LGkpKTpldC5IU0woWCh0LmgsdC5zLHQubCksaSl9KSl9LGguSFNMQT1mdW5jdGlvbihlLHIsbixpLG8pe3JldHVybiByKGUsbikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gaT93LkhTTChhdCh0KHQoe30sZSkse2E6TihlLmEpfSksbykpOmV0LkhTTEEodCh0KHt9LFgoZS5oLGUucyxlLmwpKSx7YTpOKGUuYSl9KSxvKX0pKX0saCksaXQ9KChsPXttaXg6ZnVuY3Rpb24oZSxyKXt2YXIgbixvLGEsdSxjLHMsZCxoLGwsZixnLHAsYixGLG0seT1lLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9Sih0KTtyZXR1cm4gdHQodCxlKX0pKSxBPXI9PT1pLlNVQlRSQUNUSVZFP3kubWFwKChmdW5jdGlvbih0KXt2YXIgZSxyLG4saSxvLGEsdSxjLHMsZCxoLGwsZixnLHA9KGU9dC5yLHI9dC5nLG49dC5iLGk9TWF0aC5taW4oZSxyLG4pLG89TWF0aC5taW4oMjU1LWUsMjU1LXIsMjU1LW4pLGE9ZS1pLHU9ci1pLGM9bi1pLHM9TWF0aC5taW4oYSx1KSxkPWEtcyxoPSh1K3MpLzIsbD0oYyt1LXMpLzIsZj1NYXRoLm1heChkLGgsbCkvTWF0aC5tYXgoYSx1LGMpLGc9aXNOYU4oZil8fGY9PT0xLzB8fGY8PTA/MTpmLHtyOmQvZytvLHk6aC9nK28sYjpsL2crb30pO3JldHVybiBIKHQsXCJhXCIpJiYocC5hPXQuYSkscH0pKTpudWxsO2Z1bmN0aW9uIEUoZSl7dmFyIG49cj09PWkuQURESVRJVkU/e3I6MCxnOjAsYjowLGE6MH06e3I6MCx5OjAsYjowLGE6MH07cmV0dXJuIGUucmVkdWNlKChmdW5jdGlvbihlLG4pe3ZhciBvPUgobixcImFcIik/bi5hOjEsYT17cjpNYXRoLm1pbihlLnIrbi5yKm8sMjU1KSxiOk1hdGgubWluKGUuYituLmIqbywyNTUpLGE6MS0oMS1vKSooMS1lLmEpfSx1PVwiZ1wiaW4gZT9lLmc6ZS55LGM9XCJnXCJpbiBuP24uZzpuLnk7cmV0dXJuIHQodCh7fSxhKSxyPT09aS5BRERJVElWRT97ZzpNYXRoLm1pbih1K2MqbywyNTUpfTp7eTpNYXRoLm1pbih1K2MqbywyNTUpfSl9KSxuKX1pZihyPT09aS5BRERJVElWRSluPUUoeSk7ZWxzZXt2YXIgdj1FKEEpO289di5yLGE9di55LHU9di5iLGM9TWF0aC5taW4obyxhLHUpLHM9TWF0aC5taW4oMjU1LW8sMjU1LWEsMjU1LXUpLGQ9by1jLGg9YS1jLGw9dS1jLGY9TWF0aC5taW4oaCxsKSxnPWQraC1mLHA9aCtmLGI9MioobC1mKSxGPU1hdGgubWF4KGcscCxiKS9NYXRoLm1heChkLGgsbCksbT1pc05hTihGKXx8Rj09PTEvMHx8Rjw9MD8xOkYsKG49e3I6Zy9tK3MsZzpwL20rcyxiOmIvbStzfSkuYT12LmF9cmV0dXJue3I6RyhuLnIpLGc6RyhuLmcpLGI6RyhuLmIpLGE6ayhuLmEsMCwxKX19fSlbci5IRVhdPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLm1peCh0LGUpO3JldHVybiBkZWxldGUgbi5hLHI/dy5IRVgobik6ZXQuSEVYKG4pfSxsLkhFWEE9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMubWl4KHQsZSk7cmV0dXJuIG4uYT1yPzI1NSpOKG4uYSk6TihuLmEpLHI/dy5IRVgobik6ZXQuSEVYQShuKX0sbFtyLlJHQl09ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9dGhpcy5taXgodCxlKTtyZXR1cm4gZGVsZXRlIGkuYSxyP3cuUkdCKGkpOmV0LlJHQihpLG4pfSxsLlJHQkE9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9dGhpcy5taXgodCxlKTtyZXR1cm4gcj93LlJHQihpKTpldC5SR0JBKGksbil9LGxbci5IU0xdPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPXRoaXMubWl4KHQsZSksbz1LKGkucixpLmcsaS5iKTtyZXR1cm4gZGVsZXRlIGkuYSxkZWxldGUgby5hLHI/dy5IU0wobyk6ZXQuSFNMKGksbil9LGwuSFNMQT1mdW5jdGlvbih0LGUscixuKXt2YXIgaT10aGlzLm1peCh0LGUpLG89SyhpLnIsaS5nLGkuYixpLmEpO3JldHVybiByP3cuSFNMKG8pOmV0LkhTTEEoaSxuKX0sbCksb3Q9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdCh7cjpHKGUucixyKSxnOkcoZS5nLHIpLGI6RyhlLmIscil9LEgoZSxcImFcIik/e2E6RyhlLmEscil9Ont9KX0sYXQ9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdCh7aDpHKGUuaCxyKSxzOkcoZS5zLHIpLGw6RyhlLmwscil9LEgoZSxcImFcIik/e2E6RyhlLmEscil9Ont9KX0sdXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm57YzpHKHQuYyxlKSxtOkcodC5tLGUpLHk6Ryh0LnksZSksazpHKHQuayxlKX19LGN0PWZ1bmN0aW9uKHQsZSxyLG4saSxvKXt2YXIgYT1pKHR0KHQsZSksbik7cmV0dXJuIHI/byhhKTphfSxzdD1mdW5jdGlvbih0LGUscixuLGksbyxhKXtyPDEmJihyPTUpO3ZhciB1PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yLTEsaT0oZS5yLXQucikvbixvPShlLmctdC5nKS9uLGE9KGUuYi10LmIpL24sdT1OKHQuYSksYz0oTihlLmEpLXUpL247cmV0dXJuIEFycmF5KHIpLmZpbGwobnVsbCkubWFwKChmdW5jdGlvbihyLHMpe3JldHVybiAwPT09cz90OnM9PT1uP2U6e3I6Ryh0LnIraSpzKSxnOkcodC5nK28qcyksYjpHKHQuYithKnMpLGE6Ryh1K2Mqcyl9fSkpfSh0dCh0KSx0dChlKSxyKTtyZXR1cm4gdS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPW8odCxpKTtyZXR1cm4gbj9hKGUpOmV9KSl9LGR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LGUpe3ZvaWQgMD09PWUmJihlPTYpLHRoaXMucmdiPXR0KHQpLHRoaXMuX2RlY2ltYWxzPWUsdGhpcy51cGRhdGVIU0woKSx0aGlzLnVwZGF0ZUNNWUsoKX1yZXR1cm4gZS5wcm90b3R5cGUudXBkYXRlUkdCPWZ1bmN0aW9uKCl7dGhpcy5yZ2I9dCh0KHt9LFgodGhpcy5oc2wuaCx0aGlzLmhzbC5zLHRoaXMuaHNsLmwpKSx7YTp0aGlzLmhzbC5hfSl9LGUucHJvdG90eXBlLnVwZGF0ZVJHQkZyb21DTVlLPWZ1bmN0aW9uKCl7dGhpcy5yZ2I9dCh0KHt9LFkodGhpcy5jbXlrLmMsdGhpcy5jbXlrLm0sdGhpcy5jbXlrLnksdGhpcy5jbXlrLmspKSx7YTp0aGlzLnJnYi5hfSl9LGUucHJvdG90eXBlLnVwZGF0ZUhTTD1mdW5jdGlvbigpe3RoaXMuaHNsPUsodGhpcy5yZ2Iucix0aGlzLnJnYi5nLHRoaXMucmdiLmIsdGhpcy5yZ2IuYSl9LGUucHJvdG90eXBlLnVwZGF0ZUNNWUs9ZnVuY3Rpb24oKXt0aGlzLmNteWs9aih0aGlzLnJnYi5yLHRoaXMucmdiLmcsdGhpcy5yZ2IuYil9LGUucHJvdG90eXBlLnVwZGF0ZVJHQkFuZENNWUs9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51cGRhdGVSR0IoKSx0aGlzLnVwZGF0ZUNNWUsoKSx0aGlzfSxlLnByb3RvdHlwZS51cGRhdGVIU0xBbmRDTVlLPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudXBkYXRlSFNMKCksdGhpcy51cGRhdGVDTVlLKCksdGhpc30sZS5wcm90b3R5cGUudXBkYXRlUkdCQW5kSFNMPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudXBkYXRlUkdCRnJvbUNNWUsoKSx0aGlzLnVwZGF0ZUhTTCgpLHRoaXN9LGUucHJvdG90eXBlLnNldERlY2ltYWxzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kZWNpbWFscz10LHRoaXN9LGUucHJvdG90eXBlLnNldEg9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaHNsLmg9eCh0KSx0aGlzLnVwZGF0ZVJHQkFuZENNWUsoKX0sZS5wcm90b3R5cGUuc2V0Uz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oc2wucz1rKHQsMCwxMDApLHRoaXMudXBkYXRlUkdCQW5kQ01ZSygpfSxlLnByb3RvdHlwZS5zZXRMPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhzbC5sPWsodCwwLDEwMCksdGhpcy51cGRhdGVSR0JBbmRDTVlLKCl9LGUucHJvdG90eXBlLnNldFI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmdiLnI9ayh0LDAsMjU1KSx0aGlzLnVwZGF0ZUhTTEFuZENNWUsoKX0sZS5wcm90b3R5cGUuc2V0Rz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZ2IuZz1rKHQsMCwyNTUpLHRoaXMudXBkYXRlSFNMQW5kQ01ZSygpfSxlLnByb3RvdHlwZS5zZXRCPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJnYi5iPWsodCwwLDI1NSksdGhpcy51cGRhdGVIU0xBbmRDTVlLKCl9LGUucHJvdG90eXBlLnNldEE9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaHNsLmE9dGhpcy5yZ2IuYT1rKHQsMCwxKSx0aGlzfSxlLnByb3RvdHlwZS5zZXRDPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNteWsuYz1rKHQsMCwxMDApLHRoaXMudXBkYXRlUkdCQW5kSFNMKCl9LGUucHJvdG90eXBlLnNldE09ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY215ay5tPWsodCwwLDEwMCksdGhpcy51cGRhdGVSR0JBbmRIU0woKX0sZS5wcm90b3R5cGUuc2V0WT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbXlrLnk9ayh0LDAsMTAwKSx0aGlzLnVwZGF0ZVJHQkFuZEhTTCgpfSxlLnByb3RvdHlwZS5zZXRLPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNteWsuaz1rKHQsMCwxMDApLHRoaXMudXBkYXRlUkdCQW5kSFNMKCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcImRlY2ltYWxzXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWNpbWFsc30sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJIXCIse2dldDpmdW5jdGlvbigpe3JldHVybiBHKHRoaXMuaHNsLmgsdGhpcy5kZWNpbWFscyl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiU1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRyh0aGlzLmhzbC5zLHRoaXMuZGVjaW1hbHMpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkxcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEcodGhpcy5oc2wubCx0aGlzLmRlY2ltYWxzKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJSXCIse2dldDpmdW5jdGlvbigpe3JldHVybiBHKHRoaXMucmdiLnIsdGhpcy5kZWNpbWFscyl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiR1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRyh0aGlzLnJnYi5nLHRoaXMuZGVjaW1hbHMpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkJcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEcodGhpcy5yZ2IuYix0aGlzLmRlY2ltYWxzKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJBXCIse2dldDpmdW5jdGlvbigpe3JldHVybiBHKHRoaXMuaHNsLmEsdGhpcy5kZWNpbWFscyl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiQ1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRyh0aGlzLmNteWsuYyx0aGlzLmRlY2ltYWxzKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJNXCIse2dldDpmdW5jdGlvbigpe3JldHVybiBHKHRoaXMuY215ay5tLHRoaXMuZGVjaW1hbHMpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIllcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEcodGhpcy5jbXlrLnksdGhpcy5kZWNpbWFscyl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiS1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRyh0aGlzLmNteWsuayx0aGlzLmRlY2ltYWxzKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJIRVhPYmplY3RcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGV0LkhFWCh0aGlzLnJnYil9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiSEVYQU9iamVjdFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZXQuSEVYQSh0aGlzLnJnYil9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiUkdCT2JqZWN0XCIse2dldDpmdW5jdGlvbigpe3JldHVybntyOnRoaXMuUixnOnRoaXMuRyxiOnRoaXMuQn19LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiUkdCQU9iamVjdFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdCh0KHt9LHRoaXMuUkdCT2JqZWN0KSx7YTp0aGlzLkF9KX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJIU0xPYmplY3RcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJue2g6dGhpcy5ILHM6dGhpcy5TLGw6dGhpcy5MfX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJIU0xBT2JqZWN0XCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0KHQoe30sdGhpcy5IU0xPYmplY3QpLHthOnRoaXMuQX0pfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkNNWUtPYmplY3RcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJue2M6dGhpcy5DLG06dGhpcy5NLHk6dGhpcy5ZLGs6dGhpcy5LfX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJDTVlLQU9iamVjdFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdCh0KHt9LHRoaXMuQ01ZS09iamVjdCkse2E6dGhpcy5BfSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiSEVYXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB3LkhFWCh7cjp0aGlzLlIsZzp0aGlzLkcsYjp0aGlzLkJ9KX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJIRVhBXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB3LkhFWCh7cjp0aGlzLlIsZzp0aGlzLkcsYjp0aGlzLkIsYToyNTUqdGhpcy5BfSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiUkdCXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB3LlJHQih7cjp0aGlzLlIsZzp0aGlzLkcsYjp0aGlzLkJ9KX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJSR0JBXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB3LlJHQih7cjp0aGlzLlIsZzp0aGlzLkcsYjp0aGlzLkIsYTp0aGlzLkF9KX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJIU0xcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuSFNMKHtoOnRoaXMuSCxzOnRoaXMuUyxsOnRoaXMuTH0pfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkhTTEFcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuSFNMKHtoOnRoaXMuSCxzOnRoaXMuUyxsOnRoaXMuTCxhOnRoaXMuQX0pfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkNNWUtcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuQ01ZSyh7Yzp0aGlzLkMsbTp0aGlzLk0seTp0aGlzLlksazp0aGlzLkt9KX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJDTVlLQVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5DTVlLKHtjOnRoaXMuQyxtOnRoaXMuTSx5OnRoaXMuWSxrOnRoaXMuSyxhOnRoaXMuQX0pfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUudG9IRVg9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT0hMCk7dmFyIHI9Sih0KTtyZXR1cm4gY3QodCxyLGUsMCxldC5IRVgsdy5IRVgpfSxlLnRvSEVYQT1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPSEwKTt2YXIgcj1KKHQpO3JldHVybiBjdCh0LHIsZSwwLGV0LkhFWEEsdy5IRVgpfSxlLnRvUkdCPWZ1bmN0aW9uKHQsZSxyKXt2b2lkIDA9PT1lJiYoZT0hMCksdm9pZCAwPT09ciYmKHI9Nik7dmFyIG49Sih0KTtyZXR1cm4gY3QodCxuLGUscixldC5SR0Isdy5SR0IpfSxlLnRvUkdCQT1mdW5jdGlvbih0LGUscil7dm9pZCAwPT09ZSYmKGU9ITApLHZvaWQgMD09PXImJihyPTYpO3ZhciBuPUoodCk7cmV0dXJuIGN0KHQsbixlLHIsZXQuUkdCQSx3LlJHQil9LGUudG9IU0w9ZnVuY3Rpb24odCxlLHIpe3ZvaWQgMD09PWUmJihlPSEwKSx2b2lkIDA9PT1yJiYocj02KTt2YXIgbj1KKHQpO3JldHVybiBjdCh0LG4sZSxyLGV0LkhTTCx3LkhTTCl9LGUudG9IU0xBPWZ1bmN0aW9uKHQsZSxyKXt2b2lkIDA9PT1lJiYoZT0hMCksdm9pZCAwPT09ciYmKHI9Nik7dmFyIG49Sih0KTtyZXR1cm4gY3QodCxuLGUscixldC5IU0xBLHcuSFNMKX0sZS50b0NNWUs9ZnVuY3Rpb24odCxlLHIpe3ZvaWQgMD09PWUmJihlPSEwKSx2b2lkIDA9PT1yJiYocj02KTt2YXIgbj1KKHQpO3JldHVybiBjdCh0LG4sZSxyLGV0LkNNWUssdy5DTVlLKX0sZS50b0NNWUtBPWZ1bmN0aW9uKHQsZSxyKXt2b2lkIDA9PT1lJiYoZT0hMCksdm9pZCAwPT09ciYmKHI9Nik7dmFyIG49Sih0KTtyZXR1cm4gY3QodCxuLGUscixldC5DTVlLQSx3LkNNWUspfSxlLmdldEJsZW5kSEVYPWZ1bmN0aW9uKHQsZSxyLG4saSl7cmV0dXJuIHZvaWQgMD09PXImJihyPTUpLHZvaWQgMD09PW4mJihuPSEwKSx2b2lkIDA9PT1pJiYoaT02KSxzdCh0LGUscixuLGksZXQuSEVYLHcuSEVYKX0sZS5nZXRCbGVuZEhFWEE9ZnVuY3Rpb24odCxlLHIsbixpKXtyZXR1cm4gdm9pZCAwPT09ciYmKHI9NSksdm9pZCAwPT09biYmKG49ITApLHZvaWQgMD09PWkmJihpPTYpLHN0KHQsZSxyLG4saSxldC5IRVhBLHcuSEVYKX0sZS5nZXRCbGVuZFJHQj1mdW5jdGlvbih0LGUscixuLGkpe3JldHVybiB2b2lkIDA9PT1yJiYocj01KSx2b2lkIDA9PT1uJiYobj0hMCksdm9pZCAwPT09aSYmKGk9Niksc3QodCxlLHIsbixpLGV0LlJHQix3LlJHQil9LGUuZ2V0QmxlbmRSR0JBPWZ1bmN0aW9uKHQsZSxyLG4saSl7cmV0dXJuIHZvaWQgMD09PXImJihyPTUpLHZvaWQgMD09PW4mJihuPSEwKSx2b2lkIDA9PT1pJiYoaT02KSxzdCh0LGUscixuLGksZXQuUkdCQSx3LlJHQil9LGUuZ2V0QmxlbmRIU0w9ZnVuY3Rpb24odCxlLHIsbixpKXtyZXR1cm4gdm9pZCAwPT09ciYmKHI9NSksdm9pZCAwPT09biYmKG49ITApLHZvaWQgMD09PWkmJihpPTYpLHN0KHQsZSxyLG4saSxldC5IU0wsdy5IU0wpfSxlLmdldEJsZW5kSFNMQT1mdW5jdGlvbih0LGUscixuLGkpe3JldHVybiB2b2lkIDA9PT1yJiYocj01KSx2b2lkIDA9PT1uJiYobj0hMCksdm9pZCAwPT09aSYmKGk9Niksc3QodCxlLHIsbixpLGV0LkhTTEEsdy5IU0wpfSxlLmdldE1peEhFWD1mdW5jdGlvbih0LGUscil7cmV0dXJuIHZvaWQgMD09PWUmJihlPWkuQURESVRJVkUpLHZvaWQgMD09PXImJihyPSEwKSxpdC5IRVgodCxlLHIpfSxlLmdldE1peEhFWEE9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1pLkFERElUSVZFKSx2b2lkIDA9PT1yJiYocj0hMCksaXQuSEVYQSh0LGUscil9LGUuZ2V0TWl4UkdCPWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiB2b2lkIDA9PT1lJiYoZT1pLkFERElUSVZFKSx2b2lkIDA9PT1yJiYocj0hMCksdm9pZCAwPT09biYmKG49NiksaXQuUkdCKHQsZSxyLG4pfSxlLmdldE1peFJHQkE9ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIHZvaWQgMD09PWUmJihlPWkuQURESVRJVkUpLHZvaWQgMD09PXImJihyPSEwKSx2b2lkIDA9PT1uJiYobj02KSxpdC5SR0JBKHQsZSxyLG4pfSxlLmdldE1peEhTTD1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9aS5BRERJVElWRSksdm9pZCAwPT09ciYmKHI9ITApLHZvaWQgMD09PW4mJihuPTYpLGl0LkhTTCh0LGUscixuKX0sZS5nZXRNaXhIU0xBPWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiB2b2lkIDA9PT1lJiYoZT1pLkFERElUSVZFKSx2b2lkIDA9PT1yJiYocj0hMCksdm9pZCAwPT09biYmKG49NiksaXQuSFNMQSh0LGUscixuKX0sZS5nZXRTaGFkZXM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB2b2lkIDA9PT1yJiYocj02KSxydCh0LGUsITAscil9LGUuZ2V0VGludHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB2b2lkIDA9PT1yJiYocj02KSxydCh0LGUsITEscil9LGUuZ2V0SGFybW9ueT1mdW5jdGlvbih0LGUscixvKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9bi5DT01QTEVNRU5UQVJZKSx2b2lkIDA9PT1yJiYocj1pLkFERElUSVZFKSx2b2lkIDA9PT1vJiYobz02KSxmdW5jdGlvbih0LGUscixpKXt2YXIgbztyZXR1cm4obz17fSxvW24uQU5BTE9HT1VTXT1udC5idWlsZEhhcm1vbnkoZSxVLGksciksb1tuLkNPTVBMRU1FTlRBUlldPW50LmJ1aWxkSGFybW9ueShlLHEsaSxyKSxvW24uU1BMSVRfQ09NUExFTUVOVEFSWV09bnQuYnVpbGRIYXJtb255KGUsJCxpLHIpLG9bbi5UUklBRElDXT1udC5idWlsZEhhcm1vbnkoZSxfLGksciksb1tuLlRFVFJBRElDXT1udC5idWlsZEhhcm1vbnkoZSxRLGksciksb1tuLlNRVUFSRV09bnQuYnVpbGRIYXJtb255KGUseixpLHIpLG8pW3RdfShlLHQsbyxyKX0sZX0oKTtleHBvcnR7ZHQgYXMgQ29sb3JU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LFVBQVU7QUFBQSxFQUNWLFdBQVc7QUFBQSxFQUNYLFlBQVk7QUFBQSxFQUNaLGNBQWM7QUFBQSxFQUNkLFVBQVU7QUFBQSxFQUNWLFlBQVk7QUFBQSxFQUNaLE9BQU87QUFBQSxFQUNQLFlBQVk7QUFBQSxFQUNaLFFBQVE7QUFBQSxFQUNSLE9BQU87QUFBQSxFQUNQLFFBQVE7QUFBQSxFQUNSLE1BQU07QUFBQSxFQUNOLFNBQVM7QUFBQSxFQUNULFVBQVU7QUFBQSxFQUNWLE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLFFBQVE7QUFBQSxFQUNSLE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLFdBQVc7QUFBQSxFQUNYLFVBQVU7QUFBQSxFQUNWLE1BQU07QUFBQSxFQUNOLFVBQVU7QUFBQSxFQUNWLE9BQU87QUFBQSxFQUNQLFlBQVk7QUFBQSxFQUNaLE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLFNBQVM7QUFBQSxFQUNULFVBQVU7QUFBQSxFQUNWLFdBQVc7QUFBQSxFQUNYLFlBQVk7QUFBQSxFQUNaLFFBQVE7QUFBQSxFQUNSLFNBQVM7QUFBQSxFQUNULFNBQVM7QUFBQSxFQUNULFVBQVU7QUFBQSxFQUNWLFFBQVE7QUFBQSxFQUNSLE9BQU87QUFBQSxFQUNQLGNBQWM7QUFBQSxFQUNkLE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLGFBQWE7QUFBQSxFQUNiLE9BQU87QUFBQSxFQUNQLFVBQVU7QUFBQSxFQUNWLFVBQVU7QUFBQSxFQUNWLGlCQUFpQjtBQUFBLEVBQ2pCLFlBQVk7QUFBQSxFQUNaLGNBQWM7QUFBQSxFQUNkLE9BQU87QUFBQSxFQUNQLE1BQU07QUFBQSxFQUNOLFFBQVE7QUFBQSxFQUNSLGdCQUFnQjtBQUFBLEVBQ2hCLE9BQU87QUFBQSxFQUNQLFNBQVM7QUFBQSxFQUNULE9BQU87QUFBQSxFQUNQLGlCQUFpQjtBQUFBLEVBQ2pCLFFBQVE7QUFBQSxFQUNSLE9BQU87QUFBQSxFQUNQLFVBQVU7QUFBQSxFQUNWLDRCQUE0QjtBQUFBLEVBQzVCLE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLHFCQUFxQjtBQUFBLEVBQ3JCLE9BQU87QUFBQSxFQUNQLFNBQVM7QUFBQSxFQUNULFlBQVk7QUFBQSxFQUNaLFVBQVU7QUFBQSxFQUNWLFdBQVc7QUFBQSxFQUNYLE1BQU07QUFBQSxFQUNOLFFBQVE7QUFBQSxFQUNSLE1BQU07QUFBQSxFQUNOLE9BQU87QUFBQSxFQUNQLGlCQUFpQjtBQUFBLEVBQ2pCLE1BQU07QUFBQSxFQUNOLGFBQWE7QUFBQSxFQUNiLFVBQVU7QUFBQSxFQUNWLFdBQVc7QUFBQSxFQUNYLE9BQU87QUFBQSxFQUNQLE1BQU07QUFBQSxFQUNOLE9BQU87QUFBQSxFQUNQLFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFBQSxFQUNSLGFBQWE7QUFBQSxFQUNiLHNCQUFzQjtBQUFBLEVBQ3RCLE9BQU87QUFBQSxFQUNQLFVBQVU7QUFBQSxFQUNWLGFBQWE7QUFBQSxFQUNiLFlBQVk7QUFBQSxFQUNaLGFBQWE7QUFBQSxFQUNiLFdBQVc7QUFBQSxFQUNYLFdBQVc7QUFBQSxFQUNYLGVBQWU7QUFBQSxFQUNmLGtCQUFrQjtBQUFBLEVBQ2xCLE1BQU07QUFBQSxFQUNOLFNBQVM7QUFBQSxFQUNULGFBQWE7QUFBQSxFQUNiLFFBQVE7QUFBQSxFQUNSLGVBQWU7QUFBQSxFQUNmLFNBQVM7QUFBQSxFQUNULFNBQVM7QUFBQSxFQUNULGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGNBQWM7QUFBQSxFQUNkLE9BQU87QUFBQSxFQUNQLE1BQU07QUFBQSxFQUNOLFNBQVM7QUFBQSxFQUNULE9BQU87QUFBQSxFQUNQLFNBQVM7QUFBQSxFQUNULE9BQU87QUFBQSxFQUNQLFdBQVc7QUFBQSxFQUNYLFlBQVk7QUFBQSxFQUNaLE1BQU07QUFBQSxFQUNOLFNBQVM7QUFBQSxFQUNULFNBQVM7QUFBQSxFQUNULGNBQWM7QUFBQSxFQUNkLFFBQVE7QUFBQSxFQUNSLE9BQU87QUFBQSxFQUNQLFdBQVc7QUFBQSxFQUNYLFNBQVM7QUFBQSxFQUNULE1BQU07QUFBQSxFQUNOLHFCQUFxQjtBQUFBLEVBQ3JCLFVBQVU7QUFBQSxFQUNWLGFBQWE7QUFBQSxFQUNiLE9BQU87QUFBQSxFQUNQLFlBQVk7QUFBQSxFQUNaLFdBQVc7QUFBQSxFQUNYLFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFBQSxFQUNSLFNBQVM7QUFBQSxFQUNULG1CQUFtQjtBQUFBLEVBQ25CLGNBQWM7QUFBQSxFQUNkLFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFBQSxFQUNSLFNBQVM7QUFBQSxFQUNULFFBQVE7QUFBQSxFQUNSLGNBQWM7QUFBQSxFQUNkLFFBQVE7QUFBQSxFQUNSLFNBQVM7QUFBQSxFQUNULFVBQVU7QUFBQSxFQUNWLFlBQVk7QUFBQSxFQUNaLFFBQVE7QUFBQSxFQUNSLFVBQVU7QUFBQSxFQUNWLGdCQUFnQjtBQUFBLEVBQ2hCLE9BQU87QUFBQSxFQUNQLFVBQVU7QUFBQSxFQUNWLE1BQU07QUFBQSxFQUNOLGNBQWM7QUFBQSxFQUNkLFNBQVM7QUFBQSxFQUNULE9BQU87QUFBQSxFQUNQLFVBQVU7QUFBQSxFQUNWLGNBQWM7QUFBQSxFQUNkLGFBQWE7QUFBQSxFQUNiLFlBQVk7QUFBQSxFQUNaLFNBQVM7QUFBQSxFQUNULGNBQWM7QUFBQSxFQUNkLE1BQU07QUFBQSxFQUNOLFdBQVc7QUFBQSxFQUNYLGNBQWM7QUFBQSxFQUNkLFVBQVU7QUFBQSxFQUNWLGNBQWM7QUFBQSxFQUNkLFlBQVk7QUFBQSxFQUNaLGFBQWE7QUFBQSxFQUNiLFVBQVU7QUFBQSxFQUNWLFFBQVE7QUFBQSxFQUNSLE1BQU07QUFBQSxFQUNOLFVBQVU7QUFBQSxFQUNWLE1BQU07QUFBQSxFQUNOLEtBQUs7QUFBQSxFQUNMLE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLFVBQVU7QUFBQSxFQUNWLFNBQVM7QUFBQSxFQUNULE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLFNBQVM7QUFBQSxFQUNULE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLFFBQVE7QUFBQSxFQUNSLGtCQUFrQjtBQUFBLEVBQ2xCLFNBQVM7QUFBQSxFQUNULE1BQU07QUFBQSxFQUNOLE9BQU87QUFBQSxFQUNQLFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFBQSxFQUNSLGlCQUFpQjtBQUFBLEVBQ2pCLGNBQWM7QUFBQSxFQUNkLGdCQUFnQjtBQUFBLEVBQ2hCLE9BQU87QUFBQSxFQUNQLFNBQVM7QUFBQSxFQUNULFlBQVk7QUFBQSxFQUNaLE9BQU87QUFBQSxFQUNQLGlCQUFpQjtBQUFBLEVBQ2pCLE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLFVBQVU7QUFBQSxFQUNWLE1BQU07QUFBQSxFQUNOLGNBQWM7QUFBQSxFQUNkLE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLFNBQVM7QUFBQSxFQUNULFNBQVM7QUFBQSxFQUNULGlCQUFpQjtBQUFBLEVBQ2pCLFVBQVU7QUFBQSxFQUNWLFdBQVc7QUFBQSxFQUNYLGlCQUFpQjtBQUFBLEVBQ2pCLFNBQVM7QUFBQSxFQUNULE1BQU07QUFBQSxFQUNOLFNBQVM7QUFBQSxFQUNULE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLFFBQVE7QUFBQSxFQUNSLFdBQVc7QUFBQSxFQUNYLFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFBQSxFQUNSLE1BQU07QUFBQSxFQUNOLFlBQVk7QUFBQSxFQUNaLFdBQVc7QUFBQSxFQUNYLE1BQU07QUFBQSxFQUNOLFdBQVc7QUFBQSxFQUNYLE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLFNBQVM7QUFBQSxFQUNULFFBQVE7QUFBQSxFQUNSLE9BQU87QUFBQSxFQUNQLGdCQUFnQjtBQUFBLEVBQ2hCLE9BQU87QUFBQSxFQUNQLE1BQU07QUFBQSxFQUNOLFFBQVE7QUFBQSxFQUNSLFdBQVc7QUFBQSxFQUNYLFVBQVU7QUFBQSxFQUNWLFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFBQSxFQUNSLFdBQVc7QUFBQSxFQUNYLE1BQU07QUFBQSxFQUNOLE1BQU07QUFBQSxFQUNOLGFBQWE7QUFBQSxFQUNiLFdBQVc7QUFBQSxFQUNYLFFBQVE7QUFBQSxFQUNSLFVBQVU7QUFBQSxFQUNWLFFBQVE7QUFBQSxFQUNSLE9BQU87QUFBQSxFQUNQLFFBQVE7QUFDVjtBQUdPLElBQU0sYUFBYTtBQUFBLEVBQ3hCLE9BQU07QUFBQSxFQUNOLFNBQVE7QUFBQSxFQUNSLGNBQWE7QUFBQSxFQUNiLE1BQUs7QUFBQSxFQUNMLFFBQU87QUFBQSxFQUNQLFFBQU87QUFBQSxFQUNQLGdCQUFlO0FBQUEsRUFDZixPQUFNO0FBQUEsRUFDTixRQUFPO0FBQUEsRUFDUCxNQUFLO0FBQUEsRUFDTCxVQUFTO0FBQUEsRUFDVCxNQUFLO0FBQUEsRUFDTCxjQUFhO0FBQUEsRUFDYixRQUFPO0FBQUEsRUFDUCxPQUFNO0FBQUEsRUFDTixlQUFjO0FBQUEsRUFDZCxPQUFNO0FBQUEsRUFDTixXQUFVO0FBQUEsRUFDVixPQUFNO0FBQUEsRUFDTixRQUFPO0FBQUEsRUFDUCxVQUFTO0FBQUEsRUFDVCxXQUFVO0FBQUEsRUFDVixVQUFTO0FBQUEsRUFDVCxPQUFNO0FBQUEsRUFDTixZQUFXO0FBQUEsRUFDWCxRQUFPO0FBQUEsRUFDUCxVQUFTO0FBQUEsRUFDVCxXQUFVO0FBQUEsRUFDVixZQUFXO0FBQUEsRUFDWCxjQUFhO0FBQUEsRUFDYixVQUFTO0FBQUEsRUFDVCxZQUFXO0FBQUEsRUFDWCxPQUFNO0FBQUEsRUFDTixZQUFXO0FBQUEsRUFDWCxRQUFPO0FBQUEsRUFDUCxPQUFNO0FBQUEsRUFDTixRQUFPO0FBQUEsRUFDUCxRQUFPO0FBQUEsRUFDUCxNQUFLO0FBQUEsRUFDTCxTQUFRO0FBQUEsRUFDUixTQUFRO0FBQUEsRUFDUixTQUFRO0FBQUEsRUFDUixVQUFTO0FBQUEsRUFDVCxhQUFZO0FBQUEsRUFDWixPQUFNO0FBQUEsRUFDTixRQUFPO0FBQUEsRUFDUCxTQUFRO0FBQUEsRUFDUixPQUFNO0FBQUEsRUFDTixRQUFPO0FBQUEsRUFDUCxPQUFNO0FBQUEsRUFDTixhQUFZO0FBQUEsRUFDWixnQkFBZTtBQUFBLEVBQ2YsT0FBTTtBQUFBLEVBQ04sT0FBTTtBQUFBLEVBQ04sV0FBVTtBQUFBLEVBQ1YsS0FBSTtBQUFBLEVBQ0osVUFBUztBQUFBLEVBQ1QsTUFBSztBQUFBLEVBQ0wsVUFBUztBQUFBLEVBQ1QsT0FBTTtBQUFBLEVBQ04sWUFBVztBQUFBLEVBQ1gsT0FBTTtBQUFBLEVBQ04sY0FBYTtBQUFBLEVBQ2IsT0FBTTtBQUFBLEVBQ04sU0FBUTtBQUFBLEVBQ1IsVUFBUztBQUFBLEVBQ1QsV0FBVTtBQUFBLEVBQ1YsWUFBVztBQUFBLEVBQ1gsUUFBTztBQUFBLEVBQ1AsV0FBVTtBQUFBLEVBQ1YsU0FBUTtBQUFBLEVBQ1IsU0FBUTtBQUFBLEVBQ1IsZ0JBQWU7QUFBQSxFQUNmLFVBQVM7QUFBQSxFQUNULGFBQVk7QUFBQSxFQUNaLFFBQU87QUFBQSxFQUNQLE9BQU07QUFBQSxFQUNOLFlBQVc7QUFBQSxFQUNYLE9BQU07QUFBQSxFQUNOLFdBQVU7QUFBQSxFQUNWLGNBQWE7QUFBQSxFQUNiLE9BQU07QUFBQSxFQUNOLE9BQU07QUFBQSxFQUNOLFVBQVM7QUFBQSxFQUNULEtBQUk7QUFBQSxFQUNKLFFBQU87QUFBQSxFQUNQLGFBQVk7QUFBQSxFQUNaLE9BQU07QUFBQSxFQUNOLFNBQVE7QUFBQSxFQUNSLFFBQU87QUFBQSxFQUNQLFVBQVM7QUFBQSxFQUNULFVBQVM7QUFBQSxFQUNULGlCQUFnQjtBQUFBLEVBQ2hCLFlBQVc7QUFBQSxFQUNYLFVBQVM7QUFBQSxFQUNULGNBQWE7QUFBQSxFQUNiLE9BQU07QUFBQSxFQUNOLE1BQUs7QUFBQSxFQUNMLFFBQU87QUFBQSxFQUNQLGdCQUFlO0FBQUEsRUFDZixVQUFTO0FBQUEsRUFDVCxPQUFNO0FBQUEsRUFDTixPQUFNO0FBQUEsRUFDTixVQUFTO0FBQUEsRUFDVCxPQUFNO0FBQUEsRUFDTixTQUFRO0FBQUEsRUFDUixPQUFNO0FBQUEsRUFDTixVQUFTO0FBQUEsRUFDVCxpQkFBZ0I7QUFBQSxFQUNoQixRQUFPO0FBQUEsRUFDUCxPQUFNO0FBQUEsRUFDTixVQUFTO0FBQUEsRUFDVCxVQUFTO0FBQUEsRUFDVCxTQUFRO0FBQUEsRUFDUiw0QkFBMkI7QUFBQSxFQUMzQixRQUFPO0FBQUEsRUFDUCxXQUFVO0FBQUEsRUFDVixPQUFNO0FBQUEsRUFDTixPQUFNO0FBQUEsRUFDTixxQkFBb0I7QUFBQSxFQUNwQixPQUFNO0FBQUEsRUFDTixTQUFRO0FBQUEsRUFDUixZQUFXO0FBQUEsRUFDWCxVQUFTO0FBQUEsRUFDVCxXQUFVO0FBQUEsRUFDVixNQUFLO0FBQUEsRUFDTCxXQUFVO0FBQUEsRUFDVixPQUFNO0FBQUEsRUFDTixRQUFPO0FBQUEsRUFDUCxNQUFLO0FBQUEsRUFDTCxPQUFNO0FBQUEsRUFDTixpQkFBZ0I7QUFBQSxFQUNoQixNQUFLO0FBQUEsRUFDTCxNQUFLO0FBQUEsRUFDTCxhQUFZO0FBQUEsRUFDWixVQUFTO0FBQUEsRUFDVCxVQUFTO0FBQUEsRUFDVCxXQUFVO0FBQUEsRUFDVixVQUFTO0FBQUEsRUFDVCxRQUFPO0FBQUEsRUFDUCxjQUFhO0FBQUEsRUFDYixPQUFNO0FBQUEsRUFDTixZQUFXO0FBQUEsRUFDWCxXQUFVO0FBQUEsRUFDVixNQUFLO0FBQUEsRUFDTCxRQUFPO0FBQUEsRUFDUCxPQUFNO0FBQUEsRUFDTixRQUFPO0FBQUEsRUFDUCxRQUFPO0FBQUEsRUFDUCxRQUFPO0FBQUEsRUFDUCxRQUFPO0FBQUEsRUFDUCxRQUFPO0FBQUEsRUFDUCxhQUFZO0FBQUEsRUFDWixRQUFPO0FBQUEsRUFDUCxzQkFBcUI7QUFBQSxFQUNyQixTQUFRO0FBQUEsRUFDUixPQUFNO0FBQUEsRUFDTixVQUFTO0FBQUEsRUFDVCxhQUFZO0FBQUEsRUFDWixZQUFXO0FBQUEsRUFDWCxhQUFZO0FBQUEsRUFDWixXQUFVO0FBQUEsRUFDVixPQUFNO0FBQUEsRUFDTixNQUFLO0FBQUEsRUFDTCxLQUFJO0FBQUEsRUFDSixRQUFPO0FBQUEsRUFDUCxXQUFVO0FBQUEsRUFDVixlQUFjO0FBQUEsRUFDZCxrQkFBaUI7QUFBQSxFQUNqQixRQUFPO0FBQUEsRUFDUCxTQUFRO0FBQUEsRUFDUixNQUFLO0FBQUEsRUFDTCxTQUFRO0FBQUEsRUFDUixhQUFZO0FBQUEsRUFDWixRQUFPO0FBQUEsRUFDUCxlQUFjO0FBQUEsRUFDZCxTQUFRO0FBQUEsRUFDUixTQUFRO0FBQUEsRUFDUixnQkFBZTtBQUFBLEVBQ2YsZ0JBQWU7QUFBQSxFQUNmLFNBQVE7QUFBQSxFQUNSLGNBQWE7QUFBQSxFQUNiLFVBQVM7QUFBQSxFQUNULFVBQVM7QUFBQSxFQUNULE1BQUs7QUFBQSxFQUNMLE9BQU07QUFBQSxFQUNOLFNBQVE7QUFBQSxFQUNSLE9BQU07QUFBQSxFQUNOLFNBQVE7QUFBQSxFQUNSLFNBQVE7QUFBQSxFQUNSLE9BQU07QUFBQSxFQUNOLFdBQVU7QUFBQSxFQUNWLFNBQVE7QUFBQSxFQUNSLFFBQU87QUFBQSxFQUNQLFlBQVc7QUFBQSxFQUNYLE1BQUs7QUFBQSxFQUNMLFVBQVM7QUFBQSxFQUNULFFBQU87QUFBQSxFQUNQLFNBQVE7QUFBQSxFQUNSLFNBQVE7QUFBQSxFQUNSLGNBQWE7QUFBQSxFQUNiLGNBQWE7QUFBQSxFQUNiLFFBQU87QUFBQSxFQUNQLE9BQU07QUFBQSxFQUNOLFdBQVU7QUFBQSxFQUNWLE9BQU07QUFBQSxFQUNOLFNBQVE7QUFBQSxFQUNSLFlBQVc7QUFBQSxFQUNYLFlBQVc7QUFBQSxFQUNYLE1BQUs7QUFBQSxFQUNMLHFCQUFvQjtBQUFBLEVBQ3BCLFFBQU87QUFBQSxFQUNQLFVBQVM7QUFBQSxFQUNULGFBQVk7QUFBQSxFQUNaLE9BQU07QUFBQSxFQUNOLFdBQVU7QUFBQSxFQUNWLFlBQVc7QUFBQSxFQUNYLFNBQVE7QUFBQSxFQUNSLFdBQVU7QUFBQSxFQUNWLFVBQVM7QUFBQSxFQUNULGNBQWE7QUFBQSxFQUNiLFFBQU87QUFBQSxFQUNQLFFBQU87QUFBQSxFQUNQLFFBQU87QUFBQSxFQUNQLFNBQVE7QUFBQSxFQUNSLG1CQUFrQjtBQUFBLEVBQ2xCLGNBQWE7QUFBQSxFQUNiLFFBQU87QUFBQSxFQUNQLFFBQU87QUFBQSxFQUNQLFFBQU87QUFBQSxFQUNQLFNBQVE7QUFBQSxFQUNSLFNBQVE7QUFBQSxFQUNSLE9BQU07QUFBQSxFQUNOLE9BQU07QUFBQSxFQUNOLFFBQU87QUFBQSxFQUNQLGNBQWE7QUFBQSxFQUNiLFFBQU87QUFBQSxFQUNQLFNBQVE7QUFBQSxFQUNSLFFBQU87QUFBQSxFQUNQLFVBQVM7QUFBQSxFQUNULFlBQVc7QUFBQSxFQUNYLFFBQU87QUFBQSxFQUNQLE1BQUs7QUFBQSxFQUNMLFVBQVM7QUFBQSxFQUNULFVBQVM7QUFBQSxFQUNULFVBQVM7QUFBQSxFQUNULGdCQUFlO0FBQUEsRUFDZixhQUFZO0FBQUEsRUFDWixPQUFNO0FBQUEsRUFDTixVQUFTO0FBQUEsRUFDVCxNQUFLO0FBQUEsRUFDTCxjQUFhO0FBQUEsRUFDYixTQUFRO0FBQUEsRUFDUixRQUFPO0FBQUEsRUFDUCxPQUFNO0FBQUEsRUFDTixVQUFTO0FBQUEsRUFDVCxjQUFhO0FBQUEsRUFDYixhQUFZO0FBQUEsRUFDWixZQUFXO0FBQUEsRUFDWCxTQUFRO0FBQUEsRUFDUixjQUFhO0FBQUEsRUFDYixNQUFLO0FBQUEsRUFDTCxXQUFVO0FBQUEsRUFDVixjQUFhO0FBQUEsRUFDYixjQUFhO0FBQUEsRUFDYixVQUFTO0FBQUEsRUFDVCxVQUFTO0FBQUEsRUFDVCxjQUFhO0FBQUEsRUFDYixZQUFXO0FBQUEsRUFDWCxPQUFNO0FBQUEsRUFDTixVQUFTO0FBQUEsRUFDVCxRQUFPO0FBQUEsRUFDUCxhQUFZO0FBQUEsRUFDWixVQUFTO0FBQUEsRUFDVCxjQUFhO0FBQUEsRUFDYixRQUFPO0FBQUEsRUFDUCxVQUFTO0FBQUEsRUFDVCxNQUFLO0FBQUEsRUFDTCxVQUFTO0FBQUEsRUFDVCxNQUFLO0FBQUEsRUFDTCxLQUFJO0FBQUEsRUFDSixPQUFNO0FBQUEsRUFDTixRQUFPO0FBQUEsRUFDUCxLQUFJO0FBQUEsRUFDSixVQUFTO0FBQUEsRUFDVCxPQUFNO0FBQUEsRUFDTixVQUFTO0FBQUEsRUFDVCxPQUFN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T0FBSyxXQUFVQSxHQUFFLFdBQVMsV0FBVUEsR0FBRSxXQUFTLFdBQVVBLEdBQUUsZ0JBQWMsV0FBVUEsR0FBRSxXQUFTLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLFdBQVMsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsY0FBWSxXQUFVQSxHQUFFLGlCQUFlLFdBQVVBLEdBQUUsYUFBVyxXQUFVQSxHQUFFLGFBQVcsV0FBVUEsR0FBRSxVQUFRLFdBQVVBLEdBQUUsYUFBVyxXQUFVQSxHQUFFLGVBQWEsV0FBVUEsR0FBRSxnQkFBYyxXQUFVQSxHQUFFLGdCQUFjLFdBQVVBLEdBQUUsZ0JBQWMsV0FBVUEsR0FBRSxnQkFBYyxXQUFVQSxHQUFFLGFBQVcsV0FBVUEsR0FBRSxXQUFTLFdBQVVBLEdBQUUsY0FBWSxXQUFVQSxHQUFFLFVBQVEsV0FBVUEsR0FBRSxVQUFRLFdBQVVBLEdBQUUsYUFBVyxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxjQUFZLFdBQVVBLEdBQUUsY0FBWSxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxhQUFXLFdBQVVBLEdBQUUsT0FBSyxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxjQUFZLFdBQVVBLEdBQUUsT0FBSyxXQUFVQSxHQUFFLFdBQVMsV0FBVUEsR0FBRSxVQUFRLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLFNBQU8sV0FBVUEsR0FBRSxRQUFNLFdBQVVBLEdBQUUsUUFBTSxXQUFVQSxHQUFFLFdBQVMsV0FBVUEsR0FBRSxnQkFBYyxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxlQUFhLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLGFBQVcsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsdUJBQXFCLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLGFBQVcsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLGNBQVksV0FBVUEsR0FBRSxnQkFBYyxXQUFVQSxHQUFFLGVBQWEsV0FBVUEsR0FBRSxpQkFBZSxXQUFVQSxHQUFFLGlCQUFlLFdBQVVBLEdBQUUsaUJBQWUsV0FBVUEsR0FBRSxjQUFZLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLFFBQU0sV0FBVUEsR0FBRSxVQUFRLFdBQVVBLEdBQUUsbUJBQWlCLFdBQVVBLEdBQUUsYUFBVyxXQUFVQSxHQUFFLGVBQWEsV0FBVUEsR0FBRSxlQUFhLFdBQVVBLEdBQUUsaUJBQWUsV0FBVUEsR0FBRSxrQkFBZ0IsV0FBVUEsR0FBRSxvQkFBa0IsV0FBVUEsR0FBRSxrQkFBZ0IsV0FBVUEsR0FBRSxrQkFBZ0IsV0FBVUEsR0FBRSxlQUFhLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxXQUFTLFdBQVVBLEdBQUUsY0FBWSxXQUFVQSxHQUFFLFVBQVEsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLFNBQU8sV0FBVUEsR0FBRSxnQkFBYyxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxnQkFBYyxXQUFVQSxHQUFFLGdCQUFjLFdBQVVBLEdBQUUsYUFBVyxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxPQUFLLFdBQVVBLEdBQUUsT0FBSyxXQUFVQSxHQUFFLE9BQUssV0FBVUEsR0FBRSxhQUFXLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxjQUFZLFdBQVVBLEdBQUUsU0FBTyxXQUFVQSxHQUFFLGFBQVcsV0FBVUEsR0FBRSxXQUFTLFdBQVVBLEdBQUUsV0FBUyxXQUFVQSxHQUFFLFNBQU8sV0FBVUEsR0FBRSxVQUFRLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsT0FBSyxXQUFVQSxHQUFFLGNBQVksV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsTUFBSSxXQUFVQSxHQUFFLFVBQVEsV0FBVUEsR0FBRSxTQUFPLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLFNBQU8sV0FBVUEsR0FBRSxRQUFNLFdBQVVBLEdB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QUFFQSxHQUFFLENBQUMsS0FBR0EsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLEVBQUVBLEdBQUUsQ0FBQyxLQUFHQSxHQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUVFLEtBQUVGLEdBQUUsQ0FBQyxLQUFHQSxHQUFFLENBQUM7QUFBRSxTQUFPLFdBQVNFLE9BQUlELEdBQUUsSUFBRSxFQUFFQyxFQUFDLElBQUUsTUFBS0Q7QUFBQyxHQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsU0FBU0YsSUFBRTtBQUFDLE1BQUlDLEtBQUVELEdBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRUUsS0FBRSxFQUFFRCxHQUFFLENBQUMsS0FBR0EsR0FBRSxDQUFDLENBQUMsR0FBRUUsS0FBRSxFQUFFRixHQUFFLENBQUMsS0FBR0EsR0FBRSxDQUFDLENBQUMsR0FBRUcsS0FBRSxFQUFFSCxHQUFFLENBQUMsS0FBR0EsR0FBRSxDQUFDLENBQUMsR0FBRUksS0FBRUosR0FBRSxDQUFDLEtBQUdBLEdBQUUsQ0FBQyxHQUFFSyxLQUFFLEVBQUMsR0FBRSxLQUFLLElBQUlKLElBQUUsR0FBRyxHQUFFLEdBQUUsS0FBSyxJQUFJQyxJQUFFLEdBQUcsR0FBRSxHQUFFLEtBQUssSUFBSUMsSUFBRSxHQUFHLEVBQUM7QUFBRSxTQUFPLFdBQVNDLE9BQUlDLEdBQUUsSUFBRSxFQUFFRCxFQUFDLElBQUdDO0FBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLFNBQVNOLElBQUU7QUFBQyxNQUFJQyxLQUFFRCxHQUFFLE1BQU0sRUFBRSxHQUFHLEdBQUVFLEtBQUUsRUFBRUQsR0FBRSxDQUFDLEtBQUdBLEdBQUUsQ0FBQyxDQUFDLEdBQUVFLEtBQUUsRUFBRUYsR0FBRSxDQUFDLEtBQUdBLEdBQUUsQ0FBQyxDQUFDLEdBQUVHLEtBQUUsRUFBRUgsR0FBRSxDQUFDLEtBQUdBLEdBQUUsQ0FBQyxDQUFDLEdBQUVJLEtBQUVKLEdBQUUsQ0FBQyxLQUFHQSxHQUFFLENBQUMsR0FBRUssS0FBRSxFQUFFSixJQUFFQyxJQUFFQyxFQUFDO0FBQUUsU0FBTyxXQUFTQyxPQUFJQyxHQUFFLElBQUUsRUFBRUQsRUFBQyxJQUFHQztBQUFDLEdBQUUsRUFBRSxFQUFFLElBQUksSUFBRSxTQUFTTixJQUFFO0FBQUMsTUFBSUMsS0FBRUQsR0FBRSxNQUFNLEVBQUUsSUFBSSxHQUFFRSxLQUFFLEVBQUVELEdBQUUsQ0FBQyxLQUFHQSxHQUFFLENBQUMsQ0FBQyxHQUFFRSxLQUFFLEVBQUVGLEdBQUUsQ0FBQyxLQUFHQSxHQUFFLENBQUMsQ0FBQyxHQUFFRyxLQUFFLEVBQUVILEdBQUUsQ0FBQyxLQUFHQSxHQUFFLENBQUMsQ0FBQyxHQUFFSSxLQUFFLEVBQUVKLEdBQUUsQ0FBQyxLQUFHQSxHQUFFLENBQUMsQ0FBQyxHQUFFSyxLQUFFTCxHQUFFLENBQUMsS0FBR0EsR0FBRSxFQUFFLEdBQUVNLEtBQUUsRUFBRUwsSUFBRUMsSUFBRUMsSUFBRUMsRUFBQztBQUFFLFNBQU8sV0FBU0MsT0FBSUMsR0FBRSxJQUFFLEVBQUVELEVBQUMsSUFBR0M7QUFBQyxHQUFFO0FBQXJ0TCxJQUF3dEwsTUFBSSxJQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBRSxTQUFTUCxJQUFFO0FBQUMsTUFBSUMsS0FBRSxFQUFDLEdBQUUsRUFBRSxHQUFHLE9BQU9ELEdBQUUsQ0FBQyxDQUFDLEdBQUUsR0FBRSxFQUFFLEdBQUcsT0FBT0EsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLEVBQUUsR0FBRyxPQUFPQSxHQUFFLENBQUMsQ0FBQyxFQUFDO0FBQUUsU0FBTyxFQUFFQSxJQUFFLEdBQUcsTUFBSUMsR0FBRSxJQUFFLEtBQUssSUFBSSxFQUFFLEdBQUcsT0FBT0QsR0FBRSxDQUFDLEdBQUUsSUFBRSxHQUFFLENBQUMsSUFBR0M7QUFBQyxHQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsU0FBU0QsSUFBRTtBQUFDLFNBQU8sS0FBSyxJQUFJQSxFQUFDO0FBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLFNBQVNBLElBQUU7QUFBQyxNQUFJQyxLQUFFLEVBQUUsR0FBRyxPQUFPRCxHQUFFLENBQUMsQ0FBQyxHQUFFRSxLQUFFLEVBQUUsR0FBRyxPQUFPRixHQUFFLENBQUMsQ0FBQyxHQUFFRyxLQUFFLEVBQUUsRUFBRUgsR0FBRSxDQUFDLEdBQUVDLElBQUVDLEVBQUM7QUFBRSxTQUFPLEVBQUVGLElBQUUsR0FBRyxNQUFJRyxHQUFFLElBQUUsRUFBRUgsR0FBRSxDQUFDLElBQUdHO0FBQUMsR0FBRSxFQUFFLEVBQUUsSUFBSSxJQUFFLFNBQVNILElBQUU7QUFBQyxNQUFJQyxLQUFFLEVBQUUsR0FBRyxPQUFPRCxHQUFFLENBQUMsQ0FBQyxHQUFFRSxLQUFFLEVBQUUsR0FBRyxPQUFPRixHQUFFLENBQUMsQ0FBQyxHQUFFRyxLQUFFLEVBQUUsR0FBRyxPQUFPSCxHQUFFLENBQUMsQ0FBQyxHQUFFSSxLQUFFLEVBQUUsR0FBRyxPQUFPSixHQUFFLENBQUMsQ0FBQyxHQUFFSyxLQUFFLEVBQUVKLElBQUVDLElBQUVDLElBQUVDLEVBQUM7QUFBRSxTQUFPLEVBQUVKLElBQUUsR0FBRyxNQUFJSyxHQUFFLElBQUUsRUFBRUwsR0FBRSxDQUFDLElBQUdLO0FBQUMsR0FBRTtBQUF2cU0sSUFBMHFNLEtBQUcsU0FBU0wsSUFBRUMsSUFBRTtBQUFDLFNBQU8sV0FBU0EsT0FBSUEsS0FBRSxFQUFFRCxFQUFDLElBQUcsWUFBVSxPQUFPQSxLQUFFLEVBQUVDLEVBQUMsRUFBRUQsRUFBQyxJQUFFLEVBQUVDLEVBQUMsRUFBRUQsRUFBQztBQUFDO0FBQXp2TSxJQUEydk0sT0FBSyxJQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBRSxTQUFTQSxJQUFFO0FBQUMsU0FBTSxFQUFDLEdBQUUsRUFBRUEsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFQSxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUVBLEdBQUUsQ0FBQyxFQUFDO0FBQUMsR0FBRSxFQUFFLE9BQUssU0FBU0EsSUFBRTtBQUFDLE1BQUlDLEtBQUUsR0FBRyxJQUFJRCxFQUFDO0FBQUUsU0FBT0MsR0FBRSxJQUFFLEVBQUVELElBQUUsR0FBRyxJQUFFLEVBQUUsTUFBSUEsR0FBRSxDQUFDLElBQUUsUUFBT0M7QUFBQyxHQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsU0FBU0QsSUFBRUMsSUFBRTtBQUFDLFNBQU8sRUFBRUQsSUFBRSxHQUFHLEtBQUcsT0FBT0EsR0FBRSxHQUFFLEdBQUdBLElBQUVDLEVBQUM7QUFBQyxHQUFFLEVBQUUsT0FBSyxTQUFTRCxJQUFFQyxJQUFFO0FBQUMsU0FBT0QsR0FBRSxJQUFFLEVBQUVBLElBQUUsR0FBRyxJQUFFLEVBQUVBLEdBQUUsQ0FBQyxJQUFFLEdBQUUsR0FBR0EsSUFBRUMsRUFBQztBQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxTQUFTRCxJQUFFQyxJQUFFO0FBQUMsTUFBSUMsS0FBRSxFQUFFRixHQUFFLEdBQUVBLEdBQUUsR0FBRUEsR0FBRSxDQUFDO0FBQUUsU0FBTyxPQUFPRSxHQUFFLEdBQUUsR0FBR0EsSUFBRUQsRUFBQztBQUFDLEdBQUUsRUFBRSxPQUFLLFNBQVNELElBQUVDLElBQUU7QUFBQyxNQUFJQyxLQUFFLEdBQUcsSUFBSUYsSUFBRUMsRUFBQztBQUFFLFNBQU9DLEdBQUUsSUFBRSxFQUFFRixJQUFFLEdBQUcsSUFBRSxFQUFFQSxHQUFFLEdBQUVDLEVBQUMsSUFBRSxHQUFFQztBQUFDLEdBQUUsRUFBRSxFQUFFLElBQUksSUFBRSxTQUFTRixJQUFFQyxJQUFFO0FBQUMsU0FBTyxHQUFHLEVBQUVELEdBQUUsR0FBRUEsR0FBRSxHQUFFQSxHQUFFLENBQUMsR0FBRUMsRUFBQztBQUFDLEdBQUUsRUFBRSxRQUFNLFNBQVNELElBQUVDLElBQUU7QUFBQyxNQUFJQyxLQUFFLEdBQUcsS0FBS0YsSUFBRUMsRUFBQztBQUFFLFNBQU9DLEdBQUUsSUFBRSxFQUFFRixJQUFFLEdBQUcsSUFBRSxFQUFFQSxHQUFFLEdBQUVDLEVBQUMsSUFBRSxHQUFFQztBQUFDLEdBQUU7QUFBaHhOLElBQW14TixLQUFHLFNBQVNELElBQUVFLElBQUVDLElBQUVDLElBQUU7QUFBQyxNQUFJQyxLQUFFLEVBQUVMLEVBQUMsR0FBRU0sS0FBRSxZQUFVLE9BQU9OLElBQUVPLEtBQUUsR0FBR1AsSUFBRUssRUFBQyxHQUFFRyxLQUFFLFlBQVUsT0FBT1IsTUFBRyxFQUFFTyxJQUFFLEdBQUcsS0FBRyxZQUFVLE9BQU9QLE1BQUcsRUFBRUEsSUFBRSxHQUFHLEdBQUVTLEtBQUUsRUFBRUYsR0FBRSxHQUFFQSxHQUFFLEdBQUVBLEdBQUUsR0FBRUEsR0FBRSxDQUFDO0FBQUUsRUFBQUMsTUFBRyxPQUFPQyxHQUFFO0FBQUUsTUFBSUMsS0FBRVAsS0FBRU0sR0FBRSxLQUFHUCxLQUFFLE1BQUksTUFBSU8sR0FBRSxNQUFJUCxLQUFFLElBQUdTLEtBQUUsTUFBTVQsRUFBQyxFQUFFLEtBQUssSUFBSSxFQUFFLElBQUssU0FBU0YsSUFBRUMsSUFBRTtBQUFDLFdBQU8sRUFBRSxFQUFFLENBQUMsR0FBRVEsRUFBQyxHQUFFLEVBQUMsR0FBRUEsR0FBRSxJQUFFQyxNQUFHVCxLQUFFLE1BQUksSUFBRSxJQUFFLENBQUNFLElBQUUsQ0FBQztBQUFBLEVBQUMsQ0FBRTtBQUFFLFVBQU9FLElBQUU7QUFBQSxJQUFDLEtBQUssRUFBRTtBQUFBLElBQUk7QUFBUSxhQUFPTSxHQUFFLElBQUssU0FBU1gsSUFBRTtBQUFDLFlBQUlDLEtBQUUsRUFBRUQsR0FBRSxHQUFFQSxHQUFFLEdBQUVBLEdBQUUsQ0FBQztBQUFFLGVBQU9RLE9BQUlQLEdBQUUsSUFBRUQsR0FBRSxJQUFHTSxLQUFFRSxLQUFFLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUVQLEVBQUMsR0FBRSxFQUFDLEdBQUUsRUFBRSxNQUFJQSxHQUFFLENBQUMsRUFBQyxDQUFDLEdBQUVHLEVBQUMsQ0FBQyxJQUFFLEVBQUUsSUFBSSxHQUFHSCxJQUFFRyxFQUFDLENBQUMsSUFBRUksS0FBRSxHQUFHLEtBQUtQLEVBQUMsSUFBRSxHQUFHLElBQUlBLEVBQUM7QUFBQSxNQUFDLENBQUU7QUFBQSxJQUFFLEtBQUssRUFBRTtBQUFJLGFBQU9VLEdBQUUsSUFBSyxTQUFTWixJQUFFO0FBQUMsWUFBSUMsS0FBRSxFQUFFRCxHQUFFLEdBQUVBLEdBQUUsR0FBRUEsR0FBRSxDQUFDO0FBQUUsZUFBT1MsT0FBSVIsR0FBRSxJQUFFRCxHQUFFLElBQUdPLEtBQUUsRUFBRSxJQUFJLEdBQUdOLElBQUVJLEVBQUMsQ0FBQyxJQUFFSSxLQUFFLEdBQUcsS0FBS1IsSUFBRUksRUFBQyxJQUFFLEdBQUcsSUFBSUosSUFBRUksRUFBQztBQUFBLE1BQUMsQ0FBRTtBQUFBLElBQUUsS0FBSyxFQUFFO0FBQUksYUFBT08sR0FBRSxJQUFLLFNBQVNYLElBQUU7QUFBQyxlQUFPTSxLQUFFLEVBQUUsSUFBSSxHQUFHTixJQUFFSSxFQUFDLENBQUMsSUFBRUksS0FBRSxHQUFHLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRSxFQUFFUixHQUFFLEdBQUVBLEdBQUUsR0FBRUEsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFDLEdBQUVBLEdBQUUsRUFBQyxDQUFDLEdBQUVJLEVBQUMsSUFBRSxHQUFHLElBQUksRUFBRUosR0FBRSxHQUFFQSxHQUFFLEdBQUVBLEdBQUUsQ0FBQyxHQUFFSSxFQUFDO0FBQUEsTUFBQyxDQUFFO0FBQUEsRUFBQztBQUFDO0FBQWwrTyxJQUFvK08sT0FBSyxJQUFFLEVBQUMsY0FBYSxTQUFTTCxJQUFFQyxJQUFFRSxJQUFFQyxJQUFFO0FBQUMsTUFBSUMsS0FBRSxFQUFFTCxFQUFDLEdBQUVNLEtBQUUsR0FBR04sSUFBRUssRUFBQyxHQUFFRSxLQUFFLEVBQUVELEdBQUUsR0FBRUEsR0FBRSxHQUFFQSxHQUFFLEdBQUVBLEdBQUUsQ0FBQyxHQUFFRSxLQUFFLFlBQVUsT0FBT1IsTUFBRyxFQUFFTSxJQUFFLEdBQUcsS0FBRyxZQUFVLE9BQU9OLE1BQUcsRUFBRUEsSUFBRSxHQUFHLEdBQUVTLEtBQUUsWUFBVSxPQUFPVDtBQUFFLFVBQU9LLElBQUU7QUFBQSxJQUFDLEtBQUssRUFBRTtBQUFBLElBQUk7QUFBUSxhQUFPRyxLQUFFLEtBQUssS0FBSyxHQUFHRCxJQUFFLENBQUMsR0FBRU4sSUFBRUUsSUFBRU0sRUFBQyxJQUFFLEtBQUssSUFBSSxHQUFHRixJQUFFLENBQUMsR0FBRU4sSUFBRUUsSUFBRU0sRUFBQztBQUFBLElBQUUsS0FBSyxFQUFFO0FBQUksYUFBT0QsS0FBRSxLQUFLLEtBQUtELElBQUVOLElBQUVFLElBQUVNLElBQUVMLEVBQUMsSUFBRSxLQUFLLElBQUlHLElBQUVOLElBQUVFLElBQUVNLElBQUVMLEVBQUM7QUFBQSxJQUFFLEtBQUssRUFBRTtBQUFJLGFBQU9JLEtBQUUsS0FBSyxLQUFLRCxJQUFFTixJQUFFRSxJQUFFTSxJQUFFTCxFQUFDLElBQUUsS0FBSyxJQUFJRyxJQUFFTixJQUFFRSxJQUFFTSxJQUFFTCxFQUFDO0FBQUEsRUFBQztBQUFDLEVBQUMsR0FBRyxFQUFFLEdBQUcsSUFBRSxTQUFTSixJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsU0FBT0YsR0FBRUQsSUFBRUUsRUFBQyxFQUFFLElBQUssU0FBU0YsSUFBRTtBQUFDLFdBQU9HLEtBQUUsRUFBRSxJQUFJLEVBQUVILEdBQUUsR0FBRUEsR0FBRSxHQUFFQSxHQUFFLENBQUMsQ0FBQyxJQUFFLEdBQUcsSUFBSSxFQUFFQSxHQUFFLEdBQUVBLEdBQUUsR0FBRUEsR0FBRSxDQUFDLENBQUM7QUFBQSxFQUFDLENBQUU7QUFBQyxHQUFFLEVBQUUsT0FBSyxTQUFTQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsU0FBT0YsR0FBRUQsSUFBRUUsRUFBQyxFQUFFLElBQUssU0FBU0YsSUFBRTtBQUFDLFdBQU9HLEtBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRUgsR0FBRSxHQUFFQSxHQUFFLEdBQUVBLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBQyxHQUFFLE1BQUksRUFBRUEsR0FBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRUEsR0FBRSxHQUFFQSxHQUFFLEdBQUVBLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBQyxHQUFFLEVBQUVBLEdBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQztBQUFBLEVBQUMsQ0FBRTtBQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsU0FBT0gsR0FBRUQsSUFBRUUsRUFBQyxFQUFFLElBQUssU0FBU0YsSUFBRTtBQUFDLFdBQU9HLEtBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRUgsR0FBRSxHQUFFQSxHQUFFLEdBQUVBLEdBQUUsQ0FBQyxHQUFFSSxFQUFDLENBQUMsSUFBRSxHQUFHLElBQUksRUFBRUosR0FBRSxHQUFFQSxHQUFFLEdBQUVBLEdBQUUsQ0FBQyxHQUFFSSxFQUFDO0FBQUEsRUFBQyxDQUFFO0FBQUMsR0FBRSxFQUFFLE9BQUssU0FBU0gsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFNBQU9ILEdBQUVELElBQUVFLEVBQUMsRUFBRSxJQUFLLFNBQVNGLElBQUU7QUFBQyxXQUFPRyxLQUFFLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRUgsR0FBRSxHQUFFQSxHQUFFLEdBQUVBLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBQyxHQUFFLEVBQUVBLEdBQUUsQ0FBQyxFQUFDLENBQUMsR0FBRUksRUFBQyxDQUFDLElBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRUosR0FBRSxHQUFFQSxHQUFFLEdBQUVBLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBQyxHQUFFLEVBQUVBLEdBQUUsQ0FBQyxFQUFDLENBQUMsR0FBRUksRUFBQztBQUFBLEVBQUMsQ0FBRTtBQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxTQUFTTCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsU0FBT0gsR0FBRUQsSUFBRUUsRUFBQyxFQUFFLElBQUssU0FBU0YsSUFBRTtBQUFDLFdBQU9HLEtBQUUsRUFBRSxJQUFJLEdBQUcsRUFBQyxHQUFFSCxHQUFFLEdB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QUFFSSxLQUFFVCxJQUFFLEdBQUVNLEtBQUVHLEtBQUVULElBQUUsR0FBRU8sS0FBRUUsS0FBRVQsR0FBQyxHQUFHLElBQUVhLEdBQUU7QUFBQSxFQUFDO0FBQUMsU0FBTSxFQUFDLEdBQUUsRUFBRW5CLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRUEsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFQSxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUVBLEdBQUUsR0FBRSxHQUFFLENBQUMsRUFBQztBQUFDLEVBQUMsR0FBRyxFQUFFLEdBQUcsSUFBRSxTQUFTSCxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsTUFBSUMsS0FBRSxLQUFLLElBQUlILElBQUVDLEVBQUM7QUFBRSxTQUFPLE9BQU9FLEdBQUUsR0FBRUQsS0FBRSxFQUFFLElBQUlDLEVBQUMsSUFBRSxHQUFHLElBQUlBLEVBQUM7QUFBQyxHQUFFLEVBQUUsT0FBSyxTQUFTSCxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsTUFBSUMsS0FBRSxLQUFLLElBQUlILElBQUVDLEVBQUM7QUFBRSxTQUFPRSxHQUFFLElBQUVELEtBQUUsTUFBSSxFQUFFQyxHQUFFLENBQUMsSUFBRSxFQUFFQSxHQUFFLENBQUMsR0FBRUQsS0FBRSxFQUFFLElBQUlDLEVBQUMsSUFBRSxHQUFHLEtBQUtBLEVBQUM7QUFBQyxHQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsU0FBU0gsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLE1BQUlDLEtBQUUsS0FBSyxJQUFJSixJQUFFQyxFQUFDO0FBQUUsU0FBTyxPQUFPRyxHQUFFLEdBQUVGLEtBQUUsRUFBRSxJQUFJRSxFQUFDLElBQUUsR0FBRyxJQUFJQSxJQUFFRCxFQUFDO0FBQUMsR0FBRSxFQUFFLE9BQUssU0FBU0gsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLE1BQUlDLEtBQUUsS0FBSyxJQUFJSixJQUFFQyxFQUFDO0FBQUUsU0FBT0MsS0FBRSxFQUFFLElBQUlFLEVBQUMsSUFBRSxHQUFHLEtBQUtBLElBQUVELEVBQUM7QUFBQyxH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QUFFLEVBQUVGLEtBQUVDLEtBQUVDLEVBQUMsRUFBQztBQUFBLElBQUMsQ0FBRTtBQUFBLEVBQUMsRUFBRSxHQUFHVCxFQUFDLEdBQUUsR0FBR0MsRUFBQyxHQUFFQyxFQUFDO0FBQUUsU0FBT0ssR0FBRSxJQUFLLFNBQVNQLElBQUU7QUFBQyxRQUFJQyxLQUFFSSxHQUFFTCxJQUFFSSxFQUFDO0FBQUUsV0FBT0QsS0FBRUcsR0FBRUwsRUFBQyxJQUFFQTtBQUFBLEVBQUMsQ0FBRTtBQUFDO0FBQXI1VixJQUF1NVYsS0FBRyxXQUFVO0FBQUMsV0FBU0EsR0FBRUQsSUFBRUMsSUFBRTtBQUFDLGVBQVNBLE9BQUlBLEtBQUUsSUFBRyxLQUFLLE1BQUksR0FBR0QsRUFBQyxHQUFFLEtBQUssWUFBVUMsSUFBRSxLQUFLLFVBQVUsR0FBRSxLQUFLLFdBQVc7QUFBQSxFQUFDO0FBQUMsU0FBT0EsR0FBRSxVQUFVLFlBQVUsV0FBVTtBQUFDLFNBQUssTUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsS0FBSyxJQUFJLEdBQUUsS0FBSyxJQUFJLEdBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFFLEVBQUMsR0FBRSxLQUFLLElBQUksRUFBQyxDQUFDO0FBQUEsRUFBQyxHQUFFQSxHQUFFLFVBQVUsb0JBQWtCLFdBQVU7QUFBQyxTQUFLLE1BQUksRUFBRSxFQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssS0FBSyxHQUFFLEtBQUssS0FBSyxHQUFFLEtBQUssS0FBSyxHQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsR0FBRSxFQUFDLEdBQUUsS0FBSyxJQUFJLEVBQUMsQ0FBQztBQUFBLEVBQUMsR0FBRUEsR0FBRSxVQUFVLFlBQVUsV0FBVTtBQUFDLFNBQUssTUFBSSxFQUFFLEtBQUssSUFBSSxHQUFFLEtBQUssSUFBSSxHQUFFLEtBQUssSUFBSSxHQUFFLEtBQUssSUFBSSxDQUFDO0FBQUEsRUFBQyxHQUFFQSxHQUFFLFVBQVUsYUFBVyxXQUFVO0FBQUMsU0FBSyxPQUFLLEVBQUUsS0FBSyxJQUFJLEdBQUUsS0FBSyxJQUFJLEdBQUUsS0FBSyxJQUFJLENBQUM7QUFBQSxFQUFDLEdBQUVBLEdBQUUsVUFBVSxtQkFBaUIsV0FBVTtBQUFDLFdBQU8sS0FBSyxVQUFVLEdBQUUsS0FBSyxXQUFXLEdBQUU7QUFBQSxFQUFJLEdBQUVBLEdBQUUsVUFBVSxtQkFBaUIsV0FBVTtBQUFDLFdBQU8sS0FBSyxVQUFVLEdBQUUsS0FBSyxXQUFXLEdBQUU7QUFBQSxFQUFJLEdBQUVBLEdBQUUsVUFBVSxrQkFBZ0IsV0FBVTtBQUFDLFdBQU8sS0FBSyxrQkFBa0IsR0FBRSxLQUFLLFVBQVUsR0FBRTtBQUFBLEVBQUksR0FBRUEsR0FBRSxVQUFVLGNBQVksU0FBU0QsSUFBRTtBQUFDLFdBQU8sS0FBSyxZQUFVQSxJQUFFO0FBQUEsRUFBSSxHQUFFQyxHQUFFLFVBQVUsT0FBSyxTQUFTRCxJQUFFO0FBQUMsV0FBTyxLQUFLLElBQUksSUFBRSxFQUFFQSxFQUFDLEdBQUUsS0FBSyxpQkFBaUI7QUFBQSxFQUFDLEdBQUVDLEdBQUUsVUFBVSxPQUFLLFNBQVNELElBQUU7QUFBQyxXQUFPLEtBQUssSUFBSSxJQUFFLEVBQUVBLElBQUUsR0FBRSxHQUFHLEdBQUUsS0FBSyxpQkFBaUI7QUFBQSxFQUFDLEdBQUVDLEdBQUUsVUFBVSxPQUFLLFNBQVNELElBQUU7QUFBQyxXQUFPLEtBQUssSUFBSSxJQUFFLEVBQUVBLElBQUUsR0FBRSxHQUFHLEdBQUUsS0FBSyxpQkFBaUI7QUFBQSxFQUFDLEdBQUVDLEdBQUUsVUFBVSxPQUFLLFNBQVNELElBQUU7QUFBQyxXQUFPLEtBQUssSUFBSSxJQUFFLEVBQUVBLElBQUUsR0FBRSxHQUFHLEdBQUUsS0FBSyxpQkFBaUI7QUFBQSxFQUFDLEdBQUVDLEdBQUUsVUFBVSxPQUFLLFNBQVNELElBQUU7QUFBQyxXQUFPLEtBQUssSUFBSSxJQUFFLEVBQUVBLElBQUUsR0FBRSxHQUFHLEdBQUUsS0FBSyxpQkFBaUI7QUFBQSxFQUFDLEdBQUVDLEdBQUUsVUFBVSxPQUFLLFNBQVNELElBQUU7QUFBQyxXQUFPLEtBQUssSUFBSSxJQUFFLEVBQUVBLElBQUUsR0FBRSxHQUFHLEdBQUUsS0FBSyxpQkFBaUI7QUFBQSxFQUFDLEdBQUVDLEdBQUUsVUFBVSxPQUFLLFNBQVNELElBQUU7QUFBQyxXQUFPLEtBQUssSUFBSSxJQUFFLEtBQUssSUFBSSxJQUFFLEVBQUVBLElBQUUsR0FBRSxDQUFDLEdBQUU7QUFBQSxFQUFJLEdBQUVDLEdBQUUsVUFBVSxPQUFLLFNBQVNELElBQUU7QUFBQyxXQUFPLEtBQUssS0FBSyxJQUFFLEVBQUVBLElBQUUsR0FBRSxHQUFHLEdBQUUsS0FBSyxnQkFBZ0I7QUFBQSxFQUFDLEdBQUVDLEdBQUUsVUFBVSxPQUFLLFNBQVNELElBQUU7QUFBQyxXQUFPLEtBQUssS0FBSyxJQUFFLEVBQUVBLElBQUUsR0FBRSxHQUFHLEdBQUUsS0FBSyxnQkFBZ0I7QUFBQSxFQUFDLEdBQUVDLEdBQUUsVUFBVSxPQUFLLFNBQVNELElBQUU7QUFBQyxXQUFPLEtBQUssS0FBSyxJQUFFLEVBQUVBLElBQUUsR0FBRSxHQUFHLEdBQUUsS0FBSyxnQkFBZ0I7QUFBQSxFQUFDLEdBQUVDLEdBQUUsVUFBVSxPQUFLLFNBQVNELElBQUU7QUFBQyxXQUFPLEtBQUssS0FBSyxJQUFFLEVBQUVBLElBQUUsR0FBRSxHQUFHLEdBQUUsS0FBSyxnQkFBZ0I7QUFBQSxFQUFDLEdBQUUsT0FBTyxlQUFlQyxHQUFFLFdBQVUsWUFBVyxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sS0FBSztBQUFBLEVBQVMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxLQUFJLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEtBQUssSUFBSSxHQUFFLEtBQUssUUFBUTtBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxLQUFJLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEtBQUssSUFBSSxHQUFFLEtBQUssUUFBUTtBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxLQUFJLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEtBQUssSUFBSSxHQUFFLEtBQUssUUFBUTtBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxLQUFJLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEtBQUssSUFBSSxHQUFFLEtBQUssUUFBUTtBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxLQUFJLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEtBQUssSUFBSSxHQUFFLEtBQUssUUFBUTtBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxLQUFJLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEtBQUssSUFBSSxHQUFFLEtBQUssUUFBUTtBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxLQUFJLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEtBQUssSUFBSSxHQUFFLEtBQUssUUFBUTtBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxLQUFJLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEtBQUssS0FBSyxHQUFFLEtBQUssUUFBUTtBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxLQUFJLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEtBQUssS0FBSyxHQUFFLEtBQUssUUFBUTtBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxLQUFJLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEtBQUssS0FBSyxHQUFFLEtBQUssUUFBUTtBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxLQUFJLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEtBQUssS0FBSyxHQUFFLEtBQUssUUFBUTtBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxhQUFZLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxHQUFHLElBQUksS0FBSyxHQUFHO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLGNBQWEsRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEdBQUcsS0FBSyxLQUFLLEdBQUc7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsYUFBWSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU0sRUFBQyxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssRUFBQztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxjQUFhLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUssU0FBUyxHQUFFLEVBQUMsR0FBRSxLQUFLLEVBQUMsQ0FBQztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxhQUFZLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTSxFQUFDLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxFQUFDO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLGNBQWEsRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSyxTQUFTLEdBQUUsRUFBQyxHQUFFLEtBQUssRUFBQyxDQUFDO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLGNBQWEsRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFNLEVBQUMsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEVBQUM7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsZUFBYyxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFLLFVBQVUsR0FBRSxFQUFDLEdBQUUsS0FBSyxFQUFDLENBQUM7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsT0FBTSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxJQUFJLEVBQUMsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEVBQUMsQ0FBQztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxRQUFPLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLElBQUksRUFBQyxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLE1BQUksS0FBSyxFQUFDLENBQUM7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsT0FBTSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxJQUFJLEVBQUMsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEVBQUMsQ0FBQztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxRQUFPLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLElBQUksRUFBQyxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssRUFBQyxDQUFDO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLE9BQU0sRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsSUFBSSxFQUFDLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxFQUFDLENBQUM7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsUUFBTyxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxJQUFJLEVBQUMsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEVBQUMsQ0FBQztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxRQUFPLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEtBQUssRUFBQyxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssRUFBQyxDQUFDO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLFNBQVEsRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsS0FBSyxFQUFDLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxFQUFDLENBQUM7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUVBLEdBQUUsUUFBTSxTQUFTRCxJQUFFQyxJQUFFO0FBQUMsZUFBU0EsT0FBSUEsS0FBRTtBQUFJLFFBQUlDLEtBQUUsRUFBRUYsRUFBQztBQUFFLFdBQU8sR0FBR0EsSUFBRUUsSUFBRUQsSUFBRSxHQUFFLEdBQUcsS0FBSSxFQUFFLEdBQUc7QUFBQSxFQUFDLEdBQUVBLEdBQUUsU0FBTyxTQUFTRCxJQUFFQyxJQUFFO0FBQUMsZUFBU0EsT0FBSUEsS0FBRTtBQUFJLFFBQUlDLEtBQUUsRUFBRUYsRUFBQztBQUFFLFdBQU8sR0FBR0EsSUFBRUUsSUFBRUQsSUFBRSxHQUFFLEdBQUcsTUFBSyxFQUFFLEdBQUc7QUFBQSxFQUFDLEdBQUVBLEdBQUUsUUFBTSxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsZUFBU0QsT0FBSUEsS0FBRSxPQUFJLFdBQVNDLE9BQUlBLEtBQUU7QUFBRyxRQUFJQyxLQUFFLEVBQUVILEVBQUM7QUFBRSxXQUFPLEdBQUdBLElBQUVHLElBQUVGLElBQUVDLElBQUUsR0FBRyxLQUFJLEVBQUUsR0FBRztBQUFBLEVBQUMsR0FBRUQsR0FBRSxTQUFPLFNBQVNELElBQUVDLElBQUVDLElBQUU7QUFBQyxlQUFTRCxPQUFJQSxLQUFFLE9BQUksV0FBU0MsT0FBSUEsS0FBRTtBQUFHLFFBQUlDLEtBQUUsRUFBRUgsRUFBQztBQUFFLFdBQU8sR0FBR0EsSUFBRUcsSUFBRUYsSUFBRUMsSUFBRSxHQUFHLE1BQUssRUFBRSxHQUFHO0FBQUEsRUFBQyxHQUFFRCxHQUFFLFFBQU0sU0FBU0QsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLGVBQVNELE9BQUlBLEtBQUUsT0FBSSxXQUFTQyxPQUFJQSxLQUFFO0FBQUcsUUFBSUMsS0FBRSxFQUFFSCxFQUFDO0FBQUUsV0FBTyxHQUFHQSxJQUFFRyxJQUFFRixJQUFFQyxJQUFFLEdBQUcsS0FBSSxFQUFFLEdBQUc7QUFBQSxFQUFDLEdBQUVELEdBQUUsU0FBTyxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsZUFBU0QsT0FBSUEsS0FBRSxPQUFJLFdBQVNDLE9BQUlBLEtBQUU7QUFBRyxRQUFJQyxLQUFFLEVBQUVILEVBQUM7QUFBRSxXQUFPLEdBQUdBLElBQUVHLElBQUVGLElBQUVDLElBQUUsR0FBRyxNQUFLLEVBQUUsR0FBRztBQUFBLEVBQUMsR0FBRUQsR0FBRSxTQUFPLFNBQVNELElBQUVDLElBQUVDLElBQUU7QUFBQyxlQUFTRCxPQUFJQSxLQUFFLE9BQUksV0FBU0MsT0FBSUEsS0FBRTtBQUFHLFFBQUlDLEtBQUUsRUFBRUgsRUFBQztBQUFFLFdBQU8sR0FBR0EsSUFBRUcsSUFBRUYsSUFBRUMsSUFBRSxHQUFHLE1BQUssRUFBRSxJQUFJO0FBQUEsRUFBQyxHQUFFRCxHQUFFLFVBQVEsU0FBU0QsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLGVBQVNELE9BQUlBLEtBQUUsT0FBSSxXQUFTQyxPQUFJQSxLQUFFO0FBQUcsUUFBSUMsS0FBRSxFQUFFSCxFQUFDO0FBQUUsV0FBTyxHQUFHQSxJQUFFRyxJQUFFRixJQUFFQyxJQUFFLEdBQUcsT0FBTSxFQUFFLElBQUk7QUFBQSxFQUFDLEdBQUVELEdBQUUsY0FBWSxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsV0FBTyxXQUFTRixPQUFJQSxLQUFFLElBQUcsV0FBU0MsT0FBSUEsS0FBRSxPQUFJLFdBQVNDLE9BQUlBLEtBQUUsSUFBRyxHQUFHSixJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFLEdBQUcsS0FBSSxFQUFFLEdBQUc7QUFBQSxFQUFDLEdBQUVILEdBQUUsZUFBYSxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsV0FBTyxXQUFTRixPQUFJQSxLQUFFLElBQUcsV0FBU0MsT0FBSUEsS0FBRSxPQUFJLFdBQVNDLE9BQUlBLEtBQUUsSUFBRyxHQUFHSixJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFLEdBQUcsTUFBSyxFQUFFLEdBQUc7QUFBQSxFQUFDLEdBQUVILEdBQUUsY0FBWSxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsV0FBTyxXQUFTRixPQUFJQSxLQUFFLElBQUcsV0FBU0MsT0FBSUEsS0FBRSxPQUFJLFdBQVNDLE9BQUlBLEtBQUUsSUFBRyxHQUFHSixJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFLEdBQUcsS0FBSSxFQUFFLEdBQUc7QUFBQSxFQUFDLEdBQUVILEdBQUUsZUFBYSxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsV0FBTyxXQUFTRixPQUFJQSxLQUFFLElBQUcsV0FBU0MsT0FBSUEsS0FBRSxPQUFJLFdBQVNDLE9BQUlBLEtBQUUsSUFBRyxHQUFHSixJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFLEdBQUcsTUFBSyxFQUFFLEdBQUc7QUFBQSxFQUFDLEdBQUVILEdBQUUsY0FBWSxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsV0FBTyxXQUFTRixPQUFJQSxLQUFFLElBQUcsV0FBU0MsT0FBSUEsS0FBRSxPQUFJLFdBQVNDLE9BQUlBLEtBQUUsSUFBRyxHQUFHSixJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFLEdBQUcsS0FBSSxFQUFFLEdBQUc7QUFBQSxFQUFDLEdBQUVILEdBQUUsZUFBYSxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsV0FBTyxXQUFTRixPQUFJQSxLQUFFLElBQUcsV0FBU0MsT0FBSUEsS0FBRSxPQUFJLFdBQVNDLE9BQUlBLEtBQUUsSUFBRyxHQUFHSixJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFLEdBQUcsTUFBSyxFQUFFLEdBQUc7QUFBQSxFQUFDLEdBQUVILEdBQUUsWUFBVSxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsV0FBTyxXQUFTRCxPQUFJQSxL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LENBQUM7QUFFRCxVQUFNLGNBQWMsSUFBSSxZQUFZLEtBQUssS0FBSyxJQUFJO0FBQ2xELFNBQUssY0FBYyxXQUFXO0FBSTlCLFNBQUssY0FBYyxLQUFLLElBQUksVUFBVSxHQUFHLGNBQWMsS0FBSyxnQkFBZ0IsS0FBSyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUM7QUFHMUcsU0FBSyw4QkFBOEIsT0FBTyxJQUFJLFFBQVE7QUFDcEQsWUFBTSxZQUFZLElBQUksS0FBSyxJQUFJO0FBQUEsSUFDakMsQ0FBQztBQUVELFlBQVEsSUFBSSxxQ0FBcUM7QUFBQSxFQUNuRDtBQUFBO0FBQUEsRUFFQSxnQkFBZ0IsYUFBYTtBQUMzQixZQUFRLElBQUksY0FBYztBQUFBLEVBQzVCO0FBQUE7QUFBQSxFQUVBLFdBQVc7QUFDVCxZQUFRLElBQUksdUNBQXVDO0FBRW5ELGVBQVcsT0FBTyxPQUFPLE9BQU8sS0FBSyxHQUFHO0FBQ3RDLFVBQUksZ0JBQWdCLEdBQUc7QUFBQSxJQUN6QjtBQUFBLEVBQ0g7QUFBQSxFQUVBLE1BQU0sZUFBZTtBQUNwQixTQUFLLFdBQVcsT0FBTyxPQUFPLENBQUMsR0FBRyxrQkFBa0IsTUFBTSxLQUFLLFNBQVMsQ0FBQztBQUFBLEVBQzFFO0FBQUEsRUFFQSxNQUFNLGVBQWU7QUFDcEIsVUFBTSxLQUFLLFNBQVMsS0FBSyxRQUFRO0FBQy9CLFNBQUssSUFBSSxVQUFVLGNBQWM7QUFBQSxFQUVwQztBQUNEOyIsCiAgIm5hbWVzIjogWyJyb290IiwgImZhY3RvcnkiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiZGVmaW5lIiwgImFtZCIsICJzZWxmIiwgIl9fd2VicGFja19yZXF1aXJlX18iLCAiZGVmaW5pdGlvbiIsICJrZXkiLCAibyIsICJPYmplY3QiLCAiZGVmaW5lUHJvcGVydHkiLCAiZW51bWVyYWJsZSIsICJnZXQiLCAib2JqIiwgInByb3AiLCAicHJvdG90eXBlIiwgImhhc093blByb3BlcnR5IiwgImNhbGwiLCAiU3ltYm9sIiwgInRvU3RyaW5nVGFnIiwgInZhbHVlIiwgImUiLCAidCIsICJMIiwgImV2ZW50TGlzdGVuZXIiLCAibWV0aG9kIiwgImVsZW1lbnRzIiwgImV2ZW50cyIsICJmbiIsICJvcHRpb25zIiwgIkhUTUxDb2xsZWN0aW9uIiwgIk5vZGVMaXN0IiwgIkFycmF5IiwgImZyb20iLCAiaXNBcnJheSIsICJlbCIsICJldiIsICJjYXB0dXJlIiwgInNsaWNlIiwgImFyZ3VtZW50cyIsICJwIiwgInIiLCAiYSIsICJsIiwgInMiLCAiaSIsICJjIiwgIm9uIiwgImJpbmQiLCAib2ZmIiwgImNyZWF0ZUVsZW1lbnRGcm9tU3RyaW5nIiwgImh0bWwiLCAiZGl2IiwgImRvY3VtZW50IiwgImNyZWF0ZUVsZW1lbnQiLCAiaW5uZXJIVE1MIiwgInRyaW0iLCAiZmlyc3RFbGVtZW50Q2hpbGQiLCAiY3JlYXRlRnJvbVRlbXBsYXRlIiwgInN0ciIsICJyZW1vdmVBdHRyaWJ1dGUiLCAibmFtZSIsICJnZXRBdHRyaWJ1dGUiLCAicmVzb2x2ZSIsICJlbGVtZW50IiwgImJhc2UiLCAiY29uIiwgInN1YnRyZWUiLCAiY2hpbGQiLCAiY2hpbGRyZW4iLCAiYXJyIiwgInN1YiIsICJwdXNoIiwgImtleXMiLCAibGVuZ3RoIiwgImV2ZW50UGF0aCIsICJldnQiLCAicGF0aCIsICJjb21wb3NlZFBhdGgiLCAidGFyZ2V0IiwgInBhcmVudEVsZW1lbnQiLCAid2luZG93IiwgInJlc29sdmVFbGVtZW50IiwgInZhbCIsICJFbGVtZW50IiwgInNwbGl0IiwgInJlZHVjZSIsICJwdiIsICJjdiIsICJjaSIsICJxdWVyeVNlbGVjdG9yIiwgInNoYWRvd1Jvb3QiLCAiYWRqdXN0YWJsZUlucHV0TnVtYmVycyIsICJtYXBwZXIiLCAidiIsICJoYW5kbGVTY3JvbGwiLCAiaW5jIiwgIk51bWJlciIsICJzaGlmdEtleSIsICJjdHJsS2V5IiwgImRlbHRhWSIsICJpbmRleCIsICJzZWxlY3Rpb25TdGFydCIsICJyZXBsYWNlIiwgImZvY3VzIiwgInNldFNlbGVjdGlvblJhbmdlIiwgInByZXZlbnREZWZhdWx0IiwgImRpc3BhdGNoRXZlbnQiLCAiRXZlbnQiLCAicGFzc2l2ZSIsICJtaW4iLCAibWF4IiwgImZsb29yIiwgInJvdW5kIiwgIk1hdGgiLCAiaHN2VG9SZ2IiLCAiaCIsICJmIiwgInEiLCAibW9kIiwgImhzdlRvSHNsIiwgInJnYlRvSHN2IiwgImciLCAiYiIsICJtaW5WYWwiLCAibWF4VmFsIiwgImRlbHRhIiwgImRyIiwgImRnIiwgImRiIiwgImNteWtUb0hzdiIsICJtIiwgInkiLCAiayIsICJoc2xUb0hzdiIsICJucyIsICJpc05hTiIsICJoZXhUb0hzdiIsICJoZXgiLCAibWF0Y2giLCAibWFwIiwgInBhcnNlSW50IiwgInBhcnNlVG9IU1ZBIiwgInRvTG93ZXJDYXNlIiwgImN0eCIsICJnZXRDb250ZXh0IiwgImZpbGxTdHlsZSIsICJyZWdleCIsICJjbXlrIiwgInJnYmEiLCAiaHNsYSIsICJoc3ZhIiwgImhleGEiLCAibnVtYXJpemUiLCAiYXJyYXkiLCAidGVzdCIsICJ1bmRlZmluZWQiLCAiaW52YWxpZCIsICJ0eXBlIiwgImV4ZWMiLCAiYWxwaGFWYWxpZCIsICJ2YWx1ZXMiLCAiam9pbiIsICJyYXciLCAic3Vic3RyaW5nIiwgIkhTVmFDb2xvciIsICJvcmlnaW5hbCIsICJuZXh0IiwgInByZWNpc2lvbiIsICJ0b0ZpeGVkIiwgInRoYXQiLCAidG9IU1ZBIiwgInRvU3RyaW5nIiwgInRvSFNMQSIsICJ0b1JHQkEiLCAidG9DTVlLIiwgInJnYiIsICJ0b0hFWEEiLCAicGFkU3RhcnQiLCAiYWxwaGEiLCAidG9VcHBlckNhc2UiLCAiY2xvbmUiLCAiY2xhbXAiLCAiTW92ZWFibGUiLCAib3B0IiwgImFzc2lnbiIsICJsb2NrIiwgIm9uY2hhbmdlIiwgIm9uc3RvcCIsICJfa2V5Ym9hcmQiLCAiYWN0aXZlRWxlbWVudCIsICJ3cmFwcGVyIiwgInVwIiwgInJpZ2h0IiwgImRvd24iLCAibGVmdCIsICJ4bSIsICJ5bSIsICJ1cGRhdGUiLCAiY2FjaGUiLCAieCIsICJzdGFydHNXaXRoIiwgIl90YXBzdGFydCIsICJfIiwgIl90YXBzdG9wIiwgIl90YXBtb3ZlIiwgImNhbmNlbGFibGUiLCAiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwgInRvdWNoIiwgInRvdWNoZXMiLCAiY2xpZW50WCIsICJjbGllbnRZIiwgIndpZHRoIiwgInRvcCIsICJoZWlnaHQiLCAic3R5bGUiLCAib2Zmc2V0V2lkdGgiLCAib2Zmc2V0SGVpZ2h0IiwgImN4IiwgImN5IiwgInRyaWdnZXIiLCAiZGVzdHJveSIsICJTZWxlY3RhYmxlIiwgImNsYXNzTmFtZSIsICJvblRhcCIsICJmb3JFYWNoIiwgImNsYXNzTGlzdCIsICJzdG9wUHJvcGFnYXRpb24iLCAiZGVmYXVsdHMiLCAidmFyaWFudEZsaXBPcmRlciIsICJzdGFydCIsICJtaWRkbGUiLCAiZW5kIiwgInBvc2l0aW9uRmxpcE9yZGVyIiwgImJvdHRvbSIsICJwb3NpdGlvbiIsICJtYXJnaW4iLCAicmVwb3NpdGlvbiIsICJyZWZlcmVuY2UiLCAicG9wcGVyIiwgImNvbnRhaW5lciIsICJkb2N1bWVudEVsZW1lbnQiLCAib3JpZ2luYWxMZWZ0IiwgIm9yaWdpbmFsVG9wIiwgInJlZkJveCIsICJwb3BCb3giLCAicG9zaXRpb25TdG9yZSIsICJ2YXJpYW50U3RvcmUiLCAidnMiLCAidm0iLCAidmUiLCAiaHMiLCAiaG0iLCAiaGUiLCAicG9zS2V5IiwgInZhcktleSIsICJwb3NpdGlvbnMiLCAidmFyaWFudHMiLCAidmVydGljYWwiLCAicG9zaXRpb25WYWwiLCAicG9zaXRpb25LZXkiLCAidmFyaWFudEtleSIsICJwb3NpdGlvblNpemUiLCAidmFyaWFudFNpemUiLCAicG9zaXRpb25NYXhpbXVtIiwgInZhcmlhbnRNYXhpbXVtIiwgInBvc2l0aW9uTWluaW11bSIsICJ2YXJpYW50TWluaW11bSIsICJ2YXJpYW50VmFsIiwgIkUiLCAiUGlja3IiLCAiY29uc3RydWN0b3IiLCAiaW5pdCIsICJzYXZlIiwgImhpZGUiLCAic2hvdyIsICJjbGVhciIsICJjaGFuZ2UiLCAiY2hhbmdlc3RvcCIsICJjYW5jZWwiLCAic3dhdGNoc2VsZWN0IiwgInRoaXMiLCAiREVGQVVMVF9PUFRJT05TIiwgInN3YXRjaGVzIiwgImNvbXBvbmVudHMiLCAidGhlbWUiLCAic2xpZGVycyIsICJsb2NrT3BhY2l0eSIsICJwYWRkaW5nIiwgImluY2x1ZGVzIiwgImludGVyYWN0aW9uIiwgInByZXZpZXciLCAib3BhY2l0eSIsICJodWUiLCAicGFsZXR0ZSIsICJfcHJlQnVpbGQiLCAiX2J1aWxkQ29tcG9uZW50cyIsICJfYmluZEV2ZW50cyIsICJfZmluYWxCdWlsZCIsICJjb2xvciIsICJhZGRTd2F0Y2giLCAiYnV0dG9uIiwgImFwcCIsICJfcm9vdCIsICJfbmFub3BvcCIsICJiYXNlT3B0aW9ucyIsICJIVE1MRWxlbWVudCIsICJbb2JqZWN0IE9iamVjdF0iLCAiRXJyb3IiLCAic2V0QXR0cmlidXRlIiwgIl90IiwgIl9zZXR1cEFuaW1hdGlvbkZyYW1lIiwgInJlcXVlc3RBbmltYXRpb25GcmFtZSIsICJjYiIsICJzZXRDb2xvciIsICJkZWZhdWx0IiwgIl9yZVBvc2l0aW9uaW5nUGlja2VyIiwgImRlZmF1bHRSZXByZXNlbnRhdGlvbiIsICJfcmVwcmVzZW50YXRpb24iLCAic2V0Q29sb3JSZXByZXNlbnRhdGlvbiIsICJzaG93QWx3YXlzIiwgIl9pbml0aWFsaXppbmdBY3RpdmUiLCAiX2VtaXQiLCAiaW5zdGFuY2UiLCAidXNlQXNCdXR0b24iLCAiaW5saW5lIiwgImFwcENsYXNzIiwgImhpZGRlbiIsICJpbnB1dCIsICJpbnQiLCAiZmluZCIsICJhZGQiLCAiY29udGFpbnMiLCAiYXBwZW5kQ2hpbGQiLCAicmVtb3ZlQ2hpbGQiLCAicGFyZW50IiwgIm5leHRTaWJsaW5nIiwgImluc2VydEJlZm9yZSIsICJyZW1vdmUiLCAicGFyZW50Tm9kZSIsICJyZXBsYWNlQ2hpbGQiLCAiZGlzYWJsZWQiLCAiZGlzYWJsZSIsICJjb21wYXJpc29uIiwgInRyYW5zaXRpb24iLCAibGFzdENvbG9yIiwgImluc3QiLCAiY3MiLCAicmVwZWF0IiwgInNvIiwgInNoIiwgImdldENvbG9yIiwgIl9jb2xvciIsICJfbGFzdENvbG9yIiwgInBpY2tlciIsICJjdXJyZW50Q29sb3IiLCAiX3JlY2FsYyIsICJfdXBkYXRlT3V0cHV0IiwgImNzc1JHQmFTdHJpbmciLCAiYmFja2dyb3VuZCIsICJzZXRQcm9wZXJ0eSIsICJfc3dhdGNoQ29sb3JzIiwgInNsaWRlciIsICJiYWNrZ3JvdW5kQ29sb3IiLCAic2VsZWN0YWJsZSIsICJfY29tcG9uZW50cyIsICJldmVudEJpbmRpbmdzIiwgIl9jbGVhckNvbG9yIiwgInNldEhTVkEiLCAiYXBwbHlDb2xvciIsICJyZXN1bHQiLCAic3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uIiwgImNrIiwgImNsb3NlV2l0aEtleSIsICJpc09wZW4iLCAiY29kZSIsICJzb21lIiwgImFkanVzdGFibGVOdW1iZXJzIiwgInJhbmdlcyIsICJzdGVwIiwgInJhbmdlIiwgImdldENvbG9yUmVwcmVzZW50YXRpb24iLCAibnYiLCAidG9QcmVjaXNpb24iLCAiYXV0b1JlcG9zaXRpb24iLCAidGltZW91dCIsICJjbG9zZU9uU2Nyb2xsIiwgInNldFRpbWVvdXQiLCAicnMiLCAiY2xlYXJUaW1lb3V0IiwgIl9ldmVudEJpbmRpbmdzIiwgImJvZHkiLCAiZWIiLCAiaW5uZXJIZWlnaHQiLCAiaW5uZXJXaWR0aCIsICJldmVudFNvdXJjZSIsICJvdXRwdXRQcmVjaXNpb24iLCAic2lsZW50IiwgIl9wYXJzZUxvY2FsQ29sb3IiLCAiYWxwaGFNYWtlc0FDaGFuZ2UiLCAiaTE4biIsICJJMThOX0RFRkFVTFRTIiwgImV2ZW50IiwgImFyZ3MiLCAiX2V2ZW50TGlzdGVuZXIiLCAiY2FsbEJhY2tzIiwgImluZGV4T2YiLCAic3BsaWNlIiwgInJlbW92ZVN3YXRjaCIsICJzd2F0Y2hDb2xvciIsICJjYW5jZWxBbmltYXRpb25GcmFtZSIsICJkZXN0cm95QW5kUmVtb3ZlIiwgInJlY2FsYyIsICJzdHJpbmciLCAidXR5cGUiLCAiY2xpY2siLCAiZ2V0U2VsZWN0ZWRDb2xvciIsICJnZXRSb290IiwgImVuYWJsZSIsICJWRVJTSU9OIiwgImltcG9ydF9vYnNpZGlhbiIsICJzIiwgIl8iLCAiaSIsICJzZXR0aW5ncyIsICJpIiwgImxpbmVOdW1iZXIiLCAiaW1wb3J0X3N0YXRlIiwgImltcG9ydF92aWV3IiwgImkiLCAiaSIsICJmIiwgImkiLCAiY29kZUJsb2NrRmlyc3RMaW5lIiwgIkNvbGxhcHNlIiwgImkiLCAiaiIsICJfIiwgImltcG9ydF9vYnNpZGlhbiIsICJ0IiwgImUiLCAiciIsICJuIiwgImkiLCAibyIsICJhIiwgInUiLCAiYyIsICJzIiwgImQiLCAiaCIsICJsIiwgImYiLCAiZyIsICJwIiwgImIiLCAiRiIsICJtIiwgInkiLCAiQSIsICJFIiwgInYiLCAidmFsdWUiLCAiUGlja3IiLCAiaSJdCn0K
diff --git a/src/CodeBlockHighlight.ts b/src/CodeBlockHighlight.ts
index dc1b01b..f87ac9d 100644
--- a/src/CodeBlockHighlight.ts
+++ b/src/CodeBlockHighlight.ts
@@ -5,260 +5,260 @@ import { syntaxTree } from "@codemirror/language";
import { splitAndTrimString, searchString, getHighlightedLines, getLanguageIcon, getLanguageName, isExcluded } from "./Utils";
export function codeblockHighlight(settings: CodeblockCustomizerSettings) {
- const viewPlugin = ViewPlugin.fromClass(
- class CodeblockHighlightPlugin {
- decorations: DecorationSet;
- settings: CodeblockCustomizerSettings;
- prevAlternateColors: ColorSettings[];
- view: EditorView;
- mutationObserver: MutationObserver;
- prevBGColor: string;
- prevHLColor: string;
- prevExcludeLangs: string;
- prevTextColor: string;
- prevBackgroundColor: string;
- prevHighlightGutter: boolean;
- prevLineNumbers: boolean;
+ const viewPlugin = ViewPlugin.fromClass(
+ class CodeblockHighlightPlugin {
+ decorations: DecorationSet;
+ settings: CodeblockCustomizerSettings;
+ prevAlternateColors: ColorSettings[];
+ view: EditorView;
+ mutationObserver: MutationObserver;
+ prevBGColor: string;
+ prevHLColor: string;
+ prevExcludeLangs: string;
+ prevTextColor: string;
+ prevBackgroundColor: string;
+ prevHighlightGutter: boolean;
+ prevLineNumbers: boolean;
- constructor(view: EditorView) {
- this.initialize(view, settings);
- }
+ constructor(view: EditorView) {
+ this.initialize(view, settings);
+ }
- initialize(view: EditorView, settings: CodeblockCustomizerSettings) {
- this.view = view;
- this.settings = settings;
- this.decorations = this.buildDecorations(view);
- this.prevAlternateColors = [];
- this.mutationObserver = setupMutationObserver(view, this);
- this.prevBGColor = '';
- this.prevHLColor = '';
- this.prevExcludeLangs = '';
- this.prevTextColor = '';
- this.prevBackgroundColor = '';
- this.prevHighlightGutter = false;
- this.prevLineNumbers = false;
- }// initialize
+ initialize(view: EditorView, settings: CodeblockCustomizerSettings) {
+ this.view = view;
+ this.settings = settings;
+ this.decorations = this.buildDecorations(view);
+ this.prevAlternateColors = [];
+ this.mutationObserver = setupMutationObserver(view, this);
+ this.prevBGColor = '';
+ this.prevHLColor = '';
+ this.prevExcludeLangs = '';
+ this.prevTextColor = '';
+ this.prevBackgroundColor = '';
+ this.prevHighlightGutter = false;
+ this.prevLineNumbers = false;
+ }// initialize
- forceUpdate(editorView: EditorView) {
- this.view = editorView;
- this.decorations = this.buildDecorations(this.view);
- this.view.requestMeasure();
- }// forceUpdate
+ forceUpdate(editorView: EditorView) {
+ this.view = editorView;
+ this.decorations = this.buildDecorations(this.view);
+ this.view.requestMeasure();
+ }// forceUpdate
- shouldUpdate(update: ViewUpdate) {
- return (update.docChanged || update.viewportChanged || !this.compareSettings());
- }// shouldUpdate
+ shouldUpdate(update: ViewUpdate) {
+ return (update.docChanged || update.viewportChanged || !this.compareSettings());
+ }// shouldUpdate
- compareSettings() {
- return (
- this.settings.backgroundColor === this.prevBGColor &&
- this.settings.highlightColor === this.prevHLColor &&
- this.settings.ExcludeLangs === this.prevExcludeLangs &&
- compareArrays(this.settings.alternateColors, this.prevAlternateColors) &&
- this.settings.gutterTextColor === this.prevTextColor &&
- this.settings.gutterBackgroundColor === this.prevBackgroundColor &&
- this.settings.bGutterHighlight === this.prevHighlightGutter &&
- this.settings.bEnableLineNumbers === this.prevLineNumbers
- );
- }// compareSettings
-
- updateSettings() {
- this.prevBGColor = this.settings.backgroundColor;
- this.prevHLColor = this.settings.highlightColor;
- this.prevExcludeLangs = this.settings.ExcludeLangs;
- this.prevAlternateColors = this.settings.alternateColors.map(({name}) => {
- return {name};
- });
- this.prevTextColor = this.settings.gutterTextColor;
- this.prevBackgroundColor = this.settings.gutterBackgroundColor;
- this.prevHighlightGutter = this.settings.bGutterHighlight;
- this.prevLineNumbers = this.settings.bEnableLineNumbers;
- }// updateSettings
+ compareSettings() {
+ return (
+ this.settings.backgroundColor === this.prevBGColor &&
+ this.settings.highlightColor === this.prevHLColor &&
+ this.settings.ExcludeLangs === this.prevExcludeLangs &&
+ compareArrays(this.settings.alternateColors, this.prevAlternateColors) &&
+ this.settings.gutterTextColor === this.prevTextColor &&
+ this.settings.gutterBackgroundColor === this.prevBackgroundColor &&
+ this.settings.bGutterHighlight === this.prevHighlightGutter &&
+ this.settings.bEnableLineNumbers === this.prevLineNumbers
+ );
+ }// compareSettings
+
+ updateSettings() {
+ this.prevBGColor = this.settings.backgroundColor;
+ this.prevHLColor = this.settings.highlightColor;
+ this.prevExcludeLangs = this.settings.ExcludeLangs;
+ this.prevAlternateColors = this.settings.alternateColors.map(({name}) => {
+ return {name};
+ });
+ this.prevTextColor = this.settings.gutterTextColor;
+ this.prevBackgroundColor = this.settings.gutterBackgroundColor;
+ this.prevHighlightGutter = this.settings.bGutterHighlight;
+ this.prevLineNumbers = this.settings.bEnableLineNumbers;
+ }// updateSettings
- update(update: ViewUpdate) {
- if (this.shouldUpdate(update)) {
- this.updateSettings();
- this.decorations = this.buildDecorations(update.view);
- }
- }// update
+ update(update: ViewUpdate) {
+ if (this.shouldUpdate(update)) {
+ this.updateSettings();
+ this.decorations = this.buildDecorations(update.view);
+ }
+ }// update
- destroy() {
- this.mutationObserver.disconnect();
- }// destroy
+ destroy() {
+ this.mutationObserver.disconnect();
+ }// destroy
- filterVisibleCodeblocks(view: EditorView, codeblocks: Codeblock[]): Codeblock[] {
- return codeblocks.filter((codeblock) => {
- return view.visibleRanges.some((visibleRange) => {
- return (codeblock.from < visibleRange.to && codeblock.to > visibleRange.from);
- });
- });
- }// filterVisibleCodeblocks
+ filterVisibleCodeblocks(view: EditorView, codeblocks: Codeblock[]): Codeblock[] {
+ return codeblocks.filter((codeblock) => {
+ return view.visibleRanges.some((visibleRange) => {
+ return (codeblock.from < visibleRange.to && codeblock.to > visibleRange.from);
+ });
+ });
+ }// filterVisibleCodeblocks
- deduplicateCodeblocks(codeblocks: Codeblock[]): Codeblock[] {
- const deduplicatedCodeblocks = [];
- for (let i = 0; i < codeblocks.length; i++) {
- if (i === 0 || codeblocks[i].from !== codeblocks[i - 1].from) {
- deduplicatedCodeblocks.push(codeblocks[i]);
- }
- }
- return deduplicatedCodeblocks;
- }// deduplicateCodeblocks
-
- buildDecorations(view: EditorView): DecorationSet {
- let lineNumber = 0;
- let HL = [];
- let altHL = [];
- let lineNumberOffset = 0;
- let showNumbers = true;
- // const Exclude = this.settings.ExcludeLangs;
- // const ExcludeLangs = splitAndTrimString(Exclude);
- let bExclude = false;
- const alternateColors = this.settings.alternateColors || [];
- const decorations = [];
+ deduplicateCodeblocks(codeblocks: Codeblock[]): Codeblock[] {
+ const deduplicatedCodeblocks = [];
+ for (let i = 0; i < codeblocks.length; i++) {
+ if (i === 0 || codeblocks[i].from !== codeblocks[i - 1].from) {
+ deduplicatedCodeblocks.push(codeblocks[i]);
+ }
+ }
+ return deduplicatedCodeblocks;
+ }// deduplicateCodeblocks
+
+ buildDecorations(view: EditorView): DecorationSet {
+ let lineNumber = 0;
+ let HL = [];
+ let altHL = [];
+ let lineNumberOffset = 0;
+ let showNumbers = true;
+ // const Exclude = this.settings.ExcludeLangs;
+ // const ExcludeLangs = splitAndTrimString(Exclude);
+ let bExclude = false;
+ const alternateColors = this.settings.alternateColors || [];
+ const decorations = [];
- if (!view.visibleRanges || view.visibleRanges.length === 0) {
- return RangeSet.empty;
- }
-
- // Find all code blocks in the document
- const codeblocks = findCodeblocks(view.state, view.state.doc.from, view.state.doc.to);
- // Find code blocks that intersect with the visible range
- const visibleCodeblocks = this.filterVisibleCodeblocks(view, codeblocks);
- // remove duplicates
- const deduplicatedCodeblocks = this.deduplicateCodeblocks(visibleCodeblocks);
+ if (!view.visibleRanges || view.visibleRanges.length === 0) {
+ return RangeSet.empty;
+ }
+
+ // Find all code blocks in the document
+ const codeblocks = findCodeblocks(view.state, view.state.doc.from, view.state.doc.to);
+ // Find code blocks that intersect with the visible range
+ const visibleCodeblocks = this.filterVisibleCodeblocks(view, codeblocks);
+ // remove duplicates
+ const deduplicatedCodeblocks = this.deduplicateCodeblocks(visibleCodeblocks);
- for (const codeblock of deduplicatedCodeblocks) {
- syntaxTree(view.state).iterate({ from: codeblock.from, to: codeblock.to,
- enter(node) {
- const line = view.state.doc.lineAt(node.from);
- const lineText = view.state.sliceDoc(line.from, line.to);
- const lang = searchString(lineText, "```");
- const startLine = node.type.name.includes("HyperMD-codeblock-begin")
- const endLine = node.type.name.includes("HyperMD-codeblock-end")
- if (lang) {
- bExclude = isExcluded(lineText, settings.ExcludeLangs);
- }
- if (bExclude) {
- if (endLine) {
- bExclude = false;
- }
- return;
- }
- if (startLine) {
- lineNumber = 0;
- lineNumberOffset = 0; //searchString(codeBlockFirstLine, "ln:")//TODO (@mayurankv) Set line number offset here - Should be ln_value - 1 since it is offset, not starting line number - 0 if true OR false
- showNumbers = true; //TODO (@mayurankv) Set showNumbers to be true if ln: or ln:true or false if ln:false
- const params = searchString(lineText, "HL:");
- HL = getHighlightedLines(params);
- altHL = [];
- for (const { name } of alternateColors) {
- const altParams = searchString(lineText, `${name}:`);
- altHL = altHL.concat(getHighlightedLines(altParams).map((lineNumber) => ({ name, lineNumber })));
- }
- }
- let lineClass = 'codeblock-customizer-line';
- if (HL.includes(lineNumber)) {
- lineClass = 'codeblock-customizer-line-highlighted';
- } else {
- const altHLMatch = altHL.filter((hl) => hl.lineNumber === lineNumber);
- if (altHLMatch.length > 0) {
- lineClass = `codeblock-customizer-line-highlighted-${altHLMatch[0].name.replace(/\s+/g, '-').toLowerCase()}`;
- }
- }
+ for (const codeblock of deduplicatedCodeblocks) {
+ syntaxTree(view.state).iterate({ from: codeblock.from, to: codeblock.to,
+ enter(node) {
+ const line = view.state.doc.lineAt(node.from);
+ const lineText = view.state.sliceDoc(line.from, line.to);
+ const lang = searchString(lineText, "```");
+ const startLine = node.type.name.includes("HyperMD-codeblock-begin")
+ const endLine = node.type.name.includes("HyperMD-codeblock-end")
+ if (lang) {
+ bExclude = isExcluded(lineText, settings.ExcludeLangs);
+ }
+ if (bExclude) {
+ if (endLine) {
+ bExclude = false;
+ }
+ return;
+ }
+ if (startLine) {
+ lineNumber = 0;
+ lineNumberOffset = 0; //searchString(codeBlockFirstLine, "ln:")//TODO (@mayurankv) Set line number offset here - Should be ln_value - 1 since it is offset, not starting line number - 0 if true OR false
+ showNumbers = true; //TODO (@mayurankv) Set showNumbers to be true if ln: or ln:true or false if ln:false
+ const params = searchString(lineText, "HL:");
+ HL = getHighlightedLines(params);
+ altHL = [];
+ for (const { name } of alternateColors) {
+ const altParams = searchString(lineText, `${name}:`);
+ altHL = altHL.concat(getHighlightedLines(altParams).map((lineNumber) => ({ name, lineNumber })));
+ }
+ }
+ let lineClass = 'codeblock-customizer-line';
+ if (HL.includes(lineNumber)) {
+ lineClass = 'codeblock-customizer-line-highlighted';
+ } else {
+ const altHLMatch = altHL.filter((hl) => hl.lineNumber === lineNumber);
+ if (altHLMatch.length > 0) {
+ lineClass = `codeblock-customizer-line-highlighted-${altHLMatch[0].name.replace(/\s+/g, '-').toLowerCase()}`;
+ }
+ }
- if (node.type.name === "HyperMD-codeblock_HyperMD-codeblock-bg" || startLine || endLine) {
- decorations.push(Decoration.line({attributes: {class: lineClass}}).range(node.from));
+ if (node.type.name === "HyperMD-codeblock_HyperMD-codeblock-bg" || startLine || endLine) {
+ decorations.push(Decoration.line({attributes: {class: lineClass}}).range(node.from));
- decorations.push(Decoration.line({}).range(node.from));
- decorations.push(Decoration.widget({ widget: new LineNumberWidget((startLine || endLine) ? " " : lineNumber+lineNumberOffset,showNumbers),}).range(node.from));
- lineNumber++;
- }
- },
- });
- }
- return RangeSet.of(decorations, true);
- }
- },// CodeblockHighlightPlugin
- {
- decorations: (value) => value.decorations,
- }
- );
+ decorations.push(Decoration.line({}).range(node.from));
+ decorations.push(Decoration.widget({ widget: new LineNumberWidget((startLine || endLine) ? " " : lineNumber+lineNumberOffset,showNumbers),}).range(node.from));
+ lineNumber++;
+ }
+ },
+ });
+ }
+ return RangeSet.of(decorations, true);
+ }
+ },// CodeblockHighlightPlugin
+ {
+ decorations: (value) => value.decorations,
+ }
+ );
- viewPlugin.name = 'codeblockHighlight';
- return viewPlugin;
+ viewPlugin.name = 'codeblockHighlight';
+ return viewPlugin;
}// codeblockHighlight
function compareArrays(array1, array2) {
-
- if (array1.length !== array2.length) {
- return false;
- }
- for (let i = 0; i < array1.length; i++) {
- if ((array1[i].name !== array2[i].name) || (array1[i].currentColor !== array2[i].currentColor)) {
- return false;
- }
- }
- return true;
+
+ if (array1.length !== array2.length) {
+ return false;
+ }
+ for (let i = 0; i < array1.length; i++) {
+ if ((array1[i].name !== array2[i].name) || (array1[i].currentColor !== array2[i].currentColor)) {
+ return false;
+ }
+ }
+ return true;
}// compareArrays
class LineNumberWidget extends WidgetType {
- constructor(private lineNumber: number, private showNumbers: boolean) {
- super();
- }
+ constructor(private lineNumber: number, private showNumbers: boolean) {
+ super();
+ }
- eq(other: LineNumberWidget) {
- return this.lineNumber === other.lineNumber && this.showNumbers === other.showNumbers;
- }
+ eq(other: LineNumberWidget) {
+ return this.lineNumber === other.lineNumber && this.showNumbers === other.showNumbers;
+ }
- toDOM(view: EditorView): HTMLElement {
- const container = document.createElement("span");
- container.classList.add(`codeblock-customizer-line-number${this.showNumbers?'':'-hide'}`);
- container.innerText = `${this.lineNumber}`;
+ toDOM(view: EditorView): HTMLElement {
+ const container = document.createElement("span");
+ container.classList.add(`codeblock-customizer-line-number${this.showNumbers?'':'-hide'}`);
+ container.innerText = `${this.lineNumber}`;
- return container;
- }
+ return container;
+ }
}// LineNumberWidget
function findCodeblocks(doc: Text, from: number, to: number): SyntaxNode[] {
- const tree = syntaxTree(doc);
- const codeblocks: SyntaxNode[] = [];
+ const tree = syntaxTree(doc);
+ const codeblocks: SyntaxNode[] = [];
- tree.iterate({ from, to,
- enter: (node) => {
- if (
- node.type.name.includes("HyperMD-codeblock-begin") ||
- node.type.name === "HyperMD-codeblock_HyperMD-codeblock-bg" ||
- node.type.name.includes("HyperMD-codeblock-end")
- ) {
- codeblocks.push(node);
- }
- },
- });
+ tree.iterate({ from, to,
+ enter: (node) => {
+ if (
+ node.type.name.includes("HyperMD-codeblock-begin") ||
+ node.type.name === "HyperMD-codeblock_HyperMD-codeblock-bg" ||
+ node.type.name.includes("HyperMD-codeblock-end")
+ ) {
+ codeblocks.push(node);
+ }
+ },
+ });
- return codeblocks;
+ return codeblocks;
}// findCodeblocks
function setupMutationObserver(editorView: EditorView, pluginInstance: any) { //TODO (@mayurankv) What does this do? Work out
- const observer = new MutationObserver((mutations) => {
- for (const mutation of mutations) {
- if (
- mutation.type === "attributes" &&
- mutation.attributeName === "class" &&
- (mutation.target.classList.contains("HyperMD-codeblock-begin") ||
- mutation.target.classList.contains("HyperMD-codeblock_HyperMD-codeblock-bg") ||
- mutation.target.classList.contains("HyperMD-codeblock-end"))
- ) {
- pluginInstance.forceUpdate(editorView);
- }
- }
- });
+ const observer = new MutationObserver((mutations) => {
+ for (const mutation of mutations) {
+ if (
+ mutation.type === "attributes" &&
+ mutation.attributeName === "class" &&
+ (mutation.target.classList.contains("HyperMD-codeblock-begin") ||
+ mutation.target.classList.contains("HyperMD-codeblock_HyperMD-codeblock-bg") ||
+ mutation.target.classList.contains("HyperMD-codeblock-end"))
+ ) {
+ pluginInstance.forceUpdate(editorView);
+ }
+ }
+ });
- observer.observe(editorView.dom, {
- attributes: true,
- childList: true,
- subtree: true,
- attributeFilter: ['class'], // Only observe changes to the 'class' attribute
- });
+ observer.observe(editorView.dom, {
+ attributes: true,
+ childList: true,
+ subtree: true,
+ attributeFilter: ['class'], // Only observe changes to the 'class' attribute
+ });
- return observer;
-} // setupMutationObserver
\ No newline at end of file
+ return observer;
+} // setupMutationObserver
diff --git a/src/Const.ts b/src/Const.ts
index 5a46014..409bb07 100644
--- a/src/Const.ts
+++ b/src/Const.ts
@@ -2,854 +2,854 @@
// https://prismjs.com/plugins/show-language/
export const Languages = {
- "none": "Plain text",
- "plain": "Plain text",
- "plaintext": "Plain text",
- "text": "Plain text",
- "txt": "Plain text",
- "html": "HTML",
- "xml": "XML",
- "svg": "SVG",
- "mathml": "MathML",
- "ssml": "SSML",
- "rss": "RSS",
- "css": "CSS",
- "clike": "C-like",
- "js": "JavaScript",
- "abap": "ABAP",
- "abnf": "ABNF",
- "al": "AL",
- "antlr4": "ANTLR4",
- "g4": "ANTLR4",
- "apacheconf": "Apache Configuration",
- "apl": "APL",
- "aql": "AQL",
- "ino": "Arduino",
- "arff": "ARFF",
- "armasm": "ARM Assembly",
- "arm-asm": "ARM Assembly",
- "art": "Arturo",
- "asciidoc": "AsciiDoc",
- "adoc": "AsciiDoc",
- "aspnet": "ASP.NET (C#)",
- "asm6502": "6502 Assembly",
- "asmatmel": "Atmel AVR Assembly",
- "autohotkey": "AutoHotkey",
- "autoit": "AutoIt",
- "avisynth": "AviSynth",
- "avs": "AviSynth",
- "avro-idl": "Avro IDL",
- "avdl": "Avro IDL",
- "awk": "AWK",
- "gawk": "GAWK",
- "sh": "Shell",
- "basic": "BASIC",
- "bbcode": "BBcode",
- "bbj": "BBj",
- "bnf": "BNF",
- "rbnf": "RBNF",
- "bqn": "BQN",
- "bsl": "BSL (1C:Enterprise)",
- "oscript": "OneScript",
- "csharp": "C#",
- "cs": "C#",
- "dotnet": "C#",
- "cpp": "C++",
- "cfscript": "CFScript",
- "cfc": "CFScript",
- "cil": "CIL",
- "cilkc": "Cilk/C",
- "cilk-c": "Cilk/C",
- "cilkcpp": "Cilk/C++",
- "cilk-cpp": "Cilk/C++",
- "cilk": "Cilk/C++",
- "cmake": "CMake",
- "cobol": "COBOL",
- "coffee": "CoffeeScript",
- "conc": "Concurnas",
- "csp": "Content-Security-Policy",
- "css-extras": "CSS Extras",
- "csv": "CSV",
- "cue": "CUE",
- "dataweave": "DataWeave",
- "dax": "DAX",
- "django": "Django/Jinja2",
- "jinja2": "Django/Jinja2",
- "dns-zone-file": "DNS zone file",
- "dns-zone": "DNS zone file",
- "dockerfile": "Docker",
- "dot": "DOT (Graphviz)",
- "gv": "DOT (Graphviz)",
- "ebnf": "EBNF",
- "editorconfig": "EditorConfig",
- "ejs": "EJS",
- "etlua": "Embedded Lua templating",
- "erb": "ERB",
- "excel-formula": "Excel Formula",
- "xlsx": "Excel Formula",
- "xls": "Excel Formula",
- "fsharp": "F#",
- "firestore-security-rules": "Firestore security rules",
- "ftl": "FreeMarker Template Language",
- "gml": "GameMaker Language",
- "gamemakerlanguage": "GameMaker Language",
- "gap": "GAP (CAS)",
- "gcode": "G-code",
- "gdscript": "GDScript",
- "gedcom": "GEDCOM",
- "gettext": "gettext",
- "po": "gettext",
- "glsl": "GLSL",
- "gn": "GN",
- "gni": "GN",
- "linker-script": "GNU Linker Script",
- "ld": "GNU Linker Script",
- "go-module": "Go module",
- "go-mod": "Go module",
- "graphql": "GraphQL",
- "hbs": "Handlebars",
- "hs": "Haskell",
- "hcl": "HCL",
- "hlsl": "HLSL",
- "http": "HTTP",
- "hpkp": "HTTP Public-Key-Pins",
- "hsts": "HTTP Strict-Transport-Security",
- "ichigojam": "IchigoJam",
- "icu-message-format": "ICU Message Format",
- "idr": "Idris",
- "ignore": ".ignore",
- "gitignore": ".gitignore",
- "hgignore": ".hgignore",
- "npmignore": ".npmignore",
- "inform7": "Inform 7",
- "javadoc": "JavaDoc",
- "javadoclike": "JavaDoc-like",
- "javastacktrace": "Java stack trace",
- "jq": "JQ",
- "jsdoc": "JSDoc",
- "js-extras": "JS Extras",
- "json": "JSON",
- "webmanifest": "Web App Manifest",
- "json5": "JSON5",
- "jsonp": "JSONP",
- "jsstacktrace": "JS stack trace",
- "js-templates": "JS Templates",
- "keepalived": "Keepalived Configure",
- "kts": "Kotlin Script",
- "kt": "Kotlin",
- "kumir": "KuMir (КуМир)",
- "kum": "KuMir (КуМир)",
- "latex": "LaTeX",
- "tex": "TeX",
- "context": "ConTeXt",
- "lilypond": "LilyPond",
- "ly": "LilyPond",
- "emacs": "Lisp",
- "elisp": "Lisp",
- "emacs-lisp": "Lisp",
- "llvm": "LLVM IR",
- "log": "Log file",
- "lolcode": "LOLCODE",
- "magma": "Magma (CAS)",
- "md": "Markdown",
- "markup-templating": "Markup templating",
- "matlab": "MATLAB",
- "maxscript": "MAXScript",
- "mel": "MEL",
- "metafont": "METAFONT",
- "mongodb": "MongoDB",
- "moon": "MoonScript",
- "n1ql": "N1QL",
- "n4js": "N4JS",
- "n4jsd": "N4JS",
- "nand2tetris-hdl": "Nand To Tetris HDL",
- "naniscript": "Naninovel Script",
- "nani": "Naninovel Script",
- "nasm": "NASM",
- "neon": "NEON",
- "nginx": "nginx",
- "nsis": "NSIS",
- "objectivec": "Objective-C",
- "objc": "Objective-C",
- "ocaml": "OCaml",
- "opencl": "OpenCL",
- "openqasm": "OpenQasm",
- "qasm": "OpenQasm",
- "parigp": "PARI/GP",
- "objectpascal": "Object Pascal",
- "psl": "PATROL Scripting Language",
- "pcaxis": "PC-Axis",
- "px": "PC-Axis",
- "peoplecode": "PeopleCode",
- "pcode": "PeopleCode",
- "php": "PHP",
- "phpdoc": "PHPDoc",
- "php-extras": "PHP Extras",
- "plant-uml": "PlantUML",
- "plantuml": "PlantUML",
- "plsql": "PL/SQL",
- "powerquery": "PowerQuery",
- "pq": "PowerQuery",
- "mscript": "PowerQuery",
- "powershell": "PowerShell",
- "promql": "PromQL",
- "properties": ".properties",
- "protobuf": "Protocol Buffers",
- "purebasic": "PureBasic",
- "pbfasm": "PureBasic",
- "purs": "PureScript",
- "py": "Python",
- "qsharp": "Q#",
- "qs": "Q#",
- "q": "Q (kdb+ database)",
- "qml": "QML",
- "rkt": "Racket",
- "cshtml": "Razor C#",
- "razor": "Razor C#",
- "jsx": "React JSX",
- "tsx": "React TSX",
- "renpy": "Ren'py",
- "rpy": "Ren'py",
- "res": "ReScript",
- "rest": "reST (reStructuredText)",
- "robotframework": "Robot Framework",
- "robot": "Robot Framework",
- "rb": "Ruby",
- "sas": "SAS",
- "sass": "Sass (Sass)",
- "scss": "Sass (SCSS)",
- "shell-session": "Shell session",
- "sh-session": "Shell session",
- "shellsession": "Shell session",
- "sml": "SML",
- "smlnj": "SML/NJ",
- "solidity": "Solidity (Ethereum)",
- "sol": "Solidity (Ethereum)",
- "solution-file": "Solution file",
- "sln": "Solution file",
- "soy": "Soy (Closure Template)",
- "sparql": "SPARQL",
- "rq": "SPARQL",
- "splunk-spl": "Splunk SPL",
- "sqf": "SQF: Status Quo Function (Arma 3)",
- "sql": "SQL",
- "stata": "Stata Ado",
- "iecst": "Structured Text (IEC 61131-3)",
- "supercollider": "SuperCollider",
- "sclang": "SuperCollider",
- "systemd": "Systemd configuration file",
- "t4-templating": "T4 templating",
- "t4-cs": "T4 Text Templates (C#)",
- "t4": "T4 Text Templates (C#)",
- "t4-vb": "T4 Text Templates (VB)",
- "tap": "TAP",
- "tt2": "Template Toolkit 2",
- "toml": "TOML",
- "trickle": "trickle",
- "troy": "troy",
- "trig": "TriG",
- "ts": "TypeScript",
- "tsconfig": "TSConfig",
- "uscript": "UnrealScript",
- "uc": "UnrealScript",
- "uorazor": "UO Razor Script",
- "uri": "URI",
- "url": "URL",
- "vbnet": "VB.Net",
- "vhdl": "VHDL",
- "vim": "vim",
- "visual-basic": "Visual Basic",
- "vba": "VBA",
- "vb": "Visual Basic",
- "wasm": "WebAssembly",
- "web-idl": "Web IDL",
- "webidl": "Web IDL",
- "wgsl": "WGSL",
- "wiki": "Wiki markup",
- "wolfram": "Wolfram language",
- "nb": "Mathematica Notebook",
- "wl": "Wolfram language",
- "xeoracube": "XeoraCube",
- "xml-doc": "XML doc (.net)",
- "xojo": "Xojo (REALbasic)",
- "xquery": "XQuery",
- "yaml": "YAML",
- "yml": "YAML",
- "yang": "YANG",
+ "none": "Plain text",
+ "plain": "Plain text",
+ "plaintext": "Plain text",
+ "text": "Plain text",
+ "txt": "Plain text",
+ "html": "HTML",
+ "xml": "XML",
+ "svg": "SVG",
+ "mathml": "MathML",
+ "ssml": "SSML",
+ "rss": "RSS",
+ "css": "CSS",
+ "clike": "C-like",
+ "js": "JavaScript",
+ "abap": "ABAP",
+ "abnf": "ABNF",
+ "al": "AL",
+ "antlr4": "ANTLR4",
+ "g4": "ANTLR4",
+ "apacheconf": "Apache Configuration",
+ "apl": "APL",
+ "aql": "AQL",
+ "ino": "Arduino",
+ "arff": "ARFF",
+ "armasm": "ARM Assembly",
+ "arm-asm": "ARM Assembly",
+ "art": "Arturo",
+ "asciidoc": "AsciiDoc",
+ "adoc": "AsciiDoc",
+ "aspnet": "ASP.NET (C#)",
+ "asm6502": "6502 Assembly",
+ "asmatmel": "Atmel AVR Assembly",
+ "autohotkey": "AutoHotkey",
+ "autoit": "AutoIt",
+ "avisynth": "AviSynth",
+ "avs": "AviSynth",
+ "avro-idl": "Avro IDL",
+ "avdl": "Avro IDL",
+ "awk": "AWK",
+ "gawk": "GAWK",
+ "sh": "Shell",
+ "basic": "BASIC",
+ "bbcode": "BBcode",
+ "bbj": "BBj",
+ "bnf": "BNF",
+ "rbnf": "RBNF",
+ "bqn": "BQN",
+ "bsl": "BSL (1C:Enterprise)",
+ "oscript": "OneScript",
+ "csharp": "C#",
+ "cs": "C#",
+ "dotnet": "C#",
+ "cpp": "C++",
+ "cfscript": "CFScript",
+ "cfc": "CFScript",
+ "cil": "CIL",
+ "cilkc": "Cilk/C",
+ "cilk-c": "Cilk/C",
+ "cilkcpp": "Cilk/C++",
+ "cilk-cpp": "Cilk/C++",
+ "cilk": "Cilk/C++",
+ "cmake": "CMake",
+ "cobol": "COBOL",
+ "coffee": "CoffeeScript",
+ "conc": "Concurnas",
+ "csp": "Content-Security-Policy",
+ "css-extras": "CSS Extras",
+ "csv": "CSV",
+ "cue": "CUE",
+ "dataweave": "DataWeave",
+ "dax": "DAX",
+ "django": "Django/Jinja2",
+ "jinja2": "Django/Jinja2",
+ "dns-zone-file": "DNS zone file",
+ "dns-zone": "DNS zone file",
+ "dockerfile": "Docker",
+ "dot": "DOT (Graphviz)",
+ "gv": "DOT (Graphviz)",
+ "ebnf": "EBNF",
+ "editorconfig": "EditorConfig",
+ "ejs": "EJS",
+ "etlua": "Embedded Lua templating",
+ "erb": "ERB",
+ "excel-formula": "Excel Formula",
+ "xlsx": "Excel Formula",
+ "xls": "Excel Formula",
+ "fsharp": "F#",
+ "firestore-security-rules": "Firestore security rules",
+ "ftl": "FreeMarker Template Language",
+ "gml": "GameMaker Language",
+ "gamemakerlanguage": "GameMaker Language",
+ "gap": "GAP (CAS)",
+ "gcode": "G-code",
+ "gdscript": "GDScript",
+ "gedcom": "GEDCOM",
+ "gettext": "gettext",
+ "po": "gettext",
+ "glsl": "GLSL",
+ "gn": "GN",
+ "gni": "GN",
+ "linker-script": "GNU Linker Script",
+ "ld": "GNU Linker Script",
+ "go-module": "Go module",
+ "go-mod": "Go module",
+ "graphql": "GraphQL",
+ "hbs": "Handlebars",
+ "hs": "Haskell",
+ "hcl": "HCL",
+ "hlsl": "HLSL",
+ "http": "HTTP",
+ "hpkp": "HTTP Public-Key-Pins",
+ "hsts": "HTTP Strict-Transport-Security",
+ "ichigojam": "IchigoJam",
+ "icu-message-format": "ICU Message Format",
+ "idr": "Idris",
+ "ignore": ".ignore",
+ "gitignore": ".gitignore",
+ "hgignore": ".hgignore",
+ "npmignore": ".npmignore",
+ "inform7": "Inform 7",
+ "javadoc": "JavaDoc",
+ "javadoclike": "JavaDoc-like",
+ "javastacktrace": "Java stack trace",
+ "jq": "JQ",
+ "jsdoc": "JSDoc",
+ "js-extras": "JS Extras",
+ "json": "JSON",
+ "webmanifest": "Web App Manifest",
+ "json5": "JSON5",
+ "jsonp": "JSONP",
+ "jsstacktrace": "JS stack trace",
+ "js-templates": "JS Templates",
+ "keepalived": "Keepalived Configure",
+ "kts": "Kotlin Script",
+ "kt": "Kotlin",
+ "kumir": "KuMir (КуМир)",
+ "kum": "KuMir (КуМир)",
+ "latex": "LaTeX",
+ "tex": "TeX",
+ "context": "ConTeXt",
+ "lilypond": "LilyPond",
+ "ly": "LilyPond",
+ "emacs": "Lisp",
+ "elisp": "Lisp",
+ "emacs-lisp": "Lisp",
+ "llvm": "LLVM IR",
+ "log": "Log file",
+ "lolcode": "LOLCODE",
+ "magma": "Magma (CAS)",
+ "md": "Markdown",
+ "markup-templating": "Markup templating",
+ "matlab": "MATLAB",
+ "maxscript": "MAXScript",
+ "mel": "MEL",
+ "metafont": "METAFONT",
+ "mongodb": "MongoDB",
+ "moon": "MoonScript",
+ "n1ql": "N1QL",
+ "n4js": "N4JS",
+ "n4jsd": "N4JS",
+ "nand2tetris-hdl": "Nand To Tetris HDL",
+ "naniscript": "Naninovel Script",
+ "nani": "Naninovel Script",
+ "nasm": "NASM",
+ "neon": "NEON",
+ "nginx": "nginx",
+ "nsis": "NSIS",
+ "objectivec": "Objective-C",
+ "objc": "Objective-C",
+ "ocaml": "OCaml",
+ "opencl": "OpenCL",
+ "openqasm": "OpenQasm",
+ "qasm": "OpenQasm",
+ "parigp": "PARI/GP",
+ "objectpascal": "Object Pascal",
+ "psl": "PATROL Scripting Language",
+ "pcaxis": "PC-Axis",
+ "px": "PC-Axis",
+ "peoplecode": "PeopleCode",
+ "pcode": "PeopleCode",
+ "php": "PHP",
+ "phpdoc": "PHPDoc",
+ "php-extras": "PHP Extras",
+ "plant-uml": "PlantUML",
+ "plantuml": "PlantUML",
+ "plsql": "PL/SQL",
+ "powerquery": "PowerQuery",
+ "pq": "PowerQuery",
+ "mscript": "PowerQuery",
+ "powershell": "PowerShell",
+ "promql": "PromQL",
+ "properties": ".properties",
+ "protobuf": "Protocol Buffers",
+ "purebasic": "PureBasic",
+ "pbfasm": "PureBasic",
+ "purs": "PureScript",
+ "py": "Python",
+ "qsharp": "Q#",
+ "qs": "Q#",
+ "q": "Q (kdb+ database)",
+ "qml": "QML",
+ "rkt": "Racket",
+ "cshtml": "Razor C#",
+ "razor": "Razor C#",
+ "jsx": "React JSX",
+ "tsx": "React TSX",
+ "renpy": "Ren'py",
+ "rpy": "Ren'py",
+ "res": "ReScript",
+ "rest": "reST (reStructuredText)",
+ "robotframework": "Robot Framework",
+ "robot": "Robot Framework",
+ "rb": "Ruby",
+ "sas": "SAS",
+ "sass": "Sass (Sass)",
+ "scss": "Sass (SCSS)",
+ "shell-session": "Shell session",
+ "sh-session": "Shell session",
+ "shellsession": "Shell session",
+ "sml": "SML",
+ "smlnj": "SML/NJ",
+ "solidity": "Solidity (Ethereum)",
+ "sol": "Solidity (Ethereum)",
+ "solution-file": "Solution file",
+ "sln": "Solution file",
+ "soy": "Soy (Closure Template)",
+ "sparql": "SPARQL",
+ "rq": "SPARQL",
+ "splunk-spl": "Splunk SPL",
+ "sqf": "SQF: Status Quo Function (Arma 3)",
+ "sql": "SQL",
+ "stata": "Stata Ado",
+ "iecst": "Structured Text (IEC 61131-3)",
+ "supercollider": "SuperCollider",
+ "sclang": "SuperCollider",
+ "systemd": "Systemd configuration file",
+ "t4-templating": "T4 templating",
+ "t4-cs": "T4 Text Templates (C#)",
+ "t4": "T4 Text Templates (C#)",
+ "t4-vb": "T4 Text Templates (VB)",
+ "tap": "TAP",
+ "tt2": "Template Toolkit 2",
+ "toml": "TOML",
+ "trickle": "trickle",
+ "troy": "troy",
+ "trig": "TriG",
+ "ts": "TypeScript",
+ "tsconfig": "TSConfig",
+ "uscript": "UnrealScript",
+ "uc": "UnrealScript",
+ "uorazor": "UO Razor Script",
+ "uri": "URI",
+ "url": "URL",
+ "vbnet": "VB.Net",
+ "vhdl": "VHDL",
+ "vim": "vim",
+ "visual-basic": "Visual Basic",
+ "vba": "VBA",
+ "vb": "Visual Basic",
+ "wasm": "WebAssembly",
+ "web-idl": "Web IDL",
+ "webidl": "Web IDL",
+ "wgsl": "WGSL",
+ "wiki": "Wiki markup",
+ "wolfram": "Wolfram language",
+ "nb": "Mathematica Notebook",
+ "wl": "Wolfram language",
+ "xeoracube": "XeoraCube",
+ "xml-doc": "XML doc (.net)",
+ "xojo": "Xojo (REALbasic)",
+ "xquery": "XQuery",
+ "yaml": "YAML",
+ "yml": "YAML",
+ "yang": "YANG",
};
-
+
// manually generated list from https://prismjs.com/ - 297 languages
export const manualLang = {
- "css":"CSS",
- "clike":"C-like",
- "javascript":"JavaScript",
- "js":"JavaScript",
- "abap":"ABAP",
- "abnf":"ABNF",
- "actionscript":"ActionScript",
- "ada":"Ada",
- "agda":"Agda",
- "al":"AL",
- "antlr4":"ANTLR4",
- "g4":"ANTLR4",
- "apacheconf":"Apache Configuration",
- "apex":"Apex",
- "apl":"APL",
- "applescript":"AppleScript",
- "aql":"AQL",
- "arduino":"Arduino",
- "ino":"Arduino",
- "arff":"ARFF",
- "armasm":"ARM Assembly",
- "arm-asm":"ARM Assembly",
- "arturo":"Arturo",
- "art":"Arturo",
- "asciidoc":"AsciiDoc",
- "adoc":"AsciiDoc",
- "aspnet":"ASP.NET (C#)",
- "asm6502":"6502 Assembly",
- "asmatmel":"Atmel AVR Assembly",
- "autohotkey":"AutoHotkey",
- "autoit":"AutoIt",
- "avisynth":"AviSynth",
- "avs":"AviSynth",
- "avro-idl":"Avro IDL",
- "avdl":"Avro IDL",
- "awk":"AWK",
- "gawk":"GAWK",
- "bash":"Shell",
- "sh":"Shell",
- "shell":"Shell",
- "basic":"BASIC",
- "batch":"Batch",
- "bbcode":"BBcode",
- "shortcode":"BBcode",
- "bbj":"BBj",
- "birb":"Birb",
- "bison":"Bison",
- "bnf":"BNF",
- "rbnf":"BNF",
- "bqn":"BQN",
- "brainfuck":"Brainfuck",
- "brightscript":"BrightScript",
- "bro":"Bro",
- "bsl":"BSL (1C)",
- "oscript":"BSL (1C)",
- "c":"C",
- "csharp":"C#",
- "cs":"C#",
- "dotnet":"C#",
- "cpp":"C++",
- "cfscript":"CFScript",
- "cfc":"CFScript",
- "chaiscript":"ChaiScript",
- "cil":"CIL",
- "cilkc":"Cilk/C",
- "cilk-c":"Cilk/C",
- "cilkcpp":"Cilk/C++",
- "cilk-cpp":"Cilk/C++",
- "cilk":"Cilk/C++",
- "clojure":"Clojure",
- "cmake":"CMake",
- "cobol":"COBOL",
- "coffeescript":"CoffeeScript",
- "coffee":"CoffeeScript",
- "concurnas":"Concurnas",
- "conc":"Concurnas",
- "csp":"Content-Security-Policy",
- "cooklang":"Cooklang",
- "coq":"Coq",
- "crystal":"Crystal",
- "css-extras":"CSS Extras",
- "csv":"CSV",
- "cue":"CUE",
- "cypher":"Cypher",
- "d":"D",
- "dart":"Dart",
- "dataweave":"DataWeave",
- "dax":"DAX",
- "dhall":"Dhall",
- "diff":"Diff",
- "django":"Django/Jinja2",
- "jinja2":"Django/Jinja2",
- "dns-zone-file":"DNS zone file",
- "dns-zone":"DNS zone file",
- "docker":"Docker",
- "dockerfile":"Docker",
- "dot":"DOT (Graphviz)",
- "gv":"DOT (Graphviz)",
- "ebnf":"EBNF",
- "editorconfig":"EditorConfig",
- "eiffel":"Eiffel",
- "ejs":"EJS",
- "eta":"EJS",
- "elixir":"Elixir",
- "elm":"Elm",
- "etlua":"Embedded Lua templating",
- "erb":"ERB",
- "erlang":"Erlang",
- "excel-formula":"Excel Formula",
- "xlsx":"Excel Formula",
- "xls":"Excel Formula",
- "fsharp":"F#",
- "factor":"Factor",
- "false":"False",
- "firestore-security-rules":"Firestore security rules",
- "flow":"Flow",
- "fortran":"Fortran",
- "ftl":"FreeMarker Template Language",
- "gml":"GameMaker Language",
- "gamemakerlanguage":"GameMaker Language",
- "gap":"GAP (CAS)",
- "gcode":"G-code",
- "gdscript":"GDScript",
- "gedcom":"GEDCOM",
- "gettext":"gettext",
- "po":"gettext",
- "gherkin":"Gherkin",
- "git":"Git",
- "glsl":"GLSL",
- "gn":"GN",
- "gni":"GN",
- "linker-script":"GNU Linker Script",
- "ld":"GNU Linker Script",
- "go":"Go",
- "go-module":"Go module",
- "go-mod":"Go module",
- "gradle":"Gradle",
- "graphql":"GraphQL",
- "groovy":"Groovy",
- "haml":"Haml",
- "handlebars":"Handlebars",
- "hbs":"Handlebars",
- "mustache":"Handlebars",
- "haskell":"Haskell",
- "hs":"Haskell",
- "haxe":"Haxe",
- "hcl":"HCL",
- "hlsl":"HLSL",
- "hoon":"Hoon",
- "http":"HTTP",
- "hpkp":"HTTP Public-Key-Pins",
- "hsts":"HTTP Strict-Transport-Security",
- "ichigojam":"IchigoJam",
- "icon":"Icon",
- "icu-message-format":"ICU Message Format",
- "idris":"Idris",
- "idr":"Idris",
- "ignore":".ignore",
- "gitignore":".ignore",
- "hgignore":".ignore",
- "npmignore":".ignore",
- "inform7":"Inform 7",
- "ini":"Ini",
- "io":"Io",
- "j":"J",
- "java":"Java",
- "javadoc":"JavaDoc",
- "javadoclike":"JavaDoc-like",
- "javastacktrace":"Java stack trace",
- "jexl":"Jexl",
- "jolie":"Jolie",
- "jq":"JQ",
- "jsdoc":"JSDoc",
- "js-extras":"JS Extras",
- "json":"JSON",
- "webmanifest":"JSON",
- "json5":"JSON5",
- "jsonp":"JSONP",
- "jsstacktrace":"JS stack trace",
- "js-templates":"JS Templates",
- "julia":"Julia",
- "keepalived":"Keepalived Configure",
- "keyman":"Keyman",
- "kotlin":"Kotlin",
- "kt":"Kotlin",
- "kts":"Kotlin",
- "kumir":"KuMir (КуМир)",
- "kum":"KuMir (КуМир)",
- "kusto":"Kusto",
- "latex":"LaTeX",
- "tex":"LaTeX",
- "context":"LaTeX",
- "latte":"Latte",
- "less":"Less",
- "lilypond":"LilyPond",
- "ly":"LilyPond",
- "liquid":"Liquid",
- "lisp":"Lisp",
- "emacs":"Lisp",
- "elisp":"Lisp",
- "emacs-lisp":"Lisp",
- "livescript":"LiveScript",
- "llvm":"LLVM IR",
- "log":"Log file",
- "lolcode":"LOLCODE",
- "lua":"Lua",
- "magma":"Magma (CAS)",
- "makefile":"Makefile",
- "markdown":"Markdown",
- "md":"Markdown",
- "markup-templating":"Markup templating",
- "mata":"Mata",
- "matlab":"MATLAB",
- "maxscript":"MAXScript",
- "mel":"MEL",
- "mermaid":"Mermaid",
- "metafont":"METAFONT",
- "mizar":"Mizar",
- "mongodb":"MongoDB",
- "monkey":"Monkey",
- "moonscript":"MoonScript",
- "moon":"MoonScript",
- "n1ql":"N1QL",
- "n4js":"N4JS",
- "n4jsd":"N4JS",
- "nand2tetris-hdl":"Nand To Tetris HDL",
- "naniscript":"Naninovel Script",
- "nani":"Naninovel Script",
- "nasm":"NASM",
- "neon":"NEON",
- "nevod":"Nevod",
- "nginx":"nginx",
- "nim":"Nim",
- "nix":"Nix",
- "nsis":"NSIS",
- "objectivec":"Objective-C",
- "objc":"Objective-C",
- "ocaml":"OCaml",
- "odin":"Odin",
- "opencl":"OpenCL",
- "openqasm":"OpenQasm",
- "qasm":"OpenQasm",
- "oz":"Oz",
- "parigp":"PARI/GP",
- "parser":"Parser",
- "pascal":"Pascal",
- "objectpascal":"Pascal",
- "pascaligo":"Pascaligo",
- "psl":"PATROL Scripting Language",
- "pcaxis":"PC-Axis",
- "px":"PC-Axis",
- "peoplecode":"PeopleCode",
- "pcode":"PeopleCode",
- "perl":"Perl",
- "php":"PHP",
- "phpdoc":"PHPDoc",
- "php-extras":"PHP Extras",
- "plant-uml":"PlantUML",
- "plantuml":"PlantUML",
- "plsql":"PL/SQL",
- "powerquery":"PowerQuery",
- "pq":"PowerQuery",
- "mscript":"PowerQuery",
- "powershell":"PowerShell",
- "processing":"Processing",
- "prolog":"Prolog",
- "promql":"PromQL",
- "properties":".properties",
- "protobuf":"Protocol Buffers",
- "pug":"Pug",
- "puppet":"Puppet",
- "pure":"Pure",
- "purebasic":"PureBasic",
- "pbfasm":"PureBasic",
- "purescript":"PureScript",
- "purs":"PureScript",
- "python":"Python",
- "py":"Python",
- "qsharp":"Q#",
- "qs":"Q#",
- "q":"Q (kdb+ database)",
- "qml":"QML",
- "qore":"Qore",
- "r":"R",
- "racket":"Racket",
- "rkt":"Racket",
- "cshtml":"Razor C#",
- "jsx":"React JSX",
- "tsx":"React TSX",
- "reason":"Reason",
- "regex":"Regex",
- "rego":"Rego",
- "renpy":"Ren'py",
- "rpy":"Ren'py",
- "rescript":"ReScript",
- "res":"ReScript",
- "rest":"reST (reStructuredText)",
- "rip":"Rip",
- "roboconf":"Roboconf",
- "robotframework":"Robot Framework",
- "robot":"Robot Framework",
- "ruby":"Ruby",
- "rb":"Ruby",
- "rust":"Rust",
- "sas":"SAS",
- "sass":"Sass (Sass)",
- "scss":"Sass (SCSS)",
- "scala":"Scala",
- "scheme":"Scheme",
- "shell-session":"Shell session",
- "sh-session":"Shell session",
- "shellsession":"Shell session",
- "smali":"Smali",
- "smalltalk":"Smalltalk",
- "smarty":"Smarty",
- "sml":"SML",
- "smlnj":"SML",
- "solidity":"Solidity (Ethereum)",
- "sol":"Solidity (Ethereum)",
- "solution-file":"Solution file",
- "sln":"Solution file",
- "soy":"Soy (Closure Template)",
- "sparql":"SPARQL",
- "rq":"SPARQL",
- "splunk-spl":"Splunk SPL",
- "sqf":"SQF",
- "sql":"SQL",
- "squirrel":"Squirrel",
- "stan":"Stan",
- "stata":"Stata Ado",
- "iecst":"Structured Text (IEC 61131-3)",
- "stylus":"Stylus",
- "supercollider":"SuperCollider",
- "sclang":"SuperCollider",
- "swift":"Swift",
- "systemd":"Systemd configuration file",
- "t4-templating":"T4 templating",
- "t4-cs":"T4 Text Templates (C#)",
- "t4":"T4 Text Templates (C#)",
- "t4-vb":"T4 Text Templates (VB)",
- "tap":"TAP",
- "tcl":"Tcl",
- "tt2":"Template Toolkit 2",
- "textile":"Textile",
- "toml":"TOML",
- "tremor":"Tremor",
- "trickle":"Tremor",
- "troy":"Tremor",
- "turtle":"Turtle",
- "trig":"Turtle",
- "twig":"Twig",
- "typescript":"TypeScript",
- "ts":"TypeScript",
- "typoscript":"TypoScript",
- "tsconfig":"TypoScript",
- "unrealscript":"UnrealScript",
- "uscript":"UnrealScript",
- "uc":"UnrealScript",
- "uorazor":"UO Razor Script",
- "uri":"URI",
- "url":"URI",
- "v":"V",
- "vala":"Vala",
- "vbnet":"VB.Net",
- "velocity":"Velocity",
- "verilog":"Verilog",
- "vhdl":"VHDL",
- "vim":"vim",
- "visual-basic":"Visual Basic",
- "vb":"Visual Basic",
- "vba":"Visual Basic",
- "warpscript":"WarpScript",
- "wasm":"WebAssembly",
- "web-idl":"Web IDL",
- "webidl":"Web IDL",
- "wgsl":"WGSL",
- "wiki":"Wiki markup",
- "wolfram":"Wolfram language",
- "mathematica":"Wolfram language",
- "nb":"Wolfram language",
- "wl":"Wolfram language",
- "wren":"Wren",
- "xeora":"Xeora",
- "xeoracube":"Xeora",
- "xml-doc":"XML doc (.net)",
- "xojo":"Xojo (REALbasic)",
- "xquery":"XQuery",
- "yaml":"YAML",
- "yml":"YAML",
- "yang":"YANG",
- "zig":"Zig"
+ "css":"CSS",
+ "clike":"C-like",
+ "javascript":"JavaScript",
+ "js":"JavaScript",
+ "abap":"ABAP",
+ "abnf":"ABNF",
+ "actionscript":"ActionScript",
+ "ada":"Ada",
+ "agda":"Agda",
+ "al":"AL",
+ "antlr4":"ANTLR4",
+ "g4":"ANTLR4",
+ "apacheconf":"Apache Configuration",
+ "apex":"Apex",
+ "apl":"APL",
+ "applescript":"AppleScript",
+ "aql":"AQL",
+ "arduino":"Arduino",
+ "ino":"Arduino",
+ "arff":"ARFF",
+ "armasm":"ARM Assembly",
+ "arm-asm":"ARM Assembly",
+ "arturo":"Arturo",
+ "art":"Arturo",
+ "asciidoc":"AsciiDoc",
+ "adoc":"AsciiDoc",
+ "aspnet":"ASP.NET (C#)",
+ "asm6502":"6502 Assembly",
+ "asmatmel":"Atmel AVR Assembly",
+ "autohotkey":"AutoHotkey",
+ "autoit":"AutoIt",
+ "avisynth":"AviSynth",
+ "avs":"AviSynth",
+ "avro-idl":"Avro IDL",
+ "avdl":"Avro IDL",
+ "awk":"AWK",
+ "gawk":"GAWK",
+ "bash":"Shell",
+ "sh":"Shell",
+ "shell":"Shell",
+ "basic":"BASIC",
+ "batch":"Batch",
+ "bbcode":"BBcode",
+ "shortcode":"BBcode",
+ "bbj":"BBj",
+ "birb":"Birb",
+ "bison":"Bison",
+ "bnf":"BNF",
+ "rbnf":"BNF",
+ "bqn":"BQN",
+ "brainfuck":"Brainfuck",
+ "brightscript":"BrightScript",
+ "bro":"Bro",
+ "bsl":"BSL (1C)",
+ "oscript":"BSL (1C)",
+ "c":"C",
+ "csharp":"C#",
+ "cs":"C#",
+ "dotnet":"C#",
+ "cpp":"C++",
+ "cfscript":"CFScript",
+ "cfc":"CFScript",
+ "chaiscript":"ChaiScript",
+ "cil":"CIL",
+ "cilkc":"Cilk/C",
+ "cilk-c":"Cilk/C",
+ "cilkcpp":"Cilk/C++",
+ "cilk-cpp":"Cilk/C++",
+ "cilk":"Cilk/C++",
+ "clojure":"Clojure",
+ "cmake":"CMake",
+ "cobol":"COBOL",
+ "coffeescript":"CoffeeScript",
+ "coffee":"CoffeeScript",
+ "concurnas":"Concurnas",
+ "conc":"Concurnas",
+ "csp":"Content-Security-Policy",
+ "cooklang":"Cooklang",
+ "coq":"Coq",
+ "crystal":"Crystal",
+ "css-extras":"CSS Extras",
+ "csv":"CSV",
+ "cue":"CUE",
+ "cypher":"Cypher",
+ "d":"D",
+ "dart":"Dart",
+ "dataweave":"DataWeave",
+ "dax":"DAX",
+ "dhall":"Dhall",
+ "diff":"Diff",
+ "django":"Django/Jinja2",
+ "jinja2":"Django/Jinja2",
+ "dns-zone-file":"DNS zone file",
+ "dns-zone":"DNS zone file",
+ "docker":"Docker",
+ "dockerfile":"Docker",
+ "dot":"DOT (Graphviz)",
+ "gv":"DOT (Graphviz)",
+ "ebnf":"EBNF",
+ "editorconfig":"EditorConfig",
+ "eiffel":"Eiffel",
+ "ejs":"EJS",
+ "eta":"EJS",
+ "elixir":"Elixir",
+ "elm":"Elm",
+ "etlua":"Embedded Lua templating",
+ "erb":"ERB",
+ "erlang":"Erlang",
+ "excel-formula":"Excel Formula",
+ "xlsx":"Excel Formula",
+ "xls":"Excel Formula",
+ "fsharp":"F#",
+ "factor":"Factor",
+ "false":"False",
+ "firestore-security-rules":"Firestore security rules",
+ "flow":"Flow",
+ "fortran":"Fortran",
+ "ftl":"FreeMarker Template Language",
+ "gml":"GameMaker Language",
+ "gamemakerlanguage":"GameMaker Language",
+ "gap":"GAP (CAS)",
+ "gcode":"G-code",
+ "gdscript":"GDScript",
+ "gedcom":"GEDCOM",
+ "gettext":"gettext",
+ "po":"gettext",
+ "gherkin":"Gherkin",
+ "git":"Git",
+ "glsl":"GLSL",
+ "gn":"GN",
+ "gni":"GN",
+ "linker-script":"GNU Linker Script",
+ "ld":"GNU Linker Script",
+ "go":"Go",
+ "go-module":"Go module",
+ "go-mod":"Go module",
+ "gradle":"Gradle",
+ "graphql":"GraphQL",
+ "groovy":"Groovy",
+ "haml":"Haml",
+ "handlebars":"Handlebars",
+ "hbs":"Handlebars",
+ "mustache":"Handlebars",
+ "haskell":"Haskell",
+ "hs":"Haskell",
+ "haxe":"Haxe",
+ "hcl":"HCL",
+ "hlsl":"HLSL",
+ "hoon":"Hoon",
+ "http":"HTTP",
+ "hpkp":"HTTP Public-Key-Pins",
+ "hsts":"HTTP Strict-Transport-Security",
+ "ichigojam":"IchigoJam",
+ "icon":"Icon",
+ "icu-message-format":"ICU Message Format",
+ "idris":"Idris",
+ "idr":"Idris",
+ "ignore":".ignore",
+ "gitignore":".ignore",
+ "hgignore":".ignore",
+ "npmignore":".ignore",
+ "inform7":"Inform 7",
+ "ini":"Ini",
+ "io":"Io",
+ "j":"J",
+ "java":"Java",
+ "javadoc":"JavaDoc",
+ "javadoclike":"JavaDoc-like",
+ "javastacktrace":"Java stack trace",
+ "jexl":"Jexl",
+ "jolie":"Jolie",
+ "jq":"JQ",
+ "jsdoc":"JSDoc",
+ "js-extras":"JS Extras",
+ "json":"JSON",
+ "webmanifest":"JSON",
+ "json5":"JSON5",
+ "jsonp":"JSONP",
+ "jsstacktrace":"JS stack trace",
+ "js-templates":"JS Templates",
+ "julia":"Julia",
+ "keepalived":"Keepalived Configure",
+ "keyman":"Keyman",
+ "kotlin":"Kotlin",
+ "kt":"Kotlin",
+ "kts":"Kotlin",
+ "kumir":"KuMir (КуМир)",
+ "kum":"KuMir (КуМир)",
+ "kusto":"Kusto",
+ "latex":"LaTeX",
+ "tex":"LaTeX",
+ "context":"LaTeX",
+ "latte":"Latte",
+ "less":"Less",
+ "lilypond":"LilyPond",
+ "ly":"LilyPond",
+ "liquid":"Liquid",
+ "lisp":"Lisp",
+ "emacs":"Lisp",
+ "elisp":"Lisp",
+ "emacs-lisp":"Lisp",
+ "livescript":"LiveScript",
+ "llvm":"LLVM IR",
+ "log":"Log file",
+ "lolcode":"LOLCODE",
+ "lua":"Lua",
+ "magma":"Magma (CAS)",
+ "makefile":"Makefile",
+ "markdown":"Markdown",
+ "md":"Markdown",
+ "markup-templating":"Markup templating",
+ "mata":"Mata",
+ "matlab":"MATLAB",
+ "maxscript":"MAXScript",
+ "mel":"MEL",
+ "mermaid":"Mermaid",
+ "metafont":"METAFONT",
+ "mizar":"Mizar",
+ "mongodb":"MongoDB",
+ "monkey":"Monkey",
+ "moonscript":"MoonScript",
+ "moon":"MoonScript",
+ "n1ql":"N1QL",
+ "n4js":"N4JS",
+ "n4jsd":"N4JS",
+ "nand2tetris-hdl":"Nand To Tetris HDL",
+ "naniscript":"Naninovel Script",
+ "nani":"Naninovel Script",
+ "nasm":"NASM",
+ "neon":"NEON",
+ "nevod":"Nevod",
+ "nginx":"nginx",
+ "nim":"Nim",
+ "nix":"Nix",
+ "nsis":"NSIS",
+ "objectivec":"Objective-C",
+ "objc":"Objective-C",
+ "ocaml":"OCaml",
+ "odin":"Odin",
+ "opencl":"OpenCL",
+ "openqasm":"OpenQasm",
+ "qasm":"OpenQasm",
+ "oz":"Oz",
+ "parigp":"PARI/GP",
+ "parser":"Parser",
+ "pascal":"Pascal",
+ "objectpascal":"Pascal",
+ "pascaligo":"Pascaligo",
+ "psl":"PATROL Scripting Language",
+ "pcaxis":"PC-Axis",
+ "px":"PC-Axis",
+ "peoplecode":"PeopleCode",
+ "pcode":"PeopleCode",
+ "perl":"Perl",
+ "php":"PHP",
+ "phpdoc":"PHPDoc",
+ "php-extras":"PHP Extras",
+ "plant-uml":"PlantUML",
+ "plantuml":"PlantUML",
+ "plsql":"PL/SQL",
+ "powerquery":"PowerQuery",
+ "pq":"PowerQuery",
+ "mscript":"PowerQuery",
+ "powershell":"PowerShell",
+ "processing":"Processing",
+ "prolog":"Prolog",
+ "promql":"PromQL",
+ "properties":".properties",
+ "protobuf":"Protocol Buffers",
+ "pug":"Pug",
+ "puppet":"Puppet",
+ "pure":"Pure",
+ "purebasic":"PureBasic",
+ "pbfasm":"PureBasic",
+ "purescript":"PureScript",
+ "purs":"PureScript",
+ "python":"Python",
+ "py":"Python",
+ "qsharp":"Q#",
+ "qs":"Q#",
+ "q":"Q (kdb+ database)",
+ "qml":"QML",
+ "qore":"Qore",
+ "r":"R",
+ "racket":"Racket",
+ "rkt":"Racket",
+ "cshtml":"Razor C#",
+ "jsx":"React JSX",
+ "tsx":"React TSX",
+ "reason":"Reason",
+ "regex":"Regex",
+ "rego":"Rego",
+ "renpy":"Ren'py",
+ "rpy":"Ren'py",
+ "rescript":"ReScript",
+ "res":"ReScript",
+ "rest":"reST (reStructuredText)",
+ "rip":"Rip",
+ "roboconf":"Roboconf",
+ "robotframework":"Robot Framework",
+ "robot":"Robot Framework",
+ "ruby":"Ruby",
+ "rb":"Ruby",
+ "rust":"Rust",
+ "sas":"SAS",
+ "sass":"Sass (Sass)",
+ "scss":"Sass (SCSS)",
+ "scala":"Scala",
+ "scheme":"Scheme",
+ "shell-session":"Shell session",
+ "sh-session":"Shell session",
+ "shellsession":"Shell session",
+ "smali":"Smali",
+ "smalltalk":"Smalltalk",
+ "smarty":"Smarty",
+ "sml":"SML",
+ "smlnj":"SML",
+ "solidity":"Solidity (Ethereum)",
+ "sol":"Solidity (Ethereum)",
+ "solution-file":"Solution file",
+ "sln":"Solution file",
+ "soy":"Soy (Closure Template)",
+ "sparql":"SPARQL",
+ "rq":"SPARQL",
+ "splunk-spl":"Splunk SPL",
+ "sqf":"SQF",
+ "sql":"SQL",
+ "squirrel":"Squirrel",
+ "stan":"Stan",
+ "stata":"Stata Ado",
+ "iecst":"Structured Text (IEC 61131-3)",
+ "stylus":"Stylus",
+ "supercollider":"SuperCollider",
+ "sclang":"SuperCollider",
+ "swift":"Swift",
+ "systemd":"Systemd configuration file",
+ "t4-templating":"T4 templating",
+ "t4-cs":"T4 Text Templates (C#)",
+ "t4":"T4 Text Templates (C#)",
+ "t4-vb":"T4 Text Templates (VB)",
+ "tap":"TAP",
+ "tcl":"Tcl",
+ "tt2":"Template Toolkit 2",
+ "textile":"Textile",
+ "toml":"TOML",
+ "tremor":"Tremor",
+ "trickle":"Tremor",
+ "troy":"Tremor",
+ "turtle":"Turtle",
+ "trig":"Turtle",
+ "twig":"Twig",
+ "typescript":"TypeScript",
+ "ts":"TypeScript",
+ "typoscript":"TypoScript",
+ "tsconfig":"TypoScript",
+ "unrealscript":"UnrealScript",
+ "uscript":"UnrealScript",
+ "uc":"UnrealScript",
+ "uorazor":"UO Razor Script",
+ "uri":"URI",
+ "url":"URI",
+ "v":"V",
+ "vala":"Vala",
+ "vbnet":"VB.Net",
+ "velocity":"Velocity",
+ "verilog":"Verilog",
+ "vhdl":"VHDL",
+ "vim":"vim",
+ "visual-basic":"Visual Basic",
+ "vb":"Visual Basic",
+ "vba":"Visual Basic",
+ "warpscript":"WarpScript",
+ "wasm":"WebAssembly",
+ "web-idl":"Web IDL",
+ "webidl":"Web IDL",
+ "wgsl":"WGSL",
+ "wiki":"Wiki markup",
+ "wolfram":"Wolfram language",
+ "mathematica":"Wolfram language",
+ "nb":"Wolfram language",
+ "wl":"Wolfram language",
+ "wren":"Wren",
+ "xeora":"Xeora",
+ "xeoracube":"Xeora",
+ "xml-doc":"XML doc (.net)",
+ "xojo":"Xojo (REALbasic)",
+ "xquery":"XQuery",
+ "yaml":"YAML",
+ "yml":"YAML",
+ "yang":"YANG",
+ "zig":"Zig"
}
// https://github.com/vscode-icons/vscode-icons/wiki/ListOfFiles
// https://devicon.dev/
export const Icons = {
- ".gitignore": ``,
- ".hgignore": ``,
- ".npmignore": ``,
- ".properties": ``,
- "6502 Assembly": `file_type_assembly`,
- "ActionScript": ``,
- "Ada": ``,
- "AL": ``,
- "ANTLR4": ``,
- "Apache Configuration": `file_type_apache`,
- "Apex": ``,
- "APL": ``,
- "AppleScript": ``,
- "Arduino": `file_type_arduino`,
- "ARM Assembly": `file_type_assembly`,
- "AsciiDoc": ``,
- "ASP.NET (C#)": `file_type_aspx`,
- "AutoHotkey": `file_type_autohotkey`,
- "AutoIt": ``,
- "Avro IDL": ``,
- "AWK": ``,
- "Batch": ``,
- "C#": `file_type_csharp`,
- "C": `file_type_c`,
- "C++": `file_type_cpp`,
- "Clojure": ``,
- "CMake": `file_type_cmake`,
- "COBOL": ``,
- "CoffeeScript": ``,
- "Crystal": ``,
- "CSS": ``,
- "CSV": ``,
- "D": `file_type_dlang`,
- "Dart": ``,
- "Dhall": ``,
- "Diff": ``,
- "Django/Jinja2": `file_type_jinja`,
- "Docker": ``,
- "DOT (Graphviz)": ``,
- "EditorConfig": ``,
- "EJS": ``,
- "Elixir": `file_type_elixir`,
- "Elm": ``,
- "ERB": ``,
- "Erlang": ``,
- "F#": ``,
- "Firestore security rules": ``,
- "Flow": `file_type_flow`,
- "Fortran": ``,
- "FreeMarker Template Language": ``,
- "GameMaker Language": ``,
- "G-code": ``,
- "GDScript": ``,
- "Git": ``,
- "GLSL": ``,
- "Go module": ``,
- "Go": ``,
- "Gradle": ``,
- "GraphQL": ``,
- "Groovy": ``,
- "Haml": ``,
- "Handlebars": ``,
- "Haskell": `file_type_haskell2`,
- "Haxe": ``,
- "HLSL": ``,
- "HTML": ``,
- "HTTP": `file_type_http`,
- "Idris": ``,
- "Ini": ``,
- "Io": ``,
- "Java": ``,
- "JavaScript": ``,
- "JSON": ``,
- "JSON5": ``,
- "Julia": ``,
- "Kotlin": `file_type_kotlin`,
- "Kusto": ``,
- "LaTeX": ``,
- "Less": `file_type_less`,
- "Liquid": ``,
- "Lisp": `file_type_emacs`,
- "LiveScript": ``,
- "Log file": ``,
- "LOLCODE": ``,
- "Lua": ``,
- "Markdown": ``,
- "MATLAB": `file_type_matlab`,
- "MAXScript": ``,
- "MEL": `file_type_maya`,
- "MongoDB": `file_type_mongo`,
- "nginx": ``,
- "Nim": ``,
- "Nix": ``,
- "NSIS": ``,
- "Object Pascal": `file_type_delphi`,
- "Objective-C": ``,
- "OCaml": `file_type_ocaml`,
- "OpenCL": `file_type_opencl`,
- "Pascal": `file_type_delphi`,
- "Perl": ``,
- "PHP": `file_type_php`,
- "PL/SQL": ``,
- "Plain text": ``,
- "PlantUML": `file_type_plantuml`,
- "PowerQuery": ``,
- "PowerShell": `file_type_powershell`,
- "Processing": `file_type_processinglang`,
- "Prolog": `file_type_prolog`,
- "Protocol Buffers": ``,
- "Pug": ``,
- "Puppet": ``,
- "PureScript": ``,
- "Python": `file_type_python`,
- "Q (kdb+ database)": ``,
- "Q#": ``,
- "QML": ``,
- "R": `file_type_r`,
- "Racket": ``,
- "Razor C#": ``,
- "React JSX": ``,
- "React TSX": ``,
- "Reason": ``,
- "Rego": `file_type_rego`,
- "ReScript": `file_type_rescript`,
- "reST (reStructuredText)": ``,
- "Robot Framework": ``,
- "Ruby": `file_type_ruby`,
- "Rust": `file_type_rust`,
- "SAS": ``,
- "Sass (Sass)": ``,
- "Sass (SCSS)": ``,
- "Scala": `file_type_scala`,
- "Shell session": ``,
- "Shell": ``,
- "Smarty": `file_type_smarty`,
- "Solidity (Ethereum)": ``,
- "Solution file": `file_type_sln`,
- "SPARQL": ``,
- "SQF": ``,
- "SQF: Status Quo Function (Arma 3)": ``,
- "SQL": ``,
- "Squirrel": ``,
- "Stan": `file_type_stan`,
- "Stata Ado": `file_type_stata`,
- "Stylus": `file_type_stylus`,
- "SVG": ``,
- "Swift": `file_type_swift`,
- "Systemd configuration file": ``,
- "T4 templating": ``,
- "T4 Text Templates (C#)": ``,
- "T4 Text Templates (VB)": ``,
- "Tcl": ``,
- "Template Toolkit 2": ``,
- "TeX": ``,
- "Textile": ``,
- "TOML": ``,
- "TSConfig": ``,
- "Twig": ``,
- "TypeScript": ``,
- "TypoScript": ``,
- "V": ``,
- "Vala": ``,
- "VB.Net": ``,
- "VBA": ``,
- "Velocity": ``,
- "Verilog": ``,
- "VHDL": ``,
- "vim": `file_type_vim`,
- "Visual Basic": ``,
- "WebAssembly": ``,
- "Wolfram language": ``,
- "XML": ``,
- "XQuery": ``,
- "YAML": ``,
- "YANG": ``,
- "Zig": ``
-}
\ No newline at end of file
+ ".gitignore": ``,
+ ".hgignore": ``,
+ ".npmignore": ``,
+ ".properties": ``,
+ "6502 Assembly": `file_type_assembly`,
+ "ActionScript": ``,
+ "Ada": ``,
+ "AL": ``,
+ "ANTLR4": ``,
+ "Apache Configuration": `file_type_apache`,
+ "Apex": ``,
+ "APL": ``,
+ "AppleScript": ``,
+ "Arduino": `file_type_arduino`,
+ "ARM Assembly": `file_type_assembly`,
+ "AsciiDoc": ``,
+ "ASP.NET (C#)": `file_type_aspx`,
+ "AutoHotkey": `file_type_autohotkey`,
+ "AutoIt": ``,
+ "Avro IDL": ``,
+ "AWK": ``,
+ "Batch": ``,
+ "C#": `file_type_csharp`,
+ "C": `file_type_c`,
+ "C++": `file_type_cpp`,
+ "Clojure": ``,
+ "CMake": `file_type_cmake`,
+ "COBOL": ``,
+ "CoffeeScript": ``,
+ "Crystal": ``,
+ "CSS": ``,
+ "CSV": ``,
+ "D": `file_type_dlang`,
+ "Dart": ``,
+ "Dhall": ``,
+ "Diff": ``,
+ "Django/Jinja2": `file_type_jinja`,
+ "Docker": ``,
+ "DOT (Graphviz)": ``,
+ "EditorConfig": ``,
+ "EJS": ``,
+ "Elixir": `file_type_elixir`,
+ "Elm": ``,
+ "ERB": ``,
+ "Erlang": ``,
+ "F#": ``,
+ "Firestore security rules": ``,
+ "Flow": `file_type_flow`,
+ "Fortran": ``,
+ "FreeMarker Template Language": ``,
+ "GameMaker Language": ``,
+ "G-code": ``,
+ "GDScript": ``,
+ "Git": ``,
+ "GLSL": ``,
+ "Go module": ``,
+ "Go": ``,
+ "Gradle": ``,
+ "GraphQL": ``,
+ "Groovy": ``,
+ "Haml": ``,
+ "Handlebars": ``,
+ "Haskell": `file_type_haskell2`,
+ "Haxe": ``,
+ "HLSL": ``,
+ "HTML": ``,
+ "HTTP": `file_type_http`,
+ "Idris": ``,
+ "Ini": ``,
+ "Io": ``,
+ "Java": ``,
+ "JavaScript": ``,
+ "JSON": ``,
+ "JSON5": ``,
+ "Julia": ``,
+ "Kotlin": `file_type_kotlin`,
+ "Kusto": ``,
+ "LaTeX": ``,
+ "Less": `file_type_less`,
+ "Liquid": ``,
+ "Lisp": `file_type_emacs`,
+ "LiveScript": ``,
+ "Log file": ``,
+ "LOLCODE": ``,
+ "Lua": ``,
+ "Markdown": ``,
+ "MATLAB": `file_type_matlab`,
+ "MAXScript": ``,
+ "MEL": `file_type_maya`,
+ "MongoDB": `file_type_mongo`,
+ "nginx": ``,
+ "Nim": ``,
+ "Nix": ``,
+ "NSIS": ``,
+ "Object Pascal": `file_type_delphi`,
+ "Objective-C": ``,
+ "OCaml": `file_type_ocaml`,
+ "OpenCL": `file_type_opencl`,
+ "Pascal": `file_type_delphi`,
+ "Perl": ``,
+ "PHP": `file_type_php`,
+ "PL/SQL": ``,
+ "Plain text": ``,
+ "PlantUML": `file_type_plantuml`,
+ "PowerQuery": ``,
+ "PowerShell": `file_type_powershell`,
+ "Processing": `file_type_processinglang`,
+ "Prolog": `file_type_prolog`,
+ "Protocol Buffers": ``,
+ "Pug": ``,
+ "Puppet": ``,
+ "PureScript": ``,
+ "Python": `file_type_python`,
+ "Q (kdb+ database)": ``,
+ "Q#": ``,
+ "QML": ``,
+ "R": `file_type_r`,
+ "Racket": ``,
+ "Razor C#": ``,
+ "React JSX": ``,
+ "React TSX": ``,
+ "Reason": ``,
+ "Rego": `file_type_rego`,
+ "ReScript": `file_type_rescript`,
+ "reST (reStructuredText)": ``,
+ "Robot Framework": ``,
+ "Ruby": `file_type_ruby`,
+ "Rust": `file_type_rust`,
+ "SAS": ``,
+ "Sass (Sass)": ``,
+ "Sass (SCSS)": ``,
+ "Scala": `file_type_scala`,
+ "Shell session": ``,
+ "Shell": ``,
+ "Smarty": `file_type_smarty`,
+ "Solidity (Ethereum)": ``,
+ "Solution file": `file_type_sln`,
+ "SPARQL": ``,
+ "SQF": ``,
+ "SQF: Status Quo Function (Arma 3)": ``,
+ "SQL": ``,
+ "Squirrel": ``,
+ "Stan": `file_type_stan`,
+ "Stata Ado": `file_type_stata`,
+ "Stylus": `file_type_stylus`,
+ "SVG": ``,
+ "Swift": `file_type_swift`,
+ "Systemd configuration file": ``,
+ "T4 templating": ``,
+ "T4 Text Templates (C#)": ``,
+ "T4 Text Templates (VB)": ``,
+ "Tcl": ``,
+ "Template Toolkit 2": ``,
+ "TeX": ``,
+ "Textile": ``,
+ "TOML": ``,
+ "TSConfig": ``,
+ "Twig": ``,
+ "TypeScript": ``,
+ "TypoScript": ``,
+ "V": ``,
+ "Vala": ``,
+ "VB.Net": ``,
+ "VBA": ``,
+ "Velocity": ``,
+ "Verilog": ``,
+ "VHDL": ``,
+ "vim": `file_type_vim`,
+ "Visual Basic": ``,
+ "WebAssembly": ``,
+ "Wolfram language": ``,
+ "XML": ``,
+ "XQuery": ``,
+ "YAML": ``,
+ "YANG": ``,
+ "Zig": ``
+}
diff --git a/src/EditingView.ts b/src/EditingView.ts
new file mode 100644
index 0000000..e69de29
diff --git a/src/Header.ts b/src/Header.ts
index be8dbfc..6fc5b9a 100644
--- a/src/Header.ts
+++ b/src/Header.ts
@@ -4,230 +4,230 @@ import { EditorView, Decoration, WidgetType } from "@codemirror/view";
import { searchString, getLanguageName, getLanguageIcon, isExcluded, createContainer, createWrapper, createCodeblockLang, createCodeblockIcon, createFileName } from "./Utils";
function defaultFold(state: EditorState, settings: CodeblockCustomizerSettings) {
- let CollapseStart = null;
- let CollapseEnd = null;
- let Fold = false;
- let blockFound = false;
- let bExclude = false;
- const builder = new RangeSetBuilder();
- for (let i = 1; i < state.doc.lines; i++) {
- const lineText = state.doc.line(i).text.toString();
- const line = state.doc.line(i);
- bExclude = isExcluded(lineText, settings.ExcludeLangs);
- if (lineText.startsWith('```') && lineText.indexOf('```', 3) === -1) {
- if (bExclude)
- continue;
- if (CollapseStart === null) {
- Fold = searchString(lineText, "fold");
- if (Fold)
- CollapseStart = line.from;
- } else {
- blockFound = true;
- CollapseEnd = line.to;
- }
- }
+ let CollapseStart = null;
+ let CollapseEnd = null;
+ let Fold = false;
+ let blockFound = false;
+ let bExclude = false;
+ const builder = new RangeSetBuilder();
+ for (let i = 1; i < state.doc.lines; i++) {
+ const lineText = state.doc.line(i).text.toString();
+ const line = state.doc.line(i);
+ bExclude = isExcluded(lineText, settings.ExcludeLangs);
+ if (lineText.startsWith('```') && lineText.indexOf('```', 3) === -1) {
+ if (bExclude)
+ continue;
+ if (CollapseStart === null) {
+ Fold = searchString(lineText, "fold");
+ if (Fold)
+ CollapseStart = line.from;
+ } else {
+ blockFound = true;
+ CollapseEnd = line.to;
+ }
+ }
- if (blockFound) {
- if (CollapseStart != null && CollapseEnd != null ){
- const decoration = Decoration.replace({ effect: Collapse.of([doFold.range(CollapseStart, CollapseEnd)]), block:true, side:-1 });
- builder.add(CollapseStart, CollapseEnd, decoration );
- CollapseStart = null;
- CollapseEnd = null;
- }
- blockFound = false;
- }
- }// for
-
- return builder.finish();
+ if (blockFound) {
+ if (CollapseStart != null && CollapseEnd != null ){
+ const decoration = Decoration.replace({ effect: Collapse.of([doFold.range(CollapseStart, CollapseEnd)]), block:true, side:-1 });
+ builder.add(CollapseStart, CollapseEnd, decoration );
+ CollapseStart = null;
+ CollapseEnd = null;
+ }
+ blockFound = false;
+ }
+ }// for
+
+ return builder.finish();
}// defaultFold
let settings: CodeblockCustomizerSettings;
export const codeblockHeader = StateField.define({
- create(state): DecorationSet {
- return Decoration.none;
- },
- update(oldState: DecorationSet, transaction: Transaction): DecorationSet {
- const builder = new RangeSetBuilder();
- let WidgetStart = null;
- let Fold = false;
- let fileName = null;
- let bExclude = false;
- let specificHeader = true;
- for (let i = 1; i < transaction.state.doc.lines; i++) {
- const lineText = transaction.state.doc.line(i).text.toString();
- const line = transaction.state.doc.line(i);
- const lang = searchString(lineText, "```");
- bExclude = isExcluded(lineText, this.settings.ExcludeLangs);
- specificHeader = true;
- if (lineText.startsWith('```') && lineText.indexOf('```', 3) === -1) {
- if (WidgetStart === null) {
- WidgetStart = line;
- fileName = searchString(lineText, "file:");
- Fold = searchString(lineText, "fold");
- if (!bExclude) {
- if (fileName === null || fileName === "") {
- if (Fold) {
- fileName = 'Collapsed Code';
- } else {
- fileName = '';
- specificHeader = false;
- }
- }
- builder.add(WidgetStart.from, WidgetStart.from, createDecorationWidget(fileName, getLanguageName(lang), specificHeader));
- //EditorView.requestMeasure;
- }
- } else {
- WidgetStart = null;
- Fold = false;
- fileName = null;
- }
- }
- }
-
- return builder.finish();
- },
- provide(field: StateField): Extension {
- return EditorView.decorations.from(field);
- },
+ create(state): DecorationSet {
+ return Decoration.none;
+ },
+ update(oldState: DecorationSet, transaction: Transaction): DecorationSet {
+ const builder = new RangeSetBuilder();
+ let WidgetStart = null;
+ let Fold = false;
+ let fileName = null;
+ let bExclude = false;
+ let specificHeader = true;
+ for (let i = 1; i < transaction.state.doc.lines; i++) {
+ const lineText = transaction.state.doc.line(i).text.toString();
+ const line = transaction.state.doc.line(i);
+ const lang = searchString(lineText, "```");
+ bExclude = isExcluded(lineText, this.settings.ExcludeLangs);
+ specificHeader = true;
+ if (lineText.startsWith('```') && lineText.indexOf('```', 3) === -1) {
+ if (WidgetStart === null) {
+ WidgetStart = line;
+ fileName = searchString(lineText, "file:");
+ Fold = searchString(lineText, "fold");
+ if (!bExclude) {
+ if (fileName === null || fileName === "") {
+ if (Fold) {
+ fileName = 'Collapsed Code';
+ } else {
+ fileName = '';
+ specificHeader = false;
+ }
+ }
+ builder.add(WidgetStart.from, WidgetStart.from, createDecorationWidget(fileName, getLanguageName(lang), specificHeader));
+ //EditorView.requestMeasure;
+ }
+ } else {
+ WidgetStart = null;
+ Fold = false;
+ fileName = null;
+ }
+ }
+ }
+
+ return builder.finish();
+ },
+ provide(field: StateField): Extension {
+ return EditorView.decorations.from(field);
+ },
});// codeblockHeader
function createDecorationWidget(textToDisplay: string, languageName: string, specificHeader: boolean) {
- return Decoration.widget({
- widget: new TextAboveCodeblockWidget(textToDisplay, languageName, specificHeader), block: true});
+ return Decoration.widget({
+ widget: new TextAboveCodeblockWidget(textToDisplay, languageName, specificHeader), block: true});
}// createDecorationWidget
const Collapse = StateEffect.define(), UnCollapse = StateEffect.define()
let pluginSettings: CodeblockCustomizerSettings;
export const collapseField = StateField.define({
- create(state) {
- return defaultFold(state, collapseField.pluginSettings);
- //return Decoration.none
- },
- update(value, tr) {
- value = value.map(tr.changes)
- for (const effect of tr.effects) {
- if (effect.is(Collapse))
- value = value.update({add: effect.value, sort: true});
- else if (effect.is(UnCollapse))
- value = value.update({filter: effect.value});
- }
- return value;
- },
- provide: f => EditorView.decorations.from(f)
+ create(state) {
+ return defaultFold(state, collapseField.pluginSettings);
+ //return Decoration.none
+ },
+ update(value, tr) {
+ value = value.map(tr.changes)
+ for (const effect of tr.effects) {
+ if (effect.is(Collapse))
+ value = value.update({add: effect.value, sort: true});
+ else if (effect.is(UnCollapse))
+ value = value.update({filter: effect.value});
+ }
+ return value;
+ },
+ provide: f => EditorView.decorations.from(f)
})
const doFold = Decoration.replace({block: true});
class TextAboveCodeblockWidget extends WidgetType {
- text: string;
- observer: MutationObserver;
- view: EditorView;
+ text: string;
+ observer: MutationObserver;
+ view: EditorView;
- constructor(text: string, Lang: string, specificHeader: boolean) {
- super();
- this.text = text;
- this.Lang = Lang;
- this.specificHeader = specificHeader;
- this.observer = new MutationObserver(this.handleMutation);
- }
-
- handleMutation = (mutations, view) => {
- mutations.forEach(mutation => {
- if (mutation.target.hasAttribute("data-clicked")){
- handleClick(this.view, mutation.target);
- //this.view.update([]);
- //this.view.state.update();
- //EditorView.requestMeasure;
- }
- });
- //this.view.update([]);
- //this.view.state.update();
- //this.view.requestMeasure();
- }
-
- eq(other: TextAboveCodeblockWidget) {
- return other.text == this.text && other.Lang == this.Lang && other.specificHeader == this.specificHeader
- }
-
- toDOM(view: EditorView): HTMLElement {
- this.view = view;
- const container = createContainer(this.specificHeader);
- if (this.Lang){
- const Icon = getLanguageIcon(this.Lang)
- if (Icon) {
- container.appendChild(createCodeblockIcon(this.Lang));
- }
- container.appendChild(createCodeblockLang(this.Lang));
- }
+ constructor(text: string, Lang: string, specificHeader: boolean) {
+ super();
+ this.text = text;
+ this.Lang = Lang;
+ this.specificHeader = specificHeader;
+ this.observer = new MutationObserver(this.handleMutation);
+ }
+
+ handleMutation = (mutations, view) => {
+ mutations.forEach(mutation => {
+ if (mutation.target.hasAttribute("data-clicked")){
+ handleClick(this.view, mutation.target);
+ //this.view.update([]);
+ //this.view.state.update();
+ //EditorView.requestMeasure;
+ }
+ });
+ //this.view.update([]);
+ //this.view.state.update();
+ //this.view.requestMeasure();
+ }
+
+ eq(other: TextAboveCodeblockWidget) {
+ return other.text == this.text && other.Lang == this.Lang && other.specificHeader == this.specificHeader
+ }
+
+ toDOM(view: EditorView): HTMLElement {
+ this.view = view;
+ const container = createContainer(this.specificHeader);
+ if (this.Lang){
+ const Icon = getLanguageIcon(this.Lang)
+ if (Icon) {
+ container.appendChild(createCodeblockIcon(this.Lang));
+ }
+ container.appendChild(createCodeblockLang(this.Lang));
+ }
- container.appendChild(createFileName(this.text));
-
- this.observer.view = view;
- this.observer.observe(container, { attributes: true });
-
- container.addEventListener("mousedown", event => {
- container.setAttribute("data-clicked", "true");
- });
- //EditorView.requestMeasure;
+ container.appendChild(createFileName(this.text));
+
+ this.observer.view = view;
+ this.observer.observe(container, { attributes: true });
+
+ container.addEventListener("mousedown", event => {
+ container.setAttribute("data-clicked", "true");
+ });
+ //EditorView.requestMeasure;
- return container;
- }
-
- destroy(dom: HTMLElement) {
- dom.removeAttribute("data-clicked");
- dom.removeEventListener("mousedown", handleClick);
- this.observer.disconnect();
- }
+ return container;
+ }
+
+ destroy(dom: HTMLElement) {
+ dom.removeAttribute("data-clicked");
+ dom.removeEventListener("mousedown", handleClick);
+ this.observer.disconnect();
+ }
- ignoreEvent() { return false; }
-
+ ignoreEvent() { return false; }
+
}// TextAboveCodeblockWidget
-
+
export function handleClick(view: EditorView, target: HTMLElement){
- //view.state.update();
- //view.update([]);
- //view.requestMeasure({});
- const Pos = view.posAtDOM(target);
+ //view.state.update();
+ //view.update([]);
+ //view.requestMeasure({});
+ const Pos = view.posAtDOM(target);
- const effect = view.state.field(collapseField, false);
- let isFolded = false;
- effect.between(Pos, Pos, () => { isFolded = true});
-
- let CollapseStart: number | null = null;
- let CollapseEnd: number | null = null;
- let WidgetStart: number | null = null;
- // NOTE: Can't use for loop over view.visibleRanges, because that way the closing backticks wouldn't be found and collapse would not be possible
- let blockFound = false;
- for (let i = 1; i < view.state.doc.lines; i++) {
- const lineText = view.state.doc.line(i).text.toString();
- const line = view.state.doc.line(i);
- if (lineText.startsWith('```') && lineText.indexOf('```', 3) === -1) {
- if (WidgetStart === null) {
- WidgetStart = line.from;
- if (Pos === line.from){
- CollapseStart = line.from;
- }
- } else {
- blockFound = true;
- CollapseEnd = line.to;
- }
- }
-
- if (blockFound) {
- if (CollapseStart != null && CollapseEnd != null ){
- if (isFolded){
- view.dispatch({ effects: UnCollapse.of((from, to) => to <= CollapseStart || from >= CollapseEnd) });
- }
- else {
- view.dispatch({ effects: Collapse.of([doFold.range(CollapseStart, CollapseEnd)]) });
- }
- view.requestMeasure();
- CollapseStart = null;
- CollapseEnd = null;
- }//if (CollapseStart
- WidgetStart = null;
- blockFound = false;
- }
- }// for
-}// handleClick
\ No newline at end of file
+ const effect = view.state.field(collapseField, false);
+ let isFolded = false;
+ effect.between(Pos, Pos, () => { isFolded = true});
+
+ let CollapseStart: number | null = null;
+ let CollapseEnd: number | null = null;
+ let WidgetStart: number | null = null;
+ // NOTE: Can't use for loop over view.visibleRanges, because that way the closing backticks wouldn't be found and collapse would not be possible
+ let blockFound = false;
+ for (let i = 1; i < view.state.doc.lines; i++) {
+ const lineText = view.state.doc.line(i).text.toString();
+ const line = view.state.doc.line(i);
+ if (lineText.startsWith('```') && lineText.indexOf('```', 3) === -1) {
+ if (WidgetStart === null) {
+ WidgetStart = line.from;
+ if (Pos === line.from){
+ CollapseStart = line.from;
+ }
+ } else {
+ blockFound = true;
+ CollapseEnd = line.to;
+ }
+ }
+
+ if (blockFound) {
+ if (CollapseStart != null && CollapseEnd != null ){
+ if (isFolded){
+ view.dispatch({ effects: UnCollapse.of((from, to) => to <= CollapseStart || from >= CollapseEnd) });
+ }
+ else {
+ view.dispatch({ effects: Collapse.of([doFold.range(CollapseStart, CollapseEnd)]) });
+ }
+ view.requestMeasure();
+ CollapseStart = null;
+ CollapseEnd = null;
+ }//if (CollapseStart
+ WidgetStart = null;
+ blockFound = false;
+ }
+ }// for
+}// handleClick
diff --git a/src/ReadingView.ts b/src/ReadingView.ts
index 30ba836..fc703b5 100644
--- a/src/ReadingView.ts
+++ b/src/ReadingView.ts
@@ -3,228 +3,5 @@ import { MarkdownView, MarkdownPostProcessorContext, sanitizeHTMLToDom } from "o
import { searchString, getHighlightedLines, getLanguageName, isExcluded, getLanguageIcon, createContainer, createCodeblockLang, createCodeblockIcon, createFileName } from "./Utils";
export async function ReadingView(codeBlockElement: HTMLElement, context: MarkdownPostProcessorContext, plugin: CodeblockCustomizerPlugin) {
- const codeElm: HTMLElement = codeBlockElement.querySelector('pre > code');
-
- if (!codeElm)
- return;
- const classRegex = /^language-\S+/;
- const match = Array.from(codeElm.classList).some(className => classRegex.test(className));
- if (match)
- while(!codeElm.classList.contains("is-loaded"))
- await sleep(2);
-
- const codeBlockSectionInfo = context.getSectionInfo(codeElm);
-
- let codeBlockFirstLine = "";
- if (codeBlockSectionInfo) {
- const view = plugin.app.workspace.getActiveViewOfType(MarkdownView);
- if (view && view.editor)
- codeBlockFirstLine = view.editor.getLine(codeBlockSectionInfo.lineStart);
- } else {
- // PDF export
- const file = plugin.app.vault.getAbstractFileByPath(context.sourcePath);
- if (!file) {
- //console.error(`File not found: ${context.sourcePath}`);
- return;
- }
- const cache = plugin.app.metadataCache.getCache(context.sourcePath);
- const fileContent = await plugin.app.vault.cachedRead( file).catch((error) => {
- //console.error(`Error reading file: ${error.message}`);
- return '';
- });
- const fileContentLines = fileContent.split(/\n/g);
- const codeBlockFirstLines: string[] = [];
-
- if (cache.sections) {
- for (const element of cache.sections) {
- if (element.type === 'code') {
- const lineStart = element.position.start.line;
- const codeBlockFirstLine = fileContentLines[lineStart];
- if (!isAdmonition(codeBlockFirstLine)) {
- codeBlockFirstLines.push(codeBlockFirstLine);
- }
- }
- }
- } else {
- //console.error(`Metadata cache not found for file: ${context.sourcePath}`);
- return;
- }
- try {
- await PDFExport(codeBlockElement, plugin, codeBlockFirstLines);
- } catch (error) {
- //console.error(`Error exporting to PDF: ${error.message}`);
- return;
- }
- return;
- }
-
- const codeBlockLang = searchString(codeBlockFirstLine, "```");
- const highlightedLinesParams = searchString(codeBlockFirstLine, "HL:");
- const linesToHighlight = getHighlightedLines(highlightedLinesParams);
- const FileName = searchString(codeBlockFirstLine, "file:");
- const Fold = searchString(codeBlockFirstLine, "fold");
- const lineNumberOffset = 0; //searchString(codeBlockFirstLine, "ln:")//TODO (@mayurankv) Set line number offset here - Should be ln_value - 1 since it is offset, not starting line number - 0 if true OR false
- const showNumbers = true; //TODO (@mayurankv) Set showNumbers to be true if ln: or ln:true or false if ln:false
- const alternateColors = plugin.settings.alternateColors || [];
- let altHL = [];
- for (const { name } of alternateColors) {
- const altParams = searchString(codeBlockFirstLine, `${name}:`);
- altHL = altHL.concat(getHighlightedLines(altParams).map((lineNumber) => ({ name, lineNumber })));
- }
-
- let isCodeBlockExcluded = false;
- isCodeBlockExcluded = isExcluded(codeBlockFirstLine, plugin.settings.ExcludeLangs);
-
- const codeElements = codeBlockElement.getElementsByTagName("code");
- const codeBlockPreElement: HTMLPreElement | null = codeBlockElement.querySelector("pre:not(.frontmatter)");
- if (codeBlockPreElement === null) {
- return;
- }
- if (!isCodeBlockExcluded) {
- codeBlockPreElement.classList.add(`codeblock-customizer-pre`);
- }
-
- AddHeaderAndHighlight(isCodeBlockExcluded, FileName, codeBlockPreElement, codeBlockLang, Fold, codeElements, showNumbers, lineNumberOffset, linesToHighlight, altHL );
-}// ReadingView
-
-function isAdmonition(lineText: string): boolean {
- const adTypes = ["ad-note", "ad-seealso", "ad-abstract", "ad-summary", "ad-tldr", "ad-info", "ad-todo", "ad-tip", "ad-hint", "ad-important", "ad-success", "ad-check", "ad-done", "ad-question", "ad-help", "ad-faq", "ad-warning", "ad-caution", "ad-attention", "ad-failure", "ad-fail", "ad-missing", "ad-danger", "ad-error", "ad-bug", "ad-example", "ad-quote", "ad-cite"]; //TODO (@mayurankv) refactor to use regex
- const codeBlockLang = searchString(lineText, "```");
- return adTypes.some((adType) => codeBlockLang && codeBlockLang.startsWith(adType));
-}// isAdmonition
-
-function HeaderWidget(preElements, textToDisplay: string, specificHeader: boolean, codeblockLanguage: string, Collapse: boolean) {
- const parent = preElements.parentNode;
-
- const container = createContainer(specificHeader);
- if (codeblockLanguage){
- const Icon = getLanguageIcon(codeblockLanguage)
- if (Icon) {
- container.appendChild(createCodeblockIcon(codeblockLanguage));
- }
- container.appendChild(createCodeblockLang(codeblockLanguage));
- }
- container.appendChild(createFileName(textToDisplay));
- parent.insertBefore(container, preElements);
-
- // Add event listener to the widget element
- container.addEventListener("click", function() {
- // Toggle the "collapsed" class on the codeblock element
- preElements.classList.toggle("codeblock-customizer-codeblock-collapsed");
- });
-
- if (Collapse) {
- preElements.classList.add(`codeblock-customizer-codeblock-collapsed`);
- }
-
-}// HeaderWidget
-
-function createLineNumberElement(lineNumber,showNumbers) {
- const lineNumberWrapper = document.createElement("div");
- lineNumberWrapper.classList.add(`codeblock-customizer-line-number${showNumbers?'':'-hide'}`);
- lineNumberWrapper.setText(lineNumber);
-
- return lineNumberWrapper;
-}// createLineNumberElement
-
-function createLineTextElement(line) {
- const lineText = line !== "" ? line : "
";
- const sanitizedText = sanitizeHTMLToDom(lineText);
- const lineContentWrapper = createDiv({cls: `codeblock-customizer-line-text`, text: sanitizedText});
-
- return lineContentWrapper;
-}// createLineTextElement
-
-function highlightLines(codeElements, showNumbers, lineNumberOffset, linesToHighlight, altHL) {
- for (let i = 0; i < codeElements.length; i++) {
- let lines = codeElements[i].innerHTML.split("\n");
- const preElm = codeElements[i].parentNode;
- if (preElm === null || preElm.nodeName !== "PRE") // only process pre > code elements
- return;
-
- if (lines.length == 1) {
- lines = ['',''];
- }
- codeElements[i].innerHTML = "";
- for (let j = 0; j < lines.length - 1; j++) {
- const line = lines[j];
- const lineNumber = j + 1;
- const isHighlighted = linesToHighlight.includes(lineNumber);
- const altHLMatch = altHL.filter((hl) => hl.lineNumber === lineNumber);
-
- // create line element
- const lineWrapper = document.createElement("div");
- if (isHighlighted) {
- lineWrapper.classList.add(`codeblock-customizer-line-highlighted`);
- }
- else if (altHLMatch.length > 0) {
- lineWrapper.classList.add(`codeblock-customizer-line-highlighted-${altHLMatch[0].name.replace(/\s+/g, '-').toLowerCase()}`);
- }
- codeElements[i].appendChild(lineWrapper);
-
- // create line number element
- const lineNumberEl = createLineNumberElement(lineNumber+lineNumberOffset,showNumbers);
- lineWrapper.appendChild(lineNumberEl);
-
- // create line text element
- const lineTextEl = createLineTextElement(line);
- lineWrapper.appendChild(lineTextEl);
- }
- }
-}// highlightLines
-
-function AddHeaderAndHighlight(isCodeBlockExcluded, fileName, codeBlockPreElement, codeBlockLang, Fold, codeElements, showNumbers, lineNumberOffset, linesToHighlight, altHL ){
- if (!isCodeBlockExcluded) {
- let specificHeader = true;
- if (fileName === null || fileName === "") {
- if (Fold) {
- fileName = 'Collapsed Code';
- } else {
- fileName = '';
- specificHeader = false;
- }
- }
- HeaderWidget(codeBlockPreElement, fileName, specificHeader, getLanguageName(codeBlockLang), Fold);
- highlightLines(codeElements, showNumbers, lineNumberOffset, linesToHighlight, altHL);
-
- if (codeBlockPreElement.parentElement) {
- codeBlockPreElement.parentElement.classList.add(`codeblock-customizer-pre-parent`);
- }
- }
-}// AddHeaderAndHighlight
-
-function PDFExport(codeBlockElement: HTMLElement, plugin: CodeblockCustomizerPlugin, codeBlockFirstLines: string[]) {
- const codeBlocks = codeBlockElement.querySelectorAll('pre > code');
- codeBlocks.forEach((codeElm, key) => {
- const codeBlockFirstLine = codeBlockFirstLines[key];
- const codeBlockLang = searchString(codeBlockFirstLine, "```");
- const highlightedLinesParams = searchString(codeBlockFirstLine, "HL:");
- const linesToHighlight = getHighlightedLines(highlightedLinesParams);
- const fileName = searchString(codeBlockFirstLine, "file:");
- const Fold = searchString(codeBlockFirstLine, "fold");
- const lineNumberOffset = 0; //searchString(codeBlockFirstLine, "ln:")//TODO (@mayurankv) Set line number offset here - Should be ln_value - 1 since it is offset, not starting line number - 0 if true OR false
- const showNumbers = true; //TODO (@mayurankv) Set showNumbers to be true if ln: or ln:true or false if ln:false
- const alternateColors = plugin.settings.alternateColors || [];
- let altHL = [];
- for (const { name, _ } of alternateColors) {
- const altParams = searchString(codeBlockFirstLine, `${name}:`);
- altHL = altHL.concat(getHighlightedLines(altParams).map((lineNumber) => ({ name, lineNumber })));
- }
-
- let isCodeBlockExcluded = false;
- isCodeBlockExcluded = isExcluded(codeBlockFirstLine, plugin.settings.ExcludeLangs);
-
- const codeBlockPreElement: HTMLPreElement | null = codeElm.parentElement;
- if (codeBlockPreElement === null) {
- return;
- }
-
- if (!isCodeBlockExcluded){
- codeBlockPreElement.classList.add(`codeblock-customizer-pre`);
- }
- const codeElements = codeBlockPreElement.getElementsByTagName("code");
-
- AddHeaderAndHighlight(isCodeBlockExcluded, fileName, codeBlockPreElement, codeBlockLang, Fold, codeElements, showNumbers, lineNumberOffset, linesToHighlight, altHL );
- })
-}// PDFExport
+}
\ No newline at end of file
diff --git a/src/ReadingViewOld.ts b/src/ReadingViewOld.ts
new file mode 100644
index 0000000..da9c160
--- /dev/null
+++ b/src/ReadingViewOld.ts
@@ -0,0 +1,230 @@
+import { MarkdownView, MarkdownPostProcessorContext, sanitizeHTMLToDom } from "obsidian";
+
+import { searchString, getHighlightedLines, getLanguageName, isExcluded, getLanguageIcon, createContainer, createCodeblockLang, createCodeblockIcon, createFileName } from "./Utils";
+
+export async function ReadingView(codeBlockElement: HTMLElement, context: MarkdownPostProcessorContext, plugin: CodeblockCustomizerPlugin) {
+ const codeElm: HTMLElement = codeBlockElement.querySelector('pre > code');
+
+ if (!codeElm)
+ return;
+
+ const classRegex = /^language-\S+/;
+ const match = Array.from(codeElm.classList).some(className => classRegex.test(className));
+ if (match)
+ while(!codeElm.classList.contains("is-loaded"))
+ await sleep(2);
+
+ const codeBlockSectionInfo = context.getSectionInfo(codeElm);
+
+ let codeBlockFirstLine = "";
+ if (codeBlockSectionInfo) {
+ const view = plugin.app.workspace.getActiveViewOfType(MarkdownView);
+ if (view && view.editor)
+ codeBlockFirstLine = view.editor.getLine(codeBlockSectionInfo.lineStart);
+ } else {
+ // PDF export
+ const file = plugin.app.vault.getAbstractFileByPath(context.sourcePath);
+ if (!file) {
+ //console.error(`File not found: ${context.sourcePath}`);
+ return;
+ }
+ const cache = plugin.app.metadataCache.getCache(context.sourcePath);
+ const fileContent = await plugin.app.vault.cachedRead( file).catch((error) => {
+ //console.error(`Error reading file: ${error.message}`);
+ return '';
+ });
+ const fileContentLines = fileContent.split(/\n/g);
+ const codeBlockFirstLines: string[] = [];
+
+ if (cache.sections) {
+ for (const element of cache.sections) {
+ if (element.type === 'code') {
+ const lineStart = element.position.start.line;
+ const codeBlockFirstLine = fileContentLines[lineStart];
+ if (!isAdmonition(codeBlockFirstLine)) {
+ codeBlockFirstLines.push(codeBlockFirstLine);
+ }
+ }
+ }
+ } else {
+ //console.error(`Metadata cache not found for file: ${context.sourcePath}`);
+ return;
+ }
+ try {
+ await PDFExport(codeBlockElement, plugin, codeBlockFirstLines);
+ } catch (error) {
+ //console.error(`Error exporting to PDF: ${error.message}`);
+ return;
+ }
+ return;
+ }
+
+ const codeBlockLang = searchString(codeBlockFirstLine, "```");
+ const highlightedLinesParams = searchString(codeBlockFirstLine, "HL:");
+ const linesToHighlight = getHighlightedLines(highlightedLinesParams);
+ const FileName = searchString(codeBlockFirstLine, "file:");
+ const Fold = searchString(codeBlockFirstLine, "fold");
+ const lineNumberOffset = 0; //searchString(codeBlockFirstLine, "ln:")//TODO (@mayurankv) Set line number offset here - Should be ln_value - 1 since it is offset, not starting line number - 0 if true OR false
+ const showNumbers = true; //TODO (@mayurankv) Set showNumbers to be true if ln: or ln:true or false if ln:false
+ const alternateColors = plugin.settings.alternateColors || [];
+ let altHL = [];
+ for (const { name } of alternateColors) {
+ const altParams = searchString(codeBlockFirstLine, `${name}:`);
+ altHL = altHL.concat(getHighlightedLines(altParams).map((lineNumber) => ({ name, lineNumber })));
+ }
+
+ let isCodeBlockExcluded = false;
+ isCodeBlockExcluded = isExcluded(codeBlockFirstLine, plugin.settings.ExcludeLangs);
+
+ const codeElements = codeBlockElement.getElementsByTagName("code");
+ const codeBlockPreElement: HTMLPreElement | null = codeBlockElement.querySelector("pre:not(.frontmatter)");
+ if (codeBlockPreElement === null) {
+ return;
+ }
+ if (!isCodeBlockExcluded) {
+ codeBlockPreElement.classList.add(`codeblock-customizer-pre`);
+ }
+
+ AddHeaderAndHighlight(isCodeBlockExcluded, FileName, codeBlockPreElement, codeBlockLang, Fold, codeElements, showNumbers, lineNumberOffset, linesToHighlight, altHL );
+}// ReadingView
+
+function isAdmonition(lineText: string): boolean {
+ const adTypes = ["ad-note", "ad-seealso", "ad-abstract", "ad-summary", "ad-tldr", "ad-info", "ad-todo", "ad-tip", "ad-hint", "ad-important", "ad-success", "ad-check", "ad-done", "ad-question", "ad-help", "ad-faq", "ad-warning", "ad-caution", "ad-attention", "ad-failure", "ad-fail", "ad-missing", "ad-danger", "ad-error", "ad-bug", "ad-example", "ad-quote", "ad-cite"]; //TODO (@mayurankv) refactor to use regex
+ const codeBlockLang = searchString(lineText, "```");
+ return adTypes.some((adType) => codeBlockLang && codeBlockLang.startsWith(adType));
+}// isAdmonition
+
+function HeaderWidget(preElements, textToDisplay: string, specificHeader: boolean, codeblockLanguage: string, Collapse: boolean) {
+ const parent = preElements.parentNode;
+
+ const container = createContainer(specificHeader);
+ if (codeblockLanguage){
+ const Icon = getLanguageIcon(codeblockLanguage)
+ if (Icon) {
+ container.appendChild(createCodeblockIcon(codeblockLanguage));
+ }
+ container.appendChild(createCodeblockLang(codeblockLanguage));
+ }
+ container.appendChild(createFileName(textToDisplay));
+ parent.insertBefore(container, preElements);
+
+ // Add event listener to the widget element
+ container.addEventListener("click", function() {
+ // Toggle the "collapsed" class on the codeblock element
+ preElements.classList.toggle("codeblock-customizer-codeblock-collapsed");
+ });
+
+ if (Collapse) {
+ preElements.classList.add(`codeblock-customizer-codeblock-collapsed`);
+ }
+
+}// HeaderWidget
+
+function createLineNumberElement(lineNumber,showNumbers) {
+ const lineNumberWrapper = document.createElement("div");
+ lineNumberWrapper.classList.add(`codeblock-customizer-line-number${showNumbers?'':'-hide'}`);
+ lineNumberWrapper.setText(lineNumber);
+
+ return lineNumberWrapper;
+}// createLineNumberElement
+
+function createLineTextElement(line) {
+ const lineText = line !== "" ? line : "
";
+ const sanitizedText = sanitizeHTMLToDom(lineText);
+ const lineContentWrapper = createDiv({cls: `codeblock-customizer-line-text`, text: sanitizedText});
+
+ return lineContentWrapper;
+}// createLineTextElement
+
+function highlightLines(codeElements, showNumbers, lineNumberOffset, linesToHighlight, altHL) {
+ for (let i = 0; i < codeElements.length; i++) {
+ let lines = codeElements[i].innerHTML.split("\n");
+ const preElm = codeElements[i].parentNode;
+ if (preElm === null || preElm.nodeName !== "PRE") // only process pre > code elements
+ return;
+
+ if (lines.length == 1) {
+ lines = ['',''];
+ }
+ codeElements[i].innerHTML = "";
+ for (let j = 0; j < lines.length - 1; j++) {
+ const line = lines[j];
+ const lineNumber = j + 1;
+ const isHighlighted = linesToHighlight.includes(lineNumber);
+ const altHLMatch = altHL.filter((hl) => hl.lineNumber === lineNumber);
+
+ // create line element
+ const lineWrapper = document.createElement("div");
+ if (isHighlighted) {
+ lineWrapper.classList.add(`codeblock-customizer-line-highlighted`);
+ }
+ else if (altHLMatch.length > 0) {
+ lineWrapper.classList.add(`codeblock-customizer-line-highlighted-${altHLMatch[0].name.replace(/\s+/g, '-').toLowerCase()}`);
+ }
+ codeElements[i].appendChild(lineWrapper);
+
+ // create line number element
+ const lineNumberEl = createLineNumberElement(lineNumber+lineNumberOffset,showNumbers);
+ lineWrapper.appendChild(lineNumberEl);
+
+ // create line text element
+ const lineTextEl = createLineTextElement(line);
+ lineWrapper.appendChild(lineTextEl);
+ }
+ }
+}// highlightLines
+
+function AddHeaderAndHighlight(isCodeBlockExcluded, fileName, codeBlockPreElement, codeBlockLang, Fold, codeElements, showNumbers, lineNumberOffset, linesToHighlight, altHL ){
+ if (!isCodeBlockExcluded) {
+ let specificHeader = true;
+ if (fileName === null || fileName === "") {
+ if (Fold) {
+ fileName = 'Collapsed Code';
+ } else {
+ fileName = '';
+ specificHeader = false;
+ }
+ }
+ HeaderWidget(codeBlockPreElement, fileName, specificHeader, getLanguageName(codeBlockLang), Fold);
+ highlightLines(codeElements, showNumbers, lineNumberOffset, linesToHighlight, altHL);
+
+ if (codeBlockPreElement.parentElement) {
+ codeBlockPreElement.parentElement.classList.add(`codeblock-customizer-pre-parent`);
+ }
+ }
+}// AddHeaderAndHighlight
+
+function PDFExport(codeBlockElement: HTMLElement, plugin: CodeblockCustomizerPlugin, codeBlockFirstLines: string[]) {
+ const codeBlocks = codeBlockElement.querySelectorAll('pre > code');
+ codeBlocks.forEach((codeElm, key) => {
+ const codeBlockFirstLine = codeBlockFirstLines[key];
+ const codeBlockLang = searchString(codeBlockFirstLine, "```");
+ const highlightedLinesParams = searchString(codeBlockFirstLine, "HL:");
+ const linesToHighlight = getHighlightedLines(highlightedLinesParams);
+ const fileName = searchString(codeBlockFirstLine, "file:");
+ const Fold = searchString(codeBlockFirstLine, "fold");
+ const lineNumberOffset = 0; //searchString(codeBlockFirstLine, "ln:")//TODO (@mayurankv) Set line number offset here - Should be ln_value - 1 since it is offset, not starting line number - 0 if true OR false
+ const showNumbers = true; //TODO (@mayurankv) Set showNumbers to be true if ln: or ln:true or false if ln:false
+ const alternateColors = plugin.settings.alternateColors || [];
+ let altHL = [];
+ for (const { name, _ } of alternateColors) {
+ const altParams = searchString(codeBlockFirstLine, `${name}:`);
+ altHL = altHL.concat(getHighlightedLines(altParams).map((lineNumber) => ({ name, lineNumber })));
+ }
+
+ let isCodeBlockExcluded = false;
+ isCodeBlockExcluded = isExcluded(codeBlockFirstLine, plugin.settings.ExcludeLangs);
+
+ const codeBlockPreElement: HTMLPreElement | null = codeElm.parentElement;
+ if (codeBlockPreElement === null) {
+ return;
+ }
+
+ if (!isCodeBlockExcluded){
+ codeBlockPreElement.classList.add(`codeblock-customizer-pre`);
+ }
+ const codeElements = codeBlockPreElement.getElementsByTagName("code");
+
+ AddHeaderAndHighlight(isCodeBlockExcluded, fileName, codeBlockPreElement, codeBlockLang, Fold, codeElements, showNumbers, lineNumberOffset, linesToHighlight, altHL );
+ })
+}// PDFExport
diff --git a/src/Settings.ts b/src/Settings.ts
index 7ef61f7..366d528 100644
--- a/src/Settings.ts
+++ b/src/Settings.ts
@@ -11,236 +11,238 @@ export type Display = "none" | "title_only" | "always";
// Interface Creation
export interface CodeblockCustomizerThemeModeColors {
- codeblock: {
- backgroundColor: Color;
- textColor: Color;
- },
- gutter: {
- backgroundColor: Color;
- textColor: Color;
- },
- header: {
- backgroundColor: Color;
- title: {
- textColor: Color;
- },
- languageTag: {
- backgroundColor: Color;
- textColor: Color;
- },
- lineColor: Color;
- },
- highlights: {
- activeCodeblockLineColor: Color;
- activeEditorLineColor: Color;
- defaultColor: Color;
- alternativeHighlights: Record;
- },
+ codeblock: {
+ backgroundColor: Color;
+ textColor: Color;
+ },
+ gutter: {
+ backgroundColor: Color;
+ textColor: Color;
+ },
+ header: {
+ backgroundColor: Color;
+ title: {
+ textColor: Color;
+ },
+ languageTag: {
+ backgroundColor: Color;
+ textColor: Color;
+ },
+ lineColor: Color;
+ },
+ highlights: {
+ activeCodeblockLineColor: Color;
+ activeEditorLineColor: Color;
+ defaultColor: Color;
+ alternativeHighlights: Record;
+ },
}
export interface CodeblockCustomizerThemeSettings {
- codeblock: {
- lineNumbers: boolean;
- curvature: number;
- },
- gutter: {
- highlight: boolean;
- },
- header: {
- title: {
- textFont: string;
- textBold: boolean;
- textItalic: boolean;
- },
- languageTag: {
- display: Display;
- textFont: string;
- textBold: boolean;
- textItalic: boolean;
- },
- languageIcon: {
- display: Display;
- displayColor: boolean;
- },
- },
- highlights: {
- activeCodeblockLine: boolean;
- activeEditorLine: boolean;
- },
- advanced: {
- gradientHighlights: boolean;
- gradientHighlightsColorStop: Percentage;
- languageBorderColor: boolean;
- iconSize: number;
- };
+ codeblock: {
+ lineNumbers: boolean;
+ curvature: number;
+ },
+ gutter: {
+ highlight: boolean;
+ },
+ header: {
+ title: {
+ textFont: string;
+ textBold: boolean;
+ textItalic: boolean;
+ },
+ languageTag: {
+ display: Display;
+ textFont: string;
+ textBold: boolean;
+ textItalic: boolean;
+ },
+ languageIcon: {
+ display: Display;
+ displayColor: boolean;
+ },
+ collapsePlaceholder: string;
+ },
+ highlights: {
+ activeCodeblockLine: boolean;
+ activeEditorLine: boolean;
+ },
+ advanced: {
+ gradientHighlights: boolean;
+ gradientHighlightsColorStop: Percentage;
+ languageBorderColor: boolean;
+ iconSize: number;
+ };
}
export interface CodeblockCustomizerThemeColors {
- light: CodeblockCustomizerThemeModeColors;
- dark: CodeblockCustomizerThemeModeColors;
+ light: CodeblockCustomizerThemeModeColors;
+ dark: CodeblockCustomizerThemeModeColors;
}
export interface CodeblockCustomizerTheme {
- settings: CodeblockCustomizerThemeSettings;
- colors: CodeblockCustomizerThemeColors;
+ settings: CodeblockCustomizerThemeSettings;
+ colors: CodeblockCustomizerThemeColors;
}
export interface CodeblockCustomizerSettings {
- themes: Record;
- selectedTheme: string;
- defaultTheme: string;
- currentTheme: CodeblockCustomizerTheme;
- newTheme: {
- name: string;
- default: boolean;
- },
- newHighlight: string;
- excludedLangs: string;
+ themes: Record;
+ selectedTheme: string;
+ defaultTheme: string;
+ currentTheme: CodeblockCustomizerTheme;
+ newTheme: {
+ name: string;
+ default: boolean;
+ },
+ newHighlight: string;
+ excludedLangs: string;
}
// Theme Defaults
-const THEME_DEFAULT_SETTINGS: CodeblockCustomizerThemeSettings = {
- codeblock: {
- lineNumbers: true,
- curvature: 10,
- },
- gutter: {
- highlight: true,
- },
- header: {
- title: {
- textFont: '',
- textBold: false,
- textItalic: false,
- },
- languageTag: {
- display: "always",
- textFont: '',
- textBold: true,
- textItalic: true,
- },
- languageIcon: {
- display: "always",
- displayColor: true,
- },
- },
- highlights: {
- activeCodeblockLine: true,
- activeEditorLine: false,
- },
- advanced: {
- gradientHighlights: false,
- gradientHighlightsColorStop: '70%',
- languageBorderColor: false,
- iconSize: 28,
- },
-}
export const NEW_THEME_DEFAULT: {name: string, default: boolean} = {
- name: '',
- default: false,
+ name: '',
+ default: false,
+}
+const THEME_DEFAULT_SETTINGS: CodeblockCustomizerThemeSettings = {
+ codeblock: {
+ lineNumbers: true,
+ curvature: 10,
+ },
+ gutter: {
+ highlight: true,
+ },
+ header: {
+ title: {
+ textFont: '',
+ textBold: false,
+ textItalic: false,
+ },
+ languageTag: {
+ display: "always",
+ textFont: '',
+ textBold: true,
+ textItalic: true,
+ },
+ languageIcon: {
+ display: "always",
+ displayColor: true,
+ },
+ collapsePlaceholder: '',
+ },
+ highlights: {
+ activeCodeblockLine: true,
+ activeEditorLine: false,
+ },
+ advanced: {
+ gradientHighlights: false,
+ gradientHighlightsColorStop: '70%',
+ languageBorderColor: false,
+ iconSize: 28,
+ },
}
export const THEME_FALLBACK_COLORS: CodeblockCustomizerThemeModeColors = {
- codeblock: {
- backgroundColor: '--code-background',
- textColor: '--code-normal',
- },
- gutter: {
- backgroundColor: '--code-background',
- textColor: '--code-comment',
- },
- header: {
- backgroundColor: '--code-background',
- title: {
- textColor: '--code-comment',
- },
- languageTag: {
- backgroundColor: '--code-background',
- textColor: '--code-comment',
- },
- lineColor: '--code-background',
- },
- highlights: {
- activeCodeblockLineColor: '--color-base-30',
- activeEditorLineColor: '--color-base-20',
- defaultColor: '--text-highlight-bg',
- alternativeHighlights: {},
- },
+ codeblock: {
+ backgroundColor: '--code-background',
+ textColor: '--code-normal',
+ },
+ gutter: {
+ backgroundColor: '--code-background',
+ textColor: '--code-comment',
+ },
+ header: {
+ backgroundColor: '--code-background',
+ title: {
+ textColor: '--code-comment',
+ },
+ languageTag: {
+ backgroundColor: '--code-background',
+ textColor: '--code-comment',
+ },
+ lineColor: '--code-background',
+ },
+ highlights: {
+ activeCodeblockLineColor: '--color-base-30',
+ activeEditorLineColor: '--color-base-20',
+ defaultColor: '--text-highlight-bg',
+ alternativeHighlights: {},
+ },
}
// Theme Creation
const DEFAULT_THEME: CodeblockCustomizerTheme = {
- settings: THEME_DEFAULT_SETTINGS,
- colors: {
- light: THEME_FALLBACK_COLORS,
- dark: THEME_FALLBACK_COLORS,
- },
+ settings: THEME_DEFAULT_SETTINGS,
+ colors: {
+ light: THEME_FALLBACK_COLORS,
+ dark: THEME_FALLBACK_COLORS,
+ },
}
const SOLARIZED_THEME: CodeblockCustomizerTheme = {
- settings: THEME_DEFAULT_SETTINGS,
- colors: {
- light: {
- codeblock: {
- backgroundColor: '#FCF6E4',
- textColor: '#bababa',
- },
- gutter: {
- backgroundColor: '#EDE8D6',
- textColor: '#6c6c6c',
- },
- header: {
- backgroundColor: '#D5CCB4',
- title: {
- textColor: '#866704',
- },
- languageTag: {
- backgroundColor: '#B8B5AA',
- textColor: '#C25F30',
- },
- lineColor: '#EDD489',
- },
- highlights: {
- activeCodeblockLineColor: '#EDE8D6',
- activeEditorLineColor: '#60460633',
- defaultColor: '#E9DFBA',
- alternativeHighlights: {},
- },
- },
- dark: {
- codeblock: {
- backgroundColor: '#002b36',
- textColor: '#bababa',
- },
- gutter: {
- backgroundColor: '#073642',
- textColor: '#6c6c6c',
- },
- header: {
- backgroundColor: '#0a4554',
- title: {
- textColor: '#dadada',
- },
- languageTag: {
- backgroundColor: '#008080',
- textColor: '#000000',
- },
- lineColor: '#46cced',
- },
- highlights: {
- activeCodeblockLineColor: '#073642',
- activeEditorLineColor: '#468eeb33',
- defaultColor: '#054b5c',
- alternativeHighlights: {},
- },
- },
- },
+ settings: THEME_DEFAULT_SETTINGS,
+ colors: {
+ light: {
+ codeblock: {
+ backgroundColor: '#FCF6E4',
+ textColor: '#bababa',
+ },
+ gutter: {
+ backgroundColor: '#EDE8D6',
+ textColor: '#6c6c6c',
+ },
+ header: {
+ backgroundColor: '#D5CCB4',
+ title: {
+ textColor: '#866704',
+ },
+ languageTag: {
+ backgroundColor: '#B8B5AA',
+ textColor: '#C25F30',
+ },
+ lineColor: '#EDD489',
+ },
+ highlights: {
+ activeCodeblockLineColor: '#EDE8D6',
+ activeEditorLineColor: '#60460633',
+ defaultColor: '#E9DFBA',
+ alternativeHighlights: {},
+ },
+ },
+ dark: {
+ codeblock: {
+ backgroundColor: '#002b36',
+ textColor: '#bababa',
+ },
+ gutter: {
+ backgroundColor: '#073642',
+ textColor: '#6c6c6c',
+ },
+ header: {
+ backgroundColor: '#0a4554',
+ title: {
+ textColor: '#dadada',
+ },
+ languageTag: {
+ backgroundColor: '#008080',
+ textColor: '#000000',
+ },
+ lineColor: '#46cced',
+ },
+ highlights: {
+ activeCodeblockLineColor: '#073642',
+ activeEditorLineColor: '#468eeb33',
+ defaultColor: '#054b5c',
+ alternativeHighlights: {},
+ },
+ },
+ },
}
// Plugin default settings
export const DEFAULT_SETTINGS: CodeblockCustomizerSettings = {
- themes: {
- 'Default': DEFAULT_THEME,
- 'Solarized': SOLARIZED_THEME,
- },
- selectedTheme: 'Default',
- defaultTheme: 'Default',
- currentTheme: structuredClone(DEFAULT_THEME),
- newTheme: NEW_THEME_DEFAULT,
- newHighlight: '',
- excludedLangs: "dataview, dataviewjs, ad-*",
+ themes: {
+ 'Default': DEFAULT_THEME,
+ 'Solarized': SOLARIZED_THEME,
+ },
+ selectedTheme: 'Default',
+ defaultTheme: 'Default',
+ currentTheme: structuredClone(DEFAULT_THEME),
+ newTheme: NEW_THEME_DEFAULT,
+ newHighlight: '',
+ excludedLangs: "dataview, dataviewjs, ad-*",
}
diff --git a/src/SettingsTab.ts b/src/SettingsTab.ts
index 1d3afe6..1d40842 100644
--- a/src/SettingsTab.ts
+++ b/src/SettingsTab.ts
@@ -7,754 +7,764 @@ import { getCurrentMode } from "./Utils";
import { Color, CSS, HEX, Display, CodeblockCustomizerSettings, CodeblockCustomizerThemeColors, DEFAULT_SETTINGS, NEW_THEME_DEFAULT } from './Settings';
const DISPLAY_OPTIONS: Record = {
- "none": "Never",
- "title_only": "Title Only",
- "always": "Always",
+ "none": "Never",
+ "title_only": "Title Only",
+ "always": "Always",
}
export class SettingsTab extends PluginSettingTab {
plugin: CodeblockCustomizerPlugin;
- pickrs: Record;
- disableableComponents: Record>
+ pickrs: Record;
+ disableableComponents: Record>
constructor(app: App, plugin: CodeblockCustomizerPlugin) {
super(app, plugin);
this.plugin = plugin;
- this.pickrs = {}
- this.disableableComponents = {};
+ this.pickrs = {}
+ this.disableableComponents = {};
}
- /**
+ /**
* Builds the html page that is showed in the settings.
*/
display() {
- const {containerEl} = this;
- containerEl.empty();
- containerEl.createEl('h2', {text: 'Settings for the Codeblock Customizer Plugin.'});
+ const {containerEl} = this;
+ containerEl.empty();
+ containerEl.createEl('h2', {text: 'Settings for the Codeblock Customizer Plugin.'});
- this.disableableComponents = {
- 'lineNumbers': [],
- 'headerLanguageTags': [],
- 'headerLanguageIcons': [],
- 'editorActiveLineHighlight': [],
- 'codeblockActiveLineHighlight': [],
- 'gradientHighlighting': [],
- };
+ this.disableableComponents = {
+ 'lineNumbers': [],
+ 'headerLanguageTags': [],
+ 'headerLanguageIcons': [],
+ 'editorActiveLineHighlight': [],
+ 'codeblockActiveLineHighlight': [],
+ 'gradientHighlighting': [],
+ };
- // ========== General ==========
+ // ========== General ==========
//containerEl.createEl('h3', {text: 'General Settings'});
- new Setting(containerEl)
- .setName('Exclude Languages')
- .setDesc('Define languages in a comma separated list on which the plugin should not apply. You can use a wildcard (*) either at the beginning, or at the end. For example: ad-* will exclude codeblocks where the language starts with ad- e.g.: ad-info, ad-error etc.')
- .addText(text => text
- .setPlaceholder('e.g. dataview, python etc.')
- .setValue(this.plugin.settings.excludedLangs)
- .onChange((value) => {
- this.plugin.settings.excludedLangs = value;
- (async () => {await this.plugin.saveSettings()})();
- }));
+ new Setting(containerEl)
+ .setName('Exclude Languages')
+ .setDesc('Define languages in a comma separated list on which the plugin should not apply. You can use a wildcard (*) either at the beginning, or at the end. For example: ad-* will exclude codeblocks where the language starts with ad- e.g.: ad-info, ad-error etc.')
+ .addText(text => text
+ .setPlaceholder('e.g. dataview, python etc.')
+ .setValue(this.plugin.settings.excludedLangs)
+ .onChange((value) => {
+ this.plugin.settings.excludedLangs = value;
+ (async () => {await this.plugin.saveSettings()})();
+ }));
- // ========== Themes ==========
+ // ========== Themes ==========
containerEl.createEl('h3', {text: 'Theme Settings'});
- let themeDropdown: DropdownComponent;
- new Setting(containerEl)
- .setName("Select Theme")
- .addDropdown((dropdown) => {
- themeDropdown = dropdown;
- this.updateDropdown(themeDropdown,this.plugin.settings);
- themeDropdown.onChange((value) => {
- this.plugin.settings.selectedTheme = value;
- this.plugin.settings.currentTheme = structuredClone(this.plugin.settings.themes[this.plugin.settings.selectedTheme])
- this.updatePickrColors();
- this.updateAlternativeHighlights(alternativeHighlightsContainer);
- (async () => {await this.plugin.saveSettings()})();
- });
- ;
- })
- .addExtraButton(button => {
- button.setTooltip("Update theme");
- button.setIcon('arrow-up');
- button.onClick(() => {
- if (this.plugin.settings.selectedTheme in DEFAULT_SETTINGS.themes)
- new Notice('You cannot update the default themes'); //NOSONAR
- else {
- this.plugin.settings.themes[this.plugin.settings.selectedTheme] = structuredClone(this.plugin.settings.currentTheme);
- this.updateAlternativeHighlights(alternativeHighlightsContainer);
- new Notice(`${this.plugin.settings.selectedTheme} theme saved successfully!`); //NOSONAR
- (async () => {await this.plugin.saveSettings()})();
- }
- });
- })
- .addExtraButton(button => {
- button.setTooltip("Delete theme");
- button.setIcon('trash');
- button.onClick(() => {
- if (this.plugin.settings.selectedTheme.trim().length === 0) {
- new Notice('Select a theme first to delete'); //NOSONAR
- } else if (this.plugin.settings.newTheme.name in DEFAULT_SETTINGS.themes) {
- new Notice('You cannot delete the default themes'); //NOSONAR
- } else {
- if (this.plugin.settings.defaultTheme === this.plugin.settings.selectedTheme)
- this.plugin.settings.defaultTheme = 'Default';
- delete this.plugin.settings.themes[this.plugin.settings.selectedTheme]
- new Notice(`${this.plugin.settings.selectedTheme} theme deleted successfully!`); //NOSONAR
- this.plugin.settings.selectedTheme = "Default";
- this.plugin.settings.currentTheme = structuredClone(this.plugin.settings.themes[this.plugin.settings.selectedTheme])
- this.updateDropdown(themeDropdown,this.plugin.settings);
- this.updatePickrColors();
- this.updateAlternativeHighlights(alternativeHighlightsContainer);
- (async () => {await this.plugin.saveSettings()})();
- }
- });
- });
- let newThemeName: TextComponent;
- this.plugin.settings.newTheme = NEW_THEME_DEFAULT
- new Setting(containerEl)
- .setName('Add New Theme')
- .setDesc('Create a new theme from the current settings.')
- .addText(text => {newThemeName = text
- .setPlaceholder('New theme name')
- .setValue(this.plugin.settings.newTheme.name)
- .onChange((value) => {
- this.plugin.settings.newTheme.name = value;
- });
- })
- .addToggle(toggle => {return toggle
- .setTooltip("Save as the default theme")
- .setValue(false)
- .onChange((value) => {
- this.plugin.settings.newTheme.default = value;
- });
- })
- .addExtraButton(button => {
- button.setTooltip("Save theme");
- button.setIcon('plus');
- button.onClick(() => {
- if (this.plugin.settings.newTheme.name.trim().length === 0) {
- new Notice('Set a name for your theme'); //NOSONAR
- } else if (this.plugin.settings.newTheme.name in DEFAULT_SETTINGS.themes) {
- new Notice('You can\'t overwrite the default themes'); //NOSONAR
- } else {
- if (this.plugin.settings.newTheme.name in this.plugin.settings.themes) {
- this.plugin.settings.themes[this.plugin.settings.newTheme.name] = structuredClone(this.plugin.settings.currentTheme);
- new Notice(`${this.plugin.settings.newTheme.name} theme updated successfully!`); //NOSONAR
- } else {
- this.plugin.settings.themes[this.plugin.settings.newTheme.name] = structuredClone(this.plugin.settings.currentTheme);
- new Notice(`${this.plugin.settings.newTheme.name} theme saved successfully!`); //NOSONAR
- }
- this.plugin.settings.selectedTheme = this.plugin.settings.newTheme.name;
- if (this.plugin.settings.newTheme.default)
- this.plugin.settings.defaultTheme = this.plugin.settings.selectedTheme;
- this.updateDropdown(themeDropdown,this.plugin.settings);
- this.updateAlternativeHighlights(alternativeHighlightsContainer);
- this.plugin.settings.newTheme = NEW_THEME_DEFAULT;
- newThemeName.setValue("");
- (async () => {await this.plugin.saveSettings()})();
- }
- });
- });
+ let themeDropdown: DropdownComponent;
+ new Setting(containerEl)
+ .setName("Select Theme")
+ .addDropdown((dropdown) => {
+ themeDropdown = dropdown;
+ this.updateDropdown(themeDropdown,this.plugin.settings);
+ themeDropdown.onChange((value) => {
+ this.plugin.settings.selectedTheme = value;
+ this.plugin.settings.currentTheme = structuredClone(this.plugin.settings.themes[this.plugin.settings.selectedTheme])
+ this.updatePickrColors();
+ this.updateAlternativeHighlights(alternativeHighlightsContainer);
+ (async () => {await this.plugin.saveSettings()})();
+ });
+ ;
+ })
+ .addExtraButton(button => {
+ button.setTooltip("Update theme");
+ button.setIcon('arrow-up');
+ button.onClick(() => {
+ if (this.plugin.settings.selectedTheme in DEFAULT_SETTINGS.themes)
+ new Notice('You cannot update the default themes'); //NOSONAR
+ else {
+ this.plugin.settings.themes[this.plugin.settings.selectedTheme] = structuredClone(this.plugin.settings.currentTheme);
+ this.updateAlternativeHighlights(alternativeHighlightsContainer);
+ new Notice(`${this.plugin.settings.selectedTheme} theme saved successfully!`); //NOSONAR
+ (async () => {await this.plugin.saveSettings()})();
+ }
+ });
+ })
+ .addExtraButton(button => {
+ button.setTooltip("Delete theme");
+ button.setIcon('trash');
+ button.onClick(() => {
+ if (this.plugin.settings.selectedTheme.trim().length === 0) {
+ new Notice('Select a theme first to delete'); //NOSONAR
+ } else if (this.plugin.settings.newTheme.name in DEFAULT_SETTINGS.themes) {
+ new Notice('You cannot delete the default themes'); //NOSONAR
+ } else {
+ if (this.plugin.settings.defaultTheme === this.plugin.settings.selectedTheme)
+ this.plugin.settings.defaultTheme = 'Default';
+ delete this.plugin.settings.themes[this.plugin.settings.selectedTheme]
+ new Notice(`${this.plugin.settings.selectedTheme} theme deleted successfully!`); //NOSONAR
+ this.plugin.settings.selectedTheme = "Default";
+ this.plugin.settings.currentTheme = structuredClone(this.plugin.settings.themes[this.plugin.settings.selectedTheme])
+ this.updateDropdown(themeDropdown,this.plugin.settings);
+ this.updatePickrColors();
+ this.updateAlternativeHighlights(alternativeHighlightsContainer);
+ (async () => {await this.plugin.saveSettings()})();
+ }
+ });
+ });
+ let newThemeName: TextComponent;
+ this.plugin.settings.newTheme = NEW_THEME_DEFAULT
+ new Setting(containerEl)
+ .setName('Add New Theme')
+ .setDesc('Create a new theme from the current settings.')
+ .addText(text => {newThemeName = text
+ .setPlaceholder('New theme name')
+ .setValue(this.plugin.settings.newTheme.name)
+ .onChange((value) => {
+ this.plugin.settings.newTheme.name = value;
+ });
+ })
+ .addToggle(toggle => {return toggle
+ .setTooltip("Save as the default theme")
+ .setValue(false)
+ .onChange((value) => {
+ this.plugin.settings.newTheme.default = value;
+ });
+ })
+ .addExtraButton(button => {
+ button.setTooltip("Save theme");
+ button.setIcon('plus');
+ button.onClick(() => {
+ if (this.plugin.settings.newTheme.name.trim().length === 0) {
+ new Notice('Set a name for your theme'); //NOSONAR
+ } else if (this.plugin.settings.newTheme.name in DEFAULT_SETTINGS.themes) {
+ new Notice('You can\'t overwrite the default themes'); //NOSONAR
+ } else {
+ if (this.plugin.settings.newTheme.name in this.plugin.settings.themes) {
+ this.plugin.settings.themes[this.plugin.settings.newTheme.name] = structuredClone(this.plugin.settings.currentTheme);
+ new Notice(`${this.plugin.settings.newTheme.name} theme updated successfully!`); //NOSONAR
+ } else {
+ this.plugin.settings.themes[this.plugin.settings.newTheme.name] = structuredClone(this.plugin.settings.currentTheme);
+ new Notice(`${this.plugin.settings.newTheme.name} theme saved successfully!`); //NOSONAR
+ }
+ this.plugin.settings.selectedTheme = this.plugin.settings.newTheme.name;
+ if (this.plugin.settings.newTheme.default)
+ this.plugin.settings.defaultTheme = this.plugin.settings.selectedTheme;
+ this.updateDropdown(themeDropdown,this.plugin.settings);
+ this.updateAlternativeHighlights(alternativeHighlightsContainer);
+ this.plugin.settings.newTheme = NEW_THEME_DEFAULT;
+ newThemeName.setValue("");
+ (async () => {await this.plugin.saveSettings()})();
+ }
+ });
+ });
containerEl.createEl('h4', {text: 'Codeblock Appearance'});
- new Setting(containerEl)
- .setName('Codeblock Background Color')
- .then((setting) => {this.createPickr(
- this.plugin,containerEl,setting,
- 'codeblock_background',
- (relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors[getCurrentMode()].codeblock.backgroundColor,
- (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors[getCurrentMode()].codeblock.backgroundColor = saveColor},
- )});
- new Setting(containerEl)
- .setName('Codeblock Text Color')
- .then((setting) => {this.createPickr(
- this.plugin,containerEl,setting,
- 'codeblock_text',
- (relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors[getCurrentMode()].codeblock.textColor,
- (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors[getCurrentMode()].codeblock.textColor = saveColor},
- )});
- new Setting(containerEl)
- .setName('Codeblock Curvature')
- .setDesc('Determines how rounded the codeblocks appear in pixels.')
- .then((setting) => {
- let resettableSlider: SliderComponent;
- setting.addSlider((slider) => {
- resettableSlider = slider
- .setLimits(0,25,1)
- .setValue(this.plugin.settings.currentTheme.settings.codeblock.curvature)
- .setDynamicTooltip()
- .onChange((value) => {
- this.plugin.settings.currentTheme.settings.codeblock.curvature = value;
- (async () => {await this.plugin.saveSettings()})();
- })});
- setting.addExtraButton((button) => {button
- .setIcon("reset")
- .onClick(() => {
- this.plugin.settings.currentTheme.settings.codeblock.curvature = this.plugin.settings.themes[this.plugin.settings.selectedTheme].settings.codeblock.curvature;
- resettableSlider.setValue(this.plugin.settings.currentTheme.settings.codeblock.curvature);
- (async () => {await this.plugin.saveSettings()})();
- })
- .setTooltip('Restore default icon size');
- })
- })
-
+ new Setting(containerEl)
+ .setName('Codeblock Background Color')
+ .then((setting) => {this.createPickr(
+ this.plugin,containerEl,setting,
+ 'codeblock_background',
+ (relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors[getCurrentMode()].codeblock.backgroundColor,
+ (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors[getCurrentMode()].codeblock.backgroundColor = saveColor},
+ )});
+ new Setting(containerEl)
+ .setName('Codeblock Text Color')
+ .then((setting) => {this.createPickr(
+ this.plugin,containerEl,setting,
+ 'codeblock_text',
+ (relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors[getCurrentMode()].codeblock.textColor,
+ (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors[getCurrentMode()].codeblock.textColor = saveColor},
+ )});
+ new Setting(containerEl)
+ .setName('Codeblock Curvature')
+ .setDesc('Determines how rounded the codeblocks appear in pixels.')
+ .then((setting) => {
+ let resettableSlider: SliderComponent;
+ setting.addSlider((slider) => {
+ resettableSlider = slider
+ .setLimits(0,25,1)
+ .setValue(this.plugin.settings.currentTheme.settings.codeblock.curvature)
+ .setDynamicTooltip()
+ .onChange((value) => {
+ this.plugin.settings.currentTheme.settings.codeblock.curvature = value;
+ (async () => {await this.plugin.saveSettings()})();
+ })});
+ setting.addExtraButton((button) => {button
+ .setIcon("reset")
+ .onClick(() => {
+ this.plugin.settings.currentTheme.settings.codeblock.curvature = this.plugin.settings.themes[this.plugin.settings.selectedTheme].settings.codeblock.curvature;
+ resettableSlider.setValue(this.plugin.settings.currentTheme.settings.codeblock.curvature);
+ (async () => {await this.plugin.saveSettings()})();
+ })
+ .setTooltip('Restore default icon size');
+ })
+ })
+
containerEl.createEl('h4', {text: 'Gutter Appearance'});
- new Setting(containerEl)
- .setName('Enable Line Numbers')
- .setDesc('If disabled, the below settings are disabled too.')
- .addToggle(toggle => toggle
- .setValue(this.plugin.settings.currentTheme.settings.codeblock.lineNumbers)
- .onChange((value) => {
- this.plugin.settings.currentTheme.settings.codeblock.lineNumbers = value;
- this.disableableComponents['lineNumbers'].forEach(component => {component.setDisabled(!value)});
- (async () => {await this.plugin.saveSettings()})();
- }));
- new Setting(containerEl)
- .setName('Gutter Background Color')
- .then((setting) => {this.createPickr(
- this.plugin,containerEl,setting,
- 'gutter_background',
- (relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors[getCurrentMode()].gutter.backgroundColor,
- (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors[getCurrentMode()].gutter.backgroundColor = saveColor},
- () => !this.plugin.settings.currentTheme.settings.codeblock.lineNumbers,
- )});
- this.disableableComponents['lineNumbers'].push(this.pickrs['gutter_background'].resetButton);
- new Setting(containerEl)
- .setName('Line Number Color')
- .then((setting) => {this.createPickr(
- this.plugin,containerEl,setting,
- 'line_number',
- (relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors[getCurrentMode()].gutter.textColor,
- (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors[getCurrentMode()].gutter.textColor = saveColor},
- () => !this.plugin.settings.currentTheme.settings.codeblock.lineNumbers,
- )});
- this.disableableComponents['lineNumbers'].push(this.pickrs['line_number'].resetButton);
- new Setting(containerEl)
- .setName('Highlight Line Numbers')
- .setDesc('If enabled, highlights will also highlight the line numbers.')
- .addToggle(toggle => {let highlightLineNumbersToggle = toggle
- .setValue(this.plugin.settings.currentTheme.settings.gutter.highlight)
- .setDisabled(!this.plugin.settings.currentTheme.settings.codeblock.lineNumbers)
- .onChange((value) => {
- this.plugin.settings.currentTheme.settings.gutter.highlight = value;
- (async () => {await this.plugin.saveSettings()})();
- })
- this.disableableComponents['lineNumbers'].push(highlightLineNumbersToggle);
- });
+ new Setting(containerEl)
+ .setName('Enable Line Numbers')
+ .setDesc('If disabled, the below settings are disabled too.')
+ .addToggle(toggle => toggle
+ .setValue(this.plugin.settings.currentTheme.settings.codeblock.lineNumbers)
+ .onChange((value) => {
+ this.plugin.settings.currentTheme.settings.codeblock.lineNumbers = value;
+ this.disableableComponents['lineNumbers'].forEach(component => {component.setDisabled(!value)});
+ (async () => {await this.plugin.saveSettings()})();
+ }));
+ new Setting(containerEl)
+ .setName('Gutter Background Color')
+ .then((setting) => {this.createPickr(
+ this.plugin,containerEl,setting,
+ 'gutter_background',
+ (relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors[getCurrentMode()].gutter.backgroundColor,
+ (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors[getCurrentMode()].gutter.backgroundColor = saveColor},
+ () => !this.plugin.settings.currentTheme.settings.codeblock.lineNumbers,
+ )});
+ this.disableableComponents['lineNumbers'].push(this.pickrs['gutter_background'].resetButton);
+ new Setting(containerEl)
+ .setName('Line Number Color')
+ .then((setting) => {this.createPickr(
+ this.plugin,containerEl,setting,
+ 'line_number',
+ (relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors[getCurrentMode()].gutter.textColor,
+ (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors[getCurrentMode()].gutter.textColor = saveColor},
+ () => !this.plugin.settings.currentTheme.settings.codeblock.lineNumbers,
+ )});
+ this.disableableComponents['lineNumbers'].push(this.pickrs['line_number'].resetButton);
+ new Setting(containerEl)
+ .setName('Highlight Line Numbers')
+ .setDesc('If enabled, highlights will also highlight the line numbers.')
+ .addToggle(toggle => {let highlightLineNumbersToggle = toggle
+ .setValue(this.plugin.settings.currentTheme.settings.gutter.highlight)
+ .setDisabled(!this.plugin.settings.currentTheme.settings.codeblock.lineNumbers)
+ .onChange((value) => {
+ this.plugin.settings.currentTheme.settings.gutter.highlight = value;
+ (async () => {await this.plugin.saveSettings()})();
+ })
+ this.disableableComponents['lineNumbers'].push(highlightLineNumbersToggle);
+ });
containerEl.createEl('h4', {text: 'Header Appearance'});
- new Setting(containerEl)
- .setName('Header Background Color')
- .then((setting) => {this.createPickr(
- this.plugin,containerEl,setting,
- 'header_background',
- (relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors[getCurrentMode()].header.backgroundColor,
- (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors[getCurrentMode()].header.backgroundColor = saveColor},
- )});
- new Setting(containerEl)
- .setName('Header Title Text Styling')
- .setDesc('Style the header title text using bold and italic toggles, by setting a font or by setting a text color.')
- .addToggle(toggle => {toggle
- .setTooltip("Toggle bold title text")
- .setValue(this.plugin.settings.currentTheme.settings.header.title.textBold)
- .onChange((value) => {
- this.plugin.settings.currentTheme.settings.header.title.textBold = value;
- (async () => {await this.plugin.saveSettings()})();
- });
- })
- .addToggle(toggle => {toggle
- .setTooltip("Toggle italic title text")
- .setValue(this.plugin.settings.currentTheme.settings.header.title.textItalic)
- .onChange((value) => {
- this.plugin.settings.currentTheme.settings.header.title.textItalic = value;
- (async () => {await this.plugin.saveSettings()})();
- });
- })
- .addText(text => {text
- .setPlaceholder('Font')
- .setValue(this.plugin.settings.currentTheme.settings.header.title.textFont)
- .onChange((value) => {
- this.plugin.settings.currentTheme.settings.header.title.textFont = value;
- (async () => {await this.plugin.saveSettings()})();
- });
- })
- .then((setting) => {this.createPickr(
- this.plugin,containerEl,setting,
- 'header_title_text',
- (relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors[getCurrentMode()].header.title.textColor,
- (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors[getCurrentMode()].header.title.textColor = saveColor},
- )});
- new Setting(containerEl)
- .setName('Header Separator Color')
- .setDesc('Color of the line separating the codeblock header and the codeblock.')
- .then((setting) => {this.createPickr(
- this.plugin,containerEl,setting,
- 'header_separator',
- (relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors[getCurrentMode()].header.lineColor,
- (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors[getCurrentMode()].header.lineColor = saveColor},
- )});
+ new Setting(containerEl)
+ .setName('Header Background Color')
+ .then((setting) => {this.createPickr(
+ this.plugin,containerEl,setting,
+ 'header_background',
+ (relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors[getCurrentMode()].header.backgroundColor,
+ (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors[getCurrentMode()].header.backgroundColor = saveColor},
+ )});
+ new Setting(containerEl)
+ .setName('Header Title Text Styling')
+ .setDesc('Style the header title text using bold and italic toggles, by setting a font or by setting a text color.')
+ .addToggle(toggle => {toggle
+ .setTooltip("Toggle bold title text")
+ .setValue(this.plugin.settings.currentTheme.settings.header.title.textBold)
+ .onChange((value) => {
+ this.plugin.settings.currentTheme.settings.header.title.textBold = value;
+ (async () => {await this.plugin.saveSettings()})();
+ });
+ })
+ .addToggle(toggle => {toggle
+ .setTooltip("Toggle italic title text")
+ .setValue(this.plugin.settings.currentTheme.settings.header.title.textItalic)
+ .onChange((value) => {
+ this.plugin.settings.currentTheme.settings.header.title.textItalic = value;
+ (async () => {await this.plugin.saveSettings()})();
+ });
+ })
+ .addText(text => {text
+ .setPlaceholder('Font')
+ .setValue(this.plugin.settings.currentTheme.settings.header.title.textFont)
+ .onChange((value) => {
+ this.plugin.settings.currentTheme.settings.header.title.textFont = value;
+ (async () => {await this.plugin.saveSettings()})();
+ });
+ })
+ .then((setting) => {this.createPickr(
+ this.plugin,containerEl,setting,
+ 'header_title_text',
+ (relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors[getCurrentMode()].header.title.textColor,
+ (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors[getCurrentMode()].header.title.textColor = saveColor},
+ )});
+ new Setting(containerEl)
+ .setName('Collapse Placeholder Text')
+ .setDesc('Title placeholder text for collapsed code when no title parameter is set.')
+ .addText(text => text
+ .setPlaceholder('Collapsed Code')
+ .setValue(this.plugin.settings.currentTheme.settings.header.collapsePlaceholder)
+ .onChange((value) => {
+ this.plugin.settings.currentTheme.settings.header.collapsePlaceholder = value;
+ (async () => {await this.plugin.saveSettings()})();
+ }));
+ new Setting(containerEl)
+ .setName('Header Separator Color')
+ .setDesc('Color of the line separating the codeblock header and the codeblock.')
+ .then((setting) => {this.createPickr(
+ this.plugin,containerEl,setting,
+ 'header_separator',
+ (relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors[getCurrentMode()].header.lineColor,
+ (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors[getCurrentMode()].header.lineColor = saveColor},
+ )});
containerEl.createEl('h5', {text: 'Header Language Tag Appearance'});
- new Setting(containerEl)
- .setName('Display Header Language Tags')
- .setDesc('Determine when to show language tags in the header. "Title Only" will only show language tags when the title parameter is set. If set to "None", the below settings are disabled too.')
- .addDropdown((dropdown) => dropdown
- .addOptions(DISPLAY_OPTIONS)
- .setValue(this.plugin.settings.currentTheme.settings.header.languageTag.display)
- .onChange((value: Display) => {
- this.plugin.settings.currentTheme.settings.header.languageTag.display = value;
- this.disableableComponents['headerLanguageTags'].forEach(component => {component.setDisabled(value==="none")});
- (async () => {await this.plugin.saveSettings()})();
- }));
- new Setting(containerEl)
- .setName('Header Language Tag Background Color')
- .then((setting) => {this.createPickr(
- this.plugin,containerEl,setting,
- 'header_language_tag_background',
- (relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors[getCurrentMode()].header.languageTag.backgroundColor,
- (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors[getCurrentMode()].header.languageTag.backgroundColor = saveColor},
- () => this.plugin.settings.currentTheme.settings.header.languageTag.display === 'none',
- )});
- this.disableableComponents['headerLanguageTags'].push(this.pickrs['header_language_tag_background'].resetButton);
- let languageTagsBoldToggle: ToggleComponent;
- let languageTagsItalicToggle: ToggleComponent;
- let languageIconsFontText: TextComponent;
- new Setting(containerEl)
- .setName('Header Language Tag Text Styling')
- .setDesc('Style the header language tag text using bold and italic toggles, by setting a font or by setting a text color.')
- .addToggle(toggle => {languageTagsBoldToggle = toggle
- .setTooltip("Toggle bold language tag text")
- .setValue(this.plugin.settings.currentTheme.settings.header.languageTag.textBold)
- .setDisabled(this.plugin.settings.currentTheme.settings.header.languageTag.display==="none")
- .onChange((value) => {
- this.plugin.settings.currentTheme.settings.header.languageTag.textBold = value;
- (async () => {await this.plugin.saveSettings()})();
- });
- this.disableableComponents['headerLanguageTags'].push(languageTagsBoldToggle);
- })
- .addToggle(toggle => {languageTagsItalicToggle = toggle
- .setTooltip("Toggle italic language tag text")
- .setValue(this.plugin.settings.currentTheme.settings.header.languageTag.textItalic)
- .setDisabled(this.plugin.settings.currentTheme.settings.header.languageTag.display==="none")
- .onChange((value) => {
- this.plugin.settings.currentTheme.settings.header.languageTag.textItalic = value;
- (async () => {await this.plugin.saveSettings()})();
- });
- this.disableableComponents['headerLanguageTags'].push(languageTagsItalicToggle);
- })
- .addText(text => {languageIconsFontText = text
- .setPlaceholder('Font')
- .setValue(this.plugin.settings.currentTheme.settings.header.languageTag.textFont)
- .setDisabled(this.plugin.settings.currentTheme.settings.header.languageTag.display==="none")
- .onChange((value) => {
- this.plugin.settings.currentTheme.settings.header.languageTag.textFont = value;
- (async () => {await this.plugin.saveSettings()})();
- });
- this.disableableComponents['headerLanguageTags'].push(languageIconsFontText);
- })
- .then((setting) => {this.createPickr(
- this.plugin,containerEl,setting,
- 'header_language_tag_text',
- (relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors[getCurrentMode()].header.languageTag.textColor,
- (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors[getCurrentMode()].header.languageTag.textColor = saveColor},
- () => this.plugin.settings.currentTheme.settings.header.languageTag.display === 'none',
- )});
- this.disableableComponents['headerLanguageTags'].push(this.pickrs['header_language_tag_text'].resetButton);
+ new Setting(containerEl)
+ .setName('Display Header Language Tags')
+ .setDesc('Determine when to show language tags in the header. "Title Only" will only show language tags when the title parameter is set. If set to "None", the below settings are disabled too.')
+ .addDropdown((dropdown) => dropdown
+ .addOptions(DISPLAY_OPTIONS)
+ .setValue(this.plugin.settings.currentTheme.settings.header.languageTag.display)
+ .onChange((value: Display) => {
+ this.plugin.settings.currentTheme.settings.header.languageTag.display = value;
+ this.disableableComponents['headerLanguageTags'].forEach(component => {component.setDisabled(value==="none")});
+ (async () => {await this.plugin.saveSettings()})();
+ }));
+ new Setting(containerEl)
+ .setName('Header Language Tag Background Color')
+ .then((setting) => {this.createPickr(
+ this.plugin,containerEl,setting,
+ 'header_language_tag_background',
+ (relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors[getCurrentMode()].header.languageTag.backgroundColor,
+ (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors[getCurrentMode()].header.languageTag.backgroundColor = saveColor},
+ () => this.plugin.settings.currentTheme.settings.header.languageTag.display === 'none',
+ )});
+ this.disableableComponents['headerLanguageTags'].push(this.pickrs['header_language_tag_background'].resetButton);
+ let languageTagsBoldToggle: ToggleComponent;
+ let languageTagsItalicToggle: ToggleComponent;
+ let languageIconsFontText: TextComponent;
+ new Setting(containerEl)
+ .setName('Header Language Tag Text Styling')
+ .setDesc('Style the header language tag text using bold and italic toggles, by setting a font or by setting a text color.')
+ .addToggle(toggle => {languageTagsBoldToggle = toggle
+ .setTooltip("Toggle bold language tag text")
+ .setValue(this.plugin.settings.currentTheme.settings.header.languageTag.textBold)
+ .setDisabled(this.plugin.settings.currentTheme.settings.header.languageTag.display==="none")
+ .onChange((value) => {
+ this.plugin.settings.currentTheme.settings.header.languageTag.textBold = value;
+ (async () => {await this.plugin.saveSettings()})();
+ });
+ this.disableableComponents['headerLanguageTags'].push(languageTagsBoldToggle);
+ })
+ .addToggle(toggle => {languageTagsItalicToggle = toggle
+ .setTooltip("Toggle italic language tag text")
+ .setValue(this.plugin.settings.currentTheme.settings.header.languageTag.textItalic)
+ .setDisabled(this.plugin.settings.currentTheme.settings.header.languageTag.display==="none")
+ .onChange((value) => {
+ this.plugin.settings.currentTheme.settings.header.languageTag.textItalic = value;
+ (async () => {await this.plugin.saveSettings()})();
+ });
+ this.disableableComponents['headerLanguageTags'].push(languageTagsItalicToggle);
+ })
+ .addText(text => {languageIconsFontText = text
+ .setPlaceholder('Font')
+ .setValue(this.plugin.settings.currentTheme.settings.header.languageTag.textFont)
+ .setDisabled(this.plugin.settings.currentTheme.settings.header.languageTag.display==="none")
+ .onChange((value) => {
+ this.plugin.settings.currentTheme.settings.header.languageTag.textFont = value;
+ (async () => {await this.plugin.saveSettings()})();
+ });
+ this.disableableComponents['headerLanguageTags'].push(languageIconsFontText);
+ })
+ .then((setting) => {this.createPickr(
+ this.plugin,containerEl,setting,
+ 'header_language_tag_text',
+ (relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors[getCurrentMode()].header.languageTag.textColor,
+ (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors[getCurrentMode()].header.languageTag.textColor = saveColor},
+ () => this.plugin.settings.currentTheme.settings.header.languageTag.display === 'none',
+ )});
+ this.disableableComponents['headerLanguageTags'].push(this.pickrs['header_language_tag_text'].resetButton);
containerEl.createEl('h5', {text: 'Header Language Icon Appearance'});
- new Setting(containerEl)
- .setName('Display Language Icons')
- .setDesc('Determine when to show language icons where available. "Title Only" will only show language tags when the title parameter is set. If set to "None", the below settings are disabled too.')
- .addDropdown((dropdown) => dropdown
- .addOptions(DISPLAY_OPTIONS)
- .setValue(this.plugin.settings.currentTheme.settings.header.languageIcon.display)
- .onChange((value: Display) => {
- this.plugin.settings.currentTheme.settings.header.languageIcon.display = value;
- this.disableableComponents['headerLanguageIcons'].forEach(component => {component.setDisabled(value==="none")});
- (async () => {await this.plugin.saveSettings()})();
- }));
- let languageIconsColoredToggle: ToggleComponent;
- new Setting(containerEl)
- .setName('Language Icons Colored')
- .setDesc('If disabled, language icons will be black and white.')
- .addToggle(toggle => {languageIconsColoredToggle = toggle
- .setValue(this.plugin.settings.currentTheme.settings.header.languageIcon.displayColor)
- .setDisabled(this.plugin.settings.currentTheme.settings.header.languageIcon.display==="none")
- .onChange((value) => {
- this.plugin.settings.currentTheme.settings.header.languageIcon.displayColor = value;
- (async () => {await this.plugin.saveSettings()})();
- })
- this.disableableComponents['headerLanguageIcons'].push(languageIconsColoredToggle);
- });
- new Setting(containerEl)
- .setName('Language Icon Size')
- .setDesc('Set the size of the displayed language icons.')
- .then((setting) => {
- let resettableSlider: SliderComponent;
- setting.addSlider((slider) => {resettableSlider = slider
- .setLimits(10,40,1)
- .setValue(this.plugin.settings.currentTheme.settings.advanced.iconSize)
- .setDisabled(this.plugin.settings.currentTheme.settings.header.languageIcon.display==="none")
- .setDynamicTooltip()
- .onChange((value) => {
- this.plugin.settings.currentTheme.settings.advanced.iconSize = value;
- (async () => {await this.plugin.saveSettings()})();
- })
- this.disableableComponents['headerLanguageIcons'].push(resettableSlider);
- });
- let resetButton: ExtraButtonComponent;
- setting.addExtraButton((button) => {resetButton = button
- .setIcon("reset")
- .setDisabled(this.plugin.settings.currentTheme.settings.header.languageIcon.display==="none")
- .onClick(() => {
- this.plugin.settings.currentTheme.settings.advanced.iconSize = this.plugin.settings.themes[this.plugin.settings.selectedTheme].settings.advanced.iconSize;
- resettableSlider.setValue(this.plugin.settings.currentTheme.settings.advanced.iconSize);
- (async () => {await this.plugin.saveSettings()})();
- })
- .setTooltip('Restore default icon size');
- this.disableableComponents['headerLanguageIcons'].push(resetButton);
- })
- })
+ new Setting(containerEl)
+ .setName('Display Language Icons')
+ .setDesc('Determine when to show language icons where available. "Title Only" will only show language tags when the title parameter is set. If set to "None", the below settings are disabled too.')
+ .addDropdown((dropdown) => dropdown
+ .addOptions(DISPLAY_OPTIONS)
+ .setValue(this.plugin.settings.currentTheme.settings.header.languageIcon.display)
+ .onChange((value: Display) => {
+ this.plugin.settings.currentTheme.settings.header.languageIcon.display = value;
+ this.disableableComponents['headerLanguageIcons'].forEach(component => {component.setDisabled(value==="none")});
+ (async () => {await this.plugin.saveSettings()})();
+ }));
+ let languageIconsColoredToggle: ToggleComponent;
+ new Setting(containerEl)
+ .setName('Language Icons Colored')
+ .setDesc('If disabled, language icons will be black and white.')
+ .addToggle(toggle => {languageIconsColoredToggle = toggle
+ .setValue(this.plugin.settings.currentTheme.settings.header.languageIcon.displayColor)
+ .setDisabled(this.plugin.settings.currentTheme.settings.header.languageIcon.display==="none")
+ .onChange((value) => {
+ this.plugin.settings.currentTheme.settings.header.languageIcon.displayColor = value;
+ (async () => {await this.plugin.saveSettings()})();
+ })
+ this.disableableComponents['headerLanguageIcons'].push(languageIconsColoredToggle);
+ });
+ new Setting(containerEl)
+ .setName('Language Icon Size')
+ .setDesc('Set the size of the displayed language icons.')
+ .then((setting) => {
+ let resettableSlider: SliderComponent;
+ setting.addSlider((slider) => {resettableSlider = slider
+ .setLimits(10,40,1)
+ .setValue(this.plugin.settings.currentTheme.settings.advanced.iconSize)
+ .setDisabled(this.plugin.settings.currentTheme.settings.header.languageIcon.display==="none")
+ .setDynamicTooltip()
+ .onChange((value) => {
+ this.plugin.settings.currentTheme.settings.advanced.iconSize = value;
+ (async () => {await this.plugin.saveSettings()})();
+ })
+ this.disableableComponents['headerLanguageIcons'].push(resettableSlider);
+ });
+ let resetButton: ExtraButtonComponent;
+ setting.addExtraButton((button) => {resetButton = button
+ .setIcon("reset")
+ .setDisabled(this.plugin.settings.currentTheme.settings.header.languageIcon.display==="none")
+ .onClick(() => {
+ this.plugin.settings.currentTheme.settings.advanced.iconSize = this.plugin.settings.themes[this.plugin.settings.selectedTheme].settings.advanced.iconSize;
+ resettableSlider.setValue(this.plugin.settings.currentTheme.settings.advanced.iconSize);
+ (async () => {await this.plugin.saveSettings()})();
+ })
+ .setTooltip('Restore default icon size');
+ this.disableableComponents['headerLanguageIcons'].push(resetButton);
+ })
+ })
containerEl.createEl('h4', {text: 'Highlighting Appearance'});
- new Setting(containerEl)
- .setName('Editor Active Line Highlight')
- .setDesc('If enabled, highlights the active line outside codeblocks.')
- .setClass('codeblock-customizer-spaced')
- .addToggle(toggle => {return toggle
- .setTooltip('Toggle editor active line highlighting')
- .setValue(this.plugin.settings.currentTheme.settings.highlights.activeEditorLine)
- .onChange((value) => {
- this.plugin.settings.currentTheme.settings.highlights.activeEditorLine = value;
- this.disableableComponents['editorActiveLineHighlight'].forEach(component => {component.setDisabled(!value)});
- (async () => {await this.plugin.saveSettings()})();
- });
- })
- .then((setting) => {this.createPickr(
- this.plugin,containerEl,setting,
- 'editor_active_line_highlight',
- (relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors[getCurrentMode()].highlights.activeEditorLineColor,
- (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors[getCurrentMode()].highlights.activeEditorLineColor = saveColor},
- () => !this.plugin.settings.currentTheme.settings.highlights.activeEditorLine,
- )});
- this.disableableComponents['editorActiveLineHighlight'].push(this.pickrs['editor_active_line_highlight'].resetButton);
- new Setting(containerEl)
- .setName('Codeblock Active Line Highlight')
- .setDesc('If enabled, highlights the active line inside codeblocks.')
- .setClass('codeblock-customizer-spaced')
- .addToggle(toggle => {return toggle
- .setValue(this.plugin.settings.currentTheme.settings.highlights.activeCodeblockLine)
- .onChange((value) => {
- this.plugin.settings.currentTheme.settings.highlights.activeCodeblockLine = value;
- this.disableableComponents['codeblockActiveLineHighlight'].forEach(component => {component.setDisabled(!value)});
- (async () => {await this.plugin.saveSettings()})();
- });
- })
- .then((setting) => {this.createPickr(
- this.plugin,containerEl,setting,
- 'codeblock_active_line_highlight',
- (relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors[getCurrentMode()].highlights.activeCodeblockLineColor,
- (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors[getCurrentMode()].highlights.activeCodeblockLineColor = saveColor},
- () => !this.plugin.settings.currentTheme.settings.highlights.activeCodeblockLine,
- )});
- this.disableableComponents['codeblockActiveLineHighlight'].push(this.pickrs['codeblock_active_line_highlight'].resetButton);
- new Setting(containerEl)
- .setName('Default Highlight Color')
- .setDesc('Used by the \'hl\' parameter.')
- .then((setting) => {this.createPickr(
- this.plugin,containerEl,setting,
- 'default_highlight',
- (relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors[getCurrentMode()].highlights.defaultColor,
- (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors[getCurrentMode()].highlights.defaultColor = saveColor},
- )});
- let newHighlightText: TextComponent;
- new Setting(containerEl)
- .setName("Add Alternative Highlight")
- .setDesc('Define a new alternative highlight name. Colors can be modified after it is added.')
- .addText(value => {newHighlightText = value
- .setPlaceholder('e.g. error, warn')
- .onChange((value) => {
- this.plugin.settings.newHighlight = value;
- });
- })
- .addButton((button) => {
- button.setButtonText("Add");
- button.onClick(() => {
- if (this.plugin.settings.newHighlight.trim() === "") {
- new Notice("Please enter a color name."); //NOSONAR
- } else if (!COLOR_NAME_REGEX.test(this.plugin.settings.newHighlight)) {
- new Notice(`"${this.plugin.settings.newHighlight}" is not a valid color name.`); //NOSONAR
- } else if (this.plugin.settings.newHighlight === 'hl') {
- new Notice("Cannot override the default highlight parameter."); //NOSONAR
- } else {
- if (this.plugin.settings.newHighlight in this.plugin.settings.currentTheme.colors.light.highlights.alternativeHighlights) {
- //todo (@mayurankv) Future: Focus on existing highlighter
- new Notice(`A highlight with the name "${this.plugin.settings.newHighlight}" already exists.`); //NOSONAR
- } else {
- const newColor = getRandomColor();
- this.plugin.settings.currentTheme.colors.light.highlights.alternativeHighlights[this.plugin.settings.newHighlight] = newColor;
- this.plugin.settings.currentTheme.colors.dark.highlights.alternativeHighlights[this.plugin.settings.newHighlight] = newColor;
- this.updateAlternativeHighlights(alternativeHighlightsContainer);
- new Notice(`Added highlight "${this.plugin.settings.newHighlight}".`); //NOSONAR
- this.plugin.settings.newHighlight = "";
- newHighlightText.setValue("");
- (async () => {await this.plugin.saveSettings()})();
- }
- }
- });
- });
- const alternativeHighlightsContainer = containerEl.createDiv()
- this.updateAlternativeHighlights(alternativeHighlightsContainer)
+ new Setting(containerEl)
+ .setName('Editor Active Line Highlight')
+ .setDesc('If enabled, highlights the active line outside codeblocks.')
+ .setClass('codeblock-customizer-spaced')
+ .addToggle(toggle => {return toggle
+ .setTooltip('Toggle editor active line highlighting')
+ .setValue(this.plugin.settings.currentTheme.settings.highlights.activeEditorLine)
+ .onChange((value) => {
+ this.plugin.settings.currentTheme.settings.highlights.activeEditorLine = value;
+ this.disableableComponents['editorActiveLineHighlight'].forEach(component => {component.setDisabled(!value)});
+ (async () => {await this.plugin.saveSettings()})();
+ });
+ })
+ .then((setting) => {this.createPickr(
+ this.plugin,containerEl,setting,
+ 'editor_active_line_highlight',
+ (relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors[getCurrentMode()].highlights.activeEditorLineColor,
+ (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors[getCurrentMode()].highlights.activeEditorLineColor = saveColor},
+ () => !this.plugin.settings.currentTheme.settings.highlights.activeEditorLine,
+ )});
+ this.disableableComponents['editorActiveLineHighlight'].push(this.pickrs['editor_active_line_highlight'].resetButton);
+ new Setting(containerEl)
+ .setName('Codeblock Active Line Highlight')
+ .setDesc('If enabled, highlights the active line inside codeblocks.')
+ .setClass('codeblock-customizer-spaced')
+ .addToggle(toggle => {return toggle
+ .setValue(this.plugin.settings.currentTheme.settings.highlights.activeCodeblockLine)
+ .onChange((value) => {
+ this.plugin.settings.currentTheme.settings.highlights.activeCodeblockLine = value;
+ this.disableableComponents['codeblockActiveLineHighlight'].forEach(component => {component.setDisabled(!value)});
+ (async () => {await this.plugin.saveSettings()})();
+ });
+ })
+ .then((setting) => {this.createPickr(
+ this.plugin,containerEl,setting,
+ 'codeblock_active_line_highlight',
+ (relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors[getCurrentMode()].highlights.activeCodeblockLineColor,
+ (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors[getCurrentMode()].highlights.activeCodeblockLineColor = saveColor},
+ () => !this.plugin.settings.currentTheme.settings.highlights.activeCodeblockLine,
+ )});
+ this.disableableComponents['codeblockActiveLineHighlight'].push(this.pickrs['codeblock_active_line_highlight'].resetButton);
+ new Setting(containerEl)
+ .setName('Default Highlight Color')
+ .setDesc('Used by the \'hl\' parameter.')
+ .then((setting) => {this.createPickr(
+ this.plugin,containerEl,setting,
+ 'default_highlight',
+ (relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors[getCurrentMode()].highlights.defaultColor,
+ (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors[getCurrentMode()].highlights.defaultColor = saveColor},
+ )});
+ let newHighlightText: TextComponent;
+ new Setting(containerEl)
+ .setName("Add Alternative Highlight")
+ .setDesc('Define a new alternative highlight name. Colors can be modified after it is added.')
+ .addText(value => {newHighlightText = value
+ .setPlaceholder('e.g. error, warn')
+ .onChange((value) => {
+ this.plugin.settings.newHighlight = value;
+ });
+ })
+ .addButton((button) => {
+ button.setButtonText("Add");
+ button.onClick(() => {
+ if (this.plugin.settings.newHighlight.trim() === "") {
+ new Notice("Please enter a color name."); //NOSONAR
+ } else if (!COLOR_NAME_REGEX.test(this.plugin.settings.newHighlight)) {
+ new Notice(`"${this.plugin.settings.newHighlight}" is not a valid color name.`); //NOSONAR
+ } else if (this.plugin.settings.newHighlight === 'hl') {
+ new Notice("Cannot override the default highlight parameter."); //NOSONAR
+ } else {
+ if (this.plugin.settings.newHighlight in this.plugin.settings.currentTheme.colors.light.highlights.alternativeHighlights) {
+ //todo (@mayurankv) Future: Focus on existing highlighter
+ new Notice(`A highlight with the name "${this.plugin.settings.newHighlight}" already exists.`); //NOSONAR
+ } else {
+ const newColor = getRandomColor();
+ this.plugin.settings.currentTheme.colors.light.highlights.alternativeHighlights[this.plugin.settings.newHighlight] = newColor;
+ this.plugin.settings.currentTheme.colors.dark.highlights.alternativeHighlights[this.plugin.settings.newHighlight] = newColor;
+ this.updateAlternativeHighlights(alternativeHighlightsContainer);
+ new Notice(`Added highlight "${this.plugin.settings.newHighlight}".`); //NOSONAR
+ this.plugin.settings.newHighlight = "";
+ newHighlightText.setValue("");
+ (async () => {await this.plugin.saveSettings()})();
+ }
+ }
+ });
+ });
+ const alternativeHighlightsContainer = containerEl.createDiv()
+ this.updateAlternativeHighlights(alternativeHighlightsContainer)
- // ========== Advanced ==========
+ // ========== Advanced ==========
containerEl.createEl('h3', {text: 'Advanced Settings'});
-
- new Setting(containerEl)
- .setName('Gradient Highlighting')
- .setDesc('If enabled, highlights fade away to the right. The slider sets the gradient color stop as a percentage.')
- .addToggle(toggle => toggle
- .setValue(this.plugin.settings.currentTheme.settings.advanced.gradientHighlights)
- .onChange((value) => {
- this.plugin.settings.currentTheme.settings.advanced.gradientHighlights = value;
- this.disableableComponents['gradientHighlighting'].forEach(component => {component.setDisabled(!value)});
- (async () => {await this.plugin.saveSettings()})();
- }))
- .then((setting) => {
- let resettableSlider: SliderComponent;
- setting.addSlider((slider) => {
- resettableSlider = slider
- .setLimits(0,100,1)
- .setValue(+this.plugin.settings.currentTheme.settings.advanced.gradientHighlightsColorStop.slice(0,-1))
- .setDynamicTooltip()
- .onChange((value) => {
- this.plugin.settings.currentTheme.settings.advanced.gradientHighlightsColorStop = `${value}%`;
- (async () => {await this.plugin.saveSettings()})();
- })});
- let resetButton: ExtraButtonComponent;
- setting.addExtraButton((button) => {resetButton = button
- .setIcon("reset")
- .onClick(() => {
- this.plugin.settings.currentTheme.settings.advanced.gradientHighlightsColorStop = this.plugin.settings.themes[this.plugin.settings.selectedTheme].settings.advanced.gradientHighlightsColorStop;
- resettableSlider.setValue(+this.plugin.settings.currentTheme.settings.advanced.gradientHighlightsColorStop.slice(0,-1));
- (async () => {await this.plugin.saveSettings()})();
- })
- .setTooltip('Restore default color stop');
- this.disableableComponents['gradientHighlighting'].push(resettableSlider);
- this.disableableComponents['gradientHighlighting'].push(resetButton);
- })
- })
- new Setting(containerEl)
- .setName('Language Colored Borders')
- .setDesc('If enabled, languages with icons display a left border with the color of the icon.')
- .addToggle((toggle) => toggle
- .setValue(this.plugin.settings.currentTheme.settings.advanced.languageBorderColor)
- .onChange((value) => {
- this.plugin.settings.currentTheme.settings.advanced.languageBorderColor = value;
- (async () => {await this.plugin.saveSettings()})();
- }))
+
+ new Setting(containerEl)
+ .setName('Gradient Highlighting')
+ .setDesc('If enabled, highlights fade away to the right. The slider sets the gradient color stop as a percentage.')
+ .addToggle(toggle => toggle
+ .setValue(this.plugin.settings.currentTheme.settings.advanced.gradientHighlights)
+ .onChange((value) => {
+ this.plugin.settings.currentTheme.settings.advanced.gradientHighlights = value;
+ this.disableableComponents['gradientHighlighting'].forEach(component => {component.setDisabled(!value)});
+ (async () => {await this.plugin.saveSettings()})();
+ }))
+ .then((setting) => {
+ let resettableSlider: SliderComponent;
+ setting.addSlider((slider) => {
+ resettableSlider = slider
+ .setLimits(0,100,1)
+ .setValue(+this.plugin.settings.currentTheme.settings.advanced.gradientHighlightsColorStop.slice(0,-1))
+ .setDynamicTooltip()
+ .onChange((value) => {
+ this.plugin.settings.currentTheme.settings.advanced.gradientHighlightsColorStop = `${value}%`;
+ (async () => {await this.plugin.saveSettings()})();
+ })});
+ let resetButton: ExtraButtonComponent;
+ setting.addExtraButton((button) => {resetButton = button
+ .setIcon("reset")
+ .onClick(() => {
+ this.plugin.settings.currentTheme.settings.advanced.gradientHighlightsColorStop = this.plugin.settings.themes[this.plugin.settings.selectedTheme].settings.advanced.gradientHighlightsColorStop;
+ resettableSlider.setValue(+this.plugin.settings.currentTheme.settings.advanced.gradientHighlightsColorStop.slice(0,-1));
+ (async () => {await this.plugin.saveSettings()})();
+ })
+ .setTooltip('Restore default color stop');
+ this.disableableComponents['gradientHighlighting'].push(resettableSlider);
+ this.disableableComponents['gradientHighlighting'].push(resetButton);
+ })
+ })
+ new Setting(containerEl)
+ .setName('Language Colored Borders')
+ .setDesc('If enabled, languages with icons display a left border with the color of the icon.')
+ .addToggle((toggle) => toggle
+ .setValue(this.plugin.settings.currentTheme.settings.advanced.languageBorderColor)
+ .onChange((value) => {
+ this.plugin.settings.currentTheme.settings.advanced.languageBorderColor = value;
+ (async () => {await this.plugin.saveSettings()})();
+ }))
- // ========== Donation ==========
- const donationDiv = containerEl.createEl("div", { cls: "codeblock-customizer-donation", });
- const donationText = createEl("p");
- const donationButton = createEl("a", { href: "https://www.buymeacoffee.com/ThePirateKing"});
-
- donationText.appendText("If you like this plugin, and would like to help support continued development, use the button below!");
- donationButton.innerHTML = `
`;
-
- donationDiv.appendChild(donationText);
- donationDiv.appendChild(donationButton);
+ // ========== Donation ==========
+ const donationDiv = containerEl.createEl("div", { cls: "codeblock-customizer-donation", });
+ const donationText = createEl("p");
+ const donationButton = createEl("a", { href: "https://www.buymeacoffee.com/ThePirateKing"});
+
+ donationText.appendText("If you like this plugin, and would like to help support continued development, use the button below!");
+ donationButton.innerHTML = `
`;
+
+ donationDiv.appendChild(donationText);
+ donationDiv.appendChild(donationButton);
}//display
- // Setting Creation
- createPickr(plugin: CodeblockCustomizerPlugin, containerEl: HTMLElement, setting: Setting, id: string, getRelevantThemeColor: (relevantThemeColors: CodeblockCustomizerThemeColors)=>Color, saveRelevantThemeColor: (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color)=>void, disabled?: ()=>boolean) {
- let pickr: PickrResettable = new PickrResettable(plugin,containerEl,setting,getRelevantThemeColor,saveRelevantThemeColor);
- pickr
- .on('show', (color: Pickr.HSVaColor, instance: Pickr) => {
- if (typeof disabled !== 'undefined' && disabled())
- instance.hide()
- requestAnimationFrame(() => requestAnimationFrame(() => (instance.getRoot() as any).interaction.result.select()))
- })
- .on('save', (color: Pickr.HSVaColor, instance: PickrResettable) => {
- const savedColor: Color = `#${color.toHEXA().toString().substring(1)}`;
- instance.hide();
- instance.addSwatch(savedColor);
- instance.saveColor(savedColor);
- })
- .on('cancel', (instance: PickrResettable) => {instance.hide()});
- setting.addExtraButton((button) => {pickr.resetButton = button
- .setIcon("reset")
- .setDisabled(typeof disabled !== 'undefined' && disabled())
- .setTooltip('Restore default color')
- .onClick(() => {pickr.resetColor()});
- });
- this.pickrs[id]=pickr;
- }
- createDualPickr(plugin: CodeblockCustomizerPlugin, containerEl: HTMLElement, setting: Setting, id: string, getRelevantThemeColors: Record<'light'|'dark',(relevantThemeColors: CodeblockCustomizerThemeColors)=>Color>, saveRelevantThemeColors: Record<'light'|'dark',(relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color)=>void>, resetEnabled: ()=>boolean) {
- let lightPickr: PickrResettable = new PickrResettable(plugin,containerEl,setting,getRelevantThemeColors.light,saveRelevantThemeColors.light,'Select color for light theme');
- lightPickr
- .on('show', (color: Pickr.HSVaColor, instance: Pickr) => {requestAnimationFrame(() => requestAnimationFrame(() => (instance.getRoot() as any).interaction.result.select()))})
- .on('save', (color: Pickr.HSVaColor, instance: PickrResettable) => {
- const savedColor: Color = `#${color.toHEXA().toString().substring(1)}`;
- instance.hide();
- instance.addSwatch(savedColor);
- instance.saveColor(savedColor);
- })
- .on('cancel', (instance: PickrResettable) => {instance.hide()});
- let darkPickr: PickrResettable = new PickrResettable(plugin,containerEl,setting,getRelevantThemeColors.dark,saveRelevantThemeColors.dark,'Select color for dark theme');
- darkPickr
- .on('show', (color: Pickr.HSVaColor, instance: Pickr) => {requestAnimationFrame(() => requestAnimationFrame(() => (instance.getRoot() as any).interaction.result.select()))})
- .on('save', (color: Pickr.HSVaColor, instance: PickrResettable) => {
- const savedColor: Color = `#${color.toHEXA().toString().substring(1)}`;
- instance.hide();
- instance.addSwatch(savedColor);
- instance.saveColor(savedColor);
- })
- .on('cancel', (instance: PickrResettable) => {instance.hide()});
- setting.addExtraButton((button) => {let resetButton = button
- .setIcon("reset")
- .setTooltip('Restore default color')
- .setDisabled(!resetEnabled())
- .onClick(() => {
- lightPickr.resetColor();
- darkPickr.resetColor();
- });
- lightPickr.resetButton = resetButton;
- darkPickr.resetButton = resetButton;
- });
- this.pickrs[`${id}_light`]=lightPickr;
- this.pickrs[`${id}_dark`]=darkPickr;
- }
+ // Setting Creation
+ createPickr(plugin: CodeblockCustomizerPlugin, containerEl: HTMLElement, setting: Setting, id: string, getRelevantThemeColor: (relevantThemeColors: CodeblockCustomizerThemeColors)=>Color, saveRelevantThemeColor: (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color)=>void, disabled?: ()=>boolean) {
+ let pickr: PickrResettable = new PickrResettable(plugin,containerEl,setting,getRelevantThemeColor,saveRelevantThemeColor);
+ pickr
+ .on('show', (color: Pickr.HSVaColor, instance: Pickr) => {
+ if (typeof disabled !== 'undefined' && disabled())
+ instance.hide()
+ requestAnimationFrame(() => requestAnimationFrame(() => (instance.getRoot() as any).interaction.result.select()))
+ })
+ .on('save', (color: Pickr.HSVaColor, instance: PickrResettable) => {
+ const savedColor: Color = `#${color.toHEXA().toString().substring(1)}`;
+ instance.hide();
+ instance.addSwatch(savedColor);
+ instance.saveColor(savedColor);
+ })
+ .on('cancel', (instance: PickrResettable) => {instance.hide()});
+ setting.addExtraButton((button) => {pickr.resetButton = button
+ .setIcon("reset")
+ .setDisabled(typeof disabled !== 'undefined' && disabled())
+ .setTooltip('Restore default color')
+ .onClick(() => {pickr.resetColor()});
+ });
+ this.pickrs[id]=pickr;
+ }
+ createDualPickr(plugin: CodeblockCustomizerPlugin, containerEl: HTMLElement, setting: Setting, id: string, getRelevantThemeColors: Record<'light'|'dark',(relevantThemeColors: CodeblockCustomizerThemeColors)=>Color>, saveRelevantThemeColors: Record<'light'|'dark',(relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color)=>void>, resetEnabled: ()=>boolean) {
+ let lightPickr: PickrResettable = new PickrResettable(plugin,containerEl,setting,getRelevantThemeColors.light,saveRelevantThemeColors.light,'Select color for light theme');
+ lightPickr
+ .on('show', (color: Pickr.HSVaColor, instance: Pickr) => {requestAnimationFrame(() => requestAnimationFrame(() => (instance.getRoot() as any).interaction.result.select()))})
+ .on('save', (color: Pickr.HSVaColor, instance: PickrResettable) => {
+ const savedColor: Color = `#${color.toHEXA().toString().substring(1)}`;
+ instance.hide();
+ instance.addSwatch(savedColor);
+ instance.saveColor(savedColor);
+ })
+ .on('cancel', (instance: PickrResettable) => {instance.hide()});
+ let darkPickr: PickrResettable = new PickrResettable(plugin,containerEl,setting,getRelevantThemeColors.dark,saveRelevantThemeColors.dark,'Select color for dark theme');
+ darkPickr
+ .on('show', (color: Pickr.HSVaColor, instance: Pickr) => {requestAnimationFrame(() => requestAnimationFrame(() => (instance.getRoot() as any).interaction.result.select()))})
+ .on('save', (color: Pickr.HSVaColor, instance: PickrResettable) => {
+ const savedColor: Color = `#${color.toHEXA().toString().substring(1)}`;
+ instance.hide();
+ instance.addSwatch(savedColor);
+ instance.saveColor(savedColor);
+ })
+ .on('cancel', (instance: PickrResettable) => {instance.hide()});
+ setting.addExtraButton((button) => {let resetButton = button
+ .setIcon("reset")
+ .setTooltip('Restore default color')
+ .setDisabled(!resetEnabled())
+ .onClick(() => {
+ lightPickr.resetColor();
+ darkPickr.resetColor();
+ });
+ lightPickr.resetButton = resetButton;
+ darkPickr.resetButton = resetButton;
+ });
+ this.pickrs[`${id}_light`]=lightPickr;
+ this.pickrs[`${id}_dark`]=darkPickr;
+ }
- // Setting Updates
- updateDropdown(dropdown: DropdownComponent, settings: CodeblockCustomizerSettings) {
- dropdown.selectEl.empty();
- Object.keys(settings.themes).forEach((theme_name: string) => {
- dropdown.addOption(theme_name, theme_name);
- })
- dropdown.setValue(settings.selectedTheme);
- }
- updatePickrColors() {
- Object.entries(this.pickrs).forEach(([id,pickr]) => {pickr.resetColor()})
- }
- updateAlternativeHighlights(alternativeHighlightsContainer: HTMLDivElement) {
- alternativeHighlightsContainer.empty();
- Object.keys(this.plugin.settings.currentTheme.colors.light.highlights.alternativeHighlights).forEach((alternativeHighlightName) => {
- new Setting(alternativeHighlightsContainer)
- .setName(alternativeHighlightName)
- .setDesc(`To highlight lines with this highlight, use the ${alternativeHighlightName} parameter.`)
- .then((setting) => {
- this.createDualPickr(
- this.plugin,alternativeHighlightsContainer,setting,
- `alternative_highlight_${alternativeHighlightName}`,
- {
- 'light':(relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors.light.highlights.alternativeHighlights[alternativeHighlightName],
- 'dark':(relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors.dark.highlights.alternativeHighlights[alternativeHighlightName],
- },
- {
- 'light':(relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors.light.highlights.alternativeHighlights[alternativeHighlightName] = saveColor},
- 'dark':(relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors.dark.highlights.alternativeHighlights[alternativeHighlightName] = saveColor},
- },
- () => alternativeHighlightName in this.plugin.settings.themes[this.plugin.settings.selectedTheme].colors.light.highlights.alternativeHighlights,
- );
- setting.addExtraButton((button) => {button
- .setIcon("trash")
- .setTooltip("Delete highlight")
- .onClick(() => {
- delete this.plugin.settings.currentTheme.colors.light.highlights.alternativeHighlights[alternativeHighlightName]
- delete this.plugin.settings.currentTheme.colors.dark.highlights.alternativeHighlights[alternativeHighlightName]
- new Notice(`Removed highlight "${alternativeHighlightName}".`); //NOSONAR
- this.updateAlternativeHighlights(alternativeHighlightsContainer);
- (async () => {await this.plugin.saveSettings()})();
- });
- });
- })
- })
- }
+ // Setting Updates
+ updateDropdown(dropdown: DropdownComponent, settings: CodeblockCustomizerSettings) {
+ dropdown.selectEl.empty();
+ Object.keys(settings.themes).forEach((theme_name: string) => {
+ dropdown.addOption(theme_name, theme_name);
+ })
+ dropdown.setValue(settings.selectedTheme);
+ }
+ updatePickrColors() {
+ Object.entries(this.pickrs).forEach(([id,pickr]) => {pickr.resetColor()})
+ }
+ updateAlternativeHighlights(alternativeHighlightsContainer: HTMLDivElement) {
+ alternativeHighlightsContainer.empty();
+ Object.keys(this.plugin.settings.currentTheme.colors.light.highlights.alternativeHighlights).forEach((alternativeHighlightName) => {
+ new Setting(alternativeHighlightsContainer)
+ .setName(alternativeHighlightName)
+ .setDesc(`To highlight lines with this highlight, use the ${alternativeHighlightName} parameter.`)
+ .then((setting) => {
+ this.createDualPickr(
+ this.plugin,alternativeHighlightsContainer,setting,
+ `alternative_highlight_${alternativeHighlightName}`,
+ {
+ 'light':(relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors.light.highlights.alternativeHighlights[alternativeHighlightName],
+ 'dark':(relevantThemeColors: CodeblockCustomizerThemeColors) => relevantThemeColors.dark.highlights.alternativeHighlights[alternativeHighlightName],
+ },
+ {
+ 'light':(relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors.light.highlights.alternativeHighlights[alternativeHighlightName] = saveColor},
+ 'dark':(relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color) => {relevantThemeColors.dark.highlights.alternativeHighlights[alternativeHighlightName] = saveColor},
+ },
+ () => alternativeHighlightName in this.plugin.settings.themes[this.plugin.settings.selectedTheme].colors.light.highlights.alternativeHighlights,
+ );
+ setting.addExtraButton((button) => {button
+ .setIcon("trash")
+ .setTooltip("Delete highlight")
+ .onClick(() => {
+ delete this.plugin.settings.currentTheme.colors.light.highlights.alternativeHighlights[alternativeHighlightName]
+ delete this.plugin.settings.currentTheme.colors.dark.highlights.alternativeHighlights[alternativeHighlightName]
+ new Notice(`Removed highlight "${alternativeHighlightName}".`); //NOSONAR
+ this.updateAlternativeHighlights(alternativeHighlightsContainer);
+ (async () => {await this.plugin.saveSettings()})();
+ });
+ });
+ })
+ })
+ }
}// SettingsTab
class PickrResettable extends Pickr {
- saveColor: (saveColor: Color)=>void;
- resetColor: ()=>void;
- getCurrentColor: (accessTheme: boolean)=>void;
- resetButton: ExtraButtonComponent;
+ saveColor: (saveColor: Color)=>void;
+ resetColor: ()=>void;
+ getCurrentColor: (accessTheme: boolean)=>void;
+ resetButton: ExtraButtonComponent;
- constructor(plugin: CodeblockCustomizerPlugin, containerEl: HTMLElement, setting: Setting, getRelevantThemeColor: (relevantThemeColors: CodeblockCustomizerThemeColors)=>Color, saveRelevantThemeColor: (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color)=>void, tooltip?: string) {
- const settings: Pickr.Options = {
- el: setting.controlEl.createDiv({cls: "picker"}),
- theme: 'nano',
- default: getColor(getRelevantThemeColor(plugin.settings.currentTheme.colors)),
- position: "left-middle",
- lockOpacity: false,
- components: {
- preview: true,
- hue: true,
- opacity: true,
- interaction: {
- hex: true,
- rgba: true,
- hsla: false,
- input: true,
- cancel: true,
- save: true,
- },
- },
- i18n: {
- 'ui:dialog': 'Color picker dialog',
- 'btn:toggle': (typeof tooltip !== 'undefined')?tooltip:'Select color',
- 'btn:swatch': 'Color swatch',
- 'btn:last-color': 'Use previous color',
- }
- };
- if (containerEl.parentElement !== null)
- settings.container = containerEl.parentElement;
- super(settings);
- this.saveColor = (saveColor: Color) => {
- saveRelevantThemeColor(plugin.settings.currentTheme.colors,saveColor);
- (async () => {await plugin.saveSettings()})();
- };
- this.resetColor = () => {
- const resetColor: Color = getRelevantThemeColor(plugin.settings.themes[plugin.settings.selectedTheme].colors);
- this.setColor(getColor(resetColor));
- this.saveColor(resetColor);
- };
- }
+ constructor(plugin: CodeblockCustomizerPlugin, containerEl: HTMLElement, setting: Setting, getRelevantThemeColor: (relevantThemeColors: CodeblockCustomizerThemeColors)=>Color, saveRelevantThemeColor: (relevantThemeColors: CodeblockCustomizerThemeColors, saveColor: Color)=>void, tooltip?: string) {
+ const settings: Pickr.Options = {
+ el: setting.controlEl.createDiv({cls: "picker"}),
+ theme: 'nano',
+ default: getColor(getRelevantThemeColor(plugin.settings.currentTheme.colors)),
+ position: "left-middle",
+ lockOpacity: false,
+ components: {
+ preview: true,
+ hue: true,
+ opacity: true,
+ interaction: {
+ hex: true,
+ rgba: true,
+ hsla: false,
+ input: true,
+ cancel: true,
+ save: true,
+ },
+ },
+ i18n: {
+ 'ui:dialog': 'Color picker dialog',
+ 'btn:toggle': (typeof tooltip !== 'undefined')?tooltip:'Select color',
+ 'btn:swatch': 'Color swatch',
+ 'btn:last-color': 'Use previous color',
+ }
+ };
+ if (containerEl.parentElement !== null)
+ settings.container = containerEl.parentElement;
+ super(settings);
+ this.saveColor = (saveColor: Color) => {
+ saveRelevantThemeColor(plugin.settings.currentTheme.colors,saveColor);
+ (async () => {await plugin.saveSettings()})();
+ };
+ this.resetColor = () => {
+ const resetColor: Color = getRelevantThemeColor(plugin.settings.themes[plugin.settings.selectedTheme].colors);
+ this.setColor(getColor(resetColor));
+ this.saveColor(resetColor);
+ };
+ }
}
// Color Management
function getRandomColor(): Color {
- const letters = "0123456789ABCDEF";
- let color = "";
- for (let i = 0; i < 6; i++)
- color += letters[Math.floor(Math.random() * 16)];
- return `#${color}FF`;
+ const letters = "0123456789ABCDEF";
+ let color = "";
+ for (let i = 0; i < 6; i++)
+ color += letters[Math.floor(Math.random() * 16)];
+ return `#${color}FF`;
}
function isCss(possibleCss: string): possibleCss is CSS {
- return possibleCss.startsWith('--') && typeof possibleCss === 'string';
+ return possibleCss.startsWith('--') && typeof possibleCss === 'string';
}
function calc(calcString: string): string {
- const splitString = calcString.replace(/(\d*)%/g,'$1').split(' ');
- const operators: {[key: string]: (num1:number, num2:number) => number} = {
- '+': (num1:number, num2:number):number => Math.max(num1+num2,0),
- '-': (num1:number ,num2:number):number => Math.max(num1-num2,0),
- }
- if (splitString.length === 3)
- if (splitString[1] in operators){
- return `${operators[splitString[1]](parseFloat(splitString[0]),parseFloat(splitString[2]))}%`
- }
- console.log('Warning: Couldn\'t parse calc string');
- return calcString;
+ const splitString = calcString.replace(/(\d*)%/g,'$1').split(' ');
+ const operators: {[key: string]: (num1:number, num2:number) => number} = {
+ '+': (num1:number, num2:number):number => Math.max(num1+num2,0),
+ '-': (num1:number ,num2:number):number => Math.max(num1-num2,0),
+ }
+ if (splitString.length === 3)
+ if (splitString[1] in operators){
+ return `${operators[splitString[1]](parseFloat(splitString[0]),parseFloat(splitString[2]))}%`
+ }
+ console.log('Warning: Couldn\'t parse calc string');
+ return calcString;
}
function getCssVariable(cssVariable: CSS): HEX {
- let variableValue = window.getComputedStyle(document.body).getPropertyValue(cssVariable).trim();
- if (typeof variableValue === "string" && variableValue.trim().startsWith('#'))
- return `#${variableValue.trim().substring(1)}`;
- else if (variableValue.startsWith('rgb'))
- return `#${ColorTranslator.toHEXA(variableValue.replace(/calc\((.*?)\)/g,(match,capture)=>calc(capture))).substring(1)}`;
- else if (variableValue.startsWith('hsl'))
- return `#${ColorTranslator.toHEXA(variableValue.replace(/calc\((.*?)\)/g,(match,capture)=>calc(capture))).substring(1)}`;
- else {
- console.log(`Warning: Couldn't determine color format - ${variableValue}`);
- }
- return `#${ColorTranslator.toHEXA(variableValue).substring(1)}`;
+ let variableValue = window.getComputedStyle(document.body).getPropertyValue(cssVariable).trim();
+ if (typeof variableValue === "string" && variableValue.trim().startsWith('#'))
+ return `#${variableValue.trim().substring(1)}`;
+ else if (variableValue.startsWith('rgb'))
+ return `#${ColorTranslator.toHEXA(variableValue.replace(/calc\((.*?)\)/g,(match,capture)=>calc(capture))).substring(1)}`;
+ else if (variableValue.startsWith('hsl'))
+ return `#${ColorTranslator.toHEXA(variableValue.replace(/calc\((.*?)\)/g,(match,capture)=>calc(capture))).substring(1)}`;
+ else {
+ console.log(`Warning: Couldn't determine color format - ${variableValue}`);
+ }
+ return `#${ColorTranslator.toHEXA(variableValue).substring(1)}`;
}
export function getColor(themeColor: Color): Color {
- return isCss(themeColor)?getCssVariable(themeColor):themeColor;;
+ return isCss(themeColor)?getCssVariable(themeColor):themeColor;;
}
// Regex Tests
-const COLOR_NAME_REGEX = /^[^\d]\w*$/
\ No newline at end of file
+const COLOR_NAME_REGEX = /^[^\d]\w*$/
diff --git a/src/Utils.ts b/src/Utils.ts
index 5c43587..1d5a389 100644
--- a/src/Utils.ts
+++ b/src/Utils.ts
@@ -2,342 +2,342 @@ import { Languages, manualLang, Icons } from "./Const";
import { CodeblockCustomizerSettings } from "./Settings";
export function splitAndTrimString(str) {
- if (!str) {
- return [];
- }
-
- // Replace * with .*
- str = str.replace(/\*/g, '.*');
-
- if (!str.includes(",")) {
- return [str];
- }
-
- return str.split(",").map(s => s.trim());
+ if (!str) {
+ return [];
+ }
+
+ // Replace * with .*
+ str = str.replace(/\*/g, '.*');
+
+ if (!str.includes(",")) {
+ return [str];
+ }
+
+ return str.split(",").map(s => s.trim());
}// splitAndTrimString
export function searchString(str, searchTerm) {
- const originalStr = str;
- str = str.toLowerCase();
- searchTerm = searchTerm.toLowerCase();
- if (searchTerm === "file:") {
- if (str.includes(searchTerm)) {
- const startIndex = str.indexOf(searchTerm) + searchTerm.length;
- let result = "";
- if (str[startIndex] === "\"") {
- const endIndex = str.indexOf("\"", startIndex + 1);
- if (endIndex !== -1) {
- result = originalStr.substring(startIndex + 1, endIndex);
- } else {
- result = originalStr.substring(startIndex + 1);
- }
- } else {
- const endIndex = str.indexOf(" ", startIndex);
- if (endIndex !== -1) {
- result = originalStr.substring(startIndex, endIndex);
- } else {
- result = originalStr.substring(startIndex);
- }
- }
- return result.trim();
- }
- } else if (searchTerm === "```") {
- if (str.startsWith(searchTerm)) {
- const startIndex = searchTerm.length;
- const endIndex = str.indexOf(" ", startIndex);
- let word = "";
- if (endIndex !==-1) {
- word = originalStr.substring(startIndex, endIndex);
- } else {
- word = originalStr.substring(startIndex);
- }
- if (!word.includes(":")) {
- if (word.toLowerCase() === "fold")
- return null;
- else
- return word;
- }
- }
- } else if (searchTerm === 'fold') {
- if (str.includes(" fold ")) {
- return true;
- }
- const index = str.indexOf(searchTerm);
- if (index !== -1 && index === str.length - searchTerm.length && str[index - 1] === " ") {
- return true;
- }
- if (str.includes("```fold ")) {
- return true;
- }
- if (str.includes("```fold") && str.indexOf("```fold") + "```fold".length === str.length) {
- return true;
- }
- return false;
- } else {
- if (str.includes(searchTerm)) {
- const startIndex = str.indexOf(searchTerm) + searchTerm.length;
- const endIndex = str.indexOf(" ", startIndex);
- if (endIndex !== -1) {
- return originalStr.substring(startIndex, endIndex).trim();
- } else {
- return originalStr.substring(startIndex).trim();
- }
- }
- }
-
- return null;
+ const originalStr = str;
+ str = str.toLowerCase();
+ searchTerm = searchTerm.toLowerCase();
+ if (searchTerm === "file:") {
+ if (str.includes(searchTerm)) {
+ const startIndex = str.indexOf(searchTerm) + searchTerm.length;
+ let result = "";
+ if (str[startIndex] === "\"") {
+ const endIndex = str.indexOf("\"", startIndex + 1);
+ if (endIndex !== -1) {
+ result = originalStr.substring(startIndex + 1, endIndex);
+ } else {
+ result = originalStr.substring(startIndex + 1);
+ }
+ } else {
+ const endIndex = str.indexOf(" ", startIndex);
+ if (endIndex !== -1) {
+ result = originalStr.substring(startIndex, endIndex);
+ } else {
+ result = originalStr.substring(startIndex);
+ }
+ }
+ return result.trim();
+ }
+ } else if (searchTerm === "```") {
+ if (str.startsWith(searchTerm)) {
+ const startIndex = searchTerm.length;
+ const endIndex = str.indexOf(" ", startIndex);
+ let word = "";
+ if (endIndex !==-1) {
+ word = originalStr.substring(startIndex, endIndex);
+ } else {
+ word = originalStr.substring(startIndex);
+ }
+ if (!word.includes(":")) {
+ if (word.toLowerCase() === "fold")
+ return null;
+ else
+ return word;
+ }
+ }
+ } else if (searchTerm === 'fold') {
+ if (str.includes(" fold ")) {
+ return true;
+ }
+ const index = str.indexOf(searchTerm);
+ if (index !== -1 && index === str.length - searchTerm.length && str[index - 1] === " ") {
+ return true;
+ }
+ if (str.includes("```fold ")) {
+ return true;
+ }
+ if (str.includes("```fold") && str.indexOf("```fold") + "```fold".length === str.length) {
+ return true;
+ }
+ return false;
+ } else {
+ if (str.includes(searchTerm)) {
+ const startIndex = str.indexOf(searchTerm) + searchTerm.length;
+ const endIndex = str.indexOf(" ", startIndex);
+ if (endIndex !== -1) {
+ return originalStr.substring(startIndex, endIndex).trim();
+ } else {
+ return originalStr.substring(startIndex).trim();
+ }
+ }
+ }
+
+ return null;
}//searchString
export function getHighlightedLines(params: string): number[] {
- if (!params) {
- return [];
- }
+ if (!params) {
+ return [];
+ }
- const trimmedParams = params.trim();
- const lines = trimmedParams.split(",");
+ const trimmedParams = params.trim();
+ const lines = trimmedParams.split(",");
- return lines.map(line => {
- if (line.includes("-")) {
- const range = line.split("-");
- const start = parseInt(range[0], 10);
- const end = parseInt(range[1], 10);
- return Array.from({ length: end - start + 1 }, (_, i) => start + i);
- }
- return parseInt(line, 10);
- }).flat();
+ return lines.map(line => {
+ if (line.includes("-")) {
+ const range = line.split("-");
+ const start = parseInt(range[0], 10);
+ const end = parseInt(range[1], 10);
+ return Array.from({ length: end - start + 1 }, (_, i) => start + i);
+ }
+ return parseInt(line, 10);
+ }).flat();
}// getHighlightedLines
export function isExcluded(lineText: string, excludeLangs: string[]) : boolean {
- const codeBlockLang = searchString(lineText, "```");
- const regexLangs = splitAndTrimString(excludeLangs).map(lang => new RegExp(`^${lang.replace(/\*/g, '.*')}$`, 'i'));
-
- for (const regexLang of regexLangs) {
- if (codeBlockLang && regexLang.test(codeBlockLang)) {
- return true;
- }
- }
-
- return false;
+ const codeBlockLang = searchString(lineText, "```");
+ const regexLangs = splitAndTrimString(excludeLangs).map(lang => new RegExp(`^${lang.replace(/\*/g, '.*')}$`, 'i'));
+
+ for (const regexLang of regexLangs) {
+ if (codeBlockLang && regexLang.test(codeBlockLang)) {
+ return true;
+ }
+ }
+
+ return false;
}// isExcluded
export function getLanguageIcon(DisplayName) {
- if (!DisplayName)
- return "";
-
- if (Icons.hasOwnProperty(DisplayName)) {
- return Icons[DisplayName];
- }
-
- return null;
+ if (!DisplayName)
+ return "";
+
+ if (Icons.hasOwnProperty(DisplayName)) {
+ return Icons[DisplayName];
+ }
+
+ return null;
}// getLanguageIcon
export function getLanguageName(code) {
- if (!code)
- return "";
-
- code = code.toLowerCase();
-
- if (Languages.hasOwnProperty(code)) {
- return Languages[code];
- } else if (manualLang.hasOwnProperty(code)) {
- return manualLang[code];
- } else if (code){
- return code.charAt(0).toUpperCase() + code.slice(1);
- }
-
- return "";
+ if (!code)
+ return "";
+
+ code = code.toLowerCase();
+
+ if (Languages.hasOwnProperty(code)) {
+ return Languages[code];
+ } else if (manualLang.hasOwnProperty(code)) {
+ return manualLang[code];
+ } else if (code){
+ return code.charAt(0).toUpperCase() + code.slice(1);
+ }
+
+ return "";
}// getLanguageName
export const BLOBS: Record = {};
export function loadIcons(){
- for (const [key, value] of Object.entries(Icons)) {
- BLOBS[key.replace(/\s/g, "_")] = URL.createObjectURL(new Blob([``], { type: "image/svg+xml" }));
- }
+ for (const [key, value] of Object.entries(Icons)) {
+ BLOBS[key.replace(/\s/g, "_")] = URL.createObjectURL(new Blob([``], { type: "image/svg+xml" }));
+ }
}// loadIcons
// Functions for displaying header BEGIN
export function createContainer(specific: boolean) {
- const container = document.createElement("div");
- container.classList.add(`codeblock-customizer-header-container${specific?'-specific':''}`);
- return container;
+ const container = document.createElement("div");
+ container.classList.add(`codeblock-customizer-header-container${specific?'-specific':''}`);
+ return container;
}// createContainer
export function createCodeblockLang(lang: string) {
- const codeblockLang = document.createElement("div");
- codeblockLang.innerText = lang;
- codeblockLang.classList.add(`codeblock-customizer-header-language-tag-${getLanguageName(lang).toLowerCase()}`);
- return codeblockLang;
+ const codeblockLang = document.createElement("div");
+ codeblockLang.innerText = lang;
+ codeblockLang.classList.add(`codeblock-customizer-header-language-tag-${getLanguageName(lang).toLowerCase()}`);
+ return codeblockLang;
}// createCodeblockLang
export function createCodeblockIcon(displayLang: string) {
- const div = document.createElement("div");
- const img = document.createElement("img");
- img.classList.add("codeblock-customizer-icon");
- img.width = 28; //32
- img.src = BLOBS[displayLang.replace(/\s/g, "_")];
+ const div = document.createElement("div");
+ const img = document.createElement("img");
+ img.classList.add("codeblock-customizer-icon");
+ img.width = 28; //32
+ img.src = BLOBS[displayLang.replace(/\s/g, "_")];
- div.appendChild(img);
-
- return div;
+ div.appendChild(img);
+
+ return div;
}// createCodeblockIcon
export function createFileName(text: string) {
- const fileName = document.createElement("div");
- fileName.innerText = text;
- fileName.classList.add("codeblock-customizer-header-text");
- return fileName;
+ const fileName = document.createElement("div");
+ fileName.innerText = text;
+ fileName.classList.add("codeblock-customizer-header-text");
+ return fileName;
}// createFileName
// Functions for displaying header END
const stylesDict = {
- activeCodeBlockLineColor: 'codeblock-active-line-color',
- activeLineColor: 'editor-active-line-color',
- backgroundColor: 'codeblock-background-color',
- highlightColor: 'highlight-color',
- headerColor: 'header-background-color',
- headerTextColor: 'header-text-color',
- headerLineColor: 'header-line-color',
- gutterTextColor: 'gutter-text-color',
- gutterBackgroundColor: 'gutter-background-color',
- codeBlockLangColor: 'language-tag-text-color',
- codeBlockLangBackgroundColor: 'language-tag-background-color',
+ activeCodeBlockLineColor: 'codeblock-active-line-color',
+ activeLineColor: 'editor-active-line-color',
+ backgroundColor: 'codeblock-background-color',
+ highlightColor: 'highlight-color',
+ headerColor: 'header-background-color',
+ headerTextColor: 'header-text-color',
+ headerLineColor: 'header-line-color',
+ gutterTextColor: 'gutter-text-color',
+ gutterBackgroundColor: 'gutter-background-color',
+ codeBlockLangColor: 'language-tag-text-color',
+ codeBlockLangBackgroundColor: 'language-tag-background-color',
}
export function updateSettingStyles(settings: CodeblockCustomizerSettings) {
- let colorThemes = settings.colorThemes;
- let styleId = 'codeblock-customizer-styles'
- let styleTag = document.getElementById(styleId);
- if (typeof(styleTag) == 'undefined' || styleTag == null) {
- styleTag = document.createElement('style');
- styleTag.id = styleId;
- document.getElementsByTagName('head')[0].appendChild(styleTag);
- }
- let currentMode = getCurrentMode()
- let defaultColors = settings.colorThemes.find((theme) => {return theme['name'] == `${currentMode.charAt(0).toUpperCase()+currentMode.slice(1)} Theme`})['colors'];
- let themeColors = settings.colorThemes.find((theme) => {return theme['name'] == settings.SelectedTheme})['colors'];
- let currentTheme = {name: 'current', colors: {}};
- for (const key of Object.keys(stylesDict)) {
- let defaultValue = accessSetting(key,defaultColors).toLowerCase();
- let themeValue = accessSetting(key,themeColors).toLowerCase();
- let settingsValue = accessSetting(key,settings).toLowerCase();
- if (defaultValue !== settingsValue) {
- currentTheme['colors'][key] = settingsValue;
- } else if (defaultValue !== themeValue) {
- currentTheme['colors'][key] = themeValue;
- }
- }
- let altHighlightStyling = settings.alternateColors.reduce((styling,altHighlight) => {return styling + `
- .codeblock-customizer-line-highlighted-${altHighlight['name'].replace(/\s+/g, '-').toLowerCase()} {
- background-color: var(--codeblock-customiser-highlight-${altHighlight['name'].replace(/\s+/g, '-').toLowerCase()}-color) !important;
- }
- `},'');
- let textSettingsStyles = `
- body.codeblock-customizer [class^="codeblock-customizer-header-language-tag"] {
- --codeblock-customizer-language-tag-text-bold: ${settings.header.bCodeblockLangBold?'bold':'normal'};
- --codeblock-customizer-language-tag-text-italic: ${settings.header.bCodeblockLangItalic?'italic':'normal'};
- }
- body.codeblock-customizer .codeblock-customizer-header-text {
- --codeblock-customizer-header-text-bold: ${settings.header.bHeaderBold?'bold':'normal'};
- --codeblock-customizer-header-text-italic: ${settings.header.bHeaderItalic?'italic':'normal'};
- }
- `;
- styleTag.innerText = colorThemes.reduce((styles,theme) => {
- return styles + formatStyles(theme,settings.alternateColors);
- },formatStyles(currentTheme,settings.alternateColors)+altHighlightStyling+textSettingsStyles).trim().replace(/[\r\n\s]+/g, ' ');
- updateSettingClasses(settings);
+ let colorThemes = settings.colorThemes;
+ let styleId = 'codeblock-customizer-styles'
+ let styleTag = document.getElementById(styleId);
+ if (typeof(styleTag) == 'undefined' || styleTag == null) {
+ styleTag = document.createElement('style');
+ styleTag.id = styleId;
+ document.getElementsByTagName('head')[0].appendChild(styleTag);
+ }
+ let currentMode = getCurrentMode()
+ let defaultColors = settings.colorThemes.find((theme) => {return theme['name'] == `${currentMode.charAt(0).toUpperCase()+currentMode.slice(1)} Theme`})['colors'];
+ let themeColors = settings.colorThemes.find((theme) => {return theme['name'] == settings.SelectedTheme})['colors'];
+ let currentTheme = {name: 'current', colors: {}};
+ for (const key of Object.keys(stylesDict)) {
+ let defaultValue = accessSetting(key,defaultColors).toLowerCase();
+ let themeValue = accessSetting(key,themeColors).toLowerCase();
+ let settingsValue = accessSetting(key,settings).toLowerCase();
+ if (defaultValue !== settingsValue) {
+ currentTheme['colors'][key] = settingsValue;
+ } else if (defaultValue !== themeValue) {
+ currentTheme['colors'][key] = themeValue;
+ }
+ }
+ let altHighlightStyling = settings.alternateColors.reduce((styling,altHighlight) => {return styling + `
+ .codeblock-customizer-line-highlighted-${altHighlight['name'].replace(/\s+/g, '-').toLowerCase()} {
+ background-color: var(--codeblock-customiser-highlight-${altHighlight['name'].replace(/\s+/g, '-').toLowerCase()}-color) !important;
+ }
+ `},'');
+ let textSettingsStyles = `
+ body.codeblock-customizer [class^="codeblock-customizer-header-language-tag"] {
+ --codeblock-customizer-language-tag-text-bold: ${settings.header.bCodeblockLangBold?'bold':'normal'};
+ --codeblock-customizer-language-tag-text-italic: ${settings.header.bCodeblockLangItalic?'italic':'normal'};
+ }
+ body.codeblock-customizer .codeblock-customizer-header-text {
+ --codeblock-customizer-header-text-bold: ${settings.header.bHeaderBold?'bold':'normal'};
+ --codeblock-customizer-header-text-italic: ${settings.header.bHeaderItalic?'italic':'normal'};
+ }
+ `;
+ styleTag.innerText = colorThemes.reduce((styles,theme) => {
+ return styles + formatStyles(theme,settings.alternateColors);
+ },formatStyles(currentTheme,settings.alternateColors)+altHighlightStyling+textSettingsStyles).trim().replace(/[\r\n\s]+/g, ' ');
+ updateSettingClasses(settings);
}// setStyles
function updateSettingClasses(settings) {
- document.body.classList.remove("codeblock-customizer-active-line-highlight","codeblock-customizer-active-line-highlight-codeblock","codeblock-customizer-active-line-highlight-editor")
- if (settings.bActiveLineHighlight && settings.bActiveCodeblockLineHighlight) {
- // Inside and outside of codeblocks with different colors
- document.body.classList.add("codeblock-customizer-active-line-highlight");
- } else if (settings.bActiveLineHighlight && !settings.bActiveCodeblockLineHighlight) {
- // Only outside codeblocks
- document.body.classList.add("codeblock-customizer-active-line-highlight-editor");
- } else if (!settings.bActiveLineHighlight && settings.bActiveCodeblockLineHighlight) {
- // Only inside codeblocks
- document.body.classList.add("codeblock-customizer-active-line-highlight-codeblock");
- }
-
- if (settings.bEnableLineNumbers) {
- document.body.classList.add("codeblock-customizer-show-line-numbers");
- } else {
- document.body.classList.remove("codeblock-customizer-show-line-numbers");
- }
+ document.body.classList.remove("codeblock-customizer-active-line-highlight","codeblock-customizer-active-line-highlight-codeblock","codeblock-customizer-active-line-highlight-editor")
+ if (settings.bActiveLineHighlight && settings.bActiveCodeblockLineHighlight) {
+ // Inside and outside of codeblocks with different colors
+ document.body.classList.add("codeblock-customizer-active-line-highlight");
+ } else if (settings.bActiveLineHighlight && !settings.bActiveCodeblockLineHighlight) {
+ // Only outside codeblocks
+ document.body.classList.add("codeblock-customizer-active-line-highlight-editor");
+ } else if (!settings.bActiveLineHighlight && settings.bActiveCodeblockLineHighlight) {
+ // Only inside codeblocks
+ document.body.classList.add("codeblock-customizer-active-line-highlight-codeblock");
+ }
+
+ if (settings.bEnableLineNumbers) {
+ document.body.classList.add("codeblock-customizer-show-line-numbers");
+ } else {
+ document.body.classList.remove("codeblock-customizer-show-line-numbers");
+ }
- document.body.classList.remove("codeblock-customizer-show-langnames","codeblock-customizer-show-langnames-always");
- if (settings.header.bAlwaysDisplayCodeblockLang && settings.bDisplayCodeBlockLanguage) {
- document.body.classList.add("codeblock-customizer-show-langnames-always");
- } else if (settings.bDisplayCodeBlockLanguage) {
- document.body.classList.add("codeblock-customizer-show-langnames");
- }
+ document.body.classList.remove("codeblock-customizer-show-langnames","codeblock-customizer-show-langnames-always");
+ if (settings.header.bAlwaysDisplayCodeblockLang && settings.bDisplayCodeBlockLanguage) {
+ document.body.classList.add("codeblock-customizer-show-langnames-always");
+ } else if (settings.bDisplayCodeBlockLanguage) {
+ document.body.classList.add("codeblock-customizer-show-langnames");
+ }
- document.body.classList.remove("codeblock-customizer-show-langicons","codeblock-customizer-show-langicons-always");
- if (settings.header.bAlwaysDisplayCodeblockIcon && settings.bDisplayCodeBlockIcon) {
- document.body.classList.add("codeblock-customizer-show-langicons-always");
- } else if (settings.bDisplayCodeBlockIcon) {
- document.body.classList.add("codeblock-customizer-show-langicons");
- }
+ document.body.classList.remove("codeblock-customizer-show-langicons","codeblock-customizer-show-langicons-always");
+ if (settings.header.bAlwaysDisplayCodeblockIcon && settings.bDisplayCodeBlockIcon) {
+ document.body.classList.add("codeblock-customizer-show-langicons-always");
+ } else if (settings.bDisplayCodeBlockIcon) {
+ document.body.classList.add("codeblock-customizer-show-langicons");
+ }
- if (settings.bGutterHighlight) {
- document.body.classList.add('codeblock-customizer-gutter-highlight');
- } else {
- document.body.classList.remove('codeblock-customizer-gutter-highlight');
- }
+ if (settings.bGutterHighlight) {
+ document.body.classList.add('codeblock-customizer-gutter-highlight');
+ } else {
+ document.body.classList.remove('codeblock-customizer-gutter-highlight');
+ }
}// updateSettingStyles
function formatStyles(theme: {name: string, colors: CodeblockCustomizerColors},alternateColors) { //TODO (@mayurankv) Add type hint for alternateColors
- let current = theme['name'] == "current";
- let themeClass = ''
- let altHighlightStyles = ''
- if (theme['name'] == 'Light Theme') {
- themeClass = '.theme-light';
- altHighlightStyles = addAltHighlightColors(alternateColors,true);
- } else if (theme['name'] == 'Dark Theme') {
- themeClass = '.theme-dark';
- altHighlightStyles = addAltHighlightColors(alternateColors,false);
- } else if (theme['name'] != 'current') {
- return '';
- // themeClass = theme['name'].replace(/\s+/g, '-').toLowerCase();
- }
- return `
- body.codeblock-customizer${current ?'':themeClass} {
- ${Object.keys(stylesDict).reduce((variables,key)=>{
- let cssVariable = `--codeblock-customizer-${stylesDict[key]}`;
- let cssValue = accessSetting(key,theme['colors']);
- let cssImportant = (current?' !important':'');
- if (cssValue != null) {
- return variables + `${cssVariable}: ${cssValue + cssImportant};`;
- } else {
- return variables;
- }
- },altHighlightStyles)}
- }
- `;
+ let current = theme['name'] == "current";
+ let themeClass = ''
+ let altHighlightStyles = ''
+ if (theme['name'] == 'Light Theme') {
+ themeClass = '.theme-light';
+ altHighlightStyles = addAltHighlightColors(alternateColors,true);
+ } else if (theme['name'] == 'Dark Theme') {
+ themeClass = '.theme-dark';
+ altHighlightStyles = addAltHighlightColors(alternateColors,false);
+ } else if (theme['name'] != 'current') {
+ return '';
+ // themeClass = theme['name'].replace(/\s+/g, '-').toLowerCase();
+ }
+ return `
+ body.codeblock-customizer${current ?'':themeClass} {
+ ${Object.keys(stylesDict).reduce((variables,key)=>{
+ let cssVariable = `--codeblock-customizer-${stylesDict[key]}`;
+ let cssValue = accessSetting(key,theme['colors']);
+ let cssImportant = (current?' !important':'');
+ if (cssValue != null) {
+ return variables + `${cssVariable}: ${cssValue + cssImportant};`;
+ } else {
+ return variables;
+ }
+ },altHighlightStyles)}
+ }
+ `;
}// formatStyles
function addAltHighlightColors(alternateColors, lightTheme: boolean) { //TODO (@mayurankv) Add type hint for alternateColors
- let key = lightTheme?'lightColor':'darkColor';
- return alternateColors.reduce((altHighlightStyles,altHighlight) => {return altHighlightStyles + `--codeblock-customiser-highlight-${altHighlight['name'].replace(/\s+/g, '-').toLowerCase()}-color: ${altHighlight[key]};`},'')
+ let key = lightTheme?'lightColor':'darkColor';
+ return alternateColors.reduce((altHighlightStyles,altHighlight) => {return altHighlightStyles + `--codeblock-customiser-highlight-${altHighlight['name'].replace(/\s+/g, '-').toLowerCase()}-color: ${altHighlight[key]};`},'')
}
function accessSetting(key: string, settings: CodeblockCustomizerSettings) {
- if (key in settings) {
- return settings[key];
- } else if ('header' in settings) {
- if (key in settings['header']) {
- return settings['header'][key];
- } else {
- let alt_key = key.charAt(6).toLowerCase()+key.slice(7);
- if (alt_key in settings['header']) {
- return settings['header'][alt_key];
- }
- }
- } else {
- return null;
- }
+ if (key in settings) {
+ return settings[key];
+ } else if ('header' in settings) {
+ if (key in settings['header']) {
+ return settings['header'][key];
+ } else {
+ let alt_key = key.charAt(6).toLowerCase()+key.slice(7);
+ if (alt_key in settings['header']) {
+ return settings['header'][alt_key];
+ }
+ }
+ } else {
+ return null;
+ }
}
@@ -364,14 +364,14 @@ function accessSetting(key: string, settings: CodeblockCustomizerSettings) {
// Setting Management
export function getCurrentMode() {
- const body = document.querySelector('body');
- if (body !== null){
- if (body.classList.contains('theme-light')) {
- return "light";
- } else if (body.classList.contains('theme-dark')) {
- return "dark";
- }
- }
- console.log('Warning: Couldn\'t get current theme');
- return "light";
-}
\ No newline at end of file
+ const body = document.querySelector('body');
+ if (body !== null){
+ if (body.classList.contains('theme-light')) {
+ return "light";
+ } else if (body.classList.contains('theme-dark')) {
+ return "dark";
+ }
+ }
+ console.log('Warning: Couldn\'t get current theme');
+ return "light";
+}
diff --git a/src/main.ts b/src/main.ts
index f8918b8..f08a1f2 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -1,77 +1,64 @@
import { Plugin } from "obsidian";
-import { Extension } from "@codemirror/state";
import { DEFAULT_SETTINGS, CodeblockCustomizerSettings } from './Settings';
import { codeblockHighlight } from "./CodeBlockHighlight";
import { codeblockHeader, collapseField } from "./Header";
-import { ReadingView } from "./ReadingView";
+import { ReadingView } from "./ReadingViewOld";
import { SettingsTab } from "./SettingsTab";
-import { getCurrentMode, loadIcons, BLOBS, updateSettingStyles } from "./Utils";
-
-// npm i @simonwep/pickr
+import { loadIcons, BLOBS, updateSettingStyles } from "./Utils";
export default class CodeblockCustomizerPlugin extends Plugin {
- settings: CodeblockCustomizerSettings;
- extensions: Extension[];
-
- async onload() {
- document.body.classList.add('codeblock-customizer');
- await this.loadSettings();
- this.extensions = [];
+ settings: CodeblockCustomizerSettings;
+
+ async onload() {
+ await this.loadSettings();
+ document.body.classList.add('codeblock-customizer');
- // eslint main.ts
-
- /* Problems to solve:
- - if a language is excluded then:
- - header needs to unfold before removing it,
- */
+ loadIcons();
- loadIcons();
+ codeblockHeader.settings = this.settings;
+ collapseField.pluginSettings = this.settings;
+
+ this.registerEditorExtension([
+ codeblockHeader,
+ collapseField,
+ codeblockHighlight(this.settings)
+ ]);
+
+ const settingsTab = new SettingsTab(this.app, this);
+ this.addSettingTab(settingsTab);
+
+ //updateSettingStyles(this.settings);
+
+ this.registerEvent(this.app.workspace.on('css-change', this.handleCssChange.bind(this, settingsTab), this));
- codeblockHeader.settings = this.settings;
- this.extensions.push(codeblockHeader);
-
- collapseField.pluginSettings = this.settings;
- this.extensions.push(collapseField);
+ // reading mode
+ this.registerMarkdownPostProcessor(async (el, ctx) => {
+ await ReadingView(el, ctx, this)
+ })
- this.extensions.push(codeblockHighlight(this.settings));
-
- this.registerEditorExtension(this.extensions);
-
- const settingsTab = new SettingsTab(this.app, this);
- this.addSettingTab(settingsTab);
-
- updateSettingStyles(this.settings);
-
- this.registerEvent(this.app.workspace.on('css-change', this.handleCssChange.bind(this, settingsTab), this));
-
- // reading mode
- this.registerMarkdownPostProcessor(async (el, ctx) => {
- await ReadingView(el, ctx, this)
- })
-
- console.log("loading CodeBlock Customizer plugin");
- }// onload
-
- handleCssChange(settingsTab) {
- console.log('updating css');
- }// handleCssChange
-
- onunload() {
- console.log("unloading CodeBlock Customizer plugin");
- // unload icons
- for (const url of Object.values(BLOBS)) {
- URL.revokeObjectURL(url)
- }
+ console.log("loading CodeBlock Customizer plugin");
+ }// onload
+
+ handleCssChange(settingsTab) {
+ console.log('updating css');
+ }// handleCssChange
+
+ onunload() {
+ console.log("unloading CodeBlock Customizer plugin");
+ // unload icons
+ for (const url of Object.values(BLOBS)) {
+ URL.revokeObjectURL(url)
+ }
}
-
+
async loadSettings() {
this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData());
}
async saveSettings() {
await this.saveData(this.settings);
- this.app.workspace.updateOptions();
- // updateSettingStyles(this.settings);
+ this.app.workspace.updateOptions();
+ // updateSettingStyles(this.settings);
}
}
diff --git a/styles.css b/styles.css
index 40317f4..8a002e1 100644
--- a/styles.css
+++ b/styles.css
@@ -1,201 +1,201 @@
/* Define CSS variables */
:root {
- --line-number-gutter-width: 32px;
- --line-number-gutter-padding: 16px;
- --border-radius: 10px;
- --code-padding: 8px;
- --header-padding: 0px;
- --header-spacing: 15px;
- --language-icon-size: 28px;
+ --line-number-gutter-width: 32px;
+ --line-number-gutter-padding: 16px;
+ --border-radius: 10px;
+ --code-padding: 8px;
+ --header-padding: 0px;
+ --header-spacing: 15px;
+ --language-icon-size: 28px;
}
/* Codeblock background colours */
.codeblock-customizer .markdown-rendered pre.codeblock-customizer-pre,
.codeblock-customizer .markdown-source-view .HyperMD-codeblock.codeblock-customizer-line {
- background-color: var(--codeblock-customizer-codeblock-background-color);
+ background-color: var(--codeblock-customizer-codeblock-background-color);
}
/* Highlighting */
.codeblock-customizer-line-highlighted {
- background-color: var(--codeblock-customizer-highlight-color) !important;
+ background-color: var(--codeblock-customizer-highlight-color) !important;
}
.codeblock-customizer-active-line-highlight .cm-active,
.codeblock-customizer-active-line-highlight-editor .cm-active {
- background-color: var(--codeblock-customizer-editor-active-line-color) !important;
+ background-color: var(--codeblock-customizer-editor-active-line-color) !important;
}
.codeblock-customizer-active-line-highlight .markdown-source-view [class*="codeblock-customizer-line"].cm-active,
.codeblock-customizer-active-line-highlight-codeblock .markdown-source-view [class*="codeblock-customizer-line"].cm-active {
- background-color: var(--codeblock-customizer-codeblock-active-line-color) !important;
+ background-color: var(--codeblock-customizer-codeblock-active-line-color) !important;
}
/* Line number gutter styling */
.codeblock-customizer:not(.codeblock-customizer-show-line-numbers) .codeblock-customizer-line-number,
.codeblock-customizer-line-number-hide {
- display: none;
+ display: none;
}
.markdown-rendered .codeblock-customizer-pre > code > div:first-child > .codeblock-customizer-line-number { /* Maintain gutter color when padded */
- box-shadow: 0px calc(-1 * var(--code-padding)) var(--codeblock-customizer-gutter-background-color);
+ box-shadow: 0px calc(-1 * var(--code-padding)) var(--codeblock-customizer-gutter-background-color);
}
.markdown-rendered .codeblock-customizer-pre > code > div:last-child > .codeblock-customizer-line-number { /* Maintain gutter color when padded */
- box-shadow: 0px var(--code-padding) var(--codeblock-customizer-gutter-background-color);
+ box-shadow: 0px var(--code-padding) var(--codeblock-customizer-gutter-background-color);
}
.markdown-rendered .codeblock-customizer-pre > code > div:only-child > .codeblock-customizer-line-number { /* Maintain gutter color when padded */
- box-shadow: 0px calc(-1 * var(--code-padding)) var(--codeblock-customizer-gutter-background-color),0px var(--code-padding) var(--codeblock-customizer-gutter-background-color);
+ box-shadow: 0px calc(-1 * var(--code-padding)) var(--codeblock-customizer-gutter-background-color),0px var(--code-padding) var(--codeblock-customizer-gutter-background-color);
}
.codeblock-customizer-line-number,
.codeblock-customizer-line-number-specific {
- padding-left: 4px;
- padding-right: 8px;
- text-align: right;
- min-width: var(--line-number-gutter-width);
- background-color: var(--codeblock-customizer-gutter-background-color);
- font-size: var(--code-size);
- font-family: var(--font-monospace);
- color: var(--codeblock-customizer-gutter-text-color);
- user-select: none;
+ padding-left: 4px;
+ padding-right: 8px;
+ text-align: right;
+ min-width: var(--line-number-gutter-width);
+ background-color: var(--codeblock-customizer-gutter-background-color);
+ font-size: var(--code-size);
+ font-family: var(--font-monospace);
+ color: var(--codeblock-customizer-gutter-text-color);
+ user-select: none;
}
.markdown-source-view .codeblock-customizer-line-number {
- position: absolute;
- display: inline-block;
- height: 100%;
- width: var(--line-number-gutter-width);
- overflow-x: auto;
- direction: rtl;
- left: 0;
+ position: absolute;
+ display: inline-block;
+ height: 100%;
+ width: var(--line-number-gutter-width);
+ overflow-x: auto;
+ direction: rtl;
+ left: 0;
}
.markdown-source-view .codeblock-customizer-line-number::-webkit-scrollbar {
- display: none;
+ display: none;
}
.markdown-rendered .codeblock-customizer-line-number {
- flex-shrink: 0;
- flex-grow: 1;
+ flex-shrink: 0;
+ flex-grow: 1;
}
.codeblock-customizer-active-line-highlight.codeblock-customizer-gutter-highlight .markdown-source-view [class*="codeblock-customizer-line"].cm-active .codeblock-customizer-line-number,
.codeblock-customizer-active-line-highlight-codeblock.codeblock-customizer-gutter-highlight .markdown-source-view [class*="codeblock-customizer-line"].cm-active .codeblock-customizer-line-number,
.codeblock-customizer-gutter-highlight [class*="codeblock-customizer-line-highlighted"] .codeblock-customizer-line-number {
- background-color: rgba(0,0,0,0);
+ background-color: rgba(0,0,0,0);
}
.codeblock-customizer.codeblock-customizer-show-line-numbers .markdown-source-view .HyperMD-codeblock:has(.codeblock-customizer-line-number){
- padding-left: calc(var(--line-number-gutter-width) + var(--line-number-gutter-padding));
+ padding-left: calc(var(--line-number-gutter-width) + var(--line-number-gutter-padding));
}
/* Header styling */
body:not([class*='codeblock-customizer-show-langicons']) .codeblock-customizer-header-container-specific div:has(> img.codeblock-customizer-icon),
body:not(.codeblock-customizer-show-langicons-always) .codeblock-customizer-header-container div:has(> img.codeblock-customizer-icon) {
- display: none;
+ display: none;
}
body:not([class*='codeblock-customizer-show-langnames']) .codeblock-customizer-header-container-specific [class^="codeblock-customizer-header-language-tag"],
body:not(.codeblock-customizer-show-langnames-always) .codeblock-customizer-header-container [class^="codeblock-customizer-header-language-tag"] {
- display: none;
+ display: none;
}
body:not(.codeblock-customizer-show-langicons-always):not(.codeblock-customizer-show-langnames-always) .codeblock-customizer-header-container,
body:not(.codeblock-customizer-show-langnames-always) .codeblock-customizer-header-container:not(:has( img.codeblock-customizer-icon)) {
- display: none !important;
+ display: none !important;
}
body .codeblock-customizer-header-container:not(:has( img.codeblock-customizer-icon)) {
- display: none !important;
+ display: none !important;
}
.codeblock-customizer-header-container,
.codeblock-customizer-header-container-specific {
- user-select: none;
- height: var(--language-icon-size);
- padding-top: var(--header-padding);
- border-top-left-radius: var(--border-radius);
- border-top-right-radius: var(--border-radius);
- background-color: var(--codeblock-customizer-header-background-color);
- border-bottom: 2px groove var(--codeblock-customizer-header-line-color);
- font-size: 14px;
- margin-top: 16px !important; /* originalVal: none, set it to 16px, so the header gets the marginTop, which was removed from the first line of the codeblock */
- display: flex !important;
- overflow: visible;
+ user-select: none;
+ height: var(--language-icon-size);
+ padding-top: var(--header-padding);
+ border-top-left-radius: var(--border-radius);
+ border-top-right-radius: var(--border-radius);
+ background-color: var(--codeblock-customizer-header-background-color);
+ border-bottom: 2px groove var(--codeblock-customizer-header-line-color);
+ font-size: 14px;
+ margin-top: 16px !important; /* originalVal: none, set it to 16px, so the header gets the marginTop, which was removed from the first line of the codeblock */
+ display: flex !important;
+ overflow: visible;
}
.markdown-source-view.mod-cm6 .cm-content .codeblock-customizer-header-container,
.markdown-source-view.mod-cm6 .cm-content .codeblock-customizer-header-container-specific {
- margin-top: 16px !important; /* originalVal: none, set it to 16px, so the header gets the marginTop, which was removed from the first line of the codeblock */
+ margin-top: 16px !important; /* originalVal: none, set it to 16px, so the header gets the marginTop, which was removed from the first line of the codeblock */
}
.markdown-source-view .codeblock-customizer-header-container:not(:has(+ .HyperMD-codeblock-begin)),
.markdown-source-view .codeblock-customizer-header-container-specific:not(:has(+ .HyperMD-codeblock-begin)),
.markdown-rendered .codeblock-customizer-header-container:has( + .codeblock-customizer-pre.codeblock-customizer-codeblock-collapsed),
.markdown-rendered .codeblock-customizer-header-container-specific:has( + .codeblock-customizer-pre.codeblock-customizer-codeblock-collapsed) {
- padding-bottom: var(--header-padding);
- border-bottom-left-radius: var(--border-radius);
- border-bottom-right-radius: var(--border-radius);
- border-bottom: none;
+ padding-bottom: var(--header-padding);
+ border-bottom-left-radius: var(--border-radius);
+ border-bottom-right-radius: var(--border-radius);
+ border-bottom: none;
}
.markdown-source-view .codeblock-customizer-header-container,
.markdown-source-view .codeblock-customizer-header-container-specific { /* Fix for incorrectly displaying header when using "minimal" theme */
- width: calc(var(--line-width-adaptive) - var(--folding-offset));
- margin-left: max(calc(50% + var(--folding-offset) - var(--line-width-adaptive)/2), calc(50% + var(--folding-offset) - var(--max-width)/2)) !important;
+ width: calc(var(--line-width-adaptive) - var(--folding-offset));
+ margin-left: max(calc(50% + var(--folding-offset) - var(--line-width-adaptive)/2), calc(50% + var(--folding-offset) - var(--max-width)/2)) !important;
}
.codeblock-customizer-header-container [class^="codeblock-customizer-header-language-tag"],
.codeblock-customizer-header-container-specific [class^="codeblock-customizer-header-language-tag"] {
- height: 100%;
- padding-left: var(--header-spacing);
- padding-right: var(--header-spacing);
- margin-right: var(--header-spacing);
- padding-top: 0.3em;
- padding-bottom: 0.3em;
- font-size: inherit;
- border-radius: var(--border-radius) var(--border-radius) 0px 0px;
- background-color: var(--codeblock-customizer-language-tag-background-color);
- color: var(--codeblock-customizer-language-tag-text-color);
- font-weight: var(--codeblock-customizer-language-tag-text-bold, normal);
- font-style: var(--codeblock-customizer-language-tag-text-italic, normal);
+ height: 100%;
+ padding-left: var(--header-spacing);
+ padding-right: var(--header-spacing);
+ margin-right: var(--header-spacing);
+ padding-top: 0.3em;
+ padding-bottom: 0.3em;
+ font-size: inherit;
+ border-radius: var(--border-radius) var(--border-radius) 0px 0px;
+ background-color: var(--codeblock-customizer-language-tag-background-color);
+ color: var(--codeblock-customizer-language-tag-text-color);
+ font-weight: var(--codeblock-customizer-language-tag-text-bold, normal);
+ font-style: var(--codeblock-customizer-language-tag-text-italic, normal);
}
.markdown-source-view .codeblock-customizer-header-container:not(:has(+ .HyperMD-codeblock-begin)) [class^="codeblock-customizer-header-language-tag"],
.markdown-source-view .codeblock-customizer-header-container-specific:not(:has(+ .HyperMD-codeblock-begin)) [class^="codeblock-customizer-header-language-tag"],
.markdown-rendered .codeblock-customizer-header-container:has( + .codeblock-customizer-pre.codeblock-customizer-codeblock-collapsed) [class^="codeblock-customizer-header-language-tag"],
.markdown-rendered .codeblock-customizer-header-container-specific:has( + .codeblock-customizer-pre.codeblock-customizer-codeblock-collapsed) [class^="codeblock-customizer-header-language-tag"] {
- border-radius: var(--border-radius);
+ border-radius: var(--border-radius);
}
.codeblock-customizer-header-text {
- padding-left: 0px;
- padding-top: 0.3em;
- padding-bottom: 0.3em;
- font-size: inherit;
- color: var(--codeblock-customizer-header-text-color);
- font-weight: var(--codeblock-customizer-header-text-bold, normal);
- font-style: var(--codeblock-customizer-header-text-italic, normal);
+ padding-left: 0px;
+ padding-top: 0.3em;
+ padding-bottom: 0.3em;
+ font-size: inherit;
+ color: var(--codeblock-customizer-header-text-color);
+ font-weight: var(--codeblock-customizer-header-text-bold, normal);
+ font-style: var(--codeblock-customizer-header-text-italic, normal);
}
body:not([class*='codeblock-customizer-show-langicons']):not([class*='codeblock-customizer-show-langnames']) .codeblock-customizer-header-container-specific .codeblock-customizer-header-text,
body:not(.codeblock-customizer-show-langicons-always):not(.codeblock-customizer-header-container) .codeblock-customizer-header-container .codeblock-customizer-header-text,
body .codeblock-customizer-header-container-specific:not(:has( [class^="codeblock-customizer-header-language-tag-"])) .codeblock-customizer-header-text {
- padding-left: var(--header-spacing);
+ padding-left: var(--header-spacing);
}
div:has(> img.codeblock-customizer-icon) {
- display: inline-flex;
- padding-left: var(--header-spacing);
- padding-right: var(--header-spacing);
+ display: inline-flex;
+ padding-left: var(--header-spacing);
+ padding-right: var(--header-spacing);
}
.codeblock-customizer-icon {
- border: 0px;
+ border: 0px;
}
/* Pre element styling */
.codeblock-customizer-pre.codeblock-customizer-codeblock-collapsed {
- display: none;
+ display: none;
}
.codeblock-customizer-pre-parent{
- margin-bottom: 16px;
+ margin-bottom: 16px;
}
.markdown-rendered pre.codeblock-customizer-pre {
- margin-top: 0px; /* originalVal: 16px, set it to 0, so the header is displayed above the codeblock */
- border-top-left-radius: 0px;
- border-top-right-radius: 0px;
- border-bottom-left-radius: var(--border-radius);
- border-bottom-right-radius: var(--border-radius);
- padding-top: 0px; /* padding-top and bottom must be set at the pre code element*/
- padding-bottom: 0px;
- padding-right: 0px; /* originalVal: 16px, disable it, so the lines are fully highlighted */
- padding-left: 0px; /* originalVal: 16px, disable it, so the lines are fully highlighted */
+ margin-top: 0px; /* originalVal: 16px, set it to 0, so the header is displayed above the codeblock */
+ border-top-left-radius: 0px;
+ border-top-right-radius: 0px;
+ border-bottom-left-radius: var(--border-radius);
+ border-bottom-right-radius: var(--border-radius);
+ padding-top: 0px; /* padding-top and bottom must be set at the pre code element*/
+ padding-bottom: 0px;
+ padding-right: 0px; /* originalVal: 16px, disable it, so the lines are fully highlighted */
+ padding-left: 0px; /* originalVal: 16px, disable it, so the lines are fully highlighted */
}
.markdown-rendered pre.codeblock-customizer-pre code {
- display: block;
- padding-top: var(--code-padding);
- padding-bottom: var(--code-padding);
- padding-left: 0px;
- padding-right: 0px;
- border-radius: 0px;
+ display: block;
+ padding-top: var(--code-padding);
+ padding-bottom: var(--code-padding);
+ padding-left: 0px;
+ padding-right: 0px;
+ border-radius: 0px;
}
/* Source mode text styling */
@@ -208,59 +208,59 @@ div:has(> img.codeblock-customizer-icon) {
/* Reading mode text styling */
.markdown-rendered div:has(> .codeblock-customizer-line-text) {
- display: flex;
+ display: flex;
}
.markdown-rendered .codeblock-customizer-line-text {
- flex-basis: 100%;
- padding-left: var(--line-number-gutter-padding); /* originalVal:0px, add padding between the line numbers and the text */
+ flex-basis: 100%;
+ padding-left: var(--line-number-gutter-padding); /* originalVal:0px, add padding between the line numbers and the text */
}
/* Border radius styling */
/* :not([class^="codeblock-customizer-header-container"])*/
.codeblock-customizer .markdown-source-view [class*="codeblock-customizer-line"].HyperMD-codeblock-begin {
- border-top-left-radius: 0px;
- border-top-right-radius: 0px;
+ border-top-left-radius: 0px;
+ border-top-right-radius: 0px;
}
.codeblock-customizer .markdown-source-view [class*="codeblock-customizer-line"].HyperMD-codeblock-end {
- border-bottom-left-radius: var(--border-radius);
- border-bottom-right-radius: var(--border-radius);
+ border-bottom-left-radius: var(--border-radius);
+ border-bottom-right-radius: var(--border-radius);
}
.codeblock-customizer .markdown-source-view [class*="codeblock-customizer-line"].HyperMD-codeblock-end .codeblock-customizer-line-number {
- border-bottom-left-radius: var(--border-radius);
+ border-bottom-left-radius: var(--border-radius);
}
body:not(.codeblock-customizer-show-langicons-always):not(.codeblock-customizer-show-langnames-always) .markdown-source-view .codeblock-customizer-header-container + .HyperMD-codeblock-begin,
body:not(.codeblock-customizer-show-langnames-always) .markdown-source-view .codeblock-customizer-header-container:not(:has( img.codeblock-customizer-icon)) + .HyperMD-codeblock-begin,
body .markdown-source-view .codeblock-customizer-header-container:not(:has( img.codeblock-customizer-icon)) + .HyperMD-codeblock-begin {
- border-top-left-radius: var(--border-radius);
- border-top-right-radius: var(--border-radius);
+ border-top-left-radius: var(--border-radius);
+ border-top-right-radius: var(--border-radius);
}
body:not(.codeblock-customizer-show-langicons-always):not(.codeblock-customizer-show-langnames-always) .codeblock-customizer-header-container + .HyperMD-codeblock-begin .codeblock-customizer-line-number,
body:not(.codeblock-customizer-show-langnames-always) .codeblock-customizer-header-container:not(:has( img.codeblock-customizer-icon)) + .HyperMD-codeblock-begin .codeblock-customizer-line-number,
body .codeblock-customizer-header-container:not(:has( img.codeblock-customizer-icon)) + .HyperMD-codeblock-begin .codeblock-customizer-line-number {
- border-top-left-radius: var(--border-radius);
+ border-top-left-radius: var(--border-radius);
}
body:not(.codeblock-customizer-show-langicons-always):not(.codeblock-customizer-show-langnames-always) .codeblock-customizer-header-container + .codeblock-customizer-pre,
body:not(.codeblock-customizer-show-langnames-always) .codeblock-customizer-header-container:not(:has( img.codeblock-customizer-icon)) + .codeblock-customizer-pre,
body .codeblock-customizer-header-container:not(:has( img.codeblock-customizer-icon)) + .codeblock-customizer-pre {
- border-top-left-radius: var(--border-radius);
- border-top-right-radius: var(--border-radius);
+ border-top-left-radius: var(--border-radius);
+ border-top-right-radius: var(--border-radius);
}
/* Settings */
.setting-item.codeblock-customizer-spaced .checkbox-container + .pickr {
- padding-left: 10px;
+ padding-left: 10px;
}
.codeblock-customizer-donation {
- width: 70%;
- margin: 0 auto;
- text-align: center;
+ width: 70%;
+ margin: 0 auto;
+ text-align: center;
}
/* pickr start */
.pcr-app .pcr-swatches > button {
- padding: 0;
+ padding: 0;
}
/*! Pickr 1.8.2 MIT | https://github.com/Simonwep/pickr */
.pickr {position: relative;overflow: visible;transform: translateY(0)} .pickr * {box-sizing: border-box;outline: none;border: none;-webkit-appearance: none} .pickr .pcr-button {position: relative;height: 2em;width: 2em;padding: 0.5em;cursor: pointer;font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif;border-radius: .15em;background: url('data:image/svg+xml;utf8, ') no-repeat center;background-size: 0;transition: all 0.3s} .pickr .pcr-button::before {position: absolute;content: '';top: 0;left: 0;width: 100%;height: 100%;background: url('data:image/svg+xml;utf8, ');background-size: .5em;border-radius: .15em;z-index: -1} .pickr .pcr-button::before {z-index: initial} .pickr .pcr-button::after {position: absolute;content: '';top: 0;left: 0;height: 100%;width: 100%;transition: background 0.3s;background: var(--pcr-color);border-radius: .15em} .pickr .pcr-button.clear {background-size: 70%} .pickr .pcr-button.clear::before {opacity: 0} .pickr .pcr-button.clear:focus {box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px var(--pcr-color)} .pickr .pcr-button.disabled {cursor: not-allowed} .pickr *, .pcr-app * {box-sizing: border-box;outline: none;border: none;-webkit-appearance: none} .pickr input:focus, .pickr input.pcr-active, .pickr button:focus, .pickr button.pcr-active, .pcr-app input:focus, .pcr-app input.pcr-active, .pcr-app button:focus, .pcr-app button.pcr-active {box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px var(--pcr-color)} .pickr .pcr-palette, .pickr .pcr-slider, .pcr-app .pcr-palette, .pcr-app .pcr-slider {transition: box-shadow 0.3s} .pickr .pcr-palette:focus, .pickr .pcr-slider:focus, .pcr-app .pcr-palette:focus, .pcr-app .pcr-slider:focus {box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px rgba(0, 0, 0, 0.25)} .pcr-app {position: fixed;display: flex;flex-direction: column;z-index: 10000;border-radius: 0.1em;background: #fff;opacity: 0;visibility: hidden;transition: opacity 0.3s, visibility 0s 0.3s;font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif;box-shadow: 0 0.15em 1.5em 0 rgba(0, 0, 0, 0.1), 0 0 1em 0 rgba(0, 0, 0, 0.03);left: 0;top: 0} .pcr-app.visible {transition: opacity 0.3s;visibility: visible;opacity: 1} .pcr-app .pcr-swatches {display: flex;flex-wrap: wrap;margin-top: 0.75em} .pcr-app .pcr-swatches.pcr-last {margin: 0} @supports (display: grid) { .pcr-app .pcr-swatches {display: grid;align-items: center;grid-template-columns: repeat(auto-fit, 1.75em)} } .pcr-app .pcr-swatches > button {font-size: 1em;position: relative;width: calc(1.75em - 10px);height: calc(1.75em - 10px);border-radius: 0.15em;cursor: pointer;margin: 2.5px;flex-shrink: 0;justify-self: center;transition: all 0.15s;overflow: hidden;background: transparent;z-index: 1} .pcr-app .pcr-swatches > button::before {position: absolute;content: '';top: 0;left: 0;width: 100%;height: 100%;background: url('data:image/svg+xml;utf8, ');background-size: 6px;border-radius: .15em;z-index: -1} .pcr-app .pcr-swatches > button::after {content: '';position: absolute;top: 0;left: 0;width: 100%;height: 100%;background: var(--pcr-color);border: 1px solid rgba(0, 0, 0, 0.05);border-radius: 0.15em;box-sizing: border-box} .pcr-app .pcr-swatches > button:hover {filter: brightness(1.05)} .pcr-app .pcr-swatches > button:not(.pcr-active) {box-shadow: none} .pcr-app .pcr-interaction {display: flex;flex-wrap: wrap;align-items: center;margin: 0 -0.2em 0 -0.2em} .pcr-app .pcr-interaction > * {margin: 0 0.2em} .pcr-app .pcr-interaction input {letter-spacing: 0.07em;font-size: 0.75em;text-align: center;cursor: pointer;color: #75797e;background: #f1f3f4;border-radius: .15em;transition: all 0.15s;padding: 0.45em 0.5em;margin-top: 0.75em} .pcr-app .pcr-interaction input:hover {filter: brightness(0.975)} .pcr-app .pcr-interaction input:focus {box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px rgba(66, 133, 244, 0.75)} .pcr-app .pcr-interaction .pcr-result {color: #75797e;text-align: left;flex: 1 1 8em;min-width: 8em;transition: all 0.2s;border-radius: .15em;background: #f1f3f4;cursor: text} .pcr-app .pcr-interaction .pcr-result::-moz-selection {background: #4285f4;color: #fff} .pcr-app .pcr-interaction .pcr-result::selection {background: #4285f4;color: #fff} .pcr-app .pcr-interaction .pcr-type.active {color: #fff;background: #4285f4} .pcr-app .pcr-interaction .pcr-save, .pcr-app .pcr-interaction .pcr-cancel, .pcr-app .pcr-interaction .pcr-clear {color: #fff;width: auto} .pcr-app .pcr-interaction .pcr-save, .pcr-app .pcr-interaction .pcr-cancel, .pcr-app .pcr-interaction .pcr-clear {color: #fff} .pcr-app .pcr-interaction .pcr-save:hover, .pcr-app .pcr-interaction .pcr-cancel:hover, .pcr-app .pcr-interaction .pcr-clear:hover {filter: brightness(0.925)} .pcr-app .pcr-interaction .pcr-save {background: #4285f4} .pcr-app .pcr-interaction .pcr-clear, .pcr-app .pcr-interaction .pcr-cancel {background: #f44250} .pcr-app .pcr-interaction .pcr-clear:focus, .pcr-app .pcr-interaction .pcr-cancel:focus {box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.85), 0 0 0 3px rgba(244, 66, 80, 0.75)} .pcr-app .pcr-selection .pcr-picker {position: absolute;height: 18px;width: 18px;border: 2px solid #fff;border-radius: 100%;-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none} .pcr-app .pcr-selection .pcr-color-palette, .pcr-app .pcr-selection .pcr-color-chooser, .pcr-app .pcr-selection .pcr-color-opacity {position: relative;-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none;display: flex;flex-direction: column;cursor: grab;cursor: -webkit-grab} .pcr-app .pcr-selection .pcr-color-palette:active, .pcr-app .pcr-selection .pcr-color-chooser:active, .pcr-app .pcr-selection .pcr-color-opacity:active {cursor: grabbing;cursor: -webkit-grabbing} .pcr-app[data-theme='nano'] {width: 14.25em;max-width: 95vw} .pcr-app[data-theme='nano'] .pcr-swatches {margin-top: .6em;padding: 0 .6em} .pcr-app[data-theme='nano'] .pcr-interaction {padding: 0 .6em .6em .6em} .pcr-app[data-theme='nano'] .pcr-selection {display: grid;grid-gap: .6em;grid-template-columns: 1fr 4fr;grid-template-rows: 5fr auto auto;align-items: center;height: 10.5em;width: 100%;align-self: flex-start} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-preview {grid-area: 2 / 1 / 4 / 1;height: 100%;width: 100%;display: flex;flex-direction: row;justify-content: center;margin-left: .6em} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-preview .pcr-last-color {display: none} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-preview .pcr-current-color {position: relative;background: var(--pcr-color);width: 2em;height: 2em;border-radius: 50em;overflow: hidden} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-preview .pcr-current-color::before {position: absolute;content: '';top: 0;left: 0;width: 100%;height: 100%;background: url('data:image/svg+xml;utf8, ');background-size: .5em;border-radius: .15em;z-index: -1} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-palette {grid-area: 1 / 1 / 2 / 3;width: 100%;height: 100%;z-index: 1} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-palette .pcr-palette {border-radius: .15em;width: 100%;height: 100%} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-palette .pcr-palette::before {position: absolute;content: '';top: 0;left: 0;width: 100%;height: 100%;background: url('data:image/svg+xml;utf8, ');background-size: .5em;border-radius: .15em;z-index: -1} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-chooser {grid-area: 2 / 2 / 2 / 2} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-opacity {grid-area: 3 / 2 / 3 / 2} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-chooser, .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-opacity {height: 0.5em;margin: 0 .6em} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-chooser .pcr-picker, .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-opacity .pcr-picker {top: 50%;transform: translateY(-50%)} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-chooser .pcr-slider, .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-opacity .pcr-slider {flex-grow: 1;border-radius: 50em} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-chooser .pcr-slider {background: linear-gradient(to right, red, #ff0, lime, cyan, blue, #f0f, red)} .pcr-app[data-theme='nano'] .pcr-selection .pcr-color-opacity .pcr-slider {background: linear-gradient(to right, transparent, black), url('data:image/svg+xml;utf8, ');background-size: 100%, 0.25em}
-/* pickr end */
\ No newline at end of file
+/* pickr end */
diff --git a/toDo.md b/toDo.md
deleted file mode 100644
index ce7de0a..0000000
--- a/toDo.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# ToDo
-
-@mayurankv
-
-1. Appearance issues:
- 1. Too large line numbers with dynamic padding in source mode
- 2. Folding transition animation? CSS won't work for this.
-2. Prevent delay to render in reading mode:
- 1. Caused by changes to HTML such as:
- - Changing highlighted lines
- - Changing file name
- - Presumably changing line offset
- - Presumably changing fold name
-3. Refactor to make cleaner
- 1. Sort settings structure and change corresponding code
- 2. Modularise code better
- 3. Reuse functions across live preview and reading mode
-4. Extra Settings
- 1. Placeholder text for collapsed code
- 1. Global placeholder in settings
- 2. Optional parameter after fold:
- 2. Let users redirect certain languages to icon of choice? Definitely not urgent if at all
diff --git a/tsconfig.json b/tsconfig.json
index 2d6fbdf..375d827 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,24 +1,24 @@
{
- "compilerOptions": {
- "baseUrl": ".",
- "inlineSourceMap": true,
- "inlineSources": true,
- "module": "ESNext",
- "target": "ES6",
- "allowJs": true,
- "noImplicitAny": true,
- "moduleResolution": "node",
- "importHelpers": true,
- "isolatedModules": true,
+ "compilerOptions": {
+ "baseUrl": ".",
+ "inlineSourceMap": true,
+ "inlineSources": true,
+ "module": "ESNext",
+ "target": "ES6",
+ "allowJs": true,
+ "noImplicitAny": true,
+ "moduleResolution": "node",
+ "importHelpers": true,
+ "isolatedModules": true,
"strictNullChecks": true,
- "lib": [
- "DOM",
- "ES5",
- "ES6",
- "ES7"
- ]
- },
- "include": [
- "**/*.ts"
- ]
+ "lib": [
+ "DOM",
+ "ES5",
+ "ES6",
+ "ES7"
+ ]
+ },
+ "include": [
+ "**/*.ts"
+ ]
}