@norwegian/core-components 6.0.3 → 6.2.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 (111) hide show
  1. package/esm2022/lib/components/accordion/accordion.component.mjs +17 -12
  2. package/esm2022/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.mjs +1 -1
  3. package/esm2022/lib/components/airport-select/airport-select.component.mjs +13 -1
  4. package/esm2022/lib/components/autocomplete/autocomplete.component.mjs +7 -1
  5. package/esm2022/lib/components/backdrop/backdrop.component.mjs +3 -1
  6. package/esm2022/lib/components/box/box.component.mjs +4 -4
  7. package/esm2022/lib/components/button/button.component.mjs +5 -1
  8. package/esm2022/lib/components/checkbox/checkbox.component.mjs +3 -1
  9. package/esm2022/lib/components/chip/chip.component.mjs +2 -7
  10. package/esm2022/lib/components/container/container.component.mjs +1 -1
  11. package/esm2022/lib/components/continue/continue.component.mjs +6 -1
  12. package/esm2022/lib/components/cover/cover.component.mjs +1 -1
  13. package/esm2022/lib/components/datepicker/calendar/calendar.component.mjs +1 -1
  14. package/esm2022/lib/components/datepicker/datepicker.component.mjs +16 -1
  15. package/esm2022/lib/components/datepicker-combo/datepicker-combo.component.mjs +17 -1
  16. package/esm2022/lib/components/divider/divider.component.mjs +1 -1
  17. package/esm2022/lib/components/dropdown/dropdown.component.mjs +2 -1
  18. package/esm2022/lib/components/filter/filter.component.mjs +36 -2
  19. package/esm2022/lib/components/grid/grid.component.mjs +1 -1
  20. package/esm2022/lib/components/icon/icon.component.mjs +1 -1
  21. package/esm2022/lib/components/icon-list/icon-list.component.mjs +1 -1
  22. package/esm2022/lib/components/icon-list/icon-list.model.mjs +1 -1
  23. package/esm2022/lib/components/info/info.component.mjs +5 -4
  24. package/esm2022/lib/components/input/input.component.mjs +6 -1
  25. package/esm2022/lib/components/journey/journey.component.mjs +5 -7
  26. package/esm2022/lib/components/journey-availability/journey-availability.component.mjs +7 -5
  27. package/esm2022/lib/components/journey-availability-list/journey-availability-list.component.mjs +22 -25
  28. package/esm2022/lib/components/journey-selection/journey-selection.component.mjs +12 -4
  29. package/esm2022/lib/components/journey-stopover/journey-stopover.component.mjs +18 -20
  30. package/esm2022/lib/components/list/list.component.mjs +1 -1
  31. package/esm2022/lib/components/modal/modal.component.mjs +5 -7
  32. package/esm2022/lib/components/number-field/number-field.component.mjs +4 -2
  33. package/esm2022/lib/components/page-footer/page-footer.component.mjs +2 -4
  34. package/esm2022/lib/components/page-header/page-header.component.mjs +30 -12
  35. package/esm2022/lib/components/page-header/page-header.module.mjs +5 -4
  36. package/esm2022/lib/components/passenger-select/models/passengers.model.mjs +1 -1
  37. package/esm2022/lib/components/passenger-select/passenger-select.component.mjs +11 -7
  38. package/esm2022/lib/components/phone-number/phone-number.component.mjs +11 -15
  39. package/esm2022/lib/components/premium-toggle/premium-toggle.component.mjs +3 -4
  40. package/esm2022/lib/components/radio/radio.component.mjs +4 -2
  41. package/esm2022/lib/components/select/select.component.mjs +11 -7
  42. package/esm2022/lib/components/simple-list/simple-list.component.mjs +1 -1
  43. package/esm2022/lib/components/slide-toggle/slide-toggle.component.mjs +9 -5
  44. package/esm2022/lib/components/slider/slider.component.mjs +32 -18
  45. package/esm2022/lib/components/sort/sort.component.mjs +11 -7
  46. package/esm2022/lib/components/spinner/spinner.component.mjs +13 -18
  47. package/esm2022/lib/components/subsidy-discount/subsidy-discount.component.mjs +13 -7
  48. package/esm2022/lib/components/suggestions/suggestions.component.mjs +3 -2
  49. package/esm2022/lib/components/tab-group/tab-group.component.mjs +3 -2
  50. package/esm2022/lib/components/table/table.component.mjs +1 -3
  51. package/esm2022/lib/components/textarea/textarea.component.mjs +6 -1
  52. package/esm2022/lib/components/toggle/toggle.component.mjs +5 -5
  53. package/esm2022/lib/components/trip-summary/trip-summary.component.mjs +26 -31
  54. package/esm2022/lib/components/weather-icon/weather-icon.component.mjs +3 -2
  55. package/fesm2022/norwegian-core-components.mjs +371 -221
  56. package/fesm2022/norwegian-core-components.mjs.map +1 -1
  57. package/lib/components/accordion/accordion.component.d.ts +81 -78
  58. package/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.d.ts +2 -2
  59. package/lib/components/airport-select/airport-select.component.d.ts +38 -2
  60. package/lib/components/autocomplete/autocomplete.component.d.ts +15 -2
  61. package/lib/components/backdrop/backdrop.component.d.ts +3 -0
  62. package/lib/components/box/box.component.d.ts +13 -3
  63. package/lib/components/button/button.component.d.ts +26 -0
  64. package/lib/components/checkbox/checkbox.component.d.ts +18 -2
  65. package/lib/components/chip/chip.component.d.ts +5 -21
  66. package/lib/components/container/container.component.d.ts +6 -0
  67. package/lib/components/continue/continue.component.d.ts +14 -0
  68. package/lib/components/cover/cover.component.d.ts +13 -3
  69. package/lib/components/datepicker/calendar/calendar.component.d.ts +2 -2
  70. package/lib/components/datepicker/datepicker.component.d.ts +33 -2
  71. package/lib/components/datepicker-combo/datepicker-combo.component.d.ts +42 -0
  72. package/lib/components/divider/divider.component.d.ts +9 -0
  73. package/lib/components/dropdown/dropdown.component.d.ts +8 -0
  74. package/lib/components/filter/filter.component.d.ts +108 -2
  75. package/lib/components/grid/grid.component.d.ts +12 -0
  76. package/lib/components/icon/icon.component.d.ts +5 -8
  77. package/lib/components/icon-list/icon-list.component.d.ts +5 -0
  78. package/lib/components/icon-list/icon-list.model.d.ts +1 -0
  79. package/lib/components/info/info.component.d.ts +7 -18
  80. package/lib/components/input/input.component.d.ts +30 -5
  81. package/lib/components/journey/journey.component.d.ts +9 -16
  82. package/lib/components/journey-availability/journey-availability.component.d.ts +8 -8
  83. package/lib/components/journey-availability-list/journey-availability-list.component.d.ts +29 -34
  84. package/lib/components/journey-selection/journey-selection.component.d.ts +14 -3
  85. package/lib/components/journey-stopover/journey-stopover.component.d.ts +35 -43
  86. package/lib/components/list/list.component.d.ts +8 -0
  87. package/lib/components/modal/modal.component.d.ts +16 -34
  88. package/lib/components/number-field/number-field.component.d.ts +26 -12
  89. package/lib/components/page-footer/page-footer.component.d.ts +9 -16
  90. package/lib/components/page-header/page-header.component.d.ts +30 -15
  91. package/lib/components/page-header/page-header.module.d.ts +2 -1
  92. package/lib/components/passenger-select/models/passengers.model.d.ts +2 -2
  93. package/lib/components/passenger-select/passenger-select.component.d.ts +33 -18
  94. package/lib/components/phone-number/phone-number.component.d.ts +80 -108
  95. package/lib/components/premium-toggle/premium-toggle.component.d.ts +9 -13
  96. package/lib/components/radio/radio.component.d.ts +35 -18
  97. package/lib/components/select/select.component.d.ts +47 -29
  98. package/lib/components/simple-list/simple-list.component.d.ts +16 -8
  99. package/lib/components/slide-toggle/slide-toggle.component.d.ts +16 -9
  100. package/lib/components/slider/slider.component.d.ts +51 -28
  101. package/lib/components/sort/sort.component.d.ts +12 -7
  102. package/lib/components/spinner/spinner.component.d.ts +24 -37
  103. package/lib/components/subsidy-discount/subsidy-discount.component.d.ts +14 -7
  104. package/lib/components/suggestions/suggestions.component.d.ts +6 -3
  105. package/lib/components/tab-group/tab-group.component.d.ts +6 -3
  106. package/lib/components/table/table.component.d.ts +3 -8
  107. package/lib/components/textarea/textarea.component.d.ts +42 -20
  108. package/lib/components/toggle/toggle.component.d.ts +44 -68
  109. package/lib/components/trip-summary/trip-summary.component.d.ts +68 -82
  110. package/lib/components/weather-icon/weather-icon.component.d.ts +12 -6
  111. package/package.json +3 -3
@@ -11,6 +11,7 @@ import * as i4 from "./airport-select-dropdown/airport-select-dropdown.component
11
11
  */
12
12
  export class AirportSelectComponent extends NasComponentBase {
13
13
  /**
14
+ * @property Input
14
15
  * @description
15
16
  * The airport code of the origin airport. It will set the selected origin airport based on this value.
16
17
  */
@@ -30,6 +31,7 @@ export class AirportSelectComponent extends NasComponentBase {
30
31
  }
31
32
  }
32
33
  /**
34
+ * @property Input
33
35
  * @description
34
36
  * The airport code of the destination airport. It will set the selected destination airport based on this value.
35
37
  */
@@ -63,52 +65,62 @@ export class AirportSelectComponent extends NasComponentBase {
63
65
  geolocationDenied: ''
64
66
  };
65
67
  /**
68
+ * @property Input
66
69
  * @required
67
70
  * @description
68
71
  * A label that will appear on top of the origin airport input field.
69
72
  */
70
73
  this.labelOrigin = '';
71
74
  /**
75
+ * @property Input
72
76
  * @description
73
77
  * A placeholder that will appear on the origin airport input field.
74
78
  */
75
79
  this.placeholderOrigin = '';
76
80
  /**
81
+ * @property Input
77
82
  * @description
78
83
  * A label that will appear on top of the destination airport input field.
79
84
  */
80
85
  this.labelDestination = '';
81
86
  /**
87
+ * @property Input
82
88
  * @description
83
89
  * A placeholder that will appear on the destination airport input field.
84
90
  */
85
91
  this.placeholderDestination = '';
86
92
  /**
93
+ * @property Output
87
94
  * @description
88
95
  * An event that is fired every time the selected origin airport changes.
89
96
  */
90
97
  this.originChange = new EventEmitter();
91
98
  /**
99
+ * @property Output
92
100
  * @description
93
101
  * An event that is fired every time the origin dropdown selector opens or closes.
94
102
  */
95
103
  this.originOpenChange = new EventEmitter();
96
104
  /**
105
+ * @property Output
97
106
  * @description
98
107
  * An event that is fired every time the origin dropdown selector opens or closes.
99
108
  */
100
109
  this.destinationChange = new EventEmitter();
101
110
  /**
111
+ * @property Output
102
112
  * @description
103
113
  * An event that is fired every time the destination dropdown selector opens or closes.
104
114
  */
105
115
  this.destinationOpenChange = new EventEmitter();
106
116
  /**
117
+ * @property Output
107
118
  * @description
108
119
  * An event that is fired when the destination dropdown closes.
109
120
  */
110
121
  this.focusOnNext = new EventEmitter();
111
122
  /**
123
+ * @property Output
112
124
  * @description
113
125
  * An event that is fired when geolocation position has changed.
114
126
  */
@@ -435,4 +447,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
435
447
  }], positionChange: [{
436
448
  type: Output
437
449
  }] } });
