(function(e, a) { for(var i in a) e[i] = a[i]; }(window, /******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};
/******/
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/
/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId]) {
/******/ 			return installedModules[moduleId].exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			i: moduleId,
/******/ 			l: false,
/******/ 			exports: {}
/******/ 		};
/******/
/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ 		// Flag the module as loaded
/******/ 		module.l = true;
/******/
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/
/******/
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;
/******/
/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;
/******/
/******/ 	// define getter function for harmony exports
/******/ 	__webpack_require__.d = function(exports, name, getter) {
/******/ 		if(!__webpack_require__.o(exports, name)) {
/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ 		}
/******/ 	};
/******/
/******/ 	// define __esModule on exports
/******/ 	__webpack_require__.r = function(exports) {
/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 		}
/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
/******/ 	};
/******/
/******/ 	// create a fake namespace object
/******/ 	// mode & 1: value is a module id, require it
/******/ 	// mode & 2: merge all properties of value into the ns
/******/ 	// mode & 4: return value when already ns object
/******/ 	// mode & 8|1: behave like require
/******/ 	__webpack_require__.t = function(value, mode) {
/******/ 		if(mode & 1) value = __webpack_require__(value);
/******/ 		if(mode & 8) return value;
/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ 		var ns = Object.create(null);
/******/ 		__webpack_require__.r(ns);
/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ 		return ns;
/******/ 	};
/******/
/******/ 	// getDefaultExport function for compatibility with non-harmony modules
/******/ 	__webpack_require__.n = function(module) {
/******/ 		var getter = module && module.__esModule ?
/******/ 			function getDefault() { return module['default']; } :
/******/ 			function getModuleExports() { return module; };
/******/ 		__webpack_require__.d(getter, 'a', getter);
/******/ 		return getter;
/******/ 	};
/******/
/******/ 	// Object.prototype.hasOwnProperty.call
/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "";
/******/
/******/
/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(__webpack_require__.s = "./js/template-customizer.js");
/******/ })
/************************************************************************/
/******/ ({

/***/ "./js/_template-customizer/_template-customizer.html":
/*!***********************************************************!*\
  !*** ./js/_template-customizer/_template-customizer.html ***!
  \***********************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = \"<div id=template-customizer class=invert-bg-white> <a href=javascript:void(0) class=template-customizer-open-btn tabindex=-1></a> <div class=\\\"p-4 m-0 lh-1 border-bottom template-customizer-header\\\"> <h4 class=\\\"template-customizer-t-panel_header mb-2\\\"></h4> <p class=\\\"template-customizer-t-panel_sub_header mb-0\\\"></p> <a href=javascript:void(0) class=\\\"btn-close template-customizer-close-btn fw-light px-4 py-2 text-body\\\" tabindex=-1></a> </div> <div class=\\\"template-customizer-inner pt-4\\\"> <div class=template-customizer-theming> <h5 class=\\\"m-0 px-4 py-4 lh-1 text-light d-block\\\"> <span class=template-customizer-t-theming_header></span> </h5> <div class=\\\"m-0 px-4 pb-3 template-customizer-themes w-100\\\"> <label for=customizerTheme class=\\\"form-label template-customizer-t-theme_label\\\"></label> <div class=\\\"row row-cols-lg-auto g-3 align-items-center template-customizer-themes-options\\\"></div> </div> <div class=\\\"m-0 px-4 pb-3 pt-1 template-customizer-style w-100\\\"> <label for=customizerStyle class=\\\"form-label d-block template-customizer-t-style_label\\\"></label> <label class=\\\"switch switch-sm\\\"> <span class=\\\"switch-label template-customizer-t-style_switch_light\\\"></span> <input type=checkbox class=switch-input /> <span class=switch-toggle-slider> <span class=switch-on></span> <span class=switch-off></span> </span> <span class=\\\"switch-label template-customizer-t-style_switch_dark\\\"></span> </label> </div> </div> <div class=template-customizer-layout> <hr class=\\\"m-0 border-light\\\"> <h5 class=\\\"m-0 px-4 py-4 lh-1 text-light d-block\\\"> <span class=template-customizer-t-layout_header></span> </h5> <div class=\\\"m-0 px-4 pb-3 d-block template-customizer-layoutType\\\"> <label for=customizerStyle class=\\\"form-label d-block template-customizer-t-layout_label\\\"></label> <div class=\\\"row row-cols-lg-auto g-3 align-items-center template-customizer-layouts-options\\\"> <div class=col-12> <div class=form-check> <input class=form-check-input type=radio name=layoutRadios id=layoutRadios-static value=static> <label class=\\\"form-check-label template-customizer-t-layout_static\\\" for=layoutRadios-static></label> </div> </div> <div class=col-12> <div class=form-check> <input class=form-check-input type=radio name=layoutRadios id=layoutRadios-fixed value=fixed> <label class=\\\"form-check-label template-customizer-t-layout_fixed\\\" for=layoutRadios-fixed></label> </div> </div> </div> </div> <label class=\\\"m-0 px-4 pb-3 d-flex media align-items-middle justify-content-between template-customizer-layoutNavbarFixed\\\"> <span class=template-customizer-t-layout_navbar_label></span> <label class=\\\"switch switch-sm pe-4\\\"> <input type=checkbox class=switch-input /> <span class=switch-toggle-slider> <span class=switch-on></span> <span class=switch-off></span> </span> </label> </label> <label class=\\\"m-0 px-4 pb-3 d-flex media align-items-middle justify-content-between template-customizer-layoutFooterFixed\\\"> <span class=template-customizer-t-layout_footer_label></span> <label class=\\\"switch switch-sm pe-4\\\"> <input type=checkbox class=switch-input /> <span class=switch-toggle-slider> <span class=switch-on></span> <span class=switch-off></span> </span> </label> </label> <label class=\\\"m-0 px-4 pb-3 d-flex media align-items-middle justify-content-between template-customizer-showDropdownOnHover\\\"> <span class=template-customizer-t-layout_dd_open_label></span> <label class=\\\"switch switch-sm pe-4\\\"> <input type=checkbox class=switch-input /> <span class=switch-toggle-slider> <span class=switch-on></span> <span class=switch-off></span> </span> </label> </label> </div> <div class=template-customizer-misc> <hr class=\\\"m-0 border-light\\\"> <h5 class=\\\"m-0 px-4 py-4 lh-1 text-light d-block\\\"> <span class=template-customizer-t-misc_header></span> </h5> <label class=\\\"m-0 px-4 pb-3 d-flex media align-items-middle justify-content-between template-customizer-rtl\\\"> <span class=template-customizer-t-rtl_label></span> <label class=\\\"switch switch-sm pe-4\\\"> <input type=checkbox class=switch-input /> <span class=switch-toggle-slider> <span class=switch-on></span> <span class=switch-off></span> </span> </label> </label> </div> </div> </div>\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9qcy9fdGVtcGxhdGUtY3VzdG9taXplci9fdGVtcGxhdGUtY3VzdG9taXplci5odG1sP2NjNmMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEiLCJmaWxlIjoiLi9qcy9fdGVtcGxhdGUtY3VzdG9taXplci9fdGVtcGxhdGUtY3VzdG9taXplci5odG1sLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIjxkaXYgaWQ9dGVtcGxhdGUtY3VzdG9taXplciBjbGFzcz1pbnZlcnQtYmctd2hpdGU+IDxhIGhyZWY9amF2YXNjcmlwdDp2b2lkKDApIGNsYXNzPXRlbXBsYXRlLWN1c3RvbWl6ZXItb3Blbi1idG4gdGFiaW5kZXg9LTE+PC9hPiA8ZGl2IGNsYXNzPVxcXCJwLTQgbS0wIGxoLTEgYm9yZGVyLWJvdHRvbSB0ZW1wbGF0ZS1jdXN0b21pemVyLWhlYWRlclxcXCI+IDxoNCBjbGFzcz1cXFwidGVtcGxhdGUtY3VzdG9taXplci10LXBhbmVsX2hlYWRlciBtYi0yXFxcIj48L2g0PiA8cCBjbGFzcz1cXFwidGVtcGxhdGUtY3VzdG9taXplci10LXBhbmVsX3N1Yl9oZWFkZXIgbWItMFxcXCI+PC9wPiA8YSBocmVmPWphdmFzY3JpcHQ6dm9pZCgwKSBjbGFzcz1cXFwiYnRuLWNsb3NlIHRlbXBsYXRlLWN1c3RvbWl6ZXItY2xvc2UtYnRuIGZ3LWxpZ2h0IHB4LTQgcHktMiB0ZXh0LWJvZHlcXFwiIHRhYmluZGV4PS0xPjwvYT4gPC9kaXY+IDxkaXYgY2xhc3M9XFxcInRlbXBsYXRlLWN1c3RvbWl6ZXItaW5uZXIgcHQtNFxcXCI+IDxkaXYgY2xhc3M9dGVtcGxhdGUtY3VzdG9taXplci10aGVtaW5nPiA8aDUgY2xhc3M9XFxcIm0tMCBweC00IHB5LTQgbGgtMSB0ZXh0LWxpZ2h0IGQtYmxvY2tcXFwiPiA8c3BhbiBjbGFzcz10ZW1wbGF0ZS1jdXN0b21pemVyLXQtdGhlbWluZ19oZWFkZXI+PC9zcGFuPiA8L2g1PiA8ZGl2IGNsYXNzPVxcXCJtLTAgcHgtNCBwYi0zIHRlbXBsYXRlLWN1c3RvbWl6ZXItdGhlbWVzIHctMTAwXFxcIj4gPGxhYmVsIGZvcj1jdXN0b21pemVyVGhlbWUgY2xhc3M9XFxcImZvcm0tbGFiZWwgdGVtcGxhdGUtY3VzdG9taXplci10LXRoZW1lX2xhYmVsXFxcIj48L2xhYmVsPiA8ZGl2IGNsYXNzPVxcXCJyb3cgcm93LWNvbHMtbGctYXV0byBnLTMgYWxpZ24taXRlbXMtY2VudGVyIHRlbXBsYXRlLWN1c3RvbWl6ZXItdGhlbWVzLW9wdGlvbnNcXFwiPjwvZGl2PiA8L2Rpdj4gPGRpdiBjbGFzcz1cXFwibS0wIHB4LTQgcGItMyBwdC0xIHRlbXBsYXRlLWN1c3RvbWl6ZXItc3R5bGUgdy0xMDBcXFwiPiA8bGFiZWwgZm9yPWN1c3RvbWl6ZXJTdHlsZSBjbGFzcz1cXFwiZm9ybS1sYWJlbCBkLWJsb2NrIHRlbXBsYXRlLWN1c3RvbWl6ZXItdC1zdHlsZV9sYWJlbFxcXCI+PC9sYWJlbD4gPGxhYmVsIGNsYXNzPVxcXCJzd2l0Y2ggc3dpdGNoLXNtXFxcIj4gPHNwYW4gY2xhc3M9XFxcInN3aXRjaC1sYWJlbCB0ZW1wbGF0ZS1jdXN0b21pemVyLXQtc3R5bGVfc3dpdGNoX2xpZ2h0XFxcIj48L3NwYW4+IDxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPXN3aXRjaC1pbnB1dCAvPiA8c3BhbiBjbGFzcz1zd2l0Y2gtdG9nZ2xlLXNsaWRlcj4gPHNwYW4gY2xhc3M9c3dpdGNoLW9uPjwvc3Bhbj4gPHNwYW4gY2xhc3M9c3dpdGNoLW9mZj48L3NwYW4+IDwvc3Bhbj4gPHNwYW4gY2xhc3M9XFxcInN3aXRjaC1sYWJlbCB0ZW1wbGF0ZS1jdXN0b21pemVyLXQtc3R5bGVfc3dpdGNoX2RhcmtcXFwiPjwvc3Bhbj4gPC9sYWJlbD4gPC9kaXY+IDwvZGl2PiA8ZGl2IGNsYXNzPXRlbXBsYXRlLWN1c3RvbWl6ZXItbGF5b3V0PiA8aHIgY2xhc3M9XFxcIm0tMCBib3JkZXItbGlnaHRcXFwiPiA8aDUgY2xhc3M9XFxcIm0tMCBweC00IHB5LTQgbGgtMSB0ZXh0LWxpZ2h0IGQtYmxvY2tcXFwiPiA8c3BhbiBjbGFzcz10ZW1wbGF0ZS1jdXN0b21pemVyLXQtbGF5b3V0X2hlYWRlcj48L3NwYW4+IDwvaDU+IDxkaXYgY2xhc3M9XFxcIm0tMCBweC00IHBiLTMgZC1ibG9jayB0ZW1wbGF0ZS1jdXN0b21pemVyLWxheW91dFR5cGVcXFwiPiA8bGFiZWwgZm9yPWN1c3RvbWl6ZXJTdHlsZSBjbGFzcz1cXFwiZm9ybS1sYWJlbCBkLWJsb2NrIHRlbXBsYXRlLWN1c3RvbWl6ZXItdC1sYXlvdXRfbGFiZWxcXFwiPjwvbGFiZWw+IDxkaXYgY2xhc3M9XFxcInJvdyByb3ctY29scy1sZy1hdXRvIGctMyBhbGlnbi1pdGVtcy1jZW50ZXIgdGVtcGxhdGUtY3VzdG9taXplci1sYXlvdXRzLW9wdGlvbnNcXFwiPiA8ZGl2IGNsYXNzPWNvbC0xMj4gPGRpdiBjbGFzcz1mb3JtLWNoZWNrPiA8aW5wdXQgY2xhc3M9Zm9ybS1jaGVjay1pbnB1dCB0eXBlPXJhZGlvIG5hbWU9bGF5b3V0UmFkaW9zIGlkPWxheW91dFJhZGlvcy1zdGF0aWMgdmFsdWU9c3RhdGljPiA8bGFiZWwgY2xhc3M9XFxcImZvcm0tY2hlY2stbGFiZWwgdGVtcGxhdGUtY3VzdG9taXplci10LWxheW91dF9zdGF0aWNcXFwiIGZvcj1sYXlvdXRSYWRpb3Mtc3RhdGljPjwvbGFiZWw+IDwvZGl2PiA8L2Rpdj4gPGRpdiBjbGFzcz1jb2wtMTI+IDxkaXYgY2xhc3M9Zm9ybS1jaGVjaz4gPGlucHV0IGNsYXNzPWZvcm0tY2hlY2staW5wdXQgdHlwZT1yYWRpbyBuYW1lPWxheW91dFJhZGlvcyBpZD1sYXlvdXRSYWRpb3MtZml4ZWQgdmFsdWU9Zml4ZWQ+IDxsYWJlbCBjbGFzcz1cXFwiZm9ybS1jaGVjay1sYWJlbCB0ZW1wbGF0ZS1jdXN0b21pemVyLXQtbGF5b3V0X2ZpeGVkXFxcIiBmb3I9bGF5b3V0UmFkaW9zLWZpeGVkPjwvbGFiZWw+IDwvZGl2PiA8L2Rpdj4gPC9kaXY+IDwvZGl2PiA8bGFiZWwgY2xhc3M9XFxcIm0tMCBweC00IHBiLTMgZC1mbGV4IG1lZGlhIGFsaWduLWl0ZW1zLW1pZGRsZSBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB0ZW1wbGF0ZS1jdXN0b21pemVyLWxheW91dE5hdmJhckZpeGVkXFxcIj4gPHNwYW4gY2xhc3M9dGVtcGxhdGUtY3VzdG9taXplci10LWxheW91dF9uYXZiYXJfbGFiZWw+PC9zcGFuPiA8bGFiZWwgY2xhc3M9XFxcInN3aXRjaCBzd2l0Y2gtc20gcGUtNFxcXCI+IDxpbnB1dCB0eXBlPWNoZWNrYm94IGNsYXNzPXN3aXRjaC1pbnB1dCAvPiA8c3BhbiBjbGFzcz1zd2l0Y2gtdG9nZ2xlLXNsaWRlcj4gPHNwYW4gY2xhc3M9c3dpdGNoLW9uPjwvc3Bhbj4gPHNwYW4gY2xhc3M9c3dpdGNoLW9mZj48L3NwYW4+IDwvc3Bhbj4gPC9sYWJlbD4gPC9sYWJlbD4gPGxhYmVsIGNsYXNzPVxcXCJtLTAgcHgtNCBwYi0zIGQtZmxleCBtZWRpYSBhbGlnbi1pdGVtcy1taWRkbGUganVzdGlmeS1jb250ZW50LWJldHdlZW4gdGVtcGxhdGUtY3VzdG9taXplci1sYXlvdXRGb290ZXJGaXhlZFxcXCI+IDxzcGFuIGNsYXNzPXRlbXBsYXRlLWN1c3RvbWl6ZXItdC1sYXlvdXRfZm9vdGVyX2xhYmVsPjwvc3Bhbj4gPGxhYmVsIGNsYXNzPVxcXCJzd2l0Y2ggc3dpdGNoLXNtIHBlLTRcXFwiPiA8aW5wdXQgdHlwZT1jaGVja2JveCBjbGFzcz1zd2l0Y2gtaW5wdXQgLz4gPHNwYW4gY2xhc3M9c3dpdGNoLXRvZ2dsZS1zbGlkZXI+IDxzcGFuIGNsYXNzPXN3aXRjaC1vbj48L3NwYW4+IDxzcGFuIGNsYXNzPXN3aXRjaC1vZmY+PC9zcGFuPiA8L3NwYW4+IDwvbGFiZWw+IDwvbGFiZWw+IDxsYWJlbCBjbGFzcz1cXFwibS0wIHB4LTQgcGItMyBkLWZsZXggbWVkaWEgYWxpZ24taXRlbXMtbWlkZGxlIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHRlbXBsYXRlLWN1c3RvbWl6ZXItc2hvd0Ryb3Bkb3duT25Ib3ZlclxcXCI+IDxzcGFuIGNsYXNzPXRlbXBsYXRlLWN1c3RvbWl6ZXItdC1sYXlvdXRfZGRfb3Blbl9sYWJlbD48L3NwYW4+IDxsYWJlbCBjbGFzcz1cXFwic3dpdGNoIHN3aXRjaC1zbSBwZS00XFxcIj4gPGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9c3dpdGNoLWlucHV0IC8+IDxzcGFuIGNsYXNzPXN3aXRjaC10b2dnbGUtc2xpZGVyPiA8c3BhbiBjbGFzcz1zd2l0Y2gtb24+PC9zcGFuPiA8c3BhbiBjbGFzcz1zd2l0Y2gtb2ZmPjwvc3Bhbj4gPC9zcGFuPiA8L2xhYmVsPiA8L2xhYmVsPiA8L2Rpdj4gPGRpdiBjbGFzcz10ZW1wbGF0ZS1jdXN0b21pemVyLW1pc2M+IDxociBjbGFzcz1cXFwibS0wIGJvcmRlci1saWdodFxcXCI+IDxoNSBjbGFzcz1cXFwibS0wIHB4LTQgcHktNCBsaC0xIHRleHQtbGlnaHQgZC1ibG9ja1xcXCI+IDxzcGFuIGNsYXNzPXRlbXBsYXRlLWN1c3RvbWl6ZXItdC1taXNjX2hlYWRlcj48L3NwYW4+IDwvaDU+IDxsYWJlbCBjbGFzcz1cXFwibS0wIHB4LTQgcGItMyBkLWZsZXggbWVkaWEgYWxpZ24taXRlbXMtbWlkZGxlIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHRlbXBsYXRlLWN1c3RvbWl6ZXItcnRsXFxcIj4gPHNwYW4gY2xhc3M9dGVtcGxhdGUtY3VzdG9taXplci10LXJ0bF9sYWJlbD48L3NwYW4+IDxsYWJlbCBjbGFzcz1cXFwic3dpdGNoIHN3aXRjaC1zbSBwZS00XFxcIj4gPGlucHV0IHR5cGU9Y2hlY2tib3ggY2xhc3M9c3dpdGNoLWlucHV0IC8+IDxzcGFuIGNsYXNzPXN3aXRjaC10b2dnbGUtc2xpZGVyPiA8c3BhbiBjbGFzcz1zd2l0Y2gtb24+PC9zcGFuPiA8c3BhbiBjbGFzcz1zd2l0Y2gtb2ZmPjwvc3Bhbj4gPC9zcGFuPiA8L2xhYmVsPiA8L2xhYmVsPiA8L2Rpdj4gPC9kaXY+IDwvZGl2PlwiOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./js/_template-customizer/_template-customizer.html\n");

/***/ }),

/***/ "./js/_template-customizer/_template-customizer.scss":
/*!***********************************************************!*\
  !*** ./js/_template-customizer/_template-customizer.scss ***!
  \***********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("var api = __webpack_require__(/*! ../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n            var content = __webpack_require__(/*! !../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./_template-customizer.scss */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./js/_template-customizer/_template-customizer.scss\");\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.i, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\nvar exported = content.locals ? content.locals : {};\n\n\n\nmodule.exports = exported;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9qcy9fdGVtcGxhdGUtY3VzdG9taXplci9fdGVtcGxhdGUtY3VzdG9taXplci5zY3NzPzNmYzkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVSxtQkFBTyxDQUFDLHNKQUEyRTtBQUM3RiwwQkFBMEIsbUJBQU8sQ0FBQywyUEFBb0g7O0FBRXRKOztBQUVBO0FBQ0EsMEJBQTBCLFFBQVM7QUFDbkM7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7OztBQUlBIiwiZmlsZSI6Ii4vanMvX3RlbXBsYXRlLWN1c3RvbWl6ZXIvX3RlbXBsYXRlLWN1c3RvbWl6ZXIuc2Nzcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhcGkgPSByZXF1aXJlKFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiKTtcbiAgICAgICAgICAgIHZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vX3RlbXBsYXRlLWN1c3RvbWl6ZXIuc2Nzc1wiKTtcblxuICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuX19lc01vZHVsZSA/IGNvbnRlbnQuZGVmYXVsdCA6IGNvbnRlbnQ7XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuICAgICAgICAgICAgfVxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxudmFyIGV4cG9ydGVkID0gY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHt9O1xuXG5cblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRlZDsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./js/_template-customizer/_template-customizer.scss\n");

/***/ }),

/***/ "./js/template-customizer.js":
/*!***********************************!*\
  !*** ./js/template-customizer.js ***!
  \***********************************/
