/);\n\n if (src && src[2]) {\n styles.background = \"center/cover no-repeat url('\" + src[2] + \"')\";\n }\n }\n };\n\n _proto3.generateClones = function generateClones(contents) {\n var classes = this.options.classes;\n var count = this.getCloneCount();\n var slides = contents.slice();\n\n while (slides.length < count) {\n push(slides, slides);\n }\n\n push(slides.slice(-count).reverse(), slides.slice(0, count)).forEach(function (content, index) {\n var attrs = assign({}, content.attrs, {\n class: content.attrs.class + \" \" + classes.clone\n });\n var clone = assign({}, content, {\n attrs: attrs\n });\n index < count ? contents.unshift(clone) : contents.push(clone);\n });\n };\n\n _proto3.getCloneCount = function getCloneCount() {\n if (this.isLoop()) {\n var options = this.options;\n\n if (options.clones) {\n return options.clones;\n }\n\n var perPage = max.apply(void 0, this.breakpoints.map(function (_ref6) {\n var options2 = _ref6[1];\n return options2.perPage;\n }));\n return perPage * ((options.flickMaxPages || 1) + 1);\n }\n\n return 0;\n };\n\n _proto3.renderArrows = function renderArrows() {\n var html = \"\";\n html += \"\";\n html += this.renderArrow(true);\n html += this.renderArrow(false);\n html += \"
\";\n return html;\n };\n\n _proto3.renderArrow = function renderArrow(prev) {\n var _this$options = this.options,\n classes = _this$options.classes,\n i18n = _this$options.i18n;\n var attrs = {\n class: classes.arrow + \" \" + (prev ? classes.prev : classes.next),\n type: \"button\",\n ariaLabel: prev ? i18n.prev : i18n.next\n };\n return \" \";\n };\n\n _proto3.html = function html() {\n var _this$config = this.config,\n rootClass = _this$config.rootClass,\n listTag = _this$config.listTag,\n arrows = _this$config.arrows,\n beforeTrack = _this$config.beforeTrack,\n afterTrack = _this$config.afterTrack,\n slider = _this$config.slider,\n beforeSlider = _this$config.beforeSlider,\n afterSlider = _this$config.afterSlider;\n var html = \"\";\n html += \"\";\n html += \"\";\n\n if (slider) {\n html += beforeSlider || \"\";\n html += \"
\";\n }\n\n html += beforeTrack || \"\";\n\n if (arrows) {\n html += this.renderArrows();\n }\n\n html += \"
\";\n html += \"<\" + listTag + \" class=\\\"splide__list\\\">\";\n html += this.renderSlides();\n html += \"\" + listTag + \">\";\n html += \"
\";\n html += afterTrack || \"\";\n\n if (slider) {\n html += \"
\";\n html += afterSlider || \"\";\n }\n\n html += \"
\";\n return html;\n };\n\n return SplideRenderer;\n}();\n\nexport { CLASSES, CLASS_ACTIVE, CLASS_ARROW, CLASS_ARROWS, CLASS_ARROW_NEXT, CLASS_ARROW_PREV, CLASS_CLONE, CLASS_CONTAINER, CLASS_FOCUS_IN, CLASS_INITIALIZED, CLASS_LIST, CLASS_LOADING, CLASS_NEXT, CLASS_OVERFLOW, CLASS_PAGINATION, CLASS_PAGINATION_PAGE, CLASS_PREV, CLASS_PROGRESS, CLASS_PROGRESS_BAR, CLASS_ROOT, CLASS_SLIDE, CLASS_SPINNER, CLASS_SR, CLASS_TOGGLE, CLASS_TOGGLE_PAUSE, CLASS_TOGGLE_PLAY, CLASS_TRACK, CLASS_VISIBLE, DEFAULTS, EVENT_ACTIVE, EVENT_ARROWS_MOUNTED, EVENT_ARROWS_UPDATED, EVENT_AUTOPLAY_PAUSE, EVENT_AUTOPLAY_PLAY, EVENT_AUTOPLAY_PLAYING, EVENT_CLICK, EVENT_DESTROY, EVENT_DRAG, EVENT_DRAGGED, EVENT_DRAGGING, EVENT_END_INDEX_CHANGED, EVENT_HIDDEN, EVENT_INACTIVE, EVENT_LAZYLOAD_LOADED, EVENT_MOUNTED, EVENT_MOVE, EVENT_MOVED, EVENT_NAVIGATION_MOUNTED, EVENT_OVERFLOW, EVENT_PAGINATION_MOUNTED, EVENT_PAGINATION_UPDATED, EVENT_READY, EVENT_REFRESH, EVENT_RESIZE, EVENT_RESIZED, EVENT_SCROLL, EVENT_SCROLLED, EVENT_SHIFTED, EVENT_SLIDE_KEYDOWN, EVENT_UPDATED, EVENT_VISIBLE, EventBinder, EventInterface, FADE, LOOP, LTR, RTL, RequestInterval, SLIDE, STATUS_CLASSES, Splide, SplideRenderer, State, TTB, Throttle, Splide as default };\n","import ProductManager from './modules/ProductManager'; // Dateiendung nicht notwendig ?\nimport Splide from '@splidejs/splide';\n(() => {\n // === DOM & VARS =======\n const DOM = {};\n\n // === INIT =============\n const init = () => {\n console.log('init!');\n // ProductManager();\n router();\n };\n\n // === EVENTHANDLER =====\n\n // === XHR/FETCH ========\n\n // === FUNCTIONS ========\n const router = () => {\n const path = window.location.pathname;\n console.log(path);\n\n switch (path) {\n case '/':\n case '/index.html':\n console.log('HOME');\n new Splide('.splide', {\n cover: true,\n autoHeight: true,\n height: '100%',\n fixedHeight: '100%',\n }).mount();\n break;\n case '/projects/02_product-manager.html':\n console.log('PRODUCT_MANAGER');\n ProductManager();\n break;\n default:\n console.log('no scripts found');\n }\n };\n\n init();\n})();\n"],"names":["isElement","isHTMLElement","applyStyles","effect","min","getComputedStyle","mathMax","mathMin","arrow","computeStyles","hash","max","allPlacements","placements","flip","hide","offset","popperOffsets","preventOverflow","this","id"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,58,59,60,62],"preExistingComment":"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsiZGV2L3NjcmlwdHMvdXRpbHMvaGVscGVycy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZW51bXMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXROb2RlTmFtZS5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvdy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2luc3RhbmNlT2YuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9hcHBseVN0eWxlcy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWF0aC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvdXNlckFnZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaXNMYXlvdXRWaWV3cG9ydC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldExheW91dFJlY3QuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9jb250YWlucy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENvbXB1dGVkU3R5bGUuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pc1RhYmxlRWxlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldERvY3VtZW50RWxlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFBhcmVudE5vZGUuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvd2l0aGluLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRGcmVzaFNpZGVPYmplY3QuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21lcmdlUGFkZGluZ09iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZXhwYW5kVG9IYXNoTWFwLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvYXJyb3cuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldFZhcmlhdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2NvbXB1dGVTdHlsZXMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9ldmVudExpc3RlbmVycy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0T3Bwb3NpdGVQbGFjZW1lbnQuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0V2luZG93U2Nyb2xsLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0V2luZG93U2Nyb2xsQmFyWC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFZpZXdwb3J0UmVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldERvY3VtZW50UmVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2lzU2Nyb2xsUGFyZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0U2Nyb2xsUGFyZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvbGlzdFNjcm9sbFBhcmVudHMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3JlY3RUb0NsaWVudFJlY3QuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRDbGlwcGluZ1JlY3QuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2NvbXB1dGVPZmZzZXRzLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9kZXRlY3RPdmVyZmxvdy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvY29tcHV0ZUF1dG9QbGFjZW1lbnQuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9mbGlwLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvaGlkZS5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL29mZnNldC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL3BvcHBlck9mZnNldHMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEFsdEF4aXMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wcmV2ZW50T3ZlcmZsb3cuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRIVE1MRWxlbWVudFNjcm9sbC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldE5vZGVTY3JvbGwuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRDb21wb3NpdGVSZWN0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9vcmRlck1vZGlmaWVycy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZGVib3VuY2UuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21lcmdlQnlOYW1lLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9jcmVhdGVQb3BwZXIuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3BvcHBlci5qcyIsIm5vZGVfbW9kdWxlcy9ib290c3RyYXAvZGlzdC9qcy9ib290c3RyYXAuZXNtLmpzIiwibm9kZV9tb2R1bGVzL3RvYXN0aWZ5LWpzL3NyYy90b2FzdGlmeS5qcyIsImRldi9zY3JpcHRzL21vZHVsZXMvVG9hc3QuanMiLCJub2RlX21vZHVsZXMvdXVpZC9kaXN0L3N0cmluZ2lmeS5qcyIsIm5vZGVfbW9kdWxlcy91dWlkL2Rpc3Qvcm5nLmpzIiwibm9kZV9tb2R1bGVzL3V1aWQvZGlzdC92NC5qcyIsImRldi9zY3JpcHRzL21vZHVsZXMvUHJvZHVjdE1hbmFnZXIuanMiLCJub2RlX21vZHVsZXMvQHNwbGlkZWpzL3NwbGlkZS9kaXN0L2pzL3NwbGlkZS5lc20uanMiLCJkZXYvc2NyaXB0cy9tYWluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEhlbHBlclxuZXhwb3J0IGZ1bmN0aW9uIHBhcmVudHMoZWwsIHNlbGVjdG9yKSB7XG4gIGNvbnN0IHBhcmVudHMgPSBbXTtcbiAgd2hpbGUgKChlbCA9IGVsLnBhcmVudE5vZGUpICYmIGVsICE9PSBkb2N1bWVudCkge1xuICAgIGlmICghc2VsZWN0b3IgfHwgZWwubWF0Y2hlcyhzZWxlY3RvcikpIHBhcmVudHMucHVzaChlbCk7XG4gIH1cbiAgcmV0dXJuIHBhcmVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRDbGFzcyhlbCwgY2xhc3NOYW1lKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNsYXNzTmFtZSkpIHtcbiAgICBlbC5jbGFzc0xpc3QuYWRkKC4uLmNsYXNzTmFtZSk7XG4gIH0gZWxzZSB7XG4gICAgZWwuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpO1xuICB9XG4gIHJldHVybiBlbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUNsYXNzKGVsLCBjbGFzc05hbWUpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoY2xhc3NOYW1lKSkge1xuICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoLi4uY2xhc3NOYW1lKTtcbiAgfSBlbHNlIHtcbiAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKGNsYXNzTmFtZSk7XG4gIH1cbiAgcmV0dXJuIGVsO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHBhcmVudHMsXG4gIGFkZENsYXNzLFxuICByZW1vdmVDbGFzcyxcbn07XG4iLCJleHBvcnQgdmFyIHRvcCA9ICd0b3AnO1xuZXhwb3J0IHZhciBib3R0b20gPSAnYm90dG9tJztcbmV4cG9ydCB2YXIgcmlnaHQgPSAncmlnaHQnO1xuZXhwb3J0IHZhciBsZWZ0ID0gJ2xlZnQnO1xuZXhwb3J0IHZhciBhdXRvID0gJ2F1dG8nO1xuZXhwb3J0IHZhciBiYXNlUGxhY2VtZW50cyA9IFt0b3AsIGJvdHRvbSwgcmlnaHQsIGxlZnRdO1xuZXhwb3J0IHZhciBzdGFydCA9ICdzdGFydCc7XG5leHBvcnQgdmFyIGVuZCA9ICdlbmQnO1xuZXhwb3J0IHZhciBjbGlwcGluZ1BhcmVudHMgPSAnY2xpcHBpbmdQYXJlbnRzJztcbmV4cG9ydCB2YXIgdmlld3BvcnQgPSAndmlld3BvcnQnO1xuZXhwb3J0IHZhciBwb3BwZXIgPSAncG9wcGVyJztcbmV4cG9ydCB2YXIgcmVmZXJlbmNlID0gJ3JlZmVyZW5jZSc7XG5leHBvcnQgdmFyIHZhcmlhdGlvblBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovYmFzZVBsYWNlbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICByZXR1cm4gYWNjLmNvbmNhdChbcGxhY2VtZW50ICsgXCItXCIgKyBzdGFydCwgcGxhY2VtZW50ICsgXCItXCIgKyBlbmRdKTtcbn0sIFtdKTtcbmV4cG9ydCB2YXIgcGxhY2VtZW50cyA9IC8qI19fUFVSRV9fKi9bXS5jb25jYXQoYmFzZVBsYWNlbWVudHMsIFthdXRvXSkucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICByZXR1cm4gYWNjLmNvbmNhdChbcGxhY2VtZW50LCBwbGFjZW1lbnQgKyBcIi1cIiArIHN0YXJ0LCBwbGFjZW1lbnQgKyBcIi1cIiArIGVuZF0pO1xufSwgW10pOyAvLyBtb2RpZmllcnMgdGhhdCBuZWVkIHRvIHJlYWQgdGhlIERPTVxuXG5leHBvcnQgdmFyIGJlZm9yZVJlYWQgPSAnYmVmb3JlUmVhZCc7XG5leHBvcnQgdmFyIHJlYWQgPSAncmVhZCc7XG5leHBvcnQgdmFyIGFmdGVyUmVhZCA9ICdhZnRlclJlYWQnOyAvLyBwdXJlLWxvZ2ljIG1vZGlmaWVyc1xuXG5leHBvcnQgdmFyIGJlZm9yZU1haW4gPSAnYmVmb3JlTWFpbic7XG5leHBvcnQgdmFyIG1haW4gPSAnbWFpbic7XG5leHBvcnQgdmFyIGFmdGVyTWFpbiA9ICdhZnRlck1haW4nOyAvLyBtb2RpZmllciB3aXRoIHRoZSBwdXJwb3NlIHRvIHdyaXRlIHRvIHRoZSBET00gKG9yIHdyaXRlIGludG8gYSBmcmFtZXdvcmsgc3RhdGUpXG5cbmV4cG9ydCB2YXIgYmVmb3JlV3JpdGUgPSAnYmVmb3JlV3JpdGUnO1xuZXhwb3J0IHZhciB3cml0ZSA9ICd3cml0ZSc7XG5leHBvcnQgdmFyIGFmdGVyV3JpdGUgPSAnYWZ0ZXJXcml0ZSc7XG5leHBvcnQgdmFyIG1vZGlmaWVyUGhhc2VzID0gW2JlZm9yZVJlYWQsIHJlYWQsIGFmdGVyUmVhZCwgYmVmb3JlTWFpbiwgbWFpbiwgYWZ0ZXJNYWluLCBiZWZvcmVXcml0ZSwgd3JpdGUsIGFmdGVyV3JpdGVdOyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE5vZGVOYW1lKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnQgPyAoZWxlbWVudC5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA6IG51bGw7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93KG5vZGUpIHtcbiAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cblxuICBpZiAobm9kZS50b1N0cmluZygpICE9PSAnW29iamVjdCBXaW5kb3ddJykge1xuICAgIHZhciBvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50O1xuICAgIHJldHVybiBvd25lckRvY3VtZW50ID8gb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3cgOiB3aW5kb3c7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5FbGVtZW50O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5IVE1MRWxlbWVudDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gaXNTaGFkb3dSb290KG5vZGUpIHtcbiAgLy8gSUUgMTEgaGFzIG5vIFNoYWRvd1Jvb3RcbiAgaWYgKHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLlNoYWRvd1Jvb3Q7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgU2hhZG93Um9vdDtcbn1cblxuZXhwb3J0IHsgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50LCBpc1NoYWRvd1Jvb3QgfTsiLCJpbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4uL2RvbS11dGlscy9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiOyAvLyBUaGlzIG1vZGlmaWVyIHRha2VzIHRoZSBzdHlsZXMgcHJlcGFyZWQgYnkgdGhlIGBjb21wdXRlU3R5bGVzYCBtb2RpZmllclxuLy8gYW5kIGFwcGxpZXMgdGhlbSB0byB0aGUgSFRNTEVsZW1lbnRzIHN1Y2ggYXMgcG9wcGVyIGFuZCBhcnJvd1xuXG5mdW5jdGlvbiBhcHBseVN0eWxlcyhfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGU7XG4gIE9iamVjdC5rZXlzKHN0YXRlLmVsZW1lbnRzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFyIHN0eWxlID0gc3RhdGUuc3R5bGVzW25hbWVdIHx8IHt9O1xuICAgIHZhciBhdHRyaWJ1dGVzID0gc3RhdGUuYXR0cmlidXRlc1tuYW1lXSB8fCB7fTtcbiAgICB2YXIgZWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzW25hbWVdOyAvLyBhcnJvdyBpcyBvcHRpb25hbCArIHZpcnR1YWwgZWxlbWVudHNcblxuICAgIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCAhZ2V0Tm9kZU5hbWUoZWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIEZsb3cgZG9lc24ndCBzdXBwb3J0IHRvIGV4dGVuZCB0aGlzIHByb3BlcnR5LCBidXQgaXQncyB0aGUgbW9zdFxuICAgIC8vIGVmZmVjdGl2ZSB3YXkgdG8gYXBwbHkgc3R5bGVzIHRvIGFuIEhUTUxFbGVtZW50XG4gICAgLy8gJEZsb3dGaXhNZVtjYW5ub3Qtd3JpdGVdXG5cblxuICAgIE9iamVjdC5hc3NpZ24oZWxlbWVudC5zdHlsZSwgc3R5bGUpO1xuICAgIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGF0dHJpYnV0ZXNbbmFtZV07XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSA9PT0gdHJ1ZSA/ICcnIDogdmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZWZmZWN0KF9yZWYyKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYyLnN0YXRlO1xuICB2YXIgaW5pdGlhbFN0eWxlcyA9IHtcbiAgICBwb3BwZXI6IHtcbiAgICAgIHBvc2l0aW9uOiBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5LFxuICAgICAgbGVmdDogJzAnLFxuICAgICAgdG9wOiAnMCcsXG4gICAgICBtYXJnaW46ICcwJ1xuICAgIH0sXG4gICAgYXJyb3c6IHtcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnXG4gICAgfSxcbiAgICByZWZlcmVuY2U6IHt9XG4gIH07XG4gIE9iamVjdC5hc3NpZ24oc3RhdGUuZWxlbWVudHMucG9wcGVyLnN0eWxlLCBpbml0aWFsU3R5bGVzLnBvcHBlcik7XG4gIHN0YXRlLnN0eWxlcyA9IGluaXRpYWxTdHlsZXM7XG5cbiAgaWYgKHN0YXRlLmVsZW1lbnRzLmFycm93KSB7XG4gICAgT2JqZWN0LmFzc2lnbihzdGF0ZS5lbGVtZW50cy5hcnJvdy5zdHlsZSwgaW5pdGlhbFN0eWxlcy5hcnJvdyk7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIE9iamVjdC5rZXlzKHN0YXRlLmVsZW1lbnRzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICB2YXIgZWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzW25hbWVdO1xuICAgICAgdmFyIGF0dHJpYnV0ZXMgPSBzdGF0ZS5hdHRyaWJ1dGVzW25hbWVdIHx8IHt9O1xuICAgICAgdmFyIHN0eWxlUHJvcGVydGllcyA9IE9iamVjdC5rZXlzKHN0YXRlLnN0eWxlcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IHN0YXRlLnN0eWxlc1tuYW1lXSA6IGluaXRpYWxTdHlsZXNbbmFtZV0pOyAvLyBTZXQgYWxsIHZhbHVlcyB0byBhbiBlbXB0eSBzdHJpbmcgdG8gdW5zZXQgdGhlbVxuXG4gICAgICB2YXIgc3R5bGUgPSBzdHlsZVByb3BlcnRpZXMucmVkdWNlKGZ1bmN0aW9uIChzdHlsZSwgcHJvcGVydHkpIHtcbiAgICAgICAgc3R5bGVbcHJvcGVydHldID0gJyc7XG4gICAgICAgIHJldHVybiBzdHlsZTtcbiAgICAgIH0sIHt9KTsgLy8gYXJyb3cgaXMgb3B0aW9uYWwgKyB2aXJ0dWFsIGVsZW1lbnRzXG5cbiAgICAgIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCAhZ2V0Tm9kZU5hbWUoZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBPYmplY3QuYXNzaWduKGVsZW1lbnQuc3R5bGUsIHN0eWxlKTtcbiAgICAgIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKGF0dHJpYnV0ZSkge1xuICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdhcHBseVN0eWxlcycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnd3JpdGUnLFxuICBmbjogYXBwbHlTdHlsZXMsXG4gIGVmZmVjdDogZWZmZWN0LFxuICByZXF1aXJlczogWydjb21wdXRlU3R5bGVzJ11cbn07IiwiaW1wb3J0IHsgYXV0byB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzBdO1xufSIsImV4cG9ydCB2YXIgbWF4ID0gTWF0aC5tYXg7XG5leHBvcnQgdmFyIG1pbiA9IE1hdGgubWluO1xuZXhwb3J0IHZhciByb3VuZCA9IE1hdGgucm91bmQ7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VUFTdHJpbmcoKSB7XG4gIHZhciB1YURhdGEgPSBuYXZpZ2F0b3IudXNlckFnZW50RGF0YTtcblxuICBpZiAodWFEYXRhICE9IG51bGwgJiYgdWFEYXRhLmJyYW5kcyAmJiBBcnJheS5pc0FycmF5KHVhRGF0YS5icmFuZHMpKSB7XG4gICAgcmV0dXJuIHVhRGF0YS5icmFuZHMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4gaXRlbS5icmFuZCArIFwiL1wiICsgaXRlbS52ZXJzaW9uO1xuICAgIH0pLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHJldHVybiBuYXZpZ2F0b3IudXNlckFnZW50O1xufSIsImltcG9ydCBnZXRVQVN0cmluZyBmcm9tIFwiLi4vdXRpbHMvdXNlckFnZW50LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0xheW91dFZpZXdwb3J0KCkge1xuICByZXR1cm4gIS9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QoZ2V0VUFTdHJpbmcoKSk7XG59IiwiaW1wb3J0IHsgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBpc0xheW91dFZpZXdwb3J0IGZyb20gXCIuL2lzTGF5b3V0Vmlld3BvcnQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBpbmNsdWRlU2NhbGUsIGlzRml4ZWRTdHJhdGVneSkge1xuICBpZiAoaW5jbHVkZVNjYWxlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlU2NhbGUgPSBmYWxzZTtcbiAgfVxuXG4gIGlmIChpc0ZpeGVkU3RyYXRlZ3kgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWRTdHJhdGVneSA9IGZhbHNlO1xuICB9XG5cbiAgdmFyIGNsaWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB2YXIgc2NhbGVYID0gMTtcbiAgdmFyIHNjYWxlWSA9IDE7XG5cbiAgaWYgKGluY2x1ZGVTY2FsZSAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgc2NhbGVYID0gZWxlbWVudC5vZmZzZXRXaWR0aCA+IDAgPyByb3VuZChjbGllbnRSZWN0LndpZHRoKSAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMSA6IDE7XG4gICAgc2NhbGVZID0gZWxlbWVudC5vZmZzZXRIZWlnaHQgPiAwID8gcm91bmQoY2xpZW50UmVjdC5oZWlnaHQpIC8gZWxlbWVudC5vZmZzZXRIZWlnaHQgfHwgMSA6IDE7XG4gIH1cblxuICB2YXIgX3JlZiA9IGlzRWxlbWVudChlbGVtZW50KSA/IGdldFdpbmRvdyhlbGVtZW50KSA6IHdpbmRvdyxcbiAgICAgIHZpc3VhbFZpZXdwb3J0ID0gX3JlZi52aXN1YWxWaWV3cG9ydDtcblxuICB2YXIgYWRkVmlzdWFsT2Zmc2V0cyA9ICFpc0xheW91dFZpZXdwb3J0KCkgJiYgaXNGaXhlZFN0cmF0ZWd5O1xuICB2YXIgeCA9IChjbGllbnRSZWN0LmxlZnQgKyAoYWRkVmlzdWFsT2Zmc2V0cyAmJiB2aXN1YWxWaWV3cG9ydCA/IHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQgOiAwKSkgLyBzY2FsZVg7XG4gIHZhciB5ID0gKGNsaWVudFJlY3QudG9wICsgKGFkZFZpc3VhbE9mZnNldHMgJiYgdmlzdWFsVmlld3BvcnQgPyB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3AgOiAwKSkgLyBzY2FsZVk7XG4gIHZhciB3aWR0aCA9IGNsaWVudFJlY3Qud2lkdGggLyBzY2FsZVg7XG4gIHZhciBoZWlnaHQgPSBjbGllbnRSZWN0LmhlaWdodCAvIHNjYWxlWTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgdG9wOiB5LFxuICAgIHJpZ2h0OiB4ICsgd2lkdGgsXG4gICAgYm90dG9tOiB5ICsgaGVpZ2h0LFxuICAgIGxlZnQ6IHgsXG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH07XG59IiwiaW1wb3J0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjsgLy8gUmV0dXJucyB0aGUgbGF5b3V0IHJlY3Qgb2YgYW4gZWxlbWVudCByZWxhdGl2ZSB0byBpdHMgb2Zmc2V0UGFyZW50LiBMYXlvdXRcbi8vIG1lYW5zIGl0IGRvZXNuJ3QgdGFrZSBpbnRvIGFjY291bnQgdHJhbnNmb3Jtcy5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0TGF5b3V0UmVjdChlbGVtZW50KSB7XG4gIHZhciBjbGllbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQpOyAvLyBVc2UgdGhlIGNsaWVudFJlY3Qgc2l6ZXMgaWYgaXQncyBub3QgYmVlbiB0cmFuc2Zvcm1lZC5cbiAgLy8gRml4ZXMgaHR0cHM6Ly9naXRodWIuY29tL3BvcHBlcmpzL3BvcHBlci1jb3JlL2lzc3Vlcy8xMjIzXG5cbiAgdmFyIHdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgdmFyIGhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuXG4gIGlmIChNYXRoLmFicyhjbGllbnRSZWN0LndpZHRoIC0gd2lkdGgpIDw9IDEpIHtcbiAgICB3aWR0aCA9IGNsaWVudFJlY3Qud2lkdGg7XG4gIH1cblxuICBpZiAoTWF0aC5hYnMoY2xpZW50UmVjdC5oZWlnaHQgLSBoZWlnaHQpIDw9IDEpIHtcbiAgICBoZWlnaHQgPSBjbGllbnRSZWN0LmhlaWdodDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogZWxlbWVudC5vZmZzZXRMZWZ0LFxuICAgIHk6IGVsZW1lbnQub2Zmc2V0VG9wLFxuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodFxuICB9O1xufSIsImltcG9ydCB7IGlzU2hhZG93Um9vdCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbnRhaW5zKHBhcmVudCwgY2hpbGQpIHtcbiAgdmFyIHJvb3ROb2RlID0gY2hpbGQuZ2V0Um9vdE5vZGUgJiYgY2hpbGQuZ2V0Um9vdE5vZGUoKTsgLy8gRmlyc3QsIGF0dGVtcHQgd2l0aCBmYXN0ZXIgbmF0aXZlIG1ldGhvZFxuXG4gIGlmIChwYXJlbnQuY29udGFpbnMoY2hpbGQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gLy8gdGhlbiBmYWxsYmFjayB0byBjdXN0b20gaW1wbGVtZW50YXRpb24gd2l0aCBTaGFkb3cgRE9NIHN1cHBvcnRcbiAgZWxzZSBpZiAocm9vdE5vZGUgJiYgaXNTaGFkb3dSb290KHJvb3ROb2RlKSkge1xuICAgICAgdmFyIG5leHQgPSBjaGlsZDtcblxuICAgICAgZG8ge1xuICAgICAgICBpZiAobmV4dCAmJiBwYXJlbnQuaXNTYW1lTm9kZShuZXh0KSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXTogbmVlZCBhIGJldHRlciB3YXkgdG8gaGFuZGxlIHRoaXMuLi5cblxuXG4gICAgICAgIG5leHQgPSBuZXh0LnBhcmVudE5vZGUgfHwgbmV4dC5ob3N0O1xuICAgICAgfSB3aGlsZSAobmV4dCk7XG4gICAgfSAvLyBHaXZlIHVwLCB0aGUgcmVzdWx0IGlzIGZhbHNlXG5cblxuICByZXR1cm4gZmFsc2U7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0V2luZG93KGVsZW1lbnQpLmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG59IiwiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RhYmxlRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiBbJ3RhYmxlJywgJ3RkJywgJ3RoJ10uaW5kZXhPZihnZXROb2RlTmFtZShlbGVtZW50KSkgPj0gMDtcbn0iLCJpbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkge1xuICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dOiBhc3N1bWUgYm9keSBpcyBhbHdheXMgYXZhaWxhYmxlXG4gIHJldHVybiAoKGlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQub3duZXJEb2N1bWVudCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICBlbGVtZW50LmRvY3VtZW50KSB8fCB3aW5kb3cuZG9jdW1lbnQpLmRvY3VtZW50RWxlbWVudDtcbn0iLCJpbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgeyBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRQYXJlbnROb2RlKGVsZW1lbnQpIHtcbiAgaWYgKGdldE5vZGVOYW1lKGVsZW1lbnQpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIHJldHVybiAoLy8gdGhpcyBpcyBhIHF1aWNrZXIgKGJ1dCBsZXNzIHR5cGUgc2FmZSkgd2F5IHRvIHNhdmUgcXVpdGUgc29tZSBieXRlcyBmcm9tIHRoZSBidW5kbGVcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dXG4gICAgLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgZWxlbWVudC5hc3NpZ25lZFNsb3QgfHwgLy8gc3RlcCBpbnRvIHRoZSBzaGFkb3cgRE9NIG9mIHRoZSBwYXJlbnQgb2YgYSBzbG90dGVkIG5vZGVcbiAgICBlbGVtZW50LnBhcmVudE5vZGUgfHwgKCAvLyBET00gRWxlbWVudCBkZXRlY3RlZFxuICAgIGlzU2hhZG93Um9vdChlbGVtZW50KSA/IGVsZW1lbnQuaG9zdCA6IG51bGwpIHx8IC8vIFNoYWRvd1Jvb3QgZGV0ZWN0ZWRcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYWxsXTogSFRNTEVsZW1lbnQgaXMgYSBOb2RlXG4gICAgZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpIC8vIGZhbGxiYWNrXG5cbiAgKTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50LCBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgaXNUYWJsZUVsZW1lbnQgZnJvbSBcIi4vaXNUYWJsZUVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRQYXJlbnROb2RlIGZyb20gXCIuL2dldFBhcmVudE5vZGUuanNcIjtcbmltcG9ydCBnZXRVQVN0cmluZyBmcm9tIFwiLi4vdXRpbHMvdXNlckFnZW50LmpzXCI7XG5cbmZ1bmN0aW9uIGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCkge1xuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgLy8gaHR0cHM6Ly9naXRodWIuY29tL3BvcHBlcmpzL3BvcHBlci1jb3JlL2lzc3Vlcy84MzdcbiAgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnQub2Zmc2V0UGFyZW50O1xufSAvLyBgLm9mZnNldFBhcmVudGAgcmVwb3J0cyBgbnVsbGAgZm9yIGZpeGVkIGVsZW1lbnRzLCB3aGlsZSBhYnNvbHV0ZSBlbGVtZW50c1xuLy8gcmV0dXJuIHRoZSBjb250YWluaW5nIGJsb2NrXG5cblxuZnVuY3Rpb24gZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHtcbiAgdmFyIGlzRmlyZWZveCA9IC9maXJlZm94L2kudGVzdChnZXRVQVN0cmluZygpKTtcbiAgdmFyIGlzSUUgPSAvVHJpZGVudC9pLnRlc3QoZ2V0VUFTdHJpbmcoKSk7XG5cbiAgaWYgKGlzSUUgJiYgaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIC8vIEluIElFIDksIDEwIGFuZCAxMSBmaXhlZCBlbGVtZW50cyBjb250YWluaW5nIGJsb2NrIGlzIGFsd2F5cyBlc3RhYmxpc2hlZCBieSB0aGUgdmlld3BvcnRcbiAgICB2YXIgZWxlbWVudENzcyA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG5cbiAgICBpZiAoZWxlbWVudENzcy5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgdmFyIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcblxuICBpZiAoaXNTaGFkb3dSb290KGN1cnJlbnROb2RlKSkge1xuICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUuaG9zdDtcbiAgfVxuXG4gIHdoaWxlIChpc0hUTUxFbGVtZW50KGN1cnJlbnROb2RlKSAmJiBbJ2h0bWwnLCAnYm9keSddLmluZGV4T2YoZ2V0Tm9kZU5hbWUoY3VycmVudE5vZGUpKSA8IDApIHtcbiAgICB2YXIgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50Tm9kZSk7IC8vIFRoaXMgaXMgbm9uLWV4aGF1c3RpdmUgYnV0IGNvdmVycyB0aGUgbW9zdCBjb21tb24gQ1NTIHByb3BlcnRpZXMgdGhhdFxuICAgIC8vIGNyZWF0ZSBhIGNvbnRhaW5pbmcgYmxvY2suXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NvbnRhaW5pbmdfYmxvY2sjaWRlbnRpZnlpbmdfdGhlX2NvbnRhaW5pbmdfYmxvY2tcblxuICAgIGlmIChjc3MudHJhbnNmb3JtICE9PSAnbm9uZScgfHwgY3NzLnBlcnNwZWN0aXZlICE9PSAnbm9uZScgfHwgY3NzLmNvbnRhaW4gPT09ICdwYWludCcgfHwgWyd0cmFuc2Zvcm0nLCAncGVyc3BlY3RpdmUnXS5pbmRleE9mKGNzcy53aWxsQ2hhbmdlKSAhPT0gLTEgfHwgaXNGaXJlZm94ICYmIGNzcy53aWxsQ2hhbmdlID09PSAnZmlsdGVyJyB8fCBpc0ZpcmVmb3ggJiYgY3NzLmZpbHRlciAmJiBjc3MuZmlsdGVyICE9PSAnbm9uZScpIHtcbiAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5wYXJlbnROb2RlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufSAvLyBHZXRzIHRoZSBjbG9zZXN0IGFuY2VzdG9yIHBvc2l0aW9uZWQgZWxlbWVudC4gSGFuZGxlcyBzb21lIGVkZ2UgY2FzZXMsXG4vLyBzdWNoIGFzIHRhYmxlIGFuY2VzdG9ycyBhbmQgY3Jvc3MgYnJvd3NlciBidWdzLlxuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50KSB7XG4gIHZhciB3aW5kb3cgPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIHZhciBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQpO1xuXG4gIHdoaWxlIChvZmZzZXRQYXJlbnQgJiYgaXNUYWJsZUVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBnZXRDb21wdXRlZFN0eWxlKG9mZnNldFBhcmVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQpO1xuICB9XG5cbiAgaWYgKG9mZnNldFBhcmVudCAmJiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSA9PT0gJ2h0bWwnIHx8IGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgPT09ICdib2R5JyAmJiBnZXRDb21wdXRlZFN0eWxlKG9mZnNldFBhcmVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnKSkge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cblxuICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB8fCB3aW5kb3c7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gWyd0b3AnLCAnYm90dG9tJ10uaW5kZXhPZihwbGFjZW1lbnQpID49IDAgPyAneCcgOiAneSc7XG59IiwiaW1wb3J0IHsgbWF4IGFzIG1hdGhNYXgsIG1pbiBhcyBtYXRoTWluIH0gZnJvbSBcIi4vbWF0aC5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhpbihtaW4sIHZhbHVlLCBtYXgpIHtcbiAgcmV0dXJuIG1hdGhNYXgobWluLCBtYXRoTWluKHZhbHVlLCBtYXgpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB3aXRoaW5NYXhDbGFtcChtaW4sIHZhbHVlLCBtYXgpIHtcbiAgdmFyIHYgPSB3aXRoaW4obWluLCB2YWx1ZSwgbWF4KTtcbiAgcmV0dXJuIHYgPiBtYXggPyBtYXggOiB2O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEZyZXNoU2lkZU9iamVjdCgpIHtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IDAsXG4gICAgcmlnaHQ6IDAsXG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IDBcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0RnJlc2hTaWRlT2JqZWN0IGZyb20gXCIuL2dldEZyZXNoU2lkZU9iamVjdC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWVyZ2VQYWRkaW5nT2JqZWN0KHBhZGRpbmdPYmplY3QpIHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGdldEZyZXNoU2lkZU9iamVjdCgpLCBwYWRkaW5nT2JqZWN0KTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBleHBhbmRUb0hhc2hNYXAodmFsdWUsIGtleXMpIHtcbiAgcmV0dXJuIGtleXMucmVkdWNlKGZ1bmN0aW9uIChoYXNoTWFwLCBrZXkpIHtcbiAgICBoYXNoTWFwW2tleV0gPSB2YWx1ZTtcbiAgICByZXR1cm4gaGFzaE1hcDtcbiAgfSwge30pO1xufSIsImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0TGF5b3V0UmVjdCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldExheW91dFJlY3QuanNcIjtcbmltcG9ydCBjb250YWlucyBmcm9tIFwiLi4vZG9tLXV0aWxzL2NvbnRhaW5zLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanNcIjtcbmltcG9ydCB7IHdpdGhpbiB9IGZyb20gXCIuLi91dGlscy93aXRoaW4uanNcIjtcbmltcG9ydCBtZXJnZVBhZGRpbmdPYmplY3QgZnJvbSBcIi4uL3V0aWxzL21lcmdlUGFkZGluZ09iamVjdC5qc1wiO1xuaW1wb3J0IGV4cGFuZFRvSGFzaE1hcCBmcm9tIFwiLi4vdXRpbHMvZXhwYW5kVG9IYXNoTWFwLmpzXCI7XG5pbXBvcnQgeyBsZWZ0LCByaWdodCwgYmFzZVBsYWNlbWVudHMsIHRvcCwgYm90dG9tIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxudmFyIHRvUGFkZGluZ09iamVjdCA9IGZ1bmN0aW9uIHRvUGFkZGluZ09iamVjdChwYWRkaW5nLCBzdGF0ZSkge1xuICBwYWRkaW5nID0gdHlwZW9mIHBhZGRpbmcgPT09ICdmdW5jdGlvbicgPyBwYWRkaW5nKE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnJlY3RzLCB7XG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSkpIDogcGFkZGluZztcbiAgcmV0dXJuIG1lcmdlUGFkZGluZ09iamVjdCh0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBwYWRkaW5nIDogZXhwYW5kVG9IYXNoTWFwKHBhZGRpbmcsIGJhc2VQbGFjZW1lbnRzKSk7XG59O1xuXG5mdW5jdGlvbiBhcnJvdyhfcmVmKSB7XG4gIHZhciBfc3RhdGUkbW9kaWZpZXJzRGF0YSQ7XG5cbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWUsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zO1xuICB2YXIgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMuYXJyb3c7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzO1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KTtcbiAgdmFyIGF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCk7XG4gIHZhciBpc1ZlcnRpY2FsID0gW2xlZnQsIHJpZ2h0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDA7XG4gIHZhciBsZW4gPSBpc1ZlcnRpY2FsID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuXG4gIGlmICghYXJyb3dFbGVtZW50IHx8ICFwb3BwZXJPZmZzZXRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHBhZGRpbmdPYmplY3QgPSB0b1BhZGRpbmdPYmplY3Qob3B0aW9ucy5wYWRkaW5nLCBzdGF0ZSk7XG4gIHZhciBhcnJvd1JlY3QgPSBnZXRMYXlvdXRSZWN0KGFycm93RWxlbWVudCk7XG4gIHZhciBtaW5Qcm9wID0gYXhpcyA9PT0gJ3knID8gdG9wIDogbGVmdDtcbiAgdmFyIG1heFByb3AgPSBheGlzID09PSAneScgPyBib3R0b20gOiByaWdodDtcbiAgdmFyIGVuZERpZmYgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbbGVuXSArIHN0YXRlLnJlY3RzLnJlZmVyZW5jZVtheGlzXSAtIHBvcHBlck9mZnNldHNbYXhpc10gLSBzdGF0ZS5yZWN0cy5wb3BwZXJbbGVuXTtcbiAgdmFyIHN0YXJ0RGlmZiA9IHBvcHBlck9mZnNldHNbYXhpc10gLSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbYXhpc107XG4gIHZhciBhcnJvd09mZnNldFBhcmVudCA9IGdldE9mZnNldFBhcmVudChhcnJvd0VsZW1lbnQpO1xuICB2YXIgY2xpZW50U2l6ZSA9IGFycm93T2Zmc2V0UGFyZW50ID8gYXhpcyA9PT0gJ3knID8gYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50SGVpZ2h0IHx8IDAgOiBhcnJvd09mZnNldFBhcmVudC5jbGllbnRXaWR0aCB8fCAwIDogMDtcbiAgdmFyIGNlbnRlclRvUmVmZXJlbmNlID0gZW5kRGlmZiAvIDIgLSBzdGFydERpZmYgLyAyOyAvLyBNYWtlIHN1cmUgdGhlIGFycm93IGRvZXNuJ3Qgb3ZlcmZsb3cgdGhlIHBvcHBlciBpZiB0aGUgY2VudGVyIHBvaW50IGlzXG4gIC8vIG91dHNpZGUgb2YgdGhlIHBvcHBlciBib3VuZHNcblxuICB2YXIgbWluID0gcGFkZGluZ09iamVjdFttaW5Qcm9wXTtcbiAgdmFyIG1heCA9IGNsaWVudFNpemUgLSBhcnJvd1JlY3RbbGVuXSAtIHBhZGRpbmdPYmplY3RbbWF4UHJvcF07XG4gIHZhciBjZW50ZXIgPSBjbGllbnRTaXplIC8gMiAtIGFycm93UmVjdFtsZW5dIC8gMiArIGNlbnRlclRvUmVmZXJlbmNlO1xuICB2YXIgb2Zmc2V0ID0gd2l0aGluKG1pbiwgY2VudGVyLCBtYXgpOyAvLyBQcmV2ZW50cyBicmVha2luZyBzeW50YXggaGlnaGxpZ2h0aW5nLi4uXG5cbiAgdmFyIGF4aXNQcm9wID0gYXhpcztcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IChfc3RhdGUkbW9kaWZpZXJzRGF0YSQgPSB7fSwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkW2F4aXNQcm9wXSA9IG9mZnNldCwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkLmNlbnRlck9mZnNldCA9IG9mZnNldCAtIGNlbnRlciwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkKTtcbn1cblxuZnVuY3Rpb24gZWZmZWN0KF9yZWYyKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYyLnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYyLm9wdGlvbnM7XG4gIHZhciBfb3B0aW9ucyRlbGVtZW50ID0gb3B0aW9ucy5lbGVtZW50LFxuICAgICAgYXJyb3dFbGVtZW50ID0gX29wdGlvbnMkZWxlbWVudCA9PT0gdm9pZCAwID8gJ1tkYXRhLXBvcHBlci1hcnJvd10nIDogX29wdGlvbnMkZWxlbWVudDtcblxuICBpZiAoYXJyb3dFbGVtZW50ID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gQ1NTIHNlbGVjdG9yXG5cblxuICBpZiAodHlwZW9mIGFycm93RWxlbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5wb3BwZXIucXVlcnlTZWxlY3RvcihhcnJvd0VsZW1lbnQpO1xuXG4gICAgaWYgKCFhcnJvd0VsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBpZiAoIWNvbnRhaW5zKHN0YXRlLmVsZW1lbnRzLnBvcHBlciwgYXJyb3dFbGVtZW50KSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRlLmVsZW1lbnRzLmFycm93ID0gYXJyb3dFbGVtZW50O1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnYXJyb3cnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICBmbjogYXJyb3csXG4gIGVmZmVjdDogZWZmZWN0LFxuICByZXF1aXJlczogWydwb3BwZXJPZmZzZXRzJ10sXG4gIHJlcXVpcmVzSWZFeGlzdHM6IFsncHJldmVudE92ZXJmbG93J11cbn07IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMV07XG59IiwiaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgYm90dG9tLCBlbmQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4uL3V0aWxzL2dldFZhcmlhdGlvbi5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciB1bnNldFNpZGVzID0ge1xuICB0b3A6ICdhdXRvJyxcbiAgcmlnaHQ6ICdhdXRvJyxcbiAgYm90dG9tOiAnYXV0bycsXG4gIGxlZnQ6ICdhdXRvJ1xufTsgLy8gUm91bmQgdGhlIG9mZnNldHMgdG8gdGhlIG5lYXJlc3Qgc3VpdGFibGUgc3VicGl4ZWwgYmFzZWQgb24gdGhlIERQUi5cbi8vIFpvb21pbmcgY2FuIGNoYW5nZSB0aGUgRFBSLCBidXQgaXQgc2VlbXMgdG8gcmVwb3J0IGEgdmFsdWUgdGhhdCB3aWxsXG4vLyBjbGVhbmx5IGRpdmlkZSB0aGUgdmFsdWVzIGludG8gdGhlIGFwcHJvcHJpYXRlIHN1YnBpeGVscy5cblxuZnVuY3Rpb24gcm91bmRPZmZzZXRzQnlEUFIoX3JlZiwgd2luKSB7XG4gIHZhciB4ID0gX3JlZi54LFxuICAgICAgeSA9IF9yZWYueTtcbiAgdmFyIGRwciA9IHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG4gIHJldHVybiB7XG4gICAgeDogcm91bmQoeCAqIGRwcikgLyBkcHIgfHwgMCxcbiAgICB5OiByb3VuZCh5ICogZHByKSAvIGRwciB8fCAwXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb1N0eWxlcyhfcmVmMikge1xuICB2YXIgX09iamVjdCRhc3NpZ24yO1xuXG4gIHZhciBwb3BwZXIgPSBfcmVmMi5wb3BwZXIsXG4gICAgICBwb3BwZXJSZWN0ID0gX3JlZjIucG9wcGVyUmVjdCxcbiAgICAgIHBsYWNlbWVudCA9IF9yZWYyLnBsYWNlbWVudCxcbiAgICAgIHZhcmlhdGlvbiA9IF9yZWYyLnZhcmlhdGlvbixcbiAgICAgIG9mZnNldHMgPSBfcmVmMi5vZmZzZXRzLFxuICAgICAgcG9zaXRpb24gPSBfcmVmMi5wb3NpdGlvbixcbiAgICAgIGdwdUFjY2VsZXJhdGlvbiA9IF9yZWYyLmdwdUFjY2VsZXJhdGlvbixcbiAgICAgIGFkYXB0aXZlID0gX3JlZjIuYWRhcHRpdmUsXG4gICAgICByb3VuZE9mZnNldHMgPSBfcmVmMi5yb3VuZE9mZnNldHMsXG4gICAgICBpc0ZpeGVkID0gX3JlZjIuaXNGaXhlZDtcbiAgdmFyIF9vZmZzZXRzJHggPSBvZmZzZXRzLngsXG4gICAgICB4ID0gX29mZnNldHMkeCA9PT0gdm9pZCAwID8gMCA6IF9vZmZzZXRzJHgsXG4gICAgICBfb2Zmc2V0cyR5ID0gb2Zmc2V0cy55LFxuICAgICAgeSA9IF9vZmZzZXRzJHkgPT09IHZvaWQgMCA/IDAgOiBfb2Zmc2V0cyR5O1xuXG4gIHZhciBfcmVmMyA9IHR5cGVvZiByb3VuZE9mZnNldHMgPT09ICdmdW5jdGlvbicgPyByb3VuZE9mZnNldHMoe1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9KSA6IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcblxuICB4ID0gX3JlZjMueDtcbiAgeSA9IF9yZWYzLnk7XG4gIHZhciBoYXNYID0gb2Zmc2V0cy5oYXNPd25Qcm9wZXJ0eSgneCcpO1xuICB2YXIgaGFzWSA9IG9mZnNldHMuaGFzT3duUHJvcGVydHkoJ3knKTtcbiAgdmFyIHNpZGVYID0gbGVmdDtcbiAgdmFyIHNpZGVZID0gdG9wO1xuICB2YXIgd2luID0gd2luZG93O1xuXG4gIGlmIChhZGFwdGl2ZSkge1xuICAgIHZhciBvZmZzZXRQYXJlbnQgPSBnZXRPZmZzZXRQYXJlbnQocG9wcGVyKTtcbiAgICB2YXIgaGVpZ2h0UHJvcCA9ICdjbGllbnRIZWlnaHQnO1xuICAgIHZhciB3aWR0aFByb3AgPSAnY2xpZW50V2lkdGgnO1xuXG4gICAgaWYgKG9mZnNldFBhcmVudCA9PT0gZ2V0V2luZG93KHBvcHBlcikpIHtcbiAgICAgIG9mZnNldFBhcmVudCA9IGdldERvY3VtZW50RWxlbWVudChwb3BwZXIpO1xuXG4gICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uICE9PSAnc3RhdGljJyAmJiBwb3NpdGlvbiA9PT0gJ2Fic29sdXRlJykge1xuICAgICAgICBoZWlnaHRQcm9wID0gJ3Njcm9sbEhlaWdodCc7XG4gICAgICAgIHdpZHRoUHJvcCA9ICdzY3JvbGxXaWR0aCc7XG4gICAgICB9XG4gICAgfSAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYXN0XTogZm9yY2UgdHlwZSByZWZpbmVtZW50LCB3ZSBjb21wYXJlIG9mZnNldFBhcmVudCB3aXRoIHdpbmRvdyBhYm92ZSwgYnV0IEZsb3cgZG9lc24ndCBkZXRlY3QgaXRcblxuXG4gICAgb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50O1xuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gdG9wIHx8IChwbGFjZW1lbnQgPT09IGxlZnQgfHwgcGxhY2VtZW50ID09PSByaWdodCkgJiYgdmFyaWF0aW9uID09PSBlbmQpIHtcbiAgICAgIHNpZGVZID0gYm90dG9tO1xuICAgICAgdmFyIG9mZnNldFkgPSBpc0ZpeGVkICYmIG9mZnNldFBhcmVudCA9PT0gd2luICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC5oZWlnaHQgOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICAgIG9mZnNldFBhcmVudFtoZWlnaHRQcm9wXTtcbiAgICAgIHkgLT0gb2Zmc2V0WSAtIHBvcHBlclJlY3QuaGVpZ2h0O1xuICAgICAgeSAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gbGVmdCB8fCAocGxhY2VtZW50ID09PSB0b3AgfHwgcGxhY2VtZW50ID09PSBib3R0b20pICYmIHZhcmlhdGlvbiA9PT0gZW5kKSB7XG4gICAgICBzaWRlWCA9IHJpZ2h0O1xuICAgICAgdmFyIG9mZnNldFggPSBpc0ZpeGVkICYmIG9mZnNldFBhcmVudCA9PT0gd2luICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC53aWR0aCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgICAgb2Zmc2V0UGFyZW50W3dpZHRoUHJvcF07XG4gICAgICB4IC09IG9mZnNldFggLSBwb3BwZXJSZWN0LndpZHRoO1xuICAgICAgeCAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbW1vblN0eWxlcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIHBvc2l0aW9uOiBwb3NpdGlvblxuICB9LCBhZGFwdGl2ZSAmJiB1bnNldFNpZGVzKTtcblxuICB2YXIgX3JlZjQgPSByb3VuZE9mZnNldHMgPT09IHRydWUgPyByb3VuZE9mZnNldHNCeURQUih7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0sIGdldFdpbmRvdyhwb3BwZXIpKSA6IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcblxuICB4ID0gX3JlZjQueDtcbiAgeSA9IF9yZWY0Lnk7XG5cbiAgaWYgKGdwdUFjY2VsZXJhdGlvbikge1xuICAgIHZhciBfT2JqZWN0JGFzc2lnbjtcblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIChfT2JqZWN0JGFzc2lnbiA9IHt9LCBfT2JqZWN0JGFzc2lnbltzaWRlWV0gPSBoYXNZID8gJzAnIDogJycsIF9PYmplY3QkYXNzaWduW3NpZGVYXSA9IGhhc1ggPyAnMCcgOiAnJywgX09iamVjdCRhc3NpZ24udHJhbnNmb3JtID0gKHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDEpIDw9IDEgPyBcInRyYW5zbGF0ZShcIiArIHggKyBcInB4LCBcIiArIHkgKyBcInB4KVwiIDogXCJ0cmFuc2xhdGUzZChcIiArIHggKyBcInB4LCBcIiArIHkgKyBcInB4LCAwKVwiLCBfT2JqZWN0JGFzc2lnbikpO1xuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywgKF9PYmplY3QkYXNzaWduMiA9IHt9LCBfT2JqZWN0JGFzc2lnbjJbc2lkZVldID0gaGFzWSA/IHkgKyBcInB4XCIgOiAnJywgX09iamVjdCRhc3NpZ24yW3NpZGVYXSA9IGhhc1ggPyB4ICsgXCJweFwiIDogJycsIF9PYmplY3QkYXNzaWduMi50cmFuc2Zvcm0gPSAnJywgX09iamVjdCRhc3NpZ24yKSk7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVTdHlsZXMoX3JlZjUpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjUuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjUub3B0aW9ucztcbiAgdmFyIF9vcHRpb25zJGdwdUFjY2VsZXJhdCA9IG9wdGlvbnMuZ3B1QWNjZWxlcmF0aW9uLFxuICAgICAgZ3B1QWNjZWxlcmF0aW9uID0gX29wdGlvbnMkZ3B1QWNjZWxlcmF0ID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkZ3B1QWNjZWxlcmF0LFxuICAgICAgX29wdGlvbnMkYWRhcHRpdmUgPSBvcHRpb25zLmFkYXB0aXZlLFxuICAgICAgYWRhcHRpdmUgPSBfb3B0aW9ucyRhZGFwdGl2ZSA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJGFkYXB0aXZlLFxuICAgICAgX29wdGlvbnMkcm91bmRPZmZzZXRzID0gb3B0aW9ucy5yb3VuZE9mZnNldHMsXG4gICAgICByb3VuZE9mZnNldHMgPSBfb3B0aW9ucyRyb3VuZE9mZnNldHMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRyb3VuZE9mZnNldHM7XG4gIHZhciBjb21tb25TdHlsZXMgPSB7XG4gICAgcGxhY2VtZW50OiBnZXRCYXNlUGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCksXG4gICAgdmFyaWF0aW9uOiBnZXRWYXJpYXRpb24oc3RhdGUucGxhY2VtZW50KSxcbiAgICBwb3BwZXI6IHN0YXRlLmVsZW1lbnRzLnBvcHBlcixcbiAgICBwb3BwZXJSZWN0OiBzdGF0ZS5yZWN0cy5wb3BwZXIsXG4gICAgZ3B1QWNjZWxlcmF0aW9uOiBncHVBY2NlbGVyYXRpb24sXG4gICAgaXNGaXhlZDogc3RhdGUub3B0aW9ucy5zdHJhdGVneSA9PT0gJ2ZpeGVkJ1xuICB9O1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMgIT0gbnVsbCkge1xuICAgIHN0YXRlLnN0eWxlcy5wb3BwZXIgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5zdHlsZXMucG9wcGVyLCBtYXBUb1N0eWxlcyhPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIHtcbiAgICAgIG9mZnNldHM6IHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cyxcbiAgICAgIHBvc2l0aW9uOiBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5LFxuICAgICAgYWRhcHRpdmU6IGFkYXB0aXZlLFxuICAgICAgcm91bmRPZmZzZXRzOiByb3VuZE9mZnNldHNcbiAgICB9KSkpO1xuICB9XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGEuYXJyb3cgIT0gbnVsbCkge1xuICAgIHN0YXRlLnN0eWxlcy5hcnJvdyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnN0eWxlcy5hcnJvdywgbWFwVG9TdHlsZXMoT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCB7XG4gICAgICBvZmZzZXRzOiBzdGF0ZS5tb2RpZmllcnNEYXRhLmFycm93LFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICBhZGFwdGl2ZTogZmFsc2UsXG4gICAgICByb3VuZE9mZnNldHM6IHJvdW5kT2Zmc2V0c1xuICAgIH0pKSk7XG4gIH1cblxuICBzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlciA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyLCB7XG4gICAgJ2RhdGEtcG9wcGVyLXBsYWNlbWVudCc6IHN0YXRlLnBsYWNlbWVudFxuICB9KTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2NvbXB1dGVTdHlsZXMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ2JlZm9yZVdyaXRlJyxcbiAgZm46IGNvbXB1dGVTdHlsZXMsXG4gIGRhdGE6IHt9XG59OyIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRXaW5kb3cuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG52YXIgcGFzc2l2ZSA9IHtcbiAgcGFzc2l2ZTogdHJ1ZVxufTtcblxuZnVuY3Rpb24gZWZmZWN0KF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIGluc3RhbmNlID0gX3JlZi5pbnN0YW5jZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnM7XG4gIHZhciBfb3B0aW9ucyRzY3JvbGwgPSBvcHRpb25zLnNjcm9sbCxcbiAgICAgIHNjcm9sbCA9IF9vcHRpb25zJHNjcm9sbCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHNjcm9sbCxcbiAgICAgIF9vcHRpb25zJHJlc2l6ZSA9IG9wdGlvbnMucmVzaXplLFxuICAgICAgcmVzaXplID0gX29wdGlvbnMkcmVzaXplID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkcmVzaXplO1xuICB2YXIgd2luZG93ID0gZ2V0V2luZG93KHN0YXRlLmVsZW1lbnRzLnBvcHBlcik7XG4gIHZhciBzY3JvbGxQYXJlbnRzID0gW10uY29uY2F0KHN0YXRlLnNjcm9sbFBhcmVudHMucmVmZXJlbmNlLCBzdGF0ZS5zY3JvbGxQYXJlbnRzLnBvcHBlcik7XG5cbiAgaWYgKHNjcm9sbCkge1xuICAgIHNjcm9sbFBhcmVudHMuZm9yRWFjaChmdW5jdGlvbiAoc2Nyb2xsUGFyZW50KSB7XG4gICAgICBzY3JvbGxQYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChyZXNpemUpIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHNjcm9sbCkge1xuICAgICAgc2Nyb2xsUGFyZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChzY3JvbGxQYXJlbnQpIHtcbiAgICAgICAgc2Nyb2xsUGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmVzaXplKSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICB9XG4gIH07XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdldmVudExpc3RlbmVycycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnd3JpdGUnLFxuICBmbjogZnVuY3Rpb24gZm4oKSB7fSxcbiAgZWZmZWN0OiBlZmZlY3QsXG4gIGRhdGE6IHt9XG59OyIsInZhciBoYXNoID0ge1xuICBsZWZ0OiAncmlnaHQnLFxuICByaWdodDogJ2xlZnQnLFxuICBib3R0b206ICd0b3AnLFxuICB0b3A6ICdib3R0b20nXG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvbGVmdHxyaWdodHxib3R0b218dG9wL2csIGZ1bmN0aW9uIChtYXRjaGVkKSB7XG4gICAgcmV0dXJuIGhhc2hbbWF0Y2hlZF07XG4gIH0pO1xufSIsInZhciBoYXNoID0ge1xuICBzdGFydDogJ2VuZCcsXG4gIGVuZDogJ3N0YXJ0J1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL3N0YXJ0fGVuZC9nLCBmdW5jdGlvbiAobWF0Y2hlZCkge1xuICAgIHJldHVybiBoYXNoW21hdGNoZWRdO1xuICB9KTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsKG5vZGUpIHtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhub2RlKTtcbiAgdmFyIHNjcm9sbExlZnQgPSB3aW4ucGFnZVhPZmZzZXQ7XG4gIHZhciBzY3JvbGxUb3AgPSB3aW4ucGFnZVlPZmZzZXQ7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogc2Nyb2xsTGVmdCxcbiAgICBzY3JvbGxUb3A6IHNjcm9sbFRvcFxuICB9O1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGwuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCkge1xuICAvLyBJZiA8aHRtbD4gaGFzIGEgQ1NTIHdpZHRoIGdyZWF0ZXIgdGhhbiB0aGUgdmlld3BvcnQsIHRoZW4gdGhpcyB3aWxsIGJlXG4gIC8vIGluY29ycmVjdCBmb3IgUlRMLlxuICAvLyBQb3BwZXIgMSBpcyBicm9rZW4gaW4gdGhpcyBjYXNlIGFuZCBuZXZlciBoYWQgYSBidWcgcmVwb3J0IHNvIGxldCdzIGFzc3VtZVxuICAvLyBpdCdzIG5vdCBhbiBpc3N1ZS4gSSBkb24ndCB0aGluayBhbnlvbmUgZXZlciBzcGVjaWZpZXMgd2lkdGggb24gPGh0bWw+XG4gIC8vIGFueXdheS5cbiAgLy8gQnJvd3NlcnMgd2hlcmUgdGhlIGxlZnQgc2Nyb2xsYmFyIGRvZXNuJ3QgY2F1c2UgYW4gaXNzdWUgcmVwb3J0IGAwYCBmb3JcbiAgLy8gdGhpcyAoZS5nLiBFZGdlIDIwMTksIElFMTEsIFNhZmFyaSlcbiAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBnZXRXaW5kb3dTY3JvbGwoZWxlbWVudCkuc2Nyb2xsTGVmdDtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGxCYXJYIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbEJhclguanNcIjtcbmltcG9ydCBpc0xheW91dFZpZXdwb3J0IGZyb20gXCIuL2lzTGF5b3V0Vmlld3BvcnQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICB2YXIgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICB2YXIgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgdmFyIHZpc3VhbFZpZXdwb3J0ID0gd2luLnZpc3VhbFZpZXdwb3J0O1xuICB2YXIgd2lkdGggPSBodG1sLmNsaWVudFdpZHRoO1xuICB2YXIgaGVpZ2h0ID0gaHRtbC5jbGllbnRIZWlnaHQ7XG4gIHZhciB4ID0gMDtcbiAgdmFyIHkgPSAwO1xuXG4gIGlmICh2aXN1YWxWaWV3cG9ydCkge1xuICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnQud2lkdGg7XG4gICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuaGVpZ2h0O1xuICAgIHZhciBsYXlvdXRWaWV3cG9ydCA9IGlzTGF5b3V0Vmlld3BvcnQoKTtcblxuICAgIGlmIChsYXlvdXRWaWV3cG9ydCB8fCAhbGF5b3V0Vmlld3BvcnQgJiYgc3RyYXRlZ3kgPT09ICdmaXhlZCcpIHtcbiAgICAgIHggPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0O1xuICAgICAgeSA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB4OiB4ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KSxcbiAgICB5OiB5XG4gIH07XG59IiwiaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGxCYXJYIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbEJhclguanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGwgZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsLmpzXCI7XG5pbXBvcnQgeyBtYXggfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiOyAvLyBHZXRzIHRoZSBlbnRpcmUgc2l6ZSBvZiB0aGUgc2Nyb2xsYWJsZSBkb2N1bWVudCBhcmVhLCBldmVuIGV4dGVuZGluZyBvdXRzaWRlXG4vLyBvZiB0aGUgYDxodG1sPmAgYW5kIGA8Ym9keT5gIHJlY3QgYm91bmRzIGlmIGhvcml6b250YWxseSBzY3JvbGxhYmxlXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERvY3VtZW50UmVjdChlbGVtZW50KSB7XG4gIHZhciBfZWxlbWVudCRvd25lckRvY3VtZW47XG5cbiAgdmFyIGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIHZhciB3aW5TY3JvbGwgPSBnZXRXaW5kb3dTY3JvbGwoZWxlbWVudCk7XG4gIHZhciBib2R5ID0gKF9lbGVtZW50JG93bmVyRG9jdW1lbiA9IGVsZW1lbnQub3duZXJEb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9lbGVtZW50JG93bmVyRG9jdW1lbi5ib2R5O1xuICB2YXIgd2lkdGggPSBtYXgoaHRtbC5zY3JvbGxXaWR0aCwgaHRtbC5jbGllbnRXaWR0aCwgYm9keSA/IGJvZHkuc2Nyb2xsV2lkdGggOiAwLCBib2R5ID8gYm9keS5jbGllbnRXaWR0aCA6IDApO1xuICB2YXIgaGVpZ2h0ID0gbWF4KGh0bWwuc2Nyb2xsSGVpZ2h0LCBodG1sLmNsaWVudEhlaWdodCwgYm9keSA/IGJvZHkuc2Nyb2xsSGVpZ2h0IDogMCwgYm9keSA/IGJvZHkuY2xpZW50SGVpZ2h0IDogMCk7XG4gIHZhciB4ID0gLXdpblNjcm9sbC5zY3JvbGxMZWZ0ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KTtcbiAgdmFyIHkgPSAtd2luU2Nyb2xsLnNjcm9sbFRvcDtcblxuICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShib2R5IHx8IGh0bWwpLmRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICB4ICs9IG1heChodG1sLmNsaWVudFdpZHRoLCBib2R5ID8gYm9keS5jbGllbnRXaWR0aCA6IDApIC0gd2lkdGg7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1Njcm9sbFBhcmVudChlbGVtZW50KSB7XG4gIC8vIEZpcmVmb3ggd2FudHMgdXMgdG8gY2hlY2sgYC14YCBhbmQgYC15YCB2YXJpYXRpb25zIGFzIHdlbGxcbiAgdmFyIF9nZXRDb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSxcbiAgICAgIG92ZXJmbG93ID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3csXG4gICAgICBvdmVyZmxvd1ggPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1gsXG4gICAgICBvdmVyZmxvd1kgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1k7XG5cbiAgcmV0dXJuIC9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbi8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCk7XG59IiwiaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGlzU2Nyb2xsUGFyZW50IGZyb20gXCIuL2lzU2Nyb2xsUGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRTY3JvbGxQYXJlbnQobm9kZSkge1xuICBpZiAoWydodG1sJywgJ2JvZHknLCAnI2RvY3VtZW50J10uaW5kZXhPZihnZXROb2RlTmFtZShub2RlKSkgPj0gMCkge1xuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGFzc3VtZSBib2R5IGlzIGFsd2F5cyBhdmFpbGFibGVcbiAgICByZXR1cm4gbm9kZS5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cblxuICBpZiAoaXNIVE1MRWxlbWVudChub2RlKSAmJiBpc1Njcm9sbFBhcmVudChub2RlKSkge1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIGdldFNjcm9sbFBhcmVudChnZXRQYXJlbnROb2RlKG5vZGUpKTtcbn0iLCJpbXBvcnQgZ2V0U2Nyb2xsUGFyZW50IGZyb20gXCIuL2dldFNjcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuLypcbmdpdmVuIGEgRE9NIGVsZW1lbnQsIHJldHVybiB0aGUgbGlzdCBvZiBhbGwgc2Nyb2xsIHBhcmVudHMsIHVwIHRoZSBsaXN0IG9mIGFuY2Vzb3JzXG51bnRpbCB3ZSBnZXQgdG8gdGhlIHRvcCB3aW5kb3cgb2JqZWN0LiBUaGlzIGxpc3QgaXMgd2hhdCB3ZSBhdHRhY2ggc2Nyb2xsIGxpc3RlbmVyc1xudG8sIGJlY2F1c2UgaWYgYW55IG9mIHRoZXNlIHBhcmVudCBlbGVtZW50cyBzY3JvbGwsIHdlJ2xsIG5lZWQgdG8gcmUtY2FsY3VsYXRlIHRoZVxucmVmZXJlbmNlIGVsZW1lbnQncyBwb3NpdGlvbi5cbiovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxpc3RTY3JvbGxQYXJlbnRzKGVsZW1lbnQsIGxpc3QpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICBpZiAobGlzdCA9PT0gdm9pZCAwKSB7XG4gICAgbGlzdCA9IFtdO1xuICB9XG5cbiAgdmFyIHNjcm9sbFBhcmVudCA9IGdldFNjcm9sbFBhcmVudChlbGVtZW50KTtcbiAgdmFyIGlzQm9keSA9IHNjcm9sbFBhcmVudCA9PT0gKChfZWxlbWVudCRvd25lckRvY3VtZW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZWxlbWVudCRvd25lckRvY3VtZW4uYm9keSk7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coc2Nyb2xsUGFyZW50KTtcbiAgdmFyIHRhcmdldCA9IGlzQm9keSA/IFt3aW5dLmNvbmNhdCh3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzU2Nyb2xsUGFyZW50KHNjcm9sbFBhcmVudCkgPyBzY3JvbGxQYXJlbnQgOiBbXSkgOiBzY3JvbGxQYXJlbnQ7XG4gIHZhciB1cGRhdGVkTGlzdCA9IGxpc3QuY29uY2F0KHRhcmdldCk7XG4gIHJldHVybiBpc0JvZHkgPyB1cGRhdGVkTGlzdCA6IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhbGxdOiBpc0JvZHkgdGVsbHMgdXMgdGFyZ2V0IHdpbGwgYmUgYW4gSFRNTEVsZW1lbnQgaGVyZVxuICB1cGRhdGVkTGlzdC5jb25jYXQobGlzdFNjcm9sbFBhcmVudHMoZ2V0UGFyZW50Tm9kZSh0YXJnZXQpKSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVjdFRvQ2xpZW50UmVjdChyZWN0KSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCByZWN0LCB7XG4gICAgbGVmdDogcmVjdC54LFxuICAgIHRvcDogcmVjdC55LFxuICAgIHJpZ2h0OiByZWN0LnggKyByZWN0LndpZHRoLFxuICAgIGJvdHRvbTogcmVjdC55ICsgcmVjdC5oZWlnaHRcbiAgfSk7XG59IiwiaW1wb3J0IHsgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRWaWV3cG9ydFJlY3QgZnJvbSBcIi4vZ2V0Vmlld3BvcnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRSZWN0IGZyb20gXCIuL2dldERvY3VtZW50UmVjdC5qc1wiO1xuaW1wb3J0IGxpc3RTY3JvbGxQYXJlbnRzIGZyb20gXCIuL2xpc3RTY3JvbGxQYXJlbnRzLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgY29udGFpbnMgZnJvbSBcIi4vY29udGFpbnMuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4uL3V0aWxzL3JlY3RUb0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCB7IG1heCwgbWluIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgdmFyIHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgZmFsc2UsIHN0cmF0ZWd5ID09PSAnZml4ZWQnKTtcbiAgcmVjdC50b3AgPSByZWN0LnRvcCArIGVsZW1lbnQuY2xpZW50VG9wO1xuICByZWN0LmxlZnQgPSByZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIHJlY3QuYm90dG9tID0gcmVjdC50b3AgKyBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgcmVjdC5yaWdodCA9IHJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIHJlY3Qud2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoO1xuICByZWN0LmhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICByZWN0LnggPSByZWN0LmxlZnQ7XG4gIHJlY3QueSA9IHJlY3QudG9wO1xuICByZXR1cm4gcmVjdDtcbn1cblxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgY2xpcHBpbmdQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIHJldHVybiBjbGlwcGluZ1BhcmVudCA9PT0gdmlld3BvcnQgPyByZWN0VG9DbGllbnRSZWN0KGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSkpIDogaXNFbGVtZW50KGNsaXBwaW5nUGFyZW50KSA/IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSkgOiByZWN0VG9DbGllbnRSZWN0KGdldERvY3VtZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpKTtcbn0gLy8gQSBcImNsaXBwaW5nIHBhcmVudFwiIGlzIGFuIG92ZXJmbG93YWJsZSBjb250YWluZXIgd2l0aCB0aGUgY2hhcmFjdGVyaXN0aWMgb2Zcbi8vIGNsaXBwaW5nIChvciBoaWRpbmcpIG92ZXJmbG93aW5nIGVsZW1lbnRzIHdpdGggYSBwb3NpdGlvbiBkaWZmZXJlbnQgZnJvbVxuLy8gYGluaXRpYWxgXG5cblxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIHtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IGxpc3RTY3JvbGxQYXJlbnRzKGdldFBhcmVudE5vZGUoZWxlbWVudCkpO1xuICB2YXIgY2FuRXNjYXBlQ2xpcHBpbmcgPSBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5kZXhPZihnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uKSA+PSAwO1xuICB2YXIgY2xpcHBlckVsZW1lbnQgPSBjYW5Fc2NhcGVDbGlwcGluZyAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpID8gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIDogZWxlbWVudDtcblxuICBpZiAoIWlzRWxlbWVudChjbGlwcGVyRWxlbWVudCkpIHtcbiAgICByZXR1cm4gW107XG4gIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzE0MTRcblxuXG4gIHJldHVybiBjbGlwcGluZ1BhcmVudHMuZmlsdGVyKGZ1bmN0aW9uIChjbGlwcGluZ1BhcmVudCkge1xuICAgIHJldHVybiBpc0VsZW1lbnQoY2xpcHBpbmdQYXJlbnQpICYmIGNvbnRhaW5zKGNsaXBwaW5nUGFyZW50LCBjbGlwcGVyRWxlbWVudCkgJiYgZ2V0Tm9kZU5hbWUoY2xpcHBpbmdQYXJlbnQpICE9PSAnYm9keSc7XG4gIH0pO1xufSAvLyBHZXRzIHRoZSBtYXhpbXVtIGFyZWEgdGhhdCB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGR1ZSB0byBhbnkgbnVtYmVyIG9mXG4vLyBjbGlwcGluZyBwYXJlbnRzXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KGVsZW1lbnQsIGJvdW5kYXJ5LCByb290Qm91bmRhcnksIHN0cmF0ZWd5KSB7XG4gIHZhciBtYWluQ2xpcHBpbmdQYXJlbnRzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ1BhcmVudHMnID8gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IFtdLmNvbmNhdChtYWluQ2xpcHBpbmdQYXJlbnRzLCBbcm9vdEJvdW5kYXJ5XSk7XG4gIHZhciBmaXJzdENsaXBwaW5nUGFyZW50ID0gY2xpcHBpbmdQYXJlbnRzWzBdO1xuICB2YXIgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdQYXJlbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjUmVjdCwgY2xpcHBpbmdQYXJlbnQpIHtcbiAgICB2YXIgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgZmlyc3RDbGlwcGluZ1BhcmVudCwgc3RyYXRlZ3kpKTtcbiAgY2xpcHBpbmdSZWN0LndpZHRoID0gY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQ7XG4gIGNsaXBwaW5nUmVjdC5oZWlnaHQgPSBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcDtcbiAgY2xpcHBpbmdSZWN0LnggPSBjbGlwcGluZ1JlY3QubGVmdDtcbiAgY2xpcHBpbmdSZWN0LnkgPSBjbGlwcGluZ1JlY3QudG9wO1xuICByZXR1cm4gY2xpcHBpbmdSZWN0O1xufSIsImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4vZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBzdGFydCwgZW5kIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wdXRlT2Zmc2V0cyhfcmVmKSB7XG4gIHZhciByZWZlcmVuY2UgPSBfcmVmLnJlZmVyZW5jZSxcbiAgICAgIGVsZW1lbnQgPSBfcmVmLmVsZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfcmVmLnBsYWNlbWVudDtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBwbGFjZW1lbnQgPyBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgdmFyaWF0aW9uID0gcGxhY2VtZW50ID8gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgY29tbW9uWCA9IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoIC8gMiAtIGVsZW1lbnQud2lkdGggLyAyO1xuICB2YXIgY29tbW9uWSA9IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodCAvIDIgLSBlbGVtZW50LmhlaWdodCAvIDI7XG4gIHZhciBvZmZzZXRzO1xuXG4gIHN3aXRjaCAoYmFzZVBsYWNlbWVudCkge1xuICAgIGNhc2UgdG9wOlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgLSBlbGVtZW50LmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBib3R0b206XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgcmlnaHQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBsZWZ0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggLSBlbGVtZW50LndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG5cbiAgdmFyIG1haW5BeGlzID0gYmFzZVBsYWNlbWVudCA/IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChiYXNlUGxhY2VtZW50KSA6IG51bGw7XG5cbiAgaWYgKG1haW5BeGlzICE9IG51bGwpIHtcbiAgICB2YXIgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHN3aXRjaCAodmFyaWF0aW9uKSB7XG4gICAgICBjYXNlIHN0YXJ0OlxuICAgICAgICBvZmZzZXRzW21haW5BeGlzXSA9IG9mZnNldHNbbWFpbkF4aXNdIC0gKHJlZmVyZW5jZVtsZW5dIC8gMiAtIGVsZW1lbnRbbGVuXSAvIDIpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBlbmQ6XG4gICAgICAgIG9mZnNldHNbbWFpbkF4aXNdID0gb2Zmc2V0c1ttYWluQXhpc10gKyAocmVmZXJlbmNlW2xlbl0gLyAyIC0gZWxlbWVudFtsZW5dIC8gMik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvZmZzZXRzO1xufSIsImltcG9ydCBnZXRDbGlwcGluZ1JlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRDbGlwcGluZ1JlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBjb21wdXRlT2Zmc2V0cyBmcm9tIFwiLi9jb21wdXRlT2Zmc2V0cy5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4vcmVjdFRvQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IHsgY2xpcHBpbmdQYXJlbnRzLCByZWZlcmVuY2UsIHBvcHBlciwgYm90dG9tLCB0b3AsIHJpZ2h0LCBiYXNlUGxhY2VtZW50cywgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IG1lcmdlUGFkZGluZ09iamVjdCBmcm9tIFwiLi9tZXJnZVBhZGRpbmdPYmplY3QuanNcIjtcbmltcG9ydCBleHBhbmRUb0hhc2hNYXAgZnJvbSBcIi4vZXhwYW5kVG9IYXNoTWFwLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICBfb3B0aW9ucyRwbGFjZW1lbnQgPSBfb3B0aW9ucy5wbGFjZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfb3B0aW9ucyRwbGFjZW1lbnQgPT09IHZvaWQgMCA/IHN0YXRlLnBsYWNlbWVudCA6IF9vcHRpb25zJHBsYWNlbWVudCxcbiAgICAgIF9vcHRpb25zJHN0cmF0ZWd5ID0gX29wdGlvbnMuc3RyYXRlZ3ksXG4gICAgICBzdHJhdGVneSA9IF9vcHRpb25zJHN0cmF0ZWd5ID09PSB2b2lkIDAgPyBzdGF0ZS5zdHJhdGVneSA6IF9vcHRpb25zJHN0cmF0ZWd5LFxuICAgICAgX29wdGlvbnMkYm91bmRhcnkgPSBfb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIGJvdW5kYXJ5ID0gX29wdGlvbnMkYm91bmRhcnkgPT09IHZvaWQgMCA/IGNsaXBwaW5nUGFyZW50cyA6IF9vcHRpb25zJGJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMkcm9vdEJvdW5kYXJ5ID09PSB2b2lkIDAgPyB2aWV3cG9ydCA6IF9vcHRpb25zJHJvb3RCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJGVsZW1lbnRDb250ZSA9IF9vcHRpb25zLmVsZW1lbnRDb250ZXh0LFxuICAgICAgZWxlbWVudENvbnRleHQgPSBfb3B0aW9ucyRlbGVtZW50Q29udGUgPT09IHZvaWQgMCA/IHBvcHBlciA6IF9vcHRpb25zJGVsZW1lbnRDb250ZSxcbiAgICAgIF9vcHRpb25zJGFsdEJvdW5kYXJ5ID0gX29wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IF9vcHRpb25zJGFsdEJvdW5kYXJ5ID09PSB2b2lkIDAgPyBmYWxzZSA6IF9vcHRpb25zJGFsdEJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkcGFkZGluZyA9IF9vcHRpb25zLnBhZGRpbmcsXG4gICAgICBwYWRkaW5nID0gX29wdGlvbnMkcGFkZGluZyA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJHBhZGRpbmc7XG4gIHZhciBwYWRkaW5nT2JqZWN0ID0gbWVyZ2VQYWRkaW5nT2JqZWN0KHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IHBhZGRpbmcgOiBleHBhbmRUb0hhc2hNYXAocGFkZGluZywgYmFzZVBsYWNlbWVudHMpKTtcbiAgdmFyIGFsdENvbnRleHQgPSBlbGVtZW50Q29udGV4dCA9PT0gcG9wcGVyID8gcmVmZXJlbmNlIDogcG9wcGVyO1xuICB2YXIgcG9wcGVyUmVjdCA9IHN0YXRlLnJlY3RzLnBvcHBlcjtcbiAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1thbHRCb3VuZGFyeSA/IGFsdENvbnRleHQgOiBlbGVtZW50Q29udGV4dF07XG4gIHZhciBjbGlwcGluZ0NsaWVudFJlY3QgPSBnZXRDbGlwcGluZ1JlY3QoaXNFbGVtZW50KGVsZW1lbnQpID8gZWxlbWVudCA6IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgfHwgZ2V0RG9jdW1lbnRFbGVtZW50KHN0YXRlLmVsZW1lbnRzLnBvcHBlciksIGJvdW5kYXJ5LCByb290Qm91bmRhcnksIHN0cmF0ZWd5KTtcbiAgdmFyIHJlZmVyZW5jZUNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qoc3RhdGUuZWxlbWVudHMucmVmZXJlbmNlKTtcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBjb21wdXRlT2Zmc2V0cyh7XG4gICAgcmVmZXJlbmNlOiByZWZlcmVuY2VDbGllbnRSZWN0LFxuICAgIGVsZW1lbnQ6IHBvcHBlclJlY3QsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBwbGFjZW1lbnRcbiAgfSk7XG4gIHZhciBwb3BwZXJDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChPYmplY3QuYXNzaWduKHt9LCBwb3BwZXJSZWN0LCBwb3BwZXJPZmZzZXRzKSk7XG4gIHZhciBlbGVtZW50Q2xpZW50UmVjdCA9IGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgPyBwb3BwZXJDbGllbnRSZWN0IDogcmVmZXJlbmNlQ2xpZW50UmVjdDsgLy8gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgcmVjdFxuICAvLyAwIG9yIG5lZ2F0aXZlID0gd2l0aGluIHRoZSBjbGlwcGluZyByZWN0XG5cbiAgdmFyIG92ZXJmbG93T2Zmc2V0cyA9IHtcbiAgICB0b3A6IGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCxcbiAgICBib3R0b206IGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSxcbiAgICBsZWZ0OiBjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQsXG4gICAgcmlnaHQ6IGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodFxuICB9O1xuICB2YXIgb2Zmc2V0RGF0YSA9IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0OyAvLyBPZmZzZXRzIGNhbiBiZSBhcHBsaWVkIG9ubHkgdG8gdGhlIHBvcHBlciBlbGVtZW50XG5cbiAgaWYgKGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgJiYgb2Zmc2V0RGF0YSkge1xuICAgIHZhciBvZmZzZXQgPSBvZmZzZXREYXRhW3BsYWNlbWVudF07XG4gICAgT2JqZWN0LmtleXMob3ZlcmZsb3dPZmZzZXRzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBtdWx0aXBseSA9IFtyaWdodCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/IDEgOiAtMTtcbiAgICAgIHZhciBheGlzID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/ICd5JyA6ICd4JztcbiAgICAgIG92ZXJmbG93T2Zmc2V0c1trZXldICs9IG9mZnNldFtheGlzXSAqIG11bHRpcGx5O1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG92ZXJmbG93T2Zmc2V0cztcbn0iLCJpbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuL2dldFZhcmlhdGlvbi5qc1wiO1xuaW1wb3J0IHsgdmFyaWF0aW9uUGxhY2VtZW50cywgYmFzZVBsYWNlbWVudHMsIHBsYWNlbWVudHMgYXMgYWxsUGxhY2VtZW50cyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wdXRlQXV0b1BsYWNlbWVudChzdGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIF9vcHRpb25zID0gb3B0aW9ucyxcbiAgICAgIHBsYWNlbWVudCA9IF9vcHRpb25zLnBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5ID0gX29wdGlvbnMuYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnkgPSBfb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBwYWRkaW5nID0gX29wdGlvbnMucGFkZGluZyxcbiAgICAgIGZsaXBWYXJpYXRpb25zID0gX29wdGlvbnMuZmxpcFZhcmlhdGlvbnMsXG4gICAgICBfb3B0aW9ucyRhbGxvd2VkQXV0b1AgPSBfb3B0aW9ucy5hbGxvd2VkQXV0b1BsYWNlbWVudHMsXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHMgPSBfb3B0aW9ucyRhbGxvd2VkQXV0b1AgPT09IHZvaWQgMCA/IGFsbFBsYWNlbWVudHMgOiBfb3B0aW9ucyRhbGxvd2VkQXV0b1A7XG4gIHZhciB2YXJpYXRpb24gPSBnZXRWYXJpYXRpb24ocGxhY2VtZW50KTtcbiAgdmFyIHBsYWNlbWVudHMgPSB2YXJpYXRpb24gPyBmbGlwVmFyaWF0aW9ucyA/IHZhcmlhdGlvblBsYWNlbWVudHMgOiB2YXJpYXRpb25QbGFjZW1lbnRzLmZpbHRlcihmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgcmV0dXJuIGdldFZhcmlhdGlvbihwbGFjZW1lbnQpID09PSB2YXJpYXRpb247XG4gIH0pIDogYmFzZVBsYWNlbWVudHM7XG4gIHZhciBhbGxvd2VkUGxhY2VtZW50cyA9IHBsYWNlbWVudHMuZmlsdGVyKGZ1bmN0aW9uIChwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gYWxsb3dlZEF1dG9QbGFjZW1lbnRzLmluZGV4T2YocGxhY2VtZW50KSA+PSAwO1xuICB9KTtcblxuICBpZiAoYWxsb3dlZFBsYWNlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgYWxsb3dlZFBsYWNlbWVudHMgPSBwbGFjZW1lbnRzO1xuICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXR5cGVdOiBGbG93IHNlZW1zIHRvIGhhdmUgcHJvYmxlbXMgd2l0aCB0d28gYXJyYXkgdW5pb25zLi4uXG5cblxuICB2YXIgb3ZlcmZsb3dzID0gYWxsb3dlZFBsYWNlbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICAgIGFjY1twbGFjZW1lbnRdID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgICBwYWRkaW5nOiBwYWRkaW5nXG4gICAgfSlbZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpXTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvdmVyZmxvd3MpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gb3ZlcmZsb3dzW2FdIC0gb3ZlcmZsb3dzW2JdO1xuICB9KTtcbn0iLCJpbXBvcnQgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE9wcG9zaXRlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGNvbXB1dGVBdXRvUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9jb21wdXRlQXV0b1BsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgYm90dG9tLCB0b3AsIHN0YXJ0LCByaWdodCwgbGVmdCwgYXV0byB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRGYWxsYmFja1BsYWNlbWVudHMocGxhY2VtZW50KSB7XG4gIGlmIChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8pIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICB2YXIgb3Bwb3NpdGVQbGFjZW1lbnQgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICByZXR1cm4gW2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KHBsYWNlbWVudCksIG9wcG9zaXRlUGxhY2VtZW50LCBnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudChvcHBvc2l0ZVBsYWNlbWVudCldO1xufVxuXG5mdW5jdGlvbiBmbGlwKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdLl9za2lwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIF9vcHRpb25zJG1haW5BeGlzID0gb3B0aW9ucy5tYWluQXhpcyxcbiAgICAgIGNoZWNrTWFpbkF4aXMgPSBfb3B0aW9ucyRtYWluQXhpcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJG1haW5BeGlzLFxuICAgICAgX29wdGlvbnMkYWx0QXhpcyA9IG9wdGlvbnMuYWx0QXhpcyxcbiAgICAgIGNoZWNrQWx0QXhpcyA9IF9vcHRpb25zJGFsdEF4aXMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzID0gb3B0aW9ucy5mYWxsYmFja1BsYWNlbWVudHMsXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPSBvcHRpb25zLmZsaXBWYXJpYXRpb25zLFxuICAgICAgZmxpcFZhcmlhdGlvbnMgPSBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRmbGlwVmFyaWF0aW8sXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHMgPSBvcHRpb25zLmFsbG93ZWRBdXRvUGxhY2VtZW50cztcbiAgdmFyIHByZWZlcnJlZFBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50O1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocHJlZmVycmVkUGxhY2VtZW50KTtcbiAgdmFyIGlzQmFzZVBsYWNlbWVudCA9IGJhc2VQbGFjZW1lbnQgPT09IHByZWZlcnJlZFBsYWNlbWVudDtcbiAgdmFyIGZhbGxiYWNrUGxhY2VtZW50cyA9IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyB8fCAoaXNCYXNlUGxhY2VtZW50IHx8ICFmbGlwVmFyaWF0aW9ucyA/IFtnZXRPcHBvc2l0ZVBsYWNlbWVudChwcmVmZXJyZWRQbGFjZW1lbnQpXSA6IGdldEV4cGFuZGVkRmFsbGJhY2tQbGFjZW1lbnRzKHByZWZlcnJlZFBsYWNlbWVudCkpO1xuICB2YXIgcGxhY2VtZW50cyA9IFtwcmVmZXJyZWRQbGFjZW1lbnRdLmNvbmNhdChmYWxsYmFja1BsYWNlbWVudHMpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8gPyBjb21wdXRlQXV0b1BsYWNlbWVudChzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmcsXG4gICAgICBmbGlwVmFyaWF0aW9uczogZmxpcFZhcmlhdGlvbnMsXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHM6IGFsbG93ZWRBdXRvUGxhY2VtZW50c1xuICAgIH0pIDogcGxhY2VtZW50KTtcbiAgfSwgW10pO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBjaGVja3NNYXAgPSBuZXcgTWFwKCk7XG4gIHZhciBtYWtlRmFsbGJhY2tDaGVja3MgPSB0cnVlO1xuICB2YXIgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gcGxhY2VtZW50c1swXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHBsYWNlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcGxhY2VtZW50ID0gcGxhY2VtZW50c1tpXTtcblxuICAgIHZhciBfYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KTtcblxuICAgIHZhciBpc1N0YXJ0VmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgPT09IHN0YXJ0O1xuICAgIHZhciBpc1ZlcnRpY2FsID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKF9iYXNlUGxhY2VtZW50KSA+PSAwO1xuICAgIHZhciBsZW4gPSBpc1ZlcnRpY2FsID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgIHZhciBvdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnk6IGFsdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZ1xuICAgIH0pO1xuICAgIHZhciBtYWluVmFyaWF0aW9uU2lkZSA9IGlzVmVydGljYWwgPyBpc1N0YXJ0VmFyaWF0aW9uID8gcmlnaHQgOiBsZWZ0IDogaXNTdGFydFZhcmlhdGlvbiA/IGJvdHRvbSA6IHRvcDtcblxuICAgIGlmIChyZWZlcmVuY2VSZWN0W2xlbl0gPiBwb3BwZXJSZWN0W2xlbl0pIHtcbiAgICAgIG1haW5WYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIH1cblxuICAgIHZhciBhbHRWYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIHZhciBjaGVja3MgPSBbXTtcblxuICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICBjaGVja3MucHVzaChvdmVyZmxvd1tfYmFzZVBsYWNlbWVudF0gPD0gMCk7XG4gICAgfVxuXG4gICAgaWYgKGNoZWNrQWx0QXhpcykge1xuICAgICAgY2hlY2tzLnB1c2gob3ZlcmZsb3dbbWFpblZhcmlhdGlvblNpZGVdIDw9IDAsIG92ZXJmbG93W2FsdFZhcmlhdGlvblNpZGVdIDw9IDApO1xuICAgIH1cblxuICAgIGlmIChjaGVja3MuZXZlcnkoZnVuY3Rpb24gKGNoZWNrKSB7XG4gICAgICByZXR1cm4gY2hlY2s7XG4gICAgfSkpIHtcbiAgICAgIGZpcnN0Rml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICAgIG1ha2VGYWxsYmFja0NoZWNrcyA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2hlY2tzTWFwLnNldChwbGFjZW1lbnQsIGNoZWNrcyk7XG4gIH1cblxuICBpZiAobWFrZUZhbGxiYWNrQ2hlY2tzKSB7XG4gICAgLy8gYDJgIG1heSBiZSBkZXNpcmVkIGluIHNvbWUgY2FzZXMg4oCTIHJlc2VhcmNoIGxhdGVyXG4gICAgdmFyIG51bWJlck9mQ2hlY2tzID0gZmxpcFZhcmlhdGlvbnMgPyAzIDogMTtcblxuICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKF9pKSB7XG4gICAgICB2YXIgZml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudHMuZmluZChmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgICAgIHZhciBjaGVja3MgPSBjaGVja3NNYXAuZ2V0KHBsYWNlbWVudCk7XG5cbiAgICAgICAgaWYgKGNoZWNrcykge1xuICAgICAgICAgIHJldHVybiBjaGVja3Muc2xpY2UoMCwgX2kpLmV2ZXJ5KGZ1bmN0aW9uIChjaGVjaykge1xuICAgICAgICAgICAgcmV0dXJuIGNoZWNrO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKGZpdHRpbmdQbGFjZW1lbnQpIHtcbiAgICAgICAgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gZml0dGluZ1BsYWNlbWVudDtcbiAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgX2kgPSBudW1iZXJPZkNoZWNrczsgX2kgPiAwOyBfaS0tKSB7XG4gICAgICB2YXIgX3JldCA9IF9sb29wKF9pKTtcblxuICAgICAgaWYgKF9yZXQgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXRlLnBsYWNlbWVudCAhPT0gZmlyc3RGaXR0aW5nUGxhY2VtZW50KSB7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXS5fc2tpcCA9IHRydWU7XG4gICAgc3RhdGUucGxhY2VtZW50ID0gZmlyc3RGaXR0aW5nUGxhY2VtZW50O1xuICAgIHN0YXRlLnJlc2V0ID0gdHJ1ZTtcbiAgfVxufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnZmxpcCcsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBmbGlwLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ29mZnNldCddLFxuICBkYXRhOiB7XG4gICAgX3NraXA6IGZhbHNlXG4gIH1cbn07IiwiaW1wb3J0IHsgdG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5cbmZ1bmN0aW9uIGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0LCBwcmV2ZW50ZWRPZmZzZXRzKSB7XG4gIGlmIChwcmV2ZW50ZWRPZmZzZXRzID09PSB2b2lkIDApIHtcbiAgICBwcmV2ZW50ZWRPZmZzZXRzID0ge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDBcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0b3A6IG92ZXJmbG93LnRvcCAtIHJlY3QuaGVpZ2h0IC0gcHJldmVudGVkT2Zmc2V0cy55LFxuICAgIHJpZ2h0OiBvdmVyZmxvdy5yaWdodCAtIHJlY3Qud2lkdGggKyBwcmV2ZW50ZWRPZmZzZXRzLngsXG4gICAgYm90dG9tOiBvdmVyZmxvdy5ib3R0b20gLSByZWN0LmhlaWdodCArIHByZXZlbnRlZE9mZnNldHMueSxcbiAgICBsZWZ0OiBvdmVyZmxvdy5sZWZ0IC0gcmVjdC53aWR0aCAtIHByZXZlbnRlZE9mZnNldHMueFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIFt0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnRdLnNvbWUoZnVuY3Rpb24gKHNpZGUpIHtcbiAgICByZXR1cm4gb3ZlcmZsb3dbc2lkZV0gPj0gMDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGhpZGUoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgdmFyIHJlZmVyZW5jZVJlY3QgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2U7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgcHJldmVudGVkT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucHJldmVudE92ZXJmbG93O1xuICB2YXIgcmVmZXJlbmNlT3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgIGVsZW1lbnRDb250ZXh0OiAncmVmZXJlbmNlJ1xuICB9KTtcbiAgdmFyIHBvcHBlckFsdE92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBhbHRCb3VuZGFyeTogdHJ1ZVxuICB9KTtcbiAgdmFyIHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKHJlZmVyZW5jZU92ZXJmbG93LCByZWZlcmVuY2VSZWN0KTtcbiAgdmFyIHBvcHBlckVzY2FwZU9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhwb3BwZXJBbHRPdmVyZmxvdywgcG9wcGVyUmVjdCwgcHJldmVudGVkT2Zmc2V0cyk7XG4gIHZhciBpc1JlZmVyZW5jZUhpZGRlbiA9IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChyZWZlcmVuY2VDbGlwcGluZ09mZnNldHMpO1xuICB2YXIgaGFzUG9wcGVyRXNjYXBlZCA9IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChwb3BwZXJFc2NhcGVPZmZzZXRzKTtcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IHtcbiAgICByZWZlcmVuY2VDbGlwcGluZ09mZnNldHM6IHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyxcbiAgICBwb3BwZXJFc2NhcGVPZmZzZXRzOiBwb3BwZXJFc2NhcGVPZmZzZXRzLFxuICAgIGlzUmVmZXJlbmNlSGlkZGVuOiBpc1JlZmVyZW5jZUhpZGRlbixcbiAgICBoYXNQb3BwZXJFc2NhcGVkOiBoYXNQb3BwZXJFc2NhcGVkXG4gIH07XG4gIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIsIHtcbiAgICAnZGF0YS1wb3BwZXItcmVmZXJlbmNlLWhpZGRlbic6IGlzUmVmZXJlbmNlSGlkZGVuLFxuICAgICdkYXRhLXBvcHBlci1lc2NhcGVkJzogaGFzUG9wcGVyRXNjYXBlZFxuICB9KTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2hpZGUnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ3ByZXZlbnRPdmVyZmxvdyddLFxuICBmbjogaGlkZVxufTsiLCJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgcGxhY2VtZW50cyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZUFuZFNraWRkaW5nVG9YWShwbGFjZW1lbnQsIHJlY3RzLCBvZmZzZXQpIHtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHZhciBpbnZlcnREaXN0YW5jZSA9IFtsZWZ0LCB0b3BdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgPj0gMCA/IC0xIDogMTtcblxuICB2YXIgX3JlZiA9IHR5cGVvZiBvZmZzZXQgPT09ICdmdW5jdGlvbicgPyBvZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgcmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudFxuICB9KSkgOiBvZmZzZXQsXG4gICAgICBza2lkZGluZyA9IF9yZWZbMF0sXG4gICAgICBkaXN0YW5jZSA9IF9yZWZbMV07XG5cbiAgc2tpZGRpbmcgPSBza2lkZGluZyB8fCAwO1xuICBkaXN0YW5jZSA9IChkaXN0YW5jZSB8fCAwKSAqIGludmVydERpc3RhbmNlO1xuICByZXR1cm4gW2xlZnQsIHJpZ2h0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDAgPyB7XG4gICAgeDogZGlzdGFuY2UsXG4gICAgeTogc2tpZGRpbmdcbiAgfSA6IHtcbiAgICB4OiBza2lkZGluZyxcbiAgICB5OiBkaXN0YW5jZVxuICB9O1xufVxuXG5mdW5jdGlvbiBvZmZzZXQoX3JlZjIpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjIuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjIub3B0aW9ucyxcbiAgICAgIG5hbWUgPSBfcmVmMi5uYW1lO1xuICB2YXIgX29wdGlvbnMkb2Zmc2V0ID0gb3B0aW9ucy5vZmZzZXQsXG4gICAgICBvZmZzZXQgPSBfb3B0aW9ucyRvZmZzZXQgPT09IHZvaWQgMCA/IFswLCAwXSA6IF9vcHRpb25zJG9mZnNldDtcbiAgdmFyIGRhdGEgPSBwbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICBhY2NbcGxhY2VtZW50XSA9IGRpc3RhbmNlQW5kU2tpZGRpbmdUb1hZKHBsYWNlbWVudCwgc3RhdGUucmVjdHMsIG9mZnNldCk7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuICB2YXIgX2RhdGEkc3RhdGUkcGxhY2VtZW50ID0gZGF0YVtzdGF0ZS5wbGFjZW1lbnRdLFxuICAgICAgeCA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC54LFxuICAgICAgeSA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC55O1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMgIT0gbnVsbCkge1xuICAgIHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cy54ICs9IHg7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLnkgKz0geTtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnb2Zmc2V0JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgcmVxdWlyZXM6IFsncG9wcGVyT2Zmc2V0cyddLFxuICBmbjogb2Zmc2V0XG59OyIsImltcG9ydCBjb21wdXRlT2Zmc2V0cyBmcm9tIFwiLi4vdXRpbHMvY29tcHV0ZU9mZnNldHMuanNcIjtcblxuZnVuY3Rpb24gcG9wcGVyT2Zmc2V0cyhfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICAvLyBPZmZzZXRzIGFyZSB0aGUgYWN0dWFsIHBvc2l0aW9uIHRoZSBwb3BwZXIgbmVlZHMgdG8gaGF2ZSB0byBiZVxuICAvLyBwcm9wZXJseSBwb3NpdGlvbmVkIG5lYXIgaXRzIHJlZmVyZW5jZSBlbGVtZW50XG4gIC8vIFRoaXMgaXMgdGhlIG1vc3QgYmFzaWMgcGxhY2VtZW50LCBhbmQgd2lsbCBiZSBhZGp1c3RlZCBieVxuICAvLyB0aGUgbW9kaWZpZXJzIGluIHRoZSBuZXh0IHN0ZXBcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IGNvbXB1dGVPZmZzZXRzKHtcbiAgICByZWZlcmVuY2U6IHN0YXRlLnJlY3RzLnJlZmVyZW5jZSxcbiAgICBlbGVtZW50OiBzdGF0ZS5yZWN0cy5wb3BwZXIsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSk7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdwb3BwZXJPZmZzZXRzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdyZWFkJyxcbiAgZm46IHBvcHBlck9mZnNldHMsXG4gIGRhdGE6IHt9XG59OyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEFsdEF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3gnID8gJ3knIDogJ3gnO1xufSIsImltcG9ydCB7IHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgc3RhcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRBbHRBeGlzIGZyb20gXCIuLi91dGlscy9nZXRBbHRBeGlzLmpzXCI7XG5pbXBvcnQgeyB3aXRoaW4sIHdpdGhpbk1heENsYW1wIH0gZnJvbSBcIi4uL3V0aWxzL3dpdGhpbi5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuLi91dGlscy9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCBnZXRGcmVzaFNpZGVPYmplY3QgZnJvbSBcIi4uL3V0aWxzL2dldEZyZXNoU2lkZU9iamVjdC5qc1wiO1xuaW1wb3J0IHsgbWluIGFzIG1hdGhNaW4sIG1heCBhcyBtYXRoTWF4IH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gcHJldmVudE92ZXJmbG93KF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICB2YXIgX29wdGlvbnMkbWFpbkF4aXMgPSBvcHRpb25zLm1haW5BeGlzLFxuICAgICAgY2hlY2tNYWluQXhpcyA9IF9vcHRpb25zJG1haW5BeGlzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkbWFpbkF4aXMsXG4gICAgICBfb3B0aW9ucyRhbHRBeGlzID0gb3B0aW9ucy5hbHRBeGlzLFxuICAgICAgY2hlY2tBbHRBeGlzID0gX29wdGlvbnMkYWx0QXhpcyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgX29wdGlvbnMkdGV0aGVyID0gb3B0aW9ucy50ZXRoZXIsXG4gICAgICB0ZXRoZXIgPSBfb3B0aW9ucyR0ZXRoZXIgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyR0ZXRoZXIsXG4gICAgICBfb3B0aW9ucyR0ZXRoZXJPZmZzZXQgPSBvcHRpb25zLnRldGhlck9mZnNldCxcbiAgICAgIHRldGhlck9mZnNldCA9IF9vcHRpb25zJHRldGhlck9mZnNldCA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJHRldGhlck9mZnNldDtcbiAgdmFyIG92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgcGFkZGluZzogcGFkZGluZyxcbiAgICBhbHRCb3VuZGFyeTogYWx0Qm91bmRhcnlcbiAgfSk7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpO1xuICB2YXIgdmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciBpc0Jhc2VQbGFjZW1lbnQgPSAhdmFyaWF0aW9uO1xuICB2YXIgbWFpbkF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCk7XG4gIHZhciBhbHRBeGlzID0gZ2V0QWx0QXhpcyhtYWluQXhpcyk7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciB0ZXRoZXJPZmZzZXRWYWx1ZSA9IHR5cGVvZiB0ZXRoZXJPZmZzZXQgPT09ICdmdW5jdGlvbicgPyB0ZXRoZXJPZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUucmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHN0YXRlLnBsYWNlbWVudFxuICB9KSkgOiB0ZXRoZXJPZmZzZXQ7XG4gIHZhciBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUgPSB0eXBlb2YgdGV0aGVyT2Zmc2V0VmFsdWUgPT09ICdudW1iZXInID8ge1xuICAgIG1haW5BeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZSxcbiAgICBhbHRBeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZVxuICB9IDogT2JqZWN0LmFzc2lnbih7XG4gICAgbWFpbkF4aXM6IDAsXG4gICAgYWx0QXhpczogMFxuICB9LCB0ZXRoZXJPZmZzZXRWYWx1ZSk7XG4gIHZhciBvZmZzZXRNb2RpZmllclN0YXRlID0gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXQgPyBzdGF0ZS5tb2RpZmllcnNEYXRhLm9mZnNldFtzdGF0ZS5wbGFjZW1lbnRdIDogbnVsbDtcbiAgdmFyIGRhdGEgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG5cbiAgaWYgKCFwb3BwZXJPZmZzZXRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICB2YXIgX29mZnNldE1vZGlmaWVyU3RhdGUkO1xuXG4gICAgdmFyIG1haW5TaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/IHRvcCA6IGxlZnQ7XG4gICAgdmFyIGFsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gYm90dG9tIDogcmlnaHQ7XG4gICAgdmFyIGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgdmFyIG9mZnNldCA9IHBvcHBlck9mZnNldHNbbWFpbkF4aXNdO1xuICAgIHZhciBtaW4gPSBvZmZzZXQgKyBvdmVyZmxvd1ttYWluU2lkZV07XG4gICAgdmFyIG1heCA9IG9mZnNldCAtIG92ZXJmbG93W2FsdFNpZGVdO1xuICAgIHZhciBhZGRpdGl2ZSA9IHRldGhlciA/IC1wb3BwZXJSZWN0W2xlbl0gLyAyIDogMDtcbiAgICB2YXIgbWluTGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IHJlZmVyZW5jZVJlY3RbbGVuXSA6IHBvcHBlclJlY3RbbGVuXTtcbiAgICB2YXIgbWF4TGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IC1wb3BwZXJSZWN0W2xlbl0gOiAtcmVmZXJlbmNlUmVjdFtsZW5dOyAvLyBXZSBuZWVkIHRvIGluY2x1ZGUgdGhlIGFycm93IGluIHRoZSBjYWxjdWxhdGlvbiBzbyB0aGUgYXJyb3cgZG9lc24ndCBnb1xuICAgIC8vIG91dHNpZGUgdGhlIHJlZmVyZW5jZSBib3VuZHNcblxuICAgIHZhciBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdztcbiAgICB2YXIgYXJyb3dSZWN0ID0gdGV0aGVyICYmIGFycm93RWxlbWVudCA/IGdldExheW91dFJlY3QoYXJyb3dFbGVtZW50KSA6IHtcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgaGVpZ2h0OiAwXG4gICAgfTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nT2JqZWN0ID0gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddID8gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddLnBhZGRpbmcgOiBnZXRGcmVzaFNpZGVPYmplY3QoKTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWluID0gYXJyb3dQYWRkaW5nT2JqZWN0W21haW5TaWRlXTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWF4ID0gYXJyb3dQYWRkaW5nT2JqZWN0W2FsdFNpZGVdOyAvLyBJZiB0aGUgcmVmZXJlbmNlIGxlbmd0aCBpcyBzbWFsbGVyIHRoYW4gdGhlIGFycm93IGxlbmd0aCwgd2UgZG9uJ3Qgd2FudFxuICAgIC8vIHRvIGluY2x1ZGUgaXRzIGZ1bGwgc2l6ZSBpbiB0aGUgY2FsY3VsYXRpb24uIElmIHRoZSByZWZlcmVuY2UgaXMgc21hbGxcbiAgICAvLyBhbmQgbmVhciB0aGUgZWRnZSBvZiBhIGJvdW5kYXJ5LCB0aGUgcG9wcGVyIGNhbiBvdmVyZmxvdyBldmVuIGlmIHRoZVxuICAgIC8vIHJlZmVyZW5jZSBpcyBub3Qgb3ZlcmZsb3dpbmcgYXMgd2VsbCAoZS5nLiB2aXJ0dWFsIGVsZW1lbnRzIHdpdGggbm9cbiAgICAvLyB3aWR0aCBvciBoZWlnaHQpXG5cbiAgICB2YXIgYXJyb3dMZW4gPSB3aXRoaW4oMCwgcmVmZXJlbmNlUmVjdFtsZW5dLCBhcnJvd1JlY3RbbGVuXSk7XG4gICAgdmFyIG1pbk9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IHJlZmVyZW5jZVJlY3RbbGVuXSAvIDIgLSBhZGRpdGl2ZSAtIGFycm93TGVuIC0gYXJyb3dQYWRkaW5nTWluIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzIDogbWluTGVuIC0gYXJyb3dMZW4gLSBhcnJvd1BhZGRpbmdNaW4gLSBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXM7XG4gICAgdmFyIG1heE9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IC1yZWZlcmVuY2VSZWN0W2xlbl0gLyAyICsgYWRkaXRpdmUgKyBhcnJvd0xlbiArIGFycm93UGFkZGluZ01heCArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcyA6IG1heExlbiArIGFycm93TGVuICsgYXJyb3dQYWRkaW5nTWF4ICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzO1xuICAgIHZhciBhcnJvd09mZnNldFBhcmVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93ICYmIGdldE9mZnNldFBhcmVudChzdGF0ZS5lbGVtZW50cy5hcnJvdyk7XG4gICAgdmFyIGNsaWVudE9mZnNldCA9IGFycm93T2Zmc2V0UGFyZW50ID8gbWFpbkF4aXMgPT09ICd5JyA/IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudFRvcCB8fCAwIDogYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50TGVmdCB8fCAwIDogMDtcbiAgICB2YXIgb2Zmc2V0TW9kaWZpZXJWYWx1ZSA9IChfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQgPSBvZmZzZXRNb2RpZmllclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBvZmZzZXRNb2RpZmllclN0YXRlW21haW5BeGlzXSkgIT0gbnVsbCA/IF9vZmZzZXRNb2RpZmllclN0YXRlJCA6IDA7XG4gICAgdmFyIHRldGhlck1pbiA9IG9mZnNldCArIG1pbk9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWUgLSBjbGllbnRPZmZzZXQ7XG4gICAgdmFyIHRldGhlck1heCA9IG9mZnNldCArIG1heE9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWU7XG4gICAgdmFyIHByZXZlbnRlZE9mZnNldCA9IHdpdGhpbih0ZXRoZXIgPyBtYXRoTWluKG1pbiwgdGV0aGVyTWluKSA6IG1pbiwgb2Zmc2V0LCB0ZXRoZXIgPyBtYXRoTWF4KG1heCwgdGV0aGVyTWF4KSA6IG1heCk7XG4gICAgcG9wcGVyT2Zmc2V0c1ttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQ7XG4gICAgZGF0YVttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQgLSBvZmZzZXQ7XG4gIH1cblxuICBpZiAoY2hlY2tBbHRBeGlzKSB7XG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclN0YXRlJDI7XG5cbiAgICB2YXIgX21haW5TaWRlID0gbWFpbkF4aXMgPT09ICd4JyA/IHRvcCA6IGxlZnQ7XG5cbiAgICB2YXIgX2FsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3gnID8gYm90dG9tIDogcmlnaHQ7XG5cbiAgICB2YXIgX29mZnNldCA9IHBvcHBlck9mZnNldHNbYWx0QXhpc107XG5cbiAgICB2YXIgX2xlbiA9IGFsdEF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHZhciBfbWluID0gX29mZnNldCArIG92ZXJmbG93W19tYWluU2lkZV07XG5cbiAgICB2YXIgX21heCA9IF9vZmZzZXQgLSBvdmVyZmxvd1tfYWx0U2lkZV07XG5cbiAgICB2YXIgaXNPcmlnaW5TaWRlID0gW3RvcCwgbGVmdF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSAhPT0gLTE7XG5cbiAgICB2YXIgX29mZnNldE1vZGlmaWVyVmFsdWUgPSAoX29mZnNldE1vZGlmaWVyU3RhdGUkMiA9IG9mZnNldE1vZGlmaWVyU3RhdGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9mZnNldE1vZGlmaWVyU3RhdGVbYWx0QXhpc10pICE9IG51bGwgPyBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyIDogMDtcblxuICAgIHZhciBfdGV0aGVyTWluID0gaXNPcmlnaW5TaWRlID8gX21pbiA6IF9vZmZzZXQgLSByZWZlcmVuY2VSZWN0W19sZW5dIC0gcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXM7XG5cbiAgICB2YXIgX3RldGhlck1heCA9IGlzT3JpZ2luU2lkZSA/IF9vZmZzZXQgKyByZWZlcmVuY2VSZWN0W19sZW5dICsgcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXMgOiBfbWF4O1xuXG4gICAgdmFyIF9wcmV2ZW50ZWRPZmZzZXQgPSB0ZXRoZXIgJiYgaXNPcmlnaW5TaWRlID8gd2l0aGluTWF4Q2xhbXAoX3RldGhlck1pbiwgX29mZnNldCwgX3RldGhlck1heCkgOiB3aXRoaW4odGV0aGVyID8gX3RldGhlck1pbiA6IF9taW4sIF9vZmZzZXQsIHRldGhlciA/IF90ZXRoZXJNYXggOiBfbWF4KTtcblxuICAgIHBvcHBlck9mZnNldHNbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0O1xuICAgIGRhdGFbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0IC0gX29mZnNldDtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAncHJldmVudE92ZXJmbG93JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgZm46IHByZXZlbnRPdmVyZmxvdyxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydvZmZzZXQnXVxufTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRIVE1MRWxlbWVudFNjcm9sbChlbGVtZW50KSB7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxMZWZ0LFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3BcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93U2Nyb2xsIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgZ2V0SFRNTEVsZW1lbnRTY3JvbGwgZnJvbSBcIi4vZ2V0SFRNTEVsZW1lbnRTY3JvbGwuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE5vZGVTY3JvbGwobm9kZSkge1xuICBpZiAobm9kZSA9PT0gZ2V0V2luZG93KG5vZGUpIHx8ICFpc0hUTUxFbGVtZW50KG5vZGUpKSB7XG4gICAgcmV0dXJuIGdldFdpbmRvd1Njcm9sbChub2RlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZ2V0SFRNTEVsZW1lbnRTY3JvbGwobm9kZSk7XG4gIH1cbn0iLCJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldE5vZGVTY3JvbGwgZnJvbSBcIi4vZ2V0Tm9kZVNjcm9sbC5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnRTY2FsZWQoZWxlbWVudCkge1xuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSByb3VuZChyZWN0LndpZHRoKSAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMTtcbiAgdmFyIHNjYWxlWSA9IHJvdW5kKHJlY3QuaGVpZ2h0KSAvIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDE7XG4gIHJldHVybiBzY2FsZVggIT09IDEgfHwgc2NhbGVZICE9PSAxO1xufSAvLyBSZXR1cm5zIHRoZSBjb21wb3NpdGUgcmVjdCBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGl0cyBvZmZzZXRQYXJlbnQuXG4vLyBDb21wb3NpdGUgbWVhbnMgaXQgdGFrZXMgaW50byBhY2NvdW50IHRyYW5zZm9ybXMgYXMgd2VsbCBhcyBsYXlvdXQuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcG9zaXRlUmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50LCBpc0ZpeGVkKSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cblxuICB2YXIgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIHZhciBvZmZzZXRQYXJlbnRJc1NjYWxlZCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBpc0VsZW1lbnRTY2FsZWQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50SXNTY2FsZWQsIGlzRml4ZWQpO1xuICB2YXIgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIHZhciBvZmZzZXRzID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuXG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTA3OFxuICAgIGlzU2Nyb2xsUGFyZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG5cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBvZmZzZXRzID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCwgdHJ1ZSk7XG4gICAgICBvZmZzZXRzLnggKz0gb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgKz0gb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudCkge1xuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLngsXG4gICAgeTogcmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wIC0gb2Zmc2V0cy55LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn0iLCJpbXBvcnQgeyBtb2RpZmllclBoYXNlcyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBzb3VyY2U6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ5ODc1MjU1XG5cbmZ1bmN0aW9uIG9yZGVyKG1vZGlmaWVycykge1xuICB2YXIgbWFwID0gbmV3IE1hcCgpO1xuICB2YXIgdmlzaXRlZCA9IG5ldyBTZXQoKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBtYXAuc2V0KG1vZGlmaWVyLm5hbWUsIG1vZGlmaWVyKTtcbiAgfSk7IC8vIE9uIHZpc2l0aW5nIG9iamVjdCwgY2hlY2sgZm9yIGl0cyBkZXBlbmRlbmNpZXMgYW5kIHZpc2l0IHRoZW0gcmVjdXJzaXZlbHlcblxuICBmdW5jdGlvbiBzb3J0KG1vZGlmaWVyKSB7XG4gICAgdmlzaXRlZC5hZGQobW9kaWZpZXIubmFtZSk7XG4gICAgdmFyIHJlcXVpcmVzID0gW10uY29uY2F0KG1vZGlmaWVyLnJlcXVpcmVzIHx8IFtdLCBtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzIHx8IFtdKTtcbiAgICByZXF1aXJlcy5mb3JFYWNoKGZ1bmN0aW9uIChkZXApIHtcbiAgICAgIGlmICghdmlzaXRlZC5oYXMoZGVwKSkge1xuICAgICAgICB2YXIgZGVwTW9kaWZpZXIgPSBtYXAuZ2V0KGRlcCk7XG5cbiAgICAgICAgaWYgKGRlcE1vZGlmaWVyKSB7XG4gICAgICAgICAgc29ydChkZXBNb2RpZmllcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXN1bHQucHVzaChtb2RpZmllcik7XG4gIH1cblxuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBpZiAoIXZpc2l0ZWQuaGFzKG1vZGlmaWVyLm5hbWUpKSB7XG4gICAgICAvLyBjaGVjayBmb3IgdmlzaXRlZCBvYmplY3RcbiAgICAgIHNvcnQobW9kaWZpZXIpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9yZGVyTW9kaWZpZXJzKG1vZGlmaWVycykge1xuICAvLyBvcmRlciBiYXNlZCBvbiBkZXBlbmRlbmNpZXNcbiAgdmFyIG9yZGVyZWRNb2RpZmllcnMgPSBvcmRlcihtb2RpZmllcnMpOyAvLyBvcmRlciBiYXNlZCBvbiBwaGFzZVxuXG4gIHJldHVybiBtb2RpZmllclBoYXNlcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGhhc2UpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChvcmRlcmVkTW9kaWZpZXJzLmZpbHRlcihmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICAgIHJldHVybiBtb2RpZmllci5waGFzZSA9PT0gcGhhc2U7XG4gICAgfSkpO1xuICB9LCBbXSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVib3VuY2UoZm4pIHtcbiAgdmFyIHBlbmRpbmc7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFwZW5kaW5nKSB7XG4gICAgICBwZW5kaW5nID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcGVuZGluZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICByZXNvbHZlKGZuKCkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBwZW5kaW5nO1xuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlQnlOYW1lKG1vZGlmaWVycykge1xuICB2YXIgbWVyZ2VkID0gbW9kaWZpZXJzLnJlZHVjZShmdW5jdGlvbiAobWVyZ2VkLCBjdXJyZW50KSB7XG4gICAgdmFyIGV4aXN0aW5nID0gbWVyZ2VkW2N1cnJlbnQubmFtZV07XG4gICAgbWVyZ2VkW2N1cnJlbnQubmFtZV0gPSBleGlzdGluZyA/IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLCBjdXJyZW50LCB7XG4gICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZy5vcHRpb25zLCBjdXJyZW50Lm9wdGlvbnMpLFxuICAgICAgZGF0YTogT2JqZWN0LmFzc2lnbih7fSwgZXhpc3RpbmcuZGF0YSwgY3VycmVudC5kYXRhKVxuICAgIH0pIDogY3VycmVudDtcbiAgICByZXR1cm4gbWVyZ2VkO1xuICB9LCB7fSk7IC8vIElFMTEgZG9lcyBub3Qgc3VwcG9ydCBPYmplY3QudmFsdWVzXG5cbiAgcmV0dXJuIE9iamVjdC5rZXlzKG1lcmdlZCkubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gbWVyZ2VkW2tleV07XG4gIH0pO1xufSIsImltcG9ydCBnZXRDb21wb3NpdGVSZWN0IGZyb20gXCIuL2RvbS11dGlscy9nZXRDb21wb3NpdGVSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0TGF5b3V0UmVjdCBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qc1wiO1xuaW1wb3J0IGxpc3RTY3JvbGxQYXJlbnRzIGZyb20gXCIuL2RvbS11dGlscy9saXN0U2Nyb2xsUGFyZW50cy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgb3JkZXJNb2RpZmllcnMgZnJvbSBcIi4vdXRpbHMvb3JkZXJNb2RpZmllcnMuanNcIjtcbmltcG9ydCBkZWJvdW5jZSBmcm9tIFwiLi91dGlscy9kZWJvdW5jZS5qc1wiO1xuaW1wb3J0IG1lcmdlQnlOYW1lIGZyb20gXCIuL3V0aWxzL21lcmdlQnlOYW1lLmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4vdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCB9IGZyb20gXCIuL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzXCI7XG52YXIgREVGQVVMVF9PUFRJT05TID0ge1xuICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICBtb2RpZmllcnM6IFtdLFxuICBzdHJhdGVneTogJ2Fic29sdXRlJ1xufTtcblxuZnVuY3Rpb24gYXJlVmFsaWRFbGVtZW50cygpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiAhYXJncy5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgcmV0dXJuICEoZWxlbWVudCAmJiB0eXBlb2YgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QgPT09ICdmdW5jdGlvbicpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvcHBlckdlbmVyYXRvcihnZW5lcmF0b3JPcHRpb25zKSB7XG4gIGlmIChnZW5lcmF0b3JPcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBnZW5lcmF0b3JPcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgX2dlbmVyYXRvck9wdGlvbnMgPSBnZW5lcmF0b3JPcHRpb25zLFxuICAgICAgX2dlbmVyYXRvck9wdGlvbnMkZGVmID0gX2dlbmVyYXRvck9wdGlvbnMuZGVmYXVsdE1vZGlmaWVycyxcbiAgICAgIGRlZmF1bHRNb2RpZmllcnMgPSBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYgPT09IHZvaWQgMCA/IFtdIDogX2dlbmVyYXRvck9wdGlvbnMkZGVmLFxuICAgICAgX2dlbmVyYXRvck9wdGlvbnMkZGVmMiA9IF9nZW5lcmF0b3JPcHRpb25zLmRlZmF1bHRPcHRpb25zLFxuICAgICAgZGVmYXVsdE9wdGlvbnMgPSBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyID09PSB2b2lkIDAgPyBERUZBVUxUX09QVElPTlMgOiBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyO1xuICByZXR1cm4gZnVuY3Rpb24gY3JlYXRlUG9wcGVyKHJlZmVyZW5jZSwgcG9wcGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgICAgb3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zO1xuICAgIH1cblxuICAgIHZhciBzdGF0ZSA9IHtcbiAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICBvcmRlcmVkTW9kaWZpZXJzOiBbXSxcbiAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUywgZGVmYXVsdE9wdGlvbnMpLFxuICAgICAgbW9kaWZpZXJzRGF0YToge30sXG4gICAgICBlbGVtZW50czoge1xuICAgICAgICByZWZlcmVuY2U6IHJlZmVyZW5jZSxcbiAgICAgICAgcG9wcGVyOiBwb3BwZXJcbiAgICAgIH0sXG4gICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgIHN0eWxlczoge31cbiAgICB9O1xuICAgIHZhciBlZmZlY3RDbGVhbnVwRm5zID0gW107XG4gICAgdmFyIGlzRGVzdHJveWVkID0gZmFsc2U7XG4gICAgdmFyIGluc3RhbmNlID0ge1xuICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgc2V0T3B0aW9uczogZnVuY3Rpb24gc2V0T3B0aW9ucyhzZXRPcHRpb25zQWN0aW9uKSB7XG4gICAgICAgIHZhciBvcHRpb25zID0gdHlwZW9mIHNldE9wdGlvbnNBY3Rpb24gPT09ICdmdW5jdGlvbicgPyBzZXRPcHRpb25zQWN0aW9uKHN0YXRlLm9wdGlvbnMpIDogc2V0T3B0aW9uc0FjdGlvbjtcbiAgICAgICAgY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICBzdGF0ZS5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdE9wdGlvbnMsIHN0YXRlLm9wdGlvbnMsIG9wdGlvbnMpO1xuICAgICAgICBzdGF0ZS5zY3JvbGxQYXJlbnRzID0ge1xuICAgICAgICAgIHJlZmVyZW5jZTogaXNFbGVtZW50KHJlZmVyZW5jZSkgPyBsaXN0U2Nyb2xsUGFyZW50cyhyZWZlcmVuY2UpIDogcmVmZXJlbmNlLmNvbnRleHRFbGVtZW50ID8gbGlzdFNjcm9sbFBhcmVudHMocmVmZXJlbmNlLmNvbnRleHRFbGVtZW50KSA6IFtdLFxuICAgICAgICAgIHBvcHBlcjogbGlzdFNjcm9sbFBhcmVudHMocG9wcGVyKVxuICAgICAgICB9OyAvLyBPcmRlcnMgdGhlIG1vZGlmaWVycyBiYXNlZCBvbiB0aGVpciBkZXBlbmRlbmNpZXMgYW5kIGBwaGFzZWBcbiAgICAgICAgLy8gcHJvcGVydGllc1xuXG4gICAgICAgIHZhciBvcmRlcmVkTW9kaWZpZXJzID0gb3JkZXJNb2RpZmllcnMobWVyZ2VCeU5hbWUoW10uY29uY2F0KGRlZmF1bHRNb2RpZmllcnMsIHN0YXRlLm9wdGlvbnMubW9kaWZpZXJzKSkpOyAvLyBTdHJpcCBvdXQgZGlzYWJsZWQgbW9kaWZpZXJzXG5cbiAgICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyZWRNb2RpZmllcnMuZmlsdGVyKGZ1bmN0aW9uIChtKSB7XG4gICAgICAgICAgcmV0dXJuIG0uZW5hYmxlZDtcbiAgICAgICAgfSk7XG4gICAgICAgIHJ1bk1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICByZXR1cm4gaW5zdGFuY2UudXBkYXRlKCk7XG4gICAgICB9LFxuICAgICAgLy8gU3luYyB1cGRhdGUg4oCTIGl0IHdpbGwgYWx3YXlzIGJlIGV4ZWN1dGVkLCBldmVuIGlmIG5vdCBuZWNlc3NhcnkuIFRoaXNcbiAgICAgIC8vIGlzIHVzZWZ1bCBmb3IgbG93IGZyZXF1ZW5jeSB1cGRhdGVzIHdoZXJlIHN5bmMgYmVoYXZpb3Igc2ltcGxpZmllcyB0aGVcbiAgICAgIC8vIGxvZ2ljLlxuICAgICAgLy8gRm9yIGhpZ2ggZnJlcXVlbmN5IHVwZGF0ZXMgKGUuZy4gYHJlc2l6ZWAgYW5kIGBzY3JvbGxgIGV2ZW50cyksIGFsd2F5c1xuICAgICAgLy8gcHJlZmVyIHRoZSBhc3luYyBQb3BwZXIjdXBkYXRlIG1ldGhvZFxuICAgICAgZm9yY2VVcGRhdGU6IGZ1bmN0aW9uIGZvcmNlVXBkYXRlKCkge1xuICAgICAgICBpZiAoaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgX3N0YXRlJGVsZW1lbnRzID0gc3RhdGUuZWxlbWVudHMsXG4gICAgICAgICAgICByZWZlcmVuY2UgPSBfc3RhdGUkZWxlbWVudHMucmVmZXJlbmNlLFxuICAgICAgICAgICAgcG9wcGVyID0gX3N0YXRlJGVsZW1lbnRzLnBvcHBlcjsgLy8gRG9uJ3QgcHJvY2VlZCBpZiBgcmVmZXJlbmNlYCBvciBgcG9wcGVyYCBhcmUgbm90IHZhbGlkIGVsZW1lbnRzXG4gICAgICAgIC8vIGFueW1vcmVcblxuICAgICAgICBpZiAoIWFyZVZhbGlkRWxlbWVudHMocmVmZXJlbmNlLCBwb3BwZXIpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IC8vIFN0b3JlIHRoZSByZWZlcmVuY2UgYW5kIHBvcHBlciByZWN0cyB0byBiZSByZWFkIGJ5IG1vZGlmaWVyc1xuXG5cbiAgICAgICAgc3RhdGUucmVjdHMgPSB7XG4gICAgICAgICAgcmVmZXJlbmNlOiBnZXRDb21wb3NpdGVSZWN0KHJlZmVyZW5jZSwgZ2V0T2Zmc2V0UGFyZW50KHBvcHBlciksIHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3kgPT09ICdmaXhlZCcpLFxuICAgICAgICAgIHBvcHBlcjogZ2V0TGF5b3V0UmVjdChwb3BwZXIpXG4gICAgICAgIH07IC8vIE1vZGlmaWVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIHJlc2V0IHRoZSBjdXJyZW50IHVwZGF0ZSBjeWNsZS4gVGhlXG4gICAgICAgIC8vIG1vc3QgY29tbW9uIHVzZSBjYXNlIGZvciB0aGlzIGlzIHRoZSBgZmxpcGAgbW9kaWZpZXIgY2hhbmdpbmcgdGhlXG4gICAgICAgIC8vIHBsYWNlbWVudCwgd2hpY2ggdGhlbiBuZWVkcyB0byByZS1ydW4gYWxsIHRoZSBtb2RpZmllcnMsIGJlY2F1c2UgdGhlXG4gICAgICAgIC8vIGxvZ2ljIHdhcyBwcmV2aW91c2x5IHJhbiBmb3IgdGhlIHByZXZpb3VzIHBsYWNlbWVudCBhbmQgaXMgdGhlcmVmb3JlXG4gICAgICAgIC8vIHN0YWxlL2luY29ycmVjdFxuXG4gICAgICAgIHN0YXRlLnJlc2V0ID0gZmFsc2U7XG4gICAgICAgIHN0YXRlLnBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50OyAvLyBPbiBlYWNoIHVwZGF0ZSBjeWNsZSwgdGhlIGBtb2RpZmllcnNEYXRhYCBwcm9wZXJ0eSBmb3IgZWFjaCBtb2RpZmllclxuICAgICAgICAvLyBpcyBmaWxsZWQgd2l0aCB0aGUgaW5pdGlhbCBkYXRhIHNwZWNpZmllZCBieSB0aGUgbW9kaWZpZXIuIFRoaXMgbWVhbnNcbiAgICAgICAgLy8gaXQgZG9lc24ndCBwZXJzaXN0IGFuZCBpcyBmcmVzaCBvbiBlYWNoIHVwZGF0ZS5cbiAgICAgICAgLy8gVG8gZW5zdXJlIHBlcnNpc3RlbnQgZGF0YSwgdXNlIGAke25hbWV9I3BlcnNpc3RlbnRgXG5cbiAgICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgICAgICAgIHJldHVybiBzdGF0ZS5tb2RpZmllcnNEYXRhW21vZGlmaWVyLm5hbWVdID0gT2JqZWN0LmFzc2lnbih7fSwgbW9kaWZpZXIuZGF0YSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgIGlmIChzdGF0ZS5yZXNldCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgc3RhdGUucmVzZXQgPSBmYWxzZTtcbiAgICAgICAgICAgIGluZGV4ID0gLTE7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgX3N0YXRlJG9yZGVyZWRNb2RpZmllID0gc3RhdGUub3JkZXJlZE1vZGlmaWVyc1tpbmRleF0sXG4gICAgICAgICAgICAgIGZuID0gX3N0YXRlJG9yZGVyZWRNb2RpZmllLmZuLFxuICAgICAgICAgICAgICBfc3RhdGUkb3JkZXJlZE1vZGlmaWUyID0gX3N0YXRlJG9yZGVyZWRNb2RpZmllLm9wdGlvbnMsXG4gICAgICAgICAgICAgIF9vcHRpb25zID0gX3N0YXRlJG9yZGVyZWRNb2RpZmllMiA9PT0gdm9pZCAwID8ge30gOiBfc3RhdGUkb3JkZXJlZE1vZGlmaWUyLFxuICAgICAgICAgICAgICBuYW1lID0gX3N0YXRlJG9yZGVyZWRNb2RpZmllLm5hbWU7XG5cbiAgICAgICAgICBpZiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IGZuKHtcbiAgICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgICBvcHRpb25zOiBfb3B0aW9ucyxcbiAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgaW5zdGFuY2U6IGluc3RhbmNlXG4gICAgICAgICAgICB9KSB8fCBzdGF0ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBBc3luYyBhbmQgb3B0aW1pc3RpY2FsbHkgb3B0aW1pemVkIHVwZGF0ZSDigJMgaXQgd2lsbCBub3QgYmUgZXhlY3V0ZWQgaWZcbiAgICAgIC8vIG5vdCBuZWNlc3NhcnkgKGRlYm91bmNlZCB0byBydW4gYXQgbW9zdCBvbmNlLXBlci10aWNrKVxuICAgICAgdXBkYXRlOiBkZWJvdW5jZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgICAgIGluc3RhbmNlLmZvcmNlVXBkYXRlKCk7XG4gICAgICAgICAgcmVzb2x2ZShzdGF0ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSksXG4gICAgICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgICBjbGVhbnVwTW9kaWZpZXJFZmZlY3RzKCk7XG4gICAgICAgIGlzRGVzdHJveWVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKCFhcmVWYWxpZEVsZW1lbnRzKHJlZmVyZW5jZSwgcG9wcGVyKSkge1xuICAgICAgcmV0dXJuIGluc3RhbmNlO1xuICAgIH1cblxuICAgIGluc3RhbmNlLnNldE9wdGlvbnMob3B0aW9ucykudGhlbihmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgIGlmICghaXNEZXN0cm95ZWQgJiYgb3B0aW9ucy5vbkZpcnN0VXBkYXRlKSB7XG4gICAgICAgIG9wdGlvbnMub25GaXJzdFVwZGF0ZShzdGF0ZSk7XG4gICAgICB9XG4gICAgfSk7IC8vIE1vZGlmaWVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIGV4ZWN1dGUgYXJiaXRyYXJ5IGNvZGUgYmVmb3JlIHRoZSBmaXJzdFxuICAgIC8vIHVwZGF0ZSBjeWNsZSBydW5zLiBUaGV5IHdpbGwgYmUgZXhlY3V0ZWQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHVwZGF0ZVxuICAgIC8vIGN5Y2xlLiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGEgbW9kaWZpZXIgYWRkcyBzb21lIHBlcnNpc3RlbnQgZGF0YSB0aGF0XG4gICAgLy8gb3RoZXIgbW9kaWZpZXJzIG5lZWQgdG8gdXNlLCBidXQgdGhlIG1vZGlmaWVyIGlzIHJ1biBhZnRlciB0aGUgZGVwZW5kZW50XG4gICAgLy8gb25lLlxuXG4gICAgZnVuY3Rpb24gcnVuTW9kaWZpZXJFZmZlY3RzKCkge1xuICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICAgIHZhciBuYW1lID0gX3JlZi5uYW1lLFxuICAgICAgICAgICAgX3JlZiRvcHRpb25zID0gX3JlZi5vcHRpb25zLFxuICAgICAgICAgICAgb3B0aW9ucyA9IF9yZWYkb3B0aW9ucyA9PT0gdm9pZCAwID8ge30gOiBfcmVmJG9wdGlvbnMsXG4gICAgICAgICAgICBlZmZlY3QgPSBfcmVmLmVmZmVjdDtcblxuICAgICAgICBpZiAodHlwZW9mIGVmZmVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHZhciBjbGVhbnVwRm4gPSBlZmZlY3Qoe1xuICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZSxcbiAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHZhciBub29wRm4gPSBmdW5jdGlvbiBub29wRm4oKSB7fTtcblxuICAgICAgICAgIGVmZmVjdENsZWFudXBGbnMucHVzaChjbGVhbnVwRm4gfHwgbm9vcEZuKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpIHtcbiAgICAgIGVmZmVjdENsZWFudXBGbnMuZm9yRWFjaChmdW5jdGlvbiAoZm4pIHtcbiAgICAgICAgcmV0dXJuIGZuKCk7XG4gICAgICB9KTtcbiAgICAgIGVmZmVjdENsZWFudXBGbnMgPSBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH07XG59XG5leHBvcnQgdmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3IoKTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBkZXRlY3RPdmVyZmxvdyB9OyIsImltcG9ydCB7IHBvcHBlckdlbmVyYXRvciwgZGV0ZWN0T3ZlcmZsb3cgfSBmcm9tIFwiLi9jcmVhdGVQb3BwZXIuanNcIjtcbmltcG9ydCBldmVudExpc3RlbmVycyBmcm9tIFwiLi9tb2RpZmllcnMvZXZlbnRMaXN0ZW5lcnMuanNcIjtcbmltcG9ydCBwb3BwZXJPZmZzZXRzIGZyb20gXCIuL21vZGlmaWVycy9wb3BwZXJPZmZzZXRzLmpzXCI7XG5pbXBvcnQgY29tcHV0ZVN0eWxlcyBmcm9tIFwiLi9tb2RpZmllcnMvY29tcHV0ZVN0eWxlcy5qc1wiO1xuaW1wb3J0IGFwcGx5U3R5bGVzIGZyb20gXCIuL21vZGlmaWVycy9hcHBseVN0eWxlcy5qc1wiO1xuaW1wb3J0IG9mZnNldCBmcm9tIFwiLi9tb2RpZmllcnMvb2Zmc2V0LmpzXCI7XG5pbXBvcnQgZmxpcCBmcm9tIFwiLi9tb2RpZmllcnMvZmxpcC5qc1wiO1xuaW1wb3J0IHByZXZlbnRPdmVyZmxvdyBmcm9tIFwiLi9tb2RpZmllcnMvcHJldmVudE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgYXJyb3cgZnJvbSBcIi4vbW9kaWZpZXJzL2Fycm93LmpzXCI7XG5pbXBvcnQgaGlkZSBmcm9tIFwiLi9tb2RpZmllcnMvaGlkZS5qc1wiO1xudmFyIGRlZmF1bHRNb2RpZmllcnMgPSBbZXZlbnRMaXN0ZW5lcnMsIHBvcHBlck9mZnNldHMsIGNvbXB1dGVTdHlsZXMsIGFwcGx5U3R5bGVzLCBvZmZzZXQsIGZsaXAsIHByZXZlbnRPdmVyZmxvdywgYXJyb3csIGhpZGVdO1xudmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3Ioe1xuICBkZWZhdWx0TW9kaWZpZXJzOiBkZWZhdWx0TW9kaWZpZXJzXG59KTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIsIHBvcHBlckdlbmVyYXRvciwgZGVmYXVsdE1vZGlmaWVycywgZGV0ZWN0T3ZlcmZsb3cgfTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIgYXMgY3JlYXRlUG9wcGVyTGl0ZSB9IGZyb20gXCIuL3BvcHBlci1saXRlLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0ICogZnJvbSBcIi4vbW9kaWZpZXJzL2luZGV4LmpzXCI7IiwiLyohXG4gICogQm9vdHN0cmFwIHY1LjMuOCAoaHR0cHM6Ly9nZXRib290c3RyYXAuY29tLylcbiAgKiBDb3B5cmlnaHQgMjAxMS0yMDI1IFRoZSBCb290c3RyYXAgQXV0aG9ycyAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2dyYXBocy9jb250cmlidXRvcnMpXG4gICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gICovXG5pbXBvcnQgKiBhcyBQb3BwZXIgZnJvbSAnQHBvcHBlcmpzL2NvcmUnO1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgZG9tL2RhdGEuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IGVsZW1lbnRNYXAgPSBuZXcgTWFwKCk7XG5jb25zdCBEYXRhID0ge1xuICBzZXQoZWxlbWVudCwga2V5LCBpbnN0YW5jZSkge1xuICAgIGlmICghZWxlbWVudE1hcC5oYXMoZWxlbWVudCkpIHtcbiAgICAgIGVsZW1lbnRNYXAuc2V0KGVsZW1lbnQsIG5ldyBNYXAoKSk7XG4gICAgfVxuICAgIGNvbnN0IGluc3RhbmNlTWFwID0gZWxlbWVudE1hcC5nZXQoZWxlbWVudCk7XG5cbiAgICAvLyBtYWtlIGl0IGNsZWFyIHdlIG9ubHkgd2FudCBvbmUgaW5zdGFuY2UgcGVyIGVsZW1lbnRcbiAgICAvLyBjYW4gYmUgcmVtb3ZlZCBsYXRlciB3aGVuIG11bHRpcGxlIGtleS9pbnN0YW5jZXMgYXJlIGZpbmUgdG8gYmUgdXNlZFxuICAgIGlmICghaW5zdGFuY2VNYXAuaGFzKGtleSkgJiYgaW5zdGFuY2VNYXAuc2l6ZSAhPT0gMCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEJvb3RzdHJhcCBkb2Vzbid0IGFsbG93IG1vcmUgdGhhbiBvbmUgaW5zdGFuY2UgcGVyIGVsZW1lbnQuIEJvdW5kIGluc3RhbmNlOiAke0FycmF5LmZyb20oaW5zdGFuY2VNYXAua2V5cygpKVswXX0uYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGluc3RhbmNlTWFwLnNldChrZXksIGluc3RhbmNlKTtcbiAgfSxcbiAgZ2V0KGVsZW1lbnQsIGtleSkge1xuICAgIGlmIChlbGVtZW50TWFwLmhhcyhlbGVtZW50KSkge1xuICAgICAgcmV0dXJuIGVsZW1lbnRNYXAuZ2V0KGVsZW1lbnQpLmdldChrZXkpIHx8IG51bGw7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9LFxuICByZW1vdmUoZWxlbWVudCwga2V5KSB7XG4gICAgaWYgKCFlbGVtZW50TWFwLmhhcyhlbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpbnN0YW5jZU1hcCA9IGVsZW1lbnRNYXAuZ2V0KGVsZW1lbnQpO1xuICAgIGluc3RhbmNlTWFwLmRlbGV0ZShrZXkpO1xuXG4gICAgLy8gZnJlZSB1cCBlbGVtZW50IHJlZmVyZW5jZXMgaWYgdGhlcmUgYXJlIG5vIGluc3RhbmNlcyBsZWZ0IGZvciBhbiBlbGVtZW50XG4gICAgaWYgKGluc3RhbmNlTWFwLnNpemUgPT09IDApIHtcbiAgICAgIGVsZW1lbnRNYXAuZGVsZXRlKGVsZW1lbnQpO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwIHV0aWwvaW5kZXguanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5jb25zdCBNQVhfVUlEID0gMTAwMDAwMDtcbmNvbnN0IE1JTExJU0VDT05EU19NVUxUSVBMSUVSID0gMTAwMDtcbmNvbnN0IFRSQU5TSVRJT05fRU5EID0gJ3RyYW5zaXRpb25lbmQnO1xuXG4vKipcbiAqIFByb3Blcmx5IGVzY2FwZSBJRHMgc2VsZWN0b3JzIHRvIGhhbmRsZSB3ZWlyZCBJRHNcbiAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3RvclxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuY29uc3QgcGFyc2VTZWxlY3RvciA9IHNlbGVjdG9yID0+IHtcbiAgaWYgKHNlbGVjdG9yICYmIHdpbmRvdy5DU1MgJiYgd2luZG93LkNTUy5lc2NhcGUpIHtcbiAgICAvLyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yIG5lZWRzIGVzY2FwaW5nIHRvIGhhbmRsZSBJRHMgKGh0bWw1KykgY29udGFpbmluZyBmb3IgaW5zdGFuY2UgL1xuICAgIHNlbGVjdG9yID0gc2VsZWN0b3IucmVwbGFjZSgvIyhbXlxcc1wiIyddKykvZywgKG1hdGNoLCBpZCkgPT4gYCMke0NTUy5lc2NhcGUoaWQpfWApO1xuICB9XG4gIHJldHVybiBzZWxlY3Rvcjtcbn07XG5cbi8vIFNob3V0LW91dCBBbmd1cyBDcm9sbCAoaHR0cHM6Ly9nb28uZ2wvcHh3UUdwKVxuY29uc3QgdG9UeXBlID0gb2JqZWN0ID0+IHtcbiAgaWYgKG9iamVjdCA9PT0gbnVsbCB8fCBvYmplY3QgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBgJHtvYmplY3R9YDtcbiAgfVxuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkubWF0Y2goL1xccyhbYS16XSspL2kpWzFdLnRvTG93ZXJDYXNlKCk7XG59O1xuXG4vKipcbiAqIFB1YmxpYyBVdGlsIEFQSVxuICovXG5cbmNvbnN0IGdldFVJRCA9IHByZWZpeCA9PiB7XG4gIGRvIHtcbiAgICBwcmVmaXggKz0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogTUFYX1VJRCk7XG4gIH0gd2hpbGUgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHByZWZpeCkpO1xuICByZXR1cm4gcHJlZml4O1xufTtcbmNvbnN0IGdldFRyYW5zaXRpb25EdXJhdGlvbkZyb21FbGVtZW50ID0gZWxlbWVudCA9PiB7XG4gIGlmICghZWxlbWVudCkge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgLy8gR2V0IHRyYW5zaXRpb24tZHVyYXRpb24gb2YgdGhlIGVsZW1lbnRcbiAgbGV0IHtcbiAgICB0cmFuc2l0aW9uRHVyYXRpb24sXG4gICAgdHJhbnNpdGlvbkRlbGF5XG4gIH0gPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgY29uc3QgZmxvYXRUcmFuc2l0aW9uRHVyYXRpb24gPSBOdW1iZXIucGFyc2VGbG9hdCh0cmFuc2l0aW9uRHVyYXRpb24pO1xuICBjb25zdCBmbG9hdFRyYW5zaXRpb25EZWxheSA9IE51bWJlci5wYXJzZUZsb2F0KHRyYW5zaXRpb25EZWxheSk7XG5cbiAgLy8gUmV0dXJuIDAgaWYgZWxlbWVudCBvciB0cmFuc2l0aW9uIGR1cmF0aW9uIGlzIG5vdCBmb3VuZFxuICBpZiAoIWZsb2F0VHJhbnNpdGlvbkR1cmF0aW9uICYmICFmbG9hdFRyYW5zaXRpb25EZWxheSkge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgLy8gSWYgbXVsdGlwbGUgZHVyYXRpb25zIGFyZSBkZWZpbmVkLCB0YWtlIHRoZSBmaXJzdFxuICB0cmFuc2l0aW9uRHVyYXRpb24gPSB0cmFuc2l0aW9uRHVyYXRpb24uc3BsaXQoJywnKVswXTtcbiAgdHJhbnNpdGlvbkRlbGF5ID0gdHJhbnNpdGlvbkRlbGF5LnNwbGl0KCcsJylbMF07XG4gIHJldHVybiAoTnVtYmVyLnBhcnNlRmxvYXQodHJhbnNpdGlvbkR1cmF0aW9uKSArIE51bWJlci5wYXJzZUZsb2F0KHRyYW5zaXRpb25EZWxheSkpICogTUlMTElTRUNPTkRTX01VTFRJUExJRVI7XG59O1xuY29uc3QgdHJpZ2dlclRyYW5zaXRpb25FbmQgPSBlbGVtZW50ID0+IHtcbiAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudChUUkFOU0lUSU9OX0VORCkpO1xufTtcbmNvbnN0IGlzRWxlbWVudCA9IG9iamVjdCA9PiB7XG4gIGlmICghb2JqZWN0IHx8IHR5cGVvZiBvYmplY3QgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICh0eXBlb2Ygb2JqZWN0LmpxdWVyeSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBvYmplY3QgPSBvYmplY3RbMF07XG4gIH1cbiAgcmV0dXJuIHR5cGVvZiBvYmplY3Qubm9kZVR5cGUgIT09ICd1bmRlZmluZWQnO1xufTtcbmNvbnN0IGdldEVsZW1lbnQgPSBvYmplY3QgPT4ge1xuICAvLyBpdCdzIGEgalF1ZXJ5IG9iamVjdCBvciBhIG5vZGUgZWxlbWVudFxuICBpZiAoaXNFbGVtZW50KG9iamVjdCkpIHtcbiAgICByZXR1cm4gb2JqZWN0LmpxdWVyeSA/IG9iamVjdFswXSA6IG9iamVjdDtcbiAgfVxuICBpZiAodHlwZW9mIG9iamVjdCA9PT0gJ3N0cmluZycgJiYgb2JqZWN0Lmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihwYXJzZVNlbGVjdG9yKG9iamVjdCkpO1xuICB9XG4gIHJldHVybiBudWxsO1xufTtcbmNvbnN0IGlzVmlzaWJsZSA9IGVsZW1lbnQgPT4ge1xuICBpZiAoIWlzRWxlbWVudChlbGVtZW50KSB8fCBlbGVtZW50LmdldENsaWVudFJlY3RzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IGVsZW1lbnRJc1Zpc2libGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJ3Zpc2liaWxpdHknKSA9PT0gJ3Zpc2libGUnO1xuICAvLyBIYW5kbGUgYGRldGFpbHNgIGVsZW1lbnQgYXMgaXRzIGNvbnRlbnQgbWF5IGZhbHNpZSBhcHBlYXIgdmlzaWJsZSB3aGVuIGl0IGlzIGNsb3NlZFxuICBjb25zdCBjbG9zZWREZXRhaWxzID0gZWxlbWVudC5jbG9zZXN0KCdkZXRhaWxzOm5vdChbb3Blbl0pJyk7XG4gIGlmICghY2xvc2VkRGV0YWlscykge1xuICAgIHJldHVybiBlbGVtZW50SXNWaXNpYmxlO1xuICB9XG4gIGlmIChjbG9zZWREZXRhaWxzICE9PSBlbGVtZW50KSB7XG4gICAgY29uc3Qgc3VtbWFyeSA9IGVsZW1lbnQuY2xvc2VzdCgnc3VtbWFyeScpO1xuICAgIGlmIChzdW1tYXJ5ICYmIHN1bW1hcnkucGFyZW50Tm9kZSAhPT0gY2xvc2VkRGV0YWlscykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoc3VtbWFyeSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZWxlbWVudElzVmlzaWJsZTtcbn07XG5jb25zdCBpc0Rpc2FibGVkID0gZWxlbWVudCA9PiB7XG4gIGlmICghZWxlbWVudCB8fCBlbGVtZW50Lm5vZGVUeXBlICE9PSBOb2RlLkVMRU1FTlRfTk9ERSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnZGlzYWJsZWQnKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICh0eXBlb2YgZWxlbWVudC5kaXNhYmxlZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZWxlbWVudC5kaXNhYmxlZDtcbiAgfVxuICByZXR1cm4gZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgJiYgZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgIT09ICdmYWxzZSc7XG59O1xuY29uc3QgZmluZFNoYWRvd1Jvb3QgPSBlbGVtZW50ID0+IHtcbiAgaWYgKCFkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXR0YWNoU2hhZG93KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBDYW4gZmluZCB0aGUgc2hhZG93IHJvb3Qgb3RoZXJ3aXNlIGl0J2xsIHJldHVybiB0aGUgZG9jdW1lbnRcbiAgaWYgKHR5cGVvZiBlbGVtZW50LmdldFJvb3ROb2RlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc3Qgcm9vdCA9IGVsZW1lbnQuZ2V0Um9vdE5vZGUoKTtcbiAgICByZXR1cm4gcm9vdCBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QgPyByb290IDogbnVsbDtcbiAgfVxuICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QpIHtcbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIC8vIHdoZW4gd2UgZG9uJ3QgZmluZCBhIHNoYWRvdyByb290XG4gIGlmICghZWxlbWVudC5wYXJlbnROb2RlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIGZpbmRTaGFkb3dSb290KGVsZW1lbnQucGFyZW50Tm9kZSk7XG59O1xuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuXG4vKipcbiAqIFRyaWNrIHRvIHJlc3RhcnQgYW4gZWxlbWVudCdzIGFuaW1hdGlvblxuICpcbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGVsZW1lbnRcbiAqIEByZXR1cm4gdm9pZFxuICpcbiAqIEBzZWUgaHR0cHM6Ly93d3cuaGFycnl0aGVvLmNvbS9ibG9nLzIwMjEvMDIvcmVzdGFydC1hLWNzcy1hbmltYXRpb24td2l0aC1qYXZhc2NyaXB0LyNyZXN0YXJ0aW5nLWEtY3NzLWFuaW1hdGlvblxuICovXG5jb25zdCByZWZsb3cgPSBlbGVtZW50ID0+IHtcbiAgZWxlbWVudC5vZmZzZXRIZWlnaHQ7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLWV4cHJlc3Npb25zXG59O1xuY29uc3QgZ2V0alF1ZXJ5ID0gKCkgPT4ge1xuICBpZiAod2luZG93LmpRdWVyeSAmJiAhZG9jdW1lbnQuYm9keS5oYXNBdHRyaWJ1dGUoJ2RhdGEtYnMtbm8tanF1ZXJ5JykpIHtcbiAgICByZXR1cm4gd2luZG93LmpRdWVyeTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5jb25zdCBET01Db250ZW50TG9hZGVkQ2FsbGJhY2tzID0gW107XG5jb25zdCBvbkRPTUNvbnRlbnRMb2FkZWQgPSBjYWxsYmFjayA9PiB7XG4gIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgICAvLyBhZGQgbGlzdGVuZXIgb24gdGhlIGZpcnN0IGNhbGwgd2hlbiB0aGUgZG9jdW1lbnQgaXMgaW4gbG9hZGluZyBzdGF0ZVxuICAgIGlmICghRE9NQ29udGVudExvYWRlZENhbGxiYWNrcy5sZW5ndGgpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCAoKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgY2FsbGJhY2sgb2YgRE9NQ29udGVudExvYWRlZENhbGxiYWNrcykge1xuICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBET01Db250ZW50TG9hZGVkQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICB9IGVsc2Uge1xuICAgIGNhbGxiYWNrKCk7XG4gIH1cbn07XG5jb25zdCBpc1JUTCA9ICgpID0+IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kaXIgPT09ICdydGwnO1xuY29uc3QgZGVmaW5lSlF1ZXJ5UGx1Z2luID0gcGx1Z2luID0+IHtcbiAgb25ET01Db250ZW50TG9hZGVkKCgpID0+IHtcbiAgICBjb25zdCAkID0gZ2V0alF1ZXJ5KCk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCQpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBwbHVnaW4uTkFNRTtcbiAgICAgIGNvbnN0IEpRVUVSWV9OT19DT05GTElDVCA9ICQuZm5bbmFtZV07XG4gICAgICAkLmZuW25hbWVdID0gcGx1Z2luLmpRdWVyeUludGVyZmFjZTtcbiAgICAgICQuZm5bbmFtZV0uQ29uc3RydWN0b3IgPSBwbHVnaW47XG4gICAgICAkLmZuW25hbWVdLm5vQ29uZmxpY3QgPSAoKSA9PiB7XG4gICAgICAgICQuZm5bbmFtZV0gPSBKUVVFUllfTk9fQ09ORkxJQ1Q7XG4gICAgICAgIHJldHVybiBwbHVnaW4ualF1ZXJ5SW50ZXJmYWNlO1xuICAgICAgfTtcbiAgICB9XG4gIH0pO1xufTtcbmNvbnN0IGV4ZWN1dGUgPSAocG9zc2libGVDYWxsYmFjaywgYXJncyA9IFtdLCBkZWZhdWx0VmFsdWUgPSBwb3NzaWJsZUNhbGxiYWNrKSA9PiB7XG4gIHJldHVybiB0eXBlb2YgcG9zc2libGVDYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJyA/IHBvc3NpYmxlQ2FsbGJhY2suY2FsbCguLi5hcmdzKSA6IGRlZmF1bHRWYWx1ZTtcbn07XG5jb25zdCBleGVjdXRlQWZ0ZXJUcmFuc2l0aW9uID0gKGNhbGxiYWNrLCB0cmFuc2l0aW9uRWxlbWVudCwgd2FpdEZvclRyYW5zaXRpb24gPSB0cnVlKSA9PiB7XG4gIGlmICghd2FpdEZvclRyYW5zaXRpb24pIHtcbiAgICBleGVjdXRlKGNhbGxiYWNrKTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgZHVyYXRpb25QYWRkaW5nID0gNTtcbiAgY29uc3QgZW11bGF0ZWREdXJhdGlvbiA9IGdldFRyYW5zaXRpb25EdXJhdGlvbkZyb21FbGVtZW50KHRyYW5zaXRpb25FbGVtZW50KSArIGR1cmF0aW9uUGFkZGluZztcbiAgbGV0IGNhbGxlZCA9IGZhbHNlO1xuICBjb25zdCBoYW5kbGVyID0gKHtcbiAgICB0YXJnZXRcbiAgfSkgPT4ge1xuICAgIGlmICh0YXJnZXQgIT09IHRyYW5zaXRpb25FbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNhbGxlZCA9IHRydWU7XG4gICAgdHJhbnNpdGlvbkVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihUUkFOU0lUSU9OX0VORCwgaGFuZGxlcik7XG4gICAgZXhlY3V0ZShjYWxsYmFjayk7XG4gIH07XG4gIHRyYW5zaXRpb25FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoVFJBTlNJVElPTl9FTkQsIGhhbmRsZXIpO1xuICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICBpZiAoIWNhbGxlZCkge1xuICAgICAgdHJpZ2dlclRyYW5zaXRpb25FbmQodHJhbnNpdGlvbkVsZW1lbnQpO1xuICAgIH1cbiAgfSwgZW11bGF0ZWREdXJhdGlvbik7XG59O1xuXG4vKipcbiAqIFJldHVybiB0aGUgcHJldmlvdXMvbmV4dCBlbGVtZW50IG9mIGEgbGlzdC5cbiAqXG4gKiBAcGFyYW0ge2FycmF5fSBsaXN0ICAgIFRoZSBsaXN0IG9mIGVsZW1lbnRzXG4gKiBAcGFyYW0gYWN0aXZlRWxlbWVudCAgIFRoZSBhY3RpdmUgZWxlbWVudFxuICogQHBhcmFtIHNob3VsZEdldE5leHQgICBDaG9vc2UgdG8gZ2V0IG5leHQgb3IgcHJldmlvdXMgZWxlbWVudFxuICogQHBhcmFtIGlzQ3ljbGVBbGxvd2VkXG4gKiBAcmV0dXJuIHtFbGVtZW50fGVsZW19IFRoZSBwcm9wZXIgZWxlbWVudFxuICovXG5jb25zdCBnZXROZXh0QWN0aXZlRWxlbWVudCA9IChsaXN0LCBhY3RpdmVFbGVtZW50LCBzaG91bGRHZXROZXh0LCBpc0N5Y2xlQWxsb3dlZCkgPT4ge1xuICBjb25zdCBsaXN0TGVuZ3RoID0gbGlzdC5sZW5ndGg7XG4gIGxldCBpbmRleCA9IGxpc3QuaW5kZXhPZihhY3RpdmVFbGVtZW50KTtcblxuICAvLyBpZiB0aGUgZWxlbWVudCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbGlzdCByZXR1cm4gYW4gZWxlbWVudFxuICAvLyBkZXBlbmRpbmcgb24gdGhlIGRpcmVjdGlvbiBhbmQgaWYgY3ljbGUgaXMgYWxsb3dlZFxuICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgcmV0dXJuICFzaG91bGRHZXROZXh0ICYmIGlzQ3ljbGVBbGxvd2VkID8gbGlzdFtsaXN0TGVuZ3RoIC0gMV0gOiBsaXN0WzBdO1xuICB9XG4gIGluZGV4ICs9IHNob3VsZEdldE5leHQgPyAxIDogLTE7XG4gIGlmIChpc0N5Y2xlQWxsb3dlZCkge1xuICAgIGluZGV4ID0gKGluZGV4ICsgbGlzdExlbmd0aCkgJSBsaXN0TGVuZ3RoO1xuICB9XG4gIHJldHVybiBsaXN0W01hdGgubWF4KDAsIE1hdGgubWluKGluZGV4LCBsaXN0TGVuZ3RoIC0gMSkpXTtcbn07XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCBkb20vZXZlbnQtaGFuZGxlci5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBuYW1lc3BhY2VSZWdleCA9IC9bXi5dKig/PVxcLi4qKVxcLnwuKi87XG5jb25zdCBzdHJpcE5hbWVSZWdleCA9IC9cXC4uKi87XG5jb25zdCBzdHJpcFVpZFJlZ2V4ID0gLzo6XFxkKyQvO1xuY29uc3QgZXZlbnRSZWdpc3RyeSA9IHt9OyAvLyBFdmVudHMgc3RvcmFnZVxubGV0IHVpZEV2ZW50ID0gMTtcbmNvbnN0IGN1c3RvbUV2ZW50cyA9IHtcbiAgbW91c2VlbnRlcjogJ21vdXNlb3ZlcicsXG4gIG1vdXNlbGVhdmU6ICdtb3VzZW91dCdcbn07XG5jb25zdCBuYXRpdmVFdmVudHMgPSBuZXcgU2V0KFsnY2xpY2snLCAnZGJsY2xpY2snLCAnbW91c2V1cCcsICdtb3VzZWRvd24nLCAnY29udGV4dG1lbnUnLCAnbW91c2V3aGVlbCcsICdET01Nb3VzZVNjcm9sbCcsICdtb3VzZW92ZXInLCAnbW91c2VvdXQnLCAnbW91c2Vtb3ZlJywgJ3NlbGVjdHN0YXJ0JywgJ3NlbGVjdGVuZCcsICdrZXlkb3duJywgJ2tleXByZXNzJywgJ2tleXVwJywgJ29yaWVudGF0aW9uY2hhbmdlJywgJ3RvdWNoc3RhcnQnLCAndG91Y2htb3ZlJywgJ3RvdWNoZW5kJywgJ3RvdWNoY2FuY2VsJywgJ3BvaW50ZXJkb3duJywgJ3BvaW50ZXJtb3ZlJywgJ3BvaW50ZXJ1cCcsICdwb2ludGVybGVhdmUnLCAncG9pbnRlcmNhbmNlbCcsICdnZXN0dXJlc3RhcnQnLCAnZ2VzdHVyZWNoYW5nZScsICdnZXN0dXJlZW5kJywgJ2ZvY3VzJywgJ2JsdXInLCAnY2hhbmdlJywgJ3Jlc2V0JywgJ3NlbGVjdCcsICdzdWJtaXQnLCAnZm9jdXNpbicsICdmb2N1c291dCcsICdsb2FkJywgJ3VubG9hZCcsICdiZWZvcmV1bmxvYWQnLCAncmVzaXplJywgJ21vdmUnLCAnRE9NQ29udGVudExvYWRlZCcsICdyZWFkeXN0YXRlY2hhbmdlJywgJ2Vycm9yJywgJ2Fib3J0JywgJ3Njcm9sbCddKTtcblxuLyoqXG4gKiBQcml2YXRlIG1ldGhvZHNcbiAqL1xuXG5mdW5jdGlvbiBtYWtlRXZlbnRVaWQoZWxlbWVudCwgdWlkKSB7XG4gIHJldHVybiB1aWQgJiYgYCR7dWlkfTo6JHt1aWRFdmVudCsrfWAgfHwgZWxlbWVudC51aWRFdmVudCB8fCB1aWRFdmVudCsrO1xufVxuZnVuY3Rpb24gZ2V0RWxlbWVudEV2ZW50cyhlbGVtZW50KSB7XG4gIGNvbnN0IHVpZCA9IG1ha2VFdmVudFVpZChlbGVtZW50KTtcbiAgZWxlbWVudC51aWRFdmVudCA9IHVpZDtcbiAgZXZlbnRSZWdpc3RyeVt1aWRdID0gZXZlbnRSZWdpc3RyeVt1aWRdIHx8IHt9O1xuICByZXR1cm4gZXZlbnRSZWdpc3RyeVt1aWRdO1xufVxuZnVuY3Rpb24gYm9vdHN0cmFwSGFuZGxlcihlbGVtZW50LCBmbikge1xuICByZXR1cm4gZnVuY3Rpb24gaGFuZGxlcihldmVudCkge1xuICAgIGh5ZHJhdGVPYmooZXZlbnQsIHtcbiAgICAgIGRlbGVnYXRlVGFyZ2V0OiBlbGVtZW50XG4gICAgfSk7XG4gICAgaWYgKGhhbmRsZXIub25lT2ZmKSB7XG4gICAgICBFdmVudEhhbmRsZXIub2ZmKGVsZW1lbnQsIGV2ZW50LnR5cGUsIGZuKTtcbiAgICB9XG4gICAgcmV0dXJuIGZuLmFwcGx5KGVsZW1lbnQsIFtldmVudF0pO1xuICB9O1xufVxuZnVuY3Rpb24gYm9vdHN0cmFwRGVsZWdhdGlvbkhhbmRsZXIoZWxlbWVudCwgc2VsZWN0b3IsIGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50KSB7XG4gICAgY29uc3QgZG9tRWxlbWVudHMgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpO1xuICAgIGZvciAobGV0IHtcbiAgICAgIHRhcmdldFxuICAgIH0gPSBldmVudDsgdGFyZ2V0ICYmIHRhcmdldCAhPT0gdGhpczsgdGFyZ2V0ID0gdGFyZ2V0LnBhcmVudE5vZGUpIHtcbiAgICAgIGZvciAoY29uc3QgZG9tRWxlbWVudCBvZiBkb21FbGVtZW50cykge1xuICAgICAgICBpZiAoZG9tRWxlbWVudCAhPT0gdGFyZ2V0KSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaHlkcmF0ZU9iaihldmVudCwge1xuICAgICAgICAgIGRlbGVnYXRlVGFyZ2V0OiB0YXJnZXRcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChoYW5kbGVyLm9uZU9mZikge1xuICAgICAgICAgIEV2ZW50SGFuZGxlci5vZmYoZWxlbWVudCwgZXZlbnQudHlwZSwgc2VsZWN0b3IsIGZuKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm4uYXBwbHkodGFyZ2V0LCBbZXZlbnRdKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5mdW5jdGlvbiBmaW5kSGFuZGxlcihldmVudHMsIGNhbGxhYmxlLCBkZWxlZ2F0aW9uU2VsZWN0b3IgPSBudWxsKSB7XG4gIHJldHVybiBPYmplY3QudmFsdWVzKGV2ZW50cykuZmluZChldmVudCA9PiBldmVudC5jYWxsYWJsZSA9PT0gY2FsbGFibGUgJiYgZXZlbnQuZGVsZWdhdGlvblNlbGVjdG9yID09PSBkZWxlZ2F0aW9uU2VsZWN0b3IpO1xufVxuZnVuY3Rpb24gbm9ybWFsaXplUGFyYW1ldGVycyhvcmlnaW5hbFR5cGVFdmVudCwgaGFuZGxlciwgZGVsZWdhdGlvbkZ1bmN0aW9uKSB7XG4gIGNvbnN0IGlzRGVsZWdhdGVkID0gdHlwZW9mIGhhbmRsZXIgPT09ICdzdHJpbmcnO1xuICAvLyBUT0RPOiB0b29sdGlwIHBhc3NlcyBgZmFsc2VgIGluc3RlYWQgb2Ygc2VsZWN0b3IsIHNvIHdlIG5lZWQgdG8gY2hlY2tcbiAgY29uc3QgY2FsbGFibGUgPSBpc0RlbGVnYXRlZCA/IGRlbGVnYXRpb25GdW5jdGlvbiA6IGhhbmRsZXIgfHwgZGVsZWdhdGlvbkZ1bmN0aW9uO1xuICBsZXQgdHlwZUV2ZW50ID0gZ2V0VHlwZUV2ZW50KG9yaWdpbmFsVHlwZUV2ZW50KTtcbiAgaWYgKCFuYXRpdmVFdmVudHMuaGFzKHR5cGVFdmVudCkpIHtcbiAgICB0eXBlRXZlbnQgPSBvcmlnaW5hbFR5cGVFdmVudDtcbiAgfVxuICByZXR1cm4gW2lzRGVsZWdhdGVkLCBjYWxsYWJsZSwgdHlwZUV2ZW50XTtcbn1cbmZ1bmN0aW9uIGFkZEhhbmRsZXIoZWxlbWVudCwgb3JpZ2luYWxUeXBlRXZlbnQsIGhhbmRsZXIsIGRlbGVnYXRpb25GdW5jdGlvbiwgb25lT2ZmKSB7XG4gIGlmICh0eXBlb2Ygb3JpZ2luYWxUeXBlRXZlbnQgIT09ICdzdHJpbmcnIHx8ICFlbGVtZW50KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxldCBbaXNEZWxlZ2F0ZWQsIGNhbGxhYmxlLCB0eXBlRXZlbnRdID0gbm9ybWFsaXplUGFyYW1ldGVycyhvcmlnaW5hbFR5cGVFdmVudCwgaGFuZGxlciwgZGVsZWdhdGlvbkZ1bmN0aW9uKTtcblxuICAvLyBpbiBjYXNlIG9mIG1vdXNlZW50ZXIgb3IgbW91c2VsZWF2ZSB3cmFwIHRoZSBoYW5kbGVyIHdpdGhpbiBhIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIGZvciBpdHMgRE9NIHBvc2l0aW9uXG4gIC8vIHRoaXMgcHJldmVudHMgdGhlIGhhbmRsZXIgZnJvbSBiZWluZyBkaXNwYXRjaGVkIHRoZSBzYW1lIHdheSBhcyBtb3VzZW92ZXIgb3IgbW91c2VvdXQgZG9lc1xuICBpZiAob3JpZ2luYWxUeXBlRXZlbnQgaW4gY3VzdG9tRXZlbnRzKSB7XG4gICAgY29uc3Qgd3JhcEZ1bmN0aW9uID0gZm4gPT4ge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICBpZiAoIWV2ZW50LnJlbGF0ZWRUYXJnZXQgfHwgZXZlbnQucmVsYXRlZFRhcmdldCAhPT0gZXZlbnQuZGVsZWdhdGVUYXJnZXQgJiYgIWV2ZW50LmRlbGVnYXRlVGFyZ2V0LmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQpKSB7XG4gICAgICAgICAgcmV0dXJuIGZuLmNhbGwodGhpcywgZXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG4gICAgY2FsbGFibGUgPSB3cmFwRnVuY3Rpb24oY2FsbGFibGUpO1xuICB9XG4gIGNvbnN0IGV2ZW50cyA9IGdldEVsZW1lbnRFdmVudHMoZWxlbWVudCk7XG4gIGNvbnN0IGhhbmRsZXJzID0gZXZlbnRzW3R5cGVFdmVudF0gfHwgKGV2ZW50c1t0eXBlRXZlbnRdID0ge30pO1xuICBjb25zdCBwcmV2aW91c0Z1bmN0aW9uID0gZmluZEhhbmRsZXIoaGFuZGxlcnMsIGNhbGxhYmxlLCBpc0RlbGVnYXRlZCA/IGhhbmRsZXIgOiBudWxsKTtcbiAgaWYgKHByZXZpb3VzRnVuY3Rpb24pIHtcbiAgICBwcmV2aW91c0Z1bmN0aW9uLm9uZU9mZiA9IHByZXZpb3VzRnVuY3Rpb24ub25lT2ZmICYmIG9uZU9mZjtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgdWlkID0gbWFrZUV2ZW50VWlkKGNhbGxhYmxlLCBvcmlnaW5hbFR5cGVFdmVudC5yZXBsYWNlKG5hbWVzcGFjZVJlZ2V4LCAnJykpO1xuICBjb25zdCBmbiA9IGlzRGVsZWdhdGVkID8gYm9vdHN0cmFwRGVsZWdhdGlvbkhhbmRsZXIoZWxlbWVudCwgaGFuZGxlciwgY2FsbGFibGUpIDogYm9vdHN0cmFwSGFuZGxlcihlbGVtZW50LCBjYWxsYWJsZSk7XG4gIGZuLmRlbGVnYXRpb25TZWxlY3RvciA9IGlzRGVsZWdhdGVkID8gaGFuZGxlciA6IG51bGw7XG4gIGZuLmNhbGxhYmxlID0gY2FsbGFibGU7XG4gIGZuLm9uZU9mZiA9IG9uZU9mZjtcbiAgZm4udWlkRXZlbnQgPSB1aWQ7XG4gIGhhbmRsZXJzW3VpZF0gPSBmbjtcbiAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKHR5cGVFdmVudCwgZm4sIGlzRGVsZWdhdGVkKTtcbn1cbmZ1bmN0aW9uIHJlbW92ZUhhbmRsZXIoZWxlbWVudCwgZXZlbnRzLCB0eXBlRXZlbnQsIGhhbmRsZXIsIGRlbGVnYXRpb25TZWxlY3Rvcikge1xuICBjb25zdCBmbiA9IGZpbmRIYW5kbGVyKGV2ZW50c1t0eXBlRXZlbnRdLCBoYW5kbGVyLCBkZWxlZ2F0aW9uU2VsZWN0b3IpO1xuICBpZiAoIWZuKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlRXZlbnQsIGZuLCBCb29sZWFuKGRlbGVnYXRpb25TZWxlY3RvcikpO1xuICBkZWxldGUgZXZlbnRzW3R5cGVFdmVudF1bZm4udWlkRXZlbnRdO1xufVxuZnVuY3Rpb24gcmVtb3ZlTmFtZXNwYWNlZEhhbmRsZXJzKGVsZW1lbnQsIGV2ZW50cywgdHlwZUV2ZW50LCBuYW1lc3BhY2UpIHtcbiAgY29uc3Qgc3RvcmVFbGVtZW50RXZlbnQgPSBldmVudHNbdHlwZUV2ZW50XSB8fCB7fTtcbiAgZm9yIChjb25zdCBbaGFuZGxlcktleSwgZXZlbnRdIG9mIE9iamVjdC5lbnRyaWVzKHN0b3JlRWxlbWVudEV2ZW50KSkge1xuICAgIGlmIChoYW5kbGVyS2V5LmluY2x1ZGVzKG5hbWVzcGFjZSkpIHtcbiAgICAgIHJlbW92ZUhhbmRsZXIoZWxlbWVudCwgZXZlbnRzLCB0eXBlRXZlbnQsIGV2ZW50LmNhbGxhYmxlLCBldmVudC5kZWxlZ2F0aW9uU2VsZWN0b3IpO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gZ2V0VHlwZUV2ZW50KGV2ZW50KSB7XG4gIC8vIGFsbG93IHRvIGdldCB0aGUgbmF0aXZlIGV2ZW50cyBmcm9tIG5hbWVzcGFjZWQgZXZlbnRzICgnY2xpY2suYnMuYnV0dG9uJyAtLT4gJ2NsaWNrJylcbiAgZXZlbnQgPSBldmVudC5yZXBsYWNlKHN0cmlwTmFtZVJlZ2V4LCAnJyk7XG4gIHJldHVybiBjdXN0b21FdmVudHNbZXZlbnRdIHx8IGV2ZW50O1xufVxuY29uc3QgRXZlbnRIYW5kbGVyID0ge1xuICBvbihlbGVtZW50LCBldmVudCwgaGFuZGxlciwgZGVsZWdhdGlvbkZ1bmN0aW9uKSB7XG4gICAgYWRkSGFuZGxlcihlbGVtZW50LCBldmVudCwgaGFuZGxlciwgZGVsZWdhdGlvbkZ1bmN0aW9uLCBmYWxzZSk7XG4gIH0sXG4gIG9uZShlbGVtZW50LCBldmVudCwgaGFuZGxlciwgZGVsZWdhdGlvbkZ1bmN0aW9uKSB7XG4gICAgYWRkSGFuZGxlcihlbGVtZW50LCBldmVudCwgaGFuZGxlciwgZGVsZWdhdGlvbkZ1bmN0aW9uLCB0cnVlKTtcbiAgfSxcbiAgb2ZmKGVsZW1lbnQsIG9yaWdpbmFsVHlwZUV2ZW50LCBoYW5kbGVyLCBkZWxlZ2F0aW9uRnVuY3Rpb24pIHtcbiAgICBpZiAodHlwZW9mIG9yaWdpbmFsVHlwZUV2ZW50ICE9PSAnc3RyaW5nJyB8fCAhZWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBbaXNEZWxlZ2F0ZWQsIGNhbGxhYmxlLCB0eXBlRXZlbnRdID0gbm9ybWFsaXplUGFyYW1ldGVycyhvcmlnaW5hbFR5cGVFdmVudCwgaGFuZGxlciwgZGVsZWdhdGlvbkZ1bmN0aW9uKTtcbiAgICBjb25zdCBpbk5hbWVzcGFjZSA9IHR5cGVFdmVudCAhPT0gb3JpZ2luYWxUeXBlRXZlbnQ7XG4gICAgY29uc3QgZXZlbnRzID0gZ2V0RWxlbWVudEV2ZW50cyhlbGVtZW50KTtcbiAgICBjb25zdCBzdG9yZUVsZW1lbnRFdmVudCA9IGV2ZW50c1t0eXBlRXZlbnRdIHx8IHt9O1xuICAgIGNvbnN0IGlzTmFtZXNwYWNlID0gb3JpZ2luYWxUeXBlRXZlbnQuc3RhcnRzV2l0aCgnLicpO1xuICAgIGlmICh0eXBlb2YgY2FsbGFibGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyBTaW1wbGVzdCBjYXNlOiBoYW5kbGVyIGlzIHBhc3NlZCwgcmVtb3ZlIHRoYXQgbGlzdGVuZXIgT05MWS5cbiAgICAgIGlmICghT2JqZWN0LmtleXMoc3RvcmVFbGVtZW50RXZlbnQpLmxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZW1vdmVIYW5kbGVyKGVsZW1lbnQsIGV2ZW50cywgdHlwZUV2ZW50LCBjYWxsYWJsZSwgaXNEZWxlZ2F0ZWQgPyBoYW5kbGVyIDogbnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpc05hbWVzcGFjZSkge1xuICAgICAgZm9yIChjb25zdCBlbGVtZW50RXZlbnQgb2YgT2JqZWN0LmtleXMoZXZlbnRzKSkge1xuICAgICAgICByZW1vdmVOYW1lc3BhY2VkSGFuZGxlcnMoZWxlbWVudCwgZXZlbnRzLCBlbGVtZW50RXZlbnQsIG9yaWdpbmFsVHlwZUV2ZW50LnNsaWNlKDEpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBba2V5SGFuZGxlcnMsIGV2ZW50XSBvZiBPYmplY3QuZW50cmllcyhzdG9yZUVsZW1lbnRFdmVudCkpIHtcbiAgICAgIGNvbnN0IGhhbmRsZXJLZXkgPSBrZXlIYW5kbGVycy5yZXBsYWNlKHN0cmlwVWlkUmVnZXgsICcnKTtcbiAgICAgIGlmICghaW5OYW1lc3BhY2UgfHwgb3JpZ2luYWxUeXBlRXZlbnQuaW5jbHVkZXMoaGFuZGxlcktleSkpIHtcbiAgICAgICAgcmVtb3ZlSGFuZGxlcihlbGVtZW50LCBldmVudHMsIHR5cGVFdmVudCwgZXZlbnQuY2FsbGFibGUsIGV2ZW50LmRlbGVnYXRpb25TZWxlY3Rvcik7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICB0cmlnZ2VyKGVsZW1lbnQsIGV2ZW50LCBhcmdzKSB7XG4gICAgaWYgKHR5cGVvZiBldmVudCAhPT0gJ3N0cmluZycgfHwgIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCAkID0gZ2V0alF1ZXJ5KCk7XG4gICAgY29uc3QgdHlwZUV2ZW50ID0gZ2V0VHlwZUV2ZW50KGV2ZW50KTtcbiAgICBjb25zdCBpbk5hbWVzcGFjZSA9IGV2ZW50ICE9PSB0eXBlRXZlbnQ7XG4gICAgbGV0IGpRdWVyeUV2ZW50ID0gbnVsbDtcbiAgICBsZXQgYnViYmxlcyA9IHRydWU7XG4gICAgbGV0IG5hdGl2ZURpc3BhdGNoID0gdHJ1ZTtcbiAgICBsZXQgZGVmYXVsdFByZXZlbnRlZCA9IGZhbHNlO1xuICAgIGlmIChpbk5hbWVzcGFjZSAmJiAkKSB7XG4gICAgICBqUXVlcnlFdmVudCA9ICQuRXZlbnQoZXZlbnQsIGFyZ3MpO1xuICAgICAgJChlbGVtZW50KS50cmlnZ2VyKGpRdWVyeUV2ZW50KTtcbiAgICAgIGJ1YmJsZXMgPSAhalF1ZXJ5RXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTtcbiAgICAgIG5hdGl2ZURpc3BhdGNoID0gIWpRdWVyeUV2ZW50LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCk7XG4gICAgICBkZWZhdWx0UHJldmVudGVkID0galF1ZXJ5RXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCk7XG4gICAgfVxuICAgIGNvbnN0IGV2dCA9IGh5ZHJhdGVPYmoobmV3IEV2ZW50KGV2ZW50LCB7XG4gICAgICBidWJibGVzLFxuICAgICAgY2FuY2VsYWJsZTogdHJ1ZVxuICAgIH0pLCBhcmdzKTtcbiAgICBpZiAoZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChuYXRpdmVEaXNwYXRjaCkge1xuICAgICAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KGV2dCk7XG4gICAgfVxuICAgIGlmIChldnQuZGVmYXVsdFByZXZlbnRlZCAmJiBqUXVlcnlFdmVudCkge1xuICAgICAgalF1ZXJ5RXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgcmV0dXJuIGV2dDtcbiAgfVxufTtcbmZ1bmN0aW9uIGh5ZHJhdGVPYmoob2JqLCBtZXRhID0ge30pIHtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMobWV0YSkpIHtcbiAgICB0cnkge1xuICAgICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgICB9IGNhdGNoIChfdW51c2VkKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9iajtcbn1cblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwIGRvbS9tYW5pcHVsYXRvci5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZURhdGEodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09PSAndHJ1ZScpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodmFsdWUgPT09ICdmYWxzZScpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHZhbHVlID09PSBOdW1iZXIodmFsdWUpLnRvU3RyaW5nKCkpIHtcbiAgICByZXR1cm4gTnVtYmVyKHZhbHVlKTtcbiAgfVxuICBpZiAodmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSAnbnVsbCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkpO1xuICB9IGNhdGNoIChfdW51c2VkKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG5mdW5jdGlvbiBub3JtYWxpemVEYXRhS2V5KGtleSkge1xuICByZXR1cm4ga2V5LnJlcGxhY2UoL1tBLVpdL2csIGNociA9PiBgLSR7Y2hyLnRvTG93ZXJDYXNlKCl9YCk7XG59XG5jb25zdCBNYW5pcHVsYXRvciA9IHtcbiAgc2V0RGF0YUF0dHJpYnV0ZShlbGVtZW50LCBrZXksIHZhbHVlKSB7XG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoYGRhdGEtYnMtJHtub3JtYWxpemVEYXRhS2V5KGtleSl9YCwgdmFsdWUpO1xuICB9LFxuICByZW1vdmVEYXRhQXR0cmlidXRlKGVsZW1lbnQsIGtleSkge1xuICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGBkYXRhLWJzLSR7bm9ybWFsaXplRGF0YUtleShrZXkpfWApO1xuICB9LFxuICBnZXREYXRhQXR0cmlidXRlcyhlbGVtZW50KSB7XG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB7fTtcbiAgICBjb25zdCBic0tleXMgPSBPYmplY3Qua2V5cyhlbGVtZW50LmRhdGFzZXQpLmZpbHRlcihrZXkgPT4ga2V5LnN0YXJ0c1dpdGgoJ2JzJykgJiYgIWtleS5zdGFydHNXaXRoKCdic0NvbmZpZycpKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBic0tleXMpIHtcbiAgICAgIGxldCBwdXJlS2V5ID0ga2V5LnJlcGxhY2UoL15icy8sICcnKTtcbiAgICAgIHB1cmVLZXkgPSBwdXJlS2V5LmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgcHVyZUtleS5zbGljZSgxKTtcbiAgICAgIGF0dHJpYnV0ZXNbcHVyZUtleV0gPSBub3JtYWxpemVEYXRhKGVsZW1lbnQuZGF0YXNldFtrZXldKTtcbiAgICB9XG4gICAgcmV0dXJuIGF0dHJpYnV0ZXM7XG4gIH0sXG4gIGdldERhdGFBdHRyaWJ1dGUoZWxlbWVudCwga2V5KSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZURhdGEoZWxlbWVudC5nZXRBdHRyaWJ1dGUoYGRhdGEtYnMtJHtub3JtYWxpemVEYXRhS2V5KGtleSl9YCkpO1xuICB9XG59O1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgdXRpbC9jb25maWcuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIENvbmZpZyB7XG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgaGF2ZSB0byBpbXBsZW1lbnQgdGhlIHN0YXRpYyBtZXRob2QgXCJOQU1FXCIsIGZvciBlYWNoIGNvbXBvbmVudCEnKTtcbiAgfVxuICBfZ2V0Q29uZmlnKGNvbmZpZykge1xuICAgIGNvbmZpZyA9IHRoaXMuX21lcmdlQ29uZmlnT2JqKGNvbmZpZyk7XG4gICAgY29uZmlnID0gdGhpcy5fY29uZmlnQWZ0ZXJNZXJnZShjb25maWcpO1xuICAgIHRoaXMuX3R5cGVDaGVja0NvbmZpZyhjb25maWcpO1xuICAgIHJldHVybiBjb25maWc7XG4gIH1cbiAgX2NvbmZpZ0FmdGVyTWVyZ2UoY29uZmlnKSB7XG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuICBfbWVyZ2VDb25maWdPYmooY29uZmlnLCBlbGVtZW50KSB7XG4gICAgY29uc3QganNvbkNvbmZpZyA9IGlzRWxlbWVudChlbGVtZW50KSA/IE1hbmlwdWxhdG9yLmdldERhdGFBdHRyaWJ1dGUoZWxlbWVudCwgJ2NvbmZpZycpIDoge307IC8vIHRyeSB0byBwYXJzZVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuY29uc3RydWN0b3IuRGVmYXVsdCxcbiAgICAgIC4uLih0eXBlb2YganNvbkNvbmZpZyA9PT0gJ29iamVjdCcgPyBqc29uQ29uZmlnIDoge30pLFxuICAgICAgLi4uKGlzRWxlbWVudChlbGVtZW50KSA/IE1hbmlwdWxhdG9yLmdldERhdGFBdHRyaWJ1dGVzKGVsZW1lbnQpIDoge30pLFxuICAgICAgLi4uKHR5cGVvZiBjb25maWcgPT09ICdvYmplY3QnID8gY29uZmlnIDoge30pXG4gICAgfTtcbiAgfVxuICBfdHlwZUNoZWNrQ29uZmlnKGNvbmZpZywgY29uZmlnVHlwZXMgPSB0aGlzLmNvbnN0cnVjdG9yLkRlZmF1bHRUeXBlKSB7XG4gICAgZm9yIChjb25zdCBbcHJvcGVydHksIGV4cGVjdGVkVHlwZXNdIG9mIE9iamVjdC5lbnRyaWVzKGNvbmZpZ1R5cGVzKSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBjb25maWdbcHJvcGVydHldO1xuICAgICAgY29uc3QgdmFsdWVUeXBlID0gaXNFbGVtZW50KHZhbHVlKSA/ICdlbGVtZW50JyA6IHRvVHlwZSh2YWx1ZSk7XG4gICAgICBpZiAoIW5ldyBSZWdFeHAoZXhwZWN0ZWRUeXBlcykudGVzdCh2YWx1ZVR5cGUpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5OQU1FLnRvVXBwZXJDYXNlKCl9OiBPcHRpb24gXCIke3Byb3BlcnR5fVwiIHByb3ZpZGVkIHR5cGUgXCIke3ZhbHVlVHlwZX1cIiBidXQgZXhwZWN0ZWQgdHlwZSBcIiR7ZXhwZWN0ZWRUeXBlc31cIi5gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwIGJhc2UtY29tcG9uZW50LmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IFZFUlNJT04gPSAnNS4zLjgnO1xuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBCYXNlQ29tcG9uZW50IGV4dGVuZHMgQ29uZmlnIHtcbiAgY29uc3RydWN0b3IoZWxlbWVudCwgY29uZmlnKSB7XG4gICAgc3VwZXIoKTtcbiAgICBlbGVtZW50ID0gZ2V0RWxlbWVudChlbGVtZW50KTtcbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy5fY29uZmlnID0gdGhpcy5fZ2V0Q29uZmlnKGNvbmZpZyk7XG4gICAgRGF0YS5zZXQodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5EQVRBX0tFWSwgdGhpcyk7XG4gIH1cblxuICAvLyBQdWJsaWNcbiAgZGlzcG9zZSgpIHtcbiAgICBEYXRhLnJlbW92ZSh0aGlzLl9lbGVtZW50LCB0aGlzLmNvbnN0cnVjdG9yLkRBVEFfS0VZKTtcbiAgICBFdmVudEhhbmRsZXIub2ZmKHRoaXMuX2VsZW1lbnQsIHRoaXMuY29uc3RydWN0b3IuRVZFTlRfS0VZKTtcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5TmFtZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSkge1xuICAgICAgdGhpc1twcm9wZXJ0eU5hbWVdID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvLyBQcml2YXRlXG4gIF9xdWV1ZUNhbGxiYWNrKGNhbGxiYWNrLCBlbGVtZW50LCBpc0FuaW1hdGVkID0gdHJ1ZSkge1xuICAgIGV4ZWN1dGVBZnRlclRyYW5zaXRpb24oY2FsbGJhY2ssIGVsZW1lbnQsIGlzQW5pbWF0ZWQpO1xuICB9XG4gIF9nZXRDb25maWcoY29uZmlnKSB7XG4gICAgY29uZmlnID0gdGhpcy5fbWVyZ2VDb25maWdPYmooY29uZmlnLCB0aGlzLl9lbGVtZW50KTtcbiAgICBjb25maWcgPSB0aGlzLl9jb25maWdBZnRlck1lcmdlKGNvbmZpZyk7XG4gICAgdGhpcy5fdHlwZUNoZWNrQ29uZmlnKGNvbmZpZyk7XG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuXG4gIC8vIFN0YXRpY1xuICBzdGF0aWMgZ2V0SW5zdGFuY2UoZWxlbWVudCkge1xuICAgIHJldHVybiBEYXRhLmdldChnZXRFbGVtZW50KGVsZW1lbnQpLCB0aGlzLkRBVEFfS0VZKTtcbiAgfVxuICBzdGF0aWMgZ2V0T3JDcmVhdGVJbnN0YW5jZShlbGVtZW50LCBjb25maWcgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLmdldEluc3RhbmNlKGVsZW1lbnQpIHx8IG5ldyB0aGlzKGVsZW1lbnQsIHR5cGVvZiBjb25maWcgPT09ICdvYmplY3QnID8gY29uZmlnIDogbnVsbCk7XG4gIH1cbiAgc3RhdGljIGdldCBWRVJTSU9OKCkge1xuICAgIHJldHVybiBWRVJTSU9OO1xuICB9XG4gIHN0YXRpYyBnZXQgREFUQV9LRVkoKSB7XG4gICAgcmV0dXJuIGBicy4ke3RoaXMuTkFNRX1gO1xuICB9XG4gIHN0YXRpYyBnZXQgRVZFTlRfS0VZKCkge1xuICAgIHJldHVybiBgLiR7dGhpcy5EQVRBX0tFWX1gO1xuICB9XG4gIHN0YXRpYyBldmVudE5hbWUobmFtZSkge1xuICAgIHJldHVybiBgJHtuYW1lfSR7dGhpcy5FVkVOVF9LRVl9YDtcbiAgfVxufVxuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgZG9tL3NlbGVjdG9yLWVuZ2luZS5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmNvbnN0IGdldFNlbGVjdG9yID0gZWxlbWVudCA9PiB7XG4gIGxldCBzZWxlY3RvciA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLWJzLXRhcmdldCcpO1xuICBpZiAoIXNlbGVjdG9yIHx8IHNlbGVjdG9yID09PSAnIycpIHtcbiAgICBsZXQgaHJlZkF0dHJpYnV0ZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdocmVmJyk7XG5cbiAgICAvLyBUaGUgb25seSB2YWxpZCBjb250ZW50IHRoYXQgY291bGQgZG91YmxlIGFzIGEgc2VsZWN0b3IgYXJlIElEcyBvciBjbGFzc2VzLFxuICAgIC8vIHNvIGV2ZXJ5dGhpbmcgc3RhcnRpbmcgd2l0aCBgI2Agb3IgYC5gLiBJZiBhIFwicmVhbFwiIFVSTCBpcyB1c2VkIGFzIHRoZSBzZWxlY3RvcixcbiAgICAvLyBgZG9jdW1lbnQucXVlcnlTZWxlY3RvcmAgd2lsbCByaWdodGZ1bGx5IGNvbXBsYWluIGl0IGlzIGludmFsaWQuXG4gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMzIyNzNcbiAgICBpZiAoIWhyZWZBdHRyaWJ1dGUgfHwgIWhyZWZBdHRyaWJ1dGUuaW5jbHVkZXMoJyMnKSAmJiAhaHJlZkF0dHJpYnV0ZS5zdGFydHNXaXRoKCcuJykpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIEp1c3QgaW4gY2FzZSBzb21lIENNUyBwdXRzIG91dCBhIGZ1bGwgVVJMIHdpdGggdGhlIGFuY2hvciBhcHBlbmRlZFxuICAgIGlmIChocmVmQXR0cmlidXRlLmluY2x1ZGVzKCcjJykgJiYgIWhyZWZBdHRyaWJ1dGUuc3RhcnRzV2l0aCgnIycpKSB7XG4gICAgICBocmVmQXR0cmlidXRlID0gYCMke2hyZWZBdHRyaWJ1dGUuc3BsaXQoJyMnKVsxXX1gO1xuICAgIH1cbiAgICBzZWxlY3RvciA9IGhyZWZBdHRyaWJ1dGUgJiYgaHJlZkF0dHJpYnV0ZSAhPT0gJyMnID8gaHJlZkF0dHJpYnV0ZS50cmltKCkgOiBudWxsO1xuICB9XG4gIHJldHVybiBzZWxlY3RvciA/IHNlbGVjdG9yLnNwbGl0KCcsJykubWFwKHNlbCA9PiBwYXJzZVNlbGVjdG9yKHNlbCkpLmpvaW4oJywnKSA6IG51bGw7XG59O1xuY29uc3QgU2VsZWN0b3JFbmdpbmUgPSB7XG4gIGZpbmQoc2VsZWN0b3IsIGVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIHtcbiAgICByZXR1cm4gW10uY29uY2F0KC4uLkVsZW1lbnQucHJvdG90eXBlLnF1ZXJ5U2VsZWN0b3JBbGwuY2FsbChlbGVtZW50LCBzZWxlY3RvcikpO1xuICB9LFxuICBmaW5kT25lKHNlbGVjdG9yLCBlbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgcmV0dXJuIEVsZW1lbnQucHJvdG90eXBlLnF1ZXJ5U2VsZWN0b3IuY2FsbChlbGVtZW50LCBzZWxlY3Rvcik7XG4gIH0sXG4gIGNoaWxkcmVuKGVsZW1lbnQsIHNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIFtdLmNvbmNhdCguLi5lbGVtZW50LmNoaWxkcmVuKS5maWx0ZXIoY2hpbGQgPT4gY2hpbGQubWF0Y2hlcyhzZWxlY3RvcikpO1xuICB9LFxuICBwYXJlbnRzKGVsZW1lbnQsIHNlbGVjdG9yKSB7XG4gICAgY29uc3QgcGFyZW50cyA9IFtdO1xuICAgIGxldCBhbmNlc3RvciA9IGVsZW1lbnQucGFyZW50Tm9kZS5jbG9zZXN0KHNlbGVjdG9yKTtcbiAgICB3aGlsZSAoYW5jZXN0b3IpIHtcbiAgICAgIHBhcmVudHMucHVzaChhbmNlc3Rvcik7XG4gICAgICBhbmNlc3RvciA9IGFuY2VzdG9yLnBhcmVudE5vZGUuY2xvc2VzdChzZWxlY3Rvcik7XG4gICAgfVxuICAgIHJldHVybiBwYXJlbnRzO1xuICB9LFxuICBwcmV2KGVsZW1lbnQsIHNlbGVjdG9yKSB7XG4gICAgbGV0IHByZXZpb3VzID0gZWxlbWVudC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO1xuICAgIHdoaWxlIChwcmV2aW91cykge1xuICAgICAgaWYgKHByZXZpb3VzLm1hdGNoZXMoc2VsZWN0b3IpKSB7XG4gICAgICAgIHJldHVybiBbcHJldmlvdXNdO1xuICAgICAgfVxuICAgICAgcHJldmlvdXMgPSBwcmV2aW91cy5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH0sXG4gIC8vIFRPRE86IHRoaXMgaXMgbm93IHVudXNlZDsgcmVtb3ZlIGxhdGVyIGFsb25nIHdpdGggcHJldigpXG4gIG5leHQoZWxlbWVudCwgc2VsZWN0b3IpIHtcbiAgICBsZXQgbmV4dCA9IGVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgIHdoaWxlIChuZXh0KSB7XG4gICAgICBpZiAobmV4dC5tYXRjaGVzKHNlbGVjdG9yKSkge1xuICAgICAgICByZXR1cm4gW25leHRdO1xuICAgICAgfVxuICAgICAgbmV4dCA9IG5leHQubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH0sXG4gIGZvY3VzYWJsZUNoaWxkcmVuKGVsZW1lbnQpIHtcbiAgICBjb25zdCBmb2N1c2FibGVzID0gWydhJywgJ2J1dHRvbicsICdpbnB1dCcsICd0ZXh0YXJlYScsICdzZWxlY3QnLCAnZGV0YWlscycsICdbdGFiaW5kZXhdJywgJ1tjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJdJ10ubWFwKHNlbGVjdG9yID0+IGAke3NlbGVjdG9yfTpub3QoW3RhYmluZGV4Xj1cIi1cIl0pYCkuam9pbignLCcpO1xuICAgIHJldHVybiB0aGlzLmZpbmQoZm9jdXNhYmxlcywgZWxlbWVudCkuZmlsdGVyKGVsID0+ICFpc0Rpc2FibGVkKGVsKSAmJiBpc1Zpc2libGUoZWwpKTtcbiAgfSxcbiAgZ2V0U2VsZWN0b3JGcm9tRWxlbWVudChlbGVtZW50KSB7XG4gICAgY29uc3Qgc2VsZWN0b3IgPSBnZXRTZWxlY3RvcihlbGVtZW50KTtcbiAgICBpZiAoc2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiBTZWxlY3RvckVuZ2luZS5maW5kT25lKHNlbGVjdG9yKSA/IHNlbGVjdG9yIDogbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sXG4gIGdldEVsZW1lbnRGcm9tU2VsZWN0b3IoZWxlbWVudCkge1xuICAgIGNvbnN0IHNlbGVjdG9yID0gZ2V0U2VsZWN0b3IoZWxlbWVudCk7XG4gICAgcmV0dXJuIHNlbGVjdG9yID8gU2VsZWN0b3JFbmdpbmUuZmluZE9uZShzZWxlY3RvcikgOiBudWxsO1xuICB9LFxuICBnZXRNdWx0aXBsZUVsZW1lbnRzRnJvbVNlbGVjdG9yKGVsZW1lbnQpIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IGdldFNlbGVjdG9yKGVsZW1lbnQpO1xuICAgIHJldHVybiBzZWxlY3RvciA/IFNlbGVjdG9yRW5naW5lLmZpbmQoc2VsZWN0b3IpIDogW107XG4gIH1cbn07XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCB1dGlsL2NvbXBvbmVudC1mdW5jdGlvbnMuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5jb25zdCBlbmFibGVEaXNtaXNzVHJpZ2dlciA9IChjb21wb25lbnQsIG1ldGhvZCA9ICdoaWRlJykgPT4ge1xuICBjb25zdCBjbGlja0V2ZW50ID0gYGNsaWNrLmRpc21pc3Mke2NvbXBvbmVudC5FVkVOVF9LRVl9YDtcbiAgY29uc3QgbmFtZSA9IGNvbXBvbmVudC5OQU1FO1xuICBFdmVudEhhbmRsZXIub24oZG9jdW1lbnQsIGNsaWNrRXZlbnQsIGBbZGF0YS1icy1kaXNtaXNzPVwiJHtuYW1lfVwiXWAsIGZ1bmN0aW9uIChldmVudCkge1xuICAgIGlmIChbJ0EnLCAnQVJFQSddLmluY2x1ZGVzKHRoaXMudGFnTmFtZSkpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChpc0Rpc2FibGVkKHRoaXMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRhcmdldCA9IFNlbGVjdG9yRW5naW5lLmdldEVsZW1lbnRGcm9tU2VsZWN0b3IodGhpcykgfHwgdGhpcy5jbG9zZXN0KGAuJHtuYW1lfWApO1xuICAgIGNvbnN0IGluc3RhbmNlID0gY29tcG9uZW50LmdldE9yQ3JlYXRlSW5zdGFuY2UodGFyZ2V0KTtcblxuICAgIC8vIE1ldGhvZCBhcmd1bWVudCBpcyBsZWZ0LCBmb3IgQWxlcnQgYW5kIG9ubHksIGFzIGl0IGRvZXNuJ3QgaW1wbGVtZW50IHRoZSAnaGlkZScgbWV0aG9kXG4gICAgaW5zdGFuY2VbbWV0aG9kXSgpO1xuICB9KTtcbn07XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCBhbGVydC5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FJGYgPSAnYWxlcnQnO1xuY29uc3QgREFUQV9LRVkkYSA9ICdicy5hbGVydCc7XG5jb25zdCBFVkVOVF9LRVkkYiA9IGAuJHtEQVRBX0tFWSRhfWA7XG5jb25zdCBFVkVOVF9DTE9TRSA9IGBjbG9zZSR7RVZFTlRfS0VZJGJ9YDtcbmNvbnN0IEVWRU5UX0NMT1NFRCA9IGBjbG9zZWQke0VWRU5UX0tFWSRifWA7XG5jb25zdCBDTEFTU19OQU1FX0ZBREUkNSA9ICdmYWRlJztcbmNvbnN0IENMQVNTX05BTUVfU0hPVyQ4ID0gJ3Nob3cnO1xuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBBbGVydCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICAvLyBHZXR0ZXJzXG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRSRmO1xuICB9XG5cbiAgLy8gUHVibGljXG4gIGNsb3NlKCkge1xuICAgIGNvbnN0IGNsb3NlRXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9DTE9TRSk7XG4gICAgaWYgKGNsb3NlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9TSE9XJDgpO1xuICAgIGNvbnN0IGlzQW5pbWF0ZWQgPSB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0ZBREUkNSk7XG4gICAgdGhpcy5fcXVldWVDYWxsYmFjaygoKSA9PiB0aGlzLl9kZXN0cm95RWxlbWVudCgpLCB0aGlzLl9lbGVtZW50LCBpc0FuaW1hdGVkKTtcbiAgfVxuXG4gIC8vIFByaXZhdGVcbiAgX2Rlc3Ryb3lFbGVtZW50KCkge1xuICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlKCk7XG4gICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfQ0xPU0VEKTtcbiAgICB0aGlzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIC8vIFN0YXRpY1xuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IEFsZXJ0LmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcyk7XG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGRhdGFbY29uZmlnXSA9PT0gdW5kZWZpbmVkIHx8IGNvbmZpZy5zdGFydHNXaXRoKCdfJykgfHwgY29uZmlnID09PSAnY29uc3RydWN0b3InKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCBcIiR7Y29uZmlnfVwiYCk7XG4gICAgICB9XG4gICAgICBkYXRhW2NvbmZpZ10odGhpcyk7XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cbmVuYWJsZURpc21pc3NUcmlnZ2VyKEFsZXJ0LCAnY2xvc2UnKTtcblxuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5kZWZpbmVKUXVlcnlQbHVnaW4oQWxlcnQpO1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgYnV0dG9uLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IE5BTUUkZSA9ICdidXR0b24nO1xuY29uc3QgREFUQV9LRVkkOSA9ICdicy5idXR0b24nO1xuY29uc3QgRVZFTlRfS0VZJGEgPSBgLiR7REFUQV9LRVkkOX1gO1xuY29uc3QgREFUQV9BUElfS0VZJDYgPSAnLmRhdGEtYXBpJztcbmNvbnN0IENMQVNTX05BTUVfQUNUSVZFJDMgPSAnYWN0aXZlJztcbmNvbnN0IFNFTEVDVE9SX0RBVEFfVE9HR0xFJDUgPSAnW2RhdGEtYnMtdG9nZ2xlPVwiYnV0dG9uXCJdJztcbmNvbnN0IEVWRU5UX0NMSUNLX0RBVEFfQVBJJDYgPSBgY2xpY2ske0VWRU5UX0tFWSRhfSR7REFUQV9BUElfS0VZJDZ9YDtcblxuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgQnV0dG9uIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FJGU7XG4gIH1cblxuICAvLyBQdWJsaWNcbiAgdG9nZ2xlKCkge1xuICAgIC8vIFRvZ2dsZSBjbGFzcyBhbmQgc3luYyB0aGUgYGFyaWEtcHJlc3NlZGAgYXR0cmlidXRlIHdpdGggdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgYC50b2dnbGUoKWAgbWV0aG9kXG4gICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtcHJlc3NlZCcsIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShDTEFTU19OQU1FX0FDVElWRSQzKSk7XG4gIH1cblxuICAvLyBTdGF0aWNcbiAgc3RhdGljIGpRdWVyeUludGVyZmFjZShjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBCdXR0b24uZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzKTtcbiAgICAgIGlmIChjb25maWcgPT09ICd0b2dnbGUnKSB7XG4gICAgICAgIGRhdGFbY29uZmlnXSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogRGF0YSBBUEkgaW1wbGVtZW50YXRpb25cbiAqL1xuXG5FdmVudEhhbmRsZXIub24oZG9jdW1lbnQsIEVWRU5UX0NMSUNLX0RBVEFfQVBJJDYsIFNFTEVDVE9SX0RBVEFfVE9HR0xFJDUsIGV2ZW50ID0+IHtcbiAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgY29uc3QgYnV0dG9uID0gZXZlbnQudGFyZ2V0LmNsb3Nlc3QoU0VMRUNUT1JfREFUQV9UT0dHTEUkNSk7XG4gIGNvbnN0IGRhdGEgPSBCdXR0b24uZ2V0T3JDcmVhdGVJbnN0YW5jZShidXR0b24pO1xuICBkYXRhLnRvZ2dsZSgpO1xufSk7XG5cbi8qKlxuICogalF1ZXJ5XG4gKi9cblxuZGVmaW5lSlF1ZXJ5UGx1Z2luKEJ1dHRvbik7XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCB1dGlsL3N3aXBlLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IE5BTUUkZCA9ICdzd2lwZSc7XG5jb25zdCBFVkVOVF9LRVkkOSA9ICcuYnMuc3dpcGUnO1xuY29uc3QgRVZFTlRfVE9VQ0hTVEFSVCA9IGB0b3VjaHN0YXJ0JHtFVkVOVF9LRVkkOX1gO1xuY29uc3QgRVZFTlRfVE9VQ0hNT1ZFID0gYHRvdWNobW92ZSR7RVZFTlRfS0VZJDl9YDtcbmNvbnN0IEVWRU5UX1RPVUNIRU5EID0gYHRvdWNoZW5kJHtFVkVOVF9LRVkkOX1gO1xuY29uc3QgRVZFTlRfUE9JTlRFUkRPV04gPSBgcG9pbnRlcmRvd24ke0VWRU5UX0tFWSQ5fWA7XG5jb25zdCBFVkVOVF9QT0lOVEVSVVAgPSBgcG9pbnRlcnVwJHtFVkVOVF9LRVkkOX1gO1xuY29uc3QgUE9JTlRFUl9UWVBFX1RPVUNIID0gJ3RvdWNoJztcbmNvbnN0IFBPSU5URVJfVFlQRV9QRU4gPSAncGVuJztcbmNvbnN0IENMQVNTX05BTUVfUE9JTlRFUl9FVkVOVCA9ICdwb2ludGVyLWV2ZW50JztcbmNvbnN0IFNXSVBFX1RIUkVTSE9MRCA9IDQwO1xuY29uc3QgRGVmYXVsdCRjID0ge1xuICBlbmRDYWxsYmFjazogbnVsbCxcbiAgbGVmdENhbGxiYWNrOiBudWxsLFxuICByaWdodENhbGxiYWNrOiBudWxsXG59O1xuY29uc3QgRGVmYXVsdFR5cGUkYyA9IHtcbiAgZW5kQ2FsbGJhY2s6ICcoZnVuY3Rpb258bnVsbCknLFxuICBsZWZ0Q2FsbGJhY2s6ICcoZnVuY3Rpb258bnVsbCknLFxuICByaWdodENhbGxiYWNrOiAnKGZ1bmN0aW9ufG51bGwpJ1xufTtcblxuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgU3dpcGUgZXh0ZW5kcyBDb25maWcge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBjb25maWcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50O1xuICAgIGlmICghZWxlbWVudCB8fCAhU3dpcGUuaXNTdXBwb3J0ZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9jb25maWcgPSB0aGlzLl9nZXRDb25maWcoY29uZmlnKTtcbiAgICB0aGlzLl9kZWx0YVggPSAwO1xuICAgIHRoaXMuX3N1cHBvcnRQb2ludGVyRXZlbnRzID0gQm9vbGVhbih3aW5kb3cuUG9pbnRlckV2ZW50KTtcbiAgICB0aGlzLl9pbml0RXZlbnRzKCk7XG4gIH1cblxuICAvLyBHZXR0ZXJzXG4gIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHtcbiAgICByZXR1cm4gRGVmYXVsdCRjO1xuICB9XG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRUeXBlJGM7XG4gIH1cbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FJGQ7XG4gIH1cblxuICAvLyBQdWJsaWNcbiAgZGlzcG9zZSgpIHtcbiAgICBFdmVudEhhbmRsZXIub2ZmKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0tFWSQ5KTtcbiAgfVxuXG4gIC8vIFByaXZhdGVcbiAgX3N0YXJ0KGV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLl9zdXBwb3J0UG9pbnRlckV2ZW50cykge1xuICAgICAgdGhpcy5fZGVsdGFYID0gZXZlbnQudG91Y2hlc1swXS5jbGllbnRYO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZXZlbnRJc1BvaW50ZXJQZW5Ub3VjaChldmVudCkpIHtcbiAgICAgIHRoaXMuX2RlbHRhWCA9IGV2ZW50LmNsaWVudFg7XG4gICAgfVxuICB9XG4gIF9lbmQoZXZlbnQpIHtcbiAgICBpZiAodGhpcy5fZXZlbnRJc1BvaW50ZXJQZW5Ub3VjaChldmVudCkpIHtcbiAgICAgIHRoaXMuX2RlbHRhWCA9IGV2ZW50LmNsaWVudFggLSB0aGlzLl9kZWx0YVg7XG4gICAgfVxuICAgIHRoaXMuX2hhbmRsZVN3aXBlKCk7XG4gICAgZXhlY3V0ZSh0aGlzLl9jb25maWcuZW5kQ2FsbGJhY2spO1xuICB9XG4gIF9tb3ZlKGV2ZW50KSB7XG4gICAgdGhpcy5fZGVsdGFYID0gZXZlbnQudG91Y2hlcyAmJiBldmVudC50b3VjaGVzLmxlbmd0aCA+IDEgPyAwIDogZXZlbnQudG91Y2hlc1swXS5jbGllbnRYIC0gdGhpcy5fZGVsdGFYO1xuICB9XG4gIF9oYW5kbGVTd2lwZSgpIHtcbiAgICBjb25zdCBhYnNEZWx0YVggPSBNYXRoLmFicyh0aGlzLl9kZWx0YVgpO1xuICAgIGlmIChhYnNEZWx0YVggPD0gU1dJUEVfVEhSRVNIT0xEKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRpcmVjdGlvbiA9IGFic0RlbHRhWCAvIHRoaXMuX2RlbHRhWDtcbiAgICB0aGlzLl9kZWx0YVggPSAwO1xuICAgIGlmICghZGlyZWN0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGV4ZWN1dGUoZGlyZWN0aW9uID4gMCA/IHRoaXMuX2NvbmZpZy5yaWdodENhbGxiYWNrIDogdGhpcy5fY29uZmlnLmxlZnRDYWxsYmFjayk7XG4gIH1cbiAgX2luaXRFdmVudHMoKSB7XG4gICAgaWYgKHRoaXMuX3N1cHBvcnRQb2ludGVyRXZlbnRzKSB7XG4gICAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfUE9JTlRFUkRPV04sIGV2ZW50ID0+IHRoaXMuX3N0YXJ0KGV2ZW50KSk7XG4gICAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfUE9JTlRFUlVQLCBldmVudCA9PiB0aGlzLl9lbmQoZXZlbnQpKTtcbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX1BPSU5URVJfRVZFTlQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfVE9VQ0hTVEFSVCwgZXZlbnQgPT4gdGhpcy5fc3RhcnQoZXZlbnQpKTtcbiAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9UT1VDSE1PVkUsIGV2ZW50ID0+IHRoaXMuX21vdmUoZXZlbnQpKTtcbiAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9UT1VDSEVORCwgZXZlbnQgPT4gdGhpcy5fZW5kKGV2ZW50KSk7XG4gICAgfVxuICB9XG4gIF9ldmVudElzUG9pbnRlclBlblRvdWNoKGV2ZW50KSB7XG4gICAgcmV0dXJuIHRoaXMuX3N1cHBvcnRQb2ludGVyRXZlbnRzICYmIChldmVudC5wb2ludGVyVHlwZSA9PT0gUE9JTlRFUl9UWVBFX1BFTiB8fCBldmVudC5wb2ludGVyVHlwZSA9PT0gUE9JTlRFUl9UWVBFX1RPVUNIKTtcbiAgfVxuXG4gIC8vIFN0YXRpY1xuICBzdGF0aWMgaXNTdXBwb3J0ZWQoKSB7XG4gICAgcmV0dXJuICdvbnRvdWNoc3RhcnQnIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCB8fCBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMgPiAwO1xuICB9XG59XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCBjYXJvdXNlbC5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FJGMgPSAnY2Fyb3VzZWwnO1xuY29uc3QgREFUQV9LRVkkOCA9ICdicy5jYXJvdXNlbCc7XG5jb25zdCBFVkVOVF9LRVkkOCA9IGAuJHtEQVRBX0tFWSQ4fWA7XG5jb25zdCBEQVRBX0FQSV9LRVkkNSA9ICcuZGF0YS1hcGknO1xuY29uc3QgQVJST1dfTEVGVF9LRVkkMSA9ICdBcnJvd0xlZnQnO1xuY29uc3QgQVJST1dfUklHSFRfS0VZJDEgPSAnQXJyb3dSaWdodCc7XG5jb25zdCBUT1VDSEVWRU5UX0NPTVBBVF9XQUlUID0gNTAwOyAvLyBUaW1lIGZvciBtb3VzZSBjb21wYXQgZXZlbnRzIHRvIGZpcmUgYWZ0ZXIgdG91Y2hcblxuY29uc3QgT1JERVJfTkVYVCA9ICduZXh0JztcbmNvbnN0IE9SREVSX1BSRVYgPSAncHJldic7XG5jb25zdCBESVJFQ1RJT05fTEVGVCA9ICdsZWZ0JztcbmNvbnN0IERJUkVDVElPTl9SSUdIVCA9ICdyaWdodCc7XG5jb25zdCBFVkVOVF9TTElERSA9IGBzbGlkZSR7RVZFTlRfS0VZJDh9YDtcbmNvbnN0IEVWRU5UX1NMSUQgPSBgc2xpZCR7RVZFTlRfS0VZJDh9YDtcbmNvbnN0IEVWRU5UX0tFWURPV04kMSA9IGBrZXlkb3duJHtFVkVOVF9LRVkkOH1gO1xuY29uc3QgRVZFTlRfTU9VU0VFTlRFUiQxID0gYG1vdXNlZW50ZXIke0VWRU5UX0tFWSQ4fWA7XG5jb25zdCBFVkVOVF9NT1VTRUxFQVZFJDEgPSBgbW91c2VsZWF2ZSR7RVZFTlRfS0VZJDh9YDtcbmNvbnN0IEVWRU5UX0RSQUdfU1RBUlQgPSBgZHJhZ3N0YXJ0JHtFVkVOVF9LRVkkOH1gO1xuY29uc3QgRVZFTlRfTE9BRF9EQVRBX0FQSSQzID0gYGxvYWQke0VWRU5UX0tFWSQ4fSR7REFUQV9BUElfS0VZJDV9YDtcbmNvbnN0IEVWRU5UX0NMSUNLX0RBVEFfQVBJJDUgPSBgY2xpY2ske0VWRU5UX0tFWSQ4fSR7REFUQV9BUElfS0VZJDV9YDtcbmNvbnN0IENMQVNTX05BTUVfQ0FST1VTRUwgPSAnY2Fyb3VzZWwnO1xuY29uc3QgQ0xBU1NfTkFNRV9BQ1RJVkUkMiA9ICdhY3RpdmUnO1xuY29uc3QgQ0xBU1NfTkFNRV9TTElERSA9ICdzbGlkZSc7XG5jb25zdCBDTEFTU19OQU1FX0VORCA9ICdjYXJvdXNlbC1pdGVtLWVuZCc7XG5jb25zdCBDTEFTU19OQU1FX1NUQVJUID0gJ2Nhcm91c2VsLWl0ZW0tc3RhcnQnO1xuY29uc3QgQ0xBU1NfTkFNRV9ORVhUID0gJ2Nhcm91c2VsLWl0ZW0tbmV4dCc7XG5jb25zdCBDTEFTU19OQU1FX1BSRVYgPSAnY2Fyb3VzZWwtaXRlbS1wcmV2JztcbmNvbnN0IFNFTEVDVE9SX0FDVElWRSA9ICcuYWN0aXZlJztcbmNvbnN0IFNFTEVDVE9SX0lURU0gPSAnLmNhcm91c2VsLWl0ZW0nO1xuY29uc3QgU0VMRUNUT1JfQUNUSVZFX0lURU0gPSBTRUxFQ1RPUl9BQ1RJVkUgKyBTRUxFQ1RPUl9JVEVNO1xuY29uc3QgU0VMRUNUT1JfSVRFTV9JTUcgPSAnLmNhcm91c2VsLWl0ZW0gaW1nJztcbmNvbnN0IFNFTEVDVE9SX0lORElDQVRPUlMgPSAnLmNhcm91c2VsLWluZGljYXRvcnMnO1xuY29uc3QgU0VMRUNUT1JfREFUQV9TTElERSA9ICdbZGF0YS1icy1zbGlkZV0sIFtkYXRhLWJzLXNsaWRlLXRvXSc7XG5jb25zdCBTRUxFQ1RPUl9EQVRBX1JJREUgPSAnW2RhdGEtYnMtcmlkZT1cImNhcm91c2VsXCJdJztcbmNvbnN0IEtFWV9UT19ESVJFQ1RJT04gPSB7XG4gIFtBUlJPV19MRUZUX0tFWSQxXTogRElSRUNUSU9OX1JJR0hULFxuICBbQVJST1dfUklHSFRfS0VZJDFdOiBESVJFQ1RJT05fTEVGVFxufTtcbmNvbnN0IERlZmF1bHQkYiA9IHtcbiAgaW50ZXJ2YWw6IDUwMDAsXG4gIGtleWJvYXJkOiB0cnVlLFxuICBwYXVzZTogJ2hvdmVyJyxcbiAgcmlkZTogZmFsc2UsXG4gIHRvdWNoOiB0cnVlLFxuICB3cmFwOiB0cnVlXG59O1xuY29uc3QgRGVmYXVsdFR5cGUkYiA9IHtcbiAgaW50ZXJ2YWw6ICcobnVtYmVyfGJvb2xlYW4pJyxcbiAgLy8gVE9ETzp2NiByZW1vdmUgYm9vbGVhbiBzdXBwb3J0XG4gIGtleWJvYXJkOiAnYm9vbGVhbicsXG4gIHBhdXNlOiAnKHN0cmluZ3xib29sZWFuKScsXG4gIHJpZGU6ICcoYm9vbGVhbnxzdHJpbmcpJyxcbiAgdG91Y2g6ICdib29sZWFuJyxcbiAgd3JhcDogJ2Jvb2xlYW4nXG59O1xuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBDYXJvdXNlbCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBjb25maWcpIHtcbiAgICBzdXBlcihlbGVtZW50LCBjb25maWcpO1xuICAgIHRoaXMuX2ludGVydmFsID0gbnVsbDtcbiAgICB0aGlzLl9hY3RpdmVFbGVtZW50ID0gbnVsbDtcbiAgICB0aGlzLl9pc1NsaWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnRvdWNoVGltZW91dCA9IG51bGw7XG4gICAgdGhpcy5fc3dpcGVIZWxwZXIgPSBudWxsO1xuICAgIHRoaXMuX2luZGljYXRvcnNFbGVtZW50ID0gU2VsZWN0b3JFbmdpbmUuZmluZE9uZShTRUxFQ1RPUl9JTkRJQ0FUT1JTLCB0aGlzLl9lbGVtZW50KTtcbiAgICB0aGlzLl9hZGRFdmVudExpc3RlbmVycygpO1xuICAgIGlmICh0aGlzLl9jb25maWcucmlkZSA9PT0gQ0xBU1NfTkFNRV9DQVJPVVNFTCkge1xuICAgICAgdGhpcy5jeWNsZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiBEZWZhdWx0JGI7XG4gIH1cbiAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFR5cGUkYjtcbiAgfVxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUUkYztcbiAgfVxuXG4gIC8vIFB1YmxpY1xuICBuZXh0KCkge1xuICAgIHRoaXMuX3NsaWRlKE9SREVSX05FWFQpO1xuICB9XG4gIG5leHRXaGVuVmlzaWJsZSgpIHtcbiAgICAvLyBGSVhNRSBUT0RPIHVzZSBgZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlYFxuICAgIC8vIERvbid0IGNhbGwgbmV4dCB3aGVuIHRoZSBwYWdlIGlzbid0IHZpc2libGVcbiAgICAvLyBvciB0aGUgY2Fyb3VzZWwgb3IgaXRzIHBhcmVudCBpc24ndCB2aXNpYmxlXG4gICAgaWYgKCFkb2N1bWVudC5oaWRkZW4gJiYgaXNWaXNpYmxlKHRoaXMuX2VsZW1lbnQpKSB7XG4gICAgICB0aGlzLm5leHQoKTtcbiAgICB9XG4gIH1cbiAgcHJldigpIHtcbiAgICB0aGlzLl9zbGlkZShPUkRFUl9QUkVWKTtcbiAgfVxuICBwYXVzZSgpIHtcbiAgICBpZiAodGhpcy5faXNTbGlkaW5nKSB7XG4gICAgICB0cmlnZ2VyVHJhbnNpdGlvbkVuZCh0aGlzLl9lbGVtZW50KTtcbiAgICB9XG4gICAgdGhpcy5fY2xlYXJJbnRlcnZhbCgpO1xuICB9XG4gIGN5Y2xlKCkge1xuICAgIHRoaXMuX2NsZWFySW50ZXJ2YWwoKTtcbiAgICB0aGlzLl91cGRhdGVJbnRlcnZhbCgpO1xuICAgIHRoaXMuX2ludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy5uZXh0V2hlblZpc2libGUoKSwgdGhpcy5fY29uZmlnLmludGVydmFsKTtcbiAgfVxuICBfbWF5YmVFbmFibGVDeWNsZSgpIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5yaWRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLl9pc1NsaWRpbmcpIHtcbiAgICAgIEV2ZW50SGFuZGxlci5vbmUodGhpcy5fZWxlbWVudCwgRVZFTlRfU0xJRCwgKCkgPT4gdGhpcy5jeWNsZSgpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jeWNsZSgpO1xuICB9XG4gIHRvKGluZGV4KSB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLl9nZXRJdGVtcygpO1xuICAgIGlmIChpbmRleCA+IGl0ZW1zLmxlbmd0aCAtIDEgfHwgaW5kZXggPCAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLl9pc1NsaWRpbmcpIHtcbiAgICAgIEV2ZW50SGFuZGxlci5vbmUodGhpcy5fZWxlbWVudCwgRVZFTlRfU0xJRCwgKCkgPT4gdGhpcy50byhpbmRleCkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBhY3RpdmVJbmRleCA9IHRoaXMuX2dldEl0ZW1JbmRleCh0aGlzLl9nZXRBY3RpdmUoKSk7XG4gICAgaWYgKGFjdGl2ZUluZGV4ID09PSBpbmRleCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBvcmRlciA9IGluZGV4ID4gYWN0aXZlSW5kZXggPyBPUkRFUl9ORVhUIDogT1JERVJfUFJFVjtcbiAgICB0aGlzLl9zbGlkZShvcmRlciwgaXRlbXNbaW5kZXhdKTtcbiAgfVxuICBkaXNwb3NlKCkge1xuICAgIGlmICh0aGlzLl9zd2lwZUhlbHBlcikge1xuICAgICAgdGhpcy5fc3dpcGVIZWxwZXIuZGlzcG9zZSgpO1xuICAgIH1cbiAgICBzdXBlci5kaXNwb3NlKCk7XG4gIH1cblxuICAvLyBQcml2YXRlXG4gIF9jb25maWdBZnRlck1lcmdlKGNvbmZpZykge1xuICAgIGNvbmZpZy5kZWZhdWx0SW50ZXJ2YWwgPSBjb25maWcuaW50ZXJ2YWw7XG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuICBfYWRkRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgaWYgKHRoaXMuX2NvbmZpZy5rZXlib2FyZCkge1xuICAgICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0tFWURPV04kMSwgZXZlbnQgPT4gdGhpcy5fa2V5ZG93bihldmVudCkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fY29uZmlnLnBhdXNlID09PSAnaG92ZXInKSB7XG4gICAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfTU9VU0VFTlRFUiQxLCAoKSA9PiB0aGlzLnBhdXNlKCkpO1xuICAgICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX01PVVNFTEVBVkUkMSwgKCkgPT4gdGhpcy5fbWF5YmVFbmFibGVDeWNsZSgpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2NvbmZpZy50b3VjaCAmJiBTd2lwZS5pc1N1cHBvcnRlZCgpKSB7XG4gICAgICB0aGlzLl9hZGRUb3VjaEV2ZW50TGlzdGVuZXJzKCk7XG4gICAgfVxuICB9XG4gIF9hZGRUb3VjaEV2ZW50TGlzdGVuZXJzKCkge1xuICAgIGZvciAoY29uc3QgaW1nIG9mIFNlbGVjdG9yRW5naW5lLmZpbmQoU0VMRUNUT1JfSVRFTV9JTUcsIHRoaXMuX2VsZW1lbnQpKSB7XG4gICAgICBFdmVudEhhbmRsZXIub24oaW1nLCBFVkVOVF9EUkFHX1NUQVJULCBldmVudCA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpKTtcbiAgICB9XG4gICAgY29uc3QgZW5kQ2FsbEJhY2sgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fY29uZmlnLnBhdXNlICE9PSAnaG92ZXInKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgaXQncyBhIHRvdWNoLWVuYWJsZWQgZGV2aWNlLCBtb3VzZWVudGVyL2xlYXZlIGFyZSBmaXJlZCBhc1xuICAgICAgLy8gcGFydCBvZiB0aGUgbW91c2UgY29tcGF0aWJpbGl0eSBldmVudHMgb24gZmlyc3QgdGFwIC0gdGhlIGNhcm91c2VsXG4gICAgICAvLyB3b3VsZCBzdG9wIGN5Y2xpbmcgdW50aWwgdXNlciB0YXBwZWQgb3V0IG9mIGl0O1xuICAgICAgLy8gaGVyZSwgd2UgbGlzdGVuIGZvciB0b3VjaGVuZCwgZXhwbGljaXRseSBwYXVzZSB0aGUgY2Fyb3VzZWxcbiAgICAgIC8vIChhcyBpZiBpdCdzIHRoZSBzZWNvbmQgdGltZSB3ZSB0YXAgb24gaXQsIG1vdXNlZW50ZXIgY29tcGF0IGV2ZW50XG4gICAgICAvLyBpcyBOT1QgZmlyZWQpIGFuZCBhZnRlciBhIHRpbWVvdXQgKHRvIGFsbG93IGZvciBtb3VzZSBjb21wYXRpYmlsaXR5XG4gICAgICAvLyBldmVudHMgdG8gZmlyZSkgd2UgZXhwbGljaXRseSByZXN0YXJ0IGN5Y2xpbmdcblxuICAgICAgdGhpcy5wYXVzZSgpO1xuICAgICAgaWYgKHRoaXMudG91Y2hUaW1lb3V0KSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRvdWNoVGltZW91dCk7XG4gICAgICB9XG4gICAgICB0aGlzLnRvdWNoVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fbWF5YmVFbmFibGVDeWNsZSgpLCBUT1VDSEVWRU5UX0NPTVBBVF9XQUlUICsgdGhpcy5fY29uZmlnLmludGVydmFsKTtcbiAgICB9O1xuICAgIGNvbnN0IHN3aXBlQ29uZmlnID0ge1xuICAgICAgbGVmdENhbGxiYWNrOiAoKSA9PiB0aGlzLl9zbGlkZSh0aGlzLl9kaXJlY3Rpb25Ub09yZGVyKERJUkVDVElPTl9MRUZUKSksXG4gICAgICByaWdodENhbGxiYWNrOiAoKSA9PiB0aGlzLl9zbGlkZSh0aGlzLl9kaXJlY3Rpb25Ub09yZGVyKERJUkVDVElPTl9SSUdIVCkpLFxuICAgICAgZW5kQ2FsbGJhY2s6IGVuZENhbGxCYWNrXG4gICAgfTtcbiAgICB0aGlzLl9zd2lwZUhlbHBlciA9IG5ldyBTd2lwZSh0aGlzLl9lbGVtZW50LCBzd2lwZUNvbmZpZyk7XG4gIH1cbiAgX2tleWRvd24oZXZlbnQpIHtcbiAgICBpZiAoL2lucHV0fHRleHRhcmVhL2kudGVzdChldmVudC50YXJnZXQudGFnTmFtZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZGlyZWN0aW9uID0gS0VZX1RPX0RJUkVDVElPTltldmVudC5rZXldO1xuICAgIGlmIChkaXJlY3Rpb24pIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLl9zbGlkZSh0aGlzLl9kaXJlY3Rpb25Ub09yZGVyKGRpcmVjdGlvbikpO1xuICAgIH1cbiAgfVxuICBfZ2V0SXRlbUluZGV4KGVsZW1lbnQpIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0SXRlbXMoKS5pbmRleE9mKGVsZW1lbnQpO1xuICB9XG4gIF9zZXRBY3RpdmVJbmRpY2F0b3JFbGVtZW50KGluZGV4KSB7XG4gICAgaWYgKCF0aGlzLl9pbmRpY2F0b3JzRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBhY3RpdmVJbmRpY2F0b3IgPSBTZWxlY3RvckVuZ2luZS5maW5kT25lKFNFTEVDVE9SX0FDVElWRSwgdGhpcy5faW5kaWNhdG9yc0VsZW1lbnQpO1xuICAgIGFjdGl2ZUluZGljYXRvci5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfQUNUSVZFJDIpO1xuICAgIGFjdGl2ZUluZGljYXRvci5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtY3VycmVudCcpO1xuICAgIGNvbnN0IG5ld0FjdGl2ZUluZGljYXRvciA9IFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoYFtkYXRhLWJzLXNsaWRlLXRvPVwiJHtpbmRleH1cIl1gLCB0aGlzLl9pbmRpY2F0b3JzRWxlbWVudCk7XG4gICAgaWYgKG5ld0FjdGl2ZUluZGljYXRvcikge1xuICAgICAgbmV3QWN0aXZlSW5kaWNhdG9yLmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9BQ1RJVkUkMik7XG4gICAgICBuZXdBY3RpdmVJbmRpY2F0b3Iuc2V0QXR0cmlidXRlKCdhcmlhLWN1cnJlbnQnLCAndHJ1ZScpO1xuICAgIH1cbiAgfVxuICBfdXBkYXRlSW50ZXJ2YWwoKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2FjdGl2ZUVsZW1lbnQgfHwgdGhpcy5fZ2V0QWN0aXZlKCk7XG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGVsZW1lbnRJbnRlcnZhbCA9IE51bWJlci5wYXJzZUludChlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1icy1pbnRlcnZhbCcpLCAxMCk7XG4gICAgdGhpcy5fY29uZmlnLmludGVydmFsID0gZWxlbWVudEludGVydmFsIHx8IHRoaXMuX2NvbmZpZy5kZWZhdWx0SW50ZXJ2YWw7XG4gIH1cbiAgX3NsaWRlKG9yZGVyLCBlbGVtZW50ID0gbnVsbCkge1xuICAgIGlmICh0aGlzLl9pc1NsaWRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYWN0aXZlRWxlbWVudCA9IHRoaXMuX2dldEFjdGl2ZSgpO1xuICAgIGNvbnN0IGlzTmV4dCA9IG9yZGVyID09PSBPUkRFUl9ORVhUO1xuICAgIGNvbnN0IG5leHRFbGVtZW50ID0gZWxlbWVudCB8fCBnZXROZXh0QWN0aXZlRWxlbWVudCh0aGlzLl9nZXRJdGVtcygpLCBhY3RpdmVFbGVtZW50LCBpc05leHQsIHRoaXMuX2NvbmZpZy53cmFwKTtcbiAgICBpZiAobmV4dEVsZW1lbnQgPT09IGFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbmV4dEVsZW1lbnRJbmRleCA9IHRoaXMuX2dldEl0ZW1JbmRleChuZXh0RWxlbWVudCk7XG4gICAgY29uc3QgdHJpZ2dlckV2ZW50ID0gZXZlbnROYW1lID0+IHtcbiAgICAgIHJldHVybiBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBldmVudE5hbWUsIHtcbiAgICAgICAgcmVsYXRlZFRhcmdldDogbmV4dEVsZW1lbnQsXG4gICAgICAgIGRpcmVjdGlvbjogdGhpcy5fb3JkZXJUb0RpcmVjdGlvbihvcmRlciksXG4gICAgICAgIGZyb206IHRoaXMuX2dldEl0ZW1JbmRleChhY3RpdmVFbGVtZW50KSxcbiAgICAgICAgdG86IG5leHRFbGVtZW50SW5kZXhcbiAgICAgIH0pO1xuICAgIH07XG4gICAgY29uc3Qgc2xpZGVFdmVudCA9IHRyaWdnZXJFdmVudChFVkVOVF9TTElERSk7XG4gICAgaWYgKHNsaWRlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWFjdGl2ZUVsZW1lbnQgfHwgIW5leHRFbGVtZW50KSB7XG4gICAgICAvLyBTb21lIHdlaXJkbmVzcyBpcyBoYXBwZW5pbmcsIHNvIHdlIGJhaWxcbiAgICAgIC8vIFRPRE86IGNoYW5nZSB0ZXN0cyB0aGF0IHVzZSBlbXB0eSBkaXZzIHRvIGF2b2lkIHRoaXMgY2hlY2tcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaXNDeWNsaW5nID0gQm9vbGVhbih0aGlzLl9pbnRlcnZhbCk7XG4gICAgdGhpcy5wYXVzZSgpO1xuICAgIHRoaXMuX2lzU2xpZGluZyA9IHRydWU7XG4gICAgdGhpcy5fc2V0QWN0aXZlSW5kaWNhdG9yRWxlbWVudChuZXh0RWxlbWVudEluZGV4KTtcbiAgICB0aGlzLl9hY3RpdmVFbGVtZW50ID0gbmV4dEVsZW1lbnQ7XG4gICAgY29uc3QgZGlyZWN0aW9uYWxDbGFzc05hbWUgPSBpc05leHQgPyBDTEFTU19OQU1FX1NUQVJUIDogQ0xBU1NfTkFNRV9FTkQ7XG4gICAgY29uc3Qgb3JkZXJDbGFzc05hbWUgPSBpc05leHQgPyBDTEFTU19OQU1FX05FWFQgOiBDTEFTU19OQU1FX1BSRVY7XG4gICAgbmV4dEVsZW1lbnQuY2xhc3NMaXN0LmFkZChvcmRlckNsYXNzTmFtZSk7XG4gICAgcmVmbG93KG5leHRFbGVtZW50KTtcbiAgICBhY3RpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoZGlyZWN0aW9uYWxDbGFzc05hbWUpO1xuICAgIG5leHRFbGVtZW50LmNsYXNzTGlzdC5hZGQoZGlyZWN0aW9uYWxDbGFzc05hbWUpO1xuICAgIGNvbnN0IGNvbXBsZXRlQ2FsbEJhY2sgPSAoKSA9PiB7XG4gICAgICBuZXh0RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGRpcmVjdGlvbmFsQ2xhc3NOYW1lLCBvcmRlckNsYXNzTmFtZSk7XG4gICAgICBuZXh0RWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfQUNUSVZFJDIpO1xuICAgICAgYWN0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfQUNUSVZFJDIsIG9yZGVyQ2xhc3NOYW1lLCBkaXJlY3Rpb25hbENsYXNzTmFtZSk7XG4gICAgICB0aGlzLl9pc1NsaWRpbmcgPSBmYWxzZTtcbiAgICAgIHRyaWdnZXJFdmVudChFVkVOVF9TTElEKTtcbiAgICB9O1xuICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soY29tcGxldGVDYWxsQmFjaywgYWN0aXZlRWxlbWVudCwgdGhpcy5faXNBbmltYXRlZCgpKTtcbiAgICBpZiAoaXNDeWNsaW5nKSB7XG4gICAgICB0aGlzLmN5Y2xlKCk7XG4gICAgfVxuICB9XG4gIF9pc0FuaW1hdGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX1NMSURFKTtcbiAgfVxuICBfZ2V0QWN0aXZlKCkge1xuICAgIHJldHVybiBTZWxlY3RvckVuZ2luZS5maW5kT25lKFNFTEVDVE9SX0FDVElWRV9JVEVNLCB0aGlzLl9lbGVtZW50KTtcbiAgfVxuICBfZ2V0SXRlbXMoKSB7XG4gICAgcmV0dXJuIFNlbGVjdG9yRW5naW5lLmZpbmQoU0VMRUNUT1JfSVRFTSwgdGhpcy5fZWxlbWVudCk7XG4gIH1cbiAgX2NsZWFySW50ZXJ2YWwoKSB7XG4gICAgaWYgKHRoaXMuX2ludGVydmFsKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuX2ludGVydmFsKTtcbiAgICAgIHRoaXMuX2ludGVydmFsID0gbnVsbDtcbiAgICB9XG4gIH1cbiAgX2RpcmVjdGlvblRvT3JkZXIoZGlyZWN0aW9uKSB7XG4gICAgaWYgKGlzUlRMKCkpIHtcbiAgICAgIHJldHVybiBkaXJlY3Rpb24gPT09IERJUkVDVElPTl9MRUZUID8gT1JERVJfUFJFViA6IE9SREVSX05FWFQ7XG4gICAgfVxuICAgIHJldHVybiBkaXJlY3Rpb24gPT09IERJUkVDVElPTl9MRUZUID8gT1JERVJfTkVYVCA6IE9SREVSX1BSRVY7XG4gIH1cbiAgX29yZGVyVG9EaXJlY3Rpb24ob3JkZXIpIHtcbiAgICBpZiAoaXNSVEwoKSkge1xuICAgICAgcmV0dXJuIG9yZGVyID09PSBPUkRFUl9QUkVWID8gRElSRUNUSU9OX0xFRlQgOiBESVJFQ1RJT05fUklHSFQ7XG4gICAgfVxuICAgIHJldHVybiBvcmRlciA9PT0gT1JERVJfUFJFViA/IERJUkVDVElPTl9SSUdIVCA6IERJUkVDVElPTl9MRUZUO1xuICB9XG5cbiAgLy8gU3RhdGljXG4gIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkYXRhID0gQ2Fyb3VzZWwuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCBjb25maWcpO1xuICAgICAgaWYgKHR5cGVvZiBjb25maWcgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGRhdGEudG8oY29uZmlnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBjb25maWcgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmIChkYXRhW2NvbmZpZ10gPT09IHVuZGVmaW5lZCB8fCBjb25maWcuc3RhcnRzV2l0aCgnXycpIHx8IGNvbmZpZyA9PT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCBcIiR7Y29uZmlnfVwiYCk7XG4gICAgICAgIH1cbiAgICAgICAgZGF0YVtjb25maWddKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfQ0xJQ0tfREFUQV9BUEkkNSwgU0VMRUNUT1JfREFUQV9TTElERSwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gIGNvbnN0IHRhcmdldCA9IFNlbGVjdG9yRW5naW5lLmdldEVsZW1lbnRGcm9tU2VsZWN0b3IodGhpcyk7XG4gIGlmICghdGFyZ2V0IHx8ICF0YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfQ0FST1VTRUwpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIGNvbnN0IGNhcm91c2VsID0gQ2Fyb3VzZWwuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0YXJnZXQpO1xuICBjb25zdCBzbGlkZUluZGV4ID0gdGhpcy5nZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtc2xpZGUtdG8nKTtcbiAgaWYgKHNsaWRlSW5kZXgpIHtcbiAgICBjYXJvdXNlbC50byhzbGlkZUluZGV4KTtcbiAgICBjYXJvdXNlbC5fbWF5YmVFbmFibGVDeWNsZSgpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoTWFuaXB1bGF0b3IuZ2V0RGF0YUF0dHJpYnV0ZSh0aGlzLCAnc2xpZGUnKSA9PT0gJ25leHQnKSB7XG4gICAgY2Fyb3VzZWwubmV4dCgpO1xuICAgIGNhcm91c2VsLl9tYXliZUVuYWJsZUN5Y2xlKCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNhcm91c2VsLnByZXYoKTtcbiAgY2Fyb3VzZWwuX21heWJlRW5hYmxlQ3ljbGUoKTtcbn0pO1xuRXZlbnRIYW5kbGVyLm9uKHdpbmRvdywgRVZFTlRfTE9BRF9EQVRBX0FQSSQzLCAoKSA9PiB7XG4gIGNvbnN0IGNhcm91c2VscyA9IFNlbGVjdG9yRW5naW5lLmZpbmQoU0VMRUNUT1JfREFUQV9SSURFKTtcbiAgZm9yIChjb25zdCBjYXJvdXNlbCBvZiBjYXJvdXNlbHMpIHtcbiAgICBDYXJvdXNlbC5nZXRPckNyZWF0ZUluc3RhbmNlKGNhcm91c2VsKTtcbiAgfVxufSk7XG5cbi8qKlxuICogalF1ZXJ5XG4gKi9cblxuZGVmaW5lSlF1ZXJ5UGx1Z2luKENhcm91c2VsKTtcblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwIGNvbGxhcHNlLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IE5BTUUkYiA9ICdjb2xsYXBzZSc7XG5jb25zdCBEQVRBX0tFWSQ3ID0gJ2JzLmNvbGxhcHNlJztcbmNvbnN0IEVWRU5UX0tFWSQ3ID0gYC4ke0RBVEFfS0VZJDd9YDtcbmNvbnN0IERBVEFfQVBJX0tFWSQ0ID0gJy5kYXRhLWFwaSc7XG5jb25zdCBFVkVOVF9TSE9XJDYgPSBgc2hvdyR7RVZFTlRfS0VZJDd9YDtcbmNvbnN0IEVWRU5UX1NIT1dOJDYgPSBgc2hvd24ke0VWRU5UX0tFWSQ3fWA7XG5jb25zdCBFVkVOVF9ISURFJDYgPSBgaGlkZSR7RVZFTlRfS0VZJDd9YDtcbmNvbnN0IEVWRU5UX0hJRERFTiQ2ID0gYGhpZGRlbiR7RVZFTlRfS0VZJDd9YDtcbmNvbnN0IEVWRU5UX0NMSUNLX0RBVEFfQVBJJDQgPSBgY2xpY2ske0VWRU5UX0tFWSQ3fSR7REFUQV9BUElfS0VZJDR9YDtcbmNvbnN0IENMQVNTX05BTUVfU0hPVyQ3ID0gJ3Nob3cnO1xuY29uc3QgQ0xBU1NfTkFNRV9DT0xMQVBTRSA9ICdjb2xsYXBzZSc7XG5jb25zdCBDTEFTU19OQU1FX0NPTExBUFNJTkcgPSAnY29sbGFwc2luZyc7XG5jb25zdCBDTEFTU19OQU1FX0NPTExBUFNFRCA9ICdjb2xsYXBzZWQnO1xuY29uc3QgQ0xBU1NfTkFNRV9ERUVQRVJfQ0hJTERSRU4gPSBgOnNjb3BlIC4ke0NMQVNTX05BTUVfQ09MTEFQU0V9IC4ke0NMQVNTX05BTUVfQ09MTEFQU0V9YDtcbmNvbnN0IENMQVNTX05BTUVfSE9SSVpPTlRBTCA9ICdjb2xsYXBzZS1ob3Jpem9udGFsJztcbmNvbnN0IFdJRFRIID0gJ3dpZHRoJztcbmNvbnN0IEhFSUdIVCA9ICdoZWlnaHQnO1xuY29uc3QgU0VMRUNUT1JfQUNUSVZFUyA9ICcuY29sbGFwc2Uuc2hvdywgLmNvbGxhcHNlLmNvbGxhcHNpbmcnO1xuY29uc3QgU0VMRUNUT1JfREFUQV9UT0dHTEUkNCA9ICdbZGF0YS1icy10b2dnbGU9XCJjb2xsYXBzZVwiXSc7XG5jb25zdCBEZWZhdWx0JGEgPSB7XG4gIHBhcmVudDogbnVsbCxcbiAgdG9nZ2xlOiB0cnVlXG59O1xuY29uc3QgRGVmYXVsdFR5cGUkYSA9IHtcbiAgcGFyZW50OiAnKG51bGx8ZWxlbWVudCknLFxuICB0b2dnbGU6ICdib29sZWFuJ1xufTtcblxuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgQ29sbGFwc2UgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoZWxlbWVudCwgY29uZmlnKSB7XG4gICAgc3VwZXIoZWxlbWVudCwgY29uZmlnKTtcbiAgICB0aGlzLl9pc1RyYW5zaXRpb25pbmcgPSBmYWxzZTtcbiAgICB0aGlzLl90cmlnZ2VyQXJyYXkgPSBbXTtcbiAgICBjb25zdCB0b2dnbGVMaXN0ID0gU2VsZWN0b3JFbmdpbmUuZmluZChTRUxFQ1RPUl9EQVRBX1RPR0dMRSQ0KTtcbiAgICBmb3IgKGNvbnN0IGVsZW0gb2YgdG9nZ2xlTGlzdCkge1xuICAgICAgY29uc3Qgc2VsZWN0b3IgPSBTZWxlY3RvckVuZ2luZS5nZXRTZWxlY3RvckZyb21FbGVtZW50KGVsZW0pO1xuICAgICAgY29uc3QgZmlsdGVyRWxlbWVudCA9IFNlbGVjdG9yRW5naW5lLmZpbmQoc2VsZWN0b3IpLmZpbHRlcihmb3VuZEVsZW1lbnQgPT4gZm91bmRFbGVtZW50ID09PSB0aGlzLl9lbGVtZW50KTtcbiAgICAgIGlmIChzZWxlY3RvciAhPT0gbnVsbCAmJiBmaWx0ZXJFbGVtZW50Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLl90cmlnZ2VyQXJyYXkucHVzaChlbGVtKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5faW5pdGlhbGl6ZUNoaWxkcmVuKCk7XG4gICAgaWYgKCF0aGlzLl9jb25maWcucGFyZW50KSB7XG4gICAgICB0aGlzLl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3ModGhpcy5fdHJpZ2dlckFycmF5LCB0aGlzLl9pc1Nob3duKCkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fY29uZmlnLnRvZ2dsZSkge1xuICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICB9XG4gIH1cblxuICAvLyBHZXR0ZXJzXG4gIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHtcbiAgICByZXR1cm4gRGVmYXVsdCRhO1xuICB9XG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRUeXBlJGE7XG4gIH1cbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FJGI7XG4gIH1cblxuICAvLyBQdWJsaWNcbiAgdG9nZ2xlKCkge1xuICAgIGlmICh0aGlzLl9pc1Nob3duKCkpIHtcbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNob3coKTtcbiAgICB9XG4gIH1cbiAgc2hvdygpIHtcbiAgICBpZiAodGhpcy5faXNUcmFuc2l0aW9uaW5nIHx8IHRoaXMuX2lzU2hvd24oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgYWN0aXZlQ2hpbGRyZW4gPSBbXTtcblxuICAgIC8vIGZpbmQgYWN0aXZlIGNoaWxkcmVuXG4gICAgaWYgKHRoaXMuX2NvbmZpZy5wYXJlbnQpIHtcbiAgICAgIGFjdGl2ZUNoaWxkcmVuID0gdGhpcy5fZ2V0Rmlyc3RMZXZlbENoaWxkcmVuKFNFTEVDVE9SX0FDVElWRVMpLmZpbHRlcihlbGVtZW50ID0+IGVsZW1lbnQgIT09IHRoaXMuX2VsZW1lbnQpLm1hcChlbGVtZW50ID0+IENvbGxhcHNlLmdldE9yQ3JlYXRlSW5zdGFuY2UoZWxlbWVudCwge1xuICAgICAgICB0b2dnbGU6IGZhbHNlXG4gICAgICB9KSk7XG4gICAgfVxuICAgIGlmIChhY3RpdmVDaGlsZHJlbi5sZW5ndGggJiYgYWN0aXZlQ2hpbGRyZW5bMF0uX2lzVHJhbnNpdGlvbmluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzdGFydEV2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfU0hPVyQ2KTtcbiAgICBpZiAoc3RhcnRFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAoY29uc3QgYWN0aXZlSW5zdGFuY2Ugb2YgYWN0aXZlQ2hpbGRyZW4pIHtcbiAgICAgIGFjdGl2ZUluc3RhbmNlLmhpZGUoKTtcbiAgICB9XG4gICAgY29uc3QgZGltZW5zaW9uID0gdGhpcy5fZ2V0RGltZW5zaW9uKCk7XG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfQ09MTEFQU0UpO1xuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0NPTExBUFNJTkcpO1xuICAgIHRoaXMuX2VsZW1lbnQuc3R5bGVbZGltZW5zaW9uXSA9IDA7XG4gICAgdGhpcy5fYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKHRoaXMuX3RyaWdnZXJBcnJheSwgdHJ1ZSk7XG4gICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gdHJ1ZTtcbiAgICBjb25zdCBjb21wbGV0ZSA9ICgpID0+IHtcbiAgICAgIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfQ09MTEFQU0lORyk7XG4gICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9DT0xMQVBTRSwgQ0xBU1NfTkFNRV9TSE9XJDcpO1xuICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZVtkaW1lbnNpb25dID0gJyc7XG4gICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9TSE9XTiQ2KTtcbiAgICB9O1xuICAgIGNvbnN0IGNhcGl0YWxpemVkRGltZW5zaW9uID0gZGltZW5zaW9uWzBdLnRvVXBwZXJDYXNlKCkgKyBkaW1lbnNpb24uc2xpY2UoMSk7XG4gICAgY29uc3Qgc2Nyb2xsU2l6ZSA9IGBzY3JvbGwke2NhcGl0YWxpemVkRGltZW5zaW9ufWA7XG4gICAgdGhpcy5fcXVldWVDYWxsYmFjayhjb21wbGV0ZSwgdGhpcy5fZWxlbWVudCwgdHJ1ZSk7XG4gICAgdGhpcy5fZWxlbWVudC5zdHlsZVtkaW1lbnNpb25dID0gYCR7dGhpcy5fZWxlbWVudFtzY3JvbGxTaXplXX1weGA7XG4gIH1cbiAgaGlkZSgpIHtcbiAgICBpZiAodGhpcy5faXNUcmFuc2l0aW9uaW5nIHx8ICF0aGlzLl9pc1Nob3duKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc3RhcnRFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0hJREUkNik7XG4gICAgaWYgKHN0YXJ0RXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBkaW1lbnNpb24gPSB0aGlzLl9nZXREaW1lbnNpb24oKTtcbiAgICB0aGlzLl9lbGVtZW50LnN0eWxlW2RpbWVuc2lvbl0gPSBgJHt0aGlzLl9lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW2RpbWVuc2lvbl19cHhgO1xuICAgIHJlZmxvdyh0aGlzLl9lbGVtZW50KTtcbiAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9DT0xMQVBTSU5HKTtcbiAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9DT0xMQVBTRSwgQ0xBU1NfTkFNRV9TSE9XJDcpO1xuICAgIGZvciAoY29uc3QgdHJpZ2dlciBvZiB0aGlzLl90cmlnZ2VyQXJyYXkpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBTZWxlY3RvckVuZ2luZS5nZXRFbGVtZW50RnJvbVNlbGVjdG9yKHRyaWdnZXIpO1xuICAgICAgaWYgKGVsZW1lbnQgJiYgIXRoaXMuX2lzU2hvd24oZWxlbWVudCkpIHtcbiAgICAgICAgdGhpcy5fYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKFt0cmlnZ2VyXSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9pc1RyYW5zaXRpb25pbmcgPSB0cnVlO1xuICAgIGNvbnN0IGNvbXBsZXRlID0gKCkgPT4ge1xuICAgICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9DT0xMQVBTSU5HKTtcbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0NPTExBUFNFKTtcbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0hJRERFTiQ2KTtcbiAgICB9O1xuICAgIHRoaXMuX2VsZW1lbnQuc3R5bGVbZGltZW5zaW9uXSA9ICcnO1xuICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soY29tcGxldGUsIHRoaXMuX2VsZW1lbnQsIHRydWUpO1xuICB9XG5cbiAgLy8gUHJpdmF0ZVxuICBfaXNTaG93bihlbGVtZW50ID0gdGhpcy5fZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX1NIT1ckNyk7XG4gIH1cbiAgX2NvbmZpZ0FmdGVyTWVyZ2UoY29uZmlnKSB7XG4gICAgY29uZmlnLnRvZ2dsZSA9IEJvb2xlYW4oY29uZmlnLnRvZ2dsZSk7IC8vIENvZXJjZSBzdHJpbmcgdmFsdWVzXG4gICAgY29uZmlnLnBhcmVudCA9IGdldEVsZW1lbnQoY29uZmlnLnBhcmVudCk7XG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuICBfZ2V0RGltZW5zaW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0hPUklaT05UQUwpID8gV0lEVEggOiBIRUlHSFQ7XG4gIH1cbiAgX2luaXRpYWxpemVDaGlsZHJlbigpIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5wYXJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLl9nZXRGaXJzdExldmVsQ2hpbGRyZW4oU0VMRUNUT1JfREFUQV9UT0dHTEUkNCk7XG4gICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGNoaWxkcmVuKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZCA9IFNlbGVjdG9yRW5naW5lLmdldEVsZW1lbnRGcm9tU2VsZWN0b3IoZWxlbWVudCk7XG4gICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgdGhpcy5fYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKFtlbGVtZW50XSwgdGhpcy5faXNTaG93bihzZWxlY3RlZCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBfZ2V0Rmlyc3RMZXZlbENoaWxkcmVuKHNlbGVjdG9yKSB7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBTZWxlY3RvckVuZ2luZS5maW5kKENMQVNTX05BTUVfREVFUEVSX0NISUxEUkVOLCB0aGlzLl9jb25maWcucGFyZW50KTtcbiAgICAvLyByZW1vdmUgY2hpbGRyZW4gaWYgZ3JlYXRlciBkZXB0aFxuICAgIHJldHVybiBTZWxlY3RvckVuZ2luZS5maW5kKHNlbGVjdG9yLCB0aGlzLl9jb25maWcucGFyZW50KS5maWx0ZXIoZWxlbWVudCA9PiAhY2hpbGRyZW4uaW5jbHVkZXMoZWxlbWVudCkpO1xuICB9XG4gIF9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3ModHJpZ2dlckFycmF5LCBpc09wZW4pIHtcbiAgICBpZiAoIXRyaWdnZXJBcnJheS5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZm9yIChjb25zdCBlbGVtZW50IG9mIHRyaWdnZXJBcnJheSkge1xuICAgICAgZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKENMQVNTX05BTUVfQ09MTEFQU0VELCAhaXNPcGVuKTtcbiAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgaXNPcGVuKTtcbiAgICB9XG4gIH1cblxuICAvLyBTdGF0aWNcbiAgc3RhdGljIGpRdWVyeUludGVyZmFjZShjb25maWcpIHtcbiAgICBjb25zdCBfY29uZmlnID0ge307XG4gICAgaWYgKHR5cGVvZiBjb25maWcgPT09ICdzdHJpbmcnICYmIC9zaG93fGhpZGUvLnRlc3QoY29uZmlnKSkge1xuICAgICAgX2NvbmZpZy50b2dnbGUgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkYXRhID0gQ29sbGFwc2UuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCBfY29uZmlnKTtcbiAgICAgIGlmICh0eXBlb2YgY29uZmlnID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAodHlwZW9mIGRhdGFbY29uZmlnXSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApO1xuICAgICAgICB9XG4gICAgICAgIGRhdGFbY29uZmlnXSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogRGF0YSBBUEkgaW1wbGVtZW50YXRpb25cbiAqL1xuXG5FdmVudEhhbmRsZXIub24oZG9jdW1lbnQsIEVWRU5UX0NMSUNLX0RBVEFfQVBJJDQsIFNFTEVDVE9SX0RBVEFfVE9HR0xFJDQsIGZ1bmN0aW9uIChldmVudCkge1xuICAvLyBwcmV2ZW50RGVmYXVsdCBvbmx5IGZvciA8YT4gZWxlbWVudHMgKHdoaWNoIGNoYW5nZSB0aGUgVVJMKSBub3QgaW5zaWRlIHRoZSBjb2xsYXBzaWJsZSBlbGVtZW50XG4gIGlmIChldmVudC50YXJnZXQudGFnTmFtZSA9PT0gJ0EnIHx8IGV2ZW50LmRlbGVnYXRlVGFyZ2V0ICYmIGV2ZW50LmRlbGVnYXRlVGFyZ2V0LnRhZ05hbWUgPT09ICdBJykge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cbiAgZm9yIChjb25zdCBlbGVtZW50IG9mIFNlbGVjdG9yRW5naW5lLmdldE11bHRpcGxlRWxlbWVudHNGcm9tU2VsZWN0b3IodGhpcykpIHtcbiAgICBDb2xsYXBzZS5nZXRPckNyZWF0ZUluc3RhbmNlKGVsZW1lbnQsIHtcbiAgICAgIHRvZ2dsZTogZmFsc2VcbiAgICB9KS50b2dnbGUoKTtcbiAgfVxufSk7XG5cbi8qKlxuICogalF1ZXJ5XG4gKi9cblxuZGVmaW5lSlF1ZXJ5UGx1Z2luKENvbGxhcHNlKTtcblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwIGRyb3Bkb3duLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IE5BTUUkYSA9ICdkcm9wZG93bic7XG5jb25zdCBEQVRBX0tFWSQ2ID0gJ2JzLmRyb3Bkb3duJztcbmNvbnN0IEVWRU5UX0tFWSQ2ID0gYC4ke0RBVEFfS0VZJDZ9YDtcbmNvbnN0IERBVEFfQVBJX0tFWSQzID0gJy5kYXRhLWFwaSc7XG5jb25zdCBFU0NBUEVfS0VZJDIgPSAnRXNjYXBlJztcbmNvbnN0IFRBQl9LRVkkMSA9ICdUYWInO1xuY29uc3QgQVJST1dfVVBfS0VZJDEgPSAnQXJyb3dVcCc7XG5jb25zdCBBUlJPV19ET1dOX0tFWSQxID0gJ0Fycm93RG93bic7XG5jb25zdCBSSUdIVF9NT1VTRV9CVVRUT04gPSAyOyAvLyBNb3VzZUV2ZW50LmJ1dHRvbiB2YWx1ZSBmb3IgdGhlIHNlY29uZGFyeSBidXR0b24sIHVzdWFsbHkgdGhlIHJpZ2h0IGJ1dHRvblxuXG5jb25zdCBFVkVOVF9ISURFJDUgPSBgaGlkZSR7RVZFTlRfS0VZJDZ9YDtcbmNvbnN0IEVWRU5UX0hJRERFTiQ1ID0gYGhpZGRlbiR7RVZFTlRfS0VZJDZ9YDtcbmNvbnN0IEVWRU5UX1NIT1ckNSA9IGBzaG93JHtFVkVOVF9LRVkkNn1gO1xuY29uc3QgRVZFTlRfU0hPV04kNSA9IGBzaG93biR7RVZFTlRfS0VZJDZ9YDtcbmNvbnN0IEVWRU5UX0NMSUNLX0RBVEFfQVBJJDMgPSBgY2xpY2ske0VWRU5UX0tFWSQ2fSR7REFUQV9BUElfS0VZJDN9YDtcbmNvbnN0IEVWRU5UX0tFWURPV05fREFUQV9BUEkgPSBga2V5ZG93biR7RVZFTlRfS0VZJDZ9JHtEQVRBX0FQSV9LRVkkM31gO1xuY29uc3QgRVZFTlRfS0VZVVBfREFUQV9BUEkgPSBga2V5dXAke0VWRU5UX0tFWSQ2fSR7REFUQV9BUElfS0VZJDN9YDtcbmNvbnN0IENMQVNTX05BTUVfU0hPVyQ2ID0gJ3Nob3cnO1xuY29uc3QgQ0xBU1NfTkFNRV9EUk9QVVAgPSAnZHJvcHVwJztcbmNvbnN0IENMQVNTX05BTUVfRFJPUEVORCA9ICdkcm9wZW5kJztcbmNvbnN0IENMQVNTX05BTUVfRFJPUFNUQVJUID0gJ2Ryb3BzdGFydCc7XG5jb25zdCBDTEFTU19OQU1FX0RST1BVUF9DRU5URVIgPSAnZHJvcHVwLWNlbnRlcic7XG5jb25zdCBDTEFTU19OQU1FX0RST1BET1dOX0NFTlRFUiA9ICdkcm9wZG93bi1jZW50ZXInO1xuY29uc3QgU0VMRUNUT1JfREFUQV9UT0dHTEUkMyA9ICdbZGF0YS1icy10b2dnbGU9XCJkcm9wZG93blwiXTpub3QoLmRpc2FibGVkKTpub3QoOmRpc2FibGVkKSc7XG5jb25zdCBTRUxFQ1RPUl9EQVRBX1RPR0dMRV9TSE9XTiA9IGAke1NFTEVDVE9SX0RBVEFfVE9HR0xFJDN9LiR7Q0xBU1NfTkFNRV9TSE9XJDZ9YDtcbmNvbnN0IFNFTEVDVE9SX01FTlUgPSAnLmRyb3Bkb3duLW1lbnUnO1xuY29uc3QgU0VMRUNUT1JfTkFWQkFSID0gJy5uYXZiYXInO1xuY29uc3QgU0VMRUNUT1JfTkFWQkFSX05BViA9ICcubmF2YmFyLW5hdic7XG5jb25zdCBTRUxFQ1RPUl9WSVNJQkxFX0lURU1TID0gJy5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtOm5vdCguZGlzYWJsZWQpOm5vdCg6ZGlzYWJsZWQpJztcbmNvbnN0IFBMQUNFTUVOVF9UT1AgPSBpc1JUTCgpID8gJ3RvcC1lbmQnIDogJ3RvcC1zdGFydCc7XG5jb25zdCBQTEFDRU1FTlRfVE9QRU5EID0gaXNSVEwoKSA/ICd0b3Atc3RhcnQnIDogJ3RvcC1lbmQnO1xuY29uc3QgUExBQ0VNRU5UX0JPVFRPTSA9IGlzUlRMKCkgPyAnYm90dG9tLWVuZCcgOiAnYm90dG9tLXN0YXJ0JztcbmNvbnN0IFBMQUNFTUVOVF9CT1RUT01FTkQgPSBpc1JUTCgpID8gJ2JvdHRvbS1zdGFydCcgOiAnYm90dG9tLWVuZCc7XG5jb25zdCBQTEFDRU1FTlRfUklHSFQgPSBpc1JUTCgpID8gJ2xlZnQtc3RhcnQnIDogJ3JpZ2h0LXN0YXJ0JztcbmNvbnN0IFBMQUNFTUVOVF9MRUZUID0gaXNSVEwoKSA/ICdyaWdodC1zdGFydCcgOiAnbGVmdC1zdGFydCc7XG5jb25zdCBQTEFDRU1FTlRfVE9QQ0VOVEVSID0gJ3RvcCc7XG5jb25zdCBQTEFDRU1FTlRfQk9UVE9NQ0VOVEVSID0gJ2JvdHRvbSc7XG5jb25zdCBEZWZhdWx0JDkgPSB7XG4gIGF1dG9DbG9zZTogdHJ1ZSxcbiAgYm91bmRhcnk6ICdjbGlwcGluZ1BhcmVudHMnLFxuICBkaXNwbGF5OiAnZHluYW1pYycsXG4gIG9mZnNldDogWzAsIDJdLFxuICBwb3BwZXJDb25maWc6IG51bGwsXG4gIHJlZmVyZW5jZTogJ3RvZ2dsZSdcbn07XG5jb25zdCBEZWZhdWx0VHlwZSQ5ID0ge1xuICBhdXRvQ2xvc2U6ICcoYm9vbGVhbnxzdHJpbmcpJyxcbiAgYm91bmRhcnk6ICcoc3RyaW5nfGVsZW1lbnQpJyxcbiAgZGlzcGxheTogJ3N0cmluZycsXG4gIG9mZnNldDogJyhhcnJheXxzdHJpbmd8ZnVuY3Rpb24pJyxcbiAgcG9wcGVyQ29uZmlnOiAnKG51bGx8b2JqZWN0fGZ1bmN0aW9uKScsXG4gIHJlZmVyZW5jZTogJyhzdHJpbmd8ZWxlbWVudHxvYmplY3QpJ1xufTtcblxuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgRHJvcGRvd24gZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoZWxlbWVudCwgY29uZmlnKSB7XG4gICAgc3VwZXIoZWxlbWVudCwgY29uZmlnKTtcbiAgICB0aGlzLl9wb3BwZXIgPSBudWxsO1xuICAgIHRoaXMuX3BhcmVudCA9IHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZTsgLy8gZHJvcGRvd24gd3JhcHBlclxuICAgIC8vIFRPRE86IHY2IHJldmVydCAjMzcwMTEgJiBjaGFuZ2UgbWFya3VwIGh0dHBzOi8vZ2V0Ym9vdHN0cmFwLmNvbS9kb2NzLzUuMy9mb3Jtcy9pbnB1dC1ncm91cC9cbiAgICB0aGlzLl9tZW51ID0gU2VsZWN0b3JFbmdpbmUubmV4dCh0aGlzLl9lbGVtZW50LCBTRUxFQ1RPUl9NRU5VKVswXSB8fCBTZWxlY3RvckVuZ2luZS5wcmV2KHRoaXMuX2VsZW1lbnQsIFNFTEVDVE9SX01FTlUpWzBdIHx8IFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoU0VMRUNUT1JfTUVOVSwgdGhpcy5fcGFyZW50KTtcbiAgICB0aGlzLl9pbk5hdmJhciA9IHRoaXMuX2RldGVjdE5hdmJhcigpO1xuICB9XG5cbiAgLy8gR2V0dGVyc1xuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHQkOTtcbiAgfVxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiBEZWZhdWx0VHlwZSQ5O1xuICB9XG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRSRhO1xuICB9XG5cbiAgLy8gUHVibGljXG4gIHRvZ2dsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNTaG93bigpID8gdGhpcy5oaWRlKCkgOiB0aGlzLnNob3coKTtcbiAgfVxuICBzaG93KCkge1xuICAgIGlmIChpc0Rpc2FibGVkKHRoaXMuX2VsZW1lbnQpIHx8IHRoaXMuX2lzU2hvd24oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByZWxhdGVkVGFyZ2V0ID0ge1xuICAgICAgcmVsYXRlZFRhcmdldDogdGhpcy5fZWxlbWVudFxuICAgIH07XG4gICAgY29uc3Qgc2hvd0V2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfU0hPVyQ1LCByZWxhdGVkVGFyZ2V0KTtcbiAgICBpZiAoc2hvd0V2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fY3JlYXRlUG9wcGVyKCk7XG5cbiAgICAvLyBJZiB0aGlzIGlzIGEgdG91Y2gtZW5hYmxlZCBkZXZpY2Ugd2UgYWRkIGV4dHJhXG4gICAgLy8gZW1wdHkgbW91c2VvdmVyIGxpc3RlbmVycyB0byB0aGUgYm9keSdzIGltbWVkaWF0ZSBjaGlsZHJlbjtcbiAgICAvLyBvbmx5IG5lZWRlZCBiZWNhdXNlIG9mIGJyb2tlbiBldmVudCBkZWxlZ2F0aW9uIG9uIGlPU1xuICAgIC8vIGh0dHBzOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAxNC8wMi9tb3VzZV9ldmVudF9idWIuaHRtbFxuICAgIGlmICgnb250b3VjaHN0YXJ0JyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgJiYgIXRoaXMuX3BhcmVudC5jbG9zZXN0KFNFTEVDVE9SX05BVkJBUl9OQVYpKSB7XG4gICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgW10uY29uY2F0KC4uLmRvY3VtZW50LmJvZHkuY2hpbGRyZW4pKSB7XG4gICAgICAgIEV2ZW50SGFuZGxlci5vbihlbGVtZW50LCAnbW91c2VvdmVyJywgbm9vcCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2VsZW1lbnQuZm9jdXMoKTtcbiAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsIHRydWUpO1xuICAgIHRoaXMuX21lbnUuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX1NIT1ckNik7XG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfU0hPVyQ2KTtcbiAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9TSE9XTiQ1LCByZWxhdGVkVGFyZ2V0KTtcbiAgfVxuICBoaWRlKCkge1xuICAgIGlmIChpc0Rpc2FibGVkKHRoaXMuX2VsZW1lbnQpIHx8ICF0aGlzLl9pc1Nob3duKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmVsYXRlZFRhcmdldCA9IHtcbiAgICAgIHJlbGF0ZWRUYXJnZXQ6IHRoaXMuX2VsZW1lbnRcbiAgICB9O1xuICAgIHRoaXMuX2NvbXBsZXRlSGlkZShyZWxhdGVkVGFyZ2V0KTtcbiAgfVxuICBkaXNwb3NlKCkge1xuICAgIGlmICh0aGlzLl9wb3BwZXIpIHtcbiAgICAgIHRoaXMuX3BvcHBlci5kZXN0cm95KCk7XG4gICAgfVxuICAgIHN1cGVyLmRpc3Bvc2UoKTtcbiAgfVxuICB1cGRhdGUoKSB7XG4gICAgdGhpcy5faW5OYXZiYXIgPSB0aGlzLl9kZXRlY3ROYXZiYXIoKTtcbiAgICBpZiAodGhpcy5fcG9wcGVyKSB7XG4gICAgICB0aGlzLl9wb3BwZXIudXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUHJpdmF0ZVxuICBfY29tcGxldGVIaWRlKHJlbGF0ZWRUYXJnZXQpIHtcbiAgICBjb25zdCBoaWRlRXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURFJDUsIHJlbGF0ZWRUYXJnZXQpO1xuICAgIGlmIChoaWRlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIElmIHRoaXMgaXMgYSB0b3VjaC1lbmFibGVkIGRldmljZSB3ZSByZW1vdmUgdGhlIGV4dHJhXG4gICAgLy8gZW1wdHkgbW91c2VvdmVyIGxpc3RlbmVycyB3ZSBhZGRlZCBmb3IgaU9TIHN1cHBvcnRcbiAgICBpZiAoJ29udG91Y2hzdGFydCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgW10uY29uY2F0KC4uLmRvY3VtZW50LmJvZHkuY2hpbGRyZW4pKSB7XG4gICAgICAgIEV2ZW50SGFuZGxlci5vZmYoZWxlbWVudCwgJ21vdXNlb3ZlcicsIG5vb3ApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5fcG9wcGVyKSB7XG4gICAgICB0aGlzLl9wb3BwZXIuZGVzdHJveSgpO1xuICAgIH1cbiAgICB0aGlzLl9tZW51LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9TSE9XJDYpO1xuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX1NIT1ckNik7XG4gICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTtcbiAgICBNYW5pcHVsYXRvci5yZW1vdmVEYXRhQXR0cmlidXRlKHRoaXMuX21lbnUsICdwb3BwZXInKTtcbiAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURERU4kNSwgcmVsYXRlZFRhcmdldCk7XG4gIH1cbiAgX2dldENvbmZpZyhjb25maWcpIHtcbiAgICBjb25maWcgPSBzdXBlci5fZ2V0Q29uZmlnKGNvbmZpZyk7XG4gICAgaWYgKHR5cGVvZiBjb25maWcucmVmZXJlbmNlID09PSAnb2JqZWN0JyAmJiAhaXNFbGVtZW50KGNvbmZpZy5yZWZlcmVuY2UpICYmIHR5cGVvZiBjb25maWcucmVmZXJlbmNlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgLy8gUG9wcGVyIHZpcnR1YWwgZWxlbWVudHMgcmVxdWlyZSBhIGdldEJvdW5kaW5nQ2xpZW50UmVjdCBtZXRob2RcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYCR7TkFNRSRhLnRvVXBwZXJDYXNlKCl9OiBPcHRpb24gXCJyZWZlcmVuY2VcIiBwcm92aWRlZCB0eXBlIFwib2JqZWN0XCIgd2l0aG91dCBhIHJlcXVpcmVkIFwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0XCIgbWV0aG9kLmApO1xuICAgIH1cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG4gIF9jcmVhdGVQb3BwZXIoKSB7XG4gICAgaWYgKHR5cGVvZiBQb3BwZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCb290c3RyYXBcXCdzIGRyb3Bkb3ducyByZXF1aXJlIFBvcHBlciAoaHR0cHM6Ly9wb3BwZXIuanMub3JnL2RvY3MvdjIvKScpO1xuICAgIH1cbiAgICBsZXQgcmVmZXJlbmNlRWxlbWVudCA9IHRoaXMuX2VsZW1lbnQ7XG4gICAgaWYgKHRoaXMuX2NvbmZpZy5yZWZlcmVuY2UgPT09ICdwYXJlbnQnKSB7XG4gICAgICByZWZlcmVuY2VFbGVtZW50ID0gdGhpcy5fcGFyZW50O1xuICAgIH0gZWxzZSBpZiAoaXNFbGVtZW50KHRoaXMuX2NvbmZpZy5yZWZlcmVuY2UpKSB7XG4gICAgICByZWZlcmVuY2VFbGVtZW50ID0gZ2V0RWxlbWVudCh0aGlzLl9jb25maWcucmVmZXJlbmNlKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLl9jb25maWcucmVmZXJlbmNlID09PSAnb2JqZWN0Jykge1xuICAgICAgcmVmZXJlbmNlRWxlbWVudCA9IHRoaXMuX2NvbmZpZy5yZWZlcmVuY2U7XG4gICAgfVxuICAgIGNvbnN0IHBvcHBlckNvbmZpZyA9IHRoaXMuX2dldFBvcHBlckNvbmZpZygpO1xuICAgIHRoaXMuX3BvcHBlciA9IFBvcHBlci5jcmVhdGVQb3BwZXIocmVmZXJlbmNlRWxlbWVudCwgdGhpcy5fbWVudSwgcG9wcGVyQ29uZmlnKTtcbiAgfVxuICBfaXNTaG93bigpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVudS5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9TSE9XJDYpO1xuICB9XG4gIF9nZXRQbGFjZW1lbnQoKSB7XG4gICAgY29uc3QgcGFyZW50RHJvcGRvd24gPSB0aGlzLl9wYXJlbnQ7XG4gICAgaWYgKHBhcmVudERyb3Bkb3duLmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0RST1BFTkQpKSB7XG4gICAgICByZXR1cm4gUExBQ0VNRU5UX1JJR0hUO1xuICAgIH1cbiAgICBpZiAocGFyZW50RHJvcGRvd24uY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfRFJPUFNUQVJUKSkge1xuICAgICAgcmV0dXJuIFBMQUNFTUVOVF9MRUZUO1xuICAgIH1cbiAgICBpZiAocGFyZW50RHJvcGRvd24uY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfRFJPUFVQX0NFTlRFUikpIHtcbiAgICAgIHJldHVybiBQTEFDRU1FTlRfVE9QQ0VOVEVSO1xuICAgIH1cbiAgICBpZiAocGFyZW50RHJvcGRvd24uY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfRFJPUERPV05fQ0VOVEVSKSkge1xuICAgICAgcmV0dXJuIFBMQUNFTUVOVF9CT1RUT01DRU5URVI7XG4gICAgfVxuXG4gICAgLy8gV2UgbmVlZCB0byB0cmltIHRoZSB2YWx1ZSBiZWNhdXNlIGN1c3RvbSBwcm9wZXJ0aWVzIGNhbiBhbHNvIGluY2x1ZGUgc3BhY2VzXG4gICAgY29uc3QgaXNFbmQgPSBnZXRDb21wdXRlZFN0eWxlKHRoaXMuX21lbnUpLmdldFByb3BlcnR5VmFsdWUoJy0tYnMtcG9zaXRpb24nKS50cmltKCkgPT09ICdlbmQnO1xuICAgIGlmIChwYXJlbnREcm9wZG93bi5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9EUk9QVVApKSB7XG4gICAgICByZXR1cm4gaXNFbmQgPyBQTEFDRU1FTlRfVE9QRU5EIDogUExBQ0VNRU5UX1RPUDtcbiAgICB9XG4gICAgcmV0dXJuIGlzRW5kID8gUExBQ0VNRU5UX0JPVFRPTUVORCA6IFBMQUNFTUVOVF9CT1RUT007XG4gIH1cbiAgX2RldGVjdE5hdmJhcigpIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5jbG9zZXN0KFNFTEVDVE9SX05BVkJBUikgIT09IG51bGw7XG4gIH1cbiAgX2dldE9mZnNldCgpIHtcbiAgICBjb25zdCB7XG4gICAgICBvZmZzZXRcbiAgICB9ID0gdGhpcy5fY29uZmlnO1xuICAgIGlmICh0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIG9mZnNldC5zcGxpdCgnLCcpLm1hcCh2YWx1ZSA9PiBOdW1iZXIucGFyc2VJbnQodmFsdWUsIDEwKSk7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb2Zmc2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gcG9wcGVyRGF0YSA9PiBvZmZzZXQocG9wcGVyRGF0YSwgdGhpcy5fZWxlbWVudCk7XG4gICAgfVxuICAgIHJldHVybiBvZmZzZXQ7XG4gIH1cbiAgX2dldFBvcHBlckNvbmZpZygpIHtcbiAgICBjb25zdCBkZWZhdWx0QnNQb3BwZXJDb25maWcgPSB7XG4gICAgICBwbGFjZW1lbnQ6IHRoaXMuX2dldFBsYWNlbWVudCgpLFxuICAgICAgbW9kaWZpZXJzOiBbe1xuICAgICAgICBuYW1lOiAncHJldmVudE92ZXJmbG93JyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGJvdW5kYXJ5OiB0aGlzLl9jb25maWcuYm91bmRhcnlcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICBuYW1lOiAnb2Zmc2V0JyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIG9mZnNldDogdGhpcy5fZ2V0T2Zmc2V0KClcbiAgICAgICAgfVxuICAgICAgfV1cbiAgICB9O1xuXG4gICAgLy8gRGlzYWJsZSBQb3BwZXIgaWYgd2UgaGF2ZSBhIHN0YXRpYyBkaXNwbGF5IG9yIERyb3Bkb3duIGlzIGluIE5hdmJhclxuICAgIGlmICh0aGlzLl9pbk5hdmJhciB8fCB0aGlzLl9jb25maWcuZGlzcGxheSA9PT0gJ3N0YXRpYycpIHtcbiAgICAgIE1hbmlwdWxhdG9yLnNldERhdGFBdHRyaWJ1dGUodGhpcy5fbWVudSwgJ3BvcHBlcicsICdzdGF0aWMnKTsgLy8gVE9ETzogdjYgcmVtb3ZlXG4gICAgICBkZWZhdWx0QnNQb3BwZXJDb25maWcubW9kaWZpZXJzID0gW3tcbiAgICAgICAgbmFtZTogJ2FwcGx5U3R5bGVzJyxcbiAgICAgICAgZW5hYmxlZDogZmFsc2VcbiAgICAgIH1dO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgLi4uZGVmYXVsdEJzUG9wcGVyQ29uZmlnLFxuICAgICAgLi4uZXhlY3V0ZSh0aGlzLl9jb25maWcucG9wcGVyQ29uZmlnLCBbdW5kZWZpbmVkLCBkZWZhdWx0QnNQb3BwZXJDb25maWddKVxuICAgIH07XG4gIH1cbiAgX3NlbGVjdE1lbnVJdGVtKHtcbiAgICBrZXksXG4gICAgdGFyZ2V0XG4gIH0pIHtcbiAgICBjb25zdCBpdGVtcyA9IFNlbGVjdG9yRW5naW5lLmZpbmQoU0VMRUNUT1JfVklTSUJMRV9JVEVNUywgdGhpcy5fbWVudSkuZmlsdGVyKGVsZW1lbnQgPT4gaXNWaXNpYmxlKGVsZW1lbnQpKTtcbiAgICBpZiAoIWl0ZW1zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGlmIHRhcmdldCBpc24ndCBpbmNsdWRlZCBpbiBpdGVtcyAoZS5nLiB3aGVuIGV4cGFuZGluZyB0aGUgZHJvcGRvd24pXG4gICAgLy8gYWxsb3cgY3ljbGluZyB0byBnZXQgdGhlIGxhc3QgaXRlbSBpbiBjYXNlIGtleSBlcXVhbHMgQVJST1dfVVBfS0VZXG4gICAgZ2V0TmV4dEFjdGl2ZUVsZW1lbnQoaXRlbXMsIHRhcmdldCwga2V5ID09PSBBUlJPV19ET1dOX0tFWSQxLCAhaXRlbXMuaW5jbHVkZXModGFyZ2V0KSkuZm9jdXMoKTtcbiAgfVxuXG4gIC8vIFN0YXRpY1xuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IERyb3Bkb3duLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcywgY29uZmlnKTtcbiAgICAgIGlmICh0eXBlb2YgY29uZmlnICE9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIGRhdGFbY29uZmlnXSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkIFwiJHtjb25maWd9XCJgKTtcbiAgICAgIH1cbiAgICAgIGRhdGFbY29uZmlnXSgpO1xuICAgIH0pO1xuICB9XG4gIHN0YXRpYyBjbGVhck1lbnVzKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmJ1dHRvbiA9PT0gUklHSFRfTU9VU0VfQlVUVE9OIHx8IGV2ZW50LnR5cGUgPT09ICdrZXl1cCcgJiYgZXZlbnQua2V5ICE9PSBUQUJfS0VZJDEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgb3BlblRvZ2dsZXMgPSBTZWxlY3RvckVuZ2luZS5maW5kKFNFTEVDVE9SX0RBVEFfVE9HR0xFX1NIT1dOKTtcbiAgICBmb3IgKGNvbnN0IHRvZ2dsZSBvZiBvcGVuVG9nZ2xlcykge1xuICAgICAgY29uc3QgY29udGV4dCA9IERyb3Bkb3duLmdldEluc3RhbmNlKHRvZ2dsZSk7XG4gICAgICBpZiAoIWNvbnRleHQgfHwgY29udGV4dC5fY29uZmlnLmF1dG9DbG9zZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCBjb21wb3NlZFBhdGggPSBldmVudC5jb21wb3NlZFBhdGgoKTtcbiAgICAgIGNvbnN0IGlzTWVudVRhcmdldCA9IGNvbXBvc2VkUGF0aC5pbmNsdWRlcyhjb250ZXh0Ll9tZW51KTtcbiAgICAgIGlmIChjb21wb3NlZFBhdGguaW5jbHVkZXMoY29udGV4dC5fZWxlbWVudCkgfHwgY29udGV4dC5fY29uZmlnLmF1dG9DbG9zZSA9PT0gJ2luc2lkZScgJiYgIWlzTWVudVRhcmdldCB8fCBjb250ZXh0Ll9jb25maWcuYXV0b0Nsb3NlID09PSAnb3V0c2lkZScgJiYgaXNNZW51VGFyZ2V0KSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBUYWIgbmF2aWdhdGlvbiB0aHJvdWdoIHRoZSBkcm9wZG93biBtZW51IG9yIGV2ZW50cyBmcm9tIGNvbnRhaW5lZCBpbnB1dHMgc2hvdWxkbid0IGNsb3NlIHRoZSBtZW51XG4gICAgICBpZiAoY29udGV4dC5fbWVudS5jb250YWlucyhldmVudC50YXJnZXQpICYmIChldmVudC50eXBlID09PSAna2V5dXAnICYmIGV2ZW50LmtleSA9PT0gVEFCX0tFWSQxIHx8IC9pbnB1dHxzZWxlY3R8b3B0aW9ufHRleHRhcmVhfGZvcm0vaS50ZXN0KGV2ZW50LnRhcmdldC50YWdOYW1lKSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCByZWxhdGVkVGFyZ2V0ID0ge1xuICAgICAgICByZWxhdGVkVGFyZ2V0OiBjb250ZXh0Ll9lbGVtZW50XG4gICAgICB9O1xuICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdjbGljaycpIHtcbiAgICAgICAgcmVsYXRlZFRhcmdldC5jbGlja0V2ZW50ID0gZXZlbnQ7XG4gICAgICB9XG4gICAgICBjb250ZXh0Ll9jb21wbGV0ZUhpZGUocmVsYXRlZFRhcmdldCk7XG4gICAgfVxuICB9XG4gIHN0YXRpYyBkYXRhQXBpS2V5ZG93bkhhbmRsZXIoZXZlbnQpIHtcbiAgICAvLyBJZiBub3QgYW4gVVAgfCBET1dOIHwgRVNDQVBFIGtleSA9PiBub3QgYSBkcm9wZG93biBjb21tYW5kXG4gICAgLy8gSWYgaW5wdXQvdGV4dGFyZWEgJiYgaWYga2V5IGlzIG90aGVyIHRoYW4gRVNDQVBFID0+IG5vdCBhIGRyb3Bkb3duIGNvbW1hbmRcblxuICAgIGNvbnN0IGlzSW5wdXQgPSAvaW5wdXR8dGV4dGFyZWEvaS50ZXN0KGV2ZW50LnRhcmdldC50YWdOYW1lKTtcbiAgICBjb25zdCBpc0VzY2FwZUV2ZW50ID0gZXZlbnQua2V5ID09PSBFU0NBUEVfS0VZJDI7XG4gICAgY29uc3QgaXNVcE9yRG93bkV2ZW50ID0gW0FSUk9XX1VQX0tFWSQxLCBBUlJPV19ET1dOX0tFWSQxXS5pbmNsdWRlcyhldmVudC5rZXkpO1xuICAgIGlmICghaXNVcE9yRG93bkV2ZW50ICYmICFpc0VzY2FwZUV2ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpc0lucHV0ICYmICFpc0VzY2FwZUV2ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyBUT0RPOiB2NiByZXZlcnQgIzM3MDExICYgY2hhbmdlIG1hcmt1cCBodHRwczovL2dldGJvb3RzdHJhcC5jb20vZG9jcy81LjMvZm9ybXMvaW5wdXQtZ3JvdXAvXG4gICAgY29uc3QgZ2V0VG9nZ2xlQnV0dG9uID0gdGhpcy5tYXRjaGVzKFNFTEVDVE9SX0RBVEFfVE9HR0xFJDMpID8gdGhpcyA6IFNlbGVjdG9yRW5naW5lLnByZXYodGhpcywgU0VMRUNUT1JfREFUQV9UT0dHTEUkMylbMF0gfHwgU2VsZWN0b3JFbmdpbmUubmV4dCh0aGlzLCBTRUxFQ1RPUl9EQVRBX1RPR0dMRSQzKVswXSB8fCBTZWxlY3RvckVuZ2luZS5maW5kT25lKFNFTEVDVE9SX0RBVEFfVE9HR0xFJDMsIGV2ZW50LmRlbGVnYXRlVGFyZ2V0LnBhcmVudE5vZGUpO1xuICAgIGNvbnN0IGluc3RhbmNlID0gRHJvcGRvd24uZ2V0T3JDcmVhdGVJbnN0YW5jZShnZXRUb2dnbGVCdXR0b24pO1xuICAgIGlmIChpc1VwT3JEb3duRXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgaW5zdGFuY2Uuc2hvdygpO1xuICAgICAgaW5zdGFuY2UuX3NlbGVjdE1lbnVJdGVtKGV2ZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGluc3RhbmNlLl9pc1Nob3duKCkpIHtcbiAgICAgIC8vIGVsc2UgaXMgZXNjYXBlIGFuZCB3ZSBjaGVjayBpZiBpdCBpcyBzaG93blxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBpbnN0YW5jZS5oaWRlKCk7XG4gICAgICBnZXRUb2dnbGVCdXR0b24uZm9jdXMoKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfS0VZRE9XTl9EQVRBX0FQSSwgU0VMRUNUT1JfREFUQV9UT0dHTEUkMywgRHJvcGRvd24uZGF0YUFwaUtleWRvd25IYW5kbGVyKTtcbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfS0VZRE9XTl9EQVRBX0FQSSwgU0VMRUNUT1JfTUVOVSwgRHJvcGRvd24uZGF0YUFwaUtleWRvd25IYW5kbGVyKTtcbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfQ0xJQ0tfREFUQV9BUEkkMywgRHJvcGRvd24uY2xlYXJNZW51cyk7XG5FdmVudEhhbmRsZXIub24oZG9jdW1lbnQsIEVWRU5UX0tFWVVQX0RBVEFfQVBJLCBEcm9wZG93bi5jbGVhck1lbnVzKTtcbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfQ0xJQ0tfREFUQV9BUEkkMywgU0VMRUNUT1JfREFUQV9UT0dHTEUkMywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIERyb3Bkb3duLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcykudG9nZ2xlKCk7XG59KTtcblxuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5kZWZpbmVKUXVlcnlQbHVnaW4oRHJvcGRvd24pO1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgdXRpbC9iYWNrZHJvcC5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FJDkgPSAnYmFja2Ryb3AnO1xuY29uc3QgQ0xBU1NfTkFNRV9GQURFJDQgPSAnZmFkZSc7XG5jb25zdCBDTEFTU19OQU1FX1NIT1ckNSA9ICdzaG93JztcbmNvbnN0IEVWRU5UX01PVVNFRE9XTiA9IGBtb3VzZWRvd24uYnMuJHtOQU1FJDl9YDtcbmNvbnN0IERlZmF1bHQkOCA9IHtcbiAgY2xhc3NOYW1lOiAnbW9kYWwtYmFja2Ryb3AnLFxuICBjbGlja0NhbGxiYWNrOiBudWxsLFxuICBpc0FuaW1hdGVkOiBmYWxzZSxcbiAgaXNWaXNpYmxlOiB0cnVlLFxuICAvLyBpZiBmYWxzZSwgd2UgdXNlIHRoZSBiYWNrZHJvcCBoZWxwZXIgd2l0aG91dCBhZGRpbmcgYW55IGVsZW1lbnQgdG8gdGhlIGRvbVxuICByb290RWxlbWVudDogJ2JvZHknIC8vIGdpdmUgdGhlIGNob2ljZSB0byBwbGFjZSBiYWNrZHJvcCB1bmRlciBkaWZmZXJlbnQgZWxlbWVudHNcbn07XG5jb25zdCBEZWZhdWx0VHlwZSQ4ID0ge1xuICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICBjbGlja0NhbGxiYWNrOiAnKGZ1bmN0aW9ufG51bGwpJyxcbiAgaXNBbmltYXRlZDogJ2Jvb2xlYW4nLFxuICBpc1Zpc2libGU6ICdib29sZWFuJyxcbiAgcm9vdEVsZW1lbnQ6ICcoZWxlbWVudHxzdHJpbmcpJ1xufTtcblxuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgQmFja2Ryb3AgZXh0ZW5kcyBDb25maWcge1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX2NvbmZpZyA9IHRoaXMuX2dldENvbmZpZyhjb25maWcpO1xuICAgIHRoaXMuX2lzQXBwZW5kZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9lbGVtZW50ID0gbnVsbDtcbiAgfVxuXG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiBEZWZhdWx0JDg7XG4gIH1cbiAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFR5cGUkODtcbiAgfVxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUUkOTtcbiAgfVxuXG4gIC8vIFB1YmxpY1xuICBzaG93KGNhbGxiYWNrKSB7XG4gICAgaWYgKCF0aGlzLl9jb25maWcuaXNWaXNpYmxlKSB7XG4gICAgICBleGVjdXRlKGNhbGxiYWNrKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fYXBwZW5kKCk7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2dldEVsZW1lbnQoKTtcbiAgICBpZiAodGhpcy5fY29uZmlnLmlzQW5pbWF0ZWQpIHtcbiAgICAgIHJlZmxvdyhlbGVtZW50KTtcbiAgICB9XG4gICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfU0hPVyQ1KTtcbiAgICB0aGlzLl9lbXVsYXRlQW5pbWF0aW9uKCgpID0+IHtcbiAgICAgIGV4ZWN1dGUoY2FsbGJhY2spO1xuICAgIH0pO1xuICB9XG4gIGhpZGUoY2FsbGJhY2spIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5pc1Zpc2libGUpIHtcbiAgICAgIGV4ZWN1dGUoY2FsbGJhY2spO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9nZXRFbGVtZW50KCkuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX1NIT1ckNSk7XG4gICAgdGhpcy5fZW11bGF0ZUFuaW1hdGlvbigoKSA9PiB7XG4gICAgICB0aGlzLmRpc3Bvc2UoKTtcbiAgICAgIGV4ZWN1dGUoY2FsbGJhY2spO1xuICAgIH0pO1xuICB9XG4gIGRpc3Bvc2UoKSB7XG4gICAgaWYgKCF0aGlzLl9pc0FwcGVuZGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIEV2ZW50SGFuZGxlci5vZmYodGhpcy5fZWxlbWVudCwgRVZFTlRfTU9VU0VET1dOKTtcbiAgICB0aGlzLl9lbGVtZW50LnJlbW92ZSgpO1xuICAgIHRoaXMuX2lzQXBwZW5kZWQgPSBmYWxzZTtcbiAgfVxuXG4gIC8vIFByaXZhdGVcbiAgX2dldEVsZW1lbnQoKSB7XG4gICAgaWYgKCF0aGlzLl9lbGVtZW50KSB7XG4gICAgICBjb25zdCBiYWNrZHJvcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgYmFja2Ryb3AuY2xhc3NOYW1lID0gdGhpcy5fY29uZmlnLmNsYXNzTmFtZTtcbiAgICAgIGlmICh0aGlzLl9jb25maWcuaXNBbmltYXRlZCkge1xuICAgICAgICBiYWNrZHJvcC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfRkFERSQ0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2VsZW1lbnQgPSBiYWNrZHJvcDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7XG4gIH1cbiAgX2NvbmZpZ0FmdGVyTWVyZ2UoY29uZmlnKSB7XG4gICAgLy8gdXNlIGdldEVsZW1lbnQoKSB3aXRoIHRoZSBkZWZhdWx0IFwiYm9keVwiIHRvIGdldCBhIGZyZXNoIEVsZW1lbnQgb24gZWFjaCBpbnN0YW50aWF0aW9uXG4gICAgY29uZmlnLnJvb3RFbGVtZW50ID0gZ2V0RWxlbWVudChjb25maWcucm9vdEVsZW1lbnQpO1xuICAgIHJldHVybiBjb25maWc7XG4gIH1cbiAgX2FwcGVuZCgpIHtcbiAgICBpZiAodGhpcy5faXNBcHBlbmRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fZ2V0RWxlbWVudCgpO1xuICAgIHRoaXMuX2NvbmZpZy5yb290RWxlbWVudC5hcHBlbmQoZWxlbWVudCk7XG4gICAgRXZlbnRIYW5kbGVyLm9uKGVsZW1lbnQsIEVWRU5UX01PVVNFRE9XTiwgKCkgPT4ge1xuICAgICAgZXhlY3V0ZSh0aGlzLl9jb25maWcuY2xpY2tDYWxsYmFjayk7XG4gICAgfSk7XG4gICAgdGhpcy5faXNBcHBlbmRlZCA9IHRydWU7XG4gIH1cbiAgX2VtdWxhdGVBbmltYXRpb24oY2FsbGJhY2spIHtcbiAgICBleGVjdXRlQWZ0ZXJUcmFuc2l0aW9uKGNhbGxiYWNrLCB0aGlzLl9nZXRFbGVtZW50KCksIHRoaXMuX2NvbmZpZy5pc0FuaW1hdGVkKTtcbiAgfVxufVxuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgdXRpbC9mb2N1c3RyYXAuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSQ4ID0gJ2ZvY3VzdHJhcCc7XG5jb25zdCBEQVRBX0tFWSQ1ID0gJ2JzLmZvY3VzdHJhcCc7XG5jb25zdCBFVkVOVF9LRVkkNSA9IGAuJHtEQVRBX0tFWSQ1fWA7XG5jb25zdCBFVkVOVF9GT0NVU0lOJDIgPSBgZm9jdXNpbiR7RVZFTlRfS0VZJDV9YDtcbmNvbnN0IEVWRU5UX0tFWURPV05fVEFCID0gYGtleWRvd24udGFiJHtFVkVOVF9LRVkkNX1gO1xuY29uc3QgVEFCX0tFWSA9ICdUYWInO1xuY29uc3QgVEFCX05BVl9GT1JXQVJEID0gJ2ZvcndhcmQnO1xuY29uc3QgVEFCX05BVl9CQUNLV0FSRCA9ICdiYWNrd2FyZCc7XG5jb25zdCBEZWZhdWx0JDcgPSB7XG4gIGF1dG9mb2N1czogdHJ1ZSxcbiAgdHJhcEVsZW1lbnQ6IG51bGwgLy8gVGhlIGVsZW1lbnQgdG8gdHJhcCBmb2N1cyBpbnNpZGUgb2Zcbn07XG5jb25zdCBEZWZhdWx0VHlwZSQ3ID0ge1xuICBhdXRvZm9jdXM6ICdib29sZWFuJyxcbiAgdHJhcEVsZW1lbnQ6ICdlbGVtZW50J1xufTtcblxuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgRm9jdXNUcmFwIGV4dGVuZHMgQ29uZmlnIHtcbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9jb25maWcgPSB0aGlzLl9nZXRDb25maWcoY29uZmlnKTtcbiAgICB0aGlzLl9pc0FjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2xhc3RUYWJOYXZEaXJlY3Rpb24gPSBudWxsO1xuICB9XG5cbiAgLy8gR2V0dGVyc1xuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHQkNztcbiAgfVxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiBEZWZhdWx0VHlwZSQ3O1xuICB9XG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRSQ4O1xuICB9XG5cbiAgLy8gUHVibGljXG4gIGFjdGl2YXRlKCkge1xuICAgIGlmICh0aGlzLl9pc0FjdGl2ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5fY29uZmlnLmF1dG9mb2N1cykge1xuICAgICAgdGhpcy5fY29uZmlnLnRyYXBFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICAgIEV2ZW50SGFuZGxlci5vZmYoZG9jdW1lbnQsIEVWRU5UX0tFWSQ1KTsgLy8gZ3VhcmQgYWdhaW5zdCBpbmZpbml0ZSBmb2N1cyBsb29wXG4gICAgRXZlbnRIYW5kbGVyLm9uKGRvY3VtZW50LCBFVkVOVF9GT0NVU0lOJDIsIGV2ZW50ID0+IHRoaXMuX2hhbmRsZUZvY3VzaW4oZXZlbnQpKTtcbiAgICBFdmVudEhhbmRsZXIub24oZG9jdW1lbnQsIEVWRU5UX0tFWURPV05fVEFCLCBldmVudCA9PiB0aGlzLl9oYW5kbGVLZXlkb3duKGV2ZW50KSk7XG4gICAgdGhpcy5faXNBY3RpdmUgPSB0cnVlO1xuICB9XG4gIGRlYWN0aXZhdGUoKSB7XG4gICAgaWYgKCF0aGlzLl9pc0FjdGl2ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9pc0FjdGl2ZSA9IGZhbHNlO1xuICAgIEV2ZW50SGFuZGxlci5vZmYoZG9jdW1lbnQsIEVWRU5UX0tFWSQ1KTtcbiAgfVxuXG4gIC8vIFByaXZhdGVcbiAgX2hhbmRsZUZvY3VzaW4oZXZlbnQpIHtcbiAgICBjb25zdCB7XG4gICAgICB0cmFwRWxlbWVudFxuICAgIH0gPSB0aGlzLl9jb25maWc7XG4gICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gZG9jdW1lbnQgfHwgZXZlbnQudGFyZ2V0ID09PSB0cmFwRWxlbWVudCB8fCB0cmFwRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGVsZW1lbnRzID0gU2VsZWN0b3JFbmdpbmUuZm9jdXNhYmxlQ2hpbGRyZW4odHJhcEVsZW1lbnQpO1xuICAgIGlmIChlbGVtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRyYXBFbGVtZW50LmZvY3VzKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9sYXN0VGFiTmF2RGlyZWN0aW9uID09PSBUQUJfTkFWX0JBQ0tXQVJEKSB7XG4gICAgICBlbGVtZW50c1tlbGVtZW50cy5sZW5ndGggLSAxXS5mb2N1cygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVtZW50c1swXS5mb2N1cygpO1xuICAgIH1cbiAgfVxuICBfaGFuZGxlS2V5ZG93bihldmVudCkge1xuICAgIGlmIChldmVudC5rZXkgIT09IFRBQl9LRVkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fbGFzdFRhYk5hdkRpcmVjdGlvbiA9IGV2ZW50LnNoaWZ0S2V5ID8gVEFCX05BVl9CQUNLV0FSRCA6IFRBQl9OQVZfRk9SV0FSRDtcbiAgfVxufVxuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgdXRpbC9zY3JvbGxCYXIuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgU0VMRUNUT1JfRklYRURfQ09OVEVOVCA9ICcuZml4ZWQtdG9wLCAuZml4ZWQtYm90dG9tLCAuaXMtZml4ZWQsIC5zdGlja3ktdG9wJztcbmNvbnN0IFNFTEVDVE9SX1NUSUNLWV9DT05URU5UID0gJy5zdGlja3ktdG9wJztcbmNvbnN0IFBST1BFUlRZX1BBRERJTkcgPSAncGFkZGluZy1yaWdodCc7XG5jb25zdCBQUk9QRVJUWV9NQVJHSU4gPSAnbWFyZ2luLXJpZ2h0JztcblxuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgU2Nyb2xsQmFySGVscGVyIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmJvZHk7XG4gIH1cblxuICAvLyBQdWJsaWNcbiAgZ2V0V2lkdGgoKSB7XG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1dpbmRvdy9pbm5lcldpZHRoI3VzYWdlX25vdGVzXG4gICAgY29uc3QgZG9jdW1lbnRXaWR0aCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICByZXR1cm4gTWF0aC5hYnMod2luZG93LmlubmVyV2lkdGggLSBkb2N1bWVudFdpZHRoKTtcbiAgfVxuICBoaWRlKCkge1xuICAgIGNvbnN0IHdpZHRoID0gdGhpcy5nZXRXaWR0aCgpO1xuICAgIHRoaXMuX2Rpc2FibGVPdmVyRmxvdygpO1xuICAgIC8vIGdpdmUgcGFkZGluZyB0byBlbGVtZW50IHRvIGJhbGFuY2UgdGhlIGhpZGRlbiBzY3JvbGxiYXIgd2lkdGhcbiAgICB0aGlzLl9zZXRFbGVtZW50QXR0cmlidXRlcyh0aGlzLl9lbGVtZW50LCBQUk9QRVJUWV9QQURESU5HLCBjYWxjdWxhdGVkVmFsdWUgPT4gY2FsY3VsYXRlZFZhbHVlICsgd2lkdGgpO1xuICAgIC8vIHRyaWNrOiBXZSBhZGp1c3QgcG9zaXRpdmUgcGFkZGluZ1JpZ2h0IGFuZCBuZWdhdGl2ZSBtYXJnaW5SaWdodCB0byBzdGlja3ktdG9wIGVsZW1lbnRzIHRvIGtlZXAgc2hvd2luZyBmdWxsd2lkdGhcbiAgICB0aGlzLl9zZXRFbGVtZW50QXR0cmlidXRlcyhTRUxFQ1RPUl9GSVhFRF9DT05URU5ULCBQUk9QRVJUWV9QQURESU5HLCBjYWxjdWxhdGVkVmFsdWUgPT4gY2FsY3VsYXRlZFZhbHVlICsgd2lkdGgpO1xuICAgIHRoaXMuX3NldEVsZW1lbnRBdHRyaWJ1dGVzKFNFTEVDVE9SX1NUSUNLWV9DT05URU5ULCBQUk9QRVJUWV9NQVJHSU4sIGNhbGN1bGF0ZWRWYWx1ZSA9PiBjYWxjdWxhdGVkVmFsdWUgLSB3aWR0aCk7XG4gIH1cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5fcmVzZXRFbGVtZW50QXR0cmlidXRlcyh0aGlzLl9lbGVtZW50LCAnb3ZlcmZsb3cnKTtcbiAgICB0aGlzLl9yZXNldEVsZW1lbnRBdHRyaWJ1dGVzKHRoaXMuX2VsZW1lbnQsIFBST1BFUlRZX1BBRERJTkcpO1xuICAgIHRoaXMuX3Jlc2V0RWxlbWVudEF0dHJpYnV0ZXMoU0VMRUNUT1JfRklYRURfQ09OVEVOVCwgUFJPUEVSVFlfUEFERElORyk7XG4gICAgdGhpcy5fcmVzZXRFbGVtZW50QXR0cmlidXRlcyhTRUxFQ1RPUl9TVElDS1lfQ09OVEVOVCwgUFJPUEVSVFlfTUFSR0lOKTtcbiAgfVxuICBpc092ZXJmbG93aW5nKCkge1xuICAgIHJldHVybiB0aGlzLmdldFdpZHRoKCkgPiAwO1xuICB9XG5cbiAgLy8gUHJpdmF0ZVxuICBfZGlzYWJsZU92ZXJGbG93KCkge1xuICAgIHRoaXMuX3NhdmVJbml0aWFsQXR0cmlidXRlKHRoaXMuX2VsZW1lbnQsICdvdmVyZmxvdycpO1xuICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgfVxuICBfc2V0RWxlbWVudEF0dHJpYnV0ZXMoc2VsZWN0b3IsIHN0eWxlUHJvcGVydHksIGNhbGxiYWNrKSB7XG4gICAgY29uc3Qgc2Nyb2xsYmFyV2lkdGggPSB0aGlzLmdldFdpZHRoKCk7XG4gICAgY29uc3QgbWFuaXB1bGF0aW9uQ2FsbEJhY2sgPSBlbGVtZW50ID0+IHtcbiAgICAgIGlmIChlbGVtZW50ICE9PSB0aGlzLl9lbGVtZW50ICYmIHdpbmRvdy5pbm5lcldpZHRoID4gZWxlbWVudC5jbGllbnRXaWR0aCArIHNjcm9sbGJhcldpZHRoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3NhdmVJbml0aWFsQXR0cmlidXRlKGVsZW1lbnQsIHN0eWxlUHJvcGVydHkpO1xuICAgICAgY29uc3QgY2FsY3VsYXRlZFZhbHVlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZShzdHlsZVByb3BlcnR5KTtcbiAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoc3R5bGVQcm9wZXJ0eSwgYCR7Y2FsbGJhY2soTnVtYmVyLnBhcnNlRmxvYXQoY2FsY3VsYXRlZFZhbHVlKSl9cHhgKTtcbiAgICB9O1xuICAgIHRoaXMuX2FwcGx5TWFuaXB1bGF0aW9uQ2FsbGJhY2soc2VsZWN0b3IsIG1hbmlwdWxhdGlvbkNhbGxCYWNrKTtcbiAgfVxuICBfc2F2ZUluaXRpYWxBdHRyaWJ1dGUoZWxlbWVudCwgc3R5bGVQcm9wZXJ0eSkge1xuICAgIGNvbnN0IGFjdHVhbFZhbHVlID0gZWxlbWVudC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKHN0eWxlUHJvcGVydHkpO1xuICAgIGlmIChhY3R1YWxWYWx1ZSkge1xuICAgICAgTWFuaXB1bGF0b3Iuc2V0RGF0YUF0dHJpYnV0ZShlbGVtZW50LCBzdHlsZVByb3BlcnR5LCBhY3R1YWxWYWx1ZSk7XG4gICAgfVxuICB9XG4gIF9yZXNldEVsZW1lbnRBdHRyaWJ1dGVzKHNlbGVjdG9yLCBzdHlsZVByb3BlcnR5KSB7XG4gICAgY29uc3QgbWFuaXB1bGF0aW9uQ2FsbEJhY2sgPSBlbGVtZW50ID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gTWFuaXB1bGF0b3IuZ2V0RGF0YUF0dHJpYnV0ZShlbGVtZW50LCBzdHlsZVByb3BlcnR5KTtcbiAgICAgIC8vIFdlIG9ubHkgd2FudCB0byByZW1vdmUgdGhlIHByb3BlcnR5IGlmIHRoZSB2YWx1ZSBpcyBgbnVsbGA7IHRoZSB2YWx1ZSBjYW4gYWxzbyBiZSB6ZXJvXG4gICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShzdHlsZVByb3BlcnR5KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgTWFuaXB1bGF0b3IucmVtb3ZlRGF0YUF0dHJpYnV0ZShlbGVtZW50LCBzdHlsZVByb3BlcnR5KTtcbiAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoc3R5bGVQcm9wZXJ0eSwgdmFsdWUpO1xuICAgIH07XG4gICAgdGhpcy5fYXBwbHlNYW5pcHVsYXRpb25DYWxsYmFjayhzZWxlY3RvciwgbWFuaXB1bGF0aW9uQ2FsbEJhY2spO1xuICB9XG4gIF9hcHBseU1hbmlwdWxhdGlvbkNhbGxiYWNrKHNlbGVjdG9yLCBjYWxsQmFjaykge1xuICAgIGlmIChpc0VsZW1lbnQoc2VsZWN0b3IpKSB7XG4gICAgICBjYWxsQmFjayhzZWxlY3Rvcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAoY29uc3Qgc2VsIG9mIFNlbGVjdG9yRW5naW5lLmZpbmQoc2VsZWN0b3IsIHRoaXMuX2VsZW1lbnQpKSB7XG4gICAgICBjYWxsQmFjayhzZWwpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgbW9kYWwuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSQ3ID0gJ21vZGFsJztcbmNvbnN0IERBVEFfS0VZJDQgPSAnYnMubW9kYWwnO1xuY29uc3QgRVZFTlRfS0VZJDQgPSBgLiR7REFUQV9LRVkkNH1gO1xuY29uc3QgREFUQV9BUElfS0VZJDIgPSAnLmRhdGEtYXBpJztcbmNvbnN0IEVTQ0FQRV9LRVkkMSA9ICdFc2NhcGUnO1xuY29uc3QgRVZFTlRfSElERSQ0ID0gYGhpZGUke0VWRU5UX0tFWSQ0fWA7XG5jb25zdCBFVkVOVF9ISURFX1BSRVZFTlRFRCQxID0gYGhpZGVQcmV2ZW50ZWQke0VWRU5UX0tFWSQ0fWA7XG5jb25zdCBFVkVOVF9ISURERU4kNCA9IGBoaWRkZW4ke0VWRU5UX0tFWSQ0fWA7XG5jb25zdCBFVkVOVF9TSE9XJDQgPSBgc2hvdyR7RVZFTlRfS0VZJDR9YDtcbmNvbnN0IEVWRU5UX1NIT1dOJDQgPSBgc2hvd24ke0VWRU5UX0tFWSQ0fWA7XG5jb25zdCBFVkVOVF9SRVNJWkUkMSA9IGByZXNpemUke0VWRU5UX0tFWSQ0fWA7XG5jb25zdCBFVkVOVF9DTElDS19ESVNNSVNTID0gYGNsaWNrLmRpc21pc3Mke0VWRU5UX0tFWSQ0fWA7XG5jb25zdCBFVkVOVF9NT1VTRURPV05fRElTTUlTUyA9IGBtb3VzZWRvd24uZGlzbWlzcyR7RVZFTlRfS0VZJDR9YDtcbmNvbnN0IEVWRU5UX0tFWURPV05fRElTTUlTUyQxID0gYGtleWRvd24uZGlzbWlzcyR7RVZFTlRfS0VZJDR9YDtcbmNvbnN0IEVWRU5UX0NMSUNLX0RBVEFfQVBJJDIgPSBgY2xpY2ske0VWRU5UX0tFWSQ0fSR7REFUQV9BUElfS0VZJDJ9YDtcbmNvbnN0IENMQVNTX05BTUVfT1BFTiA9ICdtb2RhbC1vcGVuJztcbmNvbnN0IENMQVNTX05BTUVfRkFERSQzID0gJ2ZhZGUnO1xuY29uc3QgQ0xBU1NfTkFNRV9TSE9XJDQgPSAnc2hvdyc7XG5jb25zdCBDTEFTU19OQU1FX1NUQVRJQyA9ICdtb2RhbC1zdGF0aWMnO1xuY29uc3QgT1BFTl9TRUxFQ1RPUiQxID0gJy5tb2RhbC5zaG93JztcbmNvbnN0IFNFTEVDVE9SX0RJQUxPRyA9ICcubW9kYWwtZGlhbG9nJztcbmNvbnN0IFNFTEVDVE9SX01PREFMX0JPRFkgPSAnLm1vZGFsLWJvZHknO1xuY29uc3QgU0VMRUNUT1JfREFUQV9UT0dHTEUkMiA9ICdbZGF0YS1icy10b2dnbGU9XCJtb2RhbFwiXSc7XG5jb25zdCBEZWZhdWx0JDYgPSB7XG4gIGJhY2tkcm9wOiB0cnVlLFxuICBmb2N1czogdHJ1ZSxcbiAga2V5Ym9hcmQ6IHRydWVcbn07XG5jb25zdCBEZWZhdWx0VHlwZSQ2ID0ge1xuICBiYWNrZHJvcDogJyhib29sZWFufHN0cmluZyknLFxuICBmb2N1czogJ2Jvb2xlYW4nLFxuICBrZXlib2FyZDogJ2Jvb2xlYW4nXG59O1xuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBNb2RhbCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBjb25maWcpIHtcbiAgICBzdXBlcihlbGVtZW50LCBjb25maWcpO1xuICAgIHRoaXMuX2RpYWxvZyA9IFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoU0VMRUNUT1JfRElBTE9HLCB0aGlzLl9lbGVtZW50KTtcbiAgICB0aGlzLl9iYWNrZHJvcCA9IHRoaXMuX2luaXRpYWxpemVCYWNrRHJvcCgpO1xuICAgIHRoaXMuX2ZvY3VzdHJhcCA9IHRoaXMuX2luaXRpYWxpemVGb2N1c1RyYXAoKTtcbiAgICB0aGlzLl9pc1Nob3duID0gZmFsc2U7XG4gICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gZmFsc2U7XG4gICAgdGhpcy5fc2Nyb2xsQmFyID0gbmV3IFNjcm9sbEJhckhlbHBlcigpO1xuICAgIHRoaXMuX2FkZEV2ZW50TGlzdGVuZXJzKCk7XG4gIH1cblxuICAvLyBHZXR0ZXJzXG4gIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHtcbiAgICByZXR1cm4gRGVmYXVsdCQ2O1xuICB9XG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRUeXBlJDY7XG4gIH1cbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FJDc7XG4gIH1cblxuICAvLyBQdWJsaWNcbiAgdG9nZ2xlKHJlbGF0ZWRUYXJnZXQpIHtcbiAgICByZXR1cm4gdGhpcy5faXNTaG93biA/IHRoaXMuaGlkZSgpIDogdGhpcy5zaG93KHJlbGF0ZWRUYXJnZXQpO1xuICB9XG4gIHNob3cocmVsYXRlZFRhcmdldCkge1xuICAgIGlmICh0aGlzLl9pc1Nob3duIHx8IHRoaXMuX2lzVHJhbnNpdGlvbmluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzaG93RXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9TSE9XJDQsIHtcbiAgICAgIHJlbGF0ZWRUYXJnZXRcbiAgICB9KTtcbiAgICBpZiAoc2hvd0V2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5faXNTaG93biA9IHRydWU7XG4gICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gdHJ1ZTtcbiAgICB0aGlzLl9zY3JvbGxCYXIuaGlkZSgpO1xuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX09QRU4pO1xuICAgIHRoaXMuX2FkanVzdERpYWxvZygpO1xuICAgIHRoaXMuX2JhY2tkcm9wLnNob3coKCkgPT4gdGhpcy5fc2hvd0VsZW1lbnQocmVsYXRlZFRhcmdldCkpO1xuICB9XG4gIGhpZGUoKSB7XG4gICAgaWYgKCF0aGlzLl9pc1Nob3duIHx8IHRoaXMuX2lzVHJhbnNpdGlvbmluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBoaWRlRXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURFJDQpO1xuICAgIGlmIChoaWRlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9pc1Nob3duID0gZmFsc2U7XG4gICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gdHJ1ZTtcbiAgICB0aGlzLl9mb2N1c3RyYXAuZGVhY3RpdmF0ZSgpO1xuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX1NIT1ckNCk7XG4gICAgdGhpcy5fcXVldWVDYWxsYmFjaygoKSA9PiB0aGlzLl9oaWRlTW9kYWwoKSwgdGhpcy5fZWxlbWVudCwgdGhpcy5faXNBbmltYXRlZCgpKTtcbiAgfVxuICBkaXNwb3NlKCkge1xuICAgIEV2ZW50SGFuZGxlci5vZmYod2luZG93LCBFVkVOVF9LRVkkNCk7XG4gICAgRXZlbnRIYW5kbGVyLm9mZih0aGlzLl9kaWFsb2csIEVWRU5UX0tFWSQ0KTtcbiAgICB0aGlzLl9iYWNrZHJvcC5kaXNwb3NlKCk7XG4gICAgdGhpcy5fZm9jdXN0cmFwLmRlYWN0aXZhdGUoKTtcbiAgICBzdXBlci5kaXNwb3NlKCk7XG4gIH1cbiAgaGFuZGxlVXBkYXRlKCkge1xuICAgIHRoaXMuX2FkanVzdERpYWxvZygpO1xuICB9XG5cbiAgLy8gUHJpdmF0ZVxuICBfaW5pdGlhbGl6ZUJhY2tEcm9wKCkge1xuICAgIHJldHVybiBuZXcgQmFja2Ryb3Aoe1xuICAgICAgaXNWaXNpYmxlOiBCb29sZWFuKHRoaXMuX2NvbmZpZy5iYWNrZHJvcCksXG4gICAgICAvLyAnc3RhdGljJyBvcHRpb24gd2lsbCBiZSB0cmFuc2xhdGVkIHRvIHRydWUsIGFuZCBib29sZWFucyB3aWxsIGtlZXAgdGhlaXIgdmFsdWUsXG4gICAgICBpc0FuaW1hdGVkOiB0aGlzLl9pc0FuaW1hdGVkKClcbiAgICB9KTtcbiAgfVxuICBfaW5pdGlhbGl6ZUZvY3VzVHJhcCgpIHtcbiAgICByZXR1cm4gbmV3IEZvY3VzVHJhcCh7XG4gICAgICB0cmFwRWxlbWVudDogdGhpcy5fZWxlbWVudFxuICAgIH0pO1xuICB9XG4gIF9zaG93RWxlbWVudChyZWxhdGVkVGFyZ2V0KSB7XG4gICAgLy8gdHJ5IHRvIGFwcGVuZCBkeW5hbWljIG1vZGFsXG4gICAgaWYgKCFkb2N1bWVudC5ib2R5LmNvbnRhaW5zKHRoaXMuX2VsZW1lbnQpKSB7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZCh0aGlzLl9lbGVtZW50KTtcbiAgICB9XG4gICAgdGhpcy5fZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKTtcbiAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1tb2RhbCcsIHRydWUpO1xuICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCdyb2xlJywgJ2RpYWxvZycpO1xuICAgIHRoaXMuX2VsZW1lbnQuc2Nyb2xsVG9wID0gMDtcbiAgICBjb25zdCBtb2RhbEJvZHkgPSBTZWxlY3RvckVuZ2luZS5maW5kT25lKFNFTEVDVE9SX01PREFMX0JPRFksIHRoaXMuX2RpYWxvZyk7XG4gICAgaWYgKG1vZGFsQm9keSkge1xuICAgICAgbW9kYWxCb2R5LnNjcm9sbFRvcCA9IDA7XG4gICAgfVxuICAgIHJlZmxvdyh0aGlzLl9lbGVtZW50KTtcbiAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9TSE9XJDQpO1xuICAgIGNvbnN0IHRyYW5zaXRpb25Db21wbGV0ZSA9ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9jb25maWcuZm9jdXMpIHtcbiAgICAgICAgdGhpcy5fZm9jdXN0cmFwLmFjdGl2YXRlKCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9pc1RyYW5zaXRpb25pbmcgPSBmYWxzZTtcbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1NIT1dOJDQsIHtcbiAgICAgICAgcmVsYXRlZFRhcmdldFxuICAgICAgfSk7XG4gICAgfTtcbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKHRyYW5zaXRpb25Db21wbGV0ZSwgdGhpcy5fZGlhbG9nLCB0aGlzLl9pc0FuaW1hdGVkKCkpO1xuICB9XG4gIF9hZGRFdmVudExpc3RlbmVycygpIHtcbiAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfS0VZRE9XTl9ESVNNSVNTJDEsIGV2ZW50ID0+IHtcbiAgICAgIGlmIChldmVudC5rZXkgIT09IEVTQ0FQRV9LRVkkMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5fY29uZmlnLmtleWJvYXJkKSB7XG4gICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLl90cmlnZ2VyQmFja2Ryb3BUcmFuc2l0aW9uKCk7XG4gICAgfSk7XG4gICAgRXZlbnRIYW5kbGVyLm9uKHdpbmRvdywgRVZFTlRfUkVTSVpFJDEsICgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9pc1Nob3duICYmICF0aGlzLl9pc1RyYW5zaXRpb25pbmcpIHtcbiAgICAgICAgdGhpcy5fYWRqdXN0RGlhbG9nKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX01PVVNFRE9XTl9ESVNNSVNTLCBldmVudCA9PiB7XG4gICAgICAvLyBhIGJhZCB0cmljayB0byBzZWdyZWdhdGUgY2xpY2tzIHRoYXQgbWF5IHN0YXJ0IGluc2lkZSBkaWFsb2cgYnV0IGVuZCBvdXRzaWRlLCBhbmQgYXZvaWQgbGlzdGVuIHRvIHNjcm9sbGJhciBjbGlja3NcbiAgICAgIEV2ZW50SGFuZGxlci5vbmUodGhpcy5fZWxlbWVudCwgRVZFTlRfQ0xJQ0tfRElTTUlTUywgZXZlbnQyID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQgIT09IGV2ZW50LnRhcmdldCB8fCB0aGlzLl9lbGVtZW50ICE9PSBldmVudDIudGFyZ2V0KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9jb25maWcuYmFja2Ryb3AgPT09ICdzdGF0aWMnKSB7XG4gICAgICAgICAgdGhpcy5fdHJpZ2dlckJhY2tkcm9wVHJhbnNpdGlvbigpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fY29uZmlnLmJhY2tkcm9wKSB7XG4gICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIF9oaWRlTW9kYWwoKSB7XG4gICAgdGhpcy5fZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsIHRydWUpO1xuICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdhcmlhLW1vZGFsJyk7XG4gICAgdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ3JvbGUnKTtcbiAgICB0aGlzLl9pc1RyYW5zaXRpb25pbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9iYWNrZHJvcC5oaWRlKCgpID0+IHtcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX09QRU4pO1xuICAgICAgdGhpcy5fcmVzZXRBZGp1c3RtZW50cygpO1xuICAgICAgdGhpcy5fc2Nyb2xsQmFyLnJlc2V0KCk7XG4gICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURERU4kNCk7XG4gICAgfSk7XG4gIH1cbiAgX2lzQW5pbWF0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfRkFERSQzKTtcbiAgfVxuICBfdHJpZ2dlckJhY2tkcm9wVHJhbnNpdGlvbigpIHtcbiAgICBjb25zdCBoaWRlRXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURFX1BSRVZFTlRFRCQxKTtcbiAgICBpZiAoaGlkZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaXNNb2RhbE92ZXJmbG93aW5nID0gdGhpcy5fZWxlbWVudC5zY3JvbGxIZWlnaHQgPiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgIGNvbnN0IGluaXRpYWxPdmVyZmxvd1kgPSB0aGlzLl9lbGVtZW50LnN0eWxlLm92ZXJmbG93WTtcbiAgICAvLyByZXR1cm4gaWYgdGhlIGZvbGxvd2luZyBiYWNrZ3JvdW5kIHRyYW5zaXRpb24gaGFzbid0IHlldCBjb21wbGV0ZWRcbiAgICBpZiAoaW5pdGlhbE92ZXJmbG93WSA9PT0gJ2hpZGRlbicgfHwgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9TVEFUSUMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghaXNNb2RhbE92ZXJmbG93aW5nKSB7XG4gICAgICB0aGlzLl9lbGVtZW50LnN0eWxlLm92ZXJmbG93WSA9ICdoaWRkZW4nO1xuICAgIH1cbiAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9TVEFUSUMpO1xuICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU1RBVElDKTtcbiAgICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICB0aGlzLl9lbGVtZW50LnN0eWxlLm92ZXJmbG93WSA9IGluaXRpYWxPdmVyZmxvd1k7XG4gICAgICB9LCB0aGlzLl9kaWFsb2cpO1xuICAgIH0sIHRoaXMuX2RpYWxvZyk7XG4gICAgdGhpcy5fZWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgdXNlZCB0byBoYW5kbGUgb3ZlcmZsb3dpbmcgbW9kYWxzXG4gICAqL1xuXG4gIF9hZGp1c3REaWFsb2coKSB7XG4gICAgY29uc3QgaXNNb2RhbE92ZXJmbG93aW5nID0gdGhpcy5fZWxlbWVudC5zY3JvbGxIZWlnaHQgPiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgIGNvbnN0IHNjcm9sbGJhcldpZHRoID0gdGhpcy5fc2Nyb2xsQmFyLmdldFdpZHRoKCk7XG4gICAgY29uc3QgaXNCb2R5T3ZlcmZsb3dpbmcgPSBzY3JvbGxiYXJXaWR0aCA+IDA7XG4gICAgaWYgKGlzQm9keU92ZXJmbG93aW5nICYmICFpc01vZGFsT3ZlcmZsb3dpbmcpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gaXNSVEwoKSA/ICdwYWRkaW5nTGVmdCcgOiAncGFkZGluZ1JpZ2h0JztcbiAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGVbcHJvcGVydHldID0gYCR7c2Nyb2xsYmFyV2lkdGh9cHhgO1xuICAgIH1cbiAgICBpZiAoIWlzQm9keU92ZXJmbG93aW5nICYmIGlzTW9kYWxPdmVyZmxvd2luZykge1xuICAgICAgY29uc3QgcHJvcGVydHkgPSBpc1JUTCgpID8gJ3BhZGRpbmdSaWdodCcgOiAncGFkZGluZ0xlZnQnO1xuICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZVtwcm9wZXJ0eV0gPSBgJHtzY3JvbGxiYXJXaWR0aH1weGA7XG4gICAgfVxuICB9XG4gIF9yZXNldEFkanVzdG1lbnRzKCkge1xuICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUucGFkZGluZ0xlZnQgPSAnJztcbiAgICB0aGlzLl9lbGVtZW50LnN0eWxlLnBhZGRpbmdSaWdodCA9ICcnO1xuICB9XG5cbiAgLy8gU3RhdGljXG4gIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoY29uZmlnLCByZWxhdGVkVGFyZ2V0KSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkYXRhID0gTW9kYWwuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCBjb25maWcpO1xuICAgICAgaWYgKHR5cGVvZiBjb25maWcgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgZGF0YVtjb25maWddID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApO1xuICAgICAgfVxuICAgICAgZGF0YVtjb25maWddKHJlbGF0ZWRUYXJnZXQpO1xuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogRGF0YSBBUEkgaW1wbGVtZW50YXRpb25cbiAqL1xuXG5FdmVudEhhbmRsZXIub24oZG9jdW1lbnQsIEVWRU5UX0NMSUNLX0RBVEFfQVBJJDIsIFNFTEVDVE9SX0RBVEFfVE9HR0xFJDIsIGZ1bmN0aW9uIChldmVudCkge1xuICBjb25zdCB0YXJnZXQgPSBTZWxlY3RvckVuZ2luZS5nZXRFbGVtZW50RnJvbVNlbGVjdG9yKHRoaXMpO1xuICBpZiAoWydBJywgJ0FSRUEnXS5pbmNsdWRlcyh0aGlzLnRhZ05hbWUpKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuICBFdmVudEhhbmRsZXIub25lKHRhcmdldCwgRVZFTlRfU0hPVyQ0LCBzaG93RXZlbnQgPT4ge1xuICAgIGlmIChzaG93RXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgLy8gb25seSByZWdpc3RlciBmb2N1cyByZXN0b3JlciBpZiBtb2RhbCB3aWxsIGFjdHVhbGx5IGdldCBzaG93blxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBFdmVudEhhbmRsZXIub25lKHRhcmdldCwgRVZFTlRfSElEREVOJDQsICgpID0+IHtcbiAgICAgIGlmIChpc1Zpc2libGUodGhpcykpIHtcbiAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICAvLyBhdm9pZCBjb25mbGljdCB3aGVuIGNsaWNraW5nIG1vZGFsIHRvZ2dsZXIgd2hpbGUgYW5vdGhlciBvbmUgaXMgb3BlblxuICBjb25zdCBhbHJlYWR5T3BlbiA9IFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoT1BFTl9TRUxFQ1RPUiQxKTtcbiAgaWYgKGFscmVhZHlPcGVuKSB7XG4gICAgTW9kYWwuZ2V0SW5zdGFuY2UoYWxyZWFkeU9wZW4pLmhpZGUoKTtcbiAgfVxuICBjb25zdCBkYXRhID0gTW9kYWwuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0YXJnZXQpO1xuICBkYXRhLnRvZ2dsZSh0aGlzKTtcbn0pO1xuZW5hYmxlRGlzbWlzc1RyaWdnZXIoTW9kYWwpO1xuXG4vKipcbiAqIGpRdWVyeVxuICovXG5cbmRlZmluZUpRdWVyeVBsdWdpbihNb2RhbCk7XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCBvZmZjYW52YXMuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSQ2ID0gJ29mZmNhbnZhcyc7XG5jb25zdCBEQVRBX0tFWSQzID0gJ2JzLm9mZmNhbnZhcyc7XG5jb25zdCBFVkVOVF9LRVkkMyA9IGAuJHtEQVRBX0tFWSQzfWA7XG5jb25zdCBEQVRBX0FQSV9LRVkkMSA9ICcuZGF0YS1hcGknO1xuY29uc3QgRVZFTlRfTE9BRF9EQVRBX0FQSSQyID0gYGxvYWQke0VWRU5UX0tFWSQzfSR7REFUQV9BUElfS0VZJDF9YDtcbmNvbnN0IEVTQ0FQRV9LRVkgPSAnRXNjYXBlJztcbmNvbnN0IENMQVNTX05BTUVfU0hPVyQzID0gJ3Nob3cnO1xuY29uc3QgQ0xBU1NfTkFNRV9TSE9XSU5HJDEgPSAnc2hvd2luZyc7XG5jb25zdCBDTEFTU19OQU1FX0hJRElORyA9ICdoaWRpbmcnO1xuY29uc3QgQ0xBU1NfTkFNRV9CQUNLRFJPUCA9ICdvZmZjYW52YXMtYmFja2Ryb3AnO1xuY29uc3QgT1BFTl9TRUxFQ1RPUiA9ICcub2ZmY2FudmFzLnNob3cnO1xuY29uc3QgRVZFTlRfU0hPVyQzID0gYHNob3cke0VWRU5UX0tFWSQzfWA7XG5jb25zdCBFVkVOVF9TSE9XTiQzID0gYHNob3duJHtFVkVOVF9LRVkkM31gO1xuY29uc3QgRVZFTlRfSElERSQzID0gYGhpZGUke0VWRU5UX0tFWSQzfWA7XG5jb25zdCBFVkVOVF9ISURFX1BSRVZFTlRFRCA9IGBoaWRlUHJldmVudGVkJHtFVkVOVF9LRVkkM31gO1xuY29uc3QgRVZFTlRfSElEREVOJDMgPSBgaGlkZGVuJHtFVkVOVF9LRVkkM31gO1xuY29uc3QgRVZFTlRfUkVTSVpFID0gYHJlc2l6ZSR7RVZFTlRfS0VZJDN9YDtcbmNvbnN0IEVWRU5UX0NMSUNLX0RBVEFfQVBJJDEgPSBgY2xpY2ske0VWRU5UX0tFWSQzfSR7REFUQV9BUElfS0VZJDF9YDtcbmNvbnN0IEVWRU5UX0tFWURPV05fRElTTUlTUyA9IGBrZXlkb3duLmRpc21pc3Mke0VWRU5UX0tFWSQzfWA7XG5jb25zdCBTRUxFQ1RPUl9EQVRBX1RPR0dMRSQxID0gJ1tkYXRhLWJzLXRvZ2dsZT1cIm9mZmNhbnZhc1wiXSc7XG5jb25zdCBEZWZhdWx0JDUgPSB7XG4gIGJhY2tkcm9wOiB0cnVlLFxuICBrZXlib2FyZDogdHJ1ZSxcbiAgc2Nyb2xsOiBmYWxzZVxufTtcbmNvbnN0IERlZmF1bHRUeXBlJDUgPSB7XG4gIGJhY2tkcm9wOiAnKGJvb2xlYW58c3RyaW5nKScsXG4gIGtleWJvYXJkOiAnYm9vbGVhbicsXG4gIHNjcm9sbDogJ2Jvb2xlYW4nXG59O1xuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBPZmZjYW52YXMgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoZWxlbWVudCwgY29uZmlnKSB7XG4gICAgc3VwZXIoZWxlbWVudCwgY29uZmlnKTtcbiAgICB0aGlzLl9pc1Nob3duID0gZmFsc2U7XG4gICAgdGhpcy5fYmFja2Ryb3AgPSB0aGlzLl9pbml0aWFsaXplQmFja0Ryb3AoKTtcbiAgICB0aGlzLl9mb2N1c3RyYXAgPSB0aGlzLl9pbml0aWFsaXplRm9jdXNUcmFwKCk7XG4gICAgdGhpcy5fYWRkRXZlbnRMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiBEZWZhdWx0JDU7XG4gIH1cbiAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFR5cGUkNTtcbiAgfVxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUUkNjtcbiAgfVxuXG4gIC8vIFB1YmxpY1xuICB0b2dnbGUocmVsYXRlZFRhcmdldCkge1xuICAgIHJldHVybiB0aGlzLl9pc1Nob3duID8gdGhpcy5oaWRlKCkgOiB0aGlzLnNob3cocmVsYXRlZFRhcmdldCk7XG4gIH1cbiAgc2hvdyhyZWxhdGVkVGFyZ2V0KSB7XG4gICAgaWYgKHRoaXMuX2lzU2hvd24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2hvd0V2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfU0hPVyQzLCB7XG4gICAgICByZWxhdGVkVGFyZ2V0XG4gICAgfSk7XG4gICAgaWYgKHNob3dFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2lzU2hvd24gPSB0cnVlO1xuICAgIHRoaXMuX2JhY2tkcm9wLnNob3coKTtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5zY3JvbGwpIHtcbiAgICAgIG5ldyBTY3JvbGxCYXJIZWxwZXIoKS5oaWRlKCk7XG4gICAgfVxuICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLW1vZGFsJywgdHJ1ZSk7XG4gICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnZGlhbG9nJyk7XG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfU0hPV0lORyQxKTtcbiAgICBjb25zdCBjb21wbGV0ZUNhbGxCYWNrID0gKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9jb25maWcuc2Nyb2xsIHx8IHRoaXMuX2NvbmZpZy5iYWNrZHJvcCkge1xuICAgICAgICB0aGlzLl9mb2N1c3RyYXAuYWN0aXZhdGUoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX1NIT1ckMyk7XG4gICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9TSE9XSU5HJDEpO1xuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfU0hPV04kMywge1xuICAgICAgICByZWxhdGVkVGFyZ2V0XG4gICAgICB9KTtcbiAgICB9O1xuICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soY29tcGxldGVDYWxsQmFjaywgdGhpcy5fZWxlbWVudCwgdHJ1ZSk7XG4gIH1cbiAgaGlkZSgpIHtcbiAgICBpZiAoIXRoaXMuX2lzU2hvd24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaGlkZUV2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfSElERSQzKTtcbiAgICBpZiAoaGlkZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZm9jdXN0cmFwLmRlYWN0aXZhdGUoKTtcbiAgICB0aGlzLl9lbGVtZW50LmJsdXIoKTtcbiAgICB0aGlzLl9pc1Nob3duID0gZmFsc2U7XG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfSElESU5HKTtcbiAgICB0aGlzLl9iYWNrZHJvcC5oaWRlKCk7XG4gICAgY29uc3QgY29tcGxldGVDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX1NIT1ckMywgQ0xBU1NfTkFNRV9ISURJTkcpO1xuICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtbW9kYWwnKTtcbiAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdyb2xlJyk7XG4gICAgICBpZiAoIXRoaXMuX2NvbmZpZy5zY3JvbGwpIHtcbiAgICAgICAgbmV3IFNjcm9sbEJhckhlbHBlcigpLnJlc2V0KCk7XG4gICAgICB9XG4gICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURERU4kMyk7XG4gICAgfTtcbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlQ2FsbGJhY2ssIHRoaXMuX2VsZW1lbnQsIHRydWUpO1xuICB9XG4gIGRpc3Bvc2UoKSB7XG4gICAgdGhpcy5fYmFja2Ryb3AuZGlzcG9zZSgpO1xuICAgIHRoaXMuX2ZvY3VzdHJhcC5kZWFjdGl2YXRlKCk7XG4gICAgc3VwZXIuZGlzcG9zZSgpO1xuICB9XG5cbiAgLy8gUHJpdmF0ZVxuICBfaW5pdGlhbGl6ZUJhY2tEcm9wKCkge1xuICAgIGNvbnN0IGNsaWNrQ2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fY29uZmlnLmJhY2tkcm9wID09PSAnc3RhdGljJykge1xuICAgICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURFX1BSRVZFTlRFRCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH07XG5cbiAgICAvLyAnc3RhdGljJyBvcHRpb24gd2lsbCBiZSB0cmFuc2xhdGVkIHRvIHRydWUsIGFuZCBib29sZWFucyB3aWxsIGtlZXAgdGhlaXIgdmFsdWVcbiAgICBjb25zdCBpc1Zpc2libGUgPSBCb29sZWFuKHRoaXMuX2NvbmZpZy5iYWNrZHJvcCk7XG4gICAgcmV0dXJuIG5ldyBCYWNrZHJvcCh7XG4gICAgICBjbGFzc05hbWU6IENMQVNTX05BTUVfQkFDS0RST1AsXG4gICAgICBpc1Zpc2libGUsXG4gICAgICBpc0FuaW1hdGVkOiB0cnVlLFxuICAgICAgcm9vdEVsZW1lbnQ6IHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZSxcbiAgICAgIGNsaWNrQ2FsbGJhY2s6IGlzVmlzaWJsZSA/IGNsaWNrQ2FsbGJhY2sgOiBudWxsXG4gICAgfSk7XG4gIH1cbiAgX2luaXRpYWxpemVGb2N1c1RyYXAoKSB7XG4gICAgcmV0dXJuIG5ldyBGb2N1c1RyYXAoe1xuICAgICAgdHJhcEVsZW1lbnQ6IHRoaXMuX2VsZW1lbnRcbiAgICB9KTtcbiAgfVxuICBfYWRkRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0tFWURPV05fRElTTUlTUywgZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50LmtleSAhPT0gRVNDQVBFX0tFWSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5fY29uZmlnLmtleWJvYXJkKSB7XG4gICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURFX1BSRVZFTlRFRCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBTdGF0aWNcbiAgc3RhdGljIGpRdWVyeUludGVyZmFjZShjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBPZmZjYW52YXMuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCBjb25maWcpO1xuICAgICAgaWYgKHR5cGVvZiBjb25maWcgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChkYXRhW2NvbmZpZ10gPT09IHVuZGVmaW5lZCB8fCBjb25maWcuc3RhcnRzV2l0aCgnXycpIHx8IGNvbmZpZyA9PT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApO1xuICAgICAgfVxuICAgICAgZGF0YVtjb25maWddKHRoaXMpO1xuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogRGF0YSBBUEkgaW1wbGVtZW50YXRpb25cbiAqL1xuXG5FdmVudEhhbmRsZXIub24oZG9jdW1lbnQsIEVWRU5UX0NMSUNLX0RBVEFfQVBJJDEsIFNFTEVDVE9SX0RBVEFfVE9HR0xFJDEsIGZ1bmN0aW9uIChldmVudCkge1xuICBjb25zdCB0YXJnZXQgPSBTZWxlY3RvckVuZ2luZS5nZXRFbGVtZW50RnJvbVNlbGVjdG9yKHRoaXMpO1xuICBpZiAoWydBJywgJ0FSRUEnXS5pbmNsdWRlcyh0aGlzLnRhZ05hbWUpKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuICBpZiAoaXNEaXNhYmxlZCh0aGlzKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBFdmVudEhhbmRsZXIub25lKHRhcmdldCwgRVZFTlRfSElEREVOJDMsICgpID0+IHtcbiAgICAvLyBmb2N1cyBvbiB0cmlnZ2VyIHdoZW4gaXQgaXMgY2xvc2VkXG4gICAgaWYgKGlzVmlzaWJsZSh0aGlzKSkge1xuICAgICAgdGhpcy5mb2N1cygpO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gYXZvaWQgY29uZmxpY3Qgd2hlbiBjbGlja2luZyBhIHRvZ2dsZXIgb2YgYW4gb2ZmY2FudmFzLCB3aGlsZSBhbm90aGVyIGlzIG9wZW5cbiAgY29uc3QgYWxyZWFkeU9wZW4gPSBTZWxlY3RvckVuZ2luZS5maW5kT25lKE9QRU5fU0VMRUNUT1IpO1xuICBpZiAoYWxyZWFkeU9wZW4gJiYgYWxyZWFkeU9wZW4gIT09IHRhcmdldCkge1xuICAgIE9mZmNhbnZhcy5nZXRJbnN0YW5jZShhbHJlYWR5T3BlbikuaGlkZSgpO1xuICB9XG4gIGNvbnN0IGRhdGEgPSBPZmZjYW52YXMuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0YXJnZXQpO1xuICBkYXRhLnRvZ2dsZSh0aGlzKTtcbn0pO1xuRXZlbnRIYW5kbGVyLm9uKHdpbmRvdywgRVZFTlRfTE9BRF9EQVRBX0FQSSQyLCAoKSA9PiB7XG4gIGZvciAoY29uc3Qgc2VsZWN0b3Igb2YgU2VsZWN0b3JFbmdpbmUuZmluZChPUEVOX1NFTEVDVE9SKSkge1xuICAgIE9mZmNhbnZhcy5nZXRPckNyZWF0ZUluc3RhbmNlKHNlbGVjdG9yKS5zaG93KCk7XG4gIH1cbn0pO1xuRXZlbnRIYW5kbGVyLm9uKHdpbmRvdywgRVZFTlRfUkVTSVpFLCAoKSA9PiB7XG4gIGZvciAoY29uc3QgZWxlbWVudCBvZiBTZWxlY3RvckVuZ2luZS5maW5kKCdbYXJpYS1tb2RhbF1bY2xhc3MqPXNob3ddW2NsYXNzKj1vZmZjYW52YXMtXScpKSB7XG4gICAgaWYgKGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gIT09ICdmaXhlZCcpIHtcbiAgICAgIE9mZmNhbnZhcy5nZXRPckNyZWF0ZUluc3RhbmNlKGVsZW1lbnQpLmhpZGUoKTtcbiAgICB9XG4gIH1cbn0pO1xuZW5hYmxlRGlzbWlzc1RyaWdnZXIoT2ZmY2FudmFzKTtcblxuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5kZWZpbmVKUXVlcnlQbHVnaW4oT2ZmY2FudmFzKTtcblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwIHV0aWwvc2FuaXRpemVyLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuLy8ganMtZG9jcy1zdGFydCBhbGxvdy1saXN0XG5jb25zdCBBUklBX0FUVFJJQlVURV9QQVRURVJOID0gL15hcmlhLVtcXHctXSokL2k7XG5jb25zdCBEZWZhdWx0QWxsb3dsaXN0ID0ge1xuICAvLyBHbG9iYWwgYXR0cmlidXRlcyBhbGxvd2VkIG9uIGFueSBzdXBwbGllZCBlbGVtZW50IGJlbG93LlxuICAnKic6IFsnY2xhc3MnLCAnZGlyJywgJ2lkJywgJ2xhbmcnLCAncm9sZScsIEFSSUFfQVRUUklCVVRFX1BBVFRFUk5dLFxuICBhOiBbJ3RhcmdldCcsICdocmVmJywgJ3RpdGxlJywgJ3JlbCddLFxuICBhcmVhOiBbXSxcbiAgYjogW10sXG4gIGJyOiBbXSxcbiAgY29sOiBbXSxcbiAgY29kZTogW10sXG4gIGRkOiBbXSxcbiAgZGl2OiBbXSxcbiAgZGw6IFtdLFxuICBkdDogW10sXG4gIGVtOiBbXSxcbiAgaHI6IFtdLFxuICBoMTogW10sXG4gIGgyOiBbXSxcbiAgaDM6IFtdLFxuICBoNDogW10sXG4gIGg1OiBbXSxcbiAgaDY6IFtdLFxuICBpOiBbXSxcbiAgaW1nOiBbJ3NyYycsICdzcmNzZXQnLCAnYWx0JywgJ3RpdGxlJywgJ3dpZHRoJywgJ2hlaWdodCddLFxuICBsaTogW10sXG4gIG9sOiBbXSxcbiAgcDogW10sXG4gIHByZTogW10sXG4gIHM6IFtdLFxuICBzbWFsbDogW10sXG4gIHNwYW46IFtdLFxuICBzdWI6IFtdLFxuICBzdXA6IFtdLFxuICBzdHJvbmc6IFtdLFxuICB1OiBbXSxcbiAgdWw6IFtdXG59O1xuLy8ganMtZG9jcy1lbmQgYWxsb3ctbGlzdFxuXG5jb25zdCB1cmlBdHRyaWJ1dGVzID0gbmV3IFNldChbJ2JhY2tncm91bmQnLCAnY2l0ZScsICdocmVmJywgJ2l0ZW10eXBlJywgJ2xvbmdkZXNjJywgJ3Bvc3RlcicsICdzcmMnLCAneGxpbms6aHJlZiddKTtcblxuLyoqXG4gKiBBIHBhdHRlcm4gdGhhdCByZWNvZ25pemVzIFVSTHMgdGhhdCBhcmUgc2FmZSB3cnQuIFhTUyBpbiBVUkwgbmF2aWdhdGlvblxuICogY29udGV4dHMuXG4gKlxuICogU2hvdXQtb3V0IHRvIEFuZ3VsYXIgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzE1LjIuOC9wYWNrYWdlcy9jb3JlL3NyYy9zYW5pdGl6YXRpb24vdXJsX3Nhbml0aXplci50cyNMMzhcbiAqL1xuY29uc3QgU0FGRV9VUkxfUEFUVEVSTiA9IC9eKD8hamF2YXNjcmlwdDopKD86W2EtejAtOSsuLV0rOnxbXiY6Lz8jXSooPzpbLz8jXXwkKSkvaTtcbmNvbnN0IGFsbG93ZWRBdHRyaWJ1dGUgPSAoYXR0cmlidXRlLCBhbGxvd2VkQXR0cmlidXRlTGlzdCkgPT4ge1xuICBjb25zdCBhdHRyaWJ1dGVOYW1lID0gYXR0cmlidXRlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChhbGxvd2VkQXR0cmlidXRlTGlzdC5pbmNsdWRlcyhhdHRyaWJ1dGVOYW1lKSkge1xuICAgIGlmICh1cmlBdHRyaWJ1dGVzLmhhcyhhdHRyaWJ1dGVOYW1lKSkge1xuICAgICAgcmV0dXJuIEJvb2xlYW4oU0FGRV9VUkxfUEFUVEVSTi50ZXN0KGF0dHJpYnV0ZS5ub2RlVmFsdWUpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBDaGVjayBpZiBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB2YWxpZGF0ZXMgdGhlIGF0dHJpYnV0ZS5cbiAgcmV0dXJuIGFsbG93ZWRBdHRyaWJ1dGVMaXN0LmZpbHRlcihhdHRyaWJ1dGVSZWdleCA9PiBhdHRyaWJ1dGVSZWdleCBpbnN0YW5jZW9mIFJlZ0V4cCkuc29tZShyZWdleCA9PiByZWdleC50ZXN0KGF0dHJpYnV0ZU5hbWUpKTtcbn07XG5mdW5jdGlvbiBzYW5pdGl6ZUh0bWwodW5zYWZlSHRtbCwgYWxsb3dMaXN0LCBzYW5pdGl6ZUZ1bmN0aW9uKSB7XG4gIGlmICghdW5zYWZlSHRtbC5sZW5ndGgpIHtcbiAgICByZXR1cm4gdW5zYWZlSHRtbDtcbiAgfVxuICBpZiAoc2FuaXRpemVGdW5jdGlvbiAmJiB0eXBlb2Ygc2FuaXRpemVGdW5jdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBzYW5pdGl6ZUZ1bmN0aW9uKHVuc2FmZUh0bWwpO1xuICB9XG4gIGNvbnN0IGRvbVBhcnNlciA9IG5ldyB3aW5kb3cuRE9NUGFyc2VyKCk7XG4gIGNvbnN0IGNyZWF0ZWREb2N1bWVudCA9IGRvbVBhcnNlci5wYXJzZUZyb21TdHJpbmcodW5zYWZlSHRtbCwgJ3RleHQvaHRtbCcpO1xuICBjb25zdCBlbGVtZW50cyA9IFtdLmNvbmNhdCguLi5jcmVhdGVkRG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCcqJykpO1xuICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgZWxlbWVudHMpIHtcbiAgICBjb25zdCBlbGVtZW50TmFtZSA9IGVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoIU9iamVjdC5rZXlzKGFsbG93TGlzdCkuaW5jbHVkZXMoZWxlbWVudE5hbWUpKSB7XG4gICAgICBlbGVtZW50LnJlbW92ZSgpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IGF0dHJpYnV0ZUxpc3QgPSBbXS5jb25jYXQoLi4uZWxlbWVudC5hdHRyaWJ1dGVzKTtcbiAgICBjb25zdCBhbGxvd2VkQXR0cmlidXRlcyA9IFtdLmNvbmNhdChhbGxvd0xpc3RbJyonXSB8fCBbXSwgYWxsb3dMaXN0W2VsZW1lbnROYW1lXSB8fCBbXSk7XG4gICAgZm9yIChjb25zdCBhdHRyaWJ1dGUgb2YgYXR0cmlidXRlTGlzdCkge1xuICAgICAgaWYgKCFhbGxvd2VkQXR0cmlidXRlKGF0dHJpYnV0ZSwgYWxsb3dlZEF0dHJpYnV0ZXMpKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZS5ub2RlTmFtZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBjcmVhdGVkRG9jdW1lbnQuYm9keS5pbm5lckhUTUw7XG59XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCB1dGlsL3RlbXBsYXRlLWZhY3RvcnkuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSQ1ID0gJ1RlbXBsYXRlRmFjdG9yeSc7XG5jb25zdCBEZWZhdWx0JDQgPSB7XG4gIGFsbG93TGlzdDogRGVmYXVsdEFsbG93bGlzdCxcbiAgY29udGVudDoge30sXG4gIC8vIHsgc2VsZWN0b3IgOiB0ZXh0ICwgIHNlbGVjdG9yMiA6IHRleHQyICwgfVxuICBleHRyYUNsYXNzOiAnJyxcbiAgaHRtbDogZmFsc2UsXG4gIHNhbml0aXplOiB0cnVlLFxuICBzYW5pdGl6ZUZuOiBudWxsLFxuICB0ZW1wbGF0ZTogJzxkaXY+PC9kaXY+J1xufTtcbmNvbnN0IERlZmF1bHRUeXBlJDQgPSB7XG4gIGFsbG93TGlzdDogJ29iamVjdCcsXG4gIGNvbnRlbnQ6ICdvYmplY3QnLFxuICBleHRyYUNsYXNzOiAnKHN0cmluZ3xmdW5jdGlvbiknLFxuICBodG1sOiAnYm9vbGVhbicsXG4gIHNhbml0aXplOiAnYm9vbGVhbicsXG4gIHNhbml0aXplRm46ICcobnVsbHxmdW5jdGlvbiknLFxuICB0ZW1wbGF0ZTogJ3N0cmluZydcbn07XG5jb25zdCBEZWZhdWx0Q29udGVudFR5cGUgPSB7XG4gIGVudHJ5OiAnKHN0cmluZ3xlbGVtZW50fGZ1bmN0aW9ufG51bGwpJyxcbiAgc2VsZWN0b3I6ICcoc3RyaW5nfGVsZW1lbnQpJ1xufTtcblxuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgVGVtcGxhdGVGYWN0b3J5IGV4dGVuZHMgQ29uZmlnIHtcbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9jb25maWcgPSB0aGlzLl9nZXRDb25maWcoY29uZmlnKTtcbiAgfVxuXG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiBEZWZhdWx0JDQ7XG4gIH1cbiAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFR5cGUkNDtcbiAgfVxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUUkNTtcbiAgfVxuXG4gIC8vIFB1YmxpY1xuICBnZXRDb250ZW50KCkge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMuX2NvbmZpZy5jb250ZW50KS5tYXAoY29uZmlnID0+IHRoaXMuX3Jlc29sdmVQb3NzaWJsZUZ1bmN0aW9uKGNvbmZpZykpLmZpbHRlcihCb29sZWFuKTtcbiAgfVxuICBoYXNDb250ZW50KCkge1xuICAgIHJldHVybiB0aGlzLmdldENvbnRlbnQoKS5sZW5ndGggPiAwO1xuICB9XG4gIGNoYW5nZUNvbnRlbnQoY29udGVudCkge1xuICAgIHRoaXMuX2NoZWNrQ29udGVudChjb250ZW50KTtcbiAgICB0aGlzLl9jb25maWcuY29udGVudCA9IHtcbiAgICAgIC4uLnRoaXMuX2NvbmZpZy5jb250ZW50LFxuICAgICAgLi4uY29udGVudFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgdG9IdG1sKCkge1xuICAgIGNvbnN0IHRlbXBsYXRlV3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRlbXBsYXRlV3JhcHBlci5pbm5lckhUTUwgPSB0aGlzLl9tYXliZVNhbml0aXplKHRoaXMuX2NvbmZpZy50ZW1wbGF0ZSk7XG4gICAgZm9yIChjb25zdCBbc2VsZWN0b3IsIHRleHRdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuX2NvbmZpZy5jb250ZW50KSkge1xuICAgICAgdGhpcy5fc2V0Q29udGVudCh0ZW1wbGF0ZVdyYXBwZXIsIHRleHQsIHNlbGVjdG9yKTtcbiAgICB9XG4gICAgY29uc3QgdGVtcGxhdGUgPSB0ZW1wbGF0ZVdyYXBwZXIuY2hpbGRyZW5bMF07XG4gICAgY29uc3QgZXh0cmFDbGFzcyA9IHRoaXMuX3Jlc29sdmVQb3NzaWJsZUZ1bmN0aW9uKHRoaXMuX2NvbmZpZy5leHRyYUNsYXNzKTtcbiAgICBpZiAoZXh0cmFDbGFzcykge1xuICAgICAgdGVtcGxhdGUuY2xhc3NMaXN0LmFkZCguLi5leHRyYUNsYXNzLnNwbGl0KCcgJykpO1xuICAgIH1cbiAgICByZXR1cm4gdGVtcGxhdGU7XG4gIH1cblxuICAvLyBQcml2YXRlXG4gIF90eXBlQ2hlY2tDb25maWcoY29uZmlnKSB7XG4gICAgc3VwZXIuX3R5cGVDaGVja0NvbmZpZyhjb25maWcpO1xuICAgIHRoaXMuX2NoZWNrQ29udGVudChjb25maWcuY29udGVudCk7XG4gIH1cbiAgX2NoZWNrQ29udGVudChhcmcpIHtcbiAgICBmb3IgKGNvbnN0IFtzZWxlY3RvciwgY29udGVudF0gb2YgT2JqZWN0LmVudHJpZXMoYXJnKSkge1xuICAgICAgc3VwZXIuX3R5cGVDaGVja0NvbmZpZyh7XG4gICAgICAgIHNlbGVjdG9yLFxuICAgICAgICBlbnRyeTogY29udGVudFxuICAgICAgfSwgRGVmYXVsdENvbnRlbnRUeXBlKTtcbiAgICB9XG4gIH1cbiAgX3NldENvbnRlbnQodGVtcGxhdGUsIGNvbnRlbnQsIHNlbGVjdG9yKSB7XG4gICAgY29uc3QgdGVtcGxhdGVFbGVtZW50ID0gU2VsZWN0b3JFbmdpbmUuZmluZE9uZShzZWxlY3RvciwgdGVtcGxhdGUpO1xuICAgIGlmICghdGVtcGxhdGVFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnRlbnQgPSB0aGlzLl9yZXNvbHZlUG9zc2libGVGdW5jdGlvbihjb250ZW50KTtcbiAgICBpZiAoIWNvbnRlbnQpIHtcbiAgICAgIHRlbXBsYXRlRWxlbWVudC5yZW1vdmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGlzRWxlbWVudChjb250ZW50KSkge1xuICAgICAgdGhpcy5fcHV0RWxlbWVudEluVGVtcGxhdGUoZ2V0RWxlbWVudChjb250ZW50KSwgdGVtcGxhdGVFbGVtZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2NvbmZpZy5odG1sKSB7XG4gICAgICB0ZW1wbGF0ZUVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5fbWF5YmVTYW5pdGl6ZShjb250ZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGVtcGxhdGVFbGVtZW50LnRleHRDb250ZW50ID0gY29udGVudDtcbiAgfVxuICBfbWF5YmVTYW5pdGl6ZShhcmcpIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnLnNhbml0aXplID8gc2FuaXRpemVIdG1sKGFyZywgdGhpcy5fY29uZmlnLmFsbG93TGlzdCwgdGhpcy5fY29uZmlnLnNhbml0aXplRm4pIDogYXJnO1xuICB9XG4gIF9yZXNvbHZlUG9zc2libGVGdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gZXhlY3V0ZShhcmcsIFt1bmRlZmluZWQsIHRoaXNdKTtcbiAgfVxuICBfcHV0RWxlbWVudEluVGVtcGxhdGUoZWxlbWVudCwgdGVtcGxhdGVFbGVtZW50KSB7XG4gICAgaWYgKHRoaXMuX2NvbmZpZy5odG1sKSB7XG4gICAgICB0ZW1wbGF0ZUVsZW1lbnQuaW5uZXJIVE1MID0gJyc7XG4gICAgICB0ZW1wbGF0ZUVsZW1lbnQuYXBwZW5kKGVsZW1lbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0ZW1wbGF0ZUVsZW1lbnQudGV4dENvbnRlbnQgPSBlbGVtZW50LnRleHRDb250ZW50O1xuICB9XG59XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCB0b29sdGlwLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IE5BTUUkNCA9ICd0b29sdGlwJztcbmNvbnN0IERJU0FMTE9XRURfQVRUUklCVVRFUyA9IG5ldyBTZXQoWydzYW5pdGl6ZScsICdhbGxvd0xpc3QnLCAnc2FuaXRpemVGbiddKTtcbmNvbnN0IENMQVNTX05BTUVfRkFERSQyID0gJ2ZhZGUnO1xuY29uc3QgQ0xBU1NfTkFNRV9NT0RBTCA9ICdtb2RhbCc7XG5jb25zdCBDTEFTU19OQU1FX1NIT1ckMiA9ICdzaG93JztcbmNvbnN0IFNFTEVDVE9SX1RPT0xUSVBfSU5ORVIgPSAnLnRvb2x0aXAtaW5uZXInO1xuY29uc3QgU0VMRUNUT1JfTU9EQUwgPSBgLiR7Q0xBU1NfTkFNRV9NT0RBTH1gO1xuY29uc3QgRVZFTlRfTU9EQUxfSElERSA9ICdoaWRlLmJzLm1vZGFsJztcbmNvbnN0IFRSSUdHRVJfSE9WRVIgPSAnaG92ZXInO1xuY29uc3QgVFJJR0dFUl9GT0NVUyA9ICdmb2N1cyc7XG5jb25zdCBUUklHR0VSX0NMSUNLID0gJ2NsaWNrJztcbmNvbnN0IFRSSUdHRVJfTUFOVUFMID0gJ21hbnVhbCc7XG5jb25zdCBFVkVOVF9ISURFJDIgPSAnaGlkZSc7XG5jb25zdCBFVkVOVF9ISURERU4kMiA9ICdoaWRkZW4nO1xuY29uc3QgRVZFTlRfU0hPVyQyID0gJ3Nob3cnO1xuY29uc3QgRVZFTlRfU0hPV04kMiA9ICdzaG93bic7XG5jb25zdCBFVkVOVF9JTlNFUlRFRCA9ICdpbnNlcnRlZCc7XG5jb25zdCBFVkVOVF9DTElDSyQxID0gJ2NsaWNrJztcbmNvbnN0IEVWRU5UX0ZPQ1VTSU4kMSA9ICdmb2N1c2luJztcbmNvbnN0IEVWRU5UX0ZPQ1VTT1VUJDEgPSAnZm9jdXNvdXQnO1xuY29uc3QgRVZFTlRfTU9VU0VFTlRFUiA9ICdtb3VzZWVudGVyJztcbmNvbnN0IEVWRU5UX01PVVNFTEVBVkUgPSAnbW91c2VsZWF2ZSc7XG5jb25zdCBBdHRhY2htZW50TWFwID0ge1xuICBBVVRPOiAnYXV0bycsXG4gIFRPUDogJ3RvcCcsXG4gIFJJR0hUOiBpc1JUTCgpID8gJ2xlZnQnIDogJ3JpZ2h0JyxcbiAgQk9UVE9NOiAnYm90dG9tJyxcbiAgTEVGVDogaXNSVEwoKSA/ICdyaWdodCcgOiAnbGVmdCdcbn07XG5jb25zdCBEZWZhdWx0JDMgPSB7XG4gIGFsbG93TGlzdDogRGVmYXVsdEFsbG93bGlzdCxcbiAgYW5pbWF0aW9uOiB0cnVlLFxuICBib3VuZGFyeTogJ2NsaXBwaW5nUGFyZW50cycsXG4gIGNvbnRhaW5lcjogZmFsc2UsXG4gIGN1c3RvbUNsYXNzOiAnJyxcbiAgZGVsYXk6IDAsXG4gIGZhbGxiYWNrUGxhY2VtZW50czogWyd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXSxcbiAgaHRtbDogZmFsc2UsXG4gIG9mZnNldDogWzAsIDZdLFxuICBwbGFjZW1lbnQ6ICd0b3AnLFxuICBwb3BwZXJDb25maWc6IG51bGwsXG4gIHNhbml0aXplOiB0cnVlLFxuICBzYW5pdGl6ZUZuOiBudWxsLFxuICBzZWxlY3RvcjogZmFsc2UsXG4gIHRlbXBsYXRlOiAnPGRpdiBjbGFzcz1cInRvb2x0aXBcIiByb2xlPVwidG9vbHRpcFwiPicgKyAnPGRpdiBjbGFzcz1cInRvb2x0aXAtYXJyb3dcIj48L2Rpdj4nICsgJzxkaXYgY2xhc3M9XCJ0b29sdGlwLWlubmVyXCI+PC9kaXY+JyArICc8L2Rpdj4nLFxuICB0aXRsZTogJycsXG4gIHRyaWdnZXI6ICdob3ZlciBmb2N1cydcbn07XG5jb25zdCBEZWZhdWx0VHlwZSQzID0ge1xuICBhbGxvd0xpc3Q6ICdvYmplY3QnLFxuICBhbmltYXRpb246ICdib29sZWFuJyxcbiAgYm91bmRhcnk6ICcoc3RyaW5nfGVsZW1lbnQpJyxcbiAgY29udGFpbmVyOiAnKHN0cmluZ3xlbGVtZW50fGJvb2xlYW4pJyxcbiAgY3VzdG9tQ2xhc3M6ICcoc3RyaW5nfGZ1bmN0aW9uKScsXG4gIGRlbGF5OiAnKG51bWJlcnxvYmplY3QpJyxcbiAgZmFsbGJhY2tQbGFjZW1lbnRzOiAnYXJyYXknLFxuICBodG1sOiAnYm9vbGVhbicsXG4gIG9mZnNldDogJyhhcnJheXxzdHJpbmd8ZnVuY3Rpb24pJyxcbiAgcGxhY2VtZW50OiAnKHN0cmluZ3xmdW5jdGlvbiknLFxuICBwb3BwZXJDb25maWc6ICcobnVsbHxvYmplY3R8ZnVuY3Rpb24pJyxcbiAgc2FuaXRpemU6ICdib29sZWFuJyxcbiAgc2FuaXRpemVGbjogJyhudWxsfGZ1bmN0aW9uKScsXG4gIHNlbGVjdG9yOiAnKHN0cmluZ3xib29sZWFuKScsXG4gIHRlbXBsYXRlOiAnc3RyaW5nJyxcbiAgdGl0bGU6ICcoc3RyaW5nfGVsZW1lbnR8ZnVuY3Rpb24pJyxcbiAgdHJpZ2dlcjogJ3N0cmluZydcbn07XG5cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIFRvb2x0aXAgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoZWxlbWVudCwgY29uZmlnKSB7XG4gICAgaWYgKHR5cGVvZiBQb3BwZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCb290c3RyYXBcXCdzIHRvb2x0aXBzIHJlcXVpcmUgUG9wcGVyIChodHRwczovL3BvcHBlci5qcy5vcmcvZG9jcy92Mi8pJyk7XG4gICAgfVxuICAgIHN1cGVyKGVsZW1lbnQsIGNvbmZpZyk7XG5cbiAgICAvLyBQcml2YXRlXG4gICAgdGhpcy5faXNFbmFibGVkID0gdHJ1ZTtcbiAgICB0aGlzLl90aW1lb3V0ID0gMDtcbiAgICB0aGlzLl9pc0hvdmVyZWQgPSBudWxsO1xuICAgIHRoaXMuX2FjdGl2ZVRyaWdnZXIgPSB7fTtcbiAgICB0aGlzLl9wb3BwZXIgPSBudWxsO1xuICAgIHRoaXMuX3RlbXBsYXRlRmFjdG9yeSA9IG51bGw7XG4gICAgdGhpcy5fbmV3Q29udGVudCA9IG51bGw7XG5cbiAgICAvLyBQcm90ZWN0ZWRcbiAgICB0aGlzLnRpcCA9IG51bGw7XG4gICAgdGhpcy5fc2V0TGlzdGVuZXJzKCk7XG4gICAgaWYgKCF0aGlzLl9jb25maWcuc2VsZWN0b3IpIHtcbiAgICAgIHRoaXMuX2ZpeFRpdGxlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gR2V0dGVyc1xuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHQkMztcbiAgfVxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiBEZWZhdWx0VHlwZSQzO1xuICB9XG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRSQ0O1xuICB9XG5cbiAgLy8gUHVibGljXG4gIGVuYWJsZSgpIHtcbiAgICB0aGlzLl9pc0VuYWJsZWQgPSB0cnVlO1xuICB9XG4gIGRpc2FibGUoKSB7XG4gICAgdGhpcy5faXNFbmFibGVkID0gZmFsc2U7XG4gIH1cbiAgdG9nZ2xlRW5hYmxlZCgpIHtcbiAgICB0aGlzLl9pc0VuYWJsZWQgPSAhdGhpcy5faXNFbmFibGVkO1xuICB9XG4gIHRvZ2dsZSgpIHtcbiAgICBpZiAoIXRoaXMuX2lzRW5hYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5faXNTaG93bigpKSB7XG4gICAgICB0aGlzLl9sZWF2ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9lbnRlcigpO1xuICB9XG4gIGRpc3Bvc2UoKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVvdXQpO1xuICAgIEV2ZW50SGFuZGxlci5vZmYodGhpcy5fZWxlbWVudC5jbG9zZXN0KFNFTEVDVE9SX01PREFMKSwgRVZFTlRfTU9EQUxfSElERSwgdGhpcy5faGlkZU1vZGFsSGFuZGxlcik7XG4gICAgaWYgKHRoaXMuX2VsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLWJzLW9yaWdpbmFsLXRpdGxlJykpIHtcbiAgICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCd0aXRsZScsIHRoaXMuX2VsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLWJzLW9yaWdpbmFsLXRpdGxlJykpO1xuICAgIH1cbiAgICB0aGlzLl9kaXNwb3NlUG9wcGVyKCk7XG4gICAgc3VwZXIuZGlzcG9zZSgpO1xuICB9XG4gIHNob3coKSB7XG4gICAgaWYgKHRoaXMuX2VsZW1lbnQuc3R5bGUuZGlzcGxheSA9PT0gJ25vbmUnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsZWFzZSB1c2Ugc2hvdyBvbiB2aXNpYmxlIGVsZW1lbnRzJyk7XG4gICAgfVxuICAgIGlmICghKHRoaXMuX2lzV2l0aENvbnRlbnQoKSAmJiB0aGlzLl9pc0VuYWJsZWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHNob3dFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIHRoaXMuY29uc3RydWN0b3IuZXZlbnROYW1lKEVWRU5UX1NIT1ckMikpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSBmaW5kU2hhZG93Um9vdCh0aGlzLl9lbGVtZW50KTtcbiAgICBjb25zdCBpc0luVGhlRG9tID0gKHNoYWRvd1Jvb3QgfHwgdGhpcy5fZWxlbWVudC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuY29udGFpbnModGhpcy5fZWxlbWVudCk7XG4gICAgaWYgKHNob3dFdmVudC5kZWZhdWx0UHJldmVudGVkIHx8ICFpc0luVGhlRG9tKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVE9ETzogdjYgcmVtb3ZlIHRoaXMgb3IgbWFrZSBpdCBvcHRpb25hbFxuICAgIHRoaXMuX2Rpc3Bvc2VQb3BwZXIoKTtcbiAgICBjb25zdCB0aXAgPSB0aGlzLl9nZXRUaXBFbGVtZW50KCk7XG4gICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknLCB0aXAuZ2V0QXR0cmlidXRlKCdpZCcpKTtcbiAgICBjb25zdCB7XG4gICAgICBjb250YWluZXJcbiAgICB9ID0gdGhpcy5fY29uZmlnO1xuICAgIGlmICghdGhpcy5fZWxlbWVudC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jb250YWlucyh0aGlzLnRpcCkpIHtcbiAgICAgIGNvbnRhaW5lci5hcHBlbmQodGlwKTtcbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIHRoaXMuY29uc3RydWN0b3IuZXZlbnROYW1lKEVWRU5UX0lOU0VSVEVEKSk7XG4gICAgfVxuICAgIHRoaXMuX3BvcHBlciA9IHRoaXMuX2NyZWF0ZVBvcHBlcih0aXApO1xuICAgIHRpcC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfU0hPVyQyKTtcblxuICAgIC8vIElmIHRoaXMgaXMgYSB0b3VjaC1lbmFibGVkIGRldmljZSB3ZSBhZGQgZXh0cmFcbiAgICAvLyBlbXB0eSBtb3VzZW92ZXIgbGlzdGVuZXJzIHRvIHRoZSBib2R5J3MgaW1tZWRpYXRlIGNoaWxkcmVuO1xuICAgIC8vIG9ubHkgbmVlZGVkIGJlY2F1c2Ugb2YgYnJva2VuIGV2ZW50IGRlbGVnYXRpb24gb24gaU9TXG4gICAgLy8gaHR0cHM6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDE0LzAyL21vdXNlX2V2ZW50X2J1Yi5odG1sXG4gICAgaWYgKCdvbnRvdWNoc3RhcnQnIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkge1xuICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIFtdLmNvbmNhdCguLi5kb2N1bWVudC5ib2R5LmNoaWxkcmVuKSkge1xuICAgICAgICBFdmVudEhhbmRsZXIub24oZWxlbWVudCwgJ21vdXNlb3ZlcicsIG5vb3ApO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBjb21wbGV0ZSA9ICgpID0+IHtcbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIHRoaXMuY29uc3RydWN0b3IuZXZlbnROYW1lKEVWRU5UX1NIT1dOJDIpKTtcbiAgICAgIGlmICh0aGlzLl9pc0hvdmVyZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuX2xlYXZlKCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9pc0hvdmVyZWQgPSBmYWxzZTtcbiAgICB9O1xuICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soY29tcGxldGUsIHRoaXMudGlwLCB0aGlzLl9pc0FuaW1hdGVkKCkpO1xuICB9XG4gIGhpZGUoKSB7XG4gICAgaWYgKCF0aGlzLl9pc1Nob3duKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaGlkZUV2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoRVZFTlRfSElERSQyKSk7XG4gICAgaWYgKGhpZGVFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRpcCA9IHRoaXMuX2dldFRpcEVsZW1lbnQoKTtcbiAgICB0aXAuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX1NIT1ckMik7XG5cbiAgICAvLyBJZiB0aGlzIGlzIGEgdG91Y2gtZW5hYmxlZCBkZXZpY2Ugd2UgcmVtb3ZlIHRoZSBleHRyYVxuICAgIC8vIGVtcHR5IG1vdXNlb3ZlciBsaXN0ZW5lcnMgd2UgYWRkZWQgZm9yIGlPUyBzdXBwb3J0XG4gICAgaWYgKCdvbnRvdWNoc3RhcnQnIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkge1xuICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIFtdLmNvbmNhdCguLi5kb2N1bWVudC5ib2R5LmNoaWxkcmVuKSkge1xuICAgICAgICBFdmVudEhhbmRsZXIub2ZmKGVsZW1lbnQsICdtb3VzZW92ZXInLCBub29wKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fYWN0aXZlVHJpZ2dlcltUUklHR0VSX0NMSUNLXSA9IGZhbHNlO1xuICAgIHRoaXMuX2FjdGl2ZVRyaWdnZXJbVFJJR0dFUl9GT0NVU10gPSBmYWxzZTtcbiAgICB0aGlzLl9hY3RpdmVUcmlnZ2VyW1RSSUdHRVJfSE9WRVJdID0gZmFsc2U7XG4gICAgdGhpcy5faXNIb3ZlcmVkID0gbnVsbDsgLy8gaXQgaXMgYSB0cmljayB0byBzdXBwb3J0IG1hbnVhbCB0cmlnZ2VyaW5nXG5cbiAgICBjb25zdCBjb21wbGV0ZSA9ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9pc1dpdGhBY3RpdmVUcmlnZ2VyKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLl9pc0hvdmVyZWQpIHtcbiAgICAgICAgdGhpcy5fZGlzcG9zZVBvcHBlcigpO1xuICAgICAgfVxuICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknKTtcbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIHRoaXMuY29uc3RydWN0b3IuZXZlbnROYW1lKEVWRU5UX0hJRERFTiQyKSk7XG4gICAgfTtcbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlLCB0aGlzLnRpcCwgdGhpcy5faXNBbmltYXRlZCgpKTtcbiAgfVxuICB1cGRhdGUoKSB7XG4gICAgaWYgKHRoaXMuX3BvcHBlcikge1xuICAgICAgdGhpcy5fcG9wcGVyLnVwZGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFByb3RlY3RlZFxuICBfaXNXaXRoQ29udGVudCgpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLl9nZXRUaXRsZSgpKTtcbiAgfVxuICBfZ2V0VGlwRWxlbWVudCgpIHtcbiAgICBpZiAoIXRoaXMudGlwKSB7XG4gICAgICB0aGlzLnRpcCA9IHRoaXMuX2NyZWF0ZVRpcEVsZW1lbnQodGhpcy5fbmV3Q29udGVudCB8fCB0aGlzLl9nZXRDb250ZW50Rm9yVGVtcGxhdGUoKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRpcDtcbiAgfVxuICBfY3JlYXRlVGlwRWxlbWVudChjb250ZW50KSB7XG4gICAgY29uc3QgdGlwID0gdGhpcy5fZ2V0VGVtcGxhdGVGYWN0b3J5KGNvbnRlbnQpLnRvSHRtbCgpO1xuXG4gICAgLy8gVE9ETzogcmVtb3ZlIHRoaXMgY2hlY2sgaW4gdjZcbiAgICBpZiAoIXRpcCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHRpcC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfRkFERSQyLCBDTEFTU19OQU1FX1NIT1ckMik7XG4gICAgLy8gVE9ETzogdjYgdGhlIGZvbGxvd2luZyBjYW4gYmUgYWNoaWV2ZWQgd2l0aCBDU1Mgb25seVxuICAgIHRpcC5jbGFzc0xpc3QuYWRkKGBicy0ke3RoaXMuY29uc3RydWN0b3IuTkFNRX0tYXV0b2ApO1xuICAgIGNvbnN0IHRpcElkID0gZ2V0VUlEKHRoaXMuY29uc3RydWN0b3IuTkFNRSkudG9TdHJpbmcoKTtcbiAgICB0aXAuc2V0QXR0cmlidXRlKCdpZCcsIHRpcElkKTtcbiAgICBpZiAodGhpcy5faXNBbmltYXRlZCgpKSB7XG4gICAgICB0aXAuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0ZBREUkMik7XG4gICAgfVxuICAgIHJldHVybiB0aXA7XG4gIH1cbiAgc2V0Q29udGVudChjb250ZW50KSB7XG4gICAgdGhpcy5fbmV3Q29udGVudCA9IGNvbnRlbnQ7XG4gICAgaWYgKHRoaXMuX2lzU2hvd24oKSkge1xuICAgICAgdGhpcy5fZGlzcG9zZVBvcHBlcigpO1xuICAgICAgdGhpcy5zaG93KCk7XG4gICAgfVxuICB9XG4gIF9nZXRUZW1wbGF0ZUZhY3RvcnkoY29udGVudCkge1xuICAgIGlmICh0aGlzLl90ZW1wbGF0ZUZhY3RvcnkpIHtcbiAgICAgIHRoaXMuX3RlbXBsYXRlRmFjdG9yeS5jaGFuZ2VDb250ZW50KGNvbnRlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl90ZW1wbGF0ZUZhY3RvcnkgPSBuZXcgVGVtcGxhdGVGYWN0b3J5KHtcbiAgICAgICAgLi4udGhpcy5fY29uZmlnLFxuICAgICAgICAvLyB0aGUgYGNvbnRlbnRgIHZhciBoYXMgdG8gYmUgYWZ0ZXIgYHRoaXMuX2NvbmZpZ2BcbiAgICAgICAgLy8gdG8gb3ZlcnJpZGUgY29uZmlnLmNvbnRlbnQgaW4gY2FzZSBvZiBwb3BvdmVyXG4gICAgICAgIGNvbnRlbnQsXG4gICAgICAgIGV4dHJhQ2xhc3M6IHRoaXMuX3Jlc29sdmVQb3NzaWJsZUZ1bmN0aW9uKHRoaXMuX2NvbmZpZy5jdXN0b21DbGFzcylcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fdGVtcGxhdGVGYWN0b3J5O1xuICB9XG4gIF9nZXRDb250ZW50Rm9yVGVtcGxhdGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtTRUxFQ1RPUl9UT09MVElQX0lOTkVSXTogdGhpcy5fZ2V0VGl0bGUoKVxuICAgIH07XG4gIH1cbiAgX2dldFRpdGxlKCkge1xuICAgIHJldHVybiB0aGlzLl9yZXNvbHZlUG9zc2libGVGdW5jdGlvbih0aGlzLl9jb25maWcudGl0bGUpIHx8IHRoaXMuX2VsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLWJzLW9yaWdpbmFsLXRpdGxlJyk7XG4gIH1cblxuICAvLyBQcml2YXRlXG4gIF9pbml0aWFsaXplT25EZWxlZ2F0ZWRUYXJnZXQoZXZlbnQpIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5nZXRPckNyZWF0ZUluc3RhbmNlKGV2ZW50LmRlbGVnYXRlVGFyZ2V0LCB0aGlzLl9nZXREZWxlZ2F0ZUNvbmZpZygpKTtcbiAgfVxuICBfaXNBbmltYXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnLmFuaW1hdGlvbiB8fCB0aGlzLnRpcCAmJiB0aGlzLnRpcC5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9GQURFJDIpO1xuICB9XG4gIF9pc1Nob3duKCkge1xuICAgIHJldHVybiB0aGlzLnRpcCAmJiB0aGlzLnRpcC5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9TSE9XJDIpO1xuICB9XG4gIF9jcmVhdGVQb3BwZXIodGlwKSB7XG4gICAgY29uc3QgcGxhY2VtZW50ID0gZXhlY3V0ZSh0aGlzLl9jb25maWcucGxhY2VtZW50LCBbdGhpcywgdGlwLCB0aGlzLl9lbGVtZW50XSk7XG4gICAgY29uc3QgYXR0YWNobWVudCA9IEF0dGFjaG1lbnRNYXBbcGxhY2VtZW50LnRvVXBwZXJDYXNlKCldO1xuICAgIHJldHVybiBQb3BwZXIuY3JlYXRlUG9wcGVyKHRoaXMuX2VsZW1lbnQsIHRpcCwgdGhpcy5fZ2V0UG9wcGVyQ29uZmlnKGF0dGFjaG1lbnQpKTtcbiAgfVxuICBfZ2V0T2Zmc2V0KCkge1xuICAgIGNvbnN0IHtcbiAgICAgIG9mZnNldFxuICAgIH0gPSB0aGlzLl9jb25maWc7XG4gICAgaWYgKHR5cGVvZiBvZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gb2Zmc2V0LnNwbGl0KCcsJykubWFwKHZhbHVlID0+IE51bWJlci5wYXJzZUludCh2YWx1ZSwgMTApKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvZmZzZXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBwb3BwZXJEYXRhID0+IG9mZnNldChwb3BwZXJEYXRhLCB0aGlzLl9lbGVtZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIG9mZnNldDtcbiAgfVxuICBfcmVzb2x2ZVBvc3NpYmxlRnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIGV4ZWN1dGUoYXJnLCBbdGhpcy5fZWxlbWVudCwgdGhpcy5fZWxlbWVudF0pO1xuICB9XG4gIF9nZXRQb3BwZXJDb25maWcoYXR0YWNobWVudCkge1xuICAgIGNvbnN0IGRlZmF1bHRCc1BvcHBlckNvbmZpZyA9IHtcbiAgICAgIHBsYWNlbWVudDogYXR0YWNobWVudCxcbiAgICAgIG1vZGlmaWVyczogW3tcbiAgICAgICAgbmFtZTogJ2ZsaXAnLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgZmFsbGJhY2tQbGFjZW1lbnRzOiB0aGlzLl9jb25maWcuZmFsbGJhY2tQbGFjZW1lbnRzXG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAgbmFtZTogJ29mZnNldCcsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBvZmZzZXQ6IHRoaXMuX2dldE9mZnNldCgpXG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAgbmFtZTogJ3ByZXZlbnRPdmVyZmxvdycsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBib3VuZGFyeTogdGhpcy5fY29uZmlnLmJvdW5kYXJ5XG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAgbmFtZTogJ2Fycm93JyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGVsZW1lbnQ6IGAuJHt0aGlzLmNvbnN0cnVjdG9yLk5BTUV9LWFycm93YFxuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIG5hbWU6ICdwcmVTZXRQbGFjZW1lbnQnLFxuICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICBwaGFzZTogJ2JlZm9yZU1haW4nLFxuICAgICAgICBmbjogZGF0YSA9PiB7XG4gICAgICAgICAgLy8gUHJlLXNldCBQb3BwZXIncyBwbGFjZW1lbnQgYXR0cmlidXRlIGluIG9yZGVyIHRvIHJlYWQgdGhlIGFycm93IHNpemVzIHByb3Blcmx5LlxuICAgICAgICAgIC8vIE90aGVyd2lzZSwgUG9wcGVyIG1peGVzIHVwIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGRpbWVuc2lvbnMgc2luY2UgdGhlIGluaXRpYWwgYXJyb3cgc3R5bGUgaXMgZm9yIHRvcCBwbGFjZW1lbnRcbiAgICAgICAgICB0aGlzLl9nZXRUaXBFbGVtZW50KCkuc2V0QXR0cmlidXRlKCdkYXRhLXBvcHBlci1wbGFjZW1lbnQnLCBkYXRhLnN0YXRlLnBsYWNlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH1dXG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uZGVmYXVsdEJzUG9wcGVyQ29uZmlnLFxuICAgICAgLi4uZXhlY3V0ZSh0aGlzLl9jb25maWcucG9wcGVyQ29uZmlnLCBbdW5kZWZpbmVkLCBkZWZhdWx0QnNQb3BwZXJDb25maWddKVxuICAgIH07XG4gIH1cbiAgX3NldExpc3RlbmVycygpIHtcbiAgICBjb25zdCB0cmlnZ2VycyA9IHRoaXMuX2NvbmZpZy50cmlnZ2VyLnNwbGl0KCcgJyk7XG4gICAgZm9yIChjb25zdCB0cmlnZ2VyIG9mIHRyaWdnZXJzKSB7XG4gICAgICBpZiAodHJpZ2dlciA9PT0gJ2NsaWNrJykge1xuICAgICAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoRVZFTlRfQ0xJQ0skMSksIHRoaXMuX2NvbmZpZy5zZWxlY3RvciwgZXZlbnQgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLl9pbml0aWFsaXplT25EZWxlZ2F0ZWRUYXJnZXQoZXZlbnQpO1xuICAgICAgICAgIGNvbnRleHQuX2FjdGl2ZVRyaWdnZXJbVFJJR0dFUl9DTElDS10gPSAhKGNvbnRleHQuX2lzU2hvd24oKSAmJiBjb250ZXh0Ll9hY3RpdmVUcmlnZ2VyW1RSSUdHRVJfQ0xJQ0tdKTtcbiAgICAgICAgICBjb250ZXh0LnRvZ2dsZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAodHJpZ2dlciAhPT0gVFJJR0dFUl9NQU5VQUwpIHtcbiAgICAgICAgY29uc3QgZXZlbnRJbiA9IHRyaWdnZXIgPT09IFRSSUdHRVJfSE9WRVIgPyB0aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZShFVkVOVF9NT1VTRUVOVEVSKSA6IHRoaXMuY29uc3RydWN0b3IuZXZlbnROYW1lKEVWRU5UX0ZPQ1VTSU4kMSk7XG4gICAgICAgIGNvbnN0IGV2ZW50T3V0ID0gdHJpZ2dlciA9PT0gVFJJR0dFUl9IT1ZFUiA/IHRoaXMuY29uc3RydWN0b3IuZXZlbnROYW1lKEVWRU5UX01PVVNFTEVBVkUpIDogdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoRVZFTlRfRk9DVVNPVVQkMSk7XG4gICAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBldmVudEluLCB0aGlzLl9jb25maWcuc2VsZWN0b3IsIGV2ZW50ID0+IHtcbiAgICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5faW5pdGlhbGl6ZU9uRGVsZWdhdGVkVGFyZ2V0KGV2ZW50KTtcbiAgICAgICAgICBjb250ZXh0Ll9hY3RpdmVUcmlnZ2VyW2V2ZW50LnR5cGUgPT09ICdmb2N1c2luJyA/IFRSSUdHRVJfRk9DVVMgOiBUUklHR0VSX0hPVkVSXSA9IHRydWU7XG4gICAgICAgICAgY29udGV4dC5fZW50ZXIoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBldmVudE91dCwgdGhpcy5fY29uZmlnLnNlbGVjdG9yLCBldmVudCA9PiB7XG4gICAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuX2luaXRpYWxpemVPbkRlbGVnYXRlZFRhcmdldChldmVudCk7XG4gICAgICAgICAgY29udGV4dC5fYWN0aXZlVHJpZ2dlcltldmVudC50eXBlID09PSAnZm9jdXNvdXQnID8gVFJJR0dFUl9GT0NVUyA6IFRSSUdHRVJfSE9WRVJdID0gY29udGV4dC5fZWxlbWVudC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KTtcbiAgICAgICAgICBjb250ZXh0Ll9sZWF2ZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5faGlkZU1vZGFsSGFuZGxlciA9ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9lbGVtZW50KSB7XG4gICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgfVxuICAgIH07XG4gICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQuY2xvc2VzdChTRUxFQ1RPUl9NT0RBTCksIEVWRU5UX01PREFMX0hJREUsIHRoaXMuX2hpZGVNb2RhbEhhbmRsZXIpO1xuICB9XG4gIF9maXhUaXRsZSgpIHtcbiAgICBjb25zdCB0aXRsZSA9IHRoaXMuX2VsZW1lbnQuZ2V0QXR0cmlidXRlKCd0aXRsZScpO1xuICAgIGlmICghdGl0bGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9lbGVtZW50LmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcpICYmICF0aGlzLl9lbGVtZW50LnRleHRDb250ZW50LnRyaW0oKSkge1xuICAgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCB0aXRsZSk7XG4gICAgfVxuICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLWJzLW9yaWdpbmFsLXRpdGxlJywgdGl0bGUpOyAvLyBETyBOT1QgVVNFIElULiBJcyBvbmx5IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCd0aXRsZScpO1xuICB9XG4gIF9lbnRlcigpIHtcbiAgICBpZiAodGhpcy5faXNTaG93bigpIHx8IHRoaXMuX2lzSG92ZXJlZCkge1xuICAgICAgdGhpcy5faXNIb3ZlcmVkID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5faXNIb3ZlcmVkID0gdHJ1ZTtcbiAgICB0aGlzLl9zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9pc0hvdmVyZWQpIHtcbiAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICB9XG4gICAgfSwgdGhpcy5fY29uZmlnLmRlbGF5LnNob3cpO1xuICB9XG4gIF9sZWF2ZSgpIHtcbiAgICBpZiAodGhpcy5faXNXaXRoQWN0aXZlVHJpZ2dlcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2lzSG92ZXJlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3NldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9pc0hvdmVyZWQpIHtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICB9XG4gICAgfSwgdGhpcy5fY29uZmlnLmRlbGF5LmhpZGUpO1xuICB9XG4gIF9zZXRUaW1lb3V0KGhhbmRsZXIsIHRpbWVvdXQpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCk7XG4gICAgdGhpcy5fdGltZW91dCA9IHNldFRpbWVvdXQoaGFuZGxlciwgdGltZW91dCk7XG4gIH1cbiAgX2lzV2l0aEFjdGl2ZVRyaWdnZXIoKSB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5fYWN0aXZlVHJpZ2dlcikuaW5jbHVkZXModHJ1ZSk7XG4gIH1cbiAgX2dldENvbmZpZyhjb25maWcpIHtcbiAgICBjb25zdCBkYXRhQXR0cmlidXRlcyA9IE1hbmlwdWxhdG9yLmdldERhdGFBdHRyaWJ1dGVzKHRoaXMuX2VsZW1lbnQpO1xuICAgIGZvciAoY29uc3QgZGF0YUF0dHJpYnV0ZSBvZiBPYmplY3Qua2V5cyhkYXRhQXR0cmlidXRlcykpIHtcbiAgICAgIGlmIChESVNBTExPV0VEX0FUVFJJQlVURVMuaGFzKGRhdGFBdHRyaWJ1dGUpKSB7XG4gICAgICAgIGRlbGV0ZSBkYXRhQXR0cmlidXRlc1tkYXRhQXR0cmlidXRlXTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uZmlnID0ge1xuICAgICAgLi4uZGF0YUF0dHJpYnV0ZXMsXG4gICAgICAuLi4odHlwZW9mIGNvbmZpZyA9PT0gJ29iamVjdCcgJiYgY29uZmlnID8gY29uZmlnIDoge30pXG4gICAgfTtcbiAgICBjb25maWcgPSB0aGlzLl9tZXJnZUNvbmZpZ09iaihjb25maWcpO1xuICAgIGNvbmZpZyA9IHRoaXMuX2NvbmZpZ0FmdGVyTWVyZ2UoY29uZmlnKTtcbiAgICB0aGlzLl90eXBlQ2hlY2tDb25maWcoY29uZmlnKTtcbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG4gIF9jb25maWdBZnRlck1lcmdlKGNvbmZpZykge1xuICAgIGNvbmZpZy5jb250YWluZXIgPSBjb25maWcuY29udGFpbmVyID09PSBmYWxzZSA/IGRvY3VtZW50LmJvZHkgOiBnZXRFbGVtZW50KGNvbmZpZy5jb250YWluZXIpO1xuICAgIGlmICh0eXBlb2YgY29uZmlnLmRlbGF5ID09PSAnbnVtYmVyJykge1xuICAgICAgY29uZmlnLmRlbGF5ID0ge1xuICAgICAgICBzaG93OiBjb25maWcuZGVsYXksXG4gICAgICAgIGhpZGU6IGNvbmZpZy5kZWxheVxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjb25maWcudGl0bGUgPT09ICdudW1iZXInKSB7XG4gICAgICBjb25maWcudGl0bGUgPSBjb25maWcudGl0bGUudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjb25maWcuY29udGVudCA9PT0gJ251bWJlcicpIHtcbiAgICAgIGNvbmZpZy5jb250ZW50ID0gY29uZmlnLmNvbnRlbnQudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuICBfZ2V0RGVsZWdhdGVDb25maWcoKSB7XG4gICAgY29uc3QgY29uZmlnID0ge307XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fY29uZmlnKSkge1xuICAgICAgaWYgKHRoaXMuY29uc3RydWN0b3IuRGVmYXVsdFtrZXldICE9PSB2YWx1ZSkge1xuICAgICAgICBjb25maWdba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25maWcuc2VsZWN0b3IgPSBmYWxzZTtcbiAgICBjb25maWcudHJpZ2dlciA9ICdtYW51YWwnO1xuXG4gICAgLy8gSW4gdGhlIGZ1dHVyZSBjYW4gYmUgcmVwbGFjZWQgd2l0aDpcbiAgICAvLyBjb25zdCBrZXlzV2l0aERpZmZlcmVudFZhbHVlcyA9IE9iamVjdC5lbnRyaWVzKHRoaXMuX2NvbmZpZykuZmlsdGVyKGVudHJ5ID0+IHRoaXMuY29uc3RydWN0b3IuRGVmYXVsdFtlbnRyeVswXV0gIT09IHRoaXMuX2NvbmZpZ1tlbnRyeVswXV0pXG4gICAgLy8gYE9iamVjdC5mcm9tRW50cmllcyhrZXlzV2l0aERpZmZlcmVudFZhbHVlcylgXG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuICBfZGlzcG9zZVBvcHBlcigpIHtcbiAgICBpZiAodGhpcy5fcG9wcGVyKSB7XG4gICAgICB0aGlzLl9wb3BwZXIuZGVzdHJveSgpO1xuICAgICAgdGhpcy5fcG9wcGVyID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHRoaXMudGlwKSB7XG4gICAgICB0aGlzLnRpcC5yZW1vdmUoKTtcbiAgICAgIHRoaXMudGlwID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvLyBTdGF0aWNcbiAgc3RhdGljIGpRdWVyeUludGVyZmFjZShjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBUb29sdGlwLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcywgY29uZmlnKTtcbiAgICAgIGlmICh0eXBlb2YgY29uZmlnICE9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIGRhdGFbY29uZmlnXSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkIFwiJHtjb25maWd9XCJgKTtcbiAgICAgIH1cbiAgICAgIGRhdGFbY29uZmlnXSgpO1xuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogalF1ZXJ5XG4gKi9cblxuZGVmaW5lSlF1ZXJ5UGx1Z2luKFRvb2x0aXApO1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgcG9wb3Zlci5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FJDMgPSAncG9wb3Zlcic7XG5jb25zdCBTRUxFQ1RPUl9USVRMRSA9ICcucG9wb3Zlci1oZWFkZXInO1xuY29uc3QgU0VMRUNUT1JfQ09OVEVOVCA9ICcucG9wb3Zlci1ib2R5JztcbmNvbnN0IERlZmF1bHQkMiA9IHtcbiAgLi4uVG9vbHRpcC5EZWZhdWx0LFxuICBjb250ZW50OiAnJyxcbiAgb2Zmc2V0OiBbMCwgOF0sXG4gIHBsYWNlbWVudDogJ3JpZ2h0JyxcbiAgdGVtcGxhdGU6ICc8ZGl2IGNsYXNzPVwicG9wb3ZlclwiIHJvbGU9XCJ0b29sdGlwXCI+JyArICc8ZGl2IGNsYXNzPVwicG9wb3Zlci1hcnJvd1wiPjwvZGl2PicgKyAnPGgzIGNsYXNzPVwicG9wb3Zlci1oZWFkZXJcIj48L2gzPicgKyAnPGRpdiBjbGFzcz1cInBvcG92ZXItYm9keVwiPjwvZGl2PicgKyAnPC9kaXY+JyxcbiAgdHJpZ2dlcjogJ2NsaWNrJ1xufTtcbmNvbnN0IERlZmF1bHRUeXBlJDIgPSB7XG4gIC4uLlRvb2x0aXAuRGVmYXVsdFR5cGUsXG4gIGNvbnRlbnQ6ICcobnVsbHxzdHJpbmd8ZWxlbWVudHxmdW5jdGlvbiknXG59O1xuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBQb3BvdmVyIGV4dGVuZHMgVG9vbHRpcCB7XG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiBEZWZhdWx0JDI7XG4gIH1cbiAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFR5cGUkMjtcbiAgfVxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUUkMztcbiAgfVxuXG4gIC8vIE92ZXJyaWRlc1xuICBfaXNXaXRoQ29udGVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0VGl0bGUoKSB8fCB0aGlzLl9nZXRDb250ZW50KCk7XG4gIH1cblxuICAvLyBQcml2YXRlXG4gIF9nZXRDb250ZW50Rm9yVGVtcGxhdGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtTRUxFQ1RPUl9USVRMRV06IHRoaXMuX2dldFRpdGxlKCksXG4gICAgICBbU0VMRUNUT1JfQ09OVEVOVF06IHRoaXMuX2dldENvbnRlbnQoKVxuICAgIH07XG4gIH1cbiAgX2dldENvbnRlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Jlc29sdmVQb3NzaWJsZUZ1bmN0aW9uKHRoaXMuX2NvbmZpZy5jb250ZW50KTtcbiAgfVxuXG4gIC8vIFN0YXRpY1xuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IFBvcG92ZXIuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCBjb25maWcpO1xuICAgICAgaWYgKHR5cGVvZiBjb25maWcgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgZGF0YVtjb25maWddID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApO1xuICAgICAgfVxuICAgICAgZGF0YVtjb25maWddKCk7XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5kZWZpbmVKUXVlcnlQbHVnaW4oUG9wb3Zlcik7XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCBzY3JvbGxzcHkuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSQyID0gJ3Njcm9sbHNweSc7XG5jb25zdCBEQVRBX0tFWSQyID0gJ2JzLnNjcm9sbHNweSc7XG5jb25zdCBFVkVOVF9LRVkkMiA9IGAuJHtEQVRBX0tFWSQyfWA7XG5jb25zdCBEQVRBX0FQSV9LRVkgPSAnLmRhdGEtYXBpJztcbmNvbnN0IEVWRU5UX0FDVElWQVRFID0gYGFjdGl2YXRlJHtFVkVOVF9LRVkkMn1gO1xuY29uc3QgRVZFTlRfQ0xJQ0sgPSBgY2xpY2ske0VWRU5UX0tFWSQyfWA7XG5jb25zdCBFVkVOVF9MT0FEX0RBVEFfQVBJJDEgPSBgbG9hZCR7RVZFTlRfS0VZJDJ9JHtEQVRBX0FQSV9LRVl9YDtcbmNvbnN0IENMQVNTX05BTUVfRFJPUERPV05fSVRFTSA9ICdkcm9wZG93bi1pdGVtJztcbmNvbnN0IENMQVNTX05BTUVfQUNUSVZFJDEgPSAnYWN0aXZlJztcbmNvbnN0IFNFTEVDVE9SX0RBVEFfU1BZID0gJ1tkYXRhLWJzLXNweT1cInNjcm9sbFwiXSc7XG5jb25zdCBTRUxFQ1RPUl9UQVJHRVRfTElOS1MgPSAnW2hyZWZdJztcbmNvbnN0IFNFTEVDVE9SX05BVl9MSVNUX0dST1VQID0gJy5uYXYsIC5saXN0LWdyb3VwJztcbmNvbnN0IFNFTEVDVE9SX05BVl9MSU5LUyA9ICcubmF2LWxpbmsnO1xuY29uc3QgU0VMRUNUT1JfTkFWX0lURU1TID0gJy5uYXYtaXRlbSc7XG5jb25zdCBTRUxFQ1RPUl9MSVNUX0lURU1TID0gJy5saXN0LWdyb3VwLWl0ZW0nO1xuY29uc3QgU0VMRUNUT1JfTElOS19JVEVNUyA9IGAke1NFTEVDVE9SX05BVl9MSU5LU30sICR7U0VMRUNUT1JfTkFWX0lURU1TfSA+ICR7U0VMRUNUT1JfTkFWX0xJTktTfSwgJHtTRUxFQ1RPUl9MSVNUX0lURU1TfWA7XG5jb25zdCBTRUxFQ1RPUl9EUk9QRE9XTiA9ICcuZHJvcGRvd24nO1xuY29uc3QgU0VMRUNUT1JfRFJPUERPV05fVE9HR0xFJDEgPSAnLmRyb3Bkb3duLXRvZ2dsZSc7XG5jb25zdCBEZWZhdWx0JDEgPSB7XG4gIG9mZnNldDogbnVsbCxcbiAgLy8gVE9ETzogdjYgQGRlcHJlY2F0ZWQsIGtlZXAgaXQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlYXNvbnNcbiAgcm9vdE1hcmdpbjogJzBweCAwcHggLTI1JScsXG4gIHNtb290aFNjcm9sbDogZmFsc2UsXG4gIHRhcmdldDogbnVsbCxcbiAgdGhyZXNob2xkOiBbMC4xLCAwLjUsIDFdXG59O1xuY29uc3QgRGVmYXVsdFR5cGUkMSA9IHtcbiAgb2Zmc2V0OiAnKG51bWJlcnxudWxsKScsXG4gIC8vIFRPRE8gdjYgQGRlcHJlY2F0ZWQsIGtlZXAgaXQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlYXNvbnNcbiAgcm9vdE1hcmdpbjogJ3N0cmluZycsXG4gIHNtb290aFNjcm9sbDogJ2Jvb2xlYW4nLFxuICB0YXJnZXQ6ICdlbGVtZW50JyxcbiAgdGhyZXNob2xkOiAnYXJyYXknXG59O1xuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBTY3JvbGxTcHkgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoZWxlbWVudCwgY29uZmlnKSB7XG4gICAgc3VwZXIoZWxlbWVudCwgY29uZmlnKTtcblxuICAgIC8vIHRoaXMuX2VsZW1lbnQgaXMgdGhlIG9ic2VydmFibGVzQ29udGFpbmVyIGFuZCBjb25maWcudGFyZ2V0IHRoZSBtZW51IGxpbmtzIHdyYXBwZXJcbiAgICB0aGlzLl90YXJnZXRMaW5rcyA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLl9vYnNlcnZhYmxlU2VjdGlvbnMgPSBuZXcgTWFwKCk7XG4gICAgdGhpcy5fcm9vdEVsZW1lbnQgPSBnZXRDb21wdXRlZFN0eWxlKHRoaXMuX2VsZW1lbnQpLm92ZXJmbG93WSA9PT0gJ3Zpc2libGUnID8gbnVsbCA6IHRoaXMuX2VsZW1lbnQ7XG4gICAgdGhpcy5fYWN0aXZlVGFyZ2V0ID0gbnVsbDtcbiAgICB0aGlzLl9vYnNlcnZlciA9IG51bGw7XG4gICAgdGhpcy5fcHJldmlvdXNTY3JvbGxEYXRhID0ge1xuICAgICAgdmlzaWJsZUVudHJ5VG9wOiAwLFxuICAgICAgcGFyZW50U2Nyb2xsVG9wOiAwXG4gICAgfTtcbiAgICB0aGlzLnJlZnJlc2goKTsgLy8gaW5pdGlhbGl6ZVxuICB9XG5cbiAgLy8gR2V0dGVyc1xuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHQkMTtcbiAgfVxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiBEZWZhdWx0VHlwZSQxO1xuICB9XG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRSQyO1xuICB9XG5cbiAgLy8gUHVibGljXG4gIHJlZnJlc2goKSB7XG4gICAgdGhpcy5faW5pdGlhbGl6ZVRhcmdldHNBbmRPYnNlcnZhYmxlcygpO1xuICAgIHRoaXMuX21heWJlRW5hYmxlU21vb3RoU2Nyb2xsKCk7XG4gICAgaWYgKHRoaXMuX29ic2VydmVyKSB7XG4gICAgICB0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX29ic2VydmVyID0gdGhpcy5fZ2V0TmV3T2JzZXJ2ZXIoKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBzZWN0aW9uIG9mIHRoaXMuX29ic2VydmFibGVTZWN0aW9ucy52YWx1ZXMoKSkge1xuICAgICAgdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZShzZWN0aW9uKTtcbiAgICB9XG4gIH1cbiAgZGlzcG9zZSgpIHtcbiAgICB0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgc3VwZXIuZGlzcG9zZSgpO1xuICB9XG5cbiAgLy8gUHJpdmF0ZVxuICBfY29uZmlnQWZ0ZXJNZXJnZShjb25maWcpIHtcbiAgICAvLyBUT0RPOiBvbiB2NiB0YXJnZXQgc2hvdWxkIGJlIGdpdmVuIGV4cGxpY2l0bHkgJiByZW1vdmUgdGhlIHt0YXJnZXQ6ICdzcy10YXJnZXQnfSBjYXNlXG4gICAgY29uZmlnLnRhcmdldCA9IGdldEVsZW1lbnQoY29uZmlnLnRhcmdldCkgfHwgZG9jdW1lbnQuYm9keTtcblxuICAgIC8vIFRPRE86IHY2IE9ubHkgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlYXNvbnMuIFVzZSByb290TWFyZ2luIG9ubHlcbiAgICBjb25maWcucm9vdE1hcmdpbiA9IGNvbmZpZy5vZmZzZXQgPyBgJHtjb25maWcub2Zmc2V0fXB4IDBweCAtMzAlYCA6IGNvbmZpZy5yb290TWFyZ2luO1xuICAgIGlmICh0eXBlb2YgY29uZmlnLnRocmVzaG9sZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbmZpZy50aHJlc2hvbGQgPSBjb25maWcudGhyZXNob2xkLnNwbGl0KCcsJykubWFwKHZhbHVlID0+IE51bWJlci5wYXJzZUZsb2F0KHZhbHVlKSk7XG4gICAgfVxuICAgIHJldHVybiBjb25maWc7XG4gIH1cbiAgX21heWJlRW5hYmxlU21vb3RoU2Nyb2xsKCkge1xuICAgIGlmICghdGhpcy5fY29uZmlnLnNtb290aFNjcm9sbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHVucmVnaXN0ZXIgYW55IHByZXZpb3VzIGxpc3RlbmVyc1xuICAgIEV2ZW50SGFuZGxlci5vZmYodGhpcy5fY29uZmlnLnRhcmdldCwgRVZFTlRfQ0xJQ0spO1xuICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9jb25maWcudGFyZ2V0LCBFVkVOVF9DTElDSywgU0VMRUNUT1JfVEFSR0VUX0xJTktTLCBldmVudCA9PiB7XG4gICAgICBjb25zdCBvYnNlcnZhYmxlU2VjdGlvbiA9IHRoaXMuX29ic2VydmFibGVTZWN0aW9ucy5nZXQoZXZlbnQudGFyZ2V0Lmhhc2gpO1xuICAgICAgaWYgKG9ic2VydmFibGVTZWN0aW9uKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IHJvb3QgPSB0aGlzLl9yb290RWxlbWVudCB8fCB3aW5kb3c7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IG9ic2VydmFibGVTZWN0aW9uLm9mZnNldFRvcCAtIHRoaXMuX2VsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgICBpZiAocm9vdC5zY3JvbGxUbykge1xuICAgICAgICAgIHJvb3Quc2Nyb2xsVG8oe1xuICAgICAgICAgICAgdG9wOiBoZWlnaHQsXG4gICAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCdcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaHJvbWUgNjAgZG9lc24ndCBzdXBwb3J0IGBzY3JvbGxUb2BcbiAgICAgICAgcm9vdC5zY3JvbGxUb3AgPSBoZWlnaHQ7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgX2dldE5ld09ic2VydmVyKCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICByb290OiB0aGlzLl9yb290RWxlbWVudCxcbiAgICAgIHRocmVzaG9sZDogdGhpcy5fY29uZmlnLnRocmVzaG9sZCxcbiAgICAgIHJvb3RNYXJnaW46IHRoaXMuX2NvbmZpZy5yb290TWFyZ2luXG4gICAgfTtcbiAgICByZXR1cm4gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGVudHJpZXMgPT4gdGhpcy5fb2JzZXJ2ZXJDYWxsYmFjayhlbnRyaWVzKSwgb3B0aW9ucyk7XG4gIH1cblxuICAvLyBUaGUgbG9naWMgb2Ygc2VsZWN0aW9uXG4gIF9vYnNlcnZlckNhbGxiYWNrKGVudHJpZXMpIHtcbiAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZW50cnkgPT4gdGhpcy5fdGFyZ2V0TGlua3MuZ2V0KGAjJHtlbnRyeS50YXJnZXQuaWR9YCk7XG4gICAgY29uc3QgYWN0aXZhdGUgPSBlbnRyeSA9PiB7XG4gICAgICB0aGlzLl9wcmV2aW91c1Njcm9sbERhdGEudmlzaWJsZUVudHJ5VG9wID0gZW50cnkudGFyZ2V0Lm9mZnNldFRvcDtcbiAgICAgIHRoaXMuX3Byb2Nlc3ModGFyZ2V0RWxlbWVudChlbnRyeSkpO1xuICAgIH07XG4gICAgY29uc3QgcGFyZW50U2Nyb2xsVG9wID0gKHRoaXMuX3Jvb3RFbGVtZW50IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuc2Nyb2xsVG9wO1xuICAgIGNvbnN0IHVzZXJTY3JvbGxzRG93biA9IHBhcmVudFNjcm9sbFRvcCA+PSB0aGlzLl9wcmV2aW91c1Njcm9sbERhdGEucGFyZW50U2Nyb2xsVG9wO1xuICAgIHRoaXMuX3ByZXZpb3VzU2Nyb2xsRGF0YS5wYXJlbnRTY3JvbGxUb3AgPSBwYXJlbnRTY3JvbGxUb3A7XG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICBpZiAoIWVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVRhcmdldCA9IG51bGw7XG4gICAgICAgIHRoaXMuX2NsZWFyQWN0aXZlQ2xhc3ModGFyZ2V0RWxlbWVudChlbnRyeSkpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVudHJ5SXNMb3dlclRoYW5QcmV2aW91cyA9IGVudHJ5LnRhcmdldC5vZmZzZXRUb3AgPj0gdGhpcy5fcHJldmlvdXNTY3JvbGxEYXRhLnZpc2libGVFbnRyeVRvcDtcbiAgICAgIC8vIGlmIHdlIGFyZSBzY3JvbGxpbmcgZG93biwgcGljayB0aGUgYmlnZ2VyIG9mZnNldFRvcFxuICAgICAgaWYgKHVzZXJTY3JvbGxzRG93biAmJiBlbnRyeUlzTG93ZXJUaGFuUHJldmlvdXMpIHtcbiAgICAgICAgYWN0aXZhdGUoZW50cnkpO1xuICAgICAgICAvLyBpZiBwYXJlbnQgaXNuJ3Qgc2Nyb2xsZWQsIGxldCdzIGtlZXAgdGhlIGZpcnN0IHZpc2libGUgaXRlbSwgYnJlYWtpbmcgdGhlIGl0ZXJhdGlvblxuICAgICAgICBpZiAoIXBhcmVudFNjcm9sbFRvcCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy8gaWYgd2UgYXJlIHNjcm9sbGluZyB1cCwgcGljayB0aGUgc21hbGxlc3Qgb2Zmc2V0VG9wXG4gICAgICBpZiAoIXVzZXJTY3JvbGxzRG93biAmJiAhZW50cnlJc0xvd2VyVGhhblByZXZpb3VzKSB7XG4gICAgICAgIGFjdGl2YXRlKGVudHJ5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgX2luaXRpYWxpemVUYXJnZXRzQW5kT2JzZXJ2YWJsZXMoKSB7XG4gICAgdGhpcy5fdGFyZ2V0TGlua3MgPSBuZXcgTWFwKCk7XG4gICAgdGhpcy5fb2JzZXJ2YWJsZVNlY3Rpb25zID0gbmV3IE1hcCgpO1xuICAgIGNvbnN0IHRhcmdldExpbmtzID0gU2VsZWN0b3JFbmdpbmUuZmluZChTRUxFQ1RPUl9UQVJHRVRfTElOS1MsIHRoaXMuX2NvbmZpZy50YXJnZXQpO1xuICAgIGZvciAoY29uc3QgYW5jaG9yIG9mIHRhcmdldExpbmtzKSB7XG4gICAgICAvLyBlbnN1cmUgdGhhdCB0aGUgYW5jaG9yIGhhcyBhbiBpZCBhbmQgaXMgbm90IGRpc2FibGVkXG4gICAgICBpZiAoIWFuY2hvci5oYXNoIHx8IGlzRGlzYWJsZWQoYW5jaG9yKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG9ic2VydmFibGVTZWN0aW9uID0gU2VsZWN0b3JFbmdpbmUuZmluZE9uZShkZWNvZGVVUkkoYW5jaG9yLmhhc2gpLCB0aGlzLl9lbGVtZW50KTtcblxuICAgICAgLy8gZW5zdXJlIHRoYXQgdGhlIG9ic2VydmFibGVTZWN0aW9uIGV4aXN0cyAmIGlzIHZpc2libGVcbiAgICAgIGlmIChpc1Zpc2libGUob2JzZXJ2YWJsZVNlY3Rpb24pKSB7XG4gICAgICAgIHRoaXMuX3RhcmdldExpbmtzLnNldChkZWNvZGVVUkkoYW5jaG9yLmhhc2gpLCBhbmNob3IpO1xuICAgICAgICB0aGlzLl9vYnNlcnZhYmxlU2VjdGlvbnMuc2V0KGFuY2hvci5oYXNoLCBvYnNlcnZhYmxlU2VjdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIF9wcm9jZXNzKHRhcmdldCkge1xuICAgIGlmICh0aGlzLl9hY3RpdmVUYXJnZXQgPT09IHRhcmdldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9jbGVhckFjdGl2ZUNsYXNzKHRoaXMuX2NvbmZpZy50YXJnZXQpO1xuICAgIHRoaXMuX2FjdGl2ZVRhcmdldCA9IHRhcmdldDtcbiAgICB0YXJnZXQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0FDVElWRSQxKTtcbiAgICB0aGlzLl9hY3RpdmF0ZVBhcmVudHModGFyZ2V0KTtcbiAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9BQ1RJVkFURSwge1xuICAgICAgcmVsYXRlZFRhcmdldDogdGFyZ2V0XG4gICAgfSk7XG4gIH1cbiAgX2FjdGl2YXRlUGFyZW50cyh0YXJnZXQpIHtcbiAgICAvLyBBY3RpdmF0ZSBkcm9wZG93biBwYXJlbnRzXG4gICAgaWYgKHRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9EUk9QRE9XTl9JVEVNKSkge1xuICAgICAgU2VsZWN0b3JFbmdpbmUuZmluZE9uZShTRUxFQ1RPUl9EUk9QRE9XTl9UT0dHTEUkMSwgdGFyZ2V0LmNsb3Nlc3QoU0VMRUNUT1JfRFJPUERPV04pKS5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfQUNUSVZFJDEpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGxpc3RHcm91cCBvZiBTZWxlY3RvckVuZ2luZS5wYXJlbnRzKHRhcmdldCwgU0VMRUNUT1JfTkFWX0xJU1RfR1JPVVApKSB7XG4gICAgICAvLyBTZXQgdHJpZ2dlcmVkIGxpbmtzIHBhcmVudHMgYXMgYWN0aXZlXG4gICAgICAvLyBXaXRoIGJvdGggPHVsPiBhbmQgPG5hdj4gbWFya3VwIGEgcGFyZW50IGlzIHRoZSBwcmV2aW91cyBzaWJsaW5nIG9mIGFueSBuYXYgYW5jZXN0b3JcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBTZWxlY3RvckVuZ2luZS5wcmV2KGxpc3RHcm91cCwgU0VMRUNUT1JfTElOS19JVEVNUykpIHtcbiAgICAgICAgaXRlbS5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfQUNUSVZFJDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBfY2xlYXJBY3RpdmVDbGFzcyhwYXJlbnQpIHtcbiAgICBwYXJlbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0FDVElWRSQxKTtcbiAgICBjb25zdCBhY3RpdmVOb2RlcyA9IFNlbGVjdG9yRW5naW5lLmZpbmQoYCR7U0VMRUNUT1JfVEFSR0VUX0xJTktTfS4ke0NMQVNTX05BTUVfQUNUSVZFJDF9YCwgcGFyZW50KTtcbiAgICBmb3IgKGNvbnN0IG5vZGUgb2YgYWN0aXZlTm9kZXMpIHtcbiAgICAgIG5vZGUuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0FDVElWRSQxKTtcbiAgICB9XG4gIH1cblxuICAvLyBTdGF0aWNcbiAgc3RhdGljIGpRdWVyeUludGVyZmFjZShjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBTY3JvbGxTcHkuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCBjb25maWcpO1xuICAgICAgaWYgKHR5cGVvZiBjb25maWcgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChkYXRhW2NvbmZpZ10gPT09IHVuZGVmaW5lZCB8fCBjb25maWcuc3RhcnRzV2l0aCgnXycpIHx8IGNvbmZpZyA9PT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApO1xuICAgICAgfVxuICAgICAgZGF0YVtjb25maWddKCk7XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cbkV2ZW50SGFuZGxlci5vbih3aW5kb3csIEVWRU5UX0xPQURfREFUQV9BUEkkMSwgKCkgPT4ge1xuICBmb3IgKGNvbnN0IHNweSBvZiBTZWxlY3RvckVuZ2luZS5maW5kKFNFTEVDVE9SX0RBVEFfU1BZKSkge1xuICAgIFNjcm9sbFNweS5nZXRPckNyZWF0ZUluc3RhbmNlKHNweSk7XG4gIH1cbn0pO1xuXG4vKipcbiAqIGpRdWVyeVxuICovXG5cbmRlZmluZUpRdWVyeVBsdWdpbihTY3JvbGxTcHkpO1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgdGFiLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IE5BTUUkMSA9ICd0YWInO1xuY29uc3QgREFUQV9LRVkkMSA9ICdicy50YWInO1xuY29uc3QgRVZFTlRfS0VZJDEgPSBgLiR7REFUQV9LRVkkMX1gO1xuY29uc3QgRVZFTlRfSElERSQxID0gYGhpZGUke0VWRU5UX0tFWSQxfWA7XG5jb25zdCBFVkVOVF9ISURERU4kMSA9IGBoaWRkZW4ke0VWRU5UX0tFWSQxfWA7XG5jb25zdCBFVkVOVF9TSE9XJDEgPSBgc2hvdyR7RVZFTlRfS0VZJDF9YDtcbmNvbnN0IEVWRU5UX1NIT1dOJDEgPSBgc2hvd24ke0VWRU5UX0tFWSQxfWA7XG5jb25zdCBFVkVOVF9DTElDS19EQVRBX0FQSSA9IGBjbGljayR7RVZFTlRfS0VZJDF9YDtcbmNvbnN0IEVWRU5UX0tFWURPV04gPSBga2V5ZG93biR7RVZFTlRfS0VZJDF9YDtcbmNvbnN0IEVWRU5UX0xPQURfREFUQV9BUEkgPSBgbG9hZCR7RVZFTlRfS0VZJDF9YDtcbmNvbnN0IEFSUk9XX0xFRlRfS0VZID0gJ0Fycm93TGVmdCc7XG5jb25zdCBBUlJPV19SSUdIVF9LRVkgPSAnQXJyb3dSaWdodCc7XG5jb25zdCBBUlJPV19VUF9LRVkgPSAnQXJyb3dVcCc7XG5jb25zdCBBUlJPV19ET1dOX0tFWSA9ICdBcnJvd0Rvd24nO1xuY29uc3QgSE9NRV9LRVkgPSAnSG9tZSc7XG5jb25zdCBFTkRfS0VZID0gJ0VuZCc7XG5jb25zdCBDTEFTU19OQU1FX0FDVElWRSA9ICdhY3RpdmUnO1xuY29uc3QgQ0xBU1NfTkFNRV9GQURFJDEgPSAnZmFkZSc7XG5jb25zdCBDTEFTU19OQU1FX1NIT1ckMSA9ICdzaG93JztcbmNvbnN0IENMQVNTX0RST1BET1dOID0gJ2Ryb3Bkb3duJztcbmNvbnN0IFNFTEVDVE9SX0RST1BET1dOX1RPR0dMRSA9ICcuZHJvcGRvd24tdG9nZ2xlJztcbmNvbnN0IFNFTEVDVE9SX0RST1BET1dOX01FTlUgPSAnLmRyb3Bkb3duLW1lbnUnO1xuY29uc3QgTk9UX1NFTEVDVE9SX0RST1BET1dOX1RPR0dMRSA9IGA6bm90KCR7U0VMRUNUT1JfRFJPUERPV05fVE9HR0xFfSlgO1xuY29uc3QgU0VMRUNUT1JfVEFCX1BBTkVMID0gJy5saXN0LWdyb3VwLCAubmF2LCBbcm9sZT1cInRhYmxpc3RcIl0nO1xuY29uc3QgU0VMRUNUT1JfT1VURVIgPSAnLm5hdi1pdGVtLCAubGlzdC1ncm91cC1pdGVtJztcbmNvbnN0IFNFTEVDVE9SX0lOTkVSID0gYC5uYXYtbGluayR7Tk9UX1NFTEVDVE9SX0RST1BET1dOX1RPR0dMRX0sIC5saXN0LWdyb3VwLWl0ZW0ke05PVF9TRUxFQ1RPUl9EUk9QRE9XTl9UT0dHTEV9LCBbcm9sZT1cInRhYlwiXSR7Tk9UX1NFTEVDVE9SX0RST1BET1dOX1RPR0dMRX1gO1xuY29uc3QgU0VMRUNUT1JfREFUQV9UT0dHTEUgPSAnW2RhdGEtYnMtdG9nZ2xlPVwidGFiXCJdLCBbZGF0YS1icy10b2dnbGU9XCJwaWxsXCJdLCBbZGF0YS1icy10b2dnbGU9XCJsaXN0XCJdJzsgLy8gVE9ETzogY291bGQgb25seSBiZSBgdGFiYCBpbiB2NlxuY29uc3QgU0VMRUNUT1JfSU5ORVJfRUxFTSA9IGAke1NFTEVDVE9SX0lOTkVSfSwgJHtTRUxFQ1RPUl9EQVRBX1RPR0dMRX1gO1xuY29uc3QgU0VMRUNUT1JfREFUQV9UT0dHTEVfQUNUSVZFID0gYC4ke0NMQVNTX05BTUVfQUNUSVZFfVtkYXRhLWJzLXRvZ2dsZT1cInRhYlwiXSwgLiR7Q0xBU1NfTkFNRV9BQ1RJVkV9W2RhdGEtYnMtdG9nZ2xlPVwicGlsbFwiXSwgLiR7Q0xBU1NfTkFNRV9BQ1RJVkV9W2RhdGEtYnMtdG9nZ2xlPVwibGlzdFwiXWA7XG5cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIFRhYiBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50KSB7XG4gICAgc3VwZXIoZWxlbWVudCk7XG4gICAgdGhpcy5fcGFyZW50ID0gdGhpcy5fZWxlbWVudC5jbG9zZXN0KFNFTEVDVE9SX1RBQl9QQU5FTCk7XG4gICAgaWYgKCF0aGlzLl9wYXJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICAgIC8vIFRPRE86IHNob3VsZCB0aHJvdyBleGNlcHRpb24gaW4gdjZcbiAgICAgIC8vIHRocm93IG5ldyBUeXBlRXJyb3IoYCR7ZWxlbWVudC5vdXRlckhUTUx9IGhhcyBub3QgYSB2YWxpZCBwYXJlbnQgJHtTRUxFQ1RPUl9JTk5FUl9FTEVNfWApXG4gICAgfVxuXG4gICAgLy8gU2V0IHVwIGluaXRpYWwgYXJpYSBhdHRyaWJ1dGVzXG4gICAgdGhpcy5fc2V0SW5pdGlhbEF0dHJpYnV0ZXModGhpcy5fcGFyZW50LCB0aGlzLl9nZXRDaGlsZHJlbigpKTtcbiAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfS0VZRE9XTiwgZXZlbnQgPT4gdGhpcy5fa2V5ZG93bihldmVudCkpO1xuICB9XG5cbiAgLy8gR2V0dGVyc1xuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUUkMTtcbiAgfVxuXG4gIC8vIFB1YmxpY1xuICBzaG93KCkge1xuICAgIC8vIFNob3dzIHRoaXMgZWxlbSBhbmQgZGVhY3RpdmF0ZSB0aGUgYWN0aXZlIHNpYmxpbmcgaWYgZXhpc3RzXG4gICAgY29uc3QgaW5uZXJFbGVtID0gdGhpcy5fZWxlbWVudDtcbiAgICBpZiAodGhpcy5fZWxlbUlzQWN0aXZlKGlubmVyRWxlbSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTZWFyY2ggZm9yIGFjdGl2ZSB0YWIgb24gc2FtZSBwYXJlbnQgdG8gZGVhY3RpdmF0ZSBpdFxuICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuX2dldEFjdGl2ZUVsZW0oKTtcbiAgICBjb25zdCBoaWRlRXZlbnQgPSBhY3RpdmUgPyBFdmVudEhhbmRsZXIudHJpZ2dlcihhY3RpdmUsIEVWRU5UX0hJREUkMSwge1xuICAgICAgcmVsYXRlZFRhcmdldDogaW5uZXJFbGVtXG4gICAgfSkgOiBudWxsO1xuICAgIGNvbnN0IHNob3dFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKGlubmVyRWxlbSwgRVZFTlRfU0hPVyQxLCB7XG4gICAgICByZWxhdGVkVGFyZ2V0OiBhY3RpdmVcbiAgICB9KTtcbiAgICBpZiAoc2hvd0V2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgfHwgaGlkZUV2ZW50ICYmIGhpZGVFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2RlYWN0aXZhdGUoYWN0aXZlLCBpbm5lckVsZW0pO1xuICAgIHRoaXMuX2FjdGl2YXRlKGlubmVyRWxlbSwgYWN0aXZlKTtcbiAgfVxuXG4gIC8vIFByaXZhdGVcbiAgX2FjdGl2YXRlKGVsZW1lbnQsIHJlbGF0ZWRFbGVtKSB7XG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0FDVElWRSk7XG4gICAgdGhpcy5fYWN0aXZhdGUoU2VsZWN0b3JFbmdpbmUuZ2V0RWxlbWVudEZyb21TZWxlY3RvcihlbGVtZW50KSk7IC8vIFNlYXJjaCBhbmQgYWN0aXZhdGUvc2hvdyB0aGUgcHJvcGVyIHNlY3Rpb25cblxuICAgIGNvbnN0IGNvbXBsZXRlID0gKCkgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdyb2xlJykgIT09ICd0YWInKSB7XG4gICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX1NIT1ckMSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCd0YWJpbmRleCcpO1xuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnLCB0cnVlKTtcbiAgICAgIHRoaXMuX3RvZ2dsZURyb3BEb3duKGVsZW1lbnQsIHRydWUpO1xuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIoZWxlbWVudCwgRVZFTlRfU0hPV04kMSwge1xuICAgICAgICByZWxhdGVkVGFyZ2V0OiByZWxhdGVkRWxlbVxuICAgICAgfSk7XG4gICAgfTtcbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlLCBlbGVtZW50LCBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0ZBREUkMSkpO1xuICB9XG4gIF9kZWFjdGl2YXRlKGVsZW1lbnQsIHJlbGF0ZWRFbGVtKSB7XG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0FDVElWRSk7XG4gICAgZWxlbWVudC5ibHVyKCk7XG4gICAgdGhpcy5fZGVhY3RpdmF0ZShTZWxlY3RvckVuZ2luZS5nZXRFbGVtZW50RnJvbVNlbGVjdG9yKGVsZW1lbnQpKTsgLy8gU2VhcmNoIGFuZCBkZWFjdGl2YXRlIHRoZSBzaG93biBzZWN0aW9uIHRvb1xuXG4gICAgY29uc3QgY29tcGxldGUgPSAoKSA9PiB7XG4gICAgICBpZiAoZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3JvbGUnKSAhPT0gJ3RhYicpIHtcbiAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU0hPVyQxKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnLCBmYWxzZSk7XG4gICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEnKTtcbiAgICAgIHRoaXMuX3RvZ2dsZURyb3BEb3duKGVsZW1lbnQsIGZhbHNlKTtcbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKGVsZW1lbnQsIEVWRU5UX0hJRERFTiQxLCB7XG4gICAgICAgIHJlbGF0ZWRUYXJnZXQ6IHJlbGF0ZWRFbGVtXG4gICAgICB9KTtcbiAgICB9O1xuICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soY29tcGxldGUsIGVsZW1lbnQsIGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfRkFERSQxKSk7XG4gIH1cbiAgX2tleWRvd24oZXZlbnQpIHtcbiAgICBpZiAoIVtBUlJPV19MRUZUX0tFWSwgQVJST1dfUklHSFRfS0VZLCBBUlJPV19VUF9LRVksIEFSUk9XX0RPV05fS0VZLCBIT01FX0tFWSwgRU5EX0tFWV0uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgLy8gc3RvcFByb3BhZ2F0aW9uL3ByZXZlbnREZWZhdWx0IGJvdGggYWRkZWQgdG8gc3VwcG9ydCB1cC9kb3duIGtleXMgd2l0aG91dCBzY3JvbGxpbmcgdGhlIHBhZ2VcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5fZ2V0Q2hpbGRyZW4oKS5maWx0ZXIoZWxlbWVudCA9PiAhaXNEaXNhYmxlZChlbGVtZW50KSk7XG4gICAgbGV0IG5leHRBY3RpdmVFbGVtZW50O1xuICAgIGlmIChbSE9NRV9LRVksIEVORF9LRVldLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgIG5leHRBY3RpdmVFbGVtZW50ID0gY2hpbGRyZW5bZXZlbnQua2V5ID09PSBIT01FX0tFWSA/IDAgOiBjaGlsZHJlbi5sZW5ndGggLSAxXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaXNOZXh0ID0gW0FSUk9XX1JJR0hUX0tFWSwgQVJST1dfRE9XTl9LRVldLmluY2x1ZGVzKGV2ZW50LmtleSk7XG4gICAgICBuZXh0QWN0aXZlRWxlbWVudCA9IGdldE5leHRBY3RpdmVFbGVtZW50KGNoaWxkcmVuLCBldmVudC50YXJnZXQsIGlzTmV4dCwgdHJ1ZSk7XG4gICAgfVxuICAgIGlmIChuZXh0QWN0aXZlRWxlbWVudCkge1xuICAgICAgbmV4dEFjdGl2ZUVsZW1lbnQuZm9jdXMoe1xuICAgICAgICBwcmV2ZW50U2Nyb2xsOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIFRhYi5nZXRPckNyZWF0ZUluc3RhbmNlKG5leHRBY3RpdmVFbGVtZW50KS5zaG93KCk7XG4gICAgfVxuICB9XG4gIF9nZXRDaGlsZHJlbigpIHtcbiAgICAvLyBjb2xsZWN0aW9uIG9mIGlubmVyIGVsZW1lbnRzXG4gICAgcmV0dXJuIFNlbGVjdG9yRW5naW5lLmZpbmQoU0VMRUNUT1JfSU5ORVJfRUxFTSwgdGhpcy5fcGFyZW50KTtcbiAgfVxuICBfZ2V0QWN0aXZlRWxlbSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0Q2hpbGRyZW4oKS5maW5kKGNoaWxkID0+IHRoaXMuX2VsZW1Jc0FjdGl2ZShjaGlsZCkpIHx8IG51bGw7XG4gIH1cbiAgX3NldEluaXRpYWxBdHRyaWJ1dGVzKHBhcmVudCwgY2hpbGRyZW4pIHtcbiAgICB0aGlzLl9zZXRBdHRyaWJ1dGVJZk5vdEV4aXN0cyhwYXJlbnQsICdyb2xlJywgJ3RhYmxpc3QnKTtcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG4gICAgICB0aGlzLl9zZXRJbml0aWFsQXR0cmlidXRlc09uQ2hpbGQoY2hpbGQpO1xuICAgIH1cbiAgfVxuICBfc2V0SW5pdGlhbEF0dHJpYnV0ZXNPbkNoaWxkKGNoaWxkKSB7XG4gICAgY2hpbGQgPSB0aGlzLl9nZXRJbm5lckVsZW1lbnQoY2hpbGQpO1xuICAgIGNvbnN0IGlzQWN0aXZlID0gdGhpcy5fZWxlbUlzQWN0aXZlKGNoaWxkKTtcbiAgICBjb25zdCBvdXRlckVsZW0gPSB0aGlzLl9nZXRPdXRlckVsZW1lbnQoY2hpbGQpO1xuICAgIGNoaWxkLnNldEF0dHJpYnV0ZSgnYXJpYS1zZWxlY3RlZCcsIGlzQWN0aXZlKTtcbiAgICBpZiAob3V0ZXJFbGVtICE9PSBjaGlsZCkge1xuICAgICAgdGhpcy5fc2V0QXR0cmlidXRlSWZOb3RFeGlzdHMob3V0ZXJFbGVtLCAncm9sZScsICdwcmVzZW50YXRpb24nKTtcbiAgICB9XG4gICAgaWYgKCFpc0FjdGl2ZSkge1xuICAgICAgY2hpbGQuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICctMScpO1xuICAgIH1cbiAgICB0aGlzLl9zZXRBdHRyaWJ1dGVJZk5vdEV4aXN0cyhjaGlsZCwgJ3JvbGUnLCAndGFiJyk7XG5cbiAgICAvLyBzZXQgYXR0cmlidXRlcyB0byB0aGUgcmVsYXRlZCBwYW5lbCB0b29cbiAgICB0aGlzLl9zZXRJbml0aWFsQXR0cmlidXRlc09uVGFyZ2V0UGFuZWwoY2hpbGQpO1xuICB9XG4gIF9zZXRJbml0aWFsQXR0cmlidXRlc09uVGFyZ2V0UGFuZWwoY2hpbGQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBTZWxlY3RvckVuZ2luZS5nZXRFbGVtZW50RnJvbVNlbGVjdG9yKGNoaWxkKTtcbiAgICBpZiAoIXRhcmdldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9zZXRBdHRyaWJ1dGVJZk5vdEV4aXN0cyh0YXJnZXQsICdyb2xlJywgJ3RhYnBhbmVsJyk7XG4gICAgaWYgKGNoaWxkLmlkKSB7XG4gICAgICB0aGlzLl9zZXRBdHRyaWJ1dGVJZk5vdEV4aXN0cyh0YXJnZXQsICdhcmlhLWxhYmVsbGVkYnknLCBgJHtjaGlsZC5pZH1gKTtcbiAgICB9XG4gIH1cbiAgX3RvZ2dsZURyb3BEb3duKGVsZW1lbnQsIG9wZW4pIHtcbiAgICBjb25zdCBvdXRlckVsZW0gPSB0aGlzLl9nZXRPdXRlckVsZW1lbnQoZWxlbWVudCk7XG4gICAgaWYgKCFvdXRlckVsZW0uY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX0RST1BET1dOKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0b2dnbGUgPSAoc2VsZWN0b3IsIGNsYXNzTmFtZSkgPT4ge1xuICAgICAgY29uc3QgZWxlbWVudCA9IFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoc2VsZWN0b3IsIG91dGVyRWxlbSk7XG4gICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoY2xhc3NOYW1lLCBvcGVuKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHRvZ2dsZShTRUxFQ1RPUl9EUk9QRE9XTl9UT0dHTEUsIENMQVNTX05BTUVfQUNUSVZFKTtcbiAgICB0b2dnbGUoU0VMRUNUT1JfRFJPUERPV05fTUVOVSwgQ0xBU1NfTkFNRV9TSE9XJDEpO1xuICAgIG91dGVyRWxlbS5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCBvcGVuKTtcbiAgfVxuICBfc2V0QXR0cmlidXRlSWZOb3RFeGlzdHMoZWxlbWVudCwgYXR0cmlidXRlLCB2YWx1ZSkge1xuICAgIGlmICghZWxlbWVudC5oYXNBdHRyaWJ1dGUoYXR0cmlidXRlKSkge1xuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCB2YWx1ZSk7XG4gICAgfVxuICB9XG4gIF9lbGVtSXNBY3RpdmUoZWxlbSkge1xuICAgIHJldHVybiBlbGVtLmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0FDVElWRSk7XG4gIH1cblxuICAvLyBUcnkgdG8gZ2V0IHRoZSBpbm5lciBlbGVtZW50ICh1c3VhbGx5IHRoZSAubmF2LWxpbmspXG4gIF9nZXRJbm5lckVsZW1lbnQoZWxlbSkge1xuICAgIHJldHVybiBlbGVtLm1hdGNoZXMoU0VMRUNUT1JfSU5ORVJfRUxFTSkgPyBlbGVtIDogU2VsZWN0b3JFbmdpbmUuZmluZE9uZShTRUxFQ1RPUl9JTk5FUl9FTEVNLCBlbGVtKTtcbiAgfVxuXG4gIC8vIFRyeSB0byBnZXQgdGhlIG91dGVyIGVsZW1lbnQgKHVzdWFsbHkgdGhlIC5uYXYtaXRlbSlcbiAgX2dldE91dGVyRWxlbWVudChlbGVtKSB7XG4gICAgcmV0dXJuIGVsZW0uY2xvc2VzdChTRUxFQ1RPUl9PVVRFUikgfHwgZWxlbTtcbiAgfVxuXG4gIC8vIFN0YXRpY1xuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IFRhYi5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMpO1xuICAgICAgaWYgKHR5cGVvZiBjb25maWcgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChkYXRhW2NvbmZpZ10gPT09IHVuZGVmaW5lZCB8fCBjb25maWcuc3RhcnRzV2l0aCgnXycpIHx8IGNvbmZpZyA9PT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApO1xuICAgICAgfVxuICAgICAgZGF0YVtjb25maWddKCk7XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfQ0xJQ0tfREFUQV9BUEksIFNFTEVDVE9SX0RBVEFfVE9HR0xFLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgaWYgKFsnQScsICdBUkVBJ10uaW5jbHVkZXModGhpcy50YWdOYW1lKSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cbiAgaWYgKGlzRGlzYWJsZWQodGhpcykpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgVGFiLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcykuc2hvdygpO1xufSk7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBvbiBmb2N1c1xuICovXG5FdmVudEhhbmRsZXIub24od2luZG93LCBFVkVOVF9MT0FEX0RBVEFfQVBJLCAoKSA9PiB7XG4gIGZvciAoY29uc3QgZWxlbWVudCBvZiBTZWxlY3RvckVuZ2luZS5maW5kKFNFTEVDVE9SX0RBVEFfVE9HR0xFX0FDVElWRSkpIHtcbiAgICBUYWIuZ2V0T3JDcmVhdGVJbnN0YW5jZShlbGVtZW50KTtcbiAgfVxufSk7XG4vKipcbiAqIGpRdWVyeVxuICovXG5cbmRlZmluZUpRdWVyeVBsdWdpbihUYWIpO1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgdG9hc3QuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSA9ICd0b2FzdCc7XG5jb25zdCBEQVRBX0tFWSA9ICdicy50b2FzdCc7XG5jb25zdCBFVkVOVF9LRVkgPSBgLiR7REFUQV9LRVl9YDtcbmNvbnN0IEVWRU5UX01PVVNFT1ZFUiA9IGBtb3VzZW92ZXIke0VWRU5UX0tFWX1gO1xuY29uc3QgRVZFTlRfTU9VU0VPVVQgPSBgbW91c2VvdXQke0VWRU5UX0tFWX1gO1xuY29uc3QgRVZFTlRfRk9DVVNJTiA9IGBmb2N1c2luJHtFVkVOVF9LRVl9YDtcbmNvbnN0IEVWRU5UX0ZPQ1VTT1VUID0gYGZvY3Vzb3V0JHtFVkVOVF9LRVl9YDtcbmNvbnN0IEVWRU5UX0hJREUgPSBgaGlkZSR7RVZFTlRfS0VZfWA7XG5jb25zdCBFVkVOVF9ISURERU4gPSBgaGlkZGVuJHtFVkVOVF9LRVl9YDtcbmNvbnN0IEVWRU5UX1NIT1cgPSBgc2hvdyR7RVZFTlRfS0VZfWA7XG5jb25zdCBFVkVOVF9TSE9XTiA9IGBzaG93biR7RVZFTlRfS0VZfWA7XG5jb25zdCBDTEFTU19OQU1FX0ZBREUgPSAnZmFkZSc7XG5jb25zdCBDTEFTU19OQU1FX0hJREUgPSAnaGlkZSc7IC8vIEBkZXByZWNhdGVkIC0ga2VwdCBoZXJlIG9ubHkgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5jb25zdCBDTEFTU19OQU1FX1NIT1cgPSAnc2hvdyc7XG5jb25zdCBDTEFTU19OQU1FX1NIT1dJTkcgPSAnc2hvd2luZyc7XG5jb25zdCBEZWZhdWx0VHlwZSA9IHtcbiAgYW5pbWF0aW9uOiAnYm9vbGVhbicsXG4gIGF1dG9oaWRlOiAnYm9vbGVhbicsXG4gIGRlbGF5OiAnbnVtYmVyJ1xufTtcbmNvbnN0IERlZmF1bHQgPSB7XG4gIGFuaW1hdGlvbjogdHJ1ZSxcbiAgYXV0b2hpZGU6IHRydWUsXG4gIGRlbGF5OiA1MDAwXG59O1xuXG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBUb2FzdCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBjb25maWcpIHtcbiAgICBzdXBlcihlbGVtZW50LCBjb25maWcpO1xuICAgIHRoaXMuX3RpbWVvdXQgPSBudWxsO1xuICAgIHRoaXMuX2hhc01vdXNlSW50ZXJhY3Rpb24gPSBmYWxzZTtcbiAgICB0aGlzLl9oYXNLZXlib2FyZEludGVyYWN0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5fc2V0TGlzdGVuZXJzKCk7XG4gIH1cblxuICAvLyBHZXR0ZXJzXG4gIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHtcbiAgICByZXR1cm4gRGVmYXVsdDtcbiAgfVxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiBEZWZhdWx0VHlwZTtcbiAgfVxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUU7XG4gIH1cblxuICAvLyBQdWJsaWNcbiAgc2hvdygpIHtcbiAgICBjb25zdCBzaG93RXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9TSE9XKTtcbiAgICBpZiAoc2hvd0V2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fY2xlYXJUaW1lb3V0KCk7XG4gICAgaWYgKHRoaXMuX2NvbmZpZy5hbmltYXRpb24pIHtcbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0ZBREUpO1xuICAgIH1cbiAgICBjb25zdCBjb21wbGV0ZSA9ICgpID0+IHtcbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX1NIT1dJTkcpO1xuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfU0hPV04pO1xuICAgICAgdGhpcy5fbWF5YmVTY2hlZHVsZUhpZGUoKTtcbiAgICB9O1xuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0hJREUpOyAvLyBAZGVwcmVjYXRlZFxuICAgIHJlZmxvdyh0aGlzLl9lbGVtZW50KTtcbiAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9TSE9XLCBDTEFTU19OQU1FX1NIT1dJTkcpO1xuICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soY29tcGxldGUsIHRoaXMuX2VsZW1lbnQsIHRoaXMuX2NvbmZpZy5hbmltYXRpb24pO1xuICB9XG4gIGhpZGUoKSB7XG4gICAgaWYgKCF0aGlzLmlzU2hvd24oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBoaWRlRXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURFKTtcbiAgICBpZiAoaGlkZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29tcGxldGUgPSAoKSA9PiB7XG4gICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9ISURFKTsgLy8gQGRlcHJlY2F0ZWRcbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX1NIT1dJTkcsIENMQVNTX05BTUVfU0hPVyk7XG4gICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURERU4pO1xuICAgIH07XG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfU0hPV0lORyk7XG4gICAgdGhpcy5fcXVldWVDYWxsYmFjayhjb21wbGV0ZSwgdGhpcy5fZWxlbWVudCwgdGhpcy5fY29uZmlnLmFuaW1hdGlvbik7XG4gIH1cbiAgZGlzcG9zZSgpIHtcbiAgICB0aGlzLl9jbGVhclRpbWVvdXQoKTtcbiAgICBpZiAodGhpcy5pc1Nob3duKCkpIHtcbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX1NIT1cpO1xuICAgIH1cbiAgICBzdXBlci5kaXNwb3NlKCk7XG4gIH1cbiAgaXNTaG93bigpIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9TSE9XKTtcbiAgfVxuXG4gIC8vIFByaXZhdGVcbiAgX21heWJlU2NoZWR1bGVIaWRlKCkge1xuICAgIGlmICghdGhpcy5fY29uZmlnLmF1dG9oaWRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLl9oYXNNb3VzZUludGVyYWN0aW9uIHx8IHRoaXMuX2hhc0tleWJvYXJkSW50ZXJhY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfSwgdGhpcy5fY29uZmlnLmRlbGF5KTtcbiAgfVxuICBfb25JbnRlcmFjdGlvbihldmVudCwgaXNJbnRlcmFjdGluZykge1xuICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xuICAgICAgY2FzZSAnbW91c2VvdmVyJzpcbiAgICAgIGNhc2UgJ21vdXNlb3V0JzpcbiAgICAgICAge1xuICAgICAgICAgIHRoaXMuX2hhc01vdXNlSW50ZXJhY3Rpb24gPSBpc0ludGVyYWN0aW5nO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICBjYXNlICdmb2N1c2luJzpcbiAgICAgIGNhc2UgJ2ZvY3Vzb3V0JzpcbiAgICAgICAge1xuICAgICAgICAgIHRoaXMuX2hhc0tleWJvYXJkSW50ZXJhY3Rpb24gPSBpc0ludGVyYWN0aW5nO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChpc0ludGVyYWN0aW5nKSB7XG4gICAgICB0aGlzLl9jbGVhclRpbWVvdXQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbmV4dEVsZW1lbnQgPSBldmVudC5yZWxhdGVkVGFyZ2V0O1xuICAgIGlmICh0aGlzLl9lbGVtZW50ID09PSBuZXh0RWxlbWVudCB8fCB0aGlzLl9lbGVtZW50LmNvbnRhaW5zKG5leHRFbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9tYXliZVNjaGVkdWxlSGlkZSgpO1xuICB9XG4gIF9zZXRMaXN0ZW5lcnMoKSB7XG4gICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX01PVVNFT1ZFUiwgZXZlbnQgPT4gdGhpcy5fb25JbnRlcmFjdGlvbihldmVudCwgdHJ1ZSkpO1xuICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9NT1VTRU9VVCwgZXZlbnQgPT4gdGhpcy5fb25JbnRlcmFjdGlvbihldmVudCwgZmFsc2UpKTtcbiAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfRk9DVVNJTiwgZXZlbnQgPT4gdGhpcy5fb25JbnRlcmFjdGlvbihldmVudCwgdHJ1ZSkpO1xuICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9GT0NVU09VVCwgZXZlbnQgPT4gdGhpcy5fb25JbnRlcmFjdGlvbihldmVudCwgZmFsc2UpKTtcbiAgfVxuICBfY2xlYXJUaW1lb3V0KCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0KTtcbiAgICB0aGlzLl90aW1lb3V0ID0gbnVsbDtcbiAgfVxuXG4gIC8vIFN0YXRpY1xuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IFRvYXN0LmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcywgY29uZmlnKTtcbiAgICAgIGlmICh0eXBlb2YgY29uZmlnID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAodHlwZW9mIGRhdGFbY29uZmlnXSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApO1xuICAgICAgICB9XG4gICAgICAgIGRhdGFbY29uZmlnXSh0aGlzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIERhdGEgQVBJIGltcGxlbWVudGF0aW9uXG4gKi9cblxuZW5hYmxlRGlzbWlzc1RyaWdnZXIoVG9hc3QpO1xuXG4vKipcbiAqIGpRdWVyeVxuICovXG5cbmRlZmluZUpRdWVyeVBsdWdpbihUb2FzdCk7XG5cbmV4cG9ydCB7IEFsZXJ0LCBCdXR0b24sIENhcm91c2VsLCBDb2xsYXBzZSwgRHJvcGRvd24sIE1vZGFsLCBPZmZjYW52YXMsIFBvcG92ZXIsIFNjcm9sbFNweSwgVGFiLCBUb2FzdCwgVG9vbHRpcCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Ym9vdHN0cmFwLmVzbS5qcy5tYXBcbiIsIi8qIVxuICogVG9hc3RpZnkganMgMS4xMi4wXG4gKiBodHRwczovL2dpdGh1Yi5jb20vYXB2YXJ1bi90b2FzdGlmeS1qc1xuICogQGxpY2Vuc2UgTUlUIGxpY2Vuc2VkXG4gKlxuICogQ29weXJpZ2h0IChDKSAyMDE4IFZhcnVuIEEgUFxuICovXG4oZnVuY3Rpb24ocm9vdCwgZmFjdG9yeSkge1xuICBpZiAodHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIiAmJiBtb2R1bGUuZXhwb3J0cykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuICB9IGVsc2Uge1xuICAgIHJvb3QuVG9hc3RpZnkgPSBmYWN0b3J5KCk7XG4gIH1cbn0pKHRoaXMsIGZ1bmN0aW9uKGdsb2JhbCkge1xuICAvLyBPYmplY3QgaW5pdGlhbGl6YXRpb25cbiAgdmFyIFRvYXN0aWZ5ID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgICAgLy8gUmV0dXJuaW5nIGEgbmV3IGluaXQgb2JqZWN0XG4gICAgICByZXR1cm4gbmV3IFRvYXN0aWZ5LmxpYi5pbml0KG9wdGlvbnMpO1xuICAgIH0sXG4gICAgLy8gTGlicmFyeSB2ZXJzaW9uXG4gICAgdmVyc2lvbiA9IFwiMS4xMi4wXCI7XG5cbiAgLy8gU2V0IHRoZSBkZWZhdWx0IGdsb2JhbCBvcHRpb25zXG4gIFRvYXN0aWZ5LmRlZmF1bHRzID0ge1xuICAgIG9sZGVzdEZpcnN0OiB0cnVlLFxuICAgIHRleHQ6IFwiVG9hc3RpZnkgaXMgYXdlc29tZSFcIixcbiAgICBub2RlOiB1bmRlZmluZWQsXG4gICAgZHVyYXRpb246IDMwMDAsXG4gICAgc2VsZWN0b3I6IHVuZGVmaW5lZCxcbiAgICBjYWxsYmFjazogZnVuY3Rpb24gKCkge1xuICAgIH0sXG4gICAgZGVzdGluYXRpb246IHVuZGVmaW5lZCxcbiAgICBuZXdXaW5kb3c6IGZhbHNlLFxuICAgIGNsb3NlOiBmYWxzZSxcbiAgICBncmF2aXR5OiBcInRvYXN0aWZ5LXRvcFwiLFxuICAgIHBvc2l0aW9uTGVmdDogZmFsc2UsXG4gICAgcG9zaXRpb246ICcnLFxuICAgIGJhY2tncm91bmRDb2xvcjogJycsXG4gICAgYXZhdGFyOiBcIlwiLFxuICAgIGNsYXNzTmFtZTogXCJcIixcbiAgICBzdG9wT25Gb2N1czogdHJ1ZSxcbiAgICBvbkNsaWNrOiBmdW5jdGlvbiAoKSB7XG4gICAgfSxcbiAgICBvZmZzZXQ6IHt4OiAwLCB5OiAwfSxcbiAgICBlc2NhcGVNYXJrdXA6IHRydWUsXG4gICAgYXJpYUxpdmU6ICdwb2xpdGUnLFxuICAgIHN0eWxlOiB7YmFja2dyb3VuZDogJyd9XG4gIH07XG5cbiAgLy8gRGVmaW5pbmcgdGhlIHByb3RvdHlwZSBvZiB0aGUgb2JqZWN0XG4gIFRvYXN0aWZ5LmxpYiA9IFRvYXN0aWZ5LnByb3RvdHlwZSA9IHtcbiAgICB0b2FzdGlmeTogdmVyc2lvbixcblxuICAgIGNvbnN0cnVjdG9yOiBUb2FzdGlmeSxcblxuICAgIC8vIEluaXRpYWxpemluZyB0aGUgb2JqZWN0IHdpdGggcmVxdWlyZWQgcGFyYW1ldGVyc1xuICAgIGluaXQ6IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICAgIC8vIFZlcmlmeWluZyBhbmQgdmFsaWRhdGluZyB0aGUgaW5wdXQgb2JqZWN0XG4gICAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgICAgb3B0aW9ucyA9IHt9O1xuICAgICAgfVxuXG4gICAgICAvLyBDcmVhdGluZyB0aGUgb3B0aW9ucyBvYmplY3RcbiAgICAgIHRoaXMub3B0aW9ucyA9IHt9O1xuXG4gICAgICB0aGlzLnRvYXN0RWxlbWVudCA9IG51bGw7XG5cbiAgICAgIC8vIFZhbGlkYXRpbmcgdGhlIG9wdGlvbnNcbiAgICAgIHRoaXMub3B0aW9ucy50ZXh0ID0gb3B0aW9ucy50ZXh0IHx8IFRvYXN0aWZ5LmRlZmF1bHRzLnRleHQ7IC8vIERpc3BsYXkgbWVzc2FnZVxuICAgICAgdGhpcy5vcHRpb25zLm5vZGUgPSBvcHRpb25zLm5vZGUgfHwgVG9hc3RpZnkuZGVmYXVsdHMubm9kZTsgIC8vIERpc3BsYXkgY29udGVudCBhcyBub2RlXG4gICAgICB0aGlzLm9wdGlvbnMuZHVyYXRpb24gPSBvcHRpb25zLmR1cmF0aW9uID09PSAwID8gMCA6IG9wdGlvbnMuZHVyYXRpb24gfHwgVG9hc3RpZnkuZGVmYXVsdHMuZHVyYXRpb247IC8vIERpc3BsYXkgZHVyYXRpb25cbiAgICAgIHRoaXMub3B0aW9ucy5zZWxlY3RvciA9IG9wdGlvbnMuc2VsZWN0b3IgfHwgVG9hc3RpZnkuZGVmYXVsdHMuc2VsZWN0b3I7IC8vIFBhcmVudCBzZWxlY3RvclxuICAgICAgdGhpcy5vcHRpb25zLmNhbGxiYWNrID0gb3B0aW9ucy5jYWxsYmFjayB8fCBUb2FzdGlmeS5kZWZhdWx0cy5jYWxsYmFjazsgLy8gQ2FsbGJhY2sgYWZ0ZXIgZGlzcGxheVxuICAgICAgdGhpcy5vcHRpb25zLmRlc3RpbmF0aW9uID0gb3B0aW9ucy5kZXN0aW5hdGlvbiB8fCBUb2FzdGlmeS5kZWZhdWx0cy5kZXN0aW5hdGlvbjsgLy8gT24tY2xpY2sgZGVzdGluYXRpb25cbiAgICAgIHRoaXMub3B0aW9ucy5uZXdXaW5kb3cgPSBvcHRpb25zLm5ld1dpbmRvdyB8fCBUb2FzdGlmeS5kZWZhdWx0cy5uZXdXaW5kb3c7IC8vIE9wZW4gZGVzdGluYXRpb24gaW4gbmV3IHdpbmRvd1xuICAgICAgdGhpcy5vcHRpb25zLmNsb3NlID0gb3B0aW9ucy5jbG9zZSB8fCBUb2FzdGlmeS5kZWZhdWx0cy5jbG9zZTsgLy8gU2hvdyB0b2FzdCBjbG9zZSBpY29uXG4gICAgICB0aGlzLm9wdGlvbnMuZ3Jhdml0eSA9IG9wdGlvbnMuZ3Jhdml0eSA9PT0gXCJib3R0b21cIiA/IFwidG9hc3RpZnktYm90dG9tXCIgOiBUb2FzdGlmeS5kZWZhdWx0cy5ncmF2aXR5OyAvLyB0b2FzdCBwb3NpdGlvbiAtIHRvcCBvciBib3R0b21cbiAgICAgIHRoaXMub3B0aW9ucy5wb3NpdGlvbkxlZnQgPSBvcHRpb25zLnBvc2l0aW9uTGVmdCB8fCBUb2FzdGlmeS5kZWZhdWx0cy5wb3NpdGlvbkxlZnQ7IC8vIHRvYXN0IHBvc2l0aW9uIC0gbGVmdCBvciByaWdodFxuICAgICAgdGhpcy5vcHRpb25zLnBvc2l0aW9uID0gb3B0aW9ucy5wb3NpdGlvbiB8fCBUb2FzdGlmeS5kZWZhdWx0cy5wb3NpdGlvbjsgLy8gdG9hc3QgcG9zaXRpb24gLSBsZWZ0IG9yIHJpZ2h0XG4gICAgICB0aGlzLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yID0gb3B0aW9ucy5iYWNrZ3JvdW5kQ29sb3IgfHwgVG9hc3RpZnkuZGVmYXVsdHMuYmFja2dyb3VuZENvbG9yOyAvLyB0b2FzdCBiYWNrZ3JvdW5kIGNvbG9yXG4gICAgICB0aGlzLm9wdGlvbnMuYXZhdGFyID0gb3B0aW9ucy5hdmF0YXIgfHwgVG9hc3RpZnkuZGVmYXVsdHMuYXZhdGFyOyAvLyBpbWcgZWxlbWVudCBzcmMgLSB1cmwgb3IgYSBwYXRoXG4gICAgICB0aGlzLm9wdGlvbnMuY2xhc3NOYW1lID0gb3B0aW9ucy5jbGFzc05hbWUgfHwgVG9hc3RpZnkuZGVmYXVsdHMuY2xhc3NOYW1lOyAvLyBhZGRpdGlvbmFsIGNsYXNzIG5hbWVzIGZvciB0aGUgdG9hc3RcbiAgICAgIHRoaXMub3B0aW9ucy5zdG9wT25Gb2N1cyA9IG9wdGlvbnMuc3RvcE9uRm9jdXMgPT09IHVuZGVmaW5lZCA/IFRvYXN0aWZ5LmRlZmF1bHRzLnN0b3BPbkZvY3VzIDogb3B0aW9ucy5zdG9wT25Gb2N1czsgLy8gc3RvcCB0aW1lb3V0IG9uIGZvY3VzXG4gICAgICB0aGlzLm9wdGlvbnMub25DbGljayA9IG9wdGlvbnMub25DbGljayB8fCBUb2FzdGlmeS5kZWZhdWx0cy5vbkNsaWNrOyAvLyBDYWxsYmFjayBhZnRlciBjbGlja1xuICAgICAgdGhpcy5vcHRpb25zLm9mZnNldCA9IG9wdGlvbnMub2Zmc2V0IHx8IFRvYXN0aWZ5LmRlZmF1bHRzLm9mZnNldDsgLy8gdG9hc3Qgb2Zmc2V0XG4gICAgICB0aGlzLm9wdGlvbnMuZXNjYXBlTWFya3VwID0gb3B0aW9ucy5lc2NhcGVNYXJrdXAgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMuZXNjYXBlTWFya3VwIDogVG9hc3RpZnkuZGVmYXVsdHMuZXNjYXBlTWFya3VwO1xuICAgICAgdGhpcy5vcHRpb25zLmFyaWFMaXZlID0gb3B0aW9ucy5hcmlhTGl2ZSB8fCBUb2FzdGlmeS5kZWZhdWx0cy5hcmlhTGl2ZTtcbiAgICAgIHRoaXMub3B0aW9ucy5zdHlsZSA9IG9wdGlvbnMuc3R5bGUgfHwgVG9hc3RpZnkuZGVmYXVsdHMuc3R5bGU7XG4gICAgICBpZihvcHRpb25zLmJhY2tncm91bmRDb2xvcikge1xuICAgICAgICB0aGlzLm9wdGlvbnMuc3R5bGUuYmFja2dyb3VuZCA9IG9wdGlvbnMuYmFja2dyb3VuZENvbG9yO1xuICAgICAgfVxuXG4gICAgICAvLyBSZXR1cm5pbmcgdGhlIGN1cnJlbnQgb2JqZWN0IGZvciBjaGFpbmluZyBmdW5jdGlvbnNcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG5cbiAgICAvLyBCdWlsZGluZyB0aGUgRE9NIGVsZW1lbnRcbiAgICBidWlsZFRvYXN0OiBmdW5jdGlvbigpIHtcbiAgICAgIC8vIFZhbGlkYXRpbmcgaWYgdGhlIG9wdGlvbnMgYXJlIGRlZmluZWRcbiAgICAgIGlmICghdGhpcy5vcHRpb25zKSB7XG4gICAgICAgIHRocm93IFwiVG9hc3RpZnkgaXMgbm90IGluaXRpYWxpemVkXCI7XG4gICAgICB9XG5cbiAgICAgIC8vIENyZWF0aW5nIHRoZSBET00gb2JqZWN0XG4gICAgICB2YXIgZGl2RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICBkaXZFbGVtZW50LmNsYXNzTmFtZSA9IFwidG9hc3RpZnkgb24gXCIgKyB0aGlzLm9wdGlvbnMuY2xhc3NOYW1lO1xuXG4gICAgICAvLyBQb3NpdGlvbmluZyB0b2FzdCB0byBsZWZ0IG9yIHJpZ2h0IG9yIGNlbnRlclxuICAgICAgaWYgKCEhdGhpcy5vcHRpb25zLnBvc2l0aW9uKSB7XG4gICAgICAgIGRpdkVsZW1lbnQuY2xhc3NOYW1lICs9IFwiIHRvYXN0aWZ5LVwiICsgdGhpcy5vcHRpb25zLnBvc2l0aW9uO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVG8gYmUgZGVwcmVjaWF0ZWQgaW4gZnVydGhlciB2ZXJzaW9uc1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnBvc2l0aW9uTGVmdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGRpdkVsZW1lbnQuY2xhc3NOYW1lICs9IFwiIHRvYXN0aWZ5LWxlZnRcIjtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ1Byb3BlcnR5IGBwb3NpdGlvbkxlZnRgIHdpbGwgYmUgZGVwcmVjaWF0ZWQgaW4gZnVydGhlciB2ZXJzaW9ucy4gUGxlYXNlIHVzZSBgcG9zaXRpb25gIGluc3RlYWQuJylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBEZWZhdWx0IHBvc2l0aW9uXG4gICAgICAgICAgZGl2RWxlbWVudC5jbGFzc05hbWUgKz0gXCIgdG9hc3RpZnktcmlnaHRcIjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBBc3NpZ25pbmcgZ3Jhdml0eSBvZiBlbGVtZW50XG4gICAgICBkaXZFbGVtZW50LmNsYXNzTmFtZSArPSBcIiBcIiArIHRoaXMub3B0aW9ucy5ncmF2aXR5O1xuXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmJhY2tncm91bmRDb2xvcikge1xuICAgICAgICAvLyBUaGlzIGlzIGJlaW5nIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdXNpbmcgdGhlIHN0eWxlIEhUTUwgRE9NIHByb3BlcnR5XG4gICAgICAgIGNvbnNvbGUud2FybignREVQUkVDQVRJT04gTk9USUNFOiBcImJhY2tncm91bmRDb2xvclwiIGlzIGJlaW5nIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgdGhlIFwic3R5bGUuYmFja2dyb3VuZFwiIHByb3BlcnR5LicpO1xuICAgICAgfVxuXG4gICAgICAvLyBMb29wIHRocm91Z2ggb3VyIHN0eWxlIG9iamVjdCBhbmQgYXBwbHkgc3R5bGVzIHRvIGRpdkVsZW1lbnRcbiAgICAgIGZvciAodmFyIHByb3BlcnR5IGluIHRoaXMub3B0aW9ucy5zdHlsZSkge1xuICAgICAgICBkaXZFbGVtZW50LnN0eWxlW3Byb3BlcnR5XSA9IHRoaXMub3B0aW9ucy5zdHlsZVtwcm9wZXJ0eV07XG4gICAgICB9XG5cbiAgICAgIC8vIEFubm91bmNlIHRoZSB0b2FzdCB0byBzY3JlZW4gcmVhZGVyc1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5hcmlhTGl2ZSkge1xuICAgICAgICBkaXZFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1saXZlJywgdGhpcy5vcHRpb25zLmFyaWFMaXZlKVxuICAgICAgfVxuXG4gICAgICAvLyBBZGRpbmcgdGhlIHRvYXN0IG1lc3NhZ2Uvbm9kZVxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5ub2RlICYmIHRoaXMub3B0aW9ucy5ub2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSkge1xuICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgdmFsaWQgbm9kZSwgd2UgaW5zZXJ0IGl0XG4gICAgICAgIGRpdkVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5vcHRpb25zLm5vZGUpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmVzY2FwZU1hcmt1cCkge1xuICAgICAgICAgIGRpdkVsZW1lbnQuaW5uZXJUZXh0ID0gdGhpcy5vcHRpb25zLnRleHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGl2RWxlbWVudC5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMudGV4dDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYXZhdGFyICE9PSBcIlwiKSB7XG4gICAgICAgICAgdmFyIGF2YXRhckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW1nXCIpO1xuICAgICAgICAgIGF2YXRhckVsZW1lbnQuc3JjID0gdGhpcy5vcHRpb25zLmF2YXRhcjtcblxuICAgICAgICAgIGF2YXRhckVsZW1lbnQuY2xhc3NOYW1lID0gXCJ0b2FzdGlmeS1hdmF0YXJcIjtcblxuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucG9zaXRpb24gPT0gXCJsZWZ0XCIgfHwgdGhpcy5vcHRpb25zLnBvc2l0aW9uTGVmdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgLy8gQWRkaW5nIGNsb3NlIGljb24gb24gdGhlIGxlZnQgb2YgY29udGVudFxuICAgICAgICAgICAgZGl2RWxlbWVudC5hcHBlbmRDaGlsZChhdmF0YXJFbGVtZW50KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQWRkaW5nIGNsb3NlIGljb24gb24gdGhlIHJpZ2h0IG9mIGNvbnRlbnRcbiAgICAgICAgICAgIGRpdkVsZW1lbnQuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KFwiYWZ0ZXJiZWdpblwiLCBhdmF0YXJFbGVtZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQWRkaW5nIGEgY2xvc2UgaWNvbiB0byB0aGUgdG9hc3RcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuY2xvc2UgPT09IHRydWUpIHtcbiAgICAgICAgLy8gQ3JlYXRlIGEgc3BhbiBmb3IgY2xvc2UgZWxlbWVudFxuICAgICAgICB2YXIgY2xvc2VFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiKTtcbiAgICAgICAgY2xvc2VFbGVtZW50LnR5cGUgPSBcImJ1dHRvblwiO1xuICAgICAgICBjbG9zZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLCBcIkNsb3NlXCIpO1xuICAgICAgICBjbG9zZUVsZW1lbnQuY2xhc3NOYW1lID0gXCJ0b2FzdC1jbG9zZVwiO1xuICAgICAgICBjbG9zZUVsZW1lbnQuaW5uZXJIVE1MID0gXCImIzEwMDA2O1wiO1xuXG4gICAgICAgIC8vIFRyaWdnZXJpbmcgdGhlIHJlbW92YWwgb2YgdG9hc3QgZnJvbSBET00gb24gY2xvc2UgY2xpY2tcbiAgICAgICAgY2xvc2VFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgXCJjbGlja1wiLFxuICAgICAgICAgIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlRWxlbWVudCh0aGlzLnRvYXN0RWxlbWVudCk7XG4gICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMudG9hc3RFbGVtZW50LnRpbWVPdXRWYWx1ZSk7XG4gICAgICAgICAgfS5iaW5kKHRoaXMpXG4gICAgICAgICk7XG5cbiAgICAgICAgLy9DYWxjdWxhdGluZyBzY3JlZW4gd2lkdGhcbiAgICAgICAgdmFyIHdpZHRoID0gd2luZG93LmlubmVyV2lkdGggPiAwID8gd2luZG93LmlubmVyV2lkdGggOiBzY3JlZW4ud2lkdGg7XG5cbiAgICAgICAgLy8gQWRkaW5nIHRoZSBjbG9zZSBpY29uIHRvIHRoZSB0b2FzdCBlbGVtZW50XG4gICAgICAgIC8vIERpc3BsYXkgb24gdGhlIHJpZ2h0IGlmIHNjcmVlbiB3aWR0aCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMzYwcHhcbiAgICAgICAgaWYgKCh0aGlzLm9wdGlvbnMucG9zaXRpb24gPT0gXCJsZWZ0XCIgfHwgdGhpcy5vcHRpb25zLnBvc2l0aW9uTGVmdCA9PT0gdHJ1ZSkgJiYgd2lkdGggPiAzNjApIHtcbiAgICAgICAgICAvLyBBZGRpbmcgY2xvc2UgaWNvbiBvbiB0aGUgbGVmdCBvZiBjb250ZW50XG4gICAgICAgICAgZGl2RWxlbWVudC5pbnNlcnRBZGphY2VudEVsZW1lbnQoXCJhZnRlcmJlZ2luXCIsIGNsb3NlRWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQWRkaW5nIGNsb3NlIGljb24gb24gdGhlIHJpZ2h0IG9mIGNvbnRlbnRcbiAgICAgICAgICBkaXZFbGVtZW50LmFwcGVuZENoaWxkKGNsb3NlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQ2xlYXIgdGltZW91dCB3aGlsZSB0b2FzdCBpcyBmb2N1c2VkXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnN0b3BPbkZvY3VzICYmIHRoaXMub3B0aW9ucy5kdXJhdGlvbiA+IDApIHtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgICAvLyBzdG9wIGNvdW50ZG93blxuICAgICAgICBkaXZFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgXCJtb3VzZW92ZXJcIixcbiAgICAgICAgICBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dChkaXZFbGVtZW50LnRpbWVPdXRWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICAgIC8vIGFkZCBiYWNrIHRoZSB0aW1lb3V0XG4gICAgICAgIGRpdkVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICBcIm1vdXNlbGVhdmVcIixcbiAgICAgICAgICBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGRpdkVsZW1lbnQudGltZU91dFZhbHVlID0gd2luZG93LnNldFRpbWVvdXQoXG4gICAgICAgICAgICAgIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgdG9hc3QgZnJvbSBET01cbiAgICAgICAgICAgICAgICBzZWxmLnJlbW92ZUVsZW1lbnQoZGl2RWxlbWVudCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHNlbGYub3B0aW9ucy5kdXJhdGlvblxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICAvLyBBZGRpbmcgYW4gb24tY2xpY2sgZGVzdGluYXRpb24gcGF0aFxuICAgICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMuZGVzdGluYXRpb24gIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgZGl2RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgIFwiY2xpY2tcIixcbiAgICAgICAgICBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLm5ld1dpbmRvdyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICB3aW5kb3cub3Blbih0aGlzLm9wdGlvbnMuZGVzdGluYXRpb24sIFwiX2JsYW5rXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gdGhpcy5vcHRpb25zLmRlc3RpbmF0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0uYmluZCh0aGlzKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5vbkNsaWNrID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIHRoaXMub3B0aW9ucy5kZXN0aW5hdGlvbiA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBkaXZFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgXCJjbGlja1wiLFxuICAgICAgICAgIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5vbkNsaWNrKCk7XG4gICAgICAgICAgfS5iaW5kKHRoaXMpXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIEFkZGluZyBvZmZzZXRcbiAgICAgIGlmKHR5cGVvZiB0aGlzLm9wdGlvbnMub2Zmc2V0ID09PSBcIm9iamVjdFwiKSB7XG5cbiAgICAgICAgdmFyIHggPSBnZXRBeGlzT2Zmc2V0QVZhbHVlKFwieFwiLCB0aGlzLm9wdGlvbnMpO1xuICAgICAgICB2YXIgeSA9IGdldEF4aXNPZmZzZXRBVmFsdWUoXCJ5XCIsIHRoaXMub3B0aW9ucyk7XG5cbiAgICAgICAgdmFyIHhPZmZzZXQgPSB0aGlzLm9wdGlvbnMucG9zaXRpb24gPT0gXCJsZWZ0XCIgPyB4IDogXCItXCIgKyB4O1xuICAgICAgICB2YXIgeU9mZnNldCA9IHRoaXMub3B0aW9ucy5ncmF2aXR5ID09IFwidG9hc3RpZnktdG9wXCIgPyB5IDogXCItXCIgKyB5O1xuXG4gICAgICAgIGRpdkVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gXCJ0cmFuc2xhdGUoXCIgKyB4T2Zmc2V0ICsgXCIsXCIgKyB5T2Zmc2V0ICsgXCIpXCI7XG5cbiAgICAgIH1cblxuICAgICAgLy8gUmV0dXJuaW5nIHRoZSBnZW5lcmF0ZWQgZWxlbWVudFxuICAgICAgcmV0dXJuIGRpdkVsZW1lbnQ7XG4gICAgfSxcblxuICAgIC8vIERpc3BsYXlpbmcgdGhlIHRvYXN0XG4gICAgc2hvd1RvYXN0OiBmdW5jdGlvbigpIHtcbiAgICAgIC8vIENyZWF0aW5nIHRoZSBET00gb2JqZWN0IGZvciB0aGUgdG9hc3RcbiAgICAgIHRoaXMudG9hc3RFbGVtZW50ID0gdGhpcy5idWlsZFRvYXN0KCk7XG5cbiAgICAgIC8vIEdldHRpbmcgdGhlIHJvb3QgZWxlbWVudCB0byB3aXRoIHRoZSB0b2FzdCBuZWVkcyB0byBiZSBhZGRlZFxuICAgICAgdmFyIHJvb3RFbGVtZW50O1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMuc2VsZWN0b3IgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcm9vdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLm9wdGlvbnMuc2VsZWN0b3IpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbnMuc2VsZWN0b3IgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCB8fCAodHlwZW9mIFNoYWRvd1Jvb3QgIT09ICd1bmRlZmluZWQnICYmIHRoaXMub3B0aW9ucy5zZWxlY3RvciBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QpKSB7XG4gICAgICAgIHJvb3RFbGVtZW50ID0gdGhpcy5vcHRpb25zLnNlbGVjdG9yO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm9vdEVsZW1lbnQgPSBkb2N1bWVudC5ib2R5O1xuICAgICAgfVxuXG4gICAgICAvLyBWYWxpZGF0aW5nIGlmIHJvb3QgZWxlbWVudCBpcyBwcmVzZW50IGluIERPTVxuICAgICAgaWYgKCFyb290RWxlbWVudCkge1xuICAgICAgICB0aHJvdyBcIlJvb3QgZWxlbWVudCBpcyBub3QgZGVmaW5lZFwiO1xuICAgICAgfVxuXG4gICAgICAvLyBBZGRpbmcgdGhlIERPTSBlbGVtZW50XG4gICAgICB2YXIgZWxlbWVudFRvSW5zZXJ0ID0gVG9hc3RpZnkuZGVmYXVsdHMub2xkZXN0Rmlyc3QgPyByb290RWxlbWVudC5maXJzdENoaWxkIDogcm9vdEVsZW1lbnQubGFzdENoaWxkO1xuICAgICAgcm9vdEVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMudG9hc3RFbGVtZW50LCBlbGVtZW50VG9JbnNlcnQpO1xuXG4gICAgICAvLyBSZXBvc2l0aW9uaW5nIHRoZSB0b2FzdHMgaW4gY2FzZSBtdWx0aXBsZSB0b2FzdHMgYXJlIHByZXNlbnRcbiAgICAgIFRvYXN0aWZ5LnJlcG9zaXRpb24oKTtcblxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5kdXJhdGlvbiA+IDApIHtcbiAgICAgICAgdGhpcy50b2FzdEVsZW1lbnQudGltZU91dFZhbHVlID0gd2luZG93LnNldFRpbWVvdXQoXG4gICAgICAgICAgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIHRvYXN0IGZyb20gRE9NXG4gICAgICAgICAgICB0aGlzLnJlbW92ZUVsZW1lbnQodGhpcy50b2FzdEVsZW1lbnQpO1xuICAgICAgICAgIH0uYmluZCh0aGlzKSxcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuZHVyYXRpb25cbiAgICAgICAgKTsgLy8gQmluZGluZyBgdGhpc2AgZm9yIGZ1bmN0aW9uIGludm9jYXRpb25cbiAgICAgIH1cblxuICAgICAgLy8gU3VwcG9ydGluZyBmdW5jdGlvbiBjaGFpbmluZ1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuICAgIGhpZGVUb2FzdDogZnVuY3Rpb24oKSB7XG4gICAgICBpZiAodGhpcy50b2FzdEVsZW1lbnQudGltZU91dFZhbHVlKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRvYXN0RWxlbWVudC50aW1lT3V0VmFsdWUpO1xuICAgICAgfVxuICAgICAgdGhpcy5yZW1vdmVFbGVtZW50KHRoaXMudG9hc3RFbGVtZW50KTtcbiAgICB9LFxuXG4gICAgLy8gUmVtb3ZpbmcgdGhlIGVsZW1lbnQgZnJvbSB0aGUgRE9NXG4gICAgcmVtb3ZlRWxlbWVudDogZnVuY3Rpb24odG9hc3RFbGVtZW50KSB7XG4gICAgICAvLyBIaWRpbmcgdGhlIGVsZW1lbnRcbiAgICAgIC8vIHRvYXN0RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwib25cIik7XG4gICAgICB0b2FzdEVsZW1lbnQuY2xhc3NOYW1lID0gdG9hc3RFbGVtZW50LmNsYXNzTmFtZS5yZXBsYWNlKFwiIG9uXCIsIFwiXCIpO1xuXG4gICAgICAvLyBSZW1vdmluZyB0aGUgZWxlbWVudCBmcm9tIERPTSBhZnRlciB0cmFuc2l0aW9uIGVuZFxuICAgICAgd2luZG93LnNldFRpbWVvdXQoXG4gICAgICAgIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIC8vIHJlbW92ZSBvcHRpb25zIG5vZGUgaWYgYW55XG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ub2RlICYmIHRoaXMub3B0aW9ucy5ub2RlLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5ub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5vcHRpb25zLm5vZGUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFJlbW92ZSB0aGUgZWxlbWVudCBmcm9tIHRoZSBET00sIG9ubHkgd2hlbiB0aGUgcGFyZW50IG5vZGUgd2FzIG5vdCByZW1vdmVkIGJlZm9yZS5cbiAgICAgICAgICBpZiAodG9hc3RFbGVtZW50LnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIHRvYXN0RWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRvYXN0RWxlbWVudCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQ2FsbGluZyB0aGUgY2FsbGJhY2sgZnVuY3Rpb25cbiAgICAgICAgICB0aGlzLm9wdGlvbnMuY2FsbGJhY2suY2FsbCh0b2FzdEVsZW1lbnQpO1xuXG4gICAgICAgICAgLy8gUmVwb3NpdGlvbmluZyB0aGUgdG9hc3RzIGFnYWluXG4gICAgICAgICAgVG9hc3RpZnkucmVwb3NpdGlvbigpO1xuICAgICAgICB9LmJpbmQodGhpcyksXG4gICAgICAgIDQwMFxuICAgICAgKTsgLy8gQmluZGluZyBgdGhpc2AgZm9yIGZ1bmN0aW9uIGludm9jYXRpb25cbiAgICB9LFxuICB9O1xuXG4gIC8vIFBvc2l0aW9uaW5nIHRoZSB0b2FzdHMgb24gdGhlIERPTVxuICBUb2FzdGlmeS5yZXBvc2l0aW9uID0gZnVuY3Rpb24oKSB7XG5cbiAgICAvLyBUb3AgbWFyZ2lucyB3aXRoIGdyYXZpdHlcbiAgICB2YXIgdG9wTGVmdE9mZnNldFNpemUgPSB7XG4gICAgICB0b3A6IDE1LFxuICAgICAgYm90dG9tOiAxNSxcbiAgICB9O1xuICAgIHZhciB0b3BSaWdodE9mZnNldFNpemUgPSB7XG4gICAgICB0b3A6IDE1LFxuICAgICAgYm90dG9tOiAxNSxcbiAgICB9O1xuICAgIHZhciBvZmZzZXRTaXplID0ge1xuICAgICAgdG9wOiAxNSxcbiAgICAgIGJvdHRvbTogMTUsXG4gICAgfTtcblxuICAgIC8vIEdldCBhbGwgdG9hc3QgbWVzc2FnZXMgb24gdGhlIERPTVxuICAgIHZhciBhbGxUb2FzdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwidG9hc3RpZnlcIik7XG5cbiAgICB2YXIgY2xhc3NVc2VkO1xuXG4gICAgLy8gTW9kaWZ5aW5nIHRoZSBwb3NpdGlvbiBvZiBlYWNoIHRvYXN0IGVsZW1lbnRcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFsbFRvYXN0cy5sZW5ndGg7IGkrKykge1xuICAgICAgLy8gR2V0dGluZyB0aGUgYXBwbGllZCBncmF2aXR5XG4gICAgICBpZiAoY29udGFpbnNDbGFzcyhhbGxUb2FzdHNbaV0sIFwidG9hc3RpZnktdG9wXCIpID09PSB0cnVlKSB7XG4gICAgICAgIGNsYXNzVXNlZCA9IFwidG9hc3RpZnktdG9wXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjbGFzc1VzZWQgPSBcInRvYXN0aWZ5LWJvdHRvbVwiO1xuICAgICAgfVxuXG4gICAgICB2YXIgaGVpZ2h0ID0gYWxsVG9hc3RzW2ldLm9mZnNldEhlaWdodDtcbiAgICAgIGNsYXNzVXNlZCA9IGNsYXNzVXNlZC5zdWJzdHIoOSwgY2xhc3NVc2VkLmxlbmd0aC0xKVxuICAgICAgLy8gU3BhY2luZyBiZXR3ZWVuIHRvYXN0c1xuICAgICAgdmFyIG9mZnNldCA9IDE1O1xuXG4gICAgICB2YXIgd2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCA+IDAgPyB3aW5kb3cuaW5uZXJXaWR0aCA6IHNjcmVlbi53aWR0aDtcblxuICAgICAgLy8gU2hvdyB0b2FzdCBpbiBjZW50ZXIgaWYgc2NyZWVuIHdpdGggbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDM2MHB4XG4gICAgICBpZiAod2lkdGggPD0gMzYwKSB7XG4gICAgICAgIC8vIFNldHRpbmcgdGhlIHBvc2l0aW9uXG4gICAgICAgIGFsbFRvYXN0c1tpXS5zdHlsZVtjbGFzc1VzZWRdID0gb2Zmc2V0U2l6ZVtjbGFzc1VzZWRdICsgXCJweFwiO1xuXG4gICAgICAgIG9mZnNldFNpemVbY2xhc3NVc2VkXSArPSBoZWlnaHQgKyBvZmZzZXQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoY29udGFpbnNDbGFzcyhhbGxUb2FzdHNbaV0sIFwidG9hc3RpZnktbGVmdFwiKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIC8vIFNldHRpbmcgdGhlIHBvc2l0aW9uXG4gICAgICAgICAgYWxsVG9hc3RzW2ldLnN0eWxlW2NsYXNzVXNlZF0gPSB0b3BMZWZ0T2Zmc2V0U2l6ZVtjbGFzc1VzZWRdICsgXCJweFwiO1xuXG4gICAgICAgICAgdG9wTGVmdE9mZnNldFNpemVbY2xhc3NVc2VkXSArPSBoZWlnaHQgKyBvZmZzZXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gU2V0dGluZyB0aGUgcG9zaXRpb25cbiAgICAgICAgICBhbGxUb2FzdHNbaV0uc3R5bGVbY2xhc3NVc2VkXSA9IHRvcFJpZ2h0T2Zmc2V0U2l6ZVtjbGFzc1VzZWRdICsgXCJweFwiO1xuXG4gICAgICAgICAgdG9wUmlnaHRPZmZzZXRTaXplW2NsYXNzVXNlZF0gKz0gaGVpZ2h0ICsgb2Zmc2V0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU3VwcG9ydGluZyBmdW5jdGlvbiBjaGFpbmluZ1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIEhlbHBlciBmdW5jdGlvbiB0byBnZXQgb2Zmc2V0LlxuICBmdW5jdGlvbiBnZXRBeGlzT2Zmc2V0QVZhbHVlKGF4aXMsIG9wdGlvbnMpIHtcblxuICAgIGlmKG9wdGlvbnMub2Zmc2V0W2F4aXNdKSB7XG4gICAgICBpZihpc05hTihvcHRpb25zLm9mZnNldFtheGlzXSkpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMub2Zmc2V0W2F4aXNdO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBvcHRpb25zLm9mZnNldFtheGlzXSArICdweCc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuICcwcHgnO1xuXG4gIH1cblxuICBmdW5jdGlvbiBjb250YWluc0NsYXNzKGVsZW0sIHlvdXJDbGFzcykge1xuICAgIGlmICghZWxlbSB8fCB0eXBlb2YgeW91ckNsYXNzICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGVsZW0uY2xhc3NOYW1lICYmXG4gICAgICBlbGVtLmNsYXNzTmFtZVxuICAgICAgICAudHJpbSgpXG4gICAgICAgIC5zcGxpdCgvXFxzKy9naSlcbiAgICAgICAgLmluZGV4T2YoeW91ckNsYXNzKSA+IC0xXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNldHRpbmcgdXAgdGhlIHByb3RvdHlwZSBmb3IgdGhlIGluaXQgb2JqZWN0XG4gIFRvYXN0aWZ5LmxpYi5pbml0LnByb3RvdHlwZSA9IFRvYXN0aWZ5LmxpYjtcblxuICAvLyBSZXR1cm5pbmcgdGhlIFRvYXN0aWZ5IGZ1bmN0aW9uIHRvIGJlIGFzc2lnbmVkIHRvIHRoZSB3aW5kb3cgb2JqZWN0L21vZHVsZVxuICByZXR1cm4gVG9hc3RpZnk7XG59KTtcbiIsImltcG9ydCBUb2FzdGlmeSBmcm9tICd0b2FzdGlmeS1qcyc7IC8vIGRhcyBNb2R1bCB3aXJkIHZvbSBub2RlX21vZHVsZXMgT3JkbmVyIGF1c2dlbGVzZW4gdW5kIGdlYnVuZGxldC4gRnVua3Rpb25pZXJ0IG51ciBtaXQgSlMtQnVuZGxlciAocm9sbHVwL2VzYnVpbGQpXG5cbmNvbnN0IFRvYXN0ID0gKHRleHQgPSAnJywgdmFyaWFudE9yT3B0aW9ucyA9ICdwcmltYXJ5JykgPT4ge1xuICAvLyBFbnR3ZWRlciBzdHJpbmcgb2RlciBPYmpla3RcbiAgY29uc3QgdXNlck9wdGlvbnMgPVxuICAgIHR5cGVvZiB2YXJpYW50T3JPcHRpb25zID09PSAnc3RyaW5nJ1xuICAgICAgPyB7IHZhcmlhbnQ6IHZhcmlhbnRPck9wdGlvbnMgfSAvL1xuICAgICAgOiB7IC4uLnZhcmlhbnRPck9wdGlvbnMgfTtcblxuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICB2YXJpYW50OiAncHJpbWFyeScsXG4gICAgZHVyYXRpb246IDIwMDAsXG4gICAgZ3Jhdml0eTogJ3RvcCcsXG4gICAgcG9zaXRpb246ICdjZW50ZXInLFxuICAgIHN0b3BPbkZvY3VzOiB0cnVlLFxuICB9O1xuXG4gIGNvbnN0IG9wdGlvbnMgPSB7IC4uLmRlZmF1bHRPcHRpb25zLCAuLi51c2VyT3B0aW9ucyB9O1xuXG4gIGNvbnN0IGdldENvbG9yQnlOYW1lID0gKHZhcmlhbnQgPSAnJykgPT4ge1xuICAgIGxldCBjb2xvcjtcbiAgICBzd2l0Y2ggKHZhcmlhbnQudHJpbSgpLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgJ3ByaW1hcnknOlxuICAgICAgICBjb2xvciA9ICcjMGQ2ZWZkJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzZWNvbmRhcnknOlxuICAgICAgICBjb2xvciA9ICcjNmM3NTdkJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd3YXJuaW5nJzpcbiAgICAgICAgY29sb3IgPSAnI2ZmYzcyMCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc3VjY2Vzcyc6XG4gICAgICAgIGNvbG9yID0gJyMxMzY1M2YnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2luZm8nOlxuICAgICAgICBjb2xvciA9ICcjMjVjZmYyJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICBjYXNlICdkYW5nZXInOlxuICAgICAgICBjb2xvciA9ICcjYTUyODM0JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdsaWdodCc6XG4gICAgICAgIGNvbG9yID0gJyNiYWJiYmMnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2RhcmsnOlxuICAgICAgICBjb2xvciA9ICcjMzczYjNlJztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnNvbGUud2FybigndmFyaWFudCBub3QgZm91bmQnKTtcbiAgICAgICAgY29sb3IgPSAnd2hpdGUnO1xuICAgIH1cbiAgICByZXR1cm4gY29sb3I7XG4gIH07XG5cbiAgY29uc3Qgc2hvdyA9ICgpID0+IHtcbiAgICBjb25zdCB7IHZhcmlhbnQsIHN0eWxlLCAuLi5yZXN0UHJvcHMgfSA9IG9wdGlvbnM7XG5cbiAgICBUb2FzdGlmeSh7XG4gICAgICB0ZXh0LFxuICAgICAgY2xhc3NOYW1lOiB2YXJpYW50LFxuICAgICAgLi4ucmVzdFByb3BzLFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgYmFja2dyb3VuZDogZ2V0Q29sb3JCeU5hbWUodmFyaWFudCksXG4gICAgICAgIC4uLnN0eWxlLCAvLyBFcm3DtmdsaWNodCBiZWkgQmVkYXJmIGF1Y2ggaW5kaXZpZHVlbGxlIENTUy1PdmVycmlkZXNcbiAgICAgIH0sXG4gICAgfSkuc2hvd1RvYXN0KCk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBzaG93LFxuICB9O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVG9hc3Q7XG4iLCJpbXBvcnQgdmFsaWRhdGUgZnJvbSAnLi92YWxpZGF0ZS5qcyc7XG5jb25zdCBieXRlVG9IZXggPSBbXTtcbmZvciAobGV0IGkgPSAwOyBpIDwgMjU2OyArK2kpIHtcbiAgICBieXRlVG9IZXgucHVzaCgoaSArIDB4MTAwKS50b1N0cmluZygxNikuc2xpY2UoMSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHVuc2FmZVN0cmluZ2lmeShhcnIsIG9mZnNldCA9IDApIHtcbiAgICByZXR1cm4gKGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMF1dICtcbiAgICAgICAgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxXV0gK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDJdXSArXG4gICAgICAgIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgM11dICtcbiAgICAgICAgJy0nICtcbiAgICAgICAgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA0XV0gK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDVdXSArXG4gICAgICAgICctJyArXG4gICAgICAgIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgNl1dICtcbiAgICAgICAgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA3XV0gK1xuICAgICAgICAnLScgK1xuICAgICAgICBieXRlVG9IZXhbYXJyW29mZnNldCArIDhdXSArXG4gICAgICAgIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgOV1dICtcbiAgICAgICAgJy0nICtcbiAgICAgICAgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxMF1dICtcbiAgICAgICAgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxMV1dICtcbiAgICAgICAgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxMl1dICtcbiAgICAgICAgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxM11dICtcbiAgICAgICAgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxNF1dICtcbiAgICAgICAgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxNV1dKS50b0xvd2VyQ2FzZSgpO1xufVxuZnVuY3Rpb24gc3RyaW5naWZ5KGFyciwgb2Zmc2V0ID0gMCkge1xuICAgIGNvbnN0IHV1aWQgPSB1bnNhZmVTdHJpbmdpZnkoYXJyLCBvZmZzZXQpO1xuICAgIGlmICghdmFsaWRhdGUodXVpZCkpIHtcbiAgICAgICAgdGhyb3cgVHlwZUVycm9yKCdTdHJpbmdpZmllZCBVVUlEIGlzIGludmFsaWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHV1aWQ7XG59XG5leHBvcnQgZGVmYXVsdCBzdHJpbmdpZnk7XG4iLCJjb25zdCBybmRzOCA9IG5ldyBVaW50OEFycmF5KDE2KTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJuZygpIHtcbiAgICByZXR1cm4gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhybmRzOCk7XG59XG4iLCJpbXBvcnQgcm5nIGZyb20gJy4vcm5nLmpzJztcbmltcG9ydCB7IHVuc2FmZVN0cmluZ2lmeSB9IGZyb20gJy4vc3RyaW5naWZ5LmpzJztcbmZ1bmN0aW9uIHY0KG9wdGlvbnMsIGJ1Ziwgb2Zmc2V0KSB7XG4gICAgaWYgKCFidWYgJiYgIW9wdGlvbnMgJiYgY3J5cHRvLnJhbmRvbVVVSUQpIHtcbiAgICAgICAgcmV0dXJuIGNyeXB0by5yYW5kb21VVUlEKCk7XG4gICAgfVxuICAgIHJldHVybiBfdjQob3B0aW9ucywgYnVmLCBvZmZzZXQpO1xufVxuZnVuY3Rpb24gX3Y0KG9wdGlvbnMsIGJ1Ziwgb2Zmc2V0KSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgY29uc3Qgcm5kcyA9IG9wdGlvbnMucmFuZG9tID8/IG9wdGlvbnMucm5nPy4oKSA/PyBybmcoKTtcbiAgICBpZiAocm5kcy5sZW5ndGggPCAxNikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JhbmRvbSBieXRlcyBsZW5ndGggbXVzdCBiZSA+PSAxNicpO1xuICAgIH1cbiAgICBybmRzWzZdID0gKHJuZHNbNl0gJiAweDBmKSB8IDB4NDA7XG4gICAgcm5kc1s4XSA9IChybmRzWzhdICYgMHgzZikgfCAweDgwO1xuICAgIGlmIChidWYpIHtcbiAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0IHx8IDA7XG4gICAgICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCArIDE2ID4gYnVmLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFVVSUQgYnl0ZSByYW5nZSAke29mZnNldH06JHtvZmZzZXQgKyAxNX0gaXMgb3V0IG9mIGJ1ZmZlciBib3VuZHNgKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDE2OyArK2kpIHtcbiAgICAgICAgICAgIGJ1ZltvZmZzZXQgKyBpXSA9IHJuZHNbaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJ1ZjtcbiAgICB9XG4gICAgcmV0dXJuIHVuc2FmZVN0cmluZ2lmeShybmRzKTtcbn1cbmV4cG9ydCBkZWZhdWx0IHY0O1xuIiwiaW1wb3J0IHsgcGFyZW50cyB9IGZyb20gJy4uL3V0aWxzL2hlbHBlcnMuanMnO1xuaW1wb3J0IHsgTW9kYWwgfSBmcm9tICdib290c3RyYXAnO1xuaW1wb3J0IFRvYXN0IGZyb20gJy4vVG9hc3QnO1xuaW1wb3J0IHsgdjQgYXMgaWQgfSBmcm9tICd1dWlkJztcblxuLy9pbXBvcnQgKiBhcyBib290c3RyYXAgZnJvbSAnYm9vdHN0cmFwJztcbi8vIGltcG9ydCAnYm9vdHN0cmFwJztcblxuLy8gRmFjdG9yeSBGdW5jdGlvblxuY29uc3QgUHJvZHVjdE1hbmFnZXIgPSAodGFyZ2V0ID0gJy5wcm9kdWN0LW1hbmFnZXInLCBvcHRpb25zID0ge30pID0+IHtcbiAgLy8gPT09IFNlbGVrdG9yIG9yIEVsZW1lbnQgID09PVxuICBpZiAodHlwZW9mIHRhcmdldCA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwodGFyZ2V0KTtcblxuICAgIGlmIChlbGVtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnNvbGUud2FybignUHJvZHVjdCBNYW5hZ2VyIG5vdCBmb3VuZCcsIHRhcmdldCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoZWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgcmV0dXJuIFsuLi5lbGVtZW50c10ubWFwKChlbCkgPT4gUHJvZHVjdE1hbmFnZXIoZWwsIG9wdGlvbnMpKTsgLy8gUmVrdXJzaW9uXG4gICAgfVxuXG4gICAgdGFyZ2V0ID0gZWxlbWVudHNbMF07XG4gIH0gZWxzZSBpZiAodGFyZ2V0IGluc3RhbmNlb2YgTm9kZUxpc3QgfHwgQXJyYXkuaXNBcnJheSh0YXJnZXQpKSB7XG4gICAgaWYgKHRhcmdldC5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuICAgIGlmICh0YXJnZXQubGVuZ3RoID09PSAxKSB7XG4gICAgICB0YXJnZXQgPSB0YXJnZXRbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbLi4udGFyZ2V0XS5tYXAoKGVsKSA9PiBQcm9kdWN0TWFuYWdlcihlbCwgb3B0aW9ucykpOyAvLyBSZWt1cnNpb25cbiAgICB9XG4gIH1cblxuICAvLyA9PT0gRE9NICYgVkFSUyA9PT09PT09XG4gIGNvbnN0IHVJZCA9IGlkKCk7XG4gIGNvbnN0IG1vZHVsZSA9IHRhcmdldDtcbiAgaWYgKCFtb2R1bGUpIHJldHVybjtcblxuICBjb25zdCBET00gPSB7XG4gICAgbW9kdWxlLFxuICAgIHRhYmxlOiBtb2R1bGUucXVlcnlTZWxlY3RvcignLnRhYmxlLXByb2R1Y3RzJyksXG4gICAgdGJvZHk6IG1vZHVsZS5xdWVyeVNlbGVjdG9yKCd0Ym9keScpLFxuICAgIGlucHV0TmFtZTogbW9kdWxlLnF1ZXJ5U2VsZWN0b3IoJy5pbnB1dC1wcm9kdWN0LW5hbWUnKSxcbiAgICBpbnB1dFByaWNlOiBtb2R1bGUucXVlcnlTZWxlY3RvcignLmlucHV0LXByb2R1Y3QtcHJpY2UnKSxcbiAgICBidG5BZGQ6IG1vZHVsZS5xdWVyeVNlbGVjdG9yKCcuYnV0dG9uLXByb2R1Y3QtYWRkJyksXG4gICAgdGVtcGxhdGVSb3c6IG1vZHVsZS5xdWVyeVNlbGVjdG9yKCcudGVtcGxhdGUtcm93JyksXG5cbiAgICAvLyBOYXYgQWN0aW9uc1xuICAgIG5hdkFjdGlvbnM6IG1vZHVsZS5xdWVyeVNlbGVjdG9yKCcubmF2LXByb2R1Y3RzLWFjdGlvbnMnKSxcbiAgICBidG5SZXNldDogbW9kdWxlLnF1ZXJ5U2VsZWN0b3IoJy5idXR0b24tcHJvZHVjdHMtcmVzZXQnKSxcbiAgICBidG5TYXZlOiBtb2R1bGUucXVlcnlTZWxlY3RvcignLmJ1dHRvbi1wcm9kdWN0cy1zYXZlJyksXG5cbiAgICAvLyBNb2RhbCBFZGl0XG4gICAgbW9kYWxFZGl0OiBtb2R1bGUucXVlcnlTZWxlY3RvcignLm1vZGFsLWVkaXQnKSxcbiAgICBmb3JtRWRpdDogbW9kdWxlLnF1ZXJ5U2VsZWN0b3IoJy5mb3JtLXByb2R1Y3QtZWRpdCcpLFxuICAgIGlucHV0RWRpdE5hbWU6IG1vZHVsZS5xdWVyeVNlbGVjdG9yKCcuaW5wdXQtZWRpdC1uYW1lJyksXG4gICAgaW5wdXRFZGl0UHJpY2U6IG1vZHVsZS5xdWVyeVNlbGVjdG9yKCcuaW5wdXQtZWRpdC1wcmljZScpLFxuICAgIGlucHV0RWRpdElkOiBtb2R1bGUucXVlcnlTZWxlY3RvcignLmlucHV0LWVkaXQtaWQnKSxcbiAgICBpbnB1dEVkaXRQb3NpdGlvbjogbW9kdWxlLnF1ZXJ5U2VsZWN0b3IoJy5pbnB1dC1lZGl0LXBvc2l0aW9uJyksXG4gICAgYnRuVXBkYXRlOiBtb2R1bGUucXVlcnlTZWxlY3RvcignLmJ1dHRvbi1wcm9kdWN0LXVwZGF0ZScpLFxuXG4gICAgLy8gTW9kYWwgRGVsZXRlXG4gICAgbW9kYWxEZWxldGU6IG1vZHVsZS5xdWVyeVNlbGVjdG9yKCcubW9kYWwtZGVsZXRlJyksXG4gICAgcHJvZHVjdE5hbWU6IG1vZHVsZS5xdWVyeVNlbGVjdG9yKCdzdHJvbmcucHJvZHVjdC1uYW1lJyksXG4gICAgYnRuQ29uZmlybURlbGV0ZTogbW9kdWxlLnF1ZXJ5U2VsZWN0b3IoJy5idXR0b24tY29uZmlybS1kZWxldGUnKSxcbiAgfTtcblxuICBjb25zdCBTRVJWRVJfQkFTRV9VUkwgPSAnaHR0cDovLzEyNy4wLjAuMTo4MDAwJztcblxuICBjb25zdCBic01vZGFsRWRpdCA9IG5ldyBNb2RhbChET00ubW9kYWxFZGl0LCB7XG4gICAgYmFja2Ryb3A6ICdzdGF0aWMnLFxuICAgIGtleWJvYXJkOiB0cnVlLFxuICB9KTtcblxuICBjb25zdCBic01vZGFsRGVsZXRlID0gbmV3IE1vZGFsKERPTS5tb2RhbERlbGV0ZSwge1xuICAgIGJhY2tkcm9wOiB0cnVlLFxuICAgIGtleWJvYXJkOiB0cnVlLFxuICB9KTtcblxuICAvLyBjb25zb2xlLmxvZyhET00pO1xuXG4gIC8vID09PSBJTklUID09PT09PT09PT09PT1cbiAgY29uc3QgaW5pdCA9ICgpID0+IHtcbiAgICAvLyBGdW5rdGlvbnNhdWZydWZlIHp1IGJlZ2lubiBkZXIgQW53ZW5kdW5nXG4gICAgaW5pdFByb2R1Y3RzKCk7XG4gICAgRE9NLmJ0bkFkZC5kaXNhYmxlZCA9IHRydWU7XG5cbiAgICBzZXRVSWRzKCk7XG5cbiAgICAvLyBFdmVudC1MYXVzY2hlciB6dSBiZWdpbm4gZGVyIEFud2VuZHVuZ1xuICAgIERPTS5idG5SZXNldC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIG9uQ2xpY2tSZXNldCk7XG4gICAgRE9NLmJ0blNhdmUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBvbkNsaWNrU2F2ZSk7XG5cbiAgICBET00uYnRuQWRkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25DbGlja0FkZCk7XG4gICAgRE9NLmJ0bkNvbmZpcm1EZWxldGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBvbkNsaWNrQ29uZmlybURlbGV0ZSk7XG4gICAgRE9NLmZvcm1FZGl0LmFkZEV2ZW50TGlzdGVuZXIoJ3N1Ym1pdCcsIG9uU3VibWl0RWRpdCk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgb25LZXlVcCk7XG4gIH07XG5cbiAgLy8gPT09IEVWRU5USEFORExFUiA9PT09PVxuICBjb25zdCBvbktleVVwID0gKGUpID0+IHtcbiAgICBET00uYnRuQWRkLmRpc2FibGVkID0gIShET00uaW5wdXROYW1lLnZhbHVlICE9PSAnJyAmJiBET00uaW5wdXRQcmljZS52YWx1ZSAhPT0gJycpO1xuICAgIC8vIGlmIChET00uaW5wdXROYW1lLnZhbHVlICE9PSAnJyAmJiBET00uaW5wdXRQcmljZS52YWx1ZSAhPT0gJycpIHtcbiAgICAvLyAgIERPTS5idG5BZGQuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAvLyB9IGVsc2Uge1xuICAgIC8vICAgRE9NLmJ0bkFkZC5kaXNhYmxlZCA9IHRydWU7XG4gICAgLy8gfVxuICB9O1xuXG4gIGNvbnN0IG9uQ2xpY2tSZXNldCA9IChlKSA9PiB7XG4gICAgY29uc3QgYnRuRWwgPSBlLmN1cnJlbnRUYXJnZXQ7XG4gICAgY29uc3QgaWNvbiA9IGJ0bkVsLnF1ZXJ5U2VsZWN0b3IoJ2knKTtcblxuICAgIGljb24uY2xhc3NMaXN0LmFkZCgnZmEtamVsbG8nKTtcbiAgICAvLyBhc3luYyBBUEkgcmVxdWVzdFxuICAgIHJlc2V0UHJvZHVjdHMoKS50aGVuKChkYXRhKSA9PiB7XG4gICAgICBpZiAoZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgIFRvYXN0KGRhdGEubXNnLCAnc3VjY2VzcycpLnNob3coKTtcbiAgICAgICAgLy8gVG9hc3QoZGF0YS5tc2csIHsgdmFyaWFudDogJ3ByaW1hcnknLCBkdXJhdGlvbjogNTAwMCwgc3RvcE9uRm9jdXM6IGZhbHNlIH0pLnNob3coKTtcbiAgICAgICAgLy8gVG9hc3QoZGF0YS5tc2csIHtcbiAgICAgICAgLy8gICB2YXJpYW50OiAnc3VjY2VzcycsXG4gICAgICAgIC8vICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgIC8vICAgc3RvcE9uRm9jdXM6IGZhbHNlLFxuICAgICAgICAvLyAgIHN0eWxlOiB7IGJvcmRlclJhZGl1czogJzFyZW0nIH0sXG4gICAgICAgIC8vIH0pLnNob3coKTtcbiAgICAgICAgbG9hZFByb2R1Y3RzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBUb2FzdChkYXRhLm1zZywgJ2Vycm9yJykuc2hvdygpO1xuICAgICAgfVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGljb24uY2xhc3NMaXN0LnJlbW92ZSgnZmEtamVsbG8nKTtcbiAgICAgIH0sIDUwMCk7XG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IG9uQ2xpY2tTYXZlID0gKGUpID0+IHtcbiAgICBjb25zdCBidG5FbCA9IGUuY3VycmVudFRhcmdldDtcbiAgICBjb25zdCBpY29uID0gYnRuRWwucXVlcnlTZWxlY3RvcignaScpO1xuXG4gICAgaWNvbi5jbGFzc0xpc3QuYWRkKCdmYS1qZWxsbycpO1xuXG4gICAgLy8gYXN5bmMgQVBJIHJlcXVlc3RcbiAgICBzYXZlUHJvZHVjdHMoKS50aGVuKChkYXRhKSA9PiB7XG4gICAgICBpZiAoZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgIFRvYXN0KGRhdGEubXNnLCB7XG4gICAgICAgICAgdmFyaWFudDogJ3N1Y2Nlc3MnLCAvL1xuICAgICAgICAgIHN0eWxlOiB7IGJhY2tncm91bmQ6ICcjZjNiNTYyJywgYm9yZGVyUmFkaXVzOiAnMXJlbScsIGNvbG9yOiAnYmxhY2snIH0sXG4gICAgICAgIH0pLnNob3coKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFRvYXN0KGRhdGEubXNnLCAnZXJyb3InKS5zaG93KCk7XG4gICAgICB9XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWNvbi5jbGFzc0xpc3QucmVtb3ZlKCdmYS1qZWxsbycpO1xuICAgICAgfSwgNTAwKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvbkNsaWNrQWRkID0gKGUpID0+IHtcbiAgICBjb25zdCBwcm9kdWN0ID0ge1xuICAgICAgbmFtZTogRE9NLmlucHV0TmFtZS52YWx1ZSwgLy9cbiAgICAgIHByaWNlOiBOdW1iZXIoRE9NLmlucHV0UHJpY2UudmFsdWVBc051bWJlciksXG4gICAgfTtcblxuICAgIC8vIGFzeW5jIEFQSSByZXF1ZXN0XG4gICAgY3JlYXRlUHJvZHVjdChwcm9kdWN0KS50aGVuKChkYXRhKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgIGlmIChkYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgVG9hc3QoZGF0YS5tc2csICdzdWNjZXNzJykuc2hvdygpO1xuICAgICAgICBsb2FkUHJvZHVjdHMoKTtcbiAgICAgICAgcmVzZXRJbnB1dEZpZWxkcygpO1xuICAgICAgICBkaXNhYmxlTm9uRnVuY3Rpb25hbEJ1dHRvbnMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFRvYXN0KGRhdGEubXNnLCAnZXJyb3InKS5zaG93KCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBhZGRQcm9kdWN0KHByb2R1Y3QpO1xuICB9O1xuXG4gIGNvbnN0IG9uU3VibWl0RWRpdCA9IChlKSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpOyAvLyBTdGFuZGFyZHZlcmhhbHRlbiB1bnRlcmJpbmRlbiAoTW9kYWwgRm9ybSBuaWNodCB2ZXJzZW5kZW4pXG5cbiAgICBjb25zdCBwcm9kdWN0ID0ge1xuICAgICAgbmFtZTogRE9NLmlucHV0RWRpdE5hbWUudmFsdWUsXG4gICAgICBwcmljZTogTnVtYmVyKE51bWJlcihET00uaW5wdXRFZGl0UHJpY2UudmFsdWUpLnRvRml4ZWQoMikpLFxuICAgICAgX2lkOiBET00uaW5wdXRFZGl0SWQudmFsdWUsXG4gICAgICBwb3NpdGlvbjogcGFyc2VJbnQoRE9NLmlucHV0RWRpdFBvc2l0aW9uLnZhbHVlKSxcbiAgICB9O1xuXG4gICAgLy8gY29uc29sZS5sb2coT2JqZWN0LmZyb21FbnRyaWVzKG5ldyBGb3JtRGF0YShET00uZm9ybUVkaXQpKSk7XG5cbiAgICBjb25zb2xlLmxvZyhwcm9kdWN0KTtcbiAgICBjb25zdCBpY29uID0gRE9NLmJ0blVwZGF0ZS5xdWVyeVNlbGVjdG9yKCdpJyk7XG4gICAgaWNvbi5jbGFzc0xpc3QuYWRkKCdmYS1zcGluJyk7XG4gICAgLy8gYXN5bmMgRmV0Y2ggUmVxdWVzdFxuICAgIHVwZGF0ZVByb2R1Y3QocHJvZHVjdCkudGhlbigoZGF0YSkgPT4ge1xuICAgICAgY29uc29sZS5sb2coZGF0YSk7XG4gICAgICBpZiAoZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgIFRvYXN0KGRhdGEubXNnLCAnc3VjY2VzcycpLnNob3coKTtcbiAgICAgICAgaWNvbi5jbGFzc0xpc3QucmVtb3ZlKCdmYS1zcGluJyk7XG4gICAgICAgIHJlc2V0SW5wdXRGaWVsZHMoKTtcbiAgICAgICAgbG9hZFByb2R1Y3RzKCk7XG4gICAgICAgIGJzTW9kYWxFZGl0LmhpZGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFRvYXN0KGRhdGEubXNnLCAnZXJyb3InKS5zaG93KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25DbGlja0VkaXQgPSAoZSkgPT4ge1xuICAgIGNvbnN0IGJ0biA9IGUuY3VycmVudFRhcmdldDtcbiAgICBjb25zdCBjdXJyZW50Um93ID0gcGFyZW50cyhidG4sICd0cicpWzBdOyAvLyBidG4uY2xvc2VzdCgndHInKTsgLy8gYnRuLnBhcmVudE5vZGUucGFyZW50Tm9kZTtcbiAgICBjb25zdCBpZCA9IGN1cnJlbnRSb3cuZGF0YXNldC5pZDtcblxuICAgIC8vIGFzeW5jIEFQSSByZXF1ZXN0XG4gICAgZmV0Y2hQcm9kdWN0KGlkKS50aGVuKChkYXRhKSA9PiB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgIHNob3dNb2RhbEVkaXQoZGF0YSk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25DbGlja1JlbW92ZSA9IChlKSA9PiB7XG4gICAgY29uc3QgYnRuID0gZS5jdXJyZW50VGFyZ2V0O1xuICAgIGNvbnN0IGN1cnJlbnRSb3cgPSBwYXJlbnRzKGJ0biwgJ3RyJylbMF07IC8vIGJ0bi5jbG9zZXN0KCd0cicpOyAvLyBidG4ucGFyZW50Tm9kZS5wYXJlbnROb2RlO1xuICAgIGNvbnN0IGlkID0gY3VycmVudFJvdy5kYXRhc2V0LmlkO1xuICAgIGNvbnN0IHByb2R1Y3ROYW1lID0gY3VycmVudFJvdy5xdWVyeVNlbGVjdG9yKCcudGQtbmFtZScpLnRleHRDb250ZW50LnRyaW0oKTtcblxuICAgIGNvbnNvbGUubG9nKHsgaWQsIHByb2R1Y3ROYW1lIH0pO1xuXG4gICAgRE9NLmJ0bkNvbmZpcm1EZWxldGUuZGF0YXNldC5pZCA9IGlkO1xuICAgIERPTS5wcm9kdWN0TmFtZS50ZXh0Q29udGVudCA9IHByb2R1Y3ROYW1lO1xuXG4gICAgLy8gY3VycmVudFJvdy5yZW1vdmUoKTtcbiAgICAvLyBjdXJyZW50Um93LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY3VycmVudFJvdyk7IC8vIElFMTEgc3VwcG9ydFxuICAgIGRpc2FibGVOb25GdW5jdGlvbmFsQnV0dG9ucygpO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2xpY2tDb25maXJtRGVsZXRlID0gKGUpID0+IHtcbiAgICBjb25zdCBidG4gPSBlLmN1cnJlbnRUYXJnZXQ7XG4gICAgY29uc3QgaWQgPSBidG4uZGF0YXNldC5pZDtcblxuICAgIC8vIGFzeW5jIEFQSSByZXF1ZXN0XG4gICAgZGVsZXRlUHJvZHVjdChpZCkudGhlbigoZGF0YSkgPT4ge1xuICAgICAgLy8gY29uc29sZS5sb2coZGF0YSk7XG4gICAgICBpZiAoZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgIFRvYXN0KGRhdGEubXNnLCAnc3VjY2VzcycpLnNob3coKTtcbiAgICAgICAgbG9hZFByb2R1Y3RzKCk7XG4gICAgICAgIGJzTW9kYWxEZWxldGUuaGlkZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgVG9hc3QoZGF0YS5tc2csICdlcnJvcicpLnNob3coKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvbkNsaWNrTW92ZVVwID0gKGUpID0+IHtcbiAgICBjb25zdCBidG4gPSBlLmN1cnJlbnRUYXJnZXQ7XG4gICAgY29uc3QgY3VycmVudFJvdyA9IHBhcmVudHMoYnRuLCAndHInKVswXTtcblxuICAgIGN1cnJlbnRSb3cucHJldmlvdXNFbGVtZW50U2libGluZy5iZWZvcmUoY3VycmVudFJvdyk7XG4gICAgLy8gRE9NLnRib2R5Lmluc2VydEJlZm9yZShjdXJyZW50Um93LCBjdXJyZW50Um93LnByZXZpb3VzRWxlbWVudFNpYmxpbmcpO1xuICAgIGRpc2FibGVOb25GdW5jdGlvbmFsQnV0dG9ucygpO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2xpY2tNb3ZlRG93biA9IChlKSA9PiB7XG4gICAgY29uc3QgYnRuID0gZS5jdXJyZW50VGFyZ2V0O1xuICAgIGNvbnN0IGN1cnJlbnRSb3cgPSBwYXJlbnRzKGJ0biwgJ3RyJylbMF07XG4gICAgY3VycmVudFJvdy5uZXh0RWxlbWVudFNpYmxpbmcuYWZ0ZXIoY3VycmVudFJvdyk7XG4gICAgLy8gRE9NLnRib2R5Lmluc2VydEJlZm9yZShjdXJyZW50Um93LCBjdXJyZW50Um93Lm5leHRFbGVtZW50U2libGluZy5uZXh0RWxlbWVudFNpYmxpbmcpO1xuICAgIGRpc2FibGVOb25GdW5jdGlvbmFsQnV0dG9ucygpO1xuICB9O1xuXG4gIGNvbnN0IG9uTW91c2VEb3duRHJhZyA9IChlKSA9PiB7XG4gICAgY29uc3QgYnRuID0gZS5jdXJyZW50VGFyZ2V0O1xuICAgIGNvbnN0IGN1cnJlbnRSb3cgPSBwYXJlbnRzKGJ0biwgJ3RyJylbMF07IC8vIGJ0bi5jbG9zZXN0KCd0cicpOyAvLyBidG4ucGFyZW50Tm9kZS5wYXJlbnROb2RlO1xuICAgIGN1cnJlbnRSb3cuZHJhZ2dhYmxlID0gdHJ1ZTsgLy8gPT4gPHRyIGRyYWdnYWJsZT1cInRydWVcIiA+Li4uPC90cj5cbiAgfTtcblxuICBjb25zdCBvbk1vdXNlVXBEcmFnID0gKGUpID0+IHtcbiAgICBjb25zdCBidG4gPSBlLmN1cnJlbnRUYXJnZXQ7XG4gICAgY29uc3QgY3VycmVudFJvdyA9IHBhcmVudHMoYnRuLCAndHInKVswXTsgLy8gYnRuLmNsb3Nlc3QoJ3RyJyk7IC8vIGJ0bi5wYXJlbnROb2RlLnBhcmVudE5vZGU7XG4gICAgY3VycmVudFJvdy5kcmFnZ2FibGUgPSBmYWxzZTsgLy8gPT4gPHRyIGRyYWdnYWJsZT1cImZhbHNlXCIgPi4uLjwvdHI+XG4gIH07XG5cbiAgY29uc3Qgb25EcmFnU3RhcnQgPSAoZSkgPT4ge1xuICAgIC8vIGNvbnNvbGUubG9nKCdEcmFnRXZlbnQ6ICcsIGUpO1xuICAgIGNvbnN0IGN1cnJlbnRSb3cgPSBlLmN1cnJlbnRUYXJnZXQ7XG4gICAgY29uc3QgaWR4ID0gWy4uLmN1cnJlbnRSb3cucGFyZW50Tm9kZS5jaGlsZHJlbl0uaW5kZXhPZihjdXJyZW50Um93KTtcblxuICAgIGUuZGF0YVRyYW5zZmVyLnNldERhdGEoJ3RleHQvcGxhaW4nLCBTdHJpbmcoaWR4KSk7XG5cbiAgICAvLyBjb25zb2xlLmxvZygndHIgcmVmZXJlbmNlIGluZGV4OiAnLCBpZHgpO1xuICB9O1xuXG4gIGNvbnN0IG9uRHJhZ092ZXIgPSAoZSkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTsgLy8gV0lDSFRJRzogc29uc3QgZnVua3Rpb25pZXQgZHJvcC1FdmVudEhhbmRsZXIgbmljaHRcbiAgfTtcblxuICBjb25zdCBvbkRyb3AgPSAoZSkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRSb3cgPSBlLmN1cnJlbnRUYXJnZXQ7IC8vIDwtIFppZWx6ZWlsZSwgYXVkIGRpZSBnZWRyb3BwdCB3aXJkXG4gICAgY29uc3QgdGFyZ2V0SWR4ID0gWy4uLmN1cnJlbnRSb3cucGFyZW50Tm9kZS5jaGlsZHJlbl0uaW5kZXhPZihjdXJyZW50Um93KTtcbiAgICBjb25zdCBzb3VyY2VJZHggPSBOdW1iZXIoZS5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgndGV4dC9wbGFpbicpKTtcblxuICAgIGNvbnNvbGUubG9nKHsgdGFyZ2V0SWR4LCBzb3VyY2VJZHggfSk7XG5cbiAgICAvL2NvbnN0IGRyYWdnZWRSb3cgPSBET00udGJvZHkucXVlcnlTZWxlY3RvcihgdHI6bnRoLWNoaWxkKCR7c291cmNlSWR4ICsgMX0pYCk7XG4gICAgY29uc3QgZHJhZ2dlZFJvdyA9IERPTS50Ym9keS5jaGlsZHJlbltzb3VyY2VJZHhdO1xuXG4gICAgLy8gR3VhcmQgd2VubiBFbGVtZW50IGF1ZiBzaWNoIHNlbGJzdCBsb3NnZWxhc3NlbiB3dXJkZSwgYWJicnVjaFxuICAgIGlmIChzb3VyY2VJZHggPT09IHRhcmdldElkeCkgcmV0dXJuO1xuXG4gICAgLy8gVmVyc2NoaWViZSBkYXMgRWxlbWVudCBpbSBET01cbiAgICBpZiAoc291cmNlSWR4ID4gdGFyZ2V0SWR4KSB7XG4gICAgICBjdXJyZW50Um93LmJlZm9yZShkcmFnZ2VkUm93KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudFJvdy5hZnRlcihkcmFnZ2VkUm93KTtcbiAgICB9XG5cbiAgICBkaXNhYmxlTm9uRnVuY3Rpb25hbEJ1dHRvbnMoKTtcbiAgfTtcblxuICAvLyA9PT0gWEhSL0ZFVENIID09PT09PT09XG5cbiAgLy8gSFRUUCAtIE1ldGhvZGUgLSBQT1NUXG4gIC8vIChDKVJVRCAtIENyZWF0ZVxuICAvLyBCUkUoQSlEIC0gQWRkIC0gaGluenVmw7xnZW4gZWluZXMgbmV1ZW4gUHJvZHVrdHNcbiAgY29uc3QgY3JlYXRlUHJvZHVjdCA9IGFzeW5jIChwcm9kdWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7U0VSVkVSX0JBU0VfVVJMfS9hcGkvcHJvZHVjdHNgLCB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfSxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkocHJvZHVjdCksXG4gICAgICB9KTsgLy8gSFRUUC1SZXF1ZXN0IFVSTFxuXG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRmV0Y2ggd2VudCB3cm9uZy4nKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7IC8vIEhUVFAtUmVzcG9uc2UtQm9keSBpbiBKUy1PYmpla3QgZ2VwYXJzZWQgLT4gUHJvbWlzZVxuXG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgVG9hc3QoZXJyb3IubWVzc2FnZSB8fCBcIkNvdWxkbid0IGNyZWF0ZSBwcm9kdWN0XCIsICdlcnJvcicpLnNob3coKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIC8vIEhUVFAgLSBNZXRob2RlIC0gR0VUXG4gIC8vIEMoUilVRCAtIFJlYWRcbiAgLy8gKEIpUkVBRCAtIEJyb3dzZSAtIGF1c2xlc2VuIGFsbGVyIFByb2R1a3RlXG4gIGNvbnN0IGZldGNoUHJvZHVjdHMgPSBhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7U0VSVkVSX0JBU0VfVVJMfS9hcGkvcHJvZHVjdHNgKTsgLy8gSFRUUC1SZXF1ZXN0IFVSTFxuXG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRmV0Y2ggd2VudCB3cm9uZy4nKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7IC8vIEhUVFAtUmVzcG9uc2UtQm9keSBpbiBKUy1PYmpla3QgZ2VwYXJzZWQgLT4gUHJvbWlzZVxuXG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgVG9hc3QoZXJyb3IubWVzc2FnZSB8fCBcIkNvdWxkbid0IGdldCBwcm9kdWN0c1wiLCAnZXJyb3InKS5zaG93KCk7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICAvLyBIVFRQIC0gTWV0aG9kZSAtIEdFVFxuICAvLyBDKFIpVUQgLSBSZWFkXG4gIC8vIEIoUilFQUQgLSBSZWFkIC0gYXVzbGVzZW4gZWluZXMgUHJvZHVrdHNcbiAgY29uc3QgZmV0Y2hQcm9kdWN0ID0gYXN5bmMgKGlkKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7U0VSVkVSX0JBU0VfVVJMfS9hcGkvcHJvZHVjdHMvJHtpZH1gKTsgLy8gSFRUUC1SZXF1ZXN0IFVSTFxuXG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRmV0Y2ggd2VudCB3cm9uZy4nKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7IC8vIEhUVFAtUmVzcG9uc2UtQm9keSBpbiBKUy1PYmpla3QgZ2VwYXJzZWQgLT4gUHJvbWlzZVxuXG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgVG9hc3QoZXJyb3IubWVzc2FnZSB8fCBcIkNvdWxkbid0IGdldCBwcm9kdWN0XCIsICdlcnJvcicpLnNob3coKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIC8vIEhUVFAgLSBNZXRob2RlIC0gUFVUXG4gIC8vIENSKFUpRCAtIFVwZGF0ZVxuICAvLyBCUihFKUFEIC0gRWRpdCAtIGFrdHVhbGlzaWVyZW4gZWluZXMgUHJvZHVrdHNcbiAgY29uc3QgdXBkYXRlUHJvZHVjdCA9IGFzeW5jIChwcm9kdWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7U0VSVkVSX0JBU0VfVVJMfS9hcGkvcHJvZHVjdHNgLCB7XG4gICAgICAgIG1ldGhvZDogJ1BVVCcsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9LFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShwcm9kdWN0KSxcbiAgICAgIH0pOyAvLyBIVFRQLVJlcXVlc3QgVVJMXG5cbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGZXRjaCB3ZW50IHdyb25nLicpO1xuICAgICAgfVxuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTsgLy8gSFRUUC1SZXNwb25zZS1Cb2R5IGluIEpTLU9iamVrdCBnZXBhcnNlZCAtPiBQcm9taXNlXG5cbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBUb2FzdChlcnJvci5tZXNzYWdlIHx8IFwiQ291bGRuJ3QgdXBkYXRlIHByb2R1Y3RcIiwgJ2Vycm9yJykuc2hvdygpO1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH07XG5cbiAgLy8gSFRUUCAtIE1ldGhvZGUgLSBERUxFVEVcbiAgLy8gQ1JVKEQpIC0gRGVsZXRlXG4gIC8vIEJSRUEoRCkgLSBEZWxldGUgLSBsw7ZzY2hlbiBlaW5lcyBQcm9kdWt0c1xuICBjb25zdCBkZWxldGVQcm9kdWN0ID0gYXN5bmMgKGlkKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7U0VSVkVSX0JBU0VfVVJMfS9hcGkvcHJvZHVjdHMvJHtpZH1gLCB7XG4gICAgICAgIG1ldGhvZDogJ0RFTEVURScsXG4gICAgICB9KTsgLy8gSFRUUC1SZXF1ZXN0IFVSTFxuXG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRmV0Y2ggd2VudCB3cm9uZy4nKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7IC8vIEhUVFAtUmVzcG9uc2UtQm9keSBpbiBKUy1PYmpla3QgZ2VwYXJzZWQgLT4gUHJvbWlzZVxuXG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgVG9hc3QoZXJyb3IubWVzc2FnZSB8fCBcIkNvdWxkbid0IGRlbGV0ZSBwcm9kdWN0XCIsICdlcnJvcicpLnNob3coKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIC8vIEhUVFAgLSBNZXRob2RlIC0gUEFUQ0hcbiAgLy8gUmVzZXRlbiBkZXIgUHJvZHVrdGVcbiAgY29uc3QgcmVzZXRQcm9kdWN0cyA9IGFzeW5jIChpZCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke1NFUlZFUl9CQVNFX1VSTH0vYXBpL3Byb2R1Y3RzL3Jlc2V0YCwge1xuICAgICAgICBtZXRob2Q6ICdQQVRDSCcsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICB9LFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHJlc2V0OiB0cnVlIH0pLFxuICAgICAgfSk7IC8vIEhUVFAtUmVxdWVzdCBVUkxcblxuICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZldGNoIHdlbnQgd3JvbmcuJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpOyAvLyBIVFRQLVJlc3BvbnNlLUJvZHkgaW4gSlMtT2JqZWt0IGdlcGFyc2VkIC0+IFByb21pc2VcblxuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIFRvYXN0KGVycm9yLm1lc3NhZ2UgfHwgXCJDb3VsZG4ndCByZXNldCBwcm9kdWN0c1wiLCAnZXJyb3InKS5zaG93KCk7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICAvLyBIVFRQIC0gTWV0aG9kZSAtIFBBVENIXG4gIC8vIFNwZWljaGVybiBkZXIgUHJvZHVrdGVcbiAgY29uc3Qgc2F2ZVByb2R1Y3RzID0gYXN5bmMgKGlkKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7U0VSVkVSX0JBU0VfVVJMfS9hcGkvcHJvZHVjdHMvc2F2ZWAsIHtcbiAgICAgICAgbWV0aG9kOiAnUEFUQ0gnLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfSxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBzYXZlOiB0cnVlIH0pLFxuICAgICAgfSk7IC8vIEhUVFAtUmVxdWVzdCBVUkxcblxuICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZldGNoIHdlbnQgd3JvbmcuJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpOyAvLyBIVFRQLVJlc3BvbnNlLUJvZHkgaW4gSlMtT2JqZWt0IGdlcGFyc2VkIC0+IFByb21pc2VcblxuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIFRvYXN0KGVycm9yLm1lc3NhZ2UgfHwgXCJDb3VsZG4ndCBzYXZlIHByb2R1Y3RzXCIsICdlcnJvcicpLnNob3coKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIC8vID09PSBGVU5DVElPTlMgPT09PT09PT1cbiAgY29uc3QgaW5pdFByb2R1Y3RzID0gKCkgPT4ge1xuICAgIGZldGNoUHJvZHVjdHMoKS50aGVuKChwcm9kdWN0cykgPT4ge1xuICAgICAgcHJvZHVjdHMuZm9yRWFjaChhZGRQcm9kdWN0KTtcbiAgICAgIGRpc2FibGVOb25GdW5jdGlvbmFsQnV0dG9ucygpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGxvYWRQcm9kdWN0cyA9ICgpID0+IHtcbiAgICBET00udGJvZHkuaW5uZXJIVE1MID0gJyc7XG4gICAgZmV0Y2hQcm9kdWN0cygpLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgIC8vIFRPRE86IGFkZCBmYWRlIEFuaW1hdGlvblxuICAgICAgZGF0YS5mb3JFYWNoKGFkZFByb2R1Y3QpO1xuICAgICAgZGlzYWJsZU5vbkZ1bmN0aW9uYWxCdXR0b25zKCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgYWRkUHJvZHVjdCA9IChwcm9kdWN0KSA9PiB7XG4gICAgY29uc3QgeyBuYW1lLCBwcmljZSwgX2lkOiBpZCB9ID0gcHJvZHVjdDtcblxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RlL2RvY3MvV2ViL0hUTUwvUmVmZXJlbmNlL0VsZW1lbnRzL3RlbXBsYXRlI2Fud2VuZHVuZ3NoaW53ZWlzZVxuICAgIGNvbnN0IHRyRWwgPSBET00udGVtcGxhdGVSb3cuY29udGVudC5maXJzdEVsZW1lbnRDaGlsZC5jbG9uZU5vZGUodHJ1ZSk7XG5cbiAgICBjb25zdCB0ZE5hbWVFbCA9IHRyRWwucXVlcnlTZWxlY3RvcignLnRkLW5hbWUnKTtcbiAgICBjb25zdCB0ZFByaWNlRWwgPSB0ckVsLnF1ZXJ5U2VsZWN0b3IoJy50ZC1wcmljZScpO1xuICAgIGNvbnN0IGJ0bkRyYWdFbCA9IHRyRWwucXVlcnlTZWxlY3RvcignLmJ1dHRvbi1wcm9kdWN0LWRyYWcnKTtcblxuICAgIGNvbnN0IGJ0bkVkaXRFbCA9IHRyRWwucXVlcnlTZWxlY3RvcignLmJ1dHRvbi1wcm9kdWN0LWVkaXQnKTtcbiAgICBjb25zdCBidG5SZW1vdmVFbCA9IHRyRWwucXVlcnlTZWxlY3RvcignLmJ1dHRvbi1wcm9kdWN0LXJlbW92ZScpO1xuXG4gICAgY29uc3QgYnRuTW92ZVVwRWwgPSB0ckVsLnF1ZXJ5U2VsZWN0b3IoJy5idXR0b24tcHJvZHVjdC1tb3ZlLXVwJyk7XG4gICAgY29uc3QgYnRuTW92ZURvd25FbCA9IHRyRWwucXVlcnlTZWxlY3RvcignLmJ1dHRvbi1wcm9kdWN0LW1vdmUtZG93bicpO1xuXG4gICAgLy8gRHJhZyAnbiBEcm9wIGhpbnp1ZsO8Z2VuLlxuICAgIGJ0bkRyYWdFbC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBvbk1vdXNlRG93bkRyYWcpO1xuICAgIGJ0bkRyYWdFbC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwRHJhZyk7XG5cbiAgICAvLyBJZCB2b20gUHJvZHVrdCBhdWYgSFRNTCBkYXRhLUF0dHJpYnV0IGFibGVnZW5cbiAgICB0ckVsLmRhdGFzZXQuaWQgPSBpZDsgLy8gPHRyIGRhdGEtaWQ9XCIuLi5cIj48L3RyPlxuXG4gICAgdHJFbC5hZGRFdmVudExpc3RlbmVyKCdkcmFnc3RhcnQnLCBvbkRyYWdTdGFydCk7XG4gICAgdHJFbC5hZGRFdmVudExpc3RlbmVyKCdkcmFnb3ZlcicsIG9uRHJhZ092ZXIpO1xuICAgIHRyRWwuYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIG9uRHJvcCk7XG5cbiAgICB0ZE5hbWVFbC50ZXh0Q29udGVudCA9IG5hbWU7XG4gICAgdGRQcmljZUVsLnRleHRDb250ZW50ID0gTnVtYmVyKHByaWNlKS50b0ZpeGVkKDIpO1xuXG4gICAgYnRuRWRpdEVsLmRhdGFzZXQuYnNUYXJnZXQgKz0gYC0ke3VJZH1gO1xuICAgIGJ0bkVkaXRFbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIG9uQ2xpY2tFZGl0KTtcbiAgICBidG5SZW1vdmVFbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIG9uQ2xpY2tSZW1vdmUpO1xuICAgIGJ0blJlbW92ZUVsLmRhdGFzZXQuYnNUYXJnZXQgKz0gYC0ke3VJZH1gO1xuICAgIGJ0bk1vdmVVcEVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25DbGlja01vdmVVcCk7XG4gICAgYnRuTW92ZURvd25FbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIG9uQ2xpY2tNb3ZlRG93bik7XG5cbiAgICBET00udGJvZHkuYXBwZW5kQ2hpbGQodHJFbCk7XG4gIH07XG5cbiAgY29uc3Qgc2hvd01vZGFsRWRpdCA9IChwcm9kdWN0KSA9PiB7XG4gICAgY29uc3QgeyBuYW1lID0gJycsIHByaWNlID0gMCwgX2lkOiBpZCwgcG9zaXRpb24gfSA9IHByb2R1Y3Q7XG5cbiAgICBET00uaW5wdXRFZGl0TmFtZS52YWx1ZSA9IG5hbWU7XG4gICAgRE9NLmlucHV0RWRpdFByaWNlLnZhbHVlID0gcHJpY2U7XG5cbiAgICBET00uaW5wdXRFZGl0SWQudmFsdWUgPSBpZDtcbiAgICBET00uaW5wdXRFZGl0UG9zaXRpb24udmFsdWUgPSBwb3NpdGlvbjtcbiAgfTtcblxuICBjb25zdCBkaXNhYmxlTm9uRnVuY3Rpb25hbEJ1dHRvbnMgPSAoKSA9PiB7XG4gICAgRE9NLnRib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJykuZm9yRWFjaCgodHIpID0+IHtcbiAgICAgIHRyLnF1ZXJ5U2VsZWN0b3IoJy5idXR0b24tcHJvZHVjdC1tb3ZlLXVwJykuZGlzYWJsZWQgPSAhdHIucHJldmlvdXNFbGVtZW50U2libGluZztcbiAgICAgIHRyLnF1ZXJ5U2VsZWN0b3IoJy5idXR0b24tcHJvZHVjdC1tb3ZlLWRvd24nKS5kaXNhYmxlZCA9ICF0ci5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgcmVzZXRJbnB1dEZpZWxkcyA9ICgpID0+IHtcbiAgICBET00uaW5wdXROYW1lLnZhbHVlID0gRE9NLmlucHV0UHJpY2UudmFsdWUgPSAnJztcbiAgICBET00uYnRuQWRkLmRpc2FibGVkID0gdHJ1ZTtcblxuICAgIERPTS5mb3JtRWRpdC5yZXNldCgpOyAvLyBNb2RhbCBGb3JtdWxhciBsZWVyZW5cbiAgfTtcblxuICBjb25zdCBzZXRVSWRzID0gKCkgPT4ge1xuICAgIERPTS5tb2RhbEVkaXQuaWQgKz0gYC0ke3VJZH1gO1xuICAgIERPTS5tb2RhbEVkaXQucXVlcnlTZWxlY3RvcignLm1vZGFsLXRpdGxlJykuaWQgKz0gYC0ke3VJZH1gO1xuICAgIERPTS5tb2RhbERlbGV0ZS5pZCArPSBgLSR7dUlkfWA7XG4gICAgRE9NLm1vZGFsRGVsZXRlLnF1ZXJ5U2VsZWN0b3IoJy5tb2RhbC10aXRsZScpLmlkICs9IGAtJHt1SWR9YDtcbiAgICBET00uaW5wdXRFZGl0TmFtZS5pZCArPSBgLSR7dUlkfWA7XG4gICAgRE9NLmlucHV0RWRpdFByaWNlLmlkICs9IGAtJHt1SWR9YDtcbiAgfTtcblxuICAvLyBIZWxwZXJcbiAgLy8gZnVuY3Rpb24gcGFyZW50cyhlbCwgc2VsZWN0b3IpIHtcbiAgLy8gICBjb25zdCBwYXJlbnRzID0gW107XG4gIC8vICAgd2hpbGUgKChlbCA9IGVsLnBhcmVudE5vZGUpICYmIGVsICE9PSBkb2N1bWVudCkge1xuICAvLyAgICAgaWYgKCFzZWxlY3RvciB8fCBlbC5tYXRjaGVzKHNlbGVjdG9yKSkgcGFyZW50cy5wdXNoKGVsKTtcbiAgLy8gICB9XG4gIC8vICAgcmV0dXJuIHBhcmVudHM7XG4gIC8vIH1cblxuICBpbml0KCk7XG5cbiAgcmV0dXJuIHtcbiAgICBlbGVtZW50OiBET00ubW9kdWxlLFxuICAgIGluaXQsXG4gIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBQcm9kdWN0TWFuYWdlcjtcbiIsImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ29uc3RydWN0b3IsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuLyohXG4gKiBTcGxpZGUuanNcbiAqIFZlcnNpb24gIDogNC4xLjRcbiAqIExpY2Vuc2UgIDogTUlUXG4gKiBDb3B5cmlnaHQ6IDIwMjIgTmFvdG9zaGkgRnVqaXRhXG4gKi9cbnZhciBNRURJQV9QUkVGRVJTX1JFRFVDRURfTU9USU9OID0gXCIocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKVwiO1xudmFyIENSRUFURUQgPSAxO1xudmFyIE1PVU5URUQgPSAyO1xudmFyIElETEUgPSAzO1xudmFyIE1PVklORyA9IDQ7XG52YXIgU0NST0xMSU5HID0gNTtcbnZhciBEUkFHR0lORyA9IDY7XG52YXIgREVTVFJPWUVEID0gNztcbnZhciBTVEFURVMgPSB7XG4gIENSRUFURUQ6IENSRUFURUQsXG4gIE1PVU5URUQ6IE1PVU5URUQsXG4gIElETEU6IElETEUsXG4gIE1PVklORzogTU9WSU5HLFxuICBTQ1JPTExJTkc6IFNDUk9MTElORyxcbiAgRFJBR0dJTkc6IERSQUdHSU5HLFxuICBERVNUUk9ZRUQ6IERFU1RST1lFRFxufTtcblxuZnVuY3Rpb24gZW1wdHkoYXJyYXkpIHtcbiAgYXJyYXkubGVuZ3RoID0gMDtcbn1cblxuZnVuY3Rpb24gc2xpY2UoYXJyYXlMaWtlLCBzdGFydCwgZW5kKSB7XG4gIHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnJheUxpa2UsIHN0YXJ0LCBlbmQpO1xufVxuXG5mdW5jdGlvbiBhcHBseShmdW5jKSB7XG4gIHJldHVybiBmdW5jLmJpbmQuYXBwbHkoZnVuYywgW251bGxdLmNvbmNhdChzbGljZShhcmd1bWVudHMsIDEpKSk7XG59XG5cbnZhciBuZXh0VGljayA9IHNldFRpbWVvdXQ7XG5cbnZhciBub29wID0gZnVuY3Rpb24gbm9vcCgpIHt9O1xuXG5mdW5jdGlvbiByYWYoZnVuYykge1xuICByZXR1cm4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmMpO1xufVxuXG5mdW5jdGlvbiB0eXBlT2YodHlwZSwgc3ViamVjdCkge1xuICByZXR1cm4gdHlwZW9mIHN1YmplY3QgPT09IHR5cGU7XG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KHN1YmplY3QpIHtcbiAgcmV0dXJuICFpc051bGwoc3ViamVjdCkgJiYgdHlwZU9mKFwib2JqZWN0XCIsIHN1YmplY3QpO1xufVxuXG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG52YXIgaXNGdW5jdGlvbiA9IGFwcGx5KHR5cGVPZiwgXCJmdW5jdGlvblwiKTtcbnZhciBpc1N0cmluZyA9IGFwcGx5KHR5cGVPZiwgXCJzdHJpbmdcIik7XG52YXIgaXNVbmRlZmluZWQgPSBhcHBseSh0eXBlT2YsIFwidW5kZWZpbmVkXCIpO1xuXG5mdW5jdGlvbiBpc051bGwoc3ViamVjdCkge1xuICByZXR1cm4gc3ViamVjdCA9PT0gbnVsbDtcbn1cblxuZnVuY3Rpb24gaXNIVE1MRWxlbWVudChzdWJqZWN0KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHN1YmplY3QgaW5zdGFuY2VvZiAoc3ViamVjdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3IHx8IHdpbmRvdykuSFRNTEVsZW1lbnQ7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9BcnJheSh2YWx1ZSkge1xuICByZXR1cm4gaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG59XG5cbmZ1bmN0aW9uIGZvckVhY2godmFsdWVzLCBpdGVyYXRlZSkge1xuICB0b0FycmF5KHZhbHVlcykuZm9yRWFjaChpdGVyYXRlZSk7XG59XG5cbmZ1bmN0aW9uIGluY2x1ZGVzKGFycmF5LCB2YWx1ZSkge1xuICByZXR1cm4gYXJyYXkuaW5kZXhPZih2YWx1ZSkgPiAtMTtcbn1cblxuZnVuY3Rpb24gcHVzaChhcnJheSwgaXRlbXMpIHtcbiAgYXJyYXkucHVzaC5hcHBseShhcnJheSwgdG9BcnJheShpdGVtcykpO1xuICByZXR1cm4gYXJyYXk7XG59XG5cbmZ1bmN0aW9uIHRvZ2dsZUNsYXNzKGVsbSwgY2xhc3NlcywgYWRkKSB7XG4gIGlmIChlbG0pIHtcbiAgICBmb3JFYWNoKGNsYXNzZXMsIGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICBpZiAobmFtZSkge1xuICAgICAgICBlbG0uY2xhc3NMaXN0W2FkZCA/IFwiYWRkXCIgOiBcInJlbW92ZVwiXShuYW1lKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRDbGFzcyhlbG0sIGNsYXNzZXMpIHtcbiAgdG9nZ2xlQ2xhc3MoZWxtLCBpc1N0cmluZyhjbGFzc2VzKSA/IGNsYXNzZXMuc3BsaXQoXCIgXCIpIDogY2xhc3NlcywgdHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZChwYXJlbnQsIGNoaWxkcmVuKSB7XG4gIGZvckVhY2goY2hpbGRyZW4sIHBhcmVudC5hcHBlbmRDaGlsZC5iaW5kKHBhcmVudCkpO1xufVxuXG5mdW5jdGlvbiBiZWZvcmUobm9kZXMsIHJlZikge1xuICBmb3JFYWNoKG5vZGVzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgIHZhciBwYXJlbnQgPSAocmVmIHx8IG5vZGUpLnBhcmVudE5vZGU7XG5cbiAgICBpZiAocGFyZW50KSB7XG4gICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKG5vZGUsIHJlZik7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gbWF0Y2hlcyhlbG0sIHNlbGVjdG9yKSB7XG4gIHJldHVybiBpc0hUTUxFbGVtZW50KGVsbSkgJiYgKGVsbVtcIm1zTWF0Y2hlc1NlbGVjdG9yXCJdIHx8IGVsbS5tYXRjaGVzKS5jYWxsKGVsbSwgc2VsZWN0b3IpO1xufVxuXG5mdW5jdGlvbiBjaGlsZHJlbihwYXJlbnQsIHNlbGVjdG9yKSB7XG4gIHZhciBjaGlsZHJlbjIgPSBwYXJlbnQgPyBzbGljZShwYXJlbnQuY2hpbGRyZW4pIDogW107XG4gIHJldHVybiBzZWxlY3RvciA/IGNoaWxkcmVuMi5maWx0ZXIoZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgcmV0dXJuIG1hdGNoZXMoY2hpbGQsIHNlbGVjdG9yKTtcbiAgfSkgOiBjaGlsZHJlbjI7XG59XG5cbmZ1bmN0aW9uIGNoaWxkKHBhcmVudCwgc2VsZWN0b3IpIHtcbiAgcmV0dXJuIHNlbGVjdG9yID8gY2hpbGRyZW4ocGFyZW50LCBzZWxlY3RvcilbMF0gOiBwYXJlbnQuZmlyc3RFbGVtZW50Q2hpbGQ7XG59XG5cbnZhciBvd25LZXlzID0gT2JqZWN0LmtleXM7XG5cbmZ1bmN0aW9uIGZvck93bihvYmplY3QsIGl0ZXJhdGVlLCByaWdodCkge1xuICBpZiAob2JqZWN0KSB7XG4gICAgKHJpZ2h0ID8gb3duS2V5cyhvYmplY3QpLnJldmVyc2UoKSA6IG93bktleXMob2JqZWN0KSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBrZXkgIT09IFwiX19wcm90b19fXCIgJiYgaXRlcmF0ZWUob2JqZWN0W2tleV0sIGtleSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5mdW5jdGlvbiBhc3NpZ24ob2JqZWN0KSB7XG4gIHNsaWNlKGFyZ3VtZW50cywgMSkuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgZm9yT3duKHNvdXJjZSwgZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgIG9iamVjdFtrZXldID0gc291cmNlW2tleV07XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gb2JqZWN0O1xufVxuXG5mdW5jdGlvbiBtZXJnZShvYmplY3QpIHtcbiAgc2xpY2UoYXJndW1lbnRzLCAxKS5mb3JFYWNoKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICBmb3JPd24oc291cmNlLCBmdW5jdGlvbiAodmFsdWUsIGtleSkge1xuICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIG9iamVjdFtrZXldID0gdmFsdWUuc2xpY2UoKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICAgIG9iamVjdFtrZXldID0gbWVyZ2Uoe30sIGlzT2JqZWN0KG9iamVjdFtrZXldKSA/IG9iamVjdFtrZXldIDoge30sIHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gb2JqZWN0O1xufVxuXG5mdW5jdGlvbiBvbWl0KG9iamVjdCwga2V5cykge1xuICBmb3JFYWNoKGtleXMgfHwgb3duS2V5cyhvYmplY3QpLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgZGVsZXRlIG9iamVjdFtrZXldO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlQXR0cmlidXRlKGVsbXMsIGF0dHJzKSB7XG4gIGZvckVhY2goZWxtcywgZnVuY3Rpb24gKGVsbSkge1xuICAgIGZvckVhY2goYXR0cnMsIGZ1bmN0aW9uIChhdHRyKSB7XG4gICAgICBlbG0gJiYgZWxtLnJlbW92ZUF0dHJpYnV0ZShhdHRyKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZShlbG1zLCBhdHRycywgdmFsdWUpIHtcbiAgaWYgKGlzT2JqZWN0KGF0dHJzKSkge1xuICAgIGZvck93bihhdHRycywgZnVuY3Rpb24gKHZhbHVlMiwgbmFtZSkge1xuICAgICAgc2V0QXR0cmlidXRlKGVsbXMsIG5hbWUsIHZhbHVlMik7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgZm9yRWFjaChlbG1zLCBmdW5jdGlvbiAoZWxtKSB7XG4gICAgICBpc051bGwodmFsdWUpIHx8IHZhbHVlID09PSBcIlwiID8gcmVtb3ZlQXR0cmlidXRlKGVsbSwgYXR0cnMpIDogZWxtLnNldEF0dHJpYnV0ZShhdHRycywgU3RyaW5nKHZhbHVlKSk7XG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlKHRhZywgYXR0cnMsIHBhcmVudCkge1xuICB2YXIgZWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpO1xuXG4gIGlmIChhdHRycykge1xuICAgIGlzU3RyaW5nKGF0dHJzKSA/IGFkZENsYXNzKGVsbSwgYXR0cnMpIDogc2V0QXR0cmlidXRlKGVsbSwgYXR0cnMpO1xuICB9XG5cbiAgcGFyZW50ICYmIGFwcGVuZChwYXJlbnQsIGVsbSk7XG4gIHJldHVybiBlbG07XG59XG5cbmZ1bmN0aW9uIHN0eWxlKGVsbSwgcHJvcCwgdmFsdWUpIHtcbiAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGVsbSlbcHJvcF07XG4gIH1cblxuICBpZiAoIWlzTnVsbCh2YWx1ZSkpIHtcbiAgICBlbG0uc3R5bGVbcHJvcF0gPSBcIlwiICsgdmFsdWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGlzcGxheShlbG0sIGRpc3BsYXkyKSB7XG4gIHN0eWxlKGVsbSwgXCJkaXNwbGF5XCIsIGRpc3BsYXkyKTtcbn1cblxuZnVuY3Rpb24gZm9jdXMoZWxtKSB7XG4gIGVsbVtcInNldEFjdGl2ZVwiXSAmJiBlbG1bXCJzZXRBY3RpdmVcIl0oKSB8fCBlbG0uZm9jdXMoe1xuICAgIHByZXZlbnRTY3JvbGw6IHRydWVcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldEF0dHJpYnV0ZShlbG0sIGF0dHIpIHtcbiAgcmV0dXJuIGVsbS5nZXRBdHRyaWJ1dGUoYXR0cik7XG59XG5cbmZ1bmN0aW9uIGhhc0NsYXNzKGVsbSwgY2xhc3NOYW1lKSB7XG4gIHJldHVybiBlbG0gJiYgZWxtLmNsYXNzTGlzdC5jb250YWlucyhjbGFzc05hbWUpO1xufVxuXG5mdW5jdGlvbiByZWN0KHRhcmdldCkge1xuICByZXR1cm4gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xufVxuXG5mdW5jdGlvbiByZW1vdmUobm9kZXMpIHtcbiAgZm9yRWFjaChub2RlcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBpZiAobm9kZSAmJiBub2RlLnBhcmVudE5vZGUpIHtcbiAgICAgIG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwYXJzZUh0bWwoaHRtbCkge1xuICByZXR1cm4gY2hpbGQobmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhodG1sLCBcInRleHQvaHRtbFwiKS5ib2R5KTtcbn1cblxuZnVuY3Rpb24gcHJldmVudChlLCBzdG9wUHJvcGFnYXRpb24pIHtcbiAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gIGlmIChzdG9wUHJvcGFnYXRpb24pIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcXVlcnkocGFyZW50LCBzZWxlY3Rvcikge1xuICByZXR1cm4gcGFyZW50ICYmIHBhcmVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTtcbn1cblxuZnVuY3Rpb24gcXVlcnlBbGwocGFyZW50LCBzZWxlY3Rvcikge1xuICByZXR1cm4gc2VsZWN0b3IgPyBzbGljZShwYXJlbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpIDogW107XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUNsYXNzKGVsbSwgY2xhc3Nlcykge1xuICB0b2dnbGVDbGFzcyhlbG0sIGNsYXNzZXMsIGZhbHNlKTtcbn1cblxuZnVuY3Rpb24gdGltZU9mKGUpIHtcbiAgcmV0dXJuIGUudGltZVN0YW1wO1xufVxuXG5mdW5jdGlvbiB1bml0KHZhbHVlKSB7XG4gIHJldHVybiBpc1N0cmluZyh2YWx1ZSkgPyB2YWx1ZSA6IHZhbHVlID8gdmFsdWUgKyBcInB4XCIgOiBcIlwiO1xufVxuXG52YXIgUFJPSkVDVF9DT0RFID0gXCJzcGxpZGVcIjtcbnZhciBEQVRBX0FUVFJJQlVURSA9IFwiZGF0YS1cIiArIFBST0pFQ1RfQ09ERTtcblxuZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbiwgbWVzc2FnZSkge1xuICBpZiAoIWNvbmRpdGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihcIltcIiArIFBST0pFQ1RfQ09ERSArIFwiXSBcIiArIChtZXNzYWdlIHx8IFwiXCIpKTtcbiAgfVxufVxuXG52YXIgbWluID0gTWF0aC5taW4sXG4gICAgbWF4ID0gTWF0aC5tYXgsXG4gICAgZmxvb3IgPSBNYXRoLmZsb29yLFxuICAgIGNlaWwgPSBNYXRoLmNlaWwsXG4gICAgYWJzID0gTWF0aC5hYnM7XG5cbmZ1bmN0aW9uIGFwcHJveGltYXRlbHlFcXVhbCh4LCB5LCBlcHNpbG9uKSB7XG4gIHJldHVybiBhYnMoeCAtIHkpIDwgZXBzaWxvbjtcbn1cblxuZnVuY3Rpb24gYmV0d2VlbihudW1iZXIsIHgsIHksIGV4Y2x1c2l2ZSkge1xuICB2YXIgbWluaW11bSA9IG1pbih4LCB5KTtcbiAgdmFyIG1heGltdW0gPSBtYXgoeCwgeSk7XG4gIHJldHVybiBleGNsdXNpdmUgPyBtaW5pbXVtIDwgbnVtYmVyICYmIG51bWJlciA8IG1heGltdW0gOiBtaW5pbXVtIDw9IG51bWJlciAmJiBudW1iZXIgPD0gbWF4aW11bTtcbn1cblxuZnVuY3Rpb24gY2xhbXAobnVtYmVyLCB4LCB5KSB7XG4gIHZhciBtaW5pbXVtID0gbWluKHgsIHkpO1xuICB2YXIgbWF4aW11bSA9IG1heCh4LCB5KTtcbiAgcmV0dXJuIG1pbihtYXgobWluaW11bSwgbnVtYmVyKSwgbWF4aW11bSk7XG59XG5cbmZ1bmN0aW9uIHNpZ24oeCkge1xuICByZXR1cm4gKyh4ID4gMCkgLSArKHggPCAwKTtcbn1cblxuZnVuY3Rpb24gY2FtZWxUb0tlYmFiKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoLyhbYS16MC05XSkoW0EtWl0pL2csIFwiJDEtJDJcIikudG9Mb3dlckNhc2UoKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0KHN0cmluZywgcmVwbGFjZW1lbnRzKSB7XG4gIGZvckVhY2gocmVwbGFjZW1lbnRzLCBmdW5jdGlvbiAocmVwbGFjZW1lbnQpIHtcbiAgICBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZShcIiVzXCIsIFwiXCIgKyByZXBsYWNlbWVudCk7XG4gIH0pO1xuICByZXR1cm4gc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBwYWQobnVtYmVyKSB7XG4gIHJldHVybiBudW1iZXIgPCAxMCA/IFwiMFwiICsgbnVtYmVyIDogXCJcIiArIG51bWJlcjtcbn1cblxudmFyIGlkcyA9IHt9O1xuXG5mdW5jdGlvbiB1bmlxdWVJZChwcmVmaXgpIHtcbiAgcmV0dXJuIFwiXCIgKyBwcmVmaXggKyBwYWQoaWRzW3ByZWZpeF0gPSAoaWRzW3ByZWZpeF0gfHwgMCkgKyAxKTtcbn1cblxuZnVuY3Rpb24gRXZlbnRCaW5kZXIoKSB7XG4gIHZhciBsaXN0ZW5lcnMgPSBbXTtcblxuICBmdW5jdGlvbiBiaW5kKHRhcmdldHMsIGV2ZW50cywgY2FsbGJhY2ssIG9wdGlvbnMpIHtcbiAgICBmb3JFYWNoRXZlbnQodGFyZ2V0cywgZXZlbnRzLCBmdW5jdGlvbiAodGFyZ2V0LCBldmVudCwgbmFtZXNwYWNlKSB7XG4gICAgICB2YXIgaXNFdmVudFRhcmdldCA9IChcImFkZEV2ZW50TGlzdGVuZXJcIiBpbiB0YXJnZXQpO1xuICAgICAgdmFyIHJlbW92ZXIgPSBpc0V2ZW50VGFyZ2V0ID8gdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIuYmluZCh0YXJnZXQsIGV2ZW50LCBjYWxsYmFjaywgb3B0aW9ucykgOiB0YXJnZXRbXCJyZW1vdmVMaXN0ZW5lclwiXS5iaW5kKHRhcmdldCwgY2FsbGJhY2spO1xuICAgICAgaXNFdmVudFRhcmdldCA/IHRhcmdldC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBjYWxsYmFjaywgb3B0aW9ucykgOiB0YXJnZXRbXCJhZGRMaXN0ZW5lclwiXShjYWxsYmFjayk7XG4gICAgICBsaXN0ZW5lcnMucHVzaChbdGFyZ2V0LCBldmVudCwgbmFtZXNwYWNlLCBjYWxsYmFjaywgcmVtb3Zlcl0pO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gdW5iaW5kKHRhcmdldHMsIGV2ZW50cywgY2FsbGJhY2spIHtcbiAgICBmb3JFYWNoRXZlbnQodGFyZ2V0cywgZXZlbnRzLCBmdW5jdGlvbiAodGFyZ2V0LCBldmVudCwgbmFtZXNwYWNlKSB7XG4gICAgICBsaXN0ZW5lcnMgPSBsaXN0ZW5lcnMuZmlsdGVyKGZ1bmN0aW9uIChsaXN0ZW5lcikge1xuICAgICAgICBpZiAobGlzdGVuZXJbMF0gPT09IHRhcmdldCAmJiBsaXN0ZW5lclsxXSA9PT0gZXZlbnQgJiYgbGlzdGVuZXJbMl0gPT09IG5hbWVzcGFjZSAmJiAoIWNhbGxiYWNrIHx8IGxpc3RlbmVyWzNdID09PSBjYWxsYmFjaykpIHtcbiAgICAgICAgICBsaXN0ZW5lcls0XSgpO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBkaXNwYXRjaCh0YXJnZXQsIHR5cGUsIGRldGFpbCkge1xuICAgIHZhciBlO1xuICAgIHZhciBidWJibGVzID0gdHJ1ZTtcblxuICAgIGlmICh0eXBlb2YgQ3VzdG9tRXZlbnQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgZSA9IG5ldyBDdXN0b21FdmVudCh0eXBlLCB7XG4gICAgICAgIGJ1YmJsZXM6IGJ1YmJsZXMsXG4gICAgICAgIGRldGFpbDogZGV0YWlsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZSA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KFwiQ3VzdG9tRXZlbnRcIik7XG4gICAgICBlLmluaXRDdXN0b21FdmVudCh0eXBlLCBidWJibGVzLCBmYWxzZSwgZGV0YWlsKTtcbiAgICB9XG5cbiAgICB0YXJnZXQuZGlzcGF0Y2hFdmVudChlKTtcbiAgICByZXR1cm4gZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGZvckVhY2hFdmVudCh0YXJnZXRzLCBldmVudHMsIGl0ZXJhdGVlKSB7XG4gICAgZm9yRWFjaCh0YXJnZXRzLCBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICB0YXJnZXQgJiYgZm9yRWFjaChldmVudHMsIGZ1bmN0aW9uIChldmVudHMyKSB7XG4gICAgICAgIGV2ZW50czIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24gKGV2ZW50TlMpIHtcbiAgICAgICAgICB2YXIgZnJhZ21lbnQgPSBldmVudE5TLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICBpdGVyYXRlZSh0YXJnZXQsIGZyYWdtZW50WzBdLCBmcmFnbWVudFsxXSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgIGxpc3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICBkYXRhWzRdKCk7XG4gICAgfSk7XG4gICAgZW1wdHkobGlzdGVuZXJzKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYmluZDogYmluZCxcbiAgICB1bmJpbmQ6IHVuYmluZCxcbiAgICBkaXNwYXRjaDogZGlzcGF0Y2gsXG4gICAgZGVzdHJveTogZGVzdHJveVxuICB9O1xufVxuXG52YXIgRVZFTlRfTU9VTlRFRCA9IFwibW91bnRlZFwiO1xudmFyIEVWRU5UX1JFQURZID0gXCJyZWFkeVwiO1xudmFyIEVWRU5UX01PVkUgPSBcIm1vdmVcIjtcbnZhciBFVkVOVF9NT1ZFRCA9IFwibW92ZWRcIjtcbnZhciBFVkVOVF9DTElDSyA9IFwiY2xpY2tcIjtcbnZhciBFVkVOVF9BQ1RJVkUgPSBcImFjdGl2ZVwiO1xudmFyIEVWRU5UX0lOQUNUSVZFID0gXCJpbmFjdGl2ZVwiO1xudmFyIEVWRU5UX1ZJU0lCTEUgPSBcInZpc2libGVcIjtcbnZhciBFVkVOVF9ISURERU4gPSBcImhpZGRlblwiO1xudmFyIEVWRU5UX1JFRlJFU0ggPSBcInJlZnJlc2hcIjtcbnZhciBFVkVOVF9VUERBVEVEID0gXCJ1cGRhdGVkXCI7XG52YXIgRVZFTlRfUkVTSVpFID0gXCJyZXNpemVcIjtcbnZhciBFVkVOVF9SRVNJWkVEID0gXCJyZXNpemVkXCI7XG52YXIgRVZFTlRfRFJBRyA9IFwiZHJhZ1wiO1xudmFyIEVWRU5UX0RSQUdHSU5HID0gXCJkcmFnZ2luZ1wiO1xudmFyIEVWRU5UX0RSQUdHRUQgPSBcImRyYWdnZWRcIjtcbnZhciBFVkVOVF9TQ1JPTEwgPSBcInNjcm9sbFwiO1xudmFyIEVWRU5UX1NDUk9MTEVEID0gXCJzY3JvbGxlZFwiO1xudmFyIEVWRU5UX09WRVJGTE9XID0gXCJvdmVyZmxvd1wiO1xudmFyIEVWRU5UX0RFU1RST1kgPSBcImRlc3Ryb3lcIjtcbnZhciBFVkVOVF9BUlJPV1NfTU9VTlRFRCA9IFwiYXJyb3dzOm1vdW50ZWRcIjtcbnZhciBFVkVOVF9BUlJPV1NfVVBEQVRFRCA9IFwiYXJyb3dzOnVwZGF0ZWRcIjtcbnZhciBFVkVOVF9QQUdJTkFUSU9OX01PVU5URUQgPSBcInBhZ2luYXRpb246bW91bnRlZFwiO1xudmFyIEVWRU5UX1BBR0lOQVRJT05fVVBEQVRFRCA9IFwicGFnaW5hdGlvbjp1cGRhdGVkXCI7XG52YXIgRVZFTlRfTkFWSUdBVElPTl9NT1VOVEVEID0gXCJuYXZpZ2F0aW9uOm1vdW50ZWRcIjtcbnZhciBFVkVOVF9BVVRPUExBWV9QTEFZID0gXCJhdXRvcGxheTpwbGF5XCI7XG52YXIgRVZFTlRfQVVUT1BMQVlfUExBWUlORyA9IFwiYXV0b3BsYXk6cGxheWluZ1wiO1xudmFyIEVWRU5UX0FVVE9QTEFZX1BBVVNFID0gXCJhdXRvcGxheTpwYXVzZVwiO1xudmFyIEVWRU5UX0xBWllMT0FEX0xPQURFRCA9IFwibGF6eWxvYWQ6bG9hZGVkXCI7XG52YXIgRVZFTlRfU0xJREVfS0VZRE9XTiA9IFwic2tcIjtcbnZhciBFVkVOVF9TSElGVEVEID0gXCJzaFwiO1xudmFyIEVWRU5UX0VORF9JTkRFWF9DSEFOR0VEID0gXCJlaVwiO1xuXG5mdW5jdGlvbiBFdmVudEludGVyZmFjZShTcGxpZGUyKSB7XG4gIHZhciBidXMgPSBTcGxpZGUyID8gU3BsaWRlMi5ldmVudC5idXMgOiBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gIHZhciBiaW5kZXIgPSBFdmVudEJpbmRlcigpO1xuXG4gIGZ1bmN0aW9uIG9uKGV2ZW50cywgY2FsbGJhY2spIHtcbiAgICBiaW5kZXIuYmluZChidXMsIHRvQXJyYXkoZXZlbnRzKS5qb2luKFwiIFwiKSwgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGNhbGxiYWNrLmFwcGx5KGNhbGxiYWNrLCBpc0FycmF5KGUuZGV0YWlsKSA/IGUuZGV0YWlsIDogW10pO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZW1pdChldmVudCkge1xuICAgIGJpbmRlci5kaXNwYXRjaChidXMsIGV2ZW50LCBzbGljZShhcmd1bWVudHMsIDEpKTtcbiAgfVxuXG4gIGlmIChTcGxpZGUyKSB7XG4gICAgU3BsaWRlMi5ldmVudC5vbihFVkVOVF9ERVNUUk9ZLCBiaW5kZXIuZGVzdHJveSk7XG4gIH1cblxuICByZXR1cm4gYXNzaWduKGJpbmRlciwge1xuICAgIGJ1czogYnVzLFxuICAgIG9uOiBvbixcbiAgICBvZmY6IGFwcGx5KGJpbmRlci51bmJpbmQsIGJ1cyksXG4gICAgZW1pdDogZW1pdFxuICB9KTtcbn1cblxuZnVuY3Rpb24gUmVxdWVzdEludGVydmFsKGludGVydmFsLCBvbkludGVydmFsLCBvblVwZGF0ZSwgbGltaXQpIHtcbiAgdmFyIG5vdyA9IERhdGUubm93O1xuICB2YXIgc3RhcnRUaW1lO1xuICB2YXIgcmF0ZSA9IDA7XG4gIHZhciBpZDtcbiAgdmFyIHBhdXNlZCA9IHRydWU7XG4gIHZhciBjb3VudCA9IDA7XG5cbiAgZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgIGlmICghcGF1c2VkKSB7XG4gICAgICByYXRlID0gaW50ZXJ2YWwgPyBtaW4oKG5vdygpIC0gc3RhcnRUaW1lKSAvIGludGVydmFsLCAxKSA6IDE7XG4gICAgICBvblVwZGF0ZSAmJiBvblVwZGF0ZShyYXRlKTtcblxuICAgICAgaWYgKHJhdGUgPj0gMSkge1xuICAgICAgICBvbkludGVydmFsKCk7XG4gICAgICAgIHN0YXJ0VGltZSA9IG5vdygpO1xuXG4gICAgICAgIGlmIChsaW1pdCAmJiArK2NvdW50ID49IGxpbWl0KSB7XG4gICAgICAgICAgcmV0dXJuIHBhdXNlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWQgPSByYWYodXBkYXRlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzdGFydChyZXN1bWUpIHtcbiAgICByZXN1bWUgfHwgY2FuY2VsKCk7XG4gICAgc3RhcnRUaW1lID0gbm93KCkgLSAocmVzdW1lID8gcmF0ZSAqIGludGVydmFsIDogMCk7XG4gICAgcGF1c2VkID0gZmFsc2U7XG4gICAgaWQgPSByYWYodXBkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhdXNlKCkge1xuICAgIHBhdXNlZCA9IHRydWU7XG4gIH1cblxuICBmdW5jdGlvbiByZXdpbmQoKSB7XG4gICAgc3RhcnRUaW1lID0gbm93KCk7XG4gICAgcmF0ZSA9IDA7XG5cbiAgICBpZiAob25VcGRhdGUpIHtcbiAgICAgIG9uVXBkYXRlKHJhdGUpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNhbmNlbCgpIHtcbiAgICBpZCAmJiBjYW5jZWxBbmltYXRpb25GcmFtZShpZCk7XG4gICAgcmF0ZSA9IDA7XG4gICAgaWQgPSAwO1xuICAgIHBhdXNlZCA9IHRydWU7XG4gIH1cblxuICBmdW5jdGlvbiBzZXQodGltZSkge1xuICAgIGludGVydmFsID0gdGltZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzUGF1c2VkKCkge1xuICAgIHJldHVybiBwYXVzZWQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHN0YXJ0OiBzdGFydCxcbiAgICByZXdpbmQ6IHJld2luZCxcbiAgICBwYXVzZTogcGF1c2UsXG4gICAgY2FuY2VsOiBjYW5jZWwsXG4gICAgc2V0OiBzZXQsXG4gICAgaXNQYXVzZWQ6IGlzUGF1c2VkXG4gIH07XG59XG5cbmZ1bmN0aW9uIFN0YXRlKGluaXRpYWxTdGF0ZSkge1xuICB2YXIgc3RhdGUgPSBpbml0aWFsU3RhdGU7XG5cbiAgZnVuY3Rpb24gc2V0KHZhbHVlKSB7XG4gICAgc3RhdGUgPSB2YWx1ZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzKHN0YXRlcykge1xuICAgIHJldHVybiBpbmNsdWRlcyh0b0FycmF5KHN0YXRlcyksIHN0YXRlKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc2V0OiBzZXQsXG4gICAgaXM6IGlzXG4gIH07XG59XG5cbmZ1bmN0aW9uIFRocm90dGxlKGZ1bmMsIGR1cmF0aW9uKSB7XG4gIHZhciBpbnRlcnZhbCA9IFJlcXVlc3RJbnRlcnZhbChkdXJhdGlvbiB8fCAwLCBmdW5jLCBudWxsLCAxKTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpbnRlcnZhbC5pc1BhdXNlZCgpICYmIGludGVydmFsLnN0YXJ0KCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIE1lZGlhKFNwbGlkZTIsIENvbXBvbmVudHMyLCBvcHRpb25zKSB7XG4gIHZhciBzdGF0ZSA9IFNwbGlkZTIuc3RhdGU7XG4gIHZhciBicmVha3BvaW50cyA9IG9wdGlvbnMuYnJlYWtwb2ludHMgfHwge307XG4gIHZhciByZWR1Y2VkTW90aW9uID0gb3B0aW9ucy5yZWR1Y2VkTW90aW9uIHx8IHt9O1xuICB2YXIgYmluZGVyID0gRXZlbnRCaW5kZXIoKTtcbiAgdmFyIHF1ZXJpZXMgPSBbXTtcblxuICBmdW5jdGlvbiBzZXR1cCgpIHtcbiAgICB2YXIgaXNNaW4gPSBvcHRpb25zLm1lZGlhUXVlcnkgPT09IFwibWluXCI7XG4gICAgb3duS2V5cyhicmVha3BvaW50cykuc29ydChmdW5jdGlvbiAobiwgbSkge1xuICAgICAgcmV0dXJuIGlzTWluID8gK24gLSArbSA6ICttIC0gK247XG4gICAgfSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICByZWdpc3RlcihicmVha3BvaW50c1trZXldLCBcIihcIiArIChpc01pbiA/IFwibWluXCIgOiBcIm1heFwiKSArIFwiLXdpZHRoOlwiICsga2V5ICsgXCJweClcIik7XG4gICAgfSk7XG4gICAgcmVnaXN0ZXIocmVkdWNlZE1vdGlvbiwgTUVESUFfUFJFRkVSU19SRURVQ0VEX01PVElPTik7XG4gICAgdXBkYXRlKCk7XG4gIH1cblxuICBmdW5jdGlvbiBkZXN0cm95KGNvbXBsZXRlbHkpIHtcbiAgICBpZiAoY29tcGxldGVseSkge1xuICAgICAgYmluZGVyLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZWdpc3RlcihvcHRpb25zMiwgcXVlcnkpIHtcbiAgICB2YXIgcXVlcnlMaXN0ID0gbWF0Y2hNZWRpYShxdWVyeSk7XG4gICAgYmluZGVyLmJpbmQocXVlcnlMaXN0LCBcImNoYW5nZVwiLCB1cGRhdGUpO1xuICAgIHF1ZXJpZXMucHVzaChbb3B0aW9uczIsIHF1ZXJ5TGlzdF0pO1xuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgIHZhciBkZXN0cm95ZWQgPSBzdGF0ZS5pcyhERVNUUk9ZRUQpO1xuICAgIHZhciBkaXJlY3Rpb24gPSBvcHRpb25zLmRpcmVjdGlvbjtcbiAgICB2YXIgbWVyZ2VkID0gcXVlcmllcy5yZWR1Y2UoZnVuY3Rpb24gKG1lcmdlZDIsIGVudHJ5KSB7XG4gICAgICByZXR1cm4gbWVyZ2UobWVyZ2VkMiwgZW50cnlbMV0ubWF0Y2hlcyA/IGVudHJ5WzBdIDoge30pO1xuICAgIH0sIHt9KTtcbiAgICBvbWl0KG9wdGlvbnMpO1xuICAgIHNldChtZXJnZWQpO1xuXG4gICAgaWYgKG9wdGlvbnMuZGVzdHJveSkge1xuICAgICAgU3BsaWRlMi5kZXN0cm95KG9wdGlvbnMuZGVzdHJveSA9PT0gXCJjb21wbGV0ZWx5XCIpO1xuICAgIH0gZWxzZSBpZiAoZGVzdHJveWVkKSB7XG4gICAgICBkZXN0cm95KHRydWUpO1xuICAgICAgU3BsaWRlMi5tb3VudCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaXJlY3Rpb24gIT09IG9wdGlvbnMuZGlyZWN0aW9uICYmIFNwbGlkZTIucmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlZHVjZShlbmFibGUpIHtcbiAgICBpZiAobWF0Y2hNZWRpYShNRURJQV9QUkVGRVJTX1JFRFVDRURfTU9USU9OKS5tYXRjaGVzKSB7XG4gICAgICBlbmFibGUgPyBtZXJnZShvcHRpb25zLCByZWR1Y2VkTW90aW9uKSA6IG9taXQob3B0aW9ucywgb3duS2V5cyhyZWR1Y2VkTW90aW9uKSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2V0KG9wdHMsIGJhc2UsIG5vdGlmeSkge1xuICAgIG1lcmdlKG9wdGlvbnMsIG9wdHMpO1xuICAgIGJhc2UgJiYgbWVyZ2UoT2JqZWN0LmdldFByb3RvdHlwZU9mKG9wdGlvbnMpLCBvcHRzKTtcblxuICAgIGlmIChub3RpZnkgfHwgIXN0YXRlLmlzKENSRUFURUQpKSB7XG4gICAgICBTcGxpZGUyLmVtaXQoRVZFTlRfVVBEQVRFRCwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzZXR1cDogc2V0dXAsXG4gICAgZGVzdHJveTogZGVzdHJveSxcbiAgICByZWR1Y2U6IHJlZHVjZSxcbiAgICBzZXQ6IHNldFxuICB9O1xufVxuXG52YXIgQVJST1cgPSBcIkFycm93XCI7XG52YXIgQVJST1dfTEVGVCA9IEFSUk9XICsgXCJMZWZ0XCI7XG52YXIgQVJST1dfUklHSFQgPSBBUlJPVyArIFwiUmlnaHRcIjtcbnZhciBBUlJPV19VUCA9IEFSUk9XICsgXCJVcFwiO1xudmFyIEFSUk9XX0RPV04gPSBBUlJPVyArIFwiRG93blwiO1xudmFyIExUUiA9IFwibHRyXCI7XG52YXIgUlRMID0gXCJydGxcIjtcbnZhciBUVEIgPSBcInR0YlwiO1xudmFyIE9SSUVOVEFUSU9OX01BUCA9IHtcbiAgd2lkdGg6IFtcImhlaWdodFwiXSxcbiAgbGVmdDogW1widG9wXCIsIFwicmlnaHRcIl0sXG4gIHJpZ2h0OiBbXCJib3R0b21cIiwgXCJsZWZ0XCJdLFxuICB4OiBbXCJ5XCJdLFxuICBYOiBbXCJZXCJdLFxuICBZOiBbXCJYXCJdLFxuICBBcnJvd0xlZnQ6IFtBUlJPV19VUCwgQVJST1dfUklHSFRdLFxuICBBcnJvd1JpZ2h0OiBbQVJST1dfRE9XTiwgQVJST1dfTEVGVF1cbn07XG5cbmZ1bmN0aW9uIERpcmVjdGlvbihTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICBmdW5jdGlvbiByZXNvbHZlKHByb3AsIGF4aXNPbmx5LCBkaXJlY3Rpb24pIHtcbiAgICBkaXJlY3Rpb24gPSBkaXJlY3Rpb24gfHwgb3B0aW9ucy5kaXJlY3Rpb247XG4gICAgdmFyIGluZGV4ID0gZGlyZWN0aW9uID09PSBSVEwgJiYgIWF4aXNPbmx5ID8gMSA6IGRpcmVjdGlvbiA9PT0gVFRCID8gMCA6IC0xO1xuICAgIHJldHVybiBPUklFTlRBVElPTl9NQVBbcHJvcF0gJiYgT1JJRU5UQVRJT05fTUFQW3Byb3BdW2luZGV4XSB8fCBwcm9wLnJlcGxhY2UoL3dpZHRofGxlZnR8cmlnaHQvaSwgZnVuY3Rpb24gKG1hdGNoLCBvZmZzZXQpIHtcbiAgICAgIHZhciByZXBsYWNlbWVudCA9IE9SSUVOVEFUSU9OX01BUFttYXRjaC50b0xvd2VyQ2FzZSgpXVtpbmRleF0gfHwgbWF0Y2g7XG4gICAgICByZXR1cm4gb2Zmc2V0ID4gMCA/IHJlcGxhY2VtZW50LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcmVwbGFjZW1lbnQuc2xpY2UoMSkgOiByZXBsYWNlbWVudDtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9yaWVudCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAqIChvcHRpb25zLmRpcmVjdGlvbiA9PT0gUlRMID8gMSA6IC0xKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcmVzb2x2ZTogcmVzb2x2ZSxcbiAgICBvcmllbnQ6IG9yaWVudFxuICB9O1xufVxuXG52YXIgUk9MRSA9IFwicm9sZVwiO1xudmFyIFRBQl9JTkRFWCA9IFwidGFiaW5kZXhcIjtcbnZhciBESVNBQkxFRCA9IFwiZGlzYWJsZWRcIjtcbnZhciBBUklBX1BSRUZJWCA9IFwiYXJpYS1cIjtcbnZhciBBUklBX0NPTlRST0xTID0gQVJJQV9QUkVGSVggKyBcImNvbnRyb2xzXCI7XG52YXIgQVJJQV9DVVJSRU5UID0gQVJJQV9QUkVGSVggKyBcImN1cnJlbnRcIjtcbnZhciBBUklBX1NFTEVDVEVEID0gQVJJQV9QUkVGSVggKyBcInNlbGVjdGVkXCI7XG52YXIgQVJJQV9MQUJFTCA9IEFSSUFfUFJFRklYICsgXCJsYWJlbFwiO1xudmFyIEFSSUFfTEFCRUxMRURCWSA9IEFSSUFfUFJFRklYICsgXCJsYWJlbGxlZGJ5XCI7XG52YXIgQVJJQV9ISURERU4gPSBBUklBX1BSRUZJWCArIFwiaGlkZGVuXCI7XG52YXIgQVJJQV9PUklFTlRBVElPTiA9IEFSSUFfUFJFRklYICsgXCJvcmllbnRhdGlvblwiO1xudmFyIEFSSUFfUk9MRURFU0NSSVBUSU9OID0gQVJJQV9QUkVGSVggKyBcInJvbGVkZXNjcmlwdGlvblwiO1xudmFyIEFSSUFfTElWRSA9IEFSSUFfUFJFRklYICsgXCJsaXZlXCI7XG52YXIgQVJJQV9CVVNZID0gQVJJQV9QUkVGSVggKyBcImJ1c3lcIjtcbnZhciBBUklBX0FUT01JQyA9IEFSSUFfUFJFRklYICsgXCJhdG9taWNcIjtcbnZhciBBTExfQVRUUklCVVRFUyA9IFtST0xFLCBUQUJfSU5ERVgsIERJU0FCTEVELCBBUklBX0NPTlRST0xTLCBBUklBX0NVUlJFTlQsIEFSSUFfTEFCRUwsIEFSSUFfTEFCRUxMRURCWSwgQVJJQV9ISURERU4sIEFSSUFfT1JJRU5UQVRJT04sIEFSSUFfUk9MRURFU0NSSVBUSU9OXTtcbnZhciBDTEFTU19QUkVGSVggPSBQUk9KRUNUX0NPREUgKyBcIl9fXCI7XG52YXIgU1RBVFVTX0NMQVNTX1BSRUZJWCA9IFwiaXMtXCI7XG52YXIgQ0xBU1NfUk9PVCA9IFBST0pFQ1RfQ09ERTtcbnZhciBDTEFTU19UUkFDSyA9IENMQVNTX1BSRUZJWCArIFwidHJhY2tcIjtcbnZhciBDTEFTU19MSVNUID0gQ0xBU1NfUFJFRklYICsgXCJsaXN0XCI7XG52YXIgQ0xBU1NfU0xJREUgPSBDTEFTU19QUkVGSVggKyBcInNsaWRlXCI7XG52YXIgQ0xBU1NfQ0xPTkUgPSBDTEFTU19TTElERSArIFwiLS1jbG9uZVwiO1xudmFyIENMQVNTX0NPTlRBSU5FUiA9IENMQVNTX1NMSURFICsgXCJfX2NvbnRhaW5lclwiO1xudmFyIENMQVNTX0FSUk9XUyA9IENMQVNTX1BSRUZJWCArIFwiYXJyb3dzXCI7XG52YXIgQ0xBU1NfQVJST1cgPSBDTEFTU19QUkVGSVggKyBcImFycm93XCI7XG52YXIgQ0xBU1NfQVJST1dfUFJFViA9IENMQVNTX0FSUk9XICsgXCItLXByZXZcIjtcbnZhciBDTEFTU19BUlJPV19ORVhUID0gQ0xBU1NfQVJST1cgKyBcIi0tbmV4dFwiO1xudmFyIENMQVNTX1BBR0lOQVRJT04gPSBDTEFTU19QUkVGSVggKyBcInBhZ2luYXRpb25cIjtcbnZhciBDTEFTU19QQUdJTkFUSU9OX1BBR0UgPSBDTEFTU19QQUdJTkFUSU9OICsgXCJfX3BhZ2VcIjtcbnZhciBDTEFTU19QUk9HUkVTUyA9IENMQVNTX1BSRUZJWCArIFwicHJvZ3Jlc3NcIjtcbnZhciBDTEFTU19QUk9HUkVTU19CQVIgPSBDTEFTU19QUk9HUkVTUyArIFwiX19iYXJcIjtcbnZhciBDTEFTU19UT0dHTEUgPSBDTEFTU19QUkVGSVggKyBcInRvZ2dsZVwiO1xudmFyIENMQVNTX1RPR0dMRV9QTEFZID0gQ0xBU1NfVE9HR0xFICsgXCJfX3BsYXlcIjtcbnZhciBDTEFTU19UT0dHTEVfUEFVU0UgPSBDTEFTU19UT0dHTEUgKyBcIl9fcGF1c2VcIjtcbnZhciBDTEFTU19TUElOTkVSID0gQ0xBU1NfUFJFRklYICsgXCJzcGlubmVyXCI7XG52YXIgQ0xBU1NfU1IgPSBDTEFTU19QUkVGSVggKyBcInNyXCI7XG52YXIgQ0xBU1NfSU5JVElBTElaRUQgPSBTVEFUVVNfQ0xBU1NfUFJFRklYICsgXCJpbml0aWFsaXplZFwiO1xudmFyIENMQVNTX0FDVElWRSA9IFNUQVRVU19DTEFTU19QUkVGSVggKyBcImFjdGl2ZVwiO1xudmFyIENMQVNTX1BSRVYgPSBTVEFUVVNfQ0xBU1NfUFJFRklYICsgXCJwcmV2XCI7XG52YXIgQ0xBU1NfTkVYVCA9IFNUQVRVU19DTEFTU19QUkVGSVggKyBcIm5leHRcIjtcbnZhciBDTEFTU19WSVNJQkxFID0gU1RBVFVTX0NMQVNTX1BSRUZJWCArIFwidmlzaWJsZVwiO1xudmFyIENMQVNTX0xPQURJTkcgPSBTVEFUVVNfQ0xBU1NfUFJFRklYICsgXCJsb2FkaW5nXCI7XG52YXIgQ0xBU1NfRk9DVVNfSU4gPSBTVEFUVVNfQ0xBU1NfUFJFRklYICsgXCJmb2N1cy1pblwiO1xudmFyIENMQVNTX09WRVJGTE9XID0gU1RBVFVTX0NMQVNTX1BSRUZJWCArIFwib3ZlcmZsb3dcIjtcbnZhciBTVEFUVVNfQ0xBU1NFUyA9IFtDTEFTU19BQ1RJVkUsIENMQVNTX1ZJU0lCTEUsIENMQVNTX1BSRVYsIENMQVNTX05FWFQsIENMQVNTX0xPQURJTkcsIENMQVNTX0ZPQ1VTX0lOLCBDTEFTU19PVkVSRkxPV107XG52YXIgQ0xBU1NFUyA9IHtcbiAgc2xpZGU6IENMQVNTX1NMSURFLFxuICBjbG9uZTogQ0xBU1NfQ0xPTkUsXG4gIGFycm93czogQ0xBU1NfQVJST1dTLFxuICBhcnJvdzogQ0xBU1NfQVJST1csXG4gIHByZXY6IENMQVNTX0FSUk9XX1BSRVYsXG4gIG5leHQ6IENMQVNTX0FSUk9XX05FWFQsXG4gIHBhZ2luYXRpb246IENMQVNTX1BBR0lOQVRJT04sXG4gIHBhZ2U6IENMQVNTX1BBR0lOQVRJT05fUEFHRSxcbiAgc3Bpbm5lcjogQ0xBU1NfU1BJTk5FUlxufTtcblxuZnVuY3Rpb24gY2xvc2VzdChmcm9tLCBzZWxlY3Rvcikge1xuICBpZiAoaXNGdW5jdGlvbihmcm9tLmNsb3Nlc3QpKSB7XG4gICAgcmV0dXJuIGZyb20uY2xvc2VzdChzZWxlY3Rvcik7XG4gIH1cblxuICB2YXIgZWxtID0gZnJvbTtcblxuICB3aGlsZSAoZWxtICYmIGVsbS5ub2RlVHlwZSA9PT0gMSkge1xuICAgIGlmIChtYXRjaGVzKGVsbSwgc2VsZWN0b3IpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBlbG0gPSBlbG0ucGFyZW50RWxlbWVudDtcbiAgfVxuXG4gIHJldHVybiBlbG07XG59XG5cbnZhciBGUklDVElPTiA9IDU7XG52YXIgTE9HX0lOVEVSVkFMID0gMjAwO1xudmFyIFBPSU5URVJfRE9XTl9FVkVOVFMgPSBcInRvdWNoc3RhcnQgbW91c2Vkb3duXCI7XG52YXIgUE9JTlRFUl9NT1ZFX0VWRU5UUyA9IFwidG91Y2htb3ZlIG1vdXNlbW92ZVwiO1xudmFyIFBPSU5URVJfVVBfRVZFTlRTID0gXCJ0b3VjaGVuZCB0b3VjaGNhbmNlbCBtb3VzZXVwIGNsaWNrXCI7XG5cbmZ1bmN0aW9uIEVsZW1lbnRzKFNwbGlkZTIsIENvbXBvbmVudHMyLCBvcHRpb25zKSB7XG4gIHZhciBfRXZlbnRJbnRlcmZhY2UgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKSxcbiAgICAgIG9uID0gX0V2ZW50SW50ZXJmYWNlLm9uLFxuICAgICAgYmluZCA9IF9FdmVudEludGVyZmFjZS5iaW5kO1xuXG4gIHZhciByb290ID0gU3BsaWRlMi5yb290O1xuICB2YXIgaTE4biA9IG9wdGlvbnMuaTE4bjtcbiAgdmFyIGVsZW1lbnRzID0ge307XG4gIHZhciBzbGlkZXMgPSBbXTtcbiAgdmFyIHJvb3RDbGFzc2VzID0gW107XG4gIHZhciB0cmFja0NsYXNzZXMgPSBbXTtcbiAgdmFyIHRyYWNrO1xuICB2YXIgbGlzdDtcbiAgdmFyIGlzVXNpbmdLZXk7XG5cbiAgZnVuY3Rpb24gc2V0dXAoKSB7XG4gICAgY29sbGVjdCgpO1xuICAgIGluaXQoKTtcbiAgICB1cGRhdGUoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIG9uKEVWRU5UX1JFRlJFU0gsIGRlc3Ryb3kpO1xuICAgIG9uKEVWRU5UX1JFRlJFU0gsIHNldHVwKTtcbiAgICBvbihFVkVOVF9VUERBVEVELCB1cGRhdGUpO1xuICAgIGJpbmQoZG9jdW1lbnQsIFBPSU5URVJfRE9XTl9FVkVOVFMgKyBcIiBrZXlkb3duXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBpc1VzaW5nS2V5ID0gZS50eXBlID09PSBcImtleWRvd25cIjtcbiAgICB9LCB7XG4gICAgICBjYXB0dXJlOiB0cnVlXG4gICAgfSk7XG4gICAgYmluZChyb290LCBcImZvY3VzaW5cIiwgZnVuY3Rpb24gKCkge1xuICAgICAgdG9nZ2xlQ2xhc3Mocm9vdCwgQ0xBU1NfRk9DVVNfSU4sICEhaXNVc2luZ0tleSk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBkZXN0cm95KGNvbXBsZXRlbHkpIHtcbiAgICB2YXIgYXR0cnMgPSBBTExfQVRUUklCVVRFUy5jb25jYXQoXCJzdHlsZVwiKTtcbiAgICBlbXB0eShzbGlkZXMpO1xuICAgIHJlbW92ZUNsYXNzKHJvb3QsIHJvb3RDbGFzc2VzKTtcbiAgICByZW1vdmVDbGFzcyh0cmFjaywgdHJhY2tDbGFzc2VzKTtcbiAgICByZW1vdmVBdHRyaWJ1dGUoW3RyYWNrLCBsaXN0XSwgYXR0cnMpO1xuICAgIHJlbW92ZUF0dHJpYnV0ZShyb290LCBjb21wbGV0ZWx5ID8gYXR0cnMgOiBbXCJzdHlsZVwiLCBBUklBX1JPTEVERVNDUklQVElPTl0pO1xuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgIHJlbW92ZUNsYXNzKHJvb3QsIHJvb3RDbGFzc2VzKTtcbiAgICByZW1vdmVDbGFzcyh0cmFjaywgdHJhY2tDbGFzc2VzKTtcbiAgICByb290Q2xhc3NlcyA9IGdldENsYXNzZXMoQ0xBU1NfUk9PVCk7XG4gICAgdHJhY2tDbGFzc2VzID0gZ2V0Q2xhc3NlcyhDTEFTU19UUkFDSyk7XG4gICAgYWRkQ2xhc3Mocm9vdCwgcm9vdENsYXNzZXMpO1xuICAgIGFkZENsYXNzKHRyYWNrLCB0cmFja0NsYXNzZXMpO1xuICAgIHNldEF0dHJpYnV0ZShyb290LCBBUklBX0xBQkVMLCBvcHRpb25zLmxhYmVsKTtcbiAgICBzZXRBdHRyaWJ1dGUocm9vdCwgQVJJQV9MQUJFTExFREJZLCBvcHRpb25zLmxhYmVsbGVkYnkpO1xuICB9XG5cbiAgZnVuY3Rpb24gY29sbGVjdCgpIHtcbiAgICB0cmFjayA9IGZpbmQoXCIuXCIgKyBDTEFTU19UUkFDSyk7XG4gICAgbGlzdCA9IGNoaWxkKHRyYWNrLCBcIi5cIiArIENMQVNTX0xJU1QpO1xuICAgIGFzc2VydCh0cmFjayAmJiBsaXN0LCBcIkEgdHJhY2svbGlzdCBlbGVtZW50IGlzIG1pc3NpbmcuXCIpO1xuICAgIHB1c2goc2xpZGVzLCBjaGlsZHJlbihsaXN0LCBcIi5cIiArIENMQVNTX1NMSURFICsgXCI6bm90KC5cIiArIENMQVNTX0NMT05FICsgXCIpXCIpKTtcbiAgICBmb3JPd24oe1xuICAgICAgYXJyb3dzOiBDTEFTU19BUlJPV1MsXG4gICAgICBwYWdpbmF0aW9uOiBDTEFTU19QQUdJTkFUSU9OLFxuICAgICAgcHJldjogQ0xBU1NfQVJST1dfUFJFVixcbiAgICAgIG5leHQ6IENMQVNTX0FSUk9XX05FWFQsXG4gICAgICBiYXI6IENMQVNTX1BST0dSRVNTX0JBUixcbiAgICAgIHRvZ2dsZTogQ0xBU1NfVE9HR0xFXG4gICAgfSwgZnVuY3Rpb24gKGNsYXNzTmFtZSwga2V5KSB7XG4gICAgICBlbGVtZW50c1trZXldID0gZmluZChcIi5cIiArIGNsYXNzTmFtZSk7XG4gICAgfSk7XG4gICAgYXNzaWduKGVsZW1lbnRzLCB7XG4gICAgICByb290OiByb290LFxuICAgICAgdHJhY2s6IHRyYWNrLFxuICAgICAgbGlzdDogbGlzdCxcbiAgICAgIHNsaWRlczogc2xpZGVzXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBpbml0KCkge1xuICAgIHZhciBpZCA9IHJvb3QuaWQgfHwgdW5pcXVlSWQoUFJPSkVDVF9DT0RFKTtcbiAgICB2YXIgcm9sZSA9IG9wdGlvbnMucm9sZTtcbiAgICByb290LmlkID0gaWQ7XG4gICAgdHJhY2suaWQgPSB0cmFjay5pZCB8fCBpZCArIFwiLXRyYWNrXCI7XG4gICAgbGlzdC5pZCA9IGxpc3QuaWQgfHwgaWQgKyBcIi1saXN0XCI7XG5cbiAgICBpZiAoIWdldEF0dHJpYnV0ZShyb290LCBST0xFKSAmJiByb290LnRhZ05hbWUgIT09IFwiU0VDVElPTlwiICYmIHJvbGUpIHtcbiAgICAgIHNldEF0dHJpYnV0ZShyb290LCBST0xFLCByb2xlKTtcbiAgICB9XG5cbiAgICBzZXRBdHRyaWJ1dGUocm9vdCwgQVJJQV9ST0xFREVTQ1JJUFRJT04sIGkxOG4uY2Fyb3VzZWwpO1xuICAgIHNldEF0dHJpYnV0ZShsaXN0LCBST0xFLCBcInByZXNlbnRhdGlvblwiKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGZpbmQoc2VsZWN0b3IpIHtcbiAgICB2YXIgZWxtID0gcXVlcnkocm9vdCwgc2VsZWN0b3IpO1xuICAgIHJldHVybiBlbG0gJiYgY2xvc2VzdChlbG0sIFwiLlwiICsgQ0xBU1NfUk9PVCkgPT09IHJvb3QgPyBlbG0gOiB2b2lkIDA7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRDbGFzc2VzKGJhc2UpIHtcbiAgICByZXR1cm4gW2Jhc2UgKyBcIi0tXCIgKyBvcHRpb25zLnR5cGUsIGJhc2UgKyBcIi0tXCIgKyBvcHRpb25zLmRpcmVjdGlvbiwgb3B0aW9ucy5kcmFnICYmIGJhc2UgKyBcIi0tZHJhZ2dhYmxlXCIsIG9wdGlvbnMuaXNOYXZpZ2F0aW9uICYmIGJhc2UgKyBcIi0tbmF2XCIsIGJhc2UgPT09IENMQVNTX1JPT1QgJiYgQ0xBU1NfQUNUSVZFXTtcbiAgfVxuXG4gIHJldHVybiBhc3NpZ24oZWxlbWVudHMsIHtcbiAgICBzZXR1cDogc2V0dXAsXG4gICAgbW91bnQ6IG1vdW50LFxuICAgIGRlc3Ryb3k6IGRlc3Ryb3lcbiAgfSk7XG59XG5cbnZhciBTTElERSA9IFwic2xpZGVcIjtcbnZhciBMT09QID0gXCJsb29wXCI7XG52YXIgRkFERSA9IFwiZmFkZVwiO1xuXG5mdW5jdGlvbiBTbGlkZSQxKFNwbGlkZTIsIGluZGV4LCBzbGlkZUluZGV4LCBzbGlkZSkge1xuICB2YXIgZXZlbnQgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKTtcbiAgdmFyIG9uID0gZXZlbnQub24sXG4gICAgICBlbWl0ID0gZXZlbnQuZW1pdCxcbiAgICAgIGJpbmQgPSBldmVudC5iaW5kO1xuICB2YXIgQ29tcG9uZW50cyA9IFNwbGlkZTIuQ29tcG9uZW50cyxcbiAgICAgIHJvb3QgPSBTcGxpZGUyLnJvb3QsXG4gICAgICBvcHRpb25zID0gU3BsaWRlMi5vcHRpb25zO1xuICB2YXIgaXNOYXZpZ2F0aW9uID0gb3B0aW9ucy5pc05hdmlnYXRpb24sXG4gICAgICB1cGRhdGVPbk1vdmUgPSBvcHRpb25zLnVwZGF0ZU9uTW92ZSxcbiAgICAgIGkxOG4gPSBvcHRpb25zLmkxOG4sXG4gICAgICBwYWdpbmF0aW9uID0gb3B0aW9ucy5wYWdpbmF0aW9uLFxuICAgICAgc2xpZGVGb2N1cyA9IG9wdGlvbnMuc2xpZGVGb2N1cztcbiAgdmFyIHJlc29sdmUgPSBDb21wb25lbnRzLkRpcmVjdGlvbi5yZXNvbHZlO1xuICB2YXIgc3R5bGVzID0gZ2V0QXR0cmlidXRlKHNsaWRlLCBcInN0eWxlXCIpO1xuICB2YXIgbGFiZWwgPSBnZXRBdHRyaWJ1dGUoc2xpZGUsIEFSSUFfTEFCRUwpO1xuICB2YXIgaXNDbG9uZSA9IHNsaWRlSW5kZXggPiAtMTtcbiAgdmFyIGNvbnRhaW5lciA9IGNoaWxkKHNsaWRlLCBcIi5cIiArIENMQVNTX0NPTlRBSU5FUik7XG4gIHZhciBkZXN0cm95ZWQ7XG5cbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgaWYgKCFpc0Nsb25lKSB7XG4gICAgICBzbGlkZS5pZCA9IHJvb3QuaWQgKyBcIi1zbGlkZVwiICsgcGFkKGluZGV4ICsgMSk7XG4gICAgICBzZXRBdHRyaWJ1dGUoc2xpZGUsIFJPTEUsIHBhZ2luYXRpb24gPyBcInRhYnBhbmVsXCIgOiBcImdyb3VwXCIpO1xuICAgICAgc2V0QXR0cmlidXRlKHNsaWRlLCBBUklBX1JPTEVERVNDUklQVElPTiwgaTE4bi5zbGlkZSk7XG4gICAgICBzZXRBdHRyaWJ1dGUoc2xpZGUsIEFSSUFfTEFCRUwsIGxhYmVsIHx8IGZvcm1hdChpMThuLnNsaWRlTGFiZWwsIFtpbmRleCArIDEsIFNwbGlkZTIubGVuZ3RoXSkpO1xuICAgIH1cblxuICAgIGxpc3RlbigpO1xuICB9XG5cbiAgZnVuY3Rpb24gbGlzdGVuKCkge1xuICAgIGJpbmQoc2xpZGUsIFwiY2xpY2tcIiwgYXBwbHkoZW1pdCwgRVZFTlRfQ0xJQ0ssIHNlbGYpKTtcbiAgICBiaW5kKHNsaWRlLCBcImtleWRvd25cIiwgYXBwbHkoZW1pdCwgRVZFTlRfU0xJREVfS0VZRE9XTiwgc2VsZikpO1xuICAgIG9uKFtFVkVOVF9NT1ZFRCwgRVZFTlRfU0hJRlRFRCwgRVZFTlRfU0NST0xMRURdLCB1cGRhdGUpO1xuICAgIG9uKEVWRU5UX05BVklHQVRJT05fTU9VTlRFRCwgaW5pdE5hdmlnYXRpb24pO1xuXG4gICAgaWYgKHVwZGF0ZU9uTW92ZSkge1xuICAgICAgb24oRVZFTlRfTU9WRSwgb25Nb3ZlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgIGRlc3Ryb3llZCA9IHRydWU7XG4gICAgZXZlbnQuZGVzdHJveSgpO1xuICAgIHJlbW92ZUNsYXNzKHNsaWRlLCBTVEFUVVNfQ0xBU1NFUyk7XG4gICAgcmVtb3ZlQXR0cmlidXRlKHNsaWRlLCBBTExfQVRUUklCVVRFUyk7XG4gICAgc2V0QXR0cmlidXRlKHNsaWRlLCBcInN0eWxlXCIsIHN0eWxlcyk7XG4gICAgc2V0QXR0cmlidXRlKHNsaWRlLCBBUklBX0xBQkVMLCBsYWJlbCB8fCBcIlwiKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXROYXZpZ2F0aW9uKCkge1xuICAgIHZhciBjb250cm9scyA9IFNwbGlkZTIuc3BsaWRlcy5tYXAoZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgdmFyIFNsaWRlMiA9IHRhcmdldC5zcGxpZGUuQ29tcG9uZW50cy5TbGlkZXMuZ2V0QXQoaW5kZXgpO1xuICAgICAgcmV0dXJuIFNsaWRlMiA/IFNsaWRlMi5zbGlkZS5pZCA6IFwiXCI7XG4gICAgfSkuam9pbihcIiBcIik7XG4gICAgc2V0QXR0cmlidXRlKHNsaWRlLCBBUklBX0xBQkVMLCBmb3JtYXQoaTE4bi5zbGlkZVgsIChpc0Nsb25lID8gc2xpZGVJbmRleCA6IGluZGV4KSArIDEpKTtcbiAgICBzZXRBdHRyaWJ1dGUoc2xpZGUsIEFSSUFfQ09OVFJPTFMsIGNvbnRyb2xzKTtcbiAgICBzZXRBdHRyaWJ1dGUoc2xpZGUsIFJPTEUsIHNsaWRlRm9jdXMgPyBcImJ1dHRvblwiIDogXCJcIik7XG4gICAgc2xpZGVGb2N1cyAmJiByZW1vdmVBdHRyaWJ1dGUoc2xpZGUsIEFSSUFfUk9MRURFU0NSSVBUSU9OKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uTW92ZSgpIHtcbiAgICBpZiAoIWRlc3Ryb3llZCkge1xuICAgICAgdXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgIGlmICghZGVzdHJveWVkKSB7XG4gICAgICB2YXIgY3VyciA9IFNwbGlkZTIuaW5kZXg7XG4gICAgICB1cGRhdGVBY3Rpdml0eSgpO1xuICAgICAgdXBkYXRlVmlzaWJpbGl0eSgpO1xuICAgICAgdG9nZ2xlQ2xhc3Moc2xpZGUsIENMQVNTX1BSRVYsIGluZGV4ID09PSBjdXJyIC0gMSk7XG4gICAgICB0b2dnbGVDbGFzcyhzbGlkZSwgQ0xBU1NfTkVYVCwgaW5kZXggPT09IGN1cnIgKyAxKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGVBY3Rpdml0eSgpIHtcbiAgICB2YXIgYWN0aXZlID0gaXNBY3RpdmUoKTtcblxuICAgIGlmIChhY3RpdmUgIT09IGhhc0NsYXNzKHNsaWRlLCBDTEFTU19BQ1RJVkUpKSB7XG4gICAgICB0b2dnbGVDbGFzcyhzbGlkZSwgQ0xBU1NfQUNUSVZFLCBhY3RpdmUpO1xuICAgICAgc2V0QXR0cmlidXRlKHNsaWRlLCBBUklBX0NVUlJFTlQsIGlzTmF2aWdhdGlvbiAmJiBhY3RpdmUgfHwgXCJcIik7XG4gICAgICBlbWl0KGFjdGl2ZSA/IEVWRU5UX0FDVElWRSA6IEVWRU5UX0lOQUNUSVZFLCBzZWxmKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGVWaXNpYmlsaXR5KCkge1xuICAgIHZhciB2aXNpYmxlID0gaXNWaXNpYmxlKCk7XG4gICAgdmFyIGhpZGRlbiA9ICF2aXNpYmxlICYmICghaXNBY3RpdmUoKSB8fCBpc0Nsb25lKTtcblxuICAgIGlmICghU3BsaWRlMi5zdGF0ZS5pcyhbTU9WSU5HLCBTQ1JPTExJTkddKSkge1xuICAgICAgc2V0QXR0cmlidXRlKHNsaWRlLCBBUklBX0hJRERFTiwgaGlkZGVuIHx8IFwiXCIpO1xuICAgIH1cblxuICAgIHNldEF0dHJpYnV0ZShxdWVyeUFsbChzbGlkZSwgb3B0aW9ucy5mb2N1c2FibGVOb2RlcyB8fCBcIlwiKSwgVEFCX0lOREVYLCBoaWRkZW4gPyAtMSA6IFwiXCIpO1xuXG4gICAgaWYgKHNsaWRlRm9jdXMpIHtcbiAgICAgIHNldEF0dHJpYnV0ZShzbGlkZSwgVEFCX0lOREVYLCBoaWRkZW4gPyAtMSA6IDApO1xuICAgIH1cblxuICAgIGlmICh2aXNpYmxlICE9PSBoYXNDbGFzcyhzbGlkZSwgQ0xBU1NfVklTSUJMRSkpIHtcbiAgICAgIHRvZ2dsZUNsYXNzKHNsaWRlLCBDTEFTU19WSVNJQkxFLCB2aXNpYmxlKTtcbiAgICAgIGVtaXQodmlzaWJsZSA/IEVWRU5UX1ZJU0lCTEUgOiBFVkVOVF9ISURERU4sIHNlbGYpO1xuICAgIH1cblxuICAgIGlmICghdmlzaWJsZSAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBzbGlkZSkge1xuICAgICAgdmFyIFNsaWRlMiA9IENvbXBvbmVudHMuU2xpZGVzLmdldEF0KFNwbGlkZTIuaW5kZXgpO1xuICAgICAgU2xpZGUyICYmIGZvY3VzKFNsaWRlMi5zbGlkZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc3R5bGUkMShwcm9wLCB2YWx1ZSwgdXNlQ29udGFpbmVyKSB7XG4gICAgc3R5bGUodXNlQ29udGFpbmVyICYmIGNvbnRhaW5lciB8fCBzbGlkZSwgcHJvcCwgdmFsdWUpO1xuICB9XG5cbiAgZnVuY3Rpb24gaXNBY3RpdmUoKSB7XG4gICAgdmFyIGN1cnIgPSBTcGxpZGUyLmluZGV4O1xuICAgIHJldHVybiBjdXJyID09PSBpbmRleCB8fCBvcHRpb25zLmNsb25lU3RhdHVzICYmIGN1cnIgPT09IHNsaWRlSW5kZXg7XG4gIH1cblxuICBmdW5jdGlvbiBpc1Zpc2libGUoKSB7XG4gICAgaWYgKFNwbGlkZTIuaXMoRkFERSkpIHtcbiAgICAgIHJldHVybiBpc0FjdGl2ZSgpO1xuICAgIH1cblxuICAgIHZhciB0cmFja1JlY3QgPSByZWN0KENvbXBvbmVudHMuRWxlbWVudHMudHJhY2spO1xuICAgIHZhciBzbGlkZVJlY3QgPSByZWN0KHNsaWRlKTtcbiAgICB2YXIgbGVmdCA9IHJlc29sdmUoXCJsZWZ0XCIsIHRydWUpO1xuICAgIHZhciByaWdodCA9IHJlc29sdmUoXCJyaWdodFwiLCB0cnVlKTtcbiAgICByZXR1cm4gZmxvb3IodHJhY2tSZWN0W2xlZnRdKSA8PSBjZWlsKHNsaWRlUmVjdFtsZWZ0XSkgJiYgZmxvb3Ioc2xpZGVSZWN0W3JpZ2h0XSkgPD0gY2VpbCh0cmFja1JlY3RbcmlnaHRdKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzV2l0aGluKGZyb20sIGRpc3RhbmNlKSB7XG4gICAgdmFyIGRpZmYgPSBhYnMoZnJvbSAtIGluZGV4KTtcblxuICAgIGlmICghaXNDbG9uZSAmJiAob3B0aW9ucy5yZXdpbmQgfHwgU3BsaWRlMi5pcyhMT09QKSkpIHtcbiAgICAgIGRpZmYgPSBtaW4oZGlmZiwgU3BsaWRlMi5sZW5ndGggLSBkaWZmKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlmZiA8PSBkaXN0YW5jZTtcbiAgfVxuXG4gIHZhciBzZWxmID0ge1xuICAgIGluZGV4OiBpbmRleCxcbiAgICBzbGlkZUluZGV4OiBzbGlkZUluZGV4LFxuICAgIHNsaWRlOiBzbGlkZSxcbiAgICBjb250YWluZXI6IGNvbnRhaW5lcixcbiAgICBpc0Nsb25lOiBpc0Nsb25lLFxuICAgIG1vdW50OiBtb3VudCxcbiAgICBkZXN0cm95OiBkZXN0cm95LFxuICAgIHVwZGF0ZTogdXBkYXRlLFxuICAgIHN0eWxlOiBzdHlsZSQxLFxuICAgIGlzV2l0aGluOiBpc1dpdGhpblxuICB9O1xuICByZXR1cm4gc2VsZjtcbn1cblxuZnVuY3Rpb24gU2xpZGVzKFNwbGlkZTIsIENvbXBvbmVudHMyLCBvcHRpb25zKSB7XG4gIHZhciBfRXZlbnRJbnRlcmZhY2UyID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMiksXG4gICAgICBvbiA9IF9FdmVudEludGVyZmFjZTIub24sXG4gICAgICBlbWl0ID0gX0V2ZW50SW50ZXJmYWNlMi5lbWl0LFxuICAgICAgYmluZCA9IF9FdmVudEludGVyZmFjZTIuYmluZDtcblxuICB2YXIgX0NvbXBvbmVudHMyJEVsZW1lbnRzID0gQ29tcG9uZW50czIuRWxlbWVudHMsXG4gICAgICBzbGlkZXMgPSBfQ29tcG9uZW50czIkRWxlbWVudHMuc2xpZGVzLFxuICAgICAgbGlzdCA9IF9Db21wb25lbnRzMiRFbGVtZW50cy5saXN0O1xuICB2YXIgU2xpZGVzMiA9IFtdO1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIGluaXQoKTtcbiAgICBvbihFVkVOVF9SRUZSRVNILCBkZXN0cm95KTtcbiAgICBvbihFVkVOVF9SRUZSRVNILCBpbml0KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgc2xpZGVzLmZvckVhY2goZnVuY3Rpb24gKHNsaWRlLCBpbmRleCkge1xuICAgICAgcmVnaXN0ZXIoc2xpZGUsIGluZGV4LCAtMSk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgIGZvckVhY2gkMShmdW5jdGlvbiAoU2xpZGUyKSB7XG4gICAgICBTbGlkZTIuZGVzdHJveSgpO1xuICAgIH0pO1xuICAgIGVtcHR5KFNsaWRlczIpO1xuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgIGZvckVhY2gkMShmdW5jdGlvbiAoU2xpZGUyKSB7XG4gICAgICBTbGlkZTIudXBkYXRlKCk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiByZWdpc3RlcihzbGlkZSwgaW5kZXgsIHNsaWRlSW5kZXgpIHtcbiAgICB2YXIgb2JqZWN0ID0gU2xpZGUkMShTcGxpZGUyLCBpbmRleCwgc2xpZGVJbmRleCwgc2xpZGUpO1xuICAgIG9iamVjdC5tb3VudCgpO1xuICAgIFNsaWRlczIucHVzaChvYmplY3QpO1xuICAgIFNsaWRlczIuc29ydChmdW5jdGlvbiAoU2xpZGUxLCBTbGlkZTIpIHtcbiAgICAgIHJldHVybiBTbGlkZTEuaW5kZXggLSBTbGlkZTIuaW5kZXg7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXQoZXhjbHVkZUNsb25lcykge1xuICAgIHJldHVybiBleGNsdWRlQ2xvbmVzID8gZmlsdGVyKGZ1bmN0aW9uIChTbGlkZTIpIHtcbiAgICAgIHJldHVybiAhU2xpZGUyLmlzQ2xvbmU7XG4gICAgfSkgOiBTbGlkZXMyO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0SW4ocGFnZSkge1xuICAgIHZhciBDb250cm9sbGVyID0gQ29tcG9uZW50czIuQ29udHJvbGxlcjtcbiAgICB2YXIgaW5kZXggPSBDb250cm9sbGVyLnRvSW5kZXgocGFnZSk7XG4gICAgdmFyIG1heCA9IENvbnRyb2xsZXIuaGFzRm9jdXMoKSA/IDEgOiBvcHRpb25zLnBlclBhZ2U7XG4gICAgcmV0dXJuIGZpbHRlcihmdW5jdGlvbiAoU2xpZGUyKSB7XG4gICAgICByZXR1cm4gYmV0d2VlbihTbGlkZTIuaW5kZXgsIGluZGV4LCBpbmRleCArIG1heCAtIDEpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0QXQoaW5kZXgpIHtcbiAgICByZXR1cm4gZmlsdGVyKGluZGV4KVswXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGFkZChpdGVtcywgaW5kZXgpIHtcbiAgICBmb3JFYWNoKGl0ZW1zLCBmdW5jdGlvbiAoc2xpZGUpIHtcbiAgICAgIGlmIChpc1N0cmluZyhzbGlkZSkpIHtcbiAgICAgICAgc2xpZGUgPSBwYXJzZUh0bWwoc2xpZGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNIVE1MRWxlbWVudChzbGlkZSkpIHtcbiAgICAgICAgdmFyIHJlZiA9IHNsaWRlc1tpbmRleF07XG4gICAgICAgIHJlZiA/IGJlZm9yZShzbGlkZSwgcmVmKSA6IGFwcGVuZChsaXN0LCBzbGlkZSk7XG4gICAgICAgIGFkZENsYXNzKHNsaWRlLCBvcHRpb25zLmNsYXNzZXMuc2xpZGUpO1xuICAgICAgICBvYnNlcnZlSW1hZ2VzKHNsaWRlLCBhcHBseShlbWl0LCBFVkVOVF9SRVNJWkUpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBlbWl0KEVWRU5UX1JFRlJFU0gpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3ZlJDEobWF0Y2hlcikge1xuICAgIHJlbW92ZShmaWx0ZXIobWF0Y2hlcikubWFwKGZ1bmN0aW9uIChTbGlkZTIpIHtcbiAgICAgIHJldHVybiBTbGlkZTIuc2xpZGU7XG4gICAgfSkpO1xuICAgIGVtaXQoRVZFTlRfUkVGUkVTSCk7XG4gIH1cblxuICBmdW5jdGlvbiBmb3JFYWNoJDEoaXRlcmF0ZWUsIGV4Y2x1ZGVDbG9uZXMpIHtcbiAgICBnZXQoZXhjbHVkZUNsb25lcykuZm9yRWFjaChpdGVyYXRlZSk7XG4gIH1cblxuICBmdW5jdGlvbiBmaWx0ZXIobWF0Y2hlcikge1xuICAgIHJldHVybiBTbGlkZXMyLmZpbHRlcihpc0Z1bmN0aW9uKG1hdGNoZXIpID8gbWF0Y2hlciA6IGZ1bmN0aW9uIChTbGlkZTIpIHtcbiAgICAgIHJldHVybiBpc1N0cmluZyhtYXRjaGVyKSA/IG1hdGNoZXMoU2xpZGUyLnNsaWRlLCBtYXRjaGVyKSA6IGluY2x1ZGVzKHRvQXJyYXkobWF0Y2hlciksIFNsaWRlMi5pbmRleCk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBzdHlsZShwcm9wLCB2YWx1ZSwgdXNlQ29udGFpbmVyKSB7XG4gICAgZm9yRWFjaCQxKGZ1bmN0aW9uIChTbGlkZTIpIHtcbiAgICAgIFNsaWRlMi5zdHlsZShwcm9wLCB2YWx1ZSwgdXNlQ29udGFpbmVyKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9ic2VydmVJbWFnZXMoZWxtLCBjYWxsYmFjaykge1xuICAgIHZhciBpbWFnZXMgPSBxdWVyeUFsbChlbG0sIFwiaW1nXCIpO1xuICAgIHZhciBsZW5ndGggPSBpbWFnZXMubGVuZ3RoO1xuXG4gICAgaWYgKGxlbmd0aCkge1xuICAgICAgaW1hZ2VzLmZvckVhY2goZnVuY3Rpb24gKGltZykge1xuICAgICAgICBiaW5kKGltZywgXCJsb2FkIGVycm9yXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoISAtLWxlbmd0aCkge1xuICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbGxiYWNrKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0TGVuZ3RoKGV4Y2x1ZGVDbG9uZXMpIHtcbiAgICByZXR1cm4gZXhjbHVkZUNsb25lcyA/IHNsaWRlcy5sZW5ndGggOiBTbGlkZXMyLmxlbmd0aDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzRW5vdWdoKCkge1xuICAgIHJldHVybiBTbGlkZXMyLmxlbmd0aCA+IG9wdGlvbnMucGVyUGFnZTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91bnQ6IG1vdW50LFxuICAgIGRlc3Ryb3k6IGRlc3Ryb3ksXG4gICAgdXBkYXRlOiB1cGRhdGUsXG4gICAgcmVnaXN0ZXI6IHJlZ2lzdGVyLFxuICAgIGdldDogZ2V0LFxuICAgIGdldEluOiBnZXRJbixcbiAgICBnZXRBdDogZ2V0QXQsXG4gICAgYWRkOiBhZGQsXG4gICAgcmVtb3ZlOiByZW1vdmUkMSxcbiAgICBmb3JFYWNoOiBmb3JFYWNoJDEsXG4gICAgZmlsdGVyOiBmaWx0ZXIsXG4gICAgc3R5bGU6IHN0eWxlLFxuICAgIGdldExlbmd0aDogZ2V0TGVuZ3RoLFxuICAgIGlzRW5vdWdoOiBpc0Vub3VnaFxuICB9O1xufVxuXG5mdW5jdGlvbiBMYXlvdXQoU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgdmFyIF9FdmVudEludGVyZmFjZTMgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKSxcbiAgICAgIG9uID0gX0V2ZW50SW50ZXJmYWNlMy5vbixcbiAgICAgIGJpbmQgPSBfRXZlbnRJbnRlcmZhY2UzLmJpbmQsXG4gICAgICBlbWl0ID0gX0V2ZW50SW50ZXJmYWNlMy5lbWl0O1xuXG4gIHZhciBTbGlkZXMgPSBDb21wb25lbnRzMi5TbGlkZXM7XG4gIHZhciByZXNvbHZlID0gQ29tcG9uZW50czIuRGlyZWN0aW9uLnJlc29sdmU7XG4gIHZhciBfQ29tcG9uZW50czIkRWxlbWVudHMyID0gQ29tcG9uZW50czIuRWxlbWVudHMsXG4gICAgICByb290ID0gX0NvbXBvbmVudHMyJEVsZW1lbnRzMi5yb290LFxuICAgICAgdHJhY2sgPSBfQ29tcG9uZW50czIkRWxlbWVudHMyLnRyYWNrLFxuICAgICAgbGlzdCA9IF9Db21wb25lbnRzMiRFbGVtZW50czIubGlzdDtcbiAgdmFyIGdldEF0ID0gU2xpZGVzLmdldEF0LFxuICAgICAgc3R5bGVTbGlkZXMgPSBTbGlkZXMuc3R5bGU7XG4gIHZhciB2ZXJ0aWNhbDtcbiAgdmFyIHJvb3RSZWN0O1xuICB2YXIgb3ZlcmZsb3c7XG5cbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgaW5pdCgpO1xuICAgIGJpbmQod2luZG93LCBcInJlc2l6ZSBsb2FkXCIsIFRocm90dGxlKGFwcGx5KGVtaXQsIEVWRU5UX1JFU0laRSkpKTtcbiAgICBvbihbRVZFTlRfVVBEQVRFRCwgRVZFTlRfUkVGUkVTSF0sIGluaXQpO1xuICAgIG9uKEVWRU5UX1JFU0laRSwgcmVzaXplKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgdmVydGljYWwgPSBvcHRpb25zLmRpcmVjdGlvbiA9PT0gVFRCO1xuICAgIHN0eWxlKHJvb3QsIFwibWF4V2lkdGhcIiwgdW5pdChvcHRpb25zLndpZHRoKSk7XG4gICAgc3R5bGUodHJhY2ssIHJlc29sdmUoXCJwYWRkaW5nTGVmdFwiKSwgY3NzUGFkZGluZyhmYWxzZSkpO1xuICAgIHN0eWxlKHRyYWNrLCByZXNvbHZlKFwicGFkZGluZ1JpZ2h0XCIpLCBjc3NQYWRkaW5nKHRydWUpKTtcbiAgICByZXNpemUodHJ1ZSk7XG4gIH1cblxuICBmdW5jdGlvbiByZXNpemUoZm9yY2UpIHtcbiAgICB2YXIgbmV3UmVjdCA9IHJlY3Qocm9vdCk7XG5cbiAgICBpZiAoZm9yY2UgfHwgcm9vdFJlY3Qud2lkdGggIT09IG5ld1JlY3Qud2lkdGggfHwgcm9vdFJlY3QuaGVpZ2h0ICE9PSBuZXdSZWN0LmhlaWdodCkge1xuICAgICAgc3R5bGUodHJhY2ssIFwiaGVpZ2h0XCIsIGNzc1RyYWNrSGVpZ2h0KCkpO1xuICAgICAgc3R5bGVTbGlkZXMocmVzb2x2ZShcIm1hcmdpblJpZ2h0XCIpLCB1bml0KG9wdGlvbnMuZ2FwKSk7XG4gICAgICBzdHlsZVNsaWRlcyhcIndpZHRoXCIsIGNzc1NsaWRlV2lkdGgoKSk7XG4gICAgICBzdHlsZVNsaWRlcyhcImhlaWdodFwiLCBjc3NTbGlkZUhlaWdodCgpLCB0cnVlKTtcbiAgICAgIHJvb3RSZWN0ID0gbmV3UmVjdDtcbiAgICAgIGVtaXQoRVZFTlRfUkVTSVpFRCk7XG5cbiAgICAgIGlmIChvdmVyZmxvdyAhPT0gKG92ZXJmbG93ID0gaXNPdmVyZmxvdygpKSkge1xuICAgICAgICB0b2dnbGVDbGFzcyhyb290LCBDTEFTU19PVkVSRkxPVywgb3ZlcmZsb3cpO1xuICAgICAgICBlbWl0KEVWRU5UX09WRVJGTE9XLCBvdmVyZmxvdyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY3NzUGFkZGluZyhyaWdodCkge1xuICAgIHZhciBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nO1xuICAgIHZhciBwcm9wID0gcmVzb2x2ZShyaWdodCA/IFwicmlnaHRcIiA6IFwibGVmdFwiKTtcbiAgICByZXR1cm4gcGFkZGluZyAmJiB1bml0KHBhZGRpbmdbcHJvcF0gfHwgKGlzT2JqZWN0KHBhZGRpbmcpID8gMCA6IHBhZGRpbmcpKSB8fCBcIjBweFwiO1xuICB9XG5cbiAgZnVuY3Rpb24gY3NzVHJhY2tIZWlnaHQoKSB7XG4gICAgdmFyIGhlaWdodCA9IFwiXCI7XG5cbiAgICBpZiAodmVydGljYWwpIHtcbiAgICAgIGhlaWdodCA9IGNzc0hlaWdodCgpO1xuICAgICAgYXNzZXJ0KGhlaWdodCwgXCJoZWlnaHQgb3IgaGVpZ2h0UmF0aW8gaXMgbWlzc2luZy5cIik7XG4gICAgICBoZWlnaHQgPSBcImNhbGMoXCIgKyBoZWlnaHQgKyBcIiAtIFwiICsgY3NzUGFkZGluZyhmYWxzZSkgKyBcIiAtIFwiICsgY3NzUGFkZGluZyh0cnVlKSArIFwiKVwiO1xuICAgIH1cblxuICAgIHJldHVybiBoZWlnaHQ7XG4gIH1cblxuICBmdW5jdGlvbiBjc3NIZWlnaHQoKSB7XG4gICAgcmV0dXJuIHVuaXQob3B0aW9ucy5oZWlnaHQgfHwgcmVjdChsaXN0KS53aWR0aCAqIG9wdGlvbnMuaGVpZ2h0UmF0aW8pO1xuICB9XG5cbiAgZnVuY3Rpb24gY3NzU2xpZGVXaWR0aCgpIHtcbiAgICByZXR1cm4gb3B0aW9ucy5hdXRvV2lkdGggPyBudWxsIDogdW5pdChvcHRpb25zLmZpeGVkV2lkdGgpIHx8ICh2ZXJ0aWNhbCA/IFwiXCIgOiBjc3NTbGlkZVNpemUoKSk7XG4gIH1cblxuICBmdW5jdGlvbiBjc3NTbGlkZUhlaWdodCgpIHtcbiAgICByZXR1cm4gdW5pdChvcHRpb25zLmZpeGVkSGVpZ2h0KSB8fCAodmVydGljYWwgPyBvcHRpb25zLmF1dG9IZWlnaHQgPyBudWxsIDogY3NzU2xpZGVTaXplKCkgOiBjc3NIZWlnaHQoKSk7XG4gIH1cblxuICBmdW5jdGlvbiBjc3NTbGlkZVNpemUoKSB7XG4gICAgdmFyIGdhcCA9IHVuaXQob3B0aW9ucy5nYXApO1xuICAgIHJldHVybiBcImNhbGMoKDEwMCVcIiArIChnYXAgJiYgXCIgKyBcIiArIGdhcCkgKyBcIikvXCIgKyAob3B0aW9ucy5wZXJQYWdlIHx8IDEpICsgKGdhcCAmJiBcIiAtIFwiICsgZ2FwKSArIFwiKVwiO1xuICB9XG5cbiAgZnVuY3Rpb24gbGlzdFNpemUoKSB7XG4gICAgcmV0dXJuIHJlY3QobGlzdClbcmVzb2x2ZShcIndpZHRoXCIpXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNsaWRlU2l6ZShpbmRleCwgd2l0aG91dEdhcCkge1xuICAgIHZhciBTbGlkZSA9IGdldEF0KGluZGV4IHx8IDApO1xuICAgIHJldHVybiBTbGlkZSA/IHJlY3QoU2xpZGUuc2xpZGUpW3Jlc29sdmUoXCJ3aWR0aFwiKV0gKyAod2l0aG91dEdhcCA/IDAgOiBnZXRHYXAoKSkgOiAwO1xuICB9XG5cbiAgZnVuY3Rpb24gdG90YWxTaXplKGluZGV4LCB3aXRob3V0R2FwKSB7XG4gICAgdmFyIFNsaWRlID0gZ2V0QXQoaW5kZXgpO1xuXG4gICAgaWYgKFNsaWRlKSB7XG4gICAgICB2YXIgcmlnaHQgPSByZWN0KFNsaWRlLnNsaWRlKVtyZXNvbHZlKFwicmlnaHRcIildO1xuICAgICAgdmFyIGxlZnQgPSByZWN0KGxpc3QpW3Jlc29sdmUoXCJsZWZ0XCIpXTtcbiAgICAgIHJldHVybiBhYnMocmlnaHQgLSBsZWZ0KSArICh3aXRob3V0R2FwID8gMCA6IGdldEdhcCgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNsaWRlclNpemUod2l0aG91dEdhcCkge1xuICAgIHJldHVybiB0b3RhbFNpemUoU3BsaWRlMi5sZW5ndGggLSAxKSAtIHRvdGFsU2l6ZSgwKSArIHNsaWRlU2l6ZSgwLCB3aXRob3V0R2FwKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEdhcCgpIHtcbiAgICB2YXIgU2xpZGUgPSBnZXRBdCgwKTtcbiAgICByZXR1cm4gU2xpZGUgJiYgcGFyc2VGbG9hdChzdHlsZShTbGlkZS5zbGlkZSwgcmVzb2x2ZShcIm1hcmdpblJpZ2h0XCIpKSkgfHwgMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldFBhZGRpbmcocmlnaHQpIHtcbiAgICByZXR1cm4gcGFyc2VGbG9hdChzdHlsZSh0cmFjaywgcmVzb2x2ZShcInBhZGRpbmdcIiArIChyaWdodCA/IFwiUmlnaHRcIiA6IFwiTGVmdFwiKSkpKSB8fCAwO1xuICB9XG5cbiAgZnVuY3Rpb24gaXNPdmVyZmxvdygpIHtcbiAgICByZXR1cm4gU3BsaWRlMi5pcyhGQURFKSB8fCBzbGlkZXJTaXplKHRydWUpID4gbGlzdFNpemUoKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91bnQ6IG1vdW50LFxuICAgIHJlc2l6ZTogcmVzaXplLFxuICAgIGxpc3RTaXplOiBsaXN0U2l6ZSxcbiAgICBzbGlkZVNpemU6IHNsaWRlU2l6ZSxcbiAgICBzbGlkZXJTaXplOiBzbGlkZXJTaXplLFxuICAgIHRvdGFsU2l6ZTogdG90YWxTaXplLFxuICAgIGdldFBhZGRpbmc6IGdldFBhZGRpbmcsXG4gICAgaXNPdmVyZmxvdzogaXNPdmVyZmxvd1xuICB9O1xufVxuXG52YXIgTVVMVElQTElFUiA9IDI7XG5cbmZ1bmN0aW9uIENsb25lcyhTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgZXZlbnQgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKTtcbiAgdmFyIG9uID0gZXZlbnQub247XG4gIHZhciBFbGVtZW50cyA9IENvbXBvbmVudHMyLkVsZW1lbnRzLFxuICAgICAgU2xpZGVzID0gQ29tcG9uZW50czIuU2xpZGVzO1xuICB2YXIgcmVzb2x2ZSA9IENvbXBvbmVudHMyLkRpcmVjdGlvbi5yZXNvbHZlO1xuICB2YXIgY2xvbmVzID0gW107XG4gIHZhciBjbG9uZUNvdW50O1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIG9uKEVWRU5UX1JFRlJFU0gsIHJlbW91bnQpO1xuICAgIG9uKFtFVkVOVF9VUERBVEVELCBFVkVOVF9SRVNJWkVdLCBvYnNlcnZlKTtcblxuICAgIGlmIChjbG9uZUNvdW50ID0gY29tcHV0ZUNsb25lQ291bnQoKSkge1xuICAgICAgZ2VuZXJhdGUoY2xvbmVDb3VudCk7XG4gICAgICBDb21wb25lbnRzMi5MYXlvdXQucmVzaXplKHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbW91bnQoKSB7XG4gICAgZGVzdHJveSgpO1xuICAgIG1vdW50KCk7XG4gIH1cblxuICBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgIHJlbW92ZShjbG9uZXMpO1xuICAgIGVtcHR5KGNsb25lcyk7XG4gICAgZXZlbnQuZGVzdHJveSgpO1xuICB9XG5cbiAgZnVuY3Rpb24gb2JzZXJ2ZSgpIHtcbiAgICB2YXIgY291bnQgPSBjb21wdXRlQ2xvbmVDb3VudCgpO1xuXG4gICAgaWYgKGNsb25lQ291bnQgIT09IGNvdW50KSB7XG4gICAgICBpZiAoY2xvbmVDb3VudCA8IGNvdW50IHx8ICFjb3VudCkge1xuICAgICAgICBldmVudC5lbWl0KEVWRU5UX1JFRlJFU0gpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGdlbmVyYXRlKGNvdW50KSB7XG4gICAgdmFyIHNsaWRlcyA9IFNsaWRlcy5nZXQoKS5zbGljZSgpO1xuICAgIHZhciBsZW5ndGggPSBzbGlkZXMubGVuZ3RoO1xuXG4gICAgaWYgKGxlbmd0aCkge1xuICAgICAgd2hpbGUgKHNsaWRlcy5sZW5ndGggPCBjb3VudCkge1xuICAgICAgICBwdXNoKHNsaWRlcywgc2xpZGVzKTtcbiAgICAgIH1cblxuICAgICAgcHVzaChzbGlkZXMuc2xpY2UoLWNvdW50KSwgc2xpZGVzLnNsaWNlKDAsIGNvdW50KSkuZm9yRWFjaChmdW5jdGlvbiAoU2xpZGUsIGluZGV4KSB7XG4gICAgICAgIHZhciBpc0hlYWQgPSBpbmRleCA8IGNvdW50O1xuICAgICAgICB2YXIgY2xvbmUgPSBjbG9uZURlZXAoU2xpZGUuc2xpZGUsIGluZGV4KTtcbiAgICAgICAgaXNIZWFkID8gYmVmb3JlKGNsb25lLCBzbGlkZXNbMF0uc2xpZGUpIDogYXBwZW5kKEVsZW1lbnRzLmxpc3QsIGNsb25lKTtcbiAgICAgICAgcHVzaChjbG9uZXMsIGNsb25lKTtcbiAgICAgICAgU2xpZGVzLnJlZ2lzdGVyKGNsb25lLCBpbmRleCAtIGNvdW50ICsgKGlzSGVhZCA/IDAgOiBsZW5ndGgpLCBTbGlkZS5pbmRleCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjbG9uZURlZXAoZWxtLCBpbmRleCkge1xuICAgIHZhciBjbG9uZSA9IGVsbS5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgYWRkQ2xhc3MoY2xvbmUsIG9wdGlvbnMuY2xhc3Nlcy5jbG9uZSk7XG4gICAgY2xvbmUuaWQgPSBTcGxpZGUyLnJvb3QuaWQgKyBcIi1jbG9uZVwiICsgcGFkKGluZGV4ICsgMSk7XG4gICAgcmV0dXJuIGNsb25lO1xuICB9XG5cbiAgZnVuY3Rpb24gY29tcHV0ZUNsb25lQ291bnQoKSB7XG4gICAgdmFyIGNsb25lczIgPSBvcHRpb25zLmNsb25lcztcblxuICAgIGlmICghU3BsaWRlMi5pcyhMT09QKSkge1xuICAgICAgY2xvbmVzMiA9IDA7XG4gICAgfSBlbHNlIGlmIChpc1VuZGVmaW5lZChjbG9uZXMyKSkge1xuICAgICAgdmFyIGZpeGVkU2l6ZSA9IG9wdGlvbnNbcmVzb2x2ZShcImZpeGVkV2lkdGhcIildICYmIENvbXBvbmVudHMyLkxheW91dC5zbGlkZVNpemUoMCk7XG4gICAgICB2YXIgZml4ZWRDb3VudCA9IGZpeGVkU2l6ZSAmJiBjZWlsKHJlY3QoRWxlbWVudHMudHJhY2spW3Jlc29sdmUoXCJ3aWR0aFwiKV0gLyBmaXhlZFNpemUpO1xuICAgICAgY2xvbmVzMiA9IGZpeGVkQ291bnQgfHwgb3B0aW9uc1tyZXNvbHZlKFwiYXV0b1dpZHRoXCIpXSAmJiBTcGxpZGUyLmxlbmd0aCB8fCBvcHRpb25zLnBlclBhZ2UgKiBNVUxUSVBMSUVSO1xuICAgIH1cblxuICAgIHJldHVybiBjbG9uZXMyO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtb3VudDogbW91bnQsXG4gICAgZGVzdHJveTogZGVzdHJveVxuICB9O1xufVxuXG5mdW5jdGlvbiBNb3ZlKFNwbGlkZTIsIENvbXBvbmVudHMyLCBvcHRpb25zKSB7XG4gIHZhciBfRXZlbnRJbnRlcmZhY2U0ID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMiksXG4gICAgICBvbiA9IF9FdmVudEludGVyZmFjZTQub24sXG4gICAgICBlbWl0ID0gX0V2ZW50SW50ZXJmYWNlNC5lbWl0O1xuXG4gIHZhciBzZXQgPSBTcGxpZGUyLnN0YXRlLnNldDtcbiAgdmFyIF9Db21wb25lbnRzMiRMYXlvdXQgPSBDb21wb25lbnRzMi5MYXlvdXQsXG4gICAgICBzbGlkZVNpemUgPSBfQ29tcG9uZW50czIkTGF5b3V0LnNsaWRlU2l6ZSxcbiAgICAgIGdldFBhZGRpbmcgPSBfQ29tcG9uZW50czIkTGF5b3V0LmdldFBhZGRpbmcsXG4gICAgICB0b3RhbFNpemUgPSBfQ29tcG9uZW50czIkTGF5b3V0LnRvdGFsU2l6ZSxcbiAgICAgIGxpc3RTaXplID0gX0NvbXBvbmVudHMyJExheW91dC5saXN0U2l6ZSxcbiAgICAgIHNsaWRlclNpemUgPSBfQ29tcG9uZW50czIkTGF5b3V0LnNsaWRlclNpemU7XG4gIHZhciBfQ29tcG9uZW50czIkRGlyZWN0aW8gPSBDb21wb25lbnRzMi5EaXJlY3Rpb24sXG4gICAgICByZXNvbHZlID0gX0NvbXBvbmVudHMyJERpcmVjdGlvLnJlc29sdmUsXG4gICAgICBvcmllbnQgPSBfQ29tcG9uZW50czIkRGlyZWN0aW8ub3JpZW50O1xuICB2YXIgX0NvbXBvbmVudHMyJEVsZW1lbnRzMyA9IENvbXBvbmVudHMyLkVsZW1lbnRzLFxuICAgICAgbGlzdCA9IF9Db21wb25lbnRzMiRFbGVtZW50czMubGlzdCxcbiAgICAgIHRyYWNrID0gX0NvbXBvbmVudHMyJEVsZW1lbnRzMy50cmFjaztcbiAgdmFyIFRyYW5zaXRpb247XG5cbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgVHJhbnNpdGlvbiA9IENvbXBvbmVudHMyLlRyYW5zaXRpb247XG4gICAgb24oW0VWRU5UX01PVU5URUQsIEVWRU5UX1JFU0laRUQsIEVWRU5UX1VQREFURUQsIEVWRU5UX1JFRlJFU0hdLCByZXBvc2l0aW9uKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlcG9zaXRpb24oKSB7XG4gICAgaWYgKCFDb21wb25lbnRzMi5Db250cm9sbGVyLmlzQnVzeSgpKSB7XG4gICAgICBDb21wb25lbnRzMi5TY3JvbGwuY2FuY2VsKCk7XG4gICAgICBqdW1wKFNwbGlkZTIuaW5kZXgpO1xuICAgICAgQ29tcG9uZW50czIuU2xpZGVzLnVwZGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG1vdmUoZGVzdCwgaW5kZXgsIHByZXYsIGNhbGxiYWNrKSB7XG4gICAgaWYgKGRlc3QgIT09IGluZGV4ICYmIGNhblNoaWZ0KGRlc3QgPiBwcmV2KSkge1xuICAgICAgY2FuY2VsKCk7XG4gICAgICB0cmFuc2xhdGUoc2hpZnQoZ2V0UG9zaXRpb24oKSwgZGVzdCA+IHByZXYpLCB0cnVlKTtcbiAgICB9XG5cbiAgICBzZXQoTU9WSU5HKTtcbiAgICBlbWl0KEVWRU5UX01PVkUsIGluZGV4LCBwcmV2LCBkZXN0KTtcbiAgICBUcmFuc2l0aW9uLnN0YXJ0KGluZGV4LCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZXQoSURMRSk7XG4gICAgICBlbWl0KEVWRU5UX01PVkVELCBpbmRleCwgcHJldiwgZGVzdCk7XG4gICAgICBjYWxsYmFjayAmJiBjYWxsYmFjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24ganVtcChpbmRleCkge1xuICAgIHRyYW5zbGF0ZSh0b1Bvc2l0aW9uKGluZGV4LCB0cnVlKSk7XG4gIH1cblxuICBmdW5jdGlvbiB0cmFuc2xhdGUocG9zaXRpb24sIHByZXZlbnRMb29wKSB7XG4gICAgaWYgKCFTcGxpZGUyLmlzKEZBREUpKSB7XG4gICAgICB2YXIgZGVzdGluYXRpb24gPSBwcmV2ZW50TG9vcCA/IHBvc2l0aW9uIDogbG9vcChwb3NpdGlvbik7XG4gICAgICBzdHlsZShsaXN0LCBcInRyYW5zZm9ybVwiLCBcInRyYW5zbGF0ZVwiICsgcmVzb2x2ZShcIlhcIikgKyBcIihcIiArIGRlc3RpbmF0aW9uICsgXCJweClcIik7XG4gICAgICBwb3NpdGlvbiAhPT0gZGVzdGluYXRpb24gJiYgZW1pdChFVkVOVF9TSElGVEVEKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBsb29wKHBvc2l0aW9uKSB7XG4gICAgaWYgKFNwbGlkZTIuaXMoTE9PUCkpIHtcbiAgICAgIHZhciBpbmRleCA9IHRvSW5kZXgocG9zaXRpb24pO1xuICAgICAgdmFyIGV4Y2VlZGVkTWF4ID0gaW5kZXggPiBDb21wb25lbnRzMi5Db250cm9sbGVyLmdldEVuZCgpO1xuICAgICAgdmFyIGV4Y2VlZGVkTWluID0gaW5kZXggPCAwO1xuXG4gICAgICBpZiAoZXhjZWVkZWRNaW4gfHwgZXhjZWVkZWRNYXgpIHtcbiAgICAgICAgcG9zaXRpb24gPSBzaGlmdChwb3NpdGlvbiwgZXhjZWVkZWRNYXgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwb3NpdGlvbjtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNoaWZ0KHBvc2l0aW9uLCBiYWNrd2FyZHMpIHtcbiAgICB2YXIgZXhjZXNzID0gcG9zaXRpb24gLSBnZXRMaW1pdChiYWNrd2FyZHMpO1xuICAgIHZhciBzaXplID0gc2xpZGVyU2l6ZSgpO1xuICAgIHBvc2l0aW9uIC09IG9yaWVudChzaXplICogKGNlaWwoYWJzKGV4Y2VzcykgLyBzaXplKSB8fCAxKSkgKiAoYmFja3dhcmRzID8gMSA6IC0xKTtcbiAgICByZXR1cm4gcG9zaXRpb247XG4gIH1cblxuICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgdHJhbnNsYXRlKGdldFBvc2l0aW9uKCksIHRydWUpO1xuICAgIFRyYW5zaXRpb24uY2FuY2VsKCk7XG4gIH1cblxuICBmdW5jdGlvbiB0b0luZGV4KHBvc2l0aW9uKSB7XG4gICAgdmFyIFNsaWRlcyA9IENvbXBvbmVudHMyLlNsaWRlcy5nZXQoKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBtaW5EaXN0YW5jZSA9IEluZmluaXR5O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBTbGlkZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzbGlkZUluZGV4ID0gU2xpZGVzW2ldLmluZGV4O1xuICAgICAgdmFyIGRpc3RhbmNlID0gYWJzKHRvUG9zaXRpb24oc2xpZGVJbmRleCwgdHJ1ZSkgLSBwb3NpdGlvbik7XG5cbiAgICAgIGlmIChkaXN0YW5jZSA8PSBtaW5EaXN0YW5jZSkge1xuICAgICAgICBtaW5EaXN0YW5jZSA9IGRpc3RhbmNlO1xuICAgICAgICBpbmRleCA9IHNsaWRlSW5kZXg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBmdW5jdGlvbiB0b1Bvc2l0aW9uKGluZGV4LCB0cmltbWluZykge1xuICAgIHZhciBwb3NpdGlvbiA9IG9yaWVudCh0b3RhbFNpemUoaW5kZXggLSAxKSAtIG9mZnNldChpbmRleCkpO1xuICAgIHJldHVybiB0cmltbWluZyA/IHRyaW0ocG9zaXRpb24pIDogcG9zaXRpb247XG4gIH1cblxuICBmdW5jdGlvbiBnZXRQb3NpdGlvbigpIHtcbiAgICB2YXIgbGVmdCA9IHJlc29sdmUoXCJsZWZ0XCIpO1xuICAgIHJldHVybiByZWN0KGxpc3QpW2xlZnRdIC0gcmVjdCh0cmFjaylbbGVmdF0gKyBvcmllbnQoZ2V0UGFkZGluZyhmYWxzZSkpO1xuICB9XG5cbiAgZnVuY3Rpb24gdHJpbShwb3NpdGlvbikge1xuICAgIGlmIChvcHRpb25zLnRyaW1TcGFjZSAmJiBTcGxpZGUyLmlzKFNMSURFKSkge1xuICAgICAgcG9zaXRpb24gPSBjbGFtcChwb3NpdGlvbiwgMCwgb3JpZW50KHNsaWRlclNpemUodHJ1ZSkgLSBsaXN0U2l6ZSgpKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvc2l0aW9uO1xuICB9XG5cbiAgZnVuY3Rpb24gb2Zmc2V0KGluZGV4KSB7XG4gICAgdmFyIGZvY3VzID0gb3B0aW9ucy5mb2N1cztcbiAgICByZXR1cm4gZm9jdXMgPT09IFwiY2VudGVyXCIgPyAobGlzdFNpemUoKSAtIHNsaWRlU2l6ZShpbmRleCwgdHJ1ZSkpIC8gMiA6ICtmb2N1cyAqIHNsaWRlU2l6ZShpbmRleCkgfHwgMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldExpbWl0KG1heCkge1xuICAgIHJldHVybiB0b1Bvc2l0aW9uKG1heCA/IENvbXBvbmVudHMyLkNvbnRyb2xsZXIuZ2V0RW5kKCkgOiAwLCAhIW9wdGlvbnMudHJpbVNwYWNlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNhblNoaWZ0KGJhY2t3YXJkcykge1xuICAgIHZhciBzaGlmdGVkID0gb3JpZW50KHNoaWZ0KGdldFBvc2l0aW9uKCksIGJhY2t3YXJkcykpO1xuICAgIHJldHVybiBiYWNrd2FyZHMgPyBzaGlmdGVkID49IDAgOiBzaGlmdGVkIDw9IGxpc3RbcmVzb2x2ZShcInNjcm9sbFdpZHRoXCIpXSAtIHJlY3QodHJhY2spW3Jlc29sdmUoXCJ3aWR0aFwiKV07XG4gIH1cblxuICBmdW5jdGlvbiBleGNlZWRlZExpbWl0KG1heCwgcG9zaXRpb24pIHtcbiAgICBwb3NpdGlvbiA9IGlzVW5kZWZpbmVkKHBvc2l0aW9uKSA/IGdldFBvc2l0aW9uKCkgOiBwb3NpdGlvbjtcbiAgICB2YXIgZXhjZWVkZWRNaW4gPSBtYXggIT09IHRydWUgJiYgb3JpZW50KHBvc2l0aW9uKSA8IG9yaWVudChnZXRMaW1pdChmYWxzZSkpO1xuICAgIHZhciBleGNlZWRlZE1heCA9IG1heCAhPT0gZmFsc2UgJiYgb3JpZW50KHBvc2l0aW9uKSA+IG9yaWVudChnZXRMaW1pdCh0cnVlKSk7XG4gICAgcmV0dXJuIGV4Y2VlZGVkTWluIHx8IGV4Y2VlZGVkTWF4O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtb3VudDogbW91bnQsXG4gICAgbW92ZTogbW92ZSxcbiAgICBqdW1wOiBqdW1wLFxuICAgIHRyYW5zbGF0ZTogdHJhbnNsYXRlLFxuICAgIHNoaWZ0OiBzaGlmdCxcbiAgICBjYW5jZWw6IGNhbmNlbCxcbiAgICB0b0luZGV4OiB0b0luZGV4LFxuICAgIHRvUG9zaXRpb246IHRvUG9zaXRpb24sXG4gICAgZ2V0UG9zaXRpb246IGdldFBvc2l0aW9uLFxuICAgIGdldExpbWl0OiBnZXRMaW1pdCxcbiAgICBleGNlZWRlZExpbWl0OiBleGNlZWRlZExpbWl0LFxuICAgIHJlcG9zaXRpb246IHJlcG9zaXRpb25cbiAgfTtcbn1cblxuZnVuY3Rpb24gQ29udHJvbGxlcihTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgX0V2ZW50SW50ZXJmYWNlNSA9IEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpLFxuICAgICAgb24gPSBfRXZlbnRJbnRlcmZhY2U1Lm9uLFxuICAgICAgZW1pdCA9IF9FdmVudEludGVyZmFjZTUuZW1pdDtcblxuICB2YXIgTW92ZSA9IENvbXBvbmVudHMyLk1vdmU7XG4gIHZhciBnZXRQb3NpdGlvbiA9IE1vdmUuZ2V0UG9zaXRpb24sXG4gICAgICBnZXRMaW1pdCA9IE1vdmUuZ2V0TGltaXQsXG4gICAgICB0b1Bvc2l0aW9uID0gTW92ZS50b1Bvc2l0aW9uO1xuICB2YXIgX0NvbXBvbmVudHMyJFNsaWRlcyA9IENvbXBvbmVudHMyLlNsaWRlcyxcbiAgICAgIGlzRW5vdWdoID0gX0NvbXBvbmVudHMyJFNsaWRlcy5pc0Vub3VnaCxcbiAgICAgIGdldExlbmd0aCA9IF9Db21wb25lbnRzMiRTbGlkZXMuZ2V0TGVuZ3RoO1xuICB2YXIgb21pdEVuZCA9IG9wdGlvbnMub21pdEVuZDtcbiAgdmFyIGlzTG9vcCA9IFNwbGlkZTIuaXMoTE9PUCk7XG4gIHZhciBpc1NsaWRlID0gU3BsaWRlMi5pcyhTTElERSk7XG4gIHZhciBnZXROZXh0ID0gYXBwbHkoZ2V0QWRqYWNlbnQsIGZhbHNlKTtcbiAgdmFyIGdldFByZXYgPSBhcHBseShnZXRBZGphY2VudCwgdHJ1ZSk7XG4gIHZhciBjdXJySW5kZXggPSBvcHRpb25zLnN0YXJ0IHx8IDA7XG4gIHZhciBlbmRJbmRleDtcbiAgdmFyIHByZXZJbmRleCA9IGN1cnJJbmRleDtcbiAgdmFyIHNsaWRlQ291bnQ7XG4gIHZhciBwZXJNb3ZlO1xuICB2YXIgcGVyUGFnZTtcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBpbml0KCk7XG4gICAgb24oW0VWRU5UX1VQREFURUQsIEVWRU5UX1JFRlJFU0gsIEVWRU5UX0VORF9JTkRFWF9DSEFOR0VEXSwgaW5pdCk7XG4gICAgb24oRVZFTlRfUkVTSVpFRCwgb25SZXNpemVkKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgc2xpZGVDb3VudCA9IGdldExlbmd0aCh0cnVlKTtcbiAgICBwZXJNb3ZlID0gb3B0aW9ucy5wZXJNb3ZlO1xuICAgIHBlclBhZ2UgPSBvcHRpb25zLnBlclBhZ2U7XG4gICAgZW5kSW5kZXggPSBnZXRFbmQoKTtcbiAgICB2YXIgaW5kZXggPSBjbGFtcChjdXJySW5kZXgsIDAsIG9taXRFbmQgPyBlbmRJbmRleCA6IHNsaWRlQ291bnQgLSAxKTtcblxuICAgIGlmIChpbmRleCAhPT0gY3VyckluZGV4KSB7XG4gICAgICBjdXJySW5kZXggPSBpbmRleDtcbiAgICAgIE1vdmUucmVwb3NpdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uUmVzaXplZCgpIHtcbiAgICBpZiAoZW5kSW5kZXggIT09IGdldEVuZCgpKSB7XG4gICAgICBlbWl0KEVWRU5UX0VORF9JTkRFWF9DSEFOR0VEKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBnbyhjb250cm9sLCBhbGxvd1NhbWVJbmRleCwgY2FsbGJhY2spIHtcbiAgICBpZiAoIWlzQnVzeSgpKSB7XG4gICAgICB2YXIgZGVzdCA9IHBhcnNlKGNvbnRyb2wpO1xuICAgICAgdmFyIGluZGV4ID0gbG9vcChkZXN0KTtcblxuICAgICAgaWYgKGluZGV4ID4gLTEgJiYgKGFsbG93U2FtZUluZGV4IHx8IGluZGV4ICE9PSBjdXJySW5kZXgpKSB7XG4gICAgICAgIHNldEluZGV4KGluZGV4KTtcbiAgICAgICAgTW92ZS5tb3ZlKGRlc3QsIGluZGV4LCBwcmV2SW5kZXgsIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzY3JvbGwoZGVzdGluYXRpb24sIGR1cmF0aW9uLCBzbmFwLCBjYWxsYmFjaykge1xuICAgIENvbXBvbmVudHMyLlNjcm9sbC5zY3JvbGwoZGVzdGluYXRpb24sIGR1cmF0aW9uLCBzbmFwLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgaW5kZXggPSBsb29wKE1vdmUudG9JbmRleChnZXRQb3NpdGlvbigpKSk7XG4gICAgICBzZXRJbmRleChvbWl0RW5kID8gbWluKGluZGV4LCBlbmRJbmRleCkgOiBpbmRleCk7XG4gICAgICBjYWxsYmFjayAmJiBjYWxsYmFjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2UoY29udHJvbCkge1xuICAgIHZhciBpbmRleCA9IGN1cnJJbmRleDtcblxuICAgIGlmIChpc1N0cmluZyhjb250cm9sKSkge1xuICAgICAgdmFyIF9yZWYgPSBjb250cm9sLm1hdGNoKC8oWytcXC08Pl0pKFxcZCspPy8pIHx8IFtdLFxuICAgICAgICAgIGluZGljYXRvciA9IF9yZWZbMV0sXG4gICAgICAgICAgbnVtYmVyID0gX3JlZlsyXTtcblxuICAgICAgaWYgKGluZGljYXRvciA9PT0gXCIrXCIgfHwgaW5kaWNhdG9yID09PSBcIi1cIikge1xuICAgICAgICBpbmRleCA9IGNvbXB1dGVEZXN0SW5kZXgoY3VyckluZGV4ICsgKyhcIlwiICsgaW5kaWNhdG9yICsgKCtudW1iZXIgfHwgMSkpLCBjdXJySW5kZXgpO1xuICAgICAgfSBlbHNlIGlmIChpbmRpY2F0b3IgPT09IFwiPlwiKSB7XG4gICAgICAgIGluZGV4ID0gbnVtYmVyID8gdG9JbmRleCgrbnVtYmVyKSA6IGdldE5leHQodHJ1ZSk7XG4gICAgICB9IGVsc2UgaWYgKGluZGljYXRvciA9PT0gXCI8XCIpIHtcbiAgICAgICAgaW5kZXggPSBnZXRQcmV2KHRydWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpbmRleCA9IGlzTG9vcCA/IGNvbnRyb2wgOiBjbGFtcChjb250cm9sLCAwLCBlbmRJbmRleCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0QWRqYWNlbnQocHJldiwgZGVzdGluYXRpb24pIHtcbiAgICB2YXIgbnVtYmVyID0gcGVyTW92ZSB8fCAoaGFzRm9jdXMoKSA/IDEgOiBwZXJQYWdlKTtcbiAgICB2YXIgZGVzdCA9IGNvbXB1dGVEZXN0SW5kZXgoY3VyckluZGV4ICsgbnVtYmVyICogKHByZXYgPyAtMSA6IDEpLCBjdXJySW5kZXgsICEocGVyTW92ZSB8fCBoYXNGb2N1cygpKSk7XG5cbiAgICBpZiAoZGVzdCA9PT0gLTEgJiYgaXNTbGlkZSkge1xuICAgICAgaWYgKCFhcHByb3hpbWF0ZWx5RXF1YWwoZ2V0UG9zaXRpb24oKSwgZ2V0TGltaXQoIXByZXYpLCAxKSkge1xuICAgICAgICByZXR1cm4gcHJldiA/IDAgOiBlbmRJbmRleDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGVzdGluYXRpb24gPyBkZXN0IDogbG9vcChkZXN0KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbXB1dGVEZXN0SW5kZXgoZGVzdCwgZnJvbSwgc25hcFBhZ2UpIHtcbiAgICBpZiAoaXNFbm91Z2goKSB8fCBoYXNGb2N1cygpKSB7XG4gICAgICB2YXIgaW5kZXggPSBjb21wdXRlTW92YWJsZURlc3RJbmRleChkZXN0KTtcblxuICAgICAgaWYgKGluZGV4ICE9PSBkZXN0KSB7XG4gICAgICAgIGZyb20gPSBkZXN0O1xuICAgICAgICBkZXN0ID0gaW5kZXg7XG4gICAgICAgIHNuYXBQYWdlID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChkZXN0IDwgMCB8fCBkZXN0ID4gZW5kSW5kZXgpIHtcbiAgICAgICAgaWYgKCFwZXJNb3ZlICYmIChiZXR3ZWVuKDAsIGRlc3QsIGZyb20sIHRydWUpIHx8IGJldHdlZW4oZW5kSW5kZXgsIGZyb20sIGRlc3QsIHRydWUpKSkge1xuICAgICAgICAgIGRlc3QgPSB0b0luZGV4KHRvUGFnZShkZXN0KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGlzTG9vcCkge1xuICAgICAgICAgICAgZGVzdCA9IHNuYXBQYWdlID8gZGVzdCA8IDAgPyAtKHNsaWRlQ291bnQgJSBwZXJQYWdlIHx8IHBlclBhZ2UpIDogc2xpZGVDb3VudCA6IGRlc3Q7XG4gICAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLnJld2luZCkge1xuICAgICAgICAgICAgZGVzdCA9IGRlc3QgPCAwID8gZW5kSW5kZXggOiAwO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZXN0ID0gLTE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc25hcFBhZ2UgJiYgZGVzdCAhPT0gZnJvbSkge1xuICAgICAgICAgIGRlc3QgPSB0b0luZGV4KHRvUGFnZShmcm9tKSArIChkZXN0IDwgZnJvbSA/IC0xIDogMSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlc3QgPSAtMTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVzdDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbXB1dGVNb3ZhYmxlRGVzdEluZGV4KGRlc3QpIHtcbiAgICBpZiAoaXNTbGlkZSAmJiBvcHRpb25zLnRyaW1TcGFjZSA9PT0gXCJtb3ZlXCIgJiYgZGVzdCAhPT0gY3VyckluZGV4KSB7XG4gICAgICB2YXIgcG9zaXRpb24gPSBnZXRQb3NpdGlvbigpO1xuXG4gICAgICB3aGlsZSAocG9zaXRpb24gPT09IHRvUG9zaXRpb24oZGVzdCwgdHJ1ZSkgJiYgYmV0d2VlbihkZXN0LCAwLCBTcGxpZGUyLmxlbmd0aCAtIDEsICFvcHRpb25zLnJld2luZCkpIHtcbiAgICAgICAgZGVzdCA8IGN1cnJJbmRleCA/IC0tZGVzdCA6ICsrZGVzdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGVzdDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxvb3AoaW5kZXgpIHtcbiAgICByZXR1cm4gaXNMb29wID8gKGluZGV4ICsgc2xpZGVDb3VudCkgJSBzbGlkZUNvdW50IHx8IDAgOiBpbmRleDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEVuZCgpIHtcbiAgICB2YXIgZW5kID0gc2xpZGVDb3VudCAtIChoYXNGb2N1cygpIHx8IGlzTG9vcCAmJiBwZXJNb3ZlID8gMSA6IHBlclBhZ2UpO1xuXG4gICAgd2hpbGUgKG9taXRFbmQgJiYgZW5kLS0gPiAwKSB7XG4gICAgICBpZiAodG9Qb3NpdGlvbihzbGlkZUNvdW50IC0gMSwgdHJ1ZSkgIT09IHRvUG9zaXRpb24oZW5kLCB0cnVlKSkge1xuICAgICAgICBlbmQrKztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYW1wKGVuZCwgMCwgc2xpZGVDb3VudCAtIDEpO1xuICB9XG5cbiAgZnVuY3Rpb24gdG9JbmRleChwYWdlKSB7XG4gICAgcmV0dXJuIGNsYW1wKGhhc0ZvY3VzKCkgPyBwYWdlIDogcGVyUGFnZSAqIHBhZ2UsIDAsIGVuZEluZGV4KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRvUGFnZShpbmRleCkge1xuICAgIHJldHVybiBoYXNGb2N1cygpID8gbWluKGluZGV4LCBlbmRJbmRleCkgOiBmbG9vcigoaW5kZXggPj0gZW5kSW5kZXggPyBzbGlkZUNvdW50IC0gMSA6IGluZGV4KSAvIHBlclBhZ2UpO1xuICB9XG5cbiAgZnVuY3Rpb24gdG9EZXN0KGRlc3RpbmF0aW9uKSB7XG4gICAgdmFyIGNsb3Nlc3QgPSBNb3ZlLnRvSW5kZXgoZGVzdGluYXRpb24pO1xuICAgIHJldHVybiBpc1NsaWRlID8gY2xhbXAoY2xvc2VzdCwgMCwgZW5kSW5kZXgpIDogY2xvc2VzdDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNldEluZGV4KGluZGV4KSB7XG4gICAgaWYgKGluZGV4ICE9PSBjdXJySW5kZXgpIHtcbiAgICAgIHByZXZJbmRleCA9IGN1cnJJbmRleDtcbiAgICAgIGN1cnJJbmRleCA9IGluZGV4O1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEluZGV4KHByZXYpIHtcbiAgICByZXR1cm4gcHJldiA/IHByZXZJbmRleCA6IGN1cnJJbmRleDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhc0ZvY3VzKCkge1xuICAgIHJldHVybiAhaXNVbmRlZmluZWQob3B0aW9ucy5mb2N1cykgfHwgb3B0aW9ucy5pc05hdmlnYXRpb247XG4gIH1cblxuICBmdW5jdGlvbiBpc0J1c3koKSB7XG4gICAgcmV0dXJuIFNwbGlkZTIuc3RhdGUuaXMoW01PVklORywgU0NST0xMSU5HXSkgJiYgISFvcHRpb25zLndhaXRGb3JUcmFuc2l0aW9uO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtb3VudDogbW91bnQsXG4gICAgZ286IGdvLFxuICAgIHNjcm9sbDogc2Nyb2xsLFxuICAgIGdldE5leHQ6IGdldE5leHQsXG4gICAgZ2V0UHJldjogZ2V0UHJldixcbiAgICBnZXRBZGphY2VudDogZ2V0QWRqYWNlbnQsXG4gICAgZ2V0RW5kOiBnZXRFbmQsXG4gICAgc2V0SW5kZXg6IHNldEluZGV4LFxuICAgIGdldEluZGV4OiBnZXRJbmRleCxcbiAgICB0b0luZGV4OiB0b0luZGV4LFxuICAgIHRvUGFnZTogdG9QYWdlLFxuICAgIHRvRGVzdDogdG9EZXN0LFxuICAgIGhhc0ZvY3VzOiBoYXNGb2N1cyxcbiAgICBpc0J1c3k6IGlzQnVzeVxuICB9O1xufVxuXG52YXIgWE1MX05BTUVfU1BBQ0UgPSBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI7XG52YXIgUEFUSCA9IFwibTE1LjUgMC45MzItNC4zIDQuMzggMTQuNSAxNC42LTE0LjUgMTQuNSA0LjMgNC40IDE0LjYtMTQuNiA0LjQtNC4zLTQuNC00LjQtMTQuNi0xNC42elwiO1xudmFyIFNJWkUgPSA0MDtcblxuZnVuY3Rpb24gQXJyb3dzKFNwbGlkZTIsIENvbXBvbmVudHMyLCBvcHRpb25zKSB7XG4gIHZhciBldmVudCA9IEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpO1xuICB2YXIgb24gPSBldmVudC5vbixcbiAgICAgIGJpbmQgPSBldmVudC5iaW5kLFxuICAgICAgZW1pdCA9IGV2ZW50LmVtaXQ7XG4gIHZhciBjbGFzc2VzID0gb3B0aW9ucy5jbGFzc2VzLFxuICAgICAgaTE4biA9IG9wdGlvbnMuaTE4bjtcbiAgdmFyIEVsZW1lbnRzID0gQ29tcG9uZW50czIuRWxlbWVudHMsXG4gICAgICBDb250cm9sbGVyID0gQ29tcG9uZW50czIuQ29udHJvbGxlcjtcbiAgdmFyIHBsYWNlaG9sZGVyID0gRWxlbWVudHMuYXJyb3dzLFxuICAgICAgdHJhY2sgPSBFbGVtZW50cy50cmFjaztcbiAgdmFyIHdyYXBwZXIgPSBwbGFjZWhvbGRlcjtcbiAgdmFyIHByZXYgPSBFbGVtZW50cy5wcmV2O1xuICB2YXIgbmV4dCA9IEVsZW1lbnRzLm5leHQ7XG4gIHZhciBjcmVhdGVkO1xuICB2YXIgd3JhcHBlckNsYXNzZXM7XG4gIHZhciBhcnJvd3MgPSB7fTtcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBpbml0KCk7XG4gICAgb24oRVZFTlRfVVBEQVRFRCwgcmVtb3VudCk7XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdW50KCkge1xuICAgIGRlc3Ryb3koKTtcbiAgICBtb3VudCgpO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5pdCgpIHtcbiAgICB2YXIgZW5hYmxlZCA9IG9wdGlvbnMuYXJyb3dzO1xuXG4gICAgaWYgKGVuYWJsZWQgJiYgIShwcmV2ICYmIG5leHQpKSB7XG4gICAgICBjcmVhdGVBcnJvd3MoKTtcbiAgICB9XG5cbiAgICBpZiAocHJldiAmJiBuZXh0KSB7XG4gICAgICBhc3NpZ24oYXJyb3dzLCB7XG4gICAgICAgIHByZXY6IHByZXYsXG4gICAgICAgIG5leHQ6IG5leHRcbiAgICAgIH0pO1xuICAgICAgZGlzcGxheSh3cmFwcGVyLCBlbmFibGVkID8gXCJcIiA6IFwibm9uZVwiKTtcbiAgICAgIGFkZENsYXNzKHdyYXBwZXIsIHdyYXBwZXJDbGFzc2VzID0gQ0xBU1NfQVJST1dTICsgXCItLVwiICsgb3B0aW9ucy5kaXJlY3Rpb24pO1xuXG4gICAgICBpZiAoZW5hYmxlZCkge1xuICAgICAgICBsaXN0ZW4oKTtcbiAgICAgICAgdXBkYXRlKCk7XG4gICAgICAgIHNldEF0dHJpYnV0ZShbcHJldiwgbmV4dF0sIEFSSUFfQ09OVFJPTFMsIHRyYWNrLmlkKTtcbiAgICAgICAgZW1pdChFVkVOVF9BUlJPV1NfTU9VTlRFRCwgcHJldiwgbmV4dCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBldmVudC5kZXN0cm95KCk7XG4gICAgcmVtb3ZlQ2xhc3Mod3JhcHBlciwgd3JhcHBlckNsYXNzZXMpO1xuXG4gICAgaWYgKGNyZWF0ZWQpIHtcbiAgICAgIHJlbW92ZShwbGFjZWhvbGRlciA/IFtwcmV2LCBuZXh0XSA6IHdyYXBwZXIpO1xuICAgICAgcHJldiA9IG5leHQgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZW1vdmVBdHRyaWJ1dGUoW3ByZXYsIG5leHRdLCBBTExfQVRUUklCVVRFUyk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbGlzdGVuKCkge1xuICAgIG9uKFtFVkVOVF9NT1VOVEVELCBFVkVOVF9NT1ZFRCwgRVZFTlRfUkVGUkVTSCwgRVZFTlRfU0NST0xMRUQsIEVWRU5UX0VORF9JTkRFWF9DSEFOR0VEXSwgdXBkYXRlKTtcbiAgICBiaW5kKG5leHQsIFwiY2xpY2tcIiwgYXBwbHkoZ28sIFwiPlwiKSk7XG4gICAgYmluZChwcmV2LCBcImNsaWNrXCIsIGFwcGx5KGdvLCBcIjxcIikpO1xuICB9XG5cbiAgZnVuY3Rpb24gZ28oY29udHJvbCkge1xuICAgIENvbnRyb2xsZXIuZ28oY29udHJvbCwgdHJ1ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVBcnJvd3MoKSB7XG4gICAgd3JhcHBlciA9IHBsYWNlaG9sZGVyIHx8IGNyZWF0ZShcImRpdlwiLCBjbGFzc2VzLmFycm93cyk7XG4gICAgcHJldiA9IGNyZWF0ZUFycm93KHRydWUpO1xuICAgIG5leHQgPSBjcmVhdGVBcnJvdyhmYWxzZSk7XG4gICAgY3JlYXRlZCA9IHRydWU7XG4gICAgYXBwZW5kKHdyYXBwZXIsIFtwcmV2LCBuZXh0XSk7XG4gICAgIXBsYWNlaG9sZGVyICYmIGJlZm9yZSh3cmFwcGVyLCB0cmFjayk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVBcnJvdyhwcmV2Mikge1xuICAgIHZhciBhcnJvdyA9IFwiPGJ1dHRvbiBjbGFzcz1cXFwiXCIgKyBjbGFzc2VzLmFycm93ICsgXCIgXCIgKyAocHJldjIgPyBjbGFzc2VzLnByZXYgOiBjbGFzc2VzLm5leHQpICsgXCJcXFwiIHR5cGU9XFxcImJ1dHRvblxcXCI+PHN2ZyB4bWxucz1cXFwiXCIgKyBYTUxfTkFNRV9TUEFDRSArIFwiXFxcIiB2aWV3Qm94PVxcXCIwIDAgXCIgKyBTSVpFICsgXCIgXCIgKyBTSVpFICsgXCJcXFwiIHdpZHRoPVxcXCJcIiArIFNJWkUgKyBcIlxcXCIgaGVpZ2h0PVxcXCJcIiArIFNJWkUgKyBcIlxcXCIgZm9jdXNhYmxlPVxcXCJmYWxzZVxcXCI+PHBhdGggZD1cXFwiXCIgKyAob3B0aW9ucy5hcnJvd1BhdGggfHwgUEFUSCkgKyBcIlxcXCIgLz5cIjtcbiAgICByZXR1cm4gcGFyc2VIdG1sKGFycm93KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBpZiAocHJldiAmJiBuZXh0KSB7XG4gICAgICB2YXIgaW5kZXggPSBTcGxpZGUyLmluZGV4O1xuICAgICAgdmFyIHByZXZJbmRleCA9IENvbnRyb2xsZXIuZ2V0UHJldigpO1xuICAgICAgdmFyIG5leHRJbmRleCA9IENvbnRyb2xsZXIuZ2V0TmV4dCgpO1xuICAgICAgdmFyIHByZXZMYWJlbCA9IHByZXZJbmRleCA+IC0xICYmIGluZGV4IDwgcHJldkluZGV4ID8gaTE4bi5sYXN0IDogaTE4bi5wcmV2O1xuICAgICAgdmFyIG5leHRMYWJlbCA9IG5leHRJbmRleCA+IC0xICYmIGluZGV4ID4gbmV4dEluZGV4ID8gaTE4bi5maXJzdCA6IGkxOG4ubmV4dDtcbiAgICAgIHByZXYuZGlzYWJsZWQgPSBwcmV2SW5kZXggPCAwO1xuICAgICAgbmV4dC5kaXNhYmxlZCA9IG5leHRJbmRleCA8IDA7XG4gICAgICBzZXRBdHRyaWJ1dGUocHJldiwgQVJJQV9MQUJFTCwgcHJldkxhYmVsKTtcbiAgICAgIHNldEF0dHJpYnV0ZShuZXh0LCBBUklBX0xBQkVMLCBuZXh0TGFiZWwpO1xuICAgICAgZW1pdChFVkVOVF9BUlJPV1NfVVBEQVRFRCwgcHJldiwgbmV4dCwgcHJldkluZGV4LCBuZXh0SW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYXJyb3dzOiBhcnJvd3MsXG4gICAgbW91bnQ6IG1vdW50LFxuICAgIGRlc3Ryb3k6IGRlc3Ryb3ksXG4gICAgdXBkYXRlOiB1cGRhdGVcbiAgfTtcbn1cblxudmFyIElOVEVSVkFMX0RBVEFfQVRUUklCVVRFID0gREFUQV9BVFRSSUJVVEUgKyBcIi1pbnRlcnZhbFwiO1xuXG5mdW5jdGlvbiBBdXRvcGxheShTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgX0V2ZW50SW50ZXJmYWNlNiA9IEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpLFxuICAgICAgb24gPSBfRXZlbnRJbnRlcmZhY2U2Lm9uLFxuICAgICAgYmluZCA9IF9FdmVudEludGVyZmFjZTYuYmluZCxcbiAgICAgIGVtaXQgPSBfRXZlbnRJbnRlcmZhY2U2LmVtaXQ7XG5cbiAgdmFyIGludGVydmFsID0gUmVxdWVzdEludGVydmFsKG9wdGlvbnMuaW50ZXJ2YWwsIFNwbGlkZTIuZ28uYmluZChTcGxpZGUyLCBcIj5cIiksIG9uQW5pbWF0aW9uRnJhbWUpO1xuICB2YXIgaXNQYXVzZWQgPSBpbnRlcnZhbC5pc1BhdXNlZDtcbiAgdmFyIEVsZW1lbnRzID0gQ29tcG9uZW50czIuRWxlbWVudHMsXG4gICAgICBfQ29tcG9uZW50czIkRWxlbWVudHM0ID0gQ29tcG9uZW50czIuRWxlbWVudHMsXG4gICAgICByb290ID0gX0NvbXBvbmVudHMyJEVsZW1lbnRzNC5yb290LFxuICAgICAgdG9nZ2xlID0gX0NvbXBvbmVudHMyJEVsZW1lbnRzNC50b2dnbGU7XG4gIHZhciBhdXRvcGxheSA9IG9wdGlvbnMuYXV0b3BsYXk7XG4gIHZhciBob3ZlcmVkO1xuICB2YXIgZm9jdXNlZDtcbiAgdmFyIHN0b3BwZWQgPSBhdXRvcGxheSA9PT0gXCJwYXVzZVwiO1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIGlmIChhdXRvcGxheSkge1xuICAgICAgbGlzdGVuKCk7XG4gICAgICB0b2dnbGUgJiYgc2V0QXR0cmlidXRlKHRvZ2dsZSwgQVJJQV9DT05UUk9MUywgRWxlbWVudHMudHJhY2suaWQpO1xuICAgICAgc3RvcHBlZCB8fCBwbGF5KCk7XG4gICAgICB1cGRhdGUoKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBsaXN0ZW4oKSB7XG4gICAgaWYgKG9wdGlvbnMucGF1c2VPbkhvdmVyKSB7XG4gICAgICBiaW5kKHJvb3QsIFwibW91c2VlbnRlciBtb3VzZWxlYXZlXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGhvdmVyZWQgPSBlLnR5cGUgPT09IFwibW91c2VlbnRlclwiO1xuICAgICAgICBhdXRvVG9nZ2xlKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5wYXVzZU9uRm9jdXMpIHtcbiAgICAgIGJpbmQocm9vdCwgXCJmb2N1c2luIGZvY3Vzb3V0XCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGZvY3VzZWQgPSBlLnR5cGUgPT09IFwiZm9jdXNpblwiO1xuICAgICAgICBhdXRvVG9nZ2xlKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodG9nZ2xlKSB7XG4gICAgICBiaW5kKHRvZ2dsZSwgXCJjbGlja1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHN0b3BwZWQgPyBwbGF5KCkgOiBwYXVzZSh0cnVlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uKFtFVkVOVF9NT1ZFLCBFVkVOVF9TQ1JPTEwsIEVWRU5UX1JFRlJFU0hdLCBpbnRlcnZhbC5yZXdpbmQpO1xuICAgIG9uKEVWRU5UX01PVkUsIG9uTW92ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBwbGF5KCkge1xuICAgIGlmIChpc1BhdXNlZCgpICYmIENvbXBvbmVudHMyLlNsaWRlcy5pc0Vub3VnaCgpKSB7XG4gICAgICBpbnRlcnZhbC5zdGFydCghb3B0aW9ucy5yZXNldFByb2dyZXNzKTtcbiAgICAgIGZvY3VzZWQgPSBob3ZlcmVkID0gc3RvcHBlZCA9IGZhbHNlO1xuICAgICAgdXBkYXRlKCk7XG4gICAgICBlbWl0KEVWRU5UX0FVVE9QTEFZX1BMQVkpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBhdXNlKHN0b3ApIHtcbiAgICBpZiAoc3RvcCA9PT0gdm9pZCAwKSB7XG4gICAgICBzdG9wID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBzdG9wcGVkID0gISFzdG9wO1xuICAgIHVwZGF0ZSgpO1xuXG4gICAgaWYgKCFpc1BhdXNlZCgpKSB7XG4gICAgICBpbnRlcnZhbC5wYXVzZSgpO1xuICAgICAgZW1pdChFVkVOVF9BVVRPUExBWV9QQVVTRSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gYXV0b1RvZ2dsZSgpIHtcbiAgICBpZiAoIXN0b3BwZWQpIHtcbiAgICAgIGhvdmVyZWQgfHwgZm9jdXNlZCA/IHBhdXNlKGZhbHNlKSA6IHBsYXkoKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgaWYgKHRvZ2dsZSkge1xuICAgICAgdG9nZ2xlQ2xhc3ModG9nZ2xlLCBDTEFTU19BQ1RJVkUsICFzdG9wcGVkKTtcbiAgICAgIHNldEF0dHJpYnV0ZSh0b2dnbGUsIEFSSUFfTEFCRUwsIG9wdGlvbnMuaTE4bltzdG9wcGVkID8gXCJwbGF5XCIgOiBcInBhdXNlXCJdKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBvbkFuaW1hdGlvbkZyYW1lKHJhdGUpIHtcbiAgICB2YXIgYmFyID0gRWxlbWVudHMuYmFyO1xuICAgIGJhciAmJiBzdHlsZShiYXIsIFwid2lkdGhcIiwgcmF0ZSAqIDEwMCArIFwiJVwiKTtcbiAgICBlbWl0KEVWRU5UX0FVVE9QTEFZX1BMQVlJTkcsIHJhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25Nb3ZlKGluZGV4KSB7XG4gICAgdmFyIFNsaWRlID0gQ29tcG9uZW50czIuU2xpZGVzLmdldEF0KGluZGV4KTtcbiAgICBpbnRlcnZhbC5zZXQoU2xpZGUgJiYgK2dldEF0dHJpYnV0ZShTbGlkZS5zbGlkZSwgSU5URVJWQUxfREFUQV9BVFRSSUJVVEUpIHx8IG9wdGlvbnMuaW50ZXJ2YWwpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtb3VudDogbW91bnQsXG4gICAgZGVzdHJveTogaW50ZXJ2YWwuY2FuY2VsLFxuICAgIHBsYXk6IHBsYXksXG4gICAgcGF1c2U6IHBhdXNlLFxuICAgIGlzUGF1c2VkOiBpc1BhdXNlZFxuICB9O1xufVxuXG5mdW5jdGlvbiBDb3ZlcihTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgX0V2ZW50SW50ZXJmYWNlNyA9IEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpLFxuICAgICAgb24gPSBfRXZlbnRJbnRlcmZhY2U3Lm9uO1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIGlmIChvcHRpb25zLmNvdmVyKSB7XG4gICAgICBvbihFVkVOVF9MQVpZTE9BRF9MT0FERUQsIGFwcGx5KHRvZ2dsZSwgdHJ1ZSkpO1xuICAgICAgb24oW0VWRU5UX01PVU5URUQsIEVWRU5UX1VQREFURUQsIEVWRU5UX1JFRlJFU0hdLCBhcHBseShjb3ZlciwgdHJ1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNvdmVyKGNvdmVyMikge1xuICAgIENvbXBvbmVudHMyLlNsaWRlcy5mb3JFYWNoKGZ1bmN0aW9uIChTbGlkZSkge1xuICAgICAgdmFyIGltZyA9IGNoaWxkKFNsaWRlLmNvbnRhaW5lciB8fCBTbGlkZS5zbGlkZSwgXCJpbWdcIik7XG5cbiAgICAgIGlmIChpbWcgJiYgaW1nLnNyYykge1xuICAgICAgICB0b2dnbGUoY292ZXIyLCBpbWcsIFNsaWRlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRvZ2dsZShjb3ZlcjIsIGltZywgU2xpZGUpIHtcbiAgICBTbGlkZS5zdHlsZShcImJhY2tncm91bmRcIiwgY292ZXIyID8gXCJjZW50ZXIvY292ZXIgbm8tcmVwZWF0IHVybChcXFwiXCIgKyBpbWcuc3JjICsgXCJcXFwiKVwiIDogXCJcIiwgdHJ1ZSk7XG4gICAgZGlzcGxheShpbWcsIGNvdmVyMiA/IFwibm9uZVwiIDogXCJcIik7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1vdW50OiBtb3VudCxcbiAgICBkZXN0cm95OiBhcHBseShjb3ZlciwgZmFsc2UpXG4gIH07XG59XG5cbnZhciBCT1VOQ0VfRElGRl9USFJFU0hPTEQgPSAxMDtcbnZhciBCT1VOQ0VfRFVSQVRJT04gPSA2MDA7XG52YXIgRlJJQ1RJT05fRkFDVE9SID0gMC42O1xudmFyIEJBU0VfVkVMT0NJVFkgPSAxLjU7XG52YXIgTUlOX0RVUkFUSU9OID0gODAwO1xuXG5mdW5jdGlvbiBTY3JvbGwoU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgdmFyIF9FdmVudEludGVyZmFjZTggPSBFdmVudEludGVyZmFjZShTcGxpZGUyKSxcbiAgICAgIG9uID0gX0V2ZW50SW50ZXJmYWNlOC5vbixcbiAgICAgIGVtaXQgPSBfRXZlbnRJbnRlcmZhY2U4LmVtaXQ7XG5cbiAgdmFyIHNldCA9IFNwbGlkZTIuc3RhdGUuc2V0O1xuICB2YXIgTW92ZSA9IENvbXBvbmVudHMyLk1vdmU7XG4gIHZhciBnZXRQb3NpdGlvbiA9IE1vdmUuZ2V0UG9zaXRpb24sXG4gICAgICBnZXRMaW1pdCA9IE1vdmUuZ2V0TGltaXQsXG4gICAgICBleGNlZWRlZExpbWl0ID0gTW92ZS5leGNlZWRlZExpbWl0LFxuICAgICAgdHJhbnNsYXRlID0gTW92ZS50cmFuc2xhdGU7XG4gIHZhciBpc1NsaWRlID0gU3BsaWRlMi5pcyhTTElERSk7XG4gIHZhciBpbnRlcnZhbDtcbiAgdmFyIGNhbGxiYWNrO1xuICB2YXIgZnJpY3Rpb24gPSAxO1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIG9uKEVWRU5UX01PVkUsIGNsZWFyKTtcbiAgICBvbihbRVZFTlRfVVBEQVRFRCwgRVZFTlRfUkVGUkVTSF0sIGNhbmNlbCk7XG4gIH1cblxuICBmdW5jdGlvbiBzY3JvbGwoZGVzdGluYXRpb24sIGR1cmF0aW9uLCBzbmFwLCBvblNjcm9sbGVkLCBub0NvbnN0cmFpbikge1xuICAgIHZhciBmcm9tID0gZ2V0UG9zaXRpb24oKTtcbiAgICBjbGVhcigpO1xuXG4gICAgaWYgKHNuYXAgJiYgKCFpc1NsaWRlIHx8ICFleGNlZWRlZExpbWl0KCkpKSB7XG4gICAgICB2YXIgc2l6ZSA9IENvbXBvbmVudHMyLkxheW91dC5zbGlkZXJTaXplKCk7XG4gICAgICB2YXIgb2Zmc2V0ID0gc2lnbihkZXN0aW5hdGlvbikgKiBzaXplICogZmxvb3IoYWJzKGRlc3RpbmF0aW9uKSAvIHNpemUpIHx8IDA7XG4gICAgICBkZXN0aW5hdGlvbiA9IE1vdmUudG9Qb3NpdGlvbihDb21wb25lbnRzMi5Db250cm9sbGVyLnRvRGVzdChkZXN0aW5hdGlvbiAlIHNpemUpKSArIG9mZnNldDtcbiAgICB9XG5cbiAgICB2YXIgbm9EaXN0YW5jZSA9IGFwcHJveGltYXRlbHlFcXVhbChmcm9tLCBkZXN0aW5hdGlvbiwgMSk7XG4gICAgZnJpY3Rpb24gPSAxO1xuICAgIGR1cmF0aW9uID0gbm9EaXN0YW5jZSA/IDAgOiBkdXJhdGlvbiB8fCBtYXgoYWJzKGRlc3RpbmF0aW9uIC0gZnJvbSkgLyBCQVNFX1ZFTE9DSVRZLCBNSU5fRFVSQVRJT04pO1xuICAgIGNhbGxiYWNrID0gb25TY3JvbGxlZDtcbiAgICBpbnRlcnZhbCA9IFJlcXVlc3RJbnRlcnZhbChkdXJhdGlvbiwgb25FbmQsIGFwcGx5KHVwZGF0ZSwgZnJvbSwgZGVzdGluYXRpb24sIG5vQ29uc3RyYWluKSwgMSk7XG4gICAgc2V0KFNDUk9MTElORyk7XG4gICAgZW1pdChFVkVOVF9TQ1JPTEwpO1xuICAgIGludGVydmFsLnN0YXJ0KCk7XG4gIH1cblxuICBmdW5jdGlvbiBvbkVuZCgpIHtcbiAgICBzZXQoSURMRSk7XG4gICAgY2FsbGJhY2sgJiYgY2FsbGJhY2soKTtcbiAgICBlbWl0KEVWRU5UX1NDUk9MTEVEKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZShmcm9tLCB0bywgbm9Db25zdHJhaW4sIHJhdGUpIHtcbiAgICB2YXIgcG9zaXRpb24gPSBnZXRQb3NpdGlvbigpO1xuICAgIHZhciB0YXJnZXQgPSBmcm9tICsgKHRvIC0gZnJvbSkgKiBlYXNpbmcocmF0ZSk7XG4gICAgdmFyIGRpZmYgPSAodGFyZ2V0IC0gcG9zaXRpb24pICogZnJpY3Rpb247XG4gICAgdHJhbnNsYXRlKHBvc2l0aW9uICsgZGlmZik7XG5cbiAgICBpZiAoaXNTbGlkZSAmJiAhbm9Db25zdHJhaW4gJiYgZXhjZWVkZWRMaW1pdCgpKSB7XG4gICAgICBmcmljdGlvbiAqPSBGUklDVElPTl9GQUNUT1I7XG5cbiAgICAgIGlmIChhYnMoZGlmZikgPCBCT1VOQ0VfRElGRl9USFJFU0hPTEQpIHtcbiAgICAgICAgc2Nyb2xsKGdldExpbWl0KGV4Y2VlZGVkTGltaXQodHJ1ZSkpLCBCT1VOQ0VfRFVSQVRJT04sIGZhbHNlLCBjYWxsYmFjaywgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY2xlYXIoKSB7XG4gICAgaWYgKGludGVydmFsKSB7XG4gICAgICBpbnRlcnZhbC5jYW5jZWwoKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgaWYgKGludGVydmFsICYmICFpbnRlcnZhbC5pc1BhdXNlZCgpKSB7XG4gICAgICBjbGVhcigpO1xuICAgICAgb25FbmQoKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBlYXNpbmcodCkge1xuICAgIHZhciBlYXNpbmdGdW5jID0gb3B0aW9ucy5lYXNpbmdGdW5jO1xuICAgIHJldHVybiBlYXNpbmdGdW5jID8gZWFzaW5nRnVuYyh0KSA6IDEgLSBNYXRoLnBvdygxIC0gdCwgNCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1vdW50OiBtb3VudCxcbiAgICBkZXN0cm95OiBjbGVhcixcbiAgICBzY3JvbGw6IHNjcm9sbCxcbiAgICBjYW5jZWw6IGNhbmNlbFxuICB9O1xufVxuXG52YXIgU0NST0xMX0xJU1RFTkVSX09QVElPTlMgPSB7XG4gIHBhc3NpdmU6IGZhbHNlLFxuICBjYXB0dXJlOiB0cnVlXG59O1xuXG5mdW5jdGlvbiBEcmFnKFNwbGlkZTIsIENvbXBvbmVudHMyLCBvcHRpb25zKSB7XG4gIHZhciBfRXZlbnRJbnRlcmZhY2U5ID0gRXZlbnRJbnRlcmZhY2UoU3BsaWRlMiksXG4gICAgICBvbiA9IF9FdmVudEludGVyZmFjZTkub24sXG4gICAgICBlbWl0ID0gX0V2ZW50SW50ZXJmYWNlOS5lbWl0LFxuICAgICAgYmluZCA9IF9FdmVudEludGVyZmFjZTkuYmluZCxcbiAgICAgIHVuYmluZCA9IF9FdmVudEludGVyZmFjZTkudW5iaW5kO1xuXG4gIHZhciBzdGF0ZSA9IFNwbGlkZTIuc3RhdGU7XG4gIHZhciBNb3ZlID0gQ29tcG9uZW50czIuTW92ZSxcbiAgICAgIFNjcm9sbCA9IENvbXBvbmVudHMyLlNjcm9sbCxcbiAgICAgIENvbnRyb2xsZXIgPSBDb21wb25lbnRzMi5Db250cm9sbGVyLFxuICAgICAgdHJhY2sgPSBDb21wb25lbnRzMi5FbGVtZW50cy50cmFjayxcbiAgICAgIHJlZHVjZSA9IENvbXBvbmVudHMyLk1lZGlhLnJlZHVjZTtcbiAgdmFyIF9Db21wb25lbnRzMiREaXJlY3RpbzIgPSBDb21wb25lbnRzMi5EaXJlY3Rpb24sXG4gICAgICByZXNvbHZlID0gX0NvbXBvbmVudHMyJERpcmVjdGlvMi5yZXNvbHZlLFxuICAgICAgb3JpZW50ID0gX0NvbXBvbmVudHMyJERpcmVjdGlvMi5vcmllbnQ7XG4gIHZhciBnZXRQb3NpdGlvbiA9IE1vdmUuZ2V0UG9zaXRpb24sXG4gICAgICBleGNlZWRlZExpbWl0ID0gTW92ZS5leGNlZWRlZExpbWl0O1xuICB2YXIgYmFzZVBvc2l0aW9uO1xuICB2YXIgYmFzZUV2ZW50O1xuICB2YXIgcHJldkJhc2VFdmVudDtcbiAgdmFyIGlzRnJlZTtcbiAgdmFyIGRyYWdnaW5nO1xuICB2YXIgZXhjZWVkZWQgPSBmYWxzZTtcbiAgdmFyIGNsaWNrUHJldmVudGVkO1xuICB2YXIgZGlzYWJsZWQ7XG4gIHZhciB0YXJnZXQ7XG5cbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgYmluZCh0cmFjaywgUE9JTlRFUl9NT1ZFX0VWRU5UUywgbm9vcCwgU0NST0xMX0xJU1RFTkVSX09QVElPTlMpO1xuICAgIGJpbmQodHJhY2ssIFBPSU5URVJfVVBfRVZFTlRTLCBub29wLCBTQ1JPTExfTElTVEVORVJfT1BUSU9OUyk7XG4gICAgYmluZCh0cmFjaywgUE9JTlRFUl9ET1dOX0VWRU5UUywgb25Qb2ludGVyRG93biwgU0NST0xMX0xJU1RFTkVSX09QVElPTlMpO1xuICAgIGJpbmQodHJhY2ssIFwiY2xpY2tcIiwgb25DbGljaywge1xuICAgICAgY2FwdHVyZTogdHJ1ZVxuICAgIH0pO1xuICAgIGJpbmQodHJhY2ssIFwiZHJhZ3N0YXJ0XCIsIHByZXZlbnQpO1xuICAgIG9uKFtFVkVOVF9NT1VOVEVELCBFVkVOVF9VUERBVEVEXSwgaW5pdCk7XG4gIH1cblxuICBmdW5jdGlvbiBpbml0KCkge1xuICAgIHZhciBkcmFnID0gb3B0aW9ucy5kcmFnO1xuICAgIGRpc2FibGUoIWRyYWcpO1xuICAgIGlzRnJlZSA9IGRyYWcgPT09IFwiZnJlZVwiO1xuICB9XG5cbiAgZnVuY3Rpb24gb25Qb2ludGVyRG93bihlKSB7XG4gICAgY2xpY2tQcmV2ZW50ZWQgPSBmYWxzZTtcblxuICAgIGlmICghZGlzYWJsZWQpIHtcbiAgICAgIHZhciBpc1RvdWNoID0gaXNUb3VjaEV2ZW50KGUpO1xuXG4gICAgICBpZiAoaXNEcmFnZ2FibGUoZS50YXJnZXQpICYmIChpc1RvdWNoIHx8ICFlLmJ1dHRvbikpIHtcbiAgICAgICAgaWYgKCFDb250cm9sbGVyLmlzQnVzeSgpKSB7XG4gICAgICAgICAgdGFyZ2V0ID0gaXNUb3VjaCA/IHRyYWNrIDogd2luZG93O1xuICAgICAgICAgIGRyYWdnaW5nID0gc3RhdGUuaXMoW01PVklORywgU0NST0xMSU5HXSk7XG4gICAgICAgICAgcHJldkJhc2VFdmVudCA9IG51bGw7XG4gICAgICAgICAgYmluZCh0YXJnZXQsIFBPSU5URVJfTU9WRV9FVkVOVFMsIG9uUG9pbnRlck1vdmUsIFNDUk9MTF9MSVNURU5FUl9PUFRJT05TKTtcbiAgICAgICAgICBiaW5kKHRhcmdldCwgUE9JTlRFUl9VUF9FVkVOVFMsIG9uUG9pbnRlclVwLCBTQ1JPTExfTElTVEVORVJfT1BUSU9OUyk7XG4gICAgICAgICAgTW92ZS5jYW5jZWwoKTtcbiAgICAgICAgICBTY3JvbGwuY2FuY2VsKCk7XG4gICAgICAgICAgc2F2ZShlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmV2ZW50KGUsIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb25Qb2ludGVyTW92ZShlKSB7XG4gICAgaWYgKCFzdGF0ZS5pcyhEUkFHR0lORykpIHtcbiAgICAgIHN0YXRlLnNldChEUkFHR0lORyk7XG4gICAgICBlbWl0KEVWRU5UX0RSQUcpO1xuICAgIH1cblxuICAgIGlmIChlLmNhbmNlbGFibGUpIHtcbiAgICAgIGlmIChkcmFnZ2luZykge1xuICAgICAgICBNb3ZlLnRyYW5zbGF0ZShiYXNlUG9zaXRpb24gKyBjb25zdHJhaW4oZGlmZkNvb3JkKGUpKSk7XG4gICAgICAgIHZhciBleHBpcmVkID0gZGlmZlRpbWUoZSkgPiBMT0dfSU5URVJWQUw7XG4gICAgICAgIHZhciBoYXNFeGNlZWRlZCA9IGV4Y2VlZGVkICE9PSAoZXhjZWVkZWQgPSBleGNlZWRlZExpbWl0KCkpO1xuXG4gICAgICAgIGlmIChleHBpcmVkIHx8IGhhc0V4Y2VlZGVkKSB7XG4gICAgICAgICAgc2F2ZShlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNsaWNrUHJldmVudGVkID0gdHJ1ZTtcbiAgICAgICAgZW1pdChFVkVOVF9EUkFHR0lORyk7XG4gICAgICAgIHByZXZlbnQoZSk7XG4gICAgICB9IGVsc2UgaWYgKGlzU2xpZGVyRGlyZWN0aW9uKGUpKSB7XG4gICAgICAgIGRyYWdnaW5nID0gc2hvdWxkU3RhcnQoZSk7XG4gICAgICAgIHByZXZlbnQoZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb25Qb2ludGVyVXAoZSkge1xuICAgIGlmIChzdGF0ZS5pcyhEUkFHR0lORykpIHtcbiAgICAgIHN0YXRlLnNldChJRExFKTtcbiAgICAgIGVtaXQoRVZFTlRfRFJBR0dFRCk7XG4gICAgfVxuXG4gICAgaWYgKGRyYWdnaW5nKSB7XG4gICAgICBtb3ZlKGUpO1xuICAgICAgcHJldmVudChlKTtcbiAgICB9XG5cbiAgICB1bmJpbmQodGFyZ2V0LCBQT0lOVEVSX01PVkVfRVZFTlRTLCBvblBvaW50ZXJNb3ZlKTtcbiAgICB1bmJpbmQodGFyZ2V0LCBQT0lOVEVSX1VQX0VWRU5UUywgb25Qb2ludGVyVXApO1xuICAgIGRyYWdnaW5nID0gZmFsc2U7XG4gIH1cblxuICBmdW5jdGlvbiBvbkNsaWNrKGUpIHtcbiAgICBpZiAoIWRpc2FibGVkICYmIGNsaWNrUHJldmVudGVkKSB7XG4gICAgICBwcmV2ZW50KGUsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHNhdmUoZSkge1xuICAgIHByZXZCYXNlRXZlbnQgPSBiYXNlRXZlbnQ7XG4gICAgYmFzZUV2ZW50ID0gZTtcbiAgICBiYXNlUG9zaXRpb24gPSBnZXRQb3NpdGlvbigpO1xuICB9XG5cbiAgZnVuY3Rpb24gbW92ZShlKSB7XG4gICAgdmFyIHZlbG9jaXR5ID0gY29tcHV0ZVZlbG9jaXR5KGUpO1xuICAgIHZhciBkZXN0aW5hdGlvbiA9IGNvbXB1dGVEZXN0aW5hdGlvbih2ZWxvY2l0eSk7XG4gICAgdmFyIHJld2luZCA9IG9wdGlvbnMucmV3aW5kICYmIG9wdGlvbnMucmV3aW5kQnlEcmFnO1xuICAgIHJlZHVjZShmYWxzZSk7XG5cbiAgICBpZiAoaXNGcmVlKSB7XG4gICAgICBDb250cm9sbGVyLnNjcm9sbChkZXN0aW5hdGlvbiwgMCwgb3B0aW9ucy5zbmFwKTtcbiAgICB9IGVsc2UgaWYgKFNwbGlkZTIuaXMoRkFERSkpIHtcbiAgICAgIENvbnRyb2xsZXIuZ28ob3JpZW50KHNpZ24odmVsb2NpdHkpKSA8IDAgPyByZXdpbmQgPyBcIjxcIiA6IFwiLVwiIDogcmV3aW5kID8gXCI+XCIgOiBcIitcIik7XG4gICAgfSBlbHNlIGlmIChTcGxpZGUyLmlzKFNMSURFKSAmJiBleGNlZWRlZCAmJiByZXdpbmQpIHtcbiAgICAgIENvbnRyb2xsZXIuZ28oZXhjZWVkZWRMaW1pdCh0cnVlKSA/IFwiPlwiIDogXCI8XCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBDb250cm9sbGVyLmdvKENvbnRyb2xsZXIudG9EZXN0KGRlc3RpbmF0aW9uKSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgcmVkdWNlKHRydWUpO1xuICB9XG5cbiAgZnVuY3Rpb24gc2hvdWxkU3RhcnQoZSkge1xuICAgIHZhciB0aHJlc2hvbGRzID0gb3B0aW9ucy5kcmFnTWluVGhyZXNob2xkO1xuICAgIHZhciBpc09iaiA9IGlzT2JqZWN0KHRocmVzaG9sZHMpO1xuICAgIHZhciBtb3VzZSA9IGlzT2JqICYmIHRocmVzaG9sZHMubW91c2UgfHwgMDtcbiAgICB2YXIgdG91Y2ggPSAoaXNPYmogPyB0aHJlc2hvbGRzLnRvdWNoIDogK3RocmVzaG9sZHMpIHx8IDEwO1xuICAgIHJldHVybiBhYnMoZGlmZkNvb3JkKGUpKSA+IChpc1RvdWNoRXZlbnQoZSkgPyB0b3VjaCA6IG1vdXNlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzU2xpZGVyRGlyZWN0aW9uKGUpIHtcbiAgICByZXR1cm4gYWJzKGRpZmZDb29yZChlKSkgPiBhYnMoZGlmZkNvb3JkKGUsIHRydWUpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbXB1dGVWZWxvY2l0eShlKSB7XG4gICAgaWYgKFNwbGlkZTIuaXMoTE9PUCkgfHwgIWV4Y2VlZGVkKSB7XG4gICAgICB2YXIgdGltZSA9IGRpZmZUaW1lKGUpO1xuXG4gICAgICBpZiAodGltZSAmJiB0aW1lIDwgTE9HX0lOVEVSVkFMKSB7XG4gICAgICAgIHJldHVybiBkaWZmQ29vcmQoZSkgLyB0aW1lO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgZnVuY3Rpb24gY29tcHV0ZURlc3RpbmF0aW9uKHZlbG9jaXR5KSB7XG4gICAgcmV0dXJuIGdldFBvc2l0aW9uKCkgKyBzaWduKHZlbG9jaXR5KSAqIG1pbihhYnModmVsb2NpdHkpICogKG9wdGlvbnMuZmxpY2tQb3dlciB8fCA2MDApLCBpc0ZyZWUgPyBJbmZpbml0eSA6IENvbXBvbmVudHMyLkxheW91dC5saXN0U2l6ZSgpICogKG9wdGlvbnMuZmxpY2tNYXhQYWdlcyB8fCAxKSk7XG4gIH1cblxuICBmdW5jdGlvbiBkaWZmQ29vcmQoZSwgb3J0aG9nb25hbCkge1xuICAgIHJldHVybiBjb29yZE9mKGUsIG9ydGhvZ29uYWwpIC0gY29vcmRPZihnZXRCYXNlRXZlbnQoZSksIG9ydGhvZ29uYWwpO1xuICB9XG5cbiAgZnVuY3Rpb24gZGlmZlRpbWUoZSkge1xuICAgIHJldHVybiB0aW1lT2YoZSkgLSB0aW1lT2YoZ2V0QmFzZUV2ZW50KGUpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEJhc2VFdmVudChlKSB7XG4gICAgcmV0dXJuIGJhc2VFdmVudCA9PT0gZSAmJiBwcmV2QmFzZUV2ZW50IHx8IGJhc2VFdmVudDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvb3JkT2YoZSwgb3J0aG9nb25hbCkge1xuICAgIHJldHVybiAoaXNUb3VjaEV2ZW50KGUpID8gZS5jaGFuZ2VkVG91Y2hlc1swXSA6IGUpW1wicGFnZVwiICsgcmVzb2x2ZShvcnRob2dvbmFsID8gXCJZXCIgOiBcIlhcIildO1xuICB9XG5cbiAgZnVuY3Rpb24gY29uc3RyYWluKGRpZmYpIHtcbiAgICByZXR1cm4gZGlmZiAvIChleGNlZWRlZCAmJiBTcGxpZGUyLmlzKFNMSURFKSA/IEZSSUNUSU9OIDogMSk7XG4gIH1cblxuICBmdW5jdGlvbiBpc0RyYWdnYWJsZSh0YXJnZXQyKSB7XG4gICAgdmFyIG5vRHJhZyA9IG9wdGlvbnMubm9EcmFnO1xuICAgIHJldHVybiAhbWF0Y2hlcyh0YXJnZXQyLCBcIi5cIiArIENMQVNTX1BBR0lOQVRJT05fUEFHRSArIFwiLCAuXCIgKyBDTEFTU19BUlJPVykgJiYgKCFub0RyYWcgfHwgIW1hdGNoZXModGFyZ2V0Miwgbm9EcmFnKSk7XG4gIH1cblxuICBmdW5jdGlvbiBpc1RvdWNoRXZlbnQoZSkge1xuICAgIHJldHVybiB0eXBlb2YgVG91Y2hFdmVudCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBlIGluc3RhbmNlb2YgVG91Y2hFdmVudDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzRHJhZ2dpbmcoKSB7XG4gICAgcmV0dXJuIGRyYWdnaW5nO1xuICB9XG5cbiAgZnVuY3Rpb24gZGlzYWJsZSh2YWx1ZSkge1xuICAgIGRpc2FibGVkID0gdmFsdWU7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1vdW50OiBtb3VudCxcbiAgICBkaXNhYmxlOiBkaXNhYmxlLFxuICAgIGlzRHJhZ2dpbmc6IGlzRHJhZ2dpbmdcbiAgfTtcbn1cblxudmFyIE5PUk1BTElaQVRJT05fTUFQID0ge1xuICBTcGFjZWJhcjogXCIgXCIsXG4gIFJpZ2h0OiBBUlJPV19SSUdIVCxcbiAgTGVmdDogQVJST1dfTEVGVCxcbiAgVXA6IEFSUk9XX1VQLFxuICBEb3duOiBBUlJPV19ET1dOXG59O1xuXG5mdW5jdGlvbiBub3JtYWxpemVLZXkoa2V5KSB7XG4gIGtleSA9IGlzU3RyaW5nKGtleSkgPyBrZXkgOiBrZXkua2V5O1xuICByZXR1cm4gTk9STUFMSVpBVElPTl9NQVBba2V5XSB8fCBrZXk7XG59XG5cbnZhciBLRVlCT0FSRF9FVkVOVCA9IFwia2V5ZG93blwiO1xuXG5mdW5jdGlvbiBLZXlib2FyZChTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgX0V2ZW50SW50ZXJmYWNlMTAgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKSxcbiAgICAgIG9uID0gX0V2ZW50SW50ZXJmYWNlMTAub24sXG4gICAgICBiaW5kID0gX0V2ZW50SW50ZXJmYWNlMTAuYmluZCxcbiAgICAgIHVuYmluZCA9IF9FdmVudEludGVyZmFjZTEwLnVuYmluZDtcblxuICB2YXIgcm9vdCA9IFNwbGlkZTIucm9vdDtcbiAgdmFyIHJlc29sdmUgPSBDb21wb25lbnRzMi5EaXJlY3Rpb24ucmVzb2x2ZTtcbiAgdmFyIHRhcmdldDtcbiAgdmFyIGRpc2FibGVkO1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIGluaXQoKTtcbiAgICBvbihFVkVOVF9VUERBVEVELCBkZXN0cm95KTtcbiAgICBvbihFVkVOVF9VUERBVEVELCBpbml0KTtcbiAgICBvbihFVkVOVF9NT1ZFLCBvbk1vdmUpO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5pdCgpIHtcbiAgICB2YXIga2V5Ym9hcmQgPSBvcHRpb25zLmtleWJvYXJkO1xuXG4gICAgaWYgKGtleWJvYXJkKSB7XG4gICAgICB0YXJnZXQgPSBrZXlib2FyZCA9PT0gXCJnbG9iYWxcIiA/IHdpbmRvdyA6IHJvb3Q7XG4gICAgICBiaW5kKHRhcmdldCwgS0VZQk9BUkRfRVZFTlQsIG9uS2V5ZG93bik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICB1bmJpbmQodGFyZ2V0LCBLRVlCT0FSRF9FVkVOVCk7XG4gIH1cblxuICBmdW5jdGlvbiBkaXNhYmxlKHZhbHVlKSB7XG4gICAgZGlzYWJsZWQgPSB2YWx1ZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uTW92ZSgpIHtcbiAgICB2YXIgX2Rpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgZGlzYWJsZWQgPSB0cnVlO1xuICAgIG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgIGRpc2FibGVkID0gX2Rpc2FibGVkO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gb25LZXlkb3duKGUpIHtcbiAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICB2YXIga2V5ID0gbm9ybWFsaXplS2V5KGUpO1xuXG4gICAgICBpZiAoa2V5ID09PSByZXNvbHZlKEFSUk9XX0xFRlQpKSB7XG4gICAgICAgIFNwbGlkZTIuZ28oXCI8XCIpO1xuICAgICAgfSBlbHNlIGlmIChrZXkgPT09IHJlc29sdmUoQVJST1dfUklHSFQpKSB7XG4gICAgICAgIFNwbGlkZTIuZ28oXCI+XCIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91bnQ6IG1vdW50LFxuICAgIGRlc3Ryb3k6IGRlc3Ryb3ksXG4gICAgZGlzYWJsZTogZGlzYWJsZVxuICB9O1xufVxuXG52YXIgU1JDX0RBVEFfQVRUUklCVVRFID0gREFUQV9BVFRSSUJVVEUgKyBcIi1sYXp5XCI7XG52YXIgU1JDU0VUX0RBVEFfQVRUUklCVVRFID0gU1JDX0RBVEFfQVRUUklCVVRFICsgXCItc3Jjc2V0XCI7XG52YXIgSU1BR0VfU0VMRUNUT1IgPSBcIltcIiArIFNSQ19EQVRBX0FUVFJJQlVURSArIFwiXSwgW1wiICsgU1JDU0VUX0RBVEFfQVRUUklCVVRFICsgXCJdXCI7XG5cbmZ1bmN0aW9uIExhenlMb2FkKFNwbGlkZTIsIENvbXBvbmVudHMyLCBvcHRpb25zKSB7XG4gIHZhciBfRXZlbnRJbnRlcmZhY2UxMSA9IEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpLFxuICAgICAgb24gPSBfRXZlbnRJbnRlcmZhY2UxMS5vbixcbiAgICAgIG9mZiA9IF9FdmVudEludGVyZmFjZTExLm9mZixcbiAgICAgIGJpbmQgPSBfRXZlbnRJbnRlcmZhY2UxMS5iaW5kLFxuICAgICAgZW1pdCA9IF9FdmVudEludGVyZmFjZTExLmVtaXQ7XG5cbiAgdmFyIGlzU2VxdWVudGlhbCA9IG9wdGlvbnMubGF6eUxvYWQgPT09IFwic2VxdWVudGlhbFwiO1xuICB2YXIgZXZlbnRzID0gW0VWRU5UX01PVkVELCBFVkVOVF9TQ1JPTExFRF07XG4gIHZhciBlbnRyaWVzID0gW107XG5cbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgaWYgKG9wdGlvbnMubGF6eUxvYWQpIHtcbiAgICAgIGluaXQoKTtcbiAgICAgIG9uKEVWRU5UX1JFRlJFU0gsIGluaXQpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgZW1wdHkoZW50cmllcyk7XG4gICAgcmVnaXN0ZXIoKTtcblxuICAgIGlmIChpc1NlcXVlbnRpYWwpIHtcbiAgICAgIGxvYWROZXh0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9mZihldmVudHMpO1xuICAgICAgb24oZXZlbnRzLCBjaGVjayk7XG4gICAgICBjaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlZ2lzdGVyKCkge1xuICAgIENvbXBvbmVudHMyLlNsaWRlcy5mb3JFYWNoKGZ1bmN0aW9uIChTbGlkZSkge1xuICAgICAgcXVlcnlBbGwoU2xpZGUuc2xpZGUsIElNQUdFX1NFTEVDVE9SKS5mb3JFYWNoKGZ1bmN0aW9uIChpbWcpIHtcbiAgICAgICAgdmFyIHNyYyA9IGdldEF0dHJpYnV0ZShpbWcsIFNSQ19EQVRBX0FUVFJJQlVURSk7XG4gICAgICAgIHZhciBzcmNzZXQgPSBnZXRBdHRyaWJ1dGUoaW1nLCBTUkNTRVRfREFUQV9BVFRSSUJVVEUpO1xuXG4gICAgICAgIGlmIChzcmMgIT09IGltZy5zcmMgfHwgc3Jjc2V0ICE9PSBpbWcuc3Jjc2V0KSB7XG4gICAgICAgICAgdmFyIGNsYXNzTmFtZSA9IG9wdGlvbnMuY2xhc3Nlcy5zcGlubmVyO1xuICAgICAgICAgIHZhciBwYXJlbnQgPSBpbWcucGFyZW50RWxlbWVudDtcbiAgICAgICAgICB2YXIgc3Bpbm5lciA9IGNoaWxkKHBhcmVudCwgXCIuXCIgKyBjbGFzc05hbWUpIHx8IGNyZWF0ZShcInNwYW5cIiwgY2xhc3NOYW1lLCBwYXJlbnQpO1xuICAgICAgICAgIGVudHJpZXMucHVzaChbaW1nLCBTbGlkZSwgc3Bpbm5lcl0pO1xuICAgICAgICAgIGltZy5zcmMgfHwgZGlzcGxheShpbWcsIFwibm9uZVwiKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBjaGVjaygpIHtcbiAgICBlbnRyaWVzID0gZW50cmllcy5maWx0ZXIoZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgIHZhciBkaXN0YW5jZSA9IG9wdGlvbnMucGVyUGFnZSAqICgob3B0aW9ucy5wcmVsb2FkUGFnZXMgfHwgMSkgKyAxKSAtIDE7XG4gICAgICByZXR1cm4gZGF0YVsxXS5pc1dpdGhpbihTcGxpZGUyLmluZGV4LCBkaXN0YW5jZSkgPyBsb2FkKGRhdGEpIDogdHJ1ZTtcbiAgICB9KTtcbiAgICBlbnRyaWVzLmxlbmd0aCB8fCBvZmYoZXZlbnRzKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxvYWQoZGF0YSkge1xuICAgIHZhciBpbWcgPSBkYXRhWzBdO1xuICAgIGFkZENsYXNzKGRhdGFbMV0uc2xpZGUsIENMQVNTX0xPQURJTkcpO1xuICAgIGJpbmQoaW1nLCBcImxvYWQgZXJyb3JcIiwgYXBwbHkob25Mb2FkLCBkYXRhKSk7XG4gICAgc2V0QXR0cmlidXRlKGltZywgXCJzcmNcIiwgZ2V0QXR0cmlidXRlKGltZywgU1JDX0RBVEFfQVRUUklCVVRFKSk7XG4gICAgc2V0QXR0cmlidXRlKGltZywgXCJzcmNzZXRcIiwgZ2V0QXR0cmlidXRlKGltZywgU1JDU0VUX0RBVEFfQVRUUklCVVRFKSk7XG4gICAgcmVtb3ZlQXR0cmlidXRlKGltZywgU1JDX0RBVEFfQVRUUklCVVRFKTtcbiAgICByZW1vdmVBdHRyaWJ1dGUoaW1nLCBTUkNTRVRfREFUQV9BVFRSSUJVVEUpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25Mb2FkKGRhdGEsIGUpIHtcbiAgICB2YXIgaW1nID0gZGF0YVswXSxcbiAgICAgICAgU2xpZGUgPSBkYXRhWzFdO1xuICAgIHJlbW92ZUNsYXNzKFNsaWRlLnNsaWRlLCBDTEFTU19MT0FESU5HKTtcblxuICAgIGlmIChlLnR5cGUgIT09IFwiZXJyb3JcIikge1xuICAgICAgcmVtb3ZlKGRhdGFbMl0pO1xuICAgICAgZGlzcGxheShpbWcsIFwiXCIpO1xuICAgICAgZW1pdChFVkVOVF9MQVpZTE9BRF9MT0FERUQsIGltZywgU2xpZGUpO1xuICAgICAgZW1pdChFVkVOVF9SRVNJWkUpO1xuICAgIH1cblxuICAgIGlzU2VxdWVudGlhbCAmJiBsb2FkTmV4dCgpO1xuICB9XG5cbiAgZnVuY3Rpb24gbG9hZE5leHQoKSB7XG4gICAgZW50cmllcy5sZW5ndGggJiYgbG9hZChlbnRyaWVzLnNoaWZ0KCkpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtb3VudDogbW91bnQsXG4gICAgZGVzdHJveTogYXBwbHkoZW1wdHksIGVudHJpZXMpLFxuICAgIGNoZWNrOiBjaGVja1xuICB9O1xufVxuXG5mdW5jdGlvbiBQYWdpbmF0aW9uKFNwbGlkZTIsIENvbXBvbmVudHMyLCBvcHRpb25zKSB7XG4gIHZhciBldmVudCA9IEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpO1xuICB2YXIgb24gPSBldmVudC5vbixcbiAgICAgIGVtaXQgPSBldmVudC5lbWl0LFxuICAgICAgYmluZCA9IGV2ZW50LmJpbmQ7XG4gIHZhciBTbGlkZXMgPSBDb21wb25lbnRzMi5TbGlkZXMsXG4gICAgICBFbGVtZW50cyA9IENvbXBvbmVudHMyLkVsZW1lbnRzLFxuICAgICAgQ29udHJvbGxlciA9IENvbXBvbmVudHMyLkNvbnRyb2xsZXI7XG4gIHZhciBoYXNGb2N1cyA9IENvbnRyb2xsZXIuaGFzRm9jdXMsXG4gICAgICBnZXRJbmRleCA9IENvbnRyb2xsZXIuZ2V0SW5kZXgsXG4gICAgICBnbyA9IENvbnRyb2xsZXIuZ287XG4gIHZhciByZXNvbHZlID0gQ29tcG9uZW50czIuRGlyZWN0aW9uLnJlc29sdmU7XG4gIHZhciBwbGFjZWhvbGRlciA9IEVsZW1lbnRzLnBhZ2luYXRpb247XG4gIHZhciBpdGVtcyA9IFtdO1xuICB2YXIgbGlzdDtcbiAgdmFyIHBhZ2luYXRpb25DbGFzc2VzO1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIGRlc3Ryb3koKTtcbiAgICBvbihbRVZFTlRfVVBEQVRFRCwgRVZFTlRfUkVGUkVTSCwgRVZFTlRfRU5EX0lOREVYX0NIQU5HRURdLCBtb3VudCk7XG4gICAgdmFyIGVuYWJsZWQgPSBvcHRpb25zLnBhZ2luYXRpb247XG4gICAgcGxhY2Vob2xkZXIgJiYgZGlzcGxheShwbGFjZWhvbGRlciwgZW5hYmxlZCA/IFwiXCIgOiBcIm5vbmVcIik7XG5cbiAgICBpZiAoZW5hYmxlZCkge1xuICAgICAgb24oW0VWRU5UX01PVkUsIEVWRU5UX1NDUk9MTCwgRVZFTlRfU0NST0xMRURdLCB1cGRhdGUpO1xuICAgICAgY3JlYXRlUGFnaW5hdGlvbigpO1xuICAgICAgdXBkYXRlKCk7XG4gICAgICBlbWl0KEVWRU5UX1BBR0lOQVRJT05fTU9VTlRFRCwge1xuICAgICAgICBsaXN0OiBsaXN0LFxuICAgICAgICBpdGVtczogaXRlbXNcbiAgICAgIH0sIGdldEF0KFNwbGlkZTIuaW5kZXgpKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgIGlmIChsaXN0KSB7XG4gICAgICByZW1vdmUocGxhY2Vob2xkZXIgPyBzbGljZShsaXN0LmNoaWxkcmVuKSA6IGxpc3QpO1xuICAgICAgcmVtb3ZlQ2xhc3MobGlzdCwgcGFnaW5hdGlvbkNsYXNzZXMpO1xuICAgICAgZW1wdHkoaXRlbXMpO1xuICAgICAgbGlzdCA9IG51bGw7XG4gICAgfVxuXG4gICAgZXZlbnQuZGVzdHJveSgpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlUGFnaW5hdGlvbigpIHtcbiAgICB2YXIgbGVuZ3RoID0gU3BsaWRlMi5sZW5ndGg7XG4gICAgdmFyIGNsYXNzZXMgPSBvcHRpb25zLmNsYXNzZXMsXG4gICAgICAgIGkxOG4gPSBvcHRpb25zLmkxOG4sXG4gICAgICAgIHBlclBhZ2UgPSBvcHRpb25zLnBlclBhZ2U7XG4gICAgdmFyIG1heCA9IGhhc0ZvY3VzKCkgPyBDb250cm9sbGVyLmdldEVuZCgpICsgMSA6IGNlaWwobGVuZ3RoIC8gcGVyUGFnZSk7XG4gICAgbGlzdCA9IHBsYWNlaG9sZGVyIHx8IGNyZWF0ZShcInVsXCIsIGNsYXNzZXMucGFnaW5hdGlvbiwgRWxlbWVudHMudHJhY2sucGFyZW50RWxlbWVudCk7XG4gICAgYWRkQ2xhc3MobGlzdCwgcGFnaW5hdGlvbkNsYXNzZXMgPSBDTEFTU19QQUdJTkFUSU9OICsgXCItLVwiICsgZ2V0RGlyZWN0aW9uKCkpO1xuICAgIHNldEF0dHJpYnV0ZShsaXN0LCBST0xFLCBcInRhYmxpc3RcIik7XG4gICAgc2V0QXR0cmlidXRlKGxpc3QsIEFSSUFfTEFCRUwsIGkxOG4uc2VsZWN0KTtcbiAgICBzZXRBdHRyaWJ1dGUobGlzdCwgQVJJQV9PUklFTlRBVElPTiwgZ2V0RGlyZWN0aW9uKCkgPT09IFRUQiA/IFwidmVydGljYWxcIiA6IFwiXCIpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXg7IGkrKykge1xuICAgICAgdmFyIGxpID0gY3JlYXRlKFwibGlcIiwgbnVsbCwgbGlzdCk7XG4gICAgICB2YXIgYnV0dG9uID0gY3JlYXRlKFwiYnV0dG9uXCIsIHtcbiAgICAgICAgY2xhc3M6IGNsYXNzZXMucGFnZSxcbiAgICAgICAgdHlwZTogXCJidXR0b25cIlxuICAgICAgfSwgbGkpO1xuICAgICAgdmFyIGNvbnRyb2xzID0gU2xpZGVzLmdldEluKGkpLm1hcChmdW5jdGlvbiAoU2xpZGUpIHtcbiAgICAgICAgcmV0dXJuIFNsaWRlLnNsaWRlLmlkO1xuICAgICAgfSk7XG4gICAgICB2YXIgdGV4dCA9ICFoYXNGb2N1cygpICYmIHBlclBhZ2UgPiAxID8gaTE4bi5wYWdlWCA6IGkxOG4uc2xpZGVYO1xuICAgICAgYmluZChidXR0b24sIFwiY2xpY2tcIiwgYXBwbHkob25DbGljaywgaSkpO1xuXG4gICAgICBpZiAob3B0aW9ucy5wYWdpbmF0aW9uS2V5Ym9hcmQpIHtcbiAgICAgICAgYmluZChidXR0b24sIFwia2V5ZG93blwiLCBhcHBseShvbktleWRvd24sIGkpKTtcbiAgICAgIH1cblxuICAgICAgc2V0QXR0cmlidXRlKGxpLCBST0xFLCBcInByZXNlbnRhdGlvblwiKTtcbiAgICAgIHNldEF0dHJpYnV0ZShidXR0b24sIFJPTEUsIFwidGFiXCIpO1xuICAgICAgc2V0QXR0cmlidXRlKGJ1dHRvbiwgQVJJQV9DT05UUk9MUywgY29udHJvbHMuam9pbihcIiBcIikpO1xuICAgICAgc2V0QXR0cmlidXRlKGJ1dHRvbiwgQVJJQV9MQUJFTCwgZm9ybWF0KHRleHQsIGkgKyAxKSk7XG4gICAgICBzZXRBdHRyaWJ1dGUoYnV0dG9uLCBUQUJfSU5ERVgsIC0xKTtcbiAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICBsaTogbGksXG4gICAgICAgIGJ1dHRvbjogYnV0dG9uLFxuICAgICAgICBwYWdlOiBpXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBvbkNsaWNrKHBhZ2UpIHtcbiAgICBnbyhcIj5cIiArIHBhZ2UsIHRydWUpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25LZXlkb3duKHBhZ2UsIGUpIHtcbiAgICB2YXIgbGVuZ3RoID0gaXRlbXMubGVuZ3RoO1xuICAgIHZhciBrZXkgPSBub3JtYWxpemVLZXkoZSk7XG4gICAgdmFyIGRpciA9IGdldERpcmVjdGlvbigpO1xuICAgIHZhciBuZXh0UGFnZSA9IC0xO1xuXG4gICAgaWYgKGtleSA9PT0gcmVzb2x2ZShBUlJPV19SSUdIVCwgZmFsc2UsIGRpcikpIHtcbiAgICAgIG5leHRQYWdlID0gKytwYWdlICUgbGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSByZXNvbHZlKEFSUk9XX0xFRlQsIGZhbHNlLCBkaXIpKSB7XG4gICAgICBuZXh0UGFnZSA9ICgtLXBhZ2UgKyBsZW5ndGgpICUgbGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSBcIkhvbWVcIikge1xuICAgICAgbmV4dFBhZ2UgPSAwO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSBcIkVuZFwiKSB7XG4gICAgICBuZXh0UGFnZSA9IGxlbmd0aCAtIDE7XG4gICAgfVxuXG4gICAgdmFyIGl0ZW0gPSBpdGVtc1tuZXh0UGFnZV07XG5cbiAgICBpZiAoaXRlbSkge1xuICAgICAgZm9jdXMoaXRlbS5idXR0b24pO1xuICAgICAgZ28oXCI+XCIgKyBuZXh0UGFnZSk7XG4gICAgICBwcmV2ZW50KGUsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGdldERpcmVjdGlvbigpIHtcbiAgICByZXR1cm4gb3B0aW9ucy5wYWdpbmF0aW9uRGlyZWN0aW9uIHx8IG9wdGlvbnMuZGlyZWN0aW9uO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0QXQoaW5kZXgpIHtcbiAgICByZXR1cm4gaXRlbXNbQ29udHJvbGxlci50b1BhZ2UoaW5kZXgpXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICB2YXIgcHJldiA9IGdldEF0KGdldEluZGV4KHRydWUpKTtcbiAgICB2YXIgY3VyciA9IGdldEF0KGdldEluZGV4KCkpO1xuXG4gICAgaWYgKHByZXYpIHtcbiAgICAgIHZhciBidXR0b24gPSBwcmV2LmJ1dHRvbjtcbiAgICAgIHJlbW92ZUNsYXNzKGJ1dHRvbiwgQ0xBU1NfQUNUSVZFKTtcbiAgICAgIHJlbW92ZUF0dHJpYnV0ZShidXR0b24sIEFSSUFfU0VMRUNURUQpO1xuICAgICAgc2V0QXR0cmlidXRlKGJ1dHRvbiwgVEFCX0lOREVYLCAtMSk7XG4gICAgfVxuXG4gICAgaWYgKGN1cnIpIHtcbiAgICAgIHZhciBfYnV0dG9uID0gY3Vyci5idXR0b247XG4gICAgICBhZGRDbGFzcyhfYnV0dG9uLCBDTEFTU19BQ1RJVkUpO1xuICAgICAgc2V0QXR0cmlidXRlKF9idXR0b24sIEFSSUFfU0VMRUNURUQsIHRydWUpO1xuICAgICAgc2V0QXR0cmlidXRlKF9idXR0b24sIFRBQl9JTkRFWCwgXCJcIik7XG4gICAgfVxuXG4gICAgZW1pdChFVkVOVF9QQUdJTkFUSU9OX1VQREFURUQsIHtcbiAgICAgIGxpc3Q6IGxpc3QsXG4gICAgICBpdGVtczogaXRlbXNcbiAgICB9LCBwcmV2LCBjdXJyKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaXRlbXM6IGl0ZW1zLFxuICAgIG1vdW50OiBtb3VudCxcbiAgICBkZXN0cm95OiBkZXN0cm95LFxuICAgIGdldEF0OiBnZXRBdCxcbiAgICB1cGRhdGU6IHVwZGF0ZVxuICB9O1xufVxuXG52YXIgVFJJR0dFUl9LRVlTID0gW1wiIFwiLCBcIkVudGVyXCJdO1xuXG5mdW5jdGlvbiBTeW5jKFNwbGlkZTIsIENvbXBvbmVudHMyLCBvcHRpb25zKSB7XG4gIHZhciBpc05hdmlnYXRpb24gPSBvcHRpb25zLmlzTmF2aWdhdGlvbixcbiAgICAgIHNsaWRlRm9jdXMgPSBvcHRpb25zLnNsaWRlRm9jdXM7XG4gIHZhciBldmVudHMgPSBbXTtcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBTcGxpZGUyLnNwbGlkZXMuZm9yRWFjaChmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICBpZiAoIXRhcmdldC5pc1BhcmVudCkge1xuICAgICAgICBzeW5jKFNwbGlkZTIsIHRhcmdldC5zcGxpZGUpO1xuICAgICAgICBzeW5jKHRhcmdldC5zcGxpZGUsIFNwbGlkZTIpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGlzTmF2aWdhdGlvbikge1xuICAgICAgbmF2aWdhdGUoKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgIGV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgZXZlbnQuZGVzdHJveSgpO1xuICAgIH0pO1xuICAgIGVtcHR5KGV2ZW50cyk7XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdW50KCkge1xuICAgIGRlc3Ryb3koKTtcbiAgICBtb3VudCgpO1xuICB9XG5cbiAgZnVuY3Rpb24gc3luYyhzcGxpZGUsIHRhcmdldCkge1xuICAgIHZhciBldmVudCA9IEV2ZW50SW50ZXJmYWNlKHNwbGlkZSk7XG4gICAgZXZlbnQub24oRVZFTlRfTU9WRSwgZnVuY3Rpb24gKGluZGV4LCBwcmV2LCBkZXN0KSB7XG4gICAgICB0YXJnZXQuZ28odGFyZ2V0LmlzKExPT1ApID8gZGVzdCA6IGluZGV4KTtcbiAgICB9KTtcbiAgICBldmVudHMucHVzaChldmVudCk7XG4gIH1cblxuICBmdW5jdGlvbiBuYXZpZ2F0ZSgpIHtcbiAgICB2YXIgZXZlbnQgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKTtcbiAgICB2YXIgb24gPSBldmVudC5vbjtcbiAgICBvbihFVkVOVF9DTElDSywgb25DbGljayk7XG4gICAgb24oRVZFTlRfU0xJREVfS0VZRE9XTiwgb25LZXlkb3duKTtcbiAgICBvbihbRVZFTlRfTU9VTlRFRCwgRVZFTlRfVVBEQVRFRF0sIHVwZGF0ZSk7XG4gICAgZXZlbnRzLnB1c2goZXZlbnQpO1xuICAgIGV2ZW50LmVtaXQoRVZFTlRfTkFWSUdBVElPTl9NT1VOVEVELCBTcGxpZGUyLnNwbGlkZXMpO1xuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgIHNldEF0dHJpYnV0ZShDb21wb25lbnRzMi5FbGVtZW50cy5saXN0LCBBUklBX09SSUVOVEFUSU9OLCBvcHRpb25zLmRpcmVjdGlvbiA9PT0gVFRCID8gXCJ2ZXJ0aWNhbFwiIDogXCJcIik7XG4gIH1cblxuICBmdW5jdGlvbiBvbkNsaWNrKFNsaWRlKSB7XG4gICAgU3BsaWRlMi5nbyhTbGlkZS5pbmRleCk7XG4gIH1cblxuICBmdW5jdGlvbiBvbktleWRvd24oU2xpZGUsIGUpIHtcbiAgICBpZiAoaW5jbHVkZXMoVFJJR0dFUl9LRVlTLCBub3JtYWxpemVLZXkoZSkpKSB7XG4gICAgICBvbkNsaWNrKFNsaWRlKTtcbiAgICAgIHByZXZlbnQoZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzZXR1cDogYXBwbHkoQ29tcG9uZW50czIuTWVkaWEuc2V0LCB7XG4gICAgICBzbGlkZUZvY3VzOiBpc1VuZGVmaW5lZChzbGlkZUZvY3VzKSA/IGlzTmF2aWdhdGlvbiA6IHNsaWRlRm9jdXNcbiAgICB9LCB0cnVlKSxcbiAgICBtb3VudDogbW91bnQsXG4gICAgZGVzdHJveTogZGVzdHJveSxcbiAgICByZW1vdW50OiByZW1vdW50XG4gIH07XG59XG5cbmZ1bmN0aW9uIFdoZWVsKFNwbGlkZTIsIENvbXBvbmVudHMyLCBvcHRpb25zKSB7XG4gIHZhciBfRXZlbnRJbnRlcmZhY2UxMiA9IEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpLFxuICAgICAgYmluZCA9IF9FdmVudEludGVyZmFjZTEyLmJpbmQ7XG5cbiAgdmFyIGxhc3RUaW1lID0gMDtcblxuICBmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBpZiAob3B0aW9ucy53aGVlbCkge1xuICAgICAgYmluZChDb21wb25lbnRzMi5FbGVtZW50cy50cmFjaywgXCJ3aGVlbFwiLCBvbldoZWVsLCBTQ1JPTExfTElTVEVORVJfT1BUSU9OUyk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb25XaGVlbChlKSB7XG4gICAgaWYgKGUuY2FuY2VsYWJsZSkge1xuICAgICAgdmFyIGRlbHRhWSA9IGUuZGVsdGFZO1xuICAgICAgdmFyIGJhY2t3YXJkcyA9IGRlbHRhWSA8IDA7XG4gICAgICB2YXIgdGltZVN0YW1wID0gdGltZU9mKGUpO1xuXG4gICAgICB2YXIgX21pbiA9IG9wdGlvbnMud2hlZWxNaW5UaHJlc2hvbGQgfHwgMDtcblxuICAgICAgdmFyIHNsZWVwID0gb3B0aW9ucy53aGVlbFNsZWVwIHx8IDA7XG5cbiAgICAgIGlmIChhYnMoZGVsdGFZKSA+IF9taW4gJiYgdGltZVN0YW1wIC0gbGFzdFRpbWUgPiBzbGVlcCkge1xuICAgICAgICBTcGxpZGUyLmdvKGJhY2t3YXJkcyA/IFwiPFwiIDogXCI+XCIpO1xuICAgICAgICBsYXN0VGltZSA9IHRpbWVTdGFtcDtcbiAgICAgIH1cblxuICAgICAgc2hvdWxkUHJldmVudChiYWNrd2FyZHMpICYmIHByZXZlbnQoZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2hvdWxkUHJldmVudChiYWNrd2FyZHMpIHtcbiAgICByZXR1cm4gIW9wdGlvbnMucmVsZWFzZVdoZWVsIHx8IFNwbGlkZTIuc3RhdGUuaXMoTU9WSU5HKSB8fCBDb21wb25lbnRzMi5Db250cm9sbGVyLmdldEFkamFjZW50KGJhY2t3YXJkcykgIT09IC0xO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtb3VudDogbW91bnRcbiAgfTtcbn1cblxudmFyIFNSX1JFTU9WQUxfREVMQVkgPSA5MDtcblxuZnVuY3Rpb24gTGl2ZShTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgX0V2ZW50SW50ZXJmYWNlMTMgPSBFdmVudEludGVyZmFjZShTcGxpZGUyKSxcbiAgICAgIG9uID0gX0V2ZW50SW50ZXJmYWNlMTMub247XG5cbiAgdmFyIHRyYWNrID0gQ29tcG9uZW50czIuRWxlbWVudHMudHJhY2s7XG4gIHZhciBlbmFibGVkID0gb3B0aW9ucy5saXZlICYmICFvcHRpb25zLmlzTmF2aWdhdGlvbjtcbiAgdmFyIHNyID0gY3JlYXRlKFwic3BhblwiLCBDTEFTU19TUik7XG4gIHZhciBpbnRlcnZhbCA9IFJlcXVlc3RJbnRlcnZhbChTUl9SRU1PVkFMX0RFTEFZLCBhcHBseSh0b2dnbGUsIGZhbHNlKSk7XG5cbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgaWYgKGVuYWJsZWQpIHtcbiAgICAgIGRpc2FibGUoIUNvbXBvbmVudHMyLkF1dG9wbGF5LmlzUGF1c2VkKCkpO1xuICAgICAgc2V0QXR0cmlidXRlKHRyYWNrLCBBUklBX0FUT01JQywgdHJ1ZSk7XG4gICAgICBzci50ZXh0Q29udGVudCA9IFwiXFx1MjAyNlwiO1xuICAgICAgb24oRVZFTlRfQVVUT1BMQVlfUExBWSwgYXBwbHkoZGlzYWJsZSwgdHJ1ZSkpO1xuICAgICAgb24oRVZFTlRfQVVUT1BMQVlfUEFVU0UsIGFwcGx5KGRpc2FibGUsIGZhbHNlKSk7XG4gICAgICBvbihbRVZFTlRfTU9WRUQsIEVWRU5UX1NDUk9MTEVEXSwgYXBwbHkodG9nZ2xlLCB0cnVlKSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdG9nZ2xlKGFjdGl2ZSkge1xuICAgIHNldEF0dHJpYnV0ZSh0cmFjaywgQVJJQV9CVVNZLCBhY3RpdmUpO1xuXG4gICAgaWYgKGFjdGl2ZSkge1xuICAgICAgYXBwZW5kKHRyYWNrLCBzcik7XG4gICAgICBpbnRlcnZhbC5zdGFydCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZW1vdmUoc3IpO1xuICAgICAgaW50ZXJ2YWwuY2FuY2VsKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICByZW1vdmVBdHRyaWJ1dGUodHJhY2ssIFtBUklBX0xJVkUsIEFSSUFfQVRPTUlDLCBBUklBX0JVU1ldKTtcbiAgICByZW1vdmUoc3IpO1xuICB9XG5cbiAgZnVuY3Rpb24gZGlzYWJsZShkaXNhYmxlZCkge1xuICAgIGlmIChlbmFibGVkKSB7XG4gICAgICBzZXRBdHRyaWJ1dGUodHJhY2ssIEFSSUFfTElWRSwgZGlzYWJsZWQgPyBcIm9mZlwiIDogXCJwb2xpdGVcIik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtb3VudDogbW91bnQsXG4gICAgZGlzYWJsZTogZGlzYWJsZSxcbiAgICBkZXN0cm95OiBkZXN0cm95XG4gIH07XG59XG5cbnZhciBDb21wb25lbnRDb25zdHJ1Y3RvcnMgPSAvKiNfX1BVUkVfXyovT2JqZWN0LmZyZWV6ZSh7XG4gIF9fcHJvdG9fXzogbnVsbCxcbiAgTWVkaWE6IE1lZGlhLFxuICBEaXJlY3Rpb246IERpcmVjdGlvbixcbiAgRWxlbWVudHM6IEVsZW1lbnRzLFxuICBTbGlkZXM6IFNsaWRlcyxcbiAgTGF5b3V0OiBMYXlvdXQsXG4gIENsb25lczogQ2xvbmVzLFxuICBNb3ZlOiBNb3ZlLFxuICBDb250cm9sbGVyOiBDb250cm9sbGVyLFxuICBBcnJvd3M6IEFycm93cyxcbiAgQXV0b3BsYXk6IEF1dG9wbGF5LFxuICBDb3ZlcjogQ292ZXIsXG4gIFNjcm9sbDogU2Nyb2xsLFxuICBEcmFnOiBEcmFnLFxuICBLZXlib2FyZDogS2V5Ym9hcmQsXG4gIExhenlMb2FkOiBMYXp5TG9hZCxcbiAgUGFnaW5hdGlvbjogUGFnaW5hdGlvbixcbiAgU3luYzogU3luYyxcbiAgV2hlZWw6IFdoZWVsLFxuICBMaXZlOiBMaXZlXG59KTtcbnZhciBJMThOID0ge1xuICBwcmV2OiBcIlByZXZpb3VzIHNsaWRlXCIsXG4gIG5leHQ6IFwiTmV4dCBzbGlkZVwiLFxuICBmaXJzdDogXCJHbyB0byBmaXJzdCBzbGlkZVwiLFxuICBsYXN0OiBcIkdvIHRvIGxhc3Qgc2xpZGVcIixcbiAgc2xpZGVYOiBcIkdvIHRvIHNsaWRlICVzXCIsXG4gIHBhZ2VYOiBcIkdvIHRvIHBhZ2UgJXNcIixcbiAgcGxheTogXCJTdGFydCBhdXRvcGxheVwiLFxuICBwYXVzZTogXCJQYXVzZSBhdXRvcGxheVwiLFxuICBjYXJvdXNlbDogXCJjYXJvdXNlbFwiLFxuICBzbGlkZTogXCJzbGlkZVwiLFxuICBzZWxlY3Q6IFwiU2VsZWN0IGEgc2xpZGUgdG8gc2hvd1wiLFxuICBzbGlkZUxhYmVsOiBcIiVzIG9mICVzXCJcbn07XG52YXIgREVGQVVMVFMgPSB7XG4gIHR5cGU6IFwic2xpZGVcIixcbiAgcm9sZTogXCJyZWdpb25cIixcbiAgc3BlZWQ6IDQwMCxcbiAgcGVyUGFnZTogMSxcbiAgY2xvbmVTdGF0dXM6IHRydWUsXG4gIGFycm93czogdHJ1ZSxcbiAgcGFnaW5hdGlvbjogdHJ1ZSxcbiAgcGFnaW5hdGlvbktleWJvYXJkOiB0cnVlLFxuICBpbnRlcnZhbDogNWUzLFxuICBwYXVzZU9uSG92ZXI6IHRydWUsXG4gIHBhdXNlT25Gb2N1czogdHJ1ZSxcbiAgcmVzZXRQcm9ncmVzczogdHJ1ZSxcbiAgZWFzaW5nOiBcImN1YmljLWJlemllcigwLjI1LCAxLCAwLjUsIDEpXCIsXG4gIGRyYWc6IHRydWUsXG4gIGRpcmVjdGlvbjogXCJsdHJcIixcbiAgdHJpbVNwYWNlOiB0cnVlLFxuICBmb2N1c2FibGVOb2RlczogXCJhLCBidXR0b24sIHRleHRhcmVhLCBpbnB1dCwgc2VsZWN0LCBpZnJhbWVcIixcbiAgbGl2ZTogdHJ1ZSxcbiAgY2xhc3NlczogQ0xBU1NFUyxcbiAgaTE4bjogSTE4TixcbiAgcmVkdWNlZE1vdGlvbjoge1xuICAgIHNwZWVkOiAwLFxuICAgIHJld2luZFNwZWVkOiAwLFxuICAgIGF1dG9wbGF5OiBcInBhdXNlXCJcbiAgfVxufTtcblxuZnVuY3Rpb24gRmFkZShTcGxpZGUyLCBDb21wb25lbnRzMiwgb3B0aW9ucykge1xuICB2YXIgU2xpZGVzID0gQ29tcG9uZW50czIuU2xpZGVzO1xuXG4gIGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIEV2ZW50SW50ZXJmYWNlKFNwbGlkZTIpLm9uKFtFVkVOVF9NT1VOVEVELCBFVkVOVF9SRUZSRVNIXSwgaW5pdCk7XG4gIH1cblxuICBmdW5jdGlvbiBpbml0KCkge1xuICAgIFNsaWRlcy5mb3JFYWNoKGZ1bmN0aW9uIChTbGlkZSkge1xuICAgICAgU2xpZGUuc3R5bGUoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGVYKC1cIiArIDEwMCAqIFNsaWRlLmluZGV4ICsgXCIlKVwiKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHN0YXJ0KGluZGV4LCBkb25lKSB7XG4gICAgU2xpZGVzLnN0eWxlKFwidHJhbnNpdGlvblwiLCBcIm9wYWNpdHkgXCIgKyBvcHRpb25zLnNwZWVkICsgXCJtcyBcIiArIG9wdGlvbnMuZWFzaW5nKTtcbiAgICBuZXh0VGljayhkb25lKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91bnQ6IG1vdW50LFxuICAgIHN0YXJ0OiBzdGFydCxcbiAgICBjYW5jZWw6IG5vb3BcbiAgfTtcbn1cblxuZnVuY3Rpb24gU2xpZGUoU3BsaWRlMiwgQ29tcG9uZW50czIsIG9wdGlvbnMpIHtcbiAgdmFyIE1vdmUgPSBDb21wb25lbnRzMi5Nb3ZlLFxuICAgICAgQ29udHJvbGxlciA9IENvbXBvbmVudHMyLkNvbnRyb2xsZXIsXG4gICAgICBTY3JvbGwgPSBDb21wb25lbnRzMi5TY3JvbGw7XG4gIHZhciBsaXN0ID0gQ29tcG9uZW50czIuRWxlbWVudHMubGlzdDtcbiAgdmFyIHRyYW5zaXRpb24gPSBhcHBseShzdHlsZSwgbGlzdCwgXCJ0cmFuc2l0aW9uXCIpO1xuICB2YXIgZW5kQ2FsbGJhY2s7XG5cbiAgZnVuY3Rpb24gbW91bnQoKSB7XG4gICAgRXZlbnRJbnRlcmZhY2UoU3BsaWRlMikuYmluZChsaXN0LCBcInRyYW5zaXRpb25lbmRcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmIChlLnRhcmdldCA9PT0gbGlzdCAmJiBlbmRDYWxsYmFjaykge1xuICAgICAgICBjYW5jZWwoKTtcbiAgICAgICAgZW5kQ2FsbGJhY2soKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHN0YXJ0KGluZGV4LCBkb25lKSB7XG4gICAgdmFyIGRlc3RpbmF0aW9uID0gTW92ZS50b1Bvc2l0aW9uKGluZGV4LCB0cnVlKTtcbiAgICB2YXIgcG9zaXRpb24gPSBNb3ZlLmdldFBvc2l0aW9uKCk7XG4gICAgdmFyIHNwZWVkID0gZ2V0U3BlZWQoaW5kZXgpO1xuXG4gICAgaWYgKGFicyhkZXN0aW5hdGlvbiAtIHBvc2l0aW9uKSA+PSAxICYmIHNwZWVkID49IDEpIHtcbiAgICAgIGlmIChvcHRpb25zLnVzZVNjcm9sbCkge1xuICAgICAgICBTY3JvbGwuc2Nyb2xsKGRlc3RpbmF0aW9uLCBzcGVlZCwgZmFsc2UsIGRvbmUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJhbnNpdGlvbihcInRyYW5zZm9ybSBcIiArIHNwZWVkICsgXCJtcyBcIiArIG9wdGlvbnMuZWFzaW5nKTtcbiAgICAgICAgTW92ZS50cmFuc2xhdGUoZGVzdGluYXRpb24sIHRydWUpO1xuICAgICAgICBlbmRDYWxsYmFjayA9IGRvbmU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIE1vdmUuanVtcChpbmRleCk7XG4gICAgICBkb25lKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY2FuY2VsKCkge1xuICAgIHRyYW5zaXRpb24oXCJcIik7XG4gICAgU2Nyb2xsLmNhbmNlbCgpO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0U3BlZWQoaW5kZXgpIHtcbiAgICB2YXIgcmV3aW5kU3BlZWQgPSBvcHRpb25zLnJld2luZFNwZWVkO1xuXG4gICAgaWYgKFNwbGlkZTIuaXMoU0xJREUpICYmIHJld2luZFNwZWVkKSB7XG4gICAgICB2YXIgcHJldiA9IENvbnRyb2xsZXIuZ2V0SW5kZXgodHJ1ZSk7XG4gICAgICB2YXIgZW5kID0gQ29udHJvbGxlci5nZXRFbmQoKTtcblxuICAgICAgaWYgKHByZXYgPT09IDAgJiYgaW5kZXggPj0gZW5kIHx8IHByZXYgPj0gZW5kICYmIGluZGV4ID09PSAwKSB7XG4gICAgICAgIHJldHVybiByZXdpbmRTcGVlZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9ucy5zcGVlZDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91bnQ6IG1vdW50LFxuICAgIHN0YXJ0OiBzdGFydCxcbiAgICBjYW5jZWw6IGNhbmNlbFxuICB9O1xufVxuXG52YXIgX1NwbGlkZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIF9TcGxpZGUodGFyZ2V0LCBvcHRpb25zKSB7XG4gICAgdGhpcy5ldmVudCA9IEV2ZW50SW50ZXJmYWNlKCk7XG4gICAgdGhpcy5Db21wb25lbnRzID0ge307XG4gICAgdGhpcy5zdGF0ZSA9IFN0YXRlKENSRUFURUQpO1xuICAgIHRoaXMuc3BsaWRlcyA9IFtdO1xuICAgIHRoaXMuX28gPSB7fTtcbiAgICB0aGlzLl9FID0ge307XG4gICAgdmFyIHJvb3QgPSBpc1N0cmluZyh0YXJnZXQpID8gcXVlcnkoZG9jdW1lbnQsIHRhcmdldCkgOiB0YXJnZXQ7XG4gICAgYXNzZXJ0KHJvb3QsIHJvb3QgKyBcIiBpcyBpbnZhbGlkLlwiKTtcbiAgICB0aGlzLnJvb3QgPSByb290O1xuICAgIG9wdGlvbnMgPSBtZXJnZSh7XG4gICAgICBsYWJlbDogZ2V0QXR0cmlidXRlKHJvb3QsIEFSSUFfTEFCRUwpIHx8IFwiXCIsXG4gICAgICBsYWJlbGxlZGJ5OiBnZXRBdHRyaWJ1dGUocm9vdCwgQVJJQV9MQUJFTExFREJZKSB8fCBcIlwiXG4gICAgfSwgREVGQVVMVFMsIF9TcGxpZGUuZGVmYXVsdHMsIG9wdGlvbnMgfHwge30pO1xuXG4gICAgdHJ5IHtcbiAgICAgIG1lcmdlKG9wdGlvbnMsIEpTT04ucGFyc2UoZ2V0QXR0cmlidXRlKHJvb3QsIERBVEFfQVRUUklCVVRFKSkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGFzc2VydChmYWxzZSwgXCJJbnZhbGlkIEpTT05cIik7XG4gICAgfVxuXG4gICAgdGhpcy5fbyA9IE9iamVjdC5jcmVhdGUobWVyZ2Uoe30sIG9wdGlvbnMpKTtcbiAgfVxuXG4gIHZhciBfcHJvdG8gPSBfU3BsaWRlLnByb3RvdHlwZTtcblxuICBfcHJvdG8ubW91bnQgPSBmdW5jdGlvbiBtb3VudChFeHRlbnNpb25zLCBUcmFuc2l0aW9uKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBzdGF0ZSA9IHRoaXMuc3RhdGUsXG4gICAgICAgIENvbXBvbmVudHMyID0gdGhpcy5Db21wb25lbnRzO1xuICAgIGFzc2VydChzdGF0ZS5pcyhbQ1JFQVRFRCwgREVTVFJPWUVEXSksIFwiQWxyZWFkeSBtb3VudGVkIVwiKTtcbiAgICBzdGF0ZS5zZXQoQ1JFQVRFRCk7XG4gICAgdGhpcy5fQyA9IENvbXBvbmVudHMyO1xuICAgIHRoaXMuX1QgPSBUcmFuc2l0aW9uIHx8IHRoaXMuX1QgfHwgKHRoaXMuaXMoRkFERSkgPyBGYWRlIDogU2xpZGUpO1xuICAgIHRoaXMuX0UgPSBFeHRlbnNpb25zIHx8IHRoaXMuX0U7XG4gICAgdmFyIENvbnN0cnVjdG9ycyA9IGFzc2lnbih7fSwgQ29tcG9uZW50Q29uc3RydWN0b3JzLCB0aGlzLl9FLCB7XG4gICAgICBUcmFuc2l0aW9uOiB0aGlzLl9UXG4gICAgfSk7XG4gICAgZm9yT3duKENvbnN0cnVjdG9ycywgZnVuY3Rpb24gKENvbXBvbmVudCwga2V5KSB7XG4gICAgICB2YXIgY29tcG9uZW50ID0gQ29tcG9uZW50KF90aGlzLCBDb21wb25lbnRzMiwgX3RoaXMuX28pO1xuICAgICAgQ29tcG9uZW50czJba2V5XSA9IGNvbXBvbmVudDtcbiAgICAgIGNvbXBvbmVudC5zZXR1cCAmJiBjb21wb25lbnQuc2V0dXAoKTtcbiAgICB9KTtcbiAgICBmb3JPd24oQ29tcG9uZW50czIsIGZ1bmN0aW9uIChjb21wb25lbnQpIHtcbiAgICAgIGNvbXBvbmVudC5tb3VudCAmJiBjb21wb25lbnQubW91bnQoKTtcbiAgICB9KTtcbiAgICB0aGlzLmVtaXQoRVZFTlRfTU9VTlRFRCk7XG4gICAgYWRkQ2xhc3ModGhpcy5yb290LCBDTEFTU19JTklUSUFMSVpFRCk7XG4gICAgc3RhdGUuc2V0KElETEUpO1xuICAgIHRoaXMuZW1pdChFVkVOVF9SRUFEWSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgX3Byb3RvLnN5bmMgPSBmdW5jdGlvbiBzeW5jKHNwbGlkZSkge1xuICAgIHRoaXMuc3BsaWRlcy5wdXNoKHtcbiAgICAgIHNwbGlkZTogc3BsaWRlXG4gICAgfSk7XG4gICAgc3BsaWRlLnNwbGlkZXMucHVzaCh7XG4gICAgICBzcGxpZGU6IHRoaXMsXG4gICAgICBpc1BhcmVudDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuc3RhdGUuaXMoSURMRSkpIHtcbiAgICAgIHRoaXMuX0MuU3luYy5yZW1vdW50KCk7XG5cbiAgICAgIHNwbGlkZS5Db21wb25lbnRzLlN5bmMucmVtb3VudCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIF9wcm90by5nbyA9IGZ1bmN0aW9uIGdvKGNvbnRyb2wpIHtcbiAgICB0aGlzLl9DLkNvbnRyb2xsZXIuZ28oY29udHJvbCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBfcHJvdG8ub24gPSBmdW5jdGlvbiBvbihldmVudHMsIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5ldmVudC5vbihldmVudHMsIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBfcHJvdG8ub2ZmID0gZnVuY3Rpb24gb2ZmKGV2ZW50cykge1xuICAgIHRoaXMuZXZlbnQub2ZmKGV2ZW50cyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgX3Byb3RvLmVtaXQgPSBmdW5jdGlvbiBlbWl0KGV2ZW50KSB7XG4gICAgdmFyIF90aGlzJGV2ZW50O1xuXG4gICAgKF90aGlzJGV2ZW50ID0gdGhpcy5ldmVudCkuZW1pdC5hcHBseShfdGhpcyRldmVudCwgW2V2ZW50XS5jb25jYXQoc2xpY2UoYXJndW1lbnRzLCAxKSkpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgX3Byb3RvLmFkZCA9IGZ1bmN0aW9uIGFkZChzbGlkZXMsIGluZGV4KSB7XG4gICAgdGhpcy5fQy5TbGlkZXMuYWRkKHNsaWRlcywgaW5kZXgpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgX3Byb3RvLnJlbW92ZSA9IGZ1bmN0aW9uIHJlbW92ZShtYXRjaGVyKSB7XG4gICAgdGhpcy5fQy5TbGlkZXMucmVtb3ZlKG1hdGNoZXIpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgX3Byb3RvLmlzID0gZnVuY3Rpb24gaXModHlwZSkge1xuICAgIHJldHVybiB0aGlzLl9vLnR5cGUgPT09IHR5cGU7XG4gIH07XG5cbiAgX3Byb3RvLnJlZnJlc2ggPSBmdW5jdGlvbiByZWZyZXNoKCkge1xuICAgIHRoaXMuZW1pdChFVkVOVF9SRUZSRVNIKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBfcHJvdG8uZGVzdHJveSA9IGZ1bmN0aW9uIGRlc3Ryb3koY29tcGxldGVseSkge1xuICAgIGlmIChjb21wbGV0ZWx5ID09PSB2b2lkIDApIHtcbiAgICAgIGNvbXBsZXRlbHkgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBldmVudCA9IHRoaXMuZXZlbnQsXG4gICAgICAgIHN0YXRlID0gdGhpcy5zdGF0ZTtcblxuICAgIGlmIChzdGF0ZS5pcyhDUkVBVEVEKSkge1xuICAgICAgRXZlbnRJbnRlcmZhY2UodGhpcykub24oRVZFTlRfUkVBRFksIHRoaXMuZGVzdHJveS5iaW5kKHRoaXMsIGNvbXBsZXRlbHkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yT3duKHRoaXMuX0MsIGZ1bmN0aW9uIChjb21wb25lbnQpIHtcbiAgICAgICAgY29tcG9uZW50LmRlc3Ryb3kgJiYgY29tcG9uZW50LmRlc3Ryb3koY29tcGxldGVseSk7XG4gICAgICB9LCB0cnVlKTtcbiAgICAgIGV2ZW50LmVtaXQoRVZFTlRfREVTVFJPWSk7XG4gICAgICBldmVudC5kZXN0cm95KCk7XG4gICAgICBjb21wbGV0ZWx5ICYmIGVtcHR5KHRoaXMuc3BsaWRlcyk7XG4gICAgICBzdGF0ZS5zZXQoREVTVFJPWUVEKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBfY3JlYXRlQ2xhc3MoX1NwbGlkZSwgW3tcbiAgICBrZXk6IFwib3B0aW9uc1wiLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuX287XG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIHNldChvcHRpb25zKSB7XG4gICAgICB0aGlzLl9DLk1lZGlhLnNldChvcHRpb25zLCB0cnVlLCB0cnVlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwibGVuZ3RoXCIsXG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fQy5TbGlkZXMuZ2V0TGVuZ3RoKHRydWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpbmRleFwiLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuX0MuQ29udHJvbGxlci5nZXRJbmRleCgpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBfU3BsaWRlO1xufSgpO1xuXG52YXIgU3BsaWRlID0gX1NwbGlkZTtcblNwbGlkZS5kZWZhdWx0cyA9IHt9O1xuU3BsaWRlLlNUQVRFUyA9IFNUQVRFUztcbnZhciBDTEFTU19SRU5ERVJFRCA9IFwiaXMtcmVuZGVyZWRcIjtcbnZhciBSRU5ERVJFUl9ERUZBVUxUX0NPTkZJRyA9IHtcbiAgbGlzdFRhZzogXCJ1bFwiLFxuICBzbGlkZVRhZzogXCJsaVwiXG59O1xuXG52YXIgU3R5bGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTdHlsZShpZCwgb3B0aW9ucykge1xuICAgIHRoaXMuc3R5bGVzID0ge307XG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICB2YXIgX3Byb3RvMiA9IFN0eWxlLnByb3RvdHlwZTtcblxuICBfcHJvdG8yLnJ1bGUgPSBmdW5jdGlvbiBydWxlKHNlbGVjdG9yLCBwcm9wLCB2YWx1ZSwgYnJlYWtwb2ludCkge1xuICAgIGJyZWFrcG9pbnQgPSBicmVha3BvaW50IHx8IFwiZGVmYXVsdFwiO1xuICAgIHZhciBzZWxlY3RvcnMgPSB0aGlzLnN0eWxlc1ticmVha3BvaW50XSA9IHRoaXMuc3R5bGVzW2JyZWFrcG9pbnRdIHx8IHt9O1xuICAgIHZhciBzdHlsZXMgPSBzZWxlY3RvcnNbc2VsZWN0b3JdID0gc2VsZWN0b3JzW3NlbGVjdG9yXSB8fCB7fTtcbiAgICBzdHlsZXNbcHJvcF0gPSB2YWx1ZTtcbiAgfTtcblxuICBfcHJvdG8yLmJ1aWxkID0gZnVuY3Rpb24gYnVpbGQoKSB7XG4gICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICB2YXIgY3NzID0gXCJcIjtcblxuICAgIGlmICh0aGlzLnN0eWxlcy5kZWZhdWx0KSB7XG4gICAgICBjc3MgKz0gdGhpcy5idWlsZFNlbGVjdG9ycyh0aGlzLnN0eWxlcy5kZWZhdWx0KTtcbiAgICB9XG5cbiAgICBPYmplY3Qua2V5cyh0aGlzLnN0eWxlcykuc29ydChmdW5jdGlvbiAobiwgbSkge1xuICAgICAgcmV0dXJuIF90aGlzMi5vcHRpb25zLm1lZGlhUXVlcnkgPT09IFwibWluXCIgPyArbiAtICttIDogK20gLSArbjtcbiAgICB9KS5mb3JFYWNoKGZ1bmN0aW9uIChicmVha3BvaW50KSB7XG4gICAgICBpZiAoYnJlYWtwb2ludCAhPT0gXCJkZWZhdWx0XCIpIHtcbiAgICAgICAgY3NzICs9IFwiQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogXCIgKyBicmVha3BvaW50ICsgXCJweCkge1wiO1xuICAgICAgICBjc3MgKz0gX3RoaXMyLmJ1aWxkU2VsZWN0b3JzKF90aGlzMi5zdHlsZXNbYnJlYWtwb2ludF0pO1xuICAgICAgICBjc3MgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNzcztcbiAgfTtcblxuICBfcHJvdG8yLmJ1aWxkU2VsZWN0b3JzID0gZnVuY3Rpb24gYnVpbGRTZWxlY3RvcnMoc2VsZWN0b3JzKSB7XG4gICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICB2YXIgY3NzID0gXCJcIjtcbiAgICBmb3JPd24oc2VsZWN0b3JzLCBmdW5jdGlvbiAoc3R5bGVzLCBzZWxlY3Rvcikge1xuICAgICAgc2VsZWN0b3IgPSAoXCIjXCIgKyBfdGhpczMuaWQgKyBcIiBcIiArIHNlbGVjdG9yKS50cmltKCk7XG4gICAgICBjc3MgKz0gc2VsZWN0b3IgKyBcIiB7XCI7XG4gICAgICBmb3JPd24oc3R5bGVzLCBmdW5jdGlvbiAodmFsdWUsIHByb3ApIHtcbiAgICAgICAgaWYgKHZhbHVlIHx8IHZhbHVlID09PSAwKSB7XG4gICAgICAgICAgY3NzICs9IHByb3AgKyBcIjogXCIgKyB2YWx1ZSArIFwiO1wiO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGNzcyArPSBcIn1cIjtcbiAgICB9KTtcbiAgICByZXR1cm4gY3NzO1xuICB9O1xuXG4gIHJldHVybiBTdHlsZTtcbn0oKTtcblxudmFyIFNwbGlkZVJlbmRlcmVyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gU3BsaWRlUmVuZGVyZXIoY29udGVudHMsIG9wdGlvbnMsIGNvbmZpZywgZGVmYXVsdHMpIHtcbiAgICB0aGlzLnNsaWRlcyA9IFtdO1xuICAgIHRoaXMub3B0aW9ucyA9IHt9O1xuICAgIHRoaXMuYnJlYWtwb2ludHMgPSBbXTtcbiAgICBtZXJnZShERUZBVUxUUywgZGVmYXVsdHMgfHwge30pO1xuICAgIG1lcmdlKG1lcmdlKHRoaXMub3B0aW9ucywgREVGQVVMVFMpLCBvcHRpb25zIHx8IHt9KTtcbiAgICB0aGlzLmNvbnRlbnRzID0gY29udGVudHM7XG4gICAgdGhpcy5jb25maWcgPSBhc3NpZ24oe30sIFJFTkRFUkVSX0RFRkFVTFRfQ09ORklHLCBjb25maWcgfHwge30pO1xuICAgIHRoaXMuaWQgPSB0aGlzLmNvbmZpZy5pZCB8fCB1bmlxdWVJZChcInNwbGlkZVwiKTtcbiAgICB0aGlzLlN0eWxlID0gbmV3IFN0eWxlKHRoaXMuaWQsIHRoaXMub3B0aW9ucyk7XG4gICAgdGhpcy5EaXJlY3Rpb24gPSBEaXJlY3Rpb24obnVsbCwgbnVsbCwgdGhpcy5vcHRpb25zKTtcbiAgICBhc3NlcnQodGhpcy5jb250ZW50cy5sZW5ndGgsIFwiUHJvdmlkZSBhdCBsZWFzdCAxIGNvbnRlbnQuXCIpO1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgU3BsaWRlUmVuZGVyZXIuY2xlYW4gPSBmdW5jdGlvbiBjbGVhbihzcGxpZGUpIHtcbiAgICB2YXIgX0V2ZW50SW50ZXJmYWNlMTQgPSBFdmVudEludGVyZmFjZShzcGxpZGUpLFxuICAgICAgICBvbiA9IF9FdmVudEludGVyZmFjZTE0Lm9uO1xuXG4gICAgdmFyIHJvb3QgPSBzcGxpZGUucm9vdDtcbiAgICB2YXIgY2xvbmVzID0gcXVlcnlBbGwocm9vdCwgXCIuXCIgKyBDTEFTU19DTE9ORSk7XG4gICAgb24oRVZFTlRfTU9VTlRFRCwgZnVuY3Rpb24gKCkge1xuICAgICAgcmVtb3ZlKGNoaWxkKHJvb3QsIFwic3R5bGVcIikpO1xuICAgIH0pO1xuICAgIHJlbW92ZShjbG9uZXMpO1xuICB9O1xuXG4gIHZhciBfcHJvdG8zID0gU3BsaWRlUmVuZGVyZXIucHJvdG90eXBlO1xuXG4gIF9wcm90bzMuaW5pdCA9IGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgdGhpcy5wYXJzZUJyZWFrcG9pbnRzKCk7XG4gICAgdGhpcy5pbml0U2xpZGVzKCk7XG4gICAgdGhpcy5yZWdpc3RlclJvb3RTdHlsZXMoKTtcbiAgICB0aGlzLnJlZ2lzdGVyVHJhY2tTdHlsZXMoKTtcbiAgICB0aGlzLnJlZ2lzdGVyU2xpZGVTdHlsZXMoKTtcbiAgICB0aGlzLnJlZ2lzdGVyTGlzdFN0eWxlcygpO1xuICB9O1xuXG4gIF9wcm90bzMuaW5pdFNsaWRlcyA9IGZ1bmN0aW9uIGluaXRTbGlkZXMoKSB7XG4gICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICBwdXNoKHRoaXMuc2xpZGVzLCB0aGlzLmNvbnRlbnRzLm1hcChmdW5jdGlvbiAoY29udGVudCwgaW5kZXgpIHtcbiAgICAgIGNvbnRlbnQgPSBpc1N0cmluZyhjb250ZW50KSA/IHtcbiAgICAgICAgaHRtbDogY29udGVudFxuICAgICAgfSA6IGNvbnRlbnQ7XG4gICAgICBjb250ZW50LnN0eWxlcyA9IGNvbnRlbnQuc3R5bGVzIHx8IHt9O1xuICAgICAgY29udGVudC5hdHRycyA9IGNvbnRlbnQuYXR0cnMgfHwge307XG5cbiAgICAgIF90aGlzNC5jb3Zlcihjb250ZW50KTtcblxuICAgICAgdmFyIGNsYXNzZXMgPSBfdGhpczQub3B0aW9ucy5jbGFzc2VzLnNsaWRlICsgXCIgXCIgKyAoaW5kZXggPT09IDAgPyBDTEFTU19BQ1RJVkUgOiBcIlwiKTtcbiAgICAgIGFzc2lnbihjb250ZW50LmF0dHJzLCB7XG4gICAgICAgIGNsYXNzOiAoY2xhc3NlcyArIFwiIFwiICsgKGNvbnRlbnQuYXR0cnMuY2xhc3MgfHwgXCJcIikpLnRyaW0oKSxcbiAgICAgICAgc3R5bGU6IF90aGlzNC5idWlsZFN0eWxlcyhjb250ZW50LnN0eWxlcylcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkpO1xuXG4gICAgaWYgKHRoaXMuaXNMb29wKCkpIHtcbiAgICAgIHRoaXMuZ2VuZXJhdGVDbG9uZXModGhpcy5zbGlkZXMpO1xuICAgIH1cbiAgfTtcblxuICBfcHJvdG8zLnJlZ2lzdGVyUm9vdFN0eWxlcyA9IGZ1bmN0aW9uIHJlZ2lzdGVyUm9vdFN0eWxlcygpIHtcbiAgICB2YXIgX3RoaXM1ID0gdGhpcztcblxuICAgIHRoaXMuYnJlYWtwb2ludHMuZm9yRWFjaChmdW5jdGlvbiAoX3JlZjIpIHtcbiAgICAgIHZhciB3aWR0aCA9IF9yZWYyWzBdLFxuICAgICAgICAgIG9wdGlvbnMgPSBfcmVmMlsxXTtcblxuICAgICAgX3RoaXM1LlN0eWxlLnJ1bGUoXCIgXCIsIFwibWF4LXdpZHRoXCIsIHVuaXQob3B0aW9ucy53aWR0aCksIHdpZHRoKTtcbiAgICB9KTtcbiAgfTtcblxuICBfcHJvdG8zLnJlZ2lzdGVyVHJhY2tTdHlsZXMgPSBmdW5jdGlvbiByZWdpc3RlclRyYWNrU3R5bGVzKCkge1xuICAgIHZhciBfdGhpczYgPSB0aGlzO1xuXG4gICAgdmFyIFN0eWxlMiA9IHRoaXMuU3R5bGU7XG4gICAgdmFyIHNlbGVjdG9yID0gXCIuXCIgKyBDTEFTU19UUkFDSztcbiAgICB0aGlzLmJyZWFrcG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKF9yZWYzKSB7XG4gICAgICB2YXIgd2lkdGggPSBfcmVmM1swXSxcbiAgICAgICAgICBvcHRpb25zID0gX3JlZjNbMV07XG4gICAgICBTdHlsZTIucnVsZShzZWxlY3RvciwgX3RoaXM2LnJlc29sdmUoXCJwYWRkaW5nTGVmdFwiKSwgX3RoaXM2LmNzc1BhZGRpbmcob3B0aW9ucywgZmFsc2UpLCB3aWR0aCk7XG4gICAgICBTdHlsZTIucnVsZShzZWxlY3RvciwgX3RoaXM2LnJlc29sdmUoXCJwYWRkaW5nUmlnaHRcIiksIF90aGlzNi5jc3NQYWRkaW5nKG9wdGlvbnMsIHRydWUpLCB3aWR0aCk7XG4gICAgICBTdHlsZTIucnVsZShzZWxlY3RvciwgXCJoZWlnaHRcIiwgX3RoaXM2LmNzc1RyYWNrSGVpZ2h0KG9wdGlvbnMpLCB3aWR0aCk7XG4gICAgfSk7XG4gIH07XG5cbiAgX3Byb3RvMy5yZWdpc3Rlckxpc3RTdHlsZXMgPSBmdW5jdGlvbiByZWdpc3Rlckxpc3RTdHlsZXMoKSB7XG4gICAgdmFyIF90aGlzNyA9IHRoaXM7XG5cbiAgICB2YXIgU3R5bGUyID0gdGhpcy5TdHlsZTtcbiAgICB2YXIgc2VsZWN0b3IgPSBcIi5cIiArIENMQVNTX0xJU1Q7XG4gICAgdGhpcy5icmVha3BvaW50cy5mb3JFYWNoKGZ1bmN0aW9uIChfcmVmNCkge1xuICAgICAgdmFyIHdpZHRoID0gX3JlZjRbMF0sXG4gICAgICAgICAgb3B0aW9ucyA9IF9yZWY0WzFdO1xuICAgICAgU3R5bGUyLnJ1bGUoc2VsZWN0b3IsIFwidHJhbnNmb3JtXCIsIF90aGlzNy5idWlsZFRyYW5zbGF0ZShvcHRpb25zKSwgd2lkdGgpO1xuXG4gICAgICBpZiAoIV90aGlzNy5jc3NTbGlkZUhlaWdodChvcHRpb25zKSkge1xuICAgICAgICBTdHlsZTIucnVsZShzZWxlY3RvciwgXCJhc3BlY3QtcmF0aW9cIiwgX3RoaXM3LmNzc0FzcGVjdFJhdGlvKG9wdGlvbnMpLCB3aWR0aCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgX3Byb3RvMy5yZWdpc3RlclNsaWRlU3R5bGVzID0gZnVuY3Rpb24gcmVnaXN0ZXJTbGlkZVN0eWxlcygpIHtcbiAgICB2YXIgX3RoaXM4ID0gdGhpcztcblxuICAgIHZhciBTdHlsZTIgPSB0aGlzLlN0eWxlO1xuICAgIHZhciBzZWxlY3RvciA9IFwiLlwiICsgQ0xBU1NfU0xJREU7XG4gICAgdGhpcy5icmVha3BvaW50cy5mb3JFYWNoKGZ1bmN0aW9uIChfcmVmNSkge1xuICAgICAgdmFyIHdpZHRoID0gX3JlZjVbMF0sXG4gICAgICAgICAgb3B0aW9ucyA9IF9yZWY1WzFdO1xuICAgICAgU3R5bGUyLnJ1bGUoc2VsZWN0b3IsIFwid2lkdGhcIiwgX3RoaXM4LmNzc1NsaWRlV2lkdGgob3B0aW9ucyksIHdpZHRoKTtcbiAgICAgIFN0eWxlMi5ydWxlKHNlbGVjdG9yLCBcImhlaWdodFwiLCBfdGhpczguY3NzU2xpZGVIZWlnaHQob3B0aW9ucykgfHwgXCIxMDAlXCIsIHdpZHRoKTtcbiAgICAgIFN0eWxlMi5ydWxlKHNlbGVjdG9yLCBfdGhpczgucmVzb2x2ZShcIm1hcmdpblJpZ2h0XCIpLCB1bml0KG9wdGlvbnMuZ2FwKSB8fCBcIjBweFwiLCB3aWR0aCk7XG4gICAgICBTdHlsZTIucnVsZShzZWxlY3RvciArIFwiID4gaW1nXCIsIFwiZGlzcGxheVwiLCBvcHRpb25zLmNvdmVyID8gXCJub25lXCIgOiBcImlubGluZVwiLCB3aWR0aCk7XG4gICAgfSk7XG4gIH07XG5cbiAgX3Byb3RvMy5idWlsZFRyYW5zbGF0ZSA9IGZ1bmN0aW9uIGJ1aWxkVHJhbnNsYXRlKG9wdGlvbnMpIHtcbiAgICB2YXIgX3RoaXMkRGlyZWN0aW9uID0gdGhpcy5EaXJlY3Rpb24sXG4gICAgICAgIHJlc29sdmUgPSBfdGhpcyREaXJlY3Rpb24ucmVzb2x2ZSxcbiAgICAgICAgb3JpZW50ID0gX3RoaXMkRGlyZWN0aW9uLm9yaWVudDtcbiAgICB2YXIgdmFsdWVzID0gW107XG4gICAgdmFsdWVzLnB1c2godGhpcy5jc3NPZmZzZXRDbG9uZXMob3B0aW9ucykpO1xuICAgIHZhbHVlcy5wdXNoKHRoaXMuY3NzT2Zmc2V0R2FwcyhvcHRpb25zKSk7XG5cbiAgICBpZiAodGhpcy5pc0NlbnRlcihvcHRpb25zKSkge1xuICAgICAgdmFsdWVzLnB1c2godGhpcy5idWlsZENzc1ZhbHVlKG9yaWVudCgtNTApLCBcIiVcIikpO1xuICAgICAgdmFsdWVzLnB1c2guYXBwbHkodmFsdWVzLCB0aGlzLmNzc09mZnNldENlbnRlcihvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlcy5maWx0ZXIoQm9vbGVhbikubWFwKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIFwidHJhbnNsYXRlXCIgKyByZXNvbHZlKFwiWFwiKSArIFwiKFwiICsgdmFsdWUgKyBcIilcIjtcbiAgICB9KS5qb2luKFwiIFwiKTtcbiAgfTtcblxuICBfcHJvdG8zLmNzc09mZnNldENsb25lcyA9IGZ1bmN0aW9uIGNzc09mZnNldENsb25lcyhvcHRpb25zKSB7XG4gICAgdmFyIF90aGlzJERpcmVjdGlvbjIgPSB0aGlzLkRpcmVjdGlvbixcbiAgICAgICAgcmVzb2x2ZSA9IF90aGlzJERpcmVjdGlvbjIucmVzb2x2ZSxcbiAgICAgICAgb3JpZW50ID0gX3RoaXMkRGlyZWN0aW9uMi5vcmllbnQ7XG4gICAgdmFyIGNsb25lQ291bnQgPSB0aGlzLmdldENsb25lQ291bnQoKTtcblxuICAgIGlmICh0aGlzLmlzRml4ZWRXaWR0aChvcHRpb25zKSkge1xuICAgICAgdmFyIF90aGlzJHBhcnNlQ3NzVmFsdWUgPSB0aGlzLnBhcnNlQ3NzVmFsdWUob3B0aW9uc1tyZXNvbHZlKFwiZml4ZWRXaWR0aFwiKV0pLFxuICAgICAgICAgIHZhbHVlID0gX3RoaXMkcGFyc2VDc3NWYWx1ZS52YWx1ZSxcbiAgICAgICAgICB1bml0MiA9IF90aGlzJHBhcnNlQ3NzVmFsdWUudW5pdDtcblxuICAgICAgcmV0dXJuIHRoaXMuYnVpbGRDc3NWYWx1ZShvcmllbnQodmFsdWUpICogY2xvbmVDb3VudCwgdW5pdDIpO1xuICAgIH1cblxuICAgIHZhciBwZXJjZW50ID0gMTAwICogY2xvbmVDb3VudCAvIG9wdGlvbnMucGVyUGFnZTtcbiAgICByZXR1cm4gb3JpZW50KHBlcmNlbnQpICsgXCIlXCI7XG4gIH07XG5cbiAgX3Byb3RvMy5jc3NPZmZzZXRDZW50ZXIgPSBmdW5jdGlvbiBjc3NPZmZzZXRDZW50ZXIob3B0aW9ucykge1xuICAgIHZhciBfdGhpcyREaXJlY3Rpb24zID0gdGhpcy5EaXJlY3Rpb24sXG4gICAgICAgIHJlc29sdmUgPSBfdGhpcyREaXJlY3Rpb24zLnJlc29sdmUsXG4gICAgICAgIG9yaWVudCA9IF90aGlzJERpcmVjdGlvbjMub3JpZW50O1xuXG4gICAgaWYgKHRoaXMuaXNGaXhlZFdpZHRoKG9wdGlvbnMpKSB7XG4gICAgICB2YXIgX3RoaXMkcGFyc2VDc3NWYWx1ZTIgPSB0aGlzLnBhcnNlQ3NzVmFsdWUob3B0aW9uc1tyZXNvbHZlKFwiZml4ZWRXaWR0aFwiKV0pLFxuICAgICAgICAgIHZhbHVlID0gX3RoaXMkcGFyc2VDc3NWYWx1ZTIudmFsdWUsXG4gICAgICAgICAgdW5pdDIgPSBfdGhpcyRwYXJzZUNzc1ZhbHVlMi51bml0O1xuXG4gICAgICByZXR1cm4gW3RoaXMuYnVpbGRDc3NWYWx1ZShvcmllbnQodmFsdWUgLyAyKSwgdW5pdDIpXTtcbiAgICB9XG5cbiAgICB2YXIgdmFsdWVzID0gW107XG4gICAgdmFyIHBlclBhZ2UgPSBvcHRpb25zLnBlclBhZ2UsXG4gICAgICAgIGdhcCA9IG9wdGlvbnMuZ2FwO1xuICAgIHZhbHVlcy5wdXNoKG9yaWVudCg1MCAvIHBlclBhZ2UpICsgXCIlXCIpO1xuXG4gICAgaWYgKGdhcCkge1xuICAgICAgdmFyIF90aGlzJHBhcnNlQ3NzVmFsdWUzID0gdGhpcy5wYXJzZUNzc1ZhbHVlKGdhcCksXG4gICAgICAgICAgX3ZhbHVlID0gX3RoaXMkcGFyc2VDc3NWYWx1ZTMudmFsdWUsXG4gICAgICAgICAgX3VuaXQgPSBfdGhpcyRwYXJzZUNzc1ZhbHVlMy51bml0O1xuXG4gICAgICB2YXIgZ2FwT2Zmc2V0ID0gKF92YWx1ZSAvIHBlclBhZ2UgLSBfdmFsdWUpIC8gMjtcbiAgICAgIHZhbHVlcy5wdXNoKHRoaXMuYnVpbGRDc3NWYWx1ZShvcmllbnQoZ2FwT2Zmc2V0KSwgX3VuaXQpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVzO1xuICB9O1xuXG4gIF9wcm90bzMuY3NzT2Zmc2V0R2FwcyA9IGZ1bmN0aW9uIGNzc09mZnNldEdhcHMob3B0aW9ucykge1xuICAgIHZhciBjbG9uZUNvdW50ID0gdGhpcy5nZXRDbG9uZUNvdW50KCk7XG5cbiAgICBpZiAoY2xvbmVDb3VudCAmJiBvcHRpb25zLmdhcCkge1xuICAgICAgdmFyIG9yaWVudCA9IHRoaXMuRGlyZWN0aW9uLm9yaWVudDtcblxuICAgICAgdmFyIF90aGlzJHBhcnNlQ3NzVmFsdWU0ID0gdGhpcy5wYXJzZUNzc1ZhbHVlKG9wdGlvbnMuZ2FwKSxcbiAgICAgICAgICB2YWx1ZSA9IF90aGlzJHBhcnNlQ3NzVmFsdWU0LnZhbHVlLFxuICAgICAgICAgIHVuaXQyID0gX3RoaXMkcGFyc2VDc3NWYWx1ZTQudW5pdDtcblxuICAgICAgaWYgKHRoaXMuaXNGaXhlZFdpZHRoKG9wdGlvbnMpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkQ3NzVmFsdWUob3JpZW50KHZhbHVlICogY2xvbmVDb3VudCksIHVuaXQyKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHBlclBhZ2UgPSBvcHRpb25zLnBlclBhZ2U7XG4gICAgICB2YXIgZ2FwcyA9IGNsb25lQ291bnQgLyBwZXJQYWdlO1xuICAgICAgcmV0dXJuIHRoaXMuYnVpbGRDc3NWYWx1ZShvcmllbnQoZ2FwcyAqIHZhbHVlKSwgdW5pdDIpO1xuICAgIH1cblxuICAgIHJldHVybiBcIlwiO1xuICB9O1xuXG4gIF9wcm90bzMucmVzb2x2ZSA9IGZ1bmN0aW9uIHJlc29sdmUocHJvcCkge1xuICAgIHJldHVybiBjYW1lbFRvS2ViYWIodGhpcy5EaXJlY3Rpb24ucmVzb2x2ZShwcm9wKSk7XG4gIH07XG5cbiAgX3Byb3RvMy5jc3NQYWRkaW5nID0gZnVuY3Rpb24gY3NzUGFkZGluZyhvcHRpb25zLCByaWdodCkge1xuICAgIHZhciBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nO1xuICAgIHZhciBwcm9wID0gdGhpcy5EaXJlY3Rpb24ucmVzb2x2ZShyaWdodCA/IFwicmlnaHRcIiA6IFwibGVmdFwiLCB0cnVlKTtcbiAgICByZXR1cm4gcGFkZGluZyAmJiB1bml0KHBhZGRpbmdbcHJvcF0gfHwgKGlzT2JqZWN0KHBhZGRpbmcpID8gMCA6IHBhZGRpbmcpKSB8fCBcIjBweFwiO1xuICB9O1xuXG4gIF9wcm90bzMuY3NzVHJhY2tIZWlnaHQgPSBmdW5jdGlvbiBjc3NUcmFja0hlaWdodChvcHRpb25zKSB7XG4gICAgdmFyIGhlaWdodCA9IFwiXCI7XG5cbiAgICBpZiAodGhpcy5pc1ZlcnRpY2FsKCkpIHtcbiAgICAgIGhlaWdodCA9IHRoaXMuY3NzSGVpZ2h0KG9wdGlvbnMpO1xuICAgICAgYXNzZXJ0KGhlaWdodCwgJ1wiaGVpZ2h0XCIgaXMgbWlzc2luZy4nKTtcbiAgICAgIGhlaWdodCA9IFwiY2FsYyhcIiArIGhlaWdodCArIFwiIC0gXCIgKyB0aGlzLmNzc1BhZGRpbmcob3B0aW9ucywgZmFsc2UpICsgXCIgLSBcIiArIHRoaXMuY3NzUGFkZGluZyhvcHRpb25zLCB0cnVlKSArIFwiKVwiO1xuICAgIH1cblxuICAgIHJldHVybiBoZWlnaHQ7XG4gIH07XG5cbiAgX3Byb3RvMy5jc3NIZWlnaHQgPSBmdW5jdGlvbiBjc3NIZWlnaHQob3B0aW9ucykge1xuICAgIHJldHVybiB1bml0KG9wdGlvbnMuaGVpZ2h0KTtcbiAgfTtcblxuICBfcHJvdG8zLmNzc1NsaWRlV2lkdGggPSBmdW5jdGlvbiBjc3NTbGlkZVdpZHRoKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gb3B0aW9ucy5hdXRvV2lkdGggPyBcIlwiIDogdW5pdChvcHRpb25zLmZpeGVkV2lkdGgpIHx8ICh0aGlzLmlzVmVydGljYWwoKSA/IFwiXCIgOiB0aGlzLmNzc1NsaWRlU2l6ZShvcHRpb25zKSk7XG4gIH07XG5cbiAgX3Byb3RvMy5jc3NTbGlkZUhlaWdodCA9IGZ1bmN0aW9uIGNzc1NsaWRlSGVpZ2h0KG9wdGlvbnMpIHtcbiAgICByZXR1cm4gdW5pdChvcHRpb25zLmZpeGVkSGVpZ2h0KSB8fCAodGhpcy5pc1ZlcnRpY2FsKCkgPyBvcHRpb25zLmF1dG9IZWlnaHQgPyBcIlwiIDogdGhpcy5jc3NTbGlkZVNpemUob3B0aW9ucykgOiB0aGlzLmNzc0hlaWdodChvcHRpb25zKSk7XG4gIH07XG5cbiAgX3Byb3RvMy5jc3NTbGlkZVNpemUgPSBmdW5jdGlvbiBjc3NTbGlkZVNpemUob3B0aW9ucykge1xuICAgIHZhciBnYXAgPSB1bml0KG9wdGlvbnMuZ2FwKTtcbiAgICByZXR1cm4gXCJjYWxjKCgxMDAlXCIgKyAoZ2FwICYmIFwiICsgXCIgKyBnYXApICsgXCIpL1wiICsgKG9wdGlvbnMucGVyUGFnZSB8fCAxKSArIChnYXAgJiYgXCIgLSBcIiArIGdhcCkgKyBcIilcIjtcbiAgfTtcblxuICBfcHJvdG8zLmNzc0FzcGVjdFJhdGlvID0gZnVuY3Rpb24gY3NzQXNwZWN0UmF0aW8ob3B0aW9ucykge1xuICAgIHZhciBoZWlnaHRSYXRpbyA9IG9wdGlvbnMuaGVpZ2h0UmF0aW87XG4gICAgcmV0dXJuIGhlaWdodFJhdGlvID8gXCJcIiArIDEgLyBoZWlnaHRSYXRpbyA6IFwiXCI7XG4gIH07XG5cbiAgX3Byb3RvMy5idWlsZENzc1ZhbHVlID0gZnVuY3Rpb24gYnVpbGRDc3NWYWx1ZSh2YWx1ZSwgdW5pdDIpIHtcbiAgICByZXR1cm4gXCJcIiArIHZhbHVlICsgdW5pdDI7XG4gIH07XG5cbiAgX3Byb3RvMy5wYXJzZUNzc1ZhbHVlID0gZnVuY3Rpb24gcGFyc2VDc3NWYWx1ZSh2YWx1ZSkge1xuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgIHZhciBudW1iZXIgPSBwYXJzZUZsb2F0KHZhbHVlKSB8fCAwO1xuICAgICAgdmFyIHVuaXQyID0gdmFsdWUucmVwbGFjZSgvXFxkKihcXC5cXGQqKT8vLCBcIlwiKSB8fCBcInB4XCI7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogbnVtYmVyLFxuICAgICAgICB1bml0OiB1bml0MlxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgdW5pdDogXCJweFwiXG4gICAgfTtcbiAgfTtcblxuICBfcHJvdG8zLnBhcnNlQnJlYWtwb2ludHMgPSBmdW5jdGlvbiBwYXJzZUJyZWFrcG9pbnRzKCkge1xuICAgIHZhciBfdGhpczkgPSB0aGlzO1xuXG4gICAgdmFyIGJyZWFrcG9pbnRzID0gdGhpcy5vcHRpb25zLmJyZWFrcG9pbnRzO1xuICAgIHRoaXMuYnJlYWtwb2ludHMucHVzaChbXCJkZWZhdWx0XCIsIHRoaXMub3B0aW9uc10pO1xuXG4gICAgaWYgKGJyZWFrcG9pbnRzKSB7XG4gICAgICBmb3JPd24oYnJlYWtwb2ludHMsIGZ1bmN0aW9uIChvcHRpb25zLCB3aWR0aCkge1xuICAgICAgICBfdGhpczkuYnJlYWtwb2ludHMucHVzaChbd2lkdGgsIG1lcmdlKG1lcmdlKHt9LCBfdGhpczkub3B0aW9ucyksIG9wdGlvbnMpXSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgX3Byb3RvMy5pc0ZpeGVkV2lkdGggPSBmdW5jdGlvbiBpc0ZpeGVkV2lkdGgob3B0aW9ucykge1xuICAgIHJldHVybiAhIW9wdGlvbnNbdGhpcy5EaXJlY3Rpb24ucmVzb2x2ZShcImZpeGVkV2lkdGhcIildO1xuICB9O1xuXG4gIF9wcm90bzMuaXNMb29wID0gZnVuY3Rpb24gaXNMb29wKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMudHlwZSA9PT0gTE9PUDtcbiAgfTtcblxuICBfcHJvdG8zLmlzQ2VudGVyID0gZnVuY3Rpb24gaXNDZW50ZXIob3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLmZvY3VzID09PSBcImNlbnRlclwiKSB7XG4gICAgICBpZiAodGhpcy5pc0xvb3AoKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMub3B0aW9ucy50eXBlID09PSBTTElERSkge1xuICAgICAgICByZXR1cm4gIXRoaXMub3B0aW9ucy50cmltU3BhY2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIF9wcm90bzMuaXNWZXJ0aWNhbCA9IGZ1bmN0aW9uIGlzVmVydGljYWwoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5kaXJlY3Rpb24gPT09IFRUQjtcbiAgfTtcblxuICBfcHJvdG8zLmJ1aWxkQ2xhc3NlcyA9IGZ1bmN0aW9uIGJ1aWxkQ2xhc3NlcygpIHtcbiAgICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICByZXR1cm4gW0NMQVNTX1JPT1QsIENMQVNTX1JPT1QgKyBcIi0tXCIgKyBvcHRpb25zLnR5cGUsIENMQVNTX1JPT1QgKyBcIi0tXCIgKyBvcHRpb25zLmRpcmVjdGlvbiwgb3B0aW9ucy5kcmFnICYmIENMQVNTX1JPT1QgKyBcIi0tZHJhZ2dhYmxlXCIsIG9wdGlvbnMuaXNOYXZpZ2F0aW9uICYmIENMQVNTX1JPT1QgKyBcIi0tbmF2XCIsIENMQVNTX0FDVElWRSwgIXRoaXMuY29uZmlnLmhpZGRlbiAmJiBDTEFTU19SRU5ERVJFRF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCIgXCIpO1xuICB9O1xuXG4gIF9wcm90bzMuYnVpbGRBdHRycyA9IGZ1bmN0aW9uIGJ1aWxkQXR0cnMoYXR0cnMpIHtcbiAgICB2YXIgYXR0ciA9IFwiXCI7XG4gICAgZm9yT3duKGF0dHJzLCBmdW5jdGlvbiAodmFsdWUsIGtleSkge1xuICAgICAgYXR0ciArPSB2YWx1ZSA/IFwiIFwiICsgY2FtZWxUb0tlYmFiKGtleSkgKyBcIj1cXFwiXCIgKyB2YWx1ZSArIFwiXFxcIlwiIDogXCJcIjtcbiAgICB9KTtcbiAgICByZXR1cm4gYXR0ci50cmltKCk7XG4gIH07XG5cbiAgX3Byb3RvMy5idWlsZFN0eWxlcyA9IGZ1bmN0aW9uIGJ1aWxkU3R5bGVzKHN0eWxlcykge1xuICAgIHZhciBzdHlsZSA9IFwiXCI7XG4gICAgZm9yT3duKHN0eWxlcywgZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgIHN0eWxlICs9IFwiIFwiICsgY2FtZWxUb0tlYmFiKGtleSkgKyBcIjpcIiArIHZhbHVlICsgXCI7XCI7XG4gICAgfSk7XG4gICAgcmV0dXJuIHN0eWxlLnRyaW0oKTtcbiAgfTtcblxuICBfcHJvdG8zLnJlbmRlclNsaWRlcyA9IGZ1bmN0aW9uIHJlbmRlclNsaWRlcygpIHtcbiAgICB2YXIgX3RoaXMxMCA9IHRoaXM7XG5cbiAgICB2YXIgdGFnID0gdGhpcy5jb25maWcuc2xpZGVUYWc7XG4gICAgcmV0dXJuIHRoaXMuc2xpZGVzLm1hcChmdW5jdGlvbiAoY29udGVudCkge1xuICAgICAgcmV0dXJuIFwiPFwiICsgdGFnICsgXCIgXCIgKyBfdGhpczEwLmJ1aWxkQXR0cnMoY29udGVudC5hdHRycykgKyBcIj5cIiArIChjb250ZW50Lmh0bWwgfHwgXCJcIikgKyBcIjwvXCIgKyB0YWcgKyBcIj5cIjtcbiAgICB9KS5qb2luKFwiXCIpO1xuICB9O1xuXG4gIF9wcm90bzMuY292ZXIgPSBmdW5jdGlvbiBjb3Zlcihjb250ZW50KSB7XG4gICAgdmFyIHN0eWxlcyA9IGNvbnRlbnQuc3R5bGVzLFxuICAgICAgICBfY29udGVudCRodG1sID0gY29udGVudC5odG1sLFxuICAgICAgICBodG1sID0gX2NvbnRlbnQkaHRtbCA9PT0gdm9pZCAwID8gXCJcIiA6IF9jb250ZW50JGh0bWw7XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmNvdmVyICYmICF0aGlzLm9wdGlvbnMubGF6eUxvYWQpIHtcbiAgICAgIHZhciBzcmMgPSBodG1sLm1hdGNoKC88aW1nLio/c3JjXFxzKj1cXHMqKFsnXCJdKSguKz8pXFwxLio/Pi8pO1xuXG4gICAgICBpZiAoc3JjICYmIHNyY1syXSkge1xuICAgICAgICBzdHlsZXMuYmFja2dyb3VuZCA9IFwiY2VudGVyL2NvdmVyIG5vLXJlcGVhdCB1cmwoJ1wiICsgc3JjWzJdICsgXCInKVwiO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBfcHJvdG8zLmdlbmVyYXRlQ2xvbmVzID0gZnVuY3Rpb24gZ2VuZXJhdGVDbG9uZXMoY29udGVudHMpIHtcbiAgICB2YXIgY2xhc3NlcyA9IHRoaXMub3B0aW9ucy5jbGFzc2VzO1xuICAgIHZhciBjb3VudCA9IHRoaXMuZ2V0Q2xvbmVDb3VudCgpO1xuICAgIHZhciBzbGlkZXMgPSBjb250ZW50cy5zbGljZSgpO1xuXG4gICAgd2hpbGUgKHNsaWRlcy5sZW5ndGggPCBjb3VudCkge1xuICAgICAgcHVzaChzbGlkZXMsIHNsaWRlcyk7XG4gICAgfVxuXG4gICAgcHVzaChzbGlkZXMuc2xpY2UoLWNvdW50KS5yZXZlcnNlKCksIHNsaWRlcy5zbGljZSgwLCBjb3VudCkpLmZvckVhY2goZnVuY3Rpb24gKGNvbnRlbnQsIGluZGV4KSB7XG4gICAgICB2YXIgYXR0cnMgPSBhc3NpZ24oe30sIGNvbnRlbnQuYXR0cnMsIHtcbiAgICAgICAgY2xhc3M6IGNvbnRlbnQuYXR0cnMuY2xhc3MgKyBcIiBcIiArIGNsYXNzZXMuY2xvbmVcbiAgICAgIH0pO1xuICAgICAgdmFyIGNsb25lID0gYXNzaWduKHt9LCBjb250ZW50LCB7XG4gICAgICAgIGF0dHJzOiBhdHRyc1xuICAgICAgfSk7XG4gICAgICBpbmRleCA8IGNvdW50ID8gY29udGVudHMudW5zaGlmdChjbG9uZSkgOiBjb250ZW50cy5wdXNoKGNsb25lKTtcbiAgICB9KTtcbiAgfTtcblxuICBfcHJvdG8zLmdldENsb25lQ291bnQgPSBmdW5jdGlvbiBnZXRDbG9uZUNvdW50KCkge1xuICAgIGlmICh0aGlzLmlzTG9vcCgpKSB7XG4gICAgICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcblxuICAgICAgaWYgKG9wdGlvbnMuY2xvbmVzKSB7XG4gICAgICAgIHJldHVybiBvcHRpb25zLmNsb25lcztcbiAgICAgIH1cblxuICAgICAgdmFyIHBlclBhZ2UgPSBtYXguYXBwbHkodm9pZCAwLCB0aGlzLmJyZWFrcG9pbnRzLm1hcChmdW5jdGlvbiAoX3JlZjYpIHtcbiAgICAgICAgdmFyIG9wdGlvbnMyID0gX3JlZjZbMV07XG4gICAgICAgIHJldHVybiBvcHRpb25zMi5wZXJQYWdlO1xuICAgICAgfSkpO1xuICAgICAgcmV0dXJuIHBlclBhZ2UgKiAoKG9wdGlvbnMuZmxpY2tNYXhQYWdlcyB8fCAxKSArIDEpO1xuICAgIH1cblxuICAgIHJldHVybiAwO1xuICB9O1xuXG4gIF9wcm90bzMucmVuZGVyQXJyb3dzID0gZnVuY3Rpb24gcmVuZGVyQXJyb3dzKCkge1xuICAgIHZhciBodG1sID0gXCJcIjtcbiAgICBodG1sICs9IFwiPGRpdiBjbGFzcz1cXFwiXCIgKyB0aGlzLm9wdGlvbnMuY2xhc3Nlcy5hcnJvd3MgKyBcIlxcXCI+XCI7XG4gICAgaHRtbCArPSB0aGlzLnJlbmRlckFycm93KHRydWUpO1xuICAgIGh0bWwgKz0gdGhpcy5yZW5kZXJBcnJvdyhmYWxzZSk7XG4gICAgaHRtbCArPSBcIjwvZGl2PlwiO1xuICAgIHJldHVybiBodG1sO1xuICB9O1xuXG4gIF9wcm90bzMucmVuZGVyQXJyb3cgPSBmdW5jdGlvbiByZW5kZXJBcnJvdyhwcmV2KSB7XG4gICAgdmFyIF90aGlzJG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMsXG4gICAgICAgIGNsYXNzZXMgPSBfdGhpcyRvcHRpb25zLmNsYXNzZXMsXG4gICAgICAgIGkxOG4gPSBfdGhpcyRvcHRpb25zLmkxOG47XG4gICAgdmFyIGF0dHJzID0ge1xuICAgICAgY2xhc3M6IGNsYXNzZXMuYXJyb3cgKyBcIiBcIiArIChwcmV2ID8gY2xhc3Nlcy5wcmV2IDogY2xhc3Nlcy5uZXh0KSxcbiAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICBhcmlhTGFiZWw6IHByZXYgPyBpMThuLnByZXYgOiBpMThuLm5leHRcbiAgICB9O1xuICAgIHJldHVybiBcIjxidXR0b24gXCIgKyB0aGlzLmJ1aWxkQXR0cnMoYXR0cnMpICsgXCI+PHN2ZyB4bWxucz1cXFwiXCIgKyBYTUxfTkFNRV9TUEFDRSArIFwiXFxcIiB2aWV3Qm94PVxcXCIwIDAgXCIgKyBTSVpFICsgXCIgXCIgKyBTSVpFICsgXCJcXFwiIHdpZHRoPVxcXCJcIiArIFNJWkUgKyBcIlxcXCIgaGVpZ2h0PVxcXCJcIiArIFNJWkUgKyBcIlxcXCI+PHBhdGggZD1cXFwiXCIgKyAodGhpcy5vcHRpb25zLmFycm93UGF0aCB8fCBQQVRIKSArIFwiXFxcIiAvPjwvc3ZnPjwvYnV0dG9uPlwiO1xuICB9O1xuXG4gIF9wcm90bzMuaHRtbCA9IGZ1bmN0aW9uIGh0bWwoKSB7XG4gICAgdmFyIF90aGlzJGNvbmZpZyA9IHRoaXMuY29uZmlnLFxuICAgICAgICByb290Q2xhc3MgPSBfdGhpcyRjb25maWcucm9vdENsYXNzLFxuICAgICAgICBsaXN0VGFnID0gX3RoaXMkY29uZmlnLmxpc3RUYWcsXG4gICAgICAgIGFycm93cyA9IF90aGlzJGNvbmZpZy5hcnJvd3MsXG4gICAgICAgIGJlZm9yZVRyYWNrID0gX3RoaXMkY29uZmlnLmJlZm9yZVRyYWNrLFxuICAgICAgICBhZnRlclRyYWNrID0gX3RoaXMkY29uZmlnLmFmdGVyVHJhY2ssXG4gICAgICAgIHNsaWRlciA9IF90aGlzJGNvbmZpZy5zbGlkZXIsXG4gICAgICAgIGJlZm9yZVNsaWRlciA9IF90aGlzJGNvbmZpZy5iZWZvcmVTbGlkZXIsXG4gICAgICAgIGFmdGVyU2xpZGVyID0gX3RoaXMkY29uZmlnLmFmdGVyU2xpZGVyO1xuICAgIHZhciBodG1sID0gXCJcIjtcbiAgICBodG1sICs9IFwiPGRpdiBpZD1cXFwiXCIgKyB0aGlzLmlkICsgXCJcXFwiIGNsYXNzPVxcXCJcIiArIHRoaXMuYnVpbGRDbGFzc2VzKCkgKyBcIiBcIiArIChyb290Q2xhc3MgfHwgXCJcIikgKyBcIlxcXCI+XCI7XG4gICAgaHRtbCArPSBcIjxzdHlsZT5cIiArIHRoaXMuU3R5bGUuYnVpbGQoKSArIFwiPC9zdHlsZT5cIjtcblxuICAgIGlmIChzbGlkZXIpIHtcbiAgICAgIGh0bWwgKz0gYmVmb3JlU2xpZGVyIHx8IFwiXCI7XG4gICAgICBodG1sICs9IFwiPGRpdiBjbGFzcz1cXFwic3BsaWRlX19zbGlkZXJcXFwiPlwiO1xuICAgIH1cblxuICAgIGh0bWwgKz0gYmVmb3JlVHJhY2sgfHwgXCJcIjtcblxuICAgIGlmIChhcnJvd3MpIHtcbiAgICAgIGh0bWwgKz0gdGhpcy5yZW5kZXJBcnJvd3MoKTtcbiAgICB9XG5cbiAgICBodG1sICs9IFwiPGRpdiBjbGFzcz1cXFwic3BsaWRlX190cmFja1xcXCI+XCI7XG4gICAgaHRtbCArPSBcIjxcIiArIGxpc3RUYWcgKyBcIiBjbGFzcz1cXFwic3BsaWRlX19saXN0XFxcIj5cIjtcbiAgICBodG1sICs9IHRoaXMucmVuZGVyU2xpZGVzKCk7XG4gICAgaHRtbCArPSBcIjwvXCIgKyBsaXN0VGFnICsgXCI+XCI7XG4gICAgaHRtbCArPSBcIjwvZGl2PlwiO1xuICAgIGh0bWwgKz0gYWZ0ZXJUcmFjayB8fCBcIlwiO1xuXG4gICAgaWYgKHNsaWRlcikge1xuICAgICAgaHRtbCArPSBcIjwvZGl2PlwiO1xuICAgICAgaHRtbCArPSBhZnRlclNsaWRlciB8fCBcIlwiO1xuICAgIH1cblxuICAgIGh0bWwgKz0gXCI8L2Rpdj5cIjtcbiAgICByZXR1cm4gaHRtbDtcbiAgfTtcblxuICByZXR1cm4gU3BsaWRlUmVuZGVyZXI7XG59KCk7XG5cbmV4cG9ydCB7IENMQVNTRVMsIENMQVNTX0FDVElWRSwgQ0xBU1NfQVJST1csIENMQVNTX0FSUk9XUywgQ0xBU1NfQVJST1dfTkVYVCwgQ0xBU1NfQVJST1dfUFJFViwgQ0xBU1NfQ0xPTkUsIENMQVNTX0NPTlRBSU5FUiwgQ0xBU1NfRk9DVVNfSU4sIENMQVNTX0lOSVRJQUxJWkVELCBDTEFTU19MSVNULCBDTEFTU19MT0FESU5HLCBDTEFTU19ORVhULCBDTEFTU19PVkVSRkxPVywgQ0xBU1NfUEFHSU5BVElPTiwgQ0xBU1NfUEFHSU5BVElPTl9QQUdFLCBDTEFTU19QUkVWLCBDTEFTU19QUk9HUkVTUywgQ0xBU1NfUFJPR1JFU1NfQkFSLCBDTEFTU19ST09ULCBDTEFTU19TTElERSwgQ0xBU1NfU1BJTk5FUiwgQ0xBU1NfU1IsIENMQVNTX1RPR0dMRSwgQ0xBU1NfVE9HR0xFX1BBVVNFLCBDTEFTU19UT0dHTEVfUExBWSwgQ0xBU1NfVFJBQ0ssIENMQVNTX1ZJU0lCTEUsIERFRkFVTFRTLCBFVkVOVF9BQ1RJVkUsIEVWRU5UX0FSUk9XU19NT1VOVEVELCBFVkVOVF9BUlJPV1NfVVBEQVRFRCwgRVZFTlRfQVVUT1BMQVlfUEFVU0UsIEVWRU5UX0FVVE9QTEFZX1BMQVksIEVWRU5UX0FVVE9QTEFZX1BMQVlJTkcsIEVWRU5UX0NMSUNLLCBFVkVOVF9ERVNUUk9ZLCBFVkVOVF9EUkFHLCBFVkVOVF9EUkFHR0VELCBFVkVOVF9EUkFHR0lORywgRVZFTlRfRU5EX0lOREVYX0NIQU5HRUQsIEVWRU5UX0hJRERFTiwgRVZFTlRfSU5BQ1RJVkUsIEVWRU5UX0xBWllMT0FEX0xPQURFRCwgRVZFTlRfTU9VTlRFRCwgRVZFTlRfTU9WRSwgRVZFTlRfTU9WRUQsIEVWRU5UX05BVklHQVRJT05fTU9VTlRFRCwgRVZFTlRfT1ZFUkZMT1csIEVWRU5UX1BBR0lOQVRJT05fTU9VTlRFRCwgRVZFTlRfUEFHSU5BVElPTl9VUERBVEVELCBFVkVOVF9SRUFEWSwgRVZFTlRfUkVGUkVTSCwgRVZFTlRfUkVTSVpFLCBFVkVOVF9SRVNJWkVELCBFVkVOVF9TQ1JPTEwsIEVWRU5UX1NDUk9MTEVELCBFVkVOVF9TSElGVEVELCBFVkVOVF9TTElERV9LRVlET1dOLCBFVkVOVF9VUERBVEVELCBFVkVOVF9WSVNJQkxFLCBFdmVudEJpbmRlciwgRXZlbnRJbnRlcmZhY2UsIEZBREUsIExPT1AsIExUUiwgUlRMLCBSZXF1ZXN0SW50ZXJ2YWwsIFNMSURFLCBTVEFUVVNfQ0xBU1NFUywgU3BsaWRlLCBTcGxpZGVSZW5kZXJlciwgU3RhdGUsIFRUQiwgVGhyb3R0bGUsIFNwbGlkZSBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgUHJvZHVjdE1hbmFnZXIgZnJvbSAnLi9tb2R1bGVzL1Byb2R1Y3RNYW5hZ2VyJzsgLy8gRGF0ZWllbmR1bmcgbmljaHQgbm90d2VuZGlnID9cbmltcG9ydCBTcGxpZGUgZnJvbSAnQHNwbGlkZWpzL3NwbGlkZSc7XG4oKCkgPT4ge1xuICAvLyA9PT0gRE9NICYgVkFSUyA9PT09PT09XG4gIGNvbnN0IERPTSA9IHt9O1xuXG4gIC8vID09PSBJTklUID09PT09PT09PT09PT1cbiAgY29uc3QgaW5pdCA9ICgpID0+IHtcbiAgICBjb25zb2xlLmxvZygnaW5pdCEnKTtcbiAgICAvLyBQcm9kdWN0TWFuYWdlcigpO1xuICAgIHJvdXRlcigpO1xuICB9O1xuXG4gIC8vID09PSBFVkVOVEhBTkRMRVIgPT09PT1cblxuICAvLyA9PT0gWEhSL0ZFVENIID09PT09PT09XG5cbiAgLy8gPT09IEZVTkNUSU9OUyA9PT09PT09PVxuICBjb25zdCByb3V0ZXIgPSAoKSA9PiB7XG4gICAgY29uc3QgcGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcbiAgICBjb25zb2xlLmxvZyhwYXRoKTtcblxuICAgIHN3aXRjaCAocGF0aCkge1xuICAgICAgY2FzZSAnLyc6XG4gICAgICBjYXNlICcvaW5kZXguaHRtbCc6XG4gICAgICAgIGNvbnNvbGUubG9nKCdIT01FJyk7XG4gICAgICAgIG5ldyBTcGxpZGUoJy5zcGxpZGUnLCB7XG4gICAgICAgICAgY292ZXI6IHRydWUsXG4gICAgICAgICAgYXV0b0hlaWdodDogdHJ1ZSxcbiAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICBmaXhlZEhlaWdodDogJzEwMCUnLFxuICAgICAgICB9KS5tb3VudCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJy9wcm9qZWN0cy8wMl9wcm9kdWN0LW1hbmFnZXIuaHRtbCc6XG4gICAgICAgIGNvbnNvbGUubG9nKCdQUk9EVUNUX01BTkFHRVInKTtcbiAgICAgICAgUHJvZHVjdE1hbmFnZXIoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLmxvZygnbm8gc2NyaXB0cyBmb3VuZCcpO1xuICAgIH1cbiAgfTtcblxuICBpbml0KCk7XG59KSgpO1xuIl0sIm5hbWVzIjpbImlzRWxlbWVudCIsImlzSFRNTEVsZW1lbnQiLCJhcHBseVN0eWxlcyIsImVmZmVjdCIsIm1pbiIsImdldENvbXB1dGVkU3R5bGUiLCJtYXRoTWF4IiwibWF0aE1pbiIsImFycm93IiwiY29tcHV0ZVN0eWxlcyIsImhhc2giLCJtYXgiLCJhbGxQbGFjZW1lbnRzIiwicGxhY2VtZW50cyIsImZsaXAiLCJoaWRlIiwib2Zmc2V0IiwicG9wcGVyT2Zmc2V0cyIsInByZXZlbnRPdmVyZmxvdyIsInRoaXMiLCJpZCJdLCJtYXBwaW5ncyI6Ijs7O0VBQUE7RUFDTyxTQUFTLE9BQU8sQ0FBQyxFQUFFLENBQUUsUUFBUSxDQUFFLENBQ3BDLE1BQU0s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RUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3JELENBQ08sd0JBQXdCLENBQUMsR0FBRyxDQUFFLE1BQU0sQ0FBRyxDQUFDLENBQUUsQ0FDN0MsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQzlCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQzFCLEdBQUcsQ0FDSCxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUMxQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUMxQixHQUFHLENBQ0gsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDMUIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDMUIsR0FBRyxDQUNILFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQzFCLEdBQUcsQ0FDSCxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBRyxFQUFFLENBQUMsQ0FBQyxDQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBRyxFQUFFLENBQUMsQ0FBQyxDQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBRyxFQUFFLENBQUMsQ0FBQyxDQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBRyxFQUFFLENBQUMsQ0FBQyxDQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBRyxFQUFFLENB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QUFFLENBQUMsQ0FBRSxDQUFDLENBQUUsU0FBUyxDQUFFLENBQ3hDLElBQUksT0FBTyxDQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUUsQ0FBQyxDQUFDLENBQ3ZCLElBQUksT0FBTyxDQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUUsQ0FBQyxDQUFDLENBQ3ZCLE9BQU8sU0FBUyxDQUFHLE9BQU8sQ0FBRyxNQUFNLEVBQUksTUFBTSxDQUFHLE9BQU8sQ0FBRyxPQUFPLEVBQUksTUFBTSxFQUFJLE1BQU0sRUFBSSxPQUFPLENBQ2xHLENBRUEsU0FBUyxLQUFLLENBQUMsTUFBTSxDQUFFLENBQUMsQ0FBRSxDQUFDLENBQUUsQ0FDM0IsSUFBSSxPQUFPLENBQUcsR0FBRyxDQUFDLENBQUMsQ0FBRSxDQUFDLENBQUMsQ0FDdkIsSUFBSSxPQUFPLENBQUcsR0FBRyxDQUFDLENBQUMsQ0FBRSxDQUFDLENBQUMsQ0FDdkIsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBRSxNQUFNLENBQUMsQ0FBRSxPQUFPLENBQUMsQ0FDM0MsQ0FFQSxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUUsQ0FDZixPQUFPLEVBQUUsQ0FBQyxDQUFHLENBQUMsQ0FBQyxDQUFHLEVBQUUsQ0FBQyxDQUFHLENBQUMsQ0FBQyxDQUM1QixDQU1BLFNBQVMsTUFBTSxDQUFDLE1BQU0sQ0FBRSxZQUFZLENBQUUsQ0FDcEMsT0FBTyxDQUFDLFlBQVksQ0FBRSxTQUFVLFdBQVcsQ0FBRSxDQUMzQyxNQUFNLENBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUUsRUFBRSxDQUFHLFdBQVcsQ0FBQyxDQUNqRCxDQUFDLENBQUMsQ0FDRixPQUFPLE1BQU0sQ0FDZixDQUVBLFNBQVMsR0FBRyxDQUFDLE1BQU0sQ0FBRSxDQUNuQixPQUFPLE1BQU0sQ0FBRyxFQUFFLENBQUcsR0FBRyxDQUFHLE1BQU0sQ0FBRyxFQUFFLENBQUcsTUFBTSxDQUNqRCxDQUVBLElBQUksR0FBRyxDQUFHLEVBQUUsQ0FFWixTQUFTLFFBQVEsQ0FBQyxNQUFNLENB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QUUsQ0FDRCxHQUFHLENBQUUsUUFBUSxDQUNiLEdBQUcsQ0FBRSxTQUFTLEdBQUcsRUFBRyxDQUNsQixXQUFXLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQ3ZDLENBQ0YsQ0FBQyxDQUFFLENBQ0QsR0FBRyxDQUFFLE9BQU8sQ0FDWixHQUFHLENBQUUsU0FBUyxHQUFHLEVBQUcsQ0FDbEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FDdEMsQ0FDRixDQUFDLENBQUMsQ0FBQyxDQUVILE9BQU8sT0FBTyxDQUNoQixDQUFDLEVBQUUsQ0FFSCxJQUFJLE1BQU0sQ0FBRyxPQUFPLENBQ3BCLE1BQU0sQ0FBQyxRQUFRLENBQUcsRUFBRSxDQUNwQixNQUFNLENBQUMsTUFBTSxDQUFHLE1BQU07O0VDL2tHdEIsQ0FBQyxJQUFNO0VBS0wsTUFBTSxJQUFJLENBQUcsSUFBTSxDQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUNwQjtFQUNBLE1BQU0sRUFBRSxDQUNWLENBQUMsQ0FFRDtFQUVBO0VBRUE7RUFDQSxNQUFNLE1BQU0sQ0FBRyxJQUFNLENBQ25CLE1BQU0sSUFBSSxDQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUNyQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUVqQixPQUFRLElBQUksRUFDVixLQUFLLEdBQUcsQ0FDUixLQUFLLGFBQWEsQ0FDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FDbkIsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFFLENBQ3BCLEtBQUssQ0FBRSxJQUFJLENBQ1gsVUFBVSxDQUFFLElBQUksQ0FDaEIsTUFBTSxDQUFFLE1BQU0sQ0FDZCxXQUFXLENBQUUsTUFDZixDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FDVixNQUNGLEtBQUssbUNBQW1DLENBQ3RDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FDOUIsY0FBYyxFQUFFLENBQ2hCLE1BQ0YsUUFDRSxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQ25DLENBQ0YsQ0FBQyxDQUVELElBQUksRUFBRSxDQUNSLENBQUMsR0FBRzs7IiwieF9nb29nbGVfaWdub3JlTGlzdCI6WzEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU4LDU5LDYwLDYyXX0=","sourceRoot":"../dev/scripts"}
\ No newline at end of file
diff --git a/04_browser-api/unterricht/tag27/01_website-api/frontend/assets/map/main.css.map b/04_browser-api/unterricht/tag27/01_website-api/frontend/assets/map/main.css.map
index f5226bd..611617a 100644
--- a/04_browser-api/unterricht/tag27/01_website-api/frontend/assets/map/main.css.map
+++ b/04_browser-api/unterricht/tag27/01_website-api/frontend/assets/map/main.css.map
@@ -1 +1 @@
-{"version":3,"sources":["main.css","01_frameworks/bootstrap-5.3.8/mixins/_banner.scss","04_plugins/_index.scss","01_frameworks/bootstrap-5.3.8/_root.scss","01_frameworks/bootstrap-5.3.8/vendor/_rfs.scss","01_frameworks/bootstrap-5.3.8/mixins/_color-mode.scss","01_frameworks/bootstrap-5.3.8/_reboot.scss","01_frameworks/bootstrap-5.3.8/_variables.scss","01_frameworks/bootstrap-5.3.8/mixins/_border-radius.scss","01_frameworks/bootstrap-5.3.8/_type.scss","01_frameworks/bootstrap-5.3.8/mixins/_lists.scss","01_frameworks/bootstrap-5.3.8/_images.scss","01_frameworks/bootstrap-5.3.8/mixins/_image.scss","01_frameworks/bootstrap-5.3.8/_containers.scss","01_frameworks/bootstrap-5.3.8/mixins/_container.scss","01_frameworks/bootstrap-5.3.8/mixins/_breakpoints.scss","01_frameworks/bootstrap-5.3.8/_grid.scss","01_frameworks/bootstrap-5.3.8/mixins/_grid.scss","01_frameworks/bootstrap-5.3.8/_tables.scss","01_frameworks/bootstrap-5.3.8/mixins/_table-variants.scss","01_frameworks/bootstrap-5.3.8/forms/_labels.scss","01_frameworks/bootstrap-5.3.8/forms/_form-text.scss","01_frameworks/bootstrap-5.3.8/forms/_form-control.scss","01_frameworks/bootstrap-5.3.8/mixins/_transition.scss","01_frameworks/bootstrap-5.3.8/mixins/_gradients.scss","01_frameworks/bootstrap-5.3.8/forms/_form-select.scss","01_frameworks/bootstrap-5.3.8/forms/_form-check.scss","01_frameworks/bootstrap-5.3.8/forms/_form-range.scss","01_frameworks/bootstrap-5.3.8/forms/_floating-labels.scss","01_frameworks/bootstrap-5.3.8/forms/_input-group.scss","01_frameworks/bootstrap-5.3.8/mixins/_forms.scss","01_frameworks/bootstrap-5.3.8/_buttons.scss","01_frameworks/bootstrap-5.3.8/mixins/_buttons.scss","01_frameworks/bootstrap-5.3.8/_transitions.scss","01_frameworks/bootstrap-5.3.8/_dropdown.scss","01_frameworks/bootstrap-5.3.8/mixins/_caret.scss","01_frameworks/bootstrap-5.3.8/_button-group.scss","01_frameworks/bootstrap-5.3.8/_nav.scss","01_frameworks/bootstrap-5.3.8/_navbar.scss","01_frameworks/bootstrap-5.3.8/_card.scss","01_frameworks/bootstrap-5.3.8/_accordion.scss","01_frameworks/bootstrap-5.3.8/_breadcrumb.scss","01_frameworks/bootstrap-5.3.8/_pagination.scss","01_frameworks/bootstrap-5.3.8/mixins/_pagination.scss","01_frameworks/bootstrap-5.3.8/_badge.scss","01_frameworks/bootstrap-5.3.8/_alert.scss","01_frameworks/bootstrap-5.3.8/_progress.scss","01_frameworks/bootstrap-5.3.8/_list-group.scss","01_frameworks/bootstrap-5.3.8/_close.scss","01_frameworks/bootstrap-5.3.8/_toasts.scss","01_frameworks/bootstrap-5.3.8/_modal.scss","01_frameworks/bootstrap-5.3.8/mixins/_backdrop.scss","01_frameworks/bootstrap-5.3.8/_tooltip.scss","01_frameworks/bootstrap-5.3.8/mixins/_reset-text.scss","01_frameworks/bootstrap-5.3.8/_popover.scss","01_frameworks/bootstrap-5.3.8/_carousel.scss","01_frameworks/bootstrap-5.3.8/mixins/_clearfix.scss","01_frameworks/bootstrap-5.3.8/_spinners.scss","01_frameworks/bootstrap-5.3.8/_offcanvas.scss","01_frameworks/bootstrap-5.3.8/_placeholders.scss","01_frameworks/bootstrap-5.3.8/helpers/_color-bg.scss","01_frameworks/bootstrap-5.3.8/helpers/_colored-links.scss","01_frameworks/bootstrap-5.3.8/helpers/_focus-ring.scss","01_frameworks/bootstrap-5.3.8/helpers/_icon-link.scss","01_frameworks/bootstrap-5.3.8/helpers/_ratio.scss","01_frameworks/bootstrap-5.3.8/helpers/_position.scss","01_frameworks/bootstrap-5.3.8/helpers/_stacks.scss","01_frameworks/bootstrap-5.3.8/helpers/_visually-hidden.scss","01_frameworks/bootstrap-5.3.8/mixins/_visually-hidden.scss","01_frameworks/bootstrap-5.3.8/helpers/_stretched-link.scss","01_frameworks/bootstrap-5.3.8/helpers/_text-truncation.scss","01_frameworks/bootstrap-5.3.8/mixins/_text-truncate.scss","01_frameworks/bootstrap-5.3.8/helpers/_vr.scss","01_frameworks/bootstrap-5.3.8/mixins/_utilities.scss","01_frameworks/bootstrap-5.3.8/utilities/_api.scss","02_fonts/_gloria-hallelujah-v24-latin.scss","02_fonts/_lato-v25-latin.scss","02_fonts/_source-sans-3-v19-latin.scss","03_base/_colors.scss","03_base/_theme.scss","03_base/_typography.scss","04_plugins/toastify-1.12/_toastify.scss","05_modules/_chuck-norris-joke.scss","05_modules/_header-main.scss","05_modules/_logo-main.scss","05_modules/_menu-main.scss","05_modules/_product-manager.scss"],"names":[],"mappings":"AAAA,gBAAgB;ACCd;;;;EAAA;ACAM,+EAAA;ACDR;;EASI,kBAAA;EAAA,oBAAA;EAAA,oBAAA;EAAA,kBAAA;EAAA,iBAAA;EAAA,oBAAA;EAAA,oBAAA;EAAA,mBAAA;EAAA,kBAAA;EAAA,kBAAA;EAAA,gBAAA;EAAA,gBAAA;EAAA,kBAAA;EAAA,uBAAA;EAIA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAIA,qBAAA;EAAA,uBAAA;EAAA,qBAAA;EAAA,kBAAA;EAAA,qBAAA;EAAA,oBAAA;EAAA,mBAAA;EAAA,kBAAA;EAIA,8BAAA;EAAA,iCAAA;EAAA,6BAAA;EAAA,2BAAA;EAAA,6BAAA;EAAA,4BAAA;EAAA,6BAAA;EAAA,yBAAA;EAIA,8EAAA;EAAA,iFAAA;EAAA,8EAAA;EAAA,2EAAA;EAAA,mEAAA;EAAA,6EAAA;EAAA,iCAAA;EAAA,gCAAA;EAIA,2EAAA;EAAA,6EAAA;EAAA,2EAAA;EAAA,wEAAA;EAAA,gEAAA;EAAA,0EAAA;EAAA,yEAAA;EAAA,4BAAA;EAIA,+EAAA;EAAA,iFAAA;EAAA,+EAAA;EAAA,4EAAA;EAAA,qEAAA;EAAA,8EAAA;EAAA,iCAAA;EAAA,gCAAA;EAGF,6BAAA;EACA,uBAAA;EAMA,qNAAA;EACA,yGAAA;EACA,yFAAA;EAOA,gDAAA;EC2OI,yBALI;EDpOR,0BAAA;EACA,0BAAA;EAKA,wBAAA;EACA,+BAAA;EACA,kBAAA;EACA,+BAAA;EAEA,yBAAA;EACA,gCAAA;EAEA,4CAAA;EACA,oCAAA;EACA,0BAAA;EACA,oCAAA;EAEA,0CAAA;EACA,mCAAA;EACA,yBAAA;EACA,mCAAA;EAGA,2BAAA;EAEA,wBAAA;EACA,iCAAA;EACA,+BAAA;EAEA,yEAAA;EACA,sCAAA;EAMA,wBAAA;EACA,6BAAA;EACA,2DAAA;EAGA,sBAAA;EACA,wBAAA;EACA,0BAAA;EACA,mDAAA;EAEA,4BAAA;EACA,8BAAA;EACA,6BAAA;EACA,2BAAA;EACA,4BAAA;EACA,mDAAA;EACA,8BAAA;EAGA,kDAAA;EACA,2DAAA;EACA,oDAAA;EACA,2DAAA;EAIA,8BAAA;EACA,6BAAA;EACA,+CAAA;EAIA,8BAAA;EACA,qCAAA;EACA,gCAAA;EACA,uCAAA;AHDF;;AK/GI;EFsHA,kBAAA;EAGA,wBAAA;EACA,kCAAA;EACA,qBAAA;EACA,4BAAA;EAEA,yBAAA;EACA,sCAAA;EAEA,+CAAA;EACA,uCAAA;EACA,0BAAA;EACA,iCAAA;EAEA,6CAAA;EACA,sCAAA;EACA,qEAAA;EACA,gCAAA;EAGE,+EAAA;EAAA,iFAAA;EAAA,+EAAA;EAAA,4EAAA;EAAA,qEAAA;EAAA,8EAAA;EAAA,iCAAA;EAAA,gCAAA;EAIA,yEAAA;EAAA,0EAAA;EAAA,yEAAA;EAAA,uEAAA;EAAA,8DAAA;EAAA,wEAAA;EAAA,6BAAA;EAAA,4BAAA;EAIA,8EAAA;EAAA,iFAAA;EAAA,8EAAA;EAAA,2EAAA;EAAA,mEAAA;EAAA,8EAAA;EAAA,iCAAA;EAAA,gCAAA;EAGF,2BAAA;EAEA,oEAAA;EACA,0EAAA;EACA,kCAAA;EACA,wCAAA;EAEA,yDAAA;EACA,6BAAA;EACA,0DAAA;EAEA,0BAAA;EACA,wDAAA;EAEA,0EAAA;EACA,iFAAA;EACA,4EAAA;EACA,mFAAA;AHDJ;;AMvKA;;;EAGE,sBAAA;AN0KF;;AM3JI;EANJ;IAOM,uBAAA;EN+JJ;AACF;;AMlJA;EACE,SAAA;EACA,uCAAA;EF6OI,mCALI;EEtOR,uCAAA;EACA,uCAAA;EACA,2BAAA;EACA,qCAAA;EACA,mCAAA;EACA,8BAAA;EACA,6CAAA;ANqJF;;AM5IA;EACE,cAAA;EACA,cCmnB4B;EDlnB5B,SAAA;EACA,wCAAA;EACA,aCynB4B;AP1e9B;;AMrIA;EACE,aAAA;EACA,qBCwjB4B;EDrjB5B,gBCwjB4B;EDvjB5B,gBCwjB4B;EDvjB5B,8BAAA;ANsIF;;AMnIA;EFuMQ,iCAAA;AJhER;AI5FI;EE3CJ;IF8MQ,iBAAA;EJnEN;AACF;;AMvIA;EFkMQ,iCAAA;AJvDR;AIrGI;EEtCJ;IFyMQ,eAAA;EJ1DN;AACF;;AM3IA;EF6LQ,+BAAA;AJ9CR;AI9GI;EEjCJ;IFoMQ,kBAAA;EJjDN;AACF;;AM/IA;EFwLQ,iCAAA;AJrCR;AIvHI;EE5BJ;IF+LQ,iBAAA;EJxCN;AACF;;AMnJA;EF+KM,kBALI;AJnBV;;AMlJA;EF0KM,eALI;AJfV;;AM3IA;EACE,aAAA;EACA,mBCwV0B;AP1M5B;;AMpIA;EACE,yCAAA;UAAA,iCAAA;EACA,YAAA;EACA,sCAAA;UAAA,8BAAA;ANuIF;;AMjIA;EACE,mBAAA;EACA,kBAAA;EACA,oBAAA;ANoIF;;AM9HA;;EAEE,kBAAA;ANiIF;;AM9HA;;;EAGE,aAAA;EACA,mBAAA;ANiIF;;AM9HA;;;;EAIE,gBAAA;ANiIF;;AM9HA;EACE,gBC6b4B;AP5T9B;;AM5HA;EACE,qBAAA;EACA,cAAA;AN+HF;;AMzHA;EACE,gBAAA;AN4HF;;AMpHA;;EAEE,mBCsa4B;AP/S9B;;AM/GA;EF6EM,kBALI;AJ2CV;;AM5GA;EACE,iBCqf4B;EDpf5B,gCAAA;EACA,wCAAA;AN+GF;;AMtGA;;EAEE,kBAAA;EFwDI,iBALI;EEjDR,cAAA;EACA,wBAAA;ANyGF;;AMtGA;EAAM,eAAA;AN0GN;;AMzGA;EAAM,WAAA;AN6GN;;AMxGA;EACE,gEAAA;EACA,0BCgNwC;APrG1C;AMzGE;EACE,mDAAA;AN2GJ;;AMhGE;EAEE,cAAA;EACA,qBAAA;ANkGJ;;AM3FA;;;;EAIE,qCCgV4B;EHlUxB,cALI;AJsFV;;AMvFA;EACE,cAAA;EACA,aAAA;EACA,mBAAA;EACA,cAAA;EFEI,kBALI;AJ8FV;AMtFE;EFHI,kBALI;EEUN,cAAA;EACA,kBAAA;ANwFJ;;AMpFA;EFVM,kBALI;EEiBR,2BAAA;EACA,qBAAA;ANuFF;AMpFE;EACE,cAAA;ANsFJ;;AMlFA;EACE,2BAAA;EFtBI,kBALI;EE6BR,wBC25CkC;ED15ClC,sCC25CkC;EChsDhC,sBAAA;AR2XJ;AMnFE;EACE,UAAA;EF7BE,cALI;AJwHV;;AM3EA;EACE,gBAAA;AN8EF;;AMxEA;;EAEE,sBAAA;AN2EF;;AMnEA;EACE,oBAAA;EACA,yBAAA;ANsEF;;AMnEA;EACE,mBC4X4B;ED3X5B,sBC2X4B;ED1X5B,gCC4Z4B;ED3Z5B,gBAAA;ANsEF;;AM/DA;EAEE,mBAAA;EACA,gCAAA;ANiEF;;AM9DA;;;;;;EAME,qBAAA;EACA,mBAAA;EACA,eAAA;ANiEF;;AMzDA;EACE,qBAAA;AN4DF;;AMtDA;EAEE,gBAAA;ANwDF;;AMhDA;EACE,UAAA;ANmDF;;AM9CA;;;;;EAKE,SAAA;EACA,oBAAA;EF5HI,kBALI;EEmIR,oBAAA;ANiDF;;AM7CA;;EAEE,oBAAA;ANgDF;;AM3CA;EACE,eAAA;AN8CF;;AM3CA;EAGE,iBAAA;AN4CF;AMzCE;EACE,UAAA;AN2CJ;;AMpCA;EACE,wBAAA;ANuCF;;AM/BA;;;;EAIE,0BAAA;ANkCF;AM/BI;;;;EACE,eAAA;ANoCN;;AM7BA;EACE,UAAA;EACA,kBAAA;ANgCF;;AM3BA;EACE,gBAAA;AN8BF;;AMpBA;EACE,YAAA;EACA,UAAA;EACA,SAAA;EACA,SAAA;ANuBF;;AMfA;EACE,WAAA;EACA,WAAA;EACA,UAAA;EACA,qBCmN4B;EDjN5B,oBAAA;EFnNM,iCAAA;AJqOR;AIjYI;EEyWJ;IFtMQ,iBAAA;EJkON;AACF;AMpBE;EACE,WAAA;ANsBJ;;AMfA;;;;;;;EAOE,UAAA;ANkBF;;AMfA;EACE,YAAA;ANkBF;;AMTA;EACE,6BAAA;EACA,oBAAA;ANYF;AMTE;EACE,eAAA;EACA,oBAAA;ANWJ;;AMFA;;;;;;;CAAA;AAWA;EACE,wBAAA;ANEF;;AMGA;EACE,UAAA;ANAF;;AMOA;EACE,aAAA;EACA,0BAAA;ANJF;;AMSA;EACE,qBAAA;ANNF;;AMWA;EACE,SAAA;ANRF;;AMeA;EACE,kBAAA;EACA,eAAA;ANZF;;AMoBA;EACE,wBAAA;ANjBF;;AMyBA;EACE,wBAAA;ANtBF;;ASrjBA;ELmQM,kBALI;EK5PR,gBFwoB4B;APhF9B;;ASnjBE;EAGE,gBF0nBkB;EEznBlB,gBFymB0B;EH7WtB,iCAAA;AJyTR;AIrdI;EKpGF;ILuQM,eAAA;EJsTN;AACF;;AS9jBE;EAGE,gBF0nBkB;EEznBlB,gBFymB0B;EH7WtB,iCAAA;AJoUR;AIheI;EKpGF;ILuQM,iBAAA;EJiUN;AACF;;ASzkBE;EAGE,gBF0nBkB;EEznBlB,gBFymB0B;EH7WtB,iCAAA;AJ+UR;AI3eI;EKpGF;ILuQM,eAAA;EJ4UN;AACF;;ASplBE;EAGE,gBF0nBkB;EEznBlB,gBFymB0B;EH7WtB,iCAAA;AJ0VR;AItfI;EKpGF;ILuQM,iBAAA;EJuVN;AACF;;AS/lBE;EAGE,gBF0nBkB;EEznBlB,gBFymB0B;EH7WtB,iCAAA;AJqWR;AIjgBI;EKpGF;ILuQM,eAAA;EJkWN;AACF;;AS1mBE;EAGE,gBF0nBkB;EEznBlB,gBFymB0B;EH7WtB,iCAAA;AJgXR;AI5gBI;EKpGF;ILuQM,iBAAA;EJ6WN;AACF;;AS7lBA;ECvDE,eAAA;EACA,gBAAA;AVwpBF;;AS7lBA;EC5DE,eAAA;EACA,gBAAA;AV6pBF;;AS/lBA;EACE,qBAAA;ATkmBF;AShmBE;EACE,oBFsoB0B;APpC9B;;ASxlBA;EL8MM,kBALI;EKvMR,yBAAA;AT2lBF;;ASvlBA;EACE,mBFiUO;EH1HH,kBALI;AJyZV;ASxlBE;EACE,gBAAA;AT0lBJ;;AStlBA;EACE,iBAAA;EACA,mBFuTO;EH1HH,kBALI;EKtLR,cFtFS;AP+qBX;ASvlBE;EACE,aAAA;ATylBJ;;AWzrBA;ECIE,eAAA;EAGA,YAAA;AZurBF;;AWxrBA;EACE,gBJ+jDkC;EI9jDlC,mCJ+jDkC;EI9jDlC,2DAAA;EHGE,sCAAA;EIRF,eAAA;EAGA,YAAA;AZgsBF;;AWlrBA;EAEE,qBAAA;AXorBF;;AWjrBA;EACE,qBAAA;EACA,cAAA;AXorBF;;AWjrBA;EPyPM,kBALI;EOlPR,gCJkjDkC;AP93BpC;;AattBE;;;;;;;ECHA,qBAAA;EACA,gBAAA;EACA,WAAA;EACA,6CAAA;EACA,4CAAA;EACA,kBAAA;EACA,iBAAA;AdmuBF;;Ae7qBI;EF5CE;IACE,gBNkee;EP2PrB;AACF;AenrBI;EF5CE;IACE,gBNkee;EPgQrB;AACF;AexrBI;EF5CE;IACE,gBNkee;EPqQrB;AACF;Ae7rBI;EF5CE;IACE,iBNkee;EP0QrB;AACF;AelsBI;EF5CE;IACE,iBNkee;EP+QrB;AACF;AgBlwBA;EAEI,qBAAA;EAAA,yBAAA;EAAA,yBAAA;EAAA,yBAAA;EAAA,0BAAA;EAAA,2BAAA;AhBwwBJ;;AgBnwBE;ECNA,qBAAA;EACA,gBAAA;EACA,aAAA;EACA,eAAA;EAEA,yCAAA;EACA,6CAAA;EACA,4CAAA;AjB4wBF;AgB1wBI;ECOF,cAAA;EACA,WAAA;EACA,eAAA;EACA,6CAAA;EACA,4CAAA;EACA,8BAAA;AjBswBF;;AiBvtBM;EACE,WAAA;AjB0tBR;;AiBvtBM;EApCJ,cAAA;EACA,WAAA;AjB+vBF;;AiBjvBE;EACE,cAAA;EACA,WAAA;AjBovBJ;;AiBtvBE;EACE,cAAA;EACA,UAAA;AjByvBJ;;AiB3vBE;EACE,cAAA;EACA,mBAAA;AjB8vBJ;;AiBhwBE;EACE,cAAA;EACA,UAAA;AjBmwBJ;;AiBrwBE;EACE,cAAA;EACA,UAAA;AjBwwBJ;;AiB1wBE;EACE,cAAA;EACA,mBAAA;AjB6wBJ;;AiB9uBM;EAhDJ,cAAA;EACA,WAAA;AjBkyBF;;AiB7uBU;EAhEN,cAAA;EACA,kBAAA;AjBizBJ;;AiBlvBU;EAhEN,cAAA;EACA,mBAAA;AjBszBJ;;AiBvvBU;EAhEN,cAAA;EACA,UAAA;AjB2zBJ;;AiB5vBU;EAhEN,cAAA;EACA,mBAAA;AjBg0BJ;;AiBjwBU;EAhEN,cAAA;EACA,mBAAA;AjBq0BJ;;AiBtwBU;EAhEN,cAAA;EACA,UAAA;AjB00BJ;;AiB3wBU;EAhEN,cAAA;EACA,mBAAA;AjB+0BJ;;AiBhxBU;EAhEN,cAAA;EACA,mBAAA;AjBo1BJ;;AiBrxBU;EAhEN,cAAA;EACA,UAAA;AjBy1BJ;;AiB1xBU;EAhEN,cAAA;EACA,mBAAA;AjB81BJ;;AiB/xBU;EAhEN,cAAA;EACA,mBAAA;AjBm2BJ;;AiBpyBU;EAhEN,cAAA;EACA,WAAA;AjBw2BJ;;AiBjyBY;EAxDV,wBAAA;AjB61BF;;AiBryBY;EAxDV,yBAAA;AjBi2BF;;AiBzyBY;EAxDV,gBAAA;AjBq2BF;;AiB7yBY;EAxDV,yBAAA;AjBy2BF;;AiBjzBY;EAxDV,yBAAA;AjB62BF;;AiBrzBY;EAxDV,gBAAA;AjBi3BF;;AiBzzBY;EAxDV,yBAAA;AjBq3BF;;AiB7zBY;EAxDV,yBAAA;AjBy3BF;;AiBj0BY;EAxDV,gBAAA;AjB63BF;;AiBr0BY;EAxDV,yBAAA;AjBi4BF;;AiBz0BY;EAxDV,yBAAA;AjBq4BF;;AiBl0BQ;;EAEE,gBAAA;AjBq0BV;;AiBl0BQ;;EAEE,gBAAA;AjBq0BV;;AiB50BQ;;EAEE,sBAAA;AjB+0BV;;AiB50BQ;;EAEE,sBAAA;AjB+0BV;;AiBt1BQ;;EAEE,qBAAA;AjBy1BV;;AiBt1BQ;;EAEE,qBAAA;AjBy1BV;;AiBh2BQ;;EAEE,mBAAA;AjBm2BV;;AiBh2BQ;;EAEE,mBAAA;AjBm2BV;;AiB12BQ;;EAEE,qBAAA;AjB62BV;;AiB12BQ;;EAEE,qBAAA;AjB62BV;;AiBp3BQ;;EAEE,mBAAA;AjBu3BV;;AiBp3BQ;;EAEE,mBAAA;AjBu3BV;;Aej7BI;EEUE;IACE,WAAA;EjB26BN;EiBx6BI;IApCJ,cAAA;IACA,WAAA;EjB+8BA;EiBj8BA;IACE,cAAA;IACA,WAAA;EjBm8BF;EiBr8BA;IACE,cAAA;IACA,UAAA;EjBu8BF;EiBz8BA;IACE,cAAA;IACA,mBAAA;EjB28BF;EiB78BA;IACE,cAAA;IACA,UAAA;EjB+8BF;EiBj9BA;IACE,cAAA;IACA,UAAA;EjBm9BF;EiBr9BA;IACE,cAAA;IACA,mBAAA;EjBu9BF;EiBx7BI;IAhDJ,cAAA;IACA,WAAA;EjB2+BA;EiBt7BQ;IAhEN,cAAA;IACA,kBAAA;EjBy/BF;EiB17BQ;IAhEN,cAAA;IACA,mBAAA;EjB6/BF;EiB97BQ;IAhEN,cAAA;IACA,UAAA;EjBigCF;EiBl8BQ;IAhEN,cAAA;IACA,mBAAA;EjBqgCF;EiBt8BQ;IAhEN,cAAA;IACA,mBAAA;EjBygCF;EiB18BQ;IAhEN,cAAA;IACA,UAAA;EjB6gCF;EiB98BQ;IAhEN,cAAA;IACA,mBAAA;EjBihCF;EiBl9BQ;IAhEN,cAAA;IACA,mBAAA;EjBqhCF;EiBt9BQ;IAhEN,cAAA;IACA,UAAA;EjByhCF;EiB19BQ;IAhEN,cAAA;IACA,mBAAA;EjB6hCF;EiB99BQ;IAhEN,cAAA;IACA,mBAAA;EjBiiCF;EiBl+BQ;IAhEN,cAAA;IACA,WAAA;EjBqiCF;EiB99BU;IAxDV,cAAA;EjByhCA;EiBj+BU;IAxDV,wBAAA;EjB4hCA;EiBp+BU;IAxDV,yBAAA;EjB+hCA;EiBv+BU;IAxDV,gBAAA;EjBkiCA;EiB1+BU;IAxDV,yBAAA;EjBqiCA;EiB7+BU;IAxDV,yBAAA;EjBwiCA;EiBh/BU;IAxDV,gBAAA;EjB2iCA;EiBn/BU;IAxDV,yBAAA;EjB8iCA;EiBt/BU;IAxDV,yBAAA;EjBijCA;EiBz/BU;IAxDV,gBAAA;EjBojCA;EiB5/BU;IAxDV,yBAAA;EjBujCA;EiB//BU;IAxDV,yBAAA;EjB0jCA;EiBv/BM;;IAEE,gBAAA;EjBy/BR;EiBt/BM;;IAEE,gBAAA;EjBw/BR;EiB//BM;;IAEE,sBAAA;EjBigCR;EiB9/BM;;IAEE,sBAAA;EjBggCR;EiBvgCM;;IAEE,qBAAA;EjBygCR;EiBtgCM;;IAEE,qBAAA;EjBwgCR;EiB/gCM;;IAEE,mBAAA;EjBihCR;EiB9gCM;;IAEE,mBAAA;EjBghCR;EiBvhCM;;IAEE,qBAAA;EjByhCR;EiBthCM;;IAEE,qBAAA;EjBwhCR;EiB/hCM;;IAEE,mBAAA;EjBiiCR;EiB9hCM;;IAEE,mBAAA;EjBgiCR;AACF;Ae3lCI;EEUE;IACE,WAAA;EjBolCN;EiBjlCI;IApCJ,cAAA;IACA,WAAA;EjBwnCA;EiB1mCA;IACE,cAAA;IACA,WAAA;EjB4mCF;EiB9mCA;IACE,cAAA;IACA,UAAA;EjBgnCF;EiBlnCA;IACE,cAAA;IACA,mBAAA;EjBonCF;EiBtnCA;IACE,cAAA;IACA,UAAA;EjBwnCF;EiB1nCA;IACE,cAAA;IACA,UAAA;EjB4nCF;EiB9nCA;IACE,cAAA;IACA,mBAAA;EjBgoCF;EiBjmCI;IAhDJ,cAAA;IACA,WAAA;EjBopCA;EiB/lCQ;IAhEN,cAAA;IACA,kBAAA;EjBkqCF;EiBnmCQ;IAhEN,cAAA;IACA,mBAAA;EjBsqCF;EiBvmCQ;IAhEN,cAAA;IACA,UAAA;EjB0qCF;EiB3mCQ;IAhEN,cAAA;IACA,mBAAA;EjB8qCF;EiB/mCQ;IAhEN,cAAA;IACA,mBAAA;EjBkrCF;EiBnnCQ;IAhEN,cAAA;IACA,UAAA;EjBsrCF;EiBvnCQ;IAhEN,cAAA;IACA,mBAAA;EjB0rCF;EiB3nCQ;IAhEN,cAAA;IACA,mBAAA;EjB8rCF;EiB/nCQ;IAhEN,cAAA;IACA,UAAA;EjBksCF;EiBnoCQ;IAhEN,cAAA;IACA,mBAAA;EjBssCF;EiBvoCQ;IAhEN,cAAA;IACA,mBAAA;EjB0sCF;EiB3oCQ;IAhEN,cAAA;IACA,WAAA;EjB8sCF;EiBvoCU;IAxDV,cAAA;EjBksCA;EiB1oCU;IAxDV,wBAAA;EjBqsCA;EiB7oCU;IAxDV,yBAAA;EjBwsCA;EiBhpCU;IAxDV,gBAAA;EjB2sCA;EiBnpCU;IAxDV,yBAAA;EjB8sCA;EiBtpCU;IAxDV,yBAAA;EjBitCA;EiBzpCU;IAxDV,gBAAA;EjBotCA;EiB5pCU;IAxDV,yBAAA;EjButCA;EiB/pCU;IAxDV,yBAAA;EjB0tCA;EiBlqCU;IAxDV,gBAAA;EjB6tCA;EiBrqCU;IAxDV,yBAAA;EjBguCA;EiBxqCU;IAxDV,yBAAA;EjBmuCA;EiBhqCM;;IAEE,gBAAA;EjBkqCR;EiB/pCM;;IAEE,gBAAA;EjBiqCR;EiBxqCM;;IAEE,sBAAA;EjB0qCR;EiBvqCM;;IAEE,sBAAA;EjByqCR;EiBhrCM;;IAEE,qBAAA;EjBkrCR;EiB/qCM;;IAEE,qBAAA;EjBirCR;EiBxrCM;;IAEE,mBAAA;EjB0rCR;EiBvrCM;;IAEE,mBAAA;EjByrCR;EiBhsCM;;IAEE,qBAAA;EjBksCR;EiB/rCM;;IAEE,qBAAA;EjBisCR;EiBxsCM;;IAEE,mBAAA;EjB0sCR;EiBvsCM;;IAEE,mBAAA;EjBysCR;AACF;AepwCI;EEUE;IACE,WAAA;EjB6vCN;EiB1vCI;IApCJ,cAAA;IACA,WAAA;EjBiyCA;EiBnxCA;IACE,cAAA;IACA,WAAA;EjBqxCF;EiBvxCA;IACE,cAAA;IACA,UAAA;EjByxCF;EiB3xCA;IACE,cAAA;IACA,mBAAA;EjB6xCF;EiB/xCA;IACE,cAAA;IACA,UAAA;EjBiyCF;EiBnyCA;IACE,cAAA;IACA,UAAA;EjBqyCF;EiBvyCA;IACE,cAAA;IACA,mBAAA;EjByyCF;EiB1wCI;IAhDJ,cAAA;IACA,WAAA;EjB6zCA;EiBxwCQ;IAhEN,cAAA;IACA,kBAAA;EjB20CF;EiB5wCQ;IAhEN,cAAA;IACA,mBAAA;EjB+0CF;EiBhxCQ;IAhEN,cAAA;IACA,UAAA;EjBm1CF;EiBpxCQ;IAhEN,cAAA;IACA,mBAAA;EjBu1CF;EiBxxCQ;IAhEN,cAAA;IACA,mBAAA;EjB21CF;EiB5xCQ;IAhEN,cAAA;IACA,UAAA;EjB+1CF;EiBhyCQ;IAhEN,cAAA;IACA,mBAAA;EjBm2CF;EiBpyCQ;IAhEN,cAAA;IACA,mBAAA;EjBu2CF;EiBxyCQ;IAhEN,cAAA;IACA,UAAA;EjB22CF;EiB5yCQ;IAhEN,cAAA;IACA,mBAAA;EjB+2CF;EiBhzCQ;IAhEN,cAAA;IACA,mBAAA;EjBm3CF;EiBpzCQ;IAhEN,cAAA;IACA,WAAA;EjBu3CF;EiBhzCU;IAxDV,cAAA;EjB22CA;EiBnzCU;IAxDV,wBAAA;EjB82CA;EiBtzCU;IAxDV,yBAAA;EjBi3CA;EiBzzCU;IAxDV,gBAAA;EjBo3CA;EiB5zCU;IAxDV,yBAAA;EjBu3CA;EiB/zCU;IAxDV,yBAAA;EjB03CA;EiBl0CU;IAxDV,gBAAA;EjB63CA;EiBr0CU;IAxDV,yBAAA;EjBg4CA;EiBx0CU;IAxDV,yBAAA;EjBm4CA;EiB30CU;IAxDV,gBAAA;EjBs4CA;EiB90CU;IAxDV,yBAAA;EjBy4CA;EiBj1CU;IAxDV,yBAAA;EjB44CA;EiBz0CM;;IAEE,gBAAA;EjB20CR;EiBx0CM;;IAEE,gBAAA;EjB00CR;EiBj1CM;;IAEE,sBAAA;EjBm1CR;EiBh1CM;;IAEE,sBAAA;EjBk1CR;EiBz1CM;;IAEE,qBAAA;EjB21CR;EiBx1CM;;IAEE,qBAAA;EjB01CR;EiBj2CM;;IAEE,mBAAA;EjBm2CR;EiBh2CM;;IAEE,mBAAA;EjBk2CR;EiBz2CM;;IAEE,qBAAA;EjB22CR;EiBx2CM;;IAEE,qBAAA;EjB02CR;EiBj3CM;;IAEE,mBAAA;EjBm3CR;EiBh3CM;;IAEE,mBAAA;EjBk3CR;AACF;Ae76CI;EEUE;IACE,WAAA;EjBs6CN;EiBn6CI;IApCJ,cAAA;IACA,WAAA;EjB08CA;EiB57CA;IACE,cAAA;IACA,WAAA;EjB87CF;EiBh8CA;IACE,cAAA;IACA,UAAA;EjBk8CF;EiBp8CA;IACE,cAAA;IACA,mBAAA;EjBs8CF;EiBx8CA;IACE,cAAA;IACA,UAAA;EjB08CF;EiB58CA;IACE,cAAA;IACA,UAAA;EjB88CF;EiBh9CA;IACE,cAAA;IACA,mBAAA;EjBk9CF;EiBn7CI;IAhDJ,cAAA;IACA,WAAA;EjBs+CA;EiBj7CQ;IAhEN,cAAA;IACA,kBAAA;EjBo/CF;EiBr7CQ;IAhEN,cAAA;IACA,mBAAA;EjBw/CF;EiBz7CQ;IAhEN,cAAA;IACA,UAAA;EjB4/CF;EiB77CQ;IAhEN,cAAA;IACA,mBAAA;EjBggDF;EiBj8CQ;IAhEN,cAAA;IACA,mBAAA;EjBogDF;EiBr8CQ;IAhEN,cAAA;IACA,UAAA;EjBwgDF;EiBz8CQ;IAhEN,cAAA;IACA,mBAAA;EjB4gDF;EiB78CQ;IAhEN,cAAA;IACA,mBAAA;EjBghDF;EiBj9CQ;IAhEN,cAAA;IACA,UAAA;EjBohDF;EiBr9CQ;IAhEN,cAAA;IACA,mBAAA;EjBwhDF;EiBz9CQ;IAhEN,cAAA;IACA,mBAAA;EjB4hDF;EiB79CQ;IAhEN,cAAA;IACA,WAAA;EjBgiDF;EiBz9CU;IAxDV,cAAA;EjBohDA;EiB59CU;IAxDV,wBAAA;EjBuhDA;EiB/9CU;IAxDV,yBAAA;EjB0hDA;EiBl+CU;IAxDV,gBAAA;EjB6hDA;EiBr+CU;IAxDV,yBAAA;EjBgiDA;EiBx+CU;IAxDV,yBAAA;EjBmiDA;EiB3+CU;IAxDV,gBAAA;EjBsiDA;EiB9+CU;IAxDV,yBAAA;EjByiDA;EiBj/CU;IAxDV,yBAAA;EjB4iDA;EiBp/CU;IAxDV,gBAAA;EjB+iDA;EiBv/CU;IAxDV,yBAAA;EjBkjDA;EiB1/CU;IAxDV,yBAAA;EjBqjDA;EiBl/CM;;IAEE,gBAAA;EjBo/CR;EiBj/CM;;IAEE,gBAAA;EjBm/CR;EiB1/CM;;IAEE,sBAAA;EjB4/CR;EiBz/CM;;IAEE,sBAAA;EjB2/CR;EiBlgDM;;IAEE,qBAAA;EjBogDR;EiBjgDM;;IAEE,qBAAA;EjBmgDR;EiB1gDM;;IAEE,mBAAA;EjB4gDR;EiBzgDM;;IAEE,mBAAA;EjB2gDR;EiBlhDM;;IAEE,qBAAA;EjBohDR;EiBjhDM;;IAEE,qBAAA;EjBmhDR;EiB1hDM;;IAEE,mBAAA;EjB4hDR;EiBzhDM;;IAEE,mBAAA;EjB2hDR;AACF;AetlDI;EEUE;IACE,WAAA;EjB+kDN;EiB5kDI;IApCJ,cAAA;IACA,WAAA;EjBmnDA;EiBrmDA;IACE,cAAA;IACA,WAAA;EjBumDF;EiBzmDA;IACE,cAAA;IACA,UAAA;EjB2mDF;EiB7mDA;IACE,cAAA;IACA,mBAAA;EjB+mDF;EiBjnDA;IACE,cAAA;IACA,UAAA;EjBmnDF;EiBrnDA;IACE,cAAA;IACA,UAAA;EjBunDF;EiBznDA;IACE,cAAA;IACA,mBAAA;EjB2nDF;EiB5lDI;IAhDJ,cAAA;IACA,WAAA;EjB+oDA;EiB1lDQ;IAhEN,cAAA;IACA,kBAAA;EjB6pDF;EiB9lDQ;IAhEN,cAAA;IACA,mBAAA;EjBiqDF;EiBlmDQ;IAhEN,cAAA;IACA,UAAA;EjBqqDF;EiBtmDQ;IAhEN,cAAA;IACA,mBAAA;EjByqDF;EiB1mDQ;IAhEN,cAAA;IACA,mBAAA;EjB6qDF;EiB9mDQ;IAhEN,cAAA;IACA,UAAA;EjBirDF;EiBlnDQ;IAhEN,cAAA;IACA,mBAAA;EjBqrDF;EiBtnDQ;IAhEN,cAAA;IACA,mBAAA;EjByrDF;EiB1nDQ;IAhEN,cAAA;IACA,UAAA;EjB6rDF;EiB9nDQ;IAhEN,cAAA;IACA,mBAAA;EjBisDF;EiBloDQ;IAhEN,cAAA;IACA,mBAAA;EjBqsDF;EiBtoDQ;IAhEN,cAAA;IACA,WAAA;EjBysDF;EiBloDU;IAxDV,cAAA;EjB6rDA;EiBroDU;IAxDV,wBAAA;EjBgsDA;EiBxoDU;IAxDV,yBAAA;EjBmsDA;EiB3oDU;IAxDV,gBAAA;EjBssDA;EiB9oDU;IAxDV,yBAAA;EjBysDA;EiBjpDU;IAxDV,yBAAA;EjB4sDA;EiBppDU;IAxDV,gBAAA;EjB+sDA;EiBvpDU;IAxDV,yBAAA;EjBktDA;EiB1pDU;IAxDV,yBAAA;EjBqtDA;EiB7pDU;IAxDV,gBAAA;EjBwtDA;EiBhqDU;IAxDV,yBAAA;EjB2tDA;EiBnqDU;IAxDV,yBAAA;EjB8tDA;EiB3pDM;;IAEE,gBAAA;EjB6pDR;EiB1pDM;;IAEE,gBAAA;EjB4pDR;EiBnqDM;;IAEE,sBAAA;EjBqqDR;EiBlqDM;;IAEE,sBAAA;EjBoqDR;EiB3qDM;;IAEE,qBAAA;EjB6qDR;EiB1qDM;;IAEE,qBAAA;EjB4qDR;EiBnrDM;;IAEE,mBAAA;EjBqrDR;EiBlrDM;;IAEE,mBAAA;EjBorDR;EiB3rDM;;IAEE,qBAAA;EjB6rDR;EiB1rDM;;IAEE,qBAAA;EjB4rDR;EiBnsDM;;IAEE,mBAAA;EjBqsDR;EiBlsDM;;IAEE,mBAAA;EjBosDR;AACF;AkB1zDA;EAEE,8BAAA;EACA,2BAAA;EACA,+BAAA;EACA,4BAAA;EAEA,0CAAA;EACA,gCAAA;EACA,+CAAA;EACA,iCAAA;EACA,kDAAA;EACA,+DAAA;EACA,iDAAA;EACA,6DAAA;EACA,gDAAA;EACA,8DAAA;EAEA,WAAA;EACA,mBXkYO;EWjYP,mBXusB4B;EWtsB5B,0CAAA;AlByzDF;AkBlzDE;EACE,sBAAA;EAEA,qFAAA;EACA,oCAAA;EACA,2CX+sB0B;EW9sB1B,2GAAA;AlBmzDJ;AkBhzDE;EACE,uBAAA;AlBkzDJ;AkB/yDE;EACE,sBAAA;AlBizDJ;;AkB7yDA;EACE,+DAAA;AlBgzDF;;AkBzyDA;EACE,iBAAA;AlB4yDF;;AkBlyDE;EACE,wBAAA;AlBqyDJ;;AkBtxDE;EACE,sCAAA;AlByxDJ;AkBtxDI;EACE,sCAAA;AlBwxDN;;AkBjxDE;EACE,sBAAA;AlBoxDJ;AkBjxDE;EACE,mBAAA;AlBmxDJ;;AkBzwDE;EACE,oDAAA;EACA,8CAAA;AlB4wDJ;;AkBtwDE;EACE,oDAAA;EACA,8CAAA;AlBywDJ;;AkBjwDA;EACE,oDAAA;EACA,8CAAA;AlBowDF;;AkB5vDE;EACE,mDAAA;EACA,6CAAA;AlB+vDJ;;AmB34DE;EAOE,sBAAA;EACA,kEAAA;EACA,4EAAA;EACA,yEAAA;EACA,8BAAA;EACA,yEAAA;EACA,6BAAA;EACA,wEAAA;EACA,4BAAA;EAEA,4BAAA;EACA,0CAAA;AnBu4DJ;;AmBz5DE;EAOE,sBAAA;EACA,kEAAA;EACA,4EAAA;EACA,0EAAA;EACA,8BAAA;EACA,yEAAA;EACA,6BAAA;EACA,uEAAA;EACA,4BAAA;EAEA,4BAAA;EACA,0CAAA;AnBq5DJ;;AmBv6DE;EAOE,sBAAA;EACA,kEAAA;EACA,2EAAA;EACA,yEAAA;EACA,8BAAA;EACA,yEAAA;EACA,6BAAA;EACA,wEAAA;EACA,4BAAA;EAEA,4BAAA;EACA,0CAAA;AnBm6DJ;;AmBr7DE;EAOE,sBAAA;EACA,kEAAA;EACA,4EAAA;EACA,yEAAA;EACA,8BAAA;EACA,yEAAA;EACA,6BAAA;EACA,wEAAA;EACA,4BAAA;EAEA,4BAAA;EACA,0CAAA;AnBi7DJ;;AmBn8DE;EAOE,sBAAA;EACA,uDAAA;EACA,iEAAA;EACA,+DAAA;EACA,8BAAA;EACA,8DAAA;EACA,6BAAA;EACA,+DAAA;EACA,4BAAA;EAEA,4BAAA;EACA,0CAAA;AnB+7DJ;;AmBj9DE;EAOE,sBAAA;EACA,kEAAA;EACA,4EAAA;EACA,0EAAA;EACA,8BAAA;EACA,yEAAA;EACA,6BAAA;EACA,wEAAA;EACA,4BAAA;EAEA,4BAAA;EACA,0CAAA;AnB68DJ;;AmB/9DE;EAOE,sBAAA;EACA,sBAAA;EACA,2EAAA;EACA,yEAAA;EACA,8BAAA;EACA,yEAAA;EACA,6BAAA;EACA,wEAAA;EACA,4BAAA;EAEA,4BAAA;EACA,0CAAA;AnB29DJ;;AmB7+DE;EAOE,sBAAA;EACA,sBAAA;EACA,2EAAA;EACA,0EAAA;EACA,8BAAA;EACA,yEAAA;EACA,6BAAA;EACA,wEAAA;EACA,4BAAA;EAEA,4BAAA;EACA,0CAAA;AnBy+DJ;;AkBx1DI;EACE,gBAAA;EACA,iCAAA;AlB21DN;;Aet7DI;EGyFA;IACE,gBAAA;IACA,iCAAA;ElBi2DJ;AACF;Ae77DI;EGyFA;IACE,gBAAA;IACA,iCAAA;ElBu2DJ;AACF;Aen8DI;EGyFA;IACE,gBAAA;IACA,iCAAA;ElB62DJ;AACF;Aez8DI;EGyFA;IACE,gBAAA;IACA,iCAAA;ElBm3DJ;AACF;Ae/8DI;EGyFA;IACE,gBAAA;IACA,iCAAA;ElBy3DJ;AACF;AoB7hEA;EACE,qBbu2BsC;APwrCxC;;AoBthEA;EACE,oDAAA;EACA,uDAAA;EACA,gBAAA;EhB8QI,kBALI;EgBrQR,gBb+lB4B;APw7C9B;;AoBnhEA;EACE,kDAAA;EACA,qDAAA;EhBoQI,kBALI;AJwxDV;;AoBnhEA;EACE,mDAAA;EACA,sDAAA;EhB8PI,mBALI;AJ8xDV;;AqBpjEA;EACE,mBd+1BsC;EHrkBlC,kBALI;EiBjRR,gCd+1BsC;APstCxC;;AsB1jEA;EACE,cAAA;EACA,WAAA;EACA,yBAAA;ElBwRI,eALI;EkBhRR,gBfkmB4B;EejmB5B,gBfymB4B;EexmB5B,2Bf43BsC;Ee33BtC,wBAAA;KAAA,qBAAA;UAAA,gBAAA;EACA,mCfq3BsC;Eep3BtC,4BAAA;EACA,2DAAA;EdGE,sCAAA;EeHE,wEDMJ;AtBwjEF;AuB1jEM;EDhBN;ICiBQ,gBAAA;EvB6jEN;AACF;AsB3jEE;EACE,gBAAA;AtB6jEJ;AsB3jEI;EACE,eAAA;AtB6jEN;AsBxjEE;EACE,2Bfs2BoC;Eer2BpC,mCfg2BoC;Ee/1BpC,gEf82BoC;Ee72BpC,UAAA;EAKE,kDfkhBkB;APoiDxB;AsBljEE;EAME,eAAA;EAMA,aAAA;EAKA,SAAA;AtBsiEJ;AsBjiEE;EACE,cAAA;EACA,UAAA;AtBmiEJ;AsB/hEE;EACE,gCf40BoC;Ee10BpC,UAAA;AtBgiEJ;AsBniEE;EACE,gCf40BoC;Ee10BpC,UAAA;AtBgiEJ;AsBxhEE;EAEE,wCf8yBoC;Ee3yBpC,UAAA;AtBuhEJ;AsBnhEE;EACE,yBAAA;EACA,0BAAA;EACA,0BforB0B;EenrB1B,2BfsyBoC;EiBp4BtC,uCjBqiCgC;Eer8B9B,oBAAA;EACA,qBAAA;EACA,mBAAA;EACA,eAAA;EACA,+CfgsB0B;Ee/rB1B,gBAAA;ECzFE,qID0FF;AtBqhEJ;AuB3mEM;ED0EJ;ICzEM,gBAAA;EvB8mEN;AACF;AsBvhEE;EACE,wCf47B8B;AP6lClC;;AsBhhEA;EACE,cAAA;EACA,WAAA;EACA,mBAAA;EACA,gBAAA;EACA,gBfwf4B;Eevf5B,2Bf2xBsC;Ee1xBtC,6BAAA;EACA,yBAAA;EACA,sCAAA;AtBmhEF;AsBjhEE;EACE,UAAA;AtBmhEJ;AsBhhEE;EAEE,gBAAA;EACA,eAAA;AtBihEJ;;AsBtgEA;EACE,mEf4wBsC;Ee3wBtC,uBAAA;ElByII,mBALI;EIvQN,yCAAA;AR8oEJ;AsBvgEE;EACE,uBAAA;EACA,wBAAA;EACA,yBfooB0B;APq4C9B;;AsBrgEA;EACE,iEfgwBsC;Ee/vBtC,oBAAA;ElB4HI,kBALI;EIvQN,yCAAA;AR0pEJ;AsBtgEE;EACE,oBAAA;EACA,qBAAA;EACA,uBf2nB0B;AP64C9B;;AsBhgEE;EACE,oEf6uBoC;APsxCxC;AsBhgEE;EACE,mEf0uBoC;APwxCxC;AsB//DE;EACE,iEfuuBoC;AP0xCxC;;AsB5/DA;EACE,WfquBsC;EepuBtC,gEf8tBsC;Ee7tBtC,iBfilB4B;AP86C9B;AsB7/DE;EACE,eAAA;AtB+/DJ;AsB5/DE;EACE,oBAAA;EdvLA,sCAAA;ARsrEJ;AsB3/DE;EACE,oBAAA;Ed5LA,sCAAA;AR0rEJ;AsB1/DE;EAAoB,+Df8sBkB;AP+yCxC;AsB5/DE;EAAoB,6Df8sBkB;APizCxC;;AyB9sEA;EACE,wPAAA;EAEA,cAAA;EACA,WAAA;EACA,0CAAA;ErBqRI,eALI;EqB7QR,gBlB+lB4B;EkB9lB5B,gBlBsmB4B;EkBrmB5B,2BlBy3BsC;EkBx3BtC,wBAAA;KAAA,qBAAA;UAAA,gBAAA;EACA,mClBk3BsC;EkBj3BtC,mFAAA;EACA,4BAAA;EACA,yClB+9BkC;EkB99BlC,0BlB+9BkC;EkB99BlC,2DAAA;EjBHE,sCAAA;EeHE,wEESJ;AzB8sEF;AuBntEM;EEfN;IFgBQ,gBAAA;EvBstEN;AACF;AyBjtEE;EACE,gElBs3BoC;EkBr3BpC,UAAA;EAKE,kDlBi+B4B;AP8uClC;AyB3sEE;EAEE,sBlB6uB0B;EkB5uB1B,sBAAA;AzB4sEJ;AyBzsEE;EAEE,wClBu1BoC;APm3CxC;AyBrsEE;EACE,kBAAA;EACA,uCAAA;AzBusEJ;;AyBnsEA;EACE,oBlBsuB4B;EkBruB5B,uBlBquB4B;EkBpuB5B,oBlBquB4B;EHlgBxB,mBALI;EIvQN,yCAAA;ARivEJ;;AyBnsEA;EACE,mBlBkuB4B;EkBjuB5B,sBlBiuB4B;EkBhuB5B,kBlBiuB4B;EHtgBxB,kBALI;EIvQN,yCAAA;ARyvEJ;;AyBjsEI;EACE,wPAAA;AzBosEN;;A0B5wEA;EACE,cAAA;EACA,kBnBq6BwC;EmBp6BxC,mBnBq6BwC;EmBp6BxC,uBnBq6BwC;AP02C1C;A0B7wEE;EACE,WAAA;EACA,mBAAA;A1B+wEJ;;A0B3wEA;EACE,oBnB25BwC;EmB15BxC,eAAA;EACA,iBAAA;A1B8wEF;A0B5wEE;EACE,YAAA;EACA,oBAAA;EACA,cAAA;A1B8wEJ;;A0B1wEA;EACE,qCAAA;EAEA,cAAA;EACA,UnB04BwC;EmBz4BxC,WnBy4BwC;EmBx4BxC,kBAAA;EACA,mBAAA;EACA,wBAAA;KAAA,qBAAA;UAAA,gBAAA;EACA,yCAAA;EACA,+CAAA;EACA,4BAAA;EACA,2BAAA;EACA,wBAAA;EACA,2DnB24BwC;EmB14BxC,iCAAA;UAAA,yBAAA;A1B4wEF;A0BzwEE;ElB3BE,qBAAA;ARuyEJ;A0BxwEE;EAEE,kBnBm4BsC;APs4C1C;A0BtwEE;EACE,uBnB03BsC;AP84C1C;A0BrwEE;EACE,gEnBs1BoC;EmBr1BpC,UAAA;EACA,kDnB8foB;APywDxB;A0BpwEE;EACE,yBnB5BM;EmB6BN,qBnB7BM;APmyEV;A0BpwEI;EAII,uPAAA;A1BmwER;A0B/vEI;EAII,+JAAA;A1B8vER;A0BzvEE;EACE,yBnBjDM;EmBkDN,qBnBlDM;EmBuDJ,iPAAA;A1BuvEN;A0BnvEE;EACE,oBAAA;EACA,YAAA;EACA,YnBk2BuC;APm5C3C;A0B9uEI;EACE,eAAA;EACA,YnBy1BqC;APu5C3C;;A0BluEA;EACE,mBnBo1BgC;APi5ClC;A0BnuEE;EACE,2KAAA;EAEA,UnB80B8B;EmB70B9B,mBAAA;EACA,0CAAA;EACA,gCAAA;ElBjHA,kBAAA;EeHE,iDGsHF;A1BouEJ;AuBt1EM;EG0GJ;IHzGM,gBAAA;EvBy1EN;AACF;A0BvuEI;EACE,0MAAA;A1ByuEN;A0BtuEI;EACE,iCnB60B4B;EmBx0B1B,0JAAA;A1BouER;A0B/tEE;EACE,oBnBwzB8B;EmBvzB9B,eAAA;A1BiuEJ;A0B/tEI;EACE,oBAAA;EACA,cAAA;A1BiuEN;;A0B5tEA;EACE,qBAAA;EACA,kBnBsyBgC;APy7ClC;;A0B5tEA;EACE,kBAAA;EACA,sBAAA;EACA,oBAAA;A1B+tEF;A0B3tEI;EACE,oBAAA;EACA,YAAA;EACA,anBspBwB;APukD9B;;A0BttEI;EACE,iLAAA;A1BytEN;;A2B54EA;EACE,WAAA;EACA,cAAA;EACA,UAAA;EACA,wBAAA;KAAA,qBAAA;UAAA,gBAAA;EACA,6BAAA;A3B+4EF;A2B74EE;EACE,UAAA;A3B+4EJ;A2B34EI;EAA0B,kEpB8gCa;APg4C3C;A2B74EI;EAA0B,kEpB6gCa;APm4C3C;A2B74EE;EACE,SAAA;A3B+4EJ;A2B54EE;EACE,WpB+/BuC;EoB9/BvC,YpB8/BuC;EoB7/BvC,oBAAA;EACA,wBAAA;UAAA,gBAAA;EH1BF,yBjBkCQ;EoBNN,SpB6/BuC;EC1gCvC,mBAAA;EeHE,oHImBF;EJnBE,4GImBF;A3B64EJ;AuB55EM;EIMJ;IJLM,wBAAA;IAAA,gBAAA;EvB+5EN;AACF;A2Bh5EI;EHjCF,qEjB8hCyC;APs5C3C;A2B94EE;EACE,WpBw+B8B;EoBv+B9B,cpBw+B8B;EoBv+B9B,kBAAA;EACA,epBu+B8B;EoBt+B9B,wCpBu+B8B;EoBt+B9B,yBAAA;EnB7BA,mBAAA;AR86EJ;A2B54EE;EACE,WpBo+BuC;EoBn+BvC,YpBm+BuC;EoBl+BvC,qBAAA;OAAA,gBAAA;EHpDF,yBjBkCQ;EoBoBN,SpBm+BuC;EC1gCvC,mBAAA;EeHE,iHI6CF;EJ7CE,4GI6CF;A3B64EJ;AuBt7EM;EIiCJ;IJhCM,qBAAA;IAAA,gBAAA;EvBy7EN;AACF;A2Bh5EI;EH3DF,qEjB8hCyC;APg7C3C;A2B94EE;EACE,WpB88B8B;EoB78B9B,cpB88B8B;EoB78B9B,kBAAA;EACA,epB68B8B;EoB58B9B,wCpB68B8B;EoB58B9B,yBAAA;EnBvDA,mBAAA;ARw8EJ;A2B54EE;EACE,oBAAA;A3B84EJ;A2B54EI;EACE,2CpBg9BqC;AP87C3C;A2B34EI;EACE,2CpB48BqC;APi8C3C;;A4Bp+EA;EACE,kBAAA;A5Bu+EF;A4Br+EE;;;EAGE,uDrBwiCoC;EqBviCpC,2DrBuiCoC;EqBtiCpC,iBrBuiCoC;APg8CxC;A4Bp+EE;EACE,kBAAA;EACA,MAAA;EACA,OAAA;EACA,UAAA;EACA,eAAA;EACA,YAAA;EACA,qBAAA;EACA,gBAAA;EACA,2CAAA;EACA,iBAAA;EACA,uBAAA;EACA,mBAAA;EACA,oBAAA;EACA,gDAAA;EACA,qBAAA;ELVE,gEKWF;A5Bs+EJ;AuB7+EM;EKTJ;ILUM,gBAAA;EvBg/EN;AACF;A4Bx+EE;;EAEE,qBAAA;A5B0+EJ;A4Bx+EI;EACE,kBAAA;A5B2+EN;A4B5+EI;;EACE,kBAAA;A5B2+EN;A4Bx+EI;EAEE,qBrB0gCkC;EqBzgClC,wBrB0gCkC;APi+CxC;A4B9+EI;;;EAEE,qBrB0gCkC;EqBzgClC,wBrB0gCkC;APi+CxC;A4Bx+EI;;EACE,qBrBqgCkC;EqBpgClC,wBrBqgCkC;APs+CxC;A4Bv+EE;EACE,qBrB+/BoC;EqB9/BpC,wBrB+/BoC;EqB9/BpC,qBrBguB0B;APywD9B;A4Bl+EI;EACE,8DrBy/BkC;AP8+CxC;A4Bx+EI;;;;EACE,8DrBy/BkC;AP8+CxC;A4Bl+EI;EACE,8DrBm/BkC;APi/CxC;A4B/9EI;EACE,kBAAA;EACA,oBAAA;EACA,WAAA;EACA,arBw+BkC;EqBv+BlC,WAAA;EACA,mCrBqzBkC;ECh3BpC,sCAAA;AR8hFJ;A4Bz+EI;;EACE,kBAAA;EACA,oBAAA;EACA,WAAA;EACA,arBw+BkC;EqBv+BlC,WAAA;EACA,mCrBqzBkC;ECh3BpC,sCAAA;AR8hFJ;A4B/9EE;EACE,wCrBkzBoC;AP+qDxC;A4B79EI;EACE,sCAAA;A5B+9EN;A4B39EE;;EAEE,crBhFO;AP6iFX;;A6BvjFA;EACE,kBAAA;EACA,aAAA;EACA,eAAA;EACA,oBAAA;EACA,WAAA;A7B0jFF;A6BxjFE;;;EAGE,kBAAA;EACA,cAAA;EACA,SAAA;EACA,YAAA;A7B0jFJ;A6BtjFE;;;EAGE,UAAA;A7BwjFJ;A6BljFE;EACE,kBAAA;EACA,UAAA;A7BojFJ;A6BljFI;EACE,UAAA;A7BojFN;;A6BziFA;EACE,aAAA;EACA,mBAAA;EACA,yBAAA;EzB8OI,eALI;EyBvOR,gBtByjB4B;EsBxjB5B,gBtBgkB4B;EsB/jB5B,2BtBm1BsC;EsBl1BtC,kBAAA;EACA,mBAAA;EACA,uCtB06BsC;EsBz6BtC,2DAAA;ErBtCE,sCAAA;ARmlFJ;;A6BniFA;;;;EAIE,oBAAA;EzBwNI,kBALI;EIvQN,yCAAA;AR4lFJ;;A6BniFA;;;;EAIE,uBAAA;EzB+MI,mBALI;EIvQN,yCAAA;ARqmFJ;;A6BniFA;;EAEE,mBAAA;A7BsiFF;;A6BzhFI;;;;ErBjEA,0BAAA;EACA,6BAAA;ARimFJ;A6BxhFI;;;;ErB1EA,0BAAA;EACA,6BAAA;ARwmFJ;A6BlhFE;EACE,8CAAA;ErB1EA,yBAAA;EACA,4BAAA;AR+lFJ;A6BlhFE;;ErB9EE,yBAAA;EACA,4BAAA;ARomFJ;;A8B5nFE;EACE,aAAA;EACA,WAAA;EACA,mBvBu0BoC;EHrkBlC,kBALI;E0B1PN,iCvBkjCqB;AP4kDzB;;A8B3nFE;EACE,kBAAA;EACA,SAAA;EACA,UAAA;EACA,aAAA;EACA,eAAA;EACA,uBAAA;EACA,kBAAA;E1BqPE,mBALI;E0B7ON,WvBqiCqB;EuBpiCrB,mCvBoiCqB;EC/jCrB,sCAAA;ARypFJ;;A8BznFI;;;;EAEE,cAAA;A9B8nFN;;A8B7qFI;EAqDE,+CvBuhCmB;EuBphCjB,oCvB81BgC;EuB71BhC,0PAAA;EACA,4BAAA;EACA,2DAAA;EACA,gEAAA;A9B0nFR;A8BvnFM;EACE,+CvB4gCiB;EuBvgCf,2DvBugCe;AP8mDzB;;A8B1rFI;EA+EI,oCvBu0BgC;EuBt0BhC,kFAAA;A9B+mFR;;A8B/rFI;EAuFE,+CvBq/BmB;APunDzB;A8BzmFQ;EAEE,kQAAA;EACA,uBvBq5B8B;EuBp5B9B,+DAAA;EACA,2EAAA;A9B0mFV;A8BtmFM;EACE,+CvBw+BiB;EuBn+Bf,2DvBm+Be;APioDzB;;A8B7sFI;EAkHI,yCAAA;A9B+lFR;;A8BjtFI;EAyHE,+CvBm9BmB;APyoDzB;A8B1lFM;EACE,4CvBg9BiB;AP4oDzB;A8BzlFM;EACE,2DvB48BiB;AP+oDzB;A8BxlFM;EACE,iCvBw8BiB;APkpDzB;;A8BrlFI;EACE,kBAAA;A9BwlFN;;A8BluFI;;;;;EAoJM,UAAA;A9BslFV;;A8BttFE;EACE,aAAA;EACA,WAAA;EACA,mBvBu0BoC;EHrkBlC,kBALI;E0B1PN,mCvBkjCqB;APsqDzB;;A8BrtFE;EACE,kBAAA;EACA,SAAA;EACA,UAAA;EACA,aAAA;EACA,eAAA;EACA,uBAAA;EACA,kBAAA;E1BqPE,mBALI;E0B7ON,WvBqiCqB;EuBpiCrB,kCvBoiCqB;EC/jCrB,sCAAA;ARmvFJ;;A8BntFI;;;;EAEE,cAAA;A9BwtFN;;A8BvwFI;EAqDE,iDvBuhCmB;EuBphCjB,oCvB81BgC;EuB71BhC,4UAAA;EACA,4BAAA;EACA,2DAAA;EACA,gEAAA;A9BotFR;A8BjtFM;EACE,iDvB4gCiB;EuBvgCf,0DvBugCe;APwsDzB;;A8BpxFI;EA+EI,oCvBu0BgC;EuBt0BhC,kFAAA;A9BysFR;;A8BzxFI;EAuFE,iDvBq/BmB;APitDzB;A8BnsFQ;EAEE,oVAAA;EACA,uBvBq5B8B;EuBp5B9B,+DAAA;EACA,2EAAA;A9BosFV;A8BhsFM;EACE,iDvBw+BiB;EuBn+Bf,0DvBm+Be;AP2tDzB;;A8B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yEv8NQ;EAOI,2BAAA;AzEo8NZ;;AyE38NQ;EAOI,2BAAA;AzEw8NZ;;AyE/8NQ;EAOI,6BAAA;AzE48NZ;;AyEn9NQ;EAOI,8BAAA;AzEg9NZ;;AyEv9NQ;EAOI,6BAAA;AzEo9NZ;;AyE39NQ;EAOI,2BAAA;AzEw9NZ;;AyE/9NQ;EAOI,6BAAA;AzE49NZ;;AyEn+NQ;EAOI,8BAAA;AzEg+NZ;;AyEv+NQ;EAOI,6BAAA;AzEo+NZ;;AyE3+NQ;EAOI,0BAAA;AzEw+NZ;;AyE/+NQ;EAOI,gCAAA;AzE4+NZ;;AyEn/NQ;EAOI,yBAAA;AzEg/NZ;;AyEv/NQ;EAOI,wBAAA;AzEo/NZ;;AyE3/NQ;EAOI,+BAAA;AzEw/NZ;;AyE//NQ;EAOI,yBAAA;AzE4/NZ;;AyEngOQ;EAOI,6BAAA;AzEggOZ;;AyEvgOQ;EAOI,8BAAA;AzEogOZ;;AyE3gOQ;EAOI,wBAAA;AzEwgOZ;;AyE/gOQ;EAOI,+BAAA;AzE4gOZ;;AyEnhOQ;EAOI,wBAAA;AzEghOZ;;AyEvhOQ;EAOI,2CAAA;AzEohOZ;;AyE3hOQ;EAOI,8CAAA;AzEwhOZ;;AyE/hOQ;EAOI,8CAAA;AzE4hOZ;;AyEniOQ;EAOI,2BAAA;AzEgiOZ;;AyEjjOQ;EACE,gFAAA;AzEojOV;;AyErjOQ;EACE,kFAAA;AzEwjOV;;AyEzjOQ;EACE,gFAAA;AzE4jOV;;AyE7jOQ;EACE,6EAAA;AzEgkOV;;AyEjkOQ;EACE,gFAAA;AzEokOV;;AyErkOQ;EACE,+EAAA;AzEwkOV;;AyEzkOQ;EACE,8EAAA;AzE4kOV;;AyE7kOQ;EACE,6EAAA;AzEglOV;;AyEvkOQ;EAOI,2BAAA;AzEokOZ;;AyE3kOQ;EAOI,6BAAA;AzEwkOZ;;AyE/kOQ;EAOI,6BAAA;AzE4kOZ;;AyEnlOQ;EAOI,0BAAA;AzEglOZ;;AyEvlOQ;EAOI,2BAAA;AzEolOZ;;AyE3lOQ;EAOI,iBAAA;AzEwlOZ;;AyE/lOQ;EAOI,mBAAA;AzE4lOZ;;AyEnmOQ;EAOI,oBAAA;AzEgmOZ;;AyEvmOQ;EAOI,oBAAA;AzEomOZ;;AyE3mOQ;EAOI,sBAAA;AzEwmOZ;;AyE/mOQ;EAOI,uBAAA;AzE4mOZ;;AyEnnOQ;EAOI,kBAAA;AzEgnOZ;;AyEvnOQ;EAOI,oBAAA;AzEonOZ;;AyE3nOQ;EAOI,qBAAA;AzEwnOZ;;AyE/nOQ;EAOI,mBAAA;AzE4nOZ;;AyEnoOQ;EAOI,qBAAA;AzEgoOZ;;AyEvoOQ;EAOI,sBAAA;AzEooOZ;;AyE3oOQ;EAOI,2CAAA;AzEwoOZ;;AyE/oOQ;EAOI,sCAAA;AzE4oOZ;;AyEnpOQ;EAOI,sCAAA;AzEgpOZ;;AyEvpOQ;EAOI,uFAAA;AzEopOZ;;AyE3pOQ;EAOI,oBAAA;AzEwpOZ;;AyE/pOQ;EAOI,2FAAA;AzE4pOZ;;AyEnqOQ;EAOI,wBAAA;AzEgqOZ;;AyEvqOQ;EAOI,6FAAA;AzEoqOZ;;AyE3qOQ;EAOI,0BAAA;AzEwqOZ;;AyE/qOQ;EAOI,8FAAA;AzE4qOZ;;AyEnrOQ;EAOI,2BAAA;AzEgrOZ;;AyEvrOQ;EAOI,4FAAA;AzEorOZ;;AyE3rOQ;EAOI,yBAAA;AzEwrOZ;;AyE/rOQ;EAIQ,sBAAA;EAGJ,8EAAA;AzE6rOZ;;AyEpsOQ;EAIQ,sBAAA;EAGJ,gFAAA;AzEksOZ;;AyEzsOQ;EAIQ,sBAAA;EAGJ,8EAAA;AzEusOZ;;AyE9sOQ;EAIQ,sBAAA;EAGJ,2EAAA;AzE4sOZ;;AyEntOQ;EAIQ,sBAAA;EAGJ,8EAAA;AzEitOZ;;AyExtOQ;EAIQ,sBAAA;EAGJ,6EAAA;AzEstOZ;;AyE7tOQ;EAIQ,sBAAA;EAGJ,4EAAA;AzE2tOZ;;AyEluOQ;EAIQ,sBAAA;EAGJ,2EAAA;AzEguOZ;;AyEvuOQ;EAIQ,sBAAA;EAGJ,4EAAA;AzEquOZ;;AyE5uOQ;EAIQ,sBAAA;EAGJ,4EAAA;AzE0uOZ;;AyEjvOQ;EAOI,wDAAA;AzE8uOZ;;AyErvOQ;EAOI,0DAAA;AzEkvOZ;;AyEzvOQ;EAOI,wDAAA;AzEsvOZ;;AyE7vOQ;EAOI,qDAAA;AzE0vOZ;;AyEjwOQ;EAOI,wDAAA;AzE8vOZ;;AyErwOQ;EAOI,uDAAA;AzEkwOZ;;AyEzwOQ;EAOI,sDAAA;AzEswOZ;;AyE7wOQ;EAOI,qDAAA;AzE0wOZ;;AyEjxOQ;EAOI,4BAAA;AzE8wOZ;;AyErxOQ;EAOI,4BAAA;AzEkxOZ;;AyEzxOQ;EAOI,4BAAA;AzEsxOZ;;AyE7xOQ;EAOI,4BAAA;AzE0xOZ;;AyEjyOQ;EAOI,4BAAA;AzE8xOZ;;AyE/yOQ;EACE,wBAAA;AzEkzOV;;AyEnzOQ;EACE,yBAAA;AzEszOV;;AyEvzOQ;EACE,wBAAA;AzE0zOV;;AyE3zOQ;EACE,yBAAA;AzE8zOV;;AyE/zOQ;EACE,sBAAA;AzEk0OV;;AyEzzOQ;EAOI,qBAAA;AzEszOZ;;AyE7zOQ;EAOI,qBAAA;AzE0zOZ;;AyEj0OQ;EAOI,qBAAA;AzE8zOZ;;AyEr0OQ;EAOI,sBAAA;AzEk0OZ;;AyEz0OQ;EAOI,sBAAA;AzEs0OZ;;AyE70OQ;EAOI,0BAAA;AzE00OZ;;AyEj1OQ;EAOI,uBAAA;AzE80OZ;;AyEr1OQ;EAOI,2BAAA;AzEk1OZ;;AyEz1OQ;EAOI,sBAAA;AzEs1OZ;;AyE71OQ;EAOI,sBAAA;AzE01OZ;;AyEj2OQ;EAOI,sBAAA;AzE81OZ;;AyEr2OQ;EAOI,uBAAA;AzEk2OZ;;AyEz2OQ;EAOI,uBAAA;AzEs2OZ;;AyE72OQ;EAOI,2BAAA;AzE02OZ;;AyEj3OQ;EAOI,wBAAA;AzE82OZ;;AyEr3OQ;EAOI,4BAAA;AzEk3OZ;;AyEz3OQ;EAOI,yBAAA;AzEs3OZ;;AyE73OQ;EAOI,8BAAA;AzE03OZ;;AyEj4OQ;EAOI,iCAAA;AzE83OZ;;AyEr4OQ;EAOI,sCAAA;AzEk4OZ;;AyEz4OQ;EAOI,yCAAA;AzEs4OZ;;AyE74OQ;EAOI,uBAAA;AzE04OZ;;AyEj5OQ;EAOI,uBAAA;AzE84OZ;;AyEr5OQ;EAOI,yBAAA;AzEk5OZ;;AyEz5OQ;EAOI,yBAAA;AzEs5OZ;;AyE75OQ;EAOI,0BAAA;AzE05OZ;;AyEj6OQ;EAOI,4BAAA;AzE85OZ;;AyEr6OQ;EAOI,kCAAA;AzEk6OZ;;AyEz6OQ;EAOI,sCAAA;AzEs6OZ;;AyE76OQ;EAOI,oCAAA;AzE06OZ;;AyEj7OQ;EAOI,kCAAA;AzE86OZ;;AyEr7OQ;EAOI,yCAAA;AzEk7OZ;;AyEz7OQ;EAOI,wCAAA;AzEs7OZ;;AyE77OQ;EAOI,wCAAA;AzE07OZ;;AyEj8OQ;EAOI,kCAAA;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AA;EzE61RV;EyEp2RM;IAOI,iCAAA;EzEg2RV;EyEv2RM;IAOI,sCAAA;EzEm2RV;EyE12RM;IAOI,yCAAA;EzEs2RV;EyE72RM;IAOI,uBAAA;EzEy2RV;EyEh3RM;IAOI,uBAAA;EzE42RV;EyEn3RM;IAOI,yBAAA;EzE+2RV;EyEt3RM;IAOI,yBAAA;EzEk3RV;EyEz3RM;IAOI,0BAAA;EzEq3RV;EyE53RM;IAOI,4BAAA;EzEw3RV;EyE/3RM;IAOI,kCAAA;EzE23RV;EyEl4RM;IAOI,sCAAA;EzE83RV;EyEr4RM;IAOI,oCAAA;EzEi4RV;EyEx4RM;IAOI,kCAAA;EzEo4RV;EyE34RM;IAOI,yCAAA;EzEu4RV;EyE94RM;IAOI,wCAAA;EzE04RV;EyEj5RM;IAOI,wCAAA;EzE64RV;EyEp5RM;IAOI,kCAAA;EzEg5RV;EyEv5RM;IAOI,gCAAA;EzEm5RV;EyE15RM;IAOI,8BAAA;EzEs5RV;EyE75RM;IAOI,gCAAA;EzEy5RV;EyEh6RM;IAOI,+BAAA;EzE45RV;EyEn6RM;IAOI,oCAAA;EzE+5RV;EyEt6RM;IAOI,kCAAA;EzEk6RV;EyEz6RM;IAOI,gCAAA;EzEq6RV;EyE56RM;IAOI,uCAAA;EzEw6RV;EyE/6RM;IAOI,sCAAA;EzE26RV;EyEl7RM;IAOI,iCAAA;EzE86RV;EyEr7RM;IAOI,2BAAA;EzEi7RV;EyEx7RM;IAOI,iCAAA;EzEo7RV;EyE37RM;IAOI,+BAAA;EzEu7RV;EyE97RM;IAOI,6BAAA;EzE07RV;EyEj8RM;IAOI,+BAAA;EzE67RV;EyEp8RM;IAOI,8BAAA;EzEg8RV;EyEv8RM;IAOI,oBAAA;EzEm8RV;EyE18RM;IAOI,mBAAA;EzEs8RV;EyE78RM;IAOI,mBAAA;EzEy8RV;EyEh9RM;IAOI,mBAAA;EzE48RV;EyEn9RM;IAOI,mBAAA;EzE+8RV;EyEt9RM;IAOI,mBAAA;EzEk9RV;EyEz9RM;IAOI,mBAAA;EzEq9RV;EyE59RM;IAOI,mBAAA;EzEw9RV;EyE/9RM;IAOI,oBAAA;EzE29RV;EyEl+RM;IAOI,0BAAA;EzE89RV;EyEr+RM;IAOI,yBAAA;EzEi+RV;E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V;EyEt2SM;IAOI,gCAAA;EzEk2SV;EyEz2SM;IAOI,yBAAA;EzEq2SV;EyE52SM;IAOI,wBAAA;EzEw2SV;EyE/2SM;IAOI,+BAAA;EzE22SV;EyEl3SM;IAOI,yBAAA;EzE82SV;EyEr3SM;IAOI,6BAAA;EzEi3SV;EyEx3SM;IAOI,8BAAA;EzEo3SV;EyE33SM;IAOI,wBAAA;EzEu3SV;EyE93SM;IAOI,+BAAA;EzE03SV;EyEj4SM;IAOI,wBAAA;EzE63SV;EyEp4SM;IAOI,yBAAA;EzEg4SV;EyEv4SM;IAOI,8BAAA;EzEm4SV;EyE14SM;IAOI,iCAAA;EzEs4SV;EyE74SM;IAOI,sCAAA;EzEy4SV;EyEh5SM;IAOI,yCAAA;EzE44SV;EyEn5SM;IAOI,uBAAA;EzE+4SV;EyEt5SM;IAOI,uBAAA;EzEk5SV;EyEz5SM;IAOI,yBAAA;EzEq5SV;EyE55SM;IAOI,yBAAA;EzEw5SV;EyE/5SM;IAOI,0BAAA;EzE25SV;EyEl6SM;IAOI,4BAAA;EzE85SV;EyEr6SM;IAOI,kCAAA;EzEi6SV;EyEx6SM;IAOI,sCAAA;EzEo6SV;EyE36SM;IAOI,oCAAA;EzEu6SV;EyE96SM;IAOI,kCAAA;EzE06SV;EyEj7SM;IAOI,yCAAA;EzE66SV;EyEp7SM;IAOI,wCAAA;EzEg7SV;EyEv7SM;IAOI,wCAAA;EzEm7SV;EyE17SM;IAOI,kCAAA;EzEs7SV;EyE77SM;IAOI,gCAAA;EzEy7SV;EyEh8SM;IAOI,8BAAA;EzE47SV;EyEn8SM;IAOI,gCAAA;EzE+7SV;EyEt8SM;IAOI,+BAAA;EzEk8SV;EyEz8SM;IAOI,oCAAA;EzEq8SV;EyE58SM;IAOI,kCAAA;EzEw8SV;EyE/8SM;IAOI,gCAAA;EzE28SV;EyEl9SM;IAOI,uCAAA;EzE88SV;EyEr9SM;IAOI,sCAAA;EzEi9SV;EyEx9SM;IAOI,iCAAA;EzEo9SV;EyE39SM;IAOI,2BAAA;EzEu9SV;EyE99SM;IAOI,iCAAA;EzE09SV;EyEj+SM;IAOI,+BAAA;EzE69SV;EyEp+SM;IAOI,6BAAA;EzEg+SV;EyEv+SM;IAOI,+BAAA;EzEm+SV;EyE1+SM;IA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OI,wBAAA;EzE++VV;EyEt/VM;IAOI,yBAAA;EzEk/VV;EyEz/VM;IAOI,8BAAA;EzEq/VV;EyE5/VM;IAOI,iCAAA;EzEw/VV;EyE//VM;IAOI,sCAAA;EzE2/VV;EyElgWM;IAOI,yCAAA;EzE8/VV;EyErgWM;IAOI,uBAAA;EzEigWV;EyExgWM;IAOI,uBAAA;EzEogWV;EyE3gWM;IAOI,yBAAA;EzEugWV;EyE9gWM;IAOI,yBAAA;EzE0gWV;EyEjhWM;IAOI,0BAAA;EzE6gWV;EyEphWM;IAOI,4BAAA;EzEghWV;EyEvhWM;IAOI,kCAAA;EzEmhWV;EyE1hWM;IAOI,sCAAA;EzEshWV;EyE7hWM;IAOI,oCAAA;EzEyhWV;EyEhiWM;IAOI,kCAAA;EzE4hWV;EyEniWM;IAOI,yCAAA;EzE+hWV;EyEtiWM;IAOI,wCAAA;EzEkiWV;EyEziWM;IAOI,wCAAA;EzEqiWV;EyE5iWM;IAOI,kCAAA;EzEwiWV;EyE/iWM;IAOI,gCAAA;EzE2iWV;EyEljWM;IAOI,8BAAA;EzE8iWV;EyErjWM;IAOI,gCAAA;EzEijWV;EyExjWM;IAOI,+BAAA;EzEojWV;EyE3jWM;IAOI,oCAAA;EzEujWV;EyE9jWM;IAOI,kCAAA;EzE0jWV;EyEjkWM;IAOI,gCAAA;EzE6jWV;EyEpkWM;IAOI,uCAAA;EzEgkWV;EyEvkWM;IAOI,sCAAA;EzEmkWV;EyE1kWM;IAOI,iCAAA;EzEskWV;EyE7kWM;IAOI,2BAAA;EzEykWV;EyEhlWM;IAOI,iCAAA;EzE4kWV;EyEnlWM;IAOI,+BAAA;EzE+kWV;EyEtlWM;IAOI,6BAAA;EzEklWV;EyEzlWM;IAOI,+BAAA;EzEqlWV;EyE5lWM;IAOI,8BAAA;EzEwlWV;EyE/lWM;IAOI,oBAAA;EzE2lWV;EyElmWM;IAOI,mBAAA;EzE8lWV;EyErmWM;IAOI,mBAAA;EzEimWV;EyExmWM;IAOI,mBAAA;EzEomWV;EyE3mWM;IAOI,mBAAA;EzEumWV;EyE9mWM;IAOI,mBAAA;EzE0mWV;EyEjnWM;IAOI,mBAAA;EzE6mWV;EyEpnWM;IAOI,mBAAA;EzEgnWV;EyEvnWM;IAOI,oBAAA;EzE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","file":"main.css","sourcesContent":["@charset \"UTF-8\";\n/*!\n * Bootstrap v5.3.8 (https://getbootstrap.com/)\n * Copyright 2011-2025 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n@import 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.3.1/css/all.css';\n:root,\n[data-bs-theme=light] {\n --bs-blue: #0d6efd;\n --bs-indigo: #6610f2;\n --bs-purple: #6f42c1;\n --bs-pink: #d63384;\n --bs-red: #dc3545;\n --bs-orange: #fd7e14;\n --bs-yellow: #ffc107;\n --bs-green: #198754;\n --bs-teal: #20c997;\n --bs-cyan: #0dcaf0;\n --bs-black: #000;\n --bs-white: #fff;\n --bs-gray: #6c757d;\n --bs-gray-dark: #343a40;\n --bs-gray-100: #f8f9fa;\n --bs-gray-200: #e9ecef;\n --bs-gray-300: #dee2e6;\n --bs-gray-400: #ced4da;\n --bs-gray-500: #adb5bd;\n --bs-gray-600: #6c757d;\n --bs-gray-700: #495057;\n --bs-gray-800: #343a40;\n --bs-gray-900: #212529;\n --bs-primary: #0d6efd;\n --bs-secondary: #6c757d;\n --bs-success: #198754;\n --bs-info: #0dcaf0;\n --bs-warning: #ffc107;\n --bs-danger: #dc3545;\n --bs-light: #f8f9fa;\n --bs-dark: #212529;\n --bs-primary-rgb: 13, 110, 253;\n --bs-secondary-rgb: 108, 117, 125;\n --bs-success-rgb: 25, 135, 84;\n --bs-info-rgb: 13, 202, 240;\n --bs-warning-rgb: 255, 193, 7;\n --bs-danger-rgb: 220, 53, 69;\n --bs-light-rgb: 248, 249, 250;\n --bs-dark-rgb: 33, 37, 41;\n --bs-primary-text-emphasis: rgb(2.0392156863%, 17.2549019608%, 39.6862745098%);\n --bs-secondary-text-emphasis: rgb(16.9411764706%, 18.3529411765%, 19.6078431373%);\n --bs-success-text-emphasis: rgb(3.9215686275%, 21.1764705882%, 13.1764705882%);\n --bs-info-text-emphasis: rgb(2.0392156863%, 31.6862745098%, 37.6470588235%);\n --bs-warning-text-emphasis: rgb(40%, 30.2745098039%, 1.0980392157%);\n --bs-danger-text-emphasis: rgb(34.5098039216%, 8.3137254902%, 10.8235294118%);\n --bs-light-text-emphasis: #495057;\n --bs-dark-text-emphasis: #495057;\n --bs-primary-bg-subtle: rgb(81.0196078431%, 88.6274509804%, 99.8431372549%);\n --bs-secondary-bg-subtle: rgb(88.4705882353%, 89.1764705882%, 89.8039215686%);\n --bs-success-bg-subtle: rgb(81.9607843137%, 90.5882352941%, 86.5882352941%);\n --bs-info-bg-subtle: rgb(81.0196078431%, 95.8431372549%, 98.8235294118%);\n --bs-warning-bg-subtle: rgb(100%, 95.137254902%, 80.5490196078%);\n --bs-danger-bg-subtle: rgb(97.2549019608%, 84.1568627451%, 85.4117647059%);\n --bs-light-bg-subtle: rgb(98.6274509804%, 98.8235294118%, 99.0196078431%);\n --bs-dark-bg-subtle: #ced4da;\n --bs-primary-border-subtle: rgb(62.0392156863%, 77.2549019608%, 99.6862745098%);\n --bs-secondary-border-subtle: rgb(76.9411764706%, 78.3529411765%, 79.6078431373%);\n --bs-success-border-subtle: rgb(63.9215686275%, 81.1764705882%, 73.1764705882%);\n --bs-info-border-subtle: rgb(62.0392156863%, 91.6862745098%, 97.6470588235%);\n --bs-warning-border-subtle: rgb(100%, 90.2745098039%, 61.0980392157%);\n --bs-danger-border-subtle: rgb(94.5098039216%, 68.3137254902%, 70.8235294118%);\n --bs-light-border-subtle: #e9ecef;\n --bs-dark-border-subtle: #adb5bd;\n --bs-white-rgb: 255, 255, 255;\n --bs-black-rgb: 0, 0, 0;\n --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n --bs-body-font-family: var(--bs-font-sans-serif);\n --bs-body-font-size: 1rem;\n --bs-body-font-weight: 400;\n --bs-body-line-height: 1.5;\n --bs-body-color: #212529;\n --bs-body-color-rgb: 33, 37, 41;\n --bs-body-bg: #fff;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-emphasis-color: #000;\n --bs-emphasis-color-rgb: 0, 0, 0;\n --bs-secondary-color: rgba(33, 37, 41, 0.75);\n --bs-secondary-color-rgb: 33, 37, 41;\n --bs-secondary-bg: #e9ecef;\n --bs-secondary-bg-rgb: 233, 236, 239;\n --bs-tertiary-color: rgba(33, 37, 41, 0.5);\n --bs-tertiary-color-rgb: 33, 37, 41;\n --bs-tertiary-bg: #f8f9fa;\n --bs-tertiary-bg-rgb: 248, 249, 250;\n --bs-heading-color: inherit;\n --bs-link-color: #0d6efd;\n --bs-link-color-rgb: 13, 110, 253;\n --bs-link-decoration: underline;\n --bs-link-hover-color: rgb(4.0784313725%, 34.5098039216%, 79.3725490196%);\n --bs-link-hover-color-rgb: 10, 88, 202;\n --bs-code-color: #d63384;\n --bs-highlight-color: #212529;\n --bs-highlight-bg: rgb(100%, 95.137254902%, 80.5490196078%);\n --bs-border-width: 1px;\n --bs-border-style: solid;\n --bs-border-color: #dee2e6;\n --bs-border-color-translucent: rgba(0, 0, 0, 0.175);\n --bs-border-radius: 0.375rem;\n --bs-border-radius-sm: 0.25rem;\n --bs-border-radius-lg: 0.5rem;\n --bs-border-radius-xl: 1rem;\n --bs-border-radius-xxl: 2rem;\n --bs-border-radius-2xl: var(--bs-border-radius-xxl);\n --bs-border-radius-pill: 50rem;\n --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n --bs-focus-ring-width: 0.25rem;\n --bs-focus-ring-opacity: 0.25;\n --bs-focus-ring-color: rgba(13, 110, 253, 0.25);\n --bs-form-valid-color: #198754;\n --bs-form-valid-border-color: #198754;\n --bs-form-invalid-color: #dc3545;\n --bs-form-invalid-border-color: #dc3545;\n}\n\n[data-bs-theme=dark] {\n color-scheme: dark;\n --bs-body-color: #dee2e6;\n --bs-body-color-rgb: 222, 226, 230;\n --bs-body-bg: #212529;\n --bs-body-bg-rgb: 33, 37, 41;\n --bs-emphasis-color: #fff;\n --bs-emphasis-color-rgb: 255, 255, 255;\n --bs-secondary-color: rgba(222, 226, 230, 0.75);\n --bs-secondary-color-rgb: 222, 226, 230;\n --bs-secondary-bg: #343a40;\n --bs-secondary-bg-rgb: 52, 58, 64;\n --bs-tertiary-color: rgba(222, 226, 230, 0.5);\n --bs-tertiary-color-rgb: 222, 226, 230;\n --bs-tertiary-bg: rgb(16.6666666667%, 18.6274509804%, 20.5882352941%);\n --bs-tertiary-bg-rgb: 43, 48, 53;\n --bs-primary-text-emphasis: rgb(43.0588235294%, 65.8823529412%, 99.5294117647%);\n --bs-secondary-text-emphasis: rgb(65.4117647059%, 67.5294117647%, 69.4117647059%);\n --bs-success-text-emphasis: rgb(45.8823529412%, 71.7647058824%, 59.7647058824%);\n --bs-info-text-emphasis: rgb(43.0588235294%, 87.5294117647%, 96.4705882353%);\n --bs-warning-text-emphasis: rgb(100%, 85.4117647059%, 41.6470588235%);\n --bs-danger-text-emphasis: rgb(91.7647058824%, 52.4705882353%, 56.2352941176%);\n --bs-light-text-emphasis: #f8f9fa;\n --bs-dark-text-emphasis: #dee2e6;\n --bs-primary-bg-subtle: rgb(1.0196078431%, 8.6274509804%, 19.8431372549%);\n --bs-secondary-bg-subtle: rgb(8.4705882353%, 9.1764705882%, 9.8039215686%);\n --bs-success-bg-subtle: rgb(1.9607843137%, 10.5882352941%, 6.5882352941%);\n --bs-info-bg-subtle: rgb(1.0196078431%, 15.8431372549%, 18.8235294118%);\n --bs-warning-bg-subtle: rgb(20%, 15.137254902%, 0.5490196078%);\n --bs-danger-bg-subtle: rgb(17.2549019608%, 4.1568627451%, 5.4117647059%);\n --bs-light-bg-subtle: #343a40;\n --bs-dark-bg-subtle: #1a1d20;\n --bs-primary-border-subtle: rgb(3.0588235294%, 25.8823529412%, 59.5294117647%);\n --bs-secondary-border-subtle: rgb(25.4117647059%, 27.5294117647%, 29.4117647059%);\n --bs-success-border-subtle: rgb(5.8823529412%, 31.7647058824%, 19.7647058824%);\n --bs-info-border-subtle: rgb(3.0588235294%, 47.5294117647%, 56.4705882353%);\n --bs-warning-border-subtle: rgb(60%, 45.4117647059%, 1.6470588235%);\n --bs-danger-border-subtle: rgb(51.7647058824%, 12.4705882353%, 16.2352941176%);\n --bs-light-border-subtle: #495057;\n --bs-dark-border-subtle: #343a40;\n --bs-heading-color: inherit;\n --bs-link-color: rgb(43.0588235294%, 65.8823529412%, 99.5294117647%);\n --bs-link-hover-color: rgb(54.4470588235%, 72.7058823529%, 99.6235294118%);\n --bs-link-color-rgb: 110, 168, 254;\n --bs-link-hover-color-rgb: 139, 185, 254;\n --bs-code-color: rgb(90.3529411765%, 52%, 71.0588235294%);\n --bs-highlight-color: #dee2e6;\n --bs-highlight-bg: rgb(40%, 30.2745098039%, 1.0980392157%);\n --bs-border-color: #495057;\n --bs-border-color-translucent: rgba(255, 255, 255, 0.15);\n --bs-form-valid-color: rgb(45.8823529412%, 71.7647058824%, 59.7647058824%);\n --bs-form-valid-border-color: rgb(45.8823529412%, 71.7647058824%, 59.7647058824%);\n --bs-form-invalid-color: rgb(91.7647058824%, 52.4705882353%, 56.2352941176%);\n --bs-form-invalid-border-color: rgb(91.7647058824%, 52.4705882353%, 56.2352941176%);\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n :root {\n scroll-behavior: smooth;\n }\n}\n\nbody {\n margin: 0;\n font-family: var(--bs-body-font-family);\n font-size: var(--bs-body-font-size);\n font-weight: var(--bs-body-font-weight);\n line-height: var(--bs-body-line-height);\n color: var(--bs-body-color);\n text-align: var(--bs-body-text-align);\n background-color: var(--bs-body-bg);\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n margin: 1rem 0;\n color: inherit;\n border: 0;\n border-top: var(--bs-border-width) solid;\n opacity: 0.25;\n}\n\nh6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n font-weight: 500;\n line-height: 1.2;\n color: var(--bs-heading-color);\n}\n\nh1, .h1 {\n font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n h1, .h1 {\n font-size: 2.5rem;\n }\n}\n\nh2, .h2 {\n font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n h2, .h2 {\n font-size: 2rem;\n }\n}\n\nh3, .h3 {\n font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n h3, .h3 {\n font-size: 1.75rem;\n }\n}\n\nh4, .h4 {\n font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n h4, .h4 {\n font-size: 1.5rem;\n }\n}\n\nh5, .h5 {\n font-size: 1.25rem;\n}\n\nh6, .h6 {\n font-size: 1rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title] {\n text-decoration: underline dotted;\n cursor: help;\n text-decoration-skip-ink: none;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: 0.5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall, .small {\n font-size: 0.875em;\n}\n\nmark, .mark {\n padding: 0.1875em;\n color: var(--bs-highlight-color);\n background-color: var(--bs-highlight-bg);\n}\n\nsub,\nsup {\n position: relative;\n font-size: 0.75em;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\na {\n color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));\n text-decoration: underline;\n}\na:hover {\n --bs-link-color-rgb: var(--bs-link-hover-color-rgb);\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n color: inherit;\n text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: var(--bs-font-monospace);\n font-size: 1em;\n}\n\npre {\n display: block;\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n font-size: 0.875em;\n}\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n\ncode {\n font-size: 0.875em;\n color: var(--bs-code-color);\n word-wrap: break-word;\n}\na > code {\n color: inherit;\n}\n\nkbd {\n padding: 0.1875rem 0.375rem;\n font-size: 0.875em;\n color: var(--bs-body-bg);\n background-color: var(--bs-body-color);\n border-radius: 0.25rem;\n}\nkbd kbd {\n padding: 0;\n font-size: 1em;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n color: var(--bs-secondary-color);\n text-align: left;\n}\n\nth {\n text-align: inherit;\n text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\nlabel {\n display: inline-block;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\n[role=button] {\n cursor: pointer;\n}\n\nselect {\n word-wrap: normal;\n}\nselect:disabled {\n opacity: 1;\n}\n\n[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {\n display: none !important;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n cursor: pointer;\n}\n\n::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ntextarea {\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n float: left;\n width: 100%;\n padding: 0;\n margin-bottom: 0.5rem;\n line-height: inherit;\n font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n legend {\n font-size: 1.5rem;\n }\n}\nlegend + * {\n clear: left;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n padding: 0;\n}\n\n::-webkit-inner-spin-button {\n height: auto;\n}\n\n[type=search] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n[type=search]::-webkit-search-cancel-button {\n cursor: pointer;\n filter: grayscale(1);\n}\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n direction: ltr;\n}\n*/\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n padding: 0;\n}\n\n::file-selector-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\niframe {\n border: 0;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[hidden] {\n display: none !important;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-weight: 300;\n line-height: 1.2;\n font-size: calc(1.625rem + 4.5vw);\n}\n@media (min-width: 1200px) {\n .display-1 {\n font-size: 5rem;\n }\n}\n\n.display-2 {\n font-weight: 300;\n line-height: 1.2;\n font-size: calc(1.575rem + 3.9vw);\n}\n@media (min-width: 1200px) {\n .display-2 {\n font-size: 4.5rem;\n }\n}\n\n.display-3 {\n font-weight: 300;\n line-height: 1.2;\n font-size: calc(1.525rem + 3.3vw);\n}\n@media (min-width: 1200px) {\n .display-3 {\n font-size: 4rem;\n }\n}\n\n.display-4 {\n font-weight: 300;\n line-height: 1.2;\n font-size: calc(1.475rem + 2.7vw);\n}\n@media (min-width: 1200px) {\n .display-4 {\n font-size: 3.5rem;\n }\n}\n\n.display-5 {\n font-weight: 300;\n line-height: 1.2;\n font-size: calc(1.425rem + 2.1vw);\n}\n@media (min-width: 1200px) {\n .display-5 {\n font-size: 3rem;\n }\n}\n\n.display-6 {\n font-weight: 300;\n line-height: 1.2;\n font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n .display-6 {\n font-size: 2.5rem;\n }\n}\n\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n.list-inline-item:not(:last-child) {\n margin-right: 0.5rem;\n}\n\n.initialism {\n font-size: 0.875em;\n text-transform: uppercase;\n}\n\n.blockquote {\n margin-bottom: 1rem;\n font-size: 1.25rem;\n}\n.blockquote > :last-child {\n margin-bottom: 0;\n}\n\n.blockquote-footer {\n margin-top: -1rem;\n margin-bottom: 1rem;\n font-size: 0.875em;\n color: #6c757d;\n}\n.blockquote-footer::before {\n content: \"— \";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n padding: 0.25rem;\n background-color: var(--bs-body-bg);\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n max-width: 100%;\n height: auto;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n\n.figure-caption {\n font-size: 0.875em;\n color: var(--bs-secondary-color);\n}\n\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n:root {\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-left: 0;\n }\n .offset-xxl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-left: 25%;\n }\n .offset-xxl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-left: 50%;\n }\n .offset-xxl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-left: 75%;\n }\n .offset-xxl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-left: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.table {\n --bs-table-color-type: initial;\n --bs-table-bg-type: initial;\n --bs-table-color-state: initial;\n --bs-table-bg-state: initial;\n --bs-table-color: var(--bs-emphasis-color);\n --bs-table-bg: var(--bs-body-bg);\n --bs-table-border-color: var(--bs-border-color);\n --bs-table-accent-bg: transparent;\n --bs-table-striped-color: var(--bs-emphasis-color);\n --bs-table-striped-bg: rgba(var(--bs-emphasis-color-rgb), 0.05);\n --bs-table-active-color: var(--bs-emphasis-color);\n --bs-table-active-bg: rgba(var(--bs-emphasis-color-rgb), 0.1);\n --bs-table-hover-color: var(--bs-emphasis-color);\n --bs-table-hover-bg: rgba(var(--bs-emphasis-color-rgb), 0.075);\n width: 100%;\n margin-bottom: 1rem;\n vertical-align: top;\n border-color: var(--bs-table-border-color);\n}\n.table > :not(caption) > * > * {\n padding: 0.5rem 0.5rem;\n color: var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));\n background-color: var(--bs-table-bg);\n border-bottom-width: var(--bs-border-width);\n box-shadow: inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)));\n}\n.table > tbody {\n vertical-align: inherit;\n}\n.table > thead {\n vertical-align: bottom;\n}\n\n.table-group-divider {\n border-top: calc(var(--bs-border-width) * 2) solid currentcolor;\n}\n\n.caption-top {\n caption-side: top;\n}\n\n.table-sm > :not(caption) > * > * {\n padding: 0.25rem 0.25rem;\n}\n\n.table-bordered > :not(caption) > * {\n border-width: var(--bs-border-width) 0;\n}\n.table-bordered > :not(caption) > * > * {\n border-width: 0 var(--bs-border-width);\n}\n\n.table-borderless > :not(caption) > * > * {\n border-bottom-width: 0;\n}\n.table-borderless > :not(:first-child) {\n border-top-width: 0;\n}\n\n.table-striped > tbody > tr:nth-of-type(odd) > * {\n --bs-table-color-type: var(--bs-table-striped-color);\n --bs-table-bg-type: var(--bs-table-striped-bg);\n}\n\n.table-striped-columns > :not(caption) > tr > :nth-child(even) {\n --bs-table-color-type: var(--bs-table-striped-color);\n --bs-table-bg-type: var(--bs-table-striped-bg);\n}\n\n.table-active {\n --bs-table-color-state: var(--bs-table-active-color);\n --bs-table-bg-state: var(--bs-table-active-bg);\n}\n\n.table-hover > tbody > tr:hover > * {\n --bs-table-color-state: var(--bs-table-hover-color);\n --bs-table-bg-state: var(--bs-table-hover-bg);\n}\n\n.table-primary {\n --bs-table-color: #000;\n --bs-table-bg: rgb(81.0196078431%, 88.6274509804%, 99.8431372549%);\n --bs-table-border-color: rgb(64.8156862745%, 70.9019607843%, 79.8745098039%);\n --bs-table-striped-bg: rgb(76.968627451%, 84.1960784314%, 94.8509803922%);\n --bs-table-striped-color: #000;\n --bs-table-active-bg: rgb(72.9176470588%, 79.7647058824%, 89.8588235294%);\n --bs-table-active-color: #000;\n --bs-table-hover-bg: rgb(74.9431372549%, 81.9803921569%, 92.3549019608%);\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-secondary {\n --bs-table-color: #000;\n --bs-table-bg: rgb(88.4705882353%, 89.1764705882%, 89.8039215686%);\n --bs-table-border-color: rgb(70.7764705882%, 71.3411764706%, 71.8431372549%);\n --bs-table-striped-bg: rgb(84.0470588235%, 84.7176470588%, 85.3137254902%);\n --bs-table-striped-color: #000;\n --bs-table-active-bg: rgb(79.6235294118%, 80.2588235294%, 80.8235294118%);\n --bs-table-active-color: #000;\n --bs-table-hover-bg: rgb(81.8352941176%, 82.4882352941%, 83.068627451%);\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-success {\n --bs-table-color: #000;\n --bs-table-bg: rgb(81.9607843137%, 90.5882352941%, 86.5882352941%);\n --bs-table-border-color: rgb(65.568627451%, 72.4705882353%, 69.2705882353%);\n --bs-table-striped-bg: rgb(77.862745098%, 86.0588235294%, 82.2588235294%);\n --bs-table-striped-color: #000;\n --bs-table-active-bg: rgb(73.7647058824%, 81.5294117647%, 77.9294117647%);\n --bs-table-active-color: #000;\n --bs-table-hover-bg: rgb(75.8137254902%, 83.7941176471%, 80.0941176471%);\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-info {\n --bs-table-color: #000;\n --bs-table-bg: rgb(81.0196078431%, 95.8431372549%, 98.8235294118%);\n --bs-table-border-color: rgb(64.8156862745%, 76.6745098039%, 79.0588235294%);\n --bs-table-striped-bg: rgb(76.968627451%, 91.0509803922%, 93.8823529412%);\n --bs-table-striped-color: #000;\n --bs-table-active-bg: rgb(72.9176470588%, 86.2588235294%, 88.9411764706%);\n --bs-table-active-color: #000;\n --bs-table-hover-bg: rgb(74.9431372549%, 88.6549019608%, 91.4117647059%);\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-warning {\n --bs-table-color: #000;\n --bs-table-bg: rgb(100%, 95.137254902%, 80.5490196078%);\n --bs-table-border-color: rgb(80%, 76.1098039216%, 64.4392156863%);\n --bs-table-striped-bg: rgb(95%, 90.3803921569%, 76.5215686275%);\n --bs-table-striped-color: #000;\n --bs-table-active-bg: rgb(90%, 85.6235294118%, 72.4941176471%);\n --bs-table-active-color: #000;\n --bs-table-hover-bg: rgb(92.5%, 88.0019607843%, 74.5078431373%);\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-danger {\n --bs-table-color: #000;\n --bs-table-bg: rgb(97.2549019608%, 84.1568627451%, 85.4117647059%);\n --bs-table-border-color: rgb(77.8039215686%, 67.3254901961%, 68.3294117647%);\n --bs-table-striped-bg: rgb(92.3921568627%, 79.9490196078%, 81.1411764706%);\n --bs-table-striped-color: #000;\n --bs-table-active-bg: rgb(87.5294117647%, 75.7411764706%, 76.8705882353%);\n --bs-table-active-color: #000;\n --bs-table-hover-bg: rgb(89.9607843137%, 77.8450980392%, 79.0058823529%);\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-light {\n --bs-table-color: #000;\n --bs-table-bg: #f8f9fa;\n --bs-table-border-color: rgb(77.8039215686%, 78.1176470588%, 78.431372549%);\n --bs-table-striped-bg: rgb(92.3921568627%, 92.7647058824%, 93.137254902%);\n --bs-table-striped-color: #000;\n --bs-table-active-bg: rgb(87.5294117647%, 87.8823529412%, 88.2352941176%);\n --bs-table-active-color: #000;\n --bs-table-hover-bg: rgb(89.9607843137%, 90.3235294118%, 90.6862745098%);\n --bs-table-hover-color: #000;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-dark {\n --bs-table-color: #fff;\n --bs-table-bg: #212529;\n --bs-table-border-color: rgb(30.3529411765%, 31.6078431373%, 32.862745098%);\n --bs-table-striped-bg: rgb(17.2941176471%, 18.7843137255%, 20.2745098039%);\n --bs-table-striped-color: #fff;\n --bs-table-active-bg: rgb(21.6470588235%, 23.0588235294%, 24.4705882353%);\n --bs-table-active-color: #fff;\n --bs-table-hover-bg: rgb(19.4705882353%, 20.9215686275%, 22.3725490196%);\n --bs-table-hover-color: #fff;\n color: var(--bs-table-color);\n border-color: var(--bs-table-border-color);\n}\n\n.table-responsive {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n@media (max-width: 575.98px) {\n .table-responsive-sm {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 767.98px) {\n .table-responsive-md {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 991.98px) {\n .table-responsive-lg {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 1199.98px) {\n .table-responsive-xl {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n@media (max-width: 1399.98px) {\n .table-responsive-xxl {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n}\n.form-label {\n margin-bottom: 0.5rem;\n}\n\n.col-form-label {\n padding-top: calc(0.375rem + var(--bs-border-width));\n padding-bottom: calc(0.375rem + var(--bs-border-width));\n margin-bottom: 0;\n font-size: inherit;\n line-height: 1.5;\n}\n\n.col-form-label-lg {\n padding-top: calc(0.5rem + var(--bs-border-width));\n padding-bottom: calc(0.5rem + var(--bs-border-width));\n font-size: 1.25rem;\n}\n\n.col-form-label-sm {\n padding-top: calc(0.25rem + var(--bs-border-width));\n padding-bottom: calc(0.25rem + var(--bs-border-width));\n font-size: 0.875rem;\n}\n\n.form-text {\n margin-top: 0.25rem;\n font-size: 0.875em;\n color: var(--bs-secondary-color);\n}\n\n.form-control {\n display: block;\n width: 100%;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: var(--bs-body-color);\n appearance: none;\n background-color: var(--bs-body-bg);\n background-clip: padding-box;\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-control {\n transition: none;\n }\n}\n.form-control[type=file] {\n overflow: hidden;\n}\n.form-control[type=file]:not(:disabled):not([readonly]) {\n cursor: pointer;\n}\n.form-control:focus {\n color: var(--bs-body-color);\n background-color: var(--bs-body-bg);\n border-color: rgb(52.5490196078%, 71.568627451%, 99.6078431373%);\n outline: 0;\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-control::-webkit-date-and-time-value {\n min-width: 85px;\n height: 1.5em;\n margin: 0;\n}\n.form-control::-webkit-datetime-edit {\n display: block;\n padding: 0;\n}\n.form-control::placeholder {\n color: var(--bs-secondary-color);\n opacity: 1;\n}\n.form-control:disabled {\n background-color: var(--bs-secondary-bg);\n opacity: 1;\n}\n.form-control::file-selector-button {\n padding: 0.375rem 0.75rem;\n margin: -0.375rem -0.75rem;\n margin-inline-end: 0.75rem;\n color: var(--bs-body-color);\n background-color: var(--bs-tertiary-bg);\n pointer-events: none;\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n border-inline-end-width: var(--bs-border-width);\n border-radius: 0;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-control::file-selector-button {\n transition: none;\n }\n}\n.form-control:hover:not(:disabled):not([readonly])::file-selector-button {\n background-color: var(--bs-secondary-bg);\n}\n\n.form-control-plaintext {\n display: block;\n width: 100%;\n padding: 0.375rem 0;\n margin-bottom: 0;\n line-height: 1.5;\n color: var(--bs-body-color);\n background-color: transparent;\n border: solid transparent;\n border-width: var(--bs-border-width) 0;\n}\n.form-control-plaintext:focus {\n outline: 0;\n}\n.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n padding-right: 0;\n padding-left: 0;\n}\n\n.form-control-sm {\n min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: var(--bs-border-radius-sm);\n}\n.form-control-sm::file-selector-button {\n padding: 0.25rem 0.5rem;\n margin: -0.25rem -0.5rem;\n margin-inline-end: 0.5rem;\n}\n\n.form-control-lg {\n min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n border-radius: var(--bs-border-radius-lg);\n}\n.form-control-lg::file-selector-button {\n padding: 0.5rem 1rem;\n margin: -0.5rem -1rem;\n margin-inline-end: 1rem;\n}\n\ntextarea.form-control {\n min-height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2));\n}\ntextarea.form-control-sm {\n min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));\n}\ntextarea.form-control-lg {\n min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n}\n\n.form-control-color {\n width: 3rem;\n height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2));\n padding: 0.375rem;\n}\n.form-control-color:not(:disabled):not([readonly]) {\n cursor: pointer;\n}\n.form-control-color::-moz-color-swatch {\n border: 0 !important;\n border-radius: var(--bs-border-radius);\n}\n.form-control-color::-webkit-color-swatch {\n border: 0 !important;\n border-radius: var(--bs-border-radius);\n}\n.form-control-color.form-control-sm {\n height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));\n}\n.form-control-color.form-control-lg {\n height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));\n}\n\n.form-select {\n --bs-form-select-bg-img: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n display: block;\n width: 100%;\n padding: 0.375rem 2.25rem 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: var(--bs-body-color);\n appearance: none;\n background-color: var(--bs-body-bg);\n background-image: var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none);\n background-repeat: no-repeat;\n background-position: right 0.75rem center;\n background-size: 16px 12px;\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-select {\n transition: none;\n }\n}\n.form-select:focus {\n border-color: rgb(52.5490196078%, 71.568627451%, 99.6078431373%);\n outline: 0;\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-select[multiple], .form-select[size]:not([size=\"1\"]) {\n padding-right: 0.75rem;\n background-image: none;\n}\n.form-select:disabled {\n background-color: var(--bs-secondary-bg);\n}\n.form-select:-moz-focusring {\n color: transparent;\n text-shadow: 0 0 0 var(--bs-body-color);\n}\n\n.form-select-sm {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n padding-left: 0.5rem;\n font-size: 0.875rem;\n border-radius: var(--bs-border-radius-sm);\n}\n\n.form-select-lg {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n padding-left: 1rem;\n font-size: 1.25rem;\n border-radius: var(--bs-border-radius-lg);\n}\n\n[data-bs-theme=dark] .form-select {\n --bs-form-select-bg-img: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n}\n\n.form-check {\n display: block;\n min-height: 1.5rem;\n padding-left: 1.5em;\n margin-bottom: 0.125rem;\n}\n.form-check .form-check-input {\n float: left;\n margin-left: -1.5em;\n}\n\n.form-check-reverse {\n padding-right: 1.5em;\n padding-left: 0;\n text-align: right;\n}\n.form-check-reverse .form-check-input {\n float: right;\n margin-right: -1.5em;\n margin-left: 0;\n}\n\n.form-check-input {\n --bs-form-check-bg: var(--bs-body-bg);\n flex-shrink: 0;\n width: 1em;\n height: 1em;\n margin-top: 0.25em;\n vertical-align: top;\n appearance: none;\n background-color: var(--bs-form-check-bg);\n background-image: var(--bs-form-check-bg-image);\n background-repeat: no-repeat;\n background-position: center;\n background-size: contain;\n border: var(--bs-border-width) solid var(--bs-border-color);\n print-color-adjust: exact;\n}\n.form-check-input[type=checkbox] {\n border-radius: 0.25em;\n}\n.form-check-input[type=radio] {\n border-radius: 50%;\n}\n.form-check-input:active {\n filter: brightness(90%);\n}\n.form-check-input:focus {\n border-color: rgb(52.5490196078%, 71.568627451%, 99.6078431373%);\n outline: 0;\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-check-input:checked {\n background-color: #0d6efd;\n border-color: #0d6efd;\n}\n.form-check-input:checked[type=checkbox] {\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e\");\n}\n.form-check-input:checked[type=radio] {\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e\");\n}\n.form-check-input[type=checkbox]:indeterminate {\n background-color: #0d6efd;\n border-color: #0d6efd;\n --bs-form-check-bg-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e\");\n}\n.form-check-input:disabled {\n pointer-events: none;\n filter: none;\n opacity: 0.5;\n}\n.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label {\n cursor: default;\n opacity: 0.5;\n}\n\n.form-switch {\n padding-left: 2.5em;\n}\n.form-switch .form-check-input {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e\");\n width: 2em;\n margin-left: -2.5em;\n background-image: var(--bs-form-switch-bg);\n background-position: left center;\n border-radius: 2em;\n transition: background-position 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-switch .form-check-input {\n transition: none;\n }\n}\n.form-switch .form-check-input:focus {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgb%2852.5490196078%, 71.568627451%, 99.6078431373%%29'/%3e%3c/svg%3e\");\n}\n.form-switch .form-check-input:checked {\n background-position: right center;\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\");\n}\n.form-switch.form-check-reverse {\n padding-right: 2.5em;\n padding-left: 0;\n}\n.form-switch.form-check-reverse .form-check-input {\n margin-right: -2.5em;\n margin-left: 0;\n}\n\n.form-check-inline {\n display: inline-block;\n margin-right: 1rem;\n}\n\n.btn-check {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.btn-check[disabled] + .btn, .btn-check:disabled + .btn {\n pointer-events: none;\n filter: none;\n opacity: 0.65;\n}\n\n[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus) {\n --bs-form-switch-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e\");\n}\n\n.form-range {\n width: 100%;\n height: 1.5rem;\n padding: 0;\n appearance: none;\n background-color: transparent;\n}\n.form-range:focus {\n outline: 0;\n}\n.form-range:focus::-webkit-slider-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-range:focus::-moz-range-thumb {\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-range::-moz-focus-outer {\n border: 0;\n}\n.form-range::-webkit-slider-thumb {\n width: 1rem;\n height: 1rem;\n margin-top: -0.25rem;\n appearance: none;\n background-color: #0d6efd;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-range::-webkit-slider-thumb {\n transition: none;\n }\n}\n.form-range::-webkit-slider-thumb:active {\n background-color: rgb(71.5294117647%, 82.9411764706%, 99.7647058824%);\n}\n.form-range::-webkit-slider-runnable-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: var(--bs-secondary-bg);\n border-color: transparent;\n border-radius: 1rem;\n}\n.form-range::-moz-range-thumb {\n width: 1rem;\n height: 1rem;\n appearance: none;\n background-color: #0d6efd;\n border: 0;\n border-radius: 1rem;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-range::-moz-range-thumb {\n transition: none;\n }\n}\n.form-range::-moz-range-thumb:active {\n background-color: rgb(71.5294117647%, 82.9411764706%, 99.7647058824%);\n}\n.form-range::-moz-range-track {\n width: 100%;\n height: 0.5rem;\n color: transparent;\n cursor: pointer;\n background-color: var(--bs-secondary-bg);\n border-color: transparent;\n border-radius: 1rem;\n}\n.form-range:disabled {\n pointer-events: none;\n}\n.form-range:disabled::-webkit-slider-thumb {\n background-color: var(--bs-secondary-color);\n}\n.form-range:disabled::-moz-range-thumb {\n background-color: var(--bs-secondary-color);\n}\n\n.form-floating {\n position: relative;\n}\n.form-floating > .form-control,\n.form-floating > .form-control-plaintext,\n.form-floating > .form-select {\n height: calc(3.5rem + calc(var(--bs-border-width) * 2));\n min-height: calc(3.5rem + calc(var(--bs-border-width) * 2));\n line-height: 1.25;\n}\n.form-floating > label {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 2;\n max-width: 100%;\n height: 100%;\n padding: 1rem 0.75rem;\n overflow: hidden;\n color: rgba(var(--bs-body-color-rgb), 0.65);\n text-align: start;\n text-overflow: ellipsis;\n white-space: nowrap;\n pointer-events: none;\n border: var(--bs-border-width) solid transparent;\n transform-origin: 0 0;\n transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .form-floating > label {\n transition: none;\n }\n}\n.form-floating > .form-control,\n.form-floating > .form-control-plaintext {\n padding: 1rem 0.75rem;\n}\n.form-floating > .form-control::placeholder,\n.form-floating > .form-control-plaintext::placeholder {\n color: transparent;\n}\n.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown),\n.form-floating > .form-control-plaintext:focus,\n.form-floating > .form-control-plaintext:not(:placeholder-shown) {\n padding-top: 1.625rem;\n padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:-webkit-autofill,\n.form-floating > .form-control-plaintext:-webkit-autofill {\n padding-top: 1.625rem;\n padding-bottom: 0.625rem;\n}\n.form-floating > .form-select {\n padding-top: 1.625rem;\n padding-bottom: 0.625rem;\n padding-left: 0.75rem;\n}\n.form-floating > .form-control:focus ~ label,\n.form-floating > .form-control:not(:placeholder-shown) ~ label,\n.form-floating > .form-control-plaintext ~ label,\n.form-floating > .form-select ~ label {\n transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n.form-floating > .form-control:-webkit-autofill ~ label {\n transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n.form-floating > textarea:focus ~ label::after,\n.form-floating > textarea:not(:placeholder-shown) ~ label::after {\n position: absolute;\n inset: 1rem 0.375rem;\n z-index: -1;\n height: 1.5em;\n content: \"\";\n background-color: var(--bs-body-bg);\n border-radius: var(--bs-border-radius);\n}\n.form-floating > textarea:disabled ~ label::after {\n background-color: var(--bs-secondary-bg);\n}\n.form-floating > .form-control-plaintext ~ label {\n border-width: var(--bs-border-width) 0;\n}\n.form-floating > :disabled ~ label,\n.form-floating > .form-control:disabled ~ label {\n color: #6c757d;\n}\n\n.input-group {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: stretch;\n width: 100%;\n}\n.input-group > .form-control,\n.input-group > .form-select,\n.input-group > .form-floating {\n position: relative;\n flex: 1 1 auto;\n width: 1%;\n min-width: 0;\n}\n.input-group > .form-control:focus,\n.input-group > .form-select:focus,\n.input-group > .form-floating:focus-within {\n z-index: 5;\n}\n.input-group .btn {\n position: relative;\n z-index: 2;\n}\n.input-group .btn:focus {\n z-index: 5;\n}\n\n.input-group-text {\n display: flex;\n align-items: center;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n font-weight: 400;\n line-height: 1.5;\n color: var(--bs-body-color);\n text-align: center;\n white-space: nowrap;\n background-color: var(--bs-tertiary-bg);\n border: var(--bs-border-width) solid var(--bs-border-color);\n border-radius: var(--bs-border-radius);\n}\n\n.input-group-lg > .form-control,\n.input-group-lg > .form-select,\n.input-group-lg > .input-group-text,\n.input-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n border-radius: var(--bs-border-radius-lg);\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .form-select,\n.input-group-sm > .input-group-text,\n.input-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: var(--bs-border-radius-sm);\n}\n\n.input-group-lg > .form-select,\n.input-group-sm > .form-select {\n padding-right: 3rem;\n}\n\n.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),\n.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3),\n.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control,\n.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),\n.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4),\n.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control,\n.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {\n margin-left: calc(-1 * var(--bs-border-width));\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.input-group > .form-floating:not(:first-child) > .form-control,\n.input-group > .form-floating:not(:first-child) > .form-select {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.valid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 0.875em;\n color: var(--bs-form-valid-color);\n}\n\n.valid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: 0.1rem;\n font-size: 0.875rem;\n color: #fff;\n background-color: var(--bs-success);\n border-radius: var(--bs-border-radius);\n}\n\n.was-validated :valid ~ .valid-feedback,\n.was-validated :valid ~ .valid-tooltip,\n.is-valid ~ .valid-feedback,\n.is-valid ~ .valid-tooltip {\n display: block;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid {\n border-color: var(--bs-form-valid-border-color);\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus {\n border-color: var(--bs-form-valid-border-color);\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);\n}\n\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:valid, .form-select.is-valid {\n border-color: var(--bs-form-valid-border-color);\n}\n.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size=\"1\"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size=\"1\"] {\n --bs-form-select-bg-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1'/%3e%3c/svg%3e\");\n padding-right: 4.125rem;\n background-position: right 0.75rem center, center right 2.25rem;\n background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:valid:focus, .form-select.is-valid:focus {\n border-color: var(--bs-form-valid-border-color);\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);\n}\n\n.was-validated .form-control-color:valid, .form-control-color.is-valid {\n width: calc(3rem + calc(1.5em + 0.75rem));\n}\n\n.was-validated .form-check-input:valid, .form-check-input.is-valid {\n border-color: var(--bs-form-valid-border-color);\n}\n.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked {\n background-color: var(--bs-form-valid-color);\n}\n.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus {\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);\n}\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n color: var(--bs-form-valid-color);\n}\n\n.form-check-inline .form-check-input ~ .valid-feedback {\n margin-left: 0.5em;\n}\n\n.was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid,\n.was-validated .input-group > .form-select:not(:focus):valid,\n.input-group > .form-select:not(:focus).is-valid,\n.was-validated .input-group > .form-floating:not(:focus-within):valid,\n.input-group > .form-floating:not(:focus-within).is-valid {\n z-index: 3;\n}\n\n.invalid-feedback {\n display: none;\n width: 100%;\n margin-top: 0.25rem;\n font-size: 0.875em;\n color: var(--bs-form-invalid-color);\n}\n\n.invalid-tooltip {\n position: absolute;\n top: 100%;\n z-index: 5;\n display: none;\n max-width: 100%;\n padding: 0.25rem 0.5rem;\n margin-top: 0.1rem;\n font-size: 0.875rem;\n color: #fff;\n background-color: var(--bs-danger);\n border-radius: var(--bs-border-radius);\n}\n\n.was-validated :invalid ~ .invalid-feedback,\n.was-validated :invalid ~ .invalid-tooltip,\n.is-invalid ~ .invalid-feedback,\n.is-invalid ~ .invalid-tooltip {\n display: block;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid {\n border-color: var(--bs-form-invalid-border-color);\n padding-right: calc(1.5em + 0.75rem);\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right calc(0.375em + 0.1875rem) center;\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\n border-color: var(--bs-form-invalid-border-color);\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);\n}\n\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n padding-right: calc(1.5em + 0.75rem);\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:invalid, .form-select.is-invalid {\n border-color: var(--bs-form-invalid-border-color);\n}\n.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size=\"1\"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size=\"1\"] {\n --bs-form-select-bg-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n padding-right: 4.125rem;\n background-position: right 0.75rem center, center right 2.25rem;\n background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus {\n border-color: var(--bs-form-invalid-border-color);\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);\n}\n\n.was-validated .form-control-color:invalid, .form-control-color.is-invalid {\n width: calc(3rem + calc(1.5em + 0.75rem));\n}\n\n.was-validated .form-check-input:invalid, .form-check-input.is-invalid {\n border-color: var(--bs-form-invalid-border-color);\n}\n.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked {\n background-color: var(--bs-form-invalid-color);\n}\n.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus {\n box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);\n}\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n color: var(--bs-form-invalid-color);\n}\n\n.form-check-inline .form-check-input ~ .invalid-feedback {\n margin-left: 0.5em;\n}\n\n.was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid,\n.was-validated .input-group > .form-select:not(:focus):invalid,\n.input-group > .form-select:not(:focus).is-invalid,\n.was-validated .input-group > .form-floating:not(:focus-within):invalid,\n.input-group > .form-floating:not(:focus-within).is-invalid {\n z-index: 4;\n}\n\n.btn {\n --bs-btn-padding-x: 0.75rem;\n --bs-btn-padding-y: 0.375rem;\n --bs-btn-font-family: ;\n --bs-btn-font-size: 1rem;\n --bs-btn-font-weight: 400;\n --bs-btn-line-height: 1.5;\n --bs-btn-color: var(--bs-body-color);\n --bs-btn-bg: transparent;\n --bs-btn-border-width: var(--bs-border-width);\n --bs-btn-border-color: transparent;\n --bs-btn-border-radius: var(--bs-border-radius);\n --bs-btn-hover-border-color: transparent;\n --bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n --bs-btn-disabled-opacity: 0.65;\n --bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);\n display: inline-block;\n padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x);\n font-family: var(--bs-btn-font-family);\n font-size: var(--bs-btn-font-size);\n font-weight: var(--bs-btn-font-weight);\n line-height: var(--bs-btn-line-height);\n color: var(--bs-btn-color);\n text-align: center;\n text-decoration: none;\n vertical-align: middle;\n cursor: pointer;\n user-select: none;\n border: var(--bs-btn-border-width) solid var(--bs-btn-border-color);\n border-radius: var(--bs-btn-border-radius);\n background-color: var(--bs-btn-bg);\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .btn {\n transition: none;\n }\n}\n.btn:hover {\n color: var(--bs-btn-hover-color);\n background-color: var(--bs-btn-hover-bg);\n border-color: var(--bs-btn-hover-border-color);\n}\n.btn-check + .btn:hover {\n color: var(--bs-btn-color);\n background-color: var(--bs-btn-bg);\n border-color: var(--bs-btn-border-color);\n}\n.btn:focus-visible {\n color: var(--bs-btn-hover-color);\n background-color: var(--bs-btn-hover-bg);\n border-color: var(--bs-btn-hover-border-color);\n outline: 0;\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n.btn-check:focus-visible + .btn {\n border-color: var(--bs-btn-hover-border-color);\n outline: 0;\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n.btn-check:checked + .btn, :not(.btn-check) + .btn:active, .btn:first-child:active, .btn.active, .btn.show {\n color: var(--bs-btn-active-color);\n background-color: var(--bs-btn-active-bg);\n border-color: var(--bs-btn-active-border-color);\n}\n.btn-check:checked + .btn:focus-visible, :not(.btn-check) + .btn:active:focus-visible, .btn:first-child:active:focus-visible, .btn.active:focus-visible, .btn.show:focus-visible {\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n.btn-check:checked:focus-visible + .btn {\n box-shadow: var(--bs-btn-focus-box-shadow);\n}\n.btn:disabled, .btn.disabled, fieldset:disabled .btn {\n color: var(--bs-btn-disabled-color);\n pointer-events: none;\n background-color: var(--bs-btn-disabled-bg);\n border-color: var(--bs-btn-disabled-border-color);\n opacity: var(--bs-btn-disabled-opacity);\n}\n\n.btn-primary {\n --bs-btn-color: #fff;\n --bs-btn-bg: #0d6efd;\n --bs-btn-border-color: #0d6efd;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: rgb(4.3333333333%, 36.6666666667%, 84.3333333333%);\n --bs-btn-hover-border-color: rgb(4.0784313725%, 34.5098039216%, 79.3725490196%);\n --bs-btn-focus-shadow-rgb: 49, 132, 253;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: rgb(4.0784313725%, 34.5098039216%, 79.3725490196%);\n --bs-btn-active-border-color: rgb(3.8235294118%, 32.3529411765%, 74.4117647059%);\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #0d6efd;\n --bs-btn-disabled-border-color: #0d6efd;\n}\n\n.btn-secondary {\n --bs-btn-color: #fff;\n --bs-btn-bg: #6c757d;\n --bs-btn-border-color: #6c757d;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: rgb(36%, 39%, 41.6666666667%);\n --bs-btn-hover-border-color: rgb(33.8823529412%, 36.7058823529%, 39.2156862745%);\n --bs-btn-focus-shadow-rgb: 130, 138, 145;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: rgb(33.8823529412%, 36.7058823529%, 39.2156862745%);\n --bs-btn-active-border-color: rgb(31.7647058824%, 34.4117647059%, 36.7647058824%);\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #6c757d;\n --bs-btn-disabled-border-color: #6c757d;\n}\n\n.btn-success {\n --bs-btn-color: #fff;\n --bs-btn-bg: #198754;\n --bs-btn-border-color: #198754;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: rgb(8.3333333333%, 45%, 28%);\n --bs-btn-hover-border-color: rgb(7.8431372549%, 42.3529411765%, 26.3529411765%);\n --bs-btn-focus-shadow-rgb: 60, 153, 110;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: rgb(7.8431372549%, 42.3529411765%, 26.3529411765%);\n --bs-btn-active-border-color: rgb(7.3529411765%, 39.7058823529%, 24.7058823529%);\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #198754;\n --bs-btn-disabled-border-color: #198754;\n}\n\n.btn-info {\n --bs-btn-color: #000;\n --bs-btn-bg: #0dcaf0;\n --bs-btn-border-color: #0dcaf0;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: rgb(19.3333333333%, 82.3333333333%, 95%);\n --bs-btn-hover-border-color: rgb(14.5882352941%, 81.2941176471%, 94.7058823529%);\n --bs-btn-focus-shadow-rgb: 11, 172, 204;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: rgb(24.0784313725%, 83.3725490196%, 95.2941176471%);\n --bs-btn-active-border-color: rgb(14.5882352941%, 81.2941176471%, 94.7058823529%);\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #0dcaf0;\n --bs-btn-disabled-border-color: #0dcaf0;\n}\n\n.btn-warning {\n --bs-btn-color: #000;\n --bs-btn-bg: #ffc107;\n --bs-btn-border-color: #ffc107;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: rgb(100%, 79.3333333333%, 17.3333333333%);\n --bs-btn-hover-border-color: rgb(100%, 78.1176470588%, 12.4705882353%);\n --bs-btn-focus-shadow-rgb: 217, 164, 6;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: rgb(100%, 80.5490196078%, 22.1960784314%);\n --bs-btn-active-border-color: rgb(100%, 78.1176470588%, 12.4705882353%);\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #ffc107;\n --bs-btn-disabled-border-color: #ffc107;\n}\n\n.btn-danger {\n --bs-btn-color: #fff;\n --bs-btn-bg: #dc3545;\n --bs-btn-border-color: #dc3545;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: rgb(73.3333333333%, 17.6666666667%, 23%);\n --bs-btn-hover-border-color: rgb(69.0196078431%, 16.6274509804%, 21.6470588235%);\n --bs-btn-focus-shadow-rgb: 225, 83, 97;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: rgb(69.0196078431%, 16.6274509804%, 21.6470588235%);\n --bs-btn-active-border-color: rgb(64.7058823529%, 15.5882352941%, 20.2941176471%);\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #dc3545;\n --bs-btn-disabled-border-color: #dc3545;\n}\n\n.btn-light {\n --bs-btn-color: #000;\n --bs-btn-bg: #f8f9fa;\n --bs-btn-border-color: #f8f9fa;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: rgb(82.6666666667%, 83%, 83.3333333333%);\n --bs-btn-hover-border-color: rgb(77.8039215686%, 78.1176470588%, 78.431372549%);\n --bs-btn-focus-shadow-rgb: 211, 212, 213;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: rgb(77.8039215686%, 78.1176470588%, 78.431372549%);\n --bs-btn-active-border-color: rgb(72.9411764706%, 73.2352941176%, 73.5294117647%);\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #000;\n --bs-btn-disabled-bg: #f8f9fa;\n --bs-btn-disabled-border-color: #f8f9fa;\n}\n\n.btn-dark {\n --bs-btn-color: #fff;\n --bs-btn-bg: #212529;\n --bs-btn-border-color: #212529;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: rgb(26%, 27.3333333333%, 28.6666666667%);\n --bs-btn-hover-border-color: rgb(21.6470588235%, 23.0588235294%, 24.4705882353%);\n --bs-btn-focus-shadow-rgb: 66, 70, 73;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: rgb(30.3529411765%, 31.6078431373%, 32.862745098%);\n --bs-btn-active-border-color: rgb(21.6470588235%, 23.0588235294%, 24.4705882353%);\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #fff;\n --bs-btn-disabled-bg: #212529;\n --bs-btn-disabled-border-color: #212529;\n}\n\n.btn-outline-primary {\n --bs-btn-color: #0d6efd;\n --bs-btn-border-color: #0d6efd;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #0d6efd;\n --bs-btn-hover-border-color: #0d6efd;\n --bs-btn-focus-shadow-rgb: 13, 110, 253;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #0d6efd;\n --bs-btn-active-border-color: #0d6efd;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #0d6efd;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #0d6efd;\n --bs-gradient: none;\n}\n\n.btn-outline-secondary {\n --bs-btn-color: #6c757d;\n --bs-btn-border-color: #6c757d;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #6c757d;\n --bs-btn-hover-border-color: #6c757d;\n --bs-btn-focus-shadow-rgb: 108, 117, 125;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #6c757d;\n --bs-btn-active-border-color: #6c757d;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #6c757d;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #6c757d;\n --bs-gradient: none;\n}\n\n.btn-outline-success {\n --bs-btn-color: #198754;\n --bs-btn-border-color: #198754;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #198754;\n --bs-btn-hover-border-color: #198754;\n --bs-btn-focus-shadow-rgb: 25, 135, 84;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #198754;\n --bs-btn-active-border-color: #198754;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #198754;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #198754;\n --bs-gradient: none;\n}\n\n.btn-outline-info {\n --bs-btn-color: #0dcaf0;\n --bs-btn-border-color: #0dcaf0;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #0dcaf0;\n --bs-btn-hover-border-color: #0dcaf0;\n --bs-btn-focus-shadow-rgb: 13, 202, 240;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #0dcaf0;\n --bs-btn-active-border-color: #0dcaf0;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #0dcaf0;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #0dcaf0;\n --bs-gradient: none;\n}\n\n.btn-outline-warning {\n --bs-btn-color: #ffc107;\n --bs-btn-border-color: #ffc107;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #ffc107;\n --bs-btn-hover-border-color: #ffc107;\n --bs-btn-focus-shadow-rgb: 255, 193, 7;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #ffc107;\n --bs-btn-active-border-color: #ffc107;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #ffc107;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #ffc107;\n --bs-gradient: none;\n}\n\n.btn-outline-danger {\n --bs-btn-color: #dc3545;\n --bs-btn-border-color: #dc3545;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #dc3545;\n --bs-btn-hover-border-color: #dc3545;\n --bs-btn-focus-shadow-rgb: 220, 53, 69;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #dc3545;\n --bs-btn-active-border-color: #dc3545;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #dc3545;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #dc3545;\n --bs-gradient: none;\n}\n\n.btn-outline-light {\n --bs-btn-color: #f8f9fa;\n --bs-btn-border-color: #f8f9fa;\n --bs-btn-hover-color: #000;\n --bs-btn-hover-bg: #f8f9fa;\n --bs-btn-hover-border-color: #f8f9fa;\n --bs-btn-focus-shadow-rgb: 248, 249, 250;\n --bs-btn-active-color: #000;\n --bs-btn-active-bg: #f8f9fa;\n --bs-btn-active-border-color: #f8f9fa;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #f8f9fa;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #f8f9fa;\n --bs-gradient: none;\n}\n\n.btn-outline-dark {\n --bs-btn-color: #212529;\n --bs-btn-border-color: #212529;\n --bs-btn-hover-color: #fff;\n --bs-btn-hover-bg: #212529;\n --bs-btn-hover-border-color: #212529;\n --bs-btn-focus-shadow-rgb: 33, 37, 41;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #212529;\n --bs-btn-active-border-color: #212529;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: #212529;\n --bs-btn-disabled-bg: transparent;\n --bs-btn-disabled-border-color: #212529;\n --bs-gradient: none;\n}\n\n.btn-link {\n --bs-btn-font-weight: 400;\n --bs-btn-color: var(--bs-link-color);\n --bs-btn-bg: transparent;\n --bs-btn-border-color: transparent;\n --bs-btn-hover-color: var(--bs-link-hover-color);\n --bs-btn-hover-border-color: transparent;\n --bs-btn-active-color: var(--bs-link-hover-color);\n --bs-btn-active-border-color: transparent;\n --bs-btn-disabled-color: #6c757d;\n --bs-btn-disabled-border-color: transparent;\n --bs-btn-box-shadow: 0 0 0 #000;\n --bs-btn-focus-shadow-rgb: 49, 132, 253;\n text-decoration: underline;\n}\n.btn-link:focus-visible {\n color: var(--bs-btn-color);\n}\n.btn-link:hover {\n color: var(--bs-btn-hover-color);\n}\n\n.btn-lg, .btn-group-lg > .btn {\n --bs-btn-padding-y: 0.5rem;\n --bs-btn-padding-x: 1rem;\n --bs-btn-font-size: 1.25rem;\n --bs-btn-border-radius: var(--bs-border-radius-lg);\n}\n\n.btn-sm, .btn-group-sm > .btn {\n --bs-btn-padding-y: 0.25rem;\n --bs-btn-padding-x: 0.5rem;\n --bs-btn-font-size: 0.875rem;\n --bs-btn-border-radius: var(--bs-border-radius-sm);\n}\n\n.fade {\n transition: opacity 0.15s linear;\n}\n@media (prefers-reduced-motion: reduce) {\n .fade {\n transition: none;\n }\n}\n.fade:not(.show) {\n opacity: 0;\n}\n\n.collapse:not(.show) {\n display: none;\n}\n\n.collapsing {\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .collapsing {\n transition: none;\n }\n}\n.collapsing.collapse-horizontal {\n width: 0;\n height: auto;\n transition: width 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .collapsing.collapse-horizontal {\n transition: none;\n }\n}\n\n.dropup,\n.dropend,\n.dropdown,\n.dropstart,\n.dropup-center,\n.dropdown-center {\n position: relative;\n}\n\n.dropdown-toggle {\n white-space: nowrap;\n}\n.dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-bottom: 0;\n border-left: 0.3em solid transparent;\n}\n.dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropdown-menu {\n --bs-dropdown-zindex: 1000;\n --bs-dropdown-min-width: 10rem;\n --bs-dropdown-padding-x: 0;\n --bs-dropdown-padding-y: 0.5rem;\n --bs-dropdown-spacer: 0.125rem;\n --bs-dropdown-font-size: 1rem;\n --bs-dropdown-color: var(--bs-body-color);\n --bs-dropdown-bg: var(--bs-body-bg);\n --bs-dropdown-border-color: var(--bs-border-color-translucent);\n --bs-dropdown-border-radius: var(--bs-border-radius);\n --bs-dropdown-border-width: var(--bs-border-width);\n --bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width));\n --bs-dropdown-divider-bg: var(--bs-border-color-translucent);\n --bs-dropdown-divider-margin-y: 0.5rem;\n --bs-dropdown-box-shadow: var(--bs-box-shadow);\n --bs-dropdown-link-color: var(--bs-body-color);\n --bs-dropdown-link-hover-color: var(--bs-body-color);\n --bs-dropdown-link-hover-bg: var(--bs-tertiary-bg);\n --bs-dropdown-link-active-color: #fff;\n --bs-dropdown-link-active-bg: #0d6efd;\n --bs-dropdown-link-disabled-color: var(--bs-tertiary-color);\n --bs-dropdown-item-padding-x: 1rem;\n --bs-dropdown-item-padding-y: 0.25rem;\n --bs-dropdown-header-color: #6c757d;\n --bs-dropdown-header-padding-x: 1rem;\n --bs-dropdown-header-padding-y: 0.5rem;\n position: absolute;\n z-index: var(--bs-dropdown-zindex);\n display: none;\n min-width: var(--bs-dropdown-min-width);\n padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);\n margin: 0;\n font-size: var(--bs-dropdown-font-size);\n color: var(--bs-dropdown-color);\n text-align: left;\n list-style: none;\n background-color: var(--bs-dropdown-bg);\n background-clip: padding-box;\n border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);\n border-radius: var(--bs-dropdown-border-radius);\n}\n.dropdown-menu[data-bs-popper] {\n top: 100%;\n left: 0;\n margin-top: var(--bs-dropdown-spacer);\n}\n\n.dropdown-menu-start {\n --bs-position: start;\n}\n.dropdown-menu-start[data-bs-popper] {\n right: auto;\n left: 0;\n}\n\n.dropdown-menu-end {\n --bs-position: end;\n}\n.dropdown-menu-end[data-bs-popper] {\n right: 0;\n left: auto;\n}\n\n@media (min-width: 576px) {\n .dropdown-menu-sm-start {\n --bs-position: start;\n }\n .dropdown-menu-sm-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-sm-end {\n --bs-position: end;\n }\n .dropdown-menu-sm-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 768px) {\n .dropdown-menu-md-start {\n --bs-position: start;\n }\n .dropdown-menu-md-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-md-end {\n --bs-position: end;\n }\n .dropdown-menu-md-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 992px) {\n .dropdown-menu-lg-start {\n --bs-position: start;\n }\n .dropdown-menu-lg-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-lg-end {\n --bs-position: end;\n }\n .dropdown-menu-lg-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 1200px) {\n .dropdown-menu-xl-start {\n --bs-position: start;\n }\n .dropdown-menu-xl-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-xl-end {\n --bs-position: end;\n }\n .dropdown-menu-xl-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n@media (min-width: 1400px) {\n .dropdown-menu-xxl-start {\n --bs-position: start;\n }\n .dropdown-menu-xxl-start[data-bs-popper] {\n right: auto;\n left: 0;\n }\n .dropdown-menu-xxl-end {\n --bs-position: end;\n }\n .dropdown-menu-xxl-end[data-bs-popper] {\n right: 0;\n left: auto;\n }\n}\n.dropup .dropdown-menu[data-bs-popper] {\n top: auto;\n bottom: 100%;\n margin-top: 0;\n margin-bottom: var(--bs-dropdown-spacer);\n}\n.dropup .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0;\n border-right: 0.3em solid transparent;\n border-bottom: 0.3em solid;\n border-left: 0.3em solid transparent;\n}\n.dropup .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropend .dropdown-menu[data-bs-popper] {\n top: 0;\n right: auto;\n left: 100%;\n margin-top: 0;\n margin-left: var(--bs-dropdown-spacer);\n}\n.dropend .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0;\n border-bottom: 0.3em solid transparent;\n border-left: 0.3em solid;\n}\n.dropend .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n.dropend .dropdown-toggle::after {\n vertical-align: 0;\n}\n\n.dropstart .dropdown-menu[data-bs-popper] {\n top: 0;\n right: 100%;\n left: auto;\n margin-top: 0;\n margin-right: var(--bs-dropdown-spacer);\n}\n.dropstart .dropdown-toggle::after {\n display: inline-block;\n margin-left: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n}\n.dropstart .dropdown-toggle::after {\n display: none;\n}\n.dropstart .dropdown-toggle::before {\n display: inline-block;\n margin-right: 0.255em;\n vertical-align: 0.255em;\n content: \"\";\n border-top: 0.3em solid transparent;\n border-right: 0.3em solid;\n border-bottom: 0.3em solid transparent;\n}\n.dropstart .dropdown-toggle:empty::after {\n margin-left: 0;\n}\n.dropstart .dropdown-toggle::before {\n vertical-align: 0;\n}\n\n.dropdown-divider {\n height: 0;\n margin: var(--bs-dropdown-divider-margin-y) 0;\n overflow: hidden;\n border-top: 1px solid var(--bs-dropdown-divider-bg);\n opacity: 1;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);\n clear: both;\n font-weight: 400;\n color: var(--bs-dropdown-link-color);\n text-align: inherit;\n text-decoration: none;\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n border-radius: var(--bs-dropdown-item-border-radius, 0);\n}\n.dropdown-item:hover, .dropdown-item:focus {\n color: var(--bs-dropdown-link-hover-color);\n background-color: var(--bs-dropdown-link-hover-bg);\n}\n.dropdown-item.active, .dropdown-item:active {\n color: var(--bs-dropdown-link-active-color);\n text-decoration: none;\n background-color: var(--bs-dropdown-link-active-bg);\n}\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: var(--bs-dropdown-link-disabled-color);\n pointer-events: none;\n background-color: transparent;\n}\n\n.dropdown-menu.show {\n display: block;\n}\n\n.dropdown-header {\n display: block;\n padding: var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);\n margin-bottom: 0;\n font-size: 0.875rem;\n color: var(--bs-dropdown-header-color);\n white-space: nowrap;\n}\n\n.dropdown-item-text {\n display: block;\n padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);\n color: var(--bs-dropdown-link-color);\n}\n\n.dropdown-menu-dark {\n --bs-dropdown-color: #dee2e6;\n --bs-dropdown-bg: #343a40;\n --bs-dropdown-border-color: var(--bs-border-color-translucent);\n --bs-dropdown-box-shadow: ;\n --bs-dropdown-link-color: #dee2e6;\n --bs-dropdown-link-hover-color: #fff;\n --bs-dropdown-divider-bg: var(--bs-border-color-translucent);\n --bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);\n --bs-dropdown-link-active-color: #fff;\n --bs-dropdown-link-active-bg: #0d6efd;\n --bs-dropdown-link-disabled-color: #adb5bd;\n --bs-dropdown-header-color: #adb5bd;\n}\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n flex: 1 1 auto;\n}\n.btn-group > .btn-check:checked + .btn,\n.btn-group > .btn-check:focus + .btn,\n.btn-group > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn-check:checked + .btn,\n.btn-group-vertical > .btn-check:focus + .btn,\n.btn-group-vertical > .btn:hover,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 1;\n}\n\n.btn-toolbar {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group {\n border-radius: var(--bs-border-radius);\n}\n.btn-group > :not(.btn-check:first-child) + .btn,\n.btn-group > .btn-group:not(:first-child) {\n margin-left: calc(-1 * var(--bs-border-width));\n}\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn.dropdown-toggle-split:first-child,\n.btn-group > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn:nth-child(n+3),\n.btn-group > :not(.btn-check) + .btn,\n.btn-group > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n padding-right: 0.5625rem;\n padding-left: 0.5625rem;\n}\n.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after {\n margin-left: 0;\n}\n.dropstart .dropdown-toggle-split::before {\n margin-right: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n width: 100%;\n}\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) {\n margin-top: calc(-1 * var(--bs-border-width));\n}\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:nth-child(n+3),\n.btn-group-vertical > :not(.btn-check) + .btn,\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav {\n --bs-nav-link-padding-x: 1rem;\n --bs-nav-link-padding-y: 0.5rem;\n --bs-nav-link-font-weight: ;\n --bs-nav-link-color: var(--bs-link-color);\n --bs-nav-link-hover-color: var(--bs-link-hover-color);\n --bs-nav-link-disabled-color: var(--bs-secondary-color);\n display: flex;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);\n font-size: var(--bs-nav-link-font-size);\n font-weight: var(--bs-nav-link-font-weight);\n color: var(--bs-nav-link-color);\n text-decoration: none;\n background: none;\n border: 0;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .nav-link {\n transition: none;\n }\n}\n.nav-link:hover, .nav-link:focus {\n color: var(--bs-nav-link-hover-color);\n}\n.nav-link:focus-visible {\n outline: 0;\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.nav-link.disabled, .nav-link:disabled {\n color: var(--bs-nav-link-disabled-color);\n pointer-events: none;\n cursor: default;\n}\n\n.nav-tabs {\n --bs-nav-tabs-border-width: var(--bs-border-width);\n --bs-nav-tabs-border-color: var(--bs-border-color);\n --bs-nav-tabs-border-radius: var(--bs-border-radius);\n --bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);\n --bs-nav-tabs-link-active-color: var(--bs-emphasis-color);\n --bs-nav-tabs-link-active-bg: var(--bs-body-bg);\n --bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);\n border-bottom: var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color);\n}\n.nav-tabs .nav-link {\n margin-bottom: calc(-1 * var(--bs-nav-tabs-border-width));\n border: var(--bs-nav-tabs-border-width) solid transparent;\n border-top-left-radius: var(--bs-nav-tabs-border-radius);\n border-top-right-radius: var(--bs-nav-tabs-border-radius);\n}\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n isolation: isolate;\n border-color: var(--bs-nav-tabs-link-hover-border-color);\n}\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: var(--bs-nav-tabs-link-active-color);\n background-color: var(--bs-nav-tabs-link-active-bg);\n border-color: var(--bs-nav-tabs-link-active-border-color);\n}\n.nav-tabs .dropdown-menu {\n margin-top: calc(-1 * var(--bs-nav-tabs-border-width));\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav-pills {\n --bs-nav-pills-border-radius: var(--bs-border-radius);\n --bs-nav-pills-link-active-color: #fff;\n --bs-nav-pills-link-active-bg: #0d6efd;\n}\n.nav-pills .nav-link {\n border-radius: var(--bs-nav-pills-border-radius);\n}\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n color: var(--bs-nav-pills-link-active-color);\n background-color: var(--bs-nav-pills-link-active-bg);\n}\n\n.nav-underline {\n --bs-nav-underline-gap: 1rem;\n --bs-nav-underline-border-width: 0.125rem;\n --bs-nav-underline-link-active-color: var(--bs-emphasis-color);\n gap: var(--bs-nav-underline-gap);\n}\n.nav-underline .nav-link {\n padding-right: 0;\n padding-left: 0;\n border-bottom: var(--bs-nav-underline-border-width) solid transparent;\n}\n.nav-underline .nav-link:hover, .nav-underline .nav-link:focus {\n border-bottom-color: currentcolor;\n}\n.nav-underline .nav-link.active,\n.nav-underline .show > .nav-link {\n font-weight: 700;\n color: var(--bs-nav-underline-link-active-color);\n border-bottom-color: currentcolor;\n}\n\n.nav-fill > .nav-link,\n.nav-fill .nav-item {\n flex: 1 1 auto;\n text-align: center;\n}\n\n.nav-justified > .nav-link,\n.nav-justified .nav-item {\n flex-grow: 1;\n flex-basis: 0;\n text-align: center;\n}\n\n.nav-fill .nav-item .nav-link,\n.nav-justified .nav-item .nav-link {\n width: 100%;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n --bs-navbar-padding-x: 0;\n --bs-navbar-padding-y: 0.5rem;\n --bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), 0.65);\n --bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), 0.8);\n --bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), 0.3);\n --bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-brand-padding-y: 0.3125rem;\n --bs-navbar-brand-margin-end: 1rem;\n --bs-navbar-brand-font-size: 1.25rem;\n --bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1);\n --bs-navbar-nav-link-padding-x: 0.5rem;\n --bs-navbar-toggler-padding-y: 0.25rem;\n --bs-navbar-toggler-padding-x: 0.75rem;\n --bs-navbar-toggler-font-size: 1.25rem;\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n --bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), 0.15);\n --bs-navbar-toggler-border-radius: var(--bs-border-radius);\n --bs-navbar-toggler-focus-width: 0.25rem;\n --bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x);\n}\n.navbar > .container,\n.navbar > .container-fluid,\n.navbar > .container-sm,\n.navbar > .container-md,\n.navbar > .container-lg,\n.navbar > .container-xl,\n.navbar > .container-xxl {\n display: flex;\n flex-wrap: inherit;\n align-items: center;\n justify-content: space-between;\n}\n.navbar-brand {\n padding-top: var(--bs-navbar-brand-padding-y);\n padding-bottom: var(--bs-navbar-brand-padding-y);\n margin-right: var(--bs-navbar-brand-margin-end);\n font-size: var(--bs-navbar-brand-font-size);\n color: var(--bs-navbar-brand-color);\n text-decoration: none;\n white-space: nowrap;\n}\n.navbar-brand:hover, .navbar-brand:focus {\n color: var(--bs-navbar-brand-hover-color);\n}\n\n.navbar-nav {\n --bs-nav-link-padding-x: 0;\n --bs-nav-link-padding-y: 0.5rem;\n --bs-nav-link-font-weight: ;\n --bs-nav-link-color: var(--bs-navbar-color);\n --bs-nav-link-hover-color: var(--bs-navbar-hover-color);\n --bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n.navbar-nav .nav-link.active, .navbar-nav .nav-link.show {\n color: var(--bs-navbar-active-color);\n}\n.navbar-nav .dropdown-menu {\n position: static;\n}\n\n.navbar-text {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n color: var(--bs-navbar-color);\n}\n.navbar-text a,\n.navbar-text a:hover,\n.navbar-text a:focus {\n color: var(--bs-navbar-active-color);\n}\n\n.navbar-collapse {\n flex-grow: 1;\n flex-basis: 100%;\n align-items: center;\n}\n\n.navbar-toggler {\n padding: var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);\n font-size: var(--bs-navbar-toggler-font-size);\n line-height: 1;\n color: var(--bs-navbar-color);\n background-color: transparent;\n border: var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);\n border-radius: var(--bs-navbar-toggler-border-radius);\n transition: var(--bs-navbar-toggler-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .navbar-toggler {\n transition: none;\n }\n}\n.navbar-toggler:hover {\n text-decoration: none;\n}\n.navbar-toggler:focus {\n text-decoration: none;\n outline: 0;\n box-shadow: 0 0 0 var(--bs-navbar-toggler-focus-width);\n}\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n background-image: var(--bs-navbar-toggler-icon-bg);\n background-repeat: no-repeat;\n background-position: center;\n background-size: 100%;\n}\n\n.navbar-nav-scroll {\n max-height: var(--bs-scroll-height, 75vh);\n overflow-y: auto;\n}\n\n@media (min-width: 576px) {\n .navbar-expand-sm {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-sm .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-sm .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n .navbar-expand-sm .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-sm .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-sm .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 768px) {\n .navbar-expand-md {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-md .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-md .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n .navbar-expand-md .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-md .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-md .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 992px) {\n .navbar-expand-lg {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-lg .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-lg .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n .navbar-expand-lg .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-lg .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-lg .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-xl .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-xl .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n .navbar-expand-xl .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-xl .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-xl .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n@media (min-width: 1400px) {\n .navbar-expand-xxl {\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-xxl .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-xxl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xxl .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n }\n .navbar-expand-xxl .navbar-nav-scroll {\n overflow: visible;\n }\n .navbar-expand-xxl .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n }\n .navbar-expand-xxl .navbar-toggler {\n display: none;\n }\n .navbar-expand-xxl .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n }\n .navbar-expand-xxl .offcanvas .offcanvas-header {\n display: none;\n }\n .navbar-expand-xxl .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n }\n}\n.navbar-expand {\n flex-wrap: nowrap;\n justify-content: flex-start;\n}\n.navbar-expand .navbar-nav {\n flex-direction: row;\n}\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n.navbar-expand .navbar-nav .nav-link {\n padding-right: var(--bs-navbar-nav-link-padding-x);\n padding-left: var(--bs-navbar-nav-link-padding-x);\n}\n.navbar-expand .navbar-nav-scroll {\n overflow: visible;\n}\n.navbar-expand .navbar-collapse {\n display: flex !important;\n flex-basis: auto;\n}\n.navbar-expand .navbar-toggler {\n display: none;\n}\n.navbar-expand .offcanvas {\n position: static;\n z-index: auto;\n flex-grow: 1;\n width: auto !important;\n height: auto !important;\n visibility: visible !important;\n background-color: transparent !important;\n border: 0 !important;\n transform: none !important;\n transition: none;\n}\n.navbar-expand .offcanvas .offcanvas-header {\n display: none;\n}\n.navbar-expand .offcanvas .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n}\n\n.navbar-dark,\n.navbar[data-bs-theme=dark] {\n --bs-navbar-color: rgba(255, 255, 255, 0.55);\n --bs-navbar-hover-color: rgba(255, 255, 255, 0.75);\n --bs-navbar-disabled-color: rgba(255, 255, 255, 0.25);\n --bs-navbar-active-color: #fff;\n --bs-navbar-brand-color: #fff;\n --bs-navbar-brand-hover-color: #fff;\n --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1);\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n[data-bs-theme=dark] .navbar-toggler-icon {\n --bs-navbar-toggler-icon-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n\n.card {\n --bs-card-spacer-y: 1rem;\n --bs-card-spacer-x: 1rem;\n --bs-card-title-spacer-y: 0.5rem;\n --bs-card-title-color: ;\n --bs-card-subtitle-color: ;\n --bs-card-border-width: var(--bs-border-width);\n --bs-card-border-color: var(--bs-border-color-translucent);\n --bs-card-border-radius: var(--bs-border-radius);\n --bs-card-box-shadow: ;\n --bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));\n --bs-card-cap-padding-y: 0.5rem;\n --bs-card-cap-padding-x: 1rem;\n --bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03);\n --bs-card-cap-color: ;\n --bs-card-height: ;\n --bs-card-color: ;\n --bs-card-bg: var(--bs-body-bg);\n --bs-card-img-overlay-padding: 1rem;\n --bs-card-group-margin: 0.75rem;\n position: relative;\n display: flex;\n flex-direction: column;\n min-width: 0;\n height: var(--bs-card-height);\n color: var(--bs-body-color);\n word-wrap: break-word;\n background-color: var(--bs-card-bg);\n background-clip: border-box;\n border: var(--bs-card-border-width) solid var(--bs-card-border-color);\n border-radius: var(--bs-card-border-radius);\n}\n.card > hr {\n margin-right: 0;\n margin-left: 0;\n}\n.card > .list-group {\n border-top: inherit;\n border-bottom: inherit;\n}\n.card > .list-group:first-child {\n border-top-width: 0;\n border-top-left-radius: var(--bs-card-inner-border-radius);\n border-top-right-radius: var(--bs-card-inner-border-radius);\n}\n.card > .list-group:last-child {\n border-bottom-width: 0;\n border-bottom-right-radius: var(--bs-card-inner-border-radius);\n border-bottom-left-radius: var(--bs-card-inner-border-radius);\n}\n.card > .card-header + .list-group,\n.card > .list-group + .card-footer {\n border-top: 0;\n}\n\n.card-body {\n flex: 1 1 auto;\n padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x);\n color: var(--bs-card-color);\n}\n\n.card-title {\n margin-bottom: var(--bs-card-title-spacer-y);\n color: var(--bs-card-title-color);\n}\n\n.card-subtitle {\n margin-top: calc(-0.5 * var(--bs-card-title-spacer-y));\n margin-bottom: 0;\n color: var(--bs-card-subtitle-color);\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link + .card-link {\n margin-left: var(--bs-card-spacer-x);\n}\n\n.card-header {\n padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);\n margin-bottom: 0;\n color: var(--bs-card-cap-color);\n background-color: var(--bs-card-cap-bg);\n border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color);\n}\n.card-header:first-child {\n border-radius: var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0;\n}\n\n.card-footer {\n padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);\n color: var(--bs-card-cap-color);\n background-color: var(--bs-card-cap-bg);\n border-top: var(--bs-card-border-width) solid var(--bs-card-border-color);\n}\n.card-footer:last-child {\n border-radius: 0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius);\n}\n\n.card-header-tabs {\n margin-right: calc(-0.5 * var(--bs-card-cap-padding-x));\n margin-bottom: calc(-1 * var(--bs-card-cap-padding-y));\n margin-left: calc(-0.5 * var(--bs-card-cap-padding-x));\n border-bottom: 0;\n}\n.card-header-tabs .nav-link.active {\n background-color: var(--bs-card-bg);\n border-bottom-color: var(--bs-card-bg);\n}\n\n.card-header-pills {\n margin-right: calc(-0.5 * var(--bs-card-cap-padding-x));\n margin-left: calc(-0.5 * var(--bs-card-cap-padding-x));\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: var(--bs-card-img-overlay-padding);\n border-radius: var(--bs-card-inner-border-radius);\n}\n\n.card-img,\n.card-img-top,\n.card-img-bottom {\n width: 100%;\n}\n\n.card-img,\n.card-img-top {\n border-top-left-radius: var(--bs-card-inner-border-radius);\n border-top-right-radius: var(--bs-card-inner-border-radius);\n}\n\n.card-img,\n.card-img-bottom {\n border-bottom-right-radius: var(--bs-card-inner-border-radius);\n border-bottom-left-radius: var(--bs-card-inner-border-radius);\n}\n\n.card-group > .card {\n margin-bottom: var(--bs-card-group-margin);\n}\n@media (min-width: 576px) {\n .card-group {\n display: flex;\n flex-flow: row wrap;\n }\n .card-group > .card {\n flex: 1 0 0;\n margin-bottom: 0;\n }\n .card-group > .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group > .card:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:last-child) > .card-img-top,\n .card-group > .card:not(:last-child) > .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:not(:last-child) > .card-img-bottom,\n .card-group > .card:not(:last-child) > .card-footer {\n border-bottom-right-radius: 0;\n }\n .card-group > .card:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:not(:first-child) > .card-img-top,\n .card-group > .card:not(:first-child) > .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:not(:first-child) > .card-img-bottom,\n .card-group > .card:not(:first-child) > .card-footer {\n border-bottom-left-radius: 0;\n }\n}\n\n.accordion {\n --bs-accordion-color: var(--bs-body-color);\n --bs-accordion-bg: var(--bs-body-bg);\n --bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;\n --bs-accordion-border-color: var(--bs-border-color);\n --bs-accordion-border-width: var(--bs-border-width);\n --bs-accordion-border-radius: var(--bs-border-radius);\n --bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));\n --bs-accordion-btn-padding-x: 1.25rem;\n --bs-accordion-btn-padding-y: 1rem;\n --bs-accordion-btn-color: var(--bs-body-color);\n --bs-accordion-btn-bg: var(--bs-accordion-bg);\n --bs-accordion-btn-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n --bs-accordion-btn-icon-width: 1.25rem;\n --bs-accordion-btn-icon-transform: rotate(-180deg);\n --bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;\n --bs-accordion-btn-active-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='rgb%282.0392156863%, 17.2549019608%, 39.6862745098%%29' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n --bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n --bs-accordion-body-padding-x: 1.25rem;\n --bs-accordion-body-padding-y: 1rem;\n --bs-accordion-active-color: var(--bs-primary-text-emphasis);\n --bs-accordion-active-bg: var(--bs-primary-bg-subtle);\n}\n\n.accordion-button {\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n padding: var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);\n font-size: 1rem;\n color: var(--bs-accordion-btn-color);\n text-align: left;\n background-color: var(--bs-accordion-btn-bg);\n border: 0;\n border-radius: 0;\n overflow-anchor: none;\n transition: var(--bs-accordion-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .accordion-button {\n transition: none;\n }\n}\n.accordion-button:not(.collapsed) {\n color: var(--bs-accordion-active-color);\n background-color: var(--bs-accordion-active-bg);\n box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color);\n}\n.accordion-button:not(.collapsed)::after {\n background-image: var(--bs-accordion-btn-active-icon);\n transform: var(--bs-accordion-btn-icon-transform);\n}\n.accordion-button::after {\n flex-shrink: 0;\n width: var(--bs-accordion-btn-icon-width);\n height: var(--bs-accordion-btn-icon-width);\n margin-left: auto;\n content: \"\";\n background-image: var(--bs-accordion-btn-icon);\n background-repeat: no-repeat;\n background-size: var(--bs-accordion-btn-icon-width);\n transition: var(--bs-accordion-btn-icon-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .accordion-button::after {\n transition: none;\n }\n}\n.accordion-button:hover {\n z-index: 2;\n}\n.accordion-button:focus {\n z-index: 3;\n outline: 0;\n box-shadow: var(--bs-accordion-btn-focus-box-shadow);\n}\n\n.accordion-header {\n margin-bottom: 0;\n}\n\n.accordion-item {\n color: var(--bs-accordion-color);\n background-color: var(--bs-accordion-bg);\n border: var(--bs-accordion-border-width) solid var(--bs-accordion-border-color);\n}\n.accordion-item:first-of-type {\n border-top-left-radius: var(--bs-accordion-border-radius);\n border-top-right-radius: var(--bs-accordion-border-radius);\n}\n.accordion-item:first-of-type > .accordion-header .accordion-button {\n border-top-left-radius: var(--bs-accordion-inner-border-radius);\n border-top-right-radius: var(--bs-accordion-inner-border-radius);\n}\n.accordion-item:not(:first-of-type) {\n border-top: 0;\n}\n.accordion-item:last-of-type {\n border-bottom-right-radius: var(--bs-accordion-border-radius);\n border-bottom-left-radius: var(--bs-accordion-border-radius);\n}\n.accordion-item:last-of-type > .accordion-header .accordion-button.collapsed {\n border-bottom-right-radius: var(--bs-accordion-inner-border-radius);\n border-bottom-left-radius: var(--bs-accordion-inner-border-radius);\n}\n.accordion-item:last-of-type > .accordion-collapse {\n border-bottom-right-radius: var(--bs-accordion-border-radius);\n border-bottom-left-radius: var(--bs-accordion-border-radius);\n}\n\n.accordion-body {\n padding: var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x);\n}\n\n.accordion-flush > .accordion-item {\n border-right: 0;\n border-left: 0;\n border-radius: 0;\n}\n.accordion-flush > .accordion-item:first-child {\n border-top: 0;\n}\n.accordion-flush > .accordion-item:last-child {\n border-bottom: 0;\n}\n.accordion-flush > .accordion-item > .accordion-collapse,\n.accordion-flush > .accordion-item > .accordion-header .accordion-button,\n.accordion-flush > .accordion-item > .accordion-header .accordion-button.collapsed {\n border-radius: 0;\n}\n\n[data-bs-theme=dark] .accordion-button::after {\n --bs-accordion-btn-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%2843.0588235294%, 65.8823529412%, 99.5294117647%%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/%3e%3c/svg%3e\");\n --bs-accordion-btn-active-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%2843.0588235294%, 65.8823529412%, 99.5294117647%%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/%3e%3c/svg%3e\");\n}\n\n.breadcrumb {\n --bs-breadcrumb-padding-x: 0;\n --bs-breadcrumb-padding-y: 0;\n --bs-breadcrumb-margin-bottom: 1rem;\n --bs-breadcrumb-bg: ;\n --bs-breadcrumb-border-radius: ;\n --bs-breadcrumb-divider-color: var(--bs-secondary-color);\n --bs-breadcrumb-item-padding-x: 0.5rem;\n --bs-breadcrumb-item-active-color: var(--bs-secondary-color);\n display: flex;\n flex-wrap: wrap;\n padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);\n margin-bottom: var(--bs-breadcrumb-margin-bottom);\n font-size: var(--bs-breadcrumb-font-size);\n list-style: none;\n background-color: var(--bs-breadcrumb-bg);\n border-radius: var(--bs-breadcrumb-border-radius);\n}\n\n.breadcrumb-item + .breadcrumb-item {\n padding-left: var(--bs-breadcrumb-item-padding-x);\n}\n.breadcrumb-item + .breadcrumb-item::before {\n float: left;\n padding-right: var(--bs-breadcrumb-item-padding-x);\n color: var(--bs-breadcrumb-divider-color);\n content: var(--bs-breadcrumb-divider, \"/\") /* rtl: var(--bs-breadcrumb-divider, \"/\") */;\n}\n.breadcrumb-item.active {\n color: var(--bs-breadcrumb-item-active-color);\n}\n\n.pagination {\n --bs-pagination-padding-x: 0.75rem;\n --bs-pagination-padding-y: 0.375rem;\n --bs-pagination-font-size: 1rem;\n --bs-pagination-color: var(--bs-link-color);\n --bs-pagination-bg: var(--bs-body-bg);\n --bs-pagination-border-width: var(--bs-border-width);\n --bs-pagination-border-color: var(--bs-border-color);\n --bs-pagination-border-radius: var(--bs-border-radius);\n --bs-pagination-hover-color: var(--bs-link-hover-color);\n --bs-pagination-hover-bg: var(--bs-tertiary-bg);\n --bs-pagination-hover-border-color: var(--bs-border-color);\n --bs-pagination-focus-color: var(--bs-link-hover-color);\n --bs-pagination-focus-bg: var(--bs-secondary-bg);\n --bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n --bs-pagination-active-color: #fff;\n --bs-pagination-active-bg: #0d6efd;\n --bs-pagination-active-border-color: #0d6efd;\n --bs-pagination-disabled-color: var(--bs-secondary-color);\n --bs-pagination-disabled-bg: var(--bs-secondary-bg);\n --bs-pagination-disabled-border-color: var(--bs-border-color);\n display: flex;\n padding-left: 0;\n list-style: none;\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);\n font-size: var(--bs-pagination-font-size);\n color: var(--bs-pagination-color);\n text-decoration: none;\n background-color: var(--bs-pagination-bg);\n border: var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .page-link {\n transition: none;\n }\n}\n.page-link:hover {\n z-index: 2;\n color: var(--bs-pagination-hover-color);\n background-color: var(--bs-pagination-hover-bg);\n border-color: var(--bs-pagination-hover-border-color);\n}\n.page-link:focus {\n z-index: 3;\n color: var(--bs-pagination-focus-color);\n background-color: var(--bs-pagination-focus-bg);\n outline: 0;\n box-shadow: var(--bs-pagination-focus-box-shadow);\n}\n.page-link.active, .active > .page-link {\n z-index: 3;\n color: var(--bs-pagination-active-color);\n background-color: var(--bs-pagination-active-bg);\n border-color: var(--bs-pagination-active-border-color);\n}\n.page-link.disabled, .disabled > .page-link {\n color: var(--bs-pagination-disabled-color);\n pointer-events: none;\n background-color: var(--bs-pagination-disabled-bg);\n border-color: var(--bs-pagination-disabled-border-color);\n}\n\n.page-item:not(:first-child) .page-link {\n margin-left: calc(-1 * var(--bs-border-width));\n}\n.page-item:first-child .page-link {\n border-top-left-radius: var(--bs-pagination-border-radius);\n border-bottom-left-radius: var(--bs-pagination-border-radius);\n}\n.page-item:last-child .page-link {\n border-top-right-radius: var(--bs-pagination-border-radius);\n border-bottom-right-radius: var(--bs-pagination-border-radius);\n}\n\n.pagination-lg {\n --bs-pagination-padding-x: 1.5rem;\n --bs-pagination-padding-y: 0.75rem;\n --bs-pagination-font-size: 1.25rem;\n --bs-pagination-border-radius: var(--bs-border-radius-lg);\n}\n\n.pagination-sm {\n --bs-pagination-padding-x: 0.5rem;\n --bs-pagination-padding-y: 0.25rem;\n --bs-pagination-font-size: 0.875rem;\n --bs-pagination-border-radius: var(--bs-border-radius-sm);\n}\n\n.badge {\n --bs-badge-padding-x: 0.65em;\n --bs-badge-padding-y: 0.35em;\n --bs-badge-font-size: 0.75em;\n --bs-badge-font-weight: 700;\n --bs-badge-color: #fff;\n --bs-badge-border-radius: var(--bs-border-radius);\n display: inline-block;\n padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x);\n font-size: var(--bs-badge-font-size);\n font-weight: var(--bs-badge-font-weight);\n line-height: 1;\n color: var(--bs-badge-color);\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: var(--bs-badge-border-radius);\n}\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.alert {\n --bs-alert-bg: transparent;\n --bs-alert-padding-x: 1rem;\n --bs-alert-padding-y: 1rem;\n --bs-alert-margin-bottom: 1rem;\n --bs-alert-color: inherit;\n --bs-alert-border-color: transparent;\n --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color);\n --bs-alert-border-radius: var(--bs-border-radius);\n --bs-alert-link-color: inherit;\n position: relative;\n padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x);\n margin-bottom: var(--bs-alert-margin-bottom);\n color: var(--bs-alert-color);\n background-color: var(--bs-alert-bg);\n border: var(--bs-alert-border);\n border-radius: var(--bs-alert-border-radius);\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: 700;\n color: var(--bs-alert-link-color);\n}\n\n.alert-dismissible {\n padding-right: 3rem;\n}\n.alert-dismissible .btn-close {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n padding: 1.25rem 1rem;\n}\n\n.alert-primary {\n --bs-alert-color: var(--bs-primary-text-emphasis);\n --bs-alert-bg: var(--bs-primary-bg-subtle);\n --bs-alert-border-color: var(--bs-primary-border-subtle);\n --bs-alert-link-color: var(--bs-primary-text-emphasis);\n}\n\n.alert-secondary {\n --bs-alert-color: var(--bs-secondary-text-emphasis);\n --bs-alert-bg: var(--bs-secondary-bg-subtle);\n --bs-alert-border-color: var(--bs-secondary-border-subtle);\n --bs-alert-link-color: var(--bs-secondary-text-emphasis);\n}\n\n.alert-success {\n --bs-alert-color: var(--bs-success-text-emphasis);\n --bs-alert-bg: var(--bs-success-bg-subtle);\n --bs-alert-border-color: var(--bs-success-border-subtle);\n --bs-alert-link-color: var(--bs-success-text-emphasis);\n}\n\n.alert-info {\n --bs-alert-color: var(--bs-info-text-emphasis);\n --bs-alert-bg: var(--bs-info-bg-subtle);\n --bs-alert-border-color: var(--bs-info-border-subtle);\n --bs-alert-link-color: var(--bs-info-text-emphasis);\n}\n\n.alert-warning {\n --bs-alert-color: var(--bs-warning-text-emphasis);\n --bs-alert-bg: var(--bs-warning-bg-subtle);\n --bs-alert-border-color: var(--bs-warning-border-subtle);\n --bs-alert-link-color: var(--bs-warning-text-emphasis);\n}\n\n.alert-danger {\n --bs-alert-color: var(--bs-danger-text-emphasis);\n --bs-alert-bg: var(--bs-danger-bg-subtle);\n --bs-alert-border-color: var(--bs-danger-border-subtle);\n --bs-alert-link-color: var(--bs-danger-text-emphasis);\n}\n\n.alert-light {\n --bs-alert-color: var(--bs-light-text-emphasis);\n --bs-alert-bg: var(--bs-light-bg-subtle);\n --bs-alert-border-color: var(--bs-light-border-subtle);\n --bs-alert-link-color: var(--bs-light-text-emphasis);\n}\n\n.alert-dark {\n --bs-alert-color: var(--bs-dark-text-emphasis);\n --bs-alert-bg: var(--bs-dark-bg-subtle);\n --bs-alert-border-color: var(--bs-dark-border-subtle);\n --bs-alert-link-color: var(--bs-dark-text-emphasis);\n}\n\n@keyframes progress-bar-stripes {\n 0% {\n background-position-x: var(--bs-progress-height);\n }\n}\n.progress,\n.progress-stacked {\n --bs-progress-height: 1rem;\n --bs-progress-font-size: 0.75rem;\n --bs-progress-bg: var(--bs-secondary-bg);\n --bs-progress-border-radius: var(--bs-border-radius);\n --bs-progress-box-shadow: var(--bs-box-shadow-inset);\n --bs-progress-bar-color: #fff;\n --bs-progress-bar-bg: #0d6efd;\n --bs-progress-bar-transition: width 0.6s ease;\n display: flex;\n height: var(--bs-progress-height);\n overflow: hidden;\n font-size: var(--bs-progress-font-size);\n background-color: var(--bs-progress-bg);\n border-radius: var(--bs-progress-border-radius);\n}\n\n.progress-bar {\n display: flex;\n flex-direction: column;\n justify-content: center;\n overflow: hidden;\n color: var(--bs-progress-bar-color);\n text-align: center;\n white-space: nowrap;\n background-color: var(--bs-progress-bar-bg);\n transition: var(--bs-progress-bar-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .progress-bar {\n transition: none;\n }\n}\n\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: var(--bs-progress-height) var(--bs-progress-height);\n}\n\n.progress-stacked > .progress {\n overflow: visible;\n}\n\n.progress-stacked > .progress > .progress-bar {\n width: 100%;\n}\n\n.progress-bar-animated {\n animation: 1s linear infinite progress-bar-stripes;\n}\n@media (prefers-reduced-motion: reduce) {\n .progress-bar-animated {\n animation: none;\n }\n}\n\n.list-group {\n --bs-list-group-color: var(--bs-body-color);\n --bs-list-group-bg: var(--bs-body-bg);\n --bs-list-group-border-color: var(--bs-border-color);\n --bs-list-group-border-width: var(--bs-border-width);\n --bs-list-group-border-radius: var(--bs-border-radius);\n --bs-list-group-item-padding-x: 1rem;\n --bs-list-group-item-padding-y: 0.5rem;\n --bs-list-group-action-color: var(--bs-secondary-color);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-tertiary-bg);\n --bs-list-group-action-active-color: var(--bs-body-color);\n --bs-list-group-action-active-bg: var(--bs-secondary-bg);\n --bs-list-group-disabled-color: var(--bs-secondary-color);\n --bs-list-group-disabled-bg: var(--bs-body-bg);\n --bs-list-group-active-color: #fff;\n --bs-list-group-active-bg: #0d6efd;\n --bs-list-group-active-border-color: #0d6efd;\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n border-radius: var(--bs-list-group-border-radius);\n}\n\n.list-group-numbered {\n list-style-type: none;\n counter-reset: section;\n}\n.list-group-numbered > .list-group-item::before {\n content: counters(section, \".\") \". \";\n counter-increment: section;\n}\n\n.list-group-item {\n position: relative;\n display: block;\n padding: var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);\n color: var(--bs-list-group-color);\n text-decoration: none;\n background-color: var(--bs-list-group-bg);\n border: var(--bs-list-group-border-width) solid var(--bs-list-group-border-color);\n}\n.list-group-item:first-child {\n border-top-left-radius: inherit;\n border-top-right-radius: inherit;\n}\n.list-group-item:last-child {\n border-bottom-right-radius: inherit;\n border-bottom-left-radius: inherit;\n}\n.list-group-item.disabled, .list-group-item:disabled {\n color: var(--bs-list-group-disabled-color);\n pointer-events: none;\n background-color: var(--bs-list-group-disabled-bg);\n}\n.list-group-item.active {\n z-index: 2;\n color: var(--bs-list-group-active-color);\n background-color: var(--bs-list-group-active-bg);\n border-color: var(--bs-list-group-active-border-color);\n}\n.list-group-item + .list-group-item {\n border-top-width: 0;\n}\n.list-group-item + .list-group-item.active {\n margin-top: calc(-1 * var(--bs-list-group-border-width));\n border-top-width: var(--bs-list-group-border-width);\n}\n\n.list-group-item-action {\n width: 100%;\n color: var(--bs-list-group-action-color);\n text-align: inherit;\n}\n.list-group-item-action:not(.active):hover, .list-group-item-action:not(.active):focus {\n z-index: 1;\n color: var(--bs-list-group-action-hover-color);\n text-decoration: none;\n background-color: var(--bs-list-group-action-hover-bg);\n}\n.list-group-item-action:not(.active):active {\n color: var(--bs-list-group-action-active-color);\n background-color: var(--bs-list-group-action-active-bg);\n}\n\n.list-group-horizontal {\n flex-direction: row;\n}\n.list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n}\n.list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n}\n.list-group-horizontal > .list-group-item.active {\n margin-top: 0;\n}\n.list-group-horizontal > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n}\n.list-group-horizontal > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n}\n\n@media (min-width: 576px) {\n .list-group-horizontal-sm {\n flex-direction: row;\n }\n .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-sm > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-sm > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-sm > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 768px) {\n .list-group-horizontal-md {\n flex-direction: row;\n }\n .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-md > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-md > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-md > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 992px) {\n .list-group-horizontal-lg {\n flex-direction: row;\n }\n .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-lg > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-lg > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-lg > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 1200px) {\n .list-group-horizontal-xl {\n flex-direction: row;\n }\n .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-xl > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-xl > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-xl > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n@media (min-width: 1400px) {\n .list-group-horizontal-xxl {\n flex-direction: row;\n }\n .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) {\n border-bottom-left-radius: var(--bs-list-group-border-radius);\n border-top-right-radius: 0;\n }\n .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) {\n border-top-right-radius: var(--bs-list-group-border-radius);\n border-bottom-left-radius: 0;\n }\n .list-group-horizontal-xxl > .list-group-item.active {\n margin-top: 0;\n }\n .list-group-horizontal-xxl > .list-group-item + .list-group-item {\n border-top-width: var(--bs-list-group-border-width);\n border-left-width: 0;\n }\n .list-group-horizontal-xxl > .list-group-item + .list-group-item.active {\n margin-left: calc(-1 * var(--bs-list-group-border-width));\n border-left-width: var(--bs-list-group-border-width);\n }\n}\n.list-group-flush {\n border-radius: 0;\n}\n.list-group-flush > .list-group-item {\n border-width: 0 0 var(--bs-list-group-border-width);\n}\n.list-group-flush > .list-group-item:last-child {\n border-bottom-width: 0;\n}\n\n.list-group-item-primary {\n --bs-list-group-color: var(--bs-primary-text-emphasis);\n --bs-list-group-bg: var(--bs-primary-bg-subtle);\n --bs-list-group-border-color: var(--bs-primary-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-primary-border-subtle);\n --bs-list-group-active-color: var(--bs-primary-bg-subtle);\n --bs-list-group-active-bg: var(--bs-primary-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-primary-text-emphasis);\n}\n\n.list-group-item-secondary {\n --bs-list-group-color: var(--bs-secondary-text-emphasis);\n --bs-list-group-bg: var(--bs-secondary-bg-subtle);\n --bs-list-group-border-color: var(--bs-secondary-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);\n --bs-list-group-active-color: var(--bs-secondary-bg-subtle);\n --bs-list-group-active-bg: var(--bs-secondary-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-secondary-text-emphasis);\n}\n\n.list-group-item-success {\n --bs-list-group-color: var(--bs-success-text-emphasis);\n --bs-list-group-bg: var(--bs-success-bg-subtle);\n --bs-list-group-border-color: var(--bs-success-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-success-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-success-border-subtle);\n --bs-list-group-active-color: var(--bs-success-bg-subtle);\n --bs-list-group-active-bg: var(--bs-success-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-success-text-emphasis);\n}\n\n.list-group-item-info {\n --bs-list-group-color: var(--bs-info-text-emphasis);\n --bs-list-group-bg: var(--bs-info-bg-subtle);\n --bs-list-group-border-color: var(--bs-info-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-info-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-info-border-subtle);\n --bs-list-group-active-color: var(--bs-info-bg-subtle);\n --bs-list-group-active-bg: var(--bs-info-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-info-text-emphasis);\n}\n\n.list-group-item-warning {\n --bs-list-group-color: var(--bs-warning-text-emphasis);\n --bs-list-group-bg: var(--bs-warning-bg-subtle);\n --bs-list-group-border-color: var(--bs-warning-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-warning-border-subtle);\n --bs-list-group-active-color: var(--bs-warning-bg-subtle);\n --bs-list-group-active-bg: var(--bs-warning-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-warning-text-emphasis);\n}\n\n.list-group-item-danger {\n --bs-list-group-color: var(--bs-danger-text-emphasis);\n --bs-list-group-bg: var(--bs-danger-bg-subtle);\n --bs-list-group-border-color: var(--bs-danger-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-danger-border-subtle);\n --bs-list-group-active-color: var(--bs-danger-bg-subtle);\n --bs-list-group-active-bg: var(--bs-danger-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-danger-text-emphasis);\n}\n\n.list-group-item-light {\n --bs-list-group-color: var(--bs-light-text-emphasis);\n --bs-list-group-bg: var(--bs-light-bg-subtle);\n --bs-list-group-border-color: var(--bs-light-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-light-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-light-border-subtle);\n --bs-list-group-active-color: var(--bs-light-bg-subtle);\n --bs-list-group-active-bg: var(--bs-light-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-light-text-emphasis);\n}\n\n.list-group-item-dark {\n --bs-list-group-color: var(--bs-dark-text-emphasis);\n --bs-list-group-bg: var(--bs-dark-bg-subtle);\n --bs-list-group-border-color: var(--bs-dark-border-subtle);\n --bs-list-group-action-hover-color: var(--bs-emphasis-color);\n --bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);\n --bs-list-group-action-active-color: var(--bs-emphasis-color);\n --bs-list-group-action-active-bg: var(--bs-dark-border-subtle);\n --bs-list-group-active-color: var(--bs-dark-bg-subtle);\n --bs-list-group-active-bg: var(--bs-dark-text-emphasis);\n --bs-list-group-active-border-color: var(--bs-dark-text-emphasis);\n}\n\n.btn-close {\n --bs-btn-close-color: #000;\n --bs-btn-close-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414'/%3e%3c/svg%3e\");\n --bs-btn-close-opacity: 0.5;\n --bs-btn-close-hover-opacity: 0.75;\n --bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n --bs-btn-close-focus-opacity: 1;\n --bs-btn-close-disabled-opacity: 0.25;\n box-sizing: content-box;\n width: 1em;\n height: 1em;\n padding: 0.25em 0.25em;\n color: var(--bs-btn-close-color);\n background: transparent var(--bs-btn-close-bg) center/1em auto no-repeat;\n filter: var(--bs-btn-close-filter);\n border: 0;\n border-radius: 0.375rem;\n opacity: var(--bs-btn-close-opacity);\n}\n.btn-close:hover {\n color: var(--bs-btn-close-color);\n text-decoration: none;\n opacity: var(--bs-btn-close-hover-opacity);\n}\n.btn-close:focus {\n outline: 0;\n box-shadow: var(--bs-btn-close-focus-shadow);\n opacity: var(--bs-btn-close-focus-opacity);\n}\n.btn-close:disabled, .btn-close.disabled {\n pointer-events: none;\n user-select: none;\n opacity: var(--bs-btn-close-disabled-opacity);\n}\n\n.btn-close-white {\n --bs-btn-close-filter: invert(1) grayscale(100%) brightness(200%);\n}\n\n:root,\n[data-bs-theme=light] {\n --bs-btn-close-filter: ;\n}\n\n[data-bs-theme=dark] {\n --bs-btn-close-filter: invert(1) grayscale(100%) brightness(200%);\n}\n\n.toast {\n --bs-toast-zindex: 1090;\n --bs-toast-padding-x: 0.75rem;\n --bs-toast-padding-y: 0.5rem;\n --bs-toast-spacing: 1.5rem;\n --bs-toast-max-width: 350px;\n --bs-toast-font-size: 0.875rem;\n --bs-toast-color: ;\n --bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85);\n --bs-toast-border-width: var(--bs-border-width);\n --bs-toast-border-color: var(--bs-border-color-translucent);\n --bs-toast-border-radius: var(--bs-border-radius);\n --bs-toast-box-shadow: var(--bs-box-shadow);\n --bs-toast-header-color: var(--bs-secondary-color);\n --bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85);\n --bs-toast-header-border-color: var(--bs-border-color-translucent);\n width: var(--bs-toast-max-width);\n max-width: 100%;\n font-size: var(--bs-toast-font-size);\n color: var(--bs-toast-color);\n pointer-events: auto;\n background-color: var(--bs-toast-bg);\n background-clip: padding-box;\n border: var(--bs-toast-border-width) solid var(--bs-toast-border-color);\n box-shadow: var(--bs-toast-box-shadow);\n border-radius: var(--bs-toast-border-radius);\n}\n.toast.showing {\n opacity: 0;\n}\n.toast:not(.show) {\n display: none;\n}\n\n.toast-container {\n --bs-toast-zindex: 1090;\n position: absolute;\n z-index: var(--bs-toast-zindex);\n width: max-content;\n max-width: 100%;\n pointer-events: none;\n}\n.toast-container > :not(:last-child) {\n margin-bottom: var(--bs-toast-spacing);\n}\n\n.toast-header {\n display: flex;\n align-items: center;\n padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x);\n color: var(--bs-toast-header-color);\n background-color: var(--bs-toast-header-bg);\n background-clip: padding-box;\n border-bottom: var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);\n border-top-left-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));\n border-top-right-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));\n}\n.toast-header .btn-close {\n margin-right: calc(-0.5 * var(--bs-toast-padding-x));\n margin-left: var(--bs-toast-padding-x);\n}\n\n.toast-body {\n padding: var(--bs-toast-padding-x);\n word-wrap: break-word;\n}\n\n.modal {\n --bs-modal-zindex: 1055;\n --bs-modal-width: 500px;\n --bs-modal-padding: 1rem;\n --bs-modal-margin: 0.5rem;\n --bs-modal-color: var(--bs-body-color);\n --bs-modal-bg: var(--bs-body-bg);\n --bs-modal-border-color: var(--bs-border-color-translucent);\n --bs-modal-border-width: var(--bs-border-width);\n --bs-modal-border-radius: var(--bs-border-radius-lg);\n --bs-modal-box-shadow: var(--bs-box-shadow-sm);\n --bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));\n --bs-modal-header-padding-x: 1rem;\n --bs-modal-header-padding-y: 1rem;\n --bs-modal-header-padding: 1rem 1rem;\n --bs-modal-header-border-color: var(--bs-border-color);\n --bs-modal-header-border-width: var(--bs-border-width);\n --bs-modal-title-line-height: 1.5;\n --bs-modal-footer-gap: 0.5rem;\n --bs-modal-footer-bg: ;\n --bs-modal-footer-border-color: var(--bs-border-color);\n --bs-modal-footer-border-width: var(--bs-border-width);\n position: fixed;\n top: 0;\n left: 0;\n z-index: var(--bs-modal-zindex);\n display: none;\n width: 100%;\n height: 100%;\n overflow-x: hidden;\n overflow-y: auto;\n outline: 0;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: var(--bs-modal-margin);\n pointer-events: none;\n}\n.modal.fade .modal-dialog {\n transform: translate(0, -50px);\n transition: transform 0.3s ease-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .modal.fade .modal-dialog {\n transition: none;\n }\n}\n.modal.show .modal-dialog {\n transform: none;\n}\n.modal.modal-static .modal-dialog {\n transform: scale(1.02);\n}\n\n.modal-dialog-scrollable {\n height: calc(100% - var(--bs-modal-margin) * 2);\n}\n.modal-dialog-scrollable .modal-content {\n max-height: 100%;\n overflow: hidden;\n}\n.modal-dialog-scrollable .modal-body {\n overflow-y: auto;\n}\n\n.modal-dialog-centered {\n display: flex;\n align-items: center;\n min-height: calc(100% - var(--bs-modal-margin) * 2);\n}\n\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n color: var(--bs-modal-color);\n pointer-events: auto;\n background-color: var(--bs-modal-bg);\n background-clip: padding-box;\n border: var(--bs-modal-border-width) solid var(--bs-modal-border-color);\n border-radius: var(--bs-modal-border-radius);\n outline: 0;\n}\n\n.modal-backdrop {\n --bs-backdrop-zindex: 1050;\n --bs-backdrop-bg: #000;\n --bs-backdrop-opacity: 0.5;\n position: fixed;\n top: 0;\n left: 0;\n z-index: var(--bs-backdrop-zindex);\n width: 100vw;\n height: 100vh;\n background-color: var(--bs-backdrop-bg);\n}\n.modal-backdrop.fade {\n opacity: 0;\n}\n.modal-backdrop.show {\n opacity: var(--bs-backdrop-opacity);\n}\n\n.modal-header {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n padding: var(--bs-modal-header-padding);\n border-bottom: var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);\n border-top-left-radius: var(--bs-modal-inner-border-radius);\n border-top-right-radius: var(--bs-modal-inner-border-radius);\n}\n.modal-header .btn-close {\n padding: calc(var(--bs-modal-header-padding-y) * 0.5) calc(var(--bs-modal-header-padding-x) * 0.5);\n margin-top: calc(-0.5 * var(--bs-modal-header-padding-y));\n margin-right: calc(-0.5 * var(--bs-modal-header-padding-x));\n margin-bottom: calc(-0.5 * var(--bs-modal-header-padding-y));\n margin-left: auto;\n}\n\n.modal-title {\n margin-bottom: 0;\n line-height: var(--bs-modal-title-line-height);\n}\n\n.modal-body {\n position: relative;\n flex: 1 1 auto;\n padding: var(--bs-modal-padding);\n}\n\n.modal-footer {\n display: flex;\n flex-shrink: 0;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n padding: calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * 0.5);\n background-color: var(--bs-modal-footer-bg);\n border-top: var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);\n border-bottom-right-radius: var(--bs-modal-inner-border-radius);\n border-bottom-left-radius: var(--bs-modal-inner-border-radius);\n}\n.modal-footer > * {\n margin: calc(var(--bs-modal-footer-gap) * 0.5);\n}\n\n@media (min-width: 576px) {\n .modal {\n --bs-modal-margin: 1.75rem;\n --bs-modal-box-shadow: var(--bs-box-shadow);\n }\n .modal-dialog {\n max-width: var(--bs-modal-width);\n margin-right: auto;\n margin-left: auto;\n }\n .modal-sm {\n --bs-modal-width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg,\n .modal-xl {\n --bs-modal-width: 800px;\n }\n}\n@media (min-width: 1200px) {\n .modal-xl {\n --bs-modal-width: 1140px;\n }\n}\n.modal-fullscreen {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n}\n.modal-fullscreen .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n}\n.modal-fullscreen .modal-header,\n.modal-fullscreen .modal-footer {\n border-radius: 0;\n}\n.modal-fullscreen .modal-body {\n overflow-y: auto;\n}\n\n@media (max-width: 575.98px) {\n .modal-fullscreen-sm-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-sm-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-sm-down .modal-header,\n .modal-fullscreen-sm-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-sm-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 767.98px) {\n .modal-fullscreen-md-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-md-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-md-down .modal-header,\n .modal-fullscreen-md-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-md-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 991.98px) {\n .modal-fullscreen-lg-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-lg-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-lg-down .modal-header,\n .modal-fullscreen-lg-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-lg-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 1199.98px) {\n .modal-fullscreen-xl-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-xl-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-xl-down .modal-header,\n .modal-fullscreen-xl-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-xl-down .modal-body {\n overflow-y: auto;\n }\n}\n@media (max-width: 1399.98px) {\n .modal-fullscreen-xxl-down {\n width: 100vw;\n max-width: none;\n height: 100%;\n margin: 0;\n }\n .modal-fullscreen-xxl-down .modal-content {\n height: 100%;\n border: 0;\n border-radius: 0;\n }\n .modal-fullscreen-xxl-down .modal-header,\n .modal-fullscreen-xxl-down .modal-footer {\n border-radius: 0;\n }\n .modal-fullscreen-xxl-down .modal-body {\n overflow-y: auto;\n }\n}\n.tooltip {\n --bs-tooltip-zindex: 1080;\n --bs-tooltip-max-width: 200px;\n --bs-tooltip-padding-x: 0.5rem;\n --bs-tooltip-padding-y: 0.25rem;\n --bs-tooltip-margin: ;\n --bs-tooltip-font-size: 0.875rem;\n --bs-tooltip-color: var(--bs-body-bg);\n --bs-tooltip-bg: var(--bs-emphasis-color);\n --bs-tooltip-border-radius: var(--bs-border-radius);\n --bs-tooltip-opacity: 0.9;\n --bs-tooltip-arrow-width: 0.8rem;\n --bs-tooltip-arrow-height: 0.4rem;\n z-index: var(--bs-tooltip-zindex);\n display: block;\n margin: var(--bs-tooltip-margin);\n font-family: var(--bs-font-sans-serif);\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n white-space: normal;\n word-spacing: normal;\n line-break: auto;\n font-size: var(--bs-tooltip-font-size);\n word-wrap: break-word;\n opacity: 0;\n}\n.tooltip.show {\n opacity: var(--bs-tooltip-opacity);\n}\n.tooltip .tooltip-arrow {\n display: block;\n width: var(--bs-tooltip-arrow-width);\n height: var(--bs-tooltip-arrow-height);\n}\n.tooltip .tooltip-arrow::before {\n position: absolute;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n}\n\n.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow {\n bottom: calc(-1 * var(--bs-tooltip-arrow-height));\n}\n.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before {\n top: -1px;\n border-width: var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;\n border-top-color: var(--bs-tooltip-bg);\n}\n\n/* rtl:begin:ignore */\n.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow {\n left: calc(-1 * var(--bs-tooltip-arrow-height));\n width: var(--bs-tooltip-arrow-height);\n height: var(--bs-tooltip-arrow-width);\n}\n.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before {\n right: -1px;\n border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;\n border-right-color: var(--bs-tooltip-bg);\n}\n\n/* rtl:end:ignore */\n.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow {\n top: calc(-1 * var(--bs-tooltip-arrow-height));\n}\n.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before {\n bottom: -1px;\n border-width: 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);\n border-bottom-color: var(--bs-tooltip-bg);\n}\n\n/* rtl:begin:ignore */\n.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow {\n right: calc(-1 * var(--bs-tooltip-arrow-height));\n width: var(--bs-tooltip-arrow-height);\n height: var(--bs-tooltip-arrow-width);\n}\n.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before {\n left: -1px;\n border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);\n border-left-color: var(--bs-tooltip-bg);\n}\n\n/* rtl:end:ignore */\n.tooltip-inner {\n max-width: var(--bs-tooltip-max-width);\n padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);\n color: var(--bs-tooltip-color);\n text-align: center;\n background-color: var(--bs-tooltip-bg);\n border-radius: var(--bs-tooltip-border-radius);\n}\n\n.popover {\n --bs-popover-zindex: 1070;\n --bs-popover-max-width: 276px;\n --bs-popover-font-size: 0.875rem;\n --bs-popover-bg: var(--bs-body-bg);\n --bs-popover-border-width: var(--bs-border-width);\n --bs-popover-border-color: var(--bs-border-color-translucent);\n --bs-popover-border-radius: var(--bs-border-radius-lg);\n --bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width));\n --bs-popover-box-shadow: var(--bs-box-shadow);\n --bs-popover-header-padding-x: 1rem;\n --bs-popover-header-padding-y: 0.5rem;\n --bs-popover-header-font-size: 1rem;\n --bs-popover-header-color: inherit;\n --bs-popover-header-bg: var(--bs-secondary-bg);\n --bs-popover-body-padding-x: 1rem;\n --bs-popover-body-padding-y: 1rem;\n --bs-popover-body-color: var(--bs-body-color);\n --bs-popover-arrow-width: 1rem;\n --bs-popover-arrow-height: 0.5rem;\n --bs-popover-arrow-border: var(--bs-popover-border-color);\n z-index: var(--bs-popover-zindex);\n display: block;\n max-width: var(--bs-popover-max-width);\n font-family: var(--bs-font-sans-serif);\n font-style: normal;\n font-weight: 400;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n white-space: normal;\n word-spacing: normal;\n line-break: auto;\n font-size: var(--bs-popover-font-size);\n word-wrap: break-word;\n background-color: var(--bs-popover-bg);\n background-clip: padding-box;\n border: var(--bs-popover-border-width) solid var(--bs-popover-border-color);\n border-radius: var(--bs-popover-border-radius);\n}\n.popover .popover-arrow {\n display: block;\n width: var(--bs-popover-arrow-width);\n height: var(--bs-popover-arrow-height);\n}\n.popover .popover-arrow::before, .popover .popover-arrow::after {\n position: absolute;\n display: block;\n content: \"\";\n border-color: transparent;\n border-style: solid;\n border-width: 0;\n}\n\n.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow {\n bottom: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n}\n.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {\n border-width: var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0;\n}\n.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before {\n bottom: 0;\n border-top-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {\n bottom: var(--bs-popover-border-width);\n border-top-color: var(--bs-popover-bg);\n}\n\n/* rtl:begin:ignore */\n.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow {\n left: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n width: var(--bs-popover-arrow-height);\n height: var(--bs-popover-arrow-width);\n}\n.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {\n border-width: calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0;\n}\n.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before {\n left: 0;\n border-right-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {\n left: var(--bs-popover-border-width);\n border-right-color: var(--bs-popover-bg);\n}\n\n/* rtl:end:ignore */\n.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow {\n top: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n}\n.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {\n border-width: 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height);\n}\n.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before {\n top: 0;\n border-bottom-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {\n top: var(--bs-popover-border-width);\n border-bottom-color: var(--bs-popover-bg);\n}\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: var(--bs-popover-arrow-width);\n margin-left: calc(-0.5 * var(--bs-popover-arrow-width));\n content: \"\";\n border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-header-bg);\n}\n\n/* rtl:begin:ignore */\n.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow {\n right: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));\n width: var(--bs-popover-arrow-height);\n height: var(--bs-popover-arrow-width);\n}\n.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {\n border-width: calc(var(--bs-popover-arrow-width) * 0.5) 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height);\n}\n.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before {\n right: 0;\n border-left-color: var(--bs-popover-arrow-border);\n}\n.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {\n right: var(--bs-popover-border-width);\n border-left-color: var(--bs-popover-bg);\n}\n\n/* rtl:end:ignore */\n.popover-header {\n padding: var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);\n margin-bottom: 0;\n font-size: var(--bs-popover-header-font-size);\n color: var(--bs-popover-header-color);\n background-color: var(--bs-popover-header-bg);\n border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-border-color);\n border-top-left-radius: var(--bs-popover-inner-border-radius);\n border-top-right-radius: var(--bs-popover-inner-border-radius);\n}\n.popover-header:empty {\n display: none;\n}\n\n.popover-body {\n padding: var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);\n color: var(--bs-popover-body-color);\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel.pointer-event {\n touch-action: pan-y;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n.carousel-inner::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.carousel-item {\n position: relative;\n display: none;\n float: left;\n width: 100%;\n margin-right: -100%;\n backface-visibility: hidden;\n transition: transform 0.6s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-item {\n transition: none;\n }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: block;\n}\n\n.carousel-item-next:not(.carousel-item-start),\n.active.carousel-item-end {\n transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-end),\n.active.carousel-item-start {\n transform: translateX(-100%);\n}\n\n.carousel-fade .carousel-item {\n opacity: 0;\n transition-property: opacity;\n transform: none;\n}\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-start,\n.carousel-fade .carousel-item-prev.carousel-item-end {\n z-index: 1;\n opacity: 1;\n}\n.carousel-fade .active.carousel-item-start,\n.carousel-fade .active.carousel-item-end {\n z-index: 0;\n opacity: 0;\n transition: opacity 0s 0.6s;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-fade .active.carousel-item-start,\n .carousel-fade .active.carousel-item-end {\n transition: none;\n }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 15%;\n padding: 0;\n color: #fff;\n text-align: center;\n background: none;\n filter: var(--bs-carousel-control-icon-filter);\n border: 0;\n opacity: 0.5;\n transition: opacity 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-control-prev,\n .carousel-control-next {\n transition: none;\n }\n}\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: 0.9;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 2rem;\n height: 2rem;\n background-repeat: no-repeat;\n background-position: 50%;\n background-size: 100% 100%;\n}\n\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/%3e%3c/svg%3e\") /*rtl:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/%3e%3c/svg%3e\")*/;\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/%3e%3c/svg%3e\") /*rtl:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/%3e%3c/svg%3e\")*/;\n}\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 2;\n display: flex;\n justify-content: center;\n padding: 0;\n margin-right: 15%;\n margin-bottom: 1rem;\n margin-left: 15%;\n}\n.carousel-indicators [data-bs-target] {\n box-sizing: content-box;\n flex: 0 1 auto;\n width: 30px;\n height: 3px;\n padding: 0;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n cursor: pointer;\n background-color: var(--bs-carousel-indicator-active-bg);\n background-clip: padding-box;\n border: 0;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n opacity: 0.5;\n transition: opacity 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n .carousel-indicators [data-bs-target] {\n transition: none;\n }\n}\n.carousel-indicators .active {\n opacity: 1;\n}\n\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 1.25rem;\n left: 15%;\n padding-top: 1.25rem;\n padding-bottom: 1.25rem;\n color: var(--bs-carousel-caption-color);\n text-align: center;\n}\n\n.carousel-dark {\n --bs-carousel-indicator-active-bg: #000;\n --bs-carousel-caption-color: #000;\n --bs-carousel-control-icon-filter: invert(1) grayscale(100);\n}\n\n:root,\n[data-bs-theme=light] {\n --bs-carousel-indicator-active-bg: #fff;\n --bs-carousel-caption-color: #fff;\n --bs-carousel-control-icon-filter: ;\n}\n\n[data-bs-theme=dark] {\n --bs-carousel-indicator-active-bg: #000;\n --bs-carousel-caption-color: #000;\n --bs-carousel-control-icon-filter: invert(1) grayscale(100);\n}\n\n.spinner-grow,\n.spinner-border {\n display: inline-block;\n flex-shrink: 0;\n width: var(--bs-spinner-width);\n height: var(--bs-spinner-height);\n vertical-align: var(--bs-spinner-vertical-align);\n border-radius: 50%;\n animation: var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name);\n}\n\n@keyframes spinner-border {\n to {\n transform: rotate(360deg) /* rtl:ignore */;\n }\n}\n.spinner-border {\n --bs-spinner-width: 2rem;\n --bs-spinner-height: 2rem;\n --bs-spinner-vertical-align: -0.125em;\n --bs-spinner-border-width: 0.25em;\n --bs-spinner-animation-speed: 0.75s;\n --bs-spinner-animation-name: spinner-border;\n border: var(--bs-spinner-border-width) solid currentcolor;\n border-right-color: transparent;\n}\n\n.spinner-border-sm {\n --bs-spinner-width: 1rem;\n --bs-spinner-height: 1rem;\n --bs-spinner-border-width: 0.2em;\n}\n\n@keyframes spinner-grow {\n 0% {\n transform: scale(0);\n }\n 50% {\n opacity: 1;\n transform: none;\n }\n}\n.spinner-grow {\n --bs-spinner-width: 2rem;\n --bs-spinner-height: 2rem;\n --bs-spinner-vertical-align: -0.125em;\n --bs-spinner-animation-speed: 0.75s;\n --bs-spinner-animation-name: spinner-grow;\n background-color: currentcolor;\n opacity: 0;\n}\n\n.spinner-grow-sm {\n --bs-spinner-width: 1rem;\n --bs-spinner-height: 1rem;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .spinner-border,\n .spinner-grow {\n --bs-spinner-animation-speed: 1.5s;\n }\n}\n.offcanvas, .offcanvas-xxl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm {\n --bs-offcanvas-zindex: 1045;\n --bs-offcanvas-width: 400px;\n --bs-offcanvas-height: 30vh;\n --bs-offcanvas-padding-x: 1rem;\n --bs-offcanvas-padding-y: 1rem;\n --bs-offcanvas-color: var(--bs-body-color);\n --bs-offcanvas-bg: var(--bs-body-bg);\n --bs-offcanvas-border-width: var(--bs-border-width);\n --bs-offcanvas-border-color: var(--bs-border-color-translucent);\n --bs-offcanvas-box-shadow: var(--bs-box-shadow-sm);\n --bs-offcanvas-transition: transform 0.3s ease-in-out;\n --bs-offcanvas-title-line-height: 1.5;\n}\n\n@media (max-width: 575.98px) {\n .offcanvas-sm {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 575.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-sm {\n transition: none;\n }\n}\n@media (max-width: 575.98px) {\n .offcanvas-sm.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-sm.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-sm.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-sm.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show {\n visibility: visible;\n }\n}\n@media (min-width: 576px) {\n .offcanvas-sm {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-sm .offcanvas-header {\n display: none;\n }\n .offcanvas-sm .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 767.98px) {\n .offcanvas-md {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 767.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-md {\n transition: none;\n }\n}\n@media (max-width: 767.98px) {\n .offcanvas-md.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-md.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-md.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-md.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show {\n visibility: visible;\n }\n}\n@media (min-width: 768px) {\n .offcanvas-md {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-md .offcanvas-header {\n display: none;\n }\n .offcanvas-md .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 991.98px) {\n .offcanvas-lg {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 991.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-lg {\n transition: none;\n }\n}\n@media (max-width: 991.98px) {\n .offcanvas-lg.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-lg.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-lg.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-lg.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show {\n visibility: visible;\n }\n}\n@media (min-width: 992px) {\n .offcanvas-lg {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-lg .offcanvas-header {\n display: none;\n }\n .offcanvas-lg .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 1199.98px) {\n .offcanvas-xl {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-xl {\n transition: none;\n }\n}\n@media (max-width: 1199.98px) {\n .offcanvas-xl.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-xl.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-xl.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-xl.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show {\n visibility: visible;\n }\n}\n@media (min-width: 1200px) {\n .offcanvas-xl {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-xl .offcanvas-header {\n display: none;\n }\n .offcanvas-xl .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n@media (max-width: 1399.98px) {\n .offcanvas-xxl {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n }\n}\n@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce) {\n .offcanvas-xxl {\n transition: none;\n }\n}\n@media (max-width: 1399.98px) {\n .offcanvas-xxl.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n }\n .offcanvas-xxl.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n }\n .offcanvas-xxl.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n }\n .offcanvas-xxl.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n }\n .offcanvas-xxl.showing, .offcanvas-xxl.show:not(.hiding) {\n transform: none;\n }\n .offcanvas-xxl.showing, .offcanvas-xxl.hiding, .offcanvas-xxl.show {\n visibility: visible;\n }\n}\n@media (min-width: 1400px) {\n .offcanvas-xxl {\n --bs-offcanvas-height: auto;\n --bs-offcanvas-border-width: 0;\n background-color: transparent !important;\n }\n .offcanvas-xxl .offcanvas-header {\n display: none;\n }\n .offcanvas-xxl .offcanvas-body {\n display: flex;\n flex-grow: 0;\n padding: 0;\n overflow-y: visible;\n background-color: transparent !important;\n }\n}\n\n.offcanvas {\n position: fixed;\n bottom: 0;\n z-index: var(--bs-offcanvas-zindex);\n display: flex;\n flex-direction: column;\n max-width: 100%;\n color: var(--bs-offcanvas-color);\n visibility: hidden;\n background-color: var(--bs-offcanvas-bg);\n background-clip: padding-box;\n outline: 0;\n transition: var(--bs-offcanvas-transition);\n}\n@media (prefers-reduced-motion: reduce) {\n .offcanvas {\n transition: none;\n }\n}\n.offcanvas.offcanvas-start {\n top: 0;\n left: 0;\n width: var(--bs-offcanvas-width);\n border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(-100%);\n}\n.offcanvas.offcanvas-end {\n top: 0;\n right: 0;\n width: var(--bs-offcanvas-width);\n border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateX(100%);\n}\n.offcanvas.offcanvas-top {\n top: 0;\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(-100%);\n}\n.offcanvas.offcanvas-bottom {\n right: 0;\n left: 0;\n height: var(--bs-offcanvas-height);\n max-height: 100%;\n border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);\n transform: translateY(100%);\n}\n.offcanvas.showing, .offcanvas.show:not(.hiding) {\n transform: none;\n}\n.offcanvas.showing, .offcanvas.hiding, .offcanvas.show {\n visibility: visible;\n}\n\n.offcanvas-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 1040;\n width: 100vw;\n height: 100vh;\n background-color: #000;\n}\n.offcanvas-backdrop.fade {\n opacity: 0;\n}\n.offcanvas-backdrop.show {\n opacity: 0.5;\n}\n\n.offcanvas-header {\n display: flex;\n align-items: center;\n padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);\n}\n.offcanvas-header .btn-close {\n padding: calc(var(--bs-offcanvas-padding-y) * 0.5) calc(var(--bs-offcanvas-padding-x) * 0.5);\n margin-top: calc(-0.5 * var(--bs-offcanvas-padding-y));\n margin-right: calc(-0.5 * var(--bs-offcanvas-padding-x));\n margin-bottom: calc(-0.5 * var(--bs-offcanvas-padding-y));\n margin-left: auto;\n}\n\n.offcanvas-title {\n margin-bottom: 0;\n line-height: var(--bs-offcanvas-title-line-height);\n}\n\n.offcanvas-body {\n flex-grow: 1;\n padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);\n overflow-y: auto;\n}\n\n.placeholder {\n display: inline-block;\n min-height: 1em;\n vertical-align: middle;\n cursor: wait;\n background-color: currentcolor;\n opacity: 0.5;\n}\n.placeholder.btn::before {\n display: inline-block;\n content: \"\";\n}\n\n.placeholder-xs {\n min-height: 0.6em;\n}\n\n.placeholder-sm {\n min-height: 0.8em;\n}\n\n.placeholder-lg {\n min-height: 1.2em;\n}\n\n.placeholder-glow .placeholder {\n animation: placeholder-glow 2s ease-in-out infinite;\n}\n\n@keyframes placeholder-glow {\n 50% {\n opacity: 0.2;\n }\n}\n.placeholder-wave {\n mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);\n mask-size: 200% 100%;\n animation: placeholder-wave 2s linear infinite;\n}\n\n@keyframes placeholder-wave {\n 100% {\n mask-position: -200% 0%;\n }\n}\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.text-bg-primary {\n color: #fff !important;\n background-color: RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-secondary {\n color: #fff !important;\n background-color: RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-success {\n color: #fff !important;\n background-color: RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-info {\n color: #000 !important;\n background-color: RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-warning {\n color: #000 !important;\n background-color: RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-danger {\n color: #fff !important;\n background-color: RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-light {\n color: #000 !important;\n background-color: RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.text-bg-dark {\n color: #fff !important;\n background-color: RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important;\n}\n\n.link-primary {\n color: RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-primary:hover, .link-primary:focus {\n color: RGBA(10, 88, 202, var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(10, 88, 202, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-secondary {\n color: RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-secondary:hover, .link-secondary:focus {\n color: RGBA(86, 94, 100, var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-success {\n color: RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-success:hover, .link-success:focus {\n color: RGBA(20, 108, 67, var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-info {\n color: RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-info:hover, .link-info:focus {\n color: RGBA(61, 213, 243, var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-warning {\n color: RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-warning:hover, .link-warning:focus {\n color: RGBA(255, 205, 57, var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-danger {\n color: RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-danger:hover, .link-danger:focus {\n color: RGBA(176, 42, 55, var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-light {\n color: RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-light:hover, .link-light:focus {\n color: RGBA(249, 250, 251, var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-dark {\n color: RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-dark:hover, .link-dark:focus {\n color: RGBA(26, 30, 33, var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-body-emphasis {\n color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;\n text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n.link-body-emphasis:hover, .link-body-emphasis:focus {\n color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;\n text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important;\n}\n\n.focus-ring:focus {\n outline: 0;\n box-shadow: var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color);\n}\n\n.icon-link {\n display: inline-flex;\n gap: 0.375rem;\n align-items: center;\n text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));\n text-underline-offset: 0.25em;\n backface-visibility: hidden;\n}\n.icon-link > .bi {\n flex-shrink: 0;\n width: 1em;\n height: 1em;\n fill: currentcolor;\n transition: 0.2s ease-in-out transform;\n}\n@media (prefers-reduced-motion: reduce) {\n .icon-link > .bi {\n transition: none;\n }\n}\n\n.icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi {\n transform: var(--bs-icon-link-transform, translate3d(0.25em, 0, 0));\n}\n\n.ratio {\n position: relative;\n width: 100%;\n}\n.ratio::before {\n display: block;\n padding-top: var(--bs-aspect-ratio);\n content: \"\";\n}\n.ratio > * {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\n.ratio-1x1 {\n --bs-aspect-ratio: 100%;\n}\n\n.ratio-4x3 {\n --bs-aspect-ratio: 75%;\n}\n\n.ratio-16x9 {\n --bs-aspect-ratio: 56.25%;\n}\n\n.ratio-21x9 {\n --bs-aspect-ratio: 42.8571428571%;\n}\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n\n.sticky-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n}\n\n.sticky-bottom {\n position: sticky;\n bottom: 0;\n z-index: 1020;\n}\n\n@media (min-width: 576px) {\n .sticky-sm-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-sm-bottom {\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 768px) {\n .sticky-md-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-md-bottom {\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 992px) {\n .sticky-lg-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-lg-bottom {\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 1200px) {\n .sticky-xl-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-xl-bottom {\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n@media (min-width: 1400px) {\n .sticky-xxl-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n }\n .sticky-xxl-bottom {\n position: sticky;\n bottom: 0;\n z-index: 1020;\n }\n}\n.hstack {\n display: flex;\n flex-direction: row;\n align-items: center;\n align-self: stretch;\n}\n\n.vstack {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n align-self: stretch;\n}\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0, 0, 0, 0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n}\n.visually-hidden:not(caption),\n.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) {\n position: absolute !important;\n}\n.visually-hidden *,\n.visually-hidden-focusable:not(:focus):not(:focus-within) * {\n overflow: hidden !important;\n}\n\n.stretched-link::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n content: \"\";\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.vr {\n display: inline-block;\n align-self: stretch;\n width: var(--bs-border-width);\n min-height: 1em;\n background-color: currentcolor;\n opacity: 0.25;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.float-start {\n float: left !important;\n}\n\n.float-end {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n.object-fit-contain {\n object-fit: contain !important;\n}\n\n.object-fit-cover {\n object-fit: cover !important;\n}\n\n.object-fit-fill {\n object-fit: fill !important;\n}\n\n.object-fit-scale {\n object-fit: scale-down !important;\n}\n\n.object-fit-none {\n object-fit: none !important;\n}\n\n.opacity-0 {\n opacity: 0 !important;\n}\n\n.opacity-25 {\n opacity: 0.25 !important;\n}\n\n.opacity-50 {\n opacity: 0.5 !important;\n}\n\n.opacity-75 {\n opacity: 0.75 !important;\n}\n\n.opacity-100 {\n opacity: 1 !important;\n}\n\n.overflow-auto {\n overflow: auto !important;\n}\n\n.overflow-hidden {\n overflow: hidden !important;\n}\n\n.overflow-visible {\n overflow: visible !important;\n}\n\n.overflow-scroll {\n overflow: scroll !important;\n}\n\n.overflow-x-auto {\n overflow-x: auto !important;\n}\n\n.overflow-x-hidden {\n overflow-x: hidden !important;\n}\n\n.overflow-x-visible {\n overflow-x: visible !important;\n}\n\n.overflow-x-scroll {\n overflow-x: scroll !important;\n}\n\n.overflow-y-auto {\n overflow-y: auto !important;\n}\n\n.overflow-y-hidden {\n overflow-y: hidden !important;\n}\n\n.overflow-y-visible {\n overflow-y: visible !important;\n}\n\n.overflow-y-scroll {\n overflow-y: scroll !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-inline-grid {\n display: inline-grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.shadow {\n box-shadow: var(--bs-box-shadow) !important;\n}\n\n.shadow-sm {\n box-shadow: var(--bs-box-shadow-sm) !important;\n}\n\n.shadow-lg {\n box-shadow: var(--bs-box-shadow-lg) !important;\n}\n\n.shadow-none {\n box-shadow: none !important;\n}\n\n.focus-ring-primary {\n --bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-secondary {\n --bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-success {\n --bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-info {\n --bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-warning {\n --bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-danger {\n --bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-light {\n --bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity));\n}\n\n.focus-ring-dark {\n --bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity));\n}\n\n.position-static {\n position: static !important;\n}\n\n.position-relative {\n position: relative !important;\n}\n\n.position-absolute {\n position: absolute !important;\n}\n\n.position-fixed {\n position: fixed !important;\n}\n\n.position-sticky {\n position: sticky !important;\n}\n\n.top-0 {\n top: 0 !important;\n}\n\n.top-50 {\n top: 50% !important;\n}\n\n.top-100 {\n top: 100% !important;\n}\n\n.bottom-0 {\n bottom: 0 !important;\n}\n\n.bottom-50 {\n bottom: 50% !important;\n}\n\n.bottom-100 {\n bottom: 100% !important;\n}\n\n.start-0 {\n left: 0 !important;\n}\n\n.start-50 {\n left: 50% !important;\n}\n\n.start-100 {\n left: 100% !important;\n}\n\n.end-0 {\n right: 0 !important;\n}\n\n.end-50 {\n right: 50% !important;\n}\n\n.end-100 {\n right: 100% !important;\n}\n\n.translate-middle {\n transform: translate(-50%, -50%) !important;\n}\n\n.translate-middle-x {\n transform: translateX(-50%) !important;\n}\n\n.translate-middle-y {\n transform: translateY(-50%) !important;\n}\n\n.border {\n border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top {\n border-top: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-end {\n border-right: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-end-0 {\n border-right: 0 !important;\n}\n\n.border-bottom {\n border-bottom: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-start {\n border-left: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;\n}\n\n.border-start-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-secondary {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-success {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-info {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-warning {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-danger {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-light {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-dark {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-black {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-white {\n --bs-border-opacity: 1;\n border-color: rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important;\n}\n\n.border-primary-subtle {\n border-color: var(--bs-primary-border-subtle) !important;\n}\n\n.border-secondary-subtle {\n border-color: var(--bs-secondary-border-subtle) !important;\n}\n\n.border-success-subtle {\n border-color: var(--bs-success-border-subtle) !important;\n}\n\n.border-info-subtle {\n border-color: var(--bs-info-border-subtle) !important;\n}\n\n.border-warning-subtle {\n border-color: var(--bs-warning-border-subtle) !important;\n}\n\n.border-danger-subtle {\n border-color: var(--bs-danger-border-subtle) !important;\n}\n\n.border-light-subtle {\n border-color: var(--bs-light-border-subtle) !important;\n}\n\n.border-dark-subtle {\n border-color: var(--bs-dark-border-subtle) !important;\n}\n\n.border-1 {\n border-width: 1px !important;\n}\n\n.border-2 {\n border-width: 2px !important;\n}\n\n.border-3 {\n border-width: 3px !important;\n}\n\n.border-4 {\n border-width: 4px !important;\n}\n\n.border-5 {\n border-width: 5px !important;\n}\n\n.border-opacity-10 {\n --bs-border-opacity: 0.1;\n}\n\n.border-opacity-25 {\n --bs-border-opacity: 0.25;\n}\n\n.border-opacity-50 {\n --bs-border-opacity: 0.5;\n}\n\n.border-opacity-75 {\n --bs-border-opacity: 0.75;\n}\n\n.border-opacity-100 {\n --bs-border-opacity: 1;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.w-auto {\n width: auto !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.vw-100 {\n width: 100vw !important;\n}\n\n.min-vw-100 {\n min-width: 100vw !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.h-auto {\n height: auto !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.vh-100 {\n height: 100vh !important;\n}\n\n.min-vh-100 {\n min-height: 100vh !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n.gap-0 {\n gap: 0 !important;\n}\n\n.gap-1 {\n gap: 0.25rem !important;\n}\n\n.gap-2 {\n gap: 0.5rem !important;\n}\n\n.gap-3 {\n gap: 1rem !important;\n}\n\n.gap-4 {\n gap: 1.5rem !important;\n}\n\n.gap-5 {\n gap: 3rem !important;\n}\n\n.row-gap-0 {\n row-gap: 0 !important;\n}\n\n.row-gap-1 {\n row-gap: 0.25rem !important;\n}\n\n.row-gap-2 {\n row-gap: 0.5rem !important;\n}\n\n.row-gap-3 {\n row-gap: 1rem !important;\n}\n\n.row-gap-4 {\n row-gap: 1.5rem !important;\n}\n\n.row-gap-5 {\n row-gap: 3rem !important;\n}\n\n.column-gap-0 {\n column-gap: 0 !important;\n}\n\n.column-gap-1 {\n column-gap: 0.25rem !important;\n}\n\n.column-gap-2 {\n column-gap: 0.5rem !important;\n}\n\n.column-gap-3 {\n column-gap: 1rem !important;\n}\n\n.column-gap-4 {\n column-gap: 1.5rem !important;\n}\n\n.column-gap-5 {\n column-gap: 3rem !important;\n}\n\n.font-monospace {\n font-family: var(--bs-font-monospace) !important;\n}\n\n.fs-1 {\n font-size: calc(1.375rem + 1.5vw) !important;\n}\n\n.fs-2 {\n font-size: calc(1.325rem + 0.9vw) !important;\n}\n\n.fs-3 {\n font-size: calc(1.3rem + 0.6vw) !important;\n}\n\n.fs-4 {\n font-size: calc(1.275rem + 0.3vw) !important;\n}\n\n.fs-5 {\n font-size: 1.25rem !important;\n}\n\n.fs-6 {\n font-size: 1rem !important;\n}\n\n.fst-italic {\n font-style: italic !important;\n}\n\n.fst-normal {\n font-style: normal !important;\n}\n\n.fw-lighter {\n font-weight: lighter !important;\n}\n\n.fw-light {\n font-weight: 300 !important;\n}\n\n.fw-normal {\n font-weight: 400 !important;\n}\n\n.fw-medium {\n font-weight: 500 !important;\n}\n\n.fw-semibold {\n font-weight: 600 !important;\n}\n\n.fw-bold {\n font-weight: 700 !important;\n}\n\n.fw-bolder {\n font-weight: bolder !important;\n}\n\n.lh-1 {\n line-height: 1 !important;\n}\n\n.lh-sm {\n line-height: 1.25 !important;\n}\n\n.lh-base {\n line-height: 1.5 !important;\n}\n\n.lh-lg {\n line-height: 2 !important;\n}\n\n.text-start {\n text-align: left !important;\n}\n\n.text-end {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n.text-decoration-none {\n text-decoration: none !important;\n}\n\n.text-decoration-underline {\n text-decoration: underline !important;\n}\n\n.text-decoration-line-through {\n text-decoration: line-through !important;\n}\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.text-wrap {\n white-space: normal !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n/* rtl:begin:remove */\n.text-break {\n word-wrap: break-word !important;\n word-break: break-word !important;\n}\n\n/* rtl:end:remove */\n.text-primary {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-secondary {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-success {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-info {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-warning {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-danger {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-light {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-dark {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-black {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-white {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-body {\n --bs-text-opacity: 1;\n color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-muted {\n --bs-text-opacity: 1;\n color: var(--bs-secondary-color) !important;\n}\n\n.text-black-50 {\n --bs-text-opacity: 1;\n color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n --bs-text-opacity: 1;\n color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-body-secondary {\n --bs-text-opacity: 1;\n color: var(--bs-secondary-color) !important;\n}\n\n.text-body-tertiary {\n --bs-text-opacity: 1;\n color: var(--bs-tertiary-color) !important;\n}\n\n.text-body-emphasis {\n --bs-text-opacity: 1;\n color: var(--bs-emphasis-color) !important;\n}\n\n.text-reset {\n --bs-text-opacity: 1;\n color: inherit !important;\n}\n\n.text-opacity-25 {\n --bs-text-opacity: 0.25;\n}\n\n.text-opacity-50 {\n --bs-text-opacity: 0.5;\n}\n\n.text-opacity-75 {\n --bs-text-opacity: 0.75;\n}\n\n.text-opacity-100 {\n --bs-text-opacity: 1;\n}\n\n.text-primary-emphasis {\n color: var(--bs-primary-text-emphasis) !important;\n}\n\n.text-secondary-emphasis {\n color: var(--bs-secondary-text-emphasis) !important;\n}\n\n.text-success-emphasis {\n color: var(--bs-success-text-emphasis) !important;\n}\n\n.text-info-emphasis {\n color: var(--bs-info-text-emphasis) !important;\n}\n\n.text-warning-emphasis {\n color: var(--bs-warning-text-emphasis) !important;\n}\n\n.text-danger-emphasis {\n color: var(--bs-danger-text-emphasis) !important;\n}\n\n.text-light-emphasis {\n color: var(--bs-light-text-emphasis) !important;\n}\n\n.text-dark-emphasis {\n color: var(--bs-dark-text-emphasis) !important;\n}\n\n.link-opacity-10 {\n --bs-link-opacity: 0.1;\n}\n\n.link-opacity-10-hover:hover {\n --bs-link-opacity: 0.1;\n}\n\n.link-opacity-25 {\n --bs-link-opacity: 0.25;\n}\n\n.link-opacity-25-hover:hover {\n --bs-link-opacity: 0.25;\n}\n\n.link-opacity-50 {\n --bs-link-opacity: 0.5;\n}\n\n.link-opacity-50-hover:hover {\n --bs-link-opacity: 0.5;\n}\n\n.link-opacity-75 {\n --bs-link-opacity: 0.75;\n}\n\n.link-opacity-75-hover:hover {\n --bs-link-opacity: 0.75;\n}\n\n.link-opacity-100 {\n --bs-link-opacity: 1;\n}\n\n.link-opacity-100-hover:hover {\n --bs-link-opacity: 1;\n}\n\n.link-offset-1 {\n text-underline-offset: 0.125em !important;\n}\n\n.link-offset-1-hover:hover {\n text-underline-offset: 0.125em !important;\n}\n\n.link-offset-2 {\n text-underline-offset: 0.25em !important;\n}\n\n.link-offset-2-hover:hover {\n text-underline-offset: 0.25em !important;\n}\n\n.link-offset-3 {\n text-underline-offset: 0.375em !important;\n}\n\n.link-offset-3-hover:hover {\n text-underline-offset: 0.375em !important;\n}\n\n.link-underline-primary {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-secondary {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-success {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-info {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-warning {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-danger {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-light {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline-dark {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important;\n}\n\n.link-underline {\n --bs-link-underline-opacity: 1;\n text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important;\n}\n\n.link-underline-opacity-0 {\n --bs-link-underline-opacity: 0;\n}\n\n.link-underline-opacity-0-hover:hover {\n --bs-link-underline-opacity: 0;\n}\n\n.link-underline-opacity-10 {\n --bs-link-underline-opacity: 0.1;\n}\n\n.link-underline-opacity-10-hover:hover {\n --bs-link-underline-opacity: 0.1;\n}\n\n.link-underline-opacity-25 {\n --bs-link-underline-opacity: 0.25;\n}\n\n.link-underline-opacity-25-hover:hover {\n --bs-link-underline-opacity: 0.25;\n}\n\n.link-underline-opacity-50 {\n --bs-link-underline-opacity: 0.5;\n}\n\n.link-underline-opacity-50-hover:hover {\n --bs-link-underline-opacity: 0.5;\n}\n\n.link-underline-opacity-75 {\n --bs-link-underline-opacity: 0.75;\n}\n\n.link-underline-opacity-75-hover:hover {\n --bs-link-underline-opacity: 0.75;\n}\n\n.link-underline-opacity-100 {\n --bs-link-underline-opacity: 1;\n}\n\n.link-underline-opacity-100-hover:hover {\n --bs-link-underline-opacity: 1;\n}\n\n.bg-primary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-secondary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-success {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-info {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-warning {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-danger {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-light {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-dark {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-black {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-white {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-transparent {\n --bs-bg-opacity: 1;\n background-color: transparent !important;\n}\n\n.bg-body-secondary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body-tertiary {\n --bs-bg-opacity: 1;\n background-color: rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-opacity-10 {\n --bs-bg-opacity: 0.1;\n}\n\n.bg-opacity-25 {\n --bs-bg-opacity: 0.25;\n}\n\n.bg-opacity-50 {\n --bs-bg-opacity: 0.5;\n}\n\n.bg-opacity-75 {\n --bs-bg-opacity: 0.75;\n}\n\n.bg-opacity-100 {\n --bs-bg-opacity: 1;\n}\n\n.bg-primary-subtle {\n background-color: var(--bs-primary-bg-subtle) !important;\n}\n\n.bg-secondary-subtle {\n background-color: var(--bs-secondary-bg-subtle) !important;\n}\n\n.bg-success-subtle {\n background-color: var(--bs-success-bg-subtle) !important;\n}\n\n.bg-info-subtle {\n background-color: var(--bs-info-bg-subtle) !important;\n}\n\n.bg-warning-subtle {\n background-color: var(--bs-warning-bg-subtle) !important;\n}\n\n.bg-danger-subtle {\n background-color: var(--bs-danger-bg-subtle) !important;\n}\n\n.bg-light-subtle {\n background-color: var(--bs-light-bg-subtle) !important;\n}\n\n.bg-dark-subtle {\n background-color: var(--bs-dark-bg-subtle) !important;\n}\n\n.bg-gradient {\n background-image: var(--bs-gradient) !important;\n}\n\n.user-select-all {\n user-select: all !important;\n}\n\n.user-select-auto {\n user-select: auto !important;\n}\n\n.user-select-none {\n user-select: none !important;\n}\n\n.pe-none {\n pointer-events: none !important;\n}\n\n.pe-auto {\n pointer-events: auto !important;\n}\n\n.rounded {\n border-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n\n.rounded-1 {\n border-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-2 {\n border-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-3 {\n border-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-4 {\n border-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-5 {\n border-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-pill {\n border-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-top {\n border-top-left-radius: var(--bs-border-radius) !important;\n border-top-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-top-0 {\n border-top-left-radius: 0 !important;\n border-top-right-radius: 0 !important;\n}\n\n.rounded-top-1 {\n border-top-left-radius: var(--bs-border-radius-sm) !important;\n border-top-right-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-top-2 {\n border-top-left-radius: var(--bs-border-radius) !important;\n border-top-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-top-3 {\n border-top-left-radius: var(--bs-border-radius-lg) !important;\n border-top-right-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-top-4 {\n border-top-left-radius: var(--bs-border-radius-xl) !important;\n border-top-right-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-top-5 {\n border-top-left-radius: var(--bs-border-radius-xxl) !important;\n border-top-right-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-top-circle {\n border-top-left-radius: 50% !important;\n border-top-right-radius: 50% !important;\n}\n\n.rounded-top-pill {\n border-top-left-radius: var(--bs-border-radius-pill) !important;\n border-top-right-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-end {\n border-top-right-radius: var(--bs-border-radius) !important;\n border-bottom-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-end-0 {\n border-top-right-radius: 0 !important;\n border-bottom-right-radius: 0 !important;\n}\n\n.rounded-end-1 {\n border-top-right-radius: var(--bs-border-radius-sm) !important;\n border-bottom-right-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-end-2 {\n border-top-right-radius: var(--bs-border-radius) !important;\n border-bottom-right-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-end-3 {\n border-top-right-radius: var(--bs-border-radius-lg) !important;\n border-bottom-right-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-end-4 {\n border-top-right-radius: var(--bs-border-radius-xl) !important;\n border-bottom-right-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-end-5 {\n border-top-right-radius: var(--bs-border-radius-xxl) !important;\n border-bottom-right-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-end-circle {\n border-top-right-radius: 50% !important;\n border-bottom-right-radius: 50% !important;\n}\n\n.rounded-end-pill {\n border-top-right-radius: var(--bs-border-radius-pill) !important;\n border-bottom-right-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: var(--bs-border-radius) !important;\n border-bottom-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-bottom-0 {\n border-bottom-right-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n}\n\n.rounded-bottom-1 {\n border-bottom-right-radius: var(--bs-border-radius-sm) !important;\n border-bottom-left-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-bottom-2 {\n border-bottom-right-radius: var(--bs-border-radius) !important;\n border-bottom-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-bottom-3 {\n border-bottom-right-radius: var(--bs-border-radius-lg) !important;\n border-bottom-left-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-bottom-4 {\n border-bottom-right-radius: var(--bs-border-radius-xl) !important;\n border-bottom-left-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-bottom-5 {\n border-bottom-right-radius: var(--bs-border-radius-xxl) !important;\n border-bottom-left-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-bottom-circle {\n border-bottom-right-radius: 50% !important;\n border-bottom-left-radius: 50% !important;\n}\n\n.rounded-bottom-pill {\n border-bottom-right-radius: var(--bs-border-radius-pill) !important;\n border-bottom-left-radius: var(--bs-border-radius-pill) !important;\n}\n\n.rounded-start {\n border-bottom-left-radius: var(--bs-border-radius) !important;\n border-top-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-start-0 {\n border-bottom-left-radius: 0 !important;\n border-top-left-radius: 0 !important;\n}\n\n.rounded-start-1 {\n border-bottom-left-radius: var(--bs-border-radius-sm) !important;\n border-top-left-radius: var(--bs-border-radius-sm) !important;\n}\n\n.rounded-start-2 {\n border-bottom-left-radius: var(--bs-border-radius) !important;\n border-top-left-radius: var(--bs-border-radius) !important;\n}\n\n.rounded-start-3 {\n border-bottom-left-radius: var(--bs-border-radius-lg) !important;\n border-top-left-radius: var(--bs-border-radius-lg) !important;\n}\n\n.rounded-start-4 {\n border-bottom-left-radius: var(--bs-border-radius-xl) !important;\n border-top-left-radius: var(--bs-border-radius-xl) !important;\n}\n\n.rounded-start-5 {\n border-bottom-left-radius: var(--bs-border-radius-xxl) !important;\n border-top-left-radius: var(--bs-border-radius-xxl) !important;\n}\n\n.rounded-start-circle {\n border-bottom-left-radius: 50% !important;\n border-top-left-radius: 50% !important;\n}\n\n.rounded-start-pill {\n border-bottom-left-radius: var(--bs-border-radius-pill) !important;\n border-top-left-radius: var(--bs-border-radius-pill) !important;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n.z-n1 {\n z-index: -1 !important;\n}\n\n.z-0 {\n z-index: 0 !important;\n}\n\n.z-1 {\n z-index: 1 !important;\n}\n\n.z-2 {\n z-index: 2 !important;\n}\n\n.z-3 {\n z-index: 3 !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-start {\n float: left !important;\n }\n .float-sm-end {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n .object-fit-sm-contain {\n object-fit: contain !important;\n }\n .object-fit-sm-cover {\n object-fit: cover !important;\n }\n .object-fit-sm-fill {\n object-fit: fill !important;\n }\n .object-fit-sm-scale {\n object-fit: scale-down !important;\n }\n .object-fit-sm-none {\n object-fit: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-inline-grid {\n display: inline-grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n .gap-sm-0 {\n gap: 0 !important;\n }\n .gap-sm-1 {\n gap: 0.25rem !important;\n }\n .gap-sm-2 {\n gap: 0.5rem !important;\n }\n .gap-sm-3 {\n gap: 1rem !important;\n }\n .gap-sm-4 {\n gap: 1.5rem !important;\n }\n .gap-sm-5 {\n gap: 3rem !important;\n }\n .row-gap-sm-0 {\n row-gap: 0 !important;\n }\n .row-gap-sm-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-sm-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-sm-3 {\n row-gap: 1rem !important;\n }\n .row-gap-sm-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-sm-5 {\n row-gap: 3rem !important;\n }\n .column-gap-sm-0 {\n column-gap: 0 !important;\n }\n .column-gap-sm-1 {\n column-gap: 0.25rem !important;\n }\n .column-gap-sm-2 {\n column-gap: 0.5rem !important;\n }\n .column-gap-sm-3 {\n column-gap: 1rem !important;\n }\n .column-gap-sm-4 {\n column-gap: 1.5rem !important;\n }\n .column-gap-sm-5 {\n column-gap: 3rem !important;\n }\n .text-sm-start {\n text-align: left !important;\n }\n .text-sm-end {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n@media (min-width: 768px) {\n .float-md-start {\n float: left !important;\n }\n .float-md-end {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n .object-fit-md-contain {\n object-fit: contain !important;\n }\n .object-fit-md-cover {\n object-fit: cover !important;\n }\n .object-fit-md-fill {\n object-fit: fill !important;\n }\n .object-fit-md-scale {\n object-fit: scale-down !important;\n }\n .object-fit-md-none {\n object-fit: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-inline-grid {\n display: inline-grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n .gap-md-0 {\n gap: 0 !important;\n }\n .gap-md-1 {\n gap: 0.25rem !important;\n }\n .gap-md-2 {\n gap: 0.5rem !important;\n }\n .gap-md-3 {\n gap: 1rem !important;\n }\n .gap-md-4 {\n gap: 1.5rem !important;\n }\n .gap-md-5 {\n gap: 3rem !important;\n }\n .row-gap-md-0 {\n row-gap: 0 !important;\n }\n .row-gap-md-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-md-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-md-3 {\n row-gap: 1rem !important;\n }\n .row-gap-md-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-md-5 {\n row-gap: 3rem !important;\n }\n .column-gap-md-0 {\n column-gap: 0 !important;\n }\n .column-gap-md-1 {\n column-gap: 0.25rem !important;\n }\n .column-gap-md-2 {\n column-gap: 0.5rem !important;\n }\n .column-gap-md-3 {\n column-gap: 1rem !important;\n }\n .column-gap-md-4 {\n column-gap: 1.5rem !important;\n }\n .column-gap-md-5 {\n column-gap: 3rem !important;\n }\n .text-md-start {\n text-align: left !important;\n }\n .text-md-end {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n@media (min-width: 992px) {\n .float-lg-start {\n float: left !important;\n }\n .float-lg-end {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n .object-fit-lg-contain {\n object-fit: contain !important;\n }\n .object-fit-lg-cover {\n object-fit: cover !important;\n }\n .object-fit-lg-fill {\n object-fit: fill !important;\n }\n .object-fit-lg-scale {\n object-fit: scale-down !important;\n }\n .object-fit-lg-none {\n object-fit: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-inline-grid {\n display: inline-grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n .gap-lg-0 {\n gap: 0 !important;\n }\n .gap-lg-1 {\n gap: 0.25rem !important;\n }\n .gap-lg-2 {\n gap: 0.5rem !important;\n }\n .gap-lg-3 {\n gap: 1rem !important;\n }\n .gap-lg-4 {\n gap: 1.5rem !important;\n }\n .gap-lg-5 {\n gap: 3rem !important;\n }\n .row-gap-lg-0 {\n row-gap: 0 !important;\n }\n .row-gap-lg-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-lg-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-lg-3 {\n row-gap: 1rem !important;\n }\n .row-gap-lg-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-lg-5 {\n row-gap: 3rem !important;\n }\n .column-gap-lg-0 {\n column-gap: 0 !important;\n }\n .column-gap-lg-1 {\n column-gap: 0.25rem !important;\n }\n .column-gap-lg-2 {\n column-gap: 0.5rem !important;\n }\n .column-gap-lg-3 {\n column-gap: 1rem !important;\n }\n .column-gap-lg-4 {\n column-gap: 1.5rem !important;\n }\n .column-gap-lg-5 {\n column-gap: 3rem !important;\n }\n .text-lg-start {\n text-align: left !important;\n }\n .text-lg-end {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n@media (min-width: 1200px) {\n .float-xl-start {\n float: left !important;\n }\n .float-xl-end {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n .object-fit-xl-contain {\n object-fit: contain !important;\n }\n .object-fit-xl-cover {\n object-fit: cover !important;\n }\n .object-fit-xl-fill {\n object-fit: fill !important;\n }\n .object-fit-xl-scale {\n object-fit: scale-down !important;\n }\n .object-fit-xl-none {\n object-fit: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-inline-grid {\n display: inline-grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n .gap-xl-0 {\n gap: 0 !important;\n }\n .gap-xl-1 {\n gap: 0.25rem !important;\n }\n .gap-xl-2 {\n gap: 0.5rem !important;\n }\n .gap-xl-3 {\n gap: 1rem !important;\n }\n .gap-xl-4 {\n gap: 1.5rem !important;\n }\n .gap-xl-5 {\n gap: 3rem !important;\n }\n .row-gap-xl-0 {\n row-gap: 0 !important;\n }\n .row-gap-xl-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-xl-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-xl-3 {\n row-gap: 1rem !important;\n }\n .row-gap-xl-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-xl-5 {\n row-gap: 3rem !important;\n }\n .column-gap-xl-0 {\n column-gap: 0 !important;\n }\n .column-gap-xl-1 {\n column-gap: 0.25rem !important;\n }\n .column-gap-xl-2 {\n column-gap: 0.5rem !important;\n }\n .column-gap-xl-3 {\n column-gap: 1rem !important;\n }\n .column-gap-xl-4 {\n column-gap: 1.5rem !important;\n }\n .column-gap-xl-5 {\n column-gap: 3rem !important;\n }\n .text-xl-start {\n text-align: left !important;\n }\n .text-xl-end {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n@media (min-width: 1400px) {\n .float-xxl-start {\n float: left !important;\n }\n .float-xxl-end {\n float: right !important;\n }\n .float-xxl-none {\n float: none !important;\n }\n .object-fit-xxl-contain {\n object-fit: contain !important;\n }\n .object-fit-xxl-cover {\n object-fit: cover !important;\n }\n .object-fit-xxl-fill {\n object-fit: fill !important;\n }\n .object-fit-xxl-scale {\n object-fit: scale-down !important;\n }\n .object-fit-xxl-none {\n object-fit: none !important;\n }\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-inline-grid {\n display: inline-grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n .me-xxl-auto {\n margin-right: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n .gap-xxl-0 {\n gap: 0 !important;\n }\n .gap-xxl-1 {\n gap: 0.25rem !important;\n }\n .gap-xxl-2 {\n gap: 0.5rem !important;\n }\n .gap-xxl-3 {\n gap: 1rem !important;\n }\n .gap-xxl-4 {\n gap: 1.5rem !important;\n }\n .gap-xxl-5 {\n gap: 3rem !important;\n }\n .row-gap-xxl-0 {\n row-gap: 0 !important;\n }\n .row-gap-xxl-1 {\n row-gap: 0.25rem !important;\n }\n .row-gap-xxl-2 {\n row-gap: 0.5rem !important;\n }\n .row-gap-xxl-3 {\n row-gap: 1rem !important;\n }\n .row-gap-xxl-4 {\n row-gap: 1.5rem !important;\n }\n .row-gap-xxl-5 {\n row-gap: 3rem !important;\n }\n .column-gap-xxl-0 {\n column-gap: 0 !important;\n }\n .column-gap-xxl-1 {\n column-gap: 0.25rem !important;\n }\n .column-gap-xxl-2 {\n column-gap: 0.5rem !important;\n }\n .column-gap-xxl-3 {\n column-gap: 1rem !important;\n }\n .column-gap-xxl-4 {\n column-gap: 1.5rem !important;\n }\n .column-gap-xxl-5 {\n column-gap: 3rem !important;\n }\n .text-xxl-start {\n text-align: left !important;\n }\n .text-xxl-end {\n text-align: right !important;\n }\n .text-xxl-center {\n text-align: center !important;\n }\n}\n@media (min-width: 1200px) {\n .fs-1 {\n font-size: 2.5rem !important;\n }\n .fs-2 {\n font-size: 2rem !important;\n }\n .fs-3 {\n font-size: 1.75rem !important;\n }\n .fs-4 {\n font-size: 1.5rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-inline-grid {\n display: inline-grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n@font-face {\n font-display: swap;\n font-family: \"Gloria Hallelujah\";\n font-style: normal;\n font-weight: 400;\n src: url(\"../fonts/gloria-hallelujah-v24-latin/gloria-hallelujah-v24-latin-regular.woff2\") format(\"woff2\");\n}\n@font-face {\n font-display: swap;\n font-family: \"Lato\";\n font-style: normal;\n font-weight: 100;\n src: url(\"../fonts/lato-v25-latin/lato-v25-latin-100.woff2\") format(\"woff2\");\n}\n@font-face {\n font-display: swap;\n font-family: \"Lato\";\n font-style: italic;\n font-weight: 100;\n src: url(\"../fonts/lato-v25-latin/lato-v25-latin-100italic.woff2\") format(\"woff2\");\n}\n@font-face {\n font-display: swap;\n font-family: \"Lato\";\n font-style: normal;\n font-weight: 300;\n src: url(\"../fonts/lato-v25-latin/lato-v25-latin-300.woff2\") format(\"woff2\");\n}\n@font-face {\n font-display: swap;\n font-family: \"Lato\";\n font-style: italic;\n font-weight: 300;\n src: url(\"../fonts/lato-v25-latin/lato-v25-latin-300italic.woff2\") format(\"woff2\");\n}\n@font-face {\n font-display: swap;\n font-family: \"Lato\";\n font-style: normal;\n font-weight: 400;\n src: url(\"../fonts/lato-v25-latin/lato-v25-latin-regular.woff2\") format(\"woff2\");\n}\n@font-face {\n font-display: swap;\n font-family: \"Lato\";\n font-style: italic;\n font-weight: 400;\n src: url(\"../fonts/lato-v25-latin/lato-v25-latin-italic.woff2\") format(\"woff2\");\n}\n@font-face {\n font-display: swap;\n font-family: \"Lato\";\n font-style: normal;\n font-weight: 700;\n src: url(\"../fonts/lato-v25-latin/lato-v25-latin-700.woff2\") format(\"woff2\");\n}\n@font-face {\n font-display: swap;\n font-family: \"Lato\";\n font-style: italic;\n font-weight: 700;\n src: url(\"../fonts/lato-v25-latin/lato-v25-latin-700italic.woff2\") format(\"woff2\");\n}\n@font-face {\n font-display: swap;\n font-family: \"Lato\";\n font-style: normal;\n font-weight: 900;\n src: url(\"../fonts/lato-v25-latin/lato-v25-latin-900.woff2\") format(\"woff2\");\n}\n@font-face {\n font-display: swap;\n font-family: \"Lato\";\n font-style: italic;\n font-weight: 900;\n src: url(\"../fonts/lato-v25-latin/lato-v25-latin-900italic.woff2\") format(\"woff2\");\n}\n@font-face {\n font-display: swap;\n font-family: \"Source Sans 3\";\n font-style: normal;\n font-weight: 200;\n src: url(\"../fonts/source-sans-3-v19-latin/source-sans-3-v19-latin-200.woff2\") format(\"woff2\");\n}\n@font-face {\n font-display: swap;\n font-family: \"Source Sans 3\";\n font-style: italic;\n font-weight: 200;\n src: url(\"../fonts/source-sans-3-v19-latin/source-sans-3-v19-latin-200italic.woff2\") format(\"woff2\");\n}\n@font-face {\n font-display: swap;\n font-family: \"Source Sans 3\";\n font-style: normal;\n font-weight: 300;\n src: url(\"../fonts/source-sans-3-v19-latin/source-sans-3-v19-latin-300.woff2\") format(\"woff2\");\n}\n@font-face {\n font-display: swap;\n font-family: \"Source Sans 3\";\n font-style: italic;\n font-weight: 300;\n src: url(\"../fonts/source-sans-3-v19-latin/source-sans-3-v19-latin-300italic.woff2\") format(\"woff2\");\n}\n@font-face {\n font-display: swap;\n font-family: \"Source Sans 3\";\n font-style: normal;\n font-weight: 400;\n src: url(\"../fonts/source-sans-3-v19-latin/source-sans-3-v19-latin-regular.woff2\") format(\"woff2\");\n}\n@font-face {\n font-display: swap;\n font-family: \"Source Sans 3\";\n font-style: italic;\n font-weight: 400;\n src: url(\"../fonts/source-sans-3-v19-latin/source-sans-3-v19-latin-italic.woff2\") format(\"woff2\");\n}\n@font-face {\n font-display: swap;\n font-family: \"Source Sans 3\";\n font-style: normal;\n font-weight: 500;\n src: url(\"../fonts/source-sans-3-v19-latin/source-sans-3-v19-latin-500.woff2\") format(\"woff2\");\n}\n@font-face {\n font-display: swap;\n font-family: \"Source Sans 3\";\n font-style: italic;\n font-weight: 500;\n src: url(\"../fonts/source-sans-3-v19-latin/source-sans-3-v19-latin-500italic.woff2\") format(\"woff2\");\n}\n@font-face {\n font-display: swap;\n font-family: \"Source Sans 3\";\n font-style: normal;\n font-weight: 600;\n src: url(\"../fonts/source-sans-3-v19-latin/source-sans-3-v19-latin-600.woff2\") format(\"woff2\");\n}\n@font-face {\n font-display: swap;\n font-family: \"Source Sans 3\";\n font-style: italic;\n font-weight: 600;\n src: url(\"../fonts/source-sans-3-v19-latin/source-sans-3-v19-latin-600italic.woff2\") format(\"woff2\");\n}\n@font-face {\n font-display: swap;\n font-family: \"Source Sans 3\";\n font-style: normal;\n font-weight: 700;\n src: url(\"../fonts/source-sans-3-v19-latin/source-sans-3-v19-latin-700.woff2\") format(\"woff2\");\n}\n@font-face {\n font-display: swap;\n font-family: \"Source Sans 3\";\n font-style: italic;\n font-weight: 700;\n src: url(\"../fonts/source-sans-3-v19-latin/source-sans-3-v19-latin-700italic.woff2\") format(\"woff2\");\n}\n@font-face {\n font-display: swap;\n font-family: \"Source Sans 3\";\n font-style: normal;\n font-weight: 800;\n src: url(\"../fonts/source-sans-3-v19-latin/source-sans-3-v19-latin-800.woff2\") format(\"woff2\");\n}\n@font-face {\n font-display: swap;\n font-family: \"Source Sans 3\";\n font-style: italic;\n font-weight: 800;\n src: url(\"../fonts/source-sans-3-v19-latin/source-sans-3-v19-latin-800italic.woff2\") format(\"woff2\");\n}\n@font-face {\n font-display: swap;\n font-family: \"Source Sans 3\";\n font-style: normal;\n font-weight: 900;\n src: url(\"../fonts/source-sans-3-v19-latin/source-sans-3-v19-latin-900.woff2\") format(\"woff2\");\n}\n@font-face {\n font-display: swap;\n font-family: \"Source Sans 3\";\n font-style: italic;\n font-weight: 900;\n src: url(\"../fonts/source-sans-3-v19-latin/source-sans-3-v19-latin-900italic.woff2\") format(\"woff2\");\n}\n/* Color Theme Swatches in Hex */\n*,\nhtml {\n box-sizing: border-box;\n}\n\nhtml,\nbody {\n height: 100%;\n}\n\nbody {\n margin: 0;\n padding: 0;\n font-family: \"Source Sans 3\", \"Segoe UI\", Tahoma, Geneva, Verdana, sans-serif;\n}\n\nh1, .h1,\nh2,\n.h2,\nh3,\n.h3,\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n font-family: \"Lato\", Cambria, Cochin, Georgia, Times, \"Times New Roman\", serif;\n font-weight: 600;\n}\n\nblockquote {\n font-family: \"Gloria Hallelujah\", Cambria, Cochin, Georgia, Times, \"Times New Roman\", serif;\n}\n\n/*!\n * Toastify js 1.12.0\n * https://github.com/apvarun/toastify-js\n * @license MIT licensed\n *\n * Copyright (C) 2018 Varun A P\n */\n.toastify {\n padding: 12px 20px;\n color: #ffffff;\n display: inline-block;\n box-shadow: 0 3px 6px -1px rgba(0, 0, 0, 0.12), 0 10px 36px -4px rgba(77, 96, 232, 0.3);\n background: -webkit-linear-gradient(315deg, #73a5ff, #5477f5);\n background: linear-gradient(135deg, #73a5ff, #5477f5);\n position: fixed;\n opacity: 0;\n transition: all 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);\n border-radius: 2px;\n cursor: pointer;\n text-decoration: none;\n max-width: calc(50% - 20px);\n z-index: 2147483647;\n}\n\n.toastify.on {\n opacity: 1;\n}\n\n.toast-close {\n background: transparent;\n border: 0;\n color: white;\n cursor: pointer;\n font-family: inherit;\n font-size: 1em;\n opacity: 0.4;\n padding: 0 5px;\n}\n\n.toastify-right {\n right: 15px;\n}\n\n.toastify-left {\n left: 15px;\n}\n\n.toastify-top {\n top: -150px;\n}\n\n.toastify-bottom {\n bottom: -150px;\n}\n\n.toastify-rounded {\n border-radius: 25px;\n}\n\n.toastify-avatar {\n width: 1.5em;\n height: 1.5em;\n margin: -7px 5px;\n border-radius: 2px;\n}\n\n.toastify-center {\n margin-left: auto;\n margin-right: auto;\n left: 0;\n right: 0;\n max-width: fit-content;\n max-width: -moz-fit-content;\n}\n\n@media only screen and (max-width: 360px) {\n .toastify-right,\n .toastify-left {\n margin-left: auto;\n margin-right: auto;\n left: 0;\n right: 0;\n max-width: fit-content;\n }\n}\n.chuck-norris-joke {\n position: relative;\n width: 100%;\n height: 100%;\n height: 100vh;\n background: #555 url(\"../img/concrete-bg.jpg\") center no-repeat fixed;\n background-size: cover;\n}\n.chuck-norris-joke::after {\n content: \"\";\n position: absolute;\n z-index: 1;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: radial-gradient(circle, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.8) 100%);\n}\n.chuck-norris-joke > * {\n position: relative;\n z-index: 2;\n}\n.chuck-norris-joke {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n}\n.chuck-norris-joke .joke-text {\n color: white;\n text-align: center;\n font-size: 3rem;\n max-width: 80%;\n padding: 2rem;\n text-shadow: 2px 2px 5px rgba(0, 0, 0, 0.5);\n}\n\n.header-main {\n width: 100%;\n height: 30vh; /* viewport height */\n height: 400px;\n background: black url(\"../img/header-bg.webp\") center no-repeat border-box;\n background-size: cover;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n border: 20px solid rgba(255, 255, 255, 0.25);\n}\n\n.logo-main img,\n.logo-main svg {\n width: 320px;\n height: auto;\n max-width: 320px;\n}\n.logo-main figcaption {\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n.menu-main {\n margin: 0;\n padding: 0;\n background-color: #101010;\n}\n.menu-main ul {\n list-style: none;\n padding: 0;\n margin: 0;\n}\n.menu-main ul.list {\n display: flex;\n}\n.menu-main ul.list li a {\n outline: none;\n}\n.menu-main ul.list li a:hover, .menu-main ul.list li a:focus {\n color: #101010;\n background-color: #f2ebbf;\n}\n.menu-main ul.list li a {\n display: inline-block;\n color: #f2ebbf;\n background-color: #101010;\n padding: 0.5rem 1rem;\n text-decoration: none;\n text-transform: uppercase;\n transition: all 0.25s ease-out;\n}\n.menu-main ul.sublist {\n position: absolute;\n}\n.menu-main ul ul {\n display: none;\n}\n.menu-main ul > li:hover ul,\n.menu-main ul > li:focus ul,\n.menu-main ul > li:focus-within ul {\n display: block;\n}\n\n.product-manager .nav-products-actions ul {\n padding: 0;\n margin: 0;\n list-style: none;\n display: flex;\n justify-content: flex-end;\n}\n.product-manager .nav-products-actions ul li button {\n margin: 0.5rem 0 0.5rem 0.5rem;\n}\n.product-manager table .th-actions {\n width: 185px;\n}\n.product-manager table .th-dragger {\n width: 50px;\n}\n.product-manager table td {\n vertical-align: middle;\n}\n.product-manager table td button {\n margin: 0 2px;\n}\n.product-manager table tbody:empty::after {\n content: \"loading products...\";\n width: max-content;\n display: inline-block;\n color: #999;\n padding: 1rem;\n}\n.product-manager table tfoot .row > * {\n margin-bottom: 0.5rem;\n}\n@media (min-width: 992px) {\n .product-manager table tfoot .row > * {\n margin-bottom: 0;\n }\n}","@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.8 (https://getbootstrap.com/)\n * Copyright 2011-2025 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n","// TODO: change with SASS FontAwesome Version\n@import 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.3.1/css/all.css';\n\n@import 'toastify-1.12/toastify';\n",":root,\n[data-bs-theme=\"light\"] {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n @each $color, $value in $theme-colors-text {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradient: #{$gradient};\n\n // Root and body\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$prefix}root-font-size: #{$font-size-root};\n }\n --#{$prefix}body-font-family: #{inspect($font-family-base)};\n @include rfs($font-size-base, --#{$prefix}body-font-size);\n --#{$prefix}body-font-weight: #{$font-weight-base};\n --#{$prefix}body-line-height: #{$line-height-base};\n @if $body-text-align != null {\n --#{$prefix}body-text-align: #{$body-text-align};\n }\n\n --#{$prefix}body-color: #{$body-color};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg: #{$body-bg};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};\n // scss-docs-end root-body-variables\n\n --#{$prefix}heading-color: #{$headings-color};\n\n --#{$prefix}link-color: #{$link-color};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color)};\n --#{$prefix}link-decoration: #{$link-decoration};\n\n --#{$prefix}link-hover-color: #{$link-hover-color};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};\n\n @if $link-hover-decoration != null {\n --#{$prefix}link-hover-decoration: #{$link-hover-decoration};\n }\n\n --#{$prefix}code-color: #{$code-color};\n --#{$prefix}highlight-color: #{$mark-color};\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n // scss-docs-start root-border-var\n --#{$prefix}border-width: #{$border-width};\n --#{$prefix}border-style: #{$border-style};\n --#{$prefix}border-color: #{$border-color};\n --#{$prefix}border-color-translucent: #{$border-color-translucent};\n\n --#{$prefix}border-radius: #{$border-radius};\n --#{$prefix}border-radius-sm: #{$border-radius-sm};\n --#{$prefix}border-radius-lg: #{$border-radius-lg};\n --#{$prefix}border-radius-xl: #{$border-radius-xl};\n --#{$prefix}border-radius-xxl: #{$border-radius-xxl};\n --#{$prefix}border-radius-2xl: var(--#{$prefix}border-radius-xxl); // Deprecated in v5.3.0 for consistency\n --#{$prefix}border-radius-pill: #{$border-radius-pill};\n // scss-docs-end root-border-var\n\n --#{$prefix}box-shadow: #{$box-shadow};\n --#{$prefix}box-shadow-sm: #{$box-shadow-sm};\n --#{$prefix}box-shadow-lg: #{$box-shadow-lg};\n --#{$prefix}box-shadow-inset: #{$box-shadow-inset};\n\n // Focus styles\n // scss-docs-start root-focus-variables\n --#{$prefix}focus-ring-width: #{$focus-ring-width};\n --#{$prefix}focus-ring-opacity: #{$focus-ring-opacity};\n --#{$prefix}focus-ring-color: #{$focus-ring-color};\n // scss-docs-end root-focus-variables\n\n // scss-docs-start root-form-validation-variables\n --#{$prefix}form-valid-color: #{$form-valid-color};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color};\n --#{$prefix}form-invalid-color: #{$form-invalid-color};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color};\n // scss-docs-end root-form-validation-variables\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark, true) {\n color-scheme: dark;\n\n // scss-docs-start root-dark-mode-vars\n --#{$prefix}body-color: #{$body-color-dark};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};\n --#{$prefix}body-bg: #{$body-bg-dark};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color-dark};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color-dark};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg-dark};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color-dark};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};\n\n @each $color, $value in $theme-colors-text-dark {\n --#{$prefix}#{$color}-text-emphasis: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle-dark {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle-dark {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}heading-color: #{$headings-color-dark};\n\n --#{$prefix}link-color: #{$link-color-dark};\n --#{$prefix}link-hover-color: #{$link-hover-color-dark};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};\n\n --#{$prefix}code-color: #{$code-color-dark};\n --#{$prefix}highlight-color: #{$mark-color-dark};\n --#{$prefix}highlight-bg: #{$mark-bg-dark};\n\n --#{$prefix}border-color: #{$border-color-dark};\n --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};\n\n --#{$prefix}form-valid-color: #{$form-valid-color-dark};\n --#{$prefix}form-valid-border-color: #{$form-valid-border-color-dark};\n --#{$prefix}form-invalid-color: #{$form-invalid-color-dark};\n --#{$prefix}form-invalid-border-color: #{$form-invalid-border-color-dark};\n // scss-docs-end root-dark-mode-vars\n }\n}\n","// stylelint-disable scss/dimension-no-non-numeric-values\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n $dividend: abs($dividend);\n $divisor: abs($divisor);\n @if $dividend == 0 {\n @return 0;\n }\n @if $divisor == 0 {\n @error \"Cannot divide by 0\";\n }\n $remainder: $dividend;\n $result: 0;\n $factor: 10;\n @while ($remainder > 0 and $precision >= 0) {\n $quotient: 0;\n @while ($remainder >= $divisor) {\n $remainder: $remainder - $divisor;\n $quotient: $quotient + 1;\n }\n $result: $result * 10 + $quotient;\n $factor: $factor * .1;\n $remainder: $remainder * 10;\n $precision: $precision - 1;\n @if ($precision < 0 and $remainder >= $divisor * 5) {\n $result: $result + 1;\n }\n }\n $result: $result * $factor * $sign;\n $dividend-unit: unit($dividend);\n $divisor-unit: unit($divisor);\n $unit-map: (\n \"px\": 1px,\n \"rem\": 1rem,\n \"em\": 1em,\n \"%\": 1%\n );\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n $result: $result * map-get($unit-map, $dividend-unit);\n }\n @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n @if $rfs-two-dimensional {\n @if $rfs-mode == max-media-query {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n @content;\n }\n }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n @if $rfs-class == disable and $rfs-mode == max-media-query {\n // Adding an extra class increases specificity, which prevents the media query to override the property\n &,\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @else if $rfs-class == enable and $rfs-mode == min-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n @if $rfs-class == enable {\n @if $rfs-mode == min-media-query {\n @content;\n }\n\n @include _rfs-media-query () {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n }\n @else {\n @if $rfs-class == disable and $rfs-mode == min-media-query {\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @include _rfs-media-query () {\n @content;\n }\n }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n }\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n @if $unit == px {\n // Convert to rem if needed\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n }\n @else if $unit == rem {\n // Convert to px if needed\n $val: $val + \" \" + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n } @else {\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n $val: $val + \" \" + $value;\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: \"\";\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + \" 0\";\n } @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $unit or $unit != px and $unit != rem {\n $val: $val + \" \" + $value;\n } @else {\n // Remove unit from $value for calculations\n $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n // Only add the media query if the value is greater than the minimum value\n @if abs($value) <= $rfs-base-value or not $enable-rfs {\n $val: $val + \" \" + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n }\n @else {\n // Calculate the minimum value\n $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n // Calculate difference between $value and the minimum value\n $value-diff: abs($value) - $value-min;\n\n // Base value formatting\n $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n // Use negative value if needed\n $min-width: if($value < 0, -$min-width, $min-width);\n\n // Use `vmin` if two-dimensional is enabled\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n // Return the calculated value\n $val: $val + \" calc(\" + $min-width + if($value < 0, \" - \", \" + \") + $variable-width + \")\";\n }\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n @if $values != null {\n $val: rfs-value($values);\n $fluid-val: rfs-fluid-value($values);\n\n // Do not print the media query if responsive & non-responsive values are the same\n @if $val == $fluid-val {\n #{$property}: $val;\n }\n @else {\n @include _rfs-rule () {\n #{$property}: if($rfs-mode == max-media-query, $val, $fluid-val);\n\n // Include safari iframe resize fix if needed\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n }\n\n @include _rfs-media-query-rule () {\n #{$property}: if($rfs-mode == max-media-query, $fluid-val, $val);\n }\n }\n }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n @include rfs($value);\n}\n\n@mixin padding($value) {\n @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n @include rfs($value, margin-left);\n}\n","// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n @if $color-mode-type == \"media-query\" {\n @if $root == true {\n @media (prefers-color-scheme: $mode) {\n :root {\n @content;\n }\n }\n } @else {\n @media (prefers-color-scheme: $mode) {\n @content;\n }\n }\n } @else {\n [data-bs-theme=\"#{$mode}\"] {\n @content;\n }\n }\n}\n// scss-docs-end color-mode-mixin\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n @if $font-size-root != null {\n @include font-size(var(--#{$prefix}root-font-size));\n }\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n margin: 0; // 1\n font-family: var(--#{$prefix}body-font-family);\n @include font-size(var(--#{$prefix}body-font-size));\n font-weight: var(--#{$prefix}body-font-weight);\n line-height: var(--#{$prefix}body-line-height);\n color: var(--#{$prefix}body-color);\n text-align: var(--#{$prefix}body-text-align);\n background-color: var(--#{$prefix}body-bg); // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n opacity: $hr-opacity;\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, ``-`` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: var(--#{$prefix}heading-color);\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on ` `s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 2. Add explicit cursor to indicate changed behavior.\n// 3. Prevent the text-decoration to be skipped.\n\nabbr[title] {\n text-decoration: underline dotted; // 1\n cursor: help; // 2\n text-decoration-skip-ink: none; // 3\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n color: var(--#{$prefix}highlight-color);\n background-color: var(--#{$prefix}highlight-bg);\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-opacity, 1));\n text-decoration: $link-decoration;\n\n &:hover {\n --#{$prefix}link-color-rgb: var(--#{$prefix}link-hover-color-rgb);\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: var(--#{$prefix}code-color);\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `
` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-`` buttons\n//\n// Details at https://github.com/twbs/bootstrap/pull/30562\n[role=\"button\"] {\n cursor: pointer;\n}\n\nselect {\n // Remove the inheritance of word-wrap in Safari.\n // See https://github.com/twbs/bootstrap/issues/24990\n word-wrap: normal;\n\n // Undo the opacity change from Chrome\n &:disabled {\n opacity: 1;\n }\n}\n\n// Remove the dropdown arrow only from text type inputs built with datalists in Chrome.\n// See https://stackoverflow.com/a/54997118\n\n[list]:not([type=\"date\"]):not([type=\"datetime-local\"]):not([type=\"month\"]):not([type=\"week\"]):not([type=\"time\"])::-webkit-calendar-picker-indicator {\n display: none !important;\n}\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n// controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\n// 3. Opinionated: add \"hand\" cursor to non-disabled button elements.\n\nbutton,\n[type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button; // 2\n\n @if $enable-button-pointers {\n &:not(:disabled) {\n cursor: pointer; // 3\n }\n }\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\n\n::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\n// 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.\n\ntextarea {\n resize: vertical; // 1\n}\n\n// 1. Browsers set a default `min-width: min-content;` on fieldsets,\n// unlike e.g. `