valtech-components 2.0.418 → 2.0.420
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/button/button.component.mjs +30 -102
- package/esm2022/lib/components/atoms/countdown/countdown.component.mjs +2 -7
- package/esm2022/lib/components/atoms/display/display.component.mjs +18 -101
- package/esm2022/lib/components/atoms/image/image.component.mjs +2 -5
- package/esm2022/lib/components/atoms/price-tag/price-tag.component.mjs +2 -12
- package/esm2022/lib/components/atoms/qr-code/qr-code.component.mjs +4 -29
- package/esm2022/lib/components/atoms/text/text.component.mjs +49 -171
- package/esm2022/lib/components/atoms/title/title.component.mjs +23 -65
- package/esm2022/lib/components/atoms/title/types.mjs +7 -19
- package/esm2022/lib/components/molecules/accordion/accordion.component.mjs +7 -53
- package/esm2022/lib/components/molecules/alert-box/alert-box.component.mjs +7 -26
- package/esm2022/lib/components/molecules/breadcrumb/breadcrumb.component.mjs +7 -42
- package/esm2022/lib/components/molecules/check-input/check-input.component.mjs +12 -41
- package/esm2022/lib/components/molecules/chip-group/chip-group.component.mjs +3 -28
- package/esm2022/lib/components/molecules/code-display/code-display.component.mjs +2 -5
- package/esm2022/lib/components/molecules/command-display/command-display.component.mjs +3 -6
- package/esm2022/lib/components/molecules/comment/comment.component.mjs +5 -31
- package/esm2022/lib/components/molecules/currency-input/currency-input.component.mjs +2 -23
- package/esm2022/lib/components/molecules/date-range-input/date-range-input.component.mjs +2 -29
- package/esm2022/lib/components/molecules/expandable-text/expandable-text.component.mjs +4 -6
- package/esm2022/lib/components/molecules/glow-card/glow-card.component.mjs +16 -40
- package/esm2022/lib/components/molecules/language-selector/language-selector.component.mjs +25 -125
- package/esm2022/lib/components/molecules/multi-select-search/multi-select-search.component.mjs +4 -6
- package/esm2022/lib/components/molecules/number-stepper/number-stepper.component.mjs +2 -10
- package/esm2022/lib/components/molecules/participant-card/participant-card.component.mjs +2 -4
- package/esm2022/lib/components/molecules/phone-input/phone-input.component.mjs +2 -23
- package/esm2022/lib/components/molecules/plain-code-box/plain-code-box.component.mjs +3 -6
- package/esm2022/lib/components/molecules/popover-selector/popover-selector.component.mjs +9 -12
- package/esm2022/lib/components/molecules/raffle-status-card/raffle-status-card.component.mjs +3 -11
- package/esm2022/lib/components/molecules/range-input/range-input.component.mjs +4 -25
- package/esm2022/lib/components/molecules/segment-control/segment-control.component.mjs +3 -34
- package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +11 -20
- package/esm2022/lib/components/molecules/select-search/select-search.component.mjs +4 -6
- package/esm2022/lib/components/molecules/share-buttons/share-buttons.component.mjs +1 -6
- package/esm2022/lib/components/molecules/stepper/stepper.component.mjs +3 -28
- package/esm2022/lib/components/molecules/tabs/tabs.component.mjs +7 -41
- package/esm2022/lib/components/molecules/textarea-input/textarea-input.component.mjs +2 -27
- package/esm2022/lib/components/molecules/ticket-grid/ticket-grid.component.mjs +2 -10
- package/esm2022/lib/components/molecules/toggle-input/toggle-input.component.mjs +7 -37
- package/esm2022/lib/components/molecules/winner-display/winner-display.component.mjs +1 -12
- package/esm2022/lib/components/organisms/comment-section/comment-section.component.mjs +8 -54
- package/esm2022/lib/components/organisms/data-table/data-table.component.mjs +1 -3
- package/esm2022/lib/components/organisms/wizard/wizard.component.mjs +3 -5
- package/esm2022/lib/services/locale.service.mjs +75 -0
- package/esm2022/lib/services/types.mjs +5 -3
- package/esm2022/public-api.mjs +2 -7
- package/fesm2022/valtech-components.mjs +366 -2279
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/button/button.component.d.ts +12 -37
- package/lib/components/atoms/countdown/countdown.component.d.ts +0 -1
- package/lib/components/atoms/display/display.component.d.ts +8 -60
- package/lib/components/atoms/image/image.component.d.ts +0 -2
- package/lib/components/atoms/price-tag/price-tag.component.d.ts +0 -1
- package/lib/components/atoms/qr-code/qr-code.component.d.ts +2 -6
- package/lib/components/atoms/text/text.component.d.ts +20 -68
- package/lib/components/atoms/title/title.component.d.ts +7 -12
- package/lib/components/atoms/title/types.d.ts +11 -24
- package/lib/components/molecules/accordion/accordion.component.d.ts +2 -9
- package/lib/components/molecules/alert-box/alert-box.component.d.ts +3 -8
- package/lib/components/molecules/breadcrumb/breadcrumb.component.d.ts +2 -8
- package/lib/components/molecules/check-input/check-input.component.d.ts +2 -10
- package/lib/components/molecules/chip-group/chip-group.component.d.ts +2 -8
- package/lib/components/molecules/code-display/code-display.component.d.ts +0 -2
- package/lib/components/molecules/command-display/command-display.component.d.ts +0 -3
- package/lib/components/molecules/comment/comment.component.d.ts +2 -6
- package/lib/components/molecules/currency-input/currency-input.component.d.ts +0 -3
- package/lib/components/molecules/date-range-input/date-range-input.component.d.ts +0 -3
- package/lib/components/molecules/expandable-text/expandable-text.component.d.ts +0 -1
- package/lib/components/molecules/glow-card/glow-card.component.d.ts +5 -9
- package/lib/components/molecules/language-selector/language-selector.component.d.ts +7 -19
- package/lib/components/molecules/multi-select-search/multi-select-search.component.d.ts +0 -2
- package/lib/components/molecules/number-stepper/number-stepper.component.d.ts +0 -1
- package/lib/components/molecules/participant-card/participant-card.component.d.ts +0 -1
- package/lib/components/molecules/phone-input/phone-input.component.d.ts +0 -3
- package/lib/components/molecules/plain-code-box/plain-code-box.component.d.ts +0 -3
- package/lib/components/molecules/popover-selector/popover-selector.component.d.ts +3 -4
- package/lib/components/molecules/raffle-status-card/raffle-status-card.component.d.ts +0 -1
- package/lib/components/molecules/range-input/range-input.component.d.ts +3 -8
- package/lib/components/molecules/segment-control/segment-control.component.d.ts +2 -8
- package/lib/components/molecules/select-input/select-input.component.d.ts +2 -3
- package/lib/components/molecules/select-search/select-search.component.d.ts +0 -2
- package/lib/components/molecules/share-buttons/share-buttons.component.d.ts +0 -1
- package/lib/components/molecules/stepper/stepper.component.d.ts +2 -8
- package/lib/components/molecules/tabs/tabs.component.d.ts +2 -8
- package/lib/components/molecules/textarea-input/textarea-input.component.d.ts +2 -6
- package/lib/components/molecules/ticket-grid/ticket-grid.component.d.ts +0 -1
- package/lib/components/molecules/toggle-input/toggle-input.component.d.ts +2 -8
- package/lib/components/molecules/winner-display/winner-display.component.d.ts +0 -1
- package/lib/components/organisms/comment-section/comment-section.component.d.ts +2 -6
- package/lib/components/organisms/data-table/data-table.component.d.ts +0 -1
- package/lib/components/organisms/wizard/wizard.component.d.ts +0 -2
- package/lib/services/locale.service.d.ts +52 -0
- package/lib/services/types.d.ts +1 -6
- package/package.json +1 -3
- package/public-api.d.ts +1 -5
- package/esm2022/lib/services/lang-provider/components/lang-settings.mjs +0 -13
- package/esm2022/lib/services/lang-provider/content.mjs +0 -156
- package/esm2022/lib/services/lang-provider/lang-provider.service.mjs +0 -530
- package/esm2022/lib/services/lang-provider/types.mjs +0 -23
- package/esm2022/lib/shared/utils/content.mjs +0 -186
- package/esm2022/lib/shared/utils/simple-content.mjs +0 -119
- package/lib/services/lang-provider/components/lang-settings.d.ts +0 -3
- package/lib/services/lang-provider/content.d.ts +0 -17
- package/lib/services/lang-provider/lang-provider.service.d.ts +0 -264
- package/lib/services/lang-provider/types.d.ts +0 -30
- package/lib/shared/utils/content.d.ts +0 -199
- package/lib/shared/utils/simple-content.d.ts +0 -120
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { FormsModule } from '@angular/forms';
|
|
4
4
|
import { IonIcon, IonButton, IonBadge, IonTextarea, IonItem, IonSelect, IonSelectOption, IonSpinner, IonInfiniteScroll, IonInfiniteScrollContent, } from '@ionic/angular/standalone';
|
|
@@ -7,7 +7,6 @@ import { chatbubblesOutline, filterOutline, sendOutline, chatbubbleEllipsesOutli
|
|
|
7
7
|
import { CommentComponent } from '../../molecules/comment/comment.component';
|
|
8
8
|
import { AvatarComponent } from '../../atoms/avatar/avatar.component';
|
|
9
9
|
import { SkeletonComponent } from '../../atoms/skeleton/skeleton.component';
|
|
10
|
-
import { LangService } from '../../../services/lang-provider/lang-provider.service';
|
|
11
10
|
import * as i0 from "@angular/core";
|
|
12
11
|
import * as i1 from "@angular/forms";
|
|
13
12
|
addIcons({
|
|
@@ -79,40 +78,14 @@ export class CommentSectionComponent {
|
|
|
79
78
|
this.replyingTo = null;
|
|
80
79
|
this.displayTitle = '';
|
|
81
80
|
this.displayLoadMoreLabel = '';
|
|
82
|
-
this.langSubscription = null;
|
|
83
|
-
this.langService = inject(LangService);
|
|
84
81
|
this.infiniteScrollEvent = null;
|
|
85
82
|
}
|
|
86
83
|
ngOnInit() {
|
|
87
84
|
this.updateDisplayTexts();
|
|
88
|
-
if (this.hasReactiveContent()) {
|
|
89
|
-
this.langSubscription = this.langService.currentLang$.subscribe(() => {
|
|
90
|
-
this.updateDisplayTexts();
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
ngOnDestroy() {
|
|
95
|
-
this.langSubscription?.unsubscribe();
|
|
96
|
-
}
|
|
97
|
-
hasReactiveContent() {
|
|
98
|
-
return !!((this.props.titleContentKey && this.props.contentClass) ||
|
|
99
|
-
(this.props.loadMoreContentKey && this.props.contentClass));
|
|
100
85
|
}
|
|
101
86
|
updateDisplayTexts() {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
this.displayTitle = this.langService.getText(this.props.contentClass, this.props.titleContentKey, this.props.titleContentFallback || this.props.title || 'Comments');
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
this.displayTitle = this.props.title || 'Comments';
|
|
108
|
-
}
|
|
109
|
-
// Load more label
|
|
110
|
-
if (this.props.loadMoreContentKey && this.props.contentClass) {
|
|
111
|
-
this.displayLoadMoreLabel = this.langService.getText(this.props.contentClass, this.props.loadMoreContentKey, this.props.loadMoreLabel || 'Load more comments');
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
this.displayLoadMoreLabel = this.props.loadMoreLabel || 'Load more comments';
|
|
115
|
-
}
|
|
87
|
+
this.displayTitle = this.props.title || 'Comentarios';
|
|
88
|
+
this.displayLoadMoreLabel = this.props.loadMoreLabel || 'Cargar más comentarios';
|
|
116
89
|
}
|
|
117
90
|
formatCount(count) {
|
|
118
91
|
if (count >= 1000000) {
|
|
@@ -124,38 +97,19 @@ export class CommentSectionComponent {
|
|
|
124
97
|
return count.toString();
|
|
125
98
|
}
|
|
126
99
|
getSortOptionLabel(option) {
|
|
127
|
-
if (option.contentKey && option.contentClass) {
|
|
128
|
-
return this.langService.getText(option.contentClass, option.contentKey, option.contentFallback || option.label);
|
|
129
|
-
}
|
|
130
100
|
return option.label;
|
|
131
101
|
}
|
|
132
102
|
getInputPlaceholder() {
|
|
133
|
-
|
|
134
|
-
if (config?.placeholderContentKey && config?.contentClass) {
|
|
135
|
-
return this.langService.getText(config.contentClass, config.placeholderContentKey, config.placeholder || 'Write a comment...');
|
|
136
|
-
}
|
|
137
|
-
return config?.placeholder || 'Write a comment...';
|
|
103
|
+
return this.props.inputConfig?.placeholder || 'Escribe un comentario...';
|
|
138
104
|
}
|
|
139
105
|
getSubmitLabel() {
|
|
140
|
-
|
|
141
|
-
if (config?.submitLabelContentKey && config?.contentClass) {
|
|
142
|
-
return this.langService.getText(config.contentClass, config.submitLabelContentKey, config.submitLabel || 'Post');
|
|
143
|
-
}
|
|
144
|
-
return config?.submitLabel || 'Post';
|
|
106
|
+
return this.props.inputConfig?.submitLabel || 'Publicar';
|
|
145
107
|
}
|
|
146
108
|
getEmptyTitle() {
|
|
147
|
-
|
|
148
|
-
if (empty?.titleContentKey && empty?.contentClass) {
|
|
149
|
-
return this.langService.getText(empty.contentClass, empty.titleContentKey, empty.title || 'No comments yet');
|
|
150
|
-
}
|
|
151
|
-
return empty?.title || 'No comments yet';
|
|
109
|
+
return this.props.emptyState?.title || 'Sin comentarios aún';
|
|
152
110
|
}
|
|
153
111
|
getEmptyMessage() {
|
|
154
|
-
|
|
155
|
-
if (empty?.messageContentKey && empty?.contentClass) {
|
|
156
|
-
return this.langService.getText(empty.contentClass, empty.messageContentKey, empty.message || 'Be the first to share your thoughts!');
|
|
157
|
-
}
|
|
158
|
-
return empty?.message || 'Be the first to share your thoughts!';
|
|
112
|
+
return this.props.emptyState?.message || '¡Sé el primero en compartir tu opinión!';
|
|
159
113
|
}
|
|
160
114
|
getSkeletonArray() {
|
|
161
115
|
const count = this.props.skeletonCount || 3;
|
|
@@ -575,4 +529,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
575
529
|
}], replyStart: [{
|
|
576
530
|
type: Output
|
|
577
531
|
}] } });
|
|
578
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvY29tbWVudC1zZWN0aW9uL2NvbW1lbnQtc2VjdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUNMLE9BQU8sRUFDUCxTQUFTLEVBQ1QsUUFBUSxFQUNSLFdBQVcsRUFDWCxPQUFPLEVBQ1AsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsaUJBQWlCLEVBQ2pCLHdCQUF3QixHQUN6QixNQUFNLDJCQUEyQixDQUFDO0FBRW5DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixhQUFhLEVBQ2IsV0FBVyxFQUNYLHlCQUF5QixFQUN6QixtQkFBbUIsR0FDcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVEQUF1RCxDQUFDOzs7QUFnQnBGLFFBQVEsQ0FBQztJQUNQLGtCQUFrQjtJQUNsQixhQUFhO0lBQ2IsV0FBVztJQUNYLHlCQUF5QjtJQUN6QixtQkFBbUI7Q0FDcEIsQ0FB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IElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkRlc3Ryb3ksIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgSW9uSWNvbixcbiAgSW9uQnV0dG9uLFxuICBJb25CYWRnZSxcbiAgSW9uVGV4dGFyZWEsXG4gIElvbkl0ZW0sXG4gIElvblNlbGVjdCxcbiAgSW9uU2VsZWN0T3B0aW9uLFxuICBJb25TcGlubmVyLFxuICBJb25JbmZpbml0ZVNjcm9sbCxcbiAgSW9uSW5maW5pdGVTY3JvbGxDb250ZW50LFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQge1xuICBjaGF0YnViYmxlc091dGxpbmUsXG4gIGZpbHRlck91dGxpbmUsXG4gIHNlbmRPdXRsaW5lLFxuICBjaGF0YnViYmxlRWxsaXBzZXNPdXRsaW5lLFxuICBzd2FwVmVydGljYWxPdXRsaW5lLFxufSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5cbmltcG9ydCB7IENvbW1lbnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvY29tbWVudC9jb21tZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdmF0YXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa2VsZXRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3NrZWxldG9uL3NrZWxldG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMYW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xhbmctcHJvdmlkZXIvbGFuZy1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIENvbW1lbnRTZWN0aW9uTWV0YWRhdGEsXG4gIENvbW1lbnRTb3J0T3B0aW9uLFxuICBDb21tZW50U29ydENoYW5nZUV2ZW50LFxuICBDb21tZW50U3VibWl0RXZlbnQsXG4gIENvbW1lbnRTZWN0aW9uTG9hZE1vcmVFdmVudCxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBDb21tZW50QXV0aG9yQ2xpY2tFdmVudCxcbiAgQ29tbWVudFJlYWN0aW9uQ2xpY2tFdmVudCxcbiAgQ29tbWVudEFjdGlvbkNsaWNrRXZlbnQsXG4gIENvbW1lbnRNZW51SXRlbUNsaWNrRXZlbnQsXG4gIENvbW1lbnRMb2FkTW9yZUV2ZW50LFxufSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvY29tbWVudC90eXBlcyc7XG5cbmFkZEljb25zKHtcbiAgY2hhdGJ1YmJsZXNPdXRsaW5lLFxuICBmaWx0ZXJPdXRsaW5lLFxuICBzZW5kT3V0bGluZSxcbiAgY2hhdGJ1YmJsZUVsbGlwc2VzT3V0bGluZSxcbiAgc3dhcFZlcnRpY2FsT3V0bGluZSxcbn0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY29tbWVudC1zZWN0aW9uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBJb25JY29uLFxuICAgIElvbkJ1dHRvbixcbiAgICBJb25CYWRnZSxcbiAgICBJb25UZXh0YXJlYSxcbiAgICBJb25JdGVtLFxuICAgIElvblNlbGVjdCxcbiAgICBJb25TZWxlY3RPcHRpb24sXG4gICAgSW9uU3Bpbm5lcixcbiAgICBJb25JbmZpbml0ZVNjcm9sbCxcbiAgICBJb25JbmZpbml0ZVNjcm9sbENvbnRlbnQsXG4gICAgQ29tbWVudENvbXBvbmVudCxcbiAgICBBdmF0YXJDb21wb25lbnQsXG4gICAgU2tlbGV0b25Db21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtc2VjdGlvblwiIFtjbGFzcy5sb2FkaW5nXT1cInByb3BzLmxvYWRpbmdcIj5cbiAgICAgIDwhLS0gSGVhZGVyIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItdGl0bGVcIj5cbiAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoYXRidWJibGVzLW91dGxpbmVcIiBjbGFzcz1cInRpdGxlLWljb25cIj48L2lvbi1pY29uPlxuICAgICAgICAgIDxoMyBjbGFzcz1cInRpdGxlXCI+e3sgZGlzcGxheVRpdGxlIH19PC9oMz5cbiAgICAgICAgICBAaWYgKHByb3BzLnNob3dDb3VudCAhPT0gZmFsc2UgJiYgcHJvcHMuY291bnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgPGlvbi1iYWRnZSBjb2xvcj1cIm1lZGl1bVwiIGNsYXNzPVwiY291bnQtYmFkZ2VcIj5cbiAgICAgICAgICAgICAge3sgZm9ybWF0Q291bnQocHJvcHMuY291bnQpIH19XG4gICAgICAgICAgICA8L2lvbi1iYWRnZT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAocHJvcHMuc29ydE9wdGlvbnMgJiYgcHJvcHMuc29ydE9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGlvbi1pdGVtIGxpbmVzPVwibm9uZVwiIGNsYXNzPVwic29ydC1zZWxlY3QtaXRlbVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInN3YXAtdmVydGljYWwtb3V0bGluZVwiIHNsb3Q9XCJzdGFydFwiIGNsYXNzPVwic29ydC1pY29uXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgPGlvbi1zZWxlY3RcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwicHJvcHMuc2VsZWN0ZWRTb3J0XCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicHJvcHMuc29ydExhYmVsIHx8ICdTb3J0IGJ5J1wiXG4gICAgICAgICAgICAgICAgaW50ZXJmYWNlPVwicG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgKGlvbkNoYW5nZSk9XCJvblNvcnRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAZm9yIChvcHRpb24gb2YgcHJvcHMuc29ydE9wdGlvbnM7IHRyYWNrIG9wdGlvbi50b2tlbikge1xuICAgICAgICAgICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uIFt2YWx1ZV09XCJvcHRpb24udG9rZW5cIj5cbiAgICAgICAgICAgICAgICAgICAge3sgZ2V0U29ydE9wdGlvbkxhYmVsKG9wdGlvbikgfX1cbiAgICAgICAgICAgICAgICAgIDwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2lvbi1zZWxlY3Q+XG4gICAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBOZXcgQ29tbWVudCBJbnB1dCAtLT5cbiAgICAgIEBpZiAocHJvcHMuc2hvd0lucHV0ICE9PSBmYWxzZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwibmV3LWNvbW1lbnQtc2VjdGlvblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCI+XG4gICAgICAgICAgICBAaWYgKHByb3BzLmlucHV0Q29uZmlnPy5jdXJyZW50VXNlcj8uYXZhdGFyKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1hdmF0YXJcIj5cbiAgICAgICAgICAgICAgICA8dmFsLWF2YXRhciBbcHJvcHNdPVwicHJvcHMuaW5wdXRDb25maWcuY3VycmVudFVzZXIuYXZhdGFyXCI+PC92YWwtYXZhdGFyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICA8aW9uLXRleHRhcmVhXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJuZXdDb21tZW50VGV4dFwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImdldElucHV0UGxhY2Vob2xkZXIoKVwiXG4gICAgICAgICAgICAgICAgW21heGxlbmd0aF09XCJwcm9wcy5pbnB1dENvbmZpZz8ubWF4TGVuZ3RoIHx8IDIwMDBcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwcm9wcy5pbnB1dENvbmZpZz8uZGlzYWJsZWQgfHwgcHJvcHMubG9hZGluZ1wiXG4gICAgICAgICAgICAgICAgW2F1dG9Hcm93XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIHJvd3M9XCIyXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbW1lbnQtdGV4dGFyZWFcIlxuICAgICAgICAgICAgICA+PC9pb24tdGV4dGFyZWE+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICBAaWYgKHByb3BzLmlucHV0Q29uZmlnPy5zaG93Q291bnRlciAmJiBwcm9wcy5pbnB1dENvbmZpZz8ubWF4TGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoYXItY291bnRlclwiIFtjbGFzcy53YXJuaW5nXT1cImlzTmVhckxpbWl0KClcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgbmV3Q29tbWVudFRleHQubGVuZ3RoIH19IC8ge3sgcHJvcHMuaW5wdXRDb25maWcubWF4TGVuZ3RoIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJwcm9wcy5pbnB1dENvbmZpZz8uc3VibWl0Q29sb3IgfHwgcHJvcHMuY29sb3IgfHwgJ3ByaW1hcnknXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuU3VibWl0KClcIlxuICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblN1Ym1pdENvbW1lbnQoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJzZW5kLW91dGxpbmVcIiBzbG90PVwic3RhcnRcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0U3VibWl0TGFiZWwoKSB9fVxuICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIEBpZiAocHJvcHMubG9hZGluZykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwibG9hZGluZy1zdGF0ZVwiPlxuICAgICAgICAgIEBmb3IgKGkgb2YgZ2V0U2tlbGV0b25BcnJheSgpOyB0cmFjayBpKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24tY29tbWVudFwiPlxuICAgICAgICAgICAgICA8dmFsLXNrZWxldG9uIFtwcm9wc109XCJ7IHR5cGU6ICdhdmF0YXInLCB3aWR0aDogJzM2cHgnLCBoZWlnaHQ6ICczNnB4JyB9XCI+PC92YWwtc2tlbGV0b24+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJza2VsZXRvbi1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPHZhbC1za2VsZXRvbiBbcHJvcHNdPVwieyB0eXBlOiAndGV4dCcsIHdpZHRoOiAnMTIwcHgnLCBoZWlnaHQ6ICcxNHB4JyB9XCI+PC92YWwtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgPHZhbC1za2VsZXRvbiBbcHJvcHNdPVwieyB0eXBlOiAncGFyYWdyYXBoJywgbGluZXM6IDIgfVwiPjwvdmFsLXNrZWxldG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9IEBlbHNlIGlmIChwcm9wcy5jb21tZW50cyAmJiBwcm9wcy5jb21tZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50cy1saXN0XCIgW2NsYXNzLndpdGgtZGl2aWRlcnNdPVwicHJvcHMuc2hvd0RpdmlkZXJzXCI+XG4gICAgICAgICAgQGZvciAoY29tbWVudCBvZiBwcm9wcy5jb21tZW50czsgdHJhY2sgY29tbWVudC50b2tlbikge1xuICAgICAgICAgICAgPHZhbC1jb21tZW50XG4gICAgICAgICAgICAgIFtwcm9wc109XCJjb21tZW50XCJcbiAgICAgICAgICAgICAgKGF1dGhvckNsaWNrKT1cImF1dGhvckNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChyZWFjdGlvbkNsaWNrKT1cInJlYWN0aW9uQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKGFjdGlvbkNsaWNrKT1cIm9uQ29tbWVudEFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKG1lbnVJdGVtQ2xpY2spPVwibWVudUl0ZW1DbGljay5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAobG9hZE1vcmVDbGljayk9XCJjb21tZW50TG9hZE1vcmUuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKGNvbGxhcHNlVG9nZ2xlKT1cImNvbGxhcHNlVG9nZ2xlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICA+PC92YWwtY29tbWVudD5cblxuICAgICAgICAgICAgQGlmIChwcm9wcy5zaG93RGl2aWRlcnMgJiYgISRsYXN0KSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50LWRpdmlkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKHByb3BzLmhhc01vcmUgJiYgcHJvcHMucGFnaW5hdGlvbk1vZGUgIT09ICdpbmZpbml0ZScpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkLW1vcmUtc2VjdGlvblwiPlxuICAgICAgICAgICAgICBAaWYgKHByb3BzLmxvYWRpbmdNb3JlKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiIFtjb2xvcl09XCJwcm9wcy5jb2xvciB8fCAncHJpbWFyeSdcIj48L2lvbi1zcGlubmVyPlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInByb3BzLmNvbG9yIHx8ICdwcmltYXJ5J1wiXG4gICAgICAgICAgICAgICAgICBleHBhbmQ9XCJibG9ja1wiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Mb2FkTW9yZSgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBkaXNwbGF5TG9hZE1vcmVMYWJlbCB9fVxuICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKHByb3BzLnBhZ2luYXRpb25Nb2RlID09PSAnaW5maW5pdGUnKSB7XG4gICAgICAgICAgPGlvbi1pbmZpbml0ZS1zY3JvbGxcbiAgICAgICAgICAgIFt0aHJlc2hvbGRdPVwicHJvcHMuaW5maW5pdGVTY3JvbGxUaHJlc2hvbGQgfHwgJzEwMHB4J1wiXG4gICAgICAgICAgICBbcG9zaXRpb25dPVwicHJvcHMuaW5maW5pdGVTY3JvbGxQb3NpdGlvbiB8fCAnYm90dG9tJ1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXByb3BzLmhhc01vcmVcIlxuICAgICAgICAgICAgKGlvbkluZmluaXRlKT1cIm9uSW5maW5pdGVTY3JvbGwoJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlvbi1pbmZpbml0ZS1zY3JvbGwtY29udGVudFxuICAgICAgICAgICAgICBbbG9hZGluZ1NwaW5uZXJdPVwiJ2NyZXNjZW50J1wiXG4gICAgICAgICAgICAgIFtsb2FkaW5nVGV4dF09XCJkaXNwbGF5TG9hZE1vcmVMYWJlbFwiXG4gICAgICAgICAgICA+PC9pb24taW5maW5pdGUtc2Nyb2xsLWNvbnRlbnQ+XG4gICAgICAgICAgPC9pb24taW5maW5pdGUtc2Nyb2xsPlxuICAgICAgICB9XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlXCI+XG4gICAgICAgICAgPGlvbi1pY29uXG4gICAgICAgICAgICBbbmFtZV09XCJwcm9wcy5lbXB0eVN0YXRlPy5pY29uIHx8ICdjaGF0YnViYmxlLWVsbGlwc2VzLW91dGxpbmUnXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZW1wdHktaWNvblwiXG4gICAgICAgICAgPjwvaW9uLWljb24+XG4gICAgICAgICAgPGg0IGNsYXNzPVwiZW1wdHktdGl0bGVcIj57eyBnZXRFbXB0eVRpdGxlKCkgfX08L2g0PlxuICAgICAgICAgIDxwIGNsYXNzPVwiZW1wdHktbWVzc2FnZVwiPnt7IGdldEVtcHR5TWVzc2FnZSgpIH19PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vY29tbWVudC1zZWN0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtY29tbWVudC1zZWN0aW9uXG4gKlxuICogQW4gb3JnYW5pc20gY29tcG9uZW50IHRoYXQgcHJvdmlkZXMgYSBjb21wbGV0ZSBjb21tZW50IHNlY3Rpb24gd2l0aDpcbiAqIC0gSGVhZGVyIHdpdGggdGl0bGUgYW5kIGNvdW50XG4gKiAtIFNvcnQvZmlsdGVyIG9wdGlvbnNcbiAqIC0gTmV3IGNvbW1lbnQgaW5wdXRcbiAqIC0gQ29tbWVudHMgbGlzdCB3aXRoIHZhbC1jb21tZW50XG4gKiAtIExvYWQgbW9yZSBwYWdpbmF0aW9uXG4gKiAtIEVtcHR5IHN0YXRlXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgdXNhZ2VcbiAqIDx2YWwtY29tbWVudC1zZWN0aW9uIFtwcm9wc109XCJ7XG4gKiAgIHRpdGxlOiAnQ29tbWVudHMnLFxuICogICBjb3VudDogNDIsXG4gKiAgIGNvbW1lbnRzOiBjb21tZW50c0FycmF5LFxuICogICBzaG93SW5wdXQ6IHRydWVcbiAqIH1cIj48L3ZhbC1jb21tZW50LXNlY3Rpb24+XG4gKlxuICogQGV4YW1wbGUgV2l0aCBzb3J0aW5nXG4gKiA8dmFsLWNvbW1lbnQtc2VjdGlvbiBbcHJvcHNdPVwie1xuICogICB0aXRsZTogJ1Jldmlld3MnLFxuICogICBjb3VudDogMTI4LFxuICogICBjb21tZW50czogcmV2aWV3cyxcbiAqICAgc29ydE9wdGlvbnM6IFtcbiAqICAgICB7IHRva2VuOiAnbmV3ZXN0JywgbGFiZWw6ICdOZXdlc3QgZmlyc3QnIH0sXG4gKiAgICAgeyB0b2tlbjogJ29sZGVzdCcsIGxhYmVsOiAnT2xkZXN0IGZpcnN0JyB9LFxuICogICAgIHsgdG9rZW46ICdwb3B1bGFyJywgbGFiZWw6ICdNb3N0IHBvcHVsYXInIH1cbiAqICAgXSxcbiAqICAgc2VsZWN0ZWRTb3J0OiAnbmV3ZXN0J1xuICogfVwiIChzb3J0Q2hhbmdlKT1cIm9uU29ydCgkZXZlbnQpXCI+PC92YWwtY29tbWVudC1zZWN0aW9uPlxuICpcbiAqIEBpbnB1dCBwcm9wczogQ29tbWVudFNlY3Rpb25NZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBzZWN0aW9uXG4gKiBAb3V0cHV0IHNvcnRDaGFuZ2UgLSBTb3J0IG9wdGlvbiBjaGFuZ2VkXG4gKiBAb3V0cHV0IGNvbW1lbnRTdWJtaXQgLSBOZXcgY29tbWVudCBzdWJtaXR0ZWRcbiAqIEBvdXRwdXQgbG9hZE1vcmUgLSBMb2FkIG1vcmUgY2xpY2tlZFxuICogQG91dHB1dCBhdXRob3JDbGljayAtIENvbW1lbnQgYXV0aG9yIGNsaWNrZWQgKGJ1YmJsZWQgZnJvbSB2YWwtY29tbWVudClcbiAqIEBvdXRwdXQgcmVhY3Rpb25DbGljayAtIFJlYWN0aW9uIGNsaWNrZWQgKGJ1YmJsZWQpXG4gKiBAb3V0cHV0IGFjdGlvbkNsaWNrIC0gQWN0aW9uIGNsaWNrZWQgKGJ1YmJsZWQpXG4gKiBAb3V0cHV0IG1lbnVJdGVtQ2xpY2sgLSBNZW51IGl0ZW0gY2xpY2tlZCAoYnViYmxlZClcbiAqIEBvdXRwdXQgY29tbWVudExvYWRNb3JlIC0gTG9hZCBtb3JlIHJlcGxpZXMgY2xpY2tlZCAoYnViYmxlZClcbiAqIEBvdXRwdXQgY29sbGFwc2VUb2dnbGUgLSBDb21tZW50IGNvbGxhcHNlIHRvZ2dsZWQgKGJ1YmJsZWQpXG4gKi9cbmV4cG9ydCBjbGFzcyBDb21tZW50U2VjdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHJvcHM6IENvbW1lbnRTZWN0aW9uTWV0YWRhdGE7XG5cbiAgLy8gU2VjdGlvbiBldmVudHNcbiAgQE91dHB1dCgpIHNvcnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPENvbW1lbnRTb3J0Q2hhbmdlRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBjb21tZW50U3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxDb21tZW50U3VibWl0RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBsb2FkTW9yZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q29tbWVudFNlY3Rpb25Mb2FkTW9yZUV2ZW50PigpO1xuXG4gIC8vIEJ1YmJsZWQgZXZlbnRzIGZyb20gdmFsLWNvbW1lbnRcbiAgQE91dHB1dCgpIGF1dGhvckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxDb21tZW50QXV0aG9yQ2xpY2tFdmVudD4oKTtcbiAgQE91dHB1dCgpIHJlYWN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPENvbW1lbnRSZWFjdGlvbkNsaWNrRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBhY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Q29tbWVudEFjdGlvbkNsaWNrRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBtZW51SXRlbUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxDb21tZW50TWVudUl0ZW1DbGlja0V2ZW50PigpO1xuICBAT3V0cHV0KCkgY29tbWVudExvYWRNb3JlID0gbmV3IEV2ZW50RW1pdHRlcjxDb21tZW50TG9hZE1vcmVFdmVudD4oKTtcbiAgQE91dHB1dCgpIGNvbGxhcHNlVG9nZ2xlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHRva2VuOiBzdHJpbmc7IGNvbGxhcHNlZDogYm9vbGVhbiB9PigpO1xuXG4gIC8vIFJlcGx5IHN0YXRlXG4gIEBPdXRwdXQoKSByZXBseVN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGNvbW1lbnRUb2tlbjogc3RyaW5nIH0+KCk7XG5cbiAgbmV3Q29tbWVudFRleHQgPSAnJztcbiAgcmVwbHlpbmdUbzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgZGlzcGxheVRpdGxlID0gJyc7XG4gIGRpc3BsYXlMb2FkTW9yZUxhYmVsID0gJyc7XG5cbiAgcHJpdmF0ZSBsYW5nU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBsYW5nU2VydmljZSA9IGluamVjdChMYW5nU2VydmljZSk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVEaXNwbGF5VGV4dHMoKTtcblxuICAgIGlmICh0aGlzLmhhc1JlYWN0aXZlQ29udGVudCgpKSB7XG4gICAgICB0aGlzLmxhbmdTdWJzY3JpcHRpb24gPSB0aGlzLmxhbmdTZXJ2aWNlLmN1cnJlbnRMYW5nJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZURpc3BsYXlUZXh0cygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5sYW5nU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNSZWFjdGl2ZUNvbnRlbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKFxuICAgICAgKHRoaXMucHJvcHMudGl0bGVDb250ZW50S2V5ICYmIHRoaXMucHJvcHMuY29udGVudENsYXNzKSB8fFxuICAgICAgKHRoaXMucHJvcHMubG9hZE1vcmVDb250ZW50S2V5ICYmIHRoaXMucHJvcHMuY29udGVudENsYXNzKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURpc3BsYXlUZXh0cygpOiB2b2lkIHtcbiAgICAvLyBUaXRsZVxuICAgIGlmICh0aGlzLnByb3BzLnRpdGxlQ29udGVudEtleSAmJiB0aGlzLnByb3BzLmNvbnRlbnRDbGFzcykge1xuICAgICAgdGhpcy5kaXNwbGF5VGl0bGUgPSB0aGlzLmxhbmdTZXJ2aWNlLmdldFRleHQoXG4gICAgICAgIHRoaXMucHJvcHMuY29udGVudENsYXNzLFxuICAgICAgICB0aGlzLnByb3BzLnRpdGxlQ29udGVudEtleSxcbiAgICAgICAgdGhpcy5wcm9wcy50aXRsZUNvbnRlbnRGYWxsYmFjayB8fCB0aGlzLnByb3BzLnRpdGxlIHx8ICdDb21tZW50cydcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGlzcGxheVRpdGxlID0gdGhpcy5wcm9wcy50aXRsZSB8fCAnQ29tbWVudHMnO1xuICAgIH1cblxuICAgIC8vIExvYWQgbW9yZSBsYWJlbFxuICAgIGlmICh0aGlzLnByb3BzLmxvYWRNb3JlQ29udGVudEtleSAmJiB0aGlzLnByb3BzLmNvbnRlbnRDbGFzcykge1xuICAgICAgdGhpcy5kaXNwbGF5TG9hZE1vcmVMYWJlbCA9IHRoaXMubGFuZ1NlcnZpY2UuZ2V0VGV4dChcbiAgICAgICAgdGhpcy5wcm9wcy5jb250ZW50Q2xhc3MsXG4gICAgICAgIHRoaXMucHJvcHMubG9hZE1vcmVDb250ZW50S2V5LFxuICAgICAgICB0aGlzLnByb3BzLmxvYWRNb3JlTGFiZWwgfHwgJ0xvYWQgbW9yZSBjb21tZW50cydcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGlzcGxheUxvYWRNb3JlTGFiZWwgPSB0aGlzLnByb3BzLmxvYWRNb3JlTGFiZWwgfHwgJ0xvYWQgbW9yZSBjb21tZW50cyc7XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0Q291bnQoY291bnQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKGNvdW50ID49IDEwMDAwMDApIHtcbiAgICAgIHJldHVybiAoY291bnQgLyAxMDAwMDAwKS50b0ZpeGVkKDEpLnJlcGxhY2UoL1xcLjAkLywgJycpICsgJ00nO1xuICAgIH1cbiAgICBpZiAoY291bnQgPj0gMTAwMCkge1xuICAgICAgcmV0dXJuIChjb3VudCAvIDEwMDApLnRvRml4ZWQoMSkucmVwbGFjZSgvXFwuMCQvLCAnJykgKyAnSyc7XG4gICAgfVxuICAgIHJldHVybiBjb3VudC50b1N0cmluZygpO1xuICB9XG5cbiAgZ2V0U29ydE9wdGlvbkxhYmVsKG9wdGlvbjogQ29tbWVudFNvcnRPcHRpb24pOiBzdHJpbmcge1xuICAgIGlmIChvcHRpb24uY29udGVudEtleSAmJiBvcHRpb24uY29udGVudENsYXNzKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYW5nU2VydmljZS5nZXRUZXh0KFxuICAgICAgICBvcHRpb24uY29udGVudENsYXNzLFxuICAgICAgICBvcHRpb24uY29udGVudEtleSxcbiAgICAgICAgb3B0aW9uLmNvbnRlbnRGYWxsYmFjayB8fCBvcHRpb24ubGFiZWxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb24ubGFiZWw7XG4gIH1cblxuICBnZXRJbnB1dFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5wcm9wcy5pbnB1dENvbmZpZztcbiAgICBpZiAoY29uZmlnPy5wbGFjZWhvbGRlckNvbnRlbnRLZXkgJiYgY29uZmlnPy5jb250ZW50Q2xhc3MpIHtcbiAgICAgIHJldHVybiB0aGlzLmxhbmdTZXJ2aWNlLmdldFRleHQoXG4gICAgICAgIGNvbmZpZy5jb250ZW50Q2xhc3MsXG4gICAgICAgIGNvbmZpZy5wbGFjZWhvbGRlckNvbnRlbnRLZXksXG4gICAgICAgIGNvbmZpZy5wbGFjZWhvbGRlciB8fCAnV3JpdGUgYSBjb21tZW50Li4uJ1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbmZpZz8ucGxhY2Vob2xkZXIgfHwgJ1dyaXRlIGEgY29tbWVudC4uLic7XG4gIH1cblxuICBnZXRTdWJtaXRMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMucHJvcHMuaW5wdXRDb25maWc7XG4gICAgaWYgKGNvbmZpZz8uc3VibWl0TGFiZWxDb250ZW50S2V5ICYmIGNvbmZpZz8uY29udGVudENsYXNzKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYW5nU2VydmljZS5nZXRUZXh0KFxuICAgICAgICBjb25maWcuY29udGVudENsYXNzLFxuICAgICAgICBjb25maWcuc3VibWl0TGFiZWxDb250ZW50S2V5LFxuICAgICAgICBjb25maWcuc3VibWl0TGFiZWwgfHwgJ1Bvc3QnXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gY29uZmlnPy5zdWJtaXRMYWJlbCB8fCAnUG9zdCc7XG4gIH1cblxuICBnZXRFbXB0eVRpdGxlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZW1wdHkgPSB0aGlzLnByb3BzLmVtcHR5U3RhdGU7XG4gICAgaWYgKGVtcHR5Py50aXRsZUNvbnRlbnRLZXkgJiYgZW1wdHk/LmNvbnRlbnRDbGFzcykge1xuICAgICAgcmV0dXJuIHRoaXMubGFuZ1NlcnZpY2UuZ2V0VGV4dChcbiAgICAgICAgZW1wdHkuY29udGVudENsYXNzLFxuICAgICAgICBlbXB0eS50aXRsZUNvbnRlbnRLZXksXG4gICAgICAgIGVtcHR5LnRpdGxlIHx8ICdObyBjb21tZW50cyB5ZXQnXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZW1wdHk/LnRpdGxlIHx8ICdObyBjb21tZW50cyB5ZXQnO1xuICB9XG5cbiAgZ2V0RW1wdHlNZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZW1wdHkgPSB0aGlzLnByb3BzLmVtcHR5U3RhdGU7XG4gICAgaWYgKGVtcHR5Py5tZXNzYWdlQ29udGVudEtleSAmJiBlbXB0eT8uY29udGVudENsYXNzKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYW5nU2VydmljZS5nZXRUZXh0KFxuICAgICAgICBlbXB0eS5jb250ZW50Q2xhc3MsXG4gICAgICAgIGVtcHR5Lm1lc3NhZ2VDb250ZW50S2V5LFxuICAgICAgICBlbXB0eS5tZXNzYWdlIHx8ICdCZSB0aGUgZmlyc3QgdG8gc2hhcmUgeW91ciB0aG91Z2h0cyEnXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZW1wdHk/Lm1lc3NhZ2UgfHwgJ0JlIHRoZSBmaXJzdCB0byBzaGFyZSB5b3VyIHRob3VnaHRzISc7XG4gIH1cblxuICBnZXRTa2VsZXRvbkFycmF5KCk6IG51bWJlcltdIHtcbiAgICBjb25zdCBjb3VudCA9IHRoaXMucHJvcHMuc2tlbGV0b25Db3VudCB8fCAzO1xuICAgIHJldHVybiBBcnJheShjb3VudCkuZmlsbCgwKS5tYXAoKF8sIGkpID0+IGkpO1xuICB9XG5cbiAgY2FuU3VibWl0KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG1pbkxlbmd0aCA9IHRoaXMucHJvcHMuaW5wdXRDb25maWc/Lm1pbkxlbmd0aCB8fCAxO1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLm5ld0NvbW1lbnRUZXh0LnRyaW0oKS5sZW5ndGggPj0gbWluTGVuZ3RoICYmXG4gICAgICAhdGhpcy5wcm9wcy5sb2FkaW5nICYmXG4gICAgICAhdGhpcy5wcm9wcy5pbnB1dENvbmZpZz8uZGlzYWJsZWRcbiAgICApO1xuICB9XG5cbiAgaXNOZWFyTGltaXQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbWF4TGVuZ3RoID0gdGhpcy5wcm9wcy5pbnB1dENvbmZpZz8ubWF4TGVuZ3RoIHx8IDIwMDA7XG4gICAgcmV0dXJuIHRoaXMubmV3Q29tbWVudFRleHQubGVuZ3RoID4gbWF4TGVuZ3RoICogMC45O1xuICB9XG5cbiAgb25Tb3J0Q2hhbmdlKGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkVG9rZW4gPSBldmVudC5kZXRhaWwudmFsdWU7XG4gICAgY29uc3Qgb3B0aW9uID0gdGhpcy5wcm9wcy5zb3J0T3B0aW9ucz8uZmluZCgobykgPT4gby50b2tlbiA9PT0gc2VsZWN0ZWRUb2tlbik7XG5cbiAgICBpZiAob3B0aW9uKSB7XG4gICAgICB0aGlzLnNvcnRDaGFuZ2UuZW1pdCh7XG4gICAgICAgIG9wdGlvbixcbiAgICAgICAgcHJldmlvdXNTb3J0OiB0aGlzLnByb3BzLnNlbGVjdGVkU29ydCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uU3VibWl0Q29tbWVudCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2FuU3VibWl0KCkpIHJldHVybjtcblxuICAgIHRoaXMuY29tbWVudFN1Ym1pdC5lbWl0KHtcbiAgICAgIGNvbnRlbnQ6IHRoaXMubmV3Q29tbWVudFRleHQudHJpbSgpLFxuICAgICAgcGFyZW50VG9rZW46IHRoaXMucmVwbHlpbmdUbyB8fCB1bmRlZmluZWQsXG4gICAgICBzZWN0aW9uVG9rZW46IHRoaXMucHJvcHMudG9rZW4sXG4gICAgfSk7XG5cbiAgICB0aGlzLm5ld0NvbW1lbnRUZXh0ID0gJyc7XG4gICAgdGhpcy5yZXBseWluZ1RvID0gbnVsbDtcbiAgfVxuXG4gIG9uQ29tbWVudEFjdGlvbihldmVudDogQ29tbWVudEFjdGlvbkNsaWNrRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBDaGVjayBpZiBpdCdzIGEgcmVwbHkgYWN0aW9uXG4gICAgaWYgKGV2ZW50LmFjdGlvbi50b2tlbiA9PT0gJ3JlcGx5Jykge1xuICAgICAgdGhpcy5yZXBseWluZ1RvID0gZXZlbnQuY29tbWVudFRva2VuO1xuICAgICAgdGhpcy5yZXBseVN0YXJ0LmVtaXQoeyBjb21tZW50VG9rZW46IGV2ZW50LmNvbW1lbnRUb2tlbiB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmFjdGlvbkNsaWNrLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25Mb2FkTW9yZSgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRNb3JlLmVtaXQoe1xuICAgICAgc2VjdGlvblRva2VuOiB0aGlzLnByb3BzLnRva2VuLFxuICAgICAgY3VycmVudENvdW50OiB0aGlzLnByb3BzLmNvbW1lbnRzPy5sZW5ndGggfHwgMCxcbiAgICB9KTtcbiAgfVxuXG4gIG9uSW5maW5pdGVTY3JvbGwoZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5sb2FkTW9yZS5lbWl0KHtcbiAgICAgIHNlY3Rpb25Ub2tlbjogdGhpcy5wcm9wcy50b2tlbixcbiAgICAgIGN1cnJlbnRDb3VudDogdGhpcy5wcm9wcy5jb21tZW50cz8ubGVuZ3RoIHx8IDAsXG4gICAgfSk7XG5cbiAgICAvLyBUaGUgcGFyZW50IGNvbXBvbmVudCBzaG91bGQgY2FsbCBjb21wbGV0ZUluZmluaXRlU2Nyb2xsKCkgd2hlbiBkb25lIGxvYWRpbmdcbiAgICAvLyBTdG9yZSByZWZlcmVuY2UgdG8gY29tcGxldGUgdGhlIGluZmluaXRlIHNjcm9sbFxuICAgIHRoaXMuaW5maW5pdGVTY3JvbGxFdmVudCA9IGV2ZW50O1xuICB9XG5cbiAgLy8gQ2FsbCB0aGlzIG1ldGhvZCBmcm9tIHBhcmVudCBhZnRlciBsb2FkaW5nIG1vcmUgY29tbWVudHNcbiAgY29tcGxldGVJbmZpbml0ZVNjcm9sbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbmZpbml0ZVNjcm9sbEV2ZW50KSB7XG4gICAgICAodGhpcy5pbmZpbml0ZVNjcm9sbEV2ZW50LnRhcmdldCBhcyBIVE1MSW9uSW5maW5pdGVTY3JvbGxFbGVtZW50KS5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5pbmZpbml0ZVNjcm9sbEV2ZW50ID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluZmluaXRlU2Nyb2xsRXZlbnQ6IEN1c3RvbUV2ZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLy8gTWV0aG9kIHRvIHByb2dyYW1tYXRpY2FsbHkgc3RhcnQgYSByZXBseVxuICBzdGFydFJlcGx5KGNvbW1lbnRUb2tlbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5yZXBseWluZ1RvID0gY29tbWVudFRva2VuO1xuICB9XG5cbiAgLy8gTWV0aG9kIHRvIGNhbmNlbCByZXBseVxuICBjYW5jZWxSZXBseSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlcGx5aW5nVG8gPSBudWxsO1xuICB9XG59XG4iXX0=
|
|
532
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvY29tbWVudC1zZWN0aW9uL2NvbW1lbnQtc2VjdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFDTCxPQUFPLEVBQ1AsU0FBUyxFQUNULFFBQVEsRUFDUixXQUFXLEVBQ1gsT0FBTyxFQUNQLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLGlCQUFpQixFQUNqQix3QkFBd0IsR0FDekIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLFdBQVcsRUFDWCx5QkFBeUIsRUFDekIsbUJBQW1CLEdBQ3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7QUFnQjVFLFFBQVEsQ0FBQztJQUNQLGtCQUFrQjtJQUNsQixhQUFhO0lBQ2IsV0FBVztJQUNYLHlCQUF5QjtJQUN6QixtQkFBbUI7Q0FDcEIsQ0FBQyxDQUFDO0FBK0tIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Q1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNKVDs4QkErQ1EsS0FBSztzQkFBYixLQUFLO2dCQUdJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUdHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUdHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBJb25JY29uLFxuICBJb25CdXR0b24sXG4gIElvbkJhZGdlLFxuICBJb25UZXh0YXJlYSxcbiAgSW9uSXRlbSxcbiAgSW9uU2VsZWN0LFxuICBJb25TZWxlY3RPcHRpb24sXG4gIElvblNwaW5uZXIsXG4gIElvbkluZmluaXRlU2Nyb2xsLFxuICBJb25JbmZpbml0ZVNjcm9sbENvbnRlbnQsXG59IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQge1xuICBjaGF0YnViYmxlc091dGxpbmUsXG4gIGZpbHRlck91dGxpbmUsXG4gIHNlbmRPdXRsaW5lLFxuICBjaGF0YnViYmxlRWxsaXBzZXNPdXRsaW5lLFxuICBzd2FwVmVydGljYWxPdXRsaW5lLFxufSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5cbmltcG9ydCB7IENvbW1lbnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvY29tbWVudC9jb21tZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdmF0YXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa2VsZXRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3NrZWxldG9uL3NrZWxldG9uLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBDb21tZW50U2VjdGlvbk1ldGFkYXRhLFxuICBDb21tZW50U29ydE9wdGlvbixcbiAgQ29tbWVudFNvcnRDaGFuZ2VFdmVudCxcbiAgQ29tbWVudFN1Ym1pdEV2ZW50LFxuICBDb21tZW50U2VjdGlvbkxvYWRNb3JlRXZlbnQsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgQ29tbWVudEF1dGhvckNsaWNrRXZlbnQsXG4gIENvbW1lbnRSZWFjdGlvbkNsaWNrRXZlbnQsXG4gIENvbW1lbnRBY3Rpb25DbGlja0V2ZW50LFxuICBDb21tZW50TWVudUl0ZW1DbGlja0V2ZW50LFxuICBDb21tZW50TG9hZE1vcmVFdmVudCxcbn0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2NvbW1lbnQvdHlwZXMnO1xuXG5hZGRJY29ucyh7XG4gIGNoYXRidWJibGVzT3V0bGluZSxcbiAgZmlsdGVyT3V0bGluZSxcbiAgc2VuZE91dGxpbmUsXG4gIGNoYXRidWJibGVFbGxpcHNlc091dGxpbmUsXG4gIHN3YXBWZXJ0aWNhbE91dGxpbmUsXG59KTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWNvbW1lbnQtc2VjdGlvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgSW9uSWNvbixcbiAgICBJb25CdXR0b24sXG4gICAgSW9uQmFkZ2UsXG4gICAgSW9uVGV4dGFyZWEsXG4gICAgSW9uSXRlbSxcbiAgICBJb25TZWxlY3QsXG4gICAgSW9uU2VsZWN0T3B0aW9uLFxuICAgIElvblNwaW5uZXIsXG4gICAgSW9uSW5maW5pdGVTY3JvbGwsXG4gICAgSW9uSW5maW5pdGVTY3JvbGxDb250ZW50LFxuICAgIENvbW1lbnRDb21wb25lbnQsXG4gICAgQXZhdGFyQ29tcG9uZW50LFxuICAgIFNrZWxldG9uQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJjb21tZW50LXNlY3Rpb25cIiBbY2xhc3MubG9hZGluZ109XCJwcm9wcy5sb2FkaW5nXCI+XG4gICAgICA8IS0tIEhlYWRlciAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXRpdGxlXCI+XG4gICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGF0YnViYmxlcy1vdXRsaW5lXCIgY2xhc3M9XCJ0aXRsZS1pY29uXCI+PC9pb24taWNvbj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJ0aXRsZVwiPnt7IGRpc3BsYXlUaXRsZSB9fTwvaDM+XG4gICAgICAgICAgQGlmIChwcm9wcy5zaG93Q291bnQgIT09IGZhbHNlICYmIHByb3BzLmNvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIDxpb24tYmFkZ2UgY29sb3I9XCJtZWRpdW1cIiBjbGFzcz1cImNvdW50LWJhZGdlXCI+XG4gICAgICAgICAgICAgIHt7IGZvcm1hdENvdW50KHByb3BzLmNvdW50KSB9fVxuICAgICAgICAgICAgPC9pb24tYmFkZ2U+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKHByb3BzLnNvcnRPcHRpb25zICYmIHByb3BzLnNvcnRPcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWFjdGlvbnNcIj5cbiAgICAgICAgICAgIDxpb24taXRlbSBsaW5lcz1cIm5vbmVcIiBjbGFzcz1cInNvcnQtc2VsZWN0LWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJzd2FwLXZlcnRpY2FsLW91dGxpbmVcIiBzbG90PVwic3RhcnRcIiBjbGFzcz1cInNvcnQtaWNvblwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIDxpb24tc2VsZWN0XG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInByb3BzLnNlbGVjdGVkU29ydFwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInByb3BzLnNvcnRMYWJlbCB8fCAnU29ydCBieSdcIlxuICAgICAgICAgICAgICAgIGludGVyZmFjZT1cInBvcG92ZXJcIlxuICAgICAgICAgICAgICAgIChpb25DaGFuZ2UpPVwib25Tb3J0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQGZvciAob3B0aW9uIG9mIHByb3BzLnNvcnRPcHRpb25zOyB0cmFjayBvcHRpb24udG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiBbdmFsdWVdPVwib3B0aW9uLnRva2VuXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGdldFNvcnRPcHRpb25MYWJlbChvcHRpb24pIH19XG4gICAgICAgICAgICAgICAgICA8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9pb24tc2VsZWN0PlxuICAgICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gTmV3IENvbW1lbnQgSW5wdXQgLS0+XG4gICAgICBAaWYgKHByb3BzLnNob3dJbnB1dCAhPT0gZmFsc2UpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5ldy1jb21tZW50LXNlY3Rpb25cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtd3JhcHBlclwiPlxuICAgICAgICAgICAgQGlmIChwcm9wcy5pbnB1dENvbmZpZz8uY3VycmVudFVzZXI/LmF2YXRhcikge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtYXZhdGFyXCI+XG4gICAgICAgICAgICAgICAgPHZhbC1hdmF0YXIgW3Byb3BzXT1cInByb3BzLmlucHV0Q29uZmlnLmN1cnJlbnRVc2VyLmF2YXRhclwiPjwvdmFsLWF2YXRhcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgPGlvbi10ZXh0YXJlYVxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibmV3Q29tbWVudFRleHRcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJnZXRJbnB1dFBsYWNlaG9sZGVyKClcIlxuICAgICAgICAgICAgICAgIFttYXhsZW5ndGhdPVwicHJvcHMuaW5wdXRDb25maWc/Lm1heExlbmd0aCB8fCAyMDAwXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJvcHMuaW5wdXRDb25maWc/LmRpc2FibGVkIHx8IHByb3BzLmxvYWRpbmdcIlxuICAgICAgICAgICAgICAgIFthdXRvR3Jvd109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICByb3dzPVwiMlwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb21tZW50LXRleHRhcmVhXCJcbiAgICAgICAgICAgICAgPjwvaW9uLXRleHRhcmVhPlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgQGlmIChwcm9wcy5pbnB1dENvbmZpZz8uc2hvd0NvdW50ZXIgJiYgcHJvcHMuaW5wdXRDb25maWc/Lm1heExlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGFyLWNvdW50ZXJcIiBbY2xhc3Mud2FybmluZ109XCJpc05lYXJMaW1pdCgpXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IG5ld0NvbW1lbnRUZXh0Lmxlbmd0aCB9fSAvIHt7IHByb3BzLmlucHV0Q29uZmlnLm1heExlbmd0aCB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICBbY29sb3JdPVwicHJvcHMuaW5wdXRDb25maWc/LnN1Ym1pdENvbG9yIHx8IHByb3BzLmNvbG9yIHx8ICdwcmltYXJ5J1wiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhblN1Ym1pdCgpXCJcbiAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TdWJtaXRDb21tZW50KClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwic2VuZC1vdXRsaW5lXCIgc2xvdD1cInN0YXJ0XCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldFN1Ym1pdExhYmVsKCkgfX1cbiAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICBAaWYgKHByb3BzLmxvYWRpbmcpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImxvYWRpbmctc3RhdGVcIj5cbiAgICAgICAgICBAZm9yIChpIG9mIGdldFNrZWxldG9uQXJyYXkoKTsgdHJhY2sgaSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNrZWxldG9uLWNvbW1lbnRcIj5cbiAgICAgICAgICAgICAgPHZhbC1za2VsZXRvbiBbcHJvcHNdPVwieyB0eXBlOiAnYXZhdGFyJywgd2lkdGg6ICczNnB4JywgaGVpZ2h0OiAnMzZweCcgfVwiPjwvdmFsLXNrZWxldG9uPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24tY29udGVudFwiPlxuICAgICAgICAgICAgICAgIDx2YWwtc2tlbGV0b24gW3Byb3BzXT1cInsgdHlwZTogJ3RleHQnLCB3aWR0aDogJzEyMHB4JywgaGVpZ2h0OiAnMTRweCcgfVwiPjwvdmFsLXNrZWxldG9uPlxuICAgICAgICAgICAgICAgIDx2YWwtc2tlbGV0b24gW3Byb3BzXT1cInsgdHlwZTogJ3BhcmFncmFwaCcsIGxpbmVzOiAyIH1cIj48L3ZhbC1za2VsZXRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfSBAZWxzZSBpZiAocHJvcHMuY29tbWVudHMgJiYgcHJvcHMuY29tbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudHMtbGlzdFwiIFtjbGFzcy53aXRoLWRpdmlkZXJzXT1cInByb3BzLnNob3dEaXZpZGVyc1wiPlxuICAgICAgICAgIEBmb3IgKGNvbW1lbnQgb2YgcHJvcHMuY29tbWVudHM7IHRyYWNrIGNvbW1lbnQudG9rZW4pIHtcbiAgICAgICAgICAgIDx2YWwtY29tbWVudFxuICAgICAgICAgICAgICBbcHJvcHNdPVwiY29tbWVudFwiXG4gICAgICAgICAgICAgIChhdXRob3JDbGljayk9XCJhdXRob3JDbGljay5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAocmVhY3Rpb25DbGljayk9XCJyZWFjdGlvbkNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChhY3Rpb25DbGljayk9XCJvbkNvbW1lbnRBY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChtZW51SXRlbUNsaWNrKT1cIm1lbnVJdGVtQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKGxvYWRNb3JlQ2xpY2spPVwiY29tbWVudExvYWRNb3JlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChjb2xsYXBzZVRvZ2dsZSk9XCJjb2xsYXBzZVRvZ2dsZS5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgPjwvdmFsLWNvbW1lbnQ+XG5cbiAgICAgICAgICAgIEBpZiAocHJvcHMuc2hvd0RpdmlkZXJzICYmICEkbGFzdCkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudC1kaXZpZGVyXCI+PC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChwcm9wcy5oYXNNb3JlICYmIHByb3BzLnBhZ2luYXRpb25Nb2RlICE9PSAnaW5maW5pdGUnKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9hZC1tb3JlLXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgQGlmIChwcm9wcy5sb2FkaW5nTW9yZSkge1xuICAgICAgICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIiBbY29sb3JdPVwicHJvcHMuY29sb3IgfHwgJ3ByaW1hcnknXCI+PC9pb24tc3Bpbm5lcj5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJwcm9wcy5jb2xvciB8fCAncHJpbWFyeSdcIlxuICAgICAgICAgICAgICAgICAgZXhwYW5kPVwiYmxvY2tcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTG9hZE1vcmUoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgZGlzcGxheUxvYWRNb3JlTGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgQGlmIChwcm9wcy5wYWdpbmF0aW9uTW9kZSA9PT0gJ2luZmluaXRlJykge1xuICAgICAgICAgIDxpb24taW5maW5pdGUtc2Nyb2xsXG4gICAgICAgICAgICBbdGhyZXNob2xkXT1cInByb3BzLmluZmluaXRlU2Nyb2xsVGhyZXNob2xkIHx8ICcxMDBweCdcIlxuICAgICAgICAgICAgW3Bvc2l0aW9uXT1cInByb3BzLmluZmluaXRlU2Nyb2xsUG9zaXRpb24gfHwgJ2JvdHRvbSdcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFwcm9wcy5oYXNNb3JlXCJcbiAgICAgICAgICAgIChpb25JbmZpbml0ZSk9XCJvbkluZmluaXRlU2Nyb2xsKCRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpb24taW5maW5pdGUtc2Nyb2xsLWNvbnRlbnRcbiAgICAgICAgICAgICAgW2xvYWRpbmdTcGlubmVyXT1cIidjcmVzY2VudCdcIlxuICAgICAgICAgICAgICBbbG9hZGluZ1RleHRdPVwiZGlzcGxheUxvYWRNb3JlTGFiZWxcIlxuICAgICAgICAgICAgPjwvaW9uLWluZmluaXRlLXNjcm9sbC1jb250ZW50PlxuICAgICAgICAgIDwvaW9uLWluZmluaXRlLXNjcm9sbD5cbiAgICAgICAgfVxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZVwiPlxuICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgW25hbWVdPVwicHJvcHMuZW1wdHlTdGF0ZT8uaWNvbiB8fCAnY2hhdGJ1YmJsZS1lbGxpcHNlcy1vdXRsaW5lJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImVtcHR5LWljb25cIlxuICAgICAgICAgID48L2lvbi1pY29uPlxuICAgICAgICAgIDxoNCBjbGFzcz1cImVtcHR5LXRpdGxlXCI+e3sgZ2V0RW1wdHlUaXRsZSgpIH19PC9oND5cbiAgICAgICAgICA8cCBjbGFzcz1cImVtcHR5LW1lc3NhZ2VcIj57eyBnZXRFbXB0eU1lc3NhZ2UoKSB9fTwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2NvbW1lbnQtc2VjdGlvbi5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLWNvbW1lbnQtc2VjdGlvblxuICpcbiAqIEFuIG9yZ2FuaXNtIGNvbXBvbmVudCB0aGF0IHByb3ZpZGVzIGEgY29tcGxldGUgY29tbWVudCBzZWN0aW9uIHdpdGg6XG4gKiAtIEhlYWRlciB3aXRoIHRpdGxlIGFuZCBjb3VudFxuICogLSBTb3J0L2ZpbHRlciBvcHRpb25zXG4gKiAtIE5ldyBjb21tZW50IGlucHV0XG4gKiAtIENvbW1lbnRzIGxpc3Qgd2l0aCB2YWwtY29tbWVudFxuICogLSBMb2FkIG1vcmUgcGFnaW5hdGlvblxuICogLSBFbXB0eSBzdGF0ZVxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlXG4gKiA8dmFsLWNvbW1lbnQtc2VjdGlvbiBbcHJvcHNdPVwie1xuICogICB0aXRsZTogJ0NvbW1lbnRzJyxcbiAqICAgY291bnQ6IDQyLFxuICogICBjb21tZW50czogY29tbWVudHNBcnJheSxcbiAqICAgc2hvd0lucHV0OiB0cnVlXG4gKiB9XCI+PC92YWwtY29tbWVudC1zZWN0aW9uPlxuICpcbiAqIEBleGFtcGxlIFdpdGggc29ydGluZ1xuICogPHZhbC1jb21tZW50LXNlY3Rpb24gW3Byb3BzXT1cIntcbiAqICAgdGl0bGU6ICdSZXZpZXdzJyxcbiAqICAgY291bnQ6IDEyOCxcbiAqICAgY29tbWVudHM6IHJldmlld3MsXG4gKiAgIHNvcnRPcHRpb25zOiBbXG4gKiAgICAgeyB0b2tlbjogJ25ld2VzdCcsIGxhYmVsOiAnTmV3ZXN0IGZpcnN0JyB9LFxuICogICAgIHsgdG9rZW46ICdvbGRlc3QnLCBsYWJlbDogJ09sZGVzdCBmaXJzdCcgfSxcbiAqICAgICB7IHRva2VuOiAncG9wdWxhcicsIGxhYmVsOiAnTW9zdCBwb3B1bGFyJyB9XG4gKiAgIF0sXG4gKiAgIHNlbGVjdGVkU29ydDogJ25ld2VzdCdcbiAqIH1cIiAoc29ydENoYW5nZSk9XCJvblNvcnQoJGV2ZW50KVwiPjwvdmFsLWNvbW1lbnQtc2VjdGlvbj5cbiAqXG4gKiBAaW5wdXQgcHJvcHM6IENvbW1lbnRTZWN0aW9uTWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgc2VjdGlvblxuICogQG91dHB1dCBzb3J0Q2hhbmdlIC0gU29ydCBvcHRpb24gY2hhbmdlZFxuICogQG91dHB1dCBjb21tZW50U3VibWl0IC0gTmV3IGNvbW1lbnQgc3VibWl0dGVkXG4gKiBAb3V0cHV0IGxvYWRNb3JlIC0gTG9hZCBtb3JlIGNsaWNrZWRcbiAqIEBvdXRwdXQgYXV0aG9yQ2xpY2sgLSBDb21tZW50IGF1dGhvciBjbGlja2VkIChidWJibGVkIGZyb20gdmFsLWNvbW1lbnQpXG4gKiBAb3V0cHV0IHJlYWN0aW9uQ2xpY2sgLSBSZWFjdGlvbiBjbGlja2VkIChidWJibGVkKVxuICogQG91dHB1dCBhY3Rpb25DbGljayAtIEFjdGlvbiBjbGlja2VkIChidWJibGVkKVxuICogQG91dHB1dCBtZW51SXRlbUNsaWNrIC0gTWVudSBpdGVtIGNsaWNrZWQgKGJ1YmJsZWQpXG4gKiBAb3V0cHV0IGNvbW1lbnRMb2FkTW9yZSAtIExvYWQgbW9yZSByZXBsaWVzIGNsaWNrZWQgKGJ1YmJsZWQpXG4gKiBAb3V0cHV0IGNvbGxhcHNlVG9nZ2xlIC0gQ29tbWVudCBjb2xsYXBzZSB0b2dnbGVkIChidWJibGVkKVxuICovXG5leHBvcnQgY2xhc3MgQ29tbWVudFNlY3Rpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBwcm9wczogQ29tbWVudFNlY3Rpb25NZXRhZGF0YTtcblxuICAvLyBTZWN0aW9uIGV2ZW50c1xuICBAT3V0cHV0KCkgc29ydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q29tbWVudFNvcnRDaGFuZ2VFdmVudD4oKTtcbiAgQE91dHB1dCgpIGNvbW1lbnRTdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPENvbW1lbnRTdWJtaXRFdmVudD4oKTtcbiAgQE91dHB1dCgpIGxvYWRNb3JlID0gbmV3IEV2ZW50RW1pdHRlcjxDb21tZW50U2VjdGlvbkxvYWRNb3JlRXZlbnQ+KCk7XG5cbiAgLy8gQnViYmxlZCBldmVudHMgZnJvbSB2YWwtY29tbWVudFxuICBAT3V0cHV0KCkgYXV0aG9yQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPENvbW1lbnRBdXRob3JDbGlja0V2ZW50PigpO1xuICBAT3V0cHV0KCkgcmVhY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Q29tbWVudFJlYWN0aW9uQ2xpY2tFdmVudD4oKTtcbiAgQE91dHB1dCgpIGFjdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxDb21tZW50QWN0aW9uQ2xpY2tFdmVudD4oKTtcbiAgQE91dHB1dCgpIG1lbnVJdGVtQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPENvbW1lbnRNZW51SXRlbUNsaWNrRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBjb21tZW50TG9hZE1vcmUgPSBuZXcgRXZlbnRFbWl0dGVyPENvbW1lbnRMb2FkTW9yZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgY29sbGFwc2VUb2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgdG9rZW46IHN0cmluZzsgY29sbGFwc2VkOiBib29sZWFuIH0+KCk7XG5cbiAgLy8gUmVwbHkgc3RhdGVcbiAgQE91dHB1dCgpIHJlcGx5U3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgY29tbWVudFRva2VuOiBzdHJpbmcgfT4oKTtcblxuICBuZXdDb21tZW50VGV4dCA9ICcnO1xuICByZXBseWluZ1RvOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBkaXNwbGF5VGl0bGUgPSAnJztcbiAgZGlzcGxheUxvYWRNb3JlTGFiZWwgPSAnJztcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZURpc3BsYXlUZXh0cygpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEaXNwbGF5VGV4dHMoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwbGF5VGl0bGUgPSB0aGlzLnByb3BzLnRpdGxlIHx8ICdDb21lbnRhcmlvcyc7XG4gICAgdGhpcy5kaXNwbGF5TG9hZE1vcmVMYWJlbCA9IHRoaXMucHJvcHMubG9hZE1vcmVMYWJlbCB8fCAnQ2FyZ2FyIG3DoXMgY29tZW50YXJpb3MnO1xuICB9XG5cbiAgZm9ybWF0Q291bnQoY291bnQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKGNvdW50ID49IDEwMDAwMDApIHtcbiAgICAgIHJldHVybiAoY291bnQgLyAxMDAwMDAwKS50b0ZpeGVkKDEpLnJlcGxhY2UoL1xcLjAkLywgJycpICsgJ00nO1xuICAgIH1cbiAgICBpZiAoY291bnQgPj0gMTAwMCkge1xuICAgICAgcmV0dXJuIChjb3VudCAvIDEwMDApLnRvRml4ZWQoMSkucmVwbGFjZSgvXFwuMCQvLCAnJykgKyAnSyc7XG4gICAgfVxuICAgIHJldHVybiBjb3VudC50b1N0cmluZygpO1xuICB9XG5cbiAgZ2V0U29ydE9wdGlvbkxhYmVsKG9wdGlvbjogQ29tbWVudFNvcnRPcHRpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiBvcHRpb24ubGFiZWw7XG4gIH1cblxuICBnZXRJbnB1dFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuaW5wdXRDb25maWc/LnBsYWNlaG9sZGVyIHx8ICdFc2NyaWJlIHVuIGNvbWVudGFyaW8uLi4nO1xuICB9XG5cbiAgZ2V0U3VibWl0TGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5pbnB1dENvbmZpZz8uc3VibWl0TGFiZWwgfHwgJ1B1YmxpY2FyJztcbiAgfVxuXG4gIGdldEVtcHR5VGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5lbXB0eVN0YXRlPy50aXRsZSB8fCAnU2luIGNvbWVudGFyaW9zIGHDum4nO1xuICB9XG5cbiAgZ2V0RW1wdHlNZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuZW1wdHlTdGF0ZT8ubWVzc2FnZSB8fCAnwqFTw6kgZWwgcHJpbWVybyBlbiBjb21wYXJ0aXIgdHUgb3BpbmnDs24hJztcbiAgfVxuXG4gIGdldFNrZWxldG9uQXJyYXkoKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IGNvdW50ID0gdGhpcy5wcm9wcy5za2VsZXRvbkNvdW50IHx8IDM7XG4gICAgcmV0dXJuIEFycmF5KGNvdW50KS5maWxsKDApLm1hcCgoXywgaSkgPT4gaSk7XG4gIH1cblxuICBjYW5TdWJtaXQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbWluTGVuZ3RoID0gdGhpcy5wcm9wcy5pbnB1dENvbmZpZz8ubWluTGVuZ3RoIHx8IDE7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMubmV3Q29tbWVudFRleHQudHJpbSgpLmxlbmd0aCA+PSBtaW5MZW5ndGggJiZcbiAgICAgICF0aGlzLnByb3BzLmxvYWRpbmcgJiZcbiAgICAgICF0aGlzLnByb3BzLmlucHV0Q29uZmlnPy5kaXNhYmxlZFxuICAgICk7XG4gIH1cblxuICBpc05lYXJMaW1pdCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBtYXhMZW5ndGggPSB0aGlzLnByb3BzLmlucHV0Q29uZmlnPy5tYXhMZW5ndGggfHwgMjAwMDtcbiAgICByZXR1cm4gdGhpcy5uZXdDb21tZW50VGV4dC5sZW5ndGggPiBtYXhMZW5ndGggKiAwLjk7XG4gIH1cblxuICBvblNvcnRDaGFuZ2UoZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWRUb2tlbiA9IGV2ZW50LmRldGFpbC52YWx1ZTtcbiAgICBjb25zdCBvcHRpb24gPSB0aGlzLnByb3BzLnNvcnRPcHRpb25zPy5maW5kKChvKSA9PiBvLnRva2VuID09PSBzZWxlY3RlZFRva2VuKTtcblxuICAgIGlmIChvcHRpb24pIHtcbiAgICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHtcbiAgICAgICAgb3B0aW9uLFxuICAgICAgICBwcmV2aW91c1NvcnQ6IHRoaXMucHJvcHMuc2VsZWN0ZWRTb3J0LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb25TdWJtaXRDb21tZW50KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jYW5TdWJtaXQoKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5jb21tZW50U3VibWl0LmVtaXQoe1xuICAgICAgY29udGVudDogdGhpcy5uZXdDb21tZW50VGV4dC50cmltKCksXG4gICAgICBwYXJlbnRUb2tlbjogdGhpcy5yZXBseWluZ1RvIHx8IHVuZGVmaW5lZCxcbiAgICAgIHNlY3Rpb25Ub2tlbjogdGhpcy5wcm9wcy50b2tlbixcbiAgICB9KTtcblxuICAgIHRoaXMubmV3Q29tbWVudFRleHQgPSAnJztcbiAgICB0aGlzLnJlcGx5aW5nVG8gPSBudWxsO1xuICB9XG5cbiAgb25Db21tZW50QWN0aW9uKGV2ZW50OiBDb21tZW50QWN0aW9uQ2xpY2tFdmVudCk6IHZvaWQge1xuICAgIC8vIENoZWNrIGlmIGl0J3MgYSByZXBseSBhY3Rpb25cbiAgICBpZiAoZXZlbnQuYWN0aW9uLnRva2VuID09PSAncmVwbHknKSB7XG4gICAgICB0aGlzLnJlcGx5aW5nVG8gPSBldmVudC5jb21tZW50VG9rZW47XG4gICAgICB0aGlzLnJlcGx5U3RhcnQuZW1pdCh7IGNvbW1lbnRUb2tlbjogZXZlbnQuY29tbWVudFRva2VuIH0pO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aW9uQ2xpY2suZW1pdChldmVudCk7XG4gIH1cblxuICBvbkxvYWRNb3JlKCk6IHZvaWQge1xuICAgIHRoaXMubG9hZE1vcmUuZW1pdCh7XG4gICAgICBzZWN0aW9uVG9rZW46IHRoaXMucHJvcHMudG9rZW4sXG4gICAgICBjdXJyZW50Q291bnQ6IHRoaXMucHJvcHMuY29tbWVudHM/Lmxlbmd0aCB8fCAwLFxuICAgIH0pO1xuICB9XG5cbiAgb25JbmZpbml0ZVNjcm9sbChldmVudDogQ3VzdG9tRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRNb3JlLmVtaXQoe1xuICAgICAgc2VjdGlvblRva2VuOiB0aGlzLnByb3BzLnRva2VuLFxuICAgICAgY3VycmVudENvdW50OiB0aGlzLnByb3BzLmNvbW1lbnRzPy5sZW5ndGggfHwgMCxcbiAgICB9KTtcblxuICAgIC8vIFRoZSBwYXJlbnQgY29tcG9uZW50IHNob3VsZCBjYWxsIGNvbXBsZXRlSW5maW5pdGVTY3JvbGwoKSB3aGVuIGRvbmUgbG9hZGluZ1xuICAgIC8vIFN0b3JlIHJlZmVyZW5jZSB0byBjb21wbGV0ZSB0aGUgaW5maW5pdGUgc2Nyb2xsXG4gICAgdGhpcy5pbmZpbml0ZVNjcm9sbEV2ZW50ID0gZXZlbnQ7XG4gIH1cblxuICAvLyBDYWxsIHRoaXMgbWV0aG9kIGZyb20gcGFyZW50IGFmdGVyIGxvYWRpbmcgbW9yZSBjb21tZW50c1xuICBjb21wbGV0ZUluZmluaXRlU2Nyb2xsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmluZmluaXRlU2Nyb2xsRXZlbnQpIHtcbiAgICAgICh0aGlzLmluZmluaXRlU2Nyb2xsRXZlbnQudGFyZ2V0IGFzIEhUTUxJb25JbmZpbml0ZVNjcm9sbEVsZW1lbnQpLmNvbXBsZXRlKCk7XG4gICAgICB0aGlzLmluZmluaXRlU2Nyb2xsRXZlbnQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5maW5pdGVTY3JvbGxFdmVudDogQ3VzdG9tRXZlbnQgfCBudWxsID0gbnVsbDtcblxuICAvLyBNZXRob2QgdG8gcHJvZ3JhbW1hdGljYWxseSBzdGFydCBhIHJlcGx5XG4gIHN0YXJ0UmVwbHkoY29tbWVudFRva2VuOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnJlcGx5aW5nVG8gPSBjb21tZW50VG9rZW47XG4gIH1cblxuICAvLyBNZXRob2QgdG8gY2FuY2VsIHJlcGx5XG4gIGNhbmNlbFJlcGx5KCk6IHZvaWQge1xuICAgIHRoaXMucmVwbHlpbmdUbyA9IG51bGw7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -4,7 +4,6 @@ import { FormsModule } from '@angular/forms';
|
|
|
4
4
|
import { IonButton, IonIcon, IonCheckbox, IonSpinner, IonSelect, IonSelectOption, } from '@ionic/angular/standalone';
|
|
5
5
|
import { addIcons } from 'ionicons';
|
|
6
6
|
import { chevronUpOutline, chevronDownOutline, chevronBackOutline, chevronForwardOutline, documentOutline, } from 'ionicons/icons';
|
|
7
|
-
import { LangService } from '../../../services/lang-provider/lang-provider.service';
|
|
8
7
|
import { DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_EMPTY_STATE, } from './types';
|
|
9
8
|
import * as i0 from "@angular/core";
|
|
10
9
|
import * as i1 from "@angular/common";
|
|
@@ -69,7 +68,6 @@ export class DataTableComponent {
|
|
|
69
68
|
this.selectedRows = new Set();
|
|
70
69
|
/** Cached visible columns for performance */
|
|
71
70
|
this._visibleColumns = [];
|
|
72
|
-
this.langService = inject(LangService);
|
|
73
71
|
this.cdr = inject(ChangeDetectorRef);
|
|
74
72
|
}
|
|
75
73
|
ngOnInit() {
|
|
@@ -1028,4 +1026,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
1028
1026
|
}], pageChange: [{
|
|
1029
1027
|
type: Output
|
|
1030
1028
|
}] } });
|
|
1031
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBSVosTUFBTSxFQUNOLHVCQUF1QixFQUN2QixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsT0FBTyxFQUNQLFdBQVcsRUFDWCxVQUFVLEVBQ1YsU0FBUyxFQUNULGVBQWUsR0FDaEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIsZUFBZSxHQUNoQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNwRixPQUFPLEVBUUwseUJBQXlCLEVBQ3pCLG1CQUFtQixHQUNwQixNQUFNLFNBQVMsQ0FBQzs7O0FBRWpCLFFBQVEsQ0FBQztJQUNQLGdCQUFnQjtJQUNoQixrQkFBa0I7SUFDbEIsa0JBQWtCO0lBQ2xCLHFCQUFxQjtJQUNyQixlQUFlO0NBQ2hCLENBQUMsQ0FBQztBQWlXSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMENHO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQTFZL0I7UUE2WVksYUFBUSxHQUFH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QWpCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uSW5pdCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBpbmplY3QsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIElvbkJ1dHRvbixcbiAgSW9uSWNvbixcbiAgSW9uQ2hlY2tib3gsXG4gIElvblNwaW5uZXIsXG4gIElvblNlbGVjdCxcbiAgSW9uU2VsZWN0T3B0aW9uLFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgY2hldnJvblVwT3V0bGluZSxcbiAgY2hldnJvbkRvd25PdXRsaW5lLFxuICBjaGV2cm9uQmFja091dGxpbmUsXG4gIGNoZXZyb25Gb3J3YXJkT3V0bGluZSxcbiAgZG9jdW1lbnRPdXRsaW5lLFxufSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBMYW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xhbmctcHJvdmlkZXIvbGFuZy1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIERhdGFUYWJsZU1ldGFkYXRhLFxuICBEYXRhVGFibGVDb2x1bW4sXG4gIERhdGFUYWJsZVNvcnQsXG4gIERhdGFUYWJsZVJvd0NsaWNrRXZlbnQsXG4gIERhdGFUYWJsZVNlbGVjdGlvbkNoYW5nZUV2ZW50LFxuICBEYXRhVGFibGVTb3J0Q2hhbmdlRXZlbnQsXG4gIERhdGFUYWJsZVBhZ2VDaGFuZ2VFdmVudCxcbiAgREVGQVVMVF9QQUdFX1NJWkVfT1BUSU9OUyxcbiAgREVGQVVMVF9FTVBUWV9TVEFURSxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmFkZEljb25zKHtcbiAgY2hldnJvblVwT3V0bGluZSxcbiAgY2hldnJvbkRvd25PdXRsaW5lLFxuICBjaGV2cm9uQmFja091dGxpbmUsXG4gIGNoZXZyb25Gb3J3YXJkT3V0bGluZSxcbiAgZG9jdW1lbnRPdXRsaW5lLFxufSk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1kYXRhLXRhYmxlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgSW9uQnV0dG9uLFxuICAgIElvbkljb24sXG4gICAgSW9uQ2hlY2tib3gsXG4gICAgSW9uU3Bpbm5lcixcbiAgICBJb25TZWxlY3QsXG4gICAgSW9uU2VsZWN0T3B0aW9uLFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZGF0YS10YWJsZS1jb250YWluZXJcIlxuICAgICAgW2NsYXNzXT1cInByb3BzLmNzc0NsYXNzXCJcbiAgICAgIFtjbGFzcy5zaXplLXNtYWxsXT1cInByb3BzLnNpemUgPT09ICdzbWFsbCdcIlxuICAgICAgW2NsYXNzLnNpemUtbWVkaXVtXT1cInByb3BzLnNpemUgPT09ICdtZWRpdW0nIHx8ICFwcm9wcy5zaXplXCJcbiAgICAgIFtjbGFzcy5zaXplLWxhcmdlXT1cInByb3BzLnNpemUgPT09ICdsYXJnZSdcIlxuICAgICAgW2NsYXNzLmJvcmRlcmVkXT1cInByb3BzLmJvcmRlcmVkXCJcbiAgICAgIFtjbGFzcy5zdHJpcGVkXT1cInByb3BzLnN0cmlwZWRcIlxuICAgICAgW2NsYXNzLmhvdmVyYWJsZV09XCJwcm9wcy5ob3ZlcmFibGUgIT09IGZhbHNlXCJcbiAgICAgIFtjbGFzcy5zdGlja3ktaGVhZGVyXT1cInByb3BzLnN0aWNreUhlYWRlclwiXG4gICAgICBbY2xhc3MucmVzcG9uc2l2ZS1jYXJkc109XCJwcm9wcy5yZXNwb25zaXZlTW9kZSA9PT0gJ2NhcmRzJ1wiXG4gICAgICBbc3R5bGUuLS1tYXgtaGVpZ2h0XT1cInByb3BzLm1heEhlaWdodFwiXG4gICAgPlxuICAgICAgPCEtLSBUb29sYmFyIHNsb3QgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdG9vbGJhclwiICN0b29sYmFyQ29udGFpbmVyPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbdG9vbGJhcl1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBMb2FkaW5nIG92ZXJsYXkgLS0+XG4gICAgICBAaWYgKHByb3BzLmxvYWRpbmdTdGF0ZT8ubG9hZGluZykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwibG9hZGluZy1vdmVybGF5XCI+XG4gICAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiPjwvaW9uLXNwaW5uZXI+XG4gICAgICAgICAgQGlmIChwcm9wcy5sb2FkaW5nU3RhdGU/Lm1lc3NhZ2UpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibG9hZGluZy1tZXNzYWdlXCI+e3sgcHJvcHMubG9hZGluZ1N0YXRlLm1lc3NhZ2UgfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXdyYXBwZXJcIiBbY2xhc3MuaXMtbG9hZGluZ109XCJwcm9wcy5sb2FkaW5nU3RhdGU/LmxvYWRpbmdcIj5cbiAgICAgICAgPHRhYmxlXG4gICAgICAgICAgcm9sZT1cImdyaWRcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicHJvcHMuYXJpYUxhYmVsXCJcbiAgICAgICAgPlxuICAgICAgICAgIEBpZiAocHJvcHMuY2FwdGlvbikge1xuICAgICAgICAgICAgPGNhcHRpb24gY2xhc3M9XCJzci1vbmx5XCI+e3sgcHJvcHMuY2FwdGlvbiB9fTwvY2FwdGlvbj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgIDwhLS0gU2VsZWN0aW9uIGNvbHVtbiAtLT5cbiAgICAgICAgICAgICAgQGlmIChwcm9wcy5zaG93U2VsZWN0aW9uQ29sdW1uICYmIHByb3BzLnNlbGVjdGlvbj8ubW9kZSA9PT0gJ211bHRpcGxlJykge1xuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInNlbGVjdGlvbi1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQWxsU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJpc0luZGV0ZXJtaW5hdGVcIlxuICAgICAgICAgICAgICAgICAgICAoaW9uQ2hhbmdlKT1cInRvZ2dsZVNlbGVjdEFsbCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgID48L2lvbi1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAocHJvcHMuc2hvd1NlbGVjdGlvbkNvbHVtbiAmJiBwcm9wcy5zZWxlY3Rpb24/Lm1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwic2VsZWN0aW9uLWNlbGxcIj48L3RoPlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgPCEtLSBSb3cgbnVtYmVyIGNvbHVtbiAtLT5cbiAgICAgICAgICAgICAgQGlmIChwcm9wcy5zaG93Um93TnVtYmVycykge1xuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInJvdy1udW1iZXItY2VsbFwiPiM8L3RoPlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgPCEtLSBEYXRhIGNvbHVtbnMgLS0+XG4gICAgICAgICAgICAgIEBmb3IgKGNvbHVtbiBvZiB2aXNpYmxlQ29sdW1uczsgdHJhY2sgY29sdW1uLmtleSkge1xuICAgICAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImdldENvbHVtbkNsYXNzKGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi5taW5XaWR0aFwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImNvbHVtbi5tYXhXaWR0aFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3Muc29ydGFibGVdPVwiY29sdW1uLnNvcnRhYmxlXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5zb3J0ZWRdPVwiY3VycmVudFNvcnQ/LmNvbHVtbiA9PT0gY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29sdW1uLnNvcnRhYmxlID8gb25Tb3J0KGNvbHVtbikgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc29ydF09XCJnZXRBcmlhU29ydChjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBAaWYgKGNvbHVtbi5oZWFkZXJUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uLmhlYWRlclRlbXBsYXRlOyBjb250ZXh0OiB7IGNvbHVtbiB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXItY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbHVtbi5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29sdW1uLnNvcnRhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNvcnQtaWNvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImNoZXZyb24tdXAtb3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJjdXJyZW50U29ydD8uY29sdW1uID09PSBjb2x1bW4ua2V5ICYmIGN1cnJlbnRTb3J0Py5kaXJlY3Rpb24gPT09ICdhc2MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJjaGV2cm9uLWRvd24tb3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJjdXJyZW50U29ydD8uY29sdW1uID09PSBjb2x1bW4ua2V5ICYmIGN1cnJlbnRTb3J0Py5kaXJlY3Rpb24gPT09ICdkZXNjJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICA8IS0tIEFjdGlvbnMgY29sdW1uIC0tPlxuICAgICAgICAgICAgICBAaWYgKHByb3BzLmFjdGlvbnNUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImFjdGlvbnMtY2VsbFwiIFtzdHlsZS53aWR0aF09XCJwcm9wcy5hY3Rpb25zV2lkdGggfHwgJzEwMHB4J1wiPlxuICAgICAgICAgICAgICAgICAge3sgcHJvcHMuYWN0aW9uc0xhYmVsIHx8ICdBY2Npb25lcycgfX1cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGhlYWQ+XG5cbiAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICBAaWYgKGRpc3BsYXllZERhdGEubGVuZ3RoID09PSAwICYmICFwcm9wcy5sb2FkaW5nU3RhdGU/LmxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiZW1wdHktcm93XCI+XG4gICAgICAgICAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwidG90YWxDb2x1bW5zXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChlbXB0eVN0YXRlLnRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVtcHR5U3RhdGUudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChlbXB0eVN0YXRlLmljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJlbXB0eVN0YXRlLmljb25cIiBjbGFzcz1cImVtcHR5LWljb25cIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGVtcHR5U3RhdGUudGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cImVtcHR5LXRpdGxlXCI+e3sgZW1wdHlTdGF0ZS50aXRsZSB9fTwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZW1wdHlTdGF0ZS5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJlbXB0eS1kZXNjcmlwdGlvblwiPnt7IGVtcHR5U3RhdGUuZGVzY3JpcHRpb24gfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIEBmb3IgKHJvdyBvZiBkaXNwbGF5ZWREYXRhOyB0cmFjayB0cmFja0J5Rm4ocm93KTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICA8dHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJpc1Jvd1NlbGVjdGVkKHJvdylcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmNsaWNrYWJsZV09XCJwcm9wcy5yb3dDbGlja2FibGVcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUm93Q2xpY2socm93LCBpLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8IS0tIFNlbGVjdGlvbiBjZWxsIC0tPlxuICAgICAgICAgICAgICAgICAgQGlmIChwcm9wcy5zaG93U2VsZWN0aW9uQ29sdW1uKSB7XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInNlbGVjdGlvbi1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChwcm9wcy5zZWxlY3Rpb24/Lm1vZGUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNSb3dTZWxlY3RlZChyb3cpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGlvbkNoYW5nZSk9XCJ0b2dnbGVSb3dTZWxlY3Rpb24ocm93LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9pb24tY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAocHJvcHMuc2VsZWN0aW9uPy5tb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzUm93U2VsZWN0ZWQocm93KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VsZWN0U2luZ2xlUm93KHJvdylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICA8IS0tIFJvdyBudW1iZXIgLS0+XG4gICAgICAgICAgICAgICAgICBAaWYgKHByb3BzLnNob3dSb3dOdW1iZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInJvdy1udW1iZXItY2VsbFwiPnt7IGdldFJvd051bWJlcihpKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIDwhLS0gRGF0YSBjZWxscyAtLT5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKGNvbHVtbiBvZiB2aXNpYmxlQ29sdW1uczsgdHJhY2sgY29sdW1uLmtleSkge1xuICAgICAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2V0Q29sdW1uQ2xhc3MoY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLnRleHQtYWxpZ25dPVwiY29sdW1uLmFsaWduXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29sdW1uLmNlbGxUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5jZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHsgcm93LCBjb2x1bW4sIHZhbHVlOiBnZXRDZWxsVmFsdWUocm93LCBjb2x1bW4pIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEZvcm1hdHRlZFZhbHVlKHJvdywgY29sdW1uKSB9fVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgPCEtLSBBY3Rpb25zIGNlbGwgLS0+XG4gICAgICAgICAgICAgICAgICBAaWYgKHByb3BzLmFjdGlvbnNUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJhY3Rpb25zLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvcHMuYWN0aW9uc1RlbXBsYXRlOyBjb250ZXh0OiB7IHJvdywgaW5kZXg6IGkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gQ2FyZCB2aWV3IChyZXNwb25zaXZlIG1vYmlsZSkgLS0+XG4gICAgICBAaWYgKHByb3BzLnJlc3BvbnNpdmVNb2RlID09PSAnY2FyZHMnKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWxpc3RcIj5cbiAgICAgICAgICBAaWYgKGRpc3BsYXllZERhdGEubGVuZ3RoID09PSAwICYmICFwcm9wcy5sb2FkaW5nU3RhdGU/LmxvYWRpbmcpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZVwiPlxuICAgICAgICAgICAgICBAaWYgKGVtcHR5U3RhdGUuaWNvbikge1xuICAgICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJlbXB0eVN0YXRlLmljb25cIiBjbGFzcz1cImVtcHR5LWljb25cIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoZW1wdHlTdGF0ZS50aXRsZSkge1xuICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cImVtcHR5LXRpdGxlXCI+e3sgZW1wdHlTdGF0ZS50aXRsZSB9fTwvaDQ+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChlbXB0eVN0YXRlLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJlbXB0eS1kZXNjcmlwdGlvblwiPnt7IGVtcHR5U3RhdGUuZGVzY3JpcHRpb24gfX08L3A+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgQGZvciAocm93IG9mIGRpc3BsYXllZERhdGE7IHRyYWNrIHRyYWNrQnlGbihyb3cpOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgICBAaWYgKHByb3BzLm1vYmlsZUNhcmRUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9wcy5tb2JpbGVDYXJkVGVtcGxhdGU7IGNvbnRleHQ6IHsgcm93LCBpbmRleDogaSwgY29sdW1uczogdmlzaWJsZUNvbHVtbnMgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtY2FyZFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiaXNSb3dTZWxlY3RlZChyb3cpXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5jbGlja2FibGVdPVwicHJvcHMucm93Q2xpY2thYmxlXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJvd0NsaWNrKHJvdywgaSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPCEtLSBDYXJkIGhlYWRlciB3aXRoIHNlbGVjdGlvbiAtLT5cbiAgICAgICAgICAgICAgICAgIEBpZiAocHJvcHMuc2hvd1NlbGVjdGlvbkNvbHVtbikge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1zZWxlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocHJvcHMuc2VsZWN0aW9uPy5tb2RlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc1Jvd1NlbGVjdGVkKHJvdylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpb25DaGFuZ2UpPVwidG9nZ2xlUm93U2VsZWN0aW9uKHJvdywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48L2lvbi1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKHByb3BzLnNlbGVjdGlvbj8ubW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc1Jvd1NlbGVjdGVkKHJvdylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VsZWN0U2luZ2xlUm93KHJvdylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAocHJvcHMuc2hvd1Jvd051bWJlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicm93LW51bWJlclwiPnt7IGdldFJvd051bWJlcihpKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICA8IS0tIENhcmQgYm9keSB3aXRoIGZpZWxkcyAtLT5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoY29sdW1uIG9mIHZpc2libGVDb2x1bW5zOyB0cmFjayBjb2x1bW4ua2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1maWVsZF9fbGFiZWxcIj57eyBjb2x1bW4ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtZmllbGRfX3ZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29sdW1uLmNlbGxUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4uY2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7IHJvdywgY29sdW1uLCB2YWx1ZTogZ2V0Q2VsbFZhbHVlKHJvdywgY29sdW1uKSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEZvcm1hdHRlZFZhbHVlKHJvdywgY29sdW1uKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8IS0tIENhcmQgYWN0aW9ucyAtLT5cbiAgICAgICAgICAgICAgICAgIEBpZiAocHJvcHMuYWN0aW9uc1RlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvcHMuYWN0aW9uc1RlbXBsYXRlOyBjb250ZXh0OiB7IHJvdywgaW5kZXg6IGkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gUGFnaW5hdGlvbiAtLT5cbiAgICAgIEBpZiAocHJvcHMuc2hvd1BhZ2luYXRpb24gJiYgcHJvcHMucGFnaW5hdGlvbikge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicGFnaW5hdGlvbi1jb250YWluZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFnaW5hdGlvbi1pbmZvXCI+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgTW9zdHJhbmRvIHt7IHBhZ2luYXRpb25TdGFydCB9fS17eyBwYWdpbmF0aW9uRW5kIH19IGRlIHt7IHByb3BzLnBhZ2luYXRpb24udG90YWwgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgQGlmIChwYWdlU2l6ZU9wdGlvbnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICA8aW9uLXNlbGVjdFxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJwcm9wcy5wYWdpbmF0aW9uLnBhZ2VTaXplXCJcbiAgICAgICAgICAgICAgICAoaW9uQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgaW50ZXJmYWNlPVwicG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwYWdlLXNpemUtc2VsZWN0XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBmb3IgKHNpemUgb2YgcGFnZVNpemVPcHRpb25zOyB0cmFjayBzaXplKSB7XG4gICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gW3ZhbHVlXT1cInNpemVcIj57eyBzaXplIH19IHBvciBww6FnaW5hPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvaW9uLXNlbGVjdD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYWdpbmF0aW9uLWNvbnRyb2xzXCI+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJvcHMucGFnaW5hdGlvbi5wYWdlID09PSAwXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKDApXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlByaW1lcmEgcMOhZ2luYVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImNoZXZyb24tYmFjay1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiY2hldnJvbi1iYWNrLW91dGxpbmVcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMTJweFwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG5cbiAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwcm9wcy5wYWdpbmF0aW9uLnBhZ2UgPT09IDBcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1BhZ2UocHJvcHMucGFnaW5hdGlvbi5wYWdlIC0gMSlcIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiUMOhZ2luYSBhbnRlcmlvclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImNoZXZyb24tYmFjay1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYWdlLWluZGljYXRvclwiPlxuICAgICAgICAgICAgICB7eyBwcm9wcy5wYWdpbmF0aW9uLnBhZ2UgKyAxIH19IC8ge3sgdG90YWxQYWdlcyB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJvcHMucGFnaW5hdGlvbi5wYWdlID49IHRvdGFsUGFnZXMgLSAxXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKHByb3BzLnBhZ2luYXRpb24ucGFnZSArIDEpXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlDDoWdpbmEgc2lndWllbnRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiY2hldnJvbi1mb3J3YXJkLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJvcHMucGFnaW5hdGlvbi5wYWdlID49IHRvdGFsUGFnZXMgLSAxXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKHRvdGFsUGFnZXMgLSAxKVwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCLDmmx0aW1hIHDDoWdpbmFcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJjaGV2cm9uLWZvcndhcmQtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImNoZXZyb24tZm9yd2FyZC1vdXRsaW5lXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTEycHhcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLWRhdGEtdGFibGVcbiAqXG4gKiBBIGZsZXhpYmxlIGRhdGEgdGFibGUgY29tcG9uZW50IGZvciBkaXNwbGF5aW5nIHRhYnVsYXIgZGF0YSB3aXRoIHNvcnRpbmcsXG4gKiBwYWdpbmF0aW9uLCBhbmQgc2VsZWN0aW9uIGZlYXR1cmVzLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlXG4gKiBgYGBodG1sXG4gKiA8dmFsLWRhdGEtdGFibGVcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBjb2x1bW5zOiBbXG4gKiAgICAgICB7IGtleTogJ25hbWUnLCBsYWJlbDogJ05vbWJyZScsIHNvcnRhYmxlOiB0cnVlIH0sXG4gKiAgICAgICB7IGtleTogJ2VtYWlsJywgbGFiZWw6ICdFbWFpbCcgfSxcbiAqICAgICAgIHsga2V5OiAnc3RhdHVzJywgbGFiZWw6ICdFc3RhZG8nIH1cbiAqICAgICBdLFxuICogICAgIGRhdGE6IHVzZXJzXG4gKiAgIH1cIlxuICogPjwvdmFsLWRhdGEtdGFibGU+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBXaXRoIHBhZ2luYXRpb24gYW5kIHNlbGVjdGlvblxuICogYGBgaHRtbFxuICogPHZhbC1kYXRhLXRhYmxlXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgY29sdW1uczogY29sdW1ucyxcbiAqICAgICBkYXRhOiBwYXJ0aWNpcGFudHMsXG4gKiAgICAgc2hvd1BhZ2luYXRpb246IHRydWUsXG4gKiAgICAgcGFnaW5hdGlvbjoge1xuICogICAgICAgcGFnZTogMCxcbiAqICAgICAgIHBhZ2VTaXplOiAyNSxcbiAqICAgICAgIHRvdGFsOiB0b3RhbENvdW50XG4gKiAgICAgfSxcbiAqICAgICBzZWxlY3Rpb246IHtcbiAqICAgICAgIG1vZGU6ICdtdWx0aXBsZScsXG4gKiAgICAgICBzZWxlY3RlZDogc2VsZWN0ZWRQYXJ0aWNpcGFudHNcbiAqICAgICB9LFxuICogICAgIHNob3dTZWxlY3Rpb25Db2x1bW46IHRydWVcbiAqICAgfVwiXG4gKiAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gKiAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAqID48L3ZhbC1kYXRhLXRhYmxlPlxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVDb21wb25lbnQ8VCA9IGFueT4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHByb3BzOiBEYXRhVGFibGVNZXRhZGF0YTxUPjtcblxuICBAT3V0cHV0KCkgcm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGFUYWJsZVJvd0NsaWNrRXZlbnQ8VD4+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGFUYWJsZVNlbGVjdGlvbkNoYW5nZUV2ZW50PFQ+PigpO1xuICBAT3V0cHV0KCkgc29ydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0YVRhYmxlU29ydENoYW5nZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgcGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0YVRhYmxlUGFnZUNoYW5nZUV2ZW50PigpO1xuXG4gIGRpc3BsYXllZERhdGE6IFRbXSA9IFtdO1xuICBjdXJyZW50U29ydDogRGF0YVRhYmxlU29ydCB8IG51bGwgPSBudWxsO1xuICBzZWxlY3RlZFJvd3M6IFNldDxhbnk+ID0gbmV3IFNldCgpO1xuXG4gIC8qKiBDYWNoZWQgdmlzaWJsZSBjb2x1bW5zIGZvciBwZXJmb3JtYW5jZSAqL1xuICBwcml2YXRlIF92aXNpYmxlQ29sdW1uczogRGF0YVRhYmxlQ29sdW1uPFQ+W10gPSBbXTtcblxuICBwcml2YXRlIGxhbmdTZXJ2aWNlID0gaW5qZWN0KExhbmdTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbGl6ZVN0YXRlKCk7XG4gICAgdGhpcy51cGRhdGVEaXNwbGF5ZWREYXRhKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3Byb3BzJ10pIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVN0YXRlKCk7XG4gICAgICB0aGlzLnVwZGF0ZURpc3BsYXllZERhdGEoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVTdGF0ZSgpOiB2b2lkIHtcbiAgICAvLyBDYWNoZSB2aXNpYmxlIGNvbHVtbnMgZm9yIHBlcmZvcm1hbmNlXG4gICAgdGhpcy5fdmlzaWJsZUNvbHVtbnMgPSB0aGlzLnByb3BzLmNvbHVtbnMuZmlsdGVyKGMgPT4gYy52aXNpYmxlICE9PSBmYWxzZSk7XG5cbiAgICAvLyBJbml0aWFsaXplIHNvcnRcbiAgICB0aGlzLmN1cnJlbnRTb3J0ID0gdGhpcy5wcm9wcy5zb3J0IHx8IG51bGw7XG5cbiAgICAvLyBJbml0aWFsaXplIHNlbGVjdGlvblxuICAgIGlmICh0aGlzLnByb3BzLnNlbGVjdGlvbj8uc2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gbmV3IFNldChcbiAgICAgICAgdGhpcy5wcm9wcy5zZWxlY3Rpb24uc2VsZWN0ZWQubWFwKHJvdyA9PiB0aGlzLmdldFJvd0lkKHJvdykpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRGlzcGxheWVkRGF0YSgpOiB2b2lkIHtcbiAgICBsZXQgZGF0YSA9IFsuLi50aGlzLnByb3BzLmRhdGFdO1xuXG4gICAgLy8gQXBwbHkgY2xpZW50LXNpZGUgc29ydGluZ1xuICAgIGlmICh0aGlzLnByb3BzLmNsaWVudFNvcnQgJiYgdGhpcy5jdXJyZW50U29ydCkge1xuICAgICAgZGF0YSA9IHRoaXMuc29ydERhdGEoZGF0YSk7XG4gICAgfVxuXG4gICAgLy8gQXBwbHkgY2xpZW50LXNpZGUgcGFnaW5hdGlvblxuICAgIGlmICh0aGlzLnByb3BzLmNsaWVudFBhZ2luYXRpb24gJiYgdGhpcy5wcm9wcy5wYWdpbmF0aW9uKSB7XG4gICAgICBjb25zdCBzdGFydCA9IHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlICogdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2VTaXplO1xuICAgICAgY29uc3QgZW5kID0gc3RhcnQgKyB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZVNpemU7XG4gICAgICBkYXRhID0gZGF0YS5zbGljZShzdGFydCwgZW5kKTtcbiAgICB9XG5cbiAgICB0aGlzLmRpc3BsYXllZERhdGEgPSBkYXRhO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0RGF0YShkYXRhOiBUW10pOiBUW10ge1xuICAgIGlmICghdGhpcy5jdXJyZW50U29ydCkgcmV0dXJuIGRhdGE7XG5cbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLnByb3BzLmNvbHVtbnMuZmluZChjID0+IGMua2V5ID09PSB0aGlzLmN1cnJlbnRTb3J0Py5jb2x1bW4pO1xuICAgIGlmICghY29sdW1uKSByZXR1cm4gZGF0YTtcblxuICAgIHJldHVybiBbLi4uZGF0YV0uc29ydCgoYSwgYikgPT4ge1xuICAgICAgaWYgKGNvbHVtbi5zb3J0Rm4pIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gY29sdW1uLnNvcnRGbihhLCBiKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFNvcnQ/LmRpcmVjdGlvbiA9PT0gJ2Rlc2MnID8gLXJlc3VsdCA6IHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdmFsdWVBID0gdGhpcy5nZXRDZWxsVmFsdWUoYSwgY29sdW1uKTtcbiAgICAgIGNvbnN0IHZhbHVlQiA9IHRoaXMuZ2V0Q2VsbFZhbHVlKGIsIGNvbHVtbik7XG5cbiAgICAgIGxldCBjb21wYXJpc29uID0gMDtcbiAgICAgIGlmICh2YWx1ZUEgPT0gbnVsbCAmJiB2YWx1ZUIgPT0gbnVsbCkgY29tcGFyaXNvbiA9IDA7XG4gICAgICBlbHNlIGlmICh2YWx1ZUEgPT0gbnVsbCkgY29tcGFyaXNvbiA9IDE7XG4gICAgICBlbHNlIGlmICh2YWx1ZUIgPT0gbnVsbCkgY29tcGFyaXNvbiA9IC0xO1xuICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlQSA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIHZhbHVlQiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29tcGFyaXNvbiA9IHZhbHVlQS5sb2NhbGVDb21wYXJlKHZhbHVlQik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb21wYXJpc29uID0gdmFsdWVBIDwgdmFsdWVCID8gLTEgOiB2YWx1ZUEgPiB2YWx1ZUIgPyAxIDogMDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFNvcnQ/LmRpcmVjdGlvbiA9PT0gJ2Rlc2MnID8gLWNvbXBhcmlzb24gOiBjb21wYXJpc29uO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHZpc2libGVDb2x1bW5zKCk6IERhdGFUYWJsZUNvbHVtbjxUPltdIHtcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZUNvbHVtbnM7XG4gIH1cblxuICBnZXQgdG90YWxDb2x1bW5zKCk6IG51bWJlciB7XG4gICAgbGV0IGNvdW50ID0gdGhpcy52aXNpYmxlQ29sdW1ucy5sZW5ndGg7XG4gICAgaWYgKHRoaXMucHJvcHMuc2hvd1NlbGVjdGlvbkNvbHVtbikgY291bnQrKztcbiAgICBpZiAodGhpcy5wcm9wcy5zaG93Um93TnVtYmVycykgY291bnQrKztcbiAgICBpZiAodGhpcy5wcm9wcy5hY3Rpb25zVGVtcGxhdGUpIGNvdW50Kys7XG4gICAgcmV0dXJuIGNvdW50O1xuICB9XG5cbiAgZ2V0IGVtcHR5U3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuZW1wdHlTdGF0ZSB8fCBERUZBVUxUX0VNUFRZX1NUQVRFO1xuICB9XG5cbiAgZ2V0IHBhZ2VTaXplT3B0aW9ucygpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMucGFnaW5hdGlvbj8ucGFnZVNpemVPcHRpb25zIHx8IERFRkFVTFRfUEFHRV9TSVpFX09QVElPTlM7XG4gIH1cblxuICBnZXQgdG90YWxQYWdlcygpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5wcm9wcy5wYWdpbmF0aW9uKSByZXR1cm4gMTtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMucHJvcHMucGFnaW5hdGlvbi50b3RhbCAvIHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlU2l6ZSk7XG4gIH1cblxuICBnZXQgcGFnaW5hdGlvblN0YXJ0KCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnByb3BzLnBhZ2luYXRpb24pIHJldHVybiAxO1xuICAgIHJldHVybiB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZSAqIHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlU2l6ZSArIDE7XG4gIH1cblxuICBnZXQgcGFnaW5hdGlvbkVuZCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5wcm9wcy5wYWdpbmF0aW9uKSByZXR1cm4gdGhpcy5kaXNwbGF5ZWREYXRhLmxlbmd0aDtcbiAgICByZXR1cm4gTWF0aC5taW4oXG4gICAgICAodGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2UgKyAxKSAqIHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlU2l6ZSxcbiAgICAgIHRoaXMucHJvcHMucGFnaW5hdGlvbi50b3RhbFxuICAgICk7XG4gIH1cblxuICBnZXQgaXNBbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5kaXNwbGF5ZWREYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLmRpc3BsYXllZERhdGEuZXZlcnkocm93ID0+IHRoaXMuaXNSb3dTZWxlY3RlZChyb3cpKTtcbiAgfVxuXG4gIGdldCBpc0luZGV0ZXJtaW5hdGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRDb3VudCA9IHRoaXMuZGlzcGxheWVkRGF0YS5maWx0ZXIocm93ID0+IHRoaXMuaXNSb3dTZWxlY3RlZChyb3cpKS5sZW5ndGg7XG4gICAgcmV0dXJuIHNlbGVjdGVkQ291bnQgPiAwICYmIHNlbGVjdGVkQ291bnQgPCB0aGlzLmRpc3BsYXllZERhdGEubGVuZ3RoO1xuICB9XG5cbiAgZ2V0Q2VsbFZhbHVlKHJvdzogVCwgY29sdW1uOiBEYXRhVGFibGVDb2x1bW48VD4pOiBhbnkge1xuICAgIGNvbnN0IGZpZWxkID0gY29sdW1uLmZpZWxkIHx8IGNvbHVtbi5rZXk7XG4gICAgcmV0dXJuIGZpZWxkLnNwbGl0KCcuJykucmVkdWNlKChvYmo6IGFueSwga2V5KSA9PiBvYmo/LltrZXldLCByb3cpO1xuICB9XG5cbiAgZ2V0Rm9ybWF0dGVkVmFsdWUocm93OiBULCBjb2x1bW46IERhdGFUYWJsZUNvbHVtbjxUPik6IHN0cmluZyB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldENlbGxWYWx1ZShyb3csIGNvbHVtbik7XG4gICAgaWYgKGNvbHVtbi5mb3JtYXQpIHtcbiAgICAgIHJldHVybiBjb2x1bW4uZm9ybWF0KHZhbHVlLCByb3cpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWUgPz8gJyc7XG4gIH1cblxuICBnZXRDb2x1bW5DbGFzcyhjb2x1bW46IERhdGFUYWJsZUNvbHVtbjxUPik6IHN0cmluZyB7XG4gICAgY29uc3QgY2xhc3NlcyA9IFtjb2x1bW4uY3NzQ2xhc3MgfHwgJyddO1xuICAgIGlmIChjb2x1bW4uc3RpY2t5KSB7XG4gICAgICBjbGFzc2VzLnB1c2goYHN0aWNreS0ke2NvbHVtbi5zdGlja3l9YCk7XG4gICAgfVxuICAgIGlmIChjb2x1bW4uYWxpZ24pIHtcbiAgICAgIGNsYXNzZXMucHVzaChgYWxpZ24tJHtjb2x1bW4uYWxpZ259YCk7XG4gICAgfVxuICAgIHJldHVybiBjbGFzc2VzLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJyk7XG4gIH1cblxuICBnZXRBcmlhU29ydChjb2x1bW46IERhdGFUYWJsZUNvbHVtbjxUPik6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghY29sdW1uLnNvcnRhYmxlKSByZXR1cm4gbnVsbDtcbiAgICBpZiAodGhpcy5jdXJyZW50U29ydD8uY29sdW1uICE9PSBjb2x1bW4ua2V5KSByZXR1cm4gJ25vbmUnO1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRTb3J0LmRpcmVjdGlvbiA9PT0gJ2FzYycgPyAnYXNjZW5kaW5nJyA6ICdkZXNjZW5kaW5nJztcbiAgfVxuXG4gIGdldFJvd051bWJlcihpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMucHJvcHMucm93TnVtYmVyU3RhcnQgPz8gMTtcbiAgICBpZiAodGhpcy5wcm9wcy5wYWdpbmF0aW9uKSB7XG4gICAgICByZXR1cm4gc3RhcnQgKyB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZSAqIHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlU2l6ZSArIGluZGV4O1xuICAgIH1cbiAgICByZXR1cm4gc3RhcnQgKyBpbmRleDtcbiAgfVxuXG4gIGdldFJvd0lkKHJvdzogVCk6IGFueSB7XG4gICAgaWYgKHRoaXMucHJvcHMuc2VsZWN0aW9uPy50cmFja0J5KSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5zZWxlY3Rpb24udHJhY2tCeShyb3cpO1xuICAgIH1cbiAgICByZXR1cm4gcm93O1xuICB9XG5cbiAgdHJhY2tCeUZuKHJvdzogVCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Um93SWQocm93KTtcbiAgfVxuXG4gIGlzUm93U2VsZWN0ZWQocm93OiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyh0aGlzLmdldFJvd0lkKHJvdykpO1xuICB9XG5cbiAgb25Tb3J0KGNvbHVtbjogRGF0YVRhYmxlQ29sdW1uPFQ+KTogdm9pZCB7XG4gICAgaWYgKCFjb2x1bW4uc29ydGFibGUpIHJldHVybjtcblxuICAgIGxldCBkaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnIHwgbnVsbCA9ICdhc2MnO1xuXG4gICAgaWYgKHRoaXMuY3VycmVudFNvcnQ/LmNvbHVtbiA9PT0gY29sdW1uLmtleSkge1xuICAgICAgaWYgKHRoaXMuY3VycmVudFNvcnQuZGlyZWN0aW9uID09PSAnYXNjJykge1xuICAgICAgICBkaXJlY3Rpb24gPSAnZGVzYyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkaXJlY3Rpb24gPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkaXJlY3Rpb24pIHtcbiAgICAgIHRoaXMuY3VycmVudFNvcnQgPSB7IGNvbHVtbjogY29sdW1uLmtleSwgZGlyZWN0aW9uIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VycmVudFNvcnQgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHtcbiAgICAgIGNvbHVtbjogY29sdW1uLmtleSxcbiAgICAgIGRpcmVjdGlvbixcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnByb3BzLmNsaWVudFNvcnQpIHtcbiAgICAgIHRoaXMudXBkYXRlRGlzcGxheWVkRGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uUm93Q2xpY2socm93OiBULCBpbmRleDogbnVtYmVyLCBldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wcm9wcy5yb3dDbGlja2FibGUpIHJldHVybjtcblxuICAgIHRoaXMucm93Q2xpY2suZW1pdCh7XG4gICAgICByb3csXG4gICAgICBpbmRleCxcbiAgICAgIGV2ZW50LFxuICAgIH0pO1xuICB9XG5cbiAgdG9nZ2xlU2VsZWN0QWxsKGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGNoZWNrZWQgPSBldmVudC5kZXRhaWwuY2hlY2tlZDtcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICB0aGlzLmRpc3BsYXllZERhdGEuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5hZGQodGhpcy5nZXRSb3dJZChyb3cpKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpc3BsYXllZERhdGEuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUm93cy5kZWxldGUodGhpcy5nZXRSb3dJZChyb3cpKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZShjaGVja2VkID8gJ3NlbGVjdEFsbCcgOiAnZGVzZWxlY3RBbGwnKTtcbiAgfVxuXG4gIHRvZ2dsZVJvd1NlbGVjdGlvbihyb3c6IFQsIGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHJvd0lkID0gdGhpcy5nZXRSb3dJZChyb3cpO1xuICAgIGNvbnN0IGNoZWNrZWQgPSBldmVudC5kZXRhaWwuY2hlY2tlZDtcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5hZGQocm93SWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5kZWxldGUocm93SWQpO1xuICAgIH1cblxuICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZShjaGVja2VkID8gJ3NlbGVjdCcgOiAnZGVzZWxlY3QnLCByb3cpO1xuICB9XG5cbiAgc2VsZWN0U2luZ2xlUm93KHJvdzogVCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmNsZWFyKCk7XG4gICAgdGhpcy5zZWxlY3RlZFJvd3MuYWRkKHRoaXMuZ2V0Um93SWQocm93KSk7XG4gICAgdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlKCdzZWxlY3QnLCByb3cpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0U2VsZWN0aW9uQ2hhbmdlKFxuICAgIGFjdGlvbjogJ3NlbGVjdCcgfCAnZGVzZWxlY3QnIHwgJ3NlbGVjdEFsbCcgfCAnZGVzZWxlY3RBbGwnLFxuICAgIGNoYW5nZWRSb3c/OiBUXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5wcm9wcy5kYXRhLmZpbHRlcihyb3cgPT4gdGhpcy5pc1Jvd1NlbGVjdGVkKHJvdykpO1xuXG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh7XG4gICAgICBzZWxlY3RlZCxcbiAgICAgIGNoYW5nZWRSb3csXG4gICAgICBhY3Rpb24sXG4gICAgfSk7XG4gIH1cblxuICBnb1RvUGFnZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJvcHMucGFnaW5hdGlvbikgcmV0dXJuO1xuXG4gICAgY29uc3QgcHJldmlvdXNQYWdlID0gdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2U7XG4gICAgY29uc3QgbWF4UGFnZSA9IHRoaXMudG90YWxQYWdlcyAtIDE7XG4gICAgY29uc3QgbmV3UGFnZSA9IE1hdGgubWF4KDAsIE1hdGgubWluKHBhZ2UsIG1heFBhZ2UpKTtcblxuICAgIHRoaXMucGFnZUNoYW5nZS5lbWl0KHtcbiAgICAgIHBhZ2U6IG5ld1BhZ2UsXG4gICAgICBwYWdlU2l6ZTogdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2VTaXplLFxuICAgICAgcHJldmlvdXNQYWdlLFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMucHJvcHMuY2xpZW50UGFnaW5hdGlvbikge1xuICAgICAgdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2UgPSBuZXdQYWdlO1xuICAgICAgdGhpcy51cGRhdGVEaXNwbGF5ZWREYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgb25QYWdlU2l6ZUNoYW5nZShldmVudDogQ3VzdG9tRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJvcHMucGFnaW5hdGlvbikgcmV0dXJuO1xuXG4gICAgY29uc3QgbmV3UGFnZVNpemUgPSBldmVudC5kZXRhaWwudmFsdWU7XG4gICAgY29uc3QgcHJldmlvdXNQYWdlID0gdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2U7XG5cbiAgICAvLyBSZWNhbGN1bGF0ZSBwYWdlIHRvIGtlZXAgZmlyc3QgdmlzaWJsZSBpdGVtXG4gICAgY29uc3QgZmlyc3RJdGVtID0gcHJldmlvdXNQYWdlICogdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2VTaXplO1xuICAgIGNvbnN0IG5ld1BhZ2UgPSBNYXRoLmZsb29yKGZpcnN0SXRlbSAvIG5ld1BhZ2VTaXplKTtcblxuICAgIHRoaXMucGFnZUNoYW5nZS5lbWl0KHtcbiAgICAgIHBhZ2U6IG5ld1BhZ2UsXG4gICAgICBwYWdlU2l6ZTogbmV3UGFnZVNpemUsXG4gICAgICBwcmV2aW91c1BhZ2UsXG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5jbGllbnRQYWdpbmF0aW9uKSB7XG4gICAgICB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZVNpemUgPSBuZXdQYWdlU2l6ZTtcbiAgICAgIHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlID0gbmV3UGFnZTtcbiAgICAgIHRoaXMudXBkYXRlRGlzcGxheWVkRGF0YSgpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
1029
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBSVosTUFBTSxFQUNOLHVCQUF1QixFQUN2QixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsT0FBTyxFQUNQLFdBQVcsRUFDWCxVQUFVLEVBQ1YsU0FBUyxFQUNULGVBQWUsR0FDaEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIsZUFBZSxHQUNoQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFRTCx5QkFBeUIsRUFDekIsbUJBQW1CLEdBQ3BCLE1BQU0sU0FBUyxDQUFDOzs7QUFFakIsUUFBUSxDQUFDO0lBQ1AsZ0JBQWdCO0lBQ2hCLGtCQUFrQjtJQUNsQixrQkFBa0I7SUFDbEIscUJBQXFCO0lBQ3JCLGVBQWU7Q0FDaEIsQ0FBQyxDQUFDO0FBaVdIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQ0c7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBMVkvQjtRQTZZWSxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQTZCLENBQUM7UUFDekQsb0JBQWUsR0FBRyxJQUFJ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ZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25Jbml0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIGluamVjdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgSW9uQnV0dG9uLFxuICBJb25JY29uLFxuICBJb25DaGVja2JveCxcbiAgSW9uU3Bpbm5lcixcbiAgSW9uU2VsZWN0LFxuICBJb25TZWxlY3RPcHRpb24sXG59IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQge1xuICBjaGV2cm9uVXBPdXRsaW5lLFxuICBjaGV2cm9uRG93bk91dGxpbmUsXG4gIGNoZXZyb25CYWNrT3V0bGluZSxcbiAgY2hldnJvbkZvcndhcmRPdXRsaW5lLFxuICBkb2N1bWVudE91dGxpbmUsXG59IGZyb20gJ2lvbmljb25zL2ljb25zJztcbmltcG9ydCB7XG4gIERhdGFUYWJsZU1ldGFkYXRhLFxuICBEYXRhVGFibGVDb2x1bW4sXG4gIERhdGFUYWJsZVNvcnQsXG4gIERhdGFUYWJsZVJvd0NsaWNrRXZlbnQsXG4gIERhdGFUYWJsZVNlbGVjdGlvbkNoYW5nZUV2ZW50LFxuICBEYXRhVGFibGVTb3J0Q2hhbmdlRXZlbnQsXG4gIERhdGFUYWJsZVBhZ2VDaGFuZ2VFdmVudCxcbiAgREVGQVVMVF9QQUdFX1NJWkVfT1BUSU9OUyxcbiAgREVGQVVMVF9FTVBUWV9TVEFURSxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmFkZEljb25zKHtcbiAgY2hldnJvblVwT3V0bGluZSxcbiAgY2hldnJvbkRvd25PdXRsaW5lLFxuICBjaGV2cm9uQmFja091dGxpbmUsXG4gIGNoZXZyb25Gb3J3YXJkT3V0bGluZSxcbiAgZG9jdW1lbnRPdXRsaW5lLFxufSk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1kYXRhLXRhYmxlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgSW9uQnV0dG9uLFxuICAgIElvbkljb24sXG4gICAgSW9uQ2hlY2tib3gsXG4gICAgSW9uU3Bpbm5lcixcbiAgICBJb25TZWxlY3QsXG4gICAgSW9uU2VsZWN0T3B0aW9uLFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZGF0YS10YWJsZS1jb250YWluZXJcIlxuICAgICAgW2NsYXNzXT1cInByb3BzLmNzc0NsYXNzXCJcbiAgICAgIFtjbGFzcy5zaXplLXNtYWxsXT1cInByb3BzLnNpemUgPT09ICdzbWFsbCdcIlxuICAgICAgW2NsYXNzLnNpemUtbWVkaXVtXT1cInByb3BzLnNpemUgPT09ICdtZWRpdW0nIHx8ICFwcm9wcy5zaXplXCJcbiAgICAgIFtjbGFzcy5zaXplLWxhcmdlXT1cInByb3BzLnNpemUgPT09ICdsYXJnZSdcIlxuICAgICAgW2NsYXNzLmJvcmRlcmVkXT1cInByb3BzLmJvcmRlcmVkXCJcbiAgICAgIFtjbGFzcy5zdHJpcGVkXT1cInByb3BzLnN0cmlwZWRcIlxuICAgICAgW2NsYXNzLmhvdmVyYWJsZV09XCJwcm9wcy5ob3ZlcmFibGUgIT09IGZhbHNlXCJcbiAgICAgIFtjbGFzcy5zdGlja3ktaGVhZGVyXT1cInByb3BzLnN0aWNreUhlYWRlclwiXG4gICAgICBbY2xhc3MucmVzcG9uc2l2ZS1jYXJkc109XCJwcm9wcy5yZXNwb25zaXZlTW9kZSA9PT0gJ2NhcmRzJ1wiXG4gICAgICBbc3R5bGUuLS1tYXgtaGVpZ2h0XT1cInByb3BzLm1heEhlaWdodFwiXG4gICAgPlxuICAgICAgPCEtLSBUb29sYmFyIHNsb3QgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdG9vbGJhclwiICN0b29sYmFyQ29udGFpbmVyPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbdG9vbGJhcl1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBMb2FkaW5nIG92ZXJsYXkgLS0+XG4gICAgICBAaWYgKHByb3BzLmxvYWRpbmdTdGF0ZT8ubG9hZGluZykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwibG9hZGluZy1vdmVybGF5XCI+XG4gICAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiPjwvaW9uLXNwaW5uZXI+XG4gICAgICAgICAgQGlmIChwcm9wcy5sb2FkaW5nU3RhdGU/Lm1lc3NhZ2UpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibG9hZGluZy1tZXNzYWdlXCI+e3sgcHJvcHMubG9hZGluZ1N0YXRlLm1lc3NhZ2UgfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXdyYXBwZXJcIiBbY2xhc3MuaXMtbG9hZGluZ109XCJwcm9wcy5sb2FkaW5nU3RhdGU/LmxvYWRpbmdcIj5cbiAgICAgICAgPHRhYmxlXG4gICAgICAgICAgcm9sZT1cImdyaWRcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicHJvcHMuYXJpYUxhYmVsXCJcbiAgICAgICAgPlxuICAgICAgICAgIEBpZiAocHJvcHMuY2FwdGlvbikge1xuICAgICAgICAgICAgPGNhcHRpb24gY2xhc3M9XCJzci1vbmx5XCI+e3sgcHJvcHMuY2FwdGlvbiB9fTwvY2FwdGlvbj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgIDwhLS0gU2VsZWN0aW9uIGNvbHVtbiAtLT5cbiAgICAgICAgICAgICAgQGlmIChwcm9wcy5zaG93U2VsZWN0aW9uQ29sdW1uICYmIHByb3BzLnNlbGVjdGlvbj8ubW9kZSA9PT0gJ211bHRpcGxlJykge1xuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInNlbGVjdGlvbi1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQWxsU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJpc0luZGV0ZXJtaW5hdGVcIlxuICAgICAgICAgICAgICAgICAgICAoaW9uQ2hhbmdlKT1cInRvZ2dsZVNlbGVjdEFsbCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgID48L2lvbi1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAocHJvcHMuc2hvd1NlbGVjdGlvbkNvbHVtbiAmJiBwcm9wcy5zZWxlY3Rpb24/Lm1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwic2VsZWN0aW9uLWNlbGxcIj48L3RoPlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgPCEtLSBSb3cgbnVtYmVyIGNvbHVtbiAtLT5cbiAgICAgICAgICAgICAgQGlmIChwcm9wcy5zaG93Um93TnVtYmVycykge1xuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInJvdy1udW1iZXItY2VsbFwiPiM8L3RoPlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgPCEtLSBEYXRhIGNvbHVtbnMgLS0+XG4gICAgICAgICAgICAgIEBmb3IgKGNvbHVtbiBvZiB2aXNpYmxlQ29sdW1uczsgdHJhY2sgY29sdW1uLmtleSkge1xuICAgICAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImdldENvbHVtbkNsYXNzKGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi5taW5XaWR0aFwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImNvbHVtbi5tYXhXaWR0aFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3Muc29ydGFibGVdPVwiY29sdW1uLnNvcnRhYmxlXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5zb3J0ZWRdPVwiY3VycmVudFNvcnQ/LmNvbHVtbiA9PT0gY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29sdW1uLnNvcnRhYmxlID8gb25Tb3J0KGNvbHVtbikgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc29ydF09XCJnZXRBcmlhU29ydChjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBAaWYgKGNvbHVtbi5oZWFkZXJUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uLmhlYWRlclRlbXBsYXRlOyBjb250ZXh0OiB7IGNvbHVtbiB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXItY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbHVtbi5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29sdW1uLnNvcnRhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNvcnQtaWNvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImNoZXZyb24tdXAtb3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJjdXJyZW50U29ydD8uY29sdW1uID09PSBjb2x1bW4ua2V5ICYmIGN1cnJlbnRTb3J0Py5kaXJlY3Rpb24gPT09ICdhc2MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJjaGV2cm9uLWRvd24tb3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJjdXJyZW50U29ydD8uY29sdW1uID09PSBjb2x1bW4ua2V5ICYmIGN1cnJlbnRTb3J0Py5kaXJlY3Rpb24gPT09ICdkZXNjJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICA8IS0tIEFjdGlvbnMgY29sdW1uIC0tPlxuICAgICAgICAgICAgICBAaWYgKHByb3BzLmFjdGlvbnNUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImFjdGlvbnMtY2VsbFwiIFtzdHlsZS53aWR0aF09XCJwcm9wcy5hY3Rpb25zV2lkdGggfHwgJzEwMHB4J1wiPlxuICAgICAgICAgICAgICAgICAge3sgcHJvcHMuYWN0aW9uc0xhYmVsIHx8ICdBY2Npb25lcycgfX1cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGhlYWQ+XG5cbiAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICBAaWYgKGRpc3BsYXllZERhdGEubGVuZ3RoID09PSAwICYmICFwcm9wcy5sb2FkaW5nU3RhdGU/LmxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiZW1wdHktcm93XCI+XG4gICAgICAgICAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwidG90YWxDb2x1bW5zXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChlbXB0eVN0YXRlLnRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVtcHR5U3RhdGUudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChlbXB0eVN0YXRlLmljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJlbXB0eVN0YXRlLmljb25cIiBjbGFzcz1cImVtcHR5LWljb25cIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGVtcHR5U3RhdGUudGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cImVtcHR5LXRpdGxlXCI+e3sgZW1wdHlTdGF0ZS50aXRsZSB9fTwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZW1wdHlTdGF0ZS5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJlbXB0eS1kZXNjcmlwdGlvblwiPnt7IGVtcHR5U3RhdGUuZGVzY3JpcHRpb24gfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIEBmb3IgKHJvdyBvZiBkaXNwbGF5ZWREYXRhOyB0cmFjayB0cmFja0J5Rm4ocm93KTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICA8dHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJpc1Jvd1NlbGVjdGVkKHJvdylcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmNsaWNrYWJsZV09XCJwcm9wcy5yb3dDbGlja2FibGVcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUm93Q2xpY2socm93LCBpLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8IS0tIFNlbGVjdGlvbiBjZWxsIC0tPlxuICAgICAgICAgICAgICAgICAgQGlmIChwcm9wcy5zaG93U2VsZWN0aW9uQ29sdW1uKSB7XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInNlbGVjdGlvbi1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChwcm9wcy5zZWxlY3Rpb24/Lm1vZGUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNSb3dTZWxlY3RlZChyb3cpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGlvbkNoYW5nZSk9XCJ0b2dnbGVSb3dTZWxlY3Rpb24ocm93LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9pb24tY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAocHJvcHMuc2VsZWN0aW9uPy5tb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzUm93U2VsZWN0ZWQocm93KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VsZWN0U2luZ2xlUm93KHJvdylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICA8IS0tIFJvdyBudW1iZXIgLS0+XG4gICAgICAgICAgICAgICAgICBAaWYgKHByb3BzLnNob3dSb3dOdW1iZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInJvdy1udW1iZXItY2VsbFwiPnt7IGdldFJvd051bWJlcihpKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIDwhLS0gRGF0YSBjZWxscyAtLT5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKGNvbHVtbiBvZiB2aXNpYmxlQ29sdW1uczsgdHJhY2sgY29sdW1uLmtleSkge1xuICAgICAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2V0Q29sdW1uQ2xhc3MoY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLnRleHQtYWxpZ25dPVwiY29sdW1uLmFsaWduXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29sdW1uLmNlbGxUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5jZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHsgcm93LCBjb2x1bW4sIHZhbHVlOiBnZXRDZWxsVmFsdWUocm93LCBjb2x1bW4pIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEZvcm1hdHRlZFZhbHVlKHJvdywgY29sdW1uKSB9fVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgPCEtLSBBY3Rpb25zIGNlbGwgLS0+XG4gICAgICAgICAgICAgICAgICBAaWYgKHByb3BzLmFjdGlvbnNUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJhY3Rpb25zLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvcHMuYWN0aW9uc1RlbXBsYXRlOyBjb250ZXh0OiB7IHJvdywgaW5kZXg6IGkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gQ2FyZCB2aWV3IChyZXNwb25zaXZlIG1vYmlsZSkgLS0+XG4gICAgICBAaWYgKHByb3BzLnJlc3BvbnNpdmVNb2RlID09PSAnY2FyZHMnKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWxpc3RcIj5cbiAgICAgICAgICBAaWYgKGRpc3BsYXllZERhdGEubGVuZ3RoID09PSAwICYmICFwcm9wcy5sb2FkaW5nU3RhdGU/LmxvYWRpbmcpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZVwiPlxuICAgICAgICAgICAgICBAaWYgKGVtcHR5U3RhdGUuaWNvbikge1xuICAgICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJlbXB0eVN0YXRlLmljb25cIiBjbGFzcz1cImVtcHR5LWljb25cIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoZW1wdHlTdGF0ZS50aXRsZSkge1xuICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cImVtcHR5LXRpdGxlXCI+e3sgZW1wdHlTdGF0ZS50aXRsZSB9fTwvaDQ+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChlbXB0eVN0YXRlLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJlbXB0eS1kZXNjcmlwdGlvblwiPnt7IGVtcHR5U3RhdGUuZGVzY3JpcHRpb24gfX08L3A+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgQGZvciAocm93IG9mIGRpc3BsYXllZERhdGE7IHRyYWNrIHRyYWNrQnlGbihyb3cpOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgICBAaWYgKHByb3BzLm1vYmlsZUNhcmRUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9wcy5tb2JpbGVDYXJkVGVtcGxhdGU7IGNvbnRleHQ6IHsgcm93LCBpbmRleDogaSwgY29sdW1uczogdmlzaWJsZUNvbHVtbnMgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtY2FyZFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiaXNSb3dTZWxlY3RlZChyb3cpXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5jbGlja2FibGVdPVwicHJvcHMucm93Q2xpY2thYmxlXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJvd0NsaWNrKHJvdywgaSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPCEtLSBDYXJkIGhlYWRlciB3aXRoIHNlbGVjdGlvbiAtLT5cbiAgICAgICAgICAgICAgICAgIEBpZiAocHJvcHMuc2hvd1NlbGVjdGlvbkNvbHVtbikge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1zZWxlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocHJvcHMuc2VsZWN0aW9uPy5tb2RlID09PSAnbXVsdGlwbGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc1Jvd1NlbGVjdGVkKHJvdylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpb25DaGFuZ2UpPVwidG9nZ2xlUm93U2VsZWN0aW9uKHJvdywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48L2lvbi1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKHByb3BzLnNlbGVjdGlvbj8ubW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc1Jvd1NlbGVjdGVkKHJvdylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VsZWN0U2luZ2xlUm93KHJvdylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAocHJvcHMuc2hvd1Jvd051bWJlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicm93LW51bWJlclwiPnt7IGdldFJvd051bWJlcihpKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICA8IS0tIENhcmQgYm9keSB3aXRoIGZpZWxkcyAtLT5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoY29sdW1uIG9mIHZpc2libGVDb2x1bW5zOyB0cmFjayBjb2x1bW4ua2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1maWVsZF9fbGFiZWxcIj57eyBjb2x1bW4ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtZmllbGRfX3ZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29sdW1uLmNlbGxUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4uY2VsbFRlbXBsYXRlOyBjb250ZXh0OiB7IHJvdywgY29sdW1uLCB2YWx1ZTogZ2V0Q2VsbFZhbHVlKHJvdywgY29sdW1uKSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEZvcm1hdHRlZFZhbHVlKHJvdywgY29sdW1uKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8IS0tIENhcmQgYWN0aW9ucyAtLT5cbiAgICAgICAgICAgICAgICAgIEBpZiAocHJvcHMuYWN0aW9uc1RlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvcHMuYWN0aW9uc1RlbXBsYXRlOyBjb250ZXh0OiB7IHJvdywgaW5kZXg6IGkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gUGFnaW5hdGlvbiAtLT5cbiAgICAgIEBpZiAocHJvcHMuc2hvd1BhZ2luYXRpb24gJiYgcHJvcHMucGFnaW5hdGlvbikge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicGFnaW5hdGlvbi1jb250YWluZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFnaW5hdGlvbi1pbmZvXCI+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgTW9zdHJhbmRvIHt7IHBhZ2luYXRpb25TdGFydCB9fS17eyBwYWdpbmF0aW9uRW5kIH19IGRlIHt7IHByb3BzLnBhZ2luYXRpb24udG90YWwgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgQGlmIChwYWdlU2l6ZU9wdGlvbnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICA8aW9uLXNlbGVjdFxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJwcm9wcy5wYWdpbmF0aW9uLnBhZ2VTaXplXCJcbiAgICAgICAgICAgICAgICAoaW9uQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgaW50ZXJmYWNlPVwicG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwYWdlLXNpemUtc2VsZWN0XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBmb3IgKHNpemUgb2YgcGFnZVNpemVPcHRpb25zOyB0cmFjayBzaXplKSB7XG4gICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gW3ZhbHVlXT1cInNpemVcIj57eyBzaXplIH19IHBvciBww6FnaW5hPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvaW9uLXNlbGVjdD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYWdpbmF0aW9uLWNvbnRyb2xzXCI+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJvcHMucGFnaW5hdGlvbi5wYWdlID09PSAwXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKDApXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlByaW1lcmEgcMOhZ2luYVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImNoZXZyb24tYmFjay1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiY2hldnJvbi1iYWNrLW91dGxpbmVcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMTJweFwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG5cbiAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwcm9wcy5wYWdpbmF0aW9uLnBhZ2UgPT09IDBcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1BhZ2UocHJvcHMucGFnaW5hdGlvbi5wYWdlIC0gMSlcIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiUMOhZ2luYSBhbnRlcmlvclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImNoZXZyb24tYmFjay1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYWdlLWluZGljYXRvclwiPlxuICAgICAgICAgICAgICB7eyBwcm9wcy5wYWdpbmF0aW9uLnBhZ2UgKyAxIH19IC8ge3sgdG90YWxQYWdlcyB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJvcHMucGFnaW5hdGlvbi5wYWdlID49IHRvdGFsUGFnZXMgLSAxXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKHByb3BzLnBhZ2luYXRpb24ucGFnZSArIDEpXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlDDoWdpbmEgc2lndWllbnRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiY2hldnJvbi1mb3J3YXJkLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJvcHMucGFnaW5hdGlvbi5wYWdlID49IHRvdGFsUGFnZXMgLSAxXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKHRvdGFsUGFnZXMgLSAxKVwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCLDmmx0aW1hIHDDoWdpbmFcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJjaGV2cm9uLWZvcndhcmQtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImNoZXZyb24tZm9yd2FyZC1vdXRsaW5lXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTEycHhcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLWRhdGEtdGFibGVcbiAqXG4gKiBBIGZsZXhpYmxlIGRhdGEgdGFibGUgY29tcG9uZW50IGZvciBkaXNwbGF5aW5nIHRhYnVsYXIgZGF0YSB3aXRoIHNvcnRpbmcsXG4gKiBwYWdpbmF0aW9uLCBhbmQgc2VsZWN0aW9uIGZlYXR1cmVzLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlXG4gKiBgYGBodG1sXG4gKiA8dmFsLWRhdGEtdGFibGVcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBjb2x1bW5zOiBbXG4gKiAgICAgICB7IGtleTogJ25hbWUnLCBsYWJlbDogJ05vbWJyZScsIHNvcnRhYmxlOiB0cnVlIH0sXG4gKiAgICAgICB7IGtleTogJ2VtYWlsJywgbGFiZWw6ICdFbWFpbCcgfSxcbiAqICAgICAgIHsga2V5OiAnc3RhdHVzJywgbGFiZWw6ICdFc3RhZG8nIH1cbiAqICAgICBdLFxuICogICAgIGRhdGE6IHVzZXJzXG4gKiAgIH1cIlxuICogPjwvdmFsLWRhdGEtdGFibGU+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBXaXRoIHBhZ2luYXRpb24gYW5kIHNlbGVjdGlvblxuICogYGBgaHRtbFxuICogPHZhbC1kYXRhLXRhYmxlXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgY29sdW1uczogY29sdW1ucyxcbiAqICAgICBkYXRhOiBwYXJ0aWNpcGFudHMsXG4gKiAgICAgc2hvd1BhZ2luYXRpb246IHRydWUsXG4gKiAgICAgcGFnaW5hdGlvbjoge1xuICogICAgICAgcGFnZTogMCxcbiAqICAgICAgIHBhZ2VTaXplOiAyNSxcbiAqICAgICAgIHRvdGFsOiB0b3RhbENvdW50XG4gKiAgICAgfSxcbiAqICAgICBzZWxlY3Rpb246IHtcbiAqICAgICAgIG1vZGU6ICdtdWx0aXBsZScsXG4gKiAgICAgICBzZWxlY3RlZDogc2VsZWN0ZWRQYXJ0aWNpcGFudHNcbiAqICAgICB9LFxuICogICAgIHNob3dTZWxlY3Rpb25Db2x1bW46IHRydWVcbiAqICAgfVwiXG4gKiAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gKiAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAqID48L3ZhbC1kYXRhLXRhYmxlPlxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVDb21wb25lbnQ8VCA9IGFueT4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHByb3BzOiBEYXRhVGFibGVNZXRhZGF0YTxUPjtcblxuICBAT3V0cHV0KCkgcm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGFUYWJsZVJvd0NsaWNrRXZlbnQ8VD4+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGFUYWJsZVNlbGVjdGlvbkNoYW5nZUV2ZW50PFQ+PigpO1xuICBAT3V0cHV0KCkgc29ydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0YVRhYmxlU29ydENoYW5nZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgcGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0YVRhYmxlUGFnZUNoYW5nZUV2ZW50PigpO1xuXG4gIGRpc3BsYXllZERhdGE6IFRbXSA9IFtdO1xuICBjdXJyZW50U29ydDogRGF0YVRhYmxlU29ydCB8IG51bGwgPSBudWxsO1xuICBzZWxlY3RlZFJvd3M6IFNldDxhbnk+ID0gbmV3IFNldCgpO1xuXG4gIC8qKiBDYWNoZWQgdmlzaWJsZSBjb2x1bW5zIGZvciBwZXJmb3JtYW5jZSAqL1xuICBwcml2YXRlIF92aXNpYmxlQ29sdW1uczogRGF0YVRhYmxlQ29sdW1uPFQ+W10gPSBbXTtcblxuICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplU3RhdGUoKTtcbiAgICB0aGlzLnVwZGF0ZURpc3BsYXllZERhdGEoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1sncHJvcHMnXSkge1xuICAgICAgdGhpcy5pbml0aWFsaXplU3RhdGUoKTtcbiAgICAgIHRoaXMudXBkYXRlRGlzcGxheWVkRGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVN0YXRlKCk6IHZvaWQge1xuICAgIC8vIENhY2hlIHZpc2libGUgY29sdW1ucyBmb3IgcGVyZm9ybWFuY2VcbiAgICB0aGlzLl92aXNpYmxlQ29sdW1ucyA9IHRoaXMucHJvcHMuY29sdW1ucy5maWx0ZXIoYyA9PiBjLnZpc2libGUgIT09IGZhbHNlKTtcblxuICAgIC8vIEluaXRpYWxpemUgc29ydFxuICAgIHRoaXMuY3VycmVudFNvcnQgPSB0aGlzLnByb3BzLnNvcnQgfHwgbnVsbDtcblxuICAgIC8vIEluaXRpYWxpemUgc2VsZWN0aW9uXG4gICAgaWYgKHRoaXMucHJvcHMuc2VsZWN0aW9uPy5zZWxlY3RlZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MgPSBuZXcgU2V0KFxuICAgICAgICB0aGlzLnByb3BzLnNlbGVjdGlvbi5zZWxlY3RlZC5tYXAocm93ID0+IHRoaXMuZ2V0Um93SWQocm93KSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEaXNwbGF5ZWREYXRhKCk6IHZvaWQge1xuICAgIGxldCBkYXRhID0gWy4uLnRoaXMucHJvcHMuZGF0YV07XG5cbiAgICAvLyBBcHBseSBjbGllbnQtc2lkZSBzb3J0aW5nXG4gICAgaWYgKHRoaXMucHJvcHMuY2xpZW50U29ydCAmJiB0aGlzLmN1cnJlbnRTb3J0KSB7XG4gICAgICBkYXRhID0gdGhpcy5zb3J0RGF0YShkYXRhKTtcbiAgICB9XG5cbiAgICAvLyBBcHBseSBjbGllbnQtc2lkZSBwYWdpbmF0aW9uXG4gICAgaWYgKHRoaXMucHJvcHMuY2xpZW50UGFnaW5hdGlvbiAmJiB0aGlzLnByb3BzLnBhZ2luYXRpb24pIHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2UgKiB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZVNpemU7XG4gICAgICBjb25zdCBlbmQgPSBzdGFydCArIHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlU2l6ZTtcbiAgICAgIGRhdGEgPSBkYXRhLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIHRoaXMuZGlzcGxheWVkRGF0YSA9IGRhdGE7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIHNvcnREYXRhKGRhdGE6IFRbXSk6IFRbXSB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRTb3J0KSByZXR1cm4gZGF0YTtcblxuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMucHJvcHMuY29sdW1ucy5maW5kKGMgPT4gYy5rZXkgPT09IHRoaXMuY3VycmVudFNvcnQ/LmNvbHVtbik7XG4gICAgaWYgKCFjb2x1bW4pIHJldHVybiBkYXRhO1xuXG4gICAgcmV0dXJuIFsuLi5kYXRhXS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBpZiAoY29sdW1uLnNvcnRGbikge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBjb2x1bW4uc29ydEZuKGEsIGIpO1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50U29ydD8uZGlyZWN0aW9uID09PSAnZGVzYycgPyAtcmVzdWx0IDogcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCB2YWx1ZUEgPSB0aGlzLmdldENlbGxWYWx1ZShhLCBjb2x1bW4pO1xuICAgICAgY29uc3QgdmFsdWVCID0gdGhpcy5nZXRDZWxsVmFsdWUoYiwgY29sdW1uKTtcblxuICAgICAgbGV0IGNvbXBhcmlzb24gPSAwO1xuICAgICAgaWYgKHZhbHVlQSA9PSBudWxsICYmIHZhbHVlQiA9PSBudWxsKSBjb21wYXJpc29uID0gMDtcbiAgICAgIGVsc2UgaWYgKHZhbHVlQSA9PSBudWxsKSBjb21wYXJpc29uID0gMTtcbiAgICAgIGVsc2UgaWYgKHZhbHVlQiA9PSBudWxsKSBjb21wYXJpc29uID0gLTE7XG4gICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWVBID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsdWVCID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb21wYXJpc29uID0gdmFsdWVBLmxvY2FsZUNvbXBhcmUodmFsdWVCKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbXBhcmlzb24gPSB2YWx1ZUEgPCB2YWx1ZUIgPyAtMSA6IHZhbHVlQSA+IHZhbHVlQiA/IDEgOiAwO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50U29ydD8uZGlyZWN0aW9uID09PSAnZGVzYycgPyAtY29tcGFyaXNvbiA6IGNvbXBhcmlzb247XG4gICAgfSk7XG4gIH1cblxuICBnZXQgdmlzaWJsZUNvbHVtbnMoKTogRGF0YVRhYmxlQ29sdW1uPFQ+W10ge1xuICAgIHJldHVybiB0aGlzLl92aXNpYmxlQ29sdW1ucztcbiAgfVxuXG4gIGdldCB0b3RhbENvbHVtbnMoKTogbnVtYmVyIHtcbiAgICBsZXQgY291bnQgPSB0aGlzLnZpc2libGVDb2x1bW5zLmxlbmd0aDtcbiAgICBpZiAodGhpcy5wcm9wcy5zaG93U2VsZWN0aW9uQ29sdW1uKSBjb3VudCsrO1xuICAgIGlmICh0aGlzLnByb3BzLnNob3dSb3dOdW1iZXJzKSBjb3VudCsrO1xuICAgIGlmICh0aGlzLnByb3BzLmFjdGlvbnNUZW1wbGF0ZSkgY291bnQrKztcbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICBnZXQgZW1wdHlTdGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5lbXB0eVN0YXRlIHx8IERFRkFVTFRfRU1QVFlfU1RBVEU7XG4gIH1cblxuICBnZXQgcGFnZVNpemVPcHRpb25zKCk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5wYWdpbmF0aW9uPy5wYWdlU2l6ZU9wdGlvbnMgfHwgREVGQVVMVF9QQUdFX1NJWkVfT1BUSU9OUztcbiAgfVxuXG4gIGdldCB0b3RhbFBhZ2VzKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnByb3BzLnBhZ2luYXRpb24pIHJldHVybiAxO1xuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy5wcm9wcy5wYWdpbmF0aW9uLnRvdGFsIC8gdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2VTaXplKTtcbiAgfVxuXG4gIGdldCBwYWdpbmF0aW9uU3RhcnQoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMucHJvcHMucGFnaW5hdGlvbikgcmV0dXJuIDE7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlICogdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2VTaXplICsgMTtcbiAgfVxuXG4gIGdldCBwYWdpbmF0aW9uRW5kKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLnByb3BzLnBhZ2luYXRpb24pIHJldHVybiB0aGlzLmRpc3BsYXllZERhdGEubGVuZ3RoO1xuICAgIHJldHVybiBNYXRoLm1pbihcbiAgICAgICh0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZSArIDEpICogdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2VTaXplLFxuICAgICAgdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnRvdGFsXG4gICAgKTtcbiAgfVxuXG4gIGdldCBpc0FsbFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmRpc3BsYXllZERhdGEubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheWVkRGF0YS5ldmVyeShyb3cgPT4gdGhpcy5pc1Jvd1NlbGVjdGVkKHJvdykpO1xuICB9XG5cbiAgZ2V0IGlzSW5kZXRlcm1pbmF0ZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBzZWxlY3RlZENvdW50ID0gdGhpcy5kaXNwbGF5ZWREYXRhLmZpbHRlcihyb3cgPT4gdGhpcy5pc1Jvd1NlbGVjdGVkKHJvdykpLmxlbmd0aDtcbiAgICByZXR1cm4gc2VsZWN0ZWRDb3VudCA+IDAgJiYgc2VsZWN0ZWRDb3VudCA8IHRoaXMuZGlzcGxheWVkRGF0YS5sZW5ndGg7XG4gIH1cblxuICBnZXRDZWxsVmFsdWUocm93OiBULCBjb2x1bW46IERhdGFUYWJsZUNvbHVtbjxUPik6IGFueSB7XG4gICAgY29uc3QgZmllbGQgPSBjb2x1bW4uZmllbGQgfHwgY29sdW1uLmtleTtcbiAgICByZXR1cm4gZmllbGQuc3BsaXQoJy4nKS5yZWR1Y2UoKG9iajogYW55LCBrZXkpID0+IG9iaj8uW2tleV0sIHJvdyk7XG4gIH1cblxuICBnZXRGb3JtYXR0ZWRWYWx1ZShyb3c6IFQsIGNvbHVtbjogRGF0YVRhYmxlQ29sdW1uPFQ+KTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0Q2VsbFZhbHVlKHJvdywgY29sdW1uKTtcbiAgICBpZiAoY29sdW1uLmZvcm1hdCkge1xuICAgICAgcmV0dXJuIGNvbHVtbi5mb3JtYXQodmFsdWUsIHJvdyk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZSA/PyAnJztcbiAgfVxuXG4gIGdldENvbHVtbkNsYXNzKGNvbHVtbjogRGF0YVRhYmxlQ29sdW1uPFQ+KTogc3RyaW5nIHtcbiAgICBjb25zdCBjbGFzc2VzID0gW2NvbHVtbi5jc3NDbGFzcyB8fCAnJ107XG4gICAgaWYgKGNvbHVtbi5zdGlja3kpIHtcbiAgICAgIGNsYXNzZXMucHVzaChgc3RpY2t5LSR7Y29sdW1uLnN0aWNreX1gKTtcbiAgICB9XG4gICAgaWYgKGNvbHVtbi5hbGlnbikge1xuICAgICAgY2xhc3Nlcy5wdXNoKGBhbGlnbi0ke2NvbHVtbi5hbGlnbn1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGNsYXNzZXMuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKTtcbiAgfVxuXG4gIGdldEFyaWFTb3J0KGNvbHVtbjogRGF0YVRhYmxlQ29sdW1uPFQ+KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKCFjb2x1bW4uc29ydGFibGUpIHJldHVybiBudWxsO1xuICAgIGlmICh0aGlzLmN1cnJlbnRTb3J0Py5jb2x1bW4gIT09IGNvbHVtbi5rZXkpIHJldHVybiAnbm9uZSc7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFNvcnQuZGlyZWN0aW9uID09PSAnYXNjJyA/ICdhc2NlbmRpbmcnIDogJ2Rlc2NlbmRpbmcnO1xuICB9XG5cbiAgZ2V0Um93TnVtYmVyKGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5wcm9wcy5yb3dOdW1iZXJTdGFydCA/PyAxO1xuICAgIGlmICh0aGlzLnByb3BzLnBhZ2luYXRpb24pIHtcbiAgICAgIHJldHVybiBzdGFydCArIHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlICogdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2VTaXplICsgaW5kZXg7XG4gICAgfVxuICAgIHJldHVybiBzdGFydCArIGluZGV4O1xuICB9XG5cbiAgZ2V0Um93SWQocm93OiBUKTogYW55IHtcbiAgICBpZiAodGhpcy5wcm9wcy5zZWxlY3Rpb24/LnRyYWNrQnkpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLnNlbGVjdGlvbi50cmFja0J5KHJvdyk7XG4gICAgfVxuICAgIHJldHVybiByb3c7XG4gIH1cblxuICB0cmFja0J5Rm4ocm93OiBUKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5nZXRSb3dJZChyb3cpO1xuICB9XG5cbiAgaXNSb3dTZWxlY3RlZChyb3c6IFQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJvd3MuaGFzKHRoaXMuZ2V0Um93SWQocm93KSk7XG4gIH1cblxuICBvblNvcnQoY29sdW1uOiBEYXRhVGFibGVDb2x1bW48VD4pOiB2b2lkIHtcbiAgICBpZiAoIWNvbHVtbi5zb3J0YWJsZSkgcmV0dXJuO1xuXG4gICAgbGV0IGRpcmVjdGlvbjogJ2FzYycgfCAnZGVzYycgfCBudWxsID0gJ2FzYyc7XG5cbiAgICBpZiAodGhpcy5jdXJyZW50U29ydD8uY29sdW1uID09PSBjb2x1bW4ua2V5KSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50U29ydC5kaXJlY3Rpb24gPT09ICdhc2MnKSB7XG4gICAgICAgIGRpcmVjdGlvbiA9ICdkZXNjJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpcmVjdGlvbiA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRpcmVjdGlvbikge1xuICAgICAgdGhpcy5jdXJyZW50U29ydCA9IHsgY29sdW1uOiBjb2x1bW4ua2V5LCBkaXJlY3Rpb24gfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50U29ydCA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5zb3J0Q2hhbmdlLmVtaXQoe1xuICAgICAgY29sdW1uOiBjb2x1bW4ua2V5LFxuICAgICAgZGlyZWN0aW9uLFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMucHJvcHMuY2xpZW50U29ydCkge1xuICAgICAgdGhpcy51cGRhdGVEaXNwbGF5ZWREYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgb25Sb3dDbGljayhyb3c6IFQsIGluZGV4OiBudW1iZXIsIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByb3BzLnJvd0NsaWNrYWJsZSkgcmV0dXJuO1xuXG4gICAgdGhpcy5yb3dDbGljay5lbWl0KHtcbiAgICAgIHJvdyxcbiAgICAgIGluZGV4LFxuICAgICAgZXZlbnQsXG4gICAgfSk7XG4gIH1cblxuICB0b2dnbGVTZWxlY3RBbGwoZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgY2hlY2tlZCA9IGV2ZW50LmRldGFpbC5jaGVja2VkO1xuXG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIHRoaXMuZGlzcGxheWVkRGF0YS5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmFkZCh0aGlzLmdldFJvd0lkKHJvdykpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGlzcGxheWVkRGF0YS5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmRlbGV0ZSh0aGlzLmdldFJvd0lkKHJvdykpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlKGNoZWNrZWQgPyAnc2VsZWN0QWxsJyA6ICdkZXNlbGVjdEFsbCcpO1xuICB9XG5cbiAgdG9nZ2xlUm93U2VsZWN0aW9uKHJvdzogVCwgZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qgcm93SWQgPSB0aGlzLmdldFJvd0lkKHJvdyk7XG4gICAgY29uc3QgY2hlY2tlZCA9IGV2ZW50LmRldGFpbC5jaGVja2VkO1xuXG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmFkZChyb3dJZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmRlbGV0ZShyb3dJZCk7XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlKGNoZWNrZWQgPyAnc2VsZWN0JyA6ICdkZXNlbGVjdCcsIHJvdyk7XG4gIH1cblxuICBzZWxlY3RTaW5nbGVSb3cocm93OiBUKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFJvd3MuY2xlYXIoKTtcbiAgICB0aGlzLnNlbGVjdGVkUm93cy5hZGQodGhpcy5nZXRSb3dJZChyb3cpKTtcbiAgICB0aGlzLmVtaXRTZWxlY3Rpb25DaGFuZ2UoJ3NlbGVjdCcsIHJvdyk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRTZWxlY3Rpb25DaGFuZ2UoXG4gICAgYWN0aW9uOiAnc2VsZWN0JyB8ICdkZXNlbGVjdCcgfCAnc2VsZWN0QWxsJyB8ICdkZXNlbGVjdEFsbCcsXG4gICAgY2hhbmdlZFJvdz86IFRcbiAgKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnByb3BzLmRhdGEuZmlsdGVyKHJvdyA9PiB0aGlzLmlzUm93U2VsZWN0ZWQocm93KSk7XG5cbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHtcbiAgICAgIHNlbGVjdGVkLFxuICAgICAgY2hhbmdlZFJvdyxcbiAgICAgIGFjdGlvbixcbiAgICB9KTtcbiAgfVxuXG4gIGdvVG9QYWdlKHBhZ2U6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5wcm9wcy5wYWdpbmF0aW9uKSByZXR1cm47XG5cbiAgICBjb25zdCBwcmV2aW91c1BhZ2UgPSB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZTtcbiAgICBjb25zdCBtYXhQYWdlID0gdGhpcy50b3RhbFBhZ2VzIC0gMTtcbiAgICBjb25zdCBuZXdQYWdlID0gTWF0aC5tYXgoMCwgTWF0aC5taW4ocGFnZSwgbWF4UGFnZSkpO1xuXG4gICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQoe1xuICAgICAgcGFnZTogbmV3UGFnZSxcbiAgICAgIHBhZ2VTaXplOiB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZVNpemUsXG4gICAgICBwcmV2aW91c1BhZ2UsXG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5jbGllbnRQYWdpbmF0aW9uKSB7XG4gICAgICB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZSA9IG5ld1BhZ2U7XG4gICAgICB0aGlzLnVwZGF0ZURpc3BsYXllZERhdGEoKTtcbiAgICB9XG4gIH1cblxuICBvblBhZ2VTaXplQ2hhbmdlKGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wcm9wcy5wYWdpbmF0aW9uKSByZXR1cm47XG5cbiAgICBjb25zdCBuZXdQYWdlU2l6ZSA9IGV2ZW50LmRldGFpbC52YWx1ZTtcbiAgICBjb25zdCBwcmV2aW91c1BhZ2UgPSB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZTtcblxuICAgIC8vIFJlY2FsY3VsYXRlIHBhZ2UgdG8ga2VlcCBmaXJzdCB2aXNpYmxlIGl0ZW1cbiAgICBjb25zdCBmaXJzdEl0ZW0gPSBwcmV2aW91c1BhZ2UgKiB0aGlzLnByb3BzLnBhZ2luYXRpb24ucGFnZVNpemU7XG4gICAgY29uc3QgbmV3UGFnZSA9IE1hdGguZmxvb3IoZmlyc3RJdGVtIC8gbmV3UGFnZVNpemUpO1xuXG4gICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQoe1xuICAgICAgcGFnZTogbmV3UGFnZSxcbiAgICAgIHBhZ2VTaXplOiBuZXdQYWdlU2l6ZSxcbiAgICAgIHByZXZpb3VzUGFnZSxcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnByb3BzLmNsaWVudFBhZ2luYXRpb24pIHtcbiAgICAgIHRoaXMucHJvcHMucGFnaW5hdGlvbi5wYWdlU2l6ZSA9IG5ld1BhZ2VTaXplO1xuICAgICAgdGhpcy5wcm9wcy5wYWdpbmF0aW9uLnBhZ2UgPSBuZXdQYWdlO1xuICAgICAgdGhpcy51cGRhdGVEaXNwbGF5ZWREYXRhKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
2
|
import { ChangeDetectorRef, Component, EventEmitter, inject, Input, Output, } from '@angular/core';
|
|
3
|
-
import { LangService } from '../../../services/lang-provider/lang-provider.service';
|
|
4
3
|
import { goToTop } from '../../../shared/utils/dom';
|
|
5
4
|
import { ContentLoaderComponent } from '../../molecules/content-loader/content-loader.component';
|
|
6
5
|
import { ComponentStates } from '../../types';
|
|
@@ -14,9 +13,8 @@ export class WizardComponent {
|
|
|
14
13
|
this.wrapperId = 'wizard-wrapper';
|
|
15
14
|
this.currentStep = null;
|
|
16
15
|
this.currentStepTitles = null;
|
|
16
|
+
this.loadingText = 'Por favor espere...';
|
|
17
17
|
this.cdr = inject(ChangeDetectorRef);
|
|
18
|
-
this.langService = inject(LangService);
|
|
19
|
-
this.loadingText = this.langService.getText('_global', 'pleaseWait', 'Por favor espere...');
|
|
20
18
|
}
|
|
21
19
|
ngOnInit() {
|
|
22
20
|
this.updateCurrentStep();
|
|
@@ -155,9 +153,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
155
153
|
</ng-container>
|
|
156
154
|
</div>
|
|
157
155
|
`, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.wrapper{height:auto;display:flex;flex-direction:column;justify-content:space-between;position:relative;min-height:320px}.step{min-height:9.375rem;margin:16px 0;text-align:center}\n"] }]
|
|
158
|
-
}],
|
|
156
|
+
}], propDecorators: { props: [{
|
|
159
157
|
type: Input
|
|
160
158
|
}], onClick: [{
|
|
161
159
|
type: Output
|
|
162
160
|
}] } });
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvd2l6YXJkL3dpemFyZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDcEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDOUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLE1BQU0sRUFBd0IsTUFBTSxTQUFTLENBQUM7OztBQStCdkQsTUFBTSxPQUFPLGVBQWU7SUFlMUI7UUFWQSxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQXVDLENBQUM7UUFFbEUsY0FBUyxHQUFHLGdCQUFnQixDQUFDO1FBQzdCLGdCQUFXLEdBQWdCLElBQUksQ0FBQztRQUNoQyxzQkFBaUIsR0FBUSxJQUFJLENBQUM7UUFHdEIsUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2hDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBR3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQzlG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QUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLENBQUM7K0dBekhVLGVBQWU7bUdBQWYsZUFBZSx3SkF6QmhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JULGt3RkF2QlMsWUFBWSxtSUFBRSxrQkFBa0Isb0dBQUUsc0JBQXNCOzs0RkEwQnZELGVBQWU7a0JBN0IzQixTQUFTOytCQUNFLFlBQVksY0FDVixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLENBQUMsWUFDekQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQlQ7d0RBS0QsS0FBSztzQkFESixLQUFLO2dCQUlOLE9BQU87c0JBRE4sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGFuZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sYW5nLXByb3ZpZGVyL2xhbmctcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBnb1RvVG9wIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL2RvbSc7XG5pbXBvcnQgeyBDb250ZW50TG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2NvbnRlbnQtbG9hZGVyL2NvbnRlbnQtbG9hZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZXMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBOb0NvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuLi9uby1jb250ZW50L25vLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7IE1PVElPTiwgU3RlcCwgV2l6YXJkTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXdpemFyZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE5vQ29udGVudENvbXBvbmVudCwgQ29udGVudExvYWRlckNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBbaWRdPVwid3JhcHBlcklkXCIgY2xhc3M9XCJ3cmFwcGVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJvcHMuc3RhdGUgIT09ICdFUlJPUidcIj5cbiAgICAgICAgPHZhbC1uby1jb250ZW50IFtwcm9wc109XCJjdXJyZW50U3RlcFRpdGxlc1wiIFthdHRyLmRhdGEtc3RlcF09XCJwcm9wcy5jdXJyZW50XCI+PC92YWwtbm8tY29udGVudD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcHMuc3RhdGUgPT09ICdXT1JLSU5HJ1wiPlxuICAgICAgICAgICAgPHZhbC1jb250ZW50LWxvYWRlclxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIG5hbWU6ICdjaXJjdWxhcicsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgICAgICAgIHRleHQ6IGxvYWRpbmdUZXh0LFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3N0ZXBdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb3BzLnN0YXRlID09PSAnRVJST1InXCI+XG4gICAgICAgIDx2YWwtbm8tY29udGVudCBbcHJvcHNdPVwicHJvcHMuZXJyb3IudGl0bGVzXCIgKG9uQ2xpY2spPVwiY2xpY2tIYW5kbGVyKCRldmVudClcIj48L3ZhbC1uby1jb250ZW50PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3dpemFyZC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBXaXphcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHByb3BzOiBXaXphcmRNZXRhZGF0YTtcblxuICBAT3V0cHV0KClcbiAgb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8eyBjdXJyZW50OiBudW1iZXI7IG1vdGlvbjogTU9USU9OIH0+KCk7XG5cbiAgd3JhcHBlcklkID0gJ3dpemFyZC13cmFwcGVyJztcbiAgY3VycmVudFN0ZXA6IFN0ZXAgfCBudWxsID0gbnVsbDtcbiAgY3VycmVudFN0ZXBUaXRsZXM6IGFueSA9IG51bGw7XG4gIGxvYWRpbmdUZXh0OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIGxhbmdTZXJ2aWNlID0gaW5qZWN0KExhbmdTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmxvYWRpbmdUZXh0ID0gdGhpcy5sYW5nU2VydmljZS5nZXRUZXh0KCdfZ2xvYmFsJywgJ3BsZWFzZVdhaXQnLCAnUG9yIGZhdm9yIGVzcGVyZS4uLicpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy51cGRhdGVDdXJyZW50U3RlcCgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydwcm9wcyddKSB7XG4gICAgICB0aGlzLnVwZGF0ZUN1cnJlbnRTdGVwKCk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDdXJyZW50U3RlcCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcz8uc3RlcHMgJiYgdGhpcy5wcm9wcz8uY3VycmVudCkge1xuICAgICAgdGhpcy5jdXJyZW50U3RlcCA9IHRoaXMucHJvcHMuc3RlcHNbdGhpcy5wcm9wcy5jdXJyZW50XTtcbiAgICAgIC8vIEZvcnphciBudWV2YSByZWZlcmVuY2lhIGRlIG9iamV0byBwYXJhIGFzZWd1cmFyIGRldGVjY2nDs24gZGUgY2FtYmlvc1xuICAgICAgLy8gQWdyZWdhciB0aW1lc3RhbXAgcGFyYSBnYXJhbnRpemFyIHF1ZSBlcyB1biBvYmpldG8gY29tcGxldGFtZW50ZSBudWV2b1xuICAgICAgdGhpcy5jdXJyZW50U3RlcFRpdGxlcyA9IHRoaXMuY3VycmVudFN0ZXA/LnRpdGxlc1xuICAgICAgICA/IHtcbiAgICAgICAgICAgIC4uLkpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5jdXJyZW50U3RlcC50aXRsZXMpKSxcbiAgICAgICAgICAgIF90aW1lc3RhbXA6IERhdGUubm93KCksIC8vIEZvcnphciBudWV2YSByZWZlcmVuY2lhXG4gICAgICAgICAgICBfc3RlcDogdGhpcy5wcm9wcy5jdXJyZW50LCAvLyBBZ3JlZ2FyIGlkZW50aWZpY2Fkb3IgZGVsIHBhc29cbiAgICAgICAgICB9XG4gICAgICAgIDogbnVsbDtcblxuICAgICAgLy8gRm9yemFyIGRldGVjY2nDs24gZGUgY2FtYmlvcyBpbm1lZGlhdGFtZW50ZVxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHdvcmtpbmcoKSB7XG4gICAgdGhpcy5wcm9wcy5zdGF0ZSA9IENvbXBvbmVudFN0YXRlcy5XT1JLSU5HO1xuICAgIGlmICh0aGlzLkN1cnJlbnQ/LmJ1dHRvbnMpIHtcbiAgICAgIHRoaXMuQ3VycmVudC5idXR0b25zLmZvckVhY2goYnV0dG9uID0+IHtcbiAgICAgICAgYnV0dG9uLnN0YXRlID0gQ29tcG9uZW50U3RhdGVzLkRJU0FCTEVEO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZG9uZSgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5zdGF0ZSA9PT0gQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnByb3BzLnN0YXRlID0gQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQ7XG4gICAgaWYgKHRoaXMuQ3VycmVudD8uYnV0dG9ucykge1xuICAgICAgdGhpcy5DdXJyZW50LmJ1dHRvbnMuZm9yRWFjaChidXR0b24gPT4ge1xuICAgICAgICBidXR0b24uc3RhdGUgPSBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRDtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGdldCBDdXJyZW50KCk6IFN0ZXAge1xuICAgIGlmICh0aGlzLnByb3BzPy5zdGVwcyAmJiB0aGlzLnByb3BzPy5jdXJyZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5zdGVwc1t0aGlzLnByb3BzLmN1cnJlbnRdO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jdXJyZW50U3RlcCB8fCB7IHRpdGxlczogbnVsbCwgYnV0dG9uczogW10gfTtcbiAgfVxuXG4gIHNldEN1cnJlbnQobmV3U3RlcDogbnVtYmVyKSB7XG4gICAgaWYgKG5ld1N0ZXAgPT09IHRoaXMucHJvcHMuY3VycmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucHJvcHMuY3VycmVudCA9IG5ld1N0ZXA7XG4gICAgdGhpcy51cGRhdGVDdXJyZW50U3RlcCgpO1xuXG4gICAgLy8gRm9yemFyIG3Dumx0aXBsZXMgY2ljbG9zIGRlIGRldGVjY2nDs24gZGUgY2FtYmlvc1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9LCAwKTtcblxuICAgIGdvVG9Ub3AodGhpcy53cmFwcGVySWQpO1xuICB9XG5cbiAgc2V0RXJyb3IoZXJyb3I6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnByb3BzLnN0YXRlID09PSBDb21wb25lbnRTdGF0ZXMuRVJST1IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnByb3BzLmVycm9yLnRpdGxlcy5ib3R0b21Db250ZW50LmNvbnRlbnQuYmVsbG93VGl0bGUuY29udGVudCA9IGVycm9yO1xuICAgIHRoaXMucHJvcHMuc3RhdGUgPSBDb21wb25lbnRTdGF0ZXMuRVJST1I7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgZ29Ub1RvcCh0aGlzLndyYXBwZXJJZCk7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLnByb3BzLmVycm9yLnRpdGxlcy5ib3R0b21Db250ZW50LmNvbnRlbnQuYmVsbG93VGl0bGUuY29udGVudCA9ICcnO1xuICAgIHRoaXMuZG9uZSgpO1xuICB9XG5cbiAgY2xpY2tIYW5kbGVyKHRva2VuPzogc3RyaW5nKSB7XG4gICAgaWYgKCF0b2tlbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodG9rZW4uaW5jbHVkZXMoJ3JldHJ5JykpIHtcbiAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9XG5cbiAgICB0aGlzLm9uQ2xpY2suZW1pdCh7IGN1cnJlbnQ6IHRoaXMucHJvcHMuY3VycmVudCwgbW90aW9uOiBNT1RJT04uUkVUUlkgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvd2l6YXJkL3dpemFyZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDakcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsTUFBTSxFQUF3QixNQUFNLFNBQVMsQ0FBQzs7O0FBK0J2RCxNQUFNLE9BQU8sZUFBZTtJQTdCNUI7UUFrQ0UsWUFBTyxHQUFHLElBQUksWUFBWSxFQUF1QyxDQUFDO1FBRWxFLGNBQVMsR0FBRyxnQkFBZ0IsQ0FBQztRQUM3QixnQkFBVyxHQUFnQixJQUFJLENBQUM7UUFDaEMsc0JBQWlCLEdBQVEsSUFBSSxDQUFDO1FBQzlCLGdCQUFXLEdBQUcscUJBQXFCLENBQUM7UUFFNUIsUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0tBeUd6QztJQXZHQyxRQUFRO1FBQ04sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxD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QUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLENBQUM7K0dBcEhVLGVBQWU7bUdBQWYsZUFBZSx3SkF6QmhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JULGt3RkF2QlMsWUFBWSxtSUFBRSxrQkFBa0Isb0dBQUUsc0JBQXNCOzs0RkEwQnZELGVBQWU7a0JBN0IzQixTQUFTOytCQUNFLFlBQVksY0FDVixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLENBQUMsWUFDekQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQlQ7OEJBS0QsS0FBSztzQkFESixLQUFLO2dCQUlOLE9BQU87c0JBRE4sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ29Ub1RvcCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC91dGlscy9kb20nO1xuaW1wb3J0IHsgQ29udGVudExvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9jb250ZW50LWxvYWRlci9jb250ZW50LWxvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RhdGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgTm9Db250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vbm8tY29udGVudC9uby1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNT1RJT04sIFN0ZXAsIFdpemFyZE1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC13aXphcmQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBOb0NvbnRlbnRDb21wb25lbnQsIENvbnRlbnRMb2FkZXJDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgW2lkXT1cIndyYXBwZXJJZFwiIGNsYXNzPVwid3JhcHBlclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb3BzLnN0YXRlICE9PSAnRVJST1InXCI+XG4gICAgICAgIDx2YWwtbm8tY29udGVudCBbcHJvcHNdPVwiY3VycmVudFN0ZXBUaXRsZXNcIiBbYXR0ci5kYXRhLXN0ZXBdPVwicHJvcHMuY3VycmVudFwiPjwvdmFsLW5vLWNvbnRlbnQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInByb3BzLnN0YXRlID09PSAnV09SS0lORydcIj5cbiAgICAgICAgICAgIDx2YWwtY29udGVudC1sb2FkZXJcbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICBuYW1lOiAnY2lyY3VsYXInLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICAgICAgICAgICAgc2l6ZTogJ2xhcmdlJyxcbiAgICAgICAgICAgICAgICB0ZXh0OiBsb2FkaW5nVGV4dCxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzdGVwXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9wcy5zdGF0ZSA9PT0gJ0VSUk9SJ1wiPlxuICAgICAgICA8dmFsLW5vLWNvbnRlbnQgW3Byb3BzXT1cInByb3BzLmVycm9yLnRpdGxlc1wiIChvbkNsaWNrKT1cImNsaWNrSGFuZGxlcigkZXZlbnQpXCI+PC92YWwtbm8tY29udGVudD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi93aXphcmQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgV2l6YXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBwcm9wczogV2l6YXJkTWV0YWRhdGE7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHsgY3VycmVudDogbnVtYmVyOyBtb3Rpb246IE1PVElPTiB9PigpO1xuXG4gIHdyYXBwZXJJZCA9ICd3aXphcmQtd3JhcHBlcic7XG4gIGN1cnJlbnRTdGVwOiBTdGVwIHwgbnVsbCA9IG51bGw7XG4gIGN1cnJlbnRTdGVwVGl0bGVzOiBhbnkgPSBudWxsO1xuICBsb2FkaW5nVGV4dCA9ICdQb3IgZmF2b3IgZXNwZXJlLi4uJztcblxuICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy51cGRhdGVDdXJyZW50U3RlcCgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydwcm9wcyddKSB7XG4gICAgICB0aGlzLnVwZGF0ZUN1cnJlbnRTdGVwKCk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDdXJyZW50U3RlcCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcz8uc3RlcHMgJiYgdGhpcy5wcm9wcz8uY3VycmVudCkge1xuICAgICAgdGhpcy5jdXJyZW50U3RlcCA9IHRoaXMucHJvcHMuc3RlcHNbdGhpcy5wcm9wcy5jdXJyZW50XTtcbiAgICAgIC8vIEZvcnphciBudWV2YSByZWZlcmVuY2lhIGRlIG9iamV0byBwYXJhIGFzZWd1cmFyIGRldGVjY2nDs24gZGUgY2FtYmlvc1xuICAgICAgLy8gQWdyZWdhciB0aW1lc3RhbXAgcGFyYSBnYXJhbnRpemFyIHF1ZSBlcyB1biBvYmpldG8gY29tcGxldGFtZW50ZSBudWV2b1xuICAgICAgdGhpcy5jdXJyZW50U3RlcFRpdGxlcyA9IHRoaXMuY3VycmVudFN0ZXA/LnRpdGxlc1xuICAgICAgICA/IHtcbiAgICAgICAgICAgIC4uLkpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5jdXJyZW50U3RlcC50aXRsZXMpKSxcbiAgICAgICAgICAgIF90aW1lc3RhbXA6IERhdGUubm93KCksIC8vIEZvcnphciBudWV2YSByZWZlcmVuY2lhXG4gICAgICAgICAgICBfc3RlcDogdGhpcy5wcm9wcy5jdXJyZW50LCAvLyBBZ3JlZ2FyIGlkZW50aWZpY2Fkb3IgZGVsIHBhc29cbiAgICAgICAgICB9XG4gICAgICAgIDogbnVsbDtcblxuICAgICAgLy8gRm9yemFyIGRldGVjY2nDs24gZGUgY2FtYmlvcyBpbm1lZGlhdGFtZW50ZVxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHdvcmtpbmcoKSB7XG4gICAgdGhpcy5wcm9wcy5zdGF0ZSA9IENvbXBvbmVudFN0YXRlcy5XT1JLSU5HO1xuICAgIGlmICh0aGlzLkN1cnJlbnQ/LmJ1dHRvbnMpIHtcbiAgICAgIHRoaXMuQ3VycmVudC5idXR0b25zLmZvckVhY2goYnV0dG9uID0+IHtcbiAgICAgICAgYnV0dG9uLnN0YXRlID0gQ29tcG9uZW50U3RhdGVzLkRJU0FCTEVEO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZG9uZSgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5zdGF0ZSA9PT0gQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnByb3BzLnN0YXRlID0gQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQ7XG4gICAgaWYgKHRoaXMuQ3VycmVudD8uYnV0dG9ucykge1xuICAgICAgdGhpcy5DdXJyZW50LmJ1dHRvbnMuZm9yRWFjaChidXR0b24gPT4ge1xuICAgICAgICBidXR0b24uc3RhdGUgPSBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRDtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGdldCBDdXJyZW50KCk6IFN0ZXAge1xuICAgIGlmICh0aGlzLnByb3BzPy5zdGVwcyAmJiB0aGlzLnByb3BzPy5jdXJyZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5zdGVwc1t0aGlzLnByb3BzLmN1cnJlbnRdO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jdXJyZW50U3RlcCB8fCB7IHRpdGxlczogbnVsbCwgYnV0dG9uczogW10gfTtcbiAgfVxuXG4gIHNldEN1cnJlbnQobmV3U3RlcDogbnVtYmVyKSB7XG4gICAgaWYgKG5ld1N0ZXAgPT09IHRoaXMucHJvcHMuY3VycmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucHJvcHMuY3VycmVudCA9IG5ld1N0ZXA7XG4gICAgdGhpcy51cGRhdGVDdXJyZW50U3RlcCgpO1xuXG4gICAgLy8gRm9yemFyIG3Dumx0aXBsZXMgY2ljbG9zIGRlIGRldGVjY2nDs24gZGUgY2FtYmlvc1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9LCAwKTtcblxuICAgIGdvVG9Ub3AodGhpcy53cmFwcGVySWQpO1xuICB9XG5cbiAgc2V0RXJyb3IoZXJyb3I6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnByb3BzLnN0YXRlID09PSBDb21wb25lbnRTdGF0ZXMuRVJST1IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnByb3BzLmVycm9yLnRpdGxlcy5ib3R0b21Db250ZW50LmNvbnRlbnQuYmVsbG93VGl0bGUuY29udGVudCA9IGVycm9yO1xuICAgIHRoaXMucHJvcHMuc3RhdGUgPSBDb21wb25lbnRTdGF0ZXMuRVJST1I7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgZ29Ub1RvcCh0aGlzLndyYXBwZXJJZCk7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLnByb3BzLmVycm9yLnRpdGxlcy5ib3R0b21Db250ZW50LmNvbnRlbnQuYmVsbG93VGl0bGUuY29udGVudCA9ICcnO1xuICAgIHRoaXMuZG9uZSgpO1xuICB9XG5cbiAgY2xpY2tIYW5kbGVyKHRva2VuPzogc3RyaW5nKSB7XG4gICAgaWYgKCF0b2tlbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodG9rZW4uaW5jbHVkZXMoJ3JldHJ5JykpIHtcbiAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9XG5cbiAgICB0aGlzLm9uQ2xpY2suZW1pdCh7IGN1cnJlbnQ6IHRoaXMucHJvcHMuY3VycmVudCwgbW90aW9uOiBNT1RJT04uUkVUUlkgfSk7XG4gIH1cbn1cbiJdfQ==
|