/*! exports provided: TemplateCustomizer */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TemplateCustomizer\", function() { return TemplateCustomizer; });\n/* harmony import */ var _template_customizer_template_customizer_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_template-customizer/_template-customizer.scss */ \"./js/_template-customizer/_template-customizer.scss\");\n/* harmony import */ var _template_customizer_template_customizer_scss__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_template_customizer_template_customizer_scss__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _template_customizer_template_customizer_html__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_template-customizer/_template-customizer.html */ \"./js/_template-customizer/_template-customizer.html\");\n/* harmony import */ var _template_customizer_template_customizer_html__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_template_customizer_template_customizer_html__WEBPACK_IMPORTED_MODULE_1__);\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\nvar CSS_FILENAME_PATTERN = '%name%.css';\nvar CONTROLS = ['rtl', 'style', 'layoutType', 'layoutMenuFlipped', 'showDropdownOnHover', 'layoutNavbarFixed', 'layoutFooterFixed', 'themes'];\nvar STYLES = ['light', 'dark'];\nvar cl = document.documentElement.classList;\nvar DISPLAY_CUSTOMIZER = true;\nvar DEFAULT_THEME = document.getElementsByTagName('HTML')[0].getAttribute('data-theme') || 0;\nvar DEFAULT_STYLE = cl.contains('dark-style') ? 'dark' : 'light';\nvar DEFAULT_TEXT_DIR = document.documentElement.getAttribute('dir') === 'rtl';\nvar DEFAULT_MENU_COLLAPSED = !!cl.contains('layout-menu-collapsed');\nvar DEFAULT_MENU_FLIPPED = !!cl.contains('layout-menu-flipped');\nvar DEFAULT_SHOW_DROPDOWN_ON_HOVER = undefined;\nvar DEFAULT_NAVBAR_FIXED = !!cl.contains('layout-navbar-fixed');\nvar DEFAULT_FOOTER_FIXED = !!cl.contains('layout-footer-fixed');\nvar layoutType;\n\nif (cl.contains('layout-menu-offcanvas')) {\n  layoutType = 'static-offcanvas';\n} else if (cl.contains('layout-menu-fixed')) {\n  layoutType = 'fixed';\n} else if (cl.contains('layout-menu-fixed-offcanvas')) {\n  layoutType = 'fixed-offcanvas';\n} else {\n  layoutType = 'static';\n}\n\nvar DEFAULT_LAYOUT_TYPE = layoutType;\n\nvar TemplateCustomizer = /*#__PURE__*/function () {\n  function TemplateCustomizer(_ref) {\n    var cssPath = _ref.cssPath,\n        themesPath = _ref.themesPath,\n        cssFilenamePattern = _ref.cssFilenamePattern,\n        displayCustomizer = _ref.displayCustomizer,\n        controls = _ref.controls,\n        defaultTextDir = _ref.defaultTextDir,\n        defaultLayoutType = _ref.defaultLayoutType,\n        defaultMenuCollapsed = _ref.defaultMenuCollapsed,\n        defaultMenuFlipped = _ref.defaultMenuFlipped,\n        defaultShowDropdownOnHover = _ref.defaultShowDropdownOnHover,\n        defaultNavbarFixed = _ref.defaultNavbarFixed,\n        defaultFooterFixed = _ref.defaultFooterFixed,\n        styles = _ref.styles,\n        defaultStyle = _ref.defaultStyle,\n        availableThemes = _ref.availableThemes,\n        defaultTheme = _ref.defaultTheme,\n        pathResolver = _ref.pathResolver,\n        onSettingsChange = _ref.onSettingsChange,\n        lang = _ref.lang;\n\n    _classCallCheck(this, TemplateCustomizer);\n\n    if (this._ssr) return;\n    if (!window.Helpers) throw new Error('window.Helpers required.');\n    this.settings = {};\n    this.settings.cssPath = cssPath;\n    this.settings.themesPath = themesPath;\n    this.settings.cssFilenamePattern = cssFilenamePattern || CSS_FILENAME_PATTERN;\n    this.settings.displayCustomizer = typeof displayCustomizer !== 'undefined' ? displayCustomizer : DISPLAY_CUSTOMIZER;\n    this.settings.controls = controls || CONTROLS;\n    this.settings.defaultTextDir = defaultTextDir === 'rtl' ? true :  false || DEFAULT_TEXT_DIR;\n    this.settings.defaultLayoutType = defaultLayoutType || DEFAULT_LAYOUT_TYPE;\n    this.settings.defaultMenuCollapsed = typeof defaultMenuCollapsed !== 'undefined' ? defaultMenuCollapsed : DEFAULT_MENU_COLLAPSED;\n    this.settings.defaultMenuFlipped = typeof defaultMenuFlipped !== 'undefined' ? defaultMenuFlipped : DEFAULT_MENU_FLIPPED;\n    this.settings.defaultShowDropdownOnHover = typeof defaultShowDropdownOnHover !== 'undefined' ? defaultShowDropdownOnHover : DEFAULT_SHOW_DROPDOWN_ON_HOVER;\n    this.settings.defaultNavbarFixed = typeof defaultNavbarFixed !== 'undefined' ? defaultNavbarFixed : DEFAULT_NAVBAR_FIXED;\n    this.settings.defaultFooterFixed = typeof defaultFooterFixed !== 'undefined' ? defaultFooterFixed : DEFAULT_FOOTER_FIXED;\n    this.settings.availableThemes = availableThemes || TemplateCustomizer.THEMES;\n    this.settings.defaultTheme = this._getDefaultTheme(typeof defaultTheme !== 'undefined' ? defaultTheme : DEFAULT_THEME);\n    this.settings.styles = styles || STYLES;\n    this.settings.defaultStyle = defaultStyle || DEFAULT_STYLE;\n    this.settings.lang = lang || 'en';\n\n    this.pathResolver = pathResolver || function (p) {\n      return p;\n    };\n\n    if (this.settings.styles.length < 2) {\n      var i = this.settings.controls.indexOf('style');\n\n      if (i !== -1) {\n        this.settings.controls = this.settings.controls.slice(0, i).concat(this.settings.controls.slice(i + 1));\n      }\n    }\n\n    this.settings.onSettingsChange = typeof onSettingsChange === 'function' ? onSettingsChange : function () {};\n\n    this._loadSettings();\n\n    this._listeners = [];\n    this._controls = {};\n\n    this._initDirection();\n\n    this._initStyle();\n\n    this._initTheme();\n\n    this.setLayoutType(this.settings.layoutType, false);\n    this.setLayoutMenuFlipped(this.settings.layoutMenuFlipped, false);\n    this.setDropdownOnHover(this.settings.showDropdownOnHover, false);\n    this.setLayoutNavbarFixed(this.settings.layoutNavbarFixed, false);\n    this.setLayoutFooterFixed(this.settings.layoutFooterFixed, false);\n\n    this._setup();\n  }\n\n  _createClass(TemplateCustomizer, [{\n    key: \"setRtl\",\n    value: function setRtl(rtl) {\n      if (!this._hasControls('rtl')) return;\n\n      this._setSetting('Rtl', String(rtl));\n\n      window.location.reload();\n    }\n  }, {\n    key: \"setStyle\",\n    value: function setStyle(style) {\n      if (!this._hasControls('style')) return;\n\n      this._setSetting('Style', ['dark'].indexOf(style) === -1 ? 'light' : style);\n\n      window.location.reload();\n    }\n  }, {\n    key: \"setTheme\",\n    value: function setTheme(themeName) {\n      var updateStorage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n      var cb = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n      if (!this._hasControls('themes')) return;\n\n      var theme = this._getThemeByName(themeName);\n\n      if (!theme) return;\n      this.settings.theme = theme;\n      if (updateStorage) this._setSetting('Theme', themeName);\n      var themeUrl = this.pathResolver(this.settings.themesPath + this.settings.cssFilenamePattern.replace('%name%', themeName + (this.settings.style !== 'light' ? \"-\".concat(this.settings.style) : '')));\n\n      this._loadStylesheets(_defineProperty({}, themeUrl, document.querySelector('.template-customizer-theme-css')), cb || function () {});\n\n      if (updateStorage) this.settings.onSettingsChange.call(this, this.settings);\n    }\n  }, {\n    key: \"setLayoutType\",\n    value: function setLayoutType(pos) {\n      var updateStorage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n      if (!this._hasControls('layoutType')) return;\n      if (pos !== 'static' && pos !== 'static-offcanvas' && pos !== 'fixed' && pos !== 'fixed-offcanvas') return;\n      this.settings.layoutType = pos;\n      if (updateStorage) this._setSetting('LayoutType', pos);\n      window.Helpers.setPosition(pos === 'fixed' || pos === 'fixed-offcanvas', pos === 'static-offcanvas' || pos === 'fixed-offcanvas');\n      if (updateStorage) this.settings.onSettingsChange.call(this, this.settings); // Perfectscrollbar change on Layout change\n\n      var menuScroll = window.Helpers.menuPsScroll;\n      var PerfectScrollbarLib = window.PerfectScrollbar;\n\n      if (this.settings.layoutType === 'fixed' || this.settings.layoutType === 'fixed-offcanvas') {\n        // Set perfectscrollbar wheelPropagation false for fixed layout\n        if (PerfectScrollbarLib && menuScroll) {\n          window.Helpers.menuPsScroll.destroy();\n          menuScroll = new PerfectScrollbarLib(document.querySelector('.menu-inner'), {\n            suppressScrollX: true,\n            wheelPropagation: false\n          });\n          window.Helpers.menuPsScroll = menuScroll;\n        }\n      } else if (menuScroll) {\n        // Destroy perfectscrollbar for static layout\n        window.Helpers.menuPsScroll.destroy();\n      }\n    }\n  }, {\n    key: \"setLayoutMenuFlipped\",\n    value: function setLayoutMenuFlipped(flipped) {\n      var updateStorage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n      if (!this._hasControls('layoutMenuFlipped')) return;\n      this.settings.layoutMenuFlipped = flipped;\n      if (updateStorage) this._setSetting('MenuFlipped', flipped);\n      window.Helpers.setFlipped(flipped);\n      if (updateStorage) this.settings.onSettingsChange.call(this, this.settings);\n    }\n  }, {\n    key: \"setDropdownOnHover\",\n    value: function setDropdownOnHover(open) {\n      var updateStorage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n      if (!this._hasControls('showDropdownOnHover')) return;\n      this.settings.showDropdownOnHover = open;\n      if (updateStorage) this._setSetting('ShowDropdownOnHover', open);\n\n      if (window.Helpers.mainMenu) {\n        window.Helpers.mainMenu.destroy();\n        config.showDropdownOnHover = open;\n        var _window = window,\n            Menu = _window.Menu;\n        window.Helpers.mainMenu = new Menu(document.getElementById('layout-menu'), {\n          orientation: 'horizontal',\n          closeChildren: true,\n          showDropdownOnHover: config.showDropdownOnHover\n        });\n      }\n\n      if (updateStorage) this.settings.onSettingsChange.call(this, this.settings);\n    }\n  }, {\n    key: \"setLayoutNavbarFixed\",\n    value: function setLayoutNavbarFixed(fixed) {\n      var updateStorage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n      if (!this._hasControls('layoutNavbarFixed')) return;\n      this.settings.layoutNavbarFixed = fixed;\n      if (updateStorage) this._setSetting('FixedNavbar', fixed);\n      window.Helpers.setNavbarFixed(fixed);\n      if (updateStorage) this.settings.onSettingsChange.call(this, this.settings);\n    }\n  }, {\n    key: \"setLayoutFooterFixed\",\n    value: function setLayoutFooterFixed(fixed) {\n      var updateStorage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n      if (!this._hasControls('layoutFooterFixed')) return;\n      this.settings.layoutFooterFixed = fixed;\n      if (updateStorage) this._setSetting('FixedFooter', fixed);\n      window.Helpers.setFooterFixed(fixed);\n      if (updateStorage) this.settings.onSettingsChange.call(this, this.settings);\n    }\n  }, {\n    key: \"setLang\",\n    value: function setLang(lang) {\n      var _this = this;\n\n      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      if (lang === this.settings.lang && !force) return;\n      if (!TemplateCustomizer.LANGUAGES[lang]) throw new Error(\"Language \\\"\".concat(lang, \"\\\" not found!\"));\n      var t = TemplateCustomizer.LANGUAGES[lang];\n      ['panel_header', 'panel_sub_header', 'theming_header', 'theme_header', 'style_label', 'style_switch_light', 'style_switch_dark', 'layout_header', 'layout_label', 'layout_static', 'layout_offcanvas', 'layout_fixed', 'layout_fixed_offcanvas', 'layout_flipped_label', 'layout_dd_open_label', 'layout_navbar_label', 'layout_footer_label', 'misc_header', 'theme_label', 'rtl_label'].forEach(function (key) {\n        var el = _this.container.querySelector(\".template-customizer-t-\".concat(key)); // eslint-disable-next-line no-unused-expressions\n\n\n        el && (el.textContent = t[key]);\n      });\n      var tt = t.themes || {};\n      var themes = this.container.querySelectorAll('.template-customizer-theme-item') || [];\n\n      for (var i = 0, l = themes.length; i < l; i++) {\n        var themeName = themes[i].querySelector('input[type=\"radio\"]').value;\n        themes[i].querySelector('.template-customizer-theme-name').textContent = tt[themeName] || this._getThemeByName(themeName).title;\n      }\n\n      this.settings.lang = lang;\n    } // Update theme settings control\n\n  }, {\n    key: \"update\",\n    value: function update() {\n      if (this._ssr) return;\n      var hasNavbar = !!document.querySelector('.layout-navbar');\n      var hasMenu = !!document.querySelector('.layout-menu');\n      var hasHorizontalMenu = !!document.querySelector('.layout-menu-horizontal.menu, .layout-menu-horizontal .menu');\n      var isLayout1 = !!document.querySelector('.layout-wrapper.layout-navbar-full');\n      var hasFooter = !!document.querySelector('.content-footer');\n\n      if (this._controls.layoutMenuFlipped) {\n        if (!hasMenu) {\n          this._controls.layoutMenuFlipped.setAttribute('disabled', 'disabled');\n\n          this._controls.layoutMenuFlipped.classList.add('disabled');\n        } else {\n          this._controls.layoutMenuFlipped.removeAttribute('disabled');\n\n          this._controls.layoutMenuFlipped.classList.remove('disabled');\n        }\n      }\n\n      if (this._controls.showDropdownOnHover) {\n        if (hasMenu) {\n          this._controls.showDropdownOnHover.setAttribute('disabled', 'disabled');\n\n          this._controls.showDropdownOnHover.classList.add('disabled');\n        } else {\n          this._controls.showDropdownOnHover.removeAttribute('disabled');\n\n          this._controls.showDropdownOnHover.classList.remove('disabled');\n        }\n      }\n\n      if (this._controls.layoutNavbarFixed) {\n        if (!hasNavbar) {\n          this._controls.layoutNavbarFixed.setAttribute('disabled', 'disabled');\n\n          this._controls.layoutNavbarFixedW.classList.add('disabled');\n        } else {\n          this._controls.layoutNavbarFixed.removeAttribute('disabled');\n\n          this._controls.layoutNavbarFixedW.classList.remove('disabled');\n        }\n      }\n\n      if (this._controls.layoutFooterFixed) {\n        if (!hasFooter) {\n          this._controls.layoutFooterFixed.setAttribute('disabled', 'disabled');\n\n          this._controls.layoutFooterFixedW.classList.add('disabled');\n        } else {\n          this._controls.layoutFooterFixed.removeAttribute('disabled');\n\n          this._controls.layoutFooterFixedW.classList.remove('disabled');\n        }\n      }\n\n      if (this._controls.layoutType) {\n        // ? Uncomment If using offcanvas layout\n\n        /*\n        if (!hasMenu) {\n          this._controls.layoutType.querySelector('[value=\"static-offcanvas\"]').setAttribute('disabled', 'disabled')\n          this._controls.layoutType.querySelector('[value=\"fixed-offcanvas\"]').setAttribute('disabled', 'disabled')\n        } else {\n          this._controls.layoutType.querySelector('[value=\"static-offcanvas\"]').removeAttribute('disabled')\n          this._controls.layoutType.querySelector('[value=\"fixed-offcanvas\"]').removeAttribute('disabled')\n        }\n        */\n        // Disable menu layouts options if menu is not there\n        if (!hasNavbar && !hasMenu || !hasMenu && !isLayout1) {\n          this._controls.layoutType.setAttribute('disabled', 'disabled');\n        } else {\n          this._controls.layoutType.removeAttribute('disabled');\n        } // Todo: horizontal menu does not support static and fixed options for now\n\n\n        if (hasHorizontalMenu) {\n          this._controls.layoutType.setAttribute('disabled', 'disabled');\n        } else {\n          this._controls.layoutType.removeAttribute('disabled');\n        }\n      }\n    } // Clear local storage\n\n  }, {\n    key: \"clearLocalStorage\",\n    value: function clearLocalStorage() {\n      if (this._ssr) return;\n\n      this._setSetting('Theme', '');\n\n      this._setSetting('Rtl', '');\n\n      this._setSetting('Style', '');\n\n      this._setSetting('MenuFlipped', '');\n\n      this._setSetting('FixedNavbar', '');\n\n      this._setSetting('FixedFooter', '');\n\n      this._setSetting('LayoutType', '');\n    } // Clear local storage\n\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      if (this._ssr) return;\n\n      this._cleanup();\n\n      this.settings = null;\n      this.container.parentNode.removeChild(this.container);\n      this.container = null;\n    }\n  }, {\n    key: \"_loadSettings\",\n    value: function _loadSettings() {\n      // Get settings\n      // const cl = document.documentElement.classList;\n      var rtl = this._getSetting('Rtl');\n\n      var style = this._getSetting('Style');\n\n      var collapsedMenu = this._getSetting('LayoutCollapsed'); // Value will be set from main.js\n\n\n      var flippedMenu = this._getSetting('LayoutMenuFlipped');\n\n      var dropdownOnHover = this._getSetting('ShowDropdownOnHover'); // Value will be set from main.js\n\n\n      var fixedNavbar = this._getSetting('FixedNavbar');\n\n      var fixedFooter = this._getSetting('FixedFooter');\n\n      var lType = this._getSetting('LayoutType');\n\n      var type;\n\n      if (lType !== '' && ['static', 'static-offcanvas', 'fixed', 'fixed-offcanvas'].indexOf(lType) !== -1) {\n        type = lType;\n      } else {\n        type = this.settings.defaultLayoutType;\n      }\n\n      this.settings.layoutType = type; // ! Set settings by following priority: Local Storage, Theme Config, HTML Classes\n\n      this.settings.rtl = rtl !== '' ? rtl === 'true' : this.settings.defaultTextDir;\n      this.settings.style = this.settings.styles.indexOf(style) !== -1 ? style : this.settings.defaultStyle;\n\n      if (this.settings.styles.indexOf(this.settings.style) === -1) {\n        // eslint-disable-next-line prefer-destructuring\n        this.settings.style = this.settings.styles[0];\n      }\n\n      this.settings.layoutMenu = collapsedMenu !== '' ? collapsedMenu === 'true' : this.settings.defaultMenuCollapsed;\n      this.settings.layoutMenuFlipped = flippedMenu !== '' ? flippedMenu === 'true' : this.settings.defaultMenuFlipped;\n      this.settings.showDropdownOnHover = dropdownOnHover !== '' ? dropdownOnHover === 'true' : this.settings.defaultShowDropdownOnHover;\n      this.settings.layoutNavbarFixed = fixedNavbar !== '' ? fixedNavbar === 'true' : this.settings.defaultNavbarFixed;\n      this.settings.layoutFooterFixed = fixedFooter !== '' ? fixedFooter === 'true' : this.settings.defaultFooterFixed;\n      this.settings.theme = this._getThemeByName(this._getSetting('Theme'), true); // Filter options depending on available controls\n\n      if (!this._hasControls('rtl')) this.settings.rtl = document.documentElement.getAttribute('dir') === 'rtl';\n      if (!this._hasControls('style')) this.settings.style = cl.contains('dark-style') ? 'dark' : 'light';\n      if (!this._hasControls('layoutType')) this.settings.layoutType = null;\n      if (!this._hasControls('layoutMenuFlipped')) this.settings.layoutMenuFlipped = null;\n      if (!this._hasControls('showDropdownOnHover')) this.settings.showDropdownOnHover = null;\n      if (!this._hasControls('layoutNavbarFixed')) this.settings.layoutNavbarFixed = null;\n      if (!this._hasControls('layoutFooterFixed')) this.settings.layoutFooterFixed = null;\n      if (!this._hasControls('themes')) this.settings.theme = null;\n    } // Setup theme settings controls and events\n\n  }, {\n    key: \"_setup\",\n    value: function _setup() {\n      var _this2 = this;\n\n      var _container = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n\n      this._cleanup();\n\n      this.container = this._getElementFromString(_template_customizer_template_customizer_html__WEBPACK_IMPORTED_MODULE_1___default.a); // Customizer visibility condition\n      //\n\n      var customizerW = this.container;\n      if (this.settings.displayCustomizer) customizerW.setAttribute('style', 'visibility: visible');else customizerW.setAttribute('style', 'visibility: hidden'); // Open btn\n      //\n\n      var openBtn = this.container.querySelector('.template-customizer-open-btn');\n\n      var openBtnCb = function openBtnCb() {\n        _this2.container.classList.add('template-customizer-open');\n\n        _this2.update();\n\n        if (_this2._updateInterval) clearInterval(_this2._updateInterval);\n        _this2._updateInterval = setInterval(function () {\n          _this2.update();\n        }, 1000);\n      };\n\n      openBtn.addEventListener('click', openBtnCb);\n\n      this._listeners.push([openBtn, 'click', openBtnCb]); // Close btn\n      //\n\n\n      var closeBtn = this.container.querySelector('.template-customizer-close-btn');\n\n      var closeBtnCb = function closeBtnCb() {\n        _this2.container.classList.remove('template-customizer-open');\n\n        if (_this2._updateInterval) {\n          clearInterval(_this2._updateInterval);\n          _this2._updateInterval = null;\n        }\n      };\n\n      closeBtn.addEventListener('click', closeBtnCb);\n\n      this._listeners.push([closeBtn, 'click', closeBtnCb]); // RTL\n      //\n\n\n      var rtlW = this.container.querySelector('.template-customizer-rtl'); // ? Hide RTL control in following 2 case\n\n      if (!this._hasControls('rtl') || !rtlSupport) {\n        rtlW.parentNode.removeChild(rtlW);\n      } else {\n        var rtl = rtlW.querySelector('input');\n        if (this.settings.rtl) rtl.setAttribute('checked', 'checked');\n\n        var rtlCb = function rtlCb(e) {\n          _this2._loadingState(true);\n\n          _this2.setRtl(e.target.checked);\n        };\n\n        rtl.addEventListener('change', rtlCb);\n\n        this._listeners.push([rtl, 'change', rtlCb]);\n      } // Style\n      //\n\n\n      var styleW = this.container.querySelector('.template-customizer-style');\n\n      if (!this._hasControls('style')) {\n        styleW.parentNode.removeChild(styleW);\n      } else {\n        var style = styleW.querySelector('input');\n        if (this.settings.style === 'dark') style.setAttribute('checked', 'checked');\n\n        var styleCb = function styleCb(e) {\n          _this2._loadingState(true);\n\n          if (e.target.checked) {\n            _this2.setStyle('dark');\n          } else {\n            _this2.setStyle('light');\n          }\n        };\n\n        style.addEventListener('change', styleCb);\n\n        this._listeners.push([style, 'change', styleCb]);\n      } // Theme\n\n\n      var themesW = this.container.querySelector('.template-customizer-themes');\n\n      if (!this._hasControls('themes')) {\n        themesW.parentNode.removeChild(themesW);\n      } else {\n        var themesWInner = themesW.querySelector('.template-customizer-themes-options');\n        this.settings.availableThemes.forEach(function (theme) {\n          var themeEl = _this2._getElementFromString(\"<div class=\\\"col-12\\\"><div class=\\\"form-check\\\"><input class=\\\"form-check-input\\\" type=\\\"radio\\\" name=\\\"themeRadios\\\" id=\\\"themeRadios\".concat(theme.name, \"\\\" value=\\\"\").concat(theme.name, \"\\\"><label class=\\\"form-check-label\\\" for=\\\"themeRadios\").concat(theme.name, \"\\\">\").concat(theme.title, \"</label></div></div>\"));\n\n          themesWInner.appendChild(themeEl);\n        });\n        themesWInner.querySelector(\"input[value=\\\"\".concat(this.settings.theme.name, \"\\\"]\")).setAttribute('checked', 'checked');\n\n        var themeCb = function themeCb(e) {\n          if (_this2._loading) return;\n          _this2._loading = true;\n\n          _this2._loadingState(true, true);\n\n          _this2.setTheme(e.target.value, true, function () {\n            _this2._loading = false;\n\n            _this2._loadingState(false, true);\n          });\n        };\n\n        themesWInner.addEventListener('change', themeCb);\n\n        this._listeners.push([themesWInner, 'change', themeCb]);\n      } // Layout wrapper\n      //\n\n\n      var layoutW = this.container.querySelector('.template-customizer-layout');\n\n      if (!this._hasControls('layoutType layoutNavbarFixed layoutFooterFixed layoutMenuFlipped showDropdownOnHover', true)) {\n        layoutW.parentNode.removeChild(layoutW);\n      } else {\n        // Position\n        //\n        var layoutTypeW = this.container.querySelector('.template-customizer-layoutType');\n\n        if (!this._hasControls('layoutType')) {\n          layoutTypeW.parentNode.removeChild(layoutTypeW);\n        } else {\n          this._controls.layoutType = layoutTypeW.querySelector('.template-customizer-layouts-options'); // this._controls.layoutType.value = this.settings.layoutType\n\n          this._controls.layoutType.querySelector(\"input[value=\\\"\".concat(this.settings.layoutType, \"\\\"]\")).setAttribute('checked', 'checked');\n\n          var layoutTypeCb = function layoutTypeCb(e) {\n            return _this2.setLayoutType(e.target.value);\n          };\n\n          this._controls.layoutType.addEventListener('change', layoutTypeCb);\n\n          this._listeners.push([this._controls.layoutType, 'change', layoutTypeCb]);\n        } // Menu flipped\n        // ? Uncomment If needed\n\n        /* this._controls.layoutMenuFlipped = this.container.querySelector('.template-customizer-layoutMenuFlipped')\n         if (!this._hasControls('layoutMenuFlipped')) {\n          this._controls.layoutMenuFlipped.parentNode.removeChild(this._controls.layoutMenuFlipped)\n        } else {\n          this._controls.layoutMenuFlipped = this._controls.layoutMenuFlipped.querySelector('input')\n           if (this.settings.layoutMenuFlipped) this._controls.layoutMenuFlipped.setAttribute('checked', 'checked')\n           const layoutMenuFlipped = e => this.setLayoutMenuFlipped(e.target.checked)\n          this._controls.layoutMenuFlipped.addEventListener('change', layoutMenuFlipped)\n          this._listeners.push([this._controls.layoutMenuFlipped, 'change', layoutMenuFlipped])\n        } */\n        // Menu open\n        //\n\n\n        this._controls.showDropdownOnHover = this.container.querySelector('.template-customizer-showDropdownOnHover');\n\n        if (!this._hasControls('showDropdownOnHover')) {\n          this._controls.showDropdownOnHover.parentNode.removeChild(this._controls.showDropdownOnHover);\n        } else {\n          this._controls.showDropdownOnHover = this._controls.showDropdownOnHover.querySelector('input');\n          if (this.settings.showDropdownOnHover) this._controls.showDropdownOnHover.setAttribute('checked', 'checked');\n\n          var showDropdownOnHover = function showDropdownOnHover(e) {\n            return _this2.setDropdownOnHover(e.target.checked);\n          };\n\n          this._controls.showDropdownOnHover.addEventListener('change', showDropdownOnHover);\n\n          this._listeners.push([this._controls.showDropdownOnHover, 'change', showDropdownOnHover]);\n        } // Navbar\n        //\n\n\n        this._controls.layoutNavbarFixedW = this.container.querySelector('.template-customizer-layoutNavbarFixed');\n\n        if (!this._hasControls('layoutNavbarFixed')) {\n          this._controls.layoutNavbarFixedW.parentNode.removeChild(this._controls.layoutNavbarFixedW);\n        } else {\n          this._controls.layoutNavbarFixed = this._controls.layoutNavbarFixedW.querySelector('input');\n          if (this.settings.layoutNavbarFixed) this._controls.layoutNavbarFixed.setAttribute('checked', 'checked');\n\n          var layoutNavbarFixedCb = function layoutNavbarFixedCb(e) {\n            return _this2.setLayoutNavbarFixed(e.target.checked);\n          };\n\n          this._controls.layoutNavbarFixed.addEventListener('change', layoutNavbarFixedCb);\n\n          this._listeners.push([this._controls.layoutNavbarFixed, 'change', layoutNavbarFixedCb]);\n        } // Footer\n        //\n\n\n        this._controls.layoutFooterFixedW = this.container.querySelector('.template-customizer-layoutFooterFixed');\n\n        if (!this._hasControls('layoutFooterFixed')) {\n          this._controls.layoutFooterFixedW.parentNode.removeChild(this._controls.layoutFooterFixedW);\n        } else {\n          this._controls.layoutFooterFixed = this._controls.layoutFooterFixedW.querySelector('input');\n          if (this.settings.layoutFooterFixed) this._controls.layoutFooterFixed.setAttribute('checked', 'checked');\n\n          var layoutFooterFixedCb = function layoutFooterFixedCb(e) {\n            return _this2.setLayoutFooterFixed(e.target.checked);\n          };\n\n          this._controls.layoutFooterFixed.addEventListener('change', layoutFooterFixedCb);\n\n          this._listeners.push([this._controls.layoutFooterFixed, 'change', layoutFooterFixedCb]);\n        }\n      } // Set language\n\n\n      this.setLang(this.settings.lang, true); // Append container\n\n      if (_container === document) {\n        if (_container.body) {\n          _container.body.appendChild(this.container);\n        } else {\n          window.addEventListener('DOMContentLoaded', function () {\n            return _container.body.appendChild(_this2.container);\n          });\n        }\n      } else {\n        _container.appendChild(this.container);\n      }\n    }\n  }, {\n    key: \"_initDirection\",\n    value: function _initDirection() {\n      if (this._hasControls('rtl')) document.documentElement.setAttribute('dir', this.settings.rtl ? 'rtl' : 'ltr');\n    } // Init template styles\n\n  }, {\n    key: \"_initStyle\",\n    value: function _initStyle() {\n      if (!this._hasControls('style')) return;\n      var style = this.settings.style;\n\n      this._insertStylesheet('template-customizer-core-css', this.pathResolver(this.settings.cssPath + this.settings.cssFilenamePattern.replace('%name%', \"core\".concat(style !== 'light' ? \"-\".concat(style) : '')))); // ? Uncomment if needed\n\n      /*\n      this._insertStylesheet(\n        'template-customizer-bootstrap-css',\n        this.pathResolver(\n          this.settings.cssPath +\n            this.settings.cssFilenamePattern.replace('%name%', `bootstrap${style !== 'light' ? `-${style}` : ''}`)\n        )\n      )\n      this._insertStylesheet(\n        'template-customizer-bsextended-css',\n        this.pathResolver(\n          this.settings.cssPath +\n            this.settings.cssFilenamePattern.replace(\n              '%name%',\n              `bootstrap-extended${style !== 'light' ? `-${style}` : ''}`\n            )\n        )\n      )\n      this._insertStylesheet(\n        'template-customizer-components-css',\n        this.pathResolver(\n          this.settings.cssPath +\n            this.settings.cssFilenamePattern.replace('%name%', `components${style !== 'light' ? `-${style}` : ''}`)\n        )\n      )\n      this._insertStylesheet(\n        'template-customizer-colors-css',\n        this.pathResolver(\n          this.settings.cssPath +\n            this.settings.cssFilenamePattern.replace('%name%', `colors${style !== 'light' ? `-${style}` : ''}`)\n        )\n      )\n      */\n\n\n      var classesToRemove = style === 'light' ? ['dark-style'] : ['light-style'];\n      classesToRemove.forEach(function (cls) {\n        document.documentElement.classList.remove(cls);\n      });\n      document.documentElement.classList.add(\"\".concat(style, \"-style\"));\n    } // Init theme style\n\n  }, {\n    key: \"_initTheme\",\n    value: function _initTheme() {\n      if (this._hasControls('themes')) {\n        this._insertStylesheet('template-customizer-theme-css', this.pathResolver(this.settings.themesPath + this.settings.cssFilenamePattern.replace('%name%', this.settings.theme.name + (this.settings.style !== 'light' ? \"-\".concat(this.settings.style) : ''))));\n      }\n    }\n  }, {\n    key: \"_insertStylesheet\",\n    value: function _insertStylesheet(className, href) {\n      var curLink = document.querySelector(\".\".concat(className));\n\n      if (typeof document.documentMode === 'number' && document.documentMode < 11) {\n        if (!curLink) return;\n        if (href === curLink.getAttribute('href')) return;\n        var link = document.createElement('link');\n        link.setAttribute('rel', 'stylesheet');\n        link.setAttribute('type', 'text/css');\n        link.className = className;\n        link.setAttribute('href', href);\n        curLink.parentNode.insertBefore(link, curLink.nextSibling);\n      } else {\n        document.write(\"<link rel=\\\"stylesheet\\\" type=\\\"text/css\\\" href=\\\"\".concat(href, \"\\\" class=\\\"\").concat(className, \"\\\">\"));\n      }\n\n      curLink.parentNode.removeChild(curLink);\n    }\n  }, {\n    key: \"_loadStylesheets\",\n    value: function _loadStylesheets(stylesheets, cb) {\n      var paths = Object.keys(stylesheets);\n      var count = paths.length;\n      var loaded = 0;\n\n      function loadStylesheet(path, curLink, _cb) {\n        var link = document.createElement('link');\n        link.setAttribute('href', path);\n        link.setAttribute('rel', 'stylesheet');\n        link.setAttribute('type', 'text/css');\n        link.className = curLink.className;\n        var sheet = 'sheet' in link ? 'sheet' : 'styleSheet';\n        var cssRules = 'sheet' in link ? 'cssRules' : 'rules';\n        var intervalId;\n        var timeoutId = setTimeout(function () {\n          clearInterval(intervalId);\n          clearTimeout(timeoutId);\n          curLink.parentNode.removeChild(link);\n\n          _cb(false, path);\n        }, 15000);\n        intervalId = setInterval(function () {\n          try {\n            if (link[sheet] && link[sheet][cssRules].length) {\n              clearInterval(intervalId);\n              clearTimeout(timeoutId);\n              curLink.parentNode.removeChild(curLink);\n\n              _cb(true);\n            }\n          } catch (e) {// Catch error\n          }\n        }, 10);\n        curLink.parentNode.insertBefore(link, curLink.nextSibling);\n      }\n\n      function stylesheetCallBack() {\n        if ((loaded += 1) >= count) {\n          cb();\n        }\n      }\n\n      for (var i = 0; i < paths.length; i++) {\n        loadStylesheet(paths[i], stylesheets[paths[i]], stylesheetCallBack());\n      }\n    }\n  }, {\n    key: \"_loadingState\",\n    value: function _loadingState(enable, themes) {\n      this.container.classList[enable ? 'add' : 'remove'](\"template-customizer-loading\".concat(themes ? '-theme' : ''));\n    }\n  }, {\n    key: \"_getElementFromString\",\n    value: function _getElementFromString(str) {\n      var wrapper = document.createElement('div');\n      wrapper.innerHTML = str;\n      return wrapper.firstChild;\n    } // Set settings in LocalStorage with layout & key\n\n  }, {\n    key: \"_getSetting\",\n    value: function _getSetting(key) {\n      var result = null;\n\n      var layoutName = this._getLayoutName();\n\n      try {\n        result = localStorage.getItem(\"templateCustomizer-\".concat(layoutName, \"--\").concat(key));\n      } catch (e) {// Catch error\n      }\n\n      return String(result || '');\n    } // Set settings in LocalStorage with layout & key\n\n  }, {\n    key: \"_setSetting\",\n    value: function _setSetting(key, val) {\n      var layoutName = this._getLayoutName();\n\n      try {\n        localStorage.setItem(\"templateCustomizer-\".concat(layoutName, \"--\").concat(key), String(val));\n      } catch (e) {// Catch Error\n      }\n    } // Get layout name to set unique\n\n  }, {\n    key: \"_getLayoutName\",\n    value: function _getLayoutName() {\n      return document.getElementsByTagName('HTML')[0].getAttribute('data-template');\n    }\n  }, {\n    key: \"_removeListeners\",\n    value: function _removeListeners() {\n      for (var i = 0, l = this._listeners.length; i < l; i++) {\n        this._listeners[i][0].removeEventListener(this._listeners[i][1], this._listeners[i][2]);\n      }\n    }\n  }, {\n    key: \"_cleanup\",\n    value: function _cleanup() {\n      this._removeListeners();\n\n      this._listeners = [];\n      this._controls = {};\n\n      if (this._updateInterval) {\n        clearInterval(this._updateInterval);\n        this._updateInterval = null;\n      }\n    }\n  }, {\n    key: \"_ssr\",\n    get: function get() {\n      return typeof window === 'undefined';\n    } // Check controls availablity\n\n  }, {\n    key: \"_hasControls\",\n    value: function _hasControls(controls) {\n      var _this3 = this;\n\n      var oneOf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      return controls.split(' ').reduce(function (result, control) {\n        if (_this3.settings.controls.indexOf(control) !== -1) {\n          if (oneOf || result !== false) result = true;\n        } else if (!oneOf || result !== true) result = false;\n\n        return result;\n      }, null);\n    } // Get the default theme\n\n  }, {\n    key: \"_getDefaultTheme\",\n    value: function _getDefaultTheme(themeId) {\n      var theme;\n\n      if (typeof themeId === 'string') {\n        theme = this._getThemeByName(themeId, false);\n      } else {\n        theme = this.settings.availableThemes[themeId];\n      }\n\n      if (!theme) {\n        throw new Error(\"Theme ID \\\"\".concat(themeId, \"\\\" not found!\"));\n      }\n\n      return theme;\n    } // Get theme by themeId/themeName\n\n  }, {\n    key: \"_getThemeByName\",\n    value: function _getThemeByName(themeName) {\n      var returnDefault = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var themes = this.settings.availableThemes;\n\n      for (var i = 0, l = themes.length; i < l; i++) {\n        if (themes[i].name === themeName) return themes[i];\n      }\n\n      return returnDefault ? this.settings.defaultTheme : null;\n    }\n  }]);\n\n  return TemplateCustomizer;\n}(); // Themes\n\n\nTemplateCustomizer.THEMES = [{\n  name: 'theme-default',\n  title: 'Default'\n}, {\n  name: 'theme-semi-dark',\n  title: 'Semi Dark'\n}, {\n  name: 'theme-bordered',\n  title: 'Bordered'\n}]; // Theme setting language\n\nTemplateCustomizer.LANGUAGES = {\n  en: {\n    panel_header: 'TEMPLATE CUSTOMIZER',\n    panel_sub_header: 'Customize and preview in real time',\n    theming_header: 'THEMING',\n    theme_header: 'THEME',\n    theme_label: 'Themes',\n    style_label: 'Style (Mode)',\n    style_switch_light: 'Light',\n    style_switch_dark: 'Dark',\n    layout_header: 'LAYOUT',\n    layout_label: 'Layout (Menu)',\n    layout_static: 'Static',\n    layout_offcanvas: 'Offcanvas',\n    layout_fixed: 'Fixed',\n    layout_fixed_offcanvas: 'Fixed offcanvas',\n    layout_flipped_label: 'Menu flipped',\n    layout_dd_open_label: 'Dropdown on hover',\n    layout_navbar_label: 'Fixed navbar',\n    layout_footer_label: 'Fixed footer',\n    misc_header: 'MISC',\n    rtl_label: 'RTL direction'\n  }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9qcy90ZW1wbGF0ZS1jdXN0b21pemVyLmpzP2E5NDYiXSwibmFtZXMiOlsiQ1NTX0ZJTEVOQU1FX1BBVFRFUk4iLCJDT05UUk9MUyIsIlNUWUxFUyIsImNsIiwiZG9jdW1lbnQiLCJkb2N1bWVudEVsZW1lbnQiLCJjbGFzc0xpc3QiLCJESVNQTEFZX0NVU1RPTUlaRVIiLCJERUZBVUxUX1RIRU1FIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJnZXRBdHRyaWJ1dGUiLCJERUZBVUxUX1NUWUxFIiwiY29udGFpbnMiLCJERUZBVUxUX1RFWFRfRElSIiwiREVGQVVMVF9NRU5VX0NPTExBUFNFRCIsIkRFRkFVTFRfTUVOVV9GTElQUEVEIiwiREVGQVVMVF9TSE9XX0RST1BET1dOX09OX0hPVkVSIiwidW5kZWZpbmVkIiwiREVGQVVMVF9OQVZCQVJfRklYRUQiLCJERUZBVUxUX0ZPT1RFUl9GSVhFRCIsImxheW91dFR5cGUiLCJERUZBVUxUX0xBWU9VVF9UWVBFIiwiVGVtcGxhdGVDdXN0b21pemVyIiwiY3NzUGF0aCIsInRoZW1lc1BhdGgiLCJjc3NGaWxlbmFtZVBhdHRlcm4iLCJkaXNwbGF5Q3VzdG9taXplciIsImNvbnRyb2xzIiwiZGVmYXVsdFRleHREaXIiLCJkZWZhdWx0TGF5b3V0VHlwZSIsImRlZmF1bHRNZW51Q29sbGFwc2VkIiwiZGVmYXVsdE1lbnVGbGlwcGVkIiwiZGVmYXVsdFNob3dEcm9wZG93bk9uSG92ZXIiLCJkZWZhdWx0TmF2YmFyRml4ZWQiLCJkZWZhdWx0Rm9vdGVyRml4ZWQiLCJzdHlsZXMiLCJkZWZhdWx0U3R5bGUiLCJhdmFpbGFibGVUaGVtZXMiLCJkZWZhdWx0VGhlbWUiLCJwYXRoUmVzb2x2ZXIiLCJvblNldHRpbmdzQ2hhbmdlIiwibGFuZyIsIl9zc3IiLCJ3aW5kb3ciLCJIZWxwZXJzIiwiRXJyb3IiLCJzZXR0aW5ncyIsIlRIRU1FUyIsIl9nZXREZWZhdWx0VGhlbWUiLCJwIiwibGVuZ3RoIiwiaSIsImluZGV4T2YiLCJzbGljZSIsImNvbmNhdCIsIl9sb2FkU2V0dGluZ3MiLCJfbGlzdGVuZXJzIiwiX2NvbnRyb2xzIiwiX2luaXREaXJlY3Rpb24iLCJfaW5pdFN0eWxlIiwiX2luaXRUaGVtZSIsInNldExheW91dFR5cGUiLCJzZXRMYXlvdXRNZW51RmxpcHBlZCIsImxheW91dE1lbnVGbGlwcGVkIiwic2V0RHJvcGRvd25PbkhvdmVyIiwic2hvd0Ryb3Bkb3duT25Ib3ZlciIsInNldExheW91dE5hdmJhckZpeGVkIiwibGF5b3V0TmF2YmFyRml4ZWQiLCJzZXRMYXlvdXRGb290ZXJGaXhlZCIsImxheW91dEZvb3RlckZpeGVkIiwiX3NldHVwIiwicnRsIiwiX2hhc0NvbnRyb2xzIiwiX3NldFNldHRpbmciLCJTdHJpbmciLCJsb2NhdGlvbiIsInJlbG9hZCIsInN0eWxlIiwidGhlbWVOYW1lIiwidXBkYXRlU3RvcmFnZSIsImNiIiwidGhlbWUiLCJfZ2V0VGhlbWVCeU5hbWUiLCJ0aGVtZVVybCIsInJlcGxhY2UiLCJfbG9hZFN0eWxlc2hlZXRzIiwicXVlcnlTZWxlY3RvciIsImNhbGwiLCJwb3MiLCJzZXRQb3NpdGlvbiIsIm1lbnVTY3JvbGwiLCJtZW51UHNTY3JvbGwiLCJQZXJmZWN0U2Nyb2xsYmFyTGliIiwiUGVyZmVjdFNjcm9sbGJhciIsImRlc3Ryb3kiLCJzdXBwcmVzc1Njcm9sbFgiLCJ3aGVlbFByb3BhZ2F0aW9uIiwiZmxpcHBlZCIsInNldEZsaXBwZWQiLCJvcGVuIiwibWFpbk1lbnUiLCJjb25maWciLCJNZW51IiwiZ2V0RWxlbWVudEJ5SWQiLCJvcmllbnRhdGlvbiIsImNsb3NlQ2hpbGRyZW4iLCJmaXhlZCIsInNldE5hdmJhckZpeGVkIiwic2V0Rm9vdGVyRml4ZWQiLCJmb3JjZSIsIkxBTkdVQUdFUyIsInQiLCJmb3JFYWNoIiwia2V5IiwiZWwiLCJjb250YWluZXIiLCJ0ZXh0Q29udGVudCIsInR0IiwidGhlbWVzIiwicXVlcnlTZWxlY3RvckFsbCIsImwiLCJ2YWx1ZSIsInRpdGxlIiwiaGFzTmF2YmFyIiwiaGFzTWVudSIsImhhc0hvcml6b250YWxNZW51IiwiaXNMYXlvdXQxIiwiaGFzRm9vdGVyIiwic2V0QXR0cmlidXRlIiwiYWRkIiwicmVtb3ZlQXR0cmlidXRlIiwicmVtb3ZlIiwibGF5b3V0TmF2YmFyRml4ZWRXIiwibGF5b3V0Rm9vdGVyRml4ZWRXIiwiX2NsZWFudXAiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJfZ2V0U2V0dGluZyIsImNvbGxhcHNlZE1lbnUiLCJmbGlwcGVkTWVudSIsImRyb3Bkb3duT25Ib3ZlciIsImZpeGVkTmF2YmFyIiwiZml4ZWRGb290ZXIiLCJsVHlwZSIsInR5cGUiLCJsYXlvdXRNZW51IiwiX2NvbnRhaW5lciIsIl9nZXRFbGVtZW50RnJvbVN0cmluZyIsImN1c3RvbWl6ZXJNYXJrdXAiLCJjdXN0b21pemVyVyIsIm9wZW5CdG4iLCJvcGVuQnRuQ2IiLCJ1cGRhdGUiLCJfdXBkYXRlSW50ZXJ2YWwiLCJjbGVhckludGVydmFsIiwic2V0SW50ZXJ2YWwiLCJhZGRFdmVudExpc3RlbmVyIiwicHVzaCIsImNsb3NlQnRuIiwiY2xvc2VCdG5DYiIsInJ0bFciLCJydGxTdXBwb3J0IiwicnRsQ2IiLCJlIiwiX2xvYWRpbmdTdGF0ZSIsInNldFJ0bCIsInRhcmdldCIsImNoZWNrZWQiLCJzdHlsZVciLCJzdHlsZUNiIiwic2V0U3R5bGUiLCJ0aGVtZXNXIiwidGhlbWVzV0lubmVyIiwidGhlbWVFbCIsIm5hbWUiLCJhcHBlbmRDaGlsZCIsInRoZW1lQ2IiLCJfbG9hZGluZyIsInNldFRoZW1lIiwibGF5b3V0VyIsImxheW91dFR5cGVXIiwibGF5b3V0VHlwZUNiIiwibGF5b3V0TmF2YmFyRml4ZWRDYiIsImxheW91dEZvb3RlckZpeGVkQ2IiLCJzZXRMYW5nIiwiYm9keSIsIl9pbnNlcnRTdHlsZXNoZWV0IiwiY2xhc3Nlc1RvUmVtb3ZlIiwiY2xzIiwiY2xhc3NOYW1lIiwiaHJlZiIsImN1ckxpbmsiLCJkb2N1bWVudE1vZGUiLCJsaW5rIiwiY3JlYXRlRWxlbWVudCIsImluc2VydEJlZm9yZSIsIm5leHRTaWJsaW5nIiwid3JpdGUiLCJzdHlsZXNoZWV0cyIsInBhdGhzIiwiT2JqZWN0Iiwia2V5cyIsImNvdW50IiwibG9hZGVkIiwibG9hZFN0eWxlc2hlZXQiLCJwYXRoIiwiX2NiIiwic2hlZXQiLCJjc3NSdWxlcyIsImludGVydmFsSWQiLCJ0aW1lb3V0SWQiLCJzZXRUaW1lb3V0IiwiY2xlYXJUaW1lb3V0Iiwic3R5bGVzaGVldENhbGxCYWNrIiwiZW5hYmxlIiwic3RyIiwid3JhcHBlciIsImlubmVySFRNTCIsImZpcnN0Q2hpbGQiLCJyZXN1bHQiLCJsYXlvdXROYW1lIiwiX2dldExheW91dE5hbWUiLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwidmFsIiwic2V0SXRlbSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJfcmVtb3ZlTGlzdGVuZXJzIiwib25lT2YiLCJzcGxpdCIsInJlZHVjZSIsImNvbnRyb2wiLCJ0aGVtZUlkIiwicmV0dXJuRGVmYXVsdCIsImVuIiwicGFuZWxfaGVhZGVyIiwicGFuZWxfc3ViX2hlYWRlciIsInRoZW1pbmdfaGVhZGVyIiwidGhlbWVfaGVhZGVyIiwidGhlbWVfbGFiZWwiLCJzdHlsZV9sYWJlbCIsInN0eWxlX3N3aXRjaF9saWdodCIsInN0eWxlX3N3aXRjaF9kYXJrIiwibGF5b3V0X2hlYWRlciIsImxheW91dF9sYWJlbCIsImxheW91dF9zdGF0aWMiLCJsYXlvdXRfb2ZmY2FudmFzIiwibGF5b3V0X2ZpeGVkIiwibGF5b3V0X2ZpeGVkX29mZmNhbnZhcyIsImxheW91dF9mbGlwcGVkX2xhYmVsIiwibGF5b3V0X2RkX29wZW5fbGFiZWwiLCJsYXlvdXRfbmF2YmFyX2xhYmVsIiwibGF5b3V0X2Zvb3Rlcl9sYWJlbCIsIm1pc2NfaGVhZGVyIiwicnRsX2xhYmVsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFFQSxJQUFNQSxvQkFBb0IsR0FBRyxZQUE3QjtB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T0ZDLHNCQUFrQixFQUFFLE9BUGxCO0FBUUZDLHFCQUFpQixFQUFFLE1BUmpCO0FBU0ZDLGlCQUFhLEVBQUUsUUFUYjtBQVVGQyxnQkFBWSxFQUFFLGVBVlo7QUFXRkMsaUJBQWEsRUFBRSxRQVhiO0FBWUZDLG9CQUFnQixFQUFFLFdBWmhCO0FBYUZDLGdCQUFZLEVBQUUsT0FiWjtBQWNGQywwQkFBc0IsRUFBRSxpQkFkdEI7QUFlRkMsd0JBQW9CLEVBQUUsY0FmcEI7QUFnQkZDLHdCQUFvQixFQUFFLG1CQWhCcEI7QUFpQkZDLHVCQUFtQixFQUFFLGNBakJuQjtBQWtCRkMsdUJBQW1CLEVBQUUsY0FsQm5CO0FBbUJGQyxlQUFXLEVBQUUsTUFuQlg7QUFvQkZDLGFBQVMsRUFBRTtBQXBCVDtBQUR5QixDQUEvQiIsImZpbGUiOiIuL2pzL3RlbXBsYXRlLWN1c3RvbWl6ZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3VzdG9taXplclN0eWxlIGZyb20gJy4vX3RlbXBsYXRlLWN1c3RvbWl6ZXIvX3RlbXBsYXRlLWN1c3RvbWl6ZXIuc2NzcydcbmltcG9ydCBjdXN0b21pemVyTWFya3VwIGZyb20gJy4vX3RlbXBsYXRlLWN1c3RvbWl6ZXIvX3RlbXBsYXRlLWN1c3RvbWl6ZXIuaHRtbCdcblxuY29uc3QgQ1NTX0ZJTEVOQU1FX1BBVFRFUk4gPSAnJW5hbWUlLmNzcydcbmNvbnN0IENPTlRST0xTID0gW1xuICAncnRsJyxcbiAgJ3N0eWxlJyxcbiAgJ2xheW91dFR5cGUnLFxuICAnbGF5b3V0TWVudUZsaXBwZWQnLFxuICAnc2hvd0Ryb3Bkb3duT25Ib3ZlcicsXG4gICdsYXlvdXROYXZiYXJGaXhlZCcsXG4gICdsYXlvdXRGb290ZXJGaXhlZCcsXG4gICd0aGVtZXMnXG5dXG5jb25zdCBTVFlMRVMgPSBbJ2xpZ2h0JywgJ2RhcmsnXVxuXG5jb25zdCBjbCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3RcblxuY29uc3QgRElTUExBWV9DVVNUT01JWkVSID0gdHJ1ZVxuY29uc3QgREVGQVVMVF9USEVNRSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdIVE1MJylbMF0uZ2V0QXR0cmlidXRlKCdkYXRhLXRoZW1lJykgfHwgMFxuY29uc3QgREVGQVVMVF9TVFlMRSA9IGNsLmNvbnRhaW5zKCdkYXJrLXN0eWxlJykgPyAnZGFyaycgOiAnbGlnaHQnXG5jb25zdCBERUZBVUxUX1RFWFRfRElSID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGlyJykgPT09ICdydGwnXG5jb25zdCBERUZBVUxUX01FTlVfQ09MTEFQU0VEID0gISFjbC5jb250YWlucygnbGF5b3V0LW1lbnUtY29sbGFwc2VkJylcbmNvbnN0IERFRkFVTFRfTUVOVV9GTElQUEVEID0gISFjbC5jb250YWlucygnbGF5b3V0LW1lbnUtZmxpcHBlZCcpXG5jb25zdCBERUZBVUxUX1NIT1dfRFJPUERPV05fT05fSE9WRVIgPSB1bmRlZmluZWRcbmNvbnN0IERFRkFVTFRfTkFWQkFSX0ZJWEVEID0gISFjbC5jb250YWlucygnbGF5b3V0LW5hdmJhci1maXhlZCcpXG5jb25zdCBERUZBVUxUX0ZPT1RFUl9GSVhFRCA9ICEhY2wuY29udGFpbnMoJ2xheW91dC1mb290ZXItZml4ZWQnKVxuXG5sZXQgbGF5b3V0VHlwZVxuaWYgKGNsLmNvbnRhaW5zKCdsYXlvdXQtbWVudS1vZmZjYW52YXMnKSkge1xuICBsYXlvdXRUeXBlID0gJ3N0YXRpYy1vZmZjYW52YXMnXG59IGVsc2UgaWYgKGNsLmNvbnRhaW5zKCdsYXlvdXQtbWVudS1maXhlZCcpKSB7XG4gIGxheW91dFR5cGUgPSAnZml4ZWQnXG59IGVsc2UgaWYgKGNsLmNvbnRhaW5zKCdsYXlvdXQtbWVudS1maXhlZC1vZmZjYW52YXMnKSkge1xuICBsYXlvdXRUeXBlID0gJ2ZpeGVkLW9mZmNhbnZhcydcbn0gZWxzZSB7XG4gIGxheW91dFR5cGUgPSAnc3RhdGljJ1xufVxuY29uc3QgREVGQVVMVF9MQVlPVVRfVFlQRSA9IGxheW91dFR5cGVcblxuY2xhc3MgVGVtcGxhdGVDdXN0b21pemVyIHtcbiAgY29uc3RydWN0b3Ioe1xuICAgIGNzc1BhdGgsXG4gICAgdGhlbWVzUGF0aCxcbiAgICBjc3NGaWxlbmFtZVBhdHRlcm4sXG4gICAgZGlzcGxheUN1c3RvbWl6ZXIsXG4gICAgY29udHJvbHMsXG4gICAgZGVmYXVsdFRleHREaXIsXG4gICAgZGVmYXVsdExheW91dFR5cGUsXG4gICAgZGVmYXVsdE1lbnVDb2xsYXBzZWQsXG4gICAgZGVmYXVsdE1lbnVGbGlwcGVkLFxuICAgIGRlZmF1bHRTaG93RHJvcGRvd25PbkhvdmVyLFxuICAgIGRlZmF1bHROYXZiYXJGaXhlZCxcbiAgICBkZWZhdWx0Rm9vdGVyRml4ZWQsXG4gICAgc3R5bGVzLFxuICAgIGRlZmF1bHRTdHlsZSxcbiAgICBhdmFpbGFibGVUaGVtZXMsXG4gICAgZGVmYXVsdFRoZW1lLFxuICAgIHBhdGhSZXNvbHZlcixcbiAgICBvblNldHRpbmdzQ2hhbmdlLFxuICAgIGxhbmdcbiAgfSkge1xuICAgIGlmICh0aGlzLl9zc3IpIHJldHVyblxuICAgIGlmICghd2luZG93LkhlbHBlcnMpIHRocm93IG5ldyBFcnJvcignd2luZG93LkhlbHBlcnMgcmVxdWlyZWQuJylcblxuICAgIHRoaXMuc2V0dGluZ3MgPSB7fVxuICAgIHRoaXMuc2V0dGluZ3MuY3NzUGF0aCA9IGNzc1BhdGhcbiAgICB0aGlzLnNldHRpbmdzLnRoZW1lc1BhdGggPSB0aGVtZXNQYXRoXG4gICAgdGhpcy5zZXR0aW5ncy5jc3NGaWxlbmFtZVBhdHRlcm4gPSBjc3NGaWxlbmFtZVBhdHRlcm4gfHwgQ1NTX0ZJTEVOQU1FX1BBVFRFUk5cbiAgICB0aGlzLnNldHRpbmdzLmRpc3BsYXlDdXN0b21pemVyID0gdHlwZW9mIGRpc3BsYXlDdXN0b21pemVyICE9PSAndW5kZWZpbmVkJyA/IGRpc3BsYXlDdXN0b21pemVyIDogRElTUExBWV9DVVNUT01JWkVSXG5cbiAgICB0aGlzLnNldHRpbmdzLmNvbnRyb2xzID0gY29udHJvbHMgfHwgQ09OVFJPTFNcbiAgICB0aGlzLnNldHRpbmdzLmRlZmF1bHRUZXh0RGlyID0gZGVmYXVsdFRleHREaXIgPT09ICdydGwnID8gdHJ1ZSA6IGZhbHNlIHx8IERFRkFVTFRfVEVYVF9ESVJcbiAgICB0aGlzLnNldHRpbmdzLmRlZmF1bHRMYXlvdXRUeXBlID0gZGVmYXVsdExheW91dFR5cGUgfHwgREVGQVVMVF9MQVlPVVRfVFlQRVxuICAgIHRoaXMuc2V0dGluZ3MuZGVmYXVsdE1lbnVDb2xsYXBzZWQgPVxuICAgICAgdHlwZW9mIGRlZmF1bHRNZW51Q29sbGFwc2VkICE9PSAndW5kZWZpbmVkJyA/IGRlZmF1bHRNZW51Q29sbGFwc2VkIDogREVGQVVMVF9NRU5VX0NPTExBUFNFRFxuICAgIHRoaXMuc2V0dGluZ3MuZGVmYXVsdE1lbnVGbGlwcGVkID1cbiAgICAgIHR5cGVvZiBkZWZhdWx0TWVudUZsaXBwZWQgIT09ICd1bmRlZmluZWQnID8gZGVmYXVsdE1lbnVGbGlwcGVkIDogREVGQVVMVF9NRU5VX0ZMSVBQRURcbiAgICB0aGlzLnNldHRpbmdzLmRlZmF1bHRTaG93RHJvcGRvd25PbkhvdmVyID1cbiAgICAgIHR5cGVvZiBkZWZhdWx0U2hvd0Ryb3Bkb3duT25Ib3ZlciAhPT0gJ3VuZGVmaW5lZCcgPyBkZWZhdWx0U2hvd0Ryb3Bkb3duT25Ib3ZlciA6IERFRkFVTFRfU0hPV19EUk9QRE9XTl9PTl9IT1ZFUlxuICAgIHRoaXMuc2V0dGluZ3MuZGVmYXVsdE5hdmJhckZpeGVkID1cbiAgICAgIHR5cGVvZiBkZWZhdWx0TmF2YmFyRml4ZWQgIT09ICd1bmRlZmluZWQnID8gZGVmYXVsdE5hdmJhckZpeGVkIDogREVGQVVMVF9OQVZCQVJfRklYRURcbiAgICB0aGlzLnNldHRpbmdzLmRlZmF1bHRGb290ZXJGaXhlZCA9XG4gICAgICB0eXBlb2YgZGVmYXVsdEZvb3RlckZpeGVkICE9PSAndW5kZWZpbmVkJyA/IGRlZmF1bHRGb290ZXJGaXhlZCA6IERFRkFVTFRfRk9PVEVSX0ZJWEVEXG5cbiAgICB0aGlzLnNldHRpbmdzLmF2YWlsYWJsZVRoZW1lcyA9IGF2YWlsYWJsZVRoZW1lcyB8fCBUZW1wbGF0ZUN1c3RvbWl6ZXIuVEhFTUVTXG4gICAgdGhpcy5zZXR0aW5ncy5kZWZhdWx0VGhlbWUgPSB0aGlzLl9nZXREZWZhdWx0VGhlbWUoXG4gICAgICB0eXBlb2YgZGVmYXVsdFRoZW1lICE9PSAndW5kZWZpbmVkJyA/IGRlZmF1bHRUaGVtZSA6IERFRkFVTFRfVEhFTUVcbiAgICApXG5cbiAgICB0aGlzLnNldHRpbmdzLnN0eWxlcyA9IHN0eWxlcyB8fCBTVFlMRVNcbiAgICB0aGlzLnNldHRpbmdzLmRlZmF1bHRTdHlsZSA9IGRlZmF1bHRTdHlsZSB8fCBERUZBVUxUX1NUWUxFXG4gICAgdGhpcy5zZXR0aW5ncy5sYW5nID0gbGFuZyB8fCAnZW4nXG4gICAgdGhpcy5wYXRoUmVzb2x2ZXIgPSBwYXRoUmVzb2x2ZXIgfHwgKHAgPT4gcClcblxuICAgIGlmICh0aGlzLnNldHRpbmdzLnN0eWxlcy5sZW5ndGggPCAyKSB7XG4gICAgICBjb25zdCBpID0gdGhpcy5zZXR0aW5ncy5jb250cm9scy5pbmRleE9mKCdzdHlsZScpXG4gICAgICBpZiAoaSAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5jb250cm9scyA9IHRoaXMuc2V0dGluZ3MuY29udHJvbHMuc2xpY2UoMCwgaSkuY29uY2F0KHRoaXMuc2V0dGluZ3MuY29udHJvbHMuc2xpY2UoaSArIDEpKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2V0dGluZ3Mub25TZXR0aW5nc0NoYW5nZSA9IHR5cGVvZiBvblNldHRpbmdzQ2hhbmdlID09PSAnZnVuY3Rpb24nID8gb25TZXR0aW5nc0NoYW5nZSA6ICgpID0+IHt9XG5cbiAgICB0aGlzLl9sb2FkU2V0dGluZ3MoKVxuXG4gICAgdGhpcy5fbGlzdGVuZXJzID0gW11cbiAgICB0aGlzLl9jb250cm9scyA9IHt9XG5cbiAgICB0aGlzLl9pbml0RGlyZWN0aW9uKClcbiAgICB0aGlzLl9pbml0U3R5bGUoKVxuICAgIHRoaXMuX2luaXRUaGVtZSgpXG4gICAgdGhpcy5zZXRMYXlvdXRUeXBlKHRoaXMuc2V0dGluZ3MubGF5b3V0VHlwZSwgZmFsc2UpXG4gICAgdGhpcy5zZXRMYXlvdXRNZW51RmxpcHBlZCh0aGlzLnNldHRpbmdzLmxheW91dE1lbnVGbGlwcGVkLCBmYWxzZSlcbiAgICB0aGlzLnNldERyb3Bkb3duT25Ib3Zlcih0aGlzLnNldHRpbmdzLnNob3dEcm9wZG93bk9uSG92ZXIsIGZhbHNlKVxuICAgIHRoaXMuc2V0TGF5b3V0TmF2YmFyRml4ZWQodGhpcy5zZXR0aW5ncy5sYXlvdXROYXZiYXJGaXhlZCwgZmFsc2UpXG4gICAgdGhpcy5zZXRMYXlvdXRGb290ZXJGaXhlZCh0aGlzLnNldHRpbmdzLmxheW91dEZvb3RlckZpeGVkLCBmYWxzZSlcbiAgICB0aGlzLl9zZXR1cCgpXG4gIH1cblxuICBzZXRSdGwocnRsKSB7XG4gICAgaWYgKCF0aGlzLl9oYXNDb250cm9scygncnRsJykpIHJldHVyblxuICAgIHRoaXMuX3NldFNldHRpbmcoJ1J0bCcsIFN0cmluZyhydGwpKVxuICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKVxuICB9XG5cbiAgc2V0U3R5bGUoc3R5bGUpIHtcbiAgICBpZiAoIXRoaXMuX2hhc0NvbnRyb2xzKCdzdHlsZScpKSByZXR1cm5cbiAgICB0aGlzLl9zZXRTZXR0aW5nKCdTdHlsZScsIFsnZGFyayddLmluZGV4T2Yoc3R5bGUpID09PSAtMSA/ICdsaWdodCcgOiBzdHlsZSlcblxuICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKVxuICB9XG5cbiAgc2V0VGhlbWUodGhlbWVOYW1lLCB1cGRhdGVTdG9yYWdlID0gdHJ1ZSwgY2IgPSBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9oYXNDb250cm9scygndGhlbWVzJykpIHJldHVyblxuXG4gICAgY29uc3QgdGhlbWUgPSB0aGlzLl9nZXRUaGVtZUJ5TmFtZSh0aGVtZU5hbWUpXG5cbiAgICBpZiAoIXRoZW1lKSByZXR1cm5cblxuICAgIHRoaXMuc2V0dGluZ3MudGhlbWUgPSB0aGVtZVxuICAgIGlmICh1cGRhdGVTdG9yYWdlKSB0aGlzLl9zZXRTZXR0aW5nKCdUaGVtZScsIHRoZW1lTmFtZSlcblxuICAgIGNvbnN0IHRoZW1lVXJsID0gdGhpcy5wYXRoUmVzb2x2ZXIoXG4gICAgICB0aGlzLnNldHRpbmdzLnRoZW1lc1BhdGggK1xuICAgICAgICB0aGlzLnNldHRpbmdzLmNzc0ZpbGVuYW1lUGF0dGVybi5yZXBsYWNlKFxuICAgICAgICAgICclbmFtZSUnLFxuICAgICAgICAgIHRoZW1lTmFtZSArICh0aGlzLnNldHRpbmdzLnN0eWxlICE9PSAnbGlnaHQnID8gYC0ke3RoaXMuc2V0dGluZ3Muc3R5bGV9YCA6ICcnKVxuICAgICAgICApXG4gICAgKVxuXG4gICAgdGhpcy5fbG9hZFN0eWxlc2hlZXRzKHsgW3RoZW1lVXJsXTogZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnRlbXBsYXRlLWN1c3RvbWl6ZXItdGhlbWUtY3NzJykgfSwgY2IgfHwgKCgpID0+IHt9KSlcblxuICAgIGlmICh1cGRhdGVTdG9yYWdlKSB0aGlzLnNldHRpbmdzLm9uU2V0dGluZ3NDaGFuZ2UuY2FsbCh0aGlzLCB0aGlzLnNldHRpbmdzKVxuICB9XG5cbiAgc2V0TGF5b3V0VHlwZShwb3MsIHVwZGF0ZVN0b3JhZ2UgPSB0cnVlKSB7XG4gICAgaWYgKCF0aGlzLl9oYXNDb250cm9scygnbGF5b3V0VHlwZScpKSByZXR1cm5cbiAgICBpZiAocG9zICE9PSAnc3RhdGljJyAmJiBwb3MgIT09ICdzdGF0aWMtb2ZmY2FudmFzJyAmJiBwb3MgIT09ICdmaXhlZCcgJiYgcG9zICE9PSAnZml4ZWQtb2ZmY2FudmFzJykgcmV0dXJuXG5cbiAgICB0aGlzLnNldHRpbmdzLmxheW91dFR5cGUgPSBwb3NcbiAgICBpZiAodXBkYXRlU3RvcmFnZSkgdGhpcy5fc2V0U2V0dGluZygnTGF5b3V0VHlwZScsIHBvcylcblxuICAgIHdpbmRvdy5IZWxwZXJzLnNldFBvc2l0aW9uKFxuICAgICAgcG9zID09PSAnZml4ZWQnIHx8IHBvcyA9PT0gJ2ZpeGVkLW9mZmNhbnZhcycsXG4gICAgICBwb3MgPT09ICdzdGF0aWMtb2ZmY2FudmFzJyB8fCBwb3MgPT09ICdmaXhlZC1vZmZjYW52YXMnXG4gICAgKVxuXG4gICAgaWYgKHVwZGF0ZVN0b3JhZ2UpIHRoaXMuc2V0dGluZ3Mub25TZXR0aW5nc0NoYW5nZS5jYWxsKHRoaXMsIHRoaXMuc2V0dGluZ3MpXG5cbiAgICAvLyBQZXJmZWN0c2Nyb2xsYmFyIGNoYW5nZSBvbiBMYXlvdXQgY2hhbmdlXG4gICAgbGV0IG1lbnVTY3JvbGwgPSB3aW5kb3cuSGVscGVycy5tZW51UHNTY3JvbGxcbiAgICBjb25zdCBQZXJmZWN0U2Nyb2xsYmFyTGliID0gd2luZG93LlBlcmZlY3RTY3JvbGxiYXJcblxuICAgIGlmICh0aGlzLnNldHRpbmdzLmxheW91dFR5cGUgPT09ICdmaXhlZCcgfHwgdGhpcy5zZXR0aW5ncy5sYXlvdXRUeXBlID09PSAnZml4ZWQtb2ZmY2FudmFzJykge1xuICAgICAgLy8gU2V0IHBlcmZlY3RzY3JvbGxiYXIgd2hlZWxQcm9wYWdhdGlvbiBmYWxzZSBmb3IgZml4ZWQgbGF5b3V0XG4gICAgICBpZiAoUGVyZmVjdFNjcm9sbGJhckxpYiAmJiBtZW51U2Nyb2xsKSB7XG4gICAgICAgIHdpbmRvdy5IZWxwZXJzLm1lbnVQc1Njcm9sbC5kZXN0cm95KClcbiAgICAgICAgbWVudVNjcm9sbCA9IG5ldyBQZXJmZWN0U2Nyb2xsYmFyTGliKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tZW51LWlubmVyJyksIHtcbiAgICAgICAgICBzdXBwcmVzc1Njcm9sbFg6IHRydWUsXG4gICAgICAgICAgd2hlZWxQcm9wYWdhdGlvbjogZmFsc2VcbiAgICAgICAgfSlcbiAgICAgICAgd2luZG93LkhlbHBlcnMubWVudVBzU2Nyb2xsID0gbWVudVNjcm9sbFxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobWVudVNjcm9sbCkge1xuICAgICAgLy8gRGVzdHJveSBwZXJmZWN0c2Nyb2xsYmFyIGZvciBzdGF0aWMgbGF5b3V0XG4gICAgICB3aW5kb3cuSGVscGVycy5tZW51UHNTY3JvbGwuZGVzdHJveSgpXG4gICAgfVxuICB9XG5cbiAgc2V0TGF5b3V0TWVudUZsaXBwZWQoZmxpcHBlZCwgdXBkYXRlU3RvcmFnZSA9IHRydWUpIHtcbiAgICBpZiAoIXRoaXMuX2hhc0NvbnRyb2xzKCdsYXlvdXRNZW51RmxpcHBlZCcpKSByZXR1cm5cbiAgICB0aGlzLnNldHRpbmdzLmxheW91dE1lbnVGbGlwcGVkID0gZmxpcHBlZFxuICAgIGlmICh1cGRhdGVTdG9yYWdlKSB0aGlzLl9zZXRTZXR0aW5nKCdNZW51RmxpcHBlZCcsIGZsaXBwZWQpXG5cbiAgICB3aW5kb3cuSGVscGVycy5zZXRGbGlwcGVkKGZsaXBwZWQpXG5cbiAgICBpZiAodXBkYXRlU3RvcmFnZSkgdGhpcy5zZXR0aW5ncy5vblNldHRpbmdzQ2hhbmdlLmNhbGwodGhpcywgdGhpcy5zZXR0aW5ncylcbiAgfVxuXG4gIHNldERyb3Bkb3duT25Ib3ZlcihvcGVuLCB1cGRhdGVTdG9yYWdlID0gdHJ1ZSkge1xuICAgIGlmICghdGhpcy5faGFzQ29udHJvbHMoJ3Nob3dEcm9wZG93bk9uSG92ZXInKSkgcmV0dXJuXG4gICAgdGhpcy5zZXR0aW5ncy5zaG93RHJvcGRvd25PbkhvdmVyID0gb3BlblxuICAgIGlmICh1cGRhdGVTdG9yYWdlKSB0aGlzLl9zZXRTZXR0aW5nKCdTaG93RHJvcGRvd25PbkhvdmVyJywgb3BlbilcblxuICAgIGlmICh3aW5kb3cuSGVscGVycy5tYWluTWVudSkge1xuICAgICAgd2luZG93LkhlbHBlcnMubWFpbk1lbnUuZGVzdHJveSgpXG4gICAgICBjb25maWcuc2hvd0Ryb3Bkb3duT25Ib3ZlciA9IG9wZW5cblxuICAgICAgY29uc3QgeyBNZW51IH0gPSB3aW5kb3dcblxuICAgICAgd2luZG93LkhlbHBlcnMubWFpbk1lbnUgPSBuZXcgTWVudShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5b3V0LW1lbnUnKSwge1xuICAgICAgICBvcmllbnRhdGlvbjogJ2hvcml6b250YWwnLFxuICAgICAgICBjbG9zZUNoaWxkcmVuOiB0cnVlLFxuICAgICAgICBzaG93RHJvcGRvd25PbkhvdmVyOiBjb25maWcuc2hvd0Ryb3Bkb3duT25Ib3ZlclxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlU3RvcmFnZSkgdGhpcy5zZXR0aW5ncy5vblNldHRpbmdzQ2hhbmdlLmNhbGwodGhpcywgdGhpcy5zZXR0aW5ncylcbiAgfVxuXG4gIHNldExheW91dE5hdmJhckZpeGVkKGZpeGVkLCB1cGRhdGVTdG9yYWdlID0gdHJ1ZSkge1xuICAgIGlmICghdGhpcy5faGFzQ29udHJvbHMoJ2xheW91dE5hdmJhckZpeGVkJykpIHJldHVyblxuICAgIHRoaXMuc2V0dGluZ3MubGF5b3V0TmF2YmFyRml4ZWQgPSBmaXhlZFxuICAgIGlmICh1cGRhdGVTdG9yYWdlKSB0aGlzLl9zZXRTZXR0aW5nKCdGaXhlZE5hdmJhcicsIGZpeGVkKVxuXG4gICAgd2luZG93LkhlbHBlcnMuc2V0TmF2YmFyRml4ZWQoZml4ZWQpXG5cbiAgICBpZiAodXBkYXRlU3RvcmFnZSkgdGhpcy5zZXR0aW5ncy5vblNldHRpbmdzQ2hhbmdlLmNhbGwodGhpcywgdGhpcy5zZXR0aW5ncylcbiAgfVxuXG4gIHNldExheW91dEZvb3RlckZpeGVkKGZpeGVkLCB1cGRhdGVTdG9yYWdlID0gdHJ1ZSkge1xuICAgIGlmICghdGhpcy5faGFzQ29udHJvbHMoJ2xheW91dEZvb3RlckZpeGVkJykpIHJldHVyblxuICAgIHRoaXMuc2V0dGluZ3MubGF5b3V0Rm9vdGVyRml4ZWQgPSBmaXhlZFxuICAgIGlmICh1cGRhdGVTdG9yYWdlKSB0aGlzLl9zZXRTZXR0aW5nKCdGaXhlZEZvb3RlcicsIGZpeGVkKVxuXG4gICAgd2luZG93LkhlbHBlcnMuc2V0Rm9vdGVyRml4ZWQoZml4ZWQpXG5cbiAgICBpZiAodXBkYXRlU3RvcmFnZSkgdGhpcy5zZXR0aW5ncy5vblNldHRpbmdzQ2hhbmdlLmNhbGwodGhpcywgdGhpcy5zZXR0aW5ncylcbiAgfVxuXG4gIHNldExhbmcobGFuZywgZm9yY2UgPSBmYWxzZSkge1xuICAgIGlmIChsYW5nID09PSB0aGlzLnNldHRpbmdzLmxhbmcgJiYgIWZvcmNlKSByZXR1cm5cbiAgICBpZiAoIVRlbXBsYXRlQ3VzdG9taXplci5MQU5HVUFHRVNbbGFuZ10pIHRocm93IG5ldyBFcnJvcihgTGFuZ3VhZ2UgXCIke2xhbmd9XCIgbm90IGZvdW5kIWApXG5cbiAgICBjb25zdCB0ID0gVGVtcGxhdGVDdXN0b21pemVyLkxBTkdVQUdFU1tsYW5nXVxuXG4gICAgO1tcbiAgICAgICdwYW5lbF9oZWFkZXInLFxuICAgICAgJ3BhbmVsX3N1Yl9oZWFkZXInLFxuICAgICAgJ3RoZW1pbmdfaGVhZGVyJyxcbiAgICAgICd0aGVtZV9oZWFkZXInLFxuICAgICAgJ3N0eWxlX2xhYmVsJyxcbiAgICAgICdzdHlsZV9zd2l0Y2hfbGlnaHQnLFxuICAgICAgJ3N0eWxlX3N3aXRjaF9kYXJrJyxcbiAgICAgICdsYXlvdXRfaGVhZGVyJyxcbiAgICAgICdsYXlvdXRfbGFiZWwnLFxuICAgICAgJ2xheW91dF9zdGF0aWMnLFxuICAgICAgJ2xheW91dF9vZmZjYW52YXMnLFxuICAgICAgJ2xheW91dF9maXhlZCcsXG4gICAgICAnbGF5b3V0X2ZpeGVkX29mZmNhbnZhcycsXG4gICAgICAnbGF5b3V0X2ZsaXBwZWRfbGFiZWwnLFxuICAgICAgJ2xheW91dF9kZF9vcGVuX2xhYmVsJyxcbiAgICAgICdsYXlvdXRfbmF2YmFyX2xhYmVsJyxcbiAgICAgICdsYXlvdXRfZm9vdGVyX2xhYmVsJyxcbiAgICAgICdtaXNjX2hlYWRlcicsXG4gICAgICAndGhlbWVfbGFiZWwnLFxuICAgICAgJ3J0bF9sYWJlbCdcbiAgICBdLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGNvbnN0IGVsID0gdGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvcihgLnRlbXBsYXRlLWN1c3RvbWl6ZXItdC0ke2tleX1gKVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC1leHByZXNzaW9uc1xuICAgICAgZWwgJiYgKGVsLnRleHRDb250ZW50ID0gdFtrZXldKVxuICAgIH0pXG5cbiAgICBjb25zdCB0dCA9IHQudGhlbWVzIHx8IHt9XG4gICAgY29uc3QgdGhlbWVzID0gdGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnLnRlbXBsYXRlLWN1c3RvbWl6ZXItdGhlbWUtaXRlbScpIHx8IFtdXG5cbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IHRoZW1lcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNvbnN0IHRoZW1lTmFtZSA9IHRoZW1lc1tpXS5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPVwicmFkaW9cIl0nKS52YWx1ZVxuICAgICAgdGhlbWVzW2ldLnF1ZXJ5U2VsZWN0b3IoJy50ZW1wbGF0ZS1jdXN0b21pemVyLXRoZW1lLW5hbWUnKS50ZXh0Q29udGVudCA9XG4gICAgICAgIHR0W3RoZW1lTmFtZV0gfHwgdGhpcy5fZ2V0VGhlbWVCeU5hbWUodGhlbWVOYW1lKS50aXRsZVxuICAgIH1cblxuICAgIHRoaXMuc2V0dGluZ3MubGFuZyA9IGxhbmdcbiAgfVxuXG4gIC8vIFVwZGF0ZSB0aGVtZSBzZXR0aW5ncyBjb250cm9sXG4gIHVwZGF0ZSgpIHtcbiAgICBpZiAodGhpcy5fc3NyKSByZXR1cm5cblxuICAgIGNvbnN0IGhhc05hdmJhciA9ICEhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmxheW91dC1uYXZiYXInKVxuICAgIGNvbnN0IGhhc01lbnUgPSAhIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5sYXlvdXQtbWVudScpXG4gICAgY29uc3QgaGFzSG9yaXpvbnRhbE1lbnUgPSAhIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5sYXlvdXQtbWVudS1ob3Jpem9udGFsLm1lbnUsIC5sYXlvdXQtbWVudS1ob3Jpem9udGFsIC5tZW51JylcbiAgICBjb25zdCBpc0xheW91dDEgPSAhIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5sYXlvdXQtd3JhcHBlci5sYXlvdXQtbmF2YmFyLWZ1bGwnKVxuICAgIGNvbnN0IGhhc0Zvb3RlciA9ICEhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmNvbnRlbnQtZm9vdGVyJylcblxuICAgIGlmICh0aGlzLl9jb250cm9scy5sYXlvdXRNZW51RmxpcHBlZCkge1xuICAgICAgaWYgKCFoYXNNZW51KSB7XG4gICAgICAgIHRoaXMuX2NvbnRyb2xzLmxheW91dE1lbnVGbGlwcGVkLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICB0aGlzLl9jb250cm9scy5sYXlvdXRNZW51RmxpcHBlZC5jbGFzc0xpc3QuYWRkKCdkaXNhYmxlZCcpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9jb250cm9scy5sYXlvdXRNZW51RmxpcHBlZC5yZW1vdmVBdHRyaWJ1dGUoJ2Rpc2FibGVkJylcbiAgICAgICAgdGhpcy5fY29udHJvbHMubGF5b3V0TWVudUZsaXBwZWQuY2xhc3NMaXN0LnJlbW92ZSgnZGlzYWJsZWQnKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9jb250cm9scy5zaG93RHJvcGRvd25PbkhvdmVyKSB7XG4gICAgICBpZiAoaGFzTWVudSkge1xuICAgICAgICB0aGlzLl9jb250cm9scy5zaG93RHJvcGRvd25PbkhvdmVyLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICB0aGlzLl9jb250cm9scy5zaG93RHJvcGRvd25PbkhvdmVyLmNsYXNzTGlzdC5hZGQoJ2Rpc2FibGVkJylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2NvbnRyb2xzLnNob3dEcm9wZG93bk9uSG92ZXIucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlZCcpXG4gICAgICAgIHRoaXMuX2NvbnRyb2xzLnNob3dEcm9wZG93bk9uSG92ZXIuY2xhc3NMaXN0LnJlbW92ZSgnZGlzYWJsZWQnKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9jb250cm9scy5sYXlvdXROYXZiYXJGaXhlZCkge1xuICAgICAgaWYgKCFoYXNOYXZiYXIpIHtcbiAgICAgICAgdGhpcy5fY29udHJvbHMubGF5b3V0TmF2YmFyRml4ZWQuc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpXG4gICAgICAgIHRoaXMuX2NvbnRyb2xzLmxheW91dE5hdmJhckZpeGVkVy5jbGFzc0xpc3QuYWRkKCdkaXNhYmxlZCcpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9jb250cm9scy5sYXlvdXROYXZiYXJGaXhlZC5yZW1vdmVBdHRyaWJ1dGUoJ2Rpc2FibGVkJylcbiAgICAgICAgdGhpcy5fY29udHJvbHMubGF5b3V0TmF2YmFyRml4ZWRXLmNsYXNzTGlzdC5yZW1vdmUoJ2Rpc2FibGVkJylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY29udHJvbHMubGF5b3V0Rm9vdGVyRml4ZWQpIHtcbiAgICAgIGlmICghaGFzRm9vdGVyKSB7XG4gICAgICAgIHRoaXMuX2NvbnRyb2xzLmxheW91dEZvb3RlckZpeGVkLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICB0aGlzLl9jb250cm9scy5sYXlvdXRGb290ZXJGaXhlZFcuY2xhc3NMaXN0LmFkZCgnZGlzYWJsZWQnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fY29udHJvbHMubGF5b3V0Rm9vdGVyRml4ZWQucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlZCcpXG4gICAgICAgIHRoaXMuX2NvbnRyb2xzLmxheW91dEZvb3RlckZpeGVkVy5jbGFzc0xpc3QucmVtb3ZlKCdkaXNhYmxlZCcpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2NvbnRyb2xzLmxheW91dFR5cGUpIHtcbiAgICAgIC8vID8gVW5jb21tZW50IElmIHVzaW5nIG9mZmNhbnZhcyBsYXlvdXRcbiAgICAgIC8qXG4gICAgICBpZiAoIWhhc01lbnUpIHtcbiAgICAgICAgdGhpcy5fY29udHJvbHMubGF5b3V0VHlwZS5xdWVyeVNlbGVjdG9yKCdbdmFsdWU9XCJzdGF0aWMtb2ZmY2FudmFzXCJdJykuc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpXG4gICAgICAgIHRoaXMuX2NvbnRyb2xzLmxheW91dFR5cGUucXVlcnlTZWxlY3RvcignW3ZhbHVlPVwiZml4ZWQtb2ZmY2FudmFzXCJdJykuc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9jb250cm9scy5sYXlvdXRUeXBlLnF1ZXJ5U2VsZWN0b3IoJ1t2YWx1ZT1cInN0YXRpYy1vZmZjYW52YXNcIl0nKS5yZW1vdmVBdHRyaWJ1dGUoJ2Rpc2FibGVkJylcbiAgICAgICAgdGhpcy5fY29udHJvbHMubGF5b3V0VHlwZS5xdWVyeVNlbGVjdG9yKCdbdmFsdWU9XCJmaXhlZC1vZmZjYW52YXNcIl0nKS5yZW1vdmVBdHRyaWJ1dGUoJ2Rpc2FibGVkJylcbiAgICAgIH1cbiAgICAgICovXG5cbiAgICAgIC8vIERpc2FibGUgbWVudSBsYXlvdXRzIG9wdGlvbnMgaWYgbWVudSBpcyBub3QgdGhlcmVcbiAgICAgIGlmICgoIWhhc05hdmJhciAmJiAhaGFzTWVudSkgfHwgKCFoYXNNZW51ICYmICFpc0xheW91dDEpKSB7XG4gICAgICAgIHRoaXMuX2NvbnRyb2xzLmxheW91dFR5cGUuc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9jb250cm9scy5sYXlvdXRUeXBlLnJlbW92ZUF0dHJpYnV0ZSgnZGlzYWJsZWQnKVxuICAgICAgfVxuXG4gICAgICAvLyBUb2RvOiBob3Jpem9udGFsIG1lbnUgZG9lcyBub3Qgc3VwcG9ydCBzdGF0aWMgYW5kIGZpeGVkIG9wdGlvbnMgZm9yIG5vd1xuICAgICAgaWYgKGhhc0hvcml6b250YWxNZW51KSB7XG4gICAgICAgIHRoaXMuX2NvbnRyb2xzLmxheW91dFR5cGUuc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9jb250cm9scy5sYXlvdXRUeXBlLnJlbW92ZUF0dHJpYnV0ZSgnZGlzYWJsZWQnKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIENsZWFyIGxvY2FsIHN0b3JhZ2VcbiAgY2xlYXJMb2NhbFN0b3JhZ2UoKSB7XG4gICAgaWYgKHRoaXMuX3NzcikgcmV0dXJuXG5cbiAgICB0aGlzLl9zZXRTZXR0aW5nKCdUaGVtZScsICcnKVxuICAgIHRoaXMuX3NldFNldHRpbmcoJ1J0bCcsICcnKVxuICAgIHRoaXMuX3NldFNldHRpbmcoJ1N0eWxlJywgJycpXG4gICAgdGhpcy5fc2V0U2V0dGluZygnTWVudUZsaXBwZWQnLCAnJylcbiAgICB0aGlzLl9zZXRTZXR0aW5nKCdGaXhlZE5hdmJhcicsICcnKVxuICAgIHRoaXMuX3NldFNldHRpbmcoJ0ZpeGVkRm9vdGVyJywgJycpXG4gICAgdGhpcy5fc2V0U2V0dGluZygnTGF5b3V0VHlwZScsICcnKVxuICB9XG5cbiAgLy8gQ2xlYXIgbG9jYWwgc3RvcmFnZVxuICBkZXN0cm95KCkge1xuICAgIGlmICh0aGlzLl9zc3IpIHJldHVyblxuXG4gICAgdGhpcy5fY2xlYW51cCgpXG5cbiAgICB0aGlzLnNldHRpbmdzID0gbnVsbFxuICAgIHRoaXMuY29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5jb250YWluZXIpXG4gICAgdGhpcy5jb250YWluZXIgPSBudWxsXG4gIH1cblxuICBfbG9hZFNldHRpbmdzKCkge1xuICAgIC8vIEdldCBzZXR0aW5nc1xuXG4gICAgLy8gY29uc3QgY2wgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0O1xuICAgIGNvbnN0IHJ0bCA9IHRoaXMuX2dldFNldHRpbmcoJ1J0bCcpXG4gICAgY29uc3Qgc3R5bGUgPSB0aGlzLl9nZXRTZXR0aW5nKCdTdHlsZScpXG4gICAgY29uc3QgY29sbGFwc2VkTWVudSA9IHRoaXMuX2dldFNldHRpbmcoJ0xheW91dENvbGxhcHNlZCcpIC8vIFZhbHVlIHdpbGwgYmUgc2V0IGZyb20gbWFpbi5qc1xuICAgIGNvbnN0IGZsaXBwZWRNZW51ID0gdGhpcy5fZ2V0U2V0dGluZygnTGF5b3V0TWVudUZsaXBwZWQnKVxuICAgIGNvbnN0IGRyb3Bkb3duT25Ib3ZlciA9IHRoaXMuX2dldFNldHRpbmcoJ1Nob3dEcm9wZG93bk9uSG92ZXInKSAvLyBWYWx1ZSB3aWxsIGJlIHNldCBmcm9tIG1haW4uanNcbiAgICBjb25zdCBmaXhlZE5hdmJhciA9IHRoaXMuX2dldFNldHRpbmcoJ0ZpeGVkTmF2YmFyJylcbiAgICBjb25zdCBmaXhlZEZvb3RlciA9IHRoaXMuX2dldFNldHRpbmcoJ0ZpeGVkRm9vdGVyJylcbiAgICBjb25zdCBsVHlwZSA9IHRoaXMuX2dldFNldHRpbmcoJ0xheW91dFR5cGUnKVxuICAgIGxldCB0eXBlXG5cbiAgICBpZiAobFR5cGUgIT09ICcnICYmIFsnc3RhdGljJywgJ3N0YXRpYy1vZmZjYW52YXMnLCAnZml4ZWQnLCAnZml4ZWQtb2ZmY2FudmFzJ10uaW5kZXhPZihsVHlwZSkgIT09IC0xKSB7XG4gICAgICB0eXBlID0gbFR5cGVcbiAgICB9IGVsc2Uge1xuICAgICAgdHlwZSA9IHRoaXMuc2V0dGluZ3MuZGVmYXVsdExheW91dFR5cGVcbiAgICB9XG4gICAgdGhpcy5zZXR0aW5ncy5sYXlvdXRUeXBlID0gdHlwZVxuXG4gICAgLy8gISBTZXQgc2V0dGluZ3MgYnkgZm9sbG93aW5nIHByaW9yaXR5OiBMb2NhbCBTdG9yYWdlLCBUaGVtZSBDb25maWcsIEhUTUwgQ2xhc3Nlc1xuICAgIHRoaXMuc2V0dGluZ3MucnRsID0gcnRsICE9PSAnJyA/IHJ0bCA9PT0gJ3RydWUnIDogdGhpcy5zZXR0aW5ncy5kZWZhdWx0VGV4dERpclxuXG4gICAgdGhpcy5zZXR0aW5ncy5zdHlsZSA9IHRoaXMuc2V0dGluZ3Muc3R5bGVzLmluZGV4T2Yoc3R5bGUpICE9PSAtMSA/IHN0eWxlIDogdGhpcy5zZXR0aW5ncy5kZWZhdWx0U3R5bGVcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5zdHlsZXMuaW5kZXhPZih0aGlzLnNldHRpbmdzLnN0eWxlKSA9PT0gLTEpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItZGVzdHJ1Y3R1cmluZ1xuICAgICAgdGhpcy5zZXR0aW5ncy5zdHlsZSA9IHRoaXMuc2V0dGluZ3Muc3R5bGVzWzBdXG4gICAgfVxuXG4gICAgdGhpcy5zZXR0aW5ncy5sYXlvdXRNZW51ID0gY29sbGFwc2VkTWVudSAhPT0gJycgPyBjb2xsYXBzZWRNZW51ID09PSAndHJ1ZScgOiB0aGlzLnNldHRpbmdzLmRlZmF1bHRNZW51Q29sbGFwc2VkXG4gICAgdGhpcy5zZXR0aW5ncy5sYXlvdXRNZW51RmxpcHBlZCA9IGZsaXBwZWRNZW51ICE9PSAnJyA/IGZsaXBwZWRNZW51ID09PSAndHJ1ZScgOiB0aGlzLnNldHRpbmdzLmRlZmF1bHRNZW51RmxpcHBlZFxuICAgIHRoaXMuc2V0dGluZ3Muc2hvd0Ryb3Bkb3duT25Ib3ZlciA9XG4gICAgICBkcm9wZG93bk9uSG92ZXIgIT09ICcnID8gZHJvcGRvd25PbkhvdmVyID09PSAndHJ1ZScgOiB0aGlzLnNldHRpbmdzLmRlZmF1bHRTaG93RHJvcGRvd25PbkhvdmVyXG4gICAgdGhpcy5zZXR0aW5ncy5sYXlvdXROYXZiYXJGaXhlZCA9IGZpeGVkTmF2YmFyICE9PSAnJyA/IGZpeGVkTmF2YmFyID09PSAndHJ1ZScgOiB0aGlzLnNldHRpbmdzLmRlZmF1bHROYXZiYXJGaXhlZFxuICAgIHRoaXMuc2V0dGluZ3MubGF5b3V0Rm9vdGVyRml4ZWQgPSBmaXhlZEZvb3RlciAhPT0gJycgPyBmaXhlZEZvb3RlciA9PT0gJ3RydWUnIDogdGhpcy5zZXR0aW5ncy5kZWZhdWx0Rm9vdGVyRml4ZWRcblxuICAgIHRoaXMuc2V0dGluZ3MudGhlbWUgPSB0aGlzLl9nZXRUaGVtZUJ5TmFtZSh0aGlzLl9nZXRTZXR0aW5nKCdUaGVtZScpLCB0cnVlKVxuXG4gICAgLy8gRmlsdGVyIG9wdGlvbnMgZGVwZW5kaW5nIG9uIGF2YWlsYWJsZSBjb250cm9sc1xuICAgIGlmICghdGhpcy5faGFzQ29udHJvbHMoJ3J0bCcpKSB0aGlzLnNldHRpbmdzLnJ0bCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RpcicpID09PSAncnRsJ1xuICAgIGlmICghdGhpcy5faGFzQ29udHJvbHMoJ3N0eWxlJykpIHRoaXMuc2V0dGluZ3Muc3R5bGUgPSBjbC5jb250YWlucygnZGFyay1zdHlsZScpID8gJ2RhcmsnIDogJ2xpZ2h0J1xuICAgIGlmICghdGhpcy5faGFzQ29udHJvbHMoJ2xheW91dFR5cGUnKSkgdGhpcy5zZXR0aW5ncy5sYXlvdXRUeXBlID0gbnVsbFxuICAgIGlmICghdGhpcy5faGFzQ29udHJvbHMoJ2xheW91dE1lbnVGbGlwcGVkJykpIHRoaXMuc2V0dGluZ3MubGF5b3V0TWVudUZsaXBwZWQgPSBudWxsXG4gICAgaWYgKCF0aGlzLl9oYXNDb250cm9scygnc2hvd0Ryb3Bkb3duT25Ib3ZlcicpKSB0aGlzLnNldHRpbmdzLnNob3dEcm9wZG93bk9uSG92ZXIgPSBudWxsXG4gICAgaWYgKCF0aGlzLl9oYXNDb250cm9scygnbGF5b3V0TmF2YmFyRml4ZWQnKSkgdGhpcy5zZXR0aW5ncy5sYXlvdXROYXZiYXJGaXhlZCA9IG51bGxcbiAgICBpZiAoIXRoaXMuX2hhc0NvbnRyb2xzKCdsYXlvdXRGb290ZXJGaXhlZCcpKSB0aGlzLnNldHRpbmdzLmxheW91dEZvb3RlckZpeGVkID0gbnVsbFxuICAgIGlmICghdGhpcy5faGFzQ29udHJvbHMoJ3RoZW1lcycpKSB0aGlzLnNldHRpbmdzLnRoZW1lID0gbnVsbFxuICB9XG5cbiAgLy8gU2V0dXAgdGhlbWUgc2V0dGluZ3MgY29udHJvbHMgYW5kIGV2ZW50c1xuICBfc2V0dXAoX2NvbnRhaW5lciA9IGRvY3VtZW50KSB7XG4gICAgdGhpcy5fY2xlYW51cCgpXG4gICAgdGhpcy5jb250YWluZXIgPSB0aGlzLl9nZXRFbGVtZW50RnJvbVN0cmluZyhjdXN0b21pemVyTWFya3VwKVxuXG4gICAgLy8gQ3VzdG9taXplciB2aXNpYmlsaXR5IGNvbmRpdGlvblxuICAgIC8vXG4gICAgY29uc3QgY3VzdG9taXplclcgPSB0aGlzLmNvbnRhaW5lclxuICAgIGlmICh0aGlzLnNldHRpbmdzLmRpc3BsYXlDdXN0b21pemVyKSBjdXN0b21pemVyVy5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ3Zpc2liaWxpdHk6IHZpc2libGUnKVxuICAgIGVsc2UgY3VzdG9taXplclcuc2V0QXR0cmlidXRlKCdzdHlsZScsICd2aXNpYmlsaXR5OiBoaWRkZW4nKVxuXG4gICAgLy8gT3BlbiBidG5cbiAgICAvL1xuICAgIGNvbnN0IG9wZW5CdG4gPSB0aGlzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcudGVtcGxhdGUtY3VzdG9taXplci1vcGVuLWJ0bicpXG4gICAgY29uc3Qgb3BlbkJ0bkNiID0gKCkgPT4ge1xuICAgICAgdGhpcy5jb250YWluZXIuY2xhc3NMaXN0LmFkZCgndGVtcGxhdGUtY3VzdG9taXplci1vcGVuJylcbiAgICAgIHRoaXMudXBkYXRlKClcblxuICAgICAgaWYgKHRoaXMuX3VwZGF0ZUludGVydmFsKSBjbGVhckludGVydmFsKHRoaXMuX3VwZGF0ZUludGVydmFsKVxuICAgICAgdGhpcy5fdXBkYXRlSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlKClcbiAgICAgIH0sIDEwMDApXG4gICAgfVxuICAgIG9wZW5CdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBvcGVuQnRuQ2IpXG4gICAgdGhpcy5fbGlzdGVuZXJzLnB1c2goW29wZW5CdG4sICdjbGljaycsIG9wZW5CdG5DYl0pXG5cbiAgICAvLyBDbG9zZSBidG5cbiAgICAvL1xuXG4gICAgY29uc3QgY2xvc2VCdG4gPSB0aGlzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcudGVtcGxhdGUtY3VzdG9taXplci1jbG9zZS1idG4nKVxuICAgIGNvbnN0IGNsb3NlQnRuQ2IgPSAoKSA9PiB7XG4gICAgICB0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCd0ZW1wbGF0ZS1jdXN0b21pemVyLW9wZW4nKVxuXG4gICAgICBpZiAodGhpcy5fdXBkYXRlSW50ZXJ2YWwpIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl91cGRhdGVJbnRlcnZhbClcbiAgICAgICAgdGhpcy5fdXBkYXRlSW50ZXJ2YWwgPSBudWxsXG4gICAgICB9XG4gICAgfVxuICAgIGNsb3NlQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2xvc2VCdG5DYilcbiAgICB0aGlzLl9saXN0ZW5lcnMucHVzaChbY2xvc2VCdG4sICdjbGljaycsIGNsb3NlQnRuQ2JdKVxuXG4gICAgLy8gUlRMXG4gICAgLy9cblxuICAgIGNvbnN0IHJ0bFcgPSB0aGlzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcudGVtcGxhdGUtY3VzdG9taXplci1ydGwnKVxuICAgIC8vID8gSGlkZSBSVEwgY29udHJvbCBpbiBmb2xsb3dpbmcgMiBjYXNlXG4gICAgaWYgKCF0aGlzLl9oYXNDb250cm9scygncnRsJykgfHwgIXJ0bFN1cHBvcnQpIHtcbiAgICAgIHJ0bFcucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChydGxXKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBydGwgPSBydGxXLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JylcblxuICAgICAgaWYgKHRoaXMuc2V0dGluZ3MucnRsKSBydGwuc2V0QXR0cmlidXRlKCdjaGVja2VkJywgJ2NoZWNrZWQnKVxuXG4gICAgICBjb25zdCBydGxDYiA9IGUgPT4ge1xuICAgICAgICB0aGlzLl9sb2FkaW5nU3RhdGUodHJ1ZSlcbiAgICAgICAgdGhpcy5zZXRSdGwoZS50YXJnZXQuY2hlY2tlZClcbiAgICAgIH1cblxuICAgICAgcnRsLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHJ0bENiKVxuICAgICAgdGhpcy5fbGlzdGVuZXJzLnB1c2goW3J0bCwgJ2NoYW5nZScsIHJ0bENiXSlcbiAgICB9XG5cbiAgICAvLyBTdHlsZVxuXG4gICAgLy9cblxuICAgIGNvbnN0IHN0eWxlVyA9IHRoaXMuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJy50ZW1wbGF0ZS1jdXN0b21pemVyLXN0eWxlJylcblxuICAgIGlmICghdGhpcy5faGFzQ29udHJvbHMoJ3N0eWxlJykpIHtcbiAgICAgIHN0eWxlVy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlVylcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc3R5bGUgPSBzdHlsZVcucXVlcnlTZWxlY3RvcignaW5wdXQnKVxuXG4gICAgICBpZiAodGhpcy5zZXR0aW5ncy5zdHlsZSA9PT0gJ2RhcmsnKSBzdHlsZS5zZXRBdHRyaWJ1dGUoJ2NoZWNrZWQnLCAnY2hlY2tlZCcpXG5cbiAgICAgIGNvbnN0IHN0eWxlQ2IgPSBlID0+IHtcbiAgICAgICAgdGhpcy5fbG9hZGluZ1N0YXRlKHRydWUpXG4gICAgICAgIGlmIChlLnRhcmdldC5jaGVja2VkKSB7XG4gICAgICAgICAgdGhpcy5zZXRTdHlsZSgnZGFyaycpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZXRTdHlsZSgnbGlnaHQnKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHN0eWxlLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHN0eWxlQ2IpXG4gICAgICB0aGlzLl9saXN0ZW5lcnMucHVzaChbc3R5bGUsICdjaGFuZ2UnLCBzdHlsZUNiXSlcbiAgICB9XG5cbiAgICAvLyBUaGVtZVxuXG4gICAgY29uc3QgdGhlbWVzVyA9IHRoaXMuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJy50ZW1wbGF0ZS1jdXN0b21pemVyLXRoZW1lcycpXG5cbiAgICBpZiAoIXRoaXMuX2hhc0NvbnRyb2xzKCd0aGVtZXMnKSkge1xuICAgICAgdGhlbWVzVy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoZW1lc1cpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRoZW1lc1dJbm5lciA9IHRoZW1lc1cucXVlcnlTZWxlY3RvcignLnRlbXBsYXRlLWN1c3RvbWl6ZXItdGhlbWVzLW9wdGlvbnMnKVxuICAgICAgdGhpcy5zZXR0aW5ncy5hdmFpbGFibGVUaGVtZXMuZm9yRWFjaCh0aGVtZSA9PiB7XG4gICAgICAgIGNvbnN0IHRoZW1lRWwgPSB0aGlzLl9nZXRFbGVtZW50RnJvbVN0cmluZyhcbiAgICAgICAgICBgPGRpdiBjbGFzcz1cImNvbC0xMlwiPjxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+PGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJ0aGVtZVJhZGlvc1wiIGlkPVwidGhlbWVSYWRpb3Mke3RoZW1lLm5hbWV9XCIgdmFsdWU9XCIke3RoZW1lLm5hbWV9XCI+PGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cInRoZW1lUmFkaW9zJHt0aGVtZS5uYW1lfVwiPiR7dGhlbWUudGl0bGV9PC9sYWJlbD48L2Rpdj48L2Rpdj5gXG4gICAgICAgIClcbiAgICAgICAgdGhlbWVzV0lubmVyLmFwcGVuZENoaWxkKHRoZW1lRWwpXG4gICAgICB9KVxuXG4gICAgICB0aGVtZXNXSW5uZXIucXVlcnlTZWxlY3RvcihgaW5wdXRbdmFsdWU9XCIke3RoaXMuc2V0dGluZ3MudGhlbWUubmFtZX1cIl1gKS5zZXRBdHRyaWJ1dGUoJ2NoZWNrZWQnLCAnY2hlY2tlZCcpXG5cbiAgICAgIGNvbnN0IHRoZW1lQ2IgPSBlID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2xvYWRpbmcpIHJldHVyblxuXG4gICAgICAgIHRoaXMuX2xvYWRpbmcgPSB0cnVlXG4gICAgICAgIHRoaXMuX2xvYWRpbmdTdGF0ZSh0cnVlLCB0cnVlKVxuXG4gICAgICAgIHRoaXMuc2V0VGhlbWUoZS50YXJnZXQudmFsdWUsIHRydWUsICgpID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICB0aGlzLl9sb2FkaW5nU3RhdGUoZmFsc2UsIHRydWUpXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHRoZW1lc1dJbm5lci5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB0aGVtZUNiKVxuICAgICAgdGhpcy5fbGlzdGVuZXJzLnB1c2goW3RoZW1lc1dJbm5lciwgJ2NoYW5nZScsIHRoZW1lQ2JdKVxuICAgIH1cblxuICAgIC8vIExheW91dCB3cmFwcGVyXG4gICAgLy9cblxuICAgIGNvbnN0IGxheW91dFcgPSB0aGlzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcudGVtcGxhdGUtY3VzdG9taXplci1sYXlvdXQnKVxuXG4gICAgaWYgKFxuICAgICAgIXRoaXMuX2hhc0NvbnRyb2xzKCdsYXlvdXRUeXBlIGxheW91dE5hdmJhckZpeGVkIGxheW91dEZvb3RlckZpeGVkIGxheW91dE1lbnVGbGlwcGVkIHNob3dEcm9wZG93bk9uSG92ZXInLCB0cnVlKVxuICAgICkge1xuICAgICAgbGF5b3V0Vy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGxheW91dFcpXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFBvc2l0aW9uXG4gICAgICAvL1xuXG4gICAgICBjb25zdCBsYXlvdXRUeXBlVyA9IHRoaXMuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJy50ZW1wbGF0ZS1jdXN0b21pemVyLWxheW91dFR5cGUnKVxuXG4gICAgICBpZiAoIXRoaXMuX2hhc0NvbnRyb2xzKCdsYXlvdXRUeXBlJykpIHtcbiAgICAgICAgbGF5b3V0VHlwZVcucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChsYXlvdXRUeXBlVylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2NvbnRyb2xzLmxheW91dFR5cGUgPSBsYXlvdXRUeXBlVy5xdWVyeVNlbGVjdG9yKCcudGVtcGxhdGUtY3VzdG9taXplci1sYXlvdXRzLW9wdGlvbnMnKVxuXG4gICAgICAgIC8vIHRoaXMuX2NvbnRyb2xzLmxheW91dFR5cGUudmFsdWUgPSB0aGlzLnNldHRpbmdzLmxheW91dFR5cGVcbiAgICAgICAgdGhpcy5fY29udHJvbHMubGF5b3V0VHlwZVxuICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKGBpbnB1dFt2YWx1ZT1cIiR7dGhpcy5zZXR0aW5ncy5sYXlvdXRUeXBlfVwiXWApXG4gICAgICAgICAgLnNldEF0dHJpYnV0ZSgnY2hlY2tlZCcsICdjaGVja2VkJylcblxuICAgICAgICBjb25zdCBsYXlvdXRUeXBlQ2IgPSBlID0+IHRoaXMuc2V0TGF5b3V0VHlwZShlLnRhcmdldC52YWx1ZSlcbiAgICAgICAgdGhpcy5fY29udHJvbHMubGF5b3V0VHlwZS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBsYXlvdXRUeXBlQ2IpXG4gICAgICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKFt0aGlzLl9jb250cm9scy5sYXlvdXRUeXBlLCAnY2hhbmdlJywgbGF5b3V0VHlwZUNiXSlcbiAgICAgIH1cblxuICAgICAgLy8gTWVudSBmbGlwcGVkXG4gICAgICAvLyA/IFVuY29tbWVudCBJZiBuZWVkZWRcblxuICAgICAgLyogdGhpcy5fY29udHJvbHMubGF5b3V0TWVudUZsaXBwZWQgPSB0aGlzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcudGVtcGxhdGUtY3VzdG9taXplci1sYXlvdXRNZW51RmxpcHBlZCcpXG5cbiAgICAgIGlmICghdGhpcy5faGFzQ29udHJvbHMoJ2xheW91dE1lbnVGbGlwcGVkJykpIHtcbiAgICAgICAgdGhpcy5fY29udHJvbHMubGF5b3V0TWVudUZsaXBwZWQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9jb250cm9scy5sYXlvdXRNZW51RmxpcHBlZClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2NvbnRyb2xzLmxheW91dE1lbnVGbGlwcGVkID0gdGhpcy5fY29udHJvbHMubGF5b3V0TWVudUZsaXBwZWQucXVlcnlTZWxlY3RvcignaW5wdXQnKVxuXG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzLmxheW91dE1lbnVGbGlwcGVkKSB0aGlzLl9jb250cm9scy5sYXlvdXRNZW51RmxpcHBlZC5zZXRBdHRyaWJ1dGUoJ2NoZWNrZWQnLCAnY2hlY2tlZCcpXG5cbiAgICAgICAgY29uc3QgbGF5b3V0TWVudUZsaXBwZWQgPSBlID0+IHRoaXMuc2V0TGF5b3V0TWVudUZsaXBwZWQoZS50YXJnZXQuY2hlY2tlZClcbiAgICAgICAgdGhpcy5fY29udHJvbHMubGF5b3V0TWVudUZsaXBwZWQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGF5b3V0TWVudUZsaXBwZWQpXG4gICAgICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKFt0aGlzLl9jb250cm9scy5sYXlvdXRNZW51RmxpcHBlZCwgJ2NoYW5nZScsIGxheW91dE1lbnVGbGlwcGVkXSlcbiAgICAgIH0gKi9cblxuICAgICAgLy8gTWVudSBvcGVuXG4gICAgICAvL1xuXG4gICAgICB0aGlzLl9jb250cm9scy5zaG93RHJvcGRvd25PbkhvdmVyID0gdGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvcignLnRlbXBsYXRlLWN1c3RvbWl6ZXItc2hvd0Ryb3Bkb3duT25Ib3ZlcicpXG5cbiAgICAgIGlmICghdGhpcy5faGFzQ29udHJvbHMoJ3Nob3dEcm9wZG93bk9uSG92ZXInKSkge1xuICAgICAgICB0aGlzLl9jb250cm9scy5zaG93RHJvcGRvd25PbkhvdmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fY29udHJvbHMuc2hvd0Ryb3Bkb3duT25Ib3ZlcilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2NvbnRyb2xzLnNob3dEcm9wZG93bk9uSG92ZXIgPSB0aGlzLl9jb250cm9scy5zaG93RHJvcGRvd25PbkhvdmVyLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JylcblxuICAgICAgICBpZiAodGhpcy5zZXR0aW5ncy5zaG93RHJvcGRvd25PbkhvdmVyKSB0aGlzLl9jb250cm9scy5zaG93RHJvcGRvd25PbkhvdmVyLnNldEF0dHJpYnV0ZSgnY2hlY2tlZCcsICdjaGVja2VkJylcblxuICAgICAgICBjb25zdCBzaG93RHJvcGRvd25PbkhvdmVyID0gZSA9PiB0aGlzLnNldERyb3Bkb3duT25Ib3ZlcihlLnRhcmdldC5jaGVja2VkKVxuICAgICAgICB0aGlzLl9jb250cm9scy5zaG93RHJvcGRvd25PbkhvdmVyLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHNob3dEcm9wZG93bk9uSG92ZXIpXG4gICAgICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKFt0aGlzLl9jb250cm9scy5zaG93RHJvcGRvd25PbkhvdmVyLCAnY2hhbmdlJywgc2hvd0Ryb3Bkb3duT25Ib3Zlcl0pXG4gICAgICB9XG5cbiAgICAgIC8vIE5hdmJhclxuICAgICAgLy9cblxuICAgICAgdGhpcy5fY29udHJvbHMubGF5b3V0TmF2YmFyRml4ZWRXID0gdGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvcignLnRlbXBsYXRlLWN1c3RvbWl6ZXItbGF5b3V0TmF2YmFyRml4ZWQnKVxuXG4gICAgICBpZiAoIXRoaXMuX2hhc0NvbnRyb2xzKCdsYXlvdXROYXZiYXJGaXhlZCcpKSB7XG4gICAgICAgIHRoaXMuX2NvbnRyb2xzLmxheW91dE5hdmJhckZpeGVkVy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuX2NvbnRyb2xzLmxheW91dE5hdmJhckZpeGVkVylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2NvbnRyb2xzLmxheW91dE5hdmJhckZpeGVkID0gdGhpcy5fY29udHJvbHMubGF5b3V0TmF2YmFyRml4ZWRXLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JylcblxuICAgICAgICBpZiAodGhpcy5zZXR0aW5ncy5sYXlvdXROYXZiYXJGaXhlZCkgdGhpcy5fY29udHJvbHMubGF5b3V0TmF2YmFyRml4ZWQuc2V0QXR0cmlidXRlKCdjaGVja2VkJywgJ2NoZWNrZWQnKVxuXG4gICAgICAgIGNvbnN0IGxheW91dE5hdmJhckZpeGVkQ2IgPSBlID0+IHRoaXMuc2V0TGF5b3V0TmF2YmFyRml4ZWQoZS50YXJnZXQuY2hlY2tlZClcbiAgICAgICAgdGhpcy5fY29udHJvbHMubGF5b3V0TmF2YmFyRml4ZWQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGF5b3V0TmF2YmFyRml4ZWRDYilcbiAgICAgICAgdGhpcy5fbGlzdGVuZXJzLnB1c2goW3RoaXMuX2NvbnRyb2xzLmxheW91dE5hdmJhckZpeGVkLCAnY2hhbmdlJywgbGF5b3V0TmF2YmFyRml4ZWRDYl0pXG4gICAgICB9XG5cbiAgICAgIC8vIEZvb3RlclxuICAgICAgLy9cblxuICAgICAgdGhpcy5fY29udHJvbHMubGF5b3V0Rm9vdGVyRml4ZWRXID0gdGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvcignLnRlbXBsYXRlLWN1c3RvbWl6ZXItbGF5b3V0Rm9vdGVyRml4ZWQnKVxuXG4gICAgICBpZiAoIXRoaXMuX2hhc0NvbnRyb2xzKCdsYXlvdXRGb290ZXJGaXhlZCcpKSB7XG4gICAgICAgIHRoaXMuX2NvbnRyb2xzLmxheW91dEZvb3RlckZpeGVkVy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuX2NvbnRyb2xzLmxheW91dEZvb3RlckZpeGVkVylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2NvbnRyb2xzLmxheW91dEZvb3RlckZpeGVkID0gdGhpcy5fY29udHJvbHMubGF5b3V0Rm9vdGVyRml4ZWRXLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JylcblxuICAgICAgICBpZiAodGhpcy5zZXR0aW5ncy5sYXlvdXRGb290ZXJGaXhlZCkgdGhpcy5fY29udHJvbHMubGF5b3V0Rm9vdGVyRml4ZWQuc2V0QXR0cmlidXRlKCdjaGVja2VkJywgJ2NoZWNrZWQnKVxuXG4gICAgICAgIGNvbnN0IGxheW91dEZvb3RlckZpeGVkQ2IgPSBlID0+IHRoaXMuc2V0TGF5b3V0Rm9vdGVyRml4ZWQoZS50YXJnZXQuY2hlY2tlZClcbiAgICAgICAgdGhpcy5fY29udHJvbHMubGF5b3V0Rm9vdGVyRml4ZWQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGF5b3V0Rm9vdGVyRml4ZWRDYilcbiAgICAgICAgdGhpcy5fbGlzdGVuZXJzLnB1c2goW3RoaXMuX2NvbnRyb2xzLmxheW91dEZvb3RlckZpeGVkLCAnY2hhbmdlJywgbGF5b3V0Rm9vdGVyRml4ZWRDYl0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2V0IGxhbmd1YWdlXG4gICAgdGhpcy5zZXRMYW5nKHRoaXMuc2V0dGluZ3MubGFuZywgdHJ1ZSlcblxuICAgIC8vIEFwcGVuZCBjb250YWluZXJcbiAgICBpZiAoX2NvbnRhaW5lciA9PT0gZG9jdW1lbnQpIHtcbiAgICAgIGlmIChfY29udGFpbmVyLmJvZHkpIHtcbiAgICAgICAgX2NvbnRhaW5lci5ib2R5LmFwcGVuZENoaWxkKHRoaXMuY29udGFpbmVyKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCAoKSA9PiBfY29udGFpbmVyLmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5jb250YWluZXIpKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBfY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuY29udGFpbmVyKVxuICAgIH1cbiAgfVxuXG4gIF9pbml0RGlyZWN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9oYXNDb250cm9scygncnRsJykpIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RpcicsIHRoaXMuc2V0dGluZ3MucnRsID8gJ3J0bCcgOiAnbHRyJylcbiAgfVxuXG4gIC8vIEluaXQgdGVtcGxhdGUgc3R5bGVzXG4gIF9pbml0U3R5bGUoKSB7XG4gICAgaWYgKCF0aGlzLl9oYXNDb250cm9scygnc3R5bGUnKSkgcmV0dXJuXG5cbiAgICBjb25zdCB7IHN0eWxlIH0gPSB0aGlzLnNldHRpbmdzXG5cbiAgICB0aGlzLl9pbnNlcnRTdHlsZXNoZWV0KFxuICAgICAgJ3RlbXBsYXRlLWN1c3RvbWl6ZXItY29yZS1jc3MnLFxuICAgICAgdGhpcy5wYXRoUmVzb2x2ZXIoXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuY3NzUGF0aCArXG4gICAgICAgICAgdGhpcy5zZXR0aW5ncy5jc3NGaWxlbmFtZVBhdHRlcm4ucmVwbGFjZSgnJW5hbWUlJywgYGNvcmUke3N0eWxlICE9PSAnbGlnaHQnID8gYC0ke3N0eWxlfWAgOiAnJ31gKVxuICAgICAgKVxuICAgIClcbiAgICAvLyA/IFVuY29tbWVudCBpZiBuZWVkZWRcbiAgICAvKlxuICAgIHRoaXMuX2luc2VydFN0eWxlc2hlZXQoXG4gICAgICAndGVtcGxhdGUtY3VzdG9taXplci1ib290c3RyYXAtY3NzJyxcbiAgICAgIHRoaXMucGF0aFJlc29sdmVyKFxuICAgICAgICB0aGlzLnNldHRpbmdzLmNzc1BhdGggK1xuICAgICAgICAgIHRoaXMuc2V0dGluZ3MuY3NzRmlsZW5hbWVQYXR0ZXJuLnJlcGxhY2UoJyVuYW1lJScsIGBib290c3RyYXAke3N0eWxlICE9PSAnbGlnaHQnID8gYC0ke3N0eWxlfWAgOiAnJ31gKVxuICAgICAgKVxuICAgIClcbiAgICB0aGlzLl9pbnNlcnRTdHlsZXNoZWV0KFxuICAgICAgJ3RlbXBsYXRlLWN1c3RvbWl6ZXItYnNleHRlbmRlZC1jc3MnLFxuICAgICAgdGhpcy5wYXRoUmVzb2x2ZXIoXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuY3NzUGF0aCArXG4gICAgICAgICAgdGhpcy5zZXR0aW5ncy5jc3NGaWxlbmFtZVBhdHRlcm4ucmVwbGFjZShcbiAgICAgICAgICAgICclbmFtZSUnLFxuICAgICAgICAgICAgYGJvb3RzdHJhcC1leHRlbmRlZCR7c3R5bGUgIT09ICdsaWdodCcgPyBgLSR7c3R5bGV9YCA6ICcnfWBcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICAgIHRoaXMuX2luc2VydFN0eWxlc2hlZXQoXG4gICAgICAndGVtcGxhdGUtY3VzdG9taXplci1jb21wb25lbnRzLWNzcycsXG4gICAgICB0aGlzLnBhdGhSZXNvbHZlcihcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5jc3NQYXRoICtcbiAgICAgICAgICB0aGlzLnNldHRpbmdzLmNzc0ZpbGVuYW1lUGF0dGVybi5yZXBsYWNlKCclbmFtZSUnLCBgY29tcG9uZW50cyR7c3R5bGUgIT09ICdsaWdodCcgPyBgLSR7c3R5bGV9YCA6ICcnfWApXG4gICAgICApXG4gICAgKVxuICAgIHRoaXMuX2luc2VydFN0eWxlc2hlZXQoXG4gICAgICAndGVtcGxhdGUtY3VzdG9taXplci1jb2xvcnMtY3NzJyxcbiAgICAgIHRoaXMucGF0aFJlc29sdmVyKFxuICAgICAgICB0aGlzLnNldHRpbmdzLmNzc1BhdGggK1xuICAgICAgICAgIHRoaXMuc2V0dGluZ3MuY3NzRmlsZW5hbWVQYXR0ZXJuLnJlcGxhY2UoJyVuYW1lJScsIGBjb2xvcnMke3N0eWxlICE9PSAnbGlnaHQnID8gYC0ke3N0eWxlfWAgOiAnJ31gKVxuICAgICAgKVxuICAgIClcbiAgICAqL1xuXG4gICAgY29uc3QgY2xhc3Nlc1RvUmVtb3ZlID0gc3R5bGUgPT09ICdsaWdodCcgPyBbJ2Rhcmstc3R5bGUnXSA6IFsnbGlnaHQtc3R5bGUnXVxuICAgIGNsYXNzZXNUb1JlbW92ZS5mb3JFYWNoKGNscyA9PiB7XG4gICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShjbHMpXG4gICAgfSlcblxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKGAke3N0eWxlfS1zdHlsZWApXG4gIH1cblxuICAvLyBJbml0IHRoZW1lIHN0eWxlXG4gIF9pbml0VGhlbWUoKSB7XG4gICAgaWYgKHRoaXMuX2hhc0NvbnRyb2xzKCd0aGVtZXMnKSkge1xuICAgICAgdGhpcy5faW5zZXJ0U3R5bGVzaGVldChcbiAgICAgICAgJ3RlbXBsYXRlLWN1c3RvbWl6ZXItdGhlbWUtY3NzJyxcbiAgICAgICAgdGhpcy5wYXRoUmVzb2x2ZXIoXG4gICAgICAgICAgdGhpcy5zZXR0aW5ncy50aGVtZXNQYXRoICtcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MuY3NzRmlsZW5hbWVQYXR0ZXJuLnJlcGxhY2UoXG4gICAgICAgICAgICAgICclbmFtZSUnLFxuICAgICAgICAgICAgICB0aGlzLnNldHRpbmdzLnRoZW1lLm5hbWUgKyAodGhpcy5zZXR0aW5ncy5zdHlsZSAhPT0gJ2xpZ2h0JyA/IGAtJHt0aGlzLnNldHRpbmdzLnN0eWxlfWAgOiAnJylcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIF9pbnNlcnRTdHlsZXNoZWV0KGNsYXNzTmFtZSwgaHJlZikge1xuICAgIGNvbnN0IGN1ckxpbmsgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuJHtjbGFzc05hbWV9YClcblxuICAgIGlmICh0eXBlb2YgZG9jdW1lbnQuZG9jdW1lbnRNb2RlID09PSAnbnVtYmVyJyAmJiBkb2N1bWVudC5kb2N1bWVudE1vZGUgPCAxMSkge1xuICAgICAgaWYgKCFjdXJMaW5rKSByZXR1cm5cbiAgICAgIGlmIChocmVmID09PSBjdXJMaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpKSByZXR1cm5cblxuICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKVxuXG4gICAgICBsaW5rLnNldEF0dHJpYnV0ZSgncmVsJywgJ3N0eWxlc2hlZXQnKVxuICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAndGV4dC9jc3MnKVxuICAgICAgbGluay5jbGFzc05hbWUgPSBjbGFzc05hbWVcbiAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZilcblxuICAgICAgY3VyTGluay5wYXJlbnROb2RlLmluc2VydEJlZm9yZShsaW5rLCBjdXJMaW5rLm5leHRTaWJsaW5nKVxuICAgIH0gZWxzZSB7XG4gICAgICBkb2N1bWVudC53cml0ZShgPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIHR5cGU9XCJ0ZXh0L2Nzc1wiIGhyZWY9XCIke2hyZWZ9XCIgY2xhc3M9XCIke2NsYXNzTmFtZX1cIj5gKVxuICAgIH1cblxuICAgIGN1ckxpbmsucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjdXJMaW5rKVxuICB9XG5cbiAgX2xvYWRTdHlsZXNoZWV0cyhzdHlsZXNoZWV0cywgY2IpIHtcbiAgICBjb25zdCBwYXRocyA9IE9iamVjdC5rZXlzKHN0eWxlc2hlZXRzKVxuICAgIGNvbnN0IGNvdW50ID0gcGF0aHMubGVuZ3RoXG4gICAgbGV0IGxvYWRlZCA9IDBcblxuICAgIGZ1bmN0aW9uIGxvYWRTdHlsZXNoZWV0KHBhdGgsIGN1ckxpbmssIF9jYikge1xuICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKVxuXG4gICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIHBhdGgpXG4gICAgICBsaW5rLnNldEF0dHJpYnV0ZSgncmVsJywgJ3N0eWxlc2hlZXQnKVxuICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAndGV4dC9jc3MnKVxuICAgICAgbGluay5jbGFzc05hbWUgPSBjdXJMaW5rLmNsYXNzTmFtZVxuXG4gICAgICBjb25zdCBzaGVldCA9ICdzaGVldCcgaW4gbGluayA/ICdzaGVldCcgOiAnc3R5bGVTaGVldCdcbiAgICAgIGNvbnN0IGNzc1J1bGVzID0gJ3NoZWV0JyBpbiBsaW5rID8gJ2Nzc1J1bGVzJyA6ICdydWxlcydcblxuICAgICAgbGV0IGludGVydmFsSWRcblxuICAgICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZClcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZClcbiAgICAgICAgY3VyTGluay5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGxpbmspXG4gICAgICAgIF9jYihmYWxzZSwgcGF0aClcbiAgICAgIH0sIDE1MDAwKVxuXG4gICAgICBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmIChsaW5rW3NoZWV0XSAmJiBsaW5rW3NoZWV0XVtjc3NSdWxlc10ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsSWQpXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKVxuICAgICAgICAgICAgY3VyTGluay5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGN1ckxpbmspXG4gICAgICAgICAgICBfY2IodHJ1ZSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAvLyBDYXRjaCBlcnJvclxuICAgICAgICB9XG4gICAgICB9LCAxMClcblxuICAgICAgY3VyTGluay5wYXJlbnROb2RlLmluc2VydEJlZm9yZShsaW5rLCBjdXJMaW5rLm5leHRTaWJsaW5nKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0eWxlc2hlZXRDYWxsQmFjaygpIHtcbiAgICAgIGlmICgobG9hZGVkICs9IDEpID49IGNvdW50KSB7XG4gICAgICAgIGNiKClcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRocy5sZW5ndGg7IGkrKykge1xuICAgICAgbG9hZFN0eWxlc2hlZXQocGF0aHNbaV0sIHN0eWxlc2hlZXRzW3BhdGhzW2ldXSwgc3R5bGVzaGVldENhbGxCYWNrKCkpXG4gICAgfVxuICB9XG5cbiAgX2xvYWRpbmdTdGF0ZShlbmFibGUsIHRoZW1lcykge1xuICAgIHRoaXMuY29udGFpbmVyLmNsYXNzTGlzdFtlbmFibGUgPyAnYWRkJyA6ICdyZW1vdmUnXShgdGVtcGxhdGUtY3VzdG9taXplci1sb2FkaW5nJHt0aGVtZXMgPyAnLXRoZW1lJyA6ICcnfWApXG4gIH1cblxuICBfZ2V0RWxlbWVudEZyb21TdHJpbmcoc3RyKSB7XG4gICAgY29uc3Qgd3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgd3JhcHBlci5pbm5lckhUTUwgPSBzdHJcbiAgICByZXR1cm4gd3JhcHBlci5maXJzdENoaWxkXG4gIH1cblxuICAvLyBTZXQgc2V0dGluZ3MgaW4gTG9jYWxTdG9yYWdlIHdpdGggbGF5b3V0ICYga2V5XG4gIF9nZXRTZXR0aW5nKGtleSkge1xuICAgIGxldCByZXN1bHQgPSBudWxsXG4gICAgY29uc3QgbGF5b3V0TmFtZSA9IHRoaXMuX2dldExheW91dE5hbWUoKVxuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShgdGVtcGxhdGVDdXN0b21pemVyLSR7bGF5b3V0TmFtZX0tLSR7a2V5fWApXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gQ2F0Y2ggZXJyb3JcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyhyZXN1bHQgfHwgJycpXG4gIH1cblxuICAvLyBTZXQgc2V0dGluZ3MgaW4gTG9jYWxTdG9yYWdlIHdpdGggbGF5b3V0ICYga2V5XG4gIF9zZXRTZXR0aW5nKGtleSwgdmFsKSB7XG4gICAgY29uc3QgbGF5b3V0TmFtZSA9IHRoaXMuX2dldExheW91dE5hbWUoKVxuICAgIHRyeSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShgdGVtcGxhdGVDdXN0b21pemVyLSR7bGF5b3V0TmFtZX0tLSR7a2V5fWAsIFN0cmluZyh2YWwpKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIENhdGNoIEVycm9yXG4gICAgfVxuICB9XG5cbiAgLy8gR2V0IGxheW91dCBuYW1lIHRvIHNldCB1bmlxdWVcbiAgX2dldExheW91dE5hbWUoKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdIVE1MJylbMF0uZ2V0QXR0cmlidXRlKCdkYXRhLXRlbXBsYXRlJylcbiAgfVxuXG4gIF9yZW1vdmVMaXN0ZW5lcnMoKSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSB0aGlzLl9saXN0ZW5lcnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB0aGlzLl9saXN0ZW5lcnNbaV1bMF0ucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLl9saXN0ZW5lcnNbaV1bMV0sIHRoaXMuX2xpc3RlbmVyc1tpXVsyXSlcbiAgICB9XG4gIH1cblxuICBfY2xlYW51cCgpIHtcbiAgICB0aGlzLl9yZW1vdmVMaXN0ZW5lcnMoKVxuICAgIHRoaXMuX2xpc3RlbmVycyA9IFtdXG4gICAgdGhpcy5fY29udHJvbHMgPSB7fVxuXG4gICAgaWYgKHRoaXMuX3VwZGF0ZUludGVydmFsKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuX3VwZGF0ZUludGVydmFsKVxuICAgICAgdGhpcy5fdXBkYXRlSW50ZXJ2YWwgPSBudWxsXG4gICAgfVxuICB9XG5cbiAgZ2V0IF9zc3IoKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnXG4gIH1cblxuICAvLyBDaGVjayBjb250cm9scyBhdmFpbGFibGl0eVxuICBfaGFzQ29udHJvbHMoY29udHJvbHMsIG9uZU9mID0gZmFsc2UpIHtcbiAgICByZXR1cm4gY29udHJvbHMuc3BsaXQoJyAnKS5yZWR1Y2UoKHJlc3VsdCwgY29udHJvbCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2V0dGluZ3MuY29udHJvbHMuaW5kZXhPZihjb250cm9sKSAhPT0gLTEpIHtcbiAgICAgICAgaWYgKG9uZU9mIHx8IHJlc3VsdCAhPT0gZmFsc2UpIHJlc3VsdCA9IHRydWVcbiAgICAgIH0gZWxzZSBpZiAoIW9uZU9mIHx8IHJlc3VsdCAhPT0gdHJ1ZSkgcmVzdWx0ID0gZmFsc2VcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9LCBudWxsKVxuICB9XG5cbiAgLy8gR2V0IHRoZSBkZWZhdWx0IHRoZW1lXG4gIF9nZXREZWZhdWx0VGhlbWUodGhlbWVJZCkge1xuICAgIGxldCB0aGVtZVxuICAgIGlmICh0eXBlb2YgdGhlbWVJZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoZW1lID0gdGhpcy5fZ2V0VGhlbWVCeU5hbWUodGhlbWVJZCwgZmFsc2UpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoZW1lID0gdGhpcy5zZXR0aW5ncy5hdmFpbGFibGVUaGVtZXNbdGhlbWVJZF1cbiAgICB9XG5cbiAgICBpZiAoIXRoZW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZW1lIElEIFwiJHt0aGVtZUlkfVwiIG5vdCBmb3VuZCFgKVxuICAgIH1cblxuICAgIHJldHVybiB0aGVtZVxuICB9XG5cbiAgLy8gR2V0IHRoZW1lIGJ5IHRoZW1lSWQvdGhlbWVOYW1lXG4gIF9nZXRUaGVtZUJ5TmFtZSh0aGVtZU5hbWUsIHJldHVybkRlZmF1bHQgPSBmYWxzZSkge1xuICAgIGNvbnN0IHRoZW1lcyA9IHRoaXMuc2V0dGluZ3MuYXZhaWxhYmxlVGhlbWVzXG5cbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IHRoZW1lcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmICh0aGVtZXNbaV0ubmFtZSA9PT0gdGhlbWVOYW1lKSByZXR1cm4gdGhlbWVzW2ldXG4gICAgfVxuXG4gICAgcmV0dXJuIHJldHVybkRlZmF1bHQgPyB0aGlzLnNldHRpbmdzLmRlZmF1bHRUaGVtZSA6IG51bGxcbiAgfVxufVxuXG4vLyBUaGVtZXNcblRlbXBsYXRlQ3VzdG9taXplci5USEVNRVMgPSBbXG4gIHtcbiAgICBuYW1lOiAndGhlbWUtZGVmYXVsdCcsXG4gICAgdGl0bGU6ICdEZWZhdWx0J1xuICB9LFxuICB7XG4gICAgbmFtZTogJ3RoZW1lLXNlbWktZGFyaycsXG4gICAgdGl0bGU6ICdTZW1pIERhcmsnXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAndGhlbWUtYm9yZGVyZWQnLFxuICAgIHRpdGxlOiAnQm9yZGVyZWQnXG4gIH1cbl1cblxuLy8gVGhlbWUgc2V0dGluZyBsYW5ndWFnZVxuVGVtcGxhdGVDdXN0b21pemVyLkxBTkdVQUdFUyA9IHtcbiAgZW46IHtcbiAgICBwYW5lbF9oZWFkZXI6ICdURU1QTEFURSBDVVNUT01JWkVSJyxcbiAgICBwYW5lbF9zdWJfaGVhZGVyOiAnQ3VzdG9taXplIGFuZCBwcmV2aWV3IGluIHJlYWwgdGltZScsXG4gICAgdGhlbWluZ19oZWFkZXI6ICdUSEVNSU5HJyxcbiAgICB0aGVtZV9oZWFkZXI6ICdUSEVNRScsXG4gICAgdGhlbWVfbGFiZWw6ICdUaGVtZXMnLFxuICAgIHN0eWxlX2xhYmVsOiAnU3R5bGUgKE1vZGUpJyxcbiAgICBzdHlsZV9zd2l0Y2hfbGlnaHQ6ICdMaWdodCcsXG4gICAgc3R5bGVfc3dpdGNoX2Rhcms6ICdEYXJrJyxcbiAgICBsYXlvdXRfaGVhZGVyOiAnTEFZT1VUJyxcbiAgICBsYXlvdXRfbGFiZWw6ICdMYXlvdXQgKE1lbnUpJyxcbiAgICBsYXlvdXRfc3RhdGljOiAnU3RhdGljJyxcbiAgICBsYXlvdXRfb2ZmY2FudmFzOiAnT2ZmY2FudmFzJyxcbiAgICBsYXlvdXRfZml4ZWQ6ICdGaXhlZCcsXG4gICAgbGF5b3V0X2ZpeGVkX29mZmNhbnZhczogJ0ZpeGVkIG9mZmNhbnZhcycsXG4gICAgbGF5b3V0X2ZsaXBwZWRfbGFiZWw6ICdNZW51IGZsaXBwZWQnLFxuICAgIGxheW91dF9kZF9vcGVuX2xhYmVsOiAnRHJvcGRvd24gb24gaG92ZXInLFxuICAgIGxheW91dF9uYXZiYXJfbGFiZWw6ICdGaXhlZCBuYXZiYXInLFxuICAgIGxheW91dF9mb290ZXJfbGFiZWw6ICdGaXhlZCBmb290ZXInLFxuICAgIG1pc2NfaGVhZGVyOiAnTUlTQycsXG4gICAgcnRsX2xhYmVsOiAnUlRMIGRpcmVjdGlvbidcbiAgfVxufVxuXG5leHBvcnQgeyBUZW1wbGF0ZUN1c3RvbWl6ZXIgfVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./js/template-customizer.js\n");

