@c8y/ngx-components 1021.38.1 → 1021.49.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/api/services.d.ts +1 -1
- package/api/services.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/template-parts/access-mapping/access-mapping.component.d.ts.map +1 -1
- package/connectivity/abstract-connectivity-tab.factory.d.ts +1 -1
- package/context-dashboard/add-dashboard.component.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.model.d.ts +4 -2
- package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
- package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
- package/context-dashboard/dashboard-manager/dashboard-manager.model.d.ts +1 -0
- package/context-dashboard/dashboard-manager/dashboard-manager.model.d.ts.map +1 -1
- package/context-dashboard/dashboard-manager/dashboard-manager.service.d.ts +0 -1
- package/context-dashboard/dashboard-manager/dashboard-manager.service.d.ts.map +1 -1
- package/context-dashboard/dashboard-manager/type-dashboards-list/type-dashboards-list.component.d.ts.map +1 -1
- package/context-dashboard/new-dashboard.guard.d.ts +1 -1
- package/context-dashboard/new-dashboard.guard.d.ts.map +1 -1
- package/core/action/action.component.d.ts +2 -1
- package/core/action/action.component.d.ts.map +1 -1
- package/core/action/action.model.d.ts +3 -2
- package/core/action/action.model.d.ts.map +1 -1
- package/core/breadcrumb/breadcrumb-item.component.d.ts +2 -1
- package/core/breadcrumb/breadcrumb-item.component.d.ts.map +1 -1
- package/core/breadcrumb/breadcrumb.model.d.ts +2 -1
- package/core/breadcrumb/breadcrumb.model.d.ts.map +1 -1
- package/core/common/ApplicationOptions.d.ts +1 -0
- package/core/common/ApplicationOptions.d.ts.map +1 -1
- package/core/common/empty-state/empty-state.component.d.ts +2 -1
- package/core/common/empty-state/empty-state.component.d.ts.map +1 -1
- package/core/common/get-group-icon.pipe.d.ts +2 -1
- package/core/common/get-group-icon.pipe.d.ts.map +1 -1
- package/core/common/group.service.d.ts +22 -7
- package/core/common/group.service.d.ts.map +1 -1
- package/core/common/icon.directive.d.ts +5 -5
- package/core/common/icon.directive.d.ts.map +1 -1
- package/core/common/service-registry.model.d.ts +2 -1
- package/core/common/service-registry.model.d.ts.map +1 -1
- package/core/data-grid/data-grid.model.d.ts +2 -1
- package/core/data-grid/data-grid.model.d.ts.map +1 -1
- package/core/docs/docs.models.d.ts +2 -1
- package/core/docs/docs.models.d.ts.map +1 -1
- package/core/docs/help-and-support-outlet/help-and-support-outlet.component.d.ts +5 -1
- package/core/docs/help-and-support-outlet/help-and-support-outlet.component.d.ts.map +1 -1
- package/core/docs/legal-notices-outlet/legal-notices-outlet.component.d.ts +5 -1
- package/core/docs/legal-notices-outlet/legal-notices-outlet.component.d.ts.map +1 -1
- package/core/docs/support-outlet/support-outlet.component.d.ts +5 -1
- package/core/docs/support-outlet/support-outlet.component.d.ts.map +1 -1
- package/core/forms/filter-input.component.d.ts +8 -3
- package/core/forms/filter-input.component.d.ts.map +1 -1
- package/core/list-group/list-item-action.component.d.ts +2 -1
- package/core/list-group/list-item-action.component.d.ts.map +1 -1
- package/core/list-group/list-item-icon.component.d.ts +2 -1
- package/core/list-group/list-item-icon.component.d.ts.map +1 -1
- package/core/login/login.service.d.ts.map +1 -1
- package/core/navigator/navigator-icon.component.d.ts +1 -1
- package/core/navigator/navigator-icon.component.d.ts.map +1 -1
- package/core/navigator/navigator-node-data.d.ts +2 -1
- package/core/navigator/navigator-node-data.d.ts.map +1 -1
- package/core/navigator/navigator-node.component.d.ts.map +1 -1
- package/core/navigator/navigator-node.d.ts +2 -1
- package/core/navigator/navigator-node.d.ts.map +1 -1
- package/core/plugins/plugins.model.d.ts +7 -2
- package/core/plugins/plugins.model.d.ts.map +1 -1
- package/core/plugins/plugins.service.d.ts.map +1 -1
- package/core/properties-list/properties-list.component.d.ts +2 -1
- package/core/properties-list/properties-list.component.d.ts.map +1 -1
- package/core/provider-configuration/model/dynamic-provider-config.model.d.ts +2 -2
- package/core/provider-configuration/model/dynamic-provider-config.model.d.ts.map +1 -1
- package/core/router/context-route.service.d.ts.map +1 -1
- package/core/router/router.model.d.ts +1 -1
- package/core/router/router.model.d.ts.map +1 -1
- package/core/router/scoped-context-route.service.d.ts.map +1 -1
- package/core/search/search.model.d.ts +2 -1
- package/core/search/search.model.d.ts.map +1 -1
- package/core/select/select-keyboard.service.d.ts +4 -0
- package/core/select/select-keyboard.service.d.ts.map +1 -1
- package/core/select/select.component.d.ts +14 -3
- package/core/select/select.component.d.ts.map +1 -1
- package/core/select-modal/select-modal.component.d.ts +2 -1
- package/core/select-modal/select-modal.component.d.ts.map +1 -1
- package/core/shared/core.model.d.ts +5 -1
- package/core/shared/core.model.d.ts.map +1 -1
- package/core/tabs/conditional-tabs-outlet.component.d.ts.map +1 -1
- package/core/tabs/tab.component.d.ts +3 -2
- package/core/tabs/tab.component.d.ts.map +1 -1
- package/core/tabs/tab.model.d.ts +10 -5
- package/core/tabs/tab.model.d.ts.map +1 -1
- package/core/tabs/tabs-outlet.component.d.ts +7 -4
- package/core/tabs/tabs-outlet.component.d.ts.map +1 -1
- package/core/user/user-menu-item.component.d.ts +2 -1
- package/core/user/user-menu-item.component.d.ts.map +1 -1
- package/core/user/user.model.d.ts +2 -1
- package/core/user/user.model.d.ts.map +1 -1
- package/core/wizard/wizard.model.d.ts +4 -3
- package/core/wizard/wizard.model.d.ts.map +1 -1
- package/data-grid-columns/asset-type/asset-type.cell-renderer.component.d.ts.map +1 -1
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts +15 -46
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts.map +1 -1
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes.model.d.ts +3 -0
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes.model.d.ts.map +1 -1
- package/datapoint-selector/datapoint-selection.model.d.ts +6 -7
- package/datapoint-selector/datapoint-selection.model.d.ts.map +1 -1
- package/datapoints-export-selector/datapoints-export-selector.model.d.ts +2 -1
- package/datapoints-export-selector/datapoints-export-selector.model.d.ts.map +1 -1
- package/device-grid/columns/icon.cell-renderer.component.d.ts +14 -0
- package/device-grid/columns/icon.cell-renderer.component.d.ts.map +1 -0
- package/device-grid/columns/index.d.ts +1 -0
- package/device-grid/columns/index.d.ts.map +1 -1
- package/device-grid/device-grid.component.d.ts.map +1 -1
- package/device-grid/device-grid.service.d.ts +0 -2
- package/device-grid/device-grid.service.d.ts.map +1 -1
- package/device-provisioned-certificates/c8y-ngx-components-device-provisioned-certificates.d.ts.map +1 -0
- package/device-provisioned-certificates/device-provisioned-certificates.guard.d.ts +11 -0
- package/device-provisioned-certificates/device-provisioned-certificates.guard.d.ts.map +1 -0
- package/device-provisioned-certificates/device-provisioned-certificates.module.d.ts +13 -0
- package/device-provisioned-certificates/device-provisioned-certificates.module.d.ts.map +1 -0
- package/device-provisioned-certificates/device-provisioned-certificates.service.d.ts +13 -0
- package/device-provisioned-certificates/device-provisioned-certificates.service.d.ts.map +1 -0
- package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts +57 -0
- package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts.map +1 -0
- package/device-provisioned-certificates/index.d.ts +2 -0
- package/device-provisioned-certificates/index.d.ts.map +1 -0
- package/ecosystem/application-plugins/application-plugins.component.d.ts +4 -0
- package/ecosystem/application-plugins/application-plugins.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/application-plugins.module.d.ts +2 -2
- package/ecosystem/application-plugins/application-plugins.module.d.ts.map +1 -1
- package/ecosystem/application-plugins/index.d.ts +1 -0
- package/ecosystem/application-plugins/index.d.ts.map +1 -1
- package/ecosystem/application-plugins/install-plugin.component.d.ts +9 -11
- package/ecosystem/application-plugins/install-plugin.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.d.ts +12 -0
- package/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.d.ts.map +1 -0
- package/ecosystem/application-plugins/plugin-list-item.component.d.ts +8 -3
- package/ecosystem/application-plugins/plugin-list-item.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/plugin-list.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.d.ts.map +1 -1
- package/ecosystem/applications/application-list/application-list.component.d.ts +2 -2
- package/ecosystem/applications/application-list/application-list.component.d.ts.map +1 -1
- package/ecosystem/applications/install-from-package/install-from-package.component.d.ts.map +1 -1
- package/ecosystem/archived-confirm/archived-confirm-modal.component.d.ts +11 -0
- package/ecosystem/archived-confirm/archived-confirm-modal.component.d.ts.map +1 -0
- package/ecosystem/archived-confirm/archived-confirm.module.d.ts +10 -0
- package/ecosystem/archived-confirm/archived-confirm.module.d.ts.map +1 -0
- package/ecosystem/archived-confirm/c8y-ngx-components-ecosystem-archived-confirm.d.ts.map +1 -0
- package/ecosystem/archived-confirm/index.d.ts +3 -0
- package/ecosystem/archived-confirm/index.d.ts.map +1 -0
- package/ecosystem/ecosystem.module.d.ts +2 -1
- package/ecosystem/ecosystem.module.d.ts.map +1 -1
- package/ecosystem/features/feature-list.component.d.ts +2 -2
- package/ecosystem/features/feature-list.component.d.ts.map +1 -1
- package/ecosystem/microservices/microservice-list.component.d.ts +2 -2
- package/ecosystem/microservices/microservice-list.component.d.ts.map +1 -1
- package/ecosystem/packages/deploy-application/deploy-application.component.d.ts.map +1 -1
- package/ecosystem/packages/package-details/package-details.component.d.ts +7 -2
- package/ecosystem/packages/package-details/package-details.component.d.ts.map +1 -1
- package/ecosystem/packages/package-list/packages-list.component.d.ts +2 -2
- package/ecosystem/packages/package-list/packages-list.component.d.ts.map +1 -1
- package/ecosystem/shared/add-application.component.d.ts +2 -1
- package/ecosystem/shared/add-application.component.d.ts.map +1 -1
- package/ecosystem/shared/application-card.component.d.ts +4 -0
- package/ecosystem/shared/application-card.component.d.ts.map +1 -1
- package/ecosystem/shared/archived-filter/archived-filter.component.d.ts +12 -0
- package/ecosystem/shared/archived-filter/archived-filter.component.d.ts.map +1 -0
- package/ecosystem/shared/ecosystem.constants.d.ts +4 -0
- package/ecosystem/shared/ecosystem.constants.d.ts.map +1 -1
- package/ecosystem/shared/ecosystem.model.d.ts +5 -1
- package/ecosystem/shared/ecosystem.model.d.ts.map +1 -1
- package/ecosystem/shared/ecosystem.service.d.ts +7 -0
- package/ecosystem/shared/ecosystem.service.d.ts.map +1 -1
- package/ecosystem/shared/index.d.ts +1 -0
- package/ecosystem/shared/index.d.ts.map +1 -1
- package/ecosystem/shared/list-filters/list-filters.component.d.ts +14 -4
- package/ecosystem/shared/list-filters/list-filters.component.d.ts.map +1 -1
- package/ecosystem/shared/list-filters/list-filters.model.d.ts +8 -2
- package/ecosystem/shared/list-filters/list-filters.model.d.ts.map +1 -1
- package/ecosystem/shared/shared-ecosystem.module.d.ts +9 -8
- package/ecosystem/shared/shared-ecosystem.module.d.ts.map +1 -1
- package/ecosystem/shared/translate-package-label.pipe.d.ts +1 -1
- package/ecosystem/shared/translate-package-label.pipe.d.ts.map +1 -1
- package/esm2022/alarms/alarm-info.component.mjs +1 -1
- package/esm2022/api/services.mjs +2 -2
- package/esm2022/auth-configuration/sso-configuration/template-parts/access-mapping/access-mapping.component.mjs +10 -5
- package/esm2022/auth-configuration/sso-configuration/template-parts/user-data-mapping.component.mjs +4 -4
- package/esm2022/context-dashboard/add-dashboard.component.mjs +4 -2
- package/esm2022/context-dashboard/context-dashboard.model.mjs +3 -2
- package/esm2022/context-dashboard/context-dashboard.service.mjs +2 -2
- package/esm2022/context-dashboard/dashboard-detail.component.mjs +5 -3
- package/esm2022/context-dashboard/dashboard-manager/dashboard-manager.model.mjs +1 -1
- package/esm2022/context-dashboard/dashboard-manager/dashboard-manager.service.mjs +5 -15
- package/esm2022/context-dashboard/dashboard-manager/type-dashboards-list/type-dashboards-list.component.mjs +2 -2
- package/esm2022/context-dashboard/new-dashboard.guard.mjs +1 -1
- package/esm2022/core/action/action.component.mjs +1 -1
- package/esm2022/core/action/action.model.mjs +1 -1
- package/esm2022/core/bootstrap/bootstrap.component.mjs +1 -1
- package/esm2022/core/breadcrumb/breadcrumb-item.component.mjs +1 -1
- package/esm2022/core/breadcrumb/breadcrumb.model.mjs +1 -1
- package/esm2022/core/common/ApplicationOptions.mjs +1 -1
- package/esm2022/core/common/empty-state/empty-state.component.mjs +1 -1
- package/esm2022/core/common/get-group-icon.pipe.mjs +1 -1
- package/esm2022/core/common/group.service.mjs +2 -2
- package/esm2022/core/common/icon.directive.mjs +1 -1
- package/esm2022/core/common/service-registry.model.mjs +1 -1
- package/esm2022/core/data-grid/data-grid.model.mjs +1 -1
- package/esm2022/core/docs/docs.models.mjs +1 -1
- package/esm2022/core/docs/support-outlet/support-outlet.component.mjs +3 -3
- package/esm2022/core/forms/filter-input.component.mjs +22 -7
- package/esm2022/core/list-group/list-item-action.component.mjs +1 -1
- package/esm2022/core/list-group/list-item-icon.component.mjs +1 -1
- package/esm2022/core/login/credentials.component.mjs +2 -2
- package/esm2022/core/login/login.service.mjs +18 -7
- package/esm2022/core/navigator/navigator-node-data.mjs +1 -1
- package/esm2022/core/navigator/navigator-node.component.mjs +11 -2
- package/esm2022/core/navigator/navigator-node.mjs +1 -1
- package/esm2022/core/plugins/plugins.model.mjs +5 -1
- package/esm2022/core/plugins/plugins.service.mjs +6 -2
- package/esm2022/core/properties-list/properties-list.component.mjs +1 -1
- package/esm2022/core/provider-configuration/model/dynamic-provider-config.model.mjs +1 -1
- package/esm2022/core/router/context-route.service.mjs +4 -2
- package/esm2022/core/router/router.model.mjs +1 -1
- package/esm2022/core/router/scoped-context-route.service.mjs +4 -2
- package/esm2022/core/search/search.model.mjs +1 -1
- package/esm2022/core/select/select-keyboard.service.mjs +7 -3
- package/esm2022/core/select/select.component.mjs +36 -8
- package/esm2022/core/select-modal/select-modal.component.mjs +2 -2
- package/esm2022/core/shared/core.model.mjs +6 -2
- package/esm2022/core/tabs/conditional-tabs-outlet.component.mjs +4 -2
- package/esm2022/core/tabs/tab.component.mjs +1 -1
- package/esm2022/core/tabs/tab.model.mjs +1 -1
- package/esm2022/core/tabs/tabs-outlet.component.mjs +41 -12
- package/esm2022/core/user/user-menu-item.component.mjs +1 -1
- package/esm2022/core/user/user.model.mjs +1 -1
- package/esm2022/core/wizard/wizard.model.mjs +1 -1
- package/esm2022/data-grid-columns/asset-type/asset-type.cell-renderer.component.mjs +1 -1
- package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.mjs +47 -22
- package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes.model.mjs +1 -1
- package/esm2022/datapoint-selector/datapoint-selection.model.mjs +1 -1
- package/esm2022/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.mjs +3 -3
- package/esm2022/datapoints-export-selector/datapoints-export-selector.model.mjs +1 -1
- package/esm2022/device-grid/columns/icon.cell-renderer.component.mjs +42 -0
- package/esm2022/device-grid/columns/index.mjs +2 -1
- package/esm2022/device-grid/device-grid.component.mjs +3 -3
- package/esm2022/device-grid/device-grid.service.mjs +7 -25
- package/esm2022/device-provisioned-certificates/c8y-ngx-components-device-provisioned-certificates.mjs +5 -0
- package/esm2022/device-provisioned-certificates/device-provisioned-certificates.guard.mjs +28 -0
- package/esm2022/device-provisioned-certificates/device-provisioned-certificates.module.mjs +51 -0
- package/esm2022/device-provisioned-certificates/device-provisioned-certificates.service.mjs +31 -0
- package/esm2022/device-provisioned-certificates/device-tab-provisioned-certificates.component.mjs +76 -0
- package/esm2022/device-provisioned-certificates/index.mjs +2 -0
- package/esm2022/ecosystem/application-plugins/application-plugins.component.mjs +41 -39
- package/esm2022/ecosystem/application-plugins/application-plugins.module.mjs +8 -6
- package/esm2022/ecosystem/application-plugins/apps-to-update-remotes-select.component.mjs +1 -1
- package/esm2022/ecosystem/application-plugins/index.mjs +2 -1
- package/esm2022/ecosystem/application-plugins/install-plugin.component.mjs +18 -21
- package/esm2022/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.mjs +26 -0
- package/esm2022/ecosystem/application-plugins/plugin-list-item.component.mjs +14 -6
- package/esm2022/ecosystem/application-plugins/plugin-list.component.mjs +14 -12
- package/esm2022/ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.mjs +7 -1
- package/esm2022/ecosystem/applications/application-list/application-list.component.mjs +1 -1
- package/esm2022/ecosystem/applications/install-from-package/install-from-package.component.mjs +6 -1
- package/esm2022/ecosystem/archived-confirm/archived-confirm-modal.component.mjs +22 -0
- package/esm2022/ecosystem/archived-confirm/archived-confirm.module.mjs +32 -0
- package/esm2022/ecosystem/archived-confirm/c8y-ngx-components-ecosystem-archived-confirm.mjs +5 -0
- package/esm2022/ecosystem/archived-confirm/index.mjs +3 -0
- package/esm2022/ecosystem/ecosystem.module.mjs +20 -16
- package/esm2022/ecosystem/features/feature-list.component.mjs +1 -1
- package/esm2022/ecosystem/microservices/microservice-list.component.mjs +1 -1
- package/esm2022/ecosystem/packages/deploy-application/deploy-application.component.mjs +6 -1
- package/esm2022/ecosystem/packages/package-details/package-details.component.mjs +13 -8
- package/esm2022/ecosystem/packages/package-list/packages-list.component.mjs +4 -4
- package/esm2022/ecosystem/shared/add-application.component.mjs +1 -1
- package/esm2022/ecosystem/shared/application-card.component.mjs +3 -3
- package/esm2022/ecosystem/shared/archived-filter/archived-filter.component.mjs +27 -0
- package/esm2022/ecosystem/shared/ecosystem.constants.mjs +5 -1
- package/esm2022/ecosystem/shared/ecosystem.model.mjs +7 -3
- package/esm2022/ecosystem/shared/ecosystem.service.mjs +26 -1
- package/esm2022/ecosystem/shared/index.mjs +2 -1
- package/esm2022/ecosystem/shared/list-filters/list-filters.component.mjs +75 -13
- package/esm2022/ecosystem/shared/list-filters/list-filters.model.mjs +1 -1
- package/esm2022/ecosystem/shared/shared-ecosystem.module.mjs +10 -5
- package/esm2022/ecosystem/shared/translate-package-label.pipe.mjs +3 -3
- package/esm2022/files-repository/files-repository.component.mjs +2 -2
- package/esm2022/files-repository/files-repository.service.mjs +5 -16
- package/esm2022/icon-selector/icon-selector.component.mjs +1 -1
- package/esm2022/icon-selector/icons/index.mjs +1 -1
- package/esm2022/operations/shared/status-option.model.mjs +1 -1
- package/esm2022/protocol-lwm2m/components/configuration/lwm2m-configuration.component.mjs +2 -2
- package/esm2022/protocol-opcua/opcua-auto-apply-settings.component.mjs +1 -1
- package/esm2022/register-device/bulk/bulk-device-registration-modal.component.mjs +17 -9
- package/esm2022/register-device/general/general-device-registration-button.component.mjs +3 -3
- package/esm2022/register-device/general/general-device-registration.component.mjs +109 -33
- package/esm2022/remote-access/configurations/c8y-ngx-components-remote-access-configurations.mjs +5 -0
- package/esm2022/remote-access/configurations/index.mjs +16 -0
- package/esm2022/remote-access/configurations/remote-access-configuration-list/remote-access-configuration-list.component.mjs +218 -0
- package/esm2022/remote-access/configurations/remote-access-configuration-list/remote-access-connect-button/remote-access-connect-button.component.mjs +60 -0
- package/esm2022/remote-access/configurations/remote-access-pick-protocol-modal/remote-access-pick-protocol-modal.component.mjs +36 -0
- package/esm2022/remote-access/data/c8y-ngx-components-remote-access-data.mjs +5 -0
- package/esm2022/remote-access/data/index.mjs +3 -0
- package/esm2022/remote-access/data/remote-access-protocol-provider.mjs +2 -0
- package/esm2022/remote-access/data/remote-access.service.mjs +200 -0
- package/esm2022/remote-access/passthrough/c8y-ngx-components-remote-access-passthrough.mjs +5 -0
- package/esm2022/remote-access/passthrough/index.mjs +36 -0
- package/esm2022/remote-access/shared/c8y-ngx-components-remote-access-shared.mjs +5 -0
- package/esm2022/remote-access/shared/index.mjs +3 -0
- package/esm2022/remote-access/shared/remote-access-basic-endpoint-modal/remote-access-basic-endpoint-modal.component.mjs +49 -0
- package/esm2022/remote-access/shared/ssh-key-input/ssh-key-input.component.mjs +87 -0
- package/esm2022/remote-access/ssh/c8y-ngx-components-remote-access-ssh.mjs +5 -0
- package/esm2022/remote-access/ssh/index.mjs +73 -0
- package/esm2022/remote-access/ssh/remote-access-ssh-endpoint-modal/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +5 -0
- package/esm2022/remote-access/ssh/remote-access-ssh-endpoint-modal/index.mjs +2 -0
- package/esm2022/remote-access/ssh/remote-access-ssh-endpoint-modal/remote-access-ssh-endpoint-modal.component.mjs +104 -0
- package/esm2022/remote-access/telnet/c8y-ngx-components-remote-access-telnet.mjs +5 -0
- package/esm2022/remote-access/telnet/index.mjs +43 -0
- package/esm2022/remote-access/terminal-viewer/c8y-ngx-components-remote-access-terminal-viewer.mjs +5 -0
- package/esm2022/remote-access/terminal-viewer/index.mjs +2 -0
- package/esm2022/remote-access/terminal-viewer/shell-adapter.mjs +36 -0
- package/esm2022/remote-access/terminal-viewer/telnet-negotiator.mjs +96 -0
- package/esm2022/remote-access/terminal-viewer/terminal-viewer.component.mjs +101 -0
- package/esm2022/remote-access/vnc/c8y-ngx-components-remote-access-vnc.mjs +5 -0
- package/esm2022/remote-access/vnc/index.mjs +73 -0
- package/esm2022/remote-access/vnc/remote-access-vnc-endpoint-modal/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +5 -0
- package/esm2022/remote-access/vnc/remote-access-vnc-endpoint-modal/index.mjs +2 -0
- package/esm2022/remote-access/vnc/remote-access-vnc-endpoint-modal/remote-access-vnc-endpoint-modal.component.mjs +59 -0
- package/esm2022/remote-access/vnc/vnc-viewer/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +5 -0
- package/esm2022/remote-access/vnc/vnc-viewer/index.mjs +2 -0
- package/esm2022/remote-access/vnc/vnc-viewer/vnc-credentials-prompt/vnc-credentials-prompt.component.mjs +57 -0
- package/esm2022/remote-access/vnc/vnc-viewer/vnc-viewer.component.mjs +158 -0
- package/esm2022/replace-device/replace-device-wizard/replace-device-wizard.model.mjs +1 -1
- package/esm2022/report-dashboard/report-dashboard-list.component.mjs +4 -3
- package/esm2022/repository/configuration/device-tab/device-configuration-list.component.mjs +1 -1
- package/esm2022/repository/shared/repository.model.mjs +1 -1
- package/esm2022/repository/shared/repository.service.mjs +3 -3
- package/esm2022/services/status-options/status-options.model.mjs +1 -1
- package/esm2022/sub-assets/group-info.component.mjs +1 -1
- package/esm2022/translation-editor/data/translation-store.service.mjs +4 -3
- package/esm2022/trusted-certificates/list/trusted-certificate-list.component.mjs +35 -9
- package/esm2022/upgrade/bridge.service.mjs +16 -2
- package/esm2022/widgets/implementations/alarms/severity-icon.pipe.mjs +1 -1
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.mjs +3 -2
- package/esm2022/widgets/implementations/kpi/kpi-widget.model.mjs +1 -1
- package/fesm2022/c8y-ngx-components-alarms.mjs +1 -1
- package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-api.mjs +3 -2
- package/fesm2022/c8y-ngx-components-api.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs +12 -7
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs +15 -20
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-data-grid-columns.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +48 -23
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-grid.mjs +48 -28
- package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +174 -0
- package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +125 -105
- package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs +57 -0
- package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +147 -31
- package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem.mjs +1452 -1414
- package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-files-repository.mjs +5 -16
- package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector-icons.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs +1 -1
- package/fesm2022/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +1 -1
- package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-register-device.mjs +269 -188
- package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +314 -0
- package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-remote-access-data.mjs +206 -0
- package/fesm2022/c8y-ngx-components-remote-access-data.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +42 -0
- package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +138 -0
- package/fesm2022/c8y-ngx-components-remote-access-shared.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +111 -0
- package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +79 -0
- package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +50 -0
- package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs +235 -0
- package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +66 -0
- package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +211 -0
- package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +79 -0
- package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-report-dashboard.mjs +3 -2
- package/fesm2022/c8y-ngx-components-report-dashboard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-configuration.mjs +1 -1
- package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-shared.mjs +2 -2
- package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +3 -2
- package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +43 -17
- package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-upgrade.mjs +16 -2
- package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +151 -38
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/files-repository/files-repository.component.d.ts.map +1 -1
- package/files-repository/files-repository.service.d.ts +0 -2
- package/files-repository/files-repository.service.d.ts.map +1 -1
- package/icon-selector/icon-selector.component.d.ts +3 -2
- package/icon-selector/icon-selector.component.d.ts.map +1 -1
- package/icon-selector/icons/index.d.ts +1 -0
- package/icon-selector/icons/index.d.ts.map +1 -1
- package/locales/de.po +157 -5
- package/locales/es.po +157 -5
- package/locales/fr.po +157 -5
- package/locales/ja_JP.po +156 -5
- package/locales/ko.po +156 -5
- package/locales/locales.pot +156 -4
- package/locales/nl.po +157 -5
- package/locales/pl.po +157 -5
- package/locales/pt_BR.po +157 -5
- package/locales/zh_CN.po +156 -5
- package/locales/zh_TW.po +156 -5
- package/operations/shared/status-option.model.d.ts +2 -1
- package/operations/shared/status-option.model.d.ts.map +1 -1
- package/package.json +1 -1
- package/register-device/bulk/bulk-device-registration-modal.component.d.ts +6 -2
- package/register-device/bulk/bulk-device-registration-modal.component.d.ts.map +1 -1
- package/register-device/general/general-device-registration-button.component.d.ts +1 -1
- package/register-device/general/general-device-registration-button.component.d.ts.map +1 -1
- package/register-device/general/general-device-registration.component.d.ts +21 -7
- package/register-device/general/general-device-registration.component.d.ts.map +1 -1
- package/remote-access/configurations/c8y-ngx-components-remote-access-configurations.d.ts.map +1 -0
- package/remote-access/configurations/index.d.ts +3 -0
- package/remote-access/configurations/index.d.ts.map +1 -0
- package/remote-access/configurations/remote-access-configuration-list/remote-access-configuration-list.component.d.ts +34 -0
- package/remote-access/configurations/remote-access-configuration-list/remote-access-configuration-list.component.d.ts.map +1 -0
- package/remote-access/configurations/remote-access-configuration-list/remote-access-connect-button/remote-access-connect-button.component.d.ts +17 -0
- package/remote-access/configurations/remote-access-configuration-list/remote-access-connect-button/remote-access-connect-button.component.d.ts.map +1 -0
- package/remote-access/configurations/remote-access-pick-protocol-modal/remote-access-pick-protocol-modal.component.d.ts +18 -0
- package/remote-access/configurations/remote-access-pick-protocol-modal/remote-access-pick-protocol-modal.component.d.ts.map +1 -0
- package/remote-access/data/c8y-ngx-components-remote-access-data.d.ts.map +1 -0
- package/remote-access/data/index.d.ts +3 -0
- package/remote-access/data/index.d.ts.map +1 -0
- package/remote-access/data/remote-access-protocol-provider.d.ts +21 -0
- package/remote-access/data/remote-access-protocol-provider.d.ts.map +1 -0
- package/remote-access/data/remote-access.service.d.ts +94 -0
- package/remote-access/data/remote-access.service.d.ts.map +1 -0
- package/remote-access/passthrough/c8y-ngx-components-remote-access-passthrough.d.ts.map +1 -0
- package/remote-access/passthrough/index.d.ts +17 -0
- package/remote-access/passthrough/index.d.ts.map +1 -0
- package/remote-access/shared/c8y-ngx-components-remote-access-shared.d.ts.map +1 -0
- package/remote-access/shared/index.d.ts +3 -0
- package/remote-access/shared/index.d.ts.map +1 -0
- package/remote-access/shared/remote-access-basic-endpoint-modal/remote-access-basic-endpoint-modal.component.d.ts +37 -0
- package/remote-access/shared/remote-access-basic-endpoint-modal/remote-access-basic-endpoint-modal.component.d.ts.map +1 -0
- package/remote-access/shared/ssh-key-input/ssh-key-input.component.d.ts +38 -0
- package/remote-access/shared/ssh-key-input/ssh-key-input.component.d.ts.map +1 -0
- package/remote-access/ssh/c8y-ngx-components-remote-access-ssh.d.ts.map +1 -0
- package/remote-access/ssh/index.d.ts +22 -0
- package/remote-access/ssh/index.d.ts.map +1 -0
- package/remote-access/ssh/remote-access-ssh-endpoint-modal/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.d.ts.map +1 -0
- package/remote-access/ssh/remote-access-ssh-endpoint-modal/index.d.ts +2 -0
- package/remote-access/ssh/remote-access-ssh-endpoint-modal/index.d.ts.map +1 -0
- package/remote-access/ssh/remote-access-ssh-endpoint-modal/remote-access-ssh-endpoint-modal.component.d.ts +64 -0
- package/remote-access/ssh/remote-access-ssh-endpoint-modal/remote-access-ssh-endpoint-modal.component.d.ts.map +1 -0
- package/remote-access/telnet/c8y-ngx-components-remote-access-telnet.d.ts.map +1 -0
- package/remote-access/telnet/index.d.ts +17 -0
- package/remote-access/telnet/index.d.ts.map +1 -0
- package/remote-access/terminal-viewer/c8y-ngx-components-remote-access-terminal-viewer.d.ts.map +1 -0
- package/remote-access/terminal-viewer/index.d.ts +2 -0
- package/remote-access/terminal-viewer/index.d.ts.map +1 -0
- package/remote-access/terminal-viewer/shell-adapter.d.ts +14 -0
- package/remote-access/terminal-viewer/shell-adapter.d.ts.map +1 -0
- package/remote-access/terminal-viewer/telnet-negotiator.d.ts +13 -0
- package/remote-access/terminal-viewer/telnet-negotiator.d.ts.map +1 -0
- package/remote-access/terminal-viewer/terminal-viewer.component.d.ts +25 -0
- package/remote-access/terminal-viewer/terminal-viewer.component.d.ts.map +1 -0
- package/remote-access/vnc/c8y-ngx-components-remote-access-vnc.d.ts.map +1 -0
- package/remote-access/vnc/index.d.ts +22 -0
- package/remote-access/vnc/index.d.ts.map +1 -0
- package/remote-access/vnc/remote-access-vnc-endpoint-modal/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.d.ts.map +1 -0
- package/remote-access/vnc/remote-access-vnc-endpoint-modal/index.d.ts +2 -0
- package/remote-access/vnc/remote-access-vnc-endpoint-modal/index.d.ts.map +1 -0
- package/remote-access/vnc/remote-access-vnc-endpoint-modal/remote-access-vnc-endpoint-modal.component.d.ts +46 -0
- package/remote-access/vnc/remote-access-vnc-endpoint-modal/remote-access-vnc-endpoint-modal.component.d.ts.map +1 -0
- package/remote-access/vnc/vnc-viewer/c8y-ngx-components-remote-access-vnc-vnc-viewer.d.ts.map +1 -0
- package/remote-access/vnc/vnc-viewer/index.d.ts +2 -0
- package/remote-access/vnc/vnc-viewer/index.d.ts.map +1 -0
- package/remote-access/vnc/vnc-viewer/vnc-credentials-prompt/vnc-credentials-prompt.component.d.ts +32 -0
- package/remote-access/vnc/vnc-viewer/vnc-credentials-prompt/vnc-credentials-prompt.component.d.ts.map +1 -0
- package/remote-access/vnc/vnc-viewer/vnc-viewer.component.d.ts +37 -0
- package/remote-access/vnc/vnc-viewer/vnc-viewer.component.d.ts.map +1 -0
- package/replace-device/replace-device-wizard/replace-device-wizard.model.d.ts +2 -1
- package/replace-device/replace-device-wizard/replace-device-wizard.model.d.ts.map +1 -1
- package/report-dashboard/report-dashboard-list.component.d.ts +29 -0
- package/report-dashboard/report-dashboard-list.component.d.ts.map +1 -1
- package/repository/shared/repository.model.d.ts +2 -1
- package/repository/shared/repository.model.d.ts.map +1 -1
- package/services/status-options/status-options.model.d.ts +2 -1
- package/services/status-options/status-options.model.d.ts.map +1 -1
- package/sub-assets/group-info.component.d.ts +2 -1
- package/sub-assets/group-info.component.d.ts.map +1 -1
- package/translation-editor/data/translation-store.service.d.ts.map +1 -1
- package/trusted-certificates/list/trusted-certificate-list.component.d.ts +7 -2
- package/trusted-certificates/list/trusted-certificate-list.component.d.ts.map +1 -1
- package/upgrade/bridge.service.d.ts +5 -0
- package/upgrade/bridge.service.d.ts.map +1 -1
- package/widgets/implementations/alarms/severity-icon.pipe.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts.map +1 -1
- package/widgets/implementations/kpi/kpi-widget.model.d.ts +2 -1
- package/widgets/implementations/kpi/kpi-widget.model.d.ts.map +1 -1
- package/ecosystem/application-plugins/only-latest-plugin-version.pipe.d.ts +0 -10
- package/ecosystem/application-plugins/only-latest-plugin-version.pipe.d.ts.map +0 -1
- package/esm2022/ecosystem/application-plugins/only-latest-plugin-version.pipe.mjs +0 -20
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { gettext } from '@c8y/ngx-components/gettext';
|
|
2
3
|
import { Subject, timer } from 'rxjs';
|
|
3
4
|
import { debounce, distinctUntilChanged, map } from 'rxjs/operators';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
@@ -9,15 +10,27 @@ export class FilterInputComponent {
|
|
|
9
10
|
this.onSearch = new EventEmitter();
|
|
10
11
|
this.filterChange$ = new Subject();
|
|
11
12
|
this.filterTerm = '';
|
|
13
|
+
this.searchLabel = gettext('search');
|
|
14
|
+
this.closeLabel = gettext('close');
|
|
12
15
|
this.CARRIAGE_RETURN_KEY = 13;
|
|
13
16
|
this.CARRIAGE_RETURN_CODE = 'Enter';
|
|
17
|
+
this.CARRIAGE_ESCAPE_CODE = 'Escape';
|
|
18
|
+
this.AUTO_SEARCH_DEBOUNCE = 500;
|
|
14
19
|
}
|
|
15
20
|
ngOnInit() {
|
|
16
|
-
this.reset();
|
|
17
21
|
this.filterChange$
|
|
18
|
-
.pipe(debounce((event) =>
|
|
19
|
-
|
|
20
|
-
|
|
22
|
+
.pipe(debounce((event) => {
|
|
23
|
+
if (event.code === this.CARRIAGE_RETURN_CODE ||
|
|
24
|
+
event.keyCode === this.CARRIAGE_RETURN_KEY) {
|
|
25
|
+
event.preventDefault();
|
|
26
|
+
return timer(0);
|
|
27
|
+
}
|
|
28
|
+
if (event.code === this.CARRIAGE_ESCAPE_CODE) {
|
|
29
|
+
this.reset();
|
|
30
|
+
return timer(0);
|
|
31
|
+
}
|
|
32
|
+
return timer(this.AUTO_SEARCH_DEBOUNCE);
|
|
33
|
+
}), map((e) => e.target.value), distinctUntilChanged())
|
|
21
34
|
.subscribe(filterTerm => {
|
|
22
35
|
this.filterTerm = filterTerm;
|
|
23
36
|
this.onSearch.emit(filterTerm);
|
|
@@ -31,14 +44,16 @@ export class FilterInputComponent {
|
|
|
31
44
|
this.filterChange$.complete();
|
|
32
45
|
}
|
|
33
46
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: FilterInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: FilterInputComponent, selector: "c8y-filter", inputs: { icon: "icon" }, outputs: { onSearch: "onSearch" }, ngImport: i0, template: "<div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n type=\"text\"\n [value]=\"filterTerm\"\n (
|
|
47
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: FilterInputComponent, selector: "c8y-filter", inputs: { icon: "icon", filterTerm: "filterTerm" }, outputs: { onSearch: "onSearch" }, ngImport: i0, template: "<div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n type=\"text\"\n [value]=\"filterTerm\"\n (keydown)=\"filterChange$.next($event)\"\n px-event=\"Filter\u2026\"\n data-cy=\"filter-input--filter-input\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-clean\"\n title=\"{{ filterTerm.length === 0 ? searchLabel : closeLabel }}\"\n px-event=\"Clear filtering\"\n (click)=\"reset()\"\n >\n <i [c8yIcon]=\"filterTerm.length === 0 ? 'search' : 'close'\"></i>\n </button>\n </span>\n</div>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
|
|
35
48
|
}
|
|
36
49
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: FilterInputComponent, decorators: [{
|
|
37
50
|
type: Component,
|
|
38
|
-
args: [{ selector: 'c8y-filter', template: "<div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n type=\"text\"\n [value]=\"filterTerm\"\n (
|
|
51
|
+
args: [{ selector: 'c8y-filter', template: "<div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n type=\"text\"\n [value]=\"filterTerm\"\n (keydown)=\"filterChange$.next($event)\"\n px-event=\"Filter\u2026\"\n data-cy=\"filter-input--filter-input\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-clean\"\n title=\"{{ filterTerm.length === 0 ? searchLabel : closeLabel }}\"\n px-event=\"Clear filtering\"\n (click)=\"reset()\"\n >\n <i [c8yIcon]=\"filterTerm.length === 0 ? 'search' : 'close'\"></i>\n </button>\n </span>\n</div>\n" }]
|
|
39
52
|
}], propDecorators: { icon: [{
|
|
40
53
|
type: Input
|
|
41
54
|
}], onSearch: [{
|
|
42
55
|
type: Output
|
|
56
|
+
}], filterTerm: [{
|
|
57
|
+
type: Input
|
|
43
58
|
}] } });
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvZm9ybXMvZmlsdGVyLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvZm9ybXMvZmlsdGVyLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBTXJFLE1BQU0sT0FBTyxvQkFBb0I7SUFKakM7UUFNWSxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNoRCxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFpQixDQUFDO1FBRTdDLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsZ0JBQVcsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsZUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNiLHdCQUFtQixHQUFHLEVBQUUsQ0FBQztRQUN6Qix5QkFBb0IsR0FBRyxPQUFPLENBQUM7UUFDL0IseUJBQW9CLEdBQUcsUUFBUSxDQUFDO1FBQ2hDLHlCQUFvQixHQUFHLEdBQUcsQ0FBQztLQXNDN0M7SUFwQ0MsUUFBUTtRQUNOLElBQUksQ0FBQyxhQUFhO2FBQ2YsSUFBSSxDQUNILFFBQVEsQ0FBQyxDQUFDLEtBQW9CLEVBQUUsRUFBRTtZQUNoQyxJQUNFLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLG9CQUFvQjtnQkFDeEMsS0FBSyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsbUJBQW1CLEVBQzFDLENBQUM7Z0JBQ0QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQixDQUFDO1lBRUQsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUM3QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2IsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEIsQ0FBQztZQUVELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLENBQWdCLEVBQUUsRUFBRSxDQUFFLENBQUMsQ0FBQyxNQUEyQixDQUFDLEtBQUssQ0FBQyxFQUMvRCxvQkFBb0IsRUFBRSxDQUN2QjthQUNBLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN0QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztZQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7OEdBaERVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLHlJQ1ZqQyx3b0JBcUJBOzsyRkRYYSxvQkFBb0I7a0JBSmhDLFNBQVM7K0JBQ0UsWUFBWTs4QkFJYixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTTtnQkFHUCxVQUFVO3NCQURULEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2dldHRleHQnO1xuaW1wb3J0IHsgU3VwcG9ydGVkSWNvbnNTdWdnZXN0aW9ucyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucyc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2UsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLWlucHV0LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgaWNvbjogU3VwcG9ydGVkSWNvbnNTdWdnZXN0aW9ucztcbiAgQE91dHB1dCgpIG9uU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIGZpbHRlckNoYW5nZSQgPSBuZXcgU3ViamVjdDxLZXlib2FyZEV2ZW50PigpO1xuICBASW5wdXQoKVxuICBmaWx0ZXJUZXJtID0gJyc7XG4gIHNlYXJjaExhYmVsID0gZ2V0dGV4dCgnc2VhcmNoJyk7XG4gIGNsb3NlTGFiZWwgPSBnZXR0ZXh0KCdjbG9zZScpO1xuICBwcml2YXRlIHJlYWRvbmx5IENBUlJJQUdFX1JFVFVSTl9LRVkgPSAxMztcbiAgcHJpdmF0ZSByZWFkb25seSBDQVJSSUFHRV9SRVRVUk5fQ09ERSA9ICdFbnRlcic7XG4gIHByaXZhdGUgcmVhZG9ubHkgQ0FSUklBR0VfRVNDQVBFX0NPREUgPSAnRXNjYXBlJztcbiAgcHJpdmF0ZSByZWFkb25seSBBVVRPX1NFQVJDSF9ERUJPVU5DRSA9IDUwMDtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZpbHRlckNoYW5nZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBldmVudC5jb2RlID09PSB0aGlzLkNBUlJJQUdFX1JFVFVSTl9DT0RFIHx8XG4gICAgICAgICAgICBldmVudC5rZXlDb2RlID09PSB0aGlzLkNBUlJJQUdFX1JFVFVSTl9LRVlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICByZXR1cm4gdGltZXIoMCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGV2ZW50LmNvZGUgPT09IHRoaXMuQ0FSUklBR0VfRVNDQVBFX0NPREUpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgIHJldHVybiB0aW1lcigwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdGltZXIodGhpcy5BVVRPX1NFQVJDSF9ERUJPVU5DRSk7XG4gICAgICAgIH0pLFxuICAgICAgICBtYXAoKGU6IEtleWJvYXJkRXZlbnQpID0+IChlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZmlsdGVyVGVybSA9PiB7XG4gICAgICAgIHRoaXMuZmlsdGVyVGVybSA9IGZpbHRlclRlcm07XG4gICAgICAgIHRoaXMub25TZWFyY2guZW1pdChmaWx0ZXJUZXJtKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5maWx0ZXJUZXJtID0gJyc7XG4gICAgdGhpcy5vblNlYXJjaC5lbWl0KCcnKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyQ2hhbmdlJC5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgaW5wdXQtZ3JvdXAtc2VhcmNoXCI+XG4gIDxpbnB1dFxuICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICBwbGFjZWhvbGRlcj1cInt7ICdGaWx0ZXLigKYnIHwgdHJhbnNsYXRlIH19XCJcbiAgICB0eXBlPVwidGV4dFwiXG4gICAgW3ZhbHVlXT1cImZpbHRlclRlcm1cIlxuICAgIChrZXlkb3duKT1cImZpbHRlckNoYW5nZSQubmV4dCgkZXZlbnQpXCJcbiAgICBweC1ldmVudD1cIkZpbHRlcuKAplwiXG4gICAgZGF0YS1jeT1cImZpbHRlci1pbnB1dC0tZmlsdGVyLWlucHV0XCJcbiAgLz5cbiAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tY2xlYW5cIlxuICAgICAgdGl0bGU9XCJ7eyBmaWx0ZXJUZXJtLmxlbmd0aCA9PT0gMCA/IHNlYXJjaExhYmVsIDogY2xvc2VMYWJlbCB9fVwiXG4gICAgICBweC1ldmVudD1cIkNsZWFyIGZpbHRlcmluZ1wiXG4gICAgICAoY2xpY2spPVwicmVzZXQoKVwiXG4gICAgPlxuICAgICAgPGkgW2M4eUljb25dPVwiZmlsdGVyVGVybS5sZW5ndGggPT09IDAgPyAnc2VhcmNoJyA6ICdjbG9zZSdcIj48L2k+XG4gICAgPC9idXR0b24+XG4gIDwvc3Bhbj5cbjwvZGl2PlxuIl19
|
|
@@ -85,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
85
85
|
type: HostListener,
|
|
86
86
|
args: ['click', ['$event.target']]
|
|
87
87
|
}] } });
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1pdGVtLWFjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2xpc3QtZ3JvdXAvbGlzdC1pdGVtLWFjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2xpc3QtZ3JvdXAvbGlzdC1pdGVtLWFjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDM0UsT0FBTyxFQUdMLCtCQUErQixFQUNoQyxNQUFNLGdEQUFnRCxDQUFDOzs7Ozs7QUFHeEQ7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBV0gsTUFBTSxPQUFPLHVCQUF1QjtJQW1DbEMsWUFBb0IsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFsQnREOztXQUVHO1FBRUgsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQjs7O1dBR0c7UUFFSCxVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQVF3QixDQUFDO0lBRTFEOztPQUVHO0lBRUgsT0FBTyxDQUFDLEtBQWtCO1FBQ3hCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxTQUFTLElBQUksZ0JBQWdCLENBQUM7UUFDN0UsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRSwyRUFBMkU7UUFDM0UsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUMxQixJQUFJLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxFQUNqQztZQUNFLEdBQUcsRUFBRSxPQUFPLENBQUMsT0FBTztZQUNwQixNQUFNO1NBQ1AsRUFDRCxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQ2pELENBQUM7UUFFRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMzRCxDQUFDOzhHQTVEVSx1QkFBdUI7a0dBQXZCLHVCQUF1Qix1TkFQdkI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsK0JBQStCO2dCQUN4QyxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDO2FBQ3ZEO1NBQ0YsZ0lDMUNILHlhQWtCQTs7MkZEMEJhLHVCQUF1QjtrQkFWbkMsU0FBUzsrQkFDRSxxQ0FBcUMsYUFFcEM7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLCtCQUErQjs0QkFDeEMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsd0JBQXdCLENBQUM7eUJBQ3ZEO3FCQUNGO3FGQU9ELFFBQVE7c0JBRFAsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQU94QyxLQUFLO3NCQURKLEtBQUs7Z0JBTU4sSUFBSTtzQkFESCxLQUFLO2dCQU1OLFFBQVE7c0JBRFAsS0FBSztnQkFPTixLQUFLO3NCQURKLE1BQU07Z0JBZVAsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFzc2lnbldpdGggfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgR2FpbnNpZ2h0U2VydmljZSB9IGZyb20gJy4uL3Byb2R1Y3QtZXhwZXJpZW5jZS9nYWluc2lnaHQuc2VydmljZSc7XG5pbXBvcnQge1xuICBQcm9kdWN0RXhwZXJpZW5jZUV2ZW50LFxuICBQcm9kdWN0RXhwZXJpZW5jZUV2ZW50U291cmNlLFxuICBQUk9EVUNUX0VYUEVSSUVOQ0VfRVZFTlRfU09VUkNFXG59IGZyb20gJy4uL3Byb2R1Y3QtZXhwZXJpZW5jZS9wcm9kdWN0LWV4cGVyaWVuY2UubW9kZWwnO1xuaW1wb3J0IHsgU3VwcG9ydGVkSWNvbnNTdWdnZXN0aW9ucyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucyc7XG5cbi8qKlxuICogQWN0aW9ucyBhcmUgZnVuY3Rpb25zIHRoYXQgY2FuIGJlIGV4ZWN1dGVkIG9uIHRoZVxuICogY3VycmVudCBsaXN0IGl0ZW0uIFRoZXkgYXJlIGRpc3BsYXllZCBuZXh0IHRvIHRoZVxuICogaXRlbSBhbmQgY2FuIGJlIGdyb3VwZWQgaW4gYSBkcm9wZG93bi5cbiAqXG4gKiBgYGBodG1sXG4gKiA8Yzh5LWxpPlxuICogICA8Yzh5LWxpLWFjdGlvbiAoY2xpY2spPVwiZGVsZXRlRGV2aWNlKGRldmljZS5pZClcIiBpY29uPVwidGltZXNcIj5cbiAqICAgICBEZWxldGVcbiAqICAgPC9jOHktbGktYWN0aW9uPlxuICogICA8Yzh5LWxpLWFjdGlvbiAoY2xpY2spPVwiKGZhbHNlKVwiIGljb249XCJyb2NrZXRcIj5cbiAqICAgICBMYXVuY2ggdG8gc3BhY2VcbiAqICAgPC9jOHktbGktYWN0aW9uPlxuICogPC9jOHktbGk+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWxpc3QtaXRlbS1hY3Rpb24sIGM4eS1saS1hY3Rpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC1pdGVtLWFjdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFBST0RVQ1RfRVhQRVJJRU5DRV9FVkVOVF9TT1VSQ0UsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBMaXN0SXRlbUFjdGlvbkNvbXBvbmVudClcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTGlzdEl0ZW1BY3Rpb25Db21wb25lbnQgaW1wbGVtZW50cyBQcm9kdWN0RXhwZXJpZW5jZUV2ZW50U291cmNlIHtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHRlbXBsYXRlOiBhbnk7XG4gIC8qKlxuICAgKiBUaGUgbGFiZWwgdG8gZGlzcGxheSAoeW91IGNhbiBhbHRlcm5hdGl2ZWx5IHVzZVxuICAgKiBjb250ZW50IHByb2plY3Rpb24gdG8gZGlzcGxheSB0aGUgbGFiZWwpLlxuICAgKi9cbiAgQElucHV0KClcbiAgbGFiZWw6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBpY29uIHRvIHVzZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGljb246IFN1cHBvcnRlZEljb25zU3VnZ2VzdGlvbnM7XG4gIC8qKlxuICAgKiBEZWZpbmVzIGlmIHRoZSBhY3Rpb24gaXMgZGlzYWJsZWQgb3Igbm90LlxuICAgKi9cbiAgQElucHV0KClcbiAgZGlzYWJsZWQgPSBmYWxzZTtcbiAgLyoqXG4gICAqIEFuIEV2ZW50RW1pdHRlciB0byBkZXRlcm1pbmUgd2hhdCB0byBkbyBpZiB0aGVcbiAgICogYWN0aW9uIGlzIHRyaWdnZXJlZC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBjbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogVGhlIHByb2R1Y3QgZXhwZXJpZW5jZSBldmVudCB0byBiZSB0cmlnZ2VyZWRcbiAgICogd2hlbiB0aGUgYWN0aW9uIGlzIGNsaWNrZWQuXG4gICAqL1xuICBwcm9kdWN0RXhwZXJpZW5jZUV2ZW50OiBQcm9kdWN0RXhwZXJpZW5jZUV2ZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZ2FpbnNpZ2h0U2VydmljZTogR2FpbnNpZ2h0U2VydmljZSkge31cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudC50YXJnZXQnXSlcbiAgb25DbGljayhldmVudDogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZXZlbnQuY2xvc2VzdCgnW3RpdGxlXScpIHx8IGV2ZW50LmNsb3Nlc3QoJ1t1aWItdG9vbHRpcF0nKTtcbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZXZlbnROYW1lID0gdGhpcy5wcm9kdWN0RXhwZXJpZW5jZUV2ZW50Py5ldmVudE5hbWUgfHwgJ2xpc3RJdGVtQWN0aW9uJztcbiAgICBjb25zdCBhY3Rpb25OYW1lID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3RpdGxlJykgfHwgZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3VpYi10b29sdGlwJyk7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyYW5zbGF0ZVRvRW5nbGlzaChhY3Rpb25OYW1lKTtcbiAgICAvLyBBc3NpZ24gdXJsIGFuZCBhY3Rpb24gdG8gZXZlbnQgZGF0YSBvbmx5IGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5IGRlZmluZWRcbiAgICBjb25zdCBldmVudERhdGEgPSBhc3NpZ25XaXRoKFxuICAgICAgdGhpcy5wcm9kdWN0RXhwZXJpZW5jZUV2ZW50Py5kYXRhLFxuICAgICAge1xuICAgICAgICB1cmw6IGVsZW1lbnQuYmFzZVVSSSxcbiAgICAgICAgYWN0aW9uXG4gICAgICB9LFxuICAgICAgKHRhcmdldFZhbCwgc291cmNlVmFsKSA9PiBzb3VyY2VWYWwgPz8gdGFyZ2V0VmFsXG4gICAgKTtcblxuICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoZXZlbnROYW1lLCBldmVudERhdGEpO1xuICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI3RlbXBsYXRlPlxuICA8bGk+XG4gICAgPGJ1dHRvblxuICAgICAgdGl0bGU9XCJ7eyBsYWJlbCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAoY2xpY2spPVwiY2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICAgIGRhdGEtY3k9XCJjOHktbGktYWN0aW9uLS1idG5cIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICA+XG4gICAgICA8aVxuICAgICAgICBbYzh5SWNvbl09XCJpY29uXCJcbiAgICAgICAgKm5nSWY9XCJpY29uXCJcbiAgICAgID48L2k+XG4gICAgICAmbmJzcDtcbiAgICAgIDxzcGFuICpuZ0lmPVwibGFiZWxcIj57eyBsYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2J1dHRvbj5cbiAgPC9saT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -25,4 +25,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
25
25
|
}], status: [{
|
|
26
26
|
type: Input
|
|
27
27
|
}] } });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1pdGVtLWljb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9saXN0LWdyb3VwL2xpc3QtaXRlbS1pY29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvbGlzdC1ncm91cC9saXN0LWl0ZW0taWNvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQUdqRDs7Ozs7Ozs7R0FRRztBQVFILE1BQU0sT0FBTyxxQkFBcUI7OEdBQXJCLHFCQUFxQjtrR0FBckIscUJBQXFCLHFLQ25CbEMsMkZBQ3lCOzsyRkRrQloscUJBQXFCO2tCQVBqQyxTQUFTOytCQUNFLGlDQUFpQyxRQUVyQzt3QkFDSixLQUFLLEVBQUUsc0JBQXNCO3FCQUM5Qjs4QkFPRCxJQUFJO3NCQURILEtBQUs7Z0JBT04sTUFBTTtzQkFETCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3VwcG9ydGVkSWNvbnNTdWdnZXN0aW9ucyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucyc7XG5cbi8qKlxuICogQW4gaWNvbiB0byBkaXNwbGF5IG9uIGEgbGlzdCBpdGVtLiBVc2UgaXQgd2l0aCBjb250ZW50IHByb2plY3Rpb24uXG4gKlxuICogYGBgaHRtbFxuICogPGM4eS1saT5cbiAqICAgPGM4eS1saS1pY29uPVwicm9ja2V0XCI+PC9jOHktbGktaWNvbj5cbiAqIDwvYzh5LWxpPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1saXN0LWl0ZW0taWNvbiwgYzh5LWxpLWljb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC1pdGVtLWljb24uY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdjOHktbGlzdF9faXRlbV9faWNvbidcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBMaXN0SXRlbUljb25Db21wb25lbnQge1xuICAvKipcbiAgICogVGhlIGljb24gbmFtZSBwYXNzZWQgdG8gdGhlIGBjOHlJY29uYCBkaXJlY3RpdmUuXG4gICAqL1xuICBASW5wdXQoKVxuICBpY29uOiBTdXBwb3J0ZWRJY29uc1N1Z2dlc3Rpb25zO1xuXG4gIC8qKlxuICAgKiBBIHN0YXR1cyB0byBjaGFuZ2UgdGhlIGNvbG9yIG9mIHRoZSBpY29uLlxuICAgKi9cbiAgQElucHV0KClcbiAgc3RhdHVzPzpcbiAgICB8ICdzdGF0dXNPaydcbiAgICB8ICdzdGF0dXNVbmtub3duJ1xuICAgIHwgJ3N0YXR1c0FsZXJ0J1xuICAgIHwgJ3N0YXR1c05vaydcbiAgICB8ICdzdGF0dXMgY3JpdGljYWwnXG4gICAgfCAnc3RhdHVzIHdhcm5pbmcnXG4gICAgfCAnc3RhdHVzIG1pbm9yJ1xuICAgIHwgJ3N0YXR1cyBtYWpvcic7XG59XG4iLCI8aSBbYzh5SWNvbl09XCJpY29uXCIgW25nQ2xhc3NdPVwic3RhdHVzXCIgKm5nSWY9XCJpY29uXCI+PC9pPlxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PiJdfQ==
|
|
@@ -64,7 +64,7 @@ export class CredentialsComponent {
|
|
|
64
64
|
if (e.res && e.res.headers && e.res.headers.get(this.PASSWORD_RESET_HEADER_NAME)) {
|
|
65
65
|
this.handlePasswordReset(e.res);
|
|
66
66
|
}
|
|
67
|
-
else if (e.res && e.res.status === 401 && /pin/i.test(e.data.message)) {
|
|
67
|
+
else if (e.res && e.res.status === 401 && /pin.*generated/i.test(e.data.message)) {
|
|
68
68
|
this.handleSmsChallenge(e.data.message);
|
|
69
69
|
}
|
|
70
70
|
else if (e.res && e.res.status === 401 && /TOTP/i.test(e.data.message)) {
|
|
@@ -121,4 +121,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
121
121
|
}], loginViewParams: [{
|
|
122
122
|
type: Input
|
|
123
123
|
}] } });
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGVudGlhbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9sb2dpbi9jcmVkZW50aWFscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2xvZ2luL2NyZWRlbnRpYWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVE1RixNQUFNLE9BQU8sb0JBQW9CO0lBbUIvQixZQUNTLFlBQTBCLEVBQzFCLEtBQW1CLEVBQ2xCLGlDQUFvRTtRQUZyRSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ2xCLHNDQUFpQyxHQUFqQyxpQ0FBaUMsQ0FBbUM7UUFyQnBFLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVuQyxvQkFBZSxHQUErQjtZQUNyRCxhQUFhLEVBQUUsS0FBSztZQUNwQixVQUFVLEVBQUUsS0FBSztTQUNsQixDQUFDO1FBRUYsZ0JBQVcsR0FBRyxVQUFVLENBQUM7UUFDekIsVUFBSyxHQUFpQixFQUFFLENBQUM7UUFDekIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixpQkFB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LENBQUM7SUFDSCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsT0FBZTtRQUN4QyxJQUFJLGlDQUFpQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUNoQixPQUFPLENBQ0wsc0dBQXNHLENBQ3ZHLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVPLDJCQUEyQjtRQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3pGLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUNoQixPQUFPLENBQ0wsZ0xBQWdMLENBQ2pMLENBQ0YsQ0FBQztJQUNKLENBQUM7OEdBNUdVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLGtKQ2RqQyxvc0dBNElBOzsyRkQ5SGEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGlCQUFpQjs0SkFLakIsWUFBWTtzQkFBckIsTUFBTTtnQkFFRSxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE91dHB1dCwgSW5wdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi9sb2dpbi5zZXJ2aWNlJztcbmltcG9ydCB7IElDcmVkZW50aWFscyB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJy4uL2kxOG4vZ2V0dGV4dCc7XG5pbXBvcnQgeyBMb2dpblZpZXdzIH0gZnJvbSAnLi9sb2dpbi5tb2RlbCc7XG5pbXBvcnQgeyBDcmVkZW50aWFsc0Zyb21RdWVyeVBhcmFtc1NlcnZpY2UgfSBmcm9tICcuL2NyZWRlbnRpYWxzLWZyb20tcXVlcnktcGFyYW1zLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3JlZGVudGlhbHNDb21wb25lbnRQYXJhbXMgfSBmcm9tICcuL2NyZWRlbnRpYWxzLWNvbXBvbmVudC1wYXJhbXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktY3JlZGVudGlhbHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vY3JlZGVudGlhbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIENyZWRlbnRpYWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQE91dHB1dCgpIG9uQ2hhbmdlVmlldyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASW5wdXQoKSBsb2dpblZpZXdQYXJhbXM6IENyZWRlbnRpYWxzQ29tcG9uZW50UGFyYW1zID0ge1xuICAgIGRpc2FibGVUZW5hbnQ6IGZhbHNlLFxuICAgIHNob3dUZW5hbnQ6IGZhbHNlXG4gIH07XG5cbiAgTE9HSU5fVklFV1MgPSBMb2dpblZpZXdzO1xuICBtb2RlbDogSUNyZWRlbnRpYWxzID0ge307XG4gIGlzTG9hZGluZyA9IGZhbHNlO1xuICBzaG93TG9naW5Gb3JtID0gZmFsc2U7XG4gIHNob3dCYXNpY0F1dGggPSBmYWxzZTtcbiAgb2F1dGhPcHRpb25zOiBhbnkgPSB7fTtcbiAgc2hvd1RlbmFudCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgUEFTU1dPUkRfUkVTRVRfSEVBREVSX05BTUUgPSAncGFzc3dvcmRyZXNldHRva2VuJztcbiAgcHJpdmF0ZSByZWFkb25seSBOT19QSE9ORV9IRUFERVJfTkFNRSA9ICdOb1Bob25lSGVhZGVyJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbG9naW5TZXJ2aWNlOiBMb2dpblNlcnZpY2UsXG4gICAgcHVibGljIGFsZXJ0OiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjcmVkZW50aWFsc0Zyb21RdWVyeVBhcmFtc1NlcnZpY2U6IENyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgeyBvYXV0aE9wdGlvbnMsIGxvZ2luTW9kZSB9ID0gdGhpcy5sb2dpblNlcnZpY2U7XG4gICAgdGhpcy5tb2RlbC50ZW5hbnQgPSB0aGlzLmxvZ2luU2VydmljZS5nZXRUZW5hbnQoKTtcbiAgICB0aGlzLnNob3dMb2dpbkZvcm0gPVxuICAgICAgdHlwZW9mIGxvZ2luTW9kZS52aXNpYmxlT25Mb2dpblBhZ2UgPT09ICd1bmRlZmluZWQnIHx8IGxvZ2luTW9kZS52aXNpYmxlT25Mb2dpblBhZ2U7XG4gICAgdGhpcy5zaG93QmFzaWNBdXRoID0gbG9naW5Nb2RlLnR5cGUgPT09ICdCQVNJQyc7XG4gICAgdGhpcy5vYXV0aE9wdGlvbnMgPSBvYXV0aE9wdGlvbnM7XG4gICAgY29uc3QgY3JlZGVudGlhbHNGcm9tUXVlcnlQYXJhbXMgPVxuICAgICAgdGhpcy5jcmVkZW50aWFsc0Zyb21RdWVyeVBhcmFtc1NlcnZpY2UuZ2V0Q3JlZGVudGlhbHNGcm9tUXVlcnlQYXJhbXMoKTtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMubW9kZWwsIGNyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zKTtcbiAgICB0aGlzLnNob3dUZW5hbnQgPSB0aGlzLmxvZ2luVmlld1BhcmFtcy5zaG93VGVuYW50IHx8IHRoaXMubG9naW5TZXJ2aWNlLnNob3dUZW5hbnQoKTtcbiAgfVxuXG4gIHJlZGlyZWN0VG9PYXV0aCgpIHtcbiAgICB0aGlzLmxvZ2luU2VydmljZS5yZWRpcmVjdFRvT2F1dGgoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gbG9naW4gaW50byB0aGUgYXBwbGljYXRpb24gdXNpbmcgYmFzaWMgYXV0aC5cbiAgICogSWYgc3VjY2Vzc2Z1bCBsb2dnZWQgaW4gdGhlIGNsaWVudCBpcyBzZXQgaW4gc2hhcmVkL2N1bXVsb2NpdHkuc2VydmljZS50c1xuICAgKi9cbiAgYXN5bmMgbG9naW4oKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIGNvbnN0IGJhc2ljQXV0aCA9IHRoaXMubG9naW5TZXJ2aWNlLnVzZUJhc2ljQXV0aCh0aGlzLm1vZGVsKTtcbiAgICAgIGF3YWl0IHRoaXMubG9naW5TZXJ2aWNlLmxvZ2luKGJhc2ljQXV0aCwgdGhpcy5tb2RlbCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUucmVzICYmIGUucmVzLmhlYWRlcnMgJiYgZS5yZXMuaGVhZGVycy5nZXQodGhpcy5QQVNTV09SRF9SRVNFVF9IRUFERVJfTkFNRSkpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVQYXNzd29yZFJlc2V0KGUucmVzKTtcbiAgICAgIH0gZWxzZSBpZiAoZS5yZXMgJiYgZS5yZXMuc3RhdHVzID09PSA0MDEgJiYgL3Bpbi9pLnRlc3QoZS5kYXRhLm1lc3NhZ2UpKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlU21zQ2hhbGxlbmdlKGUuZGF0YS5tZXNzYWdlKTtcbiAgICAgIH0gZWxzZSBpZiAoZS5yZXMgJiYgZS5yZXMuc3RhdHVzID09PSA0MDEgJiYgL1RPVFAvaS50ZXN0KGUuZGF0YS5tZXNzYWdlKSkge1xuICAgICAgICB0aGlzLmhhbmRsZVRvdHBDaGFsbGVuZ2UoZS5kYXRhLm1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgZS5yZXMgJiZcbiAgICAgICAgZS5yZXMuaGVhZGVycyAmJlxuICAgICAgICBlLnJlcy5oZWFkZXJzLmdldCh0aGlzLk5PX1BIT05FX0hFQURFUl9OQU1FKSAmJlxuICAgICAgICAhdGhpcy5sb2dpblNlcnZpY2UuaXNTdXBwb3J0VXNlcih0aGlzLm1vZGVsKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlTm9QaG9uZU51bWJlclByb3ZpZGVkKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZ2luU2VydmljZS5nZW5lcmF0ZU9hdXRoVG9rZW4odGhpcy5tb2RlbCk7XG4gICAgICAgIHRoaXMubG9naW5TZXJ2aWNlLnJlc2V0KCk7XG4gICAgICAgIHRoaXMuYWxlcnQuYWRkU2VydmVyRmFpbHVyZShlKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVBhc3N3b3JkUmVzZXQoZTogYW55KSB7XG4gICAgdGhpcy5hbGVydC5yZW1vdmVMYXN0RGFuZ2VyKCk7XG4gICAgdGhpcy5tb2RlbC50b2tlbiA9IGUuaGVhZGVycy5nZXQodGhpcy5QQVNTV09SRF9SRVNFVF9IRUFERVJfTkFNRSk7XG4gICAgdGhpcy5vbkNoYW5nZVZpZXcuZW1pdCh7IHZpZXc6IExvZ2luVmlld3MuQ2hhbmdlUGFzc3dvcmQsIGNyZWRlbnRpYWxzOiB0aGlzLm1vZGVsIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVUb3RwQ2hhbGxlbmdlKG1lc3NhZ2UpIHtcbiAgICBpZiAoL1RPVFAgc2V0dXAgcmVxdWlyZWQvaS50ZXN0KG1lc3NhZ2UpKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlVmlldy5lbWl0KHsgdmlldzogTG9naW5WaWV3cy5Ub3RwU2V0dXAsIGNyZWRlbnRpYWxzOiB0aGlzLm1vZGVsIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlVmlldy5lbWl0KHsgdmlldzogTG9naW5WaWV3cy5Ub3RwQ2hhbGxlbmdlLCBjcmVkZW50aWFsczogdGhpcy5tb2RlbCB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNtc0NoYWxsZW5nZShtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBpZiAoL3BpbiBoYXMgYWxyZWFkeSBiZWVuIGdlbmVyYXRlZC9pLnRlc3QobWVzc2FnZSkpIHtcbiAgICAgIHRoaXMuYWxlcnQud2FybmluZyhcbiAgICAgICAgZ2V0dGV4dChcbiAgICAgICAgICAnVGhlIHZlcmlmaWNhdGlvbiBjb2RlIHdhcyBhbHJlYWR5IHNlbnQuIEZvciBhIG5ldyB2ZXJpZmljYXRpb24gY29kZSwgcGxlYXNlIGNsaWNrIG9uIHRoZSBsaW5rIGFib3ZlLidcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5hbGVydC5yZW1vdmVMYXN0RGFuZ2VyKCk7XG4gICAgdGhpcy5vbkNoYW5nZVZpZXcuZW1pdCh7IHZpZXc6IExvZ2luVmlld3MuU21zQ2hhbGxlbmdlLCBjcmVkZW50aWFsczogdGhpcy5tb2RlbCB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTm9QaG9uZU51bWJlclByb3ZpZGVkKCkge1xuICAgIHRoaXMub25DaGFuZ2VWaWV3LmVtaXQoeyB2aWV3OiBMb2dpblZpZXdzLlByb3ZpZGVQaG9uZU51bWJlciwgY3JlZGVudGlhbHM6IHRoaXMubW9kZWwgfSk7XG4gICAgdGhpcy5hbGVydC53YXJuaW5nKFxuICAgICAgZ2V0dGV4dChcbiAgICAgICAgJ1R3by1mYWN0b3IgYXV0aGVudGljYXRpb24gaGFzIGJlZW4gdHVybmVkIG9uIGZvciB0aGlzIGFjY291bnQuIFByb3ZpZGUgeW91ciBwaG9uZSBudW1iZXIgYWJvdmUgdG8gc2F2ZSBpdCBpbiB5b3VyIHVzZXIgcHJvZmlsZSBhbmQgc3RhcnQgcmVjZWl2aW5nIHZlcmlmaWNhdGlvbiBjb2RlcyB2aWEgU01TLidcbiAgICAgIClcbiAgICApO1xuICB9XG59XG4iLCI8ZGl2XG4gIGlkPVwib2F1dGhcIlxuICAqbmdJZj1cIm9hdXRoT3B0aW9ucy5pbml0UmVxdWVzdCAmJiBvYXV0aE9wdGlvbnMudmlzaWJsZU9uTG9naW5QYWdlXCJcbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1ibG9jayBidG4tbGcgZm9ybS1ncm91cCBtLXQtOFwiXG4gICAgdGl0bGU9XCJ7eyBvYXV0aE9wdGlvbnMuYnV0dG9uTmFtZSB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgKGNsaWNrKT1cInJlZGlyZWN0VG9PYXV0aCgpXCJcbiAgPlxuICAgIDxpXG4gICAgICBjbGFzcz1cInB1bGwtbGVmdFwiXG4gICAgICBbYzh5SWNvbl09XCInc2lnbi1pbidcIlxuICAgID48L2k+XG4gICAge3sgb2F1dGhPcHRpb25zLmJ1dHRvbk5hbWUgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2Rpdj5cblxuPGZvcm1cbiAgY2xhc3M9XCJsb2dpbkZvcm1cIlxuICAobmdTdWJtaXQpPVwibG9naW4oKVwiXG4gICNsb2dpbkZvcm09XCJuZ0Zvcm1cIlxuICAqbmdJZj1cInNob3dMb2dpbkZvcm1cIlxuICBub3ZhbGlkYXRlXG4+XG4gIDxzcGFuXG4gICAgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9jayBjZW50ZXJcIlxuICAgICpuZ0lmPVwiIShvYXV0aE9wdGlvbnMuaW5pdFJlcXVlc3QgJiYgb2F1dGhPcHRpb25zLnZpc2libGVPbkxvZ2luUGFnZSk7IGVsc2Ugb3JMZWdlbmRcIlxuICAgIHRyYW5zbGF0ZVxuICA+XG4gICAgTG9naW5cbiAgPC9zcGFuPlxuXG4gIDxuZy10ZW1wbGF0ZSAjb3JMZWdlbmQ+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9jayBjZW50ZXJcIlxuICAgICAgdHJhbnNsYXRlXG4gICAgPlxuICAgICAgb3JcbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8Yzh5LWZvcm0tZ3JvdXBcbiAgICBjbGFzcz1cInRlbmFudEZpZWxkXCJcbiAgICBpZD1cInRlbmFudEZpZWxkXCJcbiAgICAqbmdJZj1cInNob3dUZW5hbnRcIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICBmb3I9XCJ0ZW5hbnRcIlxuICAgICAgdHJhbnNsYXRlXG4gICAgPlxuICAgICAgVGVuYW50IElEXG4gICAgPC9sYWJlbD5cbiAgICA8aW5wdXRcbiAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgIGlkPVwidGVuYW50XCJcbiAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4nIHwgdHJhbnNsYXRlIH19IHQxMjM0NVwiXG4gICAgICBuYW1lPVwidGVuYW50XCJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIHJlcXVpcmVkXG4gICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLnRlbmFudFwiXG4gICAgICAjdGVuYW50PVwibmdNb2RlbFwiXG4gICAgICBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiXG4gICAgICBhdXRvY29ycmVjdD1cIm9mZlwiXG4gICAgICBwbGFjZWhvbGRlci1uby1yZXF1aXJlZC1oaW50XG4gICAgICBbcmVhZG9ubHldPVwibG9naW5WaWV3UGFyYW1zLmRpc2FibGVUZW5hbnRcIlxuICAgIC8+XG4gIDwvYzh5LWZvcm0tZ3JvdXA+XG4gIDxjOHktZm9ybS1ncm91cD5cbiAgICA8bGFiZWxcbiAgICAgIGZvcj1cInVzZXJcIlxuICAgICAgdHJhbnNsYXRlXG4gICAgPlxuICAgICAgVXNlcm5hbWVcbiAgICA8L2xhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgaWQ9XCJ1c2VyXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4gam9lIG9yIGpvZS5kb2VAZXhhbXBsZS5jb21gTE9DQUxJWkVgJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICBuYW1lPVwidXNlclwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICByZXF1aXJlZFxuICAgICAgWyhuZ01vZGVsKV09XCJtb2RlbC51c2VyXCJcbiAgICAgICN1c2VyPVwibmdNb2RlbFwiXG4gICAgICBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiXG4gICAgICBhdXRvY29ycmVjdD1cIm9mZlwiXG4gICAgICBwbGFjZWhvbGRlci1uby1yZXF1aXJlZC1oaW50XG4gICAgLz5cbiAgPC9jOHktZm9ybS1ncm91cD5cbiAgPGM4eS1mb3JtLWdyb3VwPlxuICAgIDxsYWJlbFxuICAgICAgZm9yPVwicGFzc3dvcmRcIlxuICAgICAgdHJhbnNsYXRlXG4gICAgPlxuICAgICAgUGFzc3dvcmRcbiAgICA8L2xhYmVsPlxuICAgIDxjOHktcGFzc3dvcmQtaW5wdXRcbiAgICAgIG5hbWU9XCJwYXNzd29yZFwiXG4gICAgICByZXF1aXJlZFxuICAgICAgW2lkXT1cIidwYXNzd29yZCdcIlxuICAgICAgWyhuZ01vZGVsKV09XCJtb2RlbC5wYXNzd29yZFwiXG4gICAgICBbYXV0b2NvbXBsZXRlXT1cIidvZmYnXCJcbiAgICA+PC9jOHktcGFzc3dvcmQtaW5wdXQ+XG4gIDwvYzh5LWZvcm0tZ3JvdXA+XG4gIDxkaXZcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXBcIlxuICAgICpuZ0lmPVwic2hvd0Jhc2ljQXV0aFwiXG4gID5cbiAgICA8bGFiZWxcbiAgICAgIGNsYXNzPVwiYzh5LWNoZWNrYm94XCJcbiAgICAgIHRpdGxlPVwie3sgJ1JlbWVtYmVyIG1lJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgPlxuICAgICAgPGlucHV0XG4gICAgICAgIG5hbWU9XCJyZW1lbWJlclwiXG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwibG9naW5TZXJ2aWNlLnJlbWVtYmVyTWVcIlxuICAgICAgLz5cbiAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDxzcGFuPnt7ICdSZW1lbWJlciBtZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tbGcgYnRuLWJsb2NrIGZvcm0tZ3JvdXBcIlxuICAgIHRpdGxlPVwie3sgJ0xvZyBpbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgIFtkaXNhYmxlZF09XCIhbG9naW5Gb3JtLmZvcm0udmFsaWQgfHwgaXNMb2FkaW5nXCJcbiAgPlxuICAgIHt7ICdMb2cgaW4nIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbS10LThcIj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tbGluayBidG4tc21cIlxuICAgICAgdGl0bGU9XCJ7eyAnRm9yZ290IHBhc3N3b3JkPycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwib25DaGFuZ2VWaWV3LmVtaXQoeyB2aWV3OiBMT0dJTl9WSUVXUy5SZWNvdmVyUGFzc3dvcmQgfSlcIlxuICAgID5cbiAgICAgIHt7ICdGb3Jnb3QgcGFzc3dvcmQ/JyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGVudGlhbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9sb2dpbi9jcmVkZW50aWFscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2xvZ2luL2NyZWRlbnRpYWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVE1RixNQUFNLE9BQU8sb0JBQW9CO0lBbUIvQixZQUNTLFlBQTBCLEVBQzFCLEtBQW1CLEVBQ2xCLGlDQUFvRTtRQUZyRSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ2xCLHNDQUFpQyxHQUFqQyxpQ0FBaUMsQ0FBbUM7UUFyQnBFLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVuQyxvQkFBZSxHQUErQjtZQUNyRCxhQUFhLEVBQUUsS0FBSztZQUNwQixVQUFVLEVBQUUsS0FBSztTQUNsQixDQUFDO1FBRUYsZ0JBQVcsR0FBRyxVQUFVLENBQUM7UUFDekIsVUFBSyxHQUFpQixFQUFFLENBQUM7UUFDekIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixpQkFB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dEYsQ0FBQztJQUNILENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxPQUFlO1FBQ3hDLElBQUksaUNBQWlDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ2hCLE9BQU8sQ0FDTCxzR0FBc0csQ0FDdkcsQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRU8sMkJBQTJCO1FBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDekYsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ2hCLE9BQU8sQ0FDTCxnTEFBZ0wsQ0FDakwsQ0FDRixDQUFDO0lBQ0osQ0FBQzs4R0E1R1Usb0JBQW9CO2tHQUFwQixvQkFBb0Isa0pDZGpDLG9zR0E0SUE7OzJGRDlIYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsaUJBQWlCOzRKQUtqQixZQUFZO3NCQUFyQixNQUFNO2dCQUVFLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT3V0cHV0LCBJbnB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuL2xvZ2luLnNlcnZpY2UnO1xuaW1wb3J0IHsgSUNyZWRlbnRpYWxzIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcbmltcG9ydCB7IExvZ2luVmlld3MgfSBmcm9tICcuL2xvZ2luLm1vZGVsJztcbmltcG9ydCB7IENyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zU2VydmljZSB9IGZyb20gJy4vY3JlZGVudGlhbHMtZnJvbS1xdWVyeS1wYXJhbXMuc2VydmljZSc7XG5pbXBvcnQgeyBDcmVkZW50aWFsc0NvbXBvbmVudFBhcmFtcyB9IGZyb20gJy4vY3JlZGVudGlhbHMtY29tcG9uZW50LXBhcmFtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1jcmVkZW50aWFscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVkZW50aWFscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW11cbn0pXG5leHBvcnQgY2xhc3MgQ3JlZGVudGlhbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAT3V0cHV0KCkgb25DaGFuZ2VWaWV3ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBJbnB1dCgpIGxvZ2luVmlld1BhcmFtczogQ3JlZGVudGlhbHNDb21wb25lbnRQYXJhbXMgPSB7XG4gICAgZGlzYWJsZVRlbmFudDogZmFsc2UsXG4gICAgc2hvd1RlbmFudDogZmFsc2VcbiAgfTtcblxuICBMT0dJTl9WSUVXUyA9IExvZ2luVmlld3M7XG4gIG1vZGVsOiBJQ3JlZGVudGlhbHMgPSB7fTtcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG4gIHNob3dMb2dpbkZvcm0gPSBmYWxzZTtcbiAgc2hvd0Jhc2ljQXV0aCA9IGZhbHNlO1xuICBvYXV0aE9wdGlvbnM6IGFueSA9IHt9O1xuICBzaG93VGVuYW50ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBQQVNTV09SRF9SRVNFVF9IRUFERVJfTkFNRSA9ICdwYXNzd29yZHJlc2V0dG9rZW4nO1xuICBwcml2YXRlIHJlYWRvbmx5IE5PX1BIT05FX0hFQURFUl9OQU1FID0gJ05vUGhvbmVIZWFkZXInO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBsb2dpblNlcnZpY2U6IExvZ2luU2VydmljZSxcbiAgICBwdWJsaWMgYWxlcnQ6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGNyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zU2VydmljZTogQ3JlZGVudGlhbHNGcm9tUXVlcnlQYXJhbXNTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCB7IG9hdXRoT3B0aW9ucywgbG9naW5Nb2RlIH0gPSB0aGlzLmxvZ2luU2VydmljZTtcbiAgICB0aGlzLm1vZGVsLnRlbmFudCA9IHRoaXMubG9naW5TZXJ2aWNlLmdldFRlbmFudCgpO1xuICAgIHRoaXMuc2hvd0xvZ2luRm9ybSA9XG4gICAgICB0eXBlb2YgbG9naW5Nb2RlLnZpc2libGVPbkxvZ2luUGFnZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbG9naW5Nb2RlLnZpc2libGVPbkxvZ2luUGFnZTtcbiAgICB0aGlzLnNob3dCYXNpY0F1dGggPSBsb2dpbk1vZGUudHlwZSA9PT0gJ0JBU0lDJztcbiAgICB0aGlzLm9hdXRoT3B0aW9ucyA9IG9hdXRoT3B0aW9ucztcbiAgICBjb25zdCBjcmVkZW50aWFsc0Zyb21RdWVyeVBhcmFtcyA9XG4gICAgICB0aGlzLmNyZWRlbnRpYWxzRnJvbVF1ZXJ5UGFyYW1zU2VydmljZS5nZXRDcmVkZW50aWFsc0Zyb21RdWVyeVBhcmFtcygpO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5tb2RlbCwgY3JlZGVudGlhbHNGcm9tUXVlcnlQYXJhbXMpO1xuICAgIHRoaXMuc2hvd1RlbmFudCA9IHRoaXMubG9naW5WaWV3UGFyYW1zLnNob3dUZW5hbnQgfHwgdGhpcy5sb2dpblNlcnZpY2Uuc2hvd1RlbmFudCgpO1xuICB9XG5cbiAgcmVkaXJlY3RUb09hdXRoKCkge1xuICAgIHRoaXMubG9naW5TZXJ2aWNlLnJlZGlyZWN0VG9PYXV0aCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93cyB0byBsb2dpbiBpbnRvIHRoZSBhcHBsaWNhdGlvbiB1c2luZyBiYXNpYyBhdXRoLlxuICAgKiBJZiBzdWNjZXNzZnVsIGxvZ2dlZCBpbiB0aGUgY2xpZW50IGlzIHNldCBpbiBzaGFyZWQvY3VtdWxvY2l0eS5zZXJ2aWNlLnRzXG4gICAqL1xuICBhc3luYyBsb2dpbigpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgY29uc3QgYmFzaWNBdXRoID0gdGhpcy5sb2dpblNlcnZpY2UudXNlQmFzaWNBdXRoKHRoaXMubW9kZWwpO1xuICAgICAgYXdhaXQgdGhpcy5sb2dpblNlcnZpY2UubG9naW4oYmFzaWNBdXRoLCB0aGlzLm1vZGVsKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZS5yZXMgJiYgZS5yZXMuaGVhZGVycyAmJiBlLnJlcy5oZWFkZXJzLmdldCh0aGlzLlBBU1NXT1JEX1JFU0VUX0hFQURFUl9OQU1FKSkge1xuICAgICAgICB0aGlzLmhhbmRsZVBhc3N3b3JkUmVzZXQoZS5yZXMpO1xuICAgICAgfSBlbHNlIGlmIChlLnJlcyAmJiBlLnJlcy5zdGF0dXMgPT09IDQwMSAmJiAvcGluLipnZW5lcmF0ZWQvaS50ZXN0KGUuZGF0YS5tZXNzYWdlKSkge1xuICAgICAgICB0aGlzLmhhbmRsZVNtc0NoYWxsZW5nZShlLmRhdGEubWVzc2FnZSk7XG4gICAgICB9IGVsc2UgaWYgKGUucmVzICYmIGUucmVzLnN0YXR1cyA9PT0gNDAxICYmIC9UT1RQL2kudGVzdChlLmRhdGEubWVzc2FnZSkpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVUb3RwQ2hhbGxlbmdlKGUuZGF0YS5tZXNzYWdlKTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGUucmVzICYmXG4gICAgICAgIGUucmVzLmhlYWRlcnMgJiZcbiAgICAgICAgZS5yZXMuaGVhZGVycy5nZXQodGhpcy5OT19QSE9ORV9IRUFERVJfTkFNRSkgJiZcbiAgICAgICAgIXRoaXMubG9naW5TZXJ2aWNlLmlzU3VwcG9ydFVzZXIodGhpcy5tb2RlbClcbiAgICAgICkge1xuICAgICAgICB0aGlzLmhhbmRsZU5vUGhvbmVOdW1iZXJQcm92aWRlZCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2dpblNlcnZpY2UuZ2VuZXJhdGVPYXV0aFRva2VuKHRoaXMubW9kZWwpO1xuICAgICAgICB0aGlzLmxvZ2luU2VydmljZS5yZXNldCgpO1xuICAgICAgICB0aGlzLmFsZXJ0LmFkZFNlcnZlckZhaWx1cmUoZSk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVQYXNzd29yZFJlc2V0KGU6IGFueSkge1xuICAgIHRoaXMuYWxlcnQucmVtb3ZlTGFzdERhbmdlcigpO1xuICAgIHRoaXMubW9kZWwudG9rZW4gPSBlLmhlYWRlcnMuZ2V0KHRoaXMuUEFTU1dPUkRfUkVTRVRfSEVBREVSX05BTUUpO1xuICAgIHRoaXMub25DaGFuZ2VWaWV3LmVtaXQoeyB2aWV3OiBMb2dpblZpZXdzLkNoYW5nZVBhc3N3b3JkLCBjcmVkZW50aWFsczogdGhpcy5tb2RlbCB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVG90cENoYWxsZW5nZShtZXNzYWdlKSB7XG4gICAgaWYgKC9UT1RQIHNldHVwIHJlcXVpcmVkL2kudGVzdChtZXNzYWdlKSkge1xuICAgICAgdGhpcy5vbkNoYW5nZVZpZXcuZW1pdCh7IHZpZXc6IExvZ2luVmlld3MuVG90cFNldHVwLCBjcmVkZW50aWFsczogdGhpcy5tb2RlbCB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vbkNoYW5nZVZpZXcuZW1pdCh7IHZpZXc6IExvZ2luVmlld3MuVG90cENoYWxsZW5nZSwgY3JlZGVudGlhbHM6IHRoaXMubW9kZWwgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTbXNDaGFsbGVuZ2UobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgaWYgKC9waW4gaGFzIGFscmVhZHkgYmVlbiBnZW5lcmF0ZWQvaS50ZXN0KG1lc3NhZ2UpKSB7XG4gICAgICB0aGlzLmFsZXJ0Lndhcm5pbmcoXG4gICAgICAgIGdldHRleHQoXG4gICAgICAgICAgJ1RoZSB2ZXJpZmljYXRpb24gY29kZSB3YXMgYWxyZWFkeSBzZW50LiBGb3IgYSBuZXcgdmVyaWZpY2F0aW9uIGNvZGUsIHBsZWFzZSBjbGljayBvbiB0aGUgbGluayBhYm92ZS4nXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuYWxlcnQucmVtb3ZlTGFzdERhbmdlcigpO1xuICAgIHRoaXMub25DaGFuZ2VWaWV3LmVtaXQoeyB2aWV3OiBMb2dpblZpZXdzLlNtc0NoYWxsZW5nZSwgY3JlZGVudGlhbHM6IHRoaXMubW9kZWwgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZU5vUGhvbmVOdW1iZXJQcm92aWRlZCgpIHtcbiAgICB0aGlzLm9uQ2hhbmdlVmlldy5lbWl0KHsgdmlldzogTG9naW5WaWV3cy5Qcm92aWRlUGhvbmVOdW1iZXIsIGNyZWRlbnRpYWxzOiB0aGlzLm1vZGVsIH0pO1xuICAgIHRoaXMuYWxlcnQud2FybmluZyhcbiAgICAgIGdldHRleHQoXG4gICAgICAgICdUd28tZmFjdG9yIGF1dGhlbnRpY2F0aW9uIGhhcyBiZWVuIHR1cm5lZCBvbiBmb3IgdGhpcyBhY2NvdW50LiBQcm92aWRlIHlvdXIgcGhvbmUgbnVtYmVyIGFib3ZlIHRvIHNhdmUgaXQgaW4geW91ciB1c2VyIHByb2ZpbGUgYW5kIHN0YXJ0IHJlY2VpdmluZyB2ZXJpZmljYXRpb24gY29kZXMgdmlhIFNNUy4nXG4gICAgICApXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdlxuICBpZD1cIm9hdXRoXCJcbiAgKm5nSWY9XCJvYXV0aE9wdGlvbnMuaW5pdFJlcXVlc3QgJiYgb2F1dGhPcHRpb25zLnZpc2libGVPbkxvZ2luUGFnZVwiXG4+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tYmxvY2sgYnRuLWxnIGZvcm0tZ3JvdXAgbS10LThcIlxuICAgIHRpdGxlPVwie3sgb2F1dGhPcHRpb25zLmJ1dHRvbk5hbWUgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIChjbGljayk9XCJyZWRpcmVjdFRvT2F1dGgoKVwiXG4gID5cbiAgICA8aVxuICAgICAgY2xhc3M9XCJwdWxsLWxlZnRcIlxuICAgICAgW2M4eUljb25dPVwiJ3NpZ24taW4nXCJcbiAgICA+PC9pPlxuICAgIHt7IG9hdXRoT3B0aW9ucy5idXR0b25OYW1lIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjxmb3JtXG4gIGNsYXNzPVwibG9naW5Gb3JtXCJcbiAgKG5nU3VibWl0KT1cImxvZ2luKClcIlxuICAjbG9naW5Gb3JtPVwibmdGb3JtXCJcbiAgKm5nSWY9XCJzaG93TG9naW5Gb3JtXCJcbiAgbm92YWxpZGF0ZVxuPlxuICA8c3BhblxuICAgIGNsYXNzPVwibGVnZW5kIGZvcm0tYmxvY2sgY2VudGVyXCJcbiAgICAqbmdJZj1cIiEob2F1dGhPcHRpb25zLmluaXRSZXF1ZXN0ICYmIG9hdXRoT3B0aW9ucy52aXNpYmxlT25Mb2dpblBhZ2UpOyBlbHNlIG9yTGVnZW5kXCJcbiAgICB0cmFuc2xhdGVcbiAgPlxuICAgIExvZ2luXG4gIDwvc3Bhbj5cblxuICA8bmctdGVtcGxhdGUgI29yTGVnZW5kPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibGVnZW5kIGZvcm0tYmxvY2sgY2VudGVyXCJcbiAgICAgIHRyYW5zbGF0ZVxuICAgID5cbiAgICAgIG9yXG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPGM4eS1mb3JtLWdyb3VwXG4gICAgY2xhc3M9XCJ0ZW5hbnRGaWVsZFwiXG4gICAgaWQ9XCJ0ZW5hbnRGaWVsZFwiXG4gICAgKm5nSWY9XCJzaG93VGVuYW50XCJcbiAgPlxuICAgIDxsYWJlbFxuICAgICAgZm9yPVwidGVuYW50XCJcbiAgICAgIHRyYW5zbGF0ZVxuICAgID5cbiAgICAgIFRlbmFudCBJRFxuICAgIDwvbGFiZWw+XG4gICAgPGlucHV0XG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICBpZD1cInRlbmFudFwiXG4gICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuJyB8IHRyYW5zbGF0ZSB9fSB0MTIzNDVcIlxuICAgICAgbmFtZT1cInRlbmFudFwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICByZXF1aXJlZFxuICAgICAgWyhuZ01vZGVsKV09XCJtb2RlbC50ZW5hbnRcIlxuICAgICAgI3RlbmFudD1cIm5nTW9kZWxcIlxuICAgICAgYXV0b2NhcGl0YWxpemU9XCJvZmZcIlxuICAgICAgYXV0b2NvcnJlY3Q9XCJvZmZcIlxuICAgICAgcGxhY2Vob2xkZXItbm8tcmVxdWlyZWQtaGludFxuICAgICAgW3JlYWRvbmx5XT1cImxvZ2luVmlld1BhcmFtcy5kaXNhYmxlVGVuYW50XCJcbiAgICAvPlxuICA8L2M4eS1mb3JtLWdyb3VwPlxuICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgPGxhYmVsXG4gICAgICBmb3I9XCJ1c2VyXCJcbiAgICAgIHRyYW5zbGF0ZVxuICAgID5cbiAgICAgIFVzZXJuYW1lXG4gICAgPC9sYWJlbD5cbiAgICA8aW5wdXRcbiAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgIGlkPVwidXNlclwiXG4gICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuIGpvZSBvciBqb2UuZG9lQGV4YW1wbGUuY29tYExPQ0FMSVpFYCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgbmFtZT1cInVzZXJcIlxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgcmVxdWlyZWRcbiAgICAgIFsobmdNb2RlbCldPVwibW9kZWwudXNlclwiXG4gICAgICAjdXNlcj1cIm5nTW9kZWxcIlxuICAgICAgYXV0b2NhcGl0YWxpemU9XCJvZmZcIlxuICAgICAgYXV0b2NvcnJlY3Q9XCJvZmZcIlxuICAgICAgcGxhY2Vob2xkZXItbm8tcmVxdWlyZWQtaGludFxuICAgIC8+XG4gIDwvYzh5LWZvcm0tZ3JvdXA+XG4gIDxjOHktZm9ybS1ncm91cD5cbiAgICA8bGFiZWxcbiAgICAgIGZvcj1cInBhc3N3b3JkXCJcbiAgICAgIHRyYW5zbGF0ZVxuICAgID5cbiAgICAgIFBhc3N3b3JkXG4gICAgPC9sYWJlbD5cbiAgICA8Yzh5LXBhc3N3b3JkLWlucHV0XG4gICAgICBuYW1lPVwicGFzc3dvcmRcIlxuICAgICAgcmVxdWlyZWRcbiAgICAgIFtpZF09XCIncGFzc3dvcmQnXCJcbiAgICAgIFsobmdNb2RlbCldPVwibW9kZWwucGFzc3dvcmRcIlxuICAgICAgW2F1dG9jb21wbGV0ZV09XCInb2ZmJ1wiXG4gICAgPjwvYzh5LXBhc3N3b3JkLWlucHV0PlxuICA8L2M4eS1mb3JtLWdyb3VwPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwXCJcbiAgICAqbmdJZj1cInNob3dCYXNpY0F1dGhcIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICBjbGFzcz1cImM4eS1jaGVja2JveFwiXG4gICAgICB0aXRsZT1cInt7ICdSZW1lbWJlciBtZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgID5cbiAgICAgIDxpbnB1dFxuICAgICAgICBuYW1lPVwicmVtZW1iZXJcIlxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cImxvZ2luU2VydmljZS5yZW1lbWJlck1lXCJcbiAgICAgIC8+XG4gICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICA8c3Bhbj57eyAnUmVtZW1iZXIgbWUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLWxnIGJ0bi1ibG9jayBmb3JtLWdyb3VwXCJcbiAgICB0aXRsZT1cInt7ICdMb2cgaW4nIHwgdHJhbnNsYXRlIH19XCJcbiAgICB0eXBlPVwic3VibWl0XCJcbiAgICBbZGlzYWJsZWRdPVwiIWxvZ2luRm9ybS5mb3JtLnZhbGlkIHx8IGlzTG9hZGluZ1wiXG4gID5cbiAgICB7eyAnTG9nIGluJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbiAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIG0tdC04XCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgYnRuLXNtXCJcbiAgICAgIHRpdGxlPVwie3sgJ0ZvcmdvdCBwYXNzd29yZD8nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKGNsaWNrKT1cIm9uQ2hhbmdlVmlldy5lbWl0KHsgdmlldzogTE9HSU5fVklFV1MuUmVjb3ZlclBhc3N3b3JkIH0pXCJcbiAgICA+XG4gICAgICB7eyAnRm9yZ290IHBhc3N3b3JkPycgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { BasicAuth,
|
|
1
|
+
import { Injectable, Injector, Optional } from '@angular/core';
|
|
2
|
+
import { BasicAuth, BearerAuthFromSessionStorage, CookieAuth, FetchClient, Realtime, TenantLoginOptionsService, TenantService, UserService } from '@c8y/client';
|
|
3
3
|
import { AppStateService } from '../common/ui-state.service';
|
|
4
4
|
import { AlertService } from '../alert/alert.service';
|
|
5
5
|
import { gettext } from '../i18n/gettext';
|
|
@@ -8,7 +8,7 @@ import { TenantUiService } from '../common/tenant-ui.service';
|
|
|
8
8
|
import { switchMap } from 'rxjs/operators';
|
|
9
9
|
import { BehaviorSubject, EMPTY } from 'rxjs';
|
|
10
10
|
import { LocationStrategy } from '@angular/common';
|
|
11
|
-
import { get,
|
|
11
|
+
import { get, isEmpty, isString } from 'lodash-es';
|
|
12
12
|
import { TranslateService } from '@ngx-translate/core';
|
|
13
13
|
import { ModalService } from '../modal/modal.service';
|
|
14
14
|
import { Status } from '../common/status.model';
|
|
@@ -282,13 +282,24 @@ export class LoginService {
|
|
|
282
282
|
* @param credentials The credentials to try to login.
|
|
283
283
|
*/
|
|
284
284
|
async login(auth = this.getAuthStrategy(), credentials) {
|
|
285
|
-
|
|
285
|
+
// To ensure backward compatibility, we need to verify whether the backend supports TFA
|
|
286
|
+
// without requiring the use of /tenant with auth: base64. The tfaSupported flag indicates
|
|
287
|
+
// whether authentication is possible exclusively via OAI-SECURE.
|
|
288
|
+
// TfaSupported flag should be removed during: MTM-62641
|
|
289
|
+
const isOAISecureAndTFAIsSupported = (this.tenantUiService.isOauthInternal(this.loginMode) && this.loginMode.tfaSupported) ||
|
|
290
|
+
false;
|
|
291
|
+
if (isOAISecureAndTFAIsSupported && (await this.switchLoginMode(credentials))) {
|
|
292
|
+
auth = this.cookieAuth;
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
this.client.setAuth(auth);
|
|
296
|
+
}
|
|
286
297
|
const tenantRes = await this.tenant.current({ withParent: true });
|
|
287
298
|
const tenant = tenantRes.data;
|
|
288
299
|
if (credentials) {
|
|
289
300
|
credentials.tenant = tenant.name;
|
|
290
301
|
}
|
|
291
|
-
if (await this.switchLoginMode(credentials)) {
|
|
302
|
+
if (!isOAISecureAndTFAIsSupported && (await this.switchLoginMode(credentials))) {
|
|
292
303
|
auth = this.cookieAuth;
|
|
293
304
|
}
|
|
294
305
|
const userRes = await this.user.current();
|
|
@@ -356,7 +367,7 @@ export class LoginService {
|
|
|
356
367
|
grant_type: 'PASSWORD',
|
|
357
368
|
username: credentials.user,
|
|
358
369
|
password: credentials.password,
|
|
359
|
-
tfa_code: credentials.tfa
|
|
370
|
+
...(credentials.tfa !== undefined && { tfa_code: credentials.tfa })
|
|
360
371
|
});
|
|
361
372
|
return await new FetchClient().fetch(this.getUrlForOauth(credentials), {
|
|
362
373
|
method: 'POST',
|
|
@@ -614,4 +625,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
614
625
|
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1.FetchClient }, { type: i1.BasicAuth }, { type: i1.CookieAuth }, { type: i2.AppStateService }, { type: i1.UserService }, { type: i1.TenantService }, { type: i1.Realtime }, { type: i3.AlertService }, { type: i4.ApiService }, { type: i5.TenantUiService }, { type: i1.TenantLoginOptionsService }, { type: i6.TranslateService }, { type: i7.ModalService }, { type: i8.LocationStrategy, decorators: [{
|
|
615
626
|
type: Optional
|
|
616
627
|
}] }] });
|
|
617
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvbG9naW4vbG9naW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsNEJBQTRCLEVBQzVCLFdBQVcsRUFLWCxRQUFRLEVBQ1IseUJBQXlCLEVBQ3pCLGFBQWEsRUFDYixXQUFXLEVBQ1osTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7QUFFaEQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sWUFBWTtJQStE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QUFDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzs4R0E1cEJVLFlBQVk7a0hBQVosWUFBWTs7MkZBQVosWUFBWTtrQkFEeEIsVUFBVTs7MEJBK0VOLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJhc2ljQXV0aCxcbiAgQ29va2llQXV0aCxcbiAgQmVhcmVyQXV0aEZyb21TZXNzaW9uU3RvcmFnZSxcbiAgRmV0Y2hDbGllbnQsXG4gIElBdXRoZW50aWNhdGlvbixcbiAgSUNyZWRlbnRpYWxzLFxuICBJRmV0Y2hSZXNwb25zZSxcbiAgSVRlbmFudExvZ2luT3B0aW9uLFxuICBSZWFsdGltZSxcbiAgVGVuYW50TG9naW5PcHRpb25zU2VydmljZSxcbiAgVGVuYW50U2VydmljZSxcbiAgVXNlclNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3VpLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2FwaSc7XG5pbXBvcnQgeyBUZW5hbnRVaVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vdGVuYW50LXVpLnNlcnZpY2UnO1xuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBFTVBUWSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTG9jYXRpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBnZXQsIGlzU3RyaW5nLCBpc0VtcHR5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1vZGFsU2VydmljZSB9IGZyb20gJy4uL21vZGFsL21vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RhdHVzIH0gZnJvbSAnLi4vY29tbW9uL3N0YXR1cy5tb2RlbCc7XG5cbi8qKlxuICogU2VydmljZSB0byBtYW5hZ2UgdGhlIGxvZ2luLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTG9naW5TZXJ2aWNlIHtcbiAgcmVtZW1iZXJNZSA9IGZhbHNlO1xuICBUT0tFTl9LRVkgPSAnX3RjeTgnO1xuICBURkFUT0tFTl9LRVkgPSAnVEZBVG9rZW4nO1xuICBsb2dpbk1vZGU6IElUZW5hbnRMb2dpbk9wdGlvbjtcbiAgbWFuYWdlbWVudExvZ2luTW9kZTogSVRlbmFudExvZ2luT3B0aW9uO1xuICBvYXV0aE9wdGlvbnM6IElUZW5hbnRMb2dpbk9wdGlvbjtcbiAgaXNGaXJzdExvZ2luID0gdHJ1ZTtcbiAgR1JFRU5fTUlOX0xFTkdUSF9ERUZBVUxUID0gODtcbiAgYXV0b21hdGljTG9naW5JblByb2dyZXNzJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIC8vIHRzbGludDpkaXNhYmxlOm1heC1saW5lLWxlbmd0aFxuICBFUlJPUl9NRVNTQUdFUyA9IHtcbiAgICBtaW5sZW5ndGg6IGdldHRleHQoJ1Bhc3N3b3JkIG11c3QgaGF2ZSBhdCBsZWFzdCA4IGNoYXJhY3RlcnMgYW5kIG5vIG1vcmUgdGhhbiAzMi4nKSxcbiAgICBwYXNzd29yZF9taXNzbWF0Y2g6IGdldHRleHQoJ1Bhc3N3b3JkcyBkbyBub3QgbWF0Y2guJyksXG4gICAgbWF4bGVuZ3RoOiBnZXR0ZXh0KCdQYXNzd29yZCBtdXN0IGhhdmUgYXQgbGVhc3QgOCBjaGFyYWN0ZXJzIGFuZCBubyBtb3JlIHRoYW4gMzIuJyksXG4gICAgcGFzc3dvcmRfc3RyZW5ndGg6IGdldHRleHQoXG4gICAgICAnWW91ciBwYXNzd29yZCBpcyBub3Qgc3Ryb25nIGVub3VnaC4gUGxlYXNlIGluY2x1ZGUgbnVtYmVycywgbG93ZXIgYW5kIHVwcGVyIGNhc2UgY2hhcmFjdGVycydcbiAgICApLFxuICAgIHJlbW90ZV9lcnJvcjogZ2V0dGV4dCgnU2VydmVyIGVycm9yIG9jY3VycmVkLicpLFxuICAgIGVtYWlsOiBnZXR0ZXh0KCdJbnZhbGlkIGVtYWlsIGFkZHJlc3MuJyksXG4gICAgcGFzc3dvcmRfY2hhbmdlOiBnZXR0ZXh0KCdZb3VyIHBhc3N3b3JkIGlzIGV4cGlyZWQuIFBsZWFzZSBzZXQgYSBuZXcgcGFzc3dvcmQuJyksXG4gICAgcGFzc3dvcmRfcmVzZXRfdG9rZW5fZXhwaXJlZDogZ2V0dGV4dChcbiAgICAgICdQYXNzd29yZCByZXNldCBsaW5rIGV4cGlyZWQuIFBsZWFzZSBlbnRlciB5b3VyIGVtYWlsIGFkZHJlc3MgdG8gcmVjZWl2ZSBhIG5ldyBvbmUuJ1xuICAgICksXG4gICAgdGZhX3Bpbl9pbnZhbGlkOiBnZXR0ZXh0KCdUaGUgY29kZSB5b3UgZW50ZXJlZCBpcyBpbnZhbGlkLiBQbGVhc2UgdHJ5IGFnYWluLicpLFxuICAgIHBhdHRlcm5fbmV3UGFzc3dvcmQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgZ2V0dGV4dChcbiAgICAgICAgJ1Bhc3N3b3JkIG11c3QgaGF2ZSBhdCBsZWFzdCA4IGNoYXJhY3RlcnMgYW5kIG5vIG1vcmUgdGhhbiAzMiBhbmQgY2FuIG9ubHkgY29udGFpbiBsZXR0ZXJzLCBudW1iZXJzIGFuZCBmb2xsb3dpbmcgc3ltYm9sczoge3sgc3ltYm9scyB9fSdcbiAgICAgICksXG4gICAgICB7IHN5bWJvbHM6ICdgfiFAIyQlXiYqKClffCstPT87OlxcJ1wiLC48Pnt9W11cXFxcLycgfVxuICAgICksXG4gICAgaW50ZXJuYXRpb25hbFBob25lTnVtYmVyOiBnZXR0ZXh0KFxuICAgICAgJ011c3QgYmUgYSB2YWxpZCBwaG9uZSBudW1iZXIgKG9ubHkgZGlnaXRzLCBzcGFjZXMsIHNsYXNoZXMgKFwiL1wiKSwgZGFzaGVzIChcIi1cIiksIGFuZCBwbHVzIChcIitcIikgYWxsb3dlZCwgZm9yIGV4YW1wbGU6ICs0OSA5IDg3NiA1NDMgMjEwKS4nXG4gICAgKSxcbiAgICBwaG9uZV9udW1iZXJfZXJyb3I6IGdldHRleHQoJ0NvdWxkIG5vdCB1cGRhdGUgcGhvbmUgbnVtYmVyLicpLFxuICAgIHBpbkFscmVhZHlTZW50OiBnZXR0ZXh0KFxuICAgICAgJ1RoZSB2ZXJpZmljYXRpb24gY29kZSB3YXMgYWxyZWFkeSBzZW50LiBGb3IgYSBuZXcgdmVyaWZpY2F0aW9uIGNvZGUsIHBsZWFzZSBjbGljayBvbiB0aGUgbGluayBhYm92ZS4nXG4gICAgKSxcbiAgICBwYXNzd29yZENvbmZpcm06IGdldHRleHQoJ1Bhc3N3b3JkcyBkbyBub3QgbWF0Y2guJyksXG4gICAgdGZhRXhwaXJlZDogZ2V0dGV4dCgnVHdvLWZhY3RvciBhdXRoZW50aWNhdGlvbiB0b2tlbiBleHBpcmVkLicpXG4gIH07XG4gIC8vIHRzbGludDplbmFibGU6bWF4LWxpbmUtbGVuZ3RoXG5cbiAgcHJpdmF0ZSBTVUNDRVNTX01FU1NBR0VTID0ge1xuICAgIHBhc3N3b3JkX2NoYW5nZWQ6IGdldHRleHQoJ1Bhc3N3b3JkIGNoYW5nZWQuIFlvdSBjYW4gbm93IGxvZyBpbiB1c2luZyBuZXcgcGFzc3dvcmQuJyksXG4gICAgcGFzc3dvcmRfcmVzZXRfcmVxdWVzdGVkOiBnZXR0ZXh0KFxuICAgICAgJ1Bhc3N3b3JkIHJlc2V0IHJlcXVlc3QgaGFzIGJlZW4gc2VudC4gUGxlYXNlIGNoZWNrIHlvdXIgZW1haWwuJ1xuICAgICksXG4gICAgcmVzZW5kX3NtczogZ2V0dGV4dCgnVmVyaWZpY2F0aW9uIGNvZGUgU01TIHJlc2VudC4nKSxcbiAgICBzZW5kX3NtczogZ2V0dGV4dCgnVmVyaWZpY2F0aW9uIGNvZGUgU01TIHNlbnQuJylcbiAgfTtcblxuICBwcml2YXRlIHBhc3N3b3JkU3RyZW5ndGhTZXR0aW5nID0ge1xuICAgIGVuZm9yY2VQYXNzd29yZFN0cmVuZ3RoOiBmYWxzZSxcbiAgICBncmVlbk1pbkxlbmd0aDogdGhpcy5HUkVFTl9NSU5fTEVOR1RIX0RFRkFVTFQsXG4gICAgcGFzc3dvcmRTdHJlbmd0aFZhbGlkaXR5OiBmYWxzZVxuICB9O1xuXG4gIHByaXZhdGUgbG9jYWxob3N0UmVnRXhwID0gbmV3IFJlZ0V4cCgnbG9jYWxob3N0Jyk7XG4gIHByaXZhdGUgbG9jYWxob3N0SXBSZWdFeHAgPSBuZXcgUmVnRXhwKCcxMjcuMC4wLjEnKTtcbiAgcHJpdmF0ZSBzaG93VGVuYW50UmVnRXhwID0gbmV3IFJlZ0V4cCgnc2hvd1RlbmFudCcpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgY2xpZW50OiBGZXRjaENsaWVudCxcbiAgICBwcml2YXRlIGJhc2ljQXV0aDogQmFzaWNBdXRoLFxuICAgIHByaXZhdGUgY29va2llQXV0aDogQ29va2llQXV0aCxcbiAgICBwcml2YXRlIHVpOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIHRlbmFudDogVGVuYW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWx0aW1lOiBSZWFsdGltZSxcbiAgICBwcml2YXRlIGFsZXJ0OiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcGk6IEFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0ZW5hbnRVaVNlcnZpY2U6IFRlbmFudFVpU2VydmljZSxcbiAgICBwcml2YXRlIHRlbmFudExvZ2luT3B0aW9uc1NlcnZpY2U6IFRlbmFudExvZ2luT3B0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb25TdHJhdGVneVxuICApIHtcbiAgICB0aGlzLmF1dG9Mb2dvdXQoKTtcbiAgICB0aGlzLmluaXRMb2dpbk9wdGlvbnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHRlbmFudC5cbiAgICogQHJldHVybiBUaGUgdGVuYW50IG5hbWUuXG4gICAqL1xuICBnZXRUZW5hbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LnRlbmFudDtcbiAgfVxuXG4gIGluaXRMb2dpbk9wdGlvbnMoKSB7XG4gICAgY29uc3QgbG9naW5PcHRpb25zID0gdGhpcy51aS5zdGF0ZS5sb2dpbk9wdGlvbnMgfHwgW107XG4gICAgdGhpcy5sb2dpbk1vZGUgPSB0aGlzLnRlbmFudFVpU2VydmljZS5nZXRQcmVmZXJyZWRMb2dpbk9wdGlvbihsb2dpbk9wdGlvbnMpO1xuICAgIHRoaXMub2F1dGhPcHRpb25zID1cbiAgICAgIHRoaXMudGVuYW50VWlTZXJ2aWNlLmdldE9hdXRoMk9wdGlvbihsb2dpbk9wdGlvbnMpIHx8ICh7fSBhcyBJVGVuYW50TG9naW5PcHRpb24pO1xuICB9XG5cbiAgcmVkaXJlY3RUb09hdXRoKCkge1xuICAgIGNvbnN0IHsgaW5pdFJlcXVlc3QsIGZsb3dDb250cm9sbGVkQnlVSSB9ID0gdGhpcy5vYXV0aE9wdGlvbnM7XG4gICAgY29uc3QgZnVsbFBhdGggPSBgJHt3aW5kb3cubG9jYXRpb24ub3JpZ2lufSR7d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lfWA7XG4gICAgY29uc3QgcmVkaXJlY3RVcmwgPSBlbmNvZGVVUklDb21wb25lbnQoZnVsbFBhdGgpO1xuICAgIGNvbnN0IG9yaWdpblVyaVBhcmFtID0gYCR7aW5pdFJlcXVlc3QuaW5jbHVkZXMoJz8nKSA/ICcmJyA6ICc/J31vcmlnaW5Vcmk9JHtyZWRpcmVjdFVybH1gO1xuICAgIGNvbnN0IHVybE9iamVjdCA9IG5ldyBVUkwoaW5pdFJlcXVlc3QpO1xuXG4gICAgaWYgKGZsb3dDb250cm9sbGVkQnlVSSkge1xuICAgICAgdGhpcy5jbGllbnRcbiAgICAgICAgLmZldGNoKGAvdGVuYW50L29hdXRoJHt1cmxPYmplY3Quc2VhcmNofSR7b3JpZ2luVXJpUGFyYW19YClcbiAgICAgICAgLnRoZW4ocmVzID0+IHRoaXMuaGFuZGxlRXJyb3JTdGF0dXNDb2RlcyhyZXMpKVxuICAgICAgICAudGhlbihyZXMgPT4gcmVzLmpzb24oKSlcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiAod2luZG93LmxvY2F0aW9uLmhyZWYgPSByZXMucmVkaXJlY3RUbykpXG4gICAgICAgIC5jYXRjaChleCA9PiB0aGlzLnNob3dTc29FcnJvcihleCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke2luaXRSZXF1ZXN0fSR7b3JpZ2luVXJpUGFyYW19YDtcbiAgICB9XG4gIH1cblxuICBsb2dpbkJ5U3NvKHNlc3Npb25TdGF0ZTogc3RyaW5nLCBjb2RlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBBY2NlcHQ6ICd0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sJ1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50XG4gICAgICAuZmV0Y2goYC90ZW5hbnQvb2F1dGg/c2Vzc2lvbl9zdGF0ZT0ke3Nlc3Npb25TdGF0ZX0mY29kZT0ke2NvZGV9YCwgcGFyYW1zKVxuICAgICAgLnRoZW4ocmVzID0+IHRoaXMuaGFuZGxlRXJyb3JTdGF0dXNDb2RlcyhyZXMpKVxuICAgICAgLmNhdGNoKGV4ID0+IHtcbiAgICAgICAgdGhpcy5zaG93U3NvRXJyb3IoZXgpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgYXV0b0xvZ291dCgpIHtcbiAgICBjb25zdCBlcnJvclBhdHRlcm4gPSAvaW52YWxpZFxcc2NyZWRlbnRpYWxzLipwaW4uKmdlbmVyYXRlL2k7XG4gICAgY29uc3QgaXNUZmFFeHBpcmVkID0gZGF0YSA9PlxuICAgICAgZGF0YSAmJiB0eXBlb2YgZGF0YS5tZXNzYWdlID09PSAnc3RyaW5nJyAmJiBlcnJvclBhdHRlcm4udGVzdChkYXRhLm1lc3NhZ2UpO1xuICAgIHRoaXMudWkuY3VycmVudFVzZXJcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAodSA9PlxuICAgICAgICAgIHUgPyB0aGlzLmFwaS5ob29rUmVzcG9uc2UoKHsgcmVzcG9uc2UgfSkgPT4gcmVzcG9uc2Uuc3RhdHVzID09PSA0MDEpIDogRU1QVFlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShhc3luYyAoYXBpQ2FsbDogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgcmVzcG9uc2UgfSA9IGFwaUNhbGw7XG4gICAgICAgIGxldCB3aWxsTG9nb3V0ID0gZmFsc2U7XG4gICAgICAgIGlmIChpc1RmYUV4cGlyZWQocmVzcG9uc2UuZGF0YSkpIHtcbiAgICAgICAgICB3aWxsTG9nb3V0ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodHlwZW9mIHJlc3BvbnNlLmpzb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5jbG9uZSgpLmpzb24oKTtcbiAgICAgICAgICAgIGlmIChpc1RmYUV4cGlyZWQoZGF0YSkpIHtcbiAgICAgICAgICAgICAgd2lsbExvZ291dCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh3aWxsTG9nb3V0KSB7XG4gICAgICAgICAgdGhpcy5sb2dvdXQoZmFsc2UpO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5hbGVydC5kYW5nZXIodGhpcy5FUlJPUl9NRVNTQUdFUy50ZmFFeHBpcmVkKSwgNTAwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgbWluaW1hbCBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IGEgcGFzc3dvcmQgc2hvdWxkIGhhdmUgdG8gYmUgY29uc2lkZXJlZCBhIOKAnGdyZWVu4oCdIHN0cm9uZyBvbmUuXG4gICAqIEByZXR1cm4gVGhlIG1pbiBsZW5ndGggZm9yIHBhc3N3b3JkIG9yIGRlZmF1bHQgdmFsdWUuXG4gICAqL1xuICBhc3luYyBnZXRHcmVlbk1pbkxlbmd0aCgpIHtcbiAgICBjb25zdCB7IGdyZWVuTWluTGVuZ3RoIH0gPSAoYXdhaXQgdGhpcy5nZXRCYXNpY0F1dGhMb2dpbk9wdGlvbigpKSB8fCB7IGdyZWVuTWluTGVuZ3RoOiBudWxsIH07XG4gICAgdGhpcy5wYXNzd29yZFN0cmVuZ3RoU2V0dGluZy5ncmVlbk1pbkxlbmd0aCA9IGdyZWVuTWluTGVuZ3RoIHx8IHRoaXMuR1JFRU5fTUlOX0xFTkdUSF9ERUZBVUxUO1xuICAgIHJldHVybiB0aGlzLnBhc3N3b3JkU3RyZW5ndGhTZXR0aW5nLmdyZWVuTWluTGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBwYXNzd29yZCBzdHJlbmd0aCBpcyBlbmZvcmNlZCBmb3Igc3lzdGVtXG4gICAqIGJ5IHJldHJpZXZpbmcgdmFsdWUgb2YgYGVuZm9yY2VTdHJlbmd0aGAgcHJvcGVydHkgZnJvbSBsb2dpbk9wdGlvbnMgcmVzcG9uc2VcbiAgICogQHBhcmFtIHJlZnJlc2ggYm9vbGVhbiB1c2VkIHRvIHJlZnJlc2ggdGhlIGFwcCBzdGF0ZSB3aGVyZSByZXN1bHQgb2YgbG9naW5PcHRpb25zIHJlc3BvbnNlIGlzIHN0b3JlZC5cbiAgICogSWYgZmFsc2UsIGl0IHRha2VzIHZhbHVlIGZyb20gbWVtb3J5LFxuICAgKiBpZiB0cnVlLCBpdCByZWZyZXNoIHRoZSBhcHAgc3RhdGUgdmFsdWUgYW5kIHRoZW4gcmV0cml2ZXMgZGF0YS5cbiAgICogQHJldHVybiBib29sZWFuIHZhbHVlLCB0cnVlIGlmIGVuZm9yY2VkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBhc3luYyBnZXRFbmZvcmNlUGFzc3dvcmRTdHJlbmd0aChyZWZyZXNoPykge1xuICAgIHJldHVybiB0aGlzLmdldEJhc2ljQXV0aExvZ2luT3B0aW9uKHJlZnJlc2gpLnRoZW4obG9naW5PcHRpb24gPT4ge1xuICAgICAgY29uc3QgZW5mb3JjZVBhc3N3b3JkU3RyZW5ndGggPSBnZXQobG9naW5PcHRpb24sICdlbmZvcmNlU3RyZW5ndGgnKTtcbiAgICAgIGlmIChpc1N0cmluZyhlbmZvcmNlUGFzc3dvcmRTdHJlbmd0aCkpIHtcbiAgICAgICAgdGhpcy5wYXNzd29yZFN0cmVuZ3RoU2V0dGluZy5lbmZvcmNlUGFzc3dvcmRTdHJlbmd0aCA9XG4gICAgICAgICAgZW5mb3JjZVBhc3N3b3JkU3RyZW5ndGggPT09ICd0cnVlJyA/IHRydWUgOiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGFzc3dvcmRTdHJlbmd0aFNldHRpbmcuZW5mb3JjZVBhc3N3b3JkU3RyZW5ndGggPSAhIWVuZm9yY2VQYXNzd29yZFN0cmVuZ3RoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMucGFzc3dvcmRTdHJlbmd0aFNldHRpbmcuZW5mb3JjZVBhc3N3b3JkU3RyZW5ndGg7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHBhc3N3b3JkIHN0cmVuZ3RoIGlzIGVuZm9yY2VkIGZvciBwYXJ0aWN1bGFyIHRlbmFudFxuICAgKiBieSByZXRyaWV2aW5nIHZhbHVlIG9mIGBzdHJlbmd0aFZhbGlkaXR5YCBwcm9wZXJ0eSBmcm9tIGxvZ2luT3B0aW9ucyByZXNwb25zZVxuICAgKiBAcGFyYW0gcmVmcmVzaCBib29sZWFuIHVzZWQgdG8gcmVmcmVzaCB0aGUgYXBwIHN0YXRlIHdoZXJlIHJlc3VsdCBvZiBsb2dpbk9wdGlvbnMgcmVzcG9uc2UgaXMgc3RvcmVkLlxuICAgKiBJZiBmYWxzZSwgaXQgdGFrZXMgdmFsdWUgZnJvbSBtZW1vcnksXG4gICAqIGlmIHRydWUsIGl0IHJlZnJlc2ggdGhlIGFwcCBzdGF0ZSB2YWx1ZSBhbmQgdGhlbiByZXRyaXZlcyBkYXRhLlxuICAgKiBAcmV0dXJuIGJvb2xlYW4gdmFsdWUsIHRydWUgaWYgZW5mb3JjZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGFzeW5jIGdldFBhc3N3b3JkU3RyZW5ndGhWYWxpZGl0eShyZWZyZXNoPykge1xuICAgIHJldHVybiB0aGlzLmdldEJhc2ljQXV0aExvZ2luT3B0aW9uKHJlZnJlc2gpLnRoZW4obG9naW5PcHRpb24gPT4ge1xuICAgICAgY29uc3Qgc3RyZW5ndGhWYWxpZGl0eSA9IGdldChsb2dpbk9wdGlvbiwgJ3N0cmVuZ3RoVmFsaWRpdHknKTtcbiAgICAgIGlmIChpc1N0cmluZyhzdHJlbmd0aFZhbGlkaXR5KSkge1xuICAgICAgICB0aGlzLnBhc3N3b3JkU3RyZW5ndGhTZXR0aW5nLnBhc3N3b3JkU3RyZW5ndGhWYWxpZGl0eSA9XG4gICAgICAgICAgc3RyZW5ndGhWYWxpZGl0eSA9PT0gJ3RydWUnID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wYXNzd29yZFN0cmVuZ3RoU2V0dGluZy5wYXNzd29yZFN0cmVuZ3RoVmFsaWRpdHkgPSAhIXN0cmVuZ3RoVmFsaWRpdHk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5wYXNzd29yZFN0cmVuZ3RoU2V0dGluZy5wYXNzd29yZFN0cmVuZ3RoVmFsaWRpdHk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRnVuY3Rpb24gZGV0ZXJtaW5lcyBpZiBlbmZvcmNlZCBzdHJlbmd0aCBjaGVja3Mgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIGN1cnJlbnQgdGVuYW50XG4gICAqIGJhc2VkIG9uIHByb3BlcnRpZXMgcmV0cmlldmVkIGZyb20gbG9naW5PcHRpb25zXG4gICAqIEBwYXJhbSBvcHRpb25zIG9iamVjdCBjb250YWluaW5nIHNwZWNpZmljIG9wdGlvbnM6XG4gICAqICAgIC0ge3JlZnJlc2g6IHRydWV9IC0gcmVmcmVzaGVzIHZhbHVlcyBvZiBhcHAgc3RhdGUgYW5kIHJldHVybnMgZnJlc2ggdmFsdWVzIGFzIHJlc3VsdCBvZiBjYWxsXG4gICAqIEByZXR1cm4gYm9vbGVhbiB2YWx1ZSwgdHJ1ZSBpZiBzdHJlbmd0aCBpcyBlbmZvcmNlZCBmb3IgdGVuYW50LCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBhc3luYyBnZXRQYXNzd29yZFN0cmVuZ3RoRW5mb3JjZWQob3B0aW9ucz8pIHtcbiAgICBjb25zdCByZWZyZXNoID0gb3B0aW9ucyAmJiBvcHRpb25zLnJlZnJlc2g7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFtcbiAgICAgIHRoaXMuZ2V0RW5mb3JjZVBhc3N3b3JkU3RyZW5ndGgocmVmcmVzaCksXG4gICAgICB0aGlzLmdldFBhc3N3b3JkU3RyZW5ndGhWYWxpZGl0eShyZWZyZXNoKVxuICAgIF0pLnRoZW4odmFsdWVzID0+IHtcbiAgICAgIGNvbnN0IFtlbmZvcmNlUGFzc3dvcmRTdHJlbmd0aCwgcGFzc3dvcmRTdHJlbmd0aFZhbGlkaXR5XSA9IHZhbHVlcztcbiAgICAgIHJldHVybiBlbmZvcmNlUGFzc3dvcmRTdHJlbmd0aCB8fCBwYXNzd29yZFN0cmVuZ3RoVmFsaWRpdHk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIGFsbCBiYWNrZW5kIGVycm9ycy5cbiAgICovXG4gIGNsZWFuTWVzc2FnZXMoKSB7XG4gICAgdGhpcy5hbGVydC5jbGVhckFsbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgc3VjY2VzcyBtZXNzYWdlXG4gICAqIEBwYXJhbSBzdWNjZXNzS2V5IFRoZSBrZXkgb2YgdGhlIHN1Y2Nlc3MgbWVzc2FnZSBhcyB1c2VkIGluIFNVQ0NFU1NfTUVTU0FHRVNcbiAgICovXG4gIGFkZFN1Y2Nlc3NNZXNzYWdlKHN1Y2Nlc3NLZXk6IHN0cmluZykge1xuICAgIGNvbnN0IHN1Y2Nlc3NNZXNzYWdlID0gdGhpcy5TVUNDRVNTX01FU1NBR0VTW3N1Y2Nlc3NLZXldO1xuICAgIGlmIChzdWNjZXNzTWVzc2FnZSkge1xuICAgICAgdGhpcy5hbGVydC5hZGQoe1xuICAgICAgICB0ZXh0OiBzdWNjZXNzTWVzc2FnZSxcbiAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICB0aW1lb3V0OiAwXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCBzdHJhdGVneS4gRGVmYXVsdHMgdG8gY29va2llLCBpZiBhIHRva2VuXG4gICAqIGlzIGZvdW5kIGluIGxvY2FsIG9yIHNlc3Npb24gc3RvcmFnZSB3ZSBzd2l0Y2ggdG8gYmFzaWMgYXV0aC5cbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYXV0aCBzdHJhdGVneS5cbiAgICovXG4gIGdldEF1dGhTdHJhdGVneSgpOiBJQXV0aGVudGljYXRpb24ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhdXRoU3RyYXRlZ3kgPSBuZXcgQmVhcmVyQXV0aEZyb21TZXNzaW9uU3RvcmFnZSgpO1xuICAgICAgY29uc29sZS5sb2coYFVzaW5nIEJlYXJlckF1dGhGcm9tU2Vzc2lvblN0b3JhZ2VgKTtcbiAgICAgIHJldHVybiBhdXRoU3RyYXRlZ3k7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgICBsZXQgYXV0aFN0cmF0ZWd5OiBJQXV0aGVudGljYXRpb24gPSB0aGlzLmNvb2tpZUF1dGg7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmdldFN0b3JlZFRva2VuKCk7XG4gICAgY29uc3QgdGZhID0gdGhpcy5nZXRTdG9yZWRUZmFUb2tlbigpO1xuICAgIGlmICh0b2tlbikge1xuICAgICAgYXV0aFN0cmF0ZWd5ID0gdGhpcy5iYXNpY0F1dGg7XG4gICAgICB0aGlzLnNldENyZWRlbnRpYWxzKHsgdG9rZW4sIHRmYSB9LCB0aGlzLmJhc2ljQXV0aCk7XG4gICAgfVxuICAgIHJldHVybiBhdXRoU3RyYXRlZ3k7XG4gIH1cblxuICAvKipcbiAgICogRm9yY2VzIHRoZSB1c2Ugb2YgYmFzaWMgYXV0aCBhcyBzdHJhdGVneSB3aXRoIHRoaXMgY3JlZGVudGlhbHMuXG4gICAqIEBwYXJhbSBjcmVkZW50aWFscyBUaGUgY3JlZGVudGlhbHMgdG8gdXNlLlxuICAgKi9cbiAgdXNlQmFzaWNBdXRoKGNyZWRlbnRpYWxzOiBJQ3JlZGVudGlhbHMpIHtcbiAgICB0aGlzLnNldENyZWRlbnRpYWxzKGNyZWRlbnRpYWxzLCB0aGlzLmJhc2ljQXV0aCk7XG4gICAgcmV0dXJuIHRoaXMuYmFzaWNBdXRoO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWVzIHRvIGxvZ2luIGEgdXNlciB3aXRoIHRoZSBnaXZlbiBjcmVkZW50aWFscy5cbiAgICogSWYgc3VjY2Vzc2Z1bCwgdGhlIGN1cnJlbnQgdGVuYW50IGFuZCB1c2VyIGlzIHNldC4gSWYgbm90IGFuIGVycm9yXG4gICAqIGlzIHRocm93bi4gSXQgYWxzbyB2ZXJpZmllcyBpZiB0aGUgdXNlciBpcyBhbGxvd2VkIHRvIG9wZW4gdGhlXG4gICAqIGN1cnJlbnQgYXBwLlxuICAgKiBAcGFyYW0gYXV0aCBUaGUgYXV0aGVudGljYXRpb24gc3RyYXRlZ3kgdXNlZC5cbiAgICogQHBhcmFtIGNyZWRlbnRpYWxzIFRoZSBjcmVkZW50aWFscyB0byB0cnkgdG8gbG9naW4uXG4gICAqL1xuICBhc3luYyBsb2dpbihhdXRoOiBJQXV0aGVudGljYXRpb24gPSB0aGlzLmdldEF1dGhTdHJhdGVneSgpLCBjcmVkZW50aWFscz86IElDcmVkZW50aWFscykge1xuICAgIHRoaXMuY2xpZW50LnNldEF1dGgoYXV0aCk7XG5cbiAgICBjb25zdCB0ZW5hbnRSZXMgPSBhd2FpdCB0aGlzLnRlbmFudC5jdXJyZW50KHsgd2l0aFBhcmVudDogdHJ1ZSB9KTtcbiAgICBjb25zdCB0ZW5hbnQgPSB0ZW5hbnRSZXMuZGF0YTtcblxuICAgIGlmIChjcmVkZW50aWFscykge1xuICAgICAgY3JlZGVudGlhbHMudGVuYW50ID0gdGVuYW50Lm5hbWU7XG4gICAgfVxuXG4gICAgaWYgKGF3YWl0IHRoaXMuc3dpdGNoTG9naW5Nb2RlKGNyZWRlbnRpYWxzKSkge1xuICAgICAgYXV0aCA9IHRoaXMuY29va2llQXV0aDtcbiAgICB9XG5cbiAgICBjb25zdCB1c2VyUmVzID0gYXdhaXQgdGhpcy51c2VyLmN1cnJlbnQoKTtcbiAgICBjb25zdCB1c2VyID0gdXNlclJlcy5kYXRhO1xuICAgIGF3YWl0IHRoaXMudmVyaWZ5QXBwQWNjZXNzKCk7XG5cbiAgICBjb25zdCBzdXBwb3J0VXNlck5hbWUgPSB0aGlzLmdldFN1cHBvcnRVc2VyTmFtZShjcmVkZW50aWFscyk7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLnNldENyZWRlbnRpYWxzKFxuICAgICAge1xuICAgICAgICB0ZW5hbnQ6IHRlbmFudC5uYW1lLFxuICAgICAgICB1c2VyOiAoc3VwcG9ydFVzZXJOYW1lID8gYCR7c3VwcG9ydFVzZXJOYW1lfSRgIDogJycpICsgdXNlci51c2VyTmFtZVxuICAgICAgfSxcbiAgICAgIGF1dGhcbiAgICApO1xuXG4gICAgaWYgKHRva2VuKSB7XG4gICAgICB0aGlzLnN0b3JlQmFzaWNBdXRoVG9rZW4odG9rZW4pO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuYXV0aEZ1bGZpbGxlZCh0ZW5hbnQsIHVzZXIsIHN1cHBvcnRVc2VyTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgdGVuYW50LCB1c2VyIGFuZCBzdXBwb3J0IHVzZXIgaW5mbyB0byB0aGUgYXBwIHN0YXRlLlxuICAgKiBAcGFyYW0gdGVuYW50IFRoZSBjdXJyZW50IHRlbmFudCBvYmplY3QuXG4gICAqIEBwYXJhbSB1c2VyIFRoZSBjdXJyZW50IHVzZXIgb2JqZWN0LlxuICAgKiBAcGFyYW0gc3VwcG9ydFVzZXJOYW1lIFRoZSBjdXJyZW50IHN1cHBvcnQgdXNlciBuYW1lLlxuICAgKi9cbiAgYXN5bmMgYXV0aEZ1bGZpbGxlZCh0ZW5hbnQ/LCB1c2VyPywgc3VwcG9ydFVzZXJOYW1lPykge1xuICAgIGlmICghdGVuYW50KSB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMudGVuYW50LmN1cnJlbnQoeyB3aXRoUGFyZW50OiB0cnVlIH0pO1xuICAgICAgdGVuYW50ID0gZGF0YTtcbiAgICAgIHRoaXMuY2xpZW50LnRlbmFudCA9IHRlbmFudC5uYW1lO1xuICAgIH1cblxuICAgIGlmICghdXNlcikge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLnVzZXIuY3VycmVudCgpO1xuICAgICAgdXNlciA9IGRhdGE7XG4gICAgfVxuXG4gICAgaWYgKCFzdXBwb3J0VXNlck5hbWUpIHtcbiAgICAgIHN1cHBvcnRVc2VyTmFtZSA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy51aS5zZXRVc2VyKHsgdXNlciwgc3VwcG9ydFVzZXJOYW1lIH0pO1xuICAgIHRoaXMudWkuY3VycmVudFRlbmFudC5uZXh0KHRlbmFudCk7XG4gIH1cblxuICAvKipcbiAgICogU3dpdGNoIHRoZSBsb2dpbiBtb2RlIHRvIENvb2tpZUF1dGggaWYgdGhlXG4gICAqIHVzZXIgaGFzIGNvbmZpZ3VyZWQgdG8gdXNlIGl0IGluIGxvZ2luT3B0aW9ucy5cbiAgICogQHBhcmFtIGNyZWRlbnRpYWxzIFRoZSBjcmVkZW50aWFscyBmb3IgdGhhdCBsb2dpblxuICAgKi9cbiAgYXN5bmMgc3dpdGNoTG9naW5Nb2RlKGNyZWRlbnRpYWxzPzogSUNyZWRlbnRpYWxzKSB7XG4gICAgY29uc3QgaXNQYXNzd29yZEdyYW50TG9naW4gPSBhd2FpdCB0aGlzLmlzUGFzc3dvcmRHcmFudExvZ2luKGNyZWRlbnRpYWxzKTtcbiAgICBpZiAoaXNQYXNzd29yZEdyYW50TG9naW4gJiYgY3JlZGVudGlhbHMpIHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVPYXV0aFRva2VuKGNyZWRlbnRpYWxzKTtcbiAgICAgIGlmICghKHJlcyBhcyBSZXNwb25zZSkub2spIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzLmpzb24oKTtcbiAgICAgICAgICB0aHJvdyB7IHJlcywgZGF0YSB9O1xuICAgICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICAgIHRocm93IGV4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmNsaWVudC5zZXRBdXRoKHRoaXMuY29va2llQXV0aCk7XG4gICAgICB0aGlzLmNsZWFuTG9jYWxTdG9yYWdlKCk7XG4gICAgICB0aGlzLmJhc2ljQXV0aC5sb2dvdXQoKTtcbiAgICB9XG4gICAgcmV0dXJuIGlzUGFzc3dvcmRHcmFudExvZ2luO1xuICB9XG5cbiAgYXN5bmMgZ2VuZXJhdGVPYXV0aFRva2VuKGNyZWRlbnRpYWxzPzogSUNyZWRlbnRpYWxzKSB7XG4gICAgaWYgKChhd2FpdCB0aGlzLmlzUGFzc3dvcmRHcmFudExvZ2luKGNyZWRlbnRpYWxzKSkgJiYgY3JlZGVudGlhbHMpIHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoe1xuICAgICAgICBncmFudF90eXBlOiAnUEFTU1dPUkQnLFxuICAgICAgICB1c2VybmFtZTogY3JlZGVudGlhbHMudXNlcixcbiAgICAgICAgcGFzc3dvcmQ6IGNyZWRlbnRpYWxzLnBhc3N3b3JkLFxuICAgICAgICB0ZmFfY29kZTogY3JlZGVudGlhbHMudGZhXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhd2FpdCBuZXcgRmV0Y2hDbGllbnQoKS5mZXRjaCh0aGlzLmdldFVybEZvck9hdXRoKGNyZWRlbnRpYWxzKSwge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYm9keTogcGFyYW1zLnRvU3RyaW5nKCksXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04J1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpc1Bhc3N3b3JkR3JhbnRMb2dpbihjcmVkZW50aWFscz86IElDcmVkZW50aWFscykge1xuICAgIGxldCBsb2dpbk1vZGUgPSB0aGlzLmxvZ2luTW9kZTtcblxuICAgIGlmICh0aGlzLmlzU3VwcG9ydFVzZXIoY3JlZGVudGlhbHMpKSB7XG4gICAgICBpZiAoIXRoaXMubWFuYWdlbWVudExvZ2luTW9kZSkge1xuICAgICAgICB0aGlzLm1hbmFnZW1lbnRMb2dpbk1vZGUgPSBhd2FpdCB0aGlzLmdldE1hbmFnZW1lbnRMb2dpbk1vZGUoKTtcbiAgICAgIH1cbiAgICAgIGxvZ2luTW9kZSA9IHRoaXMubWFuYWdlbWVudExvZ2luTW9kZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50ZW5hbnRVaVNlcnZpY2UuaXNPYXV0aEludGVybmFsKGxvZ2luTW9kZSk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpZXMgaWYgdGhlIHByb3ZpZGVkIGNyZWRlbnRpYWxzIHVzZSBhIHN1cHBvcnQgdXNlciB0byBsb2cgaW4gb3Igbm90LlxuICAgKiBAcGFyYW0gY3JlZGVudGlhbHMgQ3JlZGVudGlhbHMgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIHRydWUgaWYgdXNlciBpcyBhIHN1cHBvcnQgdXNlci5cbiAgICovXG4gIGlzU3VwcG9ydFVzZXIoY3JlZGVudGlhbHM/OiBJQ3JlZGVudGlhbHMpOiBib29sZWFuIHtcbiAgICByZXR1cm4gY3JlZGVudGlhbHMgJiYgY3JlZGVudGlhbHMudXNlci5pbmNsdWRlcygnJCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIGlmIHRoZSB0ZW5hbnQgaW5wdXQgZmllbGQgc2hvdWxkIGJlIHNob3duXG4gICAqIG9yIG5vdC5cbiAgICogQHJldHVybnMgSWYgdHJ1ZSwgc2hvdyB0aGUgdGVuYW50IGlucHV0LlxuICAgKi9cbiAgc2hvd1RlbmFudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMudWkuc3RhdGUubG9naW5PcHRpb25zIHx8IHRoaXMuaXNMb2NhbCgpIHx8IHRoaXMuaXNTaG93VGVuYW50KCk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpZXMgaWYgdGhlIHRlbmFudCBzZXR1cCBzaG91bGQgYmUgc2hvd25cbiAgICogb3Igbm90LlxuICAgKiBAcmV0dXJucyBJZiB0cnVlLCBzaG93IHRoZSB0ZW5hbnQgaW5wdXQuXG4gICAqL1xuICBzaG93VGVuYW50U2V0dXAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnVpLnN0YXRlLmxvZ2luT3B0aW9ucyAmJiAhdGhpcy5pc0xvY2FsKCk7XG4gIH1cblxuICAvKipcbiAgICogTG9ncyB0aGUgdXNlciBvdXRcbiAgICogQHBhcmFtIHJlbG9hZCBJZiBzZXQgdG8gZmFsc2UsIHRoZSBwYWdlIHdpbGwgbm90IHJlbG9hZFxuICAgKi9cbiAgYXN5bmMgbG9nb3V0KHJlbG9hZCA9IHRydWUpIHtcbiAgICBsZXQgcmVzRGF0YSA9IG51bGw7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IFssIGNvb2tpZVJlc10gPSBhd2FpdCB0aGlzLnJlc2V0KCk7XG4gICAgICByZXNEYXRhID0gYXdhaXQgY29va2llUmVzLmpzb24oKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgdGhpcy5hbGVydC5yZW1vdmVMYXN0RGFuZ2VyKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChyZXNEYXRhICYmIHJlc0RhdGEudXJsKSB7XG4gICAgICAgIHRoaXMucmVkaXJlY3QocmVzRGF0YS51cmwpO1xuICAgICAgfSBlbHNlIGlmIChyZWxvYWQpIHtcbiAgICAgICAgdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUoe30sICcnLCAnJywgJycpO1xuICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgc3RvcmVkIGF1dGgtZGF0YVxuICAgKi9cbiAgYXN5bmMgcmVzZXQoKSB7XG4gICAgdGhpcy5jbGVhbkxvY2FsU3RvcmFnZSgpO1xuICAgIHRoaXMuY2xlYW5TZXNzaW9uU3RvcmFnZSgpO1xuICAgIHRoaXMucmVhbHRpbWUuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMudWkuY3VycmVudFVzZXIubmV4dChudWxsKTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoW3RoaXMuYmFzaWNBdXRoLmxvZ291dCgpLCB0aGlzLmNvb2tpZUF1dGgubG9nb3V0KCldKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyB0aGUgVEZBIHRva2VuIHRvIGxvY2FsIG9yIHNlc3Npb24gc3RvcmFnZS5cbiAgICogQHBhcmFtIHRmYVRva2VuIFRoZSB0ZmEgdG9rZW4gdG8gc2F2ZS5cbiAgICogQHBhcmFtIHN0b3JhZ2UgVGhlIHN0b3JhZ2UgdG8gdXNlIChsb2NhbCBvciBzZXNzaW9uKS5cbiAgICovXG4gIHNhdmVURkFUb2tlbih0ZmFUb2tlbjogc3RyaW5nLCBzdG9yYWdlOiBTdG9yYWdlKSB7XG4gICAgc3RvcmFnZS5zZXRJdGVtKHRoaXMuVEZBVE9LRU5fS0VZLCB0ZmFUb2tlbik7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdCB0aGUgbWFuaWZlc3QgLT4gb24gNDAxIHVzZXIgaGFzIG5vIGFjY2VzcyB0byB0aGF0IGFwcGxpY2F0aW9uXG4gICAqIGFuZCB3ZSB0aHJvdyB0aGUgZXJyb3IgdXAgdG8gdGhlIGxvZ2luIGZvcm0uXG4gICAqL1xuICBhc3luYyB2ZXJpZnlBcHBBY2Nlc3MoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMudWkubG9hZE1hbmlmZXN0KCk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIGlmICghKGV4LnJlcyAmJiBleC5yZXMuc3RhdHVzID09PSA0MDQgJiYgdGhpcy5pc0xvY2FsKCkpKSB7XG4gICAgICAgIHRocm93IGV4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlZGlyZWN0VG9Eb21haW4oZG9tYWluKSB7XG4gICAgY29uc3Qgb3JpZ2luVXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgY29uc3QgcmVkaXJlY3RVcmwgPSBvcmlnaW5VcmwuaHJlZi5yZXBsYWNlKG9yaWdpblVybC5ob3N0bmFtZSwgZG9tYWluKTtcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHJlZGlyZWN0VXJsO1xuICB9XG5cbiAgc2hvd1Nzb0Vycm9yKGVycm9yKTogdm9pZCB7XG4gICAgY29uc3QgYm9keSA9IGVycm9yXG4gICAgICA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgIGdldHRleHQoXG4gICAgICAgICAgICAnPHA+PHN0cm9uZz5UaGUgZm9sbG93aW5nIGVycm9yIHdhcyByZXR1cm5lZCBmcm9tIHRoZSBleHRlcm5hbCBhdXRoZW50aWNhdGlvbiBzZXJ2aWNlOjwvc3Ryb25nPjwvcD48cD48Y29kZT57eyBlcnJvciB9fTwvY29kZT48L3A+LidcbiAgICAgICAgICApLFxuICAgICAgICAgIHsgZXJyb3IgfVxuICAgICAgICApXG4gICAgICA6IGdldHRleHQoJ1NTTyBsb2dpbiBmYWlsZWQuIENvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyk7XG5cbiAgICB0aGlzLm1vZGFsU2VydmljZS5hY2tub3dsZWRnZShnZXR0ZXh0KCdMb2dpbiBlcnJvcicpLCBib2R5LCBTdGF0dXMuREFOR0VSLCBnZXR0ZXh0KCdPSycpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0ZW5hbnQgdG8gdGhlIGNsaWVudCBhbmQgdXBkYXRlcyB0aGUgY3JlZGVudGlhbHMgb24gdGhlXG4gICAqIGF1dGggc3RyYXRlZ3kuXG4gICAqIEBwYXJhbSBjcmVkZW50aWFscyBUaGUgbmFtZSBvZiB0aGUgdGVuYW50LlxuICAgKiBAcGFyYW0gYXV0aFN0cmF0ZWd5IFRoZSBhdXRoZW50aWNhdGlvbiBzdHJhdGVneSB1c2VkLlxuICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIHRva2VuIGlmIGJhc2ljIGF1dGgsIG90aGVyd2lzZSB1bmRlZmluZWQuXG4gICAqL1xuICBwcml2YXRlIHNldENyZWRlbnRpYWxzKGNyZWRlbnRpYWxzOiBJQ3JlZGVudGlhbHMsIGF1dGhTdHJhdGVneTogSUF1dGhlbnRpY2F0aW9uKSB7XG4gICAgaWYgKGNyZWRlbnRpYWxzLnRlbmFudCkge1xuICAgICAgdGhpcy5jbGllbnQudGVuYW50ID0gY3JlZGVudGlhbHMudGVuYW50O1xuICAgIH1cbiAgICAvLyBDaGVjayBpZiBhIHRva2VuIGlzIGFscmVhZHkgc2V0IChjYXNlIGZvciBzdXBwb3J0IHVzZXIgbG9naW4pXG4gICAgLy8gaWYgeWVzIC0+IHdlIGp1c3QgbmVlZCB0byB1cGRhdGUgdGhlIHVzZXIsIGFuZCByZXVzZSB0aGUgdG9rZW5cbiAgICAvLyBvZiB0aGUgc3VwcG9ydCB1c2VyLlxuICAgIC8vIFRoZXJlZm9yZSB3ZSBuZWVkIHRvIHBhc3MgdXNlciBhbmQgdGVuYW50LCB0byBnZXRcbiAgICAvLyBqdXN0IHRoZSBzdG9yZWQgdG9rZW4gYW5kIG5vdGhpbmcgZWxzZSAoc2VlIEJhc2ljQXV0aC50czozMSkuXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmJhc2ljQXV0aC51cGRhdGVDcmVkZW50aWFscyh7XG4gICAgICB0ZW5hbnQ6IGNyZWRlbnRpYWxzLnRlbmFudCxcbiAgICAgIHVzZXI6IGNyZWRlbnRpYWxzLnVzZXJcbiAgICB9KTtcbiAgICBjb25zdCBuZXdDcmVkZW50aWFscyA9IHsgdG9rZW4sIC4uLmNyZWRlbnRpYWxzIH07XG5cbiAgICByZXR1cm4gYXV0aFN0cmF0ZWd5LnVwZGF0ZUNyZWRlbnRpYWxzKG5ld0NyZWRlbnRpYWxzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyBpZiB0aGUgY3VycmVudCB1c2VyIGlzIGEgZGV2ZWxvcGVyIG9yIG5vdC5cbiAgICogUnVubmluZyBvbiBsb2NhbGhvc3QgbWVhbnMgZGV2ZWxvcG1lbnQgbW9kZS5cbiAgICovXG4gIHByaXZhdGUgaXNMb2NhbCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBob3N0bmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcbiAgICByZXR1cm4gdGhpcy5sb2NhbGhvc3RJcFJlZ0V4cC50ZXN0KGhvc3RuYW1lKSB8fCB0aGlzLmxvY2FsaG9zdFJlZ0V4cC50ZXN0KGhvc3RuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIHRoZSB0b2tlbiB0byBsb2NhbCBvciBzZXNzaW9uIHN0b3JhZ2UuXG4gICAqIEBwYXJhbSB0b2tlbiBUaGUgdG9rZW4gdG8gc2F2ZS5cbiAgICogQHBhcmFtIHN0b3JhZ2UgVGhlIHN0b3JhZ2UgdG8gdXNlIChsb2NhbCBvciBzZXNzaW9uKS5cbiAgICovXG4gIHByaXZhdGUgc2F2ZVRva2VuKHRva2VuOiBzdHJpbmcsIHN0b3JhZ2U6IFN0b3JhZ2UpIHtcbiAgICBzdG9yYWdlLnNldEl0ZW0odGhpcy5UT0tFTl9LRVksIHRva2VuKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvcmVCYXNpY0F1dGhUb2tlbih0b2tlbjogc3RyaW5nKSB7XG4gICAgdGhpcy5zYXZlVG9rZW4odG9rZW4sIHNlc3Npb25TdG9yYWdlKTtcbiAgICBpZiAodGhpcy5yZW1lbWJlck1lKSB7XG4gICAgICB0aGlzLnNhdmVUb2tlbih0b2tlbiwgbG9jYWxTdG9yYWdlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsZWFuTG9jYWxTdG9yYWdlKCkge1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuVE9LRU5fS0VZKTtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLlRGQVRPS0VOX0tFWSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFuU2Vzc2lvblN0b3JhZ2UoKSB7XG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLlRPS0VOX0tFWSk7XG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLlRGQVRPS0VOX0tFWSk7XG4gIH1cblxuICBwcml2YXRlIGlzU2hvd1RlbmFudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93VGVuYW50UmVnRXhwLnRlc3Qod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWRpcmVjdCh1cmw6IHN0cmluZykge1xuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRCYXNpY0F1dGhMb2dpbk9wdGlvbihyZWZyZXNoPyk6IFByb21pc2U8SVRlbmFudExvZ2luT3B0aW9uPiB7XG4gICAgaWYgKHJlZnJlc2gpIHtcbiAgICAgIGF3YWl0IHRoaXMudWkucmVmcmVzaExvZ2luT3B0aW9ucygpO1xuICAgIH1cbiAgICBjb25zdCBsb2dpbk9wdGlvbnMgPSB0aGlzLnVpLnN0YXRlLmxvZ2luT3B0aW9ucyB8fCBbXTtcbiAgICBjb25zdCBiYXNpY0F1dGhMb2dpbk9wdGlvbiA9IGxvZ2luT3B0aW9ucy5maW5kKCh7IHR5cGUgfSkgPT4gdHlwZSA9PT0gJ0JBU0lDJyk7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShiYXNpY0F1dGhMb2dpbk9wdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBzdXBwb3J0IHVzZXIgbmFtZSBmcm9tIGNyZWRlbnRpYWxzLlxuICAgKiBAcGFyYW0gY3JlZGVudGlhbHMgQ3JlZGVudGlhbHMgb2JqZWN0IChkZWZhdWx0cyB0byB0aGUgc3RvcmVkIG9uZSkuXG4gICAqIEByZXR1cm5zIFN1cHBvcnQgdXNlciBuYW1lLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRTdXBwb3J0VXNlck5hbWUoY3JlZGVudGlhbHM6IElDcmVkZW50aWFscyA9IHRoaXMuZ2V0U3RvcmVkQ3JlZGVudGlhbHMoKSk6IHN0cmluZyB7XG4gICAgaWYgKCFjcmVkZW50aWFscykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHN1cHBvcnRVc2VyTmFtZSA9IGNyZWRlbnRpYWxzLnVzZXIubWF0Y2goL14oLitcXC8pPygoLispXFwkKT8oLispPyQvKVszXTtcbiAgICByZXR1cm4gc3VwcG9ydFVzZXJOYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgY3JlZGVudGlhbHMgb2JqZWN0IGZyb20gdGhlIHN0b3JlZCB0b2tlbi5cbiAgICogQHJldHVybnMgQ3JlZGVudGlhbHMgb2JqZWN0LlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRTdG9yZWRDcmVkZW50aWFscygpOiBJQ3JlZGVudGlhbHMge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5nZXRTdG9yZWRUb2tlbigpO1xuICAgIGlmICghdG9rZW4pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5kZWNvZGVUb2tlbih0b2tlbik7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBzdG9yZWQgdG9rZW4gZnJvbSBsb2NhbCBzdG9yYWdlIG9yIHNlc3Npb24gc3RvcmFnZS5cbiAgICogQHJldHVybnMgU3RvcmVkIHRva2VuLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRTdG9yZWRUb2tlbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLlRPS0VOX0tFWSkgfHwgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLlRPS0VOX0tFWSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBzdG9yZWQgVEZBIHRva2VuIGZyb20gbG9jYWwgc3RvcmFnZSBvciBzZXNzaW9uIHN0b3JhZ2UuXG4gICAqIEByZXR1cm5zIFN0b3JlZCBURkEgdG9rZW4uXG4gICAqL1xuICBwcml2YXRlIGdldFN0b3JlZFRmYVRva2VuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuVEZBVE9LRU5fS0VZKSB8fCBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuVEZBVE9LRU5fS0VZKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGVzIHRva2VuIHRvIGNyZWRlbnRpYWxzIG9iamVjdC5cbiAgICogQHBhcmFtIHRva2VuIFRva2VuIHRvIGRlY29kZS5cbiAgICogQHJldHVybnMgQ3JlZGVudGlhbHMgb2JqZWN0LlxuICAgKi9cbiAgcHJpdmF0ZSBkZWNvZGVUb2tlbih0b2tlbjogc3RyaW5nKTogSUNyZWRlbnRpYWxzIHtcbiAgICBjb25zdCBkZWNvZGVkID0gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZSh3aW5kb3cuYXRvYih0b2tlbikpKTtcbiAgICBjb25zdCBzcGxpdCA9IGRlY29kZWQubWF0Y2goLygoW14vXSopXFwvKT8oW14vOl0rKTooLispLyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdGVuYW50OiBzcGxpdFsyXSxcbiAgICAgIHVzZXI6IHNwbGl0WzNdLFxuICAgICAgcGFzc3dvcmQ6IHNwbGl0WzRdXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VXJsRm9yT2F1dGgoY3JlZGVudGlhbHM6IElDcmVkZW50aWFscykge1xuICAgIGlmIChpc0VtcHR5KGNyZWRlbnRpYWxzLnRlbmFudCkgJiYgdGhpcy5sb2dpbk1vZGUuaW5pdFJlcXVlc3QpIHtcbiAgICAgIGNvbnN0IHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXModGhpcy5sb2dpbk1vZGUuaW5pdFJlcXVlc3Quc3BsaXQoJz8nKS5wb3AoKSk7XG4gICAgICBjcmVkZW50aWFscy50ZW5hbnQgPSB1cmxQYXJhbXMuZ2V0KCd0ZW5hbnRfaWQnKTtcbiAgICB9XG4gICAgcmV0dXJuICFpc0VtcHR5KGNyZWRlbnRpYWxzLnRlbmFudClcbiAgICAgID8gYHRlbmFudC9vYXV0aD90ZW5hbnRfaWQ9JHtjcmVkZW50aWFscy50ZW5hbnR9YFxuICAgICAgOiBgdGVuYW50L29hdXRoYDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0TWFuYWdlbWVudExvZ2luTW9kZSgpIHtcbiAgICBjb25zdCBtYW5hZ2VtZW50TG9naW5PcHRpb25zID0gKGF3YWl0IHRoaXMudGVuYW50TG9naW5PcHRpb25zU2VydmljZS5saXN0Rm9yTWFuYWdlbWVudCgpKS5kYXRhO1xuICAgIHJldHVybiB0aGlzLnRlbmFudFVpU2VydmljZS5nZXRQcmVmZXJyZWRMb2dpbk9wdGlvbihtYW5hZ2VtZW50TG9naW5PcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlRXJyb3JTdGF0dXNDb2RlcyhyZXNwb25zZTogSUZldGNoUmVzcG9uc2UpOiBQcm9taXNlPElGZXRjaFJlc3BvbnNlPiB7XG4gICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA+PSA0MDApIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgICBjb25zdCBlcnJvciA9IGRhdGEubWVzc2FnZSB8fCBkYXRhLmVycm9yX2Rlc2NyaXB0aW9uIHx8IGRhdGEuZXJyb3I7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG59XG4iXX0=
|
|
628
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvbG9naW4vbG9naW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUNMLFNBQVMsRUFDVCw0QkFBNEIsRUFDNUIsVUFBVSxFQUNWLFdBQVcsRUFLWCxRQUFRLEVBQ1IseUJBQXlCLEVBQ3pCLGFBQWEsRUFDYixXQUFXLEVBQ1osTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7QUFFaEQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sWUFBWTtJQStE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QUMsc0JBQXNCO1FBQ2xDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQy9GLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFTyxLQUFLLENBQUMsc0JBQXNCLENBQUMsUUFBd0I7UUFDM0QsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25DLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDbkUsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzs4R0EzcUJVLFlBQVk7a0hBQVosWUFBWTs7MkZBQVosWUFBWTtrQkFEeEIsVUFBVTs7MEJBK0VOLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJhc2ljQXV0aCxcbiAgQmVhcmVyQXV0aEZyb21TZXNzaW9uU3RvcmFnZSxcbiAgQ29va2llQXV0aCxcbiAgRmV0Y2hDbGllbnQsXG4gIElBdXRoZW50aWNhdGlvbixcbiAgSUNyZWRlbnRpYWxzLFxuICBJRmV0Y2hSZXNwb25zZSxcbiAgSVRlbmFudExvZ2luT3B0aW9uLFxuICBSZWFsdGltZSxcbiAgVGVuYW50TG9naW5PcHRpb25zU2VydmljZSxcbiAgVGVuYW50U2VydmljZSxcbiAgVXNlclNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3VpLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnLi4vaTE4bi9nZXR0ZXh0JztcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2FwaSc7XG5pbXBvcnQgeyBUZW5hbnRVaVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vdGVuYW50LXVpLnNlcnZpY2UnO1xuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBFTVBUWSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTG9jYXRpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBnZXQsIGlzRW1wdHksIGlzU3RyaW5nIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1vZGFsU2VydmljZSB9IGZyb20gJy4uL21vZGFsL21vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RhdHVzIH0gZnJvbSAnLi4vY29tbW9uL3N0YXR1cy5tb2RlbCc7XG5cbi8qKlxuICogU2VydmljZSB0byBtYW5hZ2UgdGhlIGxvZ2luLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTG9naW5TZXJ2aWNlIHtcbiAgcmVtZW1iZXJNZSA9IGZhbHNlO1xuICBUT0tFTl9LRVkgPSAnX3RjeTgnO1xuICBURkFUT0tFTl9LRVkgPSAnVEZBVG9rZW4nO1xuICBsb2dpbk1vZGU6IElUZW5hbnRMb2dpbk9wdGlvbjtcbiAgbWFuYWdlbWVudExvZ2luTW9kZTogSVRlbmFudExvZ2luT3B0aW9uO1xuICBvYXV0aE9wdGlvbnM6IElUZW5hbnRMb2dpbk9wdGlvbjtcbiAgaXNGaXJzdExvZ2luID0gdHJ1ZTtcbiAgR1JFRU5fTUlOX0xFTkdUSF9ERUZBVUxUID0gODtcbiAgYXV0b21hdGljTG9naW5JblByb2dyZXNzJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIC8vIHRzbGludDpkaXNhYmxlOm1heC1saW5lLWxlbmd0aFxuICBFUlJPUl9NRVNTQUdFUyA9IHtcbiAgICBtaW5sZW5ndGg6IGdldHRleHQoJ1Bhc3N3b3JkIG11c3QgaGF2ZSBhdCBsZWFzdCA4IGNoYXJhY3RlcnMgYW5kIG5vIG1vcmUgdGhhbiAzMi4nKSxcbiAgICBwYXNzd29yZF9taXNzbWF0Y2g6IGdldHRleHQoJ1Bhc3N3b3JkcyBkbyBub3QgbWF0Y2guJyksXG4gICAgbWF4bGVuZ3RoOiBnZXR0ZXh0KCdQYXNzd29yZCBtdXN0IGhhdmUgYXQgbGVhc3QgOCBjaGFyYWN0ZXJzIGFuZCBubyBtb3JlIHRoYW4gMzIuJyksXG4gICAgcGFzc3dvcmRfc3RyZW5ndGg6IGdldHRleHQoXG4gICAgICAnWW91ciBwYXNzd29yZCBpcyBub3Qgc3Ryb25nIGVub3VnaC4gUGxlYXNlIGluY2x1ZGUgbnVtYmVycywgbG93ZXIgYW5kIHVwcGVyIGNhc2UgY2hhcmFjdGVycydcbiAgICApLFxuICAgIHJlbW90ZV9lcnJvcjogZ2V0dGV4dCgnU2VydmVyIGVycm9yIG9jY3VycmVkLicpLFxuICAgIGVtYWlsOiBnZXR0ZXh0KCdJbnZhbGlkIGVtYWlsIGFkZHJlc3MuJyksXG4gICAgcGFzc3dvcmRfY2hhbmdlOiBnZXR0ZXh0KCdZb3VyIHBhc3N3b3JkIGlzIGV4cGlyZWQuIFBsZWFzZSBzZXQgYSBuZXcgcGFzc3dvcmQuJyksXG4gICAgcGFzc3dvcmRfcmVzZXRfdG9rZW5fZXhwaXJlZDogZ2V0dGV4dChcbiAgICAgICdQYXNzd29yZCByZXNldCBsaW5rIGV4cGlyZWQuIFBsZWFzZSBlbnRlciB5b3VyIGVtYWlsIGFkZHJlc3MgdG8gcmVjZWl2ZSBhIG5ldyBvbmUuJ1xuICAgICksXG4gICAgdGZhX3Bpbl9pbnZhbGlkOiBnZXR0ZXh0KCdUaGUgY29kZSB5b3UgZW50ZXJlZCBpcyBpbnZhbGlkLiBQbGVhc2UgdHJ5IGFnYWluLicpLFxuICAgIHBhdHRlcm5fbmV3UGFzc3dvcmQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgZ2V0dGV4dChcbiAgICAgICAgJ1Bhc3N3b3JkIG11c3QgaGF2ZSBhdCBsZWFzdCA4IGNoYXJhY3RlcnMgYW5kIG5vIG1vcmUgdGhhbiAzMiBhbmQgY2FuIG9ubHkgY29udGFpbiBsZXR0ZXJzLCBudW1iZXJzIGFuZCBmb2xsb3dpbmcgc3ltYm9sczoge3sgc3ltYm9scyB9fSdcbiAgICAgICksXG4gICAgICB7IHN5bWJvbHM6ICdgfiFAIyQlXiYqKClffCstPT87OlxcJ1wiLC48Pnt9W11cXFxcLycgfVxuICAgICksXG4gICAgaW50ZXJuYXRpb25hbFBob25lTnVtYmVyOiBnZXR0ZXh0KFxuICAgICAgJ011c3QgYmUgYSB2YWxpZCBwaG9uZSBudW1iZXIgKG9ubHkgZGlnaXRzLCBzcGFjZXMsIHNsYXNoZXMgKFwiL1wiKSwgZGFzaGVzIChcIi1cIiksIGFuZCBwbHVzIChcIitcIikgYWxsb3dlZCwgZm9yIGV4YW1wbGU6ICs0OSA5IDg3NiA1NDMgMjEwKS4nXG4gICAgKSxcbiAgICBwaG9uZV9udW1iZXJfZXJyb3I6IGdldHRleHQoJ0NvdWxkIG5vdCB1cGRhdGUgcGhvbmUgbnVtYmVyLicpLFxuICAgIHBpbkFscmVhZHlTZW50OiBnZXR0ZXh0KFxuICAgICAgJ1RoZSB2ZXJpZmljYXRpb24gY29kZSB3YXMgYWxyZWFkeSBzZW50LiBGb3IgYSBuZXcgdmVyaWZpY2F0aW9uIGNvZGUsIHBsZWFzZSBjbGljayBvbiB0aGUgbGluayBhYm92ZS4nXG4gICAgKSxcbiAgICBwYXNzd29yZENvbmZpcm06IGdldHRleHQoJ1Bhc3N3b3JkcyBkbyBub3QgbWF0Y2guJyksXG4gICAgdGZhRXhwaXJlZDogZ2V0dGV4dCgnVHdvLWZhY3RvciBhdXRoZW50aWNhdGlvbiB0b2tlbiBleHBpcmVkLicpXG4gIH07XG4gIC8vIHRzbGludDplbmFibGU6bWF4LWxpbmUtbGVuZ3RoXG5cbiAgcHJpdmF0ZSBTVUNDRVNTX01FU1NBR0VTID0ge1xuICAgIHBhc3N3b3JkX2NoYW5nZWQ6IGdldHRleHQoJ1Bhc3N3b3JkIGNoYW5nZWQuIFlvdSBjYW4gbm93IGxvZyBpbiB1c2luZyBuZXcgcGFzc3dvcmQuJyksXG4gICAgcGFzc3dvcmRfcmVzZXRfcmVxdWVzdGVkOiBnZXR0ZXh0KFxuICAgICAgJ1Bhc3N3b3JkIHJlc2V0IHJlcXVlc3QgaGFzIGJlZW4gc2VudC4gUGxlYXNlIGNoZWNrIHlvdXIgZW1haWwuJ1xuICAgICksXG4gICAgcmVzZW5kX3NtczogZ2V0dGV4dCgnVmVyaWZpY2F0aW9uIGNvZGUgU01TIHJlc2VudC4nKSxcbiAgICBzZW5kX3NtczogZ2V0dGV4dCgnVmVyaWZpY2F0aW9uIGNvZGUgU01TIHNlbnQuJylcbiAgfTtcblxuICBwcml2YXRlIHBhc3N3b3JkU3RyZW5ndGhTZXR0aW5nID0ge1xuICAgIGVuZm9yY2VQYXNzd29yZFN0cmVuZ3RoOiBmYWxzZSxcbiAgICBncmVlbk1pbkxlbmd0aDogdGhpcy5HUkVFTl9NSU5fTEVOR1RIX0RFRkFVTFQsXG4gICAgcGFzc3dvcmRTdHJlbmd0aFZhbGlkaXR5OiBmYWxzZVxuICB9O1xuXG4gIHByaXZhdGUgbG9jYWxob3N0UmVnRXhwID0gbmV3IFJlZ0V4cCgnbG9jYWxob3N0Jyk7XG4gIHByaXZhdGUgbG9jYWxob3N0SXBSZWdFeHAgPSBuZXcgUmVnRXhwKCcxMjcuMC4wLjEnKTtcbiAgcHJpdmF0ZSBzaG93VGVuYW50UmVnRXhwID0gbmV3IFJlZ0V4cCgnc2hvd1RlbmFudCcpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgY2xpZW50OiBGZXRjaENsaWVudCxcbiAgICBwcml2YXRlIGJhc2ljQXV0aDogQmFzaWNBdXRoLFxuICAgIHByaXZhdGUgY29va2llQXV0aDogQ29va2llQXV0aCxcbiAgICBwcml2YXRlIHVpOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIHRlbmFudDogVGVuYW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWx0aW1lOiBSZWFsdGltZSxcbiAgICBwcml2YXRlIGFsZXJ0OiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcGk6IEFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0ZW5hbnRVaVNlcnZpY2U6IFRlbmFudFVpU2VydmljZSxcbiAgICBwcml2YXRlIHRlbmFudExvZ2luT3B0aW9uc1NlcnZpY2U6IFRlbmFudExvZ2luT3B0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb25TdHJhdGVneVxuICApIHtcbiAgICB0aGlzLmF1dG9Mb2dvdXQoKTtcbiAgICB0aGlzLmluaXRMb2dpbk9wdGlvbnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHRlbmFudC5cbiAgICogQHJldHVybiBUaGUgdGVuYW50IG5hbWUuXG4gICAqL1xuICBnZXRUZW5hbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LnRlbmFudDtcbiAgfVxuXG4gIGluaXRMb2dpbk9wdGlvbnMoKSB7XG4gICAgY29uc3QgbG9naW5PcHRpb25zID0gdGhpcy51aS5zdGF0ZS5sb2dpbk9wdGlvbnMgfHwgW107XG4gICAgdGhpcy5sb2dpbk1vZGUgPSB0aGlzLnRlbmFudFVpU2VydmljZS5nZXRQcmVmZXJyZWRMb2dpbk9wdGlvbihsb2dpbk9wdGlvbnMpO1xuICAgIHRoaXMub2F1dGhPcHRpb25zID1cbiAgICAgIHRoaXMudGVuYW50VWlTZXJ2aWNlLmdldE9hdXRoMk9wdGlvbihsb2dpbk9wdGlvbnMpIHx8ICh7fSBhcyBJVGVuYW50TG9naW5PcHRpb24pO1xuICB9XG5cbiAgcmVkaXJlY3RUb09hdXRoKCkge1xuICAgIGNvbnN0IHsgaW5pdFJlcXVlc3QsIGZsb3dDb250cm9sbGVkQnlVSSB9ID0gdGhpcy5vYXV0aE9wdGlvbnM7XG4gICAgY29uc3QgZnVsbFBhdGggPSBgJHt3aW5kb3cubG9jYXRpb24ub3JpZ2lufSR7d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lfWA7XG4gICAgY29uc3QgcmVkaXJlY3RVcmwgPSBlbmNvZGVVUklDb21wb25lbnQoZnVsbFBhdGgpO1xuICAgIGNvbnN0IG9yaWdpblVyaVBhcmFtID0gYCR7aW5pdFJlcXVlc3QuaW5jbHVkZXMoJz8nKSA/ICcmJyA6ICc/J31vcmlnaW5Vcmk9JHtyZWRpcmVjdFVybH1gO1xuICAgIGNvbnN0IHVybE9iamVjdCA9IG5ldyBVUkwoaW5pdFJlcXVlc3QpO1xuXG4gICAgaWYgKGZsb3dDb250cm9sbGVkQnlVSSkge1xuICAgICAgdGhpcy5jbGllbnRcbiAgICAgICAgLmZldGNoKGAvdGVuYW50L29hdXRoJHt1cmxPYmplY3Quc2VhcmNofSR7b3JpZ2luVXJpUGFyYW19YClcbiAgICAgICAgLnRoZW4ocmVzID0+IHRoaXMuaGFuZGxlRXJyb3JTdGF0dXNDb2RlcyhyZXMpKVxuICAgICAgICAudGhlbihyZXMgPT4gcmVzLmpzb24oKSlcbiAgICAgICAgLnRoZW4oKHJlczogYW55KSA9PiAod2luZG93LmxvY2F0aW9uLmhyZWYgPSByZXMucmVkaXJlY3RUbykpXG4gICAgICAgIC5jYXRjaChleCA9PiB0aGlzLnNob3dTc29FcnJvcihleCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke2luaXRSZXF1ZXN0fSR7b3JpZ2luVXJpUGFyYW19YDtcbiAgICB9XG4gIH1cblxuICBsb2dpbkJ5U3NvKHNlc3Npb25TdGF0ZTogc3RyaW5nLCBjb2RlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBBY2NlcHQ6ICd0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sJ1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50XG4gICAgICAuZmV0Y2goYC90ZW5hbnQvb2F1dGg/c2Vzc2lvbl9zdGF0ZT0ke3Nlc3Npb25TdGF0ZX0mY29kZT0ke2NvZGV9YCwgcGFyYW1zKVxuICAgICAgLnRoZW4ocmVzID0+IHRoaXMuaGFuZGxlRXJyb3JTdGF0dXNDb2RlcyhyZXMpKVxuICAgICAgLmNhdGNoKGV4ID0+IHtcbiAgICAgICAgdGhpcy5zaG93U3NvRXJyb3IoZXgpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgYXV0b0xvZ291dCgpIHtcbiAgICBjb25zdCBlcnJvclBhdHRlcm4gPSAvaW52YWxpZFxcc2NyZWRlbnRpYWxzLipwaW4uKmdlbmVyYXRlL2k7XG4gICAgY29uc3QgaXNUZmFFeHBpcmVkID0gZGF0YSA9PlxuICAgICAgZGF0YSAmJiB0eXBlb2YgZGF0YS5tZXNzYWdlID09PSAnc3RyaW5nJyAmJiBlcnJvclBhdHRlcm4udGVzdChkYXRhLm1lc3NhZ2UpO1xuICAgIHRoaXMudWkuY3VycmVudFVzZXJcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAodSA9PlxuICAgICAgICAgIHUgPyB0aGlzLmFwaS5ob29rUmVzcG9uc2UoKHsgcmVzcG9uc2UgfSkgPT4gcmVzcG9uc2Uuc3RhdHVzID09PSA0MDEpIDogRU1QVFlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShhc3luYyAoYXBpQ2FsbDogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgcmVzcG9uc2UgfSA9IGFwaUNhbGw7XG4gICAgICAgIGxldCB3aWxsTG9nb3V0ID0gZmFsc2U7XG4gICAgICAgIGlmIChpc1RmYUV4cGlyZWQocmVzcG9uc2UuZGF0YSkpIHtcbiAgICAgICAgICB3aWxsTG9nb3V0ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodHlwZW9mIHJlc3BvbnNlLmpzb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5jbG9uZSgpLmpzb24oKTtcbiAgICAgICAgICAgIGlmIChpc1RmYUV4cGlyZWQoZGF0YSkpIHtcbiAgICAgICAgICAgICAgd2lsbExvZ291dCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh3aWxsTG9nb3V0KSB7XG4gICAgICAgICAgdGhpcy5sb2dvdXQoZmFsc2UpO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5hbGVydC5kYW5nZXIodGhpcy5FUlJPUl9NRVNTQUdFUy50ZmFFeHBpcmVkKSwgNTAwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgbWluaW1hbCBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IGEgcGFzc3dvcmQgc2hvdWxkIGhhdmUgdG8gYmUgY29uc2lkZXJlZCBhIOKAnGdyZWVu4oCdIHN0cm9uZyBvbmUuXG4gICAqIEByZXR1cm4gVGhlIG1pbiBsZW5ndGggZm9yIHBhc3N3b3JkIG9yIGRlZmF1bHQgdmFsdWUuXG4gICAqL1xuICBhc3luYyBnZXRHcmVlbk1pbkxlbmd0aCgpIHtcbiAgICBjb25zdCB7IGdyZWVuTWluTGVuZ3RoIH0gPSAoYXdhaXQgdGhpcy5nZXRCYXNpY0F1dGhMb2dpbk9wdGlvbigpKSB8fCB7IGdyZWVuTWluTGVuZ3RoOiBudWxsIH07XG4gICAgdGhpcy5wYXNzd29yZFN0cmVuZ3RoU2V0dGluZy5ncmVlbk1pbkxlbmd0aCA9IGdyZWVuTWluTGVuZ3RoIHx8IHRoaXMuR1JFRU5fTUlOX0xFTkdUSF9ERUZBVUxUO1xuICAgIHJldHVybiB0aGlzLnBhc3N3b3JkU3RyZW5ndGhTZXR0aW5nLmdyZWVuTWluTGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBwYXNzd29yZCBzdHJlbmd0aCBpcyBlbmZvcmNlZCBmb3Igc3lzdGVtXG4gICAqIGJ5IHJldHJpZXZpbmcgdmFsdWUgb2YgYGVuZm9yY2VTdHJlbmd0aGAgcHJvcGVydHkgZnJvbSBsb2dpbk9wdGlvbnMgcmVzcG9uc2VcbiAgICogQHBhcmFtIHJlZnJlc2ggYm9vbGVhbiB1c2VkIHRvIHJlZnJlc2ggdGhlIGFwcCBzdGF0ZSB3aGVyZSByZXN1bHQgb2YgbG9naW5PcHRpb25zIHJlc3BvbnNlIGlzIHN0b3JlZC5cbiAgICogSWYgZmFsc2UsIGl0IHRha2VzIHZhbHVlIGZyb20gbWVtb3J5LFxuICAgKiBpZiB0cnVlLCBpdCByZWZyZXNoIHRoZSBhcHAgc3RhdGUgdmFsdWUgYW5kIHRoZW4gcmV0cml2ZXMgZGF0YS5cbiAgICogQHJldHVybiBib29sZWFuIHZhbHVlLCB0cnVlIGlmIGVuZm9yY2VkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBhc3luYyBnZXRFbmZvcmNlUGFzc3dvcmRTdHJlbmd0aChyZWZyZXNoPykge1xuICAgIHJldHVybiB0aGlzLmdldEJhc2ljQXV0aExvZ2luT3B0aW9uKHJlZnJlc2gpLnRoZW4obG9naW5PcHRpb24gPT4ge1xuICAgICAgY29uc3QgZW5mb3JjZVBhc3N3b3JkU3RyZW5ndGggPSBnZXQobG9naW5PcHRpb24sICdlbmZvcmNlU3RyZW5ndGgnKTtcbiAgICAgIGlmIChpc1N0cmluZyhlbmZvcmNlUGFzc3dvcmRTdHJlbmd0aCkpIHtcbiAgICAgICAgdGhpcy5wYXNzd29yZFN0cmVuZ3RoU2V0dGluZy5lbmZvcmNlUGFzc3dvcmRTdHJlbmd0aCA9XG4gICAgICAgICAgZW5mb3JjZVBhc3N3b3JkU3RyZW5ndGggPT09ICd0cnVlJyA/IHRydWUgOiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGFzc3dvcmRTdHJlbmd0aFNldHRpbmcuZW5mb3JjZVBhc3N3b3JkU3RyZW5ndGggPSAhIWVuZm9yY2VQYXNzd29yZFN0cmVuZ3RoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMucGFzc3dvcmRTdHJlbmd0aFNldHRpbmcuZW5mb3JjZVBhc3N3b3JkU3RyZW5ndGg7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHBhc3N3b3JkIHN0cmVuZ3RoIGlzIGVuZm9yY2VkIGZvciBwYXJ0aWN1bGFyIHRlbmFudFxuICAgKiBieSByZXRyaWV2aW5nIHZhbHVlIG9mIGBzdHJlbmd0aFZhbGlkaXR5YCBwcm9wZXJ0eSBmcm9tIGxvZ2luT3B0aW9ucyByZXNwb25zZVxuICAgKiBAcGFyYW0gcmVmcmVzaCBib29sZWFuIHVzZWQgdG8gcmVmcmVzaCB0aGUgYXBwIHN0YXRlIHdoZXJlIHJlc3VsdCBvZiBsb2dpbk9wdGlvbnMgcmVzcG9uc2UgaXMgc3RvcmVkLlxuICAgKiBJZiBmYWxzZSwgaXQgdGFrZXMgdmFsdWUgZnJvbSBtZW1vcnksXG4gICAqIGlmIHRydWUsIGl0IHJlZnJlc2ggdGhlIGFwcCBzdGF0ZSB2YWx1ZSBhbmQgdGhlbiByZXRyaXZlcyBkYXRhLlxuICAgKiBAcmV0dXJuIGJvb2xlYW4gdmFsdWUsIHRydWUgaWYgZW5mb3JjZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGFzeW5jIGdldFBhc3N3b3JkU3RyZW5ndGhWYWxpZGl0eShyZWZyZXNoPykge1xuICAgIHJldHVybiB0aGlzLmdldEJhc2ljQXV0aExvZ2luT3B0aW9uKHJlZnJlc2gpLnRoZW4obG9naW5PcHRpb24gPT4ge1xuICAgICAgY29uc3Qgc3RyZW5ndGhWYWxpZGl0eSA9IGdldChsb2dpbk9wdGlvbiwgJ3N0cmVuZ3RoVmFsaWRpdHknKTtcbiAgICAgIGlmIChpc1N0cmluZyhzdHJlbmd0aFZhbGlkaXR5KSkge1xuICAgICAgICB0aGlzLnBhc3N3b3JkU3RyZW5ndGhTZXR0aW5nLnBhc3N3b3JkU3RyZW5ndGhWYWxpZGl0eSA9XG4gICAgICAgICAgc3RyZW5ndGhWYWxpZGl0eSA9PT0gJ3RydWUnID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wYXNzd29yZFN0cmVuZ3RoU2V0dGluZy5wYXNzd29yZFN0cmVuZ3RoVmFsaWRpdHkgPSAhIXN0cmVuZ3RoVmFsaWRpdHk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5wYXNzd29yZFN0cmVuZ3RoU2V0dGluZy5wYXNzd29yZFN0cmVuZ3RoVmFsaWRpdHk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRnVuY3Rpb24gZGV0ZXJtaW5lcyBpZiBlbmZvcmNlZCBzdHJlbmd0aCBjaGVja3Mgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIGN1cnJlbnQgdGVuYW50XG4gICAqIGJhc2VkIG9uIHByb3BlcnRpZXMgcmV0cmlldmVkIGZyb20gbG9naW5PcHRpb25zXG4gICAqIEBwYXJhbSBvcHRpb25zIG9iamVjdCBjb250YWluaW5nIHNwZWNpZmljIG9wdGlvbnM6XG4gICAqICAgIC0ge3JlZnJlc2g6IHRydWV9IC0gcmVmcmVzaGVzIHZhbHVlcyBvZiBhcHAgc3RhdGUgYW5kIHJldHVybnMgZnJlc2ggdmFsdWVzIGFzIHJlc3VsdCBvZiBjYWxsXG4gICAqIEByZXR1cm4gYm9vbGVhbiB2YWx1ZSwgdHJ1ZSBpZiBzdHJlbmd0aCBpcyBlbmZvcmNlZCBmb3IgdGVuYW50LCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBhc3luYyBnZXRQYXNzd29yZFN0cmVuZ3RoRW5mb3JjZWQob3B0aW9ucz8pIHtcbiAgICBjb25zdCByZWZyZXNoID0gb3B0aW9ucyAmJiBvcHRpb25zLnJlZnJlc2g7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFtcbiAgICAgIHRoaXMuZ2V0RW5mb3JjZVBhc3N3b3JkU3RyZW5ndGgocmVmcmVzaCksXG4gICAgICB0aGlzLmdldFBhc3N3b3JkU3RyZW5ndGhWYWxpZGl0eShyZWZyZXNoKVxuICAgIF0pLnRoZW4odmFsdWVzID0+IHtcbiAgICAgIGNvbnN0IFtlbmZvcmNlUGFzc3dvcmRTdHJlbmd0aCwgcGFzc3dvcmRTdHJlbmd0aFZhbGlkaXR5XSA9IHZhbHVlcztcbiAgICAgIHJldHVybiBlbmZvcmNlUGFzc3dvcmRTdHJlbmd0aCB8fCBwYXNzd29yZFN0cmVuZ3RoVmFsaWRpdHk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIGFsbCBiYWNrZW5kIGVycm9ycy5cbiAgICovXG4gIGNsZWFuTWVzc2FnZXMoKSB7XG4gICAgdGhpcy5hbGVydC5jbGVhckFsbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgc3VjY2VzcyBtZXNzYWdlXG4gICAqIEBwYXJhbSBzdWNjZXNzS2V5IFRoZSBrZXkgb2YgdGhlIHN1Y2Nlc3MgbWVzc2FnZSBhcyB1c2VkIGluIFNVQ0NFU1NfTUVTU0FHRVNcbiAgICovXG4gIGFkZFN1Y2Nlc3NNZXNzYWdlKHN1Y2Nlc3NLZXk6IHN0cmluZykge1xuICAgIGNvbnN0IHN1Y2Nlc3NNZXNzYWdlID0gdGhpcy5TVUNDRVNTX01FU1NBR0VTW3N1Y2Nlc3NLZXldO1xuICAgIGlmIChzdWNjZXNzTWVzc2FnZSkge1xuICAgICAgdGhpcy5hbGVydC5hZGQoe1xuICAgICAgICB0ZXh0OiBzdWNjZXNzTWVzc2FnZSxcbiAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICB0aW1lb3V0OiAwXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCBzdHJhdGVneS4gRGVmYXVsdHMgdG8gY29va2llLCBpZiBhIHRva2VuXG4gICAqIGlzIGZvdW5kIGluIGxvY2FsIG9yIHNlc3Npb24gc3RvcmFnZSB3ZSBzd2l0Y2ggdG8gYmFzaWMgYXV0aC5cbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYXV0aCBzdHJhdGVneS5cbiAgICovXG4gIGdldEF1dGhTdHJhdGVneSgpOiBJQXV0aGVudGljYXRpb24ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhdXRoU3RyYXRlZ3kgPSBuZXcgQmVhcmVyQXV0aEZyb21TZXNzaW9uU3RvcmFnZSgpO1xuICAgICAgY29uc29sZS5sb2coYFVzaW5nIEJlYXJlckF1dGhGcm9tU2Vzc2lvblN0b3JhZ2VgKTtcbiAgICAgIHJldHVybiBhdXRoU3RyYXRlZ3k7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgICBsZXQgYXV0aFN0cmF0ZWd5OiBJQXV0aGVudGljYXRpb24gPSB0aGlzLmNvb2tpZUF1dGg7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmdldFN0b3JlZFRva2VuKCk7XG4gICAgY29uc3QgdGZhID0gdGhpcy5nZXRTdG9yZWRUZmFUb2tlbigpO1xuICAgIGlmICh0b2tlbikge1xuICAgICAgYXV0aFN0cmF0ZWd5ID0gdGhpcy5iYXNpY0F1dGg7XG4gICAgICB0aGlzLnNldENyZWRlbnRpYWxzKHsgdG9rZW4sIHRmYSB9LCB0aGlzLmJhc2ljQXV0aCk7XG4gICAgfVxuICAgIHJldHVybiBhdXRoU3RyYXRlZ3k7XG4gIH1cblxuICAvKipcbiAgICogRm9yY2VzIHRoZSB1c2Ugb2YgYmFzaWMgYXV0aCBhcyBzdHJhdGVneSB3aXRoIHRoaXMgY3JlZGVudGlhbHMuXG4gICAqIEBwYXJhbSBjcmVkZW50aWFscyBUaGUgY3JlZGVudGlhbHMgdG8gdXNlLlxuICAgKi9cbiAgdXNlQmFzaWNBdXRoKGNyZWRlbnRpYWxzOiBJQ3JlZGVudGlhbHMpIHtcbiAgICB0aGlzLnNldENyZWRlbnRpYWxzKGNyZWRlbnRpYWxzLCB0aGlzLmJhc2ljQXV0aCk7XG4gICAgcmV0dXJuIHRoaXMuYmFzaWNBdXRoO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWVzIHRvIGxvZ2luIGEgdXNlciB3aXRoIHRoZSBnaXZlbiBjcmVkZW50aWFscy5cbiAgICogSWYgc3VjY2Vzc2Z1bCwgdGhlIGN1cnJlbnQgdGVuYW50IGFuZCB1c2VyIGlzIHNldC4gSWYgbm90IGFuIGVycm9yXG4gICAqIGlzIHRocm93bi4gSXQgYWxzbyB2ZXJpZmllcyBpZiB0aGUgdXNlciBpcyBhbGxvd2VkIHRvIG9wZW4gdGhlXG4gICAqIGN1cnJlbnQgYXBwLlxuICAgKiBAcGFyYW0gYXV0aCBUaGUgYXV0aGVudGljYXRpb24gc3RyYXRlZ3kgdXNlZC5cbiAgICogQHBhcmFtIGNyZWRlbnRpYWxzIFRoZSBjcmVkZW50aWFscyB0byB0cnkgdG8gbG9naW4uXG4gICAqL1xuICBhc3luYyBsb2dpbihcbiAgICBhdXRoOiBJQXV0aGVudGljYXRpb24gPSB0aGlzLmdldEF1dGhTdHJhdGVneSgpLFxuICAgIGNyZWRlbnRpYWxzPzogSUNyZWRlbnRpYWxzXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIFRvIGVuc3VyZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB3ZSBuZWVkIHRvIHZlcmlmeSB3aGV0aGVyIHRoZSBiYWNrZW5kIHN1cHBvcnRzIFRGQVxuICAgIC8vIHdpdGhvdXQgcmVxdWlyaW5nIHRoZSB1c2Ugb2YgL3RlbmFudCB3aXRoIGF1dGg6IGJhc2U2NC4gVGhlIHRmYVN1cHBvcnRlZCBmbGFnIGluZGljYXRlc1xuICAgIC8vIHdoZXRoZXIgYXV0aGVudGljYXRpb24gaXMgcG9zc2libGUgZXhjbHVzaXZlbHkgdmlhIE9BSS1TRUNVUkUuXG4gICAgLy8gVGZhU3VwcG9ydGVkIGZsYWcgc2hvdWxkIGJlIHJlbW92ZWQgZHVyaW5nOiBNVE0tNjI2NDFcbiAgICBjb25zdCBpc09BSVNlY3VyZUFuZFRGQUlzU3VwcG9ydGVkID1cbiAgICAgICh0aGlzLnRlbmFudFVpU2VydmljZS5pc09hdXRoSW50ZXJuYWwodGhpcy5sb2dpbk1vZGUpICYmIHRoaXMubG9naW5Nb2RlLnRmYVN1cHBvcnRlZCkgfHxcbiAgICAgIGZhbHNlO1xuXG4gICAgaWYgKGlzT0FJU2VjdXJlQW5kVEZBSXNTdXBwb3J0ZWQgJiYgKGF3YWl0IHRoaXMuc3dpdGNoTG9naW5Nb2RlKGNyZWRlbnRpYWxzKSkpIHtcbiAgICAgIGF1dGggPSB0aGlzLmNvb2tpZUF1dGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xpZW50LnNldEF1dGgoYXV0aCk7XG4gICAgfVxuXG4gICAgY29uc3QgdGVuYW50UmVzID0gYXdhaXQgdGhpcy50ZW5hbnQuY3VycmVudCh7IHdpdGhQYXJlbnQ6IHRydWUgfSk7XG4gICAgY29uc3QgdGVuYW50ID0gdGVuYW50UmVzLmRhdGE7XG5cbiAgICBpZiAoY3JlZGVudGlhbHMpIHtcbiAgICAgIGNyZWRlbnRpYWxzLnRlbmFudCA9IHRlbmFudC5uYW1lO1xuICAgIH1cblxuICAgIGlmICghaXNPQUlTZWN1cmVBbmRURkFJc1N1cHBvcnRlZCAmJiAoYXdhaXQgdGhpcy5zd2l0Y2hMb2dpbk1vZGUoY3JlZGVudGlhbHMpKSkge1xuICAgICAgYXV0aCA9IHRoaXMuY29va2llQXV0aDtcbiAgICB9XG5cbiAgICBjb25zdCB1c2VyUmVzID0gYXdhaXQgdGhpcy51c2VyLmN1cnJlbnQoKTtcbiAgICBjb25zdCB1c2VyID0gdXNlclJlcy5kYXRhO1xuICAgIGF3YWl0IHRoaXMudmVyaWZ5QXBwQWNjZXNzKCk7XG5cbiAgICBjb25zdCBzdXBwb3J0VXNlck5hbWUgPSB0aGlzLmdldFN1cHBvcnRVc2VyTmFtZShjcmVkZW50aWFscyk7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLnNldENyZWRlbnRpYWxzKFxuICAgICAge1xuICAgICAgICB0ZW5hbnQ6IHRlbmFudC5uYW1lLFxuICAgICAgICB1c2VyOiAoc3VwcG9ydFVzZXJOYW1lID8gYCR7c3VwcG9ydFVzZXJOYW1lfSRgIDogJycpICsgdXNlci51c2VyTmFtZVxuICAgICAgfSxcbiAgICAgIGF1dGhcbiAgICApO1xuXG4gICAgaWYgKHRva2VuKSB7XG4gICAgICB0aGlzLnN0b3JlQmFzaWNBdXRoVG9rZW4odG9rZW4pO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuYXV0aEZ1bGZpbGxlZCh0ZW5hbnQsIHVzZXIsIHN1cHBvcnRVc2VyTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgdGVuYW50LCB1c2VyIGFuZCBzdXBwb3J0IHVzZXIgaW5mbyB0byB0aGUgYXBwIHN0YXRlLlxuICAgKiBAcGFyYW0gdGVuYW50IFRoZSBjdXJyZW50IHRlbmFudCBvYmplY3QuXG4gICAqIEBwYXJhbSB1c2VyIFRoZSBjdXJyZW50IHVzZXIgb2JqZWN0LlxuICAgKiBAcGFyYW0gc3VwcG9ydFVzZXJOYW1lIFRoZSBjdXJyZW50IHN1cHBvcnQgdXNlciBuYW1lLlxuICAgKi9cbiAgYXN5bmMgYXV0aEZ1bGZpbGxlZCh0ZW5hbnQ/LCB1c2VyPywgc3VwcG9ydFVzZXJOYW1lPykge1xuICAgIGlmICghdGVuYW50KSB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMudGVuYW50LmN1cnJlbnQoeyB3aXRoUGFyZW50OiB0cnVlIH0pO1xuICAgICAgdGVuYW50ID0gZGF0YTtcbiAgICAgIHRoaXMuY2xpZW50LnRlbmFudCA9IHRlbmFudC5uYW1lO1xuICAgIH1cblxuICAgIGlmICghdXNlcikge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLnVzZXIuY3VycmVudCgpO1xuICAgICAgdXNlciA9IGRhdGE7XG4gICAgfVxuXG4gICAgaWYgKCFzdXBwb3J0VXNlck5hbWUpIHtcbiAgICAgIHN1cHBvcnRVc2VyTmFtZSA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy51aS5zZXRVc2VyKHsgdXNlciwgc3VwcG9ydFVzZXJOYW1lIH0pO1xuICAgIHRoaXMudWkuY3VycmVudFRlbmFudC5uZXh0KHRlbmFudCk7XG4gIH1cblxuICAvKipcbiAgICogU3dpdGNoIHRoZSBsb2dpbiBtb2RlIHRvIENvb2tpZUF1dGggaWYgdGhlXG4gICAqIHVzZXIgaGFzIGNvbmZpZ3VyZWQgdG8gdXNlIGl0IGluIGxvZ2luT3B0aW9ucy5cbiAgICogQHBhcmFtIGNyZWRlbnRpYWxzIFRoZSBjcmVkZW50aWFscyBmb3IgdGhhdCBsb2dpblxuICAgKi9cbiAgYXN5bmMgc3dpdGNoTG9naW5Nb2RlKGNyZWRlbnRpYWxzPzogSUNyZWRlbnRpYWxzKSB7XG4gICAgY29uc3QgaXNQYXNzd29yZEdyYW50TG9naW4gPSBhd2FpdCB0aGlzLmlzUGFzc3dvcmRHcmFudExvZ2luKGNyZWRlbnRpYWxzKTtcbiAgICBpZiAoaXNQYXNzd29yZEdyYW50TG9naW4gJiYgY3JlZGVudGlhbHMpIHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVPYXV0aFRva2VuKGNyZWRlbnRpYWxzKTtcbiAgICAgIGlmICghKHJlcyBhcyBSZXNwb25zZSkub2spIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzLmpzb24oKTtcbiAgICAgICAgICB0aHJvdyB7IHJlcywgZGF0YSB9O1xuICAgICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICAgIHRocm93IGV4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmNsaWVudC5zZXRBdXRoKHRoaXMuY29va2llQXV0aCk7XG4gICAgICB0aGlzLmNsZWFuTG9jYWxTdG9yYWdlKCk7XG4gICAgICB0aGlzLmJhc2ljQXV0aC5sb2dvdXQoKTtcbiAgICB9XG4gICAgcmV0dXJuIGlzUGFzc3dvcmRHcmFudExvZ2luO1xuICB9XG5cbiAgYXN5bmMgZ2VuZXJhdGVPYXV0aFRva2VuKGNyZWRlbnRpYWxzPzogSUNyZWRlbnRpYWxzKSB7XG4gICAgaWYgKChhd2FpdCB0aGlzLmlzUGFzc3dvcmRHcmFudExvZ2luKGNyZWRlbnRpYWxzKSkgJiYgY3JlZGVudGlhbHMpIHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoe1xuICAgICAgICBncmFudF90eXBlOiAnUEFTU1dPUkQnLFxuICAgICAgICB1c2VybmFtZTogY3JlZGVudGlhbHMudXNlcixcbiAgICAgICAgcGFzc3dvcmQ6IGNyZWRlbnRpYWxzLnBhc3N3b3JkLFxuICAgICAgICAuLi4oY3JlZGVudGlhbHMudGZhICE9PSB1bmRlZmluZWQgJiYgeyB0ZmFfY29kZTogY3JlZGVudGlhbHMudGZhIH0pXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhd2FpdCBuZXcgRmV0Y2hDbGllbnQoKS5mZXRjaCh0aGlzLmdldFVybEZvck9hdXRoKGNyZWRlbnRpYWxzKSwge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYm9keTogcGFyYW1zLnRvU3RyaW5nKCksXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04J1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpc1Bhc3N3b3JkR3JhbnRMb2dpbihjcmVkZW50aWFscz86IElDcmVkZW50aWFscykge1xuICAgIGxldCBsb2dpbk1vZGUgPSB0aGlzLmxvZ2luTW9kZTtcblxuICAgIGlmICh0aGlzLmlzU3VwcG9ydFVzZXIoY3JlZGVudGlhbHMpKSB7XG4gICAgICBpZiAoIXRoaXMubWFuYWdlbWVudExvZ2luTW9kZSkge1xuICAgICAgICB0aGlzLm1hbmFnZW1lbnRMb2dpbk1vZGUgPSBhd2FpdCB0aGlzLmdldE1hbmFnZW1lbnRMb2dpbk1vZGUoKTtcbiAgICAgIH1cbiAgICAgIGxvZ2luTW9kZSA9IHRoaXMubWFuYWdlbWVudExvZ2luTW9kZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50ZW5hbnRVaVNlcnZpY2UuaXNPYXV0aEludGVybmFsKGxvZ2luTW9kZSk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpZXMgaWYgdGhlIHByb3ZpZGVkIGNyZWRlbnRpYWxzIHVzZSBhIHN1cHBvcnQgdXNlciB0byBsb2cgaW4gb3Igbm90LlxuICAgKiBAcGFyYW0gY3JlZGVudGlhbHMgQ3JlZGVudGlhbHMgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIHRydWUgaWYgdXNlciBpcyBhIHN1cHBvcnQgdXNlci5cbiAgICovXG4gIGlzU3VwcG9ydFVzZXIoY3JlZGVudGlhbHM/OiBJQ3JlZGVudGlhbHMpOiBib29sZWFuIHtcbiAgICByZXR1cm4gY3JlZGVudGlhbHMgJiYgY3JlZGVudGlhbHMudXNlci5pbmNsdWRlcygnJCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIGlmIHRoZSB0ZW5hbnQgaW5wdXQgZmllbGQgc2hvdWxkIGJlIHNob3duXG4gICAqIG9yIG5vdC5cbiAgICogQHJldHVybnMgSWYgdHJ1ZSwgc2hvdyB0aGUgdGVuYW50IGlucHV0LlxuICAgKi9cbiAgc2hvd1RlbmFudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMudWkuc3RhdGUubG9naW5PcHRpb25zIHx8IHRoaXMuaXNMb2NhbCgpIHx8IHRoaXMuaXNTaG93VGVuYW50KCk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpZXMgaWYgdGhlIHRlbmFudCBzZXR1cCBzaG91bGQgYmUgc2hvd25cbiAgICogb3Igbm90LlxuICAgKiBAcmV0dXJucyBJZiB0cnVlLCBzaG93IHRoZSB0ZW5hbnQgaW5wdXQuXG4gICAqL1xuICBzaG93VGVuYW50U2V0dXAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnVpLnN0YXRlLmxvZ2luT3B0aW9ucyAmJiAhdGhpcy5pc0xvY2FsKCk7XG4gIH1cblxuICAvKipcbiAgICogTG9ncyB0aGUgdXNlciBvdXRcbiAgICogQHBhcmFtIHJlbG9hZCBJZiBzZXQgdG8gZmFsc2UsIHRoZSBwYWdlIHdpbGwgbm90IHJlbG9hZFxuICAgKi9cbiAgYXN5bmMgbG9nb3V0KHJlbG9hZCA9IHRydWUpIHtcbiAgICBsZXQgcmVzRGF0YSA9IG51bGw7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IFssIGNvb2tpZVJlc10gPSBhd2FpdCB0aGlzLnJlc2V0KCk7XG4gICAgICByZXNEYXRhID0gYXdhaXQgY29va2llUmVzLmpzb24oKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgdGhpcy5hbGVydC5yZW1vdmVMYXN0RGFuZ2VyKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChyZXNEYXRhICYmIHJlc0RhdGEudXJsKSB7XG4gICAgICAgIHRoaXMucmVkaXJlY3QocmVzRGF0YS51cmwpO1xuICAgICAgfSBlbHNlIGlmIChyZWxvYWQpIHtcbiAgICAgICAgdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUoe30sICcnLCAnJywgJycpO1xuICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgc3RvcmVkIGF1dGgtZGF0YVxuICAgKi9cbiAgYXN5bmMgcmVzZXQoKSB7XG4gICAgdGhpcy5jbGVhbkxvY2FsU3RvcmFnZSgpO1xuICAgIHRoaXMuY2xlYW5TZXNzaW9uU3RvcmFnZSgpO1xuICAgIHRoaXMucmVhbHRpbWUuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMudWkuY3VycmVudFVzZXIubmV4dChudWxsKTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoW3RoaXMuYmFzaWNBdXRoLmxvZ291dCgpLCB0aGlzLmNvb2tpZUF1dGgubG9nb3V0KCldKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyB0aGUgVEZBIHRva2VuIHRvIGxvY2FsIG9yIHNlc3Npb24gc3RvcmFnZS5cbiAgICogQHBhcmFtIHRmYVRva2VuIFRoZSB0ZmEgdG9rZW4gdG8gc2F2ZS5cbiAgICogQHBhcmFtIHN0b3JhZ2UgVGhlIHN0b3JhZ2UgdG8gdXNlIChsb2NhbCBvciBzZXNzaW9uKS5cbiAgICovXG4gIHNhdmVURkFUb2tlbih0ZmFUb2tlbjogc3RyaW5nLCBzdG9yYWdlOiBTdG9yYWdlKSB7XG4gICAgc3RvcmFnZS5zZXRJdGVtKHRoaXMuVEZBVE9LRU5fS0VZLCB0ZmFUb2tlbik7XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdCB0aGUgbWFuaWZlc3QgLT4gb24gNDAxIHVzZXIgaGFzIG5vIGFjY2VzcyB0byB0aGF0IGFwcGxpY2F0aW9uXG4gICAqIGFuZCB3ZSB0aHJvdyB0aGUgZXJyb3IgdXAgdG8gdGhlIGxvZ2luIGZvcm0uXG4gICAqL1xuICBhc3luYyB2ZXJpZnlBcHBBY2Nlc3MoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMudWkubG9hZE1hbmlmZXN0KCk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIGlmICghKGV4LnJlcyAmJiBleC5yZXMuc3RhdHVzID09PSA0MDQgJiYgdGhpcy5pc0xvY2FsKCkpKSB7XG4gICAgICAgIHRocm93IGV4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlZGlyZWN0VG9Eb21haW4oZG9tYWluKSB7XG4gICAgY29uc3Qgb3JpZ2luVXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgY29uc3QgcmVkaXJlY3RVcmwgPSBvcmlnaW5VcmwuaHJlZi5yZXBsYWNlKG9yaWdpblVybC5ob3N0bmFtZSwgZG9tYWluKTtcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHJlZGlyZWN0VXJsO1xuICB9XG5cbiAgc2hvd1Nzb0Vycm9yKGVycm9yKTogdm9pZCB7XG4gICAgY29uc3QgYm9keSA9IGVycm9yXG4gICAgICA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgIGdldHRleHQoXG4gICAgICAgICAgICAnPHA+PHN0cm9uZz5UaGUgZm9sbG93aW5nIGVycm9yIHdhcyByZXR1cm5lZCBmcm9tIHRoZSBleHRlcm5hbCBhdXRoZW50aWNhdGlvbiBzZXJ2aWNlOjwvc3Ryb25nPjwvcD48cD48Y29kZT57eyBlcnJvciB9fTwvY29kZT48L3A+LidcbiAgICAgICAgICApLFxuICAgICAgICAgIHsgZXJyb3IgfVxuICAgICAgICApXG4gICAgICA6IGdldHRleHQoJ1NTTyBsb2dpbiBmYWlsZWQuIENvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyk7XG5cbiAgICB0aGlzLm1vZGFsU2VydmljZS5hY2tub3dsZWRnZShnZXR0ZXh0KCdMb2dpbiBlcnJvcicpLCBib2R5LCBTdGF0dXMuREFOR0VSLCBnZXR0ZXh0KCdPSycpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0ZW5hbnQgdG8gdGhlIGNsaWVudCBhbmQgdXBkYXRlcyB0aGUgY3JlZGVudGlhbHMgb24gdGhlXG4gICAqIGF1dGggc3RyYXRlZ3kuXG4gICAqIEBwYXJhbSBjcmVkZW50aWFscyBUaGUgbmFtZSBvZiB0aGUgdGVuYW50LlxuICAgKiBAcGFyYW0gYXV0aFN0cmF0ZWd5IFRoZSBhdXRoZW50aWNhdGlvbiBzdHJhdGVneSB1c2VkLlxuICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIHRva2VuIGlmIGJhc2ljIGF1dGgsIG90aGVyd2lzZSB1bmRlZmluZWQuXG4gICAqL1xuICBwcml2YXRlIHNldENyZWRlbnRpYWxzKGNyZWRlbnRpYWxzOiBJQ3JlZGVudGlhbHMsIGF1dGhTdHJhdGVneTogSUF1dGhlbnRpY2F0aW9uKSB7XG4gICAgaWYgKGNyZWRlbnRpYWxzLnRlbmFudCkge1xuICAgICAgdGhpcy5jbGllbnQudGVuYW50ID0gY3JlZGVudGlhbHMudGVuYW50O1xuICAgIH1cbiAgICAvLyBDaGVjayBpZiBhIHRva2VuIGlzIGFscmVhZHkgc2V0IChjYXNlIGZvciBzdXBwb3J0IHVzZXIgbG9naW4pXG4gICAgLy8gaWYgeWVzIC0+IHdlIGp1c3QgbmVlZCB0byB1cGRhdGUgdGhlIHVzZXIsIGFuZCByZXVzZSB0aGUgdG9rZW5cbiAgICAvLyBvZiB0aGUgc3VwcG9ydCB1c2VyLlxuICAgIC8vIFRoZXJlZm9yZSB3ZSBuZWVkIHRvIHBhc3MgdXNlciBhbmQgdGVuYW50LCB0byBnZXRcbiAgICAvLyBqdXN0IHRoZSBzdG9yZWQgdG9rZW4gYW5kIG5vdGhpbmcgZWxzZSAoc2VlIEJhc2ljQXV0aC50czozMSkuXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmJhc2ljQXV0aC51cGRhdGVDcmVkZW50aWFscyh7XG4gICAgICB0ZW5hbnQ6IGNyZWRlbnRpYWxzLnRlbmFudCxcbiAgICAgIHVzZXI6IGNyZWRlbnRpYWxzLnVzZXJcbiAgICB9KTtcbiAgICBjb25zdCBuZXdDcmVkZW50aWFscyA9IHsgdG9rZW4sIC4uLmNyZWRlbnRpYWxzIH07XG5cbiAgICByZXR1cm4gYXV0aFN0cmF0ZWd5LnVwZGF0ZUNyZWRlbnRpYWxzKG5ld0NyZWRlbnRpYWxzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyBpZiB0aGUgY3VycmVudCB1c2VyIGlzIGEgZGV2ZWxvcGVyIG9yIG5vdC5cbiAgICogUnVubmluZyBvbiBsb2NhbGhvc3QgbWVhbnMgZGV2ZWxvcG1lbnQgbW9kZS5cbiAgICovXG4gIHByaXZhdGUgaXNMb2NhbCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBob3N0bmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcbiAgICByZXR1cm4gdGhpcy5sb2NhbGhvc3RJcFJlZ0V4cC50ZXN0KGhvc3RuYW1lKSB8fCB0aGlzLmxvY2FsaG9zdFJlZ0V4cC50ZXN0KGhvc3RuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIHRoZSB0b2tlbiB0byBsb2NhbCBvciBzZXNzaW9uIHN0b3JhZ2UuXG4gICAqIEBwYXJhbSB0b2tlbiBUaGUgdG9rZW4gdG8gc2F2ZS5cbiAgICogQHBhcmFtIHN0b3JhZ2UgVGhlIHN0b3JhZ2UgdG8gdXNlIChsb2NhbCBvciBzZXNzaW9uKS5cbiAgICovXG4gIHByaXZhdGUgc2F2ZVRva2VuKHRva2VuOiBzdHJpbmcsIHN0b3JhZ2U6IFN0b3JhZ2UpIHtcbiAgICBzdG9yYWdlLnNldEl0ZW0odGhpcy5UT0tFTl9LRVksIHRva2VuKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvcmVCYXNpY0F1dGhUb2tlbih0b2tlbjogc3RyaW5nKSB7XG4gICAgdGhpcy5zYXZlVG9rZW4odG9rZW4sIHNlc3Npb25TdG9yYWdlKTtcbiAgICBpZiAodGhpcy5yZW1lbWJlck1lKSB7XG4gICAgICB0aGlzLnNhdmVUb2tlbih0b2tlbiwgbG9jYWxTdG9yYWdlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsZWFuTG9jYWxTdG9yYWdlKCkge1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuVE9LRU5fS0VZKTtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLlRGQVRPS0VOX0tFWSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFuU2Vzc2lvblN0b3JhZ2UoKSB7XG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLlRPS0VOX0tFWSk7XG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLlRGQVRPS0VOX0tFWSk7XG4gIH1cblxuICBwcml2YXRlIGlzU2hvd1RlbmFudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93VGVuYW50UmVnRXhwLnRlc3Qod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWRpcmVjdCh1cmw6IHN0cmluZykge1xuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRCYXNpY0F1dGhMb2dpbk9wdGlvbihyZWZyZXNoPyk6IFByb21pc2U8SVRlbmFudExvZ2luT3B0aW9uPiB7XG4gICAgaWYgKHJlZnJlc2gpIHtcbiAgICAgIGF3YWl0IHRoaXMudWkucmVmcmVzaExvZ2luT3B0aW9ucygpO1xuICAgIH1cbiAgICBjb25zdCBsb2dpbk9wdGlvbnMgPSB0aGlzLnVpLnN0YXRlLmxvZ2luT3B0aW9ucyB8fCBbXTtcbiAgICBjb25zdCBiYXNpY0F1dGhMb2dpbk9wdGlvbiA9IGxvZ2luT3B0aW9ucy5maW5kKCh7IHR5cGUgfSkgPT4gdHlwZSA9PT0gJ0JBU0lDJyk7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShiYXNpY0F1dGhMb2dpbk9wdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBzdXBwb3J0IHVzZXIgbmFtZSBmcm9tIGNyZWRlbnRpYWxzLlxuICAgKiBAcGFyYW0gY3JlZGVudGlhbHMgQ3JlZGVudGlhbHMgb2JqZWN0IChkZWZhdWx0cyB0byB0aGUgc3RvcmVkIG9uZSkuXG4gICAqIEByZXR1cm5zIFN1cHBvcnQgdXNlciBuYW1lLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRTdXBwb3J0VXNlck5hbWUoY3JlZGVudGlhbHM6IElDcmVkZW50aWFscyA9IHRoaXMuZ2V0U3RvcmVkQ3JlZGVudGlhbHMoKSk6IHN0cmluZyB7XG4gICAgaWYgKCFjcmVkZW50aWFscykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHN1cHBvcnRVc2VyTmFtZSA9IGNyZWRlbnRpYWxzLnVzZXIubWF0Y2goL14oLitcXC8pPygoLispXFwkKT8oLispPyQvKVszXTtcbiAgICByZXR1cm4gc3VwcG9ydFVzZXJOYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgY3JlZGVudGlhbHMgb2JqZWN0IGZyb20gdGhlIHN0b3JlZCB0b2tlbi5cbiAgICogQHJldHVybnMgQ3JlZGVudGlhbHMgb2JqZWN0LlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRTdG9yZWRDcmVkZW50aWFscygpOiBJQ3JlZGVudGlhbHMge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5nZXRTdG9yZWRUb2tlbigpO1xuICAgIGlmICghdG9rZW4pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5kZWNvZGVUb2tlbih0b2tlbik7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBzdG9yZWQgdG9rZW4gZnJvbSBsb2NhbCBzdG9yYWdlIG9yIHNlc3Npb24gc3RvcmFnZS5cbiAgICogQHJldHVybnMgU3RvcmVkIHRva2VuLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRTdG9yZWRUb2tlbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLlRPS0VOX0tFWSkgfHwgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLlRPS0VOX0tFWSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBzdG9yZWQgVEZBIHRva2VuIGZyb20gbG9jYWwgc3RvcmFnZSBvciBzZXNzaW9uIHN0b3JhZ2UuXG4gICAqIEByZXR1cm5zIFN0b3JlZCBURkEgdG9rZW4uXG4gICAqL1xuICBwcml2YXRlIGdldFN0b3JlZFRmYVRva2VuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuVEZBVE9LRU5fS0VZKSB8fCBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuVEZBVE9LRU5fS0VZKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGVzIHRva2VuIHRvIGNyZWRlbnRpYWxzIG9iamVjdC5cbiAgICogQHBhcmFtIHRva2VuIFRva2VuIHRvIGRlY29kZS5cbiAgICogQHJldHVybnMgQ3JlZGVudGlhbHMgb2JqZWN0LlxuICAgKi9cbiAgcHJpdmF0ZSBkZWNvZGVUb2tlbih0b2tlbjogc3RyaW5nKTogSUNyZWRlbnRpYWxzIHtcbiAgICBjb25zdCBkZWNvZGVkID0gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZSh3aW5kb3cuYXRvYih0b2tlbikpKTtcbiAgICBjb25zdCBzcGxpdCA9IGRlY29kZWQubWF0Y2goLygoW14vXSopXFwvKT8oW14vOl0rKTooLispLyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdGVuYW50OiBzcGxpdFsyXSxcbiAgICAgIHVzZXI6IHNwbGl0WzNdLFxuICAgICAgcGFzc3dvcmQ6IHNwbGl0WzRdXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VXJsRm9yT2F1dGgoY3JlZGVudGlhbHM6IElDcmVkZW50aWFscykge1xuICAgIGlmIChpc0VtcHR5KGNyZWRlbnRpYWxzLnRlbmFudCkgJiYgdGhpcy5sb2dpbk1vZGUuaW5pdFJlcXVlc3QpIHtcbiAgICAgIGNvbnN0IHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXModGhpcy5sb2dpbk1vZGUuaW5pdFJlcXVlc3Quc3BsaXQoJz8nKS5wb3AoKSk7XG4gICAgICBjcmVkZW50aWFscy50ZW5hbnQgPSB1cmxQYXJhbXMuZ2V0KCd0ZW5hbnRfaWQnKTtcbiAgICB9XG4gICAgcmV0dXJuICFpc0VtcHR5KGNyZWRlbnRpYWxzLnRlbmFudClcbiAgICAgID8gYHRlbmFudC9vYXV0aD90ZW5hbnRfaWQ9JHtjcmVkZW50aWFscy50ZW5hbnR9YFxuICAgICAgOiBgdGVuYW50L29hdXRoYDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0TWFuYWdlbWVudExvZ2luTW9kZSgpIHtcbiAgICBjb25zdCBtYW5hZ2VtZW50TG9naW5PcHRpb25zID0gKGF3YWl0IHRoaXMudGVuYW50TG9naW5PcHRpb25zU2VydmljZS5saXN0Rm9yTWFuYWdlbWVudCgpKS5kYXRhO1xuICAgIHJldHVybiB0aGlzLnRlbmFudFVpU2VydmljZS5nZXRQcmVmZXJyZWRMb2dpbk9wdGlvbihtYW5hZ2VtZW50TG9naW5PcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlRXJyb3JTdGF0dXNDb2RlcyhyZXNwb25zZTogSUZldGNoUmVzcG9uc2UpOiBQcm9taXNlPElGZXRjaFJlc3BvbnNlPiB7XG4gICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA+PSA0MDApIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgICBjb25zdCBlcnJvciA9IGRhdGEubWVzc2FnZSB8fCBkYXRhLmVycm9yX2Rlc2NyaXB0aW9uIHx8IGRhdGEuZXJyb3I7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG59XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLW5vZGUtZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvbmF2aWdhdG9yL25hdmlnYXRvci1ub2RlLWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1cHBvcnRlZEljb25zU3VnZ2VzdGlvbnMgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ljb24tc2VsZWN0b3IvaWNvbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5hdmlnYXRvck5vZGVEYXRhIHtcbiAgLyoqXG4gICAqIE5hdmlnYXRvciBub2RlIG5hbWUuXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBuYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogTGFiZWwgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBuYXZpZ2F0b3Igbm9kZS5cbiAgICovXG4gIGxhYmVsPzogc3RyaW5nO1xuICAvKipcbiAgICogUG9zaXRpb24gb2YgdGhlIG5vZGUgaW4gdGhlIG5hdmlnYXRvci5cbiAgICovXG4gIHByaW9yaXR5PzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIHBhdGggdG8gd2hpY2ggdGhlIFVJIHdpbGwgYmUgcmVkaXJlY3RlZCBhZnRlciBjbGlja2luZyBuYXZpZ2F0b3Igbm9kZS5cbiAgICovXG4gIHBhdGg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBOYXZpZ2F0b3Igbm9kZSBpY29uLlxuICAgKi9cbiAgaWNvbj86IFN1cHBvcnRlZEljb25zU3VnZ2VzdGlvbnM7XG4gIC8qKlxuICAgKiBOYXZpZ2F0b3Igbm9kZSBpY29uIHdoZW4gZXhwYW5kZWQuXG4gICAqL1xuICBpY29uT3Blbj86IHN0cmluZztcbiAgLyoqXG4gICAqIE5hdmlnYXRvciBub2RlIHBhcmVudCBub2RlLlxuICAgKi9cbiAgcGFyZW50PzogTmF2aWdhdG9yTm9kZURhdGEgfCBzdHJpbmc7XG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIGR1cGxpY2F0ZSBub2RlIGlzIHByZXNlbnQgYW5kIGlnbm9yZSBpdC5cbiAgICovXG4gIHByZXZlbnREdXBsaWNhdGVzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNob3VsZCB0aGlzIGFzc2V0IG5vZGUgc2hvdyBkZXZpY2VzIG9yIG5vdC5cbiAgICovXG4gIGhpZGVEZXZpY2VzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIElkIHRvIGlkZW50aWZ5IHNwZWNpZmljIGZlYXR1cmUgbm9kZS5cbiAgICovXG4gIGZlYXR1cmVJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIEN1c3RvbSBjb21wb25lbnQgdG8gdXNlLlxuICAgKi9cbiAgY29tcG9uZW50PzogVHlwZTxhbnk+O1xuICBba2V5OiBzdHJpbmddOiBhbnk7IC8vIG1ha2UgZXh0ZW5zaWJsZVxufVxuIl19
|