"use strict";
(self["webpackChunkiride"] = self["webpackChunkiride"] || []).push([["assets_js_components_iwcomponents_js"],{
/***/ "./assets/js/components/iwcomponents.js":
/*!**********************************************!*\
!*** ./assets/js/components/iwcomponents.js ***!
\**********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ "./node_modules/core-js/modules/es.symbol.js");
/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ "./node_modules/core-js/modules/es.symbol.description.js");
/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ "./node_modules/core-js/modules/es.symbol.iterator.js");
/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var core_js_modules_es_array_every_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.every.js */ "./node_modules/core-js/modules/es.array.every.js");
/* harmony import */ var core_js_modules_es_array_every_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_every_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ "./node_modules/core-js/modules/es.array.filter.js");
/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ "./node_modules/core-js/modules/es.array.find.js");
/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.for-each.js */ "./node_modules/core-js/modules/es.array.for-each.js");
/* harmony import */ var core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.from.js */ "./node_modules/core-js/modules/es.array.from.js");
/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ "./node_modules/core-js/modules/es.array.includes.js");
/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_8__);
/* harmony import */ var core_js_modules_es_array_is_array_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.array.is-array.js */ "./node_modules/core-js/modules/es.array.is-array.js");
/* harmony import */ var core_js_modules_es_array_is_array_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_is_array_js__WEBPACK_IMPORTED_MODULE_9__);
/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ "./node_modules/core-js/modules/es.array.iterator.js");
/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_10__);
/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ "./node_modules/core-js/modules/es.array.map.js");
/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_11__);
/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ "./node_modules/core-js/modules/es.array.slice.js");
/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_12__);
/* harmony import */ var core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.date.to-string.js */ "./node_modules/core-js/modules/es.date.to-string.js");
/* harmony import */ var core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_13__);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ "./node_modules/core-js/modules/es.function.name.js");
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_14__);
/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.object.entries.js */ "./node_modules/core-js/modules/es.object.entries.js");
/* harmony import */ var core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_15__);
/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.object.keys.js */ "./node_modules/core-js/modules/es.object.keys.js");
/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_16__);
/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js");
/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_17__);
/* harmony import */ var core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.parse-int.js */ "./node_modules/core-js/modules/es.parse-int.js");
/* harmony import */ var core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_18__);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js");
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_19__);
/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ "./node_modules/core-js/modules/es.regexp.to-string.js");
/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_20__);
/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ "./node_modules/core-js/modules/es.string.includes.js");
/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_21__);
/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ "./node_modules/core-js/modules/es.string.iterator.js");
/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_22__);
/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ "./node_modules/core-js/modules/web.dom-collections.for-each.js");
/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_23__);
/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ "./node_modules/core-js/modules/web.dom-collections.iterator.js");
/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_24__);
/* harmony import */ var core_js_modules_web_timers_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! core-js/modules/web.timers.js */ "./node_modules/core-js/modules/web.timers.js");
/* harmony import */ var core_js_modules_web_timers_js__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_timers_js__WEBPACK_IMPORTED_MODULE_25__);
/* harmony import */ var datatables_net_dt__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! datatables.net-dt */ "./node_modules/datatables.net-dt/js/dataTables.dataTables.mjs");
/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js");
/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_27__);
/* harmony import */ var _include_js_utils__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../../../include/js/utils */ "./include/js/utils.js");
/* harmony import */ var _include_js_utils__WEBPACK_IMPORTED_MODULE_28___default = /*#__PURE__*/__webpack_require__.n(_include_js_utils__WEBPACK_IMPORTED_MODULE_28__);
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
/**
* Created by PhpStorm
* User: daniele
* Date: 12/03/21
* Time: 11:30
*/
__webpack_require__(/*! datatables.net-buttons */ "./node_modules/datatables.net-buttons/js/dataTables.buttons.mjs");
__webpack_require__(/*! datatables.net-fixedcolumns */ "./node_modules/datatables.net-fixedcolumns/js/dataTables.fixedColumns.mjs");
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
buildSelect2: function buildSelect2(select) {
var $select = jquery__WEBPACK_IMPORTED_MODULE_27___default()(select);
var placeholder = $select.data("placeholder");
var allowClear = $select.data("view_empty");
var selectValue = $select.data("value");
var keepSelectedAferAjax = $select.data("keep-selected-after-ajax");
var dropdownParent = $select.data("dropdownparent");
if ($select.val() && $select.val().length) selectValue = $select.val();
var url = $select.data("url");
var opts = {
placeholder: placeholder,
allowClear: allowClear,
width: '100%',
tags: true,
dropdownAutoWidth: true,
dropdownParent: dropdownParent ? jquery__WEBPACK_IMPORTED_MODULE_27___default()('#' + dropdownParent) : jquery__WEBPACK_IMPORTED_MODULE_27___default()('body')
};
if (url) {
opts.ajax = {
url: url,
dataType: "json",
data: function data(params) {
var paramsToAjax = $select.data("params");
var ajaxParams = {};
if (paramsToAjax) {
for (var _i = 0, _Object$entries = Object.entries(paramsToAjax); _i < _Object$entries.length; _i++) {
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
key = _Object$entries$_i[0],
value = _Object$entries$_i[1];
if (typeof value === "string") {
if (value.includes("|||")) {
var fields = value.split("|||");
value = jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + fields[0]).val();
if (!value) value = jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + fields[1]).val();
ajaxParams[key] = value;
} else ajaxParams[key] = jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + value).val();
} else ajaxParams[key] = value;
}
}
ajaxParams.search = params.term;
return ajaxParams;
},
processResults: function processResults(data) {
selectValue = $select.val();
jquery__WEBPACK_IMPORTED_MODULE_27___default().each($select.find("option"), function (key, opt) {
if (key > 0) jquery__WEBPACK_IMPORTED_MODULE_27___default()(opt).remove();
});
if (data.items && data.items.length > 0) {
data.items.forEach(function (item) {
var newOption = new Option(item.text, item.id, false, false);
Object.keys(item).forEach(function (key) {
if (key !== "template") {
newOption.dataset[key] = item[key];
}
});
$select.append(newOption);
});
}
if (keepSelectedAferAjax) {
var isMultiple = Array.isArray(selectValue);
selectValue = isMultiple ? selectValue : [selectValue];
var selectedOpts = data.items.filter(function (value) {
return selectValue.includes(value.id.toString());
}).map(function (item) {
return item.id.toString();
});
if (isMultiple) $select.val(selectedOpts);else if (selectedOpts.length > 0) $select.val(selectedOpts[0]);
}
$select.trigger('change');
return {
results: data.items,
data: data
};
}
};
}
opts.templateResult = function (option) {
var data = $select.data("additional-info");
if (!data) data = {};
if (!option.id) return option.text;
data[option.id] = option;
$select.data("additional-info", data);
if (url) {
if (!option.template) return option.text;
return jquery__WEBPACK_IMPORTED_MODULE_27___default()(option.template);
}
var options = $select.data("options");
if (!options) return option.text;
var opt;
for (var i = 0; i < options.length; i++) {
opt = options[i];
if (opt.value === option.id) break;
}
var html = opt.template;
return jquery__WEBPACK_IMPORTED_MODULE_27___default()(html);
};
var trigger_change_event = parseInt($select.data("trigger-change-event"));
$select.select2(opts);
jquery__WEBPACK_IMPORTED_MODULE_27___default()('.select2-selection__rendered').hover(function () {
jquery__WEBPACK_IMPORTED_MODULE_27___default()(this).removeAttr('title');
});
if (!selectValue) return;
var onchange = $select.attr("onchange");
if (!trigger_change_event) $select.attr("onchange", "");
$select.val(selectValue);
$select.trigger('change');
if (trigger_change_event) return;
if (onchange) $select.on("change", function () {
eval(onchange);
});
},
buildDatatables: function buildDatatables(table) {
var self = this;
var idtable = jquery__WEBPACK_IMPORTED_MODULE_27___default()(table).attr("id");
var $table = jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + idtable);
var $div_attrs = jquery__WEBPACK_IMPORTED_MODULE_27___default()("#div_datatable_attributes_" + idtable);
var use_jquery_loading = $div_attrs.data("use_jquery_loading");
var IWEnv = jquery__WEBPACK_IMPORTED_MODULE_27___default()("#IWEnv").val();
var selectRows = function selectRows() {
if (jquery__WEBPACK_IMPORTED_MODULE_27___default()(this).hasClass('selected')) {
jquery__WEBPACK_IMPORTED_MODULE_27___default()(this).removeClass('selected');
} else {
$table.DataTable().$('tr.selected').removeClass('selected');
jquery__WEBPACK_IMPORTED_MODULE_27___default()(this).addClass('selected');
}
};
var onsuccess = $div_attrs.data("onsuccess");
var preDrawCallback = $div_attrs.data("onpredrawcallback");
var opts = {
retrieve: true,
searching: $div_attrs.data("searching"),
ordering: $div_attrs.data("ordering"),
language: {
info: $div_attrs.data("infolang"),
search: $div_attrs.data("searchlang"),
lengthMenu: $div_attrs.data("lengthmenulang"),
zeroRecords: $div_attrs.data("zerorecordslang"),
infoEmpty: $div_attrs.data("infoemptylang"),
processing: $div_attrs.data("processinglang"),
infoFiltered: $div_attrs.data("infofilteredlang"),
decimal: $div_attrs.data("decimallang"),
thousands: $div_attrs.data("thousandslang"),
paginate: $div_attrs.data("paginatelang")
}
};
var order = $div_attrs.data("order");
if (order) opts.order = order;
if ($div_attrs.data("height") !== "auto" && (0,_include_js_utils__WEBPACK_IMPORTED_MODULE_28__.getFloat)($div_attrs.data("height")) > 0) opts.scrollY = (0,_include_js_utils__WEBPACK_IMPORTED_MODULE_28__.getFloat)($div_attrs.data("height"));
if ($div_attrs.data("scrollorizzontale")) opts.scrollX = true;
if ($div_attrs.data("fixedcolumns")) opts.fixedColumns = true;
var labels_buttons = $div_attrs.data("labelsbuttons");
var functions_buttons = $div_attrs.data("functionsbuttons");
var classes_buttons = $div_attrs.data("classesbuttons");
var cols_hidden = $div_attrs.data("colshidden");
var isfullWidth = $div_attrs.data("fullwidth");
var buttons = [];
if (cols_hidden && in_array(cols_hidden, "true")) buttons.push({
text: "*",
action: function action() {
var $hideColumn = jquery__WEBPACK_IMPORTED_MODULE_27___default()(".hideDataTablesColumn" + idtable);
if ($hideColumn.is(':visible')) $hideColumn.hide();else $hideColumn.css('display', 'table-cell');
},
titleAttr: $div_attrs.data("titletextshowhidecols")
});
if (labels_buttons && labels_buttons.length > 0) {
buttons.push({
text: '',
className: 'btnFake'
});
labels_buttons.map(function (label, key) {
buttons.push({
text: label,
action: function action() {
if (functions_buttons) eval(functions_buttons[key]);
},
className: classes_buttons ? classes_buttons[key] : undefined
});
});
}
if (buttons.length > 0) {
opts.dom = "Blfrtip";
opts.buttons = buttons;
}
opts.preDrawCallback = function () {
var _this = this;
(0,_include_js_utils__WEBPACK_IMPORTED_MODULE_28__.onVisible)(document.querySelector("#" + idtable), function () {
var $tablecont = jquery__WEBPACK_IMPORTED_MODULE_27___default()(_this).closest(".dt-container");
var $dtlength = $tablecont.find(".dt-length");
var $dtbuttons = $tablecont.find(".dt-buttons");
var $dtinfo = $tablecont.find(".dt-info");
var $dtpaging = $tablecont.find(".dt-paging");
if (jquery__WEBPACK_IMPORTED_MODULE_27___default()(_this).hasClass("pure-table") && $dtbuttons.find("button:visible").length === 0) {
if ($dtlength.length === 0 || $dtlength.height() === 0) $dtbuttons.css("padding", "0").css("border", "none");
if ($dtlength.height() > 0) $dtbuttons.css("height", "40px");
if ($dtinfo.length > 0 && $dtinfo.text() === "" && $dtpaging.length === 0) $dtinfo.css("padding", "0").css("height", "auto");
}
if (isfullWidth) jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + idtable + "_wrapper .dt-scroll").addClass("full-width");
// se sono definite le widths delle celle e non ci sono colonne nascoste imposto il layout fixed alle datatables
// sulle colonne allineate a sinistra imposto il break-word
var widthsDefined = jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + idtable + "_wrapper .dt-scroll-head thead th[width]").length;
var noHiddenCols = jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + idtable + "_wrapper .dt-scroll-head thead").find(".hideDataTablesColumn").length === 0;
if (widthsDefined > 0 && noHiddenCols) {
jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + idtable + "_wrapper").find(".IWDataTables").css("table-layout", "fixed");
jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + idtable + " tbody td").map(function (i, td) {
if (jquery__WEBPACK_IMPORTED_MODULE_27___default()(td).css("text-align") === "left") jquery__WEBPACK_IMPORTED_MODULE_27___default()(td).css("overflow-wrap", "break-word").css("word-wrap", "break-word");
});
}
_this.api().columns.adjust();
});
if (preDrawCallback) eval(preDrawCallback);
};
var selectRowsTable = function selectRowsTable() {
jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + idtable + " tbody").on('click', 'tr', function () {
selectRows();
});
};
if (!use_jquery_loading) {
opts.paging = false;
opts.initComplete = function (settings, json) {
var t = this;
// setTimeout(function(){ t.api().columns.adjust(); }, 300);
};
if (onsuccess) opts.drawCallback = function (settings) {
if (IWEnv === "bootstrap") jquery__WEBPACK_IMPORTED_MODULE_27___default()('[data-toggle=\"tooltip\"]').tooltip();
setTimeout(function () {
jquery__WEBPACK_IMPORTED_MODULE_27___default()(".ui-autocomplete-input").autocompleteOnFocusEvent();
jquery__WEBPACK_IMPORTED_MODULE_27___default()(".dt-scroll-body .iwSelect2").each(function () {
self.buildSelect2(this);
});
eval(onsuccess);
}, 300);
};
$table.DataTable(opts);
selectRowsTable();
return;
}
if (!$div_attrs.data("paging")) opts.paging = false;
var aoColumnDefs = [];
for (var i = 0; i < cols_hidden.length; i++) aoColumnDefs.push({
aTargets: [i],
bSearchable: true
});
opts.aoColumnDefs = aoColumnDefs;
if ($div_attrs.data("footerinrows")) opts.footerCallback = function (tfoot, data, start, end, display) {
var response = this.api().ajax.json();
var footer = $table.DataTable().table().footer();
var footer_data = response.data.footer;
var footer_src = '';
var rows_align = $div_attrs.data("rowsalign");
var t = this;
jquery__WEBPACK_IMPORTED_MODULE_27___default().each(footer_data, function (j, v) {
footer_src += '
';
t.api().columns().every(function (i) {
var align = rows_align[i];
var txt_align;
switch (align) {
case 'R':
txt_align = 'style=\"text-align: right;\"';
break;
case 'L':
txt_align = 'style=\"text-align: left;\"';
break;
default:
txt_align = 'style=\"text-align: center;\"';
break;
}
footer_src += '| ' + footer_data[j][i] + ' | ';
});
footer_src += '
';
});
footer.innerHTML = footer_src;
};
opts.drawCallback = function (settings) {
if (IWEnv === "bootstrap") jquery__WEBPACK_IMPORTED_MODULE_27___default()('[data-toggle=\"tooltip\"]').tooltip();
jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + idtable + "_table_nrows").val($table.DataTable().data().count());
jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + idtable + "_table_total_rows").val(this.api().page.info().recordsTotal);
var data = this.api().ajax.json(); //Salvo in una variabile il contenuto delle righe che può essere recuperato dal onsuccess
setTimeout(function () {
jquery__WEBPACK_IMPORTED_MODULE_27___default()(".ui-autocomplete-input").autocompleteOnFocusEvent();
(0,_include_js_utils__WEBPACK_IMPORTED_MODULE_28__.reloadComponents)("#" + idtable + " ", true);
if (onsuccess) eval(onsuccess);
if (IWEnv !== "bootstrap") return;
jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + idtable + " :input").each(function () {
if (jquery__WEBPACK_IMPORTED_MODULE_27___default()(this).attr('type') !== 'checkbox') jquery__WEBPACK_IMPORTED_MODULE_27___default()(this).addClass('form-control');
});
}, 300);
};
opts.lengthMenu = $div_attrs.data("lengthmenu");
if ((0,_include_js_utils__WEBPACK_IMPORTED_MODULE_28__.getFloat)($div_attrs.data("pagelength")) > 0) opts.pageLength = (0,_include_js_utils__WEBPACK_IMPORTED_MODULE_28__.getFloat)($div_attrs.data("pagelength"));
opts.processing = $div_attrs.data("serverside");
opts.serverSide = $div_attrs.data("serverside");
opts.ajax = {
url: $div_attrs.data("ajaxurl")
};
if ($div_attrs.data("defined-ajax-data")) {
opts.ajax.data = $div_attrs.data("defined-ajax-data");
opts.ajax.type = "post";
opts.ajax.dataSrc = function (json) {
return json.data.rows;
};
} else if ($div_attrs.data("loadformdata")) {
opts.ajax.data = function (d) {
var inputs = jquery__WEBPACK_IMPORTED_MODULE_27___default()("#" + $div_attrs.data("formid") + " :input, :checkbox").serializeArray();
var name, value;
for (var _i2 = 0; _i2 < inputs.length; _i2++) {
if (strpos(inputs[_i2].name, '[') > 0) {
name = inputs[_i2].name.substr(0, strpos(inputs[_i2].name, '['));
value = jquery__WEBPACK_IMPORTED_MODULE_27___default()('#' + name).val();
} else {
name = inputs[_i2].name;
value = inputs[_i2].value;
}
d[name] = value;
}
};
opts.ajax.type = "post";
opts.ajax.dataSrc = function (json) {
return json.data.rows;
};
}
/*if (opts.processing) {
$("#" + idtable).on('processing.dt', function (e, settings, processing) {
//$(e.target).parent().css('overflow', processing ? 'hidden' : 'auto');
$("#" + idtable + " tbody").prepend('');
});
}*/
var classColumnsAligns = $div_attrs.data("classcolumnsaligns");
var rowsAlign = $div_attrs.data("rowsalign");
var classColumnsVerticalAligns = $div_attrs.data("classcolumnsverticalaligns");
var colsAlign = $div_attrs.data("colsalign");
opts.columns = [];
for (var _i3 = 0; _i3 < (0,_include_js_utils__WEBPACK_IMPORTED_MODULE_28__.getFloat)($div_attrs.data("ncols")); _i3++) opts.columns.push({
data: 'column' + _i3,
sClass: classColumnsAligns[rowsAlign[_i3]] + " " + classColumnsVerticalAligns[colsAlign[_i3]] + (cols_hidden[_i3] === "true" ? " hideDataTablesColumn hideDataTablesColumn" + idtable : "")
});
new datatables_net_dt__WEBPACK_IMPORTED_MODULE_26__["default"]("#" + idtable, opts);
selectRowsTable();
var $footerFilters = jquery__WEBPACK_IMPORTED_MODULE_27___default()(".ts_footer_filters");
$footerFilters.off();
$footerFilters.each(function () {
jquery__WEBPACK_IMPORTED_MODULE_27___default()(this).on("keypress", function (event) {
var keycode = event.keyCode ? event.keyCode : event.which;
console.log(keycode);
if (keycode === 13) {
reloadTable(jquery__WEBPACK_IMPORTED_MODULE_27___default()(this).data("idtable"));
}
});
});
},
buildCkEditor: function buildCkEditor(editor) {
jquery__WEBPACK_IMPORTED_MODULE_27___default()(editor).ckeditor({
title: '',
height: jquery__WEBPACK_IMPORTED_MODULE_27___default()(editor).data("height"),
language: jquery__WEBPACK_IMPORTED_MODULE_27___default()(editor).data("language"),
skin: 'moono-lisa',
uiColor: '#d3d3d3',
extraPlugins: 'justify,font,colorbutton',
toolbarCanCollapse: true,
enterMode: CKEDITOR.ENTER_BR,
shiftEnterMode: CKEDITOR.ENTER_P,
allowedContent: true,
toolbarGroups: [{
name: 'clipboard',
groups: ['clipboard', 'undo']
}, {
name: 'editing',
groups: ['find', 'selection', 'spellchecker']
}, {
name: 'links'
}, {
name: 'insert'
}, {
name: 'tools'
}, {
name: 'document',
groups: ['mode', 'document', 'doctools']
}, {
name: 'basicstyles',
groups: ['basicstyles', 'cleanup']
}, {
name: 'paragraph',
groups: ['list', 'indent', 'blocks', 'align']
}, {
name: 'styles'
}, {
name: 'colors'
}]
});
},
buildJqueryUploadFile: function buildJqueryUploadFile(elem) {
var $elem = jquery__WEBPACK_IMPORTED_MODULE_27___default()(elem);
var opts = {
url: "ajax.php?JSON&object=UploadedFile&tipoview=jqueryPluginUploadFile&id=" + $elem.attr("id") + "&idupload=" + $elem.data("idupload") + "&is_visualizza_esterno=" + parseInt($elem.data("is_visualizza_esterno")) + "&is_crypted=" + $elem.data("is_crypted") + "&force_db=" + $elem.data("force_db"),
fileName: "myfile_" + $elem.attr("id"),
dragDropStr: "" + (parseInt($elem.data("idupload")) ? $elem.data("realname") + $elem.data("imgdown") : $elem.data("trascina_file_text")) + "",
abortStr: $elem.data("stop_text"),
multiple: false,
dragdropWidth: "inherit",
maxFileCount: 1,
showDelete: true,
showDownload: true,
width: "inherit",
extErrorStr: $elem.data("errore_estensioni_text"),
uploadStr: $elem.data("sfoglia_text"),
onSuccess: function onSuccess(files, data, xhr) {
console.log('data');
console.log(data);
var idupload = (0,_include_js_utils__WEBPACK_IMPORTED_MODULE_28__.getFloat)(data[1]);
if (idupload === 0) {
alert(data[0]);
return;
}
jquery__WEBPACK_IMPORTED_MODULE_27___default()("#nomefile_" + $elem.attr("id")).val(files);
jquery__WEBPACK_IMPORTED_MODULE_27___default()("#idupload_" + $elem.attr("id")).val(idupload);
jquery__WEBPACK_IMPORTED_MODULE_27___default()("#span_dradDropStr_" + $elem.attr("id")).html('' + files + '');
jquery__WEBPACK_IMPORTED_MODULE_27___default()("#filecaricato_" + $elem.attr("id")).css('display', 'none');
jquery__WEBPACK_IMPORTED_MODULE_27___default()(".ajax-file-upload-progress").hide();
jquery__WEBPACK_IMPORTED_MODULE_27___default()(".ajax-file-upload-bar").hide();
jquery__WEBPACK_IMPORTED_MODULE_27___default()(".ajax-file-upload-statusbar").hide();
if ($elem.data("onsuccess_callback")) eval($elem.data("onsuccess_callback"));
},
onError: function onError(files, status, errMsg) {
footerMsg(1, $elem.data("onError_text"), errMsg);
}
};
if (parseInt($elem.data("is_foto"))) opts.allowedTypes = "jpg,jpeg,png,bmp,gif,tiff";else if ($elem.data("allowed-types")) opts.allowedTypes = $elem.data("allowed-types");
$elem.uploadFile(opts);
}
});
/***/ })
}]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzX2pzX2NvbXBvbmVudHNfaXdjb21wb25lbnRzX2pzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUMwQztBQUNuQjtBQUN5RDtBQUNoRkssbUJBQU8sQ0FBQywrRkFBd0IsQ0FBQztBQUNqQ0EsbUJBQU8sQ0FBQyw4R0FBNkIsQ0FBQztBQUV0QyxpRUFBZTtFQUNYQyxZQUFZLEVBQUUsU0FBQUEsYUFBVUMsTUFBTSxFQUFDO0lBQzNCLElBQU1DLE9BQU8sR0FBR1AsOENBQUMsQ0FBQ00sTUFBTSxDQUFDO0lBRXpCLElBQU1FLFdBQVcsR0FBR0QsT0FBTyxDQUFDRSxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQy9DLElBQU1DLFVBQVUsR0FBR0gsT0FBTyxDQUFDRSxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdDLElBQUlFLFdBQVcsR0FBR0osT0FBTyxDQUFDRSxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3ZDLElBQU1HLG9CQUFvQixHQUFHTCxPQUFPLENBQUNFLElBQUksQ0FBQywwQkFBMEIsQ0FBQztJQUNyRSxJQUFNSSxjQUFjLEdBQUdOLE9BQU8sQ0FBQ0UsSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBRXJELElBQUdGLE9BQU8sQ0FBQ08sR0FBRyxDQUFDLENBQUMsSUFBSVAsT0FBTyxDQUFDTyxHQUFHLENBQUMsQ0FBQyxDQUFDQyxNQUFNLEVBQUVKLFdBQVcsR0FBR0osT0FBTyxDQUFDTyxHQUFHLENBQUMsQ0FBQztJQUNyRSxJQUFNRSxHQUFHLEdBQUdULE9BQU8sQ0FBQ0UsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUUvQixJQUFJUSxJQUFJLEdBQUc7TUFDUFQsV0FBVyxFQUFFQSxXQUFXO01BQ3hCRSxVQUFVLEVBQUVBLFVBQVU7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ZWJwYWNrOi8vaXJpZGUvLi9hc3NldHMvanMvY29tcG9uZW50cy9pd2NvbXBvbmVudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDcmVhdGVkIGJ5IFBocFN0b3JtXG4gKiBVc2VyOiBkYW5pZWxlXG4gKiBEYXRlOiAxMi8wMy8yMVxuICogVGltZTogMTE6MzBcbiAqL1xuaW1wb3J0IERhdGFUYWJsZSBmcm9tIFwiZGF0YXRhYmxlcy5uZXQtZHRcIjtcbmltcG9ydCAkIGZyb20gXCJqcXVlcnlcIjtcbmltcG9ydCB7Z2V0RmxvYXQsIG9uVmlzaWJsZSwgcmVsb2FkQ29tcG9uZW50c30gZnJvbSBcIi4uLy4uLy4uL2luY2x1ZGUvanMvdXRpbHNcIjtcbnJlcXVpcmUoXCJkYXRhdGFibGVzLm5ldC1idXR0b25zXCIpO1xucmVxdWlyZShcImRhdGF0YWJsZXMubmV0LWZpeGVkY29sdW1uc1wiKTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIGJ1aWxkU2VsZWN0MjogZnVuY3Rpb24gKHNlbGVjdCl7XG4gICAgICAgIGNvbnN0ICRzZWxlY3QgPSAkKHNlbGVjdCk7XG5cbiAgICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSAkc2VsZWN0LmRhdGEoXCJwbGFjZWhvbGRlclwiKTtcbiAgICAgICAgY29uc3QgYWxsb3dDbGVhciA9ICRzZWxlY3QuZGF0YShcInZpZXdfZW1wdHlcIik7XG4gICAgICAgIGxldCBzZWxlY3RWYWx1ZSA9ICRzZWxlY3QuZGF0YShcInZhbHVlXCIpO1xuICAgICAgICBjb25zdCBrZWVwU2VsZWN0ZWRBZmVyQWpheCA9ICRzZWxlY3QuZGF0YShcImtlZXAtc2VsZWN0ZWQtYWZ0ZXItYWpheFwiKTtcbiAgICAgICAgY29uc3QgZHJvcGRvd25QYXJlbnQgPSAkc2VsZWN0LmRhdGEoXCJkcm9wZG93bnBhcmVudFwiKTtcblxuICAgICAgICBpZigkc2VsZWN0LnZhbCgpICYmICRzZWxlY3QudmFsKCkubGVuZ3RoKSBzZWxlY3RWYWx1ZSA9ICRzZWxlY3QudmFsKCk7XG4gICAgICAgIGNvbnN0IHVybCA9ICRzZWxlY3QuZGF0YShcInVybFwiKTtcblxuICAgICAgICBsZXQgb3B0cyA9IHtcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlcixcbiAgICAgICAgICAgIGFsbG93Q2xlYXI6IGFsbG93Q2xlYXIsXG4gICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgdGFnczogdHJ1ZSxcbiAgICAgICAgICAgIGRyb3Bkb3duQXV0b1dpZHRoOiB0cnVlLFxuICAgICAgICAgICAgZHJvcGRvd25QYXJlbnQ6IGRyb3Bkb3duUGFyZW50ID8gJCgnIycgKyBkcm9wZG93blBhcmVudCkgOiAkKCdib2R5JyksXG4gICAgICAgIH07XG4gICAgICAgIGlmKHVybCl7XG5cbiAgICAgICAgICAgIG9wdHMuYWpheCA9IHtcbiAgICAgICAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogXCJqc29uXCIsXG4gICAgICAgICAgICAgICAgZGF0YTogZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXNUb0FqYXggPSAkc2VsZWN0LmRhdGEoXCJwYXJhbXNcIik7XG4gICAgICAgICAgICAgICAgICAgIGxldCBhamF4UGFyYW1zID0ge31cbiAgICAgICAgICAgICAgICAgICAgaWYocGFyYW1zVG9BamF4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocGFyYW1zVG9BamF4KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggdmFsdWUuaW5jbHVkZXMoXCJ8fHxcIikpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkcyA9IHZhbHVlLnNwbGl0KFwifHx8XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAkKFwiI1wiICsgZmllbGRzWzBdKS52YWwoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIHZhbHVlID0gJChcIiNcIiArIGZpZWxkc1sxXSkudmFsKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhamF4UGFyYW1zW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGFqYXhQYXJhbXNba2V5XSA9ICQoXCIjXCIgKyB2YWx1ZSkudmFsKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgYWpheFBhcmFtc1trZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBhamF4UGFyYW1zLnNlYXJjaCA9IHBhcmFtcy50ZXJtO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWpheFBhcmFtcztcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHByb2Nlc3NSZXN1bHRzOiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RWYWx1ZSA9ICRzZWxlY3QudmFsKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgJC5lYWNoKCRzZWxlY3QuZmluZChcIm9wdGlvblwiKSwgZnVuY3Rpb24gKGtleSwgb3B0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkgPiAwKSAkKG9wdCkucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBpZihkYXRhLml0ZW1zICYmIGRhdGEuaXRlbXMubGVuZ3RoID4gMCl7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5ld09wdGlvbiA9IG5ldyBPcHRpb24oaXRlbS50ZXh0LCBpdGVtLmlkLCBmYWxzZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGl0ZW0pLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSAhPT0gXCJ0ZW1wbGF0ZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdPcHRpb24uZGF0YXNldFtrZXldID0gaXRlbVtrZXldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2VsZWN0LmFwcGVuZChuZXdPcHRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGtlZXBTZWxlY3RlZEFmZXJBamF4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc011bHRpcGxlID0gQXJyYXkuaXNBcnJheShzZWxlY3RWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RWYWx1ZSA9IGlzTXVsdGlwbGUgPyBzZWxlY3RWYWx1ZSA6IFtzZWxlY3RWYWx1ZV07XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZE9wdHMgPSBkYXRhLml0ZW1zLmZpbHRlcih2YWx1ZSA9PiBzZWxlY3RWYWx1ZS5pbmNsdWRlcyh2YWx1ZS5pZC50b1N0cmluZygpKSkubWFwKGl0ZW0gPT4gaXRlbS5pZC50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc011bHRpcGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxlY3QudmFsKHNlbGVjdGVkT3B0cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKHNlbGVjdGVkT3B0cy5sZW5ndGggPiAwKSAkc2VsZWN0LnZhbChzZWxlY3RlZE9wdHNbMF0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgJHNlbGVjdC50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHM6IGRhdGEuaXRlbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgb3B0cy50ZW1wbGF0ZVJlc3VsdCA9IGZ1bmN0aW9uIChvcHRpb24pe1xuICAgICAgICAgICAgbGV0IGRhdGEgPSAkc2VsZWN0LmRhdGEoXCJhZGRpdGlvbmFsLWluZm9cIik7XG4gICAgICAgICAgICBpZighZGF0YSkgZGF0YSA9IHt9O1xuICAgICAgICAgICAgaWYoIW9wdGlvbi5pZCkgcmV0dXJuIG9wdGlvbi50ZXh0O1xuICAgICAgICAgICAgZGF0YVtvcHRpb24uaWRdID0gb3B0aW9uO1xuICAgICAgICAgICAgJHNlbGVjdC5kYXRhKFwiYWRkaXRpb25hbC1pbmZvXCIsIGRhdGEpO1xuXG4gICAgICAgICAgICBpZih1cmwpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWYoIW9wdGlvbi50ZW1wbGF0ZSkgcmV0dXJuIG9wdGlvbi50ZXh0O1xuICAgICAgICAgICAgICAgIHJldHVybiAkKG9wdGlvbi50ZW1wbGF0ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSAkc2VsZWN0LmRhdGEoXCJvcHRpb25zXCIpO1xuICAgICAgICAgICAgaWYoIW9wdGlvbnMpIHJldHVybiBvcHRpb24udGV4dDtcbiAgICAgICAgICAgIGxldCBvcHQ7XG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICAgICAgb3B0ID0gb3B0aW9uc1tpXTtcbiAgICAgICAgICAgICAgICBpZihvcHQudmFsdWUgPT09IG9wdGlvbi5pZCkgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBodG1sID0gb3B0LnRlbXBsYXRlO1xuICAgICAgICAgICAgcmV0dXJuICQoaHRtbCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0cmlnZ2VyX2NoYW5nZV9ldmVudCA9IHBhcnNlSW50KCRzZWxlY3QuZGF0YShcInRyaWdnZXItY2hhbmdlLWV2ZW50XCIpKTtcblxuICAgICAgICAkc2VsZWN0LnNlbGVjdDIob3B0cyk7XG4gICAgICAgICQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQnKS5ob3ZlcihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUF0dHIoJ3RpdGxlJyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmKCFzZWxlY3RWYWx1ZSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IG9uY2hhbmdlID0gJHNlbGVjdC5hdHRyKFwib25jaGFuZ2VcIik7XG4gICAgICAgIGlmKCF0cmlnZ2VyX2NoYW5nZV9ldmVudCkgJHNlbGVjdC5hdHRyKFwib25jaGFuZ2VcIiwgXCJcIik7XG4gICAgICAgICRzZWxlY3QudmFsKHNlbGVjdFZhbHVlKTtcbiAgICAgICAgJHNlbGVjdC50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICAgICAgaWYodHJpZ2dlcl9jaGFuZ2VfZXZlbnQpIHJldHVybjtcblxuICAgICAgICBpZihvbmNoYW5nZSlcbiAgICAgICAgICAgICRzZWxlY3Qub24oXCJjaGFuZ2VcIiwgZnVuY3Rpb24gKCl7XG4gICAgICAgICAgICAgICAgZXZhbChvbmNoYW5nZSk7XG4gICAgICAgICAgICB9KVxuICAgIH0sXG5cbiAgICBidWlsZERhdGF0YWJsZXM6IGZ1bmN0aW9uICh0YWJsZSl7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBpZHRhYmxlID0gJCh0YWJsZSkuYXR0cihcImlkXCIpO1xuICAgICAgICBjb25zdCAkdGFibGUgPSAkKFwiI1wiICsgaWR0YWJsZSk7XG5cbiAgICAgICAgY29uc3QgJGRpdl9hdHRycyA9ICQoXCIjZGl2X2RhdGF0YWJsZV9hdHRyaWJ1dGVzX1wiICsgaWR0YWJsZSk7XG4gICAgICAgIGNvbnN0IHVzZV9qcXVlcnlfbG9hZGluZyA9ICRkaXZfYXR0cnMuZGF0YShcInVzZV9qcXVlcnlfbG9hZGluZ1wiKTtcbiAgICAgICAgY29uc3QgSVdFbnYgPSAkKFwiI0lXRW52XCIpLnZhbCgpO1xuICAgICAgICBjb25zdCBzZWxlY3RSb3dzID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIGlmICggJCh0aGlzKS5oYXNDbGFzcygnc2VsZWN0ZWQnKSApIHtcbiAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdzZWxlY3RlZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgJHRhYmxlLkRhdGFUYWJsZSgpLiQoJ3RyLnNlbGVjdGVkJykucmVtb3ZlQ2xhc3MoJ3NlbGVjdGVkJyk7XG4gICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnc2VsZWN0ZWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBvbnN1Y2Nlc3MgPSAkZGl2X2F0dHJzLmRhdGEoXCJvbnN1Y2Nlc3NcIik7XG4gICAgICAgIGNvbnN0IHByZURyYXdDYWxsYmFjayA9ICRkaXZfYXR0cnMuZGF0YShcIm9ucHJlZHJhd2NhbGxiYWNrXCIpO1xuXG4gICAgICAgIGxldCBvcHRzID0ge1xuICAgICAgICAgICAgcmV0cmlldmU6IHRydWUsXG4gICAgICAgICAgICBzZWFyY2hpbmc6ICRkaXZfYXR0cnMuZGF0YShcInNlYXJjaGluZ1wiKSxcbiAgICAgICAgICAgIG9yZGVyaW5nOiAkZGl2X2F0dHJzLmRhdGEoXCJvcmRlcmluZ1wiKSxcbiAgICAgICAgICAgIGxhbmd1YWdlOiB7XG4gICAgICAgICAgICAgICAgaW5mbzogJGRpdl9hdHRycy5kYXRhKFwiaW5mb2xhbmdcIiksXG4gICAgICAgICAgICAgICAgc2VhcmNoOiAkZGl2X2F0dHJzLmRhdGEoXCJzZWFyY2hsYW5nXCIpLFxuICAgICAgICAgICAgICAgIGxlbmd0aE1lbnU6ICRkaXZfYXR0cnMuZGF0YShcImxlbmd0aG1lbnVsYW5nXCIpLFxuICAgICAgICAgICAgICAgIHplcm9SZWNvcmRzOiAkZGl2X2F0dHJzLmRhdGEoXCJ6ZXJvcmVjb3Jkc2xhbmdcIiksXG4gICAgICAgICAgICAgICAgaW5mb0VtcHR5OiAkZGl2X2F0dHJzLmRhdGEoXCJpbmZvZW1wdHlsYW5nXCIpLFxuICAgICAgICAgICAgICAgIHByb2Nlc3Npbmc6ICRkaXZfYXR0cnMuZGF0YShcInByb2Nlc3NpbmdsYW5nXCIpLFxuICAgICAgICAgICAgICAgIGluZm9GaWx0ZXJlZDogJGRpdl9hdHRycy5kYXRhKFwiaW5mb2ZpbHRlcmVkbGFuZ1wiKSxcbiAgICAgICAgICAgICAgICBkZWNpbWFsOiAkZGl2X2F0dHJzLmRhdGEoXCJkZWNpbWFsbGFuZ1wiKSxcbiAgICAgICAgICAgICAgICB0aG91c2FuZHM6ICRkaXZfYXR0cnMuZGF0YShcInRob3VzYW5kc2xhbmdcIiksXG4gICAgICAgICAgICAgICAgcGFnaW5hdGU6ICRkaXZfYXR0cnMuZGF0YShcInBhZ2luYXRlbGFuZ1wiKSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgb3JkZXIgPSAkZGl2X2F0dHJzLmRhdGEoXCJvcmRlclwiKTtcbiAgICAgICAgaWYob3JkZXIpIG9wdHMub3JkZXIgPSBvcmRlcjtcbiAgICAgICAgaWYoJGRpdl9hdHRycy5kYXRhKFwiaGVpZ2h0XCIpICE9PSBcImF1dG9cIiAmJiBnZXRGbG9hdCgkZGl2X2F0dHJzLmRhdGEoXCJoZWlnaHRcIikpID4gMCkgb3B0cy5zY3JvbGxZID0gZ2V0RmxvYXQoJGRpdl9hdHRycy5kYXRhKFwiaGVpZ2h0XCIpKTtcbiAgICAgICAgaWYoJGRpdl9hdHRycy5kYXRhKFwic2Nyb2xsb3JpenpvbnRhbGVcIikpIG9wdHMuc2Nyb2xsWCA9IHRydWU7XG4gICAgICAgIGlmKCRkaXZfYXR0cnMuZGF0YShcImZpeGVkY29sdW1uc1wiKSkgb3B0cy5maXhlZENvbHVtbnMgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGxhYmVsc19idXR0b25zID0gJGRpdl9hdHRycy5kYXRhKFwibGFiZWxzYnV0dG9uc1wiKTtcbiAgICAgICAgY29uc3QgZnVuY3Rpb25zX2J1dHRvbnMgPSAkZGl2X2F0dHJzLmRhdGEoXCJmdW5jdGlvbnNidXR0b25zXCIpO1xuICAgICAgICBjb25zdCBjbGFzc2VzX2J1dHRvbnMgPSAkZGl2X2F0dHJzLmRhdGEoXCJjbGFzc2VzYnV0dG9uc1wiKTtcbiAgICAgICAgY29uc3QgY29sc19oaWRkZW4gPSAkZGl2X2F0dHJzLmRhdGEoXCJjb2xzaGlkZGVuXCIpO1xuICAgICAgICBjb25zdCBpc2Z1bGxXaWR0aCA9ICRkaXZfYXR0cnMuZGF0YShcImZ1bGx3aWR0aFwiKTtcbiAgICAgICAgbGV0IGJ1dHRvbnMgPSBbXTtcbiAgICAgICAgaWYoY29sc19oaWRkZW4gJiYgaW5fYXJyYXkoY29sc19oaWRkZW4sIFwidHJ1ZVwiKSlcbiAgICAgICAgICAgIGJ1dHRvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgdGV4dDogXCIqXCIsXG4gICAgICAgICAgICAgICAgYWN0aW9uOiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICB2YXIgJGhpZGVDb2x1bW4gPSAkKFwiLmhpZGVEYXRhVGFibGVzQ29sdW1uXCIgKyBpZHRhYmxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYoJGhpZGVDb2x1bW4uaXMoJzp2aXNpYmxlJykpICRoaWRlQ29sdW1uLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAkaGlkZUNvbHVtbi5jc3MoJ2Rpc3BsYXknLCAndGFibGUtY2VsbCcpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGl0bGVBdHRyOiAkZGl2X2F0dHJzLmRhdGEoXCJ0aXRsZXRleHRzaG93aGlkZWNvbHNcIilcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBpZihsYWJlbHNfYnV0dG9ucyAmJiBsYWJlbHNfYnV0dG9ucy5sZW5ndGggPiAwKVxuICAgICAgICB7XG4gICAgICAgICAgICBidXR0b25zLnB1c2goe1xuICAgICAgICAgICAgICAgIHRleHQ6ICcnLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2J0bkZha2UnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGxhYmVsc19idXR0b25zLm1hcCggKGxhYmVsLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBidXR0b25zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBsYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBmdW5jdGlvbiAoKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGZ1bmN0aW9uc19idXR0b25zKSBldmFsKGZ1bmN0aW9uc19idXR0b25zW2tleV0pO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzZXNfYnV0dG9ucyA/IGNsYXNzZXNfYnV0dG9uc1trZXldIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoYnV0dG9ucy5sZW5ndGggPiAwKXtcbiAgICAgICAgICAgIG9wdHMuZG9tID0gXCJCbGZydGlwXCI7XG4gICAgICAgICAgICBvcHRzLmJ1dHRvbnMgPSBidXR0b25zO1xuICAgICAgICB9XG5cbiAgICAgICAgb3B0cy5wcmVEcmF3Q2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBvblZpc2libGUoXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNcIiArIGlkdGFibGUpLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0ICR0YWJsZWNvbnQgPSAkKHRoaXMpLmNsb3Nlc3QoXCIuZHQtY29udGFpbmVyXCIpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCAkZHRsZW5ndGggPSAkdGFibGVjb250LmZpbmQoXCIuZHQtbGVuZ3RoXCIpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCAkZHRidXR0b25zID0gJHRhYmxlY29udC5maW5kKFwiLmR0LWJ1dHRvbnNcIik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0ICRkdGluZm8gPSAkdGFibGVjb250LmZpbmQoXCIuZHQtaW5mb1wiKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgJGR0cGFnaW5nID0gJHRhYmxlY29udC5maW5kKFwiLmR0LXBhZ2luZ1wiKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykuaGFzQ2xhc3MoXCJwdXJlLXRhYmxlXCIpICYmICRkdGJ1dHRvbnMuZmluZChcImJ1dHRvbjp2aXNpYmxlXCIpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkdGxlbmd0aC5sZW5ndGggPT09IDAgfHwgJGR0bGVuZ3RoLmhlaWdodCgpID09PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkdGJ1dHRvbnMuY3NzKFwicGFkZGluZ1wiLCBcIjBcIikuY3NzKFwiYm9yZGVyXCIsIFwibm9uZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZHRsZW5ndGguaGVpZ2h0KCkgPiAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkdGJ1dHRvbnMuY3NzKFwiaGVpZ2h0XCIsIFwiNDBweFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZHRpbmZvLmxlbmd0aCA+IDAgJiYgJGR0aW5mby50ZXh0KCkgPT09IFwiXCIgJiYgJGR0cGFnaW5nLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZHRpbmZvLmNzcyhcInBhZGRpbmdcIiwgXCIwXCIpLmNzcyhcImhlaWdodFwiLCBcImF1dG9cIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzZnVsbFdpZHRoKVxuICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNcIiArIGlkdGFibGUgKyBcIl93cmFwcGVyIC5kdC1zY3JvbGxcIikuYWRkQ2xhc3MoXCJmdWxsLXdpZHRoXCIpO1xuICAgICAgICAgICAgICAgICAgICAvLyBzZSBzb25vIGRlZmluaXRlIGxlIHdpZHRocyBkZWxsZSBjZWxsZSBlIG5vbiBjaSBzb25vIGNvbG9ubmUgbmFzY29zdGUgaW1wb3N0byBpbCBsYXlvdXQgZml4ZWQgYWxsZSBkYXRhdGFibGVzXG4gICAgICAgICAgICAgICAgICAgIC8vIHN1bGxlIGNvbG9ubmUgYWxsaW5lYXRlIGEgc2luaXN0cmEgaW1wb3N0byBpbCBicmVhay13b3JkXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpZHRoc0RlZmluZWQgPSAkKFwiI1wiICsgaWR0YWJsZSArIFwiX3dyYXBwZXIgLmR0LXNjcm9sbC1oZWFkIHRoZWFkIHRoW3dpZHRoXVwiKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vSGlkZGVuQ29scyA9ICQoXCIjXCIgKyBpZHRhYmxlICsgXCJfd3JhcHBlciAuZHQtc2Nyb2xsLWhlYWQgdGhlYWRcIikuZmluZChcIi5oaWRlRGF0YVRhYmxlc0NvbHVtblwiKS5sZW5ndGggPT09IDBcbiAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoc0RlZmluZWQgPiAwICYmIG5vSGlkZGVuQ29scykge1xuICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNcIiArIGlkdGFibGUgKyBcIl93cmFwcGVyXCIpLmZpbmQoXCIuSVdEYXRhVGFibGVzXCIpLmNzcyhcInRhYmxlLWxheW91dFwiLCBcImZpeGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgJChcIiNcIiArIGlkdGFibGUgKyBcIiB0Ym9keSB0ZFwiKS5tYXAoZnVuY3Rpb24gKGksIHRkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQodGQpLmNzcyhcInRleHQtYWxpZ25cIikgPT09IFwibGVmdFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRkKS5jc3MoXCJvdmVyZmxvdy13cmFwXCIsIFwiYnJlYWstd29yZFwiKS5jc3MoXCJ3b3JkLXdyYXBcIiwgXCJicmVhay13b3JkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcGkoKS5jb2x1bW5zLmFkanVzdCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHByZURyYXdDYWxsYmFjaylcbiAgICAgICAgICAgICAgICBldmFsKHByZURyYXdDYWxsYmFjayk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0Um93c1RhYmxlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgJChcIiNcIiArIGlkdGFibGUgK1wiIHRib2R5XCIpLm9uKCAnY2xpY2snLCAndHInLCBmdW5jdGlvbiAoKXtcbiAgICAgICAgICAgICAgICBzZWxlY3RSb3dzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICBpZighdXNlX2pxdWVyeV9sb2FkaW5nKXtcbiAgICAgICAgICAgIG9wdHMucGFnaW5nID0gZmFsc2U7XG4gICAgICAgICAgICBvcHRzLmluaXRDb21wbGV0ZSA9IGZ1bmN0aW9uKHNldHRpbmdzLGpzb24pe1xuICAgICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIC8vIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsgdC5hcGkoKS5jb2x1bW5zLmFkanVzdCgpOyB9LCAzMDApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmKG9uc3VjY2VzcylcbiAgICAgICAgICAgICAgICBvcHRzLmRyYXdDYWxsYmFjayA9IGZ1bmN0aW9uKHNldHRpbmdzKXtcbiAgICAgICAgICAgICAgICAgICAgaWYoSVdFbnYgPT09IFwiYm9vdHN0cmFwXCIpICQoJ1tkYXRhLXRvZ2dsZT1cXFwidG9vbHRpcFxcXCJdJykudG9vbHRpcCgpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAkKFwiLnVpLWF1dG9jb21wbGV0ZS1pbnB1dFwiKS5hdXRvY29tcGxldGVPbkZvY3VzRXZlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICQoXCIuZHQtc2Nyb2xsLWJvZHkgLml3U2VsZWN0MlwiKS5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmJ1aWxkU2VsZWN0Mih0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChvbnN1Y2Nlc3MpO1xuICAgICAgICAgICAgICAgICAgICB9LCAzMDApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJHRhYmxlLkRhdGFUYWJsZShvcHRzKTtcbiAgICAgICAgICAgIHNlbGVjdFJvd3NUYWJsZSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoISRkaXZfYXR0cnMuZGF0YShcInBhZ2luZ1wiKSkgb3B0cy5wYWdpbmcgPSBmYWxzZTtcbiAgICAgICAgbGV0IGFvQ29sdW1uRGVmcyA9IFtdO1xuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgY29sc19oaWRkZW4ubGVuZ3RoOyBpKyspIGFvQ29sdW1uRGVmcy5wdXNoKHsgYVRhcmdldHM6IFtpXSwgYlNlYXJjaGFibGU6IHRydWUgfSk7XG4gICAgICAgIG9wdHMuYW9Db2x1bW5EZWZzID0gYW9Db2x1bW5EZWZzO1xuXG4gICAgICAgIGlmKCRkaXZfYXR0cnMuZGF0YShcImZvb3Rlcmlucm93c1wiKSlcbiAgICAgICAgICAgIG9wdHMuZm9vdGVyQ2FsbGJhY2sgPSBmdW5jdGlvbih0Zm9vdCwgZGF0YSwgc3RhcnQsIGVuZCwgZGlzcGxheSl7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlID0gdGhpcy5hcGkoKS5hamF4Lmpzb24oKTtcbiAgICAgICAgICAgICAgICBsZXQgZm9vdGVyID0gJHRhYmxlLkRhdGFUYWJsZSgpLnRhYmxlKCkuZm9vdGVyKCk7XG4gICAgICAgICAgICAgICAgbGV0IGZvb3Rlcl9kYXRhID0gcmVzcG9uc2UuZGF0YS5mb290ZXI7XG4gICAgICAgICAgICAgICAgbGV0IGZvb3Rlcl9zcmMgPSAnJztcbiAgICAgICAgICAgICAgICBsZXQgcm93c19hbGlnbiA9ICRkaXZfYXR0cnMuZGF0YShcInJvd3NhbGlnblwiKTtcblxuICAgICAgICAgICAgICAgIGxldCB0ID0gdGhpcztcblxuICAgICAgICAgICAgICAgICQuZWFjaChmb290ZXJfZGF0YSwgZnVuY3Rpb24oaiwgdil7XG4gICAgICAgICAgICAgICAgICAgIGZvb3Rlcl9zcmMgKz0gJzx0cj4nO1xuICAgICAgICAgICAgICAgICAgICB0LmFwaSgpLmNvbHVtbnMoKS5ldmVyeSggZnVuY3Rpb24gKCBpICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFsaWduID0gcm93c19hbGlnbltpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0eHRfYWxpZ247XG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGFsaWduKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdSJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHh0X2FsaWduID0gJ3N0eWxlPVxcXCJ0ZXh0LWFsaWduOiByaWdodDtcXFwiJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnTCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4dF9hbGlnbiA9ICdzdHlsZT1cXFwidGV4dC1hbGlnbjogbGVmdDtcXFwiJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHh0X2FsaWduID0gJ3N0eWxlPVxcXCJ0ZXh0LWFsaWduOiBjZW50ZXI7XFxcIic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyX3NyYyArPSAnPHRoICcgKyB0eHRfYWxpZ24gKyAnPicgKyBmb290ZXJfZGF0YVtqXVtpXSArICc8L3RoPic7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGZvb3Rlcl9zcmMgKz0gJzwvdHI+JztcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGZvb3Rlci5pbm5lckhUTUwgPSBmb290ZXJfc3JjO1xuICAgICAgICAgICAgfVxuICAgICAgICBvcHRzLmRyYXdDYWxsYmFjayA9IGZ1bmN0aW9uKHNldHRpbmdzKXtcbiAgICAgICAgICAgIGlmKElXRW52ID09PSBcImJvb3RzdHJhcFwiKSAkKCdbZGF0YS10b2dnbGU9XFxcInRvb2x0aXBcXFwiXScpLnRvb2x0aXAoKTtcbiAgICAgICAgICAgICQoXCIjXCIgKyBpZHRhYmxlICtcIl90YWJsZV9ucm93c1wiKS52YWwoICR0YWJsZS5EYXRhVGFibGUoKS5kYXRhKCkuY291bnQoKSk7XG4gICAgICAgICAgICAkKFwiI1wiICsgaWR0YWJsZSArIFwiX3RhYmxlX3RvdGFsX3Jvd3NcIikudmFsKCB0aGlzLmFwaSgpLnBhZ2UuaW5mbygpLnJlY29yZHNUb3RhbCApO1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYXBpKCkuYWpheC5qc29uKCk7IC8vU2Fsdm8gaW4gdW5hIHZhcmlhYmlsZSBpbCBjb250ZW51dG8gZGVsbGUgcmlnaGUgY2hlIHB1w7IgZXNzZXJlIHJlY3VwZXJhdG8gZGFsIG9uc3VjY2Vzc1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICQoXCIudWktYXV0b2NvbXBsZXRlLWlucHV0XCIpLmF1dG9jb21wbGV0ZU9uRm9jdXNFdmVudCgpO1xuICAgICAgICAgICAgICAgIHJlbG9hZENvbXBvbmVudHMoXCIjXCIgKyBpZHRhYmxlICsgXCIgXCIsIHRydWUpO1xuICAgICAgICAgICAgICAgIGlmKG9uc3VjY2VzcykgZXZhbChvbnN1Y2Nlc3MpO1xuICAgICAgICAgICAgICAgIGlmKElXRW52ICE9PSBcImJvb3RzdHJhcFwiKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgICAkKFwiI1wiICsgaWR0YWJsZSArIFwiIDppbnB1dFwiKS5lYWNoKGZ1bmN0aW9uKCl7IGlmKCQodGhpcykuYXR0cigndHlwZScpICE9PSAnY2hlY2tib3gnKSQodGhpcykuYWRkQ2xhc3MoJ2Zvcm0tY29udHJvbCcpO30pXG4gICAgICAgICAgICB9LCAzMDApO1xuICAgICAgICB9XG4gICAgICAgIG9wdHMubGVuZ3RoTWVudSA9ICRkaXZfYXR0cnMuZGF0YShcImxlbmd0aG1lbnVcIik7XG4gICAgICAgIGlmKGdldEZsb2F0KCRkaXZfYXR0cnMuZGF0YShcInBhZ2VsZW5ndGhcIikpID4gMCkgb3B0cy5wYWdlTGVuZ3RoID0gZ2V0RmxvYXQoJGRpdl9hdHRycy5kYXRhKFwicGFnZWxlbmd0aFwiKSk7XG4gICAgICAgIG9wdHMucHJvY2Vzc2luZyA9ICRkaXZfYXR0cnMuZGF0YShcInNlcnZlcnNpZGVcIik7XG4gICAgICAgIG9wdHMuc2VydmVyU2lkZSA9ICRkaXZfYXR0cnMuZGF0YShcInNlcnZlcnNpZGVcIik7XG4gICAgICAgIG9wdHMuYWpheCA9IHsgdXJsOiAkZGl2X2F0dHJzLmRhdGEoXCJhamF4dXJsXCIpfTtcbiAgICAgICAgaWYoJGRpdl9hdHRycy5kYXRhKFwiZGVmaW5lZC1hamF4LWRhdGFcIikpe1xuICAgICAgICAgICAgb3B0cy5hamF4LmRhdGEgPSAkZGl2X2F0dHJzLmRhdGEoXCJkZWZpbmVkLWFqYXgtZGF0YVwiKTtcbiAgICAgICAgICAgIG9wdHMuYWpheC50eXBlID0gXCJwb3N0XCI7XG4gICAgICAgICAgICBvcHRzLmFqYXguZGF0YVNyYyA9IGZ1bmN0aW9uKGpzb24pe1xuICAgICAgICAgICAgICAgIHJldHVybiBqc29uLmRhdGEucm93cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmKCRkaXZfYXR0cnMuZGF0YShcImxvYWRmb3JtZGF0YVwiKSlcbiAgICAgICAge1xuICAgICAgICAgICAgb3B0cy5hamF4LmRhdGEgPSBmdW5jdGlvbiAoZCl7XG4gICAgICAgICAgICAgICAgbGV0IGlucHV0cyA9ICQoXCIjXCIgKyAkZGl2X2F0dHJzLmRhdGEoXCJmb3JtaWRcIikgKyBcIiA6aW5wdXQsIDpjaGVja2JveFwiKS5zZXJpYWxpemVBcnJheSgpO1xuICAgICAgICAgICAgICAgIGxldCBuYW1lLCB2YWx1ZTtcbiAgICAgICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgaW5wdXRzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgICAgICAgICAgaWYoc3RycG9zKGlucHV0c1tpXS5uYW1lLCdbJykgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gaW5wdXRzW2ldLm5hbWUuc3Vic3RyKDAsIHN0cnBvcyhpbnB1dHNbaV0ubmFtZSwnWycpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gJCgnIycgKyBuYW1lKS52YWwoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBpbnB1dHNbaV0ubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gaW5wdXRzW2ldLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGRbbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcHRzLmFqYXgudHlwZSA9IFwicG9zdFwiO1xuICAgICAgICAgICAgb3B0cy5hamF4LmRhdGFTcmMgPSBmdW5jdGlvbihqc29uKXtcbiAgICAgICAgICAgICAgICByZXR1cm4ganNvbi5kYXRhLnJvd3M7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyppZiAob3B0cy5wcm9jZXNzaW5nKSB7XG4gICAgICAgICAgICAkKFwiI1wiICsgaWR0YWJsZSkub24oJ3Byb2Nlc3NpbmcuZHQnLCBmdW5jdGlvbiAoZSwgc2V0dGluZ3MsIHByb2Nlc3NpbmcpIHtcbiAgICAgICAgICAgICAgICAvLyQoZS50YXJnZXQpLnBhcmVudCgpLmNzcygnb3ZlcmZsb3cnLCBwcm9jZXNzaW5nID8gJ2hpZGRlbicgOiAnYXV0bycpO1xuICAgICAgICAgICAgICAgICQoXCIjXCIgKyBpZHRhYmxlICsgXCIgdGJvZHlcIikucHJlcGVuZCgnPGRpdiBjbGFzcz1cImxvYWRlclwiPjwvZGl2PicpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0qL1xuICAgICAgICBjb25zdCBjbGFzc0NvbHVtbnNBbGlnbnMgPSAkZGl2X2F0dHJzLmRhdGEoXCJjbGFzc2NvbHVtbnNhbGlnbnNcIik7XG4gICAgICAgIGNvbnN0IHJvd3NBbGlnbiA9ICRkaXZfYXR0cnMuZGF0YShcInJvd3NhbGlnblwiKTtcbiAgICAgICAgY29uc3QgY2xhc3NDb2x1bW5zVmVydGljYWxBbGlnbnMgPSAkZGl2X2F0dHJzLmRhdGEoXCJjbGFzc2NvbHVtbnN2ZXJ0aWNhbGFsaWduc1wiKTtcbiAgICAgICAgY29uc3QgY29sc0FsaWduID0gJGRpdl9hdHRycy5kYXRhKFwiY29sc2FsaWduXCIpO1xuICAgICAgICBvcHRzLmNvbHVtbnMgPSBbXTtcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGdldEZsb2F0KCRkaXZfYXR0cnMuZGF0YShcIm5jb2xzXCIpKTsgaSsrKVxuICAgICAgICAgICAgb3B0cy5jb2x1bW5zLnB1c2goe1xuICAgICAgICAgICAgICAgIGRhdGE6ICdjb2x1bW4nICsgaSxcbiAgICAgICAgICAgICAgICBzQ2xhc3M6IGNsYXNzQ29sdW1uc0FsaWduc1tyb3dzQWxpZ25baV1dICsgXCIgXCIgKyBjbGFzc0NvbHVtbnNWZXJ0aWNhbEFsaWduc1tjb2xzQWxpZ25baV1dICsgKGNvbHNfaGlkZGVuW2ldID09PSBcInRydWVcIiA/IFwiIGhpZGVEYXRhVGFibGVzQ29sdW1uIGhpZGVEYXRhVGFibGVzQ29sdW1uXCIgKyBpZHRhYmxlIDogXCJcIilcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIG5ldyBEYXRhVGFibGUoXCIjXCIgKyBpZHRhYmxlLCBvcHRzKTtcbiAgICAgICAgc2VsZWN0Um93c1RhYmxlKCk7XG4gICAgICAgIGNvbnN0ICRmb290ZXJGaWx0ZXJzID0gJChcIi50c19mb290ZXJfZmlsdGVyc1wiKTtcbiAgICAgICAgJGZvb3RlckZpbHRlcnMub2ZmKCk7XG4gICAgICAgICRmb290ZXJGaWx0ZXJzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgJCh0aGlzKS5vbihcImtleXByZXNzXCIsIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5Y29kZSA9IChldmVudC5rZXlDb2RlID8gZXZlbnQua2V5Q29kZSA6IGV2ZW50LndoaWNoKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhrZXljb2RlKTtcbiAgICAgICAgICAgICAgICBpZihrZXljb2RlID09PSAxMyl7XG4gICAgICAgICAgICAgICAgICAgIHJlbG9hZFRhYmxlKCQodGhpcykuZGF0YShcImlkdGFibGVcIikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgfSxcblxuICAgIGJ1aWxkQ2tFZGl0b3I6IGZ1bmN0aW9uIChlZGl0b3Ipe1xuICAgICAgICAkKGVkaXRvcikuY2tlZGl0b3Ioe1xuICAgICAgICAgICAgdGl0bGU6JycsXG4gICAgICAgICAgICBoZWlnaHQ6ICQoZWRpdG9yKS5kYXRhKFwiaGVpZ2h0XCIpLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6ICQoZWRpdG9yKS5kYXRhKFwibGFuZ3VhZ2VcIiksXG4gICAgICAgICAgICBza2luOiAnbW9vbm8tbGlzYScsXG4gICAgICAgICAgICB1aUNvbG9yOiAnI2QzZDNkMycsXG4gICAgICAgICAgICBleHRyYVBsdWdpbnM6ICdqdXN0aWZ5LGZvbnQsY29sb3JidXR0b24nLFxuICAgICAgICAgICAgdG9vbGJhckNhbkNvbGxhcHNlOiB0cnVlLFxuICAgICAgICAgICAgZW50ZXJNb2RlIDogQ0tFRElUT1IuRU5URVJfQlIsXG4gICAgICAgICAgICBzaGlmdEVudGVyTW9kZTogQ0tFRElUT1IuRU5URVJfUCxcbiAgICAgICAgICAgIGFsbG93ZWRDb250ZW50OiB0cnVlLFxuICAgICAgICAgICAgdG9vbGJhckdyb3VwczogW1xuICAgICAgICAgICAgICAgIHsgbmFtZTogJ2NsaXBib2FyZCcsICAgZ3JvdXBzOiBbICdjbGlwYm9hcmQnLCAndW5kbycgXSB9LFxuICAgICAgICAgICAgICAgIHsgbmFtZTogJ2VkaXRpbmcnLCAgICAgZ3JvdXBzOiBbICdmaW5kJywgJ3NlbGVjdGlvbicsICdzcGVsbGNoZWNrZXInIF0gfSxcbiAgICAgICAgICAgICAgICB7IG5hbWU6ICdsaW5rcycgfSxcbiAgICAgICAgICAgICAgICB7IG5hbWU6ICdpbnNlcnQnIH0sXG4gICAgICAgICAgICAgICAgeyBuYW1lOiAndG9vbHMnIH0sXG4gICAgICAgICAgICAgICAgeyBuYW1lOiAnZG9jdW1lbnQnLCAgICBncm91cHM6IFsgJ21vZGUnLCAnZG9jdW1lbnQnLCAnZG9jdG9vbHMnIF0gfSxcblxuICAgICAgICAgICAgICAgIHsgbmFtZTogJ2Jhc2ljc3R5bGVzJywgZ3JvdXBzOiBbICdiYXNpY3N0eWxlcycsICdjbGVhbnVwJyBdIH0sXG4gICAgICAgICAgICAgICAgeyBuYW1lOiAncGFyYWdyYXBoJywgICBncm91cHM6IFsgJ2xpc3QnLCAnaW5kZW50JywgJ2Jsb2NrcycsICdhbGlnbicgXSB9LFxuICAgICAgICAgICAgICAgIHsgbmFtZTogJ3N0eWxlcycgfSxcbiAgICAgICAgICAgICAgICB7IG5hbWU6ICdjb2xvcnMnIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSlcbiAgICB9LFxuXG4gICAgYnVpbGRKcXVlcnlVcGxvYWRGaWxlOiBmdW5jdGlvbiAoZWxlbSkge1xuICAgICAgICBjb25zdCAkZWxlbSA9ICQoZWxlbSk7XG5cbiAgICAgICAgY29uc3Qgb3B0cyA9IHtcbiAgICAgICAgICAgIHVybDogXCJhamF4LnBocD9KU09OJm9iamVjdD1VcGxvYWRlZEZpbGUmdGlwb3ZpZXc9anF1ZXJ5UGx1Z2luVXBsb2FkRmlsZSZpZD1cIiArICRlbGVtLmF0dHIoXCJpZFwiKSAgKyBcIiZpZHVwbG9hZD1cIiArICRlbGVtLmRhdGEoXCJpZHVwbG9hZFwiKSArIFwiJmlzX3Zpc3VhbGl6emFfZXN0ZXJubz1cIiArIHBhcnNlSW50KCRlbGVtLmRhdGEoXCJpc192aXN1YWxpenphX2VzdGVybm9cIikpICsgXCImaXNfY3J5cHRlZD1cIiArICRlbGVtLmRhdGEoXCJpc19jcnlwdGVkXCIpICsgXCImZm9yY2VfZGI9XCIgKyAkZWxlbS5kYXRhKFwiZm9yY2VfZGJcIiksXG4gICAgICAgICAgICBmaWxlTmFtZTogXCJteWZpbGVfXCIgKyAkZWxlbS5hdHRyKFwiaWRcIiksXG4gICAgICAgICAgICBkcmFnRHJvcFN0cjogXCI8c3BhbiBpZD0nc3Bhbl9kcmFkRHJvcFN0cl9cIiArICRlbGVtLmF0dHIoXCJpZFwiKSArIFwiJz48Yj5cIiArIChwYXJzZUludCgkZWxlbS5kYXRhKFwiaWR1cGxvYWRcIikpID8gJGVsZW0uZGF0YShcInJlYWxuYW1lXCIpICsgJGVsZW0uZGF0YShcImltZ2Rvd25cIikgOiAkZWxlbS5kYXRhKFwidHJhc2NpbmFfZmlsZV90ZXh0XCIpICkrIFwiPC9iPjwvc3Bhbj5cIixcbiAgICAgICAgICAgIGFib3J0U3RyOiAkZWxlbS5kYXRhKFwic3RvcF90ZXh0XCIpLFxuICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgZHJhZ2Ryb3BXaWR0aDogXCJpbmhlcml0XCIsXG4gICAgICAgICAgICBtYXhGaWxlQ291bnQ6IDEsXG4gICAgICAgICAgICBzaG93RGVsZXRlOiB0cnVlLFxuICAgICAgICAgICAgc2hvd0Rvd25sb2FkOiB0cnVlLFxuICAgICAgICAgICAgd2lkdGg6IFwiaW5oZXJpdFwiLFxuICAgICAgICAgICAgZXh0RXJyb3JTdHI6ICRlbGVtLmRhdGEoXCJlcnJvcmVfZXN0ZW5zaW9uaV90ZXh0XCIpLFxuICAgICAgICAgICAgdXBsb2FkU3RyOiAkZWxlbS5kYXRhKFwic2ZvZ2xpYV90ZXh0XCIpLFxuICAgICAgICAgICAgb25TdWNjZXNzOiAoZmlsZXMsZGF0YSx4aHIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZGF0YScpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkdXBsb2FkID0gZ2V0RmxvYXQoZGF0YVsxXSk7XG4gICAgICAgICAgICAgICAgaWYoaWR1cGxvYWQgPT09IDApe1xuICAgICAgICAgICAgICAgICAgICBhbGVydChkYXRhWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAkKFwiI25vbWVmaWxlX1wiICsgJGVsZW0uYXR0cihcImlkXCIpKS52YWwoZmlsZXMpO1xuICAgICAgICAgICAgICAgICQoXCIjaWR1cGxvYWRfXCIgKyAkZWxlbS5hdHRyKFwiaWRcIikpLnZhbChpZHVwbG9hZCk7XG4gICAgICAgICAgICAgICAgJChcIiNzcGFuX2RyYWREcm9wU3RyX1wiICsgJGVsZW0uYXR0cihcImlkXCIpKS5odG1sKCc8Yj4nK2ZpbGVzKyc8L2I+Jyk7XG4gICAgICAgICAgICAgICAgJChcIiNmaWxlY2FyaWNhdG9fXCIgKyAkZWxlbS5hdHRyKFwiaWRcIikpLmNzcygnZGlzcGxheScsJ25vbmUnKTtcbiAgICAgICAgICAgICAgICAkKFwiLmFqYXgtZmlsZS11cGxvYWQtcHJvZ3Jlc3NcIikuaGlkZSgpO1xuICAgICAgICAgICAgICAgICQoXCIuYWpheC1maWxlLXVwbG9hZC1iYXJcIikuaGlkZSgpO1xuICAgICAgICAgICAgICAgICQoXCIuYWpheC1maWxlLXVwbG9hZC1zdGF0dXNiYXJcIikuaGlkZSgpO1xuICAgICAgICAgICAgICAgIGlmKCRlbGVtLmRhdGEoXCJvbnN1Y2Nlc3NfY2FsbGJhY2tcIikpIGV2YWwoJGVsZW0uZGF0YShcIm9uc3VjY2Vzc19jYWxsYmFja1wiKSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25FcnJvcjogZnVuY3Rpb24oZmlsZXMsc3RhdHVzLGVyck1zZyl7XG4gICAgICAgICAgICAgICAgZm9vdGVyTXNnKDEsICRlbGVtLmRhdGEoXCJvbkVycm9yX3RleHRcIiksZXJyTXNnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZihwYXJzZUludCgkZWxlbS5kYXRhKFwiaXNfZm90b1wiKSkpXG4gICAgICAgICAgICBvcHRzLmFsbG93ZWRUeXBlcyA9IFwianBnLGpwZWcscG5nLGJtcCxnaWYsdGlmZlwiO1xuICAgICAgICBlbHNlIGlmKCRlbGVtLmRhdGEoXCJhbGxvd2VkLXR5cGVzXCIpKVxuICAgICAgICAgICAgb3B0cy5hbGxvd2VkVHlwZXMgPSAkZWxlbS5kYXRhKFwiYWxsb3dlZC10eXBlc1wiKTtcblxuICAgICAgICAkZWxlbS51cGxvYWRGaWxlKG9wdHMpXG4gICAgfVxufSJdLCJuYW1lcyI6WyJEYXRhVGFibGUiLCIkIiwiZ2V0RmxvYXQiLCJvblZpc2libGUiLCJyZWxvYWRDb21wb25lbnRzIiwicmVxdWlyZSIsImJ1aWxkU2VsZWN0MiIsInNlbGVjdCIsIiRzZWxlY3QiLCJwbGFjZWhvbGRlciIsImRhdGEiLCJhbGxvd0NsZWFyIiwic2VsZWN0VmFsdWUiLCJrZWVwU2VsZWN0ZWRBZmVyQWpheCIsImRyb3Bkb3duUGFyZW50IiwidmFsIiwibGVuZ3RoIiwidXJsIiwib3B0cyIsIndpZHRoIiwidGFncyIsImRyb3Bkb3duQXV0b1dpZHRoIiwiYWpheCIsImRhdGFUeXBlIiwicGFyYW1zIiwicGFyYW1zVG9BamF4IiwiYWpheFBhcmFtcyIsIl9pIiwiX09iamVjdCRlbnRyaWVzIiwiT2JqZWN0IiwiZW50cmllcyIsIl9PYmplY3QkZW50cmllcyRfaSIsIl9zbGljZWRUb0FycmF5Iiwia2V5IiwidmFsdWUiLCJpbmNsdWRlcyIsImZpZWxkcyIsInNwbGl0Iiwic2VhcmNoIiwidGVybSIsInByb2Nlc3NSZXN1bHRzIiwiZWFjaCIsImZpbmQiLCJvcHQiLCJyZW1vdmUiLCJpdGVtcyIsImZvckVhY2giLCJpdGVtIiwibmV3T3B0aW9uIiwiT3B0aW9uIiwidGV4dCIsImlkIiwia2V5cyIsImRhdGFzZXQiLCJhcHBlbmQiLCJpc011bHRpcGxlIiwiQXJyYXkiLCJpc0FycmF5Iiwic2VsZWN0ZWRPcHRzIiwiZmlsdGVyIiwidG9TdHJpbmciLCJtYXAiLCJ0cmlnZ2VyIiwicmVzdWx0cyIsInRlbXBsYXRlUmVzdWx0Iiwib3B0aW9uIiwidGVtcGxhdGUiLCJvcHRpb25zIiwiaSIsImh0bWwiLCJ0cmlnZ2VyX2NoYW5nZV9ldmVudCIsInBhcnNlSW50Iiwic2VsZWN0MiIsImhvdmVyIiwicmVtb3ZlQXR0ciIsIm9uY2hhbmdlIiwiYXR0ciIsIm9uIiwiZXZhbCIsImJ1aWxkRGF0YXRhYmxlcyIsInRhYmxlIiwic2VsZiIsImlkdGFibGUiLCIkdGFibGUiLCIkZGl2X2F0dHJzIiwidXNlX2pxdWVyeV9sb2FkaW5nIiwiSVdFbnYiLCJzZWxlY3RSb3dzIiwiaGFzQ2xhc3MiLCJyZW1vdmVDbGFzcyIsImFkZENsYXNzIiwib25zdWNjZXNzIiwicHJlRHJhd0NhbGxiYWNrIiwicmV0cmlldmUiLCJzZWFyY2hpbmciLCJvcmRlcmluZyIsImxhbmd1YWdlIiwiaW5mbyIsImxlbmd0aE1lbnUiLCJ6ZXJvUmVjb3JkcyIsImluZm9FbXB0eSIsInByb2Nlc3NpbmciLCJpbmZvRmlsdGVyZWQiLCJkZWNpbWFsIiwidGhvdXNhbmRzIiwicGFnaW5hdGUiLCJvcmRlciIsInNjcm9sbFkiLCJzY3JvbGxYIiwiZml4ZWRDb2x1bW5zIiwibGFiZWxzX2J1dHRvbnMiLCJmdW5jdGlvbnNfYnV0dG9ucyIsImNsYXNzZXNfYnV0dG9ucyIsImNvbHNfaGlkZGVuIiwiaXNmdWxsV2lkdGgiLCJidXR0b25zIiwiaW5fYXJyYXkiLCJwdXNoIiwiYWN0aW9uIiwiJGhpZGVDb2x1bW4iLCJpcyIsImhpZGUiLCJjc3MiLCJ0aXRsZUF0dHIiLCJjbGFzc05hbWUiLCJsYWJlbCIsInVuZGVmaW5lZCIsImRvbSIsIl90aGlzIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiJHRhYmxlY29udCIsImNsb3Nlc3QiLCIkZHRsZW5ndGgiLCIkZHRidXR0b25zIiwiJGR0aW5mbyIsIiRkdHBhZ2luZyIsImhlaWdodCIsIndpZHRoc0RlZmluZWQiLCJub0hpZGRlbkNvbHMiLCJ0ZCIsImFwaSIsImNvbHVtbnMiLCJhZGp1c3QiLCJzZWxlY3RSb3dzVGFibGUiLCJwYWdpbmciLCJpbml0Q29tcGxldGUiLCJzZXR0aW5ncyIsImpzb24iLCJ0IiwiZHJhd0NhbGxiYWNrIiwidG9vbHRpcCIsInNldFRpbWVvdXQiLCJhdXRvY29tcGxldGVPbkZvY3VzRXZlbnQiLCJhb0NvbHVtbkRlZnMiLCJhVGFyZ2V0cyIsImJTZWFyY2hhYmxlIiwiZm9vdGVyQ2FsbGJhY2siLCJ0Zm9vdCIsInN0YXJ0IiwiZW5kIiwiZGlzcGxheSIsInJlc3BvbnNlIiwiZm9vdGVyIiwiZm9vdGVyX2RhdGEiLCJmb290ZXJfc3JjIiwicm93c19hbGlnbiIsImoiLCJ2IiwiZXZlcnkiLCJhbGlnbiIsInR4dF9hbGlnbiIsImlubmVySFRNTCIsImNvdW50IiwicGFnZSIsInJlY29yZHNUb3RhbCIsInBhZ2VMZW5ndGgiLCJzZXJ2ZXJTaWRlIiwidHlwZSIsImRhdGFTcmMiLCJyb3dzIiwiZCIsImlucHV0cyIsInNlcmlhbGl6ZUFycmF5IiwibmFtZSIsInN0cnBvcyIsInN1YnN0ciIsImNsYXNzQ29sdW1uc0FsaWducyIsInJvd3NBbGlnbiIsImNsYXNzQ29sdW1uc1ZlcnRpY2FsQWxpZ25zIiwiY29sc0FsaWduIiwic0NsYXNzIiwiJGZvb3RlckZpbHRlcnMiLCJvZmYiLCJldmVudCIsImtleWNvZGUiLCJrZXlDb2RlIiwid2hpY2giLCJjb25zb2xlIiwibG9nIiwicmVsb2FkVGFibGUiLCJidWlsZENrRWRpdG9yIiwiZWRpdG9yIiwiY2tlZGl0b3IiLCJ0aXRsZSIsInNraW4iLCJ1aUNvbG9yIiwiZXh0cmFQbHVnaW5zIiwidG9vbGJhckNhbkNvbGxhcHNlIiwiZW50ZXJNb2RlIiwiQ0tFRElUT1IiLCJFTlRFUl9CUiIsInNoaWZ0RW50ZXJNb2RlIiwiRU5URVJfUCIsImFsbG93ZWRDb250ZW50IiwidG9vbGJhckdyb3VwcyIsImdyb3VwcyIsImJ1aWxkSnF1ZXJ5VXBsb2FkRmlsZSIsImVsZW0iLCIkZWxlbSIsImZpbGVOYW1lIiwiZHJhZ0Ryb3BTdHIiLCJhYm9ydFN0ciIsIm11bHRpcGxlIiwiZHJhZ2Ryb3BXaWR0aCIsIm1heEZpbGVDb3VudCIsInNob3dEZWxldGUiLCJzaG93RG93bmxvYWQiLCJleHRFcnJvclN0ciIsInVwbG9hZFN0ciIsIm9uU3VjY2VzcyIsImZpbGVzIiwieGhyIiwiaWR1cGxvYWQiLCJhbGVydCIsIm9uRXJyb3IiLCJzdGF0dXMiLCJlcnJNc2ciLCJmb290ZXJNc2ciLCJhbGxvd2VkVHlwZXMiLCJ1cGxvYWRGaWxlIl0sInNvdXJjZVJvb3QiOiIifQ==