/***/ }),

/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./js/_template-customizer/_template-customizer.scss":
/*!****************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./js/_template-customizer/_template-customizer.scss ***!
  \****************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \"/*\\n* Template Customizer Style\\n**/\\n#template-customizer {\\n  font-family: -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", Roboto, \\\"Helvetica Neue\\\", Arial, sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\" !important;\\n  font-size: inherit !important;\\n  position: fixed;\\n  top: 0;\\n  right: 0;\\n  height: 100%;\\n  z-index: 99999999;\\n  display: -webkit-box;\\n  display: -ms-flexbox;\\n  display: flex;\\n  -webkit-box-orient: vertical;\\n  -webkit-box-direction: normal;\\n  -ms-flex-direction: column;\\n  flex-direction: column;\\n  width: 360px;\\n  background: #fff;\\n  -webkit-box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2);\\n  box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2);\\n  -webkit-transition: all 0.2s ease-in;\\n  -o-transition: all 0.2s ease-in;\\n  transition: all 0.2s ease-in;\\n  -webkit-transform: translateX(380px);\\n  -ms-transform: translateX(380px);\\n  transform: translateX(380px);\\n}\\n#template-customizer h5 {\\n  position: relative;\\n  font-size: 11px;\\n  font-weight: 600;\\n}\\n#template-customizer > h5 {\\n  flex: 0 0 auto;\\n}\\n#template-customizer .disabled {\\n  color: #d1d2d3 !important;\\n}\\n#template-customizer.template-customizer-open {\\n  -webkit-transition-delay: 0.1s;\\n  -o-transition-delay: 0.1s;\\n  transition-delay: 0.1s;\\n  -webkit-transform: none !important;\\n  -ms-transform: none !important;\\n  transform: none !important;\\n}\\n#template-customizer .template-customizer-open-btn {\\n  position: absolute;\\n  top: 180px;\\n  left: 0;\\n  z-index: -1;\\n  display: block;\\n  width: 42px;\\n  height: 42px;\\n  border-top-left-radius: 15%;\\n  border-bottom-left-radius: 15%;\\n  background: #333;\\n  color: #fff !important;\\n  text-align: center;\\n  font-size: 18px !important;\\n  line-height: 42px;\\n  opacity: 1;\\n  -webkit-transition: all 0.1s linear 0.2s;\\n  -o-transition: all 0.1s linear 0.2s;\\n  transition: all 0.1s linear 0.2s;\\n  -webkit-transform: translateX(-62px);\\n  -ms-transform: translateX(-62px);\\n  transform: translateX(-62px);\\n}\\n@media (max-width: 991.98px) {\\n  #template-customizer .template-customizer-open-btn {\\n    top: 145px;\\n  }\\n}\\n.dark-style #template-customizer .template-customizer-open-btn {\\n  background: #555;\\n}\\n#template-customizer .template-customizer-open-btn::before {\\n  content: \\\"\\\";\\n  width: 22px;\\n  height: 22px;\\n  display: block;\\n  background-size: 100% 100%;\\n  position: absolute;\\n  background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABClJREFUaEPtmY1RFEEQhbsjUCIQIhAiUCNQIxAiECIQIxAiECIAIpAMhAiECIQI2vquZqnZvp6fhb3SK5mqq6Ju92b69bzXf6is+dI1t1+eAfztG5z1BsxsU0S+ici2iPB3vm5E5EpEDlSVv2dZswFIxv8UkZcNy+5EZGcuEHMCOBeR951uvVDVD53vVl+bE8DvDu8Pxtyo6ta/BsByg1R15Bwzqz5/LJgn34CZwfnPInI4BUB6/1hV0cSjVxcAM4PbcBZjL0XklIPN7Is3fLCkdQPpPYw/VNXj5IhPIvJWRIhSl6p60ULWBGBm30Vk123EwRxCuIzWkkjNrCZywith10ewE1Xdq4GoAjCz/RTXW44Ynt+LyBEfT43kYfbj86J3w5Q32DNcRQDpwF+dkQXDMey8xem0L3TEqB4g3PZWad8agBMRgZPeu96D1/C2Zbh3X0p80Op1xxloztN48bMQQNoc7+eLEuAoPSPiIDY4Ooo+E6ixeNXM+D3GERz2U3CIqMstLJUgJQDe+7eq6mub0NYEkLAKwEHkiBQDCZtddZCZ8d6r7JDwFkoARklHRPZUFVDVZWbwGuNrC4EfdOzFrRABh3Wnqhv+d70AEBLGFROPmeHlnM81G69UdSd6IUuM0GgUVn1uqWmg5EmMfBeEyB7Pe3txBkY+rGT8j0J+WXq/BgDkUCaqLgEAnwcRog0veMIqFAAwCy2wnw+bI2GaGboBgF9k5N0o0rUSGUb4eO0BeO9j/GYhkSHMHMTIqwGARX6p6a+nlPBl8kZuXMD9j6pKfF9aZuaFOdJCEL5D4eYb9wCYVCanrBmGyii/tIq+SLj/HQBCaM5bLzwfPqdQ6FpVHyra4IbuVbXaY7dETC2ESPNNWiIOi69CcdgSMXsh4tNSUiklMgwmC0aNd08Y5WAES6HHehM4gu97wyhBgWpgqXsrASglprDy7CwhehMZOSbK6JMSma+Fio1KltCmlBIj7gfZOGx8ppQSXrhzFnOhJ/31BDkjFHRvOd09x0mRBA9SFgxUgHpQg0q0t5ymPMlL+EnldFTfDA0NAmf+OTQ0X0sRouf7NNkYGhrOYNrxtIaGg83MNzVDSe3LXLhP7O/yrCsCz1zlWTpjWkuZAOBpX3yVnLqI1yLCOKU6qMrmP7SSrUEw54XF4WBIK5FxCMOr3lVsfGqNSmPzBXUnJTIX1jyVBq9wO6UObOpgC5GjO98vFKnTdQMZXxEsWZlDiCZMIxAbNxQOqlpVZtobejBaZNoBnRDzMFpkxvTQOD36BlrcySZuI6p1ACB6LU3wWuf5581+oHfD1vi89bz3nFUC8Nm7ZlP3nKkFbM4bWPt/MSFwklprYItwt6cmvpWJ2IVcQBCz6bLysSCv3SaANCiTsnaNRrNRqMXVVT1/BrAqz/buu/Y38Ad3KC5PARej0QAAAABJRU5ErkJggg==\\\");\\n  margin: 10px;\\n}\\n.customizer-hide #template-customizer .template-customizer-open-btn {\\n  display: none;\\n}\\n[dir=rtl] #template-customizer .template-customizer-open-btn {\\n  border-radius: 0;\\n  border-top-right-radius: 15%;\\n  border-bottom-right-radius: 15%;\\n}\\n[dir=rtl] #template-customizer .template-customizer-open-btn::before {\\n  margin-left: -2px;\\n}\\n#template-customizer.template-customizer-open .template-customizer-open-btn {\\n  opacity: 0;\\n  -webkit-transition-delay: 0s;\\n  -o-transition-delay: 0s;\\n  transition-delay: 0s;\\n  -webkit-transform: none !important;\\n  -ms-transform: none !important;\\n  transform: none !important;\\n}\\n#template-customizer .template-customizer-close-btn {\\n  position: absolute;\\n  top: 32px;\\n  right: 0;\\n  display: block;\\n  font-size: 20px;\\n  -webkit-transform: translateY(-50%);\\n  -ms-transform: translateY(-50%);\\n  transform: translateY(-50%);\\n}\\n#template-customizer .template-customizer-inner {\\n  position: relative;\\n  overflow: auto;\\n  -webkit-box-flex: 0;\\n  -ms-flex: 0 1 auto;\\n  flex: 0 1 auto;\\n  opacity: 1;\\n  -webkit-transition: opacity 0.2s;\\n  -o-transition: opacity 0.2s;\\n  transition: opacity 0.2s;\\n}\\n#template-customizer .template-customizer-inner > div:first-child > hr:first-of-type {\\n  display: none !important;\\n}\\n#template-customizer .template-customizer-inner > div:first-child > h5:first-of-type {\\n  padding-top: 0 !important;\\n}\\n#template-customizer .template-customizer-themes-inner {\\n  position: relative;\\n  opacity: 1;\\n  -webkit-transition: opacity 0.2s;\\n  -o-transition: opacity 0.2s;\\n  transition: opacity 0.2s;\\n}\\n#template-customizer .template-customizer-theme-item {\\n  display: -webkit-box;\\n  display: -ms-flexbox;\\n  display: flex;\\n  -webkit-box-align: center;\\n  align-items: center;\\n  -ms-flex-align: center;\\n  -webkit-box-flex: 1;\\n  -ms-flex: 1 1 100%;\\n  flex: 1 1 100%;\\n  -webkit-box-pack: justify;\\n  -ms-flex-pack: justify;\\n  justify-content: space-between;\\n  margin-bottom: 10px;\\n  padding: 0 24px;\\n  width: 100%;\\n  cursor: pointer;\\n}\\n#template-customizer .template-customizer-theme-item input {\\n  position: absolute;\\n  z-index: -1;\\n  opacity: 0;\\n}\\n#template-customizer .template-customizer-theme-item input ~ span {\\n  opacity: 0.25;\\n  -webkit-transition: all 0.2s;\\n  -o-transition: all 0.2s;\\n  transition: all 0.2s;\\n}\\n#template-customizer .template-customizer-theme-item .template-customizer-theme-checkmark {\\n  display: inline-block;\\n  width: 6px;\\n  height: 12px;\\n  border-right: 1px solid;\\n  border-bottom: 1px solid;\\n  opacity: 0;\\n  -webkit-transition: all 0.2s;\\n  -o-transition: all 0.2s;\\n  transition: all 0.2s;\\n  -webkit-transform: rotate(45deg);\\n  -ms-transform: rotate(45deg);\\n  transform: rotate(45deg);\\n}\\n[dir=rtl] #template-customizer .template-customizer-theme-item .template-customizer-theme-checkmark {\\n  border-right: none;\\n  border-left: 1px solid;\\n  -webkit-transform: rotate(-45deg);\\n  -ms-transform: rotate(-45deg);\\n  transform: rotate(-45deg);\\n}\\n#template-customizer .template-customizer-theme-item input:checked:not([disabled]) ~ span, #template-customizer .template-customizer-theme-item:hover input:not([disabled]) ~ span {\\n  opacity: 1;\\n}\\n#template-customizer .template-customizer-theme-item input:checked:not([disabled]) ~ span .template-customizer-theme-checkmark {\\n  opacity: 1;\\n}\\n#template-customizer .template-customizer-theme-colors span {\\n  display: block;\\n  margin: 0 1px;\\n  width: 10px;\\n  height: 10px;\\n  border-radius: 50%;\\n  -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1) inset;\\n  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1) inset;\\n}\\n#template-customizer.template-customizer-loading .template-customizer-inner, #template-customizer.template-customizer-loading-theme .template-customizer-themes-inner {\\n  opacity: 0.2;\\n}\\n#template-customizer.template-customizer-loading .template-customizer-inner::after, #template-customizer.template-customizer-loading-theme .template-customizer-themes-inner::after {\\n  content: \\\"\\\";\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  z-index: 999;\\n  display: block;\\n}\\n\\n.layout-menu-100vh #template-customizer {\\n  height: 100vh;\\n}\\n\\n[dir=rtl] #template-customizer {\\n  right: auto;\\n  left: 0;\\n  -webkit-transform: translateX(-380px);\\n  -ms-transform: translateX(-380px);\\n  transform: translateX(-380px);\\n}\\n[dir=rtl] #template-customizer .template-customizer-open-btn {\\n  right: 0;\\n  left: auto;\\n  -webkit-transform: translateX(62px);\\n  -ms-transform: translateX(62px);\\n  transform: translateX(62px);\\n}\\n[dir=rtl] #template-customizer .template-customizer-close-btn {\\n  right: auto;\\n  left: 0;\\n}\\n\\n#template-customizer .template-customizer-layouts-options[disabled] {\\n  opacity: 0.5;\\n  pointer-events: none;\\n}\\n\\n[dir=rtl] .template-customizer-t-style_switch_light {\\n  padding-right: 0 !important;\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9qcy9fdGVtcGxhdGUtY3VzdG9taXplci9fdGVtcGxhdGUtY3VzdG9taXplci5zY3NzP2IyNDUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxrQ0FBa0MsbUJBQU8sQ0FBQyx3R0FBbUQ7QUFDN0Y7QUFDQTtBQUNBLGNBQWMsUUFBUywrREFBK0QsMkxBQTJMLGtDQUFrQyxvQkFBb0IsV0FBVyxhQUFhLGlCQUFpQixzQkFBc0IseUJBQXlCLHlCQUF5QixrQkFBa0IsaUNBQWlDLGtDQUFrQywrQkFBK0IsMkJBQTJCLGlCQUFpQixxQkFBcUIsc0RBQXNELDhDQUE4Qyx5Q0FBeUMsb0NBQW9DLGlDQUFpQyx5Q0FBeUMscUNBQXFDLGlDQUFpQyxHQUFHLDJCQUEyQix1QkFBdUIsb0JBQW9CLHFCQUFxQixHQUFHLDZCQUE2QixtQkFBbUIsR0FBRyxrQ0FBa0MsOEJBQThCLEdBQUcsaURBQWlELG1DQUFtQyw4QkFBOEIsMkJBQTJCLHVDQUF1QyxtQ0FBbUMsK0JBQStCLEdBQUcsc0RBQXNELHVCQUF1QixlQUFlLFlBQVksZ0JBQWdCLG1CQUFtQixnQkFBZ0IsaUJBQWlCLGdDQUFnQyxtQ0FBbUMscUJBQXFCLDJCQUEyQix1QkFBdUIsK0JBQStCLHNCQUFzQixlQUFlLDZDQUE2Qyx3Q0FBd0MscUNBQXFDLHlDQUF5QyxxQ0FBcUMsaUNBQWlDLEdBQUcsZ0NBQWdDLHdEQUF3RCxpQkFBaUIsS0FBSyxHQUFHLGtFQUFrRSxxQkFBcUIsR0FBRyw4REFBOEQsa0JBQWtCLGdCQUFnQixpQkFBaUIsbUJBQW1CLCtCQUErQix1QkFBdUIsMkNBQTJDLHUvQ0FBdS9DLGlCQUFpQixHQUFHLHVFQUF1RSxrQkFBa0IsR0FBRyxnRUFBZ0UscUJBQXFCLGlDQUFpQyxvQ0FBb0MsR0FBRyx3RUFBd0Usc0JBQXNCLEdBQUcsK0VBQStFLGVBQWUsaUNBQWlDLDRCQUE0Qix5QkFBeUIsdUNBQXVDLG1DQUFtQywrQkFBK0IsR0FBRyx1REFBdUQsdUJBQXVCLGNBQWMsYUFBYSxtQkFBbUIsb0JBQW9CLHdDQUF3QyxvQ0FBb0MsZ0NBQWdDLEdBQUcsbURBQW1ELHVCQUF1QixtQkFBbUIsd0JBQXdCLHVCQUF1QixtQkFBbUIsZUFBZSxxQ0FBcUMsZ0NBQWdDLDZCQUE2QixHQUFHLHdGQUF3Riw2QkFBNkIsR0FBRyx3RkFBd0YsOEJBQThCLEdBQUcsMERBQTBELHVCQUF1QixlQUFlLHFDQUFxQyxnQ0FBZ0MsNkJBQTZCLEdBQUcsd0RBQXdELHlCQUF5Qix5QkFBeUIsa0JBQWtCLDhCQUE4Qix3QkFBd0IsMkJBQTJCLHdCQUF3Qix1QkFBdUIsbUJBQW1CLDhCQUE4QiwyQkFBMkIsbUNBQW1DLHdCQUF3QixvQkFBb0IsZ0JBQWdCLG9CQUFvQixHQUFHLDhEQUE4RCx1QkFBdUIsZ0JBQWdCLGVBQWUsR0FBRyxxRUFBcUUsa0JBQWtCLGlDQUFpQyw0QkFBNEIseUJBQXlCLEdBQUcsNkZBQTZGLDBCQUEwQixlQUFlLGlCQUFpQiw0QkFBNEIsNkJBQTZCLGVBQWUsaUNBQWlDLDRCQUE0Qix5QkFBeUIscUNBQXFDLGlDQUFpQyw2QkFBNkIsR0FBRyx1R0FBdUcsdUJBQXVCLDJCQUEyQixzQ0FBc0Msa0NBQWtDLDhCQUE4QixHQUFHLHNMQUFzTCxlQUFlLEdBQUcsa0lBQWtJLGVBQWUsR0FBRywrREFBK0QsbUJBQW1CLGtCQUFrQixnQkFBZ0IsaUJBQWlCLHVCQUF1QiwyREFBMkQsbURBQW1ELEdBQUcseUtBQXlLLGlCQUFpQixHQUFHLHVMQUF1TCxrQkFBa0IsdUJBQXVCLFdBQVcsYUFBYSxjQUFjLFlBQVksaUJBQWlCLG1CQUFtQixHQUFHLDZDQUE2QyxrQkFBa0IsR0FBRyxvQ0FBb0MsZ0JBQWdCLFlBQVksMENBQTBDLHNDQUFzQyxrQ0FBa0MsR0FBRyxnRUFBZ0UsYUFBYSxlQUFlLHdDQUF3QyxvQ0FBb0MsZ0NBQWdDLEdBQUcsaUVBQWlFLGdCQUFnQixZQUFZLEdBQUcseUVBQXlFLGlCQUFpQix5QkFBeUIsR0FBRyx5REFBeUQsZ0NBQWdDLEdBQUc7QUFDdHJSO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL2pzL190ZW1wbGF0ZS1jdXN0b21pemVyL190ZW1wbGF0ZS1jdXN0b21pemVyLnNjc3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG52YXIgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fID0gcmVxdWlyZShcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIik7XG5leHBvcnRzID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKGZhbHNlKTtcbi8vIE1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiLypcXG4qIFRlbXBsYXRlIEN1c3RvbWl6ZXIgU3R5bGVcXG4qKi9cXG4jdGVtcGxhdGUtY3VzdG9taXplciB7XFxuICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcXFwiU2Vnb2UgVUlcXFwiLCBSb2JvdG8sIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIEFyaWFsLCBzYW5zLXNlcmlmLCBcXFwiQXBwbGUgQ29sb3IgRW1vamlcXFwiLCBcXFwiU2Vnb2UgVUkgRW1vamlcXFwiLCBcXFwiU2Vnb2UgVUkgU3ltYm9sXFxcIiAhaW1wb3J0YW50O1xcbiAgZm9udC1zaXplOiBpbmhlcml0ICFpbXBvcnRhbnQ7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICB0b3A6IDA7XFxuICByaWdodDogMDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHotaW5kZXg6IDk5OTk5OTk5O1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICB3aWR0aDogMzYwcHg7XFxuICBiYWNrZ3JvdW5kOiAjZmZmO1xcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMjBweCAwIHJnYmEoMCwgMCwgMCwgMC4yKTtcXG4gIGJveC1zaGFkb3c6IDAgMCAyMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpO1xcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluO1xcbiAgLW8tdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbjtcXG4gIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW47XFxuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgzODBweCk7XFxuICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDM4MHB4KTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgzODBweCk7XFxufVxcbiN0ZW1wbGF0ZS1jdXN0b21pemVyIGg1IHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGZvbnQtc2l6ZTogMTFweDtcXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XFxufVxcbiN0ZW1wbGF0ZS1jdXN0b21pemVyID4gaDUge1xcbiAgZmxleDogMCAwIGF1dG87XFxufVxcbiN0ZW1wbGF0ZS1jdXN0b21pemVyIC5kaXNhYmxlZCB7XFxuICBjb2xvcjogI2QxZDJkMyAhaW1wb3J0YW50O1xcbn1cXG4jdGVtcGxhdGUtY3VzdG9taXplci50ZW1wbGF0ZS1jdXN0b21pemVyLW9wZW4ge1xcbiAgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OiAwLjFzO1xcbiAgLW8tdHJhbnNpdGlvbi1kZWxheTogMC4xcztcXG4gIHRyYW5zaXRpb24tZGVsYXk6IDAuMXM7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xcbiAgLW1zLXRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xcbiAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XFxufVxcbiN0ZW1wbGF0ZS1jdXN0b21pemVyIC50ZW1wbGF0ZS1jdXN0b21pemVyLW9wZW4tYnRuIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMTgwcHg7XFxuICBsZWZ0OiAwO1xcbiAgei1pbmRleDogLTE7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHdpZHRoOiA0MnB4O1xcbiAgaGVpZ2h0OiA0MnB4O1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMTUlO1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMTUlO1xcbiAgYmFja2dyb3VuZDogIzMzMztcXG4gIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBmb250LXNpemU6IDE4cHggIWltcG9ydGFudDtcXG4gIGxpbmUtaGVpZ2h0OiA0MnB4O1xcbiAgb3BhY2l0eTogMTtcXG4gIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMXMgbGluZWFyIDAuMnM7XFxuICAtby10cmFuc2l0aW9uOiBhbGwgMC4xcyBsaW5lYXIgMC4ycztcXG4gIHRyYW5zaXRpb246IGFsbCAwLjFzIGxpbmVhciAwLjJzO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTYycHgpO1xcbiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNjJweCk7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTYycHgpO1xcbn1cXG5AbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHtcXG4gICN0ZW1wbGF0ZS1jdXN0b21pemVyIC50ZW1wbGF0ZS1jdXN0b21pemVyLW9wZW4tYnRuIHtcXG4gICAgdG9wOiAxNDVweDtcXG4gIH1cXG59XFxuLmRhcmstc3R5bGUgI3RlbXBsYXRlLWN1c3RvbWl6ZXIgLnRlbXBsYXRlLWN1c3RvbWl6ZXItb3Blbi1idG4ge1xcbiAgYmFja2dyb3VuZDogIzU1NTtcXG59XFxuI3RlbXBsYXRlLWN1c3RvbWl6ZXIgLnRlbXBsYXRlLWN1c3RvbWl6ZXItb3Blbi1idG46OmJlZm9yZSB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHdpZHRoOiAyMnB4O1xcbiAgaGVpZ2h0OiAyMnB4O1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcXFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFEQUFBQUF3Q0FZQUFBQlhBdm1IQUFBQUFYTlNSMElBcnM0YzZRQUFCQ2xKUkVGVWFFUHRtWTFSRkVFUWhic2pVQ0lRSWhBaVVDTlFJeEFpRUNJUUl4QWlFQ0lBSXBBTWhBaUVDSVFJMnZxdVpxblp2cDZmaGIzU0s1bXFxNkp1OTJiNjlielhmNmlzK2RJMXQxK2VBZnp0RzV6MUJzeHNVMFMraWNpMmlQQjN2bTVFNUVwRURsU1Z2MmRac3dGSXh2OFVrWmNOeSs1RVpHY3VFSE1DT0JlUjk1MXV2VkRWRDUzdlZsK2JFOER2RHU4UHh0eW82dGEvQnNCeWcxUjE1Qnd6cXo1L0xKZ24zNENad2ZuUEluSTRCVUI2LzFoVjBjU2pWeGNBTTRQYmNCWmpMMFhrbElQTjdJczNmTENrZFFQcFBZdy9WTlhqNUloUEl2SldSSWhTbDZwNjBVTFdCR0JtMzBWazEyM0V3UnhDdUl6V2trak5yQ1p5d2l0aDEwZXdFMVhkcTRHb0FqQ3ovUlRYVzQ0WW50K0x5QkVmVDQza1lmYmo4NkozdzVRMzJETmNSUURwd0YrZGtRWERNZXk4eGVtMEwzVEVxQjRnM1BaV2FkOGFnQk1SZ1pQZXU5NkQxL0MyWmJoM1gwcDgwT3AxeHhsb3p0TjQ4Yk1RUU5vYzcrZUxFdUFvUFNQaUlEWTRPb28rRTZpeGVOWE0rRDNHRVJ6MlUzQ0lxTXN0TEpVZ0pRRGUrN2VxNm11YjBOWUVrTEFLd0VIa2lCUURDWnRkZFpDWjhkNnI3SkR3RmtvQVJrbEhSUFpVRlZEVlpXYndHdU5yQzRFZmRPekZyUkFCaDNXbnFoditkNzBBRUJMR0ZST1BtZUhsbk04MUc2OVVkU2Q2SVV1TTBHZ1VWbjF1cVdtZzVFbU1mQmVFeUI3UGUzdHhCa1krckdUOGowSitXWHEvQmdEa1VDYXFMZ0VBbndjUm9nMHZlTUlxRkFBd0N5MndudytiSTJHYUdib0JnRjlrNU4wbzByVVNHVWI0ZU8wQmVPOWovR1loa1NITUhNVElxd0dBUlg2cDZhK25sUEJsOGtadVhNRDlqNnBLZkY5YVp1YUZPZEpDRUw1RDRlWWI5d0NZVkNhbnJCbUd5aWkvdElxK1NMai9IUUJDYU01Ykx6d2ZQcWRRNkZwVkh5cmE0SWJ1VmJYYVk3ZEVUQzJFU1BOTldpSU9pNjlDY2RnU01Yc2g0dE5TVWlrbE1nd21DMGFOZDA4WTVXQUVTNkhIZWhNNGd1OTd3eWhCZ1dwZ3FYc3JBU2dscHJEeTdDd2hlaE1aT1NiSzZKTVNtYStGaW8xS2x0Q21sQklqN2dmWk9HeDhwcFFTWHJoekZuT2hKLzMxQkRrakZIUnZPZDA5eDBtUkJBOVNGZ3hVZ0hwUWcwcTB0NXltUE1sTCtFbmxkRlRmREEwTkFtZitPVFEwWDBzUm91ZjdOTmtZR2hyT1lOcnh0SWFHZzgzTU56VkRTZTNMWExoUDdPL3lyQ3NDejF6bFdUcGpXa3VaQU9CcFgzeVZuTHFJMXlMQ09LVTZxTXJtUDdTU3JVRXc1NFhGNFdCSUs1RnhDTU9yM2xWc2ZHcU5TbVB6QlhVbkpUSVgxanlWQnE5d082VU9iT3BnQzVHak85OHZGS25UZFFNWlh4RXNXWmxEaUNaTUl4QWJOeFFPcWxwVlp0b2JlakJhWk5vQm5SRHpNRnBreHZUUU9EMzZCbHJjeVNadUk2cDFBQ0I2TFUzd1d1ZjU1ODErb0hmRDF2aTg5YnozbkZVQzhObTdabFAzbktrRmJNNGJXUHQvTVNGd2tscHJZSXR3dDZjbXZwV0oySVZjUUJDejZiTHlzU0N2M1NhQU5DaVRzbmFOUnJOUnFNWFZWVDEvQnJBcXovYnV1L1kzOEFkM0tDNVBBUmVqMFFBQUFBQkpSVTVFcmtKZ2dnPT1cXFwiKTtcXG4gIG1hcmdpbjogMTBweDtcXG59XFxuLmN1c3RvbWl6ZXItaGlkZSAjdGVtcGxhdGUtY3VzdG9taXplciAudGVtcGxhdGUtY3VzdG9taXplci1vcGVuLWJ0biB7XFxuICBkaXNwbGF5OiBub25lO1xcbn1cXG5bZGlyPXJ0bF0gI3RlbXBsYXRlLWN1c3RvbWl6ZXIgLnRlbXBsYXRlLWN1c3RvbWl6ZXItb3Blbi1idG4ge1xcbiAgYm9yZGVyLXJhZGl1czogMDtcXG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAxNSU7XFxuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMTUlO1xcbn1cXG5bZGlyPXJ0bF0gI3RlbXBsYXRlLWN1c3RvbWl6ZXIgLnRlbXBsYXRlLWN1c3RvbWl6ZXItb3Blbi1idG46OmJlZm9yZSB7XFxuICBtYXJnaW4tbGVmdDogLTJweDtcXG59XFxuI3RlbXBsYXRlLWN1c3RvbWl6ZXIudGVtcGxhdGUtY3VzdG9taXplci1vcGVuIC50ZW1wbGF0ZS1jdXN0b21pemVyLW9wZW4tYnRuIHtcXG4gIG9wYWNpdHk6IDA7XFxuICAtd2Via2l0LXRyYW5zaXRpb24tZGVsYXk6IDBzO1xcbiAgLW8tdHJhbnNpdGlvbi1kZWxheTogMHM7XFxuICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XFxuICAtbXMtdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XFxuICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcXG59XFxuI3RlbXBsYXRlLWN1c3RvbWl6ZXIgLnRlbXBsYXRlLWN1c3RvbWl6ZXItY2xvc2UtYnRuIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMzJweDtcXG4gIHJpZ2h0OiAwO1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBmb250LXNpemU6IDIwcHg7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcXG4gIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XFxufVxcbiN0ZW1wbGF0ZS1jdXN0b21pemVyIC50ZW1wbGF0ZS1jdXN0b21pemVyLWlubmVyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG92ZXJmbG93OiBhdXRvO1xcbiAgLXdlYmtpdC1ib3gtZmxleDogMDtcXG4gIC1tcy1mbGV4OiAwIDEgYXV0bztcXG4gIGZsZXg6IDAgMSBhdXRvO1xcbiAgb3BhY2l0eTogMTtcXG4gIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzO1xcbiAgLW8tdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzO1xcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzO1xcbn1cXG4jdGVtcGxhdGUtY3VzdG9taXplciAudGVtcGxhdGUtY3VzdG9taXplci1pbm5lciA+IGRpdjpmaXJzdC1jaGlsZCA+IGhyOmZpcnN0LW9mLXR5cGUge1xcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xcbn1cXG4jdGVtcGxhdGUtY3VzdG9taXplciAudGVtcGxhdGUtY3VzdG9taXplci1pbm5lciA+IGRpdjpmaXJzdC1jaGlsZCA+IGg1OmZpcnN0LW9mLXR5cGUge1xcbiAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDtcXG59XFxuI3RlbXBsYXRlLWN1c3RvbWl6ZXIgLnRlbXBsYXRlLWN1c3RvbWl6ZXItdGhlbWVzLWlubmVyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG9wYWNpdHk6IDE7XFxuICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC4ycztcXG4gIC1vLXRyYW5zaXRpb246IG9wYWNpdHkgMC4ycztcXG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycztcXG59XFxuI3RlbXBsYXRlLWN1c3RvbWl6ZXIgLnRlbXBsYXRlLWN1c3RvbWl6ZXItdGhlbWUtaXRlbSB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAtbXMtZmxleDogMSAxIDEwMCU7XFxuICBmbGV4OiAxIDEgMTAwJTtcXG4gIC13ZWJraXQtYm94LXBhY2s6IGp1c3RpZnk7XFxuICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5O1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcXG4gIHBhZGRpbmc6IDAgMjRweDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG4jdGVtcGxhdGUtY3VzdG9taXplciAudGVtcGxhdGUtY3VzdG9taXplci10aGVtZS1pdGVtIGlucHV0IHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHotaW5kZXg6IC0xO1xcbiAgb3BhY2l0eTogMDtcXG59XFxuI3RlbXBsYXRlLWN1c3RvbWl6ZXIgLnRlbXBsYXRlLWN1c3RvbWl6ZXItdGhlbWUtaXRlbSBpbnB1dCB+IHNwYW4ge1xcbiAgb3BhY2l0eTogMC4yNTtcXG4gIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMnM7XFxuICAtby10cmFuc2l0aW9uOiBhbGwgMC4ycztcXG4gIHRyYW5zaXRpb246IGFsbCAwLjJzO1xcbn1cXG4jdGVtcGxhdGUtY3VzdG9taXplciAudGVtcGxhdGUtY3VzdG9taXplci10aGVtZS1pdGVtIC50ZW1wbGF0ZS1jdXN0b21pemVyLXRoZW1lLWNoZWNrbWFyayB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICB3aWR0aDogNnB4O1xcbiAgaGVpZ2h0OiAxMnB4O1xcbiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQ7XFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQ7XFxuICBvcGFjaXR5OiAwO1xcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4ycztcXG4gIC1vLXRyYW5zaXRpb246IGFsbCAwLjJzO1xcbiAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcXG4gIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XFxufVxcbltkaXI9cnRsXSAjdGVtcGxhdGUtY3VzdG9taXplciAudGVtcGxhdGUtY3VzdG9taXplci10aGVtZS1pdGVtIC50ZW1wbGF0ZS1jdXN0b21pemVyLXRoZW1lLWNoZWNrbWFyayB7XFxuICBib3JkZXItcmlnaHQ6IG5vbmU7XFxuICBib3JkZXItbGVmdDogMXB4IHNvbGlkO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xcbiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xcbn1cXG4jdGVtcGxhdGUtY3VzdG9taXplciAudGVtcGxhdGUtY3VzdG9taXplci10aGVtZS1pdGVtIGlucHV0OmNoZWNrZWQ6bm90KFtkaXNhYmxlZF0pIH4gc3BhbiwgI3RlbXBsYXRlLWN1c3RvbWl6ZXIgLnRlbXBsYXRlLWN1c3RvbWl6ZXItdGhlbWUtaXRlbTpob3ZlciBpbnB1dDpub3QoW2Rpc2FibGVkXSkgfiBzcGFuIHtcXG4gIG9wYWNpdHk6IDE7XFxufVxcbiN0ZW1wbGF0ZS1jdXN0b21pemVyIC50ZW1wbGF0ZS1jdXN0b21pemVyLXRoZW1lLWl0ZW0gaW5wdXQ6Y2hlY2tlZDpub3QoW2Rpc2FibGVkXSkgfiBzcGFuIC50ZW1wbGF0ZS1jdXN0b21pemVyLXRoZW1lLWNoZWNrbWFyayB7XFxuICBvcGFjaXR5OiAxO1xcbn1cXG4jdGVtcGxhdGUtY3VzdG9taXplciAudGVtcGxhdGUtY3VzdG9taXplci10aGVtZS1jb2xvcnMgc3BhbiB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIG1hcmdpbjogMCAxcHg7XFxuICB3aWR0aDogMTBweDtcXG4gIGhlaWdodDogMTBweDtcXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDAgMXB4IHJnYmEoMCwgMCwgMCwgMC4xKSBpbnNldDtcXG4gIGJveC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKDAsIDAsIDAsIDAuMSkgaW5zZXQ7XFxufVxcbiN0ZW1wbGF0ZS1jdXN0b21pemVyLnRlbXBsYXRlLWN1c3RvbWl6ZXItbG9hZGluZyAudGVtcGxhdGUtY3VzdG9taXplci1pbm5lciwgI3RlbXBsYXRlLWN1c3RvbWl6ZXIudGVtcGxhdGUtY3VzdG9taXplci1sb2FkaW5nLXRoZW1lIC50ZW1wbGF0ZS1jdXN0b21pemVyLXRoZW1lcy1pbm5lciB7XFxuICBvcGFjaXR5OiAwLjI7XFxufVxcbiN0ZW1wbGF0ZS1jdXN0b21pemVyLnRlbXBsYXRlLWN1c3RvbWl6ZXItbG9hZGluZyAudGVtcGxhdGUtY3VzdG9taXplci1pbm5lcjo6YWZ0ZXIsICN0ZW1wbGF0ZS1jdXN0b21pemVyLnRlbXBsYXRlLWN1c3RvbWl6ZXItbG9hZGluZy10aGVtZSAudGVtcGxhdGUtY3VzdG9taXplci10aGVtZXMtaW5uZXI6OmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgcmlnaHQ6IDA7XFxuICBib3R0b206IDA7XFxuICBsZWZ0OiAwO1xcbiAgei1pbmRleDogOTk5O1xcbiAgZGlzcGxheTogYmxvY2s7XFxufVxcblxcbi5sYXlvdXQtbWVudS0xMDB2aCAjdGVtcGxhdGUtY3VzdG9taXplciB7XFxuICBoZWlnaHQ6IDEwMHZoO1xcbn1cXG5cXG5bZGlyPXJ0bF0gI3RlbXBsYXRlLWN1c3RvbWl6ZXIge1xcbiAgcmlnaHQ6IGF1dG87XFxuICBsZWZ0OiAwO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTM4MHB4KTtcXG4gIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTM4MHB4KTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMzgwcHgpO1xcbn1cXG5bZGlyPXJ0bF0gI3RlbXBsYXRlLWN1c3RvbWl6ZXIgLnRlbXBsYXRlLWN1c3RvbWl6ZXItb3Blbi1idG4ge1xcbiAgcmlnaHQ6IDA7XFxuICBsZWZ0OiBhdXRvO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNjJweCk7XFxuICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDYycHgpO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDYycHgpO1xcbn1cXG5bZGlyPXJ0bF0gI3RlbXBsYXRlLWN1c3RvbWl6ZXIgLnRlbXBsYXRlLWN1c3RvbWl6ZXItY2xvc2UtYnRuIHtcXG4gIHJpZ2h0OiBhdXRvO1xcbiAgbGVmdDogMDtcXG59XFxuXFxuI3RlbXBsYXRlLWN1c3RvbWl6ZXIgLnRlbXBsYXRlLWN1c3RvbWl6ZXItbGF5b3V0cy1vcHRpb25zW2Rpc2FibGVkXSB7XFxuICBvcGFjaXR5OiAwLjU7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG59XFxuXFxuW2Rpcj1ydGxdIC50ZW1wbGF0ZS1jdXN0b21pemVyLXQtc3R5bGVfc3dpdGNoX2xpZ2h0IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDtcXG59XCIsIFwiXCJdKTtcbi8vIEV4cG9ydHNcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./js/_template-customizer/_template-customizer.scss\n");

