// ==UserScript==
// @name Manga OnlineViewer
// @author Tago
// @namespace https://github.com/TagoDR
// @description Shows all pages at once in online view for these sites: Batoto, ComiCastle, Dynasty-Scans, EatManga, Easy Going Scans, FoOlSlide, KissManga, MangaDoom, MangaFox, MangaGo, MangaHere, MangaInn, MangaLyght, MangaPark, MangaReader,MangaPanda, MangaStream, MangaTown, NineManga, ReadManga.Today, SenManga(Raw), TenManga, TheSpectrum, MangaDeep
// @version 13.0.0
// @date 2017-07-09
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_listValues
// @grant GM_xmlhttpRequest
// @require https://code.jquery.com/jquery-latest.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/nprogress/0.2.0/nprogress.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/jscolor/2.0.4/jscolor.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/color-scheme/1.0.0/color-scheme.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/ramda/0.24.1/ramda.min.js
// @include /https?:\/\/(www.)?bato.to\/reader.*/
// @include /https?:\/\/(www.)?comicastle.org\/comic\/.+\/[0-9]+.*/
// @include /https?:\/\/(www.)?dynasty-scans.com\/chapters\/.+/
// @include /https?:\/\/(www.)?eatmanga.me\/Manga-Scan\/.+\/.+\//
// @include /https?:\/\/read.egscans.com\/.+/
// @include /.+\/read\/.+/
// @include /https?:\/\/(www.)?kissmanga.com\/Manga\/.+\/.+?id=[0-9]+/
// @include /https?:\/\/(www.)?mangadoom.co\/.+\/[0-9]+/
// @include /https?:\/\/(www.)?mangafox.me\/manga\/.+\/.+\//
// @include /https?:\/\/(www.)?mangago.me\/read-manga\/.+\/.+/
// @include /https?:\/\/(www.)?mangahere.co\/manga\/.+\/.+/
// @include /https?:\/\/(www.)?mangainn.net\/manga\/chapter\/.+/
// @include /https?:\/\/manga.lyght.net\/series\/.+\.html/
// @include /https?:\/\/(www.)?mangapark.me\/manga\/.+\/.+/
// @include /https?:\/\/(www.)?(mangareader|mangapanda)(.net|.com)\/.+\/.+/
// @include /https?:\/\/(www.)?(mangastream|readms)(.net|.com)\/r.*\/.+/
// @include /https?:\/\/(www.)?mangatown.com\/manga\/.+\/.+/
// @include /https?:\/\/(www.)?ninemanga.com\/chapter\/.+\/.+\.html/
// @include /https?:\/\/(www.)?readmanga.today\/.+\/[0-9]+/
// @include /https?:\/\/raw.senmanga.com\/.+\/.+\/?/
// @include /https?:\/\/(www.)?tenmanga.com\/chapter\/.+/
// @include /https?:\/\/view.thespectrum.net\/.+/
// @include /https?:\/\/(www.)?(mangaspy|mangadeep|mangateen).com\/.+\/[0-9]+/
// @exclude /https?:\/\/(www.)?tsumino.com\/.+/
// @exclude /https?:\/\/(www.)?pururin.us\/.+/
// @downloadURL none
// ==/UserScript==
(function() {
'use strict';
var W = (typeof unsafeWindow === undefined) ? window : unsafeWindow;
/* eslint-disable camelcase */
// Encapsulation for the console
function logScript(...text) {
// eslint-disable-next-line no-console
console.log('MangaOnlineViewer:', ...text);
return text;
}
// Composeble console output
const logScriptC = R.curry((x, y) => logScript(x, y)[1]);
// Replacement function for GM_info allowing for debugging in console
const getInfoGM = GM_info || {
scriptHandler: 'Console',
script: {
name: 'Debug',
version: 'Testing'
}
};
// Replacement function for GM_getValue allowing for debugging in console
const getValueGM = GM_getValue || ((name, defaultValue = null) => logScript('Getting: ', name, '=', defaultValue)[3]);
// Replacement function for GM_setValue allowing for debugging in console
const setValueGM = GM_setValue || ((name, value) => logScript('Getting: ', name, '=', value));
// See https://stackoverflow.com/a/2401861/331508 for optional browser sniffing code.
function getBrowser() {
const ua = navigator.userAgent;
let tem;
let M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
if (/trident/i.test(M[1])) {
tem = /\brv[ :]+(\d+)/g.exec(ua) || [];
return 'IE ' + String(tem[1] || '');
}
if (M[1] === 'Chrome') {
tem = ua.match(/\b(OPR|Edge)\/(\d+)/);
if (tem !== null) {
return tem.slice(1).join(' ').replace('OPR', 'Opera');
}
}
M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];
tem = ua.match(/version\/(\d+)/i);
if (tem !== null) {
M.splice(1, 1, tem[1]);
}
return M.join(' ');
}
// See https://stackoverflow.com/questions/27487828/how-to-detect-if-a-userscript-is-installed-from-the-chrome-store
function getEngine() {
return String(getInfoGM.scriptHandler || 'Greasemonkey') + ' ' + String(getInfoGM.version);
}
if (typeof getValueGM('MangaFitWidthIfOversized') === 'string') {
setValueGM('MangaFitWidthIfOversized', true);
setValueGM('MangaShowThumbnails', true);
setValueGM('MangaDownloadZip', false);
setValueGM('MangaAlwaysLoad', false);
}
// Configuration
const settings = {
Theme: getValueGM('MangaTheme', 'Light'),
CustomTheme: getValueGM('MangaCustomTheme', '3d0099'),
FitWidthIfOversized: getValueGM('MangaFitWidthIfOversized', true),
ShowThumbnails: getValueGM('MangaShowThumbnails', true),
DownloadZip: getValueGM('MangaDownloadZip', false),
Timer: getValueGM('MangaTimer', 1000),
Zoom: getValueGM('MangaZoom', 100),
alwaysLoad: getValueGM('MangaAlwaysLoad', false)
};
// Icons in Base64 format
const icon = {
enlage: 'data:image/png;base64,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',
reduce: 'data:image/png;base64,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%3D%3D',
restore: 'data:image/png;base64,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%3D',
fitwidth: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAF8UlEQVR42r2X+09URxTHv3v3gfvgjSCLoigVrRCt1kSiKCJUK6gLFBZp6i81pk1jmpg0/RuaJiZNm9gY+4tNkVV5KRApbylB46MasSpFURQQ5M3Cyj7u7ZnZXcrjQkGlk5w7y83cOZ+Z75lzBgUAVUFRUbFSUKSKkgTWFFicJnl6QaGAS5TKMtPTTcyXb3FJ8XDiRwchia5Fcz4ZQiEoUff7JZgOmfyYv6WFxUU9u1PSUHr7CZTC4u6ASwTSNq9GbWUpMkzpocxXKAF0JxHAlbttUAkCFO+KQJr2J0nsJNu3MQo1boCwKQBVze1Q8S14SwLJ/VDwmJKmvHa6JCTHrZQHqLn/AsLAU4jWVxClN3EsufWjTtAHQwiNhhL/QngBkmJXEEDZVAAWA/UPO+Fsu47MzKx3osDF8ir4hL9HEG737hiQsHP9cooBGYCGR1143dqErKxstD19RkooPGr8lyQSXzzTOGrVSvyal4dMkwk6nY5DaI1rOQRDYAA71kXIAzT93Q1rSyMHeNb+nE6EACXFhCDMDSDSpC4Kb5coYmXkCuTl5yN138f0rRIGXwMKyqthiFhLy3ADxMcY5QGuP+7B8MMGAjDjRUcnVColfin9k0AUfDfkZXdP+nnaB3A6XVgeYeQAmRkZsI5Y4aPRcIjCK9XwjVhH40VsjV6GuukAiQRw+8kr9D+4ygE6O7voRChpAuW8AMYdLg5gNIZzgNycHIzb7bCN2aBRq6HT61BSUQuDMQab1yyVB7jzrBe9zfUcoOtlN9S0A6cv3SIQApglDpiuLLKPHdwCBwGELwvDjZs30dLaOvEFk+az3FxcuGBByIZd2LQqhABKZwLca+/Dy3t1yCaAnu4eLoFGrXTnhjmak/S3e3ZAa9DBV2+QHXeeAJbFJSIuMlgGIDkV9zsG0Xm3hgO86u3jjk8VXueBOFtuYtHPAvCrT7ZxEHFaAmESMQsLXcoBjBuTsCEiAHVVZTMBHnUNof12NbKzzejr6+cAPmoVAcwlgSfFknPuzPuSHiKHc/EYCQkJxvnzFkRu3oOYcP9pAEVF3btSUtHaPYS2m9UwE0D/wAAH+OniNd7PdRClqY+JdwzqeFY874MCA2EhgKgP9yA6zB/1LAjTpwG09Qyj9UYVBxgcHJq0AwsvUF5pxh1ODhAQ4M8BorcmIyrUTx6gvW8Ej65VcoCh4WEO8EN+o6dALQyAbQFz/HXOdt77+/lxgJhtKYgM9pUH6OgfxV9NFRxghJIIu7nw7RcUb+KfLjju2GA3LV9KRgzg/fi9iAjSywN0DY6h+Y8rMJvNsI6O8omESc69Ms9WKL1lY/J476kw6PWwWCyI3bEP4QE6eYCeIRvuNJQjx5zDMxhbuYoZnQI2m90p8oieC4BlTY3KLRlLUE42nkyr0yLfko9NCfsR6q+dCbCTjmH/6GvcqivjAKLTDoEmGrY6cMLSgtZeG+q+3QKXQ4L38jq9McmUagUSv7uF6BAtTprXws+gprlEmkvDAbYkpiJIvwRXq2QAhsbGcaO2lCTIoazmwI8VT3C2sQNsQSc/jUXC+tB56d/woAcnfmum1QNHtkfg+N7VlFXVJEE+tu5Og7/ORx7AanPgWu1lHoRhRwsQZNDAd4mKFyLrayc3hyfhyEpA49QUtAb6hhkbN0Lf9Fvt6D6TyYNw2+4DMGjVMwESCMBmd6KxsoRLIFEBOVPVgu8L7/E8cPrLeCTEGue3A82dOHaqieeBbzLicDSZ7gJ0t2ASbE85BK1GhQY5AFZQ6iuKcZhKqbeN2ew4crIGD58PoPnnw/MCiP3iHNatCMTZE0nQaTUT789Rmd6118QL3FQAqgUJe1L5ma0pL0Du4dx5OVpoyzuXh6T9mTy3NFRPqgVFJcV0DA/QmRX5QNZ7f7Mc7C3G4lxJYCIQ6DR4MgGfwRMvgiBw8/6ur7yM9EMm7w4UPyY/hongmoefhbbJd1sWrOTKmmEyrWGvAsiiyAKxeP+VTW9sfQNkbcyhmkxPpnmrKRfe7GSj/9eKZ23/AIvHO8UE3E62AAAAAElFTkSuQmCC',
reload: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC70lEQVR4XrXQa0xTdxgG8Pd/es6x2JbL2iINtCQdAkvAuOAwBMKMfiBZJGWMYQIx68plwwEbUfACeIlGyJbQVYMxsjGGZkHDIFZHIBurboOQESgLldaISMu6cmprSi/0cnp6TL8IiSb9tN+H5+OTJw/8r/rHVgCgAr7qmZKoLown7y3rgiMnf4aY2q/roeP6Aio/9RtZc/F33kedMw0lx3WnDzcP88pbhmE7DLb5dcYKc4+cmG2DfXva5D5qecFe0JuD3Wa7T+XYxOp8RNIhQZIfK+8Yeb1gdMEFhDgR1xoDBxxhUuOkUY+XxVq9GPnFBmLzvDhK93B31lu58sxnkAOl6gmIwqNx1eCDD3P2waUHf+Q7gsEOGoWkDArq6YjfhyfFZ0X4vEyaA5gHMfsZv/f9t+z9T6hwLvNqgWnZAicmx/mrNluR3W7+208ZVLRtXpnEed6YmCn6E0Q7vGGOf3bTtXbNaTZO25aMEceKCV4p674Dn3yvEyi6bhfkHW0XjrIsFKon4NPhxYT83qmz0vPa07tqr7ybuL8qLq1uEF4jEUuh9KQaiqubUXF1E6hnLaCZ+5dT1TsWv+ezb8QJB1VkG8tCTDcWKfjBQOHKSUpeol1TFfb99fGe1qtEkfoefD4wB19PPI1v/k4nrzg3QNRotFsnqkaWgAcvsIePPRlOGi9x0JjCFwplRdxhdXZKKpEpyyVJMk5KebwKT4ixUVbTEAMZsHWi1Q5GysE1WV21z9b8lxxr3kN+q18IG/wD/3l3n11YYTSrtsCPLqe7aNNpX/yyryvkWP4HolA0pGf6gSWmMCxYUYloUTfQWDoKM4AAsRiLIlwcC6UIgrNCZLnsNmoncZ4ofP+mZqsgStY0CCzji8ciu08hmtfIBNZXI3TQirGEm2AC8wJ2/Zc485AxCHxGP6+DN5LV3gJZ3VB2uuruT2mV3yoTi6tTxIX1wuR3PiDeazMACTFIlC2QWnOOk1rVWSApOyaXKBoglpfB+En628ogAgAAAABJRU5ErkJggg%3D%3D',
zoomin: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACoUlEQVQ4jZXQu2tTYRjH8e9535OTmDQxaZuYU6NNi9a7CaiQSczmWBGKm0WHLkL9DxTETSkF0YqD1kEUvCJI6yBxUiTVqPUKLa1JJfZiehLTkzQ3h1htQBB/08sLz+e5KKzKmXMXgk1O16lyuRJ0N7cemJv9lpifn0/ksrnhK4NnY/wlcuUxcPn6gKPJeVNv2xhuD24OtrT4aXK1+NfYHeHFbLa3o2uXe/zls9G/AucvXRtwujwnd+/ey7auLvR1PrwtHvR1Xta3BViqOjCM75HOLduD7149f9AAXBy+Ha5Uqtf27Y3Q2R7AqqlIqSAVBVUKbFYNn7eV5HdBcWku3NG14+mHxIupFUDMpJL9fn0D7YH1lCoK+QKUynD07CRCAaFAs8vKntBOmv2bsdrs/asnEJUq4TZdR5UKDiustYMUUDRzmMtQAwTgb3bh14NYNK17NaDmzULYscaGFPXCI6cnKZo5CmaOQ/0jFMwsDy/1oKoKrR4XFovWcEQ19yM/ZWSNoCo3IBW4faYTgP3HRnhy5SDVGmTy9VVUKbBqlgZAmEtLicmpaaSoISWovyYpmFmEAEX582eaBppFJhqAUml5MP7qNV/Ts6gSpKx3G7vVg1CgWoVSBbI/8mTmviAUBhuAu8MXYkZm4f6Ne4+YXcjULy9AAWo1MJdhYdHg8cgdPr2Nk/oYb5hAAmzaFho1DGPr64+TW/PFMlbNSiZXYN4wmfgyw/j4Sz6/f4PHViWdTh+JRqOj8Xg8DfVGv9Nz/GSv2+3pd3s84SanE01KqrVKorxcHNzZ4SOdTl+NxWIUi8VFXdejQ0NDiQbgX+nr6+sNhUK/EbvdHpX/LvuTsbGxRCAQmI5EIt2pVMqWTCYP/xewgvh8vmmv19s9MTFx4ifGBwN4Ure0EAAAAABJRU5ErkJggg%3D%3D',
zoomout: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAClElEQVQ4jZWQTUsbURiFz9w7mYmOSfNhYkZjjVJTba0J1EKW8R8IBXEpdOGmoP+gBemuRQJSCV1Uuyhd2C8KhXSVrlqK0bGkrS4MamJNNRonMZmJSSZdxFgHBOmBy3u5cJ733MPgnKYfz3paTOYHlUrVY7G1Bvf3/kiZTEbK5/ILz0KPorhAtHGZCb+YEVpMr8T2q/4uT6/HbnehxWx3NTUJ/qNcbrzbe8sSX/4SuRDwZG5+xmS2Tg0ODqHf64XY5oTDboXY5kBHuxtFTYAsHwZ6rt/w/Fj5+l4HeLqw6K9Wtfk7QwH0dLnBcywoZUAZBiwlMPIcnI5WJA8JSsV9f7f35udf0rfNBoDspJKTLrETXe4OlKsMCipQrgAMA5DTYzPzuO0bgM3VC97YPHk+Aalq8LeLIljKQOCBK80AJUChBCgnQA0AAeCymeESPTBw3Mh5AFtQVL/QZAQldePYwwRKSh6qkkdJOYaq5PBhbhQsy6DVaobBwOlKZPPHhU05J3tY2gnKAIvTPQAArQZoWn1mC/WvsJSA5ww6AFGKRSmxuQVKaqAUYE+TUAYgpN5F401RZHAGKukA5fJJaGllFb/Te2ApQOlpeaQ+NQ0oV4HccQHZ/W0QBiEd4M3CbFTOHrx7+fYj9g6yZ2YGQK1WL/LgSManyGusx5eQWlvSJaAAcK3fF5FluW91LdFXKFXAczyyeRUZWUFiewfx+DLWf36Hjdewu7s7FgwGI7FYLA3UF51p9N7UuMVinbRYrX6TyQQDpdBqValyUgoNdDuRTqefR6NRqKp6JIricDgclnSAyzQxMTHu8/nOIIIgDNPLbf8Ui8Ukt9u9FQgERlKplDGZTN79L0AD4nQ6txwOx8jGxsb9vyYg/nmG24G2AAAAAElFTkSuQmCC',
zoomrestore: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACsUlEQVR4Xp2SW0iTYRjH/5/fYdtnTc0jrhPW0Dwt7HC3mZBeKF1pbVoO26V3RkK3URcqiLBADRxEXZR2o9LuDAaKeSHOw1ZuRdBhTs3cNL9tbt/29m6gqASBP/jB8168fx6e50FHR0eb1Wp9PjAwMJS0v79/aHBw0NbV1fWiurr6Av5Hc3PzbXKAQCBAnE4nsdvtpLe3N2Qyme7W19fnVVVV8fgXra2t9wglFouR5eVl4nA4SDAYJHvE4/HE1OSkq6WlxczzfAaOkMayrAKUiYn3cLncMBgM8K1vYnbxIz55v2B6doEprdSV9XR399TV1d0CIBwKoChBYdk01NbehNv7FcHtPziVnQ3CKxCJxjDhmMYJdVa+xdL2QBTFs4cCqFw4HIbX+xlqtRo//GvIzc9HFDx2EgK2IMLj/42ZuXkY9IZiGlB8NECIRqNITxeRhBMU8EsEHzeicK2F8TPEYEVi8GP1F3Jy80SO43IAMHsBXLImhCCwGQAt8G1lHf7vEviTWal3PCFDIXA4f7oQ66v+CB327qEOGAYQBAEZGWr4fD6Ua89BlgKAHIHA0/DwDs5nqXCl4hLG39lXJGnHA4DsdwBCwPMcWI7H6OgYzGYz0pUiphY+YXMjhJIzBbhxVY/ZmQ/o6+uTI5HdNBzEct/SGYmEydLiIrHZbOSZ1ZqqSVwmSf5sBcn42Bi5dv06KSoqInTtSwAq9odIQCDLMra2t6DRFILlWLwZHsaDh53JM8fjJ0/hnJ+HrrICoVAoodfrywG8pl7e2wKbHIRWq4VOp0NDQwNMRiOampqojTAa76Rsb2+HJElzHo8HNTU1ZSqV6hWAEoZenkmrvfhIqVTy2IMACUJSBcMwKelneWTk7UvaRalGo7FkZmbC7XY34hiUUa1UG7Ucx0BBzaMWUMW/uh49keTZSXYAAAAASUVORK5CYII%3D',
zoomwidth: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyUlEQVR4XqWSX0hTbRjAn/ecdSbbNJdFK/p3tTAvXI4IwrwJ6vtEqK819abIG1GCYRcFs+FNXdS+z82tP1ARpX7VVUVoYgWl07oItH8KUcHUxf7Y5v667exse3rfEUsxr/rBw3k453l/D895XmI2m3dJkqQGilwuj25YX2FGgFpCuApEhGw2G+QITCdT6QZRFJEQAkvhKisrr1RVVY3Q53OFQjGcTqebjxmObjMYDMqmxkal8djR7YhYX6pSuZhwBQ6HYw4RpcHBAan7v3/ziWQK/7Z7kJFIxPGv7jkMR6LodPRgj912x2KxQFdXVzHAbrfPIqW/rw8XQiFsuu7Djvte9M8H0fPNi6f/n8XDlz0YDC1gZ6f5lc1mY2eKIYOf8DyB9l4vfIqoYMaPYPiaBkYuD5AUJWi9HYfdcqG0rKwMlv6HoiBPC6+d2ARtdxOgKefhwpG1wCY+PxgDd0CCWy2bwWoVI5FIlDbjVgrWCAJEowtgN5bDuScZUClKCp2CyTjcbNkA8ej3rChmwjzJQy6HwCA0iiqtVgsvR8Ygk4rBxQYOovFFiC2mwGlUQSIWgkePB5J0zVU8yZUCEuConOeWCHQ6Hej1ehh1jUE4HCl0RzqX1+eD4eGnyPOykuPG+i0YfO+XcXgij2T5CIgI1dXVLIGhoaHiOyZSq9Ugzb/1ZKWdOw7otspdHyZu5Mr1OSq5y1Yxg4i5TCaDLBhut3tZeDwebG0/ZbW21Uw6THvj7+6dwauW5rSz2/qPDCk5Cr2yhXFoChqN5tdV5TjgeR54QhSX+idrLCf3BJ65RsnB/bXKkenJXiZghwrxG4o75whCKAHgmvi8sU6v9Y9PffGVKDUVMtpBTovWwOoUJIIglLD8ozsND1+/0Tg79o0LXH5AFggEHphMJgUASLAKAmVqauoFyxfFPLQdWgc1dYbaOuNZIGyEP+EHsrF5Hxph5xoAAAAASUVORK5CYII%3D',
hide: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAbpJREFUeNrUk8FKAlEUhu9oqRQ2JCG0UBgNWijWQkFhiAqaXERLceE21+16A1+gRQshCFy5MGiTCROBguEqzGkVI0kgumihOKQw3f4zOL2Aqw58MHPv+f9zzr0zAuecLRIOtmAsbCAgrIf5KGtgHyggBHzzvC+ggxp4AiNbZxsIMDh1u91niqJs5XI5v6Zpq41Gw0WbsizPIpHIpFQqDWu12vt0Oi1Cd0d1aQQPOE8kEhf1el2uVCrbpmmuBwIB12RiMAIiF63RHuVQLmksrdPpTKPq42AwmBqGwQlVVTlFsXjNZfmAK8oJR1fc3qdc0pB2CS7ZZDLpQ/uu2WxmzVUoFFDZZJeXV9Z7OBxln59vzN6nXNKgUJYMblqt1vpoNNr2IChBkiSmqk2WSh1ZAo/HzZaXpT+DbwQ0H6R1OhyOfrfb/Wk2m2Y8Ht8QRdGLeZmmvbJQaIeJog/VNXZ4uGcZ67rez+fz9ziLW7oVAXPYV5FEA8fpdDqayWSivV5vs91ue6liLBYbB4PBfrlc7lSr1Q4aeMDyM52TbWB/FysgAnaBH3jn62MwBC9AA4b97Qj//19Y2OBXgAEA3HnRUkre/J0AAAAASUVORK5CYII%3D',
settings: 'data:image/png;base64,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%3D',
menu: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABqUlEQVR4XqWTPWtUQRhGz/vO7HWDYNJaWyz5FSJEgoWlYCGInaClCGpI4geC1mJjIWshqGn9CGwQf4TmJo0/wRRK1Jt7H+eOO8VCsIgHHjjD8MDMy4ydfLD57cfvdqFphZjFAB3mBgM3jldhjxOr73RU5lM3Np0A+Fp/BjcMw62PeL7jXBm1AMlDdil5bayeX6TvRkRmvBsJbikD3CPQUIUDXuwGAConuwTBBYCAyJRLyyOCQYxw7ZHx5KZ4tbnDhaURABuTbS4uLSLBm+QFB8ty/bExDHD1ofH0hqAFU0voyHF1ZFcKohDL7Me3xeVUHt8STQvRyFcaOJni6j0YGUEElaPwckVIEAAPUAVjOCBTHCU3oxCLvp7UuDnBI+4BOGAYnY2tGoBjUxeiKi2AuTtv1fNrmi5l+T5qJT2b1PoppfT+Jft+9m319N0yRM7dNSrg7D3jw4oAMHU45Fin7AHww4a4tSbOrBsf10UHWHmyZDC37ALC7AxUPJcBvGwimHUsl6As/usv9N0413z/NL/2/nTTdnSigP3jO5oZg2D0XQNOAQscjb0/9SM6Il0maJIAAAAASUVORK5CYII%3D'
};
const scheme = new ColorScheme().scheme('mono').variation('default');
// Add custom Themes to the page
function addTheme(theme) {
return '';
}
function addCustomTheme(color) {
const bg = scheme.from_hex(color).colors();
return addTheme(['Custom_Dark', '#000000', '#' + String(bg[2]), '#' + String(bg[3]), '#' + String(bg[0]), '#' + String(bg[1])]) + addTheme(['Custom_Light', '#eeeeec', '#' + String(bg[3]), '#' + String(bg[2]), '#' + String(bg[0]), '#' + String(bg[1])]);
}
function loadThemes() {
const bg = scheme.from_hex(settings.CustomTheme).colors();
return [ // 1-body 2-text 3-lines 4-painel 5-Buttons
['Dark', '#000000', '#ffffff', '#666666', '#333333', '#282828'],
['Light', '#eeeeec', '#2e3436', '#888a85', '#babdb6', '#c8cec2'],
['Clear', '#ffffff', '#2e3436', '#888a85', '#eeeeec', '#d3d7cf'],
['Dark_Blue', '#000000', '#91a0b0', '#586980', '#3e4b5b', '#222c3b'],
['Tango_Blue', '#000000', '#82a0bf', '#3d669b', '#304c77', '#102747'],
['Lime', '#000000', '#8abd59', '#608d34', '#38531f', '#233413'],
['Plum', '#000000', '#ad7fa8', '#75507b', '#49324d', '#311b37'],
['Light_Plum', '#eeeeec', '#5c3566', '#9b71a2', '#ad7fa8', '#d2b8ce'],
['Earthy', '#000000', '#ffffff', '#693d3d', '#46211a', '#683327'],
['Cool_Blues', '#000000', '#c4dfe6', '#66a5ad', '#07575b', '#003b46'],
['Custom_Dark', '#000000', '#' + String(bg[2]), '#' + String(bg[3]), '#' + String(bg[0]), '#' + String(bg[1])],
['Custom_Light', '#eeeeec', '#' + String(bg[3]), '#' + String(bg[2]), '#' + String(bg[0]), '#' + String(bg[1])]
];
}
const themes = loadThemes();
const themesSelector = R.map(theme => '' + String(theme[0].replace('_', ' ')) + ' ', themes);
const themesCSS = R.map(theme => addTheme(theme), themes).join('');
const painel = '\n
\n \n
\n
Zoom: ' + String(settings.Zoom) + ' %
\n
';
const shortcuts = '\n\n + or = : Global Zoom in pages (enlarge) \n - : Global Zoom out pages (reduce) \n * or 8 : Global Restore pages to original \n 5 : Global Fit window width \n Arrow Right or . : Next Chapter \n Arrow Left or , : Previous Chapter \n
';
const controls = '\n\n Theme: \n \n \n ' + String(themesSelector) + '\n \n Pages/Second: \n \n 0.3 \n 0.5 \n 01 \n 02 \n 04 \n 08 \n 10 \n \n Default Zoom: \n \n 50% \n 75% \n 100% \n 125% \n 150% \n 175% \n 200% \n Fit Width \n \n Fit Width if Oversized: \n \n Show Thumbnails: \n \n Download Images as Zip Automatically: \n \n Always Load Script: \n \n
';
const chapterControl = R.curry((id, target, manga) => '\n');
const chapterControlTop = chapterControl('ChapterControlTop', 'ChapterControlBottom');
const chapterControlBottom = chapterControl('ChapterControlBottom', 'MangaOnlineViewer');
const title = manga => '';
// Add Pages Place holders
const listPages = R.times(index => '\n\n
\n
\n
\n
\n
\n
\n
\n
' + String(index + 1) + ' \n
\n
\n
\n
\n
');
const listOptions = R.times(index => '' + String(index + 1) + ' ');
const listThumbnails = R.times(index => '' + String(index + 1) + ' ');
const body = manga => '\n\n ' + String(title(manga)) + '\n ' + String(chapterControlTop(manga)) + '\n
\n ' + String(listPages(manga.quant).join('')) + ' \n
\n ' + String(title(manga)) + '\n ' + String(chapterControlBottom(manga)) + '\n ' + painel + ' \n ' + controls + '\n ' + shortcuts + ' \n
\n 0 of ' + String(manga.quant) + ' Pages Loaded \n Go to Page: \n # ' + String(listOptions(manga.quant).join('')) + ' \n
\n
\n
\n
0 of
' + String(manga.quant) + ' Pages Loaded\n
\n ' + String(listThumbnails(manga.quant).join('')) + '\n
\n
Download \n
';
// Inject CSS for this script
const readerCSS = '\n';
const externalScripts = ['', '', '', '', '', '', '', ''];
const externalCSS = [' ', ' ', ' '];
function reader(manga) {
return '\n\n ' + String(manga.title) + ' \n \n ' + String(externalScripts.join('\n')) + '\n ' + String(externalCSS.join('\n')) + '\n ' + readerCSS + '\n ' + String(themesCSS) + '\n\n\n ' + String(body(manga)) + '\n';
}
// Check if the value is empty
const isEmpty = R.either(R.either(R.isNil, R.isEmpty), R.either(x => R.length(x) === 0, x => x === 0));
const mapIndexed = R.addIndex(R.map);
// Adds an image to the place-holder div
function addImg(index, src) {
logScript('Image:', index, 'Source:', src);
$('#PageImg' + String(index)).attr('src', src).parent().slideToggle();
$('#ThumbNailImg' + String(index)).attr('src', src);
return index;
}
function getPage(url, wait = settings.Timer) {
return new Promise(resolve => {
setTimeout(() => {
logScript('Getting page: ' + String(url));
$.ajax({
type: 'GET',
url,
dataType: 'html',
async: true,
success: html => resolve(html)
});
}, wait);
});
}
const loadMangaPages = manga => mapIndexed((url, index) => getPage(url, (manga.timer || settings.Timer) * index).then(response => addImg(index + 1, $(response).find(manga.img).attr('src'))), manga.listPages);
function getImages(src, wait = settings.Timer) {
return new Promise(resolve => {
setTimeout(() => {
resolve(src);
}, wait);
});
}
const loadMangaImages = manga => mapIndexed((src, index) => getImages(src, (manga.timer || settings.Timer) * index).then(response => addImg(index + 1, response)), manga.listImages);
function loadManga(manga) {
logScript('Loading Images');
logScript('Intervals: ' + String(manga.timer || settings.Timer || 'Default(1000)'));
if (manga.listPages !== undefined) {
logScript('Method: Pages:', manga.listPages);
loadMangaPages(manga);
} else if (manga.listImages !== undefined) {
logScript('Method: Images:', manga.listImages);
loadMangaImages(manga);
} else {
logScript('Method: Brute Force');
manga.bruteForce({
addImg,
loadMangaImages,
loadMangaPages,
getPage,
getImages
});
}
}
// Force reload the image
function reloadImage(img) {
const src = img.attr('src');
img.removeAttr('src');
setTimeout(() => {
img.attr('src', src);
}, 500);
}
// After pages load apply default Zoom
function applyZoom(page, newZoom) {
const zoom = newZoom || settings.Zoom;
const pages = page || '.PageContent img';
$(pages).each((index, value) => $(value).width(zoom === 1000 ? $('html').width() : $(value).prop('naturalWidth') * (zoom / 100)));
}
// Checks if all images loaded correctly
function checkImagesLoaded() {
const images = $('.PageContent img').get();
const total = images.length;
const missing = images.filter(item => $(item).prop('naturalWidth') === 0);
const loaded = images.filter(item => $(item).prop('naturalWidth') !== 0);
loaded.filter(item => $(item).attr('width') === undefined).forEach(item => applyZoom($(item)));
missing.forEach(item => reloadImage($(item)));
NProgress.configure({
showSpinner: false
}).set(loaded.length / total);
$('#Counters i, #NavigationCounters i').html(loaded.length);
logScript('Progress: ' + loaded.length / total * 100 + '%');
if (loaded.length < total) {
setTimeout(checkImagesLoaded, 5000);
} else {
logScript('Images Loading Complete');
$('.download').attr('href', '#download');
logScript('Download Avaliable');
if (settings.DownloadZip) {
$('#blob').click();
}
}
}
const cache = {
zip: new JSZip(),
downloadFiles: 0,
Data: {}
};
// Converts Images into Base64
function customBase64Encode(inputStr) {
// Source: http://stackoverflow.com/questions/8778863/downloading-an-image-using-xmlhttprequest-in-a-userscript/8781262#8781262
/* eslint-disable no-bitwise */
const bbLen = 3;
const enCharLen = 4;
const inpLen = inputStr.length;
let inx = 0;
let jnx;
const keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
let output = '';
let paddingBytes = 0;
const bytebuffer = new Array(bbLen);
const encodedCharIndexes = new Array(enCharLen);
while (inx < inpLen) {
for (jnx = 0; jnx < bbLen; jnx += 1) {
/* --- Throw away high-order byte, as documented at:
https://developer.mozilla.org/En/Using_XMLHttpRequest#Handling_binary_data
*/
if (inx < inpLen) {
bytebuffer[jnx] = inputStr.charCodeAt(inx) & 0xff;
inx += 1;
} else {
bytebuffer[jnx] = 0;
}
}
/* --- Get each encoded character, 6 bits at a time.
index 0: first 6 bits
index 1: second 6 bits
(2 least significant bits from inputStr byte 1
+ 4 most significant bits from byte 2)
index 2: third 6 bits
(4 least significant bits from inputStr byte 2
+ 2 most significant bits from byte 3)
index 3: forth 6 bits (6 least significant bits from inputStr byte 3)
*/
encodedCharIndexes[0] = bytebuffer[0] >> 2;
encodedCharIndexes[1] = (bytebuffer[0] & 0x3) << 4 | bytebuffer[1] >> 4;
encodedCharIndexes[2] = (bytebuffer[1] & 0x0f) << 2 | bytebuffer[2] >> 6;
encodedCharIndexes[3] = bytebuffer[2] & 0x3f;
// --- Determine whether padding happened, and adjust accordingly.
paddingBytes = inx - (inpLen - 1);
switch (paddingBytes) {
case 1:
// Set last character to padding char
encodedCharIndexes[3] = 64;
break;
case 2:
// Set last 2 characters to padding char
encodedCharIndexes[3] = 64;
encodedCharIndexes[2] = 64;
break;
default:
break; // No padding - proceed
}
/* --- Now grab each appropriate character out of our keystring,
based on our index array and append it to the output string.
*/
for (jnx = 0; jnx < enCharLen; jnx += 1) {
output += keyStr.charAt(encodedCharIndexes[jnx]);
}
}
return output;
/* eslint-enable no-bitwise */
}
// Generate Zip File for download
function generateZip() {
if (cache.downloadFiles === 0) {
$('.MangaPage img').get().forEach((value, index) => {
const img = $(value);
const filename = 'Page ' + String(String('000' + String(index + 1)).slice(-3)) + '.png';
const src = img.attr('src');
if (src.indexOf('base64') > -1) {
let base64 = src.replace('data:image/png;base64,', '');
const i = base64.indexOf(',');
if (i !== -1) {
base64 = base64.substring(i + 1, base64.length);
}
cache.zip.file(filename, base64, {
base64: true,
createFolders: true
});
logScript(filename + ' Added to Zip from Base64 Image');
cache.downloadFiles += 1;
} else {
try {
GM_xmlhttpRequest({
method: 'GET',
url: src,
overrideMimeType: 'text/plain; charset=x-user-defined',
onload(e) {
const base64 = customBase64Encode(e.responseText);
cache.zip.file(filename, base64, {
base64: true,
createFolders: true
});
logScript(filename + ' Added to Zip as Base64 Image');
cache.downloadFiles += 1;
}
});
} catch (e) {
logScript(e);
}
}
});
}
const total = parseInt($('#Counters').find('b').text(), 10);
if (cache.downloadFiles < total) {
logScript('Waiting for Files to Download ' + String(cache.downloadFiles) + ' of ' + String(total));
setTimeout(generateZip, 2000);
} else {
const blobLink = document.getElementById('blob');
try {
blobLink.download = String($('title').text().trim()) + '.zip';
cache.zip.generateAsync({
type: 'blob'
}).then(content => {
blobLink.href = W.URL.createObjectURL(content);
logScript('Download Ready');
$('#blob')[0].click();
});
} catch (e) {
logScript(e);
blobLink.innerHTML += ' (not supported on this browser)';
}
}
}
// Clean key press configurations and set some when specified
function setKeyDownEvents() {
try {
$(document).unbind('keyup keydown keypress onload');
$(W).unbind('keyup keydown keypress onload');
document.onkeydown = null;
document.onkeypress = null;
W.onkeydown = null;
W.onkeypress = null;
W.onload = null;
document.body.onload = null;
} catch (e) {
logScript('Keybinds error: ' + String(e));
}
function processKey(e) {
const a = e.keyCode || e.which;
if ($.inArray(a, [39, 46, 190, 37, 44, 188, 43, 107, 61, 45, 109, 42, 106, 56, 104, 53, 101]) !== -1) {
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
switch (a) {
case 39: // down:right
case 46: // press:right / down:.
case 190:
// press:.
$('.ChapterControl:first .next')[0].click();
break;
case 37: // down:left
case 44: // press:left / down:,
case 188:
// press:,
$('.ChapterControl:first .prev')[0].click();
break;
case 43: // +
case 107: // numpad+
case 61:
// =
$('#enlarge').click();
break;
case 45: // -
case 109:
// numpad-
$('#reduce').click();
break;
case 42: // 5
case 106: // numpad5
case 56: // 8
case 104:
// numpad8
$('#restore').click();
break;
case 53: // *
case 101:
// numpad*
$('#fitwidth').click();
break;
default:
break;
}
return false;
}
return true;
}
if (navigator.userAgent.match(/mozilla/i)) {
$(document).keypress(processKey);
} else {
$(document).keydown(processKey);
}
}
// Controls for the extra features added to the sites
function controls$1() {
// Size Controls
$('#enlarge').click(() => {
settings.Zoom += 25;
$('#Zoom b').html(settings.Zoom);
applyZoom();
});
$('#reduce').click(() => {
settings.Zoom -= 25;
$('#Zoom b').html(settings.Zoom);
applyZoom();
});
$('#restore').click(() => {
settings.Zoom = 100;
$('#Zoom b').html(settings.Zoom);
$('.PageContent img').removeAttr('width');
});
$('#fitwidth').click(() => {
settings.Zoom = 1000;
$('#Zoom b').html(settings.Zoom);
applyZoom();
});
$('#fitIfOversized').change(event => {
$('#Chapter').toggleClass('fitWidthIfOversized');
if ($(event.target).is(':checked')) {
setValueGM('MangaFitWidthIfOversized', true);
} else {
setValueGM('MangaFitWidthIfOversized', false);
}
logScript('fitIfOversized: ' + String(getValueGM('MangaFitWidthIfOversized')));
});
$('#alwaysLoad').change(event => {
if ($(event.target).is(':checked')) {
setValueGM('MangaAlwaysLoad', true);
} else {
setValueGM('MangaAlwaysLoad', false);
}
logScript('alwaysLoad: ' + String(getValueGM('MangaAlwaysLoad')));
});
$('#showThumbnails').change(event => {
$('#Navigation').toggleClass('disabled');
if ($(event.target).is(':checked')) {
setValueGM('MangaShowThumbnails', true);
} else {
setValueGM('MangaShowThumbnails', false);
}
logScript('showThumbnails: ' + String(getValueGM('MangaShowThumbnails')));
});
// Download
$('#downloadZip').change(event => {
if ($(event.target).is(':checked')) {
setValueGM('MangaDownloadZip', true);
swal({
title: 'Attention',
text: 'Next time a chapter finish loading you will be promted to save automatically',
timer: 10000,
type: 'info',
confirmButtonText: 'OK'
});
} else {
setValueGM('MangaDownloadZip', false);
}
logScript('downloadZip: ' + String(getValueGM('MangaDownloadZip')));
});
$('#blob').one('click', generateZip);
$('.download').click($('#blob')[0].click);
$('#PagesPerSecond').change(event => {
setValueGM('MangaTimer', $(event.target).val());
});
$('#DefaultZoom').change(event => {
settings.Zoom = $(event.target).val();
$('#Zoom b').html(settings.Zoom);
setValueGM('MangaZoom', settings.Zoom);
applyZoom();
});
// Theme Control
$('#ThemeSelector').change(event => {
const target = $(event.target);
$('#MangaOnlineViewer , body').removeClass().addClass(target.val());
setValueGM('MangaTheme:', target.val());
if (target.val() === 'Custom_Dark' || target.val() === 'Custom_Light') {
$('#CustomThemeHue').show();
} else {
$('#CustomThemeHue').hide();
}
});
jscolor(document.getElementById('CustomThemeHue'));
$('#CustomThemeHue').change(event => {
const target = $(event.target).val();
logScript('CustomTheme: #' + String(target));
$('style[title="Custom_Light"], style[title="Custom_Dark"]').remove();
$('head').append(addCustomTheme(target));
setValueGM('MangaCustomTheme', target);
});
// Goto Page and ThumbNails
function scrollToElement(ele) {
$(W).scrollTop(ele.offset().top).scrollLeft(ele.offset().left);
}
$('#gotoPage').bind('change', event => {
scrollToElement($('#Page' + String($(event.target).val())));
});
$('.ThumbNail').bind('click', event => {
scrollToElement($('#Page' + String($(event.target).find('span').html())));
});
// Settings Control
$('#settings').click(() => {
$('#ViewerControls').slideToggle();
$('#ViewerShortcuts').slideToggle();
$('#ImageOptions').toggleClass('settingsOpen');
$('#Navigation').toggleClass('visible');
});
// Individual Page functions
// Reload Page
$('.Reload').click(event => {
reloadImage($(event.target).parents('.MangaPage').find('.PageContent img'));
});
// ZoomIn
$('.ZoomIn').click(event => {
const img = $(event.target).parents('.MangaPage').find('.PageContent img');
const ratio = img.width() / img.prop('naturalWidth') * 1.25 * 100;
applyZoom(img, ratio);
});
// ZoomOut
$('.ZoomOut').click(event => {
const img = $(event.target).parents('.MangaPage').find('.PageContent img');
const ratio = img.width() / img.prop('naturalWidth') * 0.75 * 100;
applyZoom(img, ratio);
});
// ZoomRestore
$('.ZoomRestore').click(() => {
$('.PageContent img').removeAttr('width');
});
// ZoomWidth
$('.ZoomWidth').click(event => {
const img = $(event.target).parents('.MangaPage').find('.PageContent img');
applyZoom(img, 1000);
});
// Hide
$('.Hide').click(event => {
const img = $(event.target).parents('.MangaPage').find('.PageContent');
img.slideToggle('slow');
});
}
// Organize the site adding place holders for the manga pages
function formatPage(manga) {
logScript('Found ' + String(manga.quant) + ' pages');
W.stop();
if (manga.quant > 0) {
let cancel = false;
if (!settings.alwaysLoad) {
$('head').append('');
swal({
title: 'Starting MangaOnlineViewer',
text: 'Please wait, 3 seconds...',
showCancelButton: false,
confirmButtonText: 'No, cancel!',
confirmButtonColor: '#DD6B55',
closeOnConfirm: true
}, isConfirm => {
cancel = isConfirm;
});
}
setTimeout(() => {
if (cancel) {
logScript('Aborted');
return;
}
if (manga.before !== undefined) {
manga.before();
}
document.documentElement.innerHTML = reader(manga);
setTimeout(() => {
try {
controls$1(manga);
setKeyDownEvents(manga);
checkImagesLoaded(manga);
logScript('Site rebuild done');
setTimeout(() => {
loadManga(manga);
}, 50);
} catch (e) {
logScript(e);
}
}, 50);
}, settings.alwaysLoad ? 50 : 3000);
}
}
// Script Entry point
function start(sites) {
logScript('Starting ' + String(getInfoGM.script.name) + ' ' + String(getInfoGM.script.version) + ' on ' + String(getBrowser()) + ' with ' + String(getEngine()));
// W.InfoGM = getInfoGM;
logScript(String(sites.length) + ' Known Manga Sites');
// Wait for something on the site to be ready before executing the script
function waitExec(site) {
let wait = '';
if (site.waitEle !== undefined) {
if (site.waitAttr !== undefined) {
wait = $(site.waitEle).attr(site.waitAttr);
} else {
wait = $(site.waitEle).get();
}
logScript('Wating for ' + String(site.waitEle) + ' = ' + String(wait));
if (isEmpty(wait)) {
setTimeout(() => {
waitExec(site);
}, 1000);
return;
}
}
if (site.waitVar !== undefined) {
wait = W[site.waitVar];
logScript('Wating for ' + String(site.waitVar) + ' = ' + String(wait));
if (isEmpty(wait)) {
setTimeout(() => {
waitExec(site);
}, 1000);
return;
}
}
formatPage(site.run());
}
logScript('Looking for a match...');
const test = R.compose(R.map(waitExec), R.map(logScriptC('Site Found:')), R.filter(x => R.test(x.url, location.href)));
test(sites);
}
// == Batoto =======================================================================================
var batoto = { // TODO: Webtoon support
name: 'Batoto',
url: /https?:\/\/(www.)?bato.to\/reader.*/,
waitEle: 'select#page_select:first option',
homepage: 'http://bato.to/',
lang: ['eng'],
category: 'manga',
run() {
const num = $('select#page_select:first option').length;
return {
title: $('.moderation_bar li:first').text(),
series: $('div.moderation_bar a:first').attr('href'),
quant: num,
prev: $('img[src$=\'pprev.png\']:first').parent().attr('href'),
next: $('img[src$=\'nnext.png\']:first').parent().attr('href'),
listPages: [...Array(num).keys()].map(i => String(location.hash.replace('#', '/areader?id=')) + '&p=' + String(i + 1)),
img: '#comic_page'
};
}
};
// == ComiCastle ===================================================================================
var comicastle = {
name: 'ComiCastle',
url: /https?:\/\/(www.)?comicastle.org\/comic\/.+\/[0-9]+.*/,
homepage: 'http://www.comicastle.org/',
lang: ['eng'],
category: 'comic',
run() {
const url = $('.form-control:last option').get();
const chapter = $('.form-control:first option');
return {
title: chapter.find(':selected').text(),
series: $('.navbar-header a').attr('href'),
quant: url.length,
prev: chapter.find(':selected').prev().val(),
next: chapter.find(':selected').next().val(),
listPages: url.map(item => $(item).val()),
img: '.chapter-img'
};
}
};
// == DynastyScans =================================================================================
var dysnatyscans = {
name: 'Dynasty-Scans',
url: /https?:\/\/(www.)?dynasty-scans.com\/chapters\/.+/,
homepage: 'https://dynasty-scans.com/',
lang: ['eng'],
category: 'manga',
run() {
return {
title: $('#chapter-title').text(),
series: '#',
quant: W.pages.length,
prev: $('#prev_link').attr('href'),
next: $('#next_link').attr('href'),
listImages: W.pages.map(x => x.image)
};
}
};
// == EatManga =====================================================================================
var eatmanga = {
name: 'EatManga',
url: /https?:\/\/(www.)?eatmanga.me\/Manga-Scan\/.+\/.+\//,
homepage: 'http://eatmanga.me/',
lang: ['eng'],
category: 'manga',
run() {
const chapter = $('#top_chapter_list option:selected');
return {
title: $('#main_content h1').text().split(',')[0].trim(),
series: $('ul#crumbs li a:eq(2)').attr('href'),
quant: $('select#pages option:last').html(),
prev: chapter.next().val(),
next: chapter.prev().val(),
listPages: $('select#pages option').get().map(item => $(item).val()),
img: '#eatmanga_image , #eatmanga_image_big'
};
}
};
// == EGScans ======================================================================================
var egscans = {
name: 'Easy Going Scans',
url: /https?:\/\/read.egscans.com\/.+/,
homepage: 'http://read.egscans.com/',
lang: ['eng'],
category: 'manga',
run() {
const src = W.img_url.slice(1);
return {
title: $('select[name="manga"] option:selected').text().trim(),
series: '#',
quant: src.length,
prev: W.prev_chap,
next: W.next_chap,
listImages: src,
before() {
$(src).each((index, value) => {
const img = new Image();
img.src = value;
});
}
};
}
};
// == FoOlSlide ====================================================================================
var foolslide = {
name: 'FoOlSlide',
url: /.+\/read\/.+/,
homepage: '',
lang: ['eng'],
category: 'manga',
run() {
const temp = String(location.href.substr(0, location.href.lastIndexOf('/'))) + '/';
const url = temp.match(/page\/$/) ? temp : temp + 'page/';
const num = $('.topbar_right .dropdown li').length;
const chapter = $('.topbar_left .dropdown_parent:last ul li a');
return {
title: $('title').text().trim(),
series: $('div.tbtitle div.text a:first').attr('href'),
quant: num,
prev: chapter.eq(chapter.index(chapter.filter('[href*=\'' + String(location.pathname.replace(/page.+/, '')) + '\']')) + 1).attr('href'),
next: chapter.eq(chapter.index(chapter.filter('[href*=\'' + String(location.pathname.replace(/page.+/, '')) + '\']')) - 1).attr('href'),
listPages: [...Array(num).keys()].map(i => url + (i + 1)),
img: 'img.open'
};
}
};
// == KissManga ====================================================================================
var kissmanga = {
name: 'KissManga',
url: /https?:\/\/(www.)?kissmanga.com\/Manga\/.+\/.+?id=[0-9]+/,
homepage: 'http://kissmanga.com/',
lang: ['eng'],
category: 'manga',
run() {
const chapter = $('#selectChapter option');
const origin = $('#navsubbar a');
return {
title: origin.text(),
series: origin.attr('href'),
quant: $('#selectPage option:last').last().html(),
prev: chapter.filter(':selected').prev().val(),
next: chapter.filter(':selected').next().val(),
listImages: W.lstImages
};
}
};
// == MangaDoom ====================================================================================
var mangadoom = {
name: 'MangaDoom',
url: /https?:\/\/(www.)?mangadoom.co\/.+\/[0-9]+/,
homepage: 'https://mangadoom.co/',
lang: ['eng'],
category: 'manga',
run() {
const url = $('.selectPage:first option:not(:first)').get();
const chapter = $('.chapterSelect:first option:selected');
return {
title: $('.widget-heading').text().trim(),
series: $('.widget-heading a').attr('href'),
quant: url.length,
prev: chapter.next().val(),
next: chapter.prev().val(),
listPages: url.map(item => $(item).val()),
img: 'img.img-responsive'
};
}
};
// == MangaFox =====================================================================================
var mangafox = {
name: 'MangaFox',
url: /https?:\/\/(www.)?mangafox.me\/manga\/.+\/.+\//,
homepage: 'http://mangafox.me/',
lang: ['eng'],
category: 'manga',
run() {
const num = parseInt($('select.m:first option:last').prev().val(), 10);
return {
title: $('#series .no').text().trim(),
series: $('#series a:last').attr('href'),
quant: num,
prev: $('#chnav p:first a').attr('href'),
next: $('#chnav p:last a').attr('href'),
listPages: [...Array(num).keys()].map(i => String(i + 1) + '.html'),
img: 'img#image'
};
}
};
// == MangaGo ======================================================================================
var mangago = {
name: 'MangaGo',
url: /https?:\/\/(www.)?mangago.me\/read-manga\/.+\/.+/,
homepage: 'http://www.mangago.me/',
lang: ['eng'],
category: 'manga',
run() {
const origin = $('#series');
return {
title: origin.text(),
series: origin.attr('href'),
quant: $('.page a:first').text().replace(/page 1 of /, ''),
prev: $('.readtips p:eq(4) a:first').attr('href'),
next: $('.readtips p:eq(3) a:first').attr('href'),
listPages: $('.page a').get().map(item => $(item).attr('href')),
img: '#page1'
};
}
};
// == MangaHere ====================================================================================
var mangahere = {
name: 'MangaHere',
url: /https?:\/\/(www.)?mangahere.co\/manga\/.+\/.+/,
homepage: 'http://www.mangahere.co/',
lang: ['eng'],
category: 'manga',
run() {
const num = parseInt($('.right select:first option:last').html(), 10);
const chapter = $('#top_chapter_list option:selected');
return {
title: $('.title h1').text(),
series: $('div.title h2 a').attr('href'),
quant: num,
prev: chapter.prev().val(),
next: chapter.next().val(),
listPages: [...Array(num).keys()].map(i => String(i + 1) + '.html'),
img: 'img#image'
};
}
};
// == MangaInn ====================================================================================
var mangainn = {
name: 'MangaInn',
url: /https?:\/\/(www.)?mangainn.net\/manga\/chapter\/.+/,
homepage: 'http://www.mangainn.net/',
lang: ['eng'],
category: 'manga',
run() {
const num = parseInt($('select#cmbpages option:last').html(), 10);
const chapter = $('#chapters option:selected');
return {
title: $('#gotomangainfo2').text().replace(' - ', ''),
series: $('#gotoMangaInfo').attr('href'),
quant: num,
prev: chapter.prev().val(),
next: chapter.next().val(),
listPages: [...Array(num).keys()].map(i => String(location.href) + '/page_' + String(i + 1)),
img: 'img#imgPage'
};
}
};
// == MangaLyght ===================================================================================
var mangalyght = {
name: 'MangaLyght',
url: /https?:\/\/manga.lyght.net\/series\/.+\.html/,
homepage: 'http://manga.lyght.net/',
lang: ['eng'],
category: 'manga',
run() {
const chapter = $('.selectchapter option:selected');
const url = String($('form[name=\'pageSelector1\']').attr('action')) + '?ch=' + String(chapter.val().replace(' ', '+')) + '&page=';
const num = $('.selectpage option').length;
const origin = $('div.entry h1 a');
return {
title: origin.text().trim(),
series: origin.attr('href'),
quant: num,
prev: (String(location.pathname) + '?ch=' + String(chapter.prev().val())).replace(' ', '+'),
next: (String(location.pathname) + '?ch=' + String(chapter.next().val())).replace(' ', '+'),
listPages: [...Array(num).keys()].map(i => url + (i + 1)),
img: '#mainimage'
};
}
};
// == MangaPark ====================================================================================
var mangapark = {
name: 'MangaPark',
url: /https?:\/\/(www.)?mangapark.me\/manga\/.+\/.+/,
homepage: 'http://mangapark.me/',
lang: ['eng'],
category: 'manga',
run() {
const url = location.href + (location.href.lastIndexOf('/') !== location.href.length - 1 ? '/' : '');
const num = $('.info div:eq(1) a').length;
return {
title: $('.loc a:first').text().trim(),
series: '/manga/' + String(location.pathname.split('/')[2]),
quant: num,
prev: $('.info a:eq(0)').attr('href'),
next: $('.info a:eq(1)').attr('href'),
listPages: [...Array(num).keys()].map(i => url + (i + 1)),
img: '.img'
};
}
};
// == MangaReader ==================================================================================
var mangareader = {
name: ['MangaReader', 'MangaPanda'],
url: /https?:\/\/(www.)?(mangareader|mangapanda)(.net|.com)\/.+\/.+/,
homepage: ['http://www.mangareader.net/', 'http://www.mangapanda.com/'],
lang: ['eng'],
category: 'manga',
run() {
const url = location.href + (location.href.lastIndexOf('/') !== location.href.length - 1 ? '/' : '');
const num = parseInt($('select#pageMenu option:last').html(), 10);
const chapter = $('#mangainfo_bas a');
return {
title: $('#mangainfo h1').text(),
series: $('#mangainfo a').attr('href'),
quant: num,
prev: chapter.last().attr('href'),
next: chapter.first().attr('href'),
listPages: [...Array(num).keys()].map(i => url + (i + 1), num),
img: 'img#img',
before() {
if (location.pathname.match(/\/.+\/.+\/chapter-[0-9]+.*/)) {
const path = location.pathname.split('/');
location.pathname = '/' + String(path[2]) + '/' + String(path[3].match(/[0-9]+/));
} else if (location.search) {
location.href = location.pathname;
}
}
};
}
};
// == MangaStream ==================================================================================
var mangastream = {
name: 'MangaStream',
url: /https?:\/\/(www.)?(mangastream|readms)(.net|.com)\/r.*\/.+/,
homepage: 'http://mangastream.com/',
lang: ['eng'],
category: 'manga',
run() {
const url = location.href.substring(0, location.href.lastIndexOf('/') + 1);
const num = parseInt($('div.controls div.btn-group ul.dropdown-menu li:last').text().match(/[0-9]+/), 10);
const chapter = $('.dropdown-menu:eq(1) a');
return {
title: $('.btn:eq(0)').text().trim(),
series: $('div.controls div.btn-group ul.dropdown-menu:first li a:last').attr('href'),
quant: num,
prev: chapter.eq(chapter.index(chapter.filter('[href*=\'' + String(location.pathname) + '\']')) + 1).attr('href'),
next: chapter.eq(chapter.index(chapter.filter('[href*=\'' + String(location.pathname) + '\']')) - 1).attr('href'),
listPages: [...Array(num).keys()].map(i => url + (i + 1)),
img: 'img#manga-page'
};
}
};
// == MangaTown ====================================================================================
var mangatown = {
name: 'MangaTown',
url: /https?:\/\/(www.)?mangatown.com\/manga\/.+\/.+/,
homepage: 'http://www.mangatown.com/',
lang: ['eng'],
category: 'manga',
run() {
const num = $('.page_select select:first option').get();
const chapter = $('#top_chapter_list option:selected');
return {
title: $('.title h1').text(),
series: $('.title h2 a').attr('href'),
quant: num.length,
prev: chapter.prev().val(),
next: chapter.next().val(),
listPages: num.map(item => $(item).val()),
img: '#image'
};
}
};
// == NineManga ====================================================================================
var ninemanga = {
name: 'NineManga',
url: /https?:\/\/(www.)?ninemanga.com\/chapter\/.+\/.+\.html/,
homepage: 'http://ninemanga.com/',
lang: ['eng'],
category: 'manga',
run() {
return {
title: $('.tip a:first').text(),
series: $('.subgiude a:eq(1)').attr('href'),
quant: $('#page:first option').length,
prev: $('.chnav a:first').attr('href'),
next: $('.chnav a:eq(1)').attr('href'),
listPages: $('#page:first option').get().map(item => $(item).val()),
img: '.manga_pic'
};
}
};
// == ReadManga.Today ==============================================================================
var readmangatoday = {
name: 'ReadManga.Today',
url: /https?:\/\/(www.)?readmanga.today\/.+\/[0-9]+/,
homepage: 'http://www.readmanga.today/',
lang: ['eng'],
category: 'manga',
run() {
const chapter = $('select[name="chapter_list"] option:selected');
return {
title: $('title').text().trim(),
series: $('.btn:eq(4)').attr('href'),
quant: $('select[name="category_type"]:last option').get().length,
prev: chapter.next('option').val(),
next: chapter.prev('option').val(),
bruteForce(func) {
func.getPage(String(location) + '/all-pages').then(html => {
const listImages = $(html).find('img.img-responsive-2').get().map(item => $(item).attr('src'));
func.loadMangaImages({
listImages
});
});
}
};
}
};
// == SenManga =====================================================================================
var senmanga = {
name: 'SenManga(Raw)',
url: /https?:\/\/raw.senmanga.com\/.+\/.+\/?/,
homepage: 'http://raw.senmanga.com/',
lang: ['eng'],
category: 'manga',
run() {
const url = '/' + String(location.pathname.split('/')[1]) + '/' + String(location.pathname.split('/')[2]);
const num = parseInt($('select[name=\'page\'] option:last').val(), 10);
const chapter = $('select[name="chapter"] option:selected');
const origin = $('.title a');
return {
title: $('.title').text().trim(),
series: origin.attr('href'),
quant: num,
prev: origin.attr('href') + chapter.next().val(),
next: origin.attr('href') + chapter.prev().val(),
listPages: [...Array(num).keys()].map(i => url + '/' + String(i + 1) + '/'),
img: '#picture',
before() {
$('body').contents().filter(() => this.nodeType === 3).remove();
}
};
}
};
// == TenManga =====================================================================================
var tenmanga = {
name: 'TenManga',
url: /https?:\/\/(www.)?tenmanga.com\/chapter\/.+/,
homepage: 'http://www.tenmanga.com/',
lang: ['eng'],
category: 'manga',
run() {
const url = $('.sl-page:first option').get();
const chapter = $('.sl-chap:first option:selected');
return {
title: $('.read-page a:eq(2)').text().replace('»', '').trim(),
series: $('.read-page a:eq(1)').attr('href'),
quant: url.length,
prev: chapter.next().val(),
next: chapter.prev().val(),
listPages: url.map(item => $(item).val()),
img: '.manga_pic'
};
}
};
// == TheSpectrum ==================================================================================
var thespectrum = {
name: 'TheSpectrum',
url: /https?:\/\/view.thespectrum.net\/.+/,
homepage: 'http://www.thespectrum.net/',
lang: ['eng'],
category: 'manga',
run() {
const url = String(location.pathname) + '?' + String($('form').serialize().substring(0, $('form').serialize().lastIndexOf('=')));
const num = $('.selectpage option').length;
const chapter = $('.selectchapter option:selected');
return {
title: $('.viewerLabel:eq(1)').text(),
series: '#',
quant: num,
prev: String(location.pathname) + '?ch=' + String(chapter.prev().val()),
next: String(location.pathname) + '?ch=' + String(chapter.next().val()),
listPages: [...Array(num).keys()].map(i => url + '=' + String(i + 1)),
img: '#imgContainer img'
};
}
};
// == WPManga ======================================================================================
var wpmanga = {
name: ['MangaDeep'],
url: /https?:\/\/(www.)?(mangaspy|mangadeep|mangateen).com\/.+\/[0-9]+/,
homepage: ['http://mangadeep.com/'],
lang: ['eng'],
category: 'manga',
run() {
const url = '/' + String(location.pathname.split('/')[1]) + '/' + String(location.pathname.split('/')[2]);
const num = parseInt($('select.cbo_wpm_pag:first option:last').html(), 10);
const chapter = $('.cbo_wpm_chp option:selected');
const key = $('.cbo_wpm_chp').attr('onchange').replace(/location.href='/, '');
return {
title: $('.wpm_pag h1').text().trim(),
series: $('h1.ttl a').attr('href'),
quant: num,
prev: key.replace(/'.+/, chapter.next().val()),
next: key.replace(/'.+/, chapter.prev().val()),
listPages: [...Array(num).keys()].map(i => url + '/' + String(i + 1) + '/'),
img: 'img.manga-page , .prw > a img, .prw a img'
};
}
};
// TODO: http://funmanga.com
var sites = [batoto, comicastle, dysnatyscans, eatmanga, egscans, foolslide, kissmanga, mangadoom, mangafox, mangago, mangahere, mangainn, mangalyght, mangapark, mangareader, mangastream, mangatown, ninemanga, readmangatoday, senmanga, tenmanga, thespectrum, wpmanga];
start(sites);
}());
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFuZ2FfT25saW5lVmlld2VyLnVzZXIuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9icm93c2VyLmpzIiwiLi4vc3JjL3NldHRpbmdzLmpzIiwiLi4vc3JjL3RoZW1lcy5qcyIsIi4uL3NyYy9yZWFkZXIuanMiLCIuLi9zcmMvdXRpbHMuanMiLCIuLi9zcmMvcGFnZS5qcyIsIi4uL3NyYy9kb3dubG9hZC5qcyIsIi4uL3NyYy9ldmVudHMuanMiLCIuLi9zcmMvdmlld2VyLmpzIiwiLi4vc3JjL21haW4vYmF0b3RvLmpzIiwiLi4vc3JjL21haW4vY29taWNhc3RsZS5qcyIsIi4uL3NyYy9tYWluL2R5c25hdHlzY2Fucy5qcyIsIi4uL3NyYy9tYWluL2VhdG1hbmdhLmpzIiwiLi4vc3JjL21haW4vZWdzY2Fucy5qcyIsIi4uL3NyYy9tYWluL2Zvb2xzbGlkZS5qcyIsIi4uL3NyYy9tYWluL2tpc3NtYW5nYS5qcyIsIi4uL3NyYy9tYWluL21hbmdhZG9vbS5qcyIsIi4uL3NyYy9tYWluL21hbmdhZm94LmpzIiwiLi4vc3JjL21haW4vbWFuZ2Fnby5qcyIsIi4uL3NyYy9tYWluL21hbmdhaGVyZS5qcyIsIi4uL3NyYy9tYWluL21hbmdhaW5uLmpzIiwiLi4vc3JjL21haW4vbWFuZ2FseWdodC5qcyIsIi4uL3NyYy9tYWluL21hbmdhcGFyay5qcyIsIi4uL3NyYy9tYWluL21hbmdhcmVhZGVyLmpzIiwiLi4vc3JjL21haW4vbWFuZ2FzdHJlYW0uanMiLCIuLi9zcmMvbWFpbi9tYW5nYXRvd24uanMiLCIuLi9zcmMvbWFpbi9uaW5lbWFuZ2EuanMiLCIuLi9zcmMvbWFpbi9yZWFkbWFuZ2F0b2RheS5qcyIsIi4uL3NyYy9tYWluL3Nlbm1hbmdhLmpzIiwiLi4vc3JjL21haW4vdGVubWFuZ2EuanMiLCIuLi9zcmMvbWFpbi90aGVzcGVjdHJ1bS5qcyIsIi4uL3NyYy9tYWluL3dwbWFuZ2EuanMiLCIuLi9zcmMvbWFpbi9pbmRleC5qcyIsIi4uL3NyYy91c2Vyc2NyaXB0LW1haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY2FtZWxjYXNlICovXG5cbi8vIEVuY2Fwc3VsYXRpb24gZm9yIHRoZSBjb25zb2xlXG5mdW5jdGlvbiBsb2dTY3JpcHQoLi4udGV4dCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICBjb25zb2xlLmxvZygnTWFuZ2FPbmxpbmVWaWV3ZXI6JywgLi4udGV4dCk7XG4gIHJldHVybiB0ZXh0O1xufVxuLy8gQ29tcG9zZWJsZSBjb25zb2xlIG91dHB1dFxuY29uc3QgbG9nU2NyaXB0QyA9IFIuY3VycnkoKHgsIHkpID0+IGxvZ1NjcmlwdCh4LCB5KVsxXSk7XG4vLyBSZXBsYWNlbWVudCBmdW5jdGlvbiBmb3IgR01fbGlzdFZhbHVlcyBhbGxvd2luZyBmb3IgZGVidWdnaW5nIGluIGNvbnNvbGVcbmNvbnN0IGdldExpc3RHTSA9IEdNX2xpc3RWYWx1ZXMgfHwgKCgpID0+IFtdKTtcbi8vIFJlcGxhY2VtZW50IGZ1bmN0aW9uIGZvciBHTV9pbmZvIGFsbG93aW5nIGZvciBkZWJ1Z2dpbmcgaW4gY29uc29sZVxuY29uc3QgZ2V0SW5mb0dNID0gR01faW5mbyB8fCB7XG4gIHNjcmlwdEhhbmRsZXI6ICdDb25zb2xlJyxcbiAgc2NyaXB0OiB7XG4gICAgbmFtZTogJ0RlYnVnJyxcbiAgICB2ZXJzaW9uOiAnVGVzdGluZycsXG4gIH0sXG59O1xuLy8gUmVwbGFjZW1lbnQgZnVuY3Rpb24gZm9yIEdNX2dldFZhbHVlIGFsbG93aW5nIGZvciBkZWJ1Z2dpbmcgaW4gY29uc29sZVxuY29uc3QgZ2V0VmFsdWVHTSA9IEdNX2dldFZhbHVlIHx8ICgobmFtZSwgZGVmYXVsdFZhbHVlID0gbnVsbCkgPT4gbG9nU2NyaXB0KCdHZXR0aW5nOiAnLCBuYW1lLCAnPScsIGRlZmF1bHRWYWx1ZSlbM10pO1xuLy8gUmVwbGFjZW1lbnQgZnVuY3Rpb24gZm9yIEdNX3NldFZhbHVlIGFsbG93aW5nIGZvciBkZWJ1Z2dpbmcgaW4gY29uc29sZVxuY29uc3Qgc2V0VmFsdWVHTSA9IEdNX3NldFZhbHVlIHx8ICgobmFtZSwgdmFsdWUpID0+IGxvZ1NjcmlwdCgnR2V0dGluZzogJywgbmFtZSwgJz0nLCB2YWx1ZSkpO1xuLy8gU2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yNDAxODYxLzMzMTUwOCBmb3Igb3B0aW9uYWwgYnJvd3NlciBzbmlmZmluZyBjb2RlLlxuZnVuY3Rpb24gZ2V0QnJvd3NlcigpIHtcbiAgY29uc3QgdWEgPSBuYXZpZ2F0b3IudXNlckFnZW50O1xuICBsZXQgdGVtO1xuICBsZXQgTSA9IHVhLm1hdGNoKC8ob3BlcmF8Y2hyb21lfHNhZmFyaXxmaXJlZm94fG1zaWV8dHJpZGVudCg/PVxcLykpXFwvP1xccyooXFxkKykvaSkgfHwgW107XG4gIGlmICgvdHJpZGVudC9pLnRlc3QoTVsxXSkpIHtcbiAgICB0ZW0gPSAvXFxicnZbIDpdKyhcXGQrKS9nLmV4ZWModWEpIHx8IFtdO1xuICAgIHJldHVybiBgSUUgJHt0ZW1bMV0gfHwgJyd9YDtcbiAgfVxuICBpZiAoTVsxXSA9PT0gJ0Nocm9tZScpIHtcbiAgICB0ZW0gPSB1YS5tYXRjaCgvXFxiKE9QUnxFZGdlKVxcLyhcXGQrKS8pO1xuICAgIGlmICh0ZW0gIT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0ZW0uc2xpY2UoMSkuam9pbignICcpLnJlcGxhY2UoJ09QUicsICdPcGVyYScpO1xuICAgIH1cbiAgfVxuICBNID0gTVsyXSA/IFtNWzFdLCBNWzJdXSA6IFtuYXZpZ2F0b3IuYXBwTmFtZSwgbmF2aWdhdG9yLmFwcFZlcnNpb24sICctPyddO1xuICB0ZW0gPSB1YS5tYXRjaCgvdmVyc2lvblxcLyhcXGQrKS9pKTtcbiAgaWYgKHRlbSAhPT0gbnVsbCkge1xuICAgIE0uc3BsaWNlKDEsIDEsIHRlbVsxXSk7XG4gIH1cbiAgcmV0dXJuIE0uam9pbignICcpO1xufVxuXG4vLyBTZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjc0ODc4MjgvaG93LXRvLWRldGVjdC1pZi1hLXVzZXJzY3JpcHQtaXMtaW5zdGFsbGVkLWZyb20tdGhlLWNocm9tZS1zdG9yZVxuZnVuY3Rpb24gZ2V0RW5naW5lKCkge1xuICByZXR1cm4gYCR7Z2V0SW5mb0dNLnNjcmlwdEhhbmRsZXIgfHwgJ0dyZWFzZW1vbmtleSd9ICR7Z2V0SW5mb0dNLnZlcnNpb259YDtcbn1cbmV4cG9ydCB7XG4gIGxvZ1NjcmlwdCxcbiAgZ2V0TGlzdEdNLFxuICBnZXRJbmZvR00sXG4gIGdldFZhbHVlR00sXG4gIHNldFZhbHVlR00sXG4gIGdldEJyb3dzZXIsXG4gIGdldEVuZ2luZSxcbiAgbG9nU2NyaXB0Qyxcbn07XG4iLCJpbXBvcnQgeyBnZXRWYWx1ZUdNLCBzZXRWYWx1ZUdNIH0gZnJvbSAnLi9icm93c2VyJztcblxuaWYgKHR5cGVvZiBnZXRWYWx1ZUdNKCdNYW5nYUZpdFdpZHRoSWZPdmVyc2l6ZWQnKSA9PT0gJ3N0cmluZycpIHtcbiAgc2V0VmFsdWVHTSgnTWFuZ2FGaXRXaWR0aElmT3ZlcnNpemVkJywgdHJ1ZSk7XG4gIHNldFZhbHVlR00oJ01hbmdhU2hvd1RodW1ibmFpbHMnLCB0cnVlKTtcbiAgc2V0VmFsdWVHTSgnTWFuZ2FEb3dubG9hZFppcCcsIGZhbHNlKTtcbiAgc2V0VmFsdWVHTSgnTWFuZ2FBbHdheXNMb2FkJywgZmFsc2UpO1xufVxuXG4vLyBDb25maWd1cmF0aW9uXG5jb25zdCBzZXR0aW5ncyA9IHtcbiAgVGhlbWU6IGdldFZhbHVlR00oJ01hbmdhVGhlbWUnLCAnTGlnaHQnKSxcbiAgQ3VzdG9tVGhlbWU6IGdldFZhbHVlR00oJ01hbmdhQ3VzdG9tVGhlbWUnLCAnM2QwMDk5JyksXG4gIEZpdFdpZHRoSWZPdmVyc2l6ZWQ6IGdldFZhbHVlR00oJ01hbmdhRml0V2lkdGhJZk92ZXJzaXplZCcsIHRydWUpLFxuICBTaG93VGh1bWJuYWlsczogZ2V0VmFsdWVHTSgnTWFuZ2FTaG93VGh1bWJuYWlscycsIHRydWUpLFxuICBEb3dubG9hZFppcDogZ2V0VmFsdWVHTSgnTWFuZ2FEb3dubG9hZFppcCcsIGZhbHNlKSxcbiAgVGltZXI6IGdldFZhbHVlR00oJ01hbmdhVGltZXInLCAxMDAwKSxcbiAgWm9vbTogZ2V0VmFsdWVHTSgnTWFuZ2Fab29tJywgMTAwKSxcbiAgYWx3YXlzTG9hZDogZ2V0VmFsdWVHTSgnTWFuZ2FBbHdheXNMb2FkJywgZmFsc2UpLFxufTtcbi8vIEljb25zIGluIEJhc2U2NCBmb3JtYXRcbmNvbnN0IGljb24gPSB7XG4gIGVubGFnZTogJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFLVDJsRFExQlFhRzkwYjNOb2IzQWdTVU5ESUhCeWIyWnBiR1VBQUhqYW5WTm5WRlBwRmozMzN2UkNTNGlBbEV0dlVoVUlJRkpDaTRBVWtTWXFJUWtRU29naG9ka1ZVY0VSUlVVRUc4aWdpQU9Pam9DTUZWRXNESW9LMkFma0lhS09nNk9JaXNyNzRYdWphOWE4OStiTi9yWFhQdWVzODUyenp3ZkFDQXlXU0ROUk5ZQU1xVUllRWVDRHg4VEc0ZVF1UUlFS0pIQUFFQWl6WkNGei9TTUJBUGgrUER3cklzQUh2Z0FCZU5NTENBREFUWnZBTUJ5SC93L3FRcGxjQVlDRUFjQjBrVGhMQ0lBVUFFQjZqa0ttQUVCR0FZQ2RtQ1pUQUtBRUFHRExZMkxqQUZBdEFHQW5mK2JUQUlDZCtKbDdBUUJibENFVkFhQ1JBQ0FUWlloRUFHZzdBS3pQVm9wRkFGZ3dBQlJtUzhRNUFOZ3RBREJKVjJaSUFMQzNBTURPRUF1eUFBZ01BREJSaUlVcEFBUjdBR0RJSXlONEFJU1pBQlJHOGxjODhTdXVFT2NxQUFCNG1iSTh1U1E1UllGYkNDMXhCMWRYTGg0b3pra1hLeFEyWVFKaG1rQXV3bm1aR1RLQk5BL2c4OHdBQUtDUkZSSGdnL1A5ZU00T3JzN09ObzYyRGw4dDZyOEcveUppWXVQKzVjK3JjRUFBQU9GMGZ0SCtMQyt6R29BN0JvQnQvcUlsN2dSb1hndWdkZmVMWnJJUFFMVUFvT25hVi9OdytINDhQRVdoa0xuWjJlWGs1TmhLeEVKYlljcFhmZjVud2wvQVYvMXMrWDQ4L1BmMTRMN2lKSUV5WFlGSEJQamd3c3owVEtVY3o1SUpoR0xjNW85SC9MY0wvL3dkMHlMRVNXSzVXQ29VNDFFU2NZNUVtb3p6TXFVaWlVS1NLY1VsMHY5azR0OHMrd00rM3pVQXNHbytBWHVSTGFoZFl3UDJTeWNRV0hUQTR2Y0FBUEs3YjhIVUtBZ0RnR2lENGM5My8rOC8vVWVnSlFDQVprbVNjUUFBWGtRa0xsVEtzei9IQ0FBQVJLQ0JLckJCRy9UQkdDekFCaHpCQmR6QkMveGdOb1JDSk1UQ1FoQkNDbVNBSEhKZ0theUNRaWlHemJBZEttQXYxRUFkTk1CUmFJYVRjQTR1d2xXNERqMXdEL3BoQ0o3QktMeUJDUVJCeUFnVFlTSGFpQUZpaWxnampnZ1htWVg0SWNGSUJCS0xKQ0RKaUJSUklrdVJOVWd4VW9wVUlGVklIZkk5Y2dJNWgxeEd1cEU3eUFBeWd2eUd2RWN4bElHeVVUM1VETFZEdWFnM0dvUkdvZ3ZRWkhReG1vOFdvSnZRY3JRYVBZdzJvZWZRcTJnUDJvOCtROGN3d09nWUJ6UEViREF1eHNOQ3NUZ3NDWk5qeTdFaXJBeXJ4aHF3VnF3RHU0bjFZOCt4ZHdRU2dVWEFDVFlFZDBJZ1lSNUJTRmhNV0U3WVNLZ2dIQ1EwRWRvSk53a0RoRkhDSnlLVHFFdTBKcm9SK2NRWVlqSXhoMWhJTENQV0VvOFRMeEI3aUVQRU55UVNpVU15SjdtUUFrbXhwRlRTRXRKRzBtNVNJK2tzcVpzMFNCb2prOG5hWkd1eUJ6bVVMQ0FyeUlYa25lVEQ1RFBrRytRaDhsc0tuV0pBY2FUNFUrSW9Vc3BxU2hubEVPVTA1UVpsbURKQlZhT2FVdDJvb1ZRUk5ZOWFRcTJodGxLdlVZZW9FelIxbWpuTmd4WkpTNld0b3BYVEdtZ1hhUGRwcitoMHVoSGRsUjVPbDlCWDBzdnBSK2lYNkFQMGR3d05oaFdEeDRobktCbWJHQWNZWnhsM0dLK1lUS1laMDRzWngxUXdOekhybU9lWkQ1bHZWVmdxdGlwOEZaSEtDcFZLbFNhVkd5b3ZWS21xcHFyZXFndFY4MVhMVkkrcFhsTjlya1pWTTFQanFRblVscXRWcXAxUTYxTWJVMmVwTzZpSHFtZW9iMVEvcEg1Wi9Za0dXY05NdzA5RHBGR2dzVi9qdk1ZZ0MyTVpzM2dzSVdzTnE0WjFnVFhFSnJITjJYeDJLcnVZL1IyN2l6MnFxYUU1UXpOS00xZXpVdk9VWmo4SDQ1aHgrSngwVGdubktLZVg4MzZLM2hUdktlSXBHNlkwVExreFpWeHJxcGFYbGxpclNLdFJxMGZydlRhdTdhZWRwcjFGdTFuN2dRNUJ4MG9uWENkSFo0L09CWjNuVTlsVDNhY0tweFpOUFRyMXJpNnFhNlVib2J0RWQ3OXVwKzZZbnI1ZWdKNU1iNmZlZWIzbitoeDlMLzFVL1czNnAvVkhERmdHc3d3a0J0c016aGc4eFRWeGJ6d2RMOGZiOFZGRFhjTkFRNlZobFdHWDRZU1J1ZEU4bzlWR2pVWVBqR25HWE9NazQyM0diY2FqSmdZbUlTWkxUZXBON3BwU1RibW1LYVk3VER0TXg4M016YUxOMXBrMW16MHgxekxubStlYjE1dmZ0MkJhZUZvc3RxaTJ1R1ZKc3VSYXBsbnV0cnh1aFZvNVdhVllWVnBkczBhdG5hMGwxcnV0dTZjUnA3bE9rMDZybnRabnc3RHh0c20ycWJjWnNPWFlCdHV1dG0yMmZXRm5ZaGRudDhXdXcrNlR2Wk45dW4yTi9UMEhEWWZaRHFzZFdoMStjN1J5RkRwV090NmF6cHp1UDMzRjlKYnBMMmRZenhEUDJEUGp0aFBMS2NScG5WT2IwMGRuRjJlNWM0UHppSXVKUzRMTExwYytMcHNieHQzSXZlUktkUFZ4WGVGNjB2V2RtN09id3UybzI2L3VOdTVwN29mY244dzBueW1lV1ROejBNUElRK0JSNWRFL0M1K1ZNR3Zmckg1UFEwK0JaN1huSXk5akw1RlhyZGV3dDZWM3F2ZGg3eGMrOWo1eW4rTSs0enczM2pMZVdWL01OOEMzeUxmTFQ4TnZubCtGMzBOL0kvOWsvM3IvMFFDbmdDVUJad09KZ1VHQld3TDcrSHA4SWIrT1B6cmJaZmF5MmUxQmpLQzVRUlZCajRLdGd1WEJyU0ZveU95UXJTSDM1NWpPa2M1cERvVlFmdWpXMEFkaDVtR0x3MzRNSjRXSGhWZUdQNDV3aUZnYTBUR1hOWGZSM0VOejMwVDZSSlpFM3B0bk1VODVyeTFLTlNvK3FpNXFQTm8zdWpTNlA4WXVabG5NMVZpZFdFbHNTeHc1TGlxdU5tNXN2dC84N2ZPSDRwM2lDK043RjVndnlGMXdlYUhPd3ZTRnB4YXBMaElzT3BaQVRJaE9PSlR3UVJBcXFCYU1KZklUZHlXT0NubkNIY0puSWkvUk50R0kyRU5jS2g1TzhrZ3FUWHFTN0pHOE5Ya2t4VE9sTE9XNWhDZXBrTHhNRFV6ZG16cWVGcHAySUcweVBUcTlNWU9Ta1pCeFFxb2hUWk8yWitwbjVtWjJ5NnhsaGJMK3hXNkx0eThlbFFmSmE3T1FyQVZaTFFxMlFxYm9WRm9vMXlvSHNtZGxWMmEvelluS09aYXJuaXZON2N5enl0dVFONXp2bi8vdEVzSVM0WksycFlaTFZ5MGRXT2E5ckdvNXNqeHhlZHNLNHhVRks0WldCcXc4dUlxMkttM1ZUNnZ0VjVldWZyMG1lazFyZ1Y3QnlvTEJ0UUZyNnd0VkN1V0ZmZXZjMSsxZFQxZ3ZXZCsxWWZxR25ScytGWW1LcmhUYkY1Y1ZmOWdvM0hqbEc0ZHZ5citaM0pTMHFhdkV1V1RQWnRKbTZlYmVMWjViRHBhcWwrYVhEbTROMmRxMERkOVd0TzMxOWtYYkw1Zk5LTnU3ZzdaRHVhTy9QTGk4WmFmSnpzMDdQMVNrVlBSVStsUTI3dExkdFdIWCtHN1I3aHQ3dlBZMDdOWGJXN3ozL1Q3SnZ0dFZBVlZOMVdiVlpmdEorN1AzUDY2SnF1bjRsdnR0WGExT2JYSHR4d1BTQS8wSEl3NjIxN25VMVIzU1BWUlNqOVlyNjBjT3h4KysvcDN2ZHkwTk5nMVZqWnpHNGlOd1JIbms2ZmNKMy9jZURUcmFkb3g3ck9FSDB4OTJIV2NkTDJwQ212S2FScHRUbXZ0YllsdTZUOHcrMGRicTNucjhSOXNmRDV3MFBGbDVTdk5VeVduYTZZTFRrMmZ5ejR5ZGxaMTlmaTc1M0dEYm9yWjc1MlBPMzJvUGIrKzZFSFRoMGtYL2krYzd2RHZPWFBLNGRQS3kyK1VUVjdoWG1xODZYMjNxZE9vOC9wUFRUOGU3bkx1YXJybGNhN251ZXIyMWUyYjM2UnVlTjg3ZDlMMTU4UmIvMXRXZU9UM2R2Zk42Yi9mRjkvWGZGdDErY2lmOXpzdTcyWGNuN3EyOFQ3eGY5RUR0UWRsRDNZZlZQMXYrM05qdjNIOXF3SGVnODlIY1IvY0doWVBQL3BIMWp3OURCWStaajh1R0RZYnJuamcrT1RuaVAzTDk2ZnluUTg5a3p5YWVGLzZpL3N1dUZ4WXZmdmpWNjlmTzBaalJvWmZ5bDVPL2JYeWwvZXJBNnhtdjI4YkN4aDYreVhnek1WNzBWdnZ0d1hmY2R4M3ZvOThQVCtSOElIOG8vMmo1c2ZWVDBLZjdreG1Uay84RUE1anovR016TGRzQUFBQWdZMGhTVFFBQWVpVUFBSUNEQUFENS93QUFnT2tBQUhVd0FBRHFZQUFBT3BnQUFCZHZrbC9GUmdBQUJmbEpSRUZVZU5yRWwyMXNVK2NWeDMrKzEwbWNWMFBLdXRCWVNieWFNTWlTeG5ZTEdBS0dKcXdiYkVNbFRCVm9YOWhRZHFjMTdNUFdSU3ZhS2szWkpvMVBrN29wZkVHVHFrbGJHNUsyb3N0R1pBU1pzNFEwSVNGbG9RMDBqZzAya0RvbWlmUGkrK2E3RHpZc1JBMmpLTFJIT25ydWxaNUg1M2YrejNtZWM2L0pNQXkrU0RNLzdFUkprdHpweDJzdExTM1RLd1ZnV2s0QlNaSXlnUWJnRU9DeDJXd0FSS05SRW9sRUNHZ0ZqbDh0SDd5MTRnQ1NKRzBDL3JKOSszYUh5K1dpdExTVXViazVORTBqTHkrUFdDeEdmMzgvbloyZEM4RFByNVlQdnI1b2VXWWErZ0JRbEg0UEErM0FHOERDQXdFa1Nkb0x2SFhvMEtIczR1SmlmRDRmNCtQakxDUmtDZ3J5TVlzaVZxdVYzYnQzQTlEVDAwTmZYOS9yVjhzSEd3RUg4TmJtZFZ1cm5YWVgrWllDQkZGZ2F2WU9sNEpEOUk1MkI0Qjl3QWVmQ2lCSjBrYmczdzBORGRiSnlVbmEyOXZaOTcwanVLc3FXSjJiaFFDb3VzNnRXN2Z4ZGY2VHdzSkN0bXpad3VuVHAvRVBkLzBpVlByaHl5OXUvbTd4NXZWYmlDNU1FRS9Nb09vcUZzSENxcXhDUmtMLzRlMzNUOFdBemNDMVR3TTRkK0RBQWEvWmJPYmErSFcrK2EzdlVMekdDb0J1cE54SWUzeHVudTZ1Y3lUbVpxaW9xT0NYYmE5b05UdTJtYmRXMURBMk5ZcWlxbnkvNG1VQS9uRGh0Mmlxd3JvMUcva28vQ0gvdVBUZVdhQVdRRmdVM0ZOV1Z1YXRycTZtdmIyZDdidDI4VlE2dUpZRVdRZFpTNDFLRXN4Wk9iZzlYcnE2dXBpY2p6S2JQMlYrb1hvUHdla3haRVZHVlpWN2lTbHlBbG1XdVJUcXA5Sld5Wk1GWDM0ZXFGeDZERjl5T3AzMDl2YXlkY2N1eW13MlRPbk1sU1FzYUtBbVU5a0RtRTFneWNsbHo0c3YwVG53ZDU1MWJDSzJFR1V1TWN1UnlwL2NWMWV2N1BnMUFNZmUrVEczcHlLVXJpbGpZdWIyODhBSHdxSjVicHZOeHVqb0tJN3k5WWdDSkkxVVVGbFBBY1FWbUV4QVFrdUJZWUNqZkNQaHlldFlzNjNNSy9Nb2lyTHNrWk5sbVpuNWFYSXpjMGlma1BzVUtNclB6MmRxYW9yVmhZV1lTQUhjbFQrdXdJeVN5anpEQkprQ0NBSllWNjlHbmRlWWxlY3dHYUFvTXNlN2ZvV3FxcnhhK3pzQW10b2tWRlZCVTFWRVJCYVVCWURwKzJvQTBIVmRSeFJGTkUzRE1GSUF1Z0d6U2dwQVQ2YUExR1JhQVVEWGRITFZBc1lueHJDSU9janAvWmJseEtJYWtGRVVCVVZWV1pWYnlJMDdOd0Q4U3hVSXhXS3g5VVZGUmR5S2hDbXhGWU9SbGpzSm9wQWFrNEN4cUJadVJxNVRzcXFNRzZMSzVlQXdqaWZXTXhUc1IxTlZmdmJtRVZSTlJWTlZORjJqMnI2SjIvRUp3bmR1ZkFUMExGV2dKeGdNNG5hN2VmOUNEMm95Vlh5Q0NiTE1hY2xOcWNESjFQWURjSG1vbncwYk52QjEyN2Q1dSs5VU1qb1RwY3JtSWljakIwV1JVUldGbk14Y05xMnJ3UkFNVGw5NlZ3ZCtDT2hMQWY1ODVzd1p4VzYzbzhrSnpuUzhSOUlBMFFSWkltU0xxVEdaL04rQ1h2ODVybzRNVTFWVlJmVGpHRTlFbi9yam14ZitHaDRLRHZIMDJxK3l4NzJmdmMvdHArb3J6eEdJQlRnMTBQb0pzQjg0djl4TitDZXYxL3NqajhmRGlSTW5xSGpHemU2OSt4REZER1FkNWxXWVRoZjU1ZlB2TUh6aFBBY1BIaVFTaWREUjBSRm9hbXF5QjBKai9HYmcxZVBBTjBSQnJEU1pUR2k2TnBJTytocnd5Yks5UUpJa0svQ3Z1cnE2U28vSGc4L240K05Ba0s4OTR5SW52d0JOaDZuNEhOZXVEUE9sQWd0MWRYVkVJaEZhVzF1VmxwYVd6RUFnUURnY0J1QzF2cCthMG8xSVhOcUEvbDh6S2dZNnRtM2JWbGxiVzh2RXhBUWpJeVBFNDNFQUxCWUxEb2VEdFd2WE1qQXdnTS9ubTIxcWFzb0RzTnZ0K1AxK2poNDlTbjE5UFdlejN6VTlhanZPQTM0UE5IaTlYckdrcElTTWpBd0VRVURUTkc3ZXZNbVZLMWNJaFVKK204MVdBN0J6NTA0QWFtcHE2Tzd1cHJHeGtmcjZlbzRkTzJaNnBBK1NORWdKOEFQQUMrU2xKVldBQWVCdkxTMHRad0dhbTVzTmdMYTJOaG9iR3psOCtQRERReGlHc1NMdWREcU51Mzd5NUVuRE1BekQ3L2NiVHFmVGFHNXVOcFpidDJJQWp3cXhvZ0NQQXJIaUFKOFY0ckVBZkJhSXh3YndzQkNQRldBNUNNRHFkRG9Od3pBZWZBK3NsTGxjcm50QkJnY0hud1E2MG5mS3M4TG44ZjkzOGVMRnhSZlJPYURZNlhSV0dvYWhQUFl0dUZkc2tBMk1BY04zNWYvY3R1QkJKdkFGMjM4SEFBaDNmQlhNbFczcEFBQUFBRWxGVGtTdVFtQ0MnLFxuICByZWR1Y2U6ICdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVucjBBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBS1QybERRMUJRYUc5MGIzTm9iM0FnU1VORElIQnliMlpwYkdVQUFIamFuVk5uVkZQcEZqMzMzdlJDUzRpQWxFdHZVaFVJSUZKQ2k0QVVrU1lxSVFrUVNvZ2hvZGtWVWNFUlJVVUVHOGlnaUFPT2pvQ01GVkVzRElvSzJBZmtJYUtPZzZPSWlzcjc0WHVqYTlhODkrYk4vclhYUHVlczg1Mnp6d2ZBQ0F5V1NETlJOWUFNcVVJZUVlQ0R4OFRHNGVRdVFJRUtKSEFBRUFpelpDRnovU01CQVBoK1BEd3JJc0FIdmdBQmVOTUxDQURBVFp2QU1CeUgvdy9xUXBsY0FZQ0VBY0Iwa1RoTENJQVVBRUI2amtLbUFFQkdBWUNkbUNaVEFLQUVBR0RMWTJMakFGQXRBR0FuZitiVEFJQ2QrSmw3QVFCYmxDRVZBYUNSQUNBVFpZaEVBR2c3QUt6UFZvcEZBRmd3QUJSbVM4UTVBTmd0QURCSlYyWklBTEMzQU1ET0VBdXlBQWdNQURCUmlJVXBBQVI3QUdESUl5TjRBSVNaQUJSRzhsYzg4U3V1RU9jcUFBQjRtYkk4dVNRNVJZRmJDQzF4QjFkWExoNG96a2tYS3hRMllRSmhta0F1d25tWkdUS0JOQS9nODh3QUFLQ1JGUkhnZy9QOWVNNE9yczdPTm82MkRsOHQ2cjhHL3lKaVl1UCs1YytyY0VBQUFPRjBmdEgrTEMrekdvQTdCb0J0L3FJbDdnUm9YZ3VnZGZlTFpySVBRTFVBb09uYVYvTncrSDQ4UEVXaGtMbloyZVhrNU5oS3hFSmJZY3BYZmY1bndsL0FWLzFzK1g0OC9QZjE0TDdpSklFeVhZRkhCUGpnd3N6MFRLVWN6NUlKaEdMYzVvOUgvTGNMLy93ZDB5TEVTV0s1V0NvVTQxRVNjWTVFbW96ek1xVWlpVUtTS2NVbDB2OWs0dDhzK3dNKzN6VUFzR28rQVh1UkxhaGRZd1AyU3ljUVdIVEE0dmNBQVBLN2I4SFVLQWdEZ0dpRDRjOTMvKzgvL1VlZ0pRQ0Faa21TY1FBQVhrUWtMbFRLc3ovSENBQUFSS0NCS3JCQkcvVEJHQ3pBQmh6QkJkekJDL3hnTm9SQ0pNVENRaEJDQ21TQUhISmdLYXlDUWlpR3piQWRLbUF2MUVBZE5NQlJhSWFUY0E0dXdsVzREajF3RC9waENKN0JLTHlCQ1FSQnlBZ1RZU0hhaUFGaWlsZ2pqZ2dYbVlYNEljRklCQktMSkNESmlCUlJJa3VSTlVneFVvcFVJRlZJSGZJOWNnSTVoMXhHdXBFN3lBQXlndnlHdkVjeGxJR3lVVDNVRExWRHVhZzNHb1JHb2d2UVpIUXhtbzhXb0p2UWNyUWFQWXcyb2VmUXEyZ1AybzgrUThjd3dPZ1lCelBFYkRBdXhzTkNzVGdzQ1pOank3RWlyQXlyeGhxd1Zxd0R1NG4xWTgreGR3UVNnVVhBQ1RZRWQwSWdZUjVCU0ZoTVdFN1lTS2dnSENRMEVkb0pOd2tEaEZIQ0p5S1RxRXUwSnJvUitjUVlZakl4aDFoSUxDUFdFbzhUTHhCN2lFUEVOeVFTaVVNeUo3bVFBa214cEZUU0V0SkcwbTVTSStrc3FaczBTQm9qazhuYVpHdXlCem1VTENBcnlJWGtuZVRENURQa0crUWg4bHNLbldKQWNhVDRVK0lvVXNwcVNobmxFT1UwNVFabG1ESkJWYU9hVXQyb29WUVJOWTlhUXEyaHRsS3ZVWWVvRXpSMW1qbk5neFpKUzZXdG9wWFRHbWdYYVBkcHIraDB1aEhkbFI1T2w5Qlgwc3ZwUitpWDZBUDBkd3dOaGhXRHg0aG5LQm1iR0FjWVp4bDNHSytZVEtZWjA0c1p4MVF3TnpIcm1PZVpENWx2VlZncXRpcDhGWkhLQ3BWS2xTYVZHeW92VkttcXBxcmVxZ3RWODFYTFZJK3BYbE45cmtaVk0xUGpxUW5VbHF0VnFwMVE2MU1iVTJlcE82aUhxbWVvYjFRL3BINVovWWtHV2NOTXcwOURwRkdnc1YvanZNWWdDMk1aczNnc0lXc05xNFoxZ1RYRUpySE4yWHgyS3J1WS9SMjdpejJxcWFFNVF6TktNMWV6VXZPVVpqOEg0NWh4K0p4MFRnbm5LS2VYODM2SzNoVHZLZUlwRzZZMFRMa3haVnhycXBhWGxsaXJTS3RScTBmcnZUYXU3YWVkcHIxRnUxbjdnUTVCeDBvblhDZEhaNC9PQlozblU5bFQzYWNLcHhaTlBUcjFyaTZxYTZVYm9idEVkNzl1cCs2WW5yNWVnSjVNYjZmZWViM24raHg5TC8xVS9XMzZwL1ZIREZnR3N3d2tCdHNNemhnOHhUVnhiendkTDhmYjhWRkRYY05BUTZWaGxXR1g0WVNSdWRFOG85VkdqVVlQakduR1hPTWs0MjNHYmNhakpnWW1JU1pMVGVwTjdwcFNUYm1tS2FZN1REdE14ODNNemFMTjFwazFtejB4MXpMbm0rZWIxNXZmdDJCYWVGb3N0cWkydUdWSnN1UmFwbG51dHJ4dWhWbzVXYVZZVlZwZHMwYXRuYTBsMXJ1dHU2Y1JwN2xPazA2cm50Wm53N0R4dHNtMnFiY1pzT1hZQnR1dXRtMjJmV0ZuWWhkbnQ4V3V3KzZUdlpOOXVuMk4vVDBIRFlmWkRxc2RXaDErYzdSeUZEcFdPdDZhenB6dVAzM0Y5SmJwTDJkWXp4RFAyRFBqdGhQTEtjUnBuVk9iMDBkbkYyZTVjNFB6aUl1SlM0TExMcGMrTHBzYnh0M0l2ZVJLZFBWeFhlRjYwdldkbTdPYnd1Mm8yNi91TnU1cDdvZmNuOHcwbnltZVdUTnowTVBJUStCUjVkRS9DNStWTUd2ZnJINVBRMCtCWjdYbkl5OWpMNUZYcmRld3Q2VjNxdmRoN3hjKzlqNXluK00rNHp3MzNqTGVXVi9NTjhDM3lMZkxUOE52bmwrRjMwTi9JLzlrLzNyLzBRQ25nQ1VCWndPSmdVR0JXd0w3K0hwOEliK09QenJiWmZheTJlMUJqS0M1UVJWQmo0S3RndVhCclNGb3lPeVFyU0gzNTVqT2tjNXBEb1ZRZnVqVzBBZGg1bUdMdzM0TUo0V0hoVmVHUDQ1d2lGZ2EwVEdYTlhmUjNFTnozMFQ2UkpaRTNwdG5NVTg1cnkxS05TbytxaTVxUE5vM3VqUzZQOFl1WmxuTTFWaWRXRWxzU3h3NUxpcXVObTVzdnQvODdmT0g0cDNpQytON0Y1Z3Z5RjF3ZWFIT3d2U0ZweGFwTGhJc09wWkFUSWhPT0pUd1FSQXFxQmFNSmZJVGR5V09Dbm5DSGNKbklpL1JOdEdJMkVOY0toNU84a2dxVFhxUzdKRzhOWGtreFRPbExPVzVoQ2Vwa0x4TURVemRtenFlRnBwMklHMHlQVHE5TVlPU2taQnhRcW9oVFpPMlorcG41bVoyeTZ4bGhiTCt4VzZMdHk4ZWxRZkphN09RckFWWkxRcTJRcWJvVkZvbzF5b0hzbWRsVjJhL3pZbktPWmFybml2TjdjeXp5dHVRTjV6dm4vL3RFc0lTNFpLMnBZWkxWeTBkV09hOXJHbzVzanh4ZWRzSzR4VUZLNFpXQnF3OHVJcTJLbTNWVDZ2dFY1ZXVmcjBtZWsxcmdWN0J5b0xCdFFGcjZ3dFZDdVdGZmV2YzErMWRUMWd2V2QrMVlmcUduUnMrRlltS3JoVGJGNWNWZjlnbzNIamxHNGR2eXIrWjNKUzBxYXZFdVdUUFp0Sm02ZWJlTFo1YkRwYXFsK2FYRG00TjJkcTBEZDlXdE8zMTlrWGJMNWZOS051N2c3WkR1YU8vUExpOFphZkp6czA3UDFTa1ZQUlUrbFEyN3RMZHRXSFgrRzdSN2h0N3ZQWTA3TlhiVzd6My9UN0p2dHRWQVZWTjFXYlZaZnRKKzdQM1A2NkpxdW40bHZ0dFhhMU9iWEh0eHdQU0EvMEhJdzYyMTduVTFSM1NQVlJTajlZcjYwY094eCsrL3AzdmR5ME5OZzFWalp6RzRpTndSSG5rNmZjSjMvY2VEVHJhZG94N3JPRUgweDkySFdjZEwycENtdkthUnB0VG12dGJZbHU2VDh3KzBkYnEzbnI4UjlzZkQ1dzBQRmw1U3ZOVXlXbmE2WUxUazJmeXo0eWRsWjE5Zmk3NTNHRGJvclo3NTJQTzMyb1BiKys2RUhUaDBrWC9pK2M3dkR2T1hQSzRkUEt5MitVVFY3aFhtcTg2WDIzcWRPbzgvcFBUVDhlN25MdWFycmxjYTdudWVyMjFlMmIzNlJ1ZU44N2Q5TDE1OFJiLzF0V2VPVDNkdmZONmIvZkY5L1hmRnQxK2NpZjl6c3U3MlhjbjdxMjhUN3hmOUVEdFFkbEQzWWZWUDF2KzNOanYzSDlxd0hlZzg5SGNSL2NHaFlQUC9wSDFqdzlEQlkrWmo4dUdEWWJybmpnK09UbmlQM0w5NmZ5blE4OWt6eWFlRi82aS9zdXVGeFl2ZnZqVjY5Zk8wWmpSb1pmeWw1Ty9iWHlsL2VyQTZ4bXYyOGJDeGg2K3lYZ3pNVjcwVnZ2dHdYZmNkeDN2bzk4UFQrUjhJSDhvLzJqNXNmVlQwS2Y3a3htVGsvOEVBNWp6L0dNekxkc0FBQUFnWTBoU1RRQUFlaVVBQUlDREFBRDUvd0FBZ09rQUFIVXdBQURxWUFBQU9wZ0FBQmR2a2wvRlJnQUFCYVpKUkVGVWVOckVsMTFNSE5jWmhwK1pXYno4TEd3Z1RnWFpMUVpwUldJb05nc3Q4UmJUdFdNc05iOVdncVhJVmgzSlNVU21VckRVVmlxdGZOR0xvbDQwNmszbFZ1c2JxMUxWaXlxV2FTVkhxTGJXc3NrU2lBUFlJUmdTRzRjZlovbG5qVmtXZG1kbjV2Uml4Z2dqNHpnV1RqN3BhR1kwYytaOXpudStjNzRaU1FqQjl4bU9oMzFRVmRVYSszUTRGQXJkMlN3QWFTTUhWRlhkQWpRQmg0R0ExK3NGWUc1dWptUXlPUTZjQnQ0L010MDd0ZWtBcXFyV0F2K3FyNi8zVlZkWHMyM2JOaEtKQkxxdTQzSzVpTVZpOVBUMGNQNzgrUlhndDBlbWUwK3M2YjdGaGo0SUZOclhVYUFOK0NldzhrQUFWVlZmQWo0NGZQaHdsc2ZqSVJ3T016bzZ5a295UlY1ZUxnNUZ3ZTEyczMvL2ZnQzZ1cnE0ZlBueWlTUFR2YzJBRC9oZzY3UGxWUVUrSHhuWk9VaXlURHFSSURaOGc5bWhheVBBQWVEeit3S29xbG9PZk56VTFPU2VuNStucmEyTkE3OTRoNW9kRmVUbk9KR0J0R0V3TlRWTitQei9LQ2dvWU5ldVhadzllNVliWFIyL2YyVis4TDNpdW5wUFlWVTFwRFRFVWdKTUU1SHBCSWVENllIUHVIVzVPd1k4Qnd6ZkQrRGl3WU1IZ3c2SGcrSFJXN3p3OHF0NHRyb0JNSVRWaE4zaWlXVTZPeTZTVEN4U1VWRkIvNTkrbzlkVmxqazh0YnN3eDZOZ21nQ1lXaG96cVdFc0o1RkxQY3dNRFRCNXJmOENzQTlBWGlNZUtDa3BDVlpWVmRIVzFrYjkzcjA4Yll2ckpxUU1TT25XVVRQQjRjeW1KaENrbzZNRDQvWWNKYWtGeDlNL2VRNHhPWE5mY1dNNVNiSnZpQUp2Q2M2YzNPZUJ5dlhMOEEyLzMwOTNkemMvL2RsZVNyeGVKSHZrbWdrck9xUk5hL1FBRGdreXMzTjQ4YlUzdUg3aFEzYVdQWU1rU1ppcEZNNDNmMzNmako5Kzd5MFVMVTNPRS9ta0V2SG5nYy9sTmZkcnZGNHYxNjlmeDFmMkRJb01wckJFVTRZRkVOZGdQZ2xKM1FKRGdLK3NuUGprMTJUa3VMNXh5WmxKRFRPbDRjaHdZcStRZXh3b3pNM05aV0ZoZ2Z5Q0FpUXNnTHYyeHpWWTFLeVJaMGl3UlFaWkJuZCtQb3RhR2lPVlhMVTljZUtQcTdZYnl5c1l5MGxMWE5PUkZBWEQwQUh1M0pNRGdHRVlCb3Fpb09zNlFsZ0Fob0FselFJd1RBc29iZG9PQUladUVNdDBzelExaGREMWUrWjh2ZmpkV0xsekd5Q3lIbUE4Rm90UldGakkxRVFVM1FaSTZwYXdJbU81QW9nMXVUQTVjUXVucHdROWJ5dXoxd2FRaTRzMkZNK3FMV2R4ZG9ybHhZVXZnYTcxQUYxalkyUFUxTlR3NlNkZHBFMHIrV1FKbkE3YmNza1NOcTNwQjJEZ2FnL2J0Mi9IQ0w3S3pjNE9NM1p6R01YM1EzQmxyNG9yVDdySnFpMW42ZlljMFMvNkRlQmR3RmdQOEk5ejU4NXBwYVdsNktrazU5by94QlNnU09CVUlFdXhqdllLQTZBN2NwRWJnLzNzMkxHRC91bmJYSFY1L2piYUhZbE9EbHhGejNIZ3JDb2pxN1ljVWVSbWR1d210d2I2Wm9IWGdVc2I3WVIvRHdhRHZ3d0VBcHc4ZVpLS25UWHNmK2tBaXBKQnlvRGxOTnpSN0pGZitpLzluMXppMEtGRFRFeE0wTjdlUHRMUzBsSWFIZjBLNmErL2V4LzR1U1RKbFVnZ1RIUFFGdjBETUx0aExWQlYxUTE4MU5EUVVCa0lCQWlIdzl3Y0dlTkhPNnZKenMxRE4yQWhubUI0cUorbjhqSnBhR2hnWW1LQzA2ZFBhNkZRYU12SXlBalJhTlI2OFY5K0pkbUZTRmxmZ0w2cEdIbUE5cnE2dXNwOSsvWXhNelBENE9BZzhYZ2NnTXpNVEh3K0gwVkZSZlQyOWhJT2g1ZGFXbHBjQUtXbHBVUWlFWTRkTzBaall5TjdldjRqUFdvNWRnRi9CcHFDd2FCU1hGeE1Sa1lHc2l5ajZ6cVRrNU1NRFEweFBqNGU4WHE5dXdIMjdOa0R3TzdkdStuczdLUzV1Wm5HeGthT0h6OHVQZElIaVExU0RMd05CQUdYYmFrRzlBTC9Eb1ZDRndCYVcxc0Z3Smt6WjJodWJ1Ym8wYU1QRHlHRTJKVG05L3ZGM1hicTFDa2hoQkNSU0VUNC9YN1IydG9xTnVxM2FRQ1BDckdwQUk4Q3Nla0EzeGJpc1FCOEc0akhCdkN3RUk4VllDTUl3TzMzKzRVUTRzSDd3R1pGZFhYMXFzaVZLMWQrQUxUYmU4cVA1ZS9pLzYrdnIyL3RSblFSOFBqOS9rb2hoUGJZcDJBMTJTQUwrQXJvdjJ2L2R6WUZEd3FaN3puK1B3RDYvSURJRHBRd0Z3QUFBQUJKUlU1RXJrSmdnZyUzRCUzRCcsXG4gIHJlc3RvcmU6ICdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVucjBBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBS1QybERRMUJRYUc5MGIzTm9iM0FnU1VORElIQnliMlpwYkdVQUFIamFuVk5uVkZQcEZqMzMzdlJDUzRpQWxFdHZVaFVJSUZKQ2k0QVVrU1lxSVFrUVNvZ2hvZGtWVWNFUlJVVUVHOGlnaUFPT2pvQ01GVkVzRElvSzJBZmtJYUtPZzZPSWlzcjc0WHVqYTlhODkrYk4vclhYUHVlczg1Mnp6d2ZBQ0F5V1NETlJOWUFNcVVJZUVlQ0R4OFRHNGVRdVFJRUtKSEFBRUFpelpDRnovU01CQVBoK1BEd3JJc0FIdmdBQmVOTUxDQURBVFp2QU1CeUgvdy9xUXBsY0FZQ0VBY0Iwa1RoTENJQVVBRUI2amtLbUFFQkdBWUNkbUNaVEFLQUVBR0RMWTJMakFGQXRBR0FuZitiVEFJQ2QrSmw3QVFCYmxDRVZBYUNSQUNBVFpZaEVBR2c3QUt6UFZvcEZBRmd3QUJSbVM4UTVBTmd0QURCSlYyWklBTEMzQU1ET0VBdXlBQWdNQURCUmlJVXBBQVI3QUdESUl5TjRBSVNaQUJSRzhsYzg4U3V1RU9jcUFBQjRtYkk4dVNRNVJZRmJDQzF4QjFkWExoNG96a2tYS3hRMllRSmhta0F1d25tWkdUS0JOQS9nODh3QUFLQ1JGUkhnZy9QOWVNNE9yczdPTm82MkRsOHQ2cjhHL3lKaVl1UCs1YytyY0VBQUFPRjBmdEgrTEMrekdvQTdCb0J0L3FJbDdnUm9YZ3VnZGZlTFpySVBRTFVBb09uYVYvTncrSDQ4UEVXaGtMbloyZVhrNU5oS3hFSmJZY3BYZmY1bndsL0FWLzFzK1g0OC9QZjE0TDdpSklFeVhZRkhCUGpnd3N6MFRLVWN6NUlKaEdMYzVvOUgvTGNMLy93ZDB5TEVTV0s1V0NvVTQxRVNjWTVFbW96ek1xVWlpVUtTS2NVbDB2OWs0dDhzK3dNKzN6VUFzR28rQVh1UkxhaGRZd1AyU3ljUVdIVEE0dmNBQVBLN2I4SFVLQWdEZ0dpRDRjOTMvKzgvL1VlZ0pRQ0Faa21TY1FBQVhrUWtMbFRLc3ovSENBQUFSS0NCS3JCQkcvVEJHQ3pBQmh6QkJkekJDL3hnTm9SQ0pNVENRaEJDQ21TQUhISmdLYXlDUWlpR3piQWRLbUF2MUVBZE5NQlJhSWFUY0E0dXdsVzREajF3RC9waENKN0JLTHlCQ1FSQnlBZ1RZU0hhaUFGaWlsZ2pqZ2dYbVlYNEljRklCQktMSkNESmlCUlJJa3VSTlVneFVvcFVJRlZJSGZJOWNnSTVoMXhHdXBFN3lBQXlndnlHdkVjeGxJR3lVVDNVRExWRHVhZzNHb1JHb2d2UVpIUXhtbzhXb0p2UWNyUWFQWXcyb2VmUXEyZ1AybzgrUThjd3dPZ1lCelBFYkRBdXhzTkNzVGdzQ1pOank3RWlyQXlyeGhxd1Zxd0R1NG4xWTgreGR3UVNnVVhBQ1RZRWQwSWdZUjVCU0ZoTVdFN1lTS2dnSENRMEVkb0pOd2tEaEZIQ0p5S1RxRXUwSnJvUitjUVlZakl4aDFoSUxDUFdFbzhUTHhCN2lFUEVOeVFTaVVNeUo3bVFBa214cEZUU0V0SkcwbTVTSStrc3FaczBTQm9qazhuYVpHdXlCem1VTENBcnlJWGtuZVRENURQa0crUWg4bHNLbldKQWNhVDRVK0lvVXNwcVNobmxFT1UwNVFabG1ESkJWYU9hVXQyb29WUVJOWTlhUXEyaHRsS3ZVWWVvRXpSMW1qbk5neFpKUzZXdG9wWFRHbWdYYVBkcHIraDB1aEhkbFI1T2w5Qlgwc3ZwUitpWDZBUDBkd3dOaGhXRHg0aG5LQm1iR0FjWVp4bDNHSytZVEtZWjA0c1p4MVF3TnpIcm1PZVpENWx2VlZncXRpcDhGWkhLQ3BWS2xTYVZHeW92VkttcXBxcmVxZ3RWODFYTFZJK3BYbE45cmtaVk0xUGpxUW5VbHF0VnFwMVE2MU1iVTJlcE82aUhxbWVvYjFRL3BINVovWWtHV2NOTXcwOURwRkdnc1YvanZNWWdDMk1aczNnc0lXc05xNFoxZ1RYRUpySE4yWHgyS3J1WS9SMjdpejJxcWFFNVF6TktNMWV6VXZPVVpqOEg0NWh4K0p4MFRnbm5LS2VYODM2SzNoVHZLZUlwRzZZMFRMa3haVnhycXBhWGxsaXJTS3RScTBmcnZUYXU3YWVkcHIxRnUxbjdnUTVCeDBvblhDZEhaNC9PQlozblU5bFQzYWNLcHhaTlBUcjFyaTZxYTZVYm9idEVkNzl1cCs2WW5yNWVnSjVNYjZmZWViM24raHg5TC8xVS9XMzZwL1ZIREZnR3N3d2tCdHNNemhnOHhUVnhiendkTDhmYjhWRkRYY05BUTZWaGxXR1g0WVNSdWRFOG85VkdqVVlQakduR1hPTWs0MjNHYmNhakpnWW1JU1pMVGVwTjdwcFNUYm1tS2FZN1REdE14ODNNemFMTjFwazFtejB4MXpMbm0rZWIxNXZmdDJCYWVGb3N0cWkydUdWSnN1UmFwbG51dHJ4dWhWbzVXYVZZVlZwZHMwYXRuYTBsMXJ1dHU2Y1JwN2xPazA2cm50Wm53N0R4dHNtMnFiY1pzT1hZQnR1dXRtMjJmV0ZuWWhkbnQ4V3V3KzZUdlpOOXVuMk4vVDBIRFlmWkRxc2RXaDErYzdSeUZEcFdPdDZhenB6dVAzM0Y5SmJwTDJkWXp4RFAyRFBqdGhQTEtjUnBuVk9iMDBkbkYyZTVjNFB6aUl1SlM0TExMcGMrTHBzYnh0M0l2ZVJLZFBWeFhlRjYwdldkbTdPYnd1Mm8yNi91TnU1cDdvZmNuOHcwbnltZVdUTnowTVBJUStCUjVkRS9DNStWTUd2ZnJINVBRMCtCWjdYbkl5OWpMNUZYcmRld3Q2VjNxdmRoN3hjKzlqNXluK00rNHp3MzNqTGVXVi9NTjhDM3lMZkxUOE52bmwrRjMwTi9JLzlrLzNyLzBRQ25nQ1VCWndPSmdVR0JXd0w3K0hwOEliK09QenJiWmZheTJlMUJqS0M1UVJWQmo0S3RndVhCclNGb3lPeVFyU0gzNTVqT2tjNXBEb1ZRZnVqVzBBZGg1bUdMdzM0TUo0V0hoVmVHUDQ1d2lGZ2EwVEdYTlhmUjNFTnozMFQ2UkpaRTNwdG5NVTg1cnkxS05TbytxaTVxUE5vM3VqUzZQOFl1WmxuTTFWaWRXRWxzU3h3NUxpcXVObTVzdnQvODdmT0g0cDNpQytON0Y1Z3Z5RjF3ZWFIT3d2U0ZweGFwTGhJc09wWkFUSWhPT0pUd1FSQXFxQmFNSmZJVGR5V09Dbm5DSGNKbklpL1JOdEdJMkVOY0toNU84a2dxVFhxUzdKRzhOWGtreFRPbExPVzVoQ2Vwa0x4TURVemRtenFlRnBwMklHMHlQVHE5TVlPU2taQnhRcW9oVFpPMlorcG41bVoyeTZ4bGhiTCt4VzZMdHk4ZWxRZkphN09RckFWWkxRcTJRcWJvVkZvbzF5b0hzbWRsVjJhL3pZbktPWmFybml2TjdjeXp5dHVRTjV6dm4vL3RFc0lTNFpLMnBZWkxWeTBkV09hOXJHbzVzanh4ZWRzSzR4VUZLNFpXQnF3OHVJcTJLbTNWVDZ2dFY1ZXVmcjBtZWsxcmdWN0J5b0xCdFFGcjZ3dFZDdVdGZmV2YzErMWRUMWd2V2QrMVlmcUduUnMrRlltS3JoVGJGNWNWZjlnbzNIamxHNGR2eXIrWjNKUzBxYXZFdVdUUFp0Sm02ZWJlTFo1YkRwYXFsK2FYRG00TjJkcTBEZDlXdE8zMTlrWGJMNWZOS051N2c3WkR1YU8vUExpOFphZkp6czA3UDFTa1ZQUlUrbFEyN3RMZHRXSFgrRzdSN2h0N3ZQWTA3TlhiVzd6My9UN0p2dHRWQVZWTjFXYlZaZnRKKzdQM1A2NkpxdW40bHZ0dFhhMU9iWEh0eHdQU0EvMEhJdzYyMTduVTFSM1NQVlJTajlZcjYwY094eCsrL3AzdmR5ME5OZzFWalp6RzRpTndSSG5rNmZjSjMvY2VEVHJhZG94N3JPRUgweDkySFdjZEwycENtdkthUnB0VG12dGJZbHU2VDh3KzBkYnEzbnI4UjlzZkQ1dzBQRmw1U3ZOVXlXbmE2WUxUazJmeXo0eWRsWjE5Zmk3NTNHRGJvclo3NTJQTzMyb1BiKys2RUhUaDBrWC9pK2M3dkR2T1hQSzRkUEt5MitVVFY3aFhtcTg2WDIzcWRPbzgvcFBUVDhlN25MdWFycmxjYTdudWVyMjFlMmIzNlJ1ZU44N2Q5TDE1OFJiLzF0V2VPVDNkdmZONmIvZkY5L1hmRnQxK2NpZjl6c3U3MlhjbjdxMjhUN3hmOUVEdFFkbEQzWWZWUDF2KzNOanYzSDlxd0hlZzg5SGNSL2NHaFlQUC9wSDFqdzlEQlkrWmo4dUdEWWJybmpnK09UbmlQM0w5NmZ5blE4OWt6eWFlRi82aS9zdXVGeFl2ZnZqVjY5Zk8wWmpSb1pmeWw1Ty9iWHlsL2VyQTZ4bXYyOGJDeGg2K3lYZ3pNVjcwVnZ2dHdYZmNkeDN2bzk4UFQrUjhJSDhvLzJqNXNmVlQwS2Y3a3htVGsvOEVBNWp6L0dNekxkc0FBQUFnWTBoU1RRQUFlaVVBQUlDREFBRDUvd0FBZ09rQUFIVXdBQURxWUFBQU9wZ0FBQmR2a2wvRlJnQUFCVlpKUkVGVWVOclVsMTFNazFjY3huOXZTNUhXdHJCR0VKQUlMTnNjenE4QzJ4eERKd2ttKzdoWURCZGtaaGV5R0dneXk0MmIyK0xORXJ4WnZObUdKbFV6dHl3em1telJaV0Z4dGlIZ0pnUExoNG9iMnhRdE9BdUtVRDVzMTgrMy8xMElxQU1WVUxic1NaNmM5ejBYNy9tOS8vT2NuSE1VRWVHL2xQSy9BTERaYkFYamo5ME9oMk4wM2dGc05sc2lVQWxzQmw3SXlzb0NZSEJ3a0ZBb2RBWDRCdGp0Y0RpdVBYSUFtODMySEhCbzNicDFUK1RuNTVPZG5VMGdFQ0FXaTJFMEd2SDVmTFMxdGVGeXVZTEFEb2ZEc2VlUkFkaHN0dGVBcnpkdjNxeGZzbVFKOWZYMTlQVDBFQXlGTVp0TkpHaTFKQ2NuczNIalJnQ2FtNXR4dTkxN0hBNkgvYUVCcXFxcVJGRVVLaXNyR1JvYTR0aXhZN3orNWxaK092NHRpVG9kaFlVRlpHWm1ZbG1VUnIzckJCYUxoYlZyMTFKWFY0ZmI3WjdSWVB2MjdWT21kSW9JSWtKVlZaVzRYQzVwYUdpUUE1OS9LZEdZS3RNcEhoY0pSV0p5N0x2djVmRGh3OUxaMlNuVjFkVXlQRHdzOTFObFphVk1qSFduRThaTC8wSk9UZzVyMXF5aHBxYUdMZHQyVU5mcW8yUmxDa2E5bHVzalVUb3UzUVFnR2hNRWlGc0srZkg0aCtUbDVWRlVWTVRIbjMxTHp1cVhwLzN6TGFYcDk2eUtacnd0dDFxdHRMUzBVTFMraE42aEJTaEF5eDlqL094cG9LVi9QeEhERVNLR0k4UUZFTkFvR2w3ZFZJN2I3V2JGaWhVTWUzK2JVd1ltQUFxeXNySzRjT0VDVHp5MWpJbUowcHM3R0F6L3hraDRnSkh3SUVQQjY3UjV0ek1SMjJEUzAzZzhIc3htTTFxaVJNT0JPUU9rbTB3bVJrWkdlTXhpQWNDeTZDeEQ0ZC94QmZ1SWhoTUlCelZFUW9MUlpLSzk3eDBFU0V6VU1qbzZpb2l3Y09GQ29pSC9yQUVTeGx0VlZWVzBXaTJ4V0F6UU1sNXBpSmxSSmN5b2VnTTFIa0pFaDBiUjNscENLR2kxV3VMeE9LcXFvbWkwY3dhNDR2UDVscVducDNPdHo0dlJ1QnlBUUhRTUVZV0FPb3hHMFJBSkpxSUI0bkVWczFIUGdyaVB0TFEwUkFTLzM4L2l0SFMwdXNRNVRVRnpiMjh2QlFVRnRKNXV4bVJZd0ZEa0FxcEVpRXNVRkNIc2o0SEF6YkdiQ0lMSm9PUFNMMDNrNWVVeE1EQ0F3YlFJeTJNbWtvMExwbmdtQUY4NG5VNXljM09KaFVQOCthdVRKMDF2b1FEK3VBOEZVSUNBUHdqQUc4L3ZaK0RTejF6czZtVFZxbFdjTzNlT1ovTFhrcXlQVCtzSEFqZ2NEZytBMCtta3ZMeWN0dVpUbkcycW8yangrK2pPSjJDNjZHZFJmNGlNUVF0Yml2ZlQwZndEalNlK1k5T21UWFIxZGRGOXVaZmkvQ2NKZU52UjY1amltV1FBRWFHN3V4dWRUc2UyYmR1b3I2L25xd083V2JHNkJJUEpURXlGa1pzQkRuLytDYW5tSkxadTNVcGZYeDlPcDVPOWUvZmk4WGh1N1pnOTdTeGQ5dXlzUXdpQTNXNW5aODEyZ3NFZ3BhV2xyQm9Zb0t1cmk2dlhyd0tRbEpURXl5VXZrcEdSUVh0N08vVU5MdDU3OXdNOEhnKzV1Ymw0dlY2cXE2c3BLeXZqZXNyNXllOSsrdmFSbVFHa3BLU1FYT3FqL2J5THBwb21YbHIvRXRuWjJlaDBPalFhRGJGWWpQNytmazZlUEVuZlg5MWtaVDdPb1VPSDJMQmhBMTZ2bCtMaVltcHJhN0hiN1pTVmxmSFhjNjJ6cXdDQWtpQXN0STZoWHhiQTNmTTlqUjBLcUJvUUJSUkJ2MWhJekFtUm5Cb2hpQS85NlVJYUd4czVldlFvZHJ1ZGlvcUsyeEE4R0NMaG51azBxQmlXK3pFc2gvNmVHNVA5VVNBak5YWHlQZmg4RzhmZnV3SkFiVzB0d0JRSU5zNEI0RTVsNUtUZUJkSGZjNE9Nbk5zUXIzeTA5TDRROTlYRXZqeStYeitVckZicnBBOGVQQ2dpSXFkT25SS3IxU3E3ZHUyYTlqeHcxNG5vVVp4eVcxdGI3MXBWRlJVVk5EVTFUUVp6NTg2ZHlyUVZlSlNlVFNYbUJXQTJFUE1HY0M4SUlObHF0Y3FVRE15WDh2UHpKd2M0YytaTUduQWNTQVFLUlNTaW1lKzdYMGRIeDUyaGF3U1dXSzNXbFNJU21iY1EvdE9BSHJnTWRONVovbjlsQ2g2a3Z3Y0E4NlprN2VkazVURUFBQUFBU1VWT1JLNUNZSUklM0QnLFxuICBmaXR3aWR0aDogJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUY4VWxFUVZSNDJyMlgrMDlVUnhUSHYzdjNnZnZnalNDTG9pZ1ZyUkN0MWtTaUtDSlVLNmdMRkJacDZpODFwazFqbXBnMC9SdWFKaVpObTlnWSs0dE5rVlY1S1JBcGJ5bEI0Nk1hc1NwRlVSUVE1TTNDeWo3dTdablpYY3JqUWtHbGs1dzd5ODNjT1orWjc1bHpCZ1VBVlVGUlViRlNVS1NLa2dUV0ZGaWNKbmw2UWFHQVM1VEtNdFBUVGN5WGIzRko4WERpUndjaGlhNUZjejRaUWlFb1VmZjdKWmdPbWZ5WXY2V0Z4VVU5dTFQU1VIcjdDWlRDNHU2QVN3VFNOcTlHYldVcE1renBvY3hYS0FGMEp4SEFsYnR0VUFrQ0ZPK0tRSnIySjBuc0pOdTNNUW8xYm9Dd0tRQlZ6ZTFROFMxNFN3TEovVkR3bUpLbXZIYTZKQ1RIclpRSHFMbi9Bc0xBVTRqV1Z4Q2xOM0VzdWZXalR0QUhRd2lOaGhML1FuZ0JrbUpYRUVEWlZBQVdBL1VQTytGc3U0N016S3gzb3NERjhpcjRoTDlIRUc3MzdoaVFzSFA5Y29vQkdZQ0dSMTE0M2RxRXJLeHN0RDE5Umtvb1BHcjhseVFTWHp6VE9HclZTdnlhbDRkTWt3azZuWTVEYUkxck9RUkRZQUE3MWtYSUF6VDkzUTFyU3lNSGVOYituRTZFQUNYRmhDRE1EU0RTcEM0S2I1Y29ZbVhrQ3VUbDV5TjEzOGYwclJJR1h3TUt5cXRoaUZoTHkzQUR4TWNZNVFHdVArN0I4TU1HQWpEalJVY25WQ29sZmluOWswQVVmRGZrWlhkUCtubmFCM0E2WFZnZVllUUFtUmtac0k1WTRhUFJjSWpDSzlYd2pWaEg0MFZzalY2R3V1a0FpUVJ3KzhrcjlEKzR5Z0U2Tzd2b1JDaHBBdVc4QU1ZZExnNWdOSVp6Z055Y0hJemI3YkNOMmFCUnE2SFQ2MUJTVVF1RE1RYWIxeXlWQjdqenJCZTl6ZlVjb090bE45UzBBNmN2M1NJUUFwZ2xEcGl1TExLUEhkd0NCd0dFTHd2RGpaczMwZExhT3ZFRmsrYXozRnhjdUdCQnlJWmQyTFFxaEFCS1p3TGNhKy9EeTN0MXlDYUFudTRlTG9GR3JYVG5oam1hay9TM2UzWkFhOURCVjIrUUhYZWVBSmJGSlNJdU1sZ0dJRGtWOXpzRzBYbTNoZ084NnUzamprOFZYdWVCT0Z0dVl0SFBBdkNyVDdaeEVIRmFBbUVTTVFzTFhjb0JqQnVUc0NFaUFIVlZaVE1CSG5VTm9mMTJOYkt6emVqcjYrY0FQbW9WQWN3bGdTZkZrblB1elB1U0hpS0hjL0VZQ1FrSnh2bnpGa1J1M29PWWNQOXBBRVZGM2J0U1V0SGFQWVMybTlVd0UwRC93QUFIK09uaU5kN1BkUkNscVkrSmR3enFlRlk4NzRNQ0EyRWhnS2dQOXlBNnpCLzFMQWpUcHdHMDlReWo5VVlWQnhnY0hKcTBBd3N2VUY1cHhoMU9EaEFRNE04Qm9yY21JeXJVVHg2Z3ZXOEVqNjVWY29DaDRXRU84RU4rbzZkQUxReUFiUUZ6L0hYT2R0NzcrL2x4Z0podEtZZ005cFVINk9nZnhWOU5GUnhnaEpJSXU3bnc3UmNVYitLZkxqanUyR0EzTFY5S1JnemcvZmk5aUFqU3l3TjBEWTZoK1k4ck1Kdk5zSTZPOG9tRVNjNjlNczlXS0wxbFkvSjQ3Nmt3NlBXd1dDeUkzYkVQNFFFNmVZQ2VJUnZ1TkpRang1ekRNeGhidVlvWm5RSTJtOTBwOG9pZUM0QmxUWTNLTFJsTFVFNDJua3lyMHlMZmtvOU5DZnNSNnErZENiQ1RqbUgvNkd2Y3FpdmpBS0xURG9FbUdyWTZjTUxTZ3RaZUcrcSszUUtYUTRMMzhqcTlNY21VYWdVU3Y3dUY2QkF0VHByWHdzK2dwcmxFbWt2REFiWWtwaUpJdndSWHEyUUFoc2JHY2FPMmxDVElvYXptd0k4VlQzQzJzUU5zUVNjL2pVWEMrdEI1NmQvd29BY25mbXVtMVFOSHRrZmcrTjdWbEZYVkpFRSt0dTVPZzcvT1J4N0FhblBnV3UxbEhvUmhSd3NRWk5EQWQ0bUtGeUxyYXljM2h5Zmh5RXBBNDlRVXRBYjZoaGtiTjBMZjlGdnQ2RDZUeVlOdzIrNERNR2pWTXdFU0NNQm1kNkt4c29STElGRUJPVlBWZ3U4TDcvRThjUHJMZUNURUd1ZTNBODJkT0hhcWllZUJiekxpY0RTWjdnSjB0MkFTYkU4NUJLMUdoUVk1QUZaUTZpdUtjWmhLcWJlTjJldzRjcklHRDU4UG9Qbm53L01DaVAzaUhOYXRDTVRaRTBuUWFUVVQ3ODlSbWQ2MTE4UUwzRlFBcWdVSmUxTDVtYTBwTDBEdTRkeDVPVnBveXp1WGg2VDltVHkzTkZSUHFnVkZKY1YwREEvUW1SWDVRTlo3ZjdNYzdDM0c0bHhKWUNJUTZEUjRNZ0dmd1JNdmdpQnc4LzZ1cjd5TTlFTW03dzRVUHlZL2hvbmdtb2VmaGJiSmQxc1dyT1RLbW1FeXJXR3ZBc2lpeUFLeGVQK1ZUVzlzZlFOa2JjeWhta3hQcG5tcktSZmU3R1NqLzllS1oyMy9BSXZITzhVRTNFNjJBQUFBQUVsRlRrU3VRbUNDJyxcbiAgcmVsb2FkOiAnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQzcwbEVRVlI0WHJYUWEweFRkeGdHOFBkL2VzNngySmJMMmlJTnRDUWRBa3ZBdU9Bd0JNS01maUJaSkdXTVlRSXg2OHBsd3dFYlVmQUNlSWxHeUpiUVZZTXhzakdHWmtIRElGWkhJQnVyYm9PUUVTZ0xsZGFJU011NmNtcHJTaS8wY25wNlRMOElpU2I5dE4rSDUrT1RKdy84ci9ySFZnQ2dBcjdxbVpLb0xvd243eTNyZ2lNbmY0YVkycS9yb2VQNkFpby85UnRaYy9GMzNrZWRNdzBseDNXbkR6Y1A4OHBiaG1FN0RMYjVkY1lLYzQrY21HMkRmWHZhNUQ1cWVjRmUwSnVEM1dhN1QrWFl4T3A4Uk5JaFFaSWZLKzhZZWIxZ2RNRUZoRGdSMXhvREJ4eGhVdU9rVVkrWHhWcTlHUG5GQm1MenZEaEs5M0IzMWx1NThzeG5rQU9sNmdtSXdxTngxZUNERDNQMndhVUhmK1E3Z3NFT0dvV2tEQXJxNllqZmh5ZkZaMFg0dkV5YUE1Z0hNZnNadi9mOXQrejlUNmh3THZOcWdXblpBaWNteC9tck5sdVIzVzcrMjA4WlZMUnRYcG5FZWQ2WW1DbjZFMFE3dkdHT2YzYlR0WGJOYVRaTzI1YU1FY2VLQ1Y0cDY3NERuM3l2RXlpNmJoZmtIVzBYanJJc0ZLb240TlBoeFlUODNxbXowdlBhMDd0cXI3eWJ1TDhxTHExdUVGNGpFVXVoOUtRYWlxdWJVWEYxRTZobkxhQ1orNWRUMVRzV3YrZXpiOFFKQjFWa0c4dENURGNXS2ZqQlFPSEtTVXBlb2wxVEZmYjk5ZkdlMXF0RWtmb2VmRDR3QjE5UFBJMXYvazRucnpnM1FOUm90RnNucWthV2dBY3ZzSWVQUFJsT0dpOXgwSmpDRndwbFJkeGhkWFpLS3BFcHl5VkpNazVLZWJ3S1Q0aXhVVmJURUFNWnNIV2kxUTVHeXNFMVdWMjF6OWI4bHh4cjNrTitxMThJRy93RC8zbDNuMTFZWVRTcnRzQ1BMcWU3YU5OcFgveXlyeXZrV1A0SG9sQTBwR2Y2Z1NXbU1DeFlVWWxvVVRmUVdEb0tNNEFBc1JpTElsd2NDNlVJZ3JOQ1pMbnNObW9uY1o0b2ZQK21acXNnU3RZMENDemppOGNpdTA4aG10ZklCTlpYSTNUUWlyR0VtMkFDOHdKMi9aYzQ4NUF4Q0h4R1A2K0RONUxWM2dKWjNWQjJ1dXJ1VDJtVjN5b1RpNnRUeElYMXd1UjNQaURlYXpNQUNURklsQzJRV25PT2sxclZXU0FwT3lhWEtCb2dscGZCK0VuNjI4b2dBZ0FBQUFCSlJVNUVya0pnZ2clM0QlM0QnLFxuICB6b29taW46ICdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFDb1VsRVFWUTRqWlhRdTJ0VFlSakg4ZTk1MzVPVG1EUXhhWnVZVTZOTmk5YTdDYWlRU2N6bVdCR0ttMFdITGtMOUR4VEVUU2tGMFlxRDFrRVV2Q0pJNnlCeFVpVFZxUFVLTGExSkpmWmllaExUa3pRM2gxaHRRQkIvMDhzTHorZTVLS3pLbVhNWGdrMU8xNmx5dVJKME43Y2VtSnY5bHBpZm4wL2tzcm5oSzROblkvd2xjdVV4Y1BuNmdLUEplVk52MnhodUQyNE90clQ0YVhLMStOZllIZUhGYkxhM28ydVhlL3psczlHL0F1Y3ZYUnR3dWp3bmQrL2V5N2F1THZSMVByd3RIdlIxWHRhM0JWaXFPakNNNzVIT0xkdUQ3MTQ5ZjlBQVhCeStIYTVVcXRmMjdZM1EyUjdBcXFsSXFTQVZCVlVLYkZZTm43ZVY1SGRCY1drdTNORzE0K21IeEl1cEZVRE1wSkw5Zm4wRDdZSDFsQ29LK1FLVXluRDA3Q1JDQWFGQXM4dktudEJPbXYyYnNkcnMvYXNuRUpVcTRUWmRSNVVLRGl1c3RZTVVVRFJ6bU10UUF3VGdiM2JoMTROWU5LMTdOYURtelVMWXNjYUdGUFhDSTZjbktabzVDbWFPUS8wakZNd3NEeS8xb0tvS3JSNFhGb3ZXY0VRMTl5TS9aV1NOb0NvM0lCVzRmYVlUZ1AzSFJuaHk1U0RWR21UeTlWVlVLYkJxbGdaQW1FdExpY21wYWFTb0lTV292eVlwbUZtRUFFWDU4MmVhQnBwRkpocUFVbWw1TVA3cU5WL1RzNmdTcEt4M0c3dlZnMUNnV29WU0JiSS84bVRtdmlBVUJodUF1OE1YWWtabTRmNk5lNCtZWGNqVUx5OUFBV28xTUpkaFlkSGc4Y2dkUHIyTmsvb1liNWhBQW16YUZobzFER1ByNjQrVFcvUEZNbGJOU2laWFlONHdtZmd5dy9qNFN6Ni9mNFBIVmlXZFRoK0pScU9qOFhnOERmVkd2OU56L0dTdjIrM3BkM3M4NFNhbkUwMUtxclZLb3J4Y0hOelo0U09kVGwrTnhXSVVpOFZGWGRlalEwTkRpUWJnWCtucjYrc05oVUsvRWJ2ZEhwWC9MdnVUc2JHeFJDQVFtSTVFSXQycFZNcVdUQ1lQL3hld2d2aDh2bW12MTlzOU1URng0aWZHQndONFVyZTBFQUFBQUFCSlJVNUVya0pnZ2clM0QlM0QnLFxuICB6b29tb3V0OiAnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQ2xFbEVRVlE0alpXUVRVc2JVUmlGejl3N21ZbU9TZk5oWWtaampWSlRiYTBKMUVLVzhSOElCWEVwZE9HbW9QK2dCZW11UlFKU0NWMVV1eWhkMkM4S2hYU1ZybHFLMGJHa3JTNE1hbUpOTlJvbk1abUpTU1pkeEZnSEJPbUJ5M3U1Y0o3MzNNUGduS1lmejNwYVRPWUhsVXJWWTdHMUJ2ZjMva2laVEViSzUvSUx6MEtQb3JoQXRIR1pDYitZRVZwTXI4VDJxLzR1VDYvSGJuZWh4V3gzTlRVSi9xTmNicnpiZThzU1gvNFN1UkR3Wkc1K3htUzJUZzBPRHFIZjY0WFk1b1REYm9YWTVrQkh1eHRGVFlBc0h3WjZydC93L0ZqNStsNEhlTHF3Nks5V3RmazdRd0gwZExuQmN5d29aVUFaQml3bE1QSWNuSTVXSkE4SlNzVjlmN2YzNXVkZjByZk5Cb0RzcEpLVExyRVRYZTRPbEtzTUNpcFFyZ0FNQTVEVFl6UHp1TzBiZ00zVkM5N1lQSGsrQWFscThMZUxJbGpLUU9DQks4MEFKVUNoQkNnblFBMEFBZUN5bWVFU1BUQnczTWg1QUZ0UVZML1FaQVFsZGVQWXd3UktTaDZxa2tkSk9ZYXE1UEJoYmhRc3k2RFZhb2JCd09sS1pQUEhoVTA1SjN0WTJnbktBSXZUUFFBQXJRWm9XbjFtQy9XdnNKU0E1d3c2QUZHS1JTbXh1UVZLYXFBVVlFK1RVQVlncE41RjQwMVJaSEFHS3VrQTVmSkphR2xsRmIvVGUyQXBRT2xwZWFRK05RMG9WNEhjY1FIWi9XMFFCaUVkNE0zQ2JGVE9Icng3K2ZZajlnNnlaMllHUUsxV0wvTGdTTWFueUd1c3g1ZVFXbHZTSmFBQWNLM2ZGNUZsdVc5MUxkRlhLRlhBY3p5eWVSVVpXVUZpZXdmeCtETFdmMzZIamRld3U3czdGZ3dHSTdGWUxBM1VGNTFwOU43VXVNVmluYlJZclg2VHlRUURwZEJxVmFseVVnb05kRHVSVHFlZlI2TlJxS3A2SklyaWNEZ2NsblNBeXpReE1USHU4L25PSUlJZ0ROUExiZjhVaThVa3Q5dTlGUWdFUmxLcGxER1pUTjc5TDBBRDRuUTZ0eHdPeDhqR3hzYjl2eVlnL25tRzI0RzJBQUFBQUVsRlRrU3VRbUNDJyxcbiAgem9vbXJlc3RvcmU6ICdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFDc1VsRVFWUjRYcDJTVzBpVFlSakgvNS9mWWR0blRjMGpyaFBXMER3dDdIQzNtWkJlS0YxcGJWb08yNlYzUmtLM1VSY3FpTEJBRFJ4RVhaUjJvOUx1REFhS2VTSE93MVp1UmRCaFRzM2NOTDl0YnQvMjltNmdxQVNCUC9qQjgxNjhmeDZlNTBGSFIwZWIxV3A5UGpBd01KUzB2NzkvYUhCdzBOYlYxZldpdXJyNkF2NUhjM1B6YlhLQVFDQkFuRTRuc2R2dHBMZTNOMlF5bWU3VzE5Zm5WVlZWOGZnWHJhMnQ5d2dsRm91UjVlVmw0bkE0U0RBWUpIdkU0L0hFMU9Ta3E2V2x4Y3p6ZkFhT2tNYXlyQUtVaVluM2NMbmNNQmdNOEsxdlluYnhJejU1djJCNmRvRXByZFNWOVhSMzk5VFYxZDBDSUJ3S29DaEJZZGswMU5iZWhOdjdGY0h0UHppVm5RM0NLeENKeGpEaG1NWUpkVmEreGRMMlFCVEZzNGNDcUZ3NEhJYlgreGxxdFJvLy9Hdkl6YzlIRkR4MkVnSzJJTUxqLzQyWnVYa1k5SVppR2xCOE5FQ0lScU5JVHhlUmhCTVU4RXNFSHplaWNLMkY4VFBFWUVWaThHUDFGM0p5ODBTTzQzSUFNSHNCWExJbWhDQ3dHUUF0OEcxbEhmN3ZFdmlUV2FsM1BDRkRJWEE0ZjdvUTY2ditDQjMyN3FFT0dBWVFCQUVaR1dyNGZENlVhODlCbGdLQUhJSEEwL0R3RHM1bnFYQ2w0aExHMzlsWEpHbkhBNERzZHdCQ3dQTWNXSTdINk9nWXpHWXowcFVpcGhZK1lYTWpoSkl6QmJoeFZZL1ptUS9vNit1VEk1SGROQnpFY3QvU0dZbUV5ZExpSXJIWmJPU1oxWnFxU1Z3bVNmNXNCY240MkJpNWR2MDZLU29xSW5UdFN3QXE5b2RJUUNETE1yYTJ0NkRSRklMbFdMd1pIc2FEaDUzSk04ZmpKMC9obkorSHJySUNvVkFvb2Rmcnl3RzhwbDdlMndLYkhJUldxNFZPcDBORFF3Tk1SaU9hbXBxb2pUQWE3NlJzYjIrSEpFbHpIbzhITlRVMVpTcVY2aFdBRW9aZW5rbXJ2ZmhJcVZUeTJJTUFDVUpTQmNNd0tlbG5lV1RrN1V2YVJhbEdvN0ZrWm1iQzdYWTM0aGlVVWExVUc3VWN4MEJCemFNV1VNVy91aDQ5a2VUWlNYWUFBQUFBU1VWT1JLNUNZSUklM0QnLFxuICB6b29td2lkdGg6ICdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFDeVVsRVFWUjRYcVdTWDBoVGJSakFuL2VjZFNiYk5KZEZLL3AzdFRBdlhJNEl3cndKNnZ0RXFLODE5YWJJRzFHQ1lSY0ZzK0ZOWGRTK3o4MnRQMUFScFg3VlZVVm9ZZ1dsMDdvSXRIOEtVY0hVeGY3WTV2NjY3ZXhzZTNyZkVVc3hyL3JCdzNrNDUzbC9EODk1WG1JMm0zZEprcVFHaWx3dWoyNVlYMkZHZ0ZwQ3VBcEVoR3cyRytRSVRDZFQ2UVpSRkpFUUFrdmhLaXNycjFSVlZZM1E1M09GUWpHY1RxZWJqeG1PYmpNWURNcW14a2FsOGRqUjdZaFlYNnBTdVpod0JRNkhZdzRScGNIQkFhbjd2My96aVdRSy83WjdrSkZJeFBHdjdqa01SNkxvZFBSZ2o5MTJ4Mkt4UUZkWFZ6SEFicmZQSXFXL3J3OFhRaUZzdXU3RGp2dGU5TThIMGZQTmk2Zi9uOFhEbHowWURDMWdaNmY1bGMxbVkyZUtJWU9mOER5QjlsNHZmSXFvWU1hUFlQaWFCa1l1RDVBVUpXaTlIWWZkY3FHMHJLd01sdjZIb2lCUEM2K2QyQVJ0ZHhPZ0tlZmh3cEcxd0NZK1B4Z0RkMENDV3kyYndXb1ZJNUZJbERialZncldDQUpFb3d0Z041YkR1U2NaVUNsS0NwMkN5VGpjYk5rQThlajNyQ2htd2p6SlF5Nkh3Q0EwaWlxdFZnc3ZSOFlnazRyQnhRWU9vdkZGaUMybXdHbFVRU0lXZ2tlUEI1SjB6VlU4eVpVQ0V1Q29uT2VXQ0hRNkhlajFlaGgxalVFNEhDbDBSenFYMStlRDRlR255UE95a3VQRytpMFlmTytYY1hnaWoyVDVDSWdJMWRYVkxJR2hvYUhpT3laU3E5VWd6Yi8xWktXZE93N290c3BkSHladTVNcjFPU3E1eTFZeGc0aTVUQ2FETEJodXQzdFplRHdlYkcwL1piVzIxVXc2VEh2ajcrNmR3YXVXNXJTejIvcVBEQ2s1Q3IyeWhYRm9DaHFONXRkVjVUamdlUjU0UWhTWCtpZHJMQ2YzQko2NVJzbkIvYlhLa2VuSlhpWmdod3J4RzRvNzV3aENLQUhnbXZpOHNVNnY5WTlQZmZHVktEVVZNdHBCVG92V3dPb1VKSUlnbExEOG96c05EMSsvMFRnNzlvMExYSDVBRmdnRUhwaE1KZ1VBU0xBS0FtVnFhdW9GeXhmRlBMUWRXZ2MxZFliYU91TlpJR3lFUCtFSHNyRjVIeHBoNXhvQUFBQUFTVVZPUks1Q1lJSSUzRCcsXG4gIGhpZGU6ICdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQWJwSlJFRlVlTnJVazhGS0FsRVVodTlvcVJRMkpDRzBVQmdOV2lqV1FrRmhpQXFhWEVSTGNlRTIxKzE2QTErZ1JRc2hDRnk1TUdpVENST0JndUVxekdrVkkwa2d1bWloT0tRdzNmNHpPTDJBcXc1OE1IUHYrZjl6enIwekF1ZWNMUklPdG1Bc2JDQWdySWY1S0d0Z0h5Z2dCSHp6dkMrZ2d4cDRBaU5iWnhzSU1EaDF1OTFuaXFKczVYSTV2NlpwcTQxR3cwV2JzaXpQSXBISXBGUXFEV3UxMnZ0ME9pMUNkMGQxYVFRUE9FOGtFaGYxZWwydVZDcmJwbW11QndJQjEyUmlNQUlpRjYzUkh1VlFMbWtzcmRQcFRLUHE0MkF3bUJxR3dRbFZWVGxGc1hqTlpmbUFLOG9KUjFmYzNxZGMwcEIyQ1M3WlpETHBRL3V1Mld4bXpWVW9GRkRaWkplWFY5WjdPQnhsbjU5dnpONm5YTktnVUpZTWJscXQxdnBvTk5yMklDaEJraVNtcWsyV1NoMVpBby9IelphWHBUK0Rid1EwSDZSMU9oeU9mcmZiL1drMm0yWThIdDhRUmRHTGVabW12YkpRYUllSm9nL1ZOWFo0dUdjWjY3cmV6K2Z6OXppTFc3b1ZBWFBZVjVGRUE4ZnBkRHFheVdTaXZWNXZzOTF1ZTZsaUxCWWJCNFBCZnJsYzdsU3IxUTRhZU1EeU01MlRiV0IvRnlzZ0FuYUJIM2puNjJNd0JDOUFBNGI5N1FqLy8xOVkyT0JYZ0FFQTNIblJVa3JlL0owQUFBQUFTVVZPUks1Q1lJSSUzRCcsXG4gIHNldHRpbmdzOiAnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBSE4wbEVRVlI0MnEyWENVd1VWeGpIMzg3dXNnZUxIQlZCVUZKalVkSGdnWW8xUXJzVWl3ZkVncWFWeEpvQVJhVUtGbXhxaWlncXRZcTBzbUN4SUFpSXNTMVlMeVJpZzZLbENJZ05sZ29DaWh5NklCNndIQ3Zzc3RmMGU4UE9Nc3VsWWw4eXpOdkh6UGY5M3Y5OTcvdmVzTkJidEUyYk5uRlpMQlpmcTlHZzlJd00rWGhzc043QUdUOHRMVTNKSEV0TlRaVjRpTVhoT3BKRUdSa1pjdzhmUGx6MXZ3UEV4Y1V0bXpGanhyZnZUWisrNU56NTh4L3UzYnUzRm84SEJRV3gvTmV2cjUwMmJkcE1yVTZIQ2dvS3dyZHYzNTdJQURZUmlVUUxKUkpKMlZzQlpHVmxIZkR5OG9yU2daT21wcWE2Q3hjdWVGaVltNzhyRUFvWCt2bjYvZ1RqTEF4UVVWRngrYzZkTzU4Y09YSkV1M256WnA3cjRzVTVDMXhjMXR3dUw4K3B1My8veThURXhLNXhBU1FuSjIveTlmVk54UUQ0MG1nMGFuaUpTLzBHNlVtNFl3QjhmL3IwYVd0dGJXMk95TXhzNWx4bloyLzhqQllhTEoxZGFscmE4L0V1Z2MvR2pSdnphQUJTZjZmNkFLQmpBTkRqTkJqdTE5ZlgzeXU4ZnQwWjRvVjhKUUNzcituczJiUGordnI2L29IWjNGVDE5MDlZdTNidCtZblcxdmI2MmFBWDdUSWtrM1VoaFZJSkRyUUlnVm1DelVZQ1BnK1pUeEJSZHliQXJWdTNqbS9kdGkza3RXTGc1TW1UQjBEdUtIcDJJRGQ0UUd6OCs4V0xEaVJ0YlVPbVFqNTFFU3dXb3FId3ZWK2xSbjBLSmZBUWFOSkVTMlRDNVZEamo2WFNlMFZGUldJSXh2WXhBWHg4ZkZnUjRlSFhGeTVhSkdiS2plVnRiSDZNVlAwcU5QRWRDNWd4YVhES0JLRDdHcmg2RlNwUXd3eVpDbmpVZUUxTnpiV201dVprb1VBd204dmxPajVzYUFoTFNrcnFHYWJBamgwN0xFSHlLN0FNUzJpQXhrZFM2aUVMY3pPa0ErTVlTRGNHQU4xWDlHdVFTQ1JFZkJQdVlHem9sWVdZQ0l1T2prNGFNUWdQSGp3b0Rna0p1WUVmeG1zdDYreENrNnl0Qmd5OEFRQzFMR29kS0dGS09XRUMvRlZjbkJrWkdSazBJc0M1YytjeVBUdzhBckN4Qi9XTmFJcTk3VUMwNjQyL0xnRFZoL2RZQkFjSmVGeUQ4N0t5c3N3SDlmVWhLU2twS2lNQWtNUm04dVRKcTFhdlhpMHhNek96Nk96cVJnb0lLa3VRWGt2UGlsYmdGV29ZS1lIWUZBQkpVckZRY2JlcWFuRkNRb0poUzdKd3l2eDh3NGJDK1FzV3ZBK0ZoVU8vMkFJUmIyVnBqdGdFWWVTSUJ1anVscU9IRFkxdGZENWZNTVhPMW9MRFlROENNTUZJRm9MQWc1bnFrRnd1NzhyT3pyYUd3cVV4QU1CNmkrTGo0N3ZoWVlLNWZvK2xUNUM5bmMyd21lTCt5NWU5NkpkZmYvdW1ycTVPZ3F1aHUvc0hXUjVpOTNXSWtaZ0dBVWpFNGZJZ0NEUjRDY2lNek13NWtCbHJEUURCd2NHbU8zZnVyTEd6czV1Szh6b04wTkhSaWF5c0xBYmxaQUEwTkRZOU8zUG1qSDFLOHM4NFQ2RFFzSytjZ3dJRDdySUoxb2dBcHFZVGtLSlBUaStQR21wRGVkdVRKeGVodGtpb0dJRGlRZGpZMkRqTm56Ly9hMDlQejBBcVlFQTBBdjVxR2FyUWFyUjN5T1NuVDUrMlAvTGpEOVFaWVBlZWFMRy92LzhOVXFzWkJnQUtvVW0ydHFpdHRkVW9mVU8yN2NuT3liRXkyZ1VKRXNtYWdNREEzSUhNcGtKQ1B0OG82QWFONjFEbDNYOHZWVmRWN1dPek9aYkwzSllsV1ZsYU9vMjBVOWdjRGhJS2hhaFRKak1Da01sa1QzOC9lOWJlQ0dEZnZuMU9FUkVSTlZoMm5GWWhjeUZDTCt2UUhVQ3RMUmpIenlvVml1R0JxdStiOFBnNHBjTXpmVWlwVkNxcXE2c0xPanM3cjBsYldxNUNnYnB2QUlpTmpSVXRYYm8wZDk2OGVSL2hGMVZxTlJnaHFXdzI2aFljQ1d3SUFGOG9Rdkx1VGdvVUNsTldlRVJFd0xCYXNILy9mdEh5NWN2em5KMmR4Y3lkb0ZEMlV6a2R0N0VjalRhTzVRZWgwRXQ1RHpXZWYrV0tkMHhNVFA0d2dMQ3dNTnZkdTNmWEN3UUNrVzVJMEVFWUlaRlFZSlFEWGtjQjdKa25FQ0paK3d2RFRxcXNyTHhVVTF1Nzd1alJveG9qQU53Z3F1UGMzTndDWVkzK0pnamlwYXVyNjZla2ZodmhtZkJNVElidGh0RUFjSnFEL0lSa0hlMUlCY0hNbkZScGFlbXhCcWlHeVNrcHBCSEFsaTFidUFxRmdqeDE2cFJtUjBRRTIydkZpdnlGTGk1ZUdBQmI1RUJWNDFLU2ttTUNFR3dPRlp3ZE1QT2h6Z2Z5UzBmTGhZc1haOEVwdW5mRVlzUXN6YUdob2MybWtFWG83Y1BsbWlBVEFNSG9KQ1BuVXd2TklzQTVnWG9oUzNaM2R4blVnQmxuOVBUMFZGaGJXNitCMDdWN2JtN3V1bmlKNUk4UlQwVE1GaFVWTlNjOFBMeUttUjBwWjlEd0RHSC9VMXRVZjNMQ1d3eXlYWitoQ21MQWdxdFhEMEFCMmdzbkxlcEZLSFRDL1B6OHZsR1BaTXlXbVptNXk4ZmIrM3VkUG5IMGd3ZUlCZjVJaDgvUkRxVjVlWG5pUGRIUlJXaU1OaW9BeEVMU3FwVXJ0MkZqcFNVbEYyK1dsQVRiMnRoNFRwazY5Yk1scnE2K0NKOFY2ZUtqMVdvZU5UYzNRM3J0Y25SMFhFUUQvRmxVRkFrcXhvNExBRElpNGVEZ3NCVytiaHdhR3hzakR4MDZwS1gvZC9ueTVRcW5XYk5jc0tQbno1NjFwWjA0NFFRQzlmQjRQTzRIN3U0NWNLNzB4UURsdDIvblFIRDdqd3RnckphUm5pNFI2NzhKYnhZWEg0ZjZZVGgyZnhFVXhJT2lscTVXcTZ1bFV1a3hTVUxDbUIrdDR3TDRMaWJtWTBqYlNmamtWRmhZdUdGWFZOUzE4ZGdaTndEZC9QejhDUGhXMUwyTmpmOEFPUmRvMnBBaUJHVUFBQUFBU1VWT1JLNUNZSUklM0QnLFxuICBtZW51OiAnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQnFVbEVRVlI0WHFXVFBXdFVRUmhHei92TzdIV0RZTkphV3l6NUZTSkVnb1dsWUNHSW5hQ2xDR3BJNGdlQzFtSmpJV3NocUduOUNHd1FmNFRtSm8wL3dSUksxSnQ3SCtlT084VkNzSWdISGpqRDhNRE15NHlkZkxENTdjZnZkcUZwaFpqRkFCM21CZ00zamxkaGp4T3I3M1JVNWxNM05wMEErRnAvQmpjTXc2MlBlTDdqWEJtMUFNbERkaWw1YmF5ZVg2VHZSa1JtdkJzSmJpa0QzQ1BRVUlVRFh1d0dBQ29udXdUQkJZQ0F5SlJMeXlPQ1FZeHc3Wkh4NUtaNHRibkRoYVVSQUJ1VGJTNHVMU0xCbStRRkI4dHkvYkV4REhEMW9mSDBocUFGVTB2b3lIRjFaRmNLb2hETDdNZTN4ZVZVSHQ4U1RRdlJ5RmNhT0puaTZqMFlHVUVFbGFQd2NrVklFQUFQVUFWak9DQlRIQ1Uzb3hDTHZwN1V1RG5CSSs0Qk9HQVluWTJ0R29CalV4ZWlLaTJBdVR0djFmTnJtaTVsK1Q1cUpUMmIxUG9wcGZUK0pmdCs5bTMxOU4weVJNN2ROU3JnN0Qzanc0b0FNSFU0NUZpbjdBSHd3NGE0dFNiT3JCc2YxMFVIV0hteVpEQzM3QUxDN0F4VVBKY0J2R3dpbUhVc2w2QXMvdXN2OU4wNDEzei9OTC8yL25UVGRuU2lnUDNqTzVvWmcyRDBYUU5PQVFzY2piMC85U002SWwwbWFKSUFBQUFBU1VWT1JLNUNZSUklM0QnLFxufTtcblxuZXhwb3J0IHtcbiAgc2V0dGluZ3MsXG4gIGljb24sXG59O1xuIiwiaW1wb3J0IHtcbiAgc2V0dGluZ3MsXG59IGZyb20gJy4vc2V0dGluZ3MnO1xuXG5jb25zdCBzY2hlbWUgPSBuZXcgQ29sb3JTY2hlbWUoKS5zY2hlbWUoJ21vbm8nKS52YXJpYXRpb24oJ2RlZmF1bHQnKTtcbi8vIEFkZCBjdXN0b20gVGhlbWVzIHRvIHRoZSBwYWdlXG5mdW5jdGlvbiBhZGRUaGVtZSh0aGVtZSkge1xuICByZXR1cm4gYDxzdHlsZSB0eXBlPSd0ZXh0L2NzcycgbmFtZT0nJHt0aGVtZVswXX0nPlxuICAuJHt0aGVtZVswXX0gLmNvbnRyb2xMYWJsZSwgLiR7dGhlbWVbMF19IC5WaWV3ZXJUaXRsZSwgLiR7dGhlbWVbMF19LCAuUGFnZUZ1bmN0aW9ucyBhLnZpc2libGUsIC4ke3RoZW1lWzBdfSBhLCAuJHt0aGVtZVswXX0gYTpsaW5rLCAuJHt0aGVtZVswXX0gYTp2aXNpdGVkLCAuJHt0aGVtZVswXX0gYTphY3RpdmUsIC4ke3RoZW1lWzBdfSBhOmZvY3VzeyB0ZXh0LWRlY29yYXRpb246bm9uZTsgY29sb3I6ICR7dGhlbWVbMl19O31cbiAgLiR7dGhlbWVbMF19IHtiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246IDAgMDtiYWNrZ3JvdW5kLWltYWdlOiBub25lO2JhY2tncm91bmQtY29sb3I6ICR7dGhlbWVbMV19O2JhY2tncm91bmQtYXR0YWNobWVudDogc2Nyb2xsO31cbiAgLiR7dGhlbWVbMF19ICNJbWFnZU9wdGlvbnMgI21lbnUgLm1lbnVPdXRlckFycm93IHtib3JkZXItbGVmdC13aWR0aDogMTBweDtib3JkZXItbGVmdC1zdHlsZTogc29saWQ7Ym9yZGVyLWxlZnQtY29sb3I6ICR7dGhlbWVbNF19O31cbiAgLiR7dGhlbWVbMF19ICNJbWFnZU9wdGlvbnMgI21lbnUgLm1lbnVJbm5lckFycm93IHtib3JkZXItbGVmdC13aWR0aDogNXB4O2JvcmRlci1sZWZ0LXN0eWxlOiBzb2xpZDtib3JkZXItbGVmdC1jb2xvcjogJHt0aGVtZVsxXX07fVxuICAuJHt0aGVtZVswXX0gLlBhZ2VGdW5jdGlvbnMgeyBib3JkZXI6IDFweCBzb2xpZCAke3RoZW1lWzNdfTsgYm9yZGVyLWJvdHRvbTogbWVkaXVtIG5vbmU7IGJvcmRlci1sZWZ0OiBtZWRpdW0gbm9uZTsgYm9yZGVyLXJpZ2h0OiBtZWRpdW0gbm9uZTt9XG4gIC8qLiR7dGhlbWVbMF19ICNDaGFwdGVyIHsgYm9yZGVyOiAxcHggc29saWQgJHt0aGVtZVszXX07IGJvcmRlci10b3A6IG1lZGl1bSBub25lOyBib3JkZXItbGVmdDogbWVkaXVtIG5vbmU7IGJvcmRlci1yaWdodDogbWVkaXVtIG5vbmU7fSovXG4gIC4ke3RoZW1lWzBdfSAuUGFnZUZ1bmN0aW9ucyA+IHNwYW4sIC4ke3RoZW1lWzBdfSAuVGh1bWJOYWlsIHNwYW4ge2JhY2tncm91bmQ6IG5vbmUgcmVwZWF0IHNjcm9sbCAwIDAgJHt0aGVtZVs0XX07fVxuICAuJHt0aGVtZVswXX0gLnBhaW5lbCB7YmFja2dyb3VuZDogbm9uZSByZXBlYXQgc2Nyb2xsIDAgMCAke3RoZW1lWzRdfTsgYm9yZGVyOiB0aGluIHNvbGlkICR7dGhlbWVbM119O31cbiAgLiR7dGhlbWVbMF19IC5QYWdlQ29udGVudCwgLiR7dGhlbWVbMF19IC5UaHVtYk5haWwgaW1nIHsgb3V0bGluZTogMnB4IHNvbGlkICR7dGhlbWVbM119OyBiYWNrZ3JvdW5kOiBub25lIHJlcGVhdCBzY3JvbGwgMCAwICR7dGhlbWVbNF19O31cbiAgLiR7dGhlbWVbMF19IC5DaGFwdGVyQ29udHJvbCBhIHsgYm9yZGVyOiAxcHggc29saWQgJHt0aGVtZVszXX07IGJhY2tncm91bmQtY29sb3I6ICR7dGhlbWVbNV19O1xuICA8L3N0eWxlPmA7XG59XG5cbmZ1bmN0aW9uIGFkZEN1c3RvbVRoZW1lKGNvbG9yKSB7XG4gIGNvbnN0IGJnID0gc2NoZW1lLmZyb21faGV4KGNvbG9yKS5jb2xvcnMoKTtcbiAgcmV0dXJuIGFkZFRoZW1lKFtcbiAgICAnQ3VzdG9tX0RhcmsnLFxuICAgICcjMDAwMDAwJyxcbiAgICBgIyR7YmdbMl19YCxcbiAgICBgIyR7YmdbM119YCxcbiAgICBgIyR7YmdbMF19YCxcbiAgICBgIyR7YmdbMV19YCxcbiAgXSkgK1xuICAgIGFkZFRoZW1lKFtcbiAgICAgICdDdXN0b21fTGlnaHQnLFxuICAgICAgJyNlZWVlZWMnLFxuICAgICAgYCMke2JnWzNdfWAsXG4gICAgICBgIyR7YmdbMl19YCxcbiAgICAgIGAjJHtiZ1swXX1gLFxuICAgICAgYCMke2JnWzFdfWAsXG4gICAgXSk7XG59XG5cbmZ1bmN0aW9uIGxvYWRUaGVtZXMoKSB7XG4gIGNvbnN0IGJnID0gc2NoZW1lLmZyb21faGV4KHNldHRpbmdzLkN1c3RvbVRoZW1lKS5jb2xvcnMoKTtcbiAgcmV0dXJuIFsgLy8gICAxLWJvZHkgICAgICAgMi10ZXh0ICAgICAgIDMtbGluZXMgICAgIDQtcGFpbmVsICAgICA1LUJ1dHRvbnNcbiAgICBbJ0RhcmsnLCAnIzAwMDAwMCcsICcjZmZmZmZmJywgJyM2NjY2NjYnLCAnIzMzMzMzMycsICcjMjgyODI4J10sXG4gICAgWydMaWdodCcsICcjZWVlZWVjJywgJyMyZTM0MzYnLCAnIzg4OGE4NScsICcjYmFiZGI2JywgJyNjOGNlYzInXSxcbiAgICBbJ0NsZWFyJywgJyNmZmZmZmYnLCAnIzJlMzQzNicsICcjODg4YTg1JywgJyNlZWVlZWMnLCAnI2QzZDdjZiddLFxuICAgIFsnRGFya19CbHVlJywgJyMwMDAwMDAnLCAnIzkxYTBiMCcsICcjNTg2OTgwJywgJyMzZTRiNWInLCAnIzIyMmMzYiddLFxuICAgIFsnVGFuZ29fQmx1ZScsICcjMDAwMDAwJywgJyM4MmEwYmYnLCAnIzNkNjY5YicsICcjMzA0Yzc3JywgJyMxMDI3NDcnXSxcbiAgICBbJ0xpbWUnLCAnIzAwMDAwMCcsICcjOGFiZDU5JywgJyM2MDhkMzQnLCAnIzM4NTMxZicsICcjMjMzNDEzJ10sXG4gICAgWydQbHVtJywgJyMwMDAwMDAnLCAnI2FkN2ZhOCcsICcjNzU1MDdiJywgJyM0OTMyNGQnLCAnIzMxMWIzNyddLFxuICAgIFsnTGlnaHRfUGx1bScsICcjZWVlZWVjJywgJyM1YzM1NjYnLCAnIzliNzFhMicsICcjYWQ3ZmE4JywgJyNkMmI4Y2UnXSxcbiAgICBbJ0VhcnRoeScsICcjMDAwMDAwJywgJyNmZmZmZmYnLCAnIzY5M2QzZCcsICcjNDYyMTFhJywgJyM2ODMzMjcnXSxcbiAgICBbJ0Nvb2xfQmx1ZXMnLCAnIzAwMDAwMCcsICcjYzRkZmU2JywgJyM2NmE1YWQnLCAnIzA3NTc1YicsICcjMDAzYjQ2J10sXG4gICAgWydDdXN0b21fRGFyaycsICcjMDAwMDAwJywgYCMke2JnWzJdfWAsIGAjJHtiZ1szXX1gLCBgIyR7YmdbMF19YCwgYCMke2JnWzFdfWBdLFxuICAgIFsnQ3VzdG9tX0xpZ2h0JywgJyNlZWVlZWMnLCBgIyR7YmdbM119YCwgYCMke2JnWzJdfWAsIGAjJHtiZ1swXX1gLCBgIyR7YmdbMV19YF0sXG4gIF07XG59XG5jb25zdCB0aGVtZXMgPSBsb2FkVGhlbWVzKCk7XG5jb25zdCB0aGVtZXNTZWxlY3RvciA9IFIubWFwKFxuICB0aGVtZSA9PiBgPG9wdGlvbiB2YWx1ZT0nJHt0aGVtZVswXX0nICR7XG4gICAgc2V0dGluZ3MuVGhlbWUgPT09IHRoZW1lWzBdID8gJ3NlbGVjdGVkJyA6ICcnXG4gIH0+JHt0aGVtZVswXS5yZXBsYWNlKCdfJywgJyAnKX08L29wdGlvbj5gLCB0aGVtZXMpO1xuY29uc3QgdGhlbWVzQ1NTID0gUi5tYXAodGhlbWUgPT4gYWRkVGhlbWUodGhlbWUpLCB0aGVtZXMpLmpvaW4oJycpO1xuXG5leHBvcnQge1xuICB0aGVtZXNDU1MsXG4gIHRoZW1lc1NlbGVjdG9yLFxuICBhZGRDdXN0b21UaGVtZSxcbn07XG4iLCJpbXBvcnQge1xuICBzZXR0aW5ncyxcbiAgaWNvbixcbn0gZnJvbSAnLi9zZXR0aW5ncyc7XG5pbXBvcnQge1xuICB0aGVtZXNDU1MsXG4gIHRoZW1lc1NlbGVjdG9yLFxufSBmcm9tICcuL3RoZW1lcyc7XG5cbmNvbnN0IHBhaW5lbCA9IGBcbjxkaXYgaWQ9J0ltYWdlT3B0aW9ucyc+XG4gIDxkaXYgaWQ9J21lbnUnPlxuICAgIDxzcGFuIGNsYXNzPSdtZW51T3V0ZXJBcnJvdyc+PHNwYW4gY2xhc3M9J21lbnVJbm5lckFycm93Jz48L3NwYW4+PC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz0ncGFpbmVsJz5cbiAgICA8aW1nIGlkPSdlbmxhcmdlJyBhbHQ9J0VubGFyZ2UnIHNyYz0nJHtpY29uLmVubGFnZX0nIGNsYXNzPSdjb250cm9sQnV0dG9uJyAvPlxuICAgIDxpbWcgaWQ9J3Jlc3RvcmUnIGFsdD0nUmVzdG9yZScgc3JjPScke2ljb24ucmVzdG9yZX0nIGNsYXNzPSdjb250cm9sQnV0dG9uJyAvPlxuICAgIDxpbWcgaWQ9J3JlZHVjZScgYWx0PSdSZWR1Y2UnIHNyYz0nJHtpY29uLnJlZHVjZX0nIGNsYXNzPSdjb250cm9sQnV0dG9uJyAvPlxuICAgIDxpbWcgaWQ9J2ZpdHdpZHRoJyBhbHQ9J0ZpdCBXaWR0aCcgc3JjPScke2ljb24uZml0d2lkdGh9JyBjbGFzcz0nY29udHJvbEJ1dHRvbicgLz5cbiAgICA8aW1nIGlkPSdzZXR0aW5ncycgYWx0PSdzZXR0aW5ncycgc3JjPScke2ljb24uc2V0dGluZ3N9JyBjbGFzcz0nY29udHJvbEJ1dHRvbicgLz5cbiAgPC9kaXY+XG4gIDxkaXYgaWQ9J1pvb20nIGNsYXNzPSdjb250cm9sTGFibGUnPlpvb206IDxiPiR7c2V0dGluZ3MuWm9vbX08L2I+ICU8L2Rpdj5cbjwvZGl2PmA7XG5jb25zdCBzaG9ydGN1dHMgPSBgXG48ZGl2IGlkPSdWaWV3ZXJTaG9ydGN1dHMnIGNsYXNzPSdwYWluZWwnIHN0eWxlPSdkaXNwbGF5OiBub25lOyc+XG4gIDxzcGFuIGNsYXNzPSdrZXknPis8L3NwYW4+IG9yIDxzcGFuIGNsYXNzPSdrZXknPj08L3NwYW4+IDogR2xvYmFsIFpvb20gaW4gcGFnZXMgKGVubGFyZ2UpPGJyLz5cbiAgPHNwYW4gY2xhc3M9J2tleSc+LTwvc3Bhbj4gOiBHbG9iYWwgWm9vbSBvdXQgcGFnZXMgKHJlZHVjZSk8YnIvPlxuICA8c3BhbiBjbGFzcz0na2V5Jz4qPC9zcGFuPiBvciA8c3BhbiBjbGFzcz0na2V5Jz44PC9zcGFuPiA6IEdsb2JhbCBSZXN0b3JlIHBhZ2VzIHRvIG9yaWdpbmFsPGJyLz5cbiAgPHNwYW4gY2xhc3M9J2tleSc+NTwvc3Bhbj4gOiBHbG9iYWwgRml0IHdpbmRvdyB3aWR0aDxici8+XG4gIDxzcGFuIGNsYXNzPSdrZXknPkFycm93IFJpZ2h0PC9zcGFuPiBvciA8c3BhbiBjbGFzcz0na2V5Jz4uPC9zcGFuPiA6IE5leHQgQ2hhcHRlcjxici8+XG4gIDxzcGFuIGNsYXNzPSdrZXknPkFycm93IExlZnQ8L3NwYW4+IG9yIDxzcGFuIGNsYXNzPSdrZXknPiw8L3NwYW4+IDogUHJldmlvdXMgQ2hhcHRlcjxici8+XG48L2Rpdj5gO1xuY29uc3QgY29udHJvbHMgPSBgXG48ZGl2IGlkPSdWaWV3ZXJDb250cm9scycgY2xhc3M9J3BhaW5lbCcgc3R5bGU9J2Rpc3BsYXk6IG5vbmU7Jz5cbiAgPHNwYW4gY2xhc3M9J2NvbnRyb2xMYWJsZSc+VGhlbWU6PC9zcGFuPlxuICA8aW5wdXQgaWQ9J0N1c3RvbVRoZW1lSHVlJyBjbGFzcz0nanNjb2xvcicgdmFsdWU9JyR7c2V0dGluZ3MuQ3VzdG9tVGhlbWV9JyAkeyhzZXR0aW5ncy5UaGVtZSAhPT0gJ0N1c3RvbV9EYXJrJyAmJiBzZXR0aW5ncy5UaGVtZSAhPT0gJ0N1c3RvbV9MaWdodCcpID8gJ3N0eWxlPVwiZGlzcGxheTogbm9uZTtcIicgOiAnJ30nPlxuICA8c2VsZWN0IGlkPSdUaGVtZVNlbGVjdG9yJz5cbiAgICAke3RoZW1lc1NlbGVjdG9yfVxuICA8L3NlbGVjdD5cbiAgPHNwYW4gY2xhc3M9J2NvbnRyb2xMYWJsZSc+UGFnZXMvU2Vjb25kOjwvc3Bhbj5cbiAgPHNlbGVjdCBpZD0nUGFnZXNQZXJTZWNvbmQnPlxuICAgIDxvcHRpb24gdmFsdWU9JzMwMDAnICR7c2V0dGluZ3MuVGltZXIgPT09IDMwMDAgPyAnc2VsZWN0ZWQnIDogJyd9PjAuMzwvb3B0aW9uPlxuICAgIDxvcHRpb24gdmFsdWU9JzIwMDAnICR7c2V0dGluZ3MuVGltZXIgPT09IDIwMDAgPyAnc2VsZWN0ZWQnIDogJyd9PjAuNTwvb3B0aW9uPlxuICAgIDxvcHRpb24gdmFsdWU9JzEwMDAnICR7c2V0dGluZ3MuVGltZXIgPT09IDEwMDAgPyAnc2VsZWN0ZWQnIDogJyd9PjAxPC9vcHRpb24+XG4gICAgPG9wdGlvbiB2YWx1ZT0nNTAwJyAke3NldHRpbmdzLlRpbWVyID09PSA1MDAgPyAnc2VsZWN0ZWQnIDogJyd9PjAyPC9vcHRpb24+XG4gICAgPG9wdGlvbiB2YWx1ZT0nMjUwJyAke3NldHRpbmdzLlRpbWVyID09PSAyNTAgPyAnc2VsZWN0ZWQnIDogJyd9PjA0PC9vcHRpb24+XG4gICAgPG9wdGlvbiB2YWx1ZT0nMTI1JyAke3NldHRpbmdzLlRpbWVyID09PSAxMjUgPyAnc2VsZWN0ZWQnIDogJyd9PjA4PC9vcHRpb24+XG4gICAgPG9wdGlvbiB2YWx1ZT0nMTAwJyAke3NldHRpbmdzLlRpbWVyID09PSAxMDAgPyAnc2VsZWN0ZWQnIDogJyd9PjEwPC9vcHRpb24+XG4gIDwvc2VsZWN0PlxuICA8c3BhbiBjbGFzcz0nY29udHJvbExhYmxlJz5EZWZhdWx0IFpvb206PC9zcGFuPlxuICA8c2VsZWN0IGlkPSdEZWZhdWx0Wm9vbSc+XG4gICAgPG9wdGlvbiB2YWx1ZT0nNTAnICR7c2V0dGluZ3MuWm9vbSA9PT0gNTAgPyAnc2VsZWN0ZWQnIDogJyd9PjUwJTwvb3B0aW9uPlxuICAgIDxvcHRpb24gdmFsdWU9Jzc1JyAke3NldHRpbmdzLlpvb20gPT09IDUwID8gJ3NlbGVjdGVkJyA6ICcnfT43NSU8L29wdGlvbj5cbiAgICA8b3B0aW9uIHZhbHVlPScxMDAnICR7c2V0dGluZ3MuWm9vbSA9PT0gNTAgPyAnc2VsZWN0ZWQnIDogJyd9PjEwMCU8L29wdGlvbj5cbiAgICA8b3B0aW9uIHZhbHVlPScxMjUnICR7c2V0dGluZ3MuWm9vbSA9PT0gNTAgPyAnc2VsZWN0ZWQnIDogJyd9PjEyNSU8L29wdGlvbj5cbiAgICA8b3B0aW9uIHZhbHVlPScxNTAnICR7c2V0dGluZ3MuWm9vbSA9PT0gNTAgPyAnc2VsZWN0ZWQnIDogJyd9PjE1MCU8L29wdGlvbj5cbiAgICA8b3B0aW9uIHZhbHVlPScxNzUnICR7c2V0dGluZ3MuWm9vbSA9PT0gNTAgPyAnc2VsZWN0ZWQnIDogJyd9PjE3NSU8L29wdGlvbj5cbiAgICA8b3B0aW9uIHZhbHVlPScyMDAnICR7c2V0dGluZ3MuWm9vbSA9PT0gNTAgPyAnc2VsZWN0ZWQnIDogJyd9PjIwMCU8L29wdGlvbj5cbiAgICA8b3B0aW9uIHZhbHVlPScxMDAwJyAke3NldHRpbmdzLlpvb20gPT09IDUwID8gJ3NlbGVjdGVkJyA6ICcnfT5GaXQgV2lkdGg8L29wdGlvbj5cbiAgPC9zZWxlY3Q+XG4gIDxzcGFuIGNsYXNzPSdjb250cm9sTGFibGUnPkZpdCBXaWR0aCBpZiBPdmVyc2l6ZWQ6PC9zcGFuPlxuICA8aW5wdXQgdHlwZT0nY2hlY2tib3gnIHZhbD0ndHJ1ZScgbmFtZT0nZml0SWZPdmVyc2l6ZWQnIGlkPSdmaXRJZk92ZXJzaXplZCcgJHsoc2V0dGluZ3MuRml0V2lkdGhJZk92ZXJzaXplZCA/ICdjaGVja2VkJyA6ICcnKX0+XG4gIDxzcGFuIGNsYXNzPSdjb250cm9sTGFibGUnPlNob3cgVGh1bWJuYWlsczo8L3NwYW4+XG4gIDxpbnB1dCB0eXBlPSdjaGVja2JveCcgdmFsPSd0cnVlJyBuYW1lPSdzaG93VGh1bWJuYWlscycgaWQ9J3Nob3dUaHVtYm5haWxzJyAkeyhzZXR0aW5ncy5TaG93VGh1bWJuYWlscyA/ICdjaGVja2VkJyA6ICcnKX0+XG4gIDxzcGFuIGNsYXNzPSdjb250cm9sTGFibGUnPkRvd25sb2FkIEltYWdlcyBhcyBaaXAgQXV0b21hdGljYWxseTo8L3NwYW4+XG4gIDxpbnB1dCB0eXBlPSdjaGVja2JveCcgdmFsPSdmYWxzZScgbmFtZT0nZG93bmxvYWRaaXAnIGlkPSdkb3dubG9hZFppcCcgJHsoc2V0dGluZ3MuRG93bmxvYWRaaXAgPyAnY2hlY2tlZCcgOiAnJyl9PlxuICA8c3BhbiBjbGFzcz0nY29udHJvbExhYmxlJz5BbHdheXMgTG9hZCBTY3JpcHQ6PC9zcGFuPlxuICA8aW5wdXQgdHlwZT0nY2hlY2tib3gnIHZhbD0ndHJ1ZScgbmFtZT0nYWx3YXlzTG9hZCcgaWQ9J2Fsd2F5c0xvYWQnICR7KHNldHRpbmdzLmFsd2F5c0xvYWQgPyAnY2hlY2tlZCcgOiAnJyl9PlxuPC9kaXY+YDtcbmNvbnN0IGNoYXB0ZXJDb250cm9sID0gUi5jdXJyeSgoaWQsIHRhcmdldCwgbWFuZ2EpID0+IGBcbjxkaXYgaWQ9JyR7aWR9JyBjbGFzcz0nQ2hhcHRlckNvbnRyb2wnPlxuICAgIDxhIGlkPSdib3R0b20nIGhyZWY9JyMke3RhcmdldH0nIHN0eWxlPSdkaXNwbGF5OiBub25lOyc+Qm90dG9tPC9hPlxuICAgIDxhIGhyZWY9JyMnIGNsYXNzPSdkb3dubG9hZCc+RG93bmxvYWQ8L2E+XG4gICAgPGEgY2xhc3M9J3ByZXYnIGlkPSdwcmV2JyBocmVmPScke21hbmdhLnByZXYgfHwgJyd9JyBvbmNsaWNrPSdsb2NhdGlvbj1cIiR7bWFuZ2EucHJldiB8fCAnJ31cIjtsb2NhdGlvbi5yZWxvYWQoKTsnPlByZXZpb3VzPC9hPlxuICAgIDxhIGNsYXNzPSduZXh0JyBpZD0nbmV4dCcgaHJlZj0nJHttYW5nYS5uZXh0IHx8ICcnfScgb25jbGljaz0nbG9jYXRpb249XCIke21hbmdhLm5leHQgfHwgJyd9XCI7bG9jYXRpb24ucmVsb2FkKCk7Jz5OZXh0PC9hPlxuPC9kaXY+YCk7XG5jb25zdCBjaGFwdGVyQ29udHJvbFRvcCA9IGNoYXB0ZXJDb250cm9sKCdDaGFwdGVyQ29udHJvbFRvcCcsICdDaGFwdGVyQ29udHJvbEJvdHRvbScpO1xuY29uc3QgY2hhcHRlckNvbnRyb2xCb3R0b20gPSBjaGFwdGVyQ29udHJvbCgnQ2hhcHRlckNvbnRyb2xCb3R0b20nLCAnTWFuZ2FPbmxpbmVWaWV3ZXInKTtcbmNvbnN0IHRpdGxlID0gbWFuZ2EgPT4gYDxkaXYgY2xhc3M9J1ZpZXdlclRpdGxlJz48YnIvPjxhIGlkPSdzZXJpZXMnIGhyZWY9JyR7bWFuZ2Euc2VyaWVzfSc+JHttYW5nYS50aXRsZX08YnIvPihSZXR1cm4gdG8gQ2hhcHRlciBMaXN0KTwvYT48L2Rpdj5gO1xuLy8gQWRkIFBhZ2VzIFBsYWNlIGhvbGRlcnNcbmNvbnN0IGxpc3RQYWdlcyA9IFIudGltZXMoaW5kZXggPT4gYFxuPGRpdiBpZD0nUGFnZSR7aW5kZXggKyAxfScgY2xhc3M9J01hbmdhUGFnZSc+XG4gIDxkaXYgY2xhc3M9J1BhZ2VGdW5jdGlvbnMnPlxuICAgIDxhIGNsYXNzPSdab29tSW4gY29udHJvbEJ1dHRvbic+PC9hPlxuICAgIDxhIGNsYXNzPSdab29tUmVzdG9yZSBjb250cm9sQnV0dG9uJz48L2E+XG4gICAgPGEgY2xhc3M9J1pvb21PdXQgY29udHJvbEJ1dHRvbic+PC9hPlxuICAgIDxhIGNsYXNzPSdab29tV2lkdGggY29udHJvbEJ1dHRvbic+PC9hPlxuICAgIDxhIGNsYXNzPSdIaWRlIGNvbnRyb2xCdXR0b24nPjwvYT5cbiAgICA8YSBjbGFzcz0nUmVsb2FkIGNvbnRyb2xCdXR0b24nPjwvYT5cbiAgICA8c3Bhbj4ke2luZGV4ICsgMX08L3NwYW4+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPSdQYWdlQ29udGVudCcgc3R5bGU9J2Rpc3BsYXk6IG5vbmU7Jz5cbiAgICA8aW1nIGlkPSdQYWdlSW1nJHtpbmRleCArIDF9JyBhbHQ9J1BhZ2VJbWcke2luZGV4ICsgMX0nIC8+XG4gIDwvZGl2PlxuPC9kaXY+YCk7XG5jb25zdCBsaXN0T3B0aW9ucyA9IFIudGltZXMoaW5kZXggPT4gYDxvcHRpb24gdmFsdWU9JyR7aW5kZXggKyAxfSc+JHtpbmRleCArIDF9PC9vcHRpb24+YCk7XG5jb25zdCBsaXN0VGh1bWJuYWlscyA9IFIudGltZXMoaW5kZXggPT4gYDxkaXYgaWQ9J1RodW1iTmFpbCR7aW5kZXggKyAxfScgY2xhc3M9J1RodW1iTmFpbCc+PGltZyBpZD0nVGh1bWJOYWlsSW1nJHtpbmRleCArIDF9JyBhbHQ9J1RodW1iTmFpbEltZyR7aW5kZXggKyAxfScgc3JjPScnLz48c3Bhbj4ke2luZGV4ICsgMX08L3NwYW4+PC9kaXY+YCk7XG5jb25zdCBib2R5ID0gbWFuZ2EgPT4gYFxuPGRpdiBpZD0nTWFuZ2FPbmxpbmVWaWV3ZXInIGNsYXNzPScke3NldHRpbmdzLlRoZW1lfScgc3R5bGU9J21pbi1oZWlnaHQ6IDEwODBweDsnPlxuICAke3RpdGxlKG1hbmdhKX1cbiAgJHtjaGFwdGVyQ29udHJvbFRvcChtYW5nYSl9XG4gIDxkaXYgaWQ9J0NoYXB0ZXInIGFsaWduPSdjZW50ZXInIGNsYXNzPSckeyhzZXR0aW5ncy5GaXRXaWR0aElmT3ZlcnNpemVkID09PSB0cnVlID8gJ2ZpdFdpZHRoSWZPdmVyc2l6ZWQnIDogJycpfSc+XG4gICAgJHtsaXN0UGFnZXMobWFuZ2EucXVhbnQpLmpvaW4oJycpfSAgICBcbiAgPC9kaXY+XG4gICR7dGl0bGUobWFuZ2EpfVxuICAke2NoYXB0ZXJDb250cm9sQm90dG9tKG1hbmdhKX1cbiAgJHtwYWluZWx9ICAgIFxuICAke2NvbnRyb2xzfVxuICAke3Nob3J0Y3V0c30gICAgXG4gIDxkaXYgaWQ9J0NvdW50ZXJzJyBjbGFzcz0nY29udHJvbExhYmxlJz5cbiAgICA8aT4wPC9pPiBvZiA8Yj4ke21hbmdhLnF1YW50fTwvYj4gUGFnZXMgTG9hZGVkIFxuICAgIDxzcGFuIGNsYXNzPSdjb250cm9sTGFibGUnPkdvIHRvIFBhZ2U6PC9zcGFuPlxuICAgIDxzZWxlY3QgaWQ9J2dvdG9QYWdlJz48b3B0aW9uIHNlbGVjdGVkPiM8L29wdGlvbj4ke2xpc3RPcHRpb25zKG1hbmdhLnF1YW50KS5qb2luKCcnKX08L3NlbGVjdD5cbiAgPC9kaXY+XG4gIDxkaXYgaWQ9J05hdmlnYXRpb24nIGFsaWduPSdjZW50ZXInIGNsYXNzPSdwYWluZWwgJHtzZXR0aW5ncy5TaG93VGh1bWJuYWlscyA/ICcnIDogJ2Rpc2FibGVkJ30nPlxuICAgIDxkaXYgaWQ9J05hdmlnYXRpb25Db3VudGVycycgY2xhc3M9J2NvbnRyb2xMYWJsZSc+XG4gICAgICA8aW1nIGFsdD0nbWVudScgc3JjPScke2ljb24ubWVudX0nIGNsYXNzPSduYXYnIC8+PGk+MDwvaT4gb2YgPGI+JHttYW5nYS5xdWFudH08L2I+IFBhZ2VzIExvYWRlZFxuICAgIDwvZGl2PlxuICAgICR7bGlzdFRodW1ibmFpbHMobWFuZ2EucXVhbnQpLmpvaW4oJycpfVxuICA8L2Rpdj5cbiAgPGEgaHJlZj0nIycgaWQ9J2Jsb2InIHN0eWxlPSdkaXNwbGF5OiBub25lOyc+RG93bmxvYWQ8L2E+XG48L2Rpdj5gO1xuXG4vLyBJbmplY3QgQ1NTIGZvciB0aGlzIHNjcmlwdFxuY29uc3QgcmVhZGVyQ1NTID0gYFxuPHN0eWxlIHR5cGU9J3RleHQvY3NzJz5odG1se2ZvbnQtc2l6ZToxMDAlfVxuYm9keXttYXJnaW46MDtmb250LWZhbWlseTonSGVsdmV0aWNhIE5ldWUnLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjIwcHg7Y29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7cGFkZGluZzowfVxuYXtjb2xvcjojMDhDO3RleHQtZGVjb3JhdGlvbjpub25lfVxuaW1ne2hlaWdodDphdXRvO21heC13aWR0aDoxMDAlO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtib3JkZXI6MCBub25lfVxuLypidXR0b24saW5wdXQsc2VsZWN0LHRleHRhcmVhe21hcmdpbjowO2ZvbnQtc2l6ZToxMDAlO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX1cbmJ1dHRvbixpbnB1dHtsaW5lLWhlaWdodDpub3JtYWx9XG5sYWJlbCxpbnB1dCxidXR0b24sc2VsZWN0LHRleHRhcmVhe2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0Om5vcm1hbDtsaW5lLWhlaWdodDoyMHB4fVxuaW5wdXQsYnV0dG9uLHNlbGVjdCx0ZXh0YXJlYXtmb250LWZhbWlseTonSGVsdmV0aWNhIE5ldWUnLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmfVxuc2VsZWN0LHRleHRhcmVhLGlucHV0W3R5cGU9J3RleHQnXSxpbnB1dFt0eXBlPSdwYXNzd29yZCddLGlucHV0W3R5cGU9J2RhdGV0aW1lJ10saW5wdXRbdHlwZT0nZGF0ZXRpbWUtbG9jYWwnXSxpbnB1dFt0eXBlPSdkYXRlJ10saW5wdXRbdHlwZT0nbW9udGgnXSxpbnB1dFt0eXBlPSd0aW1lJ10saW5wdXRbdHlwZT0nd2VlayddLGlucHV0W3R5cGU9J251bWJlciddLGlucHV0W3R5cGU9J2VtYWlsJ10saW5wdXRbdHlwZT0ndXJsJ10saW5wdXRbdHlwZT0nc2VhcmNoJ10saW5wdXRbdHlwZT0ndGVsJ10saW5wdXRbdHlwZT0nY29sb3InXSwudW5lZGl0YWJsZS1pbnB1dHtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MjBweDtwYWRkaW5nOjRweCA2cHg7bWFyZ2luLWJvdHRvbToxMHB4O2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjIwcHg7Y29sb3I6IzU1NTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ym9yZGVyLXJhZGl1czo0cHggNHB4IDRweCA0cHh9XG5pbnB1dDpub3QoW3R5cGU9J2NoZWNrYm94J10pLHRleHRhcmVhLC51bmVkaXRhYmxlLWlucHV0e3dpZHRoOjIwNnB4fVxudGV4dGFyZWEsaW5wdXRbdHlwZT0ndGV4dCddLGlucHV0W3R5cGU9J3Bhc3N3b3JkJ10saW5wdXRbdHlwZT0nZGF0ZXRpbWUnXSxpbnB1dFt0eXBlPSdkYXRldGltZS1sb2NhbCddLGlucHV0W3R5cGU9J2RhdGUnXSxpbnB1dFt0eXBlPSdtb250aCddLGlucHV0W3R5cGU9J3RpbWUnXSxpbnB1dFt0eXBlPSd3ZWVrJ10saW5wdXRbdHlwZT0nbnVtYmVyJ10saW5wdXRbdHlwZT0nZW1haWwnXSxpbnB1dFt0eXBlPSd1cmwnXSxpbnB1dFt0eXBlPSdzZWFyY2gnXSxpbnB1dFt0eXBlPSd0ZWwnXSxpbnB1dFt0eXBlPSdjb2xvciddLC51bmVkaXRhYmxlLWlucHV0e2JhY2tncm91bmQtY29sb3I6I0ZGRjtib3JkZXI6MXB4IHNvbGlkICNDQ0M7Ym94LXNoYWRvdzowIDFweCAxcHggcmdiYSgwLDAsMCwwLjA3NSkgaW5zZXQ7dHJhbnNpdGlvbjpib3JkZXIgLjJzIGxpbmVhciAwLGJveC1zaGFkb3cgLjJzIGxpbmVhciAwfVxuaW5wdXQsdGV4dGFyZWEsLnVuZWRpdGFibGUtaW5wdXR7bWFyZ2luLWxlZnQ6MH0qL1xuI25wcm9ncmVzcyAuYmFye2JhY2tncm91bmQ6IzI5ZDtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMzE7dG9wOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjRweDt9XG4ua2V5e2Rpc3BsYXk6aW5saW5lO2Rpc3BsYXk6aW5saW5lLWJsb2NrO21pbi13aWR0aDoxZW07cGFkZGluZzouMmVtIC4zZW07Zm9udDo0MDAgLjg1ZW0vMSAnTHVjaWRhIEdyYW5kZScsTHVjaWRhLEFyaWFsLHNhbnMtc2VyaWY7dGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1kZWNvcmF0aW9uOm5vbmU7LW1vei1ib3JkZXItcmFkaXVzOi4zZW07LXdlYmtpdC1ib3JkZXItcmFkaXVzOi4zZW07Ym9yZGVyLXJhZGl1czouM2VtO2JvcmRlcjpub25lO2N1cnNvcjpkZWZhdWx0Oy1tb3otdXNlci1zZWxlY3Q6bm9uZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX1cbi5rZXlbdGl0bGVde2N1cnNvcjpoZWxwfVxuLmtleSwgLmRhcmsta2V5cywuZGFyay1rZXlzIC5rZXksLmtleS5kYXJre2JhY2tncm91bmQ6IzUwNTA1MDtiYWNrZ3JvdW5kOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwjM2MzYzNjLCM1MDUwNTApO2JhY2tncm91bmQ6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsbGVmdCB0b3AsbGVmdCBib3R0b20sZnJvbSgjM2MzYzNjKSx0bygjNTA1MDUwKSk7Y29sb3I6I2ZhZmFmYTt0ZXh0LXNoYWRvdzotMXB4IC0xcHggMCAjNDY0NjQ2Oy1tb3otYm94LXNoYWRvdzppbnNldCAwIDAgMXB4ICM5Njk2OTYsaW5zZXQgMCAtLjA1ZW0gLjRlbSAjNTA1MDUwLDAgLjFlbSAwICMxZTFlMWUsMCAuMWVtIC4xZW0gcmdiYSgwLDAsMCwuMyk7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMCAxcHggIzk2OTY5NixpbnNldCAwIC0uMDVlbSAuNGVtICM1MDUwNTAsMCAuMWVtIDAgIzFlMWUxZSwwIC4xZW0gLjFlbSByZ2JhKDAsMCwwLC4zKTtib3gtc2hhZG93Omluc2V0IDAgMCAxcHggIzk2OTY5NixpbnNldCAwIC0uMDVlbSAuNGVtICM1MDUwNTAsMCAuMWVtIDAgIzFlMWUxZSwwIC4xZW0gLjFlbSByZ2JhKDAsMCwwLC4zKX1cbi5saWdodC1rZXlzLC5saWdodC1rZXlzIC5rZXksLmtleS5saWdodHtiYWNrZ3JvdW5kOiNmYWZhZmE7YmFja2dyb3VuZDotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsI2QyZDJkMiwjZmZmKTtiYWNrZ3JvdW5kOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLGxlZnQgdG9wLGxlZnQgYm90dG9tLGZyb20oI2QyZDJkMiksdG8oI2ZmZikpO2NvbG9yOiMzMjMyMzI7dGV4dC1zaGFkb3c6MCAwIDJweCAjZmZmOy1tb3otYm94LXNoYWRvdzppbnNldCAwIDAgMXB4ICNmZmYsaW5zZXQgMCAwIC40ZW0gI2M4YzhjOCwwIC4xZW0gMCAjODI4MjgyLDAgLjExZW0gMCByZ2JhKDAsMCwwLC40KSwwIC4xZW0gLjExZW0gcmdiYSgwLDAsMCwuOSk7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMCAxcHggI2ZmZixpbnNldCAwIDAgLjRlbSAjYzhjOGM4LDAgLjFlbSAwICM4MjgyODIsMCAuMTFlbSAwIHJnYmEoMCwwLDAsLjQpLDAgLjFlbSAuMTFlbSByZ2JhKDAsMCwwLC45KTtib3gtc2hhZG93Omluc2V0IDAgMCAxcHggI2ZmZixpbnNldCAwIDAgLjRlbSAjYzhjOGM4LDAgLjFlbSAwICM4MjgyODIsMCAuMTFlbSAwIHJnYmEoMCwwLDAsLjQpLDAgLjFlbSAuMTFlbSByZ2JhKDAsMCwwLC45KX1cbiNNYW5nYU9ubGluZVZpZXdlcnt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3BhZGRpbmctYm90dG9tOiAxMDBweDt9XG4jTWFuZ2FPbmxpbmVWaWV3ZXIgI0NoYXB0ZXJ7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOiAyNXB4IGF1dG8gMDtkaXNwbGF5OmJsb2NrO31cbiNNYW5nYU9ubGluZVZpZXdlciAjVmlld2VyQ29udHJvbHN7cGFkZGluZzogOHB4O3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MTkwcHg7fVxuI01hbmdhT25saW5lVmlld2VyICNWaWV3ZXJTaG9ydGN1dHN7cGFkZGluZzogOHB4O3Bvc2l0aW9uOmZpeGVkO3RvcDo2NXB4O2xlZnQ6MHB4O31cbiNNYW5nYU9ubGluZVZpZXdlciBzZWxlY3R7aGVpZ2h0OjIwcHg7cGFkZGluZzowO21hcmdpbi1ib3R0b206NXB4fVxuI01hbmdhT25saW5lVmlld2VyIC5jb250cm9sQnV0dG9ue2N1cnNvcjpwb2ludGVyO2JvcmRlcjowIG5vbmU7fVxuI01hbmdhT25saW5lVmlld2VyICNJbWFnZU9wdGlvbnMge2xlZnQ6IDBweDtwb3NpdGlvbjogYWJzb2x1dGU7dG9wOiAwcHg7d2lkdGg6IDIwMHB4O31cbiNNYW5nYU9ubGluZVZpZXdlciAjSW1hZ2VPcHRpb25zIC5wYWluZWwge3BhZGRpbmc6NC41cHg7cG9zaXRpb246IGluaGVyaXQ7fVxuI01hbmdhT25saW5lVmlld2VyICNJbWFnZU9wdGlvbnM6aG92ZXIge3Bvc2l0aW9uOmZpeGVkO31cbiNNYW5nYU9ubGluZVZpZXdlciAjSW1hZ2VPcHRpb25zLnNldHRpbmdzT3BlbiB7cG9zaXRpb246Zml4ZWQ7fVxuI01hbmdhT25saW5lVmlld2VyICNJbWFnZU9wdGlvbnMgI21lbnUge3Bvc2l0aW9uOmZpeGVkO3RvcDogNDVweDtoZWlnaHQ6IDY0cHg7d2lkdGg6IDIwMHB4O3RvcDogMDt9XG4jTWFuZ2FPbmxpbmVWaWV3ZXIgI0ltYWdlT3B0aW9ucyAjWm9vbSB7cG9zaXRpb246YWJzb2x1dGU7bGVmdDogMThweDtib3R0b206IC02NXB4O31cbiNNYW5nYU9ubGluZVZpZXdlciAuTWFuZ2FQYWdle3dpZHRoOjEwMCU7ZGlzcGxheTppbmxpbmUtYmxvY2s7dGV4dC1hbGlnbjpjZW50ZXI7YWxpZ246Y2VudGVyfVxuI01hbmdhT25saW5lVmlld2VyIC5QYWdlQ29udGVudHttYXJnaW46MCAwIDE1cHg7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2t9XG4jTWFuZ2FPbmxpbmVWaWV3ZXIgI2dvdG9QYWdle3dpZHRoOjM1cHg7fVxuI01hbmdhT25saW5lVmlld2VyICNUaGVtZVNlbGVjdG9ye3dpZHRoOjExMHB4O31cbiNNYW5nYU9ubGluZVZpZXdlciAjUGFnZXNQZXJTZWNvbmR7d2lkdGg6NDZweDt9XG4jTWFuZ2FPbmxpbmVWaWV3ZXIgLkNoYXB0ZXJDb250cm9sey1tb3otdXNlci1zZWxlY3Q6bm9uZTstd2Via2l0LXVzZXItc2VsZWN0OiBub25lO21hcmdpbi1yaWdodDoxMjBweDttYXJnaW4tdG9wOiAxcHg7ZmxvYXQ6IHJpZ2h0O31cbiNNYW5nYU9ubGluZVZpZXdlciAuQ2hhcHRlckNvbnRyb2wgYXtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDogODBweDtoZWlnaHQ6MjVweDt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tbGVmdDogM3B4O21hcmdpbi1ib3R0b206IC0xcHg7fVxuI01hbmdhT25saW5lVmlld2VyIC5DaGFwdGVyQ29udHJvbCBhW2hyZWY9JyMnXSwjTWFuZ2FPbmxpbmVWaWV3ZXIgLkNoYXB0ZXJDb250cm9sIGFbaHJlZj0nJ117dmlzaWJpbGl0eTpoaWRkZW59XG4jTWFuZ2FPbmxpbmVWaWV3ZXIgLlZpZXdlclRpdGxle2Rpc3BsYXk6IGJsb2NrO3RleHQtYWxpZ246IGNlbnRlcjtoZWlnaHQ6MzVweDt9XG4jTWFuZ2FPbmxpbmVWaWV3ZXIgI0NvdW50ZXJzIHtwb3NpdGlvbjogYWJzb2x1dGU7cmlnaHQ6IDEwcHg7dG9wOiAxMHB4O31cbiNNYW5nYU9ubGluZVZpZXdlciAuUGFnZUZ1bmN0aW9uc3stbW96LXVzZXItc2VsZWN0Om5vbmU7LXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtmb250LWZhbWlseTptb25vc3BhY2U7Zm9udC1zaXplOjEwcHQ7cGFkZGluZy1yaWdodDoxMjBweDt0ZXh0LWFsaWduOnJpZ2h0fVxuI01hbmdhT25saW5lVmlld2VyIC5QYWdlRnVuY3Rpb25zPnNwYW57bWluLXdpZHRoOjIwcHg7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZzoycHggMTBweH1cbiNNYW5nYU9ubGluZVZpZXdlciAuUGFnZUZ1bmN0aW9ucyA+IGEge2hlaWdodDogMTZweDt3aWR0aDogMTZweDsgcGFkZGluZzogMTBweDt9XG4jTWFuZ2FPbmxpbmVWaWV3ZXIgLlBhZ2VGdW5jdGlvbnMgYXtvcGFjaXR5OjAuMn1cbiNNYW5nYU9ubGluZVZpZXdlciAuUGFnZUZ1bmN0aW9uczpob3ZlciBhe29wYWNpdHk6MX1cbiNNYW5nYU9ubGluZVZpZXdlciAjTmF2aWdhdGlvbkNvdW50ZXJzIHttYXJnaW4tdG9wOiA1cHg7d2lkdGg6IDEwMCU7fVxuI01hbmdhT25saW5lVmlld2VyICNOYXZpZ2F0aW9uIHtib3R0b206IC0xNzBweDtoZWlnaHQ6IDE4MHB4O292ZXJmbG93OiBhdXRvO292ZXJmbG93LXg6IGF1dG87b3ZlcmZsb3cteTogaGlkZGVuO3BhZGRpbmctYm90dG9tOiAyMHB4O3Bvc2l0aW9uOiBmaXhlZDt3aGl0ZS1zcGFjZTogbm93cmFwO3dpZHRoOiAxMDAlO31cbiNNYW5nYU9ubGluZVZpZXdlciAjTmF2aWdhdGlvbjpob3ZlciB7Ym90dG9tOiAwO31cbiNNYW5nYU9ubGluZVZpZXdlciAjTmF2aWdhdGlvbi5kaXNhYmxlZCB7ZGlzcGxheTogbm9uZTt9XG4jTWFuZ2FPbmxpbmVWaWV3ZXIgI05hdmlnYXRpb24udmlzaWJsZSB7Ym90dG9tOiAwO31cbiNNYW5nYU9ubGluZVZpZXdlciAjTmF2aWdhdGlvbiAuVGh1bWJOYWlsIHtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7aGVpZ2h0OiAxNTBweDttYXJnaW46IDAgNXB4O3Bvc2l0aW9uOiByZWxhdGl2ZTt9XG4jTWFuZ2FPbmxpbmVWaWV3ZXIgI05hdmlnYXRpb24gLlRodW1iTmFpbCBzcGFuIHtkaXNwbGF5OiBibG9jaztvcGFjaXR5OiAwLjg7cG9zaXRpb246IHJlbGF0aXZlO3RvcDogLTMwcHg7d2lkdGg6IDEwMCU7fVxuI01hbmdhT25saW5lVmlld2VyICNOYXZpZ2F0aW9uIC5UaHVtYk5haWwgaW1nIHthbGlnbi1jb250ZW50OiBjZW50ZXI7Y3Vyc29yOiBwb2ludGVyO2Rpc3BsYXk6IGlubGluZS1ibG9jazttYXJnaW4tYm90dG9tOiAtMTBweDttYXJnaW4tdG9wOiAxMHB4O21heC1oZWlnaHQ6IDE1MHB4O21pbi1oZWlnaHQ6IDE1MHB4O21pbi13aWR0aDogMTAwcHg7fVxuI01hbmdhT25saW5lVmlld2VyICNOYXZpZ2F0aW9uIC5uYXYge2JlaGF2aW9yOnVybCgtbXMtdHJhbnNmb3JtLmh0Yyk7LW1vei10cmFuc2Zvcm06cm90YXRlKC05MGRlZyk7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC05MGRlZyk7LW8tdHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcpO31cbiNNYW5nYU9ubGluZVZpZXdlciAjSW1hZ2VPcHRpb25zIC5tZW51T3V0ZXJBcnJvdyAge3dpZHRoOiAwO2hlaWdodDogMDtib3JkZXItdG9wOiAxMHB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206IDEwcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWxlZnQ6MTBweCBzb2xpZCBibHVlO2Rpc3BsYXk6IGlubGluZS1ibG9jaztwb3NpdGlvbjogYWJzb2x1dGU7Ym90dG9tOiAwO31cbiNNYW5nYU9ubGluZVZpZXdlciAjSW1hZ2VPcHRpb25zIC5tZW51SW5uZXJBcnJvdyB7d2lkdGg6IDA7aGVpZ2h0OiAwO2JvcmRlci10b3A6IDVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOiA1cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWxlZnQ6NXB4IHNvbGlkIHdoaXRlO2xlZnQ6IC0xMHB4O3Bvc2l0aW9uOiBhYnNvbHV0ZTt0b3A6IC01cHg7ZGlzcGxheTogaW5saW5lLWJsb2NrO31cbiNNYW5nYU9ubGluZVZpZXdlciAuZml0V2lkdGhJZk92ZXJzaXplZCAuUGFnZUNvbnRlbnQgaW1nIHsgbWF4LXdpZHRoOiAkeyQod2luZG93KS53aWR0aCgpfXB4O31cbiNNYW5nYU9ubGluZVZpZXdlciAuUGFnZUZ1bmN0aW9ucyAuUmVsb2FkIHtiYWNrZ3JvdW5kOiB1cmwoJyR7aWNvbi5yZWxvYWR9Jykgbm8tcmVwZWF0IHNjcm9sbCBjZW50ZXIgY2VudGVyIHRyYW5zcGFyZW50O31cbiNNYW5nYU9ubGluZVZpZXdlciAuUGFnZUZ1bmN0aW9ucyAuSGlkZSB7YmFja2dyb3VuZDogdXJsKCcke2ljb24uaGlkZX0nKSBuby1yZXBlYXQgc2Nyb2xsIGNlbnRlciBjZW50ZXIgdHJhbnNwYXJlbnQ7fVxuI01hbmdhT25saW5lVmlld2VyIC5QYWdlRnVuY3Rpb25zIC5ab29tSW4ge2JhY2tncm91bmQ6IHVybCgnJHtpY29uLnpvb21pbn0nKSBuby1yZXBlYXQgc2Nyb2xsIGNlbnRlciBjZW50ZXIgdHJhbnNwYXJlbnQ7fVxuI01hbmdhT25saW5lVmlld2VyIC5QYWdlRnVuY3Rpb25zIC5ab29tT3V0IHtiYWNrZ3JvdW5kOiB1cmwoJyR7aWNvbi56b29tb3V0fScpIG5vLXJlcGVhdCBzY3JvbGwgY2VudGVyIGNlbnRlciB0cmFuc3BhcmVudDt9XG4jTWFuZ2FPbmxpbmVWaWV3ZXIgLlBhZ2VGdW5jdGlvbnMgLlpvb21SZXN0b3JlIHtiYWNrZ3JvdW5kOiB1cmwoJyR7aWNvbi56b29tcmVzdG9yZX0nKSBuby1yZXBlYXQgc2Nyb2xsIGNlbnRlciBjZW50ZXIgdHJhbnNwYXJlbnQ7fVxuI01hbmdhT25saW5lVmlld2VyIC5QYWdlRnVuY3Rpb25zIC5ab29tV2lkdGgge2JhY2tncm91bmQ6IHVybCgnJHtpY29uLnpvb213aWR0aH0nKSBuby1yZXBlYXQgc2Nyb2xsIGNlbnRlciBjZW50ZXIgdHJhbnNwYXJlbnQ7fVxuPC9zdHlsZT5gO1xuY29uc3QgZXh0ZXJuYWxTY3JpcHRzID0gW1xuICAnPHNjcmlwdCBzcmM9XCJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9qcXVlcnkvMy4yLjEvanF1ZXJ5Lm1pbi5qc1wiIGludGVncml0eT1cInNoYTI1Ni1od2c0Z3N4Z0ZaaE9zRUVhbWRPWUdCZjEzRnlRdWlUd2xBUWd4VlNOZ3Q0PVwiIGNyb3Nzb3JpZ2luPVwiYW5vbnltb3VzXCI+PC9zY3JpcHQ+JyxcbiAgJzxzY3JpcHQgc3JjPVwiaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvanN6aXAvMy4xLjMvanN6aXAubWluLmpzXCIgaW50ZWdyaXR5PVwic2hhMjU2LVJiUC9yYng0WGVZSkg2ZVlVbmlSNjNKazVORVY0OEdqZXN0ZzQ5Y05TV1k9XCIgY3Jvc3NvcmlnaW49XCJhbm9ueW1vdXNcIj48L3NjcmlwdD4nLFxuICAnPHNjcmlwdCBzcmM9XCJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9ucHJvZ3Jlc3MvMC4yLjAvbnByb2dyZXNzLm1pbi5qc1wiIGludGVncml0eT1cInNoYTI1Ni1YV3pTVUorRklRMzhkcUMwNi80OHNOUndVMVFoMy9hZmptSjA4MFNuZUE4PVwiIGNyb3Nzb3JpZ2luPVwiYW5vbnltb3VzXCI+PC9zY3JpcHQ+JyxcbiAgJzxzY3JpcHQgc3JjPVwiaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvc3dlZXRhbGVydC8xLjEuMy9zd2VldGFsZXJ0Lm1pbi5qc1wiIGludGVncml0eT1cInNoYTI1Ni1lZ1Z2eGtxNlVCQ1F5S3pSQnJESHU4bWlaNUZPYVZyalNxUXFhdUtnbEtjPVwiIGNyb3Nzb3JpZ2luPVwiYW5vbnltb3VzXCI+PC9zY3JpcHQ+JyxcbiAgJzxzY3JpcHQgc3JjPVwiaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvY29sb3ItanMvMS4wLjEvY29sb3IubWluLmpzXCIgaW50ZWdyaXR5PVwic2hhMjU2LXFBanV6R1o2NXJIK084aVJVbVJkUkNnazMzSG1NMEdicTE1Q3dVc3hXM2s9XCIgY3Jvc3NvcmlnaW49XCJhbm9ueW1vdXNcIj48L3NjcmlwdD4nLFxuICAnPHNjcmlwdCBzcmM9XCJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9jb2xvci1zY2hlbWUvMS4wLjAvY29sb3Itc2NoZW1lLm1pbi5qc1wiIGludGVncml0eT1cInNoYTI1Ni1Eb25VVSs3bkxCcW95MHBkZnp1VWJyKzViZGhjTWNuS2RGMk1oZmtqdkdzPVwiIGNyb3Nzb3JpZ2luPVwiYW5vbnltb3VzXCI+PC9zY3JpcHQ+JyxcbiAgJzxzY3JpcHQgc3JjPVwiaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvcmFtZGEvMC4yNC4xL3JhbWRhLm1pbi5qc1wiIGludGVncml0eT1cInNoYTI1Ni15RjFKNmh6TklXTjM5OEsxZCtuMVhYR0MzSkVjaEg1NUcwNWR4TStyc0ZrPVwiIGNyb3Nzb3JpZ2luPVwiYW5vbnltb3VzXCI+PC9zY3JpcHQ+JyxcbiAgJzxzY3JpcHQgc3JjPVwiaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvYmFjb24uanMvMC43Ljk0L0JhY29uLm1pbi5qc1wiIGludGVncml0eT1cInNoYTI1Ni0vaVJ2VzFLNDVDOTZBeWljRnFaMUF3N3BHRDIxSXNnZUo2SC93WUhJaHZzPVwiIGNyb3Nzb3JpZ2luPVwiYW5vbnltb3VzXCI+PC9zY3JpcHQ+JyxcblxuXTtcbmNvbnN0IGV4dGVybmFsQ1NTID0gW1xuICAnPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIGhyZWY9XCJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9ub3JtYWxpemUvNy4wLjAvbm9ybWFsaXplLm1pbi5jc3NcIiBpbnRlZ3JpdHk9XCJzaGEyNTYtSHhhS3o1RS9lQmJ2aEdNTndoV1JQckFSOWkvbEcxSmVUNG1ENmhDUTdzND1cIiBjcm9zc29yaWdpbj1cImFub255bW91c1wiIC8+JyxcbiAgJzxsaW5rIHJlbD1cInN0eWxlc2hlZXRcIiBocmVmPVwiaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbnByb2dyZXNzLzAuMi4wL25wcm9ncmVzcy5taW4uY3NzXCIgaW50ZWdyaXR5PVwic2hhMjU2LXBNaGNWNi9UQkR0cUg5RTlQV0tnUytQMzJQVmd1TEc4SWlwa1B5cU10Zlk9XCIgY3Jvc3NvcmlnaW49XCJhbm9ueW1vdXNcIiAvPicsXG4gICc8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgaHJlZj1cImh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3N3ZWV0YWxlcnQvMS4xLjMvc3dlZXRhbGVydC5taW4uY3NzXCIgaW50ZWdyaXR5PVwic2hhMjU2LWlYVVlma2JWbDVpdGQ0YkFrRkg1bWpNRU41bGQ5dDNPSHZYWDNJVThVeFU9XCIgY3Jvc3NvcmlnaW49XCJhbm9ueW1vdXNcIiAvPicsXG5dO1xuZnVuY3Rpb24gcmVhZGVyKG1hbmdhKSB7XG4gIHJldHVybiBgXG48aGVhZD5cbiAgPHRpdGxlPiR7bWFuZ2EudGl0bGV9PC90aXRsZT5cbiAgPG1ldGEgY2hhcnNldD1cIlVURi04XCI+XG4gICR7ZXh0ZXJuYWxTY3JpcHRzLmpvaW4oJ1xcbicpfVxuICAke2V4dGVybmFsQ1NTLmpvaW4oJ1xcbicpfVxuICAke3JlYWRlckNTU31cbiAgJHt0aGVtZXNDU1N9XG48L2hlYWQ+XG48Ym9keSBjbGFzcz0nJHtzZXR0aW5ncy5UaGVtZX0nPlxuICAke2JvZHkobWFuZ2EpfVxuPC9ib2R5PmA7XG59XG5leHBvcnQgZGVmYXVsdCByZWFkZXI7XG4iLCIvLyBDaGVjayBpZiB0aGUgdmFsdWUgaXMgZW1wdHlcclxuY29uc3QgaXNFbXB0eSA9IFIuZWl0aGVyKFIuZWl0aGVyKFIuaXNOaWwsIFIuaXNFbXB0eSksXHJcbiAgUi5laXRoZXIoeCA9PiBSLmxlbmd0aCh4KSA9PT0gMCwgeCA9PiB4ID09PSAwKSk7XHJcblxyXG5jb25zdCBtYXBJbmRleGVkID0gUi5hZGRJbmRleChSLm1hcCk7XHJcblxyXG5leHBvcnQge1xyXG4gIGlzRW1wdHksXHJcbiAgbWFwSW5kZXhlZCxcclxufTtcclxuIiwiaW1wb3J0IHtcbiAgbG9nU2NyaXB0LFxuICAvLyBsb2dTY3JpcHRDb21wb3NhYmxlLFxufSBmcm9tICcuL2Jyb3dzZXInO1xuaW1wb3J0IHtcbiAgc2V0dGluZ3MsXG59IGZyb20gJy4vc2V0dGluZ3MnO1xuaW1wb3J0IHtcbiAgbWFwSW5kZXhlZCxcbn0gZnJvbSAnLi91dGlscyc7XG5cbi8vIEFkZHMgYW4gaW1hZ2UgdG8gdGhlIHBsYWNlLWhvbGRlciBkaXZcbmZ1bmN0aW9uIGFkZEltZyhpbmRleCwgc3JjKSB7XG4gIGxvZ1NjcmlwdCgnSW1hZ2U6JywgaW5kZXgsICdTb3VyY2U6Jywgc3JjKTtcbiAgJChgI1BhZ2VJbWcke2luZGV4fWApLmF0dHIoJ3NyYycsIHNyYykucGFyZW50KCkuc2xpZGVUb2dnbGUoKTtcbiAgJChgI1RodW1iTmFpbEltZyR7aW5kZXh9YCkuYXR0cignc3JjJywgc3JjKTtcbiAgcmV0dXJuIGluZGV4O1xufVxuXG5mdW5jdGlvbiBnZXRQYWdlKHVybCwgd2FpdCA9IHNldHRpbmdzLlRpbWVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgbG9nU2NyaXB0KGBHZXR0aW5nIHBhZ2U6ICR7dXJsfWApO1xuICAgICAgJC5hamF4KHtcbiAgICAgICAgdHlwZTogJ0dFVCcsXG4gICAgICAgIHVybCxcbiAgICAgICAgZGF0YVR5cGU6ICdodG1sJyxcbiAgICAgICAgYXN5bmM6IHRydWUsXG4gICAgICAgIHN1Y2Nlc3M6IGh0bWwgPT4gcmVzb2x2ZShodG1sKSxcbiAgICAgIH0pO1xuICAgIH0sIHdhaXQpO1xuICB9KTtcbn1cbmNvbnN0IGxvYWRNYW5nYVBhZ2VzID0gbWFuZ2EgPT5cbiAgbWFwSW5kZXhlZCgodXJsLCBpbmRleCkgPT5cbiAgICBnZXRQYWdlKHVybCwgKG1hbmdhLnRpbWVyIHx8IHNldHRpbmdzLlRpbWVyKSAqIGluZGV4KVxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4gYWRkSW1nKGluZGV4ICsgMSwgJChyZXNwb25zZSkuZmluZChtYW5nYS5pbWcpLmF0dHIoJ3NyYycpKSksXG4gIG1hbmdhLmxpc3RQYWdlcyk7XG5cbmZ1bmN0aW9uIGdldEltYWdlcyhzcmMsIHdhaXQgPSBzZXR0aW5ncy5UaW1lcikge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHJlc29sdmUoc3JjKTtcbiAgICB9LCB3YWl0KTtcbiAgfSk7XG59XG5cbmNvbnN0IGxvYWRNYW5nYUltYWdlcyA9IG1hbmdhID0+XG4gIG1hcEluZGV4ZWQoKHNyYywgaW5kZXgpID0+XG4gICAgZ2V0SW1hZ2VzKHNyYywgKG1hbmdhLnRpbWVyIHx8IHNldHRpbmdzLlRpbWVyKSAqIGluZGV4KVxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT5cbiAgICAgICAgYWRkSW1nKGluZGV4ICsgMSwgcmVzcG9uc2UpKSxcbiAgbWFuZ2EubGlzdEltYWdlcyk7XG5cbmZ1bmN0aW9uIGxvYWRNYW5nYShtYW5nYSkge1xuICBsb2dTY3JpcHQoJ0xvYWRpbmcgSW1hZ2VzJyk7XG4gIGxvZ1NjcmlwdChgSW50ZXJ2YWxzOiAke21hbmdhLnRpbWVyIHx8IHNldHRpbmdzLlRpbWVyIHx8ICdEZWZhdWx0KDEwMDApJ31gKTtcbiAgaWYgKG1hbmdhLmxpc3RQYWdlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbG9nU2NyaXB0KCdNZXRob2Q6IFBhZ2VzOicsIG1hbmdhLmxpc3RQYWdlcyk7XG4gICAgbG9hZE1hbmdhUGFnZXMobWFuZ2EpO1xuICB9IGVsc2UgaWYgKG1hbmdhLmxpc3RJbWFnZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIGxvZ1NjcmlwdCgnTWV0aG9kOiBJbWFnZXM6JywgbWFuZ2EubGlzdEltYWdlcyk7XG4gICAgbG9hZE1hbmdhSW1hZ2VzKG1hbmdhKTtcbiAgfSBlbHNlIHtcbiAgICBsb2dTY3JpcHQoJ01ldGhvZDogQnJ1dGUgRm9yY2UnKTtcbiAgICBtYW5nYS5icnV0ZUZvcmNlKHtcbiAgICAgIGFkZEltZyxcbiAgICAgIGxvYWRNYW5nYUltYWdlcyxcbiAgICAgIGxvYWRNYW5nYVBhZ2VzLFxuICAgICAgZ2V0UGFnZSxcbiAgICAgIGdldEltYWdlcyxcbiAgICB9KTtcbiAgfVxufVxuXG4vLyBGb3JjZSByZWxvYWQgdGhlIGltYWdlXG5mdW5jdGlvbiByZWxvYWRJbWFnZShpbWcpIHtcbiAgY29uc3Qgc3JjID0gaW1nLmF0dHIoJ3NyYycpO1xuICBpbWcucmVtb3ZlQXR0cignc3JjJyk7XG4gIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIGltZy5hdHRyKCdzcmMnLCBzcmMpO1xuICB9LCA1MDApO1xufVxuXG4vLyBBZnRlciBwYWdlcyBsb2FkIGFwcGx5IGRlZmF1bHQgWm9vbVxuZnVuY3Rpb24gYXBwbHlab29tKHBhZ2UsIG5ld1pvb20pIHtcbiAgY29uc3Qgem9vbSA9IG5ld1pvb20gfHwgc2V0dGluZ3MuWm9vbTtcbiAgY29uc3QgcGFnZXMgPSBwYWdlIHx8ICcuUGFnZUNvbnRlbnQgaW1nJztcbiAgJChwYWdlcykuZWFjaCgoaW5kZXgsIHZhbHVlKSA9PlxuICAgICQodmFsdWUpXG4gICAgICAud2lkdGgoem9vbSA9PT0gMTAwMCA/ICQoJ2h0bWwnKS53aWR0aCgpIDogJCh2YWx1ZSkucHJvcCgnbmF0dXJhbFdpZHRoJykgKiAoem9vbSAvIDEwMCkpKTtcbn1cblxuLy8gQ2hlY2tzIGlmIGFsbCBpbWFnZXMgbG9hZGVkIGNvcnJlY3RseVxuZnVuY3Rpb24gY2hlY2tJbWFnZXNMb2FkZWQoKSB7XG4gIGNvbnN0IGltYWdlcyA9ICQoJy5QYWdlQ29udGVudCBpbWcnKS5nZXQoKTtcbiAgY29uc3QgdG90YWwgPSBpbWFnZXMubGVuZ3RoO1xuICBjb25zdCBtaXNzaW5nID0gaW1hZ2VzLmZpbHRlcihpdGVtID0+ICQoaXRlbSkucHJvcCgnbmF0dXJhbFdpZHRoJykgPT09IDApO1xuICBjb25zdCBsb2FkZWQgPSBpbWFnZXMuZmlsdGVyKGl0ZW0gPT4gJChpdGVtKS5wcm9wKCduYXR1cmFsV2lkdGgnKSAhPT0gMCk7XG4gIGxvYWRlZC5maWx0ZXIoaXRlbSA9PiAkKGl0ZW0pLmF0dHIoJ3dpZHRoJykgPT09IHVuZGVmaW5lZClcbiAgICAuZm9yRWFjaChpdGVtID0+IGFwcGx5Wm9vbSgkKGl0ZW0pKSk7XG4gIG1pc3NpbmcuZm9yRWFjaChpdGVtID0+IHJlbG9hZEltYWdlKCQoaXRlbSkpKTtcbiAgTlByb2dyZXNzLmNvbmZpZ3VyZSh7XG4gICAgc2hvd1NwaW5uZXI6IGZhbHNlLFxuICB9KS5zZXQobG9hZGVkLmxlbmd0aCAvIHRvdGFsKTtcbiAgJCgnI0NvdW50ZXJzIGksICNOYXZpZ2F0aW9uQ291bnRlcnMgaScpLmh0bWwobG9hZGVkLmxlbmd0aCk7XG4gIGxvZ1NjcmlwdChgUHJvZ3Jlc3M6ICR7KGxvYWRlZC5sZW5ndGggLyB0b3RhbCkgKiAxMDB9JWApO1xuICBpZiAobG9hZGVkLmxlbmd0aCA8IHRvdGFsKSB7XG4gICAgc2V0VGltZW91dChjaGVja0ltYWdlc0xvYWRlZCwgNTAwMCk7XG4gIH0gZWxzZSB7XG4gICAgbG9nU2NyaXB0KCdJbWFnZXMgTG9hZGluZyBDb21wbGV0ZScpO1xuICAgICQoJy5kb3dubG9hZCcpLmF0dHIoJ2hyZWYnLCAnI2Rvd25sb2FkJyk7XG4gICAgbG9nU2NyaXB0KCdEb3dubG9hZCBBdmFsaWFibGUnKTtcbiAgICBpZiAoc2V0dGluZ3MuRG93bmxvYWRaaXApIHtcbiAgICAgICQoJyNibG9iJykuY2xpY2soKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IHtcbiAgbG9hZE1hbmdhLFxuICBjaGVja0ltYWdlc0xvYWRlZCxcbiAgYXBwbHlab29tLFxuICByZWxvYWRJbWFnZSxcbiAgZ2V0UGFnZSxcbn07XG4iLCJpbXBvcnQgeyBsb2dTY3JpcHQgfSBmcm9tICcuL2Jyb3dzZXInO1xuXG5jb25zdCBjYWNoZSA9IHtcbiAgemlwOiBuZXcgSlNaaXAoKSxcbiAgZG93bmxvYWRGaWxlczogMCxcbiAgRGF0YToge30sXG59O1xuLy8gQ29udmVydHMgSW1hZ2VzIGludG8gQmFzZTY0XG5mdW5jdGlvbiBjdXN0b21CYXNlNjRFbmNvZGUoaW5wdXRTdHIpIHtcbiAgLy8gU291cmNlOiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzg3Nzg4NjMvZG93bmxvYWRpbmctYW4taW1hZ2UtdXNpbmcteG1saHR0cHJlcXVlc3QtaW4tYS11c2Vyc2NyaXB0Lzg3ODEyNjIjODc4MTI2MlxuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1iaXR3aXNlICovXG4gIGNvbnN0IGJiTGVuID0gMztcbiAgY29uc3QgZW5DaGFyTGVuID0gNDtcbiAgY29uc3QgaW5wTGVuID0gaW5wdXRTdHIubGVuZ3RoO1xuICBsZXQgaW54ID0gMDtcbiAgbGV0IGpueDtcbiAgY29uc3Qga2V5U3RyID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89JztcbiAgbGV0IG91dHB1dCA9ICcnO1xuICBsZXQgcGFkZGluZ0J5dGVzID0gMDtcbiAgY29uc3QgYnl0ZWJ1ZmZlciA9IG5ldyBBcnJheShiYkxlbik7XG4gIGNvbnN0IGVuY29kZWRDaGFySW5kZXhlcyA9IG5ldyBBcnJheShlbkNoYXJMZW4pO1xuICB3aGlsZSAoaW54IDwgaW5wTGVuKSB7XG4gICAgZm9yIChqbnggPSAwOyBqbnggPCBiYkxlbjsgam54ICs9IDEpIHtcbiAgICAgIC8qIC0tLSBUaHJvdyBhd2F5IGhpZ2gtb3JkZXIgYnl0ZSwgYXMgZG9jdW1lbnRlZCBhdDpcbiAgICAgICBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9Fbi9Vc2luZ19YTUxIdHRwUmVxdWVzdCNIYW5kbGluZ19iaW5hcnlfZGF0YVxuICAgICAgICovXG4gICAgICBpZiAoaW54IDwgaW5wTGVuKSB7XG4gICAgICAgIGJ5dGVidWZmZXJbam54XSA9IGlucHV0U3RyLmNoYXJDb2RlQXQoaW54KSAmIDB4ZmY7XG4gICAgICAgIGlueCArPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnl0ZWJ1ZmZlcltqbnhdID0gMDtcbiAgICAgIH1cbiAgICB9XG4gICAgLyogLS0tIEdldCBlYWNoIGVuY29kZWQgY2hhcmFjdGVyLCA2IGJpdHMgYXQgYSB0aW1lLlxuICAgICBpbmRleCAwOiBmaXJzdCAgNiBiaXRzXG4gICAgIGluZGV4IDE6IHNlY29uZCA2IGJpdHNcbiAgICAgKDIgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBmcm9tIGlucHV0U3RyIGJ5dGUgMVxuICAgICArIDQgbW9zdCBzaWduaWZpY2FudCBiaXRzIGZyb20gYnl0ZSAyKVxuICAgICBpbmRleCAyOiB0aGlyZCAgNiBiaXRzXG4gICAgICg0IGxlYXN0IHNpZ25pZmljYW50IGJpdHMgZnJvbSBpbnB1dFN0ciBieXRlIDJcbiAgICAgKyAyIG1vc3Qgc2lnbmlmaWNhbnQgYml0cyBmcm9tIGJ5dGUgMylcbiAgICAgaW5kZXggMzogZm9ydGggIDYgYml0cyAoNiBsZWFzdCBzaWduaWZpY2FudCBiaXRzIGZyb20gaW5wdXRTdHIgYnl0ZSAzKVxuICAgICAqL1xuICAgIGVuY29kZWRDaGFySW5kZXhlc1swXSA9IGJ5dGVidWZmZXJbMF0gPj4gMjtcbiAgICBlbmNvZGVkQ2hhckluZGV4ZXNbMV0gPSAoKGJ5dGVidWZmZXJbMF0gJiAweDMpIDw8IDQpIHwgKGJ5dGVidWZmZXJbMV0gPj4gNCk7XG4gICAgZW5jb2RlZENoYXJJbmRleGVzWzJdID0gKChieXRlYnVmZmVyWzFdICYgMHgwZikgPDwgMikgfCAoYnl0ZWJ1ZmZlclsyXSA+PiA2KTtcbiAgICBlbmNvZGVkQ2hhckluZGV4ZXNbM10gPSBieXRlYnVmZmVyWzJdICYgMHgzZjtcbiAgICAvLyAtLS0gRGV0ZXJtaW5lIHdoZXRoZXIgcGFkZGluZyBoYXBwZW5lZCwgYW5kIGFkanVzdCBhY2NvcmRpbmdseS5cbiAgICBwYWRkaW5nQnl0ZXMgPSBpbnggLSAoaW5wTGVuIC0gMSk7XG4gICAgc3dpdGNoIChwYWRkaW5nQnl0ZXMpIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgLy8gU2V0IGxhc3QgY2hhcmFjdGVyIHRvIHBhZGRpbmcgY2hhclxuICAgICAgICBlbmNvZGVkQ2hhckluZGV4ZXNbM10gPSA2NDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIC8vIFNldCBsYXN0IDIgY2hhcmFjdGVycyB0byBwYWRkaW5nIGNoYXJcbiAgICAgICAgZW5jb2RlZENoYXJJbmRleGVzWzNdID0gNjQ7XG4gICAgICAgIGVuY29kZWRDaGFySW5kZXhlc1syXSA9IDY0O1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrOyAvLyBObyBwYWRkaW5nIC0gcHJvY2VlZFxuICAgIH1cbiAgICAvKiAtLS0gTm93IGdyYWIgZWFjaCBhcHByb3ByaWF0ZSBjaGFyYWN0ZXIgb3V0IG9mIG91ciBrZXlzdHJpbmcsXG4gICAgIGJhc2VkIG9uIG91ciBpbmRleCBhcnJheSBhbmQgYXBwZW5kIGl0IHRvIHRoZSBvdXRwdXQgc3RyaW5nLlxuICAgICAqL1xuICAgIGZvciAoam54ID0gMDsgam54IDwgZW5DaGFyTGVuOyBqbnggKz0gMSkge1xuICAgICAgb3V0cHV0ICs9IGtleVN0ci5jaGFyQXQoZW5jb2RlZENoYXJJbmRleGVzW2pueF0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0cHV0O1xuICAvKiBlc2xpbnQtZW5hYmxlIG5vLWJpdHdpc2UgKi9cbn1cbi8vIEdlbmVyYXRlIFppcCBGaWxlIGZvciBkb3dubG9hZFxuZnVuY3Rpb24gZ2VuZXJhdGVaaXAoKSB7XG4gIGlmIChjYWNoZS5kb3dubG9hZEZpbGVzID09PSAwKSB7XG4gICAgJCgnLk1hbmdhUGFnZSBpbWcnKS5nZXQoKS5mb3JFYWNoKCh2YWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGltZyA9ICQodmFsdWUpO1xuICAgICAgY29uc3QgZmlsZW5hbWUgPSBgUGFnZSAke1N0cmluZyhgMDAwJHtpbmRleCArIDF9YCkuc2xpY2UoLTMpfS5wbmdgO1xuICAgICAgY29uc3Qgc3JjID0gaW1nLmF0dHIoJ3NyYycpO1xuICAgICAgaWYgKHNyYy5pbmRleE9mKCdiYXNlNjQnKSA+IC0xKSB7XG4gICAgICAgIGxldCBiYXNlNjQgPSBzcmMucmVwbGFjZSgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LCcsICcnKTtcbiAgICAgICAgY29uc3QgaSA9IGJhc2U2NC5pbmRleE9mKCcsJyk7XG4gICAgICAgIGlmIChpICE9PSAtMSkge1xuICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoaSArIDEsIGJhc2U2NC5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIGNhY2hlLnppcC5maWxlKGZpbGVuYW1lLCBiYXNlNjQsIHtcbiAgICAgICAgICBiYXNlNjQ6IHRydWUsXG4gICAgICAgICAgY3JlYXRlRm9sZGVyczogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGxvZ1NjcmlwdChgJHtmaWxlbmFtZX0gQWRkZWQgdG8gWmlwIGZyb20gQmFzZTY0IEltYWdlYCk7XG4gICAgICAgIGNhY2hlLmRvd25sb2FkRmlsZXMgKz0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgR01feG1saHR0cFJlcXVlc3Qoe1xuICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgIHVybDogc3JjLFxuICAgICAgICAgICAgb3ZlcnJpZGVNaW1lVHlwZTogJ3RleHQvcGxhaW47IGNoYXJzZXQ9eC11c2VyLWRlZmluZWQnLFxuICAgICAgICAgICAgb25sb2FkKGUpIHtcbiAgICAgICAgICAgICAgY29uc3QgYmFzZTY0ID0gY3VzdG9tQmFzZTY0RW5jb2RlKGUucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgY2FjaGUuemlwLmZpbGUoZmlsZW5hbWUsIGJhc2U2NCwge1xuICAgICAgICAgICAgICAgIGJhc2U2NDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjcmVhdGVGb2xkZXJzOiB0cnVlLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgbG9nU2NyaXB0KGAke2ZpbGVuYW1lfSBBZGRlZCB0byBaaXAgYXMgQmFzZTY0IEltYWdlYCk7XG4gICAgICAgICAgICAgIGNhY2hlLmRvd25sb2FkRmlsZXMgKz0gMTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBsb2dTY3JpcHQoZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBjb25zdCB0b3RhbCA9IHBhcnNlSW50KCQoJyNDb3VudGVycycpLmZpbmQoJ2InKS50ZXh0KCksIDEwKTtcbiAgaWYgKGNhY2hlLmRvd25sb2FkRmlsZXMgPCB0b3RhbCkge1xuICAgIGxvZ1NjcmlwdChgV2FpdGluZyBmb3IgRmlsZXMgdG8gRG93bmxvYWQgJHtjYWNoZS5kb3dubG9hZEZpbGVzfSBvZiAke3RvdGFsfWApO1xuICAgIHNldFRpbWVvdXQoZ2VuZXJhdGVaaXAsIDIwMDApO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGJsb2JMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jsb2InKTtcbiAgICB0cnkge1xuICAgICAgYmxvYkxpbmsuZG93bmxvYWQgPSBgJHskKCd0aXRsZScpLnRleHQoKS50cmltKCl9LnppcGA7XG4gICAgICBjYWNoZS56aXAuZ2VuZXJhdGVBc3luYyh7XG4gICAgICAgIHR5cGU6ICdibG9iJyxcbiAgICAgIH0pLnRoZW4oKGNvbnRlbnQpID0+IHtcbiAgICAgICAgYmxvYkxpbmsuaHJlZiA9IFcuVVJMLmNyZWF0ZU9iamVjdFVSTChjb250ZW50KTtcbiAgICAgICAgbG9nU2NyaXB0KCdEb3dubG9hZCBSZWFkeScpO1xuICAgICAgICAkKCcjYmxvYicpWzBdLmNsaWNrKCk7XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dTY3JpcHQoZSk7XG4gICAgICBibG9iTGluay5pbm5lckhUTUwgKz0gJyAobm90IHN1cHBvcnRlZCBvbiB0aGlzIGJyb3dzZXIpJztcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZ2VuZXJhdGVaaXA7XG4iLCJpbXBvcnQge1xuICBhcHBseVpvb20sXG4gIHJlbG9hZEltYWdlLFxufSBmcm9tICcuL3BhZ2UnO1xuaW1wb3J0IHtcbiAgYWRkQ3VzdG9tVGhlbWUsXG59IGZyb20gJy4vdGhlbWVzJztcbmltcG9ydCBnZW5lcmF0ZVppcCBmcm9tICcuL2Rvd25sb2FkJztcbmltcG9ydCB7XG4gIGdldFZhbHVlR00sXG4gIGxvZ1NjcmlwdCxcbiAgc2V0VmFsdWVHTSxcbn0gZnJvbSAnLi9icm93c2VyJztcbmltcG9ydCB7XG4gIHNldHRpbmdzLFxufSBmcm9tICcuL3NldHRpbmdzJztcblxuLy8gQ2xlYW4ga2V5IHByZXNzIGNvbmZpZ3VyYXRpb25zIGFuZCBzZXQgc29tZSB3aGVuIHNwZWNpZmllZFxuZnVuY3Rpb24gc2V0S2V5RG93bkV2ZW50cygpIHtcbiAgdHJ5IHtcbiAgICAkKGRvY3VtZW50KS51bmJpbmQoJ2tleXVwIGtleWRvd24ga2V5cHJlc3Mgb25sb2FkJyk7XG4gICAgJChXKS51bmJpbmQoJ2tleXVwIGtleWRvd24ga2V5cHJlc3Mgb25sb2FkJyk7XG4gICAgZG9jdW1lbnQub25rZXlkb3duID0gbnVsbDtcbiAgICBkb2N1bWVudC5vbmtleXByZXNzID0gbnVsbDtcbiAgICBXLm9ua2V5ZG93biA9IG51bGw7XG4gICAgVy5vbmtleXByZXNzID0gbnVsbDtcbiAgICBXLm9ubG9hZCA9IG51bGw7XG4gICAgZG9jdW1lbnQuYm9keS5vbmxvYWQgPSBudWxsO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nU2NyaXB0KGBLZXliaW5kcyBlcnJvcjogJHtlfWApO1xuICB9XG5cbiAgZnVuY3Rpb24gcHJvY2Vzc0tleShlKSB7XG4gICAgY29uc3QgYSA9IGUua2V5Q29kZSB8fCBlLndoaWNoO1xuICAgIGlmICgkLmluQXJyYXkoYSwgW1xuICAgICAgMzksIDQ2LCAxOTAsIDM3LCA0NCwgMTg4LCA0MywgMTA3LCA2MSxcbiAgICAgIDQ1LCAxMDksIDQyLCAxMDYsIDU2LCAxMDQsIDUzLCAxMDEsXG4gICAgXSkgIT09IC0xKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgIHN3aXRjaCAoYSkge1xuICAgICAgICBjYXNlIDM5OiAvLyBkb3duOnJpZ2h0XG4gICAgICAgIGNhc2UgNDY6IC8vIHByZXNzOnJpZ2h0IC8gZG93bjouXG4gICAgICAgIGNhc2UgMTkwOiAvLyBwcmVzczouXG4gICAgICAgICAgJCgnLkNoYXB0ZXJDb250cm9sOmZpcnN0IC5uZXh0JylbMF0uY2xpY2soKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzNzogLy8gZG93bjpsZWZ0XG4gICAgICAgIGNhc2UgNDQ6IC8vIHByZXNzOmxlZnQgLyBkb3duOixcbiAgICAgICAgY2FzZSAxODg6IC8vIHByZXNzOixcbiAgICAgICAgICAkKCcuQ2hhcHRlckNvbnRyb2w6Zmlyc3QgLnByZXYnKVswXS5jbGljaygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDQzOiAvLyArXG4gICAgICAgIGNhc2UgMTA3OiAvLyBudW1wYWQrXG4gICAgICAgIGNhc2UgNjE6IC8vID1cbiAgICAgICAgICAkKCcjZW5sYXJnZScpLmNsaWNrKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDU6IC8vIC1cbiAgICAgICAgY2FzZSAxMDk6IC8vIG51bXBhZC1cbiAgICAgICAgICAkKCcjcmVkdWNlJykuY2xpY2soKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0MjogLy8gNVxuICAgICAgICBjYXNlIDEwNjogLy8gbnVtcGFkNVxuICAgICAgICBjYXNlIDU2OiAvLyA4XG4gICAgICAgIGNhc2UgMTA0OiAvLyBudW1wYWQ4XG4gICAgICAgICAgJCgnI3Jlc3RvcmUnKS5jbGljaygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDUzOiAvLyAqXG4gICAgICAgIGNhc2UgMTAxOiAvLyBudW1wYWQqXG4gICAgICAgICAgJCgnI2ZpdHdpZHRoJykuY2xpY2soKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAobmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvbW96aWxsYS9pKSkge1xuICAgICQoZG9jdW1lbnQpLmtleXByZXNzKHByb2Nlc3NLZXkpO1xuICB9IGVsc2Uge1xuICAgICQoZG9jdW1lbnQpLmtleWRvd24ocHJvY2Vzc0tleSk7XG4gIH1cbn1cbi8vIENvbnRyb2xzIGZvciB0aGUgZXh0cmEgZmVhdHVyZXMgYWRkZWQgdG8gdGhlIHNpdGVzXG5mdW5jdGlvbiBjb250cm9scygpIHtcbiAgLy8gU2l6ZSBDb250cm9sc1xuICAkKCcjZW5sYXJnZScpLmNsaWNrKCgpID0+IHtcbiAgICBzZXR0aW5ncy5ab29tICs9IDI1O1xuICAgICQoJyNab29tIGInKS5odG1sKHNldHRpbmdzLlpvb20pO1xuICAgIGFwcGx5Wm9vbSgpO1xuICB9KTtcbiAgJCgnI3JlZHVjZScpLmNsaWNrKCgpID0+IHtcbiAgICBzZXR0aW5ncy5ab29tIC09IDI1O1xuICAgICQoJyNab29tIGInKS5odG1sKHNldHRpbmdzLlpvb20pO1xuICAgIGFwcGx5Wm9vbSgpO1xuICB9KTtcbiAgJCgnI3Jlc3RvcmUnKS5jbGljaygoKSA9PiB7XG4gICAgc2V0dGluZ3MuWm9vbSA9IDEwMDtcbiAgICAkKCcjWm9vbSBiJykuaHRtbChzZXR0aW5ncy5ab29tKTtcbiAgICAkKCcuUGFnZUNvbnRlbnQgaW1nJykucmVtb3ZlQXR0cignd2lkdGgnKTtcbiAgfSk7XG4gICQoJyNmaXR3aWR0aCcpLmNsaWNrKCgpID0+IHtcbiAgICBzZXR0aW5ncy5ab29tID0gMTAwMDtcbiAgICAkKCcjWm9vbSBiJykuaHRtbChzZXR0aW5ncy5ab29tKTtcbiAgICBhcHBseVpvb20oKTtcbiAgfSk7XG4gICQoJyNmaXRJZk92ZXJzaXplZCcpLmNoYW5nZSgoZXZlbnQpID0+IHtcbiAgICAkKCcjQ2hhcHRlcicpLnRvZ2dsZUNsYXNzKCdmaXRXaWR0aElmT3ZlcnNpemVkJyk7XG4gICAgaWYgKCQoZXZlbnQudGFyZ2V0KS5pcygnOmNoZWNrZWQnKSkge1xuICAgICAgc2V0VmFsdWVHTSgnTWFuZ2FGaXRXaWR0aElmT3ZlcnNpemVkJywgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFZhbHVlR00oJ01hbmdhRml0V2lkdGhJZk92ZXJzaXplZCcsIGZhbHNlKTtcbiAgICB9XG4gICAgbG9nU2NyaXB0KGBmaXRJZk92ZXJzaXplZDogJHtnZXRWYWx1ZUdNKCdNYW5nYUZpdFdpZHRoSWZPdmVyc2l6ZWQnKX1gKTtcbiAgfSk7XG4gICQoJyNhbHdheXNMb2FkJykuY2hhbmdlKChldmVudCkgPT4ge1xuICAgIGlmICgkKGV2ZW50LnRhcmdldCkuaXMoJzpjaGVja2VkJykpIHtcbiAgICAgIHNldFZhbHVlR00oJ01hbmdhQWx3YXlzTG9hZCcsIHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRWYWx1ZUdNKCdNYW5nYUFsd2F5c0xvYWQnLCBmYWxzZSk7XG4gICAgfVxuICAgIGxvZ1NjcmlwdChgYWx3YXlzTG9hZDogJHtnZXRWYWx1ZUdNKCdNYW5nYUFsd2F5c0xvYWQnKX1gKTtcbiAgfSk7XG4gICQoJyNzaG93VGh1bWJuYWlscycpLmNoYW5nZSgoZXZlbnQpID0+IHtcbiAgICAkKCcjTmF2aWdhdGlvbicpLnRvZ2dsZUNsYXNzKCdkaXNhYmxlZCcpO1xuICAgIGlmICgkKGV2ZW50LnRhcmdldCkuaXMoJzpjaGVja2VkJykpIHtcbiAgICAgIHNldFZhbHVlR00oJ01hbmdhU2hvd1RodW1ibmFpbHMnLCB0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VmFsdWVHTSgnTWFuZ2FTaG93VGh1bWJuYWlscycsIGZhbHNlKTtcbiAgICB9XG4gICAgbG9nU2NyaXB0KGBzaG93VGh1bWJuYWlsczogJHtnZXRWYWx1ZUdNKCdNYW5nYVNob3dUaHVtYm5haWxzJyl9YCk7XG4gIH0pO1xuICAvLyBEb3dubG9hZFxuICAkKCcjZG93bmxvYWRaaXAnKS5jaGFuZ2UoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCQoZXZlbnQudGFyZ2V0KS5pcygnOmNoZWNrZWQnKSkge1xuICAgICAgc2V0VmFsdWVHTSgnTWFuZ2FEb3dubG9hZFppcCcsIHRydWUpO1xuICAgICAgc3dhbCh7XG4gICAgICAgIHRpdGxlOiAnQXR0ZW50aW9uJyxcbiAgICAgICAgdGV4dDogJ05leHQgdGltZSBhIGNoYXB0ZXIgZmluaXNoIGxvYWRpbmcgeW91IHdpbGwgYmUgcHJvbXRlZCB0byBzYXZlIGF1dG9tYXRpY2FsbHknLFxuICAgICAgICB0aW1lcjogMTAwMDAsXG4gICAgICAgIHR5cGU6ICdpbmZvJyxcbiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICdPSycsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VmFsdWVHTSgnTWFuZ2FEb3dubG9hZFppcCcsIGZhbHNlKTtcbiAgICB9XG4gICAgbG9nU2NyaXB0KGBkb3dubG9hZFppcDogJHtnZXRWYWx1ZUdNKCdNYW5nYURvd25sb2FkWmlwJyl9YCk7XG4gIH0pO1xuICAkKCcjYmxvYicpLm9uZSgnY2xpY2snLCBnZW5lcmF0ZVppcCk7XG4gICQoJy5kb3dubG9hZCcpLmNsaWNrKCQoJyNibG9iJylbMF0uY2xpY2spO1xuICAkKCcjUGFnZXNQZXJTZWNvbmQnKS5jaGFuZ2UoKGV2ZW50KSA9PiB7XG4gICAgc2V0VmFsdWVHTSgnTWFuZ2FUaW1lcicsICQoZXZlbnQudGFyZ2V0KS52YWwoKSk7XG4gIH0pO1xuICAkKCcjRGVmYXVsdFpvb20nKS5jaGFuZ2UoKGV2ZW50KSA9PiB7XG4gICAgc2V0dGluZ3MuWm9vbSA9ICQoZXZlbnQudGFyZ2V0KS52YWwoKTtcbiAgICAkKCcjWm9vbSBiJykuaHRtbChzZXR0aW5ncy5ab29tKTtcbiAgICBzZXRWYWx1ZUdNKCdNYW5nYVpvb20nLCBzZXR0aW5ncy5ab29tKTtcbiAgICBhcHBseVpvb20oKTtcbiAgfSk7XG4gIC8vIFRoZW1lIENvbnRyb2xcbiAgJCgnI1RoZW1lU2VsZWN0b3InKS5jaGFuZ2UoKGV2ZW50KSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gJChldmVudC50YXJnZXQpO1xuICAgICQoJyNNYW5nYU9ubGluZVZpZXdlciAsIGJvZHknKS5yZW1vdmVDbGFzcygpLmFkZENsYXNzKHRhcmdldC52YWwoKSk7XG4gICAgc2V0VmFsdWVHTSgnTWFuZ2FUaGVtZTonLCB0YXJnZXQudmFsKCkpO1xuICAgIGlmICh0YXJnZXQudmFsKCkgPT09ICdDdXN0b21fRGFyaycgfHwgdGFyZ2V0LnZhbCgpID09PSAnQ3VzdG9tX0xpZ2h0Jykge1xuICAgICAgJCgnI0N1c3RvbVRoZW1lSHVlJykuc2hvdygpO1xuICAgIH0gZWxzZSB7XG4gICAgICAkKCcjQ3VzdG9tVGhlbWVIdWUnKS5oaWRlKCk7XG4gICAgfVxuICB9KTtcbiAganNjb2xvcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnQ3VzdG9tVGhlbWVIdWUnKSk7XG4gICQoJyNDdXN0b21UaGVtZUh1ZScpLmNoYW5nZSgoZXZlbnQpID0+IHtcbiAgICBjb25zdCB0YXJnZXQgPSAkKGV2ZW50LnRhcmdldCkudmFsKCk7XG4gICAgbG9nU2NyaXB0KGBDdXN0b21UaGVtZTogIyR7dGFyZ2V0fWApO1xuICAgICQoJ3N0eWxlW3RpdGxlPVwiQ3VzdG9tX0xpZ2h0XCJdLCBzdHlsZVt0aXRsZT1cIkN1c3RvbV9EYXJrXCJdJykucmVtb3ZlKCk7XG4gICAgJCgnaGVhZCcpLmFwcGVuZChhZGRDdXN0b21UaGVtZSh0YXJnZXQpKTtcbiAgICBzZXRWYWx1ZUdNKCdNYW5nYUN1c3RvbVRoZW1lJywgdGFyZ2V0KTtcbiAgfSk7XG4gIC8vIEdvdG8gUGFnZSBhbmQgVGh1bWJOYWlsc1xuICBmdW5jdGlvbiBzY3JvbGxUb0VsZW1lbnQoZWxlKSB7XG4gICAgJChXKS5zY3JvbGxUb3AoZWxlLm9mZnNldCgpLnRvcCkuc2Nyb2xsTGVmdChlbGUub2Zmc2V0KCkubGVmdCk7XG4gIH1cblxuICAkKCcjZ290b1BhZ2UnKS5iaW5kKCdjaGFuZ2UnLCAoZXZlbnQpID0+IHtcbiAgICBzY3JvbGxUb0VsZW1lbnQoJChgI1BhZ2UkeyQoZXZlbnQudGFyZ2V0KS52YWwoKX1gKSk7XG4gIH0pO1xuICAkKCcuVGh1bWJOYWlsJykuYmluZCgnY2xpY2snLCAoZXZlbnQpID0+IHtcbiAgICBzY3JvbGxUb0VsZW1lbnQoJChgI1BhZ2UkeyQoZXZlbnQudGFyZ2V0KS5maW5kKCdzcGFuJykuaHRtbCgpfWApKTtcbiAgfSk7XG4gIC8vIFNldHRpbmdzIENvbnRyb2xcbiAgJCgnI3NldHRpbmdzJykuY2xpY2soKCkgPT4ge1xuICAgICQoJyNWaWV3ZXJDb250cm9scycpLnNsaWRlVG9nZ2xlKCk7XG4gICAgJCgnI1ZpZXdlclNob3J0Y3V0cycpLnNsaWRlVG9nZ2xlKCk7XG4gICAgJCgnI0ltYWdlT3B0aW9ucycpLnRvZ2dsZUNsYXNzKCdzZXR0aW5nc09wZW4nKTtcbiAgICAkKCcjTmF2aWdhdGlvbicpLnRvZ2dsZUNsYXNzKCd2aXNpYmxlJyk7XG4gIH0pO1xuICAvLyBJbmRpdmlkdWFsIFBhZ2UgZnVuY3Rpb25zXG4gIC8vIFJlbG9hZCBQYWdlXG4gICQoJy5SZWxvYWQnKS5jbGljaygoZXZlbnQpID0+IHtcbiAgICByZWxvYWRJbWFnZSgkKGV2ZW50LnRhcmdldCkucGFyZW50cygnLk1hbmdhUGFnZScpLmZpbmQoJy5QYWdlQ29udGVudCBpbWcnKSk7XG4gIH0pO1xuICAvLyBab29tSW5cbiAgJCgnLlpvb21JbicpLmNsaWNrKChldmVudCkgPT4ge1xuICAgIGNvbnN0IGltZyA9ICQoZXZlbnQudGFyZ2V0KS5wYXJlbnRzKCcuTWFuZ2FQYWdlJykuZmluZCgnLlBhZ2VDb250ZW50IGltZycpO1xuICAgIGNvbnN0IHJhdGlvID0gKGltZy53aWR0aCgpIC8gaW1nLnByb3AoJ25hdHVyYWxXaWR0aCcpKSAqIDEuMjUgKiAxMDA7XG4gICAgYXBwbHlab29tKGltZywgcmF0aW8pO1xuICB9KTtcbiAgLy8gWm9vbU91dFxuICAkKCcuWm9vbU91dCcpLmNsaWNrKChldmVudCkgPT4ge1xuICAgIGNvbnN0IGltZyA9ICQoZXZlbnQudGFyZ2V0KS5wYXJlbnRzKCcuTWFuZ2FQYWdlJykuZmluZCgnLlBhZ2VDb250ZW50IGltZycpO1xuICAgIGNvbnN0IHJhdGlvID0gKGltZy53aWR0aCgpIC8gaW1nLnByb3AoJ25hdHVyYWxXaWR0aCcpKSAqIDAuNzUgKiAxMDA7XG4gICAgYXBwbHlab29tKGltZywgcmF0aW8pO1xuICB9KTtcbiAgLy8gWm9vbVJlc3RvcmVcbiAgJCgnLlpvb21SZXN0b3JlJykuY2xpY2soKCkgPT4ge1xuICAgICQoJy5QYWdlQ29udGVudCBpbWcnKS5yZW1vdmVBdHRyKCd3aWR0aCcpO1xuICB9KTtcbiAgLy8gWm9vbVdpZHRoXG4gICQoJy5ab29tV2lkdGgnKS5jbGljaygoZXZlbnQpID0+IHtcbiAgICBjb25zdCBpbWcgPSAkKGV2ZW50LnRhcmdldCkucGFyZW50cygnLk1hbmdhUGFnZScpLmZpbmQoJy5QYWdlQ29udGVudCBpbWcnKTtcbiAgICBhcHBseVpvb20oaW1nLCAxMDAwKTtcbiAgfSk7XG4gIC8vIEhpZGVcbiAgJCgnLkhpZGUnKS5jbGljaygoZXZlbnQpID0+IHtcbiAgICBjb25zdCBpbWcgPSAkKGV2ZW50LnRhcmdldCkucGFyZW50cygnLk1hbmdhUGFnZScpLmZpbmQoJy5QYWdlQ29udGVudCcpO1xuICAgIGltZy5zbGlkZVRvZ2dsZSgnc2xvdycpO1xuICB9KTtcbn1cblxuZXhwb3J0IHtcbiAgY29udHJvbHMsXG4gIHNldEtleURvd25FdmVudHMsXG59O1xuIiwiaW1wb3J0IHtcbiAgZ2V0QnJvd3NlcixcbiAgZ2V0RW5naW5lLFxuICBnZXRJbmZvR00sXG4gIGxvZ1NjcmlwdCxcbiAgbG9nU2NyaXB0Qyxcbn0gZnJvbSAnLi9icm93c2VyJztcbmltcG9ydCB7XG4gIHNldHRpbmdzLFxufSBmcm9tICcuL3NldHRpbmdzJztcbmltcG9ydCByZWFkZXIgZnJvbSAnLi9yZWFkZXInO1xuaW1wb3J0IHtcbiAgbG9hZE1hbmdhLFxuICBjaGVja0ltYWdlc0xvYWRlZCxcbn0gZnJvbSAnLi9wYWdlJztcbmltcG9ydCB7XG4gIGNvbnRyb2xzLFxuICBzZXRLZXlEb3duRXZlbnRzLFxufSBmcm9tICcuL2V2ZW50cyc7XG5pbXBvcnQge1xuICBpc0VtcHR5LFxufSBmcm9tICcuL3V0aWxzJztcblxuLy8gT3JnYW5pemUgdGhlIHNpdGUgYWRkaW5nIHBsYWNlIGhvbGRlcnMgZm9yIHRoZSBtYW5nYSBwYWdlc1xuZnVuY3Rpb24gZm9ybWF0UGFnZShtYW5nYSkge1xuICBsb2dTY3JpcHQoYEZvdW5kICR7bWFuZ2EucXVhbnR9IHBhZ2VzYCk7XG4gIFcuc3RvcCgpO1xuICBpZiAobWFuZ2EucXVhbnQgPiAwKSB7XG4gICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgIGlmICghc2V0dGluZ3MuYWx3YXlzTG9hZCkge1xuICAgICAgJCgnaGVhZCcpXG4gICAgICAgIC5hcHBlbmQoXG4gICAgICAgICAgJzxzdHlsZSB0eXBlPVwidGV4dC9jc3NcIj4uc3dlZXQtYWxlcnQsLnN3ZWV0LW92ZXJsYXl7cG9zaXRpb246Zml4ZWQ7ZGlzcGxheTpub25lfWJvZHkuc3RvcC1zY3JvbGxpbmd7aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6aGlkZGVufS5zd2VldC1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6IzAwMDstbXMtZmlsdGVyOlwicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9NDApXCI7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40KTtsZWZ0OjA7cmlnaHQ6MDt0b3A6MDtib3R0b206MDt6LWluZGV4OjEwMDAwfS5zd2VldC1hbGVydHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Zm9udC1mYW1pbHk6XCJPcGVuIFNhbnNcIixcIkhlbHZldGljYSBOZXVlXCIsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7d2lkdGg6NDc4cHg7cGFkZGluZzoxN3B4O2JvcmRlci1yYWRpdXM6NXB4O3RleHQtYWxpZ246Y2VudGVyO2xlZnQ6NTAlO3RvcDo1MCU7bWFyZ2luLWxlZnQ6LTI1NnB4O21hcmdpbi10b3A6LTIwMHB4O292ZXJmbG93OmhpZGRlbjt6LWluZGV4Ojk5OTk5fUBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6NTQwcHgpey5zd2VldC1hbGVydHt3aWR0aDphdXRvO21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjA7bGVmdDoxNXB4O3JpZ2h0OjE1cHh9fS5zd2VldC1hbGVydCBoMntjb2xvcjojNTc1NzU3O2ZvbnQtc2l6ZTozMHB4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtd2VpZ2h0OjYwMDt0ZXh0LXRyYW5zZm9ybTpub25lO3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbjoyNXB4IDA7cGFkZGluZzowO2xpbmUtaGVpZ2h0OjQwcHg7ZGlzcGxheTpibG9ja30uc3dlZXQtYWxlcnQgcHtjb2xvcjojNzk3OTc5O2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OjMwMDtwb3NpdGlvbjpyZWxhdGl2ZTt0ZXh0LWFsaWduOmluaGVyaXQ7ZmxvYXQ6bm9uZTttYXJnaW46MDtwYWRkaW5nOjA7bGluZS1oZWlnaHQ6bm9ybWFsfS5zd2VldC1hbGVydCBmaWVsZHNldHtib3JkZXI6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZX0uc3dlZXQtYWxlcnQgLnNhLWVycm9yLWNvbnRhaW5lcntiYWNrZ3JvdW5kLWNvbG9yOiNmMWYxZjE7bWFyZ2luLWxlZnQ6LTE3cHg7bWFyZ2luLXJpZ2h0Oi0xN3B4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjAgMTBweDttYXgtaGVpZ2h0OjA7d2Via2l0LXRyYW5zaXRpb246cGFkZGluZyAuMTVzLG1heC1oZWlnaHQgLjE1czt0cmFuc2l0aW9uOnBhZGRpbmcgLjE1cyxtYXgtaGVpZ2h0IC4xNXN9LnN3ZWV0LWFsZXJ0IC5zYS1lcnJvci1jb250YWluZXIuc2hvd3twYWRkaW5nOjEwcHggMDttYXgtaGVpZ2h0OjEwMHB4O3dlYmtpdC10cmFuc2l0aW9uOnBhZGRpbmcgLjJzLG1heC1oZWlnaHQgLjJzO3RyYW5zaXRpb246cGFkZGluZyAuMjVzLG1heC1oZWlnaHQgLjI1c30uc3dlZXQtYWxlcnQgLnNhLWVycm9yLWNvbnRhaW5lciAuaWNvbntkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoyNHB4O2hlaWdodDoyNHB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQtY29sb3I6I2VhN2Q3ZDtjb2xvcjojZmZmO2xpbmUtaGVpZ2h0OjI0cHg7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luLXJpZ2h0OjNweH0uc3dlZXQtYWxlcnQgLnNhLWVycm9yLWNvbnRhaW5lciBwe2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5zd2VldC1hbGVydCAuc2EtaW5wdXQtZXJyb3J7cG9zaXRpb246YWJzb2x1dGU7dG9wOjI5cHg7cmlnaHQ6MjZweDt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSguNSk7dHJhbnNmb3JtOnNjYWxlKC41KTstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46NTAlIDUwJTt0cmFuc2Zvcm0tb3JpZ2luOjUwJSA1MCU7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMXM7dHJhbnNpdGlvbjphbGwgLjFzfS5zd2VldC1hbGVydCAuc2EtaW5wdXQtZXJyb3I6OmFmdGVyLC5zd2VldC1hbGVydCAuc2EtaW5wdXQtZXJyb3I6OmJlZm9yZXtjb250ZW50OlwiXCI7d2lkdGg6MjBweDtoZWlnaHQ6NnB4O2JhY2tncm91bmQtY29sb3I6I2YwNmU1Nztib3JkZXItcmFkaXVzOjNweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO21hcmdpbi10b3A6LTRweDtsZWZ0OjUwJTttYXJnaW4tbGVmdDotOXB4fS5zd2VldC1hbGVydCAuc2EtaW5wdXQtZXJyb3I6OmJlZm9yZXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyl9LnN3ZWV0LWFsZXJ0IC5zYS1pbnB1dC1lcnJvcjo6YWZ0ZXJ7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0uc3dlZXQtYWxlcnQgLnNhLWlucHV0LWVycm9yLnNob3d7b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpO3RyYW5zZm9ybTpzY2FsZSgxKX0uc3dlZXQtYWxlcnQgaW5wdXR7d2lkdGg6MTAwJTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyLXJhZGl1czozcHg7Ym9yZGVyOjFweCBzb2xpZCAjZDdkN2Q3O2hlaWdodDo0M3B4O21hcmdpbi10b3A6MTBweDttYXJnaW4tYm90dG9tOjE3cHg7Zm9udC1zaXplOjE4cHg7Ym94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDYpO3BhZGRpbmc6MCAxMnB4O2Rpc3BsYXk6bm9uZTstd2Via2l0LXRyYW5zaXRpb246YWxsIC4zczt0cmFuc2l0aW9uOmFsbCAuM3N9LnN3ZWV0LWFsZXJ0IGlucHV0OmZvY3Vze291dGxpbmU6MDtib3gtc2hhZG93OjAgMCAzcHggI2M0ZTZmNTtib3JkZXI6MXB4IHNvbGlkICNiNGRiZWR9LnN3ZWV0LWFsZXJ0IGlucHV0OmZvY3VzOjotbW96LXBsYWNlaG9sZGVye3RyYW5zaXRpb246b3BhY2l0eSAuM3MgMzBtcyBlYXNlO29wYWNpdHk6LjV9LnN3ZWV0LWFsZXJ0IGlucHV0OmZvY3VzOi1tcy1pbnB1dC1wbGFjZWhvbGRlcnt0cmFuc2l0aW9uOm9wYWNpdHkgLjNzIDMwbXMgZWFzZTtvcGFjaXR5Oi41fS5zd2VldC1hbGVydCBpbnB1dDpmb2N1czo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcnt0cmFuc2l0aW9uOm9wYWNpdHkgLjNzIDMwbXMgZWFzZTtvcGFjaXR5Oi41fS5zd2VldC1hbGVydCBpbnB1dDo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjojYmRiZGJkfS5zd2VldC1hbGVydCBpbnB1dDo6LW1zLWNsZWFye2Rpc3BsYXk6bm9uZX0uc3dlZXQtYWxlcnQgaW5wdXQ6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOiNiZGJkYmR9LnN3ZWV0LWFsZXJ0IGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOiNiZGJkYmR9LnN3ZWV0LWFsZXJ0LnNob3ctaW5wdXQgaW5wdXR7ZGlzcGxheTpibG9ja30uc3dlZXQtYWxlcnQgLnNhLWNvbmZpcm0tYnV0dG9uLWNvbnRhaW5lcntkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZX0uc3dlZXQtYWxlcnQgLmxhLWJhbGwtZmFsbHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjUwJTt0b3A6NTAlO21hcmdpbi1sZWZ0Oi0yN3B4O21hcmdpbi10b3A6NHB4O29wYWNpdHk6MDt2aXNpYmlsaXR5OmhpZGRlbn0uc3dlZXQtYWxlcnQgYnV0dG9ue2JhY2tncm91bmQtY29sb3I6IzhDRDRGNTtjb2xvcjojZmZmO2JvcmRlcjpub25lO2JveC1zaGFkb3c6bm9uZTtmb250LXNpemU6MTdweDtmb250LXdlaWdodDo1MDA7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDtib3JkZXItcmFkaXVzOjVweDtwYWRkaW5nOjEwcHggMzJweDttYXJnaW46MjZweCA1cHggMDtjdXJzb3I6cG9pbnRlcn0uc3dlZXQtYWxlcnQgYnV0dG9uOmZvY3Vze291dGxpbmU6MDtib3gtc2hhZG93OjAgMCAycHggcmdiYSgxMjgsMTc5LDIzNSwuNSksaW5zZXQgMCAwIDAgMXB4IHJnYmEoMCwwLDAsLjA1KX0uc3dlZXQtYWxlcnQgYnV0dG9uOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzdlY2ZmNH0uc3dlZXQtYWxlcnQgYnV0dG9uOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiM1ZGMyZjF9LnN3ZWV0LWFsZXJ0IGJ1dHRvbi5jYW5jZWx7YmFja2dyb3VuZC1jb2xvcjojQzFDMUMxfS5zd2VldC1hbGVydCBidXR0b24uY2FuY2VsOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2I5YjliOX0uc3dlZXQtYWxlcnQgYnV0dG9uLmNhbmNlbDphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojYThhOGE4fS5zd2VldC1hbGVydCBidXR0b24uY2FuY2VsOmZvY3Vze2JveC1zaGFkb3c6cmdiYSgxOTcsMjA1LDIxMSwuOCkgMCAwIDJweCxyZ2JhKDAsMCwwLC4wNDcwNTg4KSAwIDAgMCAxcHggaW5zZXQhaW1wb3J0YW50fS5zd2VldC1hbGVydCBidXR0b25bZGlzYWJsZWRde29wYWNpdHk6LjY7Y3Vyc29yOmRlZmF1bHR9LnN3ZWV0LWFsZXJ0IGJ1dHRvbi5jb25maXJtW2Rpc2FibGVkXXtjb2xvcjp0cmFuc3BhcmVudH0uc3dlZXQtYWxlcnQgYnV0dG9uLmNvbmZpcm1bZGlzYWJsZWRdfi5sYS1iYWxsLWZhbGx7b3BhY2l0eToxO3Zpc2liaWxpdHk6dmlzaWJsZTt0cmFuc2l0aW9uLWRlbGF5OjBzfS5zd2VldC1hbGVydCBidXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9LnN3ZWV0LWFsZXJ0W2RhdGEtaGFzLWNhbmNlbC1idXR0b249ZmFsc2VdIGJ1dHRvbntib3gtc2hhZG93Om5vbmUhaW1wb3J0YW50fS5zd2VldC1hbGVydFtkYXRhLWhhcy1jb25maXJtLWJ1dHRvbj1mYWxzZV1bZGF0YS1oYXMtY2FuY2VsLWJ1dHRvbj1mYWxzZV17cGFkZGluZy1ib3R0b206NDBweH0uc3dlZXQtYWxlcnQgLnNhLWljb257d2lkdGg6ODBweDtoZWlnaHQ6ODBweDtib3JkZXI6NHB4IHNvbGlkIGdyYXk7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjQwcHg7Ym9yZGVyLXJhZGl1czo1MCU7bWFyZ2luOjIwcHggYXV0bztwYWRkaW5nOjA7cG9zaXRpb246cmVsYXRpdmU7Ym94LXNpemluZzpjb250ZW50LWJveH0uc3dlZXQtYWxlcnQgLnNhLWljb24uc2EtZXJyb3J7Ym9yZGVyLWNvbG9yOiNGMjc0NzR9LnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLWVycm9yIC5zYS14LW1hcmt7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9ja30uc3dlZXQtYWxlcnQgLnNhLWljb24uc2EtZXJyb3IgLnNhLWxpbmV7cG9zaXRpb246YWJzb2x1dGU7aGVpZ2h0OjVweDt3aWR0aDo0N3B4O2JhY2tncm91bmQtY29sb3I6I0YyNzQ3NDtkaXNwbGF5OmJsb2NrO3RvcDozN3B4O2JvcmRlci1yYWRpdXM6MnB4fS5zd2VldC1hbGVydCAuc2EtaWNvbi5zYS1lcnJvciAuc2EtbGluZS5zYS1sZWZ0ey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyk7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyk7bGVmdDoxN3B4fS5zd2VldC1hbGVydCAuc2EtaWNvbi5zYS1lcnJvciAuc2EtbGluZS5zYS1yaWdodHstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7cmlnaHQ6MTZweH0uc3dlZXQtYWxlcnQgLnNhLWljb24uc2Etd2FybmluZ3tib3JkZXItY29sb3I6I0Y4QkI4Nn0uc3dlZXQtYWxlcnQgLnNhLWljb24uc2Etd2FybmluZyAuc2EtYm9keXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDo1cHg7aGVpZ2h0OjQ3cHg7bGVmdDo1MCU7dG9wOjEwcHg7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjJweDtib3JkZXItcmFkaXVzOjJweDttYXJnaW4tbGVmdDotMnB4O2JhY2tncm91bmQtY29sb3I6I0Y4QkI4Nn0uc3dlZXQtYWxlcnQgLnNhLWljb24uc2Etd2FybmluZyAuc2EtZG90e3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjdweDtoZWlnaHQ6N3B4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo1MCU7Ym9yZGVyLXJhZGl1czo1MCU7bWFyZ2luLWxlZnQ6LTNweDtsZWZ0OjUwJTtib3R0b206MTBweDtiYWNrZ3JvdW5kLWNvbG9yOiNGOEJCODZ9LnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLWluZm86OmFmdGVyLC5zd2VldC1hbGVydCAuc2EtaWNvbi5zYS1pbmZvOjpiZWZvcmV7Y29udGVudDpcIlwiO2JhY2tncm91bmQtY29sb3I6I0M5REFFMTtsZWZ0OjUwJTtwb3NpdGlvbjphYnNvbHV0ZX0uc3dlZXQtYWxlcnQgLnNhLWljb24uc2EtaW5mb3tib3JkZXItY29sb3I6I0M5REFFMX0uc3dlZXQtYWxlcnQgLnNhLWljb24uc2EtaW5mbzo6YmVmb3Jle3dpZHRoOjVweDtoZWlnaHQ6MjlweDtib3R0b206MTdweDtib3JkZXItcmFkaXVzOjJweDttYXJnaW4tbGVmdDotMnB4fS5zd2VldC1hbGVydCAuc2EtaWNvbi5zYS1pbmZvOjphZnRlcnt3aWR0aDo3cHg7aGVpZ2h0OjdweDtib3JkZXItcmFkaXVzOjUwJTttYXJnaW4tbGVmdDotM3B4O3RvcDoxOXB4fS5zd2VldC1hbGVydCAuc2EtaWNvbi5zYS1zdWNjZXNze2JvcmRlci1jb2xvcjojQTVEQzg2fS5zd2VldC1hbGVydCAuc2EtaWNvbi5zYS1zdWNjZXNzOjphZnRlciwuc3dlZXQtYWxlcnQgLnNhLWljb24uc2Etc3VjY2Vzczo6YmVmb3Jle2NvbnRlbnQ6XCJcIjtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDo2MHB4O2hlaWdodDoxMjBweDtiYWNrZ3JvdW5kOiNmZmZ9LnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLXN1Y2Nlc3M6OmJlZm9yZXstd2Via2l0LWJvcmRlci1yYWRpdXM6MTIwcHggMCAwIDEyMHB4O2JvcmRlci1yYWRpdXM6MTIwcHggMCAwIDEyMHB4O3RvcDotN3B4O2xlZnQ6LTMzcHg7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpOy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjo2MHB4IDYwcHg7dHJhbnNmb3JtLW9yaWdpbjo2MHB4IDYwcHh9LnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLXN1Y2Nlc3M6OmFmdGVyey13ZWJraXQtYm9yZGVyLXJhZGl1czowIDEyMHB4IDEyMHB4IDA7Ym9yZGVyLXJhZGl1czowIDEyMHB4IDEyMHB4IDA7dG9wOi0xMXB4O2xlZnQ6MzBweDstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgNjBweDt0cmFuc2Zvcm0tb3JpZ2luOjAgNjBweH0uc3dlZXQtYWxlcnQgLnNhLWljb24uc2Etc3VjY2VzcyAuc2EtcGxhY2Vob2xkZXJ7d2lkdGg6ODBweDtoZWlnaHQ6ODBweDtib3JkZXI6NHB4IHNvbGlkIHJnYmEoMTY1LDIyMCwxMzQsLjIpOy13ZWJraXQtYm9yZGVyLXJhZGl1czo0MHB4O2JvcmRlci1yYWRpdXM6NTAlO2JveC1zaXppbmc6Y29udGVudC1ib3g7cG9zaXRpb246YWJzb2x1dGU7bGVmdDotNHB4O3RvcDotNHB4O3otaW5kZXg6Mn0uc3dlZXQtYWxlcnQgLnNhLWljb24uc2Etc3VjY2VzcyAuc2EtZml4e3dpZHRoOjVweDtoZWlnaHQ6OTBweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7cG9zaXRpb246YWJzb2x1dGU7bGVmdDoyOHB4O3RvcDo4cHg7ei1pbmRleDoxOy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpO3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKX0uc3dlZXQtYWxlcnQgLnNhLWljb24uc2Etc3VjY2VzcyAuc2EtbGluZXtoZWlnaHQ6NXB4O2JhY2tncm91bmQtY29sb3I6I0E1REM4NjtkaXNwbGF5OmJsb2NrO2JvcmRlci1yYWRpdXM6MnB4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6Mn0uc3dlZXQtYWxlcnQgLnNhLWljb24uc2Etc3VjY2VzcyAuc2EtbGluZS5zYS10aXB7d2lkdGg6MjVweDtsZWZ0OjE0cHg7dG9wOjQ2cHg7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0uc3dlZXQtYWxlcnQgLnNhLWljb24uc2Etc3VjY2VzcyAuc2EtbGluZS5zYS1sb25ne3dpZHRoOjQ3cHg7cmlnaHQ6OHB4O3RvcDozOHB4Oy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpO3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKX0uc3dlZXQtYWxlcnQgLnNhLWljb24uc2EtY3VzdG9te2JhY2tncm91bmQtc2l6ZTpjb250YWluO2JvcmRlci1yYWRpdXM6MDtib3JkZXI6bm9uZTtiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlciBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0fUAtd2Via2l0LWtleWZyYW1lcyBzaG93U3dlZXRBbGVydHswJXt0cmFuc2Zvcm06c2NhbGUoLjcpOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC43KX00NSV7dHJhbnNmb3JtOnNjYWxlKDEuMDUpOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEuMDUpfTgwJXt0cmFuc2Zvcm06c2NhbGUoLjk1KTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSguOTUpfTEwMCV7dHJhbnNmb3JtOnNjYWxlKDEpOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpfX1Aa2V5ZnJhbWVzIHNob3dTd2VldEFsZXJ0ezAle3RyYW5zZm9ybTpzY2FsZSguNyk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLjcpfTQ1JXt0cmFuc2Zvcm06c2NhbGUoMS4wNSk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMS4wNSl9ODAle3RyYW5zZm9ybTpzY2FsZSguOTUpOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC45NSl9MTAwJXt0cmFuc2Zvcm06c2NhbGUoMSk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSl9fUAtd2Via2l0LWtleWZyYW1lcyBoaWRlU3dlZXRBbGVydHswJXt0cmFuc2Zvcm06c2NhbGUoMSk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSl9MTAwJXt0cmFuc2Zvcm06c2NhbGUoLjUpOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC41KX19QGtleWZyYW1lcyBoaWRlU3dlZXRBbGVydHswJXt0cmFuc2Zvcm06c2NhbGUoMSk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSl9MTAwJXt0cmFuc2Zvcm06c2NhbGUoLjUpOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC41KX19QC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlRnJvbVRvcHswJXt0b3A6MH0xMDAle3RvcDo1MCV9fUBrZXlmcmFtZXMgc2xpZGVGcm9tVG9wezAle3RvcDowfTEwMCV7dG9wOjUwJX19QC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlVG9Ub3B7MCV7dG9wOjUwJX0xMDAle3RvcDowfX1Aa2V5ZnJhbWVzIHNsaWRlVG9Ub3B7MCV7dG9wOjUwJX0xMDAle3RvcDowfX1ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVGcm9tQm90dG9tezAle3RvcDo3MCV9MTAwJXt0b3A6NTAlfX1Aa2V5ZnJhbWVzIHNsaWRlRnJvbUJvdHRvbXswJXt0b3A6NzAlfTEwMCV7dG9wOjUwJX19QC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlVG9Cb3R0b217MCV7dG9wOjUwJX0xMDAle3RvcDo3MCV9fUBrZXlmcmFtZXMgc2xpZGVUb0JvdHRvbXswJXt0b3A6NTAlfTEwMCV7dG9wOjcwJX19LnNob3dTd2VldEFsZXJ0W2RhdGEtYW5pbWF0aW9uPXBvcF17LXdlYmtpdC1hbmltYXRpb246c2hvd1N3ZWV0QWxlcnQgLjNzO2FuaW1hdGlvbjpzaG93U3dlZXRBbGVydCAuM3N9LnNob3dTd2VldEFsZXJ0W2RhdGEtYW5pbWF0aW9uPW5vbmVdey13ZWJraXQtYW5pbWF0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9LnNob3dTd2VldEFsZXJ0W2RhdGEtYW5pbWF0aW9uPXNsaWRlLWZyb20tdG9wXXstd2Via2l0LWFuaW1hdGlvbjpzbGlkZUZyb21Ub3AgLjNzO2FuaW1hdGlvbjpzbGlkZUZyb21Ub3AgLjNzfS5zaG93U3dlZXRBbGVydFtkYXRhLWFuaW1hdGlvbj1zbGlkZS1mcm9tLWJvdHRvbV17LXdlYmtpdC1hbmltYXRpb246c2xpZGVGcm9tQm90dG9tIC4zczthbmltYXRpb246c2xpZGVGcm9tQm90dG9tIC4zc30uaGlkZVN3ZWV0QWxlcnRbZGF0YS1hbmltYXRpb249cG9wXXstd2Via2l0LWFuaW1hdGlvbjpoaWRlU3dlZXRBbGVydCAuMnM7YW5pbWF0aW9uOmhpZGVTd2VldEFsZXJ0IC4yc30uaGlkZVN3ZWV0QWxlcnRbZGF0YS1hbmltYXRpb249bm9uZV17LXdlYmtpdC1hbmltYXRpb246bm9uZTthbmltYXRpb246bm9uZX0uaGlkZVN3ZWV0QWxlcnRbZGF0YS1hbmltYXRpb249c2xpZGUtZnJvbS10b3Bdey13ZWJraXQtYW5pbWF0aW9uOnNsaWRlVG9Ub3AgLjRzO2FuaW1hdGlvbjpzbGlkZVRvVG9wIC40c30uaGlkZVN3ZWV0QWxlcnRbZGF0YS1hbmltYXRpb249c2xpZGUtZnJvbS1ib3R0b21dey13ZWJraXQtYW5pbWF0aW9uOnNsaWRlVG9Cb3R0b20gLjNzO2FuaW1hdGlvbjpzbGlkZVRvQm90dG9tIC4zc31ALXdlYmtpdC1rZXlmcmFtZXMgYW5pbWF0ZVN1Y2Nlc3NUaXB7MCUsNTQle3dpZHRoOjA7bGVmdDoxcHg7dG9wOjE5cHh9NzAle3dpZHRoOjUwcHg7bGVmdDotOHB4O3RvcDozN3B4fTg0JXt3aWR0aDoxN3B4O2xlZnQ6MjFweDt0b3A6NDhweH0xMDAle3dpZHRoOjI1cHg7bGVmdDoxNHB4O3RvcDo0NXB4fX1Aa2V5ZnJhbWVzIGFuaW1hdGVTdWNjZXNzVGlwezAlLDU0JXt3aWR0aDowO2xlZnQ6MXB4O3RvcDoxOXB4fTcwJXt3aWR0aDo1MHB4O2xlZnQ6LThweDt0b3A6MzdweH04NCV7d2lkdGg6MTdweDtsZWZ0OjIxcHg7dG9wOjQ4cHh9MTAwJXt3aWR0aDoyNXB4O2xlZnQ6MTRweDt0b3A6NDVweH19QC13ZWJraXQta2V5ZnJhbWVzIGFuaW1hdGVTdWNjZXNzTG9uZ3swJSw2NSV7d2lkdGg6MDtyaWdodDo0NnB4O3RvcDo1NHB4fTg0JXt3aWR0aDo1NXB4O3JpZ2h0OjA7dG9wOjM1cHh9MTAwJXt3aWR0aDo0N3B4O3JpZ2h0OjhweDt0b3A6MzhweH19QGtleWZyYW1lcyBhbmltYXRlU3VjY2Vzc0xvbmd7MCUsNjUle3dpZHRoOjA7cmlnaHQ6NDZweDt0b3A6NTRweH04NCV7d2lkdGg6NTVweDtyaWdodDowO3RvcDozNXB4fTEwMCV7d2lkdGg6NDdweDtyaWdodDo4cHg7dG9wOjM4cHh9fUAtd2Via2l0LWtleWZyYW1lcyByb3RhdGVQbGFjZWhvbGRlcnswJSw1JXt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC00NWRlZyl9MTAwJSwxMiV7dHJhbnNmb3JtOnJvdGF0ZSgtNDA1ZGVnKTstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQwNWRlZyl9fUBrZXlmcmFtZXMgcm90YXRlUGxhY2Vob2xkZXJ7MCUsNSV7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpOy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpfTEwMCUsMTIle3RyYW5zZm9ybTpyb3RhdGUoLTQwNWRlZyk7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC00MDVkZWcpfX0uYW5pbWF0ZVN1Y2Nlc3NUaXB7LXdlYmtpdC1hbmltYXRpb246YW5pbWF0ZVN1Y2Nlc3NUaXAgLjc1czthbmltYXRpb246YW5pbWF0ZVN1Y2Nlc3NUaXAgLjc1c30uYW5pbWF0ZVN1Y2Nlc3NMb25ney13ZWJraXQtYW5pbWF0aW9uOmFuaW1hdGVTdWNjZXNzTG9uZyAuNzVzO2FuaW1hdGlvbjphbmltYXRlU3VjY2Vzc0xvbmcgLjc1c30uc2EtaWNvbi5zYS1zdWNjZXNzLmFuaW1hdGU6OmFmdGVyey13ZWJraXQtYW5pbWF0aW9uOnJvdGF0ZVBsYWNlaG9sZGVyIDQuMjVzIGVhc2UtaW47YW5pbWF0aW9uOnJvdGF0ZVBsYWNlaG9sZGVyIDQuMjVzIGVhc2UtaW59QC13ZWJraXQta2V5ZnJhbWVzIGFuaW1hdGVFcnJvckljb257MCV7dHJhbnNmb3JtOnJvdGF0ZVgoMTAwZGVnKTstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGVYKDEwMGRlZyk7b3BhY2l0eTowfTEwMCV7dHJhbnNmb3JtOnJvdGF0ZVgoMCk7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlWCgwKTtvcGFjaXR5OjF9fUBrZXlmcmFtZXMgYW5pbWF0ZUVycm9ySWNvbnswJXt0cmFuc2Zvcm06cm90YXRlWCgxMDBkZWcpOy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZVgoMTAwZGVnKTtvcGFjaXR5OjB9MTAwJXt0cmFuc2Zvcm06cm90YXRlWCgwKTstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGVYKDApO29wYWNpdHk6MX19LmFuaW1hdGVFcnJvckljb257LXdlYmtpdC1hbmltYXRpb246YW5pbWF0ZUVycm9ySWNvbiAuNXM7YW5pbWF0aW9uOmFuaW1hdGVFcnJvckljb24gLjVzfUAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRlWE1hcmt7MCUsNTAle3RyYW5zZm9ybTpzY2FsZSguNCk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLjQpO21hcmdpbi10b3A6MjZweDtvcGFjaXR5OjB9ODAle3RyYW5zZm9ybTpzY2FsZSgxLjE1KTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxLjE1KTttYXJnaW4tdG9wOi02cHh9MTAwJXt0cmFuc2Zvcm06c2NhbGUoMSk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7bWFyZ2luLXRvcDowO29wYWNpdHk6MX19QGtleWZyYW1lcyBhbmltYXRlWE1hcmt7MCUsNTAle3RyYW5zZm9ybTpzY2FsZSguNCk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLjQpO21hcmdpbi10b3A6MjZweDtvcGFjaXR5OjB9ODAle3RyYW5zZm9ybTpzY2FsZSgxLjE1KTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxLjE1KTttYXJnaW4tdG9wOi02cHh9MTAwJXt0cmFuc2Zvcm06c2NhbGUoMSk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7bWFyZ2luLXRvcDowO29wYWNpdHk6MX19LmFuaW1hdGVYTWFya3std2Via2l0LWFuaW1hdGlvbjphbmltYXRlWE1hcmsgLjVzO2FuaW1hdGlvbjphbmltYXRlWE1hcmsgLjVzfUAtd2Via2l0LWtleWZyYW1lcyBwdWxzZVdhcm5pbmd7MCV7Ym9yZGVyLWNvbG9yOiNGOEQ0ODZ9MTAwJXtib3JkZXItY29sb3I6I0Y4QkI4Nn19QGtleWZyYW1lcyBwdWxzZVdhcm5pbmd7MCV7Ym9yZGVyLWNvbG9yOiNGOEQ0ODZ9MTAwJXtib3JkZXItY29sb3I6I0Y4QkI4Nn19LnB1bHNlV2FybmluZ3std2Via2l0LWFuaW1hdGlvbjpwdWxzZVdhcm5pbmcgLjc1cyBpbmZpbml0ZSBhbHRlcm5hdGU7YW5pbWF0aW9uOnB1bHNlV2FybmluZyAuNzVzIGluZmluaXRlIGFsdGVybmF0ZX1ALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2VXYXJuaW5nSW5zezAle2JhY2tncm91bmQtY29sb3I6I0Y4RDQ4Nn0xMDAle2JhY2tncm91bmQtY29sb3I6I0Y4QkI4Nn19QGtleWZyYW1lcyBwdWxzZVdhcm5pbmdJbnN7MCV7YmFja2dyb3VuZC1jb2xvcjojRjhENDg2fTEwMCV7YmFja2dyb3VuZC1jb2xvcjojRjhCQjg2fX0ucHVsc2VXYXJuaW5nSW5zey13ZWJraXQtYW5pbWF0aW9uOnB1bHNlV2FybmluZ0lucyAuNzVzIGluZmluaXRlIGFsdGVybmF0ZTthbmltYXRpb246cHVsc2VXYXJuaW5nSW5zIC43NXMgaW5maW5pdGUgYWx0ZXJuYXRlfUAtd2Via2l0LWtleWZyYW1lcyByb3RhdGUtbG9hZGluZ3swJXt0cmFuc2Zvcm06cm90YXRlKDApfTEwMCV7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX1Aa2V5ZnJhbWVzIHJvdGF0ZS1sb2FkaW5nezAle3RyYW5zZm9ybTpyb3RhdGUoMCl9MTAwJXt0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fS5zd2VldC1hbGVydCAuc2EtaWNvbi5zYS1lcnJvciAuc2EtbGluZS5zYS1sZWZ0ey1tcy10cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKVxcOX0uc3dlZXQtYWxlcnQgLnNhLWljb24uc2EtZXJyb3IgLnNhLWxpbmUuc2EtcmlnaHR7LW1zLXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKVxcOX0uc3dlZXQtYWxlcnQgLnNhLWljb24uc2Etc3VjY2Vzc3tib3JkZXItY29sb3I6dHJhbnNwYXJlbnRcXDl9LnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLXN1Y2Nlc3MgLnNhLWxpbmUuc2EtdGlwey1tcy10cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKVxcOX0uc3dlZXQtYWxlcnQgLnNhLWljb24uc2Etc3VjY2VzcyAuc2EtbGluZS5zYS1sb25ney1tcy10cmFuc2Zvcm06cm90YXRlKC00NWRlZylcXDl9LmxhLWJhbGwtZmFsbCwubGEtYmFsbC1mYWxsPmRpdntwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmxhLWJhbGwtZmFsbHtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZTowO2NvbG9yOiNmZmY7d2lkdGg6NTRweDtoZWlnaHQ6MThweH0ubGEtYmFsbC1mYWxsLmxhLWRhcmt7Y29sb3I6IzMzM30ubGEtYmFsbC1mYWxsPmRpdntkaXNwbGF5OmlubGluZS1ibG9jaztmbG9hdDpub25lO2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yO2JvcmRlcjowIHNvbGlkIGN1cnJlbnRDb2xvcjt3aWR0aDoxMHB4O2hlaWdodDoxMHB4O21hcmdpbjo0cHg7Ym9yZGVyLXJhZGl1czoxMDAlO29wYWNpdHk6MDstd2Via2l0LWFuaW1hdGlvbjpiYWxsLWZhbGwgMXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7LW1vei1hbmltYXRpb246YmFsbC1mYWxsIDFzIGVhc2UtaW4tb3V0IGluZmluaXRlOy1vLWFuaW1hdGlvbjpiYWxsLWZhbGwgMXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7YW5pbWF0aW9uOmJhbGwtZmFsbCAxcyBlYXNlLWluLW91dCBpbmZpbml0ZX0ubGEtYmFsbC1mYWxsPmRpdjpudGgtY2hpbGQoMSl7LXdlYmtpdC1hbmltYXRpb24tZGVsYXk6LS4yczstbW96LWFuaW1hdGlvbi1kZWxheTotLjJzOy1vLWFuaW1hdGlvbi1kZWxheTotLjJzO2FuaW1hdGlvbi1kZWxheTotLjJzfS5sYS1iYWxsLWZhbGw+ZGl2Om50aC1jaGlsZCgyKXstd2Via2l0LWFuaW1hdGlvbi1kZWxheTotLjFzOy1tb3otYW5pbWF0aW9uLWRlbGF5Oi0uMXM7LW8tYW5pbWF0aW9uLWRlbGF5Oi0uMXM7YW5pbWF0aW9uLWRlbGF5Oi0uMXN9LmxhLWJhbGwtZmFsbD5kaXY6bnRoLWNoaWxkKDMpey13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OjBzOy1tb3otYW5pbWF0aW9uLWRlbGF5OjBzOy1vLWFuaW1hdGlvbi1kZWxheTowczthbmltYXRpb24tZGVsYXk6MHN9LmxhLWJhbGwtZmFsbC5sYS1zbXt3aWR0aDoyNnB4O2hlaWdodDo4cHh9LmxhLWJhbGwtZmFsbC5sYS1zbT5kaXZ7d2lkdGg6NHB4O2hlaWdodDo0cHg7bWFyZ2luOjJweH0ubGEtYmFsbC1mYWxsLmxhLTJ4e3dpZHRoOjEwOHB4O2hlaWdodDozNnB4fS5sYS1iYWxsLWZhbGwubGEtMng+ZGl2e3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7bWFyZ2luOjhweH0ubGEtYmFsbC1mYWxsLmxhLTN4e3dpZHRoOjE2MnB4O2hlaWdodDo1NHB4fS5sYS1iYWxsLWZhbGwubGEtM3g+ZGl2e3dpZHRoOjMwcHg7aGVpZ2h0OjMwcHg7bWFyZ2luOjEycHh9QC13ZWJraXQta2V5ZnJhbWVzIGJhbGwtZmFsbHswJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTQ1JSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTE0NSUpfTEwJSw5MCV7b3BhY2l0eTouNX0yMCUsODAle29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDApO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfTEwMCV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTQ1JSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTQ1JSl9fUAtbW96LWtleWZyYW1lcyBiYWxsLWZhbGx7MCV7b3BhY2l0eTowOy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTE0NSUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xNDUlKX0xMCUsOTAle29wYWNpdHk6LjV9MjAlLDgwJXtvcGFjaXR5OjE7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWSgwKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKX0xMDAle29wYWNpdHk6MDstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDE0NSUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDE0NSUpfX1ALW8ta2V5ZnJhbWVzIGJhbGwtZmFsbHswJXtvcGFjaXR5OjA7LW8tdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTE0NSUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xNDUlKX0xMCUsOTAle29wYWNpdHk6LjV9MjAlLDgwJXtvcGFjaXR5OjE7LW8tdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCl9MTAwJXtvcGFjaXR5OjA7LW8tdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTQ1JSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTQ1JSl9fUBrZXlmcmFtZXMgYmFsbC1mYWxsezAle29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xNDUlKTstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xNDUlKTstby10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTQ1JSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTE0NSUpfTEwJSw5MCV7b3BhY2l0eTouNX0yMCUsODAle29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDApOy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCk7LW8tdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCl9MTAwJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgxNDUlKTstbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDE0NSUpOy1vLXRyYW5zZm9ybTp0cmFuc2xhdGVZKDE0NSUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDE0NSUpfX08L3N0eWxlPicpO1xuICAgICAgc3dhbCh7XG4gICAgICAgIHRpdGxlOiAnU3RhcnRpbmcgTWFuZ2FPbmxpbmVWaWV3ZXInLFxuICAgICAgICB0ZXh0OiAnUGxlYXNlIHdhaXQsIDMgc2Vjb25kcy4uLicsXG4gICAgICAgIHNob3dDYW5jZWxCdXR0b246IGZhbHNlLFxuICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ05vLCBjYW5jZWwhJyxcbiAgICAgICAgY29uZmlybUJ1dHRvbkNvbG9yOiAnI0RENkI1NScsXG4gICAgICAgIGNsb3NlT25Db25maXJtOiB0cnVlLFxuICAgICAgfSwgKGlzQ29uZmlybSkgPT4ge1xuICAgICAgICBjYW5jZWwgPSBpc0NvbmZpcm07XG4gICAgICB9KTtcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoY2FuY2VsKSB7XG4gICAgICAgIGxvZ1NjcmlwdCgnQWJvcnRlZCcpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAobWFuZ2EuYmVmb3JlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWFuZ2EuYmVmb3JlKCk7XG4gICAgICB9XG4gICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuaW5uZXJIVE1MID0gcmVhZGVyKG1hbmdhKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnRyb2xzKG1hbmdhKTtcbiAgICAgICAgICBzZXRLZXlEb3duRXZlbnRzKG1hbmdhKTtcbiAgICAgICAgICBjaGVja0ltYWdlc0xvYWRlZChtYW5nYSk7XG4gICAgICAgICAgbG9nU2NyaXB0KCdTaXRlIHJlYnVpbGQgZG9uZScpO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgbG9hZE1hbmdhKG1hbmdhKTtcbiAgICAgICAgICB9LCA1MCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBsb2dTY3JpcHQoZSk7XG4gICAgICAgIH1cbiAgICAgIH0sIDUwKTtcbiAgICB9LCBzZXR0aW5ncy5hbHdheXNMb2FkID8gNTAgOiAzMDAwKTtcbiAgfVxufVxuXG4vLyBTY3JpcHQgRW50cnkgcG9pbnRcbmZ1bmN0aW9uIHN0YXJ0KHNpdGVzKSB7XG4gIGxvZ1NjcmlwdChcbiAgICBgU3RhcnRpbmcgJHtnZXRJbmZvR00uc2NyaXB0Lm5hbWV9ICR7Z2V0SW5mb0dNLnNjcmlwdC52ZXJzaW9ufSBvbiAke2dldEJyb3dzZXIoKX0gd2l0aCAke2dldEVuZ2luZSgpfWApO1xuICAvLyBXLkluZm9HTSA9IGdldEluZm9HTTtcbiAgbG9nU2NyaXB0KGAke3NpdGVzLmxlbmd0aH0gS25vd24gTWFuZ2EgU2l0ZXNgKTtcbiAgLy8gV2FpdCBmb3Igc29tZXRoaW5nIG9uIHRoZSBzaXRlIHRvIGJlIHJlYWR5IGJlZm9yZSBleGVjdXRpbmcgdGhlIHNjcmlwdFxuICBmdW5jdGlvbiB3YWl0RXhlYyhzaXRlKSB7XG4gICAgbGV0IHdhaXQgPSAnJztcbiAgICBpZiAoc2l0ZS53YWl0RWxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChzaXRlLndhaXRBdHRyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgd2FpdCA9ICQoc2l0ZS53YWl0RWxlKS5hdHRyKHNpdGUud2FpdEF0dHIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FpdCA9ICQoc2l0ZS53YWl0RWxlKS5nZXQoKTtcbiAgICAgIH1cbiAgICAgIGxvZ1NjcmlwdChgV2F0aW5nIGZvciAke3NpdGUud2FpdEVsZX0gPSAke3dhaXR9YCk7XG4gICAgICBpZiAoaXNFbXB0eSh3YWl0KSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB3YWl0RXhlYyhzaXRlKTtcbiAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNpdGUud2FpdFZhciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB3YWl0ID0gV1tzaXRlLndhaXRWYXJdO1xuICAgICAgbG9nU2NyaXB0KGBXYXRpbmcgZm9yICR7c2l0ZS53YWl0VmFyfSA9ICR7d2FpdH1gKTtcbiAgICAgIGlmIChpc0VtcHR5KHdhaXQpKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHdhaXRFeGVjKHNpdGUpO1xuICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3JtYXRQYWdlKHNpdGUucnVuKCkpO1xuICB9XG5cbiAgbG9nU2NyaXB0KCdMb29raW5nIGZvciBhIG1hdGNoLi4uJyk7XG4gIGNvbnN0IHRlc3QgPSBSLmNvbXBvc2UoUi5tYXAod2FpdEV4ZWMpLFxuICAgIFIubWFwKGxvZ1NjcmlwdEMoJ1NpdGUgRm91bmQ6JykpLFxuICAgIFIuZmlsdGVyKHggPT4gUi50ZXN0KHgudXJsLCBsb2NhdGlvbi5ocmVmKSkpO1xuICB0ZXN0KHNpdGVzKTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9wcmVmZXItZGVmYXVsdC1leHBvcnRcbmV4cG9ydCB7IHN0YXJ0IH07XG4iLCIvLyA9PSBCYXRvdG8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgZGVmYXVsdCB7IC8vIFRPRE86IFdlYnRvb24gc3VwcG9ydFxuICBuYW1lOiAnQmF0b3RvJyxcbiAgdXJsOiAvaHR0cHM/OlxcL1xcLyh3d3cuKT9iYXRvLnRvXFwvcmVhZGVyLiovLFxuICB3YWl0RWxlOiAnc2VsZWN0I3BhZ2Vfc2VsZWN0OmZpcnN0IG9wdGlvbicsXG4gIGhvbWVwYWdlOiAnaHR0cDovL2JhdG8udG8vJyxcbiAgbGFuZzogWydlbmcnXSxcbiAgY2F0ZWdvcnk6ICdtYW5nYScsXG4gIHJ1bigpIHtcbiAgICBjb25zdCBudW0gPSAkKCdzZWxlY3QjcGFnZV9zZWxlY3Q6Zmlyc3Qgb3B0aW9uJykubGVuZ3RoO1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogJCgnLm1vZGVyYXRpb25fYmFyIGxpOmZpcnN0JykudGV4dCgpLFxuICAgICAgc2VyaWVzOiAkKCdkaXYubW9kZXJhdGlvbl9iYXIgYTpmaXJzdCcpLmF0dHIoJ2hyZWYnKSxcbiAgICAgIHF1YW50OiBudW0sXG4gICAgICBwcmV2OiAkKCdpbWdbc3JjJD1cXCdwcHJldi5wbmdcXCddOmZpcnN0JykucGFyZW50KCkuYXR0cignaHJlZicpLFxuICAgICAgbmV4dDogJCgnaW1nW3NyYyQ9XFwnbm5leHQucG5nXFwnXTpmaXJzdCcpLnBhcmVudCgpLmF0dHIoJ2hyZWYnKSxcbiAgICAgIGxpc3RQYWdlczogWy4uLkFycmF5KG51bSkua2V5cygpXS5tYXAoaSA9PiBgJHtsb2NhdGlvbi5oYXNoLnJlcGxhY2UoJyMnLCAnL2FyZWFkZXI/aWQ9Jyl9JnA9JHtpICsgMX1gKSxcbiAgICAgIGltZzogJyNjb21pY19wYWdlJyxcbiAgICB9O1xuICB9LFxufTtcbiIsIi8vID09IENvbWlDYXN0bGUgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ0NvbWlDYXN0bGUnLFxuICB1cmw6IC9odHRwcz86XFwvXFwvKHd3dy4pP2NvbWljYXN0bGUub3JnXFwvY29taWNcXC8uK1xcL1swLTldKy4qLyxcbiAgaG9tZXBhZ2U6ICdodHRwOi8vd3d3LmNvbWljYXN0bGUub3JnLycsXG4gIGxhbmc6IFsnZW5nJ10sXG4gIGNhdGVnb3J5OiAnY29taWMnLFxuICBydW4oKSB7XG4gICAgY29uc3QgdXJsID0gJCgnLmZvcm0tY29udHJvbDpsYXN0IG9wdGlvbicpLmdldCgpO1xuICAgIGNvbnN0IGNoYXB0ZXIgPSAkKCcuZm9ybS1jb250cm9sOmZpcnN0IG9wdGlvbicpO1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogY2hhcHRlci5maW5kKCc6c2VsZWN0ZWQnKS50ZXh0KCksXG4gICAgICBzZXJpZXM6ICQoJy5uYXZiYXItaGVhZGVyIGEnKS5hdHRyKCdocmVmJyksXG4gICAgICBxdWFudDogdXJsLmxlbmd0aCxcbiAgICAgIHByZXY6IGNoYXB0ZXIuZmluZCgnOnNlbGVjdGVkJykucHJldigpLnZhbCgpLFxuICAgICAgbmV4dDogY2hhcHRlci5maW5kKCc6c2VsZWN0ZWQnKS5uZXh0KCkudmFsKCksXG4gICAgICBsaXN0UGFnZXM6IHVybC5tYXAoaXRlbSA9PiAkKGl0ZW0pLnZhbCgpKSxcbiAgICAgIGltZzogJy5jaGFwdGVyLWltZycsXG4gICAgfTtcbiAgfSxcbn07XG4iLCIvLyA9PSBEeW5hc3R5U2NhbnMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdEeW5hc3R5LVNjYW5zJyxcbiAgdXJsOiAvaHR0cHM/OlxcL1xcLyh3d3cuKT9keW5hc3R5LXNjYW5zLmNvbVxcL2NoYXB0ZXJzXFwvLisvLFxuICBob21lcGFnZTogJ2h0dHBzOi8vZHluYXN0eS1zY2Fucy5jb20vJyxcbiAgbGFuZzogWydlbmcnXSxcbiAgY2F0ZWdvcnk6ICdtYW5nYScsXG4gIHJ1bigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6ICQoJyNjaGFwdGVyLXRpdGxlJykudGV4dCgpLFxuICAgICAgc2VyaWVzOiAnIycsXG4gICAgICBxdWFudDogVy5wYWdlcy5sZW5ndGgsXG4gICAgICBwcmV2OiAkKCcjcHJldl9saW5rJykuYXR0cignaHJlZicpLFxuICAgICAgbmV4dDogJCgnI25leHRfbGluaycpLmF0dHIoJ2hyZWYnKSxcbiAgICAgIGxpc3RJbWFnZXM6IFcucGFnZXMubWFwKHggPT4geC5pbWFnZSksXG4gICAgfTtcbiAgfSxcbn07XG4iLCIvLyA9PSBFYXRNYW5nYSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdFYXRNYW5nYScsXG4gIHVybDogL2h0dHBzPzpcXC9cXC8od3d3Lik/ZWF0bWFuZ2EubWVcXC9NYW5nYS1TY2FuXFwvLitcXC8uK1xcLy8sXG4gIGhvbWVwYWdlOiAnaHR0cDovL2VhdG1hbmdhLm1lLycsXG4gIGxhbmc6IFsnZW5nJ10sXG4gIGNhdGVnb3J5OiAnbWFuZ2EnLFxuICBydW4oKSB7XG4gICAgY29uc3QgY2hhcHRlciA9ICQoJyN0b3BfY2hhcHRlcl9saXN0IG9wdGlvbjpzZWxlY3RlZCcpO1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogJCgnI21haW5fY29udGVudCBoMScpLnRleHQoKS5zcGxpdCgnLCcpWzBdLnRyaW0oKSxcbiAgICAgIHNlcmllczogJCgndWwjY3J1bWJzIGxpIGE6ZXEoMiknKS5hdHRyKCdocmVmJyksXG4gICAgICBxdWFudDogJCgnc2VsZWN0I3BhZ2VzIG9wdGlvbjpsYXN0JykuaHRtbCgpLFxuICAgICAgcHJldjogY2hhcHRlci5uZXh0KCkudmFsKCksXG4gICAgICBuZXh0OiBjaGFwdGVyLnByZXYoKS52YWwoKSxcbiAgICAgIGxpc3RQYWdlczogJCgnc2VsZWN0I3BhZ2VzIG9wdGlvbicpLmdldCgpLm1hcChpdGVtID0+ICQoaXRlbSkudmFsKCkpLFxuICAgICAgaW1nOiAnI2VhdG1hbmdhX2ltYWdlICwgI2VhdG1hbmdhX2ltYWdlX2JpZycsXG4gICAgfTtcbiAgfSxcbn07XG4iLCIvLyA9PSBFR1NjYW5zID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdFYXN5IEdvaW5nIFNjYW5zJyxcbiAgdXJsOiAvaHR0cHM/OlxcL1xcL3JlYWQuZWdzY2Fucy5jb21cXC8uKy8sXG4gIGhvbWVwYWdlOiAnaHR0cDovL3JlYWQuZWdzY2Fucy5jb20vJyxcbiAgbGFuZzogWydlbmcnXSxcbiAgY2F0ZWdvcnk6ICdtYW5nYScsXG4gIHJ1bigpIHtcbiAgICBjb25zdCBzcmMgPSBXLmltZ191cmwuc2xpY2UoMSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiAkKCdzZWxlY3RbbmFtZT1cIm1hbmdhXCJdIG9wdGlvbjpzZWxlY3RlZCcpLnRleHQoKS50cmltKCksXG4gICAgICBzZXJpZXM6ICcjJyxcbiAgICAgIHF1YW50OiBzcmMubGVuZ3RoLFxuICAgICAgcHJldjogVy5wcmV2X2NoYXAsXG4gICAgICBuZXh0OiBXLm5leHRfY2hhcCxcbiAgICAgIGxpc3RJbWFnZXM6IHNyYyxcbiAgICAgIGJlZm9yZSgpIHtcbiAgICAgICAgJChzcmMpLmVhY2goKGluZGV4LCB2YWx1ZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgIGltZy5zcmMgPSB2YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH07XG4gIH0sXG59O1xuIiwiLy8gPT0gRm9PbFNsaWRlID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnRm9PbFNsaWRlJyxcbiAgdXJsOiAvLitcXC9yZWFkXFwvLisvLFxuICBob21lcGFnZTogJycsXG4gIGxhbmc6IFsnZW5nJ10sXG4gIGNhdGVnb3J5OiAnbWFuZ2EnLFxuICBydW4oKSB7XG4gICAgY29uc3QgdGVtcCA9IGAke2xvY2F0aW9uLmhyZWYuc3Vic3RyKDAsIGxvY2F0aW9uLmhyZWYubGFzdEluZGV4T2YoJy8nKSl9L2A7XG4gICAgY29uc3QgdXJsID0gdGVtcC5tYXRjaCgvcGFnZVxcLyQvKSA/IHRlbXAgOiBgJHt0ZW1wfXBhZ2UvYDtcbiAgICBjb25zdCBudW0gPSAkKCcudG9wYmFyX3JpZ2h0IC5kcm9wZG93biBsaScpLmxlbmd0aDtcbiAgICBjb25zdCBjaGFwdGVyID0gJCgnLnRvcGJhcl9sZWZ0IC5kcm9wZG93bl9wYXJlbnQ6bGFzdCB1bCBsaSBhJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiAkKCd0aXRsZScpLnRleHQoKS50cmltKCksXG4gICAgICBzZXJpZXM6ICQoJ2Rpdi50YnRpdGxlIGRpdi50ZXh0IGE6Zmlyc3QnKS5hdHRyKCdocmVmJyksXG4gICAgICBxdWFudDogbnVtLFxuICAgICAgcHJldjogY2hhcHRlci5lcShjaGFwdGVyLmluZGV4KGNoYXB0ZXIuZmlsdGVyKGBbaHJlZio9JyR7bG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgvcGFnZS4rLywgJycpfSddYCkpICsgMSkuYXR0cignaHJlZicpLFxuICAgICAgbmV4dDogY2hhcHRlci5lcShjaGFwdGVyLmluZGV4KGNoYXB0ZXIuZmlsdGVyKGBbaHJlZio9JyR7bG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgvcGFnZS4rLywgJycpfSddYCkpIC0gMSkuYXR0cignaHJlZicpLFxuICAgICAgbGlzdFBhZ2VzOiBbLi4uQXJyYXkobnVtKS5rZXlzKCldLm1hcChpID0+IHVybCArIChpICsgMSkpLFxuICAgICAgaW1nOiAnaW1nLm9wZW4nLFxuICAgIH07XG4gIH0sXG59O1xuIiwiLy8gPT0gS2lzc01hbmdhID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnS2lzc01hbmdhJyxcbiAgdXJsOiAvaHR0cHM/OlxcL1xcLyh3d3cuKT9raXNzbWFuZ2EuY29tXFwvTWFuZ2FcXC8uK1xcLy4rP2lkPVswLTldKy8sXG4gIGhvbWVwYWdlOiAnaHR0cDovL2tpc3NtYW5nYS5jb20vJyxcbiAgbGFuZzogWydlbmcnXSxcbiAgY2F0ZWdvcnk6ICdtYW5nYScsXG4gIHJ1bigpIHtcbiAgICBjb25zdCBjaGFwdGVyID0gJCgnI3NlbGVjdENoYXB0ZXIgb3B0aW9uJyk7XG4gICAgY29uc3Qgb3JpZ2luID0gJCgnI25hdnN1YmJhciBhJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiBvcmlnaW4udGV4dCgpLFxuICAgICAgc2VyaWVzOiBvcmlnaW4uYXR0cignaHJlZicpLFxuICAgICAgcXVhbnQ6ICQoJyNzZWxlY3RQYWdlIG9wdGlvbjpsYXN0JykubGFzdCgpLmh0bWwoKSxcbiAgICAgIHByZXY6IGNoYXB0ZXIuZmlsdGVyKCc6c2VsZWN0ZWQnKS5wcmV2KCkudmFsKCksXG4gICAgICBuZXh0OiBjaGFwdGVyLmZpbHRlcignOnNlbGVjdGVkJykubmV4dCgpLnZhbCgpLFxuICAgICAgbGlzdEltYWdlczogVy5sc3RJbWFnZXMsXG4gICAgfTtcbiAgfSxcbn07XG4iLCIvLyA9PSBNYW5nYURvb20gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdNYW5nYURvb20nLFxuICB1cmw6IC9odHRwcz86XFwvXFwvKHd3dy4pP21hbmdhZG9vbS5jb1xcLy4rXFwvWzAtOV0rLyxcbiAgaG9tZXBhZ2U6ICdodHRwczovL21hbmdhZG9vbS5jby8nLFxuICBsYW5nOiBbJ2VuZyddLFxuICBjYXRlZ29yeTogJ21hbmdhJyxcbiAgcnVuKCkge1xuICAgIGNvbnN0IHVybCA9ICQoJy5zZWxlY3RQYWdlOmZpcnN0IG9wdGlvbjpub3QoOmZpcnN0KScpLmdldCgpO1xuICAgIGNvbnN0IGNoYXB0ZXIgPSAkKCcuY2hhcHRlclNlbGVjdDpmaXJzdCBvcHRpb246c2VsZWN0ZWQnKTtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6ICQoJy53aWRnZXQtaGVhZGluZycpLnRleHQoKS50cmltKCksXG4gICAgICBzZXJpZXM6ICQoJy53aWRnZXQtaGVhZGluZyBhJykuYXR0cignaHJlZicpLFxuICAgICAgcXVhbnQ6IHVybC5sZW5ndGgsXG4gICAgICBwcmV2OiBjaGFwdGVyLm5leHQoKS52YWwoKSxcbiAgICAgIG5leHQ6IGNoYXB0ZXIucHJldigpLnZhbCgpLFxuICAgICAgbGlzdFBhZ2VzOiB1cmwubWFwKGl0ZW0gPT4gJChpdGVtKS52YWwoKSksXG4gICAgICBpbWc6ICdpbWcuaW1nLXJlc3BvbnNpdmUnLFxuICAgIH07XG4gIH0sXG59O1xuIiwiLy8gPT0gTWFuZ2FGb3ggPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnTWFuZ2FGb3gnLFxuICB1cmw6IC9odHRwcz86XFwvXFwvKHd3dy4pP21hbmdhZm94Lm1lXFwvbWFuZ2FcXC8uK1xcLy4rXFwvLyxcbiAgaG9tZXBhZ2U6ICdodHRwOi8vbWFuZ2Fmb3gubWUvJyxcbiAgbGFuZzogWydlbmcnXSxcbiAgY2F0ZWdvcnk6ICdtYW5nYScsXG4gIHJ1bigpIHtcbiAgICBjb25zdCBudW0gPSBwYXJzZUludCgkKCdzZWxlY3QubTpmaXJzdCBvcHRpb246bGFzdCcpLnByZXYoKS52YWwoKSwgMTApO1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogJCgnI3NlcmllcyAubm8nKS50ZXh0KCkudHJpbSgpLFxuICAgICAgc2VyaWVzOiAkKCcjc2VyaWVzIGE6bGFzdCcpLmF0dHIoJ2hyZWYnKSxcbiAgICAgIHF1YW50OiBudW0sXG4gICAgICBwcmV2OiAkKCcjY2huYXYgcDpmaXJzdCBhJykuYXR0cignaHJlZicpLFxuICAgICAgbmV4dDogJCgnI2NobmF2IHA6bGFzdCBhJykuYXR0cignaHJlZicpLFxuICAgICAgbGlzdFBhZ2VzOiBbLi4uQXJyYXkobnVtKS5rZXlzKCldLm1hcChpID0+IGAke2kgKyAxfS5odG1sYCksXG4gICAgICBpbWc6ICdpbWcjaW1hZ2UnLFxuICAgIH07XG4gIH0sXG59O1xuIiwiLy8gPT0gTWFuZ2FHbyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnTWFuZ2FHbycsXG4gIHVybDogL2h0dHBzPzpcXC9cXC8od3d3Lik/bWFuZ2Fnby5tZVxcL3JlYWQtbWFuZ2FcXC8uK1xcLy4rLyxcbiAgaG9tZXBhZ2U6ICdodHRwOi8vd3d3Lm1hbmdhZ28ubWUvJyxcbiAgbGFuZzogWydlbmcnXSxcbiAgY2F0ZWdvcnk6ICdtYW5nYScsXG4gIHJ1bigpIHtcbiAgICBjb25zdCBvcmlnaW4gPSAkKCcjc2VyaWVzJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiBvcmlnaW4udGV4dCgpLFxuICAgICAgc2VyaWVzOiBvcmlnaW4uYXR0cignaHJlZicpLFxuICAgICAgcXVhbnQ6ICQoJy5wYWdlIGE6Zmlyc3QnKS50ZXh0KCkucmVwbGFjZSgvcGFnZSAxIG9mIC8sICcnKSxcbiAgICAgIHByZXY6ICQoJy5yZWFkdGlwcyBwOmVxKDQpIGE6Zmlyc3QnKS5hdHRyKCdocmVmJyksXG4gICAgICBuZXh0OiAkKCcucmVhZHRpcHMgcDplcSgzKSBhOmZpcnN0JykuYXR0cignaHJlZicpLFxuICAgICAgbGlzdFBhZ2VzOiAkKCcucGFnZSBhJykuZ2V0KCkubWFwKGl0ZW0gPT4gJChpdGVtKS5hdHRyKCdocmVmJykpLFxuICAgICAgaW1nOiAnI3BhZ2UxJyxcbiAgICB9O1xuICB9LFxufTtcbiIsIi8vID09IE1hbmdhSGVyZSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ01hbmdhSGVyZScsXG4gIHVybDogL2h0dHBzPzpcXC9cXC8od3d3Lik/bWFuZ2FoZXJlLmNvXFwvbWFuZ2FcXC8uK1xcLy4rLyxcbiAgaG9tZXBhZ2U6ICdodHRwOi8vd3d3Lm1hbmdhaGVyZS5jby8nLFxuICBsYW5nOiBbJ2VuZyddLFxuICBjYXRlZ29yeTogJ21hbmdhJyxcbiAgcnVuKCkge1xuICAgIGNvbnN0IG51bSA9IHBhcnNlSW50KCQoJy5yaWdodCBzZWxlY3Q6Zmlyc3Qgb3B0aW9uOmxhc3QnKS5odG1sKCksIDEwKTtcbiAgICBjb25zdCBjaGFwdGVyID0gJCgnI3RvcF9jaGFwdGVyX2xpc3Qgb3B0aW9uOnNlbGVjdGVkJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiAkKCcudGl0bGUgaDEnKS50ZXh0KCksXG4gICAgICBzZXJpZXM6ICQoJ2Rpdi50aXRsZSBoMiBhJykuYXR0cignaHJlZicpLFxuICAgICAgcXVhbnQ6IG51bSxcbiAgICAgIHByZXY6IGNoYXB0ZXIucHJldigpLnZhbCgpLFxuICAgICAgbmV4dDogY2hhcHRlci5uZXh0KCkudmFsKCksXG4gICAgICBsaXN0UGFnZXM6IFsuLi5BcnJheShudW0pLmtleXMoKV0ubWFwKGkgPT4gYCR7aSArIDF9Lmh0bWxgKSxcbiAgICAgIGltZzogJ2ltZyNpbWFnZScsXG4gICAgfTtcbiAgfSxcbn07XG4iLCIvLyA9PSBNYW5nYUlubiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdNYW5nYUlubicsXG4gIHVybDogL2h0dHBzPzpcXC9cXC8od3d3Lik/bWFuZ2Fpbm4ubmV0XFwvbWFuZ2FcXC9jaGFwdGVyXFwvLisvLFxuICBob21lcGFnZTogJ2h0dHA6Ly93d3cubWFuZ2Fpbm4ubmV0LycsXG4gIGxhbmc6IFsnZW5nJ10sXG4gIGNhdGVnb3J5OiAnbWFuZ2EnLFxuICBydW4oKSB7XG4gICAgY29uc3QgbnVtID0gcGFyc2VJbnQoJCgnc2VsZWN0I2NtYnBhZ2VzIG9wdGlvbjpsYXN0JykuaHRtbCgpLCAxMCk7XG4gICAgY29uc3QgY2hhcHRlciA9ICQoJyNjaGFwdGVycyBvcHRpb246c2VsZWN0ZWQnKTtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6ICQoJyNnb3RvbWFuZ2FpbmZvMicpLnRleHQoKS5yZXBsYWNlKCcgLSAnLCAnJyksXG4gICAgICBzZXJpZXM6ICQoJyNnb3RvTWFuZ2FJbmZvJykuYXR0cignaHJlZicpLFxuICAgICAgcXVhbnQ6IG51bSxcbiAgICAgIHByZXY6IGNoYXB0ZXIucHJldigpLnZhbCgpLFxuICAgICAgbmV4dDogY2hhcHRlci5uZXh0KCkudmFsKCksXG4gICAgICBsaXN0UGFnZXM6IFsuLi5BcnJheShudW0pLmtleXMoKV0ubWFwKGkgPT4gYCR7bG9jYXRpb24uaHJlZn0vcGFnZV8ke2kgKyAxfWApLFxuICAgICAgaW1nOiAnaW1nI2ltZ1BhZ2UnLFxuICAgIH07XG4gIH0sXG59O1xuIiwiLy8gPT0gTWFuZ2FMeWdodCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnTWFuZ2FMeWdodCcsXG4gIHVybDogL2h0dHBzPzpcXC9cXC9tYW5nYS5seWdodC5uZXRcXC9zZXJpZXNcXC8uK1xcLmh0bWwvLFxuICBob21lcGFnZTogJ2h0dHA6Ly9tYW5nYS5seWdodC5uZXQvJyxcbiAgbGFuZzogWydlbmcnXSxcbiAgY2F0ZWdvcnk6ICdtYW5nYScsXG4gIHJ1bigpIHtcbiAgICBjb25zdCBjaGFwdGVyID0gJCgnLnNlbGVjdGNoYXB0ZXIgb3B0aW9uOnNlbGVjdGVkJyk7XG4gICAgY29uc3QgdXJsID0gYCR7JCgnZm9ybVtuYW1lPVxcJ3BhZ2VTZWxlY3RvcjFcXCddJykuYXR0cignYWN0aW9uJyl9P2NoPSR7Y2hhcHRlci52YWwoKS5yZXBsYWNlKCcgJywgJysnKX0mcGFnZT1gO1xuICAgIGNvbnN0IG51bSA9ICQoJy5zZWxlY3RwYWdlIG9wdGlvbicpLmxlbmd0aDtcbiAgICBjb25zdCBvcmlnaW4gPSAkKCdkaXYuZW50cnkgaDEgYScpO1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogb3JpZ2luLnRleHQoKS50cmltKCksXG4gICAgICBzZXJpZXM6IG9yaWdpbi5hdHRyKCdocmVmJyksXG4gICAgICBxdWFudDogbnVtLFxuICAgICAgcHJldjogKGAke2xvY2F0aW9uLnBhdGhuYW1lfT9jaD0ke2NoYXB0ZXIucHJldigpLnZhbCgpfWApLnJlcGxhY2UoJyAnLCAnKycpLFxuICAgICAgbmV4dDogKGAke2xvY2F0aW9uLnBhdGhuYW1lfT9jaD0ke2NoYXB0ZXIubmV4dCgpLnZhbCgpfWApLnJlcGxhY2UoJyAnLCAnKycpLFxuICAgICAgbGlzdFBhZ2VzOiBbLi4uQXJyYXkobnVtKS5rZXlzKCldLm1hcChpID0+IHVybCArIChpICsgMSkpLFxuICAgICAgaW1nOiAnI21haW5pbWFnZScsXG4gICAgfTtcbiAgfSxcbn07XG4iLCIvLyA9PSBNYW5nYVBhcmsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdNYW5nYVBhcmsnLFxuICB1cmw6IC9odHRwcz86XFwvXFwvKHd3dy4pP21hbmdhcGFyay5tZVxcL21hbmdhXFwvLitcXC8uKy8sXG4gIGhvbWVwYWdlOiAnaHR0cDovL21hbmdhcGFyay5tZS8nLFxuICBsYW5nOiBbJ2VuZyddLFxuICBjYXRlZ29yeTogJ21hbmdhJyxcbiAgcnVuKCkge1xuICAgIGNvbnN0IHVybCA9IGxvY2F0aW9uLmhyZWYgKyAobG9jYXRpb24uaHJlZi5sYXN0SW5kZXhPZignLycpICE9PSBsb2NhdGlvbi5ocmVmLmxlbmd0aFxuICAgICAgLSAxID8gJy8nIDogJycpO1xuICAgIGNvbnN0IG51bSA9ICQoJy5pbmZvIGRpdjplcSgxKSBhJykubGVuZ3RoO1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogJCgnLmxvYyBhOmZpcnN0JykudGV4dCgpLnRyaW0oKSxcbiAgICAgIHNlcmllczogYC9tYW5nYS8ke2xvY2F0aW9uLnBhdGhuYW1lLnNwbGl0KCcvJylbMl19YCxcbiAgICAgIHF1YW50OiBudW0sXG4gICAgICBwcmV2OiAkKCcuaW5mbyBhOmVxKDApJykuYXR0cignaHJlZicpLFxuICAgICAgbmV4dDogJCgnLmluZm8gYTplcSgxKScpLmF0dHIoJ2hyZWYnKSxcbiAgICAgIGxpc3RQYWdlczogWy4uLkFycmF5KG51bSkua2V5cygpXS5tYXAoaSA9PiB1cmwgKyAoaSArIDEpKSxcbiAgICAgIGltZzogJy5pbWcnLFxuICAgIH07XG4gIH0sXG59O1xuIiwiLy8gPT0gTWFuZ2FSZWFkZXIgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiBbJ01hbmdhUmVhZGVyJywgJ01hbmdhUGFuZGEnXSxcbiAgdXJsOiAvaHR0cHM/OlxcL1xcLyh3d3cuKT8obWFuZ2FyZWFkZXJ8bWFuZ2FwYW5kYSkoLm5ldHwuY29tKVxcLy4rXFwvLisvLFxuICBob21lcGFnZTogWydodHRwOi8vd3d3Lm1hbmdhcmVhZGVyLm5ldC8nLCAnaHR0cDovL3d3dy5tYW5nYXBhbmRhLmNvbS8nXSxcbiAgbGFuZzogWydlbmcnXSxcbiAgY2F0ZWdvcnk6ICdtYW5nYScsXG4gIHJ1bigpIHtcbiAgICBjb25zdCB1cmwgPSBsb2NhdGlvbi5ocmVmICsgKGxvY2F0aW9uLmhyZWYubGFzdEluZGV4T2YoJy8nKSAhPT0gbG9jYXRpb24uaHJlZi5sZW5ndGggLSAxID8gJy8nIDogJycpO1xuICAgIGNvbnN0IG51bSA9IHBhcnNlSW50KCQoJ3NlbGVjdCNwYWdlTWVudSBvcHRpb246bGFzdCcpLmh0bWwoKSwgMTApO1xuICAgIGNvbnN0IGNoYXB0ZXIgPSAkKCcjbWFuZ2FpbmZvX2JhcyBhJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiAkKCcjbWFuZ2FpbmZvIGgxJykudGV4dCgpLFxuICAgICAgc2VyaWVzOiAkKCcjbWFuZ2FpbmZvIGEnKS5hdHRyKCdocmVmJyksXG4gICAgICBxdWFudDogbnVtLFxuICAgICAgcHJldjogY2hhcHRlci5sYXN0KCkuYXR0cignaHJlZicpLFxuICAgICAgbmV4dDogY2hhcHRlci5maXJzdCgpLmF0dHIoJ2hyZWYnKSxcbiAgICAgIGxpc3RQYWdlczogWy4uLkFycmF5KG51bSkua2V5cygpXS5tYXAoaSA9PiB1cmwgKyAoaSArIDEpLCBudW0pLFxuICAgICAgaW1nOiAnaW1nI2ltZycsXG4gICAgICBiZWZvcmUoKSB7XG4gICAgICAgIGlmIChsb2NhdGlvbi5wYXRobmFtZS5tYXRjaCgvXFwvLitcXC8uK1xcL2NoYXB0ZXItWzAtOV0rLiovKSkge1xuICAgICAgICAgIGNvbnN0IHBhdGggPSBsb2NhdGlvbi5wYXRobmFtZS5zcGxpdCgnLycpO1xuICAgICAgICAgIGxvY2F0aW9uLnBhdGhuYW1lID0gYC8ke3BhdGhbMl19LyR7cGF0aFszXS5tYXRjaCgvWzAtOV0rLyl9YDtcbiAgICAgICAgfSBlbHNlIGlmIChsb2NhdGlvbi5zZWFyY2gpIHtcbiAgICAgICAgICBsb2NhdGlvbi5ocmVmID0gbG9jYXRpb24ucGF0aG5hbWU7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfTtcbiAgfSxcbn07XG4iLCIvLyA9PSBNYW5nYVN0cmVhbSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdNYW5nYVN0cmVhbScsXG4gIHVybDogL2h0dHBzPzpcXC9cXC8od3d3Lik/KG1hbmdhc3RyZWFtfHJlYWRtcykoLm5ldHwuY29tKVxcL3IuKlxcLy4rLyxcbiAgaG9tZXBhZ2U6ICdodHRwOi8vbWFuZ2FzdHJlYW0uY29tLycsXG4gIGxhbmc6IFsnZW5nJ10sXG4gIGNhdGVnb3J5OiAnbWFuZ2EnLFxuICBydW4oKSB7XG4gICAgY29uc3QgdXJsID0gbG9jYXRpb24uaHJlZi5zdWJzdHJpbmcoMCwgbG9jYXRpb24uaHJlZi5sYXN0SW5kZXhPZignLycpICsgMSk7XG4gICAgY29uc3QgbnVtID0gcGFyc2VJbnQoJCgnZGl2LmNvbnRyb2xzIGRpdi5idG4tZ3JvdXAgdWwuZHJvcGRvd24tbWVudSBsaTpsYXN0JykudGV4dCgpLm1hdGNoKC9bMC05XSsvKSwgMTApO1xuICAgIGNvbnN0IGNoYXB0ZXIgPSAkKCcuZHJvcGRvd24tbWVudTplcSgxKSBhJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiAkKCcuYnRuOmVxKDApJykudGV4dCgpLnRyaW0oKSxcbiAgICAgIHNlcmllczogJCgnZGl2LmNvbnRyb2xzIGRpdi5idG4tZ3JvdXAgdWwuZHJvcGRvd24tbWVudTpmaXJzdCBsaSBhOmxhc3QnKS5hdHRyKCdocmVmJyksXG4gICAgICBxdWFudDogbnVtLFxuICAgICAgcHJldjogY2hhcHRlci5lcShjaGFwdGVyLmluZGV4KGNoYXB0ZXIuZmlsdGVyKGBbaHJlZio9JyR7bG9jYXRpb24ucGF0aG5hbWV9J11gKSkgKyAxKS5hdHRyKCdocmVmJyksXG4gICAgICBuZXh0OiBjaGFwdGVyLmVxKGNoYXB0ZXIuaW5kZXgoY2hhcHRlci5maWx0ZXIoYFtocmVmKj0nJHtsb2NhdGlvbi5wYXRobmFtZX0nXWApKSAtIDEpLmF0dHIoJ2hyZWYnKSxcbiAgICAgIGxpc3RQYWdlczogWy4uLkFycmF5KG51bSkua2V5cygpXS5tYXAoaSA9PiB1cmwgKyAoaSArIDEpKSxcbiAgICAgIGltZzogJ2ltZyNtYW5nYS1wYWdlJyxcbiAgICB9O1xuICB9LFxufTtcbiIsIi8vID09IE1hbmdhVG93biA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ01hbmdhVG93bicsXG4gIHVybDogL2h0dHBzPzpcXC9cXC8od3d3Lik/bWFuZ2F0b3duLmNvbVxcL21hbmdhXFwvLitcXC8uKy8sXG4gIGhvbWVwYWdlOiAnaHR0cDovL3d3dy5tYW5nYXRvd24uY29tLycsXG4gIGxhbmc6IFsnZW5nJ10sXG4gIGNhdGVnb3J5OiAnbWFuZ2EnLFxuICBydW4oKSB7XG4gICAgY29uc3QgbnVtID0gJCgnLnBhZ2Vfc2VsZWN0IHNlbGVjdDpmaXJzdCBvcHRpb24nKS5nZXQoKTtcbiAgICBjb25zdCBjaGFwdGVyID0gJCgnI3RvcF9jaGFwdGVyX2xpc3Qgb3B0aW9uOnNlbGVjdGVkJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiAkKCcudGl0bGUgaDEnKS50ZXh0KCksXG4gICAgICBzZXJpZXM6ICQoJy50aXRsZSBoMiBhJykuYXR0cignaHJlZicpLFxuICAgICAgcXVhbnQ6IG51bS5sZW5ndGgsXG4gICAgICBwcmV2OiBjaGFwdGVyLnByZXYoKS52YWwoKSxcbiAgICAgIG5leHQ6IGNoYXB0ZXIubmV4dCgpLnZhbCgpLFxuICAgICAgbGlzdFBhZ2VzOiBudW0ubWFwKGl0ZW0gPT4gJChpdGVtKS52YWwoKSksXG4gICAgICBpbWc6ICcjaW1hZ2UnLFxuICAgIH07XG4gIH0sXG59O1xuIiwiLy8gPT0gTmluZU1hbmdhID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnTmluZU1hbmdhJyxcbiAgdXJsOiAvaHR0cHM/OlxcL1xcLyh3d3cuKT9uaW5lbWFuZ2EuY29tXFwvY2hhcHRlclxcLy4rXFwvLitcXC5odG1sLyxcbiAgaG9tZXBhZ2U6ICdodHRwOi8vbmluZW1hbmdhLmNvbS8nLFxuICBsYW5nOiBbJ2VuZyddLFxuICBjYXRlZ29yeTogJ21hbmdhJyxcbiAgcnVuKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogJCgnLnRpcCBhOmZpcnN0JykudGV4dCgpLFxuICAgICAgc2VyaWVzOiAkKCcuc3ViZ2l1ZGUgYTplcSgxKScpLmF0dHIoJ2hyZWYnKSxcbiAgICAgIHF1YW50OiAkKCcjcGFnZTpmaXJzdCBvcHRpb24nKS5sZW5ndGgsXG4gICAgICBwcmV2OiAkKCcuY2huYXYgYTpmaXJzdCcpLmF0dHIoJ2hyZWYnKSxcbiAgICAgIG5leHQ6ICQoJy5jaG5hdiBhOmVxKDEpJykuYXR0cignaHJlZicpLFxuICAgICAgbGlzdFBhZ2VzOiAkKCcjcGFnZTpmaXJzdCBvcHRpb24nKS5nZXQoKS5tYXAoaXRlbSA9PiAkKGl0ZW0pLnZhbCgpKSxcbiAgICAgIGltZzogJy5tYW5nYV9waWMnLFxuICAgIH07XG4gIH0sXG59O1xuIiwiLy8gPT0gUmVhZE1hbmdhLlRvZGF5ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnUmVhZE1hbmdhLlRvZGF5JyxcbiAgdXJsOiAvaHR0cHM/OlxcL1xcLyh3d3cuKT9yZWFkbWFuZ2EudG9kYXlcXC8uK1xcL1swLTldKy8sXG4gIGhvbWVwYWdlOiAnaHR0cDovL3d3dy5yZWFkbWFuZ2EudG9kYXkvJyxcbiAgbGFuZzogWydlbmcnXSxcbiAgY2F0ZWdvcnk6ICdtYW5nYScsXG4gIHJ1bigpIHtcbiAgICBjb25zdCBjaGFwdGVyID0gJCgnc2VsZWN0W25hbWU9XCJjaGFwdGVyX2xpc3RcIl0gb3B0aW9uOnNlbGVjdGVkJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiAkKCd0aXRsZScpLnRleHQoKS50cmltKCksXG4gICAgICBzZXJpZXM6ICQoJy5idG46ZXEoNCknKS5hdHRyKCdocmVmJyksXG4gICAgICBxdWFudDogJCgnc2VsZWN0W25hbWU9XCJjYXRlZ29yeV90eXBlXCJdOmxhc3Qgb3B0aW9uJykuZ2V0KCkubGVuZ3RoLFxuICAgICAgcHJldjogY2hhcHRlci5uZXh0KCdvcHRpb24nKS52YWwoKSxcbiAgICAgIG5leHQ6IGNoYXB0ZXIucHJldignb3B0aW9uJykudmFsKCksXG4gICAgICBicnV0ZUZvcmNlKGZ1bmMpIHtcbiAgICAgICAgZnVuYy5nZXRQYWdlKGAke2xvY2F0aW9ufS9hbGwtcGFnZXNgKS50aGVuKChodG1sKSA9PiB7XG4gICAgICAgICAgY29uc3QgbGlzdEltYWdlcyA9ICQoaHRtbCkuZmluZCgnaW1nLmltZy1yZXNwb25zaXZlLTInKS5nZXQoKS5tYXAoaXRlbSA9PiAkKGl0ZW0pLmF0dHIoJ3NyYycpKTtcbiAgICAgICAgICBmdW5jLmxvYWRNYW5nYUltYWdlcyh7IGxpc3RJbWFnZXMgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICB9O1xuICB9LFxufTtcbiIsIi8vID09IFNlbk1hbmdhID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ1Nlbk1hbmdhKFJhdyknLFxuICB1cmw6IC9odHRwcz86XFwvXFwvcmF3LnNlbm1hbmdhLmNvbVxcLy4rXFwvLitcXC8/LyxcbiAgaG9tZXBhZ2U6ICdodHRwOi8vcmF3LnNlbm1hbmdhLmNvbS8nLFxuICBsYW5nOiBbJ2VuZyddLFxuICBjYXRlZ29yeTogJ21hbmdhJyxcbiAgcnVuKCkge1xuICAgIGNvbnN0IHVybCA9IGAvJHtsb2NhdGlvbi5wYXRobmFtZS5zcGxpdCgnLycpWzFdfS8ke2xvY2F0aW9uLnBhdGhuYW1lLnNwbGl0KCcvJylbMl19YDtcbiAgICBjb25zdCBudW0gPSBwYXJzZUludCgkKCdzZWxlY3RbbmFtZT1cXCdwYWdlXFwnXSBvcHRpb246bGFzdCcpLnZhbCgpLCAxMCk7XG4gICAgY29uc3QgY2hhcHRlciA9ICQoJ3NlbGVjdFtuYW1lPVwiY2hhcHRlclwiXSBvcHRpb246c2VsZWN0ZWQnKTtcbiAgICBjb25zdCBvcmlnaW4gPSAkKCcudGl0bGUgYScpO1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogJCgnLnRpdGxlJykudGV4dCgpLnRyaW0oKSxcbiAgICAgIHNlcmllczogb3JpZ2luLmF0dHIoJ2hyZWYnKSxcbiAgICAgIHF1YW50OiBudW0sXG4gICAgICBwcmV2OiBvcmlnaW4uYXR0cignaHJlZicpICsgY2hhcHRlci5uZXh0KCkudmFsKCksXG4gICAgICBuZXh0OiBvcmlnaW4uYXR0cignaHJlZicpICsgY2hhcHRlci5wcmV2KCkudmFsKCksXG4gICAgICBsaXN0UGFnZXM6IFsuLi5BcnJheShudW0pLmtleXMoKV0ubWFwKGkgPT4gYCR7dXJsfS8ke2kgKyAxfS9gKSxcbiAgICAgIGltZzogJyNwaWN0dXJlJyxcbiAgICAgIGJlZm9yZSgpIHtcbiAgICAgICAgJCgnYm9keScpLmNvbnRlbnRzKCkuZmlsdGVyKCgpID0+IHRoaXMubm9kZVR5cGUgPT09IDMpLnJlbW92ZSgpO1xuICAgICAgfSxcbiAgICB9O1xuICB9LFxufTtcbiIsIi8vID09IFRlbk1hbmdhID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ1Rlbk1hbmdhJyxcbiAgdXJsOiAvaHR0cHM/OlxcL1xcLyh3d3cuKT90ZW5tYW5nYS5jb21cXC9jaGFwdGVyXFwvLisvLFxuICBob21lcGFnZTogJ2h0dHA6Ly93d3cudGVubWFuZ2EuY29tLycsXG4gIGxhbmc6IFsnZW5nJ10sXG4gIGNhdGVnb3J5OiAnbWFuZ2EnLFxuICBydW4oKSB7XG4gICAgY29uc3QgdXJsID0gJCgnLnNsLXBhZ2U6Zmlyc3Qgb3B0aW9uJykuZ2V0KCk7XG4gICAgY29uc3QgY2hhcHRlciA9ICQoJy5zbC1jaGFwOmZpcnN0IG9wdGlvbjpzZWxlY3RlZCcpO1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogJCgnLnJlYWQtcGFnZSAgYTplcSgyKScpLnRleHQoKS5yZXBsYWNlKCfCuycsICcnKS50cmltKCksXG4gICAgICBzZXJpZXM6ICQoJy5yZWFkLXBhZ2UgYTplcSgxKScpLmF0dHIoJ2hyZWYnKSxcbiAgICAgIHF1YW50OiB1cmwubGVuZ3RoLFxuICAgICAgcHJldjogY2hhcHRlci5uZXh0KCkudmFsKCksXG4gICAgICBuZXh0OiBjaGFwdGVyLnByZXYoKS52YWwoKSxcbiAgICAgIGxpc3RQYWdlczogdXJsLm1hcChpdGVtID0+ICQoaXRlbSkudmFsKCkpLFxuICAgICAgaW1nOiAnLm1hbmdhX3BpYycsXG4gICAgfTtcbiAgfSxcbn07XG4iLCIvLyA9PSBUaGVTcGVjdHJ1bSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdUaGVTcGVjdHJ1bScsXG4gIHVybDogL2h0dHBzPzpcXC9cXC92aWV3LnRoZXNwZWN0cnVtLm5ldFxcLy4rLyxcbiAgaG9tZXBhZ2U6ICdodHRwOi8vd3d3LnRoZXNwZWN0cnVtLm5ldC8nLFxuICBsYW5nOiBbJ2VuZyddLFxuICBjYXRlZ29yeTogJ21hbmdhJyxcbiAgcnVuKCkge1xuICAgIGNvbnN0IHVybCA9IGAke2xvY2F0aW9uLnBhdGhuYW1lfT8keyQoJ2Zvcm0nKVxuICAgICAgLnNlcmlhbGl6ZSgpXG4gICAgICAuc3Vic3RyaW5nKDAsICQoJ2Zvcm0nKS5zZXJpYWxpemUoKS5sYXN0SW5kZXhPZignPScpKX1gO1xuICAgIGNvbnN0IG51bSA9ICQoJy5zZWxlY3RwYWdlIG9wdGlvbicpLmxlbmd0aDtcbiAgICBjb25zdCBjaGFwdGVyID0gJCgnLnNlbGVjdGNoYXB0ZXIgb3B0aW9uOnNlbGVjdGVkJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiAkKCcudmlld2VyTGFiZWw6ZXEoMSknKS50ZXh0KCksXG4gICAgICBzZXJpZXM6ICcjJyxcbiAgICAgIHF1YW50OiBudW0sXG4gICAgICBwcmV2OiBgJHtsb2NhdGlvbi5wYXRobmFtZX0/Y2g9JHtjaGFwdGVyLnByZXYoKS52YWwoKX1gLFxuICAgICAgbmV4dDogYCR7bG9jYXRpb24ucGF0aG5hbWV9P2NoPSR7Y2hhcHRlci5uZXh0KCkudmFsKCl9YCxcbiAgICAgIGxpc3RQYWdlczogWy4uLkFycmF5KG51bSkua2V5cygpXS5tYXAoaSA9PiBgJHt1cmx9PSR7aSArIDF9YCksXG4gICAgICBpbWc6ICcjaW1nQ29udGFpbmVyIGltZycsXG4gICAgfTtcbiAgfSxcbn07XG4iLCIvLyA9PSBXUE1hbmdhID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6IFsnTWFuZ2FEZWVwJ10sXG4gIHVybDogL2h0dHBzPzpcXC9cXC8od3d3Lik/KG1hbmdhc3B5fG1hbmdhZGVlcHxtYW5nYXRlZW4pLmNvbVxcLy4rXFwvWzAtOV0rLyxcbiAgaG9tZXBhZ2U6IFsnaHR0cDovL21hbmdhZGVlcC5jb20vJ10sXG4gIGxhbmc6IFsnZW5nJ10sXG4gIGNhdGVnb3J5OiAnbWFuZ2EnLFxuICBydW4oKSB7XG4gICAgY29uc3QgdXJsID0gYC8ke2xvY2F0aW9uLnBhdGhuYW1lLnNwbGl0KCcvJylbMV19LyR7bG9jYXRpb24ucGF0aG5hbWUuc3BsaXQoJy8nKVsyXX1gO1xuICAgIGNvbnN0IG51bSA9IHBhcnNlSW50KCQoJ3NlbGVjdC5jYm9fd3BtX3BhZzpmaXJzdCBvcHRpb246bGFzdCcpLmh0bWwoKSwgMTApO1xuICAgIGNvbnN0IGNoYXB0ZXIgPSAkKCcuY2JvX3dwbV9jaHAgb3B0aW9uOnNlbGVjdGVkJyk7XG4gICAgY29uc3Qga2V5ID0gJCgnLmNib193cG1fY2hwJykuYXR0cignb25jaGFuZ2UnKS5yZXBsYWNlKC9sb2NhdGlvbi5ocmVmPScvLCAnJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiAkKCcud3BtX3BhZyBoMScpLnRleHQoKS50cmltKCksXG4gICAgICBzZXJpZXM6ICQoJ2gxLnR0bCBhJykuYXR0cignaHJlZicpLFxuICAgICAgcXVhbnQ6IG51bSxcbiAgICAgIHByZXY6IGtleS5yZXBsYWNlKC8nLisvLCBjaGFwdGVyLm5leHQoKS52YWwoKSksXG4gICAgICBuZXh0OiBrZXkucmVwbGFjZSgvJy4rLywgY2hhcHRlci5wcmV2KCkudmFsKCkpLFxuICAgICAgbGlzdFBhZ2VzOiBbLi4uQXJyYXkobnVtKS5rZXlzKCldLm1hcChpID0+IGAke3VybH0vJHtpICsgMX0vYCksXG4gICAgICBpbWc6ICdpbWcubWFuZ2EtcGFnZSAsIC5wcncgPiBhIGltZywgLnBydyBhIGltZycsXG4gICAgfTtcbiAgfSxcbn07XG4iLCJpbXBvcnQgYmF0b3RvIGZyb20gJy4vYmF0b3RvJztcbmltcG9ydCBjb21pY2FzdGxlIGZyb20gJy4vY29taWNhc3RsZSc7XG5pbXBvcnQgZHlzbmF0eXNjYW5zIGZyb20gJy4vZHlzbmF0eXNjYW5zJztcbmltcG9ydCBlYXRtYW5nYSBmcm9tICcuL2VhdG1hbmdhJztcbmltcG9ydCBlZ3NjYW5zIGZyb20gJy4vZWdzY2Fucyc7XG5pbXBvcnQgZm9vbHNsaWRlIGZyb20gJy4vZm9vbHNsaWRlJztcbmltcG9ydCBraXNzbWFuZ2EgZnJvbSAnLi9raXNzbWFuZ2EnO1xuaW1wb3J0IG1hbmdhZG9vbSBmcm9tICcuL21hbmdhZG9vbSc7XG5pbXBvcnQgbWFuZ2Fmb3ggZnJvbSAnLi9tYW5nYWZveCc7XG5pbXBvcnQgbWFuZ2FnbyBmcm9tICcuL21hbmdhZ28nO1xuaW1wb3J0IG1hbmdhaGVyZSBmcm9tICcuL21hbmdhaGVyZSc7XG5pbXBvcnQgbWFuZ2Fpbm4gZnJvbSAnLi9tYW5nYWlubic7XG5pbXBvcnQgbWFuZ2FseWdodCBmcm9tICcuL21hbmdhbHlnaHQnO1xuaW1wb3J0IG1hbmdhcGFyayBmcm9tICcuL21hbmdhcGFyayc7XG5pbXBvcnQgbWFuZ2FyZWFkZXIgZnJvbSAnLi9tYW5nYXJlYWRlcic7XG5pbXBvcnQgbWFuZ2FzdHJlYW0gZnJvbSAnLi9tYW5nYXN0cmVhbSc7XG5pbXBvcnQgbWFuZ2F0b3duIGZyb20gJy4vbWFuZ2F0b3duJztcbmltcG9ydCBuaW5lbWFuZ2EgZnJvbSAnLi9uaW5lbWFuZ2EnO1xuaW1wb3J0IHJlYWRtYW5nYXRvZGF5IGZyb20gJy4vcmVhZG1hbmdhdG9kYXknO1xuaW1wb3J0IHNlbm1hbmdhIGZyb20gJy4vc2VubWFuZ2EnO1xuaW1wb3J0IHRlbm1hbmdhIGZyb20gJy4vdGVubWFuZ2EnO1xuaW1wb3J0IHRoZXNwZWN0cnVtIGZyb20gJy4vdGhlc3BlY3RydW0nO1xuaW1wb3J0IHdwbWFuZ2EgZnJvbSAnLi93cG1hbmdhJztcblxuLy8gVE9ETzogaHR0cDovL2Z1bm1hbmdhLmNvbVxuZXhwb3J0IGRlZmF1bHQgW1xuICBiYXRvdG8sXG4gIGNvbWljYXN0bGUsXG4gIGR5c25hdHlzY2FucyxcbiAgZWF0bWFuZ2EsXG4gIGVnc2NhbnMsXG4gIGZvb2xzbGlkZSxcbiAga2lzc21hbmdhLFxuICBtYW5nYWRvb20sXG4gIG1hbmdhZm94LFxuICBtYW5nYWdvLFxuICBtYW5nYWhlcmUsXG4gIG1hbmdhaW5uLFxuICBtYW5nYWx5Z2h0LFxuICBtYW5nYXBhcmssXG4gIG1hbmdhcmVhZGVyLFxuICBtYW5nYXN0cmVhbSxcbiAgbWFuZ2F0b3duLFxuICBuaW5lbWFuZ2EsXG4gIHJlYWRtYW5nYXRvZGF5LFxuICBzZW5tYW5nYSxcbiAgdGVubWFuZ2EsXG4gIHRoZXNwZWN0cnVtLFxuICB3cG1hbmdhLFxuXTtcbiIsImltcG9ydCB7XG4gIHN0YXJ0LFxufSBmcm9tICcuL3ZpZXdlcic7XG5pbXBvcnQgc2l0ZXMgZnJvbSAnLi9tYWluJztcblxuc3RhcnQoc2l0ZXMpO1xuIl0sIm5hbWVzIjpbImxvZ1NjcmlwdCIsInRleHQiLCJsb2ciLCJsb2dTY3JpcHRDIiwiUiIsImN1cnJ5IiwieCIsInkiLCJnZXRJbmZvR00iLCJHTV9pbmZvIiwiZ2V0VmFsdWVHTSIsIkdNX2dldFZhbHVlIiwibmFtZSIsImRlZmF1bHRWYWx1ZSIsInNldFZhbHVlR00iLCJHTV9zZXRWYWx1ZSIsInZhbHVlIiwiZ2V0QnJvd3NlciIsInVhIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwidGVtIiwiTSIsIm1hdGNoIiwidGVzdCIsImV4ZWMiLCJzbGljZSIsImpvaW4iLCJyZXBsYWNlIiwiYXBwTmFtZSIsImFwcFZlcnNpb24iLCJzcGxpY2UiLCJnZXRFbmdpbmUiLCJzY3JpcHRIYW5kbGVyIiwidmVyc2lvbiIsInNldHRpbmdzIiwiaWNvbiIsInNjaGVtZSIsIkNvbG9yU2NoZW1lIiwidmFyaWF0aW9uIiwiYWRkVGhlbWUiLCJ0aGVtZSIsImFkZEN1c3RvbVRoZW1lIiwiY29sb3IiLCJiZyIsImZyb21faGV4IiwiY29sb3JzIiwibG9hZFRoZW1lcyIsIkN1c3RvbVRoZW1lIiwidGhlbWVzIiwidGhlbWVzU2VsZWN0b3IiLCJtYXAiLCJUaGVtZSIsInRoZW1lc0NTUyIsInBhaW5lbCIsImVubGFnZSIsInJlc3RvcmUiLCJyZWR1Y2UiLCJmaXR3aWR0aCIsIlpvb20iLCJzaG9ydGN1dHMiLCJjb250cm9scyIsIlRpbWVyIiwiRml0V2lkdGhJZk92ZXJzaXplZCIsIlNob3dUaHVtYm5haWxzIiwiRG93bmxvYWRaaXAiLCJhbHdheXNMb2FkIiwiY2hhcHRlckNvbnRyb2wiLCJpZCIsInRhcmdldCIsIm1hbmdhIiwicHJldiIsIm5leHQiLCJjaGFwdGVyQ29udHJvbFRvcCIsImNoYXB0ZXJDb250cm9sQm90dG9tIiwidGl0bGUiLCJzZXJpZXMiLCJsaXN0UGFnZXMiLCJ0aW1lcyIsImluZGV4IiwibGlzdE9wdGlvbnMiLCJsaXN0VGh1bWJuYWlscyIsImJvZHkiLCJxdWFudCIsIm1lbnUiLCJyZWFkZXJDU1MiLCIkIiwid2luZG93Iiwid2lkdGgiLCJyZWxvYWQiLCJoaWRlIiwiem9vbWluIiwiem9vbW91dCIsInpvb21yZXN0b3JlIiwiem9vbXdpZHRoIiwiZXh0ZXJuYWxTY3JpcHRzIiwiZXh0ZXJuYWxDU1MiLCJyZWFkZXIiLCJpc0VtcHR5IiwiZWl0aGVyIiwiaXNOaWwiLCJsZW5ndGgiLCJtYXBJbmRleGVkIiwiYWRkSW5kZXgiLCJhZGRJbWciLCJzcmMiLCJhdHRyIiwicGFyZW50Iiwic2xpZGVUb2dnbGUiLCJnZXRQYWdlIiwidXJsIiwid2FpdCIsIlByb21pc2UiLCJyZXNvbHZlIiwiYWpheCIsImh0bWwiLCJsb2FkTWFuZ2FQYWdlcyIsInRpbWVyIiwidGhlbiIsInJlc3BvbnNlIiwiZmluZCIsImltZyIsImdldEltYWdlcyIsImxvYWRNYW5nYUltYWdlcyIsImxpc3RJbWFnZXMiLCJsb2FkTWFuZ2EiLCJ1bmRlZmluZWQiLCJicnV0ZUZvcmNlIiwicmVsb2FkSW1hZ2UiLCJyZW1vdmVBdHRyIiwiYXBwbHlab29tIiwicGFnZSIsIm5ld1pvb20iLCJ6b29tIiwicGFnZXMiLCJlYWNoIiwicHJvcCIsImNoZWNrSW1hZ2VzTG9hZGVkIiwiaW1hZ2VzIiwiZ2V0IiwidG90YWwiLCJtaXNzaW5nIiwiZmlsdGVyIiwiaXRlbSIsImxvYWRlZCIsImZvckVhY2giLCJjb25maWd1cmUiLCJzZXQiLCJjbGljayIsImNhY2hlIiwiSlNaaXAiLCJjdXN0b21CYXNlNjRFbmNvZGUiLCJpbnB1dFN0ciIsImJiTGVuIiwiZW5DaGFyTGVuIiwiaW5wTGVuIiwiaW54Iiwiam54Iiwia2V5U3RyIiwib3V0cHV0IiwicGFkZGluZ0J5dGVzIiwiYnl0ZWJ1ZmZlciIsIkFycmF5IiwiZW5jb2RlZENoYXJJbmRleGVzIiwiY2hhckNvZGVBdCIsImNoYXJBdCIsImdlbmVyYXRlWmlwIiwiZG93bmxvYWRGaWxlcyIsImZpbGVuYW1lIiwiU3RyaW5nIiwiaW5kZXhPZiIsImJhc2U2NCIsImkiLCJzdWJzdHJpbmciLCJ6aXAiLCJmaWxlIiwiZSIsInJlc3BvbnNlVGV4dCIsInBhcnNlSW50IiwiYmxvYkxpbmsiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiZG93bmxvYWQiLCJ0cmltIiwiZ2VuZXJhdGVBc3luYyIsImNvbnRlbnQiLCJocmVmIiwiVyIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImlubmVySFRNTCIsInNldEtleURvd25FdmVudHMiLCJ1bmJpbmQiLCJvbmtleWRvd24iLCJvbmtleXByZXNzIiwib25sb2FkIiwicHJvY2Vzc0tleSIsImEiLCJrZXlDb2RlIiwid2hpY2giLCJpbkFycmF5IiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLCJrZXlwcmVzcyIsImtleWRvd24iLCJjaGFuZ2UiLCJldmVudCIsInRvZ2dsZUNsYXNzIiwiaXMiLCJvbmUiLCJ2YWwiLCJyZW1vdmVDbGFzcyIsImFkZENsYXNzIiwic2hvdyIsInJlbW92ZSIsImFwcGVuZCIsInNjcm9sbFRvRWxlbWVudCIsImVsZSIsInNjcm9sbFRvcCIsIm9mZnNldCIsInRvcCIsInNjcm9sbExlZnQiLCJsZWZ0IiwiYmluZCIsInBhcmVudHMiLCJyYXRpbyIsImZvcm1hdFBhZ2UiLCJzdG9wIiwiY2FuY2VsIiwiaXNDb25maXJtIiwiYmVmb3JlIiwiZG9jdW1lbnRFbGVtZW50Iiwic3RhcnQiLCJzaXRlcyIsInNjcmlwdCIsIndhaXRFeGVjIiwic2l0ZSIsIndhaXRFbGUiLCJ3YWl0QXR0ciIsIndhaXRWYXIiLCJydW4iLCJjb21wb3NlIiwibG9jYXRpb24iLCJudW0iLCJrZXlzIiwiaGFzaCIsImNoYXB0ZXIiLCJpbWFnZSIsInNwbGl0IiwiaW1nX3VybCIsInByZXZfY2hhcCIsIm5leHRfY2hhcCIsIkltYWdlIiwidGVtcCIsInN1YnN0ciIsImxhc3RJbmRleE9mIiwiZXEiLCJwYXRobmFtZSIsIm9yaWdpbiIsImxhc3QiLCJsc3RJbWFnZXMiLCJmaXJzdCIsInBhdGgiLCJzZWFyY2giLCJmdW5jIiwiY29udGVudHMiLCJub2RlVHlwZSIsInNlcmlhbGl6ZSIsImtleSIsImJhdG90byIsImNvbWljYXN0bGUiLCJkeXNuYXR5c2NhbnMiLCJlYXRtYW5nYSIsImVnc2NhbnMiLCJmb29sc2xpZGUiLCJraXNzbWFuZ2EiLCJtYW5nYWRvb20iLCJtYW5nYWZveCIsIm1hbmdhZ28iLCJtYW5nYWhlcmUiLCJtYW5nYWlubiIsIm1hbmdhbHlnaHQiLCJtYW5nYXBhcmsiLCJtYW5nYXJlYWRlciIsIm1hbmdhc3RyZWFtIiwibWFuZ2F0b3duIiwibmluZW1hbmdhIiwicmVhZG1hbmdhdG9kYXkiLCJzZW5tYW5nYSIsInRlbm1hbmdhIiwidGhlc3BlY3RydW0iLCJ3cG1hbmdhIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7OztBQUdBLFNBQVNBLFNBQVQsQ0FBbUIsR0FBR0MsSUFBdEIsRUFBNEI7O1VBRWxCQyxHQUFSLENBQVksb0JBQVosRUFBa0MsR0FBR0QsSUFBckM7U0FDT0EsSUFBUDs7O0FBR0Ys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