@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
|
@@ -213,4 +213,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
213
213
|
}], autoHideDropArea: [{
|
|
214
214
|
type: Input
|
|
215
215
|
}] } });
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWZpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvdXBsb2FkLWZpbGUvdXBsb2FkLWZpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvdXBsb2FkLWZpbGUvdXBsb2FkLWZpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQWMsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hHLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUUsT0FBTyxFQUE4QixlQUFlLEVBQUUsZUFBZSxFQUFjLE1BQU0scUJBQXFCLENBQUM7QUFDL0csT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBa0IsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBT3pELE1BQU0sT0FBTyxtQkFBbUI7SUEyQmxCO0lBQ0E7SUEzQmlDLFVBQVUsQ0FBYTtJQUUzRCxhQUFhLENBQVM7SUFDdEIsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUNuQixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLFFBQVEsQ0FBb0I7SUFDNUIsUUFBUSxDQUFvQjtJQUM1QixpQkFBaUIsQ0FBUztJQUMxQixnQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFFbEMsS0FBSyxHQUFzQixFQUFFLENBQUM7SUFDOUIsU0FBUyxHQUFHLEtBQUssQ0FBQztJ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LGtZQ2JoQyxpbUVBeURBOzs0RkQ1Q2EsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGlCQUFpQjtxSEFLa0IsVUFBVTtzQkFBdEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVsQyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIGZpbmFsaXplLCBmaXJzdCwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBGaWxlRGVsZXRlRm4sIEZpbGVVcGxvYWRGbiwgaXNQcm9ncmVzc0V2ZW50LCBpc1Jlc3BvbnNlRXZlbnQsIFVwbG9hZEZpbGUgfSBmcm9tICcuL3VwbG9hZC1maWxlLm1vZGVsJztcclxuaW1wb3J0IHsgaXNOaWwsIGlzTm90TmlsIH0gZnJvbSAnLi4vZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgd2FpdEZvciwgV2FpdEZvck9wdGlvbnMgfSBmcm9tICcuLi9vYnNlcnZhYmxlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC11cGxvYWQtZmlsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VwbG9hZC1maWxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi91cGxvYWQtZmlsZS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXBsb2FkRmlsZUNvbXBvbmVudCB7XHJcbiAgQFZpZXdDaGlsZCgnZmlsZURyb3BSZWYnLCB7IHN0YXRpYzogZmFsc2UgfSkgZmlsZURyb3BFbDogRWxlbWVudFJlZjtcclxuXHJcbiAgQElucHV0KCkgZmlsZUV4dGVuc2lvbjogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHVuaXF1ZUZpbGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBpbnN0YW50VXBsb2FkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdXBsb2FkRm46IEZpbGVVcGxvYWRGbjxhbnk+O1xyXG4gIEBJbnB1dCgpIGRlbGV0ZUZuOiBGaWxlRGVsZXRlRm48YW55PjtcclxuICBASW5wdXQoKSBtYXhQYXJhbGxlbFVwbG9hZDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGF1dG9IaWRlRHJvcEFyZWEgPSBmYWxzZTtcclxuXHJcbiAgZmlsZXM6IFVwbG9hZEZpbGU8YW55PltdID0gW107XHJcbiAgdXBsb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gIGdldCBwcm9jZXNzaW5nRmlsZXMoKTogVXBsb2FkRmlsZTxhbnk+W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsZXMuZmlsdGVyKChmKSA9PiAhZi5kZWxldGluZyAmJiBpc05vdE5pbChmLnByb2dyZXNzKSAmJiBmLnByb2dyZXNzIDwgMSk7XHJcbiAgfVxyXG5cclxuICBnZXQgcHJvY2Vzc2VkRmlsZXMoKTogVXBsb2FkRmlsZTxhbnk+W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsZXMuZmlsdGVyKChmKSA9PiAhZi5kZWxldGluZyAmJiBmLnByb2dyZXNzID09PSAxKTtcclxuICB9XHJcblxyXG4gIGdldCBwcm9jZXNzaW5nRmlsZXNDb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMucHJvY2Vzc2luZ0ZpbGVzLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIG9uIGZpbGUgZHJvcCBoYW5kbGVyXHJcbiAgICovXHJcbiAgb25GaWxlRHJvcHBlZChldmVudCkge1xyXG4gICAgdGhpcy5wcmVwYXJlRmlsZXNMaXN0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGhhbmRsZSBmaWxlIGZyb20gYnJvd3NpbmdcclxuICAgKi9cclxuICBmaWxlQnJvd3NlSGFuZGxlcihmaWxlcykge1xyXG4gICAgdGhpcy5wcmVwYXJlRmlsZXNMaXN0KGZpbGVzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZSBmaWxlIGZyb20gZmlsZXMgbGlzdFxyXG4gICAqXHJcbiAgICogQHBhcmFtIGluZGV4IChGaWxlIGluZGV4KVxyXG4gICAqL1xyXG4gIGFzeW5jIGRlbGV0ZUZpbGUoaW5kZXg6IG51bWJlcikge1xyXG4gICAgY29uc3QgZmlsZSA9IHRoaXMuZmlsZXNbaW5kZXhdO1xyXG5cclxuICAgIGlmIChmaWxlLnByb2dyZXNzID09PSAxICYmIHRoaXMuZGVsZXRlRm4pIHtcclxuICAgICAgaWYgKGZpbGUuZGVsZXRpbmcpIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oYFt1cGxvYWQtZmlsZV0gVGhpcyBmaWxlIGFscmVhZHkgZGVsZXRpbmdgKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdHJ5IHtcclxuICAgICAgICBmaWxlLmRlbGV0aW5nID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBkZWxldGVkID0gYXdhaXQgdGhpcy5kZWxldGVGbihmaWxlKTtcclxuICAgICAgICBpZiAoIWRlbGV0ZWQpIHJldHVybjtcclxuICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcigoZXJyICYmIGVyci5tZXNzYWdlKSB8fCBlcnIpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICBmaWxlLmRlbGV0aW5nID0gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIE1ha2Ugc3VyZSBpbmRleCBub3QgY2hhbmdlZFxyXG4gICAgICBpbmRleCA9IHRoaXMuZmlsZXMuaW5kZXhPZihmaWxlKTtcclxuICAgICAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuOyAvLyBOb3QgZm91bmQgKGFscmVhZHkgcmVtb3ZlZCA/KVxyXG4gICAgfSBlbHNlIGlmIChmaWxlLnByb2dyZXNzID4gMCkge1xyXG4gICAgICBjb25zb2xlLndhcm4oYFt1cGxvYWQtZmlsZV0gQ2Fubm90IHJlbW92ZSB0aGlzIGZpbGUgd2hpbGUgdXBsb2FkaW5nYCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpbGVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29udmVydCBGaWxlcyBsaXN0IHRvIG5vcm1hbCBhcnJheSBsaXN0XHJcbiAgICpcclxuICAgKiBAcGFyYW0gZmlsZXMgKEZpbGVzIExpc3QpXHJcbiAgICovXHJcbiAgcHJlcGFyZUZpbGVzTGlzdChmaWxlczogRmlsZUxpc3QgfCBGaWxlW10pIHtcclxuICAgIGxldCBpdGVtczogRmlsZVtdO1xyXG4gICAgaWYgKGZpbGVzIGluc3RhbmNlb2YgRmlsZUxpc3QpIHtcclxuICAgICAgaXRlbXMgPSBbXTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSBmaWxlcy5pdGVtKGkpO1xyXG4gICAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGl0ZW1zID0gZmlsZXM7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZpbGVzLnB1c2goLi4uaXRlbXMpO1xyXG5cclxuICAgIHRoaXMuZmlsZURyb3BFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG5cclxuICAgIC8vIFN0YXJ0IHVwbG9hZFxyXG4gICAgaWYgKHRoaXMuaW5zdGFudFVwbG9hZCkge1xyXG4gICAgICB0aGlzLnVwbG9hZEZpbGVzKGl0ZW1zKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4ZWN1dGUgdXBsb2FkXHJcbiAgICovXHJcbiAgYXN5bmMgdXBsb2FkRmlsZXMoZmlsZXM/OiBGaWxlW10pOiBQcm9taXNlPFVwbG9hZEZpbGU8YW55PltdPiB7XHJcbiAgICB0aGlzLnVwbG9hZGluZyA9IHRydWU7XHJcbiAgICBpZiAoIWZpbGVzKSB7XHJcbiAgICAgIGNvbnNvbGUuaW5mbygnW3VwbG9hZC1maWxlXSBVcGxvYWRpbmcgYWxsIGZpbGVzLi4uJyk7XHJcbiAgICAgIGZpbGVzID0gdGhpcy5maWxlcztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCAkcHJvY2Vzc2luZ0ZpbGVDb3VudENoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy5wcm9jZXNzaW5nRmlsZXNDb3VudCk7XHJcbiAgICBjb25zdCAkY2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICAkY2hhbmdlcy5zdWJzY3JpYmUoKF8pID0+IHtcclxuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgJHByb2Nlc3NpbmdGaWxlQ291bnRDaGFuZ2UubmV4dCh0aGlzLnByb2Nlc3NpbmdGaWxlc0NvdW50KTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGpvYnM6IE9ic2VydmFibGU8VXBsb2FkRmlsZTxhbnk+PltdID0gZmlsZXNcclxuICAgICAgLm1hcCgoZikgPT4gZiBhcyBVcGxvYWRGaWxlPGFueT4pXHJcbiAgICAgIC5maWx0ZXIoKGZpbGUpID0+IGZpbGUgJiYgaXNOaWwoZmlsZS5wcm9ncmVzcykgJiYgIWZpbGUuZXJyb3IpIC8vIFNraXAgaWYgYWxyZWFkeSBzdGFydGVkIG9yIGluIGVycm9yXHJcbiAgICAgIC5tYXAoKGZpbGUsIGkpID0+IHtcclxuICAgICAgICAvLyBXYWl0IGlmIG5lZWRcclxuICAgICAgICBpZiAoaXNOb3ROaWwodGhpcy5tYXhQYXJhbGxlbFVwbG9hZCkpIHtcclxuICAgICAgICAgIHJldHVybiAkcHJvY2Vzc2luZ0ZpbGVDb3VudENoYW5nZS5waXBlKFxyXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUoaSksIC8vIGNhbGwgb2YgZmlsdGVyKCkgbXVzdCBiZSBkaWZmZXJlbnQgZm9yIHdhaXRpbmcgam9iXHJcbiAgICAgICAgICAgIGZpbHRlcigoY291bnQpID0+IGNvdW50IDwgdGhpcy5tYXhQYXJhbGxlbFVwbG9hZCksXHJcbiAgICAgICAgICAgIG1hcCgoXykgPT4ge1xyXG4gICAgICAgICAgICAgIC8vIFN0YXJ0IHVwbG9hZGluZ1xyXG4gICAgICAgICAgICAgIGlmIChpc05pbChmaWxlLnByb2dyZXNzKSkgZmlsZS5wcm9ncmVzcyA9IDA7XHJcbiAgICAgICAgICAgICAgJGNoYW5nZXMubmV4dCgpO1xyXG4gICAgICAgICAgICAgIHJldHVybiBmaWxlO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgZmlyc3QoKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gU3RhcnQgdXBsb2FkaW5nXHJcbiAgICAgICAgaWYgKGlzTmlsKGZpbGUucHJvZ3Jlc3MpKSBmaWxlLnByb2dyZXNzID0gMDtcclxuICAgICAgICByZXR1cm4gb2YoZmlsZSk7XHJcbiAgICAgIH0pXHJcblxyXG4gICAgICAubWFwKChmaWxlJCkgPT5cclxuICAgICAgICBmaWxlJC5waXBlKFxyXG4gICAgICAgICAgZmlsdGVyKGlzTm90TmlsKSxcclxuICAgICAgICAgIC8vIExvZ1xyXG4gICAgICAgICAgdGFwKChmaWxlKSA9PiBjb25zb2xlLmRlYnVnKGBbdXBsb2FkLWZpbGVdICR7ZmlsZS5uYW1lfTogdXBsb2FkaW5nLi4uYCkpLFxyXG5cclxuICAgICAgICAgIC8vIFN0YXJ0IHVwbG9hZGluZ1xyXG4gICAgICAgICAgc3dpdGNoTWFwKChmaWxlKSA9PlxyXG4gICAgICAgICAgICB0aGlzLnVwbG9hZEZuKGZpbGUpLnBpcGUoXHJcbiAgICAgICAgICAgICAgZmlsdGVyKGlzTm90TmlsKSxcclxuICAgICAgICAgICAgICBtYXAoKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBQcm9ncmVzcyBldmVudFxyXG4gICAgICAgICAgICAgICAgaWYgKGlzUHJvZ3Jlc3NFdmVudChldmVudCkpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKGlzTm90TmlsKGV2ZW50LmxvYWRlZCkgJiYgZXZlbnQubG9hZGVkID49IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBmaWxlLnByb2dyZXNzID0gTWF0aC5taW4oMSwgZXZlbnQubG9hZGVkIC8gKGV2ZW50LnRvdGFsIHx8IDEpKTtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBmaWxlLnByb2dyZXNzID0gLTE7IC8vIEluZGV0ZXJtaW5hdGUgcHJvZ3Jlc3Npb25cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIFJlc3BvbnNlIGV2ZW50XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpc1Jlc3BvbnNlRXZlbnQoZXZlbnQpKSB7XHJcbiAgICAgICAgICAgICAgICAgIGZpbGUucHJvZ3Jlc3MgPSAxO1xyXG4gICAgICAgICAgICAgICAgICBmaWxlLnJlc3BvbnNlID0gZXZlbnQ7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYFt1cGxvYWQtZmlsZV0gJHtmaWxlLm5hbWV9OiAke2V2ZW50LnN0YXR1c1RleHQgfHwgJ09LJ31gLCBmaWxlLnJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyBPdGhlciBldmVudHM6IGlnbm9yZVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vIERFQlVHXHJcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ1t1cGxvYWQtZmlsZV0gSWdub3JpbmcgYSBmaWxlIGV2ZW50OiAnLCBldmVudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsZTtcclxuICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgICAgIGZpbGUuZXJyb3IgPSAoZXJyICYmIChlcnIubWVzc2FnZSB8fCBlcnIuZXJyb3I/Lm1lc3NhZ2UpKSB8fCAnRklMRS5VUExPQUQuRVJST1InO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKGZpbGUpO1xyXG4gICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAkY2hhbmdlcy5uZXh0KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIClcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcblxyXG4gICAgLy8gV2FpdCBqb2JzIHRvIGZpbmlzaFxyXG4gICAgcmV0dXJuIGZvcmtKb2luKGpvYnMpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRhcCgoXykgPT4gJGNoYW5nZXMuY29tcGxldGUoKSksXHJcbiAgICAgICAgZmluYWxpemUoKCkgPT4gKHRoaXMudXBsb2FkaW5nID0gZmFsc2UpKVxyXG4gICAgICApXHJcbiAgICAgIC50b1Byb21pc2UoKTtcclxuICB9XHJcblxyXG4gIHdhaXRJZGxlKG9wdHM/OiBXYWl0Rm9yT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIHdhaXRGb3IoKCkgPT4gdGhpcy5wcm9jZXNzaW5nRmlsZXNDb3VudCA9PT0gMCwgb3B0cyk7XHJcbiAgfVxyXG59XHJcbiIsIkBpZiAoKCF1bmlxdWVGaWxlICYmICFhdXRvSGlkZURyb3BBcmVhKSB8fCBmaWxlcy5sZW5ndGggPT09IDApIHtcbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIGFwcERyYWdBbmREcm9wIChmaWxlRHJvcHBlZCk9XCJvbkZpbGVEcm9wcGVkKCRldmVudClcIj5cbiAgICA8aW5wdXRcbiAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICNmaWxlRHJvcFJlZlxuICAgICAgaWQ9XCJmaWxlRHJvcFJlZlwiXG4gICAgICBbbXVsdGlwbGVdPVwiIXVuaXF1ZUZpbGVcIlxuICAgICAgW2FjY2VwdF09XCJmaWxlRXh0ZW5zaW9uXCJcbiAgICAgIChjaGFuZ2UpPVwiZmlsZUJyb3dzZUhhbmRsZXIoJGFueSgkZXZlbnQudGFyZ2V0KS5maWxlcylcIlxuICAgIC8+XG4gICAgPG1hdC1pY29uIHN0eWxlPVwiZm9udC1zaXplOiB4eC1sYXJnZVwiIGNvbG9yPVwiYWNjZW50XCIgY2xhc3M9XCJ0ZXh0LXNpemVcIj51cGxvYWQ8L21hdC1pY29uPlxuICAgIDxpb24tbGFiZWxcbiAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICdGSUxFLlVQTE9BRC5EUkFHX0FORF9EUk9QJyB8IHRyYW5zbGF0ZTogeyBleHRlbnNpb246ICFmaWxlRXh0ZW5zaW9uID8gJycgOiAnICgnICsgZmlsZUV4dGVuc2lvbiArICcpJyB9XG4gICAgICBcIlxuICAgID48L2lvbi1sYWJlbD5cbiAgICA8aW9uLWJ1dHRvbj57eyAnRklMRS5VUExPQUQuQlJPV1NFJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLWJ1dHRvbj5cbiAgPC9kaXY+XG59XG48ZGl2IGNsYXNzPVwiZmlsZXMtbGlzdFwiPlxuICA8aW9uLWxpc3Q+XG4gICAgQGZvciAoZmlsZSBvZiBmaWxlczsgdHJhY2sgZmlsZTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgIDxpb24taXRlbT5cbiAgICAgICAgPG1hdC1pY29uIHNsb3Q9XCJzdGFydFwiPmRlc2NyaXB0aW9uPC9tYXQtaWNvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1maWxlXCI+XG4gICAgICAgICAgPGlvbi1sYWJlbD5cbiAgICAgICAgICAgIDxoNCBjbGFzcz1cIm5hbWVcIiBbY2xhc3MuZGVsZXRpbmddPVwiZmlsZS5kZWxldGluZ1wiPlxuICAgICAgICAgICAgICB7eyBmaWxlLm5hbWUgfX1cbiAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAge3sgZmlsZS5zaXplIHwgZmlsZVNpemUgfX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICA8aW9uLXByb2dyZXNzLWJhclxuICAgICAgICAgICAgKm5nSWY9XCJ1cGxvYWRpbmcgJiYgIWZpbGUuZXJyb3JcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImZpbGUucHJvZ3Jlc3MgfHwgMFwiXG4gICAgICAgICAgICBbdHlwZV09XCJmaWxlLmRlbGV0aW5nIHx8IGZpbGUucHJvZ3Jlc3MgPT09IC0xID8gJ2luZGV0ZXJtaW5hdGUnIDogJ2RldGVybWluYXRlJ1wiXG4gICAgICAgICAgPjwvaW9uLXByb2dyZXNzLWJhcj5cbiAgICAgICAgICA8aW9uLWxhYmVsICpuZ0lmPVwiZmlsZS5lcnJvclwiIGNvbG9yPVwiZGFuZ2VyXCIgW2lubmVySFRNTF09XCJmaWxlLmVycm9yIHwgdHJhbnNsYXRlXCI+PC9pb24tbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIHJlbW90ZSBmcm9tIGxpc3QgKGJlZm9yZSBpbXBvcnRhdGlvbikgLS0+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCIhZmlsZS5wcm9ncmVzcyB8fCBmaWxlLmVycm9yXCIgbWF0LWljb24tYnV0dG9uIHNsb3Q9XCJlbmRcIiAoY2xpY2spPVwiZGVsZXRlRmlsZShpKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8IS0tIGRlbGV0ZSBmaWxlIChyZW1vdGVseSAtIGFmdGVyIGltcG9ydGF0aW9uKSAtLT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiZmlsZS5wcm9ncmVzcyA9PT0gMSAmJiAhIWRlbGV0ZUZuICYmICFmaWxlLmRlbGV0aW5nXCJcbiAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICBzbG90PVwiZW5kXCJcbiAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlRmlsZShpKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvaW9uLWl0ZW0+XG4gICAgfVxuICA8L2lvbi1saXN0PlxuPC9kaXY+XG4iXX0=
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWZpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvdXBsb2FkLWZpbGUvdXBsb2FkLWZpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvdXBsb2FkLWZpbGUvdXBsb2FkLWZpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQWMsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hHLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUUsT0FBTyxFQUE4QixlQUFlLEVBQUUsZUFBZSxFQUFjLE1BQU0scUJBQXFCLENBQUM7QUFDL0csT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBa0IsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBT3pELE1BQU0sT0FBTyxtQkFBbUI7SUEyQmxCO0lBQ0E7SUEzQmlDLFVBQVUsQ0FBYTtJQUUzRCxhQUFhLENBQVM7SUFDdEIsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUNuQixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLFFBQVEsQ0FBb0I7SUFDNUIsUUFBUSxDQUFvQjtJQUM1QixpQkFBaUIsQ0FBUztJQUMxQixnQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFFbEMsS0FBSyxHQUFzQixFQUFFLENBQUM7SUFDOUIsU0FBUyxHQUFHLEtBQUssQ0FBQztJ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LGtZQ2JoQyxpbUVBeURBOzs0RkQ1Q2EsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGlCQUFpQjtxSEFLa0IsVUFBVTtzQkFBdEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVsQyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBmaW5hbGl6ZSwgZmlyc3QsIG1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgRmlsZURlbGV0ZUZuLCBGaWxlVXBsb2FkRm4sIGlzUHJvZ3Jlc3NFdmVudCwgaXNSZXNwb25zZUV2ZW50LCBVcGxvYWRGaWxlIH0gZnJvbSAnLi91cGxvYWQtZmlsZS5tb2RlbCc7XG5pbXBvcnQgeyBpc05pbCwgaXNOb3ROaWwgfSBmcm9tICcuLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgd2FpdEZvciwgV2FpdEZvck9wdGlvbnMgfSBmcm9tICcuLi9vYnNlcnZhYmxlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC11cGxvYWQtZmlsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi91cGxvYWQtZmlsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3VwbG9hZC1maWxlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFVwbG9hZEZpbGVDb21wb25lbnQge1xuICBAVmlld0NoaWxkKCdmaWxlRHJvcFJlZicsIHsgc3RhdGljOiBmYWxzZSB9KSBmaWxlRHJvcEVsOiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpIGZpbGVFeHRlbnNpb246IHN0cmluZztcbiAgQElucHV0KCkgdW5pcXVlRmlsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBpbnN0YW50VXBsb2FkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHVwbG9hZEZuOiBGaWxlVXBsb2FkRm48YW55PjtcbiAgQElucHV0KCkgZGVsZXRlRm46IEZpbGVEZWxldGVGbjxhbnk+O1xuICBASW5wdXQoKSBtYXhQYXJhbGxlbFVwbG9hZDogbnVtYmVyO1xuICBASW5wdXQoKSBhdXRvSGlkZURyb3BBcmVhID0gZmFsc2U7XG5cbiAgZmlsZXM6IFVwbG9hZEZpbGU8YW55PltdID0gW107XG4gIHVwbG9hZGluZyA9IGZhbHNlO1xuXG4gIGdldCBwcm9jZXNzaW5nRmlsZXMoKTogVXBsb2FkRmlsZTxhbnk+W10ge1xuICAgIHJldHVybiB0aGlzLmZpbGVzLmZpbHRlcigoZikgPT4gIWYuZGVsZXRpbmcgJiYgaXNOb3ROaWwoZi5wcm9ncmVzcykgJiYgZi5wcm9ncmVzcyA8IDEpO1xuICB9XG5cbiAgZ2V0IHByb2Nlc3NlZEZpbGVzKCk6IFVwbG9hZEZpbGU8YW55PltdIHtcbiAgICByZXR1cm4gdGhpcy5maWxlcy5maWx0ZXIoKGYpID0+ICFmLmRlbGV0aW5nICYmIGYucHJvZ3Jlc3MgPT09IDEpO1xuICB9XG5cbiAgZ2V0IHByb2Nlc3NpbmdGaWxlc0NvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucHJvY2Vzc2luZ0ZpbGVzLmxlbmd0aDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIG9uIGZpbGUgZHJvcCBoYW5kbGVyXG4gICAqL1xuICBvbkZpbGVEcm9wcGVkKGV2ZW50KSB7XG4gICAgdGhpcy5wcmVwYXJlRmlsZXNMaXN0KGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBoYW5kbGUgZmlsZSBmcm9tIGJyb3dzaW5nXG4gICAqL1xuICBmaWxlQnJvd3NlSGFuZGxlcihmaWxlcykge1xuICAgIHRoaXMucHJlcGFyZUZpbGVzTGlzdChmaWxlcyk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGZpbGUgZnJvbSBmaWxlcyBsaXN0XG4gICAqXG4gICAqIEBwYXJhbSBpbmRleCAoRmlsZSBpbmRleClcbiAgICovXG4gIGFzeW5jIGRlbGV0ZUZpbGUoaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGZpbGUgPSB0aGlzLmZpbGVzW2luZGV4XTtcblxuICAgIGlmIChmaWxlLnByb2dyZXNzID09PSAxICYmIHRoaXMuZGVsZXRlRm4pIHtcbiAgICAgIGlmIChmaWxlLmRlbGV0aW5nKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgW3VwbG9hZC1maWxlXSBUaGlzIGZpbGUgYWxyZWFkeSBkZWxldGluZ2ApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBmaWxlLmRlbGV0aW5nID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZGVsZXRlZCA9IGF3YWl0IHRoaXMuZGVsZXRlRm4oZmlsZSk7XG4gICAgICAgIGlmICghZGVsZXRlZCkgcmV0dXJuO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoKGVyciAmJiBlcnIubWVzc2FnZSkgfHwgZXJyKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgZmlsZS5kZWxldGluZyA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICAvLyBNYWtlIHN1cmUgaW5kZXggbm90IGNoYW5nZWRcbiAgICAgIGluZGV4ID0gdGhpcy5maWxlcy5pbmRleE9mKGZpbGUpO1xuICAgICAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuOyAvLyBOb3QgZm91bmQgKGFscmVhZHkgcmVtb3ZlZCA/KVxuICAgIH0gZWxzZSBpZiAoZmlsZS5wcm9ncmVzcyA+IDApIHtcbiAgICAgIGNvbnNvbGUud2FybihgW3VwbG9hZC1maWxlXSBDYW5ub3QgcmVtb3ZlIHRoaXMgZmlsZSB3aGlsZSB1cGxvYWRpbmdgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmZpbGVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IEZpbGVzIGxpc3QgdG8gbm9ybWFsIGFycmF5IGxpc3RcbiAgICpcbiAgICogQHBhcmFtIGZpbGVzIChGaWxlcyBMaXN0KVxuICAgKi9cbiAgcHJlcGFyZUZpbGVzTGlzdChmaWxlczogRmlsZUxpc3QgfCBGaWxlW10pIHtcbiAgICBsZXQgaXRlbXM6IEZpbGVbXTtcbiAgICBpZiAoZmlsZXMgaW5zdGFuY2VvZiBGaWxlTGlzdCkge1xuICAgICAgaXRlbXMgPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IGZpbGVzLml0ZW0oaSk7XG4gICAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW1zID0gZmlsZXM7XG4gICAgfVxuICAgIHRoaXMuZmlsZXMucHVzaCguLi5pdGVtcyk7XG5cbiAgICB0aGlzLmZpbGVEcm9wRWwubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG5cbiAgICAvLyBTdGFydCB1cGxvYWRcbiAgICBpZiAodGhpcy5pbnN0YW50VXBsb2FkKSB7XG4gICAgICB0aGlzLnVwbG9hZEZpbGVzKGl0ZW1zKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSB1cGxvYWRcbiAgICovXG4gIGFzeW5jIHVwbG9hZEZpbGVzKGZpbGVzPzogRmlsZVtdKTogUHJvbWlzZTxVcGxvYWRGaWxlPGFueT5bXT4ge1xuICAgIHRoaXMudXBsb2FkaW5nID0gdHJ1ZTtcbiAgICBpZiAoIWZpbGVzKSB7XG4gICAgICBjb25zb2xlLmluZm8oJ1t1cGxvYWQtZmlsZV0gVXBsb2FkaW5nIGFsbCBmaWxlcy4uLicpO1xuICAgICAgZmlsZXMgPSB0aGlzLmZpbGVzO1xuICAgIH1cblxuICAgIGNvbnN0ICRwcm9jZXNzaW5nRmlsZUNvdW50Q2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0aGlzLnByb2Nlc3NpbmdGaWxlc0NvdW50KTtcbiAgICBjb25zdCAkY2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgJGNoYW5nZXMuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgJHByb2Nlc3NpbmdGaWxlQ291bnRDaGFuZ2UubmV4dCh0aGlzLnByb2Nlc3NpbmdGaWxlc0NvdW50KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGpvYnM6IE9ic2VydmFibGU8VXBsb2FkRmlsZTxhbnk+PltdID0gZmlsZXNcbiAgICAgIC5tYXAoKGYpID0+IGYgYXMgVXBsb2FkRmlsZTxhbnk+KVxuICAgICAgLmZpbHRlcigoZmlsZSkgPT4gZmlsZSAmJiBpc05pbChmaWxlLnByb2dyZXNzKSAmJiAhZmlsZS5lcnJvcikgLy8gU2tpcCBpZiBhbHJlYWR5IHN0YXJ0ZWQgb3IgaW4gZXJyb3JcbiAgICAgIC5tYXAoKGZpbGUsIGkpID0+IHtcbiAgICAgICAgLy8gV2FpdCBpZiBuZWVkXG4gICAgICAgIGlmIChpc05vdE5pbCh0aGlzLm1heFBhcmFsbGVsVXBsb2FkKSkge1xuICAgICAgICAgIHJldHVybiAkcHJvY2Vzc2luZ0ZpbGVDb3VudENoYW5nZS5waXBlKFxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKGkpLCAvLyBjYWxsIG9mIGZpbHRlcigpIG11c3QgYmUgZGlmZmVyZW50IGZvciB3YWl0aW5nIGpvYlxuICAgICAgICAgICAgZmlsdGVyKChjb3VudCkgPT4gY291bnQgPCB0aGlzLm1heFBhcmFsbGVsVXBsb2FkKSxcbiAgICAgICAgICAgIG1hcCgoXykgPT4ge1xuICAgICAgICAgICAgICAvLyBTdGFydCB1cGxvYWRpbmdcbiAgICAgICAgICAgICAgaWYgKGlzTmlsKGZpbGUucHJvZ3Jlc3MpKSBmaWxlLnByb2dyZXNzID0gMDtcbiAgICAgICAgICAgICAgJGNoYW5nZXMubmV4dCgpO1xuICAgICAgICAgICAgICByZXR1cm4gZmlsZTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgZmlyc3QoKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU3RhcnQgdXBsb2FkaW5nXG4gICAgICAgIGlmIChpc05pbChmaWxlLnByb2dyZXNzKSkgZmlsZS5wcm9ncmVzcyA9IDA7XG4gICAgICAgIHJldHVybiBvZihmaWxlKTtcbiAgICAgIH0pXG5cbiAgICAgIC5tYXAoKGZpbGUkKSA9PlxuICAgICAgICBmaWxlJC5waXBlKFxuICAgICAgICAgIGZpbHRlcihpc05vdE5pbCksXG4gICAgICAgICAgLy8gTG9nXG4gICAgICAgICAgdGFwKChmaWxlKSA9PiBjb25zb2xlLmRlYnVnKGBbdXBsb2FkLWZpbGVdICR7ZmlsZS5uYW1lfTogdXBsb2FkaW5nLi4uYCkpLFxuXG4gICAgICAgICAgLy8gU3RhcnQgdXBsb2FkaW5nXG4gICAgICAgICAgc3dpdGNoTWFwKChmaWxlKSA9PlxuICAgICAgICAgICAgdGhpcy51cGxvYWRGbihmaWxlKS5waXBlKFxuICAgICAgICAgICAgICBmaWx0ZXIoaXNOb3ROaWwpLFxuICAgICAgICAgICAgICBtYXAoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gUHJvZ3Jlc3MgZXZlbnRcbiAgICAgICAgICAgICAgICBpZiAoaXNQcm9ncmVzc0V2ZW50KGV2ZW50KSkge1xuICAgICAgICAgICAgICAgICAgaWYgKGlzTm90TmlsKGV2ZW50LmxvYWRlZCkgJiYgZXZlbnQubG9hZGVkID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsZS5wcm9ncmVzcyA9IE1hdGgubWluKDEsIGV2ZW50LmxvYWRlZCAvIChldmVudC50b3RhbCB8fCAxKSk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmaWxlLnByb2dyZXNzID0gLTE7IC8vIEluZGV0ZXJtaW5hdGUgcHJvZ3Jlc3Npb25cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBSZXNwb25zZSBldmVudFxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzUmVzcG9uc2VFdmVudChldmVudCkpIHtcbiAgICAgICAgICAgICAgICAgIGZpbGUucHJvZ3Jlc3MgPSAxO1xuICAgICAgICAgICAgICAgICAgZmlsZS5yZXNwb25zZSA9IGV2ZW50O1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgW3VwbG9hZC1maWxlXSAke2ZpbGUubmFtZX06ICR7ZXZlbnQuc3RhdHVzVGV4dCB8fCAnT0snfWAsIGZpbGUucmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIE90aGVyIGV2ZW50czogaWdub3JlXG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAvLyBERUJVR1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5kZWJ1ZygnW3VwbG9hZC1maWxlXSBJZ25vcmluZyBhIGZpbGUgZXZlbnQ6ICcsIGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbGU7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgZmlsZS5lcnJvciA9IChlcnIgJiYgKGVyci5tZXNzYWdlIHx8IGVyci5lcnJvcj8ubWVzc2FnZSkpIHx8ICdGSUxFLlVQTE9BRC5FUlJPUic7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKGZpbGUpO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAkY2hhbmdlcy5uZXh0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICAvLyBXYWl0IGpvYnMgdG8gZmluaXNoXG4gICAgcmV0dXJuIGZvcmtKb2luKGpvYnMpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChfKSA9PiAkY2hhbmdlcy5jb21wbGV0ZSgpKSxcbiAgICAgICAgZmluYWxpemUoKCkgPT4gKHRoaXMudXBsb2FkaW5nID0gZmFsc2UpKVxuICAgICAgKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgd2FpdElkbGUob3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHdhaXRGb3IoKCkgPT4gdGhpcy5wcm9jZXNzaW5nRmlsZXNDb3VudCA9PT0gMCwgb3B0cyk7XG4gIH1cbn1cbiIsIkBpZiAoKCF1bmlxdWVGaWxlICYmICFhdXRvSGlkZURyb3BBcmVhKSB8fCBmaWxlcy5sZW5ndGggPT09IDApIHtcbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIGFwcERyYWdBbmREcm9wIChmaWxlRHJvcHBlZCk9XCJvbkZpbGVEcm9wcGVkKCRldmVudClcIj5cbiAgICA8aW5wdXRcbiAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICNmaWxlRHJvcFJlZlxuICAgICAgaWQ9XCJmaWxlRHJvcFJlZlwiXG4gICAgICBbbXVsdGlwbGVdPVwiIXVuaXF1ZUZpbGVcIlxuICAgICAgW2FjY2VwdF09XCJmaWxlRXh0ZW5zaW9uXCJcbiAgICAgIChjaGFuZ2UpPVwiZmlsZUJyb3dzZUhhbmRsZXIoJGFueSgkZXZlbnQudGFyZ2V0KS5maWxlcylcIlxuICAgIC8+XG4gICAgPG1hdC1pY29uIHN0eWxlPVwiZm9udC1zaXplOiB4eC1sYXJnZVwiIGNvbG9yPVwiYWNjZW50XCIgY2xhc3M9XCJ0ZXh0LXNpemVcIj51cGxvYWQ8L21hdC1pY29uPlxuICAgIDxpb24tbGFiZWxcbiAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICdGSUxFLlVQTE9BRC5EUkFHX0FORF9EUk9QJyB8IHRyYW5zbGF0ZTogeyBleHRlbnNpb246ICFmaWxlRXh0ZW5zaW9uID8gJycgOiAnICgnICsgZmlsZUV4dGVuc2lvbiArICcpJyB9XG4gICAgICBcIlxuICAgID48L2lvbi1sYWJlbD5cbiAgICA8aW9uLWJ1dHRvbj57eyAnRklMRS5VUExPQUQuQlJPV1NFJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLWJ1dHRvbj5cbiAgPC9kaXY+XG59XG48ZGl2IGNsYXNzPVwiZmlsZXMtbGlzdFwiPlxuICA8aW9uLWxpc3Q+XG4gICAgQGZvciAoZmlsZSBvZiBmaWxlczsgdHJhY2sgZmlsZTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgIDxpb24taXRlbT5cbiAgICAgICAgPG1hdC1pY29uIHNsb3Q9XCJzdGFydFwiPmRlc2NyaXB0aW9uPC9tYXQtaWNvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1maWxlXCI+XG4gICAgICAgICAgPGlvbi1sYWJlbD5cbiAgICAgICAgICAgIDxoNCBjbGFzcz1cIm5hbWVcIiBbY2xhc3MuZGVsZXRpbmddPVwiZmlsZS5kZWxldGluZ1wiPlxuICAgICAgICAgICAgICB7eyBmaWxlLm5hbWUgfX1cbiAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAge3sgZmlsZS5zaXplIHwgZmlsZVNpemUgfX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICA8aW9uLXByb2dyZXNzLWJhclxuICAgICAgICAgICAgKm5nSWY9XCJ1cGxvYWRpbmcgJiYgIWZpbGUuZXJyb3JcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImZpbGUucHJvZ3Jlc3MgfHwgMFwiXG4gICAgICAgICAgICBbdHlwZV09XCJmaWxlLmRlbGV0aW5nIHx8IGZpbGUucHJvZ3Jlc3MgPT09IC0xID8gJ2luZGV0ZXJtaW5hdGUnIDogJ2RldGVybWluYXRlJ1wiXG4gICAgICAgICAgPjwvaW9uLXByb2dyZXNzLWJhcj5cbiAgICAgICAgICA8aW9uLWxhYmVsICpuZ0lmPVwiZmlsZS5lcnJvclwiIGNvbG9yPVwiZGFuZ2VyXCIgW2lubmVySFRNTF09XCJmaWxlLmVycm9yIHwgdHJhbnNsYXRlXCI+PC9pb24tbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIHJlbW90ZSBmcm9tIGxpc3QgKGJlZm9yZSBpbXBvcnRhdGlvbikgLS0+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCIhZmlsZS5wcm9ncmVzcyB8fCBmaWxlLmVycm9yXCIgbWF0LWljb24tYnV0dG9uIHNsb3Q9XCJlbmRcIiAoY2xpY2spPVwiZGVsZXRlRmlsZShpKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8IS0tIGRlbGV0ZSBmaWxlIChyZW1vdGVseSAtIGFmdGVyIGltcG9ydGF0aW9uKSAtLT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiZmlsZS5wcm9ncmVzcyA9PT0gMSAmJiAhIWRlbGV0ZUZuICYmICFmaWxlLmRlbGV0aW5nXCJcbiAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICBzbG90PVwiZW5kXCJcbiAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlRmlsZShpKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvaW9uLWl0ZW0+XG4gICAgfVxuICA8L2lvbi1saXN0PlxuPC9kaXY+XG4iXX0=
|
|
@@ -259,11 +259,11 @@ export class FeedsComponent {
|
|
|
259
259
|
}
|
|
260
260
|
}
|
|
261
261
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeedsComponent, deps: [{ token: i1.LocalSettingsService }, { token: ENVIRONMENT }, { token: APP_FEED_SERVICE, optional: true }, { token: i2.AccountService }, { token: i3.AlertController }], target: i0.ɵɵFactoryTarget.Component });
|
|
262
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FeedsComponent, selector: "app-feed", inputs: { debug: "debug", mobile: "mobile", showHeader: "showHeader", showReadMoreButton: "showReadMoreButton", headerColor: "headerColor", cardColor: "cardColor", shape: "shape", class: "class", itemId: "itemId", filterItem: "filterItem", feeds: "feeds", urls: "urls", maxAgeInMonths: "maxAgeInMonths", maxContentLength: "maxContentLength" }, outputs: { editItem: "editItem", deleteItem: "deleteItem" }, host: { properties: { "class": "this.hostClass" } }, providers: [RxState], viewQueries: [{ propertyName: "modal", first: true, predicate: ["modal"], descendants: true }], ngImport: i0, template: "<!-- debug -->\n@if (debug) {\n <app-debug [title]=\"'Feed'\">\n <p>\n hasFeeds?: {{ hasFeeds$ | async }}\n <br />\n urls: {{ urls$ | async | json }}\n <br />\n shape: {{ shape }}\n </p>\n </app-debug>\n}\n\n@let feeds = feeds$ | async;\n@let userId = userId$ | async;\n\n@if (feeds | isNotEmptyArray) {\n <!-- top header -->\n @if (showHeader && (feeds | arrayFirst); as feed) {\n <ion-item lines=\"none\" [color]=\"headerColor\" class=\"feed-header shape-{{ shape }}\">\n <ion-icon slot=\"start\" name=\"megaphone\"></ion-icon>\n <ion-label>\n <b>{{ feed.title || ('SOCIAL.FEED.NEWS' | translate) }}</b>\n </ion-label>\n <ion-button slot=\"end\" fill=\"clear\" (click)=\"openFeedHome()\" shape=\"\">\n <ion-label translate>SOCIAL.FEED.SHOW_ALL_FEED</ion-label>\n <ion-icon slot=\"end\" name=\"chevron-forward-outline\"></ion-icon>\n </ion-button>\n </ion-item>\n }\n\n <div class=\"feed-content shape-{{ shape }} ion-no-padding\" [class.has-header]=\"showHeader\">\n <!-- feeds -->\n @for (feed of feeds; track feed.feed_url; let firstFeed = $first; let lastFeed = $last) {\n <!-- items -->\n @for (item of feed.items | arrayFilter: filterItem; track item.id; let firstItem = $first; let lastItem = $last) {\n <ion-card\n [class.first]=\"firstFeed && firstItem\"\n [class.last]=\"lastFeed && lastItem\"\n [color]=\"cardColor !== 'light-transparent' ? cardColor : undefined\"\n class=\"feed-item-card\"\n >\n <ion-card-header>\n <ion-card-subtitle style=\"vertical-align: middle\">\n <!-- Authors -->\n @for (author of item.authors || feed.authors; track author) {\n @if (author.name || author.avatar) {\n <ion-chip (click)=\"openUrl(author.url)\" tappable>\n @if (author.avatar) {\n <ion-avatar>\n <ion-img [src]=\"author.avatar\" [alt]=\"author.name\"></ion-img>\n </ion-avatar>\n }\n @if (author.name) {\n <ion-label class=\"author\">{{ author.name }}</ion-label>\n }\n </ion-chip>\n }\n }\n <ion-note class=\"ion-float-end\">\n <small>{{ item.date_published | dateFromNow }}</small>\n </ion-note>\n </ion-card-subtitle>\n\n <!-- title -->\n <ion-card-title (click)=\"openFeedItem(item, feed)\" tappable>{{ item?.title }}</ion-card-title>\n\n <!-- tags -->\n @let tags = item | map: getTags;\n @if (tags | isNotEmptyArray) {\n <ion-text class=\"tags\">\n @for (tag of tags; track tag; let last = $last) {\n <a (click)=\"openTag(feed, tag)\" tappable>\n <ion-text>#{{ tag }}</ion-text>\n </a>\n @if (!last) {\n \n }\n }\n </ion-text>\n }\n </ion-card-header>\n\n <!-- Feed content -->\n <ion-card-content>\n <ion-text [feed]=\"item.url || feed.feed_url\">\n @if (item.content_html) {\n <p [innerHTML]=\"item.content_html\"></p>\n } @else if (item.content_text) {\n <p>\n <markdown [data]=\"item.content_text\" emoji></markdown>\n </p>\n }\n </ion-text>\n </ion-card-content>\n\n @let editable = canEditItem(item, userId, feed);\n @if (editable || showReadMoreButton) {\n @if (editable) {\n\n <!-- Delete button (visible hover)-->\n <button\n mat-icon-button\n (click)=\"onDeleteItem($event, item)\"\n class=\"visible-hover ion-float-start\"\n [title]=\"'COMMON.BTN_DELETE' | translate\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n <!-- Edit button (visible hover) -->\n <ion-button\n (click)=\"onEditItem($event, item)\"\n class=\"visible-hover ion-float-start\" fill=\"clear\"\n >\n <mat-icon slot=\"start\">edit</mat-icon>\n<!-- <ion-icon name=\"pencil\" slot=\"start\"></ion-icon>-->\n <ion-label translate>COMMON.BTN_EDIT</ion-label>\n </ion-button>\n }\n @if (showReadMoreButton) {\n <ion-button (click)=\"openFeedItem(item, feed)\" class=\"ion-float-end\" fill=\"clear\">\n <ion-label>{{ (item.truncated ? 'SOCIAL.FEED.READ_MORE' : 'COMMON.BTN_SHOW') | translate }}</ion-label>\n <ion-icon slot=\"end\" name=\"chevron-forward-outline\"></ion-icon>\n </ion-button>\n }\n }\n </ion-card>\n }\n }\n </div>\n}\n\n<!-- Details modal -->\n<ion-modal #modal [showBackdrop]=\"false\"\n class=\"stack-modal\" [class.modal-large]=\"!mobile\">\n <ng-template>\n <ion-header>\n <ion-toolbar color=\"secondary\">\n <ion-title>{{ 'SOCIAL.FEED.NEWS' | translate }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"modal.dismiss()\">\n <ion-icon slot=\"icon-only\" name=\"close\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n <ion-content>\n <div class=\"ion-padding\">\n <app-feed\n [urls]=\"urls\"\n [showHeader]=\"false\"\n [showReadMoreButton]=\"false\"\n [maxContentLength]=\"-1\"\n [maxAgeInMonths]=\"-1\"\n [itemId]=\"modalItemId\"\n cardColor=\"light\"\n [debug]=\"debug\"\n ></app-feed>\n </div>\n </ion-content>\n </ng-template>\n</ion-modal>\n", styles: [":host{display:block;height:calc(100% - 10px);max-height:fit-content;overflow:hidden;--feed-header-height: 48px;-webkit-box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f;-webkit-margin-start:10px;margin-inline-start:10px;-webkit-margin-end:10px;margin-inline-end:10px;margin-top:0;margin-bottom:10px;--feed-border-radius: 4px;border-radius:var(--feed-border-radius);--ion-card-background: rgba(var(--ion-background-color-rgb), .6)}:host.shape-round{--feed-border-radius: 12px}ion-button{text-transform:unset;--color: rgba(var(--ion-color-contrast-rgb), .7)}ion-item.feed-header{height:var(--feed-header-height);margin:0;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);border-radius:var(--feed-border-radius) var(--feed-border-radius) 0 0}ion-item.feed-header ion-icon[slot=start]{-webkit-margin-end:8px;margin-inline-end:8px}.feed-content{height:auto;overflow-y:auto;--margin-bottom: 8px}.feed-content.has-header{height:calc(100% - var(--feed-header-height, 0))}.feed-content ion-card.feed-item-card{--top-radius: 4px;--bottom-radius: 4px;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);margin:0 0 var(--margin-bottom) 0;border-radius:var(--top-radius) var(--top-radius) var(--bottom-radius) var(--bottom-radius);--ion-card-color-contrast-rgb: var(--ion-color-contrast-rgb, var(--ion-color-dark-rgb, 0, 0, 0));--color: rgba(var(--ion-card-color-contrast-rgb), .87)}.feed-content ion-card.feed-item-card.first{--top-radius: 0}.feed-content ion-card.feed-item-card.last{--margin-bottom: 0;--bottom-radius: 0}.feed-content ion-card.feed-item-card ion-card-header ion-card-title{--color: rgba(var(--ion-card-color-contrast-rgb), .87)}.feed-content ion-card.feed-item-card ion-card-header ion-card-subtitle ion-chip{--background: transparent;--border-color: transparent;--border-width: 0}.feed-content ion-card.feed-item-card ion-card-header ion-card-subtitle ion-chip ion-avatar{--color: rgba(var(--ion-card-color-contrast-rgb), .6);border:1px solid var(--color)}.feed-content ion-card.feed-item-card ion-card-header ion-card-subtitle ion-chip ion-label{--color: rgba(var(--ion-card-color-contrast-rgb), .8);color:var(--color)}.feed-content ion-card.feed-item-card ion-card-header ion-card-subtitle ion-note{--color: rgba(var(--ion-card-color-contrast-rgb), .6);color:var(--color)}.feed-content ion-card.feed-item-card ion-card-header .tags{display:inline}.feed-content ion-card.feed-item-card ion-card-header .tags a{color:rgba(var(--ion-card-color-contrast-rgb),.6)!important}.feed-content ion-card.feed-item-card ion-card-content ion-text ::ng-deep img{max-width:100%;height:auto!important}.feed-content ion-card.feed-item-card .visible-hover{opacity:0;transition:opacity .2s ease-in-out}.feed-content ion-card.feed-item-card:hover .visible-hover{opacity:1}\n"], dependencies: [{ kind: "component", type: i3.IonAvatar, selector: "ion-avatar" }, { kind: "component", type: i3.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i3.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i3.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i3.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i3.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i3.IonCardSubtitle, selector: "ion-card-subtitle", inputs: ["color", "mode"] }, { kind: "component", type: i3.IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { kind: "component", type: i3.IonChip, selector: "ion-chip", inputs: ["color", "disabled", "mode", "outline"] }, { kind: "component", type: i3.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i3.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i3.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i3.IonImg, selector: "ion-img", inputs: ["alt", "src"] }, { kind: "component", type: i3.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i3.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i3.IonNote, selector: "ion-note", inputs: ["color", "mode"] }, { kind: "component", type: i3.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i3.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i3.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i3.IonModal, selector: "ion-modal" }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i5.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i8.DebugComponent, selector: "app-debug", inputs: ["titlePrefix", "title", "enable", "expanded"] }, { kind: "directive", type: i9.MarkdownDirective, selector: "markdown,[markdown]" }, { kind: "component", type: FeedsComponent, selector: "app-feed", inputs: ["debug", "mobile", "showHeader", "showReadMoreButton", "headerColor", "cardColor", "shape", "class", "itemId", "filterItem", "feeds", "urls", "maxAgeInMonths", "maxContentLength"], outputs: ["editItem", "deleteItem"] }, { kind: "directive", type: i10.FeedDirective, selector: "feed,[feed]", inputs: ["feed"] }, { kind: "pipe", type: i11.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.JsonPipe, name: "json" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i12.DateFromNowPipe, name: "dateFromNow" }, { kind: "pipe", type: i13.NotEmptyArrayPipe, name: "isNotEmptyArray" }, { kind: "pipe", type: i13.ArrayFirstPipe, name: "arrayFirst" }, { kind: "pipe", type: i13.ArrayFilterPipe, name: "arrayFilter" }, { kind: "pipe", type: i14.MapPipe, name: "map" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
262
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FeedsComponent, selector: "app-feed", inputs: { debug: "debug", mobile: "mobile", showHeader: "showHeader", showReadMoreButton: "showReadMoreButton", headerColor: "headerColor", cardColor: "cardColor", shape: "shape", class: "class", itemId: "itemId", filterItem: "filterItem", feeds: "feeds", urls: "urls", maxAgeInMonths: "maxAgeInMonths", maxContentLength: "maxContentLength" }, outputs: { editItem: "editItem", deleteItem: "deleteItem" }, host: { properties: { "class": "this.hostClass" } }, providers: [RxState], viewQueries: [{ propertyName: "modal", first: true, predicate: ["modal"], descendants: true }], ngImport: i0, template: "<!-- debug -->\n@if (debug) {\n <app-debug [title]=\"'Feed'\">\n <p>\n hasFeeds?: {{ hasFeeds$ | async }}\n <br />\n urls: {{ urls$ | async | json }}\n <br />\n shape: {{ shape }}\n </p>\n </app-debug>\n}\n\n@let feeds = feeds$ | async;\n@let userId = userId$ | async;\n\n@if (feeds | isNotEmptyArray) {\n <!-- top header -->\n @if (showHeader && (feeds | arrayFirst); as feed) {\n <ion-item lines=\"none\" [color]=\"headerColor\" class=\"feed-header shape-{{ shape }}\">\n <ion-icon slot=\"start\" name=\"megaphone\"></ion-icon>\n <ion-label>\n <b>{{ feed.title || ('SOCIAL.FEED.NEWS' | translate) }}</b>\n </ion-label>\n <ion-button slot=\"end\" fill=\"clear\" (click)=\"openFeedHome()\" shape=\"\">\n <ion-label translate>SOCIAL.FEED.SHOW_ALL_FEED</ion-label>\n <ion-icon slot=\"end\" name=\"chevron-forward-outline\"></ion-icon>\n </ion-button>\n </ion-item>\n }\n\n <div class=\"feed-content shape-{{ shape }} ion-no-padding\" [class.has-header]=\"showHeader\">\n <!-- feeds -->\n @for (feed of feeds; track feed.feed_url; let firstFeed = $first; let lastFeed = $last) {\n <!-- items -->\n @for (item of feed.items | arrayFilter: filterItem; track item.id; let firstItem = $first; let lastItem = $last) {\n <ion-card\n [class.first]=\"firstFeed && firstItem\"\n [class.last]=\"lastFeed && lastItem\"\n [color]=\"cardColor !== 'light-transparent' ? cardColor : undefined\"\n class=\"feed-item-card\"\n >\n <ion-card-header>\n <ion-card-subtitle style=\"vertical-align: middle\">\n <!-- Authors -->\n @for (author of item.authors || feed.authors; track author) {\n @if (author.name || author.avatar) {\n <ion-chip (click)=\"openUrl(author.url)\" tappable>\n @if (author.avatar) {\n <ion-avatar>\n <ion-img [src]=\"author.avatar\" [alt]=\"author.name\"></ion-img>\n </ion-avatar>\n }\n @if (author.name) {\n <ion-label class=\"author\">{{ author.name }}</ion-label>\n }\n </ion-chip>\n }\n }\n <ion-note class=\"ion-float-end\">\n <small>{{ item.date_published | dateFromNow }}</small>\n </ion-note>\n </ion-card-subtitle>\n\n <!-- title -->\n <ion-card-title (click)=\"openFeedItem(item, feed)\" tappable>{{ item?.title }}</ion-card-title>\n\n <!-- tags -->\n @let tags = item | map: getTags;\n @if (tags | isNotEmptyArray) {\n <ion-text class=\"tags\">\n @for (tag of tags; track tag; let last = $last) {\n <a (click)=\"openTag(feed, tag)\" tappable>\n <ion-text>#{{ tag }}</ion-text>\n </a>\n @if (!last) {\n \n }\n }\n </ion-text>\n }\n </ion-card-header>\n\n <!-- Feed content -->\n <ion-card-content>\n <ion-text [feed]=\"item.url || feed.feed_url\">\n @if (item.content_html) {\n <p [innerHTML]=\"item.content_html\"></p>\n } @else if (item.content_text) {\n <p>\n <markdown [data]=\"item.content_text\" emoji></markdown>\n </p>\n }\n </ion-text>\n </ion-card-content>\n\n @let editable = canEditItem(item, userId, feed);\n @if (editable || showReadMoreButton) {\n @if (editable) {\n\n <!-- Delete button (visible hover)-->\n <button\n mat-icon-button\n (click)=\"onDeleteItem($event, item)\"\n class=\"visible-hover ion-float-start\"\n [title]=\"'COMMON.BTN_DELETE' | translate\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n <!-- Edit button (visible hover) -->\n <ion-button\n (click)=\"onEditItem($event, item)\"\n class=\"visible-hover ion-float-start\" fill=\"clear\"\n >\n <mat-icon slot=\"start\">edit</mat-icon>\n<!-- <ion-icon name=\"pencil\" slot=\"start\"></ion-icon>-->\n <ion-label translate>COMMON.BTN_EDIT</ion-label>\n </ion-button>\n }\n @if (showReadMoreButton) {\n <ion-button (click)=\"openFeedItem(item, feed)\" class=\"ion-float-end\" fill=\"clear\">\n <ion-label>{{ (item.truncated ? 'SOCIAL.FEED.READ_MORE' : 'COMMON.BTN_SHOW') | translate }}</ion-label>\n <ion-icon slot=\"end\" name=\"chevron-forward-outline\"></ion-icon>\n </ion-button>\n }\n }\n </ion-card>\n }\n }\n </div>\n}\n\n<!-- Details modal -->\n<ion-modal #modal [showBackdrop]=\"false\"\n class=\"stack-modal\" [class.modal-large]=\"!mobile\">\n <ng-template>\n <ion-header>\n <ion-toolbar color=\"secondary\">\n <ion-title>{{ 'SOCIAL.FEED.NEWS' | translate }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"modal.dismiss()\">\n <ion-icon slot=\"icon-only\" name=\"close\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n <ion-content>\n <div class=\"ion-padding\">\n <app-feed\n [urls]=\"urls\"\n [showHeader]=\"false\"\n [showReadMoreButton]=\"false\"\n [maxContentLength]=\"-1\"\n [maxAgeInMonths]=\"-1\"\n [itemId]=\"modalItemId\"\n cardColor=\"light\"\n [debug]=\"debug\"\n ></app-feed>\n </div>\n </ion-content>\n </ng-template>\n</ion-modal>\n", styles: [":host{display:block;height:calc(100% - 10px);max-height:fit-content;overflow:hidden;--feed-header-height: 48px;-webkit-box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px rgba(0,0,0,.14),0 1px 5px rgba(0,0,0,.12);-webkit-margin-start:10px;margin-inline-start:10px;-webkit-margin-end:10px;margin-inline-end:10px;margin-top:0;margin-bottom:10px;--feed-border-radius: 4px;border-radius:var(--feed-border-radius);--ion-card-background: rgba(var(--ion-background-color-rgb), .6)}:host.shape-round{--feed-border-radius: 12px}ion-button{text-transform:unset;--color: rgba(var(--ion-color-contrast-rgb), .7)}ion-item.feed-header{height:var(--feed-header-height);margin:0;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);border-radius:var(--feed-border-radius) var(--feed-border-radius) 0 0}ion-item.feed-header ion-icon[slot=start]{-webkit-margin-end:8px;margin-inline-end:8px}.feed-content{height:auto;overflow-y:auto;--margin-bottom: 8px}.feed-content.has-header{height:calc(100% - var(--feed-header-height, 0))}.feed-content ion-card.feed-item-card{--top-radius: 4px;--bottom-radius: 4px;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);margin:0 0 var(--margin-bottom) 0;border-radius:var(--top-radius) var(--top-radius) var(--bottom-radius) var(--bottom-radius);--ion-card-color-contrast-rgb: var(--ion-color-contrast-rgb, var(--ion-color-dark-rgb, 0, 0, 0));--color: rgba(var(--ion-card-color-contrast-rgb), .87)}.feed-content ion-card.feed-item-card.first{--top-radius: 0}.feed-content ion-card.feed-item-card.last{--margin-bottom: 0;--bottom-radius: 0}.feed-content ion-card.feed-item-card ion-card-header ion-card-title{--color: rgba(var(--ion-card-color-contrast-rgb), .87)}.feed-content ion-card.feed-item-card ion-card-header ion-card-subtitle ion-chip{--background: transparent;--border-color: transparent;--border-width: 0}.feed-content ion-card.feed-item-card ion-card-header ion-card-subtitle ion-chip ion-avatar{--color: rgba(var(--ion-card-color-contrast-rgb), .6);border:1px solid var(--color)}.feed-content ion-card.feed-item-card ion-card-header ion-card-subtitle ion-chip ion-label{--color: rgba(var(--ion-card-color-contrast-rgb), .8);color:var(--color)}.feed-content ion-card.feed-item-card ion-card-header ion-card-subtitle ion-note{--color: rgba(var(--ion-card-color-contrast-rgb), .6);color:var(--color)}.feed-content ion-card.feed-item-card ion-card-header .tags{display:inline}.feed-content ion-card.feed-item-card ion-card-header .tags a{color:rgba(var(--ion-card-color-contrast-rgb),.6)!important}.feed-content ion-card.feed-item-card ion-card-content ion-text ::ng-deep img{max-width:100%;height:auto!important}.feed-content ion-card.feed-item-card .visible-hover{opacity:0;transition:opacity .2s ease-in-out}.feed-content ion-card.feed-item-card:hover .visible-hover{opacity:1}\n"], dependencies: [{ kind: "component", type: i3.IonAvatar, selector: "ion-avatar" }, { kind: "component", type: i3.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i3.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i3.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i3.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i3.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i3.IonCardSubtitle, selector: "ion-card-subtitle", inputs: ["color", "mode"] }, { kind: "component", type: i3.IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { kind: "component", type: i3.IonChip, selector: "ion-chip", inputs: ["color", "disabled", "mode", "outline"] }, { kind: "component", type: i3.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i3.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i3.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i3.IonImg, selector: "ion-img", inputs: ["alt", "src"] }, { kind: "component", type: i3.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i3.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i3.IonNote, selector: "ion-note", inputs: ["color", "mode"] }, { kind: "component", type: i3.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i3.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i3.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i3.IonModal, selector: "ion-modal" }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i5.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i8.DebugComponent, selector: "app-debug", inputs: ["titlePrefix", "title", "enable", "expanded"] }, { kind: "directive", type: i9.MarkdownDirective, selector: "markdown,[markdown]" }, { kind: "component", type: FeedsComponent, selector: "app-feed", inputs: ["debug", "mobile", "showHeader", "showReadMoreButton", "headerColor", "cardColor", "shape", "class", "itemId", "filterItem", "feeds", "urls", "maxAgeInMonths", "maxContentLength"], outputs: ["editItem", "deleteItem"] }, { kind: "directive", type: i10.FeedDirective, selector: "feed,[feed]", inputs: ["feed"] }, { kind: "pipe", type: i11.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.JsonPipe, name: "json" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i12.DateFromNowPipe, name: "dateFromNow" }, { kind: "pipe", type: i13.NotEmptyArrayPipe, name: "isNotEmptyArray" }, { kind: "pipe", type: i13.ArrayFirstPipe, name: "arrayFirst" }, { kind: "pipe", type: i13.ArrayFilterPipe, name: "arrayFilter" }, { kind: "pipe", type: i14.MapPipe, name: "map" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
263
263
|
}
|
|
264
264
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeedsComponent, decorators: [{
|
|
265
265
|
type: Component,
|
|
266
|
-
args: [{ selector: 'app-feed', providers: [RxState], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- debug -->\n@if (debug) {\n <app-debug [title]=\"'Feed'\">\n <p>\n hasFeeds?: {{ hasFeeds$ | async }}\n <br />\n urls: {{ urls$ | async | json }}\n <br />\n shape: {{ shape }}\n </p>\n </app-debug>\n}\n\n@let feeds = feeds$ | async;\n@let userId = userId$ | async;\n\n@if (feeds | isNotEmptyArray) {\n <!-- top header -->\n @if (showHeader && (feeds | arrayFirst); as feed) {\n <ion-item lines=\"none\" [color]=\"headerColor\" class=\"feed-header shape-{{ shape }}\">\n <ion-icon slot=\"start\" name=\"megaphone\"></ion-icon>\n <ion-label>\n <b>{{ feed.title || ('SOCIAL.FEED.NEWS' | translate) }}</b>\n </ion-label>\n <ion-button slot=\"end\" fill=\"clear\" (click)=\"openFeedHome()\" shape=\"\">\n <ion-label translate>SOCIAL.FEED.SHOW_ALL_FEED</ion-label>\n <ion-icon slot=\"end\" name=\"chevron-forward-outline\"></ion-icon>\n </ion-button>\n </ion-item>\n }\n\n <div class=\"feed-content shape-{{ shape }} ion-no-padding\" [class.has-header]=\"showHeader\">\n <!-- feeds -->\n @for (feed of feeds; track feed.feed_url; let firstFeed = $first; let lastFeed = $last) {\n <!-- items -->\n @for (item of feed.items | arrayFilter: filterItem; track item.id; let firstItem = $first; let lastItem = $last) {\n <ion-card\n [class.first]=\"firstFeed && firstItem\"\n [class.last]=\"lastFeed && lastItem\"\n [color]=\"cardColor !== 'light-transparent' ? cardColor : undefined\"\n class=\"feed-item-card\"\n >\n <ion-card-header>\n <ion-card-subtitle style=\"vertical-align: middle\">\n <!-- Authors -->\n @for (author of item.authors || feed.authors; track author) {\n @if (author.name || author.avatar) {\n <ion-chip (click)=\"openUrl(author.url)\" tappable>\n @if (author.avatar) {\n <ion-avatar>\n <ion-img [src]=\"author.avatar\" [alt]=\"author.name\"></ion-img>\n </ion-avatar>\n }\n @if (author.name) {\n <ion-label class=\"author\">{{ author.name }}</ion-label>\n }\n </ion-chip>\n }\n }\n <ion-note class=\"ion-float-end\">\n <small>{{ item.date_published | dateFromNow }}</small>\n </ion-note>\n </ion-card-subtitle>\n\n <!-- title -->\n <ion-card-title (click)=\"openFeedItem(item, feed)\" tappable>{{ item?.title }}</ion-card-title>\n\n <!-- tags -->\n @let tags = item | map: getTags;\n @if (tags | isNotEmptyArray) {\n <ion-text class=\"tags\">\n @for (tag of tags; track tag; let last = $last) {\n <a (click)=\"openTag(feed, tag)\" tappable>\n <ion-text>#{{ tag }}</ion-text>\n </a>\n @if (!last) {\n \n }\n }\n </ion-text>\n }\n </ion-card-header>\n\n <!-- Feed content -->\n <ion-card-content>\n <ion-text [feed]=\"item.url || feed.feed_url\">\n @if (item.content_html) {\n <p [innerHTML]=\"item.content_html\"></p>\n } @else if (item.content_text) {\n <p>\n <markdown [data]=\"item.content_text\" emoji></markdown>\n </p>\n }\n </ion-text>\n </ion-card-content>\n\n @let editable = canEditItem(item, userId, feed);\n @if (editable || showReadMoreButton) {\n @if (editable) {\n\n <!-- Delete button (visible hover)-->\n <button\n mat-icon-button\n (click)=\"onDeleteItem($event, item)\"\n class=\"visible-hover ion-float-start\"\n [title]=\"'COMMON.BTN_DELETE' | translate\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n <!-- Edit button (visible hover) -->\n <ion-button\n (click)=\"onEditItem($event, item)\"\n class=\"visible-hover ion-float-start\" fill=\"clear\"\n >\n <mat-icon slot=\"start\">edit</mat-icon>\n<!-- <ion-icon name=\"pencil\" slot=\"start\"></ion-icon>-->\n <ion-label translate>COMMON.BTN_EDIT</ion-label>\n </ion-button>\n }\n @if (showReadMoreButton) {\n <ion-button (click)=\"openFeedItem(item, feed)\" class=\"ion-float-end\" fill=\"clear\">\n <ion-label>{{ (item.truncated ? 'SOCIAL.FEED.READ_MORE' : 'COMMON.BTN_SHOW') | translate }}</ion-label>\n <ion-icon slot=\"end\" name=\"chevron-forward-outline\"></ion-icon>\n </ion-button>\n }\n }\n </ion-card>\n }\n }\n </div>\n}\n\n<!-- Details modal -->\n<ion-modal #modal [showBackdrop]=\"false\"\n class=\"stack-modal\" [class.modal-large]=\"!mobile\">\n <ng-template>\n <ion-header>\n <ion-toolbar color=\"secondary\">\n <ion-title>{{ 'SOCIAL.FEED.NEWS' | translate }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"modal.dismiss()\">\n <ion-icon slot=\"icon-only\" name=\"close\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n <ion-content>\n <div class=\"ion-padding\">\n <app-feed\n [urls]=\"urls\"\n [showHeader]=\"false\"\n [showReadMoreButton]=\"false\"\n [maxContentLength]=\"-1\"\n [maxAgeInMonths]=\"-1\"\n [itemId]=\"modalItemId\"\n cardColor=\"light\"\n [debug]=\"debug\"\n ></app-feed>\n </div>\n </ion-content>\n </ng-template>\n</ion-modal>\n", styles: [":host{display:block;height:calc(100% - 10px);max-height:fit-content;overflow:hidden;--feed-header-height: 48px;-webkit-box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 3px 1px -2px
|
|
266
|
+
args: [{ selector: 'app-feed', providers: [RxState], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- debug -->\n@if (debug) {\n <app-debug [title]=\"'Feed'\">\n <p>\n hasFeeds?: {{ hasFeeds$ | async }}\n <br />\n urls: {{ urls$ | async | json }}\n <br />\n shape: {{ shape }}\n </p>\n </app-debug>\n}\n\n@let feeds = feeds$ | async;\n@let userId = userId$ | async;\n\n@if (feeds | isNotEmptyArray) {\n <!-- top header -->\n @if (showHeader && (feeds | arrayFirst); as feed) {\n <ion-item lines=\"none\" [color]=\"headerColor\" class=\"feed-header shape-{{ shape }}\">\n <ion-icon slot=\"start\" name=\"megaphone\"></ion-icon>\n <ion-label>\n <b>{{ feed.title || ('SOCIAL.FEED.NEWS' | translate) }}</b>\n </ion-label>\n <ion-button slot=\"end\" fill=\"clear\" (click)=\"openFeedHome()\" shape=\"\">\n <ion-label translate>SOCIAL.FEED.SHOW_ALL_FEED</ion-label>\n <ion-icon slot=\"end\" name=\"chevron-forward-outline\"></ion-icon>\n </ion-button>\n </ion-item>\n }\n\n <div class=\"feed-content shape-{{ shape }} ion-no-padding\" [class.has-header]=\"showHeader\">\n <!-- feeds -->\n @for (feed of feeds; track feed.feed_url; let firstFeed = $first; let lastFeed = $last) {\n <!-- items -->\n @for (item of feed.items | arrayFilter: filterItem; track item.id; let firstItem = $first; let lastItem = $last) {\n <ion-card\n [class.first]=\"firstFeed && firstItem\"\n [class.last]=\"lastFeed && lastItem\"\n [color]=\"cardColor !== 'light-transparent' ? cardColor : undefined\"\n class=\"feed-item-card\"\n >\n <ion-card-header>\n <ion-card-subtitle style=\"vertical-align: middle\">\n <!-- Authors -->\n @for (author of item.authors || feed.authors; track author) {\n @if (author.name || author.avatar) {\n <ion-chip (click)=\"openUrl(author.url)\" tappable>\n @if (author.avatar) {\n <ion-avatar>\n <ion-img [src]=\"author.avatar\" [alt]=\"author.name\"></ion-img>\n </ion-avatar>\n }\n @if (author.name) {\n <ion-label class=\"author\">{{ author.name }}</ion-label>\n }\n </ion-chip>\n }\n }\n <ion-note class=\"ion-float-end\">\n <small>{{ item.date_published | dateFromNow }}</small>\n </ion-note>\n </ion-card-subtitle>\n\n <!-- title -->\n <ion-card-title (click)=\"openFeedItem(item, feed)\" tappable>{{ item?.title }}</ion-card-title>\n\n <!-- tags -->\n @let tags = item | map: getTags;\n @if (tags | isNotEmptyArray) {\n <ion-text class=\"tags\">\n @for (tag of tags; track tag; let last = $last) {\n <a (click)=\"openTag(feed, tag)\" tappable>\n <ion-text>#{{ tag }}</ion-text>\n </a>\n @if (!last) {\n \n }\n }\n </ion-text>\n }\n </ion-card-header>\n\n <!-- Feed content -->\n <ion-card-content>\n <ion-text [feed]=\"item.url || feed.feed_url\">\n @if (item.content_html) {\n <p [innerHTML]=\"item.content_html\"></p>\n } @else if (item.content_text) {\n <p>\n <markdown [data]=\"item.content_text\" emoji></markdown>\n </p>\n }\n </ion-text>\n </ion-card-content>\n\n @let editable = canEditItem(item, userId, feed);\n @if (editable || showReadMoreButton) {\n @if (editable) {\n\n <!-- Delete button (visible hover)-->\n <button\n mat-icon-button\n (click)=\"onDeleteItem($event, item)\"\n class=\"visible-hover ion-float-start\"\n [title]=\"'COMMON.BTN_DELETE' | translate\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n <!-- Edit button (visible hover) -->\n <ion-button\n (click)=\"onEditItem($event, item)\"\n class=\"visible-hover ion-float-start\" fill=\"clear\"\n >\n <mat-icon slot=\"start\">edit</mat-icon>\n<!-- <ion-icon name=\"pencil\" slot=\"start\"></ion-icon>-->\n <ion-label translate>COMMON.BTN_EDIT</ion-label>\n </ion-button>\n }\n @if (showReadMoreButton) {\n <ion-button (click)=\"openFeedItem(item, feed)\" class=\"ion-float-end\" fill=\"clear\">\n <ion-label>{{ (item.truncated ? 'SOCIAL.FEED.READ_MORE' : 'COMMON.BTN_SHOW') | translate }}</ion-label>\n <ion-icon slot=\"end\" name=\"chevron-forward-outline\"></ion-icon>\n </ion-button>\n }\n }\n </ion-card>\n }\n }\n </div>\n}\n\n<!-- Details modal -->\n<ion-modal #modal [showBackdrop]=\"false\"\n class=\"stack-modal\" [class.modal-large]=\"!mobile\">\n <ng-template>\n <ion-header>\n <ion-toolbar color=\"secondary\">\n <ion-title>{{ 'SOCIAL.FEED.NEWS' | translate }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"modal.dismiss()\">\n <ion-icon slot=\"icon-only\" name=\"close\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n <ion-content>\n <div class=\"ion-padding\">\n <app-feed\n [urls]=\"urls\"\n [showHeader]=\"false\"\n [showReadMoreButton]=\"false\"\n [maxContentLength]=\"-1\"\n [maxAgeInMonths]=\"-1\"\n [itemId]=\"modalItemId\"\n cardColor=\"light\"\n [debug]=\"debug\"\n ></app-feed>\n </div>\n </ion-content>\n </ng-template>\n</ion-modal>\n", styles: [":host{display:block;height:calc(100% - 10px);max-height:fit-content;overflow:hidden;--feed-header-height: 48px;-webkit-box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px rgba(0,0,0,.14),0 1px 5px rgba(0,0,0,.12);-webkit-margin-start:10px;margin-inline-start:10px;-webkit-margin-end:10px;margin-inline-end:10px;margin-top:0;margin-bottom:10px;--feed-border-radius: 4px;border-radius:var(--feed-border-radius);--ion-card-background: rgba(var(--ion-background-color-rgb), .6)}:host.shape-round{--feed-border-radius: 12px}ion-button{text-transform:unset;--color: rgba(var(--ion-color-contrast-rgb), .7)}ion-item.feed-header{height:var(--feed-header-height);margin:0;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);border-radius:var(--feed-border-radius) var(--feed-border-radius) 0 0}ion-item.feed-header ion-icon[slot=start]{-webkit-margin-end:8px;margin-inline-end:8px}.feed-content{height:auto;overflow-y:auto;--margin-bottom: 8px}.feed-content.has-header{height:calc(100% - var(--feed-header-height, 0))}.feed-content ion-card.feed-item-card{--top-radius: 4px;--bottom-radius: 4px;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);margin:0 0 var(--margin-bottom) 0;border-radius:var(--top-radius) var(--top-radius) var(--bottom-radius) var(--bottom-radius);--ion-card-color-contrast-rgb: var(--ion-color-contrast-rgb, var(--ion-color-dark-rgb, 0, 0, 0));--color: rgba(var(--ion-card-color-contrast-rgb), .87)}.feed-content ion-card.feed-item-card.first{--top-radius: 0}.feed-content ion-card.feed-item-card.last{--margin-bottom: 0;--bottom-radius: 0}.feed-content ion-card.feed-item-card ion-card-header ion-card-title{--color: rgba(var(--ion-card-color-contrast-rgb), .87)}.feed-content ion-card.feed-item-card ion-card-header ion-card-subtitle ion-chip{--background: transparent;--border-color: transparent;--border-width: 0}.feed-content ion-card.feed-item-card ion-card-header ion-card-subtitle ion-chip ion-avatar{--color: rgba(var(--ion-card-color-contrast-rgb), .6);border:1px solid var(--color)}.feed-content ion-card.feed-item-card ion-card-header ion-card-subtitle ion-chip ion-label{--color: rgba(var(--ion-card-color-contrast-rgb), .8);color:var(--color)}.feed-content ion-card.feed-item-card ion-card-header ion-card-subtitle ion-note{--color: rgba(var(--ion-card-color-contrast-rgb), .6);color:var(--color)}.feed-content ion-card.feed-item-card ion-card-header .tags{display:inline}.feed-content ion-card.feed-item-card ion-card-header .tags a{color:rgba(var(--ion-card-color-contrast-rgb),.6)!important}.feed-content ion-card.feed-item-card ion-card-content ion-text ::ng-deep img{max-width:100%;height:auto!important}.feed-content ion-card.feed-item-card .visible-hover{opacity:0;transition:opacity .2s ease-in-out}.feed-content ion-card.feed-item-card:hover .visible-hover{opacity:1}\n"] }]
|
|
267
267
|
}], ctorParameters: () => [{ type: i1.LocalSettingsService }, { type: i15.Environment, decorators: [{
|
|
268
268
|
type: Inject,
|
|
269
269
|
args: [ENVIRONMENT]
|
|
@@ -311,4 +311,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
311
311
|
type: ViewChild,
|
|
312
312
|
args: ['modal']
|
|
313
313
|
}] } });
|
|
314
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC9mZWVkL2ZlZWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zb2NpYWwvZmVlZC9mZWVkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRSxPQUFPLEVBQTBCLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQWUsV0FBVyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFbkYsT0FBTyxFQUFFLGdCQUFnQixFQUFnQixNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFJdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFP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Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFFTSxLQUFLO3NCQUFqQixLQUFLO2dCQVFPLElBQUk7c0JBQWhCLEtBQUs7Z0JBWU8sY0FBYztzQkFBMUIsS0FBSztnQkFRTyxnQkFBZ0I7c0JBQTVCLEtBQUs7Z0JBYUYsU0FBUztzQkFEWixXQUFXO3VCQUFDLE9BQU87Z0JBV0EsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIEluamVjdCxcclxuICBpbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPcHRpb25hbCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSeFN0YXRlIH0gZnJvbSAnQHJ4LWFuZ3VsYXIvc3RhdGUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IGFycmF5RGlzdGluY3QsIGlzTmlsLCBpc05vdEVtcHR5QXJyYXkgfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgSnNvbkZlZWQsIEpzb25GZWVkSXRlbSwgSnNvbkZlZWRVdGlscyB9IGZyb20gJy4vZmVlZC5tb2RlbCc7XHJcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBQbGF0Zm9ybVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL3BsYXRmb3JtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudCwgRU5WSVJPTk1FTlQgfSBmcm9tICcuLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQuY2xhc3MnO1xyXG5pbXBvcnQgeyBBcHBDb2xvcnMgfSBmcm9tICcuLi8uLi9zaGFyZWQvdHlwZXMnO1xyXG5pbXBvcnQgeyBBUFBfRkVFRF9TRVJWSUNFLCBJRmVlZFNlcnZpY2UgfSBmcm9tICcuL2ZlZWQuc2VydmljZSc7XHJcbmltcG9ydCB7IE5ldHdvcmtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9uZXR3b3JrLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVcmxVdGlscyB9IGZyb20gJy4uLy4uL3NoYXJlZC9maWxlL3VybC51dGlscyc7XHJcbmltcG9ydCB7IEFsZXJ0Q29udHJvbGxlciwgSW9uTW9kYWwgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XHJcbmltcG9ydCB7IExvY2FsU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9sb2NhbC1zZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2FjY291bnQuc2VydmljZSc7XHJcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFsZXJ0cyB9IGZyb20gJy4uLy4uL3NoYXJlZC9hbGVydHMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGZWVkU3RhdGU8VD4ge1xyXG4gIHBlZXJVcmw6IHN0cmluZztcclxuICB1c2VySWQ6IG51bWJlcjtcclxuICBtYXhBZ2VJbk1vbnRoczogbnVtYmVyO1xyXG4gIG1heENvbnRlbnRMZW5ndGg6IG51bWJlcjtcclxuICB1cmxzOiBzdHJpbmdbXTtcclxuICBmZWVkczogVFtdO1xyXG4gIGhhc0ZlZWRzOiBib29sZWFuO1xyXG4gIGxvY2FsZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBGaWx0ZXJJdGVtRnVuY3Rpb24gPSAoaXRlbTogSnNvbkZlZWRJdGVtKSA9PiBib29sZWFuO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZmVlZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZlZWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZlZWQuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtSeFN0YXRlXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZlZWRzQ29tcG9uZW50PFQgZXh0ZW5kcyBKc29uRmVlZCA9IEpzb25GZWVkLCBTIGV4dGVuZHMgRmVlZFN0YXRlPFQ+ID0gRmVlZFN0YXRlPFQ+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcm90ZWN0ZWQgX3N0YXRlID0gbmV3IFJ4U3RhdGU8Uz4oKTtcclxuICBwcm90ZWN0ZWQgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xyXG4gIHByb3RlY3RlZCBwbGF0Zm9ybSA9IGluamVjdChQbGF0Zm9ybVNlcnZpY2UpO1xyXG4gIHByb3RlY3RlZCBuZXR3b3JrU2VydmljZSA9IGluamVjdChOZXR3b3JrU2VydmljZSk7XHJcbiAgcHJvdGVjdGVkIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG4gIHByb3RlY3RlZCB2ZXJzaW9uOiBzdHJpbmc7XHJcbiAgcHJvdGVjdGVkIG1vZGFsSXRlbUlkOiBzdHJpbmc7XHJcbiAgcHJvdGVjdGVkIG9uUmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBmZWVkcyQgPSB0aGlzLl9zdGF0ZS5zZWxlY3QoJ2ZlZWRzJyk7XHJcbiAgdXJscyQgPSB0aGlzLl9zdGF0ZS5zZWxlY3QoJ3VybHMnKTtcclxuICBoYXNGZWVkcyQgPSB0aGlzLl9zdGF0ZS5zZWxlY3QoJ2hhc0ZlZWRzJyk7XHJcbiAgdXNlcklkJCA9IHRoaXMuX3N0YXRlLnNlbGVjdCgndXNlcklkJyk7XHJcblxyXG4gIEBJbnB1dCgpIGRlYnVnID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbW9iaWxlOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHNob3dIZWFkZXIgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dSZWFkTW9yZUJ1dHRvbiA9IHRydWU7XHJcbiAgQElucHV0KCkgaGVhZGVyQ29sb3I6IEFwcENvbG9ycyA9ICdzZWNvbmRhcnknO1xyXG4gIEBJbnB1dCgpIGNhcmRDb2xvcjogQXBwQ29sb3JzIHwgJ2xpZ2h0LXRyYW5zcGFyZW50JyA9ICdsaWdodC10cmFuc3BhcmVudCc7XHJcbiAgQElucHV0KCkgc2hhcGU6ICdyb3VuZCcgfCAnbGVnYWN5JyA9ICdsZWdhY3knO1xyXG4gIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBpdGVtSWQ6IHN0cmluZztcclxuICBASW5wdXQoKSBmaWx0ZXJJdGVtOiBGaWx0ZXJJdGVtRnVuY3Rpb247XHJcblxyXG4gIEBPdXRwdXQoKSBlZGl0SXRlbSA9IG5ldyBFdmVudEVtaXR0ZXI8SnNvbkZlZWRJdGVtPigpO1xyXG4gIEBPdXRwdXQoKSBkZWxldGVJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxKc29uRmVlZEl0ZW0+KCk7XHJcblxyXG4gIEBJbnB1dCgpIHNldCBmZWVkcyh2YWx1ZTogVFtdKSB7XHJcbiAgICB0aGlzLl9zdGF0ZS5zZXQoJ2ZlZWRzJywgKCkgPT4gdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZlZWRzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlLmdldCgnZmVlZHMnKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCB1cmxzKHZhbHVlOiBzdHJpbmdbXSkge1xyXG4gICAgdGhpcy5fc3RhdGUuc2V0KCd1cmxzJywgKCkgPT4gdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHVybHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUuZ2V0KCd1cmxzJyk7XHJcbiAgfVxyXG5cclxuICBnZXQgaGFzRmVlZHMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUuZ2V0KCdoYXNGZWVkcycpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IG1heEFnZUluTW9udGhzKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX3N0YXRlLnNldCgnbWF4QWdlSW5Nb250aHMnLCAoKSA9PiB2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgbWF4QWdlSW5Nb250aHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUuZ2V0KCdtYXhBZ2VJbk1vbnRocycpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IG1heENvbnRlbnRMZW5ndGgodmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fc3RhdGUuc2V0KCdtYXhDb250ZW50TGVuZ3RoJywgKCkgPT4gdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1heENvbnRlbnRMZW5ndGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUuZ2V0KCdtYXhDb250ZW50TGVuZ3RoJyk7XHJcbiAgfVxyXG5cclxuICBnZXQgcGVlclVybCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9zdGF0ZS5nZXQoJ3BlZXJVcmwnKTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxyXG4gIGdldCBob3N0Q2xhc3MoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGNsYXNzZXMgPSBbdGhpcy5jbGFzc107XHJcblxyXG4gICAgaWYgKHRoaXMuc2hhcGUpIHtcclxuICAgICAgY2xhc3Nlcy5wdXNoKGBzaGFwZS0ke3RoaXMuc2hhcGV9YCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNsYXNzZXMuZmlsdGVyKChjbHMpID0+IGNscykuam9pbignICcpO1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgnbW9kYWwnKSBtb2RhbDogSW9uTW9kYWw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgc2V0dGluZ3M6IExvY2FsU2V0dGluZ3NTZXJ2aWNlLFxyXG4gICAgQEluamVjdChFTlZJUk9OTUVOVCkgcHJvdGVjdGVkIGVudmlyb25tZW50OiBFbnZpcm9ubWVudCxcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVBQX0ZFRURfU0VSVklDRSkgcHVibGljIGZlZWRTZXJ2aWNlOiBJRmVlZFNlcnZpY2U8VD4sXHJcbiAgICBwcm90ZWN0ZWQgYWNjb3VudFNlcnZpY2U6IEFjY291bnRTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIGFsZXJ0Q3RybDogQWxlcnRDb250cm9sbGVyXHJcbiAgKSB7XHJcbiAgICB0aGlzLm1vYmlsZSA9IHNldHRpbmdzLm1vYmlsZTtcclxuICAgIHRoaXMuX3N0YXRlLmNvbm5lY3QoJ2xvY2FsZScsIHNldHRpbmdzLmxvY2FsZSQpO1xyXG4gICAgdGhpcy5fc3RhdGUuY29ubmVjdCgnaGFzRmVlZHMnLCB0aGlzLmZlZWRzJC5waXBlKG1hcChpc05vdEVtcHR5QXJyYXkpKSk7XHJcbiAgICB0aGlzLl9zdGF0ZS5jb25uZWN0KCd1c2VySWQnLCB0aGlzLmFjY291bnRTZXJ2aWNlLnBlcnNvbiQucGlwZShtYXAoKHBlcnNvbikgPT4gcGVyc29uPy5pZCkpKTtcclxuICAgIHRoaXMuX3N0YXRlLmNvbm5lY3QoJ3BlZXJVcmwnLCB0aGlzLm5ldHdvcmtTZXJ2aWNlLnBlZXIkLnBpcGUobWFwKChwZWVyKSA9PiBwZWVyPy51cmwpKSk7XHJcblxyXG4gICAgaWYgKHRoaXMuZmVlZFNlcnZpY2UpIHtcclxuICAgICAgdGhpcy5fc3RhdGUuY29ubmVjdChcclxuICAgICAgICAnZmVlZHMnLFxyXG4gICAgICAgIG1lcmdlKFxyXG4gICAgICAgICAgdGhpcy5vblJlZnJlc2gucGlwZShtYXAoKCkgPT4gKHsgLi4udGhpcy5fc3RhdGUuZ2V0KCksIGNhY2hlOiBmYWxzZSB9KSkpLFxyXG4gICAgICAgICAgdGhpcy5fc3RhdGVcclxuICAgICAgICAgICAgLnNlbGVjdChbJ3VybHMnLCAnbWF4QWdlSW5Nb250aHMnLCAnbWF4Q29udGVudExlbmd0aCcsICdsb2NhbGUnXSlcclxuICAgICAgICAgICAgLnBpcGUobWFwKCh7IHVybHMsIG1heEFnZUluTW9udGhzLCBtYXhDb250ZW50TGVuZ3RoLCBsb2NhbGUgfSkgPT4gKHsgdXJscywgbWF4QWdlSW5Nb250aHMsIG1heENvbnRlbnRMZW5ndGgsIGxvY2FsZSwgY2FjaGU6IHRydWUgfSkpKVxyXG4gICAgICAgICkucGlwZShcclxuICAgICAgICAgIHN3aXRjaE1hcCgoeyB1cmxzLCBtYXhBZ2VJbk1vbnRocywgbWF4Q29udGVudExlbmd0aCwgbG9jYWxlLCBjYWNoZSB9KSA9PlxyXG4gICAgICAgICAgICB0aGlzLmZlZWRTZXJ2aWNlLndhdGNoQWxsKHtcclxuICAgICAgICAgICAgICB1cmxzOiB1cmxzLFxyXG4gICAgICAgICAgICAgIG1heEFnZUluTW9udGhzLFxyXG4gICAgICAgICAgICAgIG1heENvbnRlbnRMZW5ndGgsXHJcbiAgICAgICAgICAgICAgbG9jYWxlLFxyXG4gICAgICAgICAgICAgIGNhY2hlLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKSxcclxuICAgICAgICAgIG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpXHJcblxyXG4gICAgICAgICAgLy8gREVCVUdcclxuICAgICAgICAgIC8vdGFwKChmZWVkcykgPT4gY29uc29sZS5kZWJ1ZygnW2ZlZWQtY29tcG9uZW50XSBmZWVkcycsIGZlZWRzKSlcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudXJscyA9IHRoaXMudXJscyA/PyBudWxsOyAvLyBTaG91bGQgc2V0IHRoZSB1cmxzLCBpbiBvcmRlciB0byB0cmlnZ2VyIHRoZSBzZWxlY3QgaW4gY29uc3RydWN0b3JcclxuICAgIHRoaXMubWF4QWdlSW5Nb250aHMgPSB0aGlzLm1heEFnZUluTW9udGhzID8/IHRoaXMuZW52aXJvbm1lbnQuZmVlZD8ubWF4QWdlSW5Nb250aHMgPz8gLTE7XHJcbiAgICB0aGlzLm1heENvbnRlbnRMZW5ndGggPSB0aGlzLm1heENvbnRlbnRMZW5ndGggPz8gdGhpcy5lbnZpcm9ubWVudC5mZWVkPy5tYXhDb250ZW50TGVuZ3RoID8/IC0xO1xyXG5cclxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG4gICAgdGhpcy5maWx0ZXJJdGVtID0gdGhpcy5maWx0ZXJJdGVtID8/ICgoaXRlbSkgPT4gIXNlbGYuaXRlbUlkIHx8IGl0ZW0uaWQgPT09IHNlbGYuaXRlbUlkKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fc3RhdGUubmdPbkRlc3Ryb3koKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9wZW5GZWVkSG9tZShmZWVkPzogVCkge1xyXG4gICAgaWYgKCFmZWVkKSB7XHJcbiAgICAgIC8vIFJlZHVjZSBmZWVkIGJ5IGhvbWUgdXJsIChrZWVwIG9uZSBmZWVkIGJ5IGhvbWUgdXJsKVxyXG4gICAgICBjb25zdCBob21lVXJscyA9IFtdO1xyXG4gICAgICBjb25zdCBmZWVkcyA9IHRoaXMuZmVlZHM/LnJlZHVjZSgocmVzLCBpdGVtKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5nZXRGZWVkSG9tZVVybChpdGVtKTtcclxuICAgICAgICBpZiAoIXVybCB8fCBob21lVXJscy5pbmNsdWRlcyh1cmwpKSByZXR1cm4gcmVzO1xyXG4gICAgICAgIHJldHVybiByZXMuY29uY2F0KGl0ZW0pO1xyXG4gICAgICB9LCBbXSk7XHJcblxyXG4gICAgICAvLyBSZWN1cnNpdmUgY2FsbFxyXG4gICAgICBpZiAoaXNOb3RFbXB0eUFycmF5KGZlZWRzKSkge1xyXG4gICAgICAgIGZlZWRzLmZvckVhY2goKGYpID0+IHRoaXMub3BlbkZlZWRIb21lKGYpKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdXJsID0gdGhpcy5nZXRGZWVkSG9tZVVybChmZWVkKTtcclxuICAgIGlmICghdXJsKSByZXR1cm47XHJcblxyXG4gICAgLy8gRmVlZCBjb21lcyBmcm9tIHRoZSBjdXJyZW50IHBvZDpcclxuICAgIGlmICh1cmwuc3RhcnRzV2l0aCh0aGlzLm5ldHdvcmtTZXJ2aWNlLnBlZXI/LnVybCkgfHwgVXJsVXRpbHMuaXNJbnRlcm5hbFVybCh1cmwpKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMubW9kYWwucHJlc2VudCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMub3BlblVybCh1cmwpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb3BlbkZlZWRJdGVtKGZlZWRJdGVtOiBKc29uRmVlZEl0ZW0sIGZlZWQ/OiBUKSB7XHJcbiAgICBjb25zdCB1cmwgPSBmZWVkSXRlbT8udXJsID8/IGZlZWQ/LmZlZWRfdXJsO1xyXG4gICAgaWYgKCF1cmwgfHwgIXRoaXMuc2hvd1JlYWRNb3JlQnV0dG9uKSByZXR1cm47XHJcblxyXG4gICAgLy8gRmVlZCBjb21lcyBmcm9tIHRoZSBjdXJyZW50IHBvZDpcclxuICAgIGlmICh1cmwuc3RhcnRzV2l0aCh0aGlzLm5ldHdvcmtTZXJ2aWNlLnBlZXI/LnVybCkgfHwgVXJsVXRpbHMuaXNJbnRlcm5hbFVybCh1cmwpKSB7XHJcbiAgICAgIHRoaXMubW9kYWxJdGVtSWQgPSBmZWVkSXRlbS5pZDtcclxuICAgICAgYXdhaXQgdGhpcy5tb2RhbC5wcmVzZW50KCk7XHJcbiAgICAgIGF3YWl0IHRoaXMubW9kYWwub25EaWREaXNtaXNzKCk7XHJcblxyXG4gICAgICAvLyBSZXNldCBpdGVtIGlkXHJcbiAgICAgIHRoaXMubW9kYWxJdGVtSWQgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmaXhlZFVybCA9IEpzb25GZWVkVXRpbHMucmVtb3ZlSnNvbkV4dGVuc2lvbih1cmwpO1xyXG4gICAgcmV0dXJuIHRoaXMucGxhdGZvcm0ub3BlbihmaXhlZFVybCk7XHJcbiAgfVxyXG5cclxuICBvcGVuVXJsKHVybDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXVybCkgcmV0dXJuO1xyXG4gICAgY29uc3QgZml4ZWRVcmwgPSBKc29uRmVlZFV0aWxzLnJlbW92ZUpzb25FeHRlbnNpb24odXJsKTtcclxuICAgIHJldHVybiB0aGlzLnBsYXRmb3JtLm9wZW4oZml4ZWRVcmwpO1xyXG4gIH1cclxuXHJcbiAgb3BlblRhZyhmZWVkOiBULCB0YWc6IHN0cmluZykge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5mZWVkU2VydmljZS5nZXRUYWdVcmwoZmVlZCwgdGFnKTtcclxuICAgIHJldHVybiB0aGlzLm9wZW5VcmwodXJsKTtcclxuICB9XHJcblxyXG4gIGdldFRhZ3MoZmVlZE9ySXRlbT86IFQgfCBUWydpdGVtcyddWzBdKSB7XHJcbiAgICBpZiAoSnNvbkZlZWRVdGlscy5pc0pzb25GZWVkKGZlZWRPckl0ZW0pKSB7XHJcbiAgICAgIHJldHVybiBhcnJheURpc3RpbmN0KFxyXG4gICAgICAgIChmZWVkT3JJdGVtLml0ZW1zIHx8IFtdKVxyXG4gICAgICAgICAgLm1hcCgoaXRlbSkgPT4gaXRlbS50YWdzKVxyXG4gICAgICAgICAgLmZpbHRlcihpc05vdEVtcHR5QXJyYXkpXHJcbiAgICAgICAgICAuZmxhdCgpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAoSnNvbkZlZWRVdGlscy5pc0pzb25GZWVkSXRlbShmZWVkT3JJdGVtKSkge1xyXG4gICAgICByZXR1cm4gYXJyYXlEaXN0aW5jdCgoZmVlZE9ySXRlbS50YWdzIHx8IFtdKS5mbGF0KCkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldEZlZWRIb21lVXJsKGZlZWQ6IFQpIHtcclxuICAgIHJldHVybiBmZWVkLmhvbWVfcGFnZV91cmwgPz8gSnNvbkZlZWRVdGlscy5yZW1vdmVKc29uRXh0ZW5zaW9uKGZlZWQuZmVlZF91cmwpID8/IHRoaXMuZmVlZFNlcnZpY2UuZ2V0SG9tZVVybCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgdGhlIGN1cnJlbnQgdXNlciBpcyB0aGUgYXV0aG9yIG9mIHRoZSBmZWVkIGl0ZW1cclxuICAgKi9cclxuICBjYW5FZGl0SXRlbSA9IChpdGVtOiBKc29uRmVlZEl0ZW0sIHVzZXJJZDogbnVtYmVyLCBmZWVkPzogVCkgPT4ge1xyXG4gICAgaWYgKCFpdGVtIHx8IGlzTmlsKHVzZXJJZCkpIHJldHVybiBmYWxzZTsgLy8gTm8gaXRlbSwgb3IgdXNlciBub3QgY29ubmVjdGVkXHJcblxyXG4gICAgLy8gREVCVUdcclxuICAgIC8vY29uc29sZS5kZWJ1ZygnW2ZlZWQtY29tcG9uZW50XSBjYW5FZGl0SXRlbS4uLicpO1xyXG5cclxuICAgIC8vIENoZWNrIGZlZWQgVVJMIHBvaW50IG9uIHRoZSBjdXJyZW50IHBlZXIgKC9hcGkvZmVlZC8gLi4uKVxyXG4gICAgaWYgKCFpdGVtLnVybD8uc3RhcnRzV2l0aCh0aGlzLnBlZXJVcmwpKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgLy8gQ2hlY2sgaXRlbSBhdXRob3JzIGZpcnN0XHJcbiAgICBsZXQgaXNBdXRob3IgPSBmYWxzZTtcclxuICAgIGlmIChpc05vdEVtcHR5QXJyYXkoaXRlbS5hdXRob3JzKSkge1xyXG4gICAgICBpc0F1dGhvciA9IGl0ZW0uYXV0aG9ycy5zb21lKChhdXRob3IpID0+ICthdXRob3IuaWQgPT09IHVzZXJJZCk7XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBmZWVkIGF1dGhvcnNcclxuICAgIGlmICghaXNBdXRob3IgJiYgaXNOb3RFbXB0eUFycmF5KGZlZWQ/LmF1dGhvcnMpKSB7XHJcbiAgICAgIGlzQXV0aG9yID0gZmVlZC5hdXRob3JzLnNvbWUoKGF1dGhvcikgPT4gK2F1dGhvci5pZCA9PT0gdXNlcklkKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaXNBdXRob3IgfHwgdGhpcy5hY2NvdW50U2VydmljZS5pc0FkbWluKCk7XHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIGVkaXQgaXRlbSBhY3Rpb25cclxuICAgKi9cclxuICBhc3luYyBvbkVkaXRJdGVtKGV2ZW50OiBFdmVudCwgaXRlbTogSnNvbkZlZWRJdGVtKSB7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZWRpdEl0ZW0ub2JzZXJ2ZWQpIHtcclxuICAgICAgdGhpcy5lZGl0SXRlbS5lbWl0KGl0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGRvbmUgPSBhd2FpdCB0aGlzLmZlZWRTZXJ2aWNlPy5vcGVuRWRpdE1vZGFsKGV2ZW50LCBpdGVtKTtcclxuICAgIGlmIChkb25lKSB7XHJcbiAgICAgIC8vIGZvcmNlIGEgcmVmcmVzaCBvZiB0aGUgZmVlZHNcclxuICAgICAgdGhpcy5vblJlZnJlc2guZW1pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIGRlbGV0ZSBpdGVtIGFjdGlvblxyXG4gICAqL1xyXG4gIGFzeW5jIG9uRGVsZXRlSXRlbShldmVudDogRXZlbnQsIGl0ZW06IEpzb25GZWVkSXRlbSkge1xyXG4gICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEFzayBmb3IgY29uZmlybWF0aW9uIGJlZm9yZSBkZWxldGlvblxyXG4gICAgY29uc3QgY29uZmlybWVkID0gYXdhaXQgQWxlcnRzLmFza0FjdGlvbkNvbmZpcm1hdGlvbih0aGlzLmFsZXJ0Q3RybCwgdGhpcy50cmFuc2xhdGUsIHRydWUsIGV2ZW50KTtcclxuICAgIGlmIChjb25maXJtZWQgIT09IHRydWUpIHtcclxuICAgICAgcmV0dXJuOyAvLyBVc2VyIGNhbmNlbGxlZCBvciBkaXNtaXNzZWRcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kZWxldGVJdGVtLm9ic2VydmVkKSB7XHJcbiAgICAgIHRoaXMuZGVsZXRlSXRlbS5lbWl0KGl0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGRvbmUgPSBhd2FpdCB0aGlzLmZlZWRTZXJ2aWNlPy5kZWxldGVJdGVtKGl0ZW0pO1xyXG4gICAgaWYgKGRvbmUpIHtcclxuICAgICAgLy8gZm9yY2UgYSByZWZyZXNoIG9mIHRoZSBmZWVkc1xyXG4gICAgICB0aGlzLm9uUmVmcmVzaC5lbWl0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjwhLS0gZGVidWcgLS0+XG5AaWYgKGRlYnVnKSB7XG4gIDxhcHAtZGVidWcgW3RpdGxlXT1cIidGZWVkJ1wiPlxuICAgIDxwPlxuICAgICAgaGFzRmVlZHM/OiB7eyBoYXNGZWVkcyQgfCBhc3luYyB9fVxuICAgICAgPGJyIC8+XG4gICAgICB1cmxzOiB7eyB1cmxzJCB8IGFzeW5jIHwganNvbiB9fVxuICAgICAgPGJyIC8+XG4gICAgICBzaGFwZToge3sgc2hhcGUgfX1cbiAgICA8L3A+XG4gIDwvYXBwLWRlYnVnPlxufVxuXG5AbGV0IGZlZWRzID0gZmVlZHMkIHwgYXN5bmM7XG5AbGV0IHVzZXJJZCA9IHVzZXJJZCQgfCBhc3luYztcblxuQGlmIChmZWVkcyB8IGlzTm90RW1wdHlBcnJheSkge1xuICA8IS0tIHRvcCBoZWFkZXIgLS0+XG4gIEBpZiAoc2hvd0hlYWRlciAmJiAoZmVlZHMgfCBhcnJheUZpcnN0KTsgYXMgZmVlZCkge1xuICAgIDxpb24taXRlbSBsaW5lcz1cIm5vbmVcIiBbY29sb3JdPVwiaGVhZGVyQ29sb3JcIiBjbGFzcz1cImZlZWQtaGVhZGVyIHNoYXBlLXt7IHNoYXBlIH19XCI+XG4gICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgbmFtZT1cIm1lZ2FwaG9uZVwiPjwvaW9uLWljb24+XG4gICAgICA8aW9uLWxhYmVsPlxuICAgICAgICA8Yj57eyBmZWVkLnRpdGxlIHx8ICgnU09DSUFMLkZFRUQuTkVXUycgfCB0cmFuc2xhdGUpIH19PC9iPlxuICAgICAgPC9pb24tbGFiZWw+XG4gICAgICA8aW9uLWJ1dHRvbiBzbG90PVwiZW5kXCIgZmlsbD1cImNsZWFyXCIgKGNsaWNrKT1cIm9wZW5GZWVkSG9tZSgpXCIgc2hhcGU9XCJcIj5cbiAgICAgICAgPGlvbi1sYWJlbCB0cmFuc2xhdGU+U09DSUFMLkZFRUQuU0hPV19BTExfRkVFRDwvaW9uLWxhYmVsPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cImVuZFwiIG5hbWU9XCJjaGV2cm9uLWZvcndhcmQtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgPC9pb24taXRlbT5cbiAgfVxuXG4gIDxkaXYgY2xhc3M9XCJmZWVkLWNvbnRlbnQgc2hhcGUte3sgc2hhcGUgfX0gaW9uLW5vLXBhZGRpbmdcIiBbY2xhc3MuaGFzLWhlYWRlcl09XCJzaG93SGVhZGVyXCI+XG4gICAgPCEtLSBmZWVkcyAtLT5cbiAgICBAZm9yIChmZWVkIG9mIGZlZWRzOyB0cmFjayBmZWVkLmZlZWRfdXJsOyBsZXQgZmlyc3RGZWVkID0gJGZpcnN0OyBsZXQgbGFzdEZlZWQgPSAkbGFzdCkge1xuICAgICAgPCEtLSBpdGVtcyAtLT5cbiAgICAgIEBmb3IgKGl0ZW0gb2YgZmVlZC5pdGVtcyB8IGFycmF5RmlsdGVyOiBmaWx0ZXJJdGVtOyB0cmFjayBpdGVtLmlkOyBsZXQgZmlyc3RJdGVtID0gJGZpcnN0OyBsZXQgbGFzdEl0ZW0gPSAkbGFzdCkge1xuICAgICAgICA8aW9uLWNhcmRcbiAgICAgICAgICBbY2xhc3MuZmlyc3RdPVwiZmlyc3RGZWVkICYmIGZpcnN0SXRlbVwiXG4gICAgICAgICAgW2NsYXNzLmxhc3RdPVwibGFzdEZlZWQgJiYgbGFzdEl0ZW1cIlxuICAgICAgICAgIFtjb2xvcl09XCJjYXJkQ29sb3IgIT09ICdsaWdodC10cmFuc3BhcmVudCcgPyBjYXJkQ29sb3IgOiB1bmRlZmluZWRcIlxuICAgICAgICAgIGNsYXNzPVwiZmVlZC1pdGVtLWNhcmRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZSBzdHlsZT1cInZlcnRpY2FsLWFsaWduOiBtaWRkbGVcIj5cbiAgICAgICAgICAgICAgPCEtLSBBdXRob3JzIC0tPlxuICAgICAgICAgICAgICBAZm9yIChhdXRob3Igb2YgaXRlbS5hdXRob3JzIHx8IGZlZWQuYXV0aG9yczsgdHJhY2sgYXV0aG9yKSB7XG4gICAgICAgICAgICAgICAgQGlmIChhdXRob3IubmFtZSB8fCBhdXRob3IuYXZhdGFyKSB7XG4gICAgICAgICAgICAgICAgICA8aW9uLWNoaXAgKGNsaWNrKT1cIm9wZW5VcmwoYXV0aG9yLnVybClcIiB0YXBwYWJsZT5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChhdXRob3IuYXZhdGFyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1hdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWltZyBbc3JjXT1cImF1dGhvci5hdmF0YXJcIiBbYWx0XT1cImF1dGhvci5uYW1lXCI+PC9pb24taW1nPlxuICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWF2YXRhcj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKGF1dGhvci5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cImF1dGhvclwiPnt7IGF1dGhvci5uYW1lIH19PC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWNoaXA+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDxpb24tbm90ZSBjbGFzcz1cImlvbi1mbG9hdC1lbmRcIj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgaXRlbS5kYXRlX3B1Ymxpc2hlZCB8IGRhdGVGcm9tTm93IH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9pb24tbm90ZT5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQtc3VidGl0bGU+XG5cbiAgICAgICAgICAgIDwhLS0gdGl0bGUgLS0+XG4gICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGUgKGNsaWNrKT1cIm9wZW5GZWVkSXRlbShpdGVtLCBmZWVkKVwiIHRhcHBhYmxlPnt7IGl0ZW0/LnRpdGxlIH19PC9pb24tY2FyZC10aXRsZT5cblxuICAgICAgICAgICAgPCEtLSB0YWdzIC0tPlxuICAgICAgICAgICAgQGxldCB0YWdzID0gaXRlbSB8IG1hcDogZ2V0VGFncztcbiAgICAgICAgICAgIEBpZiAodGFncyB8IGlzTm90RW1wdHlBcnJheSkge1xuICAgICAgICAgICAgICA8aW9uLXRleHQgY2xhc3M9XCJ0YWdzXCI+XG4gICAgICAgICAgICAgICAgQGZvciAodGFnIG9mIHRhZ3M7IHRyYWNrIHRhZzsgbGV0IGxhc3QgPSAkbGFzdCkge1xuICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cIm9wZW5UYWcoZmVlZCwgdGFnKVwiIHRhcHBhYmxlPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLXRleHQ+I3t7IHRhZyB9fTwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICBAaWYgKCFsYXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cblxuICAgICAgICAgIDwhLS0gRmVlZCBjb250ZW50IC0tPlxuICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgPGlvbi10ZXh0IFtmZWVkXT1cIml0ZW0udXJsIHx8IGZlZWQuZmVlZF91cmxcIj5cbiAgICAgICAgICAgICAgQGlmIChpdGVtLmNvbnRlbnRfaHRtbCkge1xuICAgICAgICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwiaXRlbS5jb250ZW50X2h0bWxcIj48L3A+XG4gICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGl0ZW0uY29udGVudF90ZXh0KSB7XG4gICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICA8bWFya2Rvd24gW2RhdGFdPVwiaXRlbS5jb250ZW50X3RleHRcIiBlbW9qaT48L21hcmtkb3duPlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG5cbiAgICAgICAgICBAbGV0IGVkaXRhYmxlID0gY2FuRWRpdEl0ZW0oaXRlbSwgdXNlcklkLCBmZWVkKTtcbiAgICAgICAgICBAaWYgKGVkaXRhYmxlIHx8IHNob3dSZWFkTW9yZUJ1dHRvbikge1xuICAgICAgICAgICAgQGlmIChlZGl0YWJsZSkge1xuXG4gICAgICAgICAgICAgIDwhLS0gRGVsZXRlIGJ1dHRvbiAodmlzaWJsZSBob3ZlciktLT5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRlbGV0ZUl0ZW0oJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ2aXNpYmxlLWhvdmVyIGlvbi1mbG9hdC1zdGFydFwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidDT01NT04uQlROX0RFTEVURScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmRlbGV0ZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8IS0tIEVkaXQgYnV0dG9uICh2aXNpYmxlIGhvdmVyKSAtLT5cbiAgICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25FZGl0SXRlbSgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZpc2libGUtaG92ZXIgaW9uLWZsb2F0LXN0YXJ0XCIgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzbG90PVwic3RhcnRcIj5lZGl0PC9tYXQtaWNvbj5cbjwhLS0gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJwZW5jaWxcIiBzbG90PVwic3RhcnRcIj48L2lvbi1pY29uPi0tPlxuICAgICAgICAgICAgICAgIDxpb24tbGFiZWwgdHJhbnNsYXRlPkNPTU1PTi5CVE5fRURJVDwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHNob3dSZWFkTW9yZUJ1dHRvbikge1xuICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiAgKGNsaWNrKT1cIm9wZW5GZWVkSXRlbShpdGVtLCBmZWVkKVwiIGNsYXNzPVwiaW9uLWZsb2F0LWVuZFwiIGZpbGw9XCJjbGVhclwiPlxuICAgICAgICAgICAgICAgIDxpb24tbGFiZWw+e3sgKGl0ZW0udHJ1bmNhdGVkID8gJ1NPQ0lBTC5GRUVELlJFQURfTU9SRScgOiAnQ09NTU9OLkJUTl9TSE9XJykgfCB0cmFuc2xhdGUgfX08L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImVuZFwiIG5hbWU9XCJjaGV2cm9uLWZvcndhcmQtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICB9XG4gICAgfVxuICA8L2Rpdj5cbn1cblxuPCEtLSBEZXRhaWxzIG1vZGFsIC0tPlxuPGlvbi1tb2RhbCAjbW9kYWwgW3Nob3dCYWNrZHJvcF09XCJmYWxzZVwiXG4gICAgICAgICAgIGNsYXNzPVwic3RhY2stbW9kYWxcIiBbY2xhc3MubW9kYWwtbGFyZ2VdPVwiIW1vYmlsZVwiPlxuICA8bmctdGVtcGxhdGU+XG4gICAgPGlvbi1oZWFkZXI+XG4gICAgICA8aW9uLXRvb2xiYXIgY29sb3I9XCJzZWNvbmRhcnlcIj5cbiAgICAgICAgPGlvbi10aXRsZT57eyAnU09DSUFMLkZFRUQuTkVXUycgfCB0cmFuc2xhdGUgfX08L2lvbi10aXRsZT5cbiAgICAgICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJjbG9zZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2lvbi1idXR0b25zPlxuICAgICAgPC9pb24tdG9vbGJhcj5cbiAgICA8L2lvbi1oZWFkZXI+XG4gICAgPGlvbi1jb250ZW50PlxuICAgICAgPGRpdiBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICAgIDxhcHAtZmVlZFxuICAgICAgICAgIFt1cmxzXT1cInVybHNcIlxuICAgICAgICAgIFtzaG93SGVhZGVyXT1cImZhbHNlXCJcbiAgICAgICAgICBbc2hvd1JlYWRNb3JlQnV0dG9uXT1cImZhbHNlXCJcbiAgICAgICAgICBbbWF4Q29udGVudExlbmd0aF09XCItMVwiXG4gICAgICAgICAgW21heEFnZUluTW9udGhzXT1cIi0xXCJcbiAgICAgICAgICBbaXRlbUlkXT1cIm1vZGFsSXRlbUlkXCJcbiAgICAgICAgICBjYXJkQ29sb3I9XCJsaWdodFwiXG4gICAgICAgICAgW2RlYnVnXT1cImRlYnVnXCJcbiAgICAgICAgPjwvYXBwLWZlZWQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2lvbi1jb250ZW50PlxuICA8L25nLXRlbXBsYXRlPlxuPC9pb24tbW9kYWw+XG4iXX0=
|
|
314
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC9mZWVkL2ZlZWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zb2NpYWwvZmVlZC9mZWVkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRSxPQUFPLEVBQTBCLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQWUsV0FBVyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFbkYsT0FBTyxFQUFFLGdCQUFnQixFQUFnQixNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFJdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFP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Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFFTSxLQUFLO3NCQUFqQixLQUFLO2dCQVFPLElBQUk7c0JBQWhCLEtBQUs7Z0JBWU8sY0FBYztzQkFBMUIsS0FBSztnQkFRTyxnQkFBZ0I7c0JBQTVCLEtBQUs7Z0JBYUYsU0FBUztzQkFEWixXQUFXO3VCQUFDLE9BQU87Z0JBV0EsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJ4U3RhdGUgfSBmcm9tICdAcngtYW5ndWxhci9zdGF0ZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgYXJyYXlEaXN0aW5jdCwgaXNOaWwsIGlzTm90RW1wdHlBcnJheSB9IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgSnNvbkZlZWQsIEpzb25GZWVkSXRlbSwgSnNvbkZlZWRVdGlscyB9IGZyb20gJy4vZmVlZC5tb2RlbCc7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFBsYXRmb3JtU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvcGxhdGZvcm0uc2VydmljZSc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCwgRU5WSVJPTk1FTlQgfSBmcm9tICcuLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQuY2xhc3MnO1xuaW1wb3J0IHsgQXBwQ29sb3JzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3R5cGVzJztcbmltcG9ydCB7IEFQUF9GRUVEX1NFUlZJQ0UsIElGZWVkU2VydmljZSB9IGZyb20gJy4vZmVlZC5zZXJ2aWNlJztcbmltcG9ydCB7IE5ldHdvcmtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9uZXR3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXJsVXRpbHMgfSBmcm9tICcuLi8uLi9zaGFyZWQvZmlsZS91cmwudXRpbHMnO1xuaW1wb3J0IHsgQWxlcnRDb250cm9sbGVyLCBJb25Nb2RhbCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IExvY2FsU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9sb2NhbC1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9hY2NvdW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFsZXJ0cyB9IGZyb20gJy4uLy4uL3NoYXJlZC9hbGVydHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZlZWRTdGF0ZTxUPiB7XG4gIHBlZXJVcmw6IHN0cmluZztcbiAgdXNlcklkOiBudW1iZXI7XG4gIG1heEFnZUluTW9udGhzOiBudW1iZXI7XG4gIG1heENvbnRlbnRMZW5ndGg6IG51bWJlcjtcbiAgdXJsczogc3RyaW5nW107XG4gIGZlZWRzOiBUW107XG4gIGhhc0ZlZWRzOiBib29sZWFuO1xuICBsb2NhbGU6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgRmlsdGVySXRlbUZ1bmN0aW9uID0gKGl0ZW06IEpzb25GZWVkSXRlbSkgPT4gYm9vbGVhbjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZlZWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmVlZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZlZWQuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbUnhTdGF0ZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGZWVkc0NvbXBvbmVudDxUIGV4dGVuZHMgSnNvbkZlZWQgPSBKc29uRmVlZCwgUyBleHRlbmRzIEZlZWRTdGF0ZTxUPiA9IEZlZWRTdGF0ZTxUPj4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByb3RlY3RlZCBfc3RhdGUgPSBuZXcgUnhTdGF0ZTxTPigpO1xuICBwcm90ZWN0ZWQgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcGxhdGZvcm0gPSBpbmplY3QoUGxhdGZvcm1TZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIG5ldHdvcmtTZXJ2aWNlID0gaW5qZWN0KE5ldHdvcmtTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcm90ZWN0ZWQgdmVyc2lvbjogc3RyaW5nO1xuICBwcm90ZWN0ZWQgbW9kYWxJdGVtSWQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIG9uUmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGZlZWRzJCA9IHRoaXMuX3N0YXRlLnNlbGVjdCgnZmVlZHMnKTtcbiAgdXJscyQgPSB0aGlzLl9zdGF0ZS5zZWxlY3QoJ3VybHMnKTtcbiAgaGFzRmVlZHMkID0gdGhpcy5fc3RhdGUuc2VsZWN0KCdoYXNGZWVkcycpO1xuICB1c2VySWQkID0gdGhpcy5fc3RhdGUuc2VsZWN0KCd1c2VySWQnKTtcblxuICBASW5wdXQoKSBkZWJ1ZyA9IGZhbHNlO1xuICBASW5wdXQoKSBtb2JpbGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHNob3dIZWFkZXIgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93UmVhZE1vcmVCdXR0b24gPSB0cnVlO1xuICBASW5wdXQoKSBoZWFkZXJDb2xvcjogQXBwQ29sb3JzID0gJ3NlY29uZGFyeSc7XG4gIEBJbnB1dCgpIGNhcmRDb2xvcjogQXBwQ29sb3JzIHwgJ2xpZ2h0LXRyYW5zcGFyZW50JyA9ICdsaWdodC10cmFuc3BhcmVudCc7XG4gIEBJbnB1dCgpIHNoYXBlOiAncm91bmQnIHwgJ2xlZ2FjeScgPSAnbGVnYWN5JztcbiAgQElucHV0KCkgY2xhc3M6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBpdGVtSWQ6IHN0cmluZztcbiAgQElucHV0KCkgZmlsdGVySXRlbTogRmlsdGVySXRlbUZ1bmN0aW9uO1xuXG4gIEBPdXRwdXQoKSBlZGl0SXRlbSA9IG5ldyBFdmVudEVtaXR0ZXI8SnNvbkZlZWRJdGVtPigpO1xuICBAT3V0cHV0KCkgZGVsZXRlSXRlbSA9IG5ldyBFdmVudEVtaXR0ZXI8SnNvbkZlZWRJdGVtPigpO1xuXG4gIEBJbnB1dCgpIHNldCBmZWVkcyh2YWx1ZTogVFtdKSB7XG4gICAgdGhpcy5fc3RhdGUuc2V0KCdmZWVkcycsICgpID0+IHZhbHVlKTtcbiAgfVxuXG4gIGdldCBmZWVkcygpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUuZ2V0KCdmZWVkcycpO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHVybHModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fc3RhdGUuc2V0KCd1cmxzJywgKCkgPT4gdmFsdWUpO1xuICB9XG5cbiAgZ2V0IHVybHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlLmdldCgndXJscycpO1xuICB9XG5cbiAgZ2V0IGhhc0ZlZWRzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZS5nZXQoJ2hhc0ZlZWRzJyk7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgbWF4QWdlSW5Nb250aHModmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3N0YXRlLnNldCgnbWF4QWdlSW5Nb250aHMnLCAoKSA9PiB2YWx1ZSk7XG4gIH1cblxuICBnZXQgbWF4QWdlSW5Nb250aHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlLmdldCgnbWF4QWdlSW5Nb250aHMnKTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBtYXhDb250ZW50TGVuZ3RoKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9zdGF0ZS5zZXQoJ21heENvbnRlbnRMZW5ndGgnLCAoKSA9PiB2YWx1ZSk7XG4gIH1cblxuICBnZXQgbWF4Q29udGVudExlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUuZ2V0KCdtYXhDb250ZW50TGVuZ3RoJyk7XG4gIH1cblxuICBnZXQgcGVlclVybCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUuZ2V0KCdwZWVyVXJsJyk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IGhvc3RDbGFzcygpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNsYXNzZXMgPSBbdGhpcy5jbGFzc107XG5cbiAgICBpZiAodGhpcy5zaGFwZSkge1xuICAgICAgY2xhc3Nlcy5wdXNoKGBzaGFwZS0ke3RoaXMuc2hhcGV9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYXNzZXMuZmlsdGVyKChjbHMpID0+IGNscykuam9pbignICcpO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnbW9kYWwnKSBtb2RhbDogSW9uTW9kYWw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2V0dGluZ3M6IExvY2FsU2V0dGluZ3NTZXJ2aWNlLFxuICAgIEBJbmplY3QoRU5WSVJPTk1FTlQpIHByb3RlY3RlZCBlbnZpcm9ubWVudDogRW52aXJvbm1lbnQsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChBUFBfRkVFRF9TRVJWSUNFKSBwdWJsaWMgZmVlZFNlcnZpY2U6IElGZWVkU2VydmljZTxUPixcbiAgICBwcm90ZWN0ZWQgYWNjb3VudFNlcnZpY2U6IEFjY291bnRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhbGVydEN0cmw6IEFsZXJ0Q29udHJvbGxlclxuICApIHtcbiAgICB0aGlzLm1vYmlsZSA9IHNldHRpbmdzLm1vYmlsZTtcbiAgICB0aGlzLl9zdGF0ZS5jb25uZWN0KCdsb2NhbGUnLCBzZXR0aW5ncy5sb2NhbGUkKTtcbiAgICB0aGlzLl9zdGF0ZS5jb25uZWN0KCdoYXNGZWVkcycsIHRoaXMuZmVlZHMkLnBpcGUobWFwKGlzTm90RW1wdHlBcnJheSkpKTtcbiAgICB0aGlzLl9zdGF0ZS5jb25uZWN0KCd1c2VySWQnLCB0aGlzLmFjY291bnRTZXJ2aWNlLnBlcnNvbiQucGlwZShtYXAoKHBlcnNvbikgPT4gcGVyc29uPy5pZCkpKTtcbiAgICB0aGlzLl9zdGF0ZS5jb25uZWN0KCdwZWVyVXJsJywgdGhpcy5uZXR3b3JrU2VydmljZS5wZWVyJC5waXBlKG1hcCgocGVlcikgPT4gcGVlcj8udXJsKSkpO1xuXG4gICAgaWYgKHRoaXMuZmVlZFNlcnZpY2UpIHtcbiAgICAgIHRoaXMuX3N0YXRlLmNvbm5lY3QoXG4gICAgICAgICdmZWVkcycsXG4gICAgICAgIG1lcmdlKFxuICAgICAgICAgIHRoaXMub25SZWZyZXNoLnBpcGUobWFwKCgpID0+ICh7IC4uLnRoaXMuX3N0YXRlLmdldCgpLCBjYWNoZTogZmFsc2UgfSkpKSxcbiAgICAgICAgICB0aGlzLl9zdGF0ZVxuICAgICAgICAgICAgLnNlbGVjdChbJ3VybHMnLCAnbWF4QWdlSW5Nb250aHMnLCAnbWF4Q29udGVudExlbmd0aCcsICdsb2NhbGUnXSlcbiAgICAgICAgICAgIC5waXBlKG1hcCgoeyB1cmxzLCBtYXhBZ2VJbk1vbnRocywgbWF4Q29udGVudExlbmd0aCwgbG9jYWxlIH0pID0+ICh7IHVybHMsIG1heEFnZUluTW9udGhzLCBtYXhDb250ZW50TGVuZ3RoLCBsb2NhbGUsIGNhY2hlOiB0cnVlIH0pKSlcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcCgoeyB1cmxzLCBtYXhBZ2VJbk1vbnRocywgbWF4Q29udGVudExlbmd0aCwgbG9jYWxlLCBjYWNoZSB9KSA9PlxuICAgICAgICAgICAgdGhpcy5mZWVkU2VydmljZS53YXRjaEFsbCh7XG4gICAgICAgICAgICAgIHVybHM6IHVybHMsXG4gICAgICAgICAgICAgIG1heEFnZUluTW9udGhzLFxuICAgICAgICAgICAgICBtYXhDb250ZW50TGVuZ3RoLFxuICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgIGNhY2hlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApLFxuICAgICAgICAgIG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpXG5cbiAgICAgICAgICAvLyBERUJVR1xuICAgICAgICAgIC8vdGFwKChmZWVkcykgPT4gY29uc29sZS5kZWJ1ZygnW2ZlZWQtY29tcG9uZW50XSBmZWVkcycsIGZlZWRzKSlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnVybHMgPSB0aGlzLnVybHMgPz8gbnVsbDsgLy8gU2hvdWxkIHNldCB0aGUgdXJscywgaW4gb3JkZXIgdG8gdHJpZ2dlciB0aGUgc2VsZWN0IGluIGNvbnN0cnVjdG9yXG4gICAgdGhpcy5tYXhBZ2VJbk1vbnRocyA9IHRoaXMubWF4QWdlSW5Nb250aHMgPz8gdGhpcy5lbnZpcm9ubWVudC5mZWVkPy5tYXhBZ2VJbk1vbnRocyA/PyAtMTtcbiAgICB0aGlzLm1heENvbnRlbnRMZW5ndGggPSB0aGlzLm1heENvbnRlbnRMZW5ndGggPz8gdGhpcy5lbnZpcm9ubWVudC5mZWVkPy5tYXhDb250ZW50TGVuZ3RoID8/IC0xO1xuXG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgdGhpcy5maWx0ZXJJdGVtID0gdGhpcy5maWx0ZXJJdGVtID8/ICgoaXRlbSkgPT4gIXNlbGYuaXRlbUlkIHx8IGl0ZW0uaWQgPT09IHNlbGYuaXRlbUlkKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3N0YXRlLm5nT25EZXN0cm95KCk7XG4gIH1cblxuICBhc3luYyBvcGVuRmVlZEhvbWUoZmVlZD86IFQpIHtcbiAgICBpZiAoIWZlZWQpIHtcbiAgICAgIC8vIFJlZHVjZSBmZWVkIGJ5IGhvbWUgdXJsIChrZWVwIG9uZSBmZWVkIGJ5IGhvbWUgdXJsKVxuICAgICAgY29uc3QgaG9tZVVybHMgPSBbXTtcbiAgICAgIGNvbnN0IGZlZWRzID0gdGhpcy5mZWVkcz8ucmVkdWNlKChyZXMsIGl0ZW0pID0+IHtcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5nZXRGZWVkSG9tZVVybChpdGVtKTtcbiAgICAgICAgaWYgKCF1cmwgfHwgaG9tZVVybHMuaW5jbHVkZXModXJsKSkgcmV0dXJuIHJlcztcbiAgICAgICAgcmV0dXJuIHJlcy5jb25jYXQoaXRlbSk7XG4gICAgICB9LCBbXSk7XG5cbiAgICAgIC8vIFJlY3Vyc2l2ZSBjYWxsXG4gICAgICBpZiAoaXNOb3RFbXB0eUFycmF5KGZlZWRzKSkge1xuICAgICAgICBmZWVkcy5mb3JFYWNoKChmKSA9PiB0aGlzLm9wZW5GZWVkSG9tZShmKSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdGhpcy5nZXRGZWVkSG9tZVVybChmZWVkKTtcbiAgICBpZiAoIXVybCkgcmV0dXJuO1xuXG4gICAgLy8gRmVlZCBjb21lcyBmcm9tIHRoZSBjdXJyZW50IHBvZDpcbiAgICBpZiAodXJsLnN0YXJ0c1dpdGgodGhpcy5uZXR3b3JrU2VydmljZS5wZWVyPy51cmwpIHx8IFVybFV0aWxzLmlzSW50ZXJuYWxVcmwodXJsKSkge1xuICAgICAgYXdhaXQgdGhpcy5tb2RhbC5wcmVzZW50KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMub3BlblVybCh1cmwpO1xuICB9XG5cbiAgYXN5bmMgb3BlbkZlZWRJdGVtKGZlZWRJdGVtOiBKc29uRmVlZEl0ZW0sIGZlZWQ/OiBUKSB7XG4gICAgY29uc3QgdXJsID0gZmVlZEl0ZW0/LnVybCA/PyBmZWVkPy5mZWVkX3VybDtcbiAgICBpZiAoIXVybCB8fCAhdGhpcy5zaG93UmVhZE1vcmVCdXR0b24pIHJldHVybjtcblxuICAgIC8vIEZlZWQgY29tZXMgZnJvbSB0aGUgY3VycmVudCBwb2Q6XG4gICAgaWYgKHVybC5zdGFydHNXaXRoKHRoaXMubmV0d29ya1NlcnZpY2UucGVlcj8udXJsKSB8fCBVcmxVdGlscy5pc0ludGVybmFsVXJsKHVybCkpIHtcbiAgICAgIHRoaXMubW9kYWxJdGVtSWQgPSBmZWVkSXRlbS5pZDtcbiAgICAgIGF3YWl0IHRoaXMubW9kYWwucHJlc2VudCgpO1xuICAgICAgYXdhaXQgdGhpcy5tb2RhbC5vbkRpZERpc21pc3MoKTtcblxuICAgICAgLy8gUmVzZXQgaXRlbSBpZFxuICAgICAgdGhpcy5tb2RhbEl0ZW1JZCA9IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmaXhlZFVybCA9IEpzb25GZWVkVXRpbHMucmVtb3ZlSnNvbkV4dGVuc2lvbih1cmwpO1xuICAgIHJldHVybiB0aGlzLnBsYXRmb3JtLm9wZW4oZml4ZWRVcmwpO1xuICB9XG5cbiAgb3BlblVybCh1cmw6IHN0cmluZykge1xuICAgIGlmICghdXJsKSByZXR1cm47XG4gICAgY29uc3QgZml4ZWRVcmwgPSBKc29uRmVlZFV0aWxzLnJlbW92ZUpzb25FeHRlbnNpb24odXJsKTtcbiAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybS5vcGVuKGZpeGVkVXJsKTtcbiAgfVxuXG4gIG9wZW5UYWcoZmVlZDogVCwgdGFnOiBzdHJpbmcpIHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmZlZWRTZXJ2aWNlLmdldFRhZ1VybChmZWVkLCB0YWcpO1xuICAgIHJldHVybiB0aGlzLm9wZW5VcmwodXJsKTtcbiAgfVxuXG4gIGdldFRhZ3MoZmVlZE9ySXRlbT86IFQgfCBUWydpdGVtcyddWzBdKSB7XG4gICAgaWYgKEpzb25GZWVkVXRpbHMuaXNKc29uRmVlZChmZWVkT3JJdGVtKSkge1xuICAgICAgcmV0dXJuIGFycmF5RGlzdGluY3QoXG4gICAgICAgIChmZWVkT3JJdGVtLml0ZW1zIHx8IFtdKVxuICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IGl0ZW0udGFncylcbiAgICAgICAgICAuZmlsdGVyKGlzTm90RW1wdHlBcnJheSlcbiAgICAgICAgICAuZmxhdCgpXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoSnNvbkZlZWRVdGlscy5pc0pzb25GZWVkSXRlbShmZWVkT3JJdGVtKSkge1xuICAgICAgcmV0dXJuIGFycmF5RGlzdGluY3QoKGZlZWRPckl0ZW0udGFncyB8fCBbXSkuZmxhdCgpKTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEZlZWRIb21lVXJsKGZlZWQ6IFQpIHtcbiAgICByZXR1cm4gZmVlZC5ob21lX3BhZ2VfdXJsID8/IEpzb25GZWVkVXRpbHMucmVtb3ZlSnNvbkV4dGVuc2lvbihmZWVkLmZlZWRfdXJsKSA/PyB0aGlzLmZlZWRTZXJ2aWNlLmdldEhvbWVVcmwoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGUgY3VycmVudCB1c2VyIGlzIHRoZSBhdXRob3Igb2YgdGhlIGZlZWQgaXRlbVxuICAgKi9cbiAgY2FuRWRpdEl0ZW0gPSAoaXRlbTogSnNvbkZlZWRJdGVtLCB1c2VySWQ6IG51bWJlciwgZmVlZD86IFQpID0+IHtcbiAgICBpZiAoIWl0ZW0gfHwgaXNOaWwodXNlcklkKSkgcmV0dXJuIGZhbHNlOyAvLyBObyBpdGVtLCBvciB1c2VyIG5vdCBjb25uZWN0ZWRcblxuICAgIC8vIERFQlVHXG4gICAgLy9jb25zb2xlLmRlYnVnKCdbZmVlZC1jb21wb25lbnRdIGNhbkVkaXRJdGVtLi4uJyk7XG5cbiAgICAvLyBDaGVjayBmZWVkIFVSTCBwb2ludCBvbiB0aGUgY3VycmVudCBwZWVyICgvYXBpL2ZlZWQvIC4uLilcbiAgICBpZiAoIWl0ZW0udXJsPy5zdGFydHNXaXRoKHRoaXMucGVlclVybCkpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIENoZWNrIGl0ZW0gYXV0aG9ycyBmaXJzdFxuICAgIGxldCBpc0F1dGhvciA9IGZhbHNlO1xuICAgIGlmIChpc05vdEVtcHR5QXJyYXkoaXRlbS5hdXRob3JzKSkge1xuICAgICAgaXNBdXRob3IgPSBpdGVtLmF1dGhvcnMuc29tZSgoYXV0aG9yKSA9PiArYXV0aG9yLmlkID09PSB1c2VySWQpO1xuICAgIH1cbiAgICAvLyBDaGVjayBmZWVkIGF1dGhvcnNcbiAgICBpZiAoIWlzQXV0aG9yICYmIGlzTm90RW1wdHlBcnJheShmZWVkPy5hdXRob3JzKSkge1xuICAgICAgaXNBdXRob3IgPSBmZWVkLmF1dGhvcnMuc29tZSgoYXV0aG9yKSA9PiArYXV0aG9yLmlkID09PSB1c2VySWQpO1xuICAgIH1cblxuICAgIHJldHVybiBpc0F1dGhvciB8fCB0aGlzLmFjY291bnRTZXJ2aWNlLmlzQWRtaW4oKTtcbiAgfTtcblxuICAvKipcbiAgICogSGFuZGxlIGVkaXQgaXRlbSBhY3Rpb25cbiAgICovXG4gIGFzeW5jIG9uRWRpdEl0ZW0oZXZlbnQ6IEV2ZW50LCBpdGVtOiBKc29uRmVlZEl0ZW0pIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5lZGl0SXRlbS5vYnNlcnZlZCkge1xuICAgICAgdGhpcy5lZGl0SXRlbS5lbWl0KGl0ZW0pO1xuICAgIH1cblxuICAgIGNvbnN0IGRvbmUgPSBhd2FpdCB0aGlzLmZlZWRTZXJ2aWNlPy5vcGVuRWRpdE1vZGFsKGV2ZW50LCBpdGVtKTtcbiAgICBpZiAoZG9uZSkge1xuICAgICAgLy8gZm9yY2UgYSByZWZyZXNoIG9mIHRoZSBmZWVkc1xuICAgICAgdGhpcy5vblJlZnJlc2guZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgZGVsZXRlIGl0ZW0gYWN0aW9uXG4gICAqL1xuICBhc3luYyBvbkRlbGV0ZUl0ZW0oZXZlbnQ6IEV2ZW50LCBpdGVtOiBKc29uRmVlZEl0ZW0pIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICAvLyBBc2sgZm9yIGNvbmZpcm1hdGlvbiBiZWZvcmUgZGVsZXRpb25cbiAgICBjb25zdCBjb25maXJtZWQgPSBhd2FpdCBBbGVydHMuYXNrQWN0aW9uQ29uZmlybWF0aW9uKHRoaXMuYWxlcnRDdHJsLCB0aGlzLnRyYW5zbGF0ZSwgdHJ1ZSwgZXZlbnQpO1xuICAgIGlmIChjb25maXJtZWQgIT09IHRydWUpIHtcbiAgICAgIHJldHVybjsgLy8gVXNlciBjYW5jZWxsZWQgb3IgZGlzbWlzc2VkXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGVsZXRlSXRlbS5vYnNlcnZlZCkge1xuICAgICAgdGhpcy5kZWxldGVJdGVtLmVtaXQoaXRlbSk7XG4gICAgfVxuXG4gICAgY29uc3QgZG9uZSA9IGF3YWl0IHRoaXMuZmVlZFNlcnZpY2U/LmRlbGV0ZUl0ZW0oaXRlbSk7XG4gICAgaWYgKGRvbmUpIHtcbiAgICAgIC8vIGZvcmNlIGEgcmVmcmVzaCBvZiB0aGUgZmVlZHNcbiAgICAgIHRoaXMub25SZWZyZXNoLmVtaXQoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjwhLS0gZGVidWcgLS0+XG5AaWYgKGRlYnVnKSB7XG4gIDxhcHAtZGVidWcgW3RpdGxlXT1cIidGZWVkJ1wiPlxuICAgIDxwPlxuICAgICAgaGFzRmVlZHM/OiB7eyBoYXNGZWVkcyQgfCBhc3luYyB9fVxuICAgICAgPGJyIC8+XG4gICAgICB1cmxzOiB7eyB1cmxzJCB8IGFzeW5jIHwganNvbiB9fVxuICAgICAgPGJyIC8+XG4gICAgICBzaGFwZToge3sgc2hhcGUgfX1cbiAgICA8L3A+XG4gIDwvYXBwLWRlYnVnPlxufVxuXG5AbGV0IGZlZWRzID0gZmVlZHMkIHwgYXN5bmM7XG5AbGV0IHVzZXJJZCA9IHVzZXJJZCQgfCBhc3luYztcblxuQGlmIChmZWVkcyB8IGlzTm90RW1wdHlBcnJheSkge1xuICA8IS0tIHRvcCBoZWFkZXIgLS0+XG4gIEBpZiAoc2hvd0hlYWRlciAmJiAoZmVlZHMgfCBhcnJheUZpcnN0KTsgYXMgZmVlZCkge1xuICAgIDxpb24taXRlbSBsaW5lcz1cIm5vbmVcIiBbY29sb3JdPVwiaGVhZGVyQ29sb3JcIiBjbGFzcz1cImZlZWQtaGVhZGVyIHNoYXBlLXt7IHNoYXBlIH19XCI+XG4gICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgbmFtZT1cIm1lZ2FwaG9uZVwiPjwvaW9uLWljb24+XG4gICAgICA8aW9uLWxhYmVsPlxuICAgICAgICA8Yj57eyBmZWVkLnRpdGxlIHx8ICgnU09DSUFMLkZFRUQuTkVXUycgfCB0cmFuc2xhdGUpIH19PC9iPlxuICAgICAgPC9pb24tbGFiZWw+XG4gICAgICA8aW9uLWJ1dHRvbiBzbG90PVwiZW5kXCIgZmlsbD1cImNsZWFyXCIgKGNsaWNrKT1cIm9wZW5GZWVkSG9tZSgpXCIgc2hhcGU9XCJcIj5cbiAgICAgICAgPGlvbi1sYWJlbCB0cmFuc2xhdGU+U09DSUFMLkZFRUQuU0hPV19BTExfRkVFRDwvaW9uLWxhYmVsPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cImVuZFwiIG5hbWU9XCJjaGV2cm9uLWZvcndhcmQtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgPC9pb24taXRlbT5cbiAgfVxuXG4gIDxkaXYgY2xhc3M9XCJmZWVkLWNvbnRlbnQgc2hhcGUte3sgc2hhcGUgfX0gaW9uLW5vLXBhZGRpbmdcIiBbY2xhc3MuaGFzLWhlYWRlcl09XCJzaG93SGVhZGVyXCI+XG4gICAgPCEtLSBmZWVkcyAtLT5cbiAgICBAZm9yIChmZWVkIG9mIGZlZWRzOyB0cmFjayBmZWVkLmZlZWRfdXJsOyBsZXQgZmlyc3RGZWVkID0gJGZpcnN0OyBsZXQgbGFzdEZlZWQgPSAkbGFzdCkge1xuICAgICAgPCEtLSBpdGVtcyAtLT5cbiAgICAgIEBmb3IgKGl0ZW0gb2YgZmVlZC5pdGVtcyB8IGFycmF5RmlsdGVyOiBmaWx0ZXJJdGVtOyB0cmFjayBpdGVtLmlkOyBsZXQgZmlyc3RJdGVtID0gJGZpcnN0OyBsZXQgbGFzdEl0ZW0gPSAkbGFzdCkge1xuICAgICAgICA8aW9uLWNhcmRcbiAgICAgICAgICBbY2xhc3MuZmlyc3RdPVwiZmlyc3RGZWVkICYmIGZpcnN0SXRlbVwiXG4gICAgICAgICAgW2NsYXNzLmxhc3RdPVwibGFzdEZlZWQgJiYgbGFzdEl0ZW1cIlxuICAgICAgICAgIFtjb2xvcl09XCJjYXJkQ29sb3IgIT09ICdsaWdodC10cmFuc3BhcmVudCcgPyBjYXJkQ29sb3IgOiB1bmRlZmluZWRcIlxuICAgICAgICAgIGNsYXNzPVwiZmVlZC1pdGVtLWNhcmRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZSBzdHlsZT1cInZlcnRpY2FsLWFsaWduOiBtaWRkbGVcIj5cbiAgICAgICAgICAgICAgPCEtLSBBdXRob3JzIC0tPlxuICAgICAgICAgICAgICBAZm9yIChhdXRob3Igb2YgaXRlbS5hdXRob3JzIHx8IGZlZWQuYXV0aG9yczsgdHJhY2sgYXV0aG9yKSB7XG4gICAgICAgICAgICAgICAgQGlmIChhdXRob3IubmFtZSB8fCBhdXRob3IuYXZhdGFyKSB7XG4gICAgICAgICAgICAgICAgICA8aW9uLWNoaXAgKGNsaWNrKT1cIm9wZW5VcmwoYXV0aG9yLnVybClcIiB0YXBwYWJsZT5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChhdXRob3IuYXZhdGFyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1hdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWltZyBbc3JjXT1cImF1dGhvci5hdmF0YXJcIiBbYWx0XT1cImF1dGhvci5uYW1lXCI+PC9pb24taW1nPlxuICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWF2YXRhcj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKGF1dGhvci5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cImF1dGhvclwiPnt7IGF1dGhvci5uYW1lIH19PC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWNoaXA+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDxpb24tbm90ZSBjbGFzcz1cImlvbi1mbG9hdC1lbmRcIj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgaXRlbS5kYXRlX3B1Ymxpc2hlZCB8IGRhdGVGcm9tTm93IH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9pb24tbm90ZT5cbiAgICAgICAgICAgIDwvaW9uLWNhcmQtc3VidGl0bGU+XG5cbiAgICAgICAgICAgIDwhLS0gdGl0bGUgLS0+XG4gICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGUgKGNsaWNrKT1cIm9wZW5GZWVkSXRlbShpdGVtLCBmZWVkKVwiIHRhcHBhYmxlPnt7IGl0ZW0/LnRpdGxlIH19PC9pb24tY2FyZC10aXRsZT5cblxuICAgICAgICAgICAgPCEtLSB0YWdzIC0tPlxuICAgICAgICAgICAgQGxldCB0YWdzID0gaXRlbSB8IG1hcDogZ2V0VGFncztcbiAgICAgICAgICAgIEBpZiAodGFncyB8IGlzTm90RW1wdHlBcnJheSkge1xuICAgICAgICAgICAgICA8aW9uLXRleHQgY2xhc3M9XCJ0YWdzXCI+XG4gICAgICAgICAgICAgICAgQGZvciAodGFnIG9mIHRhZ3M7IHRyYWNrIHRhZzsgbGV0IGxhc3QgPSAkbGFzdCkge1xuICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cIm9wZW5UYWcoZmVlZCwgdGFnKVwiIHRhcHBhYmxlPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLXRleHQ+I3t7IHRhZyB9fTwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICBAaWYgKCFsYXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cblxuICAgICAgICAgIDwhLS0gRmVlZCBjb250ZW50IC0tPlxuICAgICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgPGlvbi10ZXh0IFtmZWVkXT1cIml0ZW0udXJsIHx8IGZlZWQuZmVlZF91cmxcIj5cbiAgICAgICAgICAgICAgQGlmIChpdGVtLmNvbnRlbnRfaHRtbCkge1xuICAgICAgICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwiaXRlbS5jb250ZW50X2h0bWxcIj48L3A+XG4gICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGl0ZW0uY29udGVudF90ZXh0KSB7XG4gICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICA8bWFya2Rvd24gW2RhdGFdPVwiaXRlbS5jb250ZW50X3RleHRcIiBlbW9qaT48L21hcmtkb3duPlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG5cbiAgICAgICAgICBAbGV0IGVkaXRhYmxlID0gY2FuRWRpdEl0ZW0oaXRlbSwgdXNlcklkLCBmZWVkKTtcbiAgICAgICAgICBAaWYgKGVkaXRhYmxlIHx8IHNob3dSZWFkTW9yZUJ1dHRvbikge1xuICAgICAgICAgICAgQGlmIChlZGl0YWJsZSkge1xuXG4gICAgICAgICAgICAgIDwhLS0gRGVsZXRlIGJ1dHRvbiAodmlzaWJsZSBob3ZlciktLT5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRlbGV0ZUl0ZW0oJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ2aXNpYmxlLWhvdmVyIGlvbi1mbG9hdC1zdGFydFwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidDT01NT04uQlROX0RFTEVURScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmRlbGV0ZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8IS0tIEVkaXQgYnV0dG9uICh2aXNpYmxlIGhvdmVyKSAtLT5cbiAgICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25FZGl0SXRlbSgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZpc2libGUtaG92ZXIgaW9uLWZsb2F0LXN0YXJ0XCIgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzbG90PVwic3RhcnRcIj5lZGl0PC9tYXQtaWNvbj5cbjwhLS0gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJwZW5jaWxcIiBzbG90PVwic3RhcnRcIj48L2lvbi1pY29uPi0tPlxuICAgICAgICAgICAgICAgIDxpb24tbGFiZWwgdHJhbnNsYXRlPkNPTU1PTi5CVE5fRURJVDwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHNob3dSZWFkTW9yZUJ1dHRvbikge1xuICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiAgKGNsaWNrKT1cIm9wZW5GZWVkSXRlbShpdGVtLCBmZWVkKVwiIGNsYXNzPVwiaW9uLWZsb2F0LWVuZFwiIGZpbGw9XCJjbGVhclwiPlxuICAgICAgICAgICAgICAgIDxpb24tbGFiZWw+e3sgKGl0ZW0udHJ1bmNhdGVkID8gJ1NPQ0lBTC5GRUVELlJFQURfTU9SRScgOiAnQ09NTU9OLkJUTl9TSE9XJykgfCB0cmFuc2xhdGUgfX08L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImVuZFwiIG5hbWU9XCJjaGV2cm9uLWZvcndhcmQtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDwvaW9uLWNhcmQ+XG4gICAgICB9XG4gICAgfVxuICA8L2Rpdj5cbn1cblxuPCEtLSBEZXRhaWxzIG1vZGFsIC0tPlxuPGlvbi1tb2RhbCAjbW9kYWwgW3Nob3dCYWNrZHJvcF09XCJmYWxzZVwiXG4gICAgICAgICAgIGNsYXNzPVwic3RhY2stbW9kYWxcIiBbY2xhc3MubW9kYWwtbGFyZ2VdPVwiIW1vYmlsZVwiPlxuICA8bmctdGVtcGxhdGU+XG4gICAgPGlvbi1oZWFkZXI+XG4gICAgICA8aW9uLXRvb2xiYXIgY29sb3I9XCJzZWNvbmRhcnlcIj5cbiAgICAgICAgPGlvbi10aXRsZT57eyAnU09DSUFMLkZFRUQuTkVXUycgfCB0cmFuc2xhdGUgfX08L2lvbi10aXRsZT5cbiAgICAgICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJjbG9zZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2lvbi1idXR0b25zPlxuICAgICAgPC9pb24tdG9vbGJhcj5cbiAgICA8L2lvbi1oZWFkZXI+XG4gICAgPGlvbi1jb250ZW50PlxuICAgICAgPGRpdiBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICAgIDxhcHAtZmVlZFxuICAgICAgICAgIFt1cmxzXT1cInVybHNcIlxuICAgICAgICAgIFtzaG93SGVhZGVyXT1cImZhbHNlXCJcbiAgICAgICAgICBbc2hvd1JlYWRNb3JlQnV0dG9uXT1cImZhbHNlXCJcbiAgICAgICAgICBbbWF4Q29udGVudExlbmd0aF09XCItMVwiXG4gICAgICAgICAgW21heEFnZUluTW9udGhzXT1cIi0xXCJcbiAgICAgICAgICBbaXRlbUlkXT1cIm1vZGFsSXRlbUlkXCJcbiAgICAgICAgICBjYXJkQ29sb3I9XCJsaWdodFwiXG4gICAgICAgICAgW2RlYnVnXT1cImRlYnVnXCJcbiAgICAgICAgPjwvYXBwLWZlZWQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2lvbi1jb250ZW50PlxuICA8L25nLXRlbXBsYXRlPlxuPC9pb24tbW9kYWw+XG4iXX0=
|
|
@@ -148,4 +148,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
148
148
|
type: Input,
|
|
149
149
|
args: [{ alias: 'feed', required: true }]
|
|
150
150
|
}] } });
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC9mZWVkL2ZlZWQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLE1BQU0sRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBVyxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUs3QyxNQUFNLE9BQU8sYUFBYTtJQW9CSjtJQW5CWixhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUNuQyxRQUFRLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ25DLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzVDLGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QixLQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRS9CLFFBQVEsQ0FBUztJQUNqQixRQUFRLENBQVM7SUFFekIsSUFBOEMsT0FBTyxDQUFDLEtBQWE7UUFDakUs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QU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVztRQUNwQixHQUFHLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLElBQUksUUFBUSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkcsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUMsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQztRQUNwQyxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDO1FBQzFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7d0dBckpVLGFBQWE7NEZBQWIsYUFBYTs7NEZBQWIsYUFBYTtrQkFIekIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtpQkFDeEI7K0VBWStDLE9BQU87c0JBQXBELEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciwgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFVybFV0aWxzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2ZpbGUvdXJsLnV0aWxzJztcclxuaW1wb3J0IHsgTG9jYXRpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IGlzTm90TmlsT3JCbGFuayB9IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBQbGF0Zm9ybVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL3BsYXRmb3JtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBKc29uRmVlZFV0aWxzIH0gZnJvbSAnLi9mZWVkLm1vZGVsJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnZmVlZCxbZmVlZF0nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmVlZERpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIHByaXZhdGUgcGxhdGZvcm0gPSBpbmplY3QoUGxhdGZvcm1TZXJ2aWNlKTtcclxuICBwcml2YXRlIGxvY2F0aW9uU3RyYXRlZ3kgPSBpbmplY3QoTG9jYXRpb25TdHJhdGVneSk7XHJcbiAgcHJpdmF0ZSBuYXZDb250cm9sbGVyID0gaW5qZWN0KE5hdkNvbnRyb2xsZXIpO1xyXG4gIHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcbiAgcHJpdmF0ZSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XHJcblxyXG4gIHByaXZhdGUgX2ZlZWRVcmw6IHN0cmluZztcclxuICBwcml2YXRlIF9iYXNlVXJsOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCh7IGFsaWFzOiAnZmVlZCcsIHJlcXVpcmVkOiB0cnVlIH0pIHNldCBmZWVkVXJsKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2ZlZWRVcmwgPSB2YWx1ZTtcclxuICAgIHRoaXMuX2Jhc2VVcmwgPSB2YWx1ZSAmJiBKc29uRmVlZFV0aWxzLnJlbW92ZUpzb25FeHRlbnNpb24odmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZlZWRVcmwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9mZWVkVXJsO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xyXG4gICAgLy8gREVCVUdcclxuICAgIC8vY29uc29sZS5kZWJ1ZygnW2ZlZWQtZGlyZWN0aXZlXSBDcmVhdGluZyBmZWVkIGRpcmVjdGl2ZScpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGNvbnNvbGUuZGVidWcoJ1tmZWVkLWRpcmVjdGl2ZV0gUHJvY2Vzc2luZyBhbmNob3JzJyk7XHJcbiAgICAvLyBMaXN0ZW5pbmcgY2xpY2sgZXZlbnRzXHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKHRoaXMubGlzdGVuQ2xpY2tFdmVudHModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgbGlzdGVuQ2xpY2tFdmVudHMobmF0aXZlRWxlbWVudDogSFRNTEVsZW1lbnQpOiBTdWJzY3JpcHRpb24ge1xyXG4gICAgY29uc29sZS5kZWJ1ZygnW2ZlZWQtZGlyZWN0aXZlXSBTdGFydCBsaXN0ZW5pbmcgY2xpY2sgZXZlbnRzLi4uJyk7XHJcbiAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgICBjb25zdCBsaXN0ZW5lciA9IChldmVudDogRXZlbnQpID0+IHRoaXMuY2xpY2soZXZlbnQsIG5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgY29uc3QgbGlua3MgPSBuYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2EnKTtcclxuICAgIGxpbmtzLmZvckVhY2goKGxpbmspID0+IHtcclxuICAgICAgLy8gREVCVUdcclxuICAgICAgLy9jb25zb2xlLmRlYnVnKCdbZmVlZC1kaXJlY3RpdmVdIEFkZGluZyBjbGljayBsaXN0ZW5lciB0bycsIGxpbmspO1xyXG4gICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgbGlzdGVuZXIpO1xyXG4gICAgICBzdWJzY3JpcHRpb24uYWRkKCgpID0+IGxpbmsucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBsaXN0ZW5lcikpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gREVCVUdcclxuICAgIHN1YnNjcmlwdGlvbi5hZGQoKCkgPT4gY29uc29sZS5kZWJ1ZygnW2ZlZWQtZGlyZWN0aXZlXSBTdG9wIGxpc3RlbmluZyBjbGljayBldmVudHMnKSk7XHJcblxyXG4gICAgcmV0dXJuIHN1YnNjcmlwdGlvbjtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBhc3luYyBjbGljayhldmVudDogRXZlbnQsIGNvbnRhaW5lckVsZW1lbnQ6IEhUTUxFbGVtZW50KTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBjb25zb2xlLmRlYnVnKCdbZmVlZC1kaXJlY3RpdmVdIFByb2Nlc3NpbmcgY2xpY2sgZXZlbnQuLi4nLCBldmVudCk7XHJcblxyXG4gICAgaWYgKCEoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgSFRNTEFuY2hvckVsZW1lbnQpICYmICEoZXZlbnQudGFyZ2V0Py5bJ3RhZ05hbWUnXSA9PT0gJ0EnKSkge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ1tmZWVkLWRpcmVjdGl2ZV0gSW52YWxpZCBjbGljayBldmVudCB0YXJnZXQuIFNob3VsZCBhbiBhbmNob3IgPGE+JywgZXZlbnQudGFyZ2V0KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTEFuY2hvckVsZW1lbnQ7XHJcblxyXG4gICAgbGV0IGhyZWYgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnaHJlZicpO1xyXG4gICAgY29uc3QgZnJhZ21lbnQgPSBVcmxVdGlscy5nZXRGcmFnbWVudChocmVmKTtcclxuXHJcbiAgICAvLyBGcmFnbWVudFxyXG4gICAgaWYgKGhyZWY/LnN0YXJ0c1dpdGgoJyMnKSAmJiBpc05vdE5pbE9yQmxhbmsoZnJhZ21lbnQpKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMuc2Nyb2xsVG9BbmNob3IoY29udGFpbmVyRWxlbWVudCwgZnJhZ21lbnQpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByb3V0ZXJMaW5rID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3JvdXRlckxpbmsnKTtcclxuICAgIGlmIChpc05vdE5pbE9yQmxhbmsocm91dGVyTGluaykpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgcmV0dXJuIHRoaXMubmF2Q29udHJvbGxlci5uYXZpZ2F0ZUZvcndhcmQocm91dGVyTGluayk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmVzb2x2ZSByZWxhdGl2ZSBVUkwsIGlmIGJhc2VVcmwgaGFzIGJlZW4gc2V0XHJcbiAgICBpZiAodGhpcy5fYmFzZVVybCAmJiBVcmxVdGlscy5pc1JlbGF0aXZlVXJsKGhyZWYpKSB7XHJcbiAgICAgIC8vIFJlc29sdmUgVVJMLCB0aGVuIG9wZW4gdXNpbmcgdGhlIHBsYXRmb3JtXHJcbiAgICAgIGhyZWYgPSBVcmxVdGlscy5yZXNvbHZlUmVsYXRpdmVVcmwodGhpcy5fYmFzZVVybCwgaHJlZik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmVzb2x2ZSBpbnRlcm5hbCBVUkwgYXMgYW4gYXBwIHJvdXRlXHJcbiAgICBpZiAoVXJsVXRpbHMuaXNJbnRlcm5hbFVybChocmVmKSkge1xyXG4gICAgICBjb25zdCByb3V0ZVBhdGggPSB0aGlzLm5vcm1hbGl6ZVVybChocmVmLnN0YXJ0c1dpdGgoJy8nKSA/IGhyZWYgOiBgLyR7aHJlZn1gKTtcclxuICAgICAgY29uc3QgdXJsVHJlZSA9IHRoaXMuZ2V0VXJsVHJlZShyb3V0ZVBhdGgpO1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZWQgPSBmYWxzZTtcclxuICAgICAgLy8gT3BlbmluZyByb3V0ZVxyXG4gICAgICByZXR1cm4gdGhpcy5uYXZDb250cm9sbGVyLm5hdmlnYXRlRm9yd2FyZCh1cmxUcmVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBFeHRlcm5hbCBVUkw6IG9wZW4gdXNpbmcgdGhlIHBsYXRmb3JtXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgYXdhaXQgdGhpcy5wbGF0Zm9ybS5vcGVuKGhyZWYpO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBzY3JvbGxUb0FuY2hvcihjb250YWluZXJFbGVtZW50OiBIVE1MRWxlbWVudCwgYW5jaG9ySWQ6IHN0cmluZykge1xyXG4gICAgaWYgKCFjb250YWluZXJFbGVtZW50IHx8ICFhbmNob3JJZCkge1xyXG4gICAgICBjb25zb2xlLndhcm4oXCJNaXNzaW5nICdjb250YWluZXJFbGVtZW50JyBvciAnZnJhZ21lbnQnIGFyZ3VtZW50LlwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnNvbGUuZGVidWcoJ1tmZWVkLWRpcmVjdGl2ZS1hbmNob3JdIFNjcm9sbGluZyB0byBhbmNob3IgIycgKyBhbmNob3JJZCk7XHJcblxyXG4gICAgLy8gRmluZCB0aGUgdGFyZ2V0IGVsZW1lbnQgd2l0aCB0aGUgc3BlY2lmaWVkIGZyYWdtZW50IElEXHJcbiAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC5xdWVyeVNlbGVjdG9yKGAjJHthbmNob3JJZH1gKTtcclxuXHJcbiAgICBpZiAodGFyZ2V0RWxlbWVudCkge1xyXG4gICAgICAvLyBTY3JvbGwgc21vb3RobHkgdG8gdGhlIHRhcmdldCBlbGVtZW50XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAcngtYW5ndWxhci9wcmVmZXItbm8tbGF5b3V0LXNlbnNpdGl2ZS1hcGlzXHJcbiAgICAgIHRhcmdldEVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoe1xyXG4gICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJywgLy8gU21vb3RoIHNjcm9sbGluZyBiZWhhdmlvclxyXG4gICAgICAgIGJsb2NrOiAnc3RhcnQnLCAvLyBBbGlnbiB0aGUgdGFyZ2V0IGVsZW1lbnQgdG8gdGhlIHRvcCBvZiB0aGUgY29udGFpbmVyXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS53YXJuKGBObyBlbGVtZW50IGZvdW5kIHdpdGggdGhlIElEIFwiJHthbmNob3JJZH1cIiBpbnNpZGUgdGhlIGNvbnRhaW5lci5gKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRyYW5zZm9ybSBhIHJlbGF0aXZlIFVSTCB0byBpdHMgYWJzb2x1dGUgcmVwcmVzZW50YXRpb24gYWNjb3JkaW5nIHRvIGN1cnJlbnQgcm91dGVyIHN0YXRlLlxyXG4gICAqIEBwYXJhbSB1cmwgUmVsYXRpdmUgVVJMIHBhdGguXHJcbiAgICogQHJldHVybiBBYnNvbHV0ZSBVUkwgYmFzZWQgb24gdGhlIGN1cnJlbnQgcm91dGUuXHJcbiAgICovXHJcbiAgbm9ybWFsaXplVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmIChVcmxVdGlscy5pc0V4dGVybmFsVXJsKHVybCkpIHtcclxuICAgICAgcmV0dXJuIHVybDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9iYXNlVXJsICYmIFVybFV0aWxzLmlzUmVsYXRpdmVVcmwodXJsKSkge1xyXG4gICAgICByZXR1cm4gVXJsVXRpbHMucmVzb2x2ZVJlbGF0aXZlVXJsKHRoaXMuX2Jhc2VVcmwsIHVybCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdXJsVHJlZSA9IHRoaXMuZ2V0VXJsVHJlZSh1cmwpO1xyXG4gICAgY29uc3Qgc2VyaWFsaXplZFVybCA9IHRoaXMucm91dGVyLnNlcmlhbGl6ZVVybCh1cmxUcmVlKTtcclxuICAgIHJldHVybiB0aGlzLmxvY2F0aW9uU3RyYXRlZ3kucHJlcGFyZUV4dGVybmFsVXJsKHNlcmlhbGl6ZWRVcmwpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXJsVHJlZSh1cmw6IHN0cmluZyk6IFVybFRyZWUge1xyXG4gICAgdXJsID0gVXJsVXRpbHMubm9ybWFsaXplVXJsKHVybCk7XHJcbiAgICBjb25zdCB1cmxQYXRoID0gVXJsVXRpbHMuc3RyaXBGcmFnbWVudEFuZFF1ZXJ5KHVybCkgfHwgVXJsVXRpbHMuc3RyaXBGcmFnbWVudEFuZFF1ZXJ5KHRoaXMucm91dGVyLnVybCk7XHJcbiAgICBjb25zdCBwYXJzZWRVcmwgPSB0aGlzLnJvdXRlci5wYXJzZVVybCh1cmwpO1xyXG4gICAgY29uc3QgZnJhZ21lbnQgPSBwYXJzZWRVcmwuZnJhZ21lbnQ7XHJcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHBhcnNlZFVybC5xdWVyeVBhcmFtcztcclxuICAgIHJldHVybiB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFt1cmxQYXRoXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLCBmcmFnbWVudCwgcXVlcnlQYXJhbXMgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC9mZWVkL2ZlZWQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLE1BQU0sRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBVyxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUs3QyxNQUFNLE9BQU8sYUFBYTtJQW9CSjtJQW5CWixhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUNuQyxRQUFRLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ25DLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzVDLGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QixLQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRS9CLFFBQVEsQ0FBUztJQUNqQixRQUFRLENBQVM7SUFFekIsSUFBOEMsT0FBTyxDQUFDLEtBQWE7UUFDakUs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QU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVztRQUNwQixHQUFHLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLElBQUksUUFBUSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkcsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUMsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQztRQUNwQyxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDO1FBQzFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7d0dBckpVLGFBQWE7NEZBQWIsYUFBYTs7NEZBQWIsYUFBYTtrQkFIekIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtpQkFDeEI7K0VBWStDLE9BQU87c0JBQXBELEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyLCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFVybFV0aWxzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2ZpbGUvdXJsLnV0aWxzJztcbmltcG9ydCB7IExvY2F0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgaXNOb3ROaWxPckJsYW5rIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgUGxhdGZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9wbGF0Zm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7IEpzb25GZWVkVXRpbHMgfSBmcm9tICcuL2ZlZWQubW9kZWwnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdmZWVkLFtmZWVkXScsXG59KVxuZXhwb3J0IGNsYXNzIEZlZWREaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgcGxhdGZvcm0gPSBpbmplY3QoUGxhdGZvcm1TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBsb2NhdGlvblN0cmF0ZWd5ID0gaW5qZWN0KExvY2F0aW9uU3RyYXRlZ3kpO1xuICBwcml2YXRlIG5hdkNvbnRyb2xsZXIgPSBpbmplY3QoTmF2Q29udHJvbGxlcik7XG4gIHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuXG4gIHByaXZhdGUgX2ZlZWRVcmw6IHN0cmluZztcbiAgcHJpdmF0ZSBfYmFzZVVybDogc3RyaW5nO1xuXG4gIEBJbnB1dCh7IGFsaWFzOiAnZmVlZCcsIHJlcXVpcmVkOiB0cnVlIH0pIHNldCBmZWVkVXJsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9mZWVkVXJsID0gdmFsdWU7XG4gICAgdGhpcy5fYmFzZVVybCA9IHZhbHVlICYmIEpzb25GZWVkVXRpbHMucmVtb3ZlSnNvbkV4dGVuc2lvbih2YWx1ZSk7XG4gIH1cblxuICBnZXQgZmVlZFVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9mZWVkVXJsO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgIC8vIERFQlVHXG4gICAgLy9jb25zb2xlLmRlYnVnKCdbZmVlZC1kaXJlY3RpdmVdIENyZWF0aW5nIGZlZWQgZGlyZWN0aXZlJyk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnNvbGUuZGVidWcoJ1tmZWVkLWRpcmVjdGl2ZV0gUHJvY2Vzc2luZyBhbmNob3JzJyk7XG4gICAgLy8gTGlzdGVuaW5nIGNsaWNrIGV2ZW50c1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQodGhpcy5saXN0ZW5DbGlja0V2ZW50cyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCkpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbGlzdGVuQ2xpY2tFdmVudHMobmF0aXZlRWxlbWVudDogSFRNTEVsZW1lbnQpOiBTdWJzY3JpcHRpb24ge1xuICAgIGNvbnNvbGUuZGVidWcoJ1tmZWVkLWRpcmVjdGl2ZV0gU3RhcnQgbGlzdGVuaW5nIGNsaWNrIGV2ZW50cy4uLicpO1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICBjb25zdCBsaXN0ZW5lciA9IChldmVudDogRXZlbnQpID0+IHRoaXMuY2xpY2soZXZlbnQsIG5hdGl2ZUVsZW1lbnQpO1xuICAgIGNvbnN0IGxpbmtzID0gbmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhJyk7XG4gICAgbGlua3MuZm9yRWFjaCgobGluaykgPT4ge1xuICAgICAgLy8gREVCVUdcbiAgICAgIC8vY29uc29sZS5kZWJ1ZygnW2ZlZWQtZGlyZWN0aXZlXSBBZGRpbmcgY2xpY2sgbGlzdGVuZXIgdG8nLCBsaW5rKTtcbiAgICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBsaXN0ZW5lcik7XG4gICAgICBzdWJzY3JpcHRpb24uYWRkKCgpID0+IGxpbmsucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBsaXN0ZW5lcikpO1xuICAgIH0pO1xuXG4gICAgLy8gREVCVUdcbiAgICBzdWJzY3JpcHRpb24uYWRkKCgpID0+IGNvbnNvbGUuZGVidWcoJ1tmZWVkLWRpcmVjdGl2ZV0gU3RvcCBsaXN0ZW5pbmcgY2xpY2sgZXZlbnRzJykpO1xuXG4gICAgcmV0dXJuIHN1YnNjcmlwdGlvbjtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBjbGljayhldmVudDogRXZlbnQsIGNvbnRhaW5lckVsZW1lbnQ6IEhUTUxFbGVtZW50KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc29sZS5kZWJ1ZygnW2ZlZWQtZGlyZWN0aXZlXSBQcm9jZXNzaW5nIGNsaWNrIGV2ZW50Li4uJywgZXZlbnQpO1xuXG4gICAgaWYgKCEoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgSFRNTEFuY2hvckVsZW1lbnQpICYmICEoZXZlbnQudGFyZ2V0Py5bJ3RhZ05hbWUnXSA9PT0gJ0EnKSkge1xuICAgICAgY29uc29sZS53YXJuKCdbZmVlZC1kaXJlY3RpdmVdIEludmFsaWQgY2xpY2sgZXZlbnQgdGFyZ2V0LiBTaG91bGQgYW4gYW5jaG9yIDxhPicsIGV2ZW50LnRhcmdldCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MQW5jaG9yRWxlbWVudDtcblxuICAgIGxldCBocmVmID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2hyZWYnKTtcbiAgICBjb25zdCBmcmFnbWVudCA9IFVybFV0aWxzLmdldEZyYWdtZW50KGhyZWYpO1xuXG4gICAgLy8gRnJhZ21lbnRcbiAgICBpZiAoaHJlZj8uc3RhcnRzV2l0aCgnIycpICYmIGlzTm90TmlsT3JCbGFuayhmcmFnbWVudCkpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnNjcm9sbFRvQW5jaG9yKGNvbnRhaW5lckVsZW1lbnQsIGZyYWdtZW50KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHJvdXRlckxpbmsgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgncm91dGVyTGluaycpO1xuICAgIGlmIChpc05vdE5pbE9yQmxhbmsocm91dGVyTGluaykpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByZXR1cm4gdGhpcy5uYXZDb250cm9sbGVyLm5hdmlnYXRlRm9yd2FyZChyb3V0ZXJMaW5rKTtcbiAgICB9XG5cbiAgICAvLyBSZXNvbHZlIHJlbGF0aXZlIFVSTCwgaWYgYmFzZVVybCBoYXMgYmVlbiBzZXRcbiAgICBpZiAodGhpcy5fYmFzZVVybCAmJiBVcmxVdGlscy5pc1JlbGF0aXZlVXJsKGhyZWYpKSB7XG4gICAgICAvLyBSZXNvbHZlIFVSTCwgdGhlbiBvcGVuIHVzaW5nIHRoZSBwbGF0Zm9ybVxuICAgICAgaHJlZiA9IFVybFV0aWxzLnJlc29sdmVSZWxhdGl2ZVVybCh0aGlzLl9iYXNlVXJsLCBocmVmKTtcbiAgICB9XG5cbiAgICAvLyBSZXNvbHZlIGludGVybmFsIFVSTCBhcyBhbiBhcHAgcm91dGVcbiAgICBpZiAoVXJsVXRpbHMuaXNJbnRlcm5hbFVybChocmVmKSkge1xuICAgICAgY29uc3Qgcm91dGVQYXRoID0gdGhpcy5ub3JtYWxpemVVcmwoaHJlZi5zdGFydHNXaXRoKCcvJykgPyBocmVmIDogYC8ke2hyZWZ9YCk7XG4gICAgICBjb25zdCB1cmxUcmVlID0gdGhpcy5nZXRVcmxUcmVlKHJvdXRlUGF0aCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVkID0gZmFsc2U7XG4gICAgICAvLyBPcGVuaW5nIHJvdXRlXG4gICAgICByZXR1cm4gdGhpcy5uYXZDb250cm9sbGVyLm5hdmlnYXRlRm9yd2FyZCh1cmxUcmVlKTtcbiAgICB9XG5cbiAgICAvLyBFeHRlcm5hbCBVUkw6IG9wZW4gdXNpbmcgdGhlIHBsYXRmb3JtXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBhd2FpdCB0aGlzLnBsYXRmb3JtLm9wZW4oaHJlZik7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBzY3JvbGxUb0FuY2hvcihjb250YWluZXJFbGVtZW50OiBIVE1MRWxlbWVudCwgYW5jaG9ySWQ6IHN0cmluZykge1xuICAgIGlmICghY29udGFpbmVyRWxlbWVudCB8fCAhYW5jaG9ySWQpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIk1pc3NpbmcgJ2NvbnRhaW5lckVsZW1lbnQnIG9yICdmcmFnbWVudCcgYXJndW1lbnQuXCIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnNvbGUuZGVidWcoJ1tmZWVkLWRpcmVjdGl2ZS1hbmNob3JdIFNjcm9sbGluZyB0byBhbmNob3IgIycgKyBhbmNob3JJZCk7XG5cbiAgICAvLyBGaW5kIHRoZSB0YXJnZXQgZWxlbWVudCB3aXRoIHRoZSBzcGVjaWZpZWQgZnJhZ21lbnQgSURcbiAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC5xdWVyeVNlbGVjdG9yKGAjJHthbmNob3JJZH1gKTtcblxuICAgIGlmICh0YXJnZXRFbGVtZW50KSB7XG4gICAgICAvLyBTY3JvbGwgc21vb3RobHkgdG8gdGhlIHRhcmdldCBlbGVtZW50XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHJ4LWFuZ3VsYXIvcHJlZmVyLW5vLWxheW91dC1zZW5zaXRpdmUtYXBpc1xuICAgICAgdGFyZ2V0RWxlbWVudC5zY3JvbGxJbnRvVmlldyh7XG4gICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJywgLy8gU21vb3RoIHNjcm9sbGluZyBiZWhhdmlvclxuICAgICAgICBibG9jazogJ3N0YXJ0JywgLy8gQWxpZ24gdGhlIHRhcmdldCBlbGVtZW50IHRvIHRoZSB0b3Agb2YgdGhlIGNvbnRhaW5lclxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybihgTm8gZWxlbWVudCBmb3VuZCB3aXRoIHRoZSBJRCBcIiR7YW5jaG9ySWR9XCIgaW5zaWRlIHRoZSBjb250YWluZXIuYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBhIHJlbGF0aXZlIFVSTCB0byBpdHMgYWJzb2x1dGUgcmVwcmVzZW50YXRpb24gYWNjb3JkaW5nIHRvIGN1cnJlbnQgcm91dGVyIHN0YXRlLlxuICAgKiBAcGFyYW0gdXJsIFJlbGF0aXZlIFVSTCBwYXRoLlxuICAgKiBAcmV0dXJuIEFic29sdXRlIFVSTCBiYXNlZCBvbiB0aGUgY3VycmVudCByb3V0ZS5cbiAgICovXG4gIG5vcm1hbGl6ZVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKFVybFV0aWxzLmlzRXh0ZXJuYWxVcmwodXJsKSkge1xuICAgICAgcmV0dXJuIHVybDtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2Jhc2VVcmwgJiYgVXJsVXRpbHMuaXNSZWxhdGl2ZVVybCh1cmwpKSB7XG4gICAgICByZXR1cm4gVXJsVXRpbHMucmVzb2x2ZVJlbGF0aXZlVXJsKHRoaXMuX2Jhc2VVcmwsIHVybCk7XG4gICAgfVxuXG4gICAgY29uc3QgdXJsVHJlZSA9IHRoaXMuZ2V0VXJsVHJlZSh1cmwpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWRVcmwgPSB0aGlzLnJvdXRlci5zZXJpYWxpemVVcmwodXJsVHJlZSk7XG4gICAgcmV0dXJuIHRoaXMubG9jYXRpb25TdHJhdGVneS5wcmVwYXJlRXh0ZXJuYWxVcmwoc2VyaWFsaXplZFVybCk7XG4gIH1cblxuICBnZXRVcmxUcmVlKHVybDogc3RyaW5nKTogVXJsVHJlZSB7XG4gICAgdXJsID0gVXJsVXRpbHMubm9ybWFsaXplVXJsKHVybCk7XG4gICAgY29uc3QgdXJsUGF0aCA9IFVybFV0aWxzLnN0cmlwRnJhZ21lbnRBbmRRdWVyeSh1cmwpIHx8IFVybFV0aWxzLnN0cmlwRnJhZ21lbnRBbmRRdWVyeSh0aGlzLnJvdXRlci51cmwpO1xuICAgIGNvbnN0IHBhcnNlZFVybCA9IHRoaXMucm91dGVyLnBhcnNlVXJsKHVybCk7XG4gICAgY29uc3QgZnJhZ21lbnQgPSBwYXJzZWRVcmwuZnJhZ21lbnQ7XG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSBwYXJzZWRVcmwucXVlcnlQYXJhbXM7XG4gICAgcmV0dXJuIHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoW3VybFBhdGhdLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUsIGZyYWdtZW50LCBxdWVyeVBhcmFtcyB9KTtcbiAgfVxufVxuIl19
|
|
@@ -64,4 +64,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
64
64
|
}], feedItemId: [{
|
|
65
65
|
type: Input
|
|
66
66
|
}] } });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC5wYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zb2NpYWwvZmVlZC9mZWVkLnBhZ2UudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC9mZWVkL2ZlZWQucGFnZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSSxPQUFPLEVBQWUsV0FBVyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFbkYsT0FBTyxFQUFFLGdCQUFnQixFQUFnQixNQUFNLGdCQUFnQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQU9oRCxNQUFNLE9BQU8sUUFBUTtJQVVQO0lBQ0E7SUFDbUM7SUFDSjtJQVpqQyxjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUNyQyxjQUFjLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUMsS0FBSyxDQUFVO0lBRWYsS0FBSyxHQUFHLGtCQUFrQixDQUFDO0lBQzNCLFFBQVEsQ0FBVztJQUNuQixVQUFVLENBQVM7SUFFNUIsWUFDWSxRQUE4QixFQUM5QixFQUFxQixFQUNjLFdBQTRCLEVBQ2hDLFdBQXdCO1FBSHZELGFBQVEsR0FBUixRQUFRLENBQXNCO1FBQzlCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ2MsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBQ2hDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRWpFLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUTtRQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsTUFBTSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZILE9BQU8sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsQ0FBQzt3R0E3QlUsUUFBUSx1RkFZRyxnQkFBZ0IsNkJBQ2hCLFdBQVc7NEZBYnRCLFFBQVEsaUpDYnJCLDJtQkF3QkE7OzRGRFhhLFFBQVE7a0JBTHBCLFNBQVM7K0JBQ0UsZUFBZSxtQkFFUix1QkFBdUIsQ0FBQyxNQUFNOzswQkFjNUMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUNuQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFdBQVc7eUNBVnhCLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQsIEVOVklST05NRU5UIH0gZnJvbSAnLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LmNsYXNzJztcbmltcG9ydCB7IExvY2FsU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9sb2NhbC1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IEFQUF9GRUVEX1NFUlZJQ0UsIElGZWVkU2VydmljZSB9IGZyb20gJy4vZmVlZC5zZXJ2aWNlJztcbmltcG9ydCB7IEpzb25GZWVkIH0gZnJvbSAnLi9mZWVkLm1vZGVsJztcbmltcG9ydCB7IGZpcnN0Tm90TmlsUHJvbWlzZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9vYnNlcnZhYmxlcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZlZWQtcGFnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9mZWVkLnBhZ2UuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGZWVkUGFnZTxUIGV4dGVuZHMgSnNvbkZlZWQgPSBKc29uRmVlZD4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByb3RlY3RlZCBkZXN0cm95U3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByb3RlY3RlZCBsb2FkaW5nU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XG4gIEBJbnB1dCgpIGRlYnVnOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIHRpdGxlID0gJ1NPQ0lBTC5GRUVELk5FV1MnO1xuICBASW5wdXQoKSBmZWVkVXJsczogc3RyaW5nW107XG4gIEBJbnB1dCgpIGZlZWRJdGVtSWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgc2V0dGluZ3M6IExvY2FsU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChBUFBfRkVFRF9TRVJWSUNFKSBwdWJsaWMgZmVlZFNlcnZpY2U6IElGZWVkU2VydmljZTxUPixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEVOVklST05NRU5UKSBwcml2YXRlIGVudmlyb25tZW50OiBFbnZpcm9ubWVudFxuICApIHtcbiAgICB0aGlzLmRlYnVnID0gIWVudmlyb25tZW50Py5wcm9kdWN0aW9uO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mZWVkU2VydmljZS5yZWFkeSgpO1xuICAgIHRoaXMuZmVlZFVybHMgPSB0aGlzLmZlZWRVcmxzID8/IChhd2FpdCBmaXJzdE5vdE5pbFByb21pc2UodGhpcy5mZWVkU2VydmljZS5mZWVkVXJscyQsIHsgc3RvcDogdGhpcy5kZXN0cm95U3ViamVjdCB9KSk7XG4gICAgY29uc29sZS5kZWJ1ZygnW2ZlZWQtcGFnZV0gRmVlZCBVUkxzOicsIHRoaXMuZmVlZFVybHMpO1xuICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveVN1YmplY3QubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveVN1YmplY3QuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPGlvbi1oZWFkZXI+XG4gIDxpb24tdG9vbGJhciBjb2xvcj1cInByaW1hcnlcIj5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICA8aW9uLWJhY2stYnV0dG9uPjwvaW9uLWJhY2stYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG5cbiAgICA8aW9uLXRpdGxlPnt7IHRpdGxlIHwgdHJhbnNsYXRlIH19PC9pb24tdGl0bGU+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1oZWFkZXI+XG5cbjxpb24tY29udGVudD5cbiAgPGRpdiBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgQGlmIChsb2FkaW5nU3ViamVjdCB8IGFzeW5jKSB7XG4gICAgICA8aW9uLXNwaW5uZXI+PC9pb24tc3Bpbm5lcj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxhcHAtZmVlZCBbc2hvd0hlYWRlcl09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgW3Nob3dSZWFkTW9yZUJ1dHRvbl09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgW3VybHNdPVwiZmVlZFVybHNcIlxuICAgICAgICAgICAgICAgIGNhcmRDb2xvcj1cImxpZ2h0XCJcbiAgICAgICAgICAgICAgICBbZGVidWddPVwiZGVidWdcIlxuICAgICAgPjwvYXBwLWZlZWQ+XG4gICAgfVxuICA8L2Rpdj5cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=
|
|
@@ -63,4 +63,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
63
63
|
type: Inject,
|
|
64
64
|
args: [ENVIRONMENT]
|
|
65
65
|
}] }] });
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC50ZXN0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zb2NpYWwvZmVlZC90ZXN0aW5nL2ZlZWQudGVzdGluZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc29jaWFsL2ZlZWQvdGVzdGluZy9mZWVkLnRlc3RpbmcuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBZSxXQUFXLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7Ozs7Ozs7Ozs7QUFVdEYsTUFBTSxPQUFPLGVBQWU7SUEwQmQ7SUFDQTtJQUMrQjtJQTNCakMsaUJBQWlCLEdBQWE7UUFDdEMsc0ZBQXNGO1FBQ3RGLCtFQUErRTtLQUNoRixDQUFDO0lBQ1EsZUFBZSxHQUF3QztRQUMvRCxtQkFBbUI7UUFDbkIsUUFBUTtRQUNSLFNBQVM7UUFDVCxXQUFXO1FBQ1gsVUFBVTtRQUNWLFFBQVE7UUFDUixPQUFPO1FBQ1AsUUFBUTtRQUNSLE1BQU07UUFDTixhQUFhO0tBQ2QsQ0FBQztJQUNRLGVBQWUsR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUV0QyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ2QsUUFBUSxDQUFXO0lBQ25CLEtBQUssR0FBdUIsUUFBUSxDQUFDO0lBQ3JDLFdBQVcsR0FBb0MsV0FBVyxDQUFDO0lBQzNELFNBQVMsR0FBb0MsT0FBTyxDQUFDO0lBRS9ELFlBQ1ksUUFBOEIsRUFDOUIsRUFBcUIsRUFDVSxXQUF3QjtRQUZ2RCxhQUFRLEdBQVIsUUFBUSxDQUFzQjtRQUM5QixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRWpFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVTLEtBQUssQ0FBQyxRQUF1QjtRQUNyQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsYUFBYSxJQUFJLElBQUksQ0FBQztRQUMxRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJO1lBQzVELHNGQUFzRjtZQUN0RiwrRUFBK0U7U0FDaEYsQ0FBQztRQUNGLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekIsQ0FBQzt3R0F6Q1UsZUFBZSx1RkE0QkosV0FBVzs0RkE1QnRCLGVBQWUscURDWDVCLDIwRUF3RUE7OzRGRDdEYSxlQUFlO2tCQUwzQixTQUFTOytCQUNFLGVBQWUsbUJBRVIsdUJBQXVCLENBQUMsTUFBTTs7MEJBOEI1QyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5qZWN0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQsIEVOVklST05NRU5UIH0gZnJvbSAnLi4vLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LmNsYXNzJztcbmltcG9ydCB7IExvY2FsU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9sb2NhbC1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsU2V0dGluZ3MgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL21vZGVsL3NldHRpbmdzLm1vZGVsJztcbmltcG9ydCB7IEFwcENvbG9ycyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1mZWVkLXRlc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmVlZC50ZXN0aW5nLmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRmVlZFRlc3RpbmdQYWdlIHtcbiAgcHJvdGVjdGVkIGF2YWlsYWJsZUZlZWRVcmxzOiBzdHJpbmdbXSA9IFtcbiAgICAnaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2R1bml0ZXIvY2VzaXVtL21hc3Rlci9kb2MvZmVlZC8xLjEvZmVlZC1mci1GUi5qc29uJyxcbiAgICAnaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2R1bml0ZXIvY2VzaXVtL21hc3Rlci9kb2MvZmVlZC9mZWVkLWZyLmpzb24nLFxuICBdO1xuICBwcm90ZWN0ZWQgYXZhaWxhYmxlQ29sb3JzOiAoQXBwQ29sb3JzIHwgJ2xpZ2h0LXRyYW5zcGFyZW50JylbXSA9IFtcbiAgICAnbGlnaHQtdHJhbnNwYXJlbnQnLFxuICAgICdhY2NlbnQnLFxuICAgICdwcmltYXJ5JyxcbiAgICAnc2Vjb25kYXJ5JyxcbiAgICAndGVydGlhcnknLFxuICAgICdkYW5nZXInLFxuICAgICdsaWdodCcsXG4gICAgJ21lZGl1bScsXG4gICAgJ2RhcmsnLFxuICAgICd0cmFuc3BhcmVudCcsXG4gIF07XG4gIHByb3RlY3RlZCBhdmFpbGFibGVTaGFwZXMgPSBbJ3JvdW5kJywgJ2xlZ2FjeSddO1xuXG4gIHByb3RlY3RlZCBkZWJ1ZyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgZmVlZFVybHM6IHN0cmluZ1tdO1xuICBwcm90ZWN0ZWQgc2hhcGU6ICdyb3VuZCcgfCAnbGVnYWN5JyA9ICdsZWdhY3knO1xuICBwcm90ZWN0ZWQgaGVhZGVyQ29sb3I6IEFwcENvbG9ycyB8ICdsaWdodC10cmFuc3BhcmVudCcgPSAnc2Vjb25kYXJ5JztcbiAgcHJvdGVjdGVkIGNhcmRDb2xvcjogQXBwQ29sb3JzIHwgJ2xpZ2h0LXRyYW5zcGFyZW50JyA9ICdsaWdodCc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHNldHRpbmdzOiBMb2NhbFNldHRpbmdzU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRU5WSVJPTk1FTlQpIHByaXZhdGUgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50XG4gICkge1xuICAgIHRoaXMuc2V0dGluZ3MucmVhZHkoKS50aGVuKChzZXR0aW5ncykgPT4gdGhpcy5zdGFydChzZXR0aW5ncykpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0YXJ0KHNldHRpbmdzOiBMb2NhbFNldHRpbmdzKSB7XG4gICAgY29uc3QgbG9jYWxlID0gc2V0dGluZ3MubG9jYWxlIHx8IHRoaXMuZW52aXJvbm1lbnQ/LmRlZmF1bHRMb2NhbGUgfHwgJ2ZyJztcbiAgICB0aGlzLmZlZWRVcmxzID0gdGhpcy5lbnZpcm9ubWVudD8uZmVlZD8uanNvbkZlZWQ/Lltsb2NhbGVdIHx8IFtcbiAgICAgICdodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZHVuaXRlci9jZXNpdW0vbWFzdGVyL2RvYy9mZWVkLzEuMS9mZWVkLWZyLUZSLmpzb24nLFxuICAgICAgJ2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9kdW5pdGVyL2Nlc2l1bS9tYXN0ZXIvZG9jL2ZlZWQvZmVlZC1mci5qc29uJyxcbiAgICBdO1xuICAgIGNvbnNvbGUuZGVidWcoJ1tmZWVkLXRlc3RpbmddIEZlZWQgVVJMczonLCB0aGlzLmZlZWRVcmxzKTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG4iLCI8aW9uLWhlYWRlcj5cbiAgPGlvbi10b29sYmFyIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIj5cbiAgICAgIDxpb24tYmFjay1idXR0b24+PC9pb24tYmFjay1idXR0b24+XG4gICAgPC9pb24tYnV0dG9ucz5cblxuICAgIDxpb24tdGl0bGU+RmVlZCB0ZXN0IHBhZ2U8L2lvbi10aXRsZT5cbiAgPC9pb24tdG9vbGJhcj5cbjwvaW9uLWhlYWRlcj5cblxuPGlvbi1jb250ZW50PlxuICA8aW9uLWdyaWQgY2xhc3M9XCJmb3JtLWNvbnRhaW5lciBpb24tcGFkZGluZy10b3BcIj5cbiAgICA8aW9uLXJvdz5cbiAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgW3N1YnNjcmlwdFNpemluZ109XCInZHluYW1pYydcIj5cbiAgICAgICAgICA8bWF0LWxhYmVsPkZlZWQgVVJMKHMpPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPG1hdC1zZWxlY3QgWyh2YWx1ZSldPVwiZmVlZFVybHNcIiBtdWx0aXBsZT5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBmZWVkVXJsIG9mIGF2YWlsYWJsZUZlZWRVcmxzXCIgW3ZhbHVlXT1cImZlZWRVcmxcIj5cbiAgICAgICAgICAgICAge3sgZmVlZFVybCB9fVxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPG1hdC1vcHRpb24+KFVzZSBlbnZpcm9ubWVudCk8L21hdC1vcHRpb24+XG4gICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPC9pb24tY29sPlxuICAgIDwvaW9uLXJvdz5cbiAgICA8aW9uLXJvdz5cbiAgICAgIDxpb24tY29sIHNpemU9XCIzXCI+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBbc3Vic2NyaXB0U2l6aW5nXT1cIidkeW5hbWljJ1wiPlxuICAgICAgICAgIDxtYXQtbGFiZWw+SGVhZGVyIGNvbG9yPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPG1hdC1zZWxlY3QgWyh2YWx1ZSldPVwiaGVhZGVyQ29sb3JcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBjb2xvciBvZiBhdmFpbGFibGVDb2xvcnNcIiBbdmFsdWVdPVwiY29sb3JcIj5cbiAgICAgICAgICAgICAge3sgY29sb3IgfX1cbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBzaXplPVwiM1wiPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgW3N1YnNjcmlwdFNpemluZ109XCInZHluYW1pYydcIj5cbiAgICAgICAgICA8bWF0LWxhYmVsPkNhcmQgY29sb3I8L21hdC1sYWJlbD5cbiAgICAgICAgICA8bWF0LXNlbGVjdCBbKHZhbHVlKV09XCJjYXJkQ29sb3JcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBjb2xvciBvZiBhdmFpbGFibGVDb2xvcnNcIiBbdmFsdWVdPVwiY29sb3JcIj5cbiAgICAgICAgICAgICAge3sgY29sb3IgfX1cbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBzaXplPVwiM1wiPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgW3N1YnNjcmlwdFNpemluZ109XCInZHluYW1pYydcIj5cbiAgICAgICAgICA8bWF0LWxhYmVsPlNoYXBlPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPG1hdC1zZWxlY3QgWyh2YWx1ZSldPVwic2hhcGVcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBzaGFwZSBvZiBhdmFpbGFibGVTaGFwZXNcIiBbdmFsdWVdPVwic2hhcGVcIj5cbiAgICAgICAgICAgICAge3sgc2hhcGUgfX1cbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBzaXplPVwiM1wiPlxuICAgICAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwiZGVidWcgPSAkZXZlbnQuY2hlY2tlZFwiIFtjaGVja2VkXT1cImRlYnVnXCI+RGVidWcgPzwvbWF0LWNoZWNrYm94PlxuICAgICAgPC9pb24tY29sPlxuICAgIDwvaW9uLXJvdz5cbiAgPC9pb24tZ3JpZD5cblxuICA8ZGl2IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICA8YXBwLWZlZWRcbiAgICAgIFt1cmxzXT1cImZlZWRVcmxzXCJcbiAgICAgIFtoZWFkZXJDb2xvcl09XCJoZWFkZXJDb2xvclwiXG4gICAgICBbY2FyZENvbG9yXT1cImNhcmRDb2xvclwiXG4gICAgICBbc2hhcGVdPVwic2hhcGVcIlxuICAgICAgW2RlYnVnXT1cImRlYnVnXCJcbiAgICA+PC9hcHAtZmVlZD5cbiAgPC9kaXY+XG48L2lvbi1jb250ZW50PlxuIl19
|