/***/ }),

/***/ "./node_modules/css-loader/dist/runtime/api.js":
/*!*****************************************************!*\
  !*** ./node_modules/css-loader/dist/runtime/api.js ***!
  \*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\n/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n  var list = []; // return the list of modules as css string\n\n  list.toString = function toString() {\n    return this.map(function (item) {\n      var content = cssWithMappingToString(item, useSourceMap);\n\n      if (item[2]) {\n        return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n      }\n\n      return content;\n    }).join('');\n  }; // import a list of modules into the list\n  // eslint-disable-next-line func-names\n\n\n  list.i = function (modules, mediaQuery, dedupe) {\n    if (typeof modules === 'string') {\n      // eslint-disable-next-line no-param-reassign\n      modules = [[null, modules, '']];\n    }\n\n    var alreadyImportedModules = {};\n\n    if (dedupe) {\n      for (var i = 0; i < this.length; i++) {\n        // eslint-disable-next-line prefer-destructuring\n        var id = this[i][0];\n\n        if (id != null) {\n          alreadyImportedModules[id] = true;\n        }\n      }\n    }\n\n    for (var _i = 0; _i < modules.length; _i++) {\n      var item = [].concat(modules[_i]);\n\n      if (dedupe && alreadyImportedModules[item[0]]) {\n        // eslint-disable-next-line no-continue\n        continue;\n      }\n\n      if (mediaQuery) {\n        if (!item[2]) {\n          item[2] = mediaQuery;\n        } else {\n          item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n        }\n      }\n\n      list.push(item);\n    }\n  };\n\n  return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n  var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n  var cssMapping = item[3];\n\n  if (!cssMapping) {\n    return content;\n  }\n\n  if (useSourceMap && typeof btoa === 'function') {\n    var sourceMapping = toComment(cssMapping);\n    var sourceURLs = cssMapping.sources.map(function (source) {\n      return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n    });\n    return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n  }\n\n  return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n  // eslint-disable-next-line no-undef\n  var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n  var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n  return \"/*# \".concat(data, \" */\");\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzPzI0ZmIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7O0FBRWhCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDRDQUE0QyxxQkFBcUI7QUFDakU7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsSUFBSTtBQUNKOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUJBQXFCLGlCQUFpQjtBQUN0QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLHFCQUFxQjtBQUN6Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsOEJBQThCOztBQUU5Qjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBLENBQUM7OztBQUdEO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCxjQUFjO0FBQ25FO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qXG4gIE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG4gIEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG4vLyBjc3MgYmFzZSBjb2RlLCBpbmplY3RlZCBieSB0aGUgY3NzLWxvYWRlclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHVzZVNvdXJjZU1hcCkge1xuICB2YXIgbGlzdCA9IFtdOyAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cbiAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0sIHVzZVNvdXJjZU1hcCk7XG5cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIHJldHVybiBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKS5jb25jYXQoY29udGVudCwgXCJ9XCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9KS5qb2luKCcnKTtcbiAgfTsgLy8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcblxuXG4gIGxpc3QuaSA9IGZ1bmN0aW9uIChtb2R1bGVzLCBtZWRpYVF1ZXJ5LCBkZWR1cGUpIHtcbiAgICBpZiAodHlwZW9mIG1vZHVsZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgIG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsICcnXV07XG4gICAgfVxuXG4gICAgdmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcblxuICAgIGlmIChkZWR1cGUpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWRlc3RydWN0dXJpbmdcbiAgICAgICAgdmFyIGlkID0gdGhpc1tpXVswXTtcblxuICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBtb2R1bGVzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIGl0ZW0gPSBbXS5jb25jYXQobW9kdWxlc1tfaV0pO1xuXG4gICAgICBpZiAoZGVkdXBlICYmIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnRpbnVlXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVkaWFRdWVyeSkge1xuICAgICAgICBpZiAoIWl0ZW1bMl0pIHtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWFRdWVyeTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzJdID0gXCJcIi5jb25jYXQobWVkaWFRdWVyeSwgXCIgYW5kIFwiKS5jb25jYXQoaXRlbVsyXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGlzdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gbGlzdDtcbn07XG5cbmZ1bmN0aW9uIGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSwgdXNlU291cmNlTWFwKSB7XG4gIHZhciBjb250ZW50ID0gaXRlbVsxXSB8fCAnJzsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1kZXN0cnVjdHVyaW5nXG5cbiAgdmFyIGNzc01hcHBpbmcgPSBpdGVtWzNdO1xuXG4gIGlmICghY3NzTWFwcGluZykge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgaWYgKHVzZVNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciBzb3VyY2VNYXBwaW5nID0gdG9Db21tZW50KGNzc01hcHBpbmcpO1xuICAgIHZhciBzb3VyY2VVUkxzID0gY3NzTWFwcGluZy5zb3VyY2VzLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICByZXR1cm4gXCIvKiMgc291cmNlVVJMPVwiLmNvbmNhdChjc3NNYXBwaW5nLnNvdXJjZVJvb3QgfHwgJycpLmNvbmNhdChzb3VyY2UsIFwiICovXCIpO1xuICAgIH0pO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KHNvdXJjZVVSTHMpLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oJ1xcbicpO1xuICB9XG5cbiAgcmV0dXJuIFtjb250ZW50XS5qb2luKCdcXG4nKTtcbn0gLy8gQWRhcHRlZCBmcm9tIGNvbnZlcnQtc291cmNlLW1hcCAoTUlUKVxuXG5cbmZ1bmN0aW9uIHRvQ29tbWVudChzb3VyY2VNYXApIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIHZhciBiYXNlNjQgPSBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpO1xuICB2YXIgZGF0YSA9IFwic291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsXCIuY29uY2F0KGJhc2U2NCk7XG4gIHJldHVybiBcIi8qIyBcIi5jb25jYXQoZGF0YSwgXCIgKi9cIik7XG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/runtime/api.js\n");

