(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o1&&"flex-start"===e.style.alignContent)for(t=0;l=e.lines[++n];)l.crossStart=t,t+=l.cross;else if(e.lines.length>1&&"flex-end"===e.style.alignContent)for(t=e.flexStyle.crossSpace;l=e.lines[++n];)l.crossStart=t,t+=l.cross;else if(e.lines.length>1&&"center"===e.style.alignContent)for(t=e.flexStyle.crossSpace/2;l=e.lines[++n];)l.crossStart=t,t+=l.cross;else if(e.lines.length>1&&"space-between"===e.style.alignContent)for(r=e.flexStyle.crossSpace/(e.lines.length-1),t=0;l=e.lines[++n];)l.crossStart=t,t+=l.cross+r;else if(e.lines.length>1&&"space-around"===e.style.alignContent)for(r=2*e.flexStyle.crossSpace/(2*e.lines.length),t=r/2;l=e.lines[++n];)l.crossStart=t,t+=l.cross+r;else for(r=e.flexStyle.crossSpace/e.lines.length,t=e.flexStyle.crossInnerBefore;l=e.lines[++n];)l.crossStart=t,l.cross+=r,t+=l.cross}},{}],2:[function(e,t,r){t.exports=function(e){for(var t,r=-1;line=e.lines[++r];)for(t=-1;child=line.children[++t];){var l=child.style.alignSelf;"auto"===l&&(l=e.style.alignItems),"flex-start"===l?child.flexStyle.crossStart=line.crossStart:"flex-end"===l?child.flexStyle.crossStart=line.crossStart+line.cross-child.flexStyle.crossOuter:"center"===l?child.flexStyle.crossStart=line.crossStart+(line.cross-child.flexStyle.crossOuter)/2:(child.flexStyle.crossStart=line.crossStart,child.flexStyle.crossOuter=line.cross,child.flexStyle.cross=child.flexStyle.crossOuter-child.flexStyle.crossBefore-child.flexStyle.crossAfter)}}},{}],3:[function(e,t,r){t.exports=function l(e,l){var t="row"===l||"row-reverse"===l,r=e.mainAxis;if(r){var n=t&&"inline"===r||!t&&"block"===r;n||(e.flexStyle={main:e.flexStyle.cross,cross:e.flexStyle.main,mainOffset:e.flexStyle.crossOffset,crossOffset:e.flexStyle.mainOffset,mainBefore:e.flexStyle.crossBefore,mainAfter:e.flexStyle.crossAfter,crossBefore:e.flexStyle.mainBefore,crossAfter:e.flexStyle.mainAfter,mainInnerBefore:e.flexStyle.crossInnerBefore,mainInnerAfter:e.flexStyle.crossInnerAfter,crossInnerBefore:e.flexStyle.mainInnerBefore,crossInnerAfter:e.flexStyle.mainInnerAfter,mainBorderBefore:e.flexStyle.crossBorderBefore,mainBorderAfter:e.flexStyle.crossBorderAfter,crossBorderBefore:e.flexStyle.mainBorderBefore,crossBorderAfter:e.flexStyle.mainBorderAfter})}else t?e.flexStyle={main:e.style.width,cross:e.style.height,mainOffset:e.style.offsetWidth,crossOffset:e.style.offsetHeight,mainBefore:e.style.marginLeft,mainAfter:e.style.marginRight,crossBefore:e.style.marginTop,crossAfter:e.style.marginBottom,mainInnerBefore:e.style.paddingLeft,mainInnerAfter:e.style.paddingRight,crossInnerBefore:e.style.paddingTop,crossInnerAfter:e.style.paddingBottom,mainBorderBefore:e.style.borderLeftWidth,mainBorderAfter:e.style.borderRightWidth,crossBorderBefore:e.style.borderTopWidth,crossBorderAfter:e.style.borderBottomWidth}:e.flexStyle={main:e.style.height,cross:e.style.width,mainOffset:e.style.offsetHeight,crossOffset:e.style.offsetWidth,mainBefore:e.style.marginTop,mainAfter:e.style.marginBottom,crossBefore:e.style.marginLeft,crossAfter:e.style.marginRight,mainInnerBefore:e.style.paddingTop,mainInnerAfter:e.style.paddingBottom,crossInnerBefore:e.style.paddingLeft,crossInnerAfter:e.style.paddingRight,mainBorderBefore:e.style.borderTopWidth,mainBorderAfter:e.style.borderBottomWidth,crossBorderBefore:e.style.borderLeftWidth,crossBorderAfter:e.style.borderRightWidth},"content-box"===e.style.boxSizing&&("number"==typeof e.flexStyle.main&&(e.flexStyle.main+=e.flexStyle.mainInnerBefore+e.flexStyle.mainInnerAfter+e.flexStyle.mainBorderBefore+e.flexStyle.mainBorderAfter),"number"==typeof e.flexStyle.cross&&(e.flexStyle.cross+=e.flexStyle.crossInnerBefore+e.flexStyle.crossInnerAfter+e.flexStyle.crossBorderBefore+e.flexStyle.crossBorderAfter));e.mainAxis=t?"inline":"block",e.crossAxis=t?"block":"inline","number"==typeof e.style.flexBasis&&(e.flexStyle.main=e.style.flexBasis+e.flexStyle.mainInnerBefore+e.flexStyle.mainInnerAfter+e.flexStyle.mainBorderBefore+e.flexStyle.mainBorderAfter),e.flexStyle.mainOuter=e.flexStyle.main,e.flexStyle.crossOuter=e.flexStyle.cross,"auto"===e.flexStyle.mainOuter&&(e.flexStyle.mainOuter=e.flexStyle.mainOffset),"auto"===e.flexStyle.crossOuter&&(e.flexStyle.crossOuter=e.flexStyle.crossOffset),"number"==typeof e.flexStyle.mainBefore&&(e.flexStyle.mainOuter+=e.flexStyle.mainBefore),"number"==typeof e.flexStyle.mainAfter&&(e.flexStyle.mainOuter+=e.flexStyle.mainAfter),"number"==typeof e.flexStyle.crossBefore&&(e.flexStyle.crossOuter+=e.flexStyle.crossBefore),"number"==typeof e.flexStyle.crossAfter&&(e.flexStyle.crossOuter+=e.flexStyle.crossAfter)}},{}],4:[function(e,t,r){var l=e("../reduce");t.exports=function(e){if(e.mainSpace>0){var t=l(e.children,function(e,t){return e+parseFloat(t.style.flexGrow)},0);t>0&&(e.main=l(e.children,function(r,l){return"auto"===l.flexStyle.main?l.flexStyle.main=l.flexStyle.mainOffset+parseFloat(l.style.flexGrow)/t*e.mainSpace:l.flexStyle.main+=parseFloat(l.style.flexGrow)/t*e.mainSpace,l.flexStyle.mainOuter=l.flexStyle.main+l.flexStyle.mainBefore+l.flexStyle.mainAfter,r+l.flexStyle.mainOuter},0),e.mainSpace=0)}}},{"../reduce":12}],5:[function(e,t,r){var l=e("../reduce");t.exports=function(e){if(e.mainSpace<0){var t=l(e.children,function(e,t){return e+parseFloat(t.style.flexShrink)},0);t>0&&(e.main=l(e.children,function(r,l){return l.flexStyle.main+=parseFloat(l.style.flexShrink)/t*e.mainSpace,l.flexStyle.mainOuter=l.flexStyle.main+l.flexStyle.mainBefore+l.flexStyle.mainAfter,r+l.flexStyle.mainOuter},0),e.mainSpace=0)}}},{"../reduce":12}],6:[function(e,t,r){var l=e("../reduce");t.exports=function(e){var t;e.lines=[t={main:0,cross:0,children:[]}];for(var r,n=-1;r=e.children[++n];)"nowrap"===e.style.flexWrap||0===t.children.length||"auto"===e.flexStyle.main||e.flexStyle.main-e.flexStyle.mainInnerBefore-e.flexStyle.mainInnerAfter-e.flexStyle.mainBorderBefore-e.flexStyle.mainBorderAfter>=t.main+r.flexStyle.mainOuter?(t.main+=r.flexStyle.mainOuter,t.cross=Math.max(t.cross,r.flexStyle.crossOuter)):e.lines.push(t={main:r.flexStyle.mainOuter,cross:r.flexStyle.crossOuter,children:[]}),t.children.push(r);e.flexStyle.mainLines=l(e.lines,function(e,t){return Math.max(e,t.main)},0),e.flexStyle.crossLines=l(e.lines,function(e,t){return e+t.cross},0),"auto"===e.flexStyle.main&&(e.flexStyle.main=Math.max(e.flexStyle.mainOffset,e.flexStyle.mainLines+e.flexStyle.mainInnerBefore+e.flexStyle.mainInnerAfter+e.flexStyle.mainBorderBefore+e.flexStyle.mainBorderAfter)),"auto"===e.flexStyle.cross&&(e.flexStyle.cross=Math.max(e.flexStyle.crossOffset,e.flexStyle.crossLines+e.flexStyle.crossInnerBefore+e.flexStyle.crossInnerAfter+e.flexStyle.crossBorderBefore+e.flexStyle.crossBorderAfter)),e.flexStyle.crossSpace=e.flexStyle.cross-e.flexStyle.crossInnerBefore-e.flexStyle.crossInnerAfter-e.flexStyle.crossBorderBefore-e.flexStyle.crossBorderAfter-e.flexStyle.crossLines,e.flexStyle.mainOuter=e.flexStyle.main+e.flexStyle.mainBefore+e.flexStyle.mainAfter,e.flexStyle.crossOuter=e.flexStyle.cross+e.flexStyle.crossBefore+e.flexStyle.crossAfter}},{"../reduce":12}],7:[function(e,t,r){function l(t){for(var r,l=-1;r=t.children[++l];)e("./flex-direction")(r,t.style.flexDirection);e("./flex-direction")(t,t.style.flexDirection),e("./order")(t),e("./flexbox-lines")(t),e("./align-content")(t),l=-1;for(var n;n=t.lines[++l];)n.mainSpace=t.flexStyle.main-t.flexStyle.mainInnerBefore-t.flexStyle.mainInnerAfter-t.flexStyle.mainBorderBefore-t.flexStyle.mainBorderAfter-n.main,e("./flex-grow")(n),e("./flex-shrink")(n),e("./margin-main")(n),e("./margin-cross")(n),e("./justify-content")(n,t.style.justifyContent,t);e("./align-items")(t)}t.exports=l},{"./align-content":1,"./align-items":2,"./flex-direction":3,"./flex-grow":4,"./flex-shrink":5,"./flexbox-lines":6,"./justify-content":8,"./margin-cross":9,"./margin-main":10,"./order":11}],8:[function(e,t,r){t.exports=function(e,t,r){var l,n,o,f=r.flexStyle.mainInnerBefore,i=-1;if("flex-end"===t)for(l=e.mainSpace,l+=f;o=e.children[++i];)o.flexStyle.mainStart=l,l+=o.flexStyle.mainOuter;else if("center"===t)for(l=e.mainSpace/2,l+=f;o=e.children[++i];)o.flexStyle.mainStart=l,l+=o.flexStyle.mainOuter;else if("space-between"===t)for(n=e.mainSpace/(e.children.length-1),l=0,l+=f;o=e.children[++i];)o.flexStyle.mainStart=l,l+=o.flexStyle.mainOuter+n;else if("space-around"===t)for(n=2*e.mainSpace/(2*e.children.length),l=n/2,l+=f;o=e.children[++i];)o.flexStyle.mainStart=l,l+=o.flexStyle.mainOuter+n;else for(l=0,l+=f;o=e.children[++i];)o.flexStyle.mainStart=l,l+=o.flexStyle.mainOuter}},{}],9:[function(e,t,r){t.exports=function(e){for(var t,r=-1;t=e.children[++r];){var l=0;"auto"===t.flexStyle.crossBefore&&++l,"auto"===t.flexStyle.crossAfter&&++l;var n=e.cross-t.flexStyle.crossOuter;"auto"===t.flexStyle.crossBefore&&(t.flexStyle.crossBefore=n/l),"auto"===t.flexStyle.crossAfter&&(t.flexStyle.crossAfter=n/l),"auto"===t.flexStyle.cross?t.flexStyle.crossOuter=t.flexStyle.crossOffset+t.flexStyle.crossBefore+t.flexStyle.crossAfter:t.flexStyle.crossOuter=t.flexStyle.cross+t.flexStyle.crossBefore+t.flexStyle.crossAfter}}},{}],10:[function(e,t,r){t.exports=function(e){for(var t,r=0,l=-1;t=e.children[++l];)"auto"===t.flexStyle.mainBefore&&++r,"auto"===t.flexStyle.mainAfter&&++r;if(r>0){for(l=-1;t=e.children[++l];)"auto"===t.flexStyle.mainBefore&&(t.flexStyle.mainBefore=e.mainSpace/r),"auto"===t.flexStyle.mainAfter&&(t.flexStyle.mainAfter=e.mainSpace/r),"auto"===t.flexStyle.main?t.flexStyle.mainOuter=t.flexStyle.mainOffset+t.flexStyle.mainBefore+t.flexStyle.mainAfter:t.flexStyle.mainOuter=t.flexStyle.main+t.flexStyle.mainBefore+t.flexStyle.mainAfter;e.mainSpace=0}}},{}],11:[function(e,t,r){var l=/^(column|row)-reverse$/;t.exports=function(e){e.children.sort(function(e,t){return e.style.order-t.style.order||e.index-t.index}),l.test(e.style.flexDirection)&&e.children.reverse()}},{}],12:[function(e,t,r){function l(e,t,r){for(var l=e.length,n=-1;++nlah' // The rendered string // , index: 2 // The index of the element in `arr` // , original: 'blah' // The original element in `arr` // }] // // `opts` is an optional argument bag. Details: // // opts = { // // string to put before a matching character // pre: '' // // // string to put after matching character // , post: '' // // // Optional function. Input is an entry in the given arr`, // // output should be the string to test `pattern` against. // // In this example, if `arr = [{crying: 'koala'}]` we would return // // 'koala'. // , extract: function(arg) { return arg.crying; } // } fuzzy.filter = function(pattern, arr, opts) { if(!arr || arr.length === 0) { return []; } if (typeof pattern !== 'string') { return arr; } opts = opts || {}; return arr .reduce(function(prev, element, idx, arr) { var str = element; if(opts.extract) { str = opts.extract(element); } var rendered = fuzzy.match(pattern, str, opts); if(rendered != null) { prev[prev.length] = { string: rendered.rendered , score: rendered.score , index: idx , original: element }; } return prev; }, []) // Sort by score. Browsers are inconsistent wrt stable/unstable // sorting, so force stable by using the index in the case of tie. // See http://ofb.net/~sethml/is-sort-stable.html .sort(function(a,b) { var compare = b.score - a.score; if(compare) return compare; return a.index - b.index; }); }; }()); },{}],4:[function(require,module,exports){ /* This program is free software. It comes without any warranty, to * the extent permitted by applicable law. You can redistribute it * and/or modify it under the terms of the Do What The Fuck You Want * To Public License, Version 2, as published by Sam Hocevar. See * http://www.wtfpl.net/ for more details. */ 'use strict'; module.exports = leftPad; var cache = [ '', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' ]; function leftPad (str, len, ch) { // convert `str` to `string` str = str + ''; // `len` is the `pad`'s length now len = len - str.length; // doesn't need to pad if (len <= 0) return str; // `ch` defaults to `' '` if (!ch && ch !== 0) ch = ' '; // convert `ch` to `string` ch = ch + ''; // cache common use cases if (ch === ' ' && len < 10) return cache[len] + str; // `pad` starts with an empty string var pad = ''; // loop while (true) { // add `ch` to `pad` if `len` is odd if (len & 1) pad += ch; // divide `len` by 2, ditch the remainder len >>= 1; // "double" the `ch` so this operation count grows logarithmically on `len` // each time `ch` is "doubled", the `len` would need to be "doubled" too // similar to finding a value in binary search tree, hence O(log(n)) if (len) ch += ch; // `len` is 0, exit the loop else break; } // pad `str`! return pad + str; } },{}],5:[function(require,module,exports){ 'use strict'; var sinterklaas = function sinterklaas() { console.log('sinterklaas easter egg activated'); var searchNode = document.querySelector('#search'); var inputNode = searchNode.querySelector('input[type="text"]'); var autocompleteNode = document.querySelector('.autocomplete'); var autocomplete = false; var lyrics = [[{ woord: 'Hoor ', time: 0 }, { woord: 'wie ', time: 0.3 }, { woord: 'klopt ', time: 0.6 }, { woord: 'daar ', time: 0.9 }, { woord: 'kind', time: 1.2 }, { woord: '\'ren', time: 1.5 }], [{ woord: 'Hoor ', time: 1.8 }, { woord: 'wie ', time: 2.1 }, { woord: 'klopt ', time: 2.5 }, { woord: 'daar ', time: 2.8 }, { woord: 'kind', time: 3.1 }, { woord: '\'ren', time: 3.4 }], [{ woord: 'Hoor ', time: 3.7 }, { woord: 'wie ', time: 4 }, { woord: 'tikt ', time: 4.3 }, { woord: 'daar ', time: 4.6 }, { woord: 'zacht', time: 4.8 }, { woord: 'jes ', time: 5.3 }, { woord: 'tegen ', time: 5.5 }, { woord: '\'t ', time: 6.1 }, { woord: 'raam ', time: 6.2 }]]; var originalValue = inputNode.value; inputNode.value = ''; inputNode.placeholder = ''; lyrics.forEach(function (row, rowIndex) { row.forEach(function (word, wordIndex) { setTimeout(function () { if (wordIndex === 0) inputNode.placeholder = ''; inputNode.placeholder += word.woord; }, word.time * 1000); if (lyrics.length === rowIndex + 1 && lyrics[rowIndex].length === wordIndex + 1) { setTimeout(function () { if (inputNode.value === '') { inputNode.value = originalValue; } inputNode.placeholder = 'Zoeken'; autocomplete = true; }, word.time * 1000 + 1000); } }); }); inputNode.addEventListener('focus', function () { if (!autocomplete) return; autocompleteNode.innerHTML = ''; var autocompleteLyrics = ['\'t Is een vreemd\'ling zeker,', 'die verdwaalt is zeker.', '\'k Zal eens even vragen naar zijn naam:']; autocompleteLyrics.forEach(function (row) { var resultNode = document.createElement('li'); resultNode.innerHTML = row; autocompleteNode.appendChild(resultNode); }); }); inputNode.addEventListener('input', function () { if (!autocomplete) return; if (inputNode.value.toLowerCase() === 'sint nicolaas' || inputNode.value.toLowerCase() === 'sintnicolaas' || inputNode.value.toLowerCase() === 'sint nikolaas' || inputNode.value.toLowerCase() === 'sintnikolaas') { inputNode.value = ''; window.location.href = 'https://www.youtube-nocookie.com/embed/jsOiKJ3kKXM?start=30'; } }); }; module.exports = { sinterklaas: sinterklaas }; },{}],6:[function(require,module,exports){ 'use strict'; var leftPad = require('left-pad'); var getWeek = require('./getWeek'); function getURLOfUsers(weekOffset, type, id) { return '//' + window.location.host + '/meetingpointProxy/Roosters-AL%2Fdoc%2Fdagroosters%2F' + (getWeek() + weekOffset + '%2F' + type + '%2F' + type + leftPad(id, 5, '0') + '.htm'); } module.exports = getURLOfUsers; },{"./getWeek":7,"left-pad":4}],7:[function(require,module,exports){ "use strict"; // copied from http://www.meetingpointmco.nl/Roosters-AL/doc/dagroosters/untisscripts.js, // were using the same code as they do to be sure that we always get the same // week number. function getWeek() { // Create a copy of this date object var target = new Date(); // ISO week date weeks start on monday // so correct the day number var dayNr = (target.getDay() + 6) % 7; // ISO 8601 states that week 1 is the week // with the first thursday of that year. // Set the target date to the thursday in the target week target.setDate(target.getDate() - dayNr + 3); // Store the millisecond value of the target date var firstThursday = target.valueOf(); // Set the target to the first thursday of the year // First set the target to january first target.setMonth(0, 1); // Not a thursday? Correct the date to the next thursday if (target.getDay() !== 4) { target.setMonth(0, 1 + (4 - target.getDay() + 7) % 7); } // The weeknumber is the number of weeks between the // first thursday of the year and the thursday in the target week return 1 + Math.ceil((firstThursday - target) / 604800000); // 604800000 = 7 * 24 * 3600 * 1000 } module.exports = getWeek; },{}],8:[function(require,module,exports){ 'use strict'; /* global ga FLAGS USERS */ require('flexibility'); var fuzzy = require('fuzzy'); // const getUsers = require('./getUsers') var getURLOfUser = require('./getURLOfUser'); var removeDiacritics = require('diacritics').remove; var getWeek = require('./getWeek'); var easterEggs = require('./easterEggs'); var searchNode = document.querySelector('#search'); var inputNode = searchNode.querySelector('input[type="text"]'); var autocompleteNode = document.querySelector('.autocomplete'); var scheduleIframe = document.querySelector('#schedule'); var prevButton = document.querySelectorAll('#week-selector button')[0]; var nextButton = document.querySelectorAll('#week-selector button')[1]; var currentWeekNode = document.querySelector('.current'); var favNode = document.querySelector('.fav'); if (FLAGS.indexOf('NO_FEATURE_DETECT') === -1) { if (document.querySelector('#schedule').getClientRects()[0].bottom !== document.body.getClientRects()[0].bottom) { window.location = 'http://www.meetingpointmco.nl/Roosters-AL/doc/'; } else { window.onerror = function () { window.location = 'http://www.meetingpointmco.nl/Roosters-AL/doc/'; }; } } else { console.log('feature detection is OFF'); } var selectedResult = -1; var selectedUser = void 0; var results = []; var offset = 0; function getCurrentFav() { if (!window.localStorage.getItem('fav')) return; var favCode = window.localStorage.getItem('fav').split(':'); var fav = USERS.filter(function (user) { return user.type === favCode[0] && user.index === Number(favCode[1]); }); return fav[0]; } function changeFav(isFav) { if (!selectedUser) return; if (isFav) { window.localStorage.setItem('fav', selectedUser.type + ':' + selectedUser.index); } else { window.localStorage.removeItem('fav'); } updateFavNode(); } function usersEqual(user1, user2) { if (user1 == null || user2 == null) return false; return user1.type === user2.type && user1.index === user2.index; } function updateFavNode() { if (usersEqual(getCurrentFav(), selectedUser)) { favNode.innerHTML = ''; } else { favNode.innerHTML = ''; } } function updateWeekText() { if (offset === 0) currentWeekNode.innerHTML = 'Week ' + (getWeek() + offset);else currentWeekNode.innerHTML = 'Week ' + (getWeek() + offset) + ''; } updateWeekText(); searchNode.addEventListener('keydown', function (e) { if (results.length !== 0 && (e.key === 'ArrowDown' || e.key === 'ArrowUp')) { e.preventDefault(); if (document.querySelector('.selected')) document.querySelector('.selected').classList.remove('selected'); var change = e.key === 'ArrowDown' ? 1 : -1; selectedResult += change; if (selectedResult < -1) selectedResult = results.length - 1;else if (selectedResult > results.length - 1) selectedResult = -1; if (selectedResult !== -1) autocompleteNode.children[selectedResult].classList.add('selected'); } }); searchNode.addEventListener('input', function (e) { document.body.classList.remove('no-input'); autocompleteNode.innerHTML = ''; if (inputNode.value.trim() === '') return; selectedResult = -1; results = fuzzy.filter(removeDiacritics(inputNode.value), USERS, { extract: function extract(el) { return removeDiacritics(el.value); } }).slice(0, 7); results.forEach(function (result) { var resultNode = document.createElement('li'); resultNode.innerHTML = '' + result.original.value; autocompleteNode.appendChild(resultNode); }); }); searchNode.addEventListener('submit', submitForm); function submitForm(e) { if (e) e.preventDefault(); if (results.length !== 0) { var indexInResult = selectedResult === -1 ? 0 : selectedResult; selectedUser = USERS[results[indexInResult].index]; } if (selectedUser == null) return; document.body.classList.add('searched'); updateFavNode(); inputNode.value = selectedUser.value; autocompleteNode.innerHTML = ''; inputNode.blur(); scheduleIframe.src = getURLOfUser(offset, selectedUser.type, selectedUser.index + 1); var eventAction = void 0; switch (selectedUser.type) { case 'c': eventAction = 'Class'; break; case 't': eventAction = 'Teacher'; break; case 'r': eventAction = 'Room'; break; case 's': eventAction = 'Student'; break; } var eventLabel = selectedUser.value; ga(function () { ga('send', { hitType: 'event', eventCategory: 'search', eventAction: eventAction, eventLabel: eventLabel }); }); } autocompleteNode.addEventListener('click', function (e) { if (autocompleteNode.contains(e.target)) { selectedResult = Array.prototype.indexOf.call(e.target.parentElement.childNodes, e.target); submitForm(); } }); prevButton.addEventListener('click', function () { offset--; updateWeekText(); submitForm(); }); nextButton.addEventListener('click', function () { offset++; updateWeekText(); submitForm(); }); inputNode.addEventListener('click', function () { inputNode.select(); }); window.addEventListener('blur', function () { // this will removed the selection without drawing focus on it (safari) // this will removed selection even when focusing an iframe (chrome) var oldValue = inputNode.value; inputNode.value = ''; inputNode.value = oldValue; }); searchNode.addEventListener('blur', function (e) { autocompleteNode.innerHTML = ''; }); favNode.addEventListener('click', function () { if (usersEqual(getCurrentFav(), selectedUser)) { changeFav(false); } else { changeFav(true); } }); var currentFav = getCurrentFav(); if (currentFav) { (function () { selectedUser = currentFav; inputNode.value = selectedUser.value; scheduleIframe.src = getURLOfUser(offset, selectedUser.type, selectedUser.index + 1); updateFavNode(); var eventAction = void 0; switch (selectedUser.type) { case 'c': eventAction = 'Class'; break; case 't': eventAction = 'Teacher'; break; case 'r': eventAction = 'Room'; break; case 's': eventAction = 'Student'; break; } var eventLabel = selectedUser.value; ga(function () { ga('send', { hitType: 'event', eventCategory: 'search fav', eventAction: eventAction, eventLabel: eventLabel }); }); })(); } else if (inputNode.value === '') { document.body.classList.add('no-input'); inputNode.focus(); } document.body.style.opacity = '1'; window.easterEggs = easterEggs; },{"./easterEggs":5,"./getURLOfUser":6,"./getWeek":7,"diacritics":1,"flexibility":2,"fuzzy":3}]},{},[8]) //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZGlhY3JpdGljcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mbGV4aWJpbGl0eS9mbGV4aWJpbGl0eS5qcyIsIm5vZGVfbW9kdWxlcy9mdXp6eS9saWIvZnV6enkuanMiLCJub2RlX21vZHVsZXMvbGVmdC1wYWQvaW5kZXguanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZWFzdGVyRWdncy5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9nZXRVUkxPZlVzZXIuanMiLCJwdWJsaWMvamF2YXNjcmlwdHMvZ2V0V2Vlay5qcyIsInB1YmxpYy9qYXZhc2NyaXB0cy9tYWluLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDelRBOzs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEpBO0FBQ0E7QUFDQTtBQUNBO0FB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QXBCIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsImV4cG9ydHMucmVtb3ZlID0gcmVtb3ZlRGlhY3JpdGljcztcblxudmFyIHJlcGxhY2VtZW50TGlzdCA9IFtcbiAge1xuICAgIGJhc2U6ICcgJyxcbiAgICBjaGFyczogXCJcXHUwMEEwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnMCcsXG4gICAgY2hhcnM6IFwiXFx1MDdDMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0EnLFxuICAgIGNoYXJzOiBcIlxcdTI0QjZcXHVGRjIxXFx1MDBDMFxcdTAwQzFcXHUwMEMyXFx1MUVBNlxcdTFFQTRcXHUxRUFBXFx1MUVBOFxcdTAwQzNcXHUwMTAwXFx1MDEwMlxcdTFFQjBcXHUxRUFFXFx1MUVCNFxcdTFFQjJcXHUwMjI2XFx1MDFFMFxcdTAwQzRcXHUwMURFXFx1MUVBMlxcdTAwQzVcXHUwMUZBXFx1MDFDRFxcdTAyMDBcXHUwMjAyXFx1MUVBMFxcdTFFQUNcXHUxRUI2XFx1MUUwMFxcdTAxMDRcXHUwMjNBXFx1MkM2RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FBJyxcbiAgICBjaGFyczogXCJcXHVBNzMyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQUUnLFxuICAgIGNoYXJzOiBcIlxcdTAwQzZcXHUwMUZDXFx1MDFFMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0FPJyxcbiAgICBjaGFyczogXCJcXHVBNzM0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnQVUnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBVicsXG4gICAgY2hhcnM6IFwiXFx1QTczOFxcdUE3M0FcIixcbiAgfSwge1xuICAgIGJhc2U6ICdBWScsXG4gICAgY2hhcnM6IFwiXFx1QTczQ1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0InLFxuICAgIGNoYXJzOiBcIlxcdTI0QjdcXHVGRjIyXFx1MUUwMlxcdTFFMDRcXHUxRTA2XFx1MDI0M1xcdTAxODFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdDJyxcbiAgICBjaGFyczogXCJcXHUyNGI4XFx1ZmYyM1xcdUE3M0VcXHUxRTA4XFx1MDEwNlxcdTAwNDNcXHUwMTA4XFx1MDEwQVxcdTAxMENcXHUwMEM3XFx1MDE4N1xcdTAyM0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEJyxcbiAgICBjaGFyczogXCJcXHUyNEI5XFx1RkYyNFxcdTFFMEFcXHUwMTBFXFx1MUUwQ1xcdTFFMTBcXHUxRTEyXFx1MUUwRVxcdTAxMTBcXHUwMThBXFx1MDE4OVxcdTFEMDVcXHVBNzc5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRGgnLFxuICAgIGNoYXJzOiBcIlxcdTAwRDBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEWicsXG4gICAgY2hhcnM6IFwiXFx1MDFGMVxcdTAxQzRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdEeicsXG4gICAgY2hhcnM6IFwiXFx1MDFGMlxcdTAxQzVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdFJyxcbiAgICBjaGFyczogXCJcXHUwMjVCXFx1MjRCQVxcdUZGMjVcXHUwMEM4XFx1MDBDOVxcdTAwQ0FcXHUxRUMwXFx1MUVCRVxcdTFFQzRcXHUxRUMyXFx1MUVCQ1xcdTAxMTJcXHUxRTE0XFx1MUUxNlxcdTAxMTRcXHUwMTE2XFx1MDBDQlxcdTFFQkFcXHUwMTFBXFx1MDIwNFxcdTAyMDZcXHUxRUI4XFx1MUVDNlxcdTAyMjhcXHUxRTFDXFx1MDExOFxcdTFFMThcXHUxRTFBXFx1MDE5MFxcdTAxOEVcXHUxRDA3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRicsXG4gICAgY2hhcnM6IFwiXFx1QTc3Q1xcdTI0QkJcXHVGRjI2XFx1MUUxRVxcdTAxOTFcXHVBNzdCXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnRycsXG4gICAgY2hhcnM6IFwiXFx1MjRCQ1xcdUZGMjdcXHUwMUY0XFx1MDExQ1xcdTFFMjBcXHUwMTFFXFx1MDEyMFxcdTAxRTZcXHUwMTIyXFx1MDFFNFxcdTAxOTNcXHVBN0EwXFx1QTc3RFxcdUE3N0VcXHUwMjYyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSCcsXG4gICAgY2hhcnM6IFwiXFx1MjRCRFxcdUZGMjhcXHUwMTI0XFx1MUUyMlxcdTFFMjZcXHUwMjFFXFx1MUUyNFxcdTFFMjhcXHUxRTJBXFx1MDEyNlxcdTJDNjdcXHUyQzc1XFx1QTc4RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ0knLFxuICAgIGNoYXJzOiBcIlxcdTI0QkVcXHVGRjI5XFx4Q0NcXHhDRFxceENFXFx1MDEyOFxcdTAxMkFcXHUwMTJDXFx1MDEzMFxceENGXFx1MUUyRVxcdTFFQzhcXHUwMUNGXFx1MDIwOFxcdTAyMEFcXHUxRUNBXFx1MDEyRVxcdTFFMkNcXHUwMTk3XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnSicsXG4gICAgY2hhcnM6IFwiXFx1MjRCRlxcdUZGMkFcXHUwMTM0XFx1MDI0OFxcdTAyMzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdLJyxcbiAgICBjaGFyczogXCJcXHUyNEMwXFx1RkYyQlxcdTFFMzBcXHUwMUU4XFx1MUUzMlxcdTAxMzZcXHUxRTM0XFx1MDE5OFxcdTJDNjlcXHVBNzQwXFx1QTc0MlxcdUE3NDRcXHVBN0EyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDMVxcdUZGMkNcXHUwMTNGXFx1MDEzOVxcdTAxM0RcXHUxRTM2XFx1MUUzOFxcdTAxM0JcXHUxRTNDXFx1MUUzQVxcdTAxNDFcXHUwMjNEXFx1MkM2MlxcdTJDNjBcXHVBNzQ4XFx1QTc0NlxcdUE3ODBcIixcbiAgfSwge1xuICAgIGJhc2U6ICdMSicsXG4gICAgY2hhcnM6IFwiXFx1MDFDN1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ0xqJyxcbiAgICBjaGFyczogXCJcXHUwMUM4XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTScsXG4gICAgY2hhcnM6IFwiXFx1MjRDMlxcdUZGMkRcXHUxRTNFXFx1MUU0MFxcdTFFNDJcXHUyQzZFXFx1MDE5Q1xcdTAzRkJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdOJyxcbiAgICBjaGFyczogXCJcXHVBN0E0XFx1MDIyMFxcdTI0QzNcXHVGRjJFXFx1MDFGOFxcdTAxNDNcXHhEMVxcdTFFNDRcXHUwMTQ3XFx1MUU0NlxcdTAxNDVcXHUxRTRBXFx1MUU0OFxcdTAxOURcXHVBNzkwXFx1MUQwRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ05KJyxcbiAgICBjaGFyczogXCJcXHUwMUNBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnTmonLFxuICAgIGNoYXJzOiBcIlxcdTAxQ0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPJyxcbiAgICBjaGFyczogXCJcXHUyNEM0XFx1RkYyRlxceEQyXFx4RDNcXHhENFxcdTFFRDJcXHUxRUQwXFx1MUVENlxcdTFFRDRcXHhENVxcdTFFNENcXHUwMjJDXFx1MUU0RVxcdTAxNENcXHUxRTUwXFx1MUU1MlxcdTAxNEVcXHUwMjJFXFx1MDIzMFxceEQ2XFx1MDIyQVxcdTFFQ0VcXHUwMTUwXFx1MDFEMVxcdTAyMENcXHUwMjBFXFx1MDFBMFxcdTFFRENcXHUxRURBXFx1MUVFMFxcdTFFREVcXHUxRUUyXFx1MUVDQ1xcdTFFRDhcXHUwMUVBXFx1MDFFQ1xceEQ4XFx1MDFGRVxcdTAxODZcXHUwMTlGXFx1QTc0QVxcdUE3NENcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPRScsXG4gICAgY2hhcnM6IFwiXFx1MDE1MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ09JJyxcbiAgICBjaGFyczogXCJcXHUwMUEyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnT08nLFxuICAgIGNoYXJzOiBcIlxcdUE3NEVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdPVScsXG4gICAgY2hhcnM6IFwiXFx1MDIyMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1AnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzVcXHVGRjMwXFx1MUU1NFxcdTFFNTZcXHUwMUE0XFx1MkM2M1xcdUE3NTBcXHVBNzUyXFx1QTc1NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1EnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzZcXHVGRjMxXFx1QTc1NlxcdUE3NThcXHUwMjRBXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnUicsXG4gICAgY2hhcnM6IFwiXFx1MjRDN1xcdUZGMzJcXHUwMTU0XFx1MUU1OFxcdTAxNThcXHUwMjEwXFx1MDIxMlxcdTFFNUFcXHUxRTVDXFx1MDE1NlxcdTFFNUVcXHUwMjRDXFx1MkM2NFxcdUE3NUFcXHVBN0E2XFx1QTc4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1MnLFxuICAgIGNoYXJzOiBcIlxcdTI0QzhcXHVGRjMzXFx1MUU5RVxcdTAxNUFcXHUxRTY0XFx1MDE1Q1xcdTFFNjBcXHUwMTYwXFx1MUU2NlxcdTFFNjJcXHUxRTY4XFx1MDIxOFxcdTAxNUVcXHUyQzdFXFx1QTdBOFxcdUE3ODRcIixcbiAgfSwge1xuICAgIGJhc2U6ICdUJyxcbiAgICBjaGFyczogXCJcXHUyNEM5XFx1RkYzNFxcdTFFNkFcXHUwMTY0XFx1MUU2Q1xcdTAyMUFcXHUwMTYyXFx1MUU3MFxcdTFFNkVcXHUwMTY2XFx1MDFBQ1xcdTAxQUVcXHUwMjNFXFx1QTc4NlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1RoJyxcbiAgICBjaGFyczogXCJcXHUwMERFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVFonLFxuICAgIGNoYXJzOiBcIlxcdUE3MjhcIixcbiAgfSwge1xuICAgIGJhc2U6ICdVJyxcbiAgICBjaGFyczogXCJcXHUyNENBXFx1RkYzNVxceEQ5XFx4REFcXHhEQlxcdTAxNjhcXHUxRTc4XFx1MDE2QVxcdTFFN0FcXHUwMTZDXFx4RENcXHUwMURCXFx1MDFEN1xcdTAxRDVcXHUwMUQ5XFx1MUVFNlxcdTAxNkVcXHUwMTcwXFx1MDFEM1xcdTAyMTRcXHUwMjE2XFx1MDFBRlxcdTFFRUFcXHUxRUU4XFx1MUVFRVxcdTFFRUNcXHUxRUYwXFx1MUVFNFxcdTFFNzJcXHUwMTcyXFx1MUU3NlxcdTFFNzRcXHUwMjQ0XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVicsXG4gICAgY2hhcnM6IFwiXFx1MjRDQlxcdUZGMzZcXHUxRTdDXFx1MUU3RVxcdTAxQjJcXHVBNzVFXFx1MDI0NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1ZZJyxcbiAgICBjaGFyczogXCJcXHVBNzYwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnVycsXG4gICAgY2hhcnM6IFwiXFx1MjRDQ1xcdUZGMzdcXHUxRTgwXFx1MUU4MlxcdTAxNzRcXHUxRTg2XFx1MUU4NFxcdTFFODhcXHUyQzcyXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnWCcsXG4gICAgY2hhcnM6IFwiXFx1MjRDRFxcdUZGMzhcXHUxRThBXFx1MUU4Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ1knLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0VcXHVGRjM5XFx1MUVGMlxceEREXFx1MDE3NlxcdTFFRjhcXHUwMjMyXFx1MUU4RVxcdTAxNzhcXHUxRUY2XFx1MUVGNFxcdTAxQjNcXHUwMjRFXFx1MUVGRVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ1onLFxuICAgIGNoYXJzOiBcIlxcdTI0Q0ZcXHVGRjNBXFx1MDE3OVxcdTFFOTBcXHUwMTdCXFx1MDE3RFxcdTFFOTJcXHUxRTk0XFx1MDFCNVxcdTAyMjRcXHUyQzdGXFx1MkM2QlxcdUE3NjJcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhJyxcbiAgICBjaGFyczogXCJcXHUyNEQwXFx1RkY0MVxcdTFFOUFcXHUwMEUwXFx1MDBFMVxcdTAwRTJcXHUxRUE3XFx1MUVBNVxcdTFFQUJcXHUxRUE5XFx1MDBFM1xcdTAxMDFcXHUwMTAzXFx1MUVCMVxcdTFFQUZcXHUxRUI1XFx1MUVCM1xcdTAyMjdcXHUwMUUxXFx1MDBFNFxcdTAxREZcXHUxRUEzXFx1MDBFNVxcdTAxRkJcXHUwMUNFXFx1MDIwMVxcdTAyMDNcXHUxRUExXFx1MUVBRFxcdTFFQjdcXHUxRTAxXFx1MDEwNVxcdTJDNjVcXHUwMjUwXFx1MDI1MVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FhJyxcbiAgICBjaGFyczogXCJcXHVBNzMzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYWUnLFxuICAgIGNoYXJzOiBcIlxcdTAwRTZcXHUwMUZEXFx1MDFFM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2FvJyxcbiAgICBjaGFyczogXCJcXHVBNzM1XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnYXUnLFxuICAgIGNoYXJzOiBcIlxcdUE3MzdcIixcbiAgfSwge1xuICAgIGJhc2U6ICdhdicsXG4gICAgY2hhcnM6IFwiXFx1QTczOVxcdUE3M0JcIixcbiAgfSwge1xuICAgIGJhc2U6ICdheScsXG4gICAgY2hhcnM6IFwiXFx1QTczRFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2InLFxuICAgIGNoYXJzOiBcIlxcdTI0RDFcXHVGRjQyXFx1MUUwM1xcdTFFMDVcXHUxRTA3XFx1MDE4MFxcdTAxODNcXHUwMjUzXFx1MDE4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2MnLFxuICAgIGNoYXJzOiBcIlxcdUZGNDNcXHUyNEQyXFx1MDEwN1xcdTAxMDlcXHUwMTBCXFx1MDEwRFxcdTAwRTdcXHUxRTA5XFx1MDE4OFxcdTAyM0NcXHVBNzNGXFx1MjE4NFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2QnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDNcXHVGRjQ0XFx1MUUwQlxcdTAxMEZcXHUxRTBEXFx1MUUxMVxcdTFFMTNcXHUxRTBGXFx1MDExMVxcdTAxOENcXHUwMjU2XFx1MDI1N1xcdTAxOEJcXHUxM0U3XFx1MDUwMVxcdUE3QUFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdkaCcsXG4gICAgY2hhcnM6IFwiXFx1MDBGMFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2R6JyxcbiAgICBjaGFyczogXCJcXHUwMUYzXFx1MDFDNlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2UnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDRcXHVGRjQ1XFx1MDBFOFxcdTAwRTlcXHUwMEVBXFx1MUVDMVxcdTFFQkZcXHUxRUM1XFx1MUVDM1xcdTFFQkRcXHUwMTEzXFx1MUUxNVxcdTFFMTdcXHUwMTE1XFx1MDExN1xcdTAwRUJcXHUxRUJCXFx1MDExQlxcdTAyMDVcXHUwMjA3XFx1MUVCOVxcdTFFQzdcXHUwMjI5XFx1MUUxRFxcdTAxMTlcXHUxRTE5XFx1MUUxQlxcdTAyNDdcXHUwMUREXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZicsXG4gICAgY2hhcnM6IFwiXFx1MjRENVxcdUZGNDZcXHUxRTFGXFx1MDE5MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmJyxcbiAgICBjaGFyczogXCJcXHVGQjAwXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnZmknLFxuICAgIGNoYXJzOiBcIlxcdUZCMDFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdmbCcsXG4gICAgY2hhcnM6IFwiXFx1RkIwMlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmaScsXG4gICAgY2hhcnM6IFwiXFx1RkIwM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ2ZmbCcsXG4gICAgY2hhcnM6IFwiXFx1RkIwNFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2cnLFxuICAgIGNoYXJzOiBcIlxcdTI0RDZcXHVGRjQ3XFx1MDFGNVxcdTAxMURcXHUxRTIxXFx1MDExRlxcdTAxMjFcXHUwMUU3XFx1MDEyM1xcdTAxRTVcXHUwMjYwXFx1QTdBMVxcdUE3N0ZcXHUxRDc5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaCcsXG4gICAgY2hhcnM6IFwiXFx1MjREN1xcdUZGNDhcXHUwMTI1XFx1MUUyM1xcdTFFMjdcXHUwMjFGXFx1MUUyNVxcdTFFMjlcXHUxRTJCXFx1MUU5NlxcdTAxMjdcXHUyQzY4XFx1MkM3NlxcdTAyNjVcIixcbiAgfSwge1xuICAgIGJhc2U6ICdodicsXG4gICAgY2hhcnM6IFwiXFx1MDE5NVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2knLFxuICAgIGNoYXJzOiBcIlxcdTI0RDhcXHVGRjQ5XFx4RUNcXHhFRFxceEVFXFx1MDEyOVxcdTAxMkJcXHUwMTJEXFx4RUZcXHUxRTJGXFx1MUVDOVxcdTAxRDBcXHUwMjA5XFx1MDIwQlxcdTFFQ0JcXHUwMTJGXFx1MUUyRFxcdTAyNjhcXHUwMTMxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnaicsXG4gICAgY2hhcnM6IFwiXFx1MjREOVxcdUZGNEFcXHUwMTM1XFx1MDFGMFxcdTAyNDlcIixcbiAgfSwge1xuICAgIGJhc2U6ICdrJyxcbiAgICBjaGFyczogXCJcXHUyNERBXFx1RkY0QlxcdTFFMzFcXHUwMUU5XFx1MUUzM1xcdTAxMzdcXHUxRTM1XFx1MDE5OVxcdTJDNkFcXHVBNzQxXFx1QTc0M1xcdUE3NDVcXHVBN0EzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbCcsXG4gICAgY2hhcnM6IFwiXFx1MjREQlxcdUZGNENcXHUwMTQwXFx1MDEzQVxcdTAxM0VcXHUxRTM3XFx1MUUzOVxcdTAxM0NcXHUxRTNEXFx1MUUzQlxcdTAxN0ZcXHUwMTQyXFx1MDE5QVxcdTAyNkJcXHUyQzYxXFx1QTc0OVxcdUE3ODFcXHVBNzQ3XFx1MDI2RFwiLFxuICB9LCB7XG4gICAgYmFzZTogJ2xqJyxcbiAgICBjaGFyczogXCJcXHUwMUM5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnbScsXG4gICAgY2hhcnM6IFwiXFx1MjREQ1xcdUZGNERcXHUxRTNGXFx1MUU0MVxcdTFFNDNcXHUwMjcxXFx1MDI2RlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ24nLFxuICAgIGNoYXJzOiBcIlxcdTI0RERcXHVGRjRFXFx1MDFGOVxcdTAxNDRcXHhGMVxcdTFFNDVcXHUwMTQ4XFx1MUU0N1xcdTAxNDZcXHUxRTRCXFx1MUU0OVxcdTAxOUVcXHUwMjcyXFx1MDE0OVxcdUE3OTFcXHVBN0E1XFx1MDQzQlxcdTA1MDlcIixcbiAgfSwge1xuICAgIGJhc2U6ICduaicsXG4gICAgY2hhcnM6IFwiXFx1MDFDQ1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ28nLFxuICAgIGNoYXJzOiBcIlxcdTI0REVcXHVGRjRGXFx4RjJcXHhGM1xceEY0XFx1MUVEM1xcdTFFRDFcXHUxRUQ3XFx1MUVENVxceEY1XFx1MUU0RFxcdTAyMkRcXHUxRTRGXFx1MDE0RFxcdTFFNTFcXHUxRTUzXFx1MDE0RlxcdTAyMkZcXHUwMjMxXFx4RjZcXHUwMjJCXFx1MUVDRlxcdTAxNTFcXHUwMUQyXFx1MDIwRFxcdTAyMEZcXHUwMUExXFx1MUVERFxcdTFFREJcXHUxRUUxXFx1MUVERlxcdTFFRTNcXHUxRUNEXFx1MUVEOVxcdTAxRUJcXHUwMUVEXFx4RjhcXHUwMUZGXFx1QTc0QlxcdUE3NERcXHUwMjc1XFx1MDI1NFxcdTFEMTFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvZScsXG4gICAgY2hhcnM6IFwiXFx1MDE1M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ29pJyxcbiAgICBjaGFyczogXCJcXHUwMUEzXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAnb28nLFxuICAgIGNoYXJzOiBcIlxcdUE3NEZcIixcbiAgfSwge1xuICAgIGJhc2U6ICdvdScsXG4gICAgY2hhcnM6IFwiXFx1MDIyM1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3AnLFxuICAgIGNoYXJzOiBcIlxcdTI0REZcXHVGRjUwXFx1MUU1NVxcdTFFNTdcXHUwMUE1XFx1MUQ3RFxcdUE3NTFcXHVBNzUzXFx1QTc1NVxcdTAzQzFcIixcbiAgfSwge1xuICAgIGJhc2U6ICdxJyxcbiAgICBjaGFyczogXCJcXHUyNEUwXFx1RkY1MVxcdTAyNEJcXHVBNzU3XFx1QTc1OVwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3InLFxuICAgIGNoYXJzOiBcIlxcdTI0RTFcXHVGRjUyXFx1MDE1NVxcdTFFNTlcXHUwMTU5XFx1MDIxMVxcdTAyMTNcXHUxRTVCXFx1MUU1RFxcdTAxNTdcXHUxRTVGXFx1MDI0RFxcdTAyN0RcXHVBNzVCXFx1QTdBN1xcdUE3ODNcIixcbiAgfSwge1xuICAgIGJhc2U6ICdzJyxcbiAgICBjaGFyczogXCJcXHUyNEUyXFx1RkY1M1xcdTAxNUJcXHUxRTY1XFx1MDE1RFxcdTFFNjFcXHUwMTYxXFx1MUU2N1xcdTFFNjNcXHUxRTY5XFx1MDIxOVxcdTAxNUZcXHUwMjNGXFx1QTdBOVxcdUE3ODVcXHUxRTlCXFx1MDI4MlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3NzJyxcbiAgICBjaGFyczogXCJcXHhERlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3QnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTNcXHVGRjU0XFx1MUU2QlxcdTFFOTdcXHUwMTY1XFx1MUU2RFxcdTAyMUJcXHUwMTYzXFx1MUU3MVxcdTFFNkZcXHUwMTY3XFx1MDFBRFxcdTAyODhcXHUyQzY2XFx1QTc4N1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3RoJyxcbiAgICBjaGFyczogXCJcXHUwMEZFXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndHonLFxuICAgIGNoYXJzOiBcIlxcdUE3MjlcIixcbiAgfSwge1xuICAgIGJhc2U6ICd1JyxcbiAgICBjaGFyczogXCJcXHUyNEU0XFx1RkY1NVxceEY5XFx4RkFcXHhGQlxcdTAxNjlcXHUxRTc5XFx1MDE2QlxcdTFFN0JcXHUwMTZEXFx4RkNcXHUwMURDXFx1MDFEOFxcdTAxRDZcXHUwMURBXFx1MUVFN1xcdTAxNkZcXHUwMTcxXFx1MDFENFxcdTAyMTVcXHUwMjE3XFx1MDFCMFxcdTFFRUJcXHUxRUU5XFx1MUVFRlxcdTFFRURcXHUxRUYxXFx1MUVFNVxcdTFFNzNcXHUwMTczXFx1MUU3N1xcdTFFNzVcXHUwMjg5XCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndicsXG4gICAgY2hhcnM6IFwiXFx1MjRFNVxcdUZGNTZcXHUxRTdEXFx1MUU3RlxcdTAyOEJcXHVBNzVGXFx1MDI4Q1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3Z5JyxcbiAgICBjaGFyczogXCJcXHVBNzYxXCIsXG4gIH0sIHtcbiAgICBiYXNlOiAndycsXG4gICAgY2hhcnM6IFwiXFx1MjRFNlxcdUZGNTdcXHUxRTgxXFx1MUU4M1xcdTAxNzVcXHUxRTg3XFx1MUU4NVxcdTFFOThcXHUxRTg5XFx1MkM3M1wiLFxuICB9LCB7XG4gICAgYmFzZTogJ3gnLFxuICAgIGNoYXJzOiBcIlxcdTI0RTdcXHVGRjU4XFx1MUU4QlxcdTFFOERcIixcbiAgfSwge1xuICAgIGJhc2U6ICd5JyxcbiAgICBjaGFyczogXCJcXHUyNEU4XFx1RkY1OVxcdTFFRjNcXHhGRFxcdTAxNzdcXHUxRUY5XFx1MDIzM1xcdTFFOEZcXHhGRlxcdTFFRjdcXHUxRTk5XFx1MUVGNVxcdTAxQjRcXHUwMjRGXFx1MUVGRlwiLFxuICB9LCB7XG4gICAgYmFzZTogJ3onLFxuICAgIGNoYXJzOiBcIlxcdTI0RTlcXHVGRjVBXFx1MDE3QVxcdTFFOTFcXHUwMTdDXFx1MDE3RVxcdTFFOTNcXHUxRTk1XFx1MDFCNlxcdTAyMjVcXHUwMjQwXFx1MkM2Q1xcdUE3NjNcIixcbiAgfVxuXTtcblxudmFyIGRpYWNyaXRpY3NNYXAgPSB7fTtcbmZvciAodmFyIGkgPSAwOyBpIDwgcmVwbGFjZW1lbnRMaXN0Lmxlbmd0aDsgaSArPSAxKSB7XG4gIHZhciBjaGFycyA9IHJlcGxhY2VtZW50TGlzdFtpXS5jaGFycztcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBjaGFycy5sZW5ndGg7IGogKz0gMSkge1xuICAgIGRpYWNyaXRpY3NNYXBbY2hhcnNbal1dID0gcmVwbGFjZW1lbnRMaXN0W2ldLmJhc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlRGlhY3JpdGljcyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bXlxcdTAwMDAtXFx1MDA3ZV0vZywgZnVuY3Rpb24oYykge1xuICAgIHJldHVybiBkaWFjcml0aWNzTWFwW2NdIHx8IGM7XG4gIH0pO1xufVxuIiwiIWZ1bmN0aW9uKGUpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPWUoKTtlbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10sZSk7ZWxzZXt2YXIgdDt0PVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OlwidW5kZWZpbmVkXCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZWxmP3NlbGY6dGhpcyx0LmZsZXhpYmlsaXR5PWUoKX19KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGUodCxyLGwpe2Z1bmN0aW9uIG4oZixpKXtpZighcltmXSl7aWYoIXRbZl0pe3ZhciBzPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWkmJnMpcmV0dXJuIHMoZiwhMCk7aWYobylyZXR1cm4gbyhmLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2YrXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBjPXJbZl09e2V4cG9ydHM6e319O3RbZl1bMF0uY2FsbChjLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIHI9dFtmXVsxXVtlXTtyZXR1cm4gbihyP3I6ZSl9LGMsYy5leHBvcnRzLGUsdCxyLGwpfXJldHVybiByW2ZdLmV4cG9ydHN9Zm9yKHZhciBvPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsZj0wO2Y8bC5sZW5ndGg7ZisrKW4obFtmXSk7cmV0dXJuIG59KHsxOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0LHIsbCxuPS0xO2lmKGUubGluZXMubGVuZ3RoPjEmJlwiZmxleC1zdGFydFwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9MDtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsdCs9bC5jcm9zcztlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwiZmxleC1lbmRcIj09PWUuc3R5bGUuYWxpZ25Db250ZW50KWZvcih0PWUuZmxleFN0eWxlLmNyb3NzU3BhY2U7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3M7ZWxzZSBpZihlLmxpbmVzLmxlbmd0aD4xJiZcImNlbnRlclwiPT09ZS5zdHlsZS5hbGlnbkNvbnRlbnQpZm9yKHQ9ZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZS8yO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzO2Vsc2UgaWYoZS5saW5lcy5sZW5ndGg+MSYmXCJzcGFjZS1iZXR3ZWVuXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3Iocj1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlLyhlLmxpbmVzLmxlbmd0aC0xKSx0PTA7bD1lLmxpbmVzWysrbl07KWwuY3Jvc3NTdGFydD10LHQrPWwuY3Jvc3MrcjtlbHNlIGlmKGUubGluZXMubGVuZ3RoPjEmJlwic3BhY2UtYXJvdW5kXCI9PT1lLnN0eWxlLmFsaWduQ29udGVudClmb3Iocj0yKmUuZmxleFN0eWxlLmNyb3NzU3BhY2UvKDIqZS5saW5lcy5sZW5ndGgpLHQ9ci8yO2w9ZS5saW5lc1srK25dOylsLmNyb3NzU3RhcnQ9dCx0Kz1sLmNyb3NzK3I7ZWxzZSBmb3Iocj1lLmZsZXhTdHlsZS5jcm9zc1NwYWNlL2UubGluZXMubGVuZ3RoLHQ9ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZTtsPWUubGluZXNbKytuXTspbC5jcm9zc1N0YXJ0PXQsbC5jcm9zcys9cix0Kz1sLmNyb3NzfX0se31dLDI6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9LTE7bGluZT1lLmxpbmVzWysrcl07KWZvcih0PS0xO2NoaWxkPWxpbmUuY2hpbGRyZW5bKyt0XTspe3ZhciBsPWNoaWxkLnN0eWxlLmFsaWduU2VsZjtcImF1dG9cIj09PWwmJihsPWUuc3R5bGUuYWxpZ25JdGVtcyksXCJmbGV4LXN0YXJ0XCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydDpcImZsZXgtZW5kXCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCtsaW5lLmNyb3NzLWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyOlwiY2VudGVyXCI9PT1sP2NoaWxkLmZsZXhTdHlsZS5jcm9zc1N0YXJ0PWxpbmUuY3Jvc3NTdGFydCsobGluZS5jcm9zcy1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NPdXRlcikvMjooY2hpbGQuZmxleFN0eWxlLmNyb3NzU3RhcnQ9bGluZS5jcm9zc1N0YXJ0LGNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyPWxpbmUuY3Jvc3MsY2hpbGQuZmxleFN0eWxlLmNyb3NzPWNoaWxkLmZsZXhTdHlsZS5jcm9zc091dGVyLWNoaWxkLmZsZXhTdHlsZS5jcm9zc0JlZm9yZS1jaGlsZC5mbGV4U3R5bGUuY3Jvc3NBZnRlcil9fX0se31dLDM6W2Z1bmN0aW9uKGUsdCxyKXt0LmV4cG9ydHM9ZnVuY3Rpb24gbChlLGwpe3ZhciB0PVwicm93XCI9PT1sfHxcInJvdy1yZXZlcnNlXCI9PT1sLHI9ZS5tYWluQXhpcztpZihyKXt2YXIgbj10JiZcImlubGluZVwiPT09cnx8IXQmJlwiYmxvY2tcIj09PXI7bnx8KGUuZmxleFN0eWxlPXttYWluOmUuZmxleFN0eWxlLmNyb3NzLGNyb3NzOmUuZmxleFN0eWxlLm1haW4sbWFpbk9mZnNldDplLmZsZXhTdHlsZS5jcm9zc09mZnNldCxjcm9zc09mZnNldDplLmZsZXhTdHlsZS5tYWluT2Zmc2V0LG1haW5CZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUsbWFpbkFmdGVyOmUuZmxleFN0eWxlLmNyb3NzQWZ0ZXIsY3Jvc3NCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbkJlZm9yZSxjcm9zc0FmdGVyOmUuZmxleFN0eWxlLm1haW5BZnRlcixtYWluSW5uZXJCZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZSxtYWluSW5uZXJBZnRlcjplLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIsY3Jvc3NJbm5lckJlZm9yZTplLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUsY3Jvc3NJbm5lckFmdGVyOmUuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLG1haW5Cb3JkZXJCZWZvcmU6ZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUsbWFpbkJvcmRlckFmdGVyOmUuZmxleFN0eWxlLmNyb3NzQm9yZGVyQWZ0ZXIsY3Jvc3NCb3JkZXJCZWZvcmU6ZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZSxjcm9zc0JvcmRlckFmdGVyOmUuZmxleFN0eWxlLm1haW5Cb3JkZXJBZnRlcn0pfWVsc2UgdD9lLmZsZXhTdHlsZT17bWFpbjplLnN0eWxlLndpZHRoLGNyb3NzOmUuc3R5bGUuaGVpZ2h0LG1haW5PZmZzZXQ6ZS5zdHlsZS5vZmZzZXRXaWR0aCxjcm9zc09mZnNldDplLnN0eWxlLm9mZnNldEhlaWdodCxtYWluQmVmb3JlOmUuc3R5bGUubWFyZ2luTGVmdCxtYWluQWZ0ZXI6ZS5zdHlsZS5tYXJnaW5SaWdodCxjcm9zc0JlZm9yZTplLnN0eWxlLm1hcmdpblRvcCxjcm9zc0FmdGVyOmUuc3R5bGUubWFyZ2luQm90dG9tLG1haW5Jbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdMZWZ0LG1haW5Jbm5lckFmdGVyOmUuc3R5bGUucGFkZGluZ1JpZ2h0LGNyb3NzSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nVG9wLGNyb3NzSW5uZXJBZnRlcjplLnN0eWxlLnBhZGRpbmdCb3R0b20sbWFpbkJvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlckxlZnRXaWR0aCxtYWluQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJSaWdodFdpZHRoLGNyb3NzQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyVG9wV2lkdGgsY3Jvc3NCb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlckJvdHRvbVdpZHRofTplLmZsZXhTdHlsZT17bWFpbjplLnN0eWxlLmhlaWdodCxjcm9zczplLnN0eWxlLndpZHRoLG1haW5PZmZzZXQ6ZS5zdHlsZS5vZmZzZXRIZWlnaHQsY3Jvc3NPZmZzZXQ6ZS5zdHlsZS5vZmZzZXRXaWR0aCxtYWluQmVmb3JlOmUuc3R5bGUubWFyZ2luVG9wLG1haW5BZnRlcjplLnN0eWxlLm1hcmdpbkJvdHRvbSxjcm9zc0JlZm9yZTplLnN0eWxlLm1hcmdpbkxlZnQsY3Jvc3NBZnRlcjplLnN0eWxlLm1hcmdpblJpZ2h0LG1haW5Jbm5lckJlZm9yZTplLnN0eWxlLnBhZGRpbmdUb3AsbWFpbklubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nQm90dG9tLGNyb3NzSW5uZXJCZWZvcmU6ZS5zdHlsZS5wYWRkaW5nTGVmdCxjcm9zc0lubmVyQWZ0ZXI6ZS5zdHlsZS5wYWRkaW5nUmlnaHQsbWFpbkJvcmRlckJlZm9yZTplLnN0eWxlLmJvcmRlclRvcFdpZHRoLG1haW5Cb3JkZXJBZnRlcjplLnN0eWxlLmJvcmRlckJvdHRvbVdpZHRoLGNyb3NzQm9yZGVyQmVmb3JlOmUuc3R5bGUuYm9yZGVyTGVmdFdpZHRoLGNyb3NzQm9yZGVyQWZ0ZXI6ZS5zdHlsZS5ib3JkZXJSaWdodFdpZHRofSxcImNvbnRlbnQtYm94XCI9PT1lLnN0eWxlLmJveFNpemluZyYmKFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluJiYoZS5mbGV4U3R5bGUubWFpbis9ZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3MmJihlLmZsZXhTdHlsZS5jcm9zcys9ZS5mbGV4U3R5bGUuY3Jvc3NJbm5lckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0lubmVyQWZ0ZXIrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUuY3Jvc3NCb3JkZXJBZnRlcikpO2UubWFpbkF4aXM9dD9cImlubGluZVwiOlwiYmxvY2tcIixlLmNyb3NzQXhpcz10P1wiYmxvY2tcIjpcImlubGluZVwiLFwibnVtYmVyXCI9PXR5cGVvZiBlLnN0eWxlLmZsZXhCYXNpcyYmKGUuZmxleFN0eWxlLm1haW49ZS5zdHlsZS5mbGV4QmFzaXMrZS5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlK2UuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyK2UuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyKSxlLmZsZXhTdHlsZS5tYWluT3V0ZXI9ZS5mbGV4U3R5bGUubWFpbixlLmZsZXhTdHlsZS5jcm9zc091dGVyPWUuZmxleFN0eWxlLmNyb3NzLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbk91dGVyJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW5PZmZzZXQpLFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUuY3Jvc3NPdXRlciYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXI9ZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5tYWluQmVmb3JlJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyKz1lLmZsZXhTdHlsZS5tYWluQmVmb3JlKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUubWFpbkFmdGVyJiYoZS5mbGV4U3R5bGUubWFpbk91dGVyKz1lLmZsZXhTdHlsZS5tYWluQWZ0ZXIpLFwibnVtYmVyXCI9PXR5cGVvZiBlLmZsZXhTdHlsZS5jcm9zc0JlZm9yZSYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXIrPWUuZmxleFN0eWxlLmNyb3NzQmVmb3JlKSxcIm51bWJlclwiPT10eXBlb2YgZS5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKGUuZmxleFN0eWxlLmNyb3NzT3V0ZXIrPWUuZmxleFN0eWxlLmNyb3NzQWZ0ZXIpfX0se31dLDQ6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlLm1haW5TcGFjZT4wKXt2YXIgdD1sKGUuY2hpbGRyZW4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZStwYXJzZUZsb2F0KHQuc3R5bGUuZmxleEdyb3cpfSwwKTt0PjAmJihlLm1haW49bChlLmNoaWxkcmVuLGZ1bmN0aW9uKHIsbCl7cmV0dXJuXCJhdXRvXCI9PT1sLmZsZXhTdHlsZS5tYWluP2wuZmxleFN0eWxlLm1haW49bC5mbGV4U3R5bGUubWFpbk9mZnNldCtwYXJzZUZsb2F0KGwuc3R5bGUuZmxleEdyb3cpL3QqZS5tYWluU3BhY2U6bC5mbGV4U3R5bGUubWFpbis9cGFyc2VGbG9hdChsLnN0eWxlLmZsZXhHcm93KS90KmUubWFpblNwYWNlLGwuZmxleFN0eWxlLm1haW5PdXRlcj1sLmZsZXhTdHlsZS5tYWluK2wuZmxleFN0eWxlLm1haW5CZWZvcmUrbC5mbGV4U3R5bGUubWFpbkFmdGVyLHIrbC5mbGV4U3R5bGUubWFpbk91dGVyfSwwKSxlLm1haW5TcGFjZT0wKX19fSx7XCIuLi9yZWR1Y2VcIjoxMn1dLDU6W2Z1bmN0aW9uKGUsdCxyKXt2YXIgbD1lKFwiLi4vcmVkdWNlXCIpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlLm1haW5TcGFjZTwwKXt2YXIgdD1sKGUuY2hpbGRyZW4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZStwYXJzZUZsb2F0KHQuc3R5bGUuZmxleFNocmluayl9LDApO3Q+MCYmKGUubWFpbj1sKGUuY2hpbGRyZW4sZnVuY3Rpb24ocixsKXtyZXR1cm4gbC5mbGV4U3R5bGUubWFpbis9cGFyc2VGbG9hdChsLnN0eWxlLmZsZXhTaHJpbmspL3QqZS5tYWluU3BhY2UsbC5mbGV4U3R5bGUubWFpbk91dGVyPWwuZmxleFN0eWxlLm1haW4rbC5mbGV4U3R5bGUubWFpbkJlZm9yZStsLmZsZXhTdHlsZS5tYWluQWZ0ZXIscitsLmZsZXhTdHlsZS5tYWluT3V0ZXJ9LDApLGUubWFpblNwYWNlPTApfX19LHtcIi4uL3JlZHVjZVwiOjEyfV0sNjpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPWUoXCIuLi9yZWR1Y2VcIik7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0O2UubGluZXM9W3Q9e21haW46MCxjcm9zczowLGNoaWxkcmVuOltdfV07Zm9yKHZhciByLG49LTE7cj1lLmNoaWxkcmVuWysrbl07KVwibm93cmFwXCI9PT1lLnN0eWxlLmZsZXhXcmFwfHwwPT09dC5jaGlsZHJlbi5sZW5ndGh8fFwiYXV0b1wiPT09ZS5mbGV4U3R5bGUubWFpbnx8ZS5mbGV4U3R5bGUubWFpbi1lLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUtZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXItZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZS1lLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXI+PXQubWFpbityLmZsZXhTdHlsZS5tYWluT3V0ZXI/KHQubWFpbis9ci5mbGV4U3R5bGUubWFpbk91dGVyLHQuY3Jvc3M9TWF0aC5tYXgodC5jcm9zcyxyLmZsZXhTdHlsZS5jcm9zc091dGVyKSk6ZS5saW5lcy5wdXNoKHQ9e21haW46ci5mbGV4U3R5bGUubWFpbk91dGVyLGNyb3NzOnIuZmxleFN0eWxlLmNyb3NzT3V0ZXIsY2hpbGRyZW46W119KSx0LmNoaWxkcmVuLnB1c2gocik7ZS5mbGV4U3R5bGUubWFpbkxpbmVzPWwoZS5saW5lcyxmdW5jdGlvbihlLHQpe3JldHVybiBNYXRoLm1heChlLHQubWFpbil9LDApLGUuZmxleFN0eWxlLmNyb3NzTGluZXM9bChlLmxpbmVzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrdC5jcm9zc30sMCksXCJhdXRvXCI9PT1lLmZsZXhTdHlsZS5tYWluJiYoZS5mbGV4U3R5bGUubWFpbj1NYXRoLm1heChlLmZsZXhTdHlsZS5tYWluT2Zmc2V0LGUuZmxleFN0eWxlLm1haW5MaW5lcytlLmZsZXhTdHlsZS5tYWluSW5uZXJCZWZvcmUrZS5mbGV4U3R5bGUubWFpbklubmVyQWZ0ZXIrZS5mbGV4U3R5bGUubWFpbkJvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5tYWluQm9yZGVyQWZ0ZXIpKSxcImF1dG9cIj09PWUuZmxleFN0eWxlLmNyb3NzJiYoZS5mbGV4U3R5bGUuY3Jvc3M9TWF0aC5tYXgoZS5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQsZS5mbGV4U3R5bGUuY3Jvc3NMaW5lcytlLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlK2UuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlcitlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyKSksZS5mbGV4U3R5bGUuY3Jvc3NTcGFjZT1lLmZsZXhTdHlsZS5jcm9zcy1lLmZsZXhTdHlsZS5jcm9zc0lubmVyQmVmb3JlLWUuZmxleFN0eWxlLmNyb3NzSW5uZXJBZnRlci1lLmZsZXhTdHlsZS5jcm9zc0JvcmRlckJlZm9yZS1lLmZsZXhTdHlsZS5jcm9zc0JvcmRlckFmdGVyLWUuZmxleFN0eWxlLmNyb3NzTGluZXMsZS5mbGV4U3R5bGUubWFpbk91dGVyPWUuZmxleFN0eWxlLm1haW4rZS5mbGV4U3R5bGUubWFpbkJlZm9yZStlLmZsZXhTdHlsZS5tYWluQWZ0ZXIsZS5mbGV4U3R5bGUuY3Jvc3NPdXRlcj1lLmZsZXhTdHlsZS5jcm9zcytlLmZsZXhTdHlsZS5jcm9zc0JlZm9yZStlLmZsZXhTdHlsZS5jcm9zc0FmdGVyfX0se1wiLi4vcmVkdWNlXCI6MTJ9XSw3OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbCh0KXtmb3IodmFyIHIsbD0tMTtyPXQuY2hpbGRyZW5bKytsXTspZShcIi4vZmxleC1kaXJlY3Rpb25cIikocix0LnN0eWxlLmZsZXhEaXJlY3Rpb24pO2UoXCIuL2ZsZXgtZGlyZWN0aW9uXCIpKHQsdC5zdHlsZS5mbGV4RGlyZWN0aW9uKSxlKFwiLi9vcmRlclwiKSh0KSxlKFwiLi9mbGV4Ym94LWxpbmVzXCIpKHQpLGUoXCIuL2FsaWduLWNvbnRlbnRcIikodCksbD0tMTtmb3IodmFyIG47bj10LmxpbmVzWysrbF07KW4ubWFpblNwYWNlPXQuZmxleFN0eWxlLm1haW4tdC5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLXQuZmxleFN0eWxlLm1haW5Jbm5lckFmdGVyLXQuZmxleFN0eWxlLm1haW5Cb3JkZXJCZWZvcmUtdC5mbGV4U3R5bGUubWFpbkJvcmRlckFmdGVyLW4ubWFpbixlKFwiLi9mbGV4LWdyb3dcIikobiksZShcIi4vZmxleC1zaHJpbmtcIikobiksZShcIi4vbWFyZ2luLW1haW5cIikobiksZShcIi4vbWFyZ2luLWNyb3NzXCIpKG4pLGUoXCIuL2p1c3RpZnktY29udGVudFwiKShuLHQuc3R5bGUuanVzdGlmeUNvbnRlbnQsdCk7ZShcIi4vYWxpZ24taXRlbXNcIikodCl9dC5leHBvcnRzPWx9LHtcIi4vYWxpZ24tY29udGVudFwiOjEsXCIuL2FsaWduLWl0ZW1zXCI6MixcIi4vZmxleC1kaXJlY3Rpb25cIjozLFwiLi9mbGV4LWdyb3dcIjo0LFwiLi9mbGV4LXNocmlua1wiOjUsXCIuL2ZsZXhib3gtbGluZXNcIjo2LFwiLi9qdXN0aWZ5LWNvbnRlbnRcIjo4LFwiLi9tYXJnaW4tY3Jvc3NcIjo5LFwiLi9tYXJnaW4tbWFpblwiOjEwLFwiLi9vcmRlclwiOjExfV0sODpbZnVuY3Rpb24oZSx0LHIpe3QuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIGwsbixvLGY9ci5mbGV4U3R5bGUubWFpbklubmVyQmVmb3JlLGk9LTE7aWYoXCJmbGV4LWVuZFwiPT09dClmb3IobD1lLm1haW5TcGFjZSxsKz1mO289ZS5jaGlsZHJlblsrK2ldOylvLmZsZXhTdHlsZS5tYWluU3RhcnQ9bCxsKz1vLmZsZXhTdHlsZS5tYWluT3V0ZXI7ZWxzZSBpZihcImNlbnRlclwiPT09dClmb3IobD1lLm1haW5TcGFjZS8yLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcjtlbHNlIGlmKFwic3BhY2UtYmV0d2VlblwiPT09dClmb3Iobj1lLm1haW5TcGFjZS8oZS5jaGlsZHJlbi5sZW5ndGgtMSksbD0wLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcituO2Vsc2UgaWYoXCJzcGFjZS1hcm91bmRcIj09PXQpZm9yKG49MiplLm1haW5TcGFjZS8oMiplLmNoaWxkcmVuLmxlbmd0aCksbD1uLzIsbCs9ZjtvPWUuY2hpbGRyZW5bKytpXTspby5mbGV4U3R5bGUubWFpblN0YXJ0PWwsbCs9by5mbGV4U3R5bGUubWFpbk91dGVyK247ZWxzZSBmb3IobD0wLGwrPWY7bz1lLmNoaWxkcmVuWysraV07KW8uZmxleFN0eWxlLm1haW5TdGFydD1sLGwrPW8uZmxleFN0eWxlLm1haW5PdXRlcn19LHt9XSw5OltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPS0xO3Q9ZS5jaGlsZHJlblsrK3JdOyl7dmFyIGw9MDtcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzQmVmb3JlJiYrK2wsXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5jcm9zc0FmdGVyJiYrK2w7dmFyIG49ZS5jcm9zcy10LmZsZXhTdHlsZS5jcm9zc091dGVyO1wiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUmJih0LmZsZXhTdHlsZS5jcm9zc0JlZm9yZT1uL2wpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUuY3Jvc3NBZnRlciYmKHQuZmxleFN0eWxlLmNyb3NzQWZ0ZXI9bi9sKSxcImF1dG9cIj09PXQuZmxleFN0eWxlLmNyb3NzP3QuZmxleFN0eWxlLmNyb3NzT3V0ZXI9dC5mbGV4U3R5bGUuY3Jvc3NPZmZzZXQrdC5mbGV4U3R5bGUuY3Jvc3NCZWZvcmUrdC5mbGV4U3R5bGUuY3Jvc3NBZnRlcjp0LmZsZXhTdHlsZS5jcm9zc091dGVyPXQuZmxleFN0eWxlLmNyb3NzK3QuZmxleFN0eWxlLmNyb3NzQmVmb3JlK3QuZmxleFN0eWxlLmNyb3NzQWZ0ZXJ9fX0se31dLDEwOltmdW5jdGlvbihlLHQscil7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPTAsbD0tMTt0PWUuY2hpbGRyZW5bKytsXTspXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQmVmb3JlJiYrK3IsXCJhdXRvXCI9PT10LmZsZXhTdHlsZS5tYWluQWZ0ZXImJisrcjtpZihyPjApe2ZvcihsPS0xO3Q9ZS5jaGlsZHJlblsrK2xdOylcImF1dG9cIj09PXQuZmxleFN0eWxlLm1haW5CZWZvcmUmJih0LmZsZXhTdHlsZS5tYWluQmVmb3JlPWUubWFpblNwYWNlL3IpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbkFmdGVyJiYodC5mbGV4U3R5bGUubWFpbkFmdGVyPWUubWFpblNwYWNlL3IpLFwiYXV0b1wiPT09dC5mbGV4U3R5bGUubWFpbj90LmZsZXhTdHlsZS5tYWluT3V0ZXI9dC5mbGV4U3R5bGUubWFpbk9mZnNldCt0LmZsZXhTdHlsZS5tYWluQmVmb3JlK3QuZmxleFN0eWxlLm1haW5BZnRlcjp0LmZsZXhTdHlsZS5tYWluT3V0ZXI9dC5mbGV4U3R5bGUubWFpbit0LmZsZXhTdHlsZS5tYWluQmVmb3JlK3QuZmxleFN0eWxlLm1haW5BZnRlcjtlLm1haW5TcGFjZT0wfX19LHt9XSwxMTpbZnVuY3Rpb24oZSx0LHIpe3ZhciBsPS9eKGNvbHVtbnxyb3cpLXJldmVyc2UkLzt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbi5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuc3R5bGUub3JkZXItdC5zdHlsZS5vcmRlcnx8ZS5pbmRleC10LmluZGV4fSksbC50ZXN0KGUuc3R5bGUuZmxleERpcmVjdGlvbikmJmUuY2hpbGRyZW4ucmV2ZXJzZSgpfX0se31dLDEyOltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlLHQscil7Zm9yKHZhciBsPWUubGVuZ3RoLG49LTE7KytuPGw7KW4gaW4gZSYmKHI9dChyLGVbbl0sbikpO3JldHVybiByfXQuZXhwb3J0cz1sfSx7fV0sMTM6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe2koZihlKSl9dmFyIG49ZShcIi4vcmVhZFwiKSxvPWUoXCIuL3dyaXRlXCIpLGY9ZShcIi4vcmVhZEFsbFwiKSxpPWUoXCIuL3dyaXRlQWxsXCIpO3QuZXhwb3J0cz1sLHQuZXhwb3J0cy5yZWFkPW4sdC5leHBvcnRzLndyaXRlPW8sdC5leHBvcnRzLnJlYWRBbGw9Zix0LmV4cG9ydHMud3JpdGVBbGw9aX0se1wiLi9yZWFkXCI6MTUsXCIuL3JlYWRBbGxcIjoxNixcIi4vd3JpdGVcIjoxNyxcIi4vd3JpdGVBbGxcIjoxOH1dLDE0OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlLHQscil7dmFyIGw9ZVt0XSxmPVN0cmluZyhsKS5tYXRjaChvKTtpZighZil7dmFyIGE9dC5tYXRjaChzKTtpZihhKXt2YXIgYz1lW1wiYm9yZGVyXCIrYVsxXStcIlN0eWxlXCJdO3JldHVyblwibm9uZVwiPT09Yz8wOmlbbF18fDB9cmV0dXJuIGx9dmFyIHk9ZlsxXSx4PWZbMl07cmV0dXJuXCJweFwiPT09eD8xKnk6XCJjbVwiPT09eD8uMzkzNyp5Kjk2OlwiaW5cIj09PXg/OTYqeTpcIm1tXCI9PT14Py4zOTM3KnkqOTYvMTA6XCJwY1wiPT09eD8xMip5Kjk2LzcyOlwicHRcIj09PXg/OTYqeS83MjpcInJlbVwiPT09eD8xNip5Om4obCxyKX1mdW5jdGlvbiBuKGUsdCl7Zi5zdHlsZS5jc3NUZXh0PVwiYm9yZGVyOm5vbmUhaW1wb3J0YW50O2NsaXA6cmVjdCgwIDAgMCAwKSFpbXBvcnRhbnQ7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7Zm9udC1zaXplOjFlbSFpbXBvcnRhbnQ7aGVpZ2h0OjAhaW1wb3J0YW50O21hcmdpbjowIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlIWltcG9ydGFudDt3aWR0aDpcIitlK1wiIWltcG9ydGFudFwiLHQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZix0Lm5leHRTaWJsaW5nKTt2YXIgcj1mLm9mZnNldFdpZHRoO3JldHVybiB0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZikscn10LmV4cG9ydHM9bDt2YXIgbz0vXihbLStdP1xcZCpcXC4/XFxkKykoJXxbYS16XSspJC8sZj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGk9e21lZGl1bTo0LG5vbmU6MCx0aGljazo2LHRoaW46Mn0scz0vXmJvcmRlcihCb3R0b218TGVmdHxSaWdodHxUb3ApV2lkdGgkL30se31dLDE1OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXt2YXIgdD17YWxpZ25Db250ZW50Olwic3RyZXRjaFwiLGFsaWduSXRlbXM6XCJzdHJldGNoXCIsYWxpZ25TZWxmOlwiYXV0b1wiLGJvcmRlckJvdHRvbVN0eWxlOlwibm9uZVwiLGJvcmRlckJvdHRvbVdpZHRoOjAsYm9yZGVyTGVmdFN0eWxlOlwibm9uZVwiLGJvcmRlckxlZnRXaWR0aDowLGJvcmRlclJpZ2h0U3R5bGU6XCJub25lXCIsYm9yZGVyUmlnaHRXaWR0aDowLGJvcmRlclRvcFN0eWxlOlwibm9uZVwiLGJvcmRlclRvcFdpZHRoOjAsYm94U2l6aW5nOlwiY29udGVudC1ib3hcIixkaXNwbGF5OlwiaW5saW5lXCIsZmxleEJhc2lzOlwiYXV0b1wiLGZsZXhEaXJlY3Rpb246XCJyb3dcIixmbGV4R3JvdzowLGZsZXhTaHJpbms6MSxmbGV4V3JhcDpcIm5vd3JhcFwiLGp1c3RpZnlDb250ZW50OlwiZmxleC1zdGFydFwiLGhlaWdodDpcImF1dG9cIixtYXJnaW5Ub3A6MCxtYXJnaW5SaWdodDowLG1hcmdpbkxlZnQ6MCxtYXJnaW5Cb3R0b206MCxwYWRkaW5nVG9wOjAscGFkZGluZ1JpZ2h0OjAscGFkZGluZ0xlZnQ6MCxwYWRkaW5nQm90dG9tOjAsbWF4SGVpZ2h0Olwibm9uZVwiLG1heFdpZHRoOlwibm9uZVwiLG1pbkhlaWdodDowLG1pbldpZHRoOjAsb3JkZXI6MCxwb3NpdGlvbjpcInN0YXRpY1wiLHdpZHRoOlwiYXV0b1wifSxyPWUgaW5zdGFuY2VvZiBFbGVtZW50O2lmKHIpe3ZhciBsPWUuaGFzQXR0cmlidXRlKFwiZGF0YS1zdHlsZVwiKSxpPWw/ZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIpOmUuZ2V0QXR0cmlidXRlKFwic3R5bGVcIil8fFwiXCI7bHx8ZS5zZXRBdHRyaWJ1dGUoXCJkYXRhLXN0eWxlXCIsaSk7dmFyIHM9d2luZG93LmdldENvbXB1dGVkU3R5bGUmJmdldENvbXB1dGVkU3R5bGUoZSl8fHt9O2YodCxzKTt2YXIgYz1lLmN1cnJlbnRTdHlsZXx8e307bih0LGMpLG8odCxpKTtmb3IodmFyIHkgaW4gdCl0W3ldPWEodCx5LGUpO3ZhciB4PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dC5vZmZzZXRIZWlnaHQ9eC5oZWlnaHR8fGUub2Zmc2V0SGVpZ2h0LHQub2Zmc2V0V2lkdGg9eC53aWR0aHx8ZS5vZmZzZXRXaWR0aH12YXIgUz17ZWxlbWVudDplLHN0eWxlOnR9O3JldHVybiBTfWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIHIgaW4gZSl7dmFyIGw9ciBpbiB0O2lmKGwpZVtyXT10W3JdO2Vsc2V7dmFyIG49ci5yZXBsYWNlKC9bQS1aXS9nLFwiLSQmXCIpLnRvTG93ZXJDYXNlKCksbz1uIGluIHQ7byYmKGVbcl09dFtuXSl9fXZhciBmPVwiLWpzLWRpc3BsYXlcImluIHQ7ZiYmKGUuZGlzcGxheT10W1wiLWpzLWRpc3BsYXlcIl0pfWZ1bmN0aW9uIG8oZSx0KXtmb3IodmFyIHI7cj1pLmV4ZWModCk7KXt2YXIgbD1yWzFdLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvLVthLXpdL2csZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2xpY2UoMSkudG9VcHBlckNhc2UoKX0pO2VbbF09clsyXX19ZnVuY3Rpb24gZihlLHQpe2Zvcih2YXIgciBpbiBlKXt2YXIgbD1yIGluIHQ7bCYmIXMudGVzdChyKSYmKGVbcl09dFtyXSl9fXQuZXhwb3J0cz1sO3ZhciBpPS8oW15cXHM6O10rKVxccyo6XFxzKihbXjtdKz8pXFxzKig7fCQpL2cscz0vXihhbGlnblNlbGZ8aGVpZ2h0fHdpZHRoKSQvLGE9ZShcIi4vZ2V0Q29tcHV0ZWRMZW5ndGhcIil9LHtcIi4vZ2V0Q29tcHV0ZWRMZW5ndGhcIjoxNH1dLDE2OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXt2YXIgdD1bXTtyZXR1cm4gbihlLHQpLHR9ZnVuY3Rpb24gbihlLHQpe2Zvcih2YXIgcixsPW8oZSksaT1bXSxzPS0xO3I9ZS5jaGlsZE5vZGVzWysrc107KXt2YXIgYT0zPT09ci5ub2RlVHlwZSYmIS9eXFxzKiQvLnRlc3Qoci5ub2RlVmFsdWUpO2lmKGwmJmEpe3ZhciBjPXI7cj1lLmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZmxleC1pdGVtXCIpLGMpLHIuYXBwZW5kQ2hpbGQoYyl9dmFyIHk9ciBpbnN0YW5jZW9mIEVsZW1lbnQ7aWYoeSl7dmFyIHg9bihyLHQpO2lmKGwpe3ZhciBTPXIuc3R5bGU7Uy5kaXNwbGF5PVwiaW5saW5lLWJsb2NrXCIsUy5wb3NpdGlvbj1cImFic29sdXRlXCIseC5zdHlsZT1mKHIpLnN0eWxlLGkucHVzaCh4KX19fXZhciBtPXtlbGVtZW50OmUsY2hpbGRyZW46aX07cmV0dXJuIGwmJihtLnN0eWxlPWYoZSkuc3R5bGUsdC5wdXNoKG0pKSxtfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9ZSBpbnN0YW5jZW9mIEVsZW1lbnQscj10JiZlLmdldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVcIiksbD10JiZlLmN1cnJlbnRTdHlsZSYmZS5jdXJyZW50U3R5bGVbXCItanMtZGlzcGxheVwiXSxuPWkudGVzdChyKXx8cy50ZXN0KGwpO3JldHVybiBufXQuZXhwb3J0cz1sO3ZhciBmPWUoXCIuLi9yZWFkXCIpLGk9LyhefDspXFxzKmRpc3BsYXlcXHMqOlxccyooaW5saW5lLSk/ZmxleFxccyooO3wkKS9pLHM9L14oaW5saW5lLSk/ZmxleCQvaX0se1wiLi4vcmVhZFwiOjE1fV0sMTc6W2Z1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBsKGUpe28oZSk7dmFyIHQ9ZS5lbGVtZW50LnN0eWxlLHI9XCJpbmxpbmVcIj09PWUubWFpbkF4aXM/W1wibWFpblwiLFwiY3Jvc3NcIl06W1wiY3Jvc3NcIixcIm1haW5cIl07dC5ib3hTaXppbmc9XCJjb250ZW50LWJveFwiLHQuZGlzcGxheT1cImJsb2NrXCIsdC5wb3NpdGlvbj1cInJlbGF0aXZlXCIsdC53aWR0aD1uKGUuZmxleFN0eWxlW3JbMF1dLWUuZmxleFN0eWxlW3JbMF0rXCJJbm5lckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiSW5uZXJBZnRlclwiXS1lLmZsZXhTdHlsZVtyWzBdK1wiQm9yZGVyQmVmb3JlXCJdLWUuZmxleFN0eWxlW3JbMF0rXCJCb3JkZXJBZnRlclwiXSksdC5oZWlnaHQ9bihlLmZsZXhTdHlsZVtyWzFdXS1lLmZsZXhTdHlsZVtyWzFdK1wiSW5uZXJCZWZvcmVcIl0tZS5mbGV4U3R5bGVbclsxXStcIklubmVyQWZ0ZXJcIl0tZS5mbGV4U3R5bGVbclsxXStcIkJvcmRlckJlZm9yZVwiXS1lLmZsZXhTdHlsZVtyWzFdK1wiQm9yZGVyQWZ0ZXJcIl0pO2Zvcih2YXIgbCxmPS0xO2w9ZS5jaGlsZHJlblsrK2ZdOyl7dmFyIGk9bC5lbGVtZW50LnN0eWxlLHM9XCJpbmxpbmVcIj09PWwubWFpbkF4aXM/W1wibWFpblwiLFwiY3Jvc3NcIl06W1wiY3Jvc3NcIixcIm1haW5cIl07aS5ib3hTaXppbmc9XCJjb250ZW50LWJveFwiLGkuZGlzcGxheT1cImJsb2NrXCIsaS5wb3NpdGlvbj1cImFic29sdXRlXCIsXCJhdXRvXCIhPT1sLmZsZXhTdHlsZVtzWzBdXSYmKGkud2lkdGg9bihsLmZsZXhTdHlsZVtzWzBdXS1sLmZsZXhTdHlsZVtzWzBdK1wiSW5uZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1swXStcIklubmVyQWZ0ZXJcIl0tbC5mbGV4U3R5bGVbc1swXStcIkJvcmRlckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzBdK1wiQm9yZGVyQWZ0ZXJcIl0pKSxcImF1dG9cIiE9PWwuZmxleFN0eWxlW3NbMV1dJiYoaS5oZWlnaHQ9bihsLmZsZXhTdHlsZVtzWzFdXS1sLmZsZXhTdHlsZVtzWzFdK1wiSW5uZXJCZWZvcmVcIl0tbC5mbGV4U3R5bGVbc1sxXStcIklubmVyQWZ0ZXJcIl0tbC5mbGV4U3R5bGVbc1sxXStcIkJvcmRlckJlZm9yZVwiXS1sLmZsZXhTdHlsZVtzWzFdK1wiQm9yZGVyQWZ0ZXJcIl0pKSxpLnRvcD1uKGwuZmxleFN0eWxlW3NbMV0rXCJTdGFydFwiXSksaS5sZWZ0PW4obC5mbGV4U3R5bGVbc1swXStcIlN0YXJ0XCJdKSxpLm1hcmdpblRvcD1uKGwuZmxleFN0eWxlW3NbMV0rXCJCZWZvcmVcIl0pLGkubWFyZ2luUmlnaHQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiQWZ0ZXJcIl0pLGkubWFyZ2luQm90dG9tPW4obC5mbGV4U3R5bGVbc1sxXStcIkFmdGVyXCJdKSxpLm1hcmdpbkxlZnQ9bihsLmZsZXhTdHlsZVtzWzBdK1wiQmVmb3JlXCJdKX19ZnVuY3Rpb24gbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZT9lOk1hdGgubWF4KGUsMCkrXCJweFwifXQuZXhwb3J0cz1sO3ZhciBvPWUoXCIuLi9mbGV4Ym94XCIpfSx7XCIuLi9mbGV4Ym94XCI6N31dLDE4OltmdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbChlKXtmb3IodmFyIHQscj0tMTt0PWVbKytyXTspbih0KX10LmV4cG9ydHM9bDt2YXIgbj1lKFwiLi4vd3JpdGVcIil9LHtcIi4uL3dyaXRlXCI6MTd9XX0se30sWzEzXSkoMTMpfSk7IiwiLypcbiAqIEZ1enp5XG4gKiBodHRwczovL2dpdGh1Yi5jb20vbXlvcmsvZnV6enlcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTIgTWF0dCBZb3JrXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKi9cblxuKGZ1bmN0aW9uKCkge1xuXG52YXIgcm9vdCA9IHRoaXM7XG5cbnZhciBmdXp6eSA9IHt9O1xuXG4vLyBVc2UgaW4gbm9kZSBvciBpbiBicm93c2VyXG5pZiAodHlwZW9mIGV4cG9ydHMgIT09ICd1bmRlZmluZWQnKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gZnV6enk7XG59IGVsc2Uge1xuICByb290LmZ1enp5ID0gZnV6enk7XG59XG5cbi8vIFJldHVybiBhbGwgZWxlbWVudHMgb2YgYGFycmF5YCB0aGF0IGhhdmUgYSBmdXp6eVxuLy8gbWF0Y2ggYWdhaW5zdCBgcGF0dGVybmAuXG5mdXp6eS5zaW1wbGVGaWx0ZXIgPSBmdW5jdGlvbihwYXR0ZXJuLCBhcnJheSkge1xuICByZXR1cm4gYXJyYXkuZmlsdGVyKGZ1bmN0aW9uKHN0cikge1xuICAgIHJldHVybiBmdXp6eS50ZXN0KHBhdHRlcm4sIHN0cik7XG4gIH0pO1xufTtcblxuLy8gRG9lcyBgcGF0dGVybmAgZnV6enkgbWF0Y2ggYHN0cmA/XG5mdXp6eS50ZXN0ID0gZnVuY3Rpb24ocGF0dGVybiwgc3RyKSB7XG4gIHJldHVybiBmdXp6eS5tYXRjaChwYXR0ZXJuLCBzdHIpICE9PSBudWxsO1xufTtcblxuLy8gSWYgYHBhdHRlcm5gIG1hdGNoZXMgYHN0cmAsIHdyYXAgZWFjaCBtYXRjaGluZyBjaGFyYWN0ZXJcbi8vIGluIGBvcHRzLnByZWAgYW5kIGBvcHRzLnBvc3RgLiBJZiBubyBtYXRjaCwgcmV0dXJuIG51bGxcbmZ1enp5Lm1hdGNoID0gZnVuY3Rpb24ocGF0dGVybiwgc3RyLCBvcHRzKSB7XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuICB2YXIgcGF0dGVybklkeCA9IDBcbiAgICAsIHJlc3VsdCA9IFtdXG4gICAgLCBsZW4gPSBzdHIubGVuZ3RoXG4gICAgLCB0b3RhbFNjb3JlID0gMFxuICAgICwgY3VyclNjb3JlID0gMFxuICAgIC8vIHByZWZpeFxuICAgICwgcHJlID0gb3B0cy5wcmUgfHwgJydcbiAgICAvLyBzdWZmaXhcbiAgICAsIHBvc3QgPSBvcHRzLnBvc3QgfHwgJydcbiAgICAvLyBTdHJpbmcgdG8gY29tcGFyZSBhZ2FpbnN0LiBUaGlzIG1pZ2h0IGJlIGEgbG93ZXJjYXNlIHZlcnNpb24gb2YgdGhlXG4gICAgLy8gcmF3IHN0cmluZ1xuICAgICwgY29tcGFyZVN0cmluZyA9ICBvcHRzLmNhc2VTZW5zaXRpdmUgJiYgc3RyIHx8IHN0ci50b0xvd2VyQ2FzZSgpXG4gICAgLCBjaDtcblxuICBwYXR0ZXJuID0gb3B0cy5jYXNlU2Vuc2l0aXZlICYmIHBhdHRlcm4gfHwgcGF0dGVybi50b0xvd2VyQ2FzZSgpO1xuXG4gIC8vIEZvciBlYWNoIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLCBlaXRoZXIgYWRkIGl0IHRvIHRoZSByZXN1bHRcbiAgLy8gb3Igd3JhcCBpbiB0ZW1wbGF0ZSBpZiBpdCdzIHRoZSBuZXh0IHN0cmluZyBpbiB0aGUgcGF0dGVyblxuICBmb3IodmFyIGlkeCA9IDA7IGlkeCA8IGxlbjsgaWR4KyspIHtcbiAgICBjaCA9IHN0cltpZHhdO1xuICAgIGlmKGNvbXBhcmVTdHJpbmdbaWR4XSA9PT0gcGF0dGVybltwYXR0ZXJuSWR4XSkge1xuICAgICAgY2ggPSBwcmUgKyBjaCArIHBvc3Q7XG4gICAgICBwYXR0ZXJuSWR4ICs9IDE7XG5cbiAgICAgIC8vIGNvbnNlY3V0aXZlIGNoYXJhY3RlcnMgc2hvdWxkIGluY3JlYXNlIHRoZSBzY29yZSBtb3JlIHRoYW4gbGluZWFybHlcbiAgICAgIGN1cnJTY29yZSArPSAxICsgY3VyclNjb3JlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyU2NvcmUgPSAwO1xuICAgIH1cbiAgICB0b3RhbFNjb3JlICs9IGN1cnJTY29yZTtcbiAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aF0gPSBjaDtcbiAgfVxuXG4gIC8vIHJldHVybiByZW5kZXJlZCBzdHJpbmcgaWYgd2UgaGF2ZSBhIG1hdGNoIGZvciBldmVyeSBjaGFyXG4gIGlmKHBhdHRlcm5JZHggPT09IHBhdHRlcm4ubGVuZ3RoKSB7XG4gICAgLy8gaWYgdGhlIHN0cmluZyBpcyBhbiBleGFjdCBtYXRjaCB3aXRoIHBhdHRlcm4sIHRvdGFsU2NvcmUgc2hvdWxkIGJlIG1heGVkXG4gICAgdG90YWxTY29yZSA9IChjb21wYXJlU3RyaW5nID09PSBwYXR0ZXJuKSA/IEluZmluaXR5IDogdG90YWxTY29yZTtcbiAgICByZXR1cm4ge3JlbmRlcmVkOiByZXN1bHQuam9pbignJyksIHNjb3JlOiB0b3RhbFNjb3JlfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuLy8gVGhlIG5vcm1hbCBlbnRyeSBwb2ludC4gRmlsdGVycyBgYXJyYCBmb3IgbWF0Y2hlcyBhZ2FpbnN0IGBwYXR0ZXJuYC5cbi8vIEl0IHJldHVybnMgYW4gYXJyYXkgd2l0aCBtYXRjaGluZyB2YWx1ZXMgb2YgdGhlIHR5cGU6XG4vL1xuLy8gICAgIFt7XG4vLyAgICAgICAgIHN0cmluZzogICAnPGI+bGFoJyAvLyBUaGUgcmVuZGVyZWQgc3RyaW5nXG4vLyAgICAgICAsIGluZGV4OiAgICAyICAgICAgICAvLyBUaGUgaW5kZXggb2YgdGhlIGVsZW1lbnQgaW4gYGFycmBcbi8vICAgICAgICwgb3JpZ2luYWw6ICdibGFoJyAgIC8vIFRoZSBvcmlnaW5hbCBlbGVtZW50IGluIGBhcnJgXG4vLyAgICAgfV1cbi8vXG4vLyBgb3B0c2AgaXMgYW4gb3B0aW9uYWwgYXJndW1lbnQgYmFnLiBEZXRhaWxzOlxuLy9cbi8vICAgIG9wdHMgPSB7XG4vLyAgICAgICAgLy8gc3RyaW5nIHRvIHB1dCBiZWZvcmUgYSBtYXRjaGluZyBjaGFyYWN0ZXJcbi8vICAgICAgICBwcmU6ICAgICAnPGI+J1xuLy9cbi8vICAgICAgICAvLyBzdHJpbmcgdG8gcHV0IGFmdGVyIG1hdGNoaW5nIGNoYXJhY3RlclxuLy8gICAgICAsIHBvc3Q6ICAgICc8L2I+J1xuLy9cbi8vICAgICAgICAvLyBPcHRpb25hbCBmdW5jdGlvbi4gSW5wdXQgaXMgYW4gZW50cnkgaW4gdGhlIGdpdmVuIGFycmAsXG4vLyAgICAgICAgLy8gb3V0cHV0IHNob3VsZCBiZSB0aGUgc3RyaW5nIHRvIHRlc3QgYHBhdHRlcm5gIGFnYWluc3QuXG4vLyAgICAgICAgLy8gSW4gdGhpcyBleGFtcGxlLCBpZiBgYXJyID0gW3tjcnlpbmc6ICdrb2FsYSd9XWAgd2Ugd291bGQgcmV0dXJuXG4vLyAgICAgICAgLy8gJ2tvYWxhJy5cbi8vICAgICAgLCBleHRyYWN0OiBmdW5jdGlvbihhcmcpIHsgcmV0dXJuIGFyZy5jcnlpbmc7IH1cbi8vICAgIH1cbmZ1enp5LmZpbHRlciA9IGZ1bmN0aW9uKHBhdHRlcm4sIGFyciwgb3B0cykge1xuICBpZighYXJyIHx8IGFyci5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgaWYgKHR5cGVvZiBwYXR0ZXJuICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBhcnI7XG4gIH1cbiAgb3B0cyA9IG9wdHMgfHwge307XG4gIHJldHVybiBhcnJcbiAgICAucmVkdWNlKGZ1bmN0aW9uKHByZXYsIGVsZW1lbnQsIGlkeCwgYXJyKSB7XG4gICAgICB2YXIgc3RyID0gZWxlbWVudDtcbiAgICAgIGlmKG9wdHMuZXh0cmFjdCkge1xuICAgICAgICBzdHIgPSBvcHRzLmV4dHJhY3QoZWxlbWVudCk7XG4gICAgICB9XG4gICAgICB2YXIgcmVuZGVyZWQgPSBmdXp6eS5tYXRjaChwYXR0ZXJuLCBzdHIsIG9wdHMpO1xuICAgICAgaWYocmVuZGVyZWQgIT0gbnVsbCkge1xuICAgICAgICBwcmV2W3ByZXYubGVuZ3RoXSA9IHtcbiAgICAgICAgICAgIHN0cmluZzogcmVuZGVyZWQucmVuZGVyZWRcbiAgICAgICAgICAsIHNjb3JlOiByZW5kZXJlZC5zY29yZVxuICAgICAgICAgICwgaW5kZXg6IGlkeFxuICAgICAgICAgICwgb3JpZ2luYWw6IGVsZW1lbnRcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH0sIFtdKVxuXG4gICAgLy8gU29ydCBieSBzY29yZS4gQnJvd3NlcnMgYXJlIGluY29uc2lzdGVudCB3cnQgc3RhYmxlL3Vuc3RhYmxlXG4gICAgLy8gc29ydGluZywgc28gZm9yY2Ugc3RhYmxlIGJ5IHVzaW5nIHRoZSBpbmRleCBpbiB0aGUgY2FzZSBvZiB0aWUuXG4gICAgLy8gU2VlIGh0dHA6Ly9vZmIubmV0L35zZXRobWwvaXMtc29ydC1zdGFibGUuaHRtbFxuICAgIC5zb3J0KGZ1bmN0aW9uKGEsYikge1xuICAgICAgdmFyIGNvbXBhcmUgPSBiLnNjb3JlIC0gYS5zY29yZTtcbiAgICAgIGlmKGNvbXBhcmUpIHJldHVybiBjb21wYXJlO1xuICAgICAgcmV0dXJuIGEuaW5kZXggLSBiLmluZGV4O1xuICAgIH0pO1xufTtcblxuXG59KCkpO1xuXG4iLCIvKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZS4gSXQgY29tZXMgd2l0aG91dCBhbnkgd2FycmFudHksIHRvXG4gICAgICogdGhlIGV4dGVudCBwZXJtaXR0ZWQgYnkgYXBwbGljYWJsZSBsYXcuIFlvdSBjYW4gcmVkaXN0cmlidXRlIGl0XG4gICAgICogYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIERvIFdoYXQgVGhlIEZ1Y2sgWW91IFdhbnRcbiAgICAgKiBUbyBQdWJsaWMgTGljZW5zZSwgVmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgU2FtIEhvY2V2YXIuIFNlZVxuICAgICAqIGh0dHA6Ly93d3cud3RmcGwubmV0LyBmb3IgbW9yZSBkZXRhaWxzLiAqL1xuJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBsZWZ0UGFkO1xuXG52YXIgY2FjaGUgPSBbXG4gICcnLFxuICAnICcsXG4gICcgICcsXG4gICcgICAnLFxuICAnICAgICcsXG4gICcgICAgICcsXG4gICcgICAgICAnLFxuICAnICAgICAgICcsXG4gICcgICAgICAgICcsXG4gICcgICAgICAgICAnXG5dO1xuXG5mdW5jdGlvbiBsZWZ0UGFkIChzdHIsIGxlbiwgY2gpIHtcbiAgLy8gY29udmVydCBgc3RyYCB0byBgc3RyaW5nYFxuICBzdHIgPSBzdHIgKyAnJztcbiAgLy8gYGxlbmAgaXMgdGhlIGBwYWRgJ3MgbGVuZ3RoIG5vd1xuICBsZW4gPSBsZW4gLSBzdHIubGVuZ3RoO1xuICAvLyBkb2Vzbid0IG5lZWQgdG8gcGFkXG4gIGlmIChsZW4gPD0gMCkgcmV0dXJuIHN0cjtcbiAgLy8gYGNoYCBkZWZhdWx0cyB0byBgJyAnYFxuICBpZiAoIWNoICYmIGNoICE9PSAwKSBjaCA9ICcgJztcbiAgLy8gY29udmVydCBgY2hgIHRvIGBzdHJpbmdgXG4gIGNoID0gY2ggKyAnJztcbiAgLy8gY2FjaGUgY29tbW9uIHVzZSBjYXNlc1xuICBpZiAoY2ggPT09ICcgJyAmJiBsZW4gPCAxMCkgcmV0dXJuIGNhY2hlW2xlbl0gKyBzdHI7XG4gIC8vIGBwYWRgIHN0YXJ0cyB3aXRoIGFuIGVtcHR5IHN0cmluZ1xuICB2YXIgcGFkID0gJyc7XG4gIC8vIGxvb3BcbiAgd2hpbGUgKHRydWUpIHtcbiAgICAvLyBhZGQgYGNoYCB0byBgcGFkYCBpZiBgbGVuYCBpcyBvZGRcbiAgICBpZiAobGVuICYgMSkgcGFkICs9IGNoO1xuICAgIC8vIGRpdmlkZSBgbGVuYCBieSAyLCBkaXRjaCB0aGUgcmVtYWluZGVyXG4gICAgbGVuID4+PSAxO1xuICAgIC8vIFwiZG91YmxlXCIgdGhlIGBjaGAgc28gdGhpcyBvcGVyYXRpb24gY291bnQgZ3Jvd3MgbG9nYXJpdGhtaWNhbGx5IG9uIGBsZW5gXG4gICAgLy8gZWFjaCB0aW1lIGBjaGAgaXMgXCJkb3VibGVkXCIsIHRoZSBgbGVuYCB3b3VsZCBuZWVkIHRvIGJlIFwiZG91YmxlZFwiIHRvb1xuICAgIC8vIHNpbWlsYXIgdG8gZmluZGluZyBhIHZhbHVlIGluIGJpbmFyeSBzZWFyY2ggdHJlZSwgaGVuY2UgTyhsb2cobikpXG4gICAgaWYgKGxlbikgY2ggKz0gY2g7XG4gICAgLy8gYGxlbmAgaXMgMCwgZXhpdCB0aGUgbG9vcFxuICAgIGVsc2UgYnJlYWs7XG4gIH1cbiAgLy8gcGFkIGBzdHJgIVxuICByZXR1cm4gcGFkICsgc3RyO1xufVxuIiwiY29uc3Qgc2ludGVya2xhYXMgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnNvbGUubG9nKCdzaW50ZXJrbGFhcyBlYXN0ZXIgZWdnIGFjdGl2YXRlZCcpXG4gIGNvbnN0IHNlYXJjaE5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2VhcmNoJylcbiAgY29uc3QgaW5wdXROb2RlID0gc2VhcmNoTm9kZS5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPVwidGV4dFwiXScpXG4gIGNvbnN0IGF1dG9jb21wbGV0ZU5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYXV0b2NvbXBsZXRlJylcbiAgbGV0IGF1dG9jb21wbGV0ZSA9IGZhbHNlXG4gIGNvbnN0IGx5cmljcyA9IFtcbiAgICBbXG4gICAgICB7d29vcmQ6ICdIb29yICcsIHRpbWU6IDB9LFxuICAgICAge3dvb3JkOiAnd2llICcsIHRpbWU6IDAuM30sXG4gICAgICB7d29vcmQ6ICdrbG9wdCAnLCB0aW1lOiAwLjZ9LFxuICAgICAge3dvb3JkOiAnZGFhciAnLCB0aW1lOiAwLjl9LFxuICAgICAge3dvb3JkOiAna2luZCcsIHRpbWU6IDEuMn0sXG4gICAgICB7d29vcmQ6ICdcXCdyZW4nLCB0aW1lOiAxLjV9XG4gICAgXSxcbiAgICBbXG4gICAgICB7d29vcmQ6ICdIb29yICcsIHRpbWU6IDEuOH0sXG4gICAgICB7d29vcmQ6ICd3aWUgJywgdGltZTogMi4xfSxcbiAgICAgIHt3b29yZDogJ2tsb3B0ICcsIHRpbWU6IDIuNX0sXG4gICAgICB7d29vcmQ6ICdkYWFyICcsIHRpbWU6IDIuOH0sXG4gICAgICB7d29vcmQ6ICdraW5kJywgdGltZTogMy4xfSxcbiAgICAgIHt3b29yZDogJ1xcJ3JlbicsIHRpbWU6IDMuNH1cbiAgICBdLFxuICAgIFtcbiAgICAgIHt3b29yZDogJ0hvb3IgJywgdGltZTogMy43fSxcbiAgICAgIHt3b29yZDogJ3dpZSAnLCB0aW1lOiA0fSxcbiAgICAgIHt3b29yZDogJ3Rpa3QgJywgdGltZTogNC4zfSxcbiAgICAgIHt3b29yZDogJ2RhYXIgJywgdGltZTogNC42fSxcbiAgICAgIHt3b29yZDogJ3phY2h0JywgdGltZTogNC44fSxcbiAgICAgIHt3b29yZDogJ2plcyAnLCB0aW1lOiA1LjN9LFxuICAgICAge3dvb3JkOiAndGVnZW4gJywgdGltZTogNS41fSxcbiAgICAgIHt3b29yZDogJ1xcJ3QgJywgdGltZTogNi4xfSxcbiAgICAgIHt3b29yZDogJ3JhYW0gJywgdGltZTogNi4yfVxuICAgIF1cbiAgXVxuXG4gIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSBpbnB1dE5vZGUudmFsdWVcblxuICBpbnB1dE5vZGUudmFsdWUgPSAnJ1xuICBpbnB1dE5vZGUucGxhY2Vob2xkZXIgPSAnJ1xuXG4gIGx5cmljcy5mb3JFYWNoKChyb3csIHJvd0luZGV4KSA9PiB7XG4gICAgcm93LmZvckVhY2goKHdvcmQsIHdvcmRJbmRleCkgPT4ge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh3b3JkSW5kZXggPT09IDApIGlucHV0Tm9kZS5wbGFjZWhvbGRlciA9ICcnXG4gICAgICAgIGlucHV0Tm9kZS5wbGFjZWhvbGRlciArPSB3b3JkLndvb3JkXG4gICAgICB9LCB3b3JkLnRpbWUgKiAxMDAwKVxuICAgICAgaWYgKGx5cmljcy5sZW5ndGggPT09IHJvd0luZGV4ICsgMSAmJlxuICAgICAgICAgIGx5cmljc1tyb3dJbmRleF0ubGVuZ3RoID09PSB3b3JkSW5kZXggKyAxKSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChpbnB1dE5vZGUudmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgICBpbnB1dE5vZGUudmFsdWUgPSBvcmlnaW5hbFZhbHVlXG4gICAgICAgICAgfVxuICAgICAgICAgIGlucHV0Tm9kZS5wbGFjZWhvbGRlciA9ICdab2VrZW4nXG4gICAgICAgICAgYXV0b2NvbXBsZXRlID0gdHJ1ZVxuICAgICAgICB9LCB3b3JkLnRpbWUgKiAxMDAwICsgMTAwMClcbiAgICAgIH1cbiAgICB9KVxuICB9KVxuXG4gIGlucHV0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWF1dG9jb21wbGV0ZSkgcmV0dXJuXG5cbiAgICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG5cbiAgICBjb25zdCBhdXRvY29tcGxldGVMeXJpY3MgPSBbXG4gICAgICBgJ3QgSXMgZWVuIHZyZWVtZCdsaW5nIHpla2VyLGAsXG4gICAgICBgZGllIHZlcmR3YWFsdCBpcyB6ZWtlci5gLFxuICAgICAgYCdrIFphbCBlZW5zIGV2ZW4gdnJhZ2VuIG5hYXIgemlqbiBuYWFtOmBcbiAgICBdXG5cbiAgICBhdXRvY29tcGxldGVMeXJpY3MuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJylcbiAgICAgIHJlc3VsdE5vZGUuaW5uZXJIVE1MID0gcm93XG4gICAgICBhdXRvY29tcGxldGVOb2RlLmFwcGVuZENoaWxkKHJlc3VsdE5vZGUpXG4gICAgfSlcbiAgfSlcblxuICBpbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFhdXRvY29tcGxldGUpIHJldHVyblxuICAgIGlmIChpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnQgbmljb2xhYXMnIHx8XG4gICAgICAgIGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludG5pY29sYWFzJyB8fFxuICAgICAgICBpbnB1dE5vZGUudmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NpbnQgbmlrb2xhYXMnIHx8XG4gICAgICAgIGlucHV0Tm9kZS52YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc2ludG5pa29sYWFzJykge1xuICAgICAgaW5wdXROb2RlLnZhbHVlID0gJydcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJ2h0dHBzOi8vd3d3LnlvdXR1YmUtbm9jb29raWUuY29tL2VtYmVkL2pzT2lLSjNrS1hNP3N0YXJ0PTMwJ1xuICAgIH1cbiAgfSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IHNpbnRlcmtsYWFzIH1cbiIsInZhciBsZWZ0UGFkID0gcmVxdWlyZSgnbGVmdC1wYWQnKVxudmFyIGdldFdlZWsgPSByZXF1aXJlKCcuL2dldFdlZWsnKVxuXG5mdW5jdGlvbiBnZXRVUkxPZlVzZXJzICh3ZWVrT2Zmc2V0LCB0eXBlLCBpZCkge1xuICByZXR1cm4gYC8vJHt3aW5kb3cubG9jYXRpb24uaG9zdH0vbWVldGluZ3BvaW50UHJveHkvUm9vc3RlcnMtQUwlMkZkb2MlMkZkYWdyb29zdGVycyUyRmAgK1xuICAgICAgYCR7KGdldFdlZWsoKSArIHdlZWtPZmZzZXQpfSUyRiR7dHlwZX0lMkYke3R5cGV9JHtsZWZ0UGFkKGlkLCA1LCAnMCcpfS5odG1gXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VVJMT2ZVc2Vyc1xuIiwiLy8gY29waWVkIGZyb20gaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jL2RhZ3Jvb3N0ZXJzL3VudGlzc2NyaXB0cy5qcyxcbi8vIHdlcmUgdXNpbmcgdGhlIHNhbWUgY29kZSBhcyB0aGV5IGRvIHRvIGJlIHN1cmUgdGhhdCB3ZSBhbHdheXMgZ2V0IHRoZSBzYW1lXG4vLyB3ZWVrIG51bWJlci5cbmZ1bmN0aW9uIGdldFdlZWsgKCkge1xuICAvLyBDcmVhdGUgYSBjb3B5IG9mIHRoaXMgZGF0ZSBvYmplY3RcbiAgY29uc3QgdGFyZ2V0ID0gbmV3IERhdGUoKVxuXG4gIC8vIElTTyB3ZWVrIGRhdGUgd2Vla3Mgc3RhcnQgb24gbW9uZGF5XG4gIC8vIHNvIGNvcnJlY3QgdGhlIGRheSBudW1iZXJcbiAgY29uc3QgZGF5TnIgPSAodGFyZ2V0LmdldERheSgpICsgNikgJSA3XG5cbiAgLy8gSVNPIDg2MDEgc3RhdGVzIHRoYXQgd2VlayAxIGlzIHRoZSB3ZWVrXG4gIC8vIHdpdGggdGhlIGZpcnN0IHRodXJzZGF5IG9mIHRoYXQgeWVhci5cbiAgLy8gU2V0IHRoZSB0YXJnZXQgZGF0ZSB0byB0aGUgdGh1cnNkYXkgaW4gdGhlIHRhcmdldCB3ZWVrXG4gIHRhcmdldC5zZXREYXRlKHRhcmdldC5nZXREYXRlKCkgLSBkYXlOciArIDMpXG5cbiAgLy8gU3RvcmUgdGhlIG1pbGxpc2Vjb25kIHZhbHVlIG9mIHRoZSB0YXJnZXQgZGF0ZVxuICBjb25zdCBmaXJzdFRodXJzZGF5ID0gdGFyZ2V0LnZhbHVlT2YoKVxuXG4gIC8vIFNldCB0aGUgdGFyZ2V0IHRvIHRoZSBmaXJzdCB0aHVyc2RheSBvZiB0aGUgeWVhclxuICAvLyBGaXJzdCBzZXQgdGhlIHRhcmdldCB0byBqYW51YXJ5IGZpcnN0XG4gIHRhcmdldC5zZXRNb250aCgwLCAxKVxuICAvLyBOb3QgYSB0aHVyc2RheT8gQ29ycmVjdCB0aGUgZGF0ZSB0byB0aGUgbmV4dCB0aHVyc2RheVxuICBpZiAodGFyZ2V0LmdldERheSgpICE9PSA0KSB7XG4gICAgdGFyZ2V0LnNldE1vbnRoKDAsIDEgKyAoKDQgLSB0YXJnZXQuZ2V0RGF5KCkpICsgNykgJSA3KVxuICB9XG5cbiAgLy8gVGhlIHdlZWtudW1iZXIgaXMgdGhlIG51bWJlciBvZiB3ZWVrcyBiZXR3ZWVuIHRoZVxuICAvLyBmaXJzdCB0aHVyc2RheSBvZiB0aGUgeWVhciBhbmQgdGhlIHRodXJzZGF5IGluIHRoZSB0YXJnZXQgd2Vla1xuICByZXR1cm4gMSArIE1hdGguY2VpbCgoZmlyc3RUaHVyc2RheSAtIHRhcmdldCkgLyA2MDQ4MDAwMDApIC8vIDYwNDgwMDAwMCA9IDcgKiAyNCAqIDM2MDAgKiAxMDAwXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0V2Vla1xuIiwiLyogZ2xvYmFsIGdhIEZMQUdTIFVTRVJTICovXG5cbnJlcXVpcmUoJ2ZsZXhpYmlsaXR5JylcblxuY29uc3QgZnV6enkgPSByZXF1aXJlKCdmdXp6eScpXG4vLyBjb25zdCBnZXRVc2VycyA9IHJlcXVpcmUoJy4vZ2V0VXNlcnMnKVxuY29uc3QgZ2V0VVJMT2ZVc2VyID0gcmVxdWlyZSgnLi9nZXRVUkxPZlVzZXInKVxuY29uc3QgcmVtb3ZlRGlhY3JpdGljcyA9IHJlcXVpcmUoJ2RpYWNyaXRpY3MnKS5yZW1vdmVcbmNvbnN0IGdldFdlZWsgPSByZXF1aXJlKCcuL2dldFdlZWsnKVxuY29uc3QgZWFzdGVyRWdncyA9IHJlcXVpcmUoJy4vZWFzdGVyRWdncycpXG5cbmNvbnN0IHNlYXJjaE5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2VhcmNoJylcbmNvbnN0IGlucHV0Tm9kZSA9IHNlYXJjaE5vZGUucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT1cInRleHRcIl0nKVxuY29uc3QgYXV0b2NvbXBsZXRlTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdXRvY29tcGxldGUnKVxuY29uc3Qgc2NoZWR1bGVJZnJhbWUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2NoZWR1bGUnKVxuY29uc3QgcHJldkJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyN3ZWVrLXNlbGVjdG9yIGJ1dHRvbicpWzBdXG5jb25zdCBuZXh0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI3dlZWstc2VsZWN0b3IgYnV0dG9uJylbMV1cbmNvbnN0IGN1cnJlbnRXZWVrTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jdXJyZW50JylcbmNvbnN0IGZhdk5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZmF2JylcblxuaWYgKEZMQUdTLmluZGV4T2YoJ05PX0ZFQVRVUkVfREVURUNUJykgPT09IC0xKSB7XG4gIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2NoZWR1bGUnKS5nZXRDbGllbnRSZWN0cygpWzBdLmJvdHRvbSAhPT1cbiAgICAgIGRvY3VtZW50LmJvZHkuZ2V0Q2xpZW50UmVjdHMoKVswXS5ib3R0b20pIHtcbiAgICB3aW5kb3cubG9jYXRpb24gPSAnaHR0cDovL3d3dy5tZWV0aW5ncG9pbnRtY28ubmwvUm9vc3RlcnMtQUwvZG9jLydcbiAgfSBlbHNlIHtcbiAgICB3aW5kb3cub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdodHRwOi8vd3d3Lm1lZXRpbmdwb2ludG1jby5ubC9Sb29zdGVycy1BTC9kb2MvJ1xuICAgIH1cbiAgfVxufSBlbHNlIHtcbiAgY29uc29sZS5sb2coJ2ZlYXR1cmUgZGV0ZWN0aW9uIGlzIE9GRicpXG59XG5cbmxldCBzZWxlY3RlZFJlc3VsdCA9IC0xXG5sZXQgc2VsZWN0ZWRVc2VyXG5sZXQgcmVzdWx0cyA9IFtdXG5sZXQgb2Zmc2V0ID0gMFxuXG5mdW5jdGlvbiBnZXRDdXJyZW50RmF2ICgpIHtcbiAgaWYgKCF3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2ZhdicpKSByZXR1cm5cbiAgY29uc3QgZmF2Q29kZSA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZmF2Jykuc3BsaXQoJzonKVxuICBjb25zdCBmYXYgPSBVU0VSUy5maWx0ZXIodXNlciA9PiB1c2VyLnR5cGUgPT09IGZhdkNvZGVbMF0gJiYgdXNlci5pbmRleCA9PT0gTnVtYmVyKGZhdkNvZGVbMV0pKVxuICByZXR1cm4gZmF2WzBdXG59XG5cbmZ1bmN0aW9uIGNoYW5nZUZhdiAoaXNGYXYpIHtcbiAgaWYgKCFzZWxlY3RlZFVzZXIpIHJldHVyblxuICBpZiAoaXNGYXYpIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2ZhdicsIHNlbGVjdGVkVXNlci50eXBlICsgJzonICsgc2VsZWN0ZWRVc2VyLmluZGV4KVxuICB9IGVsc2Uge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnZmF2JylcbiAgfVxuICB1cGRhdGVGYXZOb2RlKClcbn1cblxuZnVuY3Rpb24gdXNlcnNFcXVhbCAodXNlcjEsIHVzZXIyKSB7XG4gIGlmICh1c2VyMSA9PSBudWxsIHx8IHVzZXIyID09IG51bGwpIHJldHVybiBmYWxzZVxuICByZXR1cm4gdXNlcjEudHlwZSA9PT0gdXNlcjIudHlwZSAmJiB1c2VyMS5pbmRleCA9PT0gdXNlcjIuaW5kZXhcbn1cblxuZnVuY3Rpb24gdXBkYXRlRmF2Tm9kZSAoKSB7XG4gIGlmICh1c2Vyc0VxdWFsKGdldEN1cnJlbnRGYXYoKSwgc2VsZWN0ZWRVc2VyKSkge1xuICAgIGZhdk5vZGUuaW5uZXJIVE1MID0gJyYjeEU4Mzg7J1xuICB9IGVsc2Uge1xuICAgIGZhdk5vZGUuaW5uZXJIVE1MID0gJyYjeEU4M0EnXG4gIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlV2Vla1RleHQgKCkge1xuICBpZiAob2Zmc2V0ID09PSAwKSBjdXJyZW50V2Vla05vZGUuaW5uZXJIVE1MID0gYFdlZWsgJHtnZXRXZWVrKCkgKyBvZmZzZXR9YFxuICBlbHNlIGN1cnJlbnRXZWVrTm9kZS5pbm5lckhUTUwgPSBgPHN0cm9uZz5XZWVrICR7Z2V0V2VlaygpICsgb2Zmc2V0fTwvc3Ryb25nPmBcbn1cblxudXBkYXRlV2Vla1RleHQoKVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbiAoZSkge1xuICBpZiAoKHJlc3VsdHMubGVuZ3RoICE9PSAwKSAmJiAoZS5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGUua2V5ID09PSAnQXJyb3dVcCcpKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkJykpIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJylcblxuICAgIGNvbnN0IGNoYW5nZSA9IGUua2V5ID09PSAnQXJyb3dEb3duJyA/IDEgOiAtMVxuICAgIHNlbGVjdGVkUmVzdWx0ICs9IGNoYW5nZVxuICAgIGlmIChzZWxlY3RlZFJlc3VsdCA8IC0xKSBzZWxlY3RlZFJlc3VsdCA9IHJlc3VsdHMubGVuZ3RoIC0gMVxuICAgIGVsc2UgaWYgKHNlbGVjdGVkUmVzdWx0ID4gcmVzdWx0cy5sZW5ndGggLSAxKSBzZWxlY3RlZFJlc3VsdCA9IC0xXG5cbiAgICBpZiAoc2VsZWN0ZWRSZXN1bHQgIT09IC0xKSBhdXRvY29tcGxldGVOb2RlLmNoaWxkcmVuW3NlbGVjdGVkUmVzdWx0XS5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpXG4gIH1cbn0pXG5cbnNlYXJjaE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbiAoZSkge1xuICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ25vLWlucHV0JylcbiAgYXV0b2NvbXBsZXRlTm9kZS5pbm5lckhUTUwgPSAnJ1xuICBpZiAoaW5wdXROb2RlLnZhbHVlLnRyaW0oKSA9PT0gJycpIHJldHVyblxuXG4gIHNlbGVjdGVkUmVzdWx0ID0gLTFcbiAgcmVzdWx0cyA9IGZ1enp5LmZpbHRlcihyZW1vdmVEaWFjcml0aWNzKGlucHV0Tm9kZS52YWx1ZSksIFVTRVJTLCB7XG4gICAgZXh0cmFjdDogZnVuY3Rpb24gKGVsKSB7IHJldHVybiByZW1vdmVEaWFjcml0aWNzKGVsLnZhbHVlKSB9XG4gIH0pLnNsaWNlKDAsIDcpXG5cbiAgcmVzdWx0cy5mb3JFYWNoKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICBjb25zdCByZXN1bHROb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKVxuICAgIHJlc3VsdE5vZGUuaW5uZXJIVE1MID0gYCR7cmVzdWx0Lm9yaWdpbmFsLnZhbHVlfWBcbiAgICBhdXRvY29tcGxldGVOb2RlLmFwcGVuZENoaWxkKHJlc3VsdE5vZGUpXG4gIH0pXG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Ym1pdCcsIHN1Ym1pdEZvcm0pXG5cbmZ1bmN0aW9uIHN1Ym1pdEZvcm0gKGUpIHtcbiAgaWYgKGUpIGUucHJldmVudERlZmF1bHQoKVxuICBpZiAocmVzdWx0cy5sZW5ndGggIT09IDApIHtcbiAgICBjb25zdCBpbmRleEluUmVzdWx0ID0gc2VsZWN0ZWRSZXN1bHQgPT09IC0xID8gMCA6IHNlbGVjdGVkUmVzdWx0XG4gICAgc2VsZWN0ZWRVc2VyID0gVVNFUlNbcmVzdWx0c1tpbmRleEluUmVzdWx0XS5pbmRleF1cbiAgfVxuICBpZiAoc2VsZWN0ZWRVc2VyID09IG51bGwpIHJldHVyblxuXG4gIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnc2VhcmNoZWQnKVxuXG4gIHVwZGF0ZUZhdk5vZGUoKVxuXG4gIGlucHV0Tm9kZS52YWx1ZSA9IHNlbGVjdGVkVXNlci52YWx1ZVxuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG5cbiAgaW5wdXROb2RlLmJsdXIoKVxuXG4gIHNjaGVkdWxlSWZyYW1lLnNyYyA9IGdldFVSTE9mVXNlcihvZmZzZXQsIHNlbGVjdGVkVXNlci50eXBlLCBzZWxlY3RlZFVzZXIuaW5kZXggKyAxKVxuXG4gIGxldCBldmVudEFjdGlvblxuICBzd2l0Y2ggKHNlbGVjdGVkVXNlci50eXBlKSB7XG4gICAgY2FzZSAnYyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdDbGFzcydcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAndCc6XG4gICAgICBldmVudEFjdGlvbiA9ICdUZWFjaGVyJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdyJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1Jvb20nXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnU3R1ZGVudCdcbiAgICAgIGJyZWFrXG4gIH1cbiAgY29uc3QgZXZlbnRMYWJlbCA9IHNlbGVjdGVkVXNlci52YWx1ZVxuXG4gIGdhKGZ1bmN0aW9uICgpIHtcbiAgICBnYSgnc2VuZCcsIHsgaGl0VHlwZTogJ2V2ZW50JywgZXZlbnRDYXRlZ29yeTogJ3NlYXJjaCcsIGV2ZW50QWN0aW9uLCBldmVudExhYmVsIH0pXG4gIH0pXG59XG5cbmF1dG9jb21wbGV0ZU5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICBpZiAoYXV0b2NvbXBsZXRlTm9kZS5jb250YWlucyhlLnRhcmdldCkpIHtcbiAgICBzZWxlY3RlZFJlc3VsdCA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZS50YXJnZXQucGFyZW50RWxlbWVudC5jaGlsZE5vZGVzLCBlLnRhcmdldClcbiAgICBzdWJtaXRGb3JtKClcbiAgfVxufSlcblxucHJldkJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgb2Zmc2V0LS1cbiAgdXBkYXRlV2Vla1RleHQoKVxuICBzdWJtaXRGb3JtKClcbn0pXG5cbm5leHRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIG9mZnNldCsrXG4gIHVwZGF0ZVdlZWtUZXh0KClcbiAgc3VibWl0Rm9ybSgpXG59KVxuXG5pbnB1dE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gIGlucHV0Tm9kZS5zZWxlY3QoKVxufSlcblxud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBmdW5jdGlvbiAoKSB7XG4gIC8vIHRoaXMgd2lsbCByZW1vdmVkIHRoZSBzZWxlY3Rpb24gd2l0aG91dCBkcmF3aW5nIGZvY3VzIG9uIGl0IChzYWZhcmkpXG4gIC8vIHRoaXMgd2lsbCByZW1vdmVkIHNlbGVjdGlvbiBldmVuIHdoZW4gZm9jdXNpbmcgYW4gaWZyYW1lIChjaHJvbWUpXG4gIGNvbnN0IG9sZFZhbHVlID0gaW5wdXROb2RlLnZhbHVlXG4gIGlucHV0Tm9kZS52YWx1ZSA9ICcnXG4gIGlucHV0Tm9kZS52YWx1ZSA9IG9sZFZhbHVlXG59KVxuXG5zZWFyY2hOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBmdW5jdGlvbiAoZSkge1xuICBhdXRvY29tcGxldGVOb2RlLmlubmVySFRNTCA9ICcnXG59KVxuXG5mYXZOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICBpZiAodXNlcnNFcXVhbChnZXRDdXJyZW50RmF2KCksIHNlbGVjdGVkVXNlcikpIHtcbiAgICBjaGFuZ2VGYXYoZmFsc2UpXG4gIH0gZWxzZSB7XG4gICAgY2hhbmdlRmF2KHRydWUpXG4gIH1cbn0pXG5cbmNvbnN0IGN1cnJlbnRGYXYgPSBnZXRDdXJyZW50RmF2KClcblxuaWYgKGN1cnJlbnRGYXYpIHtcbiAgc2VsZWN0ZWRVc2VyID0gY3VycmVudEZhdlxuICBpbnB1dE5vZGUudmFsdWUgPSBzZWxlY3RlZFVzZXIudmFsdWVcbiAgc2NoZWR1bGVJZnJhbWUuc3JjID0gZ2V0VVJMT2ZVc2VyKG9mZnNldCwgc2VsZWN0ZWRVc2VyLnR5cGUsIHNlbGVjdGVkVXNlci5pbmRleCArIDEpXG4gIHVwZGF0ZUZhdk5vZGUoKVxuXG4gIGxldCBldmVudEFjdGlvblxuICBzd2l0Y2ggKHNlbGVjdGVkVXNlci50eXBlKSB7XG4gICAgY2FzZSAnYyc6XG4gICAgICBldmVudEFjdGlvbiA9ICdDbGFzcydcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAndCc6XG4gICAgICBldmVudEFjdGlvbiA9ICdUZWFjaGVyJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdyJzpcbiAgICAgIGV2ZW50QWN0aW9uID0gJ1Jvb20nXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3MnOlxuICAgICAgZXZlbnRBY3Rpb24gPSAnU3R1ZGVudCdcbiAgICAgIGJyZWFrXG4gIH1cbiAgY29uc3QgZXZlbnRMYWJlbCA9IHNlbGVjdGVkVXNlci52YWx1ZVxuXG4gIGdhKGZ1bmN0aW9uICgpIHtcbiAgICBnYSgnc2VuZCcsIHsgaGl0VHlwZTogJ2V2ZW50JywgZXZlbnRDYXRlZ29yeTogJ3NlYXJjaCBmYXYnLCBldmVudEFjdGlvbiwgZXZlbnRMYWJlbCB9KVxuICB9KVxufSBlbHNlIGlmIChpbnB1dE5vZGUudmFsdWUgPT09ICcnKSB7XG4gIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnbm8taW5wdXQnKVxuICBpbnB1dE5vZGUuZm9jdXMoKVxufVxuXG5kb2N1bWVudC5ib2R5LnN0eWxlLm9wYWNpdHkgPSAnMSdcblxud2luZG93LmVhc3RlckVnZ3MgPSBlYXN0ZXJFZ2dzXG4iXX0=