single-scripture-rcl 3.4.11 → 3.4.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -244,11 +244,11 @@ export function useScripture(_ref2) {
244
244
  _fetchBook = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(fetchParams) {
245
245
  var ignoreSha,
246
246
  _fetchParams$referenc2,
247
- _resourceState$resour,
248
247
  _resource$project,
249
248
  _resource$project2,
250
249
  fetchLink,
251
- shaToBeIgnored,
250
+ _resourceState$resour,
251
+ fetchedShaMatchesIgnoreSha,
252
252
  _resourceState$resour2,
253
253
  _fetchCount,
254
254
  _resource,
@@ -270,10 +270,16 @@ export function useScripture(_ref2) {
270
270
  ignoreSha = _args.length > 1 && _args[1] !== undefined ? _args[1] : null;
271
271
  _context.prev = 1;
272
272
  fetchLink = "".concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink, "/").concat(fetchParams === null || fetchParams === void 0 ? void 0 : (_fetchParams$referenc2 = fetchParams.reference) === null || _fetchParams$referenc2 === void 0 ? void 0 : _fetchParams$referenc2.projectId);
273
- shaToBeIgnored = ignoreSha && ignoreSha === (resourceState === null || resourceState === void 0 ? void 0 : resourceState.sha); // we will reload if ignoreSha given and it matches current sha
274
273
 
275
- if (!(fetchLink === (resourceState === null || resourceState === void 0 ? void 0 : (_resourceState$resour = resourceState.resource) === null || _resourceState$resour === void 0 ? void 0 : _resourceState$resour.resourceLink) && !shaToBeIgnored)) {
276
- _context.next = 7;
274
+ if (!ignoreSha) {
275
+ _context.next = 8;
276
+ break;
277
+ }
278
+
279
+ fetchedShaMatchesIgnoreSha = ignoreSha === (resourceState === null || resourceState === void 0 ? void 0 : resourceState.sha); // we will reload if ignoreSha given and it matches current sha
280
+
281
+ if (!(fetchLink === (resourceState === null || resourceState === void 0 ? void 0 : (_resourceState$resour = resourceState.resource) === null || _resourceState$resour === void 0 ? void 0 : _resourceState$resour.resourceLink) && !fetchedShaMatchesIgnoreSha)) {
282
+ _context.next = 8;
277
283
  break;
278
284
  }
279
285
 
@@ -281,7 +287,7 @@ export function useScripture(_ref2) {
281
287
  console.log("useScripture.fetchBook() - Already fetching resourceLink ".concat(resourceState === null || resourceState === void 0 ? void 0 : (_resourceState$resour2 = resourceState.resource) === null || _resourceState$resour2 === void 0 ? void 0 : _resourceState$resour2.resourceLink, " and ignoreSha=").concat(ignoreSha), fetchParams);
282
288
  return _context.abrupt("return");
283
289
 
284
- case 7:
290
+ case 8:
285
291
  _fetchCount = fetchCount + 1;
286
292
  console.log("useScripture.fetchBook() - FETCHING bible ".concat(resource_ === null || resource_ === void 0 ? void 0 : resource_.projectId, " resourceLink is now ").concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink, " and ignoreSha=").concat(ignoreSha), fetchParams);
287
293
  setState({
@@ -293,18 +299,18 @@ export function useScripture(_ref2) {
293
299
  }
294
300
  }); // fetch manifest data
295
301
 
296
- _context.next = 12;
302
+ _context.next = 13;
297
303
  return delay(100);
298
304
 
299
- case 12:
300
- _context.next = 14;
305
+ case 13:
306
+ _context.next = 15;
301
307
  return core.resourceFromResourceLink(fetchParams);
302
308
 
303
- case 14:
309
+ case 15:
304
310
  _resource = _context.sent;
305
311
 
306
312
  if (!(!(_resource !== null && _resource !== void 0 && _resource.manifest) || !(_resource !== null && _resource !== void 0 && (_resource$project = _resource.project) !== null && _resource$project !== void 0 && _resource$project.file))) {
307
- _context.next = 20;
313
+ _context.next = 21;
308
314
  break;
309
315
  }
310
316
 
@@ -318,27 +324,27 @@ export function useScripture(_ref2) {
318
324
  });
319
325
  return _context.abrupt("return");
320
326
 
321
- case 20:
327
+ case 21:
322
328
  console.log("useScripture.fetchBook() - LOADED bible manifest, fetching book ".concat(resource_ === null || resource_ === void 0 ? void 0 : resource_.projectId, " resourceLink is now ").concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink, " and resourceLink_=").concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink_), fetchParams);
323
- _context.next = 23;
329
+ _context.next = 24;
324
330
  return delay(100);
325
331
 
326
- case 23:
327
- _context.next = 25;
332
+ case 24:
333
+ _context.next = 26;
328
334
  return _resource === null || _resource === void 0 ? void 0 : (_resource$project2 = _resource.project) === null || _resource$project2 === void 0 ? void 0 : _resource$project2.file();
329
335
 
330
- case 25:
336
+ case 26:
331
337
  response = _context.sent;
332
338
  // parse book usfm
333
339
  _bibleUsfm = response && core.getResponseData(response);
334
- _context.next = 29;
340
+ _context.next = 30;
335
341
  return delay(100);
336
342
 
337
- case 29:
343
+ case 30:
338
344
  _bookObjects3 = _bibleUsfm && usfmjs.toJSON(_bibleUsfm); // convert to bible objects
339
345
 
340
346
  if (_bookObjects3) {
341
- _context.next = 35;
347
+ _context.next = 36;
342
348
  break;
343
349
  }
344
350
 
@@ -352,7 +358,7 @@ export function useScripture(_ref2) {
352
358
  });
353
359
  return _context.abrupt("return");
354
360
 
355
- case 35:
361
+ case 36:
356
362
  _ref5 = (response === null || response === void 0 ? void 0 : response.data) || {}, name = _ref5.name, sha = _ref5.sha, url = _ref5.url;
357
363
  console.log("useScripture.fetchBook() - LOADED bible book ".concat(resource_ === null || resource_ === void 0 ? void 0 : resource_.projectId, " resourceLink is now ").concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink, " and resourceLink_=").concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink_), fetchParams);
358
364
  setState({
@@ -369,11 +375,11 @@ export function useScripture(_ref2) {
369
375
  })
370
376
  }
371
377
  });
372
- _context.next = 44;
378
+ _context.next = 45;
373
379
  break;
374
380
 
375
- case 40:
376
- _context.prev = 40;
381
+ case 41:
382
+ _context.prev = 41;
377
383
  _context.t0 = _context["catch"](1);
378
384
  console.error("useScripture.fetchBook() - hard error loading resource", fetchParams, _context.t0);
379
385
  setState({
@@ -383,12 +389,12 @@ export function useScripture(_ref2) {
383
389
  }
384
390
  });
385
391
 
386
- case 44:
392
+ case 45:
387
393
  case "end":
388
394
  return _context.stop();
389
395
  }
390
396
  }
391
- }, _callee, null, [[1, 40]]);
397
+ }, _callee, null, [[1, 41]]);
392
398
  }));
393
399
  return _fetchBook.apply(this, arguments);
394
400
  }
@@ -666,4 +672,4 @@ export function useScripture(_ref2) {
666
672
  versesForRef: versesForRef
667
673
  };
668
674
  }