438
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWlycG9ydC1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9haXJwb3J0LXNlbGVjdC9haXJwb3J0LXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2FpcnBvcnQtc2VsZWN0L2FpcnBvcnQtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04saUJBQWlCLEVBQ2pCLFNBQVMsRUFHVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7OztBQUk5Qzs7O0dBR0c7QUFPSCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsZ0JBQWdCO0lBd00xRDs7O09BR0c7SUFDSCxJQUNJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0lBQ0QsSUFBSSxpQkFBaUIsQ0FBQyxJQUFZO1FBQ2hDLElBQUksSUFBSSxFQUFFO1lBQ1IsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLHNCQUFzQixFQUFFO2dCQUN4QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7YUFDbEI7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFDSSxzQkFBc0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENB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QUs7Z0JBUUcsWUFBWTtzQkFBcEIsS0FBSztnQkFPRixpQkFBaUI7c0JBRHBCLEtBQUs7Z0JBcUJGLHNCQUFzQjtzQkFEekIsS0FBSztnQkFvQkcsY0FBYztzQkFBdEIsS0FBSztnQkFNRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBTUksWUFBWTtzQkFBckIsTUFBTTtnQkFNRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBTUcsaUJBQWlCO3NCQUExQixNQUFNO2dCQU1HLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFNRyxXQUFXO3NCQUFwQixNQUFNO2dCQU1HLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgTm9yd2VnaWFuIEFpciBTaHV0dGxlLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7IEFpcnBvcnRNb2RlbCB9IGZyb20gJy4vbW9kZWxzL2FpcnBvcnQubW9kZWwnO1xuaW1wb3J0IHsgQ2xhc3NNb2RlbCB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzL2NsYXNzLm1vZGVsJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmFzQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgUmVzdWx0c0xhYmVsc01vZGVsIH0gZnJvbSAnLi9tb2RlbHMvcmVzdWx0cy1sYWJlbHMubW9kZWwnO1xuaW1wb3J0IHsgQWlycG9ydFNlbGVjdERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi9haXJwb3J0LXNlbGVjdC1kcm9wZG93bi9haXJwb3J0LXNlbGVjdC1kcm9wZG93bi5jb21wb25lbnQnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogTm9yd2VnaWFuIEFpcnBvcnQgU2VsZWN0IENvbXBvbmVudCB8IEZ1bmN0aW9uYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmFzLWFpcnBvcnQtc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FpcnBvcnQtc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWlycG9ydC1zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBBaXJwb3J0U2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgTmFzQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGFpcnBvcnRzT3JpZ2luOiBBcnJheTxBaXJwb3J0TW9kZWw+O1xuICBhaXJwb3J0c0Rlc3RpbmF0aW9uID0gbmV3IEFycmF5PEFpcnBvcnRNb2RlbD4oKTtcbiAgY3VycmVudExhdGVzdFNlYXJjaGVzRGVzdGluYXRpb246IEFycmF5PEFpcnBvcnRNb2RlbD47XG4gIGNsb3Nlc3RBaXJwb3J0c0Rlc3RpbmF0aW9uOiBBcnJheTxBaXJwb3J0TW9kZWw+O1xuICBmb2N1c0Rlc3RpbmF0aW9uID0gZmFsc2U7XG4gIHRleHRTZWxlY3RPcmlnaW5GaXJzdDogc3RyaW5nO1xuICBmb2N1c2VkTGF0ZXN0U2VhcmNoZXNBaXJwb3J0Q29kZURlc3RpbmF0aW9uOiBzdHJpbmc7XG4gIGZvY3VzZWRBaXJwb3J0Q29kZURlc3RpbmF0aW9uOiBzdHJpbmc7XG4gIGZvY3VzZWRMYXRlc3RTZWFyY2hlc0luZGV4RGVzdGluYXRpb24gPSAtMTtcbiAgZm9jdXNlZEFpcnBvcnRJbmRleERlc3RpbmF0aW9uID0gLTE7XG4gIHN3aXRjaFR5cGUgPSAnc3dpdGNoJztcbiAgaXNEZXN0aW5hdGlvblZhbGlkOiBib29sZWFuO1xuXG4gIHJlc3VsdHNMYWJlbHM6IFJlc3VsdHNMYWJlbHNNb2RlbCA9IHtcbiAgICBhbGxBaXJwb3J0czogJycsXG4gICAgY2xvc2VzdEFpcnBvcnRzOiAnJyxcbiAgICBsYXRlc3RTZWFyY2hlczogJycsXG4gICAgZ2VvbG9jYXRpb246ICcnLFxuICAgIGdlb2xvY2F0aW9uRGVuaWVkOiAnJ1xuICB9O1xuXG4gIG9yaWdpbk9wZW46IGJvb2xlYW47XG4gIGRlc3RpbmF0aW9uT3BlbjogYm9vbGVhbjtcblxuICBAVmlld0NoaWxkKCdzd2l0Y2hCdXR0b24nKSBzd2l0Y2hCdXR0b246IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2FpcnBvcnRTZWxlY3REcm9wZG93bk9yaWdpbicpIGFpcnBvcnRTZWxlY3REcm9wZG93bk9yaWdpbjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnYWlycG9ydFNlbGVjdERyb3Bkb3duRGVzdGluYXRpb24nKSBhaXJwb3J0U2VsZWN0RHJvcGRvd25EZXN0aW5hdGlvbjogQWlycG9ydFNlbGVjdERyb3Bkb3duQ29tcG9uZW50O1xuXG4gIG9yaWdpbjogQWlycG9ydE1vZGVsO1xuICBkZXN0aW5hdGlvbjogQWlycG9ydE1vZGVsO1xuXG4gIC8qKlxuICAgKiBAcmVxdWlyZWRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFsbCBhaXJwb3J0cyB0aGF0IHdpbGwgYmUgcG9wdWxhdGVkIGludG8gdGhlIGRyb3Bkb3duIGxpc3RzLlxuICAgKi9cbiAgQElucHV0KCkgYWlycG9ydHM6IEFycmF5PEFpcnBvcnRNb2RlbD47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIHJlY29yZCBjb250YWluaW5nIGtleXMgd2l0aCBhbGwgYWlycG9ydCBjb2RlcyB3aXRoIGNvcnJlc3BvbmRpbmcgYXJyYXkgb2YgYWlycG9ydCBjb2RlcyBjb25uZWN0ZWQgdG8gdGhlIGtleS5cbiAgICovXG4gIEBJbnB1dCgpIGFpcnBvcnRSZWxhdGlvbnM6IFJlY29yZDxzdHJpbmcsIEFycmF5PHN0cmluZz4+O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gYXJyYXkgb2Ygb3JpZ2luIGFpcnBvcnRzIHRoYXQgdGhlIHVzZXIgaGFzIGFsbHJlYWR5IHNlYXJjaCBmb3IuXG4gICAqL1xuICBASW5wdXQoKSBsYXRlc3RTZWFyY2hlc09yaWdpbjogQXJyYXk8QWlycG9ydE1vZGVsPjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFuIGFycmF5IG9mIGRlc3RpbmF0aW9uIGFpcnBvcnRzIHRoYXQgdGhlIHVzZXIgaGFzIGFsbHJlYWR5IHNlYXJjaCBmb3IuXG4gICAqL1xuICBASW5wdXQoKSBsYXRlc3RTZWFyY2hlc0Rlc3RpbmF0aW9uOiBBcnJheTxBaXJwb3J0TW9kZWw+O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gYXJyYXkgb2YgYWlycG9ydHMgdGhhdCBhcmUgY2xvc2UgdG8gdGhlIHVzZXIuXG4gICAqL1xuICBASW5wdXQoKSBjbG9zZXN0QWlycG9ydHM6IEFycmF5PEFpcnBvcnRNb2RlbD47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxpc3Qgb2YgYWlycG9ydHMgdGhhdCBzaG91bGQgYmUgZGlzcGxheWVkIGluIHRoZSBvcmlnaW4gZHJvcGRvd24uXG4gICAqIElmIG5vdCBpbmNsdWRlZCwgYWxsIGFpcnBvcnRzIHdpbGwgYmUgZGlzcGxheWVkLlxuICAgKi9cbiAgQElucHV0KCkgYWxsb3dlZE9yaWdpbkFpcG9ydHM6IEFycmF5PEFpcnBvcnRNb2RlbD47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBhcnJheSBvZiBhaXJwb3J0cyB0aGF0IGFyZSByZXN0cmljdGVkIGZvciBkZXN0aW5hdGlvbiBhaXJwb3J0cy4gSXQgd2lsbCBkZWZhdWx0IHRvIGFpcnBvcnRzIGlmIG5vdCBzZXQuXG4gICAqL1xuICBASW5wdXQoKSBhbGxvd2VkRGVzdGluYXRpb25BaXJwb3J0czogQXJyYXk8QWlycG9ydE1vZGVsPjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIGFpcnBvcnRzIHRoYXQgdGhlIHVzZXIgYWxscmVhZHkgaGFzIHNlYXJoIGZvciBzaG91bGQgYmUgZGlzcGxheWVkLlxuICAgKi9cbiAgQElucHV0KCkgZGlzcGxheUxhdGVzdFNlYXJjaGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIGFpcnBvcnRzIHRoYXQgYXJlIGNsb3NlIHRvIHRoZSB1c2VyIHNob3VsZCBiZSBkaXNwbGF5ZWQuXG4gICAqL1xuICBASW5wdXQoKSBkaXNwbGF5Q2xvc2VzdEFpcnBvcnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIERpc3BsYXkgYm90aCBvcmdpbiBhbmQgZGVzdGluYXRpb24gYWlycG9ydCBzZWxlY3Rvci5cbiAgICovXG4gIEBJbnB1dCgpIGNvbWJvPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIERpc3BsYXkgc3dpdGNoIFVJIHRvIGludGVyY2hhbmdlIG9yaWdpbiBhbmQgZGVzdGluYXRpb24gYWlycG9ydC5cbiAgICovXG4gIEBJbnB1dCgpIHVzZVN3aXRjaD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxhYmVsIHRoYXQgd2lsbCBhcHBlYXIgb24gdG9wIG9mIGFsbCBhaXJwb3J0cyBpbiB0aGUgZHJvcCBkb3duIGxpc3QuXG4gICAqL1xuICBASW5wdXQoKSBhbGxBaXJwb3J0c0xhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxhYmVsIHRoYXQgd2lsbCBhcHBlYXIgb24gdG9wIG9mIHRoZSBsYXRlc3Qgc2VhcmNoZXMgaW4gdGhlIGRyb3AgZG93biBsaXN0LlxuICAgKi9cbiAgQElucHV0KCkgbGF0ZXN0U2VhcmNoZXNMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBsYWJlbCB0aGF0IHdpbGwgYXBwZWFyIG9uIHRvcCBvZiB0aGUgY2xvc2VzdCBhaXJwb3J0cyBpbiB0aGUgZHJvcCBkb3duIGxpc3QuXG4gICAqL1xuICBASW5wdXQoKSBjbG9zZXN0QWlycG9ydHNMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBsYWJlbCB0aGF0IHdpbGwgYXBwZWFyIGluIG15IGxvY2F0aW9uIGluIHRoZSBkcm9wIGRvd24gbGlzdC5cbiAgICovXG4gIEBJbnB1dCgpIGdlb2xvY2F0aW9uTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbGFiZWwgdGhhdCB3aWxsIGFwcGVhciBpbiBteSBsb2NhdGlvbiwgaW4gdGhlIGRyb3AgZG93biBsaXN0IGlmIHVzZXIgaGFzIGRlbmllZCBnZW9sb2NhdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpIGdlb2xvY2F0aW9uQmxvY2tlZExhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxhYmVsIHRoYXQgd2lsbCBhcHBlYXIgaW4gdGhlIGRlc3RpbmF0aW9uIGlucHV0IGZpZWxkIGlmIHRoZVxuICAgKiB1c2VyIHRyaWVzIHRvIHNlbGVjdCBhIGRlc3RpbmF0aW9uIGFpcnBvcnQgd2l0aG91dCBzZWxlY3RpbmcgYW4gb3JpZ2luIGFpcnBvcnQuXG4gICAqL1xuICBASW5wdXQoKSBzZWxlY3RPcmlnaW5GaXJzdExhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIHRleHQgdGhhdCBhcHBlYXJzIGluIHRoZSBkZXN0aW5hdGlvbnMgZHJvcGRvd24gbGlzdCB3aGVuIG9yaWdpbiBhaXJwb3J0IGlzIG5vdCBzZXQuXG4gICAqL1xuICBASW5wdXQoKSBpbnZhbGlkRGVzdGluYXRpb25UZXh0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEByZXF1aXJlZFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBsYWJlbCB0aGF0IHdpbGwgYXBwZWFyIG9uIHRvcCBvZiB0aGUgb3JpZ2luIGFpcnBvcnQgaW5wdXQgZmllbGQuXG4gICAqL1xuICBASW5wdXQoKSBsYWJlbE9yaWdpbiA9ICcnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBwbGFjZWhvbGRlciB0aGF0IHdpbGwgYXBwZWFyIG9uIHRoZSBvcmlnaW4gYWlycG9ydCBpbnB1dCBmaWVsZC5cbiAgICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyT3JpZ2luID0gJyc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxhYmVsIHRoYXQgd2lsbCBhcHBlYXIgb24gdG9wIG9mIHRoZSBkZXN0aW5hdGlvbiBhaXJwb3J0IGlucHV0IGZpZWxkLlxuICAgKi9cbiAgQElucHV0KCkgbGFiZWxEZXN0aW5hdGlvbiA9ICcnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBwbGFjZWhvbGRlciB0aGF0IHdpbGwgYXBwZWFyIG9uIHRoZSBkZXN0aW5hdGlvbiBhaXJwb3J0IGlucHV0IGZpZWxkLlxuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXJEZXN0aW5hdGlvbiA9ICcnO1xuXG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIG1vZGlmaWVyIHRoYXQgd2lsbCBhbGxvdyBhbHdheXMga2VlcGluZyB0aGUgc2VsZWN0ZWQgYWlycG9ydC5cbiAgICogVGhlIGxhc3Qgc2VsZWN0ZWQgYWlycG9ydCB3aWxsIGJlIHNob3duIG9uY2UgdXNlciBjbGVhcnMgdGhlIHNlbGVjdGlvbiBhbmQgYmx1ci5cbiAgICovXG4gIEBJbnB1dCgpIGtlZXBTZWxlY3Rpb246IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXRzIGEgZm9ybUNvbnRyb2xOYW1lIGRpcmVjdGl2ZSB0byB0aGUgaW5wdXQuXG4gICAqIEl0IHJlcXVpcmVzIHRoYXQgdGhlIGNvbnN1bWVyIGluY2x1ZGVkIFJlYWN0aXZlRm9ybXNNb2R1bGUgaW4gaXQncyBtb2R1bGUuXG4gICAqIEl0IHJlcXVpZXJzIHRoYXQgdGhlIG5hc0Zvcm1Hcm91cCBpbnB1dCBpcyBmaWxsZWQuXG4gICAqL1xuICBASW5wdXQoKSBuYXNGb3JtQ29udHJvbE5hbWVPcmlnaW46IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgYSBmb3JtQ29udHJvbE5hbWUgZGlyZWN0aXZlIHRvIHRoZSBpbnB1dC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgcmVxdWllcnMgdGhhdCB0aGUgbmFzRm9ybUdyb3VwIGlucHV0IGlzIGZpbGxlZC5cbiAgICovXG4gIEBJbnB1dCgpIG5hc0Zvcm1Db250cm9sTmFtZURlc3RpbmF0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBZGRzIHRoZSBwYXJlbnQncyBmb3JtIGdyb3VwLlxuICAgKiBJdCByZXF1aXJlcyB0aGF0IHRoZSBjb25zdW1lciBpbmNsdWRlZCBSZWFjdGl2ZUZvcm1zTW9kdWxlIGluIGl0J3MgbW9kdWxlLlxuICAgKiBJdCBpcyByZXF1aWVyZWQgdG8gYmUgZmlsbGVkIGlmIG5hc0Zvcm1Db250cm9sTmFtZSBhZGRlZC5cbiAgICovXG4gIEBJbnB1dCgpIG5hc0Zvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cDtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBhaXJwb3J0IGNvZGUgb2YgdGhlIG9yaWdpbiBhaXJwb3J0LiBJdCB3aWxsIHNldCB0aGUgc2VsZWN0ZWQgb3JpZ2luIGFpcnBvcnQgYmFzZWQgb24gdGhpcyB2YWx1ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBvcmlnaW5BaXJwb3J0Q29kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5vcmlnaW5BaXJwb3J0Q29kZVZhbHVlO1xuICB9XG4gIHNldCBvcmlnaW5BaXJwb3J0Q29kZShjb2RlOiBzdHJpbmcpIHtcbiAgICBpZiAoY29kZSkge1xuICAgICAgaWYgKGNvZGUgIT09IHRoaXMub3JpZ2luQWlycG9ydENvZGVWYWx1ZSkge1xuICAgICAgICB0aGlzLm9yaWdpbkFpcnBvcnRDb2RlVmFsdWUgPSBjb2RlO1xuICAgICAgICB0aGlzLnNldE9yaWdpbigpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9yaWdpbkFpcnBvcnRDb2RlVmFsdWUgPSAnJztcbiAgICAgIHRoaXMuY2xlYXJPcmlnaW4oKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBhaXJwb3J0IGNvZGUgb2YgdGhlIGRlc3RpbmF0aW9uIGFpcnBvcnQuIEl0IHdpbGwgc2V0IHRoZSBzZWxlY3RlZCBkZXN0aW5hdGlvbiBhaXJwb3J0IGJhc2VkIG9uIHRoaXMgdmFsdWUuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgZGVzdGluYXRpb25BaXJwb3J0Q29kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5kZXN0aW5hdGlvbkFpcnBvcnRDb2RlVmFsdWU7XG4gIH1cbiAgc2V0IGRlc3RpbmF0aW9uQWlycG9ydENvZGUoY29kZTogc3RyaW5nKSB7XG4gICAgaWYgKGNvZGUpIHtcbiAgICAgIGlmIChjb2RlICE9PSB0aGlzLmRlc3RpbmF0aW9uQWlycG9ydENvZGVWYWx1ZSkge1xuICAgICAgICB0aGlzLmRlc3RpbmF0aW9uQWlycG9ydENvZGVWYWx1ZSA9IGNvZGU7XG4gICAgICAgIHRoaXMuc2V0RGVzdGluYXRpb24oKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZXN0aW5hdGlvbkFpcnBvcnRDb2RlVmFsdWUgPSAnJztcbiAgICAgIHRoaXMuY2xlYXJEZXN0aW5hdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkcyAnYXJpYS1sYWJlbCcgb24gdGhlIGNsZWFyIGJ1dHRvbiBpbnNpZGUgdGhlIGFpcnBvcnQgc2VsZWN0IGlucHV0cy5cbiAgICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbENsZWFyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBZGRzICdhcmlhLWxhYmVsJyB0byB0aGUgYmFja2Ryb3BzLlxuICAgKi9cbiAgQElucHV0KCkgYXJpYUxhYmVsQmFja2Ryb3A6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFuIGV2ZW50IHRoYXQgaXMgZmlyZWQgZXZlcnkgdGltZSB0aGUgc2VsZWN0ZWQgb3JpZ2luIGFpcnBvcnQgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKSBvcmlnaW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEFpcnBvcnRNb2RlbD4oKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFuIGV2ZW50IHRoYXQgaXMgZmlyZWQgZXZlcnkgdGltZSB0aGUgb3JpZ2luIGRyb3Bkb3duIHNlbGVjdG9yIG9wZW5zIG9yIGNsb3Nlcy5cbiAgICovXG4gIEBPdXRwdXQoKSBvcmlnaW5PcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIC8qKlxuICAqIEBkZXNjcmlwdGlvblxuICAqIEFuIGV2ZW50IHRoYXQgaXMgZmlyZWQgZXZlcnkgdGltZSB0aGUgb3JpZ2luIGRyb3Bkb3duIHNlbGVjdG9yIG9wZW5zIG9yIGNsb3Nlcy5cbiAgKi9cbiAgQE91dHB1dCgpIGRlc3RpbmF0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxBaXJwb3J0TW9kZWw+KCk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBldmVudCB0aGF0IGlzIGZpcmVkIGV2ZXJ5IHRpbWUgdGhlIGRlc3RpbmF0aW9uIGRyb3Bkb3duIHNlbGVjdG9yIG9wZW5zIG9yIGNsb3Nlcy5cbiAgICovXG4gIEBPdXRwdXQoKSBkZXN0aW5hdGlvbk9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBldmVudCB0aGF0IGlzIGZpcmVkIHdoZW4gdGhlIGRlc3RpbmF0aW9uIGRyb3Bkb3duIGNsb3Nlcy5cbiAgICovXG4gIEBPdXRwdXQoKSBmb2N1c09uTmV4dCA9IG5ldyBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD4oKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFuIGV2ZW50IHRoYXQgaXMgZmlyZWQgd2hlbiBnZW9sb2NhdGlvbiBwb3NpdGlvbiBoYXMgY2hhbmdlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBwb3NpdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8R2VvbG9jYXRpb25Qb3NpdGlvbj4oKTtcblxuICBwcml2YXRlIG9yaWdpbkFpcnBvcnRDb2RlVmFsdWU6IHN0cmluZztcbiAgcHJpdmF0ZSBkZXN0aW5hdGlvbkFpcnBvcnRDb2RlVmFsdWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignbmFzLWFpcnBvcnQtc2VsZWN0Jyk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYWlycG9ydHMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBpbnB1dDogW2FpcnBvcnRzXScpO1xuICAgIH1cblxuICAgIHRoaXMucmVzdWx0c0xhYmVscyA9IHtcbiAgICAgIGFsbEFpcnBvcnRzOiB0aGlzLmFsbEFpcnBvcnRzTGFiZWwgfHwgJycsXG4gICAgICBjbG9zZXN0QWlycG9ydHM6IHRoaXMuY2xvc2VzdEFpcnBvcnRzTGFiZWwgfHwgJycsXG4gICAgICBsYXRlc3RTZWFyY2hlczogdGhpcy5sYXRlc3RTZWFyY2hlc0xhYmVsIHx8ICcnLFxuICAgICAgZ2VvbG9jYXRpb246IHRoaXMuZ2VvbG9jYXRpb25MYWJlbCB8fCAnJyxcbiAgICAgIGdlb2xvY2F0aW9uRGVuaWVkOiB0aGlzLmdlb2xvY2F0aW9uQmxvY2tlZExhYmVsIHx8ICcnXG4gICAgfTtcblxuICAgIHRoaXMudGV4dFNlbGVjdE9yaWdpbkZpcnN0ID0gdGhpcy5zZWxlY3RPcmlnaW5GaXJzdExhYmVsO1xuICAgIHRoaXMuYWlycG9ydHNPcmlnaW4gPSB0aGlzLmFsbG93ZWRPcmlnaW5BaXBvcnRzICYmIHRoaXMuYWxsb3dlZE9yaWdpbkFpcG9ydHMubGVuZ3RoID4gMCA/IHRoaXMuYWxsb3dlZE9yaWdpbkFpcG9ydHMgOiB0aGlzLmFpcnBvcnRzO1xuXG4gICAgdGhpcy5haXJwb3J0c0Rlc3RpbmF0aW9uID0gdGhpcy5nZXRBaXJwb3J0c0Rlc3RpbmF0aW9ucygpO1xuXG4gICAgaWYgKHRoaXMubmFzRm9ybUdyb3VwKSB7XG4gICAgICBpZiAodGhpcy5uYXNGb3JtQ29udHJvbE5hbWVPcmlnaW4pIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luQ29udHJvbCA9IHRoaXMubmFzRm9ybUdyb3VwLmdldCh0aGlzLm5hc0Zvcm1Db250cm9sTmFtZU9yaWdpbik7XG5cbiAgICAgICAgaWYgKG9yaWdpbkNvbnRyb2wpIHtcbiAgICAgICAgICBjb25zdCBvcmlnaW4gPSB0aGlzLmFpcnBvcnRzT3JpZ2luLmZpbmQoeCA9PiB4Lm5hbWUgPT09IG9yaWdpbkNvbnRyb2wudmFsdWUpO1xuXG4gICAgICAgICAgaWYgKG9yaWdpbikge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5BaXJwb3J0Q29kZSA9IG9yaWdpbi5jb2RlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5uYXNGb3JtQ29udHJvbE5hbWVEZXN0aW5hdGlvbikge1xuICAgICAgICBjb25zdCBkZXN0aW5hdGlvbkNvbnRyb2wgPSB0aGlzLm5hc0Zvcm1Hcm91cC5nZXQodGhpcy5uYXNGb3JtQ29udHJvbE5hbWVEZXN0aW5hdGlvbik7XG5cbiAgICAgICAgaWYgKGRlc3RpbmF0aW9uQ29udHJvbCkge1xuICAgICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uID0gdGhpcy5haXJwb3J0c0Rlc3RpbmF0aW9uLmZpbmQoeCA9PiB4Lm5hbWUgPT09IGRlc3RpbmF0aW9uQ29udHJvbC52YWx1ZSk7XG5cbiAgICAgICAgICBpZiAoZGVzdGluYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdGluYXRpb25BaXJwb3J0Q29kZSA9IGRlc3RpbmF0aW9uLmNvZGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZGVzdGluYXRpb24pIHtcbiAgICAgIHRoaXMuY2xlYXJEZXN0aW5hdGlvbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZGVzdGluYXRpb25DaGFuZ2UuZW1pdCh0aGlzLmRlc3RpbmF0aW9uKTtcbiAgICB0aGlzLm9yaWdpbkNoYW5nZS5lbWl0KHRoaXMub3JpZ2luKTtcblxuXG4gICAgaWYgKHRoaXMub3JpZ2luQWlycG9ydENvZGUpIHtcbiAgICAgIHRoaXMuc2V0T3JpZ2luKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGVzdGluYXRpb25BaXJwb3J0Q29kZSkge1xuICAgICAgdGhpcy5zZXREZXN0aW5hdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIGdldEFpcnBvcnRTZWxlY3RDb21ib0NsYXNzKGVsZW1lbnQ/OiBzdHJpbmcsIG1vZGlmaWVyc0lucHV0PzogYW55KTogQ2xhc3NNb2RlbCB7XG4gICAgbGV0IG1vZGlmaWVycyA9IG1vZGlmaWVyc0lucHV0O1xuXG4gICAgaWYgKHR5cGVvZiBtb2RpZmllcnNJbnB1dCA9PT0gJ3N0cmluZycgfHwgbW9kaWZpZXJzSW5wdXQgaW5zdGFuY2VvZiBTdHJpbmcpIHtcbiAgICAgIG1vZGlmaWVycyA9IFttb2RpZmllcnNJbnB1dF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGJsb2NrOiAnbmFzLWFpcnBvcnQtc2VsZWN0LWNvbWJvJyxcbiAgICAgIGVsZW1lbnQ6IGVsZW1lbnQsXG4gICAgICBtb2RpZmllcnM6IG1vZGlmaWVyc1xuICAgIH07XG4gIH1cblxuICBvbk9yaWdpbk9wZW4ob3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5vcmlnaW5PcGVuID0gb3BlbjtcbiAgICB9KTtcblxuICAgIHRoaXMuZGVzdGluYXRpb25PcGVuID0gZmFsc2U7XG4gICAgdGhpcy5vcmlnaW5PcGVuQ2hhbmdlLmVtaXQob3Blbik7XG4gIH1cblxuICBvbkRlc3RpbmF0aW9uT3BlbihvcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0aW5hdGlvbk9wZW4gPSBvcGVuO1xuICAgIHRoaXMub3JpZ2luT3BlbiA9IGZhbHNlO1xuXG4gICAgdGhpcy5kZXN0aW5hdGlvbk9wZW5DaGFuZ2UuZW1pdChvcGVuKTtcbiAgfVxuXG4gIHNldFNlbGVjdGVkT3JpZ2luKGFpcnBvcnQ6IEFpcnBvcnRNb2RlbCk6IHZvaWQge1xuICAgIGlmICghYWlycG9ydCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMub3JpZ2luID0gYWlycG9ydDtcbiAgICB0aGlzLm9yaWdpbkFpcnBvcnRDb2RlVmFsdWUgPSBhaXJwb3J0LmNvZGU7XG4gICAgdGhpcy5pc0Rlc3RpbmF0aW9uVmFsaWQgPSBhaXJwb3J0LmNvZGUgPyB0cnVlIDogZmFsc2U7XG5cbiAgICBpZiAodGhpcy5haXJwb3J0UmVsYXRpb25zICYmIHRoaXMuaGFzVmFsaWREZXN0aW5hdGlvbnMoYWlycG9ydCkpIHtcbiAgICAgIHRoaXMudXBkYXRlVmFsaWRBaXJwb3J0RGVzdGluYXRpb25zKGFpcnBvcnQpO1xuICAgICAgdGhpcy5zZXRDdXJyZW50TGF0ZXN0U2VhcmNoZXNEZXN0aW5hdGlvbigpO1xuICAgIH1cblxuICAgIHRoaXMub3JpZ2luQ2hhbmdlLmVtaXQoYWlycG9ydCk7XG4gIH1cblxuICBzZXRTZWxlY3RlZERlc3RpbmF0aW9uKGFpcnBvcnQ6IEFpcnBvcnRNb2RlbCk6IHZvaWQge1xuICAgIGlmICghYWlycG9ydCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZGVzdGluYXRpb24gPSBhaXJwb3J0O1xuICAgIHRoaXMuZGVzdGluYXRpb25BaXJwb3J0Q29kZVZhbHVlID0gYWlycG9ydC5jb2RlO1xuICAgIHRoaXMuZGVzdGluYXRpb25DaGFuZ2UuZW1pdChhaXJwb3J0KTtcbiAgfVxuXG4gIHNldEZvY3VzT25OZXh0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c09uTmV4dC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uT3JpZ2luRm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWlycG9ydFNlbGVjdERyb3Bkb3duT3JpZ2luKSB7XG4gICAgICB0aGlzLm9uT3JpZ2luT3Blbih0cnVlKTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VTd2l0Y2hJY29uKCk6IHZvaWQge1xuICAgIHRoaXMuc3dpdGNoVHlwZSA9IHRoaXMuc3dpdGNoVHlwZSA9PT0gJ3N3aXRjaCcgPyAnc3dpdGNoLS1zZWNvbmRhcnknIDogJ3N3aXRjaCc7XG4gIH1cblxuICBzd2FwQWlycG9ydHMoKTogdm9pZCB7XG4gICAgY29uc3QgZGVzdGluYXRpb24gPSB7IC4uLnRoaXMuZGVzdGluYXRpb24gfTtcbiAgICBjb25zdCBvcmlnaW4gPSB7IC4uLnRoaXMub3JpZ2luIH07XG4gICAgdGhpcy5kZXN0aW5hdGlvbiA9IG9yaWdpbjtcbiAgICB0aGlzLm9yaWdpbiA9IGRlc3RpbmF0aW9uO1xuXG4gICAgdGhpcy5zZXRTZWxlY3RlZERlc3RpbmF0aW9uKHRoaXMuZGVzdGluYXRpb24pO1xuICAgIHRoaXMuc2V0U2VsZWN0ZWRPcmlnaW4odGhpcy5vcmlnaW4pO1xuICB9XG5cbiAgc3dhcEtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICB0aGlzLnN3YXBBaXJwb3J0cygpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBzZXREZXN0aW5hdGlvbk9wZW4oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5leGlzdHModGhpcy5jb21ibykpIHtcbiAgICAgIHRoaXMuZGVzdGluYXRpb25PcGVuID0gdHJ1ZTtcbiAgICAgIHRoaXMub3JpZ2luT3BlbiA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldEZvY3VzT25OZXh0KGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBnZXRDbG9zZXN0QWlycG9ydHMocG9zaXRpb246IEdlb2xvY2F0aW9uUG9zaXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLnBvc2l0aW9uQ2hhbmdlLmVtaXQocG9zaXRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBaXJwb3J0c0Rlc3RpbmF0aW9ucygpOiBBcnJheTxBaXJwb3J0TW9kZWw+IHtcbiAgICBjb25zdCBhbGxvd2VkRGVzdGluYXRpb25BaXJwb3J0cyA9IHRoaXMuYWxsb3dlZERlc3RpbmF0aW9uQWlycG9ydHM7XG5cbiAgICByZXR1cm4gYWxsb3dlZERlc3RpbmF0aW9uQWlycG9ydHMgJiYgYWxsb3dlZERlc3RpbmF0aW9uQWlycG9ydHMubGVuZ3RoID4gMFxuICAgICAgPyBhbGxvd2VkRGVzdGluYXRpb25BaXJwb3J0c1xuICAgICAgOiB0aGlzLmFpcnBvcnRzO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRPcmlnaW4oKTogdm9pZCB7XG4gICAgY29uc3QgYWlycG9ydCA9IHRoaXMuYWlycG9ydHMuZmluZCh4ID0+IHguY29kZSA9PT0gdGhpcy5vcmlnaW5BaXJwb3J0Q29kZSk7XG5cbiAgICBpZiAoYWlycG9ydCkge1xuICAgICAgdGhpcy5zZXRTZWxlY3RlZE9yaWdpbihhaXJwb3J0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldERlc3RpbmF0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IGFpcnBvcnQgPSB0aGlzLmFpcnBvcnRzLmZpbmQoeCA9PiB4LmNvZGUgPT09IHRoaXMuZGVzdGluYXRpb25BaXJwb3J0Q29kZSk7XG5cbiAgICBpZiAoYWlycG9ydCkge1xuICAgICAgdGhpcy5zZXRTZWxlY3RlZERlc3RpbmF0aW9uKGFpcnBvcnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVmFsaWRBaXJwb3J0RGVzdGluYXRpb25zKGFpcnBvcnQ6IEFpcnBvcnRNb2RlbCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5haXJwb3J0UmVsYXRpb25zKSB7XG4gICAgICB0aGlzLmFpcnBvcnRzRGVzdGluYXRpb24gPSB0aGlzLmFpcnBvcnRzT3JpZ2luO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB2YWxpZERlc3RpbmF0aW9ucyA9IHRoaXMuZ2V0QWlycG9ydFJlbGF0aW9ucyhhaXJwb3J0KTtcblxuICAgICAgaWYgKCF2YWxpZERlc3RpbmF0aW9ucykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZERlc3RpbmF0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5jbGVhckRlc3RpbmF0aW9ucygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGlzRGVzdGluYXRpb25WYWxpZDogYm9vbGVhbjtcbiAgICAgICAgaWYgKHRoaXMuZGVzdGluYXRpb24gJiYgdGhpcy5kZXN0aW5hdGlvbi5jb2RlKSB7XG4gICAgICAgICAgaXNEZXN0aW5hdGlvblZhbGlkID0gdmFsaWREZXN0aW5hdGlvbnMuc29tZSh4ID0+IHggJiYgeC50b0xvd2VyQ2FzZSgpID09PSB0aGlzLmRlc3RpbmF0aW9uLmNvZGUudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0Rlc3RpbmF0aW9uVmFsaWQpIHtcbiAgICAgICAgICB0aGlzLmNsZWFyRGVzdGluYXRpb24oKTtcbiAgICAgICAgICB0aGlzLmRlc3RpbmF0aW9uQ2hhbmdlLmVtaXQobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5haXJwb3J0cykge1xuICAgICAgICAgIHRoaXMuYWlycG9ydHNEZXN0aW5hdGlvbiA9IHRoaXMuYWlycG9ydHNcbiAgICAgICAgICAgIC5maWx0ZXIoYWlycG9ydEl0ZW0gPT4gYWlycG9ydEl0ZW1cbiAgICAgICAgICAgICAgJiYgYWlycG9ydEl0ZW0uY29kZVxuICAgICAgICAgICAgICAmJiB2YWxpZERlc3RpbmF0aW9ucy5zb21lKHggPT4geCAmJiBhaXJwb3J0SXRlbS5jb2RlLnRvTG93ZXJDYXNlKCkgPT09IHgudG9Mb3dlckNhc2UoKSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYXNWYWxpZERlc3RpbmF0aW9ucyhvcmlnaW46IEFpcnBvcnRNb2RlbCk6IGJvb2xlYW4ge1xuICAgIGlmICghb3JpZ2luKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVsYXRpb25zID0gdGhpcy5nZXRBaXJwb3J0UmVsYXRpb25zKG9yaWdpbik7XG5cbiAgICByZXR1cm4gcmVsYXRpb25zICYmIHJlbGF0aW9ucy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBaXJwb3J0UmVsYXRpb25zKGFpcnBvcnQ6IEFpcnBvcnRNb2RlbCk6IEFycmF5PHN0cmluZz4ge1xuICAgIGlmICghdGhpcy5haXJwb3J0cykge1xuICAgICAgcmV0dXJuIG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYWlycG9ydFJlbGF0aW9uc1thaXJwb3J0LmNvZGUudG9Mb3dlckNhc2UoKV0gfHwgdGhpcy5haXJwb3J0UmVsYXRpb25zW2FpcnBvcnQuY29kZS50b1VwcGVyQ2FzZSgpXTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJPcmlnaW4oKSB7XG4gICAgdGhpcy5zZXRTZWxlY3RlZE9yaWdpbih7XG4gICAgICBjb2RlOiAnJyxcbiAgICAgIGNvdW50cnlOYW1lOiAnJyxcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgYWlycG9ydE5hbWU6ICcnLFxuICAgICAgZGlzcGxheU5hbWU6ICcnLFxuICAgICAgbm9ybWFsaXplZEFpcnBvcnROYW1lOiAnJ1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckRlc3RpbmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0U2VsZWN0ZWREZXN0aW5hdGlvbih7XG4gICAgICBjb2RlOiAnJyxcbiAgICAgIGNvdW50cnlOYW1lOiAnJyxcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgYWlycG9ydE5hbWU6ICcnLFxuICAgICAgZGlzcGxheU5hbWU6ICcnLFxuICAgICAgbm9ybWFsaXplZEFpcnBvcnROYW1lOiAnJ1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckRlc3RpbmF0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLmFpcnBvcnRzRGVzdGluYXRpb24gPSBuZXcgQXJyYXk8QWlycG9ydE1vZGVsPigpO1xuXG4gICAgY29uc3QgbW9kZWwgPSB7XG4gICAgICBuYW1lOiB0aGlzLnRleHRTZWxlY3RPcmlnaW5GaXJzdCxcbiAgICAgIGNvdW50cnlOYW1lOiAnJyxcbiAgICAgIGNvZGU6ICcnLFxuICAgICAgYWlycG9ydE5hbWU6ICcnLFxuICAgICAgZGlzcGxheU5hbWU6ICcnLFxuICAgICAgbm9ybWFsaXplZEFpcnBvcnROYW1lOiAnJ1xuICAgIH07XG5cbiAgICB0aGlzLmFpcnBvcnRzRGVzdGluYXRpb24ucHVzaChtb2RlbCk7XG4gICAgdGhpcy5jbGVhckRlc3RpbmF0aW9uKCk7XG4gICAgdGhpcy5kZXN0aW5hdGlvbkNoYW5nZS5lbWl0KG1vZGVsKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q3VycmVudExhdGVzdFNlYXJjaGVzRGVzdGluYXRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWlycG9ydHNEZXN0aW5hdGlvbikge1xuICAgICAgdGhpcy5jdXJyZW50TGF0ZXN0U2VhcmNoZXNEZXN0aW5hdGlvbiA9IHRoaXMuYWlycG9ydHNEZXN0aW5hdGlvbi5maWx0ZXIoYWlycG9ydCA9PiB7XG4gICAgICAgIGlmICh0aGlzLmxhdGVzdFNlYXJjaGVzRGVzdGluYXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5sYXRlc3RTZWFyY2hlc0Rlc3RpbmF0aW9uLnNvbWUoeCA9PiB4LmNvZGUgJiYgeC5jb2RlLnRvTG93ZXJDYXNlKCkgPT09IGFpcnBvcnQuY29kZS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgKm5nSWY9XCJleGlzdHMoY29tYm8pOyBlbHNlIGFpcnBvcnRTZWxlY3RUZW1wbGF0ZVwiXG4gIFtuYXNDbGFzc109XCJnZXRBaXJwb3J0U2VsZWN0Q29tYm9DbGFzcygpXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhaXJwb3J0U2VsZWN0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNhaXJwb3J0U2VsZWN0VGVtcGxhdGU+XG4gIDxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCcnLCBleGlzdHModXNlU3dpdGNoKSAmJiAncGFkZGluZy1vcmlnaW4nKVwiXG4gICAgKm5nSWY9XCJhaXJwb3J0c09yaWdpblwiPlxuICAgIDxuYXMtYWlycG9ydC1zZWxlY3QtZHJvcGRvd24gI2FpcnBvcnRTZWxlY3REcm9wZG93bk9yaWdpblxuICAgICAgZGlzcGxheUxhdGVzdFNlYXJjaGVzXG4gICAgICBbZW5hYmxlR2VvbG9jYXRpb25dPVwiZGlzcGxheUNsb3Nlc3RBaXJwb3J0c1wiXG4gICAgICBbZGlzcGxheUNsb3Nlc3RBaXJwb3J0c109XCJkaXNwbGF5Q2xvc2VzdEFpcnBvcnRzXCJcbiAgICAgIFthaXJwb3J0U2VsZWN0TGFiZWxdPVwibGFiZWxPcmlnaW5cIlxuICAgICAgW2xhdGVzdFNlYXJjaGVzXT1cImxhdGVzdFNlYXJjaGVzT3JpZ2luXCJcbiAgICAgIFtjbG9zZXN0QWlycG9ydHNdPVwiY2xvc2VzdEFpcnBvcnRzXCJcbiAgICAgIFthaXJwb3J0XT1cIm9yaWdpblwiXG4gICAgICBbYWlycG9ydHNdPVwiYWlycG9ydHNPcmlnaW5cIlxuICAgICAgW3Jlc3VsdHNMYWJlbHNdPVwicmVzdWx0c0xhYmVsc1wiXG4gICAgICBbYWlycG9ydFNlbGVjdFBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyT3JpZ2luXCJcbiAgICAgIFtvcGVuXT1cIm9yaWdpbk9wZW5cIlxuICAgICAgW2tlZXBTZWxlY3Rpb25dPVwia2VlcFNlbGVjdGlvblwiXG4gICAgICBbYWlycG9ydFNlbGVjdEljb25Nb2RpZmllcl09XCInZmxpZ2h0LWRlcGFydHVyZSdcIlxuICAgICAgW25hc0Zvcm1Db250cm9sTmFtZV09XCJuYXNGb3JtQ29udHJvbE5hbWVPcmlnaW5cIlxuICAgICAgW25hc0Zvcm1Hcm91cF09XCJuYXNGb3JtR3JvdXBcIlxuICAgICAgW2FyaWFMYWJlbENsZWFyXT1cImFyaWFMYWJlbENsZWFyXCJcbiAgICAgIFthcmlhTGFiZWxCYWNrZHJvcF09XCJhcmlhTGFiZWxCYWNrZHJvcFwiXG4gICAgICAoc2VsZWN0ZWQpPVwic2V0U2VsZWN0ZWRPcmlnaW4oJGV2ZW50KVwiXG4gICAgICAob3BlbkNoYW5nZSk9XCJvbk9yaWdpbk9wZW4oJGV2ZW50KVwiXG4gICAgICAoZm9jdXNPbk5leHQpPVwic2V0RGVzdGluYXRpb25PcGVuKCRldmVudClcIlxuICAgICAgKHBvc2l0aW9uQ2hhbmdlKT1cImdldENsb3Nlc3RBaXJwb3J0cygkZXZlbnQpXCI+PC9uYXMtYWlycG9ydC1zZWxlY3QtZHJvcGRvd24+XG4gIDwvZGl2PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXhpc3RzKGNvbWJvKVwiPlxuICAgIDxzcGFuIFtuYXNDbGFzc109XCJnZXRBaXJwb3J0U2VsZWN0Q29tYm9DbGFzcygnc2VwYXJhdG9yJylcIj48L3NwYW4+XG4gICAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJycsIGV4aXN0cyh1c2VTd2l0Y2gpICYmICdwYWRkaW5nLWRlc3RpbmF0aW9uJylcIlxuICAgICAgKm5nSWY9XCJhaXJwb3J0c0Rlc3RpbmF0aW9uICYmIGFpcnBvcnRzRGVzdGluYXRpb24ubGVuZ3RoID4gMFwiPlxuICAgICAgPG5hcy1haXJwb3J0LXNlbGVjdC1kcm9wZG93biAjYWlycG9ydFNlbGVjdERyb3Bkb3duRGVzdGluYXRpb25cbiAgICAgICAgZGlzcGxheUxhdGVzdFNlYXJjaGVzXG4gICAgICAgIFthaXJwb3J0U2VsZWN0TGFiZWxdPVwibGFiZWxEZXN0aW5hdGlvblwiXG4gICAgICAgIFtkaXNwbGF5Q2xvc2VzdEFpcnBvcnRzXT1cImZhbHNlXCJcbiAgICAgICAgW2xhdGVzdFNlYXJjaGVzXT1cImN1cnJlbnRMYXRlc3RTZWFyY2hlc0Rlc3RpbmF0aW9uXCJcbiAgICAgICAgW2FpcnBvcnRzXT1cImFpcnBvcnRzRGVzdGluYXRpb25cIlxuICAgICAgICBbcmVzdWx0c0xhYmVsc109XCJyZXN1bHRzTGFiZWxzXCJcbiAgICAgICAgW2FpcnBvcnRdPVwiZGVzdGluYXRpb25cIlxuICAgICAgICBbYWlycG9ydFNlbGVjdFBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyRGVzdGluYXRpb25cIlxuICAgICAgICBbb3Blbl09XCJkZXN0aW5hdGlvbk9wZW5cIlxuICAgICAgICBba2VlcFNlbGVjdGlvbl09XCJrZWVwU2VsZWN0aW9uXCJcbiAgICAgICAgW2FpcnBvcnRTZWxlY3RJY29uTW9kaWZpZXJdPVwiJ2ZsaWdodC1hcnJpdmFsJ1wiXG4gICAgICAgIFtuYXNGb3JtQ29udHJvbE5hbWVdPVwibmFzRm9ybUNvbnRyb2xOYW1lRGVzdGluYXRpb25cIlxuICAgICAgICBbbmFzRm9ybUdyb3VwXT1cIm5hc0Zvcm1Hcm91cFwiXG4gICAgICAgIFthcmlhTGFiZWxDbGVhcl09XCJhcmlhTGFiZWxDbGVhclwiXG4gICAgICAgIFthcmlhTGFiZWxCYWNrZHJvcF09XCJhcmlhTGFiZWxCYWNrZHJvcFwiXG4gICAgICAgIFtpc1ZhbGlkXT1cImlzRGVzdGluYXRpb25WYWxpZFwiXG4gICAgICAgIFtpbnZhbGlkVGV4dF09XCJpbnZhbGlkRGVzdGluYXRpb25UZXh0XCJcbiAgICAgICAgKHNlbGVjdGVkKT1cInNldFNlbGVjdGVkRGVzdGluYXRpb24oJGV2ZW50KVwiXG4gICAgICAgIChvcGVuQ2hhbmdlKT1cIm9uRGVzdGluYXRpb25PcGVuKCRldmVudClcIlxuICAgICAgICAoZm9jdXNPbk5leHQpPVwic2V0Rm9jdXNPbk5leHQoJGV2ZW50KVwiXG4gICAgICAgIChmb2N1c09uUHJldmlvdXMpPVwib25PcmlnaW5Gb2N1cygpXCI+PC9uYXMtYWlycG9ydC1zZWxlY3QtZHJvcGRvd24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImV4aXN0cyh1c2VTd2l0Y2gpXCJcbiAgICAgICNzd2l0Y2hCdXR0b25cbiAgICAgIFtuYXNDbGFzc109XCJnZXRBaXJwb3J0U2VsZWN0Q29tYm9DbGFzcygnc3dpdGNoZXInKVwiXG4gICAgICAobW91c2VvdmVyKT1cImNoYW5nZVN3aXRjaEljb24oKVwiXG4gICAgICAobW91c2VsZWF2ZSk9XCJjaGFuZ2VTd2l0Y2hJY29uKClcIlxuICAgICAgKGtleWRvd24pPVwic3dhcEtleURvd24oJGV2ZW50KVwiXG4gICAgICAoY2xpY2spPVwic3dhcEFpcnBvcnRzKClcIj5cbiAgICAgIDxuYXMtaWNvbiBbdHlwZV09XCJzd2l0Y2hUeXBlXCI+PC9uYXMtaWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPiJdfQ==
450
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWlycG9ydC1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9haXJwb3J0LXNlbGVjdC9haXJwb3J0LXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2FpcnBvcnQtc2VsZWN0L2FpcnBvcnQtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04saUJBQWlCLEVBQ2pCLFNBQVMsRUFHVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7OztBQUk5Qzs7O0dBR0c7QUFPSCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsZ0JBQWdCO0lBa08xRDs7OztPQUlHO0lBQ0gsSUFDSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztJQUNELElBQUksaUJBQWlCLENBQUMsSUFBWTtRQUNoQyxJQUFJLElBQUksRUFBRTtZQUNSLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtnQkFDeEMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2FBQ2xCO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUNJLHNCQUFzQjtRQUN4QixPQUFPLElBQUksQ0FBQywyQkFBMkIs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NkI7c0JBQXJDLEtBQUs7Z0JBU0csWUFBWTtzQkFBcEIsS0FBSztnQkFRRixpQkFBaUI7c0JBRHBCLEtBQUs7Z0JBc0JGLHNCQUFzQjtzQkFEekIsS0FBSztnQkFxQkcsY0FBYztzQkFBdEIsS0FBSztnQkFPRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBT0ksWUFBWTtzQkFBckIsTUFBTTtnQkFPRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBT0csaUJBQWlCO3NCQUExQixNQUFNO2dCQU9HLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFPRyxXQUFXO3NCQUFwQixNQUFNO2dCQU9HLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgTm9yd2VnaWFuIEFpciBTaHV0dGxlLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7IEFpcnBvcnRNb2RlbCB9IGZyb20gJy4vbW9kZWxzL2FpcnBvcnQubW9kZWwnO1xuaW1wb3J0IHsgQ2xhc3NNb2RlbCB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzL2NsYXNzLm1vZGVsJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOYXNDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBSZXN1bHRzTGFiZWxzTW9kZWwgfSBmcm9tICcuL21vZGVscy9yZXN1bHRzLWxhYmVscy5tb2RlbCc7XG5pbXBvcnQgeyBBaXJwb3J0U2VsZWN0RHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL2FpcnBvcnQtc2VsZWN0LWRyb3Bkb3duL2FpcnBvcnQtc2VsZWN0LWRyb3Bkb3duLmNvbXBvbmVudCc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBOb3J3ZWdpYW4gQWlycG9ydCBTZWxlY3QgQ29tcG9uZW50IHwgRnVuY3Rpb25hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduYXMtYWlycG9ydC1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWlycG9ydC1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9haXJwb3J0LXNlbGVjdC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEFpcnBvcnRTZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBOYXNDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgYWlycG9ydHNPcmlnaW46IEFycmF5PEFpcnBvcnRNb2RlbD47XG4gIGFpcnBvcnRzRGVzdGluYXRpb24gPSBuZXcgQXJyYXk8QWlycG9ydE1vZGVsPigpO1xuICBjdXJyZW50TGF0ZXN0U2VhcmNoZXNEZXN0aW5hdGlvbjogQXJyYXk8QWlycG9ydE1vZGVsPjtcbiAgY2xvc2VzdEFpcnBvcnRzRGVzdGluYXRpb246IEFycmF5PEFpcnBvcnRNb2RlbD47XG4gIGZvY3VzRGVzdGluYXRpb24gPSBmYWxzZTtcbiAgdGV4dFNlbGVjdE9yaWdpbkZpcnN0OiBzdHJpbmc7XG4gIGZvY3VzZWRMYXRlc3RTZWFyY2hlc0FpcnBvcnRDb2RlRGVzdGluYXRpb246IHN0cmluZztcbiAgZm9jdXNlZEFpcnBvcnRDb2RlRGVzdGluYXRpb246IHN0cmluZztcbiAgZm9jdXNlZExhdGVzdFNlYXJjaGVzSW5kZXhEZXN0aW5hdGlvbiA9IC0xO1xuICBmb2N1c2VkQWlycG9ydEluZGV4RGVzdGluYXRpb24gPSAtMTtcbiAgc3dpdGNoVHlwZSA9ICdzd2l0Y2gnO1xuICBpc0Rlc3RpbmF0aW9uVmFsaWQ6IGJvb2xlYW47XG5cbiAgcmVzdWx0c0xhYmVsczogUmVzdWx0c0xhYmVsc01vZGVsID0ge1xuICAgIGFsbEFpcnBvcnRzOiAnJyxcbiAgICBjbG9zZXN0QWlycG9ydHM6ICcnLFxuICAgIGxhdGVzdFNlYXJjaGVzOiAnJyxcbiAgICBnZW9sb2NhdGlvbjogJycsXG4gICAgZ2VvbG9jYXRpb25EZW5pZWQ6ICcnXG4gIH07XG5cbiAgb3JpZ2luT3BlbjogYm9vbGVhbjtcbiAgZGVzdGluYXRpb25PcGVuOiBib29sZWFuO1xuXG4gIEBWaWV3Q2hpbGQoJ3N3aXRjaEJ1dHRvbicpIHN3aXRjaEJ1dHRvbjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnYWlycG9ydFNlbGVjdERyb3Bkb3duT3JpZ2luJykgYWlycG9ydFNlbGVjdERyb3Bkb3duT3JpZ2luOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdhaXJwb3J0U2VsZWN0RHJvcGRvd25EZXN0aW5hdGlvbicpIGFpcnBvcnRTZWxlY3REcm9wZG93bkRlc3RpbmF0aW9uOiBBaXJwb3J0U2VsZWN0RHJvcGRvd25Db21wb25lbnQ7XG5cbiAgb3JpZ2luOiBBaXJwb3J0TW9kZWw7XG4gIGRlc3RpbmF0aW9uOiBBaXJwb3J0TW9kZWw7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAcmVxdWlyZWRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFsbCBhaXJwb3J0cyB0aGF0IHdpbGwgYmUgcG9wdWxhdGVkIGludG8gdGhlIGRyb3Bkb3duIGxpc3RzLlxuICAgKi9cbiAgQElucHV0KCkgYWlycG9ydHM6IEFycmF5PEFpcnBvcnRNb2RlbD47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSByZWNvcmQgY29udGFpbmluZyBrZXlzIHdpdGggYWxsIGFpcnBvcnQgY29kZXMgd2l0aCBjb3JyZXNwb25kaW5nIGFycmF5IG9mIGFpcnBvcnQgY29kZXMgY29ubmVjdGVkIHRvIHRoZSBrZXkuXG4gICAqL1xuICBASW5wdXQoKSBhaXJwb3J0UmVsYXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBBcnJheTxzdHJpbmc+PjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBhcnJheSBvZiBvcmlnaW4gYWlycG9ydHMgdGhhdCB0aGUgdXNlciBoYXMgYWxscmVhZHkgc2VhcmNoIGZvci5cbiAgICovXG4gIEBJbnB1dCgpIGxhdGVzdFNlYXJjaGVzT3JpZ2luOiBBcnJheTxBaXJwb3J0TW9kZWw+O1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFuIGFycmF5IG9mIGRlc3RpbmF0aW9uIGFpcnBvcnRzIHRoYXQgdGhlIHVzZXIgaGFzIGFsbHJlYWR5IHNlYXJjaCBmb3IuXG4gICAqL1xuICBASW5wdXQoKSBsYXRlc3RTZWFyY2hlc0Rlc3RpbmF0aW9uOiBBcnJheTxBaXJwb3J0TW9kZWw+O1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFuIGFycmF5IG9mIGFpcnBvcnRzIHRoYXQgYXJlIGNsb3NlIHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgQElucHV0KCkgY2xvc2VzdEFpcnBvcnRzOiBBcnJheTxBaXJwb3J0TW9kZWw+O1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbGlzdCBvZiBhaXJwb3J0cyB0aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQgaW4gdGhlIG9yaWdpbiBkcm9wZG93bi5cbiAgICogSWYgbm90IGluY2x1ZGVkLCBhbGwgYWlycG9ydHMgd2lsbCBiZSBkaXNwbGF5ZWQuXG4gICAqL1xuICBASW5wdXQoKSBhbGxvd2VkT3JpZ2luQWlwb3J0czogQXJyYXk8QWlycG9ydE1vZGVsPjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBhcnJheSBvZiBhaXJwb3J0cyB0aGF0IGFyZSByZXN0cmljdGVkIGZvciBkZXN0aW5hdGlvbiBhaXJwb3J0cy4gSXQgd2lsbCBkZWZhdWx0IHRvIGFpcnBvcnRzIGlmIG5vdCBzZXQuXG4gICAqL1xuICBASW5wdXQoKSBhbGxvd2VkRGVzdGluYXRpb25BaXJwb3J0czogQXJyYXk8QWlycG9ydE1vZGVsPjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGJvb2xlYW4gaW5kaWNhdGluZyBpZiBhaXJwb3J0cyB0aGF0IHRoZSB1c2VyIGFsbHJlYWR5IGhhcyBzZWFyaCBmb3Igc2hvdWxkIGJlIGRpc3BsYXllZC5cbiAgICovXG4gIEBJbnB1dCgpIGRpc3BsYXlMYXRlc3RTZWFyY2hlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBib29sZWFuIGluZGljYXRpbmcgaWYgYWlycG9ydHMgdGhhdCBhcmUgY2xvc2UgdG8gdGhlIHVzZXIgc2hvdWxkIGJlIGRpc3BsYXllZC5cbiAgICovXG4gIEBJbnB1dCgpIGRpc3BsYXlDbG9zZXN0QWlycG9ydHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIERpc3BsYXkgYm90aCBvcmdpbiBhbmQgZGVzdGluYXRpb24gYWlycG9ydCBzZWxlY3Rvci5cbiAgICovXG4gIEBJbnB1dCgpIGNvbWJvPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEaXNwbGF5IHN3aXRjaCBVSSB0byBpbnRlcmNoYW5nZSBvcmlnaW4gYW5kIGRlc3RpbmF0aW9uIGFpcnBvcnQuXG4gICAqL1xuICBASW5wdXQoKSB1c2VTd2l0Y2g/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbGFiZWwgdGhhdCB3aWxsIGFwcGVhciBvbiB0b3Agb2YgYWxsIGFpcnBvcnRzIGluIHRoZSBkcm9wIGRvd24gbGlzdC5cbiAgICovXG4gIEBJbnB1dCgpIGFsbEFpcnBvcnRzTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxhYmVsIHRoYXQgd2lsbCBhcHBlYXIgb24gdG9wIG9mIHRoZSBsYXRlc3Qgc2VhcmNoZXMgaW4gdGhlIGRyb3AgZG93biBsaXN0LlxuICAgKi9cbiAgQElucHV0KCkgbGF0ZXN0U2VhcmNoZXNMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbGFiZWwgdGhhdCB3aWxsIGFwcGVhciBvbiB0b3Agb2YgdGhlIGNsb3Nlc3QgYWlycG9ydHMgaW4gdGhlIGRyb3AgZG93biBsaXN0LlxuICAgKi9cbiAgQElucHV0KCkgY2xvc2VzdEFpcnBvcnRzTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxhYmVsIHRoYXQgd2lsbCBhcHBlYXIgaW4gbXkgbG9jYXRpb24gaW4gdGhlIGRyb3AgZG93biBsaXN0LlxuICAgKi9cbiAgQElucHV0KCkgZ2VvbG9jYXRpb25MYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbGFiZWwgdGhhdCB3aWxsIGFwcGVhciBpbiBteSBsb2NhdGlvbiwgaW4gdGhlIGRyb3AgZG93biBsaXN0IGlmIHVzZXIgaGFzIGRlbmllZCBnZW9sb2NhdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpIGdlb2xvY2F0aW9uQmxvY2tlZExhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBsYWJlbCB0aGF0IHdpbGwgYXBwZWFyIGluIHRoZSBkZXN0aW5hdGlvbiBpbnB1dCBmaWVsZCBpZiB0aGVcbiAgICogdXNlciB0cmllcyB0byBzZWxlY3QgYSBkZXN0aW5hdGlvbiBhaXJwb3J0IHdpdGhvdXQgc2VsZWN0aW5nIGFuIG9yaWdpbiBhaXJwb3J0LlxuICAgKi9cbiAgQElucHV0KCkgc2VsZWN0T3JpZ2luRmlyc3RMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgdGV4dCB0aGF0IGFwcGVhcnMgaW4gdGhlIGRlc3RpbmF0aW9ucyBkcm9wZG93biBsaXN0IHdoZW4gb3JpZ2luIGFpcnBvcnQgaXMgbm90IHNldC5cbiAgICovXG4gIEBJbnB1dCgpIGludmFsaWREZXN0aW5hdGlvblRleHQ6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEByZXF1aXJlZFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBsYWJlbCB0aGF0IHdpbGwgYXBwZWFyIG9uIHRvcCBvZiB0aGUgb3JpZ2luIGFpcnBvcnQgaW5wdXQgZmllbGQuXG4gICAqL1xuICBASW5wdXQoKSBsYWJlbE9yaWdpbiA9ICcnO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgcGxhY2Vob2xkZXIgdGhhdCB3aWxsIGFwcGVhciBvbiB0aGUgb3JpZ2luIGFpcnBvcnQgaW5wdXQgZmllbGQuXG4gICAqL1xuICBASW5wdXQoKSBwbGFjZWhvbGRlck9yaWdpbiA9ICcnO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbGFiZWwgdGhhdCB3aWxsIGFwcGVhciBvbiB0b3Agb2YgdGhlIGRlc3RpbmF0aW9uIGFpcnBvcnQgaW5wdXQgZmllbGQuXG4gICAqL1xuICBASW5wdXQoKSBsYWJlbERlc3RpbmF0aW9uID0gJyc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBwbGFjZWhvbGRlciB0aGF0IHdpbGwgYXBwZWFyIG9uIHRoZSBkZXN0aW5hdGlvbiBhaXJwb3J0IGlucHV0IGZpZWxkLlxuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXJEZXN0aW5hdGlvbiA9ICcnO1xuXG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBtb2RpZmllciB0aGF0IHdpbGwgYWxsb3cgYWx3YXlzIGtlZXBpbmcgdGhlIHNlbGVjdGVkIGFpcnBvcnQuXG4gICAqIFRoZSBsYXN0IHNlbGVjdGVkIGFpcnBvcnQgd2lsbCBiZSBzaG93biBvbmNlIHVzZXIgY2xlYXJzIHRoZSBzZWxlY3Rpb24gYW5kIGJsdXIuXG4gICAqL1xuICBASW5wdXQoKSBrZWVwU2VsZWN0aW9uOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgYSBmb3JtQ29udHJvbE5hbWUgZGlyZWN0aXZlIHRvIHRoZSBpbnB1dC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgcmVxdWllcnMgdGhhdCB0aGUgbmFzRm9ybUdyb3VwIGlucHV0IGlzIGZpbGxlZC5cbiAgICovXG4gIEBJbnB1dCgpIG5hc0Zvcm1Db250cm9sTmFtZU9yaWdpbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgYSBmb3JtQ29udHJvbE5hbWUgZGlyZWN0aXZlIHRvIHRoZSBpbnB1dC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgcmVxdWllcnMgdGhhdCB0aGUgbmFzRm9ybUdyb3VwIGlucHV0IGlzIGZpbGxlZC5cbiAgICovXG4gIEBJbnB1dCgpIG5hc0Zvcm1Db250cm9sTmFtZURlc3RpbmF0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkcyB0aGUgcGFyZW50J3MgZm9ybSBncm91cC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgaXMgcmVxdWllcmVkIHRvIGJlIGZpbGxlZCBpZiBuYXNGb3JtQ29udHJvbE5hbWUgYWRkZWQuXG4gICAqL1xuICBASW5wdXQoKSBuYXNGb3JtR3JvdXA6IEZvcm1Hcm91cDtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgYWlycG9ydCBjb2RlIG9mIHRoZSBvcmlnaW4gYWlycG9ydC4gSXQgd2lsbCBzZXQgdGhlIHNlbGVjdGVkIG9yaWdpbiBhaXJwb3J0IGJhc2VkIG9uIHRoaXMgdmFsdWUuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgb3JpZ2luQWlycG9ydENvZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMub3JpZ2luQWlycG9ydENvZGVWYWx1ZTtcbiAgfVxuICBzZXQgb3JpZ2luQWlycG9ydENvZGUoY29kZTogc3RyaW5nKSB7XG4gICAgaWYgKGNvZGUpIHtcbiAgICAgIGlmIChjb2RlICE9PSB0aGlzLm9yaWdpbkFpcnBvcnRDb2RlVmFsdWUpIHtcbiAgICAgICAgdGhpcy5vcmlnaW5BaXJwb3J0Q29kZVZhbHVlID0gY29kZTtcbiAgICAgICAgdGhpcy5zZXRPcmlnaW4oKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcmlnaW5BaXJwb3J0Q29kZVZhbHVlID0gJyc7XG4gICAgICB0aGlzLmNsZWFyT3JpZ2luKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhlIGFpcnBvcnQgY29kZSBvZiB0aGUgZGVzdGluYXRpb24gYWlycG9ydC4gSXQgd2lsbCBzZXQgdGhlIHNlbGVjdGVkIGRlc3RpbmF0aW9uIGFpcnBvcnQgYmFzZWQgb24gdGhpcyB2YWx1ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBkZXN0aW5hdGlvbkFpcnBvcnRDb2RlKCkge1xuICAgIHJldHVybiB0aGlzLmRlc3RpbmF0aW9uQWlycG9ydENvZGVWYWx1ZTtcbiAgfVxuICBzZXQgZGVzdGluYXRpb25BaXJwb3J0Q29kZShjb2RlOiBzdHJpbmcpIHtcbiAgICBpZiAoY29kZSkge1xuICAgICAgaWYgKGNvZGUgIT09IHRoaXMuZGVzdGluYXRpb25BaXJwb3J0Q29kZVZhbHVlKSB7XG4gICAgICAgIHRoaXMuZGVzdGluYXRpb25BaXJwb3J0Q29kZVZhbHVlID0gY29kZTtcbiAgICAgICAgdGhpcy5zZXREZXN0aW5hdGlvbigpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlc3RpbmF0aW9uQWlycG9ydENvZGVWYWx1ZSA9ICcnO1xuICAgICAgdGhpcy5jbGVhckRlc3RpbmF0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkcyAnYXJpYS1sYWJlbCcgb24gdGhlIGNsZWFyIGJ1dHRvbiBpbnNpZGUgdGhlIGFpcnBvcnQgc2VsZWN0IGlucHV0cy5cbiAgICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbENsZWFyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkcyAnYXJpYS1sYWJlbCcgdG8gdGhlIGJhY2tkcm9wcy5cbiAgICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbEJhY2tkcm9wOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBPdXRwdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFuIGV2ZW50IHRoYXQgaXMgZmlyZWQgZXZlcnkgdGltZSB0aGUgc2VsZWN0ZWQgb3JpZ2luIGFpcnBvcnQgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKSBvcmlnaW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEFpcnBvcnRNb2RlbD4oKTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IE91dHB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gZXZlbnQgdGhhdCBpcyBmaXJlZCBldmVyeSB0aW1lIHRoZSBvcmlnaW4gZHJvcGRvd24gc2VsZWN0b3Igb3BlbnMgb3IgY2xvc2VzLlxuICAgKi9cbiAgQE91dHB1dCgpIG9yaWdpbk9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgLyoqXG4gICogQHByb3BlcnR5IE91dHB1dFxuICAqIEBkZXNjcmlwdGlvblxuICAqIEFuIGV2ZW50IHRoYXQgaXMgZmlyZWQgZXZlcnkgdGltZSB0aGUgb3JpZ2luIGRyb3Bkb3duIHNlbGVjdG9yIG9wZW5zIG9yIGNsb3Nlcy5cbiAgKi9cbiAgQE91dHB1dCgpIGRlc3RpbmF0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxBaXJwb3J0TW9kZWw+KCk7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBPdXRwdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFuIGV2ZW50IHRoYXQgaXMgZmlyZWQgZXZlcnkgdGltZSB0aGUgZGVzdGluYXRpb24gZHJvcGRvd24gc2VsZWN0b3Igb3BlbnMgb3IgY2xvc2VzLlxuICAgKi9cbiAgQE91dHB1dCgpIGRlc3RpbmF0aW9uT3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IE91dHB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gZXZlbnQgdGhhdCBpcyBmaXJlZCB3aGVuIHRoZSBkZXN0aW5hdGlvbiBkcm9wZG93biBjbG9zZXMuXG4gICAqL1xuICBAT3V0cHV0KCkgZm9jdXNPbk5leHQgPSBuZXcgRXZlbnRFbWl0dGVyPEtleWJvYXJkRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBPdXRwdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFuIGV2ZW50IHRoYXQgaXMgZmlyZWQgd2hlbiBnZW9sb2NhdGlvbiBwb3NpdGlvbiBoYXMgY2hhbmdlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBwb3NpdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8R2VvbG9jYXRpb25Qb3NpdGlvbj4oKTtcblxuICBwcml2YXRlIG9yaWdpbkFpcnBvcnRDb2RlVmFsdWU6IHN0cmluZztcbiAgcHJpdmF0ZSBkZXN0aW5hdGlvbkFpcnBvcnRDb2RlVmFsdWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignbmFzLWFpcnBvcnQtc2VsZWN0Jyk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYWlycG9ydHMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBpbnB1dDogW2FpcnBvcnRzXScpO1xuICAgIH1cblxuICAgIHRoaXMucmVzdWx0c0xhYmVscyA9IHtcbiAgICAgIGFsbEFpcnBvcnRzOiB0aGlzLmFsbEFpcnBvcnRzTGFiZWwgfHwgJycsXG4gICAgICBjbG9zZXN0QWlycG9ydHM6IHRoaXMuY2xvc2VzdEFpcnBvcnRzTGFiZWwgfHwgJycsXG4gICAgICBsYXRlc3RTZWFyY2hlczogdGhpcy5sYXRlc3RTZWFyY2hlc0xhYmVsIHx8ICcnLFxuICAgICAgZ2VvbG9jYXRpb246IHRoaXMuZ2VvbG9jYXRpb25MYWJlbCB8fCAnJyxcbiAgICAgIGdlb2xvY2F0aW9uRGVuaWVkOiB0aGlzLmdlb2xvY2F0aW9uQmxvY2tlZExhYmVsIHx8ICcnXG4gICAgfTtcblxuICAgIHRoaXMudGV4dFNlbGVjdE9yaWdpbkZpcnN0ID0gdGhpcy5zZWxlY3RPcmlnaW5GaXJzdExhYmVsO1xuICAgIHRoaXMuYWlycG9ydHNPcmlnaW4gPSB0aGlzLmFsbG93ZWRPcmlnaW5BaXBvcnRzICYmIHRoaXMuYWxsb3dlZE9yaWdpbkFpcG9ydHMubGVuZ3RoID4gMCA/IHRoaXMuYWxsb3dlZE9yaWdpbkFpcG9ydHMgOiB0aGlzLmFpcnBvcnRzO1xuXG4gICAgdGhpcy5haXJwb3J0c0Rlc3RpbmF0aW9uID0gdGhpcy5nZXRBaXJwb3J0c0Rlc3RpbmF0aW9ucygpO1xuXG4gICAgaWYgKHRoaXMubmFzRm9ybUdyb3VwKSB7XG4gICAgICBpZiAodGhpcy5uYXNGb3JtQ29udHJvbE5hbWVPcmlnaW4pIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luQ29udHJvbCA9IHRoaXMubmFzRm9ybUdyb3VwLmdldCh0aGlzLm5hc0Zvcm1Db250cm9sTmFtZU9yaWdpbik7XG5cbiAgICAgICAgaWYgKG9yaWdpbkNvbnRyb2wpIHtcbiAgICAgICAgICBjb25zdCBvcmlnaW4gPSB0aGlzLmFpcnBvcnRzT3JpZ2luLmZpbmQoeCA9PiB4Lm5hbWUgPT09IG9yaWdpbkNvbnRyb2wudmFsdWUpO1xuXG4gICAgICAgICAgaWYgKG9yaWdpbikge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5BaXJwb3J0Q29kZSA9IG9yaWdpbi5jb2RlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5uYXNGb3JtQ29udHJvbE5hbWVEZXN0aW5hdGlvbikge1xuICAgICAgICBjb25zdCBkZXN0aW5hdGlvbkNvbnRyb2wgPSB0aGlzLm5hc0Zvcm1Hcm91cC5nZXQodGhpcy5uYXNGb3JtQ29udHJvbE5hbWVEZXN0aW5hdGlvbik7XG5cbiAgICAgICAgaWYgKGRlc3RpbmF0aW9uQ29udHJvbCkge1xuICAgICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uID0gdGhpcy5haXJwb3J0c0Rlc3RpbmF0aW9uLmZpbmQoeCA9PiB4Lm5hbWUgPT09IGRlc3RpbmF0aW9uQ29udHJvbC52YWx1ZSk7XG5cbiAgICAgICAgICBpZiAoZGVzdGluYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdGluYXRpb25BaXJwb3J0Q29kZSA9IGRlc3RpbmF0aW9uLmNvZGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZGVzdGluYXRpb24pIHtcbiAgICAgIHRoaXMuY2xlYXJEZXN0aW5hdGlvbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZGVzdGluYXRpb25DaGFuZ2UuZW1pdCh0aGlzLmRlc3RpbmF0aW9uKTtcbiAgICB0aGlzLm9yaWdpbkNoYW5nZS5lbWl0KHRoaXMub3JpZ2luKTtcblxuXG4gICAgaWYgKHRoaXMub3JpZ2luQWlycG9ydENvZGUpIHtcbiAgICAgIHRoaXMuc2V0T3JpZ2luKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGVzdGluYXRpb25BaXJwb3J0Q29kZSkge1xuICAgICAgdGhpcy5zZXREZXN0aW5hdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIGdldEFpcnBvcnRTZWxlY3RDb21ib0NsYXNzKGVsZW1lbnQ/OiBzdHJpbmcsIG1vZGlmaWVyc0lucHV0PzogYW55KTogQ2xhc3NNb2RlbCB7XG4gICAgbGV0IG1vZGlmaWVycyA9IG1vZGlmaWVyc0lucHV0O1xuXG4gICAgaWYgKHR5cGVvZiBtb2RpZmllcnNJbnB1dCA9PT0gJ3N0cmluZycgfHwgbW9kaWZpZXJzSW5wdXQgaW5zdGFuY2VvZiBTdHJpbmcpIHtcbiAgICAgIG1vZGlmaWVycyA9IFttb2RpZmllcnNJbnB1dF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGJsb2NrOiAnbmFzLWFpcnBvcnQtc2VsZWN0LWNvbWJvJyxcbiAgICAgIGVsZW1lbnQ6IGVsZW1lbnQsXG4gICAgICBtb2RpZmllcnM6IG1vZGlmaWVyc1xuICAgIH07XG4gIH1cblxuICBvbk9yaWdpbk9wZW4ob3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5vcmlnaW5PcGVuID0gb3BlbjtcbiAgICB9KTtcblxuICAgIHRoaXMuZGVzdGluYXRpb25PcGVuID0gZmFsc2U7XG4gICAgdGhpcy5vcmlnaW5PcGVuQ2hhbmdlLmVtaXQob3Blbik7XG4gIH1cblxuICBvbkRlc3RpbmF0aW9uT3BlbihvcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0aW5hdGlvbk9wZW4gPSBvcGVuO1xuICAgIHRoaXMub3JpZ2luT3BlbiA9IGZhbHNlO1xuXG4gICAgdGhpcy5kZXN0aW5hdGlvbk9wZW5DaGFuZ2UuZW1pdChvcGVuKTtcbiAgfVxuXG4gIHNldFNlbGVjdGVkT3JpZ2luKGFpcnBvcnQ6IEFpcnBvcnRNb2RlbCk6IHZvaWQge1xuICAgIGlmICghYWlycG9ydCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMub3JpZ2luID0gYWlycG9ydDtcbiAgICB0aGlzLm9yaWdpbkFpcnBvcnRDb2RlVmFsdWUgPSBhaXJwb3J0LmNvZGU7XG4gICAgdGhpcy5pc0Rlc3RpbmF0aW9uVmFsaWQgPSBhaXJwb3J0LmNvZGUgPyB0cnVlIDogZmFsc2U7XG5cbiAgICBpZiAodGhpcy5haXJwb3J0UmVsYXRpb25zICYmIHRoaXMuaGFzVmFsaWREZXN0aW5hdGlvbnMoYWlycG9ydCkpIHtcbiAgICAgIHRoaXMudXBkYXRlVmFsaWRBaXJwb3J0RGVzdGluYXRpb25zKGFpcnBvcnQpO1xuICAgICAgdGhpcy5zZXRDdXJyZW50TGF0ZXN0U2VhcmNoZXNEZXN0aW5hdGlvbigpO1xuICAgIH1cblxuICAgIHRoaXMub3JpZ2luQ2hhbmdlLmVtaXQoYWlycG9ydCk7XG4gIH1cblxuICBzZXRTZWxlY3RlZERlc3RpbmF0aW9uKGFpcnBvcnQ6IEFpcnBvcnRNb2RlbCk6IHZvaWQge1xuICAgIGlmICghYWlycG9ydCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZGVzdGluYXRpb24gPSBhaXJwb3J0O1xuICAgIHRoaXMuZGVzdGluYXRpb25BaXJwb3J0Q29kZVZhbHVlID0gYWlycG9ydC5jb2RlO1xuICAgIHRoaXMuZGVzdGluYXRpb25DaGFuZ2UuZW1pdChhaXJwb3J0KTtcbiAgfVxuXG4gIHNldEZvY3VzT25OZXh0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c09uTmV4dC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uT3JpZ2luRm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWlycG9ydFNlbGVjdERyb3Bkb3duT3JpZ2luKSB7XG4gICAgICB0aGlzLm9uT3JpZ2luT3Blbih0cnVlKTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VTd2l0Y2hJY29uKCk6IHZvaWQge1xuICAgIHRoaXMuc3dpdGNoVHlwZSA9IHRoaXMuc3dpdGNoVHlwZSA9PT0gJ3N3aXRjaCcgPyAnc3dpdGNoLS1zZWNvbmRhcnknIDogJ3N3aXRjaCc7XG4gIH1cblxuICBzd2FwQWlycG9ydHMoKTogdm9pZCB7XG4gICAgY29uc3QgZGVzdGluYXRpb24gPSB7IC4uLnRoaXMuZGVzdGluYXRpb24gfTtcbiAgICBjb25zdCBvcmlnaW4gPSB7IC4uLnRoaXMub3JpZ2luIH07XG4gICAgdGhpcy5kZXN0aW5hdGlvbiA9IG9yaWdpbjtcbiAgICB0aGlzLm9yaWdpbiA9IGRlc3RpbmF0aW9uO1xuXG4gICAgdGhpcy5zZXRTZWxlY3RlZERlc3RpbmF0aW9uKHRoaXMuZGVzdGluYXRpb24pO1xuICAgIHRoaXMuc2V0U2VsZWN0ZWRPcmlnaW4odGhpcy5vcmlnaW4pO1xuICB9XG5cbiAgc3dhcEtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICB0aGlzLnN3YXBBaXJwb3J0cygpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBzZXREZXN0aW5hdGlvbk9wZW4oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5leGlzdHModGhpcy5jb21ibykpIHtcbiAgICAgIHRoaXMuZGVzdGluYXRpb25PcGVuID0gdHJ1ZTtcbiAgICAgIHRoaXMub3JpZ2luT3BlbiA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldEZvY3VzT25OZXh0KGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBnZXRDbG9zZXN0QWlycG9ydHMocG9zaXRpb246IEdlb2xvY2F0aW9uUG9zaXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLnBvc2l0aW9uQ2hhbmdlLmVtaXQocG9zaXRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBaXJwb3J0c0Rlc3RpbmF0aW9ucygpOiBBcnJheTxBaXJwb3J0TW9kZWw+IHtcbiAgICBjb25zdCBhbGxvd2VkRGVzdGluYXRpb25BaXJwb3J0cyA9IHRoaXMuYWxsb3dlZERlc3RpbmF0aW9uQWlycG9ydHM7XG5cbiAgICByZXR1cm4gYWxsb3dlZERlc3RpbmF0aW9uQWlycG9ydHMgJiYgYWxsb3dlZERlc3RpbmF0aW9uQWlycG9ydHMubGVuZ3RoID4gMFxuICAgICAgPyBhbGxvd2VkRGVzdGluYXRpb25BaXJwb3J0c1xuICAgICAgOiB0aGlzLmFpcnBvcnRzO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRPcmlnaW4oKTogdm9pZCB7XG4gICAgY29uc3QgYWlycG9ydCA9IHRoaXMuYWlycG9ydHMuZmluZCh4ID0+IHguY29kZSA9PT0gdGhpcy5vcmlnaW5BaXJwb3J0Q29kZSk7XG5cbiAgICBpZiAoYWlycG9ydCkge1xuICAgICAgdGhpcy5zZXRTZWxlY3RlZE9yaWdpbihhaXJwb3J0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldERlc3RpbmF0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IGFpcnBvcnQgPSB0aGlzLmFpcnBvcnRzLmZpbmQoeCA9PiB4LmNvZGUgPT09IHRoaXMuZGVzdGluYXRpb25BaXJwb3J0Q29kZSk7XG5cbiAgICBpZiAoYWlycG9ydCkge1xuICAgICAgdGhpcy5zZXRTZWxlY3RlZERlc3RpbmF0aW9uKGFpcnBvcnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVmFsaWRBaXJwb3J0RGVzdGluYXRpb25zKGFpcnBvcnQ6IEFpcnBvcnRNb2RlbCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5haXJwb3J0UmVsYXRpb25zKSB7XG4gICAgICB0aGlzLmFpcnBvcnRzRGVzdGluYXRpb24gPSB0aGlzLmFpcnBvcnRzT3JpZ2luO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB2YWxpZERlc3RpbmF0aW9ucyA9IHRoaXMuZ2V0QWlycG9ydFJlbGF0aW9ucyhhaXJwb3J0KTtcblxuICAgICAgaWYgKCF2YWxpZERlc3RpbmF0aW9ucykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZERlc3RpbmF0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5jbGVhckRlc3RpbmF0aW9ucygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGlzRGVzdGluYXRpb25WYWxpZDogYm9vbGVhbjtcbiAgICAgICAgaWYgKHRoaXMuZGVzdGluYXRpb24gJiYgdGhpcy5kZXN0aW5hdGlvbi5jb2RlKSB7XG4gICAgICAgICAgaXNEZXN0aW5hdGlvblZhbGlkID0gdmFsaWREZXN0aW5hdGlvbnMuc29tZSh4ID0+IHggJiYgeC50b0xvd2VyQ2FzZSgpID09PSB0aGlzLmRlc3RpbmF0aW9uLmNvZGUudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0Rlc3RpbmF0aW9uVmFsaWQpIHtcbiAgICAgICAgICB0aGlzLmNsZWFyRGVzdGluYXRpb24oKTtcbiAgICAgICAgICB0aGlzLmRlc3RpbmF0aW9uQ2hhbmdlLmVtaXQobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5haXJwb3J0cykge1xuICAgICAgICAgIHRoaXMuYWlycG9ydHNEZXN0aW5hdGlvbiA9IHRoaXMuYWlycG9ydHNcbiAgICAgICAgICAgIC5maWx0ZXIoYWlycG9ydEl0ZW0gPT4gYWlycG9ydEl0ZW1cbiAgICAgICAgICAgICAgJiYgYWlycG9ydEl0ZW0uY29kZVxuICAgICAgICAgICAgICAmJiB2YWxpZERlc3RpbmF0aW9ucy5zb21lKHggPT4geCAmJiBhaXJwb3J0SXRlbS5jb2RlLnRvTG93ZXJDYXNlKCkgPT09IHgudG9Mb3dlckNhc2UoKSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYXNWYWxpZERlc3RpbmF0aW9ucyhvcmlnaW46IEFpcnBvcnRNb2RlbCk6IGJvb2xlYW4ge1xuICAgIGlmICghb3JpZ2luKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVsYXRpb25zID0gdGhpcy5nZXRBaXJwb3J0UmVsYXRpb25zKG9yaWdpbik7XG5cbiAgICByZXR1cm4gcmVsYXRpb25zICYmIHJlbGF0aW9ucy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBaXJwb3J0UmVsYXRpb25zKGFpcnBvcnQ6IEFpcnBvcnRNb2RlbCk6IEFycmF5PHN0cmluZz4ge1xuICAgIGlmICghdGhpcy5haXJwb3J0cykge1xuICAgICAgcmV0dXJuIG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYWlycG9ydFJlbGF0aW9uc1thaXJwb3J0LmNvZGUudG9Mb3dlckNhc2UoKV0gfHwgdGhpcy5haXJwb3J0UmVsYXRpb25zW2FpcnBvcnQuY29kZS50b1VwcGVyQ2FzZSgpXTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJPcmlnaW4oKSB7XG4gICAgdGhpcy5zZXRTZWxlY3RlZE9yaWdpbih7XG4gICAgICBjb2RlOiAnJyxcbiAgICAgIGNvdW50cnlOYW1lOiAnJyxcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgYWlycG9ydE5hbWU6ICcnLFxuICAgICAgZGlzcGxheU5hbWU6ICcnLFxuICAgICAgbm9ybWFsaXplZEFpcnBvcnROYW1lOiAnJ1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckRlc3RpbmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0U2VsZWN0ZWREZXN0aW5hdGlvbih7XG4gICAgICBjb2RlOiAnJyxcbiAgICAgIGNvdW50cnlOYW1lOiAnJyxcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgYWlycG9ydE5hbWU6ICcnLFxuICAgICAgZGlzcGxheU5hbWU6ICcnLFxuICAgICAgbm9ybWFsaXplZEFpcnBvcnROYW1lOiAnJ1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckRlc3RpbmF0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLmFpcnBvcnRzRGVzdGluYXRpb24gPSBuZXcgQXJyYXk8QWlycG9ydE1vZGVsPigpO1xuXG4gICAgY29uc3QgbW9kZWwgPSB7XG4gICAgICBuYW1lOiB0aGlzLnRleHRTZWxlY3RPcmlnaW5GaXJzdCxcbiAgICAgIGNvdW50cnlOYW1lOiAnJyxcbiAgICAgIGNvZGU6ICcnLFxuICAgICAgYWlycG9ydE5hbWU6ICcnLFxuICAgICAgZGlzcGxheU5hbWU6ICcnLFxuICAgICAgbm9ybWFsaXplZEFpcnBvcnROYW1lOiAnJ1xuICAgIH07XG5cbiAgICB0aGlzLmFpcnBvcnRzRGVzdGluYXRpb24ucHVzaChtb2RlbCk7XG4gICAgdGhpcy5jbGVhckRlc3RpbmF0aW9uKCk7XG4gICAgdGhpcy5kZXN0aW5hdGlvbkNoYW5nZS5lbWl0KG1vZGVsKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q3VycmVudExhdGVzdFNlYXJjaGVzRGVzdGluYXRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWlycG9ydHNEZXN0aW5hdGlvbikge1xuICAgICAgdGhpcy5jdXJyZW50TGF0ZXN0U2VhcmNoZXNEZXN0aW5hdGlvbiA9IHRoaXMuYWlycG9ydHNEZXN0aW5hdGlvbi5maWx0ZXIoYWlycG9ydCA9PiB7XG4gICAgICAgIGlmICh0aGlzLmxhdGVzdFNlYXJjaGVzRGVzdGluYXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5sYXRlc3RTZWFyY2hlc0Rlc3RpbmF0aW9uLnNvbWUoeCA9PiB4LmNvZGUgJiYgeC5jb2RlLnRvTG93ZXJDYXNlKCkgPT09IGFpcnBvcnQuY29kZS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgKm5nSWY9XCJleGlzdHMoY29tYm8pOyBlbHNlIGFpcnBvcnRTZWxlY3RUZW1wbGF0ZVwiXG4gIFtuYXNDbGFzc109XCJnZXRBaXJwb3J0U2VsZWN0Q29tYm9DbGFzcygpXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhaXJwb3J0U2VsZWN0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNhaXJwb3J0U2VsZWN0VGVtcGxhdGU+XG4gIDxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCcnLCBleGlzdHModXNlU3dpdGNoKSAmJiAncGFkZGluZy1vcmlnaW4nKVwiXG4gICAgKm5nSWY9XCJhaXJwb3J0c09yaWdpblwiPlxuICAgIDxuYXMtYWlycG9ydC1zZWxlY3QtZHJvcGRvd24gI2FpcnBvcnRTZWxlY3REcm9wZG93bk9yaWdpblxuICAgICAgZGlzcGxheUxhdGVzdFNlYXJjaGVzXG4gICAgICBbZW5hYmxlR2VvbG9jYXRpb25dPVwiZGlzcGxheUNsb3Nlc3RBaXJwb3J0c1wiXG4gICAgICBbZGlzcGxheUNsb3Nlc3RBaXJwb3J0c109XCJkaXNwbGF5Q2xvc2VzdEFpcnBvcnRzXCJcbiAgICAgIFthaXJwb3J0U2VsZWN0TGFiZWxdPVwibGFiZWxPcmlnaW5cIlxuICAgICAgW2xhdGVzdFNlYXJjaGVzXT1cImxhdGVzdFNlYXJjaGVzT3JpZ2luXCJcbiAgICAgIFtjbG9zZXN0QWlycG9ydHNdPVwiY2xvc2VzdEFpcnBvcnRzXCJcbiAgICAgIFthaXJwb3J0XT1cIm9yaWdpblwiXG4gICAgICBbYWlycG9ydHNdPVwiYWlycG9ydHNPcmlnaW5cIlxuICAgICAgW3Jlc3VsdHNMYWJlbHNdPVwicmVzdWx0c0xhYmVsc1wiXG4gICAgICBbYWlycG9ydFNlbGVjdFBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyT3JpZ2luXCJcbiAgICAgIFtvcGVuXT1cIm9yaWdpbk9wZW5cIlxuICAgICAgW2tlZXBTZWxlY3Rpb25dPVwia2VlcFNlbGVjdGlvblwiXG4gICAgICBbYWlycG9ydFNlbGVjdEljb25Nb2RpZmllcl09XCInZmxpZ2h0LWRlcGFydHVyZSdcIlxuICAgICAgW25hc0Zvcm1Db250cm9sTmFtZV09XCJuYXNGb3JtQ29udHJvbE5hbWVPcmlnaW5cIlxuICAgICAgW25hc0Zvcm1Hcm91cF09XCJuYXNGb3JtR3JvdXBcIlxuICAgICAgW2FyaWFMYWJlbENsZWFyXT1cImFyaWFMYWJlbENsZWFyXCJcbiAgICAgIFthcmlhTGFiZWxCYWNrZHJvcF09XCJhcmlhTGFiZWxCYWNrZHJvcFwiXG4gICAgICAoc2VsZWN0ZWQpPVwic2V0U2VsZWN0ZWRPcmlnaW4oJGV2ZW50KVwiXG4gICAgICAob3BlbkNoYW5nZSk9XCJvbk9yaWdpbk9wZW4oJGV2ZW50KVwiXG4gICAgICAoZm9jdXNPbk5leHQpPVwic2V0RGVzdGluYXRpb25PcGVuKCRldmVudClcIlxuICAgICAgKHBvc2l0aW9uQ2hhbmdlKT1cImdldENsb3Nlc3RBaXJwb3J0cygkZXZlbnQpXCI+PC9uYXMtYWlycG9ydC1zZWxlY3QtZHJvcGRvd24+XG4gIDwvZGl2PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXhpc3RzKGNvbWJvKVwiPlxuICAgIDxzcGFuIFtuYXNDbGFzc109XCJnZXRBaXJwb3J0U2VsZWN0Q29tYm9DbGFzcygnc2VwYXJhdG9yJylcIj48L3NwYW4+XG4gICAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJycsIGV4aXN0cyh1c2VTd2l0Y2gpICYmICdwYWRkaW5nLWRlc3RpbmF0aW9uJylcIlxuICAgICAgKm5nSWY9XCJhaXJwb3J0c0Rlc3RpbmF0aW9uICYmIGFpcnBvcnRzRGVzdGluYXRpb24ubGVuZ3RoID4gMFwiPlxuICAgICAgPG5hcy1haXJwb3J0LXNlbGVjdC1kcm9wZG93biAjYWlycG9ydFNlbGVjdERyb3Bkb3duRGVzdGluYXRpb25cbiAgICAgICAgZGlzcGxheUxhdGVzdFNlYXJjaGVzXG4gICAgICAgIFthaXJwb3J0U2VsZWN0TGFiZWxdPVwibGFiZWxEZXN0aW5hdGlvblwiXG4gICAgICAgIFtkaXNwbGF5Q2xvc2VzdEFpcnBvcnRzXT1cImZhbHNlXCJcbiAgICAgICAgW2xhdGVzdFNlYXJjaGVzXT1cImN1cnJlbnRMYXRlc3RTZWFyY2hlc0Rlc3RpbmF0aW9uXCJcbiAgICAgICAgW2FpcnBvcnRzXT1cImFpcnBvcnRzRGVzdGluYXRpb25cIlxuICAgICAgICBbcmVzdWx0c0xhYmVsc109XCJyZXN1bHRzTGFiZWxzXCJcbiAgICAgICAgW2FpcnBvcnRdPVwiZGVzdGluYXRpb25cIlxuICAgICAgICBbYWlycG9ydFNlbGVjdFBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyRGVzdGluYXRpb25cIlxuICAgICAgICBbb3Blbl09XCJkZXN0aW5hdGlvbk9wZW5cIlxuICAgICAgICBba2VlcFNlbGVjdGlvbl09XCJrZWVwU2VsZWN0aW9uXCJcbiAgICAgICAgW2FpcnBvcnRTZWxlY3RJY29uTW9kaWZpZXJdPVwiJ2ZsaWdodC1hcnJpdmFsJ1wiXG4gICAgICAgIFtuYXNGb3JtQ29udHJvbE5hbWVdPVwibmFzRm9ybUNvbnRyb2xOYW1lRGVzdGluYXRpb25cIlxuICAgICAgICBbbmFzRm9ybUdyb3VwXT1cIm5hc0Zvcm1Hcm91cFwiXG4gICAgICAgIFthcmlhTGFiZWxDbGVhcl09XCJhcmlhTGFiZWxDbGVhclwiXG4gICAgICAgIFthcmlhTGFiZWxCYWNrZHJvcF09XCJhcmlhTGFiZWxCYWNrZHJvcFwiXG4gICAgICAgIFtpc1ZhbGlkXT1cImlzRGVzdGluYXRpb25WYWxpZFwiXG4gICAgICAgIFtpbnZhbGlkVGV4dF09XCJpbnZhbGlkRGVzdGluYXRpb25UZXh0XCJcbiAgICAgICAgKHNlbGVjdGVkKT1cInNldFNlbGVjdGVkRGVzdGluYXRpb24oJGV2ZW50KVwiXG4gICAgICAgIChvcGVuQ2hhbmdlKT1cIm9uRGVzdGluYXRpb25PcGVuKCRldmVudClcIlxuICAgICAgICAoZm9jdXNPbk5leHQpPVwic2V0Rm9jdXNPbk5leHQoJGV2ZW50KVwiXG4gICAgICAgIChmb2N1c09uUHJldmlvdXMpPVwib25PcmlnaW5Gb2N1cygpXCI+PC9uYXMtYWlycG9ydC1zZWxlY3QtZHJvcGRvd24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImV4aXN0cyh1c2VTd2l0Y2gpXCJcbiAgICAgICNzd2l0Y2hCdXR0b25cbiAgICAgIFtuYXNDbGFzc109XCJnZXRBaXJwb3J0U2VsZWN0Q29tYm9DbGFzcygnc3dpdGNoZXInKVwiXG4gICAgICAobW91c2VvdmVyKT1cImNoYW5nZVN3aXRjaEljb24oKVwiXG4gICAgICAobW91c2VsZWF2ZSk9XCJjaGFuZ2VTd2l0Y2hJY29uKClcIlxuICAgICAgKGtleWRvd24pPVwic3dhcEtleURvd24oJGV2ZW50KVwiXG4gICAgICAoY2xpY2spPVwic3dhcEFpcnBvcnRzKClcIj5cbiAgICAgIDxuYXMtaWNvbiBbdHlwZV09XCJzd2l0Y2hUeXBlXCI+PC9uYXMtaWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPiJdfQ==
@@ -22,6 +22,7 @@ export class AutocompleteComponent extends NasComponentBase {
22
22
  }
