@fundamental-ngx/core 0.39.2 → 0.40.0-rc.1
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/dialog/base/dialog-config-base.class.d.ts +2 -0
- package/esm2020/avatar/avatar.component.mjs +6 -3
- package/esm2020/calendar/calendar-views/calendar-day-view/calendar-day-view.component.mjs +6 -3
- package/esm2020/date-picker/date-picker.component.mjs +5 -15
- package/esm2020/dialog/base/dialog-config-base.class.mjs +3 -1
- package/esm2020/dialog/dialog-body/dialog-body.component.mjs +3 -3
- package/esm2020/dialog/dialog.component.mjs +4 -3
- package/esm2020/dynamic-page/dynamic-page.component.mjs +2 -2
- package/esm2020/facets/facet/facet.component.mjs +1 -1
- package/esm2020/form/form-input-message-group/form-input-message-group.component.mjs +1 -1
- package/esm2020/form/form-label/form-label.component.mjs +39 -9
- package/esm2020/icon/icon.component.mjs +1 -1
- package/esm2020/illustrated-message/illustrated-message.component.mjs +5 -2
- package/esm2020/inline-help/inline-help.directive.mjs +24 -14
- package/esm2020/layout-panel/layout-panel-footer/layout-panel-footer.component.mjs +40 -22
- package/esm2020/layout-panel/layout-panel-title/layout-panel-title.directive.mjs +4 -4
- package/esm2020/layout-panel/layout-panel.component.mjs +15 -3
- package/esm2020/link/link.component.mjs +3 -3
- package/esm2020/list/list-component.interface.mjs +1 -1
- package/esm2020/list/list-item/list-item.component.mjs +9 -10
- package/esm2020/list/list-navigation-item/list-navigation-item.component.mjs +2 -2
- package/esm2020/list/list.component.mjs +2 -2
- package/esm2020/list/tokens.mjs +1 -1
- package/esm2020/multi-combobox/base-multi-combobox.class.mjs +2 -2
- package/esm2020/multi-combobox/multi-combobox.component.mjs +8 -9
- package/esm2020/multi-input/multi-input.component.mjs +7 -4
- package/esm2020/object-status/object-status.component.mjs +1 -1
- package/esm2020/pagination/pagination.component.mjs +1 -1
- package/esm2020/popover/base/base-popover.class.mjs +18 -4
- package/esm2020/popover/popover-service/popover.service.mjs +22 -8
- package/esm2020/quick-view/quick-view-group-item-label/quick-view-group-item-label.component.mjs +1 -1
- package/esm2020/segmented-button/segmented-button.component.mjs +11 -15
- package/esm2020/select/option/option.component.mjs +21 -5
- package/esm2020/select/select.component.mjs +1 -1
- package/esm2020/splitter/splitter-pane-container/splitter-pane-container.component.mjs +9 -3
- package/esm2020/text/text.component.mjs +3 -3
- package/esm2020/theming/theming.service.mjs +11 -4
- package/esm2020/timeline/timeline.component.mjs +11 -11
- package/esm2020/token/token.component.mjs +27 -6
- package/esm2020/token/tokenizer.component.mjs +151 -71
- package/fesm2015/fundamental-ngx-core-avatar.mjs +5 -2
- package/fesm2015/fundamental-ngx-core-avatar.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-calendar.mjs +5 -2
- package/fesm2015/fundamental-ngx-core-calendar.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-date-picker.mjs +4 -14
- package/fesm2015/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-dialog.mjs +6 -4
- package/fesm2015/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-dynamic-page.mjs +2 -2
- package/fesm2015/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-facets.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-facets.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-form.mjs +38 -8
- package/fesm2015/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-icon.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-illustrated-message.mjs +4 -1
- package/fesm2015/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-inline-help.mjs +23 -14
- package/fesm2015/fundamental-ngx-core-inline-help.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-layout-panel.mjs +55 -25
- package/fesm2015/fundamental-ngx-core-layout-panel.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-link.mjs +2 -2
- package/fesm2015/fundamental-ngx-core-link.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-list.mjs +15 -19
- package/fesm2015/fundamental-ngx-core-list.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-multi-combobox.mjs +9 -11
- package/fesm2015/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-multi-input.mjs +6 -3
- package/fesm2015/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-object-status.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-pagination.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-pagination.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-popover.mjs +38 -10
- package/fesm2015/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-quick-view.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-quick-view.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-segmented-button.mjs +11 -15
- package/fesm2015/fundamental-ngx-core-segmented-button.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-select.mjs +29 -14
- package/fesm2015/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-splitter.mjs +8 -2
- package/fesm2015/fundamental-ngx-core-splitter.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-text.mjs +2 -2
- package/fesm2015/fundamental-ngx-core-text.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-theming.mjs +10 -3
- package/fesm2015/fundamental-ngx-core-theming.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-timeline.mjs +9 -10
- package/fesm2015/fundamental-ngx-core-timeline.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-token.mjs +179 -76
- package/fesm2015/fundamental-ngx-core-token.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-avatar.mjs +5 -2
- package/fesm2020/fundamental-ngx-core-avatar.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-calendar.mjs +5 -2
- package/fesm2020/fundamental-ngx-core-calendar.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-date-picker.mjs +4 -14
- package/fesm2020/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-dialog.mjs +6 -4
- package/fesm2020/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-dynamic-page.mjs +2 -2
- package/fesm2020/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-facets.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-facets.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-form.mjs +38 -8
- package/fesm2020/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-icon.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-illustrated-message.mjs +4 -1
- package/fesm2020/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-inline-help.mjs +23 -13
- package/fesm2020/fundamental-ngx-core-inline-help.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-layout-panel.mjs +55 -25
- package/fesm2020/fundamental-ngx-core-layout-panel.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-link.mjs +2 -2
- package/fesm2020/fundamental-ngx-core-link.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-list.mjs +15 -18
- package/fesm2020/fundamental-ngx-core-list.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-multi-combobox.mjs +8 -9
- package/fesm2020/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-multi-input.mjs +6 -3
- package/fesm2020/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-object-status.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-pagination.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-pagination.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-popover.mjs +38 -10
- package/fesm2020/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-quick-view.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-quick-view.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-segmented-button.mjs +11 -15
- package/fesm2020/fundamental-ngx-core-segmented-button.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-select.mjs +27 -14
- package/fesm2020/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-splitter.mjs +8 -2
- package/fesm2020/fundamental-ngx-core-splitter.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-text.mjs +2 -2
- package/fesm2020/fundamental-ngx-core-text.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-theming.mjs +10 -3
- package/fesm2020/fundamental-ngx-core-theming.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-timeline.mjs +9 -10
- package/fesm2020/fundamental-ngx-core-timeline.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-token.mjs +173 -74
- package/fesm2020/fundamental-ngx-core-token.mjs.map +1 -1
- package/form/form-input-message-group/form-input-message-group.component.d.ts +2 -1
- package/form/form-label/form-label.component.d.ts +14 -4
- package/fundamental-ngx-core-v0.40.0-rc.1.tgz +0 -0
- package/illustrated-message/illustrated-message.component.d.ts +2 -2
- package/inline-help/inline-help.directive.d.ts +7 -4
- package/layout-panel/layout-panel-footer/layout-panel-footer.component.d.ts +23 -14
- package/layout-panel/layout-panel-title/layout-panel-title.directive.d.ts +1 -1
- package/layout-panel/layout-panel.component.d.ts +5 -1
- package/list/list-component.interface.d.ts +1 -0
- package/list/list-item/list-item.component.d.ts +2 -2
- package/list/tokens.d.ts +1 -1
- package/multi-combobox/base-multi-combobox.class.d.ts +1 -2
- package/multi-combobox/multi-combobox.component.d.ts +2 -3
- package/object-status/object-status.component.d.ts +1 -1
- package/package.json +4 -4
- package/popover/base/base-popover.class.d.ts +17 -3
- package/popover/popover-service/popover.service.d.ts +3 -1
- package/schematics/add-dependencies/index.js +6 -6
- package/segmented-button/segmented-button.component.d.ts +0 -1
- package/select/option/option.component.d.ts +9 -2
- package/select/select.component.d.ts +1 -1
- package/splitter/splitter-pane-container/splitter-pane-container.component.d.ts +5 -1
- package/theming/theming.service.d.ts +12 -6
- package/timeline/timeline.component.d.ts +3 -2
- package/token/token.component.d.ts +7 -1
- package/token/tokenizer.component.d.ts +28 -7
- package/esm2020/list/list-component.token.mjs +0 -4
- package/fundamental-ngx-core-v0.39.2.tgz +0 -0
- package/list/list-component.token.d.ts +0 -4
|
@@ -7,7 +7,7 @@ import { ListGroupHeaderDirective } from './directives/list-group-header.directi
|
|
|
7
7
|
import { ListFocusItem } from './list-focus-item.model';
|
|
8
8
|
import { ListNavigationItemComponent } from './list-navigation-item/list-navigation-item.component';
|
|
9
9
|
import { ContentDensityObserver, contentDensityObserverProviders, ContentDensityMode } from '@fundamental-ngx/core/content-density';
|
|
10
|
-
import { FD_LIST_COMPONENT, FD_LIST_UNREAD_INDICATOR } from './
|
|
10
|
+
import { FD_LIST_COMPONENT, FD_LIST_UNREAD_INDICATOR } from './tokens';
|
|
11
11
|
import * as i0 from "@angular/core";
|
|
12
12
|
import * as i1 from "@fundamental-ngx/cdk/utils";
|
|
13
13
|
import * as i2 from "@fundamental-ngx/core/content-density";
|
|
@@ -231,4 +231,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImpor
|
|
|
231
231
|
type: HostListener,
|
|
232
232
|
args: ['keydown', ['$event']]
|
|
233
233
|
}] } });
|
|
234
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9saXN0L2xpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvbGlzdC9saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBRUgsc0JBQXNCLEVBQ3RCLG1CQUFtQixFQUV0QixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNwRyxPQUFPLEVBQ0gsc0JBQXNCLEVBQ3RCLCtCQUErQixFQUMvQixrQkFBa0IsRUFDckIsTUFBTSx1Q0FBdUMsQ0FBQztBQUUvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7OztBQUdyRjs7O0dBR0c7QUEyQkgsTUFBTSxPQUFPLGFBQWE7SUErRXRCLGNBQWM7SUFD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LEtBQUs7Z0JBS04sZUFBZTtzQkFEZCxNQUFNO2dCQUtQLGFBQWE7c0JBRFosV0FBVzt1QkFBQywyQkFBMkI7Z0JBS3hDLEtBQUs7c0JBREosZUFBZTt1QkFBQyxtQkFBbUI7Z0JBS3BDLFNBQVM7c0JBRFIsZUFBZTt1QkFBQywyQkFBMkI7Z0JBS3BDLFdBQVc7c0JBRGxCLGVBQWU7dUJBQUMsYUFBYTtnQkF3QzlCLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExpc3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9saXN0LWl0ZW0vbGlzdC1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBtZXJnZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgICBGb2N1c0VzY2FwZURpcmVjdGlvbixcbiAgICBLZXlib2FyZFN1cHBvcnRTZXJ2aWNlLFxuICAgIExJU1RfSVRFTV9DT01QT05FTlQsXG4gICAgTGlzdEl0ZW1JbnRlcmZhY2Vcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgTGlzdEdyb3VwSGVhZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2xpc3QtZ3JvdXAtaGVhZGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBMaXN0Rm9jdXNJdGVtIH0gZnJvbSAnLi9saXN0LWZvY3VzLWl0ZW0ubW9kZWwnO1xuaW1wb3J0IHsgTGlzdE5hdmlnYXRpb25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9saXN0LW5hdmlnYXRpb24taXRlbS9saXN0LW5hdmlnYXRpb24taXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgICBDb250ZW50RGVuc2l0eU9ic2VydmVyLFxuICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMsXG4gICAgQ29udGVudERlbnNpdHlNb2RlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHsgTGlzdENvbXBvbmVudEludGVyZmFjZSB9IGZyb20gJy4vbGlzdC1jb21wb25lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZEX0xJU1RfQ09NUE9ORU5ULCBGRF9MSVNUX1VOUkVBRF9JTkRJQ0FUT1IgfSBmcm9tICcuL2xpc3QtY29tcG9uZW50LnRva2VuJztcbmltcG9ydCB7IExpc3RVbnJlYWRJbmRpY2F0b3IgfSBmcm9tICcuL2xpc3QtdW5yZWFkLWluZGljYXRvci5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIFRoZSBkaXJlY3RpdmUgdGhhdCByZXByZXNlbnRzIGEgbGlzdC5cbiAqIEl0IGlzIHVzZWQgdG8gZGlzcGxheSBhIGxpc3Qgb2YgaXRlbXMgd2l0aCBzaW1wbGUgaW5mb3JtYXRpb24gc3VjaCBhcyBzY29wZXMsIG5hbWVzLCBldGMuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdbZmQtbGlzdF0sIFtmZExpc3RdJyxcbiAgICB0ZW1wbGF0ZVVybDogYC4vbGlzdC5jb21wb25lbnQuaHRtbGAsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkLWxpc3QnLFxuICAgICAgICByb2xlOiAnbGlzdCdcbiAgICB9LFxuICAgIHN0eWxlVXJsczogWycuL2xpc3QuY29tcG9uZW50LnNjc3MnLCAnLi4vLi4vLi4vLi4vY2RrL3NyYy9saWIvdXRpbHMvZHJhZy1hbmQtZHJvcC9kcmFnLWFuZC1kcm9wLnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBLZXlib2FyZFN1cHBvcnRTZXJ2aWNlLFxuICAgICAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKHtcbiAgICAgICAgICAgIG1vZGlmaWVyczogeyBbQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1RdOiAnZmQtbGlzdC0tY29tcGFjdCcgfVxuICAgICAgICB9KSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRkRfTElTVF9DT01QT05FTlQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogTGlzdENvbXBvbmVudFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRF9MSVNUX1VOUkVBRF9JTkRJQ0FUT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogTGlzdENvbXBvbmVudFxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgTGlzdENvbXBvbmVudEludGVyZmFjZSwgTGlzdFVucmVhZEluZGljYXRvciwgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBXaGV0aGVyIGRyb3Bkb3duIG1vZGUgaXMgaW5jbHVkZWQgdG8gY29tcG9uZW50LCB1c2VkIGZvciBTZWxlY3QgYW5kIENvbWJvYm94ICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLWxpc3QtLWRyb3Bkb3duJylcbiAgICBkcm9wZG93bk1vZGUgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIG11bHRpIG1vZGUgaXMgaW5jbHVkZWQgdG8gY29tcG9uZW50LCB1c2VkIGZvciBNdWx0aUlucHV0ICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLWxpc3QtLW11bHRpLWlucHV0JylcbiAgICBtdWx0aUlucHV0TW9kZSA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgbGlzdCBpcyB1c2VkIGluIG1vYmlsZSBtb2RlKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtbGlzdC0tbW9iaWxlJylcbiAgICBtb2JpbGVNb2RlID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciBsaXN0IGNvbXBvbmVudCBjb250YWlucyBtZXNzYWdlICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLWxpc3QtLWhhcy1tZXNzYWdlJylcbiAgICBoYXNNZXNzYWdlID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciBsaXN0IGNvbXBvbmVudCBoYXMgcmVtb3ZlZCBib3JkZXJzICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLWxpc3QtLW5vLWJvcmRlcicpXG4gICAgbm9Cb3JkZXIgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIGxpc3QgY29tcG9uZW50IGhhcyBuYXZpZ2F0aW9uIGluZGljYXRvcnMgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtbGlzdC0tbmF2aWdhdGlvbi1pbmRpY2F0aW9uJylcbiAgICBuYXZpZ2F0aW9uSW5kaWNhdG9yID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciBsaXN0IGNvbXBvbmVudCBoYXMgY2hlY2tib3hlcyBvciByYWRpbyBidXR0b25zIGluY2x1ZGVkICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLWxpc3QtLXNlbGVjdGlvbicpXG4gICAgc2VsZWN0aW9uID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciBpbnRlcm5hbCBrZXlib2FyZCBzdXBwb3J0IHNob3VsZCBiZSBlbmFibGVkLiBJdCdzIGVuYWJsZWQgYnkgZGVmYXVsdCAqL1xuICAgIEBJbnB1dCgpXG4gICAga2V5Ym9hcmRTdXBwb3J0ID0gdHJ1ZTtcblxuICAgIC8qKiBXaGV0aGVyIGxpc3Qgc2hvdWxkIGhhdmUgYSBieWxpbmUgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtbGlzdC0tYnlsaW5lJylcbiAgICBieWxpbmUgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRvIGRpc3BsYXkgdW5yZWFkIG5vdGlmaWNhdGlvbiBpbmRpY2F0b3IuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC1saXN0LS11bnJlYWQtaW5kaWNhdG9yJylcbiAgICBASW5wdXQoKVxuICAgIHVucmVhZEluZGljYXRvciA9IGZhbHNlO1xuXG4gICAgLyoqIEV2ZW50IHRocm93biwgd2hlbiBmb2N1cyBlc2NhcGVzIHRoZSBsaXN0ICovXG4gICAgQE91dHB1dCgpXG4gICAgZm9jdXNFc2NhcGVMaXN0ID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0VzY2FwZURpcmVjdGlvbj4oKTtcblxuICAgIC8qKiBXaGV0aGVyIGxpc3QgY29tcG9uZW50IGluY2x1ZGVzIGxpbmtzICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC1saXN0LS1uYXZpZ2F0aW9uJylcbiAgICBoYXNOYXZpZ2F0aW9uID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oTElTVF9JVEVNX0NPTVBPTkVOVClcbiAgICBpdGVtczogUXVlcnlMaXN0PExpc3RJdGVtSW50ZXJmYWNlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihMaXN0TmF2aWdhdGlvbkl0ZW1Db21wb25lbnQpXG4gICAgX25hdkl0ZW1zOiBRdWVyeUxpc3Q8TGlzdE5hdmlnYXRpb25JdGVtQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihMaXN0Rm9jdXNJdGVtKVxuICAgIHByaXZhdGUgX2ZvY3VzSXRlbXM6IFF1ZXJ5TGlzdDxMaXN0Rm9jdXNJdGVtPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBBbiBSeEpTIFN1YmplY3QgdGhhdCB3aWxsIGtpbGwgdGhlIGRhdGEgc3RyZWFtIHVwb24gcXVlcnlMaXN0IGNoYW5nZXMgKGZvciB1bnN1YnNjcmliaW5nKSAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vblJlZnJlc2gkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBBbiBSeEpTIFN1YmplY3QgdGhhdCB3aWxsIGtpbGwgdGhlIGRhdGEgc3RyZWFtIHVwb24gY29tcG9uZW504oCZcyBkZXN0cnVjdGlvbiAoZm9yIHVuc3Vic2NyaWJpbmcpICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfa2V5Ym9hcmRTdXBwb3J0U2VydmljZTogS2V5Ym9hcmRTdXBwb3J0U2VydmljZTxMaXN0Rm9jdXNJdGVtPixcbiAgICAgICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBfY29udGVudERlbnNpdHlPYnNlcnZlcjogQ29udGVudERlbnNpdHlPYnNlcnZlclxuICAgICkge1xuICAgICAgICBfY29udGVudERlbnNpdHlPYnNlcnZlci5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9saXN0ZW5Pbkxpc3RGb2N1c0VzY2FwZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9rZXlib2FyZFN1cHBvcnRTZXJ2aWNlLnNldEtleWJvYXJkU2VydmljZSh0aGlzLl9mb2N1c0l0ZW1zLCBmYWxzZSwgZmFsc2UpO1xuICAgICAgICB0aGlzLl9saXN0ZW5PblF1ZXJ5Q2hhbmdlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIGtleURvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmtleWJvYXJkU3VwcG9ydCkge1xuICAgICAgICAgICAgdGhpcy5fa2V5Ym9hcmRTdXBwb3J0U2VydmljZS5vbktleURvd24oZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFNldCBmYWtlIGZvY3VzIG9uIGVsZW1lbnQgd2l0aCBwYXNzZWQgaW5kZXggKi9cbiAgICBzZXRJdGVtQWN0aXZlKGluZGV4OiBudW1iZXIsIHVwZGF0ZU9ubHkgPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBpZiAodXBkYXRlT25seSkge1xuICAgICAgICAgICAgdGhpcy5fa2V5Ym9hcmRTdXBwb3J0U2VydmljZS5rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0oaW5kZXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fa2V5Ym9hcmRTdXBwb3J0U2VydmljZS5rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0oaW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5PblF1ZXJ5Q2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9mb2N1c0l0ZW1zLmNoYW5nZXMucGlwZShzdGFydFdpdGgoMCksIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3JlY2hlY2tMaW5rcygpO1xuICAgICAgICAgICAgdGhpcy5fbGlzdGVuT25JdGVtc0NsaWNrKCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyB1c2luZyBzZXRUaW1lb3V0IHRvIGF2b2lkIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3JcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUl0ZW1zUHJvcGVydGllcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25JdGVtc0NsaWNrKCk6IHZvaWQge1xuICAgICAgICAvKiogRmluaXNoIGFsbCB0aGUgc3RyZWFtcywgZnJvbSBiZWZvcmUgKi9cbiAgICAgICAgdGhpcy5fb25SZWZyZXNoJC5uZXh0KCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmtleWJvYXJkU3VwcG9ydCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqIE1lcmdlIHJlZnJlc2gvZGVzdHJveSBvYnNlcnZhYmxlcyAqL1xuICAgICAgICBjb25zdCBjb21wbGV0aW9uJCA9IG1lcmdlKHRoaXMuX29uUmVmcmVzaCQsIHRoaXMuX29uRGVzdHJveSQpO1xuICAgICAgICBjb25zdCBpbnRlcmFjdGlvbkNoYW5nZXNJbmRleGVzOiBPYnNlcnZhYmxlPHsgaW5kZXg6IG51bWJlcjsgdXBkYXRlT25seTogYm9vbGVhbiB9PltdID0gdGhpcy5fZm9jdXNJdGVtcy5tYXAoXG4gICAgICAgICAgICAoaXRlbSwgaW5kZXgpID0+XG4gICAgICAgICAgICAgICAgbWVyZ2UoXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uX2NsaWNrZWQkLnBpcGUobWFwKCgpID0+ICh7IGluZGV4LCB1cGRhdGVPbmx5OiBmYWxzZSB9KSkpLFxuICAgICAgICAgICAgICAgICAgICBpdGVtLl9mb2N1c2VkJC5waXBlKG1hcCgoeyBmb2N1c2VkV2l0aGluIH0pID0+ICh7IGluZGV4LCB1cGRhdGVPbmx5OiBmb2N1c2VkV2l0aGluIH0pKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIG1lcmdlKC4uLmludGVyYWN0aW9uQ2hhbmdlc0luZGV4ZXMpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwoY29tcGxldGlvbiQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoeyBpbmRleCwgdXBkYXRlT25seSB9KSA9PiB0aGlzLnNldEl0ZW1BY3RpdmUoaW5kZXgsIHVwZGF0ZU9ubHkpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgdXBkYXRlSXRlbXNQcm9wZXJ0aWVzKCk6IHZvaWQge1xuICAgICAgICBsZXQgY2xvc2VzdExpc3RIZWFkZXI6IExpc3RHcm91cEhlYWRlckRpcmVjdGl2ZSB8IG51bGwgPSBudWxsO1xuICAgICAgICB0aGlzLl9mb2N1c0l0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIExpc3RHcm91cEhlYWRlckRpcmVjdGl2ZSkge1xuICAgICAgICAgICAgICAgIGNsb3Nlc3RMaXN0SGVhZGVyID0gaXRlbTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSBpbnN0YW5jZW9mIExpc3RJdGVtQ29tcG9uZW50ICYmIGNsb3Nlc3RMaXN0SGVhZGVyKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5fcmVsYXRlZEdyb3VwSGVhZGVySWQgPSBjbG9zZXN0TGlzdEhlYWRlci5uYXRpdmVFbGVtZW50SWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpdGVtLnNldElzRmlyc3QoaW5kZXggPT09IDApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlY2hlY2tMaW5rcygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5saW5rKTtcbiAgICAgICAgdGhpcy5oYXNOYXZpZ2F0aW9uID0gaXRlbXMubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uTGlzdEZvY3VzRXNjYXBlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9rZXlib2FyZFN1cHBvcnRTZXJ2aWNlLmZvY3VzRXNjYXBlTGlzdFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGlyZWN0aW9uKSA9PiB0aGlzLmZvY3VzRXNjYXBlTGlzdC5lbWl0KGRpcmVjdGlvbikpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
|
|
234
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9saXN0L2xpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvbGlzdC9saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBRUgsc0JBQXNCLEVBQ3RCLG1CQUFtQixFQUV0QixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNwRyxPQUFPLEVBQ0gsc0JBQXNCLEVBQ3RCLCtCQUErQixFQUMvQixrQkFBa0IsRUFDckIsTUFBTSx1Q0FBdUMsQ0FBQztBQUUvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7QUFHdkU7OztHQUdHO0FBMkJILE1BQU0sT0FBTyxhQUFhO0lBK0V0QixjQUFjO0lBQ2Qs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QUFLO2dCQUtOLGVBQWU7c0JBRGQsTUFBTTtnQkFLUCxhQUFhO3NCQURaLFdBQVc7dUJBQUMsMkJBQTJCO2dCQUt4QyxLQUFLO3NCQURKLGVBQWU7dUJBQUMsbUJBQW1CO2dCQUtwQyxTQUFTO3NCQURSLGVBQWU7dUJBQUMsMkJBQTJCO2dCQUtwQyxXQUFXO3NCQURsQixlQUFlO3VCQUFDLGFBQWE7Z0JBd0M5QixjQUFjO3NCQURiLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaXN0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vbGlzdC1pdGVtL2xpc3QtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzdGFydFdpdGgsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgRm9jdXNFc2NhcGVEaXJlY3Rpb24sXG4gICAgS2V5Ym9hcmRTdXBwb3J0U2VydmljZSxcbiAgICBMSVNUX0lURU1fQ09NUE9ORU5ULFxuICAgIExpc3RJdGVtSW50ZXJmYWNlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IExpc3RHcm91cEhlYWRlckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9saXN0LWdyb3VwLWhlYWRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTGlzdEZvY3VzSXRlbSB9IGZyb20gJy4vbGlzdC1mb2N1cy1pdGVtLm1vZGVsJztcbmltcG9ydCB7IExpc3ROYXZpZ2F0aW9uSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vbGlzdC1uYXZpZ2F0aW9uLWl0ZW0vbGlzdC1uYXZpZ2F0aW9uLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgQ29udGVudERlbnNpdHlPYnNlcnZlcixcbiAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzLFxuICAgIENvbnRlbnREZW5zaXR5TW9kZVxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IExpc3RDb21wb25lbnRJbnRlcmZhY2UgfSBmcm9tICcuL2xpc3QtY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBGRF9MSVNUX0NPTVBPTkVOVCwgRkRfTElTVF9VTlJFQURfSU5ESUNBVE9SIH0gZnJvbSAnLi90b2tlbnMnO1xuaW1wb3J0IHsgTGlzdFVucmVhZEluZGljYXRvciB9IGZyb20gJy4vbGlzdC11bnJlYWQtaW5kaWNhdG9yLmludGVyZmFjZSc7XG5cbi8qKlxuICogVGhlIGRpcmVjdGl2ZSB0aGF0IHJlcHJlc2VudHMgYSBsaXN0LlxuICogSXQgaXMgdXNlZCB0byBkaXNwbGF5IGEgbGlzdCBvZiBpdGVtcyB3aXRoIHNpbXBsZSBpbmZvcm1hdGlvbiBzdWNoIGFzIHNjb3BlcywgbmFtZXMsIGV0Yy5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ1tmZC1saXN0XSwgW2ZkTGlzdF0nLFxuICAgIHRlbXBsYXRlVXJsOiBgLi9saXN0LmNvbXBvbmVudC5odG1sYCxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmQtbGlzdCcsXG4gICAgICAgIHJvbGU6ICdsaXN0J1xuICAgIH0sXG4gICAgc3R5bGVVcmxzOiBbJy4vbGlzdC5jb21wb25lbnQuc2NzcycsICcuLi8uLi8uLi8uLi9jZGsvc3JjL2xpYi91dGlscy9kcmFnLWFuZC1kcm9wL2RyYWctYW5kLWRyb3Auc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIEtleWJvYXJkU3VwcG9ydFNlcnZpY2UsXG4gICAgICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMoe1xuICAgICAgICAgICAgbW9kaWZpZXJzOiB7IFtDb250ZW50RGVuc2l0eU1vZGUuQ09NUEFDVF06ICdmZC1saXN0LS1jb21wYWN0JyB9XG4gICAgICAgIH0pLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRF9MSVNUX0NPTVBPTkVOVCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBMaXN0Q29tcG9uZW50XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0xJU1RfVU5SRUFEX0lORElDQVRPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBMaXN0Q29tcG9uZW50XG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIExpc3RDb21wb25lbnQgaW1wbGVtZW50cyBMaXN0Q29tcG9uZW50SW50ZXJmYWNlLCBMaXN0VW5yZWFkSW5kaWNhdG9yLCBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIFdoZXRoZXIgZHJvcGRvd24gbW9kZSBpcyBpbmNsdWRlZCB0byBjb21wb25lbnQsIHVzZWQgZm9yIFNlbGVjdCBhbmQgQ29tYm9ib3ggKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtbGlzdC0tZHJvcGRvd24nKVxuICAgIGRyb3Bkb3duTW9kZSA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgbXVsdGkgbW9kZSBpcyBpbmNsdWRlZCB0byBjb21wb25lbnQsIHVzZWQgZm9yIE11bHRpSW5wdXQgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtbGlzdC0tbXVsdGktaW5wdXQnKVxuICAgIG11bHRpSW5wdXRNb2RlID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciBsaXN0IGlzIHVzZWQgaW4gbW9iaWxlIG1vZGUqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC1saXN0LS1tb2JpbGUnKVxuICAgIG1vYmlsZU1vZGUgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIGxpc3QgY29tcG9uZW50IGNvbnRhaW5zIG1lc3NhZ2UgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtbGlzdC0taGFzLW1lc3NhZ2UnKVxuICAgIGhhc01lc3NhZ2UgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIGxpc3QgY29tcG9uZW50IGhhcyByZW1vdmVkIGJvcmRlcnMgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtbGlzdC0tbm8tYm9yZGVyJylcbiAgICBub0JvcmRlciA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgbGlzdCBjb21wb25lbnQgaGFzIG5hdmlnYXRpb24gaW5kaWNhdG9ycyAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC1saXN0LS1uYXZpZ2F0aW9uLWluZGljYXRpb24nKVxuICAgIG5hdmlnYXRpb25JbmRpY2F0b3IgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIGxpc3QgY29tcG9uZW50IGhhcyBjaGVja2JveGVzIG9yIHJhZGlvIGJ1dHRvbnMgaW5jbHVkZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtbGlzdC0tc2VsZWN0aW9uJylcbiAgICBzZWxlY3Rpb24gPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIGludGVybmFsIGtleWJvYXJkIHN1cHBvcnQgc2hvdWxkIGJlIGVuYWJsZWQuIEl0J3MgZW5hYmxlZCBieSBkZWZhdWx0ICovXG4gICAgQElucHV0KClcbiAgICBrZXlib2FyZFN1cHBvcnQgPSB0cnVlO1xuXG4gICAgLyoqIFdoZXRoZXIgbGlzdCBzaG91bGQgaGF2ZSBhIGJ5bGluZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC1saXN0LS1ieWxpbmUnKVxuICAgIGJ5bGluZSA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gZGlzcGxheSB1bnJlYWQgbm90aWZpY2F0aW9uIGluZGljYXRvci4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLWxpc3QtLXVucmVhZC1pbmRpY2F0b3InKVxuICAgIEBJbnB1dCgpXG4gICAgdW5yZWFkSW5kaWNhdG9yID0gZmFsc2U7XG5cbiAgICAvKiogRXZlbnQgdGhyb3duLCB3aGVuIGZvY3VzIGVzY2FwZXMgdGhlIGxpc3QgKi9cbiAgICBAT3V0cHV0KClcbiAgICBmb2N1c0VzY2FwZUxpc3QgPSBuZXcgRXZlbnRFbWl0dGVyPEZvY3VzRXNjYXBlRGlyZWN0aW9uPigpO1xuXG4gICAgLyoqIFdoZXRoZXIgbGlzdCBjb21wb25lbnQgaW5jbHVkZXMgbGlua3MgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLWxpc3QtLW5hdmlnYXRpb24nKVxuICAgIGhhc05hdmlnYXRpb24gPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihMSVNUX0lURU1fQ09NUE9ORU5UKVxuICAgIGl0ZW1zOiBRdWVyeUxpc3Q8TGlzdEl0ZW1JbnRlcmZhY2U+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKExpc3ROYXZpZ2F0aW9uSXRlbUNvbXBvbmVudClcbiAgICBfbmF2SXRlbXM6IFF1ZXJ5TGlzdDxMaXN0TmF2aWdhdGlvbkl0ZW1Db21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKExpc3RGb2N1c0l0ZW0pXG4gICAgcHJpdmF0ZSBfZm9jdXNJdGVtczogUXVlcnlMaXN0PExpc3RGb2N1c0l0ZW0+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEFuIFJ4SlMgU3ViamVjdCB0aGF0IHdpbGwga2lsbCB0aGUgZGF0YSBzdHJlYW0gdXBvbiBxdWVyeUxpc3QgY2hhbmdlcyAoZm9yIHVuc3Vic2NyaWJpbmcpICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uUmVmcmVzaCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEFuIFJ4SlMgU3ViamVjdCB0aGF0IHdpbGwga2lsbCB0aGUgZGF0YSBzdHJlYW0gdXBvbiBjb21wb25lbnTigJlzIGRlc3RydWN0aW9uIChmb3IgdW5zdWJzY3JpYmluZykgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9rZXlib2FyZFN1cHBvcnRTZXJ2aWNlOiBLZXlib2FyZFN1cHBvcnRTZXJ2aWNlPExpc3RGb2N1c0l0ZW0+LFxuICAgICAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF9jb250ZW50RGVuc2l0eU9ic2VydmVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyXG4gICAgKSB7XG4gICAgICAgIF9jb250ZW50RGVuc2l0eU9ic2VydmVyLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uTGlzdEZvY3VzRXNjYXBlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2tleWJvYXJkU3VwcG9ydFNlcnZpY2Uuc2V0S2V5Ym9hcmRTZXJ2aWNlKHRoaXMuX2ZvY3VzSXRlbXMsIGZhbHNlLCBmYWxzZSk7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uUXVlcnlDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAga2V5RG93bkhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMua2V5Ym9hcmRTdXBwb3J0KSB7XG4gICAgICAgICAgICB0aGlzLl9rZXlib2FyZFN1cHBvcnRTZXJ2aWNlLm9uS2V5RG93bihldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogU2V0IGZha2UgZm9jdXMgb24gZWxlbWVudCB3aXRoIHBhc3NlZCBpbmRleCAqL1xuICAgIHNldEl0ZW1BY3RpdmUoaW5kZXg6IG51bWJlciwgdXBkYXRlT25seSA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmICh1cGRhdGVPbmx5KSB7XG4gICAgICAgICAgICB0aGlzLl9rZXlib2FyZFN1cHBvcnRTZXJ2aWNlLmtleU1hbmFnZXIudXBkYXRlQWN0aXZlSXRlbShpbmRleCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9rZXlib2FyZFN1cHBvcnRTZXJ2aWNlLmtleU1hbmFnZXIuc2V0QWN0aXZlSXRlbShpbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uUXVlcnlDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ZvY3VzSXRlbXMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aCgwKSwgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcmVjaGVja0xpbmtzKCk7XG4gICAgICAgICAgICB0aGlzLl9saXN0ZW5Pbkl0ZW1zQ2xpY2soKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHVzaW5nIHNldFRpbWVvdXQgdG8gYXZvaWQgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlSXRlbXNQcm9wZXJ0aWVzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5Pbkl0ZW1zQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIC8qKiBGaW5pc2ggYWxsIHRoZSBzdHJlYW1zLCBmcm9tIGJlZm9yZSAqL1xuICAgICAgICB0aGlzLl9vblJlZnJlc2gkLm5leHQoKTtcblxuICAgICAgICBpZiAoIXRoaXMua2V5Ym9hcmRTdXBwb3J0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvKiogTWVyZ2UgcmVmcmVzaC9kZXN0cm95IG9ic2VydmFibGVzICovXG4gICAgICAgIGNvbnN0IGNvbXBsZXRpb24kID0gbWVyZ2UodGhpcy5fb25SZWZyZXNoJCwgdGhpcy5fb25EZXN0cm95JCk7XG4gICAgICAgIGNvbnN0IGludGVyYWN0aW9uQ2hhbmdlc0luZGV4ZXM6IE9ic2VydmFibGU8eyBpbmRleDogbnVtYmVyOyB1cGRhdGVPbmx5OiBib29sZWFuIH0+W10gPSB0aGlzLl9mb2N1c0l0ZW1zLm1hcChcbiAgICAgICAgICAgIChpdGVtLCBpbmRleCkgPT5cbiAgICAgICAgICAgICAgICBtZXJnZShcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5fY2xpY2tlZCQucGlwZShtYXAoKCkgPT4gKHsgaW5kZXgsIHVwZGF0ZU9ubHk6IGZhbHNlIH0pKSksXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uX2ZvY3VzZWQkLnBpcGUobWFwKCh7IGZvY3VzZWRXaXRoaW4gfSkgPT4gKHsgaW5kZXgsIHVwZGF0ZU9ubHk6IGZvY3VzZWRXaXRoaW4gfSkpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgbWVyZ2UoLi4uaW50ZXJhY3Rpb25DaGFuZ2VzSW5kZXhlcylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbChjb21wbGV0aW9uJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh7IGluZGV4LCB1cGRhdGVPbmx5IH0pID0+IHRoaXMuc2V0SXRlbUFjdGl2ZShpbmRleCwgdXBkYXRlT25seSkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSB1cGRhdGVJdGVtc1Byb3BlcnRpZXMoKTogdm9pZCB7XG4gICAgICAgIGxldCBjbG9zZXN0TGlzdEhlYWRlcjogTGlzdEdyb3VwSGVhZGVyRGlyZWN0aXZlIHwgbnVsbCA9IG51bGw7XG4gICAgICAgIHRoaXMuX2ZvY3VzSXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgTGlzdEdyb3VwSGVhZGVyRGlyZWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgY2xvc2VzdExpc3RIZWFkZXIgPSBpdGVtO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtIGluc3RhbmNlb2YgTGlzdEl0ZW1Db21wb25lbnQgJiYgY2xvc2VzdExpc3RIZWFkZXIpIHtcbiAgICAgICAgICAgICAgICBpdGVtLl9yZWxhdGVkR3JvdXBIZWFkZXJJZCA9IGNsb3Nlc3RMaXN0SGVhZGVyLm5hdGl2ZUVsZW1lbnRJZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGl0ZW0uc2V0SXNGaXJzdChpbmRleCA9PT0gMCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVjaGVja0xpbmtzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmxpbmspO1xuICAgICAgICB0aGlzLmhhc05hdmlnYXRpb24gPSBpdGVtcy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25MaXN0Rm9jdXNFc2NhcGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2tleWJvYXJkU3VwcG9ydFNlcnZpY2UuZm9jdXNFc2NhcGVMaXN0XG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChkaXJlY3Rpb24pID0+IHRoaXMuZm9jdXNFc2NhcGVMaXN0LmVtaXQoZGlyZWN0aW9uKSk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIl19
|
package/esm2020/list/tokens.mjs
CHANGED
|
@@ -3,4 +3,4 @@ export const FD_LIST_MESSAGE_DIRECTIVE = new InjectionToken('FdListMessageDirect
|
|
|
3
3
|
export const FD_LIST_LINK_DIRECTIVE = new InjectionToken('FdListLinkDirective');
|
|
4
4
|
export const FD_LIST_COMPONENT = new InjectionToken('ListComponent');
|
|
5
5
|
export const FD_LIST_UNREAD_INDICATOR = new InjectionToken('ListUnreadIndicator');
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvbGlzdC90b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBQ3RGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDaEYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQXlCLGVBQWUsQ0FBQyxDQUFDO0FBRTdGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUF5QixxQkFBcUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExpc3RDb21wb25lbnRJbnRlcmZhY2UgfSBmcm9tICcuL2xpc3QtY29tcG9uZW50LmludGVyZmFjZSc7XG5cbmV4cG9ydCBjb25zdCBGRF9MSVNUX01FU1NBR0VfRElSRUNUSVZFID0gbmV3IEluamVjdGlvblRva2VuKCdGZExpc3RNZXNzYWdlRGlyZWN0aXZlJyk7XG5leHBvcnQgY29uc3QgRkRfTElTVF9MSU5LX0RJUkVDVElWRSA9IG5ldyBJbmplY3Rpb25Ub2tlbignRmRMaXN0TGlua0RpcmVjdGl2ZScpO1xuZXhwb3J0IGNvbnN0IEZEX0xJU1RfQ09NUE9ORU5UID0gbmV3IEluamVjdGlvblRva2VuPExpc3RDb21wb25lbnRJbnRlcmZhY2U+KCdMaXN0Q29tcG9uZW50Jyk7XG5cbmV4cG9ydCBjb25zdCBGRF9MSVNUX1VOUkVBRF9JTkRJQ0FUT1IgPSBuZXcgSW5qZWN0aW9uVG9rZW48TGlzdENvbXBvbmVudEludGVyZmFjZT4oJ0xpc3RVbnJlYWRJbmRpY2F0b3InKTtcbiJdfQ==
|
|
@@ -276,7 +276,7 @@ export class BaseMultiCombobox {
|
|
|
276
276
|
}
|
|
277
277
|
/** @hidden */
|
|
278
278
|
_focusToSearchField() {
|
|
279
|
-
this.searchInputElement?.
|
|
279
|
+
this.searchInputElement?.nativeElement.focus();
|
|
280
280
|
}
|
|
281
281
|
/** @hidden */
|
|
282
282
|
_mapAndUpdateModel() {
|
|
@@ -385,4 +385,4 @@ BaseMultiCombobox.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", vers
|
|
|
385
385
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: BaseMultiCombobox, decorators: [{
|
|
386
386
|
type: Directive
|
|
387
387
|
}] });
|
|
388
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1tdWx0aS1jb21ib2JveC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL211bHRpLWNvbWJvYm94L2Jhc2UtbXVsdGktY29tYm9ib3guY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxPQUFPLEVBQ1AsVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBQ04sVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBQ0wsR0FBRyxFQUNILFFBQVEsRUFDWCxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFnQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLG1CQUFtQixFQUFjLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckcsT0FBTyxFQUNILFVBQVUsRUFDVixZQUFZLEVBRVosWUFBWSxFQUNaLHNCQUFzQixFQUV6QixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFDSCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVixVQUFVLEVBQ1YsUUFBUSxFQUVSLGFBQWEsRUFDaEIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUUvRSxPQUFPLEtBQUssTUFBTSxpQkFBaUIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLeEYsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxpQ0FBaUMsQ0FB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QUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ3BFLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVHLElBQUksZUFBZSxFQUFFO2dCQUNqQixVQUFVLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUM7YUFDbEQ7WUFDRCxPQUFPLFVBQVUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjO0lBQ0osb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBRXpDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRXhCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ2pDO1FBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7UUFFakcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM3QixDQUFDOzs4R0F6ZmlCLGlCQUFpQjtrR0FBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBRHRDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEJBQ0tTUEFDRSxcbiAgICBDT05UUk9MLFxuICAgIERPV05fQVJST1csXG4gICAgRU5URVIsXG4gICAgRVNDQVBFLFxuICAgIExFRlRfQVJST1csXG4gICAgUklHSFRfQVJST1csXG4gICAgU0hJRlQsXG4gICAgVEFCLFxuICAgIFVQX0FSUk9XXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZURpcmVjdGl2ZSwgTWF0Y2hpbmdCeSwgTWF0Y2hpbmdTdHJhdGVneSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2RhdGEtc291cmNlJztcbmltcG9ydCB7XG4gICAgQ3ZhQ29udHJvbCxcbiAgICBDdmFEaXJlY3RpdmUsXG4gICAgRm9ybVN0YXRlcyxcbiAgICBpc09wdGlvbkl0ZW0sXG4gICAgaXNTZWxlY3RhYmxlT3B0aW9uSXRlbSxcbiAgICBTZWxlY3RhYmxlT3B0aW9uSXRlbVxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIGNvZXJjZUFycmF5U2FmZSxcbiAgICBEZXN0cm95ZWRTZXJ2aWNlLFxuICAgIGlzRnVuY3Rpb24sXG4gICAgaXNKc09iamVjdCxcbiAgICBpc1N0cmluZyxcbiAgICBOdWxsYWJsZSxcbiAgICBSYW5nZVNlbGVjdG9yXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IEZvcm1JdGVtQ29udHJvbCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9mb3JtJztcbmltcG9ydCBlcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBza2lwLCBzdGFydFdpdGgsIFN1YnNjcmlwdGlvbiwgdGFrZVVudGlsLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBGZE11bHRpQ29tYm9ib3hBY2NlcHRhYmxlRGF0YVNvdXJjZSxcbiAgICBGZE11bHRpQ29tYm9Cb3hEYXRhU291cmNlXG59IGZyb20gJy4vZGF0YS1zb3VyY2UvbXVsdGktY29tYm9ib3gtZGF0YS1zb3VyY2UnO1xuaW1wb3J0IHsgZGlzcGxheVZhbHVlLCBmbGF0dGVuR3JvdXBzLCBsb29rdXBWYWx1ZSwgb2JqZWN0R2V0IH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IE11bHRpQ29tYm9ib3hTZWxlY3Rpb25DaGFuZ2VFdmVudCB9IGZyb20gJy4vbW9kZWxzL3NlbGVjdGlvbi1jaGFuZ2UuZXZlbnQnO1xuaW1wb3J0IHsgTXVsdGlDb21ib2JveENvbmZpZyB9IGZyb20gJy4vbXVsdGktY29tYm9ib3gtY29uZmlnJztcbmltcG9ydCB7IEZEX01BUF9MSU1JVCB9IGZyb20gJy4vbXVsdGktY29tYm9ib3guY29tcG9uZW50JztcblxuZXhwb3J0IHR5cGUgVGV4dEFsaWdubWVudCA9ICdsZWZ0JyB8ICdyaWdodCc7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VNdWx0aUNvbWJvYm94PFQgPSBhbnk+IHtcbiAgICAvLyBJbmplY3Rpb24gc2VjdGlvblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgY3ZhQ29udHJvbDogQ3ZhQ29udHJvbDxUPiA9IGluamVjdChDdmFDb250cm9sKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgZGF0YVNvdXJjZURpcmVjdGl2ZTogRGF0YVNvdXJjZURpcmVjdGl2ZTxULCBGZE11bHRpQ29tYm9Cb3hEYXRhU291cmNlPFQ+PiA9IGluamVjdChEYXRhU291cmNlRGlyZWN0aXZlKTtcblxuICAgIC8qKiBDb250cm9sIFZhbHVlIEFjY2Vzc29yIGRpcmVjdGl2ZSBmb3IgZm9ybXMgc3VwcG9ydC4gKi9cbiAgICByZWFkb25seSBfY3ZhID0gaW5qZWN0KEN2YURpcmVjdGl2ZTxUPiwge1xuICAgICAgICBzZWxmOiB0cnVlXG4gICAgfSk7XG5cbiAgICAvKiogTXVsdGkgY29tYm9ib3ggY29uZmlnLiAqL1xuICAgIHJlYWRvbmx5IF9tdWx0aUNvbWJvYm94Q29uZmlnID0gaW5qZWN0KE11bHRpQ29tYm9ib3hDb25maWcsIHtcbiAgICAgICAgb3B0aW9uYWw6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKiBDb250ZW50IERlbnNpdHkgT2JzZXJ2ZXIgKi9cbiAgICByZWFkb25seSBjb250ZW50RGVuc2l0eU9ic2VydmVyID0gaW5qZWN0KENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIpO1xuXG4gICAgLyoqIEBIaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2VsbVJlZiA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfY2QgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX21hcExpbWl0ID0gaW5qZWN0KEZEX01BUF9MSU1JVCk7XG5cbiAgICAvKiogQEhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfZGVzdHJveWVkJCA9IGluamVjdChEZXN0cm95ZWRTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBMaXN0IG9mIHNlbGVjdGVkIHN1Z2dlc3Rpb25zXG4gICAgICovXG4gICAgX3NlbGVjdGVkU3VnZ2VzdGlvbnM6IFNlbGVjdGFibGVPcHRpb25JdGVtPFQ+W10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBMaXN0IG9mIG1hdGNoZWQgc3VnZ2VzdGlvbnNcbiAgICAgKi9cbiAgICBfc3VnZ2VzdGlvbnM6IFNlbGVjdGFibGVPcHRpb25JdGVtW107XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogR3JvdXBlZCBzdWdnZXN0aW9ucyBtYXBwZWQgdG8gYXJyYXkuXG4gICAgICovXG4gICAgX2ZsYXRTdWdnZXN0aW9uczogU2VsZWN0YWJsZU9wdGlvbkl0ZW1bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZnVsbEZsYXRTdWdnZXN0aW9uczogU2VsZWN0YWJsZU9wdGlvbkl0ZW1bXSA9IFtdO1xuXG4gICAgYWJzdHJhY3Qgc2VsZWN0ZWRJdGVtczogVFtdO1xuICAgIGFic3RyYWN0IGdyb3VwOiBib29sZWFuO1xuICAgIGFic3RyYWN0IGdyb3VwS2V5OiBzdHJpbmc7XG4gICAgYWJzdHJhY3QgZGlzcGxheUtleTogc3RyaW5nO1xuICAgIGFic3RyYWN0IHNlY29uZGFyeUtleTogc3RyaW5nO1xuICAgIGFic3RyYWN0IHNob3dTZWNvbmRhcnlUZXh0OiBib29sZWFuO1xuICAgIGFic3RyYWN0IGxvb2t1cEtleTogc3RyaW5nO1xuICAgIGFic3RyYWN0IGludmFsaWRFbnRyeU1lc3NhZ2U6IHN0cmluZztcbiAgICBhYnN0cmFjdCBpbnZhbGlkRW50cnlEaXNwbGF5VGltZTogbnVtYmVyO1xuICAgIGFic3RyYWN0IGxpbWl0bGVzczogYm9vbGVhbjtcbiAgICBhYnN0cmFjdCBpc0dyb3VwOiBib29sZWFuO1xuICAgIGFic3RyYWN0IGlucHV0VGV4dDogc3RyaW5nO1xuXG4gICAgYWJzdHJhY3Qgc2VhcmNoSW5wdXRFbGVtZW50OiBOdWxsYWJsZTxGb3JtSXRlbUNvbnRyb2w+O1xuXG4gICAgYWJzdHJhY3Qgc2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TXVsdGlDb21ib2JveFNlbGVjdGlvbkNoYW5nZUV2ZW50PjtcbiAgICBhYnN0cmFjdCBkYXRhUmVjZWl2ZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPjtcbiAgICBhYnN0cmFjdCBkYXRhUmVxdWVzdGVkOiBFdmVudEVtaXR0ZXI8dm9pZD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNlbGVjdGVkU2hvd24kID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZGF0YVNvdXJjZTogRmRNdWx0aUNvbWJvYm94QWNjZXB0YWJsZURhdGFTb3VyY2U8VD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfaW5wdXRUZXh0VmFsdWU6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9wcmV2aW91c0lucHV0VGV4dDogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX21hdGNoaW5nU3RyYXRlZ3k6IE1hdGNoaW5nU3RyYXRlZ3kgPVxuICAgICAgICB0aGlzLl9tdWx0aUNvbWJvYm94Q29uZmlnPy5tYXRjaGluZ1N0cmF0ZWd5ID8/IE1hdGNoaW5nU3RyYXRlZ3kuQ09OVEFJTlM7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZHNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2VsZW1lbnQ6IEhUTUxFbGVtZW50ID0gdGhpcy5fZWxtUmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogS2V5cywgdGhhdCB3b24ndCB0cmlnZ2VyIHRoZSBwb3BvdmVyJ3Mgb3BlbiBzdGF0ZSwgd2hlbiBkaXNwYXRjaGVkIG9uIHNlYXJjaCBpbnB1dC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX25vbk9wZW5pbmdLZXlzOiBudW1iZXJbXSA9IFtcbiAgICAgICAgQkFDS1NQQUNFLFxuICAgICAgICBFU0NBUEUsXG4gICAgICAgIEVOVEVSLFxuICAgICAgICBDT05UUk9MLFxuICAgICAgICBUQUIsXG4gICAgICAgIFNISUZULFxuICAgICAgICBVUF9BUlJPVyxcbiAgICAgICAgUklHSFRfQVJST1csXG4gICAgICAgIERPV05fQVJST1csXG4gICAgICAgIExFRlRfQVJST1dcbiAgICBdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX3RpbWVyU3ViJDogU3Vic2NyaXB0aW9uO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX3ByZXZpb3VzU3RhdGU/OiBGb3JtU3RhdGVzO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX3ByZXZpb3VzU3RhdGVNZXNzYWdlOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3JhbmdlU2VsZWN0b3IgPSBuZXcgUmFuZ2VTZWxlY3RvcigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kYXRhU291cmNlQ2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2Rpc3BsYXlGbiA9ICh2YWx1ZTogYW55KTogc3RyaW5nID0+IGRpc3BsYXlWYWx1ZSh2YWx1ZSwgdGhpcy5kaXNwbGF5S2V5KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9zZWNvbmRhcnlGbiA9ICh2YWx1ZTogYW55KTogc3RyaW5nID0+IHtcbiAgICAgICAgaWYgKGlzT3B0aW9uSXRlbSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5zZWNvbmRhcnlUZXh0ID8/ICcnO1xuICAgICAgICB9IGVsc2UgaWYgKGlzSnNPYmplY3QodmFsdWUpICYmIHRoaXMuc2Vjb25kYXJ5S2V5KSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50SXRlbSA9IG9iamVjdEdldCh2YWx1ZSwgdGhpcy5zZWNvbmRhcnlLZXkpO1xuXG4gICAgICAgICAgICByZXR1cm4gaXNGdW5jdGlvbihjdXJyZW50SXRlbSkgPyBjdXJyZW50SXRlbSgpIDogY3VycmVudEl0ZW07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gY29lcmNlQXJyYXlTYWZlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5fY3ZhLndyaXRlVmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgdGhpcy5fc2V0U2VsZWN0ZWRTdWdnZXN0aW9ucygpO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIHRvIGNoYW5nZSB0aGUgdmFsdWUgb2YgYSBjb250cm9sLlxuICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdG8gYmUgYXBwbGllZFxuICAgICAqIEBwYXJhbSBlbWl0T25DaGFuZ2Ugd2hldGhlciB0byBlbWl0IFwib25DaGFuZ2VcIiBldmVudC5cbiAgICAgKiBTaG91bGQgYmUgXCJmYWxzZVwiLCBpZiB0aGUgY2hhbmdlIGlzIG1hZGUgcHJvZ3JhbW1hdGljYWxseSAoaW50ZXJuYWxseSkgYnkgdGhlIGNvbnRyb2wsIFwidHJ1ZVwiIG90aGVyd2lzZVxuICAgICAqL1xuICAgIHNldFZhbHVlKHZhbHVlOiBhbnksIGVtaXRPbkNoYW5nZSA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gY29lcmNlQXJyYXlTYWZlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5fY3ZhLnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtcywgZW1pdE9uQ2hhbmdlKTtcbiAgICAgICAgdGhpcy5fc2V0U2VsZWN0ZWRTdWdnZXN0aW9ucygpO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTWV0aG9kIHRvIGVtaXQgY2hhbmdlIGV2ZW50XG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9lbWl0Q2hhbmdlRXZlbnQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IE11bHRpQ29tYm9ib3hTZWxlY3Rpb25DaGFuZ2VFdmVudCh0aGlzLCB0aGlzLnNlbGVjdGVkSXRlbXMpO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9zZXRTZWxlY3RlZFN1Z2dlc3Rpb25zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3RlZFN1Z2dlc3Rpb25zID0gW107XG5cbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkSXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLnNlbGVjdGVkSXRlbXNbaV07XG4gICAgICAgICAgICBjb25zdCBpZHggPSB0aGlzLl9mdWxsRmxhdFN1Z2dlc3Rpb25zLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAoaXRlbSkgPT4gaXRlbS5sYWJlbCA9PT0gc2VsZWN0ZWRJdGVtIHx8IGl0ZW0udmFsdWUgPT09IHNlbGVjdGVkSXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChpZHggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRTdWdnZXN0aW9ucy5wdXNoKHRoaXMuX2Z1bGxGbGF0U3VnZ2VzdGlvbnNbaWR4XSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZnVsbEZsYXRTdWdnZXN0aW9uc1tpZHhdLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IG9yaWdpbmFsIGRhdGEgdG8gU2VsZWN0YWJsZU9wdGlvbkl0ZW1zIEludGVyZmFjZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2NvbnZlcnRUb09wdGlvbkl0ZW1zKGl0ZW1zOiBhbnlbXSk6IFNlbGVjdGFibGVPcHRpb25JdGVtPFQ+W10ge1xuICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbMF07XG5cbiAgICAgICAgY29uc3QgZWxlbWVudFR5cGVJc09wdGlvbkl0ZW0gPSBpc1NlbGVjdGFibGVPcHRpb25JdGVtKGl0ZW0pO1xuICAgICAgICBpZiAoZWxlbWVudFR5cGVJc09wdGlvbkl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtcyBhcyBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZWxlbWVudFR5cGVJc09iamVjdCA9IGlzSnNPYmplY3QoaXRlbSk7XG4gICAgICAgIGlmIChlbGVtZW50VHlwZUlzT2JqZWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udmVydE9iamVjdHNUb09wdGlvbkl0ZW1zKGl0ZW1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVsZW1lbnRUeXBlSXNTdHJpbmcgPSBpc1N0cmluZyhpdGVtKTtcbiAgICAgICAgaWYgKGVsZW1lbnRUeXBlSXNTdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0UHJpbWl0aXZlVG9PcHRpb25JdGVtcyhpdGVtcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBkYXRhIHRvIFNlbGVjdGFibGVPcHRpb25JdGVtcyBJbnRlcmZhY2VcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9jb252ZXJ0T2JqZWN0c1RvT3B0aW9uSXRlbXMoaXRlbXM6IFRbXSk6IFNlbGVjdGFibGVPcHRpb25JdGVtPFQ+W10ge1xuICAgICAgICBpZiAodGhpcy5pc0dyb3VwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udmVydE9iamVjdHNUb0dyb3VwT3B0aW9uSXRlbXMoaXRlbXMpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2hvd1NlY29uZGFyeVRleHQgJiYgdGhpcy5zZWNvbmRhcnlLZXkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0T2JqZWN0c1RvU2Vjb25kYXJ5T3B0aW9uSXRlbXMoaXRlbXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRPYmplY3RzVG9EZWZhdWx0T3B0aW9uSXRlbXMoaXRlbXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBvYmplY3RbXSBkYXRhIHRvIEdyb3VwIE9wdGlvbkl0ZW1zIEludGVyZmFjZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2NvbnZlcnRPYmplY3RzVG9Hcm91cE9wdGlvbkl0ZW1zPEsgZXh0ZW5kcyBUPihpdGVtczogS1tdKTogU2VsZWN0YWJsZU9wdGlvbkl0ZW08VD5bXSB7XG4gICAgICAgIGNvbnN0IGdyb3VwOiBSZWNvcmQ8c3RyaW5nLCBLW10+ID0ge307XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zW2ldO1xuICAgICAgICAgICAgY29uc3Qga2V5VmFsdWUgPSBpdGVtW3RoaXMuZ3JvdXBLZXldO1xuICAgICAgICAgICAgaWYgKCFrZXlWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWdyb3VwW2tleVZhbHVlXSkge1xuICAgICAgICAgICAgICAgIGdyb3VwW2tleVZhbHVlXSA9IFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBncm91cFtrZXlWYWx1ZV0ucHVzaChpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhncm91cCkubWFwKChrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdEl0ZW06IFNlbGVjdGFibGVPcHRpb25JdGVtID0ge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBrZXksXG4gICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgaXNHcm91cDogdHJ1ZVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgY3VycmVudEdyb3VwID0gZ3JvdXBba2V5XTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuc2hvd1NlY29uZGFyeVRleHQgJiYgdGhpcy5zZWNvbmRhcnlLZXkpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RJdGVtLmNoaWxkcmVuID0gdGhpcy5fY29udmVydE9iamVjdHNUb1NlY29uZGFyeU9wdGlvbkl0ZW1zKGN1cnJlbnRHcm91cCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNlbGVjdEl0ZW0uY2hpbGRyZW4gPSB0aGlzLl9jb252ZXJ0T2JqZWN0c1RvRGVmYXVsdE9wdGlvbkl0ZW1zKGN1cnJlbnRHcm91cCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzZWxlY3RJdGVtO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IFRbXSBkYXRhIHRvIFNlY29uZGFyeSBTZWxlY3RhYmxlT3B0aW9uSXRlbXM8VD4gSW50ZXJmYWNlXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfY29udmVydE9iamVjdHNUb1NlY29uZGFyeU9wdGlvbkl0ZW1zPEsgZXh0ZW5kcyBUPihpdGVtczogS1tdKTogU2VsZWN0YWJsZU9wdGlvbkl0ZW08VD5bXSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEl0ZW1zOiBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBpdGVtc1tpXTtcbiAgICAgICAgICAgIHNlbGVjdEl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgIGxhYmVsOiBkaXNwbGF5VmFsdWUodmFsdWUsIHRoaXMuZGlzcGxheUtleSksXG4gICAgICAgICAgICAgICAgaWQ6IGxvb2t1cFZhbHVlKHZhbHVlLCB0aGlzLmxvb2t1cEtleSksXG4gICAgICAgICAgICAgICAgc2Vjb25kYXJ5VGV4dDogb2JqZWN0R2V0KHZhbHVlLCB0aGlzLnNlY29uZGFyeUtleSksXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRJdGVtcz8uaW5jbHVkZXModmFsdWUpIHx8IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RJdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IFByaW1pdGl2ZSBkYXRhKEJvb2xlYW4sIFN0cmluZywgTnVtYmVyKSB0byBTZWxlY3RhYmxlT3B0aW9uSXRlbXMgSW50ZXJmYWNlXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfY29udmVydFByaW1pdGl2ZVRvT3B0aW9uSXRlbXMoaXRlbXM6IGFueVtdKTogU2VsZWN0YWJsZU9wdGlvbkl0ZW08VD5bXSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEl0ZW1zOiBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gaXRlbXNbaV07XG4gICAgICAgICAgICBzZWxlY3RJdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdmFsdWUsXG4gICAgICAgICAgICAgICAgaWQ6IGxvb2t1cFZhbHVlKHZhbHVlLCB0aGlzLmxvb2t1cEtleSksXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRJdGVtcz8uaW5jbHVkZXModmFsdWUpIHx8IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RJdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IFRbXSB0byBTZWxlY3RhYmxlT3B0aW9uSXRlbXM8VD4gSW50ZXJmYWNlIChEZWZhdWx0KVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2NvbnZlcnRPYmplY3RzVG9EZWZhdWx0T3B0aW9uSXRlbXMoaXRlbXM6IGFueVtdKTogU2VsZWN0YWJsZU9wdGlvbkl0ZW08VD5bXSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEl0ZW1zOiBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBpdGVtc1tpXTtcbiAgICAgICAgICAgIHNlbGVjdEl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgIGxhYmVsOiBkaXNwbGF5VmFsdWUodmFsdWUsIHRoaXMuZGlzcGxheUtleSksXG4gICAgICAgICAgICAgICAgaWQ6IGxvb2t1cFZhbHVlKHZhbHVlLCB0aGlzLmxvb2t1cEtleSksXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRJdGVtcz8uaW5jbHVkZXModmFsdWUpIHx8IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RJdGVtcztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfc2V0SW52YWxpZEVudHJ5KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fcHJldmlvdXNTdGF0ZSB8fCB0aGlzLl9wcmV2aW91c1N0YXRlTWVzc2FnZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcHJldmlvdXNTdGF0ZSA9IHRoaXMuX2N2YS5zdGF0ZTtcbiAgICAgICAgdGhpcy5fY3ZhLnN0YXRlID0gJ2Vycm9yJztcblxuICAgICAgICB0aGlzLl9wcmV2aW91c1N0YXRlTWVzc2FnZSA9IHRoaXMuX2N2YS5zdGF0ZU1lc3NhZ2U7XG4gICAgICAgIHRoaXMuX2N2YS5zdGF0ZU1lc3NhZ2UgPSB0aGlzLmludmFsaWRFbnRyeU1lc3NhZ2U7XG5cbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX3Vuc2V0SW52YWxpZEVudHJ5KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jdmEuc3RhdGUgPSB0aGlzLl9wcmV2aW91c1N0YXRlO1xuICAgICAgICB0aGlzLl9wcmV2aW91c1N0YXRlID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIHRoaXMuX2N2YS5zdGF0ZU1lc3NhZ2UgPSB0aGlzLl9wcmV2aW91c1N0YXRlTWVzc2FnZTtcbiAgICAgICAgdGhpcy5fcHJldmlvdXNTdGF0ZU1lc3NhZ2UgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2ZvY3VzVG9TZWFyY2hGaWVsZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dEVsZW1lbnQ/LmVsbVJlZj8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9tYXBBbmRVcGRhdGVNb2RlbCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IHRoaXMuX3NlbGVjdGVkU3VnZ2VzdGlvbnMubWFwKCh7IHZhbHVlIH0pID0+IHZhbHVlKTtcblxuICAgICAgICBjb25zdCBzaG91bGRFbWl0Q2hhbmdlRXZlbnQgPSAhZXF1YWwodGhpcy5zZWxlY3RlZEl0ZW1zLCBzZWxlY3RlZEl0ZW1zKTtcblxuICAgICAgICBpZiAoIXNob3VsZEVtaXRDaGFuZ2VFdmVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKHNlbGVjdGVkSXRlbXMpO1xuXG4gICAgICAgIHRoaXMuX2N2YS5vbkNoYW5nZShzZWxlY3RlZEl0ZW1zKTtcblxuICAgICAgICB0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogUHJlcGFyZXMgdGhlIGRhdGEgc3RyZWFtIGFuZCBzdWJzY3JpYmVzIHRvIGl0LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfb3BlbkRhdGFTdHJlYW0oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRhdGFTb3VyY2VQcm92aWRlciA9IHRoaXMuZGF0YVNvdXJjZURpcmVjdGl2ZS5kYXRhU291cmNlUHJvdmlkZXI7XG5cbiAgICAgICAgaWYgKCFkYXRhU291cmNlUHJvdmlkZXIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgW2RhdGFTb3VyY2VdIHNvdXJjZSBkaWQgbm90IG1hdGNoIGFuIGFycmF5LCBPYnNlcnZhYmxlLCBvciBEYXRhU291cmNlYCk7XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhU291cmNlUHJvdmlkZXIubGltaXRsZXNzID0gdGhpcy5saW1pdGxlc3M7XG5cbiAgICAgICAgZGF0YVNvdXJjZVByb3ZpZGVyLmRhdGFQcm92aWRlci5zZXRMb29rdXBLZXkodGhpcy5sb29rdXBLZXkpO1xuICAgICAgICBjb25zdCBtYXRjaGluZ0J5OiBNYXRjaGluZ0J5ID0ge1xuICAgICAgICAgICAgZmlyc3RCeTogdGhpcy5fZGlzcGxheUZuXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMuc2Vjb25kYXJ5S2V5KSB7XG4gICAgICAgICAgICBtYXRjaGluZ0J5LnNlY29uZGFyeUJ5ID0gdGhpcy5fc2Vjb25kYXJ5Rm47XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhU291cmNlUHJvdmlkZXIuZGF0YVByb3ZpZGVyLnNldE1hdGNoaW5nQnkobWF0Y2hpbmdCeSk7XG4gICAgICAgIGRhdGFTb3VyY2VQcm92aWRlci5kYXRhUHJvdmlkZXIuc2V0TWF0Y2hpbmdTdHJhdGVneSh0aGlzLl9tYXRjaGluZ1N0cmF0ZWd5KTtcblxuICAgICAgICAvLyBpbml0aWFsIGRhdGEgZmV0Y2hcbiAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcCgpO1xuICAgICAgICBtYXAuc2V0KCdxdWVyeScsICcqJyk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmxpbWl0bGVzcykge1xuICAgICAgICAgICAgbWFwLnNldCgnbGltaXQnLCB0aGlzLl9tYXBMaW1pdCk7XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhU291cmNlUHJvdmlkZXIubWF0Y2gobWFwKTtcblxuICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2VEaXJlY3RpdmUuZGF0YVNvdXJjZVByb3ZpZGVyPy5kYXRhUmVxdWVzdGVkLnN1YnNjcmliZSh0aGlzLmRhdGFSZXF1ZXN0ZWQpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZURpcmVjdGl2ZS5kYXRhU291cmNlUHJvdmlkZXI/LmRhdGFSZWNlaXZlZC5zdWJzY3JpYmUodGhpcy5kYXRhUmVjZWl2ZWQpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5kYXRhU291cmNlRGlyZWN0aXZlLmRhdGFTb3VyY2VDaGFuZ2VkLnBpcGUoc3RhcnRXaXRoKHRydWUpLCB0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhU291cmNlQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZURpcmVjdGl2ZS5kYXRhQ2hhbmdlZCQucGlwZShza2lwKDApLCB0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCkpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgaWYgKGRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc2luZ0VtcHR5RGF0YSgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNJbnB1dFRleHQgPSB0aGlzLmlucHV0VGV4dDtcblxuICAgICAgICAgICAgdGhpcy5fcGFyc2VEYXRhU291cmNlVmFsdWUoZGF0YSk7XG5cbiAgICAgICAgICAgIHRoaXMuX2N2YS5zdGF0ZUNoYW5nZXMubmV4dCgnaW5pdERhdGFTb3VyY2Uub3BlbigpLicpO1xuXG4gICAgICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIHRoZSBkYXRhIGZyb20gdGhlIGRhdGEgc3RyZWFtIGFuZCB1cGRhdGVzIHRoZSBtb2RlbCBpZiBuZWVkZWQuXG4gICAgICogQHBhcmFtIGRhdGEgYXJyYXkgb2Ygb2JqZWN0cyBmcm9tIHRoZSBkYXRhIHN0cmVhbS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3BhcnNlRGF0YVNvdXJjZVZhbHVlKGRhdGE6IFRbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb252ZXJ0RGF0YVNvdXJjZVN1Z2dlc3Rpb25zKGRhdGEpO1xuXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkU3VnZ2VzdGlvbnNMZW5ndGggPSB0aGlzLl9zZWxlY3RlZFN1Z2dlc3Rpb25zLmxlbmd0aDtcbiAgICAgICAgaWYgKHNlbGVjdGVkU3VnZ2VzdGlvbnNMZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGVjdGVkU3VnZ2VzdGlvbnNMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkU3VnZ2VzdGlvbiA9IHRoaXMuX3NlbGVjdGVkU3VnZ2VzdGlvbnNbaV07XG4gICAgICAgICAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5fc3VnZ2VzdGlvbnMuZmluZEluZGV4KChpdGVtKSA9PiBlcXVhbChpdGVtLnZhbHVlLCBzZWxlY3RlZFN1Z2dlc3Rpb24udmFsdWUpKTtcblxuICAgICAgICAgICAgICAgIGlmIChpZHggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25zW2lkeF0uc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9kYXRhU291cmNlQ2hhbmdlZCkge1xuICAgICAgICAgICAgdGhpcy5fZmxhdFN1Z2dlc3Rpb25zID0gdGhpcy5pc0dyb3VwID8gZmxhdHRlbkdyb3Vwcyh0aGlzLl9zdWdnZXN0aW9ucykgOiB0aGlzLl9zdWdnZXN0aW9ucztcbiAgICAgICAgICAgIHRoaXMuX2Z1bGxGbGF0U3VnZ2VzdGlvbnMgPSB0aGlzLl9mbGF0U3VnZ2VzdGlvbnM7XG5cbiAgICAgICAgICAgIHRoaXMuX3NldFNlbGVjdGVkU3VnZ2VzdGlvbnMoKTtcblxuICAgICAgICAgICAgdGhpcy5fbWFwQW5kVXBkYXRlTW9kZWwoKTtcblxuICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZUNoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyYW5zZm9ybXMgcGxhaW4gYXJyYXkgaW50byBgU2VsZWN0YWJsZU9wdGlvbkl0ZW08VD5gXG4gICAgICogQHBhcmFtIGRhdGFcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2NvbnZlcnREYXRhU291cmNlU3VnZ2VzdGlvbnMoZGF0YTogVFtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25zID0gdGhpcy5fY29udmVydFRvT3B0aW9uSXRlbXMoZGF0YSkubWFwKChvcHRpb25JdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnQgPSB0aGlzLl9zZWxlY3RlZFN1Z2dlc3Rpb25zLmZpbmQoKHNlbGVjdGVkSXRlbSkgPT4gc2VsZWN0ZWRJdGVtLmlkID09PSBvcHRpb25JdGVtLmlkKTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25JdGVtLnNlbGVjdGVkID0gc2VsZWN0ZWRFbGVtZW50LnNlbGVjdGVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbkl0ZW07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9wcm9jZXNzaW5nRW1wdHlEYXRhKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlucHV0VGV4dCA9IHRoaXMuX3ByZXZpb3VzSW5wdXRUZXh0O1xuXG4gICAgICAgIHRoaXMuX3NldEludmFsaWRFbnRyeSgpO1xuXG4gICAgICAgIGlmICh0aGlzLl90aW1lclN1YiQpIHtcbiAgICAgICAgICAgIHRoaXMuX3RpbWVyU3ViJC51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdGltZXJTdWIkID0gdGltZXIodGhpcy5pbnZhbGlkRW50cnlEaXNwbGF5VGltZSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3Vuc2V0SW52YWxpZEVudHJ5KCkpO1xuXG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG59XG4iXX0=
|
|
388
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1tdWx0aS1jb21ib2JveC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL211bHRpLWNvbWJvYm94L2Jhc2UtbXVsdGktY29tYm9ib3guY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxPQUFPLEVBQ1AsVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBQ04sVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBQ0wsR0FBRyxFQUNILFFBQVEsRUFDWCxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFnQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLG1CQUFtQixFQUFjLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckcsT0FBTyxFQUNILFVBQVUsRUFDVixZQUFZLEVBRVosWUFBWSxFQUNaLHNCQUFzQixFQUV6QixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFDSCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVixVQUFVLEVBQ1YsUUFBUSxFQUVSLGFBQWEsRUFDaEIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRSxPQUFPLEtBQUssTUFBTSxpQkFBaUIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLeEYsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxpQ0FBaUMsQ0FB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QUFDLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDcEUsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUcsSUFBSSxlQUFlLEVBQUU7Z0JBQ2pCLFVBQVUsQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDLFFBQVEsQ0FBQzthQUNsRDtZQUNELE9BQU8sVUFBVSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWM7SUFDSixvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFFekMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFeEIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDakM7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUVqRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzdCLENBQUM7OzhHQXpmaUIsaUJBQWlCO2tHQUFqQixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFEdEMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQkFDS1NQQUNFLFxuICAgIENPTlRST0wsXG4gICAgRE9XTl9BUlJPVyxcbiAgICBFTlRFUixcbiAgICBFU0NBUEUsXG4gICAgTEVGVF9BUlJPVyxcbiAgICBSSUdIVF9BUlJPVyxcbiAgICBTSElGVCxcbiAgICBUQUIsXG4gICAgVVBfQVJST1dcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhU291cmNlRGlyZWN0aXZlLCBNYXRjaGluZ0J5LCBNYXRjaGluZ1N0cmF0ZWd5IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvZGF0YS1zb3VyY2UnO1xuaW1wb3J0IHtcbiAgICBDdmFDb250cm9sLFxuICAgIEN2YURpcmVjdGl2ZSxcbiAgICBGb3JtU3RhdGVzLFxuICAgIGlzT3B0aW9uSXRlbSxcbiAgICBpc1NlbGVjdGFibGVPcHRpb25JdGVtLFxuICAgIFNlbGVjdGFibGVPcHRpb25JdGVtXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgY29lcmNlQXJyYXlTYWZlLFxuICAgIERlc3Ryb3llZFNlcnZpY2UsXG4gICAgaXNGdW5jdGlvbixcbiAgICBpc0pzT2JqZWN0LFxuICAgIGlzU3RyaW5nLFxuICAgIE51bGxhYmxlLFxuICAgIFJhbmdlU2VsZWN0b3Jcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlPYnNlcnZlciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IGVxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIHNraXAsIHN0YXJ0V2l0aCwgU3Vic2NyaXB0aW9uLCB0YWtlVW50aWwsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIEZkTXVsdGlDb21ib2JveEFjY2VwdGFibGVEYXRhU291cmNlLFxuICAgIEZkTXVsdGlDb21ib0JveERhdGFTb3VyY2Vcbn0gZnJvbSAnLi9kYXRhLXNvdXJjZS9tdWx0aS1jb21ib2JveC1kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBkaXNwbGF5VmFsdWUsIGZsYXR0ZW5Hcm91cHMsIGxvb2t1cFZhbHVlLCBvYmplY3RHZXQgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgTXVsdGlDb21ib2JveFNlbGVjdGlvbkNoYW5nZUV2ZW50IH0gZnJvbSAnLi9tb2RlbHMvc2VsZWN0aW9uLWNoYW5nZS5ldmVudCc7XG5pbXBvcnQgeyBNdWx0aUNvbWJvYm94Q29uZmlnIH0gZnJvbSAnLi9tdWx0aS1jb21ib2JveC1jb25maWcnO1xuaW1wb3J0IHsgRkRfTUFQX0xJTUlUIH0gZnJvbSAnLi9tdWx0aS1jb21ib2JveC5jb21wb25lbnQnO1xuXG5leHBvcnQgdHlwZSBUZXh0QWxpZ25tZW50ID0gJ2xlZnQnIHwgJ3JpZ2h0JztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZU11bHRpQ29tYm9ib3g8VCA9IGFueT4ge1xuICAgIC8vIEluamVjdGlvbiBzZWN0aW9uXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBjdmFDb250cm9sOiBDdmFDb250cm9sPFQ+ID0gaW5qZWN0KEN2YUNvbnRyb2wpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBkYXRhU291cmNlRGlyZWN0aXZlOiBEYXRhU291cmNlRGlyZWN0aXZlPFQsIEZkTXVsdGlDb21ib0JveERhdGFTb3VyY2U8VD4+ID0gaW5qZWN0KERhdGFTb3VyY2VEaXJlY3RpdmUpO1xuXG4gICAgLyoqIENvbnRyb2wgVmFsdWUgQWNjZXNzb3IgZGlyZWN0aXZlIGZvciBmb3JtcyBzdXBwb3J0LiAqL1xuICAgIHJlYWRvbmx5IF9jdmEgPSBpbmplY3QoQ3ZhRGlyZWN0aXZlPFQ+LCB7XG4gICAgICAgIHNlbGY6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKiBNdWx0aSBjb21ib2JveCBjb25maWcuICovXG4gICAgcmVhZG9ubHkgX211bHRpQ29tYm9ib3hDb25maWcgPSBpbmplY3QoTXVsdGlDb21ib2JveENvbmZpZywge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLyoqIENvbnRlbnQgRGVuc2l0eSBPYnNlcnZlciAqL1xuICAgIHJlYWRvbmx5IGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXIgPSBpbmplY3QoQ29udGVudERlbnNpdHlPYnNlcnZlcik7XG5cbiAgICAvKiogQEhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfZWxtUmVmID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jZCA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfbWFwTGltaXQgPSBpbmplY3QoRkRfTUFQX0xJTUlUKTtcblxuICAgIC8qKiBASGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kZXN0cm95ZWQkID0gaW5qZWN0KERlc3Ryb3llZFNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIExpc3Qgb2Ygc2VsZWN0ZWQgc3VnZ2VzdGlvbnNcbiAgICAgKi9cbiAgICBfc2VsZWN0ZWRTdWdnZXN0aW9uczogU2VsZWN0YWJsZU9wdGlvbkl0ZW08VD5bXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIExpc3Qgb2YgbWF0Y2hlZCBzdWdnZXN0aW9uc1xuICAgICAqL1xuICAgIF9zdWdnZXN0aW9uczogU2VsZWN0YWJsZU9wdGlvbkl0ZW1bXTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBHcm91cGVkIHN1Z2dlc3Rpb25zIG1hcHBlZCB0byBhcnJheS5cbiAgICAgKi9cbiAgICBfZmxhdFN1Z2dlc3Rpb25zOiBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9mdWxsRmxhdFN1Z2dlc3Rpb25zOiBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdID0gW107XG5cbiAgICBhYnN0cmFjdCBzZWxlY3RlZEl0ZW1zOiBUW107XG4gICAgYWJzdHJhY3QgZ3JvdXA6IGJvb2xlYW47XG4gICAgYWJzdHJhY3QgZ3JvdXBLZXk6IHN0cmluZztcbiAgICBhYnN0cmFjdCBkaXNwbGF5S2V5OiBzdHJpbmc7XG4gICAgYWJzdHJhY3Qgc2Vjb25kYXJ5S2V5OiBzdHJpbmc7XG4gICAgYWJzdHJhY3Qgc2hvd1NlY29uZGFyeVRleHQ6IGJvb2xlYW47XG4gICAgYWJzdHJhY3QgbG9va3VwS2V5OiBzdHJpbmc7XG4gICAgYWJzdHJhY3QgaW52YWxpZEVudHJ5TWVzc2FnZTogc3RyaW5nO1xuICAgIGFic3RyYWN0IGludmFsaWRFbnRyeURpc3BsYXlUaW1lOiBudW1iZXI7XG4gICAgYWJzdHJhY3QgbGltaXRsZXNzOiBib29sZWFuO1xuICAgIGFic3RyYWN0IGlzR3JvdXA6IGJvb2xlYW47XG4gICAgYWJzdHJhY3QgaW5wdXRUZXh0OiBzdHJpbmc7XG5cbiAgICBhYnN0cmFjdCBzZWFyY2hJbnB1dEVsZW1lbnQ6IE51bGxhYmxlPEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4+O1xuXG4gICAgYWJzdHJhY3Qgc2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TXVsdGlDb21ib2JveFNlbGVjdGlvbkNoYW5nZUV2ZW50PjtcbiAgICBhYnN0cmFjdCBkYXRhUmVjZWl2ZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPjtcbiAgICBhYnN0cmFjdCBkYXRhUmVxdWVzdGVkOiBFdmVudEVtaXR0ZXI8dm9pZD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNlbGVjdGVkU2hvd24kID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZGF0YVNvdXJjZTogRmRNdWx0aUNvbWJvYm94QWNjZXB0YWJsZURhdGFTb3VyY2U8VD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfaW5wdXRUZXh0VmFsdWU6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9wcmV2aW91c0lucHV0VGV4dDogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX21hdGNoaW5nU3RyYXRlZ3k6IE1hdGNoaW5nU3RyYXRlZ3kgPVxuICAgICAgICB0aGlzLl9tdWx0aUNvbWJvYm94Q29uZmlnPy5tYXRjaGluZ1N0cmF0ZWd5ID8/IE1hdGNoaW5nU3RyYXRlZ3kuQ09OVEFJTlM7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZHNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2VsZW1lbnQ6IEhUTUxFbGVtZW50ID0gdGhpcy5fZWxtUmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogS2V5cywgdGhhdCB3b24ndCB0cmlnZ2VyIHRoZSBwb3BvdmVyJ3Mgb3BlbiBzdGF0ZSwgd2hlbiBkaXNwYXRjaGVkIG9uIHNlYXJjaCBpbnB1dC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX25vbk9wZW5pbmdLZXlzOiBudW1iZXJbXSA9IFtcbiAgICAgICAgQkFDS1NQQUNFLFxuICAgICAgICBFU0NBUEUsXG4gICAgICAgIEVOVEVSLFxuICAgICAgICBDT05UUk9MLFxuICAgICAgICBUQUIsXG4gICAgICAgIFNISUZULFxuICAgICAgICBVUF9BUlJPVyxcbiAgICAgICAgUklHSFRfQVJST1csXG4gICAgICAgIERPV05fQVJST1csXG4gICAgICAgIExFRlRfQVJST1dcbiAgICBdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX3RpbWVyU3ViJDogU3Vic2NyaXB0aW9uO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX3ByZXZpb3VzU3RhdGU/OiBGb3JtU3RhdGVzO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX3ByZXZpb3VzU3RhdGVNZXNzYWdlOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3JhbmdlU2VsZWN0b3IgPSBuZXcgUmFuZ2VTZWxlY3RvcigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kYXRhU291cmNlQ2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2Rpc3BsYXlGbiA9ICh2YWx1ZTogYW55KTogc3RyaW5nID0+IGRpc3BsYXlWYWx1ZSh2YWx1ZSwgdGhpcy5kaXNwbGF5S2V5KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9zZWNvbmRhcnlGbiA9ICh2YWx1ZTogYW55KTogc3RyaW5nID0+IHtcbiAgICAgICAgaWYgKGlzT3B0aW9uSXRlbSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5zZWNvbmRhcnlUZXh0ID8/ICcnO1xuICAgICAgICB9IGVsc2UgaWYgKGlzSnNPYmplY3QodmFsdWUpICYmIHRoaXMuc2Vjb25kYXJ5S2V5KSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50SXRlbSA9IG9iamVjdEdldCh2YWx1ZSwgdGhpcy5zZWNvbmRhcnlLZXkpO1xuXG4gICAgICAgICAgICByZXR1cm4gaXNGdW5jdGlvbihjdXJyZW50SXRlbSkgPyBjdXJyZW50SXRlbSgpIDogY3VycmVudEl0ZW07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gY29lcmNlQXJyYXlTYWZlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5fY3ZhLndyaXRlVmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgdGhpcy5fc2V0U2VsZWN0ZWRTdWdnZXN0aW9ucygpO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIHRvIGNoYW5nZSB0aGUgdmFsdWUgb2YgYSBjb250cm9sLlxuICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdG8gYmUgYXBwbGllZFxuICAgICAqIEBwYXJhbSBlbWl0T25DaGFuZ2Ugd2hldGhlciB0byBlbWl0IFwib25DaGFuZ2VcIiBldmVudC5cbiAgICAgKiBTaG91bGQgYmUgXCJmYWxzZVwiLCBpZiB0aGUgY2hhbmdlIGlzIG1hZGUgcHJvZ3JhbW1hdGljYWxseSAoaW50ZXJuYWxseSkgYnkgdGhlIGNvbnRyb2wsIFwidHJ1ZVwiIG90aGVyd2lzZVxuICAgICAqL1xuICAgIHNldFZhbHVlKHZhbHVlOiBhbnksIGVtaXRPbkNoYW5nZSA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gY29lcmNlQXJyYXlTYWZlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5fY3ZhLnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtcywgZW1pdE9uQ2hhbmdlKTtcbiAgICAgICAgdGhpcy5fc2V0U2VsZWN0ZWRTdWdnZXN0aW9ucygpO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTWV0aG9kIHRvIGVtaXQgY2hhbmdlIGV2ZW50XG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9lbWl0Q2hhbmdlRXZlbnQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IE11bHRpQ29tYm9ib3hTZWxlY3Rpb25DaGFuZ2VFdmVudCh0aGlzLCB0aGlzLnNlbGVjdGVkSXRlbXMpO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9zZXRTZWxlY3RlZFN1Z2dlc3Rpb25zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3RlZFN1Z2dlc3Rpb25zID0gW107XG5cbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkSXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLnNlbGVjdGVkSXRlbXNbaV07XG4gICAgICAgICAgICBjb25zdCBpZHggPSB0aGlzLl9mdWxsRmxhdFN1Z2dlc3Rpb25zLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAoaXRlbSkgPT4gaXRlbS5sYWJlbCA9PT0gc2VsZWN0ZWRJdGVtIHx8IGl0ZW0udmFsdWUgPT09IHNlbGVjdGVkSXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChpZHggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRTdWdnZXN0aW9ucy5wdXNoKHRoaXMuX2Z1bGxGbGF0U3VnZ2VzdGlvbnNbaWR4XSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZnVsbEZsYXRTdWdnZXN0aW9uc1tpZHhdLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IG9yaWdpbmFsIGRhdGEgdG8gU2VsZWN0YWJsZU9wdGlvbkl0ZW1zIEludGVyZmFjZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2NvbnZlcnRUb09wdGlvbkl0ZW1zKGl0ZW1zOiBhbnlbXSk6IFNlbGVjdGFibGVPcHRpb25JdGVtPFQ+W10ge1xuICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbMF07XG5cbiAgICAgICAgY29uc3QgZWxlbWVudFR5cGVJc09wdGlvbkl0ZW0gPSBpc1NlbGVjdGFibGVPcHRpb25JdGVtKGl0ZW0pO1xuICAgICAgICBpZiAoZWxlbWVudFR5cGVJc09wdGlvbkl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtcyBhcyBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZWxlbWVudFR5cGVJc09iamVjdCA9IGlzSnNPYmplY3QoaXRlbSk7XG4gICAgICAgIGlmIChlbGVtZW50VHlwZUlzT2JqZWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udmVydE9iamVjdHNUb09wdGlvbkl0ZW1zKGl0ZW1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVsZW1lbnRUeXBlSXNTdHJpbmcgPSBpc1N0cmluZyhpdGVtKTtcbiAgICAgICAgaWYgKGVsZW1lbnRUeXBlSXNTdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0UHJpbWl0aXZlVG9PcHRpb25JdGVtcyhpdGVtcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBkYXRhIHRvIFNlbGVjdGFibGVPcHRpb25JdGVtcyBJbnRlcmZhY2VcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9jb252ZXJ0T2JqZWN0c1RvT3B0aW9uSXRlbXMoaXRlbXM6IFRbXSk6IFNlbGVjdGFibGVPcHRpb25JdGVtPFQ+W10ge1xuICAgICAgICBpZiAodGhpcy5pc0dyb3VwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udmVydE9iamVjdHNUb0dyb3VwT3B0aW9uSXRlbXMoaXRlbXMpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2hvd1NlY29uZGFyeVRleHQgJiYgdGhpcy5zZWNvbmRhcnlLZXkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0T2JqZWN0c1RvU2Vjb25kYXJ5T3B0aW9uSXRlbXMoaXRlbXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRPYmplY3RzVG9EZWZhdWx0T3B0aW9uSXRlbXMoaXRlbXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBvYmplY3RbXSBkYXRhIHRvIEdyb3VwIE9wdGlvbkl0ZW1zIEludGVyZmFjZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2NvbnZlcnRPYmplY3RzVG9Hcm91cE9wdGlvbkl0ZW1zPEsgZXh0ZW5kcyBUPihpdGVtczogS1tdKTogU2VsZWN0YWJsZU9wdGlvbkl0ZW08VD5bXSB7XG4gICAgICAgIGNvbnN0IGdyb3VwOiBSZWNvcmQ8c3RyaW5nLCBLW10+ID0ge307XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zW2ldO1xuICAgICAgICAgICAgY29uc3Qga2V5VmFsdWUgPSBpdGVtW3RoaXMuZ3JvdXBLZXldO1xuICAgICAgICAgICAgaWYgKCFrZXlWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWdyb3VwW2tleVZhbHVlXSkge1xuICAgICAgICAgICAgICAgIGdyb3VwW2tleVZhbHVlXSA9IFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBncm91cFtrZXlWYWx1ZV0ucHVzaChpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhncm91cCkubWFwKChrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdEl0ZW06IFNlbGVjdGFibGVPcHRpb25JdGVtID0ge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBrZXksXG4gICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgaXNHcm91cDogdHJ1ZVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgY3VycmVudEdyb3VwID0gZ3JvdXBba2V5XTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuc2hvd1NlY29uZGFyeVRleHQgJiYgdGhpcy5zZWNvbmRhcnlLZXkpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RJdGVtLmNoaWxkcmVuID0gdGhpcy5fY29udmVydE9iamVjdHNUb1NlY29uZGFyeU9wdGlvbkl0ZW1zKGN1cnJlbnRHcm91cCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNlbGVjdEl0ZW0uY2hpbGRyZW4gPSB0aGlzLl9jb252ZXJ0T2JqZWN0c1RvRGVmYXVsdE9wdGlvbkl0ZW1zKGN1cnJlbnRHcm91cCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzZWxlY3RJdGVtO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IFRbXSBkYXRhIHRvIFNlY29uZGFyeSBTZWxlY3RhYmxlT3B0aW9uSXRlbXM8VD4gSW50ZXJmYWNlXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfY29udmVydE9iamVjdHNUb1NlY29uZGFyeU9wdGlvbkl0ZW1zPEsgZXh0ZW5kcyBUPihpdGVtczogS1tdKTogU2VsZWN0YWJsZU9wdGlvbkl0ZW08VD5bXSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEl0ZW1zOiBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBpdGVtc1tpXTtcbiAgICAgICAgICAgIHNlbGVjdEl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgIGxhYmVsOiBkaXNwbGF5VmFsdWUodmFsdWUsIHRoaXMuZGlzcGxheUtleSksXG4gICAgICAgICAgICAgICAgaWQ6IGxvb2t1cFZhbHVlKHZhbHVlLCB0aGlzLmxvb2t1cEtleSksXG4gICAgICAgICAgICAgICAgc2Vjb25kYXJ5VGV4dDogb2JqZWN0R2V0KHZhbHVlLCB0aGlzLnNlY29uZGFyeUtleSksXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRJdGVtcz8uaW5jbHVkZXModmFsdWUpIHx8IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RJdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IFByaW1pdGl2ZSBkYXRhKEJvb2xlYW4sIFN0cmluZywgTnVtYmVyKSB0byBTZWxlY3RhYmxlT3B0aW9uSXRlbXMgSW50ZXJmYWNlXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfY29udmVydFByaW1pdGl2ZVRvT3B0aW9uSXRlbXMoaXRlbXM6IGFueVtdKTogU2VsZWN0YWJsZU9wdGlvbkl0ZW08VD5bXSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEl0ZW1zOiBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gaXRlbXNbaV07XG4gICAgICAgICAgICBzZWxlY3RJdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdmFsdWUsXG4gICAgICAgICAgICAgICAgaWQ6IGxvb2t1cFZhbHVlKHZhbHVlLCB0aGlzLmxvb2t1cEtleSksXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRJdGVtcz8uaW5jbHVkZXModmFsdWUpIHx8IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RJdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IFRbXSB0byBTZWxlY3RhYmxlT3B0aW9uSXRlbXM8VD4gSW50ZXJmYWNlIChEZWZhdWx0KVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2NvbnZlcnRPYmplY3RzVG9EZWZhdWx0T3B0aW9uSXRlbXMoaXRlbXM6IGFueVtdKTogU2VsZWN0YWJsZU9wdGlvbkl0ZW08VD5bXSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEl0ZW1zOiBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBpdGVtc1tpXTtcbiAgICAgICAgICAgIHNlbGVjdEl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgIGxhYmVsOiBkaXNwbGF5VmFsdWUodmFsdWUsIHRoaXMuZGlzcGxheUtleSksXG4gICAgICAgICAgICAgICAgaWQ6IGxvb2t1cFZhbHVlKHZhbHVlLCB0aGlzLmxvb2t1cEtleSksXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRJdGVtcz8uaW5jbHVkZXModmFsdWUpIHx8IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RJdGVtcztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfc2V0SW52YWxpZEVudHJ5KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fcHJldmlvdXNTdGF0ZSB8fCB0aGlzLl9wcmV2aW91c1N0YXRlTWVzc2FnZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcHJldmlvdXNTdGF0ZSA9IHRoaXMuX2N2YS5zdGF0ZTtcbiAgICAgICAgdGhpcy5fY3ZhLnN0YXRlID0gJ2Vycm9yJztcblxuICAgICAgICB0aGlzLl9wcmV2aW91c1N0YXRlTWVzc2FnZSA9IHRoaXMuX2N2YS5zdGF0ZU1lc3NhZ2U7XG4gICAgICAgIHRoaXMuX2N2YS5zdGF0ZU1lc3NhZ2UgPSB0aGlzLmludmFsaWRFbnRyeU1lc3NhZ2U7XG5cbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX3Vuc2V0SW52YWxpZEVudHJ5KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jdmEuc3RhdGUgPSB0aGlzLl9wcmV2aW91c1N0YXRlO1xuICAgICAgICB0aGlzLl9wcmV2aW91c1N0YXRlID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIHRoaXMuX2N2YS5zdGF0ZU1lc3NhZ2UgPSB0aGlzLl9wcmV2aW91c1N0YXRlTWVzc2FnZTtcbiAgICAgICAgdGhpcy5fcHJldmlvdXNTdGF0ZU1lc3NhZ2UgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2ZvY3VzVG9TZWFyY2hGaWVsZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfbWFwQW5kVXBkYXRlTW9kZWwoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLl9zZWxlY3RlZFN1Z2dlc3Rpb25zLm1hcCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSk7XG5cbiAgICAgICAgY29uc3Qgc2hvdWxkRW1pdENoYW5nZUV2ZW50ID0gIWVxdWFsKHRoaXMuc2VsZWN0ZWRJdGVtcywgc2VsZWN0ZWRJdGVtcyk7XG5cbiAgICAgICAgaWYgKCFzaG91bGRFbWl0Q2hhbmdlRXZlbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZShzZWxlY3RlZEl0ZW1zKTtcblxuICAgICAgICB0aGlzLl9jdmEub25DaGFuZ2Uoc2VsZWN0ZWRJdGVtcyk7XG5cbiAgICAgICAgdGhpcy5fZW1pdENoYW5nZUV2ZW50KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFByZXBhcmVzIHRoZSBkYXRhIHN0cmVhbSBhbmQgc3Vic2NyaWJlcyB0byBpdC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX29wZW5EYXRhU3RyZWFtKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkYXRhU291cmNlUHJvdmlkZXIgPSB0aGlzLmRhdGFTb3VyY2VEaXJlY3RpdmUuZGF0YVNvdXJjZVByb3ZpZGVyO1xuXG4gICAgICAgIGlmICghZGF0YVNvdXJjZVByb3ZpZGVyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFtkYXRhU291cmNlXSBzb3VyY2UgZGlkIG5vdCBtYXRjaCBhbiBhcnJheSwgT2JzZXJ2YWJsZSwgb3IgRGF0YVNvdXJjZWApO1xuICAgICAgICB9XG5cbiAgICAgICAgZGF0YVNvdXJjZVByb3ZpZGVyLmxpbWl0bGVzcyA9IHRoaXMubGltaXRsZXNzO1xuXG4gICAgICAgIGRhdGFTb3VyY2VQcm92aWRlci5kYXRhUHJvdmlkZXIuc2V0TG9va3VwS2V5KHRoaXMubG9va3VwS2V5KTtcbiAgICAgICAgY29uc3QgbWF0Y2hpbmdCeTogTWF0Y2hpbmdCeSA9IHtcbiAgICAgICAgICAgIGZpcnN0Qnk6IHRoaXMuX2Rpc3BsYXlGblxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLnNlY29uZGFyeUtleSkge1xuICAgICAgICAgICAgbWF0Y2hpbmdCeS5zZWNvbmRhcnlCeSA9IHRoaXMuX3NlY29uZGFyeUZuO1xuICAgICAgICB9XG5cbiAgICAgICAgZGF0YVNvdXJjZVByb3ZpZGVyLmRhdGFQcm92aWRlci5zZXRNYXRjaGluZ0J5KG1hdGNoaW5nQnkpO1xuICAgICAgICBkYXRhU291cmNlUHJvdmlkZXIuZGF0YVByb3ZpZGVyLnNldE1hdGNoaW5nU3RyYXRlZ3kodGhpcy5fbWF0Y2hpbmdTdHJhdGVneSk7XG5cbiAgICAgICAgLy8gaW5pdGlhbCBkYXRhIGZldGNoXG4gICAgICAgIGNvbnN0IG1hcCA9IG5ldyBNYXAoKTtcbiAgICAgICAgbWFwLnNldCgncXVlcnknLCAnKicpO1xuXG4gICAgICAgIGlmICghdGhpcy5saW1pdGxlc3MpIHtcbiAgICAgICAgICAgIG1hcC5zZXQoJ2xpbWl0JywgdGhpcy5fbWFwTGltaXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgZGF0YVNvdXJjZVByb3ZpZGVyLm1hdGNoKG1hcCk7XG5cbiAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlRGlyZWN0aXZlLmRhdGFTb3VyY2VQcm92aWRlcj8uZGF0YVJlcXVlc3RlZC5zdWJzY3JpYmUodGhpcy5kYXRhUmVxdWVzdGVkKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2VEaXJlY3RpdmUuZGF0YVNvdXJjZVByb3ZpZGVyPy5kYXRhUmVjZWl2ZWQuc3Vic2NyaWJlKHRoaXMuZGF0YVJlY2VpdmVkKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZURpcmVjdGl2ZS5kYXRhU291cmNlQ2hhbmdlZC5waXBlKHN0YXJ0V2l0aCh0cnVlKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZUNoYW5nZWQgPSB0cnVlO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmRhdGFTb3VyY2VEaXJlY3RpdmUuZGF0YUNoYW5nZWQkLnBpcGUoc2tpcCgwKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgICAgIGlmIChkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NpbmdFbXB0eURhdGEoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX3ByZXZpb3VzSW5wdXRUZXh0ID0gdGhpcy5pbnB1dFRleHQ7XG5cbiAgICAgICAgICAgIHRoaXMuX3BhcnNlRGF0YVNvdXJjZVZhbHVlKGRhdGEpO1xuXG4gICAgICAgICAgICB0aGlzLl9jdmEuc3RhdGVDaGFuZ2VzLm5leHQoJ2luaXREYXRhU291cmNlLm9wZW4oKS4nKTtcblxuICAgICAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhcnNlcyB0aGUgZGF0YSBmcm9tIHRoZSBkYXRhIHN0cmVhbSBhbmQgdXBkYXRlcyB0aGUgbW9kZWwgaWYgbmVlZGVkLlxuICAgICAqIEBwYXJhbSBkYXRhIGFycmF5IG9mIG9iamVjdHMgZnJvbSB0aGUgZGF0YSBzdHJlYW0uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9wYXJzZURhdGFTb3VyY2VWYWx1ZShkYXRhOiBUW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29udmVydERhdGFTb3VyY2VTdWdnZXN0aW9ucyhkYXRhKTtcblxuICAgICAgICBjb25zdCBzZWxlY3RlZFN1Z2dlc3Rpb25zTGVuZ3RoID0gdGhpcy5fc2VsZWN0ZWRTdWdnZXN0aW9ucy5sZW5ndGg7XG4gICAgICAgIGlmIChzZWxlY3RlZFN1Z2dlc3Rpb25zTGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWxlY3RlZFN1Z2dlc3Rpb25zTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFN1Z2dlc3Rpb24gPSB0aGlzLl9zZWxlY3RlZFN1Z2dlc3Rpb25zW2ldO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuX3N1Z2dlc3Rpb25zLmZpbmRJbmRleCgoaXRlbSkgPT4gZXF1YWwoaXRlbS52YWx1ZSwgc2VsZWN0ZWRTdWdnZXN0aW9uLnZhbHVlKSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaWR4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdWdnZXN0aW9uc1tpZHhdLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGF0YVNvdXJjZUNoYW5nZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZsYXRTdWdnZXN0aW9ucyA9IHRoaXMuaXNHcm91cCA/IGZsYXR0ZW5Hcm91cHModGhpcy5fc3VnZ2VzdGlvbnMpIDogdGhpcy5fc3VnZ2VzdGlvbnM7XG4gICAgICAgICAgICB0aGlzLl9mdWxsRmxhdFN1Z2dlc3Rpb25zID0gdGhpcy5fZmxhdFN1Z2dlc3Rpb25zO1xuXG4gICAgICAgICAgICB0aGlzLl9zZXRTZWxlY3RlZFN1Z2dlc3Rpb25zKCk7XG5cbiAgICAgICAgICAgIHRoaXMuX21hcEFuZFVwZGF0ZU1vZGVsKCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2RhdGFTb3VyY2VDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmFuc2Zvcm1zIHBsYWluIGFycmF5IGludG8gYFNlbGVjdGFibGVPcHRpb25JdGVtPFQ+YFxuICAgICAqIEBwYXJhbSBkYXRhXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9jb252ZXJ0RGF0YVNvdXJjZVN1Z2dlc3Rpb25zKGRhdGE6IFRbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWdnZXN0aW9ucyA9IHRoaXMuX2NvbnZlcnRUb09wdGlvbkl0ZW1zKGRhdGEpLm1hcCgob3B0aW9uSXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50ID0gdGhpcy5fc2VsZWN0ZWRTdWdnZXN0aW9ucy5maW5kKChzZWxlY3RlZEl0ZW0pID0+IHNlbGVjdGVkSXRlbS5pZCA9PT0gb3B0aW9uSXRlbS5pZCk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgb3B0aW9uSXRlbS5zZWxlY3RlZCA9IHNlbGVjdGVkRWxlbWVudC5zZWxlY3RlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvcHRpb25JdGVtO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfcHJvY2Vzc2luZ0VtcHR5RGF0YSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dFRleHQgPSB0aGlzLl9wcmV2aW91c0lucHV0VGV4dDtcblxuICAgICAgICB0aGlzLl9zZXRJbnZhbGlkRW50cnkoKTtcblxuICAgICAgICBpZiAodGhpcy5fdGltZXJTdWIkKSB7XG4gICAgICAgICAgICB0aGlzLl90aW1lclN1YiQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3RpbWVyU3ViJCA9IHRpbWVyKHRoaXMuaW52YWxpZEVudHJ5RGlzcGxheVRpbWUpLnN1YnNjcmliZSgoKSA9PiB0aGlzLl91bnNldEludmFsaWRFbnRyeSgpKTtcblxuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxufVxuIl19
|