Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

289 lines
28KB

  1. (self["webpackChunk"] = self["webpackChunk"] || []).push([["adminlte-main"],{
  2. /***/ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/main/app.main.js":
  3. /*!********************************************************************************!*\
  4. !*** ../LaClicBundle/SovBundle/Resources/assets/app/adminlte/main/app.main.js ***!
  5. \********************************************************************************/
  6. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  7. "use strict";
  8. __webpack_require__.r(__webpack_exports__);
  9. /* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./init.js */ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/main/init.js");
  10. /* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_init_js__WEBPACK_IMPORTED_MODULE_0__);
  11. /* harmony import */ var _common_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./common.scss */ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/main/common.scss");
  12. /***/ }),
  13. /***/ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/main/init.js":
  14. /*!****************************************************************************!*\
  15. !*** ../LaClicBundle/SovBundle/Resources/assets/app/adminlte/main/init.js ***!
  16. \****************************************************************************/
  17. /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
  18. __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js");
  19. __webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js");
  20. window.addEventListener('load', function (event) {
  21. SovNotification.init();
  22. SovWidgets.setDateRange();
  23. $('.btn-confirm-js, .action-confirm').click(function () {
  24. return confirm('Êtes-vous sûr de vouloir réaliser cette action ?');
  25. });
  26. /* Tooltip */
  27. $('[data-toggle="tooltip"]').tooltip();
  28. /* Select2 */
  29. if ($('.form-select, .select2, select.form-control').length) {
  30. $('form .form-widget>select.form-control, .select2, .form-select').each(function (i, elm) {
  31. if (!$(this).hasClass('disable-select2')) {
  32. SovWidgets.setSelect2($(elm));
  33. }
  34. });
  35. $('form select.form-control').each(function (i, elm) {
  36. if (!$(this).hasClass('disable-select2')) {
  37. SovWidgets.setSelect2($(elm));
  38. }
  39. });
  40. }
  41. $('.action-delete').on('click', function (e) {
  42. e.preventDefault();
  43. var formAction = $(this).attr('formaction');
  44. $('#modal-delete').modal({
  45. backdrop: true,
  46. keyboard: true
  47. }).off('click', '#modal-delete-button').on('click', '#modal-delete-button', function () {
  48. var deleteForm = $('#delete-form');
  49. deleteForm.attr('action', formAction);
  50. deleteForm.submit();
  51. });
  52. });
  53. var elements = $('.lc-ckeditor');
  54. if (elements.length) {
  55. for (var i = 0; i < elements.length; ++i) {
  56. if ($(elements[i]).data('config') === 'simple_config') {
  57. CKEDITOR.replace(elements[i], {
  58. "toolbar": [{
  59. items: ['Bold', 'Italic', 'Underline', 'Strike']
  60. }, {
  61. items: ["TextColor"]
  62. }],
  63. "language": "fr",
  64. 'height': 100
  65. });
  66. } else {
  67. CKEDITOR.replace(elements[i], {
  68. "toolbar": [{
  69. name: "styles",
  70. items: ["Format", 'Bold', 'Italic', 'Underline', 'Strike', "Link", "BulletedList"]
  71. }, {
  72. items: ["TextColor"]
  73. }, {
  74. name: 'paragraph',
  75. items: ['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock']
  76. }, {
  77. name: 'insert',
  78. items: ['Image', 'SpecialChar']
  79. }, {
  80. name: "document",
  81. items: ["Source"]
  82. }],
  83. "language": "fr"
  84. });
  85. }
  86. }
  87. }
  88. SovWidgets.setAutoCompleteField();
  89. });
  90. /***/ }),
  91. /***/ "./node_modules/core-js/internals/get-substitution.js":
  92. /*!************************************************************!*\
  93. !*** ./node_modules/core-js/internals/get-substitution.js ***!
  94. \************************************************************/
  95. /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
  96. var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js");
  97. var floor = Math.floor;
  98. var replace = ''.replace;
  99. var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g;
  100. var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g;
  101. // `GetSubstitution` abstract operation
  102. // https://tc39.es/ecma262/#sec-getsubstitution
  103. module.exports = function (matched, str, position, captures, namedCaptures, replacement) {
  104. var tailPos = position + matched.length;
  105. var m = captures.length;
  106. var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
  107. if (namedCaptures !== undefined) {
  108. namedCaptures = toObject(namedCaptures);
  109. symbols = SUBSTITUTION_SYMBOLS;
  110. }
  111. return replace.call(replacement, symbols, function (match, ch) {
  112. var capture;
  113. switch (ch.charAt(0)) {
  114. case '$': return '$';
  115. case '&': return matched;
  116. case '`': return str.slice(0, position);
  117. case "'": return str.slice(tailPos);
  118. case '<':
  119. capture = namedCaptures[ch.slice(1, -1)];
  120. break;
  121. default: // \d\d?
  122. var n = +ch;
  123. if (n === 0) return match;
  124. if (n > m) {
  125. var f = floor(n / 10);
  126. if (f === 0) return match;
  127. if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);
  128. return match;
  129. }
  130. capture = captures[n - 1];
  131. }
  132. return capture === undefined ? '' : capture;
  133. });
  134. };
  135. /***/ }),
  136. /***/ "./node_modules/core-js/modules/es.string.replace.js":
  137. /*!***********************************************************!*\
  138. !*** ./node_modules/core-js/modules/es.string.replace.js ***!
  139. \***********************************************************/
  140. /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
  141. "use strict";
  142. var fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ "./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js");
  143. var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
  144. var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");
  145. var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js");
  146. var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
  147. var advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ "./node_modules/core-js/internals/advance-string-index.js");
  148. var getSubstitution = __webpack_require__(/*! ../internals/get-substitution */ "./node_modules/core-js/internals/get-substitution.js");
  149. var regExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ "./node_modules/core-js/internals/regexp-exec-abstract.js");
  150. var max = Math.max;
  151. var min = Math.min;
  152. var maybeToString = function (it) {
  153. return it === undefined ? it : String(it);
  154. };
  155. // @@replace logic
  156. fixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {
  157. var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;
  158. var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;
  159. var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';
  160. return [
  161. // `String.prototype.replace` method
  162. // https://tc39.es/ecma262/#sec-string.prototype.replace
  163. function replace(searchValue, replaceValue) {
  164. var O = requireObjectCoercible(this);
  165. var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];
  166. return replacer !== undefined
  167. ? replacer.call(searchValue, O, replaceValue)
  168. : nativeReplace.call(String(O), searchValue, replaceValue);
  169. },
  170. // `RegExp.prototype[@@replace]` method
  171. // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace
  172. function (regexp, replaceValue) {
  173. if (
  174. (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||
  175. (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)
  176. ) {
  177. var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);
  178. if (res.done) return res.value;
  179. }
  180. var rx = anObject(regexp);
  181. var S = String(this);
  182. var functionalReplace = typeof replaceValue === 'function';
  183. if (!functionalReplace) replaceValue = String(replaceValue);
  184. var global = rx.global;
  185. if (global) {
  186. var fullUnicode = rx.unicode;
  187. rx.lastIndex = 0;
  188. }
  189. var results = [];
  190. while (true) {
  191. var result = regExpExec(rx, S);
  192. if (result === null) break;
  193. results.push(result);
  194. if (!global) break;
  195. var matchStr = String(result[0]);
  196. if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
  197. }
  198. var accumulatedResult = '';
  199. var nextSourcePosition = 0;
  200. for (var i = 0; i < results.length; i++) {
  201. result = results[i];
  202. var matched = String(result[0]);
  203. var position = max(min(toInteger(result.index), S.length), 0);
  204. var captures = [];
  205. // NOTE: This is equivalent to
  206. // captures = result.slice(1).map(maybeToString)
  207. // but for some reason `nativeSlice.call(result, 1, result.length)` (called in
  208. // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
  209. // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
  210. for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));
  211. var namedCaptures = result.groups;
  212. if (functionalReplace) {
  213. var replacerArgs = [matched].concat(captures, position, S);
  214. if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);
  215. var replacement = String(replaceValue.apply(undefined, replacerArgs));
  216. } else {
  217. replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
  218. }
  219. if (position >= nextSourcePosition) {
  220. accumulatedResult += S.slice(nextSourcePosition, position) + replacement;
  221. nextSourcePosition = position + matched.length;
  222. }
  223. }
  224. return accumulatedResult + S.slice(nextSourcePosition);
  225. }
  226. ];
  227. });
  228. /***/ }),
  229. /***/ "../LaClicBundle/SovBundle/Resources/assets/app/adminlte/main/common.scss":
  230. /*!********************************************************************************!*\
  231. !*** ../LaClicBundle/SovBundle/Resources/assets/app/adminlte/main/common.scss ***!
  232. \********************************************************************************/
  233. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  234. "use strict";
  235. __webpack_require__.r(__webpack_exports__);
  236. // extracted by mini-css-extract-plugin
  237. /***/ })
  238. },
  239. /******/ __webpack_require__ => { // webpackRuntimeModules
  240. /******/ "use strict";
  241. /******/
  242. /******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
  243. /******/ __webpack_require__.O(0, ["vendors-node_modules_core-js_internals_export_js","vendors-node_modules_core-js_internals_advance-string-index_js-node_modules_core-js_internals-bed4a0"], () => (__webpack_exec__("../LaClicBundle/SovBundle/Resources/assets/app/adminlte/main/app.main.js")));
  244. /******/ var __webpack_exports__ = __webpack_require__.O();
  245. /******/ }
  246. ]);
  247. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vTGFDbGljQnVuZGxlL1NvdkJ1bmRsZS9SZXNvdXJjZXMvYXNzZXRzL2FwcC9hZG1pbmx0ZS9tYWluL2FwcC5tYWluLmpzIiwid2VicGFjazovLy8uLi9MYUNsaWNCdW5kbGUvU292QnVuZGxlL1Jlc291cmNlcy9hc3NldHMvYXBwL2FkbWlubHRlL21haW4vaW5pdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LXN1YnN0aXR1dGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5yZXBsYWNlLmpzIiwid2VicGFjazovLy8uLi9MYUNsaWNCdW5kbGUvU292QnVuZGxlL1Jlc291cmNlcy9hc3NldHMvYXBwL2FkbWlubHRlL21haW4vY29tbW9uLnNjc3MiXSwibmFtZXMiOlsid2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsImV2ZW50IiwiU292Tm90aWZpY2F0aW9uIiwiaW5pdCIsIlNvdldpZGdldHMiLCJzZXREYXRlUmFuZ2UiLCIkIiwiY2xpY2siLCJjb25maXJtIiwidG9vbHRpcCIsImxlbmd0aCIsImVhY2giLCJpIiwiZWxtIiwiaGFzQ2xhc3MiLCJzZXRTZWxlY3QyIiwib24iLCJlIiwicHJldmVudERlZmF1bHQiLCJmb3JtQWN0aW9uIiwiYXR0ciIsIm1vZGFsIiwiYmFja2Ryb3AiLCJrZXlib2FyZCIsIm9mZiIsImRlbGV0ZUZvcm0iLCJzdWJtaXQiLCJlbGVtZW50cyIsImRhdGEiLCJDS0VESVRPUiIsInJlcGxhY2UiLCJpdGVtcyIsIm5hbWUiLCJzZXRBdXRvQ29tcGxldGVGaWVsZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7QUNEQUEsTUFBTSxDQUFDQyxnQkFBUCxDQUF3QixNQUF4QixFQUFnQyxVQUFDQyxLQUFELEVBQVc7QUFHdkNDLGlCQUFlLENBQUNDLElBQWhCO0FBRUFDLFlBQVUsQ0FBQ0MsWUFBWDtBQUVBQyxHQUFDLENBQUMsa0NBQUQsQ0FBRCxDQUFzQ0MsS0FBdEMsQ0FBNEMsWUFBWTtBQUNwRCxXQUFPQyxPQUFPLENBQUMsa0RBQUQsQ0FBZDtBQUNILEdBRkQ7QUFJQTs7QUFDQUYsR0FBQyxDQUFDLHlCQUFELENBQUQsQ0FBNkJHLE9BQTdCO0FBRUE7O0FBQ0EsTUFBSUgsQ0FBQyxDQUFDLDZDQUFELENBQUQsQ0FBaURJLE1BQXJELEVBQTZEO0FBR3pESixLQUFDLENBQUMsK0RBQUQsQ0FBRCxDQUFtRUssSUFBbkUsQ0FBd0UsVUFBVUMsQ0FBVixFQUFhQyxHQUFiLEVBQWtCO0FBQ3RGLFVBQUksQ0FBQ1AsQ0FBQyxDQUFDLElBQUQsQ0FBRCxDQUFRUSxRQUFSLENBQWlCLGlCQUFqQixDQUFMLEVBQTBDO0FBQ3RDVixrQkFBVSxDQUFDVyxVQUFYLENBQXNCVCxDQUFDLENBQUNPLEdBQUQsQ0FBdkI7QUFDSDtBQUNKLEtBSkQ7QUFNQVAsS0FBQyxDQUFDLDBCQUFELENBQUQsQ0FBOEJLLElBQTlCLENBQW1DLFVBQVVDLENBQVYsRUFBYUMsR0FBYixFQUFrQjtBQUNqRCxVQUFJLENBQUNQLENBQUMsQ0FBQyxJQUFELENBQUQsQ0FBUVEsUUFBUixDQUFpQixpQkFBakIsQ0FBTCxFQUEwQztBQUN0Q1Ysa0JBQVUsQ0FBQ1csVUFBWCxDQUFzQlQsQ0FBQyxDQUFDTyxHQUFELENBQXZCO0FBQ0g7QUFDSixLQUpEO0FBS0g7O0FBRURQLEdBQUMsQ0FBQyxnQkFBRCxDQUFELENBQW9CVSxFQUFwQixDQUF1QixPQUF2QixFQUFnQyxVQUFVQyxDQUFWLEVBQWE7QUFDekNBLEtBQUMsQ0FBQ0MsY0FBRjtBQUNBLFFBQU1DLFVBQVUsR0FBR2IsQ0FBQyxDQUFDLElBQUQsQ0FBRCxDQUFRYyxJQUFSLENBQWEsWUFBYixDQUFuQjtBQUVBZCxLQUFDLENBQUMsZUFBRCxDQUFELENBQW1CZSxLQUFuQixDQUF5QjtBQUFDQyxjQUFRLEVBQUUsSUFBWDtBQUFpQkMsY0FBUSxFQUFFO0FBQTNCLEtBQXpCLEVBQ0tDLEdBREwsQ0FDUyxPQURULEVBQ2tCLHNCQURsQixFQUVLUixFQUZMLENBRVEsT0FGUixFQUVpQixzQkFGakIsRUFFeUMsWUFBWTtBQUM3QyxVQUFJUyxVQUFVLEdBQUduQixDQUFDLENBQUMsY0FBRCxDQUFsQjtBQUNBbUIsZ0JBQVUsQ0FBQ0wsSUFBWCxDQUFnQixRQUFoQixFQUEwQkQsVUFBMUI7QUFDQU0sZ0JBQVUsQ0FBQ0MsTUFBWDtBQUNILEtBTkw7QUFPSCxHQVhEO0FBY0EsTUFBSUMsUUFBUSxHQUFHckIsQ0FBQyxDQUFDLGNBQUQsQ0FBaEI7O0FBRUEsTUFBSXFCLFFBQVEsQ0FBQ2pCLE1BQWIsRUFBcUI7QUFDakIsU0FBSyxJQUFJRSxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHZSxRQUFRLENBQUNqQixNQUE3QixFQUFxQyxFQUFFRSxDQUF2QyxFQUEwQztBQUN0QyxVQUFJTixDQUFDLENBQUNxQixRQUFRLENBQUNmLENBQUQsQ0FBVCxDQUFELENBQWVnQixJQUFmLENBQW9CLFFBQXBCLE1BQWtDLGVBQXRDLEVBQXVEO0FBQ25EQyxnQkFBUSxDQUFDQyxPQUFULENBQWlCSCxRQUFRLENBQUNmLENBQUQsQ0FBekIsRUFBOEI7QUFDMUIscUJBQVcsQ0FDUDtBQUNJbUIsaUJBQUssRUFBRSxDQUFDLE1BQUQsRUFBUyxRQUFULEVBQW1CLFdBQW5CLEVBQWdDLFFBQWhDO0FBRFgsV0FETyxFQUlQO0FBQ0lBLGlCQUFLLEVBQUUsQ0FBQyxXQUFEO0FBRFgsV0FKTyxDQURlO0FBUzFCLHNCQUFZLElBVGM7QUFVMUIsb0JBQVU7QUFWZ0IsU0FBOUI7QUFZSCxPQWJELE1BYU87QUFDSEYsZ0JBQVEsQ0FBQ0MsT0FBVCxDQUFpQkgsUUFBUSxDQUFDZixDQUFELENBQXpCLEVBQThCO0FBQzFCLHFCQUFXLENBQ1A7QUFDSW9CLGdCQUFJLEVBQUUsUUFEVjtBQUVJRCxpQkFBSyxFQUFFLENBQUMsUUFBRCxFQUFXLE1BQVgsRUFBbUIsUUFBbkIsRUFBNkIsV0FBN0IsRUFBMEMsUUFBMUMsRUFBb0QsTUFBcEQsRUFBNEQsY0FBNUQ7QUFGWCxXQURPLEVBS1A7QUFDSUEsaUJBQUssRUFBRSxDQUFDLFdBQUQ7QUFEWCxXQUxPLEVBUVA7QUFBQ0MsZ0JBQUksRUFBRSxXQUFQO0FBQW9CRCxpQkFBSyxFQUFFLENBQUMsYUFBRCxFQUFnQixlQUFoQixFQUFpQyxjQUFqQyxFQUFpRCxjQUFqRDtBQUEzQixXQVJPLEVBU1A7QUFBQ0MsZ0JBQUksRUFBRSxRQUFQO0FBQWlCRCxpQkFBSyxFQUFFLENBQUMsT0FBRCxFQUFVLGFBQVY7QUFBeEIsV0FUTyxFQVVQO0FBQUNDLGdCQUFJLEVBQUUsVUFBUDtBQUFtQkQsaUJBQUssRUFBRSxDQUFDLFFBQUQ7QUFBMUIsV0FWTyxDQURlO0FBYTFCLHNCQUFZO0FBYmMsU0FBOUI7QUFlSDtBQUVKO0FBQ0o7O0FBRUQzQixZQUFVLENBQUM2QixvQkFBWDtBQUdILENBdEZELEU7Ozs7Ozs7Ozs7QUNBQSxlQUFlLG1CQUFPLENBQUMsNkVBQXdCOztBQUUvQztBQUNBO0FBQ0EseUNBQXlDLElBQUk7QUFDN0Msa0RBQWtELElBQUk7O0FBRXREO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7Ozs7Ozs7Ozs7OztBQ3hDYTtBQUNiLG9DQUFvQyxtQkFBTyxDQUFDLCtIQUFpRDtBQUM3RixlQUFlLG1CQUFPLENBQUMsNkVBQXdCO0FBQy9DLGVBQWUsbUJBQU8sQ0FBQyw2RUFBd0I7QUFDL0MsZ0JBQWdCLG1CQUFPLENBQUMsK0VBQXlCO0FBQ2pELDZCQUE2QixtQkFBTyxDQUFDLDJHQUF1QztBQUM1RSx5QkFBeUIsbUJBQU8sQ0FBQyxtR0FBbUM7QUFDcEUsc0JBQXNCLG1CQUFPLENBQUMsMkZBQStCO0FBQzdELGlCQUFpQixtQkFBTyxDQUFDLG1HQUFtQzs7QUFFNUQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCLG9CQUFvQjtBQUN6Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLG1CQUFtQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7OztBQ2pHRCIsImZpbGUiOiJhZG1pbmx0ZS1tYWluLjU0ZTcwZDljLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgJy4vaW5pdC5qcyc7XG5pbXBvcnQgJy4vY29tbW9uLnNjc3MnOyIsIndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKGV2ZW50KSA9PiB7XG5cblxuICAgIFNvdk5vdGlmaWNhdGlvbi5pbml0KCk7XG5cbiAgICBTb3ZXaWRnZXRzLnNldERhdGVSYW5nZSgpO1xuXG4gICAgJCgnLmJ0bi1jb25maXJtLWpzLCAuYWN0aW9uLWNvbmZpcm0nKS5jbGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjb25maXJtKCfDinRlcy12b3VzIHPDu3IgZGUgdm91bG9pciByw6lhbGlzZXIgY2V0dGUgYWN0aW9uID8nKTtcbiAgICB9KTtcblxuICAgIC8qIFRvb2x0aXAgKi9cbiAgICAkKCdbZGF0YS10b2dnbGU9XCJ0b29sdGlwXCJdJykudG9vbHRpcCgpO1xuXG4gICAgLyogU2VsZWN0MiAqL1xuICAgIGlmICgkKCcuZm9ybS1zZWxlY3QsIC5zZWxlY3QyLCBzZWxlY3QuZm9ybS1jb250cm9sJykubGVuZ3RoKSB7XG5cblxuICAgICAgICAkKCdmb3JtIC5mb3JtLXdpZGdldD5zZWxlY3QuZm9ybS1jb250cm9sLCAuc2VsZWN0MiwgLmZvcm0tc2VsZWN0JykuZWFjaChmdW5jdGlvbiAoaSwgZWxtKSB7XG4gICAgICAgICAgICBpZiAoISQodGhpcykuaGFzQ2xhc3MoJ2Rpc2FibGUtc2VsZWN0MicpKSB7XG4gICAgICAgICAgICAgICAgU292V2lkZ2V0cy5zZXRTZWxlY3QyKCQoZWxtKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgICQoJ2Zvcm0gc2VsZWN0LmZvcm0tY29udHJvbCcpLmVhY2goZnVuY3Rpb24gKGksIGVsbSkge1xuICAgICAgICAgICAgaWYgKCEkKHRoaXMpLmhhc0NsYXNzKCdkaXNhYmxlLXNlbGVjdDInKSkge1xuICAgICAgICAgICAgICAgIFNvdldpZGdldHMuc2V0U2VsZWN0MigkKGVsbSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAkKCcuYWN0aW9uLWRlbGV0ZScpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgZm9ybUFjdGlvbiA9ICQodGhpcykuYXR0cignZm9ybWFjdGlvbicpO1xuXG4gICAgICAgICQoJyNtb2RhbC1kZWxldGUnKS5tb2RhbCh7YmFja2Ryb3A6IHRydWUsIGtleWJvYXJkOiB0cnVlfSlcbiAgICAgICAgICAgIC5vZmYoJ2NsaWNrJywgJyNtb2RhbC1kZWxldGUtYnV0dG9uJylcbiAgICAgICAgICAgIC5vbignY2xpY2snLCAnI21vZGFsLWRlbGV0ZS1idXR0b24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgbGV0IGRlbGV0ZUZvcm0gPSAkKCcjZGVsZXRlLWZvcm0nKTtcbiAgICAgICAgICAgICAgICBkZWxldGVGb3JtLmF0dHIoJ2FjdGlvbicsIGZvcm1BY3Rpb24pO1xuICAgICAgICAgICAgICAgIGRlbGV0ZUZvcm0uc3VibWl0KCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9KTtcblxuXG4gICAgdmFyIGVsZW1lbnRzID0gJCgnLmxjLWNrZWRpdG9yJyk7XG5cbiAgICBpZiAoZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGlmICgkKGVsZW1lbnRzW2ldKS5kYXRhKCdjb25maWcnKSA9PT0gJ3NpbXBsZV9jb25maWcnKSB7XG4gICAgICAgICAgICAgICAgQ0tFRElUT1IucmVwbGFjZShlbGVtZW50c1tpXSwge1xuICAgICAgICAgICAgICAgICAgICBcInRvb2xiYXJcIjogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBbJ0JvbGQnLCAnSXRhbGljJywgJ1VuZGVybGluZScsICdTdHJpa2UnXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogW1wiVGV4dENvbG9yXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIFwibGFuZ3VhZ2VcIjogXCJmclwiLFxuICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0JzogMTAwXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIENLRURJVE9SLnJlcGxhY2UoZWxlbWVudHNbaV0sIHtcbiAgICAgICAgICAgICAgICAgICAgXCJ0b29sYmFyXCI6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInN0eWxlc1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBbXCJGb3JtYXRcIiwgJ0JvbGQnLCAnSXRhbGljJywgJ1VuZGVybGluZScsICdTdHJpa2UnLCBcIkxpbmtcIiwgXCJCdWxsZXRlZExpc3RcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6IFtcIlRleHRDb2xvclwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtuYW1lOiAncGFyYWdyYXBoJywgaXRlbXM6IFsnSnVzdGlmeUxlZnQnLCAnSnVzdGlmeUNlbnRlcicsICdKdXN0aWZ5UmlnaHQnLCAnSnVzdGlmeUJsb2NrJ119LFxuICAgICAgICAgICAgICAgICAgICAgICAge25hbWU6ICdpbnNlcnQnLCBpdGVtczogWydJbWFnZScsICdTcGVjaWFsQ2hhciddfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtuYW1lOiBcImRvY3VtZW50XCIsIGl0ZW1zOiBbXCJTb3VyY2VcIl19LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBcImxhbmd1YWdlXCI6IFwiZnJcIlxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBTb3ZXaWRnZXRzLnNldEF1dG9Db21wbGV0ZUZpZWxkKCk7XG5cblxufSk7IiwidmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xuXG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xudmFyIHJlcGxhY2UgPSAnJy5yZXBsYWNlO1xudmFyIFNVQlNUSVRVVElPTl9TWU1CT0xTID0gL1xcJChbJCYnYF18XFxkezEsMn18PFtePl0qPikvZztcbnZhciBTVUJTVElUVVRJT05fU1lNQk9MU19OT19OQU1FRCA9IC9cXCQoWyQmJ2BdfFxcZHsxLDJ9KS9nO1xuXG4vLyBgR2V0U3Vic3RpdHV0aW9uYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZ2V0c3Vic3RpdHV0aW9uXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChtYXRjaGVkLCBzdHIsIHBvc2l0aW9uLCBjYXB0dXJlcywgbmFtZWRDYXB0dXJlcywgcmVwbGFjZW1lbnQpIHtcbiAgdmFyIHRhaWxQb3MgPSBwb3NpdGlvbiArIG1hdGNoZWQubGVuZ3RoO1xuICB2YXIgbSA9IGNhcHR1cmVzLmxlbmd0aDtcbiAgdmFyIHN5bWJvbHMgPSBTVUJTVElUVVRJT05fU1lNQk9MU19OT19OQU1FRDtcbiAgaWYgKG5hbWVkQ2FwdHVyZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIG5hbWVkQ2FwdHVyZXMgPSB0b09iamVjdChuYW1lZENhcHR1cmVzKTtcbiAgICBzeW1ib2xzID0gU1VCU1RJVFVUSU9OX1NZTUJPTFM7XG4gIH1cbiAgcmV0dXJuIHJlcGxhY2UuY2FsbChyZXBsYWNlbWVudCwgc3ltYm9scywgZnVuY3Rpb24gKG1hdGNoLCBjaCkge1xuICAgIHZhciBjYXB0dXJlO1xuICAgIHN3aXRjaCAoY2guY2hhckF0KDApKSB7XG4gICAgICBjYXNlICckJzogcmV0dXJuICckJztcbiAgICAgIGNhc2UgJyYnOiByZXR1cm4gbWF0Y2hlZDtcbiAgICAgIGNhc2UgJ2AnOiByZXR1cm4gc3RyLnNsaWNlKDAsIHBvc2l0aW9uKTtcbiAgICAgIGNhc2UgXCInXCI6IHJldHVybiBzdHIuc2xpY2UodGFpbFBvcyk7XG4gICAgICBjYXNlICc8JzpcbiAgICAgICAgY2FwdHVyZSA9IG5hbWVkQ2FwdHVyZXNbY2guc2xpY2UoMSwgLTEpXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OiAvLyBcXGRcXGQ/XG4gICAgICAgIHZhciBuID0gK2NoO1xuICAgICAgICBpZiAobiA9PT0gMCkgcmV0dXJuIG1hdGNoO1xuICAgICAgICBpZiAobiA+IG0pIHtcbiAgICAgICAgICB2YXIgZiA9IGZsb29yKG4gLyAxMCk7XG4gICAgICAgICAgaWYgKGYgPT09IDApIHJldHVybiBtYXRjaDtcbiAgICAgICAgICBpZiAoZiA8PSBtKSByZXR1cm4gY2FwdHVyZXNbZiAtIDFdID09PSB1bmRlZmluZWQgPyBjaC5jaGFyQXQoMSkgOiBjYXB0dXJlc1tmIC0gMV0gKyBjaC5jaGFyQXQoMSk7XG4gICAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgICB9XG4gICAgICAgIGNhcHR1cmUgPSBjYXB0dXJlc1tuIC0gMV07XG4gICAgfVxuICAgIHJldHVybiBjYXB0dXJlID09PSB1bmRlZmluZWQgPyAnJyA6IGNhcHR1cmU7XG4gIH0pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBmaXhSZWdFeHBXZWxsS25vd25TeW1ib2xMb2dpYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9maXgtcmVnZXhwLXdlbGwta25vd24tc3ltYm9sLWxvZ2ljJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXInKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xudmFyIGFkdmFuY2VTdHJpbmdJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hZHZhbmNlLXN0cmluZy1pbmRleCcpO1xudmFyIGdldFN1YnN0aXR1dGlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtc3Vic3RpdHV0aW9uJyk7XG52YXIgcmVnRXhwRXhlYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZXhlYy1hYnN0cmFjdCcpO1xuXG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5cbnZhciBtYXliZVRvU3RyaW5nID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkID8gaXQgOiBTdHJpbmcoaXQpO1xufTtcblxuLy8gQEByZXBsYWNlIGxvZ2ljXG5maXhSZWdFeHBXZWxsS25vd25TeW1ib2xMb2dpYygncmVwbGFjZScsIDIsIGZ1bmN0aW9uIChSRVBMQUNFLCBuYXRpdmVSZXBsYWNlLCBtYXliZUNhbGxOYXRpdmUsIHJlYXNvbikge1xuICB2YXIgUkVHRVhQX1JFUExBQ0VfU1VCU1RJVFVURVNfVU5ERUZJTkVEX0NBUFRVUkUgPSByZWFzb24uUkVHRVhQX1JFUExBQ0VfU1VCU1RJVFVURVNfVU5ERUZJTkVEX0NBUFRVUkU7XG4gIHZhciBSRVBMQUNFX0tFRVBTXyQwID0gcmVhc29uLlJFUExBQ0VfS0VFUFNfJDA7XG4gIHZhciBVTlNBRkVfU1VCU1RJVFVURSA9IFJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFID8gJyQnIDogJyQwJztcblxuICByZXR1cm4gW1xuICAgIC8vIGBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2VgIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlXG4gICAgZnVuY3Rpb24gcmVwbGFjZShzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKSB7XG4gICAgICB2YXIgTyA9IHJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcyk7XG4gICAgICB2YXIgcmVwbGFjZXIgPSBzZWFyY2hWYWx1ZSA9PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBzZWFyY2hWYWx1ZVtSRVBMQUNFXTtcbiAgICAgIHJldHVybiByZXBsYWNlciAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gcmVwbGFjZXIuY2FsbChzZWFyY2hWYWx1ZSwgTywgcmVwbGFjZVZhbHVlKVxuICAgICAgICA6IG5hdGl2ZVJlcGxhY2UuY2FsbChTdHJpbmcoTyksIHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpO1xuICAgIH0sXG4gICAgLy8gYFJlZ0V4cC5wcm90b3R5cGVbQEByZXBsYWNlXWAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZWdleHAucHJvdG90eXBlLUBAcmVwbGFjZVxuICAgIGZ1bmN0aW9uIChyZWdleHAsIHJlcGxhY2VWYWx1ZSkge1xuICAgICAgaWYgKFxuICAgICAgICAoIVJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFICYmIFJFUExBQ0VfS0VFUFNfJDApIHx8XG4gICAgICAgICh0eXBlb2YgcmVwbGFjZVZhbHVlID09PSAnc3RyaW5nJyAmJiByZXBsYWNlVmFsdWUuaW5kZXhPZihVTlNBRkVfU1VCU1RJVFVURSkgPT09IC0xKVxuICAgICAgKSB7XG4gICAgICAgIHZhciByZXMgPSBtYXliZUNhbGxOYXRpdmUobmF0aXZlUmVwbGFjZSwgcmVnZXhwLCB0aGlzLCByZXBsYWNlVmFsdWUpO1xuICAgICAgICBpZiAocmVzLmRvbmUpIHJldHVybiByZXMudmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHZhciByeCA9IGFuT2JqZWN0KHJlZ2V4cCk7XG4gICAgICB2YXIgUyA9IFN0cmluZyh0aGlzKTtcblxuICAgICAgdmFyIGZ1bmN0aW9uYWxSZXBsYWNlID0gdHlwZW9mIHJlcGxhY2VWYWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbiAgICAgIGlmICghZnVuY3Rpb25hbFJlcGxhY2UpIHJlcGxhY2VWYWx1ZSA9IFN0cmluZyhyZXBsYWNlVmFsdWUpO1xuXG4gICAgICB2YXIgZ2xvYmFsID0gcnguZ2xvYmFsO1xuICAgICAgaWYgKGdsb2JhbCkge1xuICAgICAgICB2YXIgZnVsbFVuaWNvZGUgPSByeC51bmljb2RlO1xuICAgICAgICByeC5sYXN0SW5kZXggPSAwO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdHMgPSBbXTtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZWdFeHBFeGVjKHJ4LCBTKTtcbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbCkgYnJlYWs7XG5cbiAgICAgICAgcmVzdWx0cy5wdXNoKHJlc3VsdCk7XG4gICAgICAgIGlmICghZ2xvYmFsKSBicmVhaztcblxuICAgICAgICB2YXIgbWF0Y2hTdHIgPSBTdHJpbmcocmVzdWx0WzBdKTtcbiAgICAgICAgaWYgKG1hdGNoU3RyID09PSAnJykgcngubGFzdEluZGV4ID0gYWR2YW5jZVN0cmluZ0luZGV4KFMsIHRvTGVuZ3RoKHJ4Lmxhc3RJbmRleCksIGZ1bGxVbmljb2RlKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGFjY3VtdWxhdGVkUmVzdWx0ID0gJyc7XG4gICAgICB2YXIgbmV4dFNvdXJjZVBvc2l0aW9uID0gMDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICByZXN1bHQgPSByZXN1bHRzW2ldO1xuXG4gICAgICAgIHZhciBtYXRjaGVkID0gU3RyaW5nKHJlc3VsdFswXSk7XG4gICAgICAgIHZhciBwb3NpdGlvbiA9IG1heChtaW4odG9JbnRlZ2VyKHJlc3VsdC5pbmRleCksIFMubGVuZ3RoKSwgMCk7XG4gICAgICAgIHZhciBjYXB0dXJlcyA9IFtdO1xuICAgICAgICAvLyBOT1RFOiBUaGlzIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgICAgLy8gICBjYXB0dXJlcyA9IHJlc3VsdC5zbGljZSgxKS5tYXAobWF5YmVUb1N0cmluZylcbiAgICAgICAgLy8gYnV0IGZvciBzb21lIHJlYXNvbiBgbmF0aXZlU2xpY2UuY2FsbChyZXN1bHQsIDEsIHJlc3VsdC5sZW5ndGgpYCAoY2FsbGVkIGluXG4gICAgICAgIC8vIHRoZSBzbGljZSBwb2x5ZmlsbCB3aGVuIHNsaWNpbmcgbmF0aXZlIGFycmF5cykgXCJkb2Vzbid0IHdvcmtcIiBpbiBzYWZhcmkgOSBhbmRcbiAgICAgICAgLy8gY2F1c2VzIGEgY3Jhc2ggKGh0dHBzOi8vcGFzdGViaW4uY29tL04yMVF6ZVFBKSB3aGVuIHRyeWluZyB0byBkZWJ1ZyBpdC5cbiAgICAgICAgZm9yICh2YXIgaiA9IDE7IGogPCByZXN1bHQubGVuZ3RoOyBqKyspIGNhcHR1cmVzLnB1c2gobWF5YmVUb1N0cmluZyhyZXN1bHRbal0pKTtcbiAgICAgICAgdmFyIG5hbWVkQ2FwdHVyZXMgPSByZXN1bHQuZ3JvdXBzO1xuICAgICAgICBpZiAoZnVuY3Rpb25hbFJlcGxhY2UpIHtcbiAgICAgICAgICB2YXIgcmVwbGFjZXJBcmdzID0gW21hdGNoZWRdLmNvbmNhdChjYXB0dXJlcywgcG9zaXRpb24sIFMpO1xuICAgICAgICAgIGlmIChuYW1lZENhcHR1cmVzICE9PSB1bmRlZmluZWQpIHJlcGxhY2VyQXJncy5wdXNoKG5hbWVkQ2FwdHVyZXMpO1xuICAgICAgICAgIHZhciByZXBsYWNlbWVudCA9IFN0cmluZyhyZXBsYWNlVmFsdWUuYXBwbHkodW5kZWZpbmVkLCByZXBsYWNlckFyZ3MpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXBsYWNlbWVudCA9IGdldFN1YnN0aXR1dGlvbihtYXRjaGVkLCBTLCBwb3NpdGlvbiwgY2FwdHVyZXMsIG5hbWVkQ2FwdHVyZXMsIHJlcGxhY2VWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBvc2l0aW9uID49IG5leHRTb3VyY2VQb3NpdGlvbikge1xuICAgICAgICAgIGFjY3VtdWxhdGVkUmVzdWx0ICs9IFMuc2xpY2UobmV4dFNvdXJjZVBvc2l0aW9uLCBwb3NpdGlvbikgKyByZXBsYWNlbWVudDtcbiAgICAgICAgICBuZXh0U291cmNlUG9zaXRpb24gPSBwb3NpdGlvbiArIG1hdGNoZWQubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjdW11bGF0ZWRSZXN1bHQgKyBTLnNsaWNlKG5leHRTb3VyY2VQb3NpdGlvbik7XG4gICAgfVxuICBdO1xufSk7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCB7fTsiXSwic291cmNlUm9vdCI6IiJ9