23
23
  }
24
24
  /**
25
+ * @property Input
25
26
  * @description
26
27
  * An array of items that will appear inside the dropdown list.
27
28
  */
@@ -36,6 +37,7 @@ export class AutocompleteComponent extends NasComponentBase {
36
37
  this.filter();
37
38
  }
38
39
  /**
40
+ * @property Input
39
41
  * @description
40
42
  * Can set and listen to wheather the dropdown list is or should be open or not.
41
43
  */
@@ -50,6 +52,7 @@ export class AutocompleteComponent extends NasComponentBase {
50
52
  this.openChange.emit(open);
51
53
  }
52
54
  /**
55
+ * @property Input
53
56
  * @description
54
57
  * Can set and listen to changes in the model of the text field.
55
58
  */
@@ -72,16 +75,19 @@ export class AutocompleteComponent extends NasComponentBase {
72
75
  this.document = document;
73
76
  this.filteredItems = this.items;
74
77
  /**
78
+ * @property Input
75
79
  * @description
76
80
  * A placeholder that will appear inside the text field.
77
81
  */
78
82
  this.placeholder = '';
79
83
  /**
84
+ * @property Output
80
85
  * @description
81
86
  * Is fired when the next element should be focused.
82
87
  */
83
88
  this.focusOnNext = new EventEmitter();
84
89
  /**
90
+ * @property Output
85
91
  * @description
86
92
  * Is fired when the user selects an item in the dropdown list.
87
93
  */
@@ -284,4 +290,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
284
290
  }], modelChange: [{
285
291
  type: Output
286
292
  }] } });
