valtech-components 4.0.6 → 4.0.7
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.
- package/esm2022/lib/components/atoms/box/box.component.mjs +3 -3
- package/esm2022/lib/components/atoms/fab/fab.component.mjs +5 -1
- package/esm2022/lib/components/atoms/fab/types.mjs +1 -1
- package/esm2022/lib/components/molecules/action-card/action-card.component.mjs +5 -5
- package/esm2022/lib/components/molecules/article-card/article-card.component.mjs +5 -5
- package/esm2022/lib/components/molecules/comment/comment.component.mjs +3 -3
- package/esm2022/lib/components/molecules/expandable-text/expandable-text.component.mjs +16 -4
- package/esm2022/lib/components/molecules/footer-links/footer-links.component.mjs +25 -5
- package/esm2022/lib/components/molecules/glow-card/glow-card.component.mjs +13 -3
- package/esm2022/lib/components/molecules/number-stepper/number-stepper.component.mjs +9 -13
- package/esm2022/lib/components/molecules/plain-code-box/plain-code-box.component.mjs +17 -5
- package/esm2022/lib/components/organisms/auth-cta/auth-cta.component.mjs +3 -3
- package/esm2022/lib/components/organisms/avatar-upload/avatar-upload.component.mjs +3 -3
- package/esm2022/lib/components/organisms/bottom-nav/bottom-nav.component.mjs +5 -5
- package/esm2022/lib/components/organisms/data-table/data-table.component.mjs +12 -8
- package/esm2022/lib/components/organisms/infinite-list/infinite-list.component.mjs +31 -13
- package/esm2022/lib/components/organisms/login/login.component.mjs +3 -3
- package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +73 -17
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +215 -83
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/fab/types.d.ts +4 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -159,7 +159,7 @@ export class DataTableComponent {
|
|
|
159
159
|
}
|
|
160
160
|
/** Get actions column label */
|
|
161
161
|
getActionsLabel() {
|
|
162
|
-
return this.props.actionsLabel || this.i18n.t('actions');
|
|
162
|
+
return this.props.actionsLabel || this.i18n.t('actions') || 'Acciones';
|
|
163
163
|
}
|
|
164
164
|
/** Get pagination info text */
|
|
165
165
|
getPaginationInfoText() {
|
|
@@ -171,19 +171,19 @@ export class DataTableComponent {
|
|
|
171
171
|
}
|
|
172
172
|
/** Get first page aria label */
|
|
173
173
|
getFirstPageLabel() {
|
|
174
|
-
return this.i18n.t('firstPage');
|
|
174
|
+
return this.i18n.t('firstPage') || 'Primera página';
|
|
175
175
|
}
|
|
176
176
|
/** Get previous page aria label */
|
|
177
177
|
getPreviousPageLabel() {
|
|
178
|
-
return this.i18n.t('previousPage');
|
|
178
|
+
return this.i18n.t('previousPage') || 'Página anterior';
|
|
179
179
|
}
|
|
180
180
|
/** Get next page aria label */
|
|
181
181
|
getNextPageLabel() {
|
|
182
|
-
return this.i18n.t('nextPage');
|
|
182
|
+
return this.i18n.t('nextPage') || 'Página siguiente';
|
|
183
183
|
}
|
|
184
184
|
/** Get last page aria label */
|
|
185
185
|
getLastPageLabel() {
|
|
186
|
-
return this.i18n.t('lastPage');
|
|
186
|
+
return this.i18n.t('lastPage') || 'Última página';
|
|
187
187
|
}
|
|
188
188
|
get pageSizeOptions() {
|
|
189
189
|
return this.props.pagination?.pageSizeOptions || DEFAULT_PAGE_SIZE_OPTIONS;
|
|
@@ -435,7 +435,7 @@ export class DataTableComponent {
|
|
|
435
435
|
</th>
|
|
436
436
|
}
|
|
437
437
|
@if (props.showSelectionColumn && props.selection?.mode === 'single') {
|
|
438
|
-
<th class="selection-cell"></th>
|
|
438
|
+
<th class="selection-cell" scope="col" aria-label="Selección"></th>
|
|
439
439
|
}
|
|
440
440
|
|
|
441
441
|
<!-- Row number column -->
|
|
@@ -464,10 +464,12 @@ export class DataTableComponent {
|
|
|
464
464
|
<span class="sort-icons">
|
|
465
465
|
<ion-icon
|
|
466
466
|
name="chevron-up-outline"
|
|
467
|
+
aria-hidden="true"
|
|
467
468
|
[class.active]="currentSort?.column === column.key && currentSort?.direction === 'asc'"
|
|
468
469
|
></ion-icon>
|
|
469
470
|
<ion-icon
|
|
470
471
|
name="chevron-down-outline"
|
|
472
|
+
aria-hidden="true"
|
|
471
473
|
[class.active]="currentSort?.column === column.key && currentSort?.direction === 'desc'"
|
|
472
474
|
></ion-icon>
|
|
473
475
|
</span>
|
|
@@ -792,7 +794,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
792
794
|
</th>
|
|
793
795
|
}
|
|
794
796
|
@if (props.showSelectionColumn && props.selection?.mode === 'single') {
|
|
795
|
-
<th class="selection-cell"></th>
|
|
797
|
+
<th class="selection-cell" scope="col" aria-label="Selección"></th>
|
|
796
798
|
}
|
|
797
799
|
|
|
798
800
|
<!-- Row number column -->
|
|
@@ -821,10 +823,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
821
823
|
<span class="sort-icons">
|
|
822
824
|
<ion-icon
|
|
823
825
|
name="chevron-up-outline"
|
|
826
|
+
aria-hidden="true"
|
|
824
827
|
[class.active]="currentSort?.column === column.key && currentSort?.direction === 'asc'"
|
|
825
828
|
></ion-icon>
|
|
826
829
|
<ion-icon
|
|
827
830
|
name="chevron-down-outline"
|
|
831
|
+
aria-hidden="true"
|
|
828
832
|
[class.active]="currentSort?.column === column.key && currentSort?.direction === 'desc'"
|
|
829
833
|
></ion-icon>
|
|
830
834
|
</span>
|
|
@@ -1097,4 +1101,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
1097
1101
|
}], pageChange: [{
|
|
1098
1102
|
type: Output
|
|
1099
1103
|
}] } });
|
|
1100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBSVosTUFBTSxFQUNOLHVCQUF1QixFQUN2QixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQixlQUFlLEdBQ2hCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFTTCx5QkFBeUIsR0FDMUIsTUFBTSxTQUFTLENBQUM7OztBQUVqQixRQUFRLENBQUM7SUFDUCxnQkFBZ0I7SUFDaEIsa0JBQWtCO0lBQ2xCLGtCQUFrQjtJQUNsQixxQkFBcUI7SUFDckIsZUFBZTtDQUNoQixDQUFDLENBQUM7QUEyV0g7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBDRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFwWi9CO1FBdVpZLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpV1Q7OEJBK0NRLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkluaXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgaW5qZWN0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkljb24sIElvbkNoZWNrYm94LCBJb25TcGlubmVyLCBJb25TZWxlY3QsIElvblNlbGVjdE9wdGlvbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQge1xuICBjaGV2cm9uVXBPdXRsaW5lLFxuICBjaGV2cm9uRG93bk91dGxpbmUsXG4gIGNoZXZyb25CYWNrT3V0bGluZSxcbiAgY2hldnJvbkZvcndhcmRPdXRsaW5lLFxuICBkb2N1bWVudE91dGxpbmUsXG59IGZyb20gJ2lvbmljb25zL2ljb25zJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQge1xuICBEYXRhVGFibGVNZXRhZGF0YSxcbiAgRGF0YVRhYmxlQ29sdW1uLFxuICBEYXRhVGFibGVTb3J0LFxuICBEYXRhVGFibGVSb3dDbGlja0V2ZW50LFxuICBEYXRhVGFibGVTZWxlY3Rpb25DaGFuZ2VFdmVudCxcbiAgRGF0YVRhYmxlU29ydENoYW5nZUV2ZW50LFxuICBEYXRhVGFibGVQYWdlQ2hhbmdlRXZlbnQsXG4gIERhdGFUYWJsZUVtcHR5U3RhdGUsXG4gIERFRkFVTFRfUEFHRV9TSVpFX09QVElPTlMsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5hZGRJY29ucyh7XG4gIGNoZXZyb25VcE91dGxpbmUsXG4gIGNoZXZyb25Eb3duT3V0bGluZSxcbiAgY2hldnJvbkJhY2tPdXRsaW5lLFxuICBjaGV2cm9uRm9yd2FyZE91dGxpbmUsXG4gIGRvY3VtZW50T3V0bGluZSxcbn0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtZGF0YS10YWJsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgSW9uQnV0dG9uLCBJb25JY29uLCBJb25DaGVja2JveCwgSW9uU3Bpbm5lciwgSW9uU2VsZWN0LCBJb25TZWxlY3RPcHRpb25dLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZGF0YS10YWJsZS1jb250YWluZXJcIlxuICAgICAgW2NsYXNzXT1cInByb3BzLmNzc0NsYXNzXCJcbiAgICAgIFtjbGFzcy5zaXplLXNtYWxsXT1cInByb3BzLnNpemUgPT09ICdzbWFsbCdcIlxuICAgICAgW2NsYXNzLnNpemUtbWVkaXVtXT1cInByb3BzLnNpemUgPT09ICdtZWRpdW0nIHx8ICFwcm9wcy5zaXplXCJcbiAgICAgIFtjbGFzcy5zaXplLWxhcmdlXT1cInByb3BzLnNpemUgPT09ICdsYXJnZSdcIlxuICAgICAgW2NsYXNzLmJvcmRlcmVkXT1cInByb3BzLmJvcmRlcmVkXCJcbiAgICAgIFtjbGFzcy5zdHJpcGVkXT1cInByb3BzLnN0cmlwZWRcIlxuICAgICAgW2NsYXNzLmhvdmVyYWJsZV09XCJwcm9wcy5ob3ZlcmFibGUgIT09IGZhbHNlXCJcbiAgICAgIFtjbGFzcy5zdGlja3ktaGVhZGVyXT1cInByb3BzLnN0aWNreUhlYWRlclwiXG4gICAgICBbY2xhc3MucmVzcG9uc2l2ZS1jYXJkc109XCJwcm9wcy5yZXNwb25zaXZlTW9kZSA9PT0gJ2NhcmRzJ1wiXG4gICAgICBbY2xhc3MuZWxldmF0aW9uLW5vbmVdPVwicHJvcHMuZWxldmF0aW9uID09PSAnbm9uZSdcIlxuICAgICAgW2NsYXNzLmVsZXZhdGlvbi1sb3ddPVwicHJvcHMuZWxldmF0aW9uID09PSAnbG93J1wiXG4gICAgICBbY2xhc3MuZWxldmF0aW9uLWhpZ2hdPVwicHJvcHMuZWxldmF0aW9uID09PSAnaGlnaCdcIlxuICAgICAgW2NsYXNzLmhlYWRlci1ncmFkaWVudF09XCJwcm9wcy5oZWFkZXJHcmFkaWVudFwiXG4gICAgICBbY2xhc3MuY2hlY2tib3gtY2lyY3VsYXJdPVwicHJvcHMuY2hlY2tib3hTdHlsZSA9PT0gJ2NpcmN1bGFyJ1wiXG4gICAgICBbY2xhc3Mucm93LWhpZ2hsaWdodC1ib3JkZXJdPVwicHJvcHMucm93SGlnaGxpZ2h0U3R5bGUgPT09ICdib3JkZXItbGVmdCdcIlxuICAgICAgW2NsYXNzLnJvdy1oaWdobGlnaHQtYm90aF09XCJwcm9wcy5yb3dIaWdobGlnaHRTdHlsZSA9PT0gJ2JvdGgnXCJcbiAgICAgIFtzdHlsZS4tLW1heC1oZWlnaHRdPVwicHJvcHMubWF4SGVpZ2h0XCJcbiAgICA+XG4gICAgICA8IS0tIFRvb2xiYXIgc2xvdCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10b29sYmFyXCIgI3Rvb2xiYXJDb250YWluZXI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlt0b29sYmFyXVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIExvYWRpbmcgb3ZlcmxheSAtLT5cbiAgICAgIEBpZiAocHJvcHMubG9hZGluZ1N0YXRlPy5sb2FkaW5nKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkaW5nLW92ZXJsYXlcIj5cbiAgICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImNpcmN1bGFyXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJwcm9wcy5sb2FkaW5nU3RhdGU/Lm1lc3NhZ2UgfHwgJ0NhcmdhbmRvJ1wiPjwvaW9uLXNwaW5uZXI+XG4gICAgICAgICAgQGlmIChwcm9wcy5sb2FkaW5nU3RhdGU/Lm1lc3NhZ2UpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibG9hZGluZy1tZXNzYWdlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+e3sgcHJvcHMubG9hZGluZ1N0YXRlLm1lc3NhZ2UgfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXdyYXBwZXJcIiBbY2xhc3MuaXMtbG9hZGluZ109XCJwcm9wcy5sb2FkaW5nU3RhdGU/LmxvYWRpbmdcIj5cbiAgICAgICAgPHRhYmxlIHJvbGU9XCJncmlkXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJwcm9wcy5hcmlhTGFiZWxcIj5cbiAgICAgICAgICBAaWYgKHByb3BzLmNhcHRpb24pIHtcbiAgICAgICAgICAgIDxjYXB0aW9uIGNsYXNzPVwic3Itb25seVwiPlxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIHByb3BzLmNhcHRpb25cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvY2FwdGlvbj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgIDwhLS0gU2VsZWN0aW9uIGNvbHVtbiAtLT5cbiAgICAgICAgICAgICAgQGlmIChwcm9wcy5zaG93U2VsZWN0aW9uQ29sdW1uICYmIHByb3BzLnNlbGVjdGlvbj8ubW9kZSA9PT0gJ211bHRpcGxlJykge1xuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInNlbGVjdGlvbi1jZWxsXCIgc2NvcGU9XCJjb2xcIiBhcmlhLWxhYmVsPVwiU2VsZWNjacOzblwiPlxuICAgICAgICAgICAgICAgICAgPGlvbi1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0FsbFNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaXNJbmRldGVybWluYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGlvbkNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGwoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJTZWxlY2Npb25hciB0b2RvXCJcbiAgICAgICAgICAgICAgICAgID48L2lvbi1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAocHJvcHMuc2hvd1NlbGVjdGlvbkNvbHVtbiAmJiBwcm9wcy5zZWxlY3Rpb24/Lm1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwic2VsZWN0aW9uLWNlbGxcIj48L3RoPlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgPCEtLSBSb3cgbnVtYmVyIGNvbHVtbiAtLT5cbiAgICAgICAgICAgICAgQGlmIChwcm9wcy5zaG93Um93TnVtYmVycykge1xuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInJvdy1udW1iZXItY2VsbFwiPiM8L3RoPlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgPCEtLSBEYXRhIGNvbHVtbnMgLS0+XG4gICAgICAgICAgICAgIEBmb3IgKGNvbHVtbiBvZiB2aXNpYmxlQ29sdW1uczsgdHJhY2sgY29sdW1uLmtleSkge1xuICAgICAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImdldENvbHVtbkNsYXNzKGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi5taW5XaWR0aFwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImNvbHVtbi5tYXhXaWR0aFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3Muc29ydGFibGVdPVwiY29sdW1uLnNvcnRhYmxlXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5zb3J0ZWRdPVwiY3VycmVudFNvcnQ/LmNvbHVtbiA9PT0gY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29sdW1uLnNvcnRhYmxlID8gb25Tb3J0KGNvbHVtbikgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc29ydF09XCJnZXRBcmlhU29ydChjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBAaWYgKGNvbHVtbi5oZWFkZXJUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uLmhlYWRlclRlbXBsYXRlOyBjb250ZXh0OiB7IGNvbHVtbiB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXItY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbHVtbi5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29sdW1uLnNvcnRhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNvcnQtaWNvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImNoZXZyb24tdXAtb3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJjdXJyZW50U29ydD8uY29sdW1uID09PSBjb2x1bW4ua2V5ICYmIGN1cnJlbnRTb3J0Py5kaXJlY3Rpb24gPT09ICdhc2MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJjaGV2cm9uLWRvd24tb3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJjdXJyZW50U29ydD8uY29sdW1uID09PSBjb2x1bW4ua2V5ICYmIGN1cnJlbnRTb3J0Py5kaXJlY3Rpb24gPT09ICdkZXNjJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICA8IS0tIEFjdGlvbnMgY29sdW1uIC0tPlxuICAgICAgICAgICAgICBAaWYgKHByb3BzLmFjdGlvbnNUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImFjdGlvbnMtY2VsbFwiIFtzdHlsZS53aWR0aF09XCJwcm9wcy5hY3Rpb25zV2lkdGggfHwgJzEwMHB4J1wiPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0QWN0aW9uc0xhYmVsKCkgfX1cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGhlYWQ+XG5cbiAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICBAaWYgKGRpc3BsYXllZERhdGEubGVuZ3RoID09PSAwICYmICFwcm9wcy5sb2FkaW5nU3RhdGU/LmxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiZW1wdHktcm93XCI+XG4gICAgICAgICAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwidG90YWxDb2x1bW5zXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChlbXB0eVN0YXRlLnRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVtcHR5U3RhdGUudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChlbXB0eVN0YXRlLmljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJlbXB0eVN0YXRlLmljb25cIiBjbGFzcz1cImVtcHR5LWljb25cIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGVtcHR5U3RhdGUudGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cImVtcHR5LXRpdGxlXCI+e3sgZW1wdHlTdGF0ZS50aXRsZSB9fTwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZW1wdHlTdGF0ZS5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJlbXB0eS1kZXNjcmlwdGlvblwiPnt7IGVtcHR5U3RhdGUuZGVzY3JpcHRpb24gfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIEBmb3IgKHJvdyBvZiBkaXNwbGF5ZWREYXRhOyB0cmFjayB0cmFja0J5Rm4ocm93KTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICA8dHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJpc1Jvd1NlbGVjdGVkKHJvdylcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmNsaWNrYWJsZV09XCJwcm9wcy5yb3dDbGlja2FibGVcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUm93Q2xpY2socm93LCBpLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8IS0tIFNlbGVjdGlvbiBjZWxsIC0tPlxuICAgICAgICAgICAgICAgICAgQGlmIChwcm9wcy5zaG93U2VsZWN0aW9uQ29sdW1uKSB7XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInNlbGVjdGlvbi1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChwcm9wcy5zZWxlY3Rpb24/Lm1vZGUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNSb3dTZWxlY3RlZChyb3cpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGlvbkNoYW5nZSk9XCJ0b2dnbGVSb3dTZWxlY3Rpb24ocm93LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJTZWxlY2Npb25hciBmaWxhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2lvbi1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChwcm9wcy5zZWxlY3Rpb24/Lm1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNSb3dTZWxlY3RlZChyb3cpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFNpbmdsZVJvdyhyb3cpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIDwhLS0gUm93IG51bWJlciAtLT5cbiAgICAgICAgICAgICAgICAgIEBpZiAocHJvcHMuc2hvd1Jvd051bWJlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicm93LW51bWJlci1jZWxsXCI+e3sgZ2V0Um93TnVtYmVyKGkpIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgPCEtLSBEYXRhIGNlbGxzIC0tPlxuICAgICAgICAgICAgICAgICAgQGZvciAoY29sdW1uIG9mIHZpc2libGVDb2x1bW5zOyB0cmFjayBjb2x1bW4ua2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBbY2xhc3NdPVwiZ2V0Q29sdW1uQ2xhc3MoY29sdW1uKVwiIFtzdHlsZS50ZXh0LWFsaWduXT1cImNvbHVtbi5hbGlnblwiPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29sdW1uLmNlbGxUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5jZWxsVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyByb3csIGNvbHVtbiwgdmFsdWU6IGdldENlbGxWYWx1ZShyb3csIGNvbHVtbikgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0Rm9ybWF0dGVkVmFsdWUocm93LCBjb2x1bW4pIH19XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICA8IS0tIEFjdGlvbnMgY2VsbCAtLT5cbiAgICAgICAgICAgICAgICAgIEBpZiAocHJvcHMuYWN0aW9uc1RlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImFjdGlvbnMtY2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvcHMuYWN0aW9uc1RlbXBsYXRlOyBjb250ZXh0OiB7IHJvdywgaW5kZXg6IGkgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gQ2FyZCB2aWV3IChyZXNwb25zaXZlIG1vYmlsZSkgLS0+XG4gICAgICBAaWYgKHByb3BzLnJlc3BvbnNpdmVNb2RlID09PSAnY2FyZHMnKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWxpc3RcIj5cbiAgICAgICAgICBAaWYgKGRpc3BsYXllZERhdGEubGVuZ3RoID09PSAwICYmICFwcm9wcy5sb2FkaW5nU3RhdGU/LmxvYWRpbmcpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZVwiPlxuICAgICAgICAgICAgICBAaWYgKGVtcHR5U3RhdGUuaWNvbikge1xuICAgICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJlbXB0eVN0YXRlLmljb25cIiBjbGFzcz1cImVtcHR5LWljb25cIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoZW1wdHlTdGF0ZS50aXRsZSkge1xuICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cImVtcHR5LXRpdGxlXCI+e3sgZW1wdHlTdGF0ZS50aXRsZSB9fTwvaDQ+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChlbXB0eVN0YXRlLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJlbXB0eS1kZXNjcmlwdGlvblwiPnt7IGVtcHR5U3RhdGUuZGVzY3JpcHRpb24gfX08L3A+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgQGZvciAocm93IG9mIGRpc3BsYXllZERhdGE7IHRyYWNrIHRyYWNrQnlGbihyb3cpOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgICBAaWYgKHByb3BzLm1vYmlsZUNhcmRUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvcHMubW9iaWxlQ2FyZFRlbXBsYXRlOyBjb250ZXh0OiB7IHJvdywgaW5kZXg6IGksIGNvbHVtbnM6IHZpc2libGVDb2x1bW5zIH1cIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWNhcmRcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImlzUm93U2VsZWN0ZWQocm93KVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuY2xpY2thYmxlXT1cInByb3BzLnJvd0NsaWNrYWJsZVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Sb3dDbGljayhyb3csIGksICRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwhLS0gQ2FyZCBoZWFkZXIgd2l0aCBzZWxlY3Rpb24gLS0+XG4gICAgICAgICAgICAgICAgICBAaWYgKHByb3BzLnNob3dTZWxlY3Rpb25Db2x1bW4pIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtc2VsZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHByb3BzLnNlbGVjdGlvbj8ubW9kZSA9PT0gJ211bHRpcGxlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNSb3dTZWxlY3RlZChyb3cpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW9uQ2hhbmdlKT1cInRvZ2dsZVJvd1NlbGVjdGlvbihyb3csICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pb24tY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChwcm9wcy5zZWxlY3Rpb24/Lm1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNSb3dTZWxlY3RlZChyb3cpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0U2luZ2xlUm93KHJvdyk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChwcm9wcy5zaG93Um93TnVtYmVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb3ctbnVtYmVyXCI+e3sgZ2V0Um93TnVtYmVyKGkpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIDwhLS0gQ2FyZCBib2R5IHdpdGggZmllbGRzIC0tPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChjb2x1bW4gb2YgdmlzaWJsZUNvbHVtbnM7IHRyYWNrIGNvbHVtbi5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1maWVsZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWZpZWxkX19sYWJlbFwiPnt7IGNvbHVtbi5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1maWVsZF9fdmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChjb2x1bW4uY2VsbFRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLmNlbGxUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyByb3csIGNvbHVtbiwgdmFsdWU6IGdldENlbGxWYWx1ZShyb3csIGNvbHVtbikgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEZvcm1hdHRlZFZhbHVlKHJvdywgY29sdW1uKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8IS0tIENhcmQgYWN0aW9ucyAtLT5cbiAgICAgICAgICAgICAgICAgIEBpZiAocHJvcHMuYWN0aW9uc1RlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInByb3BzLmFjdGlvbnNUZW1wbGF0ZTsgY29udGV4dDogeyByb3csIGluZGV4OiBpIH1cIlxuICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8IS0tIFBhZ2luYXRpb24gLS0+XG4gICAgICBAaWYgKHByb3BzLnNob3dQYWdpbmF0aW9uICYmIHByb3BzLnBhZ2luYXRpb24pIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2luYXRpb24tY29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2luYXRpb24taW5mb1wiPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIHt7IGdldFBhZ2luYXRpb25JbmZvVGV4dCgpIH19XG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgIEBpZiAocGFnZVNpemVPcHRpb25zLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgPGlvbi1zZWxlY3RcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwicHJvcHMucGFnaW5hdGlvbi5wYWdlU2l6ZVwiXG4gICAgICAgICAgICAgICAgKGlvbkNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIGludGVyZmFjZT1cInBvcG92ZXJcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicGFnZS1zaXplLXNlbGVjdFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAZm9yIChzaXplIG9mIHBhZ2VTaXplT3B0aW9uczsgdHJhY2sgc2l6ZSkge1xuICAgICAgICAgICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uIFt2YWx1ZV09XCJzaXplXCI+e3sgZ2V0UGVyUGFnZVRleHQoc2l6ZSkgfX08L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9pb24tc2VsZWN0PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2luYXRpb24tY29udHJvbHNcIj5cbiAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwcm9wcy5wYWdpbmF0aW9uLnBhZ2UgPT09IDBcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1BhZ2UoMClcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImdldEZpcnN0UGFnZUxhYmVsKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJjaGV2cm9uLWJhY2stb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImNoZXZyb24tYmFjay1vdXRsaW5lXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTEycHhcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJvcHMucGFnaW5hdGlvbi5wYWdlID09PSAwXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKHByb3BzLnBhZ2luYXRpb24ucGFnZSAtIDEpXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRQcmV2aW91c1BhZ2VMYWJlbCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiY2hldnJvbi1iYWNrLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhZ2UtaW5kaWNhdG9yXCI+IHt7IHByb3BzLnBhZ2luYXRpb24ucGFnZSArIDEgfX0gLyB7eyB0b3RhbFBhZ2VzIH19IDwvc3Bhbj5cblxuICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByb3BzLnBhZ2luYXRpb24ucGFnZSA+PSB0b3RhbFBhZ2VzIC0gMVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJnb1RvUGFnZShwcm9wcy5wYWdpbmF0aW9uLnBhZ2UgKyAxKVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0TmV4dFBhZ2VMYWJlbCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiY2hldnJvbi1mb3J3YXJkLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJvcHMucGFnaW5hdGlvbi5wYWdlID49IHRvdGFsUGFnZXMgLSAxXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKHRvdGFsUGFnZXMgLSAxKVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0TGFzdFBhZ2VMYWJlbCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiY2hldnJvbi1mb3J3YXJkLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJjaGV2cm9uLWZvcndhcmQtb3V0bGluZVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC0xMnB4XCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2RhdGEtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1kYXRhLXRhYmxlXG4gKlxuICogQSBmbGV4aWJsZSBkYXRhIHRhYmxlIGNvbXBvbmVudCBmb3IgZGlzcGxheWluZyB0YWJ1bGFyIGRhdGEgd2l0aCBzb3J0aW5nLFxuICogcGFnaW5hdGlvbiwgYW5kIHNlbGVjdGlvbiBmZWF0dXJlcy5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgaHRtbFxuICogPHZhbC1kYXRhLXRhYmxlXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgY29sdW1uczogW1xuICogICAgICAgeyBrZXk6ICduYW1lJywgbGFiZWw6ICdOb21icmUnLCBzb3J0YWJsZTogdHJ1ZSB9LFxuICogICAgICAgeyBrZXk6ICdlbWFpbCcsIGxhYmVsOiAnRW1haWwnIH0sXG4gKiAgICAgICB7IGtleTogJ3N0YXR1cycsIGxhYmVsOiAnRXN0YWRvJyB9XG4gKiAgICAgXSxcbiAqICAgICBkYXRhOiB1c2Vyc1xuICogICB9XCJcbiAqID48L3ZhbC1kYXRhLXRhYmxlPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgV2l0aCBwYWdpbmF0aW9uIGFuZCBzZWxlY3Rpb25cbiAqIGBgYGh0bWxcbiAqIDx2YWwtZGF0YS10YWJsZVxuICogICBbcHJvcHNdPVwie1xuICogICAgIGNvbHVtbnM6IGNvbHVtbnMsXG4gKiAgICAgZGF0YTogcGFydGljaXBhbnRzLFxuICogICAgIHNob3dQYWdpbmF0aW9uOiB0cnVlLFxuICogICAgIHBhZ2luYXRpb246IHtcbiAqICAgICAgIHBhZ2U6IDAsXG4gKiAgICAgICBwYWdlU2l6ZTogMjUsXG4gKiAgICAgICB0b3RhbDogdG90YWxDb3VudFxuICogICAgIH0sXG4gKiAgICAgc2VsZWN0aW9uOiB7XG4gKiAgICAgICBtb2RlOiAnbXVsdGlwbGUnLFxuICogICAgICAgc2VsZWN0ZWQ6IHNlbGVjdGVkUGFydGljaXBhbnRzXG4gKiAgICAgfSxcbiAqICAgICBzaG93U2VsZWN0aW9uQ29sdW1uOiB0cnVlXG4gKiAgIH1cIlxuICogICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICogICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gKiA+PC92YWwtZGF0YS10YWJsZT5cbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgRGF0YVRhYmxlQ29tcG9uZW50PFQgPSBhbnk+IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBwcm9wczogRGF0YVRhYmxlTWV0YWRhdGE8VD47XG5cbiAgQE91dHB1dCgpIHJvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRhVGFibGVSb3dDbGlja0V2ZW50PFQ+PigpO1xuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRhVGFibGVTZWxlY3Rpb25DaGFuZ2VFdmVudDxUPj4oKTtcbiAgQE91dHB1dCgpIHNvcnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGFUYWJsZVNvcnRDaGFuZ2VFdmVudD4oKTtcbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGFUYWJsZVBhZ2VDaGFuZ2VFdmVudD4oKTtcblxuICBkaXNwbGF5ZWREYXRhOiBUW10gPSBbXTtcbiAgY3VycmVudFNvcnQ6IERhdGFUYWJsZVNvcnQgfCBudWxsID0gbnVsbDtcbiAgc2VsZWN0ZWRSb3dzOiBTZXQ8YW55PiA9IG5ldyBTZXQoKTtcblxuICAvKiogQ2FjaGVkIHZpc2libGUgY29sdW1ucyBmb3IgcGVyZm9ybWFuY2UgKi9cbiAgcHJpdmF0ZSBfdmlzaWJsZUNvbHVtbnM6IERhdGFUYWJsZUNvbHVtbjxUPltdID0gW107XG5cbiAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbGl6ZVN0YXRlKCk7XG4gICAgdGhpcy51cGRhdGVEaXNwbGF5ZWREYXRhKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3Byb3BzJ10pIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVN0YXRlKCk7XG4gICAgICB0aGlzLnVwZGF0ZURpc3BsYXllZERhdGEoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVTdGF0ZSgpOiB2b2lkIHtcbiAgICAvLyBDYWNoZSB2aXNpYmxlIGNvbHVtbnMgZm9yIHBlcmZvcm1hbmNlXG4gICAgdGhpcy5fdmlzaWJsZUNvbHVtbnMgPSB0aGlzLnByb3BzLmNvbHVtbnMuZmlsdGVyKGMgPT4gYy52aXNpYmxlICE9PSBmYWxzZSk7XG5cbiAgICAvLyBJbml0aWFsaXplIHNvcnRcbiAgICB0aGlzLmN1cnJlbnRTb3J0ID0gdGhpcy5wcm9wcy5zb3J0IHx8IG51bGw7XG5cbiAgICAvLyBJbml0aWFsaXplIHNlbGVjdGlvblxuICAgIGlmICh0aGlzLnByb3BzLnNlbGVjdGlvbj8uc2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gbmV3IFNldCh0aGlzLnByb3BzLnNlbGVjdGlvbi5zZWxlY3RlZC5tYXAocm93ID0+IHRoaXMuZ2V0Um93SWQocm93KSkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRGlzcGxheWVkRGF0YSgpOiB2b2lkIHtcbiAgICBsZXQgZGF0YSA9IFsuLi50aGlzLnByb3BzLmRhdGFdO1xuXG4gICAgLy8gQXBwbHkgY2xpZW50LXNpZGUgc29ydGluZ1xuICAgIGlmICh0aGlzLnByb3BzLmNsaWVudFNvcnQgJiYgdGhpcy5jdXJyZW50U29ydCkge1xuICAgICAgZGF0YSA9IHRoaXMuc29ydERhdGEoZGF0YSk7XG4gICAgfVxuXG4gICAgLy8gQXBwbHkgY2xpZW50LXNpZGUgcGFnaW5hdGlvblxuICAgIGlmICh0aGlzLnByb3BzLmNsaWVudFBhZ2luYXRpb24gJiYgdGhpcy5wcm9wcy5wYWdpbmF0aW9uKSB7XG4gICAgICBjb25zdCBzdGFydCA9IHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlICogdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2VTaXplO1xuICAgICAgY29uc3QgZW5kID0gc3RhcnQgKyB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZVNpemU7XG4gICAgICBkYXRhID0gZGF0YS5zbGljZShzdGFydCwgZW5kKTtcbiAgICB9XG5cbiAgICB0aGlzLmRpc3BsYXllZERhdGEgPSBkYXRhO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0RGF0YShkYXRhOiBUW10pOiBUW10ge1xuICAgIGlmICghdGhpcy5jdXJyZW50U29ydCkgcmV0dXJuIGRhdGE7XG5cbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLnByb3BzLmNvbHVtbnMuZmluZChjID0+IGMua2V5ID09PSB0aGlzLmN1cnJlbnRTb3J0Py5jb2x1bW4pO1xuICAgIGlmICghY29sdW1uKSByZXR1cm4gZGF0YTtcblxuICAgIHJldHVybiBbLi4uZGF0YV0uc29ydCgoYSwgYikgPT4ge1xuICAgICAgaWYgKGNvbHVtbi5zb3J0Rm4pIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gY29sdW1uLnNvcnRGbihhLCBiKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFNvcnQ/LmRpcmVjdGlvbiA9PT0gJ2Rlc2MnID8gLXJlc3VsdCA6IHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdmFsdWVBID0gdGhpcy5nZXRDZWxsVmFsdWUoYSwgY29sdW1uKTtcbiAgICAgIGNvbnN0IHZhbHVlQiA9IHRoaXMuZ2V0Q2VsbFZhbHVlKGIsIGNvbHVtbik7XG5cbiAgICAgIGxldCBjb21wYXJpc29uID0gMDtcbiAgICAgIGlmICh2YWx1ZUEgPT0gbnVsbCAmJiB2YWx1ZUIgPT0gbnVsbCkgY29tcGFyaXNvbiA9IDA7XG4gICAgICBlbHNlIGlmICh2YWx1ZUEgPT0gbnVsbCkgY29tcGFyaXNvbiA9IDE7XG4gICAgICBlbHNlIGlmICh2YWx1ZUIgPT0gbnVsbCkgY29tcGFyaXNvbiA9IC0xO1xuICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlQSA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIHZhbHVlQiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29tcGFyaXNvbiA9IHZhbHVlQS5sb2NhbGVDb21wYXJlKHZhbHVlQik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb21wYXJpc29uID0gdmFsdWVBIDwgdmFsdWVCID8gLTEgOiB2YWx1ZUEgPiB2YWx1ZUIgPyAxIDogMDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFNvcnQ/LmRpcmVjdGlvbiA9PT0gJ2Rlc2MnID8gLWNvbXBhcmlzb24gOiBjb21wYXJpc29uO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHZpc2libGVDb2x1bW5zKCk6IERhdGFUYWJsZUNvbHVtbjxUPltdIHtcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZUNvbHVtbnM7XG4gIH1cblxuICBnZXQgdG90YWxDb2x1bW5zKCk6IG51bWJlciB7XG4gICAgbGV0IGNvdW50ID0gdGhpcy52aXNpYmxlQ29sdW1ucy5sZW5ndGg7XG4gICAgaWYgKHRoaXMucHJvcHMuc2hvd1NlbGVjdGlvbkNvbHVtbikgY291bnQrKztcbiAgICBpZiAodGhpcy5wcm9wcy5zaG93Um93TnVtYmVycykgY291bnQrKztcbiAgICBpZiAodGhpcy5wcm9wcy5hY3Rpb25zVGVtcGxhdGUpIGNvdW50Kys7XG4gICAgcmV0dXJuIGNvdW50O1xuICB9XG5cbiAgZ2V0IGVtcHR5U3RhdGUoKTogRGF0YVRhYmxlRW1wdHlTdGF0ZSB7XG4gICAgY29uc3QgZGVmYXVsdEVtcHR5U3RhdGU6IERhdGFUYWJsZUVtcHR5U3RhdGUgPSB7XG4gICAgICBpY29uOiAnZG9jdW1lbnQtb3V0bGluZScsXG4gICAgICB0aXRsZTogdGhpcy5pMThuLnQoJ25vRGF0YScpLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuaTE4bi50KCdub1JlY29yZHNGb3VuZCcpLFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuZW1wdHlTdGF0ZSB8fCBkZWZhdWx0RW1wdHlTdGF0ZTtcbiAgfVxuXG4gIC8qKiBHZXQgYWN0aW9ucyBjb2x1bW4gbGFiZWwgKi9cbiAgZ2V0QWN0aW9uc0xhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuYWN0aW9uc0xhYmVsIHx8IHRoaXMuaTE4bi50KCdhY3Rpb25zJyk7XG4gIH1cblxuICAvKiogR2V0IHBhZ2luYXRpb24gaW5mbyB0ZXh0ICovXG4gIGdldFBhZ2luYXRpb25JbmZvVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmkxOG4udCgnc2hvd2luZycpfSAke3RoaXMucGFnaW5hdGlvblN0YXJ0fS0ke3RoaXMucGFnaW5hdGlvbkVuZH0gJHt0aGlzLmkxOG4udCgnb2YnKX0gJHt0aGlzLnByb3BzLnBhZ2luYXRpb24/LnRvdGFsfWA7XG4gIH1cblxuICAvKiogR2V0IHBlciBwYWdlIHRleHQgKi9cbiAgZ2V0UGVyUGFnZVRleHQoc2l6ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7c2l6ZX0gJHt0aGlzLmkxOG4udCgncGVyUGFnZScpfWA7XG4gIH1cblxuICAvKiogR2V0IGZpcnN0IHBhZ2UgYXJpYSBsYWJlbCAqL1xuICBnZXRGaXJzdFBhZ2VMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udCgnZmlyc3RQYWdlJyk7XG4gIH1cblxuICAvKiogR2V0IHByZXZpb3VzIHBhZ2UgYXJpYSBsYWJlbCAqL1xuICBnZXRQcmV2aW91c1BhZ2VMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udCgncHJldmlvdXNQYWdlJyk7XG4gIH1cblxuICAvKiogR2V0IG5leHQgcGFnZSBhcmlhIGxhYmVsICovXG4gIGdldE5leHRQYWdlTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoJ25leHRQYWdlJyk7XG4gIH1cblxuICAvKiogR2V0IGxhc3QgcGFnZSBhcmlhIGxhYmVsICovXG4gIGdldExhc3RQYWdlTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoJ2xhc3RQYWdlJyk7XG4gIH1cblxuICBnZXQgcGFnZVNpemVPcHRpb25zKCk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5wYWdpbmF0aW9uPy5wYWdlU2l6ZU9wdGlvbnMgfHwgREVGQVVMVF9QQUdFX1NJWkVfT1BUSU9OUztcbiAgfVxuXG4gIGdldCB0b3RhbFBhZ2VzKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnByb3BzLnBhZ2luYXRpb24pIHJldHVybiAxO1xuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy5wcm9wcy5wYWdpbmF0aW9uLnRvdGFsIC8gdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2VTaXplKTtcbiAgfVxuXG4gIGdldCBwYWdpbmF0aW9uU3RhcnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMucHJvcHMucGFnaW5hdGlvbikgcmV0dXJuIDE7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlICogdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2VTaXplICsgMTtcbiAgfVxuXG4gIGdldCBwYWdpbmF0aW9uRW5kKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnByb3BzLnBhZ2luYXRpb24pIHJldHVybiB0aGlzLmRpc3BsYXllZERhdGEubGVuZ3RoO1xuICAgIHJldHVybiBNYXRoLm1pbigodGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2UgKyAxKSAqIHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlU2l6ZSwgdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnRvdGFsKTtcbiAgfVxuXG4gIGdldCBpc0FsbFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmRpc3BsYXllZERhdGEubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheWVkRGF0YS5ldmVyeShyb3cgPT4gdGhpcy5pc1Jvd1NlbGVjdGVkKHJvdykpO1xuICB9XG5cbiAgZ2V0IGlzSW5kZXRlcm1pbmF0ZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBzZWxlY3RlZENvdW50ID0gdGhpcy5kaXNwbGF5ZWREYXRhLmZpbHRlcihyb3cgPT4gdGhpcy5pc1Jvd1NlbGVjdGVkKHJvdykpLmxlbmd0aDtcbiAgICByZXR1cm4gc2VsZWN0ZWRDb3VudCA+IDAgJiYgc2VsZWN0ZWRDb3VudCA8IHRoaXMuZGlzcGxheWVkRGF0YS5sZW5ndGg7XG4gIH1cblxuICBnZXRDZWxsVmFsdWUocm93OiBULCBjb2x1bW46IERhdGFUYWJsZUNvbHVtbjxUPik6IGFueSB7XG4gICAgY29uc3QgZmllbGQgPSBjb2x1bW4uZmllbGQgfHwgY29sdW1uLmtleTtcbiAgICByZXR1cm4gZmllbGQuc3BsaXQoJy4nKS5yZWR1Y2UoKG9iajogYW55LCBrZXkpID0+IG9iaj8uW2tleV0sIHJvdyk7XG4gIH1cblxuICBnZXRGb3JtYXR0ZWRWYWx1ZShyb3c6IFQsIGNvbHVtbjogRGF0YVRhYmxlQ29sdW1uPFQ+KTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0Q2VsbFZhbHVlKHJvdywgY29sdW1uKTtcbiAgICBpZiAoY29sdW1uLmZvcm1hdCkge1xuICAgICAgcmV0dXJuIGNvbHVtbi5mb3JtYXQodmFsdWUsIHJvdyk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZSA/PyAnJztcbiAgfVxuXG4gIGdldENvbHVtbkNsYXNzKGNvbHVtbjogRGF0YVRhYmxlQ29sdW1uPFQ+KTogc3RyaW5nIHtcbiAgICBjb25zdCBjbGFzc2VzID0gW2NvbHVtbi5jc3NDbGFzcyB8fCAnJ107XG4gICAgaWYgKGNvbHVtbi5zdGlja3kpIHtcbiAgICAgIGNsYXNzZXMucHVzaChgc3RpY2t5LSR7Y29sdW1uLnN0aWNreX1gKTtcbiAgICB9XG4gICAgaWYgKGNvbHVtbi5hbGlnbikge1xuICAgICAgY2xhc3Nlcy5wdXNoKGBhbGlnbi0ke2NvbHVtbi5hbGlnbn1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGNsYXNzZXMuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKTtcbiAgfVxuXG4gIGdldEFyaWFTb3J0KGNvbHVtbjogRGF0YVRhYmxlQ29sdW1uPFQ+KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKCFjb2x1bW4uc29ydGFibGUpIHJldHVybiBudWxsO1xuICAgIGlmICh0aGlzLmN1cnJlbnRTb3J0Py5jb2x1bW4gIT09IGNvbHVtbi5rZXkpIHJldHVybiAnbm9uZSc7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFNvcnQuZGlyZWN0aW9uID09PSAnYXNjJyA/ICdhc2NlbmRpbmcnIDogJ2Rlc2NlbmRpbmcnO1xuICB9XG5cbiAgZ2V0Um93TnVtYmVyKGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5wcm9wcy5yb3dOdW1iZXJTdGFydCA/PyAxO1xuICAgIGlmICh0aGlzLnByb3BzLnBhZ2luYXRpb24pIHtcbiAgICAgIHJldHVybiBzdGFydCArIHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlICogdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2VTaXplICsgaW5kZXg7XG4gICAgfVxuICAgIHJldHVybiBzdGFydCArIGluZGV4O1xuICB9XG5cbiAgZ2V0Um93SWQocm93OiBUKTogYW55IHtcbiAgICBpZiAodGhpcy5wcm9wcy5zZWxlY3Rpb24/LnRyYWNrQnkpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLnNlbGVjdGlvbi50cmFja0J5KHJvdyk7XG4gICAgfVxuICAgIHJldHVybiByb3c7XG4gIH1cblxuICB0cmFja0J5Rm4ocm93OiBUKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5nZXRSb3dJZChyb3cpO1xuICB9XG5cbiAgaXNSb3dTZWxlY3RlZChyb3c6IFQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJvd3MuaGFzKHRoaXMuZ2V0Um93SWQocm93KSk7XG4gIH1cblxuICBvblNvcnQoY29sdW1uOiBEYXRhVGFibGVDb2x1bW48VD4pOiB2b2lkIHtcbiAgICBpZiAoIWNvbHVtbi5zb3J0YWJsZSkgcmV0dXJuO1xuXG4gICAgbGV0IGRpcmVjdGlvbjogJ2FzYycgfCAnZGVzYycgfCBudWxsID0gJ2FzYyc7XG5cbiAgICBpZiAodGhpcy5jdXJyZW50U29ydD8uY29sdW1uID09PSBjb2x1bW4ua2V5KSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50U29ydC5kaXJlY3Rpb24gPT09ICdhc2MnKSB7XG4gICAgICAgIGRpcmVjdGlvbiA9ICdkZXNjJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpcmVjdGlvbiA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRpcmVjdGlvbikge1xuICAgICAgdGhpcy5jdXJyZW50U29ydCA9IHsgY29sdW1uOiBjb2x1bW4ua2V5LCBkaXJlY3Rpb24gfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50U29ydCA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5zb3J0Q2hhbmdlLmVtaXQoe1xuICAgICAgY29sdW1uOiBjb2x1bW4ua2V5LFxuICAgICAgZGlyZWN0aW9uLFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMucHJvcHMuY2xpZW50U29ydCkge1xuICAgICAgdGhpcy51cGRhdGVEaXNwbGF5ZWREYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgb25Sb3dDbGljayhyb3c6IFQsIGluZGV4OiBudW1iZXIsIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByb3BzLnJvd0NsaWNrYWJsZSkgcmV0dXJuO1xuXG4gICAgdGhpcy5yb3dDbGljay5lbWl0KHtcbiAgICAgIHJvdyxcbiAgICAgIGluZGV4LFxuICAgICAgZXZlbnQsXG4gICAgfSk7XG4gIH1cblxuICB0b2dnbGVTZWxlY3RBbGwoZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgY2hlY2tlZCA9IGV2ZW50LmRldGFpbC5jaGVja2VkO1xuXG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIHRoaXMuZGlzcGxheWVkRGF0YS5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmFkZCh0aGlzLmdldFJvd0lkKHJvdykpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGlzcGxheWVkRGF0YS5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmRlbGV0ZSh0aGlzLmdldFJvd0lkKHJvdykpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlKGNoZWNrZWQgPyAnc2VsZWN0QWxsJyA6ICdkZXNlbGVjdEFsbCcpO1xuICB9XG5cbiAgdG9nZ2xlUm93U2VsZWN0aW9uKHJvdzogVCwgZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qgcm93SWQgPSB0aGlzLmdldFJvd0lkKHJvdyk7XG4gICAgY29uc3QgY2hlY2tlZCA9IGV2ZW50LmRldGFpbC5jaGVja2VkO1xuXG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmFkZChyb3dJZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmRlbGV0ZShyb3dJZCk7XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlKGNoZWNrZWQgPyAnc2VsZWN0JyA6ICdkZXNlbGVjdCcsIHJvdyk7XG4gIH1cblxuICBzZWxlY3RTaW5nbGVSb3cocm93OiBUKTogdm9pZCB7XG4gICAgY29uc3Qgcm93SWQgPSB0aGlzLmdldFJvd0lkKHJvdyk7XG4gICAgY29uc3Qgd2FzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkUm93cy5oYXMocm93SWQpO1xuXG4gICAgdGhpcy5zZWxlY3RlZFJvd3MuY2xlYXIoKTtcblxuICAgIGlmICghd2FzU2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmFkZChyb3dJZCk7XG4gICAgICB0aGlzLmVtaXRTZWxlY3Rpb25DaGFuZ2UoJ3NlbGVjdCcsIHJvdyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZSgnZGVzZWxlY3QnLCByb3cpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZW1pdFNlbGVjdGlvbkNoYW5nZShhY3Rpb246ICdzZWxlY3QnIHwgJ2Rlc2VsZWN0JyB8ICdzZWxlY3RBbGwnIHwgJ2Rlc2VsZWN0QWxsJywgY2hhbmdlZFJvdz86IFQpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMucHJvcHMuZGF0YS5maWx0ZXIocm93ID0+IHRoaXMuaXNSb3dTZWxlY3RlZChyb3cpKTtcblxuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoe1xuICAgICAgc2VsZWN0ZWQsXG4gICAgICBjaGFuZ2VkUm93LFxuICAgICAgYWN0aW9uLFxuICAgIH0pO1xuICB9XG5cbiAgZ29Ub1BhZ2UocGFnZTogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByb3BzLnBhZ2luYXRpb24pIHJldHVybjtcblxuICAgIGNvbnN0IHByZXZpb3VzUGFnZSA9IHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlO1xuICAgIGNvbnN0IG1heFBhZ2UgPSB0aGlzLnRvdGFsUGFnZXMgLSAxO1xuICAgIGNvbnN0IG5ld1BhZ2UgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihwYWdlLCBtYXhQYWdlKSk7XG5cbiAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh7XG4gICAgICBwYWdlOiBuZXdQYWdlLFxuICAgICAgcGFnZVNpemU6IHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlU2l6ZSxcbiAgICAgIHByZXZpb3VzUGFnZSxcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnByb3BzLmNsaWVudFBhZ2luYXRpb24pIHtcbiAgICAgIHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlID0gbmV3UGFnZTtcbiAgICAgIHRoaXMudXBkYXRlRGlzcGxheWVkRGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uUGFnZVNpemVDaGFuZ2UoZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByb3BzLnBhZ2luYXRpb24pIHJldHVybjtcblxuICAgIGNvbnN0IG5ld1BhZ2VTaXplID0gZXZlbnQuZGV0YWlsLnZhbHVlO1xuICAgIGNvbnN0IHByZXZpb3VzUGFnZSA9IHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlO1xuXG4gICAgLy8gUmVjYWxjdWxhdGUgcGFnZSB0byBrZWVwIGZpcnN0IHZpc2libGUgaXRlbVxuICAgIGNvbnN0IGZpcnN0SXRlbSA9IHByZXZpb3VzUGFnZSAqIHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlU2l6ZTtcbiAgICBjb25zdCBuZXdQYWdlID0gTWF0aC5mbG9vcihmaXJzdEl0ZW0gLyBuZXdQYWdlU2l6ZSk7XG5cbiAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh7XG4gICAgICBwYWdlOiBuZXdQYWdlLFxuICAgICAgcGFnZVNpemU6IG5ld1BhZ2VTaXplLFxuICAgICAgcHJldmlvdXNQYWdlLFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMucHJvcHMuY2xpZW50UGFnaW5hdGlvbikge1xuICAgICAgdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2VTaXplID0gbmV3UGFnZVNpemU7XG4gICAgICB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZSA9IG5ld1BhZ2U7XG4gICAgICB0aGlzLnVwZGF0ZURpc3BsYXllZERhdGEoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
1104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBSVosTUFBTSxFQUNOLHVCQUF1QixFQUN2QixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQixlQUFlLEdBQ2hCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFTTCx5QkFBeUIsR0FDMUIsTUFBTSxTQUFTLENBQUM7OztBQUVqQixRQUFRLENBQUM7SUFDUCxnQkFBZ0I7SUFDaEIsa0JBQWtCO0lBQ2xCLGtCQUFrQjtJQUNsQixxQkFBcUI7SUFDckIsZUFBZTtDQUNoQixDQUFDLENBQUM7QUE2V0g7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBDRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUF0Wi9CO1FBeVpZLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtV1Q7OEJBK0NRLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkluaXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgaW5qZWN0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkljb24sIElvbkNoZWNrYm94LCBJb25TcGlubmVyLCBJb25TZWxlY3QsIElvblNlbGVjdE9wdGlvbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQge1xuICBjaGV2cm9uVXBPdXRsaW5lLFxuICBjaGV2cm9uRG93bk91dGxpbmUsXG4gIGNoZXZyb25CYWNrT3V0bGluZSxcbiAgY2hldnJvbkZvcndhcmRPdXRsaW5lLFxuICBkb2N1bWVudE91dGxpbmUsXG59IGZyb20gJ2lvbmljb25zL2ljb25zJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQge1xuICBEYXRhVGFibGVNZXRhZGF0YSxcbiAgRGF0YVRhYmxlQ29sdW1uLFxuICBEYXRhVGFibGVTb3J0LFxuICBEYXRhVGFibGVSb3dDbGlja0V2ZW50LFxuICBEYXRhVGFibGVTZWxlY3Rpb25DaGFuZ2VFdmVudCxcbiAgRGF0YVRhYmxlU29ydENoYW5nZUV2ZW50LFxuICBEYXRhVGFibGVQYWdlQ2hhbmdlRXZlbnQsXG4gIERhdGFUYWJsZUVtcHR5U3RhdGUsXG4gIERFRkFVTFRfUEFHRV9TSVpFX09QVElPTlMsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5hZGRJY29ucyh7XG4gIGNoZXZyb25VcE91dGxpbmUsXG4gIGNoZXZyb25Eb3duT3V0bGluZSxcbiAgY2hldnJvbkJhY2tPdXRsaW5lLFxuICBjaGV2cm9uRm9yd2FyZE91dGxpbmUsXG4gIGRvY3VtZW50T3V0bGluZSxcbn0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtZGF0YS10YWJsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgSW9uQnV0dG9uLCBJb25JY29uLCBJb25DaGVja2JveCwgSW9uU3Bpbm5lciwgSW9uU2VsZWN0LCBJb25TZWxlY3RPcHRpb25dLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZGF0YS10YWJsZS1jb250YWluZXJcIlxuICAgICAgW2NsYXNzXT1cInByb3BzLmNzc0NsYXNzXCJcbiAgICAgIFtjbGFzcy5zaXplLXNtYWxsXT1cInByb3BzLnNpemUgPT09ICdzbWFsbCdcIlxuICAgICAgW2NsYXNzLnNpemUtbWVkaXVtXT1cInByb3BzLnNpemUgPT09ICdtZWRpdW0nIHx8ICFwcm9wcy5zaXplXCJcbiAgICAgIFtjbGFzcy5zaXplLWxhcmdlXT1cInByb3BzLnNpemUgPT09ICdsYXJnZSdcIlxuICAgICAgW2NsYXNzLmJvcmRlcmVkXT1cInByb3BzLmJvcmRlcmVkXCJcbiAgICAgIFtjbGFzcy5zdHJpcGVkXT1cInByb3BzLnN0cmlwZWRcIlxuICAgICAgW2NsYXNzLmhvdmVyYWJsZV09XCJwcm9wcy5ob3ZlcmFibGUgIT09IGZhbHNlXCJcbiAgICAgIFtjbGFzcy5zdGlja3ktaGVhZGVyXT1cInByb3BzLnN0aWNreUhlYWRlclwiXG4gICAgICBbY2xhc3MucmVzcG9uc2l2ZS1jYXJkc109XCJwcm9wcy5yZXNwb25zaXZlTW9kZSA9PT0gJ2NhcmRzJ1wiXG4gICAgICBbY2xhc3MuZWxldmF0aW9uLW5vbmVdPVwicHJvcHMuZWxldmF0aW9uID09PSAnbm9uZSdcIlxuICAgICAgW2NsYXNzLmVsZXZhdGlvbi1sb3ddPVwicHJvcHMuZWxldmF0aW9uID09PSAnbG93J1wiXG4gICAgICBbY2xhc3MuZWxldmF0aW9uLWhpZ2hdPVwicHJvcHMuZWxldmF0aW9uID09PSAnaGlnaCdcIlxuICAgICAgW2NsYXNzLmhlYWRlci1ncmFkaWVudF09XCJwcm9wcy5oZWFkZXJHcmFkaWVudFwiXG4gICAgICBbY2xhc3MuY2hlY2tib3gtY2lyY3VsYXJdPVwicHJvcHMuY2hlY2tib3hTdHlsZSA9PT0gJ2NpcmN1bGFyJ1wiXG4gICAgICBbY2xhc3Mucm93LWhpZ2hsaWdodC1ib3JkZXJdPVwicHJvcHMucm93SGlnaGxpZ2h0U3R5bGUgPT09ICdib3JkZXItbGVmdCdcIlxuICAgICAgW2NsYXNzLnJvdy1oaWdobGlnaHQtYm90aF09XCJwcm9wcy5yb3dIaWdobGlnaHRTdHlsZSA9PT0gJ2JvdGgnXCJcbiAgICAgIFtzdHlsZS4tLW1heC1oZWlnaHRdPVwicHJvcHMubWF4SGVpZ2h0XCJcbiAgICA+XG4gICAgICA8IS0tIFRvb2xiYXIgc2xvdCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10b29sYmFyXCIgI3Rvb2xiYXJDb250YWluZXI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlt0b29sYmFyXVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIExvYWRpbmcgb3ZlcmxheSAtLT5cbiAgICAgIEBpZiAocHJvcHMubG9hZGluZ1N0YXRlPy5sb2FkaW5nKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkaW5nLW92ZXJsYXlcIj5cbiAgICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImNpcmN1bGFyXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJwcm9wcy5sb2FkaW5nU3RhdGU/Lm1lc3NhZ2UgfHwgJ0NhcmdhbmRvJ1wiPjwvaW9uLXNwaW5uZXI+XG4gICAgICAgICAgQGlmIChwcm9wcy5sb2FkaW5nU3RhdGU/Lm1lc3NhZ2UpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibG9hZGluZy1tZXNzYWdlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+e3sgcHJvcHMubG9hZGluZ1N0YXRlLm1lc3NhZ2UgfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXdyYXBwZXJcIiBbY2xhc3MuaXMtbG9hZGluZ109XCJwcm9wcy5sb2FkaW5nU3RhdGU/LmxvYWRpbmdcIj5cbiAgICAgICAgPHRhYmxlIHJvbGU9XCJncmlkXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJwcm9wcy5hcmlhTGFiZWxcIj5cbiAgICAgICAgICBAaWYgKHByb3BzLmNhcHRpb24pIHtcbiAgICAgICAgICAgIDxjYXB0aW9uIGNsYXNzPVwic3Itb25seVwiPlxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIHByb3BzLmNhcHRpb25cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvY2FwdGlvbj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgIDwhLS0gU2VsZWN0aW9uIGNvbHVtbiAtLT5cbiAgICAgICAgICAgICAgQGlmIChwcm9wcy5zaG93U2VsZWN0aW9uQ29sdW1uICYmIHByb3BzLnNlbGVjdGlvbj8ubW9kZSA9PT0gJ211bHRpcGxlJykge1xuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInNlbGVjdGlvbi1jZWxsXCIgc2NvcGU9XCJjb2xcIiBhcmlhLWxhYmVsPVwiU2VsZWNjacOzblwiPlxuICAgICAgICAgICAgICAgICAgPGlvbi1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0FsbFNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaXNJbmRldGVybWluYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGlvbkNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGwoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJTZWxlY2Npb25hciB0b2RvXCJcbiAgICAgICAgICAgICAgICAgID48L2lvbi1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAocHJvcHMuc2hvd1NlbGVjdGlvbkNvbHVtbiAmJiBwcm9wcy5zZWxlY3Rpb24/Lm1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwic2VsZWN0aW9uLWNlbGxcIiBzY29wZT1cImNvbFwiIGFyaWEtbGFiZWw9XCJTZWxlY2Npw7NuXCI+PC90aD5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIDwhLS0gUm93IG51bWJlciBjb2x1bW4gLS0+XG4gICAgICAgICAgICAgIEBpZiAocHJvcHMuc2hvd1Jvd051bWJlcnMpIHtcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJyb3ctbnVtYmVyLWNlbGxcIj4jPC90aD5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIDwhLS0gRGF0YSBjb2x1bW5zIC0tPlxuICAgICAgICAgICAgICBAZm9yIChjb2x1bW4gb2YgdmlzaWJsZUNvbHVtbnM7IHRyYWNrIGNvbHVtbi5rZXkpIHtcbiAgICAgICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJnZXRDb2x1bW5DbGFzcyhjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ubWluV2lkdGhcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ubWF4V2lkdGhcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLnNvcnRhYmxlXT1cImNvbHVtbi5zb3J0YWJsZVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3Muc29ydGVkXT1cImN1cnJlbnRTb3J0Py5jb2x1bW4gPT09IGNvbHVtbi5rZXlcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbHVtbi5zb3J0YWJsZSA/IG9uU29ydChjb2x1bW4pIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNvcnRdPVwiZ2V0QXJpYVNvcnQoY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQGlmIChjb2x1bW4uaGVhZGVyVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5oZWFkZXJUZW1wbGF0ZTsgY29udGV4dDogeyBjb2x1bW4gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGVyLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBjb2x1bW4ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbHVtbi5zb3J0YWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzb3J0LWljb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJjaGV2cm9uLXVwLW91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJjdXJyZW50U29ydD8uY29sdW1uID09PSBjb2x1bW4ua2V5ICYmIGN1cnJlbnRTb3J0Py5kaXJlY3Rpb24gPT09ICdhc2MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJjaGV2cm9uLWRvd24tb3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImN1cnJlbnRTb3J0Py5jb2x1bW4gPT09IGNvbHVtbi5rZXkgJiYgY3VycmVudFNvcnQ/LmRpcmVjdGlvbiA9PT0gJ2Rlc2MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIDwhLS0gQWN0aW9ucyBjb2x1bW4gLS0+XG4gICAgICAgICAgICAgIEBpZiAocHJvcHMuYWN0aW9uc1RlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiYWN0aW9ucy1jZWxsXCIgW3N0eWxlLndpZHRoXT1cInByb3BzLmFjdGlvbnNXaWR0aCB8fCAnMTAwcHgnXCI+XG4gICAgICAgICAgICAgICAgICB7eyBnZXRBY3Rpb25zTGFiZWwoKSB9fVxuICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90aGVhZD5cblxuICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgIEBpZiAoZGlzcGxheWVkRGF0YS5sZW5ndGggPT09IDAgJiYgIXByb3BzLmxvYWRpbmdTdGF0ZT8ubG9hZGluZykge1xuICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJlbXB0eS1yb3dcIj5cbiAgICAgICAgICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCJ0b3RhbENvbHVtbnNcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGVtcHR5U3RhdGUudGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlTdGF0ZS50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGVtcHR5U3RhdGUuaWNvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cImVtcHR5U3RhdGUuaWNvblwiIGNsYXNzPVwiZW1wdHktaWNvblwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZW1wdHlTdGF0ZS50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiZW1wdHktdGl0bGVcIj57eyBlbXB0eVN0YXRlLnRpdGxlIH19PC9oND5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChlbXB0eVN0YXRlLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImVtcHR5LWRlc2NyaXB0aW9uXCI+e3sgZW1wdHlTdGF0ZS5kZXNjcmlwdGlvbiB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgQGZvciAocm93IG9mIGRpc3BsYXllZERhdGE7IHRyYWNrIHRyYWNrQnlGbihyb3cpOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgICAgIDx0clxuICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImlzUm93U2VsZWN0ZWQocm93KVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuY2xpY2thYmxlXT1cInByb3BzLnJvd0NsaWNrYWJsZVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Sb3dDbGljayhyb3csIGksICRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwhLS0gU2VsZWN0aW9uIGNlbGwgLS0+XG4gICAgICAgICAgICAgICAgICBAaWYgKHByb3BzLnNob3dTZWxlY3Rpb25Db2x1bW4pIHtcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwic2VsZWN0aW9uLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKHByb3BzLnNlbGVjdGlvbj8ubW9kZSA9PT0gJ211bHRpcGxlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc1Jvd1NlbGVjdGVkKHJvdylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoaW9uQ2hhbmdlKT1cInRvZ2dsZVJvd1NlbGVjdGlvbihyb3csICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlNlbGVjY2lvbmFyIGZpbGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvaW9uLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKHByb3BzLnNlbGVjdGlvbj8ubW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc1Jvd1NlbGVjdGVkKHJvdylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0U2luZ2xlUm93KHJvdyk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgPCEtLSBSb3cgbnVtYmVyIC0tPlxuICAgICAgICAgICAgICAgICAgQGlmIChwcm9wcy5zaG93Um93TnVtYmVycykge1xuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJyb3ctbnVtYmVyLWNlbGxcIj57eyBnZXRSb3dOdW1iZXIoaSkgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICA8IS0tIERhdGEgY2VsbHMgLS0+XG4gICAgICAgICAgICAgICAgICBAZm9yIChjb2x1bW4gb2YgdmlzaWJsZUNvbHVtbnM7IHRyYWNrIGNvbHVtbi5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHRkIFtjbGFzc109XCJnZXRDb2x1bW5DbGFzcyhjb2x1bW4pXCIgW3N0eWxlLnRleHQtYWxpZ25dPVwiY29sdW1uLmFsaWduXCI+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChjb2x1bW4uY2VsbFRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLmNlbGxUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7IHJvdywgY29sdW1uLCB2YWx1ZTogZ2V0Q2VsbFZhbHVlKHJvdywgY29sdW1uKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRGb3JtYXR0ZWRWYWx1ZShyb3csIGNvbHVtbikgfX1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIDwhLS0gQWN0aW9ucyBjZWxsIC0tPlxuICAgICAgICAgICAgICAgICAgQGlmIChwcm9wcy5hY3Rpb25zVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYWN0aW9ucy1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9wcy5hY3Rpb25zVGVtcGxhdGU7IGNvbnRleHQ6IHsgcm93LCBpbmRleDogaSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBDYXJkIHZpZXcgKHJlc3BvbnNpdmUgbW9iaWxlKSAtLT5cbiAgICAgIEBpZiAocHJvcHMucmVzcG9uc2l2ZU1vZGUgPT09ICdjYXJkcycpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtbGlzdFwiPlxuICAgICAgICAgIEBpZiAoZGlzcGxheWVkRGF0YS5sZW5ndGggPT09IDAgJiYgIXByb3BzLmxvYWRpbmdTdGF0ZT8ubG9hZGluZykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlXCI+XG4gICAgICAgICAgICAgIEBpZiAoZW1wdHlTdGF0ZS5pY29uKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cImVtcHR5U3RhdGUuaWNvblwiIGNsYXNzPVwiZW1wdHktaWNvblwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChlbXB0eVN0YXRlLnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiZW1wdHktdGl0bGVcIj57eyBlbXB0eVN0YXRlLnRpdGxlIH19PC9oND5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKGVtcHR5U3RhdGUuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImVtcHR5LWRlc2NyaXB0aW9uXCI+e3sgZW1wdHlTdGF0ZS5kZXNjcmlwdGlvbiB9fTwvcD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICBAZm9yIChyb3cgb2YgZGlzcGxheWVkRGF0YTsgdHJhY2sgdHJhY2tCeUZuKHJvdyk7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgIEBpZiAocHJvcHMubW9iaWxlQ2FyZFRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9wcy5tb2JpbGVDYXJkVGVtcGxhdGU7IGNvbnRleHQ6IHsgcm93LCBpbmRleDogaSwgY29sdW1uczogdmlzaWJsZUNvbHVtbnMgfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtY2FyZFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiaXNSb3dTZWxlY3RlZChyb3cpXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5jbGlja2FibGVdPVwicHJvcHMucm93Q2xpY2thYmxlXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJvd0NsaWNrKHJvdywgaSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPCEtLSBDYXJkIGhlYWRlciB3aXRoIHNlbGVjdGlvbiAtLT5cbiAgICAgICAgICAgICAgICAgIEBpZiAocHJvcHMuc2hvd1NlbGVjdGlvbkNvbHVtbikge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1zZWxlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocHJvcHMuc2VsZWN0aW9uPy5tb2RlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc1Jvd1NlbGVjdGVkKHJvdylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpb25DaGFuZ2UpPVwidG9nZ2xlUm93U2VsZWN0aW9uKHJvdywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48L2lvbi1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKHByb3BzLnNlbGVjdGlvbj8ubW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc1Jvd1NlbGVjdGVkKHJvdylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RTaW5nbGVSb3cocm93KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKHByb3BzLnNob3dSb3dOdW1iZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJvdy1udW1iZXJcIj57eyBnZXRSb3dOdW1iZXIoaSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgPCEtLSBDYXJkIGJvZHkgd2l0aCBmaWVsZHMgLS0+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGNvbHVtbiBvZiB2aXNpYmxlQ29sdW1uczsgdHJhY2sgY29sdW1uLmtleSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtZmllbGRfX2xhYmVsXCI+e3sgY29sdW1uLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWZpZWxkX192YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbHVtbi5jZWxsVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uY2VsbFRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7IHJvdywgY29sdW1uLCB2YWx1ZTogZ2V0Q2VsbFZhbHVlKHJvdywgY29sdW1uKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0Rm9ybWF0dGVkVmFsdWUocm93LCBjb2x1bW4pIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDwhLS0gQ2FyZCBhY3Rpb25zIC0tPlxuICAgICAgICAgICAgICAgICAgQGlmIChwcm9wcy5hY3Rpb25zVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvcHMuYWN0aW9uc1RlbXBsYXRlOyBjb250ZXh0OiB7IHJvdywgaW5kZXg6IGkgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gUGFnaW5hdGlvbiAtLT5cbiAgICAgIEBpZiAocHJvcHMuc2hvd1BhZ2luYXRpb24gJiYgcHJvcHMucGFnaW5hdGlvbikge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicGFnaW5hdGlvbi1jb250YWluZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFnaW5hdGlvbi1pbmZvXCI+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAge3sgZ2V0UGFnaW5hdGlvbkluZm9UZXh0KCkgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgQGlmIChwYWdlU2l6ZU9wdGlvbnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICA8aW9uLXNlbGVjdFxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJwcm9wcy5wYWdpbmF0aW9uLnBhZ2VTaXplXCJcbiAgICAgICAgICAgICAgICAoaW9uQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgaW50ZXJmYWNlPVwicG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwYWdlLXNpemUtc2VsZWN0XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBmb3IgKHNpemUgb2YgcGFnZVNpemVPcHRpb25zOyB0cmFjayBzaXplKSB7XG4gICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gW3ZhbHVlXT1cInNpemVcIj57eyBnZXRQZXJQYWdlVGV4dChzaXplKSB9fTwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2lvbi1zZWxlY3Q+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFnaW5hdGlvbi1jb250cm9sc1wiPlxuICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByb3BzLnBhZ2luYXRpb24ucGFnZSA9PT0gMFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJnb1RvUGFnZSgwKVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0Rmlyc3RQYWdlTGFiZWwoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImNoZXZyb24tYmFjay1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiY2hldnJvbi1iYWNrLW91dGxpbmVcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMTJweFwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG5cbiAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwcm9wcy5wYWdpbmF0aW9uLnBhZ2UgPT09IDBcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1BhZ2UocHJvcHMucGFnaW5hdGlvbi5wYWdlIC0gMSlcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImdldFByZXZpb3VzUGFnZUxhYmVsKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJjaGV2cm9uLWJhY2stb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFnZS1pbmRpY2F0b3JcIj4ge3sgcHJvcHMucGFnaW5hdGlvbi5wYWdlICsgMSB9fSAvIHt7IHRvdGFsUGFnZXMgfX0gPC9zcGFuPlxuXG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJvcHMucGFnaW5hdGlvbi5wYWdlID49IHRvdGFsUGFnZXMgLSAxXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKHByb3BzLnBhZ2luYXRpb24ucGFnZSArIDEpXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXROZXh0UGFnZUxhYmVsKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJjaGV2cm9uLWZvcndhcmQtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG5cbiAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwcm9wcy5wYWdpbmF0aW9uLnBhZ2UgPj0gdG90YWxQYWdlcyAtIDFcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1BhZ2UodG90YWxQYWdlcyAtIDEpXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRMYXN0UGFnZUxhYmVsKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJjaGV2cm9uLWZvcndhcmQtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImNoZXZyb24tZm9yd2FyZC1vdXRsaW5lXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTEycHhcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLWRhdGEtdGFibGVcbiAqXG4gKiBBIGZsZXhpYmxlIGRhdGEgdGFibGUgY29tcG9uZW50IGZvciBkaXNwbGF5aW5nIHRhYnVsYXIgZGF0YSB3aXRoIHNvcnRpbmcsXG4gKiBwYWdpbmF0aW9uLCBhbmQgc2VsZWN0aW9uIGZlYXR1cmVzLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlXG4gKiBgYGBodG1sXG4gKiA8dmFsLWRhdGEtdGFibGVcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBjb2x1bW5zOiBbXG4gKiAgICAgICB7IGtleTogJ25hbWUnLCBsYWJlbDogJ05vbWJyZScsIHNvcnRhYmxlOiB0cnVlIH0sXG4gKiAgICAgICB7IGtleTogJ2VtYWlsJywgbGFiZWw6ICdFbWFpbCcgfSxcbiAqICAgICAgIHsga2V5OiAnc3RhdHVzJywgbGFiZWw6ICdFc3RhZG8nIH1cbiAqICAgICBdLFxuICogICAgIGRhdGE6IHVzZXJzXG4gKiAgIH1cIlxuICogPjwvdmFsLWRhdGEtdGFibGU+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBXaXRoIHBhZ2luYXRpb24gYW5kIHNlbGVjdGlvblxuICogYGBgaHRtbFxuICogPHZhbC1kYXRhLXRhYmxlXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgY29sdW1uczogY29sdW1ucyxcbiAqICAgICBkYXRhOiBwYXJ0aWNpcGFudHMsXG4gKiAgICAgc2hvd1BhZ2luYXRpb246IHRydWUsXG4gKiAgICAgcGFnaW5hdGlvbjoge1xuICogICAgICAgcGFnZTogMCxcbiAqICAgICAgIHBhZ2VTaXplOiAyNSxcbiAqICAgICAgIHRvdGFsOiB0b3RhbENvdW50XG4gKiAgICAgfSxcbiAqICAgICBzZWxlY3Rpb246IHtcbiAqICAgICAgIG1vZGU6ICdtdWx0aXBsZScsXG4gKiAgICAgICBzZWxlY3RlZDogc2VsZWN0ZWRQYXJ0aWNpcGFudHNcbiAqICAgICB9LFxuICogICAgIHNob3dTZWxlY3Rpb25Db2x1bW46IHRydWVcbiAqICAgfVwiXG4gKiAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gKiAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAqID48L3ZhbC1kYXRhLXRhYmxlPlxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVDb21wb25lbnQ8VCA9IGFueT4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHByb3BzOiBEYXRhVGFibGVNZXRhZGF0YTxUPjtcblxuICBAT3V0cHV0KCkgcm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGFUYWJsZVJvd0NsaWNrRXZlbnQ8VD4+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGFUYWJsZVNlbGVjdGlvbkNoYW5nZUV2ZW50PFQ+PigpO1xuICBAT3V0cHV0KCkgc29ydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0YVRhYmxlU29ydENoYW5nZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgcGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0YVRhYmxlUGFnZUNoYW5nZUV2ZW50PigpO1xuXG4gIGRpc3BsYXllZERhdGE6IFRbXSA9IFtdO1xuICBjdXJyZW50U29ydDogRGF0YVRhYmxlU29ydCB8IG51bGwgPSBudWxsO1xuICBzZWxlY3RlZFJvd3M6IFNldDxhbnk+ID0gbmV3IFNldCgpO1xuXG4gIC8qKiBDYWNoZWQgdmlzaWJsZSBjb2x1bW5zIGZvciBwZXJmb3JtYW5jZSAqL1xuICBwcml2YXRlIF92aXNpYmxlQ29sdW1uczogRGF0YVRhYmxlQ29sdW1uPFQ+W10gPSBbXTtcblxuICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplU3RhdGUoKTtcbiAgICB0aGlzLnVwZGF0ZURpc3BsYXllZERhdGEoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1sncHJvcHMnXSkge1xuICAgICAgdGhpcy5pbml0aWFsaXplU3RhdGUoKTtcbiAgICAgIHRoaXMudXBkYXRlRGlzcGxheWVkRGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVN0YXRlKCk6IHZvaWQge1xuICAgIC8vIENhY2hlIHZpc2libGUgY29sdW1ucyBmb3IgcGVyZm9ybWFuY2VcbiAgICB0aGlzLl92aXNpYmxlQ29sdW1ucyA9IHRoaXMucHJvcHMuY29sdW1ucy5maWx0ZXIoYyA9PiBjLnZpc2libGUgIT09IGZhbHNlKTtcblxuICAgIC8vIEluaXRpYWxpemUgc29ydFxuICAgIHRoaXMuY3VycmVudFNvcnQgPSB0aGlzLnByb3BzLnNvcnQgfHwgbnVsbDtcblxuICAgIC8vIEluaXRpYWxpemUgc2VsZWN0aW9uXG4gICAgaWYgKHRoaXMucHJvcHMuc2VsZWN0aW9uPy5zZWxlY3RlZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MgPSBuZXcgU2V0KHRoaXMucHJvcHMuc2VsZWN0aW9uLnNlbGVjdGVkLm1hcChyb3cgPT4gdGhpcy5nZXRSb3dJZChyb3cpKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEaXNwbGF5ZWREYXRhKCk6IHZvaWQge1xuICAgIGxldCBkYXRhID0gWy4uLnRoaXMucHJvcHMuZGF0YV07XG5cbiAgICAvLyBBcHBseSBjbGllbnQtc2lkZSBzb3J0aW5nXG4gICAgaWYgKHRoaXMucHJvcHMuY2xpZW50U29ydCAmJiB0aGlzLmN1cnJlbnRTb3J0KSB7XG4gICAgICBkYXRhID0gdGhpcy5zb3J0RGF0YShkYXRhKTtcbiAgICB9XG5cbiAgICAvLyBBcHBseSBjbGllbnQtc2lkZSBwYWdpbmF0aW9uXG4gICAgaWYgKHRoaXMucHJvcHMuY2xpZW50UGFnaW5hdGlvbiAmJiB0aGlzLnByb3BzLnBhZ2luYXRpb24pIHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2UgKiB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZVNpemU7XG4gICAgICBjb25zdCBlbmQgPSBzdGFydCArIHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlU2l6ZTtcbiAgICAgIGRhdGEgPSBkYXRhLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIHRoaXMuZGlzcGxheWVkRGF0YSA9IGRhdGE7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIHNvcnREYXRhKGRhdGE6IFRbXSk6IFRbXSB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRTb3J0KSByZXR1cm4gZGF0YTtcblxuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMucHJvcHMuY29sdW1ucy5maW5kKGMgPT4gYy5rZXkgPT09IHRoaXMuY3VycmVudFNvcnQ/LmNvbHVtbik7XG4gICAgaWYgKCFjb2x1bW4pIHJldHVybiBkYXRhO1xuXG4gICAgcmV0dXJuIFsuLi5kYXRhXS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBpZiAoY29sdW1uLnNvcnRGbikge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBjb2x1bW4uc29ydEZuKGEsIGIpO1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50U29ydD8uZGlyZWN0aW9uID09PSAnZGVzYycgPyAtcmVzdWx0IDogcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCB2YWx1ZUEgPSB0aGlzLmdldENlbGxWYWx1ZShhLCBjb2x1bW4pO1xuICAgICAgY29uc3QgdmFsdWVCID0gdGhpcy5nZXRDZWxsVmFsdWUoYiwgY29sdW1uKTtcblxuICAgICAgbGV0IGNvbXBhcmlzb24gPSAwO1xuICAgICAgaWYgKHZhbHVlQSA9PSBudWxsICYmIHZhbHVlQiA9PSBudWxsKSBjb21wYXJpc29uID0gMDtcbiAgICAgIGVsc2UgaWYgKHZhbHVlQSA9PSBudWxsKSBjb21wYXJpc29uID0gMTtcbiAgICAgIGVsc2UgaWYgKHZhbHVlQiA9PSBudWxsKSBjb21wYXJpc29uID0gLTE7XG4gICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWVBID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsdWVCID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb21wYXJpc29uID0gdmFsdWVBLmxvY2FsZUNvbXBhcmUodmFsdWVCKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbXBhcmlzb24gPSB2YWx1ZUEgPCB2YWx1ZUIgPyAtMSA6IHZhbHVlQSA+IHZhbHVlQiA/IDEgOiAwO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50U29ydD8uZGlyZWN0aW9uID09PSAnZGVzYycgPyAtY29tcGFyaXNvbiA6IGNvbXBhcmlzb247XG4gICAgfSk7XG4gIH1cblxuICBnZXQgdmlzaWJsZUNvbHVtbnMoKTogRGF0YVRhYmxlQ29sdW1uPFQ+W10ge1xuICAgIHJldHVybiB0aGlzLl92aXNpYmxlQ29sdW1ucztcbiAgfVxuXG4gIGdldCB0b3RhbENvbHVtbnMoKTogbnVtYmVyIHtcbiAgICBsZXQgY291bnQgPSB0aGlzLnZpc2libGVDb2x1bW5zLmxlbmd0aDtcbiAgICBpZiAodGhpcy5wcm9wcy5zaG93U2VsZWN0aW9uQ29sdW1uKSBjb3VudCsrO1xuICAgIGlmICh0aGlzLnByb3BzLnNob3dSb3dOdW1iZXJzKSBjb3VudCsrO1xuICAgIGlmICh0aGlzLnByb3BzLmFjdGlvbnNUZW1wbGF0ZSkgY291bnQrKztcbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICBnZXQgZW1wdHlTdGF0ZSgpOiBEYXRhVGFibGVFbXB0eVN0YXRlIHtcbiAgICBjb25zdCBkZWZhdWx0RW1wdHlTdGF0ZTogRGF0YVRhYmxlRW1wdHlTdGF0ZSA9IHtcbiAgICAgIGljb246ICdkb2N1bWVudC1vdXRsaW5lJyxcbiAgICAgIHRpdGxlOiB0aGlzLmkxOG4udCgnbm9EYXRhJyksXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5pMThuLnQoJ25vUmVjb3Jkc0ZvdW5kJyksXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5lbXB0eVN0YXRlIHx8IGRlZmF1bHRFbXB0eVN0YXRlO1xuICB9XG5cbiAgLyoqIEdldCBhY3Rpb25zIGNvbHVtbiBsYWJlbCAqL1xuICBnZXRBY3Rpb25zTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5hY3Rpb25zTGFiZWwgfHwgdGhpcy5pMThuLnQoJ2FjdGlvbnMnKSB8fCAnQWNjaW9uZXMnO1xuICB9XG5cbiAgLyoqIEdldCBwYWdpbmF0aW9uIGluZm8gdGV4dCAqL1xuICBnZXRQYWdpbmF0aW9uSW5mb1RleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5pMThuLnQoJ3Nob3dpbmcnKX0gJHt0aGlzLnBhZ2luYXRpb25TdGFydH0tJHt0aGlzLnBhZ2luYXRpb25FbmR9ICR7dGhpcy5pMThuLnQoJ29mJyl9ICR7dGhpcy5wcm9wcy5wYWdpbmF0aW9uPy50b3RhbH1gO1xuICB9XG5cbiAgLyoqIEdldCBwZXIgcGFnZSB0ZXh0ICovXG4gIGdldFBlclBhZ2VUZXh0KHNpemU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3NpemV9ICR7dGhpcy5pMThuLnQoJ3BlclBhZ2UnKX1gO1xuICB9XG5cbiAgLyoqIEdldCBmaXJzdCBwYWdlIGFyaWEgbGFiZWwgKi9cbiAgZ2V0Rmlyc3RQYWdlTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoJ2ZpcnN0UGFnZScpIHx8ICdQcmltZXJhIHDDoWdpbmEnO1xuICB9XG5cbiAgLyoqIEdldCBwcmV2aW91cyBwYWdlIGFyaWEgbGFiZWwgKi9cbiAgZ2V0UHJldmlvdXNQYWdlTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoJ3ByZXZpb3VzUGFnZScpIHx8ICdQw6FnaW5hIGFudGVyaW9yJztcbiAgfVxuXG4gIC8qKiBHZXQgbmV4dCBwYWdlIGFyaWEgbGFiZWwgKi9cbiAgZ2V0TmV4dFBhZ2VMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udCgnbmV4dFBhZ2UnKSB8fCAnUMOhZ2luYSBzaWd1aWVudGUnO1xuICB9XG5cbiAgLyoqIEdldCBsYXN0IHBhZ2UgYXJpYSBsYWJlbCAqL1xuICBnZXRMYXN0UGFnZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KCdsYXN0UGFnZScpIHx8ICfDmmx0aW1hIHDDoWdpbmEnO1xuICB9XG5cbiAgZ2V0IHBhZ2VTaXplT3B0aW9ucygpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMucGFnaW5hdGlvbj8ucGFnZVNpemVPcHRpb25zIHx8IERFRkFVTFRfUEFHRV9TSVpFX09QVElPTlM7XG4gIH1cblxuICBnZXQgdG90YWxQYWdlcygpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5wcm9wcy5wYWdpbmF0aW9uKSByZXR1cm4gMTtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMucHJvcHMucGFnaW5hdGlvbi50b3RhbCAvIHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlU2l6ZSk7XG4gIH1cblxuICBnZXQgcGFnaW5hdGlvblN0YXJ0KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnByb3BzLnBhZ2luYXRpb24pIHJldHVybiAxO1xuICAgIHJldHVybiB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZSAqIHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlU2l6ZSArIDE7XG4gIH1cblxuICBnZXQgcGFnaW5hdGlvbkVuZCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5wcm9wcy5wYWdpbmF0aW9uKSByZXR1cm4gdGhpcy5kaXNwbGF5ZWREYXRhLmxlbmd0aDtcbiAgICByZXR1cm4gTWF0aC5taW4oKHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlICsgMSkgKiB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZVNpemUsIHRoaXMucHJvcHMucGFnaW5hdGlvbi50b3RhbCk7XG4gIH1cblxuICBnZXQgaXNBbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5kaXNwbGF5ZWREYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLmRpc3BsYXllZERhdGEuZXZlcnkocm93ID0+IHRoaXMuaXNSb3dTZWxlY3RlZChyb3cpKTtcbiAgfVxuXG4gIGdldCBpc0luZGV0ZXJtaW5hdGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRDb3VudCA9IHRoaXMuZGlzcGxheWVkRGF0YS5maWx0ZXIocm93ID0+IHRoaXMuaXNSb3dTZWxlY3RlZChyb3cpKS5sZW5ndGg7XG4gICAgcmV0dXJuIHNlbGVjdGVkQ291bnQgPiAwICYmIHNlbGVjdGVkQ291bnQgPCB0aGlzLmRpc3BsYXllZERhdGEubGVuZ3RoO1xuICB9XG5cbiAgZ2V0Q2VsbFZhbHVlKHJvdzogVCwgY29sdW1uOiBEYXRhVGFibGVDb2x1bW48VD4pOiBhbnkge1xuICAgIGNvbnN0IGZpZWxkID0gY29sdW1uLmZpZWxkIHx8IGNvbHVtbi5rZXk7XG4gICAgcmV0dXJuIGZpZWxkLnNwbGl0KCcuJykucmVkdWNlKChvYmo6IGFueSwga2V5KSA9PiBvYmo/LltrZXldLCByb3cpO1xuICB9XG5cbiAgZ2V0Rm9ybWF0dGVkVmFsdWUocm93OiBULCBjb2x1bW46IERhdGFUYWJsZUNvbHVtbjxUPik6IHN0cmluZyB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldENlbGxWYWx1ZShyb3csIGNvbHVtbik7XG4gICAgaWYgKGNvbHVtbi5mb3JtYXQpIHtcbiAgICAgIHJldHVybiBjb2x1bW4uZm9ybWF0KHZhbHVlLCByb3cpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWUgPz8gJyc7XG4gIH1cblxuICBnZXRDb2x1bW5DbGFzcyhjb2x1bW46IERhdGFUYWJsZUNvbHVtbjxUPik6IHN0cmluZyB7XG4gICAgY29uc3QgY2xhc3NlcyA9IFtjb2x1bW4uY3NzQ2xhc3MgfHwgJyddO1xuICAgIGlmIChjb2x1bW4uc3RpY2t5KSB7XG4gICAgICBjbGFzc2VzLnB1c2goYHN0aWNreS0ke2NvbHVtbi5zdGlja3l9YCk7XG4gICAgfVxuICAgIGlmIChjb2x1bW4uYWxpZ24pIHtcbiAgICAgIGNsYXNzZXMucHVzaChgYWxpZ24tJHtjb2x1bW4uYWxpZ259YCk7XG4gICAgfVxuICAgIHJldHVybiBjbGFzc2VzLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJyk7XG4gIH1cblxuICBnZXRBcmlhU29ydChjb2x1bW46IERhdGFUYWJsZUNvbHVtbjxUPik6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghY29sdW1uLnNvcnRhYmxlKSByZXR1cm4gbnVsbDtcbiAgICBpZiAodGhpcy5jdXJyZW50U29ydD8uY29sdW1uICE9PSBjb2x1bW4ua2V5KSByZXR1cm4gJ25vbmUnO1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRTb3J0LmRpcmVjdGlvbiA9PT0gJ2FzYycgPyAnYXNjZW5kaW5nJyA6ICdkZXNjZW5kaW5nJztcbiAgfVxuXG4gIGdldFJvd051bWJlcihpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMucHJvcHMucm93TnVtYmVyU3RhcnQgPz8gMTtcbiAgICBpZiAodGhpcy5wcm9wcy5wYWdpbmF0aW9uKSB7XG4gICAgICByZXR1cm4gc3RhcnQgKyB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZSAqIHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlU2l6ZSArIGluZGV4O1xuICAgIH1cbiAgICByZXR1cm4gc3RhcnQgKyBpbmRleDtcbiAgfVxuXG4gIGdldFJvd0lkKHJvdzogVCk6IGFueSB7XG4gICAgaWYgKHRoaXMucHJvcHMuc2VsZWN0aW9uPy50cmFja0J5KSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5zZWxlY3Rpb24udHJhY2tCeShyb3cpO1xuICAgIH1cbiAgICByZXR1cm4gcm93O1xuICB9XG5cbiAgdHJhY2tCeUZuKHJvdzogVCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Um93SWQocm93KTtcbiAgfVxuXG4gIGlzUm93U2VsZWN0ZWQocm93OiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyh0aGlzLmdldFJvd0lkKHJvdykpO1xuICB9XG5cbiAgb25Tb3J0KGNvbHVtbjogRGF0YVRhYmxlQ29sdW1uPFQ+KTogdm9pZCB7XG4gICAgaWYgKCFjb2x1bW4uc29ydGFibGUpIHJldHVybjtcblxuICAgIGxldCBkaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnIHwgbnVsbCA9ICdhc2MnO1xuXG4gICAgaWYgKHRoaXMuY3VycmVudFNvcnQ/LmNvbHVtbiA9PT0gY29sdW1uLmtleSkge1xuICAgICAgaWYgKHRoaXMuY3VycmVudFNvcnQuZGlyZWN0aW9uID09PSAnYXNjJykge1xuICAgICAgICBkaXJlY3Rpb24gPSAnZGVzYyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkaXJlY3Rpb24gPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkaXJlY3Rpb24pIHtcbiAgICAgIHRoaXMuY3VycmVudFNvcnQgPSB7IGNvbHVtbjogY29sdW1uLmtleSwgZGlyZWN0aW9uIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VycmVudFNvcnQgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHtcbiAgICAgIGNvbHVtbjogY29sdW1uLmtleSxcbiAgICAgIGRpcmVjdGlvbixcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnByb3BzLmNsaWVudFNvcnQpIHtcbiAgICAgIHRoaXMudXBkYXRlRGlzcGxheWVkRGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uUm93Q2xpY2socm93OiBULCBpbmRleDogbnVtYmVyLCBldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wcm9wcy5yb3dDbGlja2FibGUpIHJldHVybjtcblxuICAgIHRoaXMucm93Q2xpY2suZW1pdCh7XG4gICAgICByb3csXG4gICAgICBpbmRleCxcbiAgICAgIGV2ZW50LFxuICAgIH0pO1xuICB9XG5cbiAgdG9nZ2xlU2VsZWN0QWxsKGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGNoZWNrZWQgPSBldmVudC5kZXRhaWwuY2hlY2tlZDtcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICB0aGlzLmRpc3BsYXllZERhdGEuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5hZGQodGhpcy5nZXRSb3dJZChyb3cpKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpc3BsYXllZERhdGEuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5kZWxldGUodGhpcy5nZXRSb3dJZChyb3cpKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZShjaGVja2VkID8gJ3NlbGVjdEFsbCcgOiAnZGVzZWxlY3RBbGwnKTtcbiAgfVxuXG4gIHRvZ2dsZVJvd1NlbGVjdGlvbihyb3c6IFQsIGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHJvd0lkID0gdGhpcy5nZXRSb3dJZChyb3cpO1xuICAgIGNvbnN0IGNoZWNrZWQgPSBldmVudC5kZXRhaWwuY2hlY2tlZDtcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5hZGQocm93SWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5kZWxldGUocm93SWQpO1xuICAgIH1cblxuICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZShjaGVja2VkID8gJ3NlbGVjdCcgOiAnZGVzZWxlY3QnLCByb3cpO1xuICB9XG5cbiAgc2VsZWN0U2luZ2xlUm93KHJvdzogVCk6IHZvaWQge1xuICAgIGNvbnN0IHJvd0lkID0gdGhpcy5nZXRSb3dJZChyb3cpO1xuICAgIGNvbnN0IHdhc1NlbGVjdGVkID0gdGhpcy5zZWxlY3RlZFJvd3MuaGFzKHJvd0lkKTtcblxuICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmNsZWFyKCk7XG5cbiAgICBpZiAoIXdhc1NlbGVjdGVkKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5hZGQocm93SWQpO1xuICAgICAgdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlKCdzZWxlY3QnLCByb3cpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVtaXRTZWxlY3Rpb25DaGFuZ2UoJ2Rlc2VsZWN0Jywgcm93KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGVtaXRTZWxlY3Rpb25DaGFuZ2UoYWN0aW9uOiAnc2VsZWN0JyB8ICdkZXNlbGVjdCcgfCAnc2VsZWN0QWxsJyB8ICdkZXNlbGVjdEFsbCcsIGNoYW5nZWRSb3c/OiBUKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnByb3BzLmRhdGEuZmlsdGVyKHJvdyA9PiB0aGlzLmlzUm93U2VsZWN0ZWQocm93KSk7XG5cbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHtcbiAgICAgIHNlbGVjdGVkLFxuICAgICAgY2hhbmdlZFJvdyxcbiAgICAgIGFjdGlvbixcbiAgICB9KTtcbiAgfVxuXG4gIGdvVG9QYWdlKHBhZ2U6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5wcm9wcy5wYWdpbmF0aW9uKSByZXR1cm47XG5cbiAgICBjb25zdCBwcmV2aW91c1BhZ2UgPSB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZTtcbiAgICBjb25zdCBtYXhQYWdlID0gdGhpcy50b3RhbFBhZ2VzIC0gMTtcbiAgICBjb25zdCBuZXdQYWdlID0gTWF0aC5tYXgoMCwgTWF0aC5taW4ocGFnZSwgbWF4UGFnZSkpO1xuXG4gICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQoe1xuICAgICAgcGFnZTogbmV3UGFnZSxcbiAgICAgIHBhZ2VTaXplOiB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZVNpemUsXG4gICAgICBwcmV2aW91c1BhZ2UsXG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5jbGllbnRQYWdpbmF0aW9uKSB7XG4gICAgICB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZSA9IG5ld1BhZ2U7XG4gICAgICB0aGlzLnVwZGF0ZURpc3BsYXllZERhdGEoKTtcbiAgICB9XG4gIH1cblxuICBvblBhZ2VTaXplQ2hhbmdlKGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wcm9wcy5wYWdpbmF0aW9uKSByZXR1cm47XG5cbiAgICBjb25zdCBuZXdQYWdlU2l6ZSA9IGV2ZW50LmRldGFpbC52YWx1ZTtcbiAgICBjb25zdCBwcmV2aW91c1BhZ2UgPSB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZTtcblxuICAgIC8vIFJlY2FsY3VsYXRlIHBhZ2UgdG8ga2VlcCBmaXJzdCB2aXNpYmxlIGl0ZW1cbiAgICBjb25zdCBmaXJzdEl0ZW0gPSBwcmV2aW91c1BhZ2UgKiB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZVNpemU7XG4gICAgY29uc3QgbmV3UGFnZSA9IE1hdGguZmxvb3IoZmlyc3RJdGVtIC8gbmV3UGFnZVNpemUpO1xuXG4gICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQoe1xuICAgICAgcGFnZTogbmV3UGFnZSxcbiAgICAgIHBhZ2VTaXplOiBuZXdQYWdlU2l6ZSxcbiAgICAgIHByZXZpb3VzUGFnZSxcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnByb3BzLmNsaWVudFBhZ2luYXRpb24pIHtcbiAgICAgIHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlU2l6ZSA9IG5ld1BhZ2VTaXplO1xuICAgICAgdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2UgPSBuZXdQYWdlO1xuICAgICAgdGhpcy51cGRhdGVEaXNwbGF5ZWREYXRhKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|