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,10 +1,9 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, Input, Output, EventEmitter
|
|
2
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
3
3
|
import { FormsModule } from '@angular/forms';
|
|
4
4
|
import { IonButton, IonIcon, IonSearchbar } from '@ionic/angular/standalone';
|
|
5
5
|
import { addIcons } from 'ionicons';
|
|
6
6
|
import { shuffleOutline } from 'ionicons/icons';
|
|
7
|
-
import { LangService } from '../../../services/lang-provider/lang-provider.service';
|
|
8
7
|
import { DEFAULT_LEGEND_LABELS, } from './types';
|
|
9
8
|
import * as i0 from "@angular/core";
|
|
10
9
|
addIcons({ shuffleOutline });
|
|
@@ -52,7 +51,6 @@ export class TicketGridComponent {
|
|
|
52
51
|
this.selectedTickets = [];
|
|
53
52
|
this.searchTerm = '';
|
|
54
53
|
this.highlightedNumbers = [];
|
|
55
|
-
this.langService = inject(LangService);
|
|
56
54
|
}
|
|
57
55
|
ngOnInit() {
|
|
58
56
|
this.buildTickets();
|
|
@@ -266,15 +264,9 @@ export class TicketGridComponent {
|
|
|
266
264
|
return `Boleto ${this.formatNumber(ticket.number)}, ${statusLabel}`;
|
|
267
265
|
}
|
|
268
266
|
getSearchPlaceholder() {
|
|
269
|
-
if (this.props.searchPlaceholderContentKey && this.props.contentClass) {
|
|
270
|
-
return this.langService.getText(this.props.contentClass, this.props.searchPlaceholderContentKey, this.props.searchPlaceholder || 'Buscar número...');
|
|
271
|
-
}
|
|
272
267
|
return this.props.searchPlaceholder || 'Buscar número...';
|
|
273
268
|
}
|
|
274
269
|
getRandomSelectLabel() {
|
|
275
|
-
if (this.props.randomSelectLabelContentKey && this.props.contentClass) {
|
|
276
|
-
return this.langService.getText(this.props.contentClass, this.props.randomSelectLabelContentKey, this.props.randomSelectLabel || 'Aleatorio');
|
|
277
|
-
}
|
|
278
270
|
return this.props.randomSelectLabel || 'Aleatorio';
|
|
279
271
|
}
|
|
280
272
|
getColor() {
|
|
@@ -494,4 +486,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
494
486
|
}], ticketClick: [{
|
|
495
487
|
type: Output
|
|
496
488
|
}] } });
|
|
497
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlja2V0LWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy90aWNrZXQtZ3JpZC90aWNrZXQtZ3JpZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQW9DLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3BGLE9BQU8sRUFPTCxxQkFBcUIsR0FDdEIsTUFBTSxTQUFTLENBQUM7O0FBRWpCLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7QUE0RzdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0NHO0FBQ0gsTUFBTSxPQUFPLG1CQUFtQjtJQTdJaEM7UUFnSlksb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBNEIsQ0FBQztRQUMvRCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUF3QixDQUFDO1FBRWpFLFlBQU8sR0FBaUIsRUFBRSxDQUFDO1FBQzNCLHFCQUFnQixHQUFpQixFQUFFLENBQUM7UUFDcEMsb0JBQWUsR0FBYSxFQUFFLENBQUM7UUFDL0IsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQix1QkFB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QUssQ0FBQyxZQUFZLEVBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsMkJBQTJCLEVBQ3RDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLElBQUksV0FBVyxDQUM1QyxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxXQUFXLENBQUM7SUFDckQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckIsT0FBTyxtQkFBbUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsT0FBTywwQkFBMEIsQ0FBQztJQUNwQyxDQUFDOytHQTVSVSxtQkFBbUI7bUdBQW5CLG1CQUFtQix5TUF6SXBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtR1QsOHRIQXBHUyxZQUFZLDhCQUFFLFdBQVcsK0JBQUUsU0FBUyxvUEFBRSxPQUFPLDJKQUFFLFlBQVk7OzRGQTBJMUQsbUJBQW1CO2tCQTdJL0IsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLFlBQzVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtR1Q7OEJBdUNRLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uQnV0dG9uLCBJb25JY29uLCBJb25TZWFyY2hiYXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgc2h1ZmZsZU91dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBMYW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xhbmctcHJvdmlkZXIvbGFuZy1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIFRpY2tldEdyaWRNZXRhZGF0YSxcbiAgVGlja2V0R3JpZFNlbGVjdGlvbkV2ZW50LFxuICBUaWNrZXRHcmlkQ2xpY2tFdmVudCxcbiAgVGlja2V0U3RhdHVzLFxuICBUaWNrZXREYXRhLFxuICBUaWNrZXRHcmlkTGVnZW5kSXRlbSxcbiAgREVGQVVMVF9MRUdFTkRfTEFCRUxTLFxufSBmcm9tICcuL3R5cGVzJztcblxuYWRkSWNvbnMoeyBzaHVmZmxlT3V0bGluZSB9KTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXRpY2tldC1ncmlkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIElvbkJ1dHRvbiwgSW9uSWNvbiwgSW9uU2VhcmNoYmFyXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInRpY2tldC1ncmlkLWNvbnRhaW5lclwiXG4gICAgICBbY2xhc3NdPVwicHJvcHMuY3NzQ2xhc3NcIlxuICAgICAgW2NsYXNzLnNpemUtc21hbGxdPVwicHJvcHMudGlja2V0U2l6ZSA9PT0gJ3NtYWxsJ1wiXG4gICAgICBbY2xhc3Muc2l6ZS1tZWRpdW1dPVwicHJvcHMudGlja2V0U2l6ZSA9PT0gJ21lZGl1bScgfHwgIXByb3BzLnRpY2tldFNpemVcIlxuICAgICAgW2NsYXNzLnNpemUtbGFyZ2VdPVwicHJvcHMudGlja2V0U2l6ZSA9PT0gJ2xhcmdlJ1wiXG4gICAgICBbc3R5bGUuLS1ncmlkLWNvbHVtbnNdPVwicHJvcHMuY29sdW1ucyB8fCAxMFwiXG4gICAgICBbc3R5bGUuLS1ncmlkLWdhcF09XCIocHJvcHMuZ2FwIHx8IDQpICsgJ3B4J1wiXG4gICAgICBbc3R5bGUuLS1zZWxlY3RlZC1jb2xvcl09XCJnZXRDb2xvcigpXCJcbiAgICA+XG4gICAgICA8IS0tIFNlYXJjaCBhbmQgY29udHJvbHMgLS0+XG4gICAgICBAaWYgKHByb3BzLnNob3dTZWFyY2ggfHwgcHJvcHMuc2hvd1JhbmRvbVNlbGVjdCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZC1jb250cm9sc1wiPlxuICAgICAgICAgIEBpZiAocHJvcHMuc2hvd1NlYXJjaCkge1xuICAgICAgICAgICAgPGlvbi1zZWFyY2hiYXJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImdldFNlYXJjaFBsYWNlaG9sZGVyKClcIlxuICAgICAgICAgICAgICBbZGVib3VuY2VdPVwiMzAwXCJcbiAgICAgICAgICAgICAgKGlvbklucHV0KT1cIm9uU2VhcmNoKCRldmVudClcIlxuICAgICAgICAgICAgICBjbGFzcz1cInRpY2tldC1zZWFyY2hcIlxuICAgICAgICAgICAgPjwvaW9uLXNlYXJjaGJhcj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKHByb3BzLnNob3dSYW5kb21TZWxlY3QgJiYgcHJvcHMuc2VsZWN0aW9uTW9kZSAhPT0gJ25vbmUnKSB7XG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICBmaWxsPVwib3V0bGluZVwiXG4gICAgICAgICAgICAgIFtjb2xvcl09XCJwcm9wcy5jb2xvciB8fCAncHJpbWFyeSdcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UmFuZG9tKClcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYXZhaWxhYmxlQ291bnQgPCAocHJvcHMucmFuZG9tU2VsZWN0Q291bnQgfHwgMSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgbmFtZT1cInNodWZmbGUtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIHt7IGdldFJhbmRvbVNlbGVjdExhYmVsKCkgfX1cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8IS0tIExlZ2VuZCAodG9wKSAtLT5cbiAgICAgIEBpZiAocHJvcHMuc2hvd0xlZ2VuZCAmJiBwcm9wcy5sZWdlbmRQb3NpdGlvbiAhPT0gJ2JvdHRvbScpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1sZWdlbmRcIj5cbiAgICAgICAgICBAZm9yIChpdGVtIG9mIGdldExlZ2VuZEl0ZW1zKCk7IHRyYWNrIGl0ZW0uc3RhdHVzKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsZWdlbmQtY29sb3JcIiBbY2xhc3NdPVwiJ3N0YXR1cy0nICsgaXRlbS5zdGF0dXNcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGVnZW5kLWxhYmVsXCI+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgQGlmIChpdGVtLmNvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxlZ2VuZC1jb3VudFwiPih7eyBpdGVtLmNvdW50IH19KTwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgPCEtLSBTdW1tYXJ5IC0tPlxuICAgICAgQGlmIChwcm9wcy5zaG93U3VtbWFyeSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LXN1bW1hcnlcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1bW1hcnktaXRlbVwiPlxuICAgICAgICAgICAgPHN0cm9uZz57eyBzZWxlY3RlZFRpY2tldHMubGVuZ3RoIH19PC9zdHJvbmc+IHNlbGVjY2lvbmFkb3t7IHNlbGVjdGVkVGlja2V0cy5sZW5ndGggIT09IDEgPyAncycgOiAnJyB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICBAaWYgKHByb3BzLm1heFNlbGVjdGlvbikge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdW1tYXJ5LWl0ZW1cIj5cbiAgICAgICAgICAgICAgKG3DoXg6IHt7IHByb3BzLm1heFNlbGVjdGlvbiB9fSlcbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8IS0tIEdyaWQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWdyaWRcIiByb2xlPVwiZ3JpZFwiPlxuICAgICAgICBAZm9yICh0aWNrZXQgb2YgZGlzcGxheWVkVGlja2V0czsgdHJhY2sgdGlja2V0Lm51bWJlcikge1xuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0aWNrZXQtY2VsbFwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiJ3N0YXR1cy0nICsgdGlja2V0LnN0YXR1c1wiXG4gICAgICAgICAgICBbY2xhc3MuaGlnaGxpZ2h0ZWRdPVwiaXNIaWdobGlnaHRlZCh0aWNrZXQubnVtYmVyKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzU2VsZWN0YWJsZSh0aWNrZXQpXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0VGlja2V0QXJpYUxhYmVsKHRpY2tldClcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1wcmVzc2VkXT1cInRpY2tldC5zdGF0dXMgPT09ICdzZWxlY3RlZCdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uVGlja2V0Q2xpY2sodGlja2V0KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgZm9ybWF0TnVtYmVyKHRpY2tldC5udW1iZXIpIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIExlZ2VuZCAoYm90dG9tKSAtLT5cbiAgICAgIEBpZiAocHJvcHMuc2hvd0xlZ2VuZCAmJiBwcm9wcy5sZWdlbmRQb3NpdGlvbiA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1sZWdlbmQgYm90dG9tXCI+XG4gICAgICAgICAgQGZvciAoaXRlbSBvZiBnZXRMZWdlbmRJdGVtcygpOyB0cmFjayBpdGVtLnN0YXR1cykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC1pdGVtXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGVnZW5kLWNvbG9yXCIgW2NsYXNzXT1cIidzdGF0dXMtJyArIGl0ZW0uc3RhdHVzXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxlZ2VuZC1sYWJlbFwiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgIEBpZiAoaXRlbS5jb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsZWdlbmQtY291bnRcIj4oe3sgaXRlbS5jb3VudCB9fSk8L3NwYW4+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3RpY2tldC1ncmlkLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtdGlja2V0LWdyaWRcbiAqXG4gKiBBIGdyaWQgZm9yIHNlbGVjdGluZyB0aWNrZXQgbnVtYmVycywgY29tbW9ubHkgdXNlZCBpbiByYWZmbGVzIGFuZCBsb3R0ZXJpZXMuXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgdXNhZ2VcbiAqIGBgYGh0bWxcbiAqIDx2YWwtdGlja2V0LWdyaWRcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICB0b3RhbFRpY2tldHM6IDEwMCxcbiAqICAgICBzb2xkVGlja2V0czogWzEsIDUsIDEyLCAyM10sXG4gKiAgICAgc2VsZWN0aW9uTW9kZTogJ211bHRpcGxlJyxcbiAqICAgICBtYXhTZWxlY3Rpb246IDEwXG4gKiAgIH1cIlxuICogICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICogPjwvdmFsLXRpY2tldC1ncmlkPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgV2l0aCBsZWdlbmQgYW5kIHNlYXJjaFxuICogYGBgaHRtbFxuICogPHZhbC10aWNrZXQtZ3JpZFxuICogICBbcHJvcHNdPVwie1xuICogICAgIHRvdGFsVGlja2V0czogNTAwLFxuICogICAgIHNvbGRUaWNrZXRzOiBzb2xkTnVtYmVycyxcbiAqICAgICByZXNlcnZlZFRpY2tldHM6IHJlc2VydmVkTnVtYmVycyxcbiAqICAgICBjb2x1bW5zOiAyMCxcbiAqICAgICBzaG93TGVnZW5kOiB0cnVlLFxuICogICAgIHNob3dTZWFyY2g6IHRydWUsXG4gKiAgICAgc2hvd1JhbmRvbVNlbGVjdDogdHJ1ZSxcbiAqICAgICByYW5kb21TZWxlY3RDb3VudDogNSxcbiAqICAgICBtYXhTZWxlY3Rpb246IDEwXG4gKiAgIH1cIlxuICogPjwvdmFsLXRpY2tldC1ncmlkPlxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBUaWNrZXRHcmlkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBwcm9wczogVGlja2V0R3JpZE1ldGFkYXRhO1xuXG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRpY2tldEdyaWRTZWxlY3Rpb25FdmVudD4oKTtcbiAgQE91dHB1dCgpIHRpY2tldENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxUaWNrZXRHcmlkQ2xpY2tFdmVudD4oKTtcblxuICB0aWNrZXRzOiBUaWNrZXREYXRhW10gPSBbXTtcbiAgZGlzcGxheWVkVGlja2V0czogVGlja2V0RGF0YVtdID0gW107XG4gIHNlbGVjdGVkVGlja2V0czogbnVtYmVyW10gPSBbXTtcbiAgc2VhcmNoVGVybSA9ICcnO1xuICBoaWdobGlnaHRlZE51bWJlcnM6IG51bWJlcltdID0gW107XG5cbiAgcHJpdmF0ZSBsYW5nU2VydmljZSA9IGluamVjdChMYW5nU2VydmljZSk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5idWlsZFRpY2tldHMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1sncHJvcHMnXSkge1xuICAgICAgdGhpcy5idWlsZFRpY2tldHMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkVGlja2V0cygpOiB2b2lkIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMucHJvcHMuc3RhcnROdW1iZXIgPz8gMTtcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMucHJvcHMudG90YWxUaWNrZXRzO1xuICAgIGNvbnN0IHNvbGRTZXQgPSBuZXcgU2V0KHRoaXMucHJvcHMuc29sZFRpY2tldHMgfHwgW10pO1xuICAgIGNvbnN0IHJlc2VydmVkU2V0ID0gbmV3IFNldCh0aGlzLnByb3BzLnJlc2VydmVkVGlja2V0cyB8fCBbXSk7XG4gICAgY29uc3QgZGlzYWJsZWRTZXQgPSBuZXcgU2V0KHRoaXMucHJvcHMuZGlzYWJsZWRUaWNrZXRzIHx8IFtdKTtcbiAgICBjb25zdCBzZWxlY3RlZFNldCA9IG5ldyBTZXQodGhpcy5wcm9wcy5zZWxlY3RlZFRpY2tldHMgfHwgW10pO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBzZWxlY3RlZCB0aWNrZXRzIGZyb20gcHJvcHNcbiAgICB0aGlzLnNlbGVjdGVkVGlja2V0cyA9IFsuLi4odGhpcy5wcm9wcy5zZWxlY3RlZFRpY2tldHMgfHwgW10pXTtcblxuICAgIC8vIEJ1aWxkIHRpY2tldCBhcnJheVxuICAgIGlmICh0aGlzLnByb3BzLnRpY2tldERhdGE/Lmxlbmd0aCkge1xuICAgICAgLy8gVXNlIGN1c3RvbSB0aWNrZXQgZGF0YVxuICAgICAgdGhpcy50aWNrZXRzID0gWy4uLnRoaXMucHJvcHMudGlja2V0RGF0YV07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEdlbmVyYXRlIGZyb20gbnVtYmVyc1xuICAgICAgdGhpcy50aWNrZXRzID0gW107XG4gICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBzdGFydCArIHRvdGFsOyBpKyspIHtcbiAgICAgICAgbGV0IHN0YXR1czogVGlja2V0U3RhdHVzID0gJ2F2YWlsYWJsZSc7XG5cbiAgICAgICAgaWYgKGRpc2FibGVkU2V0LmhhcyhpKSkge1xuICAgICAgICAgIHN0YXR1cyA9ICdkaXNhYmxlZCc7XG4gICAgICAgIH0gZWxzZSBpZiAoc29sZFNldC5oYXMoaSkpIHtcbiAgICAgICAgICBzdGF0dXMgPSAnc29sZCc7XG4gICAgICAgIH0gZWxzZSBpZiAocmVzZXJ2ZWRTZXQuaGFzKGkpKSB7XG4gICAgICAgICAgc3RhdHVzID0gJ3Jlc2VydmVkJztcbiAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RlZFNldC5oYXMoaSkpIHtcbiAgICAgICAgICBzdGF0dXMgPSAnc2VsZWN0ZWQnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50aWNrZXRzLnB1c2goeyBudW1iZXI6IGksIHN0YXR1cyB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmFwcGx5U2VhcmNoKCk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U2VhcmNoKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZWFyY2hUZXJtKSB7XG4gICAgICB0aGlzLmRpc3BsYXllZFRpY2tldHMgPSBbLi4udGhpcy50aWNrZXRzXTtcbiAgICAgIHRoaXMuaGlnaGxpZ2h0ZWROdW1iZXJzID0gW107XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZpbHRlci9oaWdobGlnaHQgdGlja2V0cyBtYXRjaGluZyBzZWFyY2hcbiAgICAgIGNvbnN0IHRlcm0gPSB0aGlzLnNlYXJjaFRlcm0udHJpbSgpO1xuICAgICAgdGhpcy5oaWdobGlnaHRlZE51bWJlcnMgPSB0aGlzLnRpY2tldHNcbiAgICAgICAgLmZpbHRlcih0ID0+IHRoaXMuZm9ybWF0TnVtYmVyKHQubnVtYmVyKS5pbmNsdWRlcyh0ZXJtKSlcbiAgICAgICAgLm1hcCh0ID0+IHQubnVtYmVyKTtcbiAgICAgIHRoaXMuZGlzcGxheWVkVGlja2V0cyA9IFsuLi50aGlzLnRpY2tldHNdO1xuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoKGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGVybSA9IGV2ZW50LmRldGFpbC52YWx1ZSB8fCAnJztcbiAgICB0aGlzLmFwcGx5U2VhcmNoKCk7XG4gIH1cblxuICBpc0hpZ2hsaWdodGVkKG51bWJlcjogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0ZWROdW1iZXJzLmluY2x1ZGVzKG51bWJlcik7XG4gIH1cblxuICBpc1NlbGVjdGFibGUodGlja2V0OiBUaWNrZXREYXRhKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMucHJvcHMuc2VsZWN0aW9uTW9kZSA9PT0gJ25vbmUnKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBDaGVjayBpZiBzb2xkL3Jlc2VydmVkIGFuZCBhZG1pbiBvdmVycmlkZVxuICAgIGlmICh0aWNrZXQuc3RhdHVzID09PSAnc29sZCcgfHwgdGlja2V0LnN0YXR1cyA9PT0gJ3Jlc2VydmVkJykge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuYWxsb3dTZWxlY3RTb2xkID09PSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aWNrZXQuc3RhdHVzID09PSAnZGlzYWJsZWQnKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBDaGVjayBtYXggc2VsZWN0aW9uXG4gICAgaWYgKFxuICAgICAgdGlja2V0LnN0YXR1cyAhPT0gJ3NlbGVjdGVkJyAmJlxuICAgICAgdGhpcy5wcm9wcy5tYXhTZWxlY3Rpb24gJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWRUaWNrZXRzLmxlbmd0aCA+PSB0aGlzLnByb3BzLm1heFNlbGVjdGlvblxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgb25UaWNrZXRDbGljayh0aWNrZXQ6IFRpY2tldERhdGEpOiB2b2lkIHtcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gdGhpcy5zZWxlY3RlZFRpY2tldHMuaW5jbHVkZXModGlja2V0Lm51bWJlcik7XG5cbiAgICAvLyBFbWl0IGNsaWNrIGV2ZW50IHJlZ2FyZGxlc3NcbiAgICB0aGlzLnRpY2tldENsaWNrLmVtaXQoe1xuICAgICAgbnVtYmVyOiB0aWNrZXQubnVtYmVyLFxuICAgICAgc3RhdHVzOiB0aWNrZXQuc3RhdHVzLFxuICAgICAgc2VsZWN0ZWQ6IHRoaXMuaXNTZWxlY3RhYmxlKHRpY2tldCkgPyAhaXNTZWxlY3RlZCA6IG51bGwsXG4gICAgfSk7XG5cbiAgICBpZiAoIXRoaXMuaXNTZWxlY3RhYmxlKHRpY2tldCkgJiYgdGlja2V0LnN0YXR1cyAhPT0gJ3NlbGVjdGVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBzZWxlY3Rpb25cbiAgICBpZiAoaXNTZWxlY3RlZCkge1xuICAgICAgLy8gRGVzZWxlY3RcbiAgICAgIHRoaXMuc2VsZWN0ZWRUaWNrZXRzID0gdGhpcy5zZWxlY3RlZFRpY2tldHMuZmlsdGVyKG4gPT4gbiAhPT0gdGlja2V0Lm51bWJlcik7XG4gICAgICB0aWNrZXQuc3RhdHVzID0gJ2F2YWlsYWJsZSc7XG5cbiAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICBzZWxlY3RlZFRpY2tldHM6IFsuLi50aGlzLnNlbGVjdGVkVGlja2V0c10sXG4gICAgICAgIGNoYW5nZWRUaWNrZXQ6IHRpY2tldC5udW1iZXIsXG4gICAgICAgIGFjdGlvbjogJ2Rlc2VsZWN0JyxcbiAgICAgICAgY291bnQ6IHRoaXMuc2VsZWN0ZWRUaWNrZXRzLmxlbmd0aCxcbiAgICAgICAgbWF4UmVhY2hlZDogZmFsc2UsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU2VsZWN0XG4gICAgICBpZiAodGhpcy5wcm9wcy5zZWxlY3Rpb25Nb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgICAvLyBEZXNlbGVjdCBwcmV2aW91c1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGlja2V0cy5mb3JFYWNoKG51bSA9PiB7XG4gICAgICAgICAgY29uc3QgdCA9IHRoaXMudGlja2V0cy5maW5kKHggPT4geC5udW1iZXIgPT09IG51bSk7XG4gICAgICAgICAgaWYgKHQpIHQuc3RhdHVzID0gJ2F2YWlsYWJsZSc7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGlja2V0cyA9IFt0aWNrZXQubnVtYmVyXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaWNrZXRzLnB1c2godGlja2V0Lm51bWJlcik7XG4gICAgICB9XG5cbiAgICAgIHRpY2tldC5zdGF0dXMgPSAnc2VsZWN0ZWQnO1xuXG4gICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHtcbiAgICAgICAgc2VsZWN0ZWRUaWNrZXRzOiBbLi4udGhpcy5zZWxlY3RlZFRpY2tldHNdLFxuICAgICAgICBjaGFuZ2VkVGlja2V0OiB0aWNrZXQubnVtYmVyLFxuICAgICAgICBhY3Rpb246ICdzZWxlY3QnLFxuICAgICAgICBjb3VudDogdGhpcy5zZWxlY3RlZFRpY2tldHMubGVuZ3RoLFxuICAgICAgICBtYXhSZWFjaGVkOiB0aGlzLnByb3BzLm1heFNlbGVjdGlvblxuICAgICAgICAgID8gdGhpcy5zZWxlY3RlZFRpY2tldHMubGVuZ3RoID49IHRoaXMucHJvcHMubWF4U2VsZWN0aW9uXG4gICAgICAgICAgOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFJhbmRvbSgpOiB2b2lkIHtcbiAgICBjb25zdCBjb3VudCA9IHRoaXMucHJvcHMucmFuZG9tU2VsZWN0Q291bnQgfHwgMTtcbiAgICBjb25zdCBhdmFpbGFibGUgPSB0aGlzLnRpY2tldHMuZmlsdGVyKFxuICAgICAgdCA9PiB0LnN0YXR1cyA9PT0gJ2F2YWlsYWJsZScgJiYgIXRoaXMuc2VsZWN0ZWRUaWNrZXRzLmluY2x1ZGVzKHQubnVtYmVyKVxuICAgICk7XG5cbiAgICAvLyBEZXRlcm1pbmUgaG93IG1hbnkgd2UgY2FuIHNlbGVjdFxuICAgIGNvbnN0IG1heENhblNlbGVjdCA9IHRoaXMucHJvcHMubWF4U2VsZWN0aW9uXG4gICAgICA/IE1hdGgubWluKGNvdW50LCB0aGlzLnByb3BzLm1heFNlbGVjdGlvbiAtIHRoaXMuc2VsZWN0ZWRUaWNrZXRzLmxlbmd0aClcbiAgICAgIDogY291bnQ7XG5cbiAgICBpZiAoYXZhaWxhYmxlLmxlbmd0aCA9PT0gMCB8fCBtYXhDYW5TZWxlY3QgPD0gMCkgcmV0dXJuO1xuXG4gICAgLy8gUmFuZG9tIHNodWZmbGUgYW5kIHBpY2tcbiAgICBjb25zdCBzaHVmZmxlZCA9IFsuLi5hdmFpbGFibGVdLnNvcnQoKCkgPT4gTWF0aC5yYW5kb20oKSAtIDAuNSk7XG4gICAgY29uc3QgdG9TZWxlY3QgPSBzaHVmZmxlZC5zbGljZSgwLCBNYXRoLm1pbihtYXhDYW5TZWxlY3QsIGF2YWlsYWJsZS5sZW5ndGgpKTtcblxuICAgIHRvU2VsZWN0LmZvckVhY2godGlja2V0ID0+IHtcbiAgICAgIHRpY2tldC5zdGF0dXMgPSAnc2VsZWN0ZWQnO1xuICAgICAgdGhpcy5zZWxlY3RlZFRpY2tldHMucHVzaCh0aWNrZXQubnVtYmVyKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoe1xuICAgICAgc2VsZWN0ZWRUaWNrZXRzOiBbLi4udGhpcy5zZWxlY3RlZFRpY2tldHNdLFxuICAgICAgY2hhbmdlZFRpY2tldDogdG9TZWxlY3RbdG9TZWxlY3QubGVuZ3RoIC0gMV0ubnVtYmVyLFxuICAgICAgYWN0aW9uOiAnc2VsZWN0JyxcbiAgICAgIGNvdW50OiB0aGlzLnNlbGVjdGVkVGlja2V0cy5sZW5ndGgsXG4gICAgICBtYXhSZWFjaGVkOiB0aGlzLnByb3BzLm1heFNlbGVjdGlvblxuICAgICAgICA/IHRoaXMuc2VsZWN0ZWRUaWNrZXRzLmxlbmd0aCA+PSB0aGlzLnByb3BzLm1heFNlbGVjdGlvblxuICAgICAgICA6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIGFsbCBzZWxlY3Rpb25zLlxuICAgKi9cbiAgY2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFRpY2tldHMuZm9yRWFjaChudW0gPT4ge1xuICAgICAgY29uc3QgdGlja2V0ID0gdGhpcy50aWNrZXRzLmZpbmQodCA9PiB0Lm51bWJlciA9PT0gbnVtKTtcbiAgICAgIGlmICh0aWNrZXQpIHRpY2tldC5zdGF0dXMgPSAnYXZhaWxhYmxlJztcbiAgICB9KTtcbiAgICB0aGlzLnNlbGVjdGVkVGlja2V0cyA9IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBzZWxlY3RlZCB0aWNrZXQgbnVtYmVycy5cbiAgICovXG4gIGdldFNlbGVjdGVkVGlja2V0cygpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLnNlbGVjdGVkVGlja2V0c107XG4gIH1cblxuICBnZXQgYXZhaWxhYmxlQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy50aWNrZXRzLmZpbHRlcih0ID0+IHQuc3RhdHVzID09PSAnYXZhaWxhYmxlJykubGVuZ3RoO1xuICB9XG5cbiAgZ2V0IHNvbGRDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRpY2tldHMuZmlsdGVyKHQgPT4gdC5zdGF0dXMgPT09ICdzb2xkJykubGVuZ3RoO1xuICB9XG5cbiAgZ2V0TGVnZW5kSXRlbXMoKTogVGlja2V0R3JpZExlZ2VuZEl0ZW1bXSB7XG4gICAgaWYgKHRoaXMucHJvcHMubGVnZW5kSXRlbXMpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLmxlZ2VuZEl0ZW1zO1xuICAgIH1cblxuICAgIGNvbnN0IGl0ZW1zOiBUaWNrZXRHcmlkTGVnZW5kSXRlbVtdID0gW1xuICAgICAgeyBzdGF0dXM6ICdhdmFpbGFibGUnLCBsYWJlbDogREVGQVVMVF9MRUdFTkRfTEFCRUxTLmF2YWlsYWJsZSwgY291bnQ6IHRoaXMuYXZhaWxhYmxlQ291bnQgfSxcbiAgICAgIHsgc3RhdHVzOiAnc2VsZWN0ZWQnLCBsYWJlbDogREVGQVVMVF9MRUdFTkRfTEFCRUxTLnNlbGVjdGVkLCBjb3VudDogdGhpcy5zZWxlY3RlZFRpY2tldHMubGVuZ3RoIH0sXG4gICAgXTtcblxuICAgIGlmICh0aGlzLnByb3BzLnNvbGRUaWNrZXRzPy5sZW5ndGgpIHtcbiAgICAgIGl0ZW1zLnB1c2goeyBzdGF0dXM6ICdzb2xkJywgbGFiZWw6IERFRkFVTFRfTEVHRU5EX0xBQkVMUy5zb2xkLCBjb3VudDogdGhpcy5zb2xkQ291bnQgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvcHMucmVzZXJ2ZWRUaWNrZXRzPy5sZW5ndGgpIHtcbiAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICBzdGF0dXM6ICdyZXNlcnZlZCcsXG4gICAgICAgIGxhYmVsOiBERUZBVUxUX0xFR0VORF9MQUJFTFMucmVzZXJ2ZWQsXG4gICAgICAgIGNvdW50OiB0aGlzLnByb3BzLnJlc2VydmVkVGlja2V0cy5sZW5ndGgsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cblxuICBmb3JtYXROdW1iZXIobnVtOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnByb3BzLm51bWJlclBhZGRpbmcpIHtcbiAgICAgIHJldHVybiBTdHJpbmcobnVtKS5wYWRTdGFydCh0aGlzLnByb3BzLm51bWJlclBhZGRpbmcsICcwJyk7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcobnVtKTtcbiAgfVxuXG4gIGdldFRpY2tldEFyaWFMYWJlbCh0aWNrZXQ6IFRpY2tldERhdGEpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0YXR1c0xhYmVsID0gREVGQVVMVF9MRUdFTkRfTEFCRUxTW3RpY2tldC5zdGF0dXNdO1xuICAgIHJldHVybiBgQm9sZXRvICR7dGhpcy5mb3JtYXROdW1iZXIodGlja2V0Lm51bWJlcil9LCAke3N0YXR1c0xhYmVsfWA7XG4gIH1cblxuICBnZXRTZWFyY2hQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnByb3BzLnNlYXJjaFBsYWNlaG9sZGVyQ29udGVudEtleSAmJiB0aGlzLnByb3BzLmNvbnRlbnRDbGFzcykge1xuICAgICAgcmV0dXJuIHRoaXMubGFuZ1NlcnZpY2UuZ2V0VGV4dChcbiAgICAgICAgdGhpcy5wcm9wcy5jb250ZW50Q2xhc3MsXG4gICAgICAgIHRoaXMucHJvcHMuc2VhcmNoUGxhY2Vob2xkZXJDb250ZW50S2V5LFxuICAgICAgICB0aGlzLnByb3BzLnNlYXJjaFBsYWNlaG9sZGVyIHx8ICdCdXNjYXIgbsO6bWVyby4uLidcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnByb3BzLnNlYXJjaFBsYWNlaG9sZGVyIHx8ICdCdXNjYXIgbsO6bWVyby4uLic7XG4gIH1cblxuICBnZXRSYW5kb21TZWxlY3RMYWJlbCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnByb3BzLnJhbmRvbVNlbGVjdExhYmVsQ29udGVudEtleSAmJiB0aGlzLnByb3BzLmNvbnRlbnRDbGFzcykge1xuICAgICAgcmV0dXJuIHRoaXMubGFuZ1NlcnZpY2UuZ2V0VGV4dChcbiAgICAgICAgdGhpcy5wcm9wcy5jb250ZW50Q2xhc3MsXG4gICAgICAgIHRoaXMucHJvcHMucmFuZG9tU2VsZWN0TGFiZWxDb250ZW50S2V5LFxuICAgICAgICB0aGlzLnByb3BzLnJhbmRvbVNlbGVjdExhYmVsIHx8ICdBbGVhdG9yaW8nXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wcm9wcy5yYW5kb21TZWxlY3RMYWJlbCB8fCAnQWxlYXRvcmlvJztcbiAgfVxuXG4gIGdldENvbG9yKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucHJvcHMuY29sb3IpIHtcbiAgICAgIHJldHVybiBgdmFyKC0taW9uLWNvbG9yLSR7dGhpcy5wcm9wcy5jb2xvcn0pYDtcbiAgICB9XG4gICAgcmV0dXJuICd2YXIoLS1pb24tY29sb3ItcHJpbWFyeSknO1xuICB9XG59XG4iXX0=
|
|
489
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlja2V0LWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy90aWNrZXQtZ3JpZC90aWNrZXQtZ3JpZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQW9DLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBT0wscUJBQXFCLEdBQ3RCLE1BQU0sU0FBUyxDQUFDOztBQUVqQixRQUFRLENBQUMsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO0FBNEc3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtDRztBQUNILE1BQU0sT0FBTyxtQkFBbUI7SUE3SWhDO1FBZ0pZLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQTRCLENBQUM7UUFDL0QsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBd0IsQ0FBQztRQUVqRSxZQUFPLEdBQWlCLEVBQUUsQ0FBQztRQUMzQixxQkFBZ0IsR0FBaUIsRUFBRSxDQUFDO1FBQ3BDLG9CQUFlLEdBQWEsRUFBRSxDQUFDO1FBQy9CLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsdUJBQWtCLEdBQWEsRUFBRSxDQUFDO0tBbVFuQztJQWpRQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFlB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Q0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLFlBQzVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtR1Q7OEJBdUNRLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElvbkJ1dHRvbiwgSW9uSWNvbiwgSW9uU2VhcmNoYmFyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IHNodWZmbGVPdXRsaW5lIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHtcbiAgVGlja2V0R3JpZE1ldGFkYXRhLFxuICBUaWNrZXRHcmlkU2VsZWN0aW9uRXZlbnQsXG4gIFRpY2tldEdyaWRDbGlja0V2ZW50LFxuICBUaWNrZXRTdGF0dXMsXG4gIFRpY2tldERhdGEsXG4gIFRpY2tldEdyaWRMZWdlbmRJdGVtLFxuICBERUZBVUxUX0xFR0VORF9MQUJFTFMsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5hZGRJY29ucyh7IHNodWZmbGVPdXRsaW5lIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtdGlja2V0LWdyaWQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgSW9uQnV0dG9uLCBJb25JY29uLCBJb25TZWFyY2hiYXJdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwidGlja2V0LWdyaWQtY29udGFpbmVyXCJcbiAgICAgIFtjbGFzc109XCJwcm9wcy5jc3NDbGFzc1wiXG4gICAgICBbY2xhc3Muc2l6ZS1zbWFsbF09XCJwcm9wcy50aWNrZXRTaXplID09PSAnc21hbGwnXCJcbiAgICAgIFtjbGFzcy5zaXplLW1lZGl1bV09XCJwcm9wcy50aWNrZXRTaXplID09PSAnbWVkaXVtJyB8fCAhcHJvcHMudGlja2V0U2l6ZVwiXG4gICAgICBbY2xhc3Muc2l6ZS1sYXJnZV09XCJwcm9wcy50aWNrZXRTaXplID09PSAnbGFyZ2UnXCJcbiAgICAgIFtzdHlsZS4tLWdyaWQtY29sdW1uc109XCJwcm9wcy5jb2x1bW5zIHx8IDEwXCJcbiAgICAgIFtzdHlsZS4tLWdyaWQtZ2FwXT1cIihwcm9wcy5nYXAgfHwgNCkgKyAncHgnXCJcbiAgICAgIFtzdHlsZS4tLXNlbGVjdGVkLWNvbG9yXT1cImdldENvbG9yKClcIlxuICAgID5cbiAgICAgIDwhLS0gU2VhcmNoIGFuZCBjb250cm9scyAtLT5cbiAgICAgIEBpZiAocHJvcHMuc2hvd1NlYXJjaCB8fCBwcm9wcy5zaG93UmFuZG9tU2VsZWN0KSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLWNvbnRyb2xzXCI+XG4gICAgICAgICAgQGlmIChwcm9wcy5zaG93U2VhcmNoKSB7XG4gICAgICAgICAgICA8aW9uLXNlYXJjaGJhclxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZ2V0U2VhcmNoUGxhY2Vob2xkZXIoKVwiXG4gICAgICAgICAgICAgIFtkZWJvdW5jZV09XCIzMDBcIlxuICAgICAgICAgICAgICAoaW9uSW5wdXQpPVwib25TZWFyY2goJGV2ZW50KVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwidGlja2V0LXNlYXJjaFwiXG4gICAgICAgICAgICA+PC9pb24tc2VhcmNoYmFyPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAocHJvcHMuc2hvd1JhbmRvbVNlbGVjdCAmJiBwcm9wcy5zZWxlY3Rpb25Nb2RlICE9PSAnbm9uZScpIHtcbiAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgW2NvbG9yXT1cInByb3BzLmNvbG9yIHx8ICdwcmltYXJ5J1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RSYW5kb20oKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhdmFpbGFibGVDb3VudCA8IChwcm9wcy5yYW5kb21TZWxlY3RDb3VudCB8fCAxKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiBuYW1lPVwic2h1ZmZsZS1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAge3sgZ2V0UmFuZG9tU2VsZWN0TGFiZWwoKSB9fVxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gTGVnZW5kICh0b3ApIC0tPlxuICAgICAgQGlmIChwcm9wcy5zaG93TGVnZW5kICYmIHByb3BzLmxlZ2VuZFBvc2l0aW9uICE9PSAnYm90dG9tJykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWxlZ2VuZFwiPlxuICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZ2V0TGVnZW5kSXRlbXMoKTsgdHJhY2sgaXRlbS5zdGF0dXMpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtaXRlbVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxlZ2VuZC1jb2xvclwiIFtjbGFzc109XCInc3RhdHVzLScgKyBpdGVtLnN0YXR1c1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsZWdlbmQtbGFiZWxcIj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICBAaWYgKGl0ZW0uY291bnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGVnZW5kLWNvdW50XCI+KHt7IGl0ZW0uY291bnQgfX0pPC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8IS0tIFN1bW1hcnkgLS0+XG4gICAgICBAaWYgKHByb3BzLnNob3dTdW1tYXJ5KSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtc3VtbWFyeVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VtbWFyeS1pdGVtXCI+XG4gICAgICAgICAgICA8c3Ryb25nPnt7IHNlbGVjdGVkVGlja2V0cy5sZW5ndGggfX08L3N0cm9uZz4gc2VsZWNjaW9uYWRve3sgc2VsZWN0ZWRUaWNrZXRzLmxlbmd0aCAhPT0gMSA/ICdzJyA6ICcnIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIEBpZiAocHJvcHMubWF4U2VsZWN0aW9uKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1bW1hcnktaXRlbVwiPlxuICAgICAgICAgICAgICAobcOheDoge3sgcHJvcHMubWF4U2VsZWN0aW9uIH19KVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gR3JpZCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtZ3JpZFwiIHJvbGU9XCJncmlkXCI+XG4gICAgICAgIEBmb3IgKHRpY2tldCBvZiBkaXNwbGF5ZWRUaWNrZXRzOyB0cmFjayB0aWNrZXQubnVtYmVyKSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInRpY2tldC1jZWxsXCJcbiAgICAgICAgICAgIFtjbGFzc109XCInc3RhdHVzLScgKyB0aWNrZXQuc3RhdHVzXCJcbiAgICAgICAgICAgIFtjbGFzcy5oaWdobGlnaHRlZF09XCJpc0hpZ2hsaWdodGVkKHRpY2tldC5udW1iZXIpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNTZWxlY3RhYmxlKHRpY2tldClcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRUaWNrZXRBcmlhTGFiZWwodGlja2V0KVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLXByZXNzZWRdPVwidGlja2V0LnN0YXR1cyA9PT0gJ3NlbGVjdGVkJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib25UaWNrZXRDbGljayh0aWNrZXQpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBmb3JtYXROdW1iZXIodGlja2V0Lm51bWJlcikgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gTGVnZW5kIChib3R0b20pIC0tPlxuICAgICAgQGlmIChwcm9wcy5zaG93TGVnZW5kICYmIHByb3BzLmxlZ2VuZFBvc2l0aW9uID09PSAnYm90dG9tJykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWxlZ2VuZCBib3R0b21cIj5cbiAgICAgICAgICBAZm9yIChpdGVtIG9mIGdldExlZ2VuZEl0ZW1zKCk7IHRyYWNrIGl0ZW0uc3RhdHVzKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsZWdlbmQtY29sb3JcIiBbY2xhc3NdPVwiJ3N0YXR1cy0nICsgaXRlbS5zdGF0dXNcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGVnZW5kLWxhYmVsXCI+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgQGlmIChpdGVtLmNvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxlZ2VuZC1jb3VudFwiPih7eyBpdGVtLmNvdW50IH19KTwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vdGlja2V0LWdyaWQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC10aWNrZXQtZ3JpZFxuICpcbiAqIEEgZ3JpZCBmb3Igc2VsZWN0aW5nIHRpY2tldCBudW1iZXJzLCBjb21tb25seSB1c2VkIGluIHJhZmZsZXMgYW5kIGxvdHRlcmllcy5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgaHRtbFxuICogPHZhbC10aWNrZXQtZ3JpZFxuICogICBbcHJvcHNdPVwie1xuICogICAgIHRvdGFsVGlja2V0czogMTAwLFxuICogICAgIHNvbGRUaWNrZXRzOiBbMSwgNSwgMTIsIDIzXSxcbiAqICAgICBzZWxlY3Rpb25Nb2RlOiAnbXVsdGlwbGUnLFxuICogICAgIG1heFNlbGVjdGlvbjogMTBcbiAqICAgfVwiXG4gKiAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gKiA+PC92YWwtdGlja2V0LWdyaWQ+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBXaXRoIGxlZ2VuZCBhbmQgc2VhcmNoXG4gKiBgYGBodG1sXG4gKiA8dmFsLXRpY2tldC1ncmlkXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgdG90YWxUaWNrZXRzOiA1MDAsXG4gKiAgICAgc29sZFRpY2tldHM6IHNvbGROdW1iZXJzLFxuICogICAgIHJlc2VydmVkVGlja2V0czogcmVzZXJ2ZWROdW1iZXJzLFxuICogICAgIGNvbHVtbnM6IDIwLFxuICogICAgIHNob3dMZWdlbmQ6IHRydWUsXG4gKiAgICAgc2hvd1NlYXJjaDogdHJ1ZSxcbiAqICAgICBzaG93UmFuZG9tU2VsZWN0OiB0cnVlLFxuICogICAgIHJhbmRvbVNlbGVjdENvdW50OiA1LFxuICogICAgIG1heFNlbGVjdGlvbjogMTBcbiAqICAgfVwiXG4gKiA+PC92YWwtdGlja2V0LWdyaWQ+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFRpY2tldEdyaWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHByb3BzOiBUaWNrZXRHcmlkTWV0YWRhdGE7XG5cbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VGlja2V0R3JpZFNlbGVjdGlvbkV2ZW50PigpO1xuICBAT3V0cHV0KCkgdGlja2V0Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFRpY2tldEdyaWRDbGlja0V2ZW50PigpO1xuXG4gIHRpY2tldHM6IFRpY2tldERhdGFbXSA9IFtdO1xuICBkaXNwbGF5ZWRUaWNrZXRzOiBUaWNrZXREYXRhW10gPSBbXTtcbiAgc2VsZWN0ZWRUaWNrZXRzOiBudW1iZXJbXSA9IFtdO1xuICBzZWFyY2hUZXJtID0gJyc7XG4gIGhpZ2hsaWdodGVkTnVtYmVyczogbnVtYmVyW10gPSBbXTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmJ1aWxkVGlja2V0cygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydwcm9wcyddKSB7XG4gICAgICB0aGlzLmJ1aWxkVGlja2V0cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRUaWNrZXRzKCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5wcm9wcy5zdGFydE51bWJlciA/PyAxO1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy5wcm9wcy50b3RhbFRpY2tldHM7XG4gICAgY29uc3Qgc29sZFNldCA9IG5ldyBTZXQodGhpcy5wcm9wcy5zb2xkVGlja2V0cyB8fCBbXSk7XG4gICAgY29uc3QgcmVzZXJ2ZWRTZXQgPSBuZXcgU2V0KHRoaXMucHJvcHMucmVzZXJ2ZWRUaWNrZXRzIHx8IFtdKTtcbiAgICBjb25zdCBkaXNhYmxlZFNldCA9IG5ldyBTZXQodGhpcy5wcm9wcy5kaXNhYmxlZFRpY2tldHMgfHwgW10pO1xuICAgIGNvbnN0IHNlbGVjdGVkU2V0ID0gbmV3IFNldCh0aGlzLnByb3BzLnNlbGVjdGVkVGlja2V0cyB8fCBbXSk7XG5cbiAgICAvLyBJbml0aWFsaXplIHNlbGVjdGVkIHRpY2tldHMgZnJvbSBwcm9wc1xuICAgIHRoaXMuc2VsZWN0ZWRUaWNrZXRzID0gWy4uLih0aGlzLnByb3BzLnNlbGVjdGVkVGlja2V0cyB8fCBbXSldO1xuXG4gICAgLy8gQnVpbGQgdGlja2V0IGFycmF5XG4gICAgaWYgKHRoaXMucHJvcHMudGlja2V0RGF0YT8ubGVuZ3RoKSB7XG4gICAgICAvLyBVc2UgY3VzdG9tIHRpY2tldCBkYXRhXG4gICAgICB0aGlzLnRpY2tldHMgPSBbLi4udGhpcy5wcm9wcy50aWNrZXREYXRhXTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gR2VuZXJhdGUgZnJvbSBudW1iZXJzXG4gICAgICB0aGlzLnRpY2tldHMgPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8IHN0YXJ0ICsgdG90YWw7IGkrKykge1xuICAgICAgICBsZXQgc3RhdHVzOiBUaWNrZXRTdGF0dXMgPSAnYXZhaWxhYmxlJztcblxuICAgICAgICBpZiAoZGlzYWJsZWRTZXQuaGFzKGkpKSB7XG4gICAgICAgICAgc3RhdHVzID0gJ2Rpc2FibGVkJztcbiAgICAgICAgfSBlbHNlIGlmIChzb2xkU2V0LmhhcyhpKSkge1xuICAgICAgICAgIHN0YXR1cyA9ICdzb2xkJztcbiAgICAgICAgfSBlbHNlIGlmIChyZXNlcnZlZFNldC5oYXMoaSkpIHtcbiAgICAgICAgICBzdGF0dXMgPSAncmVzZXJ2ZWQnO1xuICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkU2V0LmhhcyhpKSkge1xuICAgICAgICAgIHN0YXR1cyA9ICdzZWxlY3RlZCc7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRpY2tldHMucHVzaCh7IG51bWJlcjogaSwgc3RhdHVzIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuYXBwbHlTZWFyY2goKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlTZWFyY2goKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlYXJjaFRlcm0pIHtcbiAgICAgIHRoaXMuZGlzcGxheWVkVGlja2V0cyA9IFsuLi50aGlzLnRpY2tldHNdO1xuICAgICAgdGhpcy5oaWdobGlnaHRlZE51bWJlcnMgPSBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRmlsdGVyL2hpZ2hsaWdodCB0aWNrZXRzIG1hdGNoaW5nIHNlYXJjaFxuICAgICAgY29uc3QgdGVybSA9IHRoaXMuc2VhcmNoVGVybS50cmltKCk7XG4gICAgICB0aGlzLmhpZ2hsaWdodGVkTnVtYmVycyA9IHRoaXMudGlja2V0c1xuICAgICAgICAuZmlsdGVyKHQgPT4gdGhpcy5mb3JtYXROdW1iZXIodC5udW1iZXIpLmluY2x1ZGVzKHRlcm0pKVxuICAgICAgICAubWFwKHQgPT4gdC5udW1iZXIpO1xuICAgICAgdGhpcy5kaXNwbGF5ZWRUaWNrZXRzID0gWy4uLnRoaXMudGlja2V0c107XG4gICAgfVxuICB9XG5cbiAgb25TZWFyY2goZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hUZXJtID0gZXZlbnQuZGV0YWlsLnZhbHVlIHx8ICcnO1xuICAgIHRoaXMuYXBwbHlTZWFyY2goKTtcbiAgfVxuXG4gIGlzSGlnaGxpZ2h0ZWQobnVtYmVyOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRlZE51bWJlcnMuaW5jbHVkZXMobnVtYmVyKTtcbiAgfVxuXG4gIGlzU2VsZWN0YWJsZSh0aWNrZXQ6IFRpY2tldERhdGEpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5wcm9wcy5zZWxlY3Rpb25Nb2RlID09PSAnbm9uZScpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIENoZWNrIGlmIHNvbGQvcmVzZXJ2ZWQgYW5kIGFkbWluIG92ZXJyaWRlXG4gICAgaWYgKHRpY2tldC5zdGF0dXMgPT09ICdzb2xkJyB8fCB0aWNrZXQuc3RhdHVzID09PSAncmVzZXJ2ZWQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5hbGxvd1NlbGVjdFNvbGQgPT09IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRpY2tldC5zdGF0dXMgPT09ICdkaXNhYmxlZCcpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIENoZWNrIG1heCBzZWxlY3Rpb25cbiAgICBpZiAoXG4gICAgICB0aWNrZXQuc3RhdHVzICE9PSAnc2VsZWN0ZWQnICYmXG4gICAgICB0aGlzLnByb3BzLm1heFNlbGVjdGlvbiAmJlxuICAgICAgdGhpcy5zZWxlY3RlZFRpY2tldHMubGVuZ3RoID49IHRoaXMucHJvcHMubWF4U2VsZWN0aW9uXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBvblRpY2tldENsaWNrKHRpY2tldDogVGlja2V0RGF0YSk6IHZvaWQge1xuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkVGlja2V0cy5pbmNsdWRlcyh0aWNrZXQubnVtYmVyKTtcblxuICAgIC8vIEVtaXQgY2xpY2sgZXZlbnQgcmVnYXJkbGVzc1xuICAgIHRoaXMudGlja2V0Q2xpY2suZW1pdCh7XG4gICAgICBudW1iZXI6IHRpY2tldC5udW1iZXIsXG4gICAgICBzdGF0dXM6IHRpY2tldC5zdGF0dXMsXG4gICAgICBzZWxlY3RlZDogdGhpcy5pc1NlbGVjdGFibGUodGlja2V0KSA/ICFpc1NlbGVjdGVkIDogbnVsbCxcbiAgICB9KTtcblxuICAgIGlmICghdGhpcy5pc1NlbGVjdGFibGUodGlja2V0KSAmJiB0aWNrZXQuc3RhdHVzICE9PSAnc2VsZWN0ZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHNlbGVjdGlvblxuICAgIGlmIChpc1NlbGVjdGVkKSB7XG4gICAgICAvLyBEZXNlbGVjdFxuICAgICAgdGhpcy5zZWxlY3RlZFRpY2tldHMgPSB0aGlzLnNlbGVjdGVkVGlja2V0cy5maWx0ZXIobiA9PiBuICE9PSB0aWNrZXQubnVtYmVyKTtcbiAgICAgIHRpY2tldC5zdGF0dXMgPSAnYXZhaWxhYmxlJztcblxuICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh7XG4gICAgICAgIHNlbGVjdGVkVGlja2V0czogWy4uLnRoaXMuc2VsZWN0ZWRUaWNrZXRzXSxcbiAgICAgICAgY2hhbmdlZFRpY2tldDogdGlja2V0Lm51bWJlcixcbiAgICAgICAgYWN0aW9uOiAnZGVzZWxlY3QnLFxuICAgICAgICBjb3VudDogdGhpcy5zZWxlY3RlZFRpY2tldHMubGVuZ3RoLFxuICAgICAgICBtYXhSZWFjaGVkOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTZWxlY3RcbiAgICAgIGlmICh0aGlzLnByb3BzLnNlbGVjdGlvbk1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgIC8vIERlc2VsZWN0IHByZXZpb3VzXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaWNrZXRzLmZvckVhY2gobnVtID0+IHtcbiAgICAgICAgICBjb25zdCB0ID0gdGhpcy50aWNrZXRzLmZpbmQoeCA9PiB4Lm51bWJlciA9PT0gbnVtKTtcbiAgICAgICAgICBpZiAodCkgdC5zdGF0dXMgPSAnYXZhaWxhYmxlJztcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaWNrZXRzID0gW3RpY2tldC5udW1iZXJdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRpY2tldHMucHVzaCh0aWNrZXQubnVtYmVyKTtcbiAgICAgIH1cblxuICAgICAgdGlja2V0LnN0YXR1cyA9ICdzZWxlY3RlZCc7XG5cbiAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICBzZWxlY3RlZFRpY2tldHM6IFsuLi50aGlzLnNlbGVjdGVkVGlja2V0c10sXG4gICAgICAgIGNoYW5nZWRUaWNrZXQ6IHRpY2tldC5udW1iZXIsXG4gICAgICAgIGFjdGlvbjogJ3NlbGVjdCcsXG4gICAgICAgIGNvdW50OiB0aGlzLnNlbGVjdGVkVGlja2V0cy5sZW5ndGgsXG4gICAgICAgIG1heFJlYWNoZWQ6IHRoaXMucHJvcHMubWF4U2VsZWN0aW9uXG4gICAgICAgICAgPyB0aGlzLnNlbGVjdGVkVGlja2V0cy5sZW5ndGggPj0gdGhpcy5wcm9wcy5tYXhTZWxlY3Rpb25cbiAgICAgICAgICA6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0UmFuZG9tKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvdW50ID0gdGhpcy5wcm9wcy5yYW5kb21TZWxlY3RDb3VudCB8fCAxO1xuICAgIGNvbnN0IGF2YWlsYWJsZSA9IHRoaXMudGlja2V0cy5maWx0ZXIoXG4gICAgICB0ID0+IHQuc3RhdHVzID09PSAnYXZhaWxhYmxlJyAmJiAhdGhpcy5zZWxlY3RlZFRpY2tldHMuaW5jbHVkZXModC5udW1iZXIpXG4gICAgKTtcblxuICAgIC8vIERldGVybWluZSBob3cgbWFueSB3ZSBjYW4gc2VsZWN0XG4gICAgY29uc3QgbWF4Q2FuU2VsZWN0ID0gdGhpcy5wcm9wcy5tYXhTZWxlY3Rpb25cbiAgICAgID8gTWF0aC5taW4oY291bnQsIHRoaXMucHJvcHMubWF4U2VsZWN0aW9uIC0gdGhpcy5zZWxlY3RlZFRpY2tldHMubGVuZ3RoKVxuICAgICAgOiBjb3VudDtcblxuICAgIGlmIChhdmFpbGFibGUubGVuZ3RoID09PSAwIHx8IG1heENhblNlbGVjdCA8PSAwKSByZXR1cm47XG5cbiAgICAvLyBSYW5kb20gc2h1ZmZsZSBhbmQgcGlja1xuICAgIGNvbnN0IHNodWZmbGVkID0gWy4uLmF2YWlsYWJsZV0uc29ydCgoKSA9PiBNYXRoLnJhbmRvbSgpIC0gMC41KTtcbiAgICBjb25zdCB0b1NlbGVjdCA9IHNodWZmbGVkLnNsaWNlKDAsIE1hdGgubWluKG1heENhblNlbGVjdCwgYXZhaWxhYmxlLmxlbmd0aCkpO1xuXG4gICAgdG9TZWxlY3QuZm9yRWFjaCh0aWNrZXQgPT4ge1xuICAgICAgdGlja2V0LnN0YXR1cyA9ICdzZWxlY3RlZCc7XG4gICAgICB0aGlzLnNlbGVjdGVkVGlja2V0cy5wdXNoKHRpY2tldC5udW1iZXIpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh7XG4gICAgICBzZWxlY3RlZFRpY2tldHM6IFsuLi50aGlzLnNlbGVjdGVkVGlja2V0c10sXG4gICAgICBjaGFuZ2VkVGlja2V0OiB0b1NlbGVjdFt0b1NlbGVjdC5sZW5ndGggLSAxXS5udW1iZXIsXG4gICAgICBhY3Rpb246ICdzZWxlY3QnLFxuICAgICAgY291bnQ6IHRoaXMuc2VsZWN0ZWRUaWNrZXRzLmxlbmd0aCxcbiAgICAgIG1heFJlYWNoZWQ6IHRoaXMucHJvcHMubWF4U2VsZWN0aW9uXG4gICAgICAgID8gdGhpcy5zZWxlY3RlZFRpY2tldHMubGVuZ3RoID49IHRoaXMucHJvcHMubWF4U2VsZWN0aW9uXG4gICAgICAgIDogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgYWxsIHNlbGVjdGlvbnMuXG4gICAqL1xuICBjbGVhclNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkVGlja2V0cy5mb3JFYWNoKG51bSA9PiB7XG4gICAgICBjb25zdCB0aWNrZXQgPSB0aGlzLnRpY2tldHMuZmluZCh0ID0+IHQubnVtYmVyID09PSBudW0pO1xuICAgICAgaWYgKHRpY2tldCkgdGlja2V0LnN0YXR1cyA9ICdhdmFpbGFibGUnO1xuICAgIH0pO1xuICAgIHRoaXMuc2VsZWN0ZWRUaWNrZXRzID0gW107XG4gIH1cblxuICAvKipcbiAgICogR2V0IHNlbGVjdGVkIHRpY2tldCBudW1iZXJzLlxuICAgKi9cbiAgZ2V0U2VsZWN0ZWRUaWNrZXRzKCk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuc2VsZWN0ZWRUaWNrZXRzXTtcbiAgfVxuXG4gIGdldCBhdmFpbGFibGVDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRpY2tldHMuZmlsdGVyKHQgPT4gdC5zdGF0dXMgPT09ICdhdmFpbGFibGUnKS5sZW5ndGg7XG4gIH1cblxuICBnZXQgc29sZENvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudGlja2V0cy5maWx0ZXIodCA9PiB0LnN0YXR1cyA9PT0gJ3NvbGQnKS5sZW5ndGg7XG4gIH1cblxuICBnZXRMZWdlbmRJdGVtcygpOiBUaWNrZXRHcmlkTGVnZW5kSXRlbVtdIHtcbiAgICBpZiAodGhpcy5wcm9wcy5sZWdlbmRJdGVtcykge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMubGVnZW5kSXRlbXM7XG4gICAgfVxuXG4gICAgY29uc3QgaXRlbXM6IFRpY2tldEdyaWRMZWdlbmRJdGVtW10gPSBbXG4gICAgICB7IHN0YXR1czogJ2F2YWlsYWJsZScsIGxhYmVsOiBERUZBVUxUX0xFR0VORF9MQUJFTFMuYXZhaWxhYmxlLCBjb3VudDogdGhpcy5hdmFpbGFibGVDb3VudCB9LFxuICAgICAgeyBzdGF0dXM6ICdzZWxlY3RlZCcsIGxhYmVsOiBERUZBVUxUX0xFR0VORF9MQUJFTFMuc2VsZWN0ZWQsIGNvdW50OiB0aGlzLnNlbGVjdGVkVGlja2V0cy5sZW5ndGggfSxcbiAgICBdO1xuXG4gICAgaWYgKHRoaXMucHJvcHMuc29sZFRpY2tldHM/Lmxlbmd0aCkge1xuICAgICAgaXRlbXMucHVzaCh7IHN0YXR1czogJ3NvbGQnLCBsYWJlbDogREVGQVVMVF9MRUdFTkRfTEFCRUxTLnNvbGQsIGNvdW50OiB0aGlzLnNvbGRDb3VudCB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcm9wcy5yZXNlcnZlZFRpY2tldHM/Lmxlbmd0aCkge1xuICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgIHN0YXR1czogJ3Jlc2VydmVkJyxcbiAgICAgICAgbGFiZWw6IERFRkFVTFRfTEVHRU5EX0xBQkVMUy5yZXNlcnZlZCxcbiAgICAgICAgY291bnQ6IHRoaXMucHJvcHMucmVzZXJ2ZWRUaWNrZXRzLmxlbmd0aCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIGZvcm1hdE51bWJlcihudW06IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucHJvcHMubnVtYmVyUGFkZGluZykge1xuICAgICAgcmV0dXJuIFN0cmluZyhudW0pLnBhZFN0YXJ0KHRoaXMucHJvcHMubnVtYmVyUGFkZGluZywgJzAnKTtcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyhudW0pO1xuICB9XG5cbiAgZ2V0VGlja2V0QXJpYUxhYmVsKHRpY2tldDogVGlja2V0RGF0YSk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RhdHVzTGFiZWwgPSBERUZBVUxUX0xFR0VORF9MQUJFTFNbdGlja2V0LnN0YXR1c107XG4gICAgcmV0dXJuIGBCb2xldG8gJHt0aGlzLmZvcm1hdE51bWJlcih0aWNrZXQubnVtYmVyKX0sICR7c3RhdHVzTGFiZWx9YDtcbiAgfVxuXG4gIGdldFNlYXJjaFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuc2VhcmNoUGxhY2Vob2xkZXIgfHwgJ0J1c2NhciBuw7ptZXJvLi4uJztcbiAgfVxuXG4gIGdldFJhbmRvbVNlbGVjdExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMucmFuZG9tU2VsZWN0TGFiZWwgfHwgJ0FsZWF0b3Jpbyc7XG4gIH1cblxuICBnZXRDb2xvcigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnByb3BzLmNvbG9yKSB7XG4gICAgICByZXR1cm4gYHZhcigtLWlvbi1jb2xvci0ke3RoaXMucHJvcHMuY29sb3J9KWA7XG4gICAgfVxuICAgIHJldHVybiAndmFyKC0taW9uLWNvbG9yLXByaW1hcnkpJztcbiAgfVxufVxuIl19
|
|
@@ -1,61 +1,31 @@
|
|
|
1
|
-
import { Component, Input
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
2
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
3
3
|
import { IonToggle } from '@ionic/angular/standalone';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
import { ComponentStates } from '../../types';
|
|
6
|
-
import { LangService } from '../../../services/lang-provider/lang-provider.service';
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
8
7
|
import * as i1 from "@angular/forms";
|
|
9
8
|
/**
|
|
10
9
|
* val-toggle-input
|
|
11
10
|
*
|
|
12
11
|
* A toggle/switch input for boolean values, integrated with Angular forms.
|
|
13
|
-
* Supports reactive content for labels.
|
|
14
12
|
*
|
|
15
13
|
* @example
|
|
16
14
|
* <val-toggle-input [props]="{
|
|
17
15
|
* control: myBooleanControl,
|
|
18
|
-
* label: '
|
|
16
|
+
* label: 'Activar notificaciones',
|
|
19
17
|
* color: 'primary',
|
|
20
18
|
* labelPosition: 'end'
|
|
21
19
|
* }"></val-toggle-input>
|
|
22
20
|
*
|
|
23
|
-
* @example With reactive content
|
|
24
|
-
* <val-toggle-input [props]="{
|
|
25
|
-
* control: myControl,
|
|
26
|
-
* contentKey: 'enableNotifications',
|
|
27
|
-
* contentClass: 'SettingsComponent',
|
|
28
|
-
* contentFallback: 'Enable notifications'
|
|
29
|
-
* }"></val-toggle-input>
|
|
30
|
-
*
|
|
31
21
|
* @input props: ToggleInputMetadata - Configuration for the toggle input
|
|
32
22
|
*/
|
|
33
23
|
export class ToggleInputComponent {
|
|
34
24
|
constructor() {
|
|
35
25
|
this.states = ComponentStates;
|
|
36
|
-
this.displayLabel = '';
|
|
37
|
-
this.langService = inject(LangService);
|
|
38
|
-
}
|
|
39
|
-
ngOnInit() {
|
|
40
|
-
this.setupLabel();
|
|
41
|
-
}
|
|
42
|
-
ngOnDestroy() {
|
|
43
|
-
this.subscription?.unsubscribe();
|
|
44
26
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
this.displayLabel = this.props.label;
|
|
48
|
-
}
|
|
49
|
-
else if (this.props.contentKey && this.props.contentClass) {
|
|
50
|
-
this.subscription = this.langService
|
|
51
|
-
.getContent(this.props.contentClass, this.props.contentKey, this.props.contentFallback)
|
|
52
|
-
.subscribe((content) => {
|
|
53
|
-
this.displayLabel = content;
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
else if (this.props.contentFallback) {
|
|
57
|
-
this.displayLabel = this.props.contentFallback;
|
|
58
|
-
}
|
|
27
|
+
getDisplayLabel() {
|
|
28
|
+
return this.props.label || this.props.contentFallback || '';
|
|
59
29
|
}
|
|
60
30
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ToggleInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
61
31
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ToggleInputComponent, isStandalone: true, selector: "val-toggle-input", inputs: { props: "props" }, ngImport: i0, template: `
|
|
@@ -66,7 +36,7 @@ export class ToggleInputComponent {
|
|
|
66
36
|
[labelPlacement]="props.labelPosition || 'end'"
|
|
67
37
|
[justify]="props.justify || 'start'"
|
|
68
38
|
>
|
|
69
|
-
{{
|
|
39
|
+
{{ getDisplayLabel() }}
|
|
70
40
|
</ion-toggle>
|
|
71
41
|
`, isInline: true, styles: [":host{display:block}ion-toggle{--handle-spacing: 3px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonToggle, selector: "ion-toggle", inputs: ["checked", "color", "disabled", "enableOnOffLabels", "errorText", "helperText", "justify", "labelPlacement", "mode", "name", "value"] }] }); }
|
|
72
42
|
}
|
|
@@ -80,10 +50,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
80
50
|
[labelPlacement]="props.labelPosition || 'end'"
|
|
81
51
|
[justify]="props.justify || 'start'"
|
|
82
52
|
>
|
|
83
|
-
{{
|
|
53
|
+
{{ getDisplayLabel() }}
|
|
84
54
|
</ion-toggle>
|
|
85
55
|
`, styles: [":host{display:block}ion-toggle{--handle-spacing: 3px}\n"] }]
|
|
86
56
|
}], propDecorators: { props: [{
|
|
87
57
|
type: Input
|
|
88
58
|
}] } });
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvdG9nZ2xlLWlucHV0L3RvZ2dsZS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUFtQjlDOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxPQUFPLG9CQUFvQjtJQWhDakM7UUF1Q0UsV0FBTSxHQUFHLGVBQWUsQ0FBQztLQUsxQjtJQUhDLGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQztJQUM5RCxDQUFDOytHQVhVLG9CQUFvQjttR0FBcEIsb0JBQW9CLHdHQTVCckI7Ozs7Ozs7Ozs7R0FVVCxnSUFYUyxZQUFZLDhCQUFFLG1CQUFtQiwwVEFBRSxTQUFTOzs0RkE2QjNDLG9CQUFvQjtrQkFoQ2hDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxTQUFTLENBQUMsWUFDN0M7Ozs7Ozs7Ozs7R0FVVDs4QkF1QlEsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElvblRvZ2dsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRvZ2dsZUlucHV0TWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IENvbXBvbmVudFN0YXRlcyB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXRvZ2dsZS1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIElvblRvZ2dsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi10b2dnbGVcbiAgICAgIFtmb3JtQ29udHJvbF09XCJwcm9wcy5jb250cm9sXCJcbiAgICAgIFtjb2xvcl09XCJwcm9wcy5jb2xvciB8fCAncHJpbWFyeSdcIlxuICAgICAgW2Rpc2FibGVkXT1cInByb3BzLnN0YXRlID09PSBzdGF0ZXMuRElTQUJMRUQgfHwgcHJvcHMuZGlzYWJsZWRcIlxuICAgICAgW2xhYmVsUGxhY2VtZW50XT1cInByb3BzLmxhYmVsUG9zaXRpb24gfHwgJ2VuZCdcIlxuICAgICAgW2p1c3RpZnldPVwicHJvcHMuanVzdGlmeSB8fCAnc3RhcnQnXCJcbiAgICA+XG4gICAgICB7eyBnZXREaXNwbGF5TGFiZWwoKSB9fVxuICAgIDwvaW9uLXRvZ2dsZT5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vdG9nZ2xlLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtdG9nZ2xlLWlucHV0XG4gKlxuICogQSB0b2dnbGUvc3dpdGNoIGlucHV0IGZvciBib29sZWFuIHZhbHVlcywgaW50ZWdyYXRlZCB3aXRoIEFuZ3VsYXIgZm9ybXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtdG9nZ2xlLWlucHV0IFtwcm9wc109XCJ7XG4gKiAgIGNvbnRyb2w6IG15Qm9vbGVhbkNvbnRyb2wsXG4gKiAgIGxhYmVsOiAnQWN0aXZhciBub3RpZmljYWNpb25lcycsXG4gKiAgIGNvbG9yOiAncHJpbWFyeScsXG4gKiAgIGxhYmVsUG9zaXRpb246ICdlbmQnXG4gKiB9XCI+PC92YWwtdG9nZ2xlLWlucHV0PlxuICpcbiAqIEBpbnB1dCBwcm9wczogVG9nZ2xlSW5wdXRNZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSB0b2dnbGUgaW5wdXRcbiAqL1xuZXhwb3J0IGNsYXNzIFRvZ2dsZUlucHV0Q29tcG9uZW50IHtcbiAgLyoqXG4gICAqIElucHV0IGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgKiBAdHlwZSB7VG9nZ2xlSW5wdXRNZXRhZGF0YX1cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBUb2dnbGVJbnB1dE1ldGFkYXRhO1xuXG4gIHN0YXRlcyA9IENvbXBvbmVudFN0YXRlcztcblxuICBnZXREaXNwbGF5TGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5sYWJlbCB8fCB0aGlzLnByb3BzLmNvbnRlbnRGYWxsYmFjayB8fCAnJztcbiAgfVxufVxuIl19
|
|
@@ -3,7 +3,6 @@ import { Component, Input, Output, EventEmitter, inject, ElementRef, } from '@an
|
|
|
3
3
|
import { IonIcon } from '@ionic/angular/standalone';
|
|
4
4
|
import { addIcons } from 'ionicons';
|
|
5
5
|
import { trophyOutline, ticketOutline, giftOutline, locationOutline } from 'ionicons/icons';
|
|
6
|
-
import { LangService } from '../../../services/lang-provider/lang-provider.service';
|
|
7
6
|
import { AvatarComponent } from '../../atoms/avatar/avatar.component';
|
|
8
7
|
import { DEFAULT_WINNER_LABELS, } from './types';
|
|
9
8
|
import * as i0 from "@angular/core";
|
|
@@ -55,7 +54,6 @@ export class WinnerDisplayComponent {
|
|
|
55
54
|
this.confettiPieces = Array.from({ length: 50 }, (_, i) => i);
|
|
56
55
|
this.revealTimeout = null;
|
|
57
56
|
this.animationTimeout = null;
|
|
58
|
-
this.langService = inject(LangService);
|
|
59
57
|
this.elementRef = inject(ElementRef);
|
|
60
58
|
}
|
|
61
59
|
ngOnInit() {
|
|
@@ -125,21 +123,12 @@ export class WinnerDisplayComponent {
|
|
|
125
123
|
return `${(index * 37) % 360}deg`;
|
|
126
124
|
}
|
|
127
125
|
getWinnerLabel() {
|
|
128
|
-
if (this.props.winnerLabelContentKey && this.props.contentClass) {
|
|
129
|
-
return this.langService.getText(this.props.contentClass, this.props.winnerLabelContentKey, this.props.winnerLabel || DEFAULT_WINNER_LABELS.winner);
|
|
130
|
-
}
|
|
131
126
|
return this.props.winnerLabel || DEFAULT_WINNER_LABELS.winner;
|
|
132
127
|
}
|
|
133
128
|
getTicketLabel() {
|
|
134
|
-
if (this.props.ticketLabelContentKey && this.props.contentClass) {
|
|
135
|
-
return this.langService.getText(this.props.contentClass, this.props.ticketLabelContentKey, this.props.ticketLabel || DEFAULT_WINNER_LABELS.ticket);
|
|
136
|
-
}
|
|
137
129
|
return this.props.ticketLabel || DEFAULT_WINNER_LABELS.ticket;
|
|
138
130
|
}
|
|
139
131
|
getPrizeLabel() {
|
|
140
|
-
if (this.props.prizeLabelContentKey && this.props.contentClass) {
|
|
141
|
-
return this.langService.getText(this.props.contentClass, this.props.prizeLabelContentKey, this.props.prizeLabel || DEFAULT_WINNER_LABELS.prize);
|
|
142
|
-
}
|
|
143
132
|
return this.props.prizeLabel || DEFAULT_WINNER_LABELS.prize;
|
|
144
133
|
}
|
|
145
134
|
getColor() {
|
|
@@ -367,4 +356,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
367
356
|
}], animationComplete: [{
|
|
368
357
|
type: Output
|
|
369
358
|
}] } });
|
|
370
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lubmVyLWRpc3BsYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy93aW5uZXItZGlzcGxheS93aW5uZXItZGlzcGxheS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBR1osTUFBTSxFQUNOLFVBQVUsR0FFWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBR0wscUJBQXFCLEdBQ3RCLE1BQU0sU0FBUyxDQUFDOztBQUVqQixRQUFRLENBQUMsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0FBaUh6RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFDRztBQUNILE1BQU0sT0FBTyxzQkFBc0I7SUFySm5DO1FBd0pZLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUErQixDQUFDO1FBRTlFLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsbUJBQWMsR0FB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3R1Q7OEJBMENRLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxpQkFBaUI7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBpbmplY3QsXG4gIEVsZW1lbnRSZWYsXG4gIEFmdGVyVmlld0luaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uSWNvbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyB0cm9waHlPdXRsaW5lLCB0aWNrZXRPdXRsaW5lLCBnaWZ0T3V0bGluZSwgbG9jYXRpb25PdXRsaW5lIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHsgTGFuZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sYW5nLXByb3ZpZGVyL2xhbmctcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBdmF0YXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBXaW5uZXJEaXNwbGF5TWV0YWRhdGEsXG4gIFdpbm5lckRpc3BsYXlBbmltYXRpb25FdmVudCxcbiAgREVGQVVMVF9XSU5ORVJfTEFCRUxTLFxufSBmcm9tICcuL3R5cGVzJztcblxuYWRkSWNvbnMoeyB0cm9waHlPdXRsaW5lLCB0aWNrZXRPdXRsaW5lLCBnaWZ0T3V0bGluZSwgbG9jYXRpb25PdXRsaW5lIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtd2lubmVyLWRpc3BsYXknLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25JY29uLCBBdmF0YXJDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwid2lubmVyLWRpc3BsYXktY29udGFpbmVyXCJcbiAgICAgIFtjbGFzc109XCJwcm9wcy5jc3NDbGFzc1wiXG4gICAgICBbY2xhc3MubW9kZS1jb21wYWN0XT1cInByb3BzLm1vZGUgPT09ICdjb21wYWN0J1wiXG4gICAgICBbY2xhc3MubW9kZS1zdGFuZGFyZF09XCJwcm9wcy5tb2RlID09PSAnc3RhbmRhcmQnIHx8ICFwcm9wcy5tb2RlXCJcbiAgICAgIFtjbGFzcy5tb2RlLWZ1bGxdPVwicHJvcHMubW9kZSA9PT0gJ2Z1bGwnXCJcbiAgICAgIFtjbGFzcy5tb2RlLWNlbGVicmF0aW9uXT1cInByb3BzLm1vZGUgPT09ICdjZWxlYnJhdGlvbidcIlxuICAgICAgW2NsYXNzLnNpemUtc21hbGxdPVwicHJvcHMuc2l6ZSA9PT0gJ3NtYWxsJ1wiXG4gICAgICBbY2xhc3Muc2l6ZS1tZWRpdW1dPVwicHJvcHMuc2l6ZSA9PT0gJ21lZGl1bScgfHwgIXByb3BzLnNpemVcIlxuICAgICAgW2NsYXNzLnNpemUtbGFyZ2VdPVwicHJvcHMuc2l6ZSA9PT0gJ2xhcmdlJ1wiXG4gICAgICBbY2xhc3MuYmctc29saWRdPVwicHJvcHMuYmFja2dyb3VuZCA9PT0gJ3NvbGlkJyB8fCAhcHJvcHMuYmFja2dyb3VuZFwiXG4gICAgICBbY2xhc3MuYmctZ3JhZGllbnRdPVwicHJvcHMuYmFja2dyb3VuZCA9PT0gJ2dyYWRpZW50J1wiXG4gICAgICBbY2xhc3MuYmctdHJhbnNwYXJlbnRdPVwicHJvcHMuYmFja2dyb3VuZCA9PT0gJ3RyYW5zcGFyZW50J1wiXG4gICAgICBbY2xhc3MuYW5pbWF0aW5nXT1cImlzQW5pbWF0aW5nXCJcbiAgICAgIFtjbGFzcy5yZXZlYWxlZF09XCJpc1JldmVhbGVkXCJcbiAgICAgIFtjbGFzcy5hbmltYXRpb24tZmFkZV09XCJwcm9wcy5hbmltYXRpb24gPT09ICdmYWRlJ1wiXG4gICAgICBbY2xhc3MuYW5pbWF0aW9uLXpvb21dPVwicHJvcHMuYW5pbWF0aW9uID09PSAnem9vbSdcIlxuICAgICAgW2NsYXNzLmFuaW1hdGlvbi1zbGlkZV09XCJwcm9wcy5hbmltYXRpb24gPT09ICdzbGlkZSdcIlxuICAgICAgW2NsYXNzLmFuaW1hdGlvbi1zcG90bGlnaHRdPVwicHJvcHMuYW5pbWF0aW9uID09PSAnc3BvdGxpZ2h0J1wiXG4gICAgICBbc3R5bGUuLS13aW5uZXItY29sb3JdPVwiZ2V0Q29sb3IoKVwiXG4gICAgICBbc3R5bGUuLS1hbmltYXRpb24tZHVyYXRpb25dPVwiKHByb3BzLmFuaW1hdGlvbkR1cmF0aW9uIHx8IDgwMCkgKyAnbXMnXCJcbiAgICA+XG4gICAgICA8IS0tIENvbmZldHRpIG92ZXJsYXkgLS0+XG4gICAgICBAaWYgKHByb3BzLnNob3dDb25mZXR0aSAmJiAocHJvcHMubW9kZSA9PT0gJ2NlbGVicmF0aW9uJyB8fCBwcm9wcy5tb2RlID09PSAnZnVsbCcpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb25mZXR0aS1jb250YWluZXJcIiBbY2xhc3MuYWN0aXZlXT1cInNob3dDb25mZXR0aVwiPlxuICAgICAgICAgIEBmb3IgKGkgb2YgY29uZmV0dGlQaWVjZXM7IHRyYWNrIGkpIHtcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb25mZXR0aS1waWVjZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLWRlbGF5XT1cImkgKiAwLjEgKyAncydcIlxuICAgICAgICAgICAgICBbc3R5bGUuLS14XT1cImdldFJhbmRvbVgoaSlcIlxuICAgICAgICAgICAgICBbc3R5bGUuLS1yb3RhdGlvbl09XCJnZXRSYW5kb21Sb3RhdGlvbihpKVwiXG4gICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgPCEtLSBUcm9waHkgaWNvbiAtLT5cbiAgICAgIEBpZiAocHJvcHMuc2hvd1Ryb3BoeSAhPT0gZmFsc2UpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInRyb3BoeS1jb250YWluZXJcIj5cbiAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInRyb3BoeS1vdXRsaW5lXCIgY2xhc3M9XCJ0cm9waHktaWNvblwiPjwvaW9uLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8IS0tIFdpbm5lciBsYWJlbCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3aW5uZXItbGFiZWxcIj57eyBnZXRXaW5uZXJMYWJlbCgpIH19PC9kaXY+XG5cbiAgICAgIDwhLS0gV2lubmVyIGluZm8gLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwid2lubmVyLWluZm9cIj5cbiAgICAgICAgPCEtLSBBdmF0YXIgLS0+XG4gICAgICAgIEBpZiAocHJvcHMud2lubmVyLmF2YXRhciAmJiAocHJvcHMubW9kZSA9PT0gJ2Z1bGwnIHx8IHByb3BzLm1vZGUgPT09ICdjZWxlYnJhdGlvbicpKSB7XG4gICAgICAgICAgPHZhbC1hdmF0YXIgW3Byb3BzXT1cInByb3BzLndpbm5lci5hdmF0YXJcIiBjbGFzcz1cIndpbm5lci1hdmF0YXJcIj48L3ZhbC1hdmF0YXI+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIE5hbWUgLS0+XG4gICAgICAgIDxoMiBjbGFzcz1cIndpbm5lci1uYW1lXCI+e3sgcHJvcHMud2lubmVyLm5hbWUgfX08L2gyPlxuXG4gICAgICAgIDwhLS0gTG9jYXRpb24gLS0+XG4gICAgICAgIEBpZiAocHJvcHMuc2hvd0xvY2F0aW9uICE9PSBmYWxzZSAmJiBwcm9wcy53aW5uZXIubG9jYXRpb24pIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2lubmVyLWxvY2F0aW9uXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImxvY2F0aW9uLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPHNwYW4+e3sgcHJvcHMud2lubmVyLmxvY2F0aW9uIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBUaWNrZXQgbnVtYmVyIC0tPlxuICAgICAgICBAaWYgKHByb3BzLnNob3dUaWNrZXROdW1iZXIgIT09IGZhbHNlKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1pbmZvXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInRpY2tldC1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGlja2V0LWxhYmVsXCI+e3sgZ2V0VGlja2V0TGFiZWwoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGlja2V0LW51bWJlclwiPnt7IGZvcm1hdFRpY2tldE51bWJlcigpIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBQcml6ZSBpbmZvIC0tPlxuICAgICAgQGlmIChwcm9wcy5zaG93UHJpemUgIT09IGZhbHNlICYmIHByb3BzLndpbm5lci5wcml6ZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicHJpemUtaW5mb1wiPlxuICAgICAgICAgIEBpZiAocHJvcHMud2lubmVyLnByaXplSW1hZ2UgJiYgKHByb3BzLm1vZGUgPT09ICdmdWxsJyB8fCBwcm9wcy5tb2RlID09PSAnY2VsZWJyYXRpb24nKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaXplLWltYWdlXCI+XG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJwcm9wcy53aW5uZXIucHJpemVJbWFnZVwiIFthbHRdPVwicHJvcHMud2lubmVyLnByaXplXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcml6ZS1kZXRhaWxzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpemUtaGVhZGVyXCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiZ2lmdC1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcml6ZS1sYWJlbFwiPnt7IGdldFByaXplTGFiZWwoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGgzIGNsYXNzPVwicHJpemUtbmFtZVwiPnt7IHByb3BzLndpbm5lci5wcml6ZSB9fTwvaDM+XG5cbiAgICAgICAgICAgIEBpZiAocHJvcHMud2lubmVyLnByaXplRGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJwcml6ZS1kZXNjcmlwdGlvblwiPnt7IHByb3BzLndpbm5lci5wcml6ZURlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKHByb3BzLnNob3dQcml6ZVZhbHVlICE9PSBmYWxzZSAmJiBwcm9wcy53aW5uZXIucHJpemVWYWx1ZSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpemUtdmFsdWVcIj5cbiAgICAgICAgICAgICAgICB7eyBmb3JtYXRQcml6ZVZhbHVlKCkgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi93aW5uZXItZGlzcGxheS5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLXdpbm5lci1kaXNwbGF5XG4gKlxuICogQSBjb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgcmFmZmxlIHdpbm5lcnMgd2l0aCBjZWxlYnJhdGlvbiBhbmltYXRpb25zLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlXG4gKiBgYGBodG1sXG4gKiA8dmFsLXdpbm5lci1kaXNwbGF5XG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgd2lubmVyOiB7XG4gKiAgICAgICBuYW1lOiAnSnVhbiBQw6lyZXonLFxuICogICAgICAgdGlja2V0TnVtYmVyOiA0MlxuICogICAgIH1cbiAqICAgfVwiXG4gKiA+PC92YWwtd2lubmVyLWRpc3BsYXk+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBGdWxsIGNlbGVicmF0aW9uIG1vZGVcbiAqIGBgYGh0bWxcbiAqIDx2YWwtd2lubmVyLWRpc3BsYXlcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICB3aW5uZXI6IHtcbiAqICAgICAgIG5hbWU6ICdNYXLDrWEgR2FyY8OtYScsXG4gKiAgICAgICB0aWNrZXROdW1iZXI6IDE1NixcbiAqICAgICAgIHByaXplOiAnaVBob25lIDE1IFBybycsXG4gKiAgICAgICBwcml6ZVZhbHVlOiAyNTAwMCxcbiAqICAgICAgIGxvY2F0aW9uOiAnQ0RNWCwgTcOpeGljbycsXG4gKiAgICAgICBhdmF0YXI6IHsgaW1hZ2U6ICdhdmF0YXIuanBnJyB9XG4gKiAgICAgfSxcbiAqICAgICBtb2RlOiAnY2VsZWJyYXRpb24nLFxuICogICAgIHNob3dDb25mZXR0aTogdHJ1ZSxcbiAqICAgICBhbmltYXRpb246ICd6b29tJyxcbiAqICAgICBjb2xvcjogJ3dhcm5pbmcnXG4gKiAgIH1cIlxuICogICAoYW5pbWF0aW9uQ29tcGxldGUpPVwib25SZXZlYWwoJGV2ZW50KVwiXG4gKiA+PC92YWwtd2lubmVyLWRpc3BsYXk+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFdpbm5lckRpc3BsYXlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHByb3BzOiBXaW5uZXJEaXNwbGF5TWV0YWRhdGE7XG5cbiAgQE91dHB1dCgpIGFuaW1hdGlvbkNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxXaW5uZXJEaXNwbGF5QW5pbWF0aW9uRXZlbnQ+KCk7XG5cbiAgaXNBbmltYXRpbmcgPSBmYWxzZTtcbiAgaXNSZXZlYWxlZCA9IGZhbHNlO1xuICBzaG93Q29uZmV0dGkgPSBmYWxzZTtcbiAgY29uZmV0dGlQaWVjZXMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiA1MCB9LCAoXywgaSkgPT4gaSk7XG5cbiAgcHJpdmF0ZSByZXZlYWxUaW1lb3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGFuaW1hdGlvblRpbWVvdXQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgbGFuZ1NlcnZpY2UgPSBpbmplY3QoTGFuZ1NlcnZpY2UpO1xuICBwcml2YXRlIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvcHMuYXV0b1BsYXkgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnN0YXJ0UmV2ZWFsKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vIEFkZGl0aW9uYWwgc2V0dXAgaWYgbmVlZGVkXG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZXZlYWxUaW1lb3V0KSBjbGVhclRpbWVvdXQodGhpcy5yZXZlYWxUaW1lb3V0KTtcbiAgICBpZiAodGhpcy5hbmltYXRpb25UaW1lb3V0KSBjbGVhclRpbWVvdXQodGhpcy5hbmltYXRpb25UaW1lb3V0KTtcbiAgfVxuXG4gIHN0YXJ0UmV2ZWFsKCk6IHZvaWQge1xuICAgIGNvbnN0IGRlbGF5ID0gdGhpcy5wcm9wcy5yZXZlYWxEZWxheSB8fCAwO1xuXG4gICAgdGhpcy5yZXZlYWxUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmlzQW5pbWF0aW5nID0gdHJ1ZTtcblxuICAgICAgY29uc3QgYW5pbWF0aW9uRHVyYXRpb24gPSB0aGlzLnByb3BzLmFuaW1hdGlvbkR1cmF0aW9uIHx8IDgwMDtcblxuICAgICAgdGhpcy5hbmltYXRpb25UaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNBbmltYXRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc1JldmVhbGVkID0gdHJ1ZTtcblxuICAgICAgICBpZiAodGhpcy5wcm9wcy5zaG93Q29uZmV0dGkpIHtcbiAgICAgICAgICB0aGlzLnNob3dDb25mZXR0aSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFuaW1hdGlvbkNvbXBsZXRlLmVtaXQoe1xuICAgICAgICAgIGFuaW1hdGlvbjogdGhpcy5wcm9wcy5hbmltYXRpb24gfHwgJ2ZhZGUnLFxuICAgICAgICAgIHdpbm5lcjogdGhpcy5wcm9wcy53aW5uZXIsXG4gICAgICAgIH0pO1xuICAgICAgfSwgYW5pbWF0aW9uRHVyYXRpb24pO1xuICAgIH0sIGRlbGF5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYW51YWxseSB0cmlnZ2VyIHRoZSByZXZlYWwgYW5pbWF0aW9uLlxuICAgKi9cbiAgcmV2ZWFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNSZXZlYWxlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd0NvbmZldHRpID0gZmFsc2U7XG4gICAgdGhpcy5zdGFydFJldmVhbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRvIGluaXRpYWwgc3RhdGUuXG4gICAqL1xuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzQW5pbWF0aW5nID0gZmFsc2U7XG4gICAgdGhpcy5pc1JldmVhbGVkID0gZmFsc2U7XG4gICAgdGhpcy5zaG93Q29uZmV0dGkgPSBmYWxzZTtcbiAgfVxuXG4gIGZvcm1hdFRpY2tldE51bWJlcigpOiBzdHJpbmcge1xuICAgIGNvbnN0IG51bSA9IHRoaXMucHJvcHMud2lubmVyLnRpY2tldE51bWJlcjtcbiAgICBpZiAodGhpcy5wcm9wcy5udW1iZXJQYWRkaW5nKSB7XG4gICAgICByZXR1cm4gU3RyaW5nKG51bSkucGFkU3RhcnQodGhpcy5wcm9wcy5udW1iZXJQYWRkaW5nLCAnMCcpO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKG51bSk7XG4gIH1cblxuICBmb3JtYXRQcml6ZVZhbHVlKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnByb3BzLndpbm5lci5wcml6ZVZhbHVlKSByZXR1cm4gJyc7XG4gICAgcmV0dXJuIGAkJHt0aGlzLnByb3BzLndpbm5lci5wcml6ZVZhbHVlLnRvTG9jYWxlU3RyaW5nKCdlcy1NWCcpfWA7XG4gIH1cblxuICBnZXRSYW5kb21YKGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHsoaW5kZXggKiAxNykgJSAxMDB9JWA7XG4gIH1cblxuICBnZXRSYW5kb21Sb3RhdGlvbihpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7KGluZGV4ICogMzcpICUgMzYwfWRlZ2A7XG4gIH1cblxuICBnZXRXaW5uZXJMYWJlbCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnByb3BzLndpbm5lckxhYmVsQ29udGVudEtleSAmJiB0aGlzLnByb3BzLmNvbnRlbnRDbGFzcykge1xuICAgICAgcmV0dXJuIHRoaXMubGFuZ1NlcnZpY2UuZ2V0VGV4dChcbiAgICAgICAgdGhpcy5wcm9wcy5jb250ZW50Q2xhc3MsXG4gICAgICAgIHRoaXMucHJvcHMud2lubmVyTGFiZWxDb250ZW50S2V5LFxuICAgICAgICB0aGlzLnByb3BzLndpbm5lckxhYmVsIHx8IERFRkFVTFRfV0lOTkVSX0xBQkVMUy53aW5uZXJcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnByb3BzLndpbm5lckxhYmVsIHx8IERFRkFVTFRfV0lOTkVSX0xBQkVMUy53aW5uZXI7XG4gIH1cblxuICBnZXRUaWNrZXRMYWJlbCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnByb3BzLnRpY2tldExhYmVsQ29udGVudEtleSAmJiB0aGlzLnByb3BzLmNvbnRlbnRDbGFzcykge1xuICAgICAgcmV0dXJuIHRoaXMubGFuZ1NlcnZpY2UuZ2V0VGV4dChcbiAgICAgICAgdGhpcy5wcm9wcy5jb250ZW50Q2xhc3MsXG4gICAgICAgIHRoaXMucHJvcHMudGlja2V0TGFiZWxDb250ZW50S2V5LFxuICAgICAgICB0aGlzLnByb3BzLnRpY2tldExhYmVsIHx8IERFRkFVTFRfV0lOTkVSX0xBQkVMUy50aWNrZXRcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnByb3BzLnRpY2tldExhYmVsIHx8IERFRkFVTFRfV0lOTkVSX0xBQkVMUy50aWNrZXQ7XG4gIH1cblxuICBnZXRQcml6ZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucHJvcHMucHJpemVMYWJlbENvbnRlbnRLZXkgJiYgdGhpcy5wcm9wcy5jb250ZW50Q2xhc3MpIHtcbiAgICAgIHJldHVybiB0aGlzLmxhbmdTZXJ2aWNlLmdldFRleHQoXG4gICAgICAgIHRoaXMucHJvcHMuY29udGVudENsYXNzLFxuICAgICAgICB0aGlzLnByb3BzLnByaXplTGFiZWxDb250ZW50S2V5LFxuICAgICAgICB0aGlzLnByb3BzLnByaXplTGFiZWwgfHwgREVGQVVMVF9XSU5ORVJfTEFCRUxTLnByaXplXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wcm9wcy5wcml6ZUxhYmVsIHx8IERFRkFVTFRfV0lOTkVSX0xBQkVMUy5wcml6ZTtcbiAgfVxuXG4gIGdldENvbG9yKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucHJvcHMuY29sb3IpIHtcbiAgICAgIHJldHVybiBgdmFyKC0taW9uLWNvbG9yLSR7dGhpcy5wcm9wcy5jb2xvcn0pYDtcbiAgICB9XG4gICAgcmV0dXJuICd2YXIoLS1pb24tY29sb3Itd2FybmluZyknO1xuICB9XG59XG4iXX0=
|
|
359
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lubmVyLWRpc3BsYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy93aW5uZXItZGlzcGxheS93aW5uZXItZGlzcGxheS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBR1osTUFBTSxFQUNOLFVBQVUsR0FFWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFHTCxxQkFBcUIsR0FDdEIsTUFBTSxTQUFTLENBQUM7O0FBRWpCLFFBQVEsQ0FBQyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFpSHpFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNHO0FBQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQXJKbkM7UUF3Slksc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQStCLENBQUM7UUFFOUUsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixtQkFBYyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxF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ZSxDQUFDLFlBQ3ZDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdHVDs4QkEwQ1EsS0FBSztzQkFBYixLQUFLO2dCQUVJLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIGluamVjdCxcbiAgRWxlbWVudFJlZixcbiAgQWZ0ZXJWaWV3SW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IHRyb3BoeU91dGxpbmUsIHRpY2tldE91dGxpbmUsIGdpZnRPdXRsaW5lLCBsb2NhdGlvbk91dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBBdmF0YXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBXaW5uZXJEaXNwbGF5TWV0YWRhdGEsXG4gIFdpbm5lckRpc3BsYXlBbmltYXRpb25FdmVudCxcbiAgREVGQVVMVF9XSU5ORVJfTEFCRUxTLFxufSBmcm9tICcuL3R5cGVzJztcblxuYWRkSWNvbnMoeyB0cm9waHlPdXRsaW5lLCB0aWNrZXRPdXRsaW5lLCBnaWZ0T3V0bGluZSwgbG9jYXRpb25PdXRsaW5lIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtd2lubmVyLWRpc3BsYXknLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25JY29uLCBBdmF0YXJDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwid2lubmVyLWRpc3BsYXktY29udGFpbmVyXCJcbiAgICAgIFtjbGFzc109XCJwcm9wcy5jc3NDbGFzc1wiXG4gICAgICBbY2xhc3MubW9kZS1jb21wYWN0XT1cInByb3BzLm1vZGUgPT09ICdjb21wYWN0J1wiXG4gICAgICBbY2xhc3MubW9kZS1zdGFuZGFyZF09XCJwcm9wcy5tb2RlID09PSAnc3RhbmRhcmQnIHx8ICFwcm9wcy5tb2RlXCJcbiAgICAgIFtjbGFzcy5tb2RlLWZ1bGxdPVwicHJvcHMubW9kZSA9PT0gJ2Z1bGwnXCJcbiAgICAgIFtjbGFzcy5tb2RlLWNlbGVicmF0aW9uXT1cInByb3BzLm1vZGUgPT09ICdjZWxlYnJhdGlvbidcIlxuICAgICAgW2NsYXNzLnNpemUtc21hbGxdPVwicHJvcHMuc2l6ZSA9PT0gJ3NtYWxsJ1wiXG4gICAgICBbY2xhc3Muc2l6ZS1tZWRpdW1dPVwicHJvcHMuc2l6ZSA9PT0gJ21lZGl1bScgfHwgIXByb3BzLnNpemVcIlxuICAgICAgW2NsYXNzLnNpemUtbGFyZ2VdPVwicHJvcHMuc2l6ZSA9PT0gJ2xhcmdlJ1wiXG4gICAgICBbY2xhc3MuYmctc29saWRdPVwicHJvcHMuYmFja2dyb3VuZCA9PT0gJ3NvbGlkJyB8fCAhcHJvcHMuYmFja2dyb3VuZFwiXG4gICAgICBbY2xhc3MuYmctZ3JhZGllbnRdPVwicHJvcHMuYmFja2dyb3VuZCA9PT0gJ2dyYWRpZW50J1wiXG4gICAgICBbY2xhc3MuYmctdHJhbnNwYXJlbnRdPVwicHJvcHMuYmFja2dyb3VuZCA9PT0gJ3RyYW5zcGFyZW50J1wiXG4gICAgICBbY2xhc3MuYW5pbWF0aW5nXT1cImlzQW5pbWF0aW5nXCJcbiAgICAgIFtjbGFzcy5yZXZlYWxlZF09XCJpc1JldmVhbGVkXCJcbiAgICAgIFtjbGFzcy5hbmltYXRpb24tZmFkZV09XCJwcm9wcy5hbmltYXRpb24gPT09ICdmYWRlJ1wiXG4gICAgICBbY2xhc3MuYW5pbWF0aW9uLXpvb21dPVwicHJvcHMuYW5pbWF0aW9uID09PSAnem9vbSdcIlxuICAgICAgW2NsYXNzLmFuaW1hdGlvbi1zbGlkZV09XCJwcm9wcy5hbmltYXRpb24gPT09ICdzbGlkZSdcIlxuICAgICAgW2NsYXNzLmFuaW1hdGlvbi1zcG90bGlnaHRdPVwicHJvcHMuYW5pbWF0aW9uID09PSAnc3BvdGxpZ2h0J1wiXG4gICAgICBbc3R5bGUuLS13aW5uZXItY29sb3JdPVwiZ2V0Q29sb3IoKVwiXG4gICAgICBbc3R5bGUuLS1hbmltYXRpb24tZHVyYXRpb25dPVwiKHByb3BzLmFuaW1hdGlvbkR1cmF0aW9uIHx8IDgwMCkgKyAnbXMnXCJcbiAgICA+XG4gICAgICA8IS0tIENvbmZldHRpIG92ZXJsYXkgLS0+XG4gICAgICBAaWYgKHByb3BzLnNob3dDb25mZXR0aSAmJiAocHJvcHMubW9kZSA9PT0gJ2NlbGVicmF0aW9uJyB8fCBwcm9wcy5tb2RlID09PSAnZnVsbCcpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb25mZXR0aS1jb250YWluZXJcIiBbY2xhc3MuYWN0aXZlXT1cInNob3dDb25mZXR0aVwiPlxuICAgICAgICAgIEBmb3IgKGkgb2YgY29uZmV0dGlQaWVjZXM7IHRyYWNrIGkpIHtcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb25mZXR0aS1waWVjZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLWRlbGF5XT1cImkgKiAwLjEgKyAncydcIlxuICAgICAgICAgICAgICBbc3R5bGUuLS14XT1cImdldFJhbmRvbVgoaSlcIlxuICAgICAgICAgICAgICBbc3R5bGUuLS1yb3RhdGlvbl09XCJnZXRSYW5kb21Sb3RhdGlvbihpKVwiXG4gICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgPCEtLSBUcm9waHkgaWNvbiAtLT5cbiAgICAgIEBpZiAocHJvcHMuc2hvd1Ryb3BoeSAhPT0gZmFsc2UpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInRyb3BoeS1jb250YWluZXJcIj5cbiAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInRyb3BoeS1vdXRsaW5lXCIgY2xhc3M9XCJ0cm9waHktaWNvblwiPjwvaW9uLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8IS0tIFdpbm5lciBsYWJlbCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3aW5uZXItbGFiZWxcIj57eyBnZXRXaW5uZXJMYWJlbCgpIH19PC9kaXY+XG5cbiAgICAgIDwhLS0gV2lubmVyIGluZm8gLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwid2lubmVyLWluZm9cIj5cbiAgICAgICAgPCEtLSBBdmF0YXIgLS0+XG4gICAgICAgIEBpZiAocHJvcHMud2lubmVyLmF2YXRhciAmJiAocHJvcHMubW9kZSA9PT0gJ2Z1bGwnIHx8IHByb3BzLm1vZGUgPT09ICdjZWxlYnJhdGlvbicpKSB7XG4gICAgICAgICAgPHZhbC1hdmF0YXIgW3Byb3BzXT1cInByb3BzLndpbm5lci5hdmF0YXJcIiBjbGFzcz1cIndpbm5lci1hdmF0YXJcIj48L3ZhbC1hdmF0YXI+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIE5hbWUgLS0+XG4gICAgICAgIDxoMiBjbGFzcz1cIndpbm5lci1uYW1lXCI+e3sgcHJvcHMud2lubmVyLm5hbWUgfX08L2gyPlxuXG4gICAgICAgIDwhLS0gTG9jYXRpb24gLS0+XG4gICAgICAgIEBpZiAocHJvcHMuc2hvd0xvY2F0aW9uICE9PSBmYWxzZSAmJiBwcm9wcy53aW5uZXIubG9jYXRpb24pIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2lubmVyLWxvY2F0aW9uXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImxvY2F0aW9uLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPHNwYW4+e3sgcHJvcHMud2lubmVyLmxvY2F0aW9uIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBUaWNrZXQgbnVtYmVyIC0tPlxuICAgICAgICBAaWYgKHByb3BzLnNob3dUaWNrZXROdW1iZXIgIT09IGZhbHNlKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1pbmZvXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInRpY2tldC1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGlja2V0LWxhYmVsXCI+e3sgZ2V0VGlja2V0TGFiZWwoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGlja2V0LW51bWJlclwiPnt7IGZvcm1hdFRpY2tldE51bWJlcigpIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBQcml6ZSBpbmZvIC0tPlxuICAgICAgQGlmIChwcm9wcy5zaG93UHJpemUgIT09IGZhbHNlICYmIHByb3BzLndpbm5lci5wcml6ZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicHJpemUtaW5mb1wiPlxuICAgICAgICAgIEBpZiAocHJvcHMud2lubmVyLnByaXplSW1hZ2UgJiYgKHByb3BzLm1vZGUgPT09ICdmdWxsJyB8fCBwcm9wcy5tb2RlID09PSAnY2VsZWJyYXRpb24nKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaXplLWltYWdlXCI+XG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJwcm9wcy53aW5uZXIucHJpemVJbWFnZVwiIFthbHRdPVwicHJvcHMud2lubmVyLnByaXplXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcml6ZS1kZXRhaWxzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpemUtaGVhZGVyXCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiZ2lmdC1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcml6ZS1sYWJlbFwiPnt7IGdldFByaXplTGFiZWwoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGgzIGNsYXNzPVwicHJpemUtbmFtZVwiPnt7IHByb3BzLndpbm5lci5wcml6ZSB9fTwvaDM+XG5cbiAgICAgICAgICAgIEBpZiAocHJvcHMud2lubmVyLnByaXplRGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJwcml6ZS1kZXNjcmlwdGlvblwiPnt7IHByb3BzLndpbm5lci5wcml6ZURlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKHByb3BzLnNob3dQcml6ZVZhbHVlICE9PSBmYWxzZSAmJiBwcm9wcy53aW5uZXIucHJpemVWYWx1ZSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpemUtdmFsdWVcIj5cbiAgICAgICAgICAgICAgICB7eyBmb3JtYXRQcml6ZVZhbHVlKCkgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi93aW5uZXItZGlzcGxheS5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLXdpbm5lci1kaXNwbGF5XG4gKlxuICogQSBjb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgcmFmZmxlIHdpbm5lcnMgd2l0aCBjZWxlYnJhdGlvbiBhbmltYXRpb25zLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlXG4gKiBgYGBodG1sXG4gKiA8dmFsLXdpbm5lci1kaXNwbGF5XG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgd2lubmVyOiB7XG4gKiAgICAgICBuYW1lOiAnSnVhbiBQw6lyZXonLFxuICogICAgICAgdGlja2V0TnVtYmVyOiA0MlxuICogICAgIH1cbiAqICAgfVwiXG4gKiA+PC92YWwtd2lubmVyLWRpc3BsYXk+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBGdWxsIGNlbGVicmF0aW9uIG1vZGVcbiAqIGBgYGh0bWxcbiAqIDx2YWwtd2lubmVyLWRpc3BsYXlcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICB3aW5uZXI6IHtcbiAqICAgICAgIG5hbWU6ICdNYXLDrWEgR2FyY8OtYScsXG4gKiAgICAgICB0aWNrZXROdW1iZXI6IDE1NixcbiAqICAgICAgIHByaXplOiAnaVBob25lIDE1IFBybycsXG4gKiAgICAgICBwcml6ZVZhbHVlOiAyNTAwMCxcbiAqICAgICAgIGxvY2F0aW9uOiAnQ0RNWCwgTcOpeGljbycsXG4gKiAgICAgICBhdmF0YXI6IHsgaW1hZ2U6ICdhdmF0YXIuanBnJyB9XG4gKiAgICAgfSxcbiAqICAgICBtb2RlOiAnY2VsZWJyYXRpb24nLFxuICogICAgIHNob3dDb25mZXR0aTogdHJ1ZSxcbiAqICAgICBhbmltYXRpb246ICd6b29tJyxcbiAqICAgICBjb2xvcjogJ3dhcm5pbmcnXG4gKiAgIH1cIlxuICogICAoYW5pbWF0aW9uQ29tcGxldGUpPVwib25SZXZlYWwoJGV2ZW50KVwiXG4gKiA+PC92YWwtd2lubmVyLWRpc3BsYXk+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFdpbm5lckRpc3BsYXlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHByb3BzOiBXaW5uZXJEaXNwbGF5TWV0YWRhdGE7XG5cbiAgQE91dHB1dCgpIGFuaW1hdGlvbkNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxXaW5uZXJEaXNwbGF5QW5pbWF0aW9uRXZlbnQ+KCk7XG5cbiAgaXNBbmltYXRpbmcgPSBmYWxzZTtcbiAgaXNSZXZlYWxlZCA9IGZhbHNlO1xuICBzaG93Q29uZmV0dGkgPSBmYWxzZTtcbiAgY29uZmV0dGlQaWVjZXMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiA1MCB9LCAoXywgaSkgPT4gaSk7XG5cbiAgcHJpdmF0ZSByZXZlYWxUaW1lb3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGFuaW1hdGlvblRpbWVvdXQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcy5hdXRvUGxheSAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuc3RhcnRSZXZlYWwoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gQWRkaXRpb25hbCBzZXR1cCBpZiBuZWVkZWRcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJldmVhbFRpbWVvdXQpIGNsZWFyVGltZW91dCh0aGlzLnJldmVhbFRpbWVvdXQpO1xuICAgIGlmICh0aGlzLmFuaW1hdGlvblRpbWVvdXQpIGNsZWFyVGltZW91dCh0aGlzLmFuaW1hdGlvblRpbWVvdXQpO1xuICB9XG5cbiAgc3RhcnRSZXZlYWwoKTogdm9pZCB7XG4gICAgY29uc3QgZGVsYXkgPSB0aGlzLnByb3BzLnJldmVhbERlbGF5IHx8IDA7XG5cbiAgICB0aGlzLnJldmVhbFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaXNBbmltYXRpbmcgPSB0cnVlO1xuXG4gICAgICBjb25zdCBhbmltYXRpb25EdXJhdGlvbiA9IHRoaXMucHJvcHMuYW5pbWF0aW9uRHVyYXRpb24gfHwgODAwO1xuXG4gICAgICB0aGlzLmFuaW1hdGlvblRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5pc0FuaW1hdGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzUmV2ZWFsZWQgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLnByb3BzLnNob3dDb25mZXR0aSkge1xuICAgICAgICAgIHRoaXMuc2hvd0NvbmZldHRpID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYW5pbWF0aW9uQ29tcGxldGUuZW1pdCh7XG4gICAgICAgICAgYW5pbWF0aW9uOiB0aGlzLnByb3BzLmFuaW1hdGlvbiB8fCAnZmFkZScsXG4gICAgICAgICAgd2lubmVyOiB0aGlzLnByb3BzLndpbm5lcixcbiAgICAgICAgfSk7XG4gICAgICB9LCBhbmltYXRpb25EdXJhdGlvbik7XG4gICAgfSwgZGVsYXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbnVhbGx5IHRyaWdnZXIgdGhlIHJldmVhbCBhbmltYXRpb24uXG4gICAqL1xuICByZXZlYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc1JldmVhbGVkID0gZmFsc2U7XG4gICAgdGhpcy5zaG93Q29uZmV0dGkgPSBmYWxzZTtcbiAgICB0aGlzLnN0YXJ0UmV2ZWFsKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdG8gaW5pdGlhbCBzdGF0ZS5cbiAgICovXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNBbmltYXRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmlzUmV2ZWFsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dDb25mZXR0aSA9IGZhbHNlO1xuICB9XG5cbiAgZm9ybWF0VGlja2V0TnVtYmVyKCk6IHN0cmluZyB7XG4gICAgY29uc3QgbnVtID0gdGhpcy5wcm9wcy53aW5uZXIudGlja2V0TnVtYmVyO1xuICAgIGlmICh0aGlzLnByb3BzLm51bWJlclBhZGRpbmcpIHtcbiAgICAgIHJldHVybiBTdHJpbmcobnVtKS5wYWRTdGFydCh0aGlzLnByb3BzLm51bWJlclBhZGRpbmcsICcwJyk7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcobnVtKTtcbiAgfVxuXG4gIGZvcm1hdFByaXplVmFsdWUoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMucHJvcHMud2lubmVyLnByaXplVmFsdWUpIHJldHVybiAnJztcbiAgICByZXR1cm4gYCQke3RoaXMucHJvcHMud2lubmVyLnByaXplVmFsdWUudG9Mb2NhbGVTdHJpbmcoJ2VzLU1YJyl9YDtcbiAgfVxuXG4gIGdldFJhbmRvbVgoaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAkeyhpbmRleCAqIDE3KSAlIDEwMH0lYDtcbiAgfVxuXG4gIGdldFJhbmRvbVJvdGF0aW9uKGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHsoaW5kZXggKiAzNykgJSAzNjB9ZGVnYDtcbiAgfVxuXG4gIGdldFdpbm5lckxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMud2lubmVyTGFiZWwgfHwgREVGQVVMVF9XSU5ORVJfTEFCRUxTLndpbm5lcjtcbiAgfVxuXG4gIGdldFRpY2tldExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMudGlja2V0TGFiZWwgfHwgREVGQVVMVF9XSU5ORVJfTEFCRUxTLnRpY2tldDtcbiAgfVxuXG4gIGdldFByaXplTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5wcml6ZUxhYmVsIHx8IERFRkFVTFRfV0lOTkVSX0xBQkVMUy5wcml6ZTtcbiAgfVxuXG4gIGdldENvbG9yKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucHJvcHMuY29sb3IpIHtcbiAgICAgIHJldHVybiBgdmFyKC0taW9uLWNvbG9yLSR7dGhpcy5wcm9wcy5jb2xvcn0pYDtcbiAgICB9XG4gICAgcmV0dXJuICd2YXIoLS1pb24tY29sb3Itd2FybmluZyknO1xuICB9XG59XG4iXX0=
|