87 lines
370 KiB
JavaScript
87 lines
370 KiB
JavaScript
/*
|
|
* ATTENTION: An "eval-source-map" devtool has been used.
|
|
* This devtool is neither made for production nor for readable output files.
|
|
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
|
|
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
|
* or disable the default devtool with "devtool: false".
|
|
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
|
*/
|
|
/******/ (() => { // webpackBootstrap
|
|
/******/ var __webpack_modules__ = ({
|
|
|
|
/***/ "./resources/js/admin/dashboard.js"
|
|
/*!*****************************************!*\
|
|
!*** ./resources/js/admin/dashboard.js ***!
|
|
\*****************************************/
|
|
() {
|
|
|
|
eval("{window.Dashboard = function () {\n var Opts = {\n active: false,\n containerCssSelector: \".dashboard\",\n testFileMod: false,\n isAdmin: false,\n URL: {\n create: '',\n store: '',\n getDataTableContent: '',\n destroy: ''\n }\n };\n var root = this;\n /*\r\n * Constructor\r\n */\n this.construct = function (options) {\n debug('Dashboard constructor called');\n $.extend(Opts, options);\n };\n this.getOpts = function () {\n return Opts;\n };\n this.init = function (options) {\n console.log('Dashboard init called');\n $.extend(Opts, options);\n /*\r\n APP.setOpts({\r\n afterLoadMainContent:root.initEditor,\r\n })\r\n */\n /*\r\n Init list view\r\n */\n root.initEditorButtons();\n };\n this.initEditorButtons = function () {\n $('.DashboardEditable button.edit').off('click');\n $('.DashboardEditable button.edit').on('click', function () {\n root.initEditor();\n $('.btnGroupEdit').toggleClass('d-none');\n $('.btnGroupModify').toggleClass('d-none');\n });\n $('.DashboardEditable button.btnSave').off('click');\n $('.DashboardEditable button.btnSave').on('click', function () {\n /*$('.btnGroupEdit').toggleClass('d-none');\r\n $('.btnGroupModify').toggleClass('d-none');\r\n */\n root.saveCustomContent();\n //tinymce.activeEditor.isDirty() //true when modified\n });\n $('.DashboardEditable button.btnCancel').off('click');\n $('.DashboardEditable button.btnCancel').on('click', function () {\n $('.btnGroupEdit').toggleClass('d-none');\n $('.btnGroupModify').toggleClass('d-none');\n root.removeEditor();\n });\n };\n this.saveCustomContent = function () {\n var ajaxData = new FormData($('.dashboardForm')[0]);\n ajaxData.append('stored_data', tinymce.activeEditor.getContent());\n var ajaxUrl = Opts.URL.update.replace('%id%', $('div.dashboardCustomContent').data('id'));\n ajaxData.append('_method', 'PUT');\n $.ajax({\n url: ajaxUrl,\n data: ajaxData,\n type: 'POST',\n contentType: false,\n processData: false,\n beforeSend: function beforeSend() {},\n success: function success(data) {\n Toast.create(\"Siekeres mentés!\", 'Új tartalom elmentve.', TOAST_STATUS.INFO, 5000);\n },\n error: function error(data) {\n console.log(data.responseJSON);\n ajaxErrorFieldHandler(data.responseJSON.error);\n }\n });\n };\n this.loadTinymce = function () {\n $.getScript('https://cdn.tiny.cloud/1/no-api-key/tinymce/5/tinymce.min.js', function () {\n root.initEditor();\n });\n };\n this.removeEditor = function (options) {\n if (typeof tinymce !== \"undefined\") {\n tinymce.remove();\n }\n };\n this.initEditor = function (options) {\n if (typeof tinymce === \"undefined\") {\n root.loadTinymce();\n return;\n }\n tinymce.init({\n selector: 'div.dashboardCustomContent',\n // Replace this CSS selector to match the placeholder element for TinyMCE\n language: 'hu_HU',\n plugins: 'code table lists',\n toolbar: ' undo redo | formatselect| bold italic | alignleft aligncenter alignright | indent outdent | bullist numlist | code | table'\n\n /*\r\n toolbar: 'customInsertButton | undo redo | formatselect| bold italic | alignleft aligncenter alignright | indent outdent | bullist numlist | code | table',\r\n setup: function (editor) {\r\n editor.ui.registry.addButton('customInsertButton', {\r\n text: 'My Button',\r\n onAction: function (_) {\r\n editor.insertContent(' <strong>It\\'s my button!</strong> ');\r\n }});\r\n }\r\n */\n });\n };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ3aW5kb3ciLCJEYXNoYm9hcmQiLCJPcHRzIiwiYWN0aXZlIiwiY29udGFpbmVyQ3NzU2VsZWN0b3IiLCJ0ZXN0RmlsZU1vZCIsImlzQWRtaW4iLCJVUkwiLCJjcmVhdGUiLCJzdG9yZSIsImdldERhdGFUYWJsZUNvbnRlbnQiLCJkZXN0cm95Iiwicm9vdCIsImNvbnN0cnVjdCIsIm9wdGlvbnMiLCJkZWJ1ZyIsIiQiLCJleHRlbmQiLCJnZXRPcHRzIiwiaW5pdCIsImNvbnNvbGUiLCJsb2ciLCJpbml0RWRpdG9yQnV0dG9ucyIsIm9mZiIsIm9uIiwiaW5pdEVkaXRvciIsInRvZ2dsZUNsYXNzIiwic2F2ZUN1c3RvbUNvbnRlbnQiLCJyZW1vdmVFZGl0b3IiLCJhamF4RGF0YSIsIkZvcm1EYXRhIiwiYXBwZW5kIiwidGlueW1jZSIsImFjdGl2ZUVkaXRvciIsImdldENvbnRlbnQiLCJhamF4VXJsIiwidXBkYXRlIiwicmVwbGFjZSIsImRhdGEiLCJhamF4IiwidXJsIiwidHlwZSIsImNvbnRlbnRUeXBlIiwicHJvY2Vzc0RhdGEiLCJiZWZvcmVTZW5kIiwic3VjY2VzcyIsIlRvYXN0IiwiVE9BU1RfU1RBVFVTIiwiSU5GTyIsImVycm9yIiwicmVzcG9uc2VKU09OIiwiYWpheEVycm9yRmllbGRIYW5kbGVyIiwibG9hZFRpbnltY2UiLCJnZXRTY3JpcHQiLCJyZW1vdmUiLCJzZWxlY3RvciIsImxhbmd1YWdlIiwicGx1Z2lucyIsInRvb2xiYXIiXSwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL2pzL2FkbWluL2Rhc2hib2FyZC5qcz9lMGQ5Il0sInNvdXJjZXNDb250ZW50IjpbIndpbmRvdy5EYXNoYm9hcmQ9ZnVuY3Rpb24gKCkge1xyXG4gICAgbGV0IE9wdHMgPSB7XHJcbiAgICAgICAgYWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBjb250YWluZXJDc3NTZWxlY3RvcjpcIi5kYXNoYm9hcmRcIixcclxuICAgICAgICB0ZXN0RmlsZU1vZDpmYWxzZSxcclxuICAgICAgICBpc0FkbWluOmZhbHNlLFxyXG4gICAgICAgIFVSTDp7XHJcbiAgICAgICAgICAgIGNyZWF0ZTonJyxcclxuICAgICAgICAgICAgc3RvcmU6JycsXHJcbiAgICAgICAgICAgIGdldERhdGFUYWJsZUNvbnRlbnQ6JycsXHJcbiAgICAgICAgICAgIGRlc3Ryb3k6JycsXHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGxldCByb290ID0gdGhpcztcclxuICAgIC8qXHJcbiAgICAgKiBDb25zdHJ1Y3RvclxyXG4gICAgICovXHJcbiAgICB0aGlzLmNvbnN0cnVjdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XHJcbiAgICAgICAgZGVidWcoJ0Rhc2hib2FyZCBjb25zdHJ1Y3RvciBjYWxsZWQnKTtcclxuICAgICAgICAkLmV4dGVuZChPcHRzLCBvcHRpb25zKTtcclxuICAgIH07XHJcbiAgICB0aGlzLmdldE9wdHM9ZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgcmV0dXJuIE9wdHM7XHJcbiAgICB9XHJcbiAgICB0aGlzLmluaXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdEYXNoYm9hcmQgaW5pdCBjYWxsZWQnKTtcclxuICAgICAgICAkLmV4dGVuZChPcHRzLCBvcHRpb25zKTtcclxuLypcclxuICAgICAgICBBUFAuc2V0T3B0cyh7XHJcbiAgICAgICAgICAgIGFmdGVyTG9hZE1haW5Db250ZW50OnJvb3QuaW5pdEVkaXRvcixcclxuICAgICAgICB9KVxyXG4qL1xyXG4gICAgICAgIC8qXHJcbiAgICAgICAgSW5pdCBsaXN0IHZpZXdcclxuICAgICAgICAqL1xyXG4gICAgICAgIHJvb3QuaW5pdEVkaXRvckJ1dHRvbnMoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmluaXRFZGl0b3JCdXR0b25zPWZ1bmN0aW9uICgpe1xyXG4gICAgICAgICQoJy5EYXNoYm9hcmRFZGl0YWJsZSBidXR0b24uZWRpdCcpLm9mZignY2xpY2snKTtcclxuICAgICAgICAkKCcuRGFzaGJvYXJkRWRpdGFibGUgYnV0dG9uLmVkaXQnKS5vbignY2xpY2snLGZ1bmN0aW9uICgpe1xyXG4gICAgICAgICAgICByb290LmluaXRFZGl0b3IoKTtcclxuICAgICAgICAgICAgJCgnLmJ0bkdyb3VwRWRpdCcpLnRvZ2dsZUNsYXNzKCdkLW5vbmUnKTtcclxuICAgICAgICAgICAgJCgnLmJ0bkdyb3VwTW9kaWZ5JykudG9nZ2xlQ2xhc3MoJ2Qtbm9uZScpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAkKCcuRGFzaGJvYXJkRWRpdGFibGUgYnV0dG9uLmJ0blNhdmUnKS5vZmYoJ2NsaWNrJyk7XHJcbiAgICAgICAgJCgnLkRhc2hib2FyZEVkaXRhYmxlIGJ1dHRvbi5idG5TYXZlJykub24oJ2NsaWNrJyxmdW5jdGlvbiAoKXtcclxuICAgICAgICAgICAgLyokKCcuYnRuR3JvdXBFZGl0JykudG9nZ2xlQ2xhc3MoJ2Qtbm9uZScpO1xyXG4gICAgICAgICAgICAkKCcuYnRuR3JvdXBNb2RpZnknKS50b2dnbGVDbGFzcygnZC1ub25lJyk7XHJcbiAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIHJvb3Quc2F2ZUN1c3RvbUNvbnRlbnQoKTtcclxuICAgICAgICAgICAgLy90aW55bWNlLmFjdGl2ZUVkaXRvci5pc0RpcnR5KCkgLy90cnVlIHdoZW4gbW9kaWZpZWRcclxuICAgICAgICB9KTtcclxuXHJcblxyXG5cclxuICAgICAgICAkKCcuRGFzaGJvYXJkRWRpdGFibGUgYnV0dG9uLmJ0bkNhbmNlbCcpLm9mZignY2xpY2snKTtcclxuICAgICAgICAkKCcuRGFzaGJvYXJkRWRpdGFibGUgYnV0dG9uLmJ0bkNhbmNlbCcpLm9uKCdjbGljaycsZnVuY3Rpb24gKCl7XHJcblxyXG4gICAgICAgICAgICAkKCcuYnRuR3JvdXBFZGl0JykudG9nZ2xlQ2xhc3MoJ2Qtbm9uZScpO1xyXG4gICAgICAgICAgICAkKCcuYnRuR3JvdXBNb2RpZnknKS50b2dnbGVDbGFzcygnZC1ub25lJyk7XHJcbiAgICAgICAgICAgIHJvb3QucmVtb3ZlRWRpdG9yKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2F2ZUN1c3RvbUNvbnRlbnQ9ZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgbGV0IGFqYXhEYXRhPSBuZXcgRm9ybURhdGEoJCgnLmRhc2hib2FyZEZvcm0nKVswXSk7XHJcbiAgICAgICAgYWpheERhdGEuYXBwZW5kKCdzdG9yZWRfZGF0YScsdGlueW1jZS5hY3RpdmVFZGl0b3IuZ2V0Q29udGVudCgpKTtcclxuICAgICAgICBsZXQgYWpheFVybD1PcHRzLlVSTC51cGRhdGUucmVwbGFjZSgnJWlkJScsJCgnZGl2LmRhc2hib2FyZEN1c3RvbUNvbnRlbnQnKS5kYXRhKCdpZCcpKTtcclxuICAgICAgICBhamF4RGF0YS5hcHBlbmQoJ19tZXRob2QnLCdQVVQnKTtcclxuICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICB1cmw6YWpheFVybCxcclxuICAgICAgICAgICAgZGF0YTphamF4RGF0YSxcclxuICAgICAgICAgICAgdHlwZTonUE9TVCcsXHJcbiAgICAgICAgICAgIGNvbnRlbnRUeXBlOmZhbHNlLFxyXG4gICAgICAgICAgICBwcm9jZXNzRGF0YTogZmFsc2UsXHJcbiAgICAgICAgICAgIGJlZm9yZVNlbmQ6IGZ1bmN0aW9uKCkge1xyXG5cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgVG9hc3QuY3JlYXRlKFwiU2lla2VyZXMgbWVudMOpcyFcIiwnw5pqIHRhcnRhbG9tIGVsbWVudHZlLicgLCBUT0FTVF9TVEFUVVMuSU5GTyw1MDAwKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEucmVzcG9uc2VKU09OKTtcclxuICAgICAgICAgICAgICAgIGFqYXhFcnJvckZpZWxkSGFuZGxlcihkYXRhLnJlc3BvbnNlSlNPTi5lcnJvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG5cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxvYWRUaW55bWNlPSBmdW5jdGlvbiAoKXtcclxuICAgICAgICAkLmdldFNjcmlwdCgnaHR0cHM6Ly9jZG4udGlueS5jbG91ZC8xL25vLWFwaS1rZXkvdGlueW1jZS81L3RpbnltY2UubWluLmpzJyxmdW5jdGlvbiAoKXtcclxuICAgICAgICAgICByb290LmluaXRFZGl0b3IoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMucmVtb3ZlRWRpdG9yID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcclxuICAgICAgICBpZih0eXBlb2YgdGlueW1jZSE9PVwidW5kZWZpbmVkXCIpe1xyXG4gICAgICAgICAgICB0aW55bWNlLnJlbW92ZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuaW5pdEVkaXRvciA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XHJcblxyXG4gICAgICAgIGlmKHR5cGVvZiB0aW55bWNlPT09XCJ1bmRlZmluZWRcIil7XHJcbiAgICAgICAgICAgIHJvb3QubG9hZFRpbnltY2UoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGlueW1jZS5pbml0KHtcclxuICAgICAgICAgICAgc2VsZWN0b3I6ICdkaXYuZGFzaGJvYXJkQ3VzdG9tQ29udGVudCcsIC8vIFJlcGxhY2UgdGhpcyBDU1Mgc2VsZWN0b3IgdG8gbWF0Y2ggdGhlIHBsYWNlaG9sZGVyIGVsZW1lbnQgZm9yIFRpbnlNQ0VcclxuICAgICAgICAgICAgbGFuZ3VhZ2U6ICdodV9IVScsXHJcbiAgICAgICAgICAgIHBsdWdpbnM6ICdjb2RlIHRhYmxlIGxpc3RzJyxcclxuICAgICAgICAgICAgdG9vbGJhcjogJyB1bmRvIHJlZG8gfCBmb3JtYXRzZWxlY3R8IGJvbGQgaXRhbGljIHwgYWxpZ25sZWZ0IGFsaWduY2VudGVyIGFsaWducmlnaHQgfCBpbmRlbnQgb3V0ZGVudCB8IGJ1bGxpc3QgbnVtbGlzdCB8IGNvZGUgfCB0YWJsZScsXHJcblxyXG4vKlxyXG4gICAgICAgICAgICB0b29sYmFyOiAnY3VzdG9tSW5zZXJ0QnV0dG9uIHwgdW5kbyByZWRvIHwgZm9ybWF0c2VsZWN0fCBib2xkIGl0YWxpYyB8IGFsaWdubGVmdCBhbGlnbmNlbnRlciBhbGlnbnJpZ2h0IHwgaW5kZW50IG91dGRlbnQgfCBidWxsaXN0IG51bWxpc3QgfCBjb2RlIHwgdGFibGUnLFxyXG4gICAgICAgICAgICBzZXR1cDogZnVuY3Rpb24gKGVkaXRvcikge1xyXG4gICAgICAgICAgICAgICAgZWRpdG9yLnVpLnJlZ2lzdHJ5LmFkZEJ1dHRvbignY3VzdG9tSW5zZXJ0QnV0dG9uJywge1xyXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6ICdNeSBCdXR0b24nLFxyXG4gICAgICAgICAgICAgICAgICAgIG9uQWN0aW9uOiBmdW5jdGlvbiAoXykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3IuaW5zZXJ0Q29udGVudCgnJm5ic3A7PHN0cm9uZz5JdFxcJ3MgbXkgYnV0dG9uITwvc3Ryb25nPiZuYnNwOycpO1xyXG4gICAgICAgICAgICAgICAgICAgIH19KTtcclxuICAgICAgICAgICAgfVxyXG4qL1xyXG5cclxuICAgICAgICB9KTtcclxuICAgIH1cclxufTtcclxuIl0sIm1hcHBpbmdzIjoiQUFBQUEsTUFBTSxDQUFDQyxTQUFTLEdBQUMsWUFBWTtFQUN6QixJQUFJQyxJQUFJLEdBQUc7SUFDUEMsTUFBTSxFQUFFLEtBQUs7SUFDYkMsb0JBQW9CLEVBQUMsWUFBWTtJQUNqQ0MsV0FBVyxFQUFDLEtBQUs7SUFDakJDLE9BQU8sRUFBQyxLQUFLO0lBQ2JDLEdBQUcsRUFBQztNQUNBQyxNQUFNLEVBQUMsRUFBRTtNQUNUQyxLQUFLLEVBQUMsRUFB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\n//# sourceURL=webpack-internal:///./resources/js/admin/dashboard.js\n\n}");
|
|
|
|
/***/ },
|
|
|
|
/***/ "./resources/js/admin/priceList.js"
|
|
/*!*****************************************!*\
|
|
!*** ./resources/js/admin/priceList.js ***!
|
|
\*****************************************/
|
|
() {
|
|
|
|
eval("{window.PriceListAdmin = function (options, ProfitCenterItem) {\n /*\r\n * Variables accessible\r\n * in the class\r\n */\n var Opts = {\n active: false,\n containerCssSelector: \".priceListForm\",\n testFileMod: false,\n URL: {\n create: '',\n store: '',\n getDataTableContent: '',\n destroy: ''\n }\n };\n var PriceList = {};\n var root = this;\n var dataTableCSSSelector = null;\n\n /*\r\n * Constructor\r\n */\n this.construct = function (options) {\n debug('PriceListAdmin constructor called');\n $.extend(Opts, options);\n };\n var errorRowPointer = null;\n var errorRowCount = 0;\n this.initErrorNavigationButton = function () {\n errorRowCount = $('.statusError').length;\n errorRowPointer = null;\n $('.priceListForm .buttonPrevError .buttonNextError').off('click');\n $('.priceListForm .buttonPrevError').on('click', function () {\n if (errorRowPointer == null) {\n errorRowPointer = 0;\n } else {\n if (errorRowPointer > 0) {\n errorRowPointer--;\n } else {\n return;\n }\n }\n $('.statusError').removeClass('highlightedErrorRow');\n $('.priceListTableWrapper').scrollTop($($('.statusError')[errorRowPointer]).position().top);\n $($('.statusError')[errorRowPointer]).addClass('highlightedErrorRow');\n });\n $('.priceListForm .buttonNextError').off('click');\n $('.priceListForm .buttonNextError').on('click', function () {\n if (errorRowPointer == null) {\n errorRowPointer = 0;\n } else {\n if (errorRowPointer < errorRowCount - 1) {\n errorRowPointer++;\n } else {\n return;\n }\n }\n $('.statusError').removeClass('highlightedErrorRow');\n $('.priceListTableWrapper').scrollTop($($('.statusError')[errorRowPointer]).position().top);\n $($('.statusError')[errorRowPointer]).addClass('highlightedErrorRow');\n });\n };\n this.selectedUploadFileToggle = function (fileInput) {\n /*\r\n console.log(fileInput.attr('name'));\r\n console.log(fileInput[0].files[0]);\r\n console.log(fileInput[0].files[0].name);\r\n */\n if (fileInput) {\n $('.containerFileUpload').addClass('d-none');\n if (fileInput[0].files[0]) {\n $('.containerUploadedFileName').text(fileInput[0].files[0].name);\n }\n $('.containerFileUploadStarted').removeClass('d-none');\n $('.containerUploadedSpinner').removeClass('d-none');\n } else {\n $('.containerUploadedFileName').text('');\n $('.containerFileUploadStarted').addClass('d-none');\n $('.uploadStatusRow').addClass('d-none');\n $('.priceListTable > tbody').empty();\n $('.containerFileUpload').removeClass('d-none');\n }\n };\n this.clickNewPriceListCallBack = function () {\n root.initViewDetails();\n };\n this.clickNewPriceList = function () {\n APP.loadMainContent(Opts.URL.create, root.clickNewPriceListCallBack);\n };\n this.datatableRowActionButtonClick = function (event) {\n var node = $(event[0].currentTarget);\n var row = $(dataTableCSSSelector).DataTable().row(node.parents('tr'));\n var rowData = row.data();\n //_token\n var ajaxData = {};\n var ajaxUrl = Opts.URL.destroy.replace('%id%', rowData.id);\n ajaxData._token = $('input[name=_token]').val();\n $.ajax({\n url: ajaxUrl,\n data: ajaxData,\n method: \"DELETE\",\n success: function success(data) {\n if (data.success == true) {\n row.remove().draw();\n }\n }\n });\n /*\r\n */\n };\n this.initViewList = function (options) {\n debug('listview inicialization');\n dataTableCSSSelector = Opts.containerCssSelector + ' .dataTable'; //\n\n var colNum = $(dataTableCSSSelector + ' thead th').length; //buttons insert position need\n APP.setOpts({\n datatableActionButtonClickCallBack: root.clickNewPriceList,\n datatableRowActionButtonClickCallBack: root.datatableRowActionButtonClick\n });\n APP.dataTablePriceList = $(dataTableCSSSelector).DataTable({\n language: {\n url: '//cdn.datatables.net/plug-ins/1.10.24/i18n/Hungarian.json'\n },\n //\"ajax\": \"{{asset('exapmle2.json')}}\",\n \"ajax\": Opts.URL.getDataTableContent,\n \"columnDefs\": [{\n \"targets\": colNum - 1,\n \"render\": function render(data, type, row) {\n var buttons = APP.datatableAddRowTrashButton(0, arguments);\n //buttons+=APP.datatableAddRowEditButton(0,arguments);\n return buttons;\n }\n }\n //{ \"visible\": false, \"targets\": [ 0 ] }\n ],\n buttons: {\n buttons: [\n //'createState', 'savedStates',\n 'excel', 'pdf', {\n extend: 'print',\n //text: 'Print current page',\n 'title': 'title custom text',\n 'messageTop': 'Message On Top',\n autoPrint: true\n }, /**/\n\n {\n text: 'Új felvitele',\n className: 'btn btn-success newItem',\n attr: {\n /*\r\n data:{\r\n a:1,\r\n b:2\r\n }\r\n */\n 'data': 'newItem'\n },\n init: function init(api, node, config) {\n $(node).removeClass('ui-button');\n },\n action: function action(e, dt, node, config) {\n APP.datatableActionButtonClickCallBack(arguments);\n /* console.log(e);\r\n console.log(dt);\r\n console.log(node);\r\n console.log(config);*/\n }\n }]\n },\n \"columns\": [{\n \"data\": \"id\"\n }, {\n \"data\": \"supplierName\"\n }, {\n \"data\": \"available\"\n }, {\n \"data\": \"created_at\"\n }, {\n \"data\": \"note\"\n }, null],\n \"stateSave\": true,\n \"drawCallback\": function drawCallback(settings) {\n APP.datatableAddRowAction(dataTableCSSSelector);\n }\n });\n };\n this.initViewDetails = function (options) {\n $(Opts.containerCssSelector + ' .datePickerClick').off('click');\n $(Opts.containerCssSelector + ' .datePickerClick').on('click', function () {\n $(Opts.containerCssSelector + ' .datePicker').datepicker('show');\n });\n $(Opts.containerCssSelector + ' .datePicker').datepicker({\n dateFormat: 'yy-mm-dd',\n onSelect: function onSelect(dateText) {\n console.log(dateText);\n $('.selectedDateText').text(dateText.replaceAll('-', '.'));\n $('input[name=\"availableDate\"]').val(dateText);\n }\n });\n $(Opts.containerCssSelector + ' .buttonNewUpload').off('click');\n $(Opts.containerCssSelector + ' .buttonNewUpload').on('click', function () {\n root.selectedUploadFileToggle();\n });\n $(Opts.containerCssSelector + ' .buttonUpload').off('click');\n $(Opts.containerCssSelector + ' .buttonUpload').on('click', function () {\n console.log('------------------');\n root.selectedUploadFileToggle();\n var data = new FormData($('.priceListForm')[0]);\n if ($('.supplierSelect').val().length < 1) {\n Toast.create(\"Hiba!\", 'Adjon meg beszállítót!', TOAST_STATUS.DANGER, 10000);\n return;\n }\n var fileInput = $('#inputGroupPriceListFile');\n console.log(fileInput[0].files.length < 1);\n\n /* teszteles miatt kikapcsolva a fajl ellenorzes\r\n */\n if (!Opts.testFileMod) {\n console.log(fileInput[0].files.length < 1);\n if (fileInput[0].files.length < 1) {\n Toast.create(\"Hiba!\", 'Vállaszon ki fájlt!', TOAST_STATUS.DANGER, 10000);\n return;\n }\n }\n data.append(fileInput.attr('name'), fileInput[0].files[0]);\n root.selectedUploadFileToggle(fileInput);\n $.ajax({\n url: Opts.URL.store,\n data: data,\n type: 'POST',\n contentType: false,\n processData: false,\n beforeSend: function beforeSend() {},\n success: function success(data) {\n console.log(data);\n if (data.success == true) {\n root.processCheckedPriceListResponse(data);\n }\n },\n error: function error(data) {\n console.log(data.responseJSON);\n root.selectedUploadFileToggle();\n ajaxErrorFieldHandler(data.responseJSON.error);\n }\n });\n });\n $(Opts.containerCssSelector + ' .buttonFinalization').on('click', function () {\n var data = new FormData($('.priceListForm')[0]);\n var fileInput = $('#inputGroupPriceListFile');\n data.append(fileInput.attr('name'), fileInput[0].files[0]);\n data.append('finalization', 1);\n $.ajax({\n url: Opts.URL.store,\n data: data,\n type: 'POST',\n contentType: false,\n processData: false,\n beforeSend: function beforeSend() {},\n success: function success(data) {\n console.log(data);\n if (data.success) {\n $('.priceListTable tbody tr').remove();\n $('.uploadStatusRow >.canFinish').hide();\n $('.uploadStatusRow').addClass('d-none');\n $('.priceListTable tbody').append('<tr><td colspan=\"99\" style=\"text-align: center;' + ' font-size: 2em;\"> Árlistát elmentettük.</td></tr>');\n }\n /*\r\n if(data.success==1){\r\n root.processCheckedPriceListResponse(data);\r\n }\r\n */\n },\n error: function error(data) {\n console.log(data.responseJSON);\n ajaxErrorFieldHandler(data.responseJSON.error);\n }\n });\n });\n };\n this.init = function (options) {\n console.log('PriceListAdmin init called');\n $.extend(Opts, options);\n console.log('Opt extended');\n console.log(Opts);\n /*\r\n Init list view\r\n */\n console.log('call list view Init');\n root.initViewList(options);\n };\n this.getOpts = function () {\n return Opts;\n };\n var priceListHasError = false;\n this.processCheckedPriceListResponse = function (responseData) {\n priceListHasError = false;\n root.processCheckedPriceListResponseRows(responseData.rows);\n if (priceListHasError) {\n $('.uploadStatusRow >.canFinish').hide();\n $('.uploadStatusRow >.canFinishError').show();\n root.initErrorNavigationButton();\n } else {\n $('.uploadStatusRow >.canFinish').show();\n $('.uploadStatusRow >.canFinishError').hide();\n }\n $('.uploadStatusRow').removeClass('d-none');\n $('.containerUploadedSpinner').addClass('d-none');\n };\n this.processCheckedPriceListResponseRows = function (responseRowsData) {\n console.log('processingRows');\n for (var key in responseRowsData) {\n var rowData = responseRowsData[key];\n var templateData = rowData.originalData;\n templateData.rowNum = rowData.rowNum;\n var template = $('template[data-name=\"priceListTableRow\"]').html();\n var render = Mustache.render(template, templateData);\n $('.priceListTable tbody').append(render);\n $('tr[data-rownum=' + rowData.rowNum + ']').addClass('status' + $.ucFirst(rowData.status));\n root.processResponseRowErrors(rowData.error, rowData.rowNum);\n if (rowData.changed) {\n root.processResponseRowChanged(rowData.changed, rowData.rowNum);\n }\n }\n };\n this.processResponseRowChanged = function (changedArray, rowNum) {\n if (changedArray.length < 1) {\n return;\n }\n console.log(changedArray);\n //fields error resz\n var trNode = $('tr[data-rownum=' + rowNum + ']');\n for (var key in changedArray) {\n var tdNode = trNode.find('td[data-pointer=\"' + key + '\"]');\n tdNode.addClass('bg-primary');\n var changedTxtNode = $(document.createElement(\"span\")).text(changedArray[key].old).addClass('fieldChanged');\n tdNode.append(changedTxtNode);\n }\n };\n this.processResponseRowErrors = function (errorArray, rowNum) {\n if (errorArray.length < 1) {\n return;\n }\n //general error resz\n console.log(errorArray);\n priceListHasError = true;\n\n //fields error resz\n if (typeof errorArray.fields == 'undefined') {\n return;\n }\n var trNode = $('tr[data-rownum=' + rowNum + ']');\n for (var key in errorArray.fields) {\n var tdNode = trNode.find('td[data-pointer=\"' + key + '\"]');\n tdNode.addClass('bg-danger');\n var errorTxtNode = $(document.createElement(\"span\")).text(errorArray.fields[key]).addClass('fieldError');\n tdNode.append(errorTxtNode);\n }\n };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ3aW5kb3ciLCJQcmljZUxpc3RBZG1pbiIsIm9wdGlvbnMiLCJQcm9maXRDZW50ZXJJdGVtIiwiT3B0cyIsImFjdGl2ZSIsImNvbnRhaW5lckNzc1NlbGVjdG9yIiwidGVzdEZpbGVNb2QiLCJVUkwiLCJjcmVhdGUiLCJzdG9yZSIsImdldERhdGFUYWJsZUNvbnRlbnQiLCJkZXN0cm95IiwiUHJpY2VMaXN0Iiwicm9vdCIsImRhdGFUYWJsZUNTU1NlbGVjdG9yIiwiY29uc3RydWN0IiwiZGVidWciLCIkIiwiZXh0ZW5kIiwiZXJyb3JSb3dQb2ludGVyIiwiZXJyb3JSb3dDb3VudCIsImluaXRFcnJvck5hdmlnYXRpb25CdXR0b24iLCJsZW5ndGgiLCJvZmYiLCJvbiIsInJlbW92ZUNsYXNzIiwic2Nyb2xsVG9wIiwicG9zaXRpb24iLCJ0b3AiLCJhZGRDbGFzcyIsInNlbGVjdGVkVXBsb2FkRmlsZVRvZ2dsZSIsImZpbGVJbnB1dCIsImZpbGVzIiwidGV4dCIsIm5hbWUiLCJlbXB0eSIsImNsaWNrTmV3UHJpY2VMaXN0Q2FsbEJhY2siLCJpbml0Vmlld0RldGFpbHMiLCJjbGlja05ld1ByaWNlTGlzdCIsIkFQUCIsImxvYWRNYWluQ29udGVudCIsImRhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrIiwiZXZlbnQiLCJub2RlIiwiY3VycmVudFRhcmdldCIsInJvdyIsIkRhdGFUYWJsZSIsInBhcmVudHMiLCJyb3dEYXRhIiwiZGF0YSIsImFqYXhEYXRhIiwiYWpheFVybCIsInJlcGxhY2UiLCJpZCIsIl90b2tlbiIsInZhbCIsImFqYXgiLCJ1cmwiLCJtZXRob2QiLCJzdWNjZXNzIiwicmVtb3ZlIiwiZHJhdyIsImluaXRWaWV3TGlzdCIsImNvbE51bSIsInNldE9wdHMiLCJkYXRhdGFibGVBY3Rpb25CdXR0b25DbGlja0NhbGxCYWNrIiwiZGF0YXRhYmxlUm93QWN0aW9uQnV0dG9uQ2xpY2tDYWxsQmFjayIsImRhdGFUYWJsZVByaWNlTGlzdCIsImxhbmd1YWdlIiwicmVuZGVyIiwidHlwZSIsImJ1dHRvbnMiLCJkYXRhdGFibGVBZGRSb3dUcmFzaEJ1dHRvbiIsImFyZ3VtZW50cyIsImF1dG9QcmludCIsImNsYXNzTmFtZSIsImF0dHIiLCJpbml0IiwiYXBpIiwiY29uZmlnIiwiYWN0aW9uIiwiZSIsImR0IiwiZHJhd0NhbGxiYWNrIiwic2V0dGluZ3MiLCJkYXRhdGFibGVBZGRSb3dBY3Rpb24iLCJkYXRlcGlja2VyIiwiZGF0ZUZvcm1hdCIsIm9uU2VsZWN0IiwiZGF0ZVRleHQiLCJjb25zb2xlIiwibG9nIiwicmVwbGFjZUFsbCIsIkZvcm1EYXRhIiwiVG9hc3QiLCJUT0FTVF9TVEFUVVMiLCJEQU5HRVIiLCJhcHBlbmQiLCJjb250ZW50VHlwZSIsInByb2Nlc3NEYXRhIiwiYmVmb3JlU2VuZCIsInByb2Nlc3NDaGVja2VkUHJpY2VMaXN0UmVzcG9uc2UiLCJlcnJvciIsInJlc3BvbnNlSlNPTiIsImFqYXhFcnJvckZpZWxkSGFuZGxlciIsImhpZGUiLCJnZXRPcHRzIiwicHJpY2VMaXN0SGFzRXJyb3IiLCJyZXNwb25zZURhdGEiLCJwcm9jZXNzQ2hlY2tlZFByaWNlTGlzdFJlc3BvbnNlUm93cyIsInJvd3MiLCJzaG93IiwicmVzcG9uc2VSb3dzRGF0YSIsImtleSIsInRlbXBsYXRlRGF0YSIsIm9yaWdpbmFsRGF0YSIsInJvd051bSIsInRlbXBsYXRlIiwiaHRtbCIsIk11c3RhY2hlIiwidWNGaXJzdCIsInN0YXR1cyIsInByb2Nlc3NSZXNwb25zZVJvd0Vycm9ycyIsImNoYW5nZWQiLCJwcm9jZXNzUmVzcG9uc2VSb3dDaGFuZ2VkIiwiY2hhbmdlZEFycmF5IiwidHJOb2RlIiwidGROb2RlIiwiZmluZCIsImNoYW5nZWRUeHROb2RlIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50Iiwib2xkIiwiZXJyb3JBcnJheSIsImZpZWxkcyIsImVycm9yVHh0Tm9kZSJdLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvYWRtaW4vcHJpY2VMaXN0LmpzP2NhZDYiXSwic291cmNlc0NvbnRlbnQiOlsid2luZG93LlByaWNlTGlzdEFkbWluPWZ1bmN0aW9uIChvcHRpb25zLFByb2ZpdENlbnRlckl0ZW0pIHtcclxuICAgIC8qXHJcbiAgICAgKiBWYXJpYWJsZXMgYWNjZXNzaWJsZVxyXG4gICAgICogaW4gdGhlIGNsYXNzXHJcbiAgICAgKi9cclxuICAgIGxldCBPcHRzID0ge1xyXG4gICAgICAgIGFjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgY29udGFpbmVyQ3NzU2VsZWN0b3I6XCIucHJpY2VMaXN0Rm9ybVwiLFxyXG4gICAgICAgIHRlc3RGaWxlTW9kOmZhbHNlLFxyXG4gICAgICAgIFVSTDp7XHJcbiAgICAgICAgICAgIGNyZWF0ZTonJyxcclxuICAgICAgICAgICAgc3RvcmU6JycsXHJcbiAgICAgICAgICAgIGdldERhdGFUYWJsZUNvbnRlbnQ6JycsXHJcbiAgICAgICAgICAgIGRlc3Ryb3k6JycsXHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGxldCBQcmljZUxpc3QgPSB7fTtcclxuICAgIGxldCByb290ID0gdGhpcztcclxuICAgIGxldCBkYXRhVGFibGVDU1NTZWxlY3Rvcj1udWxsO1xyXG5cclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIENvbnN0cnVjdG9yXHJcbiAgICAgKi9cclxuICAgIHRoaXMuY29uc3RydWN0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcclxuICAgICAgICBkZWJ1ZygnUHJpY2VMaXN0QWRtaW4gY29uc3RydWN0b3IgY2FsbGVkJyk7XHJcbiAgICAgICAgJC5leHRlbmQoT3B0cywgb3B0aW9ucyk7XHJcbiAgICB9O1xyXG5cclxuICAgIGxldCBlcnJvclJvd1BvaW50ZXI9bnVsbDtcclxuICAgIGxldCBlcnJvclJvd0NvdW50PTA7XHJcblxyXG4gICAgdGhpcy5pbml0RXJyb3JOYXZpZ2F0aW9uQnV0dG9uPWZ1bmN0aW9uICgpe1xyXG5cclxuICAgICAgICBlcnJvclJvd0NvdW50PSQoJy5zdGF0dXNFcnJvcicpLmxlbmd0aDtcclxuICAgICAgICBlcnJvclJvd1BvaW50ZXI9bnVsbDtcclxuICAgICAgICAkKCcucHJpY2VMaXN0Rm9ybSAuYnV0dG9uUHJldkVycm9yIC5idXR0b25OZXh0RXJyb3InKS5vZmYoJ2NsaWNrJylcclxuICAgICAgICAkKCcucHJpY2VMaXN0Rm9ybSAuYnV0dG9uUHJldkVycm9yJykub24oJ2NsaWNrJyxmdW5jdGlvbiAoKXtcclxuICAgICAgICAgICAgaWYoZXJyb3JSb3dQb2ludGVyPT1udWxsKXtcclxuICAgICAgICAgICAgICAgIGVycm9yUm93UG9pbnRlcj0wO1xyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIGlmKGVycm9yUm93UG9pbnRlcj4wKXtcclxuICAgICAgICAgICAgICAgICAgICBlcnJvclJvd1BvaW50ZXItLTtcclxuICAgICAgICAgICAgICAgIH1lbHNle3JldHVybjt9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgJCgnLnN0YXR1c0Vycm9yJykucmVtb3ZlQ2xhc3MoJ2hpZ2hsaWdodGVkRXJyb3JSb3cnKTtcclxuICAgICAgICAgICAgJCgnLnByaWNlTGlzdFRhYmxlV3JhcHBlcicpLnNjcm9sbFRvcCgkKCQoJy5zdGF0dXNFcnJvcicpW2Vycm9yUm93UG9pbnRlcl0pLnBvc2l0aW9uKCkudG9wKTtcclxuICAgICAgICAgICAgJCgkKCcuc3RhdHVzRXJyb3InKVtlcnJvclJvd1BvaW50ZXJdKS5hZGRDbGFzcygnaGlnaGxpZ2h0ZWRFcnJvclJvdycpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgICQoJy5wcmljZUxpc3RGb3JtIC5idXR0b25OZXh0RXJyb3InKS5vZmYoJ2NsaWNrJyk7XHJcbiAgICAgICAgJCgnLnByaWNlTGlzdEZvcm0gLmJ1dHRvbk5leHRFcnJvcicpLm9uKCdjbGljaycsZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgICAgIGlmKGVycm9yUm93UG9pbnRlcj09bnVsbCl7XHJcbiAgICAgICAgICAgICAgICBlcnJvclJvd1BvaW50ZXI9MDtcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICBpZihlcnJvclJvd1BvaW50ZXI8ZXJyb3JSb3dDb3VudC0xKXtcclxuICAgICAgICAgICAgICAgICAgICBlcnJvclJvd1BvaW50ZXIrKztcclxuICAgICAgICAgICAgICAgIH1lbHNle3JldHVybjt9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgJCgnLnN0YXR1c0Vycm9yJykucmVtb3ZlQ2xhc3MoJ2hpZ2hsaWdodGVkRXJyb3JSb3cnKTtcclxuICAgICAgICAgICAgJCgnLnByaWNlTGlzdFRhYmxlV3JhcHBlcicpLnNjcm9sbFRvcCgkKCQoJy5zdGF0dXNFcnJvcicpW2Vycm9yUm93UG9pbnRlcl0pLnBvc2l0aW9uKCkudG9wKTtcclxuICAgICAgICAgICAgJCgkKCcuc3RhdHVzRXJyb3InKVtlcnJvclJvd1BvaW50ZXJdKS5hZGRDbGFzcygnaGlnaGxpZ2h0ZWRFcnJvclJvdycpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkVXBsb2FkRmlsZVRvZ2dsZT1mdW5jdGlvbiAoZmlsZUlucHV0KXtcclxuICAgICAgICAvKlxyXG4gICAgICAgIGNvbnNvbGUubG9nKGZpbGVJbnB1dC5hdHRyKCduYW1lJykpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGZpbGVJbnB1dFswXS5maWxlc1swXSk7XHJcbiAgICAgICAgY29uc29sZS5sb2coZmlsZUlucHV0WzBdLmZpbGVzWzBdLm5hbWUpO1xyXG4gICAgICAgICovXHJcbiAgICAgICAgaWYoZmlsZUlucHV0KXtcclxuICAgICAgICAgICAgJCgnLmNvbnRhaW5lckZpbGVVcGxvYWQnKS5hZGRDbGFzcygnZC1ub25lJyk7XHJcbiAgICAgICAgICAgIGlmKGZpbGVJbnB1dFswXS5maWxlc1swXSl7XHJcbiAgICAgICAgICAgICAgICAkKCcuY29udGFpbmVyVXBsb2FkZWRGaWxlTmFtZScpLnRleHQoZmlsZUlucHV0WzBdLmZpbGVzWzBdLm5hbWUpO1xyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAkKCcuY29udGFpbmVyRmlsZVVwbG9hZFN0YXJ0ZWQnKS5yZW1vdmVDbGFzcygnZC1ub25lJyk7XHJcbiAgICAgICAgICAgICQoJy5jb250YWluZXJVcGxvYWRlZFNwaW5uZXInKS5yZW1vdmVDbGFzcygnZC1ub25lJyk7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICQoJy5jb250YWluZXJVcGxvYWRlZEZpbGVOYW1lJykudGV4dCgnJyk7XHJcbiAgICAgICAgICAgICQoJy5jb250YWluZXJGaWxlVXBsb2FkU3RhcnRlZCcpLmFkZENsYXNzKCdkLW5vbmUnKTtcclxuICAgICAgICAgICAgJCgnLnVwbG9hZFN0YXR1c1JvdycpLmFkZENsYXNzKCdkLW5vbmUnKTtcclxuXHJcbiAgICAgICAgICAgICQoJy5wcmljZUxpc3RUYWJsZSA+IHRib2R5JykuZW1wdHkoKTtcclxuICAgICAgICAgICAgJCgnLmNvbnRhaW5lckZpbGVVcGxvYWQnKS5yZW1vdmVDbGFzcygnZC1ub25lJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2xpY2tOZXdQcmljZUxpc3RDYWxsQmFjaz1mdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcm9vdC5pbml0Vmlld0RldGFpbHMoKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2xpY2tOZXdQcmljZUxpc3Q9ZnVuY3Rpb24oKXtcclxuICAgICAgICBBUFAubG9hZE1haW5Db250ZW50KE9wdHMuVVJMLmNyZWF0ZSxyb290LmNsaWNrTmV3UHJpY2VMaXN0Q2FsbEJhY2spO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGljaz1mdW5jdGlvbihldmVudCl7XHJcbiAgICAgICAgbGV0IG5vZGU9JChldmVudFswXS5jdXJyZW50VGFyZ2V0KTtcclxuICAgICAgICBsZXQgcm93PSQoZGF0YVRhYmxlQ1NTU2VsZWN0b3IpLkRhdGFUYWJsZSgpLnJvdyhub2RlLnBhcmVudHMoJ3RyJykpO1xyXG4gICAgICAgIGxldCByb3dEYXRhPXJvdy5kYXRhKCk7XHJcbiAgICAgICAgLy9fdG9rZW5cclxuICAgICAgICBsZXQgYWpheERhdGE9e307XHJcbiAgICAgICAgbGV0IGFqYXhVcmw9T3B0cy5VUkwuZGVzdHJveS5yZXBsYWNlKCclaWQlJyxyb3dEYXRhLmlkKTtcclxuICAgICAgICBhamF4RGF0YS5fdG9rZW49JCgnaW5wdXRbbmFtZT1fdG9rZW5dJykudmFsKCk7XHJcbiAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgdXJsOmFqYXhVcmwsXHJcbiAgICAgICAgICAgIGRhdGE6YWpheERhdGEsXHJcbiAgICAgICAgICAgIG1ldGhvZDpcIkRFTEVURVwiLFxyXG4gICAgICAgICAgICBzdWNjZXNzOmZ1bmN0aW9uIChkYXRhKXtcclxuICAgICAgICAgICAgICAgIGlmKGRhdGEuc3VjY2Vzcz09dHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgcm93LnJlbW92ZSgpLmRyYXcoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgfSk7XHJcbi8qXHJcbiovXHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmluaXRWaWV3TGlzdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XHJcbiAgICAgICAgZGVidWcoJ2xpc3R2aWV3IGluaWNpYWxpemF0aW9uJyk7XHJcbiAgICAgICAgZGF0YVRhYmxlQ1NTU2VsZWN0b3I9T3B0cy5jb250YWluZXJDc3NTZWxlY3RvcisnIC5kYXRhVGFibGUnOyAvL1xyXG5cclxuICAgICAgICBsZXQgY29sTnVtPSQoZGF0YVRhYmxlQ1NTU2VsZWN0b3IrJyB0aGVhZCB0aCcpLmxlbmd0aDsgLy9idXR0b25zIGluc2VydCBwb3NpdGlvbiBuZWVkXHJcbiAgICAgICAgQVBQLnNldE9wdHMoe1xyXG4gICAgICAgICAgICBkYXRhdGFibGVBY3Rpb25CdXR0b25DbGlja0NhbGxCYWNrOnJvb3QuY2xpY2tOZXdQcmljZUxpc3QsXHJcbiAgICAgICAgICAgIGRhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrQ2FsbEJhY2s6cm9vdC5kYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGljayxcclxuXHJcbiAgICAgICAgfSlcclxuXHJcblxyXG4gICAgICAgIEFQUC5kYXRhVGFibGVQcmljZUxpc3Q9JChkYXRhVGFibGVDU1NTZWxlY3RvcikuRGF0YVRhYmxlKCB7XHJcbiAgICAgICAgICAgIGxhbmd1YWdlOiB7XHJcbiAgICAgICAgICAgICAgICB1cmw6ICcvL2Nkbi5kYXRhdGFibGVzLm5ldC9wbHVnLWlucy8xLjEwLjI0L2kxOG4vSHVuZ2FyaWFuLmpzb24nXHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAvL1wiYWpheFwiOiBcInt7YXNzZXQoJ2V4YXBtbGUyLmpzb24nKX19XCIsXHJcbiAgICAgICAgICAgIFwiYWpheFwiOiBPcHRzLlVSTC5nZXREYXRhVGFibGVDb250ZW50LFxyXG4gICAgICAgICAgICBcImNvbHVtbkRlZnNcIjogW1xyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFwidGFyZ2V0c1wiOiBjb2xOdW0tMSxcclxuICAgICAgICAgICAgICAgICAgICBcInJlbmRlclwiOiBmdW5jdGlvbiAoIGRhdGEsIHR5cGUsIHJvdyApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJ1dHRvbnM9QVBQLmRhdGF0YWJsZUFkZFJvd1RyYXNoQnV0dG9uKDAsYXJndW1lbnRzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9idXR0b25zKz1BUFAuZGF0YXRhYmxlQWRkUm93RWRpdEJ1dHRvbigwLGFyZ3VtZW50cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBidXR0b25zO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgLy97IFwidmlzaWJsZVwiOiBmYWxzZSwgIFwidGFyZ2V0c1wiOiBbIDAgXSB9XHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIGJ1dHRvbnM6e1xyXG5cclxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcclxuICAgICAgICAgICAgICAgICAgICAvLydjcmVhdGVTdGF0ZScsICdzYXZlZFN0YXRlcycsXHJcbiAgICAgICAgICAgICAgICAgICAgJ2V4Y2VsJywncGRmJyxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZDogJ3ByaW50JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy90ZXh0OiAnUHJpbnQgY3VycmVudCBwYWdlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ3RpdGxlIGN1c3RvbSB0ZXh0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ21lc3NhZ2VUb3AnOiAnTWVzc2FnZSBPbiBUb3AnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvUHJpbnQ6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIC8qKi9cclxuXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnw5pqIGZlbHZpdGVsZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tc3VjY2VzcyBuZXdJdGVtJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cjp7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOjEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGI6MlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnOiduZXdJdGVtJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0OiBmdW5jdGlvbihhcGksIG5vZGUsIGNvbmZpZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChub2RlKS5yZW1vdmVDbGFzcygndWktYnV0dG9uJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBmdW5jdGlvbiAoIGUsIGR0LCBub2RlLCBjb25maWcgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUFAuZGF0YXRhYmxlQWN0aW9uQnV0dG9uQ2xpY2tDYWxsQmFjayhhcmd1bWVudHMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY29uc29sZS5sb2coZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGNvbmZpZyk7Ki9cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIFwiY29sdW1uc1wiOiBbXHJcbiAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcImlkXCIgfSxcclxuICAgICAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwic3VwcGxpZXJOYW1lXCIgfSxcclxuICAgICAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwiYXZhaWxhYmxlXCIgfSxcclxuICAgICAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwiY3JlYXRlZF9hdFwiIH0sXHJcbiAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcIm5vdGVcIiB9LFxyXG4gICAgICAgICAgICAgICAgbnVsbCxcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgXCJzdGF0ZVNhdmVcIjogdHJ1ZSxcclxuICAgICAgICAgICAgXCJkcmF3Q2FsbGJhY2tcIjogZnVuY3Rpb24oIHNldHRpbmdzICkge1xyXG4gICAgICAgICAgICAgICAgQVBQLmRhdGF0YWJsZUFkZFJvd0FjdGlvbihkYXRhVGFibGVDU1NTZWxlY3Rvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9ICk7XHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmluaXRWaWV3RGV0YWlscyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XHJcbiAgICAgICAgJChPcHRzLmNvbnRhaW5lckNzc1NlbGVjdG9yKycgLmRhdGVQaWNrZXJDbGljaycpLm9mZignY2xpY2snKTtcclxuICAgICAgICAkKE9wdHMuY29udGFpbmVyQ3NzU2VsZWN0b3IrJyAuZGF0ZVBpY2tlckNsaWNrJykub24oJ2NsaWNrJyxmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAkKE9wdHMuY29udGFpbmVyQ3NzU2VsZWN0b3IrJyAuZGF0ZVBpY2tlcicpLmRhdGVwaWNrZXIoJ3Nob3cnKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgJChPcHRzLmNvbnRhaW5lckNzc1NlbGVjdG9yKycgLmRhdGVQaWNrZXInKS5kYXRlcGlja2VyKHtcclxuICAgICAgICAgICAgZGF0ZUZvcm1hdDogJ3l5LW1tLWRkJyxcclxuICAgICAgICAgICAgb25TZWxlY3Q6ZnVuY3Rpb24gKGRhdGVUZXh0KXtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGVUZXh0KTtcclxuICAgICAgICAgICAgICAgICQoJy5zZWxlY3RlZERhdGVUZXh0JykudGV4dChkYXRlVGV4dC5yZXBsYWNlQWxsKCctJywnLicpKTtcclxuXHJcbiAgICAgICAgICAgICAgICAkKCdpbnB1dFtuYW1lPVwiYXZhaWxhYmxlRGF0ZVwiXScpLnZhbChkYXRlVGV4dCk7XHJcblxyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgJChPcHRzLmNvbnRhaW5lckNzc1NlbGVjdG9yKycgLmJ1dHRvbk5ld1VwbG9hZCcpLm9mZignY2xpY2snKTtcclxuICAgICAgICAkKE9wdHMuY29udGFpbmVyQ3NzU2VsZWN0b3IrJyAuYnV0dG9uTmV3VXBsb2FkJykub24oJ2NsaWNrJyxmdW5jdGlvbiAoKXtcclxuICAgICAgICAgICAgcm9vdC5zZWxlY3RlZFVwbG9hZEZpbGVUb2dnbGUoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICAkKE9wdHMuY29udGFpbmVyQ3NzU2VsZWN0b3IrJyAuYnV0dG9uVXBsb2FkJykub2ZmKCdjbGljaycpO1xyXG4gICAgICAgICQoT3B0cy5jb250YWluZXJDc3NTZWxlY3RvcisnIC5idXR0b25VcGxvYWQnKS5vbignY2xpY2snLGZ1bmN0aW9uICgpe1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnLS0tLS0tLS0tLS0tLS0tLS0tJyk7XHJcbiAgICAgICAgICAgIHJvb3Quc2VsZWN0ZWRVcGxvYWRGaWxlVG9nZ2xlKCk7XHJcblxyXG4gICAgICAgICAgICBsZXQgZGF0YT0gbmV3IEZvcm1EYXRhKCQoJy5wcmljZUxpc3RGb3JtJylbMF0pO1xyXG4gICAgICAgICAgICBpZigkKCcuc3VwcGxpZXJTZWxlY3QnKS52YWwoKS5sZW5ndGg8MSl7XHJcbiAgICAgICAgICAgICAgICBUb2FzdC5jcmVhdGUoXCJIaWJhIVwiLCAnQWRqb24gbWVnIGJlc3rDoWxsw610w7N0IScsIFRPQVNUX1NUQVRVUy5EQU5HRVIsIDEwMDAwKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgZmlsZUlucHV0PSQoJyNpbnB1dEdyb3VwUHJpY2VMaXN0RmlsZScpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhmaWxlSW5wdXRbMF0uZmlsZXMubGVuZ3RoPDEpO1xyXG5cclxuICAgICAgICAgICAgLyogdGVzenRlbGVzIG1pYXR0IGtpa2FwY3NvbHZhIGEgZmFqbCBlbGxlbm9yemVzXHJcbiAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGlmKCFPcHRzLnRlc3RGaWxlTW9kKXtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGZpbGVJbnB1dFswXS5maWxlcy5sZW5ndGg8MSk7XHJcbiAgICAgICAgICAgICAgICBpZihmaWxlSW5wdXRbMF0uZmlsZXMubGVuZ3RoPDEpe1xyXG4gICAgICAgICAgICAgICAgICAgIFRvYXN0LmNyZWF0ZShcIkhpYmEhXCIsICdWw6FsbGFzem9uIGtpIGbDoWpsdCEnLCBUT0FTVF9TVEFUVVMuREFOR0VSLCAxMDAwMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBkYXRhLmFwcGVuZChmaWxlSW5wdXQuYXR0cignbmFtZScpLGZpbGVJbnB1dFswXS5maWxlc1swXSk7XHJcbiAgICAgICAgICAgIHJvb3Quc2VsZWN0ZWRVcGxvYWRGaWxlVG9nZ2xlKGZpbGVJbnB1dCk7XHJcblxyXG4gICAgICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgdXJsOk9wdHMuVVJMLnN0b3JlLFxyXG4gICAgICAgICAgICAgICAgZGF0YTpkYXRhLFxyXG4gICAgICAgICAgICAgICAgdHlwZTonUE9TVCcsXHJcbiAgICAgICAgICAgICAgICBjb250ZW50VHlwZTpmYWxzZSxcclxuICAgICAgICAgICAgICAgIHByb2Nlc3NEYXRhOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGJlZm9yZVNlbmQ6IGZ1bmN0aW9uKCkge1xyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoZGF0YS5zdWNjZXNzPT10cnVlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC5wcm9jZXNzQ2hlY2tlZFByaWNlTGlzdFJlc3BvbnNlKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEucmVzcG9uc2VKU09OKTtcclxuICAgICAgICAgICAgICAgICAgICByb290LnNlbGVjdGVkVXBsb2FkRmlsZVRvZ2dsZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGFqYXhFcnJvckZpZWxkSGFuZGxlcihkYXRhLnJlc3BvbnNlSlNPTi5lcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICQoT3B0cy5jb250YWluZXJDc3NTZWxlY3RvcisnIC5idXR0b25GaW5hbGl6YXRpb24nKS5vbignY2xpY2snLGZ1bmN0aW9uICgpe1xyXG4gICAgICAgICAgICBsZXQgZGF0YT0gbmV3IEZvcm1EYXRhKCQoJy5wcmljZUxpc3RGb3JtJylbMF0pO1xyXG4gICAgICAgICAgICBsZXQgZmlsZUlucHV0PSQoJyNpbnB1dEdyb3VwUHJpY2VMaXN0RmlsZScpO1xyXG4gICAgICAgICAgICBkYXRhLmFwcGVuZChmaWxlSW5wdXQuYXR0cignbmFtZScpLGZpbGVJbnB1dFswXS5maWxlc1swXSk7XHJcbiAgICAgICAgICAgIGRhdGEuYXBwZW5kKCdmaW5hbGl6YXRpb24nLDEpO1xyXG4gICAgICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgdXJsOk9wdHMuVVJMLnN0b3JlLFxyXG4gICAgICAgICAgICAgICAgZGF0YTpkYXRhLFxyXG4gICAgICAgICAgICAgICAgdHlwZTonUE9TVCcsXHJcbiAgICAgICAgICAgICAgICBjb250ZW50VHlwZTpmYWxzZSxcclxuICAgICAgICAgICAgICAgIHByb2Nlc3NEYXRhOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGJlZm9yZVNlbmQ6IGZ1bmN0aW9uKCkge1xyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoZGF0YS5zdWNjZXNzKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnByaWNlTGlzdFRhYmxlIHRib2R5IHRyJykucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQoJy51cGxvYWRTdGF0dXNSb3cgPi5jYW5GaW5pc2gnKS5oaWRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQoJy51cGxvYWRTdGF0dXNSb3cnKS5hZGRDbGFzcygnZC1ub25lJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQoJy5wcmljZUxpc3RUYWJsZSB0Ym9keScpLmFwcGVuZCgnPHRyPjx0ZCBjb2xzcGFuPVwiOTlcIiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjsnICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgZm9udC1zaXplOiAyZW07XCI+IMOBcmxpc3TDoXQgZWxtZW50ZXR0w7xrLjwvdGQ+PC90cj4nKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICAgICAgICBpZihkYXRhLnN1Y2Nlc3M9PTEpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByb290LnByb2Nlc3NDaGVja2VkUHJpY2VMaXN0UmVzcG9uc2UoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YS5yZXNwb25zZUpTT04pO1xyXG4gICAgICAgICAgICAgICAgICAgIGFqYXhFcnJvckZpZWxkSGFuZGxlcihkYXRhLnJlc3BvbnNlSlNPTi5lcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaW5pdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1ByaWNlTGlzdEFkbWluIGluaXQgY2FsbGVkJyk7XHJcbiAgICAgICAgJC5leHRlbmQoT3B0cywgb3B0aW9ucyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ09wdCBleHRlbmRlZCcpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKE9wdHMpO1xyXG4gICAgICAgIC8qXHJcbiAgICAgICAgSW5pdCBsaXN0IHZpZXdcclxuICAgICAgICAqL1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdjYWxsIGxpc3QgdmlldyBJbml0Jyk7XHJcbiAgICAgICAgcm9vdC5pbml0Vmlld0xpc3Qob3B0aW9ucyk7XHJcblxyXG5cclxuICAgIH1cclxuICAgIHRoaXMuZ2V0T3B0cz1mdW5jdGlvbiAoKXtcclxuICAgICAgICByZXR1cm4gT3B0cztcclxuICAgIH1cclxuICAgIGxldCBwcmljZUxpc3RIYXNFcnJvcj1mYWxzZTtcclxuXHJcbiAgICB0aGlzLnByb2Nlc3NDaGVja2VkUHJpY2VMaXN0UmVzcG9uc2U9ZnVuY3Rpb24gKHJlc3BvbnNlRGF0YSl7XHJcbiAgICAgICAgcHJpY2VMaXN0SGFzRXJyb3I9ZmFsc2U7XHJcbiAgICAgICAgcm9vdC5wcm9jZXNzQ2hlY2tlZFByaWNlTGlzdFJlc3BvbnNlUm93cyhyZXNwb25zZURhdGEucm93cyk7XHJcbiAgICAgICAgaWYocHJpY2VMaXN0SGFzRXJyb3Ipe1xyXG4gICAgICAgICAgICAkKCcudXBsb2FkU3RhdHVzUm93ID4uY2FuRmluaXNoJykuaGlkZSgpO1xyXG4gICAgICAgICAgICAkKCcudXBsb2FkU3RhdHVzUm93ID4uY2FuRmluaXNoRXJyb3InKS5zaG93KCk7XHJcbiAgICAgICAgICAgIHJvb3QuaW5pdEVycm9yTmF2aWdhdGlvbkJ1dHRvbigpO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAkKCcudXBsb2FkU3RhdHVzUm93ID4uY2FuRmluaXNoJykuc2hvdygpO1xyXG4gICAgICAgICAgICAkKCcudXBsb2FkU3RhdHVzUm93ID4uY2FuRmluaXNoRXJyb3InKS5oaWRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICQoJy51cGxvYWRTdGF0dXNSb3cnKS5yZW1vdmVDbGFzcygnZC1ub25lJyk7XHJcbiAgICAgICAgJCgnLmNvbnRhaW5lclVwbG9hZGVkU3Bpbm5lcicpLmFkZENsYXNzKCdkLW5vbmUnKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnByb2Nlc3NDaGVja2VkUHJpY2VMaXN0UmVzcG9uc2VSb3dzPWZ1bmN0aW9uIChyZXNwb25zZVJvd3NEYXRhKXtcclxuICAgICAgICBjb25zb2xlLmxvZygncHJvY2Vzc2luZ1Jvd3MnKTtcclxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gcmVzcG9uc2VSb3dzRGF0YSkge1xyXG4gICAgICAgICAgICBsZXQgcm93RGF0YT1yZXNwb25zZVJvd3NEYXRhW2tleV07XHJcbiAgICAgICAgICAgIGxldCB0ZW1wbGF0ZURhdGE9cm93RGF0YS5vcmlnaW5hbERhdGE7XHJcbiAgICAgICAgICAgIHRlbXBsYXRlRGF0YS5yb3dOdW09cm93RGF0YS5yb3dOdW07XHJcbiAgICAgICAgICAgIGxldCB0ZW1wbGF0ZT0kKCd0ZW1wbGF0ZVtkYXRhLW5hbWU9XCJwcmljZUxpc3RUYWJsZVJvd1wiXScpLmh0bWwoKVxyXG4gICAgICAgICAgICBsZXQgcmVuZGVyPU11c3RhY2hlLnJlbmRlcih0ZW1wbGF0ZSx0ZW1wbGF0ZURhdGEpO1xyXG4gICAgICAgICAgICAkKCcucHJpY2VMaXN0VGFibGUgdGJvZHknKS5hcHBlbmQocmVuZGVyKTtcclxuICAgICAgICAgICAgJCgndHJbZGF0YS1yb3dudW09Jytyb3dEYXRhLnJvd051bSsnXScpLmFkZENsYXNzKCdzdGF0dXMnKyQudWNGaXJzdChyb3dEYXRhLnN0YXR1cykpO1xyXG4gICAgICAgICAgICByb290LnByb2Nlc3NSZXNwb25zZVJvd0Vycm9ycyhyb3dEYXRhLmVycm9yLHJvd0RhdGEucm93TnVtKTtcclxuICAgICAgICAgICAgaWYocm93RGF0YS5jaGFuZ2VkKXtcclxuICAgICAgICAgICAgICAgIHJvb3QucHJvY2Vzc1Jlc3BvbnNlUm93Q2hhbmdlZChyb3dEYXRhLmNoYW5nZWQscm93RGF0YS5yb3dOdW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5wcm9jZXNzUmVzcG9uc2VSb3dDaGFuZ2VkPWZ1bmN0aW9uIChjaGFuZ2VkQXJyYXkscm93TnVtKXtcclxuICAgICAgICBpZihjaGFuZ2VkQXJyYXkubGVuZ3RoPDEpe1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGNoYW5nZWRBcnJheSk7XHJcbiAgICAgICAgLy9maWVsZHMgZXJyb3IgcmVzelxyXG4gICAgICAgIGxldCB0ck5vZGU9JCgndHJbZGF0YS1yb3dudW09Jytyb3dOdW0rJ10nKTtcclxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gY2hhbmdlZEFycmF5KSB7XHJcbiAgICAgICAgICAgIGxldCB0ZE5vZGU9dHJOb2RlLmZpbmQoJ3RkW2RhdGEtcG9pbnRlcj1cIicra2V5KydcIl0nKTtcclxuICAgICAgICAgICAgdGROb2RlLmFkZENsYXNzKCdiZy1wcmltYXJ5Jyk7XHJcbiAgICAgICAgICAgIGxldCBjaGFuZ2VkVHh0Tm9kZT0kKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpKS50ZXh0KGNoYW5nZWRBcnJheVtrZXldLm9sZCkuYWRkQ2xhc3MoJ2ZpZWxkQ2hhbmdlZCcpO1xyXG4gICAgICAgICAgICB0ZE5vZGUuYXBwZW5kKGNoYW5nZWRUeHROb2RlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgdGhpcy5wcm9jZXNzUmVzcG9uc2VSb3dFcnJvcnM9ZnVuY3Rpb24gKGVycm9yQXJyYXkscm93TnVtKXtcclxuICAgICAgICBpZihlcnJvckFycmF5Lmxlbmd0aDwxKXtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvL2dlbmVyYWwgZXJyb3IgcmVzelxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yQXJyYXkpO1xyXG4gICAgICAgIHByaWNlTGlzdEhhc0Vycm9yID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgLy9maWVsZHMgZXJyb3IgcmVzelxyXG4gICAgICAgIGlmKHR5cGVvZiBlcnJvckFycmF5LmZpZWxkcyA9PSd1bmRlZmluZWQnKXtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdHJOb2RlPSQoJ3RyW2RhdGEtcm93bnVtPScrcm93TnVtKyddJyk7XHJcbiAgICAgICAgZm9yIChsZXQga2V5IGluIGVycm9yQXJyYXkuZmllbGRzKSB7XHJcbiAgICAgICAgICAgIGxldCB0ZE5vZGU9dHJOb2RlLmZpbmQoJ3RkW2RhdGEtcG9pbnRlcj1cIicra2V5KydcIl0nKTtcclxuICAgICAgICAgICAgdGROb2RlLmFkZENsYXNzKCdiZy1kYW5nZXInKTtcclxuICAgICAgICAgICAgbGV0IGVycm9yVHh0Tm9kZT0kKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpKS50ZXh0KGVycm9yQXJyYXkuZmllbGRzW2tleV0pLmFkZENsYXNzKCdmaWVsZEVycm9yJyk7XHJcbiAgICAgICAgICAgIHRkTm9kZS5hcHBlbmQoZXJyb3JUeHROb2RlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbiJdLCJtYXBwaW5ncyI6IkFBQUFBLE1BQU0sQ0FBQ0MsY0FBYyxHQUFDLFVBQVVDLE9BQU8sRUFBQ0MsZ0JBQWdCLEVBQUU7RUFDdEQ7QUFDSjtBQUNBO0FBQ0E7RUFDSSxJQUFJQyxJQUFJLEdBQUc7SUFDUEMsTUFBTSxFQUFFLEtBQUs7SUFDYkMsb0JBQW9CLEVBQUMsZ0JBQWdCO0lBQ3JDQyxXQUFXLEVBQUMsS0FBSztJQUNqQkMsR0FBRyxFQUFDO01BQ0FDLE1BQU0sRUFBQyxFQUFFO01BQ1RDLEtBQUssRUFBQyxFQUFFO01BQ1JDLG1CQUFtQixFQUFDLEVBQUU7TUFDdEJDLE9BQU8sRUFBQztJQUNaO0VBQ0osQ0FBQztFQUNELElBQUlDLFNBQVMsR0FBRyxDQUFDLENBQUM7RUFDbEIsSUFBSUMsSUFBSSxHQUFHLElBQUk7RUFDZixJQUFJQyxvQkFBb0IsR0FBQyxJQUFJOztFQUk3QjtBQUNKO0FBQ0E7RUFDSSxJQUFJLENBQUNDLFNBQVMsR0FBRyxVQUFVZCxPQUFPLEVBQUU7SUFDaENlLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQztJQUMxQ0MsQ0FBQyxDQUFDQyxNQUFNLENBQUNmLElBQUksRUFBRUYsT0FBTyxDQUFDO0VBQzNCLENBQUM7RUFFRCxJQUFJa0IsZUFBZSxHQUFDLElBQUk7RUFD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QztFQUVKLENBQUM7RUFDRCxJQUFJLENBQUNQLHdCQUF3QixHQUFDLFVBQVVXLFVBQVUsRUFBQ2pCLE1BQU0sRUFBQztJQUN0RCxJQUFHaUIsVUFBVSxDQUFDL0csTUFBTSxHQUFDLENBQUMsRUFBQztNQUNuQjtJQUNKO0lBQ0E7SUFDQW9FLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDMEMsVUFBVSxDQUFDO0lBQ3ZCMUIsaUJBQWlCLEdBQUcsSUFBSTs7SUFFeEI7SUFDQSxJQUFHLE9BQU8wQixVQUFVLENBQUNDLE1BQU0sSUFBRyxXQUFXLEVBQUM7TUFDdEM7SUFDSjtJQUNBLElBQUlSLE1BQU0sR0FBQzdHLENBQUMsQ0FBQyxpQkFBaUIsR0FBQ21HLE1BQU0sR0FBQyxHQUFHLENBQUM7SUFDMUMsS0FBSyxJQUFJSCxHQUFHLElBQUlvQixVQUFVLENBQUNDLE1BQU0sRUFBRTtNQUMvQixJQUFJUCxNQUFNLEdBQUNELE1BQU0sQ0FBQ0UsSUFBSSxDQUFDLG1CQUFtQixHQUFDZixHQUFHLEdBQUMsSUFBSSxDQUFDO01BQ3BEYyxNQUFNLENBQUNsRyxRQUFRLENBQUMsV0FBVyxDQUFDO01BQzVCLElBQUkwRyxZQUFZLEdBQUN0SCxDQUFDLENBQUNpSCxRQUFRLENBQUNDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDbEcsSUFBSSxDQUFDb0csVUFBVSxDQUFDQyxNQUFNLENBQUNyQixHQUFHLENBQUMsQ0FBQyxDQUFDcEYsUUFBUSxDQUFDLFlBQVksQ0FBQztNQUN0R2tHLE1BQU0sQ0FBQzlCLE1BQU0sQ0FBQ3NDLFlBQVksQ0FBQztJQUMvQjtFQUNKLENBQUM7QUFDTCxDQUFDIiwiaWdub3JlTGlzdCI6W10sImZpbGUiOiIuL3Jlc291cmNlcy9qcy9hZG1pbi9wcmljZUxpc3QuanMiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/admin/priceList.js\n\n}");
|
|
|
|
/***/ },
|
|
|
|
/***/ "./resources/js/admin/priceListProfitCenter.js"
|
|
/*!*****************************************************!*\
|
|
!*** ./resources/js/admin/priceListProfitCenter.js ***!
|
|
\*****************************************************/
|
|
() {
|
|
|
|
eval("{window.PriceListProfitCenterAdmin = function (options) {\n /*\r\n * Variables accessible\r\n * in the class\r\n */\n var Opts = {\n token: null,\n containerCssSelector: '.containerPriceListProfitCenter',\n testMode: false,\n URL: {\n getDataTableContent: '',\n getProductGroupHTML: '',\n index: '',\n show: '',\n edit: '',\n create: '',\n store: '',\n update: '',\n destroy: ''\n },\n dataTable: {\n orderDirective: [1, 'asc']\n },\n onAfterInitViewDetails: function onAfterInitViewDetails() {}\n };\n var root = this;\n /*\r\n * Constructor\r\n */\n this.construct = function (options, SupplierItem) {\n console.log('PriceListProfitCenterAdmin constructor called');\n $.extend(Opts, options);\n };\n this.getOpts = function () {\n return Opts;\n };\n var changeParameter = {\n supplier: '',\n profitCenter: '',\n deliveryDate: ''\n /*\r\n supplier:26,\r\n profitCenter:49,\r\n deliveryDate:'2023-09-10',\r\n */\n };\n this.checkRefreshPossible = function () {\n console.log('check need parameter');\n var needRefresh = true;\n $.each(changeParameter, function (name, data) {\n if (data === '') {\n needRefresh = false;\n }\n });\n if (needRefresh) {\n root.refreshDatatable();\n root.refreshProductGroup();\n root.setDatatableHeaderText('');\n }\n };\n this.setDatatableHeaderText = function (text) {\n $('.tableHeaderText').text(text);\n };\n this.getTreePathName = function (node) {\n var res = '';\n var items = $(node).parents('li').toArray();\n items.shift();\n items.reverse();\n for (var item in items) {\n if ($(items[item]).children('a.categoryItem').length > 0) {\n res += $(items[item]).children('a.categoryItem').text() + '/';\n }\n }\n res += $(node).text();\n return res;\n };\n this.bindProductGroupItem = function () {\n $('.sidebar-menu .sidebar-dropdown .sidebar-submenu li a.categoryItem.clickable').off('click');\n $('.sidebar-menu .sidebar-dropdown .sidebar-submenu li a.categoryItem.clickable').on('click', function () {\n var groupId = $(this).data('id');\n selectedProductGroup = groupId;\n root.setDatatableHeaderText(root.getTreePathName(this));\n /*\r\n console.log(groupId);\r\n console.log(root.getTreePathName(this));\r\n */\n root.refreshDatatable();\n });\n };\n this.refreshProductGroup = function () {\n var ajaxData = {\n 'supplierId': changeParameter.supplier,\n 'deliveryDate': changeParameter.deliveryDate\n };\n var ajaxUrl = Opts.URL.getProductGroupHTML;\n $.ajax({\n url: ajaxUrl,\n data: ajaxData,\n type: 'GET',\n contentType: false,\n processData: true,\n beforeSend: function beforeSend() {},\n success: function success(data) {\n $('.sidebar-menu .productGroup').find('ul').html(data);\n root.bindProductGroupItem();\n },\n error: function error(data) {\n ajaxErrorFieldHandler(data.responseJSON.error);\n }\n });\n };\n this.refreshDatatable = function () {\n $('.dataTableOrderProductSelect').DataTable().ajax.reload();\n };\n this.changePriceListProfitCenterParameter = function (e, obj) {\n if (typeof obj == 'undefined') {\n obj = $(this);\n }\n var objName = obj.attr(\"name\");\n if (objName == 'supplier') {\n selectedProductGroup = null;\n }\n var data = '';\n if (obj.get(0).nodeName == 'SELECT') {\n if (obj.select2('data').length > 0) {\n data = obj.select2('data')[0].id;\n }\n ;\n } else {\n data = obj.val();\n }\n if (changeParameter[objName] != data) {\n changeParameter[objName] = data;\n root.checkRefreshPossible();\n }\n };\n this.init = function (options) {\n $.extend(Opts, options);\n var CSSSelectorForm = Opts.containerCssSelector;\n $(CSSSelectorForm + ' .datePickerClick').click(function () {\n $(CSSSelectorForm + ' .datePicker').datepicker('show');\n });\n $('.supplierSelect').on('change', root.changePriceListProfitCenterParameter);\n $('.profitCenterSelect').on('change', root.changePriceListProfitCenterParameter);\n\n //$('input[name=\"deliveryDate\"]').on('change',changePriceListProfitCenterParameter);\n\n $(\".supplierSelect\").select2({\n maximumSelectionLength: 1\n });\n /*\r\n */\n $(\".profitCenterSelect\").select2({\n maximumSelectionLength: 1\n });\n $(CSSSelectorForm + ' .datePicker').datepicker({\n dateFormat: 'yy-mm-dd',\n minDate: new Date(),\n onSelect: function onSelect(dateText, obj) {\n $(CSSSelectorForm + ' .selectedDateText').text(dateText);\n $('.deliveryDatePlace').text(dateText.replaceAll('-', '.') + '.');\n $(CSSSelectorForm + ' input[name=\"deliveryDate\"]').val(dateText);\n root.changePriceListProfitCenterParameter(null, $(obj.input));\n }\n });\n //root.initViewList();\n var table = root.getDatatables('');\n $('.dataTableOrderProductSelect').on('draw.dt', root.productSelectDataTableDrawDT).dataTable();\n /*\r\n /!*\r\n ----------------------------------------------------------\r\n Add event listener for opening and closing details\r\n *!/\r\n $('.dataTableOrderProductSelect tbody').on('click', 'td.details-control', function () {\r\n let tr = $(this).closest('tr');\r\n let row = table.row( tr );\r\n if ( row.child.isShown() ) {\r\n // This row is already open - close it\r\n row.child.hide();\r\n tr.removeClass('shown');\r\n }\r\n else {\r\n // Open this row\r\n row.child( root.productSelectDatatablesRowFormatter(row.data()) ).show();\r\n tr.addClass('shown');\r\n root.bindProductDetailsAction();\r\n }\r\n } );*/\n };\n this.productSelectDataTableDrawDT = function (e) {\n //debug( 'Table draw complete: '+new Date().getTime() );\n\n $('td:contains(\"*\")').html('<i class=\"bi bi-check-circle-fill\"></i>');\n $('td.details-control').removeClass('details-control');\n };\n var selectedProductGroup = null;\n this.getDatatables = function (orderType) {\n var table = $('.dataTableOrderProductSelect').DataTable({\n language: {\n url: '//cdn.datatables.net/plug-ins/1.10.24/i18n/Hungarian.json'\n },\n //\"ajax\": \"{{asset('exapmle2.json')}}\",\n \"ajax\": {\n url: Opts.URL.getDataTableContent,\n data: function data(_data) {\n /*\r\n data.searchStr=dataTableSearchStr;\r\n data.krel=dataTableSearchKrel;\r\n data.groupId=selectedProductGroup;\r\n */\n _data.supplierId = changeParameter.supplier;\n _data.profitCenterId = changeParameter.profitCenter;\n _data.deliveryDate = changeParameter.deliveryDate;\n _data.groupId = selectedProductGroup;\n }\n },\n buttons: {\n buttons: []\n },\n \"columnDefs\": APP.OrderModule.productSelectDataTableColumnDefs(),\n \"columns\": APP.OrderModule.productSelectDataTableColumn(),\n \"order\": [[1, 'asc']]\n });\n return table;\n };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ3aW5kb3ciLCJQcmljZUxpc3RQcm9maXRDZW50ZXJBZG1pbiIsIm9wdGlvbnMiLCJPcHRzIiwidG9rZW4iLCJjb250YWluZXJDc3NTZWxlY3RvciIsInRlc3RNb2RlIiwiVVJMIiwiZ2V0RGF0YVRhYmxlQ29udGVudCIsImdldFByb2R1Y3RHcm91cEhUTUwiLCJpbmRleCIsInNob3ciLCJlZGl0IiwiY3JlYXRlIiwic3RvcmUiLCJ1cGRhdGUiLCJkZXN0cm95IiwiZGF0YVRhYmxlIiwib3JkZXJEaXJlY3RpdmUiLCJvbkFmdGVySW5pdFZpZXdEZXRhaWxzIiwicm9vdCIsImNvbnN0cnVjdCIsIlN1cHBsaWVySXRlbSIsImNvbnNvbGUiLCJsb2ciLCIkIiwiZXh0ZW5kIiwiZ2V0T3B0cyIsImNoYW5nZVBhcmFtZXRlciIsInN1cHBsaWVyIiwicHJvZml0Q2VudGVyIiwiZGVsaXZlcnlEYXRlIiwiY2hlY2tSZWZyZXNoUG9zc2libGUiLCJuZWVkUmVmcmVzaCIsImVhY2giLCJuYW1lIiwiZGF0YSIsInJlZnJlc2hEYXRhdGFibGUiLCJyZWZyZXNoUHJvZHVjdEdyb3VwIiwic2V0RGF0YXRhYmxlSGVhZGVyVGV4dCIsInRleHQiLCJnZXRUcmVlUGF0aE5hbWUiLCJub2RlIiwicmVzIiwiaXRlbXMiLCJwYXJlbnRzIiwidG9BcnJheSIsInNoaWZ0IiwicmV2ZXJzZSIsIml0ZW0iLCJjaGlsZHJlbiIsImxlbmd0aCIsImJpbmRQcm9kdWN0R3JvdXBJdGVtIiwib2ZmIiwib24iLCJncm91cElkIiwic2VsZWN0ZWRQcm9kdWN0R3JvdXAiLCJhamF4RGF0YSIsImFqYXhVcmwiLCJhamF4IiwidXJsIiwidHlwZSIsImNvbnRlbnRUeXBlIiwicHJvY2Vzc0RhdGEiLCJiZWZvcmVTZW5kIiwic3VjY2VzcyIsImZpbmQiLCJodG1sIiwiZXJyb3IiLCJhamF4RXJyb3JGaWVsZEhhbmRsZXIiLCJyZXNwb25zZUpTT04iLCJEYXRhVGFibGUiLCJyZWxvYWQiLCJjaGFuZ2VQcmljZUxpc3RQcm9maXRDZW50ZXJQYXJhbWV0ZXIiLCJlIiwib2JqIiwib2JqTmFtZSIsImF0dHIiLCJnZXQiLCJub2RlTmFtZSIsInNlbGVjdDIiLCJpZCIsInZhbCIsImluaXQiLCJDU1NTZWxlY3RvckZvcm0iLCJjbGljayIsImRhdGVwaWNrZXIiLCJtYXhpbXVtU2VsZWN0aW9uTGVuZ3RoIiwiZGF0ZUZvcm1hdCIsIm1pbkRhdGUiLCJEYXRlIiwib25TZWxlY3QiLCJkYXRlVGV4dCIsInJlcGxhY2VBbGwiLCJpbnB1dCIsInRhYmxlIiwiZ2V0RGF0YXRhYmxlcyIsInByb2R1Y3RTZWxlY3REYXRhVGFibGVEcmF3RFQiLCJyZW1vdmVDbGFzcyIsIm9yZGVyVHlwZSIsImxhbmd1YWdlIiwic3VwcGxpZXJJZCIsInByb2ZpdENlbnRlcklkIiwiYnV0dG9ucyIsIkFQUCIsIk9yZGVyTW9kdWxlIiwicHJvZHVjdFNlbGVjdERhdGFUYWJsZUNvbHVtbkRlZnMiLCJwcm9kdWN0U2VsZWN0RGF0YVRhYmxlQ29sdW1uIl0sInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9hZG1pbi9wcmljZUxpc3RQcm9maXRDZW50ZXIuanM/MWNiYSJdLCJzb3VyY2VzQ29udGVudCI6WyJ3aW5kb3cuUHJpY2VMaXN0UHJvZml0Q2VudGVyQWRtaW49ZnVuY3Rpb24gKG9wdGlvbnMpIHtcclxuICAgIC8qXHJcbiAgICAgKiBWYXJpYWJsZXMgYWNjZXNzaWJsZVxyXG4gICAgICogaW4gdGhlIGNsYXNzXHJcbiAgICAgKi9cclxuICAgIGxldCBPcHRzID0ge1xyXG4gICAgICAgIHRva2VuOiBudWxsLFxyXG4gICAgICAgIGNvbnRhaW5lckNzc1NlbGVjdG9yOiAnLmNvbnRhaW5lclByaWNlTGlzdFByb2ZpdENlbnRlcicsXHJcbiAgICAgICAgdGVzdE1vZGU6IGZhbHNlLFxyXG4gICAgICAgIFVSTDoge1xyXG4gICAgICAgICAgICBnZXREYXRhVGFibGVDb250ZW50OiAnJyxcclxuICAgICAgICAgICAgZ2V0UHJvZHVjdEdyb3VwSFRNTDogJycsXHJcbiAgICAgICAgICAgIGluZGV4OiAnJyxcclxuICAgICAgICAgICAgc2hvdzogJycsXHJcbiAgICAgICAgICAgIGVkaXQ6ICcnLFxyXG4gICAgICAgICAgICBjcmVhdGU6ICcnLFxyXG4gICAgICAgICAgICBzdG9yZTogJycsXHJcbiAgICAgICAgICAgIHVwZGF0ZTogJycsXHJcbiAgICAgICAgICAgIGRlc3Ryb3k6ICcnLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGF0YVRhYmxlOiB7XHJcbiAgICAgICAgICAgIG9yZGVyRGlyZWN0aXZlOiBbMSwgJ2FzYyddXHJcbiAgICAgICAgfSxcclxuICAgICAgICBvbkFmdGVySW5pdFZpZXdEZXRhaWxzOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGxldCByb290ID0gdGhpcztcclxuICAgIC8qXHJcbiAgICAgKiBDb25zdHJ1Y3RvclxyXG4gICAgICovXHJcbiAgICB0aGlzLmNvbnN0cnVjdCA9IGZ1bmN0aW9uIChvcHRpb25zLCBTdXBwbGllckl0ZW0pIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnUHJpY2VMaXN0UHJvZml0Q2VudGVyQWRtaW4gY29uc3RydWN0b3IgY2FsbGVkJyk7XHJcbiAgICAgICAgJC5leHRlbmQoT3B0cywgb3B0aW9ucyk7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5nZXRPcHRzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBPcHRzO1xyXG4gICAgfVxyXG4gICAgbGV0IGNoYW5nZVBhcmFtZXRlcj17XHJcbiAgICAgICAgc3VwcGxpZXI6JycsXHJcbiAgICAgICAgcHJvZml0Q2VudGVyOicnLFxyXG4gICAgICAgIGRlbGl2ZXJ5RGF0ZTonJyxcclxuICAgICAgICAvKlxyXG4gICAgICAgIHN1cHBsaWVyOjI2LFxyXG4gICAgICAgIHByb2ZpdENlbnRlcjo0OSxcclxuICAgICAgICBkZWxpdmVyeURhdGU6JzIwMjMtMDktMTAnLFxyXG4gICAgICAgICovXHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hlY2tSZWZyZXNoUG9zc2libGU9ZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2NoZWNrIG5lZWQgcGFyYW1ldGVyJyk7XHJcbiAgICAgICAgbGV0IG5lZWRSZWZyZXNoPXRydWU7XHJcbiAgICAgICAgJC5lYWNoKGNoYW5nZVBhcmFtZXRlcixmdW5jdGlvbiAobmFtZSxkYXRhKXtcclxuICAgICAgICAgICAgaWYoZGF0YT09PScnKXtcclxuICAgICAgICAgICAgICAgIG5lZWRSZWZyZXNoPWZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYobmVlZFJlZnJlc2gpe1xyXG4gICAgICAgICAgICByb290LnJlZnJlc2hEYXRhdGFibGUoKVxyXG4gICAgICAgICAgICByb290LnJlZnJlc2hQcm9kdWN0R3JvdXAoKTtcclxuICAgICAgICAgICAgcm9vdC5zZXREYXRhdGFibGVIZWFkZXJUZXh0KCcnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldERhdGF0YWJsZUhlYWRlclRleHQ9ZnVuY3Rpb24odGV4dCl7XHJcbiAgICAgICAgJCgnLnRhYmxlSGVhZGVyVGV4dCcpLnRleHQodGV4dCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5nZXRUcmVlUGF0aE5hbWU9ZnVuY3Rpb24gKG5vZGUpe1xyXG4gICAgICAgIGxldCByZXM9Jyc7XHJcbiAgICAgICAgbGV0IGl0ZW1zPSQobm9kZSkucGFyZW50cygnbGknKS50b0FycmF5KCk7XHJcbiAgICAgICAgaXRlbXMuc2hpZnQoKTtcclxuICAgICAgICBpdGVtcy5yZXZlcnNlKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIGluIGl0ZW1zKSB7XHJcbiAgICAgICAgICAgIGlmKCQoaXRlbXNbaXRlbV0pLmNoaWxkcmVuKCdhLmNhdGVnb3J5SXRlbScpLmxlbmd0aD4wKXtcclxuICAgICAgICAgICAgICAgIHJlcys9JChpdGVtc1tpdGVtXSkuY2hpbGRyZW4oJ2EuY2F0ZWdvcnlJdGVtJykudGV4dCgpKycvJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlcys9JChub2RlKS50ZXh0KCk7XHJcbiAgICAgICAgcmV0dXJuIHJlcztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmJpbmRQcm9kdWN0R3JvdXBJdGVtPWZ1bmN0aW9uKCl7XHJcbiAgICAgICAgJCgnLnNpZGViYXItbWVudSAuc2lkZWJhci1kcm9wZG93biAuc2lkZWJhci1zdWJtZW51IGxpIGEuY2F0ZWdvcnlJdGVtLmNsaWNrYWJsZScpLm9mZignY2xpY2snKTtcclxuICAgICAgICAkKCcuc2lkZWJhci1tZW51IC5zaWRlYmFyLWRyb3Bkb3duIC5zaWRlYmFyLXN1Ym1lbnUgbGkgYS5jYXRlZ29yeUl0ZW0uY2xpY2thYmxlJykub24oJ2NsaWNrJyxcclxuICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGdyb3VwSWQ9JCh0aGlzKS5kYXRhKCdpZCcpO1xyXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRQcm9kdWN0R3JvdXA9Z3JvdXBJZDtcclxuICAgICAgICAgICAgICAgIHJvb3Quc2V0RGF0YXRhYmxlSGVhZGVyVGV4dChyb290LmdldFRyZWVQYXRoTmFtZSh0aGlzKSk7XHJcbiAgICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coZ3JvdXBJZCk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyb290LmdldFRyZWVQYXRoTmFtZSh0aGlzKSk7XHJcbiAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgcm9vdC5yZWZyZXNoRGF0YXRhYmxlKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLnJlZnJlc2hQcm9kdWN0R3JvdXA9ZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgbGV0IGFqYXhEYXRhPXtcclxuICAgICAgICAgICAgJ3N1cHBsaWVySWQnOmNoYW5nZVBhcmFtZXRlci5zdXBwbGllcixcclxuICAgICAgICAgICAgJ2RlbGl2ZXJ5RGF0ZSc6Y2hhbmdlUGFyYW1ldGVyLmRlbGl2ZXJ5RGF0ZVxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgYWpheFVybD1PcHRzLlVSTC5nZXRQcm9kdWN0R3JvdXBIVE1MO1xyXG4gICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgIHVybDphamF4VXJsLFxyXG4gICAgICAgICAgICBkYXRhOmFqYXhEYXRhLFxyXG4gICAgICAgICAgICB0eXBlOidHRVQnLFxyXG4gICAgICAgICAgICBjb250ZW50VHlwZTpmYWxzZSxcclxuICAgICAgICAgICAgcHJvY2Vzc0RhdGE6IHRydWUsXHJcbiAgICAgICAgICAgIGJlZm9yZVNlbmQ6IGZ1bmN0aW9uKCkge1xyXG5cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgJCgnLnNpZGViYXItbWVudSAucHJvZHVjdEdyb3VwJykuZmluZCgndWwnKS5odG1sKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgcm9vdC5iaW5kUHJvZHVjdEdyb3VwSXRlbSgpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgYWpheEVycm9yRmllbGRIYW5kbGVyKGRhdGEucmVzcG9uc2VKU09OLmVycm9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgfVxyXG4gICAgdGhpcy5yZWZyZXNoRGF0YXRhYmxlPWZ1bmN0aW9uICgpe1xyXG4gICAgICAgICQoJy5kYXRhVGFibGVPcmRlclByb2R1Y3RTZWxlY3QnKS5EYXRhVGFibGUoKS5hamF4LnJlbG9hZCgpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLmNoYW5nZVByaWNlTGlzdFByb2ZpdENlbnRlclBhcmFtZXRlcj1mdW5jdGlvbihlLG9iail7XHJcbiAgICAgICAgaWYodHlwZW9mIG9iaiA9PSd1bmRlZmluZWQnKXtcclxuICAgICAgICAgICAgb2JqPSQodGhpcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBvYmpOYW1lPW9iai5hdHRyKFwibmFtZVwiKTtcclxuICAgICAgICBpZihvYmpOYW1lPT0nc3VwcGxpZXInKXtcclxuICAgICAgICAgICAgc2VsZWN0ZWRQcm9kdWN0R3JvdXA9bnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGRhdGE9Jyc7XHJcbiAgICAgICAgaWYob2JqLmdldCgwKS5ub2RlTmFtZT09J1NFTEVDVCcpe1xyXG4gICAgICAgICAgICBpZihvYmouc2VsZWN0MignZGF0YScpLmxlbmd0aD4wKXtcclxuICAgICAgICAgICAgICAgIGRhdGE9b2JqLnNlbGVjdDIoJ2RhdGEnKVswXS5pZDtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgZGF0YT1vYmoudmFsKClcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoY2hhbmdlUGFyYW1ldGVyW29iak5hbWVdIT1kYXRhKXtcclxuICAgICAgICAgICAgY2hhbmdlUGFyYW1ldGVyW29iak5hbWVdPWRhdGE7XHJcbiAgICAgICAgICAgIHJvb3QuY2hlY2tSZWZyZXNoUG9zc2libGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbml0PWZ1bmN0aW9uIChvcHRpb25zKXtcclxuICAgICAgICAkLmV4dGVuZChPcHRzLCBvcHRpb25zKTtcclxuICAgICAgICBsZXQgQ1NTU2VsZWN0b3JGb3JtPU9wdHMuY29udGFpbmVyQ3NzU2VsZWN0b3I7XHJcbiAgICAgICAgJChDU1NTZWxlY3RvckZvcm0rJyAuZGF0ZVBpY2tlckNsaWNrJykuY2xpY2soZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgJChDU1NTZWxlY3RvckZvcm0rJyAuZGF0ZVBpY2tlcicpLmRhdGVwaWNrZXIoJ3Nob3cnKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgJCgnLnN1cHBsaWVyU2VsZWN0Jykub24oJ2NoYW5nZScscm9vdC5jaGFuZ2VQcmljZUxpc3RQcm9maXRDZW50ZXJQYXJhbWV0ZXIpO1xyXG4gICAgICAgICQoJy5wcm9maXRDZW50ZXJTZWxlY3QnKS5vbignY2hhbmdlJyxyb290LmNoYW5nZVByaWNlTGlzdFByb2ZpdENlbnRlclBhcmFtZXRlcik7XHJcblxyXG4gICAgICAgIC8vJCgnaW5wdXRbbmFtZT1cImRlbGl2ZXJ5RGF0ZVwiXScpLm9uKCdjaGFuZ2UnLGNoYW5nZVByaWNlTGlzdFByb2ZpdENlbnRlclBhcmFtZXRlcik7XHJcblxyXG5cclxuICAgICAgICAkKFwiLnN1cHBsaWVyU2VsZWN0XCIpLnNlbGVjdDIoe1xyXG4gICAgICAgICAgICBtYXhpbXVtU2VsZWN0aW9uTGVuZ3RoOiAxLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8qXHJcbiAgICAgICAgKi9cclxuICAgICAgICAkKFwiLnByb2ZpdENlbnRlclNlbGVjdFwiKS5zZWxlY3QyKHtcclxuICAgICAgICAgICAgbWF4aW11bVNlbGVjdGlvbkxlbmd0aDogMSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgJChDU1NTZWxlY3RvckZvcm0gKyAnIC5kYXRlUGlja2VyJykuZGF0ZXBpY2tlcih7XHJcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ6ICd5eS1tbS1kZCcsXHJcbiAgICAgICAgICAgIG1pbkRhdGU6IG5ldyBEYXRlKCksXHJcbiAgICAgICAgICAgIG9uU2VsZWN0OiBmdW5jdGlvbiAoZGF0ZVRleHQsb2JqKSB7XHJcbiAgICAgICAgICAgICAgICAkKENTU1NlbGVjdG9yRm9ybSArICcgLnNlbGVjdGVkRGF0ZVRleHQnKS50ZXh0KGRhdGVUZXh0KTtcclxuICAgICAgICAgICAgICAgICQoJy5kZWxpdmVyeURhdGVQbGFjZScpLnRleHQoZGF0ZVRleHQucmVwbGFjZUFsbCgnLScsICcuJykgKyAnLicpO1xyXG4gICAgICAgICAgICAgICAgJChDU1NTZWxlY3RvckZvcm0gKyAnIGlucHV0W25hbWU9XCJkZWxpdmVyeURhdGVcIl0nKS52YWwoZGF0ZVRleHQpO1xyXG4gICAgICAgICAgICAgICAgcm9vdC5jaGFuZ2VQcmljZUxpc3RQcm9maXRDZW50ZXJQYXJhbWV0ZXIobnVsbCwkKG9iai5pbnB1dCkpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vcm9vdC5pbml0Vmlld0xpc3QoKTtcclxuICAgICAgICBsZXQgdGFibGUgPSByb290LmdldERhdGF0YWJsZXMoJycpO1xyXG4gICAgICAgICQoJy5kYXRhVGFibGVPcmRlclByb2R1Y3RTZWxlY3QnKS5vbiggJ2RyYXcuZHQnLHJvb3QucHJvZHVjdFNlbGVjdERhdGFUYWJsZURyYXdEVCkuZGF0YVRhYmxlKCk7XHJcbiAgICAgICAgLypcclxuICAgICAgICAgIC8hKlxyXG4gICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICAgICAgIEFkZCBldmVudCBsaXN0ZW5lciBmb3Igb3BlbmluZyBhbmQgY2xvc2luZyBkZXRhaWxzXHJcbiAgICAgICAgICAgKiEvXHJcblxyXG4gICAgICAgICAgJCgnLmRhdGFUYWJsZU9yZGVyUHJvZHVjdFNlbGVjdCB0Ym9keScpLm9uKCdjbGljaycsICd0ZC5kZXRhaWxzLWNvbnRyb2wnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHRyID0gJCh0aGlzKS5jbG9zZXN0KCd0cicpO1xyXG4gICAgICAgICAgICAgIGxldCByb3cgPSB0YWJsZS5yb3coIHRyICk7XHJcblxyXG4gICAgICAgICAgICAgIGlmICggcm93LmNoaWxkLmlzU2hvd24oKSApIHtcclxuICAgICAgICAgICAgICAgICAgLy8gVGhpcyByb3cgaXMgYWxyZWFkeSBvcGVuIC0gY2xvc2UgaXRcclxuICAgICAgICAgICAgICAgICAgcm93LmNoaWxkLmhpZGUoKTtcclxuICAgICAgICAgICAgICAgICAgdHIucmVtb3ZlQ2xhc3MoJ3Nob3duJyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAvLyBPcGVuIHRoaXMgcm93XHJcbiAgICAgICAgICAgICAgICAgIHJvdy5jaGlsZCggcm9vdC5wcm9kdWN0U2VsZWN0RGF0YXRhYmxlc1Jvd0Zvcm1hdHRlcihyb3cuZGF0YSgpKSApLnNob3coKTtcclxuICAgICAgICAgICAgICAgICAgdHIuYWRkQ2xhc3MoJ3Nob3duJyk7XHJcbiAgICAgICAgICAgICAgICAgIHJvb3QuYmluZFByb2R1Y3REZXRhaWxzQWN0aW9uKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSApOyovXHJcbiAgICB9XHJcbiAgICB0aGlzLnByb2R1Y3RTZWxlY3REYXRhVGFibGVEcmF3RFQ9ZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAvL2RlYnVnKCAnVGFibGUgZHJhdyBjb21wbGV0ZTogJytuZXcgRGF0ZSgpLmdldFRpbWUoKSApO1xyXG5cclxuICAgICAgICAkKCd0ZDpjb250YWlucyhcIipcIiknKS5odG1sKCc8aSBjbGFzcz1cImJpIGJpLWNoZWNrLWNpcmNsZS1maWxsXCI+PC9pPicpO1xyXG4gICAgICAgICQoJ3RkLmRldGFpbHMtY29udHJvbCcpLnJlbW92ZUNsYXNzKCdkZXRhaWxzLWNvbnRyb2wnKTtcclxuXHJcblxyXG5cclxuICAgIH1cclxuICAgIGxldCBzZWxlY3RlZFByb2R1Y3RHcm91cD1udWxsO1xyXG5cclxuICAgIHRoaXMuZ2V0RGF0YXRhYmxlcz1mdW5jdGlvbiAob3JkZXJUeXBlKXtcclxuICAgICAgICBsZXQgdGFibGUgPSAkKCcuZGF0YVRhYmxlT3JkZXJQcm9kdWN0U2VsZWN0JykuRGF0YVRhYmxlKCB7XHJcbiAgICAgICAgICAgIGxhbmd1YWdlOiB7XHJcbiAgICAgICAgICAgICAgICB1cmw6ICcvL2Nkbi5kYXRhdGFibGVzLm5ldC9wbHVnLWlucy8xLjEwLjI0L2kxOG4vSHVuZ2FyaWFuLmpzb24nXHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAvL1wiYWpheFwiOiBcInt7YXNzZXQoJ2V4YXBtbGUyLmpzb24nKX19XCIsXHJcbiAgICAgICAgICAgIFwiYWpheFwiOiB7XHJcbiAgICAgICAgICAgICAgICB1cmw6T3B0cy5VUkwuZ2V0RGF0YVRhYmxlQ29udGVudCxcclxuICAgICAgICAgICAgICAgIGRhdGE6ZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuc2VhcmNoU3RyPWRhdGFUYWJsZVNlYXJjaFN0cjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmtyZWw9ZGF0YVRhYmxlU2VhcmNoS3JlbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmdyb3VwSWQ9c2VsZWN0ZWRQcm9kdWN0R3JvdXA7XHJcbiAgICAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnN1cHBsaWVySWQ9Y2hhbmdlUGFyYW1ldGVyLnN1cHBsaWVyO1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEucHJvZml0Q2VudGVySWQ9Y2hhbmdlUGFyYW1ldGVyLnByb2ZpdENlbnRlcjtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmRlbGl2ZXJ5RGF0ZT1jaGFuZ2VQYXJhbWV0ZXIuZGVsaXZlcnlEYXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuZ3JvdXBJZD1zZWxlY3RlZFByb2R1Y3RHcm91cDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYnV0dG9uczoge1xyXG4gICAgICAgICAgICAgICAgYnV0dG9uczogW11cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXCJjb2x1bW5EZWZzXCI6IEFQUC5PcmRlck1vZHVsZS5wcm9kdWN0U2VsZWN0RGF0YVRhYmxlQ29sdW1uRGVmcygpLFxyXG4gICAgICAgICAgICBcImNvbHVtbnNcIjogQVBQLk9yZGVyTW9kdWxlLnByb2R1Y3RTZWxlY3REYXRhVGFibGVDb2x1bW4oKSxcclxuICAgICAgICAgICAgXCJvcmRlclwiOiBbWzEsICdhc2MnXV0sXHJcbiAgICAgICAgfSApO1xyXG4gICAgICAgIHJldHVybiB0YWJsZTtcclxuICAgIH1cclxuXHJcblxyXG59XHJcbiJdLCJtYXBwaW5ncyI6IkFBQUFBLE1BQU0sQ0FBQ0MsMEJBQTBCLEdBQUMsVUFBVUMsT0FBTyxFQUFFO0VBQ2pEO0FBQ0o7QUFDQTtBQUNBO0VBQ0ksSUFBSUMsSUFBSSxHQUFHO0lBQ1BDLEtBQUssRUFBRSxJQUFJO0lBQ1hDLG9CQUFvQixFQUFFLGlDQUFpQztJQUN2REMsUUFBUSxFQUFFLEtBQUs7SUFDZkMsR0FBRyxFQUFFO01BQ0RDLG1CQUFtQixFQUFFLEVBQUU7TUFDdkJDLG1CQUFtQixFQUFFLEVBQUU7TUFDdkJDLEtBQUssRUFBRSxFQUFFO01BQ1RDLElBQUksRUFBRSxFQUFFO01BQ1JDLElBQUksRUFBRSxFQUFFO01BQ1JDLE1BQU0sRUFBRSxFQUFFO01BQ1ZDLEtBQUssRUFBRSxFQUFFO01BQ1RDLE1BQU0sRUFBRSxFQUFFO01BQ1ZDLE9BQU8sRUFBRTtJQUNiLENBQUM7SUFDREMsU0FBUyxFQUFFO01BQ1BDLGNBQWMsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLO0lBQzdCLENBQUM7SUFDREMsc0JBQXNCLEVBQUUsU0FBeEJBLHNCQUFzQkEsQ0FBQSxFQUFjLENBQ3BDO0VBQ0osQ0FBQztFQUNELElBQUlDLElBQUksR0FBRyxJQUFJO0VBQ2Y7QUFD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QztJQUNGO0lBQ0EsSUFBSUMsS0FBSyxHQUFHM0UsSUFBSSxDQUFDNEUsYUFBYSxDQUFDLEVBQUUsQ0FBQztJQUNsQ3ZFLENBQUMsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDNkIsRUFBRSxDQUFFLFNBQVMsRUFBQ2xDLElBQUksQ0FBQzZFLDRCQUE0QixDQUFDLENBQUNoRixTQUFTLENBQUMsQ0FBQztJQUM5RjtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBR0ksQ0FBQztFQUNELElBQUksQ0FBQ2dGLDRCQUE0QixHQUFDLFVBQVV2QixDQUFDLEVBQUU7SUFDM0M7O0lBRUFqRCxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQzBDLElBQUksQ0FBQyx5Q0FBeUMsQ0FBQztJQUNyRTFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDeUUsV0FBVyxDQUFDLGlCQUFpQixDQUFDO0VBSTFELENBQUM7RUFDRCxJQUFJMUMsb0JBQW9CLEdBQUMsSUFBSTtFQUU3QixJQUFJLENBQUN3QyxhQUFhLEdBQUMsVUFBVUcsU0FBUyxFQUFDO0lBQ25DLElBQUlKLEtBQUssR0FBR3RFLENBQUMsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDOEMsU0FBUyxDQUFFO01BQ3JENkIsUUFBUSxFQUFFO1FBQ054QyxHQUFHLEVBQUU7TUFDVCxDQUFDO01BRUQ7TUFDQSxNQUFNLEVBQUU7UUFDSkEsR0FBRyxFQUFDekQsSUFBSSxDQUFDSSxHQUFHLENBQUNDLG1CQUFtQjtRQUNoQzRCLElBQUksRUFBQyxTQUFMQSxJQUFJQSxDQUFXQSxLQUFJLEVBQUU7VUFDakI7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7VUFDb0JBLEtBQUksQ0FBQ2lFLFVBQVUsR0FBQ3pFLGVBQWUsQ0FBQ0MsUUFBUTtVQUN4Q08sS0FBSSxDQUFDa0UsY0FBYyxHQUFDMUUsZUFBZSxDQUFDRSxZQUFZO1VBQ2hETSxLQUFJLENBQUNMLFlBQVksR0FBQ0gsZUFBZSxDQUFDRyxZQUFZO1VBQzlDSyxLQUFJLENBQUNtQixPQUFPLEdBQUNDLG9CQUFvQjtRQUNyQztNQUNKLENBQUM7TUFDRCtDLE9BQU8sRUFBRTtRQUNMQSxPQUFPLEVBQUU7TUFDYixDQUFDO01BQ0QsWUFBWSxFQUFFQyxHQUFHLENBQUNDLFdBQVcsQ0FBQ0MsZ0NBQWdDLENBQUMsQ0FBQztNQUNoRSxTQUFTLEVBQUVGLEdBQUcsQ0FBQ0MsV0FBVyxDQUFDRSw0QkFBNEIsQ0FBQyxDQUFDO01BQ3pELE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUN4QixDQUFFLENBQUM7SUFDSCxPQUFPWixLQUFLO0VBQ2hCLENBQUM7QUFHTCxDQUFDIiwiaWdub3JlTGlzdCI6W10sImZpbGUiOiIuL3Jlc291cmNlcy9qcy9hZG1pbi9wcmljZUxpc3RQcm9maXRDZW50ZXIuanMiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/admin/priceListProfitCenter.js\n\n}");
|
|
|
|
/***/ },
|
|
|
|
/***/ "./resources/js/admin/product.js"
|
|
/*!***************************************!*\
|
|
!*** ./resources/js/admin/product.js ***!
|
|
\***************************************/
|
|
() {
|
|
|
|
eval("{function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t[\"return\"] || t[\"return\"](); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nif (typeof Product === 'undefined') {\n var _Product = /*#__PURE__*/function (_DataModel) {\n /*\r\n * Constructor\r\n */\n function _Product(data, options) {\n var _this;\n _classCallCheck(this, _Product);\n _this = _callSuper(this, _Product, [data, options]);\n if (typeof _this.contact === \"undefined\") {\n _this.contact = [];\n }\n console.log('Product constructor called');\n return _this;\n }\n _inherits(_Product, _DataModel);\n return _createClass(_Product);\n }(DataModel);\n ;\n window.Product = _Product;\n}\nwindow.ProductAdmin = function (options, ProductItem) {\n /*\r\n * Variables accessible\r\n * in the class\r\n */\n var Opts = {\n token: null,\n containerCssSelector: '.containerProduct',\n container: null,\n resultContainerSelector: '.containerProduct .containerResult',\n resultContainer: null,\n testMode: false,\n filters: {\n Product: {}\n },\n URL: {\n getDataTableContent: '',\n index: '',\n show: '',\n edit: '',\n create: '',\n store: '',\n update: '',\n destroy: '',\n attachFile: '',\n detachFile: ''\n },\n dataTable: {\n orderDirective: [1, 'asc']\n },\n onAfterInitViewDetails: function onAfterInitViewDetails() {}\n };\n var Product = {};\n var root = this;\n var contactPopupWorkflow = 'new';\n var dataTable = null;\n /*\r\n * Constructor\r\n */\n this.construct = function (options, ProductItem) {\n console.log('ProductAdmin constructor called');\n $.extend(Opts, options);\n if (!ProductItem) {\n console.log('Product letre kellet hozni ');\n if (!APP.Product) {\n APP.Product = new window.Product();\n }\n root.Product = APP.Product;\n }\n };\n this.getOpts = function () {\n return Opts;\n };\n this.datatableRowActionButtonClick = function (event) {\n debug('datatableRowActionButtonClick');\n var node = $(event[0].currentTarget);\n var row = $(dataTableCSSSelector).DataTable().row(node.parents('tr'));\n var rowData = row.data();\n var actionName = 'datatableRowAction' + node.data('buttontype').capitalize();\n if (typeof root[actionName] === \"function\") {\n return root[actionName](rowData, node);\n }\n };\n this.datatableRowActionEdit = function (rowData, node) {\n console.log('datatableRowActionEdit Called');\n //Opts.onAfterInitViewDetails=root.autofillDetails;\n var ajaxUrl = Opts.URL.edit.replace('%id%', rowData.id);\n APP.loadMainContent(ajaxUrl, root.initViewDetails);\n console.log('datatableRowActionEdit End');\n };\n this.initViewListOld = function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n debug('listview inicialization');\n dataTableCSSSelector = Opts.containerCssSelector + ' .dataTable'; //\n\n var colNum = $(dataTableCSSSelector + ' thead th').length; //buttons insert position need\n APP.setOpts({\n datatableRowActionButtonClickCallBack: root.datatableRowActionButtonClick\n });\n var orderDirective = Opts.dataTable.orderDirective;\n if (typeof options['orderDirective'] != 'undefined') {\n orderDirective = options['orderDirective'];\n }\n $(dataTableCSSSelector).DataTable({\n language: {\n url: '//cdn.datatables.net/plug-ins/1.10.24/i18n/Hungarian.json'\n },\n //\"ajax\": \"{{asset('exapmle2.json')}}\",\n \"ajax\": Opts.URL.getDataTableContent,\n serverSide: true,\n \"columnDefs\": [{\n \"targets\": colNum - 1,\n orderable: false,\n \"render\": function render(data, type, row) {\n var buttons = APP.datatableAddRowEditButton(0, arguments);\n return buttons;\n }\n }, {\n \"targets\": 1,\n \"render\": function render(data, type, row) {\n return type === \"sort\" ? data.latinise() : data;\n }\n }\n //{ \"visible\": false, \"targets\": [ 0 ] }\n ],\n buttons: {\n buttons: ['excel', 'pdf', {\n extend: 'print',\n //text: 'Print current page',\n 'title': 'title custom text',\n 'messageTop': 'Message On Top',\n autoPrint: true\n }]\n },\n \"columns\": [{\n \"data\": \"id\"\n }, {\n \"data\": \"name\"\n }, {\n \"data\": \"hooreycaId\"\n }, {\n \"data\": \"productGroup\"\n }, {\n \"data\": \"supplierName\"\n }, {\n \"data\": \"price\"\n }, {\n \"data\": \"created_at\"\n }, null],\n \"order\": orderDirective,\n \"stateSave\": true,\n \"drawCallback\": function drawCallback(settings) {\n APP.datatableAddRowAction(dataTableCSSSelector);\n }\n });\n debug('listview end');\n };\n this.initViewList = function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n debug('initViewSearch inicialization 1');\n root.container.find('select.supplierSelect, select.profitCenterSelect, select.productGroupSelect, select.producerSelect, select.hooreycaNamesSelect, select.specialOfferSelect').select2();\n root.container.find('select.productSelect').select2({\n placeholder: '...',\n allowClear: true,\n ajax: {\n url: Opts.URL.getProductSearch,\n dataType: 'json',\n data: function data(params) {\n return {\n term: params.term || '',\n page: params.page || 1,\n supplierId: root.container.find('select.supplierSelect').val()\n };\n },\n cache: true\n }\n });\n root.container.find('.datePickerFrom, .datePickerTo').datepicker({\n dateFormat: 'yy-mm-dd',\n onSelect: function onSelect(dateText, obj) {\n debug(this);\n debug(obj.input);\n /*\r\n root.container.find('.selectedDateText').text(dateText);\r\n $('.deliveryDatePlace').text(dateText.replaceAll('-', '.') + '.');\r\n root.container.find(' input[name=\"deliveryDate\"]').val(dateText);\r\n */\n //root.changePriceListProfitCenterParameter(null,$(obj.input));\n }\n });\n root.container.find('.datePickerClick').click(function () {\n debug($(this).data('action'));\n root.container.find('input[name=\"' + $(this).data('action') + '\"]').datepicker('show');\n });\n var button = root.container.find('.FormSendButton');\n button.off('click');\n button.on('click', function () {\n debug('FormSendButton click');\n root.loadingResultContainer();\n root.requestProducts();\n });\n root.setVisibleFilters('Product');\n debug('initViewSearch end');\n };\n this.loadingResultContainer = function () {\n debug('clearResultContainer');\n debug(root.resultContainer);\n root.hideResultContainer();\n root.container.find('.containerLoading').show();\n /*\r\n let template=root.container.find('template[data-name=\"loading\"]').html()\r\n root.resultContainer.html(template);\r\n */\n };\n this.hideResultContainer = function () {\n debug('hide containerResult');\n debug(root.resultContainer);\n root.resultContainer.hide();\n };\n this.showResultContainer = function () {\n root.container.find('.containerLoading').hide();\n root.resultContainer.show();\n };\n this.init = function (options, ProductItem) {\n console.log('ProductAdmin init');\n $.extend(Opts, options);\n if (Opts.testMode) {\n return root.testMode();\n }\n if (ProductItem) {\n root.Product = ProductItem;\n }\n root.dataTable = null;\n root.container = $(Opts.containerCssSelector);\n root.resultContainer = $(Opts.resultContainerSelector);\n root.initViewList();\n };\n this.initViewDetails = function (options, ProductItem) {\n debug('**call initViewDetails ');\n var CSSSelectorForm = Opts.containerCssSelector + ' .productForm';\n if (root.Product.picture) {\n console.log('*****//////////////////****************');\n console.log(root.Product.picture);\n console.log(CSSSelectorForm);\n var picUrl = root.Product.picture.PublicUrl + '/' + root.Product.picture.filename;\n console.log(picUrl);\n console.log($(CSSSelectorForm + ' img.imageProduct'));\n $(CSSSelectorForm + ' img.imageProduct').attr('src', picUrl);\n }\n if (root.Product.specification) {\n console.log('*****//////////////////****************');\n console.log(root.Product.specification);\n var docUrl = root.Product.specification.PublicUrl + '/' + root.Product.specification.filename;\n root.addAttachment(root.Product.specification);\n }\n var FormSaveButton = $(CSSSelectorForm + ' button.FormSaveButton');\n FormSaveButton.off('click');\n FormSaveButton.on('click', root.clickSaveButton);\n };\n this.addAttachment = function (attachmentData) {\n console.log(attachmentData);\n var CSSSelectorForm = Opts.containerCssSelector + ' .productForm';\n //root.Supplier.attachment.push(attachmentData);\n //attachmentData.rowNum=root.Supplier.attachment.length;\n attachmentData.rowNum = 1;\n var dateStr = new Date(attachmentData.updated_at);\n dateStr = dateStr.toLocaleString('hu-HU', {});\n attachmentData.date = dateStr;\n attachmentData.link = attachmentData.PublicUrl + '/' + attachmentData.filename;\n var template = $('template[data-name=\"productAttachmentTableRow\"]').html();\n var render = Mustache.render(template, attachmentData);\n $(CSSSelectorForm + ' .attachmentTable tbody').append(render);\n //root.bindContactClickAction();\n Toast.enableTimers(false);\n Toast.create(\"Fájl hozzáadva!\", attachmentData.original_filename + \" fájl hozzáadva\", TOAST_STATUS.SUCCESS, 5000);\n };\n this.setVisibleFilters = function (type) {\n console.log('setVisibleFilters');\n console.log(Opts.filters[type]);\n console.log(root.container);\n $(root.container).find('div[class*=\"filter\"]').hide();\n for (var typeIndex in Opts.filters[type]) {\n var typeName = Opts.filters[type][typeIndex];\n debug(typeName);\n console.log($(root.container).find('.filter_' + typeName));\n $(root.container).find('.filter_' + typeName).show();\n }\n };\n this.c = function (CSSSelectorForm) {\n console.log('c called');\n console.log(CSSSelectorForm);\n console.log(root.container);\n console.log(root.container.find('form'));\n console.log(root.container.find(CSSSelectorForm));\n };\n this.formDataToDataObjectAPICall = function (CSSSelectorForm) {\n console.log(CSSSelectorForm);\n console.log(root.container);\n console.log(root.container.find(CSSSelectorForm));\n console.log(root.container.find('form'));\n console.log(root.container.find('form' + CSSSelectorForm)[0]);\n //return;\n var ajaxData = new FormData(root.container.find('form' + CSSSelectorForm)[0]);\n $.each(ajaxData.getAll('supplier'), function (key, value) {\n ajaxData.append('suppliers[]', value);\n });\n ajaxData[\"delete\"]('supplier');\n $.each(ajaxData.getAll('profitCenter'), function (key, value) {\n ajaxData.append('profitCenters[]', value);\n });\n ajaxData[\"delete\"]('profitCenter');\n $.each(ajaxData.getAll('productGroup'), function (key, value) {\n ajaxData.append('productGroups[]', value);\n });\n ajaxData[\"delete\"]('productGroup');\n $.each(ajaxData.getAll('product'), function (key, value) {\n ajaxData.append('products[]', value);\n });\n ajaxData[\"delete\"]('product');\n $.each(ajaxData.getAll('producer'), function (key, value) {\n ajaxData.append('producers[]', value);\n });\n ajaxData[\"delete\"]('producer');\n $.each(ajaxData.getAll('hooreycaName'), function (key, value) {\n ajaxData.append('hooreycaNames[]', value);\n });\n ajaxData[\"delete\"]('hooreycaName');\n\n //ajaxData.append('_token', root.container.find('input[name=_token]').val());\n\n /*\r\n $(CSSSelectorForm + ' input[data-inputmask]').each(function () {\r\n let indexKey = $(this).attr('name');\r\n if (ajaxData.get(indexKey)) {\r\n ajaxData.set(indexKey, ajaxData.get(indexKey).replace(/[_ ]+$/g, \"\"));\r\n }\r\n });\r\n */\n return ajaxData;\n };\n this.getAjaxDataJson = function () {\n var ajaxData = root.formDataToDataObjectAPICall('.ProductListForm');\n console.log('======================');\n var _iterator = _createForOfIteratorHelper(ajaxData.entries()),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var pair = _step.value;\n console.log(pair[0] + ', ' + pair[1]);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n var object = {};\n ajaxData.forEach(function (value, key) {\n // Reflect.has in favor of: object.hasOwnProperty(key)\n if (!Reflect.has(object, key)) {\n object[key] = value;\n return;\n }\n if (!Array.isArray(object[key])) {\n object[key] = [object[key]];\n }\n object[key].push(value);\n });\n var ajaxDataJson = JSON.stringify(object);\n return ajaxDataJson;\n };\n this.requestProducts = function () {\n var ajaxUrl = Opts.URL.getDataTableContent;\n var ajaxMethod = 'GET';\n //token formdataba!\n debug(ajaxUrl);\n ajaxDataJson = root.getAjaxDataJson();\n console.log(ajaxDataJson);\n dataTableCSSSelector = Opts.containerCssSelector + ' .dataTable'; //\n console.log(dataTableCSSSelector);\n var colNum = $(dataTableCSSSelector + ' thead th').length; //buttons insert position need\n APP.setOpts({\n datatableRowActionButtonClickCallBack: root.datatableRowActionButtonClick\n });\n var orderDirective = Opts.dataTable.orderDirective;\n /*\r\n if(typeof options['orderDirective']!='undefined'){\r\n orderDirective=options['orderDirective'];\r\n }\r\n */\n\n if (!root.dataTable) {\n console.log('XXXXXXXXXXXXXXXXXXXX Nincs Datatable');\n root.dataTable = $(dataTableCSSSelector).DataTable({\n language: {\n url: '//cdn.datatables.net/plug-ins/1.10.24/i18n/Hungarian.json'\n },\n //\"ajax\": \"{{asset('exapmle2.json')}}\",\n \"ajax\": {\n url: Opts.URL.getDataTableContent,\n data: function data(d) {\n console.log('---******----');\n console.log(APP.ProductAdmin.getAjaxDataJson());\n return $.extend({}, d, {\n ajaxData: APP.ProductAdmin.getAjaxDataJson\n });\n },\n type: ajaxMethod\n /*\r\n data: ajaxData,\r\n */\n },\n serverSide: true,\n \"columnDefs\": [{\n \"targets\": colNum - 1,\n orderable: false,\n \"render\": function render(data, type, row) {\n var buttons = APP.datatableAddRowEditButton(0, arguments);\n return buttons;\n }\n }, {\n \"targets\": 1,\n \"render\": function render(data, type, row) {\n return type === \"sort\" ? data.latinise() : data;\n }\n }\n //{ \"visible\": false, \"targets\": [ 0 ] }\n ],\n buttons: {\n buttons: ['excel', 'pdf', {\n extend: 'print',\n //text: 'Print current page',\n 'title': 'title custom text',\n 'messageTop': 'Message On Top',\n autoPrint: true\n }]\n },\n \"columns\": [{\n \"data\": \"id\"\n }, {\n \"data\": \"name\"\n }, {\n \"data\": \"hooreycaId\"\n }, {\n \"data\": \"productGroup\"\n }, {\n \"data\": \"supplierName\"\n }, {\n \"data\": \"price\"\n }, {\n \"data\": \"created_at\"\n }, null],\n \"order\": orderDirective,\n \"stateSave\": true,\n \"drawCallback\": function drawCallback(settings) {\n APP.datatableAddRowAction(dataTableCSSSelector);\n root.showResultContainer();\n console.log('drawCallback');\n }\n });\n } else {\n console.log('XXXXXXXXXXXXXXXXXXXX van Datatable');\n //root.dataTable.ajax.reload();\n root.dataTable.draw();\n }\n };\n this.processResponse = function () {};\n this.clickSaveButton = function (event) {\n debug('Save clicked');\n var CSSSelectorForm = Opts.containerCssSelector + ' .productForm';\n event.preventDefault();\n if ($(CSSSelectorForm)[0].checkValidity() === false) {\n console.log('validaton false');\n event.stopPropagation();\n return;\n } else {\n console.log('validaton ok');\n //do your ajax submition here\n }\n var ajaxData = root.formDataToDataObjectAPICall('.productForm');\n var ajaxUrl = Opts.URL.store;\n var ajaxMethod = \"POST\";\n if (root.Product.id) {\n ajaxUrl = Opts.URL.update.replace('%id%', root.Product.id);\n //ajaxMethod=\"PUT\";\n //ajaxData=new FormData($(CSSSelectorForm)[0]);\n ajaxData.append('_method', 'PUT');\n }\n debug(ajaxMethod);\n debug(ajaxData);\n $.ajax({\n url: ajaxUrl,\n data: ajaxData,\n type: ajaxMethod,\n contentType: false,\n processData: false,\n headers: {\n //'X-CSRF-TOKEN': $('input[name=\"_token\"]').val()\n 'X-CSRF-TOKEN': Opts.token\n },\n success: function success(data) {\n debug(data);\n if (data.success == true) {\n //Opts.onAfterInitViewDetails=root.autofillDetails;\n Opts.dataTable.orderDirective = [0, 'desc'];\n Toast.create(\"Sikeres rögzítés!\", ajaxData.get('name') + \" nevű termék elmentve\", TOAST_STATUS.SUCCESS, 5000);\n // APP.loadMainContent(Opts.URL.index+'?init=0',root.initViewList);\n }\n }\n });\n };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQcm9kdWN0IiwiX0RhdGFNb2RlbCIsIl9Qcm9kdWN0IiwiZGF0YSIsIm9wdGlvbnMiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjayIsIl9jYWxsU3VwZXIiLCJjb250YWN0IiwiY29uc29sZSIsImxvZyIsIl9pbmhlcml0cyIsIl9jcmVhdGVDbGFzcyIsIkRhdGFNb2RlbCIsIndpbmRvdyIsIlByb2R1Y3RBZG1pbiIsIlByb2R1Y3RJdGVtIiwiT3B0cyIsInRva2VuIiwiY29udGFpbmVyQ3NzU2VsZWN0b3IiLCJjb250YWluZXIiLCJyZXN1bHRDb250YWluZXJTZWxlY3RvciIsInJlc3VsdENvbnRhaW5lciIsInRlc3RNb2RlIiwiZmlsdGVycyIsIlVSTCIsImdldERhdGFUYWJsZUNvbnRlbnQiLCJpbmRleCIsInNob3ciLCJlZGl0IiwiY3JlYXRlIiwic3RvcmUiLCJ1cGRhdGUiLCJkZXN0cm95IiwiYXR0YWNoRmlsZSIsImRldGFjaEZpbGUiLCJkYXRhVGFibGUiLCJvcmRlckRpcmVjdGl2ZSIsIm9uQWZ0ZXJJbml0Vmlld0RldGFpbHMiLCJyb290IiwiY29udGFjdFBvcHVwV29ya2Zsb3ciLCJjb25zdHJ1Y3QiLCIkIiwiZXh0ZW5kIiwiQVBQIiwiZ2V0T3B0cyIsImRhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrIiwiZXZlbnQiLCJkZWJ1ZyIsIm5vZGUiLCJjdXJyZW50VGFyZ2V0Iiwicm93IiwiZGF0YVRhYmxlQ1NTU2VsZWN0b3IiLCJEYXRhVGFibGUiLCJwYXJlbnRzIiwicm93RGF0YSIsImFjdGlvbk5hbWUiLCJjYXBpdGFsaXplIiwiZGF0YXRhYmxlUm93QWN0aW9uRWRpdCIsImFqYXhVcmwiLCJyZXBsYWNlIiwiaWQiLCJsb2FkTWFpbkNvbnRlbnQiLCJpbml0Vmlld0RldGFpbHMiLCJpbml0Vmlld0xpc3RPbGQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJjb2xOdW0iLCJzZXRPcHRzIiwiZGF0YXRhYmxlUm93QWN0aW9uQnV0dG9uQ2xpY2tDYWxsQmFjayIsImxhbmd1YWdlIiwidXJsIiwic2VydmVyU2lkZSIsIm9yZGVyYWJsZSIsInJlbmRlciIsInR5cGUiLCJidXR0b25zIiwiZGF0YXRhYmxlQWRkUm93RWRpdEJ1dHRvbiIsImxhdGluaXNlIiwiYXV0b1ByaW50IiwiZHJhd0NhbGxiYWNrIiwic2V0dGluZ3MiLCJkYXRhdGFibGVBZGRSb3dBY3Rpb24iLCJpbml0Vmlld0xpc3QiLCJmaW5kIiwic2VsZWN0MiIsInBsYWNlaG9sZGVyIiwiYWxsb3dDbGVhciIsImFqYXgiLCJnZXRQcm9kdWN0U2VhcmNoIiwiZGF0YVR5cGUiLCJwYXJhbXMiLCJ0ZXJtIiwicGFnZSIsInN1cHBsaWVySWQiLCJ2YWwiLCJjYWNoZSIsImRhdGVwaWNrZXIiLCJkYXRlRm9ybWF0Iiwib25TZWxlY3QiLCJkYXRlVGV4dCIsIm9iaiIsImlucHV0IiwiY2xpY2siLCJidXR0b24iLCJvZmYiLCJvbiIsImxvYWRpbmdSZXN1bHRDb250YWluZXIiLCJyZXF1ZXN0UHJvZHVjdHMiLCJzZXRWaXNpYmxlRmlsdGVycyIsImhpZGVSZXN1bHRDb250YWluZXIiLCJoaWRlIiwic2hvd1Jlc3VsdENvbnRhaW5lciIsImluaXQiLCJDU1NTZWxlY3RvckZvcm0iLCJwaWN0dXJlIiwicGljVXJsIiwiUHVibGljVXJsIiwiZmlsZW5hbWUiLCJhdHRyIiwic3BlY2lmaWNhdGlvbiIsImRvY1VybCIsImFkZEF0dGFjaG1lbnQiLCJGb3JtU2F2ZUJ1dHRvbiIsImNsaWNrU2F2ZUJ1dHRvbiIsImF0dGFjaG1lbnREYXRhIiwicm93TnVtIiwiZGF0ZVN0ciIsIkRhdGUiLCJ1cGRhdGVkX2F0IiwidG9Mb2NhbGVTdHJpbmciLCJkYXRlIiwibGluayIsInRlbXBsYXRlIiwiaHRtbCIsIk11c3RhY2hlIiwiYXBwZW5kIiwiVG9hc3QiLCJlbmFibGVUaW1lcnMiLCJvcmlnaW5hbF9maWxlbmFtZSIsIlRPQVNUX1NUQVRVUyIsIlNVQ0NFU1MiLCJ0eXBlSW5kZXgiLCJ0eXBlTmFtZSIsImMiLCJmb3JtRGF0YVRvRGF0YU9iamVjdEFQSUNhbGwiLCJhamF4RGF0YSIsIkZvcm1EYXRhIiwiZWFjaCIsImdldEFsbCIsImtleSIsInZhbHVlIiwiZ2V0QWpheERhdGFKc29uIiwiX2l0ZXJhdG9yIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJlbnRyaWVzIiwiX3N0ZXAiLCJzIiwibiIsImRvbmUiLCJwYWlyIiwiZXJyIiwiZSIsImYiLCJvYmplY3QiLCJmb3JFYWNoIiwiUmVmbGVjdCIsImhhcyIsIkFycmF5IiwiaXNBcnJheSIsInB1c2giLCJhamF4RGF0YUpzb24iLCJKU09OIiwic3RyaW5naWZ5IiwiYWpheE1ldGhvZCIsImQiLCJkcmF3IiwicHJvY2Vzc1Jlc3BvbnNlIiwicHJldmVudERlZmF1bHQiLCJjaGVja1ZhbGlkaXR5Iiwic3RvcFByb3BhZ2F0aW9uIiwiY29udGVudFR5cGUiLCJwcm9jZXNzRGF0YSIsImhlYWRlcnMiLCJzdWNjZXNzIiwiZ2V0Il0sInNvdXJjZXMiOlsid2VicGFjazovLy8uL3Jlc291cmNlcy9qcy9hZG1pbi9wcm9kdWN0LmpzPzliNTIiXSwic291cmNlc0NvbnRlbnQiOlsiaWYodHlwZW9mIFByb2R1Y3Q9PT0ndW5kZWZpbmVkJyl7XHJcbiAgICBjbGFzcyBQcm9kdWN0IGV4dGVuZHMgRGF0YU1vZGVse1xyXG5cclxuICAgICAgICAvKlxyXG4gICAgICAgICAqIENvbnN0cnVjdG9yXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgY29uc3RydWN0b3IgKGRhdGEsb3B0aW9ucykge1xyXG4gICAgICAgICAgICBzdXBlcihkYXRhLG9wdGlvbnMpXHJcbiAgICAgICAgICAgIGlmKHR5cGVvZiB0aGlzLmNvbnRhY3QgPT09XCJ1bmRlZmluZWRcIil7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhY3Q9W107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ1Byb2R1Y3QgY29uc3RydWN0b3IgY2FsbGVkJyk7XHJcbiAgICAgICAgfTtcclxuICAgIH07XHJcbiAgICB3aW5kb3cuUHJvZHVjdD1Qcm9kdWN0O1xyXG59XHJcbndpbmRvdy5Qcm9kdWN0QWRtaW49ZnVuY3Rpb24gKG9wdGlvbnMsUHJvZHVjdEl0ZW0pIHtcclxuICAgIC8qXHJcbiAgICAgKiBWYXJpYWJsZXMgYWNjZXNzaWJsZVxyXG4gICAgICogaW4gdGhlIGNsYXNzXHJcbiAgICAgKi9cclxuICAgIGxldCBPcHRzID0ge1xyXG4gICAgICAgIHRva2VuOiBudWxsLFxyXG4gICAgICAgIGNvbnRhaW5lckNzc1NlbGVjdG9yOiAnLmNvbnRhaW5lclByb2R1Y3QnLFxyXG4gICAgICAgIGNvbnRhaW5lcjpudWxsLFxyXG4gICAgICAgIHJlc3VsdENvbnRhaW5lclNlbGVjdG9yOicuY29udGFpbmVyUHJvZHVjdCAuY29udGFpbmVyUmVzdWx0JyxcclxuICAgICAgICByZXN1bHRDb250YWluZXI6bnVsbCxcclxuXHJcbiAgICAgICAgdGVzdE1vZGU6IGZhbHNlLFxyXG4gICAgICAgIGZpbHRlcnM6e1xyXG4gICAgICAgICAgICBQcm9kdWN0Ont9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgVVJMOiB7XHJcbiAgICAgICAgICAgIGdldERhdGFUYWJsZUNvbnRlbnQ6ICcnLFxyXG4gICAgICAgICAgICBpbmRleDogJycsXHJcbiAgICAgICAgICAgIHNob3c6ICcnLFxyXG4gICAgICAgICAgICBlZGl0OiAnJyxcclxuICAgICAgICAgICAgY3JlYXRlOiAnJyxcclxuICAgICAgICAgICAgc3RvcmU6ICcnLFxyXG4gICAgICAgICAgICB1cGRhdGU6ICcnLFxyXG4gICAgICAgICAgICBkZXN0cm95OiAnJyxcclxuICAgICAgICAgICAgYXR0YWNoRmlsZTogJycsXHJcbiAgICAgICAgICAgIGRldGFjaEZpbGU6ICcnLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGF0YVRhYmxlOiB7XHJcbiAgICAgICAgICAgIG9yZGVyRGlyZWN0aXZlOiBbMSwgJ2FzYyddLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BZnRlckluaXRWaWV3RGV0YWlsczogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBsZXQgUHJvZHVjdCA9IHt9O1xyXG4gICAgbGV0IHJvb3QgPSB0aGlzO1xyXG4gICAgbGV0IGNvbnRhY3RQb3B1cFdvcmtmbG93ID0gJ25ldyc7XHJcbiAgICBsZXQgZGF0YVRhYmxlPW51bGw7XHJcbiAgICAvKlxyXG4gICAgICogQ29uc3RydWN0b3JcclxuICAgICAqL1xyXG4gICAgdGhpcy5jb25zdHJ1Y3QgPSBmdW5jdGlvbiAob3B0aW9ucywgUHJvZHVjdEl0ZW0pIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnUHJvZHVjdEFkbWluIGNvbnN0cnVjdG9yIGNhbGxlZCcpO1xyXG4gICAgICAgICQuZXh0ZW5kKE9wdHMsIG9wdGlvbnMpO1xyXG4gICAgICAgIGlmICghUHJvZHVjdEl0ZW0pIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ1Byb2R1Y3QgbGV0cmUga2VsbGV0IGhvem5pICcpO1xyXG4gICAgICAgICAgICBpZiAoIUFQUC5Qcm9kdWN0KSB7XHJcbiAgICAgICAgICAgICAgICBBUFAuUHJvZHVjdCA9IG5ldyB3aW5kb3cuUHJvZHVjdCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJvb3QuUHJvZHVjdCA9IEFQUC5Qcm9kdWN0O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aGlzLmdldE9wdHMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIE9wdHM7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrPWZ1bmN0aW9uIChldmVudCl7XHJcbiAgICAgICAgZGVidWcoJ2RhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrJyk7XHJcbiAgICAgICAgbGV0IG5vZGU9JChldmVudFswXS5jdXJyZW50VGFyZ2V0KTtcclxuICAgICAgICBsZXQgcm93PSQoZGF0YVRhYmxlQ1NTU2VsZWN0b3IpLkRhdGFUYWJsZSgpLnJvdyhub2RlLnBhcmVudHMoJ3RyJykpO1xyXG4gICAgICAgIGxldCByb3dEYXRhPXJvdy5kYXRhKCk7XHJcbiAgICAgICAgbGV0IGFjdGlvbk5hbWU9J2RhdGF0YWJsZVJvd0FjdGlvbicrbm9kZS5kYXRhKCdidXR0b250eXBlJykuY2FwaXRhbGl6ZSgpO1xyXG4gICAgICAgIGlmICh0eXBlb2Ygcm9vdFthY3Rpb25OYW1lXSA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByb290W2FjdGlvbk5hbWVdKHJvd0RhdGEsbm9kZSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhdGF0YWJsZVJvd0FjdGlvbkVkaXQ9ZnVuY3Rpb24gKHJvd0RhdGEsbm9kZSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdkYXRhdGFibGVSb3dBY3Rpb25FZGl0IENhbGxlZCcpO1xyXG4gICAgICAgIC8vT3B0cy5vbkFmdGVySW5pdFZpZXdEZXRhaWxzPXJvb3QuYXV0b2ZpbGxEZXRhaWxzO1xyXG4gICAgICAgIGxldCBhamF4VXJsPU9wdHMuVVJMLmVkaXQucmVwbGFjZSgnJWlkJScscm93RGF0YS5pZCk7XHJcbiAgICAgICAgQVBQLmxvYWRNYWluQ29udGVudChhamF4VXJsLHJvb3QuaW5pdFZpZXdEZXRhaWxzKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnZGF0YXRhYmxlUm93QWN0aW9uRWRpdCBFbmQnKTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5pdFZpZXdMaXN0T2xkID0gZnVuY3Rpb24gKG9wdGlvbnM9e30pIHtcclxuICAgICAgICBkZWJ1ZygnbGlzdHZpZXcgaW5pY2lhbGl6YXRpb24nKTtcclxuICAgICAgICBkYXRhVGFibGVDU1NTZWxlY3Rvcj1PcHRzLmNvbnRhaW5lckNzc1NlbGVjdG9yKycgLmRhdGFUYWJsZSc7IC8vXHJcblxyXG4gICAgICAgIGxldCBjb2xOdW09JChkYXRhVGFibGVDU1NTZWxlY3RvcisnIHRoZWFkIHRoJykubGVuZ3RoOyAvL2J1dHRvbnMgaW5zZXJ0IHBvc2l0aW9uIG5lZWRcclxuICAgICAgICBBUFAuc2V0T3B0cyh7XHJcbiAgICAgICAgICAgIGRhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrQ2FsbEJhY2s6cm9vdC5kYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGljayxcclxuICAgICAgICB9KVxyXG4gICAgICAgIGxldCBvcmRlckRpcmVjdGl2ZT1PcHRzLmRhdGFUYWJsZS5vcmRlckRpcmVjdGl2ZTtcclxuICAgICAgICBpZih0eXBlb2Ygb3B0aW9uc1snb3JkZXJEaXJlY3RpdmUnXSE9J3VuZGVmaW5lZCcpe1xyXG4gICAgICAgICAgICBvcmRlckRpcmVjdGl2ZT1vcHRpb25zWydvcmRlckRpcmVjdGl2ZSddO1xyXG4gICAgICAgIH1cclxuICAgICAgICAkKGRhdGFUYWJsZUNTU1NlbGVjdG9yKS5EYXRhVGFibGUoIHtcclxuICAgICAgICAgICAgbGFuZ3VhZ2U6IHtcclxuICAgICAgICAgICAgICAgIHVybDogJy8vY2RuLmRhdGF0YWJsZXMubmV0L3BsdWctaW5zLzEuMTAuMjQvaTE4bi9IdW5nYXJpYW4uanNvbidcclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIC8vXCJhamF4XCI6IFwie3thc3NldCgnZXhhcG1sZTIuanNvbicpfX1cIixcclxuICAgICAgICAgICAgXCJhamF4XCI6IE9wdHMuVVJMLmdldERhdGFUYWJsZUNvbnRlbnQsXHJcbiAgICAgICAgICAgIHNlcnZlclNpZGU6IHRydWUsXHJcbiAgICAgICAgICAgIFwiY29sdW1uRGVmc1wiOiBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgXCJ0YXJnZXRzXCI6IGNvbE51bS0xLFxyXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJyZW5kZXJcIjogZnVuY3Rpb24gKCBkYXRhLCB0eXBlLCByb3cgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9ucz1BUFAuZGF0YXRhYmxlQWRkUm93RWRpdEJ1dHRvbigwLGFyZ3VtZW50cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBidXR0b25zO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFwidGFyZ2V0c1wiOiAxLFxyXG4gICAgICAgICAgICAgICAgICAgIFwicmVuZGVyXCI6IGZ1bmN0aW9uICggZGF0YSwgdHlwZSwgcm93ICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZSA9PT0gXCJzb3J0XCIgPyBkYXRhLmxhdGluaXNlKCkgOiBkYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgLy97IFwidmlzaWJsZVwiOiBmYWxzZSwgIFwidGFyZ2V0c1wiOiBbIDAgXSB9XHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIGJ1dHRvbnM6e1xyXG4gICAgICAgICAgICAgICAgYnV0dG9uczogW1xyXG4gICAgICAgICAgICAgICAgICAgICdleGNlbCcsJ3BkZicsXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRlbmQ6ICdwcmludCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdGV4dDogJ1ByaW50IGN1cnJlbnQgcGFnZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICd0aXRsZSBjdXN0b20gdGV4dCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdtZXNzYWdlVG9wJzogJ01lc3NhZ2UgT24gVG9wJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0b1ByaW50OiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXCJjb2x1bW5zXCI6IFtcclxuICAgICAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwiaWRcIn0sXHJcbiAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcIm5hbWVcIiB9LFxyXG4gICAgICAgICAgICAgICAgeyBcImRhdGFcIjogXCJob29yZXljYUlkXCIgfSxcclxuICAgICAgICAgICAgICAgIHtcImRhdGFcIjogXCJwcm9kdWN0R3JvdXBcIn0sXHJcbiAgICAgICAgICAgICAgICB7XCJkYXRhXCI6IFwic3VwcGxpZXJOYW1lXCJ9LFxyXG4gICAgICAgICAgICAgICAgeyBcImRhdGFcIjogXCJwcmljZVwiIH0sXHJcbiAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcImNyZWF0ZWRfYXRcIiB9LFxyXG4gICAgICAgICAgICAgICAgbnVsbCxcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgXCJvcmRlclwiOiBvcmRlckRpcmVjdGl2ZSxcclxuICAgICAgICAgICAgXCJzdGF0ZVNhdmVcIjogdHJ1ZSxcclxuICAgICAgICAgICAgXCJkcmF3Q2FsbGJhY2tcIjogZnVuY3Rpb24oIHNldHRpbmdzICkge1xyXG4gICAgICAgICAgICAgICAgQVBQLmRhdGF0YWJsZUFkZFJvd0FjdGlvbihkYXRhVGFibGVDU1NTZWxlY3Rvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9ICk7XHJcbiAgICAgICAgZGVidWcoJ2xpc3R2aWV3IGVuZCcpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaW5pdFZpZXdMaXN0PWZ1bmN0aW9uIChvcHRpb25zPXt9KSB7XHJcbiAgICAgICAgZGVidWcoJ2luaXRWaWV3U2VhcmNoIGluaWNpYWxpemF0aW9uIDEnKTtcclxuXHJcbiAgICAgICAgcm9vdC5jb250YWluZXIuZmluZCgnc2VsZWN0LnN1cHBsaWVyU2VsZWN0LCBzZWxlY3QucHJvZml0Q2VudGVyU2VsZWN0LCBzZWxlY3QucHJvZHVjdEdyb3VwU2VsZWN0LCBzZWxlY3QucHJvZHVjZXJTZWxlY3QsIHNlbGVjdC5ob29yZXljYU5hbWVzU2VsZWN0LCBzZWxlY3Quc3BlY2lhbE9mZmVyU2VsZWN0Jykuc2VsZWN0MigpO1xyXG4gICAgICAgIHJvb3QuY29udGFpbmVyLmZpbmQoJ3NlbGVjdC5wcm9kdWN0U2VsZWN0Jykuc2VsZWN0Mih7XHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnLi4uJyxcclxuICAgICAgICAgICAgYWxsb3dDbGVhcjogdHJ1ZSxcclxuICAgICAgICAgICAgYWpheDoge1xyXG4gICAgICAgICAgICAgICAgdXJsOiBPcHRzLlVSTC5nZXRQcm9kdWN0U2VhcmNoLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgICAgIGRhdGE6IGZ1bmN0aW9uKHBhcmFtcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlcm06IHBhcmFtcy50ZXJtIHx8ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBwYXJhbXMucGFnZSB8fCAxLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdXBwbGllcklkOiByb290LmNvbnRhaW5lci5maW5kKCdzZWxlY3Quc3VwcGxpZXJTZWxlY3QnKS52YWwoKSxcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgY2FjaGU6IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJvb3QuY29udGFpbmVyLmZpbmQoJy5kYXRlUGlja2VyRnJvbSwgLmRhdGVQaWNrZXJUbycpLmRhdGVwaWNrZXIoe1xyXG4gICAgICAgICAgICBkYXRlRm9ybWF0OiAneXktbW0tZGQnLFxyXG5cclxuICAgICAgICAgICAgb25TZWxlY3Q6IGZ1bmN0aW9uIChkYXRlVGV4dCxvYmopIHtcclxuICAgICAgICAgICAgICAgIGRlYnVnKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgZGVidWcob2JqLmlucHV0KTtcclxuICAgICAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290LmNvbnRhaW5lci5maW5kKCcuc2VsZWN0ZWREYXRlVGV4dCcpLnRleHQoZGF0ZVRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmRlbGl2ZXJ5RGF0ZVBsYWNlJykudGV4dChkYXRlVGV4dC5yZXBsYWNlQWxsKCctJywgJy4nKSArICcuJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290LmNvbnRhaW5lci5maW5kKCcgaW5wdXRbbmFtZT1cImRlbGl2ZXJ5RGF0ZVwiXScpLnZhbChkYXRlVGV4dCk7XHJcbiAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgLy9yb290LmNoYW5nZVByaWNlTGlzdFByb2ZpdENlbnRlclBhcmFtZXRlcihudWxsLCQob2JqLmlucHV0KSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcm9vdC5jb250YWluZXIuZmluZCgnLmRhdGVQaWNrZXJDbGljaycpLmNsaWNrKGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgIGRlYnVnKCQodGhpcykuZGF0YSgnYWN0aW9uJykpO1xyXG4gICAgICAgICAgICByb290LmNvbnRhaW5lci5maW5kKCdpbnB1dFtuYW1lPVwiJyskKHRoaXMpLmRhdGEoJ2FjdGlvbicpKydcIl0nKS5kYXRlcGlja2VyKCdzaG93Jyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbGV0IGJ1dHRvbj1yb290LmNvbnRhaW5lci5maW5kKCcuRm9ybVNlbmRCdXR0b24nKTtcclxuICAgICAgICBidXR0b24ub2ZmKCdjbGljaycpO1xyXG4gICAgICAgIGJ1dHRvbi5vbignY2xpY2snLGZ1bmN0aW9uICgpe1xyXG4gICAgICAgICAgICBkZWJ1ZyAoJ0Zvcm1TZW5kQnV0dG9uIGNsaWNrJyk7XHJcbiAgICAgICAgICAgIHJvb3QubG9hZGluZ1Jlc3VsdENvbnRhaW5lcigpO1xyXG4gICAgICAgICAgICByb290LnJlcXVlc3RQcm9kdWN0cygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJvb3Quc2V0VmlzaWJsZUZpbHRlcnMoJ1Byb2R1Y3QnKTtcclxuXHJcbiAgICAgICAgZGVidWcoJ2luaXRWaWV3U2VhcmNoIGVuZCcpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLmxvYWRpbmdSZXN1bHRDb250YWluZXI9ZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgZGVidWcoJ2NsZWFyUmVzdWx0Q29udGFpbmVyJyk7XHJcbiAgICAgICAgZGVidWcocm9vdC5yZXN1bHRDb250YWluZXIpO1xyXG4gICAgICAgIHJvb3QuaGlkZVJlc3VsdENvbnRhaW5lcigpO1xyXG4gICAgICAgIHJvb3QuY29udGFpbmVyLmZpbmQoJy5jb250YWluZXJMb2FkaW5nJykuc2hvdygpO1xyXG4gICAgICAgIC8qXHJcbiAgICAgICAgbGV0IHRlbXBsYXRlPXJvb3QuY29udGFpbmVyLmZpbmQoJ3RlbXBsYXRlW2RhdGEtbmFtZT1cImxvYWRpbmdcIl0nKS5odG1sKClcclxuICAgICAgICByb290LnJlc3VsdENvbnRhaW5lci5odG1sKHRlbXBsYXRlKTtcclxuXHJcbiAgICAgICAgICovXHJcbiAgICB9XHJcbiAgICB0aGlzLmhpZGVSZXN1bHRDb250YWluZXI9ZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgZGVidWcoJ2hpZGUgY29udGFpbmVyUmVzdWx0Jyk7XHJcbiAgICAgICAgZGVidWcocm9vdC5yZXN1bHRDb250YWluZXIpO1xyXG4gICAgICAgIHJvb3QucmVzdWx0Q29udGFpbmVyLmhpZGUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2hvd1Jlc3VsdENvbnRhaW5lcj1mdW5jdGlvbiAoKXtcclxuICAgICAgICByb290LmNvbnRhaW5lci5maW5kKCcuY29udGFpbmVyTG9hZGluZycpLmhpZGUoKTtcclxuICAgICAgICByb290LnJlc3VsdENvbnRhaW5lci5zaG93KCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbml0PWZ1bmN0aW9uIChvcHRpb25zLFByb2R1Y3RJdGVtKXtcclxuICAgICAgICBjb25zb2xlLmxvZygnUHJvZHVjdEFkbWluIGluaXQnKTtcclxuICAgICAgICAkLmV4dGVuZChPcHRzLCBvcHRpb25zKTtcclxuXHJcbiAgICAgICAgaWYoT3B0cy50ZXN0TW9kZSl7XHJcbiAgICAgICAgICAgIHJldHVybiByb290LnRlc3RNb2RlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKFByb2R1Y3RJdGVtKXtcclxuICAgICAgICAgICAgcm9vdC5Qcm9kdWN0PVByb2R1Y3RJdGVtXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvb3QuZGF0YVRhYmxlPW51bGw7XHJcbiAgICAgICAgcm9vdC5jb250YWluZXI9JChPcHRzLmNvbnRhaW5lckNzc1NlbGVjdG9yKTtcclxuICAgICAgICByb290LnJlc3VsdENvbnRhaW5lcj0kKE9wdHMucmVzdWx0Q29udGFpbmVyU2VsZWN0b3IpO1xyXG4gICAgICAgIHJvb3QuaW5pdFZpZXdMaXN0KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmluaXRWaWV3RGV0YWlscz1mdW5jdGlvbiAob3B0aW9ucyxQcm9kdWN0SXRlbSl7XHJcbiAgICAgICAgZGVidWcoJyoqY2FsbCBpbml0Vmlld0RldGFpbHMgJyk7XHJcbiAgICAgICAgbGV0IENTU1NlbGVjdG9yRm9ybT1PcHRzLmNvbnRhaW5lckNzc1NlbGVjdG9yKycgLnByb2R1Y3RGb3JtJztcclxuICAgICAgICBpZihyb290LlByb2R1Y3QucGljdHVyZSl7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCcqKioqKi8vLy8vLy8vLy8vLy8vLy8vLyoqKioqKioqKioqKioqKionKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2cocm9vdC5Qcm9kdWN0LnBpY3R1cmUpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhDU1NTZWxlY3RvckZvcm0pO1xyXG4gICAgICAgICAgICBsZXQgcGljVXJsPXJvb3QuUHJvZHVjdC5waWN0dXJlLlB1YmxpY1VybCsnLycrcm9vdC5Qcm9kdWN0LnBpY3R1cmUuZmlsZW5hbWU7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHBpY1VybCk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCQoQ1NTU2VsZWN0b3JGb3JtKycgaW1nLmltYWdlUHJvZHVjdCcpKTtcclxuICAgICAgICAgICAgJChDU1NTZWxlY3RvckZvcm0rJyBpbWcuaW1hZ2VQcm9kdWN0JykuYXR0cignc3JjJyxwaWNVcmwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihyb290LlByb2R1Y3Quc3BlY2lmaWNhdGlvbil7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCcqKioqKi8vLy8vLy8vLy8vLy8vLy8vLyoqKioqKioqKioqKioqKionKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2cocm9vdC5Qcm9kdWN0LnNwZWNpZmljYXRpb24pO1xyXG4gICAgICAgICAgICBsZXQgZG9jVXJsPXJvb3QuUHJvZHVjdC5zcGVjaWZpY2F0aW9uLlB1YmxpY1VybCsnLycrcm9vdC5Qcm9kdWN0LnNwZWNpZmljYXRpb24uZmlsZW5hbWU7XHJcbiAgICAgICAgICAgIHJvb3QuYWRkQXR0YWNobWVudChyb290LlByb2R1Y3Quc3BlY2lmaWNhdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBGb3JtU2F2ZUJ1dHRvbj0kKENTU1NlbGVjdG9yRm9ybSsnIGJ1dHRvbi5Gb3JtU2F2ZUJ1dHRvbicpO1xyXG4gICAgICAgIEZvcm1TYXZlQnV0dG9uLm9mZignY2xpY2snKTtcclxuICAgICAgICBGb3JtU2F2ZUJ1dHRvbi5vbignY2xpY2snLHJvb3QuY2xpY2tTYXZlQnV0dG9uKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hZGRBdHRhY2htZW50PWZ1bmN0aW9uIChhdHRhY2htZW50RGF0YSl7XHJcbiAgICAgICAgY29uc29sZS5sb2coYXR0YWNobWVudERhdGEpO1xyXG4gICAgICAgIGxldCBDU1NTZWxlY3RvckZvcm09T3B0cy5jb250YWluZXJDc3NTZWxlY3RvcisnIC5wcm9kdWN0Rm9ybSc7XHJcbiAgICAgICAgLy9yb290LlN1cHBsaWVyLmF0dGFjaG1lbnQucHVzaChhdHRhY2htZW50RGF0YSk7XHJcbiAgICAgICAgLy9hdHRhY2htZW50RGF0YS5yb3dOdW09cm9vdC5TdXBwbGllci5hdHRhY2htZW50Lmxlbmd0aDtcclxuICAgICAgICBhdHRhY2htZW50RGF0YS5yb3dOdW09MTtcclxuICAgICAgICBsZXQgZGF0ZVN0cj1uZXcgRGF0ZShhdHRhY2htZW50RGF0YS51cGRhdGVkX2F0KTtcclxuICAgICAgICBkYXRlU3RyPWRhdGVTdHIudG9Mb2NhbGVTdHJpbmcoJ2h1LUhVJywge30pO1xyXG4gICAgICAgIGF0dGFjaG1lbnREYXRhLmRhdGU9ZGF0ZVN0cjtcclxuICAgICAgICBhdHRhY2htZW50RGF0YS5saW5rPWF0dGFjaG1lbnREYXRhLlB1YmxpY1VybCsnLycrYXR0YWNobWVudERhdGEuZmlsZW5hbWU7XHJcbiAgICAgICAgbGV0IHRlbXBsYXRlPSQoJ3RlbXBsYXRlW2RhdGEtbmFtZT1cInByb2R1Y3RBdHRhY2htZW50VGFibGVSb3dcIl0nKS5odG1sKClcclxuICAgICAgICBsZXQgcmVuZGVyPU11c3RhY2hlLnJlbmRlcih0ZW1wbGF0ZSxhdHRhY2htZW50RGF0YSk7XHJcbiAgICAgICAgJChDU1NTZWxlY3RvckZvcm0rJyAuYXR0YWNobWVudFRhYmxlIHRib2R5JykuYXBwZW5kKHJlbmRlcik7XHJcbiAgICAgICAgLy9yb290LmJpbmRDb250YWN0Q2xpY2tBY3Rpb24oKTtcclxuICAgICAgICBUb2FzdC5lbmFibGVUaW1lcnMoZmFsc2UpO1xyXG4gICAgICAgIFRvYXN0LmNyZWF0ZShcIkbDoWpsIGhvenrDoWFkdmEhXCIsIGF0dGFjaG1lbnREYXRhLm9yaWdpbmFsX2ZpbGVuYW1lK1wiIGbDoWpsIGhvenrDoWFkdmFcIiwgVE9BU1RfU1RBVFVTLlNVQ0NFU1MsNTAwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXRWaXNpYmxlRmlsdGVycz1mdW5jdGlvbiAodHlwZSl7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ3NldFZpc2libGVGaWx0ZXJzJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coT3B0cy5maWx0ZXJzW3R5cGVdKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhyb290LmNvbnRhaW5lcik7XHJcbiAgICAgICAgJChyb290LmNvbnRhaW5lcikuZmluZCgnZGl2W2NsYXNzKj1cImZpbHRlclwiXScpLmhpZGUoKVxyXG4gICAgICAgIGZvciAoY29uc3QgdHlwZUluZGV4IGluIE9wdHMuZmlsdGVyc1t0eXBlXSkge1xyXG4gICAgICAgICAgICBjb25zdCB0eXBlTmFtZT1PcHRzLmZpbHRlcnNbdHlwZV1bdHlwZUluZGV4XTtcclxuICAgICAgICAgICAgZGVidWcodHlwZU5hbWUpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygkKHJvb3QuY29udGFpbmVyKS5maW5kKCcuZmlsdGVyXycrdHlwZU5hbWUpKTtcclxuICAgICAgICAgICAgJChyb290LmNvbnRhaW5lcikuZmluZCgnLmZpbHRlcl8nK3R5cGVOYW1lKS5zaG93KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jPWZ1bmN0aW9uIChDU1NTZWxlY3RvckZvcm0pe1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdjIGNhbGxlZCcpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKENTU1NlbGVjdG9yRm9ybSk7XHJcbiAgICAgICAgY29uc29sZS5sb2cocm9vdC5jb250YWluZXIpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHJvb3QuY29udGFpbmVyLmZpbmQoJ2Zvcm0nKSk7XHJcbiAgICAgICAgY29uc29sZS5sb2cocm9vdC5jb250YWluZXIuZmluZChDU1NTZWxlY3RvckZvcm0pKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5mb3JtRGF0YVRvRGF0YU9iamVjdEFQSUNhbGwgPSBmdW5jdGlvbiAoQ1NTU2VsZWN0b3JGb3JtKSB7XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKENTU1NlbGVjdG9yRm9ybSk7XHJcbiAgICAgICAgY29uc29sZS5sb2cocm9vdC5jb250YWluZXIpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHJvb3QuY29udGFpbmVyLmZpbmQoQ1NTU2VsZWN0b3JGb3JtKSk7XHJcbiAgICAgICAgY29uc29sZS5sb2cocm9vdC5jb250YWluZXIuZmluZCgnZm9ybScpKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhyb290LmNvbnRhaW5lci5maW5kKCdmb3JtJytDU1NTZWxlY3RvckZvcm0pWzBdKTtcclxuICAgICAgICAvL3JldHVybjtcclxuICAgICAgICBsZXQgYWpheERhdGEgPSBuZXcgRm9ybURhdGEocm9vdC5jb250YWluZXIuZmluZCgnZm9ybScrQ1NTU2VsZWN0b3JGb3JtKVswXSk7XHJcbiAgICAgICAgJC5lYWNoKGFqYXhEYXRhLmdldEFsbCgnc3VwcGxpZXInKSwgZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcclxuICAgICAgICAgICAgYWpheERhdGEuYXBwZW5kKCdzdXBwbGllcnNbXScsIHZhbHVlKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIGFqYXhEYXRhLmRlbGV0ZSgnc3VwcGxpZXInKTtcclxuICAgICAgICAkLmVhY2goYWpheERhdGEuZ2V0QWxsKCdwcm9maXRDZW50ZXInKSwgZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcclxuICAgICAgICAgICAgYWpheERhdGEuYXBwZW5kKCdwcm9maXRDZW50ZXJzW10nLCB2YWx1ZSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBhamF4RGF0YS5kZWxldGUoJ3Byb2ZpdENlbnRlcicpO1xyXG4gICAgICAgICQuZWFjaChhamF4RGF0YS5nZXRBbGwoJ3Byb2R1Y3RHcm91cCcpLCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xyXG4gICAgICAgICAgICBhamF4RGF0YS5hcHBlbmQoJ3Byb2R1Y3RHcm91cHNbXScsIHZhbHVlKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIGFqYXhEYXRhLmRlbGV0ZSgncHJvZHVjdEdyb3VwJyk7XHJcbiAgICAgICAgJC5lYWNoKGFqYXhEYXRhLmdldEFsbCgncHJvZHVjdCcpLCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xyXG4gICAgICAgICAgICBhamF4RGF0YS5hcHBlbmQoJ3Byb2R1Y3RzW10nLCB2YWx1ZSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBhamF4RGF0YS5kZWxldGUoJ3Byb2R1Y3QnKTtcclxuICAgICAgICAkLmVhY2goYWpheERhdGEuZ2V0QWxsKCdwcm9kdWNlcicpLCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xyXG4gICAgICAgICAgICBhamF4RGF0YS5hcHBlbmQoJ3Byb2R1Y2Vyc1tdJywgdmFsdWUpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgYWpheERhdGEuZGVsZXRlKCdwcm9kdWNlcicpO1xyXG4gICAgICAgICQuZWFjaChhamF4RGF0YS5nZXRBbGwoJ2hvb3JleWNhTmFtZScpLCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xyXG4gICAgICAgICAgICBhamF4RGF0YS5hcHBlbmQoJ2hvb3JleWNhTmFtZXNbXScsIHZhbHVlKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIGFqYXhEYXRhLmRlbGV0ZSgnaG9vcmV5Y2FOYW1lJyk7XHJcblxyXG4gICAgICAgIC8vYWpheERhdGEuYXBwZW5kKCdfdG9rZW4nLCByb290LmNvbnRhaW5lci5maW5kKCdpbnB1dFtuYW1lPV90b2tlbl0nKS52YWwoKSk7XHJcblxyXG4gICAgICAgIC8qXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtICsgJyBpbnB1dFtkYXRhLWlucHV0bWFza10nKS5lYWNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmRleEtleSA9ICQodGhpcykuYXR0cignbmFtZScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFqYXhEYXRhLmdldChpbmRleEtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhamF4RGF0YS5zZXQoaW5kZXhLZXksIGFqYXhEYXRhLmdldChpbmRleEtleSkucmVwbGFjZSgvW18gXSskL2csIFwiXCIpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgKi9cclxuICAgICAgICByZXR1cm4gYWpheERhdGE7XHJcblxyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRBamF4RGF0YUpzb249ZnVuY3Rpb24oKXtcclxuXHJcbiAgICAgICAgbGV0IGFqYXhEYXRhPXJvb3QuZm9ybURhdGFUb0RhdGFPYmplY3RBUElDYWxsKCcuUHJvZHVjdExpc3RGb3JtJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJz09PT09PT09PT09PT09PT09PT09PT0nKTtcclxuICAgICAgICBmb3IgKGxldCBwYWlyIG9mIGFqYXhEYXRhLmVudHJpZXMoKSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhwYWlyWzBdKyAnLCAnICsgcGFpclsxXSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgb2JqZWN0ID0ge307XHJcbiAgICAgICAgYWpheERhdGEuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xyXG4gICAgICAgICAgICAvLyBSZWZsZWN0LmhhcyBpbiBmYXZvciBvZjogb2JqZWN0Lmhhc093blByb3BlcnR5KGtleSlcclxuICAgICAgICAgICAgaWYoIVJlZmxlY3QuaGFzKG9iamVjdCwga2V5KSl7XHJcbiAgICAgICAgICAgICAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKCFBcnJheS5pc0FycmF5KG9iamVjdFtrZXldKSl7XHJcbiAgICAgICAgICAgICAgICBvYmplY3Rba2V5XSA9IFtvYmplY3Rba2V5XV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb2JqZWN0W2tleV0ucHVzaCh2YWx1ZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbGV0IGFqYXhEYXRhSnNvbiA9IEpTT04uc3RyaW5naWZ5KG9iamVjdCk7XHJcbiAgICAgICAgcmV0dXJuIGFqYXhEYXRhSnNvbjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlcXVlc3RQcm9kdWN0cz1mdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgbGV0IGFqYXhVcmw9T3B0cy5VUkwuZ2V0RGF0YVRhYmxlQ29udGVudDtcclxuICAgICAgICBsZXQgYWpheE1ldGhvZD0nR0VUJztcclxuICAgICAgICAvL3Rva2VuIGZvcm1kYXRhYmEhXHJcbiAgICAgICAgZGVidWcoYWpheFVybCk7XHJcblxyXG4gICAgICAgIGFqYXhEYXRhSnNvbj1yb290LmdldEFqYXhEYXRhSnNvbigpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGFqYXhEYXRhSnNvbik7XHJcblxyXG4gICAgICAgIGRhdGFUYWJsZUNTU1NlbGVjdG9yPU9wdHMuY29udGFpbmVyQ3NzU2VsZWN0b3IrJyAuZGF0YVRhYmxlJzsgLy9cclxuICAgICAgICBjb25zb2xlLmxvZyhkYXRhVGFibGVDU1NTZWxlY3RvciApO1xyXG5cclxuICAgICAgICBsZXQgY29sTnVtPSQoZGF0YVRhYmxlQ1NTU2VsZWN0b3IrJyB0aGVhZCB0aCcpLmxlbmd0aDsgLy9idXR0b25zIGluc2VydCBwb3NpdGlvbiBuZWVkXHJcbiAgICAgICAgQVBQLnNldE9wdHMoe1xyXG4gICAgICAgICAgICBkYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGlja0NhbGxCYWNrOnJvb3QuZGF0YXRhYmxlUm93QWN0aW9uQnV0dG9uQ2xpY2ssXHJcbiAgICAgICAgfSlcclxuICAgICAgICBsZXQgb3JkZXJEaXJlY3RpdmU9T3B0cy5kYXRhVGFibGUub3JkZXJEaXJlY3RpdmU7XHJcbiAgICAgICAgLypcclxuICAgICAgICBpZih0eXBlb2Ygb3B0aW9uc1snb3JkZXJEaXJlY3RpdmUnXSE9J3VuZGVmaW5lZCcpe1xyXG4gICAgICAgICAgICBvcmRlckRpcmVjdGl2ZT1vcHRpb25zWydvcmRlckRpcmVjdGl2ZSddO1xyXG4gICAgICAgIH1cclxuICAgICAgICAqL1xyXG5cclxuICAgICAgICBpZighcm9vdC5kYXRhVGFibGUpe1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnWFhYWFhYWFhYWFhYWFhYWFhYWFggTmluY3MgRGF0YXRhYmxlJyk7XHJcbiAgICAgICAgICAgIHJvb3QuZGF0YVRhYmxlPVxyXG4gICAgICAgICAgICAgICAgJChkYXRhVGFibGVDU1NTZWxlY3RvcikuRGF0YVRhYmxlKCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2U6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnLy9jZG4uZGF0YXRhYmxlcy5uZXQvcGx1Zy1pbnMvMS4xMC4yNC9pMThuL0h1bmdhcmlhbi5qc29uJ1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vXCJhamF4XCI6IFwie3thc3NldCgnZXhhcG1sZTIuanNvbicpfX1cIixcclxuICAgICAgICAgICAgICAgICAgICBcImFqYXhcIjp7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogT3B0cy5VUkwuZ2V0RGF0YVRhYmxlQ29udGVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogZnVuY3Rpb24gKGQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCctLS0qKioqKiotLS0tJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhBUFAuUHJvZHVjdEFkbWluLmdldEFqYXhEYXRhSnNvbigpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkLmV4dGVuZCh7fSwgZCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFqYXhEYXRhOiBBUFAuUHJvZHVjdEFkbWluLmdldEFqYXhEYXRhSnNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGFqYXhNZXRob2RcclxuICAgICAgICAgICAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBhamF4RGF0YSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgICAgICB9ICxcclxuICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJTaWRlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY29sdW1uRGVmc1wiOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidGFyZ2V0c1wiOiBjb2xOdW0tMSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInJlbmRlclwiOiBmdW5jdGlvbiAoIGRhdGEsIHR5cGUsIHJvdyApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9ucz1BUFAuZGF0YXRhYmxlQWRkUm93RWRpdEJ1dHRvbigwLGFyZ3VtZW50cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1dHRvbnM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRhcmdldHNcIjogMSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicmVuZGVyXCI6IGZ1bmN0aW9uICggZGF0YSwgdHlwZSwgcm93ICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlID09PSBcInNvcnRcIiA/IGRhdGEubGF0aW5pc2UoKSA6IGRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3sgXCJ2aXNpYmxlXCI6IGZhbHNlLCAgXCJ0YXJnZXRzXCI6IFsgMCBdIH1cclxuICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhjZWwnLCdwZGYnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZDogJ3ByaW50JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3RleHQ6ICdQcmludCBjdXJyZW50IHBhZ2UnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICd0aXRsZSBjdXN0b20gdGV4dCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21lc3NhZ2VUb3AnOiAnTWVzc2FnZSBPbiBUb3AnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9QcmludDogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjb2x1bW5zXCI6IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBcImRhdGFcIjogXCJpZFwifSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBcImRhdGFcIjogXCJuYW1lXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBcImRhdGFcIjogXCJob29yZXljYUlkXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge1wiZGF0YVwiOiBcInByb2R1Y3RHcm91cFwifSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge1wiZGF0YVwiOiBcInN1cHBsaWVyTmFtZVwifSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBcImRhdGFcIjogXCJwcmljZVwiIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwiY3JlYXRlZF9hdFwiIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgICAgICBcIm9yZGVyXCI6IG9yZGVyRGlyZWN0aXZlLFxyXG4gICAgICAgICAgICAgICAgICAgIFwic3RhdGVTYXZlXCI6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkcmF3Q2FsbGJhY2tcIjogZnVuY3Rpb24oIHNldHRpbmdzICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBBUFAuZGF0YXRhYmxlQWRkUm93QWN0aW9uKGRhdGFUYWJsZUNTU1NlbGVjdG9yKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC5zaG93UmVzdWx0Q29udGFpbmVyKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdkcmF3Q2FsbGJhY2snKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9ICk7XHJcblxyXG5cclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ1hYWFhYWFhYWFhYWFhYWFhYWFhYIHZhbiBEYXRhdGFibGUnKTtcclxuICAgICAgICAgICAgLy9yb290LmRhdGFUYWJsZS5hamF4LnJlbG9hZCgpO1xyXG4gICAgICAgICAgICByb290LmRhdGFUYWJsZS5kcmF3KCk7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLnByb2Nlc3NSZXNwb25zZT1mdW5jdGlvbiAoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2xpY2tTYXZlQnV0dG9uPWZ1bmN0aW9uIChldmVudCkge1xyXG4gICAgICAgIGRlYnVnKCdTYXZlIGNsaWNrZWQnKTtcclxuXHJcbiAgICAgICAgbGV0IENTU1NlbGVjdG9yRm9ybT1PcHRzLmNvbnRhaW5lckNzc1NlbGVjdG9yKycgLnByb2R1Y3RGb3JtJztcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGlmICgkKENTU1NlbGVjdG9yRm9ybSlbMF0uY2hlY2tWYWxpZGl0eSgpID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygndmFsaWRhdG9uIGZhbHNlJyk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ3ZhbGlkYXRvbiBvaycpO1xyXG4gICAgICAgICAgICAvL2RvIHlvdXIgYWpheCBzdWJtaXRpb24gaGVyZVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGFqYXhEYXRhPXJvb3QuZm9ybURhdGFUb0RhdGFPYmplY3RBUElDYWxsKCcucHJvZHVjdEZvcm0nKTtcclxuICAgICAgICBsZXQgYWpheFVybD1PcHRzLlVSTC5zdG9yZTtcclxuICAgICAgICBsZXQgYWpheE1ldGhvZD1cIlBPU1RcIjtcclxuICAgICAgICBpZihyb290LlByb2R1Y3QuaWQpe1xyXG4gICAgICAgICAgICBhamF4VXJsPU9wdHMuVVJMLnVwZGF0ZS5yZXBsYWNlKCclaWQlJyxyb290LlByb2R1Y3QuaWQpO1xyXG4gICAgICAgICAgICAvL2FqYXhNZXRob2Q9XCJQVVRcIjtcclxuICAgICAgICAgICAgLy9hamF4RGF0YT1uZXcgRm9ybURhdGEoJChDU1NTZWxlY3RvckZvcm0pWzBdKTtcclxuICAgICAgICAgICAgYWpheERhdGEuYXBwZW5kKCdfbWV0aG9kJywnUFVUJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkZWJ1ZyhhamF4TWV0aG9kKTtcclxuICAgICAgICBkZWJ1ZyhhamF4RGF0YSk7XHJcblxyXG4gICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgIHVybDphamF4VXJsLFxyXG4gICAgICAgICAgICBkYXRhOmFqYXhEYXRhLFxyXG4gICAgICAgICAgICB0eXBlOmFqYXhNZXRob2QsXHJcbiAgICAgICAgICAgIGNvbnRlbnRUeXBlOmZhbHNlLFxyXG4gICAgICAgICAgICBwcm9jZXNzRGF0YTogZmFsc2UsXHJcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgIC8vJ1gtQ1NSRi1UT0tFTic6ICQoJ2lucHV0W25hbWU9XCJfdG9rZW5cIl0nKS52YWwoKVxyXG4gICAgICAgICAgICAgICAgJ1gtQ1NSRi1UT0tFTic6IE9wdHMudG9rZW5cclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6ZnVuY3Rpb24gKGRhdGEpe1xyXG4gICAgICAgICAgICAgICAgZGVidWcoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICBpZihkYXRhLnN1Y2Nlc3M9PXRydWUpe1xyXG4gICAgICAgICAgICAgICAgICAgIC8vT3B0cy5vbkFmdGVySW5pdFZpZXdEZXRhaWxzPXJvb3QuYXV0b2ZpbGxEZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgICAgIE9wdHMuZGF0YVRhYmxlLm9yZGVyRGlyZWN0aXZlPVswLCAnZGVzYyddO1xyXG4gICAgICAgICAgICAgICAgICAgIFRvYXN0LmNyZWF0ZShcIlNpa2VyZXMgcsO2Z3rDrXTDqXMhXCIsIGFqYXhEYXRhLmdldCgnbmFtZScpK1wiIG5ldsWxIHRlcm3DqWsgZWxtZW50dmVcIiwgVE9BU1RfU1RBVFVTLlNVQ0NFU1MsNTAwMCk7XHJcbi8vICAgICAgICAgICAgICAgICAgICAgICAgQVBQLmxvYWRNYWluQ29udGVudChPcHRzLlVSTC5pbmRleCsnP2luaXQ9MCcscm9vdC5pbml0Vmlld0xpc3QpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG59XHJcblxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFHLE9BQU9BLE9BQU8sS0FBRyxXQUFXLEVBQUM7RUFBQSxJQUN0QkEsUUFBTywwQkFBQUMsVUFBQTtJQUVUO0FBQ1I7QUFDQTtJQUNRLFNBQUFDLFNBQWFDLElBQUksRUFBQ0MsT0FBTyxFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUFBQyxlQUFBLE9BQUFKLFFBQUE7TUFDdkJHLEtBQUEsR0FBQUUsVUFBQSxPQUFBTCxRQUFBLEdBQU1DLElBQUksRUFBQ0MsT0FBTztNQUNsQixJQUFHLE9BQU9DLEtBQUEsQ0FBS0csT0FBTyxLQUFJLFdBQVcsRUFBQztRQUNsQ0gsS0FBQSxDQUFLRyxPQUFPLEdBQUMsRUFBRTtNQUNuQjtNQUNBQyxPQUFP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\n//# sourceURL=webpack-internal:///./resources/js/admin/product.js\n\n}");
|
|
|
|
/***/ },
|
|
|
|
/***/ "./resources/js/admin/profitCenter.js"
|
|
/*!********************************************!*\
|
|
!*** ./resources/js/admin/profitCenter.js ***!
|
|
\********************************************/
|
|
() {
|
|
|
|
eval("{function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nif (typeof DataModelProfitCenter === 'undefined') {\n var _DataModelProfitCenter = /*#__PURE__*/function (_DataModel) {\n /*\r\n * Constructor\r\n */\n function _DataModelProfitCenter(data, options) {\n var _this;\n _classCallCheck(this, _DataModelProfitCenter);\n _this = _callSuper(this, _DataModelProfitCenter, [data, options]);\n if (typeof _this.contact === \"undefined\") {\n _this.contact = [];\n }\n if (typeof _this.address === \"undefined\") {\n _this.address = [];\n }\n console.log(_this.constructor.name + ' constructor called');\n return _this;\n }\n _inherits(_DataModelProfitCenter, _DataModel);\n return _createClass(_DataModelProfitCenter);\n }(DataModel);\n ;\n window.DataModelProfitCenter = _DataModelProfitCenter;\n}\nwindow.ProfitCenterAdmin = function (options, ProfitCenterItem) {\n /*\r\n * Variables accessible\r\n * in the class\r\n */\n var Opts = {\n token: null,\n containerCssSelector: '.containerProfitCenter',\n testMode: false,\n URL: {\n getDataTableContent: '',\n index: '',\n show: '',\n edit: '',\n create: '',\n store: '',\n update: '',\n destroy: ''\n },\n dataTable: {\n orderDirective: [1, 'asc']\n },\n onAfterInitViewDetails: function onAfterInitViewDetails() {}\n };\n var ProfitCenter = {};\n var root = this;\n var contactPopupWorkflow = 'new';\n var addressPopupWorkflow = 'new';\n var CSSSelectorForm = '';\n var dataTableCSSSelector = '';\n /*\r\n * Constructor\r\n */\n this.construct = function (options, ProfitCenterItem) {\n console.log('ProfitCenterAdmin constructor called');\n $.extend(Opts, options);\n if (!ProfitCenterItem) {\n console.log('ProfitCentert letre kellet hozni ');\n if (!APP.ProfitCenter) {\n APP.ProfitCenter = new window.DataModelProfitCenter();\n }\n root.ProfitCenter = APP.ProfitCenter;\n }\n CSSSelectorForm = Opts.containerCssSelector + ' .profitCenterForm';\n };\n this.getOpts = function () {\n return Opts;\n };\n this.getData = function () {\n return root.ProfitCenter;\n };\n this.init = function (options, ProfitCenterItem) {\n $.extend(Opts, options);\n if (Opts.testMode) {\n return root.testMode();\n }\n if (ProfitCenterItem) {\n root.ProfitCenter = ProfitCenterItem;\n }\n root.initViewList();\n };\n this.clickNew = function () {\n debug('clickNew');\n APP.loadMainContent(Opts.URL.create, root.clickNewCallBack);\n };\n this.clickNewCallBack = function () {\n debug('callbackNew');\n root.ProfitCenter = new window.DataModelProfitCenter();\n root.initViewDetails();\n };\n this.initViewDetails = function (options, SupplierItem) {\n debug('**call initViewDetails ');\n /**\r\n * Contact Popup setup\r\n */\n if (!APP.ContactPopUp) {\n console.log('nincs APP.ContactPopUp');\n APP.ContactPopUp = new window.ContactPopUp();\n } else {\n console.log('mar van APP.ContactPopUp');\n }\n APP.ContactPopUp.init({\n active: true,\n onAfterSave: root.contactAction\n });\n root.renderContact();\n $(CSSSelectorForm + ' .buttonNewContact').bind('click', function () {\n APP.ProfitCenterAdmin.setContactPopupWorkflow('new');\n APP.ContactPopUp.clearData();\n APP.ContactPopUp.show();\n });\n /**\r\n * Address Popup setup\r\n */\n if (!APP.AddressPopUp) {\n console.log('nincs APP.AddressPopUp');\n APP.AddressPopUp = new window.AddressPopUp();\n } else {\n console.log('mar van APP.AddressPopUp');\n }\n APP.AddressPopUp.init({\n active: true,\n onAfterSave: root.addressAction\n });\n root.renderAddress();\n $(CSSSelectorForm + ' .buttonNewAddress').bind('click', function () {\n APP.ProfitCenterAdmin.setAddressPopupWorkflow('new');\n APP.AddressPopUp.clearData();\n APP.AddressPopUp.show();\n });\n /**\r\n *\r\n */\n\n $('[data-toggle=\"tooltip\"]').tooltip();\n initRadioButtons({\n onChange: function onChange(value, node) {\n debug(value);\n debug(node);\n /*\r\n if(node==='profitCenterMultiAddress'){\r\n if(value==1){\r\n $('.containerMultiAddress').removeClass('d-none');\r\n }else{\r\n $('.containerMultiAddress').addClass('d-none');\r\n }\r\n }\r\n */\n if (node === 'addressEqual') {\n if (value == 1) {\n $(CSSSelectorForm + ' .containerMultiAddress').addClass('d-none');\n $(CSSSelectorForm + ' .containerMultiAddressSwitch').addClass('d-none');\n } else {\n $(CSSSelectorForm + ' .containerMultiAddress').removeClass('d-none');\n $(CSSSelectorForm + ' .containerMultiAddressSwitch').removeClass('d-none');\n }\n }\n }\n });\n $(CSSSelectorForm + \" :input\").inputmask({\n \"onincomplete\": function onincomplete() {\n console.log($(this).data('required'));\n if ($(this).val().length > 0 || $(this).data('required') === true) {\n $(this).addClass('is-invalid');\n }\n },\n \"oncomplete\": function oncomplete() {\n $(this).removeClass('is-invalid');\n $(this).addClass('is-valid');\n },\n \"oncleared\": function oncleared() {\n console.log('cleared');\n $(this).removeClass('is-invalid');\n }\n });\n $(CSSSelectorForm + ' button.FormSaveButton').off('click');\n $(CSSSelectorForm + ' button.FormSaveButton').on('click', root.clickSaveButton);\n /*\r\n $(\"input[name=logoFile]\").change(function(){\r\n setImageFromLocal(this,Opts.containerCssSelector+' .imageLogo');\r\n });\r\n */\n\n //Opts.onAfterInitViewDetails();\n debug('**end initViewDetails ');\n };\n this.setDetailsViewData = function () {\n debug('setDetailsViewData');\n var CSSSelectorForm = Opts.containerCssSelector + ' .profitCenterForm';\n var needToSet = ['name', 'hooreycaId', 'nameId', 'email', 'postCode', 'city', 'street', 'phone', 'mobil'];\n $.each(needToSet, function () {\n // debug(this); //alapadatok beallitasanak logolasa\n if (typeof root.ProfitCenter[this] != 'undefined') {\n /* //alapadatok beallitasanak logolasa\r\n debug(root.ProfitCenter[this]);\r\n debug(CSSSelectorForm+' input[name='+this+']');\r\n debug($(CSSSelectorForm+' input[name='+this+']'));\r\n */\n $(CSSSelectorForm + ' input[name=' + this + ']').val(root.ProfitCenter[this]);\n }\n });\n if (typeof root.ProfitCenter['note'] != 'undefined') {\n $(CSSSelectorForm + ' textarea[name=note]').val(root.ProfitCenter.note);\n }\n $(CSSSelectorForm + ' *[data-toggle=canSee][data-title=' + root.ProfitCenter.canSee + ']').click();\n $(CSSSelectorForm + ' *[data-toggle=hooreycaDataActive][data-title=' + root.ProfitCenter.hooreycaDataActive + ']').click();\n if (typeof root.ProfitCenter['logoFile'] != 'undefined' && root.ProfitCenter['logoFile']) {\n $(CSSSelectorForm + ' img.imageLogo').attr('src', root.ProfitCenter['logoFile']);\n }\n $(CSSSelectorForm + ' *[data-toggle=addressEqual][data-title=' + root.ProfitCenter.addressEqual + ']').click();\n $(CSSSelectorForm + ' *[data-toggle=multiAddress][data-title=' + root.ProfitCenter.multiAddress + ']').click();\n /*debug(root.ProfitCenter.address.length);\r\n if(root.ProfitCenter.address.length>0){\r\n $(CSSSelectorForm+' *[data-toggle=addressEqual][data-title=0]').click();\r\n if(root.ProfitCenter.address.length>1){\r\n $(CSSSelectorForm+' *[data-toggle=multiAddress][data-title=1]').click();\r\n }\r\n }\r\n */\n var supplier = [];\n $.each(root.ProfitCenter.suppliers, function () {\n supplier.push(this.name);\n });\n //$(CSSSelectorForm+' .profitCenterSelect').val(profitCenter).change();\n $.each(supplier, function () {\n $('input[value=\"' + $.escapeSelector(this) + '\"]').prop(\"checked\", true);\n });\n };\n this.resetContactTable = function () {\n $(CSSSelectorForm + ' .contactTable tbody tr').remove();\n root.renderContact();\n };\n this.renderContact = function () {\n var rowNum = 1;\n console.log('renderingContacts');\n $.each(root.ProfitCenter.getData('contact'), function () {\n var contactData = this;\n contactData.rowNum = rowNum;\n var template = $('template[data-name=\"profitCenterContactTableRow\"]').html();\n var render = Mustache.render(template, contactData);\n $('.contactTable tbody').append(render);\n rowNum++;\n });\n root.bindContactClickAction();\n };\n this.bindContactClickAction = function () {\n $('.contactTable .buttonDelete').unbind('click');\n $('.contactTable .buttonDelete').bind('click', root.contactDeleteClick);\n $('.contactTable .buttonEdit').unbind('click');\n $('.contactTable .buttonEdit').bind('click', root.contactEditClick);\n };\n this.contactDeleteClick = function (event) {\n var row = $(this).closest('tr');\n var id = row.find('input[name=contactId]').val();\n console.log(id);\n root.ProfitCenter.contact = root.ProfitCenter.contact.filter(function (value, index, arr) {\n if (value.id !== id * 1) {\n return true;\n }\n return false;\n });\n console.log(root.ProfitCenter.contact);\n row.remove();\n root.resetContactTable();\n };\n this.getContactPopupWorkflow = function () {\n return contactPopupWorkflow;\n };\n this.setContactPopupWorkflow = function (status) {\n contactPopupWorkflow = status;\n };\n this.contactEditClick = function (event) {\n console.log(this);\n var row = $(this).closest('tr');\n var id = row.find('input[name=contactId]').val();\n console.log(id);\n root.setContactPopupWorkflow('edit');\n APP.ContactPopUp.loadData(id);\n };\n this.contactAction = function (contactData) {\n console.log('nah most kellene meg valamit csinalni.');\n if (root.getContactPopupWorkflow() == 'new') {\n root.addContact(contactData);\n } else if (root.getContactPopupWorkflow() == 'edit') {\n root.editContact(contactData.id, contactData);\n }\n };\n this.addContact = function (contactData) {\n /*\r\n fel kell venni a sorba\r\n */\n root.ProfitCenter.contact.push(contactData);\n contactData.rowNum = root.ProfitCenter.contact.length;\n var template = $('template[data-name=\"profitCenterContactTableRow\"]').html();\n var render = Mustache.render(template, contactData);\n $(CSSSelectorForm + ' .contactTable tbody').append(render);\n root.bindContactClickAction();\n Toast.enableTimers(false);\n Toast.create(\"Kapcsolat tartó hozzáadva!\", contactData.name + \" nevű kapocsolattartó hozzáadva\", TOAST_STATUS.SUCCESS, 5000);\n };\n this.editContact = function (id, contactData) {\n var newContacts = [];\n $.each(root.ProfitCenter.getData('contact'), function (index) {\n if (this.id == id) {\n newContacts.push(contactData);\n } else {\n newContacts.push(this);\n }\n });\n root.ProfitCenter.contact = newContacts;\n root.resetContactTable();\n Toast.create(\"Kapcsolat adatai módosítva!\", contactData.name + \" nevű kapocsolattartó módosítva\", TOAST_STATUS.SUCCESS, 5000);\n };\n\n /***************\r\n *\r\n * Address function\r\n *\r\n */\n this.resetAddressTable = function () {\n $(CSSSelectorForm + ' .addressTable tbody tr').remove();\n root.renderAddress();\n };\n this.renderAddress = function () {\n var rowNum = 1;\n console.log('renderingAddress');\n $.each(root.ProfitCenter.getData('address'), function () {\n var itemData = this;\n itemData.rowNum = rowNum;\n var template = $('template[data-name=\"profitCenterAddressTableRow\"]').html();\n debug(itemData);\n var render = Mustache.render(template, itemData);\n $('.addressTable tbody').append(render);\n rowNum++;\n });\n root.bindAddressClickAction();\n };\n this.bindAddressClickAction = function () {\n $('.addressTable .buttonDelete').unbind('click');\n $('.addressTable .buttonDelete').bind('click', root.addressDeleteClick);\n $('.addressTable .buttonEdit').unbind('click');\n $('.addressTable .buttonEdit').bind('click', root.addressEditClick);\n };\n this.addressDeleteClick = function (event) {\n var row = $(this).closest('tr');\n var id = row.find('input[name=\"addressId[]\"]').val();\n console.log(id);\n root.ProfitCenter.address = root.ProfitCenter.address.filter(function (value, index, arr) {\n if (value.id != id) return true;\n });\n console.log(root.ProfitCenter.address);\n row.remove();\n root.resetAddressTable();\n };\n this.getAddressPopupWorkflow = function () {\n return addressPopupWorkflow;\n };\n this.setAddressPopupWorkflow = function (status) {\n addressPopupWorkflow = status;\n };\n this.addressEditClick = function (event) {\n console.log(this);\n var row = $(this).closest('tr');\n var id = row.find('input[name=\"addressId[]\"]').val();\n console.log(id);\n root.setAddressPopupWorkflow('edit');\n APP.AddressPopUp.loadData(id);\n };\n this.addressAction = function (itemData) {\n console.log('nah most kellene meg valamit csinalni.');\n if (root.getAddressPopupWorkflow() == 'new') {\n root.addAddress(itemData);\n } else if (root.getAddressPopupWorkflow() == 'edit') {\n root.editAddress(itemData.id, itemData);\n }\n };\n this.addAddress = function (ItemData) {\n /*\r\n fel kell venni a sorba\r\n */\n root.ProfitCenter.address.push(ItemData);\n ItemData.rowNum = root.ProfitCenter.address.length;\n var template = $('template[data-name=\"profitCenterAddressTableRow\"]').html();\n var render = Mustache.render(template, ItemData);\n $(CSSSelectorForm + ' .addressTable tbody').append(render);\n root.bindAddressClickAction();\n Toast.enableTimers(false);\n Toast.create(\"Cím hozzáadva!\", ItemData.street + \" hozzáadva\", TOAST_STATUS.SUCCESS, 5000);\n };\n this.editAddress = function (id, itemData) {\n var newItem = [];\n $.each(root.ProfitCenter.getData('address'), function (index) {\n if (this.id == id) {\n newItem.push(itemData);\n } else {\n newItem.push(this);\n }\n });\n root.ProfitCenter.address = newItem;\n root.resetAddressTable();\n Toast.create(\"cím adatai módosítva!\", itemData.street + \" módosítva\", TOAST_STATUS.SUCCESS, 5000);\n };\n this.initViewList = function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n debug('listview inicialization');\n dataTableCSSSelector = Opts.containerCssSelector + ' .dataTable'; //\n\n var colNum = $(dataTableCSSSelector + ' thead th').length; //buttons insert position need\n APP.setOpts({\n datatableActionButtonClickCallBack: root.clickNew,\n datatableRowActionButtonClickCallBack: root.datatableRowActionButtonClick\n });\n var orderDirective = Opts.dataTable.orderDirective;\n if (typeof options['orderDirective'] != 'undefined') {\n orderDirective = options['orderDirective'];\n }\n $(dataTableCSSSelector).DataTable({\n language: {\n url: '//cdn.datatables.net/plug-ins/1.10.24/i18n/Hungarian.json'\n },\n //\"ajax\": \"{{asset('exapmle2.json')}}\",\n \"ajax\": Opts.URL.getDataTableContent,\n \"columnDefs\": [{\n \"targets\": colNum - 1,\n \"render\": function render(data, type, row) {\n var buttons = APP.datatableAddRowTrashButton(0, arguments);\n buttons += APP.datatableAddRowEditButton(0, arguments);\n return buttons;\n }\n }, {\n \"targets\": 1,\n \"render\": function render(data, type, row) {\n return type === \"sort\" ? data.latinise() : data;\n }\n }\n //{ \"visible\": false, \"targets\": [ 0 ] }\n ],\n buttons: {\n buttons: ['excel', 'pdf', {\n extend: 'print',\n //text: 'Print current page',\n 'title': 'title custom text',\n 'messageTop': 'Message On Top',\n autoPrint: true\n }, /**/\n\n {\n text: 'Új felvitele',\n className: 'btn btn-success newItem',\n attr: {\n /*\r\n data:{\r\n a:1,\r\n b:2\r\n }\r\n */\n 'data': 'newItem'\n },\n init: function init(api, node, config) {\n $(node).removeClass('ui-button');\n },\n action: function action(e, dt, node, config) {\n APP.datatableActionButtonClickCallBack(arguments);\n /* console.log(e);\r\n console.log(dt);\r\n console.log(node);\r\n console.log(config);*/\n }\n }]\n },\n \"columns\": [{\n \"data\": \"id\"\n }, {\n \"data\": \"name\"\n }, {\n \"data\": \"hooreycaId\"\n }, {\n \"data\": \"nameId\"\n }, {\n \"data\": \"created_at\"\n }, null],\n \"order\": orderDirective,\n //\"stateSave\": true,\n \"drawCallback\": function drawCallback(settings) {\n APP.datatableAddRowAction(dataTableCSSSelector);\n }\n });\n debug('listview end');\n };\n this.datatableRowActionButtonClick = function (event) {\n debug('datatableRowActionButtonClick');\n var node = $(event[0].currentTarget);\n var row = $(dataTableCSSSelector).DataTable().row(node.parents('tr'));\n var rowData = row.data();\n var actionName = 'datatableRowAction' + node.data('buttontype').capitalize();\n if (typeof root[actionName] === \"function\") {\n return root[actionName](rowData, node);\n }\n };\n this.datatableRowActionEdit = function (rowData, node) {\n console.log('datatableRowActionEdit Called');\n //Opts.onAfterInitViewDetails=root.autofillDetails;\n var ajaxUrl = Opts.URL.edit.replace('%id%', rowData.id);\n /*\r\n console.log(Opts.URL);\r\n console.log(ajaxUrl);\r\n */\n APP.loadMainContent(ajaxUrl, root.initViewDetails);\n console.log('datatableRowActionEdit End');\n };\n this.datatableRowActionDelete = function (rowData, node) {\n console.log('datatableRowActionDelete Called');\n var row = $(dataTableCSSSelector).DataTable().row(node.parents('tr'));\n var ajaxData = {};\n var ajaxUrl = Opts.URL.destroy.replace('%id%', rowData.id);\n ajaxData._token = $('input[name=_token]').val();\n $.ajax({\n url: ajaxUrl,\n data: ajaxData,\n method: \"DELETE\",\n success: function success(data) {\n if (data.success == true) {\n row.remove().draw();\n }\n }\n });\n };\n this.clickSaveButton = function (event) {\n debug('Save clicked');\n event.preventDefault();\n debug(CSSSelectorForm);\n debug($(CSSSelectorForm));\n if ($(CSSSelectorForm)[0].checkValidity() === false) {\n console.log('validaton false');\n event.stopPropagation();\n return;\n } else {\n console.log('validaton ok');\n //do your ajax submition here\n }\n var ajaxData = root.formDataToDataObjectAPICall(CSSSelectorForm);\n var ajaxUrl = Opts.URL.store;\n var ajaxMethod = \"POST\";\n if (root.ProfitCenter.id) {\n ajaxUrl = Opts.URL.update.replace('%id%', root.ProfitCenter.id);\n //ajaxMethod=\"PUT\";\n //ajaxData=new FormData($(CSSSelectorForm)[0]);\n ajaxData.append('_method', 'PUT');\n }\n /*\r\n debug(ajaxUrl);\r\n debug(ajaxMethod);\r\n debug(ajaxData.entries());\r\n for (var pair of ajaxData.entries()) {\r\n console.log(pair[0]+ ', ' + pair[1]);\r\n }\r\n */\n\n console.table(Object.fromEntries(ajaxData));\n $.ajax({\n url: ajaxUrl,\n data: ajaxData,\n type: ajaxMethod,\n contentType: false,\n processData: false,\n headers: {\n 'X-CSRF-TOKEN': $('input[name=\"_token\"]').val()\n },\n success: function success(data) {\n debug(data);\n if (data.success == true) {\n //Opts.onAfterInitViewDetails=root.autofillDetails;\n Opts.dataTable.orderDirective = [0, 'desc'];\n Toast.create(\"Sikeres rögzítés!\", ajaxData.get('name') + \" nevű beszálllító elmentve\", TOAST_STATUS.SUCCESS, 5000);\n APP.loadMainContent(Opts.URL.index + '?init=0', root.initViewList);\n }\n }\n });\n };\n this.formDataToDataObjectAPICall = function (CSSSelectorForm) {\n var ajaxData = new FormData($(CSSSelectorForm)[0]);\n /*\r\n $.each(ajaxData.getAll('productGroup'),function(key,value){\r\n ajaxData.append('productGroup[]',value);\r\n })\r\n */\n $.each(ajaxData.getAll('contactId'), function (key, value) {\n ajaxData.append('contactId[]', value);\n });\n ajaxData.append('_token', $('input[name=_token]').val());\n $(CSSSelectorForm + ' input[data-inputmask]').each(function () {\n var indexKey = $(this).attr('name');\n if (ajaxData.get(indexKey)) {\n ajaxData.set(indexKey, ajaxData.get(indexKey).replace(/[_ ]+$/g, \"\"));\n }\n });\n $.each(ajaxData.getAll('supplier'), function (key, value) {\n ajaxData.append('supplier[]', value);\n });\n return ajaxData;\n };\n this.construct(options, ProfitCenterItem);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEYXRhTW9kZWxQcm9maXRDZW50ZXIiLCJfRGF0YU1vZGVsIiwiX0RhdGFNb2RlbFByb2ZpdENlbnRlciIsImRhdGEiLCJvcHRpb25zIiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2siLCJfY2FsbFN1cGVyIiwiY29udGFjdCIsImFkZHJlc3MiLCJjb25zb2xlIiwibG9nIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiX2luaGVyaXRzIiwiX2NyZWF0ZUNsYXNzIiwiRGF0YU1vZGVsIiwid2luZG93IiwiUHJvZml0Q2VudGVyQWRtaW4iLCJQcm9maXRDZW50ZXJJdGVtIiwiT3B0cyIsInRva2VuIiwiY29udGFpbmVyQ3NzU2VsZWN0b3IiLCJ0ZXN0TW9kZSIsIlVSTCIsImdldERhdGFUYWJsZUNvbnRlbnQiLCJpbmRleCIsInNob3ciLCJlZGl0IiwiY3JlYXRlIiwic3RvcmUiLCJ1cGRhdGUiLCJkZXN0cm95IiwiZGF0YVRhYmxlIiwib3JkZXJEaXJlY3RpdmUiLCJvbkFmdGVySW5pdFZpZXdEZXRhaWxzIiwiUHJvZml0Q2VudGVyIiwicm9vdCIsImNvbnRhY3RQb3B1cFdvcmtmbG93IiwiYWRkcmVzc1BvcHVwV29ya2Zsb3ciLCJDU1NTZWxlY3RvckZvcm0iLCJkYXRhVGFibGVDU1NTZWxlY3RvciIsImNvbnN0cnVjdCIsIiQiLCJleHRlbmQiLCJBUFAiLCJnZXRPcHRzIiwiZ2V0RGF0YSIsImluaXQiLCJpbml0Vmlld0xpc3QiLCJjbGlja05ldyIsImRlYnVnIiwibG9hZE1haW5Db250ZW50IiwiY2xpY2tOZXdDYWxsQmFjayIsImluaXRWaWV3RGV0YWlscyIsIlN1cHBsaWVySXRlbSIsIkNvbnRhY3RQb3BVcCIsImFjdGl2ZSIsIm9uQWZ0ZXJTYXZlIiwiY29udGFjdEFjdGlvbiIsInJlbmRlckNvbnRhY3QiLCJiaW5kIiwic2V0Q29udGFjdFBvcHVwV29ya2Zsb3ciLCJjbGVhckRhdGEiLCJBZGRyZXNzUG9wVXAiLCJhZGRyZXNzQWN0aW9uIiwicmVuZGVyQWRkcmVzcyIsInNldEFkZHJlc3NQb3B1cFdvcmtmbG93IiwidG9vbHRpcCIsImluaXRSYWRpb0J1dHRvbnMiLCJvbkNoYW5nZSIsInZhbHVlIiwibm9kZSIsImFkZENsYXNzIiwicmVtb3ZlQ2xhc3MiLCJpbnB1dG1hc2siLCJvbmluY29tcGxldGUiLCJ2YWwiLCJsZW5ndGgiLCJvbmNvbXBsZXRlIiwib25jbGVhcmVkIiwib2ZmIiwib24iLCJjbGlja1NhdmVCdXR0b24iLCJzZXREZXRhaWxzVmlld0RhdGEiLCJuZWVkVG9TZXQiLCJlYWNoIiwibm90ZSIsImNhblNlZSIsImNsaWNrIiwiaG9vcmV5Y2FEYXRhQWN0aXZlIiwiYXR0ciIsImFkZHJlc3NFcXVhbCIsIm11bHRpQWRkcmVzcyIsInN1cHBsaWVyIiwic3VwcGxpZXJzIiwicHVzaCIsImVzY2FwZVNlbGVjdG9yIiwicHJvcCIsInJlc2V0Q29udGFjdFRhYmxlIiwicmVtb3ZlIiwicm93TnVtIiwiY29udGFjdERhdGEiLCJ0ZW1wbGF0ZSIsImh0bWwiLCJyZW5kZXIiLCJNdXN0YWNoZSIsImFwcGVuZCIsImJpbmRDb250YWN0Q2xpY2tBY3Rpb24iLCJ1bmJpbmQiLCJjb250YWN0RGVsZXRlQ2xpY2siLCJjb250YWN0RWRpdENsaWNrIiwiZXZlbnQiLCJyb3ciLCJjbG9zZXN0IiwiaWQiLCJmaW5kIiwiZmlsdGVyIiwiYXJyIiwiZ2V0Q29udGFjdFBvcHVwV29ya2Zsb3ciLCJzdGF0dXMiLCJsb2FkRGF0YSIsImFkZENvbnRhY3QiLCJlZGl0Q29udGFjdCIsIlRvYXN0IiwiZW5hYmxlVGltZXJzIiwiVE9BU1RfU1RBVFVTIiwiU1VDQ0VTUyIsIm5ld0NvbnRhY3RzIiwicmVzZXRBZGRyZXNzVGFibGUiLCJpdGVtRGF0YSIsImJpbmRBZGRyZXNzQ2xpY2tBY3Rpb24iLCJhZGRyZXNzRGVsZXRlQ2xpY2siLCJhZGRyZXNzRWRpdENsaWNrIiwiZ2V0QWRkcmVzc1BvcHVwV29ya2Zsb3ciLCJhZGRBZGRyZXNzIiwiZWRpdEFkZHJlc3MiLCJJdGVtRGF0YSIsInN0cmVldCIsIm5ld0l0ZW0iLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJjb2xOdW0iLCJzZXRPcHRzIiwiZGF0YXRhYmxlQWN0aW9uQnV0dG9uQ2xpY2tDYWxsQmFjayIsImRhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrQ2FsbEJhY2siLCJkYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGljayIsIkRhdGFUYWJsZSIsImxhbmd1YWdlIiwidXJsIiwidHlwZSIsImJ1dHRvbnMiLCJkYXRhdGFibGVBZGRSb3dUcmFzaEJ1dHRvbiIsImRhdGF0YWJsZUFkZFJvd0VkaXRCdXR0b24iLCJsYXRpbmlzZSIsImF1dG9QcmludCIsInRleHQiLCJjbGFzc05hbWUiLCJhcGkiLCJjb25maWciLCJhY3Rpb24iLCJlIiwiZHQiLCJkcmF3Q2FsbGJhY2siLCJzZXR0aW5ncyIsImRhdGF0YWJsZUFkZFJvd0FjdGlvbiIsImN1cnJlbnRUYXJnZXQiLCJwYXJlbnRzIiwicm93RGF0YSIsImFjdGlvbk5hbWUiLCJjYXBpdGFsaXplIiwiZGF0YXRhYmxlUm93QWN0aW9uRWRpdCIsImFqYXhVcmwiLCJyZXBsYWNlIiwiZGF0YXRhYmxlUm93QWN0aW9uRGVsZXRlIiwiYWpheERhdGEiLCJfdG9rZW4iLCJhamF4IiwibWV0aG9kIiwic3VjY2VzcyIsImRyYXciLCJwcmV2ZW50RGVmYXVsdCIsImNoZWNrVmFsaWRpdHkiLCJzdG9wUHJvcGFnYXRpb24iLCJmb3JtRGF0YVRvRGF0YU9iamVjdEFQSUNhbGwiLCJhamF4TWV0aG9kIiwidGFibGUiLCJPYmplY3QiLCJmcm9tRW50cmllcyIsImNvbnRlbnRUeXBlIiwicHJvY2Vzc0RhdGEiLCJoZWFkZXJzIiwiZ2V0IiwiRm9ybURhdGEiLCJnZXRBbGwiLCJrZXkiLCJpbmRleEtleSIsInNldCJdLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvYWRtaW4vcHJvZml0Q2VudGVyLmpzP2NkMTUiXSwic291cmNlc0NvbnRlbnQiOlsiaWYodHlwZW9mIERhdGFNb2RlbFByb2ZpdENlbnRlcj09PSd1bmRlZmluZWQnKXtcclxuICAgIGNsYXNzIERhdGFNb2RlbFByb2ZpdENlbnRlciBleHRlbmRzIERhdGFNb2RlbHtcclxuXHJcbiAgICAgICAgLypcclxuICAgICAgICAgKiBDb25zdHJ1Y3RvclxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGNvbnN0cnVjdG9yIChkYXRhLG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgc3VwZXIoZGF0YSxvcHRpb25zKVxyXG4gICAgICAgICAgICBpZih0eXBlb2YgdGhpcy5jb250YWN0ID09PVwidW5kZWZpbmVkXCIpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250YWN0PVtdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHR5cGVvZiB0aGlzLmFkZHJlc3MgPT09XCJ1bmRlZmluZWRcIil7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZHJlc3M9W107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5jb25zdHJ1Y3Rvci5uYW1lKycgY29uc3RydWN0b3IgY2FsbGVkJyk7XHJcbiAgICAgICAgfTtcclxuICAgIH07XHJcbiAgICB3aW5kb3cuRGF0YU1vZGVsUHJvZml0Q2VudGVyPURhdGFNb2RlbFByb2ZpdENlbnRlcjtcclxufVxyXG5cclxud2luZG93LlByb2ZpdENlbnRlckFkbWluPWZ1bmN0aW9uIChvcHRpb25zLFByb2ZpdENlbnRlckl0ZW0pIHtcclxuICAgIC8qXHJcbiAgICAgKiBWYXJpYWJsZXMgYWNjZXNzaWJsZVxyXG4gICAgICogaW4gdGhlIGNsYXNzXHJcbiAgICAgKi9cclxuICAgIGxldCBPcHRzID0ge1xyXG4gICAgICAgIHRva2VuOiBudWxsLFxyXG4gICAgICAgIGNvbnRhaW5lckNzc1NlbGVjdG9yOiAnLmNvbnRhaW5lclByb2ZpdENlbnRlcicsXHJcbiAgICAgICAgdGVzdE1vZGU6IGZhbHNlLFxyXG4gICAgICAgIFVSTDoge1xyXG4gICAgICAgICAgICBnZXREYXRhVGFibGVDb250ZW50OiAnJyxcclxuICAgICAgICAgICAgaW5kZXg6ICcnLFxyXG4gICAgICAgICAgICBzaG93OiAnJyxcclxuICAgICAgICAgICAgZWRpdDogJycsXHJcbiAgICAgICAgICAgIGNyZWF0ZTogJycsXHJcbiAgICAgICAgICAgIHN0b3JlOiAnJyxcclxuICAgICAgICAgICAgdXBkYXRlOiAnJyxcclxuICAgICAgICAgICAgZGVzdHJveTogJycsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkYXRhVGFibGU6IHtcclxuICAgICAgICAgICAgb3JkZXJEaXJlY3RpdmU6IFsxLCAnYXNjJ11cclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQWZ0ZXJJbml0Vmlld0RldGFpbHM6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgbGV0IFByb2ZpdENlbnRlciA9IHt9O1xyXG4gICAgbGV0IHJvb3QgPSB0aGlzO1xyXG4gICAgbGV0IGNvbnRhY3RQb3B1cFdvcmtmbG93ID0gJ25ldyc7XHJcbiAgICBsZXQgYWRkcmVzc1BvcHVwV29ya2Zsb3cgPSAnbmV3JztcclxuICAgIGxldCBDU1NTZWxlY3RvckZvcm09Jyc7XHJcbiAgICBsZXQgZGF0YVRhYmxlQ1NTU2VsZWN0b3I9Jyc7XHJcbiAgICAvKlxyXG4gICAgICogQ29uc3RydWN0b3JcclxuICAgICAqL1xyXG4gICAgdGhpcy5jb25zdHJ1Y3QgPSBmdW5jdGlvbiAob3B0aW9ucywgUHJvZml0Q2VudGVySXRlbSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdQcm9maXRDZW50ZXJBZG1pbiBjb25zdHJ1Y3RvciBjYWxsZWQnKTtcclxuICAgICAgICAkLmV4dGVuZChPcHRzLCBvcHRpb25zKTtcclxuICAgICAgICBpZiAoIVByb2ZpdENlbnRlckl0ZW0pIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ1Byb2ZpdENlbnRlcnQgbGV0cmUga2VsbGV0IGhvem5pICcpO1xyXG4gICAgICAgICAgICBpZiAoIUFQUC5Qcm9maXRDZW50ZXIpIHtcclxuICAgICAgICAgICAgICAgIEFQUC5Qcm9maXRDZW50ZXIgPSBuZXcgd2luZG93LkRhdGFNb2RlbFByb2ZpdENlbnRlcigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJvb3QuUHJvZml0Q2VudGVyID0gQVBQLlByb2ZpdENlbnRlcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgQ1NTU2VsZWN0b3JGb3JtPU9wdHMuY29udGFpbmVyQ3NzU2VsZWN0b3IrJyAucHJvZml0Q2VudGVyRm9ybSc7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5nZXRPcHRzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBPcHRzO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXREYXRhPWZ1bmN0aW9uICgpe1xyXG4gICAgICAgIHJldHVybiByb290LlByb2ZpdENlbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmluaXQ9ZnVuY3Rpb24gKG9wdGlvbnMsUHJvZml0Q2VudGVySXRlbSl7XHJcbiAgICAgICAgJC5leHRlbmQoT3B0cywgb3B0aW9ucyk7XHJcblxyXG4gICAgICAgIGlmKE9wdHMudGVzdE1vZGUpe1xyXG4gICAgICAgICAgICByZXR1cm4gcm9vdC50ZXN0TW9kZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihQcm9maXRDZW50ZXJJdGVtKXtcclxuICAgICAgICAgICAgcm9vdC5Qcm9maXRDZW50ZXI9UHJvZml0Q2VudGVySXRlbVxyXG4gICAgICAgIH1cclxuICAgICAgICByb290LmluaXRWaWV3TGlzdCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jbGlja05ldz1mdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgZGVidWcoJ2NsaWNrTmV3Jyk7XHJcbiAgICAgICAgQVBQLmxvYWRNYWluQ29udGVudChPcHRzLlVSTC5jcmVhdGUscm9vdC5jbGlja05ld0NhbGxCYWNrKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNsaWNrTmV3Q2FsbEJhY2s9ZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGRlYnVnKCdjYWxsYmFja05ldycpO1xyXG4gICAgICAgIHJvb3QuUHJvZml0Q2VudGVyPW5ldyB3aW5kb3cuRGF0YU1vZGVsUHJvZml0Q2VudGVyKCk7XHJcbiAgICAgICAgcm9vdC5pbml0Vmlld0RldGFpbHMoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmluaXRWaWV3RGV0YWlscz1mdW5jdGlvbiAob3B0aW9ucyxTdXBwbGllckl0ZW0pe1xyXG4gICAgICAgIGRlYnVnKCcqKmNhbGwgaW5pdFZpZXdEZXRhaWxzICcpO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIENvbnRhY3QgUG9wdXAgc2V0dXBcclxuICAgICAgICAgKi9cclxuICAgICAgICBpZighQVBQLkNvbnRhY3RQb3BVcCl7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCduaW5jcyBBUFAuQ29udGFjdFBvcFVwJylcclxuICAgICAgICAgICAgQVBQLkNvbnRhY3RQb3BVcCA9IG5ldyB3aW5kb3cuQ29udGFjdFBvcFVwKCk7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdtYXIgdmFuICBBUFAuQ29udGFjdFBvcFVwJylcclxuICAgICAgICB9XHJcbiAgICAgICAgQVBQLkNvbnRhY3RQb3BVcC5pbml0KHtcclxuICAgICAgICAgICAgYWN0aXZlOnRydWUsXHJcbiAgICAgICAgICAgIG9uQWZ0ZXJTYXZlOnJvb3QuY29udGFjdEFjdGlvblxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJvb3QucmVuZGVyQ29udGFjdCgpO1xyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgLmJ1dHRvbk5ld0NvbnRhY3QnKS5iaW5kKCdjbGljaycsZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgICAgIEFQUC5Qcm9maXRDZW50ZXJBZG1pbi5zZXRDb250YWN0UG9wdXBXb3JrZmxvdygnbmV3Jyk7XHJcbiAgICAgICAgICAgIEFQUC5Db250YWN0UG9wVXAuY2xlYXJEYXRhKCk7XHJcbiAgICAgICAgICAgIEFQUC5Db250YWN0UG9wVXAuc2hvdygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEFkZHJlc3MgUG9wdXAgc2V0dXBcclxuICAgICAgICAgKi9cclxuICAgICAgICBpZighQVBQLkFkZHJlc3NQb3BVcCl7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCduaW5jcyBBUFAuQWRkcmVzc1BvcFVwJylcclxuICAgICAgICAgICAgQVBQLkFkZHJlc3NQb3BVcCA9IG5ldyB3aW5kb3cuQWRkcmVzc1BvcFVwKCk7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdtYXIgdmFuICBBUFAuQWRkcmVzc1BvcFVwJylcclxuICAgICAgICB9XHJcbiAgICAgICAgQVBQLkFkZHJlc3NQb3BVcC5pbml0KHtcclxuICAgICAgICAgICAgYWN0aXZlOnRydWUsXHJcbiAgICAgICAgICAgIG9uQWZ0ZXJTYXZlOnJvb3QuYWRkcmVzc0FjdGlvblxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJvb3QucmVuZGVyQWRkcmVzcygpO1xyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgLmJ1dHRvbk5ld0FkZHJlc3MnKS5iaW5kKCdjbGljaycsZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgICAgIEFQUC5Qcm9maXRDZW50ZXJBZG1pbi5zZXRBZGRyZXNzUG9wdXBXb3JrZmxvdygnbmV3Jyk7XHJcbiAgICAgICAgICAgIEFQUC5BZGRyZXNzUG9wVXAuY2xlYXJEYXRhKCk7XHJcbiAgICAgICAgICAgIEFQUC5BZGRyZXNzUG9wVXAuc2hvdygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqXHJcbiAgICAgICAgICovXHJcblxyXG4gICAgICAgICQoJ1tkYXRhLXRvZ2dsZT1cInRvb2x0aXBcIl0nKS50b29sdGlwKCk7XHJcbiAgICAgICAgaW5pdFJhZGlvQnV0dG9ucyh7XHJcbiAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiAodmFsdWUsbm9kZSkge1xyXG4gICAgICAgICAgICAgICAgZGVidWcodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgZGVidWcobm9kZSk7XHJcbiAgICAgICAgICAgICAgICAvKlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobm9kZT09PSdwcm9maXRDZW50ZXJNdWx0aUFkZHJlc3MnKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbHVlPT0xKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcuY29udGFpbmVyTXVsdGlBZGRyZXNzJykucmVtb3ZlQ2xhc3MoJ2Qtbm9uZScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmNvbnRhaW5lck11bHRpQWRkcmVzcycpLmFkZENsYXNzKCdkLW5vbmUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgICAgICBpZihub2RlPT09J2FkZHJlc3NFcXVhbCcpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHZhbHVlPT0xKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJChDU1NTZWxlY3RvckZvcm0rJyAuY29udGFpbmVyTXVsdGlBZGRyZXNzJykuYWRkQ2xhc3MoJ2Qtbm9uZScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKENTU1NlbGVjdG9yRm9ybSsnIC5jb250YWluZXJNdWx0aUFkZHJlc3NTd2l0Y2gnKS5hZGRDbGFzcygnZC1ub25lJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgLmNvbnRhaW5lck11bHRpQWRkcmVzcycpLnJlbW92ZUNsYXNzKCdkLW5vbmUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJChDU1NTZWxlY3RvckZvcm0rJyAuY29udGFpbmVyTXVsdGlBZGRyZXNzU3dpdGNoJykucmVtb3ZlQ2xhc3MoJ2Qtbm9uZScpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICAkKENTU1NlbGVjdG9yRm9ybStcIiA6aW5wdXRcIikuaW5wdXRtYXNrKHtcclxuICAgICAgICAgICAgXCJvbmluY29tcGxldGVcIjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJCh0aGlzKS5kYXRhKCdyZXF1aXJlZCcpKTtcclxuICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLnZhbCgpLmxlbmd0aCA+IDAgfHwgJCh0aGlzKS5kYXRhKCdyZXF1aXJlZCcpID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnaXMtaW52YWxpZCcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBcIm9uY29tcGxldGVcIjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnaXMtaW52YWxpZCcpO1xyXG4gICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnaXMtdmFsaWQnKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXCJvbmNsZWFyZWRcIjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2NsZWFyZWQnKTtcclxuICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3MoJ2lzLWludmFsaWQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAkKENTU1NlbGVjdG9yRm9ybSsnIGJ1dHRvbi5Gb3JtU2F2ZUJ1dHRvbicpLm9mZignY2xpY2snKTtcclxuICAgICAgICAkKENTU1NlbGVjdG9yRm9ybSsnIGJ1dHRvbi5Gb3JtU2F2ZUJ1dHRvbicpLm9uKCdjbGljaycscm9vdC5jbGlja1NhdmVCdXR0b24pO1xyXG4vKlxyXG4gICAgICAgICQoXCJpbnB1dFtuYW1lPWxvZ29GaWxlXVwiKS5jaGFuZ2UoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgc2V0SW1hZ2VGcm9tTG9jYWwodGhpcyxPcHRzLmNvbnRhaW5lckNzc1NlbGVjdG9yKycgLmltYWdlTG9nbycpO1xyXG4gICAgICAgIH0pO1xyXG4qL1xyXG5cclxuICAgICAgICAvL09wdHMub25BZnRlckluaXRWaWV3RGV0YWlscygpO1xyXG4gICAgICAgIGRlYnVnKCcqKmVuZCBpbml0Vmlld0RldGFpbHMgJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldERldGFpbHNWaWV3RGF0YT1mdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgZGVidWcoJ3NldERldGFpbHNWaWV3RGF0YScpO1xyXG4gICAgICAgIGxldCBDU1NTZWxlY3RvckZvcm09T3B0cy5jb250YWluZXJDc3NTZWxlY3RvcisnIC5wcm9maXRDZW50ZXJGb3JtJztcclxuICAgICAgICBsZXQgbmVlZFRvU2V0PVtcclxuICAgICAgICAgICAgJ25hbWUnLCdob29yZXljYUlkJywnbmFtZUlkJyxcclxuICAgICAgICAgICAgJ2VtYWlsJywncG9zdENvZGUnLCdjaXR5Jywnc3RyZWV0JywncGhvbmUnLCdtb2JpbCdcclxuICAgICAgICBdO1xyXG4gICAgICAgICQuZWFjaChuZWVkVG9TZXQsZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAvLyBkZWJ1Zyh0aGlzKTsgLy9hbGFwYWRhdG9rIGJlYWxsaXRhc2FuYWsgbG9nb2xhc2FcclxuICAgICAgICAgICAgaWYodHlwZW9mIHJvb3QuUHJvZml0Q2VudGVyW3RoaXNdIT0ndW5kZWZpbmVkJyl7XHJcbi8qIC8vYWxhcGFkYXRvayBiZWFsbGl0YXNhbmFrIGxvZ29sYXNhXHJcbiAgICAgICAgICAgICAgICBkZWJ1Zyhyb290LlByb2ZpdENlbnRlclt0aGlzXSk7XHJcbiAgICAgICAgICAgICAgICBkZWJ1ZyhDU1NTZWxlY3RvckZvcm0rJyBpbnB1dFtuYW1lPScrdGhpcysnXScpO1xyXG4gICAgICAgICAgICAgICAgZGVidWcoJChDU1NTZWxlY3RvckZvcm0rJyBpbnB1dFtuYW1lPScrdGhpcysnXScpKTtcclxuKi9cclxuICAgICAgICAgICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgaW5wdXRbbmFtZT0nK3RoaXMrJ10nKS52YWwocm9vdC5Qcm9maXRDZW50ZXJbdGhpc10pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICBpZih0eXBlb2Ygcm9vdC5Qcm9maXRDZW50ZXJbJ25vdGUnXSE9J3VuZGVmaW5lZCcpe1xyXG4gICAgICAgICAgICAkKENTU1NlbGVjdG9yRm9ybSsnIHRleHRhcmVhW25hbWU9bm90ZV0nKS52YWwocm9vdC5Qcm9maXRDZW50ZXIubm90ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgKltkYXRhLXRvZ2dsZT1jYW5TZWVdW2RhdGEtdGl0bGU9Jytyb290LlByb2ZpdENlbnRlci5jYW5TZWUrJ10nKS5jbGljaygpO1xyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgKltkYXRhLXRvZ2dsZT1ob29yZXljYURhdGFBY3RpdmVdW2RhdGEtdGl0bGU9Jytyb290LlByb2ZpdENlbnRlci5ob29yZXljYURhdGFBY3RpdmUrJ10nKS5jbGljaygpO1xyXG5cclxuICAgICAgICBpZih0eXBlb2Ygcm9vdC5Qcm9maXRDZW50ZXJbJ2xvZ29GaWxlJ10hPSd1bmRlZmluZWQnICYmIChyb290LlByb2ZpdENlbnRlclsnbG9nb0ZpbGUnXSkpe1xyXG4gICAgICAgICAgICAkKENTU1NlbGVjdG9yRm9ybSsnIGltZy5pbWFnZUxvZ28nKS5hdHRyKCdzcmMnLHJvb3QuUHJvZml0Q2VudGVyWydsb2dvRmlsZSddKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgKltkYXRhLXRvZ2dsZT1hZGRyZXNzRXF1YWxdW2RhdGEtdGl0bGU9Jytyb290LlByb2ZpdENlbnRlci5hZGRyZXNzRXF1YWwrJ10nKS5jbGljaygpO1xyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgKltkYXRhLXRvZ2dsZT1tdWx0aUFkZHJlc3NdW2RhdGEtdGl0bGU9Jytyb290LlByb2ZpdENlbnRlci5tdWx0aUFkZHJlc3MrJ10nKS5jbGljaygpO1xyXG4gICAgICAgIC8qZGVidWcocm9vdC5Qcm9maXRDZW50ZXIuYWRkcmVzcy5sZW5ndGgpO1xyXG4gICAgICAgIGlmKHJvb3QuUHJvZml0Q2VudGVyLmFkZHJlc3MubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICAkKENTU1NlbGVjdG9yRm9ybSsnICpbZGF0YS10b2dnbGU9YWRkcmVzc0VxdWFsXVtkYXRhLXRpdGxlPTBdJykuY2xpY2soKTtcclxuICAgICAgICAgICAgaWYocm9vdC5Qcm9maXRDZW50ZXIuYWRkcmVzcy5sZW5ndGg+MSl7XHJcbiAgICAgICAgICAgICAgICAkKENTU1NlbGVjdG9yRm9ybSsnICpbZGF0YS10b2dnbGU9bXVsdGlBZGRyZXNzXVtkYXRhLXRpdGxlPTFdJykuY2xpY2soKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAqL1xyXG4gICAgICAgIGxldCBzdXBwbGllcj1bXTtcclxuICAgICAgICAkLmVhY2gocm9vdC5Qcm9maXRDZW50ZXIuc3VwcGxpZXJzLGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgc3VwcGxpZXIucHVzaCh0aGlzLm5hbWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vJChDU1NTZWxlY3RvckZvcm0rJyAucHJvZml0Q2VudGVyU2VsZWN0JykudmFsKHByb2ZpdENlbnRlcikuY2hhbmdlKCk7XHJcbiAgICAgICAgJC5lYWNoKHN1cHBsaWVyLGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgJCgnaW5wdXRbdmFsdWU9XCInKyQuZXNjYXBlU2VsZWN0b3IodGhpcykrJ1wiXScpLnByb3AoIFwiY2hlY2tlZFwiLCB0cnVlICk7XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZXNldENvbnRhY3RUYWJsZT1mdW5jdGlvbiAoKXtcclxuICAgICAgICAkKENTU1NlbGVjdG9yRm9ybSsnIC5jb250YWN0VGFibGUgdGJvZHkgdHInKS5yZW1vdmUoKTtcclxuICAgICAgICByb290LnJlbmRlckNvbnRhY3QoKTtcclxuICAgIH1cclxuICAgIHRoaXMucmVuZGVyQ29udGFjdD1mdW5jdGlvbiAoKXtcclxuICAgICAgICBsZXQgcm93TnVtPTE7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ3JlbmRlcmluZ0NvbnRhY3RzJyk7XHJcbiAgICAgICAgJC5lYWNoKHJvb3QuUHJvZml0Q2VudGVyLmdldERhdGEoJ2NvbnRhY3QnKSxmdW5jdGlvbiAoKXtcclxuICAgICAgICAgICAgbGV0IGNvbnRhY3REYXRhPXRoaXM7XHJcbiAgICAgICAgICAgIGNvbnRhY3REYXRhLnJvd051bT1yb3dOdW07XHJcbiAgICAgICAgICAgIGxldCB0ZW1wbGF0ZT0kKCd0ZW1wbGF0ZVtkYXRhLW5hbWU9XCJwcm9maXRDZW50ZXJDb250YWN0VGFibGVSb3dcIl0nKS5odG1sKClcclxuICAgICAgICAgICAgbGV0IHJlbmRlcj1NdXN0YWNoZS5yZW5kZXIodGVtcGxhdGUsY29udGFjdERhdGEpO1xyXG4gICAgICAgICAgICAkKCcuY29udGFjdFRhYmxlIHRib2R5JykuYXBwZW5kKHJlbmRlcik7XHJcbiAgICAgICAgICAgIHJvd051bSsrO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJvb3QuYmluZENvbnRhY3RDbGlja0FjdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYmluZENvbnRhY3RDbGlja0FjdGlvbiA9ZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgJCgnLmNvbnRhY3RUYWJsZSAuYnV0dG9uRGVsZXRlJykudW5iaW5kKCdjbGljaycpO1xyXG4gICAgICAgICQoJy5jb250YWN0VGFibGUgLmJ1dHRvbkRlbGV0ZScpLmJpbmQoJ2NsaWNrJyxyb290LmNvbnRhY3REZWxldGVDbGljayk7XHJcbiAgICAgICAgJCgnLmNvbnRhY3RUYWJsZSAuYnV0dG9uRWRpdCcpLnVuYmluZCgnY2xpY2snKTtcclxuICAgICAgICAkKCcuY29udGFjdFRhYmxlIC5idXR0b25FZGl0JykuYmluZCgnY2xpY2snLHJvb3QuY29udGFjdEVkaXRDbGljayk7XHJcblxyXG4gICAgfVxyXG4gICAgdGhpcy5jb250YWN0RGVsZXRlQ2xpY2s9ZnVuY3Rpb24gKGV2ZW50KXtcclxuICAgICAgICBsZXQgcm93PSQodGhpcykuY2xvc2VzdCgndHInKTtcclxuICAgICAgICBsZXQgaWQ9cm93LmZpbmQoJ2lucHV0W25hbWU9Y29udGFjdElkXScpLnZhbCgpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGlkKTtcclxuICAgICAgICByb290LlByb2ZpdENlbnRlci5jb250YWN0PXJvb3QuUHJvZml0Q2VudGVyLmNvbnRhY3QuZmlsdGVyKFxyXG4gICAgICAgICAgICBmdW5jdGlvbiAodmFsdWUsaW5kZXgsYXJyKXtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5pZCE9PWlkKjEpe1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAgdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc29sZS5sb2cocm9vdC5Qcm9maXRDZW50ZXIuY29udGFjdCk7XHJcbiAgICAgICAgcm93LnJlbW92ZSgpO1xyXG4gICAgICAgIHJvb3QucmVzZXRDb250YWN0VGFibGUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0Q29udGFjdFBvcHVwV29ya2Zsb3cgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIGNvbnRhY3RQb3B1cFdvcmtmbG93O1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRDb250YWN0UG9wdXBXb3JrZmxvdyA9IGZ1bmN0aW9uIChzdGF0dXMpIHtcclxuICAgICAgICBjb250YWN0UG9wdXBXb3JrZmxvdz1zdGF0dXM7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMuY29udGFjdEVkaXRDbGljaz1mdW5jdGlvbiAoZXZlbnQpe1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMpO1xyXG4gICAgICAgIGxldCByb3c9JCh0aGlzKS5jbG9zZXN0KCd0cicpO1xyXG4gICAgICAgIGxldCBpZD1yb3cuZmluZCgnaW5wdXRbbmFtZT1jb250YWN0SWRdJykudmFsKCk7XHJcbiAgICAgICAgY29uc29sZS5sb2coaWQpO1xyXG4gICAgICAgIHJvb3Quc2V0Q29udGFjdFBvcHVwV29ya2Zsb3coJ2VkaXQnKTtcclxuICAgICAgICBBUFAuQ29udGFjdFBvcFVwLmxvYWREYXRhKGlkKTtcclxuICAgIH1cclxuICAgIHRoaXMuY29udGFjdEFjdGlvbj1mdW5jdGlvbiAoY29udGFjdERhdGEpe1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCduYWggbW9zdCBrZWxsZW5lIG1lZyB2YWxhbWl0IGNzaW5hbG5pLicpXHJcbiAgICAgICAgaWYocm9vdC5nZXRDb250YWN0UG9wdXBXb3JrZmxvdygpPT0nbmV3Jyl7XHJcbiAgICAgICAgICAgIHJvb3QuYWRkQ29udGFjdChjb250YWN0RGF0YSk7XHJcbiAgICAgICAgfWVsc2UgaWYocm9vdC5nZXRDb250YWN0UG9wdXBXb3JrZmxvdygpPT0nZWRpdCcpe1xyXG4gICAgICAgICAgICByb290LmVkaXRDb250YWN0KGNvbnRhY3REYXRhLmlkLGNvbnRhY3REYXRhKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmFkZENvbnRhY3Q9ZnVuY3Rpb24gKGNvbnRhY3REYXRhKXtcclxuICAgICAgICAvKlxyXG4gICAgICAgIGZlbCBrZWxsIHZlbm5pIGEgc29yYmFcclxuICAgICAgICAgKi9cclxuICAgICAgICByb290LlByb2ZpdENlbnRlci5jb250YWN0LnB1c2goY29udGFjdERhdGEpO1xyXG4gICAgICAgIGNvbnRhY3REYXRhLnJvd051bT1yb290LlByb2ZpdENlbnRlci5jb250YWN0Lmxlbmd0aDtcclxuICAgICAgICBsZXQgdGVtcGxhdGU9JCgndGVtcGxhdGVbZGF0YS1uYW1lPVwicHJvZml0Q2VudGVyQ29udGFjdFRhYmxlUm93XCJdJykuaHRtbCgpXHJcbiAgICAgICAgbGV0IHJlbmRlcj1NdXN0YWNoZS5yZW5kZXIodGVtcGxhdGUsY29udGFjdERhdGEpO1xyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgLmNvbnRhY3RUYWJsZSB0Ym9keScpLmFwcGVuZChyZW5kZXIpO1xyXG4gICAgICAgIHJvb3QuYmluZENvbnRhY3RDbGlja0FjdGlvbigpO1xyXG4gICAgICAgIFRvYXN0LmVuYWJsZVRpbWVycyhmYWxzZSk7XHJcbiAgICAgICAgVG9hc3QuY3JlYXRlKFwiS2FwY3NvbGF0IHRhcnTDsyBob3p6w6FhZHZhIVwiLCBjb250YWN0RGF0YS5uYW1lK1wiIG5ldsWxIGthcG9jc29sYXR0YXJ0w7MgaG96esOhYWR2YVwiLCBUT0FTVF9TVEFUVVMuU1VDQ0VTUyw1MDAwKTtcclxuICAgIH1cclxuICAgIHRoaXMuZWRpdENvbnRhY3Q9ZnVuY3Rpb24gKGlkLGNvbnRhY3REYXRhKXtcclxuXHJcbiAgICAgICAgbGV0IG5ld0NvbnRhY3RzPVtdO1xyXG4gICAgICAgICQuZWFjaChyb290LlByb2ZpdENlbnRlci5nZXREYXRhKCdjb250YWN0JyksZnVuY3Rpb24gKGluZGV4KXtcclxuICAgICAgICAgICAgaWYodGhpcy5pZD09aWQpe1xyXG4gICAgICAgICAgICAgICAgbmV3Q29udGFjdHMucHVzaChjb250YWN0RGF0YSk7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgbmV3Q29udGFjdHMucHVzaCh0aGlzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJvb3QuUHJvZml0Q2VudGVyLmNvbnRhY3Q9bmV3Q29udGFjdHM7XHJcbiAgICAgICAgcm9vdC5yZXNldENvbnRhY3RUYWJsZSgpO1xyXG4gICAgICAgIFRvYXN0LmNyZWF0ZShcIkthcGNzb2xhdCBhZGF0YWkgbcOzZG9zw610dmEhXCIsIGNvbnRhY3REYXRhLm5hbWUrXCIgbmV2xbEga2Fwb2Nzb2xhdHRhcnTDsyBtw7Nkb3PDrXR2YVwiLCBUT0FTVF9TVEFUVVMuU1VDQ0VTUyw1MDAwKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqKioqKioqKioqKioqKlxyXG4gICAgICpcclxuICAgICAqIEFkZHJlc3MgZnVuY3Rpb25cclxuICAgICAqXHJcbiAgICAgKi9cclxuICAgIHRoaXMucmVzZXRBZGRyZXNzVGFibGU9ZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgJChDU1NTZWxlY3RvckZvcm0rJyAuYWRkcmVzc1RhYmxlIHRib2R5IHRyJykucmVtb3ZlKCk7XHJcbiAgICAgICAgcm9vdC5yZW5kZXJBZGRyZXNzKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlbmRlckFkZHJlc3M9ZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgbGV0IHJvd051bT0xO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdyZW5kZXJpbmdBZGRyZXNzJyk7XHJcbiAgICAgICAgJC5lYWNoKHJvb3QuUHJvZml0Q2VudGVyLmdldERhdGEoJ2FkZHJlc3MnKSxmdW5jdGlvbiAoKXtcclxuICAgICAgICAgICAgbGV0IGl0ZW1EYXRhPXRoaXM7XHJcbiAgICAgICAgICAgIGl0ZW1EYXRhLnJvd051bT1yb3dOdW07XHJcbiAgICAgICAgICAgIGxldCB0ZW1wbGF0ZT0kKCd0ZW1wbGF0ZVtkYXRhLW5hbWU9XCJwcm9maXRDZW50ZXJBZGRyZXNzVGFibGVSb3dcIl0nKS5odG1sKClcclxuICAgICAgICAgICAgZGVidWcoaXRlbURhdGEpO1xyXG4gICAgICAgICAgICBsZXQgcmVuZGVyPU11c3RhY2hlLnJlbmRlcih0ZW1wbGF0ZSxpdGVtRGF0YSk7XHJcbiAgICAgICAgICAgICQoJy5hZGRyZXNzVGFibGUgdGJvZHknKS5hcHBlbmQocmVuZGVyKTtcclxuICAgICAgICAgICAgcm93TnVtKys7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcm9vdC5iaW5kQWRkcmVzc0NsaWNrQWN0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5iaW5kQWRkcmVzc0NsaWNrQWN0aW9uID1mdW5jdGlvbiAoKXtcclxuICAgICAgICAkKCcuYWRkcmVzc1RhYmxlIC5idXR0b25EZWxldGUnKS51bmJpbmQoJ2NsaWNrJyk7XHJcbiAgICAgICAgJCgnLmFkZHJlc3NUYWJsZSAuYnV0dG9uRGVsZXRlJykuYmluZCgnY2xpY2snLHJvb3QuYWRkcmVzc0RlbGV0ZUNsaWNrKTtcclxuICAgICAgICAkKCcuYWRkcmVzc1RhYmxlIC5idXR0b25FZGl0JykudW5iaW5kKCdjbGljaycpO1xyXG4gICAgICAgICQoJy5hZGRyZXNzVGFibGUgLmJ1dHRvbkVkaXQnKS5iaW5kKCdjbGljaycscm9vdC5hZGRyZXNzRWRpdENsaWNrKTtcclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLmFkZHJlc3NEZWxldGVDbGljaz1mdW5jdGlvbiAoZXZlbnQpe1xyXG4gICAgICAgIGxldCByb3c9JCh0aGlzKS5jbG9zZXN0KCd0cicpO1xyXG4gICAgICAgIGxldCBpZD1yb3cuZmluZCgnaW5wdXRbbmFtZT1cImFkZHJlc3NJZFtdXCJdJykudmFsKCk7XHJcbiAgICAgICAgY29uc29sZS5sb2coaWQpO1xyXG4gICAgICAgIHJvb3QuUHJvZml0Q2VudGVyLmFkZHJlc3M9cm9vdC5Qcm9maXRDZW50ZXIuYWRkcmVzcy5maWx0ZXIoXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICh2YWx1ZSxpbmRleCxhcnIpe1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlLmlkIT1pZCkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHJvb3QuUHJvZml0Q2VudGVyLmFkZHJlc3MpO1xyXG4gICAgICAgIHJvdy5yZW1vdmUoKTtcclxuICAgICAgICByb290LnJlc2V0QWRkcmVzc1RhYmxlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldEFkZHJlc3NQb3B1cFdvcmtmbG93ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBhZGRyZXNzUG9wdXBXb3JrZmxvdztcclxuICAgIH1cclxuICAgIHRoaXMuc2V0QWRkcmVzc1BvcHVwV29ya2Zsb3cgPSBmdW5jdGlvbiAoc3RhdHVzKSB7XHJcbiAgICAgICAgYWRkcmVzc1BvcHVwV29ya2Zsb3c9c3RhdHVzO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLmFkZHJlc3NFZGl0Q2xpY2s9ZnVuY3Rpb24gKGV2ZW50KXtcclxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzKTtcclxuICAgICAgICBsZXQgcm93PSQodGhpcykuY2xvc2VzdCgndHInKTtcclxuICAgICAgICBsZXQgaWQ9cm93LmZpbmQoJ2lucHV0W25hbWU9XCJhZGRyZXNzSWRbXVwiXScpLnZhbCgpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGlkKTtcclxuICAgICAgICByb290LnNldEFkZHJlc3NQb3B1cFdvcmtmbG93KCdlZGl0Jyk7XHJcbiAgICAgICAgQVBQLkFkZHJlc3NQb3BVcC5sb2FkRGF0YShpZCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFkZHJlc3NBY3Rpb249ZnVuY3Rpb24gKGl0ZW1EYXRhKXtcclxuICAgICAgICBjb25zb2xlLmxvZygnbmFoIG1vc3Qga2VsbGVuZSBtZWcgdmFsYW1pdCBjc2luYWxuaS4nKVxyXG4gICAgICAgIGlmKHJvb3QuZ2V0QWRkcmVzc1BvcHVwV29ya2Zsb3coKT09J25ldycpe1xyXG4gICAgICAgICAgICByb290LmFkZEFkZHJlc3MoaXRlbURhdGEpO1xyXG4gICAgICAgIH1lbHNlIGlmKHJvb3QuZ2V0QWRkcmVzc1BvcHVwV29ya2Zsb3coKT09J2VkaXQnKXtcclxuICAgICAgICAgICAgcm9vdC5lZGl0QWRkcmVzcyhpdGVtRGF0YS5pZCxpdGVtRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5hZGRBZGRyZXNzPWZ1bmN0aW9uIChJdGVtRGF0YSl7XHJcbiAgICAgICAgLypcclxuICAgICAgICBmZWwga2VsbCB2ZW5uaSBhIHNvcmJhXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcm9vdC5Qcm9maXRDZW50ZXIuYWRkcmVzcy5wdXNoKEl0ZW1EYXRhKTtcclxuICAgICAgICBJdGVtRGF0YS5yb3dOdW09cm9vdC5Qcm9maXRDZW50ZXIuYWRkcmVzcy5sZW5ndGg7XHJcbiAgICAgICAgbGV0IHRlbXBsYXRlPSQoJ3RlbXBsYXRlW2RhdGEtbmFtZT1cInByb2ZpdENlbnRlckFkZHJlc3NUYWJsZVJvd1wiXScpLmh0bWwoKVxyXG4gICAgICAgIGxldCByZW5kZXI9TXVzdGFjaGUucmVuZGVyKHRlbXBsYXRlLEl0ZW1EYXRhKTtcclxuICAgICAgICAkKENTU1NlbGVjdG9yRm9ybSsnIC5hZGRyZXNzVGFibGUgdGJvZHknKS5hcHBlbmQocmVuZGVyKTtcclxuICAgICAgICByb290LmJpbmRBZGRyZXNzQ2xpY2tBY3Rpb24oKTtcclxuICAgICAgICBUb2FzdC5lbmFibGVUaW1lcnMoZmFsc2UpO1xyXG4gICAgICAgIFRvYXN0LmNyZWF0ZShcIkPDrW0gaG96esOhYWR2YSFcIiwgSXRlbURhdGEuc3RyZWV0K1wiIGhvenrDoWFkdmFcIiwgVE9BU1RfU1RBVFVTLlNVQ0NFU1MsNTAwMCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmVkaXRBZGRyZXNzPWZ1bmN0aW9uIChpZCxpdGVtRGF0YSl7XHJcblxyXG4gICAgICAgIGxldCBuZXdJdGVtPVtdO1xyXG4gICAgICAgICQuZWFjaChyb290LlByb2ZpdENlbnRlci5nZXREYXRhKCdhZGRyZXNzJyksZnVuY3Rpb24gKGluZGV4KXtcclxuICAgICAgICAgICAgaWYodGhpcy5pZD09aWQpe1xyXG4gICAgICAgICAgICAgICAgbmV3SXRlbS5wdXNoKGl0ZW1EYXRhKTtcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICBuZXdJdGVtLnB1c2godGhpcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByb290LlByb2ZpdENlbnRlci5hZGRyZXNzPW5ld0l0ZW07XHJcbiAgICAgICAgcm9vdC5yZXNldEFkZHJlc3NUYWJsZSgpO1xyXG4gICAgICAgIFRvYXN0LmNyZWF0ZShcImPDrW0gYWRhdGFpIG3Ds2Rvc8OtdHZhIVwiLCBpdGVtRGF0YS5zdHJlZXQrXCIgbcOzZG9zw610dmFcIiwgVE9BU1RfU1RBVFVTLlNVQ0NFU1MsNTAwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbml0Vmlld0xpc3QgPSBmdW5jdGlvbiAob3B0aW9ucz17fSkge1xyXG4gICAgICAgIGRlYnVnKCdsaXN0dmlldyBpbmljaWFsaXphdGlvbicpO1xyXG4gICAgICAgIGRhdGFUYWJsZUNTU1NlbGVjdG9yPU9wdHMuY29udGFpbmVyQ3NzU2VsZWN0b3IrJyAuZGF0YVRhYmxlJzsgLy9cclxuXHJcbiAgICAgICAgbGV0IGNvbE51bT0kKGRhdGFUYWJsZUNTU1NlbGVjdG9yKycgdGhlYWQgdGgnKS5sZW5ndGg7IC8vYnV0dG9ucyBpbnNlcnQgcG9zaXRpb24gbmVlZFxyXG4gICAgICAgIEFQUC5zZXRPcHRzKHtcclxuICAgICAgICAgICAgZGF0YXRhYmxlQWN0aW9uQnV0dG9uQ2xpY2tDYWxsQmFjazpyb290LmNsaWNrTmV3LFxyXG4gICAgICAgICAgICBkYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGlja0NhbGxCYWNrOnJvb3QuZGF0YXRhYmxlUm93QWN0aW9uQnV0dG9uQ2xpY2ssXHJcblxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgbGV0IG9yZGVyRGlyZWN0aXZlPU9wdHMuZGF0YVRhYmxlLm9yZGVyRGlyZWN0aXZlO1xyXG4gICAgICAgIGlmKHR5cGVvZiBvcHRpb25zWydvcmRlckRpcmVjdGl2ZSddIT0ndW5kZWZpbmVkJyl7XHJcbiAgICAgICAgICAgIG9yZGVyRGlyZWN0aXZlPW9wdGlvbnNbJ29yZGVyRGlyZWN0aXZlJ107XHJcbiAgICAgICAgfVxyXG4gICAgICAgICQoZGF0YVRhYmxlQ1NTU2VsZWN0b3IpLkRhdGFUYWJsZSgge1xyXG4gICAgICAgICAgICBsYW5ndWFnZToge1xyXG4gICAgICAgICAgICAgICAgdXJsOiAnLy9jZG4uZGF0YXRhYmxlcy5uZXQvcGx1Zy1pbnMvMS4xMC4yNC9pMThuL0h1bmdhcmlhbi5qc29uJ1xyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgLy9cImFqYXhcIjogXCJ7e2Fzc2V0KCdleGFwbWxlMi5qc29uJyl9fVwiLFxyXG4gICAgICAgICAgICBcImFqYXhcIjogT3B0cy5VUkwuZ2V0RGF0YVRhYmxlQ29udGVudCxcclxuICAgICAgICAgICAgXCJjb2x1bW5EZWZzXCI6IFtcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBcInRhcmdldHNcIjogY29sTnVtLTEsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJyZW5kZXJcIjogZnVuY3Rpb24gKCBkYXRhLCB0eXBlLCByb3cgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBidXR0b25zPUFQUC5kYXRhdGFibGVBZGRSb3dUcmFzaEJ1dHRvbigwLGFyZ3VtZW50cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnMrPUFQUC5kYXRhdGFibGVBZGRSb3dFZGl0QnV0dG9uKDAsYXJndW1lbnRzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1dHRvbnM7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgXCJ0YXJnZXRzXCI6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJyZW5kZXJcIjogZnVuY3Rpb24gKCBkYXRhLCB0eXBlLCByb3cgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlID09PSBcInNvcnRcIiA/IGRhdGEubGF0aW5pc2UoKSA6IGRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAvL3sgXCJ2aXNpYmxlXCI6IGZhbHNlLCAgXCJ0YXJnZXRzXCI6IFsgMCBdIH1cclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgYnV0dG9uczp7XHJcbiAgICAgICAgICAgICAgICBidXR0b25zOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgJ2V4Y2VsJywncGRmJyxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZDogJ3ByaW50JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy90ZXh0OiAnUHJpbnQgY3VycmVudCBwYWdlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ3RpdGxlIGN1c3RvbSB0ZXh0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ21lc3NhZ2VUb3AnOiAnTWVzc2FnZSBPbiBUb3AnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvUHJpbnQ6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIC8qKi9cclxuXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnw5pqIGZlbHZpdGVsZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tc3VjY2VzcyBuZXdJdGVtJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cjp7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOjEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGI6MlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnOiduZXdJdGVtJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0OiBmdW5jdGlvbihhcGksIG5vZGUsIGNvbmZpZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChub2RlKS5yZW1vdmVDbGFzcygndWktYnV0dG9uJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBmdW5jdGlvbiAoIGUsIGR0LCBub2RlLCBjb25maWcgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUFAuZGF0YXRhYmxlQWN0aW9uQnV0dG9uQ2xpY2tDYWxsQmFjayhhcmd1bWVudHMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY29uc29sZS5sb2coZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGNvbmZpZyk7Ki9cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIFwiY29sdW1uc1wiOiBbXHJcbiAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcImlkXCIgfSxcclxuICAgICAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwibmFtZVwiIH0sXHJcbiAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcImhvb3JleWNhSWRcIiB9LFxyXG4gICAgICAgICAgICAgICAgeyBcImRhdGFcIjogXCJuYW1lSWRcIiB9LFxyXG4gICAgICAgICAgICAgICAgeyBcImRhdGFcIjogXCJjcmVhdGVkX2F0XCIgfSxcclxuICAgICAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIFwib3JkZXJcIjogb3JkZXJEaXJlY3RpdmUsXHJcbiAgICAgICAgICAgIC8vXCJzdGF0ZVNhdmVcIjogdHJ1ZSxcclxuICAgICAgICAgICAgXCJkcmF3Q2FsbGJhY2tcIjogZnVuY3Rpb24oIHNldHRpbmdzICkge1xyXG4gICAgICAgICAgICAgICAgQVBQLmRhdGF0YWJsZUFkZFJvd0FjdGlvbihkYXRhVGFibGVDU1NTZWxlY3Rvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9ICk7XHJcbiAgICAgICAgZGVidWcoJ2xpc3R2aWV3IGVuZCcpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGljaz1mdW5jdGlvbiAoZXZlbnQpe1xyXG4gICAgICAgIGRlYnVnKCdkYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGljaycpO1xyXG4gICAgICAgIGxldCBub2RlPSQoZXZlbnRbMF0uY3VycmVudFRhcmdldCk7XHJcbiAgICAgICAgbGV0IHJvdz0kKGRhdGFUYWJsZUNTU1NlbGVjdG9yKS5EYXRhVGFibGUoKS5yb3cobm9kZS5wYXJlbnRzKCd0cicpKTtcclxuICAgICAgICBsZXQgcm93RGF0YT1yb3cuZGF0YSgpO1xyXG4gICAgICAgIGxldCBhY3Rpb25OYW1lPSdkYXRhdGFibGVSb3dBY3Rpb24nK25vZGUuZGF0YSgnYnV0dG9udHlwZScpLmNhcGl0YWxpemUoKTtcclxuICAgICAgICBpZiAodHlwZW9mIHJvb3RbYWN0aW9uTmFtZV0gPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgICByZXR1cm4gcm9vdFthY3Rpb25OYW1lXShyb3dEYXRhLG5vZGUpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5kYXRhdGFibGVSb3dBY3Rpb25FZGl0PWZ1bmN0aW9uIChyb3dEYXRhLG5vZGUpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnZGF0YXRhYmxlUm93QWN0aW9uRWRpdCBDYWxsZWQnKTtcclxuICAgICAgICAvL09wdHMub25BZnRlckluaXRWaWV3RGV0YWlscz1yb290LmF1dG9maWxsRGV0YWlscztcclxuICAgICAgICBsZXQgYWpheFVybD1PcHRzLlVSTC5lZGl0LnJlcGxhY2UoJyVpZCUnLHJvd0RhdGEuaWQpO1xyXG4gICAgICAgIC8qXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhPcHRzLlVSTCk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhhamF4VXJsKTtcclxuICAgICAgICAqL1xyXG4gICAgICAgIEFQUC5sb2FkTWFpbkNvbnRlbnQoYWpheFVybCxyb290LmluaXRWaWV3RGV0YWlscyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2RhdGF0YWJsZVJvd0FjdGlvbkVkaXQgRW5kJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhdGF0YWJsZVJvd0FjdGlvbkRlbGV0ZT1mdW5jdGlvbiAocm93RGF0YSxub2RlKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2RhdGF0YWJsZVJvd0FjdGlvbkRlbGV0ZSBDYWxsZWQnKTtcclxuICAgICAgICBsZXQgcm93PSQoZGF0YVRhYmxlQ1NTU2VsZWN0b3IpLkRhdGFUYWJsZSgpLnJvdyhub2RlLnBhcmVudHMoJ3RyJykpO1xyXG4gICAgICAgIGxldCBhamF4RGF0YT17fTtcclxuICAgICAgICBsZXQgYWpheFVybD1PcHRzLlVSTC5kZXN0cm95LnJlcGxhY2UoJyVpZCUnLHJvd0RhdGEuaWQpO1xyXG4gICAgICAgIGFqYXhEYXRhLl90b2tlbj0kKCdpbnB1dFtuYW1lPV90b2tlbl0nKS52YWwoKTtcclxuICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICB1cmw6YWpheFVybCxcclxuICAgICAgICAgICAgZGF0YTphamF4RGF0YSxcclxuICAgICAgICAgICAgbWV0aG9kOlwiREVMRVRFXCIsXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6ZnVuY3Rpb24gKGRhdGEpe1xyXG4gICAgICAgICAgICAgICAgaWYoZGF0YS5zdWNjZXNzPT10cnVlKXtcclxuICAgICAgICAgICAgICAgICAgICByb3cucmVtb3ZlKCkuZHJhdygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2xpY2tTYXZlQnV0dG9uPWZ1bmN0aW9uIChldmVudCkge1xyXG4gICAgICAgIGRlYnVnKCdTYXZlIGNsaWNrZWQnKTtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGRlYnVnKENTU1NlbGVjdG9yRm9ybSk7XHJcbiAgICAgICAgZGVidWcoJChDU1NTZWxlY3RvckZvcm0pKTtcclxuICAgICAgICBpZiAoJChDU1NTZWxlY3RvckZvcm0pWzBdLmNoZWNrVmFsaWRpdHkoKSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ3ZhbGlkYXRvbiBmYWxzZScpO1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCd2YWxpZGF0b24gb2snKTtcclxuICAgICAgICAgICAgLy9kbyB5b3VyIGFqYXggc3VibWl0aW9uIGhlcmVcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGFqYXhEYXRhPXJvb3QuZm9ybURhdGFUb0RhdGFPYmplY3RBUElDYWxsKENTU1NlbGVjdG9yRm9ybSk7XHJcblxyXG4gICAgICAgIGxldCBhamF4VXJsPU9wdHMuVVJMLnN0b3JlO1xyXG4gICAgICAgIGxldCBhamF4TWV0aG9kPVwiUE9TVFwiO1xyXG4gICAgICAgIGlmKHJvb3QuUHJvZml0Q2VudGVyLmlkKXtcclxuICAgICAgICAgICAgYWpheFVybD1PcHRzLlVSTC51cGRhdGUucmVwbGFjZSgnJWlkJScscm9vdC5Qcm9maXRDZW50ZXIuaWQpO1xyXG4gICAgICAgICAgICAvL2FqYXhNZXRob2Q9XCJQVVRcIjtcclxuICAgICAgICAgICAgLy9hamF4RGF0YT1uZXcgRm9ybURhdGEoJChDU1NTZWxlY3RvckZvcm0pWzBdKTtcclxuICAgICAgICAgICAgYWpheERhdGEuYXBwZW5kKCdfbWV0aG9kJywnUFVUJyk7XHJcbiAgICAgICAgfVxyXG4vKlxyXG4gICAgICAgIGRlYnVnKGFqYXhVcmwpO1xyXG4gICAgICAgIGRlYnVnKGFqYXhNZXRob2QpO1xyXG4gICAgICAgIGRlYnVnKGFqYXhEYXRhLmVudHJpZXMoKSk7XHJcbiAgICAgICAgZm9yICh2YXIgcGFpciBvZiBhamF4RGF0YS5lbnRyaWVzKCkpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2cocGFpclswXSsgJywgJyArIHBhaXJbMV0pO1xyXG4gICAgICAgIH1cclxuKi9cclxuXHJcbiAgICAgICAgY29uc29sZS50YWJsZShPYmplY3QuZnJvbUVudHJpZXMoYWpheERhdGEpKTtcclxuXHJcbiAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgdXJsOmFqYXhVcmwsXHJcbiAgICAgICAgICAgIGRhdGE6YWpheERhdGEsXHJcbiAgICAgICAgICAgIHR5cGU6YWpheE1ldGhvZCxcclxuICAgICAgICAgICAgY29udGVudFR5cGU6ZmFsc2UsXHJcbiAgICAgICAgICAgIHByb2Nlc3NEYXRhOiBmYWxzZSxcclxuICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgJ1gtQ1NSRi1UT0tFTic6ICQoJ2lucHV0W25hbWU9XCJfdG9rZW5cIl0nKS52YWwoKVxyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgc3VjY2VzczpmdW5jdGlvbiAoZGF0YSl7XHJcbiAgICAgICAgICAgICAgICBkZWJ1ZyhkYXRhKTtcclxuICAgICAgICAgICAgICAgIGlmKGRhdGEuc3VjY2Vzcz09dHJ1ZSl7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vT3B0cy5vbkFmdGVySW5pdFZpZXdEZXRhaWxzPXJvb3QuYXV0b2ZpbGxEZXRhaWxzO1xyXG4gICAgICAgICAgICAgICAgICAgIE9wdHMuZGF0YVRhYmxlLm9yZGVyRGlyZWN0aXZlPVswLCAnZGVzYyddO1xyXG4gICAgICAgICAgICAgICAgICAgIFRvYXN0LmNyZWF0ZShcIlNpa2VyZXMgcsO2Z3rDrXTDqXMhXCIsIGFqYXhEYXRhLmdldCgnbmFtZScpK1wiIG5ldsWxIGJlc3rDoWxsbMOtdMOzIGVsbWVudHZlXCIsIFRPQVNUX1NUQVRVUy5TVUNDRVNTLDUwMDApO1xyXG4gICAgICAgICAgICAgICAgICAgIEFQUC5sb2FkTWFpbkNvbnRlbnQoT3B0cy5VUkwuaW5kZXgrJz9pbml0PTAnLHJvb3QuaW5pdFZpZXdMaXN0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZm9ybURhdGFUb0RhdGFPYmplY3RBUElDYWxsID0gZnVuY3Rpb24gKENTU1NlbGVjdG9yRm9ybSkge1xyXG4gICAgICAgIGxldCBhamF4RGF0YT1uZXcgRm9ybURhdGEoJChDU1NTZWxlY3RvckZvcm0pWzBdKTtcclxuLypcclxuICAgICAgICAkLmVhY2goYWpheERhdGEuZ2V0QWxsKCdwcm9kdWN0R3JvdXAnKSxmdW5jdGlvbihrZXksdmFsdWUpe1xyXG4gICAgICAgICAgICBhamF4RGF0YS5hcHBlbmQoJ3Byb2R1Y3RHcm91cFtdJyx2YWx1ZSk7XHJcbiAgICAgICAgfSlcclxuKi9cclxuICAgICAgICAkLmVhY2goYWpheERhdGEuZ2V0QWxsKCdjb250YWN0SWQnKSxmdW5jdGlvbihrZXksdmFsdWUpe1xyXG4gICAgICAgICAgICBhamF4RGF0YS5hcHBlbmQoJ2NvbnRhY3RJZFtdJyx2YWx1ZSk7XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgYWpheERhdGEuYXBwZW5kKCdfdG9rZW4nLCQoJ2lucHV0W25hbWU9X3Rva2VuXScpLnZhbCgpKTtcclxuXHJcbiAgICAgICAgJChDU1NTZWxlY3RvckZvcm0rJyBpbnB1dFtkYXRhLWlucHV0bWFza10nKS5lYWNoKGZ1bmN0aW9uICgpe1xyXG4gICAgICAgICAgICBsZXQgaW5kZXhLZXk9JCh0aGlzKS5hdHRyKCduYW1lJyk7XHJcbiAgICAgICAgICAgIGlmKGFqYXhEYXRhLmdldChpbmRleEtleSkpe1xyXG4gICAgICAgICAgICAgICAgYWpheERhdGEuc2V0KGluZGV4S2V5LGFqYXhEYXRhLmdldChpbmRleEtleSkucmVwbGFjZSgvW18gXSskL2csXCJcIikpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgJC5lYWNoKGFqYXhEYXRhLmdldEFsbCgnc3VwcGxpZXInKSxmdW5jdGlvbihrZXksdmFsdWUpe1xyXG4gICAgICAgICAgICBhamF4RGF0YS5hcHBlbmQoJ3N1cHBsaWVyW10nLHZhbHVlKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHJldHVybiBhamF4RGF0YTtcclxuICAgIH1cclxuICAgIHRoaXMuY29uc3RydWN0KG9wdGlvbnMsIFByb2ZpdENlbnRlckl0ZW0pO1xyXG5cclxufVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFHLE9BQU9BLHFCQUFxQixLQUFHLFdBQVcsRUFBQztFQUFBLElBQ3BDQSxzQkFBcUIsMEJBQUFDLFVBQUE7SUFFdkI7QUFDUjtBQUNBO0lBQ1EsU0FBQUMsdUJBQWFDLElBQUksRUFBQ0MsT0FBTyxFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUFBQyxlQUFBLE9BQUFKLHNCQUFBO01BQ3ZCRyxLQUFBLEdBQUFFLFVBQUEsT0FBQUwsc0JBQUEsR0FBTUMsSUFBSSxFQUFDQyxPQUFPO01BQ2xCLElBQUcsT0FBT0MsS0FBQSxDQUFLRyxPQUFPLEtBQUksV0FBVyxFQUFDO1FBQ2xDSCxLQUFBLENBQUtHLE9BQU8sR0FBQyxFQUFFO01BQ25CO01BQ0EsSUFBRyxPQUFPSCxLQUFBLENBQUtJLE9BQU8sS0FBSSxXQUFXLEVBQUM7UUFDbENKLEtBQUEsQ0FBS0ksT0FBTyxHQUFDLEVBQUU7TUFDbkI7TUFDQUMsT0FBTyxDQUFDQyxHQUFHLENBQUNOLEtBQUEsQ0FBS08sV0FBVyxDQUFDQyxJQUFJLEdBQUMscUJBQXFCLENBQUM7TUFBQyxPQUFBUixLQUFBO0lBQzdEO0lBQUNTLFNBQUEsQ0FBQVosc0JBQUEsRUFBQUQsVUFBQTtJQUFBLE9BQUFjLFlBQUEsQ0FBQWIsc0JBQUE7RUFBQSxFQWQrQmMsU0FBUztFQWU1QztFQUNEQyxNQUFNLENBQUNqQixxQkFBcUIsR0FBQ0Esc0JBQXFCO0FBQ3REO0FBRUFpQixNQUFNLENBQUND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\n//# sourceURL=webpack-internal:///./resources/js/admin/profitCenter.js\n\n}");
|
|
|
|
/***/ },
|
|
|
|
/***/ "./resources/js/admin/supplier.js"
|
|
/*!****************************************!*\
|
|
!*** ./resources/js/admin/supplier.js ***!
|
|
\****************************************/
|
|
() {
|
|
|
|
eval("{function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nif (typeof Supplier === 'undefined') {\n var _Supplier = /*#__PURE__*/function (_DataModel) {\n /*\r\n * Constructor\r\n */\n function _Supplier(data, options) {\n var _this;\n _classCallCheck(this, _Supplier);\n _this = _callSuper(this, _Supplier, [data, options]);\n if (typeof _this.contact === \"undefined\") {\n _this.contact = [];\n }\n console.log('Supplier constructor called');\n return _this;\n }\n _inherits(_Supplier, _DataModel);\n return _createClass(_Supplier);\n }(DataModel);\n ;\n window.Supplier = _Supplier;\n}\nwindow.SupplierAdmin = function (options, SupplierItem) {\n /*\r\n * Variables accessible\r\n * in the class\r\n */\n var Opts = {\n token: null,\n containerCssSelector: '.containerSupplier',\n testMode: false,\n URL: {\n getDataTableContent: '',\n index: '',\n show: '',\n edit: '',\n create: '',\n store: '',\n update: '',\n destroy: '',\n attachFile: '',\n detachFile: ''\n },\n dataTable: {\n orderDirective: [1, 'asc']\n },\n onAfterInitViewDetails: function onAfterInitViewDetails() {}\n };\n var Supplier = {};\n var root = this;\n var contactPopupWorkflow = 'new';\n /*\r\n * Constructor\r\n */\n this.construct = function (options, SupplierItem) {\n console.log('SupplierAdmin constructor called');\n $.extend(Opts, options);\n if (!SupplierItem) {\n console.log('supplier letre kellet hozni ');\n if (!APP.Supplier) {\n APP.Supplier = new window.Supplier();\n }\n root.Supplier = APP.Supplier;\n }\n };\n this.getOpts = function () {\n return Opts;\n };\n this.formDataToDataObjectAPICallOld = function (CSSSelector) {\n var data = new FormData(document.querySelector(CSSSelector));\n //let formJSON = Object.fromEntries(data.entries());\n var formJSON = {};\n data.forEach(function (value, key) {\n // Reflect.has in favor of: formJSON.hasOwnProperty(key)\n if (!Reflect.has(formJSON, key)) {\n formJSON[key] = value;\n return;\n }\n if (!Array.isArray(formJSON[key])) {\n formJSON[key] = [formJSON[key]];\n }\n formJSON[key].push(value);\n });\n $(CSSSelector + ' input[data-inputmask]').each(function () {\n if (formJSON[$(this).attr('name')]) {\n formJSON[$(this).attr('name')] = formJSON[$(this).attr('name')].replace(/[_ ]+$/g, \"\");\n }\n });\n //formJSON.productGroups=$(\".productCategorySelect\").select2().val();\n\n /*Multiselect or checkbox to array:\r\n ajaxData['productGroup']=$(\".productCategorySelect\").select2().val();\r\n formJSON.multiselectName = data.getAll('multiselectName');\r\n $.each(formJSON, function (item, value) {\r\n formJSON[$.lcFirst(item.replace('contact', ''))] = value;\r\n delete formJSON[item];\r\n });\r\n if(formJSON.phone){\r\n formJSON.phone=formJSON.phone.replaceAll('_','');\r\n }\r\n if(formJSON.email){\r\n formJSON.email=formJSON.email.replaceAll('_','');\r\n }\r\n */\n return formJSON;\n };\n this.formDataToDataObjectAPICall = function (CSSSelectorForm) {\n var ajaxData = new FormData($(CSSSelectorForm)[0]);\n $.each(ajaxData.getAll('profitCenter'), function (key, value) {\n ajaxData.append('profitCenter[]', value);\n });\n $.each(ajaxData.getAll('productGroup'), function (key, value) {\n ajaxData.append('productGroup[]', value);\n });\n $.each(ajaxData.getAll('supplierService'), function (key, value) {\n ajaxData.append('supplierService[]', value);\n });\n $.each(ajaxData.getAll('contactId'), function (key, value) {\n ajaxData.append('contactId[]', value);\n });\n ajaxData.append('_token', $('input[name=_token]').val());\n $(CSSSelectorForm + ' input[data-inputmask]').each(function () {\n var indexKey = $(this).attr('name');\n if (ajaxData.get(indexKey)) {\n ajaxData.set(indexKey, ajaxData.get(indexKey).replace(/[_ ]+$/g, \"\"));\n }\n });\n return ajaxData;\n };\n this.clickSaveButton = function (event) {\n debug('Save clicked');\n var CSSSelectorForm = Opts.containerCssSelector + ' .supplierForm';\n event.preventDefault();\n if ($(CSSSelectorForm + ' input[name=\"canSeeInOrder\"]').val() == 1 && $(CSSSelectorForm)[0].checkValidity() === false) {\n console.log('validaton false');\n event.stopPropagation();\n return;\n } else {\n console.log('validaton ok');\n //do your ajax submition here\n }\n var ajaxData = root.formDataToDataObjectAPICall(CSSSelectorForm);\n var ajaxUrl = Opts.URL.store;\n var ajaxMethod = \"POST\";\n if (root.Supplier.id) {\n ajaxUrl = Opts.URL.update.replace('%id%', root.Supplier.id);\n //ajaxMethod=\"PUT\";\n //ajaxData=new FormData($(CSSSelectorForm)[0]);\n ajaxData.append('_method', 'PUT');\n }\n debug(ajaxMethod);\n debug(ajaxData);\n $.ajax({\n url: ajaxUrl,\n data: ajaxData,\n type: ajaxMethod,\n contentType: false,\n processData: false,\n headers: {\n 'X-CSRF-TOKEN': $('input[name=\"_token\"]').val()\n },\n success: function success(data) {\n debug(data);\n if (data.success == true) {\n //Opts.onAfterInitViewDetails=root.autofillDetails;\n Opts.dataTable.orderDirective = [0, 'desc'];\n Toast.create(\"Sikeres rögzítés!\", ajaxData.get('name') + \" nevű beszálllító elmentve\", TOAST_STATUS.SUCCESS, 5000);\n APP.loadMainContent(Opts.URL.index + '?init=0', root.initViewList);\n }\n }\n });\n };\n this.setDetailsViewData = function () {\n debug('setDetailsViewData');\n console.log(Supplier);\n var CSSSelectorForm = Opts.containerCssSelector + ' .supplierForm';\n var needToSet = ['name', 'hooreycaId', 'nameId', 'orderEmail', 'orderEmail2', 'address', 'mailingAddress', 'phone', 'fax', 'customerServicePhone', 'name22', 'openHours', 'ordersDeadline', 'minOrderValue'];\n $.each(needToSet, function () {\n if (typeof root.Supplier[this] != 'undefined') {\n $(CSSSelectorForm + ' input[name=' + this + ']').val(root.Supplier[this]);\n $(CSSSelectorForm + ' textarea[name=' + this + ']').val(root.Supplier[this]);\n }\n });\n if (typeof root.Supplier['note'] != 'undefined') {\n $(CSSSelectorForm + ' textarea[name=note]').val(root.Supplier.note);\n }\n if (typeof root.Supplier['emailAttachmentType'] != 'undefined') {\n $(CSSSelectorForm + ' input[name=emailAttachmentType][value=' + root.Supplier['emailAttachmentType'] + ']').prop('checked', true);\n }\n $(CSSSelectorForm + ' *[data-toggle=canSee][data-title=' + root.Supplier.canSee + ']').click();\n $(CSSSelectorForm + ' *[data-toggle=canSeeInOrder][data-title=' + root.Supplier.canSeeInOrder + ']').click();\n $(CSSSelectorForm + ' *[data-toggle=hooreycaDataActive][data-title=' + root.Supplier.hooreycaDataActive + ']').click();\n var productGroup = [];\n $.each(root.Supplier.product_group, function () {\n productGroup.push(this.name);\n });\n $(CSSSelectorForm + ' .productCategorySelect').val(productGroup).change();\n var service = [];\n $.each(root.Supplier.service, function () {\n service.push(this.name);\n });\n $(CSSSelectorForm + ' .serviceSelect').val(service).change();\n var profitCenter = [];\n $.each(root.Supplier.profit_center, function () {\n profitCenter.push(this.name);\n });\n //$(CSSSelectorForm+' .profitCenterSelect').val(profitCenter).change();\n //debug(profitCenter);\n $.each(profitCenter, function () {\n $('input[value=\"' + $.escapeSelector(this) + '\"]').prop(\"checked\", true);\n });\n if (typeof root.Supplier['logoFile'] != 'undefined' && root.Supplier['logoFile']) {\n $(CSSSelectorForm + ' img.imageLogo').attr('src', root.Supplier['logoFile']);\n }\n\n //debug(APP.SupplierAdmin.formDataToDataObjectAPICall('.supplierForm')['productGroup']);\n //$('[name=productGroup]').val(['Büféáru_édesipari_termékek','Tojás']).change();\n //root.setDetailsViewData();\n };\n this.initViewDetails = function (options, SupplierItem) {\n debug('**call initViewDetails ');\n if (!APP.ContactPopUp) {\n console.log('nincs APP.ContactPopUp');\n APP.ContactPopUp = new window.ContactPopUp();\n } else {\n console.log('mar van APP.ContactPopUp');\n }\n APP.ContactPopUp.init({\n active: true,\n onAfterSave: root.contactAction\n });\n root.renderContact();\n $('.supplierForm .buttonNewContact').bind('click', function () {\n APP.SupplierAdmin.setContactPopupWorkflow('new');\n APP.ContactPopUp.clearData();\n APP.ContactPopUp.show();\n });\n $('[data-toggle=\"tooltip\"]').tooltip();\n initRadioButtons();\n $(\":input\").inputmask({\n \"onincomplete\": function onincomplete() {\n console.log($(this).data('required'));\n if ($(this).val().length > 0 || $(this).data('required') === true) {\n $(this).addClass('is-invalid');\n }\n },\n \"oncomplete\": function oncomplete() {\n $(this).removeClass('is-invalid');\n $(this).addClass('is-valid');\n },\n \"oncleared\": function oncleared() {\n console.log('cleared');\n $(this).removeClass('is-invalid');\n }\n });\n $('form.supplierForm button.FormSaveButton').off('click');\n $('form.supplierForm button.FormSaveButton').on('click', root.clickSaveButton);\n root.setDetailsViewData();\n $(\".productCategorySelect\").select2();\n $(\".serviceSelect\").select2({\n tags: true,\n createTag: function createTag(params) {\n var term = $.trim(params.term);\n if (term === '') {\n return null;\n }\n return {\n id: term,\n text: term,\n newTag: true // add additional parameters\n };\n }\n });\n\n //$(\".profitCenterSelect\").select2();\n $(\"input[name=logoFile]\").change(function () {\n setImageFromLocal(this, Opts.containerCssSelector + ' .imageLogo');\n });\n $('form.supplierForm .profitCenterSelectCheckboxAll').off('click');\n $('form.supplierForm .profitCenterSelectCheckboxAll').on('click', function () {\n //console.log();\n //let checked=$(this).is(\":checked\")\n $('form.supplierForm input.profitCenterSelectCheckbox').prop('checked', $(this).is(\":checked\"));\n });\n root.renderAttachment();\n //Opts.onAfterInitViewDetails();\n root.initFileAttachmentFeature();\n debug('**end initViewDetails ');\n };\n this.selectedUploadFileToggle = function (fileInput) {\n /*\r\n console.log(fileInput.attr('name'));\r\n console.log(fileInput[0].files[0]);\r\n console.log(fileInput[0].files[0].name);\r\n */\n if (fileInput) {\n $('.containerFileUpload').addClass('d-none');\n if (fileInput[0].files[0]) {\n $('.containerUploadedFileName').text(fileInput[0].files[0].name);\n }\n $('.containerFileUploadStarted').removeClass('d-none');\n $('.containerUploadedSpinner').removeClass('d-none');\n } else {\n $('.containerUploadedFileName').text('');\n $('.custom-file-label.selected').text('');\n $('.containerFileUploadStarted').addClass('d-none');\n $('.uploadStatusRow').addClass('d-none');\n $('.containerFileUpload').removeClass('d-none');\n }\n };\n this.initFileAttachmentFeature = function () {\n console.log('-------initFileAttachmentFeature-----------');\n if (root.Supplier.id) {\n $('.containerFileUpload').removeClass('d-none');\n $('.containerFileUploadNone').addClass('d-none');\n }\n $(Opts.containerCssSelector + ' .buttonUpload').off('click');\n $(Opts.containerCssSelector + ' .buttonUpload').on('click', function () {\n console.group('-------buttonUpload-----------');\n var fileInput = $('#inputGroupAttacheFile');\n if (fileInput[0].files.length < 1) {\n Toast.create(\"Hiba!\", 'Vállaszon ki fájlt!', TOAST_STATUS.DANGER, 10000);\n return;\n }\n console.log($(Opts.containerCssSelector).find('form.supplierForm')[0]);\n var data = new FormData($(Opts.containerCssSelector).find('form.supplierForm')[0]);\n data.append(fileInput.attr('name'), fileInput[0].files[0]);\n root.selectedUploadFileToggle(fileInput);\n var ajaxUrl = Opts.URL.attachFile.replace('%id%', root.Supplier.id);\n console.groupEnd();\n $.ajax({\n url: ajaxUrl,\n data: data,\n type: 'POST',\n contentType: false,\n processData: false,\n beforeSend: function beforeSend() {},\n success: function success(data) {\n console.log(data);\n if (data.success == true) {\n root.addAttachment(data.data.attachment);\n root.selectedUploadFileToggle();\n }\n },\n error: function error(data) {\n console.log(data.responseJSON);\n root.selectedUploadFileToggle();\n ajaxErrorFieldHandler(data.responseJSON.error);\n }\n });\n });\n };\n this.clickNew = function () {\n debug('clickNew');\n APP.loadMainContent(Opts.URL.create, root.clickNewCallBack);\n };\n this.clickNewCallBack = function () {\n debug('callbackNew');\n root.Supplier = new window.Supplier();\n root.initViewDetails();\n };\n this.datatableRowActionEdit = function (rowData, node) {\n console.log('datatableRowActionEdit Called');\n //Opts.onAfterInitViewDetails=root.autofillDetails;\n var ajaxUrl = Opts.URL.edit.replace('%id%', rowData.id);\n APP.loadMainContent(ajaxUrl, root.initViewDetails);\n console.log('datatableRowActionEdit End');\n };\n this.clickOrderDeleteConfirmed = function (event) {\n debug('clickSupplierDeleteConfirmed');\n debug(event);\n debug(event.data);\n $('#dialogModal').modal('hide');\n var ajaxData = {};\n ajaxData._token = Opts.token;\n var ajaxUrl = Opts.URL.destroy.replace('%id%', event.data.id);\n ajaxData._token = $('input[name=_token]').val();\n console.log(ajaxUrl);\n console.log(ajaxData);\n var row = $(dataTableCSSSelector).DataTable().row(root.dadatatableRowActionCallerNode.parents('tr'));\n $.ajax({\n url: ajaxUrl,\n data: ajaxData,\n method: \"DELETE\",\n success: function success(data) {\n if (data.success == true) {\n row.remove().draw();\n root.dadatatableRowActionCallerNode = false;\n }\n }\n });\n };\n var datatableRowActionCallerNode = false;\n this.datatableRowActionDelete = function (rowData, node) {\n console.log('datatableRowActionDelete Called');\n root.dadatatableRowActionCallerNode = node;\n $('#dialogModal').on('show.bs.modal', function (event) {\n // If necessary, you could initiate an AJAX request here (and then do the updating in a callback).\n // Update the modal's content. We'll use jQuery here, but you could use a data binding library or other methods instead.\n var modal = $(this);\n modal.find('.modal-title').text('Megerősítés ');\n modal.find('.modal-body').text('Biztosan törli a beszállítót?');\n modal.find('.buttonYes').off('click');\n modal.find('.buttonYes').on('click', {\n id: rowData.id\n }, root.clickOrderDeleteConfirmed);\n });\n $('#dialogModal').modal('show');\n };\n this.datatableRowActionButtonClick = function (event) {\n debug('datatableRowActionButtonClick');\n var node = $(event[0].currentTarget);\n var row = $(dataTableCSSSelector).DataTable().row(node.parents('tr'));\n var rowData = row.data();\n var actionName = 'datatableRowAction' + node.data('buttontype').capitalize();\n if (typeof root[actionName] === \"function\") {\n return root[actionName](rowData, node);\n }\n };\n this.initViewList = function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n debug('listview inicialization');\n dataTableCSSSelector = Opts.containerCssSelector + ' .dataTable'; //\n\n var colNum = $(dataTableCSSSelector + ' thead th').length; //buttons insert position need\n APP.setOpts({\n datatableActionButtonClickCallBack: root.clickNew,\n datatableRowActionButtonClickCallBack: root.datatableRowActionButtonClick\n });\n var orderDirective = Opts.dataTable.orderDirective;\n if (typeof options['orderDirective'] != 'undefined') {\n orderDirective = options['orderDirective'];\n }\n $(dataTableCSSSelector).DataTable({\n language: {\n url: '//cdn.datatables.net/plug-ins/1.10.24/i18n/Hungarian.json'\n },\n //\"ajax\": \"{{asset('exapmle2.json')}}\",\n \"ajax\": Opts.URL.getDataTableContent,\n \"columnDefs\": [{\n \"targets\": colNum - 1,\n \"render\": function render(data, type, row) {\n var buttons = APP.datatableAddRowTrashButton(0, arguments);\n buttons += APP.datatableAddRowEditButton(0, arguments);\n return buttons;\n }\n }, {\n \"targets\": 1,\n \"render\": function render(data, type, row) {\n return type === \"sort\" ? data.latinise() : data;\n }\n }\n //{ \"visible\": false, \"targets\": [ 0 ] }\n ],\n buttons: {\n buttons: ['excel', 'pdf', {\n extend: 'print',\n //text: 'Print current page',\n 'title': 'title custom text',\n 'messageTop': 'Message On Top',\n autoPrint: true\n }, /**/\n\n {\n text: 'Új felvitele',\n className: 'btn btn-success newItem',\n attr: {\n /*\r\n data:{\r\n a:1,\r\n b:2\r\n }\r\n */\n 'data': 'newItem'\n },\n init: function init(api, node, config) {\n $(node).removeClass('ui-button');\n },\n action: function action(e, dt, node, config) {\n APP.datatableActionButtonClickCallBack(arguments);\n /* console.log(e);\r\n console.log(dt);\r\n console.log(node);\r\n console.log(config);*/\n }\n }]\n },\n \"columns\": [{\n \"data\": \"id\"\n }, {\n \"data\": \"name\"\n }, {\n \"data\": \"hooreycaId\"\n }, {\n \"data\": \"nameId\"\n }, {\n \"data\": \"created_at\"\n }, null],\n \"order\": orderDirective,\n \"stateSave\": true,\n \"drawCallback\": function drawCallback(settings) {\n APP.datatableAddRowAction(dataTableCSSSelector);\n }\n });\n debug('listview end');\n };\n this.autofillDetails = function () {\n debug('nyeresre allunk');\n var randomNumber = getRandomInt(9999);\n $('input[name=name]').val('Beszalító' + randomNumber);\n $('input[name=hooreycaId]').val('hb' + randomNumber);\n $('input[name=nameId]').val('be' + randomNumber);\n $('input[name=orderEmail]').val('kapcsolat' + randomNumber + '@beszallito.hu');\n $('input[name=orderEmail2]').val('informacio' + randomNumber + '@beszallito.hu');\n $('input[name=address]').val('8989 Supplier utca ' + randomNumber);\n $('input[name=mailingAddress]').val('8989 Postai út' + randomNumber);\n $('input[name=phone]').val('+36301234567');\n $('input[name=fax]').val('36308889999');\n $('input[name=customerServicePhone]').val('+36761234444');\n $('textarea[name=note]').val('Megjegyzem ' + randomNumber);\n };\n this.testMode = function () {\n console.debug('!!!!testmode !!!!');\n root.Supplier = new window.Supplier({\n 'contact': [{\n id: 2\n }, {\n id: 3\n }\n /*\r\n {\r\n id:3,\r\n name:'Kósa Veronika',\r\n email:'szamlazas4@funkcio.hu',\r\n phone:'{{formatterPhoneNumber(\"+36204589180\")}}'\r\n }\r\n */]\n });\n Opts.onAfterInitViewDetails = root.autofillDetails;\n APP.loadMainContent(Opts.URL.create, root.initViewDetails);\n };\n this.init = function (options, SupplierItem) {\n $.extend(Opts, options);\n if (Opts.testMode) {\n return root.testMode();\n }\n if (SupplierItem) {\n root.Supplier = SupplierItem;\n }\n root.initViewList();\n };\n this.renderAttachment = function () {\n var rowNum = 1;\n console.log('renderingAttachment');\n $.each(root.Supplier.getData('attachment'), function () {\n var attachmentData = this;\n attachmentData.rowNum = rowNum;\n date = new Date(attachmentData.created_at);\n attachmentData.date = date.toLocaleString();\n attachmentData.link = attachmentData.PublicUrl + '/' + attachmentData.filename;\n var template = $('template[data-name=\"supplierAttachmentTableRow\"]').html();\n var render = Mustache.render(template, attachmentData);\n $('.attachmentTable tbody').append(render);\n rowNum++;\n });\n root.bindAttachmentClickAction();\n };\n this.addAttachment = function (attachmentData) {\n console.log(attachmentData);\n var CSSSelectorForm = Opts.containerCssSelector + ' .supplierForm';\n root.Supplier.attachment.push(attachmentData);\n attachmentData.rowNum = root.Supplier.attachment.length;\n var template = $('template[data-name=\"supplierAttachmentTableRow\"]').html();\n var render = Mustache.render(template, attachmentData);\n $(CSSSelectorForm + ' .attachmentTable tbody').append(render);\n root.bindContactClickAction();\n Toast.enableTimers(false);\n Toast.create(\"Fájl hozzáadva!\", attachmentData.original_filename + \" fájl hozzáadva\", TOAST_STATUS.SUCCESS, 5000);\n };\n this.resetContactTable = function () {\n $('.contactTable tbody tr').remove();\n root.renderContact();\n };\n this.renderContact = function () {\n var rowNum = 1;\n console.log('renderingContacts');\n $.each(root.Supplier.getData('contact'), function () {\n var contactData = this;\n contactData.rowNum = rowNum;\n //console.log(contactData);\n var template = $('template[data-name=\"supplierContactTableRow\"]').html();\n var render = Mustache.render(template, contactData);\n $('.contactTable tbody').append(render);\n rowNum++;\n });\n root.bindContactClickAction();\n };\n this.bindContactClickAction = function () {\n var node = $('.contactTable .buttonDelete');\n node.unbind('click');\n node.bind('click', root.contactDeleteClick);\n node = $('.contactTable .buttonEdit');\n node.unbind('click');\n node.bind('click', root.contactEditClick);\n };\n this.bindAttachmentClickAction = function () {\n var node = $('.attachmentTable .buttonDelete');\n node.unbind('click');\n node.bind('click', root.attachmentDeleteClick);\n };\n var currentAttachmentRow = false;\n this.attachmentDeleteClick = function (event) {\n var row = $(this).closest('tr');\n var id = row.find('input[name=attachmentId]').val();\n var ajaxUrl = Opts.URL.detachFile.replace('%id%', root.Supplier.id);\n //let data= new FormData($(Opts.containerCssSelector).find('form.supplierForm')[0]);\n //data.append(fileInput.attr('name'),fileInput[0].files[0]);\n var data = {};\n data._token = $('input[name=\"_token\"]').val();\n data.attachemntId = id;\n $.ajax({\n url: ajaxUrl,\n data: data,\n type: 'POST',\n //contentType:false,\n //processData: false,\n beforeSend: function beforeSend() {},\n success: function success(data) {\n console.log(data);\n if (data.success == true) {\n root.Supplier.attachment = root.Supplier.attachment.filter(function (value, index, arr) {\n if (value.id !== data.data.attachment.id * 1) {\n return true;\n }\n return false;\n });\n /*\r\n */\n //row.remove();\n root.resetAttachmentTable();\n }\n },\n error: function error(data) {\n console.log(data.responseJSON);\n root.selectedUploadFileToggle();\n ajaxErrorFieldHandler(data.responseJSON.error);\n }\n });\n };\n this.resetAttachmentTable = function () {\n $('.attachmentTable tbody tr').remove();\n root.renderAttachment();\n };\n this.contactDeleteClick = function (event) {\n var row = $(this).closest('tr');\n var id = row.find('input[name=contactId]').val();\n root.Supplier.contact = root.Supplier.contact.filter(function (value, index, arr) {\n if (value.id !== id * 1) {\n return true;\n }\n return false;\n });\n row.remove();\n root.resetContactTable();\n };\n root.getContactPopupWorkflow = function () {\n return contactPopupWorkflow;\n };\n root.setContactPopupWorkflow = function (status) {\n contactPopupWorkflow = status;\n };\n this.contactEditClick = function (event) {\n //console.log(this);\n var row = $(this).closest('tr');\n var id = row.find('input[name=contactId]').val();\n root.setContactPopupWorkflow('edit');\n APP.ContactPopUp.loadData(id);\n };\n this.getSupplier = function () {\n return root.Supplier;\n };\n this.contactAction = function (contactData) {\n console.log('nah most kellene meg valamit csinalni.');\n if (root.getContactPopupWorkflow() == 'new') {\n root.addContact(contactData);\n } else if (root.getContactPopupWorkflow() == 'edit') {\n root.editContact(contactData.id, contactData);\n }\n };\n this.editContact = function (id, contactData) {\n var newContacts = [];\n $.each(root.Supplier.getData('contact'), function (index) {\n if (this.id == id) {\n newContacts.push(contactData);\n } else {\n newContacts.push(this);\n }\n });\n root.Supplier.contact = newContacts;\n root.resetContactTable();\n Toast.create(\"Kapcsolat adatai módosítva!\", contactData.name + \" nevű kapocsolattartó módosítva\", TOAST_STATUS.SUCCESS, 5000);\n };\n this.addContact = function (contactData) {\n /*\r\n fel kell venni a sorba\r\n */\n root.Supplier.contact.push(contactData);\n contactData.rowNum = root.Supplier.contact.length;\n var template = $('template[data-name=\"supplierContactTableRow\"]').html();\n var render = Mustache.render(template, contactData);\n $('.contactTable tbody').append(render);\n root.bindContactClickAction();\n Toast.enableTimers(false);\n Toast.create(\"Kapcsolat tartó hozzáadva!\", contactData.name + \" nevű kapocsolattartó hozzáadva\", TOAST_STATUS.SUCCESS, 5000);\n };\n this.construct(options, SupplierItem);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdXBwbGllciIsIl9EYXRhTW9kZWwiLCJfU3VwcGxpZXIiLCJkYXRhIiwib3B0aW9ucyIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrIiwiX2NhbGxTdXBlciIsImNvbnRhY3QiLCJjb25zb2xlIiwibG9nIiwiX2luaGVyaXRzIiwiX2NyZWF0ZUNsYXNzIiwiRGF0YU1vZGVsIiwid2luZG93IiwiU3VwcGxpZXJBZG1pbiIsIlN1cHBsaWVySXRlbSIsIk9wdHMiLCJ0b2tlbiIsImNvbnRhaW5lckNzc1NlbGVjdG9yIiwidGVzdE1vZGUiLCJVUkwiLCJnZXREYXRhVGFibGVDb250ZW50IiwiaW5kZXgiLCJzaG93IiwiZWRpdCIsImNyZWF0ZSIsInN0b3JlIiwidXBkYXRlIiwiZGVzdHJveSIsImF0dGFjaEZpbGUiLCJkZXRhY2hGaWxlIiwiZGF0YVRhYmxlIiwib3JkZXJEaXJlY3RpdmUiLCJvbkFmdGVySW5pdFZpZXdEZXRhaWxzIiwicm9vdCIsImNvbnRhY3RQb3B1cFdvcmtmbG93IiwiY29uc3RydWN0IiwiJCIsImV4dGVuZCIsIkFQUCIsImdldE9wdHMiLCJmb3JtRGF0YVRvRGF0YU9iamVjdEFQSUNhbGxPbGQiLCJDU1NTZWxlY3RvciIsIkZvcm1EYXRhIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZm9ybUpTT04iLCJmb3JFYWNoIiwidmFsdWUiLCJrZXkiLCJSZWZsZWN0IiwiaGFzIiwiQXJyYXkiLCJpc0FycmF5IiwicHVzaCIsImVhY2giLCJhdHRyIiwicmVwbGFjZSIsImZvcm1EYXRhVG9EYXRhT2JqZWN0QVBJQ2FsbCIsIkNTU1NlbGVjdG9yRm9ybSIsImFqYXhEYXRhIiwiZ2V0QWxsIiwiYXBwZW5kIiwidmFsIiwiaW5kZXhLZXkiLCJnZXQiLCJzZXQiLCJjbGlja1NhdmVCdXR0b24iLCJldmVudCIsImRlYnVnIiwicHJldmVudERlZmF1bHQiLCJjaGVja1ZhbGlkaXR5Iiwic3RvcFByb3BhZ2F0aW9uIiwiYWpheFVybCIsImFqYXhNZXRob2QiLCJpZCIsImFqYXgiLCJ1cmwiLCJ0eXBlIiwiY29udGVudFR5cGUiLCJwcm9jZXNzRGF0YSIsImhlYWRlcnMiLCJzdWNjZXNzIiwiVG9hc3QiLCJUT0FTVF9TVEFUVVMiLCJTVUNDRVNTIiwibG9hZE1haW5Db250ZW50IiwiaW5pdFZpZXdMaXN0Iiwic2V0RGV0YWlsc1ZpZXdEYXRhIiwibmVlZFRvU2V0Iiwibm90ZSIsInByb3AiLCJjYW5TZWUiLCJjbGljayIsImNhblNlZUluT3JkZXIiLCJob29yZXljYURhdGFBY3RpdmUiLCJwcm9kdWN0R3JvdXAiLCJwcm9kdWN0X2dyb3VwIiwibmFtZSIsImNoYW5nZSIsInNlcnZpY2UiLCJwcm9maXRDZW50ZXIiLCJwcm9maXRfY2VudGVyIiwiZXNjYXBlU2VsZWN0b3IiLCJpbml0Vmlld0RldGFpbHMiLCJDb250YWN0UG9wVXAiLCJpbml0IiwiYWN0aXZlIiwib25BZnRlclNhdmUiLCJjb250YWN0QWN0aW9uIiwicmVuZGVyQ29udGFjdCIsImJpbmQiLCJzZXRDb250YWN0UG9wdXBXb3JrZmxvdyIsImNsZWFyRGF0YSIsInRvb2x0aXAiLCJpbml0UmFkaW9CdXR0b25zIiwiaW5wdXRtYXNrIiwib25pbmNvbXBsZXRlIiwibGVuZ3RoIiwiYWRkQ2xhc3MiLCJvbmNvbXBsZXRlIiwicmVtb3ZlQ2xhc3MiLCJvbmNsZWFyZWQiLCJvZmYiLCJvbiIsInNlbGVjdDIiLCJ0YWdzIiwiY3JlYXRlVGFnIiwicGFyYW1zIiwidGVybSIsInRyaW0iLCJ0ZXh0IiwibmV3VGFnIiwic2V0SW1hZ2VGcm9tTG9jYWwiLCJpcyIsInJlbmRlckF0dGFjaG1lbnQiLCJpbml0RmlsZUF0dGFjaG1lbnRGZWF0dXJlIiwic2VsZWN0ZWRVcGxvYWRGaWxlVG9nZ2xlIiwiZmlsZUlucHV0IiwiZmlsZXMiLCJncm91cCIsIkRBTkdFUiIsImZpbmQiLCJncm91cEVuZCIsImJlZm9yZVNlbmQiLCJhZGRBdHRhY2htZW50IiwiYXR0YWNobWVudCIsImVycm9yIiwicmVzcG9uc2VKU09OIiwiYWpheEVycm9yRmllbGRIYW5kbGVyIiwiY2xpY2tOZXciLCJjbGlja05ld0NhbGxCYWNrIiwiZGF0YXRhYmxlUm93QWN0aW9uRWRpdCIsInJvd0RhdGEiLCJub2RlIiwiY2xpY2tPcmRlckRlbGV0ZUNvbmZpcm1lZCIsIm1vZGFsIiwiX3Rva2VuIiwicm93IiwiZGF0YVRhYmxlQ1NTU2VsZWN0b3IiLCJEYXRhVGFibGUiLCJkYWRhdGF0YWJsZVJvd0FjdGlvbkNhbGxlck5vZGUiLCJwYXJlbnRzIiwibWV0aG9kIiwicmVtb3ZlIiwiZHJhdyIsImRhdGF0YWJsZVJvd0FjdGlvbkNhbGxlck5vZGUiLCJkYXRhdGFibGVSb3dBY3Rpb25EZWxldGUiLCJkYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGljayIsImN1cnJlbnRUYXJnZXQiLCJhY3Rpb25OYW1lIiwiY2FwaXRhbGl6ZSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsImNvbE51bSIsInNldE9wdHMiLCJkYXRhdGFibGVBY3Rpb25CdXR0b25DbGlja0NhbGxCYWNrIiwiZGF0YXRhYmxlUm93QWN0aW9uQnV0dG9uQ2xpY2tDYWxsQmFjayIsImxhbmd1YWdlIiwicmVuZGVyIiwiYnV0dG9ucyIsImRhdGF0YWJsZUFkZFJvd1RyYXNoQnV0dG9uIiwiZGF0YXRhYmxlQWRkUm93RWRpdEJ1dHRvbiIsImxhdGluaXNlIiwiYXV0b1ByaW50IiwiY2xhc3NOYW1lIiwiYXBpIiwiY29uZmlnIiwiYWN0aW9uIiwiZSIsImR0IiwiZHJhd0NhbGxiYWNrIiwic2V0dGluZ3MiLCJkYXRhdGFibGVBZGRSb3dBY3Rpb24iLCJhdXRvZmlsbERldGFpbHMiLCJyYW5kb21OdW1iZXIiLCJnZXRSYW5kb21JbnQiLCJyb3dOdW0iLCJnZXREYXRhIiwiYXR0YWNobWVudERhdGEiLCJkYXRlIiwiRGF0ZSIsImNyZWF0ZWRfYXQiLCJ0b0xvY2FsZVN0cmluZyIsImxpbmsiLCJQdWJsaWNVcmwiLCJmaWxlbmFtZSIsInRlbXBsYXRlIiwiaHRtbCIsIk11c3RhY2hlIiwiYmluZEF0dGFjaG1lbnRDbGlja0FjdGlvbiIsImJpbmRDb250YWN0Q2xpY2tBY3Rpb24iLCJlbmFibGVUaW1lcnMiLCJvcmlnaW5hbF9maWxlbmFtZSIsInJlc2V0Q29udGFjdFRhYmxlIiwiY29udGFjdERhdGEiLCJ1bmJpbmQiLCJjb250YWN0RGVsZXRlQ2xpY2siLCJjb250YWN0RWRpdENsaWNrIiwiYXR0YWNobWVudERlbGV0ZUNsaWNrIiwiY3VycmVudEF0dGFjaG1lbnRSb3ciLCJjbG9zZXN0IiwiYXR0YWNoZW1udElkIiwiZmlsdGVyIiwiYXJyIiwicmVzZXRBdHRhY2htZW50VGFibGUiLCJnZXRDb250YWN0UG9wdXBXb3JrZmxvdyIsInN0YXR1cyIsImxvYWREYXRhIiwiZ2V0U3VwcGxpZXIiLCJhZGRDb250YWN0IiwiZWRpdENvbnRhY3QiLCJuZXdDb250YWN0cyJdLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvYWRtaW4vc3VwcGxpZXIuanM/YTdjNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpZih0eXBlb2YgU3VwcGxpZXI9PT0ndW5kZWZpbmVkJyl7XHJcbiAgICBjbGFzcyBTdXBwbGllciBleHRlbmRzIERhdGFNb2RlbHtcclxuXHJcbiAgICAgICAgLypcclxuICAgICAgICAgKiBDb25zdHJ1Y3RvclxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGNvbnN0cnVjdG9yIChkYXRhLG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgc3VwZXIoZGF0YSxvcHRpb25zKVxyXG4gICAgICAgICAgICBpZih0eXBlb2YgdGhpcy5jb250YWN0ID09PVwidW5kZWZpbmVkXCIpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250YWN0PVtdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdTdXBwbGllciBjb25zdHJ1Y3RvciBjYWxsZWQnKTtcclxuICAgICAgICB9O1xyXG4gICAgfTtcclxuICAgIHdpbmRvdy5TdXBwbGllcj1TdXBwbGllcjtcclxufVxyXG5cclxuXHJcbndpbmRvdy5TdXBwbGllckFkbWluPWZ1bmN0aW9uIChvcHRpb25zLFN1cHBsaWVySXRlbSkge1xyXG4gICAgLypcclxuICAgICAqIFZhcmlhYmxlcyBhY2Nlc3NpYmxlXHJcbiAgICAgKiBpbiB0aGUgY2xhc3NcclxuICAgICAqL1xyXG4gICAgbGV0IE9wdHMgPSB7XHJcbiAgICAgICAgdG9rZW46bnVsbCxcclxuICAgICAgICBjb250YWluZXJDc3NTZWxlY3RvcjogJy5jb250YWluZXJTdXBwbGllcicsXHJcbiAgICAgICAgdGVzdE1vZGU6ZmFsc2UsXHJcbiAgICAgICAgVVJMOntcclxuICAgICAgICAgICAgZ2V0RGF0YVRhYmxlQ29udGVudDonJyxcclxuICAgICAgICAgICAgaW5kZXg6JycsXHJcbiAgICAgICAgICAgIHNob3c6JycsXHJcbiAgICAgICAgICAgIGVkaXQ6JycsXHJcbiAgICAgICAgICAgIGNyZWF0ZTonJyxcclxuICAgICAgICAgICAgc3RvcmU6JycsXHJcbiAgICAgICAgICAgIHVwZGF0ZTonJyxcclxuICAgICAgICAgICAgZGVzdHJveTonJyxcclxuICAgICAgICAgICAgYXR0YWNoRmlsZTonJyxcclxuICAgICAgICAgICAgZGV0YWNoRmlsZTonJyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGRhdGFUYWJsZTp7XHJcbiAgICAgICAgICAgIG9yZGVyRGlyZWN0aXZlOlsxLCAnYXNjJ11cclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQWZ0ZXJJbml0Vmlld0RldGFpbHM6ZnVuY3Rpb24gKCl7fVxyXG4gICAgfTtcclxuICAgIGxldCBTdXBwbGllciA9IHt9O1xyXG4gICAgbGV0IHJvb3QgPSB0aGlzO1xyXG4gICAgbGV0IGNvbnRhY3RQb3B1cFdvcmtmbG93PSduZXcnO1xyXG4gICAgLypcclxuICAgICAqIENvbnN0cnVjdG9yXHJcbiAgICAgKi9cclxuICAgIHRoaXMuY29uc3RydWN0ID0gZnVuY3Rpb24gKG9wdGlvbnMsU3VwcGxpZXJJdGVtKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1N1cHBsaWVyQWRtaW4gY29uc3RydWN0b3IgY2FsbGVkJyk7XHJcbiAgICAgICAgJC5leHRlbmQoT3B0cywgb3B0aW9ucyk7XHJcbiAgICAgICAgaWYoIVN1cHBsaWVySXRlbSl7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzdXBwbGllciBsZXRyZSBrZWxsZXQgaG96bmkgJyk7XHJcbiAgICAgICAgICAgIGlmKCFBUFAuU3VwcGxpZXIpe1xyXG4gICAgICAgICAgICAgICAgQVBQLlN1cHBsaWVyPW5ldyB3aW5kb3cuU3VwcGxpZXIoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByb290LlN1cHBsaWVyPUFQUC5TdXBwbGllcjtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhpcy5nZXRPcHRzPWZ1bmN0aW9uICgpe1xyXG4gICAgICAgIHJldHVybiBPcHRzO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZm9ybURhdGFUb0RhdGFPYmplY3RBUElDYWxsT2xkPSBmdW5jdGlvbiAoQ1NTU2VsZWN0b3IpIHtcclxuICAgICAgICBsZXQgZGF0YSA9IG5ldyBGb3JtRGF0YShkb2N1bWVudC5xdWVyeVNlbGVjdG9yKENTU1NlbGVjdG9yKSk7XHJcbiAgICAgICAgLy9sZXQgZm9ybUpTT04gPSBPYmplY3QuZnJvbUVudHJpZXMoZGF0YS5lbnRyaWVzKCkpO1xyXG4gICAgICAgIHZhciBmb3JtSlNPTiA9IHt9O1xyXG4gICAgICAgIGRhdGEuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xyXG4gICAgICAgICAgICAvLyBSZWZsZWN0LmhhcyBpbiBmYXZvciBvZjogZm9ybUpTT04uaGFzT3duUHJvcGVydHkoa2V5KVxyXG4gICAgICAgICAgICBpZighUmVmbGVjdC5oYXMoZm9ybUpTT04sIGtleSkpe1xyXG4gICAgICAgICAgICAgICAgZm9ybUpTT05ba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKCFBcnJheS5pc0FycmF5KGZvcm1KU09OW2tleV0pKXtcclxuICAgICAgICAgICAgICAgIGZvcm1KU09OW2tleV0gPSBbZm9ybUpTT05ba2V5XV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZm9ybUpTT05ba2V5XS5wdXNoKHZhbHVlKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgJChDU1NTZWxlY3RvcisnIGlucHV0W2RhdGEtaW5wdXRtYXNrXScpLmVhY2goZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgICAgIGlmKGZvcm1KU09OWyQodGhpcykuYXR0cignbmFtZScpXSl7XHJcbiAgICAgICAgICAgICAgICBmb3JtSlNPTlskKHRoaXMpLmF0dHIoJ25hbWUnKV09Zm9ybUpTT05bJCh0aGlzKS5hdHRyKCduYW1lJyldLnJlcGxhY2UoL1tfIF0rJC9nLFwiXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy9mb3JtSlNPTi5wcm9kdWN0R3JvdXBzPSQoXCIucHJvZHVjdENhdGVnb3J5U2VsZWN0XCIpLnNlbGVjdDIoKS52YWwoKTtcclxuXHJcblxyXG4gICAgICAgIC8qTXVsdGlzZWxlY3Qgb3IgY2hlY2tib3ggdG8gYXJyYXk6XHJcbiAgICAgICAgYWpheERhdGFbJ3Byb2R1Y3RHcm91cCddPSQoXCIucHJvZHVjdENhdGVnb3J5U2VsZWN0XCIpLnNlbGVjdDIoKS52YWwoKTtcclxuXHJcbiAgICAgICAgZm9ybUpTT04ubXVsdGlzZWxlY3ROYW1lID0gZGF0YS5nZXRBbGwoJ211bHRpc2VsZWN0TmFtZScpO1xyXG4gICAgICAgICQuZWFjaChmb3JtSlNPTiwgZnVuY3Rpb24gKGl0ZW0sIHZhbHVlKSB7XHJcbiAgICAgICAgICAgIGZvcm1KU09OWyQubGNGaXJzdChpdGVtLnJlcGxhY2UoJ2NvbnRhY3QnLCAnJykpXSA9IHZhbHVlO1xyXG4gICAgICAgICAgICBkZWxldGUgZm9ybUpTT05baXRlbV07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYoZm9ybUpTT04ucGhvbmUpe1xyXG4gICAgICAgICAgICBmb3JtSlNPTi5waG9uZT1mb3JtSlNPTi5waG9uZS5yZXBsYWNlQWxsKCdfJywnJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGZvcm1KU09OLmVtYWlsKXtcclxuICAgICAgICAgICAgZm9ybUpTT04uZW1haWw9Zm9ybUpTT04uZW1haWwucmVwbGFjZUFsbCgnXycsJycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAqL1xyXG4gICAgICAgIHJldHVybiBmb3JtSlNPTjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZvcm1EYXRhVG9EYXRhT2JqZWN0QVBJQ2FsbCA9IGZ1bmN0aW9uIChDU1NTZWxlY3RvckZvcm0pIHtcclxuICAgICAgICBsZXQgYWpheERhdGE9bmV3IEZvcm1EYXRhKCQoQ1NTU2VsZWN0b3JGb3JtKVswXSk7XHJcbiAgICAgICAgJC5lYWNoKGFqYXhEYXRhLmdldEFsbCgncHJvZml0Q2VudGVyJyksZnVuY3Rpb24oa2V5LHZhbHVlKXtcclxuICAgICAgICAgICAgYWpheERhdGEuYXBwZW5kKCdwcm9maXRDZW50ZXJbXScsdmFsdWUpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgJC5lYWNoKGFqYXhEYXRhLmdldEFsbCgncHJvZHVjdEdyb3VwJyksZnVuY3Rpb24oa2V5LHZhbHVlKXtcclxuICAgICAgICAgICAgYWpheERhdGEuYXBwZW5kKCdwcm9kdWN0R3JvdXBbXScsdmFsdWUpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgJC5lYWNoKGFqYXhEYXRhLmdldEFsbCgnc3VwcGxpZXJTZXJ2aWNlJyksZnVuY3Rpb24oa2V5LHZhbHVlKXtcclxuICAgICAgICAgICAgYWpheERhdGEuYXBwZW5kKCdzdXBwbGllclNlcnZpY2VbXScsdmFsdWUpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgJC5lYWNoKGFqYXhEYXRhLmdldEFsbCgnY29udGFjdElkJyksZnVuY3Rpb24oa2V5LHZhbHVlKXtcclxuICAgICAgICAgICAgYWpheERhdGEuYXBwZW5kKCdjb250YWN0SWRbXScsdmFsdWUpO1xyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGFqYXhEYXRhLmFwcGVuZCgnX3Rva2VuJywkKCdpbnB1dFtuYW1lPV90b2tlbl0nKS52YWwoKSk7XHJcblxyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgaW5wdXRbZGF0YS1pbnB1dG1hc2tdJykuZWFjaChmdW5jdGlvbiAoKXtcclxuICAgICAgICAgICAgbGV0IGluZGV4S2V5PSQodGhpcykuYXR0cignbmFtZScpO1xyXG4gICAgICAgICAgICBpZihhamF4RGF0YS5nZXQoaW5kZXhLZXkpKXtcclxuICAgICAgICAgICAgICAgIGFqYXhEYXRhLnNldChpbmRleEtleSxhamF4RGF0YS5nZXQoaW5kZXhLZXkpLnJlcGxhY2UoL1tfIF0rJC9nLFwiXCIpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gYWpheERhdGE7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jbGlja1NhdmVCdXR0b249ZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICAgICAgZGVidWcoJ1NhdmUgY2xpY2tlZCcpO1xyXG4gICAgICAgIGxldCBDU1NTZWxlY3RvckZvcm09T3B0cy5jb250YWluZXJDc3NTZWxlY3RvcisnIC5zdXBwbGllckZvcm0nO1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICBpZiAoJChDU1NTZWxlY3RvckZvcm0rJyBpbnB1dFtuYW1lPVwiY2FuU2VlSW5PcmRlclwiXScpLnZhbCgpPT0xICYmICQoQ1NTU2VsZWN0b3JGb3JtKVswXS5jaGVja1ZhbGlkaXR5KCkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCd2YWxpZGF0b24gZmFsc2UnKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygndmFsaWRhdG9uIG9rJyk7XHJcbiAgICAgICAgICAgIC8vZG8geW91ciBhamF4IHN1Ym1pdGlvbiBoZXJlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBhamF4RGF0YT1yb290LmZvcm1EYXRhVG9EYXRhT2JqZWN0QVBJQ2FsbChDU1NTZWxlY3RvckZvcm0pO1xyXG5cclxuXHJcblxyXG4gICAgICAgIGxldCBhamF4VXJsPU9wdHMuVVJMLnN0b3JlO1xyXG4gICAgICAgIGxldCBhamF4TWV0aG9kPVwiUE9TVFwiO1xyXG4gICAgICAgIGlmKHJvb3QuU3VwcGxpZXIuaWQpe1xyXG4gICAgICAgICAgICBhamF4VXJsPU9wdHMuVVJMLnVwZGF0ZS5yZXBsYWNlKCclaWQlJyxyb290LlN1cHBsaWVyLmlkKTtcclxuICAgICAgICAgICAgLy9hamF4TWV0aG9kPVwiUFVUXCI7XHJcbiAgICAgICAgICAgIC8vYWpheERhdGE9bmV3IEZvcm1EYXRhKCQoQ1NTU2VsZWN0b3JGb3JtKVswXSk7XHJcbiAgICAgICAgICAgIGFqYXhEYXRhLmFwcGVuZCgnX21ldGhvZCcsJ1BVVCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGVidWcoYWpheE1ldGhvZCk7XHJcbiAgICAgICAgZGVidWcoYWpheERhdGEpO1xyXG5cclxuICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICB1cmw6YWpheFVybCxcclxuICAgICAgICAgICAgZGF0YTphamF4RGF0YSxcclxuICAgICAgICAgICAgdHlwZTphamF4TWV0aG9kLFxyXG4gICAgICAgICAgICBjb250ZW50VHlwZTpmYWxzZSxcclxuICAgICAgICAgICAgcHJvY2Vzc0RhdGE6IGZhbHNlLFxyXG4gICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAnWC1DU1JGLVRPS0VOJzogJCgnaW5wdXRbbmFtZT1cIl90b2tlblwiXScpLnZhbCgpXHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBzdWNjZXNzOmZ1bmN0aW9uIChkYXRhKXtcclxuICAgICAgICAgICAgICAgIGRlYnVnKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgaWYoZGF0YS5zdWNjZXNzPT10cnVlKXtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy9PcHRzLm9uQWZ0ZXJJbml0Vmlld0RldGFpbHM9cm9vdC5hdXRvZmlsbERldGFpbHM7XHJcbiAgICAgICAgICAgICAgICAgICAgT3B0cy5kYXRhVGFibGUub3JkZXJEaXJlY3RpdmU9WzAsICdkZXNjJ107XHJcbiAgICAgICAgICAgICAgICAgICAgVG9hc3QuY3JlYXRlKFwiU2lrZXJlcyByw7ZnesOtdMOpcyFcIiwgYWpheERhdGEuZ2V0KCduYW1lJykrXCIgbmV2xbEgYmVzesOhbGxsw610w7MgZWxtZW50dmVcIiwgVE9BU1RfU1RBVFVTLlNVQ0NFU1MsNTAwMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgQVBQLmxvYWRNYWluQ29udGVudChPcHRzLlVSTC5pbmRleCsnP2luaXQ9MCcscm9vdC5pbml0Vmlld0xpc3QpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldERldGFpbHNWaWV3RGF0YT1mdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgZGVidWcoJ3NldERldGFpbHNWaWV3RGF0YScpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFN1cHBsaWVyKTtcclxuICAgICAgICBsZXQgQ1NTU2VsZWN0b3JGb3JtPU9wdHMuY29udGFpbmVyQ3NzU2VsZWN0b3IrJyAuc3VwcGxpZXJGb3JtJztcclxuICAgICAgICBsZXQgbmVlZFRvU2V0PVtcclxuICAgICAgICAgICAgJ25hbWUnLCdob29yZXljYUlkJywnbmFtZUlkJyxcclxuICAgICAgICAgICAgJ29yZGVyRW1haWwnLCdvcmRlckVtYWlsMicsJ2FkZHJlc3MnLCdtYWlsaW5nQWRkcmVzcycsJ3Bob25lJywnZmF4JywnY3VzdG9tZXJTZXJ2aWNlUGhvbmUnLFxyXG4gICAgICAgICAgICAnbmFtZTIyJyxcclxuICAgICAgICAgICAgJ29wZW5Ib3VycycsICdvcmRlcnNEZWFkbGluZScsICdtaW5PcmRlclZhbHVlJyxcclxuICAgICAgICBdO1xyXG4gICAgICAgICQuZWFjaChuZWVkVG9TZXQsZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZih0eXBlb2Ygcm9vdC5TdXBwbGllclt0aGlzXSE9J3VuZGVmaW5lZCcpe1xyXG4gICAgICAgICAgICAgICAgJChDU1NTZWxlY3RvckZvcm0rJyBpbnB1dFtuYW1lPScrdGhpcysnXScpLnZhbChyb290LlN1cHBsaWVyW3RoaXNdKTtcclxuICAgICAgICAgICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgdGV4dGFyZWFbbmFtZT0nK3RoaXMrJ10nKS52YWwocm9vdC5TdXBwbGllclt0aGlzXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIGlmKHR5cGVvZiByb290LlN1cHBsaWVyWydub3RlJ10hPSd1bmRlZmluZWQnKXtcclxuICAgICAgICAgICAgJChDU1NTZWxlY3RvckZvcm0rJyB0ZXh0YXJlYVtuYW1lPW5vdGVdJykudmFsKHJvb3QuU3VwcGxpZXIubm90ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHR5cGVvZiByb290LlN1cHBsaWVyWydlbWFpbEF0dGFjaG1lbnRUeXBlJ10hPSd1bmRlZmluZWQnKXtcclxuICAgICAgICAgICAgJChDU1NTZWxlY3RvckZvcm0rJyBpbnB1dFtuYW1lPWVtYWlsQXR0YWNobWVudFR5cGVdW3ZhbHVlPScrcm9vdC5TdXBwbGllclsnZW1haWxBdHRhY2htZW50VHlwZSddKyddJykucHJvcCgnY2hlY2tlZCcsdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgKltkYXRhLXRvZ2dsZT1jYW5TZWVdW2RhdGEtdGl0bGU9Jytyb290LlN1cHBsaWVyLmNhblNlZSsnXScpLmNsaWNrKCk7XHJcbiAgICAgICAgJChDU1NTZWxlY3RvckZvcm0rJyAqW2RhdGEtdG9nZ2xlPWNhblNlZUluT3JkZXJdW2RhdGEtdGl0bGU9Jytyb290LlN1cHBsaWVyLmNhblNlZUluT3JkZXIrJ10nKS5jbGljaygpO1xyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgKltkYXRhLXRvZ2dsZT1ob29yZXljYURhdGFBY3RpdmVdW2RhdGEtdGl0bGU9Jytyb290LlN1cHBsaWVyLmhvb3JleWNhRGF0YUFjdGl2ZSsnXScpLmNsaWNrKCk7XHJcbiAgICAgICAgbGV0IHByb2R1Y3RHcm91cD1bXTtcclxuICAgICAgICAkLmVhY2gocm9vdC5TdXBwbGllci5wcm9kdWN0X2dyb3VwLGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcHJvZHVjdEdyb3VwLnB1c2godGhpcy5uYW1lKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICAkKENTU1NlbGVjdG9yRm9ybSsnIC5wcm9kdWN0Q2F0ZWdvcnlTZWxlY3QnKS52YWwocHJvZHVjdEdyb3VwKS5jaGFuZ2UoKTtcclxuXHJcbiAgICAgICAgbGV0IHNlcnZpY2U9W107XHJcbiAgICAgICAgJC5lYWNoKHJvb3QuU3VwcGxpZXIuc2VydmljZSxmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHNlcnZpY2UucHVzaCh0aGlzLm5hbWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgICQoQ1NTU2VsZWN0b3JGb3JtKycgLnNlcnZpY2VTZWxlY3QnKS52YWwoc2VydmljZSkuY2hhbmdlKCk7XHJcblxyXG4gICAgICAgIGxldCBwcm9maXRDZW50ZXI9W107XHJcbiAgICAgICAgJC5lYWNoKHJvb3QuU3VwcGxpZXIucHJvZml0X2NlbnRlcixmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHByb2ZpdENlbnRlci5wdXNoKHRoaXMubmFtZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8kKENTU1NlbGVjdG9yRm9ybSsnIC5wcm9maXRDZW50ZXJTZWxlY3QnKS52YWwocHJvZml0Q2VudGVyKS5jaGFuZ2UoKTtcclxuICAgICAgICAvL2RlYnVnKHByb2ZpdENlbnRlcik7XHJcbiAgICAgICAgJC5lYWNoKHByb2ZpdENlbnRlcixmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICQoJ2lucHV0W3ZhbHVlPVwiJyskLmVzY2FwZVNlbGVjdG9yKHRoaXMpKydcIl0nKS5wcm9wKCBcImNoZWNrZWRcIiwgdHJ1ZSApO1xyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGlmKHR5cGVvZiByb290LlN1cHBsaWVyWydsb2dvRmlsZSddIT0ndW5kZWZpbmVkJyAmJiAocm9vdC5TdXBwbGllclsnbG9nb0ZpbGUnXSkpe1xyXG4gICAgICAgICAgICAkKENTU1NlbGVjdG9yRm9ybSsnIGltZy5pbWFnZUxvZ28nKS5hdHRyKCdzcmMnLHJvb3QuU3VwcGxpZXJbJ2xvZ29GaWxlJ10pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy9kZWJ1ZyhBUFAuU3VwcGxpZXJBZG1pbi5mb3JtRGF0YVRvRGF0YU9iamVjdEFQSUNhbGwoJy5zdXBwbGllckZvcm0nKVsncHJvZHVjdEdyb3VwJ10pO1xyXG4gICAgICAgIC8vJCgnW25hbWU9cHJvZHVjdEdyb3VwXScpLnZhbChbJ0LDvGbDqcOhcnVfw6lkZXNpcGFyaV90ZXJtw6lrZWsnLCdUb2rDoXMnXSkuY2hhbmdlKCk7XHJcbiAgICAgICAgLy9yb290LnNldERldGFpbHNWaWV3RGF0YSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbml0Vmlld0RldGFpbHM9ZnVuY3Rpb24gKG9wdGlvbnMsU3VwcGxpZXJJdGVtKXtcclxuICAgICAgICBkZWJ1ZygnKipjYWxsIGluaXRWaWV3RGV0YWlscyAnKTtcclxuICAgICAgICBpZighQVBQLkNvbnRhY3RQb3BVcCl7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCduaW5jcyBBUFAuQ29udGFjdFBvcFVwJylcclxuICAgICAgICAgICAgQVBQLkNvbnRhY3RQb3BVcCA9IG5ldyB3aW5kb3cuQ29udGFjdFBvcFVwKCk7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdtYXIgdmFuICBBUFAuQ29udGFjdFBvcFVwJylcclxuICAgICAgICB9XHJcbiAgICAgICAgQVBQLkNvbnRhY3RQb3BVcC5pbml0KHtcclxuICAgICAgICAgICAgYWN0aXZlOnRydWUsXHJcbiAgICAgICAgICAgIG9uQWZ0ZXJTYXZlOnJvb3QuY29udGFjdEFjdGlvblxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJvb3QucmVuZGVyQ29udGFjdCgpO1xyXG4gICAgICAgICQoJy5zdXBwbGllckZvcm0gLmJ1dHRvbk5ld0NvbnRhY3QnKS5iaW5kKCdjbGljaycsZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgICAgIEFQUC5TdXBwbGllckFkbWluLnNldENvbnRhY3RQb3B1cFdvcmtmbG93KCduZXcnKTtcclxuICAgICAgICAgICAgQVBQLkNvbnRhY3RQb3BVcC5jbGVhckRhdGEoKTtcclxuICAgICAgICAgICAgQVBQLkNvbnRhY3RQb3BVcC5zaG93KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgJCgnW2RhdGEtdG9nZ2xlPVwidG9vbHRpcFwiXScpLnRvb2x0aXAoKTtcclxuICAgICAgICBpbml0UmFkaW9CdXR0b25zKCk7XHJcbiAgICAgICAgJChcIjppbnB1dFwiKS5pbnB1dG1hc2soe1xyXG4gICAgICAgICAgICBcIm9uaW5jb21wbGV0ZVwiOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygkKHRoaXMpLmRhdGEoJ3JlcXVpcmVkJykpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCQodGhpcykudmFsKCkubGVuZ3RoID4gMCB8fCAkKHRoaXMpLmRhdGEoJ3JlcXVpcmVkJykgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCdpcy1pbnZhbGlkJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIFwib25jb21wbGV0ZVwiOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdpcy1pbnZhbGlkJyk7XHJcbiAgICAgICAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCdpcy12YWxpZCcpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBcIm9uY2xlYXJlZFwiOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnY2xlYXJlZCcpO1xyXG4gICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnaXMtaW52YWxpZCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICQoJ2Zvcm0uc3VwcGxpZXJGb3JtIGJ1dHRvbi5Gb3JtU2F2ZUJ1dHRvbicpLm9mZignY2xpY2snKTtcclxuICAgICAgICAkKCdmb3JtLnN1cHBsaWVyRm9ybSBidXR0b24uRm9ybVNhdmVCdXR0b24nKS5vbignY2xpY2snLHJvb3QuY2xpY2tTYXZlQnV0dG9uKTtcclxuICAgICAgICByb290LnNldERldGFpbHNWaWV3RGF0YSgpO1xyXG4gICAgICAgICQoXCIucHJvZHVjdENhdGVnb3J5U2VsZWN0XCIpLnNlbGVjdDIoKTtcclxuICAgICAgICAkKFwiLnNlcnZpY2VTZWxlY3RcIikuc2VsZWN0Mih7XHJcbiAgICAgICAgICAgIHRhZ3M6IHRydWUsXHJcbiAgICAgICAgICAgIGNyZWF0ZVRhZzogZnVuY3Rpb24gKHBhcmFtcykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHRlcm0gPSAkLnRyaW0ocGFyYW1zLnRlcm0pO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0ZXJtID09PSAnJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHRlcm0sXHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogdGVybSxcclxuICAgICAgICAgICAgICAgICAgICBuZXdUYWc6IHRydWUgLy8gYWRkIGFkZGl0aW9uYWwgcGFyYW1ldGVyc1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vJChcIi5wcm9maXRDZW50ZXJTZWxlY3RcIikuc2VsZWN0MigpO1xyXG4gICAgICAgICQoXCJpbnB1dFtuYW1lPWxvZ29GaWxlXVwiKS5jaGFuZ2UoZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgc2V0SW1hZ2VGcm9tTG9jYWwodGhpcyxPcHRzLmNvbnRhaW5lckNzc1NlbGVjdG9yKycgLmltYWdlTG9nbycpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAkKCdmb3JtLnN1cHBsaWVyRm9ybSAucHJvZml0Q2VudGVyU2VsZWN0Q2hlY2tib3hBbGwnKS5vZmYoJ2NsaWNrJyk7XHJcbiAgICAgICAgJCgnZm9ybS5zdXBwbGllckZvcm0gLnByb2ZpdENlbnRlclNlbGVjdENoZWNrYm94QWxsJykub24oJ2NsaWNrJyxmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coKTtcclxuICAgICAgICAgICAgLy9sZXQgY2hlY2tlZD0kKHRoaXMpLmlzKFwiOmNoZWNrZWRcIilcclxuICAgICAgICAgICAgJCgnZm9ybS5zdXBwbGllckZvcm0gaW5wdXQucHJvZml0Q2VudGVyU2VsZWN0Q2hlY2tib3gnKS5wcm9wKCdjaGVja2VkJywkKHRoaXMpLmlzKFwiOmNoZWNrZWRcIikpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJvb3QucmVuZGVyQXR0YWNobWVudCgpO1xyXG4gICAgICAgIC8vT3B0cy5vbkFmdGVySW5pdFZpZXdEZXRhaWxzKCk7XHJcbiAgICAgICAgcm9vdC5pbml0RmlsZUF0dGFjaG1lbnRGZWF0dXJlKCk7XHJcbiAgICAgICAgZGVidWcoJyoqZW5kIGluaXRWaWV3RGV0YWlscyAnKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkVXBsb2FkRmlsZVRvZ2dsZT1mdW5jdGlvbiAoZmlsZUlucHV0KXtcclxuICAgICAgICAvKlxyXG4gICAgICAgIGNvbnNvbGUubG9nKGZpbGVJbnB1dC5hdHRyKCduYW1lJykpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGZpbGVJbnB1dFswXS5maWxlc1swXSk7XHJcbiAgICAgICAgY29uc29sZS5sb2coZmlsZUlucHV0WzBdLmZpbGVzWzBdLm5hbWUpO1xyXG4gICAgICAgICovXHJcbiAgICAgICAgaWYoZmlsZUlucHV0KXtcclxuICAgICAgICAgICAgJCgnLmNvbnRhaW5lckZpbGVVcGxvYWQnKS5hZGRDbGFzcygnZC1ub25lJyk7XHJcbiAgICAgICAgICAgIGlmKGZpbGVJbnB1dFswXS5maWxlc1swXSl7XHJcbiAgICAgICAgICAgICAgICAkKCcuY29udGFpbmVyVXBsb2FkZWRGaWxlTmFtZScpLnRleHQoZmlsZUlucHV0WzBdLmZpbGVzWzBdLm5hbWUpO1xyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAkKCcuY29udGFpbmVyRmlsZVVwbG9hZFN0YXJ0ZWQnKS5yZW1vdmVDbGFzcygnZC1ub25lJyk7XHJcbiAgICAgICAgICAgICQoJy5jb250YWluZXJVcGxvYWRlZFNwaW5uZXInKS5yZW1vdmVDbGFzcygnZC1ub25lJyk7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICQoJy5jb250YWluZXJVcGxvYWRlZEZpbGVOYW1lJykudGV4dCgnJyk7XHJcbiAgICAgICAgICAgICQoJy5jdXN0b20tZmlsZS1sYWJlbC5zZWxlY3RlZCcpLnRleHQoJycpO1xyXG4gICAgICAgICAgICAkKCcuY29udGFpbmVyRmlsZVVwbG9hZFN0YXJ0ZWQnKS5hZGRDbGFzcygnZC1ub25lJyk7XHJcbiAgICAgICAgICAgICQoJy51cGxvYWRTdGF0dXNSb3cnKS5hZGRDbGFzcygnZC1ub25lJyk7XHJcbiAgICAgICAgICAgICQoJy5jb250YWluZXJGaWxlVXBsb2FkJykucmVtb3ZlQ2xhc3MoJ2Qtbm9uZScpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmluaXRGaWxlQXR0YWNobWVudEZlYXR1cmU9ZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCctLS0tLS0taW5pdEZpbGVBdHRhY2htZW50RmVhdHVyZS0tLS0tLS0tLS0tJyk7XHJcbiAgICAgICAgaWYocm9vdC5TdXBwbGllci5pZCl7XHJcbiAgICAgICAgICAgICQoJy5jb250YWluZXJGaWxlVXBsb2FkJykucmVtb3ZlQ2xhc3MoJ2Qtbm9uZScpO1xyXG4gICAgICAgICAgICAkKCcuY29udGFpbmVyRmlsZVVwbG9hZE5vbmUnKS5hZGRDbGFzcygnZC1ub25lJyk7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgJChPcHRzLmNvbnRhaW5lckNzc1NlbGVjdG9yKycgLmJ1dHRvblVwbG9hZCcpLm9mZignY2xpY2snKTtcclxuICAgICAgICAkKE9wdHMuY29udGFpbmVyQ3NzU2VsZWN0b3IrJyAuYnV0dG9uVXBsb2FkJykub24oJ2NsaWNrJyxmdW5jdGlvbiAoKXtcclxuICAgICAgICAgICAgY29uc29sZS5ncm91cCgnLS0tLS0tLWJ1dHRvblVwbG9hZC0tLS0tLS0tLS0tJyk7XHJcbiAgICAgICAgICAgIGxldCBmaWxlSW5wdXQ9JCgnI2lucHV0R3JvdXBBdHRhY2hlRmlsZScpO1xyXG4gICAgICAgICAgICBpZihmaWxlSW5wdXRbMF0uZmlsZXMubGVuZ3RoPDEpe1xyXG4gICAgICAgICAgICAgICAgVG9hc3QuY3JlYXRlKFwiSGliYSFcIiwgJ1bDoWxsYXN6b24ga2kgZsOhamx0IScsIFRPQVNUX1NUQVRVUy5EQU5HRVIsIDEwMDAwKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygkKE9wdHMuY29udGFpbmVyQ3NzU2VsZWN0b3IpLmZpbmQoJ2Zvcm0uc3VwcGxpZXJGb3JtJylbMF0pO1xyXG4gICAgICAgICAgICBsZXQgZGF0YT0gbmV3IEZvcm1EYXRhKCQoT3B0cy5jb250YWluZXJDc3NTZWxlY3RvcikuZmluZCgnZm9ybS5zdXBwbGllckZvcm0nKVswXSk7XHJcbiAgICAgICAgICAgIGRhdGEuYXBwZW5kKGZpbGVJbnB1dC5hdHRyKCduYW1lJyksZmlsZUlucHV0WzBdLmZpbGVzWzBdKTtcclxuXHJcbiAgICAgICAgICAgIHJvb3Quc2VsZWN0ZWRVcGxvYWRGaWxlVG9nZ2xlKGZpbGVJbnB1dCk7XHJcbiAgICAgICAgICAgIGxldCBhamF4VXJsPU9wdHMuVVJMLmF0dGFjaEZpbGUucmVwbGFjZSgnJWlkJScscm9vdC5TdXBwbGllci5pZCk7XHJcblxyXG4gICAgICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XHJcbiAgICAgICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgICAgICB1cmw6YWpheFVybCxcclxuICAgICAgICAgICAgICAgIGRhdGE6ZGF0YSxcclxuICAgICAgICAgICAgICAgIHR5cGU6J1BPU1QnLFxyXG4gICAgICAgICAgICAgICAgY29udGVudFR5cGU6ZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBwcm9jZXNzRGF0YTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBiZWZvcmVTZW5kOiBmdW5jdGlvbigpIHtcclxuXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGRhdGEuc3VjY2Vzcz09dHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QuYWRkQXR0YWNobWVudChkYXRhLmRhdGEuYXR0YWNobWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb3Quc2VsZWN0ZWRVcGxvYWRGaWxlVG9nZ2xlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YS5yZXNwb25zZUpTT04pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJvb3Quc2VsZWN0ZWRVcGxvYWRGaWxlVG9nZ2xlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgYWpheEVycm9yRmllbGRIYW5kbGVyKGRhdGEucmVzcG9uc2VKU09OLmVycm9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2xpY2tOZXc9ZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGRlYnVnKCdjbGlja05ldycpO1xyXG4gICAgICAgIEFQUC5sb2FkTWFpbkNvbnRlbnQoT3B0cy5VUkwuY3JlYXRlLHJvb3QuY2xpY2tOZXdDYWxsQmFjayk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jbGlja05ld0NhbGxCYWNrPWZ1bmN0aW9uICgpIHtcclxuICAgICAgICBkZWJ1ZygnY2FsbGJhY2tOZXcnKTtcclxuICAgICAgICByb290LlN1cHBsaWVyPW5ldyB3aW5kb3cuU3VwcGxpZXIoKTtcclxuICAgICAgICByb290LmluaXRWaWV3RGV0YWlscygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kYXRhdGFibGVSb3dBY3Rpb25FZGl0PWZ1bmN0aW9uIChyb3dEYXRhLG5vZGUpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnZGF0YXRhYmxlUm93QWN0aW9uRWRpdCBDYWxsZWQnKTtcclxuICAgICAgICAvL09wdHMub25BZnRlckluaXRWaWV3RGV0YWlscz1yb290LmF1dG9maWxsRGV0YWlscztcclxuICAgICAgICBsZXQgYWpheFVybD1PcHRzLlVSTC5lZGl0LnJlcGxhY2UoJyVpZCUnLHJvd0RhdGEuaWQpO1xyXG4gICAgICAgIEFQUC5sb2FkTWFpbkNvbnRlbnQoYWpheFVybCxyb290LmluaXRWaWV3RGV0YWlscyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2RhdGF0YWJsZVJvd0FjdGlvbkVkaXQgRW5kJyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jbGlja09yZGVyRGVsZXRlQ29uZmlybWVkPWZ1bmN0aW9uIChldmVudCl7XHJcbiAgICAgICAgZGVidWcoJ2NsaWNrU3VwcGxpZXJEZWxldGVDb25maXJtZWQnKTtcclxuICAgICAgICBkZWJ1ZyhldmVudCk7XHJcbiAgICAgICAgZGVidWcoZXZlbnQuZGF0YSk7XHJcbiAgICAgICAgJCgnI2RpYWxvZ01vZGFsJykubW9kYWwoJ2hpZGUnKTtcclxuICAgICAgICBsZXQgYWpheERhdGE9e307XHJcbiAgICAgICAgYWpheERhdGEuX3Rva2VuPU9wdHMudG9rZW47XHJcbiAgICAgICAgbGV0IGFqYXhVcmw9T3B0cy5VUkwuZGVzdHJveS5yZXBsYWNlKCclaWQlJyxldmVudC5kYXRhLmlkKTtcclxuICAgICAgICBhamF4RGF0YS5fdG9rZW49JCgnaW5wdXRbbmFtZT1fdG9rZW5dJykudmFsKCk7XHJcbiAgICAgICAgY29uc29sZS5sb2coYWpheFVybCk7XHJcbiAgICAgICAgY29uc29sZS5sb2coYWpheERhdGEpO1xyXG4gICAgICAgIGxldCByb3c9JChkYXRhVGFibGVDU1NTZWxlY3RvcikuRGF0YVRhYmxlKCkucm93KHJvb3QuZGFkYXRhdGFibGVSb3dBY3Rpb25DYWxsZXJOb2RlLnBhcmVudHMoJ3RyJykpO1xyXG4gICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgIHVybDphamF4VXJsLFxyXG4gICAgICAgICAgICBkYXRhOmFqYXhEYXRhLFxyXG4gICAgICAgICAgICBtZXRob2Q6XCJERUxFVEVcIixcclxuICAgICAgICAgICAgc3VjY2VzczpmdW5jdGlvbiAoZGF0YSl7XHJcbiAgICAgICAgICAgICAgICBpZihkYXRhLnN1Y2Nlc3M9PXRydWUpe1xyXG4gICAgICAgICAgICAgICAgICAgIHJvdy5yZW1vdmUoKS5kcmF3KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcm9vdC5kYWRhdGF0YWJsZVJvd0FjdGlvbkNhbGxlck5vZGU9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICB9XHJcbiAgICBsZXQgZGF0YXRhYmxlUm93QWN0aW9uQ2FsbGVyTm9kZT1mYWxzZTtcclxuXHJcbiAgICB0aGlzLmRhdGF0YWJsZVJvd0FjdGlvbkRlbGV0ZT1mdW5jdGlvbiAocm93RGF0YSxub2RlKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2RhdGF0YWJsZVJvd0FjdGlvbkRlbGV0ZSBDYWxsZWQnKTtcclxuICAgICAgICByb290LmRhZGF0YXRhYmxlUm93QWN0aW9uQ2FsbGVyTm9kZT1ub2RlO1xyXG4gICAgICAgICQoJyNkaWFsb2dNb2RhbCcpLm9uKCdzaG93LmJzLm1vZGFsJywgZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICAgICAgICAgIC8vIElmIG5lY2Vzc2FyeSwgeW91IGNvdWxkIGluaXRpYXRlIGFuIEFKQVggcmVxdWVzdCBoZXJlIChhbmQgdGhlbiBkbyB0aGUgdXBkYXRpbmcgaW4gYSBjYWxsYmFjaykuXHJcbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgbW9kYWwncyBjb250ZW50LiBXZSdsbCB1c2UgalF1ZXJ5IGhlcmUsIGJ1dCB5b3UgY291bGQgdXNlIGEgZGF0YSBiaW5kaW5nIGxpYnJhcnkgb3Igb3RoZXIgbWV0aG9kcyBpbnN0ZWFkLlxyXG4gICAgICAgICAgICB2YXIgbW9kYWwgPSAkKHRoaXMpO1xyXG4gICAgICAgICAgICBtb2RhbC5maW5kKCcubW9kYWwtdGl0bGUnKS50ZXh0KCdNZWdlcsWRc8OtdMOpcyAnKTtcclxuICAgICAgICAgICAgbW9kYWwuZmluZCgnLm1vZGFsLWJvZHknKS50ZXh0KCdCaXp0b3NhbiB0w7ZybGkgYSBiZXN6w6FsbMOtdMOzdD8nKTtcclxuICAgICAgICAgICAgbW9kYWwuZmluZCgnLmJ1dHRvblllcycpLm9mZignY2xpY2snKTtcclxuICAgICAgICAgICAgbW9kYWwuZmluZCgnLmJ1dHRvblllcycpLm9uKCdjbGljaycse2lkOnJvd0RhdGEuaWR9LHJvb3QuY2xpY2tPcmRlckRlbGV0ZUNvbmZpcm1lZCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgJCgnI2RpYWxvZ01vZGFsJykubW9kYWwoJ3Nob3cnKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrPWZ1bmN0aW9uIChldmVudCl7XHJcbiAgICAgICAgZGVidWcoJ2RhdGF0YWJsZVJvd0FjdGlvbkJ1dHRvbkNsaWNrJyk7XHJcbiAgICAgICAgbGV0IG5vZGU9JChldmVudFswXS5jdXJyZW50VGFyZ2V0KTtcclxuICAgICAgICBsZXQgcm93PSQoZGF0YVRhYmxlQ1NTU2VsZWN0b3IpLkRhdGFUYWJsZSgpLnJvdyhub2RlLnBhcmVudHMoJ3RyJykpO1xyXG4gICAgICAgIGxldCByb3dEYXRhPXJvdy5kYXRhKCk7XHJcbiAgICAgICAgbGV0IGFjdGlvbk5hbWU9J2RhdGF0YWJsZVJvd0FjdGlvbicrbm9kZS5kYXRhKCdidXR0b250eXBlJykuY2FwaXRhbGl6ZSgpO1xyXG4gICAgICAgIGlmICh0eXBlb2Ygcm9vdFthY3Rpb25OYW1lXSA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByb290W2FjdGlvbk5hbWVdKHJvd0RhdGEsbm9kZSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbml0Vmlld0xpc3QgPSBmdW5jdGlvbiAob3B0aW9ucz17fSkge1xyXG4gICAgICAgIGRlYnVnKCdsaXN0dmlldyBpbmljaWFsaXphdGlvbicpO1xyXG4gICAgICAgIGRhdGFUYWJsZUNTU1NlbGVjdG9yPU9wdHMuY29udGFpbmVyQ3NzU2VsZWN0b3IrJyAuZGF0YVRhYmxlJzsgLy9cclxuXHJcbiAgICAgICAgbGV0IGNvbE51bT0kKGRhdGFUYWJsZUNTU1NlbGVjdG9yKycgdGhlYWQgdGgnKS5sZW5ndGg7IC8vYnV0dG9ucyBpbnNlcnQgcG9zaXRpb24gbmVlZFxyXG4gICAgICAgIEFQUC5zZXRPcHRzKHtcclxuICAgICAgICAgICAgZGF0YXRhYmxlQWN0aW9uQnV0dG9uQ2xpY2tDYWxsQmFjazpyb290LmNsaWNrTmV3LFxyXG4gICAgICAgICAgICBkYXRhdGFibGVSb3dBY3Rpb25CdXR0b25DbGlja0NhbGxCYWNrOnJvb3QuZGF0YXRhYmxlUm93QWN0aW9uQnV0dG9uQ2xpY2ssXHJcblxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgbGV0IG9yZGVyRGlyZWN0aXZlPU9wdHMuZGF0YVRhYmxlLm9yZGVyRGlyZWN0aXZlO1xyXG4gICAgICAgIGlmKHR5cGVvZiBvcHRpb25zWydvcmRlckRpcmVjdGl2ZSddIT0ndW5kZWZpbmVkJyl7XHJcbiAgICAgICAgICAgIG9yZGVyRGlyZWN0aXZlPW9wdGlvbnNbJ29yZGVyRGlyZWN0aXZlJ107XHJcbiAgICAgICAgfVxyXG4gICAgICAgICQoZGF0YVRhYmxlQ1NTU2VsZWN0b3IpLkRhdGFUYWJsZSgge1xyXG4gICAgICAgICAgICBsYW5ndWFnZToge1xyXG4gICAgICAgICAgICAgICAgdXJsOiAnLy9jZG4uZGF0YXRhYmxlcy5uZXQvcGx1Zy1pbnMvMS4xMC4yNC9pMThuL0h1bmdhcmlhbi5qc29uJ1xyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgLy9cImFqYXhcIjogXCJ7e2Fzc2V0KCdleGFwbWxlMi5qc29uJyl9fVwiLFxyXG4gICAgICAgICAgICBcImFqYXhcIjogT3B0cy5VUkwuZ2V0RGF0YVRhYmxlQ29udGVudCxcclxuICAgICAgICAgICAgXCJjb2x1bW5EZWZzXCI6IFtcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBcInRhcmdldHNcIjogY29sTnVtLTEsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJyZW5kZXJcIjogZnVuY3Rpb24gKCBkYXRhLCB0eXBlLCByb3cgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBidXR0b25zPUFQUC5kYXRhdGFibGVBZGRSb3dUcmFzaEJ1dHRvbigwLGFyZ3VtZW50cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnMrPUFQUC5kYXRhdGFibGVBZGRSb3dFZGl0QnV0dG9uKDAsYXJndW1lbnRzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1dHRvbnM7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgXCJ0YXJnZXRzXCI6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJyZW5kZXJcIjogZnVuY3Rpb24gKCBkYXRhLCB0eXBlLCByb3cgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlID09PSBcInNvcnRcIiA/IGRhdGEubGF0aW5pc2UoKSA6IGRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAvL3sgXCJ2aXNpYmxlXCI6IGZhbHNlLCAgXCJ0YXJnZXRzXCI6IFsgMCBdIH1cclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgYnV0dG9uczp7XHJcbiAgICAgICAgICAgICAgICBidXR0b25zOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgJ2V4Y2VsJywncGRmJyxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZDogJ3ByaW50JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy90ZXh0OiAnUHJpbnQgY3VycmVudCBwYWdlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ3RpdGxlIGN1c3RvbSB0ZXh0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ21lc3NhZ2VUb3AnOiAnTWVzc2FnZSBPbiBUb3AnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvUHJpbnQ6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIC8qKi9cclxuXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnw5pqIGZlbHZpdGVsZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tc3VjY2VzcyBuZXdJdGVtJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cjp7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOjEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGI6MlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEnOiduZXdJdGVtJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0OiBmdW5jdGlvbihhcGksIG5vZGUsIGNvbmZpZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChub2RlKS5yZW1vdmVDbGFzcygndWktYnV0dG9uJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBmdW5jdGlvbiAoIGUsIGR0LCBub2RlLCBjb25maWcgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUFAuZGF0YXRhYmxlQWN0aW9uQnV0dG9uQ2xpY2tDYWxsQmFjayhhcmd1bWVudHMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY29uc29sZS5sb2coZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGNvbmZpZyk7Ki9cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIFwiY29sdW1uc1wiOiBbXHJcbiAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcImlkXCIgfSxcclxuICAgICAgICAgICAgICAgIHsgXCJkYXRhXCI6IFwibmFtZVwiIH0sXHJcbiAgICAgICAgICAgICAgICB7IFwiZGF0YVwiOiBcImhvb3JleWNhSWRcIiB9LFxyXG4gICAgICAgICAgICAgICAgeyBcImRhdGFcIjogXCJuYW1lSWRcIiB9LFxyXG4gICAgICAgICAgICAgICAgeyBcImRhdGFcIjogXCJjcmVhdGVkX2F0XCIgfSxcclxuICAgICAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIFwib3JkZXJcIjogb3JkZXJEaXJlY3RpdmUsXHJcbiAgICAgICAgICAgIFwic3RhdGVTYXZlXCI6IHRydWUsXHJcbiAgICAgICAgICAgIFwiZHJhd0NhbGxiYWNrXCI6IGZ1bmN0aW9uKCBzZXR0aW5ncyApIHtcclxuICAgICAgICAgICAgICAgIEFQUC5kYXRhdGFibGVBZGRSb3dBY3Rpb24oZGF0YVRhYmxlQ1NTU2VsZWN0b3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSApO1xyXG4gICAgICAgIGRlYnVnKCdsaXN0dmlldyBlbmQnKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmF1dG9maWxsRGV0YWlscz1mdW5jdGlvbiAoKXtcclxuICAgICAgICBkZWJ1ZygnbnllcmVzcmUgYWxsdW5rJyk7XHJcbiAgICAgICAgbGV0IHJhbmRvbU51bWJlcj1nZXRSYW5kb21JbnQoOTk5OSk7XHJcbiAgICAgICAgJCgnaW5wdXRbbmFtZT1uYW1lXScpLnZhbCgnQmVzemFsw610w7MnK3JhbmRvbU51bWJlcik7XHJcbiAgICAgICAgJCgnaW5wdXRbbmFtZT1ob29yZXljYUlkXScpLnZhbCgnaGInK3JhbmRvbU51bWJlcik7XHJcbiAgICAgICAgJCgnaW5wdXRbbmFtZT1uYW1lSWRdJykudmFsKCdiZScrcmFuZG9tTnVtYmVyKTtcclxuICAgICAgICAkKCdpbnB1dFtuYW1lPW9yZGVyRW1haWxdJykudmFsKCdrYXBjc29sYXQnK3JhbmRvbU51bWJlcisnQGJlc3phbGxpdG8uaHUnKTtcclxuICAgICAgICAkKCdpbnB1dFtuYW1lPW9yZGVyRW1haWwyXScpLnZhbCgnaW5mb3JtYWNpbycrcmFuZG9tTnVtYmVyKydAYmVzemFsbGl0by5odScpO1xyXG4gICAgICAgICQoJ2lucHV0W25hbWU9YWRkcmVzc10nKS52YWwoJzg5ODkgU3VwcGxpZXIgdXRjYSAnK3JhbmRvbU51bWJlcik7XHJcbiAgICAgICAgJCgnaW5wdXRbbmFtZT1tYWlsaW5nQWRkcmVzc10nKS52YWwoJzg5ODkgUG9zdGFpIMO6dCcrcmFuZG9tTnVtYmVyKTtcclxuICAgICAgICAkKCdpbnB1dFtuYW1lPXBob25lXScpLnZhbCgnKzM2MzAxMjM0NTY3Jyk7XHJcbiAgICAgICAgJCgnaW5wdXRbbmFtZT1mYXhdJykudmFsKCczNjMwODg4OTk5OScpO1xyXG4gICAgICAgICQoJ2lucHV0W25hbWU9Y3VzdG9tZXJTZXJ2aWNlUGhvbmVdJykudmFsKCcrMzY3NjEyMzQ0NDQnKTtcclxuICAgICAgICAkKCd0ZXh0YXJlYVtuYW1lPW5vdGVdJykudmFsKCdNZWdqZWd5emVtICcrcmFuZG9tTnVtYmVyKTtcclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLnRlc3RNb2RlPWZ1bmN0aW9uICgpIHtcclxuICAgICAgICBjb25zb2xlLmRlYnVnKCchISEhdGVzdG1vZGUgISEhIScpO1xyXG4gICAgICAgIHJvb3QuU3VwcGxpZXIgPSBuZXcgd2luZG93LlN1cHBsaWVyKHtcclxuICAgICAgICAgICAgJ2NvbnRhY3QnOltcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpZDoyLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpZDozLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDozLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOidLw7NzYSBWZXJvbmlrYScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsOidzemFtbGF6YXM0QGZ1bmtjaW8uaHUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaG9uZTone3tmb3JtYXR0ZXJQaG9uZU51bWJlcihcIiszNjIwNDU4OTE4MFwiKX19J1xyXG4gICAgICAgICAgICB9XHJcbiovXHJcblxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgT3B0cy5vbkFmdGVySW5pdFZpZXdEZXRhaWxzPXJvb3QuYXV0b2ZpbGxEZXRhaWxzO1xyXG4gICAgICAgIEFQUC5sb2FkTWFpbkNvbnRlbnQoT3B0cy5VUkwuY3JlYXRlLHJvb3QuaW5pdFZpZXdEZXRhaWxzKTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5pdD1mdW5jdGlvbiAob3B0aW9ucyxTdXBwbGllckl0ZW0pe1xyXG4gICAgICAgICQuZXh0ZW5kKE9wdHMsIG9wdGlvbnMpO1xyXG5cclxuICAgICAgICBpZihPcHRzLnRlc3RNb2RlKXtcclxuICAgICAgICAgICAgcmV0dXJuIHJvb3QudGVzdE1vZGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoU3VwcGxpZXJJdGVtKXtcclxuICAgICAgICAgICAgcm9vdC5TdXBwbGllcj1TdXBwbGllckl0ZW1cclxuICAgICAgICB9XHJcbiAgICAgICAgcm9vdC5pbml0Vmlld0xpc3QoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlbmRlckF0dGFjaG1lbnQ9ZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgbGV0IHJvd051bT0xO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdyZW5kZXJpbmdBdHRhY2htZW50Jyk7XHJcbiAgICAgICAgJC5lYWNoKHJvb3QuU3VwcGxpZXIuZ2V0RGF0YSgnYXR0YWNobWVudCcpLGZ1bmN0aW9uICgpe1xyXG4gICAgICAgICAgICBsZXQgYXR0YWNobWVudERhdGE9dGhpcztcclxuICAgICAgICAgICAgYXR0YWNobWVudERhdGEucm93TnVtPXJvd051bTtcclxuICAgICAgICAgICAgZGF0ZT1uZXcgRGF0ZShhdHRhY2htZW50RGF0YS5jcmVhdGVkX2F0KTtcclxuICAgICAgICAgICAgYXR0YWNobWVudERhdGEuZGF0ZT1kYXRlLnRvTG9jYWxlU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIGF0dGFjaG1lbnREYXRhLmxpbms9YXR0YWNobWVudERhdGEuUHVibGljVXJsKycvJythdHRhY2htZW50RGF0YS5maWxlbmFtZTtcclxuICAgICAgICAgICAgbGV0IHRlbXBsYXRlPSQoJ3RlbXBsYXRlW2RhdGEtbmFtZT1cInN1cHBsaWVyQXR0YWNobWVudFRhYmxlUm93XCJdJykuaHRtbCgpXHJcbiAgICAgICAgICAgIGxldCByZW5kZXI9TXVzdGFjaGUucmVuZGVyKHRlbXBsYXRlLGF0dGFjaG1lbnREYXRhKTtcclxuICAgICAgICAgICAgJCgnLmF0dGFjaG1lbnRUYWJsZSB0Ym9keScpLmFwcGVuZChyZW5kZXIpO1xyXG4gICAgICAgICAgICByb3dOdW0rKztcclxuICAgICAgICB9KTtcclxuICAgICAgICByb290LmJpbmRBdHRhY2htZW50Q2xpY2tBY3Rpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFkZEF0dGFjaG1lbnQ9ZnVuY3Rpb24gKGF0dGFjaG1lbnREYXRhKXtcclxuICAgICAgICBjb25zb2xlLmxvZyhhdHRhY2htZW50RGF0YSk7XHJcbiAgICAgICAgbGV0IENTU1NlbGVjdG9yRm9ybT1PcHRzLmNvbnRhaW5lckNzc1NlbGVjdG9yKycgLnN1cHBsaWVyRm9ybSc7XHJcbiAgICAgICAgcm9vdC5TdXBwbGllci5hdHRhY2htZW50LnB1c2goYXR0YWNobWVudERhdGEpO1xyXG4gICAgICAgIGF0dGFjaG1lbnREYXRhLnJvd051bT1yb290LlN1cHBsaWVyLmF0dGFjaG1lbnQubGVuZ3RoO1xyXG4gICAgICAgIGxldCB0ZW1wbGF0ZT0kKCd0ZW1wbGF0ZVtkYXRhLW5hbWU9XCJzdXBwbGllckF0dGFjaG1lbnRUYWJsZVJvd1wiXScpLmh0bWwoKVxyXG4gICAgICAgIGxldCByZW5kZXI9TXVzdGFjaGUucmVuZGVyKHRlbXBsYXRlLGF0dGFjaG1lbnREYXRhKTtcclxuICAgICAgICAkKENTU1NlbGVjdG9yRm9ybSsnIC5hdHRhY2htZW50VGFibGUgdGJvZHknKS5hcHBlbmQocmVuZGVyKTtcclxuICAgICAgICByb290LmJpbmRDb250YWN0Q2xpY2tBY3Rpb24oKTtcclxuICAgICAgICBUb2FzdC5lbmFibGVUaW1lcnMoZmFsc2UpO1xyXG4gICAgICAgIFRvYXN0LmNyZWF0ZShcIkbDoWpsIGhvenrDoWFkdmEhXCIsIGF0dGFjaG1lbnREYXRhLm9yaWdpbmFsX2ZpbGVuYW1lK1wiIGbDoWpsIGhvenrDoWFkdmFcIiwgVE9BU1RfU1RBVFVTLlNVQ0NFU1MsNTAwMCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMucmVzZXRDb250YWN0VGFibGU9ZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgJCgnLmNvbnRhY3RUYWJsZSB0Ym9keSB0cicpLnJlbW92ZSgpO1xyXG4gICAgICAgIHJvb3QucmVuZGVyQ29udGFjdCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZW5kZXJDb250YWN0PWZ1bmN0aW9uICgpe1xyXG4gICAgICAgIGxldCByb3dOdW09MTtcclxuICAgICAgICBjb25zb2xlLmxvZygncmVuZGVyaW5nQ29udGFjdHMnKTtcclxuICAgICAgICAkLmVhY2gocm9vdC5TdXBwbGllci5nZXREYXRhKCdjb250YWN0JyksZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgICAgIGxldCBjb250YWN0RGF0YT10aGlzO1xyXG4gICAgICAgICAgICBjb250YWN0RGF0YS5yb3dOdW09cm93TnVtO1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKGNvbnRhY3REYXRhKTtcclxuICAgICAgICAgICAgbGV0IHRlbXBsYXRlPSQoJ3RlbXBsYXRlW2RhdGEtbmFtZT1cInN1cHBsaWVyQ29udGFjdFRhYmxlUm93XCJdJykuaHRtbCgpXHJcbiAgICAgICAgICAgIGxldCByZW5kZXI9TXVzdGFjaGUucmVuZGVyKHRlbXBsYXRlLGNvbnRhY3REYXRhKTtcclxuICAgICAgICAgICAgJCgnLmNvbnRhY3RUYWJsZSB0Ym9keScpLmFwcGVuZChyZW5kZXIpO1xyXG4gICAgICAgICAgICByb3dOdW0rKztcclxuICAgICAgICB9KTtcclxuICAgICAgICByb290LmJpbmRDb250YWN0Q2xpY2tBY3Rpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmJpbmRDb250YWN0Q2xpY2tBY3Rpb24gPWZ1bmN0aW9uICgpe1xyXG4gICAgICAgIGxldCBub2RlPSQoJy5jb250YWN0VGFibGUgLmJ1dHRvbkRlbGV0ZScpO1xyXG4gICAgICAgIG5vZGUudW5iaW5kKCdjbGljaycpO1xyXG4gICAgICAgIG5vZGUuYmluZCgnY2xpY2snLHJvb3QuY29udGFjdERlbGV0ZUNsaWNrKTtcclxuXHJcbiAgICAgICAgbm9kZT0kKCcuY29udGFjdFRhYmxlIC5idXR0b25FZGl0Jyk7XHJcbiAgICAgICAgbm9kZS51bmJpbmQoJ2NsaWNrJyk7XHJcbiAgICAgICAgbm9kZS5iaW5kKCdjbGljaycscm9vdC5jb250YWN0RWRpdENsaWNrKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5iaW5kQXR0YWNobWVudENsaWNrQWN0aW9uPWZ1bmN0aW9uICgpe1xyXG4gICAgICAgIGxldCBub2RlPSQoJy5hdHRhY2htZW50VGFibGUgLmJ1dHRvbkRlbGV0ZScpO1xyXG4gICAgICAgIG5vZGUudW5iaW5kKCdjbGljaycpO1xyXG4gICAgICAgIG5vZGUuYmluZCgnY2xpY2snLHJvb3QuYXR0YWNobWVudERlbGV0ZUNsaWNrKTtcclxuICAgIH1cclxuICAgIGxldCBjdXJyZW50QXR0YWNobWVudFJvdz1mYWxzZTtcclxuICAgIHRoaXMuYXR0YWNobWVudERlbGV0ZUNsaWNrPWZ1bmN0aW9uIChldmVudCl7XHJcbiAgICAgICAgbGV0IHJvdz0kKHRoaXMpLmNsb3Nlc3QoJ3RyJyk7XHJcbiAgICAgICAgbGV0IGlkPXJvdy5maW5kKCdpbnB1dFtuYW1lPWF0dGFjaG1lbnRJZF0nKS52YWwoKTtcclxuICAgICAgICBsZXQgYWpheFVybD1PcHRzLlVSTC5kZXRhY2hGaWxlLnJlcGxhY2UoJyVpZCUnLHJvb3QuU3VwcGxpZXIuaWQpO1xyXG4gICAgICAgIC8vbGV0IGRhdGE9IG5ldyBGb3JtRGF0YSgkKE9wdHMuY29udGFpbmVyQ3NzU2VsZWN0b3IpLmZpbmQoJ2Zvcm0uc3VwcGxpZXJGb3JtJylbMF0pO1xyXG4gICAgICAgIC8vZGF0YS5hcHBlbmQoZmlsZUlucHV0LmF0dHIoJ25hbWUnKSxmaWxlSW5wdXRbMF0uZmlsZXNbMF0pO1xyXG4gICAgICAgIGxldCBkYXRhPXt9O1xyXG4gICAgICAgIGRhdGEuX3Rva2VuPSQoJ2lucHV0W25hbWU9XCJfdG9rZW5cIl0nKS52YWwoKTtcclxuICAgICAgICBkYXRhLmF0dGFjaGVtbnRJZD1pZDtcclxuICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICB1cmw6YWpheFVybCxcclxuICAgICAgICAgICAgZGF0YTpkYXRhLFxyXG4gICAgICAgICAgICB0eXBlOidQT1NUJyxcclxuICAgICAgICAgICAgLy9jb250ZW50VHlwZTpmYWxzZSxcclxuICAgICAgICAgICAgLy9wcm9jZXNzRGF0YTogZmFsc2UsXHJcbiAgICAgICAgICAgIGJlZm9yZVNlbmQ6IGZ1bmN0aW9uKCkge1xyXG5cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coZGF0YSk7XHJcbiAgICAgICAgICAgICAgICBpZihkYXRhLnN1Y2Nlc3M9PXRydWUpe1xyXG4gICAgICAgICAgICAgICAgICAgIHJvb3QuU3VwcGxpZXIuYXR0YWNobWVudD1yb290LlN1cHBsaWVyLmF0dGFjaG1lbnQuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAodmFsdWUsaW5kZXgsYXJyKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5pZCE9PWRhdGEuZGF0YS4gICBhdHRhY2htZW50LmlkKjEpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAgdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgICAgIC8vcm93LnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJvb3QucmVzZXRBdHRhY2htZW50VGFibGUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEucmVzcG9uc2VKU09OKTtcclxuICAgICAgICAgICAgICAgIHJvb3Quc2VsZWN0ZWRVcGxvYWRGaWxlVG9nZ2xlKCk7XHJcbiAgICAgICAgICAgICAgICBhamF4RXJyb3JGaWVsZEhhbmRsZXIoZGF0YS5yZXNwb25zZUpTT04uZXJyb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMucmVzZXRBdHRhY2htZW50VGFibGU9ZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgJCgnLmF0dGFjaG1lbnRUYWJsZSB0Ym9keSB0cicpLnJlbW92ZSgpO1xyXG4gICAgICAgIHJvb3QucmVuZGVyQXR0YWNobWVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY29udGFjdERlbGV0ZUNsaWNrPWZ1bmN0aW9uIChldmVudCl7XHJcbiAgICAgICAgbGV0IHJvdz0kKHRoaXMpLmNsb3Nlc3QoJ3RyJyk7XHJcbiAgICAgICAgbGV0IGlkPXJvdy5maW5kKCdpbnB1dFtuYW1lPWNvbnRhY3RJZF0nKS52YWwoKTtcclxuICAgICAgICByb290LlN1cHBsaWVyLmNvbnRhY3Q9cm9vdC5TdXBwbGllci5jb250YWN0LmZpbHRlcihcclxuICAgICAgICAgICAgZnVuY3Rpb24gKHZhbHVlLGluZGV4LGFycil7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUuaWQhPT1pZCoxKXtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICAgIHJvdy5yZW1vdmUoKTtcclxuICAgICAgICByb290LnJlc2V0Q29udGFjdFRhYmxlKCk7XHJcbiAgICB9XHJcbiAgICByb290LmdldENvbnRhY3RQb3B1cFdvcmtmbG93ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBjb250YWN0UG9wdXBXb3JrZmxvdztcclxuICAgIH1cclxuICAgIHJvb3Quc2V0Q29udGFjdFBvcHVwV29ya2Zsb3cgPSBmdW5jdGlvbiAoc3RhdHVzKSB7XHJcbiAgICAgICAgY29udGFjdFBvcHVwV29ya2Zsb3c9c3RhdHVzO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLmNvbnRhY3RFZGl0Q2xpY2s9ZnVuY3Rpb24gKGV2ZW50KXtcclxuICAgICAgICAvL2NvbnNvbGUubG9nKHRoaXMpO1xyXG4gICAgICAgIGxldCByb3c9JCh0aGlzKS5jbG9zZXN0KCd0cicpO1xyXG4gICAgICAgIGxldCBpZD1yb3cuZmluZCgnaW5wdXRbbmFtZT1jb250YWN0SWRdJykudmFsKCk7XHJcbiAgICAgICAgcm9vdC5zZXRDb250YWN0UG9wdXBXb3JrZmxvdygnZWRpdCcpO1xyXG4gICAgICAgIEFQUC5Db250YWN0UG9wVXAubG9hZERhdGEoaWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZ2V0U3VwcGxpZXI9ZnVuY3Rpb24gKCl7XHJcbiAgICAgICAgcmV0dXJuIHJvb3QuU3VwcGxpZXI7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbnRhY3RBY3Rpb249ZnVuY3Rpb24gKGNvbnRhY3REYXRhKXtcclxuICAgICAgICBjb25zb2xlLmxvZygnbmFoIG1vc3Qga2VsbGVuZSBtZWcgdmFsYW1pdCBjc2luYWxuaS4nKVxyXG4gICAgICAgIGlmKHJvb3QuZ2V0Q29udGFjdFBvcHVwV29ya2Zsb3coKT09J25ldycpe1xyXG4gICAgICAgICAgICByb290LmFkZENvbnRhY3QoY29udGFjdERhdGEpO1xyXG4gICAgICAgIH1lbHNlIGlmKHJvb3QuZ2V0Q29udGFjdFBvcHVwV29ya2Zsb3coKT09J2VkaXQnKXtcclxuICAgICAgICAgICAgcm9vdC5lZGl0Q29udGFjdChjb250YWN0RGF0YS5pZCxjb250YWN0RGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZWRpdENvbnRhY3Q9ZnVuY3Rpb24gKGlkLGNvbnRhY3REYXRhKXtcclxuXHJcbiAgICAgICAgbGV0IG5ld0NvbnRhY3RzPVtdO1xyXG4gICAgICAgICQuZWFjaChyb290LlN1cHBsaWVyLmdldERhdGEoJ2NvbnRhY3QnKSxmdW5jdGlvbiAoaW5kZXgpe1xyXG4gICAgICAgICAgICBpZih0aGlzLmlkPT1pZCl7XHJcbiAgICAgICAgICAgICAgICBuZXdDb250YWN0cy5wdXNoKGNvbnRhY3REYXRhKTtcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICBuZXdDb250YWN0cy5wdXNoKHRoaXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcm9vdC5TdXBwbGllci5jb250YWN0PW5ld0NvbnRhY3RzO1xyXG4gICAgICAgIHJvb3QucmVzZXRDb250YWN0VGFibGUoKTtcclxuICAgICAgICBUb2FzdC5jcmVhdGUoXCJLYXBjc29sYXQgYWRhdGFpIG3Ds2Rvc8OtdHZhIVwiLCBjb250YWN0RGF0YS5uYW1lK1wiIG5ldsWxIGthcG9jc29sYXR0YXJ0w7MgbcOzZG9zw610dmFcIiwgVE9BU1RfU1RBVFVTLlNVQ0NFU1MsNTAwMCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFkZENvbnRhY3Q9ZnVuY3Rpb24gKGNvbnRhY3REYXRhKXtcclxuICAgICAgICAvKlxyXG4gICAgICAgIGZlbCBrZWxsIHZlbm5pIGEgc29yYmFcclxuICAgICAgICAgKi9cclxuICAgICAgICByb290LlN1cHBsaWVyLmNvbnRhY3QucHVzaChjb250YWN0RGF0YSk7XHJcbiAgICAgICAgY29udGFjdERhdGEucm93TnVtPXJvb3QuU3VwcGxpZXIuY29udGFjdC5sZW5ndGg7XHJcbiAgICAgICAgbGV0IHRlbXBsYXRlPSQoJ3RlbXBsYXRlW2RhdGEtbmFtZT1cInN1cHBsaWVyQ29udGFjdFRhYmxlUm93XCJdJykuaHRtbCgpXHJcbiAgICAgICAgbGV0IHJlbmRlcj1NdXN0YWNoZS5yZW5kZXIodGVtcGxhdGUsY29udGFjdERhdGEpO1xyXG4gICAgICAgICQoJy5jb250YWN0VGFibGUgdGJvZHknKS5hcHBlbmQocmVuZGVyKTtcclxuICAgICAgICByb290LmJpbmRDb250YWN0Q2xpY2tBY3Rpb24oKTtcclxuICAgICAgICBUb2FzdC5lbmFibGVUaW1lcnMoZmFsc2UpO1xyXG4gICAgICAgIFRvYXN0LmNyZWF0ZShcIkthcGNzb2xhdCB0YXJ0w7MgaG96esOhYWR2YSFcIiwgY29udGFjdERhdGEubmFtZStcIiBuZXbFsSBrYXBvY3NvbGF0dGFydMOzIGhvenrDoWFkdmFcIiwgVE9BU1RfU1RBVFVTLlNVQ0NFU1MsNTAwMCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMuY29uc3RydWN0KG9wdGlvbnMsU3VwcGxpZXJJdGVtKTtcclxufTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEsSUFBRyxPQUFPQSxRQUFRLEtBQUcsV0FBVyxFQUFDO0VBQUEsSUFDdkJBLFNBQVEsMEJBQUFDLFVBQUE7SUFFVjtBQUNSO0FBQ0E7SUFDUSxTQUFBQyxVQUFhQyxJQUFJLEVBQUNDLE9BQU8s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\n//# sourceURL=webpack-internal:///./resources/js/admin/supplier.js\n\n}");
|
|
|
|
/***/ }
|
|
|
|
/******/ });
|
|
/************************************************************************/
|
|
/******/
|
|
/******/ // startup
|
|
/******/ // Load entry module and return exports
|
|
/******/ // This entry module can't be inlined because the eval-source-map devtool is used.
|
|
/******/ __webpack_modules__["./resources/js/admin/dashboard.js"]();
|
|
/******/ __webpack_modules__["./resources/js/admin/priceList.js"]();
|
|
/******/ __webpack_modules__["./resources/js/admin/priceListProfitCenter.js"]();
|
|
/******/ __webpack_modules__["./resources/js/admin/product.js"]();
|
|
/******/ __webpack_modules__["./resources/js/admin/profitCenter.js"]();
|
|
/******/ var __webpack_exports__ = {};
|
|
/******/ __webpack_modules__["./resources/js/admin/supplier.js"]();
|
|
/******/
|
|
/******/ })()
|
|
; |