/***/ }),

/***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":
/*!****************************************************************************!*\
  !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!
  \****************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar isOldIE = function isOldIE() {\n  var memo;\n  return function memorize() {\n    if (typeof memo === 'undefined') {\n      // Test for IE <= 9 as proposed by Browserhacks\n      // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n      // Tests for existence of standard globals is to allow style-loader\n      // to operate correctly into non-standard environments\n      // @see https://github.com/webpack-contrib/style-loader/issues/177\n      memo = Boolean(window && document && document.all && !window.atob);\n    }\n\n    return memo;\n  };\n}();\n\nvar getTarget = function getTarget() {\n  var memo = {};\n  return function memorize(target) {\n    if (typeof memo[target] === 'undefined') {\n      var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n      if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n        try {\n          // This will throw an exception if access to iframe is blocked\n          // due to cross-origin restrictions\n          styleTarget = styleTarget.contentDocument.head;\n        } catch (e) {\n          // istanbul ignore next\n          styleTarget = null;\n        }\n      }\n\n      memo[target] = styleTarget;\n    }\n\n    return memo[target];\n  };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n  var result = -1;\n\n  for (var i = 0; i < stylesInDom.length; i++) {\n    if (stylesInDom[i].identifier === identifier) {\n      result = i;\n      break;\n    }\n  }\n\n  return result;\n}\n\nfunction modulesToDom(list, options) {\n  var idCountMap = {};\n  var identifiers = [];\n\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i];\n    var id = options.base ? item[0] + options.base : item[0];\n    var count = idCountMap[id] || 0;\n    var identifier = \"\".concat(id, \" \").concat(count);\n    idCountMap[id] = count + 1;\n    var index = getIndexByIdentifier(identifier);\n    var obj = {\n      css: item[1],\n      media: item[2],\n      sourceMap: item[3]\n    };\n\n    if (index !== -1) {\n      stylesInDom[index].references++;\n      stylesInDom[index].updater(obj);\n    } else {\n      stylesInDom.push({\n        identifier: identifier,\n        updater: addStyle(obj, options),\n        references: 1\n      });\n    }\n\n    identifiers.push(identifier);\n  }\n\n  return identifiers;\n}\n\nfunction insertStyleElement(options) {\n  var style = document.createElement('style');\n  var attributes = options.attributes || {};\n\n  if (typeof attributes.nonce === 'undefined') {\n    var nonce =  true ? __webpack_require__.nc : undefined;\n\n    if (nonce) {\n      attributes.nonce = nonce;\n    }\n  }\n\n  Object.keys(attributes).forEach(function (key) {\n    style.setAttribute(key, attributes[key]);\n  });\n\n  if (typeof options.insert === 'function') {\n    options.insert(style);\n  } else {\n    var target = getTarget(options.insert || 'head');\n\n    if (!target) {\n      throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n    }\n\n    target.appendChild(style);\n  }\n\n  return style;\n}\n\nfunction removeStyleElement(style) {\n  // istanbul ignore if\n  if (style.parentNode === null) {\n    return false;\n  }\n\n  style.parentNode.removeChild(style);\n}\n/* istanbul ignore next  */\n\n\nvar replaceText = function replaceText() {\n  var textStore = [];\n  return function replace(index, replacement) {\n    textStore[index] = replacement;\n    return textStore.filter(Boolean).join('\\n');\n  };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n  var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n  /* istanbul ignore if  */\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = replaceText(index, css);\n  } else {\n    var cssNode = document.createTextNode(css);\n    var childNodes = style.childNodes;\n\n    if (childNodes[index]) {\n      style.removeChild(childNodes[index]);\n    }\n\n    if (childNodes.length) {\n      style.insertBefore(cssNode, childNodes[index]);\n    } else {\n      style.appendChild(cssNode);\n    }\n  }\n}\n\nfunction applyToTag(style, options, obj) {\n  var css = obj.css;\n  var media = obj.media;\n  var sourceMap = obj.sourceMap;\n\n  if (media) {\n    style.setAttribute('media', media);\n  } else {\n    style.removeAttribute('media');\n  }\n\n  if (sourceMap && btoa) {\n    css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n  } // For old IE\n\n  /* istanbul ignore if  */\n\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    while (style.firstChild) {\n      style.removeChild(style.firstChild);\n    }\n\n    style.appendChild(document.createTextNode(css));\n  }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n  var style;\n  var update;\n  var remove;\n\n  if (options.singleton) {\n    var styleIndex = singletonCounter++;\n    style = singleton || (singleton = insertStyleElement(options));\n    update = applyToSingletonTag.bind(null, style, styleIndex, false);\n    remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n  } else {\n    style = insertStyleElement(options);\n    update = applyToTag.bind(null, style, options);\n\n    remove = function remove() {\n      removeStyleElement(style);\n    };\n  }\n\n  update(obj);\n  return function updateStyle(newObj) {\n    if (newObj) {\n      if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n        return;\n      }\n\n      update(obj = newObj);\n    } else {\n      remove();\n    }\n  };\n}\n\nmodule.exports = function (list, options) {\n  options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n  // tags it will allow on a page\n\n  if (!options.singleton && typeof options.singleton !== 'boolean') {\n    options.singleton = isOldIE();\n  }\n\n  list = list || [];\n  var lastIdentifiers = modulesToDom(list, options);\n  return function update(newList) {\n    newList = newList || [];\n\n    if (Object.prototype.toString.call(newList) !== '[object Array]') {\n      return;\n    }\n\n    for (var i = 0; i < lastIdentifiers.length; i++) {\n      var identifier = lastIdentifiers[i];\n      var index = getIndexByIdentifier(identifier);\n      stylesInDom[index].references--;\n    }\n\n    var newLastIdentifiers = modulesToDom(newList, options);\n\n    for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n      var _identifier = lastIdentifiers[_i];\n\n      var _index = getIndexByIdentifier(_identifier);\n\n      if (stylesInDom[_index].references === 0) {\n        stylesInDom[_index].updater();\n\n        stylesInDom.splice(_index, 1);\n      }\n    }\n\n    lastIdentifiers = newLastIdentifiers;\n  };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanM/MmRiYSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdURBQXVEOztBQUV2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTs7QUFFQSxpQkFBaUIsd0JBQXdCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLGlCQUFpQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZ0JBQWdCLEtBQXdDLEdBQUcsc0JBQWlCLEdBQUcsU0FBSTs7QUFFbkY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0EscUVBQXFFLHFCQUFxQixhQUFhOztBQUV2Rzs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0EseURBQXlEO0FBQ3pELEdBQUc7O0FBRUg7OztBQUdBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQkFBMEI7QUFDMUI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsNEJBQTRCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLG9CQUFvQiw2QkFBNkI7QUFDakQ7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBpc09sZElFID0gZnVuY3Rpb24gaXNPbGRJRSgpIHtcbiAgdmFyIG1lbW87XG4gIHJldHVybiBmdW5jdGlvbiBtZW1vcml6ZSgpIHtcbiAgICBpZiAodHlwZW9mIG1lbW8gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyBUZXN0IGZvciBJRSA8PSA5IGFzIHByb3Bvc2VkIGJ5IEJyb3dzZXJoYWNrc1xuICAgICAgLy8gQHNlZSBodHRwOi8vYnJvd3NlcmhhY2tzLmNvbS8jaGFjay1lNzFkODY5MmY2NTMzNDE3M2ZlZTcxNWMyMjJjYjgwNVxuICAgICAgLy8gVGVzdHMgZm9yIGV4aXN0ZW5jZSBvZiBzdGFuZGFyZCBnbG9iYWxzIGlzIHRvIGFsbG93IHN0eWxlLWxvYWRlclxuICAgICAgLy8gdG8gb3BlcmF0ZSBjb3JyZWN0bHkgaW50byBub24tc3RhbmRhcmQgZW52aXJvbm1lbnRzXG4gICAgICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrLWNvbnRyaWIvc3R5bGUtbG9hZGVyL2lzc3Vlcy8xNzdcbiAgICAgIG1lbW8gPSBCb29sZWFuKHdpbmRvdyAmJiBkb2N1bWVudCAmJiBkb2N1bWVudC5hbGwgJiYgIXdpbmRvdy5hdG9iKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVtbztcbiAgfTtcbn0oKTtcblxudmFyIGdldFRhcmdldCA9IGZ1bmN0aW9uIGdldFRhcmdldCgpIHtcbiAgdmFyIG1lbW8gPSB7fTtcbiAgcmV0dXJuIGZ1bmN0aW9uIG1lbW9yaXplKHRhcmdldCkge1xuICAgIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpOyAvLyBTcGVjaWFsIGNhc2UgdG8gcmV0dXJuIGhlYWQgb2YgaWZyYW1lIGluc3RlYWQgb2YgaWZyYW1lIGl0c2VsZlxuXG4gICAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhY2Nlc3MgdG8gaWZyYW1lIGlzIGJsb2NrZWRcbiAgICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICAgIHN0eWxlVGFyZ2V0ID0gc3R5bGVUYXJnZXQuY29udGVudERvY3VtZW50LmhlYWQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICAgIHN0eWxlVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBtZW1vW3RhcmdldF0gPSBzdHlsZVRhcmdldDtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVtb1t0YXJnZXRdO1xuICB9O1xufSgpO1xuXG52YXIgc3R5bGVzSW5Eb20gPSBbXTtcblxuZnVuY3Rpb24gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcikge1xuICB2YXIgcmVzdWx0ID0gLTE7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXNJbkRvbS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzdHlsZXNJbkRvbVtpXS5pZGVudGlmaWVyID09PSBpZGVudGlmaWVyKSB7XG4gICAgICByZXN1bHQgPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpIHtcbiAgdmFyIGlkQ291bnRNYXAgPSB7fTtcbiAgdmFyIGlkZW50aWZpZXJzID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldO1xuICAgIHZhciBpZCA9IG9wdGlvbnMuYmFzZSA/IGl0ZW1bMF0gKyBvcHRpb25zLmJhc2UgOiBpdGVtWzBdO1xuICAgIHZhciBjb3VudCA9IGlkQ291bnRNYXBbaWRdIHx8IDA7XG4gICAgdmFyIGlkZW50aWZpZXIgPSBcIlwiLmNvbmNhdChpZCwgXCIgXCIpLmNvbmNhdChjb3VudCk7XG4gICAgaWRDb3VudE1hcFtpZF0gPSBjb3VudCArIDE7XG4gICAgdmFyIGluZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgdmFyIG9iaiA9IHtcbiAgICAgIGNzczogaXRlbVsxXSxcbiAgICAgIG1lZGlhOiBpdGVtWzJdLFxuICAgICAgc291cmNlTWFwOiBpdGVtWzNdXG4gICAgfTtcblxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHN0eWxlc0luRG9tW2luZGV4XS5yZWZlcmVuY2VzKys7XG4gICAgICBzdHlsZXNJbkRvbVtpbmRleF0udXBkYXRlcihvYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZXNJbkRvbS5wdXNoKHtcbiAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgdXBkYXRlcjogYWRkU3R5bGUob2JqLCBvcHRpb25zKSxcbiAgICAgICAgcmVmZXJlbmNlczogMVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuXG4gIHJldHVybiBpZGVudGlmaWVycztcbn1cblxuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgdmFyIGF0dHJpYnV0ZXMgPSBvcHRpb25zLmF0dHJpYnV0ZXMgfHwge307XG5cbiAgaWYgKHR5cGVvZiBhdHRyaWJ1dGVzLm5vbmNlID09PSAndW5kZWZpbmVkJykge1xuICAgIHZhciBub25jZSA9IHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gJ3VuZGVmaW5lZCcgPyBfX3dlYnBhY2tfbm9uY2VfXyA6IG51bGw7XG5cbiAgICBpZiAobm9uY2UpIHtcbiAgICAgIGF0dHJpYnV0ZXMubm9uY2UgPSBub25jZTtcbiAgICB9XG4gIH1cblxuICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBzdHlsZS5zZXRBdHRyaWJ1dGUoa2V5LCBhdHRyaWJ1dGVzW2tleV0pO1xuICB9KTtcblxuICBpZiAodHlwZW9mIG9wdGlvbnMuaW5zZXJ0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgb3B0aW9ucy5pbnNlcnQoc3R5bGUpO1xuICB9IGVsc2Uge1xuICAgIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQob3B0aW9ucy5pbnNlcnQgfHwgJ2hlYWQnKTtcblxuICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICAgIH1cblxuICAgIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gIH1cblxuICByZXR1cm4gc3R5bGU7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZSkge1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgaWZcbiAgaWYgKHN0eWxlLnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdHlsZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlKTtcbn1cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5cbnZhciByZXBsYWNlVGV4dCA9IGZ1bmN0aW9uIHJlcGxhY2VUZXh0KCkge1xuICB2YXIgdGV4dFN0b3JlID0gW107XG4gIHJldHVybiBmdW5jdGlvbiByZXBsYWNlKGluZGV4LCByZXBsYWNlbWVudCkge1xuICAgIHRleHRTdG9yZVtpbmRleF0gPSByZXBsYWNlbWVudDtcbiAgICByZXR1cm4gdGV4dFN0b3JlLmZpbHRlcihCb29sZWFuKS5qb2luKCdcXG4nKTtcbiAgfTtcbn0oKTtcblxuZnVuY3Rpb24gYXBwbHlUb1NpbmdsZXRvblRhZyhzdHlsZSwgaW5kZXgsIHJlbW92ZSwgb2JqKSB7XG4gIHZhciBjc3MgPSByZW1vdmUgPyAnJyA6IG9iai5tZWRpYSA/IFwiQG1lZGlhIFwiLmNvbmNhdChvYmoubWVkaWEsIFwiIHtcIikuY29uY2F0KG9iai5jc3MsIFwifVwiKSA6IG9iai5jc3M7IC8vIEZvciBvbGQgSUVcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSByZXBsYWNlVGV4dChpbmRleCwgY3NzKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgY3NzTm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcyk7XG4gICAgdmFyIGNoaWxkTm9kZXMgPSBzdHlsZS5jaGlsZE5vZGVzO1xuXG4gICAgaWYgKGNoaWxkTm9kZXNbaW5kZXhdKSB7XG4gICAgICBzdHlsZS5yZW1vdmVDaGlsZChjaGlsZE5vZGVzW2luZGV4XSk7XG4gICAgfVxuXG4gICAgaWYgKGNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICBzdHlsZS5pbnNlcnRCZWZvcmUoY3NzTm9kZSwgY2hpbGROb2Rlc1tpbmRleF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZS5hcHBlbmRDaGlsZChjc3NOb2RlKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlUb1RhZyhzdHlsZSwgb3B0aW9ucywgb2JqKSB7XG4gIHZhciBjc3MgPSBvYmouY3NzO1xuICB2YXIgbWVkaWEgPSBvYmoubWVkaWE7XG4gIHZhciBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwO1xuXG4gIGlmIChtZWRpYSkge1xuICAgIHN0eWxlLnNldEF0dHJpYnV0ZSgnbWVkaWEnLCBtZWRpYSk7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUucmVtb3ZlQXR0cmlidXRlKCdtZWRpYScpO1xuICB9XG5cbiAgaWYgKHNvdXJjZU1hcCAmJiBidG9hKSB7XG4gICAgY3NzICs9IFwiXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIi5jb25jYXQoYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSwgXCIgKi9cIik7XG4gIH0gLy8gRm9yIG9sZCBJRVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cblxuXG4gIGlmIChzdHlsZS5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdHlsZS5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZS5yZW1vdmVDaGlsZChzdHlsZS5maXJzdENoaWxkKTtcbiAgICB9XG5cbiAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxuXG52YXIgc2luZ2xldG9uID0gbnVsbDtcbnZhciBzaW5nbGV0b25Db3VudGVyID0gMDtcblxuZnVuY3Rpb24gYWRkU3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBzdHlsZTtcbiAgdmFyIHVwZGF0ZTtcbiAgdmFyIHJlbW92ZTtcblxuICBpZiAob3B0aW9ucy5zaW5nbGV0b24pIHtcbiAgICB2YXIgc3R5bGVJbmRleCA9IHNpbmdsZXRvbkNvdW50ZXIrKztcbiAgICBzdHlsZSA9IHNpbmdsZXRvbiB8fCAoc2luZ2xldG9uID0gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpKTtcbiAgICB1cGRhdGUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGUsIHN0eWxlSW5kZXgsIGZhbHNlKTtcbiAgICByZW1vdmUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGUsIHN0eWxlSW5kZXgsIHRydWUpO1xuICB9IGVsc2Uge1xuICAgIHN0eWxlID0gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpO1xuICAgIHVwZGF0ZSA9IGFwcGx5VG9UYWcuYmluZChudWxsLCBzdHlsZSwgb3B0aW9ucyk7XG5cbiAgICByZW1vdmUgPSBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGUpO1xuICAgIH07XG4gIH1cblxuICB1cGRhdGUob2JqKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZVN0eWxlKG5ld09iaikge1xuICAgIGlmIChuZXdPYmopIHtcbiAgICAgIGlmIChuZXdPYmouY3NzID09PSBvYmouY3NzICYmIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmIG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB1cGRhdGUob2JqID0gbmV3T2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlKCk7XG4gICAgfVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChsaXN0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OyAvLyBGb3JjZSBzaW5nbGUtdGFnIHNvbHV0aW9uIG9uIElFNi05LCB3aGljaCBoYXMgYSBoYXJkIGxpbWl0IG9uIHRoZSAjIG9mIDxzdHlsZT5cbiAgLy8gdGFncyBpdCB3aWxsIGFsbG93IG9uIGEgcGFnZVxuXG4gIGlmICghb3B0aW9ucy5zaW5nbGV0b24gJiYgdHlwZW9mIG9wdGlvbnMuc2luZ2xldG9uICE9PSAnYm9vbGVhbicpIHtcbiAgICBvcHRpb25zLnNpbmdsZXRvbiA9IGlzT2xkSUUoKTtcbiAgfVxuXG4gIGxpc3QgPSBsaXN0IHx8IFtdO1xuICB2YXIgbGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlKG5ld0xpc3QpIHtcbiAgICBuZXdMaXN0ID0gbmV3TGlzdCB8fCBbXTtcblxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobmV3TGlzdCkgIT09ICdbb2JqZWN0IEFycmF5XScpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGlkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbaV07XG4gICAgICB2YXIgaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICAgIHN0eWxlc0luRG9tW2luZGV4XS5yZWZlcmVuY2VzLS07XG4gICAgfVxuXG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX2lkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbX2ldO1xuXG4gICAgICB2YXIgX2luZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoX2lkZW50aWZpZXIpO1xuXG4gICAgICBpZiAoc3R5bGVzSW5Eb21bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRG9tW19pbmRleF0udXBkYXRlcigpO1xuXG4gICAgICAgIHN0eWxlc0luRG9tLnNwbGljZShfaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxhc3RJZGVudGlmaWVycyA9IG5ld0xhc3RJZGVudGlmaWVycztcbiAgfTtcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\n");

/***/ })

/******/ })));