EthikTag/public/build/app.js

380 lines
58 KiB
JavaScript

"use strict";
(self["webpackChunk"] = self["webpackChunk"] || []).push([["app"],{
/***/ "./assets/app.js":
/*!***********************!*\
!*** ./assets/app.js ***!
\***********************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var core_js_modules_web_timers_js__WEBPACK_IMPORTED_MODULE_0__ = __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_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_timers_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js");
/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _js_getCodeBarre__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./js/getCodeBarre */ "./assets/js/getCodeBarre.js");
/* provided dependency */ var $ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js");
/*
* Welcome to your app's main JavaScript file!
*
* We recommend including the built version of this JavaScript file
* (and its CSS file) in your base layout (base.html.twig).
*/
// any CSS you import will output into a single css file (app.css in this case)
// start the Stimulus application
$(document).ready(function () {
setTimeout(function () {
// utils.init();
_js_getCodeBarre__WEBPACK_IMPORTED_MODULE_2__["default"].init();
}, 200);
});
/***/ }),
/***/ "./assets/js/getCodeBarre.js":
/*!***********************************!*\
!*** ./assets/js/getCodeBarre.js ***!
\***********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ GetEvent)
/* harmony export */ });
/* harmony import */ var core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __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_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_date_to_string_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_1__ = __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_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __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_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_3__ = __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_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var core_js_modules_web_timers_js__WEBPACK_IMPORTED_MODULE_4__ = __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_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_timers_js__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var core_js_modules_es_object_define_property_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.define-property.js */ "./node_modules/core-js/modules/es.object.define-property.js");
/* harmony import */ var core_js_modules_es_object_define_property_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_define_property_js__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var core_js_modules_es_error_cause_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.error.cause.js */ "./node_modules/core-js/modules/es.error.cause.js");
/* harmony import */ var core_js_modules_es_error_cause_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_error_cause_js__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var core_js_modules_es_error_to_string_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.error.to-string.js */ "./node_modules/core-js/modules/es.error.to-string.js");
/* harmony import */ var core_js_modules_es_error_to_string_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_error_to_string_js__WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var core_js_modules_es_array_is_array_js__WEBPACK_IMPORTED_MODULE_8__ = __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_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_is_array_js__WEBPACK_IMPORTED_MODULE_8__);
/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_9__ = __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_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_9__);
/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_10__ = __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_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_10__);
/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_11__ = __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_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_11__);
/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_12__ = __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_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_12__);
/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_13__ = __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_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_13__);
/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_14__ = __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_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_14__);
/* harmony import */ var core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_15__ = __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_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_from_js__WEBPACK_IMPORTED_MODULE_15__);
/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_16__ = __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_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_16__);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_17__ = __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_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_17__);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_18__ = __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_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_18__);
/* harmony import */ var core_js_modules_es_regexp_test_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! core-js/modules/es.regexp.test.js */ "./node_modules/core-js/modules/es.regexp.test.js");
/* harmony import */ var core_js_modules_es_regexp_test_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_test_js__WEBPACK_IMPORTED_MODULE_19__);
/* provided dependency */ var $ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js");
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread 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 _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
var GetEvent = /*#__PURE__*/function () {
function GetEvent() {
_classCallCheck(this, GetEvent);
}
_createClass(GetEvent, null, [{
key: "init",
value: function init() {
this.getEvent();
}
}, {
key: "getEvent",
value: function getEvent() {
var saisie = $('#saisie');
saisie.focus();
var value;
var $info = $('.info');
var $infoDon = $('#info-don');
var $infoDonneur = $('#info-donneur');
var $infoPsl = $('#info-psl');
var $don = $('#don');
var $nom = $('#nom');
var $prenom = $('#prenom');
var $naissance = $('#naissance');
var $typeDon = $('#typeDon');
var $typePoche = $('#typePoche');
var $nbreTube = $('#nbreTube');
var $step = $('#step');
var $indication = $('#indication');
var $evolution = $('#evolution');
var $label = $('#label');
var $type = $('#type');
var $current = $('#current');
var $todo = $('#todo');
var $picturePoche = $('#picturePoche');
var $pictureTube = $('#pictureTube');
var $input = $('#inputRange');
var $displayError = $('.error');
var $displaySuccess = $('.displaySuccess');
document.addEventListener('keydown', function (event) {
saisie.focus();
if (event.code == 'Tab') {
value = saisie.val();
saisie.val('');
$.ajax({
url: '/api/get-code-barre-type',
method: "POST",
dataType: "json",
data: {
'codeBarre': value
},
success: function success(response) {
switch (response.data.step) {
case '0':
if (response.data.status == 'success') {
$don.html(response.data.codeBarre);
$nom.html(response.data.nom);
$prenom.html(response.data.prenom);
$naissance.html(new Date(response.data.birthdate).toLocaleDateString());
$typeDon.html(response.data.type_don);
$nbreTube.html(response.data.nbre_tube);
$step.html('Pour passer à la suite');
$indication.html('Scannez le DMU');
$pictureTube.css('display', 'none');
$picturePoche.css('display', 'flex');
$info.css('visibility', 'visible');
saisie.focus();
}
if (response.data.status == 'init') {
var pochesImg = $('.sang');
_toConsumableArray(pochesImg).forEach(function (sang) {
sang.remove();
});
$don.html(response.data.codeBarre);
$nom.html(response.data.nom);
$prenom.html(response.data.prenom);
$naissance.html(new Date(response.data.birthdate).toLocaleDateString());
$typeDon.html(response.data.type_don);
$nbreTube.html(response.data.nbre_tube);
$step.html('Pour passer à la suite');
$indication.html('Scannez le DMU');
$typePoche.html('');
$info.css('visibility', 'visible');
$evolution.css('visibility', 'hidden');
saisie.focus();
}
if (response.data.status == 'error') {
saisie.focus();
$displayError.css('display', "flex");
setTimeout(function () {
$displayError.css('display', 'none');
}, 5000);
}
break;
case '1':
if (response.data.status == 'success') {
$typePoche.html(response.data.nbre_poche);
$step.html('ETAPE 1 / 2');
$indication.html('Scannez les étiquettes des poches');
saisie.focus();
$evolution.css('visibility', 'visible');
}
if (response.data.status == 'error_donneur') {
$displayError.html('erreur donneur');
$displayError.css('display', "flex");
setTimeout(function () {
$displayError.css('display', 'none');
}, 5000);
saisie.focus();
}
if (response.data.status == 'error_doublon') {
$displayError.html('erreur doublon');
$displayError.css('display', "flex");
setTimeout(function () {
$displayError.css('display', 'none');
}, 5000);
saisie.focus();
}
case '2':
if (response.data.status == 'success') {
console.log('step 2 success !!');
$typePoche.html(response.data.nbre_poche);
$current.html(response.data.nbre_poche);
$type.html('Poches');
$todo.html(response.data.nbre_poche_max);
$input.attr('max', response.data.nbre_poche_max);
$input.attr('value', response.data.nbre_poche);
if (response.data.nbre_poche != response.data.nbre_poche_max && response.data.nbre_poche != 0) {
$picturePoche.append('<div class="sang"><img src="/poches/Poche_sang2.png"></div>');
}
saisie.focus();
}
if (response.data.status == 'final') {
$typePoche.html(response.data.nbre_poche);
$current.html(response.data.nbre_poche);
$input.attr('max', response.data.nbre_poche_max);
$input.attr('value', response.data.nbre_poche);
$indication.html('validez avec un scan de poche!');
$picturePoche.append('<div class="sang"><img src="/poches/Poche_sang2.png"></div>');
saisie.focus();
}
if (response.data.status == 'error_scan') {
$displayError.html("Mauvais type d'étiquette");
$displayError.css('display', "flex");
setTimeout(function () {
$displayError.css('display', 'none');
}, 5000);
saisie.focus();
}
if (response.data.status == 'error_doublon') {
$displayError.html('Etiquette déjà scannée');
$displayError.css('display', "flex");
setTimeout(function () {
$displayError.css('display', 'none');
}, 5000);
saisie.focus();
}
if (response.data.status == 'error_donneur') {
$displayError.html('Ne correspond pas au donneur');
$displayError.css('display', "flex");
setTimeout(function () {
$displayError.css('display', 'none');
}, 5000);
saisie.focus();
}
break;
case '3':
if (response.data.status == "success") {
$picturePoche.css('display', 'none');
var _pochesImg = $('.sang');
_toConsumableArray(_pochesImg).forEach(function (sang) {
sang.remove();
});
$pictureTube.css('display', 'flex');
$indication.html('Scannez les étiquettes de tubes!');
$input.attr('max', response.data.nbre_tube_max);
$todo.html(response.data.nbre_tube_max);
$input.attr('value', 0);
$current.html(0);
$type.html('Tubes');
}
if (response.data.status == "error_scan") {
$displayError.html("Mauvais type d'étiquette");
$displayError.css('display', "flex");
setTimeout(function () {
$displayError.css('display', 'none');
}, 5000);
}
break;
case '4':
if (response.data.status == 'success') {
$step.html('ETAPE 2 / 2');
$nbreTube.html(response.data.nbre_tube);
$current.html(response.data.nbre_tube);
$input.attr('max', response.data.nbre_tube_max);
$type.html('Tubes');
$todo.html(response.data.nbre_tube_max);
$input.attr('value', response.data.nbre_tube);
console.log(response.data.nbre_tube);
$pictureTube.append('<div class="sang"><img src="/tubes/Tube' + response.data.nbre_tube + '_check.png"></div>');
saisie.focus();
}
if (response.data.status == 'final') {
$nbreTube.html(response.data.nbre_tube);
$current.html(response.data.nbre_tube_max);
$input.attr('max', response.data.nbre_tube_max);
$type.html('Tubes');
$todo.html(response.data.nbre_tube_max);
$input.attr('value', response.data.nbre_tube);
$pictureTube.append('<div class="sang"><img src="/tubes/Tube' + response.data.nbre_tube + '_check.png"></div>');
$displaySuccess.html('Patient ' + response.data.prenom + ' ' + response.data.nom + ' traité avec succès');
$displaySuccess.css('display', 'flex');
setTimeout(function () {
location.reload();
$displaySuccess.css('display', 'none');
}, 5000);
saisie.focus();
}
if (response.data.status == 'error_scan') {
$displayError.html("Mauvais type d'étiquette");
$displayError.css('display', "flex");
setTimeout(function () {
$displayError.css('display', 'none');
}, 5000);
saisie.focus();
}
if (response.data.status == 'error_doublon') {
$displayError.html('Etiquette déjà scannée');
$displayError.css('display', "flex");
setTimeout(function () {
$displayError.css('display', 'none');
}, 5000);
saisie.focus();
}
if (response.data.status == 'error_donneur') {
$displayError.html('Ne correspond pas au donneur');
$displayError.css('display', "flex");
setTimeout(function () {
$displayError.css('display', 'none');
}, 5000);
saisie.focus();
}
break;
}
}
});
}
});
}
}]);
return GetEvent;
}();
/***/ })
},
/******/ __webpack_require__ => { // webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
/******/ __webpack_require__.O(0, ["vendors-node_modules_core-js_modules_es_array_for-each_js-node_modules_core-js_modules_es_arr-9c7bdc"], () => (__webpack_exec__("./assets/app.js")));
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ }
]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q2xEZixhQUFhLENBQUN3QixHQUFHLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQztvQkFDcENuRCxVQUFVLENBQUMsWUFBTTtzQkFDYjJCLGFBQWEsQ0FBQ3dCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDO29CQUN4QyxDQUFDLEVBQUUsSUFBSSxDQUFDO29CQUNSaEQsTUFBTSxDQUFDQyxLQUFLLEVBQUU7a0JBRWxCO2tCQUNBO2NBQU07WUFFbEI7VUFFSixDQUFDLENBQUM7UUFDTjtNQUNKLENBQUMsQ0FBQztJQUNOO0VBQUM7RUFBQTtBQUFBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2FwcC5qcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvanMvZ2V0Q29kZUJhcnJlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBXZWxjb21lIHRvIHlvdXIgYXBwJ3MgbWFpbiBKYXZhU2NyaXB0IGZpbGUhXG4gKlxuICogV2UgcmVjb21tZW5kIGluY2x1ZGluZyB0aGUgYnVpbHQgdmVyc2lvbiBvZiB0aGlzIEphdmFTY3JpcHQgZmlsZVxuICogKGFuZCBpdHMgQ1NTIGZpbGUpIGluIHlvdXIgYmFzZSBsYXlvdXQgKGJhc2UuaHRtbC50d2lnKS5cbiAqL1xuXG4vLyBhbnkgQ1NTIHlvdSBpbXBvcnQgd2lsbCBvdXRwdXQgaW50byBhIHNpbmdsZSBjc3MgZmlsZSAoYXBwLmNzcyBpbiB0aGlzIGNhc2UpXG5pbXBvcnQgJ2pxdWVyeSc7XG4vLyBzdGFydCB0aGUgU3RpbXVsdXMgYXBwbGljYXRpb25cbmltcG9ydCBHZXRFdmVudCBmcm9tICcuL2pzL2dldENvZGVCYXJyZSc7XG5cbiQoZG9jdW1lbnQpLnJlYWR5KCgpPT57XG4gICAgc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAvLyB1dGlscy5pbml0KCk7XG4gICAgICAgIEdldEV2ZW50LmluaXQoKVxuXG4gICAgfSwgMjAwKTtcbn0pIiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgR2V0RXZlbnR7XG4gICAgc3RhdGljIGluaXQoKXtcbiAgICAgICAgdGhpcy5nZXRFdmVudCgpXG4gICAgfVxuXG4gICAgc3RhdGljIGdldEV2ZW50KCl7XG4gICAgICAgIGxldCBzYWlzaWUgID0gJCgnI3NhaXNpZScpO1xuICAgICAgICBzYWlzaWUuZm9jdXMoKTtcbiAgICAgICAgbGV0IHZhbHVlO1xuICAgICAgICBsZXQgJGluZm8gPSAkKCcuaW5mbycpO1xuICAgICAgICBsZXQgJGluZm9Eb24gPSAkKCcjaW5mby1kb24nKTtcbiAgICAgICAgbGV0ICRpbmZvRG9ubmV1ciA9ICQoJyNpbmZvLWRvbm5ldXInKTtcbiAgICAgICAgbGV0ICRpbmZvUHNsID0gJCgnI2luZm8tcHNsJyk7XG4gICAgICAgIGxldCAkZG9uID0gJCgnI2RvbicpO1xuICAgICAgICBsZXQgJG5vbSA9ICQoJyNub20nKTtcbiAgICAgICAgbGV0ICRwcmVub20gPSAkKCcjcHJlbm9tJyk7XG4gICAgICAgIGxldCAkbmFpc3NhbmNlID0gJCgnI25haXNzYW5jZScpO1xuICAgICAgICBsZXQgJHR5cGVEb24gPSAkKCcjdHlwZURvbicpO1xuICAgICAgICBsZXQgJHR5cGVQb2NoZSA9ICQoJyN0eXBlUG9jaGUnKTtcbiAgICAgICAgbGV0ICRuYnJlVHViZSA9ICQoJyNuYnJlVHViZScpO1xuICAgICAgICBsZXQgJHN0ZXAgPSAkKCcjc3RlcCcpO1xuICAgICAgICBsZXQgJGluZGljYXRpb24gPSAkKCcjaW5kaWNhdGlvbicpO1xuICAgICAgICBsZXQgJGV2b2x1dGlvbiA9ICQoJyNldm9sdXRpb24nKTtcbiAgICAgICAgbGV0ICRsYWJlbCA9ICQoJyNsYWJlbCcpO1xuICAgICAgICBsZXQgJHR5cGUgPSAkKCcjdHlwZScpO1xuICAgICAgICBsZXQgJGN1cnJlbnQgPSAkKCcjY3VycmVudCcpO1xuICAgICAgICBsZXQgJHRvZG8gPSAkKCcjdG9kbycpO1xuICAgICAgICBsZXQgJHBpY3R1cmVQb2NoZSA9ICQoJyNwaWN0dXJlUG9jaGUnKTtcbiAgICAgICAgbGV0ICRwaWN0dXJlVHViZSA9ICQoJyNwaWN0dXJlVHViZScpO1xuICAgICAgICBsZXQgJGlucHV0ID0gJCgnI2lucHV0UmFuZ2UnKTtcbiAgICAgICAgbGV0ICRkaXNwbGF5RXJyb3IgPSAkKCcuZXJyb3InKTtcbiAgICAgICAgbGV0ICRkaXNwbGF5U3VjY2VzcyA9ICQoJy5kaXNwbGF5U3VjY2VzcycpO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBzYWlzaWUuZm9jdXMoKTtcbiAgICAgICAgICAgIGlmKGV2ZW50LmNvZGUgPT0gJ1RhYicpe1xuICAgICAgICAgICAgICAgIHZhbHVlID0gc2Fpc2llLnZhbCgpO1xuICAgICAgICAgICAgICAgIHNhaXNpZS52YWwoJycpXG4gICAgICAgICAgICAgICAgJC5hamF4KHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnL2FwaS9nZXQtY29kZS1iYXJyZS10eXBlJyxcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvblwiLFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7J2NvZGVCYXJyZSc6IHZhbHVlfSxcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzcG9uc2Upe1xuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHJlc3BvbnNlLmRhdGEuc3RlcCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnMCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmRhdGEuc3RhdHVzID09ICdzdWNjZXNzJyl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZG9uLmh0bWwocmVzcG9uc2UuZGF0YS5jb2RlQmFycmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5vbS5odG1sKHJlc3BvbnNlLmRhdGEubm9tKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwcmVub20uaHRtbChyZXNwb25zZS5kYXRhLnByZW5vbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmFpc3NhbmNlLmh0bWwobmV3IERhdGUocmVzcG9uc2UuZGF0YS5iaXJ0aGRhdGUpLnRvTG9jYWxlRGF0ZVN0cmluZygpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlRG9uLmh0bWwocmVzcG9uc2UuZGF0YS50eXBlX2Rvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmJyZVR1YmUuaHRtbChyZXNwb25zZS5kYXRhLm5icmVfdHViZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RlcC5odG1sKCdQb3VyIHBhc3NlciDDoCBsYSBzdWl0ZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluZGljYXRpb24uaHRtbCgnU2Nhbm5leiBsZSBETVUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwaWN0dXJlVHViZS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBpY3R1cmVQb2NoZS5jc3MoJ2Rpc3BsYXknLCAnZmxleCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluZm8uY3NzKCd2aXNpYmlsaXR5JywgJ3Zpc2libGUnKVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWlzaWUuZm9jdXMoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmRhdGEuc3RhdHVzID09ICdpbml0Jyl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcG9jaGVzSW1nID0gJCgnLnNhbmcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsuLi5wb2NoZXNJbWddLmZvckVhY2goc2FuZz0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbmcucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRvbi5odG1sKHJlc3BvbnNlLmRhdGEuY29kZUJhcnJlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRub20uaHRtbChyZXNwb25zZS5kYXRhLm5vbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcHJlbm9tLmh0bWwocmVzcG9uc2UuZGF0YS5wcmVub20pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5haXNzYW5jZS5odG1sKG5ldyBEYXRlKHJlc3BvbnNlLmRhdGEuYmlydGhkYXRlKS50b0xvY2FsZURhdGVTdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZURvbi5odG1sKHJlc3BvbnNlLmRhdGEudHlwZV9kb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5icmVUdWJlLmh0bWwocmVzcG9uc2UuZGF0YS5uYnJlX3R1YmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0ZXAuaHRtbCgnUG91ciBwYXNzZXIgw6AgbGEgc3VpdGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbmRpY2F0aW9uLmh0bWwoJ1NjYW5uZXogbGUgRE1VJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZVBvY2hlLmh0bWwoJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluZm8uY3NzKCd2aXNpYmlsaXR5JywgJ3Zpc2libGUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2b2x1dGlvbi5jc3MoJ3Zpc2liaWxpdHknLCAnaGlkZGVuJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhaXNpZS5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmRhdGEuc3RhdHVzID09ICdlcnJvcicpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Fpc2llLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheUVycm9yLmNzcygnZGlzcGxheScsIFwiZmxleFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuY3NzKCdkaXNwbGF5JywgJ25vbmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcxJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuZGF0YS5zdGF0dXMgPT0gJ3N1Y2Nlc3MnKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlUG9jaGUuaHRtbChyZXNwb25zZS5kYXRhLm5icmVfcG9jaGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RlcC5odG1sKCdFVEFQRSAxIC8gMicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluZGljYXRpb24uaHRtbCgnU2Nhbm5leiBsZXMgw6l0aXF1ZXR0ZXMgZGVzIHBvY2hlcycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Fpc2llLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZvbHV0aW9uLmNzcygndmlzaWJpbGl0eScsICd2aXNpYmxlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuZGF0YS5zdGF0dXMgPT0gJ2Vycm9yX2Rvbm5ldXInKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuaHRtbCgnZXJyZXVyIGRvbm5ldXInKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRpc3BsYXlFcnJvci5jc3MoJ2Rpc3BsYXknLCBcImZsZXhcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheUVycm9yLmNzcygnZGlzcGxheScsICdub25lJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Fpc2llLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuZGF0YS5zdGF0dXMgPT0gJ2Vycm9yX2RvdWJsb24nKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuaHRtbCgnZXJyZXVyIGRvdWJsb24nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRpc3BsYXlFcnJvci5jc3MoJ2Rpc3BsYXknLCBcImZsZXhcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheUVycm9yLmNzcygnZGlzcGxheScsICdub25lJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Fpc2llLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuZGF0YS5zdGF0dXMgPT0gJ3N1Y2Nlc3MnKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzdGVwIDIgc3VjY2VzcyAhIScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZVBvY2hlLmh0bWwocmVzcG9uc2UuZGF0YS5uYnJlX3BvY2hlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnQuaHRtbChyZXNwb25zZS5kYXRhLm5icmVfcG9jaGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZS5odG1sKCdQb2NoZXMnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0b2RvLmh0bWwocmVzcG9uc2UuZGF0YS5uYnJlX3BvY2hlX21heClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbnB1dC5hdHRyKCdtYXgnLCByZXNwb25zZS5kYXRhLm5icmVfcG9jaGVfbWF4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlucHV0LmF0dHIoJ3ZhbHVlJywgcmVzcG9uc2UuZGF0YS5uYnJlX3BvY2hlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuZGF0YS5uYnJlX3BvY2hlICE9cmVzcG9uc2UuZGF0YS5uYnJlX3BvY2hlX21heCAmJiByZXNwb25zZS5kYXRhLm5icmVfcG9jaGUgIT0gMCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBpY3R1cmVQb2NoZS5hcHBlbmQoJzxkaXYgY2xhc3M9XCJzYW5nXCI+PGltZyBzcmM9XCIvcG9jaGVzL1BvY2hlX3NhbmcyLnBuZ1wiPjwvZGl2PicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWlzaWUuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5kYXRhLnN0YXR1cyA9PSAnZmluYWwnKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlUG9jaGUuaHRtbChyZXNwb25zZS5kYXRhLm5icmVfcG9jaGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY3VycmVudC5odG1sKHJlc3BvbnNlLmRhdGEubmJyZV9wb2NoZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbnB1dC5hdHRyKCdtYXgnLCByZXNwb25zZS5kYXRhLm5icmVfcG9jaGVfbWF4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlucHV0LmF0dHIoJ3ZhbHVlJywgcmVzcG9uc2UuZGF0YS5uYnJlX3BvY2hlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluZGljYXRpb24uaHRtbCgndmFsaWRleiBhdmVjIHVuIHNjYW4gZGUgcG9jaGUhJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwaWN0dXJlUG9jaGUuYXBwZW5kKCc8ZGl2IGNsYXNzPVwic2FuZ1wiPjxpbWcgc3JjPVwiL3BvY2hlcy9Qb2NoZV9zYW5nMi5wbmdcIj48L2Rpdj4nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Fpc2llLmZvY3VzKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5kYXRhLnN0YXR1cyA9PSAnZXJyb3Jfc2Nhbicpe1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheUVycm9yLmh0bWwoXCJNYXV2YWlzIHR5cGUgZCfDqXRpcXVldHRlXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheUVycm9yLmNzcygnZGlzcGxheScsIFwiZmxleFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuY3NzKCdkaXNwbGF5JywgJ25vbmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWlzaWUuZm9jdXMoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmRhdGEuc3RhdHVzID09ICdlcnJvcl9kb3VibG9uJyl7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuaHRtbCgnRXRpcXVldHRlIGTDqWrDoCBzY2FubsOpZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheUVycm9yLmNzcygnZGlzcGxheScsIFwiZmxleFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuY3NzKCdkaXNwbGF5JywgJ25vbmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWlzaWUuZm9jdXMoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmRhdGEuc3RhdHVzID09ICdlcnJvcl9kb25uZXVyJyl7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuaHRtbCgnTmUgY29ycmVzcG9uZCBwYXMgYXUgZG9ubmV1cicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheUVycm9yLmNzcygnZGlzcGxheScsIFwiZmxleFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuY3NzKCdkaXNwbGF5JywgJ25vbmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWlzaWUuZm9jdXMoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJzMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5kYXRhLnN0YXR1cyA9PSBcInN1Y2Nlc3NcIil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGljdHVyZVBvY2hlLmNzcygnZGlzcGxheScsICdub25lJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcG9jaGVzSW1nID0gJCgnLnNhbmcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsuLi5wb2NoZXNJbWddLmZvckVhY2goc2FuZz0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbmcucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBpY3R1cmVUdWJlLmNzcygnZGlzcGxheScsICdmbGV4Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5kaWNhdGlvbi5odG1sKCdTY2FubmV6IGxlcyDDqXRpcXVldHRlcyBkZSB0dWJlcyEnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbnB1dC5hdHRyKCdtYXgnLCByZXNwb25zZS5kYXRhLm5icmVfdHViZV9tYXgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdG9kby5odG1sKHJlc3BvbnNlLmRhdGEubmJyZV90dWJlX21heClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbnB1dC5hdHRyKCd2YWx1ZScsIDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY3VycmVudC5odG1sKDApXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlLmh0bWwoJ1R1YmVzJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5kYXRhLnN0YXR1cyA9PSBcImVycm9yX3NjYW5cIil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuaHRtbChcIk1hdXZhaXMgdHlwZSBkJ8OpdGlxdWV0dGVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuY3NzKCdkaXNwbGF5JywgXCJmbGV4XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRpc3BsYXlFcnJvci5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICc0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UuZGF0YS5zdGF0dXMgPT0gJ3N1Y2Nlc3MnKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGVwLmh0bWwoJ0VUQVBFIDIgLyAyJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmJyZVR1YmUuaHRtbChyZXNwb25zZS5kYXRhLm5icmVfdHViZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjdXJyZW50Lmh0bWwocmVzcG9uc2UuZGF0YS5uYnJlX3R1YmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5wdXQuYXR0cignbWF4JywgcmVzcG9uc2UuZGF0YS5uYnJlX3R1YmVfbWF4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUuaHRtbCgnVHViZXMnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRvZG8uaHRtbChyZXNwb25zZS5kYXRhLm5icmVfdHViZV9tYXgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5wdXQuYXR0cigndmFsdWUnLCByZXNwb25zZS5kYXRhLm5icmVfdHViZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCByZXNwb25zZS5kYXRhLm5icmVfdHViZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwaWN0dXJlVHViZS5hcHBlbmQoJzxkaXYgY2xhc3M9XCJzYW5nXCI+PGltZyBzcmM9XCIvdHViZXMvVHViZScrcmVzcG9uc2UuZGF0YS5uYnJlX3R1YmUrJ19jaGVjay5wbmdcIj48L2Rpdj4nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Fpc2llLmZvY3VzKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5kYXRhLnN0YXR1cyA9PSAnZmluYWwnKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYnJlVHViZS5odG1sKHJlc3BvbnNlLmRhdGEubmJyZV90dWJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnQuaHRtbChyZXNwb25zZS5kYXRhLm5icmVfdHViZV9tYXgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5wdXQuYXR0cignbWF4JywgcmVzcG9uc2UuZGF0YS5uYnJlX3R1YmVfbWF4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUuaHRtbCgnVHViZXMnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRvZG8uaHRtbChyZXNwb25zZS5kYXRhLm5icmVfdHViZV9tYXgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5wdXQuYXR0cigndmFsdWUnLCByZXNwb25zZS5kYXRhLm5icmVfdHViZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwaWN0dXJlVHViZS5hcHBlbmQoJzxkaXYgY2xhc3M9XCJzYW5nXCI+PGltZyBzcmM9XCIvdHViZXMvVHViZScrcmVzcG9uc2UuZGF0YS5uYnJlX3R1YmUrJ19jaGVjay5wbmdcIj48L2Rpdj4nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRpc3BsYXlTdWNjZXNzLmh0bWwoJ1BhdGllbnQgJysgcmVzcG9uc2UuZGF0YS5wcmVub20rJyAnK3Jlc3BvbnNlLmRhdGEubm9tICsgJyB0cmFpdMOpIGF2ZWMgc3VjY8OocycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheVN1Y2Nlc3MuY3NzKCdkaXNwbGF5JywgJ2ZsZXgnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRpc3BsYXlTdWNjZXNzLmNzcygnZGlzcGxheScsICdub25lJylcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWlzaWUuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyZXNwb25zZS5kYXRhLnN0YXR1cyA9PSAnZXJyb3Jfc2Nhbicpe1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheUVycm9yLmh0bWwoXCJNYXV2YWlzIHR5cGUgZCfDqXRpcXVldHRlXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheUVycm9yLmNzcygnZGlzcGxheScsIFwiZmxleFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuY3NzKCdkaXNwbGF5JywgJ25vbmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWlzaWUuZm9jdXMoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmRhdGEuc3RhdHVzID09ICdlcnJvcl9kb3VibG9uJyl7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuaHRtbCgnRXRpcXVldHRlIGTDqWrDoCBzY2FubsOpZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheUVycm9yLmNzcygnZGlzcGxheScsIFwiZmxleFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuY3NzKCdkaXNwbGF5JywgJ25vbmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWlzaWUuZm9jdXMoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLmRhdGEuc3RhdHVzID09ICdlcnJvcl9kb25uZXVyJyl7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuaHRtbCgnTmUgY29ycmVzcG9uZCBwYXMgYXUgZG9ubmV1cicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheUVycm9yLmNzcygnZGlzcGxheScsIFwiZmxleFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5RXJyb3IuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Fpc2llLmZvY3VzKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG59Il0sIm5hbWVzIjpbIkdldEV2ZW50IiwiJCIsImRvY3VtZW50IiwicmVhZHkiLCJzZXRUaW1lb3V0IiwiaW5pdCIsImdldEV2ZW50Iiwic2Fpc2llIiwiZm9jdXMiLCJ2YWx1ZSIsIiRpbmZvIiwiJGluZm9Eb24iLCIkaW5mb0Rvbm5ldXIiLCIkaW5mb1BzbCIsIiRkb24iLCIkbm9tIiwiJHByZW5vbSIsIiRuYWlzc2FuY2UiLCIkdHlwZURvbiIsIiR0eXBlUG9jaGUiLCIkbmJyZVR1YmUiLCIkc3RlcCIsIiRpbmRpY2F0aW9uIiwiJGV2b2x1dGlvbiIsIiRsYWJlbCIsIiR0eXBlIiwiJGN1cnJlbnQiLCIkdG9kbyIsIiRwaWN0dXJlUG9jaGUiLCIkcGljdHVyZVR1YmUiLCIkaW5wdXQiLCIkZGlzcGxheUVycm9yIiwiJGRpc3BsYXlTdWNjZXNzIiwiYWRkRXZlbnRMaXN0ZW5lciIsImV2ZW50IiwiY29kZSIsInZhbCIsImFqYXgiLCJ1cmwiLCJtZXRob2QiLCJkYXRhVHlwZSIsImRhdGEiLCJzdWNjZXNzIiwicmVzcG9uc2UiLCJzdGVwIiwic3RhdHVzIiwiaHRtbCIsImNvZGVCYXJyZSIsIm5vbSIsInByZW5vbSIsIkRhdGUiLCJiaXJ0aGRhdGUiLCJ0b0xvY2FsZURhdGVTdHJpbmciLCJ0eXBlX2RvbiIsIm5icmVfdHViZSIsImNzcyIsInBvY2hlc0ltZyIsImZvckVhY2giLCJzYW5nIiwicmVtb3ZlIiwibmJyZV9wb2NoZSIsImNvbnNvbGUiLCJsb2ciLCJuYnJlX3BvY2hlX21heCIsImF0dHIiLCJhcHBlbmQiLCJuYnJlX3R1YmVfbWF4IiwibG9jYXRpb24iLCJyZWxvYWQiXSwic291cmNlUm9vdCI6IiJ9