@sumaris-net/ngx-components 18.17.7-rc4 → 18.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/doc/changelog.md +4 -2
- package/esm2022/src/app/admin/users/users-select.modal.mjs +1 -1
- package/esm2022/src/app/admin/users/users.mjs +1 -1
- package/esm2022/src/app/core/about/about.modal.mjs +1 -1
- package/esm2022/src/app/core/account/account.page.mjs +1 -1
- package/esm2022/src/app/core/account/new-token.form.mjs +1 -1
- package/esm2022/src/app/core/account/new-token.modal.mjs +1 -1
- package/esm2022/src/app/core/account/password/change-password.form.mjs +1 -1
- package/esm2022/src/app/core/account/password/change-password.page.mjs +1 -1
- package/esm2022/src/app/core/account/token.table.mjs +1 -1
- package/esm2022/src/app/core/auth/auth.form.mjs +1 -1
- package/esm2022/src/app/core/auth/auth.modal.mjs +1 -1
- package/esm2022/src/app/core/auth/reset-password.modal.mjs +1 -1
- package/esm2022/src/app/core/form/array/testing/form-array.test.mjs +1 -1
- package/esm2022/src/app/core/form/buttons/form-buttons-bar.component.mjs +1 -1
- package/esm2022/src/app/core/form/entity/entity-metadata.component.mjs +1 -1
- package/esm2022/src/app/core/form/list/list.form.mjs +1 -1
- package/esm2022/src/app/core/form/properties/properties-file.service.mjs +133 -0
- package/esm2022/src/app/core/form/properties/properties.form.mjs +97 -19
- package/esm2022/src/app/core/form/properties/properties.module.mjs +53 -5
- package/esm2022/src/app/core/form/properties/properties.table.mjs +1 -1
- package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +4 -5
- package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +1 -1
- package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +1 -1
- package/esm2022/src/app/core/form/username/username.form.mjs +1 -1
- package/esm2022/src/app/core/home/home.mjs +1 -1
- package/esm2022/src/app/core/icon/icon.component.mjs +1 -1
- package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +1 -1
- package/esm2022/src/app/core/menu/menu.component.mjs +1 -1
- package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +1 -1
- package/esm2022/src/app/core/menu/testing/menu-other.testing.mjs +1 -1
- package/esm2022/src/app/core/menu/testing/menu.testing.mjs +1 -1
- package/esm2022/src/app/core/offline/update-offline-mode-card.component.mjs +1 -1
- package/esm2022/src/app/core/peer/select-peer.modal.mjs +1 -1
- package/esm2022/src/app/core/register/register-confirm.page.mjs +1 -1
- package/esm2022/src/app/core/register/register.form.mjs +1 -1
- package/esm2022/src/app/core/register/register.modal.mjs +1 -1
- package/esm2022/src/app/core/services/account.service.mjs +2 -2
- package/esm2022/src/app/core/services/local-settings.service.mjs +48 -42
- package/esm2022/src/app/core/services/model/config.model.mjs +1 -1
- package/esm2022/src/app/core/services/pipes/account.pipes.mjs +1 -1
- package/esm2022/src/app/core/services/pipes/department-to-string.pipe.mjs +1 -1
- package/esm2022/src/app/core/services/pipes/person-to-string.pipe.mjs +1 -1
- package/esm2022/src/app/core/services/pipes/referential-to-string.pipe.mjs +1 -1
- package/esm2022/src/app/core/services/pipes/usage-mode.pipes.mjs +1 -1
- package/esm2022/src/app/core/settings/settings.page.mjs +2 -2
- package/esm2022/src/app/core/table/async-table.class.mjs +3 -3
- package/esm2022/src/app/core/table/column/actions-column.component.mjs +1 -1
- package/esm2022/src/app/core/table/column/nav-actions-column.component.mjs +1 -1
- package/esm2022/src/app/core/table/column/row-field.component.mjs +1 -1
- package/esm2022/src/app/core/table/table-select-columns.component.mjs +1 -1
- package/esm2022/src/app/core/table/table.class.mjs +3 -3
- package/esm2022/src/app/core/table/table.pipes.mjs +1 -1
- package/esm2022/src/app/core/table/table.utils.mjs +1 -1
- package/esm2022/src/app/core/table/testing/table.testing.mjs +1 -1
- package/esm2022/src/app/core/table/testing/table2.testing.mjs +1 -1
- package/esm2022/src/app/shared/audio/audio.testing.mjs +1 -1
- package/esm2022/src/app/shared/debug/debug.component.mjs +1 -1
- package/esm2022/src/app/shared/directives/autofocus.directive.mjs +1 -1
- package/esm2022/src/app/shared/directives/autoresize.directive.mjs +1 -1
- package/esm2022/src/app/shared/directives/autotitle.directive.mjs +1 -1
- package/esm2022/src/app/shared/directives/drag-and-drop.directive.mjs +1 -1
- package/esm2022/src/app/shared/directives/ng-var.directive.mjs +1 -1
- package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +1 -1
- package/esm2022/src/app/shared/directives/resizable/resizable.directive.mjs +1 -1
- package/esm2022/src/app/shared/directives/throttled-click.directive.mjs +1 -1
- package/esm2022/src/app/shared/form/field.component.mjs +1 -1
- package/esm2022/src/app/shared/form/loading-spinner.mjs +11 -11
- package/esm2022/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +1 -1
- package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +3 -3
- package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.mjs +1 -1
- package/esm2022/src/app/shared/markdown/markdown.component.mjs +17 -17
- package/esm2022/src/app/shared/markdown/markdown.directive.mjs +1 -1
- package/esm2022/src/app/shared/markdown/markdown.modal.mjs +1 -1
- package/esm2022/src/app/shared/markdown/markdown.service.mjs +1 -1
- package/esm2022/src/app/shared/markdown/testing/markdown.test.mjs +1 -1
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +1 -1
- package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +1 -1
- package/esm2022/src/app/shared/material/badge/badge.directive.mjs +1 -1
- package/esm2022/src/app/shared/material/badge/badge.test.mjs +3 -3
- package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +1 -1
- package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +1 -1
- package/esm2022/src/app/shared/material/chips/material.chips.mjs +1 -1
- package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +1 -1
- package/esm2022/src/app/shared/material/datetime/material.date.mjs +1 -1
- package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +1 -1
- package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +3 -3
- package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +1 -1
- package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +1 -1
- package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +1 -1
- package/esm2022/src/app/shared/material/duration/material.duration.mjs +1 -1
- package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +1 -1
- package/esm2022/src/app/shared/material/latlong/material.latlong-input.mjs +1 -1
- package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +1 -1
- package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +1 -1
- package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +1 -1
- package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +1 -1
- package/esm2022/src/app/shared/material/test/test-component.mjs +43 -43
- package/esm2022/src/app/shared/material/testing/common.test.mjs +1 -1
- package/esm2022/src/app/shared/material/text/testing/text-form.testing.mjs +1 -1
- package/esm2022/src/app/shared/material/text/text-form.component.mjs +1 -1
- package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +1 -1
- package/esm2022/src/app/shared/named-filter/testing/named-filter-selector.testing.mjs +1 -1
- package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/badge.pipes.mjs +1 -1
- package/esm2022/src/app/shared/pipes/colors.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/date-format.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/date-from-now.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/dates.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/display-with.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/duration.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/form.pipes.mjs +1 -1
- package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/html.pipes.mjs +1 -1
- package/esm2022/src/app/shared/pipes/latlong-format.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/maps.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/math.pipes.mjs +1 -1
- package/esm2022/src/app/shared/pipes/ng-init.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/number-format.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/observable.pipes.mjs +1 -1
- package/esm2022/src/app/shared/pipes/pipes.module.mjs +2 -5
- package/esm2022/src/app/shared/pipes/property.pipes.mjs +1 -1
- package/esm2022/src/app/shared/pipes/selection.pipes.mjs +1 -1
- package/esm2022/src/app/shared/pipes/string.pipes.mjs +2 -15
- package/esm2022/src/app/shared/pipes/translate-context.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/types.pipes.mjs +1 -1
- package/esm2022/src/app/shared/pipes/url.pipes.mjs +1 -1
- package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +1 -1
- package/esm2022/src/app/shared/testing/maskito.test.mjs +1 -1
- package/esm2022/src/app/shared/testing/observable.test.mjs +1 -1
- package/esm2022/src/app/shared/testing/tests.page.mjs +1 -1
- package/esm2022/src/app/shared/toast/toast.testing.mjs +1 -1
- package/esm2022/src/app/shared/toolbar/modal-toolbar.mjs +1 -1
- package/esm2022/src/app/shared/toolbar/toolbar.mjs +1 -1
- package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +1 -1
- package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +1 -1
- package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +1 -1
- package/esm2022/src/app/social/feed/feed.component.mjs +3 -3
- package/esm2022/src/app/social/feed/feed.directive.mjs +1 -1
- package/esm2022/src/app/social/feed/feed.page.mjs +1 -1
- package/esm2022/src/app/social/feed/testing/feed.testing.mjs +1 -1
- package/esm2022/src/app/social/job/progression/job-progression.component.mjs +1 -1
- package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +1 -1
- package/esm2022/src/app/social/job/progression/job-progression.list.mjs +1 -1
- package/esm2022/src/app/social/job/testing/job-progression.testing.mjs +1 -1
- package/esm2022/src/app/social/message/message.form.mjs +1 -1
- package/esm2022/src/app/social/message/message.modal.mjs +1 -1
- package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +1 -1
- package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +1 -1
- package/esm2022/src/app/social/user-event/notification/user-event-notification.modal.mjs +1 -1
- package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +1 -1
- package/fesm2022/sumaris-net.ngx-components.mjs +428 -201
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/src/app/core/form/properties/properties-file.service.d.ts +26 -0
- package/src/app/core/form/properties/properties.form.d.ts +18 -2
- package/src/app/core/form/properties/properties.module.d.ts +8 -1
- package/src/app/core/services/local-settings.service.d.ts +11 -8
- package/src/app/core/table/async-table.class.d.ts +3 -1
- package/src/app/core/table/table.class.d.ts +3 -1
- package/src/app/shared/pipes/pipes.module.d.ts +1 -1
- package/src/app/shared/pipes/string.pipes.d.ts +0 -5
- package/src/assets/i18n/en-US.json +32 -3
- package/src/assets/i18n/en.json +32 -3
- package/src/assets/i18n/fr.json +34 -4
- package/src/assets/manifest.json +1 -1
- package/src/theme/_ngx-components.scss +1009 -1009
|
@@ -33,10 +33,10 @@ export class MatBadgeTestPage {
|
|
|
33
33
|
this.cd.markForCheck();
|
|
34
34
|
}
|
|
35
35
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MatBadgeTestPage, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
36
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MatBadgeTestPage, selector: "mat-badge-test", ngImport: i0, template: "<ion-header>\r\n <ion-toolbar color=\"primary\">\r\n <ion-buttons slot=\"start\">\r\n <ion-back-button></ion-back-button>\r\n </ion-buttons>\r\n\r\n <ion-title>matBadgeIcon directive</ion-title>\r\n </ion-toolbar>\r\n</ion-header>\r\n\r\n<ion-content class=\"ion-padding\">\r\n <!-- small badge -->\r\n <p>\r\n <ion-text color=\"tertiary\">\r\n <span appBadge appBadgeMatIcon=\"check\" appBadgeSize=\"small\" appBadgeColor=\"accent\" appBadgeOverlap=\"false\">\r\n Small badge\r\n </span>\r\n </ion-text>\r\n </p>\r\n\r\n <!-- small badge with text -->\r\n <p>\r\n <ion-text color=\"tertiary\">\r\n <span [appBadge]=\"0\" appBadgeSize=\"small\" appBadgeColor=\"accent\" appBadgeOverlap=\"false\">\r\n Small badge with text 0\r\n </span>\r\n </ion-text>\r\n </p>\r\n\r\n <!-- medium badge -->\r\n <p>\r\n <ion-text\r\n appBadge\r\n appBadgeMatIcon=\"check\"\r\n appBadgeSize=\"medium\"\r\n [appBadgeColor]=\"'tertiary' | matColor\"\r\n appBadgeOverlap=\"false\"\r\n >\r\n Medium badge\r\n </ion-text>\r\n </p>\r\n\r\n <!-- small badge -->\r\n <p>\r\n <ion-label appBadge appBadgeMatIcon=\"close\" appBadgeSize=\"large\" appBadgeOverlap=\"false\">Large badge</ion-label>\r\n </p>\r\n\r\n <!-- default size badge -->\r\n <p>\r\n <ion-label appBadge appBadgeMatIcon=\"check\" [appBadgeColor]=\"'success' | matColor\" appBadgeOverlap=\"false\">\r\n Badge (no size, no color)\r\n </ion-label>\r\n </p>\r\n\r\n <!-- ion icon -->\r\n <p>\r\n <ion-label appBadge appBadgeIcon=\"checkmark\" [appBadgeColor]=\"'success' | matColor\" appBadgeOverlap=\"false\">\r\n Badge with ion-icon\r\n </ion-label>\r\n </p>\r\n\r\n <!-- ion icon clear -->\r\n <p>\r\n <ion-label\r\n appBadge\r\n appBadgeIcon=\"checkmark-circle\"\r\n [appBadgeColor]=\"'tertiary' | matColor\"\r\n appBadgeFill=\"clear\"\r\n appBadgeOverlap=\"false\"\r\n >\r\n Badge with clear icon\r\n </ion-label>\r\n </p>\r\n\r\n <!-- changing text-->\r\n <ion-row>\r\n <ion-col>\r\n <ion-label\r\n appBadge\r\n appBadgeIcon=\"checkmark-circle\"\r\n [appBadgeColor]=\"'tertiary' | matColor\"\r\n appBadgeFill=\"clear\"\r\n appBadgeOverlap=\"false\"\r\n >\r\n {{ userText }}\r\n </ion-label>\r\n </ion-col>\r\n <ion-col>\r\n <input type=\"text\" [value]=\"userText\" (input)=\"onInputChanged($event)\" />\r\n </ion-col>\r\n </ion-row>\r\n\r\n <ion-row>\r\n <ion-col>Configurable example :</ion-col>\r\n </ion-row>\r\n <ion-row class=\"ion-no-padding\">\r\n <ion-col size=\"auto\">\r\n <mat-icon\r\n [style.color]=\"'var(--ion-color-secondary)'\"\r\n appBadge\r\n [appBadgeIcon]=\"$icon | async\"\r\n [appBadgeColor]=\"$color | async | matColor\"\r\n [appBadgeHidden]=\"$hidden | async\"\r\n [appBadgeFill]=\"$fill | async\"\r\n [appBadgeSize]=\"$size | async\"\r\n appBadgeOverlap=\"true\"\r\n appBadgePosition=\"above before\"\r\n >\r\n <ion-icon slot=\"icon-only\" [color]=\"'secondary'\" name=\"navigate\"></ion-icon>\r\n </mat-icon>\r\n </ion-col>\r\n\r\n <ion-col>\r\n <mat-form-field>\r\n <mat-label>appBadgeColor</mat-label>\r\n <mat-select [value]=\"$color.value\" (selectionChange)=\"this.$color.next($event.value)\">\r\n <mat-option [value]=\"'primary'\">primary</mat-option>\r\n <mat-option [value]=\"'secondary'\">secondary</mat-option>\r\n <mat-option [value]=\"'tertiary'\">tertiary</mat-option>\r\n <mat-option [value]=\"'danger'\">danger</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ion-col>\r\n\r\n <ion-col>\r\n <mat-form-field>\r\n <mat-label>appBadgeIcon</mat-label>\r\n <mat-select [value]=\"$icon.value\" (selectionChange)=\"this.$icon.next($event.value)\">\r\n <mat-option [value]=\"'checkmark-circle'\">checkmark-circle</mat-option>\r\n <mat-option [value]=\"'alert-circle'\">alert-circle</mat-option>\r\n <mat-option [value]=\"'alert'\">alert</mat-option>\r\n <mat-option [value]=\"'flag'\">flag</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ion-col>\r\n\r\n <ion-col>\r\n <mat-form-field>\r\n <mat-label>appBadgeSize</mat-label>\r\n <mat-select [value]=\"$size.value\" (selectionChange)=\"this.$size.next($event.value)\">\r\n <mat-option [value]=\"'large'\">large</mat-option>\r\n <mat-option [value]=\"'medium'\">medium</mat-option>\r\n <mat-option [value]=\"'small'\">small</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ion-col>\r\n\r\n <ion-col>\r\n <mat-form-field>\r\n <mat-label>appBadgeFill</mat-label>\r\n <mat-select [value]=\"$fill.value\" (selectionChange)=\"this.$fill.next($event.value)\">\r\n <mat-option [value]=\"'clear'\">clear</mat-option>\r\n <mat-option [value]=\"'solid'\">solid</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ion-col>\r\n\r\n <ion-col>\r\n <mat-form-field>\r\n <mat-label>appBadgeHidden</mat-label>\r\n <mat-select [value]=\"$hidden.value\" (selectionChange)=\"this.$hidden.next($event.value)\">\r\n <mat-option [value]=\"true\">true</mat-option>\r\n <mat-option [value]=\"false\">false</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ion-col>\r\n </ion-row>\r\n\r\n <ion-row>\r\n <ion-col size=\"auto\">\r\n <p>mat-raised-button:</p>\r\n </ion-col>\r\n <ion-col>\r\n <button\r\n mat-raised-button\r\n color=\"primary\"\r\n [appBadgeIcon]=\"$icon | async\"\r\n [appBadgeColor]=\"$color | async | matColor\"\r\n [appBadgeHidden]=\"$hidden | async\"\r\n [appBadgeFill]=\"$fill | async\"\r\n [appBadgeSize]=\"$size | async\"\r\n appBadgeOverlap=\"true\"\r\n appBadgePosition=\"below after\"\r\n >\r\n {{ userText }}\r\n </button>\r\n </ion-col>\r\n </ion-row>\r\n\r\n <ion-row>\r\n <ion-col size=\"auto\">\r\n <p>mat-button with mat-label:</p>\r\n </ion-col>\r\n <ion-col>\r\n <button\r\n mat-button\r\n color=\"primary\"\r\n class=\"ion-no-padding\"\r\n [appBadgeIcon]=\"$icon | async\"\r\n [appBadgeColor]=\"$color | async | matColor\"\r\n [appBadgeHidden]=\"$hidden | async\"\r\n [appBadgeFill]=\"$fill | async\"\r\n [appBadgeSize]=\"$size | async\"\r\n matBadgeOverlap=\"true\"\r\n matBadgePosition=\"above after\"\r\n >\r\n {{ userText }}\r\n </button>\r\n </ion-col>\r\n </ion-row>\r\n\r\n <h4>Angular Material Badge (standard way)</h4>\r\n\r\n <ion-row>\r\n <ion-col size=\"auto\">\r\n <p>mat-icon:</p>\r\n </ion-col>\r\n <ion-col>\r\n <mat-icon\r\n [style.color]=\"'var(--ion-color-secondary)'\"\r\n [matBadge]=\"'!'\"\r\n [matBadgeColor]=\"$color | async | matColor\"\r\n [matBadgeHidden]=\"$hidden | async\"\r\n [matBadgeSize]=\"$size | async\"\r\n matBadgeOverlap=\"true\"\r\n >\r\n <ion-icon slot=\"icon-only\" [color]=\"'secondary'\" name=\"navigate\"></ion-icon>\r\n </mat-icon>\r\n </ion-col>\r\n </ion-row>\r\n\r\n <ion-row>\r\n <ion-col size=\"auto\">\r\n <p>mat-button:</p>\r\n </ion-col>\r\n <ion-col>\r\n <button\r\n mat-raised-button\r\n color=\"primary\"\r\n [matBadge]=\"matBadgeContent\"\r\n [matBadgeColor]=\"$color | async | matColor\"\r\n [matBadgeHidden]=\"$hidden | async\"\r\n [matBadgeSize]=\"$size | async\"\r\n matBadgeOverlap=\"true\"\r\n matBadgePosition=\"above after\"\r\n >\r\n {{ userText }}\r\n </button>\r\n </ion-col>\r\n\r\n <ion-col>\r\n <input type=\"text\" [value]=\"matBadgeContent\" (input)=\"onMatBadgeContentChanged($event)\" />\r\n </ion-col>\r\n </ion-row>\r\n\r\n <ion-row>\r\n <ion-col size=\"auto\">\r\n <p>mat-button</p>\r\n </ion-col>\r\n <ion-col>\r\n <button\r\n mat-button\r\n color=\"primary\"\r\n [matBadge]=\"matBadgeContent\"\r\n [matBadgeColor]=\"$color | async | matColor\"\r\n [matBadgeHidden]=\"$hidden | async\"\r\n [matBadgeSize]=\"$size | async\"\r\n matBadgeOverlap=\"true\"\r\n matBadgePosition=\"after\"\r\n >\r\n {{ userText }}\r\n </button>\r\n </ion-col>\r\n </ion-row>\r\n</ion-content>\r\n", dependencies: [{ kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "component", type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonBackButton, selector: "ion-back-button" }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i7.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "directive", type: i8.BadgeDirective, selector: "[appBadge], [appBadgeIcon], [appBadgeMatIcon]", inputs: ["appBadge", "appBadgeDisabled", "appBadgeSize", "appBadgeColor", "appBadgeFill", "appBadgeMatIcon", "appBadgeIcon", "appBadgeHidden", "appBadgeOverlap", "appBadgePosition"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.MatColorPipe, name: "matColor" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
36
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MatBadgeTestPage, selector: "mat-badge-test", ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"primary\">\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>matBadgeIcon directive</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n <!-- small badge -->\n <p>\n <ion-text color=\"tertiary\">\n <span appBadge appBadgeMatIcon=\"check\" appBadgeSize=\"small\" appBadgeColor=\"accent\" appBadgeOverlap=\"false\">\n Small badge\n </span>\n </ion-text>\n </p>\n\n <!-- small badge with text -->\n <p>\n <ion-text color=\"tertiary\">\n <span [appBadge]=\"0\" appBadgeSize=\"small\" appBadgeColor=\"accent\" appBadgeOverlap=\"false\">\n Small badge with text 0\n </span>\n </ion-text>\n </p>\n\n <!-- medium badge -->\n <p>\n <ion-text\n appBadge\n appBadgeMatIcon=\"check\"\n appBadgeSize=\"medium\"\n [appBadgeColor]=\"'tertiary' | matColor\"\n appBadgeOverlap=\"false\"\n >\n Medium badge\n </ion-text>\n </p>\n\n <!-- small badge -->\n <p>\n <ion-label appBadge appBadgeMatIcon=\"close\" appBadgeSize=\"large\" appBadgeOverlap=\"false\">Large badge</ion-label>\n </p>\n\n <!-- default size badge -->\n <p>\n <ion-label appBadge appBadgeMatIcon=\"check\" [appBadgeColor]=\"'success' | matColor\" appBadgeOverlap=\"false\">\n Badge (no size, no color)\n </ion-label>\n </p>\n\n <!-- ion icon -->\n <p>\n <ion-label appBadge appBadgeIcon=\"checkmark\" [appBadgeColor]=\"'success' | matColor\" appBadgeOverlap=\"false\">\n Badge with ion-icon\n </ion-label>\n </p>\n\n <!-- ion icon clear -->\n <p>\n <ion-label\n appBadge\n appBadgeIcon=\"checkmark-circle\"\n [appBadgeColor]=\"'tertiary' | matColor\"\n appBadgeFill=\"clear\"\n appBadgeOverlap=\"false\"\n >\n Badge with clear icon\n </ion-label>\n </p>\n\n <!-- changing text-->\n <ion-row>\n <ion-col>\n <ion-label\n appBadge\n appBadgeIcon=\"checkmark-circle\"\n [appBadgeColor]=\"'tertiary' | matColor\"\n appBadgeFill=\"clear\"\n appBadgeOverlap=\"false\"\n >\n {{ userText }}\n </ion-label>\n </ion-col>\n <ion-col>\n <input type=\"text\" [value]=\"userText\" (input)=\"onInputChanged($event)\" />\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col>Configurable example :</ion-col>\n </ion-row>\n <ion-row class=\"ion-no-padding\">\n <ion-col size=\"auto\">\n <mat-icon\n [style.color]=\"'var(--ion-color-secondary)'\"\n appBadge\n [appBadgeIcon]=\"$icon | async\"\n [appBadgeColor]=\"$color | async | matColor\"\n [appBadgeHidden]=\"$hidden | async\"\n [appBadgeFill]=\"$fill | async\"\n [appBadgeSize]=\"$size | async\"\n appBadgeOverlap=\"true\"\n appBadgePosition=\"above before\"\n >\n <ion-icon slot=\"icon-only\" [color]=\"'secondary'\" name=\"navigate\"></ion-icon>\n </mat-icon>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-label>appBadgeColor</mat-label>\n <mat-select [value]=\"$color.value\" (selectionChange)=\"this.$color.next($event.value)\">\n <mat-option [value]=\"'primary'\">primary</mat-option>\n <mat-option [value]=\"'secondary'\">secondary</mat-option>\n <mat-option [value]=\"'tertiary'\">tertiary</mat-option>\n <mat-option [value]=\"'danger'\">danger</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-label>appBadgeIcon</mat-label>\n <mat-select [value]=\"$icon.value\" (selectionChange)=\"this.$icon.next($event.value)\">\n <mat-option [value]=\"'checkmark-circle'\">checkmark-circle</mat-option>\n <mat-option [value]=\"'alert-circle'\">alert-circle</mat-option>\n <mat-option [value]=\"'alert'\">alert</mat-option>\n <mat-option [value]=\"'flag'\">flag</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-label>appBadgeSize</mat-label>\n <mat-select [value]=\"$size.value\" (selectionChange)=\"this.$size.next($event.value)\">\n <mat-option [value]=\"'large'\">large</mat-option>\n <mat-option [value]=\"'medium'\">medium</mat-option>\n <mat-option [value]=\"'small'\">small</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-label>appBadgeFill</mat-label>\n <mat-select [value]=\"$fill.value\" (selectionChange)=\"this.$fill.next($event.value)\">\n <mat-option [value]=\"'clear'\">clear</mat-option>\n <mat-option [value]=\"'solid'\">solid</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-label>appBadgeHidden</mat-label>\n <mat-select [value]=\"$hidden.value\" (selectionChange)=\"this.$hidden.next($event.value)\">\n <mat-option [value]=\"true\">true</mat-option>\n <mat-option [value]=\"false\">false</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"auto\">\n <p>mat-raised-button:</p>\n </ion-col>\n <ion-col>\n <button\n mat-raised-button\n color=\"primary\"\n [appBadgeIcon]=\"$icon | async\"\n [appBadgeColor]=\"$color | async | matColor\"\n [appBadgeHidden]=\"$hidden | async\"\n [appBadgeFill]=\"$fill | async\"\n [appBadgeSize]=\"$size | async\"\n appBadgeOverlap=\"true\"\n appBadgePosition=\"below after\"\n >\n {{ userText }}\n </button>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"auto\">\n <p>mat-button with mat-label:</p>\n </ion-col>\n <ion-col>\n <button\n mat-button\n color=\"primary\"\n class=\"ion-no-padding\"\n [appBadgeIcon]=\"$icon | async\"\n [appBadgeColor]=\"$color | async | matColor\"\n [appBadgeHidden]=\"$hidden | async\"\n [appBadgeFill]=\"$fill | async\"\n [appBadgeSize]=\"$size | async\"\n matBadgeOverlap=\"true\"\n matBadgePosition=\"above after\"\n >\n {{ userText }}\n </button>\n </ion-col>\n </ion-row>\n\n <h4>Angular Material Badge (standard way)</h4>\n\n <ion-row>\n <ion-col size=\"auto\">\n <p>mat-icon:</p>\n </ion-col>\n <ion-col>\n <mat-icon\n [style.color]=\"'var(--ion-color-secondary)'\"\n [matBadge]=\"'!'\"\n [matBadgeColor]=\"$color | async | matColor\"\n [matBadgeHidden]=\"$hidden | async\"\n [matBadgeSize]=\"$size | async\"\n matBadgeOverlap=\"true\"\n >\n <ion-icon slot=\"icon-only\" [color]=\"'secondary'\" name=\"navigate\"></ion-icon>\n </mat-icon>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"auto\">\n <p>mat-button:</p>\n </ion-col>\n <ion-col>\n <button\n mat-raised-button\n color=\"primary\"\n [matBadge]=\"matBadgeContent\"\n [matBadgeColor]=\"$color | async | matColor\"\n [matBadgeHidden]=\"$hidden | async\"\n [matBadgeSize]=\"$size | async\"\n matBadgeOverlap=\"true\"\n matBadgePosition=\"above after\"\n >\n {{ userText }}\n </button>\n </ion-col>\n\n <ion-col>\n <input type=\"text\" [value]=\"matBadgeContent\" (input)=\"onMatBadgeContentChanged($event)\" />\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"auto\">\n <p>mat-button</p>\n </ion-col>\n <ion-col>\n <button\n mat-button\n color=\"primary\"\n [matBadge]=\"matBadgeContent\"\n [matBadgeColor]=\"$color | async | matColor\"\n [matBadgeHidden]=\"$hidden | async\"\n [matBadgeSize]=\"$size | async\"\n matBadgeOverlap=\"true\"\n matBadgePosition=\"after\"\n >\n {{ userText }}\n </button>\n </ion-col>\n </ion-row>\n</ion-content>\n", dependencies: [{ kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "component", type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonBackButton, selector: "ion-back-button" }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i7.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "directive", type: i8.BadgeDirective, selector: "[appBadge], [appBadgeIcon], [appBadgeMatIcon]", inputs: ["appBadge", "appBadgeDisabled", "appBadgeSize", "appBadgeColor", "appBadgeFill", "appBadgeMatIcon", "appBadgeIcon", "appBadgeHidden", "appBadgeOverlap", "appBadgePosition"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.MatColorPipe, name: "matColor" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
37
37
|
}
|
|
38
38
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MatBadgeTestPage, decorators: [{
|
|
39
39
|
type: Component,
|
|
40
|
-
args: [{ selector: 'mat-badge-test', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-header>\
|
|
40
|
+
args: [{ selector: 'mat-badge-test', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-header>\n <ion-toolbar color=\"primary\">\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>matBadgeIcon directive</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n <!-- small badge -->\n <p>\n <ion-text color=\"tertiary\">\n <span appBadge appBadgeMatIcon=\"check\" appBadgeSize=\"small\" appBadgeColor=\"accent\" appBadgeOverlap=\"false\">\n Small badge\n </span>\n </ion-text>\n </p>\n\n <!-- small badge with text -->\n <p>\n <ion-text color=\"tertiary\">\n <span [appBadge]=\"0\" appBadgeSize=\"small\" appBadgeColor=\"accent\" appBadgeOverlap=\"false\">\n Small badge with text 0\n </span>\n </ion-text>\n </p>\n\n <!-- medium badge -->\n <p>\n <ion-text\n appBadge\n appBadgeMatIcon=\"check\"\n appBadgeSize=\"medium\"\n [appBadgeColor]=\"'tertiary' | matColor\"\n appBadgeOverlap=\"false\"\n >\n Medium badge\n </ion-text>\n </p>\n\n <!-- small badge -->\n <p>\n <ion-label appBadge appBadgeMatIcon=\"close\" appBadgeSize=\"large\" appBadgeOverlap=\"false\">Large badge</ion-label>\n </p>\n\n <!-- default size badge -->\n <p>\n <ion-label appBadge appBadgeMatIcon=\"check\" [appBadgeColor]=\"'success' | matColor\" appBadgeOverlap=\"false\">\n Badge (no size, no color)\n </ion-label>\n </p>\n\n <!-- ion icon -->\n <p>\n <ion-label appBadge appBadgeIcon=\"checkmark\" [appBadgeColor]=\"'success' | matColor\" appBadgeOverlap=\"false\">\n Badge with ion-icon\n </ion-label>\n </p>\n\n <!-- ion icon clear -->\n <p>\n <ion-label\n appBadge\n appBadgeIcon=\"checkmark-circle\"\n [appBadgeColor]=\"'tertiary' | matColor\"\n appBadgeFill=\"clear\"\n appBadgeOverlap=\"false\"\n >\n Badge with clear icon\n </ion-label>\n </p>\n\n <!-- changing text-->\n <ion-row>\n <ion-col>\n <ion-label\n appBadge\n appBadgeIcon=\"checkmark-circle\"\n [appBadgeColor]=\"'tertiary' | matColor\"\n appBadgeFill=\"clear\"\n appBadgeOverlap=\"false\"\n >\n {{ userText }}\n </ion-label>\n </ion-col>\n <ion-col>\n <input type=\"text\" [value]=\"userText\" (input)=\"onInputChanged($event)\" />\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col>Configurable example :</ion-col>\n </ion-row>\n <ion-row class=\"ion-no-padding\">\n <ion-col size=\"auto\">\n <mat-icon\n [style.color]=\"'var(--ion-color-secondary)'\"\n appBadge\n [appBadgeIcon]=\"$icon | async\"\n [appBadgeColor]=\"$color | async | matColor\"\n [appBadgeHidden]=\"$hidden | async\"\n [appBadgeFill]=\"$fill | async\"\n [appBadgeSize]=\"$size | async\"\n appBadgeOverlap=\"true\"\n appBadgePosition=\"above before\"\n >\n <ion-icon slot=\"icon-only\" [color]=\"'secondary'\" name=\"navigate\"></ion-icon>\n </mat-icon>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-label>appBadgeColor</mat-label>\n <mat-select [value]=\"$color.value\" (selectionChange)=\"this.$color.next($event.value)\">\n <mat-option [value]=\"'primary'\">primary</mat-option>\n <mat-option [value]=\"'secondary'\">secondary</mat-option>\n <mat-option [value]=\"'tertiary'\">tertiary</mat-option>\n <mat-option [value]=\"'danger'\">danger</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-label>appBadgeIcon</mat-label>\n <mat-select [value]=\"$icon.value\" (selectionChange)=\"this.$icon.next($event.value)\">\n <mat-option [value]=\"'checkmark-circle'\">checkmark-circle</mat-option>\n <mat-option [value]=\"'alert-circle'\">alert-circle</mat-option>\n <mat-option [value]=\"'alert'\">alert</mat-option>\n <mat-option [value]=\"'flag'\">flag</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-label>appBadgeSize</mat-label>\n <mat-select [value]=\"$size.value\" (selectionChange)=\"this.$size.next($event.value)\">\n <mat-option [value]=\"'large'\">large</mat-option>\n <mat-option [value]=\"'medium'\">medium</mat-option>\n <mat-option [value]=\"'small'\">small</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-label>appBadgeFill</mat-label>\n <mat-select [value]=\"$fill.value\" (selectionChange)=\"this.$fill.next($event.value)\">\n <mat-option [value]=\"'clear'\">clear</mat-option>\n <mat-option [value]=\"'solid'\">solid</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n\n <ion-col>\n <mat-form-field>\n <mat-label>appBadgeHidden</mat-label>\n <mat-select [value]=\"$hidden.value\" (selectionChange)=\"this.$hidden.next($event.value)\">\n <mat-option [value]=\"true\">true</mat-option>\n <mat-option [value]=\"false\">false</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"auto\">\n <p>mat-raised-button:</p>\n </ion-col>\n <ion-col>\n <button\n mat-raised-button\n color=\"primary\"\n [appBadgeIcon]=\"$icon | async\"\n [appBadgeColor]=\"$color | async | matColor\"\n [appBadgeHidden]=\"$hidden | async\"\n [appBadgeFill]=\"$fill | async\"\n [appBadgeSize]=\"$size | async\"\n appBadgeOverlap=\"true\"\n appBadgePosition=\"below after\"\n >\n {{ userText }}\n </button>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"auto\">\n <p>mat-button with mat-label:</p>\n </ion-col>\n <ion-col>\n <button\n mat-button\n color=\"primary\"\n class=\"ion-no-padding\"\n [appBadgeIcon]=\"$icon | async\"\n [appBadgeColor]=\"$color | async | matColor\"\n [appBadgeHidden]=\"$hidden | async\"\n [appBadgeFill]=\"$fill | async\"\n [appBadgeSize]=\"$size | async\"\n matBadgeOverlap=\"true\"\n matBadgePosition=\"above after\"\n >\n {{ userText }}\n </button>\n </ion-col>\n </ion-row>\n\n <h4>Angular Material Badge (standard way)</h4>\n\n <ion-row>\n <ion-col size=\"auto\">\n <p>mat-icon:</p>\n </ion-col>\n <ion-col>\n <mat-icon\n [style.color]=\"'var(--ion-color-secondary)'\"\n [matBadge]=\"'!'\"\n [matBadgeColor]=\"$color | async | matColor\"\n [matBadgeHidden]=\"$hidden | async\"\n [matBadgeSize]=\"$size | async\"\n matBadgeOverlap=\"true\"\n >\n <ion-icon slot=\"icon-only\" [color]=\"'secondary'\" name=\"navigate\"></ion-icon>\n </mat-icon>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"auto\">\n <p>mat-button:</p>\n </ion-col>\n <ion-col>\n <button\n mat-raised-button\n color=\"primary\"\n [matBadge]=\"matBadgeContent\"\n [matBadgeColor]=\"$color | async | matColor\"\n [matBadgeHidden]=\"$hidden | async\"\n [matBadgeSize]=\"$size | async\"\n matBadgeOverlap=\"true\"\n matBadgePosition=\"above after\"\n >\n {{ userText }}\n </button>\n </ion-col>\n\n <ion-col>\n <input type=\"text\" [value]=\"matBadgeContent\" (input)=\"onMatBadgeContentChanged($event)\" />\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"auto\">\n <p>mat-button</p>\n </ion-col>\n <ion-col>\n <button\n mat-button\n color=\"primary\"\n [matBadge]=\"matBadgeContent\"\n [matBadgeColor]=\"$color | async | matColor\"\n [matBadgeHidden]=\"$hidden | async\"\n [matBadgeSize]=\"$size | async\"\n matBadgeOverlap=\"true\"\n matBadgePosition=\"after\"\n >\n {{ userText }}\n </button>\n </ion-col>\n </ion-row>\n</ion-content>\n" }]
|
|
41
41
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2JhZGdlL2JhZGdlLnRlc3QudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9iYWRnZS9iYWRnZS50ZXN0Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7O0FBVXZDLE1BQU0sT0FBTyxnQkFBZ0I7SUFXUDtJQVZwQixRQUFRLEdBQUcsaUJBQWlCLENBQUM7SUFDN0IsZUFBZSxHQUFHLEdBQUcsQ0FBQztJQUV0QixLQUFLLEdBQUcsSUFBSSxlQUFlLENBQVMsT0FBTyxDQUFDLENBQUM7SUFDN0MsS0FBSyxHQUFHLElBQUksZUFBZSxDQUFlLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELEtBQUssR0FBRyxJQUFJLGVBQWUsQ0FBZSxPQUFPLENBQUMsQ0FBQztJQUNuRCxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQVksUUFBUSxDQUFDLENBQUM7SUFDbEQsT0FBTyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQzlDLFFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUUvQyxZQUFvQixFQUFxQjtRQUFyQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtJQUFHLENBQUM7SUFFN0MsY0FBYyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNuQyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxLQUFVO1FBQ2pDLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDMUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDO3dHQXJCVSxnQkFBZ0I7NEZBQWhCLGdCQUFnQixzRENYN0Isa2hSQW1SQTs7NEZEeFFhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxnQkFBZ0IsbUJBRVQsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNYXRCYWRnZUZpbGwgfSBmcm9tICcuL2JhZGdlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE1hdEJhZGdlU2l6ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2JhZGdlJztcclxuaW1wb3J0IHsgQXBwQ29sb3JzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtYXQtYmFkZ2UtdGVzdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2JhZGdlLnRlc3QuaHRtbCcsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXRCYWRnZVRlc3RQYWdlIHtcclxuICB1c2VyVGV4dCA9ICdBIGN1c3RvbSBzdHJpbmcnO1xyXG4gIG1hdEJhZGdlQ29udGVudCA9ICchJztcclxuXHJcbiAgJGljb24gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJ2FsZXJ0Jyk7XHJcbiAgJHNpemUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hdEJhZGdlU2l6ZT4oJ3NtYWxsJyk7XHJcbiAgJGZpbGwgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hdEJhZGdlRmlsbD4oJ3NvbGlkJyk7XHJcbiAgJGNvbG9yID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcHBDb2xvcnM+KCdkYW5nZXInKTtcclxuICAkaGlkZGVuID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgJG92ZXJsYXAgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIG9uSW5wdXRDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMudXNlclRleHQgPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgb25NYXRCYWRnZUNvbnRlbnRDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMubWF0QmFkZ2VDb250ZW50ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcbn1cclxuIiwiPGlvbi1oZWFkZXI+XHJcbiAgPGlvbi10b29sYmFyIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxyXG4gICAgICA8aW9uLWJhY2stYnV0dG9uPjwvaW9uLWJhY2stYnV0dG9uPlxyXG4gICAgPC9pb24tYnV0dG9ucz5cclxuXHJcbiAgICA8aW9uLXRpdGxlPm1hdEJhZGdlSWNvbiBkaXJlY3RpdmU8L2lvbi10aXRsZT5cclxuICA8L2lvbi10b29sYmFyPlxyXG48L2lvbi1oZWFkZXI+XHJcblxyXG48aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxyXG4gIDwhLS0gc21hbGwgYmFkZ2UgLS0+XHJcbiAgPHA+XHJcbiAgICA8aW9uLXRleHQgY29sb3I9XCJ0ZXJ0aWFyeVwiPlxyXG4gICAgICA8c3BhbiBhcHBCYWRnZSBhcHBCYWRnZU1hdEljb249XCJjaGVja1wiIGFwcEJhZGdlU2l6ZT1cInNtYWxsXCIgYXBwQmFkZ2VDb2xvcj1cImFjY2VudFwiIGFwcEJhZGdlT3ZlcmxhcD1cImZhbHNlXCI+XHJcbiAgICAgICAgU21hbGwgYmFkZ2VcclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9pb24tdGV4dD5cclxuICA8L3A+XHJcblxyXG4gIDwhLS0gc21hbGwgYmFkZ2Ugd2l0aCB0ZXh0IC0tPlxyXG4gIDxwPlxyXG4gICAgPGlvbi10ZXh0IGNvbG9yPVwidGVydGlhcnlcIj5cclxuICAgICAgPHNwYW4gW2FwcEJhZGdlXT1cIjBcIiBhcHBCYWRnZVNpemU9XCJzbWFsbFwiIGFwcEJhZGdlQ29sb3I9XCJhY2NlbnRcIiBhcHBCYWRnZU92ZXJsYXA9XCJmYWxzZVwiPlxyXG4gICAgICAgIFNtYWxsIGJhZGdlIHdpdGggdGV4dCAwXHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvaW9uLXRleHQ+XHJcbiAgPC9wPlxyXG5cclxuICA8IS0tIG1lZGl1bSBiYWRnZSAtLT5cclxuICA8cD5cclxuICAgIDxpb24tdGV4dFxyXG4gICAgICBhcHBCYWRnZVxyXG4gICAgICBhcHBCYWRnZU1hdEljb249XCJjaGVja1wiXHJcbiAgICAgIGFwcEJhZGdlU2l6ZT1cIm1lZGl1bVwiXHJcbiAgICAgIFthcHBCYWRnZUNvbG9yXT1cIid0ZXJ0aWFyeScgfCBtYXRDb2xvclwiXHJcbiAgICAgIGFwcEJhZGdlT3ZlcmxhcD1cImZhbHNlXCJcclxuICAgID5cclxuICAgICAgTWVkaXVtIGJhZGdlXHJcbiAgICA8L2lvbi10ZXh0PlxyXG4gIDwvcD5cclxuXHJcbiAgPCEtLSBzbWFsbCBiYWRnZSAtLT5cclxuICA8cD5cclxuICAgIDxpb24tbGFiZWwgYXBwQmFkZ2UgYXBwQmFkZ2VNYXRJY29uPVwiY2xvc2VcIiBhcHBCYWRnZVNpemU9XCJsYXJnZVwiIGFwcEJhZGdlT3ZlcmxhcD1cImZhbHNlXCI+TGFyZ2UgYmFkZ2U8L2lvbi1sYWJlbD5cclxuICA8L3A+XHJcblxyXG4gIDwhLS0gZGVmYXVsdCBzaXplIGJhZGdlIC0tPlxyXG4gIDxwPlxyXG4gICAgPGlvbi1sYWJlbCBhcHBCYWRnZSBhcHBCYWRnZU1hdEljb249XCJjaGVja1wiIFthcHBCYWRnZUNvbG9yXT1cIidzdWNjZXNzJyB8IG1hdENvbG9yXCIgYXBwQmFkZ2VPdmVybGFwPVwiZmFsc2VcIj5cclxuICAgICAgQmFkZ2UgKG5vIHNpemUsIG5vIGNvbG9yKVxyXG4gICAgPC9pb24tbGFiZWw+XHJcbiAgPC9wPlxyXG5cclxuICA8IS0tIGlvbiBpY29uIC0tPlxyXG4gIDxwPlxyXG4gICAgPGlvbi1sYWJlbCBhcHBCYWRnZSBhcHBCYWRnZUljb249XCJjaGVja21hcmtcIiBbYXBwQmFkZ2VDb2xvcl09XCInc3VjY2VzcycgfCBtYXRDb2xvclwiIGFwcEJhZGdlT3ZlcmxhcD1cImZhbHNlXCI+XHJcbiAgICAgIEJhZGdlIHdpdGggaW9uLWljb25cclxuICAgIDwvaW9uLWxhYmVsPlxyXG4gIDwvcD5cclxuXHJcbiAgPCEtLSBpb24gaWNvbiBjbGVhciAtLT5cclxuICA8cD5cclxuICAgIDxpb24tbGFiZWxcclxuICAgICAgYXBwQmFkZ2VcclxuICAgICAgYXBwQmFkZ2VJY29uPVwiY2hlY2ttYXJrLWNpcmNsZVwiXHJcbiAgICAgIFthcHBCYWRnZUNvbG9yXT1cIid0ZXJ0aWFyeScgfCBtYXRDb2xvclwiXHJcbiAgICAgIGFwcEJhZGdlRmlsbD1cImNsZWFyXCJcclxuICAgICAgYXBwQmFkZ2VPdmVybGFwPVwiZmFsc2VcIlxyXG4gICAgPlxyXG4gICAgICBCYWRnZSB3aXRoIGNsZWFyIGljb25cclxuICAgIDwvaW9uLWxhYmVsPlxyXG4gIDwvcD5cclxuXHJcbiAgPCEtLSBjaGFuZ2luZyB0ZXh0LS0+XHJcbiAgPGlvbi1yb3c+XHJcbiAgICA8aW9uLWNvbD5cclxuICAgICAgPGlvbi1sYWJlbFxyXG4gICAgICAgIGFwcEJhZGdlXHJcbiAgICAgICAgYXBwQmFkZ2VJY29uPVwiY2hlY2ttYXJrLWNpcmNsZVwiXHJcbiAgICAgICAgW2FwcEJhZGdlQ29sb3JdPVwiJ3RlcnRpYXJ5JyB8IG1hdENvbG9yXCJcclxuICAgICAgICBhcHBCYWRnZUZpbGw9XCJjbGVhclwiXHJcbiAgICAgICAgYXBwQmFkZ2VPdmVybGFwPVwiZmFsc2VcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgdXNlclRleHQgfX1cclxuICAgICAgPC9pb24tbGFiZWw+XHJcbiAgICA8L2lvbi1jb2w+XHJcbiAgICA8aW9uLWNvbD5cclxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW3ZhbHVlXT1cInVzZXJUZXh0XCIgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2VkKCRldmVudClcIiAvPlxyXG4gICAgPC9pb24tY29sPlxyXG4gIDwvaW9uLXJvdz5cclxuXHJcbiAgPGlvbi1yb3c+XHJcbiAgICA8aW9uLWNvbD5Db25maWd1cmFibGUgZXhhbXBsZSA6PC9pb24tY29sPlxyXG4gIDwvaW9uLXJvdz5cclxuICA8aW9uLXJvdyBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XHJcbiAgICA8aW9uLWNvbCBzaXplPVwiYXV0b1wiPlxyXG4gICAgICA8bWF0LWljb25cclxuICAgICAgICBbc3R5bGUuY29sb3JdPVwiJ3ZhcigtLWlvbi1jb2xvci1zZWNvbmRhcnkpJ1wiXHJcbiAgICAgICAgYXBwQmFkZ2VcclxuICAgICAgICBbYXBwQmFkZ2VJY29uXT1cIiRpY29uIHwgYXN5bmNcIlxyXG4gICAgICAgIFthcHBCYWRnZUNvbG9yXT1cIiRjb2xvciB8IGFzeW5jIHwgbWF0Q29sb3JcIlxyXG4gICAgICAgIFthcHBCYWRnZUhpZGRlbl09XCIkaGlkZGVuIHwgYXN5bmNcIlxyXG4gICAgICAgIFthcHBCYWRnZUZpbGxdPVwiJGZpbGwgfCBhc3luY1wiXHJcbiAgICAgICAgW2FwcEJhZGdlU2l6ZV09XCIkc2l6ZSB8IGFzeW5jXCJcclxuICAgICAgICBhcHBCYWRnZU92ZXJsYXA9XCJ0cnVlXCJcclxuICAgICAgICBhcHBCYWRnZVBvc2l0aW9uPVwiYWJvdmUgYmVmb3JlXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgW2NvbG9yXT1cIidzZWNvbmRhcnknXCIgbmFtZT1cIm5hdmlnYXRlXCI+PC9pb24taWNvbj5cclxuICAgICAgPC9tYXQtaWNvbj5cclxuICAgIDwvaW9uLWNvbD5cclxuXHJcbiAgICA8aW9uLWNvbD5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+YXBwQmFkZ2VDb2xvcjwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtc2VsZWN0IFt2YWx1ZV09XCIkY29sb3IudmFsdWVcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cInRoaXMuJGNvbG9yLm5leHQoJGV2ZW50LnZhbHVlKVwiPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIidwcmltYXJ5J1wiPnByaW1hcnk8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJ3NlY29uZGFyeSdcIj5zZWNvbmRhcnk8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJ3RlcnRpYXJ5J1wiPnRlcnRpYXJ5PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIidkYW5nZXInXCI+ZGFuZ2VyPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvaW9uLWNvbD5cclxuXHJcbiAgICA8aW9uLWNvbD5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+YXBwQmFkZ2VJY29uPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1zZWxlY3QgW3ZhbHVlXT1cIiRpY29uLnZhbHVlXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJ0aGlzLiRpY29uLm5leHQoJGV2ZW50LnZhbHVlKVwiPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIidjaGVja21hcmstY2lyY2xlJ1wiPmNoZWNrbWFyay1jaXJjbGU8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJ2FsZXJ0LWNpcmNsZSdcIj5hbGVydC1jaXJjbGU8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJ2FsZXJ0J1wiPmFsZXJ0PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIidmbGFnJ1wiPmZsYWc8L21hdC1vcHRpb24+XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9pb24tY29sPlxyXG5cclxuICAgIDxpb24tY29sPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5hcHBCYWRnZVNpemU8L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LXNlbGVjdCBbdmFsdWVdPVwiJHNpemUudmFsdWVcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cInRoaXMuJHNpemUubmV4dCgkZXZlbnQudmFsdWUpXCI+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJ2xhcmdlJ1wiPmxhcmdlPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIidtZWRpdW0nXCI+bWVkaXVtPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIidzbWFsbCdcIj5zbWFsbDwvbWF0LW9wdGlvbj5cclxuICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2lvbi1jb2w+XHJcblxyXG4gICAgPGlvbi1jb2w+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bWF0LWxhYmVsPmFwcEJhZGdlRmlsbDwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtc2VsZWN0IFt2YWx1ZV09XCIkZmlsbC52YWx1ZVwiIChzZWxlY3Rpb25DaGFuZ2UpPVwidGhpcy4kZmlsbC5uZXh0KCRldmVudC52YWx1ZSlcIj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInY2xlYXInXCI+Y2xlYXI8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJ3NvbGlkJ1wiPnNvbGlkPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvaW9uLWNvbD5cclxuXHJcbiAgICA8aW9uLWNvbD5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+YXBwQmFkZ2VIaWRkZW48L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LXNlbGVjdCBbdmFsdWVdPVwiJGhpZGRlbi52YWx1ZVwiIChzZWxlY3Rpb25DaGFuZ2UpPVwidGhpcy4kaGlkZGVuLm5leHQoJGV2ZW50LnZhbHVlKVwiPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInRydWVcIj50cnVlPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cImZhbHNlXCI+ZmFsc2U8L21hdC1vcHRpb24+XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9pb24tY29sPlxyXG4gIDwvaW9uLXJvdz5cclxuXHJcbiAgPGlvbi1yb3c+XHJcbiAgICA8aW9uLWNvbCBzaXplPVwiYXV0b1wiPlxyXG4gICAgICA8cD5tYXQtcmFpc2VkLWJ1dHRvbjo8L3A+XHJcbiAgICA8L2lvbi1jb2w+XHJcbiAgICA8aW9uLWNvbD5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICBbYXBwQmFkZ2VJY29uXT1cIiRpY29uIHwgYXN5bmNcIlxyXG4gICAgICAgIFthcHBCYWRnZUNvbG9yXT1cIiRjb2xvciB8IGFzeW5jIHwgbWF0Q29sb3JcIlxyXG4gICAgICAgIFthcHBCYWRnZUhpZGRlbl09XCIkaGlkZGVuIHwgYXN5bmNcIlxyXG4gICAgICAgIFthcHBCYWRnZUZpbGxdPVwiJGZpbGwgfCBhc3luY1wiXHJcbiAgICAgICAgW2FwcEJhZGdlU2l6ZV09XCIkc2l6ZSB8IGFzeW5jXCJcclxuICAgICAgICBhcHBCYWRnZU92ZXJsYXA9XCJ0cnVlXCJcclxuICAgICAgICBhcHBCYWRnZVBvc2l0aW9uPVwiYmVsb3cgYWZ0ZXJcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgdXNlclRleHQgfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2lvbi1jb2w+XHJcbiAgPC9pb24tcm93PlxyXG5cclxuICA8aW9uLXJvdz5cclxuICAgIDxpb24tY29sIHNpemU9XCJhdXRvXCI+XHJcbiAgICAgIDxwPm1hdC1idXR0b24gd2l0aCBtYXQtbGFiZWw6PC9wPlxyXG4gICAgPC9pb24tY29sPlxyXG4gICAgPGlvbi1jb2w+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCJcclxuICAgICAgICBbYXBwQmFkZ2VJY29uXT1cIiRpY29uIHwgYXN5bmNcIlxyXG4gICAgICAgIFthcHBCYWRnZUNvbG9yXT1cIiRjb2xvciB8IGFzeW5jIHwgbWF0Q29sb3JcIlxyXG4gICAgICAgIFthcHBCYWRnZUhpZGRlbl09XCIkaGlkZGVuIHwgYXN5bmNcIlxyXG4gICAgICAgIFthcHBCYWRnZUZpbGxdPVwiJGZpbGwgfCBhc3luY1wiXHJcbiAgICAgICAgW2FwcEJhZGdlU2l6ZV09XCIkc2l6ZSB8IGFzeW5jXCJcclxuICAgICAgICBtYXRCYWRnZU92ZXJsYXA9XCJ0cnVlXCJcclxuICAgICAgICBtYXRCYWRnZVBvc2l0aW9uPVwiYWJvdmUgYWZ0ZXJcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgdXNlclRleHQgfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2lvbi1jb2w+XHJcbiAgPC9pb24tcm93PlxyXG5cclxuICA8aDQ+QW5ndWxhciBNYXRlcmlhbCBCYWRnZSAoc3RhbmRhcmQgd2F5KTwvaDQ+XHJcblxyXG4gIDxpb24tcm93PlxyXG4gICAgPGlvbi1jb2wgc2l6ZT1cImF1dG9cIj5cclxuICAgICAgPHA+bWF0LWljb246PC9wPlxyXG4gICAgPC9pb24tY29sPlxyXG4gICAgPGlvbi1jb2w+XHJcbiAgICAgIDxtYXQtaWNvblxyXG4gICAgICAgIFtzdHlsZS5jb2xvcl09XCIndmFyKC0taW9uLWNvbG9yLXNlY29uZGFyeSknXCJcclxuICAgICAgICBbbWF0QmFkZ2VdPVwiJyEnXCJcclxuICAgICAgICBbbWF0QmFkZ2VDb2xvcl09XCIkY29sb3IgfCBhc3luYyB8IG1hdENvbG9yXCJcclxuICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwiJGhpZGRlbiB8IGFzeW5jXCJcclxuICAgICAgICBbbWF0QmFkZ2VTaXplXT1cIiRzaXplIHwgYXN5bmNcIlxyXG4gICAgICAgIG1hdEJhZGdlT3ZlcmxhcD1cInRydWVcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBbY29sb3JdPVwiJ3NlY29uZGFyeSdcIiBuYW1lPVwibmF2aWdhdGVcIj48L2lvbi1pY29uPlxyXG4gICAgICA8L21hdC1pY29uPlxyXG4gICAgPC9pb24tY29sPlxyXG4gIDwvaW9uLXJvdz5cclxuXHJcbiAgPGlvbi1yb3c+XHJcbiAgICA8aW9uLWNvbCBzaXplPVwiYXV0b1wiPlxyXG4gICAgICA8cD5tYXQtYnV0dG9uOjwvcD5cclxuICAgIDwvaW9uLWNvbD5cclxuICAgIDxpb24tY29sPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cclxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgIFttYXRCYWRnZV09XCJtYXRCYWRnZUNvbnRlbnRcIlxyXG4gICAgICAgIFttYXRCYWRnZUNvbG9yXT1cIiRjb2xvciB8IGFzeW5jIHwgbWF0Q29sb3JcIlxyXG4gICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCIkaGlkZGVuIHwgYXN5bmNcIlxyXG4gICAgICAgIFttYXRCYWRnZVNpemVdPVwiJHNpemUgfCBhc3luY1wiXHJcbiAgICAgICAgbWF0QmFkZ2VPdmVybGFwPVwidHJ1ZVwiXHJcbiAgICAgICAgbWF0QmFkZ2VQb3NpdGlvbj1cImFib3ZlIGFmdGVyXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IHVzZXJUZXh0IH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9pb24tY29sPlxyXG5cclxuICAgIDxpb24tY29sPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbdmFsdWVdPVwibWF0QmFkZ2VDb250ZW50XCIgKGlucHV0KT1cIm9uTWF0QmFkZ2VDb250ZW50Q2hhbmdlZCgkZXZlbnQpXCIgLz5cclxuICAgIDwvaW9uLWNvbD5cclxuICA8L2lvbi1yb3c+XHJcblxyXG4gIDxpb24tcm93PlxyXG4gICAgPGlvbi1jb2wgc2l6ZT1cImF1dG9cIj5cclxuICAgICAgPHA+bWF0LWJ1dHRvbjwvcD5cclxuICAgIDwvaW9uLWNvbD5cclxuICAgIDxpb24tY29sPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgW21hdEJhZGdlXT1cIm1hdEJhZGdlQ29udGVudFwiXHJcbiAgICAgICAgW21hdEJhZGdlQ29sb3JdPVwiJGNvbG9yIHwgYXN5bmMgfCBtYXRDb2xvclwiXHJcbiAgICAgICAgW21hdEJhZGdlSGlkZGVuXT1cIiRoaWRkZW4gfCBhc3luY1wiXHJcbiAgICAgICAgW21hdEJhZGdlU2l6ZV09XCIkc2l6ZSB8IGFzeW5jXCJcclxuICAgICAgICBtYXRCYWRnZU92ZXJsYXA9XCJ0cnVlXCJcclxuICAgICAgICBtYXRCYWRnZVBvc2l0aW9uPVwiYWZ0ZXJcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgdXNlclRleHQgfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2lvbi1jb2w+XHJcbiAgPC9pb24tcm93PlxyXG48L2lvbi1jb250ZW50PlxyXG4iXX0=
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2JhZGdlL2JhZGdlLnRlc3QudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9iYWRnZS9iYWRnZS50ZXN0Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7O0FBVXZDLE1BQU0sT0FBTyxnQkFBZ0I7SUFXUDtJQVZwQixRQUFRLEdBQUcsaUJBQWlCLENBQUM7SUFDN0IsZUFBZSxHQUFHLEdBQUcsQ0FBQztJQUV0QixLQUFLLEdBQUcsSUFBSSxlQUFlLENBQVMsT0FBTyxDQUFDLENBQUM7SUFDN0MsS0FBSyxHQUFHLElBQUksZUFBZSxDQUFlLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELEtBQUssR0FBRyxJQUFJLGVBQWUsQ0FBZSxPQUFPLENBQUMsQ0FBQztJQUNuRCxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQVksUUFBUSxDQUFDLENBQUM7SUFDbEQsT0FBTyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQzlDLFFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUUvQyxZQUFvQixFQUFxQjtRQUFyQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtJQUFHLENBQUM7SUFFN0MsY0FBYyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNuQyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxLQUFVO1FBQ2pDLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDMUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDO3dHQXJCVSxnQkFBZ0I7NEZBQWhCLGdCQUFnQixzRENYN0IsNCtQQW1SQTs7NEZEeFFhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxnQkFBZ0IsbUJBRVQsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1hdEJhZGdlRmlsbCB9IGZyb20gJy4vYmFkZ2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IE1hdEJhZGdlU2l6ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2JhZGdlJztcbmltcG9ydCB7IEFwcENvbG9ycyB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWF0LWJhZGdlLXRlc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vYmFkZ2UudGVzdC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE1hdEJhZGdlVGVzdFBhZ2Uge1xuICB1c2VyVGV4dCA9ICdBIGN1c3RvbSBzdHJpbmcnO1xuICBtYXRCYWRnZUNvbnRlbnQgPSAnISc7XG5cbiAgJGljb24gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJ2FsZXJ0Jyk7XG4gICRzaXplID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXRCYWRnZVNpemU+KCdzbWFsbCcpO1xuICAkZmlsbCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF0QmFkZ2VGaWxsPignc29saWQnKTtcbiAgJGNvbG9yID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcHBDb2xvcnM+KCdkYW5nZXInKTtcbiAgJGhpZGRlbiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAkb3ZlcmxhcCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG9uSW5wdXRDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnVzZXJUZXh0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvbk1hdEJhZGdlQ29udGVudENoYW5nZWQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMubWF0QmFkZ2VDb250ZW50ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiIsIjxpb24taGVhZGVyPlxuICA8aW9uLXRvb2xiYXIgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgPGlvbi1iYWNrLWJ1dHRvbj48L2lvbi1iYWNrLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuXG4gICAgPGlvbi10aXRsZT5tYXRCYWRnZUljb24gZGlyZWN0aXZlPC9pb24tdGl0bGU+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1oZWFkZXI+XG5cbjxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gIDwhLS0gc21hbGwgYmFkZ2UgLS0+XG4gIDxwPlxuICAgIDxpb24tdGV4dCBjb2xvcj1cInRlcnRpYXJ5XCI+XG4gICAgICA8c3BhbiBhcHBCYWRnZSBhcHBCYWRnZU1hdEljb249XCJjaGVja1wiIGFwcEJhZGdlU2l6ZT1cInNtYWxsXCIgYXBwQmFkZ2VDb2xvcj1cImFjY2VudFwiIGFwcEJhZGdlT3ZlcmxhcD1cImZhbHNlXCI+XG4gICAgICAgIFNtYWxsIGJhZGdlXG4gICAgICA8L3NwYW4+XG4gICAgPC9pb24tdGV4dD5cbiAgPC9wPlxuXG4gIDwhLS0gc21hbGwgYmFkZ2Ugd2l0aCB0ZXh0IC0tPlxuICA8cD5cbiAgICA8aW9uLXRleHQgY29sb3I9XCJ0ZXJ0aWFyeVwiPlxuICAgICAgPHNwYW4gW2FwcEJhZGdlXT1cIjBcIiBhcHBCYWRnZVNpemU9XCJzbWFsbFwiIGFwcEJhZGdlQ29sb3I9XCJhY2NlbnRcIiBhcHBCYWRnZU92ZXJsYXA9XCJmYWxzZVwiPlxuICAgICAgICBTbWFsbCBiYWRnZSB3aXRoIHRleHQgMFxuICAgICAgPC9zcGFuPlxuICAgIDwvaW9uLXRleHQ+XG4gIDwvcD5cblxuICA8IS0tIG1lZGl1bSBiYWRnZSAtLT5cbiAgPHA+XG4gICAgPGlvbi10ZXh0XG4gICAgICBhcHBCYWRnZVxuICAgICAgYXBwQmFkZ2VNYXRJY29uPVwiY2hlY2tcIlxuICAgICAgYXBwQmFkZ2VTaXplPVwibWVkaXVtXCJcbiAgICAgIFthcHBCYWRnZUNvbG9yXT1cIid0ZXJ0aWFyeScgfCBtYXRDb2xvclwiXG4gICAgICBhcHBCYWRnZU92ZXJsYXA9XCJmYWxzZVwiXG4gICAgPlxuICAgICAgTWVkaXVtIGJhZGdlXG4gICAgPC9pb24tdGV4dD5cbiAgPC9wPlxuXG4gIDwhLS0gc21hbGwgYmFkZ2UgLS0+XG4gIDxwPlxuICAgIDxpb24tbGFiZWwgYXBwQmFkZ2UgYXBwQmFkZ2VNYXRJY29uPVwiY2xvc2VcIiBhcHBCYWRnZVNpemU9XCJsYXJnZVwiIGFwcEJhZGdlT3ZlcmxhcD1cImZhbHNlXCI+TGFyZ2UgYmFkZ2U8L2lvbi1sYWJlbD5cbiAgPC9wPlxuXG4gIDwhLS0gZGVmYXVsdCBzaXplIGJhZGdlIC0tPlxuICA8cD5cbiAgICA8aW9uLWxhYmVsIGFwcEJhZGdlIGFwcEJhZGdlTWF0SWNvbj1cImNoZWNrXCIgW2FwcEJhZGdlQ29sb3JdPVwiJ3N1Y2Nlc3MnIHwgbWF0Q29sb3JcIiBhcHBCYWRnZU92ZXJsYXA9XCJmYWxzZVwiPlxuICAgICAgQmFkZ2UgKG5vIHNpemUsIG5vIGNvbG9yKVxuICAgIDwvaW9uLWxhYmVsPlxuICA8L3A+XG5cbiAgPCEtLSBpb24gaWNvbiAtLT5cbiAgPHA+XG4gICAgPGlvbi1sYWJlbCBhcHBCYWRnZSBhcHBCYWRnZUljb249XCJjaGVja21hcmtcIiBbYXBwQmFkZ2VDb2xvcl09XCInc3VjY2VzcycgfCBtYXRDb2xvclwiIGFwcEJhZGdlT3ZlcmxhcD1cImZhbHNlXCI+XG4gICAgICBCYWRnZSB3aXRoIGlvbi1pY29uXG4gICAgPC9pb24tbGFiZWw+XG4gIDwvcD5cblxuICA8IS0tIGlvbiBpY29uIGNsZWFyIC0tPlxuICA8cD5cbiAgICA8aW9uLWxhYmVsXG4gICAgICBhcHBCYWRnZVxuICAgICAgYXBwQmFkZ2VJY29uPVwiY2hlY2ttYXJrLWNpcmNsZVwiXG4gICAgICBbYXBwQmFkZ2VDb2xvcl09XCIndGVydGlhcnknIHwgbWF0Q29sb3JcIlxuICAgICAgYXBwQmFkZ2VGaWxsPVwiY2xlYXJcIlxuICAgICAgYXBwQmFkZ2VPdmVybGFwPVwiZmFsc2VcIlxuICAgID5cbiAgICAgIEJhZGdlIHdpdGggY2xlYXIgaWNvblxuICAgIDwvaW9uLWxhYmVsPlxuICA8L3A+XG5cbiAgPCEtLSBjaGFuZ2luZyB0ZXh0LS0+XG4gIDxpb24tcm93PlxuICAgIDxpb24tY29sPlxuICAgICAgPGlvbi1sYWJlbFxuICAgICAgICBhcHBCYWRnZVxuICAgICAgICBhcHBCYWRnZUljb249XCJjaGVja21hcmstY2lyY2xlXCJcbiAgICAgICAgW2FwcEJhZGdlQ29sb3JdPVwiJ3RlcnRpYXJ5JyB8IG1hdENvbG9yXCJcbiAgICAgICAgYXBwQmFkZ2VGaWxsPVwiY2xlYXJcIlxuICAgICAgICBhcHBCYWRnZU92ZXJsYXA9XCJmYWxzZVwiXG4gICAgICA+XG4gICAgICAgIHt7IHVzZXJUZXh0IH19XG4gICAgICA8L2lvbi1sYWJlbD5cbiAgICA8L2lvbi1jb2w+XG4gICAgPGlvbi1jb2w+XG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbdmFsdWVdPVwidXNlclRleHRcIiAoaW5wdXQpPVwib25JbnB1dENoYW5nZWQoJGV2ZW50KVwiIC8+XG4gICAgPC9pb24tY29sPlxuICA8L2lvbi1yb3c+XG5cbiAgPGlvbi1yb3c+XG4gICAgPGlvbi1jb2w+Q29uZmlndXJhYmxlIGV4YW1wbGUgOjwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuICA8aW9uLXJvdyBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG4gICAgPGlvbi1jb2wgc2l6ZT1cImF1dG9cIj5cbiAgICAgIDxtYXQtaWNvblxuICAgICAgICBbc3R5bGUuY29sb3JdPVwiJ3ZhcigtLWlvbi1jb2xvci1zZWNvbmRhcnkpJ1wiXG4gICAgICAgIGFwcEJhZGdlXG4gICAgICAgIFthcHBCYWRnZUljb25dPVwiJGljb24gfCBhc3luY1wiXG4gICAgICAgIFthcHBCYWRnZUNvbG9yXT1cIiRjb2xvciB8IGFzeW5jIHwgbWF0Q29sb3JcIlxuICAgICAgICBbYXBwQmFkZ2VIaWRkZW5dPVwiJGhpZGRlbiB8IGFzeW5jXCJcbiAgICAgICAgW2FwcEJhZGdlRmlsbF09XCIkZmlsbCB8IGFzeW5jXCJcbiAgICAgICAgW2FwcEJhZGdlU2l6ZV09XCIkc2l6ZSB8IGFzeW5jXCJcbiAgICAgICAgYXBwQmFkZ2VPdmVybGFwPVwidHJ1ZVwiXG4gICAgICAgIGFwcEJhZGdlUG9zaXRpb249XCJhYm92ZSBiZWZvcmVcIlxuICAgICAgPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIFtjb2xvcl09XCInc2Vjb25kYXJ5J1wiIG5hbWU9XCJuYXZpZ2F0ZVwiPjwvaW9uLWljb24+XG4gICAgICA8L21hdC1pY29uPlxuICAgIDwvaW9uLWNvbD5cblxuICAgIDxpb24tY29sPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWxhYmVsPmFwcEJhZGdlQ29sb3I8L21hdC1sYWJlbD5cbiAgICAgICAgPG1hdC1zZWxlY3QgW3ZhbHVlXT1cIiRjb2xvci52YWx1ZVwiIChzZWxlY3Rpb25DaGFuZ2UpPVwidGhpcy4kY29sb3IubmV4dCgkZXZlbnQudmFsdWUpXCI+XG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIidwcmltYXJ5J1wiPnByaW1hcnk8L21hdC1vcHRpb24+XG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIidzZWNvbmRhcnknXCI+c2Vjb25kYXJ5PC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCIndGVydGlhcnknXCI+dGVydGlhcnk8L21hdC1vcHRpb24+XG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIidkYW5nZXInXCI+ZGFuZ2VyPC9tYXQtb3B0aW9uPlxuICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvaW9uLWNvbD5cblxuICAgIDxpb24tY29sPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWxhYmVsPmFwcEJhZGdlSWNvbjwvbWF0LWxhYmVsPlxuICAgICAgICA8bWF0LXNlbGVjdCBbdmFsdWVdPVwiJGljb24udmFsdWVcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cInRoaXMuJGljb24ubmV4dCgkZXZlbnQudmFsdWUpXCI+XG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIidjaGVja21hcmstY2lyY2xlJ1wiPmNoZWNrbWFyay1jaXJjbGU8L21hdC1vcHRpb24+XG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIidhbGVydC1jaXJjbGUnXCI+YWxlcnQtY2lyY2xlPC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInYWxlcnQnXCI+YWxlcnQ8L21hdC1vcHRpb24+XG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIidmbGFnJ1wiPmZsYWc8L21hdC1vcHRpb24+XG4gICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9pb24tY29sPlxuXG4gICAgPGlvbi1jb2w+XG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtbGFiZWw+YXBwQmFkZ2VTaXplPC9tYXQtbGFiZWw+XG4gICAgICAgIDxtYXQtc2VsZWN0IFt2YWx1ZV09XCIkc2l6ZS52YWx1ZVwiIChzZWxlY3Rpb25DaGFuZ2UpPVwidGhpcy4kc2l6ZS5uZXh0KCRldmVudC52YWx1ZSlcIj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJ2xhcmdlJ1wiPmxhcmdlPC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCInbWVkaXVtJ1wiPm1lZGl1bTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJ3NtYWxsJ1wiPnNtYWxsPC9tYXQtb3B0aW9uPlxuICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvaW9uLWNvbD5cblxuICAgIDxpb24tY29sPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWxhYmVsPmFwcEJhZGdlRmlsbDwvbWF0LWxhYmVsPlxuICAgICAgICA8bWF0LXNlbGVjdCBbdmFsdWVdPVwiJGZpbGwudmFsdWVcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cInRoaXMuJGZpbGwubmV4dCgkZXZlbnQudmFsdWUpXCI+XG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIidjbGVhcidcIj5jbGVhcjwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiJ3NvbGlkJ1wiPnNvbGlkPC9tYXQtb3B0aW9uPlxuICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvaW9uLWNvbD5cblxuICAgIDxpb24tY29sPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWxhYmVsPmFwcEJhZGdlSGlkZGVuPC9tYXQtbGFiZWw+XG4gICAgICAgIDxtYXQtc2VsZWN0IFt2YWx1ZV09XCIkaGlkZGVuLnZhbHVlXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJ0aGlzLiRoaWRkZW4ubmV4dCgkZXZlbnQudmFsdWUpXCI+XG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInRydWVcIj50cnVlPC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJmYWxzZVwiPmZhbHNlPC9tYXQtb3B0aW9uPlxuICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuXG4gIDxpb24tcm93PlxuICAgIDxpb24tY29sIHNpemU9XCJhdXRvXCI+XG4gICAgICA8cD5tYXQtcmFpc2VkLWJ1dHRvbjo8L3A+XG4gICAgPC9pb24tY29sPlxuICAgIDxpb24tY29sPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICBbYXBwQmFkZ2VJY29uXT1cIiRpY29uIHwgYXN5bmNcIlxuICAgICAgICBbYXBwQmFkZ2VDb2xvcl09XCIkY29sb3IgfCBhc3luYyB8IG1hdENvbG9yXCJcbiAgICAgICAgW2FwcEJhZGdlSGlkZGVuXT1cIiRoaWRkZW4gfCBhc3luY1wiXG4gICAgICAgIFthcHBCYWRnZUZpbGxdPVwiJGZpbGwgfCBhc3luY1wiXG4gICAgICAgIFthcHBCYWRnZVNpemVdPVwiJHNpemUgfCBhc3luY1wiXG4gICAgICAgIGFwcEJhZGdlT3ZlcmxhcD1cInRydWVcIlxuICAgICAgICBhcHBCYWRnZVBvc2l0aW9uPVwiYmVsb3cgYWZ0ZXJcIlxuICAgICAgPlxuICAgICAgICB7eyB1c2VyVGV4dCB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9pb24tY29sPlxuICA8L2lvbi1yb3c+XG5cbiAgPGlvbi1yb3c+XG4gICAgPGlvbi1jb2wgc2l6ZT1cImF1dG9cIj5cbiAgICAgIDxwPm1hdC1idXR0b24gd2l0aCBtYXQtbGFiZWw6PC9wPlxuICAgIDwvaW9uLWNvbD5cbiAgICA8aW9uLWNvbD5cbiAgICAgIDxidXR0b25cbiAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCJcbiAgICAgICAgW2FwcEJhZGdlSWNvbl09XCIkaWNvbiB8IGFzeW5jXCJcbiAgICAgICAgW2FwcEJhZGdlQ29sb3JdPVwiJGNvbG9yIHwgYXN5bmMgfCBtYXRDb2xvclwiXG4gICAgICAgIFthcHBCYWRnZUhpZGRlbl09XCIkaGlkZGVuIHwgYXN5bmNcIlxuICAgICAgICBbYXBwQmFkZ2VGaWxsXT1cIiRmaWxsIHwgYXN5bmNcIlxuICAgICAgICBbYXBwQmFkZ2VTaXplXT1cIiRzaXplIHwgYXN5bmNcIlxuICAgICAgICBtYXRCYWRnZU92ZXJsYXA9XCJ0cnVlXCJcbiAgICAgICAgbWF0QmFkZ2VQb3NpdGlvbj1cImFib3ZlIGFmdGVyXCJcbiAgICAgID5cbiAgICAgICAge3sgdXNlclRleHQgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuXG4gIDxoND5Bbmd1bGFyIE1hdGVyaWFsIEJhZGdlIChzdGFuZGFyZCB3YXkpPC9oND5cblxuICA8aW9uLXJvdz5cbiAgICA8aW9uLWNvbCBzaXplPVwiYXV0b1wiPlxuICAgICAgPHA+bWF0LWljb246PC9wPlxuICAgIDwvaW9uLWNvbD5cbiAgICA8aW9uLWNvbD5cbiAgICAgIDxtYXQtaWNvblxuICAgICAgICBbc3R5bGUuY29sb3JdPVwiJ3ZhcigtLWlvbi1jb2xvci1zZWNvbmRhcnkpJ1wiXG4gICAgICAgIFttYXRCYWRnZV09XCInISdcIlxuICAgICAgICBbbWF0QmFkZ2VDb2xvcl09XCIkY29sb3IgfCBhc3luYyB8IG1hdENvbG9yXCJcbiAgICAgICAgW21hdEJhZGdlSGlkZGVuXT1cIiRoaWRkZW4gfCBhc3luY1wiXG4gICAgICAgIFttYXRCYWRnZVNpemVdPVwiJHNpemUgfCBhc3luY1wiXG4gICAgICAgIG1hdEJhZGdlT3ZlcmxhcD1cInRydWVcIlxuICAgICAgPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIFtjb2xvcl09XCInc2Vjb25kYXJ5J1wiIG5hbWU9XCJuYXZpZ2F0ZVwiPjwvaW9uLWljb24+XG4gICAgICA8L21hdC1pY29uPlxuICAgIDwvaW9uLWNvbD5cbiAgPC9pb24tcm93PlxuXG4gIDxpb24tcm93PlxuICAgIDxpb24tY29sIHNpemU9XCJhdXRvXCI+XG4gICAgICA8cD5tYXQtYnV0dG9uOjwvcD5cbiAgICA8L2lvbi1jb2w+XG4gICAgPGlvbi1jb2w+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIFttYXRCYWRnZV09XCJtYXRCYWRnZUNvbnRlbnRcIlxuICAgICAgICBbbWF0QmFkZ2VDb2xvcl09XCIkY29sb3IgfCBhc3luYyB8IG1hdENvbG9yXCJcbiAgICAgICAgW21hdEJhZGdlSGlkZGVuXT1cIiRoaWRkZW4gfCBhc3luY1wiXG4gICAgICAgIFttYXRCYWRnZVNpemVdPVwiJHNpemUgfCBhc3luY1wiXG4gICAgICAgIG1hdEJhZGdlT3ZlcmxhcD1cInRydWVcIlxuICAgICAgICBtYXRCYWRnZVBvc2l0aW9uPVwiYWJvdmUgYWZ0ZXJcIlxuICAgICAgPlxuICAgICAgICB7eyB1c2VyVGV4dCB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9pb24tY29sPlxuXG4gICAgPGlvbi1jb2w+XG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbdmFsdWVdPVwibWF0QmFkZ2VDb250ZW50XCIgKGlucHV0KT1cIm9uTWF0QmFkZ2VDb250ZW50Q2hhbmdlZCgkZXZlbnQpXCIgLz5cbiAgICA8L2lvbi1jb2w+XG4gIDwvaW9uLXJvdz5cblxuICA8aW9uLXJvdz5cbiAgICA8aW9uLWNvbCBzaXplPVwiYXV0b1wiPlxuICAgICAgPHA+bWF0LWJ1dHRvbjwvcD5cbiAgICA8L2lvbi1jb2w+XG4gICAgPGlvbi1jb2w+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgW21hdEJhZGdlXT1cIm1hdEJhZGdlQ29udGVudFwiXG4gICAgICAgIFttYXRCYWRnZUNvbG9yXT1cIiRjb2xvciB8IGFzeW5jIHwgbWF0Q29sb3JcIlxuICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwiJGhpZGRlbiB8IGFzeW5jXCJcbiAgICAgICAgW21hdEJhZGdlU2l6ZV09XCIkc2l6ZSB8IGFzeW5jXCJcbiAgICAgICAgbWF0QmFkZ2VPdmVybGFwPVwidHJ1ZVwiXG4gICAgICAgIG1hdEJhZGdlUG9zaXRpb249XCJhZnRlclwiXG4gICAgICA+XG4gICAgICAgIHt7IHVzZXJUZXh0IH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2lvbi1jb2w+XG4gIDwvaW9uLXJvdz5cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=
|
|
@@ -368,4 +368,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
368
368
|
type: Output,
|
|
369
369
|
args: ['blur']
|
|
370
370
|
}] } });
|
|
371
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwuYm9vbGVhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2Jvb2xlYW4vbWF0ZXJpYWwuYm9vbGVhbi50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2Jvb2xlYW4vbWF0ZXJpYWwuYm9vbGVhbi5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQTRDLGlCQUFpQixFQUFzQixNQUFNLGdCQUFnQixDQUFDO0FBSWpILE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWxGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQUVwQyxNQUFNLHNCQUFzQixHQUFhO0lBQ3ZDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUM7SUFDOUMsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBRUYsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBVXRCLE1BQU0sT0FBTyxlQUFlO0lBd0ZoQjtJQUNZO0lBeEZkLGlCQUFpQixHQUFxQixJQUFJLENBQUM7SUFDM0Msa0JBQWtCLEdBQWUsSUFBSSxDQUFDO0lBQzdCLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQzVDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFZixNQUFNLENBQVU7SUFDaEIsU0FBUyxD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QixFQUFFO2dCQUNFLFFBQVE7c0JBQS9DLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsT0FBTztzQkFBOUMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxTQUFTO3NCQUFoRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUM3QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ3NDLGVBQWU7c0JBQTFELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUU7Z0JBRTFCLFNBQVM7c0JBQXhCLEtBQUs7dUJBQUMsT0FBTztnQkFDTCxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDa0MsZUFBZTtzQkFBdEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDN0IsT0FBTztzQkFBZixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDa0MsU0FBUztzQkFBaEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDN0IsYUFBYTtzQkFBckIsS0FBSztnQkFFMEMsUUFBUTtzQkFBdkQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRTtnQkFZdEMsU0FBUztzQkFEWixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQW9CbEMsS0FBSztzQkFEUixLQUFLO2dCQVlpQixVQUFVO3NCQUFoQyxNQUFNO3VCQUFDLGFBQWE7Z0JBRUosT0FBTztzQkFBdkIsTUFBTTt1QkFBQyxPQUFPO2dCQUVDLE9BQU87c0JBQXRCLE1BQU07dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIE91dHB1dCxcclxuICBQcm92aWRlcixcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UsIFN1YnNjcmlwdFNpemluZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUdyb3VwRGlyZWN0aXZlLCBOR19WQUxVRV9BQ0NFU1NPUiwgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRSYWRpb0J1dHRvbiwgTWF0UmFkaW9DaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9yYWRpbyc7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94LCBNYXRDaGVja2JveENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgSW5wdXRFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW5wdXRzJztcclxuaW1wb3J0IHsgaXNOaWwsIGlzTm90TmlsLCBudW1iZXJPck5pbEF0dHJpYnV0ZSwgdG9OdW1iZXIgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBBcHBGbG9hdExhYmVsVHlwZSB9IGZyb20gJy4uLy4uL2Zvcm0vZmllbGQubW9kZWwnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbmNvbnN0IERFRkFVTFRfVkFMVUVfQUNDRVNTT1I6IFByb3ZpZGVyID0ge1xyXG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1hdEJvb2xlYW5GaWVsZCksXHJcbiAgbXVsdGk6IHRydWUsXHJcbn07XHJcblxyXG5jb25zdCBub29wID0gKCkgPT4ge307XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnbWF0LWJvb2xlYW4tZmllbGQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXRlcmlhbC5ib29sZWFuLmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21hdGVyaWFsLmJvb2xlYW4uc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW0RFRkFVTFRfVkFMVUVfQUNDRVNTT1JdLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWF0Qm9vbGVhbkZpZWxkIGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgSW5wdXRFbGVtZW50LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgX29uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xyXG4gIHByaXZhdGUgX29uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gbm9vcDtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgcHJpdmF0ZSBfd3JpdGluZyA9IGZhbHNlO1xyXG5cclxuICBwcm90ZWN0ZWQgX3ZhbHVlOiBib29sZWFuO1xyXG4gIHByb3RlY3RlZCBfdGFiaW5kZXg6IG51bWJlcjtcclxuICBwcm90ZWN0ZWQgX3Nob3dSYWRpbyA9IGZhbHNlOyAvLyBXaWxsIGJlIGNoYW5nZWQgd2hlbiBmb2N1cyBpblxyXG4gIHByb3RlY3RlZCBfZm9jdXNlZCA9IGZhbHNlO1xyXG5cclxuICBAVmlld0NoaWxkKCdmYWtlSW5wdXQnKSBmYWtlSW5wdXQ6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgneWVzUmFkaW9CdXR0b24nKSB5ZXNSYWRpb0J1dHRvbjogTWF0UmFkaW9CdXR0b247XHJcbiAgQFZpZXdDaGlsZCgnbm9SYWRpb0J1dHRvbicpIG5vUmFkaW9CdXR0b246IE1hdFJhZGlvQnV0dG9uO1xyXG4gIEBWaWV3Q2hpbGQoJ2NoZWNrYm94QnV0dG9uJykgY2hlY2tib3hCdXR0b246IE1hdENoZWNrYm94O1xyXG5cclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBmb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sO1xyXG4gIEBJbnB1dCgpIGZvcm1Db250cm9sTmFtZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZmxvYXRMYWJlbDogQXBwRmxvYXRMYWJlbFR5cGUgPSAnYXV0byc7XHJcbiAgQElucHV0KCkgYXBwZWFyYW5jZTogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZTtcclxuICBASW5wdXQoKSBzdWJzY3JpcHRTaXppbmc6IFN1YnNjcmlwdFNpemluZztcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcmVhZG9ubHkgPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcmVxdWlyZWQgPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgY29tcGFjdCA9IGZhbHNlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhdXRvZm9jdXMgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzdHlsZTogJ3JhZGlvJyB8ICdjaGVja2JveCcgfCAnYnV0dG9uJztcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlck9yTmlsQXR0cmlidXRlIH0pIGJ1dHRvbnNDb2xDb3VudDogbnVtYmVyO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXHJcbiAgQElucHV0KCdjbGFzcycpIGNsYXNzTGlzdDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHllc0xhYmVsID0gJ0NPTU1PTi5ZRVMnO1xyXG4gIEBJbnB1dCgpIG5vTGFiZWwgPSAnQ09NTU9OLk5PJztcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2hvd0J1dHRvbkljb25zID0gdHJ1ZTtcclxuICBASW5wdXQoKSB5ZXNJY29uID0gJ2NoZWNrbWFyayc7XHJcbiAgQElucHV0KCkgbm9JY29uID0gJ2Nsb3NlJztcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgY2xlYXJhYmxlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbGFiZWxQb3NpdGlvbjogJ2FmdGVyJyB8ICdiZWZvcmUnID0gJ2FmdGVyJztcclxuXHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJPck5pbEF0dHJpYnV0ZSB9KSBzZXQgdGFiaW5kZXgodmFsdWU6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuX3RhYmluZGV4ICE9PSB2YWx1ZSkge1xyXG4gICAgICB0aGlzLl90YWJpbmRleCA9IHZhbHVlO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlVGFiSW5kZXgoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgdGFiaW5kZXgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl90YWJpbmRleDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxyXG4gIHNldCBzaG93UmFkaW8odjogYW55KSB7XHJcbiAgICBpZiAodiAhPT0gdGhpcy5fc2hvd1JhZGlvKSB7XHJcbiAgICAgIHRoaXMuX3Nob3dSYWRpbyA9IHY7XHJcbiAgICAgIHRoaXMudXBkYXRlRmFrZUlucHV0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgc2hvd1JhZGlvKCk6IGFueSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLl9zaG93UmFkaW8gfHxcclxuICAgICAgdGhpcy5fZm9jdXNlZCB8fFxyXG4gICAgICB0aGlzLmZsb2F0TGFiZWwgPT09ICdhbHdheXMnIHx8XHJcbiAgICAgIHRoaXMuZmxvYXRMYWJlbCA9PT0gJ25ldmVyJyB8fFxyXG4gICAgICB0aGlzLnN0eWxlID09PSAnY2hlY2tib3gnIHx8XHJcbiAgICAgIGlzTm90TmlsKHRoaXMuX3ZhbHVlKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHZhbHVlKHY6IGFueSkge1xyXG4gICAgaWYgKHYgIT09IHRoaXMuX3ZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX3ZhbHVlID0gdjtcclxuICAgICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayh2KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gIH1cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXgsQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1yZW5hbWVcclxuICBAT3V0cHV0KCdrZXl1cC5lbnRlcicpIGtleXVwRW50ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcclxuICBAT3V0cHV0KCdmb2N1cycpIGZvY3VzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZvY3VzRXZlbnQ+KCk7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XHJcbiAgQE91dHB1dCgnYmx1cicpIGJsdXJyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZvY3VzRXZlbnQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGZvcm1Hcm91cERpcjogRm9ybUdyb3VwRGlyZWN0aXZlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wgPVxyXG4gICAgICB0aGlzLmZvcm1Db250cm9sIHx8ICh0aGlzLmZvcm1Db250cm9sTmFtZSAmJiB0aGlzLmZvcm1Hcm91cERpciAmJiAodGhpcy5mb3JtR3JvdXBEaXIuZm9ybS5nZXQodGhpcy5mb3JtQ29udHJvbE5hbWUpIGFzIFVudHlwZWRGb3JtQ29udHJvbCkpO1xyXG4gICAgaWYgKCF0aGlzLmZvcm1Db250cm9sKSB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIG1hbmRhdG9yeSBhdHRyaWJ1dGUgJ2Zvcm1Db250cm9sJyBvciAnZm9ybUNvbnRyb2xOYW1lJyBpbiA8bWF0LWJvb2xlYW4tZmllbGQ+LlwiKTtcclxuXHJcbiAgICB0aGlzLnN0eWxlID0gdGhpcy5zdHlsZSB8fCAodGhpcy5jb21wYWN0ID8gJ2NoZWNrYm94JyA6ICdyYWRpbycpO1xyXG5cclxuICAgIGlmICh0aGlzLnN0eWxlID09PSAnYnV0dG9uJykge1xyXG4gICAgICB0aGlzLmJ1dHRvbnNDb2xDb3VudCA9IHRvTnVtYmVyKHRoaXMuYnV0dG9uc0NvbENvdW50LCAyKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKHRoaXMuZm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHRoaXMud3JpdGVWYWx1ZSh2YWx1ZSkpKTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZUZha2VJbnB1dCgpO1xyXG4gICAgdGhpcy51cGRhdGVUYWJJbmRleCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmJsdXJyZWQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSwgZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX3dyaXRpbmcpIHJldHVybjtcclxuXHJcbiAgICAvLyBERUJVR1xyXG4gICAgLy9jb25zb2xlLmRlYnVnKCdbbWF0LWJvb2xlYW4tZmllbGRdIFdyaXRpbmcgdmFsdWUnLCB2YWx1ZSk7XHJcblxyXG4gICAgdGhpcy5fd3JpdGluZyA9IHRydWU7XHJcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuX3ZhbHVlIHx8IHZhbHVlICE9PSB0aGlzLmZvcm1Db250cm9sLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XHJcblxyXG4gICAgICBpZiAodmFsdWUgIT09IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnBhdGNoVmFsdWUodmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKHZhbHVlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMueWVzUmFkaW9CdXR0b24pIHtcclxuICAgICAgICB0aGlzLnllc1JhZGlvQnV0dG9uLmNoZWNrZWQgPSB2YWx1ZSA9PT0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm5vUmFkaW9CdXR0b24uY2hlY2tlZCA9IHZhbHVlID09PSBmYWxzZTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmNoZWNrYm94QnV0dG9uKSB7XHJcbiAgICAgICAgaWYgKGlzTmlsKHZhbHVlKSkge1xyXG4gICAgICAgICAgdGhpcy5jaGVja2JveEJ1dHRvbi5pbmRldGVybWluYXRlID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jaGVja2JveEJ1dHRvbi5jaGVja2VkID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnVwZGF0ZUZha2VJbnB1dCgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVGFiSW5kZXgoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl93cml0aW5nID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKHRoaXMuc3R5bGUgPT09ICdidXR0b24nKSB7XHJcbiAgICAgIGlmIChldmVudCkgdGhpcy5rZXl1cEVudGVyLmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX29uVG91Y2hlZENhbGxiYWNrID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uRm9jdXNGYWtlSW5wdXQoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5zaG93UmFkaW8pIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICAgIC8vIEhpZGUgdGhlIGZha2UgaW5wdXRcclxuICAgICAgdGhpcy5mYWtlSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnY2RrLXZpc3VhbGx5LWhpZGRlbicpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEZvY3VzIG9uIGZpcnN0IGJ1dHRvblxyXG4gICAgdGhpcy5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uQmx1cklucHV0KGV2ZW50OiBGb2N1c0V2ZW50KSB7XHJcbiAgICBjb25zdCByZWxhdGVkVGFyZ2V0ID0gZXZlbnQucmVsYXRlZFRhcmdldCB8fCBldmVudC50YXJnZXQ7XHJcbiAgICBjb25zdCBpbnRlcm5hbEV2ZW50ID0gdGhpcy5pbnB1dHNFbGVtZW50cy5zb21lKChlbCkgPT4gZWwgPT09IHJlbGF0ZWRUYXJnZXQpO1xyXG4gICAgaWYgKCFpbnRlcm5hbEV2ZW50ICYmIHRoaXMuX2ZvY3VzZWQpIHtcclxuICAgICAgdGhpcy5fZm9jdXNlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnVwZGF0ZUZha2VJbnB1dCgpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVRhYkluZGV4KCk7XHJcbiAgICAgIHRoaXMuYmx1cnJlZC5lbWl0KGV2ZW50KTtcclxuXHJcbiAgICAgIHRoaXMuX2NoZWNrSWZUb3VjaGVkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb2N1cygpIHtcclxuICAgIGlmICh0aGlzLl9mb2N1c2VkKSByZXR1cm47IC8vIEFscmVhZHkgZm9jdXNlZFxyXG5cclxuICAgIHRoaXMuX2ZvY3VzZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVGYWtlSW5wdXQoKTtcclxuICAgICAgdGhpcy51cGRhdGVUYWJJbmRleCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb25SYWRpb1ZhbHVlQ2hhbmdlZChldmVudDogTWF0UmFkaW9DaGFuZ2UpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl93cml0aW5nKSByZXR1cm47IC8vIFNraXAgaWYgY2FsbCBieSBzZWxmXHJcbiAgICB0aGlzLl93cml0aW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuZW1pdENoYW5nZShldmVudC52YWx1ZSk7XHJcbiAgICB0aGlzLl93cml0aW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb25DaGVja2JveFZhbHVlQ2hhbmdlZChldmVudDogTWF0Q2hlY2tib3hDaGFuZ2UpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl93cml0aW5nKSByZXR1cm47IC8vIFNraXAgaWYgY2FsbCBieSBzZWxmXHJcbiAgICB0aGlzLl93cml0aW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuZW1pdENoYW5nZShldmVudC5jaGVja2VkKTtcclxuICAgIHRoaXMuX3dyaXRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVWYWx1ZShldmVudD86IEV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5fd3JpdGluZykgcmV0dXJuOyAvLyBTa2lwIGlmIGNhbGwgYnkgc2VsZlxyXG4gICAgdGhpcy5fd3JpdGluZyA9IHRydWU7XHJcbiAgICB0aGlzLl92YWx1ZSA9ICF0aGlzLl92YWx1ZTtcclxuICAgIGlmICh0aGlzLnllc1JhZGlvQnV0dG9uKSB7XHJcbiAgICAgIHRoaXMueWVzUmFkaW9CdXR0b24uY2hlY2tlZCA9IHRoaXMuX3ZhbHVlO1xyXG4gICAgICB0aGlzLm5vUmFkaW9CdXR0b24uY2hlY2tlZCA9ICF0aGlzLl92YWx1ZTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jaGVja2JveEJ1dHRvbikge1xyXG4gICAgICB0aGlzLmNoZWNrYm94QnV0dG9uLmNoZWNrZWQgPSB0aGlzLl92YWx1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuX2NoZWNrSWZUb3VjaGVkKCk7XHJcbiAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKHRoaXMuX3ZhbHVlKTtcclxuICAgIHRoaXMuX3dyaXRpbmcgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qIC0tIHByaXZhdGUgbWV0aG9kIC0tICovXHJcblxyXG4gIHByaXZhdGUgZW1pdENoYW5nZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgIT09IHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XHJcblxyXG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcblxyXG4gICAgICAvLyBDaGFuZ2VzIGNvbWVzIGZyb20gaW5zaWRlIGZ1bmN0aW9uOiB1c2UgdGhlIGNhbGxiYWNrXHJcbiAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sodmFsdWUpO1xyXG5cclxuICAgICAgLy8gQ2hlY2sgaWYgbmVlZCB0byB1cGRhdGUgY29udHJvbHNcclxuICAgICAgdGhpcy5fY2hlY2tJZlRvdWNoZWQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NoZWNrSWZUb3VjaGVkKCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wudG91Y2hlZCkge1xyXG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB0aGlzLl9vblRvdWNoZWRDYWxsYmFjaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2hvdy9IaWRlIHRoZSBmYWtlIGlucHV0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1cGRhdGVGYWtlSW5wdXQoKSB7XHJcbiAgICBpZiAodGhpcy5zaG93UmFkaW8gfHwgdGhpcy5zdHlsZSA9PT0gJ2J1dHRvbicpIHtcclxuICAgICAgdGhpcy5mYWtlSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnY2RrLXZpc3VhbGx5LWhpZGRlbicpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mYWtlSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnY2RrLXZpc3VhbGx5LWhpZGRlbicpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGlzIGlzIGEgc3BlY2lhbCBjYXNlLCBiZWNhdXNlLCB0aGlzIGNvbXBvbmVudCBoYXMgYSB0ZW1wb3JhcnkgY29tcG9uZW50IGRpc3BsYXllZCBiZWZvcmUgdGhlIGZpcnN0IGZvY3VzIGV2ZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1cGRhdGVUYWJJbmRleCgpIHtcclxuICAgIGlmIChpc05pbCh0aGlzLl90YWJpbmRleCkpIHJldHVybjtcclxuXHJcbiAgICBpZiAodGhpcy5mYWtlSW5wdXQpIHtcclxuICAgICAgdGhpcy5mYWtlSW5wdXQubmF0aXZlRWxlbWVudC50YWJJbmRleCA9IHRoaXMuX3RhYmluZGV4O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1hcmtGb3JDaGVjaygpIHtcclxuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBjbGVhclZhbHVlKGV2ZW50PzogRXZlbnQpIHtcclxuICAgIHRoaXMud3JpdGVWYWx1ZShudWxsKTtcclxuICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgcmFkaW9CdXR0b25FbGVtZW50cygpOiBIVE1MRWxlbWVudFtdIHtcclxuICAgIHJldHVybiB0aGlzLnllc1JhZGlvQnV0dG9uID8gW3RoaXMueWVzUmFkaW9CdXR0b24sIHRoaXMubm9SYWRpb0J1dHRvbl0ubWFwKChiKSA9PiBiLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudCkgOiBbXTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgaW5wdXRzRWxlbWVudHMoKTogSFRNTEVsZW1lbnRbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5yYWRpb0J1dHRvbkVsZW1lbnRzXHJcbiAgICAgIC5jb25jYXQodGhpcy5jaGVja2JveEJ1dHRvbiA/IFt0aGlzLmNoZWNrYm94QnV0dG9uLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudF0gOiBbXSlcclxuICAgICAgLmNvbmNhdCh0aGlzLmZha2VJbnB1dCA/IFt0aGlzLmZha2VJbnB1dC5uYXRpdmVFbGVtZW50XSA6IFtdKTtcclxuICB9XHJcbn1cclxuIiwiQGlmIChyZWFkb25seSkge1xuICA8bWF0LWZvcm0tZmllbGRcbiAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsIHwgYXNGbG9hdExhYmVsVHlwZVwiXG4gICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXG4gICAgW3N1YnNjcmlwdFNpemluZ109XCJzdWJzY3JpcHRTaXppbmdcIlxuICAgIGNsYXNzPVwibWF0LWZvcm0tZmllbGQtZGlzYWJsZWQge3sgY2xhc3NMaXN0IH19XCJcbiAgPlxuICAgIEBpZiAoZmxvYXRMYWJlbCAhPT0gJ25ldmVyJyAmJiAhIXBsYWNlaG9sZGVyKSB7XG4gICAgICA8bWF0LWxhYmVsPnt7IHBsYWNlaG9sZGVyIH19PC9tYXQtbGFiZWw+XG4gICAgfVxuICAgIDxkaXYgbWF0UHJlZml4PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hdFByZWZpeFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGlucHV0IG1hdElucHV0IGhpZGRlbiB0eXBlPVwidGV4dFwiIHJlYWRvbmx5IFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiIC8+XG4gICAgPGlvbi10ZXh0PlxuICAgICAge3sgKHZhbHVlID09PSBudWxsID8gJ0NPTU1PTi5FTVBUWV9PUFRJT04nIDogdmFsdWUgPT09IHRydWUgPyB5ZXNMYWJlbCA6IG5vTGFiZWwpIHwgdHJhbnNsYXRlIH19XG4gICAgPC9pb24tdGV4dD5cbiAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRTdWZmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L21hdC1mb3JtLWZpZWxkPlxufSBAZWxzZSB7XG4gIEBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgPCEtLSBSYWRpbyAtLT5cbiAgICBAY2FzZSAoJ3JhZGlvJykge1xuICAgICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICAgIFtmbG9hdExhYmVsXT1cInNob3dSYWRpbyAmJiAoIWZsb2F0TGFiZWwgfHwgZmxvYXRMYWJlbCA9PT0gJ2F1dG8nKSA/ICdhbHdheXMnIDogKGZsb2F0TGFiZWwgfCBhc0Zsb2F0TGFiZWxUeXBlKVwiXG4gICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgICBbc3Vic2NyaXB0U2l6aW5nXT1cInN1YnNjcmlwdFNpemluZ1wiXG4gICAgICAgIGNsYXNzPVwibWF0LWJvb2xlYW4tZmllbGQgbWF0LWJvb2xlYW4tZmllbGQtcmFkaW8ge3sgY2xhc3NMaXN0IH19XCJcbiAgICAgID5cbiAgICAgICAgQGlmIChmbG9hdExhYmVsICE9PSAnbmV2ZXInICYmICEhcGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICA8bWF0LWxhYmVsIFt0aXRsZV09XCJwbGFjZWhvbGRlclwiPlxuICAgICAgICAgICAge3sgcGxhY2Vob2xkZXIgfX1cbiAgICAgICAgICAgIDxzcGFuIFtjbGFzcy5jZGstdmlzdWFsbHktaGlkZGVuXT1cInNob3dSYWRpb1wiPih7eyB5ZXNMYWJlbCB8IHRyYW5zbGF0ZSB9fS97eyBub0xhYmVsIHwgdHJhbnNsYXRlIH19KTwvc3Bhbj5cbiAgICAgICAgICA8L21hdC1sYWJlbD5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2IG1hdFByZWZpeD5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0UHJlZml4VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgI2Zha2VJbnB1dFxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICByZWFkb25seT1cInRydWVcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXNGYWtlSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgKGJsdXIpPVwib25CbHVySW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwidG9nZ2xlVmFsdWUoJGV2ZW50KVwiXG4gICAgICAgICAgKGtleXVwLmFycm93TGVmdCk9XCJ0b2dnbGVWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgICAoa2V5dXAuYXJyb3dSaWdodCk9XCJ0b2dnbGVWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgICAoa2V5dXAuYXJyb3dVcCk9XCJ0b2dnbGVWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgICAoa2V5dXAuYXJyb3dEb3duKT1cInRvZ2dsZVZhbHVlKCRldmVudClcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgW2FwcEF1dG9mb2N1c109XCJhdXRvZm9jdXNcIlxuICAgICAgICAgIFtjbGFzcy5jZGstdmlzdWFsbHktaGlkZGVuXT1cInNob3dSYWRpb1wiXG4gICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgLz5cblxuICAgICAgICA8IS0tIHJhZGlvIGJ1dHRvbiAtLT5cbiAgICAgICAgPG1hdC1yYWRpby1ncm91cFxuICAgICAgICAgIFtjbGFzcy5jZGstdmlzdWFsbHktaGlkZGVuXT1cIiFzaG93UmFkaW9cIlxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvblJhZGlvVmFsdWVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgIChibHVyKT1cIm9uQmx1cklucHV0KCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gI3llc1JhZGlvQnV0dG9uIFt2YWx1ZV09XCJ0cnVlXCIgdGFiSW5kZXg9XCItMVwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgeWVzTGFiZWwgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICZuYnNwO1xuICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uICNub1JhZGlvQnV0dG9uIFt2YWx1ZV09XCJmYWxzZVwiIHRhYkluZGV4PVwiLTFcIj5cbiAgICAgICAgICAgIDxzcGFuPnt7IG5vTGFiZWwgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICA8L21hdC1yYWRpby1ncm91cD5cblxuICAgICAgICBAaWYgKGZvcm1Db250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpKSB7XG4gICAgICAgICAgPG1hdC1lcnJvciB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRUQ8L21hdC1lcnJvcj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoY2xlYXJhYmxlKSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbWF0U3VmZml4XG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtoaWRkZW5dPVwiX3ZhbHVlIHwgaXNOaWxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cblxuICAgICAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0U3VmZml4VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIH1cblxuICAgIDwhLS0gQ2hlY2tib3ggLS0+XG4gICAgQGNhc2UgKCdjaGVja2JveCcpIHtcbiAgICAgIDxtYXQtZm9ybS1maWVsZFxuICAgICAgICBbZmxvYXRMYWJlbF09XCIhZmxvYXRMYWJlbCB8fCBmbG9hdExhYmVsID09PSAnYXV0bycgPyAnYWx3YXlzJyA6IChmbG9hdExhYmVsIHwgYXNGbG9hdExhYmVsVHlwZSlcIlxuICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICAgICAgY2xhc3M9XCJtYXQtYm9vbGVhbi1maWVsZCBtYXQtYm9vbGVhbi1maWVsZC1jaGVja2JveCB7eyBjbGFzc0xpc3QgfX1cIlxuICAgICAgPlxuICAgICAgICA8ZGl2IG1hdFByZWZpeD5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0UHJlZml4VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBBZGQgYSBlbXB0eSBsYWJlbCwgZm9yIGxheW91dCBhbGlnbm1lbnQgLS0+XG4gICAgICAgIEBpZiAoZmxvYXRMYWJlbCAhPT0gJ25ldmVyJyAmJiAhIXBsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgPG1hdC1sYWJlbD4mbmJzcDs8L21hdC1sYWJlbD5cbiAgICAgICAgfVxuXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgI2Zha2VJbnB1dFxuICAgICAgICAgIHJlYWRvbmx5PVwidHJ1ZVwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgIFtjbGFzcy5jZGstdmlzdWFsbHktaGlkZGVuXT1cInNob3dSYWRpb1wiXG4gICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgICBbYXBwQXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXNGYWtlSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwidG9nZ2xlVmFsdWUoJGV2ZW50KVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPCEtLSBjaGVja2JveCwgd2hlbiBjb21wYWN0IC0tPlxuICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgI2NoZWNrYm94QnV0dG9uXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJ2YWx1ZSB8IGlzTmlsXCJcbiAgICAgICAgICBbY2xhc3MuY2RrLXZpc3VhbGx5LWhpZGRlbl09XCIhc2hvd1JhZGlvXCJcbiAgICAgICAgICBbbGFiZWxQb3NpdGlvbl09XCJsYWJlbFBvc2l0aW9uXCJcbiAgICAgICAgICBbdGl0bGVdPVwicGxhY2Vob2xkZXIgfHwgJydcIlxuICAgICAgICAgIFt0YWJJbmRleF09XCItMVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvbkNoZWNrYm94VmFsdWVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgIChibHVyKT1cIm9uQmx1cklucHV0KCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgQGlmIChmbG9hdExhYmVsICE9PSAnbmV2ZXInICYmICEhcGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgIHt7IHBsYWNlaG9sZGVyIHx8ICcnIH19XG4gICAgICAgICAgfVxuICAgICAgICA8L21hdC1jaGVja2JveD5cblxuICAgICAgICBAaWYgKGZvcm1Db250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpKSB7XG4gICAgICAgICAgPG1hdC1lcnJvciB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRUQ8L21hdC1lcnJvcj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoY2xlYXJhYmxlKSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbWF0U3VmZml4XG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtoaWRkZW5dPVwiX3ZhbHVlIHwgaXNOaWxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cblxuICAgICAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0U3VmZml4VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIH1cblxuICAgIDwhLS0gQnV0dG9ucyAtLT5cbiAgICBAY2FzZSAoJ2J1dHRvbicpIHtcbiAgICAgIDxtYXQtZm9ybS1maWVsZFxuICAgICAgICBbZmxvYXRMYWJlbF09XCIhZmxvYXRMYWJlbCB8fCBmbG9hdExhYmVsID09PSAnYXV0bycgPyAnYWx3YXlzJyA6IChmbG9hdExhYmVsIHwgYXNGbG9hdExhYmVsVHlwZSlcIlxuICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICAgICAgW3N1YnNjcmlwdFNpemluZ109XCJzdWJzY3JpcHRTaXppbmdcIlxuICAgICAgICBjbGFzcz1cIm1hdC1ib29sZWFuLWZpZWxkIG1hdC1ib29sZWFuLWZpZWxkLWJ1dHRvbiB7eyBjbGFzc0xpc3QgfX1cIlxuICAgICAgPlxuICAgICAgICA8ZGl2IG1hdFByZWZpeD5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0UHJlZml4VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgQGlmIChmbG9hdExhYmVsICE9PSAnbmV2ZXInICYmICEhcGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICA8bWF0LWxhYmVsIFt0aXRsZV09XCJwbGFjZWhvbGRlclwiPnt7IHBsYWNlaG9sZGVyIH19PC9tYXQtbGFiZWw+XG4gICAgICAgIH1cblxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAjZmFrZUlucHV0XG4gICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgY2xhc3M9XCJjZGstdmlzdWFsbHktaGlkZGVuXCJcbiAgICAgICAgICByZWFkb25seT1cInRydWVcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgICAgW2FwcEF1dG9mb2N1c109XCJhdXRvZm9jdXNcIlxuICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzRmFrZUlucHV0KCRldmVudClcIlxuICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cInRvZ2dsZVZhbHVlKCRldmVudClcIlxuICAgICAgICAgIChrZXl1cC5hcnJvd0xlZnQpPVwidG9nZ2xlVmFsdWUoJGV2ZW50KVwiXG4gICAgICAgICAgKGtleXVwLmFycm93UmlnaHQpPVwidG9nZ2xlVmFsdWUoJGV2ZW50KVwiXG4gICAgICAgICAgKGtleXVwLmFycm93VXApPVwidG9nZ2xlVmFsdWUoJGV2ZW50KVwiXG4gICAgICAgICAgKGtleXVwLmFycm93RG93bik9XCJ0b2dnbGVWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgIFt0YWJpbmRleF09XCJfdGFiaW5kZXhcIlxuICAgICAgICAvPlxuICAgICAgICBAaWYgKGZvcm1Db250cm9sLmRpc2FibGVkKSB7XG4gICAgICAgICAgPGlvbi10ZXh0PlxuICAgICAgICAgICAge3sgKHZhbHVlID09PSBudWxsID8gJ0NPTU1PTi5FTVBUWV9PUFRJT04nIDogdmFsdWUgPT09IHRydWUgPyB5ZXNMYWJlbCA6IG5vTGFiZWwpIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLWJ1dHRvbnNcIiBbc3R5bGUuLS1idXR0b25zLWNvbC1jb3VudF09XCJidXR0b25zQ29sQ291bnRcIj5cbiAgICAgICAgICAgIDwhLS0geWVzIC0tPlxuICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgI3llc0J1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkLWJ1dHRvblwiXG4gICAgICAgICAgICAgIFt0YWJJbmRleF09XCItMVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ3cml0ZVZhbHVlKHRydWUsICRldmVudClcIlxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwid3JpdGVWYWx1ZSh0cnVlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2NvbG9yXT1cIl92YWx1ZSA9PT0gbnVsbCA/ICd0ZXJ0aWFyeScgOiBfdmFsdWUgPT09IHRydWUgPyAnYWNjZW50JyA6ICdsaWdodCdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAaWYgKHNob3dCdXR0b25JY29ucyAmJiB5ZXNJY29uOyBhcyBpY29uKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIFtuYW1lXT1cImljb25cIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHt7IHllc0xhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG5cbiAgICAgICAgICAgIDwhLS0gTm8gYnV0dG9uIC0tPlxuICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgI25vQnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwibWF0LWZvcm0tZmllbGQtYnV0dG9uXCJcbiAgICAgICAgICAgICAgW3RhYkluZGV4XT1cIi0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIndyaXRlVmFsdWUoZmFsc2UsICRldmVudClcIlxuICAgICAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJ0b2dnbGVWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIndyaXRlVmFsdWUoZmFsc2UsICRldmVudClcIlxuICAgICAgICAgICAgICBbY29sb3JdPVwiX3ZhbHVlID09PSBudWxsID8gJ3RlcnRpYXJ5JyA6IF92YWx1ZSA9PT0gZmFsc2UgPyAnYWNjZW50JyA6ICdsaWdodCdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAaWYgKHNob3dCdXR0b25JY29ucyAmJiBub0ljb247IGFzIGljb24pIHtcbiAgICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgW25hbWVdPVwiaWNvblwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAge3sgbm9MYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChmb3JtQ29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKSkge1xuICAgICAgICAgIDxtYXQtZXJyb3IgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEPC9tYXQtZXJyb3I+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKGNsZWFyYWJsZSkge1xuICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICBtYXRTdWZmaXhcbiAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgY29sb3I9XCJtZWRpdW1cIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtjbGFzcy5jZGstdmlzdWFsbHktaGlkZGVuXT1cIl92YWx1ZSB8IGlzTmlsXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJjbG9zZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICB9XG5cbiAgICAgICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hdFN1ZmZpeFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICB9XG4gIH1cbn1cblxuPG5nLXRlbXBsYXRlICNtYXRQcmVmaXhUZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFByZWZpeF1cIj48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNtYXRTdWZmaXhUZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
371
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwuYm9vbGVhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2Jvb2xlYW4vbWF0ZXJpYWwuYm9vbGVhbi50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2Jvb2xlYW4vbWF0ZXJpYWwuYm9vbGVhbi5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQTRDLGlCQUFpQixFQUFzQixNQUFNLGdCQUFnQixDQUFDO0FBSWpILE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWxGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQUVwQyxNQUFNLHNCQUFzQixHQUFhO0lBQ3ZDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUM7SUFDOUMsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBRUYsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBVXRCLE1BQU0sT0FBTyxlQUFlO0lBd0ZoQjtJQUNZO0lBeEZkLGlCQUFpQixHQUFxQixJQUFJLENBQUM7SUFDM0Msa0JBQWtCLEdBQWUsSUFBSSxDQUFDO0lBQzdCLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQzVDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFZixNQUFNLENBQVU7SUFDaEIsU0FBUyxD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QixFQUFFO2dCQUNFLFFBQVE7c0JBQS9DLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsT0FBTztzQkFBOUMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxTQUFTO3NCQUFoRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUM3QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ3NDLGVBQWU7c0JBQTFELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUU7Z0JBRTFCLFNBQVM7c0JBQXhCLEtBQUs7dUJBQUMsT0FBTztnQkFDTCxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDa0MsZUFBZTtzQkFBdEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDN0IsT0FBTztzQkFBZixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDa0MsU0FBUztzQkFBaEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDN0IsYUFBYTtzQkFBckIsS0FBSztnQkFFMEMsUUFBUTtzQkFBdkQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRTtnQkFZdEMsU0FBUztzQkFEWixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQW9CbEMsS0FBSztzQkFEUixLQUFLO2dCQVlpQixVQUFVO3NCQUFoQyxNQUFNO3VCQUFDLGFBQWE7Z0JBRUosT0FBTztzQkFBdkIsTUFBTTt1QkFBQyxPQUFPO2dCQUVDLE9BQU87c0JBQXRCLE1BQU07dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUHJvdmlkZXIsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRBcHBlYXJhbmNlLCBTdWJzY3JpcHRTaXppbmcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtR3JvdXBEaXJlY3RpdmUsIE5HX1ZBTFVFX0FDQ0VTU09SLCBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRSYWRpb0J1dHRvbiwgTWF0UmFkaW9DaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9yYWRpbyc7XG5pbXBvcnQgeyBNYXRDaGVja2JveCwgTWF0Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBJbnB1dEVsZW1lbnQgfSBmcm9tICcuLi8uLi9pbnB1dHMnO1xuaW1wb3J0IHsgaXNOaWwsIGlzTm90TmlsLCBudW1iZXJPck5pbEF0dHJpYnV0ZSwgdG9OdW1iZXIgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgQXBwRmxvYXRMYWJlbFR5cGUgfSBmcm9tICcuLi8uLi9mb3JtL2ZpZWxkLm1vZGVsJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5jb25zdCBERUZBVUxUX1ZBTFVFX0FDQ0VTU09SOiBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1hdEJvb2xlYW5GaWVsZCksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdtYXQtYm9vbGVhbi1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXRlcmlhbC5ib29sZWFuLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYXRlcmlhbC5ib29sZWFuLnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbREVGQVVMVF9WQUxVRV9BQ0NFU1NPUl0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRCb29sZWFuRmllbGQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBJbnB1dEVsZW1lbnQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX29uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xuICBwcml2YXRlIF9vblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9IG5vb3A7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSBfd3JpdGluZyA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBfdmFsdWU6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBfdGFiaW5kZXg6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9zaG93UmFkaW8gPSBmYWxzZTsgLy8gV2lsbCBiZSBjaGFuZ2VkIHdoZW4gZm9jdXMgaW5cbiAgcHJvdGVjdGVkIF9mb2N1c2VkID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnZmFrZUlucHV0JykgZmFrZUlucHV0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCd5ZXNSYWRpb0J1dHRvbicpIHllc1JhZGlvQnV0dG9uOiBNYXRSYWRpb0J1dHRvbjtcbiAgQFZpZXdDaGlsZCgnbm9SYWRpb0J1dHRvbicpIG5vUmFkaW9CdXR0b246IE1hdFJhZGlvQnV0dG9uO1xuICBAVmlld0NoaWxkKCdjaGVja2JveEJ1dHRvbicpIGNoZWNrYm94QnV0dG9uOiBNYXRDaGVja2JveDtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgZm9ybUNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbDtcbiAgQElucHV0KCkgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZsb2F0TGFiZWw6IEFwcEZsb2F0TGFiZWxUeXBlID0gJ2F1dG8nO1xuICBASW5wdXQoKSBhcHBlYXJhbmNlOiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlO1xuICBASW5wdXQoKSBzdWJzY3JpcHRTaXppbmc6IFN1YnNjcmlwdFNpemluZztcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHJlYWRvbmx5ID0gZmFsc2U7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByZXF1aXJlZCA9IGZhbHNlO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgY29tcGFjdCA9IGZhbHNlO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYXV0b2ZvY3VzID0gZmFsc2U7XG4gIEBJbnB1dCgpIHN0eWxlOiAncmFkaW8nIHwgJ2NoZWNrYm94JyB8ICdidXR0b24nO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlck9yTmlsQXR0cmlidXRlIH0pIGJ1dHRvbnNDb2xDb3VudDogbnVtYmVyO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ2NsYXNzJykgY2xhc3NMaXN0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHllc0xhYmVsID0gJ0NPTU1PTi5ZRVMnO1xuICBASW5wdXQoKSBub0xhYmVsID0gJ0NPTU1PTi5OTyc7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG93QnV0dG9uSWNvbnMgPSB0cnVlO1xuICBASW5wdXQoKSB5ZXNJY29uID0gJ2NoZWNrbWFyayc7XG4gIEBJbnB1dCgpIG5vSWNvbiA9ICdjbG9zZSc7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBjbGVhcmFibGUgPSBmYWxzZTtcbiAgQElucHV0KCkgbGFiZWxQb3NpdGlvbjogJ2FmdGVyJyB8ICdiZWZvcmUnID0gJ2FmdGVyJztcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlck9yTmlsQXR0cmlidXRlIH0pIHNldCB0YWJpbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuX3RhYmluZGV4ICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5fdGFiaW5kZXggPSB2YWx1ZTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy51cGRhdGVUYWJJbmRleCgpKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdGFiaW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdGFiaW5kZXg7XG4gIH1cblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgc2V0IHNob3dSYWRpbyh2OiBhbnkpIHtcbiAgICBpZiAodiAhPT0gdGhpcy5fc2hvd1JhZGlvKSB7XG4gICAgICB0aGlzLl9zaG93UmFkaW8gPSB2O1xuICAgICAgdGhpcy51cGRhdGVGYWtlSW5wdXQoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2hvd1JhZGlvKCk6IGFueSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuX3Nob3dSYWRpbyB8fFxuICAgICAgdGhpcy5fZm9jdXNlZCB8fFxuICAgICAgdGhpcy5mbG9hdExhYmVsID09PSAnYWx3YXlzJyB8fFxuICAgICAgdGhpcy5mbG9hdExhYmVsID09PSAnbmV2ZXInIHx8XG4gICAgICB0aGlzLnN0eWxlID09PSAnY2hlY2tib3gnIHx8XG4gICAgICBpc05vdE5pbCh0aGlzLl92YWx1ZSlcbiAgICApO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHY6IGFueSkge1xuICAgIGlmICh2ICE9PSB0aGlzLl92YWx1ZSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB2O1xuICAgICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayh2KTtcbiAgICB9XG4gIH1cblxuICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4LEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtcmVuYW1lXG4gIEBPdXRwdXQoJ2tleXVwLmVudGVyJykga2V5dXBFbnRlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgQE91dHB1dCgnZm9jdXMnKSBmb2N1c2VkID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgQE91dHB1dCgnYmx1cicpIGJsdXJyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZvY3VzRXZlbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBmb3JtR3JvdXBEaXI6IEZvcm1Hcm91cERpcmVjdGl2ZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb3JtQ29udHJvbCA9XG4gICAgICB0aGlzLmZvcm1Db250cm9sIHx8ICh0aGlzLmZvcm1Db250cm9sTmFtZSAmJiB0aGlzLmZvcm1Hcm91cERpciAmJiAodGhpcy5mb3JtR3JvdXBEaXIuZm9ybS5nZXQodGhpcy5mb3JtQ29udHJvbE5hbWUpIGFzIFVudHlwZWRGb3JtQ29udHJvbCkpO1xuICAgIGlmICghdGhpcy5mb3JtQ29udHJvbCkgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyBtYW5kYXRvcnkgYXR0cmlidXRlICdmb3JtQ29udHJvbCcgb3IgJ2Zvcm1Db250cm9sTmFtZScgaW4gPG1hdC1ib29sZWFuLWZpZWxkPi5cIik7XG5cbiAgICB0aGlzLnN0eWxlID0gdGhpcy5zdHlsZSB8fCAodGhpcy5jb21wYWN0ID8gJ2NoZWNrYm94JyA6ICdyYWRpbycpO1xuXG4gICAgaWYgKHRoaXMuc3R5bGUgPT09ICdidXR0b24nKSB7XG4gICAgICB0aGlzLmJ1dHRvbnNDb2xDb3VudCA9IHRvTnVtYmVyKHRoaXMuYnV0dG9uc0NvbENvdW50LCAyKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKHRoaXMuZm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHRoaXMud3JpdGVWYWx1ZSh2YWx1ZSkpKTtcblxuICAgIHRoaXMudXBkYXRlRmFrZUlucHV0KCk7XG4gICAgdGhpcy51cGRhdGVUYWJJbmRleCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5ibHVycmVkLmNvbXBsZXRlKCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnksIGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fd3JpdGluZykgcmV0dXJuO1xuXG4gICAgLy8gREVCVUdcbiAgICAvL2NvbnNvbGUuZGVidWcoJ1ttYXQtYm9vbGVhbi1maWVsZF0gV3JpdGluZyB2YWx1ZScsIHZhbHVlKTtcblxuICAgIHRoaXMuX3dyaXRpbmcgPSB0cnVlO1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5fdmFsdWUgfHwgdmFsdWUgIT09IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG5cbiAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZSkge1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnBhdGNoVmFsdWUodmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayh2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnllc1JhZGlvQnV0dG9uKSB7XG4gICAgICAgIHRoaXMueWVzUmFkaW9CdXR0b24uY2hlY2tlZCA9IHZhbHVlID09PSB0cnVlO1xuICAgICAgICB0aGlzLm5vUmFkaW9CdXR0b24uY2hlY2tlZCA9IHZhbHVlID09PSBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGVja2JveEJ1dHRvbikge1xuICAgICAgICBpZiAoaXNOaWwodmFsdWUpKSB7XG4gICAgICAgICAgdGhpcy5jaGVja2JveEJ1dHRvbi5pbmRldGVybWluYXRlID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmNoZWNrYm94QnV0dG9uLmNoZWNrZWQgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVGYWtlSW5wdXQoKTtcbiAgICAgICAgdGhpcy51cGRhdGVUYWJJbmRleCgpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuX3dyaXRpbmcgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLnN0eWxlID09PSAnYnV0dG9uJykge1xuICAgICAgaWYgKGV2ZW50KSB0aGlzLmtleXVwRW50ZXIuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25Gb2N1c0Zha2VJbnB1dChldmVudDogRm9jdXNFdmVudCkge1xuICAgIGlmICghdGhpcy5zaG93UmFkaW8pIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgIC8vIEhpZGUgdGhlIGZha2UgaW5wdXRcbiAgICAgIHRoaXMuZmFrZUlucHV0Py5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2Nkay12aXN1YWxseS1oaWRkZW4nKTtcbiAgICB9XG5cbiAgICAvLyBGb2N1cyBvbiBmaXJzdCBidXR0b25cbiAgICB0aGlzLmZvY3VzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25CbHVySW5wdXQoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICBjb25zdCByZWxhdGVkVGFyZ2V0ID0gZXZlbnQucmVsYXRlZFRhcmdldCB8fCBldmVudC50YXJnZXQ7XG4gICAgY29uc3QgaW50ZXJuYWxFdmVudCA9IHRoaXMuaW5wdXRzRWxlbWVudHMuc29tZSgoZWwpID0+IGVsID09PSByZWxhdGVkVGFyZ2V0KTtcbiAgICBpZiAoIWludGVybmFsRXZlbnQgJiYgdGhpcy5fZm9jdXNlZCkge1xuICAgICAgdGhpcy5fZm9jdXNlZCA9IGZhbHNlO1xuICAgICAgdGhpcy51cGRhdGVGYWtlSW5wdXQoKTtcbiAgICAgIHRoaXMudXBkYXRlVGFiSW5kZXgoKTtcbiAgICAgIHRoaXMuYmx1cnJlZC5lbWl0KGV2ZW50KTtcblxuICAgICAgdGhpcy5fY2hlY2tJZlRvdWNoZWQoKTtcbiAgICB9XG4gIH1cblxuICBmb2N1cygpIHtcbiAgICBpZiAodGhpcy5fZm9jdXNlZCkgcmV0dXJuOyAvLyBBbHJlYWR5IGZvY3VzZWRcblxuICAgIHRoaXMuX2ZvY3VzZWQgPSB0cnVlO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlRmFrZUlucHV0KCk7XG4gICAgICB0aGlzLnVwZGF0ZVRhYkluZGV4KCk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25SYWRpb1ZhbHVlQ2hhbmdlZChldmVudDogTWF0UmFkaW9DaGFuZ2UpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fd3JpdGluZykgcmV0dXJuOyAvLyBTa2lwIGlmIGNhbGwgYnkgc2VsZlxuICAgIHRoaXMuX3dyaXRpbmcgPSB0cnVlO1xuICAgIHRoaXMuZW1pdENoYW5nZShldmVudC52YWx1ZSk7XG4gICAgdGhpcy5fd3JpdGluZyA9IGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2hlY2tib3hWYWx1ZUNoYW5nZWQoZXZlbnQ6IE1hdENoZWNrYm94Q2hhbmdlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3dyaXRpbmcpIHJldHVybjsgLy8gU2tpcCBpZiBjYWxsIGJ5IHNlbGZcbiAgICB0aGlzLl93cml0aW5nID0gdHJ1ZTtcbiAgICB0aGlzLmVtaXRDaGFuZ2UoZXZlbnQuY2hlY2tlZCk7XG4gICAgdGhpcy5fd3JpdGluZyA9IGZhbHNlO1xuXG4gICAgdGhpcy5mb2N1cygpO1xuICB9XG5cbiAgdG9nZ2xlVmFsdWUoZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgaWYgKHRoaXMuX3dyaXRpbmcpIHJldHVybjsgLy8gU2tpcCBpZiBjYWxsIGJ5IHNlbGZcbiAgICB0aGlzLl93cml0aW5nID0gdHJ1ZTtcbiAgICB0aGlzLl92YWx1ZSA9ICF0aGlzLl92YWx1ZTtcbiAgICBpZiAodGhpcy55ZXNSYWRpb0J1dHRvbikge1xuICAgICAgdGhpcy55ZXNSYWRpb0J1dHRvbi5jaGVja2VkID0gdGhpcy5fdmFsdWU7XG4gICAgICB0aGlzLm5vUmFkaW9CdXR0b24uY2hlY2tlZCA9ICF0aGlzLl92YWx1ZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY2hlY2tib3hCdXR0b24pIHtcbiAgICAgIHRoaXMuY2hlY2tib3hCdXR0b24uY2hlY2tlZCA9IHRoaXMuX3ZhbHVlO1xuICAgIH1cbiAgICB0aGlzLl9jaGVja0lmVG91Y2hlZCgpO1xuICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sodGhpcy5fdmFsdWUpO1xuICAgIHRoaXMuX3dyaXRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIC8qIC0tIHByaXZhdGUgbWV0aG9kIC0tICovXG5cbiAgcHJpdmF0ZSBlbWl0Q2hhbmdlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuXG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG5cbiAgICAgIC8vIENoYW5nZXMgY29tZXMgZnJvbSBpbnNpZGUgZnVuY3Rpb246IHVzZSB0aGUgY2FsbGJhY2tcbiAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sodmFsdWUpO1xuXG4gICAgICAvLyBDaGVjayBpZiBuZWVkIHRvIHVwZGF0ZSBjb250cm9sc1xuICAgICAgdGhpcy5fY2hlY2tJZlRvdWNoZWQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0lmVG91Y2hlZCgpIHtcbiAgICBpZiAodGhpcy5mb3JtQ29udHJvbC50b3VjaGVkKSB7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy5fb25Ub3VjaGVkQ2FsbGJhY2soKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2hvdy9IaWRlIHRoZSBmYWtlIGlucHV0XG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZUZha2VJbnB1dCgpIHtcbiAgICBpZiAodGhpcy5zaG93UmFkaW8gfHwgdGhpcy5zdHlsZSA9PT0gJ2J1dHRvbicpIHtcbiAgICAgIHRoaXMuZmFrZUlucHV0Py5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2Nkay12aXN1YWxseS1oaWRkZW4nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mYWtlSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnY2RrLXZpc3VhbGx5LWhpZGRlbicpO1xuICAgIH1cblxuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBpcyBhIHNwZWNpYWwgY2FzZSwgYmVjYXVzZSwgdGhpcyBjb21wb25lbnQgaGFzIGEgdGVtcG9yYXJ5IGNvbXBvbmVudCBkaXNwbGF5ZWQgYmVmb3JlIHRoZSBmaXJzdCBmb2N1cyBldmVudFxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVUYWJJbmRleCgpIHtcbiAgICBpZiAoaXNOaWwodGhpcy5fdGFiaW5kZXgpKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5mYWtlSW5wdXQpIHtcbiAgICAgIHRoaXMuZmFrZUlucHV0Lm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPSB0aGlzLl90YWJpbmRleDtcbiAgICB9XG5cbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGNsZWFyVmFsdWUoZXZlbnQ/OiBFdmVudCkge1xuICAgIHRoaXMud3JpdGVWYWx1ZShudWxsKTtcbiAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHJhZGlvQnV0dG9uRWxlbWVudHMoKTogSFRNTEVsZW1lbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMueWVzUmFkaW9CdXR0b24gPyBbdGhpcy55ZXNSYWRpb0J1dHRvbiwgdGhpcy5ub1JhZGlvQnV0dG9uXS5tYXAoKGIpID0+IGIuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50KSA6IFtdO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBpbnB1dHNFbGVtZW50cygpOiBIVE1MRWxlbWVudFtdIHtcbiAgICByZXR1cm4gdGhpcy5yYWRpb0J1dHRvbkVsZW1lbnRzXG4gICAgICAuY29uY2F0KHRoaXMuY2hlY2tib3hCdXR0b24gPyBbdGhpcy5jaGVja2JveEJ1dHRvbi5faW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnRdIDogW10pXG4gICAgICAuY29uY2F0KHRoaXMuZmFrZUlucHV0ID8gW3RoaXMuZmFrZUlucHV0Lm5hdGl2ZUVsZW1lbnRdIDogW10pO1xuICB9XG59XG4iLCJAaWYgKHJlYWRvbmx5KSB7XG4gIDxtYXQtZm9ybS1maWVsZFxuICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWwgfCBhc0Zsb2F0TGFiZWxUeXBlXCJcbiAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICBbc3Vic2NyaXB0U2l6aW5nXT1cInN1YnNjcmlwdFNpemluZ1wiXG4gICAgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1kaXNhYmxlZCB7eyBjbGFzc0xpc3QgfX1cIlxuICA+XG4gICAgQGlmIChmbG9hdExhYmVsICE9PSAnbmV2ZXInICYmICEhcGxhY2Vob2xkZXIpIHtcbiAgICAgIDxtYXQtbGFiZWw+e3sgcGxhY2Vob2xkZXIgfX08L21hdC1sYWJlbD5cbiAgICB9XG4gICAgPGRpdiBtYXRQcmVmaXg+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0UHJlZml4VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8aW5wdXQgbWF0SW5wdXQgaGlkZGVuIHR5cGU9XCJ0ZXh0XCIgcmVhZG9ubHkgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCIgLz5cbiAgICA8aW9uLXRleHQ+XG4gICAgICB7eyAodmFsdWUgPT09IG51bGwgPyAnQ09NTU9OLkVNUFRZX09QVElPTicgOiB2YWx1ZSA9PT0gdHJ1ZSA/IHllc0xhYmVsIDogbm9MYWJlbCkgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2lvbi10ZXh0PlxuICAgIDxkaXYgbWF0U3VmZml4PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hdFN1ZmZpeFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG59IEBlbHNlIHtcbiAgQHN3aXRjaCAoc3R5bGUpIHtcbiAgICA8IS0tIFJhZGlvIC0tPlxuICAgIEBjYXNlICgncmFkaW8nKSB7XG4gICAgICA8bWF0LWZvcm0tZmllbGRcbiAgICAgICAgW2Zsb2F0TGFiZWxdPVwic2hvd1JhZGlvICYmICghZmxvYXRMYWJlbCB8fCBmbG9hdExhYmVsID09PSAnYXV0bycpID8gJ2Fsd2F5cycgOiAoZmxvYXRMYWJlbCB8IGFzRmxvYXRMYWJlbFR5cGUpXCJcbiAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXG4gICAgICAgIFtzdWJzY3JpcHRTaXppbmddPVwic3Vic2NyaXB0U2l6aW5nXCJcbiAgICAgICAgY2xhc3M9XCJtYXQtYm9vbGVhbi1maWVsZCBtYXQtYm9vbGVhbi1maWVsZC1yYWRpbyB7eyBjbGFzc0xpc3QgfX1cIlxuICAgICAgPlxuICAgICAgICBAaWYgKGZsb2F0TGFiZWwgIT09ICduZXZlcicgJiYgISFwbGFjZWhvbGRlcikge1xuICAgICAgICAgIDxtYXQtbGFiZWwgW3RpdGxlXT1cInBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgICB7eyBwbGFjZWhvbGRlciB9fVxuICAgICAgICAgICAgPHNwYW4gW2NsYXNzLmNkay12aXN1YWxseS1oaWRkZW5dPVwic2hvd1JhZGlvXCI+KHt7IHllc0xhYmVsIHwgdHJhbnNsYXRlIH19L3t7IG5vTGFiZWwgfCB0cmFuc2xhdGUgfX0pPC9zcGFuPlxuICAgICAgICAgIDwvbWF0LWxhYmVsPlxuICAgICAgICB9XG4gICAgICAgIDxkaXYgbWF0UHJlZml4PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRQcmVmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAjZmFrZUlucHV0XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIHJlYWRvbmx5PVwidHJ1ZVwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1c0Zha2VJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAoYmx1cik9XCJvbkJsdXJJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJ0b2dnbGVWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgICAoa2V5dXAuYXJyb3dMZWZ0KT1cInRvZ2dsZVZhbHVlKCRldmVudClcIlxuICAgICAgICAgIChrZXl1cC5hcnJvd1JpZ2h0KT1cInRvZ2dsZVZhbHVlKCRldmVudClcIlxuICAgICAgICAgIChrZXl1cC5hcnJvd1VwKT1cInRvZ2dsZVZhbHVlKCRldmVudClcIlxuICAgICAgICAgIChrZXl1cC5hcnJvd0Rvd24pPVwidG9nZ2xlVmFsdWUoJGV2ZW50KVwiXG4gICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICBbYXBwQXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgICAgW2NsYXNzLmNkay12aXN1YWxseS1oaWRkZW5dPVwic2hvd1JhZGlvXCJcbiAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDwhLS0gcmFkaW8gYnV0dG9uIC0tPlxuICAgICAgICA8bWF0LXJhZGlvLWdyb3VwXG4gICAgICAgICAgW2NsYXNzLmNkay12aXN1YWxseS1oaWRkZW5dPVwiIXNob3dSYWRpb1wiXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAoY2hhbmdlKT1cIm9uUmFkaW9WYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgKGJsdXIpPVwib25CbHVySW5wdXQoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiAjeWVzUmFkaW9CdXR0b24gW3ZhbHVlXT1cInRydWVcIiB0YWJJbmRleD1cIi0xXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyB5ZXNMYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L21hdC1yYWRpby1idXR0b24+XG4gICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gI25vUmFkaW9CdXR0b24gW3ZhbHVlXT1cImZhbHNlXCIgdGFiSW5kZXg9XCItMVwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgbm9MYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L21hdC1yYWRpby1idXR0b24+XG4gICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxuXG4gICAgICAgIEBpZiAoZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcbiAgICAgICAgICA8bWF0LWVycm9yIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChjbGVhcmFibGUpIHtcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBtYXRTdWZmaXhcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGVhclZhbHVlKCRldmVudClcIlxuICAgICAgICAgICAgW2hpZGRlbl09XCJfdmFsdWUgfCBpc05pbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxkaXYgbWF0U3VmZml4PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRTdWZmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgfVxuXG4gICAgPCEtLSBDaGVja2JveCAtLT5cbiAgICBAY2FzZSAoJ2NoZWNrYm94Jykge1xuICAgICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICAgIFtmbG9hdExhYmVsXT1cIiFmbG9hdExhYmVsIHx8IGZsb2F0TGFiZWwgPT09ICdhdXRvJyA/ICdhbHdheXMnIDogKGZsb2F0TGFiZWwgfCBhc0Zsb2F0TGFiZWxUeXBlKVwiXG4gICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgICBjbGFzcz1cIm1hdC1ib29sZWFuLWZpZWxkIG1hdC1ib29sZWFuLWZpZWxkLWNoZWNrYm94IHt7IGNsYXNzTGlzdCB9fVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgbWF0UHJlZml4PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRQcmVmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIEFkZCBhIGVtcHR5IGxhYmVsLCBmb3IgbGF5b3V0IGFsaWdubWVudCAtLT5cbiAgICAgICAgQGlmIChmbG9hdExhYmVsICE9PSAnbmV2ZXInICYmICEhcGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICA8bWF0LWxhYmVsPiZuYnNwOzwvbWF0LWxhYmVsPlxuICAgICAgICB9XG5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAjZmFrZUlucHV0XG4gICAgICAgICAgcmVhZG9ubHk9XCJ0cnVlXCJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgW2NsYXNzLmNkay12aXN1YWxseS1oaWRkZW5dPVwic2hvd1JhZGlvXCJcbiAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgIFthcHBBdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCJcbiAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1c0Zha2VJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJ0b2dnbGVWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8IS0tIGNoZWNrYm94LCB3aGVuIGNvbXBhY3QgLS0+XG4gICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAjY2hlY2tib3hCdXR0b25cbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInZhbHVlIHwgaXNOaWxcIlxuICAgICAgICAgIFtjbGFzcy5jZGstdmlzdWFsbHktaGlkZGVuXT1cIiFzaG93UmFkaW9cIlxuICAgICAgICAgIFtsYWJlbFBvc2l0aW9uXT1cImxhYmVsUG9zaXRpb25cIlxuICAgICAgICAgIFt0aXRsZV09XCJwbGFjZWhvbGRlciB8fCAnJ1wiXG4gICAgICAgICAgW3RhYkluZGV4XT1cIi0xXCJcbiAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hlY2tib3hWYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgKGJsdXIpPVwib25CbHVySW5wdXQoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYgKGZsb2F0TGFiZWwgIT09ICduZXZlcicgJiYgISFwbGFjZWhvbGRlcikge1xuICAgICAgICAgICAge3sgcGxhY2Vob2xkZXIgfHwgJycgfX1cbiAgICAgICAgICB9XG4gICAgICAgIDwvbWF0LWNoZWNrYm94PlxuXG4gICAgICAgIEBpZiAoZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcbiAgICAgICAgICA8bWF0LWVycm9yIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChjbGVhcmFibGUpIHtcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBtYXRTdWZmaXhcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGVhclZhbHVlKCRldmVudClcIlxuICAgICAgICAgICAgW2hpZGRlbl09XCJfdmFsdWUgfCBpc05pbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxkaXYgbWF0U3VmZml4PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRTdWZmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgfVxuXG4gICAgPCEtLSBCdXR0b25zIC0tPlxuICAgIEBjYXNlICgnYnV0dG9uJykge1xuICAgICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICAgIFtmbG9hdExhYmVsXT1cIiFmbG9hdExhYmVsIHx8IGZsb2F0TGFiZWwgPT09ICdhdXRvJyA/ICdhbHdheXMnIDogKGZsb2F0TGFiZWwgfCBhc0Zsb2F0TGFiZWxUeXBlKVwiXG4gICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgICBbc3Vic2NyaXB0U2l6aW5nXT1cInN1YnNjcmlwdFNpemluZ1wiXG4gICAgICAgIGNsYXNzPVwibWF0LWJvb2xlYW4tZmllbGQgbWF0LWJvb2xlYW4tZmllbGQtYnV0dG9uIHt7IGNsYXNzTGlzdCB9fVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgbWF0UHJlZml4PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRQcmVmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKGZsb2F0TGFiZWwgIT09ICduZXZlcicgJiYgISFwbGFjZWhvbGRlcikge1xuICAgICAgICAgIDxtYXQtbGFiZWwgW3RpdGxlXT1cInBsYWNlaG9sZGVyXCI+e3sgcGxhY2Vob2xkZXIgfX08L21hdC1sYWJlbD5cbiAgICAgICAgfVxuXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICNmYWtlSW5wdXRcbiAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBjbGFzcz1cImNkay12aXN1YWxseS1oaWRkZW5cIlxuICAgICAgICAgIHJlYWRvbmx5PVwidHJ1ZVwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICBbYXBwQXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXNGYWtlSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwidG9nZ2xlVmFsdWUoJGV2ZW50KVwiXG4gICAgICAgICAgKGtleXVwLmFycm93TGVmdCk9XCJ0b2dnbGVWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgICAoa2V5dXAuYXJyb3dSaWdodCk9XCJ0b2dnbGVWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgICAoa2V5dXAuYXJyb3dVcCk9XCJ0b2dnbGVWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgICAoa2V5dXAuYXJyb3dEb3duKT1cInRvZ2dsZVZhbHVlKCRldmVudClcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgW3RhYmluZGV4XT1cIl90YWJpbmRleFwiXG4gICAgICAgIC8+XG4gICAgICAgIEBpZiAoZm9ybUNvbnRyb2wuZGlzYWJsZWQpIHtcbiAgICAgICAgICA8aW9uLXRleHQ+XG4gICAgICAgICAgICB7eyAodmFsdWUgPT09IG51bGwgPyAnQ09NTU9OLkVNUFRZX09QVElPTicgOiB2YWx1ZSA9PT0gdHJ1ZSA/IHllc0xhYmVsIDogbm9MYWJlbCkgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWF0LWZvcm0tZmllbGQtYnV0dG9uc1wiIFtzdHlsZS4tLWJ1dHRvbnMtY29sLWNvdW50XT1cImJ1dHRvbnNDb2xDb3VudFwiPlxuICAgICAgICAgICAgPCEtLSB5ZXMgLS0+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICAjeWVzQnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwibWF0LWZvcm0tZmllbGQtYnV0dG9uXCJcbiAgICAgICAgICAgICAgW3RhYkluZGV4XT1cIi0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIndyaXRlVmFsdWUodHJ1ZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJ3cml0ZVZhbHVlKHRydWUsICRldmVudClcIlxuICAgICAgICAgICAgICBbY29sb3JdPVwiX3ZhbHVlID09PSBudWxsID8gJ3RlcnRpYXJ5JyA6IF92YWx1ZSA9PT0gdHJ1ZSA/ICdhY2NlbnQnIDogJ2xpZ2h0J1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEBpZiAoc2hvd0J1dHRvbkljb25zICYmIHllc0ljb247IGFzIGljb24pIHtcbiAgICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgW25hbWVdPVwiaWNvblwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAge3sgeWVzTGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgICAgICAgPCEtLSBObyBidXR0b24gLS0+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICAjbm9CdXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1idXR0b25cIlxuICAgICAgICAgICAgICBbdGFiSW5kZXhdPVwiLTFcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwid3JpdGVWYWx1ZShmYWxzZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cInRvZ2dsZVZhbHVlKCRldmVudClcIlxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwid3JpdGVWYWx1ZShmYWxzZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtjb2xvcl09XCJfdmFsdWUgPT09IG51bGwgPyAndGVydGlhcnknIDogX3ZhbHVlID09PSBmYWxzZSA/ICdhY2NlbnQnIDogJ2xpZ2h0J1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEBpZiAoc2hvd0J1dHRvbkljb25zICYmIG5vSWNvbjsgYXMgaWNvbikge1xuICAgICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiBbbmFtZV09XCJpY29uXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB7eyBub0xhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKGZvcm1Db250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpKSB7XG4gICAgICAgICAgPG1hdC1lcnJvciB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRUQ8L21hdC1lcnJvcj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoY2xlYXJhYmxlKSB7XG4gICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgIG1hdFN1ZmZpeFxuICAgICAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICBjb2xvcj1cIm1lZGl1bVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGVhclZhbHVlKCRldmVudClcIlxuICAgICAgICAgICAgW2NsYXNzLmNkay12aXN1YWxseS1oaWRkZW5dPVwiX3ZhbHVlIHwgaXNOaWxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImNsb3NlXCI+PC9pb24taWNvbj5cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIH1cblxuICAgICAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0U3VmZml4VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIH1cbiAgfVxufVxuXG48bmctdGVtcGxhdGUgI21hdFByZWZpeFRlbXBsYXRlPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0UHJlZml4XVwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI21hdFN1ZmZpeFRlbXBsYXRlPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0U3VmZml4XVwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|