287
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUVWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7Ozs7QUFHOUMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBRWY7OztHQUdHO0FBTUgsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGdCQUFnQjtJQUl6RCxJQUFJLFlBQVk7UUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztJQUN6RCxDQUFDO0lBQ0QsSUFBSSxZQUFZLENBQUMsS0FBYztRQUM3QixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBdUJEOzs7T0FHRztJQUNILElBQ0ksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsS0FBK0I7UUFDdkMsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUMvQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUV4QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQ0ksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxJQUFJLENBQUMsSUFBYTtRQUNwQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNyQyxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFDSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxLQUFhO1FBQ3JCLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxLQUFLLEVBQUU7WUFDN0IsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFFeEIsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQztTQUNuRTtRQUVELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVwQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBeURELFlBQXNDLFFBQWE7UUFDakQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFEVSxhQUFRLEdBQVIsUUFBUSxDQUFLO1FBbkpuRCxrQkFBYSxHQUE2QixJQUFJLENBQUMsS0FBSyxDQUFDO1FBcUJyRDs7O1dBR0c7UUFDTSxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQXFHMUI7OztXQUdHO1FBQ08sZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTNDOzs7V0FHRztRQUNPLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFFdkQsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDekMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRTNDLFVBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNYLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFPeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3hCLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ3JEO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMzQixJQUFJLENBQUMsNEJBQTRCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztTQUN4RDtJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyw0QkFBNEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTywwQkFBMEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTywwQkFBMEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUU7WUFDbkUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ2hDLE9BQU87U0FDUjtRQUVELElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFFOUIsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUNoRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUUvRCxZQUFZLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztTQUM5QjtRQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDekMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZFLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFakYsSUFBSSxZQUFZLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssS0FBSyxFQUFFLEVBQUU7WUFDaEUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ2pDO1FBRUQsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUNsQjthQUFNO1lBQ0wsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQW9CO1FBQzVCLFFBQVEsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNqQixLQUFLLFFBQVE7Z0JBQ1gsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDWixNQUFNO1lBQ1IsS0FBSyxLQUFLLENBQUM7WUFDWCxLQUFLLE9BQU87Z0JBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUU7b0JBQ25CLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQzlCO2dCQUVELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztvQkFDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUN2QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUMvQztnQkFFRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ1osTUFBTTtZQUNSLEtBQUssV0FBVyxDQUFDO1lBQ2pCLEtBQUssTUFBTTtnQkFDVCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2pCLE1BQU07WUFDUixLQUFLLFNBQVMsQ0FBQztZQUNmLEtBQUssSUFBSTtnQkFDUCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2YsTUFBTTtZQUNSO2dCQUNFLE1BQU07U0FDVDtJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsS0FBVTtRQUN0QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFFbkMsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUF1QjtRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFL0IsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNsRTtRQUVELElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU8sU0FBUztRQUNmLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUViLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO2FBQ2hCO1lBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMvQztRQUVELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwQjthQUFNO1lBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN0QjtJQUNILENBQUM7SUFFTyxPQUFPO1FBQ2IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDO1FBRWIsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNmLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNaLE9BQU87U0FDUjtRQUVELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQy9DO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRU8sdUJBQXVCLENBQUMsS0FBYTtRQUMzQyxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ2hELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ25FLFdBQVcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRU8sVUFBVSxDQUFDLFdBQW1CO1FBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLE9BQU87U0FDUjtRQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQzNDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLHFDQUFxQyxDQUFDLENBQUM7UUFFdkYsSUFBSSxXQUFXLEVBQUU7WUFDZixPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN2QixPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsU0FBUyxHQUFHLFdBQVcsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDakY7SUFDSCxDQUFDOzhHQTVVVSxxQkFBcUIsa0JBb0paLFFBQVE7a0dBcEpqQixxQkFBcUIsK3FCQzlCbEMsc2pIQXVHaUQ7OzJGRHpFcEMscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLGtCQUFrQjs7MEJBd0pmLE1BQU07MkJBQUMsUUFBUTs0Q0F2SVIsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUNJLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFNWCxLQUFLO3NCQUFiLEtBQUs7Z0JBTUcsV0FBVztzQkFBbkIsS0FBSztnQkFNRyxJQUFJO3NCQUFaLEtBQUs7Z0JBT0YsS0FBSztzQkFEUixLQUFLO2dCQW1CRixJQUFJO3NCQURQLEtBQUs7Z0JBa0JGLEtBQUs7c0JBRFIsS0FBSztnQkF3QkcsZUFBZTtzQkFBdkIsS0FBSztnQkFRRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBUUcsWUFBWTtzQkFBcEIsS0FBSztnQkFNRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBTUcsY0FBYztzQkFBdEIsS0FBSztnQkFNSSxXQUFXO3NCQUFwQixNQUFNO2dCQU1HLGNBQWM7c0JBQXZCLE1BQU07Z0JBRUcsVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IE5vcndlZ2lhbiBBaXIgU2h1dHRsZS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlTW9kZWwgfSBmcm9tICcuL21vZGVscy9hdXRvY29tcGxldGUubW9kZWwnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOYXNDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIE5vcndlZ2lhbiBBaXJwb3J0IFNlbGVjdCBDb21wb25lbnQgfCBGb3JtIENvbnRyb2xzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25hcy1hdXRvY29tcGxldGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlQ29tcG9uZW50IGV4dGVuZHMgTmFzQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGZpbHRlcmVkSXRlbXM6IEFycmF5PEF1dG9jb21wbGV0ZU1vZGVsPiA9IHRoaXMuaXRlbXM7XG4gIGZvY3VzZWQ6IEF1dG9jb21wbGV0ZU1vZGVsO1xuXG4gIGdldCBzaG93QmFja2Ryb3AoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmV4aXN0cyh0aGlzLmRpc2FibGVCYWNrZHJvcCkgJiYgdGhpcy5vcGVuO1xuICB9XG4gIHNldCBzaG93QmFja2Ryb3AodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLmJsdXIoKTtcbiAgICB9XG4gIH1cblxuICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdyZXN1bHRzJykgcmVzdWx0czogRWxlbWVudFJlZjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbGFiZWwgdGhhdCB3aWxsIGFwcGVhciBpbnNpZGUgdGhlIHRleHQgZmllbGQuXG4gICAqL1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBwbGFjZWhvbGRlciB0aGF0IHdpbGwgYXBwZWFyIGluc2lkZSB0aGUgdGV4dCBmaWVsZC5cbiAgICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBpY29uIHRoYXQgd2lsbCBhcHBlYXIgaW5zaWRlIHRoZSB0ZXh0IGZpZWxkLlxuICAgKi9cbiAgQElucHV0KCkgaWNvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gYXJyYXkgb2YgaXRlbXMgdGhhdCB3aWxsIGFwcGVhciBpbnNpZGUgdGhlIGRyb3Bkb3duIGxpc3QuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgaXRlbXMoKTogQXJyYXk8QXV0b2NvbXBsZXRlTW9kZWw+IHtcbiAgICByZXR1cm4gdGhpcy5pdGVtc1ZhbHVlO1xuICB9XG4gIHNldCBpdGVtcyhpdGVtczogQXJyYXk8QXV0b2NvbXBsZXRlTW9kZWw+KSB7XG4gICAgaWYgKCFpdGVtcyB8fCBpdGVtcy5sZW5ndGggPD0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXRlbXNWYWx1ZSA9IGl0ZW1zO1xuXG4gICAgdGhpcy5maWx0ZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQ2FuIHNldCBhbmQgbGlzdGVuIHRvIHdoZWF0aGVyIHRoZSBkcm9wZG93biBsaXN0IGlzIG9yIHNob3VsZCBiZSBvcGVuIG9yIG5vdC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBvcGVuKCkge1xuICAgIHJldHVybiB0aGlzLm9wZW5WYWx1ZTtcbiAgfVxuICBzZXQgb3BlbihvcGVuOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMub3BlbiA9PT0gb3BlbiB8fCAhdGhpcy5pdGVtcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMub3BlblZhbHVlID0gb3BlbjtcbiAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdChvcGVuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQ2FuIHNldCBhbmQgbGlzdGVuIHRvIGNoYW5nZXMgaW4gdGhlIG1vZGVsIG9mIHRoZSB0ZXh0IGZpZWxkLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IG1vZGVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWxWYWx1ZTtcbiAgfVxuICBzZXQgbW9kZWwobW9kZWw6IHN0cmluZykge1xuICAgIGlmICh0aGlzLm1vZGVsVmFsdWUgPT09IG1vZGVsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5tb2RlbFZhbHVlID0gbW9kZWw7XG5cbiAgICBpZiAobW9kZWwgJiYgdGhpcy5maWx0ZXJlZEl0ZW1zKSB7XG4gICAgICB0aGlzLmluZGV4ID0gdGhpcy5maWx0ZXJlZEl0ZW1zLmZpbmRJbmRleCh4ID0+IHgudGl0bGUgPT09IG1vZGVsKTtcbiAgICB9XG5cbiAgICB0aGlzLnBhdGhSZWFjdGl2ZUZvcm1Db250cm9sKG1vZGVsKTtcblxuICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdChtb2RlbCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIERpc2FibGVzIHRoZSBiYWNrZHJvcCBvbiBmb2N1cy5cbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVCYWNrZHJvcDogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgYSBmb3JtQ29udHJvbE5hbWUgZGlyZWN0aXZlIHRvIHRoZSBpbnB1dC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgcmVxdWllcnMgdGhhdCB0aGUgbmFzRm9ybUdyb3VwIGlucHV0IGlzIGZpbGxlZC5cbiAgICovXG4gIEBJbnB1dCgpIG5hc0Zvcm1Db250cm9sTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkcyB0aGUgcGFyZW50J3MgZm9ybSBncm91cC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgaXMgcmVxdWllcmVkIHRvIGJlIGZpbGxlZCBpZiBuYXNGb3JtQ29udHJvbE5hbWUgYWRkZWQuXG4gICAqL1xuICBASW5wdXQoKSBuYXNGb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBZGRzIGFuIGFyaWEtbGFiZWwgYXR0cmlidXRlIHRvIHRoZSBiYWNrZHJvcCBidXR0b24uXG4gICAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWxCYWNrZHJvcDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkcyAnYXJpYS1sYWJlbCcgb24gdGhlIGNsZWFyIGJ1dHRvbiBpbnNpZGUgaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWxDbGVhcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogSXMgZmlyZWQgd2hlbiB0aGUgbmV4dCBlbGVtZW50IHNob3VsZCBiZSBmb2N1c2VkLlxuICAgKi9cbiAgQE91dHB1dCgpIGZvY3VzT25OZXh0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogSXMgZmlyZWQgd2hlbiB0aGUgdXNlciBzZWxlY3RzIGFuIGl0ZW0gaW4gdGhlIGRyb3Bkb3duIGxpc3QuXG4gICAqL1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEF1dG9jb21wbGV0ZU1vZGVsPigpO1xuXG4gIEBPdXRwdXQoKSBvcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgbW9kZWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBwcml2YXRlIGluZGV4ID0gLTE7XG4gIHByaXZhdGUgb3BlblZhbHVlID0gZmFsc2U7XG4gIHByaXZhdGUgaXRlbXNWYWx1ZTogQXJyYXk8QXV0b2NvbXBsZXRlTW9kZWw+O1xuICBwcml2YXRlIG1vZGVsVmFsdWU6IHN0cmluZztcbiAgcHJpdmF0ZSBjb21wb25lbnRJZDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IGFueSkge1xuICAgIHN1cGVyKCduYXMtYXV0b2NvbXBsZXRlJyk7XG4gICAgdGhpcy5jb21wb25lbnRJZCA9IG5leHRJZCsrO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFyaWFMYWJlbENsZWFyKSB7XG4gICAgICB0aGlzLndhcm5NaXNzaW5nQWNjZXNzaWJpbHR5SW5wdXQoJ2FyaWFMYWJlbENsZWFyJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmFyaWFMYWJlbEJhY2tkcm9wKSB7XG4gICAgICB0aGlzLndhcm5NaXNzaW5nQWNjZXNzaWJpbHR5SW5wdXQoJ2FyaWFMYWJlbEJhY2tkcm9wJyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0UmVzdWx0c0lkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBuYXMtYXV0b2NvbXBsZXRlLXJlc3VsdHMtJHt0aGlzLmNvbXBvbmVudElkfWA7XG4gIH1cblxuICBnZXRMYWJlbElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBuYXMtYXV0b2NvbXBsZXRlLWxhYmVsLSR7dGhpcy5jb21wb25lbnRJZH1gO1xuICB9XG5cbiAgZ2V0SW5wdXRJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgbmFzLWF1dG9jb21wbGV0ZS1pbnB1dC0ke3RoaXMuY29tcG9uZW50SWR9YDtcbiAgfVxuXG4gIHNldE9wZW4oKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNlbGVjdCgpO1xuICAgIHRoaXMub3BlbiA9IHRydWU7XG4gIH1cblxuICBmaWx0ZXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLml0ZW1zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLm1vZGVsICYmICghdGhpcy5uYXNGb3JtR3JvdXAgfHwgIXRoaXMubmFzRm9ybUNvbnRyb2xOYW1lKSkge1xuICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gdGhpcy5pdGVtcztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgY3VycmVudE1vZGVsID0gdGhpcy5tb2RlbDtcblxuICAgIGlmICh0aGlzLm5hc0Zvcm1Hcm91cCAmJiB0aGlzLm5hc0Zvcm1Db250cm9sTmFtZSkge1xuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMubmFzRm9ybUdyb3VwLmdldCh0aGlzLm5hc0Zvcm1Db250cm9sTmFtZSk7XG5cbiAgICAgIGN1cnJlbnRNb2RlbCA9IGNvbnRyb2wudmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoeCA9PlxuICAgICAgKHgudGl0bGUgJiYgeC50aXRsZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGN1cnJlbnRNb2RlbC50b0xvd2VyQ2FzZSgpKSkgfHxcbiAgICAgICh4LnByZWFtYmxlICYmIHgucHJlYW1ibGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhjdXJyZW50TW9kZWwudG9Mb3dlckNhc2UoKSkpKTtcblxuICAgIGlmIChjdXJyZW50TW9kZWwgPT09ICcnIHx8IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9PT0gJycpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IHRoaXMuaXRlbXM7XG4gICAgfVxuXG4gICAgdGhpcy5pbmRleCA9IDA7XG4gICAgaWYgKHRoaXMuZmlsdGVyZWRJdGVtcykge1xuICAgICAgdGhpcy5mb2N1c2VkID0gdGhpcy5maWx0ZXJlZEl0ZW1zW3RoaXMuaW5kZXhdO1xuICAgICAgdGhpcy5vcGVuID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0VzY2FwZSc6XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJsdXIoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdUYWInOlxuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICBpZiAoIWV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB0aGlzLmZvY3VzT25OZXh0LmVtaXQoZXZlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZCkge1xuICAgICAgICAgIHRoaXMubW9kZWxWYWx1ZSA9IHRoaXMuZm9jdXNlZC50aXRsZTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQodGhpcy5mb2N1c2VkKTtcbiAgICAgICAgICB0aGlzLnBhdGhSZWFjdGl2ZUZvcm1Db250cm9sKHRoaXMubW9kZWxWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJsdXIoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgY2FzZSAnRG93bic6XG4gICAgICAgIHRoaXMuZm9jdXNEb3duKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICBjYXNlICdVcCc6XG4gICAgICAgIHRoaXMuZm9jdXNVcCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyU2VsZWN0ZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICB0aGlzLmZvY3VzZWQgPSBudWxsO1xuICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IHRoaXMuaXRlbXM7XG4gICAgdGhpcy5tb2RlbCA9ICcnO1xuICAgIHRoaXMub3BlbiA9IHRydWU7XG4gICAgdGhpcy5pbmRleCA9IC0xO1xuXG4gICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cbiAgfVxuXG4gIHNlbGVjdChpdGVtOiBBdXRvY29tcGxldGVNb2RlbCk6IHZvaWQge1xuICAgIHRoaXMuZm9jdXNlZCA9IGl0ZW07XG4gICAgdGhpcy5tb2RlbCA9IGl0ZW0udGl0bGU7XG4gICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KGl0ZW0pO1xuXG4gICAgaWYgKHRoaXMuZmlsdGVyZWRJdGVtcykge1xuICAgICAgdGhpcy5pbmRleCA9IHRoaXMuZmlsdGVyZWRJdGVtcy5maW5kSW5kZXgoeCA9PiB4LmlkID09PSBpdGVtLmlkKTtcbiAgICB9XG5cbiAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmZvY3VzT25OZXh0LmVtaXQoKTtcbiAgfVxuXG4gIGJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c0Rvd24oKTogdm9pZCB7XG4gICAgKyt0aGlzLmluZGV4O1xuXG4gICAgaWYgKHRoaXMuZmlsdGVyZWRJdGVtcykge1xuICAgICAgaWYgKCF0aGlzLmZpbHRlcmVkSXRlbXNbdGhpcy5pbmRleF0pIHtcbiAgICAgICAgdGhpcy5pbmRleCA9IDA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZm9jdXNlZCA9IHRoaXMuZmlsdGVyZWRJdGVtc1t0aGlzLmluZGV4XTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pbmRleCA9PT0gMCkge1xuICAgICAgdGhpcy5hdXRvU2Nyb2xsKDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmF1dG9TY3JvbGwoMTMxKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvY3VzVXAoKTogdm9pZCB7XG4gICAgLS10aGlzLmluZGV4O1xuXG4gICAgaWYgKHRoaXMuaW5kZXggPCAwKSB7XG4gICAgICB0aGlzLmluZGV4ID0gMDtcbiAgICAgIHRoaXMuYmx1cigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZpbHRlcmVkSXRlbXMpIHtcbiAgICAgIHRoaXMuZm9jdXNlZCA9IHRoaXMuZmlsdGVyZWRJdGVtc1t0aGlzLmluZGV4XTtcbiAgICB9XG5cbiAgICB0aGlzLmF1dG9TY3JvbGwoMCk7XG4gIH1cblxuICBwcml2YXRlIHBhdGhSZWFjdGl2ZUZvcm1Db250cm9sKG1vZGVsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5uYXNGb3JtR3JvdXAgJiYgdGhpcy5uYXNGb3JtQ29udHJvbE5hbWUpIHtcbiAgICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5uYXNGb3JtR3JvdXAuZ2V0KHRoaXMubmFzRm9ybUNvbnRyb2xOYW1lKTtcbiAgICAgIGZvcm1Db250cm9sLnBhdGNoVmFsdWUobW9kZWwpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXV0b1Njcm9sbChleHRyYU9mZnNldDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJlc3VsdHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0cyA9IHRoaXMucmVzdWx0cy5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGZvY3VzZWRJdGVtID0gdGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubmFzLWF1dG9jb21wbGV0ZV9fbGlzdC1pdGVtLS1mb2N1cycpO1xuXG4gICAgaWYgKGZvY3VzZWRJdGVtKSB7XG4gICAgICByZXN1bHRzLnNjcm9sbFRvKDAsIDApO1xuICAgICAgcmVzdWx0cy5zY3JvbGxUbygwLCBmb2N1c2VkSXRlbS5vZmZzZXRUb3AgKyBleHRyYU9mZnNldCAtIHJlc3VsdHMuY2xpZW50SGVpZ2h0KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhbmFzRm9ybUNvbnRyb2xOYW1lOyBlbHNlIHJlYWN0aXZlRm9ybVwiPlxuICA8bGFiZWwgW2lkXT1cImdldExhYmVsSWQoKVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbFwiXG4gICAgW25hc0NsYXNzXT1cImdldENsYXNzKCd3cmFwcGVyJylcIj5cbiAgICA8c3BhbiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2xhYmVsJylcIj57e2xhYmVsfX08L3NwYW4+XG4gICAgPGlucHV0ICNpbnB1dFxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgcm9sZT1cImNvbWJvYm94XCJcbiAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgIGFyaWEtYXV0b2NvbXBsZXRlPVwibm9uZVwiXG4gICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgW2lkXT1cImdldElucHV0SWQoKVwiXG4gICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImdldFJlc3VsdHNJZCgpXCJcbiAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwib3BlbiA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgW2F0dHIuYXJpYS1vd25zXT1cImdldFJlc3VsdHNJZCgpXCJcbiAgICAgIFtuYXNDbGFzc109XCJnZXRDbGFzcygnaW5wdXQnKVwiXG4gICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAoZm9jdXMpPVwic2V0T3BlbigpXCJcbiAgICAgIChpbnB1dCk9XCJmaWx0ZXIoKVwiXG4gICAgICAoY2xpY2spPVwic2V0T3BlbigpXCJcbiAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCIgLz5cbiAgICA8c3BhbiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2ljb24nKVwiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAqbmdJZj1cIm1vZGVsOyBlbHNlIGlzRW1wdHlcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbENsZWFyXCJcbiAgICAgICAgKGNsaWNrKT1cImNsZWFyU2VsZWN0ZWQoJGV2ZW50KVwiPlxuICAgICAgICA8bmFzLWljb24gW3R5cGVdPVwiJ3JlbW92ZSdcIj48L25hcy1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8bmctdGVtcGxhdGUgI2lzRW1wdHk+XG4gICAgICAgIDxuYXMtaWNvbiBbdHlwZV09XCInc21hbGwnXCJcbiAgICAgICAgICBbaWNvbl09XCJpY29uXCI+PC9uYXMtaWNvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9zcGFuPlxuICAgIDxzcGFuIFtuYXNDbGFzc109XCJnZXRDbGFzcygnaW5wdXQtbGluZScpXCI+PC9zcGFuPlxuICA8L2xhYmVsPlxuPC9uZy1jb250YWluZXI+XG48bmctdGVtcGxhdGUgI3JlYWN0aXZlRm9ybT5cbiAgPGxhYmVsIFtpZF09XCJnZXRMYWJlbElkKClcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGFiZWxcIlxuICAgIFtuYXNDbGFzc109XCJnZXRDbGFzcygnd3JhcHBlcicpXCJcbiAgICBbZm9ybUdyb3VwXT1cIm5hc0Zvcm1Hcm91cFwiPlxuICAgIDxzcGFuIFtuYXNDbGFzc109XCJnZXRDbGFzcygnbGFiZWwnKVwiPnt7bGFiZWx9fTwvc3Bhbj5cbiAgICA8aW5wdXQgI2lucHV0XG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICByb2xlPVwiY29tYm9ib3hcIlxuICAgICAgYXJpYS1hdXRvY29tcGxldGU9XCJub25lXCJcbiAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICBbaWRdPVwiZ2V0SW5wdXRJZCgpXCJcbiAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiZ2V0UmVzdWx0c0lkKClcIlxuICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJvcGVuID8gJ3RydWUnIDogJ2ZhbHNlJ1wiXG4gICAgICBbYXR0ci5hcmlhLW93bnNdPVwiZ2V0UmVzdWx0c0lkKClcIlxuICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJuYXNGb3JtQ29udHJvbE5hbWVcIlxuICAgICAgW25hc0NsYXNzXT1cImdldENsYXNzKCdpbnB1dCcpXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAoZm9jdXMpPVwic2V0T3BlbigpXCJcbiAgICAgIChpbnB1dCk9XCJmaWx0ZXIoKVwiXG4gICAgICAoY2xpY2spPVwic2V0T3BlbigpXCJcbiAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCIgLz5cbiAgICA8c3BhbiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2ljb24nKVwiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAqbmdJZj1cIm1vZGVsOyBlbHNlIGlzRW1wdHlcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbENsZWFyXCJcbiAgICAgICAgKGNsaWNrKT1cImNsZWFyU2VsZWN0ZWQoJGV2ZW50KVwiPlxuICAgICAgICA8bmFzLWljb24gW3R5cGVdPVwiJ3JlbW92ZSdcIj48L25hcy1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8bmctdGVtcGxhdGUgI2lzRW1wdHk+XG4gICAgICAgIDxuYXMtaWNvbiBbdHlwZV09XCInc21hbGwnXCJcbiAgICAgICAgICBbaWNvbl09XCJpY29uXCI+PC9uYXMtaWNvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9zcGFuPlxuICAgIDxzcGFuIFtuYXNDbGFzc109XCJnZXRDbGFzcygnaW5wdXQtbGluZScpXCI+PC9zcGFuPlxuICA8L2xhYmVsPlxuPC9uZy10ZW1wbGF0ZT5cbjxkaXYgW2lkXT1cImdldFJlc3VsdHNJZCgpXCJcbiAgW25hc0NsYXNzXT1cImdldENsYXNzKCdyZXN1bHRzLXdyYXBwZXInKVwiXG4gIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwib3BlbiA/ICd0cnVlJyA6ICdmYWxzZSdcIj5cbiAgPHVsICNyZXN1bHRzXG4gICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICpuZ0lmPVwib3BlblwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImdldExhYmVsSWQoKVwiXG4gICAgW25hc0NsYXNzXT1cImdldENsYXNzKCdyZXN1bHRzJylcIj5cbiAgICA8bGkgcm9sZT1cIm9wdGlvblwiXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZEl0ZW1zXCJcbiAgICAgIFtpZF09XCJpdGVtLmlkXCJcbiAgICAgIFtuYXNDbGFzc109XCJnZXRDbGFzcygnbGlzdC1pdGVtJywgaXRlbS5pZCA9PT0gZm9jdXNlZD8uaWQgJiYgJ2ZvY3VzJylcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFtuYXNDbGFzc109XCJnZXRDbGFzcygnaXRlbScsIGl0ZW0uaWQgPT09IGZvY3VzZWQ/LmlkICYmICdmb2N1cycpXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdChpdGVtKVwiXG4gICAgICAgIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgICAgPHNwYW4gW25hc0NsYXNzXT1cImdldENsYXNzKCd0aXRsZScpXCI+e3tpdGVtLnRpdGxlfX08L3NwYW4+XG4gICAgICAgIDxzcGFuIFtuYXNDbGFzc109XCJnZXRDbGFzcygncHJlYW1ibGUnKVwiPnt7aXRlbS5wcmVhbWJsZX19PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9saT5cbiAgPC91bD5cbjwvZGl2PlxuXG48bmFzLWJhY2tkcm9wICpuZ0lmPVwiIWV4aXN0cyhkaXNhYmxlQmFja2Ryb3ApXCJcbiAgW2FyaWFMYWJlbEJhY2tkcm9wXT1cImFyaWFMYWJlbEJhY2tkcm9wXCJcbiAgWyhzaG93QmFja2Ryb3ApXT1cInNob3dCYWNrZHJvcFwiPjwvbmFzLWJhY2tkcm9wPiJdfQ==
293
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUVWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7Ozs7QUFHOUMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBRWY7OztHQUdHO0FBTUgsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGdCQUFnQjtJQUl6RCxJQUFJLFlBQVk7UUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztJQUN6RCxDQUFDO0lBQ0QsSUFBSSxZQUFZLENBQUMsS0FBYztRQUM3QixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBMEJEOzs7O09BSUc7SUFDSCxJQUNJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLEtBQStCO1FBQ3ZDLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFD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Z2h0IE5vcndlZ2lhbiBBaXIgU2h1dHRsZS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlTW9kZWwgfSBmcm9tICcuL21vZGVscy9hdXRvY29tcGxldGUubW9kZWwnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOYXNDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogTm9yd2VnaWFuIEFpcnBvcnQgU2VsZWN0IENvbXBvbmVudCB8IEZvcm0gQ29udHJvbHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmFzLWF1dG9jb21wbGV0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdXRvY29tcGxldGUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVDb21wb25lbnQgZXh0ZW5kcyBOYXNDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgZmlsdGVyZWRJdGVtczogQXJyYXk8QXV0b2NvbXBsZXRlTW9kZWw+ID0gdGhpcy5pdGVtcztcbiAgZm9jdXNlZDogQXV0b2NvbXBsZXRlTW9kZWw7XG5cbiAgZ2V0IHNob3dCYWNrZHJvcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuZXhpc3RzKHRoaXMuZGlzYWJsZUJhY2tkcm9wKSAmJiB0aGlzLm9wZW47XG4gIH1cbiAgc2V0IHNob3dCYWNrZHJvcCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHRoaXMuYmx1cigpO1xuICAgIH1cbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JykgaW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3Jlc3VsdHMnKSByZXN1bHRzOiBFbGVtZW50UmVmO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbGFiZWwgdGhhdCB3aWxsIGFwcGVhciBpbnNpZGUgdGhlIHRleHQgZmllbGQuXG4gICAqL1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgcGxhY2Vob2xkZXIgdGhhdCB3aWxsIGFwcGVhciBpbnNpZGUgdGhlIHRleHQgZmllbGQuXG4gICAqL1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFuIGljb24gdGhhdCB3aWxsIGFwcGVhciBpbnNpZGUgdGhlIHRleHQgZmllbGQuXG4gICAqL1xuICBASW5wdXQoKSBpY29uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gYXJyYXkgb2YgaXRlbXMgdGhhdCB3aWxsIGFwcGVhciBpbnNpZGUgdGhlIGRyb3Bkb3duIGxpc3QuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgaXRlbXMoKTogQXJyYXk8QXV0b2NvbXBsZXRlTW9kZWw+IHtcbiAgICByZXR1cm4gdGhpcy5pdGVtc1ZhbHVlO1xuICB9XG4gIHNldCBpdGVtcyhpdGVtczogQXJyYXk8QXV0b2NvbXBsZXRlTW9kZWw+KSB7XG4gICAgaWYgKCFpdGVtcyB8fCBpdGVtcy5sZW5ndGggPD0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXRlbXNWYWx1ZSA9IGl0ZW1zO1xuXG4gICAgdGhpcy5maWx0ZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIENhbiBzZXQgYW5kIGxpc3RlbiB0byB3aGVhdGhlciB0aGUgZHJvcGRvd24gbGlzdCBpcyBvciBzaG91bGQgYmUgb3BlbiBvciBub3QuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgb3BlbigpIHtcbiAgICByZXR1cm4gdGhpcy5vcGVuVmFsdWU7XG4gIH1cbiAgc2V0IG9wZW4ob3BlbjogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLm9wZW4gPT09IG9wZW4gfHwgIXRoaXMuaXRlbXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9wZW5WYWx1ZSA9IG9wZW47XG4gICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQob3Blbik7XG4gIH1cblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBDYW4gc2V0IGFuZCBsaXN0ZW4gdG8gY2hhbmdlcyBpbiB0aGUgbW9kZWwgb2YgdGhlIHRleHQgZmllbGQuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgbW9kZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlbFZhbHVlO1xuICB9XG4gIHNldCBtb2RlbChtb2RlbDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMubW9kZWxWYWx1ZSA9PT0gbW9kZWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm1vZGVsVmFsdWUgPSBtb2RlbDtcblxuICAgIGlmIChtb2RlbCAmJiB0aGlzLmZpbHRlcmVkSXRlbXMpIHtcbiAgICAgIHRoaXMuaW5kZXggPSB0aGlzLmZpbHRlcmVkSXRlbXMuZmluZEluZGV4KHggPT4geC50aXRsZSA9PT0gbW9kZWwpO1xuICAgIH1cblxuICAgIHRoaXMucGF0aFJlYWN0aXZlRm9ybUNvbnRyb2wobW9kZWwpO1xuXG4gICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KG1vZGVsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIERpc2FibGVzIHRoZSBiYWNrZHJvcCBvbiBmb2N1cy5cbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVCYWNrZHJvcDogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXRzIGEgZm9ybUNvbnRyb2xOYW1lIGRpcmVjdGl2ZSB0byB0aGUgaW5wdXQuXG4gICAqIEl0IHJlcXVpcmVzIHRoYXQgdGhlIGNvbnN1bWVyIGluY2x1ZGVkIFJlYWN0aXZlRm9ybXNNb2R1bGUgaW4gaXQncyBtb2R1bGUuXG4gICAqIEl0IHJlcXVpZXJzIHRoYXQgdGhlIG5hc0Zvcm1Hcm91cCBpbnB1dCBpcyBmaWxsZWQuXG4gICAqL1xuICBASW5wdXQoKSBuYXNGb3JtQ29udHJvbE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBZGRzIHRoZSBwYXJlbnQncyBmb3JtIGdyb3VwLlxuICAgKiBJdCByZXF1aXJlcyB0aGF0IHRoZSBjb25zdW1lciBpbmNsdWRlZCBSZWFjdGl2ZUZvcm1zTW9kdWxlIGluIGl0J3MgbW9kdWxlLlxuICAgKiBJdCBpcyByZXF1aWVyZWQgdG8gYmUgZmlsbGVkIGlmIG5hc0Zvcm1Db250cm9sTmFtZSBhZGRlZC5cbiAgICovXG4gIEBJbnB1dCgpIG5hc0Zvcm1Hcm91cDogRm9ybUdyb3VwO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFkZHMgYW4gYXJpYS1sYWJlbCBhdHRyaWJ1dGUgdG8gdGhlIGJhY2tkcm9wIGJ1dHRvbi5cbiAgICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbEJhY2tkcm9wOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkcyAnYXJpYS1sYWJlbCcgb24gdGhlIGNsZWFyIGJ1dHRvbiBpbnNpZGUgaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWxDbGVhcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgT3V0cHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBJcyBmaXJlZCB3aGVuIHRoZSBuZXh0IGVsZW1lbnQgc2hvdWxkIGJlIGZvY3VzZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgZm9jdXNPbk5leHQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBPdXRwdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIElzIGZpcmVkIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyBhbiBpdGVtIGluIHRoZSBkcm9wZG93biBsaXN0LlxuICAgKi9cbiAgQE91dHB1dCgpIHNlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxBdXRvY29tcGxldGVNb2RlbD4oKTtcblxuICBAT3V0cHV0KCkgb3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIG1vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgcHJpdmF0ZSBpbmRleCA9IC0xO1xuICBwcml2YXRlIG9wZW5WYWx1ZSA9IGZhbHNlO1xuICBwcml2YXRlIGl0ZW1zVmFsdWU6IEFycmF5PEF1dG9jb21wbGV0ZU1vZGVsPjtcbiAgcHJpdmF0ZSBtb2RlbFZhbHVlOiBzdHJpbmc7XG4gIHByaXZhdGUgY29tcG9uZW50SWQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBhbnkpIHtcbiAgICBzdXBlcignbmFzLWF1dG9jb21wbGV0ZScpO1xuICAgIHRoaXMuY29tcG9uZW50SWQgPSBuZXh0SWQrKztcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hcmlhTGFiZWxDbGVhcikge1xuICAgICAgdGhpcy53YXJuTWlzc2luZ0FjY2Vzc2liaWx0eUlucHV0KCdhcmlhTGFiZWxDbGVhcicpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5hcmlhTGFiZWxCYWNrZHJvcCkge1xuICAgICAgdGhpcy53YXJuTWlzc2luZ0FjY2Vzc2liaWx0eUlucHV0KCdhcmlhTGFiZWxCYWNrZHJvcCcpO1xuICAgIH1cbiAgfVxuXG4gIGdldFJlc3VsdHNJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgbmFzLWF1dG9jb21wbGV0ZS1yZXN1bHRzLSR7dGhpcy5jb21wb25lbnRJZH1gO1xuICB9XG5cbiAgZ2V0TGFiZWxJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgbmFzLWF1dG9jb21wbGV0ZS1sYWJlbC0ke3RoaXMuY29tcG9uZW50SWR9YDtcbiAgfVxuXG4gIGdldElucHV0SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYG5hcy1hdXRvY29tcGxldGUtaW5wdXQtJHt0aGlzLmNvbXBvbmVudElkfWA7XG4gIH1cblxuICBzZXRPcGVuKCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3QoKTtcbiAgICB0aGlzLm9wZW4gPSB0cnVlO1xuICB9XG5cbiAgZmlsdGVyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pdGVtcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5tb2RlbCAmJiAoIXRoaXMubmFzRm9ybUdyb3VwIHx8ICF0aGlzLm5hc0Zvcm1Db250cm9sTmFtZSkpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IHRoaXMuaXRlbXM7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGN1cnJlbnRNb2RlbCA9IHRoaXMubW9kZWw7XG5cbiAgICBpZiAodGhpcy5uYXNGb3JtR3JvdXAgJiYgdGhpcy5uYXNGb3JtQ29udHJvbE5hbWUpIHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLm5hc0Zvcm1Hcm91cC5nZXQodGhpcy5uYXNGb3JtQ29udHJvbE5hbWUpO1xuXG4gICAgICBjdXJyZW50TW9kZWwgPSBjb250cm9sLnZhbHVlO1xuICAgIH1cblxuICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKHggPT5cbiAgICAgICh4LnRpdGxlICYmIHgudGl0bGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhjdXJyZW50TW9kZWwudG9Mb3dlckNhc2UoKSkpIHx8XG4gICAgICAoeC5wcmVhbWJsZSAmJiB4LnByZWFtYmxlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoY3VycmVudE1vZGVsLnRvTG93ZXJDYXNlKCkpKSk7XG5cbiAgICBpZiAoY3VycmVudE1vZGVsID09PSAnJyB8fCB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPT09ICcnKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSB0aGlzLml0ZW1zO1xuICAgIH1cblxuICAgIHRoaXMuaW5kZXggPSAwO1xuICAgIGlmICh0aGlzLmZpbHRlcmVkSXRlbXMpIHtcbiAgICAgIHRoaXMuZm9jdXNlZCA9IHRoaXMuZmlsdGVyZWRJdGVtc1t0aGlzLmluZGV4XTtcbiAgICAgIHRoaXMub3BlbiA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5ibHVyKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnVGFiJzpcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgaWYgKCFldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5mb2N1c09uTmV4dC5lbWl0KGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmZvY3VzZWQpIHtcbiAgICAgICAgICB0aGlzLm1vZGVsVmFsdWUgPSB0aGlzLmZvY3VzZWQudGl0bGU7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHRoaXMuZm9jdXNlZCk7XG4gICAgICAgICAgdGhpcy5wYXRoUmVhY3RpdmVGb3JtQ29udHJvbCh0aGlzLm1vZGVsVmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ibHVyKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgIGNhc2UgJ0Rvd24nOlxuICAgICAgICB0aGlzLmZvY3VzRG93bigpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgY2FzZSAnVXAnOlxuICAgICAgICB0aGlzLmZvY3VzVXAoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBjbGVhclNlbGVjdGVkKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgdGhpcy5mb2N1c2VkID0gbnVsbDtcbiAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSB0aGlzLml0ZW1zO1xuICAgIHRoaXMubW9kZWwgPSAnJztcbiAgICB0aGlzLm9wZW4gPSB0cnVlO1xuICAgIHRoaXMuaW5kZXggPSAtMTtcblxuICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXG4gIH1cblxuICBzZWxlY3QoaXRlbTogQXV0b2NvbXBsZXRlTW9kZWwpOiB2b2lkIHtcbiAgICB0aGlzLmZvY3VzZWQgPSBpdGVtO1xuICAgIHRoaXMubW9kZWwgPSBpdGVtLnRpdGxlO1xuICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdChpdGVtKTtcblxuICAgIGlmICh0aGlzLmZpbHRlcmVkSXRlbXMpIHtcbiAgICAgIHRoaXMuaW5kZXggPSB0aGlzLmZpbHRlcmVkSXRlbXMuZmluZEluZGV4KHggPT4geC5pZCA9PT0gaXRlbS5pZCk7XG4gICAgfVxuXG4gICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgdGhpcy5mb2N1c09uTmV4dC5lbWl0KCk7XG4gIH1cblxuICBibHVyKCk6IHZvaWQge1xuICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgIHRoaXMub3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNEb3duKCk6IHZvaWQge1xuICAgICsrdGhpcy5pbmRleDtcblxuICAgIGlmICh0aGlzLmZpbHRlcmVkSXRlbXMpIHtcbiAgICAgIGlmICghdGhpcy5maWx0ZXJlZEl0ZW1zW3RoaXMuaW5kZXhdKSB7XG4gICAgICAgIHRoaXMuaW5kZXggPSAwO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmZvY3VzZWQgPSB0aGlzLmZpbHRlcmVkSXRlbXNbdGhpcy5pbmRleF07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaW5kZXggPT09IDApIHtcbiAgICAgIHRoaXMuYXV0b1Njcm9sbCgwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hdXRvU2Nyb2xsKDEzMSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c1VwKCk6IHZvaWQge1xuICAgIC0tdGhpcy5pbmRleDtcblxuICAgIGlmICh0aGlzLmluZGV4IDwgMCkge1xuICAgICAgdGhpcy5pbmRleCA9IDA7XG4gICAgICB0aGlzLmJsdXIoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5maWx0ZXJlZEl0ZW1zKSB7XG4gICAgICB0aGlzLmZvY3VzZWQgPSB0aGlzLmZpbHRlcmVkSXRlbXNbdGhpcy5pbmRleF07XG4gICAgfVxuXG4gICAgdGhpcy5hdXRvU2Nyb2xsKDApO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXRoUmVhY3RpdmVGb3JtQ29udHJvbChtb2RlbDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubmFzRm9ybUdyb3VwICYmIHRoaXMubmFzRm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMubmFzRm9ybUdyb3VwLmdldCh0aGlzLm5hc0Zvcm1Db250cm9sTmFtZSk7XG4gICAgICBmb3JtQ29udHJvbC5wYXRjaFZhbHVlKG1vZGVsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGF1dG9TY3JvbGwoZXh0cmFPZmZzZXQ6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5yZXN1bHRzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdHMgPSB0aGlzLnJlc3VsdHMubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBmb2N1c2VkSXRlbSA9IHRoaXMuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm5hcy1hdXRvY29tcGxldGVfX2xpc3QtaXRlbS0tZm9jdXMnKTtcblxuICAgIGlmIChmb2N1c2VkSXRlbSkge1xuICAgICAgcmVzdWx0cy5zY3JvbGxUbygwLCAwKTtcbiAgICAgIHJlc3VsdHMuc2Nyb2xsVG8oMCwgZm9jdXNlZEl0ZW0ub2Zmc2V0VG9wICsgZXh0cmFPZmZzZXQgLSByZXN1bHRzLmNsaWVudEhlaWdodCk7XG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIW5hc0Zvcm1Db250cm9sTmFtZTsgZWxzZSByZWFjdGl2ZUZvcm1cIj5cbiAgPGxhYmVsIFtpZF09XCJnZXRMYWJlbElkKClcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGFiZWxcIlxuICAgIFtuYXNDbGFzc109XCJnZXRDbGFzcygnd3JhcHBlcicpXCI+XG4gICAgPHNwYW4gW25hc0NsYXNzXT1cImdldENsYXNzKCdsYWJlbCcpXCI+e3tsYWJlbH19PC9zcGFuPlxuICAgIDxpbnB1dCAjaW5wdXRcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIHJvbGU9XCJjb21ib2JveFwiXG4gICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICBhcmlhLWF1dG9jb21wbGV0ZT1cIm5vbmVcIlxuICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgIFtpZF09XCJnZXRJbnB1dElkKClcIlxuICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJnZXRSZXN1bHRzSWQoKVwiXG4gICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIm9wZW4gPyAndHJ1ZScgOiAnZmFsc2UnXCJcbiAgICAgIFthdHRyLmFyaWEtb3duc109XCJnZXRSZXN1bHRzSWQoKVwiXG4gICAgICBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2lucHV0JylcIlxuICAgICAgWyhuZ01vZGVsKV09XCJtb2RlbFwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgKGZvY3VzKT1cInNldE9wZW4oKVwiXG4gICAgICAoaW5wdXQpPVwiZmlsdGVyKClcIlxuICAgICAgKGNsaWNrKT1cInNldE9wZW4oKVwiXG4gICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiIC8+XG4gICAgPHNwYW4gW25hc0NsYXNzXT1cImdldENsYXNzKCdpY29uJylcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgKm5nSWY9XCJtb2RlbDsgZWxzZSBpc0VtcHR5XCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxDbGVhclwiXG4gICAgICAgIChjbGljayk9XCJjbGVhclNlbGVjdGVkKCRldmVudClcIj5cbiAgICAgICAgPG5hcy1pY29uIFt0eXBlXT1cIidyZW1vdmUnXCI+PC9uYXMtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG5nLXRlbXBsYXRlICNpc0VtcHR5PlxuICAgICAgICA8bmFzLWljb24gW3R5cGVdPVwiJ3NtYWxsJ1wiXG4gICAgICAgICAgW2ljb25dPVwiaWNvblwiPjwvbmFzLWljb24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvc3Bhbj5cbiAgICA8c3BhbiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2lucHV0LWxpbmUnKVwiPjwvc3Bhbj5cbiAgPC9sYWJlbD5cbjwvbmctY29udGFpbmVyPlxuPG5nLXRlbXBsYXRlICNyZWFjdGl2ZUZvcm0+XG4gIDxsYWJlbCBbaWRdPVwiZ2V0TGFiZWxJZCgpXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxhYmVsXCJcbiAgICBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ3dyYXBwZXInKVwiXG4gICAgW2Zvcm1Hcm91cF09XCJuYXNGb3JtR3JvdXBcIj5cbiAgICA8c3BhbiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2xhYmVsJylcIj57e2xhYmVsfX08L3NwYW4+XG4gICAgPGlucHV0ICNpbnB1dFxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgcm9sZT1cImNvbWJvYm94XCJcbiAgICAgIGFyaWEtYXV0b2NvbXBsZXRlPVwibm9uZVwiXG4gICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgW2lkXT1cImdldElucHV0SWQoKVwiXG4gICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImdldFJlc3VsdHNJZCgpXCJcbiAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwib3BlbiA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgW2F0dHIuYXJpYS1vd25zXT1cImdldFJlc3VsdHNJZCgpXCJcbiAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibmFzRm9ybUNvbnRyb2xOYW1lXCJcbiAgICAgIFtuYXNDbGFzc109XCJnZXRDbGFzcygnaW5wdXQnKVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgKGZvY3VzKT1cInNldE9wZW4oKVwiXG4gICAgICAoaW5wdXQpPVwiZmlsdGVyKClcIlxuICAgICAgKGNsaWNrKT1cInNldE9wZW4oKVwiXG4gICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiIC8+XG4gICAgPHNwYW4gW25hc0NsYXNzXT1cImdldENsYXNzKCdpY29uJylcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgKm5nSWY9XCJtb2RlbDsgZWxzZSBpc0VtcHR5XCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxDbGVhclwiXG4gICAgICAgIChjbGljayk9XCJjbGVhclNlbGVjdGVkKCRldmVudClcIj5cbiAgICAgICAgPG5hcy1pY29uIFt0eXBlXT1cIidyZW1vdmUnXCI+PC9uYXMtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG5nLXRlbXBsYXRlICNpc0VtcHR5PlxuICAgICAgICA8bmFzLWljb24gW3R5cGVdPVwiJ3NtYWxsJ1wiXG4gICAgICAgICAgW2ljb25dPVwiaWNvblwiPjwvbmFzLWljb24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvc3Bhbj5cbiAgICA8c3BhbiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2lucHV0LWxpbmUnKVwiPjwvc3Bhbj5cbiAgPC9sYWJlbD5cbjwvbmctdGVtcGxhdGU+XG48ZGl2IFtpZF09XCJnZXRSZXN1bHRzSWQoKVwiXG4gIFtuYXNDbGFzc109XCJnZXRDbGFzcygncmVzdWx0cy13cmFwcGVyJylcIlxuICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIm9wZW4gPyAndHJ1ZScgOiAnZmFsc2UnXCI+XG4gIDx1bCAjcmVzdWx0c1xuICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAqbmdJZj1cIm9wZW5cIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJnZXRMYWJlbElkKClcIlxuICAgIFtuYXNDbGFzc109XCJnZXRDbGFzcygncmVzdWx0cycpXCI+XG4gICAgPGxpIHJvbGU9XCJvcHRpb25cIlxuICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWRJdGVtc1wiXG4gICAgICBbaWRdPVwiaXRlbS5pZFwiXG4gICAgICBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2xpc3QtaXRlbScsIGl0ZW0uaWQgPT09IGZvY3VzZWQ/LmlkICYmICdmb2N1cycpXCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2l0ZW0nLCBpdGVtLmlkID09PSBmb2N1c2VkPy5pZCAmJiAnZm9jdXMnKVwiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3QoaXRlbSlcIlxuICAgICAgICB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgIDxzcGFuIFtuYXNDbGFzc109XCJnZXRDbGFzcygndGl0bGUnKVwiPnt7aXRlbS50aXRsZX19PC9zcGFuPlxuICAgICAgICA8c3BhbiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ3ByZWFtYmxlJylcIj57e2l0ZW0ucHJlYW1ibGV9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbGk+XG4gIDwvdWw+XG48L2Rpdj5cblxuPG5hcy1iYWNrZHJvcCAqbmdJZj1cIiFleGlzdHMoZGlzYWJsZUJhY2tkcm9wKVwiXG4gIFthcmlhTGFiZWxCYWNrZHJvcF09XCJhcmlhTGFiZWxCYWNrZHJvcFwiXG4gIFsoc2hvd0JhY2tkcm9wKV09XCJzaG93QmFja2Ryb3BcIj48L25hcy1iYWNrZHJvcD4iXX0=
@@ -13,6 +13,7 @@ import * as i2 from "../../core/directives/nas-class/nas-class.directive";
13
13
  */
