@kirbydesign/designsystem 4.0.9 → 4.0.13
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/bundles/kirbydesign-designsystem-testing-base.umd.js +59 -84
- package/bundles/kirbydesign-designsystem-testing-base.umd.js.map +1 -1
- package/bundles/kirbydesign-designsystem-testing-base.umd.min.js +1 -1
- package/bundles/kirbydesign-designsystem-testing-base.umd.min.js.map +1 -1
- package/bundles/kirbydesign-designsystem.umd.js +347 -719
- package/bundles/kirbydesign-designsystem.umd.js.map +1 -1
- package/bundles/kirbydesign-designsystem.umd.min.js +1 -1
- package/bundles/kirbydesign-designsystem.umd.min.js.map +1 -1
- package/esm2015/kirbydesign-designsystem.js +77 -76
- package/esm2015/kirbydesign-designsystem.metadata.json +1 -1
- package/esm2015/lib/animation/kirby-animation.js +7 -7
- package/esm2015/lib/components/angular-component-lib/utils.js +40 -0
- package/esm2015/lib/components/angular-component-lib/utils.metadata.json +1 -0
- package/esm2015/lib/components/avatar/avatar.component.js +2 -2
- package/esm2015/lib/components/avatar/avatar.component.metadata.json +1 -1
- package/esm2015/lib/components/button/button.component.js +1 -1
- package/esm2015/lib/components/button/button.component.metadata.json +1 -1
- package/esm2015/lib/components/calendar/calendar.component.js +2 -2
- package/esm2015/lib/components/card/card-header/card-header.component.js +1 -1
- package/esm2015/lib/components/chart/chart.component.js +25 -2
- package/esm2015/lib/components/chart/chart.component.metadata.json +1 -1
- package/esm2015/lib/components/chart-deprecated/options/bar.js +2 -2
- package/esm2015/lib/components/chart-deprecated/options/column.js +2 -2
- package/esm2015/lib/components/icon/kirby-icon-settings.js +2 -1
- package/esm2015/lib/components/icon/kirby-icon-settings.metadata.json +1 -1
- package/esm2015/lib/components/index.js +1 -2
- package/esm2015/lib/components/index.metadata.json +1 -1
- package/esm2015/lib/components/list/directives/list-item-color.directive.js +1 -1
- package/esm2015/lib/components/list/list-item/list-item.component.js +1 -1
- package/esm2015/lib/components/list/list-item/list-item.component.metadata.json +1 -1
- package/esm2015/lib/components/list/list.component.js +1 -1
- package/esm2015/lib/components/list/list.component.metadata.json +1 -1
- package/esm2015/lib/components/modal/modal-wrapper/modal-wrapper.component.js +2 -2
- package/esm2015/lib/components/modal/modal-wrapper/modal-wrapper.component.metadata.json +1 -1
- package/esm2015/lib/components/radio/radio-group/radio-group.component.js +8 -4
- package/esm2015/lib/components/radio/radio-group/radio-group.component.metadata.json +1 -1
- package/esm2015/lib/components/segmented-control/segment-item.js +1 -1
- package/esm2015/lib/components/segmented-control/segmented-control.component.js +3 -3
- package/esm2015/lib/components/segmented-control/segmented-control.component.metadata.json +1 -1
- package/esm2015/lib/components/stock-chart-deprecated/options/stock-chart-deprecated-options.js +2 -2
- package/esm2015/lib/components/web-component-proxies.component.js +42 -0
- package/esm2015/lib/components/web-component-proxies.component.metadata.json +1 -0
- package/esm2015/lib/custom-elements-initializer.js +17 -0
- package/esm2015/lib/custom-elements-initializer.metadata.json +1 -0
- package/esm2015/lib/directives/fit-heading/fit-heading.directive.js +2 -2
- package/esm2015/lib/directives/fit-heading/fit-heading.directive.metadata.json +1 -1
- package/esm2015/lib/directives/theme-color/theme-color.directive.js +2 -3
- package/esm2015/lib/directives/theme-color/theme-color.directive.metadata.json +1 -1
- package/esm2015/lib/helpers/color-helper.js +2 -117
- package/esm2015/lib/helpers/color-helper.metadata.json +1 -1
- package/esm2015/lib/helpers/design-token-helper.js +2 -80
- package/esm2015/lib/helpers/design-token-helper.metadata.json +1 -1
- package/esm2015/lib/helpers/index.js +4 -2
- package/esm2015/lib/helpers/index.metadata.json +1 -1
- package/esm2015/lib/helpers/platform.service.js +2 -2
- package/esm2015/lib/helpers/string-helper.js +2 -45
- package/esm2015/lib/helpers/string-helper.metadata.json +1 -1
- package/esm2015/lib/helpers/theme-color.type.js +1 -1
- package/esm2015/lib/helpers/theme-color.type.metadata.json +1 -1
- package/esm2015/lib/index.js +5 -1
- package/esm2015/lib/index.metadata.json +1 -1
- package/esm2015/lib/kirby.module.js +4 -2
- package/esm2015/lib/kirby.module.metadata.json +1 -1
- package/esm2015/testing-base/kirbydesign-designsystem-testing-base.js +51 -52
- package/esm2015/testing-base/kirbydesign-designsystem-testing-base.metadata.json +1 -1
- package/esm2015/testing-base/lib/directives/mock.theme-color.directive.js +1 -2
- package/esm2015/testing-base/lib/directives/mock.theme-color.directive.metadata.json +1 -1
- package/esm2015/testing-base/lib/mock-components.js +1 -3
- package/esm2015/testing-base/lib/mock-components.metadata.json +1 -1
- package/fesm2015/kirbydesign-designsystem-testing-base.js +2 -24
- package/fesm2015/kirbydesign-designsystem-testing-base.js.map +1 -1
- package/fesm2015/kirbydesign-designsystem.js +173 -575
- package/fesm2015/kirbydesign-designsystem.js.map +1 -1
- package/icons/svg/payment-card.svg +6 -0
- package/kirbydesign-designsystem.d.ts +76 -75
- package/kirbydesign-designsystem.metadata.json +1 -1
- package/lib/components/angular-component-lib/utils.d.ts +7 -0
- package/lib/components/avatar/avatar.component.d.ts +1 -1
- package/lib/components/button/button.component.d.ts +1 -1
- package/lib/components/card/card-header/card-header.component.d.ts +1 -1
- package/lib/components/chart/chart.component.d.ts +1 -0
- package/lib/components/flag/flag.component.d.ts +1 -1
- package/lib/components/index.d.ts +0 -1
- package/lib/components/list/directives/list-item-color.directive.d.ts +1 -1
- package/lib/components/list/list-item/list-item.component.d.ts +1 -1
- package/lib/components/list/list.component.d.ts +1 -1
- package/lib/components/progress-circle/progress-circle.component.d.ts +1 -1
- package/lib/components/radio/radio-group/radio-group.component.d.ts +1 -0
- package/lib/components/segmented-control/segment-item.d.ts +3 -2
- package/lib/components/web-component-proxies.component.d.ts +9 -0
- package/lib/custom-elements-initializer.d.ts +7 -0
- package/lib/directives/theme-color/theme-color.directive.d.ts +1 -1
- package/lib/helpers/color-helper.d.ts +1 -37
- package/lib/helpers/design-token-helper.d.ts +1 -42
- package/lib/helpers/index.d.ts +1 -1
- package/lib/helpers/string-helper.d.ts +1 -4
- package/lib/helpers/theme-color.type.d.ts +1 -1
- package/lib/index.d.ts +1 -0
- package/package.json +3 -2
- package/scss/base/_variables.scss +1 -0
- package/testing-base/kirbydesign-designsystem-testing-base.d.ts +50 -51
- package/testing-base/kirbydesign-designsystem-testing-base.metadata.json +1 -1
- package/esm2015/lib/components/badge/badge.component.js +0 -14
- package/esm2015/lib/components/badge/badge.component.metadata.json +0 -1
- package/esm2015/lib/helpers/color-helper.styles.js +0 -194
- package/esm2015/lib/helpers/color-helper.styles.metadata.json +0 -1
- package/esm2015/lib/helpers/design-token-helper.styles.js +0 -79
- package/esm2015/lib/helpers/design-token-helper.styles.metadata.json +0 -1
- package/esm2015/testing-base/lib/components/mock.badge.component.js +0 -22
- package/esm2015/testing-base/lib/components/mock.badge.component.metadata.json +0 -1
- package/lib/components/badge/badge.component.d.ts +0 -3
- package/lib/helpers/color-helper.styles.d.ts +0 -206
- package/lib/helpers/design-token-helper.styles.d.ts +0 -124
- package/testing-base/lib/components/mock.badge.component.d.ts +0 -3
|
@@ -12,7 +12,7 @@ import { RouterOutlet } from '@angular/router';
|
|
|
12
12
|
import { IonContent, IonHeader, IonTitle, IonToolbar } from '@ionic/angular';
|
|
13
13
|
import { merge, Subject } from 'rxjs';
|
|
14
14
|
import { debounceTime, first, takeUntil } from 'rxjs/operators';
|
|
15
|
-
import { DesignTokenHelper } from '
|
|
15
|
+
import { DesignTokenHelper } from '@kirbydesign/core';
|
|
16
16
|
import { PlatformService } from '../../../helpers/platform.service';
|
|
17
17
|
import { WindowRef } from '../../../types/window-ref';
|
|
18
18
|
import { ButtonComponent } from '../../button/button.component';
|
|
@@ -465,4 +465,4 @@ ModalWrapperComponent.propDecorators = {
|
|
|
465
465
|
_onKeyboardHide: [{ type: HostListener, args: ['window:ionKeyboardDidHide',] }, { type: HostListener, args: ['window:keyboardWillHide',] }],
|
|
466
466
|
_onWindowResize: [{ type: HostListener, args: ['window:resize',] }]
|
|
467
467
|
};
|
|
468
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtd3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbnN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvbW9kYWwvbW9kYWwtd3JhcHBlci9tb2RhbC13cmFwcGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULHdCQUF3QixFQUN4QixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFHTixTQUFTLEVBQ1QsU0FBUyxFQUNULG1CQUFtQixFQUNuQixTQUFTLEVBQ1QsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBa0IsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBRTdGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUdyRCxPQUFPLEVBQUUsZUFBZSxF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LFNBQVMsU0FBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO3dCQWlDeEMsV0FBVyxTQUFDLGNBQWM7NEJBOEwxQixZQUFZLFNBQUMsY0FBYyxjQUMzQixZQUFZLFNBQUMsaUJBQWlCOzhCQU05QixZQUFZLFNBQUMsMkJBQTJCLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQyxjQUMxRSxZQUFZLFNBQUMseUJBQXlCLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzs4QkFLakUsWUFBWSxTQUFDLDJCQUEyQixjQUN4QyxZQUFZLFNBQUMseUJBQXlCOzhCQW1GdEMsWUFBWSxTQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgUmVuZGVyZXJTdHlsZUZsYWdzMixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlck91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25Db250ZW50LCBJb25IZWFkZXIsIElvblRpdGxlLCBJb25Ub29sYmFyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlyc3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgS2lyYnlBbmltYXRpb24gfSBmcm9tICcuLi8uLi8uLi9hbmltYXRpb24va2lyYnktYW5pbWF0aW9uJztcbmltcG9ydCB7IERlc2lnblRva2VuSGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vaGVscGVycy9kZXNpZ24tdG9rZW4taGVscGVyJztcbmltcG9ydCB7IFBsYXRmb3JtU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2hlbHBlcnMvcGxhdGZvcm0uc2VydmljZSc7XG5pbXBvcnQgeyBXaW5kb3dSZWYgfSBmcm9tICcuLi8uLi8uLi90eXBlcy93aW5kb3ctcmVmJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IFJlc2l6ZU9ic2VydmVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9yZXNpemUtb2JzZXJ2ZXIvcmVzaXplLW9ic2VydmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzaXplT2JzZXJ2ZXJFbnRyeSB9IGZyb20gJy4uLy4uL3NoYXJlZC9yZXNpemUtb2JzZXJ2ZXIvdHlwZXMvcmVzaXplLW9ic2VydmVyLWVudHJ5JztcbmltcG9ydCB7IE1vZGFsIH0gZnJvbSAnLi4vc2VydmljZXMvbW9kYWwuaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7IE1vZGFsQ29uZmlnIH0gZnJvbSAnLi9jb25maWcvbW9kYWwtY29uZmlnJztcbmltcG9ydCB7IENPTVBPTkVOVF9QUk9QUyB9IGZyb20gJy4vY29uZmlnL21vZGFsLWNvbmZpZy5oZWxwZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1tb2RhbC13cmFwcGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGFsLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2RhbC13cmFwcGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTW9kYWwsIHVzZUV4aXN0aW5nOiBNb2RhbFdyYXBwZXJDb21wb25lbnQgfV0sXG59KVxuZXhwb3J0IGNsYXNzIE1vZGFsV3JhcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIE1vZGFsLCBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHN0YXRpYyByZWFkb25seSBLRVlCT0FSRF9ISURFX0RFTEFZX0lOX01TID0gMTAwO1xuXG4gIHNjcm9sbFk6IG51bWJlciA9IE1hdGguYWJzKHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5zY3JvbGxZKTtcbiAgcHJpdmF0ZSByZWFkb25seSBWSUVXUE9SVF9SRVNJWkVfREVCT1VOQ0VfVElNRSA9IDEwMDtcblxuICBzZXQgc2Nyb2xsRGlzYWJsZWQoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlvbkNvbnRlbnQuc2Nyb2xsWSA9ICFkaXNhYmxlZDtcbiAgfVxuXG4gIEBJbnB1dCgpIGNvbmZpZzogTW9kYWxDb25maWc7XG4gIGNvbXBvbmVudFByb3BzSW5qZWN0b3I6IEluamVjdG9yO1xuXG4gIEBWaWV3Q2hpbGRyZW4oQnV0dG9uQ29tcG9uZW50LCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgcHJpdmF0ZSB0b29sYmFyQnV0dG9uc1F1ZXJ5OiBRdWVyeUxpc3Q8XG4gICAgRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD5cbiAgPjtcbiAgQFZpZXdDaGlsZChJb25Db250ZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIGlvbkNvbnRlbnQ6IElvbkNvbnRlbnQ7XG4gIEBWaWV3Q2hpbGQoSW9uQ29udGVudCwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSkgcHJpdmF0ZSBpb25Db250ZW50RWxlbWVudDogRWxlbWVudFJlZjxcbiAgICBIVE1MSW9uQ29udGVudEVsZW1lbnRcbiAgPjtcbiAgQFZpZXdDaGlsZChJb25IZWFkZXIsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pIHByaXZhdGUgaW9uSGVhZGVyRWxlbWVudDogRWxlbWVudFJlZjxcbiAgICBIVE1MSW9uSGVhZGVyRWxlbWVudFxuICA+O1xuICBAVmlld0NoaWxkKElvblRvb2xiYXIsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pIHByaXZhdGUgaW9uVG9vbGJhckVsZW1lbnQ6IEVsZW1lbnRSZWY8XG4gICAgSFRNTElvblRvb2xiYXJFbGVtZW50XG4gID47XG4gIEBWaWV3Q2hpbGQoSW9uVGl0bGUsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pIHByaXZhdGUgaW9uVGl0bGVFbGVtZW50OiBFbGVtZW50UmVmPFxuICAgIEhUTUxJb25UaXRsZUVsZW1lbnRcbiAgPjtcbiAgQFZpZXdDaGlsZChSb3V0ZXJPdXRsZXQsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgcm91dGVyT3V0bGV0OiBSb3V0ZXJPdXRsZXQ7XG5cbiAgcHJpdmF0ZSBrZXlib2FyZFZpc2libGUgPSBmYWxzZTtcbiAgcHJpdmF0ZSB0b29sYmFyQnV0dG9uczogSFRNTEJ1dHRvbkVsZW1lbnRbXSA9IFtdO1xuICBwcml2YXRlIGRlbGF5ZWRDbG9zZSA9ICgpID0+IHt9O1xuICBwcml2YXRlIGRlbGF5ZWRDbG9zZVRpbWVvdXRJZDtcbiAgcHJpdmF0ZSBpbml0aWFsVmlld3BvcnRIZWlnaHQ6IG51bWJlcjtcbiAgcHJpdmF0ZSB2aWV3cG9ydFJlc2l6ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpb25Nb2RhbEVsZW1lbnQ/OiBIVE1MSW9uTW9kYWxFbGVtZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IGlvbk1vZGFsRGlkUHJlc2VudCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHJlYWRvbmx5IGRpZFByZXNlbnQgPSB0aGlzLmlvbk1vZGFsRGlkUHJlc2VudC50b1Byb21pc2UoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpb25Nb2RhbFdpbGxEaXNtaXNzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcmVhZG9ubHkgd2lsbENsb3NlID0gdGhpcy5pb25Nb2RhbFdpbGxEaXNtaXNzLnRvUHJvbWlzZSgpO1xuICBwcml2YXRlIHZpZXdwb3J0UmVzaXplID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSB2aWV3cG9ydFJlc2l6ZSQgPSB0aGlzLnZpZXdwb3J0UmVzaXplXG4gICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuVklFV1BPUlRfUkVTSVpFX0RFQk9VTkNFX1RJTUUpKTtcbiAgcHJpdmF0ZSBfbXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcbiAgcHJpdmF0ZSBnZXQgbXV0YXRpb25PYnNlcnZlcigpOiBNdXRhdGlvbk9ic2VydmVyIHtcbiAgICBpZiAoIXRoaXMuX211dGF0aW9uT2JzZXJ2ZXIpIHtcbiAgICAgIHRoaXMuX211dGF0aW9uT2JzZXJ2ZXIgPSB0aGlzLmNyZWF0ZUVtYmVkZGVkRWxlbWVudHNNdXRhdGlvbk9ic2VydmVyKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9tdXRhdGlvbk9ic2VydmVyO1xuICB9XG4gIHByaXZhdGUgX2ludGVyc2VjdGlvbk9ic2VydmVyOiBJbnRlcnNlY3Rpb25PYnNlcnZlcjtcbiAgcHJpdmF0ZSBnZXQgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIge1xuICAgIGlmICghdGhpcy5faW50ZXJzZWN0aW9uT2JzZXJ2ZXIpIHtcbiAgICAgIHRoaXMuX2ludGVyc2VjdGlvbk9ic2VydmVyID0gdGhpcy5jcmVhdGVNb2RhbFdyYXBwZXJJbnRlcnNlY3Rpb25PYnNlcnZlcigpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5faW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XG4gIH1cbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kcmF3ZXInKVxuICBnZXQgX2lzRHJhd2VyKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5mbGF2b3IgPT09ICdkcmF3ZXInO1xuICB9XG5cbiAgd2lsbENsb3NlJCA9IHRoaXMuaW9uTW9kYWxXaWxsRGlzbWlzcy5waXBlKGZpcnN0KCkpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuICAgIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXJTZXJ2aWNlOiBSZXNpemVPYnNlcnZlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwcml2YXRlIHdpbmRvd1JlZjogV2luZG93UmVmLFxuICAgIHByaXZhdGUgcGxhdGZvcm06IFBsYXRmb3JtU2VydmljZVxuICApIHtcbiAgICB0aGlzLnNldFZpZXdwb3J0SGVpZ2h0KCk7XG4gICAgdGhpcy5vYnNlcnZlVmlld3BvcnRSZXNpemUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW9uTW9kYWxFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnaW9uLW1vZGFsJyk7XG4gICAgdGhpcy5pbml0aWFsaXplU2l6aW5nKCk7XG4gICAgdGhpcy5pbml0aWFsaXplTW9kYWxSb3V0ZSgpO1xuICAgIHRoaXMubGlzdGVuRm9ySW9uTW9kYWxEaWRQcmVzZW50KCk7XG4gICAgdGhpcy5saXN0ZW5Gb3JJb25Nb2RhbFdpbGxEaXNtaXNzKCk7XG4gICAgdGhpcy5pbml0aWFsaXplUmVzaXplTW9kYWxUb01vZGFsV3JhcHBlcigpO1xuICAgIHRoaXMuY29tcG9uZW50UHJvcHNJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IENPTVBPTkVOVF9QUk9QUywgdXNlVmFsdWU6IHRoaXMuY29uZmlnLmNvbXBvbmVudFByb3BzIH1dLFxuICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplUmVzaXplTW9kYWxUb01vZGFsV3JhcHBlcigpIHtcbiAgICBpZiAodGhpcy5jb25maWcuZmxhdm9yID09PSAnZHJhd2VyJyAmJiB0aGlzLmNvbmZpZy5pbnRlcmFjdFdpdGhCYWNrZ3JvdW5kKSB7XG4gICAgICBtZXJnZSh0aGlzLmlvbk1vZGFsRGlkUHJlc2VudCwgdGhpcy52aWV3cG9ydFJlc2l6ZSQpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgLy8gd2FpdCBmb3IgdGVtcGxhdGUgdG8gcmVuZGVyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkb21SZWN0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBjb25zdCBkb2N1bWVudCA9IHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCByaWdodCA9IGRvY3VtZW50LmNsaWVudFdpZHRoIC0gZG9tUmVjdC5yaWdodDtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pb25Nb2RhbEVsZW1lbnQsICd0b3AnLCBgJHtkb21SZWN0LnRvcH1weGApO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmlvbk1vZGFsRWxlbWVudCwgJ2xlZnQnLCBgJHtkb21SZWN0LmxlZnR9cHhgKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pb25Nb2RhbEVsZW1lbnQsICdyaWdodCcsIGAke3JpZ2h0fXB4YCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVNpemluZygpIHtcbiAgICBpZiAodGhpcy5jb25maWcuc2l6ZSA9PT0gJ2Z1bGwtaGVpZ2h0JykgcmV0dXJuO1xuICAgIHRoaXMucGF0Y2hTY3JvbGxFbGVtZW50U2l6ZSgpO1xuICAgIHRoaXMub2JzZXJ2ZUhlYWRlclJlc2l6ZSgpO1xuICAgIHRoaXMub2JzZXJ2ZU1vZGFsRnVsbEhlaWdodCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplTW9kYWxSb3V0ZSgpIHtcbiAgICBpZiAodGhpcy5jb25maWcubW9kYWxSb3V0ZSkge1xuICAgICAgdGhpcy5vblNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkKHRoaXMuY29uZmlnLnNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkJCk7XG4gICAgICAvLyBMb2FkIGNvbXBvbmVudCBmcm9tIG1vZGFsLXJvdXRlIGluc2lkZSByb3V0ZXItb3V0bGV0OlxuICAgICAgdGhpcy5yb3V0ZXJPdXRsZXQuYWN0aXZhdGVXaXRoKHRoaXMuY29uZmlnLm1vZGFsUm91dGUsIHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9uU2libGluZ01vZGFsUm91dGVBY3RpdmF0ZWQoc2libGluZ01vZGFsUm91dGVBY3RpdmF0ZWQkPzogT2JzZXJ2YWJsZTxBY3RpdmF0ZWRSb3V0ZT4pIHtcbiAgICBpZiAoIXNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkJCkgcmV0dXJuO1xuICAgIHNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkJC5waXBlKHRha2VVbnRpbCh0aGlzLndpbGxDbG9zZSQpKS5zdWJzY3JpYmUoKHJvdXRlKSA9PiB7XG4gICAgICBpZiAodGhpcy5yb3V0ZXJPdXRsZXQuaXNBY3RpdmF0ZWQpIHtcbiAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgdGhpcy5yb3V0ZXJPdXRsZXQuZGVhY3RpdmF0ZSgpO1xuICAgICAgICB0aGlzLmNsZWFyRW1iZWRkZWRFbGVtZW50cygpO1xuICAgICAgfVxuICAgICAgdGhpcy5yb3V0ZXJPdXRsZXQuYWN0aXZhdGVXaXRoKHJvdXRlLCB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcik7XG4gICAgICB0aGlzLmNoZWNrRm9yRW1iZWRkZWRFbGVtZW50cygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXRjaFNjcm9sbEVsZW1lbnRTaXplKCk6IHZvaWQge1xuICAgIGNvbnN0IHN1cHBvcnRzQ3NzU2hhZG93UGFydHMgPSAncGFydCcgaW4gSFRNTEVsZW1lbnQucHJvdG90eXBlO1xuICAgIGlmIChzdXBwb3J0c0Nzc1NoYWRvd1BhcnRzKSByZXR1cm47XG4gICAgdGhpcy5pb25Db250ZW50LmdldFNjcm9sbEVsZW1lbnQoKS50aGVuKChzY3JvbGxFbGVtZW50KSA9PiB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHNjcm9sbEVsZW1lbnQsICdoZWlnaHQnLCAnMTAwJScpO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShzY3JvbGxFbGVtZW50LCAncG9zaXRpb24nLCAncmVsYXRpdmUnKTtcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5mbGF2b3IgPT09ICdkcmF3ZXInKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgc2Nyb2xsRWxlbWVudCxcbiAgICAgICAgICAndHJhbnNpdGlvbicsXG4gICAgICAgICAgJ3BhZGRpbmctYm90dG9tICcgKyBEZXNpZ25Ub2tlbkhlbHBlci5zb2Z0S2V5Ym9hcmRUcmFuc2l0aW9uTGVhdmVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZU1vZGFsRnVsbEhlaWdodCgpIHtcbiAgICBjb25zdCBpb25Nb2RhbFdyYXBwZXIgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbG9zZXN0PEhUTUxFbGVtZW50PignLm1vZGFsLXdyYXBwZXInKTtcbiAgICBpZiAoIWlvbk1vZGFsV3JhcHBlcikgcmV0dXJuO1xuICAgIC8vIFN0YXJ0IG9ic2VydmluZyB3aGVuIG1vZGFsIGhhcyBmaW5pc2hlZCBhbmltYXRpbmc6XG4gICAgdGhpcy5kaWRQcmVzZW50LnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlci5vYnNlcnZlKGlvbk1vZGFsV3JhcHBlcik7XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudG9vbGJhckJ1dHRvbnNRdWVyeSkge1xuICAgICAgdGhpcy50b29sYmFyQnV0dG9ucyA9IHRoaXMudG9vbGJhckJ1dHRvbnNRdWVyeS5tYXAoKGJ1dHRvblJlZikgPT4gYnV0dG9uUmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgICB0aGlzLmNoZWNrRm9yRW1iZWRkZWRFbGVtZW50cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0ZvckVtYmVkZGVkRWxlbWVudHMoKSB7XG4gICAgdGhpcy5tb3ZlRW1iZWRkZWRFbGVtZW50cygpO1xuICAgIHRoaXMub2JzZXJ2ZUVtYmVkZGVkRWxlbWVudHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZUhlYWRlclJlc2l6ZSgpIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS5vYnNlcnZlKHRoaXMuaW9uSGVhZGVyRWxlbWVudC5uYXRpdmVFbGVtZW50LCAoZW50cnkpID0+IHtcbiAgICAgIGNvbnN0IFtwcm9wZXJ0eSwgcGl4ZWxWYWx1ZV0gPSBbJy0taGVhZGVyLWhlaWdodCcsIGAke2VudHJ5LmNvbnRlbnRSZWN0LmhlaWdodH1weGBdO1xuICAgICAgdGhpcy5zZXRDc3NWYXIodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHByb3BlcnR5LCBwaXhlbFZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbW92ZUVtYmVkZGVkRWxlbWVudHMoKSB7XG4gICAgY29uc3QgcGFyZW50RWxlbWVudCA9IHRoaXMuZ2V0RW1iZWRkZWRDb21wb25lbnRFbGVtZW50KCk7XG4gICAgaWYgKHBhcmVudEVsZW1lbnQpIHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuZWxlbWVudFRvUGFyZW50TWFwKS5mb3JFYWNoKChbdGFnTmFtZSwgZ2V0TmV3UGFyZW50XSkgPT4ge1xuICAgICAgICBjb25zdCBlbWJlZGRlZEVsZW1lbnQgPSBwYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KHRhZ05hbWUpO1xuICAgICAgICBpZiAoZW1iZWRkZWRFbGVtZW50KSB7XG4gICAgICAgICAgdGhpcy5tb3ZlQ2hpbGQoZW1iZWRkZWRFbGVtZW50LCBnZXROZXdQYXJlbnQoKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuRm9ySW9uTW9kYWxEaWRQcmVzZW50KCkge1xuICAgIGlmICh0aGlzLmlvbk1vZGFsRWxlbWVudCkge1xuICAgICAgdGhpcy5pb25Nb2RhbEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignaW9uTW9kYWxEaWRQcmVzZW50JywgKCkgPT4ge1xuICAgICAgICB0aGlzLmlvbk1vZGFsRGlkUHJlc2VudC5uZXh0KCk7XG4gICAgICAgIHRoaXMuaW9uTW9kYWxEaWRQcmVzZW50LmNvbXBsZXRlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxpc3RlbkZvcklvbk1vZGFsV2lsbERpc21pc3MoKSB7XG4gICAgaWYgKHRoaXMuaW9uTW9kYWxFbGVtZW50KSB7XG4gICAgICB0aGlzLmlvbk1vZGFsRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdpb25Nb2RhbFdpbGxEaXNtaXNzJywgKCkgPT4ge1xuICAgICAgICB0aGlzLmlvbk1vZGFsV2lsbERpc21pc3MubmV4dCgpO1xuICAgICAgICB0aGlzLmlvbk1vZGFsV2lsbERpc21pc3MuY29tcGxldGUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNjcm9sbFRvVG9wKHNjcm9sbER1cmF0aW9uPzogS2lyYnlBbmltYXRpb24uRHVyYXRpb24pIHtcbiAgICB0aGlzLmlvbkNvbnRlbnQuc2Nyb2xsVG9Ub3Aoc2Nyb2xsRHVyYXRpb24gfHwgMCk7XG4gIH1cblxuICBzY3JvbGxUb0JvdHRvbShzY3JvbGxEdXJhdGlvbj86IEtpcmJ5QW5pbWF0aW9uLkR1cmF0aW9uKSB7XG4gICAgdGhpcy5pb25Db250ZW50LnNjcm9sbFRvQm90dG9tKHNjcm9sbER1cmF0aW9uIHx8IDApO1xuICB9XG5cbiAgYXN5bmMgY2xvc2UoZGF0YT86IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5pb25Nb2RhbEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmtleWJvYXJkVmlzaWJsZSB8fCAhdGhpcy52aWV3cG9ydFJlc2l6ZWQpIHtcbiAgICAgIC8vIE5vIGtleWJvYXJkIHZpc2libGUgb3Igdmlld3BvcnQgbm90IHJlc2l6ZWQ6XG4gICAgICAvLyBEaXNtaXNzIG1vZGFsIGFuZCByZXR1cm46XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5kZWxheWVkQ2xvc2VUaW1lb3V0SWQpO1xuICAgICAgYXdhaXQgdGhpcy5pb25Nb2RhbEVsZW1lbnQuZGlzbWlzcyhkYXRhKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBLZXlib2FyZCB2aXNpYmxlOlxuICAgIC8vIEJsdXIgYWN0aXZlIGVsZW1lbnQgYW5kIHdhaXQgZm9yIGtleWJvYXJkIHRvIGhpZGUsXG4gICAgLy8gdGhlbiBkaXNtaXNzIG1vZGFsIGFuZCByZXR1cm46XG4gICAgdGhpcy5ibHVyQWN0aXZlRWxlbWVudCgpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgdGhpcy5kZWxheWVkQ2xvc2UgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaW9uTW9kYWxFbGVtZW50LmRpc21pc3MoZGF0YSk7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH07XG4gICAgICB0aGlzLmRlbGF5ZWRDbG9zZVRpbWVvdXRJZCA9IHNldFRpbWVvdXQoXG4gICAgICAgIHRoaXMuZGVsYXllZENsb3NlLFxuICAgICAgICBNb2RhbFdyYXBwZXJDb21wb25lbnQuS0VZQk9BUkRfSElERV9ERUxBWV9JTl9NU1xuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpmb2N1cycpXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpmb2N1c291dCcpXG4gIG9uRm9jdXNDaGFuZ2UoKSB7XG4gICAgLy8gVGhpcyBmaXhlcyBhbiB1bmRlc2lyZWQgc2Nyb2xsIGJlaGF2aW91ciBvY2N1cnJpbmcgb24ga2V5Ym9hcmQtdGFiYmluZyBiYWNrd2FyZHMgKHdpdGggc2hpZnQrdGFiKTpcbiAgICB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuc2Nyb2xsVG8oeyB0b3A6IHRoaXMuc2Nyb2xsWSB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzppb25LZXlib2FyZERpZFNob3cnLCBbJyRldmVudC5kZXRhaWwua2V5Ym9hcmRIZWlnaHQnXSlcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWJvYXJkV2lsbFNob3cnLCBbJyRldmVudC5rZXlib2FyZEhlaWdodCddKVxuICBfb25LZXlib2FyZFNob3coa2V5Ym9hcmRIZWlnaHQ6IG51bWJlcikge1xuICAgIHRoaXMuc2V0S2V5Ym9hcmRWaXNpYmlsaXR5KGtleWJvYXJkSGVpZ2h0KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzppb25LZXlib2FyZERpZEhpZGUnKVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5Ym9hcmRXaWxsSGlkZScpXG4gIF9vbktleWJvYXJkSGlkZSgpIHtcbiAgICB0aGlzLnNldEtleWJvYXJkVmlzaWJpbGl0eSgwKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlQ29udGVudE1heEhlaWdodChmcmVlemU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBzaG91bGRUb2dnbGVNYXhIZWlnaHQgPVxuICAgICAgdGhpcy5jb25maWcuZmxhdm9yID09PSAnbW9kYWwnICYmIHRoaXMucGxhdGZvcm0uaXNQaGFibGV0T3JCaWdnZXIoKTtcbiAgICBpZiAoIXNob3VsZFRvZ2dsZU1heEhlaWdodCkgcmV0dXJuO1xuICAgIGNvbnN0IHN0eWxlID0gJ21heC1oZWlnaHQnO1xuICAgIGNvbnN0IGNvbnRlbnRFbGVtZW50ID0gdGhpcy5pb25Db250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgaWYgKGZyZWV6ZSkge1xuICAgICAgICBjb25zdCBjb250ZW50SGVpZ2h0ID0gY29udGVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGNvbnRlbnRFbGVtZW50LCBzdHlsZSwgYCR7Y29udGVudEhlaWdodH1weGApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShjb250ZW50RWxlbWVudCwgc3R5bGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRLZXlib2FyZFZpc2liaWxpdHkoa2V5Ym9hcmRIZWlnaHQ6IG51bWJlcikge1xuICAgIGNvbnN0IGtleWJvYXJkQWxyZWFkeVZpc2libGUgPSBrZXlib2FyZEhlaWdodCA+IDAgJiYgdGhpcy5rZXlib2FyZFZpc2libGU7XG4gICAgY29uc3Qga2V5Ym9hcmRBbHJlYWR5SGlkZGVuID0ga2V5Ym9hcmRIZWlnaHQgPT09IDAgJiYgIXRoaXMua2V5Ym9hcmRWaXNpYmxlO1xuICAgIGlmIChrZXlib2FyZEFscmVhZHlWaXNpYmxlIHx8IGtleWJvYXJkQWxyZWFkeUhpZGRlbikgcmV0dXJuO1xuICAgIHRoaXMua2V5Ym9hcmRWaXNpYmxlID0ga2V5Ym9hcmRIZWlnaHQgPiAwO1xuICAgIHRoaXMudG9nZ2xlQ29udGVudE1heEhlaWdodCh0aGlzLmtleWJvYXJkVmlzaWJsZSk7XG4gICAgdGhpcy5zZXRLZXlib2FyZE92ZXJsYXAoa2V5Ym9hcmRIZWlnaHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRLZXlib2FyZE92ZXJsYXAoa2V5Ym9hcmRIZWlnaHQ6IG51bWJlciwgZWxlbWVudDogRWxlbWVudCkge1xuICAgIGlmIChrZXlib2FyZEhlaWdodCA8PSAwIHx8ICFlbGVtZW50KSByZXR1cm4gMDtcbiAgICBjb25zdCBkaXN0YW5jZUZyb21WaWV3cG9ydEJvdHRvbVRvRWxlbWVudCA9IE1hdGguZmxvb3IoXG4gICAgICB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuaW5uZXJIZWlnaHQgLSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbVxuICAgICk7XG4gICAgcmV0dXJuIE1hdGgubWF4KGtleWJvYXJkSGVpZ2h0IC0gZGlzdGFuY2VGcm9tVmlld3BvcnRCb3R0b21Ub0VsZW1lbnQsIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDc3NWYXIoZWxlbWVudDogRWxlbWVudCwgcHJvcGVydHk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuem9uZS5ydW4oKCkgPT5cbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZWxlbWVudCwgcHJvcGVydHksIHZhbHVlLCBSZW5kZXJlclN0eWxlRmxhZ3MyLkRhc2hDYXNlKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZUNzc0NsYXNzKGVsZW1lbnQ6IEVsZW1lbnQsIGtsYXNzOiBzdHJpbmcsIGNvbmRpdGlvbjogYm9vbGVhbikge1xuICAgIHRoaXMuem9uZS5ydW4oKCkgPT5cbiAgICAgIGNvbmRpdGlvbiA/IHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoZWxlbWVudCwga2xhc3MpIDogdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhlbGVtZW50LCBrbGFzcylcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRLZXlib2FyZE92ZXJsYXAoa2V5Ym9hcmRIZWlnaHQ6IG51bWJlcikge1xuICAgIHRoaXMudG9nZ2xlQ3NzQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdrZXlib2FyZC12aXNpYmxlJywga2V5Ym9hcmRIZWlnaHQgPiAwKTtcbiAgICBjb25zdCBrZXlib2FyZE92ZXJsYXAgPSB0aGlzLmdldEtleWJvYXJkT3ZlcmxhcChrZXlib2FyZEhlaWdodCwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIGxldCBzbmFwRm9vdGVyVG9LZXlib2FyZCA9IGZhbHNlO1xuICAgIGNvbnN0IGVtYmVkZGVkRm9vdGVyRWxlbWVudCA9IHRoaXMuZ2V0RW1iZWRkZWRGb290ZXJFbGVtZW50KCk7XG4gICAgaWYgKGVtYmVkZGVkRm9vdGVyRWxlbWVudCkge1xuICAgICAgdGhpcy5zZXRDc3NWYXIoZW1iZWRkZWRGb290ZXJFbGVtZW50LCAnLS1rZXlib2FyZC1vZmZzZXQnLCBgJHtrZXlib2FyZE92ZXJsYXB9cHhgKTtcbiAgICAgIHNuYXBGb290ZXJUb0tleWJvYXJkID0gZW1iZWRkZWRGb290ZXJFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnc25hcC10by1rZXlib2FyZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRlbnRFbGVtZW50ID0gdGhpcy5pb25Db250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGNvbnRlbnRLZXlib2FyZE9mZnNldCA9IHNuYXBGb290ZXJUb0tleWJvYXJkXG4gICAgICA/IGtleWJvYXJkT3ZlcmxhcFxuICAgICAgOiB0aGlzLmdldEtleWJvYXJkT3ZlcmxhcChrZXlib2FyZEhlaWdodCwgY29udGVudEVsZW1lbnQpO1xuICAgIHRoaXMuc2V0Q3NzVmFyKGNvbnRlbnRFbGVtZW50LCAnLS1rZXlib2FyZC1vZmZzZXQnLCBgJHtjb250ZW50S2V5Ym9hcmRPZmZzZXR9cHhgKTtcbiAgfVxuXG4gIG9uSGVhZGVyVG91Y2hTdGFydChldmVudDogVG91Y2hFdmVudCkge1xuICAgIGlmICh0aGlzLmtleWJvYXJkVmlzaWJsZSkge1xuICAgICAgY29uc3QgaXNUb29sYmFyQnV0dG9uVG91Y2ggPSB0aGlzLnRvb2xiYXJCdXR0b25zLnNvbWUoKGJ1dHRvbikgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmXG4gICAgICAgICAgKGV2ZW50LnRhcmdldCA9PT0gYnV0dG9uIHx8IGJ1dHRvbi5jb250YWlucyhldmVudC50YXJnZXQpKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICAvLyBQcmV2ZW50IGJsdXIgaWYgZXZlbnQgdGFyZ2V0IGlzIGEgdG9vbGJhciBidXR0b25cbiAgICAgIC8vICh0byBhbGxvdyB0YXAgZXZlbnQgdG8gZmlyZSk6XG4gICAgICBpZiAoIWlzVG9vbGJhckJ1dHRvblRvdWNoKSB7XG4gICAgICAgIHRoaXMuYmx1ckFjdGl2ZUVsZW1lbnQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgX29uV2luZG93UmVzaXplKCkge1xuICAgIHRoaXMuc2V0Vmlld3BvcnRIZWlnaHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Vmlld3BvcnRIZWlnaHQoKSB7XG4gICAgY29uc3QgdmggPSAodGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmlubmVySGVpZ2h0ICogMC4wMSkudG9GaXhlZCgyKTtcbiAgICB0aGlzLnNldENzc1Zhcih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJy0tdmgnLCBgJHt2aH1weGApO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlVmlld3BvcnRSZXNpemUoKSB7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2Uub2JzZXJ2ZSh0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZG9jdW1lbnQuYm9keSwgKGVudHJ5KSA9PlxuICAgICAgdGhpcy5vblZpZXdwb3J0UmVzaXplKGVudHJ5KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9uVmlld3BvcnRSZXNpemUoZW50cnk6IFJlc2l6ZU9ic2VydmVyRW50cnkpIHtcbiAgICBpZiAoIXRoaXMuaW5pdGlhbFZpZXdwb3J0SGVpZ2h0KSB7XG4gICAgICAvLyBJbml0aWFsIG9ic2VydmUgY2FsbGJhY2ssIHJlZ2lzdGVyIGluaXRpYWwgaGVpZ2h0OlxuICAgICAgdGhpcy5pbml0aWFsVmlld3BvcnRIZWlnaHQgPSBlbnRyeS5jb250ZW50UmVjdC5oZWlnaHQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudmlld3BvcnRSZXNpemVkID0gZW50cnkuY29udGVudFJlY3QuaGVpZ2h0ICE9PSB0aGlzLmluaXRpYWxWaWV3cG9ydEhlaWdodDtcbiAgICBpZiAoIXRoaXMudmlld3BvcnRSZXNpemVkKSB7XG4gICAgICAvLyBXZSBhcmUgYmFjayB0byBpbml0aWFsIHZpZXcgcG9ydCBoZWlnaHQsIGNoZWNrIGZvciBwZW5kaW5nIGNsb3NlIGZ1bmM6XG4gICAgICBpZiAodGhpcy5kZWxheWVkQ2xvc2VUaW1lb3V0SWQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZGVsYXllZENsb3NlVGltZW91dElkKTtcbiAgICAgICAgdGhpcy5kZWxheWVkQ2xvc2UoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy52aWV3cG9ydFJlc2l6ZS5uZXh0KCk7XG4gIH1cblxuICBibHVyQWN0aXZlRWxlbWVudCgpIHtcbiAgICBjb25zdCBCTFVSX1RBUkdFVF9TRUxFQ1RPUiA9ICdpbnB1dCwgdGV4dGFyZWEnO1xuICAgIGlmICh0aGlzLmtleWJvYXJkVmlzaWJsZSkge1xuICAgICAgaWYgKFxuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiZcbiAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5tYXRjaGVzKEJMVVJfVEFSR0VUX1NFTEVDVE9SKVxuICAgICAgKSB7XG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFRvUGFyZW50TWFwOiB7IFtrZXk6IHN0cmluZ106ICgpID0+IEhUTUxFbGVtZW50IH0gPSB7XG4gICAgJ0tJUkJZLU1PREFMLUZPT1RFUic6ICgpID0+IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICdLSVJCWS1QQUdFLVRJVExFJzogKCkgPT4gdGhpcy5pb25UaXRsZUVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAnS0lSQlktUEFHRS1QUk9HUkVTUyc6ICgpID0+IHRoaXMuaW9uVG9vbGJhckVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgfTtcblxuICBwcml2YXRlIGNsZWFyRW1iZWRkZWRFbGVtZW50cygpIHtcbiAgICBPYmplY3QuZW50cmllcyh0aGlzLmVsZW1lbnRUb1BhcmVudE1hcCkuZm9yRWFjaCgoW3RhZ05hbWUsIGdldFBhcmVudF0pID0+IHtcbiAgICAgIGNvbnN0IGVtYmVkZGVkRWxlbWVudCA9IGdldFBhcmVudCgpLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KGA6c2NvcGUgPiAke3RhZ05hbWV9YCk7XG4gICAgICB0aGlzLnJlbW92ZUNoaWxkKGVtYmVkZGVkRWxlbWVudCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldEVtYmVkZGVkQ29tcG9uZW50RWxlbWVudCgpIHtcbiAgICByZXR1cm4gISF0aGlzLmNvbmZpZy5tb2RhbFJvdXRlXG4gICAgICA/IHRoaXMuaW9uQ29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5sYXN0RWxlbWVudENoaWxkXG4gICAgICA6IHRoaXMuaW9uQ29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RW1iZWRkZWRGb290ZXJFbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50Pigna2lyYnktbW9kYWwtZm9vdGVyJyk7XG4gIH1cblxuICBwcml2YXRlIG1vdmVDaGlsZChjaGlsZDogRWxlbWVudCwgbmV3UGFyZW50OiBFbGVtZW50KSB7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChjaGlsZC5wYXJlbnRFbGVtZW50LCBjaGlsZCk7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChuZXdQYXJlbnQsIGNoaWxkKTtcbiAgICBpZiAoY2hpbGQudGFnTmFtZSA9PT0gJ0tJUkJZLU1PREFMLUZPT1RFUicpIHtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLm9ic2VydmUoY2hpbGQsIChlbnRyeSkgPT4ge1xuICAgICAgICBjb25zdCBbcHJvcGVydHksIHBpeGVsVmFsdWVdID0gW1xuICAgICAgICAgICctLWZvb3Rlci1oZWlnaHQnLFxuICAgICAgICAgIGAke01hdGguZmxvb3IoZW50cnkuY29udGVudFJlY3QuaGVpZ2h0KX1weGAsXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuc2V0Q3NzVmFyKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBwcm9wZXJ0eSwgcGl4ZWxWYWx1ZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUNoaWxkKGNoaWxkPzogRWxlbWVudCkge1xuICAgIGlmICghIWNoaWxkKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKGNoaWxkLnBhcmVudEVsZW1lbnQsIGNoaWxkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVFbWJlZGRlZEVsZW1lbnRzKCkge1xuICAgIGNvbnN0IHBhcmVudEVsZW1lbnQgPSB0aGlzLmdldEVtYmVkZGVkQ29tcG9uZW50RWxlbWVudCgpO1xuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKHBhcmVudEVsZW1lbnQsIHtcbiAgICAgIGNoaWxkTGlzdDogdHJ1ZSwgLy8gTGlzdGVuIGZvciBhZGRpdGlvbiBvciByZW1vdmFsIG9mIGNoaWxkIG5vZGVzXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUVtYmVkZGVkRWxlbWVudHNNdXRhdGlvbk9ic2VydmVyKCk6IE11dGF0aW9uT2JzZXJ2ZXIge1xuICAgIGNvbnN0IG9ic2VydmVkRWxlbWVudHMgPSBPYmplY3Qua2V5cyh0aGlzLmVsZW1lbnRUb1BhcmVudE1hcCk7XG4gICAgY29uc3QgY2FsbGJhY2sgPSAobXV0YXRpb25zOiBNdXRhdGlvblJlY29yZFtdKSA9PiB7XG4gICAgICBjb25zdCBhZGRlZE5vZGVzID0gbXV0YXRpb25zXG4gICAgICAgIC5maWx0ZXIoKG11dGF0aW9uKSA9PiBtdXRhdGlvbi50eXBlID09PSAnY2hpbGRMaXN0JykgLy8gRmlsdGVyIGZvciBtdXRhdGlvbiB0byB0aGUgdHJlZSBvZiBub2Rlc1xuICAgICAgICAubWFwKChtdXRhdGlvbikgPT4ge1xuICAgICAgICAgIC8vIE9ubHkgY2hlY2sgZm9yIGFkZGVkTm9kZXMgYXMgcmVtb3ZhbCBpcyBoYW5kbGVkIGJ5IHRoZSBBbmd1bGFyIHJlbmRlcmVyOlxuICAgICAgICAgIHJldHVybiBBcnJheS5mcm9tKG11dGF0aW9uLmFkZGVkTm9kZXMpLmZpbHRlcigobm9kZSkgPT5cbiAgICAgICAgICAgIG9ic2VydmVkRWxlbWVudHMuaW5jbHVkZXMobm9kZS5ub2RlTmFtZSlcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcblxuICAgICAgY29uc3QgYWRkZWRFbGVtZW50cyA9IEFycmF5LnByb3RvdHlwZVxuICAgICAgICAuY29uY2F0KC4uLmFkZGVkTm9kZXMpXG4gICAgICAgIC5maWx0ZXIoKG5vZGUpOiBub2RlIGlzIEhUTUxFbGVtZW50ID0+IG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCk7XG5cbiAgICAgIGFkZGVkRWxlbWVudHMuZm9yRWFjaCgoYWRkZWRFbGVtZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1BhcmVudEVsZW1lbnQgPSB0aGlzLmVsZW1lbnRUb1BhcmVudE1hcFthZGRlZEVsZW1lbnQubm9kZU5hbWVdKCk7XG4gICAgICAgIC8vIE1vdmUgZW1iZWRkZWQgZWxlbWVudCBvdXQgb2YgY29udGVudCBhbmQgYXBwZW5kIHRvIG5ldyBwYXJlbnQ6XG4gICAgICAgIHRoaXMubW92ZUNoaWxkKGFkZGVkRWxlbWVudCwgbmV3UGFyZW50RWxlbWVudCk7XG4gICAgICB9KTtcbiAgICB9O1xuICAgIHJldHVybiBuZXcgTXV0YXRpb25PYnNlcnZlcihjYWxsYmFjayk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU1vZGFsV3JhcHBlckludGVyc2VjdGlvbk9ic2VydmVyKCk6IEludGVyc2VjdGlvbk9ic2VydmVyIHtcbiAgICBjb25zdCBjYWxsYmFjazogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjayA9IChlbnRyaWVzKSA9PiB7XG4gICAgICBjb25zdCBlbnRyeSA9IGVudHJpZXNbMF07XG4gICAgICBjb25zdCBpc1RvdWNoaW5nVmlld3BvcnQgPSBlbnRyeS5pbnRlcnNlY3Rpb25SYXRpbyA8IDE7XG4gICAgICBpZiAoaXNUb3VjaGluZ1ZpZXdwb3J0KSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoZW50cnkudGFyZ2V0LCAnZnVsbC1oZWlnaHQnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZW50cnkudGFyZ2V0LCAnZnVsbC1oZWlnaHQnKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gU2V0IGV4cGxpY2l0IHZpZXdwb3J0IHJvb3QgaWYgd2l0aGluIGlmcmFtZTpcbiAgICBjb25zdCByb290ID0gdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmZyYW1lRWxlbWVudFxuICAgICAgPyAodGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmRvY3VtZW50IGFzIGFueSkgLy8gQ2FzdCB0byBgYW55YCBhcyBUeXBlc2NyaXB0IGxpYi5kLnRzIGRvZXNudCBzdXBwb3J0IERvY3VtZW50IHR5cGUgeWV0XG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBvcHRpb25zOiBJbnRlcnNlY3Rpb25PYnNlcnZlckluaXQgPSB7XG4gICAgICByb290TWFyZ2luOiAnMHB4IDBweCAtMXB4IDBweCcsIC8vIGBib3R0b206IC0xcHhgIGFsbG93cyBjaGVja2luZyB3aGVuIHRoZSBtb2RhbCBib3R0b20gaXMgdG91Y2hpbmcgdGhlIHZpZXdwb3J0XG4gICAgICByb290LFxuICAgICAgdGhyZXNob2xkOiBbMC45OSwgMV0sXG4gICAgfTtcblxuICAgIHJldHVybiBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoY2FsbGJhY2ssIG9wdGlvbnMpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMucm91dGVyT3V0bGV0LmlzQWN0aXZhdGVkKSB7XG4gICAgICB0aGlzLnJvdXRlck91dGxldC5kZWFjdGl2YXRlKCk7XG4gICAgfVxuICAgIC8vY2xlYW4gdXAgdGhlIG9ic2VydmVyXG4gICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICBkZWxldGUgdGhpcy5fbXV0YXRpb25PYnNlcnZlcjtcbiAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICBkZWxldGUgdGhpcy5faW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XG4gICAgaWYgKHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlKSB7XG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS51bm9ic2VydmUodGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmRvY3VtZW50LmJvZHkpO1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2UudW5vYnNlcnZlKHRoaXMuaW9uSGVhZGVyRWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLnVub2JzZXJ2ZSh0aGlzLmdldEVtYmVkZGVkRm9vdGVyRWxlbWVudCgpKTtcbiAgICB9XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=
|
|
468
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtd3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbnN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvbW9kYWwvbW9kYWwtd3JhcHBlci9tb2RhbC13cmFwcGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULHdCQUF3QixFQUN4QixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFHTixTQUFTLEVBQ1QsU0FBUyxFQUNULG1CQUFtQixFQUNuQixTQUFTLEVBQ1QsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBa0IsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBRTdGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUdyRCxPQUFPLEVBQUUsZUFBZSxF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LFNBQVMsU0FBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO3dCQWlDeEMsV0FBVyxTQUFDLGNBQWM7NEJBOEwxQixZQUFZLFNBQUMsY0FBYyxjQUMzQixZQUFZLFNBQUMsaUJBQWlCOzhCQU05QixZQUFZLFNBQUMsMkJBQTJCLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQyxjQUMxRSxZQUFZLFNBQUMseUJBQXlCLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzs4QkFLakUsWUFBWSxTQUFDLDJCQUEyQixjQUN4QyxZQUFZLFNBQUMseUJBQXlCOzhCQW1GdEMsWUFBWSxTQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgUmVuZGVyZXJTdHlsZUZsYWdzMixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlck91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25Db250ZW50LCBJb25IZWFkZXIsIElvblRpdGxlLCBJb25Ub29sYmFyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlyc3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRGVzaWduVG9rZW5IZWxwZXIgfSBmcm9tICdAa2lyYnlkZXNpZ24vY29yZSc7XG5cbmltcG9ydCB7IEtpcmJ5QW5pbWF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vYW5pbWF0aW9uL2tpcmJ5LWFuaW1hdGlvbic7XG5pbXBvcnQgeyBQbGF0Zm9ybVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9oZWxwZXJzL3BsYXRmb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHsgV2luZG93UmVmIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvd2luZG93LXJlZic7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZXNpemVPYnNlcnZlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvcmVzaXplLW9ic2VydmVyL3Jlc2l6ZS1vYnNlcnZlci5zZXJ2aWNlJztcbmltcG9ydCB7IFJlc2l6ZU9ic2VydmVyRW50cnkgfSBmcm9tICcuLi8uLi9zaGFyZWQvcmVzaXplLW9ic2VydmVyL3R5cGVzL3Jlc2l6ZS1vYnNlcnZlci1lbnRyeSc7XG5pbXBvcnQgeyBNb2RhbCB9IGZyb20gJy4uL3NlcnZpY2VzL21vZGFsLmludGVyZmFjZXMnO1xuXG5pbXBvcnQgeyBNb2RhbENvbmZpZyB9IGZyb20gJy4vY29uZmlnL21vZGFsLWNvbmZpZyc7XG5pbXBvcnQgeyBDT01QT05FTlRfUFJPUFMgfSBmcm9tICcuL2NvbmZpZy9tb2RhbC1jb25maWcuaGVscGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktbW9kYWwtd3JhcHBlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC13cmFwcGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW9kYWwtd3JhcHBlci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1vZGFsLCB1c2VFeGlzdGluZzogTW9kYWxXcmFwcGVyQ29tcG9uZW50IH1dLFxufSlcbmV4cG9ydCBjbGFzcyBNb2RhbFdyYXBwZXJDb21wb25lbnQgaW1wbGVtZW50cyBNb2RhbCwgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBzdGF0aWMgcmVhZG9ubHkgS0VZQk9BUkRfSElERV9ERUxBWV9JTl9NUyA9IDEwMDtcblxuICBzY3JvbGxZOiBudW1iZXIgPSBNYXRoLmFicyh0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuc2Nyb2xsWSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgVklFV1BPUlRfUkVTSVpFX0RFQk9VTkNFX1RJTUUgPSAxMDA7XG5cbiAgc2V0IHNjcm9sbERpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5pb25Db250ZW50LnNjcm9sbFkgPSAhZGlzYWJsZWQ7XG4gIH1cblxuICBASW5wdXQoKSBjb25maWc6IE1vZGFsQ29uZmlnO1xuICBjb21wb25lbnRQcm9wc0luamVjdG9yOiBJbmplY3RvcjtcblxuICBAVmlld0NoaWxkcmVuKEJ1dHRvbkNvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pIHByaXZhdGUgdG9vbGJhckJ1dHRvbnNRdWVyeTogUXVlcnlMaXN0PFxuICAgIEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+XG4gID47XG4gIEBWaWV3Q2hpbGQoSW9uQ29udGVudCwgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBpb25Db250ZW50OiBJb25Db250ZW50O1xuICBAVmlld0NoaWxkKElvbkNvbnRlbnQsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pIHByaXZhdGUgaW9uQ29udGVudEVsZW1lbnQ6IEVsZW1lbnRSZWY8XG4gICAgSFRNTElvbkNvbnRlbnRFbGVtZW50XG4gID47XG4gIEBWaWV3Q2hpbGQoSW9uSGVhZGVyLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KSBwcml2YXRlIGlvbkhlYWRlckVsZW1lbnQ6IEVsZW1lbnRSZWY8XG4gICAgSFRNTElvbkhlYWRlckVsZW1lbnRcbiAgPjtcbiAgQFZpZXdDaGlsZChJb25Ub29sYmFyLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KSBwcml2YXRlIGlvblRvb2xiYXJFbGVtZW50OiBFbGVtZW50UmVmPFxuICAgIEhUTUxJb25Ub29sYmFyRWxlbWVudFxuICA+O1xuICBAVmlld0NoaWxkKElvblRpdGxlLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KSBwcml2YXRlIGlvblRpdGxlRWxlbWVudDogRWxlbWVudFJlZjxcbiAgICBIVE1MSW9uVGl0bGVFbGVtZW50XG4gID47XG4gIEBWaWV3Q2hpbGQoUm91dGVyT3V0bGV0LCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIHJvdXRlck91dGxldDogUm91dGVyT3V0bGV0O1xuXG4gIHByaXZhdGUga2V5Ym9hcmRWaXNpYmxlID0gZmFsc2U7XG4gIHByaXZhdGUgdG9vbGJhckJ1dHRvbnM6IEhUTUxCdXR0b25FbGVtZW50W10gPSBbXTtcbiAgcHJpdmF0ZSBkZWxheWVkQ2xvc2UgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBkZWxheWVkQ2xvc2VUaW1lb3V0SWQ7XG4gIHByaXZhdGUgaW5pdGlhbFZpZXdwb3J0SGVpZ2h0OiBudW1iZXI7XG4gIHByaXZhdGUgdmlld3BvcnRSZXNpemVkID0gZmFsc2U7XG4gIHByaXZhdGUgaW9uTW9kYWxFbGVtZW50PzogSFRNTElvbk1vZGFsRWxlbWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBpb25Nb2RhbERpZFByZXNlbnQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICByZWFkb25seSBkaWRQcmVzZW50ID0gdGhpcy5pb25Nb2RhbERpZFByZXNlbnQudG9Qcm9taXNlKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW9uTW9kYWxXaWxsRGlzbWlzcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHJlYWRvbmx5IHdpbGxDbG9zZSA9IHRoaXMuaW9uTW9kYWxXaWxsRGlzbWlzcy50b1Byb21pc2UoKTtcbiAgcHJpdmF0ZSB2aWV3cG9ydFJlc2l6ZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgdmlld3BvcnRSZXNpemUkID0gdGhpcy52aWV3cG9ydFJlc2l6ZVxuICAgIC5hc09ic2VydmFibGUoKVxuICAgIC5waXBlKGRlYm91bmNlVGltZSh0aGlzLlZJRVdQT1JUX1JFU0laRV9ERUJPVU5DRV9USU1FKSk7XG4gIHByaXZhdGUgX211dGF0aW9uT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXI7XG4gIHByaXZhdGUgZ2V0IG11dGF0aW9uT2JzZXJ2ZXIoKTogTXV0YXRpb25PYnNlcnZlciB7XG4gICAgaWYgKCF0aGlzLl9tdXRhdGlvbk9ic2VydmVyKSB7XG4gICAgICB0aGlzLl9tdXRhdGlvbk9ic2VydmVyID0gdGhpcy5jcmVhdGVFbWJlZGRlZEVsZW1lbnRzTXV0YXRpb25PYnNlcnZlcigpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbXV0YXRpb25PYnNlcnZlcjtcbiAgfVxuICBwcml2YXRlIF9pbnRlcnNlY3Rpb25PYnNlcnZlcjogSW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XG4gIHByaXZhdGUgZ2V0IGludGVyc2VjdGlvbk9ic2VydmVyKCk6IEludGVyc2VjdGlvbk9ic2VydmVyIHtcbiAgICBpZiAoIXRoaXMuX2ludGVyc2VjdGlvbk9ic2VydmVyKSB7XG4gICAgICB0aGlzLl9pbnRlcnNlY3Rpb25PYnNlcnZlciA9IHRoaXMuY3JlYXRlTW9kYWxXcmFwcGVySW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2ludGVyc2VjdGlvbk9ic2VydmVyO1xuICB9XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZHJhd2VyJylcbiAgZ2V0IF9pc0RyYXdlcigpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZmxhdm9yID09PSAnZHJhd2VyJztcbiAgfVxuXG4gIHdpbGxDbG9zZSQgPSB0aGlzLmlvbk1vZGFsV2lsbERpc21pc3MucGlwZShmaXJzdCgpKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIHJlc2l6ZU9ic2VydmVyU2VydmljZTogUmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgcHJpdmF0ZSB3aW5kb3dSZWY6IFdpbmRvd1JlZixcbiAgICBwcml2YXRlIHBsYXRmb3JtOiBQbGF0Zm9ybVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zZXRWaWV3cG9ydEhlaWdodCgpO1xuICAgIHRoaXMub2JzZXJ2ZVZpZXdwb3J0UmVzaXplKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlvbk1vZGFsRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsb3Nlc3QoJ2lvbi1tb2RhbCcpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVNpemluZygpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZU1vZGFsUm91dGUoKTtcbiAgICB0aGlzLmxpc3RlbkZvcklvbk1vZGFsRGlkUHJlc2VudCgpO1xuICAgIHRoaXMubGlzdGVuRm9ySW9uTW9kYWxXaWxsRGlzbWlzcygpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVJlc2l6ZU1vZGFsVG9Nb2RhbFdyYXBwZXIoKTtcbiAgICB0aGlzLmNvbXBvbmVudFByb3BzSW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDT01QT05FTlRfUFJPUFMsIHVzZVZhbHVlOiB0aGlzLmNvbmZpZy5jb21wb25lbnRQcm9wcyB9XSxcbiAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvcixcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVJlc2l6ZU1vZGFsVG9Nb2RhbFdyYXBwZXIoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmZsYXZvciA9PT0gJ2RyYXdlcicgJiYgdGhpcy5jb25maWcuaW50ZXJhY3RXaXRoQmFja2dyb3VuZCkge1xuICAgICAgbWVyZ2UodGhpcy5pb25Nb2RhbERpZFByZXNlbnQsIHRoaXMudmlld3BvcnRSZXNpemUkKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIC8vIHdhaXQgZm9yIHRlbXBsYXRlIHRvIHJlbmRlclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZG9tUmVjdCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgY29uc3QgZG9jdW1lbnQgPSB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBkb2N1bWVudC5jbGllbnRXaWR0aCAtIGRvbVJlY3QucmlnaHQ7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaW9uTW9kYWxFbGVtZW50LCAndG9wJywgYCR7ZG9tUmVjdC50b3B9cHhgKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pb25Nb2RhbEVsZW1lbnQsICdsZWZ0JywgYCR7ZG9tUmVjdC5sZWZ0fXB4YCk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaW9uTW9kYWxFbGVtZW50LCAncmlnaHQnLCBgJHtyaWdodH1weGApO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVTaXppbmcoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLnNpemUgPT09ICdmdWxsLWhlaWdodCcpIHJldHVybjtcbiAgICB0aGlzLnBhdGNoU2Nyb2xsRWxlbWVudFNpemUoKTtcbiAgICB0aGlzLm9ic2VydmVIZWFkZXJSZXNpemUoKTtcbiAgICB0aGlzLm9ic2VydmVNb2RhbEZ1bGxIZWlnaHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZU1vZGFsUm91dGUoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLm1vZGFsUm91dGUpIHtcbiAgICAgIHRoaXMub25TaWJsaW5nTW9kYWxSb3V0ZUFjdGl2YXRlZCh0aGlzLmNvbmZpZy5zaWJsaW5nTW9kYWxSb3V0ZUFjdGl2YXRlZCQpO1xuICAgICAgLy8gTG9hZCBjb21wb25lbnQgZnJvbSBtb2RhbC1yb3V0ZSBpbnNpZGUgcm91dGVyLW91dGxldDpcbiAgICAgIHRoaXMucm91dGVyT3V0bGV0LmFjdGl2YXRlV2l0aCh0aGlzLmNvbmZpZy5tb2RhbFJvdXRlLCB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvblNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkKHNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkJD86IE9ic2VydmFibGU8QWN0aXZhdGVkUm91dGU+KSB7XG4gICAgaWYgKCFzaWJsaW5nTW9kYWxSb3V0ZUFjdGl2YXRlZCQpIHJldHVybjtcbiAgICBzaWJsaW5nTW9kYWxSb3V0ZUFjdGl2YXRlZCQucGlwZSh0YWtlVW50aWwodGhpcy53aWxsQ2xvc2UkKSkuc3Vic2NyaWJlKChyb3V0ZSkgPT4ge1xuICAgICAgaWYgKHRoaXMucm91dGVyT3V0bGV0LmlzQWN0aXZhdGVkKSB7XG4gICAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgIHRoaXMucm91dGVyT3V0bGV0LmRlYWN0aXZhdGUoKTtcbiAgICAgICAgdGhpcy5jbGVhckVtYmVkZGVkRWxlbWVudHMoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucm91dGVyT3V0bGV0LmFjdGl2YXRlV2l0aChyb3V0ZSwgdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpO1xuICAgICAgdGhpcy5jaGVja0ZvckVtYmVkZGVkRWxlbWVudHMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcGF0Y2hTY3JvbGxFbGVtZW50U2l6ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBzdXBwb3J0c0Nzc1NoYWRvd1BhcnRzID0gJ3BhcnQnIGluIEhUTUxFbGVtZW50LnByb3RvdHlwZTtcbiAgICBpZiAoc3VwcG9ydHNDc3NTaGFkb3dQYXJ0cykgcmV0dXJuO1xuICAgIHRoaXMuaW9uQ29udGVudC5nZXRTY3JvbGxFbGVtZW50KCkudGhlbigoc2Nyb2xsRWxlbWVudCkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShzY3JvbGxFbGVtZW50LCAnaGVpZ2h0JywgJzEwMCUnKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoc2Nyb2xsRWxlbWVudCwgJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7XG4gICAgICBpZiAodGhpcy5jb25maWcuZmxhdm9yID09PSAnZHJhd2VyJykge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgIHNjcm9sbEVsZW1lbnQsXG4gICAgICAgICAgJ3RyYW5zaXRpb24nLFxuICAgICAgICAgICdwYWRkaW5nLWJvdHRvbSAnICsgRGVzaWduVG9rZW5IZWxwZXIuc29mdEtleWJvYXJkVHJhbnNpdGlvbkxlYXZlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVNb2RhbEZ1bGxIZWlnaHQoKSB7XG4gICAgY29uc3QgaW9uTW9kYWxXcmFwcGVyID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdDxIVE1MRWxlbWVudD4oJy5tb2RhbC13cmFwcGVyJyk7XG4gICAgaWYgKCFpb25Nb2RhbFdyYXBwZXIpIHJldHVybjtcbiAgICAvLyBTdGFydCBvYnNlcnZpbmcgd2hlbiBtb2RhbCBoYXMgZmluaXNoZWQgYW5pbWF0aW5nOlxuICAgIHRoaXMuZGlkUHJlc2VudC50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShpb25Nb2RhbFdyYXBwZXIpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRvb2xiYXJCdXR0b25zUXVlcnkpIHtcbiAgICAgIHRoaXMudG9vbGJhckJ1dHRvbnMgPSB0aGlzLnRvb2xiYXJCdXR0b25zUXVlcnkubWFwKChidXR0b25SZWYpID0+IGJ1dHRvblJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gICAgdGhpcy5jaGVja0ZvckVtYmVkZGVkRWxlbWVudHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tGb3JFbWJlZGRlZEVsZW1lbnRzKCkge1xuICAgIHRoaXMubW92ZUVtYmVkZGVkRWxlbWVudHMoKTtcbiAgICB0aGlzLm9ic2VydmVFbWJlZGRlZEVsZW1lbnRzKCk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVIZWFkZXJSZXNpemUoKSB7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2Uub2JzZXJ2ZSh0aGlzLmlvbkhlYWRlckVsZW1lbnQubmF0aXZlRWxlbWVudCwgKGVudHJ5KSA9PiB7XG4gICAgICBjb25zdCBbcHJvcGVydHksIHBpeGVsVmFsdWVdID0gWyctLWhlYWRlci1oZWlnaHQnLCBgJHtlbnRyeS5jb250ZW50UmVjdC5oZWlnaHR9cHhgXTtcbiAgICAgIHRoaXMuc2V0Q3NzVmFyKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBwcm9wZXJ0eSwgcGl4ZWxWYWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG1vdmVFbWJlZGRlZEVsZW1lbnRzKCkge1xuICAgIGNvbnN0IHBhcmVudEVsZW1lbnQgPSB0aGlzLmdldEVtYmVkZGVkQ29tcG9uZW50RWxlbWVudCgpO1xuICAgIGlmIChwYXJlbnRFbGVtZW50KSB7XG4gICAgICBPYmplY3QuZW50cmllcyh0aGlzLmVsZW1lbnRUb1BhcmVudE1hcCkuZm9yRWFjaCgoW3RhZ05hbWUsIGdldE5ld1BhcmVudF0pID0+IHtcbiAgICAgICAgY29uc3QgZW1iZWRkZWRFbGVtZW50ID0gcGFyZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50Pih0YWdOYW1lKTtcbiAgICAgICAgaWYgKGVtYmVkZGVkRWxlbWVudCkge1xuICAgICAgICAgIHRoaXMubW92ZUNoaWxkKGVtYmVkZGVkRWxlbWVudCwgZ2V0TmV3UGFyZW50KCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxpc3RlbkZvcklvbk1vZGFsRGlkUHJlc2VudCgpIHtcbiAgICBpZiAodGhpcy5pb25Nb2RhbEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuaW9uTW9kYWxFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2lvbk1vZGFsRGlkUHJlc2VudCcsICgpID0+IHtcbiAgICAgICAgdGhpcy5pb25Nb2RhbERpZFByZXNlbnQubmV4dCgpO1xuICAgICAgICB0aGlzLmlvbk1vZGFsRGlkUHJlc2VudC5jb21wbGV0ZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Gb3JJb25Nb2RhbFdpbGxEaXNtaXNzKCkge1xuICAgIGlmICh0aGlzLmlvbk1vZGFsRWxlbWVudCkge1xuICAgICAgdGhpcy5pb25Nb2RhbEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignaW9uTW9kYWxXaWxsRGlzbWlzcycsICgpID0+IHtcbiAgICAgICAgdGhpcy5pb25Nb2RhbFdpbGxEaXNtaXNzLm5leHQoKTtcbiAgICAgICAgdGhpcy5pb25Nb2RhbFdpbGxEaXNtaXNzLmNvbXBsZXRlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzY3JvbGxUb1RvcChzY3JvbGxEdXJhdGlvbj86IEtpcmJ5QW5pbWF0aW9uLkR1cmF0aW9uKSB7XG4gICAgdGhpcy5pb25Db250ZW50LnNjcm9sbFRvVG9wKHNjcm9sbER1cmF0aW9uIHx8IDApO1xuICB9XG5cbiAgc2Nyb2xsVG9Cb3R0b20oc2Nyb2xsRHVyYXRpb24/OiBLaXJieUFuaW1hdGlvbi5EdXJhdGlvbikge1xuICAgIHRoaXMuaW9uQ29udGVudC5zY3JvbGxUb0JvdHRvbShzY3JvbGxEdXJhdGlvbiB8fCAwKTtcbiAgfVxuXG4gIGFzeW5jIGNsb3NlKGRhdGE/OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuaW9uTW9kYWxFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5rZXlib2FyZFZpc2libGUgfHwgIXRoaXMudmlld3BvcnRSZXNpemVkKSB7XG4gICAgICAvLyBObyBrZXlib2FyZCB2aXNpYmxlIG9yIHZpZXdwb3J0IG5vdCByZXNpemVkOlxuICAgICAgLy8gRGlzbWlzcyBtb2RhbCBhbmQgcmV0dXJuOlxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZGVsYXllZENsb3NlVGltZW91dElkKTtcbiAgICAgIGF3YWl0IHRoaXMuaW9uTW9kYWxFbGVtZW50LmRpc21pc3MoZGF0YSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gS2V5Ym9hcmQgdmlzaWJsZTpcbiAgICAvLyBCbHVyIGFjdGl2ZSBlbGVtZW50IGFuZCB3YWl0IGZvciBrZXlib2FyZCB0byBoaWRlLFxuICAgIC8vIHRoZW4gZGlzbWlzcyBtb2RhbCBhbmQgcmV0dXJuOlxuICAgIHRoaXMuYmx1ckFjdGl2ZUVsZW1lbnQoKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgIHRoaXMuZGVsYXllZENsb3NlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmlvbk1vZGFsRWxlbWVudC5kaXNtaXNzKGRhdGEpO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9O1xuICAgICAgdGhpcy5kZWxheWVkQ2xvc2VUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KFxuICAgICAgICB0aGlzLmRlbGF5ZWRDbG9zZSxcbiAgICAgICAgTW9kYWxXcmFwcGVyQ29tcG9uZW50LktFWUJPQVJEX0hJREVfREVMQVlfSU5fTVNcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6Zm9jdXMnKVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6Zm9jdXNvdXQnKVxuICBvbkZvY3VzQ2hhbmdlKCkge1xuICAgIC8vIFRoaXMgZml4ZXMgYW4gdW5kZXNpcmVkIHNjcm9sbCBiZWhhdmlvdXIgb2NjdXJyaW5nIG9uIGtleWJvYXJkLXRhYmJpbmcgYmFja3dhcmRzICh3aXRoIHNoaWZ0K3RhYik6XG4gICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LnNjcm9sbFRvKHsgdG9wOiB0aGlzLnNjcm9sbFkgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6aW9uS2V5Ym9hcmREaWRTaG93JywgWyckZXZlbnQuZGV0YWlsLmtleWJvYXJkSGVpZ2h0J10pXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlib2FyZFdpbGxTaG93JywgWyckZXZlbnQua2V5Ym9hcmRIZWlnaHQnXSlcbiAgX29uS2V5Ym9hcmRTaG93KGtleWJvYXJkSGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLnNldEtleWJvYXJkVmlzaWJpbGl0eShrZXlib2FyZEhlaWdodCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6aW9uS2V5Ym9hcmREaWRIaWRlJylcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWJvYXJkV2lsbEhpZGUnKVxuICBfb25LZXlib2FyZEhpZGUoKSB7XG4gICAgdGhpcy5zZXRLZXlib2FyZFZpc2liaWxpdHkoMCk7XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZUNvbnRlbnRNYXhIZWlnaHQoZnJlZXplOiBib29sZWFuKSB7XG4gICAgY29uc3Qgc2hvdWxkVG9nZ2xlTWF4SGVpZ2h0ID1cbiAgICAgIHRoaXMuY29uZmlnLmZsYXZvciA9PT0gJ21vZGFsJyAmJiB0aGlzLnBsYXRmb3JtLmlzUGhhYmxldE9yQmlnZ2VyKCk7XG4gICAgaWYgKCFzaG91bGRUb2dnbGVNYXhIZWlnaHQpIHJldHVybjtcbiAgICBjb25zdCBzdHlsZSA9ICdtYXgtaGVpZ2h0JztcbiAgICBjb25zdCBjb250ZW50RWxlbWVudCA9IHRoaXMuaW9uQ29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgIGlmIChmcmVlemUpIHtcbiAgICAgICAgY29uc3QgY29udGVudEhlaWdodCA9IGNvbnRlbnRFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShjb250ZW50RWxlbWVudCwgc3R5bGUsIGAke2NvbnRlbnRIZWlnaHR9cHhgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoY29udGVudEVsZW1lbnQsIHN0eWxlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0S2V5Ym9hcmRWaXNpYmlsaXR5KGtleWJvYXJkSGVpZ2h0OiBudW1iZXIpIHtcbiAgICBjb25zdCBrZXlib2FyZEFscmVhZHlWaXNpYmxlID0ga2V5Ym9hcmRIZWlnaHQgPiAwICYmIHRoaXMua2V5Ym9hcmRWaXNpYmxlO1xuICAgIGNvbnN0IGtleWJvYXJkQWxyZWFkeUhpZGRlbiA9IGtleWJvYXJkSGVpZ2h0ID09PSAwICYmICF0aGlzLmtleWJvYXJkVmlzaWJsZTtcbiAgICBpZiAoa2V5Ym9hcmRBbHJlYWR5VmlzaWJsZSB8fCBrZXlib2FyZEFscmVhZHlIaWRkZW4pIHJldHVybjtcbiAgICB0aGlzLmtleWJvYXJkVmlzaWJsZSA9IGtleWJvYXJkSGVpZ2h0ID4gMDtcbiAgICB0aGlzLnRvZ2dsZUNvbnRlbnRNYXhIZWlnaHQodGhpcy5rZXlib2FyZFZpc2libGUpO1xuICAgIHRoaXMuc2V0S2V5Ym9hcmRPdmVybGFwKGtleWJvYXJkSGVpZ2h0KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0S2V5Ym9hcmRPdmVybGFwKGtleWJvYXJkSGVpZ2h0OiBudW1iZXIsIGVsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgICBpZiAoa2V5Ym9hcmRIZWlnaHQgPD0gMCB8fCAhZWxlbWVudCkgcmV0dXJuIDA7XG4gICAgY29uc3QgZGlzdGFuY2VGcm9tVmlld3BvcnRCb3R0b21Ub0VsZW1lbnQgPSBNYXRoLmZsb29yKFxuICAgICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmlubmVySGVpZ2h0IC0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b21cbiAgICApO1xuICAgIHJldHVybiBNYXRoLm1heChrZXlib2FyZEhlaWdodCAtIGRpc3RhbmNlRnJvbVZpZXdwb3J0Qm90dG9tVG9FbGVtZW50LCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q3NzVmFyKGVsZW1lbnQ6IEVsZW1lbnQsIHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnQsIHByb3BlcnR5LCB2YWx1ZSwgUmVuZGVyZXJTdHlsZUZsYWdzMi5EYXNoQ2FzZSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVDc3NDbGFzcyhlbGVtZW50OiBFbGVtZW50LCBrbGFzczogc3RyaW5nLCBjb25kaXRpb246IGJvb2xlYW4pIHtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+XG4gICAgICBjb25kaXRpb24gPyB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGVsZW1lbnQsIGtsYXNzKSA6IHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZWxlbWVudCwga2xhc3MpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0S2V5Ym9hcmRPdmVybGFwKGtleWJvYXJkSGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLnRvZ2dsZUNzc0NsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAna2V5Ym9hcmQtdmlzaWJsZScsIGtleWJvYXJkSGVpZ2h0ID4gMCk7XG4gICAgY29uc3Qga2V5Ym9hcmRPdmVybGFwID0gdGhpcy5nZXRLZXlib2FyZE92ZXJsYXAoa2V5Ym9hcmRIZWlnaHQsIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICBsZXQgc25hcEZvb3RlclRvS2V5Ym9hcmQgPSBmYWxzZTtcbiAgICBjb25zdCBlbWJlZGRlZEZvb3RlckVsZW1lbnQgPSB0aGlzLmdldEVtYmVkZGVkRm9vdGVyRWxlbWVudCgpO1xuICAgIGlmIChlbWJlZGRlZEZvb3RlckVsZW1lbnQpIHtcbiAgICAgIHRoaXMuc2V0Q3NzVmFyKGVtYmVkZGVkRm9vdGVyRWxlbWVudCwgJy0ta2V5Ym9hcmQtb2Zmc2V0JywgYCR7a2V5Ym9hcmRPdmVybGFwfXB4YCk7XG4gICAgICBzbmFwRm9vdGVyVG9LZXlib2FyZCA9IGVtYmVkZGVkRm9vdGVyRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ3NuYXAtdG8ta2V5Ym9hcmQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb250ZW50RWxlbWVudCA9IHRoaXMuaW9uQ29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBjb250ZW50S2V5Ym9hcmRPZmZzZXQgPSBzbmFwRm9vdGVyVG9LZXlib2FyZFxuICAgICAgPyBrZXlib2FyZE92ZXJsYXBcbiAgICAgIDogdGhpcy5nZXRLZXlib2FyZE92ZXJsYXAoa2V5Ym9hcmRIZWlnaHQsIGNvbnRlbnRFbGVtZW50KTtcbiAgICB0aGlzLnNldENzc1Zhcihjb250ZW50RWxlbWVudCwgJy0ta2V5Ym9hcmQtb2Zmc2V0JywgYCR7Y29udGVudEtleWJvYXJkT2Zmc2V0fXB4YCk7XG4gIH1cblxuICBvbkhlYWRlclRvdWNoU3RhcnQoZXZlbnQ6IFRvdWNoRXZlbnQpIHtcbiAgICBpZiAodGhpcy5rZXlib2FyZFZpc2libGUpIHtcbiAgICAgIGNvbnN0IGlzVG9vbGJhckJ1dHRvblRvdWNoID0gdGhpcy50b29sYmFyQnV0dG9ucy5zb21lKChidXR0b24pID0+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJlxuICAgICAgICAgIChldmVudC50YXJnZXQgPT09IGJ1dHRvbiB8fCBidXR0b24uY29udGFpbnMoZXZlbnQudGFyZ2V0KSlcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgICAgLy8gUHJldmVudCBibHVyIGlmIGV2ZW50IHRhcmdldCBpcyBhIHRvb2xiYXIgYnV0dG9uXG4gICAgICAvLyAodG8gYWxsb3cgdGFwIGV2ZW50IHRvIGZpcmUpOlxuICAgICAgaWYgKCFpc1Rvb2xiYXJCdXR0b25Ub3VjaCkge1xuICAgICAgICB0aGlzLmJsdXJBY3RpdmVFbGVtZW50KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gIF9vbldpbmRvd1Jlc2l6ZSgpIHtcbiAgICB0aGlzLnNldFZpZXdwb3J0SGVpZ2h0KCk7XG4gIH1cblxuICBwcml2YXRlIHNldFZpZXdwb3J0SGVpZ2h0KCkge1xuICAgIGNvbnN0IHZoID0gKHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5pbm5lckhlaWdodCAqIDAuMDEpLnRvRml4ZWQoMik7XG4gICAgdGhpcy5zZXRDc3NWYXIodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICctLXZoJywgYCR7dmh9cHhgKTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZVZpZXdwb3J0UmVzaXplKCkge1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLm9ic2VydmUodGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmRvY3VtZW50LmJvZHksIChlbnRyeSkgPT5cbiAgICAgIHRoaXMub25WaWV3cG9ydFJlc2l6ZShlbnRyeSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvblZpZXdwb3J0UmVzaXplKGVudHJ5OiBSZXNpemVPYnNlcnZlckVudHJ5KSB7XG4gICAgaWYgKCF0aGlzLmluaXRpYWxWaWV3cG9ydEhlaWdodCkge1xuICAgICAgLy8gSW5pdGlhbCBvYnNlcnZlIGNhbGxiYWNrLCByZWdpc3RlciBpbml0aWFsIGhlaWdodDpcbiAgICAgIHRoaXMuaW5pdGlhbFZpZXdwb3J0SGVpZ2h0ID0gZW50cnkuY29udGVudFJlY3QuaGVpZ2h0O1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnZpZXdwb3J0UmVzaXplZCA9IGVudHJ5LmNvbnRlbnRSZWN0LmhlaWdodCAhPT0gdGhpcy5pbml0aWFsVmlld3BvcnRIZWlnaHQ7XG4gICAgaWYgKCF0aGlzLnZpZXdwb3J0UmVzaXplZCkge1xuICAgICAgLy8gV2UgYXJlIGJhY2sgdG8gaW5pdGlhbCB2aWV3IHBvcnQgaGVpZ2h0LCBjaGVjayBmb3IgcGVuZGluZyBjbG9zZSBmdW5jOlxuICAgICAgaWYgKHRoaXMuZGVsYXllZENsb3NlVGltZW91dElkKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmRlbGF5ZWRDbG9zZVRpbWVvdXRJZCk7XG4gICAgICAgIHRoaXMuZGVsYXllZENsb3NlKCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMudmlld3BvcnRSZXNpemUubmV4dCgpO1xuICB9XG5cbiAgYmx1ckFjdGl2ZUVsZW1lbnQoKSB7XG4gICAgY29uc3QgQkxVUl9UQVJHRVRfU0VMRUNUT1IgPSAnaW5wdXQsIHRleHRhcmVhJztcbiAgICBpZiAodGhpcy5rZXlib2FyZFZpc2libGUpIHtcbiAgICAgIGlmIChcbiAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmXG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQubWF0Y2hlcyhCTFVSX1RBUkdFVF9TRUxFQ1RPUilcbiAgICAgICkge1xuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRUb1BhcmVudE1hcDogeyBba2V5OiBzdHJpbmddOiAoKSA9PiBIVE1MRWxlbWVudCB9ID0ge1xuICAgICdLSVJCWS1NT0RBTC1GT09URVInOiAoKSA9PiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAnS0lSQlktUEFHRS1USVRMRSc6ICgpID0+IHRoaXMuaW9uVGl0bGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgJ0tJUkJZLVBBR0UtUFJPR1JFU1MnOiAoKSA9PiB0aGlzLmlvblRvb2xiYXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gIH07XG5cbiAgcHJpdmF0ZSBjbGVhckVtYmVkZGVkRWxlbWVudHMoKSB7XG4gICAgT2JqZWN0LmVudHJpZXModGhpcy5lbGVtZW50VG9QYXJlbnRNYXApLmZvckVhY2goKFt0YWdOYW1lLCBnZXRQYXJlbnRdKSA9PiB7XG4gICAgICBjb25zdCBlbWJlZGRlZEVsZW1lbnQgPSBnZXRQYXJlbnQoKS5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PihgOnNjb3BlID4gJHt0YWdOYW1lfWApO1xuICAgICAgdGhpcy5yZW1vdmVDaGlsZChlbWJlZGRlZEVsZW1lbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFbWJlZGRlZENvbXBvbmVudEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5jb25maWcubW9kYWxSb3V0ZVxuICAgICAgPyB0aGlzLmlvbkNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQubGFzdEVsZW1lbnRDaGlsZFxuICAgICAgOiB0aGlzLmlvbkNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gIH1cblxuICBwcml2YXRlIGdldEVtYmVkZGVkRm9vdGVyRWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJ2tpcmJ5LW1vZGFsLWZvb3RlcicpO1xuICB9XG5cbiAgcHJpdmF0ZSBtb3ZlQ2hpbGQoY2hpbGQ6IEVsZW1lbnQsIG5ld1BhcmVudDogRWxlbWVudCkge1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQoY2hpbGQucGFyZW50RWxlbWVudCwgY2hpbGQpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQobmV3UGFyZW50LCBjaGlsZCk7XG4gICAgaWYgKGNoaWxkLnRhZ05hbWUgPT09ICdLSVJCWS1NT0RBTC1GT09URVInKSB7XG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS5vYnNlcnZlKGNoaWxkLCAoZW50cnkpID0+IHtcbiAgICAgICAgY29uc3QgW3Byb3BlcnR5LCBwaXhlbFZhbHVlXSA9IFtcbiAgICAgICAgICAnLS1mb290ZXItaGVpZ2h0JyxcbiAgICAgICAgICBgJHtNYXRoLmZsb29yKGVudHJ5LmNvbnRlbnRSZWN0LmhlaWdodCl9cHhgLFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLnNldENzc1Zhcih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgcHJvcGVydHksIHBpeGVsVmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVDaGlsZChjaGlsZD86IEVsZW1lbnQpIHtcbiAgICBpZiAoISFjaGlsZCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChjaGlsZC5wYXJlbnRFbGVtZW50LCBjaGlsZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlRW1iZWRkZWRFbGVtZW50cygpIHtcbiAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gdGhpcy5nZXRFbWJlZGRlZENvbXBvbmVudEVsZW1lbnQoKTtcbiAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShwYXJlbnRFbGVtZW50LCB7XG4gICAgICBjaGlsZExpc3Q6IHRydWUsIC8vIExpc3RlbiBmb3IgYWRkaXRpb24gb3IgcmVtb3ZhbCBvZiBjaGlsZCBub2Rlc1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVFbWJlZGRlZEVsZW1lbnRzTXV0YXRpb25PYnNlcnZlcigpOiBNdXRhdGlvbk9ic2VydmVyIHtcbiAgICBjb25zdCBvYnNlcnZlZEVsZW1lbnRzID0gT2JqZWN0LmtleXModGhpcy5lbGVtZW50VG9QYXJlbnRNYXApO1xuICAgIGNvbnN0IGNhbGxiYWNrID0gKG11dGF0aW9uczogTXV0YXRpb25SZWNvcmRbXSkgPT4ge1xuICAgICAgY29uc3QgYWRkZWROb2RlcyA9IG11dGF0aW9uc1xuICAgICAgICAuZmlsdGVyKChtdXRhdGlvbikgPT4gbXV0YXRpb24udHlwZSA9PT0gJ2NoaWxkTGlzdCcpIC8vIEZpbHRlciBmb3IgbXV0YXRpb24gdG8gdGhlIHRyZWUgb2Ygbm9kZXNcbiAgICAgICAgLm1hcCgobXV0YXRpb24pID0+IHtcbiAgICAgICAgICAvLyBPbmx5IGNoZWNrIGZvciBhZGRlZE5vZGVzIGFzIHJlbW92YWwgaXMgaGFuZGxlZCBieSB0aGUgQW5ndWxhciByZW5kZXJlcjpcbiAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShtdXRhdGlvbi5hZGRlZE5vZGVzKS5maWx0ZXIoKG5vZGUpID0+XG4gICAgICAgICAgICBvYnNlcnZlZEVsZW1lbnRzLmluY2x1ZGVzKG5vZGUubm9kZU5hbWUpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGFkZGVkRWxlbWVudHMgPSBBcnJheS5wcm90b3R5cGVcbiAgICAgICAgLmNvbmNhdCguLi5hZGRlZE5vZGVzKVxuICAgICAgICAuZmlsdGVyKChub2RlKTogbm9kZSBpcyBIVE1MRWxlbWVudCA9PiBub2RlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpO1xuXG4gICAgICBhZGRlZEVsZW1lbnRzLmZvckVhY2goKGFkZGVkRWxlbWVudCkgPT4ge1xuICAgICAgICBjb25zdCBuZXdQYXJlbnRFbGVtZW50ID0gdGhpcy5lbGVtZW50VG9QYXJlbnRNYXBbYWRkZWRFbGVtZW50Lm5vZGVOYW1lXSgpO1xuICAgICAgICAvLyBNb3ZlIGVtYmVkZGVkIGVsZW1lbnQgb3V0IG9mIGNvbnRlbnQgYW5kIGFwcGVuZCB0byBuZXcgcGFyZW50OlxuICAgICAgICB0aGlzLm1vdmVDaGlsZChhZGRlZEVsZW1lbnQsIG5ld1BhcmVudEVsZW1lbnQpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgICByZXR1cm4gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoY2FsbGJhY2spO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVNb2RhbFdyYXBwZXJJbnRlcnNlY3Rpb25PYnNlcnZlcigpOiBJbnRlcnNlY3Rpb25PYnNlcnZlciB7XG4gICAgY29uc3QgY2FsbGJhY2s6IEludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2sgPSAoZW50cmllcykgPT4ge1xuICAgICAgY29uc3QgZW50cnkgPSBlbnRyaWVzWzBdO1xuICAgICAgY29uc3QgaXNUb3VjaGluZ1ZpZXdwb3J0ID0gZW50cnkuaW50ZXJzZWN0aW9uUmF0aW8gPCAxO1xuICAgICAgaWYgKGlzVG91Y2hpbmdWaWV3cG9ydCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGVudHJ5LnRhcmdldCwgJ2Z1bGwtaGVpZ2h0Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGVudHJ5LnRhcmdldCwgJ2Z1bGwtaGVpZ2h0Jyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIFNldCBleHBsaWNpdCB2aWV3cG9ydCByb290IGlmIHdpdGhpbiBpZnJhbWU6XG4gICAgY29uc3Qgcm9vdCA9IHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5mcmFtZUVsZW1lbnRcbiAgICAgID8gKHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5kb2N1bWVudCBhcyBhbnkpIC8vIENhc3QgdG8gYGFueWAgYXMgVHlwZXNjcmlwdCBsaWIuZC50cyBkb2VzbnQgc3VwcG9ydCBEb2N1bWVudCB0eXBlIHlldFxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgb3B0aW9uczogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJJbml0ID0ge1xuICAgICAgcm9vdE1hcmdpbjogJzBweCAwcHggLTFweCAwcHgnLCAvLyBgYm90dG9tOiAtMXB4YCBhbGxvd3MgY2hlY2tpbmcgd2hlbiB0aGUgbW9kYWwgYm90dG9tIGlzIHRvdWNoaW5nIHRoZSB2aWV3cG9ydFxuICAgICAgcm9vdCxcbiAgICAgIHRocmVzaG9sZDogWzAuOTksIDFdLFxuICAgIH07XG5cbiAgICByZXR1cm4gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGNhbGxiYWNrLCBvcHRpb25zKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLnJvdXRlck91dGxldC5pc0FjdGl2YXRlZCkge1xuICAgICAgdGhpcy5yb3V0ZXJPdXRsZXQuZGVhY3RpdmF0ZSgpO1xuICAgIH1cbiAgICAvL2NsZWFuIHVwIHRoZSBvYnNlcnZlclxuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgZGVsZXRlIHRoaXMuX211dGF0aW9uT2JzZXJ2ZXI7XG4gICAgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgZGVsZXRlIHRoaXMuX2ludGVyc2VjdGlvbk9ic2VydmVyO1xuICAgIGlmICh0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZSkge1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2UudW5vYnNlcnZlKHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5kb2N1bWVudC5ib2R5KTtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLnVub2JzZXJ2ZSh0aGlzLmlvbkhlYWRlckVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS51bm9ic2VydmUodGhpcy5nZXRFbWJlZGRlZEZvb3RlckVsZW1lbnQoKSk7XG4gICAgfVxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"ModalWrapperComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":35,"character":1},"arguments":[{"selector":"kirby-modal-wrapper","providers":[{"provide":{"__symbolic":"reference","module":"../services/modal.interfaces","name":"Modal","line":39,"character":25},"useExisting":{"__symbolic":"reference","name":"ModalWrapperComponent"}}],"template":"<ion-header (touchstart)=\"onHeaderTouchStart($event)\">\n <ion-toolbar>\n <ion-title>{{ config.title }}</ion-title>\n <ion-buttons slot=\"start\" *ngIf=\"config.flavor === 'drawer'\">\n <ng-container *ngTemplateOutlet=\"closeButton; context: { icon: 'arrow-down' }\"></ng-container>\n </ion-buttons>\n <ion-buttons slot=\"end\" *ngIf=\"config.flavor === 'modal'\">\n <ng-container *ngTemplateOutlet=\"closeButton; context: { icon: 'close' }\"></ng-container>\n </ion-buttons>\n <ion-buttons slot=\"end\" *ngIf=\"config.flavor === 'drawer' && config.drawerSupplementaryAction\">\n <ng-container\n *ngTemplateOutlet=\"supplementaryButton; context: { btn: config.drawerSupplementaryAction }\"\n ></ng-container>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content [scrollEvents]=\"true\">\n <ng-container\n *ngComponentOutlet=\"config.component; injector: componentPropsInjector\"\n ></ng-container>\n <router-outlet\n name=\"kirbyModalWrapperOutlet\"\n [style.visibility]=\"config.modalRoute ? 'visible' : 'hidden'\"\n ></router-outlet>\n</ion-content>\n\n<ng-template #closeButton let-icon=\"icon\">\n <button kirby-button attentionLevel=\"4\" size=\"sm\" (click)=\"close()\">\n <kirby-icon [name]=\"icon\"></kirby-icon>\n </button>\n</ng-template>\n\n<ng-template #supplementaryButton let-btn=\"btn\">\n <button kirby-button attentionLevel=\"2\" size=\"sm\" (click)=\"btn.action($event)\">\n <kirby-icon [name]=\"btn.iconName\"></kirby-icon>\n </button>\n</ng-template>\n","styles":["@media (min-width:721px){:host-context(ion-modal:not(.kirby-modal-full-height)){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),calc(var(--vh100) - var(--kirby-modal-padding-top, 0px)))}:host-context(ion-modal:not(.kirby-modal-full-height)) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal:not(.kirby-modal-full-height)) ion-content::part(scroll){height:\"100%\";position:relative}:host-context(ion-modal:not(.kirby-modal-full-height)).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal:not(.kirby-modal-full-height)).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}}:host-context(ion-modal:not(.kirby-modal-full-height)).drawer{padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),calc(var(--vh100) - var(--kirby-modal-padding-top, 0px)))}:host-context(ion-modal:not(.kirby-modal-full-height)).drawer ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal:not(.kirby-modal-full-height)).drawer ion-content::part(scroll){height:\"100%\";position:relative}:host-context(ion-modal:not(.kirby-modal-full-height)).drawer.drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal:not(.kirby-modal-full-height)).drawer.drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}:host{--vh100:var(--vh,1vh) * 100;--header-height:0px;--footer-height:0px}:host.drawer ion-header ion-toolbar:first-of-type{padding-top:0}ion-header ion-toolbar{--padding-start:16px;--padding-end:16px;--padding-bottom:16px;--padding-top:16px;--border-width:0;--background:transparent;--color:var(--kirby-modal-color,var(--kirby-black))}ion-header ion-toolbar button{color:var(--color)}@media (min-width:721px){ion-header ion-toolbar{padding-top:8px}}:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{padding-top:var(--kirby-safe-area-top,0)}@media (min-width:721px){:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{padding-top:8px}}ion-title{box-sizing:border-box;padding-inline-start:calc(48px + var(--padding-start));padding-inline-end:calc(48px + var(--padding-end));font-size:22px;font-weight:700}:host(.drawer) ion-title{font-size:18px}ion-content{--background:transparent;--color:var(--kirby-modal-color,var(--kirby-black));display:flex;flex-direction:column;--padding-top:24px;--padding-bottom:24px;--padding-start:16px;--padding-end:16px}ion-content ::ng-deep>*{box-sizing:border-box;display:block}@media (min-width:721px){ion-content{--padding-start:56px;--padding-end:56px}}"]}]}],"members":{"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":51,"character":3}}]}],"toolbarButtonsQuery":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChildren","line":54,"character":3},"arguments":[{"__symbolic":"reference","module":"../../button/button.component","name":"ButtonComponent","line":54,"character":16},{"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":54,"character":41}}]}]}],"ionContent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":57,"character":3},"arguments":[{"__symbolic":"reference","module":"@ionic/angular","name":"IonContent","line":57,"character":13},{"static":true}]}]}],"ionContentElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":58,"character":3},"arguments":[{"__symbolic":"reference","module":"@ionic/angular","name":"IonContent","line":58,"character":13},{"static":true,"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":58,"character":47}}]}]}],"ionHeaderElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":61,"character":3},"arguments":[{"__symbolic":"reference","module":"@ionic/angular","name":"IonHeader","line":61,"character":13},{"static":true,"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":61,"character":46}}]}]}],"ionToolbarElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":64,"character":3},"arguments":[{"__symbolic":"reference","module":"@ionic/angular","name":"IonToolbar","line":64,"character":13},{"static":true,"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":64,"character":47}}]}]}],"ionTitleElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":67,"character":3},"arguments":[{"__symbolic":"reference","module":"@ionic/angular","name":"IonTitle","line":67,"character":13},{"static":true,"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":67,"character":45}}]}]}],"routerOutlet":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":70,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/router","name":"RouterOutlet","line":70,"character":13},{"static":true}]}]}],"_isDrawer":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":103,"character":3},"arguments":["class.drawer"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":111,"character":22},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":112,"character":24,"arguments":[{"__symbolic":"error","message":"Could not resolve type","line":112,"character":35,"context":{"typeName":"HTMLElement"}}]},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":113,"character":22},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":114,"character":18},{"__symbolic":"reference","module":"../../shared/resize-observer/resize-observer.service","name":"ResizeObserverService","line":115,"character":35},{"__symbolic":"reference","module":"@angular/core","name":"ComponentFactoryResolver","line":116,"character":38},{"__symbolic":"reference","module":"../../../types/window-ref","name":"WindowRef","line":117,"character":23},{"__symbolic":"reference","module":"../../../helpers/platform.service","name":"PlatformService","line":118,"character":22}]}],"ngOnInit":[{"__symbolic":"method"}],"initializeResizeModalToModalWrapper":[{"__symbolic":"method"}],"initializeSizing":[{"__symbolic":"method"}],"initializeModalRoute":[{"__symbolic":"method"}],"onSiblingModalRouteActivated":[{"__symbolic":"method"}],"patchScrollElementSize":[{"__symbolic":"method"}],"observeModalFullHeight":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"checkForEmbeddedElements":[{"__symbolic":"method"}],"observeHeaderResize":[{"__symbolic":"method"}],"moveEmbeddedElements":[{"__symbolic":"method"}],"listenForIonModalDidPresent":[{"__symbolic":"method"}],"listenForIonModalWillDismiss":[{"__symbolic":"method"}],"scrollToTop":[{"__symbolic":"method"}],"scrollToBottom":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"onFocusChange":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":293,"character":3},"arguments":["window:focus"]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":294,"character":3},"arguments":["window:focusout"]}]}],"_onKeyboardShow":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":300,"character":3},"arguments":["window:ionKeyboardDidShow",["$event.detail.keyboardHeight"]]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":301,"character":3},"arguments":["window:keyboardWillShow",["$event.keyboardHeight"]]}]}],"_onKeyboardHide":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":306,"character":3},"arguments":["window:ionKeyboardDidHide"]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":307,"character":3},"arguments":["window:keyboardWillHide"]}]}],"toggleContentMaxHeight":[{"__symbolic":"method"}],"setKeyboardVisibility":[{"__symbolic":"method"}],"getKeyboardOverlap":[{"__symbolic":"method"}],"setCssVar":[{"__symbolic":"method"}],"toggleCssClass":[{"__symbolic":"method"}],"setKeyboardOverlap":[{"__symbolic":"method"}],"onHeaderTouchStart":[{"__symbolic":"method"}],"_onWindowResize":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":390,"character":3},"arguments":["window:resize"]}]}],"setViewportHeight":[{"__symbolic":"method"}],"observeViewportResize":[{"__symbolic":"method"}],"onViewportResize":[{"__symbolic":"method"}],"blurActiveElement":[{"__symbolic":"method"}],"clearEmbeddedElements":[{"__symbolic":"method"}],"getEmbeddedComponentElement":[{"__symbolic":"method"}],"getEmbeddedFooterElement":[{"__symbolic":"method"}],"moveChild":[{"__symbolic":"method"}],"removeChild":[{"__symbolic":"method"}],"observeEmbeddedElements":[{"__symbolic":"method"}],"createEmbeddedElementsMutationObserver":[{"__symbolic":"method"}],"createModalWrapperIntersectionObserver":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]},"statics":{"KEYBOARD_HIDE_DELAY_IN_MS":100}}}}]
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"ModalWrapperComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":36,"character":1},"arguments":[{"selector":"kirby-modal-wrapper","providers":[{"provide":{"__symbolic":"reference","module":"../services/modal.interfaces","name":"Modal","line":40,"character":25},"useExisting":{"__symbolic":"reference","name":"ModalWrapperComponent"}}],"template":"<ion-header (touchstart)=\"onHeaderTouchStart($event)\">\n <ion-toolbar>\n <ion-title>{{ config.title }}</ion-title>\n <ion-buttons slot=\"start\" *ngIf=\"config.flavor === 'drawer'\">\n <ng-container *ngTemplateOutlet=\"closeButton; context: { icon: 'arrow-down' }\"></ng-container>\n </ion-buttons>\n <ion-buttons slot=\"end\" *ngIf=\"config.flavor === 'modal'\">\n <ng-container *ngTemplateOutlet=\"closeButton; context: { icon: 'close' }\"></ng-container>\n </ion-buttons>\n <ion-buttons slot=\"end\" *ngIf=\"config.flavor === 'drawer' && config.drawerSupplementaryAction\">\n <ng-container\n *ngTemplateOutlet=\"supplementaryButton; context: { btn: config.drawerSupplementaryAction }\"\n ></ng-container>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content [scrollEvents]=\"true\">\n <ng-container\n *ngComponentOutlet=\"config.component; injector: componentPropsInjector\"\n ></ng-container>\n <router-outlet\n name=\"kirbyModalWrapperOutlet\"\n [style.visibility]=\"config.modalRoute ? 'visible' : 'hidden'\"\n ></router-outlet>\n</ion-content>\n\n<ng-template #closeButton let-icon=\"icon\">\n <button kirby-button attentionLevel=\"4\" size=\"sm\" (click)=\"close()\">\n <kirby-icon [name]=\"icon\"></kirby-icon>\n </button>\n</ng-template>\n\n<ng-template #supplementaryButton let-btn=\"btn\">\n <button kirby-button attentionLevel=\"2\" size=\"sm\" (click)=\"btn.action($event)\">\n <kirby-icon [name]=\"btn.iconName\"></kirby-icon>\n </button>\n</ng-template>\n","styles":["@media (min-width:721px){:host-context(ion-modal:not(.kirby-modal-full-height)){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),calc(var(--vh100) - var(--kirby-modal-padding-top, 0px)))}:host-context(ion-modal:not(.kirby-modal-full-height)) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal:not(.kirby-modal-full-height)) ion-content::part(scroll){height:\"100%\";position:relative}:host-context(ion-modal:not(.kirby-modal-full-height)).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal:not(.kirby-modal-full-height)).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}}:host-context(ion-modal:not(.kirby-modal-full-height)).drawer{padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),calc(var(--vh100) - var(--kirby-modal-padding-top, 0px)))}:host-context(ion-modal:not(.kirby-modal-full-height)).drawer ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal:not(.kirby-modal-full-height)).drawer ion-content::part(scroll){height:\"100%\";position:relative}:host-context(ion-modal:not(.kirby-modal-full-height)).drawer.drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal:not(.kirby-modal-full-height)).drawer.drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}:host{--vh100:var(--vh,1vh) * 100;--header-height:0px;--footer-height:0px}:host.drawer ion-header ion-toolbar:first-of-type{padding-top:0}ion-header ion-toolbar{--padding-start:16px;--padding-end:16px;--padding-bottom:16px;--padding-top:16px;--border-width:0;--background:transparent;--color:var(--kirby-modal-color,var(--kirby-black))}ion-header ion-toolbar button{color:var(--color)}@media (min-width:721px){ion-header ion-toolbar{padding-top:8px}}:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{padding-top:var(--kirby-safe-area-top,0)}@media (min-width:721px){:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{padding-top:8px}}ion-title{box-sizing:border-box;padding-inline-start:calc(48px + var(--padding-start));padding-inline-end:calc(48px + var(--padding-end));font-size:22px;font-weight:700}:host(.drawer) ion-title{font-size:18px}ion-content{--background:transparent;--color:var(--kirby-modal-color,var(--kirby-black));display:flex;flex-direction:column;--padding-top:24px;--padding-bottom:24px;--padding-start:16px;--padding-end:16px}ion-content ::ng-deep>*{box-sizing:border-box;display:block}@media (min-width:721px){ion-content{--padding-start:56px;--padding-end:56px}}"]}]}],"members":{"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":52,"character":3}}]}],"toolbarButtonsQuery":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChildren","line":55,"character":3},"arguments":[{"__symbolic":"reference","module":"../../button/button.component","name":"ButtonComponent","line":55,"character":16},{"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":55,"character":41}}]}]}],"ionContent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":58,"character":3},"arguments":[{"__symbolic":"reference","module":"@ionic/angular","name":"IonContent","line":58,"character":13},{"static":true}]}]}],"ionContentElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":59,"character":3},"arguments":[{"__symbolic":"reference","module":"@ionic/angular","name":"IonContent","line":59,"character":13},{"static":true,"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":59,"character":47}}]}]}],"ionHeaderElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":62,"character":3},"arguments":[{"__symbolic":"reference","module":"@ionic/angular","name":"IonHeader","line":62,"character":13},{"static":true,"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":62,"character":46}}]}]}],"ionToolbarElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":65,"character":3},"arguments":[{"__symbolic":"reference","module":"@ionic/angular","name":"IonToolbar","line":65,"character":13},{"static":true,"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":65,"character":47}}]}]}],"ionTitleElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":68,"character":3},"arguments":[{"__symbolic":"reference","module":"@ionic/angular","name":"IonTitle","line":68,"character":13},{"static":true,"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":68,"character":45}}]}]}],"routerOutlet":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":71,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/router","name":"RouterOutlet","line":71,"character":13},{"static":true}]}]}],"_isDrawer":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":104,"character":3},"arguments":["class.drawer"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":112,"character":22},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":113,"character":24,"arguments":[{"__symbolic":"error","message":"Could not resolve type","line":113,"character":35,"context":{"typeName":"HTMLElement"}}]},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":114,"character":22},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":115,"character":18},{"__symbolic":"reference","module":"../../shared/resize-observer/resize-observer.service","name":"ResizeObserverService","line":116,"character":35},{"__symbolic":"reference","module":"@angular/core","name":"ComponentFactoryResolver","line":117,"character":38},{"__symbolic":"reference","module":"../../../types/window-ref","name":"WindowRef","line":118,"character":23},{"__symbolic":"reference","module":"../../../helpers/platform.service","name":"PlatformService","line":119,"character":22}]}],"ngOnInit":[{"__symbolic":"method"}],"initializeResizeModalToModalWrapper":[{"__symbolic":"method"}],"initializeSizing":[{"__symbolic":"method"}],"initializeModalRoute":[{"__symbolic":"method"}],"onSiblingModalRouteActivated":[{"__symbolic":"method"}],"patchScrollElementSize":[{"__symbolic":"method"}],"observeModalFullHeight":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"checkForEmbeddedElements":[{"__symbolic":"method"}],"observeHeaderResize":[{"__symbolic":"method"}],"moveEmbeddedElements":[{"__symbolic":"method"}],"listenForIonModalDidPresent":[{"__symbolic":"method"}],"listenForIonModalWillDismiss":[{"__symbolic":"method"}],"scrollToTop":[{"__symbolic":"method"}],"scrollToBottom":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"onFocusChange":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":294,"character":3},"arguments":["window:focus"]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":295,"character":3},"arguments":["window:focusout"]}]}],"_onKeyboardShow":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":301,"character":3},"arguments":["window:ionKeyboardDidShow",["$event.detail.keyboardHeight"]]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":302,"character":3},"arguments":["window:keyboardWillShow",["$event.keyboardHeight"]]}]}],"_onKeyboardHide":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":307,"character":3},"arguments":["window:ionKeyboardDidHide"]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":308,"character":3},"arguments":["window:keyboardWillHide"]}]}],"toggleContentMaxHeight":[{"__symbolic":"method"}],"setKeyboardVisibility":[{"__symbolic":"method"}],"getKeyboardOverlap":[{"__symbolic":"method"}],"setCssVar":[{"__symbolic":"method"}],"toggleCssClass":[{"__symbolic":"method"}],"setKeyboardOverlap":[{"__symbolic":"method"}],"onHeaderTouchStart":[{"__symbolic":"method"}],"_onWindowResize":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":391,"character":3},"arguments":["window:resize"]}]}],"setViewportHeight":[{"__symbolic":"method"}],"observeViewportResize":[{"__symbolic":"method"}],"onViewportResize":[{"__symbolic":"method"}],"blurActiveElement":[{"__symbolic":"method"}],"clearEmbeddedElements":[{"__symbolic":"method"}],"getEmbeddedComponentElement":[{"__symbolic":"method"}],"getEmbeddedFooterElement":[{"__symbolic":"method"}],"moveChild":[{"__symbolic":"method"}],"removeChild":[{"__symbolic":"method"}],"observeEmbeddedElements":[{"__symbolic":"method"}],"createEmbeddedElementsMutationObserver":[{"__symbolic":"method"}],"createModalWrapperIntersectionObserver":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]},"statics":{"KEYBOARD_HIDE_DELAY_IN_MS":100}}}}]
|
|
@@ -58,6 +58,9 @@ export class RadioGroupComponent {
|
|
|
58
58
|
set value(value) {
|
|
59
59
|
this.setSelectedItem(value);
|
|
60
60
|
}
|
|
61
|
+
get hasValue() {
|
|
62
|
+
return this.value !== undefined && this.value !== null;
|
|
63
|
+
}
|
|
61
64
|
get hasItemsFromContentProjection() {
|
|
62
65
|
return (!this.items.length &&
|
|
63
66
|
!this._customItemTemplate &&
|
|
@@ -117,7 +120,7 @@ export class RadioGroupComponent {
|
|
|
117
120
|
// #endregion "protected" methods used by template
|
|
118
121
|
// #region private methods
|
|
119
122
|
getIndexOfSelectedValue() {
|
|
120
|
-
if (!this.
|
|
123
|
+
if (!this.hasValue)
|
|
121
124
|
return -1;
|
|
122
125
|
return this.hasItemsFromContentProjection
|
|
123
126
|
? this.getIndexOfProjectedRadio(this.value)
|
|
@@ -165,10 +168,11 @@ export class RadioGroupComponent {
|
|
|
165
168
|
});
|
|
166
169
|
}
|
|
167
170
|
refreshSelectionState() {
|
|
168
|
-
if (this.
|
|
171
|
+
if (this.hasValue) {
|
|
169
172
|
this._selectedIndex = this.getIndexOfSelectedValue(); // Ensure selectedIndex reflects value within items
|
|
170
173
|
}
|
|
171
|
-
|
|
174
|
+
const valueFromSelectedIndex = this.getValueFromSelectedIndex();
|
|
175
|
+
this._value = valueFromSelectedIndex !== undefined ? valueFromSelectedIndex : null;
|
|
172
176
|
}
|
|
173
177
|
refreshStateFromProjectedContent() {
|
|
174
178
|
if (!!this._customItemTemplate)
|
|
@@ -224,4 +228,4 @@ RadioGroupComponent.propDecorators = {
|
|
|
224
228
|
projectedRadioButtons: [{ type: ContentChildren, args: [RadioComponent, { descendants: true },] }],
|
|
225
229
|
_onRadioBlur: [{ type: HostListener, args: ['ionBlur',] }]
|
|
226
230
|
};
|
|
227
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL3JhZGlvL3JhZGlvLWdyb3VwL3JhZGlvLWdyb3VwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osZUFBZSxFQUNmLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBZXBELE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsWUFBb0Isa0JBQXFDO1FBQXJDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFlekQsYUFBUSxHQUFZLEtBQUssQ0FBQztRQWExQixxQkFBZ0IsR0FBRyxNQUFNLENBQUM7UUFHMUIseUJBQW9CLEdBQUcsVUFBVSxDQUFDO1FBc0JsQzs7V0FFRztRQUNPLGdCQUFXLEdBQStCLElBQUksWUFBWSxFQUFnQixDQUFDO1FBTXJGLHFEQUFxRDtRQUVyRCx5QkFBeUI7UUFDakIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixXQUFNLEdBQXFCLEVBQUUsQ0FBQztRQUM5QixzQkFBaUIsR0FBeUIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQ25ELGVBQVUsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFD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TCxXQUFXLFNBQUMsYUFBYSxjQUN6QixLQUFLO29CQU9MLEtBQUs7K0JBTUwsS0FBSzttQ0FHTCxLQUFLOzRCQU9MLEtBQUs7b0JBWUwsS0FBSzswQkFPTCxNQUFNO2tDQUlOLFlBQVksU0FBQyx5QkFBeUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7MkJBVzdELFlBQVksU0FBQyxjQUFjO29DQUUzQixlQUFlLFNBQUMsY0FBYyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTsyQkFxRXJELFlBQVksU0FBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IExpc3RJdGVtVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9saXN0L2xpc3QuZGlyZWN0aXZlJztcbmltcG9ydCB7IFJhZGlvQ29tcG9uZW50IH0gZnJvbSAnLi4vcmFkaW8uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktcmFkaW8tZ3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmFkaW8tZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFsnaW9uLXJhZGlvLWdyb3VwIHsgZGlzcGxheTogaW5oZXJpdDsgZmxleC13cmFwOiBpbmhlcml0fSddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBSYWRpb0dyb3VwQ29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFJhZGlvR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbmdlRGV0ZWN0aW9uUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAvLyAjcmVnaW9uIHB1YmxpYyBwcm9wZXJ0aWVzXG5cbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgdGhpcy5zZXRQcm9qZWN0ZWRSYWRpb3NEaXNhYmxlZFN0YXRlKHZhbHVlKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZXJyb3InKSAvLyBVc2VkIHRvIHN0eWxlIHJhZGlvcyB3aXRoIGVycm9yIHN0YXRlXG4gIEBJbnB1dCgpXG4gIGhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZ2V0IGl0ZW1zKCk6IHN0cmluZ1tdIHwgYW55W10ge1xuICAgIHJldHVybiB0aGlzLl9pdGVtcyB8fCBbXTsgLy8gRW5zdXJlIGl0ZW1zIHJldHVybiBlbXB0eSBhcnJheSBldmVuIGlmIHNldCB0byBudWxsL3VuZGVmaW5lZFxuICB9XG5cbiAgQElucHV0KCkgc2V0IGl0ZW1zKHZhbHVlOiBzdHJpbmdbXSB8IGFueVtdKSB7XG4gICAgaWYgKCghdmFsdWUgfHwgIXZhbHVlLmxlbmd0aCkgJiYgIXRoaXMuaXRlbXMubGVuZ3RoKSByZXR1cm47IC8vIE5vdGhpbmcgY2hhbmdlZCwgbm8gaXRlbXMgYmVmb3JlIG9yIGFmdGVyXG4gICAgdGhpcy5faXRlbXMgPSB2YWx1ZTtcbiAgICB0aGlzLnJlZnJlc2hTZWxlY3Rpb25TdGF0ZSgpO1xuICB9XG5cbiAgQElucHV0KClcbiAgaXRlbVRleHRQcm9wZXJ0eSA9ICd0ZXh0JztcblxuICBASW5wdXQoKVxuICBpdGVtRGlzYWJsZWRQcm9wZXJ0eSA9ICdkaXNhYmxlZCc7XG5cbiAgZ2V0IHNlbGVjdGVkSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJbmRleDtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBzZWxlY3RlZEluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgdmFsdWUgPSBwYXJzZUludCh2YWx1ZSk7IC8vIEVuc3VyZSBkYXRhIHR5cGUgbnVtYmVyLCBlLmcuIHdoZW4gdXNlZCB3aXRoIHRlbXBsYXRlIHN5bnRheCB3aXRob3V0IGJpbmRpbmc6IDwuLi4gc2VsZWN0ZWRJbmRleD1cIjFcIlxuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSBOYU4pIHZhbHVlID0gLTE7XG4gICAgaWYgKHZhbHVlID09PSB0aGlzLnNlbGVjdGVkSW5kZXgpIHJldHVybjtcbiAgICB0aGlzLl9zZWxlY3RlZEluZGV4ID0gdmFsdWU7XG4gICAgdGhpcy5fdmFsdWUgPSB0aGlzLmdldFZhbHVlRnJvbVNlbGVjdGVkSW5kZXgoKSB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB8IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcgfCBhbnkpIHtcbiAgICB0aGlzLnNldFNlbGVjdGVkSXRlbSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGFuIG9wdGlvbiBpcyBzZWxlY3RlZFxuICAgKi9cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgYW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgYW55PigpO1xuICAvLyAjZW5kcmVnaW9uIHB1YmxpYyBwcm9wZXJ0aWVzXG5cbiAgLy8gI3JlZ2lvbiBcInByb3RlY3RlZFwiIHByb3BlcnRpZXMgdXNlZCBieSB0ZW1wbGF0ZVxuICBAQ29udGVudENoaWxkKExpc3RJdGVtVGVtcGxhdGVEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgX2N1c3RvbUl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgLy8gI2VuZHJlZ2lvbiBcInByb3RlY3RlZFwiIHByb3BlcnRpZXMgdXNlZCBieSB0ZW1wbGF0ZVxuXG4gIC8vICNyZWdpb24gcHJpdmF0ZSBmaWVsZHNcbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaXRlbXM6IHN0cmluZ1tdIHwgYW55W10gPSBbXTtcbiAgcHJpdmF0ZSBfb25DaGFuZ2VDYWxsYmFjazogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBfb25Ub3VjaGVkID0gKCkgPT4ge307XG4gIHByaXZhdGUgX3NlbGVjdGVkSW5kZXg6IG51bWJlciA9IC0xO1xuICBwcml2YXRlIF92YWx1ZT86IHN0cmluZyB8IGFueSA9IG51bGw7XG4gIEBWaWV3Q2hpbGRyZW4oUmFkaW9Db21wb25lbnQpXG4gIHByaXZhdGUgcmFkaW9CdXR0b25zOiBRdWVyeUxpc3Q8UmFkaW9Db21wb25lbnQ+O1xuICBAQ29udGVudENoaWxkcmVuKFJhZGlvQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHByaXZhdGUgcHJvamVjdGVkUmFkaW9CdXR0b25zOiBRdWVyeUxpc3Q8UmFkaW9Db21wb25lbnQ+O1xuXG4gIHByaXZhdGUgZ2V0IGhhc0l0ZW1zRnJvbUNvbnRlbnRQcm9qZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAhdGhpcy5pdGVtcy5sZW5ndGggJiZcbiAgICAgICF0aGlzLl9jdXN0b21JdGVtVGVtcGxhdGUgJiZcbiAgICAgIHRoaXMucHJvamVjdGVkUmFkaW9CdXR0b25zICYmXG4gICAgICB0aGlzLnByb2plY3RlZFJhZGlvQnV0dG9ucy5sZW5ndGggPiAwXG4gICAgKTtcbiAgfVxuXG4gIC8vICNlbmRyZWdpb24gcHJpdmF0ZSBmaWVsZHNcblxuICAvLyAjcmVnaW9uIHB1YmxpYyBtZXRob2RzXG4gIGZvY3VzKCkge1xuICAgIGNvbnN0IGZpbmRGb2N1c2FibGUgPSAocmFkaW9zOiBRdWVyeUxpc3Q8UmFkaW9Db21wb25lbnQ+KSA9PlxuICAgICAgcmFkaW9zICYmIHJhZGlvcy5maW5kKChyYWRpbykgPT4gIWlzTmFOKHJhZGlvLmJ1dHRvblRhYkluZGV4KSAmJiByYWRpby5idXR0b25UYWJJbmRleCAhPT0gLTEpO1xuICAgIGNvbnN0IGZvY3VzYWJsZSA9IGZpbmRGb2N1c2FibGUodGhpcy5yYWRpb0J1dHRvbnMpIHx8IGZpbmRGb2N1c2FibGUodGhpcy5wcm9qZWN0ZWRSYWRpb0J1dHRvbnMpO1xuICAgIGZvY3VzYWJsZSAmJiBmb2N1c2FibGUuZm9jdXMoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRTZWxlY3Rpb25TdGF0ZUZyb21Qcm9qZWN0ZWRDb250ZW50KCk7XG4gICAgdGhpcy5saXN0ZW5Gb3JQcm9qZWN0ZWRSYWRpb3NDaGFuZ2UoKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLy8gI2VuZHJlZ2lvbiBwdWJsaWMgbWV0aG9kc1xuXG4gIC8vICNyZWdpb24gXCJwcm90ZWN0ZWRcIiBtZXRob2RzIHVzZWQgYnkgdGVtcGxhdGVcbiAgX2dldFRleHRGcm9tSXRlbShpdGVtOiBzdHJpbmcgfCBhbnkpOiBzdHJpbmcge1xuICAgIGlmICghaXRlbSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyA/IGl0ZW0gOiBpdGVtW3RoaXMuaXRlbVRleHRQcm9wZXJ0eV07XG4gIH1cblxuICBfZ2V0RGlzYWJsZWRTdGF0ZUZyb21JdGVtKGl0ZW06IHN0cmluZyB8IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICghaXRlbSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnID8gdW5kZWZpbmVkIDogaXRlbVt0aGlzLml0ZW1EaXNhYmxlZFByb3BlcnR5XTtcbiAgfVxuXG4gIGdldCBfaGFzSXRlbXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMubGVuZ3RoID4gMCB8fCB0aGlzLmhhc0l0ZW1zRnJvbUNvbnRlbnRQcm9qZWN0aW9uO1xuICB9XG5cbiAgX29uQ2hhbmdlKHZhbHVlOiBzdHJpbmcgfCBhbnkpIHtcbiAgICBpZiAodmFsdWUgPT09IHRoaXMuX3ZhbHVlKSByZXR1cm47XG4gICAgdGhpcy5zZXRTZWxlY3RlZEl0ZW0odmFsdWUpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayh2YWx1ZSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdpb25CbHVyJylcbiAgX29uUmFkaW9CbHVyKCkge1xuICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICB9XG5cbiAgLy8gI2VuZHJlZ2lvbiBcInByb3RlY3RlZFwiIG1ldGhvZHMgdXNlZCBieSB0ZW1wbGF0ZVxuXG4gIC8vICNyZWdpb24gcHJpdmF0ZSBtZXRob2RzXG4gIHByaXZhdGUgZ2V0SW5kZXhPZlNlbGVjdGVkVmFsdWUoKSB7XG4gICAgaWYgKCF0aGlzLnZhbHVlKSByZXR1cm4gLTE7XG4gICAgcmV0dXJuIHRoaXMuaGFzSXRlbXNGcm9tQ29udGVudFByb2plY3Rpb25cbiAgICAgID8gdGhpcy5nZXRJbmRleE9mUHJvamVjdGVkUmFkaW8odGhpcy52YWx1ZSlcbiAgICAgIDogdGhpcy5pdGVtcy5pbmRleE9mKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbmRleE9mUHJvamVjdGVkUmFkaW8odmFsdWU6IHN0cmluZyB8IGFueSk6IG51bWJlciB7XG4gICAgbGV0IHNlbGVjdGVkSW5kZXggPSAtMTtcbiAgICB0aGlzLnByb2plY3RlZFJhZGlvQnV0dG9ucyAmJlxuICAgICAgdGhpcy5wcm9qZWN0ZWRSYWRpb0J1dHRvbnMuZmluZCgocmFkaW8sIGkpID0+IHtcbiAgICAgICAgY29uc3QgZm91bmQgPSByYWRpby52YWx1ZSA9PT0gdmFsdWU7XG4gICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgIHNlbGVjdGVkSW5kZXggPSBpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3VuZDtcbiAgICAgIH0pO1xuICAgIHJldHVybiBzZWxlY3RlZEluZGV4O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWYWx1ZUZyb21TZWxlY3RlZEluZGV4KCk6IHN0cmluZyB8IGFueSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gLTEpIHJldHVybjtcbiAgICByZXR1cm4gdGhpcy5oYXNJdGVtc0Zyb21Db250ZW50UHJvamVjdGlvblxuICAgICAgPyB0aGlzLmdldFZhbHVlRnJvbVByb2plY3RlZFJhZGlvcyh0aGlzLnNlbGVjdGVkSW5kZXgpXG4gICAgICA6IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZEluZGV4XTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VmFsdWVGcm9tUHJvamVjdGVkUmFkaW9zKGluZGV4OiBudW1iZXIpOiBzdHJpbmcgfCBhbnkge1xuICAgIGNvbnN0IHJhZGlvID1cbiAgICAgIHRoaXMucHJvamVjdGVkUmFkaW9CdXR0b25zICYmXG4gICAgICB0aGlzLnByb2plY3RlZFJhZGlvQnV0dG9ucy5maW5kKChfLCBpKSA9PiB7XG4gICAgICAgIHJldHVybiBpID09PSBpbmRleDtcbiAgICAgIH0pO1xuICAgIHJldHVybiByYWRpbyAmJiByYWRpby52YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFNlbGVjdGlvblN0YXRlRnJvbVByb2plY3RlZENvbnRlbnQoKSB7XG4gICAgaWYgKHRoaXMuaGFzSXRlbXNGcm9tQ29udGVudFByb2plY3Rpb24pIHtcbiAgICAgIHRoaXMucmVmcmVzaFNlbGVjdGlvblN0YXRlKCk7IC8vIEluaXRpYWxpemUgc2VsZWN0ZWQgaW5kZXggYW5kIHZhbHVlIGZyb20gcHJvamVjdGVkIHJhZGlvc1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuRm9yUHJvamVjdGVkUmFkaW9zQ2hhbmdlKCkge1xuICAgIHRoaXMucHJvamVjdGVkUmFkaW9CdXR0b25zLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucmVmcmVzaFN0YXRlRnJvbVByb2plY3RlZENvbnRlbnQoKTtcblxuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgLy8gRW5zdXJlIGRpc2FibGVkIHN0YXRlIHByb3BhZ2F0ZXMgd2hlbiByZS1yZW5kZXJpbmcgcHJvamVjdGVkIHJhZGlvcy5cbiAgICAgICAgLy8gc2V0VGltZW91dCBwcmV2ZW50cyBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yIHdoZW4gdXBkYXRpbmcgdGhlIERPTSBpbiBRdWVyeUxpc3QuY2hhbmdlczpcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNldFByb2plY3RlZFJhZGlvc0Rpc2FibGVkU3RhdGUodGhpcy5kaXNhYmxlZCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWZyZXNoU2VsZWN0aW9uU3RhdGUoKSB7XG4gICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkSW5kZXggPSB0aGlzLmdldEluZGV4T2ZTZWxlY3RlZFZhbHVlKCk7IC8vIEVuc3VyZSBzZWxlY3RlZEluZGV4IHJlZmxlY3RzIHZhbHVlIHdpdGhpbiBpdGVtc1xuICAgIH1cbiAgICB0aGlzLl92YWx1ZSA9IHRoaXMuZ2V0VmFsdWVGcm9tU2VsZWN0ZWRJbmRleCgpIHx8IG51bGw7IC8vIEVuc3VyZSB2YWx1ZSBleGlzdHMgd2l0aGluIGl0ZW1zXG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2hTdGF0ZUZyb21Qcm9qZWN0ZWRDb250ZW50KCkge1xuICAgIGlmICghIXRoaXMuX2N1c3RvbUl0ZW1UZW1wbGF0ZSkgcmV0dXJuOyAvLyBPbmx5IHJlZnJlc2ggb24gY2hhbmdlcyB0byBwcm9qZWN0ZWQgY29udGVudCwgbm90IHdoZW4gcmUtcmVuZGVyaW5nIGN1c3RvbSB0ZW1wbGF0ZVxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uUmVmLm1hcmtGb3JDaGVjaygpOyAvLyBFbnN1cmUgY2hhbmdlcyB0byBwcm9qZWN0ZWQgY29udGVudCBnZXRzIGNoZWNrZWQgaW4gbmV4dCBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlXG4gICAgdGhpcy5yZWZyZXNoU2VsZWN0aW9uU3RhdGUoKTsgLy8gU3luYyBzZWxlY3RlZCBpbmRleCBhbmQgdmFsdWUgZnJvbSBwcm9qZWN0ZWQgcmFkaW9zXG4gIH1cblxuICBwcml2YXRlIHNldFNlbGVjdGVkSXRlbSh2YWx1ZTogc3RyaW5nIHwgYW55KSB7XG4gICAgaWYgKHZhbHVlID09PSB0aGlzLl92YWx1ZSkgcmV0dXJuOyAvLyBOb3RoaW5nIGNoYW5nZWRcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuX3NlbGVjdGVkSW5kZXggPSB0aGlzLmdldEluZGV4T2ZTZWxlY3RlZFZhbHVlKCk7XG4gIH1cblxuICBwcml2YXRlIHNldFByb2plY3RlZFJhZGlvc0Rpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy5wcm9qZWN0ZWRSYWRpb0J1dHRvbnMgfHwgIXRoaXMucHJvamVjdGVkUmFkaW9CdXR0b25zLmxlbmd0aCkgcmV0dXJuO1xuICAgIHRoaXMucHJvamVjdGVkUmFkaW9CdXR0b25zLmZvckVhY2goKHJhZGlvLCBpbmRleCkgPT4ge1xuICAgICAgLy8gRGlzYWJsZSBhbGwgcmFkaW9zIHdoZW4gZ3JvdXAgaXMgZGlzYWJsZWQsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8gZWFjaCBpdGVtJ3MgZGlzYWJsZWQgc3RhdGUsIGlmIGRlZmluZWQ6XG4gICAgICByYWRpby5kaXNhYmxlZCA9IGlzRGlzYWJsZWQgfHwgdGhpcy5fZ2V0RGlzYWJsZWRTdGF0ZUZyb21JdGVtKHRoaXMuaXRlbXNbaW5kZXhdKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vICNlbmRyZWdpb24gcHJpdmF0ZSBtZXRob2RzXG59XG4iXX0=
|
|
231
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL3JhZGlvL3JhZGlvLWdyb3VwL3JhZGlvLWdyb3VwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osZUFBZSxFQUNmLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBZXBELE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsWUFBb0Isa0JBQXFDO1FBQXJDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFlekQsYUFBUSxHQUFZLEtBQUssQ0FBQztRQWExQixxQkFBZ0IsR0FBRyxNQUFNLENBQUM7UUFHMUIseUJBQW9CLEdBQUcsVUFBVSxDQUFDO1FBMEJsQzs7V0FFRztRQUNPLGdCQUFXLEdBQStCLElBQUksWUFBWSxFQUFnQixDQUFDO1FBTXJGLHFEQUFxRDtRQUVyRCx5QkFBeUI7UUFDakIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixXQUFNLEdBQXFCLEVBQUUsQ0FBQztRQUM5QixzQkFBaUIsR0FBeUIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQ25ELGVBQVUsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFD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T0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsV0FBVyxFQUFFLG1CQUFtQjt3QkFDaEMsS0FBSyxFQUFFLElBQUk7cUJBQ1o7aUJBQ0Y7Z0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07eUJBUnRDLHlEQUF5RDthQVNuRTs7OztZQTVCQyxpQkFBaUI7Ozt1QkFzQ2hCLEtBQUs7dUJBS0wsV0FBVyxTQUFDLGFBQWEsY0FDekIsS0FBSztvQkFPTCxLQUFLOytCQU1MLEtBQUs7bUNBR0wsS0FBSzs0QkFPTCxLQUFLO29CQVlMLEtBQUs7MEJBV0wsTUFBTTtrQ0FJTixZQUFZLFNBQUMseUJBQXlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFOzJCQVc3RCxZQUFZLFNBQUMsY0FBYztvQ0FFM0IsZUFBZSxTQUFDLGNBQWMsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7MkJBcUVyRCxZQUFZLFNBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBMaXN0SXRlbVRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vbGlzdC9saXN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBSYWRpb0NvbXBvbmVudCB9IGZyb20gJy4uL3JhZGlvLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXJhZGlvLWdyb3VwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhZGlvLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbJ2lvbi1yYWRpby1ncm91cCB7IGRpc3BsYXk6IGluaGVyaXQ7IGZsZXgtd3JhcDogaW5oZXJpdH0nXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogUmFkaW9Hcm91cENvbXBvbmVudCxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBSYWRpb0dyb3VwQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZURldGVjdGlvblJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgLy8gI3JlZ2lvbiBwdWJsaWMgcHJvcGVydGllc1xuXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xuICAgIHRoaXMuc2V0UHJvamVjdGVkUmFkaW9zRGlzYWJsZWRTdGF0ZSh2YWx1ZSk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmVycm9yJykgLy8gVXNlZCB0byBzdHlsZSByYWRpb3Mgd2l0aCBlcnJvciBzdGF0ZVxuICBASW5wdXQoKVxuICBoYXNFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGdldCBpdGVtcygpOiBzdHJpbmdbXSB8IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXMgfHwgW107IC8vIEVuc3VyZSBpdGVtcyByZXR1cm4gZW1wdHkgYXJyYXkgZXZlbiBpZiBzZXQgdG8gbnVsbC91bmRlZmluZWRcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBpdGVtcyh2YWx1ZTogc3RyaW5nW10gfCBhbnlbXSkge1xuICAgIGlmICgoIXZhbHVlIHx8ICF2YWx1ZS5sZW5ndGgpICYmICF0aGlzLml0ZW1zLmxlbmd0aCkgcmV0dXJuOyAvLyBOb3RoaW5nIGNoYW5nZWQsIG5vIGl0ZW1zIGJlZm9yZSBvciBhZnRlclxuICAgIHRoaXMuX2l0ZW1zID0gdmFsdWU7XG4gICAgdGhpcy5yZWZyZXNoU2VsZWN0aW9uU3RhdGUoKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGl0ZW1UZXh0UHJvcGVydHkgPSAndGV4dCc7XG5cbiAgQElucHV0KClcbiAgaXRlbURpc2FibGVkUHJvcGVydHkgPSAnZGlzYWJsZWQnO1xuXG4gIGdldCBzZWxlY3RlZEluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSW5kZXg7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgc2VsZWN0ZWRJbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHZhbHVlID0gcGFyc2VJbnQodmFsdWUpOyAvLyBFbnN1cmUgZGF0YSB0eXBlIG51bWJlciwgZS5nLiB3aGVuIHVzZWQgd2l0aCB0ZW1wbGF0ZSBzeW50YXggd2l0aG91dCBiaW5kaW5nOiA8Li4uIHNlbGVjdGVkSW5kZXg9XCIxXCJcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gTmFOKSB2YWx1ZSA9IC0xO1xuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5zZWxlY3RlZEluZGV4KSByZXR1cm47XG4gICAgdGhpcy5fc2VsZWN0ZWRJbmRleCA9IHZhbHVlO1xuICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5nZXRWYWx1ZUZyb21TZWxlY3RlZEluZGV4KCkgfHwgbnVsbDtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBzdHJpbmcgfCBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nIHwgYW55KSB7XG4gICAgdGhpcy5zZXRTZWxlY3RlZEl0ZW0odmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaGFzVmFsdWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnZhbHVlICE9PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBhbiBvcHRpb24gaXMgc2VsZWN0ZWRcbiAgICovXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZyB8IGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IGFueT4oKTtcbiAgLy8gI2VuZHJlZ2lvbiBwdWJsaWMgcHJvcGVydGllc1xuXG4gIC8vICNyZWdpb24gXCJwcm90ZWN0ZWRcIiBwcm9wZXJ0aWVzIHVzZWQgYnkgdGVtcGxhdGVcbiAgQENvbnRlbnRDaGlsZChMaXN0SXRlbVRlbXBsYXRlRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIF9jdXN0b21JdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIC8vICNlbmRyZWdpb24gXCJwcm90ZWN0ZWRcIiBwcm9wZXJ0aWVzIHVzZWQgYnkgdGVtcGxhdGVcblxuICAvLyAjcmVnaW9uIHByaXZhdGUgZmllbGRzXG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX2l0ZW1zOiBzdHJpbmdbXSB8IGFueVtdID0gW107XG4gIHByaXZhdGUgX29uQ2hhbmdlQ2FsbGJhY2s6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG4gIHByaXZhdGUgX29uVG91Y2hlZCA9ICgpID0+IHt9O1xuICBwcml2YXRlIF9zZWxlY3RlZEluZGV4OiBudW1iZXIgPSAtMTtcbiAgcHJpdmF0ZSBfdmFsdWU/OiBzdHJpbmcgfCBhbnkgPSBudWxsO1xuICBAVmlld0NoaWxkcmVuKFJhZGlvQ29tcG9uZW50KVxuICBwcml2YXRlIHJhZGlvQnV0dG9uczogUXVlcnlMaXN0PFJhZGlvQ29tcG9uZW50PjtcbiAgQENvbnRlbnRDaGlsZHJlbihSYWRpb0NvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwcml2YXRlIHByb2plY3RlZFJhZGlvQnV0dG9uczogUXVlcnlMaXN0PFJhZGlvQ29tcG9uZW50PjtcblxuICBwcml2YXRlIGdldCBoYXNJdGVtc0Zyb21Db250ZW50UHJvamVjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgIXRoaXMuaXRlbXMubGVuZ3RoICYmXG4gICAgICAhdGhpcy5fY3VzdG9tSXRlbVRlbXBsYXRlICYmXG4gICAgICB0aGlzLnByb2plY3RlZFJhZGlvQnV0dG9ucyAmJlxuICAgICAgdGhpcy5wcm9qZWN0ZWRSYWRpb0J1dHRvbnMubGVuZ3RoID4gMFxuICAgICk7XG4gIH1cblxuICAvLyAjZW5kcmVnaW9uIHByaXZhdGUgZmllbGRzXG5cbiAgLy8gI3JlZ2lvbiBwdWJsaWMgbWV0aG9kc1xuICBmb2N1cygpIHtcbiAgICBjb25zdCBmaW5kRm9jdXNhYmxlID0gKHJhZGlvczogUXVlcnlMaXN0PFJhZGlvQ29tcG9uZW50PikgPT5cbiAgICAgIHJhZGlvcyAmJiByYWRpb3MuZmluZCgocmFkaW8pID0+ICFpc05hTihyYWRpby5idXR0b25UYWJJbmRleCkgJiYgcmFkaW8uYnV0dG9uVGFiSW5kZXggIT09IC0xKTtcbiAgICBjb25zdCBmb2N1c2FibGUgPSBmaW5kRm9jdXNhYmxlKHRoaXMucmFkaW9CdXR0b25zKSB8fCBmaW5kRm9jdXNhYmxlKHRoaXMucHJvamVjdGVkUmFkaW9CdXR0b25zKTtcbiAgICBmb2N1c2FibGUgJiYgZm9jdXNhYmxlLmZvY3VzKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0U2VsZWN0aW9uU3RhdGVGcm9tUHJvamVjdGVkQ29udGVudCgpO1xuICAgIHRoaXMubGlzdGVuRm9yUHJvamVjdGVkUmFkaW9zQ2hhbmdlKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLmNoYW5nZURldGVjdGlvblJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdGlvblJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8vICNlbmRyZWdpb24gcHVibGljIG1ldGhvZHNcblxuICAvLyAjcmVnaW9uIFwicHJvdGVjdGVkXCIgbWV0aG9kcyB1c2VkIGJ5IHRlbXBsYXRlXG4gIF9nZXRUZXh0RnJvbUl0ZW0oaXRlbTogc3RyaW5nIHwgYW55KTogc3RyaW5nIHtcbiAgICBpZiAoIWl0ZW0pIHJldHVybiBudWxsO1xuICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyBpdGVtIDogaXRlbVt0aGlzLml0ZW1UZXh0UHJvcGVydHldO1xuICB9XG5cbiAgX2dldERpc2FibGVkU3RhdGVGcm9tSXRlbShpdGVtOiBzdHJpbmcgfCBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoIWl0ZW0pIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyA/IHVuZGVmaW5lZCA6IGl0ZW1bdGhpcy5pdGVtRGlzYWJsZWRQcm9wZXJ0eV07XG4gIH1cblxuICBnZXQgX2hhc0l0ZW1zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLmxlbmd0aCA+IDAgfHwgdGhpcy5oYXNJdGVtc0Zyb21Db250ZW50UHJvamVjdGlvbjtcbiAgfVxuXG4gIF9vbkNoYW5nZSh2YWx1ZTogc3RyaW5nIHwgYW55KSB7XG4gICAgaWYgKHZhbHVlID09PSB0aGlzLl92YWx1ZSkgcmV0dXJuO1xuICAgIHRoaXMuc2V0U2VsZWN0ZWRJdGVtKHZhbHVlKTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sodmFsdWUpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignaW9uQmx1cicpXG4gIF9vblJhZGlvQmx1cigpIHtcbiAgICB0aGlzLl9vblRvdWNoZWQoKTtcbiAgfVxuXG4gIC8vICNlbmRyZWdpb24gXCJwcm90ZWN0ZWRcIiBtZXRob2RzIHVzZWQgYnkgdGVtcGxhdGVcblxuICAvLyAjcmVnaW9uIHByaXZhdGUgbWV0aG9kc1xuICBwcml2YXRlIGdldEluZGV4T2ZTZWxlY3RlZFZhbHVlKCkge1xuICAgIGlmICghdGhpcy5oYXNWYWx1ZSkgcmV0dXJuIC0xO1xuICAgIHJldHVybiB0aGlzLmhhc0l0ZW1zRnJvbUNvbnRlbnRQcm9qZWN0aW9uXG4gICAgICA/IHRoaXMuZ2V0SW5kZXhPZlByb2plY3RlZFJhZGlvKHRoaXMudmFsdWUpXG4gICAgICA6IHRoaXMuaXRlbXMuaW5kZXhPZih0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW5kZXhPZlByb2plY3RlZFJhZGlvKHZhbHVlOiBzdHJpbmcgfCBhbnkpOiBudW1iZXIge1xuICAgIGxldCBzZWxlY3RlZEluZGV4ID0gLTE7XG4gICAgdGhpcy5wcm9qZWN0ZWRSYWRpb0J1dHRvbnMgJiZcbiAgICAgIHRoaXMucHJvamVjdGVkUmFkaW9CdXR0b25zLmZpbmQoKHJhZGlvLCBpKSA9PiB7XG4gICAgICAgIGNvbnN0IGZvdW5kID0gcmFkaW8udmFsdWUgPT09IHZhbHVlO1xuICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICBzZWxlY3RlZEluZGV4ID0gaTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgICB9KTtcbiAgICByZXR1cm4gc2VsZWN0ZWRJbmRleDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VmFsdWVGcm9tU2VsZWN0ZWRJbmRleCgpOiBzdHJpbmcgfCBhbnkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPT09IC0xKSByZXR1cm47XG4gICAgcmV0dXJuIHRoaXMuaGFzSXRlbXNGcm9tQ29udGVudFByb2plY3Rpb25cbiAgICAgID8gdGhpcy5nZXRWYWx1ZUZyb21Qcm9qZWN0ZWRSYWRpb3ModGhpcy5zZWxlY3RlZEluZGV4KVxuICAgICAgOiB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRJbmRleF07XG4gIH1cblxuICBwcml2YXRlIGdldFZhbHVlRnJvbVByb2plY3RlZFJhZGlvcyhpbmRleDogbnVtYmVyKTogc3RyaW5nIHwgYW55IHtcbiAgICBjb25zdCByYWRpbyA9XG4gICAgICB0aGlzLnByb2plY3RlZFJhZGlvQnV0dG9ucyAmJlxuICAgICAgdGhpcy5wcm9qZWN0ZWRSYWRpb0J1dHRvbnMuZmluZCgoXywgaSkgPT4ge1xuICAgICAgICByZXR1cm4gaSA9PT0gaW5kZXg7XG4gICAgICB9KTtcbiAgICByZXR1cm4gcmFkaW8gJiYgcmFkaW8udmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGluaXRTZWxlY3Rpb25TdGF0ZUZyb21Qcm9qZWN0ZWRDb250ZW50KCkge1xuICAgIGlmICh0aGlzLmhhc0l0ZW1zRnJvbUNvbnRlbnRQcm9qZWN0aW9uKSB7XG4gICAgICB0aGlzLnJlZnJlc2hTZWxlY3Rpb25TdGF0ZSgpOyAvLyBJbml0aWFsaXplIHNlbGVjdGVkIGluZGV4IGFuZCB2YWx1ZSBmcm9tIHByb2plY3RlZCByYWRpb3NcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxpc3RlbkZvclByb2plY3RlZFJhZGlvc0NoYW5nZSgpIHtcbiAgICB0aGlzLnByb2plY3RlZFJhZGlvQnV0dG9ucy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlZnJlc2hTdGF0ZUZyb21Qcm9qZWN0ZWRDb250ZW50KCk7XG5cbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIC8vIEVuc3VyZSBkaXNhYmxlZCBzdGF0ZSBwcm9wYWdhdGVzIHdoZW4gcmUtcmVuZGVyaW5nIHByb2plY3RlZCByYWRpb3MuXG4gICAgICAgIC8vIHNldFRpbWVvdXQgcHJldmVudHMgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvciB3aGVuIHVwZGF0aW5nIHRoZSBET00gaW4gUXVlcnlMaXN0LmNoYW5nZXM6XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZXRQcm9qZWN0ZWRSYWRpb3NEaXNhYmxlZFN0YXRlKHRoaXMuZGlzYWJsZWQpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVmcmVzaFNlbGVjdGlvblN0YXRlKCkge1xuICAgIGlmICh0aGlzLmhhc1ZhbHVlKSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZEluZGV4ID0gdGhpcy5nZXRJbmRleE9mU2VsZWN0ZWRWYWx1ZSgpOyAvLyBFbnN1cmUgc2VsZWN0ZWRJbmRleCByZWZsZWN0cyB2YWx1ZSB3aXRoaW4gaXRlbXNcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZUZyb21TZWxlY3RlZEluZGV4ID0gdGhpcy5nZXRWYWx1ZUZyb21TZWxlY3RlZEluZGV4KCk7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZUZyb21TZWxlY3RlZEluZGV4ICE9PSB1bmRlZmluZWQgPyB2YWx1ZUZyb21TZWxlY3RlZEluZGV4IDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgcmVmcmVzaFN0YXRlRnJvbVByb2plY3RlZENvbnRlbnQoKSB7XG4gICAgaWYgKCEhdGhpcy5fY3VzdG9tSXRlbVRlbXBsYXRlKSByZXR1cm47IC8vIE9ubHkgcmVmcmVzaCBvbiBjaGFuZ2VzIHRvIHByb2plY3RlZCBjb250ZW50LCBub3Qgd2hlbiByZS1yZW5kZXJpbmcgY3VzdG9tIHRlbXBsYXRlXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb25SZWYubWFya0ZvckNoZWNrKCk7IC8vIEVuc3VyZSBjaGFuZ2VzIHRvIHByb2plY3RlZCBjb250ZW50IGdldHMgY2hlY2tlZCBpbiBuZXh0IGNoYW5nZSBkZXRlY3Rpb24gY3ljbGVcbiAgICB0aGlzLnJlZnJlc2hTZWxlY3Rpb25TdGF0ZSgpOyAvLyBTeW5jIHNlbGVjdGVkIGluZGV4IGFuZCB2YWx1ZSBmcm9tIHByb2plY3RlZCByYWRpb3NcbiAgfVxuXG4gIHByaXZhdGUgc2V0U2VsZWN0ZWRJdGVtKHZhbHVlOiBzdHJpbmcgfCBhbnkpIHtcbiAgICBpZiAodmFsdWUgPT09IHRoaXMuX3ZhbHVlKSByZXR1cm47IC8vIE5vdGhpbmcgY2hhbmdlZFxuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5fc2VsZWN0ZWRJbmRleCA9IHRoaXMuZ2V0SW5kZXhPZlNlbGVjdGVkVmFsdWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UHJvamVjdGVkUmFkaW9zRGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLnByb2plY3RlZFJhZGlvQnV0dG9ucyB8fCAhdGhpcy5wcm9qZWN0ZWRSYWRpb0J1dHRvbnMubGVuZ3RoKSByZXR1cm47XG4gICAgdGhpcy5wcm9qZWN0ZWRSYWRpb0J1dHRvbnMuZm9yRWFjaCgocmFkaW8sIGluZGV4KSA9PiB7XG4gICAgICAvLyBEaXNhYmxlIGFsbCByYWRpb3Mgd2hlbiBncm91cCBpcyBkaXNhYmxlZCwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0byBlYWNoIGl0ZW0ncyBkaXNhYmxlZCBzdGF0ZSwgaWYgZGVmaW5lZDpcbiAgICAgIHJhZGlvLmRpc2FibGVkID0gaXNEaXNhYmxlZCB8fCB0aGlzLl9nZXREaXNhYmxlZFN0YXRlRnJvbUl0ZW0odGhpcy5pdGVtc1tpbmRleF0pO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gI2VuZHJlZ2lvbiBwcml2YXRlIG1ldGhvZHNcbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"__symbolic":"module","version":4,"metadata":{"RadioGroupComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":19,"character":1},"arguments":[{"selector":"kirby-radio-group","styles":["ion-radio-group { display: inherit; flex-wrap: inherit}"],"providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":25,"character":15},"useExisting":{"__symbolic":"reference","name":"RadioGroupComponent"},"multi":true}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":30,"character":19},"member":"OnPush"},"template":"<ion-radio-group *ngIf=\"_hasItems\" [value]=\"value\" (ionChange)=\"_onChange($event.detail.value)\">\n <ng-container *ngIf=\"!items || !items.length; else itemsTemplate\">\n <ng-content></ng-content>\n </ng-container>\n</ion-radio-group>\n\n<ng-template #itemsTemplate>\n <ng-container *ngFor=\"let item of items; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"\n _customItemTemplate || defaultItemTemplate;\n context: { $implicit: item, selected: i === selectedIndex, index: i }\n \"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #defaultItemTemplate let-item>\n <kirby-radio\n [value]=\"item\"\n [disabled]=\"disabled || _getDisabledStateFromItem(item)\"\n [text]=\"_getTextFromItem(item)\"\n ></kirby-radio>\n</ng-template>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":33,"character":42}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3}}]}],"hasError":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":46,"character":3},"arguments":["class.error"]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":47,"character":3}}]}],"items":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":54,"character":3}}]}],"itemTextProperty":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":60,"character":3}}]}],"itemDisabledProperty":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":63,"character":3}}]}],"selectedIndex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":70,"character":3}}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":82,"character":3}}]}],"valueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":
|
|
1
|
+
[{"__symbolic":"module","version":4,"metadata":{"RadioGroupComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":19,"character":1},"arguments":[{"selector":"kirby-radio-group","styles":["ion-radio-group { display: inherit; flex-wrap: inherit}"],"providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":25,"character":15},"useExisting":{"__symbolic":"reference","name":"RadioGroupComponent"},"multi":true}],"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":30,"character":19},"member":"OnPush"},"template":"<ion-radio-group *ngIf=\"_hasItems\" [value]=\"value\" (ionChange)=\"_onChange($event.detail.value)\">\n <ng-container *ngIf=\"!items || !items.length; else itemsTemplate\">\n <ng-content></ng-content>\n </ng-container>\n</ion-radio-group>\n\n<ng-template #itemsTemplate>\n <ng-container *ngFor=\"let item of items; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"\n _customItemTemplate || defaultItemTemplate;\n context: { $implicit: item, selected: i === selectedIndex, index: i }\n \"\n ></ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #defaultItemTemplate let-item>\n <kirby-radio\n [value]=\"item\"\n [disabled]=\"disabled || _getDisabledStateFromItem(item)\"\n [text]=\"_getTextFromItem(item)\"\n ></kirby-radio>\n</ng-template>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":33,"character":42}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3}}]}],"hasError":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":46,"character":3},"arguments":["class.error"]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":47,"character":3}}]}],"items":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":54,"character":3}}]}],"itemTextProperty":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":60,"character":3}}]}],"itemDisabledProperty":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":63,"character":3}}]}],"selectedIndex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":70,"character":3}}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":82,"character":3}}]}],"valueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":93,"character":3}}]}],"_customItemTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":97,"character":3},"arguments":[{"__symbolic":"reference","module":"../../list/list.directive","name":"ListItemTemplateDirective","line":97,"character":16},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef","line":97,"character":51}}]}]}],"radioButtons":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChildren","line":108,"character":3},"arguments":[{"__symbolic":"reference","module":"../radio.component","name":"RadioComponent","line":108,"character":16}]}]}],"projectedRadioButtons":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren","line":110,"character":3},"arguments":[{"__symbolic":"reference","module":"../radio.component","name":"RadioComponent","line":110,"character":19},{"descendants":true}]}]}],"focus":[{"__symbolic":"method"}],"ngAfterContentInit":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"_getTextFromItem":[{"__symbolic":"method"}],"_getDisabledStateFromItem":[{"__symbolic":"method"}],"_onChange":[{"__symbolic":"method"}],"_onRadioBlur":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":179,"character":3},"arguments":["ionBlur"]}]}],"getIndexOfSelectedValue":[{"__symbolic":"method"}],"getIndexOfProjectedRadio":[{"__symbolic":"method"}],"getValueFromSelectedIndex":[{"__symbolic":"method"}],"getValueFromProjectedRadios":[{"__symbolic":"method"}],"initSelectionStateFromProjectedContent":[{"__symbolic":"method"}],"listenForProjectedRadiosChange":[{"__symbolic":"method"}],"refreshSelectionState":[{"__symbolic":"method"}],"refreshStateFromProjectedContent":[{"__symbolic":"method"}],"setSelectedItem":[{"__symbolic":"method"}],"setProjectedRadiosDisabledState":[{"__symbolic":"method"}]}}}}]
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudC1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL3NlZ21lbnRlZC1jb250cm9sL3NlZ21lbnQtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGhlbWVDb2xvciB9IGZyb20gJ0BraXJieWRlc2lnbi9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBTZWdtZW50SXRlbSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRleHQ6IHN0cmluZztcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFdpbGwgYmUgcmVtb3ZlZCBpbiBuZXh0IG1ham9yIHZlcnNpb24uIFVzZSBgc2VsZWN0ZWRJbmRleGAgb3IgYHZhbHVlYCBvbiBgPGtpcmJ5LXNlZ21lbnRlZC1jb250cm9sPmAgaW5zdGVhZC5cbiAgICovXG4gIGNoZWNrZWQ/OiBib29sZWFuO1xuICBiYWRnZT86IHtcbiAgICBjb250ZW50Pzogc3RyaW5nO1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgdGhlbWVDb2xvcjogVGhlbWVDb2xvcjtcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -67,10 +67,10 @@ export class SegmentedControlComponent {
|
|
|
67
67
|
SegmentedControlComponent.decorators = [
|
|
68
68
|
{ type: Component, args: [{
|
|
69
69
|
selector: 'kirby-segmented-control',
|
|
70
|
-
template: "<ion-segment\n *ngIf=\"mode === 'default'\"\n [value]=\"value?.id\"\n (ionChange)=\"onSegmentSelect($event.detail.value)\"\n (click)=\"preventWrapperClick($event)\"\n>\n <div *ngFor=\"let item of items\" class=\"segment-btn-wrapper\">\n <ion-segment-button [value]=\"item.id\">{{ item.text }}</ion-segment-button>\n <kirby-badge\n *ngIf=\"item.badge\"\n role=\"text\"\n [attr.aria-label]=\"item.badge.description\"\n [themeColor]=\"item.badge.themeColor\"\n
|
|
70
|
+
template: "<ion-segment\n *ngIf=\"mode === 'default'\"\n [value]=\"value?.id\"\n (ionChange)=\"onSegmentSelect($event.detail.value)\"\n (click)=\"preventWrapperClick($event)\"\n>\n <div *ngFor=\"let item of items\" class=\"segment-btn-wrapper\">\n <ion-segment-button [value]=\"item.id\">{{ item.text }}</ion-segment-button>\n <kirby-badge\n *ngIf=\"item.badge\"\n role=\"text\"\n [attr.aria-label]=\"item.badge.description\"\n [themeColor]=\"item.badge.themeColor\"\n >\n <kirby-icon\n *ngIf=\"item.badge.icon; else badgeContent\"\n [customName]=\"item.badge.icon\"\n [name]=\"item.badge.icon\"\n ></kirby-icon>\n <ng-template #badgeContent>\n {{ item.badge.content }}\n </ng-template>\n </kirby-badge>\n </div>\n</ion-segment>\n\n<ng-container *ngIf=\"mode === 'chip' || mode === 'compactChip'\">\n <kirby-chip\n *ngFor=\"let item of items; let index = index\"\n [text]=\"item.text\"\n [isSelected]=\"index === selectedIndex\"\n (click)=\"onSegmentSelect(item.id)\"\n role=\"button\"\n ></kirby-chip>\n</ng-container>\n",
|
|
71
71
|
// tslint:disable-next-line: no-host-metadata-property
|
|
72
72
|
host: { role: 'group' },
|
|
73
|
-
styles: [":host{display:block;-webkit-user-select:none;user-select:none}:host.sm ion-segment-button{min-height:32px;font-size:12px;--padding-start:16px;--padding-end:16px}:host.chip-mode{display:flex;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden}@media (pointer:coarse){:host.chip-mode{scrollbar-width:none}:host.chip-mode::-webkit-scrollbar{display:none}}ion-segment{display:inline-flex;width:auto;overflow:visible;contain:unset;--background:var(--kirby-white);border-radius:999px}ion-segment-button{position:relative;min-height:40px;font-weight:400;font-size:14px;text-transform:none;--border-radius:999px;--border-style:none;--background:none;--color:var(--kirby-white-contrast);--indicator-color:var(--kirby-black);--color-checked:var(--kirby-black-contrast);--color-hover:var(--kirby-black-tint);--indicator-box-shadow:none;--padding-start:24px;--padding-end:24px;--margin-bottom:0;--margin-end:0;--margin-start:0;--margin-top:0;margin:0}ion-segment-button:after{content:\"\";position:absolute;min-height:44px;min-width:44px;width:100%;height:100%;transform:translate(-50%,-50%);left:50%;top:50%}.segment-btn-wrapper{position:relative}
|
|
73
|
+
styles: [":host{display:block;-webkit-user-select:none;user-select:none;--kirby-badge-elevation:0 5px 10px -10px rgba(28,28,28,0.3),0 0 5px 0 rgba(28,28,28,0.08);--kirby-badge-position:absolute;--kirby-badge-top:-8px;--kirby-badge-right:8px;--kirby-badge-z-index:2}:host.sm ion-segment-button{min-height:32px;font-size:12px;--padding-start:16px;--padding-end:16px}:host.chip-mode{display:flex;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden}@media (pointer:coarse){:host.chip-mode{scrollbar-width:none}:host.chip-mode::-webkit-scrollbar{display:none}}ion-segment{display:inline-flex;width:auto;overflow:visible;contain:unset;--background:var(--kirby-white);border-radius:999px}ion-segment-button{position:relative;min-height:40px;font-weight:400;font-size:14px;text-transform:none;--border-radius:999px;--border-style:none;--background:none;--color:var(--kirby-white-contrast);--indicator-color:var(--kirby-black);--color-checked:var(--kirby-black-contrast);--color-hover:var(--kirby-black-tint);--indicator-box-shadow:none;--padding-start:24px;--padding-end:24px;--margin-bottom:0;--margin-end:0;--margin-start:0;--margin-top:0;margin:0}ion-segment-button:after{content:\"\";position:absolute;min-height:44px;min-width:44px;width:100%;height:100%;transform:translate(-50%,-50%);left:50%;top:50%}.segment-btn-wrapper{position:relative}:host-context(.plt-desktop) ion-segment-button:focus-within{outline-color:-webkit-focus-ring-color;outline-style:auto}"]
|
|
74
74
|
},] }
|
|
75
75
|
];
|
|
76
76
|
SegmentedControlComponent.propDecorators = {
|
|
@@ -83,4 +83,4 @@ SegmentedControlComponent.propDecorators = {
|
|
|
83
83
|
size: [{ type: Input }],
|
|
84
84
|
segmentSelect: [{ type: Output }]
|
|
85
85
|
};
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudGVkLWNvbnRyb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL3NlZ21lbnRlZC1jb250cm9sL3NlZ21lbnRlZC1jb250cm9sLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlwRixNQUFNLENBQU4sSUFBWSxvQkFJWDtBQUpELFdBQVksb0JBQW9CO0lBQzlCLHFDQUFhLENBQUE7SUFDYixtREFBMkIsQ0FBQTtJQUMzQiwyQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBSlcsb0JBQW9CLEtBQXBCLG9CQUFvQixRQUkvQjtBQVNELE1BQU0sT0FBTyx5QkFBeUI7SUFQdEM7UUFnQlcsU0FBSSxHQUF5QixvQkFBb0IsQ0FBQyxPQUFPLENBQUM7UUFXM0QsV0FBTSxHQUFrQixFQUFFLENBQUM7UUFpQjNCLG1CQUFjLEdBQVcsQ0FBQyxDQUFDLENBQUM7UUE0QjFCLGtCQUFhLEdBQThCLElBQUksWUFBWSxFQUFFLENBQUM7SUFTMUUsQ0FBQztJQXpFQyxtQkFBbUIsQ0FBQyxLQUFZO1FBQzlCLElBQUksS0FBSyxDQUFDLE1BQU0sWUFBWSxXQUFXLEVBQUU7WUFDdkMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsRUFBRTtnQkFDMUQsS0FBSyxDQUFDLHdCQUF3QixFQUFFLENBQUM7YUFDbEM7U0FDRjtJQUNILENBQUM7SUFJRCxJQUNJLGFBQWE7UUFDZixPQUFPO1lBQ0wsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxXQUFXO1lBQ3hDLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLEVBQUUsY0FBYztZQUM5QyxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxFQUFFLG1CQUFtQjtTQUN4RCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNmLENBQUM7SUFHRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELElBQWEsS0FBSyxDQUFDLEtBQW9CO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUMxQixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEUsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUN6QixPQUFPLENBQUMsSUFBSSxDQUNWLDJKQUEySixDQUM1SixDQUFDO1lBQ0YsSUFBSSxDQUFDLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQztTQUN4QztRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUdELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBYSxhQUFhLENBQUMsS0FBYTtRQUN0QyxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDOUM7SUFDSCxDQUFDO0lBR0QsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFhLEtBQUssQ0FBQyxLQUFrQjtRQUNuQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFLRCxJQUFhLElBQUksQ0FBQyxJQUFpQjtRQUNqQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksS0FBSyxJQUFJLENBQUM7SUFDbkMsQ0FBQztJQUlELGVBQWUsQ0FBQyxVQUFrQjtRQUNoQyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLElBQUksaUJBQWlCLEtBQUssSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUM1QyxJQUFJLENBQUMsYUFBYSxHQUFHLGlCQUFpQixDQUFDO1lBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyQztJQUNILENBQUM7OztZQWhGRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMscW1DQUFpRDtnQkFFakQsc0RBQXNEO2dCQUN0RCxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFOzthQUN4Qjs7O21CQVVFLEtBQUs7NEJBRUwsV0FBVyxTQUFDLE9BQU87b0JBY25CLEtBQUs7NEJBaUJMLEtBQUs7b0JBWUwsS0FBSzswQkFJTCxXQUFXLFNBQUMsVUFBVTttQkFHdEIsS0FBSzs0QkFJTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNlZ21lbnRJdGVtIH0gZnJvbSAnLi9zZWdtZW50LWl0ZW0nO1xuXG5leHBvcnQgZW51bSBTZWdtZW50ZWRDb250cm9sTW9kZSB7XG4gIGNoaXAgPSAnY2hpcCcsXG4gIGNvbXBhY3RDaGlwID0gJ2NvbXBhY3RDaGlwJyxcbiAgZGVmYXVsdCA9ICdkZWZhdWx0Jyxcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktc2VnbWVudGVkLWNvbnRyb2wnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VnbWVudGVkLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWdtZW50ZWQtY29udHJvbC5jb21wb25lbnQuc2NzcyddLFxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWhvc3QtbWV0YWRhdGEtcHJvcGVydHlcbiAgaG9zdDogeyByb2xlOiAnZ3JvdXAnIH0sXG59KVxuZXhwb3J0IGNsYXNzIFNlZ21lbnRlZENvbnRyb2xDb21wb25lbnQge1xuICBwcmV2ZW50V3JhcHBlckNsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgIGlmIChldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgaWYgKGV2ZW50LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ3NlZ21lbnQtYnRuLXdyYXBwZXInKSkge1xuICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASW5wdXQoKSBtb2RlOiBTZWdtZW50ZWRDb250cm9sTW9kZSA9IFNlZ21lbnRlZENvbnRyb2xNb2RlLmRlZmF1bHQ7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBfbW9kZUNzc0NsYXNzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBbU2VnbWVudGVkQ29udHJvbE1vZGUuY2hpcF06ICdjaGlwLW1vZGUnLFxuICAgICAgW1NlZ21lbnRlZENvbnRyb2xNb2RlLmRlZmF1bHRdOiAnZGVmYXVsdC1tb2RlJyxcbiAgICAgIFtTZWdtZW50ZWRDb250cm9sTW9kZS5jb21wYWN0Q2hpcF06ICdjb21wYWN0IGNoaXAtbW9kZScsXG4gICAgfVt0aGlzLm1vZGVdO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXRlbXM6IFNlZ21lbnRJdGVtW10gPSBbXTtcbiAgZ2V0IGl0ZW1zKCk6IFNlZ21lbnRJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLl9pdGVtcztcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBpdGVtcyh2YWx1ZTogU2VnbWVudEl0ZW1bXSkge1xuICAgIHRoaXMuX2l0ZW1zID0gdmFsdWUgfHwgW107XG4gICAgY29uc3QgY2hlY2tlZEl0ZW1JbmRleCA9IHRoaXMuaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmNoZWNrZWQpO1xuICAgIGlmIChjaGVja2VkSXRlbUluZGV4ID4gLTEpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ1NlZ21lbnRJdGVtLmNoZWNrZWQgaXMgZGVwcmVjYXRlZCAtIHBsZWFzZSByZW1vdmUgZnJvbSB5b3VyIGBpdGVtc2AgY29uZmlndXJhdGlvbi4gVXNlIGBzZWxlY3RlZEluZGV4YCBvciBgdmFsdWVgIG9uIGA8a2lyYnktc2VnbWVudGVkLWNvbnRyb2w+YCBpbnN0ZWFkICdcbiAgICAgICk7XG4gICAgICB0aGlzLl9zZWxlY3RlZEluZGV4ID0gY2hlY2tlZEl0ZW1JbmRleDtcbiAgICB9XG4gICAgdGhpcy5fdmFsdWUgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRJbmRleF07XG4gIH1cblxuICBwcml2YXRlIF9zZWxlY3RlZEluZGV4OiBudW1iZXIgPSAtMTtcbiAgZ2V0IHNlbGVjdGVkSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJbmRleDtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBzZWxlY3RlZEluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuX3NlbGVjdGVkSW5kZXgpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkSW5kZXggPSB2YWx1ZTtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkSW5kZXhdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3ZhbHVlOiBTZWdtZW50SXRlbTtcbiAgZ2V0IHZhbHVlKCk6IFNlZ21lbnRJdGVtIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgdmFsdWUodmFsdWU6IFNlZ21lbnRJdGVtKSB7XG4gICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gdGhpcy5pdGVtcy5pbmRleE9mKHZhbHVlKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc20nKVxuICBpc1NtYWxsU2l6ZTogYm9vbGVhbjtcblxuICBASW5wdXQoKSBzZXQgc2l6ZShzaXplOiAnc20nIHwgJ21kJykge1xuICAgIHRoaXMuaXNTbWFsbFNpemUgPSBzaXplID09PSAnc20nO1xuICB9XG5cbiAgQE91dHB1dCgpIHNlZ21lbnRTZWxlY3Q6IEV2ZW50RW1pdHRlcjxTZWdtZW50SXRlbT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgb25TZWdtZW50U2VsZWN0KHNlbGVjdGVkSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHNlbGVjdGVkSXRlbUluZGV4ID0gdGhpcy5pdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+IHNlbGVjdGVkSWQgPT09IGl0ZW0uaWQpO1xuICAgIGlmIChzZWxlY3RlZEl0ZW1JbmRleCAhPT0gdGhpcy5zZWxlY3RlZEluZGV4KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSBzZWxlY3RlZEl0ZW1JbmRleDtcbiAgICAgIHRoaXMuc2VnbWVudFNlbGVjdC5lbWl0KHRoaXMudmFsdWUpO1xuICAgIH1cbiAgfVxufVxuIl19
|