669
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VTY3JpcHR1cmUudHN4Il0sIm5hbWVzIjpbInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiY29yZSIsInVzZm1qcyIsIkNPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SIiwiRVJST1JfU1RBVEUiLCJJTklUSUFMSVpFRF9TVEFURSIsIklOVkFMSURfTUFOSUZFU1RfRVJST1IiLCJMT0FESU5HX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SIiwidXNlRGVlcENvbXBhcmVFZmZlY3QiLCJnZXRWZXJzZXMiLCJpc0VxdWFsIiwiZGVsYXkiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lIiwiZ2V0UmVzb3VyY2VMaW5rIiwicGFyc2VSZXNvdXJjZUxpbmsiLCJTZXJ2ZXJDb25maWciLCJTY3JpcHR1cmVSZXNvdXJjZSIsIlNjcmlwdHVyZVJlZmVyZW5jZSIsInBhcnNlUmVzb3VyY2VNYW5pZmVzdCIsImdldEJyYW5jaE5hbWUiLCJyZXNvdXJjZUxpbmsiLCJicmFuY2giLCJwYXJ0cyIsInNwbGl0IiwibGVuZ3RoIiwiX3BhcnRzIiwiZ2V0VmVyc2VzRm9yUmVmU3RyIiwicmVmU3RyIiwiYm9va09iamVjdHMiLCJsYW5ndWFnZUlkIiwidmVyc2VzIiwiY2hhcHRlcnMiLCJtYXAiLCJ2ZXJzZSIsInZlcnNlRGF0YSIsInZlcnNlT2JqZWN0cyIsInZlcnNlT2JqZWN0c18iLCJvY2N1cnJlbmNlSW5qZWN0VmVyc2VPYmplY3RzIiwiZ2V0VmVyc2VzRm9yUmVmIiwicmVmZXJlbmNlIiwiY2hhcHRlciIsInVzZVNjcmlwdHVyZSIsImNvbmZpZyIsInJlYWR5Rm9yRmV0Y2giLCJyZXNvdXJjZV8iLCJyZXNvdXJjZSIsInJlc291cmNlTGlua18iLCJ3aG9sZUJvb2siLCJiaWJsZVVzZm0iLCJmZXRjaENvdW50IiwiZmV0Y2hlZCIsImZldGNoZWRCb29rIiwiZmV0Y2hQYXJhbXMiLCJpZ25vcmVTaGEiLCJpbml0aWFsaXplZCIsInJlc291cmNlU3RhdGUiLCJjb250ZW50IiwiZmV0Y2hSZXNwb25zZSIsImZldGNoZWRSZXNvdXJjZXMiLCJsb2FkaW5nUmVzb3VyY2UiLCJsb2FkaW5nQ29udGVudCIsInNoYSIsInVybCIsInZlcnNlc0ZvclJlZiIsInN0YXRlIiwic2V0U3RhdGVfIiwib3duZXIiLCJyZWYiLCJib29rSWQiLCJwcm9qZWN0SWQiLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiaW5pdGlhdGVCb29rRmV0Y2giLCJjb25zb2xlIiwibG9nIiwicmVmXyIsInJlc291cmNlSWQiLCJib29rUmVmIiwibmV3RmV0Y2hQYXJhbXMiLCJmZXRjaEJvb2siLCJmZXRjaExpbmsiLCJzaGFUb0JlSWdub3JlZCIsIl9mZXRjaENvdW50IiwicmVzb3VyY2VGcm9tUmVzb3VyY2VMaW5rIiwiX3Jlc291cmNlIiwibWFuaWZlc3QiLCJwcm9qZWN0IiwiZmlsZSIsImVycm9yTXNnIiwid2FybiIsInJlc3BvbnNlIiwiZ2V0UmVzcG9uc2VEYXRhIiwidG9KU09OIiwiZGF0YSIsIm5hbWUiLCJlcnJvciIsInZhbGlkYXRlUmVzcG9uc2UiLCJpc1NhbWVCb29rIiwiZXhwZWN0ZWRCb29rSWQiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiZmV0Y2hlZEJyYW5jaCIsImZldGNoaW5nQnJhbmNoIiwiYmlibGVVc2ZtXyIsImZldGNoVmVyc2VzRm9yUmVmIiwidGhlbiIsInRpdGxlIiwidmVyc2lvbiIsImxvYWRpbmciLCJjb250ZW50Tm90Rm91bmRFcnJvciIsInNjcmlwdHVyZU5vdExvYWRlZEVycm9yIiwibWFuaWZlc3ROb3RGb3VuZEVycm9yIiwiaW52YWxpZE1hbmlmZXN0RXJyb3IiLCJyZXNvdXJjZVN0YXR1cyIsImludGlhbGl6ZWQiLCJfZ2V0VmVyc2VzRm9yUmVmIiwiY29udGVudF8iLCJ1cGRhdGVWZXJzZSIsImJvb2tPYmplY3RzXyIsIl9ib29rT2JqZWN0cyIsIm5ld1ZlcnNlc0ZvclJlZiIsInJlbG9hZFJlc291cmNlIiwiX2ZldGNoUGFyYW1zIiwiX3JlZiIsIl9yZXNvdXJjZUxpbmsiLCJjdXJyZW50Qm9va1JlZiIsImZldGNoZWRCb29rU2FtZSIsIl92ZXJzZXNGb3JSZWYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBLFNBQ0VBLFNBREYsRUFFRUMsUUFGRixRQUdPLE9BSFA7QUFJQSxTQUFTQyxJQUFULFFBQXFCLHlCQUFyQjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIsU0FBbkI7QUFDQSxTQUNFQyx1QkFERixFQUVFQyxXQUZGLEVBR0VDLGlCQUhGLEVBSUVDLHNCQUpGLEVBS0VDLGFBTEYsRUFNRUMseUJBTkYsRUFPRUMsMEJBUEYsUUFRTyx1QkFSUDtBQVNBLE9BQU9DLG9CQUFQLE1BQWlDLHlCQUFqQztBQUNBLFNBQVNDLFNBQVQsUUFBMEIsdUJBQTFCO0FBQ0EsT0FBTyxLQUFLQyxPQUFaLE1BQXlCLFlBQXpCO0FBQ0EsU0FBU0MsS0FBVCxRQUFzQixVQUF0QjtBQUNBLFNBQ0VDLG1CQURGLEVBRUVDLDJCQUZGLEVBR0VDLGVBSEYsRUFJRUMsaUJBSkYsUUFLTyw0QkFMUDtBQU1BLFNBQ0VDLFlBREYsRUFFRUMsaUJBRkYsRUFHRUMsa0JBSEYsUUFJTyxVQUpQO0FBS0EsU0FBU0MscUJBQVQsUUFBc0MseUJBQXRDOztBQWlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNDLGFBQVQsQ0FBdUJDLFlBQXZCLEVBQTZDO0FBQzNDLE1BQUlDLE1BQU0sR0FBRyxJQUFiO0FBQ0FELEVBQUFBLFlBQVksR0FBR0EsWUFBWSxJQUFJLEVBQS9CO0FBQ0EsTUFBTUUsS0FBSyxHQUFHRixZQUFZLENBQUNHLEtBQWIsQ0FBbUIsT0FBbkIsQ0FBZDs7QUFFQSxNQUFJRCxLQUFLLENBQUNFLE1BQU4sR0FBZSxDQUFuQixFQUFzQjtBQUFFO0FBQ3RCSCxJQUFBQSxNQUFNLEdBQUdD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QXNCLENBQ3BCO0FBQ0E7QUFDQTtBQUNELEtBSkQsTUFJTztBQUNMLFVBQU1QLFlBQVksR0FBR08sZUFBZSxHQUFHbkcsV0FBSCxHQUFpQixJQUFyRDs7QUFDQW9HLE1BQUFBLGFBQWEsR0FBR3ZCLGlCQUFpQixDQUFDZSxZQUFELENBQWpDLENBRkssQ0FHTDtBQUNEOztBQUVELFFBQUksQ0FBQy9HLE9BQU8sQ0FBQ3VILGFBQUQsRUFBZ0JqRSxZQUFoQixDQUFaLEVBQTJDO0FBQ3pDTyxNQUFBQSxRQUFRLENBQUM7QUFBRVAsUUFBQUEsWUFBWSxFQUFFaUU7QUFBaEIsT0FBRCxDQUFSO0FBQ0Q7QUFDRixHQWxCUSxFQWtCTixDQUFDekYsU0FBRCxDQWxCTSxDQUFUO0FBb0JBLFNBQU87QUFDTFMsSUFBQUEsU0FBUyxFQUFUQSxTQURLO0FBRUxwQixJQUFBQSxXQUFXLEVBQVhBLFdBRks7QUFHTFUsSUFBQUEsZUFBZSxFQUFFOEUsZ0JBSFo7QUFJTDdFLElBQUFBLFNBQVMsRUFBRWEsV0FBRixhQUFFQSxXQUFGLHVCQUFFQSxXQUFXLENBQUViLFNBSm5CO0FBS0xtRixJQUFBQSxjQUFjLEVBQWRBLGNBTEs7QUFNTHRHLElBQUFBLFlBQVksRUFBRWdDLFdBQUYsYUFBRUEsV0FBRix1QkFBRUEsV0FBVyxDQUFFaEMsWUFOdEI7QUFPTG1DLElBQUFBLGFBQWEsRUFBYkEsYUFQSztBQU9VO0FBQ2YyRCxJQUFBQSxjQUFjLEVBQWRBLGNBUks7QUFRVztBQUNoQlAsSUFBQUEsS0FBSyxFQUFMQSxLQVRLO0FBVUxXLElBQUFBLFdBQVcsRUFBWEEsV0FWSztBQVdMVixJQUFBQSxPQUFPLEVBQVBBLE9BWEs7QUFZTDdDLElBQUFBLFlBQVksRUFBWkE7QUFaSyxHQUFQO0FBY0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtaWdub3JlXG5pbXBvcnQge1xuICB1c2VFZmZlY3QsXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNvcmUgfSBmcm9tICdzY3JpcHR1cmUtcmVzb3VyY2VzLXJjbCdcbmltcG9ydCB1c2ZtanMgZnJvbSAndXNmbS1qcydcbmltcG9ydCB7XG4gIENPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SLFxuICBFUlJPUl9TVEFURSxcbiAgSU5JVElBTElaRURfU1RBVEUsXG4gIElOVkFMSURfTUFOSUZFU1RfRVJST1IsXG4gIExPQURJTkdfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SLFxufSBmcm9tICd0cmFuc2xhdGlvbi1oZWxwcy1yY2wnXG5pbXBvcnQgdXNlRGVlcENvbXBhcmVFZmZlY3QgZnJvbSAndXNlLWRlZXAtY29tcGFyZS1lZmZlY3QnXG5pbXBvcnQgeyBnZXRWZXJzZXMgfSBmcm9tICdiaWJsZS1yZWZlcmVuY2UtcmFuZ2UnXG5pbXBvcnQgKiBhcyBpc0VxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHtcbiAgY2xlYW51cFZlcnNlT2JqZWN0cyxcbiAgZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lLFxuICBnZXRSZXNvdXJjZUxpbmssXG4gIHBhcnNlUmVzb3VyY2VMaW5rLFxufSBmcm9tICcuLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7XG4gIFNlcnZlckNvbmZpZyxcbiAgU2NyaXB0dXJlUmVzb3VyY2UsXG4gIFNjcmlwdHVyZVJlZmVyZW5jZSxcbn0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBwYXJzZVJlc291cmNlTWFuaWZlc3QgfSBmcm9tICcuL3BhcnNlUmVzb3VyY2VNYW5pZmVzdCdcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgLyoqIHJlZmVyZW5jZSBmb3Igc2NyaXB0dXJlICoqL1xuICByZWZlcmVuY2U6IFNjcmlwdHVyZVJlZmVyZW5jZTtcbiAgLyoqIHdoZXJlIHRvIGdldCBkYXRhICoqL1xuICBjb25maWc6IFNlcnZlckNvbmZpZztcbiAgLyoqIG9wdGlvbmFsIGRpcmVjdCBwYXRoIHRvIGJpYmxlIHJlc291cmNlLCBpbiBmb3JtYXQgJHtvd25lcn0vJHtsYW5ndWFnZUlkfS8ke3Byb2plY3RJZH0vJHticmFuY2h9ICoqL1xuICByZXNvdXJjZUxpbms6IHN0cmluZ3x1bmRlZmluZWQ7XG4gIC8qKiBvcHRpb25hbCByZXNvdXJjZSBvYmplY3QgdG8gdXNlIHRvIGJ1aWxkIHJlc291cmNlTGluayAqKi9cbiAgcmVzb3VyY2U6IFNjcmlwdHVyZVJlc291cmNlfHVuZGVmaW5lZDtcbiAgLyoqIGlmIHRydWUgdGhlbiBmZXRjaCB0aGUgZW50aXJlIGJvb2sgKi9cbiAgd2hvbGVCb29rOiBib29sZWFuO1xuICAvKiogaWYgdHJ1ZSB0aGVuIHNldHRpbmdzIGFyZSByZWFkeSBmb3IgZmV0Y2hpbmcgZGF0YSAqL1xuICByZWFkeUZvckZldGNoOiBib29sZWFuO1xufVxuXG4vKipcbiAqIGV4dHJhY3QgYnJhbmNoIGZyb20gcmVzb3VyY2UgbGlua1xuICogQHBhcmFtIHJlc291cmNlTGlua1xuICovXG5mdW5jdGlvbiBnZXRCcmFuY2hOYW1lKHJlc291cmNlTGluazogc3RyaW5nKSB7XG4gIGxldCBicmFuY2ggPSBudWxsXG4gIHJlc291cmNlTGluayA9IHJlc291cmNlTGluayB8fCAnJ1xuICBjb25zdCBwYXJ0cyA9IHJlc291cmNlTGluay5zcGxpdCgnP3JlZj0nKVxuXG4gIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7IC8vIGlmIHJlZiBwYXJhbWV0ZXIgZm91bmQsIGdldCBicmFuY2ggbmFtZSBhZnRlclxuICAgIGJyYW5jaCA9IHBhcnRzPy5bMV1cbiAgfSBlbHNlIHsgLy8gZmFsbCBiYWNrIHRvIHVzaW5nIHVzZVJzcmMgZm9ybWF0IHN1Y2ggYXMgXCJ1bmZvbGRpbmdXb3JkL2VuL3VzdC9tYXN0ZXJcIlxuICAgIGNvbnN0IF9wYXJ0cyA9IHJlc291cmNlTGluay5zcGxpdCgnLycpXG4gICAgYnJhbmNoID0gX3BhcnRzPy5bM11cbiAgfVxuICByZXR1cm4gYnJhbmNoXG59XG5cbi8qKlxuICogZ2V0IHRoZSB2ZXJzZSBvYmplY3RzIGZvciB0aGUgcmVmZXJlbmNlIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IHJlZlN0ciAtIGluIGZvcm1hdCA8Y2hhcHRlcj46PHZlcnNlPlxuICogQHBhcmFtIHtvYmplY3R9IGJvb2tPYmplY3RzIC0gcGFyc2VkIHVzZm0gZm9yIGJvb2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBsYW5ndWFnZUlkXG4gKiBAcmV0dXJuIHthcnJheXxudWxsfSAtIG9mIHZlcnNlT2JqZWN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmVyc2VzRm9yUmVmU3RyKHJlZlN0ciwgYm9va09iamVjdHMsIGxhbmd1YWdlSWQpIHtcbiAgaWYgKGJvb2tPYmplY3RzKSB7XG4gICAgbGV0IHZlcnNlcyA9IGdldFZlcnNlcyhib29rT2JqZWN0cy5jaGFwdGVycywgcmVmU3RyKVxuXG4gICAgaWYgKGxhbmd1YWdlSWQgPT09ICdlbC14LWtvaW5lJyB8fCBsYW5ndWFnZUlkID09PSAnaGJvJykge1xuICAgICAgdmVyc2VzID0gdmVyc2VzLm1hcCh2ZXJzZSA9PiB7XG4gICAgICAgIGlmICggdmVyc2U/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgbGV0IHZlcnNlT2JqZWN0c18gPSBjb3JlLm9jY3VycmVuY2VJbmplY3RWZXJzZU9iamVjdHMoIHZlcnNlLnZlcnNlRGF0YS52ZXJzZU9iamVjdHMpXG4gICAgICAgICAgdmVyc2VPYmplY3RzXyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzXylcbiAgICAgICAgICB2ZXJzZS52ZXJzZURhdGEudmVyc2VPYmplY3RzID0gdmVyc2VPYmplY3RzX1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2ZXJzZVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyc2VzXG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuLyoqXG4gKiBnZXQgdGhlIHZlcnNlIG9iamVjdHMgZm9yIHRoZSByZWZlcmVuY2Ugb2JqZWN0XG4gKiBAcGFyYW0ge29iamVjdH0gcmVmZXJlbmNlXG4gKiBAcGFyYW0ge29iamVjdH0gYm9va09iamVjdHMgLSBwYXJzZWQgdXNmbSBmb3IgYm9va1xuICogQHBhcmFtIHtzdHJpbmd9IGxhbmd1YWdlSWRcbiAqIEByZXR1cm4ge2FycmF5fG51bGx9IC0gb2YgdmVyc2VPYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWZXJzZXNGb3JSZWYocmVmZXJlbmNlLCBib29rT2JqZWN0cywgbGFuZ3VhZ2VJZCkge1xuICBjb25zdCByZWZTdHIgPSBgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YFxuICByZXR1cm4gZ2V0VmVyc2VzRm9yUmVmU3RyKHJlZlN0ciwgYm9va09iamVjdHMsIGxhbmd1YWdlSWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTY3JpcHR1cmUoeyAvLyBob29rIGZvciBmZXRjaGluZyBzY3JpcHR1cmVcbiAgY29uZmlnLFxuICByZWFkeUZvckZldGNoLFxuICByZWZlcmVuY2UsXG4gIHJlc291cmNlOiByZXNvdXJjZV8sXG4gIHJlc291cmNlTGluazogcmVzb3VyY2VMaW5rXyxcbiAgd2hvbGVCb29rID0gZmFsc2UsXG59IDogUHJvcHMpIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gdXNlU3RhdGUoe1xuICAgIGJpYmxlVXNmbTogbnVsbCxcbiAgICBib29rT2JqZWN0czogbnVsbCxcbiAgICBmZXRjaENvdW50OiAwLFxuICAgIGZldGNoZWQ6IGZhbHNlLFxuICAgIGZldGNoZWRCb29rOiAnJyxcbiAgICBmZXRjaFBhcmFtczoge1xuICAgICAgY29uZmlnOiB7fSxcbiAgICAgIHJlZmVyZW5jZToge30sXG4gICAgICByZXNvdXJjZUxpbms6ICcnLFxuICAgIH0sXG4gICAgaWdub3JlU2hhOiBudWxsLFxuICAgIGluaXRpYWxpemVkOiBmYWxzZSxcbiAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICBib29rT2JqZWN0czogbnVsbCxcbiAgICAgIGJpYmxlVXNmbTogbnVsbCxcbiAgICAgIGNvbnRlbnQ6IG51bGwsXG4gICAgICBmZXRjaFJlc3BvbnNlOiBudWxsLFxuICAgICAgZmV0Y2hlZFJlc291cmNlczogbnVsbCxcbiAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICBsb2FkaW5nQ29udGVudDogZmFsc2UsXG4gICAgICByZXNvdXJjZTogbnVsbCxcbiAgICAgIHNoYTogbnVsbCxcbiAgICAgIHVybDogbnVsbCxcbiAgICB9LFxuICAgIHZlcnNlc0ZvclJlZjogW10sXG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgYnJhbmNoID0gJ21hc3RlcicsXG4gICAgcmVmID0gbnVsbCxcbiAgfSA9IHJlc291cmNlXyB8fCB7fVxuXG4gIGNvbnN0IHsgcHJvamVjdElkOiBib29rSWR9ID0gcmVmZXJlbmNlIHx8IHt9XG5cbiAgY29uc3Qge1xuICAgIGJpYmxlVXNmbSxcbiAgICBib29rT2JqZWN0cyxcbiAgICBmZXRjaENvdW50LFxuICAgIGZldGNoZWQsXG4gICAgZmV0Y2hlZEJvb2ssXG4gICAgZmV0Y2hQYXJhbXMsXG4gICAgaWdub3JlU2hhLFxuICAgIGluaXRpYWxpemVkLFxuICAgIHJlc291cmNlU3RhdGUsXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9ID0gc3RhdGVcbiAgY29uc3QgZmV0Y2hlZFJlc291cmNlcyA9IHJlc291cmNlU3RhdGU/LmZldGNoZWRSZXNvdXJjZXNcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlYWR5Rm9yRmV0Y2gpIHtcbiAgICAgIGluaXRpYXRlQm9va0ZldGNoKClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbml0aWF0ZUJvb2tGZXRjaCgpIHtcbiAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSByZWFkeUZvckZldGNoIHRydWUsIGluaXRpYWxpemluZ2ApXG4gICAgICBsZXQgcmVzb3VyY2VMaW5rID0gcmVhZHlGb3JGZXRjaCAmJiByZXNvdXJjZUxpbmtfXG5cbiAgICAgIGlmICghcmVzb3VyY2VMaW5rXyAmJiByZXNvdXJjZV8pIHtcbiAgICAgICAgY29uc3QgcmVmXyA9IHJlZiB8fCBicmFuY2hcblxuICAgICAgICByZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoe1xuICAgICAgICAgIG93bmVyLFxuICAgICAgICAgIGxhbmd1YWdlSWQsXG4gICAgICAgICAgcmVzb3VyY2VJZDogYm9va0lkLFxuICAgICAgICAgIHJlZjogcmVmXyxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgYm9va1JlZiA9IHsgLi4ucmVmZXJlbmNlIH1cblxuICAgICAgaWYgKHdob2xlQm9vaykge1xuICAgICAgICBkZWxldGUgYm9va1JlZi5jaGFwdGVyIC8vIHJlbW92ZSB0aGUgY2hhcHRlciBhbmQgdmVyc2Ugc28gdGhlIHdob2xlIGJvb2sgaXMgZmV0Y2hlZFxuICAgICAgICBkZWxldGUgYm9va1JlZi52ZXJzZVxuICAgICAgfVxuXG4gICAgICBpZiAocmVzb3VyY2VMaW5rICE9PSBmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSBmb3IgJHtyZXNvdXJjZV8/LnByb2plY3RJZH0gcmVzb3VyY2VMaW5rIGlzIG5vdyAke3Jlc291cmNlTGlua30gYW5kIHJlc291cmNlTGlua189JHtyZXNvdXJjZUxpbmtffWApXG4gICAgICB9IGVsc2UgaWYgKGJvb2tSZWYgIT09IGZldGNoUGFyYW1zPy5yZWZlcmVuY2UpIHtcbiAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIGJvb2sgY2hhbmdlZCB0byAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7cmVzb3VyY2VMaW5rfWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld0ZldGNoUGFyYW1zID0ge1xuICAgICAgICBjb25maWcsXG4gICAgICAgIHJlZmVyZW5jZTogYm9va1JlZixcbiAgICAgICAgcmVzb3VyY2VMaW5rLFxuICAgICAgfVxuXG4gICAgICBpZiAoIWlzRXF1YWwobmV3RmV0Y2hQYXJhbXMsIGZldGNoUGFyYW1zKSkge1xuICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgZmV0Y2hQYXJhbXM6IG5ld0ZldGNoUGFyYW1zLFxuICAgICAgICAgIGZldGNoZWQ6IGZhbHNlLFxuICAgICAgICAgIGluaXRpYWxpemVkOiB0cnVlLFxuICAgICAgICB9KVxuXG4gICAgICAgIGZldGNoQm9vayhuZXdGZXRjaFBhcmFtcylcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICByZWFkeUZvckZldGNoLFxuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgYm9va0lkLFxuICAgIGJyYW5jaCxcbiAgICByZWYsXG4gIF0pXG5cbiAgLyoqXG4gICAqIGRvIGEgZmV0Y2ggb2YgbWFuaWZlc3QgYW5kIGJvb2sgb2YgdGhlIGJpYmxlIHNwZWNpZmllZCBpbiBmZXRjaFBhcmFtc1xuICAgKiBAcGFyYW0ge29iamVjdH0gZmV0Y2hQYXJhbXNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlnbm9yZVNoYSAtIG9wdGlvbmFsIHByZXZpb3VzIHNoYSAtIGlnbm9yZSByZXNwb25zZXMgdGhhdCBjYW1lIGJhY2sgZm9yIHRoaXMgcHJldmlvdXMgYm9vayBjb21taXRcbiAgICovXG4gIGFzeW5jIGZ1bmN0aW9uIGZldGNoQm9vayhmZXRjaFBhcmFtcywgaWdub3JlU2hhID0gbnVsbCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmZXRjaExpbmsgPSBgJHtmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rfS8ke2ZldGNoUGFyYW1zPy5yZWZlcmVuY2U/LnByb2plY3RJZH1gXG4gICAgICBjb25zdCBzaGFUb0JlSWdub3JlZCA9IGlnbm9yZVNoYSAmJiBpZ25vcmVTaGEgPT09IHJlc291cmNlU3RhdGU/LnNoYSAvLyB3ZSB3aWxsIHJlbG9hZCBpZiBpZ25vcmVTaGEgZ2l2ZW4gYW5kIGl0IG1hdGNoZXMgY3VycmVudCBzaGFcblxuICAgICAgaWYgKChmZXRjaExpbmsgPT09IHJlc291cmNlU3RhdGU/LnJlc291cmNlPy5yZXNvdXJjZUxpbmspICYmICFzaGFUb0JlSWdub3JlZCkgeyAvLyBzZWUgaWYgd2UgYWxyZWFkeSBmZXRjaGVkIHRoaXNcbiAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIEFscmVhZHkgZmV0Y2hpbmcgcmVzb3VyY2VMaW5rICR7cmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2U/LnJlc291cmNlTGlua30gYW5kIGlnbm9yZVNoYT0ke2lnbm9yZVNoYX1gLCBmZXRjaFBhcmFtcylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IF9mZXRjaENvdW50ID0gZmV0Y2hDb3VudCArIDFcbiAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUuZmV0Y2hCb29rKCkgLSBGRVRDSElORyBiaWJsZSAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7ZmV0Y2hQYXJhbXM/LnJlc291cmNlTGlua30gYW5kIGlnbm9yZVNoYT0ke2lnbm9yZVNoYX1gLCBmZXRjaFBhcmFtcylcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgZmV0Y2hDb3VudDogX2ZldGNoQ291bnQsXG4gICAgICAgIGZldGNoZWQ6IGZhbHNlLFxuICAgICAgICBpZ25vcmVTaGEsXG4gICAgICAgIHJlc291cmNlU3RhdGU6IHsgbG9hZGluZ1Jlc291cmNlOiB0cnVlIH0sXG4gICAgICB9KVxuXG4gICAgICAvLyBmZXRjaCBtYW5pZmVzdCBkYXRhXG4gICAgICBhd2FpdCBkZWxheSgxMDApXG4gICAgICBjb25zdCBfcmVzb3VyY2UgPSBhd2FpdCBjb3JlLnJlc291cmNlRnJvbVJlc291cmNlTGluayhmZXRjaFBhcmFtcylcblxuICAgICAgaWYgKCFfcmVzb3VyY2U/Lm1hbmlmZXN0IHx8ICFfcmVzb3VyY2U/LnByb2plY3Q/LmZpbGUpIHtcbiAgICAgICAgY29uc3QgZXJyb3JNc2cgPSBfcmVzb3VyY2U/Lm1hbmlmZXN0ID8gJ3BhcnNpbmcgcmVzb3VyY2UgbWFuaWZlc3QnIDogJ2xvYWRpbmcgcmVzb3VyY2UgbWFuaWZlc3QnXG4gICAgICAgIGNvbnNvbGUud2FybihgdXNlU2NyaXB0dXJlLmZldGNoQm9vaygpIC0gZXJyb3IgJHtlcnJvck1zZ31gLCBmZXRjaFBhcmFtcyApXG4gICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgICBsb2FkaW5nUmVzb3VyY2U6IGZhbHNlLFxuICAgICAgICAgICAgcmVzb3VyY2U6IF9yZXNvdXJjZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIExPQURFRCBiaWJsZSBtYW5pZmVzdCwgZmV0Y2hpbmcgYm9vayAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7ZmV0Y2hQYXJhbXM/LnJlc291cmNlTGlua30gYW5kIHJlc291cmNlTGlua189JHtmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rX31gLCBmZXRjaFBhcmFtcylcbiAgICAgIGF3YWl0IGRlbGF5KDEwMClcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgX3Jlc291cmNlPy5wcm9qZWN0Py5maWxlKClcbiAgICAgIC8vIHBhcnNlIGJvb2sgdXNmbVxuICAgICAgY29uc3QgYmlibGVVc2ZtID0gcmVzcG9uc2UgJiYgY29yZS5nZXRSZXNwb25zZURhdGEocmVzcG9uc2UpXG4gICAgICBhd2FpdCBkZWxheSgxMDApXG4gICAgICBjb25zdCBib29rT2JqZWN0cyA9IGJpYmxlVXNmbSAmJiB1c2ZtanMudG9KU09OKGJpYmxlVXNmbSkgLy8gY29udmVydCB0byBiaWJsZSBvYmplY3RzXG5cbiAgICAgIGlmICghYm9va09iamVjdHMpIHtcbiAgICAgICAgY29uc3QgZXJyb3JNc2cgPSBiaWJsZVVzZm0gPyAnZmV0Y2hpbmcgYm9vayBvZiB0aGUgYmlibGUnIDogJ3BhcnNpbmcgYm9vayBvZiB0aGUgYmlibGUnXG4gICAgICAgIGNvbnNvbGUud2FybihgdXNlU2NyaXB0dXJlLmZldGNoQm9vaygpIC0gZXJyb3IgJHtlcnJvck1zZ31gLCBmZXRjaFBhcmFtcyApXG4gICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgICBsb2FkaW5nUmVzb3VyY2U6IGZhbHNlLFxuICAgICAgICAgICAgcmVzb3VyY2U6IF9yZXNvdXJjZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBuYW1lLCBzaGEsIHVybCB9ID0gcmVzcG9uc2U/LmRhdGEgfHwge31cblxuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIExPQURFRCBiaWJsZSBib29rICR7cmVzb3VyY2VfPy5wcm9qZWN0SWR9IHJlc291cmNlTGluayBpcyBub3cgJHtmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rfSBhbmQgcmVzb3VyY2VMaW5rXz0ke2ZldGNoUGFyYW1zPy5yZXNvdXJjZUxpbmtffWAsIGZldGNoUGFyYW1zKVxuICAgICAgc2V0U3RhdGUoXG4gICAgICAgIHtcbiAgICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgICBsb2FkaW5nUmVzb3VyY2U6IGZhbHNlLFxuICAgICAgICAgICAgZmV0Y2hlZFJlc291cmNlczoge1xuICAgICAgICAgICAgICAuLi5fcmVzb3VyY2UsXG4gICAgICAgICAgICAgIGJpYmxlVXNmbSxcbiAgICAgICAgICAgICAgYm9va09iamVjdHMsXG4gICAgICAgICAgICAgIGZldGNoQ291bnQ6IF9mZXRjaENvdW50LFxuICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICByZWZlcmVuY2U6IGZldGNoUGFyYW1zPy5yZWZlcmVuY2UsXG4gICAgICAgICAgICAgIHNoYSxcbiAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIGhhcmQgZXJyb3IgbG9hZGluZyByZXNvdXJjZWAsIGZldGNoUGFyYW1zLCBlIClcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgcmVzb3VyY2VTdGF0ZToge1xuICAgICAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICAgICAgcmVzb3VyY2U6IG51bGwsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIGZvciAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZWFkeUZvckZldGNoIGlzIG5vdyAke3JlYWR5Rm9yRmV0Y2h9YClcbiAgfSwgW3JlYWR5Rm9yRmV0Y2hdKVxuXG4gIC8qKlxuICAgKiBtYWtlIHN1cmUgbGFzdCBmZXRjaCByZXNwb25zZSBpcyBmb3IgY3VycmVudCBib29rL2JyYW5jaFxuICAgKi9cbiAgZnVuY3Rpb24gdmFsaWRhdGVSZXNwb25zZSgpIHtcbiAgICBsZXQgaXNTYW1lQm9vayA9IGZhbHNlXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGV4cGVjdGVkQm9va0lkID0gYm9va0lkIHx8ICd6enonXG4gICAgY29uc3QgZmV0Y2hlZEJvb2sgPSBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUoZmV0Y2hlZFJlc291cmNlcz8ubmFtZSlcbiAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnZhbGlkYXRlUmVzcG9uc2UoKSAtIEN1cnJlbnQgYm9va0lkIGlzICR7Ym9va0lkfSBhbmQgc2VlaW5nICR7ZmV0Y2hlZEJvb2t9IGluIFVTRk1gKVxuICAgIGlzU2FtZUJvb2sgPSBmZXRjaGVkQm9vaz8udG9Mb3dlckNhc2UoKT8uaW5jbHVkZXMoYm9va0lkKVxuXG4gICAgY29uc3Qgc2hhID0gZmV0Y2hlZFJlc291cmNlcz8uc2hhIHx8IG51bGxcbiAgICBjb25zdCB1cmwgPSBmZXRjaGVkUmVzb3VyY2VzPy51cmwgfHwgbnVsbFxuXG4gICAgaWYgKGlzU2FtZUJvb2spIHsgLy8gYWxzbyBtYWtlIHN1cmUgaXQgaXMgdGhlIHNhbWUgYnJhbmNoXG4gICAgICBjb25zdCBmZXRjaGVkQnJhbmNoID0gZ2V0QnJhbmNoTmFtZSh1cmwpXG4gICAgICBjb25zdCBmZXRjaGluZ0JyYW5jaCA9IGdldEJyYW5jaE5hbWUoZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluaylcblxuICAgICAgaWYgKGZldGNoZWRCcmFuY2ggIT09IGZldGNoaW5nQnJhbmNoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUudmFsaWRhdGVSZXNwb25zZSgpIGludmFsaWQgYnJhbmNoLCBleHBlY3RlZCBicmFuY2ggaXMgJHtmZXRjaGluZ0JyYW5jaH0sIGJ1dCBmZXRjaGVkQnJhbmNoIGlzICR7ZmV0Y2hlZEJyYW5jaH1gLCB7IHNoYSwgdXJsIH0pXG4gICAgICAgIGlzU2FtZUJvb2sgPSBmYWxzZVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnZhbGlkYXRlUmVzcG9uc2UoKSAtICBpbnZhbGlkIGJvb2ssIGV4cGVjdGVkQm9va0lkIGlzICR7ZXhwZWN0ZWRCb29rSWR9LCBidXQgcmVjZWl2ZWQgYm9vayBuYW1lICR7ZmV0Y2hlZEJvb2t9YCwgeyBzaGEsIHVybCB9KVxuICAgIH1cblxuICAgIGlmIChpZ25vcmVTaGEgPT09IHNoYSkge1xuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS52YWxpZGF0ZVJlc3BvbnNlKCkgLSB0aGUgc2hhIGlzIHRoZSBzYW1lIGFzIHRoZSBpZ25vcmUgc2hhICR7c2hhfWAsIHsgc2hhLCB1cmwgfSlcbiAgICAgIGlzU2FtZUJvb2sgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmIChpc1NhbWVCb29rKSB7XG4gICAgICBjb25zdCBiaWJsZVVzZm1fID0gZmV0Y2hlZFJlc291cmNlcz8uYmlibGVVc2ZtXG4gICAgICBjb25zdCBib29rT2JqZWN0cyA9IGZldGNoZWRSZXNvdXJjZXM/LmJvb2tPYmplY3RzXG4gICAgICBjb25zdCB2ZXJzZXNGb3JSZWYgPSBmZXRjaFZlcnNlc0ZvclJlZihib29rT2JqZWN0cylcblxuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS52YWxpZGF0ZVJlc3BvbnNlKCkgLSBjb3JyZWN0IGJvb2ssIGV4cGVjdGVkQm9va0lkIGlzICR7ZXhwZWN0ZWRCb29rSWR9YCwgeyBzaGEsIHVybCB9KVxuICAgICAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgICAgIGJpYmxlVXNmbTogYmlibGVVc2ZtXyxcbiAgICAgICAgYm9va09iamVjdHMsXG4gICAgICAgIGZldGNoZWQ6IHRydWUsXG4gICAgICAgIGZldGNoZWRCb29rOiBleHBlY3RlZEJvb2tJZCxcbiAgICAgICAgaWdub3JlU2hhOiBudWxsLFxuICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgYm9va09iamVjdHMsXG4gICAgICAgICAgYmlibGVVc2ZtOiBiaWJsZVVzZm1fLFxuICAgICAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICAgICAgbG9hZGluZ0NvbnRlbnQ6IGZhbHNlLFxuICAgICAgICAgIHJlc291cmNlOiBmZXRjaGVkUmVzb3VyY2VzLFxuICAgICAgICAgIHNoYSxcbiAgICAgICAgICB1cmwsXG4gICAgICAgIH0sXG4gICAgICAgIHZlcnNlc0ZvclJlZixcbiAgICAgIH1cblxuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgfVxuICB9XG5cbiAgdXNlRGVlcENvbXBhcmVFZmZlY3QoKCkgPT4geyAvLyB2YWxpZGF0ZSByZXNwb25zZSB0byBtYWtlIHN1cmUgZnJvbSBsYXRlc3QgcmVxdWVzdFxuICAgIGlmIChyZWFkeUZvckZldGNoICYmIGZldGNoZWRSZXNvdXJjZXMpIHtcbiAgICAgIGlmICghZmV0Y2hlZCAmJiBmZXRjaGVkUmVzb3VyY2VzPy5mZXRjaENvdW50ID09PSBmZXRjaENvdW50KSB7XG4gICAgICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgdmFsaWRhdGVSZXNwb25zZSgpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9LCBbeyByZWFkeUZvckZldGNoLCBmZXRjaGVkUmVzb3VyY2VzIH1dKVxuXG4gIGNvbnN0IHJlc291cmNlID0gcmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2VcbiAgY29uc3QgeyB0aXRsZSwgdmVyc2lvbiB9ID0gcGFyc2VSZXNvdXJjZU1hbmlmZXN0KHJlc291cmNlKVxuICBjb25zdCBsb2FkaW5nID0gcmVzb3VyY2VTdGF0ZT8ubG9hZGluZ1Jlc291cmNlIHx8IHJlc291cmNlU3RhdGU/LmxvYWRpbmdDb250ZW50IHx8ICFyZWFkeUZvckZldGNoXG4gIGNvbnN0IGNvbnRlbnROb3RGb3VuZEVycm9yID0gIXJlc291cmNlU3RhdGU/LmJpYmxlVXNmbVxuICBjb25zdCBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvciA9ICFyZXNvdXJjZVN0YXRlPy5ib29rT2JqZWN0c1xuICBjb25zdCBtYW5pZmVzdE5vdEZvdW5kRXJyb3IgPSAhcmVzb3VyY2U/Lm1hbmlmZXN0XG4gIGNvbnN0IGludmFsaWRNYW5pZmVzdEVycm9yID0gIXRpdGxlIHx8ICF2ZXJzaW9uIHx8ICFsYW5ndWFnZUlkXG4gIGNvbnN0IGVycm9yID0gcmVhZHlGb3JGZXRjaCAmJiBpbml0aWFsaXplZCAmJiAhbG9hZGluZyAmJlxuICAgIChjb250ZW50Tm90Rm91bmRFcnJvciB8fCBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvciB8fCBtYW5pZmVzdE5vdEZvdW5kRXJyb3IgfHwgaW52YWxpZE1hbmlmZXN0RXJyb3IpXG4gIGNvbnN0IHJlc291cmNlU3RhdHVzID0ge1xuICAgIFtMT0FESU5HX1NUQVRFXTogbG9hZGluZyxcbiAgICBbQ09OVEVOVF9OT1RfRk9VTkRfRVJST1JdOiBjb250ZW50Tm90Rm91bmRFcnJvcixcbiAgICBbU0NSSVBUVVJFX05PVF9MT0FERURfRVJST1JdOiBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvcixcbiAgICBbTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUl06IG1hbmlmZXN0Tm90Rm91bmRFcnJvcixcbiAgICBbSU5WQUxJRF9NQU5JRkVTVF9FUlJPUl06IGludmFsaWRNYW5pZmVzdEVycm9yLFxuICAgIFtFUlJPUl9TVEFURV06IGVycm9yLFxuICAgIFtJTklUSUFMSVpFRF9TVEFURV06IGluaXRpYWxpemVkLFxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJlYWR5Rm9yRmV0Y2gpIHtcbiAgICAgIGlmIChpbml0aWFsaXplZCkge1xuICAgICAgICBzZXRTdGF0ZSh7IGludGlhbGl6ZWQ6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaW5pdGlhbGl6ZWQpIHtcbiAgICAgIGlmIChsb2FkaW5nKSB7IC8vIG9uY2UgZmlyc3QgbG9hZCBoYXMgYmVndW4sIHdlIGFyZSBpbml0aWFsaXplZFxuICAgICAgICBzZXRTdGF0ZSh7IGludGlhbGl6ZWQ6IHRydWUgfSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtsb2FkaW5nLCByZWFkeUZvckZldGNoXSlcblxuICAvKipcbiAgICogZ2V0IHZlcnNlcyBmb3IgcmVmXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWZTdHJcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRlbnRfXG4gICAqL1xuICBmdW5jdGlvbiBfZ2V0VmVyc2VzRm9yUmVmKHJlZlN0ciwgY29udGVudF8gPSBib29rT2JqZWN0cykge1xuICAgIGlmIChjb250ZW50Xykge1xuICAgICAgcmV0dXJuIGdldFZlcnNlc0ZvclJlZlN0cihyZWZTdHIsIGNvbnRlbnRfLCBsYW5ndWFnZUlkKVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIHVwZGF0ZSB2ZXJzZSBkYXRhIGZvciBjdXJyZW50IGJvb2tcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYXB0ZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSB2ZXJzZURhdGFcbiAgICovXG4gIGZ1bmN0aW9uIHVwZGF0ZVZlcnNlKGNoYXB0ZXIsIHZlcnNlLCB2ZXJzZURhdGEpIHtcbiAgICBpZiAoYm9va09iamVjdHMpIHtcbiAgICAgIGNvbnN0IGJvb2tPYmplY3RzXyA9IHsgLi4uYm9va09iamVjdHMgfSAvLyBzaGFsbG93IGNvcHlcblxuICAgICAgaWYgKGJvb2tPYmplY3RzXz8uY2hhcHRlcnMpIHtcbiAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzID0geyAuLi5ib29rT2JqZWN0c18uY2hhcHRlcnMgfSAvLyBzaGFsbG93IGNvcHkgY2hhcHRlcnNcblxuICAgICAgICBpZiAoYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdKSB7XG4gICAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdID0geyAuLi5ib29rT2JqZWN0c18uY2hhcHRlcnNbY2hhcHRlcl0gfSAvLyBzaGFsbG93IGNvcHkgdmVyc2VzXG4gICAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdW3ZlcnNlXSA9IHZlcnNlRGF0YVxuICAgICAgICAgIHNldFN0YXRlKHsgYm9va09iamVjdHM6IGJvb2tPYmplY3RzXyB9KVxuICAgICAgICAgIHJldHVybiBib29rT2JqZWN0c19cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIGdldCB0aGUgdmVyc2VzIGZvciBjdXJyZW50IHJlZmVyZW5jZSBvciByZWZlcmVuY2UgcmFuZ2VcbiAgICogQHBhcmFtIHtvYmplY3R9IF9ib29rT2JqZWN0c1xuICAgKi9cbiAgZnVuY3Rpb24gZmV0Y2hWZXJzZXNGb3JSZWYoX2Jvb2tPYmplY3RzID0gYm9va09iamVjdHMpIHtcbiAgICBsZXQgbmV3VmVyc2VzRm9yUmVmID0gW11cblxuICAgIGlmIChfYm9va09iamVjdHMpIHtcbiAgICAgIG5ld1ZlcnNlc0ZvclJlZiA9IGdldFZlcnNlc0ZvclJlZihyZWZlcmVuY2UsIF9ib29rT2JqZWN0cywgbGFuZ3VhZ2VJZClcbiAgICAgIHJldHVybiBuZXdWZXJzZXNGb3JSZWZcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIGZvcmNlIHJlbG9hZCBvZiByZXNvdXJjZVxuICAgKiBAcGFyYW0ge3N0cmluZ3x1bmRlZmluZWR9IGlnbm9yZVNoYSAtIG9wdGlvbmFsIHNoYSB0byBpZ25vcmVcbiAgICogQHBhcmFtIHtzdHJpbmd8dW5kZWZpbmVkfSByZWYgLSBvcHRpb25hbCByZWZlcmVuY2UgdG8gZmV0Y2hcbiAgICovXG4gIGZ1bmN0aW9uIHJlbG9hZFJlc291cmNlKGlnbm9yZVNoYSA9IG51bGwsIHJlZiA9IG51bGwpIHtcbiAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnJlbG9hZFJlc291cmNlKCkgaWdub3JlU2hhOiAke2lnbm9yZVNoYX1gIClcbiAgICBjb25zdCBfZmV0Y2hQYXJhbXMgPSB7IC4uLmZldGNoUGFyYW1zIH1cblxuICAgIGlmIChyZWYgJiYgZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluaykge1xuICAgICAgY29uc3Qge1xuICAgICAgICBvd25lcixcbiAgICAgICAgbGFuZ3VhZ2VJZCxcbiAgICAgICAgcmVzb3VyY2VJZCxcbiAgICAgICAgcmVmOiBfcmVmLFxuICAgICAgfSA9IHBhcnNlUmVzb3VyY2VMaW5rKGZldGNoUGFyYW1zLnJlc291cmNlTGluaylcblxuICAgICAgaWYgKHJlZiAhPT0gX3JlZikgeyAvLyBpZiByZWYgY2hhbmdlZCwgdXBkYXRlIHJlc291cmNlbGlua1xuICAgICAgICBjb25zdCBfcmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHtcbiAgICAgICAgICBvd25lcixcbiAgICAgICAgICBsYW5ndWFnZUlkLFxuICAgICAgICAgIHJlc291cmNlSWQsXG4gICAgICAgICAgcmVmLFxuICAgICAgICB9KVxuICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnJlbG9hZFJlc291cmNlKCkgb2xkIHJlZiBpcyBkaWZmZXJlbnQgJHtfcmVmfSwgc3dpdGNoaW5nIHRvIGxvYWQgcmVmOiAke3JlZn0sIG5ldyByZXNvdXJjZUxpbms6ICR7X3Jlc291cmNlTGlua31gIClcbiAgICAgICAgX2ZldGNoUGFyYW1zLnJlc291cmNlTGluayA9IF9yZXNvdXJjZUxpbmtcbiAgICAgIH1cbiAgICB9XG4gICAgZmV0Y2hCb29rKF9mZXRjaFBhcmFtcywgaWdub3JlU2hhKVxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBjdXJyZW50Qm9va1JlZiA9IGZldGNoUGFyYW1zPy5yZWZlcmVuY2U/LnByb2plY3RJZFxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGN1cnJlbnRCb29rUmVmKSB7XG4gICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGZldGNoZWQgYm9vayBjaGFuZ2VkIHRvICR7Y3VycmVudEJvb2tSZWZ9LCAke3Jlc291cmNlTGlua199YCwgZmV0Y2hQYXJhbXMgKVxuICAgICAgc2V0U3RhdGUoeyBib29rT2JqZWN0czogbnVsbCwgYmlibGVVc2ZtOiBudWxsIH0pXG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgfSwgW2N1cnJlbnRCb29rUmVmXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgYm9vayByZWYgY2hhbmdlZCB0byAke2Jvb2tJZH0sICR7cmVzb3VyY2VMaW5rX31gKVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgfSwgW2Jvb2tJZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBleHBlY3RlZEJvb2tJZCA9IGJvb2tJZCB8fCAnJ1xuICAgIGNvbnN0IGZldGNoZWRCb29rU2FtZSA9IGZldGNoZWRCb29rICYmIChmZXRjaGVkQm9vayA9PT0gZXhwZWN0ZWRCb29rSWQpXG4gICAgbGV0IF92ZXJzZXNGb3JSZWYgPSBbXVxuXG4gICAgaWYgKCFmZXRjaGVkQm9va1NhbWUpIHtcbiAgICAgIC8vIGlmIChleHBlY3RlZEJvb2tJZCAmJiBmZXRjaGVkQm9vaykge1xuICAgICAgLy8gICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGV4cGVjdGVkIGJvb2sgJHtleHBlY3RlZEJvb2tJZH0gYnV0IGZldGNoZWQgYm9vayB3YXMgJHtmZXRjaGVkQm9va30gLSBjbGVhcmluZ2ApXG4gICAgICAvLyB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IF9ib29rT2JqZWN0cyA9IGZldGNoZWRCb29rU2FtZSA/IGJvb2tPYmplY3RzIDogbnVsbFxuICAgICAgX3ZlcnNlc0ZvclJlZiA9IGZldGNoVmVyc2VzRm9yUmVmKF9ib29rT2JqZWN0cylcbiAgICAgIC8vIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgX2Jvb2tPYmplY3RzIGlzICR7ISFfYm9va09iamVjdHN9IGFuZCBib29rcyBhcmUgdGhlIHNhbWUgJHtmZXRjaGVkQm9va31gLCB7IGNvbnRlbnQsIGZldGNoUGFyYW1zIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF92ZXJzZXNGb3JSZWYsIHZlcnNlc0ZvclJlZikpIHtcbiAgICAgIHNldFN0YXRlKHsgdmVyc2VzRm9yUmVmOiBfdmVyc2VzRm9yUmVmIH0pXG4gICAgfVxuICB9LCBbcmVmZXJlbmNlXSlcblxuICByZXR1cm4ge1xuICAgIGJpYmxlVXNmbSxcbiAgICBib29rT2JqZWN0cyxcbiAgICBnZXRWZXJzZXNGb3JSZWY6IF9nZXRWZXJzZXNGb3JSZWYsXG4gICAgcmVmZXJlbmNlOiBmZXRjaFBhcmFtcz8ucmVmZXJlbmNlLFxuICAgIHJlbG9hZFJlc291cmNlLFxuICAgIHJlc291cmNlTGluazogZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluayxcbiAgICByZXNvdXJjZVN0YXRlLCAvLyBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgbGF0ZXN0IGZldGNoZWQgcmVzb3VyY2VcbiAgICByZXNvdXJjZVN0YXR1cywgLy8gc3RhdHVzIGZsYWdzIGZvciBmZXRjaGVkIHJlc291cmNlXG4gICAgdGl0bGUsXG4gICAgdXBkYXRlVmVyc2UsXG4gICAgdmVyc2lvbixcbiAgICB2ZXJzZXNGb3JSZWYsXG4gIH1cbn1cbiJdfQ==
675
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VTY3JpcHR1cmUudHN4Il0sIm5hbWVzIjpbInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiY29yZSIsInVzZm1qcyIsIkNPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SIiwiRVJST1JfU1RBVEUiLCJJTklUSUFMSVpFRF9TVEFURSIsIklOVkFMSURfTUFOSUZFU1RfRVJST1IiLCJMT0FESU5HX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SIiwidXNlRGVlcENvbXBhcmVFZmZlY3QiLCJnZXRWZXJzZXMiLCJpc0VxdWFsIiwiZGVsYXkiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lIiwiZ2V0UmVzb3VyY2VMaW5rIiwicGFyc2VSZXNvdXJjZUxpbmsiLCJTZXJ2ZXJDb25maWciLCJTY3JpcHR1cmVSZXNvdXJjZSIsIlNjcmlwdHVyZVJlZmVyZW5jZSIsInBhcnNlUmVzb3VyY2VNYW5pZmVzdCIsImdldEJyYW5jaE5hbWUiLCJyZXNvdXJjZUxpbmsiLCJicmFuY2giLCJwYXJ0cyIsInNwbGl0IiwibGVuZ3RoIiwiX3BhcnRzIiwiZ2V0VmVyc2VzRm9yUmVmU3RyIiwicmVmU3RyIiwiYm9va09iamVjdHMiLCJsYW5ndWFnZUlkIiwidmVyc2VzIiwiY2hhcHRlcnMiLCJtYXAiLCJ2ZXJzZSIsInZlcnNlRGF0YSIsInZlcnNlT2JqZWN0cyIsInZlcnNlT2JqZWN0c18iLCJvY2N1cnJlbmNlSW5qZWN0VmVyc2VPYmplY3RzIiwiZ2V0VmVyc2VzRm9yUmVmIiwicmVmZXJlbmNlIiwiY2hhcHRlciIsInVzZVNjcmlwdHVyZSIsImNvbmZpZyIsInJlYWR5Rm9yRmV0Y2giLCJyZXNvdXJjZV8iLCJyZXNvdXJjZSIsInJlc291cmNlTGlua18iLCJ3aG9sZUJvb2siLCJiaWJsZVVzZm0iLCJmZXRjaENvdW50IiwiZmV0Y2hlZCIsImZldGNoZWRCb29rIiwiZmV0Y2hQYXJhbXMiLCJpZ25vcmVTaGEiLCJpbml0aWFsaXplZCIsInJlc291cmNlU3RhdGUiLCJjb250ZW50IiwiZmV0Y2hSZXNwb25zZSIsImZldGNoZWRSZXNvdXJjZXMiLCJsb2FkaW5nUmVzb3VyY2UiLCJsb2FkaW5nQ29udGVudCIsInNoYSIsInVybCIsInZlcnNlc0ZvclJlZiIsInN0YXRlIiwic2V0U3RhdGVfIiwib3duZXIiLCJyZWYiLCJib29rSWQiLCJwcm9qZWN0SWQiLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiaW5pdGlhdGVCb29rRmV0Y2giLCJjb25zb2xlIiwibG9nIiwicmVmXyIsInJlc291cmNlSWQiLCJib29rUmVmIiwibmV3RmV0Y2hQYXJhbXMiLCJmZXRjaEJvb2siLCJmZXRjaExpbmsiLCJmZXRjaGVkU2hhTWF0Y2hlc0lnbm9yZVNoYSIsIl9mZXRjaENvdW50IiwicmVzb3VyY2VGcm9tUmVzb3VyY2VMaW5rIiwiX3Jlc291cmNlIiwibWFuaWZlc3QiLCJwcm9qZWN0IiwiZmlsZSIsImVycm9yTXNnIiwid2FybiIsInJlc3BvbnNlIiwiZ2V0UmVzcG9uc2VEYXRhIiwidG9KU09OIiwiZGF0YSIsIm5hbWUiLCJlcnJvciIsInZhbGlkYXRlUmVzcG9uc2UiLCJpc1NhbWVCb29rIiwiZXhwZWN0ZWRCb29rSWQiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiZmV0Y2hlZEJyYW5jaCIsImZldGNoaW5nQnJhbmNoIiwiYmlibGVVc2ZtXyIsImZldGNoVmVyc2VzRm9yUmVmIiwidGhlbiIsInRpdGxlIiwidmVyc2lvbiIsImxvYWRpbmciLCJjb250ZW50Tm90Rm91bmRFcnJvciIsInNjcmlwdHVyZU5vdExvYWRlZEVycm9yIiwibWFuaWZlc3ROb3RGb3VuZEVycm9yIiwiaW52YWxpZE1hbmlmZXN0RXJyb3IiLCJyZXNvdXJjZVN0YXR1cyIsImludGlhbGl6ZWQiLCJfZ2V0VmVyc2VzRm9yUmVmIiwiY29udGVudF8iLCJ1cGRhdGVWZXJzZSIsImJvb2tPYmplY3RzXyIsIl9ib29rT2JqZWN0cyIsIm5ld1ZlcnNlc0ZvclJlZiIsInJlbG9hZFJlc291cmNlIiwiX2ZldGNoUGFyYW1zIiwiX3JlZiIsIl9yZXNvdXJjZUxpbmsiLCJjdXJyZW50Qm9va1JlZiIsImZldGNoZWRCb29rU2FtZSIsIl92ZXJzZXNGb3JSZWYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBLFNBQ0VBLFNBREYsRUFFRUMsUUFGRixRQUdPLE9BSFA7QUFJQSxTQUFTQyxJQUFULFFBQXFCLHlCQUFyQjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIsU0FBbkI7QUFDQSxTQUNFQyx1QkFERixFQUVFQyxXQUZGLEVBR0VDLGlCQUhGLEVBSUVDLHNCQUpGLEVBS0VDLGFBTEYsRUFNRUMseUJBTkYsRUFPRUMsMEJBUEYsUUFRTyx1QkFSUDtBQVNBLE9BQU9DLG9CQUFQLE1BQWlDLHlCQUFqQztBQUNBLFNBQVNDLFNBQVQsUUFBMEIsdUJBQTFCO0FBQ0EsT0FBTyxLQUFLQyxPQUFaLE1BQXlCLFlBQXpCO0FBQ0EsU0FBU0MsS0FBVCxRQUFzQixVQUF0QjtBQUNBLFNBQ0VDLG1CQURGLEVBRUVDLDJCQUZGLEVBR0VDLGVBSEYsRUFJRUMsaUJBSkYsUUFLTyw0QkFMUDtBQU1BLFNBQ0VDLFlBREYsRUFFRUMsaUJBRkYsRUFHRUMsa0JBSEYsUUFJTyxVQUpQO0FBS0EsU0FBU0MscUJBQVQsUUFBc0MseUJBQXRDOztBQWlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNDLGFBQVQsQ0FBdUJDLFlBQXZCLEVBQTZDO0FBQzNDLE1BQUlDLE1BQU0sR0FBRyxJQUFiO0FBQ0FELEVBQUFBLFlBQVksR0FBR0EsWUFBWSxJQUFJLEVBQS9CO0FBQ0EsTUFBTUUsS0FBSyxHQUFHRixZQUFZLENBQUNHLEtBQWIsQ0FBbUIsT0FBbkIsQ0FBZDs7QUFFQSxNQUFJRCxLQUFLLENBQUNFLE1BQU4sR0FBZSxDQUFuQixFQUFzQjtBQUFFO0FBQ3RCSCxJQUFB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QUFhLEdBQUcsRUFBcEI7O0FBRUEsUUFBSSxDQUFDRCxlQUFMLEVBQXNCLENBQ3BCO0FBQ0E7QUFDQTtBQUNELEtBSkQsTUFJTztBQUNMLFVBQU1QLFlBQVksR0FBR08sZUFBZSxHQUFHbkcsV0FBSCxHQUFpQixJQUFyRDs7QUFDQW9HLE1BQUFBLGFBQWEsR0FBR3ZCLGlCQUFpQixDQUFDZSxZQUFELENBQWpDLENBRkssQ0FHTDtBQUNEOztBQUVELFFBQUksQ0FBQy9HLE9BQU8sQ0FBQ3VILGFBQUQsRUFBZ0JqRSxZQUFoQixDQUFaLEVBQTJDO0FBQ3pDTyxNQUFBQSxRQUFRLENBQUM7QUFBRVAsUUFBQUEsWUFBWSxFQUFFaUU7QUFBaEIsT0FBRCxDQUFSO0FBQ0Q7QUFDRixHQWxCUSxFQWtCTixDQUFDekYsU0FBRCxDQWxCTSxDQUFUO0FBb0JBLFNBQU87QUFDTFMsSUFBQUEsU0FBUyxFQUFUQSxTQURLO0FBRUxwQixJQUFBQSxXQUFXLEVBQVhBLFdBRks7QUFHTFUsSUFBQUEsZUFBZSxFQUFFOEUsZ0JBSFo7QUFJTDdFLElBQUFBLFNBQVMsRUFBRWEsV0FBRixhQUFFQSxXQUFGLHVCQUFFQSxXQUFXLENBQUViLFNBSm5CO0FBS0xtRixJQUFBQSxjQUFjLEVBQWRBLGNBTEs7QUFNTHRHLElBQUFBLFlBQVksRUFBRWdDLFdBQUYsYUFBRUEsV0FBRix1QkFBRUEsV0FBVyxDQUFFaEMsWUFOdEI7QUFPTG1DLElBQUFBLGFBQWEsRUFBYkEsYUFQSztBQU9VO0FBQ2YyRCxJQUFBQSxjQUFjLEVBQWRBLGNBUks7QUFRVztBQUNoQlAsSUFBQUEsS0FBSyxFQUFMQSxLQVRLO0FBVUxXLElBQUFBLFdBQVcsRUFBWEEsV0FWSztBQVdMVixJQUFBQSxPQUFPLEVBQVBBLE9BWEs7QUFZTDdDLElBQUFBLFlBQVksRUFBWkE7QUFaSyxHQUFQO0FBY0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtaWdub3JlXG5pbXBvcnQge1xuICB1c2VFZmZlY3QsXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNvcmUgfSBmcm9tICdzY3JpcHR1cmUtcmVzb3VyY2VzLXJjbCdcbmltcG9ydCB1c2ZtanMgZnJvbSAndXNmbS1qcydcbmltcG9ydCB7XG4gIENPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SLFxuICBFUlJPUl9TVEFURSxcbiAgSU5JVElBTElaRURfU1RBVEUsXG4gIElOVkFMSURfTUFOSUZFU1RfRVJST1IsXG4gIExPQURJTkdfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SLFxufSBmcm9tICd0cmFuc2xhdGlvbi1oZWxwcy1yY2wnXG5pbXBvcnQgdXNlRGVlcENvbXBhcmVFZmZlY3QgZnJvbSAndXNlLWRlZXAtY29tcGFyZS1lZmZlY3QnXG5pbXBvcnQgeyBnZXRWZXJzZXMgfSBmcm9tICdiaWJsZS1yZWZlcmVuY2UtcmFuZ2UnXG5pbXBvcnQgKiBhcyBpc0VxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHtcbiAgY2xlYW51cFZlcnNlT2JqZWN0cyxcbiAgZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lLFxuICBnZXRSZXNvdXJjZUxpbmssXG4gIHBhcnNlUmVzb3VyY2VMaW5rLFxufSBmcm9tICcuLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7XG4gIFNlcnZlckNvbmZpZyxcbiAgU2NyaXB0dXJlUmVzb3VyY2UsXG4gIFNjcmlwdHVyZVJlZmVyZW5jZSxcbn0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBwYXJzZVJlc291cmNlTWFuaWZlc3QgfSBmcm9tICcuL3BhcnNlUmVzb3VyY2VNYW5pZmVzdCdcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgLyoqIHJlZmVyZW5jZSBmb3Igc2NyaXB0dXJlICoqL1xuICByZWZlcmVuY2U6IFNjcmlwdHVyZVJlZmVyZW5jZTtcbiAgLyoqIHdoZXJlIHRvIGdldCBkYXRhICoqL1xuICBjb25maWc6IFNlcnZlckNvbmZpZztcbiAgLyoqIG9wdGlvbmFsIGRpcmVjdCBwYXRoIHRvIGJpYmxlIHJlc291cmNlLCBpbiBmb3JtYXQgJHtvd25lcn0vJHtsYW5ndWFnZUlkfS8ke3Byb2plY3RJZH0vJHticmFuY2h9ICoqL1xuICByZXNvdXJjZUxpbms6IHN0cmluZ3x1bmRlZmluZWQ7XG4gIC8qKiBvcHRpb25hbCByZXNvdXJjZSBvYmplY3QgdG8gdXNlIHRvIGJ1aWxkIHJlc291cmNlTGluayAqKi9cbiAgcmVzb3VyY2U6IFNjcmlwdHVyZVJlc291cmNlfHVuZGVmaW5lZDtcbiAgLyoqIGlmIHRydWUgdGhlbiBmZXRjaCB0aGUgZW50aXJlIGJvb2sgKi9cbiAgd2hvbGVCb29rOiBib29sZWFuO1xuICAvKiogaWYgdHJ1ZSB0aGVuIHNldHRpbmdzIGFyZSByZWFkeSBmb3IgZmV0Y2hpbmcgZGF0YSAqL1xuICByZWFkeUZvckZldGNoOiBib29sZWFuO1xufVxuXG4vKipcbiAqIGV4dHJhY3QgYnJhbmNoIGZyb20gcmVzb3VyY2UgbGlua1xuICogQHBhcmFtIHJlc291cmNlTGlua1xuICovXG5mdW5jdGlvbiBnZXRCcmFuY2hOYW1lKHJlc291cmNlTGluazogc3RyaW5nKSB7XG4gIGxldCBicmFuY2ggPSBudWxsXG4gIHJlc291cmNlTGluayA9IHJlc291cmNlTGluayB8fCAnJ1xuICBjb25zdCBwYXJ0cyA9IHJlc291cmNlTGluay5zcGxpdCgnP3JlZj0nKVxuXG4gIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7IC8vIGlmIHJlZiBwYXJhbWV0ZXIgZm91bmQsIGdldCBicmFuY2ggbmFtZSBhZnRlclxuICAgIGJyYW5jaCA9IHBhcnRzPy5bMV1cbiAgfSBlbHNlIHsgLy8gZmFsbCBiYWNrIHRvIHVzaW5nIHVzZVJzcmMgZm9ybWF0IHN1Y2ggYXMgXCJ1bmZvbGRpbmdXb3JkL2VuL3VzdC9tYXN0ZXJcIlxuICAgIGNvbnN0IF9wYXJ0cyA9IHJlc291cmNlTGluay5zcGxpdCgnLycpXG4gICAgYnJhbmNoID0gX3BhcnRzPy5bM11cbiAgfVxuICByZXR1cm4gYnJhbmNoXG59XG5cbi8qKlxuICogZ2V0IHRoZSB2ZXJzZSBvYmplY3RzIGZvciB0aGUgcmVmZXJlbmNlIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IHJlZlN0ciAtIGluIGZvcm1hdCA8Y2hhcHRlcj46PHZlcnNlPlxuICogQHBhcmFtIHtvYmplY3R9IGJvb2tPYmplY3RzIC0gcGFyc2VkIHVzZm0gZm9yIGJvb2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBsYW5ndWFnZUlkXG4gKiBAcmV0dXJuIHthcnJheXxudWxsfSAtIG9mIHZlcnNlT2JqZWN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmVyc2VzRm9yUmVmU3RyKHJlZlN0ciwgYm9va09iamVjdHMsIGxhbmd1YWdlSWQpIHtcbiAgaWYgKGJvb2tPYmplY3RzKSB7XG4gICAgbGV0IHZlcnNlcyA9IGdldFZlcnNlcyhib29rT2JqZWN0cy5jaGFwdGVycywgcmVmU3RyKVxuXG4gICAgaWYgKGxhbmd1YWdlSWQgPT09ICdlbC14LWtvaW5lJyB8fCBsYW5ndWFnZUlkID09PSAnaGJvJykge1xuICAgICAgdmVyc2VzID0gdmVyc2VzLm1hcCh2ZXJzZSA9PiB7XG4gICAgICAgIGlmICggdmVyc2U/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgbGV0IHZlcnNlT2JqZWN0c18gPSBjb3JlLm9jY3VycmVuY2VJbmplY3RWZXJzZU9iamVjdHMoIHZlcnNlLnZlcnNlRGF0YS52ZXJzZU9iamVjdHMpXG4gICAgICAgICAgdmVyc2VPYmplY3RzXyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzXylcbiAgICAgICAgICB2ZXJzZS52ZXJzZURhdGEudmVyc2VPYmplY3RzID0gdmVyc2VPYmplY3RzX1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2ZXJzZVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyc2VzXG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuLyoqXG4gKiBnZXQgdGhlIHZlcnNlIG9iamVjdHMgZm9yIHRoZSByZWZlcmVuY2Ugb2JqZWN0XG4gKiBAcGFyYW0ge29iamVjdH0gcmVmZXJlbmNlXG4gKiBAcGFyYW0ge29iamVjdH0gYm9va09iamVjdHMgLSBwYXJzZWQgdXNmbSBmb3IgYm9va1xuICogQHBhcmFtIHtzdHJpbmd9IGxhbmd1YWdlSWRcbiAqIEByZXR1cm4ge2FycmF5fG51bGx9IC0gb2YgdmVyc2VPYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWZXJzZXNGb3JSZWYocmVmZXJlbmNlLCBib29rT2JqZWN0cywgbGFuZ3VhZ2VJZCkge1xuICBjb25zdCByZWZTdHIgPSBgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YFxuICByZXR1cm4gZ2V0VmVyc2VzRm9yUmVmU3RyKHJlZlN0ciwgYm9va09iamVjdHMsIGxhbmd1YWdlSWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTY3JpcHR1cmUoeyAvLyBob29rIGZvciBmZXRjaGluZyBzY3JpcHR1cmVcbiAgY29uZmlnLFxuICByZWFkeUZvckZldGNoLFxuICByZWZlcmVuY2UsXG4gIHJlc291cmNlOiByZXNvdXJjZV8sXG4gIHJlc291cmNlTGluazogcmVzb3VyY2VMaW5rXyxcbiAgd2hvbGVCb29rID0gZmFsc2UsXG59IDogUHJvcHMpIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gdXNlU3RhdGUoe1xuICAgIGJpYmxlVXNmbTogbnVsbCxcbiAgICBib29rT2JqZWN0czogbnVsbCxcbiAgICBmZXRjaENvdW50OiAwLFxuICAgIGZldGNoZWQ6IGZhbHNlLFxuICAgIGZldGNoZWRCb29rOiAnJyxcbiAgICBmZXRjaFBhcmFtczoge1xuICAgICAgY29uZmlnOiB7fSxcbiAgICAgIHJlZmVyZW5jZToge30sXG4gICAgICByZXNvdXJjZUxpbms6ICcnLFxuICAgIH0sXG4gICAgaWdub3JlU2hhOiBudWxsLFxuICAgIGluaXRpYWxpemVkOiBmYWxzZSxcbiAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICBib29rT2JqZWN0czogbnVsbCxcbiAgICAgIGJpYmxlVXNmbTogbnVsbCxcbiAgICAgIGNvbnRlbnQ6IG51bGwsXG4gICAgICBmZXRjaFJlc3BvbnNlOiBudWxsLFxuICAgICAgZmV0Y2hlZFJlc291cmNlczogbnVsbCxcbiAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICBsb2FkaW5nQ29udGVudDogZmFsc2UsXG4gICAgICByZXNvdXJjZTogbnVsbCxcbiAgICAgIHNoYTogbnVsbCxcbiAgICAgIHVybDogbnVsbCxcbiAgICB9LFxuICAgIHZlcnNlc0ZvclJlZjogW10sXG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgYnJhbmNoID0gJ21hc3RlcicsXG4gICAgcmVmID0gbnVsbCxcbiAgfSA9IHJlc291cmNlXyB8fCB7fVxuXG4gIGNvbnN0IHsgcHJvamVjdElkOiBib29rSWR9ID0gcmVmZXJlbmNlIHx8IHt9XG5cbiAgY29uc3Qge1xuICAgIGJpYmxlVXNmbSxcbiAgICBib29rT2JqZWN0cyxcbiAgICBmZXRjaENvdW50LFxuICAgIGZldGNoZWQsXG4gICAgZmV0Y2hlZEJvb2ssXG4gICAgZmV0Y2hQYXJhbXMsXG4gICAgaWdub3JlU2hhLFxuICAgIGluaXRpYWxpemVkLFxuICAgIHJlc291cmNlU3RhdGUsXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9ID0gc3RhdGVcbiAgY29uc3QgZmV0Y2hlZFJlc291cmNlcyA9IHJlc291cmNlU3RhdGU/LmZldGNoZWRSZXNvdXJjZXNcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlYWR5Rm9yRmV0Y2gpIHtcbiAgICAgIGluaXRpYXRlQm9va0ZldGNoKClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbml0aWF0ZUJvb2tGZXRjaCgpIHtcbiAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSByZWFkeUZvckZldGNoIHRydWUsIGluaXRpYWxpemluZ2ApXG4gICAgICBsZXQgcmVzb3VyY2VMaW5rID0gcmVhZHlGb3JGZXRjaCAmJiByZXNvdXJjZUxpbmtfXG5cbiAgICAgIGlmICghcmVzb3VyY2VMaW5rXyAmJiByZXNvdXJjZV8pIHtcbiAgICAgICAgY29uc3QgcmVmXyA9IHJlZiB8fCBicmFuY2hcblxuICAgICAgICByZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoe1xuICAgICAgICAgIG93bmVyLFxuICAgICAgICAgIGxhbmd1YWdlSWQsXG4gICAgICAgICAgcmVzb3VyY2VJZDogYm9va0lkLFxuICAgICAgICAgIHJlZjogcmVmXyxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgYm9va1JlZiA9IHsgLi4ucmVmZXJlbmNlIH1cblxuICAgICAgaWYgKHdob2xlQm9vaykge1xuICAgICAgICBkZWxldGUgYm9va1JlZi5jaGFwdGVyIC8vIHJlbW92ZSB0aGUgY2hhcHRlciBhbmQgdmVyc2Ugc28gdGhlIHdob2xlIGJvb2sgaXMgZmV0Y2hlZFxuICAgICAgICBkZWxldGUgYm9va1JlZi52ZXJzZVxuICAgICAgfVxuXG4gICAgICBpZiAocmVzb3VyY2VMaW5rICE9PSBmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSBmb3IgJHtyZXNvdXJjZV8/LnByb2plY3RJZH0gcmVzb3VyY2VMaW5rIGlzIG5vdyAke3Jlc291cmNlTGlua30gYW5kIHJlc291cmNlTGlua189JHtyZXNvdXJjZUxpbmtffWApXG4gICAgICB9IGVsc2UgaWYgKGJvb2tSZWYgIT09IGZldGNoUGFyYW1zPy5yZWZlcmVuY2UpIHtcbiAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIGJvb2sgY2hhbmdlZCB0byAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7cmVzb3VyY2VMaW5rfWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld0ZldGNoUGFyYW1zID0ge1xuICAgICAgICBjb25maWcsXG4gICAgICAgIHJlZmVyZW5jZTogYm9va1JlZixcbiAgICAgICAgcmVzb3VyY2VMaW5rLFxuICAgICAgfVxuXG4gICAgICBpZiAoIWlzRXF1YWwobmV3RmV0Y2hQYXJhbXMsIGZldGNoUGFyYW1zKSkge1xuICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgZmV0Y2hQYXJhbXM6IG5ld0ZldGNoUGFyYW1zLFxuICAgICAgICAgIGZldGNoZWQ6IGZhbHNlLFxuICAgICAgICAgIGluaXRpYWxpemVkOiB0cnVlLFxuICAgICAgICB9KVxuXG4gICAgICAgIGZldGNoQm9vayhuZXdGZXRjaFBhcmFtcylcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICByZWFkeUZvckZldGNoLFxuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgYm9va0lkLFxuICAgIGJyYW5jaCxcbiAgICByZWYsXG4gIF0pXG5cbiAgLyoqXG4gICAqIGRvIGEgZmV0Y2ggb2YgbWFuaWZlc3QgYW5kIGJvb2sgb2YgdGhlIGJpYmxlIHNwZWNpZmllZCBpbiBmZXRjaFBhcmFtc1xuICAgKiBAcGFyYW0ge29iamVjdH0gZmV0Y2hQYXJhbXNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlnbm9yZVNoYSAtIG9wdGlvbmFsIHByZXZpb3VzIHNoYSAtIGlnbm9yZSByZXNwb25zZXMgdGhhdCBjYW1lIGJhY2sgZm9yIHRoaXMgcHJldmlvdXMgYm9vayBjb21taXRcbiAgICovXG4gIGFzeW5jIGZ1bmN0aW9uIGZldGNoQm9vayhmZXRjaFBhcmFtcywgaWdub3JlU2hhID0gbnVsbCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmZXRjaExpbmsgPSBgJHtmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rfS8ke2ZldGNoUGFyYW1zPy5yZWZlcmVuY2U/LnByb2plY3RJZH1gXG5cbiAgICAgIGlmIChpZ25vcmVTaGEpIHtcbiAgICAgICAgY29uc3QgZmV0Y2hlZFNoYU1hdGNoZXNJZ25vcmVTaGEgPSBpZ25vcmVTaGEgPT09IHJlc291cmNlU3RhdGU/LnNoYSAvLyB3ZSB3aWxsIHJlbG9hZCBpZiBpZ25vcmVTaGEgZ2l2ZW4gYW5kIGl0IG1hdGNoZXMgY3VycmVudCBzaGFcbiAgICAgICAgaWYgKChmZXRjaExpbmsgPT09IHJlc291cmNlU3RhdGU/LnJlc291cmNlPy5yZXNvdXJjZUxpbmspICYmICFmZXRjaGVkU2hhTWF0Y2hlc0lnbm9yZVNoYSkgeyAvLyBzZWUgaWYgd2UgYWxyZWFkeSBmZXRjaGVkIHRoaXNcbiAgICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLmZldGNoQm9vaygpIC0gQWxyZWFkeSBmZXRjaGluZyByZXNvdXJjZUxpbmsgJHtyZXNvdXJjZVN0YXRlPy5yZXNvdXJjZT8ucmVzb3VyY2VMaW5rfSBhbmQgaWdub3JlU2hhPSR7aWdub3JlU2hhfWAsIGZldGNoUGFyYW1zKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IF9mZXRjaENvdW50ID0gZmV0Y2hDb3VudCArIDFcbiAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUuZmV0Y2hCb29rKCkgLSBGRVRDSElORyBiaWJsZSAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7ZmV0Y2hQYXJhbXM/LnJlc291cmNlTGlua30gYW5kIGlnbm9yZVNoYT0ke2lnbm9yZVNoYX1gLCBmZXRjaFBhcmFtcylcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgZmV0Y2hDb3VudDogX2ZldGNoQ291bnQsXG4gICAgICAgIGZldGNoZWQ6IGZhbHNlLFxuICAgICAgICBpZ25vcmVTaGEsXG4gICAgICAgIHJlc291cmNlU3RhdGU6IHsgbG9hZGluZ1Jlc291cmNlOiB0cnVlIH0sXG4gICAgICB9KVxuXG4gICAgICAvLyBmZXRjaCBtYW5pZmVzdCBkYXRhXG4gICAgICBhd2FpdCBkZWxheSgxMDApXG4gICAgICBjb25zdCBfcmVzb3VyY2UgPSBhd2FpdCBjb3JlLnJlc291cmNlRnJvbVJlc291cmNlTGluayhmZXRjaFBhcmFtcylcblxuICAgICAgaWYgKCFfcmVzb3VyY2U/Lm1hbmlmZXN0IHx8ICFfcmVzb3VyY2U/LnByb2plY3Q/LmZpbGUpIHtcbiAgICAgICAgY29uc3QgZXJyb3JNc2cgPSBfcmVzb3VyY2U/Lm1hbmlmZXN0ID8gJ3BhcnNpbmcgcmVzb3VyY2UgbWFuaWZlc3QnIDogJ2xvYWRpbmcgcmVzb3VyY2UgbWFuaWZlc3QnXG4gICAgICAgIGNvbnNvbGUud2FybihgdXNlU2NyaXB0dXJlLmZldGNoQm9vaygpIC0gZXJyb3IgJHtlcnJvck1zZ31gLCBmZXRjaFBhcmFtcyApXG4gICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgICBsb2FkaW5nUmVzb3VyY2U6IGZhbHNlLFxuICAgICAgICAgICAgcmVzb3VyY2U6IF9yZXNvdXJjZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIExPQURFRCBiaWJsZSBtYW5pZmVzdCwgZmV0Y2hpbmcgYm9vayAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7ZmV0Y2hQYXJhbXM/LnJlc291cmNlTGlua30gYW5kIHJlc291cmNlTGlua189JHtmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rX31gLCBmZXRjaFBhcmFtcylcbiAgICAgIGF3YWl0IGRlbGF5KDEwMClcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgX3Jlc291cmNlPy5wcm9qZWN0Py5maWxlKClcbiAgICAgIC8vIHBhcnNlIGJvb2sgdXNmbVxuICAgICAgY29uc3QgYmlibGVVc2ZtID0gcmVzcG9uc2UgJiYgY29yZS5nZXRSZXNwb25zZURhdGEocmVzcG9uc2UpXG4gICAgICBhd2FpdCBkZWxheSgxMDApXG4gICAgICBjb25zdCBib29rT2JqZWN0cyA9IGJpYmxlVXNmbSAmJiB1c2ZtanMudG9KU09OKGJpYmxlVXNmbSkgLy8gY29udmVydCB0byBiaWJsZSBvYmplY3RzXG5cbiAgICAgIGlmICghYm9va09iamVjdHMpIHtcbiAgICAgICAgY29uc3QgZXJyb3JNc2cgPSBiaWJsZVVzZm0gPyAnZmV0Y2hpbmcgYm9vayBvZiB0aGUgYmlibGUnIDogJ3BhcnNpbmcgYm9vayBvZiB0aGUgYmlibGUnXG4gICAgICAgIGNvbnNvbGUud2FybihgdXNlU2NyaXB0dXJlLmZldGNoQm9vaygpIC0gZXJyb3IgJHtlcnJvck1zZ31gLCBmZXRjaFBhcmFtcyApXG4gICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgICBsb2FkaW5nUmVzb3VyY2U6IGZhbHNlLFxuICAgICAgICAgICAgcmVzb3VyY2U6IF9yZXNvdXJjZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBuYW1lLCBzaGEsIHVybCB9ID0gcmVzcG9uc2U/LmRhdGEgfHwge31cblxuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIExPQURFRCBiaWJsZSBib29rICR7cmVzb3VyY2VfPy5wcm9qZWN0SWR9IHJlc291cmNlTGluayBpcyBub3cgJHtmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rfSBhbmQgcmVzb3VyY2VMaW5rXz0ke2ZldGNoUGFyYW1zPy5yZXNvdXJjZUxpbmtffWAsIGZldGNoUGFyYW1zKVxuICAgICAgc2V0U3RhdGUoXG4gICAgICAgIHtcbiAgICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgICBsb2FkaW5nUmVzb3VyY2U6IGZhbHNlLFxuICAgICAgICAgICAgZmV0Y2hlZFJlc291cmNlczoge1xuICAgICAgICAgICAgICAuLi5fcmVzb3VyY2UsXG4gICAgICAgICAgICAgIGJpYmxlVXNmbSxcbiAgICAgICAgICAgICAgYm9va09iamVjdHMsXG4gICAgICAgICAgICAgIGZldGNoQ291bnQ6IF9mZXRjaENvdW50LFxuICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICByZWZlcmVuY2U6IGZldGNoUGFyYW1zPy5yZWZlcmVuY2UsXG4gICAgICAgICAgICAgIHNoYSxcbiAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIGhhcmQgZXJyb3IgbG9hZGluZyByZXNvdXJjZWAsIGZldGNoUGFyYW1zLCBlIClcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgcmVzb3VyY2VTdGF0ZToge1xuICAgICAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICAgICAgcmVzb3VyY2U6IG51bGwsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIGZvciAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZWFkeUZvckZldGNoIGlzIG5vdyAke3JlYWR5Rm9yRmV0Y2h9YClcbiAgfSwgW3JlYWR5Rm9yRmV0Y2hdKVxuXG4gIC8qKlxuICAgKiBtYWtlIHN1cmUgbGFzdCBmZXRjaCByZXNwb25zZSBpcyBmb3IgY3VycmVudCBib29rL2JyYW5jaFxuICAgKi9cbiAgZnVuY3Rpb24gdmFsaWRhdGVSZXNwb25zZSgpIHtcbiAgICBsZXQgaXNTYW1lQm9vayA9IGZhbHNlXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGV4cGVjdGVkQm9va0lkID0gYm9va0lkIHx8ICd6enonXG4gICAgY29uc3QgZmV0Y2hlZEJvb2sgPSBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUoZmV0Y2hlZFJlc291cmNlcz8ubmFtZSlcbiAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnZhbGlkYXRlUmVzcG9uc2UoKSAtIEN1cnJlbnQgYm9va0lkIGlzICR7Ym9va0lkfSBhbmQgc2VlaW5nICR7ZmV0Y2hlZEJvb2t9IGluIFVTRk1gKVxuICAgIGlzU2FtZUJvb2sgPSBmZXRjaGVkQm9vaz8udG9Mb3dlckNhc2UoKT8uaW5jbHVkZXMoYm9va0lkKVxuXG4gICAgY29uc3Qgc2hhID0gZmV0Y2hlZFJlc291cmNlcz8uc2hhIHx8IG51bGxcbiAgICBjb25zdCB1cmwgPSBmZXRjaGVkUmVzb3VyY2VzPy51cmwgfHwgbnVsbFxuXG4gICAgaWYgKGlzU2FtZUJvb2spIHsgLy8gYWxzbyBtYWtlIHN1cmUgaXQgaXMgdGhlIHNhbWUgYnJhbmNoXG4gICAgICBjb25zdCBmZXRjaGVkQnJhbmNoID0gZ2V0QnJhbmNoTmFtZSh1cmwpXG4gICAgICBjb25zdCBmZXRjaGluZ0JyYW5jaCA9IGdldEJyYW5jaE5hbWUoZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluaylcblxuICAgICAgaWYgKGZldGNoZWRCcmFuY2ggIT09IGZldGNoaW5nQnJhbmNoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUudmFsaWRhdGVSZXNwb25zZSgpIGludmFsaWQgYnJhbmNoLCBleHBlY3RlZCBicmFuY2ggaXMgJHtmZXRjaGluZ0JyYW5jaH0sIGJ1dCBmZXRjaGVkQnJhbmNoIGlzICR7ZmV0Y2hlZEJyYW5jaH1gLCB7IHNoYSwgdXJsIH0pXG4gICAgICAgIGlzU2FtZUJvb2sgPSBmYWxzZVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnZhbGlkYXRlUmVzcG9uc2UoKSAtICBpbnZhbGlkIGJvb2ssIGV4cGVjdGVkQm9va0lkIGlzICR7ZXhwZWN0ZWRCb29rSWR9LCBidXQgcmVjZWl2ZWQgYm9vayBuYW1lICR7ZmV0Y2hlZEJvb2t9YCwgeyBzaGEsIHVybCB9KVxuICAgIH1cblxuICAgIGlmIChpZ25vcmVTaGEgPT09IHNoYSkge1xuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS52YWxpZGF0ZVJlc3BvbnNlKCkgLSB0aGUgc2hhIGlzIHRoZSBzYW1lIGFzIHRoZSBpZ25vcmUgc2hhICR7c2hhfWAsIHsgc2hhLCB1cmwgfSlcbiAgICAgIGlzU2FtZUJvb2sgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmIChpc1NhbWVCb29rKSB7XG4gICAgICBjb25zdCBiaWJsZVVzZm1fID0gZmV0Y2hlZFJlc291cmNlcz8uYmlibGVVc2ZtXG4gICAgICBjb25zdCBib29rT2JqZWN0cyA9IGZldGNoZWRSZXNvdXJjZXM/LmJvb2tPYmplY3RzXG4gICAgICBjb25zdCB2ZXJzZXNGb3JSZWYgPSBmZXRjaFZlcnNlc0ZvclJlZihib29rT2JqZWN0cylcblxuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS52YWxpZGF0ZVJlc3BvbnNlKCkgLSBjb3JyZWN0IGJvb2ssIGV4cGVjdGVkQm9va0lkIGlzICR7ZXhwZWN0ZWRCb29rSWR9YCwgeyBzaGEsIHVybCB9KVxuICAgICAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgICAgIGJpYmxlVXNmbTogYmlibGVVc2ZtXyxcbiAgICAgICAgYm9va09iamVjdHMsXG4gICAgICAgIGZldGNoZWQ6IHRydWUsXG4gICAgICAgIGZldGNoZWRCb29rOiBleHBlY3RlZEJvb2tJZCxcbiAgICAgICAgaWdub3JlU2hhOiBudWxsLFxuICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgYm9va09iamVjdHMsXG4gICAgICAgICAgYmlibGVVc2ZtOiBiaWJsZVVzZm1fLFxuICAgICAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICAgICAgbG9hZGluZ0NvbnRlbnQ6IGZhbHNlLFxuICAgICAgICAgIHJlc291cmNlOiBmZXRjaGVkUmVzb3VyY2VzLFxuICAgICAgICAgIHNoYSxcbiAgICAgICAgICB1cmwsXG4gICAgICAgIH0sXG4gICAgICAgIHZlcnNlc0ZvclJlZixcbiAgICAgIH1cblxuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgfVxuICB9XG5cbiAgdXNlRGVlcENvbXBhcmVFZmZlY3QoKCkgPT4geyAvLyB2YWxpZGF0ZSByZXNwb25zZSB0byBtYWtlIHN1cmUgZnJvbSBsYXRlc3QgcmVxdWVzdFxuICAgIGlmIChyZWFkeUZvckZldGNoICYmIGZldGNoZWRSZXNvdXJjZXMpIHtcbiAgICAgIGlmICghZmV0Y2hlZCAmJiBmZXRjaGVkUmVzb3VyY2VzPy5mZXRjaENvdW50ID09PSBmZXRjaENvdW50KSB7XG4gICAgICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgdmFsaWRhdGVSZXNwb25zZSgpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9LCBbeyByZWFkeUZvckZldGNoLCBmZXRjaGVkUmVzb3VyY2VzIH1dKVxuXG4gIGNvbnN0IHJlc291cmNlID0gcmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2VcbiAgY29uc3QgeyB0aXRsZSwgdmVyc2lvbiB9ID0gcGFyc2VSZXNvdXJjZU1hbmlmZXN0KHJlc291cmNlKVxuICBjb25zdCBsb2FkaW5nID0gcmVzb3VyY2VTdGF0ZT8ubG9hZGluZ1Jlc291cmNlIHx8IHJlc291cmNlU3RhdGU/LmxvYWRpbmdDb250ZW50IHx8ICFyZWFkeUZvckZldGNoXG4gIGNvbnN0IGNvbnRlbnROb3RGb3VuZEVycm9yID0gIXJlc291cmNlU3RhdGU/LmJpYmxlVXNmbVxuICBjb25zdCBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvciA9ICFyZXNvdXJjZVN0YXRlPy5ib29rT2JqZWN0c1xuICBjb25zdCBtYW5pZmVzdE5vdEZvdW5kRXJyb3IgPSAhcmVzb3VyY2U/Lm1hbmlmZXN0XG4gIGNvbnN0IGludmFsaWRNYW5pZmVzdEVycm9yID0gIXRpdGxlIHx8ICF2ZXJzaW9uIHx8ICFsYW5ndWFnZUlkXG4gIGNvbnN0IGVycm9yID0gcmVhZHlGb3JGZXRjaCAmJiBpbml0aWFsaXplZCAmJiAhbG9hZGluZyAmJlxuICAgIChjb250ZW50Tm90Rm91bmRFcnJvciB8fCBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvciB8fCBtYW5pZmVzdE5vdEZvdW5kRXJyb3IgfHwgaW52YWxpZE1hbmlmZXN0RXJyb3IpXG4gIGNvbnN0IHJlc291cmNlU3RhdHVzID0ge1xuICAgIFtMT0FESU5HX1NUQVRFXTogbG9hZGluZyxcbiAgICBbQ09OVEVOVF9OT1RfRk9VTkRfRVJST1JdOiBjb250ZW50Tm90Rm91bmRFcnJvcixcbiAgICBbU0NSSVBUVVJFX05PVF9MT0FERURfRVJST1JdOiBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvcixcbiAgICBbTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUl06IG1hbmlmZXN0Tm90Rm91bmRFcnJvcixcbiAgICBbSU5WQUxJRF9NQU5JRkVTVF9FUlJPUl06IGludmFsaWRNYW5pZmVzdEVycm9yLFxuICAgIFtFUlJPUl9TVEFURV06IGVycm9yLFxuICAgIFtJTklUSUFMSVpFRF9TVEFURV06IGluaXRpYWxpemVkLFxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJlYWR5Rm9yRmV0Y2gpIHtcbiAgICAgIGlmIChpbml0aWFsaXplZCkge1xuICAgICAgICBzZXRTdGF0ZSh7IGludGlhbGl6ZWQ6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaW5pdGlhbGl6ZWQpIHtcbiAgICAgIGlmIChsb2FkaW5nKSB7IC8vIG9uY2UgZmlyc3QgbG9hZCBoYXMgYmVndW4sIHdlIGFyZSBpbml0aWFsaXplZFxuICAgICAgICBzZXRTdGF0ZSh7IGludGlhbGl6ZWQ6IHRydWUgfSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtsb2FkaW5nLCByZWFkeUZvckZldGNoXSlcblxuICAvKipcbiAgICogZ2V0IHZlcnNlcyBmb3IgcmVmXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWZTdHJcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRlbnRfXG4gICAqL1xuICBmdW5jdGlvbiBfZ2V0VmVyc2VzRm9yUmVmKHJlZlN0ciwgY29udGVudF8gPSBib29rT2JqZWN0cykge1xuICAgIGlmIChjb250ZW50Xykge1xuICAgICAgcmV0dXJuIGdldFZlcnNlc0ZvclJlZlN0cihyZWZTdHIsIGNvbnRlbnRfLCBsYW5ndWFnZUlkKVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIHVwZGF0ZSB2ZXJzZSBkYXRhIGZvciBjdXJyZW50IGJvb2tcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYXB0ZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSB2ZXJzZURhdGFcbiAgICovXG4gIGZ1bmN0aW9uIHVwZGF0ZVZlcnNlKGNoYXB0ZXIsIHZlcnNlLCB2ZXJzZURhdGEpIHtcbiAgICBpZiAoYm9va09iamVjdHMpIHtcbiAgICAgIGNvbnN0IGJvb2tPYmplY3RzXyA9IHsgLi4uYm9va09iamVjdHMgfSAvLyBzaGFsbG93IGNvcHlcblxuICAgICAgaWYgKGJvb2tPYmplY3RzXz8uY2hhcHRlcnMpIHtcbiAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzID0geyAuLi5ib29rT2JqZWN0c18uY2hhcHRlcnMgfSAvLyBzaGFsbG93IGNvcHkgY2hhcHRlcnNcblxuICAgICAgICBpZiAoYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdKSB7XG4gICAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdID0geyAuLi5ib29rT2JqZWN0c18uY2hhcHRlcnNbY2hhcHRlcl0gfSAvLyBzaGFsbG93IGNvcHkgdmVyc2VzXG4gICAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdW3ZlcnNlXSA9IHZlcnNlRGF0YVxuICAgICAgICAgIHNldFN0YXRlKHsgYm9va09iamVjdHM6IGJvb2tPYmplY3RzXyB9KVxuICAgICAgICAgIHJldHVybiBib29rT2JqZWN0c19cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIGdldCB0aGUgdmVyc2VzIGZvciBjdXJyZW50IHJlZmVyZW5jZSBvciByZWZlcmVuY2UgcmFuZ2VcbiAgICogQHBhcmFtIHtvYmplY3R9IF9ib29rT2JqZWN0c1xuICAgKi9cbiAgZnVuY3Rpb24gZmV0Y2hWZXJzZXNGb3JSZWYoX2Jvb2tPYmplY3RzID0gYm9va09iamVjdHMpIHtcbiAgICBsZXQgbmV3VmVyc2VzRm9yUmVmID0gW11cblxuICAgIGlmIChfYm9va09iamVjdHMpIHtcbiAgICAgIG5ld1ZlcnNlc0ZvclJlZiA9IGdldFZlcnNlc0ZvclJlZihyZWZlcmVuY2UsIF9ib29rT2JqZWN0cywgbGFuZ3VhZ2VJZClcbiAgICAgIHJldHVybiBuZXdWZXJzZXNGb3JSZWZcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIGZvcmNlIHJlbG9hZCBvZiByZXNvdXJjZVxuICAgKiBAcGFyYW0ge3N0cmluZ3x1bmRlZmluZWR9IGlnbm9yZVNoYSAtIG9wdGlvbmFsIHNoYSB0byBpZ25vcmVcbiAgICogQHBhcmFtIHtzdHJpbmd8dW5kZWZpbmVkfSByZWYgLSBvcHRpb25hbCByZWZlcmVuY2UgdG8gZmV0Y2hcbiAgICovXG4gIGZ1bmN0aW9uIHJlbG9hZFJlc291cmNlKGlnbm9yZVNoYSA9IG51bGwsIHJlZiA9IG51bGwpIHtcbiAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnJlbG9hZFJlc291cmNlKCkgaWdub3JlU2hhOiAke2lnbm9yZVNoYX1gIClcbiAgICBjb25zdCBfZmV0Y2hQYXJhbXMgPSB7IC4uLmZldGNoUGFyYW1zIH1cblxuICAgIGlmIChyZWYgJiYgZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluaykge1xuICAgICAgY29uc3Qge1xuICAgICAgICBvd25lcixcbiAgICAgICAgbGFuZ3VhZ2VJZCxcbiAgICAgICAgcmVzb3VyY2VJZCxcbiAgICAgICAgcmVmOiBfcmVmLFxuICAgICAgfSA9IHBhcnNlUmVzb3VyY2VMaW5rKGZldGNoUGFyYW1zLnJlc291cmNlTGluaylcblxuICAgICAgaWYgKHJlZiAhPT0gX3JlZikgeyAvLyBpZiByZWYgY2hhbmdlZCwgdXBkYXRlIHJlc291cmNlbGlua1xuICAgICAgICBjb25zdCBfcmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHtcbiAgICAgICAgICBvd25lcixcbiAgICAgICAgICBsYW5ndWFnZUlkLFxuICAgICAgICAgIHJlc291cmNlSWQsXG4gICAgICAgICAgcmVmLFxuICAgICAgICB9KVxuICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnJlbG9hZFJlc291cmNlKCkgb2xkIHJlZiBpcyBkaWZmZXJlbnQgJHtfcmVmfSwgc3dpdGNoaW5nIHRvIGxvYWQgcmVmOiAke3JlZn0sIG5ldyByZXNvdXJjZUxpbms6ICR7X3Jlc291cmNlTGlua31gIClcbiAgICAgICAgX2ZldGNoUGFyYW1zLnJlc291cmNlTGluayA9IF9yZXNvdXJjZUxpbmtcbiAgICAgIH1cbiAgICB9XG4gICAgZmV0Y2hCb29rKF9mZXRjaFBhcmFtcywgaWdub3JlU2hhKVxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBjdXJyZW50Qm9va1JlZiA9IGZldGNoUGFyYW1zPy5yZWZlcmVuY2U/LnByb2plY3RJZFxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGN1cnJlbnRCb29rUmVmKSB7XG4gICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGZldGNoZWQgYm9vayBjaGFuZ2VkIHRvICR7Y3VycmVudEJvb2tSZWZ9LCAke3Jlc291cmNlTGlua199YCwgZmV0Y2hQYXJhbXMgKVxuICAgICAgc2V0U3RhdGUoeyBib29rT2JqZWN0czogbnVsbCwgYmlibGVVc2ZtOiBudWxsIH0pXG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgfSwgW2N1cnJlbnRCb29rUmVmXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgYm9vayByZWYgY2hhbmdlZCB0byAke2Jvb2tJZH0sICR7cmVzb3VyY2VMaW5rX31gKVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgfSwgW2Jvb2tJZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBleHBlY3RlZEJvb2tJZCA9IGJvb2tJZCB8fCAnJ1xuICAgIGNvbnN0IGZldGNoZWRCb29rU2FtZSA9IGZldGNoZWRCb29rICYmIChmZXRjaGVkQm9vayA9PT0gZXhwZWN0ZWRCb29rSWQpXG4gICAgbGV0IF92ZXJzZXNGb3JSZWYgPSBbXVxuXG4gICAgaWYgKCFmZXRjaGVkQm9va1NhbWUpIHtcbiAgICAgIC8vIGlmIChleHBlY3RlZEJvb2tJZCAmJiBmZXRjaGVkQm9vaykge1xuICAgICAgLy8gICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGV4cGVjdGVkIGJvb2sgJHtleHBlY3RlZEJvb2tJZH0gYnV0IGZldGNoZWQgYm9vayB3YXMgJHtmZXRjaGVkQm9va30gLSBjbGVhcmluZ2ApXG4gICAgICAvLyB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IF9ib29rT2JqZWN0cyA9IGZldGNoZWRCb29rU2FtZSA/IGJvb2tPYmplY3RzIDogbnVsbFxuICAgICAgX3ZlcnNlc0ZvclJlZiA9IGZldGNoVmVyc2VzRm9yUmVmKF9ib29rT2JqZWN0cylcbiAgICAgIC8vIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgX2Jvb2tPYmplY3RzIGlzICR7ISFfYm9va09iamVjdHN9IGFuZCBib29rcyBhcmUgdGhlIHNhbWUgJHtmZXRjaGVkQm9va31gLCB7IGNvbnRlbnQsIGZldGNoUGFyYW1zIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF92ZXJzZXNGb3JSZWYsIHZlcnNlc0ZvclJlZikpIHtcbiAgICAgIHNldFN0YXRlKHsgdmVyc2VzRm9yUmVmOiBfdmVyc2VzRm9yUmVmIH0pXG4gICAgfVxuICB9LCBbcmVmZXJlbmNlXSlcblxuICByZXR1cm4ge1xuICAgIGJpYmxlVXNmbSxcbiAgICBib29rT2JqZWN0cyxcbiAgICBnZXRWZXJzZXNGb3JSZWY6IF9nZXRWZXJzZXNGb3JSZWYsXG4gICAgcmVmZXJlbmNlOiBmZXRjaFBhcmFtcz8ucmVmZXJlbmNlLFxuICAgIHJlbG9hZFJlc291cmNlLFxuICAgIHJlc291cmNlTGluazogZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluayxcbiAgICByZXNvdXJjZVN0YXRlLCAvLyBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgbGF0ZXN0IGZldGNoZWQgcmVzb3VyY2VcbiAgICByZXNvdXJjZVN0YXR1cywgLy8gc3RhdHVzIGZsYWdzIGZvciBmZXRjaGVkIHJlc291cmNlXG4gICAgdGl0bGUsXG4gICAgdXBkYXRlVmVyc2UsXG4gICAgdmVyc2lvbixcbiAgICB2ZXJzZXNGb3JSZWYsXG4gIH1cbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "single-scripture-rcl",
3
3
  "description": "A React Component Library for Rendering a Single Scripture Resource.",
4
- "version": "3.4.11",
4
+ "version": "3.4.12",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/unfoldingWord/single-scripture-rcl.git"
@@ -16,7 +16,7 @@
16
16
  "start": "styleguidist server NODE_OPTIONS=--max_old_space_size=4096",
17
17
  "build": "styleguidist build",
18
18
  "prepublishOnly": "rm -fr ./dist && babel ./src --out-dir ./dist -s inline --extensions \".ts,.tsx,.js\"",
19
- "pack-next": "yarn version --prerelease && yarn && yarn run prepublishOnly && yarn pack"
19
+ "pack-next": "yarn version --prerelease --no-git-tag-version && yarn && yarn run prepublishOnly && yarn pack"
20
20
  },
21
21
  "peerDependencies": {
22
22
  "@material-ui/core": "4.11.0",