14
14
  export class BackdropComponent extends NasComponentBase {
15
15
  /**
16
+ * @property Input
16
17
  * @description
17
18
  * backdrop show/hide.
18
19
  */
@@ -26,6 +27,7 @@ export class BackdropComponent extends NasComponentBase {
26
27
  constructor() {
27
28
  super('nas-backdrop');
28
29
  /**
30
+ * @property Output
29
31
  * @description
30
32
  * Event emmitted when showBackdrop is changed.
31
33
  */
@@ -53,4 +55,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
53
55
  }], ariaLabelBackdrop: [{
54
56
  type: Input
55
57
  }] } });
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2Ryb3AuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9iYWNrZHJvcC9iYWNrZHJvcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JhY2tkcm9wL2JhY2tkcm9wLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7QUFFdEU7OztHQUdHO0FBTUgsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGdCQUFnQjtJQVNyRDs7O09BR0c7SUFDSCxJQUNJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUNELElBQUksWUFBWSxDQUFDLEtBQWM7UUFDN0IsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBUUQ7UUFDRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUExQnhCOzs7V0FHRztRQUNPLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7SUF1QjNELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMzQixJQUFJLENBQUMsNEJBQTRCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztTQUN4RDtJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsS0FBb0I7UUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3pCLENBQUM7OEdBekNVLGlCQUFpQjtrR0FBakIsaUJBQWlCLG9OQ2hCOUIseU1BT1M7OzJGRFNJLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxjQUFjOzBFQVdkLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFPSCxZQUFZO3NCQURmLEtBQUs7Z0JBYUcsaUJBQWlCO3NCQUF6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IE5vcndlZ2lhbiBBaXIgU2h1dHRsZS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmFzQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL2NvcmUvYmFzZS9uYXMtY29tcG9uZW50LmJhc2UnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogTm9yd2VnaWFuIEJhY2sgZHJvcCBDb21wb25lbnQgfCBGdW5jdGlvbmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25hcy1iYWNrZHJvcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9iYWNrZHJvcC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2JhY2tkcm9wLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQmFja2Ryb3BDb21wb25lbnQgZXh0ZW5kcyBOYXNDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25Jbml0ICB7XG4gIHNob3c6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFdmVudCBlbW1pdHRlZCB3aGVuIHNob3dCYWNrZHJvcCBpcyBjaGFuZ2VkLlxuICAgKi9cbiAgQE91dHB1dCgpIHNob3dCYWNrZHJvcENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIGJhY2tkcm9wIHNob3cvaGlkZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBzaG93QmFja2Ryb3AoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvdztcbiAgfVxuICBzZXQgc2hvd0JhY2tkcm9wKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zaG93ID0gdmFsdWU7XG4gICAgdGhpcy5zaG93QmFja2Ryb3BDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFkZHMgYW4gYXJpYS1sYWJlbCBhdHRyaWJ1dGUgdG8gdGhlIGJ1dHRvblxuICAgKi9cbiAgQElucHV0KCkgYXJpYUxhYmVsQmFja2Ryb3A6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignbmFzLWJhY2tkcm9wJyk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYXJpYUxhYmVsQmFja2Ryb3ApIHtcbiAgICAgIHRoaXMud2Fybk1pc3NpbmdBY2Nlc3NpYmlsdHlJbnB1dCgnYXJpYUxhYmVsQmFja2Ryb3AnKTtcbiAgICB9XG4gIH1cblxuICBvbkNsb3NlKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zaG93QmFja2Ryb3AgPSBmYWxzZTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbn1cbiIsIjxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgdGFiaW5kZXg9XCIwXCJcbiAgICAjYmFja2Ryb3BcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbEJhY2tkcm9wXCJcbiAgICBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoKVwiXG4gICAgKGNsaWNrKT1cIm9uQ2xvc2UoJGV2ZW50KVwiXG4gICAgKm5nSWY9XCJzaG93XCI+XG48L2J1dHRvbj4iXX0=
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2Ryb3AuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9iYWNrZHJvcC9iYWNrZHJvcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JhY2tkcm9wL2JhY2tkcm9wLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7QUFFdEU7OztHQUdHO0FBTUgsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGdCQUFnQjtJQVVyRDs7OztPQUlHO0lBQ0gsSUFDSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFDRCxJQUFJLFlBQVksQ0FBQyxLQUFjO1FBQzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQVNEO1FBQ0UsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBN0J4Qjs7OztXQUlHO1FBQ08sdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQXlCM0QsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzNCLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQ3hEO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFvQjtRQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDekIsQ0FBQzs4R0E1Q1UsaUJBQWlCO2tHQUFqQixpQkFBaUIsb05DaEI5Qix5TUFPUzs7MkZEU0ksaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLGNBQWM7MEVBWWQsa0JBQWtCO3NCQUEzQixNQUFNO2dCQVFILFlBQVk7c0JBRGYsS0FBSztnQkFjRyxpQkFBaUI7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgTm9yd2VnaWFuIEFpciBTaHV0dGxlLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXNDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlL25hcy1jb21wb25lbnQuYmFzZSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBOb3J3ZWdpYW4gQmFjayBkcm9wIENvbXBvbmVudCB8IEZ1bmN0aW9uYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmFzLWJhY2tkcm9wJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2JhY2tkcm9wLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYmFja2Ryb3AuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBCYWNrZHJvcENvbXBvbmVudCBleHRlbmRzIE5hc0NvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBPbkluaXQgIHtcbiAgc2hvdzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IE91dHB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRXZlbnQgZW1taXR0ZWQgd2hlbiBzaG93QmFja2Ryb3AgaXMgY2hhbmdlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBzaG93QmFja2Ryb3BDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogYmFja2Ryb3Agc2hvdy9oaWRlLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IHNob3dCYWNrZHJvcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93O1xuICB9XG4gIHNldCBzaG93QmFja2Ryb3AodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNob3cgPSB2YWx1ZTtcbiAgICB0aGlzLnNob3dCYWNrZHJvcENoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFkZHMgYW4gYXJpYS1sYWJlbCBhdHRyaWJ1dGUgdG8gdGhlIGJ1dHRvblxuICAgKi9cbiAgQElucHV0KCkgYXJpYUxhYmVsQmFja2Ryb3A6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignbmFzLWJhY2tkcm9wJyk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYXJpYUxhYmVsQmFja2Ryb3ApIHtcbiAgICAgIHRoaXMud2Fybk1pc3NpbmdBY2Nlc3NpYmlsdHlJbnB1dCgnYXJpYUxhYmVsQmFja2Ryb3AnKTtcbiAgICB9XG4gIH1cblxuICBvbkNsb3NlKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zaG93QmFja2Ryb3AgPSBmYWxzZTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbn1cbiIsIjxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgdGFiaW5kZXg9XCIwXCJcbiAgICAjYmFja2Ryb3BcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbEJhY2tkcm9wXCJcbiAgICBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoKVwiXG4gICAgKGNsaWNrKT1cIm9uQ2xvc2UoJGV2ZW50KVwiXG4gICAgKm5nSWY9XCJzaG93XCI+XG48L2J1dHRvbj4iXX0=
@@ -12,9 +12,9 @@ import * as i1 from "../../core/directives/nas-class/nas-class.directive";
12
12
  */
