@ptsecurity/mosaic 14.6.1 → 14.7.0

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.
Files changed (212) hide show
  1. package/_theming.scss +3790 -2072
  2. package/_visual.scss +341 -0
  3. package/button/button.component.d.ts +2 -0
  4. package/card/card.component.d.ts +2 -0
  5. package/checkbox/checkbox.d.ts +1 -0
  6. package/code-block/README.md +32 -0
  7. package/code-block/actionbar.component.d.ts +22 -0
  8. package/code-block/code-block.component.d.ts +74 -0
  9. package/code-block/code-block.module.d.ts +14 -0
  10. package/code-block/code-block.types.d.ts +17 -0
  11. package/code-block/index.d.ts +1 -0
  12. package/code-block/public-api.d.ts +3 -0
  13. package/core/formatters/date/formatter.d.ts +55 -1
  14. package/core/option/action.d.ts +2 -0
  15. package/core/selection/pseudo-checkbox/pseudo-checkbox.d.ts +1 -0
  16. package/datepicker/calendar-body.component.d.ts +3 -11
  17. package/datepicker/calendar-header.component.d.ts +45 -0
  18. package/datepicker/calendar.component.d.ts +10 -81
  19. package/datepicker/datepicker-input.directive.d.ts +3 -3
  20. package/datepicker/datepicker-module.d.ts +8 -8
  21. package/datepicker/datepicker.component.d.ts +2 -12
  22. package/datepicker/month-view.component.d.ts +7 -26
  23. package/datepicker/public-api.d.ts +1 -2
  24. package/design-tokens/legacy-2017/tokens/components/code-block.json5 +704 -0
  25. package/design-tokens/legacy-2017/tokens.d.ts +341 -0
  26. package/design-tokens/pt-2022/tokens/components/code-block.json5 +697 -0
  27. package/design-tokens/pt-2022/tokens.d.ts +341 -0
  28. package/design-tokens/style-dictionary/configs/index.js +6 -8
  29. package/dropdown/dropdown-item.component.d.ts +1 -0
  30. package/esm2020/button/button.component.mjs +3 -3
  31. package/esm2020/card/card.component.mjs +3 -3
  32. package/esm2020/checkbox/checkbox.mjs +2 -2
  33. package/esm2020/code-block/actionbar.component.mjs +67 -0
  34. package/esm2020/code-block/code-block.component.mjs +157 -0
  35. package/esm2020/code-block/code-block.module.mjs +60 -0
  36. package/esm2020/code-block/code-block.types.mjs +2 -0
  37. package/esm2020/code-block/index.mjs +2 -0
  38. package/esm2020/code-block/ptsecurity-mosaic-code-block.mjs +5 -0
  39. package/esm2020/code-block/public-api.mjs +4 -0
  40. package/esm2020/core/formatters/date/formatter.mjs +77 -1
  41. package/esm2020/core/formatters/date/templates/en-US.mjs +56 -1
  42. package/esm2020/core/formatters/date/templates/ru-RU.mjs +92 -1
  43. package/esm2020/core/option/action.mjs +3 -2
  44. package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +2 -2
  45. package/esm2020/core/version.mjs +2 -2
  46. package/esm2020/datepicker/calendar-body.component.mjs +9 -28
  47. package/esm2020/datepicker/calendar-header.component.mjs +135 -0
  48. package/esm2020/datepicker/calendar.component.mjs +25 -212
  49. package/esm2020/datepicker/datepicker-input.directive.mjs +54 -54
  50. package/esm2020/datepicker/datepicker-module.mjs +13 -17
  51. package/esm2020/datepicker/datepicker.component.mjs +10 -21
  52. package/esm2020/datepicker/month-view.component.mjs +32 -131
  53. package/esm2020/datepicker/public-api.mjs +2 -3
  54. package/esm2020/design-tokens/legacy-2017/tokens.mjs +342 -1
  55. package/esm2020/design-tokens/pt-2022/tokens.mjs +342 -1
  56. package/esm2020/dropdown/dropdown-item.component.mjs +2 -2
  57. package/esm2020/form-field/form-field.mjs +3 -2
  58. package/esm2020/form-field/hint.mjs +3 -2
  59. package/esm2020/icon/icon.component.mjs +3 -2
  60. package/esm2020/input/input-number-validators.mjs +3 -7
  61. package/esm2020/input/input.mjs +3 -2
  62. package/esm2020/link/link.component.mjs +3 -2
  63. package/esm2020/list/list-selection.component.mjs +3 -2
  64. package/esm2020/modal/modal.component.mjs +4 -3
  65. package/esm2020/progress-bar/progress-bar.component.mjs +3 -2
  66. package/esm2020/progress-spinner/progress-spinner.component.mjs +3 -2
  67. package/esm2020/radio/radio.component.mjs +3 -4
  68. package/esm2020/select/select.component.mjs +18 -6
  69. package/esm2020/select/select.module.mjs +6 -2
  70. package/esm2020/tabs/tab-group.component.mjs +2 -2
  71. package/esm2020/tabs/tab-label-wrapper.directive.mjs +2 -2
  72. package/esm2020/tabs/tab-nav-bar/tab-nav-bar.mjs +3 -2
  73. package/esm2020/tabs/tab.component.mjs +3 -2
  74. package/esm2020/tags/tag-list.component.mjs +3 -2
  75. package/esm2020/tags/tag.component.mjs +3 -2
  76. package/esm2020/textarea/textarea.component.mjs +3 -2
  77. package/esm2020/timezone/timezone-select.component.mjs +2 -2
  78. package/esm2020/toggle/toggle.component.mjs +3 -2
  79. package/esm2020/tree/control/flat-tree-control.mjs +1 -1
  80. package/esm2020/tree/toggle.mjs +3 -2
  81. package/esm2020/tree/tree-base.mjs +1 -1
  82. package/esm2020/tree-select/tree-select.component.mjs +3 -2
  83. package/fesm2015/ptsecurity-mosaic-button.mjs +2 -2
  84. package/fesm2015/ptsecurity-mosaic-button.mjs.map +1 -1
  85. package/fesm2015/ptsecurity-mosaic-card.mjs +2 -2
  86. package/fesm2015/ptsecurity-mosaic-card.mjs.map +1 -1
  87. package/fesm2015/ptsecurity-mosaic-checkbox.mjs +1 -1
  88. package/fesm2015/ptsecurity-mosaic-checkbox.mjs.map +1 -1
  89. package/fesm2015/ptsecurity-mosaic-code-block.mjs +280 -0
  90. package/fesm2015/ptsecurity-mosaic-code-block.mjs.map +1 -0
  91. package/fesm2015/ptsecurity-mosaic-core.mjs +226 -3
  92. package/fesm2015/ptsecurity-mosaic-core.mjs.map +1 -1
  93. package/fesm2015/ptsecurity-mosaic-datepicker.mjs +272 -906
  94. package/fesm2015/ptsecurity-mosaic-datepicker.mjs.map +1 -1
  95. package/fesm2015/ptsecurity-mosaic-design-tokens.mjs +1024 -1
  96. package/fesm2015/ptsecurity-mosaic-design-tokens.mjs.map +1 -1
  97. package/fesm2015/ptsecurity-mosaic-dropdown.mjs +1 -1
  98. package/fesm2015/ptsecurity-mosaic-dropdown.mjs.map +1 -1
  99. package/fesm2015/ptsecurity-mosaic-form-field.mjs +4 -2
  100. package/fesm2015/ptsecurity-mosaic-form-field.mjs.map +1 -1
  101. package/fesm2015/ptsecurity-mosaic-icon.mjs +2 -1
  102. package/fesm2015/ptsecurity-mosaic-icon.mjs.map +1 -1
  103. package/fesm2015/ptsecurity-mosaic-input.mjs +4 -7
  104. package/fesm2015/ptsecurity-mosaic-input.mjs.map +1 -1
  105. package/fesm2015/ptsecurity-mosaic-link.mjs +2 -1
  106. package/fesm2015/ptsecurity-mosaic-link.mjs.map +1 -1
  107. package/fesm2015/ptsecurity-mosaic-list.mjs +2 -1
  108. package/fesm2015/ptsecurity-mosaic-list.mjs.map +1 -1
  109. package/fesm2015/ptsecurity-mosaic-modal.mjs +3 -2
  110. package/fesm2015/ptsecurity-mosaic-modal.mjs.map +1 -1
  111. package/fesm2015/ptsecurity-mosaic-progress-bar.mjs +2 -1
  112. package/fesm2015/ptsecurity-mosaic-progress-bar.mjs.map +1 -1
  113. package/fesm2015/ptsecurity-mosaic-progress-spinner.mjs +2 -1
  114. package/fesm2015/ptsecurity-mosaic-progress-spinner.mjs.map +1 -1
  115. package/fesm2015/ptsecurity-mosaic-radio.mjs +2 -3
  116. package/fesm2015/ptsecurity-mosaic-radio.mjs.map +1 -1
  117. package/fesm2015/ptsecurity-mosaic-select.mjs +22 -6
  118. package/fesm2015/ptsecurity-mosaic-select.mjs.map +1 -1
  119. package/fesm2015/ptsecurity-mosaic-tabs.mjs +6 -4
  120. package/fesm2015/ptsecurity-mosaic-tabs.mjs.map +1 -1
  121. package/fesm2015/ptsecurity-mosaic-tags.mjs +4 -2
  122. package/fesm2015/ptsecurity-mosaic-tags.mjs.map +1 -1
  123. package/fesm2015/ptsecurity-mosaic-textarea.mjs +2 -1
  124. package/fesm2015/ptsecurity-mosaic-textarea.mjs.map +1 -1
  125. package/fesm2015/ptsecurity-mosaic-timezone.mjs +2 -2
  126. package/fesm2015/ptsecurity-mosaic-timezone.mjs.map +1 -1
  127. package/fesm2015/ptsecurity-mosaic-toggle.mjs +2 -1
  128. package/fesm2015/ptsecurity-mosaic-toggle.mjs.map +1 -1
  129. package/fesm2015/ptsecurity-mosaic-tree-select.mjs +2 -1
  130. package/fesm2015/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  131. package/fesm2015/ptsecurity-mosaic-tree.mjs +2 -1
  132. package/fesm2015/ptsecurity-mosaic-tree.mjs.map +1 -1
  133. package/fesm2020/ptsecurity-mosaic-button.mjs +2 -2
  134. package/fesm2020/ptsecurity-mosaic-button.mjs.map +1 -1
  135. package/fesm2020/ptsecurity-mosaic-card.mjs +2 -2
  136. package/fesm2020/ptsecurity-mosaic-card.mjs.map +1 -1
  137. package/fesm2020/ptsecurity-mosaic-checkbox.mjs +1 -1
  138. package/fesm2020/ptsecurity-mosaic-checkbox.mjs.map +1 -1
  139. package/fesm2020/ptsecurity-mosaic-code-block.mjs +278 -0
  140. package/fesm2020/ptsecurity-mosaic-code-block.mjs.map +1 -0
  141. package/fesm2020/ptsecurity-mosaic-core.mjs +226 -3
  142. package/fesm2020/ptsecurity-mosaic-core.mjs.map +1 -1
  143. package/fesm2020/ptsecurity-mosaic-datepicker.mjs +270 -901
  144. package/fesm2020/ptsecurity-mosaic-datepicker.mjs.map +1 -1
  145. package/fesm2020/ptsecurity-mosaic-design-tokens.mjs +1024 -1
  146. package/fesm2020/ptsecurity-mosaic-design-tokens.mjs.map +1 -1
  147. package/fesm2020/ptsecurity-mosaic-dropdown.mjs +1 -1
  148. package/fesm2020/ptsecurity-mosaic-dropdown.mjs.map +1 -1
  149. package/fesm2020/ptsecurity-mosaic-form-field.mjs +4 -2
  150. package/fesm2020/ptsecurity-mosaic-form-field.mjs.map +1 -1
  151. package/fesm2020/ptsecurity-mosaic-icon.mjs +2 -1
  152. package/fesm2020/ptsecurity-mosaic-icon.mjs.map +1 -1
  153. package/fesm2020/ptsecurity-mosaic-input.mjs +4 -7
  154. package/fesm2020/ptsecurity-mosaic-input.mjs.map +1 -1
  155. package/fesm2020/ptsecurity-mosaic-link.mjs +2 -1
  156. package/fesm2020/ptsecurity-mosaic-link.mjs.map +1 -1
  157. package/fesm2020/ptsecurity-mosaic-list.mjs +2 -1
  158. package/fesm2020/ptsecurity-mosaic-list.mjs.map +1 -1
  159. package/fesm2020/ptsecurity-mosaic-modal.mjs +3 -2
  160. package/fesm2020/ptsecurity-mosaic-modal.mjs.map +1 -1
  161. package/fesm2020/ptsecurity-mosaic-progress-bar.mjs +2 -1
  162. package/fesm2020/ptsecurity-mosaic-progress-bar.mjs.map +1 -1
  163. package/fesm2020/ptsecurity-mosaic-progress-spinner.mjs +2 -1
  164. package/fesm2020/ptsecurity-mosaic-progress-spinner.mjs.map +1 -1
  165. package/fesm2020/ptsecurity-mosaic-radio.mjs +2 -3
  166. package/fesm2020/ptsecurity-mosaic-radio.mjs.map +1 -1
  167. package/fesm2020/ptsecurity-mosaic-select.mjs +22 -6
  168. package/fesm2020/ptsecurity-mosaic-select.mjs.map +1 -1
  169. package/fesm2020/ptsecurity-mosaic-tabs.mjs +6 -4
  170. package/fesm2020/ptsecurity-mosaic-tabs.mjs.map +1 -1
  171. package/fesm2020/ptsecurity-mosaic-tags.mjs +4 -2
  172. package/fesm2020/ptsecurity-mosaic-tags.mjs.map +1 -1
  173. package/fesm2020/ptsecurity-mosaic-textarea.mjs +2 -1
  174. package/fesm2020/ptsecurity-mosaic-textarea.mjs.map +1 -1
  175. package/fesm2020/ptsecurity-mosaic-timezone.mjs +2 -2
  176. package/fesm2020/ptsecurity-mosaic-timezone.mjs.map +1 -1
  177. package/fesm2020/ptsecurity-mosaic-toggle.mjs +2 -1
  178. package/fesm2020/ptsecurity-mosaic-toggle.mjs.map +1 -1
  179. package/fesm2020/ptsecurity-mosaic-tree-select.mjs +2 -1
  180. package/fesm2020/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  181. package/fesm2020/ptsecurity-mosaic-tree.mjs +2 -1
  182. package/fesm2020/ptsecurity-mosaic-tree.mjs.map +1 -1
  183. package/form-field/form-field.d.ts +2 -0
  184. package/form-field/hint.d.ts +2 -0
  185. package/icon/icon.component.d.ts +2 -0
  186. package/input/input-number-validators.d.ts +2 -6
  187. package/input/input.d.ts +2 -0
  188. package/link/link.component.d.ts +2 -0
  189. package/list/list-selection.component.d.ts +2 -0
  190. package/package.json +12 -4
  191. package/prebuilt-themes/dark-theme.css +1 -1
  192. package/prebuilt-themes/default-theme.css +1 -1
  193. package/progress-bar/progress-bar.component.d.ts +2 -0
  194. package/progress-spinner/progress-spinner.component.d.ts +2 -0
  195. package/radio/radio.component.d.ts +2 -0
  196. package/select/select.component.d.ts +9 -2
  197. package/select/select.module.d.ts +1 -1
  198. package/tabs/tab-group.component.d.ts +1 -0
  199. package/tabs/tab-label-wrapper.directive.d.ts +1 -0
  200. package/tabs/tab-nav-bar/tab-nav-bar.d.ts +2 -0
  201. package/tabs/tab.component.d.ts +2 -0
  202. package/tags/tag-list.component.d.ts +2 -0
  203. package/tags/tag.component.d.ts +2 -0
  204. package/textarea/textarea.component.d.ts +2 -0
  205. package/toggle/toggle.component.d.ts +2 -0
  206. package/tree/control/flat-tree-control.d.ts +4 -4
  207. package/tree/toggle.d.ts +2 -0
  208. package/tree-select/tree-select.component.d.ts +2 -0
  209. package/datepicker/multi-year-view.component.d.ts +0 -72
  210. package/datepicker/year-view.component.d.ts +0 -90
  211. package/esm2020/datepicker/multi-year-view.component.mjs +0 -218
  212. package/esm2020/datepicker/year-view.component.mjs +0 -253
@@ -320,6 +320,82 @@ export class DateFormatter {
320
320
  rangeMiddleDateTime(startDate, endDate, options) {
321
321
  return this.rangeDateTime(startDate, endDate, this.config.rangeTemplates.closedRange.middle, options?.seconds, options?.milliseconds);
322
322
  }
323
+ /**
324
+ * @param startDate - start date
325
+ * @param endDate - end date
326
+ * @param seconds - add seconds to formatted value
327
+ * @param milliseconds - add milliseconds to formatted value
328
+ * @returns formatted duration as string like 48:02:25
329
+ */
330
+ durationShortest(startDate, endDate, seconds = true, milliseconds = false) {
331
+ this.checkDates(startDate, endDate);
332
+ if (startDate > endDate) {
333
+ throw new Error(this.invalidDateErrorText);
334
+ }
335
+ const durationObject = this.adapter.durationObjectFromDates(startDate, endDate, ['hours', 'minutes', 'seconds', 'milliseconds']);
336
+ const roundedSeconds = Math.floor(this.adapter.durationAs(durationObject, 'seconds'));
337
+ if (seconds) {
338
+ return this.compileMessage(this.config.durationTemplates.shortest.FULL, {
339
+ D: roundedSeconds,
340
+ SHOW_MILLISECONDS: milliseconds ? 'yes' : 'no',
341
+ MILLISECONDS: durationObject.milliseconds
342
+ });
343
+ }
344
+ return roundedSeconds - (roundedSeconds % 60) ? this.compileMessage(this.config.durationTemplates.shortest.ONLY_MINUTES, {
345
+ HOURS: durationObject.hours,
346
+ MINUTES: durationObject.minutes
347
+ }) : '';
348
+ }
349
+ /**
350
+ * @param startDate - start date
351
+ * @param endDate - end date
352
+ * @param units - if defined, units to show will be specified
353
+ * @param fraction - shows fraction part for years and months
354
+ * @param template - specify template
355
+ * @returns formatted duration as string
356
+ */
357
+ duration(startDate, endDate, units, fraction, template) {
358
+ this.checkDates(startDate, endDate);
359
+ if (startDate > endDate) {
360
+ throw new Error(this.invalidDateErrorText);
361
+ }
362
+ const values = this.adapter.durationObjectFromDates(startDate, endDate, units, fraction);
363
+ const variables = { ...values };
364
+ variables.SHOW_MILLISECONDS = values.milliseconds ? 'yes' : 'no';
365
+ return Object
366
+ .keys(values)
367
+ .reduce((acc, unit, index, arr) => {
368
+ if (fraction) {
369
+ variables.floorValue = Math.floor(values[unit]);
370
+ acc.push(this.compileMessage(template[`${unit.toUpperCase()}_FRACTION`], variables));
371
+ }
372
+ else {
373
+ if (arr.length > 1 && index === arr.length - 1) {
374
+ acc.push(this.compileMessage(template.SEPARATOR, variables));
375
+ }
376
+ acc.push(this.compileMessage(template[unit.toUpperCase()], variables));
377
+ }
378
+ return acc;
379
+ }, [])
380
+ .filter((text) => !!text)
381
+ .join(' ');
382
+ }
383
+ durationLong(startDate, endDate, units = [], fraction = false) {
384
+ return this.duration(startDate, endDate, units, fraction, this.config.durationTemplates.long);
385
+ }
386
+ durationShort(startDate, endDate, units = [], fraction = false) {
387
+ return this.duration(startDate, endDate, units, fraction, this.config.durationTemplates.short);
388
+ }
389
+ checkDates(...args) {
390
+ args.forEach((date) => {
391
+ if (!this.adapter.isDateInstance(date) || !this.adapter.isValid(date)) {
392
+ throw new Error(this.invalidDateErrorText);
393
+ }
394
+ });
395
+ }
396
+ compileMessage(message, variables) {
397
+ return this.messageFormat.compile(message)(variables);
398
+ }
323
399
  /**
324
400
  * @param date - date for compile
325
401
  * @param variables - date template variables
@@ -366,4 +442,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
366
442
  type: Inject,
367
443
  args: [MC_DATE_LOCALE]
368
444
  }] }]; } });
369
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbW9zYWljL2NvcmUvZm9ybWF0dGVycy9kYXRlL2Zvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQ0FBa0M7QUFDbEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsNkJBQTZCO0FBQzdCLE9BQU8sYUFBYSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdkUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBd0V6QyxNQUFNLE9BQU8sYUFBYTtJQU90QixZQUNxQixPQUF1QixFQUNoQixNQUFjO1FBRHJCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBTDNCLHlCQUFvQixHQUFXLGNBQWMsQ0FBQztRQVEzRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRTVDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFjO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFlBQVksQ0FDUixJQUFPLEVBQ1AsUUFBbUMsRUFDbkMsT0FBTyxHQUFHLEtBQUss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Q0FBQztJQUNsRCxDQUFDO0lBRU8sVUFBVSxDQUFDLElBQVM7UUFDeEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVPLGVBQWUsQ0FBQyxJQUFPO1FBQzNCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTyxPQUFPLENBQUMsU0FBWSxFQUFFLE9BQVUsRUFBRSxJQUFZO1FBQ2xELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDekUsQ0FBQzs7OEhBOWNRLGFBQWEsNkNBU1YsY0FBYztrSUFUakIsYUFBYTs0RkFBYixhQUFhO2tCQUR6QixVQUFVOzswQkFVRixNQUFNOzJCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0c2xpbnQ6ZGlzYWJsZTpuby1tYWdpYy1udW1iZXJzXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbi8vIHRzbGludDpkaXNhYmxlOmltcG9ydC1uYW1lXG5pbXBvcnQgTWVzc2FnZUZvcm1hdCBmcm9tICdAbWVzc2FnZWZvcm1hdC9jb3JlJztcbmltcG9ydCB7IERhdGVBZGFwdGVyLCBNQ19EQVRFX0xPQ0FMRSB9IGZyb20gJ0BwdHNlY3VyaXR5L2Nkay9kYXRldGltZSc7XG5cbmltcG9ydCB7IGVuVVMgfSBmcm9tICcuL3RlbXBsYXRlcy9lbi1VUyc7XG5pbXBvcnQgeyBydVJVIH0gZnJvbSAnLi90ZW1wbGF0ZXMvcnUtUlUnO1xuXG5cbi8qKlxuICogaW50ZXJmYWNlIGZvciBhYnNvbHV0ZSBkYXRlIG9yIGRhdGV0aW1lIGZvcm1hdHRlciB0ZW1wbGF0ZVxuICovXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0dGVyQWJzb2x1dGVUZW1wbGF0ZSB7XG4gICAgdmFyaWFibGVzPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgREFURTogc3RyaW5nO1xuICAgIERBVEVUSU1FOiBzdHJpbmc7XG59XG5cbi8qKlxuICogaW50ZXJmYWNlIGZvciByYW5nZSBkYXRlIG9yIGRhdGV0aW1lIGZvcm1hdHRlciB0ZW1wbGF0ZVxuICovXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0dGVyUmFuZ2VUZW1wbGF0ZSB7XG4gICAgdmFyaWFibGVzPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgU1RBUlRfREFURTogc3RyaW5nO1xuICAgIEVORF9EQVRFOiBzdHJpbmc7XG4gICAgREFURTogc3RyaW5nO1xuICAgIFNUQVJUX0RBVEVUSU1FOiBzdHJpbmc7XG4gICAgRU5EX0RBVEVUSU1FOiBzdHJpbmc7XG4gICAgREFURVRJTUU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBpbnRlcmZhY2UgZm9yIHJlbGF0aXZlIGRhdGUgb3IgZGF0ZXRpbWUgZm9ybWF0dGVyIHRlbXBsYXRlXG4gKi9cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuYW1pbmctY29udmVudGlvblxuZXhwb3J0IGludGVyZmFjZSBGb3JtYXR0ZXJSZWxhdGl2ZVRlbXBsYXRlIHtcbiAgICB2YXJpYWJsZXM/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICBCRUZPUkVfWUVTVEVSREFZOiBzdHJpbmc7XG4gICAgWUVTVEVSREFZOiBzdHJpbmc7XG4gICAgVE9EQVk6IHN0cmluZztcbiAgICBUT01PUlJPVzogc3RyaW5nO1xuICAgIEFGVEVSX1RPTU9SUk9XOiBzdHJpbmc7XG59XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuYW1pbmctY29udmVudGlvblxuZXhwb3J0IGludGVyZmFjZSBEYXRlVGltZU9wdGlvbnMge1xuICAgIHNlY29uZHM/OiBib29sZWFuO1xuICAgIG1pbGxpc2Vjb25kcz86IGJvb2xlYW47XG4gICAgY3VyclllYXI/OiBib29sZWFuO1xufVxuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0dGVyQ29uZmlnIHtcbiAgICByZWxhdGl2ZVRlbXBsYXRlczoge1xuICAgICAgICBzaG9ydDogRm9ybWF0dGVyUmVsYXRpdmVUZW1wbGF0ZTtcbiAgICAgICAgbG9uZzogRm9ybWF0dGVyUmVsYXRpdmVUZW1wbGF0ZTtcbiAgICB9O1xuICAgIGFic29sdXRlVGVtcGxhdGVzOiB7XG4gICAgICAgIHNob3J0OiBGb3JtYXR0ZXJBYnNvbHV0ZVRlbXBsYXRlO1xuICAgICAgICBsb25nOiBGb3JtYXR0ZXJBYnNvbHV0ZVRlbXBsYXRlO1xuICAgIH07XG4gICAgcmFuZ2VUZW1wbGF0ZXM6IHtcbiAgICAgICAgY2xvc2VkUmFuZ2U6IHtcbiAgICAgICAgICAgIHNob3J0OiBGb3JtYXR0ZXJSYW5nZVRlbXBsYXRlO1xuICAgICAgICAgICAgbWlkZGxlOiBGb3JtYXR0ZXJSYW5nZVRlbXBsYXRlO1xuICAgICAgICAgICAgbG9uZzogRm9ybWF0dGVyUmFuZ2VUZW1wbGF0ZTtcbiAgICAgICAgfTtcbiAgICAgICAgb3BlbmVkUmFuZ2U6IHtcbiAgICAgICAgICAgIHNob3J0OiBGb3JtYXR0ZXJSYW5nZVRlbXBsYXRlO1xuICAgICAgICAgICAgbG9uZzogRm9ybWF0dGVyUmFuZ2VUZW1wbGF0ZTtcbiAgICAgICAgfTtcbiAgICB9O1xufVxuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEYXRlRm9ybWF0dGVyPEQ+IHtcbiAgICBjb25maWc6IEZvcm1hdHRlckNvbmZpZztcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW52YWxpZERhdGVFcnJvclRleHQ6IHN0cmluZyA9ICdJbnZhbGlkIGRhdGUnO1xuXG4gICAgcHJpdmF0ZSBtZXNzYWdlRm9ybWF0OiBNZXNzYWdlRm9ybWF0O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYWRhcHRlcjogRGF0ZUFkYXB0ZXI8RD4sXG4gICAgICAgIEBJbmplY3QoTUNfREFURV9MT0NBTEUpIGxvY2FsZTogc3RyaW5nXG4gICAgKSB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gbG9jYWxlID09PSAnZW4nID8gZW5VUyA6IHJ1UlU7XG5cbiAgICAgICAgdGhpcy5tZXNzYWdlRm9ybWF0ID0gbmV3IE1lc3NhZ2VGb3JtYXQobG9jYWxlKTtcbiAgICB9XG5cbiAgICBzZXRMb2NhbGUobG9jYWxlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSBsb2NhbGUgPT09ICdlbicgPyBlblVTIDogcnVSVTtcblxuICAgICAgICB0aGlzLmFkYXB0ZXIuc2V0TG9jYWxlKGxvY2FsZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGRhdGUgLSBkYXRlXG4gICAgICogQHBhcmFtIHRlbXBsYXRlIC0gdGVtcGxhdGVcbiAgICAgKiBAcGFyYW0gc2Vjb25kcyAtIHVzZSBzZWNvbmRzXG4gICAgICogQHBhcmFtIG1pbGxpc2Vjb25kcyAtIHVzZSBtaWxsaXNlY29uZHNcbiAgICAgKiBAcmV0dXJucyByZWxhdGl2ZSBkYXRlIGJ5IHRlbXBsYXRlXG4gICAgICovXG4gICAgcmVsYXRpdmVEYXRlKFxuICAgICAgICBkYXRlOiBELFxuICAgICAgICB0ZW1wbGF0ZTogRm9ybWF0dGVyUmVsYXRpdmVUZW1wbGF0ZSxcbiAgICAgICAgc2Vjb25kcyA9IGZhbHNlLFxuICAgICAgICBtaWxsaXNlY29uZHMgPSBmYWxzZVxuICAgICk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdGhpcy5hZGFwdGVyLmlzRGF0ZUluc3RhbmNlKGRhdGUpKSB7IHRocm93IG5ldyBFcnJvcih0aGlzLmludmFsaWREYXRlRXJyb3JUZXh0KTsgfVxuXG4gICAgICAgIGxldCBuZXdUZW1wbGF0ZTtcblxuICAgICAgICBjb25zdCB0ZW1wbGF0ZVZhcmlhYmxlcyA9IHsuLi50aGlzLmFkYXB0ZXIuY29uZmlnLnZhcmlhYmxlcywgLi4udGVtcGxhdGUudmFyaWFibGVzfTtcblxuICAgICAgICBpZiAodGhpcy5pc0JlZm9yZVllc3RlcmRheShkYXRlKSkge1xuICAgICAgICAgICAgbmV3VGVtcGxhdGUgPSB0ZW1wbGF0ZS5CRUZPUkVfWUVTVEVSREFZO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNZZXN0ZXJkYXkoZGF0ZSkpIHtcbiAgICAgICAgICAgIG5ld1RlbXBsYXRlID0gdGVtcGxhdGUuWUVTVEVSREFZO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNUb2RheShkYXRlKSkge1xuICAgICAgICAgICAgbmV3VGVtcGxhdGUgPSB0ZW1wbGF0ZS5UT0RBWTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzVG9tb3Jyb3coZGF0ZSkpIHtcbiAgICAgICAgICAgIG5ld1RlbXBsYXRlID0gdGVtcGxhdGUuVE9NT1JST1c7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0FmdGVyVG9tb3Jyb3coZGF0ZSkpIHtcbiAgICAgICAgICAgIG5ld1RlbXBsYXRlID0gdGVtcGxhdGUuQUZURVJfVE9NT1JST1c7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YXJpYWJsZXMgPSB0aGlzLmNvbXBpbGVWYXJpYWJsZXMoZGF0ZSwgdGVtcGxhdGVWYXJpYWJsZXMpO1xuXG4gICAgICAgIHZhcmlhYmxlcy5TSE9XX1NFQ09ORFMgPSBzZWNvbmRzID8gJ3llcycgOiAnbm8nO1xuICAgICAgICB2YXJpYWJsZXMuU0hPV19NSUxMSVNFQ09ORFMgPSBtaWxsaXNlY29uZHMgPyAneWVzJyA6ICdubyc7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZUZvcm1hdC5jb21waWxlKG5ld1RlbXBsYXRlKSh2YXJpYWJsZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBkYXRlIC0gZGF0ZVxuICAgICAqIEByZXR1cm5zIHJlbGF0aXZlIGRhdGUgaW4gc2hvcnQgZm9ybWF0XG4gICAgICovXG4gICAgcmVsYXRpdmVTaG9ydERhdGUoZGF0ZTogRCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlbGF0aXZlRGF0ZShkYXRlLCB0aGlzLmNvbmZpZy5yZWxhdGl2ZVRlbXBsYXRlcy5zaG9ydCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGRhdGUgLSBkYXRlXG4gICAgICogQHJldHVybnMgcmVsYXRpdmUgZGF0ZSBpbiBsb25nIGZvcm1hdFxuICAgICAqL1xuICAgIHJlbGF0aXZlTG9uZ0RhdGUoZGF0ZTogRCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlbGF0aXZlRGF0ZShkYXRlLCB0aGlzLmNvbmZpZy5yZWxhdGl2ZVRlbXBsYXRlcy5sb25nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZGF0ZSAtIGRhdGVcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIERhdGVUaW1lT3B0aW9uc1xuICAgICAqIEByZXR1cm5zIHJlbGF0aXZlIGRhdGUgaW4gc2hvcnQgZm9ybWF0IHdpdGggdGltZVxuICAgICAqL1xuICAgIHJlbGF0aXZlU2hvcnREYXRlVGltZShkYXRlOiBELCBvcHRpb25zPzogRGF0ZVRpbWVPcHRpb25zKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVsYXRpdmVEYXRlKGRhdGUsIHRoaXMuY29uZmlnLnJlbGF0aXZlVGVtcGxhdGVzLnNob3J0LCBvcHRpb25zPy5zZWNvbmRzLCBvcHRpb25zPy5taWxsaXNlY29uZHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBkYXRlIC0gZGF0ZVxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gRGF0ZVRpbWVPcHRpb25zXG4gICAgICogQHJldHVybnMgcmVsYXRpdmUgZGF0ZSBpbiBsb25nIGZvcm1hdCB3aXRoIHRpbWVcbiAgICAgKi9cbiAgICByZWxhdGl2ZUxvbmdEYXRlVGltZShkYXRlOiBELCBvcHRpb25zPzogRGF0ZVRpbWVPcHRpb25zKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVsYXRpdmVEYXRlKGRhdGUsIHRoaXMuY29uZmlnLnJlbGF0aXZlVGVtcGxhdGVzLmxvbmcsIG9wdGlvbnM/LnNlY29uZHMsIG9wdGlvbnM/Lm1pbGxpc2Vjb25kcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGRhdGUgLSBkYXRlXG4gICAgICogQHBhcmFtIHBhcmFtcyAtIHBhcmFtZXRlcnNcbiAgICAgKiBAcGFyYW0gZGF0ZXRpbWUgLSBzaG91bGQgdGltZSBiZSBzaG93biBhcyB3ZWxsXG4gICAgICogQHBhcmFtIHNlY29uZHMgLSBzaG91bGQgdGltZSB3aXRoIHNlY29uZHMgYmUgc2hvd24gYXMgd2VsbFxuICAgICAqIEBwYXJhbSBtaWxsaXNlY29uZHMgLSBzaG91bGQgdGltZSB3aXRoIG1pbGxpc2Vjb25kcyBiZSBzaG93biBhcyB3ZWxsXG4gICAgICogQHBhcmFtIGN1cnJZZWFyIC0gc2hvdWxkIGN1cnJlbnQgeWVhciBiZSBzaG93biBhcyB3ZWxsXG4gICAgICovXG4gICAgYWJzb2x1dGVEYXRlKFxuICAgICAgICBkYXRlOiBELFxuICAgICAgICBwYXJhbXM6IEZvcm1hdHRlckFic29sdXRlVGVtcGxhdGUsXG4gICAgICAgIGRhdGV0aW1lID0gZmFsc2UsXG4gICAgICAgIHNlY29uZHMgPSBmYWxzZSxcbiAgICAgICAgbWlsbGlzZWNvbmRzID0gZmFsc2UsXG4gICAgICAgIGN1cnJZZWFyID0gZmFsc2VcbiAgICApOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXRoaXMuYWRhcHRlci5pc0RhdGVJbnN0YW5jZShkYXRlKSkgeyB0aHJvdyBuZXcgRXJyb3IodGhpcy5pbnZhbGlkRGF0ZUVycm9yVGV4dCk7IH1cblxuICAgICAgICBjb25zdCB2YXJpYWJsZXMgPSB0aGlzLmNvbXBpbGVWYXJpYWJsZXMoZGF0ZSwgeyAuLi50aGlzLmFkYXB0ZXIuY29uZmlnLnZhcmlhYmxlcywgLi4ucGFyYW1zLnZhcmlhYmxlcyB9LCBjdXJyWWVhcik7XG5cbiAgICAgICAgdmFyaWFibGVzLlNIT1dfU0VDT05EUyA9IHNlY29uZHMgPyAneWVzJyA6ICdubyc7XG4gICAgICAgIHZhcmlhYmxlcy5TSE9XX01JTExJU0VDT05EUyA9IG1pbGxpc2Vjb25kcyA/ICd5ZXMnIDogJ25vJztcblxuICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IGRhdGV0aW1lID8gcGFyYW1zLkRBVEVUSU1FIDogcGFyYW1zLkRBVEU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZUZvcm1hdC5jb21waWxlKHRlbXBsYXRlKSh2YXJpYWJsZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBkYXRlIC0gZGF0ZVxuICAgICAqIEBwYXJhbSBjdXJyWWVhciAtIHNob3VsZCB0aGUgeWVhciBiZSBzaG93biBmb3JjZWRcbiAgICAgKiBAcmV0dXJucyBhYnNvbHV0ZSBkYXRlIGluIHNob3J0IGZvcm1hdFxuICAgICAqL1xuICAgIGFic29sdXRlU2hvcnREYXRlKGRhdGU6IEQsIGN1cnJZZWFyID0gZmFsc2UpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5hYnNvbHV0ZURhdGUoZGF0ZSwgdGhpcy5jb25maWcuYWJzb2x1dGVUZW1wbGF0ZXMuc2hvcnQsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGN1cnJZZWFyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZGF0ZSAtIGRhdGVcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIERhdGVUaW1lT3B0aW9uc1xuICAgICAqIEByZXR1cm5zIGFic29sdXRlIGRhdGUgaW4gc2hvcnQgZm9ybWF0IHdpdGggdGltZVxuICAgICAqL1xuICAgIGFic29sdXRlU2hvcnREYXRlVGltZShkYXRlOiBELCBvcHRpb25zPzogRGF0ZVRpbWVPcHRpb25zKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWJzb2x1dGVEYXRlKFxuICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmFic29sdXRlVGVtcGxhdGVzLnNob3J0LFxuICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgIG9wdGlvbnM/LnNlY29uZHMsXG4gICAgICAgICAgICBvcHRpb25zPy5taWxsaXNlY29uZHMsXG4gICAgICAgICAgICBvcHRpb25zPy5jdXJyWWVhclxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBkYXRlIC0gZGF0ZVxuICAgICAqIEBwYXJhbSBjdXJyWWVhciAtIHNob3VsZCB0aGUgeWVhciBiZSBzaG93biBmb3JjZWRcbiAgICAgKiBAcmV0dXJucyBhYnNvbHV0ZSBkYXRlIGluIGxvbmcgZm9ybWF0XG4gICAgICovXG4gICAgYWJzb2x1dGVMb25nRGF0ZShkYXRlOiBELCBjdXJyWWVhciA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWJzb2x1dGVEYXRlKGRhdGUsIHRoaXMuY29uZmlnLmFic29sdXRlVGVtcGxhdGVzLmxvbmcsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGN1cnJZZWFyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZGF0ZSAtIGRhdGVcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIERhdGVUaW1lT3B0aW9uc1xuICAgICAqIEByZXR1cm5zIGFic29sdXRlIGRhdGUgaW4gbG9uZyBmb3JtYXQgd2l0aCB0aW1lXG4gICAgICovXG4gICAgYWJzb2x1dGVMb25nRGF0ZVRpbWUoZGF0ZTogRCwgb3B0aW9ucz86IERhdGVUaW1lT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFic29sdXRlRGF0ZShcbiAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5hYnNvbHV0ZVRlbXBsYXRlcy5sb25nLFxuICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgIG9wdGlvbnM/LnNlY29uZHMsXG4gICAgICAgICAgICBvcHRpb25zPy5taWxsaXNlY29uZHMsXG4gICAgICAgICAgICBvcHRpb25zPy5jdXJyWWVhclxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBzdGFydERhdGUgLSBzdGFydCBkYXRlXG4gICAgICogQHBhcmFtIGVuZERhdGUgLSBlbmQgZGF0ZVxuICAgICAqIEBwYXJhbSB0ZW1wbGF0ZSAtIHRlbXBsYXRlXG4gICAgICogQHJldHVybnMgb3BlbmVkIGRhdGVcbiAgICAgKi9cbiAgICBvcGVuZWRSYW5nZURhdGUoc3RhcnREYXRlOiBEIHwgbnVsbCwgZW5kRGF0ZTogRCB8IG51bGwsIHRlbXBsYXRlOiBGb3JtYXR0ZXJSYW5nZVRlbXBsYXRlKSB7XG4gICAgICAgIGlmICghdGhpcy5hZGFwdGVyLmlzRGF0ZUluc3RhbmNlKHN0YXJ0RGF0ZSkgJiYgIXRoaXMuYWRhcHRlci5pc0RhdGVJbnN0YW5jZShlbmREYXRlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMuaW52YWxpZERhdGVFcnJvclRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmFyaWFibGVzID0geyAuLi50aGlzLmFkYXB0ZXIuY29uZmlnLnZhcmlhYmxlcywgLi4udGVtcGxhdGUudmFyaWFibGVzIH07XG4gICAgICAgIGxldCBwYXJhbXMgPSB7fTtcblxuICAgICAgICBpZiAoc3RhcnREYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBzdGFydERhdGVWYXJpYWJsZXMgPSB0aGlzLmNvbXBpbGVWYXJpYWJsZXMoc3RhcnREYXRlLCB2YXJpYWJsZXMpO1xuXG4gICAgICAgICAgICBwYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgLi4udmFyaWFibGVzLFxuICAgICAgICAgICAgICAgIFNUQVJUX0RBVEU6IHRoaXMubWVzc2FnZUZvcm1hdC5jb21waWxlKHRlbXBsYXRlLlNUQVJUX0RBVEUpKHN0YXJ0RGF0ZVZhcmlhYmxlcyksXG4gICAgICAgICAgICAgICAgUkFOR0VfVFlQRTogJ29ubHlTdGFydCdcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAoZW5kRGF0ZSkge1xuICAgICAgICAgICAgY29uc3QgZW5kRGF0ZVZhcmlhYmxlcyA9IHRoaXMuY29tcGlsZVZhcmlhYmxlcyhlbmREYXRlLCB2YXJpYWJsZXMpO1xuXG4gICAgICAgICAgICBwYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgLi4udmFyaWFibGVzLFxuICAgICAgICAgICAgICAgIEVORF9EQVRFOiB0aGlzLm1lc3NhZ2VGb3JtYXQuY29tcGlsZSh0ZW1wbGF0ZS5FTkRfREFURSkoZW5kRGF0ZVZhcmlhYmxlcyksXG4gICAgICAgICAgICAgICAgUkFOR0VfVFlQRTogJ29ubHlFbmQnXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZUZvcm1hdC5jb21waWxlKHRlbXBsYXRlLkRBVEUpKHBhcmFtcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHN0YXJ0RGF0ZSAtIHN0YXJ0IGRhdGVcbiAgICAgKiBAcGFyYW0gZW5kRGF0ZSAtIGVuZCBkYXRlXG4gICAgICogQHBhcmFtIHRlbXBsYXRlIC0gdGVtcGxhdGVcbiAgICAgKiBAcGFyYW0gc2Vjb25kcyAtIHNob3VsZCB0aW1lIHdpdGggc2Vjb25kcyBiZSBzaG93biBhcyB3ZWxsXG4gICAgICogQHBhcmFtIG1pbGxpc2Vjb25kcyAtIHNob3VsZCB0aW1lIHdpdGggbWlsbGlzZWNvbmRzIGJlIHNob3duIGFzIHdlbGxcbiAgICAgKiBAcmV0dXJucyBvcGVuZWQgZGF0ZVxuICAgICAqL1xuICAgIG9wZW5lZFJhbmdlRGF0ZVRpbWUoXG4gICAgICAgIHN0YXJ0RGF0ZTogRCB8IG51bGwsXG4gICAgICAgIGVuZERhdGU6IEQgfCBudWxsLFxuICAgICAgICB0ZW1wbGF0ZTogRm9ybWF0dGVyUmFuZ2VUZW1wbGF0ZSxcbiAgICAgICAgc2Vjb25kcyA9IGZhbHNlLFxuICAgICAgICBtaWxsaXNlY29uZHMgPSBmYWxzZVxuICAgICkge1xuICAgICAgICBpZiAoIXRoaXMuYWRhcHRlci5pc0RhdGVJbnN0YW5jZShzdGFydERhdGUpICYmICF0aGlzLmFkYXB0ZXIuaXNEYXRlSW5zdGFuY2UoZW5kRGF0ZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLmludmFsaWREYXRlRXJyb3JUZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlcyA9IHsgLi4udGhpcy5hZGFwdGVyLmNvbmZpZy52YXJpYWJsZXMsIC4uLnRlbXBsYXRlLnZhcmlhYmxlcyB9O1xuICAgICAgICBsZXQgcGFyYW1zID0ge307XG5cbiAgICAgICAgaWYgKHN0YXJ0RGF0ZSkge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnREYXRlVmFyaWFibGVzID0gdGhpcy5jb21waWxlVmFyaWFibGVzKHN0YXJ0RGF0ZSwgdmFyaWFibGVzKTtcbiAgICAgICAgICAgIHN0YXJ0RGF0ZVZhcmlhYmxlcy5TSE9XX1NFQ09ORFMgPSBzZWNvbmRzID8gJ3llcycgOiAnbm8nO1xuICAgICAgICAgICAgc3RhcnREYXRlVmFyaWFibGVzLlNIT1dfTUlMTElTRUNPTkRTID0gbWlsbGlzZWNvbmRzID8gJ3llcycgOiAnbm8nO1xuXG4gICAgICAgICAgICBwYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgLi4udmFyaWFibGVzLFxuICAgICAgICAgICAgICAgIFNUQVJUX0RBVEVUSU1FOiB0aGlzLm1lc3NhZ2VGb3JtYXQuY29tcGlsZSh0ZW1wbGF0ZS5TVEFSVF9EQVRFVElNRSkoc3RhcnREYXRlVmFyaWFibGVzKSxcbiAgICAgICAgICAgICAgICBSQU5HRV9UWVBFOiAnb25seVN0YXJ0J1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmIChlbmREYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBlbmREYXRlVmFyaWFibGVzID0gdGhpcy5jb21waWxlVmFyaWFibGVzKGVuZERhdGUsIHZhcmlhYmxlcyk7XG4gICAgICAgICAgICBlbmREYXRlVmFyaWFibGVzLlNIT1dfU0VDT05EUyA9IHNlY29uZHMgPyAneWVzJyA6ICdubyc7XG4gICAgICAgICAgICBlbmREYXRlVmFyaWFibGVzLlNIT1dfTUlMTElTRUNPTkRTID0gbWlsbGlzZWNvbmRzID8gJ3llcycgOiAnbm8nO1xuXG4gICAgICAgICAgICBwYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgLi4udmFyaWFibGVzLFxuICAgICAgICAgICAgICAgIEVORF9EQVRFVElNRTogdGhpcy5tZXNzYWdlRm9ybWF0LmNvbXBpbGUodGVtcGxhdGUuRU5EX0RBVEVUSU1FKShlbmREYXRlVmFyaWFibGVzKSxcbiAgICAgICAgICAgICAgICBSQU5HRV9UWVBFOiAnb25seUVuZCdcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlRm9ybWF0LmNvbXBpbGUodGVtcGxhdGUuREFURVRJTUUpKHBhcmFtcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHN0YXJ0RGF0ZSAtIHN0YXJ0IGRhdGVcbiAgICAgKiBAcGFyYW0gZW5kRGF0ZSAtIGVuZCBkYXRlXG4gICAgICogQHBhcmFtIHRlbXBsYXRlIC0gdGVtcGxhdGVcbiAgICAgKiBAcmV0dXJucyByYW5nZSBkYXRlIGluIHRlbXBsYXRlIGZvcm1hdFxuICAgICAqL1xuICAgIHJhbmdlRGF0ZShzdGFydERhdGU6IEQsIGVuZERhdGU6IEQsIHRlbXBsYXRlOiBGb3JtYXR0ZXJSYW5nZVRlbXBsYXRlKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLmFkYXB0ZXIuaXNEYXRlSW5zdGFuY2Uoc3RhcnREYXRlKSB8fCAhdGhpcy5hZGFwdGVyLmlzRGF0ZUluc3RhbmNlKGVuZERhdGUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5pbnZhbGlkRGF0ZUVycm9yVGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YXJpYWJsZXMgPSB7IC4uLnRoaXMuYWRhcHRlci5jb25maWcudmFyaWFibGVzLCAuLi50ZW1wbGF0ZS52YXJpYWJsZXMgfTtcbiAgICAgICAgY29uc3Qgc2FtZU1vbnRoID0gdGhpcy5oYXNTYW1lKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgJ21vbnRoJyk7XG5cbiAgICAgICAgY29uc3Qgc3RhcnREYXRlVmFyaWFibGVzID0gdGhpcy5jb21waWxlVmFyaWFibGVzKHN0YXJ0RGF0ZSwgdmFyaWFibGVzKTtcbiAgICAgICAgc3RhcnREYXRlVmFyaWFibGVzLlNBTUVfTU9OVEggPSBzYW1lTW9udGg7XG5cbiAgICAgICAgY29uc3QgZW5kRGF0ZVZhcmlhYmxlcyA9IHRoaXMuY29tcGlsZVZhcmlhYmxlcyhlbmREYXRlLCB2YXJpYWJsZXMpO1xuICAgICAgICBlbmREYXRlVmFyaWFibGVzLlNBTUVfTU9OVEggPSBzYW1lTW9udGg7XG5cbiAgICAgICAgY29uc3QgYm90aEN1cnJlbnRZZWFyID0gc3RhcnREYXRlVmFyaWFibGVzLkNVUlJFTlRfWUVBUiA9PT0gJ3llcycgJiYgZW5kRGF0ZVZhcmlhYmxlcy5DVVJSRU5UX1lFQVIgPT09ICd5ZXMnO1xuICAgICAgICBzdGFydERhdGVWYXJpYWJsZXMuQ1VSUkVOVF9ZRUFSID0gYm90aEN1cnJlbnRZZWFyID8gJ3llcycgOiAnbm8nO1xuICAgICAgICBlbmREYXRlVmFyaWFibGVzLkNVUlJFTlRfWUVBUiA9IGJvdGhDdXJyZW50WWVhciA/ICd5ZXMnIDogJ25vJztcblxuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICAuLi52YXJpYWJsZXMsXG4gICAgICAgICAgICBTVEFSVF9EQVRFOiB0aGlzLm1lc3NhZ2VGb3JtYXQuY29tcGlsZSh0ZW1wbGF0ZS5TVEFSVF9EQVRFKShzdGFydERhdGVWYXJpYWJsZXMpLFxuICAgICAgICAgICAgRU5EX0RBVEU6IHRoaXMubWVzc2FnZUZvcm1hdC5jb21waWxlKHRlbXBsYXRlLkVORF9EQVRFKShlbmREYXRlVmFyaWFibGVzKSxcbiAgICAgICAgICAgIFNBTUVfTU9OVEg6IHNhbWVNb250aFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2VGb3JtYXQuY29tcGlsZSh0ZW1wbGF0ZS5EQVRFKShwYXJhbXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBzdGFydERhdGUgLSBzdGFydCBkYXRlXG4gICAgICogQHBhcmFtIGVuZERhdGUgLSBlbmQgZGF0ZVxuICAgICAqIEBwYXJhbSB0ZW1wbGF0ZSAtIHRlbXBsYXRlXG4gICAgICogQHBhcmFtIHNlY29uZHMgLSB1c2Ugc2Vjb25kc1xuICAgICAqIEBwYXJhbSBtaWxsaXNlY29uZHMgLSB1c2UgbWlsbGlzZWNvbmRzXG4gICAgICogQHJldHVybnMgcmFuZ2UgZGF0ZSBpbiB0ZW1wbGF0ZSBmb3JtYXQgd2l0aCB0aW1lXG4gICAgICovXG4gICAgcmFuZ2VEYXRlVGltZShzdGFydERhdGU6IEQsIGVuZERhdGU6IEQsIHRlbXBsYXRlOiBGb3JtYXR0ZXJSYW5nZVRlbXBsYXRlLCBzZWNvbmRzID0gZmFsc2UsIG1pbGxpc2Vjb25kcyA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLmFkYXB0ZXIuaXNEYXRlSW5zdGFuY2Uoc3RhcnREYXRlKSB8fCAhdGhpcy5hZGFwdGVyLmlzRGF0ZUluc3RhbmNlKGVuZERhdGUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5pbnZhbGlkRGF0ZUVycm9yVGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YXJpYWJsZXMgPSB7Li4udGhpcy5hZGFwdGVyLmNvbmZpZy52YXJpYWJsZXMsIC4uLnRlbXBsYXRlLnZhcmlhYmxlc307XG5cbiAgICAgICAgY29uc3Qgc2FtZU1vbnRoID0gdGhpcy5oYXNTYW1lKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgJ21vbnRoJyk7XG4gICAgICAgIGNvbnN0IHNhbWVEYXkgPSB0aGlzLmhhc1NhbWUoc3RhcnREYXRlLCBlbmREYXRlLCAnZGF5Jyk7XG5cbiAgICAgICAgY29uc3Qgc3RhcnREYXRlVmFyaWFibGVzID0gdGhpcy5jb21waWxlVmFyaWFibGVzKHN0YXJ0RGF0ZSwgdmFyaWFibGVzKTtcbiAgICAgICAgc3RhcnREYXRlVmFyaWFibGVzLlNBTUVfTU9OVEggPSBzYW1lTW9udGg7XG4gICAgICAgIHN0YXJ0RGF0ZVZhcmlhYmxlcy5TQU1FX0RBWSA9IHNhbWVEYXk7XG4gICAgICAgIHN0YXJ0RGF0ZVZhcmlhYmxlcy5TSE9XX1NFQ09ORFMgPSBzZWNvbmRzID8gJ3llcycgOiAnbm8nO1xuICAgICAgICBzdGFydERhdGVWYXJpYWJsZXMuU0hPV19NSUxMSVNFQ09ORFMgPSBtaWxsaXNlY29uZHMgPyAneWVzJyA6ICdubyc7XG5cbiAgICAgICAgY29uc3QgZW5kRGF0ZVZhcmlhYmxlcyA9IHRoaXMuY29tcGlsZVZhcmlhYmxlcyhlbmREYXRlLCB2YXJpYWJsZXMpO1xuICAgICAgICBlbmREYXRlVmFyaWFibGVzLlNBTUVfTU9OVEggPSBzYW1lTW9udGg7XG4gICAgICAgIGVuZERhdGVWYXJpYWJsZXMuU0FNRV9EQVkgPSBzYW1lRGF5O1xuICAgICAgICBlbmREYXRlVmFyaWFibGVzLlNIT1dfU0VDT05EUyA9IHNlY29uZHMgPyAneWVzJyA6ICdubyc7XG4gICAgICAgIGVuZERhdGVWYXJpYWJsZXMuU0hPV19NSUxMSVNFQ09ORFMgPSBtaWxsaXNlY29uZHMgPyAneWVzJyA6ICdubyc7XG5cbiAgICAgICAgY29uc3QgYm90aEN1cnJlbnRZZWFyID0gc3RhcnREYXRlVmFyaWFibGVzLkNVUlJFTlRfWUVBUiA9PT0gJ3llcycgJiYgZW5kRGF0ZVZhcmlhYmxlcy5DVVJSRU5UX1lFQVIgPT09ICd5ZXMnO1xuICAgICAgICBzdGFydERhdGVWYXJpYWJsZXMuQ1VSUkVOVF9ZRUFSID0gYm90aEN1cnJlbnRZZWFyID8gJ3llcycgOiAnbm8nO1xuICAgICAgICBlbmREYXRlVmFyaWFibGVzLkNVUlJFTlRfWUVBUiA9IGJvdGhDdXJyZW50WWVhciA/ICd5ZXMnIDogJ25vJztcblxuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICAuLi52YXJpYWJsZXMsXG4gICAgICAgICAgICBTVEFSVF9EQVRFVElNRTogdGhpcy5tZXNzYWdlRm9ybWF0LmNvbXBpbGUodGVtcGxhdGUuU1RBUlRfREFURVRJTUUpKHN0YXJ0RGF0ZVZhcmlhYmxlcyksXG4gICAgICAgICAgICBFTkRfREFURVRJTUU6IHRoaXMubWVzc2FnZUZvcm1hdC5jb21waWxlKHRlbXBsYXRlLkVORF9EQVRFVElNRSkoZW5kRGF0ZVZhcmlhYmxlcyksXG4gICAgICAgICAgICBTQU1FX01PTlRIOiBzYW1lTW9udGgsXG4gICAgICAgICAgICBTQU1FX0RBWTogc2FtZURheVxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2VGb3JtYXQuY29tcGlsZSh0ZW1wbGF0ZS5EQVRFVElNRSkocGFyYW1zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gc3RhcnREYXRlIC0gc3RhcnQgZGF0ZVxuICAgICAqIEBwYXJhbSBlbmREYXRlIC0gZW5kIGRhdGVcbiAgICAgKiBAcmV0dXJucyByYW5nZSBkYXRlIGluIHNob3J0IGZvcm1hdFxuICAgICAqL1xuICAgIHJhbmdlU2hvcnREYXRlKHN0YXJ0RGF0ZTogRCB8IG51bGwsIGVuZERhdGU/OiBEKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcmFuZ2VUZW1wbGF0ZXMgPSB0aGlzLmNvbmZpZy5yYW5nZVRlbXBsYXRlcztcblxuICAgICAgICBpZiAoc3RhcnREYXRlICYmIGVuZERhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJhbmdlRGF0ZShzdGFydERhdGUsIGVuZERhdGUsIHJhbmdlVGVtcGxhdGVzLmNsb3NlZFJhbmdlLnNob3J0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm9wZW5lZFJhbmdlRGF0ZShzdGFydERhdGUsIGVuZERhdGUgfHwgbnVsbCwgcmFuZ2VUZW1wbGF0ZXMub3BlbmVkUmFuZ2Uuc2hvcnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBzdGFydERhdGUgLSBzdGFydCBkYXRlXG4gICAgICogQHBhcmFtIGVuZERhdGUgLSBlbmQgZGF0ZVxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gRGF0ZVRpbWVPcHRpb25zXG4gICAgICogQHJldHVybnMgcmFuZ2UgZGF0ZSBpbiBzaG9ydCBmb3JtYXQgd2l0aCB0aW1lXG4gICAgICovXG4gICAgcmFuZ2VTaG9ydERhdGVUaW1lKHN0YXJ0RGF0ZTogRCB8IG51bGwsIGVuZERhdGU/OiBEIHwgbnVsbCwgb3B0aW9ucz86IERhdGVUaW1lT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHJhbmdlVGVtcGxhdGVzID0gdGhpcy5jb25maWcucmFuZ2VUZW1wbGF0ZXM7XG5cbiAgICAgICAgaWYgKHN0YXJ0RGF0ZSAmJiBlbmREYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yYW5nZURhdGVUaW1lKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgcmFuZ2VUZW1wbGF0ZXMuY2xvc2VkUmFuZ2Uuc2hvcnQsIG9wdGlvbnM/LnNlY29uZHMsIG9wdGlvbnM/Lm1pbGxpc2Vjb25kcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5vcGVuZWRSYW5nZURhdGVUaW1lKFxuICAgICAgICAgICAgc3RhcnREYXRlLFxuICAgICAgICAgICAgZW5kRGF0ZSB8fCBudWxsLFxuICAgICAgICAgICAgcmFuZ2VUZW1wbGF0ZXMub3BlbmVkUmFuZ2Uuc2hvcnQsXG4gICAgICAgICAgICBvcHRpb25zPy5zZWNvbmRzLFxuICAgICAgICAgICAgb3B0aW9ucz8ubWlsbGlzZWNvbmRzXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHN0YXJ0RGF0ZSAtIHN0YXJ0IGRhdGVcbiAgICAgKiBAcGFyYW0gZW5kRGF0ZSAtIGVuZCBkYXRlXG4gICAgICogQHJldHVybnMgcmFuZ2UgZGF0ZSBpbiBsb25nIGZvcm1hdFxuICAgICAqL1xuICAgIHJhbmdlTG9uZ0RhdGUoc3RhcnREYXRlOiBEIHwgbnVsbCwgZW5kRGF0ZT86IEQgfCBudWxsKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcmFuZ2VUZW1wbGF0ZXMgPSB0aGlzLmNvbmZpZy5yYW5nZVRlbXBsYXRlcztcblxuICAgICAgICBpZiAoc3RhcnREYXRlICYmIGVuZERhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJhbmdlRGF0ZShzdGFydERhdGUsIGVuZERhdGUsIHJhbmdlVGVtcGxhdGVzLmNsb3NlZFJhbmdlLmxvbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMub3BlbmVkUmFuZ2VEYXRlKHN0YXJ0RGF0ZSwgZW5kRGF0ZSB8fCBudWxsLCByYW5nZVRlbXBsYXRlcy5vcGVuZWRSYW5nZS5sb25nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gc3RhcnREYXRlIC0gc3RhcnQgZGF0ZVxuICAgICAqIEBwYXJhbSBlbmREYXRlIC0gZW5kIGRhdGVcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIERhdGVUaW1lT3B0aW9uc1xuICAgICAqIEByZXR1cm5zIHJhbmdlIGRhdGUgaW4gbG9uZyBmb3JtYXQgd2l0aCB0aW1lXG4gICAgICovXG4gICAgcmFuZ2VMb25nRGF0ZVRpbWUoc3RhcnREYXRlOiBEIHwgbnVsbCwgZW5kRGF0ZT86IEQsIG9wdGlvbnM/OiBEYXRlVGltZU9wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCByYW5nZVRlbXBsYXRlcyA9IHRoaXMuY29uZmlnLnJhbmdlVGVtcGxhdGVzO1xuXG4gICAgICAgIGlmIChzdGFydERhdGUgJiYgZW5kRGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmFuZ2VEYXRlVGltZShzdGFydERhdGUsIGVuZERhdGUsIHJhbmdlVGVtcGxhdGVzLmNsb3NlZFJhbmdlLmxvbmcsIG9wdGlvbnM/LnNlY29uZHMsIG9wdGlvbnM/Lm1pbGxpc2Vjb25kcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5vcGVuZWRSYW5nZURhdGVUaW1lKHN0YXJ0RGF0ZSwgZW5kRGF0ZSB8fCBudWxsLCByYW5nZVRlbXBsYXRlcy5vcGVuZWRSYW5nZS5sb25nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gc3RhcnREYXRlIC0gc3RhcnQgZGF0ZVxuICAgICAqIEBwYXJhbSBlbmREYXRlIC0gZW5kIGRhdGVcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIERhdGVUaW1lT3B0aW9uc1xuICAgICAqIEByZXR1cm5zIHJhbmdlIG1pZGRsZSBkYXRlIHdpdGggdGltZVxuICAgICAqL1xuICAgIHJhbmdlTWlkZGxlRGF0ZVRpbWUoc3RhcnREYXRlOiBELCBlbmREYXRlOiBELCBvcHRpb25zPzogRGF0ZVRpbWVPcHRpb25zKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmFuZ2VEYXRlVGltZShcbiAgICAgICAgICAgIHN0YXJ0RGF0ZSxcbiAgICAgICAgICAgIGVuZERhdGUsXG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5yYW5nZVRlbXBsYXRlcy5jbG9zZWRSYW5nZS5taWRkbGUsXG4gICAgICAgICAgICBvcHRpb25zPy5zZWNvbmRzLFxuICAgICAgICAgICAgb3B0aW9ucz8ubWlsbGlzZWNvbmRzXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGRhdGUgLSBkYXRlIGZvciBjb21waWxlXG4gICAgICogQHBhcmFtIHZhcmlhYmxlcyAtIGRhdGUgdGVtcGxhdGUgdmFyaWFibGVzXG4gICAgICogQHBhcmFtIGN1cnJZZWFyRm9yY2VkIC0gcGFyYW0gZm9yIGFic29sdXRlIGRheXMgZm9ybWF0dGluZ1xuICAgICAqIEByZXR1cm5zIGNvbXBpbGVkVmFyaWFibGVzXG4gICAgICovXG4gICAgcHJpdmF0ZSBjb21waWxlVmFyaWFibGVzKGRhdGU6IEQsIHZhcmlhYmxlczogYW55LCBjdXJyWWVhckZvcmNlZDogYm9vbGVhbiA9IGZhbHNlKTogYW55IHtcbiAgICAgICAgY29uc3QgY29tcGlsZWRWYXJpYWJsZXM6IGFueSA9IHt9O1xuXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1mb3ItaW5cbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdmFyaWFibGVzKSB7XG4gICAgICAgICAgICBpZiAoIXZhcmlhYmxlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7IGNvbnRpbnVlOyB9XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdmFyaWFibGVzW2tleV07XG4gICAgICAgICAgICBjb21waWxlZFZhcmlhYmxlc1trZXldID0gdGhpcy5hZGFwdGVyLmZvcm1hdChkYXRlLCB2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb21waWxlZFZhcmlhYmxlcy5DVVJSRU5UX1lFQVIgPSAoY3VyclllYXJGb3JjZWQgJiYgJ25vJykgfHwgdGhpcy5oYXNTYW1lKGRhdGUsIHRoaXMuYWRhcHRlci50b2RheSgpLCAneWVhcicpO1xuXG4gICAgICAgIHJldHVybiBjb21waWxlZFZhcmlhYmxlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQmVmb3JlWWVzdGVyZGF5KGRhdGU6IEQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5kYXlzRnJvbVRvZGF5KGRhdGUpIDw9IC0yO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNZZXN0ZXJkYXkoZGF0ZTogRCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmRheXNGcm9tVG9kYXkoZGF0ZSkgPT09IC0xO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNUb2RheShkYXRlOiBEKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZGF5c0Zyb21Ub2RheShkYXRlKSA9PT0gMDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVG9tb3Jyb3coZGF0ZTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZGF5c0Zyb21Ub2RheShkYXRlKSA9PT0gMTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQWZ0ZXJUb21vcnJvdyhkYXRlOiBEKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZGF5c0Zyb21Ub2RheShkYXRlKSA+PSAyO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzU2FtZShzdGFydERhdGU6IEQsIGVuZERhdGU6IEQsIHVuaXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuaGFzU2FtZShzdGFydERhdGUsIGVuZERhdGUsIHVuaXQpID8gJ3llcycgOiAnbm8nO1xuICAgIH1cbn1cbiJdfQ==
445
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbW9zYWljL2NvcmUvZm9ybWF0dGVycy9kYXRlL2Zvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQ0FBa0M7QUFDbEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsNkJBQTZCO0FBQzdCLE9BQU8sYUFBYSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQWdCLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQXVHekMsTUFBTSxPQUFPLGFBQWE7SUFPdEIsWUFDcUIsT0FBdUIsRUFDaEIsTUFBYztRQURyQixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUwzQix5QkFBb0IsR0FBVyxjQUFjLENBQUM7UUFRM0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUU1QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRTVDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxZQUFZLENBQ1IsSUFBTyxFQUNQLFFBQW1DLEVBQ25DLE9BQU8sR0FBRyxLQUFL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LGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU8sV0FBVyxDQUFDLElBQU87UUFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU8sT0FBTyxDQUFDLElBQU87UUFDbkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVPLFVBQVUsQ0FBQyxJQUFTO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTyxlQUFlLENBQUMsSUFBTztRQUMzQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU8sT0FBTyxDQUFDLFNBQVksRUFBRSxPQUFVLEVBQUUsSUFBWTtRQUNsRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3pFLENBQUM7OzhIQXpqQlEsYUFBYSw2Q0FTVixjQUFjO2tJQVRqQixhQUFhOzRGQUFiLGFBQWE7a0JBRHpCLFVBQVU7OzBCQVVGLE1BQU07MkJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRzbGludDpkaXNhYmxlOm5vLW1hZ2ljLW51bWJlcnNcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuLy8gdHNsaW50OmRpc2FibGU6aW1wb3J0LW5hbWVcbmltcG9ydCBNZXNzYWdlRm9ybWF0IGZyb20gJ0BtZXNzYWdlZm9ybWF0L2NvcmUnO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIsIER1cmF0aW9uVW5pdCwgTUNfREFURV9MT0NBTEUgfSBmcm9tICdAcHRzZWN1cml0eS9jZGsvZGF0ZXRpbWUnO1xuXG5pbXBvcnQgeyBlblVTIH0gZnJvbSAnLi90ZW1wbGF0ZXMvZW4tVVMnO1xuaW1wb3J0IHsgcnVSVSB9IGZyb20gJy4vdGVtcGxhdGVzL3J1LVJVJztcblxuXG4vKipcbiAqIGludGVyZmFjZSBmb3IgYWJzb2x1dGUgZGF0ZSBvciBkYXRldGltZSBmb3JtYXR0ZXIgdGVtcGxhdGVcbiAqL1xuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5hbWluZy1jb252ZW50aW9uXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdHRlckFic29sdXRlVGVtcGxhdGUge1xuICAgIHZhcmlhYmxlcz86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuICAgIERBVEU6IHN0cmluZztcbiAgICBEQVRFVElNRTogc3RyaW5nO1xufVxuXG4vKipcbiAqIGludGVyZmFjZSBmb3IgcmFuZ2UgZGF0ZSBvciBkYXRldGltZSBmb3JtYXR0ZXIgdGVtcGxhdGVcbiAqL1xuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5hbWluZy1jb252ZW50aW9uXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdHRlclJhbmdlVGVtcGxhdGUge1xuICAgIHZhcmlhYmxlcz86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuICAgIFNUQVJUX0RBVEU6IHN0cmluZztcbiAgICBFTkRfREFURTogc3RyaW5nO1xuICAgIERBVEU6IHN0cmluZztcbiAgICBTVEFSVF9EQVRFVElNRTogc3RyaW5nO1xuICAgIEVORF9EQVRFVElNRTogc3RyaW5nO1xuICAgIERBVEVUSU1FOiBzdHJpbmc7XG59XG5cbi8qKlxuICogaW50ZXJmYWNlIGZvciByZWxhdGl2ZSBkYXRlIG9yIGRhdGV0aW1lIGZvcm1hdHRlciB0ZW1wbGF0ZVxuICovXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0dGVyUmVsYXRpdmVUZW1wbGF0ZSB7XG4gICAgdmFyaWFibGVzPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgQkVGT1JFX1lFU1RFUkRBWTogc3RyaW5nO1xuICAgIFlFU1RFUkRBWTogc3RyaW5nO1xuICAgIFRPREFZOiBzdHJpbmc7XG4gICAgVE9NT1JST1c6IHN0cmluZztcbiAgICBBRlRFUl9UT01PUlJPVzogc3RyaW5nO1xufVxuXG4vKipcbiAqIGludGVyZmFjZSBmb3IgZHVyYXRpb24gb2YgZGF0ZXMgbnVtZXJpYyBmb3JtYXR0ZXIgdGVtcGxhdGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3JtYXR0ZXJEdXJhdGlvbk51bWJlcnNUZW1wbGF0ZSB7XG4gICAgdmFyaWFibGVzPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgRlVMTDogc3RyaW5nO1xuICAgIE9OTFlfTUlOVVRFUzogc3RyaW5nO1xufVxuXG4vKipcbiAqIGludGVyZmFjZSBmb3IgZHVyYXRpb24gb2YgZGF0ZXMgdGV4dCBmb3JtYXR0ZXIgdGVtcGxhdGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3JtYXR0ZXJEdXJhdGlvblRlbXBsYXRlIHtcbiAgICB2YXJpYWJsZXM/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICBZRUFSUzogc3RyaW5nO1xuICAgIE1PTlRIUzogc3RyaW5nO1xuICAgIFdFRUtTOiBzdHJpbmc7XG4gICAgREFZUzogc3RyaW5nO1xuICAgIEhPVVJTOiBzdHJpbmc7XG4gICAgTUlOVVRFUzogc3RyaW5nO1xuICAgIFNFQ09ORFM6IHN0cmluZztcbiAgICBTRVBBUkFUT1I6IHN0cmluZztcbiAgICBZRUFSU19GUkFDVElPTjogc3RyaW5nO1xuICAgIE1PTlRIU19GUkFDVElPTjogc3RyaW5nO1xufVxuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVRpbWVPcHRpb25zIHtcbiAgICBzZWNvbmRzPzogYm9vbGVhbjtcbiAgICBtaWxsaXNlY29uZHM/OiBib29sZWFuO1xuICAgIGN1cnJZZWFyPzogYm9vbGVhbjtcbn1cblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5hbWluZy1jb252ZW50aW9uXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdHRlckNvbmZpZyB7XG4gICAgcmVsYXRpdmVUZW1wbGF0ZXM6IHtcbiAgICAgICAgc2hvcnQ6IEZvcm1hdHRlclJlbGF0aXZlVGVtcGxhdGU7XG4gICAgICAgIGxvbmc6IEZvcm1hdHRlclJlbGF0aXZlVGVtcGxhdGU7XG4gICAgfTtcbiAgICBhYnNvbHV0ZVRlbXBsYXRlczoge1xuICAgICAgICBzaG9ydDogRm9ybWF0dGVyQWJzb2x1dGVUZW1wbGF0ZTtcbiAgICAgICAgbG9uZzogRm9ybWF0dGVyQWJzb2x1dGVUZW1wbGF0ZTtcbiAgICB9O1xuICAgIHJhbmdlVGVtcGxhdGVzOiB7XG4gICAgICAgIGNsb3NlZFJhbmdlOiB7XG4gICAgICAgICAgICBzaG9ydDogRm9ybWF0dGVyUmFuZ2VUZW1wbGF0ZTtcbiAgICAgICAgICAgIG1pZGRsZTogRm9ybWF0dGVyUmFuZ2VUZW1wbGF0ZTtcbiAgICAgICAgICAgIGxvbmc6IEZvcm1hdHRlclJhbmdlVGVtcGxhdGU7XG4gICAgICAgIH07XG4gICAgICAgIG9wZW5lZFJhbmdlOiB7XG4gICAgICAgICAgICBzaG9ydDogRm9ybWF0dGVyUmFuZ2VUZW1wbGF0ZTtcbiAgICAgICAgICAgIGxvbmc6IEZvcm1hdHRlclJhbmdlVGVtcGxhdGU7XG4gICAgICAgIH07XG4gICAgfTtcbiAgICBkdXJhdGlvblRlbXBsYXRlczoge1xuICAgICAgICBzaG9ydGVzdDogRm9ybWF0dGVyRHVyYXRpb25OdW1iZXJzVGVtcGxhdGU7XG4gICAgICAgIHNob3J0OiBGb3JtYXR0ZXJEdXJhdGlvblRlbXBsYXRlO1xuICAgICAgICBsb25nOiBGb3JtYXR0ZXJEdXJhdGlvblRlbXBsYXRlO1xuICAgIH07XG59XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERhdGVGb3JtYXR0ZXI8RD4ge1xuICAgIGNvbmZpZzogRm9ybWF0dGVyQ29uZmlnO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnZhbGlkRGF0ZUVycm9yVGV4dDogc3RyaW5nID0gJ0ludmFsaWQgZGF0ZSc7XG5cbiAgICBwcml2YXRlIG1lc3NhZ2VGb3JtYXQ6IE1lc3NhZ2VGb3JtYXQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhZGFwdGVyOiBEYXRlQWRhcHRlcjxEPixcbiAgICAgICAgQEluamVjdChNQ19EQVRFX0xPQ0FMRSkgbG9jYWxlOiBzdHJpbmdcbiAgICApIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSBsb2NhbGUgPT09ICdlbicgPyBlblVTIDogcnVSVTtcblxuICAgICAgICB0aGlzLm1lc3NhZ2VGb3JtYXQgPSBuZXcgTWVzc2FnZUZvcm1hdChsb2NhbGUpO1xuICAgIH1cblxuICAgIHNldExvY2FsZShsb2NhbGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IGxvY2FsZSA9PT0gJ2VuJyA/IGVuVVMgOiBydVJVO1xuXG4gICAgICAgIHRoaXMuYWRhcHRlci5zZXRMb2NhbGUobG9jYWxlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZGF0ZSAtIGRhdGVcbiAgICAgKiBAcGFyYW0gdGVtcGxhdGUgLSB0ZW1wbGF0ZVxuICAgICAqIEBwYXJhbSBzZWNvbmRzIC0gdXNlIHNlY29uZHNcbiAgICAgKiBAcGFyYW0gbWlsbGlzZWNvbmRzIC0gdXNlIG1pbGxpc2Vjb25kc1xuICAgICAqIEByZXR1cm5zIHJlbGF0aXZlIGRhdGUgYnkgdGVtcGxhdGVcbiAgICAgKi9cbiAgICByZWxhdGl2ZURhdGUoXG4gICAgICAgIGRhdGU6IEQsXG4gICAgICAgIHRlbXBsYXRlOiBGb3JtYXR0ZXJSZWxhdGl2ZVRlbXBsYXRlLFxuICAgICAgICBzZWNvbmRzID0gZmFsc2UsXG4gICAgICAgIG1pbGxpc2Vjb25kcyA9IGZhbHNlXG4gICAgKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLmFkYXB0ZXIuaXNEYXRlSW5zdGFuY2UoZGF0ZSkpIHsgdGhyb3cgbmV3IEVycm9yKHRoaXMuaW52YWxpZERhdGVFcnJvclRleHQpOyB9XG5cbiAgICAgICAgbGV0IG5ld1RlbXBsYXRlO1xuXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlVmFyaWFibGVzID0gey4uLnRoaXMuYWRhcHRlci5jb25maWcudmFyaWFibGVzLCAuLi50ZW1wbGF0ZS52YXJpYWJsZXN9O1xuXG4gICAgICAgIGlmICh0aGlzLmlzQmVmb3JlWWVzdGVyZGF5KGRhdGUpKSB7XG4gICAgICAgICAgICBuZXdUZW1wbGF0ZSA9IHRlbXBsYXRlLkJFRk9SRV9ZRVNURVJEQVk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1llc3RlcmRheShkYXRlKSkge1xuICAgICAgICAgICAgbmV3VGVtcGxhdGUgPSB0ZW1wbGF0ZS5ZRVNURVJEQVk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1RvZGF5KGRhdGUpKSB7XG4gICAgICAgICAgICBuZXdUZW1wbGF0ZSA9IHRlbXBsYXRlLlRPREFZO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNUb21vcnJvdyhkYXRlKSkge1xuICAgICAgICAgICAgbmV3VGVtcGxhdGUgPSB0ZW1wbGF0ZS5UT01PUlJPVztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzQWZ0ZXJUb21vcnJvdyhkYXRlKSkge1xuICAgICAgICAgICAgbmV3VGVtcGxhdGUgPSB0ZW1wbGF0ZS5BRlRFUl9UT01PUlJPVztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlcyA9IHRoaXMuY29tcGlsZVZhcmlhYmxlcyhkYXRlLCB0ZW1wbGF0ZVZhcmlhYmxlcyk7XG5cbiAgICAgICAgdmFyaWFibGVzLlNIT1dfU0VDT05EUyA9IHNlY29uZHMgPyAneWVzJyA6ICdubyc7XG4gICAgICAgIHZhcmlhYmxlcy5TSE9XX01JTExJU0VDT05EUyA9IG1pbGxpc2Vjb25kcyA/ICd5ZXMnIDogJ25vJztcblxuICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlRm9ybWF0LmNvbXBpbGUobmV3VGVtcGxhdGUpKHZhcmlhYmxlcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGRhdGUgLSBkYXRlXG4gICAgICogQHJldHVybnMgcmVsYXRpdmUgZGF0ZSBpbiBzaG9ydCBmb3JtYXRcbiAgICAgKi9cbiAgICByZWxhdGl2ZVNob3J0RGF0ZShkYXRlOiBEKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVsYXRpdmVEYXRlKGRhdGUsIHRoaXMuY29uZmlnLnJlbGF0aXZlVGVtcGxhdGVzLnNob3J0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZGF0ZSAtIGRhdGVcbiAgICAgKiBAcmV0dXJucyByZWxhdGl2ZSBkYXRlIGluIGxvbmcgZm9ybWF0XG4gICAgICovXG4gICAgcmVsYXRpdmVMb25nRGF0ZShkYXRlOiBEKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVsYXRpdmVEYXRlKGRhdGUsIHRoaXMuY29uZmlnLnJlbGF0aXZlVGVtcGxhdGVzLmxvbmcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBkYXRlIC0gZGF0ZVxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gRGF0ZVRpbWVPcHRpb25zXG4gICAgICogQHJldHVybnMgcmVsYXRpdmUgZGF0ZSBpbiBzaG9ydCBmb3JtYXQgd2l0aCB0aW1lXG4gICAgICovXG4gICAgcmVsYXRpdmVTaG9ydERhdGVUaW1lKGRhdGU6IEQsIG9wdGlvbnM/OiBEYXRlVGltZU9wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWxhdGl2ZURhdGUoZGF0ZSwgdGhpcy5jb25maWcucmVsYXRpdmVUZW1wbGF0ZXMuc2hvcnQsIG9wdGlvbnM/LnNlY29uZHMsIG9wdGlvbnM/Lm1pbGxpc2Vjb25kcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGRhdGUgLSBkYXRlXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBEYXRlVGltZU9wdGlvbnNcbiAgICAgKiBAcmV0dXJucyByZWxhdGl2ZSBkYXRlIGluIGxvbmcgZm9ybWF0IHdpdGggdGltZVxuICAgICAqL1xuICAgIHJlbGF0aXZlTG9uZ0RhdGVUaW1lKGRhdGU6IEQsIG9wdGlvbnM/OiBEYXRlVGltZU9wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWxhdGl2ZURhdGUoZGF0ZSwgdGhpcy5jb25maWcucmVsYXRpdmVUZW1wbGF0ZXMubG9uZywgb3B0aW9ucz8uc2Vjb25kcywgb3B0aW9ucz8ubWlsbGlzZWNvbmRzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZGF0ZSAtIGRhdGVcbiAgICAgKiBAcGFyYW0gcGFyYW1zIC0gcGFyYW1ldGVyc1xuICAgICAqIEBwYXJhbSBkYXRldGltZSAtIHNob3VsZCB0aW1lIGJlIHNob3duIGFzIHdlbGxcbiAgICAgKiBAcGFyYW0gc2Vjb25kcyAtIHNob3VsZCB0aW1lIHdpdGggc2Vjb25kcyBiZSBzaG93biBhcyB3ZWxsXG4gICAgICogQHBhcmFtIG1pbGxpc2Vjb25kcyAtIHNob3VsZCB0aW1lIHdpdGggbWlsbGlzZWNvbmRzIGJlIHNob3duIGFzIHdlbGxcbiAgICAgKiBAcGFyYW0gY3VyclllYXIgLSBzaG91bGQgY3VycmVudCB5ZWFyIGJlIHNob3duIGFzIHdlbGxcbiAgICAgKi9cbiAgICBhYnNvbHV0ZURhdGUoXG4gICAgICAgIGRhdGU6IEQsXG4gICAgICAgIHBhcmFtczogRm9ybWF0dGVyQWJzb2x1dGVUZW1wbGF0ZSxcbiAgICAgICAgZGF0ZXRpbWUgPSBmYWxzZSxcbiAgICAgICAgc2Vjb25kcyA9IGZhbHNlLFxuICAgICAgICBtaWxsaXNlY29uZHMgPSBmYWxzZSxcbiAgICAgICAgY3VyclllYXIgPSBmYWxzZVxuICAgICk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdGhpcy5hZGFwdGVyLmlzRGF0ZUluc3RhbmNlKGRhdGUpKSB7IHRocm93IG5ldyBFcnJvcih0aGlzLmludmFsaWREYXRlRXJyb3JUZXh0KTsgfVxuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlcyA9IHRoaXMuY29tcGlsZVZhcmlhYmxlcyhkYXRlLCB7IC4uLnRoaXMuYWRhcHRlci5jb25maWcudmFyaWFibGVzLCAuLi5wYXJhbXMudmFyaWFibGVzIH0sIGN1cnJZZWFyKTtcblxuICAgICAgICB2YXJpYWJsZXMuU0hPV19TRUNPTkRTID0gc2Vjb25kcyA/ICd5ZXMnIDogJ25vJztcbiAgICAgICAgdmFyaWFibGVzLlNIT1dfTUlMTElTRUNPTkRTID0gbWlsbGlzZWNvbmRzID8gJ3llcycgOiAnbm8nO1xuXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlID0gZGF0ZXRpbWUgPyBwYXJhbXMuREFURVRJTUUgOiBwYXJhbXMuREFURTtcblxuICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlRm9ybWF0LmNvbXBpbGUodGVtcGxhdGUpKHZhcmlhYmxlcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGRhdGUgLSBkYXRlXG4gICAgICogQHBhcmFtIGN1cnJZZWFyIC0gc2hvdWxkIHRoZSB5ZWFyIGJlIHNob3duIGZvcmNlZFxuICAgICAqIEByZXR1cm5zIGFic29sdXRlIGRhdGUgaW4gc2hvcnQgZm9ybWF0XG4gICAgICovXG4gICAgYWJzb2x1dGVTaG9ydERhdGUoZGF0ZTogRCwgY3VyclllYXIgPSBmYWxzZSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFic29sdXRlRGF0ZShkYXRlLCB0aGlzLmNvbmZpZy5hYnNvbHV0ZVRlbXBsYXRlcy5zaG9ydCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgY3VyclllYXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBkYXRlIC0gZGF0ZVxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gRGF0ZVRpbWVPcHRpb25zXG4gICAgICogQHJldHVybnMgYWJzb2x1dGUgZGF0ZSBpbiBzaG9ydCBmb3JtYXQgd2l0aCB0aW1lXG4gICAgICovXG4gICAgYWJzb2x1dGVTaG9ydERhdGVUaW1lKGRhdGU6IEQsIG9wdGlvbnM/OiBEYXRlVGltZU9wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5hYnNvbHV0ZURhdGUoXG4gICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgdGhpcy5jb25maWcuYWJzb2x1dGVUZW1wbGF0ZXMuc2hvcnQsXG4gICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgb3B0aW9ucz8uc2Vjb25kcyxcbiAgICAgICAgICAgIG9wdGlvbnM/Lm1pbGxpc2Vjb25kcyxcbiAgICAgICAgICAgIG9wdGlvbnM/LmN1cnJZZWFyXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGRhdGUgLSBkYXRlXG4gICAgICogQHBhcmFtIGN1cnJZZWFyIC0gc2hvdWxkIHRoZSB5ZWFyIGJlIHNob3duIGZvcmNlZFxuICAgICAqIEByZXR1cm5zIGFic29sdXRlIGRhdGUgaW4gbG9uZyBmb3JtYXRcbiAgICAgKi9cbiAgICBhYnNvbHV0ZUxvbmdEYXRlKGRhdGU6IEQsIGN1cnJZZWFyID0gZmFsc2UpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5hYnNvbHV0ZURhdGUoZGF0ZSwgdGhpcy5jb25maWcuYWJzb2x1dGVUZW1wbGF0ZXMubG9uZywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgY3VyclllYXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBkYXRlIC0gZGF0ZVxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gRGF0ZVRpbWVPcHRpb25zXG4gICAgICogQHJldHVybnMgYWJzb2x1dGUgZGF0ZSBpbiBsb25nIGZvcm1hdCB3aXRoIHRpbWVcbiAgICAgKi9cbiAgICBhYnNvbHV0ZUxvbmdEYXRlVGltZShkYXRlOiBELCBvcHRpb25zPzogRGF0ZVRpbWVPcHRpb25zKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWJzb2x1dGVEYXRlKFxuICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmFic29sdXRlVGVtcGxhdGVzLmxvbmcsXG4gICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgb3B0aW9ucz8uc2Vjb25kcyxcbiAgICAgICAgICAgIG9wdGlvbnM/Lm1pbGxpc2Vjb25kcyxcbiAgICAgICAgICAgIG9wdGlvbnM/LmN1cnJZZWFyXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHN0YXJ0RGF0ZSAtIHN0YXJ0IGRhdGVcbiAgICAgKiBAcGFyYW0gZW5kRGF0ZSAtIGVuZCBkYXRlXG4gICAgICogQHBhcmFtIHRlbXBsYXRlIC0gdGVtcGxhdGVcbiAgICAgKiBAcmV0dXJucyBvcGVuZWQgZGF0ZVxuICAgICAqL1xuICAgIG9wZW5lZFJhbmdlRGF0ZShzdGFydERhdGU6IEQgfCBudWxsLCBlbmREYXRlOiBEIHwgbnVsbCwgdGVtcGxhdGU6IEZvcm1hdHRlclJhbmdlVGVtcGxhdGUpIHtcbiAgICAgICAgaWYgKCF0aGlzLmFkYXB0ZXIuaXNEYXRlSW5zdGFuY2Uoc3RhcnREYXRlKSAmJiAhdGhpcy5hZGFwdGVyLmlzRGF0ZUluc3RhbmNlKGVuZERhdGUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5pbnZhbGlkRGF0ZUVycm9yVGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YXJpYWJsZXMgPSB7IC4uLnRoaXMuYWRhcHRlci5jb25maWcudmFyaWFibGVzLCAuLi50ZW1wbGF0ZS52YXJpYWJsZXMgfTtcbiAgICAgICAgbGV0IHBhcmFtcyA9IHt9O1xuXG4gICAgICAgIGlmIChzdGFydERhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0RGF0ZVZhcmlhYmxlcyA9IHRoaXMuY29tcGlsZVZhcmlhYmxlcyhzdGFydERhdGUsIHZhcmlhYmxlcyk7XG5cbiAgICAgICAgICAgIHBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICAuLi52YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgU1RBUlRfREFURTogdGhpcy5tZXNzYWdlRm9ybWF0LmNvbXBpbGUodGVtcGxhdGUuU1RBUlRfREFURSkoc3RhcnREYXRlVmFyaWFibGVzKSxcbiAgICAgICAgICAgICAgICBSQU5HRV9UWVBFOiAnb25seVN0YXJ0J1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIGlmIChlbmREYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBlbmREYXRlVmFyaWFibGVzID0gdGhpcy5jb21waWxlVmFyaWFibGVzKGVuZERhdGUsIHZhcmlhYmxlcyk7XG5cbiAgICAgICAgICAgIHBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICAuLi52YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgRU5EX0RBVEU6IHRoaXMubWVzc2FnZUZvcm1hdC5jb21waWxlKHRlbXBsYXRlLkVORF9EQVRFKShlbmREYXRlVmFyaWFibGVzKSxcbiAgICAgICAgICAgICAgICBSQU5HRV9UWVBFOiAnb25seUVuZCdcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlRm9ybWF0LmNvbXBpbGUodGVtcGxhdGUuREFURSkocGFyYW1zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gc3RhcnREYXRlIC0gc3RhcnQgZGF0ZVxuICAgICAqIEBwYXJhbSBlbmREYXRlIC0gZW5kIGRhdGVcbiAgICAgKiBAcGFyYW0gdGVtcGxhdGUgLSB0ZW1wbGF0ZVxuICAgICAqIEBwYXJhbSBzZWNvbmRzIC0gc2hvdWxkIHRpbWUgd2l0aCBzZWNvbmRzIGJlIHNob3duIGFzIHdlbGxcbiAgICAgKiBAcGFyYW0gbWlsbGlzZWNvbmRzIC0gc2hvdWxkIHRpbWUgd2l0aCBtaWxsaXNlY29uZHMgYmUgc2hvd24gYXMgd2VsbFxuICAgICAqIEByZXR1cm5zIG9wZW5lZCBkYXRlXG4gICAgICovXG4gICAgb3BlbmVkUmFuZ2VEYXRlVGltZShcbiAgICAgICAgc3RhcnREYXRlOiBEIHwgbnVsbCxcbiAgICAgICAgZW5kRGF0ZTogRCB8IG51bGwsXG4gICAgICAgIHRlbXBsYXRlOiBGb3JtYXR0ZXJSYW5nZVRlbXBsYXRlLFxuICAgICAgICBzZWNvbmRzID0gZmFsc2UsXG4gICAgICAgIG1pbGxpc2Vjb25kcyA9IGZhbHNlXG4gICAgKSB7XG4gICAgICAgIGlmICghdGhpcy5hZGFwdGVyLmlzRGF0ZUluc3RhbmNlKHN0YXJ0RGF0ZSkgJiYgIXRoaXMuYWRhcHRlci5pc0RhdGVJbnN0YW5jZShlbmREYXRlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMuaW52YWxpZERhdGVFcnJvclRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmFyaWFibGVzID0geyAuLi50aGlzLmFkYXB0ZXIuY29uZmlnLnZhcmlhYmxlcywgLi4udGVtcGxhdGUudmFyaWFibGVzIH07XG4gICAgICAgIGxldCBwYXJhbXMgPSB7fTtcblxuICAgICAgICBpZiAoc3RhcnREYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBzdGFydERhdGVWYXJpYWJsZXMgPSB0aGlzLmNvbXBpbGVWYXJpYWJsZXMoc3RhcnREYXRlLCB2YXJpYWJsZXMpO1xuICAgICAgICAgICAgc3RhcnREYXRlVmFyaWFibGVzLlNIT1dfU0VDT05EUyA9IHNlY29uZHMgPyAneWVzJyA6ICdubyc7XG4gICAgICAgICAgICBzdGFydERhdGVWYXJpYWJsZXMuU0hPV19NSUxMSVNFQ09ORFMgPSBtaWxsaXNlY29uZHMgPyAneWVzJyA6ICdubyc7XG5cbiAgICAgICAgICAgIHBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICAuLi52YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgU1RBUlRfREFURVRJTUU6IHRoaXMubWVzc2FnZUZvcm1hdC5jb21waWxlKHRlbXBsYXRlLlNUQVJUX0RBVEVUSU1FKShzdGFydERhdGVWYXJpYWJsZXMpLFxuICAgICAgICAgICAgICAgIFJBTkdFX1RZUEU6ICdvbmx5U3RhcnQnXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKGVuZERhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGVuZERhdGVWYXJpYWJsZXMgPSB0aGlzLmNvbXBpbGVWYXJpYWJsZXMoZW5kRGF0ZSwgdmFyaWFibGVzKTtcbiAgICAgICAgICAgIGVuZERhdGVWYXJpYWJsZXMuU0hPV19TRUNPTkRTID0gc2Vjb25kcyA/ICd5ZXMnIDogJ25vJztcbiAgICAgICAgICAgIGVuZERhdGVWYXJpYWJsZXMuU0hPV19NSUxMSVNFQ09ORFMgPSBtaWxsaXNlY29uZHMgPyAneWVzJyA6ICdubyc7XG5cbiAgICAgICAgICAgIHBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICAuLi52YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgRU5EX0RBVEVUSU1FOiB0aGlzLm1lc3NhZ2VGb3JtYXQuY29tcGlsZSh0ZW1wbGF0ZS5FTkRfREFURVRJTUUpKGVuZERhdGVWYXJpYWJsZXMpLFxuICAgICAgICAgICAgICAgIFJBTkdFX1RZUEU6ICdvbmx5RW5kJ1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2VGb3JtYXQuY29tcGlsZSh0ZW1wbGF0ZS5EQVRFVElNRSkocGFyYW1zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gc3RhcnREYXRlIC0gc3RhcnQgZGF0ZVxuICAgICAqIEBwYXJhbSBlbmREYXRlIC0gZW5kIGRhdGVcbiAgICAgKiBAcGFyYW0gdGVtcGxhdGUgLSB0ZW1wbGF0ZVxuICAgICAqIEByZXR1cm5zIHJhbmdlIGRhdGUgaW4gdGVtcGxhdGUgZm9ybWF0XG4gICAgICovXG4gICAgcmFuZ2VEYXRlKHN0YXJ0RGF0ZTogRCwgZW5kRGF0ZTogRCwgdGVtcGxhdGU6IEZvcm1hdHRlclJhbmdlVGVtcGxhdGUpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXRoaXMuYWRhcHRlci5pc0RhdGVJbnN0YW5jZShzdGFydERhdGUpIHx8ICF0aGlzLmFkYXB0ZXIuaXNEYXRlSW5zdGFuY2UoZW5kRGF0ZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLmludmFsaWREYXRlRXJyb3JUZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlcyA9IHsgLi4udGhpcy5hZGFwdGVyLmNvbmZpZy52YXJpYWJsZXMsIC4uLnRlbXBsYXRlLnZhcmlhYmxlcyB9O1xuICAgICAgICBjb25zdCBzYW1lTW9udGggPSB0aGlzLmhhc1NhbWUoc3RhcnREYXRlLCBlbmREYXRlLCAnbW9udGgnKTtcblxuICAgICAgICBjb25zdCBzdGFydERhdGVWYXJpYWJsZXMgPSB0aGlzLmNvbXBpbGVWYXJpYWJsZXMoc3RhcnREYXRlLCB2YXJpYWJsZXMpO1xuICAgICAgICBzdGFydERhdGVWYXJpYWJsZXMuU0FNRV9NT05USCA9IHNhbWVNb250aDtcblxuICAgICAgICBjb25zdCBlbmREYXRlVmFyaWFibGVzID0gdGhpcy5jb21waWxlVmFyaWFibGVzKGVuZERhdGUsIHZhcmlhYmxlcyk7XG4gICAgICAgIGVuZERhdGVWYXJpYWJsZXMuU0FNRV9NT05USCA9IHNhbWVNb250aDtcblxuICAgICAgICBjb25zdCBib3RoQ3VycmVudFllYXIgPSBzdGFydERhdGVWYXJpYWJsZXMuQ1VSUkVOVF9ZRUFSID09PSAneWVzJyAmJiBlbmREYXRlVmFyaWFibGVzLkNVUlJFTlRfWUVBUiA9PT0gJ3llcyc7XG4gICAgICAgIHN0YXJ0RGF0ZVZhcmlhYmxlcy5DVVJSRU5UX1lFQVIgPSBib3RoQ3VycmVudFllYXIgPyAneWVzJyA6ICdubyc7XG4gICAgICAgIGVuZERhdGVWYXJpYWJsZXMuQ1VSUkVOVF9ZRUFSID0gYm90aEN1cnJlbnRZZWFyID8gJ3llcycgOiAnbm8nO1xuXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICAgIC4uLnZhcmlhYmxlcyxcbiAgICAgICAgICAgIFNUQVJUX0RBVEU6IHRoaXMubWVzc2FnZUZvcm1hdC5jb21waWxlKHRlbXBsYXRlLlNUQVJUX0RBVEUpKHN0YXJ0RGF0ZVZhcmlhYmxlcyksXG4gICAgICAgICAgICBFTkRfREFURTogdGhpcy5tZXNzYWdlRm9ybWF0LmNvbXBpbGUodGVtcGxhdGUuRU5EX0RBVEUpKGVuZERhdGVWYXJpYWJsZXMpLFxuICAgICAgICAgICAgU0FNRV9NT05USDogc2FtZU1vbnRoXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZUZvcm1hdC5jb21waWxlKHRlbXBsYXRlLkRBVEUpKHBhcmFtcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHN0YXJ0RGF0ZSAtIHN0YXJ0IGRhdGVcbiAgICAgKiBAcGFyYW0gZW5kRGF0ZSAtIGVuZCBkYXRlXG4gICAgICogQHBhcmFtIHRlbXBsYXRlIC0gdGVtcGxhdGVcbiAgICAgKiBAcGFyYW0gc2Vjb25kcyAtIHVzZSBzZWNvbmRzXG4gICAgICogQHBhcmFtIG1pbGxpc2Vjb25kcyAtIHVzZSBtaWxsaXNlY29uZHNcbiAgICAgKiBAcmV0dXJucyByYW5nZSBkYXRlIGluIHRlbXBsYXRlIGZvcm1hdCB3aXRoIHRpbWVcbiAgICAgKi9cbiAgICByYW5nZURhdGVUaW1lKHN0YXJ0RGF0ZTogRCwgZW5kRGF0ZTogRCwgdGVtcGxhdGU6IEZvcm1hdHRlclJhbmdlVGVtcGxhdGUsIHNlY29uZHMgPSBmYWxzZSwgbWlsbGlzZWNvbmRzID0gZmFsc2UpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXRoaXMuYWRhcHRlci5pc0RhdGVJbnN0YW5jZShzdGFydERhdGUpIHx8ICF0aGlzLmFkYXB0ZXIuaXNEYXRlSW5zdGFuY2UoZW5kRGF0ZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLmludmFsaWREYXRlRXJyb3JUZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlcyA9IHsuLi50aGlzLmFkYXB0ZXIuY29uZmlnLnZhcmlhYmxlcywgLi4udGVtcGxhdGUudmFyaWFibGVzfTtcblxuICAgICAgICBjb25zdCBzYW1lTW9udGggPSB0aGlzLmhhc1NhbWUoc3RhcnREYXRlLCBlbmREYXRlLCAnbW9udGgnKTtcbiAgICAgICAgY29uc3Qgc2FtZURheSA9IHRoaXMuaGFzU2FtZShzdGFydERhdGUsIGVuZERhdGUsICdkYXknKTtcblxuICAgICAgICBjb25zdCBzdGFydERhdGVWYXJpYWJsZXMgPSB0aGlzLmNvbXBpbGVWYXJpYWJsZXMoc3RhcnREYXRlLCB2YXJpYWJsZXMpO1xuICAgICAgICBzdGFydERhdGVWYXJpYWJsZXMuU0FNRV9NT05USCA9IHNhbWVNb250aDtcbiAgICAgICAgc3RhcnREYXRlVmFyaWFibGVzLlNBTUVfREFZID0gc2FtZURheTtcbiAgICAgICAgc3RhcnREYXRlVmFyaWFibGVzLlNIT1dfU0VDT05EUyA9IHNlY29uZHMgPyAneWVzJyA6ICdubyc7XG4gICAgICAgIHN0YXJ0RGF0ZVZhcmlhYmxlcy5TSE9XX01JTExJU0VDT05EUyA9IG1pbGxpc2Vjb25kcyA/ICd5ZXMnIDogJ25vJztcblxuICAgICAgICBjb25zdCBlbmREYXRlVmFyaWFibGVzID0gdGhpcy5jb21waWxlVmFyaWFibGVzKGVuZERhdGUsIHZhcmlhYmxlcyk7XG4gICAgICAgIGVuZERhdGVWYXJpYWJsZXMuU0FNRV9NT05USCA9IHNhbWVNb250aDtcbiAgICAgICAgZW5kRGF0ZVZhcmlhYmxlcy5TQU1FX0RBWSA9IHNhbWVEYXk7XG4gICAgICAgIGVuZERhdGVWYXJpYWJsZXMuU0hPV19TRUNPTkRTID0gc2Vjb25kcyA/ICd5ZXMnIDogJ25vJztcbiAgICAgICAgZW5kRGF0ZVZhcmlhYmxlcy5TSE9XX01JTExJU0VDT05EUyA9IG1pbGxpc2Vjb25kcyA/ICd5ZXMnIDogJ25vJztcblxuICAgICAgICBjb25zdCBib3RoQ3VycmVudFllYXIgPSBzdGFydERhdGVWYXJpYWJsZXMuQ1VSUkVOVF9ZRUFSID09PSAneWVzJyAmJiBlbmREYXRlVmFyaWFibGVzLkNVUlJFTlRfWUVBUiA9PT0gJ3llcyc7XG4gICAgICAgIHN0YXJ0RGF0ZVZhcmlhYmxlcy5DVVJSRU5UX1lFQVIgPSBib3RoQ3VycmVudFllYXIgPyAneWVzJyA6ICdubyc7XG4gICAgICAgIGVuZERhdGVWYXJpYWJsZXMuQ1VSUkVOVF9ZRUFSID0gYm90aEN1cnJlbnRZZWFyID8gJ3llcycgOiAnbm8nO1xuXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICAgIC4uLnZhcmlhYmxlcyxcbiAgICAgICAgICAgIFNUQVJUX0RBVEVUSU1FOiB0aGlzLm1lc3NhZ2VGb3JtYXQuY29tcGlsZSh0ZW1wbGF0ZS5TVEFSVF9EQVRFVElNRSkoc3RhcnREYXRlVmFyaWFibGVzKSxcbiAgICAgICAgICAgIEVORF9EQVRFVElNRTogdGhpcy5tZXNzYWdlRm9ybWF0LmNvbXBpbGUodGVtcGxhdGUuRU5EX0RBVEVUSU1FKShlbmREYXRlVmFyaWFibGVzKSxcbiAgICAgICAgICAgIFNBTUVfTU9OVEg6IHNhbWVNb250aCxcbiAgICAgICAgICAgIFNBTUVfREFZOiBzYW1lRGF5XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZUZvcm1hdC5jb21waWxlKHRlbXBsYXRlLkRBVEVUSU1FKShwYXJhbXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBzdGFydERhdGUgLSBzdGFydCBkYXRlXG4gICAgICogQHBhcmFtIGVuZERhdGUgLSBlbmQgZGF0ZVxuICAgICAqIEByZXR1cm5zIHJhbmdlIGRhdGUgaW4gc2hvcnQgZm9ybWF0XG4gICAgICovXG4gICAgcmFuZ2VTaG9ydERhdGUoc3RhcnREYXRlOiBEIHwgbnVsbCwgZW5kRGF0ZT86IEQpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCByYW5nZVRlbXBsYXRlcyA9IHRoaXMuY29uZmlnLnJhbmdlVGVtcGxhdGVzO1xuXG4gICAgICAgIGlmIChzdGFydERhdGUgJiYgZW5kRGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmFuZ2VEYXRlKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgcmFuZ2VUZW1wbGF0ZXMuY2xvc2VkUmFuZ2Uuc2hvcnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMub3BlbmVkUmFuZ2VEYXRlKHN0YXJ0RGF0ZSwgZW5kRGF0ZSB8fCBudWxsLCByYW5nZVRlbXBsYXRlcy5vcGVuZWRSYW5nZS5zaG9ydCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHN0YXJ0RGF0ZSAtIHN0YXJ0IGRhdGVcbiAgICAgKiBAcGFyYW0gZW5kRGF0ZSAtIGVuZCBkYXRlXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBEYXRlVGltZU9wdGlvbnNcbiAgICAgKiBAcmV0dXJucyByYW5nZSBkYXRlIGluIHNob3J0IGZvcm1hdCB3aXRoIHRpbWVcbiAgICAgKi9cbiAgICByYW5nZVNob3J0RGF0ZVRpbWUoc3RhcnREYXRlOiBEIHwgbnVsbCwgZW5kRGF0ZT86IEQgfCBudWxsLCBvcHRpb25zPzogRGF0ZVRpbWVPcHRpb25zKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcmFuZ2VUZW1wbGF0ZXMgPSB0aGlzLmNvbmZpZy5yYW5nZVRlbXBsYXRlcztcblxuICAgICAgICBpZiAoc3RhcnREYXRlICYmIGVuZERhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJhbmdlRGF0ZVRpbWUoc3RhcnREYXRlLCBlbmREYXRlLCByYW5nZVRlbXBsYXRlcy5jbG9zZWRSYW5nZS5zaG9ydCwgb3B0aW9ucz8uc2Vjb25kcywgb3B0aW9ucz8ubWlsbGlzZWNvbmRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm9wZW5lZFJhbmdlRGF0ZVRpbWUoXG4gICAgICAgICAgICBzdGFydERhdGUsXG4gICAgICAgICAgICBlbmREYXRlIHx8IG51bGwsXG4gICAgICAgICAgICByYW5nZVRlbXBsYXRlcy5vcGVuZWRSYW5nZS5zaG9ydCxcbiAgICAgICAgICAgIG9wdGlvbnM/LnNlY29uZHMsXG4gICAgICAgICAgICBvcHRpb25zPy5taWxsaXNlY29uZHNcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gc3RhcnREYXRlIC0gc3RhcnQgZGF0ZVxuICAgICAqIEBwYXJhbSBlbmREYXRlIC0gZW5kIGRhdGVcbiAgICAgKiBAcmV0dXJucyByYW5nZSBkYXRlIGluIGxvbmcgZm9ybWF0XG4gICAgICovXG4gICAgcmFuZ2VMb25nRGF0ZShzdGFydERhdGU6IEQgfCBudWxsLCBlbmREYXRlPzogRCB8IG51bGwpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCByYW5nZVRlbXBsYXRlcyA9IHRoaXMuY29uZmlnLnJhbmdlVGVtcGxhdGVzO1xuXG4gICAgICAgIGlmIChzdGFydERhdGUgJiYgZW5kRGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmFuZ2VEYXRlKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgcmFuZ2VUZW1wbGF0ZXMuY2xvc2VkUmFuZ2UubG9uZyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5vcGVuZWRSYW5nZURhdGUoc3RhcnREYXRlLCBlbmREYXRlIHx8IG51bGwsIHJhbmdlVGVtcGxhdGVzLm9wZW5lZFJhbmdlLmxvbmcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBzdGFydERhdGUgLSBzdGFydCBkYXRlXG4gICAgICogQHBhcmFtIGVuZERhdGUgLSBlbmQgZGF0ZVxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gRGF0ZVRpbWVPcHRpb25zXG4gICAgICogQHJldHVybnMgcmFuZ2UgZGF0ZSBpbiBsb25nIGZvcm1hdCB3aXRoIHRpbWVcbiAgICAgKi9cbiAgICByYW5nZUxvbmdEYXRlVGltZShzdGFydERhdGU6IEQgfCBudWxsLCBlbmREYXRlPzogRCwgb3B0aW9ucz86IERhdGVUaW1lT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHJhbmdlVGVtcGxhdGVzID0gdGhpcy5jb25maWcucmFuZ2VUZW1wbGF0ZXM7XG5cbiAgICAgICAgaWYgKHN0YXJ0RGF0ZSAmJiBlbmREYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yYW5nZURhdGVUaW1lKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgcmFuZ2VUZW1wbGF0ZXMuY2xvc2VkUmFuZ2UubG9uZywgb3B0aW9ucz8uc2Vjb25kcywgb3B0aW9ucz8ubWlsbGlzZWNvbmRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm9wZW5lZFJhbmdlRGF0ZVRpbWUoc3RhcnREYXRlLCBlbmREYXRlIHx8IG51bGwsIHJhbmdlVGVtcGxhdGVzLm9wZW5lZFJhbmdlLmxvbmcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBzdGFydERhdGUgLSBzdGFydCBkYXRlXG4gICAgICogQHBhcmFtIGVuZERhdGUgLSBlbmQgZGF0ZVxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gRGF0ZVRpbWVPcHRpb25zXG4gICAgICogQHJldHVybnMgcmFuZ2UgbWlkZGxlIGRhdGUgd2l0aCB0aW1lXG4gICAgICovXG4gICAgcmFuZ2VNaWRkbGVEYXRlVGltZShzdGFydERhdGU6IEQsIGVuZERhdGU6IEQsIG9wdGlvbnM/OiBEYXRlVGltZU9wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5yYW5nZURhdGVUaW1lKFxuICAgICAgICAgICAgc3RhcnREYXRlLFxuICAgICAgICAgICAgZW5kRGF0ZSxcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLnJhbmdlVGVtcGxhdGVzLmNsb3NlZFJhbmdlLm1pZGRsZSxcbiAgICAgICAgICAgIG9wdGlvbnM/LnNlY29uZHMsXG4gICAgICAgICAgICBvcHRpb25zPy5taWxsaXNlY29uZHNcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gc3RhcnREYXRlIC0gc3RhcnQgZGF0ZVxuICAgICAqIEBwYXJhbSBlbmREYXRlIC0gZW5kIGRhdGVcbiAgICAgKiBAcGFyYW0gc2Vjb25kcyAtIGFkZCBzZWNvbmRzIHRvIGZvcm1hdHRlZCB2YWx1ZVxuICAgICAqIEBwYXJhbSBtaWxsaXNlY29uZHMgLSBhZGQgbWlsbGlzZWNvbmRzIHRvIGZvcm1hdHRlZCB2YWx1ZVxuICAgICAqIEByZXR1cm5zIGZvcm1hdHRlZCBkdXJhdGlvbiBhcyBzdHJpbmcgbGlrZSA0ODowMjoyNVxuICAgICAqL1xuICAgIGR1cmF0aW9uU2hvcnRlc3Qoc3RhcnREYXRlOiBELCBlbmREYXRlOiBELCBzZWNvbmRzID0gdHJ1ZSwgbWlsbGlzZWNvbmRzID0gZmFsc2UpOiBzdHJpbmcge1xuICAgICAgICB0aGlzLmNoZWNrRGF0ZXMoc3RhcnREYXRlLCBlbmREYXRlKTtcblxuICAgICAgICBpZiAoc3RhcnREYXRlID4gZW5kRGF0ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMuaW52YWxpZERhdGVFcnJvclRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZHVyYXRpb25PYmplY3QgPSB0aGlzLmFkYXB0ZXIuZHVyYXRpb25PYmplY3RGcm9tRGF0ZXMoXG4gICAgICAgICAgICBzdGFydERhdGUsIGVuZERhdGUsIFsnaG91cnMnLCAnbWludXRlcycsICdzZWNvbmRzJywgJ21pbGxpc2Vjb25kcyddXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3Qgcm91bmRlZFNlY29uZHMgPSBNYXRoLmZsb29yKHRoaXMuYWRhcHRlci5kdXJhdGlvbkFzKGR1cmF0aW9uT2JqZWN0LCAnc2Vjb25kcycpKTtcblxuICAgICAgICBpZiAoc2Vjb25kcykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcGlsZU1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuZHVyYXRpb25UZW1wbGF0ZXMuc2hvcnRlc3QuRlVMTCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIEQ6IHJvdW5kZWRTZWNvbmRzLFxuICAgICAgICAgICAgICAgICAgICBTSE9XX01JTExJU0VDT05EUzogbWlsbGlzZWNvbmRzID8gJ3llcycgOiAnbm8nLFxuICAgICAgICAgICAgICAgICAgICBNSUxMSVNFQ09ORFM6IGR1cmF0aW9uT2JqZWN0Lm1pbGxpc2Vjb25kc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcm91bmRlZFNlY29uZHMgLSAocm91bmRlZFNlY29uZHMgJSA2MCkgPyB0aGlzLmNvbXBpbGVNZXNzYWdlKFxuICAgICAgICAgICAgdGhpcy5jb25maWcuZHVyYXRpb25UZW1wbGF0ZXMuc2hvcnRlc3QuT05MWV9NSU5VVEVTLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIEhPVVJTOiBkdXJhdGlvbk9iamVjdC5ob3VycyxcbiAgICAgICAgICAgICAgICBNSU5VVEVTOiBkdXJhdGlvbk9iamVjdC5taW51dGVzXG4gICAgICAgICAgICB9KSA6ICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBzdGFydERhdGUgLSBzdGFydCBkYXRlXG4gICAgICogQHBhcmFtIGVuZERhdGUgLSBlbmQgZGF0ZVxuICAgICAqIEBwYXJhbSB1bml0cyAtIGlmIGRlZmluZWQsIHVuaXRzIHRvIHNob3cgd2lsbCBiZSBzcGVjaWZpZWRcbiAgICAgKiBAcGFyYW0gZnJhY3Rpb24gLSBzaG93cyBmcmFjdGlvbiBwYXJ0IGZvciB5ZWFycyBhbmQgbW9udGhzXG4gICAgICogQHBhcmFtIHRlbXBsYXRlIC0gc3BlY2lmeSB0ZW1wbGF0ZVxuICAgICAqIEByZXR1cm5zIGZvcm1hdHRlZCBkdXJhdGlvbiBhcyBzdHJpbmdcbiAgICAgKi9cbiAgICBkdXJhdGlvbihcbiAgICAgICAgc3RhcnREYXRlOiBELFxuICAgICAgICBlbmREYXRlOiBELFxuICAgICAgICB1bml0czogRHVyYXRpb25Vbml0W10sXG4gICAgICAgIGZyYWN0aW9uLFxuICAgICAgICB0ZW1wbGF0ZTogRm9ybWF0dGVyRHVyYXRpb25UZW1wbGF0ZVxuICAgICk6IHN0cmluZyB7XG4gICAgICAgIHRoaXMuY2hlY2tEYXRlcyhzdGFydERhdGUsIGVuZERhdGUpO1xuXG4gICAgICAgIGlmIChzdGFydERhdGUgPiBlbmREYXRlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5pbnZhbGlkRGF0ZUVycm9yVGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmFkYXB0ZXIuZHVyYXRpb25PYmplY3RGcm9tRGF0ZXMoc3RhcnREYXRlLCBlbmREYXRlLCB1bml0cywgZnJhY3Rpb24pO1xuICAgICAgICBjb25zdCB2YXJpYWJsZXM6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB9ID0geyAuLi52YWx1ZXMgfTtcbiAgICAgICAgdmFyaWFibGVzLlNIT1dfTUlMTElTRUNPTkRTID0gdmFsdWVzLm1pbGxpc2Vjb25kcyA/ICd5ZXMnIDogJ25vJztcblxuICAgICAgICByZXR1cm4gT2JqZWN0XG4gICAgICAgICAgICAua2V5cyh2YWx1ZXMpXG4gICAgICAgICAgICAucmVkdWNlPHN0cmluZ1tdPihcbiAgICAgICAgICAgICAgICAoYWNjLCB1bml0LCBpbmRleCwgYXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmcmFjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLmZsb29yVmFsdWUgPSBNYXRoLmZsb29yKHZhbHVlc1t1bml0XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY2MucHVzaCh0aGlzLmNvbXBpbGVNZXNzYWdlKHRlbXBsYXRlW2Ake3VuaXQudG9VcHBlckNhc2UoKX1fRlJBQ1RJT05gXSwgdmFyaWFibGVzKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJyLmxlbmd0aCA+IDEgJiYgaW5kZXggPT09IGFyci5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjLnB1c2godGhpcy5jb21waWxlTWVzc2FnZSh0ZW1wbGF0ZS5TRVBBUkFUT1IsIHZhcmlhYmxlcykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBhY2MucHVzaCh0aGlzLmNvbXBpbGVNZXNzYWdlKHRlbXBsYXRlW3VuaXQudG9VcHBlckNhc2UoKV0sIHZhcmlhYmxlcykpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuZmlsdGVyKCh0ZXh0KSA9PiAhIXRleHQpXG4gICAgICAgICAgICAuam9pbignICcpO1xuICAgIH1cblxuICAgIGR1cmF0aW9uTG9uZyhzdGFydERhdGU6IEQsIGVuZERhdGU6IEQsIHVuaXRzOiBEdXJhdGlvblVuaXRbXSA9IFtdLCBmcmFjdGlvbiA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZHVyYXRpb24oc3RhcnREYXRlLCBlbmREYXRlLCB1bml0cywgZnJhY3Rpb24sIHRoaXMuY29uZmlnLmR1cmF0aW9uVGVtcGxhdGVzLmxvbmcpO1xuICAgIH1cblxuICAgIGR1cmF0aW9uU2hvcnQoc3RhcnREYXRlOiBELCBlbmREYXRlOiBELCB1bml0czogRHVyYXRpb25Vbml0W10gPSBbXSwgZnJhY3Rpb24gPSBmYWxzZSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmR1cmF0aW9uKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgdW5pdHMsIGZyYWN0aW9uLCB0aGlzLmNvbmZpZy5kdXJhdGlvblRlbXBsYXRlcy5zaG9ydCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0RhdGVzKC4uLmFyZ3MpIHtcbiAgICAgICAgYXJncy5mb3JFYWNoKChkYXRlKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuYWRhcHRlci5pc0RhdGVJbnN0YW5jZShkYXRlKSB8fCAhdGhpcy5hZGFwdGVyLmlzVmFsaWQoZGF0ZSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5pbnZhbGlkRGF0ZUVycm9yVGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29tcGlsZU1lc3NhZ2UobWVzc2FnZTogc3RyaW5nLCB2YXJpYWJsZXMpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlRm9ybWF0LmNvbXBpbGUobWVzc2FnZSkodmFyaWFibGVzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZGF0ZSAtIGRhdGUgZm9yIGNvbXBpbGVcbiAgICAgKiBAcGFyYW0gdmFyaWFibGVzIC0gZGF0ZSB0ZW1wbGF0ZSB2YXJpYWJsZXNcbiAgICAgKiBAcGFyYW0gY3VyclllYXJGb3JjZWQgLSBwYXJhbSBmb3IgYWJzb2x1dGUgZGF5cyBmb3JtYXR0aW5nXG4gICAgICogQHJldHVybnMgY29tcGlsZWRWYXJpYWJsZXNcbiAgICAgKi9cbiAgICBwcml2YXRlIGNvbXBpbGVWYXJpYWJsZXMoZGF0ZTogRCwgdmFyaWFibGVzOiBhbnksIGN1cnJZZWFyRm9yY2VkOiBib29sZWFuID0gZmFsc2UpOiBhbnkge1xuICAgICAgICBjb25zdCBjb21waWxlZFZhcmlhYmxlczogYW55ID0ge307XG5cbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWZvci1pblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB2YXJpYWJsZXMpIHtcbiAgICAgICAgICAgIGlmICghdmFyaWFibGVzLmhhc093blByb3BlcnR5KGtleSkpIHsgY29udGludWU7IH1cblxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB2YXJpYWJsZXNba2V5XTtcbiAgICAgICAgICAgIGNvbXBpbGVkVmFyaWFibGVzW2tleV0gPSB0aGlzLmFkYXB0ZXIuZm9ybWF0KGRhdGUsIHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbXBpbGVkVmFyaWFibGVzLkNVUlJFTlRfWUVBUiA9IChjdXJyWWVhckZvcmNlZCAmJiAnbm8nKSB8fCB0aGlzLmhhc1NhbWUoZGF0ZSwgdGhpcy5hZGFwdGVyLnRvZGF5KCksICd5ZWFyJyk7XG5cbiAgICAgICAgcmV0dXJuIGNvbXBpbGVkVmFyaWFibGVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNCZWZvcmVZZXN0ZXJkYXkoZGF0ZTogRCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmRheXNGcm9tVG9kYXkoZGF0ZSkgPD0gLTI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1llc3RlcmRheShkYXRlOiBEKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZGF5c0Zyb21Ub2RheShkYXRlKSA9PT0gLTE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1RvZGF5KGRhdGU6IEQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5kYXlzRnJvbVRvZGF5KGRhdGUpID09PSAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNUb21vcnJvdyhkYXRlOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5kYXlzRnJvbVRvZGF5KGRhdGUpID09PSAxO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNBZnRlclRvbW9ycm93KGRhdGU6IEQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5kYXlzRnJvbVRvZGF5KGRhdGUpID49IDI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNTYW1lKHN0YXJ0RGF0ZTogRCwgZW5kRGF0ZTogRCwgdW5pdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5oYXNTYW1lKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgdW5pdCkgPyAneWVzJyA6ICdubyc7XG4gICAgfVxufVxuIl19
@@ -276,6 +276,61 @@ export const enUS = {
276
276
  }`
277
277
  }
278
278
  }
279
+ },
280
+ durationTemplates: {
281
+ shortest: {
282
+ FULL: '{D, duration}{SHOW_MILLISECONDS, select, yes{,{MILLISECONDS}} other {}}',
283
+ ONLY_MINUTES: '{HOURS}:{MINUTES, number, ::integer-width/00}'
284
+ },
285
+ long: {
286
+ SEPARATOR: '',
287
+ YEARS: `{years, plural,
288
+ =1 {# year}
289
+ other {# years}
290
+ }`,
291
+ MONTHS: `{months, plural,
292
+ =1 {# month}
293
+ other {# months}
294
+ }`,
295
+ WEEKS: `{weeks, plural,
296
+ =1 {# week}
297
+ other {# weeks}
298
+ }`,
299
+ DAYS: `{days, plural,
300
+ =1 {# day}
301
+ other {# days}
302
+ }`,
303
+ HOURS: `{hours, plural,
304
+ =1 {# hour}
305
+ other {# hours}
306
+ }`,
307
+ MINUTES: `{minutes, plural,
308
+ =1 {# minute}
309
+ other {# minutes}
310
+ }`,
311
+ SECONDS: `{seconds, plural,
312
+ =1 {# second}
313
+ other {# seconds}
314
+ }`,
315
+ YEARS_FRACTION: `{years} years`,
316
+ MONTHS_FRACTION: `{months} months`
317
+ },
318
+ short: {
319
+ SEPARATOR: '',
320
+ YEARS: `{years} y`,
321
+ MONTHS: `{months} mo`,
322
+ WEEKS: `{weeks} w`,
323
+ DAYS: `{days} d`,
324
+ HOURS: `{hours} h`,
325
+ MINUTES: `{minutes} min`,
326
+ SECONDS: `{SHOW_MILLISECONDS, select, yes
327
+ {{seconds}.{milliseconds} s}
328
+ other
329
+ {{seconds} s}
330
+ }`,
331
+ YEARS_FRACTION: '{years} y',
332
+ MONTHS_FRACTION: '{months} mo'
333
+ }
279
334
  }
280
335
  };
281
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW4tVVMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9tb3NhaWMvY29yZS9mb3JtYXR0ZXJzL2RhdGUvdGVtcGxhdGVzL2VuLVVTLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sZ0JBQWdCLEdBQUc7Ozs7Ozs7Ozs7RUFVdkIsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBb0I7SUFDakMsaUJBQWlCLEVBQUU7UUFDZixLQUFLLEVBQUU7WUFDSCxnQkFBZ0IsRUFBRSxnRkFBZ0YsZ0JBQWdCLEVBQUU7WUFDcEgsU0FBUyxFQUFFLG9CQUFvQixnQkFBZ0IsRUFBRTtZQUNqRCxLQUFLLEVBQUUsZ0JBQWdCLGdCQUFnQixFQUFFO1lBQ3pDLFFBQVEsRUFBRSxtQkFBbUIsZ0JBQWdCLEVBQUU7WUFDL0MsY0FBYyxFQUFFLGdGQUFnRixnQkFBZ0IsRUFBRTtTQUNySDtRQUNELElBQUksRUFBRTtZQUNGLGdCQUFnQixFQUFFLG9FQUFvRSxnQkFBZ0IsRUFBRTtZQUN4RyxTQUFTLEVBQUUsb0JBQW9CLGdCQUFnQixFQUFFO1lBQ2pELEtBQUssRUFBRSxnQkFBZ0IsZ0JBQWdCLEVBQUU7WUFDekMsUUFBUSxFQUFFLG1CQUFtQixnQkFBZ0IsRUFBRTtZQUMvQyxjQUFjLEVBQUUsb0VBQW9FLGdCQUFnQixFQUFFO1NBQ3pHO0tBQ0o7SUFDRCxpQkFBaUIsRUFBRTtRQUNmLEtBQUssRUFBRTtZQUNILElBQUksRUFBRSx1RUFBdUU7WUFDN0UsUUFBUSxFQUFFOzs7OztlQUtQLGdCQUFnQixFQUFFO1NBQ3hCO1FBQ0QsSUFBSSxFQUFFO1lBQ0YsSUFBSSxFQUFFLDJEQUEyRDtZQUNqRSxRQUFRLEVBQUU7Ozs7O2VBS1AsZ0JBQWdCLEVBQUU7U0FDeEI7S0FDSjtJQUNELGNBQWMsRUFBRTtRQUNaLFdBQVcsRUFBRTtZQUNULEtBQUssRUFBRTtnQkFDSCxVQUFVLEVBQUUsdUVBQXVFO2dCQUNuRixRQUFRLEVBQUU7Ozs7Ozs7Ozs7a0JBVVI7Z0JBQ0YsSUFBSSxFQUFFOzs7OztrQkFLSjtnQkFFRixjQUFjLEVBQUU7Ozs7Ozs7Ozs7bUJBVWIsZ0JBQWdCLEVBQUU7Z0JBQ3JCLFlBQVksRUFBRTs7Ozs7OzRDQU1jLGdCQUFnQjs4Q0FDZCxnQkFBZ0I7Ozs7Ozs7MkJBT25DLGdCQUFnQjtrQkFDekI7Z0JBQ0YsUUFBUSxFQUFFOzs7OztrQkFLUjthQUNMO1lBQ0QsTUFBTSxFQUFFO2dCQUNKLFVBQVUsRUFBRTs7Ozs7Ozs7OztrQkFVVjtnQkFDRixRQUFRLEVBQUUsMkRBQTJEO2dCQUNyRSxJQUFJLEVBQUU7Ozs7O2tCQUtKO2dCQUVGLGNBQWMsRUFBRTs7Ozs7Ozs7OzttQkFVYixnQkFBZ0IsRUFBRTtnQkFDckIsWUFBWSxFQUFFOzs7Ozs7NENBTWMsZ0JBQWdCOzhDQUNkLGdCQUFnQjs7Ozs7OzsyQkFPbkMsZ0JBQWdCO2tCQUN6QjtnQkFDRixRQUFRLEVBQUU7Ozs7O2tCQUtSO2FBQ0w7WUFDRCxJQUFJLEVBQUU7Z0JBQ0YsVUFBVSxFQUFFLDJEQUEyRDtnQkFDdkUsUUFBUSxFQUFFOzs7Ozs7Ozs7O2tCQVVSO2dCQUNGLElBQUksRUFBRTs7Ozs7a0JBS0o7Z0JBRUYsY0FBYyxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7bUJBZWIsZ0JBQWdCLEVBQUU7Z0JBQ3JCLFlBQVksRUFBRTs7Ozs7Ozs7OzttQkFVWCxnQkFBZ0IsRUFBRTtnQkFDckIsUUFBUSxFQUFFOzs7OztrQkFLUjthQUNMO1NBQ0o7UUFDRCxXQUFXLEVBQUU7WUFDVCxLQUFLLEVBQUU7Z0JBQ0gsVUFBVSxFQUFFOzs7OztrQkFLVjtnQkFDRixRQUFRLEVBQUUsc0VBQXNFO2dCQUNoRixJQUFJLEVBQUU7Ozs7O2tCQUtKO2dCQUVGLGNBQWMsRUFBRTs7Ozs7bUJBS2IsZ0JBQWdCLEVBQUU7Z0JBQ3JCLFlBQVksRUFBRTs7Ozs7bUJBS1gsZ0JBQWdCLEVBQUU7Z0JBQ3JCLFFBQVEsRUFBRTs7Ozs7a0JBS1I7YUFDTDtZQUNELElBQUksRUFBRTtnQkFDRixVQUFVLEVBQUU7Ozs7O2tCQUtWO2dCQUNGLFFBQVEsRUFBRSwwREFBMEQ7Z0JBQ3BFLElBQUksRUFBRTs7Ozs7a0JBS0o7Z0JBRUYsY0FBYyxFQUFFOzs7OzttQkFLYixnQkFBZ0IsRUFBRTtnQkFDckIsWUFBWSxFQUFFOzs7OzttQkFLWCxnQkFBZ0IsRUFBRTtnQkFDckIsUUFBUSxFQUFFOzs7OztrQkFLUjthQUNMO1NBQ0o7S0FDSjtDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtYXR0ZXJDb25maWcgfSBmcm9tICcuLi9mb3JtYXR0ZXInO1xuXG5cbmNvbnN0IFNFQ09ORFNfVEVNUExBVEUgPSBge1xuICAgIFNIT1dfTUlMTElTRUNPTkRTLFxuICAgIHNlbGVjdCxcbiAgICAgICAgeWVzezp7U0VDT05EU317TUlMTElTRUNPTkRTfX1cbiAgICAgICAgb3RoZXJ7e1xuICAgICAgICAgICAgU0hPV19TRUNPTkRTLFxuICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgIHllc3s6e1NFQ09ORFN9fVxuICAgICAgICAgICAgICAgIG90aGVye31cbiAgICAgICAgfX1cbn1gO1xuXG5leHBvcnQgY29uc3QgZW5VUzogRm9ybWF0dGVyQ29uZmlnID0ge1xuICAgIHJlbGF0aXZlVGVtcGxhdGVzOiB7XG4gICAgICAgIHNob3J0OiB7XG4gICAgICAgICAgICBCRUZPUkVfWUVTVEVSREFZOiBge0NVUlJFTlRfWUVBUiwgc2VsZWN0LCB5ZXN7e1NIT1JUX0RBVEV9LCB7VElNRX19IG90aGVye3tTSE9SVF9EQVRFfSwge1lFQVJ9fX0ke1NFQ09ORFNfVEVNUExBVEV9YCxcbiAgICAgICAgICAgIFlFU1RFUkRBWTogYFllc3RlcmRheSwge1RJTUV9JHtTRUNPTkRTX1RFTVBMQVRFfWAsXG4gICAgICAgICAgICBUT0RBWTogYFRvZGF5LCB7VElNRX0ke1NFQ09ORFNfVEVNUExBVEV9YCxcbiAgICAgICAgICAgIFRPTU9SUk9XOiBgVG9tb3Jyb3csIHtUSU1FfSR7U0VDT05EU19URU1QTEFURX1gLFxuICAgICAgICAgICAgQUZURVJfVE9NT1JST1c6IGB7Q1VSUkVOVF9ZRUFSLCBzZWxlY3QsIHllc3t7U0hPUlRfREFURX0sIHtUSU1FfX0gb3RoZXJ7e1NIT1JUX0RBVEV9LCB7WUVBUn19fSR7U0VDT05EU19URU1QTEFURX1gXG4gICAgICAgIH0sXG4gICAgICAgIGxvbmc6IHtcbiAgICAgICAgICAgIEJFRk9SRV9ZRVNURVJEQVk6IGB7Q1VSUkVOVF9ZRUFSLCBzZWxlY3QsIHllc3t7REFURX0sIHtUSU1FfX0gb3RoZXJ7e0RBVEV9LCB7WUVBUn19fSR7U0VDT05EU19URU1QTEFURX1gLFxuICAgICAgICAgICAgWUVTVEVSREFZOiBgWWVzdGVyZGF5LCB7VElNRX0ke1NFQ09ORFNfVEVNUExBVEV9YCxcbiAgICAgICAgICAgIFRPREFZOiBgVG9kYXksIHtUSU1FfSR7U0VDT05EU19URU1QTEFURX1gLFxuICAgICAgICAgICAgVE9NT1JST1c6IGBUb21vcnJvdywge1RJTUV9JHtTRUNPTkRTX1RFTVBMQVRFfWAsXG4gICAgICAgICAgICBBRlRFUl9UT01PUlJPVzogYHtDVVJSRU5UX1lFQVIsIHNlbGVjdCwgeWVze3tEQVRFfSwge1RJTUV9fSBvdGhlcnt7REFURX0sIHtZRUFSfX19JHtTRUNPTkRTX1RFTVBMQVRFfWBcbiAgICAgICAgfVxuICAgIH0sXG4gICAgYWJzb2x1dGVUZW1wbGF0ZXM6IHtcbiAgICAgICAgc2hvcnQ6IHtcbiAgICAgICAgICAgIERBVEU6ICd7Q1VSUkVOVF9ZRUFSLCBzZWxlY3QsIHllc3t7U0hPUlRfREFURX19IG90aGVye3tTSE9SVF9EQVRFfSwge1lFQVJ9fX0nLFxuICAgICAgICAgICAgREFURVRJTUU6IGB7XG4gICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgeWVze3tTSE9SVF9EQVRFfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICBvdGhlcnt7U0hPUlRfREFURX0sIHtZRUFSfSwge1RJTUV9fVxuICAgICAgICAgICAgfSR7U0VDT05EU19URU1QTEFURX1gXG4gICAgICAgIH0sXG4gICAgICAgIGxvbmc6IHtcbiAgICAgICAgICAgIERBVEU6ICd7Q1VSUkVOVF9ZRUFSLCBzZWxlY3QsIHllc3t7REFURX19IG90aGVye3tEQVRFfSwge1lFQVJ9fX0nLFxuICAgICAgICAgICAgREFURVRJTUU6IGB7XG4gICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgeWVze3tEQVRFfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICBvdGhlcnt7REFURX0sIHtZRUFSfSwge1RJTUV9fVxuICAgICAgICAgICAgfSR7U0VDT05EU19URU1QTEFURX1gXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHJhbmdlVGVtcGxhdGVzOiB7XG4gICAgICAgIGNsb3NlZFJhbmdlOiB7XG4gICAgICAgICAgICBzaG9ydDoge1xuICAgICAgICAgICAgICAgIFNUQVJUX0RBVEU6ICd7Q1VSUkVOVF9ZRUFSLCBzZWxlY3QsIHllc3t7U0hPUlRfREFURX19IG90aGVye3tTSE9SVF9EQVRFfSwge1lFQVJ9fX0nLFxuICAgICAgICAgICAgICAgIEVORF9EQVRFOiBge1xuICAgICAgICAgICAgICAgICAgICBTQU1FX01PTlRILFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e0RBWX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tTSE9SVF9EQVRFfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1NIT1JUX0RBVEV9LCB7WUVBUn19XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgIERBVEU6IGB7XG4gICAgICAgICAgICAgICAgICAgIFNBTUVfTU9OVEgsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7U1RBUlRfREFURX17REFTSH17RU5EX0RBVEV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1NUQVJUX0RBVEV9e0xPTkdfREFTSH17RU5EX0RBVEV9fVxuICAgICAgICAgICAgICAgIH1gLFxuXG4gICAgICAgICAgICAgICAgU1RBUlRfREFURVRJTUU6IGB7XG4gICAgICAgICAgICAgICAgICAgIFNBTUVfREFZLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUlJFTlRfWUVBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7U0hPUlRfREFURX0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1NIT1JUX0RBVEV9LCB7WUVBUn0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgfSR7U0VDT05EU19URU1QTEFURX1gLFxuICAgICAgICAgICAgICAgIEVORF9EQVRFVElNRTogYHtcbiAgICAgICAgICAgICAgICAgICAgU0FNRV9EQVksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tUSU1FfSR7U0VDT05EU19URU1QTEFURX0sIHtTSE9SVF9EQVRFfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1RJTUV9JHtTRUNPTkRTX1RFTVBMQVRFfSwge1NIT1JUX0RBVEV9LCB7WUVBUn19XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUlJFTlRfWUVBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7U0hPUlRfREFURX0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1NIT1JUX0RBVEV9LCB7WUVBUn0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0ke1NFQ09ORFNfVEVNUExBVEV9fVxuICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgIERBVEVUSU1FOiBge1xuICAgICAgICAgICAgICAgICAgICBTQU1FX0RBWSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tTVEFSVF9EQVRFVElNRX17REFTSH17RU5EX0RBVEVUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tTVEFSVF9EQVRFVElNRX17TE9OR19EQVNIfXtFTkRfREFURVRJTUV9fVxuICAgICAgICAgICAgICAgIH1gXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWlkZGxlOiB7XG4gICAgICAgICAgICAgICAgU1RBUlRfREFURTogYHtcbiAgICAgICAgICAgICAgICAgICAgU0FNRV9NT05USCxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tEQVl9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUlJFTlRfWUVBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7REFURX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tEQVRFfSwge1lFQVJ9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICBFTkRfREFURTogJ3tDVVJSRU5UX1lFQVIsIHNlbGVjdCwgeWVze3tEQVRFfX0gb3RoZXJ7e0RBVEV9LCB7WUVBUn19fScsXG4gICAgICAgICAgICAgICAgREFURTogYHtcbiAgICAgICAgICAgICAgICAgICAgU0FNRV9NT05USCxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tTVEFSVF9EQVRFfXtEQVNIfXtFTkRfREFURX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7U1RBUlRfREFURX17TE9OR19EQVNIfXtFTkRfREFURX19XG4gICAgICAgICAgICAgICAgfWAsXG5cbiAgICAgICAgICAgICAgICBTVEFSVF9EQVRFVElNRTogYHtcbiAgICAgICAgICAgICAgICAgICAgU0FNRV9EQVksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7VElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tEQVRFfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7REFURX0sIHtZRUFSfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICB9JHtTRUNPTkRTX1RFTVBMQVRFfWAsXG4gICAgICAgICAgICAgICAgRU5EX0RBVEVUSU1FOiBge1xuICAgICAgICAgICAgICAgICAgICBTQU1FX0RBWSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e1RJTUV9JHtTRUNPTkRTX1RFTVBMQVRFfSwge0RBVEV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7VElNRX0ke1NFQ09ORFNfVEVNUExBVEV9LCB7REFURX0sIHtZRUFSfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tEQVRFfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7REFURX0sIHtZRUFSfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfSR7U0VDT05EU19URU1QTEFURX19XG4gICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgREFURVRJTUU6IGB7XG4gICAgICAgICAgICAgICAgICAgIFNBTUVfREFZLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e1NUQVJUX0RBVEVUSU1FfXtEQVNIfXtFTkRfREFURVRJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1NUQVJUX0RBVEVUSU1FfXtMT05HX0RBU0h9e0VORF9EQVRFVElNRX19XG4gICAgICAgICAgICAgICAgfWBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb25nOiB7XG4gICAgICAgICAgICAgICAgU1RBUlRfREFURTogJ3tDVVJSRU5UX1lFQVIsIHNlbGVjdCwgeWVze3tEQVRFfX0gb3RoZXJ7e0RBVEV9LCB7WUVBUn19fScsXG4gICAgICAgICAgICAgICAgRU5EX0RBVEU6IGB7XG4gICAgICAgICAgICAgICAgICAgIFNBTUVfTU9OVEgsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7REFZfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e0RBVEV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7REFURX0sIHtZRUFSfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgREFURTogYHtcbiAgICAgICAgICAgICAgICAgICAgU0FNRV9NT05USCxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tTVEFSVF9EQVRFfXtEQVNIfXtFTkRfREFURX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7U1RBUlRfREFURX17TE9OR19EQVNIfXtFTkRfREFURX19XG4gICAgICAgICAgICAgICAgfWAsXG5cbiAgICAgICAgICAgICAgICBTVEFSVF9EQVRFVElNRTogYHtcbiAgICAgICAgICAgICAgICAgICAgU0FNRV9EQVksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tEQVRFfSwgZnJvbXtOQlNQfXtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e0RBVEV9LCB7WUVBUn0sIGZyb217TkJTUH17VElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUlJFTlRfWUVBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7REFURX0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e0RBVEV9LCB7WUVBUn0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgfSR7U0VDT05EU19URU1QTEFURX1gLFxuICAgICAgICAgICAgICAgIEVORF9EQVRFVElNRTogYHtcbiAgICAgICAgICAgICAgICAgICAgU0FNRV9EQVksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t0b3tOQlNQfXtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e0RBVEV9LCB7VElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tEQVRFfSwge1lFQVJ9LCB7VElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIH0ke1NFQ09ORFNfVEVNUExBVEV9YCxcbiAgICAgICAgICAgICAgICBEQVRFVElNRTogYHtcbiAgICAgICAgICAgICAgICAgICAgU0FNRV9EQVksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7U1RBUlRfREFURVRJTUV9IHtFTkRfREFURVRJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7RnJvbSB7U1RBUlRfREFURVRJTUV9IHRve05CU1B9e0VORF9EQVRFVElNRX19XG4gICAgICAgICAgICAgICAgfWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb3BlbmVkUmFuZ2U6IHtcbiAgICAgICAgICAgIHNob3J0OiB7XG4gICAgICAgICAgICAgICAgU1RBUlRfREFURTogYHtcbiAgICAgICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e1NIT1JUX0RBVEV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1NIT1JUX0RBVEV9IHtZRUFSfX1cbiAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICBFTkRfREFURTogJ3tDVVJSRU5UX1lFQVIsIHNlbGVjdCwgeWVze3tTSE9SVF9EQVRFfX0gb3RoZXJ7e1NIT1JUX0RBVEV9IHtZRUFSfX19JyxcbiAgICAgICAgICAgICAgICBEQVRFOiBge1xuICAgICAgICAgICAgICAgICAgICBSQU5HRV9UWVBFLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbmx5U3RhcnR7RnJvbXtOQlNQfXtTVEFSVF9EQVRFfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye1VudGlse05CU1B9e0VORF9EQVRFfX1cbiAgICAgICAgICAgICAgICB9YCxcblxuICAgICAgICAgICAgICAgIFNUQVJUX0RBVEVUSU1FOiBge1xuICAgICAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7U0hPUlRfREFURX0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tTSE9SVF9EQVRFfSB7WUVBUn0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICB9JHtTRUNPTkRTX1RFTVBMQVRFfWAsXG4gICAgICAgICAgICAgICAgRU5EX0RBVEVUSU1FOiBge1xuICAgICAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7U0hPUlRfREFURX0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tTSE9SVF9EQVRFfSB7WUVBUn0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICB9JHtTRUNPTkRTX1RFTVBMQVRFfWAsXG4gICAgICAgICAgICAgICAgREFURVRJTUU6IGB7XG4gICAgICAgICAgICAgICAgICAgIFJBTkdFX1RZUEUsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ubHlTdGFydHtGcm9te05CU1B9e1NUQVJUX0RBVEVUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye1VudGlse05CU1B9e0VORF9EQVRFVElNRX19XG4gICAgICAgICAgICAgICAgfWBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb25nOiB7XG4gICAgICAgICAgICAgICAgU1RBUlRfREFURTogYHtcbiAgICAgICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e0RBVEV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e0RBVEV9IHtZRUFSfX1cbiAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICBFTkRfREFURTogJ3tDVVJSRU5UX1lFQVIsIHNlbGVjdCwgeWVze3tEQVRFfX0gb3RoZXJ7e0RBVEV9IHtZRUFSfX19JyxcbiAgICAgICAgICAgICAgICBEQVRFOiBge1xuICAgICAgICAgICAgICAgICAgICBSQU5HRV9UWVBFLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbmx5U3RhcnR7RnJvbXtOQlNQfXtTVEFSVF9EQVRFfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye1VudGlse05CU1B9e0VORF9EQVRFfX1cbiAgICAgICAgICAgICAgICB9YCxcblxuICAgICAgICAgICAgICAgIFNUQVJUX0RBVEVUSU1FOiBge1xuICAgICAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7REFURX0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tEQVRFfSB7WUVBUn0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICB9JHtTRUNPTkRTX1RFTVBMQVRFfWAsXG4gICAgICAgICAgICAgICAgRU5EX0RBVEVUSU1FOiBge1xuICAgICAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7REFURX0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tEQVRFfSB7WUVBUn0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICB9JHtTRUNPTkRTX1RFTVBMQVRFfWAsXG4gICAgICAgICAgICAgICAgREFURVRJTUU6IGB7XG4gICAgICAgICAgICAgICAgICAgIFJBTkdFX1RZUEUsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ubHlTdGFydHtGcm9te05CU1B9e1NUQVJUX0RBVEVUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye1VudGlse05CU1B9e0VORF9EQVRFVElNRX19XG4gICAgICAgICAgICAgICAgfWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn07XG4iXX0=
336
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW4tVVMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9tb3NhaWMvY29yZS9mb3JtYXR0ZXJzL2RhdGUvdGVtcGxhdGVzL2VuLVVTLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sZ0JBQWdCLEdBQUc7Ozs7Ozs7Ozs7RUFVdkIsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBb0I7SUFDakMsaUJBQWlCLEVBQUU7UUFDZixLQUFLLEVBQUU7WUFDSCxnQkFBZ0IsRUFBRSxnRkFBZ0YsZ0JBQWdCLEVBQUU7WUFDcEgsU0FBUyxFQUFFLG9CQUFvQixnQkFBZ0IsRUFBRTtZQUNqRCxLQUFLLEVBQUUsZ0JBQWdCLGdCQUFnQixFQUFFO1lBQ3pDLFFBQVEsRUFBRSxtQkFBbUIsZ0JBQWdCLEVBQUU7WUFDL0MsY0FBYyxFQUFFLGdGQUFnRixnQkFBZ0IsRUFBRTtTQUNySDtRQUNELElBQUksRUFBRTtZQUNGLGdCQUFnQixFQUFFLG9FQUFvRSxnQkFBZ0IsRUFBRTtZQUN4RyxTQUFTLEVBQUUsb0JBQW9CLGdCQUFnQixFQUFFO1lBQ2pELEtBQUssRUFBRSxnQkFBZ0IsZ0JBQWdCLEVBQUU7WUFDekMsUUFBUSxFQUFFLG1CQUFtQixnQkFBZ0IsRUFBRTtZQUMvQyxjQUFjLEVBQUUsb0VBQW9FLGdCQUFnQixFQUFFO1NBQ3pHO0tBQ0o7SUFDRCxpQkFBaUIsRUFBRTtRQUNmLEtBQUssRUFBRTtZQUNILElBQUksRUFBRSx1RUFBdUU7WUFDN0UsUUFBUSxFQUFFOzs7OztlQUtQLGdCQUFnQixFQUFFO1NBQ3hCO1FBQ0QsSUFBSSxFQUFFO1lBQ0YsSUFBSSxFQUFFLDJEQUEyRDtZQUNqRSxRQUFRLEVBQUU7Ozs7O2VBS1AsZ0JBQWdCLEVBQUU7U0FDeEI7S0FDSjtJQUNELGNBQWMsRUFBRTtRQUNaLFdBQVcsRUFBRTtZQUNULEtBQUssRUFBRTtnQkFDSCxVQUFVLEVBQUUsdUVBQXVFO2dCQUNuRixRQUFRLEVBQUU7Ozs7Ozs7Ozs7a0JBVVI7Z0JBQ0YsSUFBSSxFQUFFOzs7OztrQkFLSjtnQkFFRixjQUFjLEVBQUU7Ozs7Ozs7Ozs7bUJBVWIsZ0JBQWdCLEVBQUU7Z0JBQ3JCLFlBQVksRUFBRTs7Ozs7OzRDQU1jLGdCQUFnQjs4Q0FDZCxnQkFBZ0I7Ozs7Ozs7MkJBT25DLGdCQUFnQjtrQkFDekI7Z0JBQ0YsUUFBUSxFQUFFOzs7OztrQkFLUjthQUNMO1lBQ0QsTUFBTSxFQUFFO2dCQUNKLFVBQVUsRUFBRTs7Ozs7Ozs7OztrQkFVVjtnQkFDRixRQUFRLEVBQUUsMkRBQTJEO2dCQUNyRSxJQUFJLEVBQUU7Ozs7O2tCQUtKO2dCQUVGLGNBQWMsRUFBRTs7Ozs7Ozs7OzttQkFVYixnQkFBZ0IsRUFBRTtnQkFDckIsWUFBWSxFQUFFOzs7Ozs7NENBTWMsZ0JBQWdCOzhDQUNkLGdCQUFnQjs7Ozs7OzsyQkFPbkMsZ0JBQWdCO2tCQUN6QjtnQkFDRixRQUFRLEVBQUU7Ozs7O2tCQUtSO2FBQ0w7WUFDRCxJQUFJLEVBQUU7Z0JBQ0YsVUFBVSxFQUFFLDJEQUEyRDtnQkFDdkUsUUFBUSxFQUFFOzs7Ozs7Ozs7O2tCQVVSO2dCQUNGLElBQUksRUFBRTs7Ozs7a0JBS0o7Z0JBRUYsY0FBYyxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7bUJBZWIsZ0JBQWdCLEVBQUU7Z0JBQ3JCLFlBQVksRUFBRTs7Ozs7Ozs7OzttQkFVWCxnQkFBZ0IsRUFBRTtnQkFDckIsUUFBUSxFQUFFOzs7OztrQkFLUjthQUNMO1NBQ0o7UUFDRCxXQUFXLEVBQUU7WUFDVCxLQUFLLEVBQUU7Z0JBQ0gsVUFBVSxFQUFFOzs7OztrQkFLVjtnQkFDRixRQUFRLEVBQUUsc0VBQXNFO2dCQUNoRixJQUFJLEVBQUU7Ozs7O2tCQUtKO2dCQUVGLGNBQWMsRUFBRTs7Ozs7bUJBS2IsZ0JBQWdCLEVBQUU7Z0JBQ3JCLFlBQVksRUFBRTs7Ozs7bUJBS1gsZ0JBQWdCLEVBQUU7Z0JBQ3JCLFFBQVEsRUFBRTs7Ozs7a0JBS1I7YUFDTDtZQUNELElBQUksRUFBRTtnQkFDRixVQUFVLEVBQUU7Ozs7O2tCQUtWO2dCQUNGLFFBQVEsRUFBRSwwREFBMEQ7Z0JBQ3BFLElBQUksRUFBRTs7Ozs7a0JBS0o7Z0JBRUYsY0FBYyxFQUFFOzs7OzttQkFLYixnQkFBZ0IsRUFBRTtnQkFDckIsWUFBWSxFQUFFOzs7OzttQkFLWCxnQkFBZ0IsRUFBRTtnQkFDckIsUUFBUSxFQUFFOzs7OztrQkFLUjthQUNMO1NBQ0o7S0FDSjtJQUNELGlCQUFpQixFQUFFO1FBQ2YsUUFBUSxFQUFFO1lBQ04sSUFBSSxFQUFFLHlFQUF5RTtZQUMvRSxZQUFZLEVBQUUsK0NBQStDO1NBQ2hFO1FBQ0QsSUFBSSxFQUFFO1lBQ0YsU0FBUyxFQUFFLEVBQUU7WUFDYixLQUFLLEVBQUU7OztjQUdMO1lBQ0YsTUFBTSxFQUFFOzs7Y0FHTjtZQUNGLEtBQUssRUFBRTs7O2NBR0w7WUFDRixJQUFJLEVBQUU7OztjQUdKO1lBQ0YsS0FBSyxFQUFFOzs7Y0FHTDtZQUNGLE9BQU8sRUFBRTs7O2NBR1A7WUFDRixPQUFPLEVBQUU7OztjQUdQO1lBQ0YsY0FBYyxFQUFFLGVBQWU7WUFDL0IsZUFBZSxFQUFFLGlCQUFpQjtTQUNyQztRQUNELEtBQUssRUFBRTtZQUNILFNBQVMsRUFBRSxFQUFFO1lBQ2IsS0FBSyxFQUFFLFdBQVc7WUFDbEIsTUFBTSxFQUFFLGFBQWE7WUFDckIsS0FBSyxFQUFFLFdBQVc7WUFDbEIsSUFBSSxFQUFFLFVBQVU7WUFDaEIsS0FBSyxFQUFFLFdBQVc7WUFDbEIsT0FBTyxFQUFFLGVBQWU7WUFDeEIsT0FBTyxFQUFFOzs7O2NBSVA7WUFDRixjQUFjLEVBQUUsV0FBVztZQUMzQixlQUFlLEVBQUUsYUFBYTtTQUNqQztLQUNKO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1hdHRlckNvbmZpZyB9IGZyb20gJy4uL2Zvcm1hdHRlcic7XG5cblxuY29uc3QgU0VDT05EU19URU1QTEFURSA9IGB7XG4gICAgU0hPV19NSUxMSVNFQ09ORFMsXG4gICAgc2VsZWN0LFxuICAgICAgICB5ZXN7OntTRUNPTkRTfXtNSUxMSVNFQ09ORFN9fVxuICAgICAgICBvdGhlcnt7XG4gICAgICAgICAgICBTSE9XX1NFQ09ORFMsXG4gICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgeWVzezp7U0VDT05EU319XG4gICAgICAgICAgICAgICAgb3RoZXJ7fVxuICAgICAgICB9fVxufWA7XG5cbmV4cG9ydCBjb25zdCBlblVTOiBGb3JtYXR0ZXJDb25maWcgPSB7XG4gICAgcmVsYXRpdmVUZW1wbGF0ZXM6IHtcbiAgICAgICAgc2hvcnQ6IHtcbiAgICAgICAgICAgIEJFRk9SRV9ZRVNURVJEQVk6IGB7Q1VSUkVOVF9ZRUFSLCBzZWxlY3QsIHllc3t7U0hPUlRfREFURX0sIHtUSU1FfX0gb3RoZXJ7e1NIT1JUX0RBVEV9LCB7WUVBUn19fSR7U0VDT05EU19URU1QTEFURX1gLFxuICAgICAgICAgICAgWUVTVEVSREFZOiBgWWVzdGVyZGF5LCB7VElNRX0ke1NFQ09ORFNfVEVNUExBVEV9YCxcbiAgICAgICAgICAgIFRPREFZOiBgVG9kYXksIHtUSU1FfSR7U0VDT05EU19URU1QTEFURX1gLFxuICAgICAgICAgICAgVE9NT1JST1c6IGBUb21vcnJvdywge1RJTUV9JHtTRUNPTkRTX1RFTVBMQVRFfWAsXG4gICAgICAgICAgICBBRlRFUl9UT01PUlJPVzogYHtDVVJSRU5UX1lFQVIsIHNlbGVjdCwgeWVze3tTSE9SVF9EQVRFfSwge1RJTUV9fSBvdGhlcnt7U0hPUlRfREFURX0sIHtZRUFSfX19JHtTRUNPTkRTX1RFTVBMQVRFfWBcbiAgICAgICAgfSxcbiAgICAgICAgbG9uZzoge1xuICAgICAgICAgICAgQkVGT1JFX1lFU1RFUkRBWTogYHtDVVJSRU5UX1lFQVIsIHNlbGVjdCwgeWVze3tEQVRFfSwge1RJTUV9fSBvdGhlcnt7REFURX0sIHtZRUFSfX19JHtTRUNPTkRTX1RFTVBMQVRFfWAsXG4gICAgICAgICAgICBZRVNURVJEQVk6IGBZZXN0ZXJkYXksIHtUSU1FfSR7U0VDT05EU19URU1QTEFURX1gLFxuICAgICAgICAgICAgVE9EQVk6IGBUb2RheSwge1RJTUV9JHtTRUNPTkRTX1RFTVBMQVRFfWAsXG4gICAgICAgICAgICBUT01PUlJPVzogYFRvbW9ycm93LCB7VElNRX0ke1NFQ09ORFNfVEVNUExBVEV9YCxcbiAgICAgICAgICAgIEFGVEVSX1RPTU9SUk9XOiBge0NVUlJFTlRfWUVBUiwgc2VsZWN0LCB5ZXN7e0RBVEV9LCB7VElNRX19IG90aGVye3tEQVRFfSwge1lFQVJ9fX0ke1NFQ09ORFNfVEVNUExBVEV9YFxuICAgICAgICB9XG4gICAgfSxcbiAgICBhYnNvbHV0ZVRlbXBsYXRlczoge1xuICAgICAgICBzaG9ydDoge1xuICAgICAgICAgICAgREFURTogJ3tDVVJSRU5UX1lFQVIsIHNlbGVjdCwgeWVze3tTSE9SVF9EQVRFfX0gb3RoZXJ7e1NIT1JUX0RBVEV9LCB7WUVBUn19fScsXG4gICAgICAgICAgICBEQVRFVElNRTogYHtcbiAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICB5ZXN7e1NIT1JUX0RBVEV9LCB7VElNRX19XG4gICAgICAgICAgICAgICAgICAgIG90aGVye3tTSE9SVF9EQVRFfSwge1lFQVJ9LCB7VElNRX19XG4gICAgICAgICAgICB9JHtTRUNPTkRTX1RFTVBMQVRFfWBcbiAgICAgICAgfSxcbiAgICAgICAgbG9uZzoge1xuICAgICAgICAgICAgREFURTogJ3tDVVJSRU5UX1lFQVIsIHNlbGVjdCwgeWVze3tEQVRFfX0gb3RoZXJ7e0RBVEV9LCB7WUVBUn19fScsXG4gICAgICAgICAgICBEQVRFVElNRTogYHtcbiAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICB5ZXN7e0RBVEV9LCB7VElNRX19XG4gICAgICAgICAgICAgICAgICAgIG90aGVye3tEQVRFfSwge1lFQVJ9LCB7VElNRX19XG4gICAgICAgICAgICB9JHtTRUNPTkRTX1RFTVBMQVRFfWBcbiAgICAgICAgfVxuICAgIH0sXG4gICAgcmFuZ2VUZW1wbGF0ZXM6IHtcbiAgICAgICAgY2xvc2VkUmFuZ2U6IHtcbiAgICAgICAgICAgIHNob3J0OiB7XG4gICAgICAgICAgICAgICAgU1RBUlRfREFURTogJ3tDVVJSRU5UX1lFQVIsIHNlbGVjdCwgeWVze3tTSE9SVF9EQVRFfX0gb3RoZXJ7e1NIT1JUX0RBVEV9LCB7WUVBUn19fScsXG4gICAgICAgICAgICAgICAgRU5EX0RBVEU6IGB7XG4gICAgICAgICAgICAgICAgICAgIFNBTUVfTU9OVEgsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7REFZfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e1NIT1JUX0RBVEV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7U0hPUlRfREFURX0sIHtZRUFSfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgREFURTogYHtcbiAgICAgICAgICAgICAgICAgICAgU0FNRV9NT05USCxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tTVEFSVF9EQVRFfXtEQVNIfXtFTkRfREFURX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7U1RBUlRfREFURX17TE9OR19EQVNIfXtFTkRfREFURX19XG4gICAgICAgICAgICAgICAgfWAsXG5cbiAgICAgICAgICAgICAgICBTVEFSVF9EQVRFVElNRTogYHtcbiAgICAgICAgICAgICAgICAgICAgU0FNRV9EQVksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7VElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tTSE9SVF9EQVRFfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7U0hPUlRfREFURX0sIHtZRUFSfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICB9JHtTRUNPTkRTX1RFTVBMQVRFfWAsXG4gICAgICAgICAgICAgICAgRU5EX0RBVEVUSU1FOiBge1xuICAgICAgICAgICAgICAgICAgICBTQU1FX0RBWSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e1RJTUV9JHtTRUNPTkRTX1RFTVBMQVRFfSwge1NIT1JUX0RBVEV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7VElNRX0ke1NFQ09ORFNfVEVNUExBVEV9LCB7U0hPUlRfREFURX0sIHtZRUFSfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tTSE9SVF9EQVRFfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7U0hPUlRfREFURX0sIHtZRUFSfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfSR7U0VDT05EU19URU1QTEFURX19XG4gICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgREFURVRJTUU6IGB7XG4gICAgICAgICAgICAgICAgICAgIFNBTUVfREFZLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e1NUQVJUX0RBVEVUSU1FfXtEQVNIfXtFTkRfREFURVRJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1NUQVJUX0RBVEVUSU1FfXtMT05HX0RBU0h9e0VORF9EQVRFVElNRX19XG4gICAgICAgICAgICAgICAgfWBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtaWRkbGU6IHtcbiAgICAgICAgICAgICAgICBTVEFSVF9EQVRFOiBge1xuICAgICAgICAgICAgICAgICAgICBTQU1FX01PTlRILFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e0RBWX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tEQVRFfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e0RBVEV9LCB7WUVBUn19XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgIEVORF9EQVRFOiAne0NVUlJFTlRfWUVBUiwgc2VsZWN0LCB5ZXN7e0RBVEV9fSBvdGhlcnt7REFURX0sIHtZRUFSfX19JyxcbiAgICAgICAgICAgICAgICBEQVRFOiBge1xuICAgICAgICAgICAgICAgICAgICBTQU1FX01PTlRILFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e1NUQVJUX0RBVEV9e0RBU0h9e0VORF9EQVRFfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tTVEFSVF9EQVRFfXtMT05HX0RBU0h9e0VORF9EQVRFfX1cbiAgICAgICAgICAgICAgICB9YCxcblxuICAgICAgICAgICAgICAgIFNUQVJUX0RBVEVUSU1FOiBge1xuICAgICAgICAgICAgICAgICAgICBTQU1FX0RBWSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e0RBVEV9LCB7VElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tEQVRFfSwge1lFQVJ9LCB7VElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIH0ke1NFQ09ORFNfVEVNUExBVEV9YCxcbiAgICAgICAgICAgICAgICBFTkRfREFURVRJTUU6IGB7XG4gICAgICAgICAgICAgICAgICAgIFNBTUVfREFZLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUlJFTlRfWUVBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7VElNRX0ke1NFQ09ORFNfVEVNUExBVEV9LCB7REFURX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tUSU1FfSR7U0VDT05EU19URU1QTEFURX0sIHtEQVRFfSwge1lFQVJ9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e0RBVEV9LCB7VElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tEQVRFfSwge1lFQVJ9LCB7VElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICB9JHtTRUNPTkRTX1RFTVBMQVRFfX1cbiAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICBEQVRFVElNRTogYHtcbiAgICAgICAgICAgICAgICAgICAgU0FNRV9EQVksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7U1RBUlRfREFURVRJTUV9e0RBU0h9e0VORF9EQVRFVElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7U1RBUlRfREFURVRJTUV9e0xPTkdfREFTSH17RU5EX0RBVEVUSU1FfX1cbiAgICAgICAgICAgICAgICB9YFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvbmc6IHtcbiAgICAgICAgICAgICAgICBTVEFSVF9EQVRFOiAne0NVUlJFTlRfWUVBUiwgc2VsZWN0LCB5ZXN7e0RBVEV9fSBvdGhlcnt7REFURX0sIHtZRUFSfX19JyxcbiAgICAgICAgICAgICAgICBFTkRfREFURTogYHtcbiAgICAgICAgICAgICAgICAgICAgU0FNRV9NT05USCxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tEQVl9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUlJFTlRfWUVBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7REFURX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tEQVRFfSwge1lFQVJ9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICBEQVRFOiBge1xuICAgICAgICAgICAgICAgICAgICBTQU1FX01PTlRILFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e1NUQVJUX0RBVEV9e0RBU0h9e0VORF9EQVRFfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVye3tTVEFSVF9EQVRFfXtMT05HX0RBU0h9e0VORF9EQVRFfX1cbiAgICAgICAgICAgICAgICB9YCxcblxuICAgICAgICAgICAgICAgIFNUQVJUX0RBVEVUSU1FOiBge1xuICAgICAgICAgICAgICAgICAgICBTQU1FX0RBWSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZXN7e0RBVEV9LCBmcm9te05CU1B9e1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7REFURX0sIHtZRUFSfSwgZnJvbXtOQlNQfXtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1VSUkVOVF9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tEQVRFfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7REFURX0sIHtZRUFSfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICB9JHtTRUNPTkRTX1RFTVBMQVRFfWAsXG4gICAgICAgICAgICAgICAgRU5EX0RBVEVUSU1FOiBge1xuICAgICAgICAgICAgICAgICAgICBTQU1FX0RBWSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVze3Rve05CU1B9e1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENVUlJFTlRfWUVBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7REFURX0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e0RBVEV9LCB7WUVBUn0sIHtUSU1FfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgfSR7U0VDT05EU19URU1QTEFURX1gLFxuICAgICAgICAgICAgICAgIERBVEVUSU1FOiBge1xuICAgICAgICAgICAgICAgICAgICBTQU1FX0RBWSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tTVEFSVF9EQVRFVElNRX0ge0VORF9EQVRFVElNRX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcntGcm9tIHtTVEFSVF9EQVRFVElNRX0gdG97TkJTUH17RU5EX0RBVEVUSU1FfX1cbiAgICAgICAgICAgICAgICB9YFxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBvcGVuZWRSYW5nZToge1xuICAgICAgICAgICAgc2hvcnQ6IHtcbiAgICAgICAgICAgICAgICBTVEFSVF9EQVRFOiBge1xuICAgICAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7U0hPUlRfREFURX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7U0hPUlRfREFURX0ge1lFQVJ9fVxuICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgIEVORF9EQVRFOiAne0NVUlJFTlRfWUVBUiwgc2VsZWN0LCB5ZXN7e1NIT1JUX0RBVEV9fSBvdGhlcnt7U0hPUlRfREFURX0ge1lFQVJ9fX0nLFxuICAgICAgICAgICAgICAgIERBVEU6IGB7XG4gICAgICAgICAgICAgICAgICAgIFJBTkdFX1RZUEUsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ubHlTdGFydHtGcm9te05CU1B9e1NUQVJUX0RBVEV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7VW50aWx7TkJTUH17RU5EX0RBVEV9fVxuICAgICAgICAgICAgICAgIH1gLFxuXG4gICAgICAgICAgICAgICAgU1RBUlRfREFURVRJTUU6IGB7XG4gICAgICAgICAgICAgICAgICAgIENVUlJFTlRfWUVBUixcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tTSE9SVF9EQVRFfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1NIT1JUX0RBVEV9IHtZRUFSfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgIH0ke1NFQ09ORFNfVEVNUExBVEV9YCxcbiAgICAgICAgICAgICAgICBFTkRfREFURVRJTUU6IGB7XG4gICAgICAgICAgICAgICAgICAgIENVUlJFTlRfWUVBUixcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tTSE9SVF9EQVRFfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e1NIT1JUX0RBVEV9IHtZRUFSfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgIH0ke1NFQ09ORFNfVEVNUExBVEV9YCxcbiAgICAgICAgICAgICAgICBEQVRFVElNRTogYHtcbiAgICAgICAgICAgICAgICAgICAgUkFOR0VfVFlQRSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25seVN0YXJ0e0Zyb217TkJTUH17U1RBUlRfREFURVRJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7VW50aWx7TkJTUH17RU5EX0RBVEVUSU1FfX1cbiAgICAgICAgICAgICAgICB9YFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvbmc6IHtcbiAgICAgICAgICAgICAgICBTVEFSVF9EQVRFOiBge1xuICAgICAgICAgICAgICAgICAgICBDVVJSRU5UX1lFQVIsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHllc3t7REFURX19XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnt7REFURX0ge1lFQVJ9fVxuICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgIEVORF9EQVRFOiAne0NVUlJFTlRfWUVBUiwgc2VsZWN0LCB5ZXN7e0RBVEV9fSBvdGhlcnt7REFURX0ge1lFQVJ9fX0nLFxuICAgICAgICAgICAgICAgIERBVEU6IGB7XG4gICAgICAgICAgICAgICAgICAgIFJBTkdFX1RZUEUsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9ubHlTdGFydHtGcm9te05CU1B9e1NUQVJUX0RBVEV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7VW50aWx7TkJTUH17RU5EX0RBVEV9fVxuICAgICAgICAgICAgICAgIH1gLFxuXG4gICAgICAgICAgICAgICAgU1RBUlRfREFURVRJTUU6IGB7XG4gICAgICAgICAgICAgICAgICAgIENVUlJFTlRfWUVBUixcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tEQVRFfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e0RBVEV9IHtZRUFSfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgIH0ke1NFQ09ORFNfVEVNUExBVEV9YCxcbiAgICAgICAgICAgICAgICBFTkRfREFURVRJTUU6IGB7XG4gICAgICAgICAgICAgICAgICAgIENVUlJFTlRfWUVBUixcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgeWVze3tEQVRFfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7e0RBVEV9IHtZRUFSfSwge1RJTUV9fVxuICAgICAgICAgICAgICAgIH0ke1NFQ09ORFNfVEVNUExBVEV9YCxcbiAgICAgICAgICAgICAgICBEQVRFVElNRTogYHtcbiAgICAgICAgICAgICAgICAgICAgUkFOR0VfVFlQRSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgb25seVN0YXJ0e0Zyb217TkJTUH17U1RBUlRfREFURVRJTUV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJ7VW50aWx7TkJTUH17RU5EX0RBVEVUSU1FfX1cbiAgICAgICAgICAgICAgICB9YFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICBkdXJhdGlvblRlbXBsYXRlczoge1xuICAgICAgICBzaG9ydGVzdDoge1xuICAgICAgICAgICAgRlVMTDogJ3tELCBkdXJhdGlvbn17U0hPV19NSUxMSVNFQ09ORFMsIHNlbGVjdCwgeWVzeyx7TUlMTElTRUNPTkRTfX0gb3RoZXIge319JyxcbiAgICAgICAgICAgIE9OTFlfTUlOVVRFUzogJ3tIT1VSU306e01JTlVURVMsIG51bWJlciwgOjppbnRlZ2VyLXdpZHRoLzAwfSdcbiAgICAgICAgfSxcbiAgICAgICAgbG9uZzoge1xuICAgICAgICAgICAgU0VQQVJBVE9SOiAnJyxcbiAgICAgICAgICAgIFlFQVJTOiBge3llYXJzLCBwbHVyYWwsXG4gICAgICAgICAgICAgICAgPTEgeyMgeWVhcn1cbiAgICAgICAgICAgICAgICBvdGhlciB7IyB5ZWFyc31cbiAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgTU9OVEhTOiBge21vbnRocywgcGx1cmFsLFxuICAgICAgICAgICAgICAgID0xIHsjIG1vbnRofVxuICAgICAgICAgICAgICAgIG90aGVyIHsjIG1vbnRoc31cbiAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgV0VFS1M6IGB7d2Vla3MsIHBsdXJhbCxcbiAgICAgICAgICAgICAgICA9MSB7IyB3ZWVrfVxuICAgICAgICAgICAgICAgIG90aGVyIHsjIHdlZWtzfVxuICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICBEQVlTOiBge2RheXMsIHBsdXJhbCxcbiAgICAgICAgICAgICAgICA9MSB7IyBkYXl9XG4gICAgICAgICAgICAgICAgb3RoZXIgeyMgZGF5c31cbiAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgSE9VUlM6IGB7aG91cnMsIHBsdXJhbCxcbiAgICAgICAgICAgICAgICA9MSB7IyBob3VyfVxuICAgICAgICAgICAgICAgIG90aGVyIHsjIGhvdXJzfVxuICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICBNSU5VVEVTOiBge21pbnV0ZXMsIHBsdXJhbCxcbiAgICAgICAgICAgICAgICA9MSB7IyBtaW51dGV9XG4gICAgICAgICAgICAgICAgb3RoZXIgeyMgbWludXRlc31cbiAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgU0VDT05EUzogYHtzZWNvbmRzLCBwbHVyYWwsXG4gICAgICAgICAgICAgICAgPTEgeyMgc2Vjb25kfVxuICAgICAgICAgICAgICAgIG90aGVyIHsjIHNlY29uZHN9XG4gICAgICAgICAgICB9YCxcbiAgICAgICAgICAgIFlFQVJTX0ZSQUNUSU9OOiBge3llYXJzfSB5ZWFyc2AsXG4gICAgICAgICAgICBNT05USFNfRlJBQ1RJT046IGB7bW9udGhzfSBtb250aHNgXG4gICAgICAgIH0sXG4gICAgICAgIHNob3J0OiB7XG4gICAgICAgICAgICBTRVBBUkFUT1I6ICcnLFxuICAgICAgICAgICAgWUVBUlM6IGB7eWVhcnN9IHlgLFxuICAgICAgICAgICAgTU9OVEhTOiBge21vbnRoc30gbW9gLFxuICAgICAgICAgICAgV0VFS1M6IGB7d2Vla3N9IHdgLFxuICAgICAgICAgICAgREFZUzogYHtkYXlzfSBkYCxcbiAgICAgICAgICAgIEhPVVJTOiBge2hvdXJzfSBoYCxcbiAgICAgICAgICAgIE1JTlVURVM6IGB7bWludXRlc30gbWluYCxcbiAgICAgICAgICAgIFNFQ09ORFM6IGB7U0hPV19NSUxMSVNFQ09ORFMsIHNlbGVjdCwgeWVzXG4gICAgICAgICAgICAgICAge3tzZWNvbmRzfS57bWlsbGlzZWNvbmRzfSBzfVxuICAgICAgICAgICAgICAgIG90aGVyXG4gICAgICAgICAgICAgICAge3tzZWNvbmRzfSBzfVxuICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICBZRUFSU19GUkFDVElPTjogJ3t5ZWFyc30geScsXG4gICAgICAgICAgICBNT05USFNfRlJBQ1RJT046ICd7bW9udGhzfSBtbydcbiAgICAgICAgfVxuICAgIH1cbn07XG4iXX0=