13
13
  export class BoxComponent extends NasComponentBase {
14
14
  /**
15
- * Represent a box component.
16
- * Will initiate correct block style.
17
- */
15
+ * Represent a box component.
16
+ * Will initiate correct block style.
17
+ */
18
18
  constructor() {
19
19
  super('nas-box');
20
20
  }
@@ -65,4 +65,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
65
65
  }], grey: [{
66
66
  type: Input
67
67
  }] } });
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYm94L2JveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JveC9ib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7OztBQUV0RTs7O0dBR0c7QUFPSCxNQUFNLE9BQU8sWUFBYSxTQUFRLGdCQUFnQjtJQW9EOUM7OztLQUdDO0lBQ0g7UUFDRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPO1lBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksVUFBVTtZQUN4QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxPQUFPO1lBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLGFBQWE7WUFDOUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksUUFBUTtZQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxXQUFXO1lBQzFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLFVBQVU7WUFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksU0FBUztZQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxTQUFTO1lBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFdBQVc7WUFDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTTtTQUNqQyxDQUFDO0lBQ0osQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFnQixFQUFFLFNBQWU7UUFDMUMsTUFBTSxPQUFPLEdBQXNCO1lBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQztTQUNsQyxDQUFDO1FBQ0YsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzs4R0FoRlUsWUFBWTtrR0FBWixZQUFZLGtTQ2xCekIsNEZBR0E7OzJGRGVhLFlBQVk7a0JBTnhCLFNBQVM7K0JBQ0UsU0FBUyxpQkFHSixpQkFBaUIsQ0FBQyxJQUFJOzBFQU81QixRQUFRO3NCQUFoQixLQUFLO2dCQUtHLE9BQU87c0JBQWYsS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxXQUFXO3NCQUFuQixLQUFLO2dCQUtHLE1BQU07c0JBQWQsS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0csT0FBTztzQkFBZixLQUFLO2dCQUtHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBOb3J3ZWdpYW4gQWlyIFNodXR0bGUuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hc0NvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UvbmFzLWNvbXBvbmVudC5iYXNlJztcbmltcG9ydCB7IENsYXNzTW9kZWwgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9jbGFzcy5tb2RlbCc7XG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogTm9yd2VnaWFuIEJveCBDb21wb25lbnQgfCBMYXlvdXRcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmFzLWJveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9ib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ib3guY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQm94Q29tcG9uZW50IGV4dGVuZHMgTmFzQ29tcG9uZW50QmFzZSB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQm9vbGVhbiB0byBzZXQgb3V0bGluZWQgc3R5bGU7IHdoaXRlIGJveCB3aXRoIGJsdWUgYm9yZGVyLlxuICAgKi9cbiAgQElucHV0KCkgb3V0bGluZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQm9vbGVhbiB0byBzZXQgcHJpbWFyeSBzdHlsZTsgcmVkIGJveC5cbiAgICovXG4gIEBJbnB1dCgpIHByaW1hcnk6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQm9vbGVhbiB0byBzZXQgc2Vjb25kYXJ5IHN0eWxlOyBibHVlIGJveC5cbiAgICovXG4gIEBJbnB1dCgpIHNlY29uZGFyeTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBCb29sZWFuIHRvIHNldCBsaWdodCBzdHlsZTsgd2hpdGUgYm94LlxuICAgKi9cbiAgQElucHV0KCkgbGlnaHQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQm9vbGVhbiB0byBzZXQgdHJhbnNwYXJlbnQgc3R5bGUuIEJveCB3aWxsIGJlIGludmlzaWJsZSwgYnV0IGluY2x1ZGUgZGlzcGxheSBwcm9wZXJ0aWVzIGFzIHBhZGRpbmcsIG1hcmdpbnMgZXRjLlxuICAgKi9cbiAgQElucHV0KCkgdHJhbnNwYXJlbnQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQm9vbGVhbiB0byBnaXZlIGNvbnRlbnQgb2YgYm94IGNlbnRlciBhbGlnbmVtZW50LlxuICAgKi9cbiAgQElucHV0KCkgY2VudGVyOiBib29sZWFuO1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEJvb2xlYW4gdG8gcmVtb3ZlIGFsbCBwYWRkaW5nIGluc2lkZSB0aGUgYm94LlxuICAgKi9cbiAgQElucHV0KCkgbm9wYWRkaW5nOiBib29sZWFuO1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEJvb2xlYW4gdG8gcmVtb3ZlIGFsbCBtYXJnaW5zIGFyb3VuZCB0aGUgYm94LlxuICAgKi9cbiAgQElucHV0KCkgbm9tYXJnaW46IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQm9vbGVhbiB0byBzZXQgMTAwJSBoZWlnaHQgb2YgYm94LlxuICAgKi9cbiAgQElucHV0KCkgc3RyZXRjaDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBCb29sZWFuIHRvIHNldCBncmV5IHN0eWxlLlxuICAgKi9cbiAgQElucHV0KCkgZ3JleTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgKiBSZXByZXNlbnQgYSBib3ggY29tcG9uZW50LlxuICAgKiBXaWxsIGluaXRpYXRlIGNvcnJlY3QgYmxvY2sgc3R5bGUuXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignbmFzLWJveCcpO1xuICB9XG5cbiAgZ2V0TW9kaWZpZXJzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgIHJldHVybiBbXG4gICAgICB0aGlzLmV4aXN0cyh0aGlzLm91dGxpbmVkKSAmJiAnb3V0bGluZWQnLFxuICAgICAgdGhpcy5leGlzdHModGhpcy5saWdodCkgJiYgJ2xpZ2h0JyxcbiAgICAgIHRoaXMuZXhpc3RzKHRoaXMudHJhbnNwYXJlbnQpICYmICd0cmFuc3BhcmVudCcsXG4gICAgICB0aGlzLmV4aXN0cyh0aGlzLmNlbnRlcikgJiYgJ2NlbnRlcicsXG4gICAgICB0aGlzLmV4aXN0cyh0aGlzLm5vcGFkZGluZykgJiYgJ25vcGFkZGluZycsXG4gICAgICB0aGlzLmV4aXN0cyh0aGlzLm5vbWFyZ2luKSAmJiAnbm9tYXJnaW4nLFxuICAgICAgdGhpcy5leGlzdHModGhpcy5zdHJldGNoKSAmJiAnc3RyZXRjaCcsXG4gICAgICB0aGlzLmV4aXN0cyh0aGlzLnByaW1hcnkpICYmICdwcmltYXJ5JyxcbiAgICAgIHRoaXMuZXhpc3RzKHRoaXMuc2Vjb25kYXJ5KSAmJiAnc2Vjb25kYXJ5JyxcbiAgICAgIHRoaXMuZXhpc3RzKHRoaXMuZ3JleSkgJiYgJ2dyZXknXG4gICAgXTtcbiAgfVxuXG4gIGdldENsYXNzZXMoZWxlbWVudD86IHN0cmluZywgbW9kaWZpZXJzPzogYW55KTogQXJyYXk8Q2xhc3NNb2RlbD4ge1xuICAgIGNvbnN0IGNsYXNzZXM6IEFycmF5PENsYXNzTW9kZWw+ID0gW1xuICAgICAgdGhpcy5nZXRDbGFzcyhlbGVtZW50LCBtb2RpZmllcnMpXG4gICAgXTtcbiAgICByZXR1cm4gY2xhc3NlcztcbiAgfVxufVxuIiwiPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3NlcygnJywgZ2V0TW9kaWZpZXJzKCkpXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYm94L2JveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JveC9ib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7OztBQUV0RTs7O0dBR0c7QUFPSCxNQUFNLE9BQU8sWUFBYSxTQUFRLGdCQUFnQjtJQThEaEQ7OztPQUdHO0lBQ0g7UUFDRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPO1lBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksVUFBVTtZQUN4QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxPQUFPO1lBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLGFBQWE7WUFDOUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksUUFBUTtZQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxXQUFXO1lBQzFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLFVBQVU7WUFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksU0FBUztZQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxTQUFTO1lBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFdBQVc7WUFDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTTtTQUNqQyxDQUFDO0lBQ0osQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFnQixFQUFFLFNBQWU7UUFDMUMsTUFBTSxPQUFPLEdBQXNCO1lBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQztTQUNsQyxDQUFDO1FBQ0YsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzs4R0ExRlUsWUFBWTtrR0FBWixZQUFZLGtTQ2xCekIsNEZBR0E7OzJGRGVhLFlBQVk7a0JBTnhCLFNBQVM7K0JBQ0UsU0FBUyxpQkFHSixpQkFBaUIsQ0FBQyxJQUFJOzBFQVE1QixRQUFRO3NCQUFoQixLQUFLO2dCQU1HLE9BQU87c0JBQWYsS0FBSztnQkFNRyxTQUFTO3NCQUFqQixLQUFLO2dCQU1HLEtBQUs7c0JBQWIsS0FBSztnQkFNRyxXQUFXO3NCQUFuQixLQUFLO2dCQU1HLE1BQU07c0JBQWQsS0FBSztnQkFNRyxTQUFTO3NCQUFqQixLQUFLO2dCQU1HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBTUcsT0FBTztzQkFBZixLQUFLO2dCQU1HLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBOb3J3ZWdpYW4gQWlyIFNodXR0bGUuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hc0NvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UvbmFzLWNvbXBvbmVudC5iYXNlJztcbmltcG9ydCB7IENsYXNzTW9kZWwgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9jbGFzcy5tb2RlbCc7XG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogTm9yd2VnaWFuIEJveCBDb21wb25lbnQgfCBMYXlvdXRcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmFzLWJveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9ib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ib3guY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQm94Q29tcG9uZW50IGV4dGVuZHMgTmFzQ29tcG9uZW50QmFzZSB7XG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEJvb2xlYW4gdG8gc2V0IG91dGxpbmVkIHN0eWxlOyB3aGl0ZSBib3ggd2l0aCBibHVlIGJvcmRlci5cbiAgICovXG4gIEBJbnB1dCgpIG91dGxpbmVkOiBib29sZWFuO1xuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBCb29sZWFuIHRvIHNldCBwcmltYXJ5IHN0eWxlOyByZWQgYm94LlxuICAgKi9cbiAgQElucHV0KCkgcHJpbWFyeTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQm9vbGVhbiB0byBzZXQgc2Vjb25kYXJ5IHN0eWxlOyBibHVlIGJveC5cbiAgICovXG4gIEBJbnB1dCgpIHNlY29uZGFyeTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQm9vbGVhbiB0byBzZXQgbGlnaHQgc3R5bGU7IHdoaXRlIGJveC5cbiAgICovXG4gIEBJbnB1dCgpIGxpZ2h0OiBib29sZWFuO1xuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBCb29sZWFuIHRvIHNldCB0cmFuc3BhcmVudCBzdHlsZS4gQm94IHdpbGwgYmUgaW52aXNpYmxlLCBidXQgaW5jbHVkZSBkaXNwbGF5IHByb3BlcnRpZXMgYXMgcGFkZGluZywgbWFyZ2lucyBldGMuXG4gICAqL1xuICBASW5wdXQoKSB0cmFuc3BhcmVudDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQm9vbGVhbiB0byBnaXZlIGNvbnRlbnQgb2YgYm94IGNlbnRlciBhbGlnbmVtZW50LlxuICAgKi9cbiAgQElucHV0KCkgY2VudGVyOiBib29sZWFuO1xuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBCb29sZWFuIHRvIHJlbW92ZSBhbGwgcGFkZGluZyBpbnNpZGUgdGhlIGJveC5cbiAgICovXG4gIEBJbnB1dCgpIG5vcGFkZGluZzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQm9vbGVhbiB0byByZW1vdmUgYWxsIG1hcmdpbnMgYXJvdW5kIHRoZSBib3guXG4gICAqL1xuICBASW5wdXQoKSBub21hcmdpbjogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQm9vbGVhbiB0byBzZXQgMTAwJSBoZWlnaHQgb2YgYm94LlxuICAgKi9cbiAgQElucHV0KCkgc3RyZXRjaDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQm9vbGVhbiB0byBzZXQgZ3JleSBzdHlsZS5cbiAgICovXG4gIEBJbnB1dCgpIGdyZXk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudCBhIGJveCBjb21wb25lbnQuXG4gICAqIFdpbGwgaW5pdGlhdGUgY29ycmVjdCBibG9jayBzdHlsZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCduYXMtYm94Jyk7XG4gIH1cblxuICBnZXRNb2RpZmllcnMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMuZXhpc3RzKHRoaXMub3V0bGluZWQpICYmICdvdXRsaW5lZCcsXG4gICAgICB0aGlzLmV4aXN0cyh0aGlzLmxpZ2h0KSAmJiAnbGlnaHQnLFxuICAgICAgdGhpcy5leGlzdHModGhpcy50cmFuc3BhcmVudCkgJiYgJ3RyYW5zcGFyZW50JyxcbiAgICAgIHRoaXMuZXhpc3RzKHRoaXMuY2VudGVyKSAmJiAnY2VudGVyJyxcbiAgICAgIHRoaXMuZXhpc3RzKHRoaXMubm9wYWRkaW5nKSAmJiAnbm9wYWRkaW5nJyxcbiAgICAgIHRoaXMuZXhpc3RzKHRoaXMubm9tYXJnaW4pICYmICdub21hcmdpbicsXG4gICAgICB0aGlzLmV4aXN0cyh0aGlzLnN0cmV0Y2gpICYmICdzdHJldGNoJyxcbiAgICAgIHRoaXMuZXhpc3RzKHRoaXMucHJpbWFyeSkgJiYgJ3ByaW1hcnknLFxuICAgICAgdGhpcy5leGlzdHModGhpcy5zZWNvbmRhcnkpICYmICdzZWNvbmRhcnknLFxuICAgICAgdGhpcy5leGlzdHModGhpcy5ncmV5KSAmJiAnZ3JleSdcbiAgICBdO1xuICB9XG5cbiAgZ2V0Q2xhc3NlcyhlbGVtZW50Pzogc3RyaW5nLCBtb2RpZmllcnM/OiBhbnkpOiBBcnJheTxDbGFzc01vZGVsPiB7XG4gICAgY29uc3QgY2xhc3NlczogQXJyYXk8Q2xhc3NNb2RlbD4gPSBbXG4gICAgICB0aGlzLmdldENsYXNzKGVsZW1lbnQsIG1vZGlmaWVycylcbiAgICBdO1xuICAgIHJldHVybiBjbGFzc2VzO1xuICB9XG59XG4iLCI8ZGl2IFtuYXNDbGFzc109XCJnZXRDbGFzc2VzKCcnLCBnZXRNb2RpZmllcnMoKSlcIj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=