@softheon/armature 17.31.3 → 19.0.0
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/assets/styles/_b2c-variables.scss +7 -3
- package/assets/styles/_typography.scss +9 -8
- package/assets/styles/deprecated/_button-deprecated.scss +225 -225
- package/assets/styles/deprecated/_chip-deprecated.scss +57 -57
- package/assets/styles/deprecated/_material-override-deprecated.scss +3 -3
- package/assets/styles/deprecated/_table-deprecated.scss +3 -3
- package/assets/styles/material-override/_button-toggle-group.scss +14 -14
- package/assets/styles/material-override/_button.scss +57 -57
- package/assets/styles/material-override/_calendar.scss +6 -6
- package/assets/styles/material-override/_checkbox.scss +20 -19
- package/assets/styles/material-override/_expansion-panel.scss +19 -18
- package/assets/styles/material-override/_form-field.scss +14 -14
- package/assets/styles/material-override/_menu.scss +2 -2
- package/assets/styles/material-override/_radio-button.scss +24 -23
- package/assets/styles/material-override/_slider.scss +50 -50
- package/assets/styles/material-override/_switch.scss +8 -8
- package/assets/styles/material-override/_tooltip.scss +4 -4
- package/assets/styles/sof-styles-b2b.scss +3 -3
- package/assets/styles/sof-styles.scss +13 -17
- package/fesm2022/softheon-armature-ag-grid-components.mjs +20 -20
- package/fesm2022/softheon-armature-ag-grid-components.mjs.map +1 -1
- package/fesm2022/softheon-armature.mjs +417 -400
- package/fesm2022/softheon-armature.mjs.map +1 -1
- package/lib/base-components/sof-star-rating/sof-star-rating.component.d.ts +2 -0
- package/lib/faq/components/faq/faq.component.d.ts +4 -1
- package/lib/navigation/components/navigation/navigation.component.d.ts +1 -1
- package/lib/oauth/oauth.module.d.ts +1 -2
- package/package.json +15 -19
- package/esm2022/ag-grid-components/public-api.mjs +0 -6
- package/esm2022/ag-grid-components/softheon-armature-ag-grid-components.mjs +0 -5
- package/esm2022/ag-grid-components/src/ag-grid-components.module.mjs +0 -103
- package/esm2022/ag-grid-components/src/column-options-modal/column-options.component.mjs +0 -41
- package/esm2022/ag-grid-components/src/sof-table/sof-table.component.mjs +0 -526
- package/esm2022/ag-grid-components/src/table-cell/table-cell.component.mjs +0 -23
- package/esm2022/lib/alert-banner/alert-banner-api.mjs +0 -10
- package/esm2022/lib/alert-banner/alert-banner.module.mjs +0 -42
- package/esm2022/lib/alert-banner/components/alert-banner/alert-banner.component.mjs +0 -82
- package/esm2022/lib/alert-banner/models/alert-banner-config.mjs +0 -2
- package/esm2022/lib/alert-banner/models/alert-banner-context.mjs +0 -2
- package/esm2022/lib/alert-banner/models/constants.mjs +0 -16
- package/esm2022/lib/alert-banner/services/alert-banner.service.mjs +0 -44
- package/esm2022/lib/armature.module.mjs +0 -183
- package/esm2022/lib/base-components/base-component-api.mjs +0 -23
- package/esm2022/lib/base-components/base-component.module.mjs +0 -175
- package/esm2022/lib/base-components/confirm-address/sof-confirm-address/compare-address-pipe/compare-address.pipe.mjs +0 -20
- package/esm2022/lib/base-components/confirm-address/sof-confirm-address/sof-confirm-address.component.mjs +0 -60
- package/esm2022/lib/base-components/confirm-address/sof-confirm-address-county-change/sof-confirm-address-county-change.component.mjs +0 -58
- package/esm2022/lib/base-components/sof-alert/sof-alert.component.mjs +0 -79
- package/esm2022/lib/base-components/sof-badge/sof-badge.component.mjs +0 -132
- package/esm2022/lib/base-components/sof-banner/sof-banner.component.mjs +0 -49
- package/esm2022/lib/base-components/sof-bottom-sheet/sof-bottom-sheet.component.mjs +0 -152
- package/esm2022/lib/base-components/sof-button-toggle-group/sof-button-toggle-group.component.mjs +0 -182
- package/esm2022/lib/base-components/sof-callout/sof-callout.component.mjs +0 -72
- package/esm2022/lib/base-components/sof-chip/sof-chip.component.mjs +0 -62
- package/esm2022/lib/base-components/sof-context/sof-context.component.mjs +0 -124
- package/esm2022/lib/base-components/sof-handle/sof-handle.component.mjs +0 -115
- package/esm2022/lib/base-components/sof-image-checkbox/sof-image-checkbox.component.mjs +0 -58
- package/esm2022/lib/base-components/sof-input-stepper/sof-input-stepper.component.mjs +0 -179
- package/esm2022/lib/base-components/sof-modal/sof-modal.component.mjs +0 -61
- package/esm2022/lib/base-components/sof-progress-bar/sof-progress-bar.component.mjs +0 -79
- package/esm2022/lib/base-components/sof-radio-card/sof-radio-card.component.mjs +0 -35
- package/esm2022/lib/base-components/sof-simple-alert/sof-simple-alert.component.mjs +0 -49
- package/esm2022/lib/base-components/sof-star-rating/sof-star-rating.component.mjs +0 -38
- package/esm2022/lib/base-components/sof-utility-button/sof-utility-button.component.mjs +0 -62
- package/esm2022/lib/component-save-print/components/component-save-print/component-save-print.component.mjs +0 -91
- package/esm2022/lib/component-save-print/services/component-save-print.service.mjs +0 -30
- package/esm2022/lib/component-save-print/sof-ar-component-save-print.module.mjs +0 -29
- package/esm2022/lib/core/client-generated/api/session.service.mjs +0 -242
- package/esm2022/lib/core/client-generated/configuration.mjs +0 -59
- package/esm2022/lib/core/client-generated/encoder.mjs +0 -17
- package/esm2022/lib/core/client-generated/model/applicationUserModel.mjs +0 -20
- package/esm2022/lib/core/client-generated/model/assertedUserModel.mjs +0 -2
- package/esm2022/lib/core/client-generated/model/brandingModel.mjs +0 -2
- package/esm2022/lib/core/client-generated/model/errorModel.mjs +0 -13
- package/esm2022/lib/core/client-generated/model/folderLink.mjs +0 -13
- package/esm2022/lib/core/client-generated/model/identityProfile.mjs +0 -2
- package/esm2022/lib/core/client-generated/model/models.mjs +0 -20
- package/esm2022/lib/core/client-generated/model/oAuthModel.mjs +0 -13
- package/esm2022/lib/core/client-generated/model/preferencesRow.mjs +0 -13
- package/esm2022/lib/core/client-generated/model/rolesRow.mjs +0 -13
- package/esm2022/lib/core/client-generated/model/sessionGetResponseModel.mjs +0 -2
- package/esm2022/lib/core/client-generated/model/sessionPostRequestModel.mjs +0 -2
- package/esm2022/lib/core/client-generated/model/sessionPostResponseModel.mjs +0 -2
- package/esm2022/lib/core/client-generated/model/sessionPutRequestModel.mjs +0 -2
- package/esm2022/lib/core/client-generated/model/sessionPutResponseModel.mjs +0 -2
- package/esm2022/lib/core/client-generated/model/sessionResponseModel.mjs +0 -2
- package/esm2022/lib/core/client-generated/model/settingsProfile.mjs +0 -2
- package/esm2022/lib/core/client-generated/model/themePaletteColorsModel.mjs +0 -13
- package/esm2022/lib/core/client-generated/model/themePaletteModel.mjs +0 -2
- package/esm2022/lib/core/client-generated/model/trackingModel.mjs +0 -13
- package/esm2022/lib/core/client-generated/model/validationRecordsRow.mjs +0 -13
- package/esm2022/lib/core/client-generated/variables.mjs +0 -9
- package/esm2022/lib/core/components/app-template/app-template.component.mjs +0 -269
- package/esm2022/lib/core/functions/guid.mjs +0 -11
- package/esm2022/lib/core/functions/naming-convention.mjs +0 -33
- package/esm2022/lib/core/functions/route-to-pre-login-route.mjs +0 -13
- package/esm2022/lib/core/initializer/abstract-startup-service.mjs +0 -4
- package/esm2022/lib/core/initializer/initializer.service.mjs +0 -302
- package/esm2022/lib/core/interceptors/armature-auth-token-append.interceptor.mjs +0 -73
- package/esm2022/lib/core/models/base-config.mjs +0 -2
- package/esm2022/lib/core/models/constants.mjs +0 -17
- package/esm2022/lib/core/models/data-store-config.mjs +0 -4
- package/esm2022/lib/core/models/federated-module-config.mjs +0 -2
- package/esm2022/lib/core/models/header-config.mjs +0 -2
- package/esm2022/lib/core/models/http-verbs.mjs +0 -9
- package/esm2022/lib/core/models/nav-panel-config.mjs +0 -2
- package/esm2022/lib/core/models/navigation-config.mjs +0 -2
- package/esm2022/lib/core/models/oidc-auth-settings.mjs +0 -2
- package/esm2022/lib/core/models/route-path.mjs +0 -7
- package/esm2022/lib/core/models/session-config.mjs +0 -4
- package/esm2022/lib/core/models/styles.mjs +0 -2
- package/esm2022/lib/core/models/subdomain-config.mjs +0 -2
- package/esm2022/lib/core/models/typed-session.mjs +0 -4
- package/esm2022/lib/core/models/user-entity-service-config.mjs +0 -12
- package/esm2022/lib/core/services/authorization.service.mjs +0 -175
- package/esm2022/lib/core/services/banner.service.mjs +0 -43
- package/esm2022/lib/core/services/base-config.service.mjs +0 -32
- package/esm2022/lib/core/services/custom-auth-config.service.mjs +0 -4
- package/esm2022/lib/core/services/default-config.service.mjs +0 -19
- package/esm2022/lib/core/services/federated-module.service.mjs +0 -60
- package/esm2022/lib/core/services/session.service.mjs +0 -387
- package/esm2022/lib/core/services/user-entity.service.mjs +0 -145
- package/esm2022/lib/distributed-cache/client-generated/api/api.mjs +0 -4
- package/esm2022/lib/distributed-cache/client-generated/api/cache.service.mjs +0 -213
- package/esm2022/lib/distributed-cache/client-generated/configuration.mjs +0 -59
- package/esm2022/lib/distributed-cache/client-generated/encoder.mjs +0 -17
- package/esm2022/lib/distributed-cache/client-generated/model/cacheExpirationType.mjs +0 -16
- package/esm2022/lib/distributed-cache/client-generated/model/createCacheEntryRequestModel.mjs +0 -2
- package/esm2022/lib/distributed-cache/client-generated/model/models.mjs +0 -5
- package/esm2022/lib/distributed-cache/client-generated/model/retrieveCacheEntryResponseModel.mjs +0 -13
- package/esm2022/lib/distributed-cache/client-generated/model/updateCacheEntryRequestModel.mjs +0 -13
- package/esm2022/lib/distributed-cache/client-generated/variables.mjs +0 -9
- package/esm2022/lib/distributed-cache/distributed-cache-api.mjs +0 -8
- package/esm2022/lib/distributed-cache/distributed-cache.module.mjs +0 -38
- package/esm2022/lib/distributed-cache/models/constants.mjs +0 -3
- package/esm2022/lib/distributed-cache/models/policy-person.mjs +0 -9
- package/esm2022/lib/distributed-cache/services/server-cache.service.mjs +0 -48
- package/esm2022/lib/error/components/error-common/error-common.component.mjs +0 -25
- package/esm2022/lib/error/error-api.mjs +0 -7
- package/esm2022/lib/error/error.module.mjs +0 -31
- package/esm2022/lib/error/models/error-common-config.mjs +0 -8
- package/esm2022/lib/faq/components/faq/faq.component.mjs +0 -40
- package/esm2022/lib/faq/faq-api.mjs +0 -8
- package/esm2022/lib/faq/faq.module.mjs +0 -41
- package/esm2022/lib/faq/models/faq-config.mjs +0 -4
- package/esm2022/lib/faq/models/faq.mjs +0 -8
- package/esm2022/lib/feedback-tool/components/feedback-tool/feedback-tool.component.mjs +0 -81
- package/esm2022/lib/feedback-tool/feedback-tool-api.mjs +0 -5
- package/esm2022/lib/feedback-tool/feedback-tool.module.mjs +0 -44
- package/esm2022/lib/footer/components/footer/footer.component.mjs +0 -25
- package/esm2022/lib/footer/components/site-map/site-map.component.mjs +0 -25
- package/esm2022/lib/footer/footer-api.mjs +0 -10
- package/esm2022/lib/footer/footer.module.mjs +0 -45
- package/esm2022/lib/footer/models/enum/site-map-direction.mjs +0 -15
- package/esm2022/lib/footer/models/footer-config.mjs +0 -4
- package/esm2022/lib/footer/models/site-map-models.mjs +0 -2
- package/esm2022/lib/forms/components/sof-address/sof-address.component.mjs +0 -113
- package/esm2022/lib/forms/directives/alphanumeric/alphanumeric.directive.mjs +0 -78
- package/esm2022/lib/forms/directives/date-input-filter/date-input-filter.directive.mjs +0 -20
- package/esm2022/lib/forms/directives/input-trim/input-trim.directive.mjs +0 -110
- package/esm2022/lib/forms/directives/letters-characters/letters-characters.directive.mjs +0 -87
- package/esm2022/lib/forms/directives/letters-only/letters-only.directive.mjs +0 -85
- package/esm2022/lib/forms/directives/numbers-only/numbers-only.directive.mjs +0 -55
- package/esm2022/lib/forms/forms-api.mjs +0 -21
- package/esm2022/lib/forms/forms.module.mjs +0 -91
- package/esm2022/lib/forms/models/address.mjs +0 -2
- package/esm2022/lib/forms/models/constants.mjs +0 -10
- package/esm2022/lib/forms/models/county.mjs +0 -2
- package/esm2022/lib/forms/models/enums/states.mjs +0 -66
- package/esm2022/lib/forms/pipes/phone-format.pipe.mjs +0 -33
- package/esm2022/lib/forms/services/alert.service.mjs +0 -167
- package/esm2022/lib/header/components/header/header.component.mjs +0 -165
- package/esm2022/lib/header/components/mobile-header-menu/mobile-header-menu.component.mjs +0 -39
- package/esm2022/lib/header/components/sof-header/menu-prevent-close-directive/menu-prevent-close.directive.mjs +0 -21
- package/esm2022/lib/header/components/sof-header/sof-header.component.mjs +0 -158
- package/esm2022/lib/header/components/sof-header/user-initials-pipe/user-initials.pipe.mjs +0 -22
- package/esm2022/lib/header/header-api.mjs +0 -15
- package/esm2022/lib/header/header.module.mjs +0 -90
- package/esm2022/lib/header/models/header-auth.settings.mjs +0 -32
- package/esm2022/lib/header/models/header-external-links.mjs +0 -2
- package/esm2022/lib/header/models/header-language.settings.mjs +0 -2
- package/esm2022/lib/header/models/header-theme.settings.mjs +0 -2
- package/esm2022/lib/header/models/header.settings.mjs +0 -2
- package/esm2022/lib/header/models/mobile-header-nav.settings.mjs +0 -2
- package/esm2022/lib/mfe/components/entity-base/entity-base.component.mjs +0 -72
- package/esm2022/lib/mfe/components/entity-inject-wrapper/entity-inject-wrapper.component.mjs +0 -83
- package/esm2022/lib/mfe/mfe.module.mjs +0 -24
- package/esm2022/lib/mfe/models/entity-config-base.mjs +0 -2
- package/esm2022/lib/mfe/models/entity-dto.mjs +0 -5
- package/esm2022/lib/mfe/services/entity-helper.service.mjs +0 -113
- package/esm2022/lib/navigation/components/b2b-nav/b2b-nav.component.mjs +0 -232
- package/esm2022/lib/navigation/components/navigation/navigation.component.mjs +0 -560
- package/esm2022/lib/navigation/components/sof-breadcrumbs/sof-breadcrumbs-hierarchy/sof-breadcrumbs-hierarchy.component.mjs +0 -60
- package/esm2022/lib/navigation/components/sof-breadcrumbs/sof-breadcrumbs-history/sof-breadcrumbs-history.component.mjs +0 -76
- package/esm2022/lib/navigation/components/sof-navigation-panel/models/nav-panel-logo.mjs +0 -2
- package/esm2022/lib/navigation/components/sof-navigation-panel/models/nav-panel-nodes.mjs +0 -2
- package/esm2022/lib/navigation/components/sof-navigation-panel/models/nav-panel-settings.mjs +0 -2
- package/esm2022/lib/navigation/components/sof-navigation-panel/sof-nav-panel.component.mjs +0 -105
- package/esm2022/lib/navigation/components/sof-sub-navigation/sof-sub-navigation.component.mjs +0 -60
- package/esm2022/lib/navigation/components/sof-tabs-navigation/sof-tabs.component.mjs +0 -22
- package/esm2022/lib/navigation/models/breadcrumb.mjs +0 -3
- package/esm2022/lib/navigation/models/nav-theme.settings.mjs +0 -2
- package/esm2022/lib/navigation/models/nav.settings.mjs +0 -2
- package/esm2022/lib/navigation/models/navigation.mjs +0 -2
- package/esm2022/lib/navigation/navigation-api.mjs +0 -18
- package/esm2022/lib/navigation/navigation.module.mjs +0 -139
- package/esm2022/lib/oauth/models/constants.mjs +0 -6
- package/esm2022/lib/oauth/models/generated/accountManagementAssertionModel.mjs +0 -2
- package/esm2022/lib/oauth/models/generated/accountManagementRefreshRequestModel.mjs +0 -2
- package/esm2022/lib/oauth/models/generated/accountManagementResponseModel.mjs +0 -2
- package/esm2022/lib/oauth/models/generated/applicationType.mjs +0 -33
- package/esm2022/lib/oauth/models/generated/coverageDetail.mjs +0 -19
- package/esm2022/lib/oauth/models/generated/finance.mjs +0 -13
- package/esm2022/lib/oauth/models/generated/iSsoResponseModel.mjs +0 -13
- package/esm2022/lib/oauth/models/generated/iSsoResponseModelAccountManagementAssertionModel.mjs +0 -2
- package/esm2022/lib/oauth/models/generated/person.mjs +0 -13
- package/esm2022/lib/oauth/models/generated/policy.mjs +0 -2
- package/esm2022/lib/oauth/models/generated/refreshResponseModel.mjs +0 -13
- package/esm2022/lib/oauth/models/hybrid-saml-oauth-config.mjs +0 -4
- package/esm2022/lib/oauth/oauth-api.mjs +0 -15
- package/esm2022/lib/oauth/oauth.module.mjs +0 -29
- package/esm2022/lib/oauth/services/hybrid-saml-oauth.service.mjs +0 -201
- package/esm2022/lib/rbac/directives/rbac-action.directive.mjs +0 -50
- package/esm2022/lib/rbac/models/access-token-claims.mjs +0 -23
- package/esm2022/lib/rbac/models/constants.mjs +0 -4
- package/esm2022/lib/rbac/models/decoded-access-token.mjs +0 -69
- package/esm2022/lib/rbac/models/rbac-config.mjs +0 -4
- package/esm2022/lib/rbac/models/role-access.mjs +0 -10
- package/esm2022/lib/rbac/rbac-api.mjs +0 -15
- package/esm2022/lib/rbac/rbac.module.mjs +0 -51
- package/esm2022/lib/rbac/services/ar-role-nav.service.mjs +0 -104
- package/esm2022/lib/rbac/services/oauth2-role.service.mjs +0 -114
- package/esm2022/lib/rbac/services/role-nav.service.mjs +0 -4
- package/esm2022/lib/rbac/services/tokens.mjs +0 -4
- package/esm2022/lib/resize-panels/components/resize-panels/resize-panels.component.mjs +0 -156
- package/esm2022/lib/resize-panels/models/resize-event.mjs +0 -2
- package/esm2022/lib/resize-panels/resize-panels-api.mjs +0 -5
- package/esm2022/lib/resize-panels/resize-panels.module.mjs +0 -23
- package/esm2022/lib/rum/models/arm-error.mjs +0 -29
- package/esm2022/lib/rum/models/rum-config.mjs +0 -4
- package/esm2022/lib/rum/rum-api.mjs +0 -10
- package/esm2022/lib/rum/rum.module.mjs +0 -48
- package/esm2022/lib/rum/services/rum.service.mjs +0 -115
- package/esm2022/lib/rum/services/shared-error.service.mjs +0 -45
- package/esm2022/lib/rum/services/softheon-error-handler.service.mjs +0 -76
- package/esm2022/lib/saml/components/redirect-saml/redirect-saml.component.mjs +0 -79
- package/esm2022/lib/saml/models/i-saml-request.mjs +0 -2
- package/esm2022/lib/saml/models/i-saml-response.mjs +0 -2
- package/esm2022/lib/saml/models/redirect-saml-request.mjs +0 -4
- package/esm2022/lib/saml/models/sso-gateway-model.mjs +0 -4
- package/esm2022/lib/saml/saml-api.mjs +0 -15
- package/esm2022/lib/saml/saml.module.mjs +0 -43
- package/esm2022/lib/saml/services/entry/abstract-saml-entry.service.mjs +0 -4
- package/esm2022/lib/saml/services/entry/sso-gateway-entry.service.mjs +0 -36
- package/esm2022/lib/saml/services/send-off/abstract-saml.service.mjs +0 -4
- package/esm2022/lib/saml/services/send-off/saml.service.mjs +0 -39
- package/esm2022/lib/sof-pipe/constants/constants.mjs +0 -17
- package/esm2022/lib/sof-pipe/models/sof-date-pipe-format.mjs +0 -2
- package/esm2022/lib/sof-pipe/pipes/sof-blank/sof-blank.pipe.mjs +0 -39
- package/esm2022/lib/sof-pipe/pipes/sof-date/sof-date.pipe.mjs +0 -59
- package/esm2022/lib/sof-pipe/pipes/sof-ssn/sof-ssn.pipe.mjs +0 -28
- package/esm2022/lib/sof-pipe/sof-pipe.api.mjs +0 -9
- package/esm2022/lib/sof-pipe/sof-pipe.module.mjs +0 -39
- package/esm2022/lib/theming/directives/css-override.directive.mjs +0 -69
- package/esm2022/lib/theming/models/css-override.mjs +0 -11
- package/esm2022/lib/theming/services/theme.service.mjs +0 -187
- package/esm2022/lib/theming/theme-api.mjs +0 -6
- package/esm2022/lib/theming/theme.module.mjs +0 -31
- package/esm2022/public-api.mjs +0 -60
- package/esm2022/softheon-armature.mjs +0 -5
|
@@ -1,526 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, inject, Input, Output, signal, ViewChild } from '@angular/core';
|
|
2
|
-
import { take, tap } from 'rxjs';
|
|
3
|
-
import { MatDialog } from '@angular/material/dialog';
|
|
4
|
-
import { SofColumnOptionsComponent } from '../column-options-modal/column-options.component';
|
|
5
|
-
import { TranslateService } from '@ngx-translate/core';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@ngbracket/ngx-layout/flex";
|
|
8
|
-
import * as i2 from "@ngbracket/ngx-layout/extended";
|
|
9
|
-
import * as i3 from "@angular/forms";
|
|
10
|
-
import * as i4 from "ag-grid-angular";
|
|
11
|
-
import * as i5 from "@angular/material/form-field";
|
|
12
|
-
import * as i6 from "@angular/material/select";
|
|
13
|
-
import * as i7 from "@angular/material/core";
|
|
14
|
-
import * as i8 from "@angular/material/button";
|
|
15
|
-
import * as i9 from "@angular/material/input";
|
|
16
|
-
import * as i10 from "@angular/material/tooltip";
|
|
17
|
-
import * as i11 from "@angular/material/badge";
|
|
18
|
-
import * as i12 from "@angular/material/progress-spinner";
|
|
19
|
-
import * as i13 from "@ngx-translate/core";
|
|
20
|
-
/** The Softheon Armature Table component */
|
|
21
|
-
export class SofTableComponent {
|
|
22
|
-
constructor() {
|
|
23
|
-
/** Column Definitions: Defines & controls grid columns. */
|
|
24
|
-
this.colDefs = [];
|
|
25
|
-
/** Pages sizes */
|
|
26
|
-
this.paginationPageSizeSelector = [10, 20, 50, 100];
|
|
27
|
-
/** Enable search */
|
|
28
|
-
this.enableSearch = true;
|
|
29
|
-
/** Enable custom text filter dropdowns */
|
|
30
|
-
this.enableFilter = true;
|
|
31
|
-
/** Enable column options modal selection */
|
|
32
|
-
this.enableColumnOptions = true;
|
|
33
|
-
/** Enable export button to output filtered row data */
|
|
34
|
-
this.enableExport = false;
|
|
35
|
-
/**
|
|
36
|
-
* To display the text on the column options modal, which states -
|
|
37
|
-
* `"Options will be saved for the next time you log in."`
|
|
38
|
-
* @default false
|
|
39
|
-
* @description set to true if set-up for saving preferences to User data.
|
|
40
|
-
* @note You can still save preferences to _local_ or _session_ storage
|
|
41
|
-
* using the `savedColumnState` input, and `updatedColumnState` output event.
|
|
42
|
-
* @see The Demo site is saving to local storage.
|
|
43
|
-
*/
|
|
44
|
-
this.showSaveColumnOptionsText = false;
|
|
45
|
-
/** Output updated column options event to save to user or browser storage */
|
|
46
|
-
this.updatedColumnState = new EventEmitter();
|
|
47
|
-
/** Output filtered/sorted row data and table headers, all values returned will be formatted & translated */
|
|
48
|
-
this.filteredRowDataForExport = new EventEmitter();
|
|
49
|
-
/**
|
|
50
|
-
* Keep track of the current column state
|
|
51
|
-
* @note If columns are re-defined (onChanges), this state will be applied
|
|
52
|
-
*/
|
|
53
|
-
this.currentColumnState = {};
|
|
54
|
-
/** Column names that should be filterable */
|
|
55
|
-
this.colFilters = [];
|
|
56
|
-
/** Row Height for table */
|
|
57
|
-
this.rowHeight = 48;
|
|
58
|
-
/** Current Page Index */
|
|
59
|
-
this.currentPage = 0;
|
|
60
|
-
/** Is the table ready to be displayed */
|
|
61
|
-
this.isGridDataRendered = signal(false);
|
|
62
|
-
/** Default Page Size */
|
|
63
|
-
this.paginationPageSize = 20;
|
|
64
|
-
/** Tool tip show delay */
|
|
65
|
-
this.tooltipShowDelay = 500;
|
|
66
|
-
/** Number of filters used */
|
|
67
|
-
this.filterCount = 0;
|
|
68
|
-
/**
|
|
69
|
-
* Default Column Definition
|
|
70
|
-
* @note (suppressKeyboardEvent) Table cells can be navigated with the arrow keys,
|
|
71
|
-
* if the cell contains a button you can Tab into the button, enter | space to interact.
|
|
72
|
-
*/
|
|
73
|
-
this.defaultColDef = {
|
|
74
|
-
resizable: false,
|
|
75
|
-
suppressHeaderMenuButton: true,
|
|
76
|
-
suppressMovable: true,
|
|
77
|
-
cellStyle: { justifyContent: "center" },
|
|
78
|
-
suppressKeyboardEvent: (params) => {
|
|
79
|
-
return params.event.key === 'Tab' ? true : false;
|
|
80
|
-
},
|
|
81
|
-
filterParams: {
|
|
82
|
-
maxNumConditions: 100, // by default filters have a max condition limit of only 2
|
|
83
|
-
}
|
|
84
|
-
};
|
|
85
|
-
/** Length of data */
|
|
86
|
-
this.totalLength = 0;
|
|
87
|
-
/** Page selector array */
|
|
88
|
-
this.pageSelector = [];
|
|
89
|
-
/** The list of filters and the selected values */
|
|
90
|
-
this.filterSelections = [];
|
|
91
|
-
/** mat-dialog */
|
|
92
|
-
this.dialog = inject(MatDialog);
|
|
93
|
-
/** Translation service */
|
|
94
|
-
this.translateService = inject(TranslateService);
|
|
95
|
-
}
|
|
96
|
-
/** On component init */
|
|
97
|
-
ngOnInit() {
|
|
98
|
-
this.resizeGrid();
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Angular On Changes
|
|
102
|
-
* @param changes The input changes
|
|
103
|
-
*/
|
|
104
|
-
ngOnChanges(changes) {
|
|
105
|
-
if (changes.rowData && !changes.rowData.firstChange && !!this.gridApi) {
|
|
106
|
-
this.totalLength = this.rowData?.length ?? 0; // handles null, undefined and [] data return, so will not load indefinitely
|
|
107
|
-
setTimeout(() => {
|
|
108
|
-
this.populateFilters();
|
|
109
|
-
this.handlePageChangeText();
|
|
110
|
-
this.isGridDataRendered.set(true);
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
if (changes.colDefs && !changes.colDefs.firstChange && !!this.gridApi) {
|
|
114
|
-
setTimeout(() => {
|
|
115
|
-
this.gridApi.applyColumnState(this.currentColumnState);
|
|
116
|
-
this.populateFilters();
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Called when the grid has ingested the input data
|
|
122
|
-
* @param params Grid Ready Event,
|
|
123
|
-
* The grid has initialized and is ready for most api calls, but may not be fully rendered yet.
|
|
124
|
-
* @note you can not access this.gridApi before this function is run,
|
|
125
|
-
* any attempts to access this.gridApi in this components ngOnInit or the first ngOnChanges cycle
|
|
126
|
-
* will result in a type error; being this.gridApi is undefined at that time.
|
|
127
|
-
*/
|
|
128
|
-
onGridReady(params) {
|
|
129
|
-
this.gridApi = params.api;
|
|
130
|
-
this.currentPage = this.gridApi.paginationGetCurrentPage() + 1;
|
|
131
|
-
this.totalLength = this.gridApi.paginationGetRowCount();
|
|
132
|
-
window.onresize = () => {
|
|
133
|
-
const mobileWidthThreshold = 752;
|
|
134
|
-
if (window.innerWidth <= mobileWidthThreshold) {
|
|
135
|
-
this.rowHeight = 40;
|
|
136
|
-
this.paginationPageSize = 10;
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
this.resizeGrid();
|
|
140
|
-
}
|
|
141
|
-
this.handlePageChangeText();
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
/** Fired the first time data is rendered into the grid. */
|
|
145
|
-
onFirstDataRendered() {
|
|
146
|
-
if (!this.savedColumnState?.state.length) {
|
|
147
|
-
const columnState = structuredClone(this.gridApi.getColumnState());
|
|
148
|
-
this.savedColumnState = {
|
|
149
|
-
state: columnState,
|
|
150
|
-
applyOrder: true
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
this.gridApi.applyColumnState(this.savedColumnState);
|
|
154
|
-
this.updatedColumnState.emit(this.savedColumnState);
|
|
155
|
-
this.currentColumnState = this.savedColumnState;
|
|
156
|
-
this.populateFilters();
|
|
157
|
-
this.handlePageChangeText();
|
|
158
|
-
this.isGridDataRendered.set(true);
|
|
159
|
-
}
|
|
160
|
-
/** Resize grid from size mode */
|
|
161
|
-
resizeGrid() {
|
|
162
|
-
if (this.sizeMode === 'Compact') {
|
|
163
|
-
this.rowHeight = 40;
|
|
164
|
-
}
|
|
165
|
-
else if (this.sizeMode === 'Roomy') {
|
|
166
|
-
this.rowHeight = 56;
|
|
167
|
-
}
|
|
168
|
-
else {
|
|
169
|
-
this.rowHeight = 48;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* On page selection change
|
|
174
|
-
* @param value The selected page number
|
|
175
|
-
*/
|
|
176
|
-
onPageNumberChange(value) {
|
|
177
|
-
// The page values are 1 off to make a 1-based array, but the actual pages are a 0-based array.
|
|
178
|
-
this.gridApi.paginationGoToPage(value - 1);
|
|
179
|
-
}
|
|
180
|
-
/** On next page event */
|
|
181
|
-
nextPage() {
|
|
182
|
-
this.gridApi.paginationGoToNextPage();
|
|
183
|
-
this.handlePageChangeText();
|
|
184
|
-
this.currentPage = this.gridApi.paginationGetCurrentPage() + 1;
|
|
185
|
-
}
|
|
186
|
-
/** On Previous Page Event */
|
|
187
|
-
previousPage() {
|
|
188
|
-
this.gridApi.paginationGoToPreviousPage();
|
|
189
|
-
this.handlePageChangeText();
|
|
190
|
-
this.currentPage = this.gridApi.paginationGetCurrentPage() + 1;
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* On Change Page Size Event
|
|
194
|
-
* @param event The pagination event
|
|
195
|
-
*/
|
|
196
|
-
changePageSize(event) {
|
|
197
|
-
// Only need to do this work if the page size has changed.
|
|
198
|
-
if (event.newPageSize) {
|
|
199
|
-
// Update the total number of filtered rows.
|
|
200
|
-
this.totalLength = this.gridApi.paginationGetRowCount();
|
|
201
|
-
// Handle text changes
|
|
202
|
-
this.handlePageChangeText();
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Called when the grid filter is changed
|
|
207
|
-
* @todo update the filter dropdown options based on the filtered data set, instead of the complete data set.
|
|
208
|
-
*/
|
|
209
|
-
onFilterChanged() {
|
|
210
|
-
const previousTotalLength = Number(this.totalLength);
|
|
211
|
-
// Update the total number of filtered rows.
|
|
212
|
-
this.totalLength = this.gridApi.paginationGetRowCount();
|
|
213
|
-
if (this.totalLength !== previousTotalLength) {
|
|
214
|
-
this.ariaResultsCount.nativeElement.innerHTML = "";
|
|
215
|
-
this.ariaResultsCount.nativeElement.innerHTML = this.totalLength === 0
|
|
216
|
-
? this.translateService.instant('armature.sof-table.screen-reader.filtered-results.no-results')
|
|
217
|
-
: this.translateService.instant('armature.sof-table.screen-reader.filtered-results.has-results', { 'resultsCount': this.totalLength });
|
|
218
|
-
setTimeout(() => {
|
|
219
|
-
this.ariaResultsCount.nativeElement.innerHTML = "";
|
|
220
|
-
}, 100);
|
|
221
|
-
}
|
|
222
|
-
this.handlePageChangeText();
|
|
223
|
-
}
|
|
224
|
-
/** Generated text for showing pages in format: 1-11 of 11 */
|
|
225
|
-
handlePageChangeText() {
|
|
226
|
-
// Handle empty table
|
|
227
|
-
if (!this.totalLength || this.paginationPageSize === 0) {
|
|
228
|
-
// Reset the pagination UI
|
|
229
|
-
this.totalNumberOfPages = 1;
|
|
230
|
-
this.pageSelector = [1];
|
|
231
|
-
this.pageChangeText = `0`;
|
|
232
|
-
this.gridApi.showNoRowsOverlay();
|
|
233
|
-
return;
|
|
234
|
-
}
|
|
235
|
-
else {
|
|
236
|
-
this.gridApi.hideOverlay();
|
|
237
|
-
}
|
|
238
|
-
// Update the total number of pages
|
|
239
|
-
this.totalNumberOfPages = this.gridApi.paginationGetTotalPages() || Math.ceil(this.totalLength / this.paginationPageSize) || 1;
|
|
240
|
-
// Reset the page selector
|
|
241
|
-
this.currentPage = 1;
|
|
242
|
-
const pageSelector = [];
|
|
243
|
-
for (let i = 1; i <= this.totalNumberOfPages; i++) {
|
|
244
|
-
pageSelector.push(i);
|
|
245
|
-
}
|
|
246
|
-
this.pageSelector = pageSelector;
|
|
247
|
-
const length = Math.max(this.totalLength, 0);
|
|
248
|
-
const pageSize = this.paginationPageSize;
|
|
249
|
-
const startIndex = this.gridApi.paginationGetCurrentPage() * pageSize;
|
|
250
|
-
const endIndex = startIndex < length ? Math.min(startIndex + pageSize, length) : startIndex + pageSize;
|
|
251
|
-
this.pageChangeText = `${startIndex + 1} - ${endIndex}`;
|
|
252
|
-
}
|
|
253
|
-
/**
|
|
254
|
-
* Apply the search filter on data when search text changed
|
|
255
|
-
*/
|
|
256
|
-
onSearchTextChanged() {
|
|
257
|
-
this.gridApi.setGridOption("quickFilterText", this.gridSearchTextInput.nativeElement.value);
|
|
258
|
-
}
|
|
259
|
-
/** Toggle the filter panel display */
|
|
260
|
-
toggleFilterPanel() {
|
|
261
|
-
this.filterOpenState = !this.filterOpenState;
|
|
262
|
-
}
|
|
263
|
-
/** Apply the selected filters */
|
|
264
|
-
applyFilters() {
|
|
265
|
-
let tableFilterModel = {};
|
|
266
|
-
for (let i = 0; i < this.colFilters.length; i++) {
|
|
267
|
-
const colFilter = this.colFilters[i];
|
|
268
|
-
const selectedElements = this.filterSelections[i];
|
|
269
|
-
if (!selectedElements.length) {
|
|
270
|
-
// Reset out the column filters
|
|
271
|
-
this.gridApi.setColumnFilterModel(colFilter.header, null);
|
|
272
|
-
tableFilterModel[colFilter.header] = null;
|
|
273
|
-
}
|
|
274
|
-
else if (selectedElements.length == 1) {
|
|
275
|
-
// Set the single filter for the column
|
|
276
|
-
let filterModel = { filterType: 'text', type: 'equals', filter: selectedElements[0] };
|
|
277
|
-
// Apply the filter model to the column
|
|
278
|
-
tableFilterModel[colFilter.header] = filterModel;
|
|
279
|
-
}
|
|
280
|
-
else {
|
|
281
|
-
// Set multiple OR filters for the column
|
|
282
|
-
let filterModels = { filterType: 'text', operator: 'OR', conditions: [] };
|
|
283
|
-
// Set the selected elements in the model
|
|
284
|
-
for (const selectedElement of selectedElements) {
|
|
285
|
-
filterModels.conditions.push({ filterType: 'text', type: 'equals', filter: selectedElement });
|
|
286
|
-
}
|
|
287
|
-
// Apply the filter model collection to the column
|
|
288
|
-
tableFilterModel[colFilter.header] = filterModels;
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
// Once everything is set, update the filters
|
|
292
|
-
this.filterCount = this.getFilterCount();
|
|
293
|
-
this.gridApi.setFilterModel(tableFilterModel);
|
|
294
|
-
this.gridApi.onFilterChanged();
|
|
295
|
-
}
|
|
296
|
-
/** Clear all filters */
|
|
297
|
-
clearFilters() {
|
|
298
|
-
// Clear all selections
|
|
299
|
-
for (let i = 0; i < this.filterSelections.length; i++) {
|
|
300
|
-
this.filterSelections[i] = [];
|
|
301
|
-
}
|
|
302
|
-
// Set the full grid filter model to null
|
|
303
|
-
this.gridApi.setFilterModel(null);
|
|
304
|
-
// Update the display
|
|
305
|
-
this.gridApi.onFilterChanged();
|
|
306
|
-
this.filterCount = this.getFilterCount();
|
|
307
|
-
}
|
|
308
|
-
/**
|
|
309
|
-
* Returns true if no filters are selected
|
|
310
|
-
* @returns True if a filter is selected, false otherwise.
|
|
311
|
-
*/
|
|
312
|
-
hasEmptyFilters() {
|
|
313
|
-
if (!this.filterSelections || !this.filterSelections.length) {
|
|
314
|
-
return true;
|
|
315
|
-
}
|
|
316
|
-
for (const filterSelect of this.filterSelections) {
|
|
317
|
-
// If at least one filter has been selected, return false
|
|
318
|
-
if (filterSelect.length) {
|
|
319
|
-
return false;
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
return true;
|
|
323
|
-
}
|
|
324
|
-
/** Cancel the changes to the filter and closes the filter panel */
|
|
325
|
-
cancelFilterChanges() {
|
|
326
|
-
//Sets the filter selections on filter panel
|
|
327
|
-
this.setFilterSelections();
|
|
328
|
-
// Close the filter panel
|
|
329
|
-
this.toggleFilterPanel();
|
|
330
|
-
}
|
|
331
|
-
/** Populates the filter dropdowns */
|
|
332
|
-
populateFilters() {
|
|
333
|
-
// Reset the filter dropdowns
|
|
334
|
-
this.filterSelections = [];
|
|
335
|
-
this.colFilters = [];
|
|
336
|
-
// Get the column definitions that have a filter
|
|
337
|
-
const filteredCols = this.gridApi.getColumnDefs().filter((def) => def['filter']);
|
|
338
|
-
// Create a map to store unique values for each field
|
|
339
|
-
const filterValuesMap = new Map();
|
|
340
|
-
// Initialize sets for each field (column)
|
|
341
|
-
for (const col of filteredCols) {
|
|
342
|
-
const field = col["field"];
|
|
343
|
-
filterValuesMap.set(field, new Set());
|
|
344
|
-
}
|
|
345
|
-
// Use forEachNode to iterate over the rows
|
|
346
|
-
this.gridApi.forEachNode((node) => {
|
|
347
|
-
if (node.data) {
|
|
348
|
-
for (const col of filteredCols) {
|
|
349
|
-
const field = col["field"];
|
|
350
|
-
const value = this.gridApi.getCellValue({ rowNode: node, colKey: field });
|
|
351
|
-
if (value) {
|
|
352
|
-
filterValuesMap.get(field)?.add(value);
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
});
|
|
357
|
-
// Now that we have the unique values for each field, populate filter options
|
|
358
|
-
for (const col of filteredCols) {
|
|
359
|
-
const field = col["field"];
|
|
360
|
-
const label = col["headerName"];
|
|
361
|
-
const uniqueValues = Array.from(filterValuesMap.get(field) || []).sort();
|
|
362
|
-
if (uniqueValues.length > 1) {
|
|
363
|
-
// Ensure there's space for filter selections
|
|
364
|
-
this.filterSelections.push([]);
|
|
365
|
-
this.colFilters.push({ header: field, label: label, options: uniqueValues });
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
this.gridApi.setFilterModel(this.initialFilterModel);
|
|
369
|
-
this.setFilterSelections();
|
|
370
|
-
this.filterCount = this.getFilterCount();
|
|
371
|
-
}
|
|
372
|
-
/** Open the column options modal */
|
|
373
|
-
openColumnOptions() {
|
|
374
|
-
const columnState = this.gridApi.getColumnState();
|
|
375
|
-
const columnData = this.columnStateToData(columnState);
|
|
376
|
-
const initialColumnData = this.columnStateToData(this.savedColumnState.state);
|
|
377
|
-
const columnOptionsData = {
|
|
378
|
-
tableName: this.tableName,
|
|
379
|
-
columnData,
|
|
380
|
-
initialColumnData,
|
|
381
|
-
showSaveColumnOptionsText: this.showSaveColumnOptionsText
|
|
382
|
-
};
|
|
383
|
-
const dialogRef = this.dialog.open(SofColumnOptionsComponent, {
|
|
384
|
-
width: '500px',
|
|
385
|
-
position: { bottom: '40px', right: '40px' },
|
|
386
|
-
ariaLabelledBy: 'column-options-heading',
|
|
387
|
-
data: columnOptionsData
|
|
388
|
-
});
|
|
389
|
-
dialogRef.afterClosed().pipe(take(1), tap((updatedColumnState) => {
|
|
390
|
-
if (updatedColumnState && updatedColumnState.state.length) {
|
|
391
|
-
this.gridApi.applyColumnState(updatedColumnState);
|
|
392
|
-
this.updatedColumnState.emit(updatedColumnState);
|
|
393
|
-
this.currentColumnState = updatedColumnState;
|
|
394
|
-
}
|
|
395
|
-
})).subscribe();
|
|
396
|
-
}
|
|
397
|
-
/**
|
|
398
|
-
* Maps `Array<ColumnState>` to `Array<ColumnData>`
|
|
399
|
-
* @note filters out any columns marked as 'pinned' by the column definitions.
|
|
400
|
-
* @note filters any columns without a 'headerName'.
|
|
401
|
-
* @param columnState the column state to modify
|
|
402
|
-
* @returns an array of column data formatted to be ingested by the `SofColumnOptionsComponent`
|
|
403
|
-
*/
|
|
404
|
-
columnStateToData(columnState) {
|
|
405
|
-
return columnState
|
|
406
|
-
.filter((column) => {
|
|
407
|
-
const headerName = this.gridApi.getColumnDef(column.colId)?.headerName || "";
|
|
408
|
-
if (headerName && headerName.length && !column.pinned) {
|
|
409
|
-
return column;
|
|
410
|
-
}
|
|
411
|
-
})
|
|
412
|
-
.map((column) => {
|
|
413
|
-
const headerName = this.gridApi.getColumnDef(column.colId).headerName;
|
|
414
|
-
return {
|
|
415
|
-
id: column.colId,
|
|
416
|
-
isChecked: !column.hide,
|
|
417
|
-
text: headerName
|
|
418
|
-
};
|
|
419
|
-
});
|
|
420
|
-
}
|
|
421
|
-
/** Emit the current filtered/sorted row data */
|
|
422
|
-
exportFilteredRowData() {
|
|
423
|
-
const rowData = [];
|
|
424
|
-
const columns = this.gridApi.getAllDisplayedColumns().filter((col) => col.getColDef().headerName);
|
|
425
|
-
const tableHeaders = [];
|
|
426
|
-
columns.forEach((col) => {
|
|
427
|
-
const colDef = col.getColDef();
|
|
428
|
-
tableHeaders.push({
|
|
429
|
-
key: colDef.field,
|
|
430
|
-
value: colDef.headerName
|
|
431
|
-
});
|
|
432
|
-
});
|
|
433
|
-
this.gridApi.forEachNodeAfterFilterAndSort((node) => {
|
|
434
|
-
const nodeData = {};
|
|
435
|
-
columns.forEach((col) => {
|
|
436
|
-
const colId = col.getColId();
|
|
437
|
-
// Use gridApi's getCellValue to get the value transformed by valueGetter
|
|
438
|
-
nodeData[colId] = this.gridApi.getCellValue({ rowNode: node, colKey: colId });
|
|
439
|
-
});
|
|
440
|
-
rowData.push(nodeData);
|
|
441
|
-
});
|
|
442
|
-
const exportData = {
|
|
443
|
-
tableHeaders,
|
|
444
|
-
rowData
|
|
445
|
-
};
|
|
446
|
-
this.filteredRowDataForExport.emit(exportData);
|
|
447
|
-
}
|
|
448
|
-
/** Sets filter selections for filter panel */
|
|
449
|
-
setFilterSelections() {
|
|
450
|
-
for (let i = 0; i < this.colFilters.length; i++) {
|
|
451
|
-
// Get the stored filters for the given model
|
|
452
|
-
const colFilter = this.colFilters[i];
|
|
453
|
-
const model = this.gridApi.getColumnFilterModel(colFilter.header);
|
|
454
|
-
let filterSelectionData = [];
|
|
455
|
-
if (model && model["conditions"]) {
|
|
456
|
-
// The model is a combined model with multiple selections
|
|
457
|
-
const filterModel = model;
|
|
458
|
-
for (const element of filterModel.conditions) {
|
|
459
|
-
filterSelectionData.push(element.filter);
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
else if (model) {
|
|
463
|
-
// Assume the model is a single Text Filter Model
|
|
464
|
-
let filterSelection = model;
|
|
465
|
-
filterSelectionData.push(filterSelection.filter);
|
|
466
|
-
}
|
|
467
|
-
// Set the filter selections
|
|
468
|
-
this.filterSelections[i] = filterSelectionData;
|
|
469
|
-
}
|
|
470
|
-
}
|
|
471
|
-
/** Gets the count of current filter selections */
|
|
472
|
-
getFilterCount() {
|
|
473
|
-
return this.filterSelections.reduce((acc, curr) => acc.concat(curr), []).length;
|
|
474
|
-
}
|
|
475
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: SofTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
476
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.7", type: SofTableComponent, selector: "sof-table", inputs: { rowData: "rowData", colDefs: "colDefs", sizeMode: "sizeMode", paginationPageSizeSelector: "paginationPageSizeSelector", enableSearch: "enableSearch", enableFilter: "enableFilter", enableColumnOptions: "enableColumnOptions", enableExport: "enableExport", showSaveColumnOptionsText: "showSaveColumnOptionsText", tableName: "tableName", savedColumnState: "savedColumnState", initialFilterModel: "initialFilterModel" }, outputs: { updatedColumnState: "updatedColumnState", filteredRowDataForExport: "filteredRowDataForExport" }, viewQueries: [{ propertyName: "gridSearchTextInput", first: true, predicate: ["gridSearchTextInput"], descendants: true }, { propertyName: "ariaResultsCount", first: true, predicate: ["ariaResultsCount"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div \r\n [fxShow]=\"isGridDataRendered()\"\r\n fxLayoutGap=\"16px\" m-b-24>\r\n @if (enableFilter && colFilters.length) {\r\n <button \r\n (click)=\"toggleFilterPanel()\" \r\n mat-flat-button class=\"sof-button-v2\"\r\n theme=\"neutral\" \r\n [attr.emphasis]=\"filterOpenState ? 'solid' : filterCount === 0 ? 'secondary' : 'contained'\"\r\n [matBadge]=\"filterCount\"\r\n matBadgePosition=\"after\"\r\n [matBadgeHidden]=\"filterCount === 0 ? true : false\">\r\n <i class=\"ph ph-bold ph-sliders-horizontal\" aria-hidden=\"true\"></i>\r\n {{'armature.sof-table.filter' | translate}}\r\n </button>\r\n }\r\n @if (enableSearch) {\r\n <mat-form-field class=\"sof-form-field table-search-field dense-4\" fxFlex=\"auto\">\r\n <span matPrefix>\r\n <i class=\"ph-bold ph-magnifying-glass search-icon\" aria-hidden=\"true\"></i>\r\n </span>\r\n <mat-label class=\"search-label\">{{'armature.sof-table.search' | translate}}</mat-label>\r\n <input \r\n (input)=\"onSearchTextChanged()\" \r\n #gridSearchTextInput matInput type=\"text\" id=\"gridSearchTextInput\"\r\n [attr.aria-label]=\"'armature.sof-table.screen-reader.search-filter-description' | translate\"/>\r\n </mat-form-field>\r\n }\r\n @if (enableColumnOptions) {\r\n <button \r\n (click)=\"openColumnOptions()\"\r\n mat-flat-button class=\"sof-button-icon-v2\" \r\n theme=\"neutral\" emphasis=\"secondary\" id=\"open-column-options\"\r\n [attr.aria-label]=\"'armature.sof-table.screen-reader.column-options-btn' | translate\"\r\n [matTooltip]=\"'armature.sof-table.screen-reader.column-options-btn' | translate\"\r\n [disabled]=\"!totalLength\">\r\n <i class=\"ph-bold ph-pause\" aria-hidden=\"true\"></i>\r\n </button>\r\n }\r\n @if(enableExport) {\r\n <button \r\n (click)=\"exportFilteredRowData()\"\r\n mat-flat-button class=\"sof-button-icon-v2\" \r\n theme=\"neutral\" emphasis=\"secondary\" id=\"export-table\"\r\n [attr.aria-label]=\"'armature.sof-table.screen-reader.export-table' | translate\"\r\n [matTooltip]=\"'armature.sof-table.screen-reader.export-table' | translate\"\r\n [disabled]=\"!totalLength\">\r\n <i class=\"ph-bold ph-export\" aria-hidden=\"true\"></i>\r\n </button>\r\n }\r\n <ng-content select=\"[sof-table-right-buttons]\"></ng-content>\r\n <!-- \r\n Only inject <button>'s inside an <ng-container sof-table-right-buttons>\r\n ... \r\n <ng-container sof-table-right-buttons>\r\n <button \r\n (click)=\"anyFunction()\"\r\n mat-flat-button class=\"sof-button-icon-v2\" \r\n theme=\"neutral\" emphasis=\"secondary\" aria-label=\"any button\"\r\n matTooltip=\"any button\">\r\n <i class=\"ph-bold ph-acorn\" aria-hidden=\"true\"></i>\r\n </button>\r\n </ng-container>\r\n ... \r\n note: make sure buttons have the following attributes to match others =\r\n `mat-flat-button class=\"sof-button-icon-v2\" theme=\"neutral\" emphasis=\"secondary\"`\r\n * remember to add aria-label and tooltip for icon button\r\n -->\r\n</div>\r\n\r\n<div #ariaResultsCount class=\"sr-only\" aria-live=\"assertive\"></div>\r\n\r\n@if (isGridDataRendered() && filterOpenState) {\r\n <fieldset \r\n class=\"filter-panel\" role=\"region\"\r\n [attr.aria-label]=\"'armature.sof-table.screen-reader.select-filters-description' | translate\">\r\n <p>\r\n <i class=\"ph ph-bold ph-sliders-horizontal\" aria-hidden=\"true\"></i>\r\n <span class=\"m-l-8\">{{'armature.sof-table.filter' | translate}}</span>\r\n </p>\r\n <div class=\"filter-panel-select-container m-v-20\">\r\n @for (colFilter of colFilters; let i = $index; track i) {\r\n <mat-form-field appearance=\"outline\" class=\"sof-form-field table-filter-select\">\r\n <mat-label>{{colFilter.label}}</mat-label>\r\n <mat-select \r\n [(ngModel)]=\"filterSelections[i]\" \r\n multiple \r\n id=\"filterDropdown{{i}}\"\r\n placeholder=\"{{'armature.sof-table.all' | translate}}\" disableRipple=\"true\">\r\n @for (colOption of colFilter.options; track $index) {\r\n <mat-option [value]=\"colOption\">\r\n {{colOption}}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n </div>\r\n <div fxLayout=\"row\">\r\n <div fxFlex=\"50%\">\r\n <button \r\n (click)=\"clearFilters()\" [disabled]=\"hasEmptyFilters()\" \r\n mat-flat-button class=\"sof-button-v2\"\r\n theme=\"neutral\" emphasis=\"floating\"\r\n id=\"tableFilterClear\">\r\n {{'armature.sof-table.reset' | translate}}\r\n </button>\r\n </div>\r\n <div fxFlex=\"50%\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"2%\" fxLayoutAlign=\"flex-end\">\r\n <div fxFlex=\"0 1 auto\">\r\n <button \r\n (click)=\"cancelFilterChanges()\" mat-flat-button class=\"sof-button-v2\" \r\n id=\"tableFilterCancel\" theme=\"neutral\" emphasis=\"secondary\">\r\n {{'armature.sof-table.cancel' | translate}}\r\n </button>\r\n </div>\r\n <div fxFlex=\"0 1 auto\">\r\n <button \r\n (click)=\"applyFilters()\" mat-flat-button class=\"sof-button-v2\"\r\n id=\"tableFilterApply\" theme=\"primary\" emphasis=\"solid\">\r\n {{'armature.sof-table.results' | translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </fieldset>\r\n}\r\n\r\n<ag-grid-angular \r\n [fxShow]=\"isGridDataRendered()\"\r\n (gridReady)=\"onGridReady($event)\" \r\n (firstDataRendered)=\"onFirstDataRendered()\"\r\n (filterChanged)=\"onFilterChanged()\"\r\n (paginationChanged)=\"changePageSize($event)\" \r\n [rowData]=\"rowData\" \r\n [columnDefs]=\"colDefs\" \r\n [defaultColDef]=\"defaultColDef\" \r\n [pagination]=\"true\" \r\n [suppressPaginationPanel]=\"true\"\r\n [paginationPageSizeSelector]=\"paginationPageSizeSelector\" \r\n [paginationPageSize]=\"paginationPageSize\"\r\n [headerHeight]=\"rowHeight\" \r\n [rowHeight]=\"rowHeight\" \r\n [domLayout]=\"'autoHeight'\" \r\n [tooltipShowDelay]=\"tooltipShowDelay\"\r\n [overlayNoRowsTemplate]=\"('armature.sof-table.no-rows' | translate) || 'No results found.'\"\r\n [class.no-rows]=\"!totalLength\"\r\n class=\"ag-theme-material\">\r\n</ag-grid-angular>\r\n\r\n<div \r\n [fxShow]=\"isGridDataRendered() && totalLength\"\r\n class=\"custom-paginator\">\r\n <div class=\"first-section\">\r\n <button class=\"button-part-1\" type=\"button\">\r\n <mat-select \r\n #pageSizeSelect\r\n id=\"pageSizeInput\" name=\"pageSizeInput\" \r\n [(value)]=\"paginationPageSize\" disableRipple=\"true\">\r\n @for (size of paginationPageSizeSelector; let i = $index; track i) {\r\n <mat-option \r\n class=\"page-option\" id=\"size{{i}}\"\r\n [value]=\"paginationPageSizeSelector[i]\">\r\n {{size}}\r\n </mat-option>\r\n }\r\n <mat-select-trigger>\r\n <div class=\"field\">\r\n <span class=\"current-page\">\r\n <span class=\"page\">{{paginationPageSize}}</span>\r\n </span>\r\n <span class=\"select-icon\">\r\n <i [class]=\"'ph-bold ph-caret-' + (pageSizeSelect.panelOpen ? 'up':'down')\" aria-hidden=\"true\"></i>\r\n </span>\r\n </div>\r\n </mat-select-trigger>\r\n </mat-select>\r\n </button>\r\n <span class=\"pageChangeText\">\r\n {{pageChangeText}} {{'armature.sof-table.of' | translate}} {{totalLength}}\r\n </span>\r\n </div>\r\n <div class=\"go-to-page\">\r\n <div class=\"outer-box\">\r\n <button class=\"button-part\" type=\"button\">\r\n <mat-select \r\n #pageNumberSelect\r\n (selectionChange)=\"onPageNumberChange($event.value)\"\r\n [(value)]=\"currentPage\" \r\n id=\"pageSelelctor\" name=\"pageSelector\" disableRipple=\"true\">\r\n @for (page of pageSelector; track $index) {\r\n <mat-option [value]=\"page\" class=\"page-option\">\r\n <span class=\"current-page\">\r\n <span class=\"page\">{{page}}</span>\r\n </span>\r\n </mat-option>\r\n }\r\n <mat-select-trigger>\r\n <div class=\"field\">\r\n <span class=\"current-page\">\r\n <span class=\"page\">{{currentPage}}</span>\r\n <span class=\"of-page\"> {{'armature.sof-table.of' | translate}} {{totalNumberOfPages}} </span>\r\n </span>\r\n <span class=\"select-icon\">\r\n <i [class]=\"'ph-bold ph-caret-' + (pageNumberSelect.panelOpen ? 'up':'down')\" aria-hidden=\"true\"></i>\r\n </span>\r\n </div>\r\n </mat-select-trigger>\r\n </mat-select>\r\n </button>\r\n </div>\r\n <nav class=\"second-section\">\r\n <button \r\n (click)=\"previousPage()\"\r\n id=\"prev-button\" mat-flat-button class=\"sof-button-icon-v2\" theme=\"neutral\" emphasis=\"secondary\"\r\n [disabled]=\"currentPage === 1\" \r\n [attr.aria-label]=\"'screen-reader.pagination.previous' | translate\">\r\n <i class=\"ph-bold ph-caret-left\" aria-hidden=\"true\"></i>\r\n </button>\r\n <button \r\n (click)=\"nextPage()\" \r\n id=\"next-button\" mat-flat-button class=\"sof-button-icon-v2\" theme=\"neutral\" emphasis=\"secondary\"\r\n [disabled]=\"currentPage === totalNumberOfPages\"\r\n [attr.aria-label]=\"'screen-reader.pagination.next' | translate\">\r\n <i class=\"ph-bold ph-caret-right\" aria-hidden=\"true\"></i>\r\n </button>\r\n </nav>\r\n </div>\r\n</div>\r\n\r\n@if (!isGridDataRendered()) {\r\n <div class=\"loading-container\">\r\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\"/>\r\n </div>\r\n}\r\n", styles: ["@font-face{font-family:agGridMaterial;src:url(data:font/woff2;charset=utf-8;base64,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);font-weight:400;font-style:normal}.ag-theme-material,.ag-theme-material-dark,.ag-theme-material-auto-dark{--ag-material-primary-color: #3f51b5;--ag-material-accent-color: #ff4081;--ag-foreground-color: rgba(0, 0, 0, .87);--ag-secondary-foreground-color: rgba(0, 0, 0, .54);--ag-disabled-foreground-color: rgba(0, 0, 0, .38);--ag-background-color: #fff;--ag-header-background-color: #fff;--ag-tooltip-background-color: #fff;--ag-subheader-background-color: #eee;--ag-subheader-toolbar-background-color: rgba(238, 238, 238, .5);--ag-header-cell-hover-background-color: #f2f2f2;--ag-chip-background-color: #e2e2e2;--ag-range-selection-background-color: rgba(122, 134, 203, .1);--ag-range-selection-background-color-2: rgba(122, 134, 203, .19);--ag-range-selection-background-color-3: rgba(122, 134, 203, .27);--ag-range-selection-background-color-4: rgba(122, 134, 203, .34);--ag-range-selection-highlight-color: #fce4ec;--ag-row-hover-color: #fafafa;--ag-column-hover-color: #fafafa;--ag-control-panel-background-color: #fafafa;--ag-selected-row-background-color: rgba(33, 150, 243, .3);--ag-checkbox-unchecked-color: #333;--ag-value-change-value-highlight-background-color: #00acc1;--ag-side-button-selected-background-color: transparent;--ag-advanced-filter-join-pill-color: #f08e8d;--ag-advanced-filter-column-pill-color: #a6e194;--ag-advanced-filter-option-pill-color: #f3c08b;--ag-advanced-filter-value-pill-color: #85c0e4;--ag-range-selection-border-color: var(--ag-material-primary-color);--ag-checkbox-checked-color: var(--ag-material-accent-color);--ag-borders: none;--ag-borders-critical: solid 1px;--ag-border-color: #e2e2e2;--ag-grid-size: 8px;--ag-icon-size: 18px;--ag-header-height: calc(var(--ag-grid-size) * 7);--ag-row-height: calc(var(--ag-grid-size) * 6);--ag-cell-horizontal-padding: calc(var(--ag-grid-size) * 3);--ag-list-item-height: calc(var(--ag-grid-size) * 4);--ag-row-group-indent-size: calc(var(--ag-grid-size) * 3 + var(--ag-icon-size));--ag-filter-tool-panel-sub-level-row-height: calc(var(--ag-grid-size) * 4);--ag-checkbox-border-radius: 2px;--ag-toggle-button-switch-border-width: 2px;--ag-toggle-button-height: var(--ag-icon-size);--ag-widget-container-horizontal-padding: calc(var(--ag-grid-size) * 1.5);--ag-widget-container-vertical-padding: calc(var(--ag-grid-size) * 2);--ag-widget-vertical-spacing: calc(var(--ag-grid-size) * 1.75);--ag-font-family: Roboto, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;--ag-font-size: 13px;--ag-icon-font-family: agGridMaterial;--ag-selected-tab-underline-color: var(--ag-material-primary-color);--ag-selected-tab-underline-width: 2px;--ag-input-focus-border-color: var(--ag-material-primary-color);--ag-input-focus-box-shadow: 0 0 0 5px rgba(32, 33, 36, .122);--ag-card-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12);--ag-card-radius: 2px;--ag-invalid-color: #e02525}.ag-theme-material-dark{--ag-material-primary-color: #3f51b5;--ag-material-accent-color: #bb86fcff;--ag-range-selection-border-color: var(--ag-material-accent-color);--ag-background-color: #121212ff;--ag-foreground-color: #ffffffff;--ag-data-color: #f5f5f5ff;--ag-header-cell-hover-background-color: #000000ff;--ag-advanced-filter-join-pill-color: #7a3a37ff;--ag-advanced-filter-column-pill-color: #355f2dff;--ag-advanced-filter-option-pill-color: #5a3168ff;--ag-advanced-filter-value-pill-color: #374c86ff;--ag-input-disabled-border-color: #3a434eff;--ag-input-disabled-background-color: #68686e12;--ag-selected-row-background-color: #bb86fc33;--ag-row-hover-color: #bb86fc33;--ag-column-hover-color: #f5f5f50d;--ag-range-selection-background-color: #bb86fc1a;--ag-range-selection-background-color-2: #bb86fc30;--ag-range-selection-background-color-3: #bb86fc45;--ag-range-selection-background-color-4: #bb86fc57;--ag-border-color: #383838ff;--ag-secondary-border-color: #383838ff;--ag-header-background-color: #121212ff;--ag-tooltip-background-color: #212b38ff;--ag-odd-row-background-color: #121212ff;--ag-control-panel-background-color: #2c2c2cff;--ag-subheader-background-color: #ffffff0d;--ag-subheader-toolbar-background-color: #2c2c2cff;--ag-invalid-color: #e02525ff;--ag-checkbox-unchecked-color: #797e87ff;--ag-checkbox-background-color: #121212ff;--ag-secondary-foreground-color: #f5f5f5ff;--ag-input-border-color: #383838ff;--ag-input-border-color-invalid: #e02525ff;--ag-disabled-foreground-color: #f5f5f580;--ag-chip-background-color: #22262812;--ag-side-button-selected-background-color: #2c2c2cff;--ag-selected-tab-underline-color: #3f51b5ff;--ag-modal-overlay-background-color: #121212a8;--ag-value-change-delta-up-color: #43a047a8;--ag-value-change-delta-down-color: #e53935ff;--ag-menu-background-color: #2c2c2cff;--ag-row-loading-skeleton-effect-color: rgba(202, 203, 204, .4);color-scheme:dark}@media (prefers-color-scheme: dark){.ag-theme-material-auto-dark{--ag-material-primary-color: #3f51b5;--ag-material-accent-color: #bb86fcff;--ag-range-selection-border-color: var(--ag-material-accent-color);--ag-background-color: #121212ff;--ag-foreground-color: #ffffffff;--ag-data-color: #f5f5f5ff;--ag-header-cell-hover-background-color: #000000ff;--ag-advanced-filter-join-pill-color: #7a3a37ff;--ag-advanced-filter-column-pill-color: #355f2dff;--ag-advanced-filter-option-pill-color: #5a3168ff;--ag-advanced-filter-value-pill-color: #374c86ff;--ag-input-disabled-border-color: #3a434eff;--ag-input-disabled-background-color: #68686e12;--ag-selected-row-background-color: #bb86fc33;--ag-row-hover-color: #bb86fc33;--ag-column-hover-color: #f5f5f50d;--ag-range-selection-background-color: #bb86fc1a;--ag-range-selection-background-color-2: #bb86fc30;--ag-range-selection-background-color-3: #bb86fc45;--ag-range-selection-background-color-4: #bb86fc57;--ag-border-color: #383838ff;--ag-secondary-border-color: #383838ff;--ag-header-background-color: #121212ff;--ag-tooltip-background-color: #212b38ff;--ag-odd-row-background-color: #121212ff;--ag-control-panel-background-color: #2c2c2cff;--ag-subheader-background-color: #ffffff0d;--ag-subheader-toolbar-background-color: #2c2c2cff;--ag-invalid-color: #e02525ff;--ag-checkbox-unchecked-color: #797e87ff;--ag-checkbox-background-color: #121212ff;--ag-secondary-foreground-color: #f5f5f5ff;--ag-input-border-color: #383838ff;--ag-input-border-color-invalid: #e02525ff;--ag-disabled-foreground-color: #f5f5f580;--ag-chip-background-color: #22262812;--ag-side-button-selected-background-color: #2c2c2cff;--ag-selected-tab-underline-color: #3f51b5ff;--ag-modal-overlay-background-color: #121212a8;--ag-value-change-delta-up-color: #43a047a8;--ag-value-change-delta-down-color: #e53935ff;--ag-menu-background-color: #2c2c2cff;--ag-row-loading-skeleton-effect-color: rgba(202, 203, 204, .4);color-scheme:dark}}.ag-theme-material .ag-filter-toolpanel-header,.ag-theme-material .ag-filter-toolpanel-search,.ag-theme-material .ag-status-bar,.ag-theme-material .ag-header-row,.ag-theme-material .ag-panel-title-bar-title,.ag-theme-material .ag-multi-filter-group-title-bar,.ag-theme-material-dark .ag-filter-toolpanel-header,.ag-theme-material-dark .ag-filter-toolpanel-search,.ag-theme-material-dark .ag-status-bar,.ag-theme-material-dark .ag-header-row,.ag-theme-material-dark .ag-panel-title-bar-title,.ag-theme-material-dark .ag-multi-filter-group-title-bar,.ag-theme-material-auto-dark .ag-filter-toolpanel-header,.ag-theme-material-auto-dark .ag-filter-toolpanel-search,.ag-theme-material-auto-dark .ag-status-bar,.ag-theme-material-auto-dark .ag-header-row,.ag-theme-material-auto-dark .ag-panel-title-bar-title,.ag-theme-material-auto-dark .ag-multi-filter-group-title-bar{font-size:calc(var(--ag-font-size) - 1px);font-weight:600;color:var(--ag-header-foreground-color)}.ag-theme-material .ag-tab,.ag-theme-material-dark .ag-tab,.ag-theme-material-auto-dark .ag-tab{height:calc(var(--ag-grid-size) * 4.5);flex:1 1 auto}.ag-theme-material .ag-tabs-header,.ag-theme-material .ag-column-drop-horizontal,.ag-theme-material-dark .ag-tabs-header,.ag-theme-material-dark .ag-column-drop-horizontal,.ag-theme-material-auto-dark .ag-tabs-header,.ag-theme-material-auto-dark .ag-column-drop-horizontal{background-color:var(--ag-subheader-background-color)}.ag-theme-material .ag-tabs-body,.ag-theme-material-dark .ag-tabs-body,.ag-theme-material-auto-dark .ag-tabs-body{padding:calc(var(--ag-grid-size) * .5) 0}.ag-theme-material .ag-tabs-body .ag-menu-list,.ag-theme-material-dark .ag-tabs-body .ag-menu-list,.ag-theme-material-auto-dark .ag-tabs-body .ag-menu-list{padding-top:0;padding-bottom:0}.ag-theme-material .ag-header-cell,.ag-theme-material .ag-header-group-cell,.ag-theme-material-dark .ag-header-cell,.ag-theme-material-dark .ag-header-group-cell,.ag-theme-material-auto-dark .ag-header-cell,.ag-theme-material-auto-dark .ag-header-group-cell{transition:background-color .5s}.ag-theme-material .ag-row-last:not(.ag-row-first) .ag-cell-inline-editing,.ag-theme-material-dark .ag-row-last:not(.ag-row-first) .ag-cell-inline-editing,.ag-theme-material-auto-dark .ag-row-last:not(.ag-row-first) .ag-cell-inline-editing{bottom:0}.ag-theme-material .ag-cell-inline-editing,.ag-theme-material-dark .ag-cell-inline-editing,.ag-theme-material-auto-dark .ag-cell-inline-editing{padding:var(--ag-grid-size);height:calc(var(--ag-row-height) + var(--ag-grid-size) * 3);border-color:var(--ag-border-color)!important}.ag-theme-material .ag-has-focus .ag-cell-inline-editing,.ag-theme-material-dark .ag-has-focus .ag-cell-inline-editing,.ag-theme-material-auto-dark .ag-has-focus .ag-cell-inline-editing{border-color:var(--ag-input-focus-border-color)!important}.ag-theme-material .ag-column-drop-vertical,.ag-theme-material-dark .ag-column-drop-vertical,.ag-theme-material-auto-dark .ag-column-drop-vertical{border-bottom:solid 1px;border-bottom-color:var(--ag-border-color);padding-top:var(--ag-grid-size)}.ag-theme-material .ag-column-drop-vertical.ag-last-column-drop,.ag-theme-material-dark .ag-column-drop-vertical.ag-last-column-drop,.ag-theme-material-auto-dark .ag-column-drop-vertical.ag-last-column-drop{border-bottom:none}.ag-theme-material .ag-column-drop-vertical-cell,.ag-theme-material-dark .ag-column-drop-vertical-cell,.ag-theme-material-auto-dark .ag-column-drop-vertical-cell{margin-left:0}.ag-theme-material .ag-column-drop-vertical-empty-message,.ag-theme-material-dark .ag-column-drop-vertical-empty-message,.ag-theme-material-auto-dark .ag-column-drop-vertical-empty-message{font-size:calc(var(--ag-font-size) - 1px);font-weight:600;color:var(--ag-disabled-foreground-color)}.ag-theme-material .ag-ltr .ag-column-drop-vertical-empty-message,.ag-theme-material-dark .ag-ltr .ag-column-drop-vertical-empty-message,.ag-theme-material-auto-dark .ag-ltr .ag-column-drop-vertical-empty-message{padding-left:calc(var(--ag-icon-size) + var(--ag-grid-size) * 2);padding-right:var(--ag-grid-size)}.ag-theme-material .ag-rtl .ag-column-drop-vertical-empty-message,.ag-theme-material-dark .ag-rtl .ag-column-drop-vertical-empty-message,.ag-theme-material-auto-dark .ag-rtl .ag-column-drop-vertical-empty-message{padding-right:calc(var(--ag-icon-size) + var(--ag-grid-size) * 2);padding-left:var(--ag-grid-size)}.ag-theme-material .ag-status-bar,.ag-theme-material-dark .ag-status-bar,.ag-theme-material-auto-dark .ag-status-bar{border:solid 1px;border-color:var(--ag-border-color)}.ag-theme-material .ag-column-panel-column-select,.ag-theme-material-dark .ag-column-panel-column-select,.ag-theme-material-auto-dark .ag-column-panel-column-select{border-top:solid 1px;border-top-color:var(--ag-border-color)}.ag-theme-material .ag-column-select,.ag-theme-material .ag-column-select-header,.ag-theme-material-dark .ag-column-select,.ag-theme-material-dark .ag-column-select-header,.ag-theme-material-auto-dark .ag-column-select,.ag-theme-material-auto-dark .ag-column-select-header{border-bottom:solid 1px;border-bottom-color:var(--ag-border-color)}.ag-theme-material .ag-column-select-header,.ag-theme-material-dark .ag-column-select-header,.ag-theme-material-auto-dark .ag-column-select-header{height:var(--ag-header-height)}.ag-theme-material .ag-group-title-bar,.ag-theme-material-dark .ag-group-title-bar,.ag-theme-material-auto-dark .ag-group-title-bar{padding:calc(var(--ag-grid-size) * .75) var(--ag-grid-size)}.ag-theme-material .ag-charts-format-sub-level-group-title-bar,.ag-theme-material-dark .ag-charts-format-sub-level-group-title-bar,.ag-theme-material-auto-dark .ag-charts-format-sub-level-group-title-bar{padding:calc(var(--ag-grid-size) * .5) var(--ag-grid-size)}.ag-theme-material .ag-chart-data-section,.ag-theme-material .ag-chart-format-section,.ag-theme-material .ag-chart-advanced-settings-section,.ag-theme-material-dark .ag-chart-data-section,.ag-theme-material-dark .ag-chart-format-section,.ag-theme-material-dark .ag-chart-advanced-settings-section,.ag-theme-material-auto-dark .ag-chart-data-section,.ag-theme-material-auto-dark .ag-chart-format-section,.ag-theme-material-auto-dark .ag-chart-advanced-settings-section{padding-bottom:calc(var(--ag-grid-size) * .5)}.ag-theme-material .ag-chart-menu-close,.ag-theme-material-dark .ag-chart-menu-close,.ag-theme-material-auto-dark .ag-chart-menu-close{background:var(--ag-background-color)}.ag-theme-material .ag-chart-menu-close .ag-icon,.ag-theme-material-dark .ag-chart-menu-close .ag-icon,.ag-theme-material-auto-dark .ag-chart-menu-close .ag-icon{background:var(--ag-subheader-background-color)}.ag-theme-material input[class^=ag-]:not([type]),.ag-theme-material input[class^=ag-][type=text],.ag-theme-material input[class^=ag-][type=number],.ag-theme-material input[class^=ag-][type=tel],.ag-theme-material input[class^=ag-][type=date],.ag-theme-material input[class^=ag-][type=datetime-local],.ag-theme-material textarea[class^=ag-],.ag-theme-material-dark input[class^=ag-]:not([type]),.ag-theme-material-dark input[class^=ag-][type=text],.ag-theme-material-dark input[class^=ag-][type=number],.ag-theme-material-dark input[class^=ag-][type=tel],.ag-theme-material-dark input[class^=ag-][type=date],.ag-theme-material-dark input[class^=ag-][type=datetime-local],.ag-theme-material-dark textarea[class^=ag-],.ag-theme-material-auto-dark input[class^=ag-]:not([type]),.ag-theme-material-auto-dark input[class^=ag-][type=text],.ag-theme-material-auto-dark input[class^=ag-][type=number],.ag-theme-material-auto-dark input[class^=ag-][type=tel],.ag-theme-material-auto-dark input[class^=ag-][type=date],.ag-theme-material-auto-dark input[class^=ag-][type=datetime-local],.ag-theme-material-auto-dark textarea[class^=ag-]{background:transparent;color:var(--ag-foreground-color);font-family:inherit;font-size:inherit;height:calc(var(--ag-grid-size) * 5);padding-bottom:var(--ag-grid-size);border-width:0;border-radius:0;border-bottom:2px solid;border-bottom-color:var(--ag-border-color)}.ag-theme-material input[class^=ag-]:not([type]):focus,.ag-theme-material input[class^=ag-][type=text]:focus,.ag-theme-material input[class^=ag-][type=number]:focus,.ag-theme-material input[class^=ag-][type=tel]:focus,.ag-theme-material input[class^=ag-][type=date]:focus,.ag-theme-material input[class^=ag-][type=datetime-local]:focus,.ag-theme-material textarea[class^=ag-]:focus,.ag-theme-material-dark input[class^=ag-]:not([type]):focus,.ag-theme-material-dark input[class^=ag-][type=text]:focus,.ag-theme-material-dark input[class^=ag-][type=number]:focus,.ag-theme-material-dark input[class^=ag-][type=tel]:focus,.ag-theme-material-dark input[class^=ag-][type=date]:focus,.ag-theme-material-dark input[class^=ag-][type=datetime-local]:focus,.ag-theme-material-dark textarea[class^=ag-]:focus,.ag-theme-material-auto-dark input[class^=ag-]:not([type]):focus,.ag-theme-material-auto-dark input[class^=ag-][type=text]:focus,.ag-theme-material-auto-dark input[class^=ag-][type=number]:focus,.ag-theme-material-auto-dark input[class^=ag-][type=tel]:focus,.ag-theme-material-auto-dark input[class^=ag-][type=date]:focus,.ag-theme-material-auto-dark input[class^=ag-][type=datetime-local]:focus,.ag-theme-material-auto-dark textarea[class^=ag-]:focus{border-bottom:2px solid;border-bottom-color:var(--ag-material-primary-color);outline:none;box-shadow:none}.ag-theme-material input[class^=ag-]:not([type])::placeholder,.ag-theme-material input[class^=ag-][type=text]::placeholder,.ag-theme-material input[class^=ag-][type=number]::placeholder,.ag-theme-material input[class^=ag-][type=tel]::placeholder,.ag-theme-material input[class^=ag-][type=date]::placeholder,.ag-theme-material input[class^=ag-][type=datetime-local]::placeholder,.ag-theme-material textarea[class^=ag-]::placeholder,.ag-theme-material-dark input[class^=ag-]:not([type])::placeholder,.ag-theme-material-dark input[class^=ag-][type=text]::placeholder,.ag-theme-material-dark input[class^=ag-][type=number]::placeholder,.ag-theme-material-dark input[class^=ag-][type=tel]::placeholder,.ag-theme-material-dark input[class^=ag-][type=date]::placeholder,.ag-theme-material-dark input[class^=ag-][type=datetime-local]::placeholder,.ag-theme-material-dark textarea[class^=ag-]::placeholder,.ag-theme-material-auto-dark input[class^=ag-]:not([type])::placeholder,.ag-theme-material-auto-dark input[class^=ag-][type=text]::placeholder,.ag-theme-material-auto-dark input[class^=ag-][type=number]::placeholder,.ag-theme-material-auto-dark input[class^=ag-][type=tel]::placeholder,.ag-theme-material-auto-dark input[class^=ag-][type=date]::placeholder,.ag-theme-material-auto-dark input[class^=ag-][type=datetime-local]::placeholder,.ag-theme-material-auto-dark textarea[class^=ag-]::placeholder{color:var(--ag-disabled-foreground-color)}.ag-theme-material input[class^=ag-]:not([type]):disabled,.ag-theme-material input[class^=ag-][type=text]:disabled,.ag-theme-material input[class^=ag-][type=number]:disabled,.ag-theme-material input[class^=ag-][type=tel]:disabled,.ag-theme-material input[class^=ag-][type=date]:disabled,.ag-theme-material input[class^=ag-][type=datetime-local]:disabled,.ag-theme-material textarea[class^=ag-]:disabled,.ag-theme-material-dark input[class^=ag-]:not([type]):disabled,.ag-theme-material-dark input[class^=ag-][type=text]:disabled,.ag-theme-material-dark input[class^=ag-][type=number]:disabled,.ag-theme-material-dark input[class^=ag-][type=tel]:disabled,.ag-theme-material-dark input[class^=ag-][type=date]:disabled,.ag-theme-material-dark input[class^=ag-][type=datetime-local]:disabled,.ag-theme-material-dark textarea[class^=ag-]:disabled,.ag-theme-material-auto-dark input[class^=ag-]:not([type]):disabled,.ag-theme-material-auto-dark input[class^=ag-][type=text]:disabled,.ag-theme-material-auto-dark input[class^=ag-][type=number]:disabled,.ag-theme-material-auto-dark input[class^=ag-][type=tel]:disabled,.ag-theme-material-auto-dark input[class^=ag-][type=date]:disabled,.ag-theme-material-auto-dark input[class^=ag-][type=datetime-local]:disabled,.ag-theme-material-auto-dark textarea[class^=ag-]:disabled{border-bottom:1px solid;border-bottom-color:var(--ag-border-color)}.ag-theme-material input[class^=ag-]:not([type]):invalid,.ag-theme-material input[class^=ag-][type=text]:invalid,.ag-theme-material input[class^=ag-][type=number]:invalid,.ag-theme-material input[class^=ag-][type=tel]:invalid,.ag-theme-material input[class^=ag-][type=date]:invalid,.ag-theme-material input[class^=ag-][type=datetime-local]:invalid,.ag-theme-material textarea[class^=ag-]:invalid,.ag-theme-material-dark input[class^=ag-]:not([type]):invalid,.ag-theme-material-dark input[class^=ag-][type=text]:invalid,.ag-theme-material-dark input[class^=ag-][type=number]:invalid,.ag-theme-material-dark input[class^=ag-][type=tel]:invalid,.ag-theme-material-dark input[class^=ag-][type=date]:invalid,.ag-theme-material-dark input[class^=ag-][type=datetime-local]:invalid,.ag-theme-material-dark textarea[class^=ag-]:invalid,.ag-theme-material-auto-dark input[class^=ag-]:not([type]):invalid,.ag-theme-material-auto-dark input[class^=ag-][type=text]:invalid,.ag-theme-material-auto-dark input[class^=ag-][type=number]:invalid,.ag-theme-material-auto-dark input[class^=ag-][type=tel]:invalid,.ag-theme-material-auto-dark input[class^=ag-][type=date]:invalid,.ag-theme-material-auto-dark input[class^=ag-][type=datetime-local]:invalid,.ag-theme-material-auto-dark textarea[class^=ag-]:invalid{border-width:0;border-bottom:1px solid;border-bottom-color:var(--ag-invalid-color);color:var(--ag-invalid-color)}.ag-theme-material .ag-standard-button,.ag-theme-material-dark .ag-standard-button,.ag-theme-material-auto-dark .ag-standard-button{appearance:none;background-color:transparent;border:0;color:var(--ag-material-primary-color);font-family:inherit;font-size:inherit;margin:0;padding:0;text-transform:uppercase}.ag-theme-material .ag-standard-button:disabled,.ag-theme-material-dark .ag-standard-button:disabled,.ag-theme-material-auto-dark .ag-standard-button:disabled{color:var(--ag-disabled-foreground-color);background-color:var(--ag-input-disabled-background-color);border-color:var(--ag-input-disabled-border-color)}.ag-theme-material.ag-dnd-ghost,.ag-theme-material-dark.ag-dnd-ghost,.ag-theme-material-auto-dark.ag-dnd-ghost{font-size:calc(var(--ag-font-size) - 1px);font-weight:600}.ag-theme-material .ag-filter-toolpanel-header,.ag-theme-material-dark .ag-filter-toolpanel-header,.ag-theme-material-auto-dark .ag-filter-toolpanel-header{height:calc(var(--ag-grid-size) * 4)}.ag-theme-material .ag-filter-toolpanel-group-level-0-header,.ag-theme-material-dark .ag-filter-toolpanel-group-level-0-header,.ag-theme-material-auto-dark .ag-filter-toolpanel-group-level-0-header{height:calc(var(--ag-grid-size) * 7)}.ag-theme-material .ag-ltr .ag-filter-apply-panel-button,.ag-theme-material .ag-ltr .ag-advanced-filter-apply-button,.ag-theme-material .ag-ltr .ag-advanced-filter-builder-button,.ag-theme-material-dark .ag-ltr .ag-filter-apply-panel-button,.ag-theme-material-dark .ag-ltr .ag-advanced-filter-apply-button,.ag-theme-material-dark .ag-ltr .ag-advanced-filter-builder-button,.ag-theme-material-auto-dark .ag-ltr .ag-filter-apply-panel-button,.ag-theme-material-auto-dark .ag-ltr .ag-advanced-filter-apply-button,.ag-theme-material-auto-dark .ag-ltr .ag-advanced-filter-builder-button{margin-left:var(--ag-grid-size)}.ag-theme-material .ag-rtl .ag-filter-apply-panel-button,.ag-theme-material .ag-rtl .ag-advanced-filter-apply-button,.ag-theme-material .ag-rtl .ag-advanced-filter-builder-button,.ag-theme-material-dark .ag-rtl .ag-filter-apply-panel-button,.ag-theme-material-dark .ag-rtl .ag-advanced-filter-apply-button,.ag-theme-material-dark .ag-rtl .ag-advanced-filter-builder-button,.ag-theme-material-auto-dark .ag-rtl .ag-filter-apply-panel-button,.ag-theme-material-auto-dark .ag-rtl .ag-advanced-filter-apply-button,.ag-theme-material-auto-dark .ag-rtl .ag-advanced-filter-builder-button{margin-right:var(--ag-grid-size)}.ag-theme-material .ag-layout-auto-height .ag-center-cols-viewport,.ag-theme-material .ag-layout-auto-height .ag-center-cols-container,.ag-theme-material .ag-layout-print .ag-center-cols-viewport,.ag-theme-material .ag-layout-print .ag-center-cols-container,.ag-theme-material-dark .ag-layout-auto-height .ag-center-cols-viewport,.ag-theme-material-dark .ag-layout-auto-height .ag-center-cols-container,.ag-theme-material-dark .ag-layout-print .ag-center-cols-viewport,.ag-theme-material-dark .ag-layout-print .ag-center-cols-container,.ag-theme-material-auto-dark .ag-layout-auto-height .ag-center-cols-viewport,.ag-theme-material-auto-dark .ag-layout-auto-height .ag-center-cols-container,.ag-theme-material-auto-dark .ag-layout-print .ag-center-cols-viewport,.ag-theme-material-auto-dark .ag-layout-print .ag-center-cols-container{min-height:150px}.ag-theme-material .ag-overlay-no-rows-wrapper.ag-layout-auto-height,.ag-theme-material-dark .ag-overlay-no-rows-wrapper.ag-layout-auto-height,.ag-theme-material-auto-dark .ag-overlay-no-rows-wrapper.ag-layout-auto-height{padding-top:60px}.ag-theme-material .ag-picker-field-wrapper:focus-within,.ag-theme-material-dark .ag-picker-field-wrapper:focus-within,.ag-theme-material-auto-dark .ag-picker-field-wrapper:focus-within{box-shadow:0 0 0 1px var(--ag-material-primary-color)}.ag-theme-material .ag-rich-select-list,.ag-theme-material-dark .ag-rich-select-list,.ag-theme-material-auto-dark .ag-rich-select-list{box-shadow:#0003 0 5px 5px -3px,#00000024 0 8px 10px 1px,#0000001f 0 3px 14px 2px}.ag-theme-material .ag-advanced-filter-builder-button-label,.ag-theme-material-dark .ag-advanced-filter-builder-button-label,.ag-theme-material-auto-dark .ag-advanced-filter-builder-button-label{text-transform:uppercase}.ag-theme-material .ag-filter-active .ag-icon-filter,.ag-theme-material-dark .ag-filter-active .ag-icon-filter,.ag-theme-material-auto-dark .ag-filter-active .ag-icon-filter{color:var(--ag-material-accent-color)}.ag-theme-material textarea[class^=ag-chart-title-edit],.ag-theme-material-dark textarea[class^=ag-chart-title-edit],.ag-theme-material-auto-dark textarea[class^=ag-chart-title-edit]{background-color:var(--ag-background-color)}:root{--primary-color-50-parts: #edf4ff;--primary-color-100-parts: #b9d4fc;--primary-color-200-parts: #8ab7fb;--primary-color-300-parts: #5b9af9;--primary-color-400-parts: #3784f7;--primary-color-500-parts: #146ef6;--primary-color-600-parts: #1266f5;--primary-color-700-parts: #0e5bf3;--primary-color-800-parts: #0b51f2;--primary-color-900-parts: #063fef;--primary-color-A50-parts: rgba(20, 110, 246, .04);--primary-color-A100-parts: rgba(20, 110, 246, .08);--primary-color-A200-parts: rgba(20, 110, 246, .16);--primary-color-A300-parts: rgba(20, 110, 246, .24);--primary-color-A400-parts: rgba(20, 110, 246, .32);--primary-color-A500-parts: rgba(20, 110, 246, .4);--primary-color-A600-parts: rgba(20, 110, 246, .48);--primary-color-A700-parts: rgba(20, 110, 246, .56);--primary-color-A800-parts: rgba(20, 110, 246, .64);--primary-color-A900-parts: rgba(20, 110, 246, .72);--primary-color-contrast-50-parts: rgba(0, 0, 0, .87);--primary-color-contrast-100-parts: rgba(0, 0, 0, .87);--primary-color-contrast-200-parts: rgba(0, 0, 0, .87);--primary-color-contrast-300-parts: rgba(0, 0, 0, .87);--primary-color-contrast-400-parts: rgba(0, 0, 0, .87);--primary-color-contrast-500-parts: rgba(255, 255, 255, 1);--primary-color-contrast-600-parts: rgba(255, 255, 255, 1);--primary-color-contrast-700-parts: rgba(255, 255, 255, 1);--primary-color-contrast-800-parts: rgba(255, 255, 255, 1);--primary-color-contrast-900-parts: rgba(255, 255, 255, 1);--primary-color-contrast-A50-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A100-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A200-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A300-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A400-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A500-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A600-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A700-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A800-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A900-parts: rgba(0, 0, 0, .87);--primary-color-50-parts-rgb: 237, 244, 255;--primary-color-100-parts-rgb: 185, 212, 252;--primary-color-200-parts-rgb: 138, 183, 251;--primary-color-300-parts-rgb: 91, 154, 249;--primary-color-400-parts-rgb: 55, 132, 247;--primary-color-500-parts-rgb: 20, 110, 246;--primary-color-600-parts-rgb: 18, 102, 245;--primary-color-700-parts-rgb: 14, 91, 243;--primary-color-800-parts-rgb: 11, 81, 242;--primary-color-900-parts-rgb: 6, 63, 239;--accent-color-50-parts: #e0f2f1;--accent-color-100-parts: #b2dfdb;--accent-color-200-parts: #80cbc4;--accent-color-300-parts: #4db6ac;--accent-color-400-parts: #26a69a;--accent-color-500-parts: #009688;--accent-color-600-parts: #00897b;--accent-color-700-parts: #00796b;--accent-color-800-parts: #00695c;--accent-color-900-parts: #004d40;--accent-color-A50-parts: rgba(0, 150, 136, .04);--accent-color-A100-parts: rgba(0, 150, 136, .08);--accent-color-A200-parts: rgba(0, 150, 136, .16);--accent-color-A300-parts: rgba(0, 150, 136, .24);--accent-color-A400-parts: rgba(0, 150, 136, .32);--accent-color-A500-parts: rgba(0, 150, 136, .4);--accent-color-A600-parts: rgba(0, 150, 136, .48);--accent-color-A700-parts: rgba(0, 150, 136, .56);--accent-color-A800-parts: rgba(0, 150, 136, .64);--accent-color-A900-parts: rgba(0, 150, 136, .72);--accent-color-contrast-50-parts: rgba(0, 0, 0, .87);--accent-color-contrast-100-parts: rgba(0, 0, 0, .87);--accent-color-contrast-200-parts: rgba(0, 0, 0, .87);--accent-color-contrast-300-parts: rgba(0, 0, 0, .87);--accent-color-contrast-400-parts: rgba(0, 0, 0, .87);--accent-color-contrast-500-parts: rgba(255, 255, 255, 1);--accent-color-contrast-600-parts: rgba(255, 255, 255, 1);--accent-color-contrast-700-parts: rgba(255, 255, 255, 1);--accent-color-contrast-800-parts: rgba(255, 255, 255, 1);--accent-color-contrast-900-parts: rgba(255, 255, 255, 1);--accent-color-contrast-A50-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A100-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A200-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A300-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A400-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A500-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A600-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A700-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A800-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A900-parts: rgba(0, 0, 0, .87);--accent-color-50-parts-rgb: 224, 242, 241;--accent-color-100-parts-rgb: 178, 223, 219;--accent-color-200-parts-rgb: 128, 203, 196;--accent-color-300-parts-rgb: 77, 182, 172;--accent-color-400-parts-rgb: 38, 166, 154;--accent-color-500-parts-rgb: 0, 150, 136;--accent-color-600-parts-rgb: 0, 137, 123;--accent-color-700-parts-rgb: 0, 121, 107;--accent-color-800-parts-rgb: 0, 105, 92;--accent-color-900-parts-rgb: 0, 77, 64;--warn-color-50-parts: #fceee3;--warn-color-100-parts: #f8d4b9;--warn-color-200-parts: #f4b78b;--warn-color-300-parts: #ef9a5d;--warn-color-400-parts: #eb843a;--warn-color-500-parts: #e86e17;--warn-color-600-parts: #e56614;--warn-color-700-parts: #e25b11;--warn-color-800-parts: #de510d;--warn-color-900-parts: #d83f07;--warn-color-A50-parts: rgba(232, 110, 23, .04);--warn-color-A100-parts: rgba(232, 110, 23, .08);--warn-color-A200-parts: rgba(232, 110, 23, .16);--warn-color-A300-parts: rgba(232, 110, 23, .24);--warn-color-A400-parts: rgba(232, 110, 23, .32);--warn-color-A500-parts: rgba(232, 110, 23, .4);--warn-color-A600-parts: rgba(232, 110, 23, .48);--warn-color-A700-parts: rgba(232, 110, 23, .56);--warn-color-A800-parts: rgba(232, 110, 23, .64);--warn-color-A900-parts: rgba(232, 110, 23, .72);--warn-color-contrast-50-parts: rgba(0, 0, 0, .87);--warn-color-contrast-100-parts: rgba(0, 0, 0, .87);--warn-color-contrast-200-parts: rgba(0, 0, 0, .87);--warn-color-contrast-300-parts: rgba(0, 0, 0, .87);--warn-color-contrast-400-parts: rgba(0, 0, 0, .87);--warn-color-contrast-500-parts: rgba(0, 0, 0, .87);--warn-color-contrast-600-parts: rgba(0, 0, 0, .87);--warn-color-contrast-700-parts: rgba(0, 0, 0, .87);--warn-color-contrast-800-parts: rgba(0, 0, 0, .87);--warn-color-contrast-900-parts: rgba(255, 255, 255, 1);--warn-color-contrast-A50-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A100-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A200-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A300-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A400-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A500-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A600-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A700-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A800-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A900-parts: rgba(0, 0, 0, .87);--warn-color-50-parts-rgb: 252, 238, 227;--warn-color-100-parts-rgb: 248, 212, 185;--warn-color-200-parts-rgb: 244, 183, 139;--warn-color-300-parts-rgb: 239, 154, 93;--warn-color-400-parts-rgb: 235, 132, 58;--warn-color-500-parts-rgb: 232, 110, 23;--warn-color-600-parts-rgb: 229, 102, 20;--warn-color-700-parts-rgb: 226, 91, 17;--warn-color-800-parts-rgb: 222, 81, 13;--warn-color-900-parts-rgb: 216, 63, 7;--info-color-50-parts: #edf4ff;--info-color-100-parts: #b9d4fc;--info-color-200-parts: #8ab7fb;--info-color-300-parts: #5b9af9;--info-color-400-parts: #3784f7;--info-color-500-parts: #146ef6;--info-color-600-parts: #1266f5;--info-color-700-parts: #0e5bf3;--info-color-800-parts: #0b51f2;--info-color-900-parts: #063fef;--info-color-A50-parts: rgba(20, 110, 246, .04);--info-color-A100-parts: rgba(20, 110, 246, .08);--info-color-A200-parts: rgba(20, 110, 246, .16);--info-color-A300-parts: rgba(20, 110, 246, .24);--info-color-A400-parts: rgba(20, 110, 246, .32);--info-color-A500-parts: rgba(20, 110, 246, .4);--info-color-A600-parts: rgba(20, 110, 246, .48);--info-color-A700-parts: rgba(20, 110, 246, .56);--info-color-A800-parts: rgba(20, 110, 246, .64);--info-color-A900-parts: rgba(20, 110, 246, .72);--info-color-contrast-50-parts: rgba(0, 0, 0, .87);--info-color-contrast-100-parts: rgba(0, 0, 0, .87);--info-color-contrast-200-parts: rgba(0, 0, 0, .87);--info-color-contrast-300-parts: rgba(0, 0, 0, .87);--info-color-contrast-400-parts: rgba(0, 0, 0, .87);--info-color-contrast-500-parts: rgba(255, 255, 255, 1);--info-color-contrast-600-parts: rgba(255, 255, 255, 1);--info-color-contrast-700-parts: rgba(255, 255, 255, 1);--info-color-contrast-800-parts: rgba(255, 255, 255, 1);--info-color-contrast-900-parts: rgba(255, 255, 255, 1);--info-color-contrast-A50-parts: rgba(0, 0, 0, .87);--info-color-contrast-A100-parts: rgba(0, 0, 0, .87);--info-color-contrast-A200-parts: rgba(0, 0, 0, .87);--info-color-contrast-A300-parts: rgba(0, 0, 0, .87);--info-color-contrast-A400-parts: rgba(0, 0, 0, .87);--info-color-contrast-A500-parts: rgba(0, 0, 0, .87);--info-color-contrast-A600-parts: rgba(0, 0, 0, .87);--info-color-contrast-A700-parts: rgba(0, 0, 0, .87);--info-color-contrast-A800-parts: rgba(0, 0, 0, .87);--info-color-contrast-A900-parts: rgba(0, 0, 0, .87);--info-color-50-parts-rgb: 237, 244, 255;--info-color-100-parts-rgb: 185, 212, 252;--info-color-200-parts-rgb: 138, 183, 251;--info-color-300-parts-rgb: 91, 154, 249;--info-color-400-parts-rgb: 55, 132, 247;--info-color-500-parts-rgb: 20, 110, 246;--info-color-600-parts-rgb: 18, 102, 245;--info-color-700-parts-rgb: 14, 91, 243;--info-color-800-parts-rgb: 11, 81, 242;--info-color-900-parts-rgb: 6, 63, 239;--success-color-50-parts: #e7f0e6;--success-color-100-parts: #c4dac1;--success-color-200-parts: #9cc198;--success-color-300-parts: #74a86e;--success-color-400-parts: #57954f;--success-color-500-parts: #398230;--success-color-600-parts: #337a2b;--success-color-700-parts: #2c6f24;--success-color-800-parts: #24651e;--success-color-900-parts: #175213;--success-color-A50-parts: rgba(57, 130, 48, .04);--success-color-A100-parts: rgba(57, 130, 48, .08);--success-color-A200-parts: rgba(57, 130, 48, .16);--success-color-A300-parts: rgba(57, 130, 48, .24);--success-color-A400-parts: rgba(57, 130, 48, .32);--success-color-A500-parts: rgba(57, 130, 48, .4);--success-color-A600-parts: rgba(57, 130, 48, .48);--success-color-A700-parts: rgba(57, 130, 48, .56);--success-color-A800-parts: rgba(57, 130, 48, .64);--success-color-A900-parts: rgba(57, 130, 48, .72);--success-color-contrast-50-parts: rgba(0, 0, 0, .87);--success-color-contrast-100-parts: rgba(0, 0, 0, .87);--success-color-contrast-200-parts: rgba(0, 0, 0, .87);--success-color-contrast-300-parts: rgba(0, 0, 0, .87);--success-color-contrast-400-parts: rgba(0, 0, 0, .87);--success-color-contrast-500-parts: rgba(255, 255, 255, 1);--success-color-contrast-600-parts: rgba(255, 255, 255, 1);--success-color-contrast-700-parts: rgba(255, 255, 255, 1);--success-color-contrast-800-parts: rgba(255, 255, 255, 1);--success-color-contrast-900-parts: rgba(255, 255, 255, 1);--success-color-contrast-A50-parts: rgba(0, 0, 0, .87);--success-color-contrast-A100-parts: rgba(0, 0, 0, .87);--success-color-contrast-A200-parts: rgba(0, 0, 0, .87);--success-color-contrast-A300-parts: rgba(0, 0, 0, .87);--success-color-contrast-A400-parts: rgba(0, 0, 0, .87);--success-color-contrast-A500-parts: rgba(0, 0, 0, .87);--success-color-contrast-A600-parts: rgba(0, 0, 0, .87);--success-color-contrast-A700-parts: rgba(0, 0, 0, .87);--success-color-contrast-A800-parts: rgba(0, 0, 0, .87);--success-color-contrast-A900-parts: rgba(0, 0, 0, .87);--success-color-50-parts-rgb: 231, 240, 230;--success-color-100-parts-rgb: 196, 218, 193;--success-color-200-parts-rgb: 156, 193, 152;--success-color-300-parts-rgb: 116, 168, 110;--success-color-400-parts-rgb: 87, 149, 79;--success-color-500-parts-rgb: 57, 130, 48;--success-color-600-parts-rgb: 51, 122, 43;--success-color-700-parts-rgb: 44, 111, 36;--success-color-800-parts-rgb: 36, 101, 30;--success-color-900-parts-rgb: 23, 82, 19;--error-color-50-parts: #fae5e4;--error-color-100-parts: #f3bdba;--error-color-200-parts: #eb928d;--error-color-300-parts: #e3665f;--error-color-400-parts: #dd453c;--error-color-500-parts: #d7241a;--error-color-600-parts: #d32017;--error-color-700-parts: #cd1b13;--error-color-800-parts: #c7160f;--error-color-900-parts: #be0d08;--error-color-A50-parts: rgba(215, 36, 26, .04);--error-color-A100-parts: rgba(215, 36, 26, .08);--error-color-A200-parts: rgba(215, 36, 26, .16);--error-color-A300-parts: rgba(215, 36, 26, .24);--error-color-A400-parts: rgba(215, 36, 26, .32);--error-color-A500-parts: rgba(215, 36, 26, .4);--error-color-A600-parts: rgba(215, 36, 26, .48);--error-color-A700-parts: rgba(215, 36, 26, .56);--error-color-A800-parts: rgba(215, 36, 26, .64);--error-color-A900-parts: rgba(215, 36, 26, .72);--error-color-contrast-50-parts: rgba(0, 0, 0, .87);--error-color-contrast-100-parts: rgba(0, 0, 0, .87);--error-color-contrast-200-parts: rgba(0, 0, 0, .87);--error-color-contrast-300-parts: rgba(0, 0, 0, .87);--error-color-contrast-400-parts: rgba(0, 0, 0, .87);--error-color-contrast-500-parts: rgba(255, 255, 255, 1);--error-color-contrast-600-parts: rgba(255, 255, 255, 1);--error-color-contrast-700-parts: rgba(255, 255, 255, 1);--error-color-contrast-800-parts: rgba(255, 255, 255, 1);--error-color-contrast-900-parts: rgba(255, 255, 255, 1);--error-color-contrast-A50-parts: rgba(0, 0, 0, .87);--error-color-contrast-A100-parts: rgba(0, 0, 0, .87);--error-color-contrast-A200-parts: rgba(0, 0, 0, .87);--error-color-contrast-A300-parts: rgba(0, 0, 0, .87);--error-color-contrast-A400-parts: rgba(0, 0, 0, .87);--error-color-contrast-A500-parts: rgba(0, 0, 0, .87);--error-color-contrast-A600-parts: rgba(0, 0, 0, .87);--error-color-contrast-A700-parts: rgba(0, 0, 0, .87);--error-color-contrast-A800-parts: rgba(0, 0, 0, .87);--error-color-contrast-A900-parts: rgba(0, 0, 0, .87);--error-color-50-parts-rgb: 250, 229, 228;--error-color-100-parts-rgb: 243, 189, 186;--error-color-200-parts-rgb: 235, 146, 141;--error-color-300-parts-rgb: 227, 102, 95;--error-color-400-parts-rgb: 221, 69, 60;--error-color-500-parts-rgb: 215, 36, 26;--error-color-600-parts-rgb: 211, 32, 23;--error-color-700-parts-rgb: 205, 27, 19;--error-color-800-parts-rgb: 199, 22, 15;--error-color-900-parts-rgb: 190, 13, 8;--neutral-color-50-parts: #e9e9e9;--neutral-color-100-parts: #dddddd;--neutral-color-200-parts: #cccccc;--neutral-color-300-parts: #b0b0b0;--neutral-color-400-parts: #909090;--neutral-color-500-parts: #515151;--neutral-color-600-parts: #424242;--neutral-color-700-parts: #333333;--neutral-color-800-parts: #212121;--neutral-color-900-parts: #141414;--neutral-color-A50-parts: rgba(81, 81, 81, .04);--neutral-color-A100-parts: rgba(81, 81, 81, .08);--neutral-color-A200-parts: rgba(81, 81, 81, .16);--neutral-color-A300-parts: rgba(81, 81, 81, .24);--neutral-color-A400-parts: rgba(81, 81, 81, .32);--neutral-color-A500-parts: rgba(81, 81, 81, .4);--neutral-color-A600-parts: rgba(81, 81, 81, .48);--neutral-color-A700-parts: rgba(81, 81, 81, .56);--neutral-color-A800-parts: rgba(81, 81, 81, .64);--neutral-color-A900-parts: rgba(81, 81, 81, .72);--neutral-color-contrast-50-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-100-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-200-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-300-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-400-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-500-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-600-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-700-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-800-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-900-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-A50-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A100-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A200-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A300-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A400-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A500-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A600-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A700-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A800-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A900-parts: rgba(0, 0, 0, .87);--neutral-color-50-parts-rgb: 233, 233, 233;--neutral-color-100-parts-rgb: 221, 221, 221;--neutral-color-200-parts-rgb: 204, 204, 204;--neutral-color-300-parts-rgb: 176, 176, 176;--neutral-color-400-parts-rgb: 144, 144, 144;--neutral-color-500-parts-rgb: 81, 81, 81;--neutral-color-600-parts-rgb: 66, 66, 66;--neutral-color-700-parts-rgb: 51, 51, 51;--neutral-color-800-parts-rgb: 33, 33, 33;--neutral-color-900-parts-rgb: 20, 20, 20}.filter-panel{border-radius:8px!important;background-color:#fafafa;margin-bottom:24px;padding:20px}.filter-panel p{font-family:var(--sftn-font-family-body, sans-serif)!important;font-style:normal!important;font-weight:500!important;font-size:16px!important;line-height:24px!important;margin-top:0!important}.filter-panel .filter-panel-select-container{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.ag-theme-material{width:100%;justify-content:center!important;--ag-font-size: 16px;--ag-font-family: var(--sftn-font-family, sans-serif);--ag-header-background-color: #FAFAFA;--ag-background-color: #FFFFFF;--ag-borders: solid 1px #E9E9E9;--ag-wrapper-border-radius: 8px;--ag-cell-horizontal-padding: 16px;--ag-border-color: #E9E9E9;--ag-material-primary-color: var(--primary-color-500-parts) !important;--ag-material-accent-color: var(--primary-color-300-parts) !important;--ag-icon-size: 18px;--ag-header-cell-hover-background-color: #FFFFFF;--ag-row-hover-color: #FFFFFF;--ag-column-hover-color: #FFFFFF}@media only screen and (max-width: 752px){.ag-theme-material{--ag-cell-horizontal-padding: 8px;--ag-font-size: 12px}}.ag-theme-material ::ng-deep .ag-root-wrapper{border-left:solid 1px #E9E9E9!important;border-top:solid 1px #E9E9E9!important;border-bottom:solid 1px #E9E9E9!important}.ag-theme-material ::ng-deep .ag-cell-focus{border-color:var(--primary-color-300-parts)!important;border-width:3px!important}.ag-theme-material ::ng-deep .ag-header ::ng-deep .ag-pinned-left-header,.ag-theme-material ::ng-deep .ag-body-viewport ::ng-deep .ag-pinned-left-cols-container{position:relative;z-index:1;-webkit-box-shadow:2px 0px 2px 0px rgba(42,42,42,.1);box-shadow:2px 0 2px #2a2a2a1a}.ag-theme-material ::ng-deep .ag-checkbox{padding-right:16px!important;padding-left:16px!important}.ag-theme-material ::ng-deep .ag-body-horizontal-scroll:not(.ag-scrollbar-invisible),.ag-theme-material ::ng-deep .ag-horizontal-left-spacer:not(.ag-scroller-corner){border-right:none}.ag-theme-material ::ng-deep .ag-body-horizontal-scroll-viewport,.ag-theme-material ::ng-deep .ag-body-vertical-scroll-viewport{overflow:hidden}.ag-theme-material ::ng-deep .ag-horizontal-left-spacer{overflow-x:hidden}.ag-theme-material ::ng-deep .ag-header-cell{font-size:16px!important;font-weight:400;color:#0009!important}@media only screen and (max-width: 752px){.ag-theme-material ::ng-deep .ag-header-cell{font-size:12px!important}}.ag-theme-material ::ng-deep .ag-cell{font-weight:400!important;display:flex!important;flex-direction:column!important}.ag-theme-material ::ng-deep .ag-header-icon.ag-header-label-icon.ag-filter-icon{display:none!important}.ag-theme-material ::ng-deep .ag-center-cols-viewport,.ag-theme-material ::ng-deep .ag-center-cols-viewport .ag-center-cols-container{min-height:53px!important}.ag-theme-material ::ng-deep .ag-overlay-wrapper.ag-overlay-no-rows-wrapper{font-size:14px;font-weight:500;color:#0009}.ag-theme-material.no-rows ::ng-deep .ag-body-horizontal-scroll{display:none!important}.ag-theme-material.no-rows ::ng-deep .ag-root-wrapper{border:none!important}.ag-theme-material.no-rows ::ng-deep .ag-header{border-top:solid 1px #E9E9E9;border-left:solid 1px #E9E9E9;border-right:solid 1px #E9E9E9;border-top-left-radius:8px;border-top-right-radius:8px}.ag-theme-material:hover ::ng-deep .ag-body-vertical-scroll-viewport{overflow-y:auto}.ag-theme-material:hover ::ng-deep .ag-body-horizontal-scroll-viewport{overflow-x:auto}.dense-4{--mat-form-field-container-height: 40px;--mat-form-field-filled-label-display: none;--mat-form-field-container-vertical-padding: 8px;--mat-form-field-filled-with-label-container-padding-top: 8px;--mat-form-field-filled-with-label-container-padding-bottom: 8px}.search-icon{font-weight:700;font-size:20px;color:#000000de;opacity:.87}:host::ng-deep mat-form-field.sof-form-field.table-search-field .mat-mdc-form-field-subscript-wrapper{display:none}:host::ng-deep mat-form-field.sof-form-field.table-search-field .mat-mdc-text-field-wrapper{border-radius:10px}:host::ng-deep mat-form-field.sof-form-field.table-search-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-icon-prefix{padding-right:8px!important}:host::ng-deep mat-form-field.sof-form-field.table-search-field .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#fafafa!important}:host::ng-deep mat-form-field.sof-form-field.table-search-field .mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#000000de;caret-color:#000000de;opacity:.87;letter-spacing:normal}:host::ng-deep mat-form-field.sof-form-field.table-search-field .mdc-text-field--filled .mdc-line-ripple:before,:host::ng-deep mat-form-field.sof-form-field.table-search-field .mdc-text-field--filled .mdc-line-ripple:after{border:none!important}:host::ng-deep mat-form-field.sof-form-field.table-search-field .mdc-text-field--filled .mat-mdc-floating-label:not(.mdc-floating-label--float-above){display:block!important}:host::ng-deep mat-form-field.sof-form-field.table-search-field .mdc-text-field--filled .mat-mdc-floating-label:not(.mdc-floating-label--float-above) .search-label{color:#000000de;opacity:.6;font-family:var(--sftn-font-family, sans-serif);letter-spacing:normal}:host::ng-deep mat-form-field.sof-form-field.table-search-field.mat-focused .mat-mdc-text-field-wrapper{outline:3px solid var(--primary-color-300-parts);outline-offset:2px}:host::ng-deep mat-form-field.sof-form-field.table-search-field.mat-focused .mat-mdc-text-field-wrapper i.search-icon{color:var(--primary-color-500-parts)}::ng-deep .custom-paginator{width:100%;justify-content:flex-start;align-items:flex-start;display:inline-flex;height:40px!important;margin-top:24px}::ng-deep .custom-paginator .first-section{flex:1 1 0;align-self:stretch;justify-content:flex-start;align-items:center!important;gap:16px!important;display:flex}::ng-deep .custom-paginator .first-section .button-part-1{height:40px!important;align-self:center;padding-left:16px;background:#fafafa;border-radius:8px;overflow:unset!important;justify-content:center;align-items:center;display:inline-flex;border:none;gap:16px;border:2px solid transparent}::ng-deep .custom-paginator .first-section .button-part-1:hover,::ng-deep .custom-paginator .first-section .button-part-1:focus,::ng-deep .custom-paginator .first-section .button-part-1:active{border-radius:10px;justify-content:center;display:inline-flex;border-color:var(--primary-color-500-parts);height:40px!important;align-self:center;padding-left:16px;background:#fafafa;overflow:unset!important;align-items:center;gap:16px}::ng-deep .custom-paginator .first-section .field{display:flex;flex-direction:row;gap:16px;align-items:center}::ng-deep .custom-paginator .mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{align-items:center!important;width:100px!important}::ng-deep .custom-paginator .second-section{justify-content:flex-start;align-items:center;gap:16px;display:flex}::ng-deep .custom-paginator .page-select{height:100%;padding:8px 16px;background:#fafafa;border-radius:8px;overflow:hidden;justify-content:flex-start;align-items:center;gap:16px;display:inline-flex}::ng-deep .custom-paginator .select-icon{width:100%;position:relative;height:20px!important;font-size:20px!important}::ng-deep .custom-paginator .pageChangeText{color:#000000de;font-size:16px;font-family:var(--sftn-font-family, sans-serif);font-weight:400;word-wrap:break-word}::ng-deep .custom-paginator .mat-select{color:#000000de;font-size:16px;font-family:var(--sftn-font-family, sans-serif);font-weight:400;word-wrap:break-word}::ng-deep .custom-paginator .go-to-page{width:fit-content;align-self:stretch;justify-content:flex-start;align-items:center;gap:16px;display:flex}::ng-deep .custom-paginator .go-to-page .outer-box{height:40px;flex-direction:column;justify-content:flex-start;align-items:flex-start;display:inline-flex}::ng-deep .custom-paginator .go-to-page .field{display:flex;flex-direction:row;gap:16px;align-items:center}::ng-deep .custom-paginator .go-to-page .button-part{align-self:center;flex:1 1 0;padding:8px 16px;background:#fafafa;border-radius:8px;overflow:unset!important;justify-content:center;align-items:flex-start;gap:16px;display:inline-flex;border:2px solid transparent}::ng-deep .custom-paginator .go-to-page .button-part:hover,::ng-deep .custom-paginator .go-to-page .button-part:focus,::ng-deep .custom-paginator .go-to-page .button-part:active{align-self:center;flex:1 1 0;padding:8px 16px;background:#fafafa;border-radius:10px;overflow:unset!important;justify-content:center;align-items:flex-start;gap:16px;display:inline-flex;border-color:var(--primary-color-500-parts)}::ng-deep .custom-paginator .go-to-page .current-page{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:8px;font-size:16px!important;font-family:var(--sftn-font-family, sans-serif)!important}::ng-deep .custom-paginator .go-to-page .page{position:relative}::ng-deep .custom-paginator .go-to-page .of-page{position:relative;color:#0009}::ng-deep .custom-paginator .mat-mdc-select-value{font-size:16px!important;font-family:var(--sftn-font-family, sans-serif)!important}::ng-deep .custom-paginator .mat-form-field-appearance-outline .mat-mdc-select-arrow-wrapper{transform:none!important}::ng-deep .custom-paginator .mat-mdc-select-arrow{display:none!important}::ng-deep .custom-paginator .mat-form-field-underline{display:none!important}::ng-deep .custom-paginator .mdc-line-ripple{display:none!important}::ng-deep .custom-paginator .mat-mdc-text-field-wrapper{background-color:#fff!important;height:40px!important}::ng-deep .custom-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-focus-overlay{display:none!important}::ng-deep .page-option mat-pseudo-checkbox{display:none!important}::ng-deep .mat-mdc-select-panel{scrollbar-width:thin!important;background-color:#fafafa!important;box-shadow:0 4px 8px 0 var(--neutral-color-A300-parts)!important;border-radius:8px!important;min-width:82px!important}.table-filter-select ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.loading-container{display:flex;align-items:center;justify-content:center;width:100%}::ng-deep .mdc-circular-progress__indeterminate-circle-graphic{stroke:var(--primary-color-500-parts)!important}\n"], dependencies: [{ kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i2.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "columnMenu", "suppressMenuHide", "enableBrowserTooltips", "tooltipTrigger", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "tooltipShowMode", "tooltipInteraction", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "suppressCutToClipboard", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "dataTypeDefinitions", "maintainColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "autoSizeStrategy", "components", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "enterNavigatesVertically", "enterNavigatesVerticallyAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "quickFilterText", "cacheQuickFilter", "excludeHiddenColumnsFromQuickFilter", "includeHiddenColumnsInQuickFilter", "quickFilterParser", "quickFilterMatcher", "applyQuickFilterBeforePivotOrAgg", "excludeChildrenWhenTreeDataFiltering", "enableAdvancedFilter", "advancedFilterModel", "includeHiddenColumnsInAdvancedFilter", "advancedFilterParent", "advancedFilterBuilderParams", "suppressAdvancedFilterEval", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "suppressChartToolPanelsButton", "chartToolPanelsDef", "chartMenuItems", "loadingCellRenderer", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressParentsInRowNodes", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationPageSizeSelector", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotMaxGeneratedColumns", "pivotDefaultExpanded", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "alwaysAggregateAtRootLevel", "suppressAggAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDuration", "cellFlashDelay", "cellFadeDuration", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererParams", "embedFullWidthRows", "suppressGroupMaintainValueType", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupLockGroupColumns", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupTotalRow", "grandTotalRow", "suppressStickyTotalRow", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "suppressGroupRowsSticky", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "suppressServerSideInfiniteScroll", "suppressServerSideFullWidthLoadingRow", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideEnableClientSideSort", "serverSideOnlyRefreshFilteredGroups", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSidePivotResultFieldSeparator", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellFocus", "suppressHeaderFocus", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "gridId", "deltaSort", "treeDataDisplayType", "functionsPassive", "enableGroupEdit", "initialState", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processUnpinnedColumns", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "getLocaleText", "getDocument", "paginationNumberFormatter", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "columnMenuVisibleChanged", "contextMenuVisibleChanged", "cutStart", "cutEnd", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "columnHeaderMouseOver", "columnHeaderMouseLeave", "columnHeaderClicked", "columnHeaderContextMenu", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "rangeDeleteStart", "rangeDeleteEnd", "fillStart", "fillEnd", "filterOpened", "filterChanged", "filterModified", "advancedFilterBuilderVisibleChanged", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "gridReady", "gridPreDestroyed", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "stateUpdated", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pivotMaxColumnsExceeded", "pinnedRowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "storeRefreshed", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "tooltipShow", "tooltipHide", "sortChanged", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i6.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i11.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i12.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "pipe", type: i13.TranslatePipe, name: "translate" }] }); }
|
|
477
|
-
}
|
|
478
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: SofTableComponent, decorators: [{
|
|
479
|
-
type: Component,
|
|
480
|
-
args: [{ selector: 'sof-table', template: "<div \r\n [fxShow]=\"isGridDataRendered()\"\r\n fxLayoutGap=\"16px\" m-b-24>\r\n @if (enableFilter && colFilters.length) {\r\n <button \r\n (click)=\"toggleFilterPanel()\" \r\n mat-flat-button class=\"sof-button-v2\"\r\n theme=\"neutral\" \r\n [attr.emphasis]=\"filterOpenState ? 'solid' : filterCount === 0 ? 'secondary' : 'contained'\"\r\n [matBadge]=\"filterCount\"\r\n matBadgePosition=\"after\"\r\n [matBadgeHidden]=\"filterCount === 0 ? true : false\">\r\n <i class=\"ph ph-bold ph-sliders-horizontal\" aria-hidden=\"true\"></i>\r\n {{'armature.sof-table.filter' | translate}}\r\n </button>\r\n }\r\n @if (enableSearch) {\r\n <mat-form-field class=\"sof-form-field table-search-field dense-4\" fxFlex=\"auto\">\r\n <span matPrefix>\r\n <i class=\"ph-bold ph-magnifying-glass search-icon\" aria-hidden=\"true\"></i>\r\n </span>\r\n <mat-label class=\"search-label\">{{'armature.sof-table.search' | translate}}</mat-label>\r\n <input \r\n (input)=\"onSearchTextChanged()\" \r\n #gridSearchTextInput matInput type=\"text\" id=\"gridSearchTextInput\"\r\n [attr.aria-label]=\"'armature.sof-table.screen-reader.search-filter-description' | translate\"/>\r\n </mat-form-field>\r\n }\r\n @if (enableColumnOptions) {\r\n <button \r\n (click)=\"openColumnOptions()\"\r\n mat-flat-button class=\"sof-button-icon-v2\" \r\n theme=\"neutral\" emphasis=\"secondary\" id=\"open-column-options\"\r\n [attr.aria-label]=\"'armature.sof-table.screen-reader.column-options-btn' | translate\"\r\n [matTooltip]=\"'armature.sof-table.screen-reader.column-options-btn' | translate\"\r\n [disabled]=\"!totalLength\">\r\n <i class=\"ph-bold ph-pause\" aria-hidden=\"true\"></i>\r\n </button>\r\n }\r\n @if(enableExport) {\r\n <button \r\n (click)=\"exportFilteredRowData()\"\r\n mat-flat-button class=\"sof-button-icon-v2\" \r\n theme=\"neutral\" emphasis=\"secondary\" id=\"export-table\"\r\n [attr.aria-label]=\"'armature.sof-table.screen-reader.export-table' | translate\"\r\n [matTooltip]=\"'armature.sof-table.screen-reader.export-table' | translate\"\r\n [disabled]=\"!totalLength\">\r\n <i class=\"ph-bold ph-export\" aria-hidden=\"true\"></i>\r\n </button>\r\n }\r\n <ng-content select=\"[sof-table-right-buttons]\"></ng-content>\r\n <!-- \r\n Only inject <button>'s inside an <ng-container sof-table-right-buttons>\r\n ... \r\n <ng-container sof-table-right-buttons>\r\n <button \r\n (click)=\"anyFunction()\"\r\n mat-flat-button class=\"sof-button-icon-v2\" \r\n theme=\"neutral\" emphasis=\"secondary\" aria-label=\"any button\"\r\n matTooltip=\"any button\">\r\n <i class=\"ph-bold ph-acorn\" aria-hidden=\"true\"></i>\r\n </button>\r\n </ng-container>\r\n ... \r\n note: make sure buttons have the following attributes to match others =\r\n `mat-flat-button class=\"sof-button-icon-v2\" theme=\"neutral\" emphasis=\"secondary\"`\r\n * remember to add aria-label and tooltip for icon button\r\n -->\r\n</div>\r\n\r\n<div #ariaResultsCount class=\"sr-only\" aria-live=\"assertive\"></div>\r\n\r\n@if (isGridDataRendered() && filterOpenState) {\r\n <fieldset \r\n class=\"filter-panel\" role=\"region\"\r\n [attr.aria-label]=\"'armature.sof-table.screen-reader.select-filters-description' | translate\">\r\n <p>\r\n <i class=\"ph ph-bold ph-sliders-horizontal\" aria-hidden=\"true\"></i>\r\n <span class=\"m-l-8\">{{'armature.sof-table.filter' | translate}}</span>\r\n </p>\r\n <div class=\"filter-panel-select-container m-v-20\">\r\n @for (colFilter of colFilters; let i = $index; track i) {\r\n <mat-form-field appearance=\"outline\" class=\"sof-form-field table-filter-select\">\r\n <mat-label>{{colFilter.label}}</mat-label>\r\n <mat-select \r\n [(ngModel)]=\"filterSelections[i]\" \r\n multiple \r\n id=\"filterDropdown{{i}}\"\r\n placeholder=\"{{'armature.sof-table.all' | translate}}\" disableRipple=\"true\">\r\n @for (colOption of colFilter.options; track $index) {\r\n <mat-option [value]=\"colOption\">\r\n {{colOption}}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n </div>\r\n <div fxLayout=\"row\">\r\n <div fxFlex=\"50%\">\r\n <button \r\n (click)=\"clearFilters()\" [disabled]=\"hasEmptyFilters()\" \r\n mat-flat-button class=\"sof-button-v2\"\r\n theme=\"neutral\" emphasis=\"floating\"\r\n id=\"tableFilterClear\">\r\n {{'armature.sof-table.reset' | translate}}\r\n </button>\r\n </div>\r\n <div fxFlex=\"50%\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"2%\" fxLayoutAlign=\"flex-end\">\r\n <div fxFlex=\"0 1 auto\">\r\n <button \r\n (click)=\"cancelFilterChanges()\" mat-flat-button class=\"sof-button-v2\" \r\n id=\"tableFilterCancel\" theme=\"neutral\" emphasis=\"secondary\">\r\n {{'armature.sof-table.cancel' | translate}}\r\n </button>\r\n </div>\r\n <div fxFlex=\"0 1 auto\">\r\n <button \r\n (click)=\"applyFilters()\" mat-flat-button class=\"sof-button-v2\"\r\n id=\"tableFilterApply\" theme=\"primary\" emphasis=\"solid\">\r\n {{'armature.sof-table.results' | translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </fieldset>\r\n}\r\n\r\n<ag-grid-angular \r\n [fxShow]=\"isGridDataRendered()\"\r\n (gridReady)=\"onGridReady($event)\" \r\n (firstDataRendered)=\"onFirstDataRendered()\"\r\n (filterChanged)=\"onFilterChanged()\"\r\n (paginationChanged)=\"changePageSize($event)\" \r\n [rowData]=\"rowData\" \r\n [columnDefs]=\"colDefs\" \r\n [defaultColDef]=\"defaultColDef\" \r\n [pagination]=\"true\" \r\n [suppressPaginationPanel]=\"true\"\r\n [paginationPageSizeSelector]=\"paginationPageSizeSelector\" \r\n [paginationPageSize]=\"paginationPageSize\"\r\n [headerHeight]=\"rowHeight\" \r\n [rowHeight]=\"rowHeight\" \r\n [domLayout]=\"'autoHeight'\" \r\n [tooltipShowDelay]=\"tooltipShowDelay\"\r\n [overlayNoRowsTemplate]=\"('armature.sof-table.no-rows' | translate) || 'No results found.'\"\r\n [class.no-rows]=\"!totalLength\"\r\n class=\"ag-theme-material\">\r\n</ag-grid-angular>\r\n\r\n<div \r\n [fxShow]=\"isGridDataRendered() && totalLength\"\r\n class=\"custom-paginator\">\r\n <div class=\"first-section\">\r\n <button class=\"button-part-1\" type=\"button\">\r\n <mat-select \r\n #pageSizeSelect\r\n id=\"pageSizeInput\" name=\"pageSizeInput\" \r\n [(value)]=\"paginationPageSize\" disableRipple=\"true\">\r\n @for (size of paginationPageSizeSelector; let i = $index; track i) {\r\n <mat-option \r\n class=\"page-option\" id=\"size{{i}}\"\r\n [value]=\"paginationPageSizeSelector[i]\">\r\n {{size}}\r\n </mat-option>\r\n }\r\n <mat-select-trigger>\r\n <div class=\"field\">\r\n <span class=\"current-page\">\r\n <span class=\"page\">{{paginationPageSize}}</span>\r\n </span>\r\n <span class=\"select-icon\">\r\n <i [class]=\"'ph-bold ph-caret-' + (pageSizeSelect.panelOpen ? 'up':'down')\" aria-hidden=\"true\"></i>\r\n </span>\r\n </div>\r\n </mat-select-trigger>\r\n </mat-select>\r\n </button>\r\n <span class=\"pageChangeText\">\r\n {{pageChangeText}} {{'armature.sof-table.of' | translate}} {{totalLength}}\r\n </span>\r\n </div>\r\n <div class=\"go-to-page\">\r\n <div class=\"outer-box\">\r\n <button class=\"button-part\" type=\"button\">\r\n <mat-select \r\n #pageNumberSelect\r\n (selectionChange)=\"onPageNumberChange($event.value)\"\r\n [(value)]=\"currentPage\" \r\n id=\"pageSelelctor\" name=\"pageSelector\" disableRipple=\"true\">\r\n @for (page of pageSelector; track $index) {\r\n <mat-option [value]=\"page\" class=\"page-option\">\r\n <span class=\"current-page\">\r\n <span class=\"page\">{{page}}</span>\r\n </span>\r\n </mat-option>\r\n }\r\n <mat-select-trigger>\r\n <div class=\"field\">\r\n <span class=\"current-page\">\r\n <span class=\"page\">{{currentPage}}</span>\r\n <span class=\"of-page\"> {{'armature.sof-table.of' | translate}} {{totalNumberOfPages}} </span>\r\n </span>\r\n <span class=\"select-icon\">\r\n <i [class]=\"'ph-bold ph-caret-' + (pageNumberSelect.panelOpen ? 'up':'down')\" aria-hidden=\"true\"></i>\r\n </span>\r\n </div>\r\n </mat-select-trigger>\r\n </mat-select>\r\n </button>\r\n </div>\r\n <nav class=\"second-section\">\r\n <button \r\n (click)=\"previousPage()\"\r\n id=\"prev-button\" mat-flat-button class=\"sof-button-icon-v2\" theme=\"neutral\" emphasis=\"secondary\"\r\n [disabled]=\"currentPage === 1\" \r\n [attr.aria-label]=\"'screen-reader.pagination.previous' | translate\">\r\n <i class=\"ph-bold ph-caret-left\" aria-hidden=\"true\"></i>\r\n </button>\r\n <button \r\n (click)=\"nextPage()\" \r\n id=\"next-button\" mat-flat-button class=\"sof-button-icon-v2\" theme=\"neutral\" emphasis=\"secondary\"\r\n [disabled]=\"currentPage === totalNumberOfPages\"\r\n [attr.aria-label]=\"'screen-reader.pagination.next' | translate\">\r\n <i class=\"ph-bold ph-caret-right\" aria-hidden=\"true\"></i>\r\n </button>\r\n </nav>\r\n </div>\r\n</div>\r\n\r\n@if (!isGridDataRendered()) {\r\n <div class=\"loading-container\">\r\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\"/>\r\n </div>\r\n}\r\n", styles: ["@font-face{font-family:agGridMaterial;src:url(data:font/woff2;charset=utf-8;base64,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);font-weight:400;font-style:normal}.ag-theme-material,.ag-theme-material-dark,.ag-theme-material-auto-dark{--ag-material-primary-color: #3f51b5;--ag-material-accent-color: #ff4081;--ag-foreground-color: rgba(0, 0, 0, .87);--ag-secondary-foreground-color: rgba(0, 0, 0, .54);--ag-disabled-foreground-color: rgba(0, 0, 0, .38);--ag-background-color: #fff;--ag-header-background-color: #fff;--ag-tooltip-background-color: #fff;--ag-subheader-background-color: #eee;--ag-subheader-toolbar-background-color: rgba(238, 238, 238, .5);--ag-header-cell-hover-background-color: #f2f2f2;--ag-chip-background-color: #e2e2e2;--ag-range-selection-background-color: rgba(122, 134, 203, .1);--ag-range-selection-background-color-2: rgba(122, 134, 203, .19);--ag-range-selection-background-color-3: rgba(122, 134, 203, .27);--ag-range-selection-background-color-4: rgba(122, 134, 203, .34);--ag-range-selection-highlight-color: #fce4ec;--ag-row-hover-color: #fafafa;--ag-column-hover-color: #fafafa;--ag-control-panel-background-color: #fafafa;--ag-selected-row-background-color: rgba(33, 150, 243, .3);--ag-checkbox-unchecked-color: #333;--ag-value-change-value-highlight-background-color: #00acc1;--ag-side-button-selected-background-color: transparent;--ag-advanced-filter-join-pill-color: #f08e8d;--ag-advanced-filter-column-pill-color: #a6e194;--ag-advanced-filter-option-pill-color: #f3c08b;--ag-advanced-filter-value-pill-color: #85c0e4;--ag-range-selection-border-color: var(--ag-material-primary-color);--ag-checkbox-checked-color: var(--ag-material-accent-color);--ag-borders: none;--ag-borders-critical: solid 1px;--ag-border-color: #e2e2e2;--ag-grid-size: 8px;--ag-icon-size: 18px;--ag-header-height: calc(var(--ag-grid-size) * 7);--ag-row-height: calc(var(--ag-grid-size) * 6);--ag-cell-horizontal-padding: calc(var(--ag-grid-size) * 3);--ag-list-item-height: calc(var(--ag-grid-size) * 4);--ag-row-group-indent-size: calc(var(--ag-grid-size) * 3 + var(--ag-icon-size));--ag-filter-tool-panel-sub-level-row-height: calc(var(--ag-grid-size) * 4);--ag-checkbox-border-radius: 2px;--ag-toggle-button-switch-border-width: 2px;--ag-toggle-button-height: var(--ag-icon-size);--ag-widget-container-horizontal-padding: calc(var(--ag-grid-size) * 1.5);--ag-widget-container-vertical-padding: calc(var(--ag-grid-size) * 2);--ag-widget-vertical-spacing: calc(var(--ag-grid-size) * 1.75);--ag-font-family: Roboto, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;--ag-font-size: 13px;--ag-icon-font-family: agGridMaterial;--ag-selected-tab-underline-color: var(--ag-material-primary-color);--ag-selected-tab-underline-width: 2px;--ag-input-focus-border-color: var(--ag-material-primary-color);--ag-input-focus-box-shadow: 0 0 0 5px rgba(32, 33, 36, .122);--ag-card-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12);--ag-card-radius: 2px;--ag-invalid-color: #e02525}.ag-theme-material-dark{--ag-material-primary-color: #3f51b5;--ag-material-accent-color: #bb86fcff;--ag-range-selection-border-color: var(--ag-material-accent-color);--ag-background-color: #121212ff;--ag-foreground-color: #ffffffff;--ag-data-color: #f5f5f5ff;--ag-header-cell-hover-background-color: #000000ff;--ag-advanced-filter-join-pill-color: #7a3a37ff;--ag-advanced-filter-column-pill-color: #355f2dff;--ag-advanced-filter-option-pill-color: #5a3168ff;--ag-advanced-filter-value-pill-color: #374c86ff;--ag-input-disabled-border-color: #3a434eff;--ag-input-disabled-background-color: #68686e12;--ag-selected-row-background-color: #bb86fc33;--ag-row-hover-color: #bb86fc33;--ag-column-hover-color: #f5f5f50d;--ag-range-selection-background-color: #bb86fc1a;--ag-range-selection-background-color-2: #bb86fc30;--ag-range-selection-background-color-3: #bb86fc45;--ag-range-selection-background-color-4: #bb86fc57;--ag-border-color: #383838ff;--ag-secondary-border-color: #383838ff;--ag-header-background-color: #121212ff;--ag-tooltip-background-color: #212b38ff;--ag-odd-row-background-color: #121212ff;--ag-control-panel-background-color: #2c2c2cff;--ag-subheader-background-color: #ffffff0d;--ag-subheader-toolbar-background-color: #2c2c2cff;--ag-invalid-color: #e02525ff;--ag-checkbox-unchecked-color: #797e87ff;--ag-checkbox-background-color: #121212ff;--ag-secondary-foreground-color: #f5f5f5ff;--ag-input-border-color: #383838ff;--ag-input-border-color-invalid: #e02525ff;--ag-disabled-foreground-color: #f5f5f580;--ag-chip-background-color: #22262812;--ag-side-button-selected-background-color: #2c2c2cff;--ag-selected-tab-underline-color: #3f51b5ff;--ag-modal-overlay-background-color: #121212a8;--ag-value-change-delta-up-color: #43a047a8;--ag-value-change-delta-down-color: #e53935ff;--ag-menu-background-color: #2c2c2cff;--ag-row-loading-skeleton-effect-color: rgba(202, 203, 204, .4);color-scheme:dark}@media (prefers-color-scheme: dark){.ag-theme-material-auto-dark{--ag-material-primary-color: #3f51b5;--ag-material-accent-color: #bb86fcff;--ag-range-selection-border-color: var(--ag-material-accent-color);--ag-background-color: #121212ff;--ag-foreground-color: #ffffffff;--ag-data-color: #f5f5f5ff;--ag-header-cell-hover-background-color: #000000ff;--ag-advanced-filter-join-pill-color: #7a3a37ff;--ag-advanced-filter-column-pill-color: #355f2dff;--ag-advanced-filter-option-pill-color: #5a3168ff;--ag-advanced-filter-value-pill-color: #374c86ff;--ag-input-disabled-border-color: #3a434eff;--ag-input-disabled-background-color: #68686e12;--ag-selected-row-background-color: #bb86fc33;--ag-row-hover-color: #bb86fc33;--ag-column-hover-color: #f5f5f50d;--ag-range-selection-background-color: #bb86fc1a;--ag-range-selection-background-color-2: #bb86fc30;--ag-range-selection-background-color-3: #bb86fc45;--ag-range-selection-background-color-4: #bb86fc57;--ag-border-color: #383838ff;--ag-secondary-border-color: #383838ff;--ag-header-background-color: #121212ff;--ag-tooltip-background-color: #212b38ff;--ag-odd-row-background-color: #121212ff;--ag-control-panel-background-color: #2c2c2cff;--ag-subheader-background-color: #ffffff0d;--ag-subheader-toolbar-background-color: #2c2c2cff;--ag-invalid-color: #e02525ff;--ag-checkbox-unchecked-color: #797e87ff;--ag-checkbox-background-color: #121212ff;--ag-secondary-foreground-color: #f5f5f5ff;--ag-input-border-color: #383838ff;--ag-input-border-color-invalid: #e02525ff;--ag-disabled-foreground-color: #f5f5f580;--ag-chip-background-color: #22262812;--ag-side-button-selected-background-color: #2c2c2cff;--ag-selected-tab-underline-color: #3f51b5ff;--ag-modal-overlay-background-color: #121212a8;--ag-value-change-delta-up-color: #43a047a8;--ag-value-change-delta-down-color: #e53935ff;--ag-menu-background-color: #2c2c2cff;--ag-row-loading-skeleton-effect-color: rgba(202, 203, 204, .4);color-scheme:dark}}.ag-theme-material .ag-filter-toolpanel-header,.ag-theme-material .ag-filter-toolpanel-search,.ag-theme-material .ag-status-bar,.ag-theme-material .ag-header-row,.ag-theme-material .ag-panel-title-bar-title,.ag-theme-material .ag-multi-filter-group-title-bar,.ag-theme-material-dark .ag-filter-toolpanel-header,.ag-theme-material-dark .ag-filter-toolpanel-search,.ag-theme-material-dark .ag-status-bar,.ag-theme-material-dark .ag-header-row,.ag-theme-material-dark .ag-panel-title-bar-title,.ag-theme-material-dark .ag-multi-filter-group-title-bar,.ag-theme-material-auto-dark .ag-filter-toolpanel-header,.ag-theme-material-auto-dark .ag-filter-toolpanel-search,.ag-theme-material-auto-dark .ag-status-bar,.ag-theme-material-auto-dark .ag-header-row,.ag-theme-material-auto-dark .ag-panel-title-bar-title,.ag-theme-material-auto-dark .ag-multi-filter-group-title-bar{font-size:calc(var(--ag-font-size) - 1px);font-weight:600;color:var(--ag-header-foreground-color)}.ag-theme-material .ag-tab,.ag-theme-material-dark .ag-tab,.ag-theme-material-auto-dark .ag-tab{height:calc(var(--ag-grid-size) * 4.5);flex:1 1 auto}.ag-theme-material .ag-tabs-header,.ag-theme-material .ag-column-drop-horizontal,.ag-theme-material-dark .ag-tabs-header,.ag-theme-material-dark .ag-column-drop-horizontal,.ag-theme-material-auto-dark .ag-tabs-header,.ag-theme-material-auto-dark .ag-column-drop-horizontal{background-color:var(--ag-subheader-background-color)}.ag-theme-material .ag-tabs-body,.ag-theme-material-dark .ag-tabs-body,.ag-theme-material-auto-dark .ag-tabs-body{padding:calc(var(--ag-grid-size) * .5) 0}.ag-theme-material .ag-tabs-body .ag-menu-list,.ag-theme-material-dark .ag-tabs-body .ag-menu-list,.ag-theme-material-auto-dark .ag-tabs-body .ag-menu-list{padding-top:0;padding-bottom:0}.ag-theme-material .ag-header-cell,.ag-theme-material .ag-header-group-cell,.ag-theme-material-dark .ag-header-cell,.ag-theme-material-dark .ag-header-group-cell,.ag-theme-material-auto-dark .ag-header-cell,.ag-theme-material-auto-dark .ag-header-group-cell{transition:background-color .5s}.ag-theme-material .ag-row-last:not(.ag-row-first) .ag-cell-inline-editing,.ag-theme-material-dark .ag-row-last:not(.ag-row-first) .ag-cell-inline-editing,.ag-theme-material-auto-dark .ag-row-last:not(.ag-row-first) .ag-cell-inline-editing{bottom:0}.ag-theme-material .ag-cell-inline-editing,.ag-theme-material-dark .ag-cell-inline-editing,.ag-theme-material-auto-dark .ag-cell-inline-editing{padding:var(--ag-grid-size);height:calc(var(--ag-row-height) + var(--ag-grid-size) * 3);border-color:var(--ag-border-color)!important}.ag-theme-material .ag-has-focus .ag-cell-inline-editing,.ag-theme-material-dark .ag-has-focus .ag-cell-inline-editing,.ag-theme-material-auto-dark .ag-has-focus .ag-cell-inline-editing{border-color:var(--ag-input-focus-border-color)!important}.ag-theme-material .ag-column-drop-vertical,.ag-theme-material-dark .ag-column-drop-vertical,.ag-theme-material-auto-dark .ag-column-drop-vertical{border-bottom:solid 1px;border-bottom-color:var(--ag-border-color);padding-top:var(--ag-grid-size)}.ag-theme-material .ag-column-drop-vertical.ag-last-column-drop,.ag-theme-material-dark .ag-column-drop-vertical.ag-last-column-drop,.ag-theme-material-auto-dark .ag-column-drop-vertical.ag-last-column-drop{border-bottom:none}.ag-theme-material .ag-column-drop-vertical-cell,.ag-theme-material-dark .ag-column-drop-vertical-cell,.ag-theme-material-auto-dark .ag-column-drop-vertical-cell{margin-left:0}.ag-theme-material .ag-column-drop-vertical-empty-message,.ag-theme-material-dark .ag-column-drop-vertical-empty-message,.ag-theme-material-auto-dark .ag-column-drop-vertical-empty-message{font-size:calc(var(--ag-font-size) - 1px);font-weight:600;color:var(--ag-disabled-foreground-color)}.ag-theme-material .ag-ltr .ag-column-drop-vertical-empty-message,.ag-theme-material-dark .ag-ltr .ag-column-drop-vertical-empty-message,.ag-theme-material-auto-dark .ag-ltr .ag-column-drop-vertical-empty-message{padding-left:calc(var(--ag-icon-size) + var(--ag-grid-size) * 2);padding-right:var(--ag-grid-size)}.ag-theme-material .ag-rtl .ag-column-drop-vertical-empty-message,.ag-theme-material-dark .ag-rtl .ag-column-drop-vertical-empty-message,.ag-theme-material-auto-dark .ag-rtl .ag-column-drop-vertical-empty-message{padding-right:calc(var(--ag-icon-size) + var(--ag-grid-size) * 2);padding-left:var(--ag-grid-size)}.ag-theme-material .ag-status-bar,.ag-theme-material-dark .ag-status-bar,.ag-theme-material-auto-dark .ag-status-bar{border:solid 1px;border-color:var(--ag-border-color)}.ag-theme-material .ag-column-panel-column-select,.ag-theme-material-dark .ag-column-panel-column-select,.ag-theme-material-auto-dark .ag-column-panel-column-select{border-top:solid 1px;border-top-color:var(--ag-border-color)}.ag-theme-material .ag-column-select,.ag-theme-material .ag-column-select-header,.ag-theme-material-dark .ag-column-select,.ag-theme-material-dark .ag-column-select-header,.ag-theme-material-auto-dark .ag-column-select,.ag-theme-material-auto-dark .ag-column-select-header{border-bottom:solid 1px;border-bottom-color:var(--ag-border-color)}.ag-theme-material .ag-column-select-header,.ag-theme-material-dark .ag-column-select-header,.ag-theme-material-auto-dark .ag-column-select-header{height:var(--ag-header-height)}.ag-theme-material .ag-group-title-bar,.ag-theme-material-dark .ag-group-title-bar,.ag-theme-material-auto-dark .ag-group-title-bar{padding:calc(var(--ag-grid-size) * .75) var(--ag-grid-size)}.ag-theme-material .ag-charts-format-sub-level-group-title-bar,.ag-theme-material-dark .ag-charts-format-sub-level-group-title-bar,.ag-theme-material-auto-dark .ag-charts-format-sub-level-group-title-bar{padding:calc(var(--ag-grid-size) * .5) var(--ag-grid-size)}.ag-theme-material .ag-chart-data-section,.ag-theme-material .ag-chart-format-section,.ag-theme-material .ag-chart-advanced-settings-section,.ag-theme-material-dark .ag-chart-data-section,.ag-theme-material-dark .ag-chart-format-section,.ag-theme-material-dark .ag-chart-advanced-settings-section,.ag-theme-material-auto-dark .ag-chart-data-section,.ag-theme-material-auto-dark .ag-chart-format-section,.ag-theme-material-auto-dark .ag-chart-advanced-settings-section{padding-bottom:calc(var(--ag-grid-size) * .5)}.ag-theme-material .ag-chart-menu-close,.ag-theme-material-dark .ag-chart-menu-close,.ag-theme-material-auto-dark .ag-chart-menu-close{background:var(--ag-background-color)}.ag-theme-material .ag-chart-menu-close .ag-icon,.ag-theme-material-dark .ag-chart-menu-close .ag-icon,.ag-theme-material-auto-dark .ag-chart-menu-close .ag-icon{background:var(--ag-subheader-background-color)}.ag-theme-material input[class^=ag-]:not([type]),.ag-theme-material input[class^=ag-][type=text],.ag-theme-material input[class^=ag-][type=number],.ag-theme-material input[class^=ag-][type=tel],.ag-theme-material input[class^=ag-][type=date],.ag-theme-material input[class^=ag-][type=datetime-local],.ag-theme-material textarea[class^=ag-],.ag-theme-material-dark input[class^=ag-]:not([type]),.ag-theme-material-dark input[class^=ag-][type=text],.ag-theme-material-dark input[class^=ag-][type=number],.ag-theme-material-dark input[class^=ag-][type=tel],.ag-theme-material-dark input[class^=ag-][type=date],.ag-theme-material-dark input[class^=ag-][type=datetime-local],.ag-theme-material-dark textarea[class^=ag-],.ag-theme-material-auto-dark input[class^=ag-]:not([type]),.ag-theme-material-auto-dark input[class^=ag-][type=text],.ag-theme-material-auto-dark input[class^=ag-][type=number],.ag-theme-material-auto-dark input[class^=ag-][type=tel],.ag-theme-material-auto-dark input[class^=ag-][type=date],.ag-theme-material-auto-dark input[class^=ag-][type=datetime-local],.ag-theme-material-auto-dark textarea[class^=ag-]{background:transparent;color:var(--ag-foreground-color);font-family:inherit;font-size:inherit;height:calc(var(--ag-grid-size) * 5);padding-bottom:var(--ag-grid-size);border-width:0;border-radius:0;border-bottom:2px solid;border-bottom-color:var(--ag-border-color)}.ag-theme-material input[class^=ag-]:not([type]):focus,.ag-theme-material input[class^=ag-][type=text]:focus,.ag-theme-material input[class^=ag-][type=number]:focus,.ag-theme-material input[class^=ag-][type=tel]:focus,.ag-theme-material input[class^=ag-][type=date]:focus,.ag-theme-material input[class^=ag-][type=datetime-local]:focus,.ag-theme-material textarea[class^=ag-]:focus,.ag-theme-material-dark input[class^=ag-]:not([type]):focus,.ag-theme-material-dark input[class^=ag-][type=text]:focus,.ag-theme-material-dark input[class^=ag-][type=number]:focus,.ag-theme-material-dark input[class^=ag-][type=tel]:focus,.ag-theme-material-dark input[class^=ag-][type=date]:focus,.ag-theme-material-dark input[class^=ag-][type=datetime-local]:focus,.ag-theme-material-dark textarea[class^=ag-]:focus,.ag-theme-material-auto-dark input[class^=ag-]:not([type]):focus,.ag-theme-material-auto-dark input[class^=ag-][type=text]:focus,.ag-theme-material-auto-dark input[class^=ag-][type=number]:focus,.ag-theme-material-auto-dark input[class^=ag-][type=tel]:focus,.ag-theme-material-auto-dark input[class^=ag-][type=date]:focus,.ag-theme-material-auto-dark input[class^=ag-][type=datetime-local]:focus,.ag-theme-material-auto-dark textarea[class^=ag-]:focus{border-bottom:2px solid;border-bottom-color:var(--ag-material-primary-color);outline:none;box-shadow:none}.ag-theme-material input[class^=ag-]:not([type])::placeholder,.ag-theme-material input[class^=ag-][type=text]::placeholder,.ag-theme-material input[class^=ag-][type=number]::placeholder,.ag-theme-material input[class^=ag-][type=tel]::placeholder,.ag-theme-material input[class^=ag-][type=date]::placeholder,.ag-theme-material input[class^=ag-][type=datetime-local]::placeholder,.ag-theme-material textarea[class^=ag-]::placeholder,.ag-theme-material-dark input[class^=ag-]:not([type])::placeholder,.ag-theme-material-dark input[class^=ag-][type=text]::placeholder,.ag-theme-material-dark input[class^=ag-][type=number]::placeholder,.ag-theme-material-dark input[class^=ag-][type=tel]::placeholder,.ag-theme-material-dark input[class^=ag-][type=date]::placeholder,.ag-theme-material-dark input[class^=ag-][type=datetime-local]::placeholder,.ag-theme-material-dark textarea[class^=ag-]::placeholder,.ag-theme-material-auto-dark input[class^=ag-]:not([type])::placeholder,.ag-theme-material-auto-dark input[class^=ag-][type=text]::placeholder,.ag-theme-material-auto-dark input[class^=ag-][type=number]::placeholder,.ag-theme-material-auto-dark input[class^=ag-][type=tel]::placeholder,.ag-theme-material-auto-dark input[class^=ag-][type=date]::placeholder,.ag-theme-material-auto-dark input[class^=ag-][type=datetime-local]::placeholder,.ag-theme-material-auto-dark textarea[class^=ag-]::placeholder{color:var(--ag-disabled-foreground-color)}.ag-theme-material input[class^=ag-]:not([type]):disabled,.ag-theme-material input[class^=ag-][type=text]:disabled,.ag-theme-material input[class^=ag-][type=number]:disabled,.ag-theme-material input[class^=ag-][type=tel]:disabled,.ag-theme-material input[class^=ag-][type=date]:disabled,.ag-theme-material input[class^=ag-][type=datetime-local]:disabled,.ag-theme-material textarea[class^=ag-]:disabled,.ag-theme-material-dark input[class^=ag-]:not([type]):disabled,.ag-theme-material-dark input[class^=ag-][type=text]:disabled,.ag-theme-material-dark input[class^=ag-][type=number]:disabled,.ag-theme-material-dark input[class^=ag-][type=tel]:disabled,.ag-theme-material-dark input[class^=ag-][type=date]:disabled,.ag-theme-material-dark input[class^=ag-][type=datetime-local]:disabled,.ag-theme-material-dark textarea[class^=ag-]:disabled,.ag-theme-material-auto-dark input[class^=ag-]:not([type]):disabled,.ag-theme-material-auto-dark input[class^=ag-][type=text]:disabled,.ag-theme-material-auto-dark input[class^=ag-][type=number]:disabled,.ag-theme-material-auto-dark input[class^=ag-][type=tel]:disabled,.ag-theme-material-auto-dark input[class^=ag-][type=date]:disabled,.ag-theme-material-auto-dark input[class^=ag-][type=datetime-local]:disabled,.ag-theme-material-auto-dark textarea[class^=ag-]:disabled{border-bottom:1px solid;border-bottom-color:var(--ag-border-color)}.ag-theme-material input[class^=ag-]:not([type]):invalid,.ag-theme-material input[class^=ag-][type=text]:invalid,.ag-theme-material input[class^=ag-][type=number]:invalid,.ag-theme-material input[class^=ag-][type=tel]:invalid,.ag-theme-material input[class^=ag-][type=date]:invalid,.ag-theme-material input[class^=ag-][type=datetime-local]:invalid,.ag-theme-material textarea[class^=ag-]:invalid,.ag-theme-material-dark input[class^=ag-]:not([type]):invalid,.ag-theme-material-dark input[class^=ag-][type=text]:invalid,.ag-theme-material-dark input[class^=ag-][type=number]:invalid,.ag-theme-material-dark input[class^=ag-][type=tel]:invalid,.ag-theme-material-dark input[class^=ag-][type=date]:invalid,.ag-theme-material-dark input[class^=ag-][type=datetime-local]:invalid,.ag-theme-material-dark textarea[class^=ag-]:invalid,.ag-theme-material-auto-dark input[class^=ag-]:not([type]):invalid,.ag-theme-material-auto-dark input[class^=ag-][type=text]:invalid,.ag-theme-material-auto-dark input[class^=ag-][type=number]:invalid,.ag-theme-material-auto-dark input[class^=ag-][type=tel]:invalid,.ag-theme-material-auto-dark input[class^=ag-][type=date]:invalid,.ag-theme-material-auto-dark input[class^=ag-][type=datetime-local]:invalid,.ag-theme-material-auto-dark textarea[class^=ag-]:invalid{border-width:0;border-bottom:1px solid;border-bottom-color:var(--ag-invalid-color);color:var(--ag-invalid-color)}.ag-theme-material .ag-standard-button,.ag-theme-material-dark .ag-standard-button,.ag-theme-material-auto-dark .ag-standard-button{appearance:none;background-color:transparent;border:0;color:var(--ag-material-primary-color);font-family:inherit;font-size:inherit;margin:0;padding:0;text-transform:uppercase}.ag-theme-material .ag-standard-button:disabled,.ag-theme-material-dark .ag-standard-button:disabled,.ag-theme-material-auto-dark .ag-standard-button:disabled{color:var(--ag-disabled-foreground-color);background-color:var(--ag-input-disabled-background-color);border-color:var(--ag-input-disabled-border-color)}.ag-theme-material.ag-dnd-ghost,.ag-theme-material-dark.ag-dnd-ghost,.ag-theme-material-auto-dark.ag-dnd-ghost{font-size:calc(var(--ag-font-size) - 1px);font-weight:600}.ag-theme-material .ag-filter-toolpanel-header,.ag-theme-material-dark .ag-filter-toolpanel-header,.ag-theme-material-auto-dark .ag-filter-toolpanel-header{height:calc(var(--ag-grid-size) * 4)}.ag-theme-material .ag-filter-toolpanel-group-level-0-header,.ag-theme-material-dark .ag-filter-toolpanel-group-level-0-header,.ag-theme-material-auto-dark .ag-filter-toolpanel-group-level-0-header{height:calc(var(--ag-grid-size) * 7)}.ag-theme-material .ag-ltr .ag-filter-apply-panel-button,.ag-theme-material .ag-ltr .ag-advanced-filter-apply-button,.ag-theme-material .ag-ltr .ag-advanced-filter-builder-button,.ag-theme-material-dark .ag-ltr .ag-filter-apply-panel-button,.ag-theme-material-dark .ag-ltr .ag-advanced-filter-apply-button,.ag-theme-material-dark .ag-ltr .ag-advanced-filter-builder-button,.ag-theme-material-auto-dark .ag-ltr .ag-filter-apply-panel-button,.ag-theme-material-auto-dark .ag-ltr .ag-advanced-filter-apply-button,.ag-theme-material-auto-dark .ag-ltr .ag-advanced-filter-builder-button{margin-left:var(--ag-grid-size)}.ag-theme-material .ag-rtl .ag-filter-apply-panel-button,.ag-theme-material .ag-rtl .ag-advanced-filter-apply-button,.ag-theme-material .ag-rtl .ag-advanced-filter-builder-button,.ag-theme-material-dark .ag-rtl .ag-filter-apply-panel-button,.ag-theme-material-dark .ag-rtl .ag-advanced-filter-apply-button,.ag-theme-material-dark .ag-rtl .ag-advanced-filter-builder-button,.ag-theme-material-auto-dark .ag-rtl .ag-filter-apply-panel-button,.ag-theme-material-auto-dark .ag-rtl .ag-advanced-filter-apply-button,.ag-theme-material-auto-dark .ag-rtl .ag-advanced-filter-builder-button{margin-right:var(--ag-grid-size)}.ag-theme-material .ag-layout-auto-height .ag-center-cols-viewport,.ag-theme-material .ag-layout-auto-height .ag-center-cols-container,.ag-theme-material .ag-layout-print .ag-center-cols-viewport,.ag-theme-material .ag-layout-print .ag-center-cols-container,.ag-theme-material-dark .ag-layout-auto-height .ag-center-cols-viewport,.ag-theme-material-dark .ag-layout-auto-height .ag-center-cols-container,.ag-theme-material-dark .ag-layout-print .ag-center-cols-viewport,.ag-theme-material-dark .ag-layout-print .ag-center-cols-container,.ag-theme-material-auto-dark .ag-layout-auto-height .ag-center-cols-viewport,.ag-theme-material-auto-dark .ag-layout-auto-height .ag-center-cols-container,.ag-theme-material-auto-dark .ag-layout-print .ag-center-cols-viewport,.ag-theme-material-auto-dark .ag-layout-print .ag-center-cols-container{min-height:150px}.ag-theme-material .ag-overlay-no-rows-wrapper.ag-layout-auto-height,.ag-theme-material-dark .ag-overlay-no-rows-wrapper.ag-layout-auto-height,.ag-theme-material-auto-dark .ag-overlay-no-rows-wrapper.ag-layout-auto-height{padding-top:60px}.ag-theme-material .ag-picker-field-wrapper:focus-within,.ag-theme-material-dark .ag-picker-field-wrapper:focus-within,.ag-theme-material-auto-dark .ag-picker-field-wrapper:focus-within{box-shadow:0 0 0 1px var(--ag-material-primary-color)}.ag-theme-material .ag-rich-select-list,.ag-theme-material-dark .ag-rich-select-list,.ag-theme-material-auto-dark .ag-rich-select-list{box-shadow:#0003 0 5px 5px -3px,#00000024 0 8px 10px 1px,#0000001f 0 3px 14px 2px}.ag-theme-material .ag-advanced-filter-builder-button-label,.ag-theme-material-dark .ag-advanced-filter-builder-button-label,.ag-theme-material-auto-dark .ag-advanced-filter-builder-button-label{text-transform:uppercase}.ag-theme-material .ag-filter-active .ag-icon-filter,.ag-theme-material-dark .ag-filter-active .ag-icon-filter,.ag-theme-material-auto-dark .ag-filter-active .ag-icon-filter{color:var(--ag-material-accent-color)}.ag-theme-material textarea[class^=ag-chart-title-edit],.ag-theme-material-dark textarea[class^=ag-chart-title-edit],.ag-theme-material-auto-dark textarea[class^=ag-chart-title-edit]{background-color:var(--ag-background-color)}:root{--primary-color-50-parts: #edf4ff;--primary-color-100-parts: #b9d4fc;--primary-color-200-parts: #8ab7fb;--primary-color-300-parts: #5b9af9;--primary-color-400-parts: #3784f7;--primary-color-500-parts: #146ef6;--primary-color-600-parts: #1266f5;--primary-color-700-parts: #0e5bf3;--primary-color-800-parts: #0b51f2;--primary-color-900-parts: #063fef;--primary-color-A50-parts: rgba(20, 110, 246, .04);--primary-color-A100-parts: rgba(20, 110, 246, .08);--primary-color-A200-parts: rgba(20, 110, 246, .16);--primary-color-A300-parts: rgba(20, 110, 246, .24);--primary-color-A400-parts: rgba(20, 110, 246, .32);--primary-color-A500-parts: rgba(20, 110, 246, .4);--primary-color-A600-parts: rgba(20, 110, 246, .48);--primary-color-A700-parts: rgba(20, 110, 246, .56);--primary-color-A800-parts: rgba(20, 110, 246, .64);--primary-color-A900-parts: rgba(20, 110, 246, .72);--primary-color-contrast-50-parts: rgba(0, 0, 0, .87);--primary-color-contrast-100-parts: rgba(0, 0, 0, .87);--primary-color-contrast-200-parts: rgba(0, 0, 0, .87);--primary-color-contrast-300-parts: rgba(0, 0, 0, .87);--primary-color-contrast-400-parts: rgba(0, 0, 0, .87);--primary-color-contrast-500-parts: rgba(255, 255, 255, 1);--primary-color-contrast-600-parts: rgba(255, 255, 255, 1);--primary-color-contrast-700-parts: rgba(255, 255, 255, 1);--primary-color-contrast-800-parts: rgba(255, 255, 255, 1);--primary-color-contrast-900-parts: rgba(255, 255, 255, 1);--primary-color-contrast-A50-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A100-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A200-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A300-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A400-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A500-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A600-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A700-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A800-parts: rgba(0, 0, 0, .87);--primary-color-contrast-A900-parts: rgba(0, 0, 0, .87);--primary-color-50-parts-rgb: 237, 244, 255;--primary-color-100-parts-rgb: 185, 212, 252;--primary-color-200-parts-rgb: 138, 183, 251;--primary-color-300-parts-rgb: 91, 154, 249;--primary-color-400-parts-rgb: 55, 132, 247;--primary-color-500-parts-rgb: 20, 110, 246;--primary-color-600-parts-rgb: 18, 102, 245;--primary-color-700-parts-rgb: 14, 91, 243;--primary-color-800-parts-rgb: 11, 81, 242;--primary-color-900-parts-rgb: 6, 63, 239;--accent-color-50-parts: #e0f2f1;--accent-color-100-parts: #b2dfdb;--accent-color-200-parts: #80cbc4;--accent-color-300-parts: #4db6ac;--accent-color-400-parts: #26a69a;--accent-color-500-parts: #009688;--accent-color-600-parts: #00897b;--accent-color-700-parts: #00796b;--accent-color-800-parts: #00695c;--accent-color-900-parts: #004d40;--accent-color-A50-parts: rgba(0, 150, 136, .04);--accent-color-A100-parts: rgba(0, 150, 136, .08);--accent-color-A200-parts: rgba(0, 150, 136, .16);--accent-color-A300-parts: rgba(0, 150, 136, .24);--accent-color-A400-parts: rgba(0, 150, 136, .32);--accent-color-A500-parts: rgba(0, 150, 136, .4);--accent-color-A600-parts: rgba(0, 150, 136, .48);--accent-color-A700-parts: rgba(0, 150, 136, .56);--accent-color-A800-parts: rgba(0, 150, 136, .64);--accent-color-A900-parts: rgba(0, 150, 136, .72);--accent-color-contrast-50-parts: rgba(0, 0, 0, .87);--accent-color-contrast-100-parts: rgba(0, 0, 0, .87);--accent-color-contrast-200-parts: rgba(0, 0, 0, .87);--accent-color-contrast-300-parts: rgba(0, 0, 0, .87);--accent-color-contrast-400-parts: rgba(0, 0, 0, .87);--accent-color-contrast-500-parts: rgba(255, 255, 255, 1);--accent-color-contrast-600-parts: rgba(255, 255, 255, 1);--accent-color-contrast-700-parts: rgba(255, 255, 255, 1);--accent-color-contrast-800-parts: rgba(255, 255, 255, 1);--accent-color-contrast-900-parts: rgba(255, 255, 255, 1);--accent-color-contrast-A50-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A100-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A200-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A300-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A400-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A500-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A600-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A700-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A800-parts: rgba(0, 0, 0, .87);--accent-color-contrast-A900-parts: rgba(0, 0, 0, .87);--accent-color-50-parts-rgb: 224, 242, 241;--accent-color-100-parts-rgb: 178, 223, 219;--accent-color-200-parts-rgb: 128, 203, 196;--accent-color-300-parts-rgb: 77, 182, 172;--accent-color-400-parts-rgb: 38, 166, 154;--accent-color-500-parts-rgb: 0, 150, 136;--accent-color-600-parts-rgb: 0, 137, 123;--accent-color-700-parts-rgb: 0, 121, 107;--accent-color-800-parts-rgb: 0, 105, 92;--accent-color-900-parts-rgb: 0, 77, 64;--warn-color-50-parts: #fceee3;--warn-color-100-parts: #f8d4b9;--warn-color-200-parts: #f4b78b;--warn-color-300-parts: #ef9a5d;--warn-color-400-parts: #eb843a;--warn-color-500-parts: #e86e17;--warn-color-600-parts: #e56614;--warn-color-700-parts: #e25b11;--warn-color-800-parts: #de510d;--warn-color-900-parts: #d83f07;--warn-color-A50-parts: rgba(232, 110, 23, .04);--warn-color-A100-parts: rgba(232, 110, 23, .08);--warn-color-A200-parts: rgba(232, 110, 23, .16);--warn-color-A300-parts: rgba(232, 110, 23, .24);--warn-color-A400-parts: rgba(232, 110, 23, .32);--warn-color-A500-parts: rgba(232, 110, 23, .4);--warn-color-A600-parts: rgba(232, 110, 23, .48);--warn-color-A700-parts: rgba(232, 110, 23, .56);--warn-color-A800-parts: rgba(232, 110, 23, .64);--warn-color-A900-parts: rgba(232, 110, 23, .72);--warn-color-contrast-50-parts: rgba(0, 0, 0, .87);--warn-color-contrast-100-parts: rgba(0, 0, 0, .87);--warn-color-contrast-200-parts: rgba(0, 0, 0, .87);--warn-color-contrast-300-parts: rgba(0, 0, 0, .87);--warn-color-contrast-400-parts: rgba(0, 0, 0, .87);--warn-color-contrast-500-parts: rgba(0, 0, 0, .87);--warn-color-contrast-600-parts: rgba(0, 0, 0, .87);--warn-color-contrast-700-parts: rgba(0, 0, 0, .87);--warn-color-contrast-800-parts: rgba(0, 0, 0, .87);--warn-color-contrast-900-parts: rgba(255, 255, 255, 1);--warn-color-contrast-A50-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A100-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A200-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A300-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A400-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A500-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A600-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A700-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A800-parts: rgba(0, 0, 0, .87);--warn-color-contrast-A900-parts: rgba(0, 0, 0, .87);--warn-color-50-parts-rgb: 252, 238, 227;--warn-color-100-parts-rgb: 248, 212, 185;--warn-color-200-parts-rgb: 244, 183, 139;--warn-color-300-parts-rgb: 239, 154, 93;--warn-color-400-parts-rgb: 235, 132, 58;--warn-color-500-parts-rgb: 232, 110, 23;--warn-color-600-parts-rgb: 229, 102, 20;--warn-color-700-parts-rgb: 226, 91, 17;--warn-color-800-parts-rgb: 222, 81, 13;--warn-color-900-parts-rgb: 216, 63, 7;--info-color-50-parts: #edf4ff;--info-color-100-parts: #b9d4fc;--info-color-200-parts: #8ab7fb;--info-color-300-parts: #5b9af9;--info-color-400-parts: #3784f7;--info-color-500-parts: #146ef6;--info-color-600-parts: #1266f5;--info-color-700-parts: #0e5bf3;--info-color-800-parts: #0b51f2;--info-color-900-parts: #063fef;--info-color-A50-parts: rgba(20, 110, 246, .04);--info-color-A100-parts: rgba(20, 110, 246, .08);--info-color-A200-parts: rgba(20, 110, 246, .16);--info-color-A300-parts: rgba(20, 110, 246, .24);--info-color-A400-parts: rgba(20, 110, 246, .32);--info-color-A500-parts: rgba(20, 110, 246, .4);--info-color-A600-parts: rgba(20, 110, 246, .48);--info-color-A700-parts: rgba(20, 110, 246, .56);--info-color-A800-parts: rgba(20, 110, 246, .64);--info-color-A900-parts: rgba(20, 110, 246, .72);--info-color-contrast-50-parts: rgba(0, 0, 0, .87);--info-color-contrast-100-parts: rgba(0, 0, 0, .87);--info-color-contrast-200-parts: rgba(0, 0, 0, .87);--info-color-contrast-300-parts: rgba(0, 0, 0, .87);--info-color-contrast-400-parts: rgba(0, 0, 0, .87);--info-color-contrast-500-parts: rgba(255, 255, 255, 1);--info-color-contrast-600-parts: rgba(255, 255, 255, 1);--info-color-contrast-700-parts: rgba(255, 255, 255, 1);--info-color-contrast-800-parts: rgba(255, 255, 255, 1);--info-color-contrast-900-parts: rgba(255, 255, 255, 1);--info-color-contrast-A50-parts: rgba(0, 0, 0, .87);--info-color-contrast-A100-parts: rgba(0, 0, 0, .87);--info-color-contrast-A200-parts: rgba(0, 0, 0, .87);--info-color-contrast-A300-parts: rgba(0, 0, 0, .87);--info-color-contrast-A400-parts: rgba(0, 0, 0, .87);--info-color-contrast-A500-parts: rgba(0, 0, 0, .87);--info-color-contrast-A600-parts: rgba(0, 0, 0, .87);--info-color-contrast-A700-parts: rgba(0, 0, 0, .87);--info-color-contrast-A800-parts: rgba(0, 0, 0, .87);--info-color-contrast-A900-parts: rgba(0, 0, 0, .87);--info-color-50-parts-rgb: 237, 244, 255;--info-color-100-parts-rgb: 185, 212, 252;--info-color-200-parts-rgb: 138, 183, 251;--info-color-300-parts-rgb: 91, 154, 249;--info-color-400-parts-rgb: 55, 132, 247;--info-color-500-parts-rgb: 20, 110, 246;--info-color-600-parts-rgb: 18, 102, 245;--info-color-700-parts-rgb: 14, 91, 243;--info-color-800-parts-rgb: 11, 81, 242;--info-color-900-parts-rgb: 6, 63, 239;--success-color-50-parts: #e7f0e6;--success-color-100-parts: #c4dac1;--success-color-200-parts: #9cc198;--success-color-300-parts: #74a86e;--success-color-400-parts: #57954f;--success-color-500-parts: #398230;--success-color-600-parts: #337a2b;--success-color-700-parts: #2c6f24;--success-color-800-parts: #24651e;--success-color-900-parts: #175213;--success-color-A50-parts: rgba(57, 130, 48, .04);--success-color-A100-parts: rgba(57, 130, 48, .08);--success-color-A200-parts: rgba(57, 130, 48, .16);--success-color-A300-parts: rgba(57, 130, 48, .24);--success-color-A400-parts: rgba(57, 130, 48, .32);--success-color-A500-parts: rgba(57, 130, 48, .4);--success-color-A600-parts: rgba(57, 130, 48, .48);--success-color-A700-parts: rgba(57, 130, 48, .56);--success-color-A800-parts: rgba(57, 130, 48, .64);--success-color-A900-parts: rgba(57, 130, 48, .72);--success-color-contrast-50-parts: rgba(0, 0, 0, .87);--success-color-contrast-100-parts: rgba(0, 0, 0, .87);--success-color-contrast-200-parts: rgba(0, 0, 0, .87);--success-color-contrast-300-parts: rgba(0, 0, 0, .87);--success-color-contrast-400-parts: rgba(0, 0, 0, .87);--success-color-contrast-500-parts: rgba(255, 255, 255, 1);--success-color-contrast-600-parts: rgba(255, 255, 255, 1);--success-color-contrast-700-parts: rgba(255, 255, 255, 1);--success-color-contrast-800-parts: rgba(255, 255, 255, 1);--success-color-contrast-900-parts: rgba(255, 255, 255, 1);--success-color-contrast-A50-parts: rgba(0, 0, 0, .87);--success-color-contrast-A100-parts: rgba(0, 0, 0, .87);--success-color-contrast-A200-parts: rgba(0, 0, 0, .87);--success-color-contrast-A300-parts: rgba(0, 0, 0, .87);--success-color-contrast-A400-parts: rgba(0, 0, 0, .87);--success-color-contrast-A500-parts: rgba(0, 0, 0, .87);--success-color-contrast-A600-parts: rgba(0, 0, 0, .87);--success-color-contrast-A700-parts: rgba(0, 0, 0, .87);--success-color-contrast-A800-parts: rgba(0, 0, 0, .87);--success-color-contrast-A900-parts: rgba(0, 0, 0, .87);--success-color-50-parts-rgb: 231, 240, 230;--success-color-100-parts-rgb: 196, 218, 193;--success-color-200-parts-rgb: 156, 193, 152;--success-color-300-parts-rgb: 116, 168, 110;--success-color-400-parts-rgb: 87, 149, 79;--success-color-500-parts-rgb: 57, 130, 48;--success-color-600-parts-rgb: 51, 122, 43;--success-color-700-parts-rgb: 44, 111, 36;--success-color-800-parts-rgb: 36, 101, 30;--success-color-900-parts-rgb: 23, 82, 19;--error-color-50-parts: #fae5e4;--error-color-100-parts: #f3bdba;--error-color-200-parts: #eb928d;--error-color-300-parts: #e3665f;--error-color-400-parts: #dd453c;--error-color-500-parts: #d7241a;--error-color-600-parts: #d32017;--error-color-700-parts: #cd1b13;--error-color-800-parts: #c7160f;--error-color-900-parts: #be0d08;--error-color-A50-parts: rgba(215, 36, 26, .04);--error-color-A100-parts: rgba(215, 36, 26, .08);--error-color-A200-parts: rgba(215, 36, 26, .16);--error-color-A300-parts: rgba(215, 36, 26, .24);--error-color-A400-parts: rgba(215, 36, 26, .32);--error-color-A500-parts: rgba(215, 36, 26, .4);--error-color-A600-parts: rgba(215, 36, 26, .48);--error-color-A700-parts: rgba(215, 36, 26, .56);--error-color-A800-parts: rgba(215, 36, 26, .64);--error-color-A900-parts: rgba(215, 36, 26, .72);--error-color-contrast-50-parts: rgba(0, 0, 0, .87);--error-color-contrast-100-parts: rgba(0, 0, 0, .87);--error-color-contrast-200-parts: rgba(0, 0, 0, .87);--error-color-contrast-300-parts: rgba(0, 0, 0, .87);--error-color-contrast-400-parts: rgba(0, 0, 0, .87);--error-color-contrast-500-parts: rgba(255, 255, 255, 1);--error-color-contrast-600-parts: rgba(255, 255, 255, 1);--error-color-contrast-700-parts: rgba(255, 255, 255, 1);--error-color-contrast-800-parts: rgba(255, 255, 255, 1);--error-color-contrast-900-parts: rgba(255, 255, 255, 1);--error-color-contrast-A50-parts: rgba(0, 0, 0, .87);--error-color-contrast-A100-parts: rgba(0, 0, 0, .87);--error-color-contrast-A200-parts: rgba(0, 0, 0, .87);--error-color-contrast-A300-parts: rgba(0, 0, 0, .87);--error-color-contrast-A400-parts: rgba(0, 0, 0, .87);--error-color-contrast-A500-parts: rgba(0, 0, 0, .87);--error-color-contrast-A600-parts: rgba(0, 0, 0, .87);--error-color-contrast-A700-parts: rgba(0, 0, 0, .87);--error-color-contrast-A800-parts: rgba(0, 0, 0, .87);--error-color-contrast-A900-parts: rgba(0, 0, 0, .87);--error-color-50-parts-rgb: 250, 229, 228;--error-color-100-parts-rgb: 243, 189, 186;--error-color-200-parts-rgb: 235, 146, 141;--error-color-300-parts-rgb: 227, 102, 95;--error-color-400-parts-rgb: 221, 69, 60;--error-color-500-parts-rgb: 215, 36, 26;--error-color-600-parts-rgb: 211, 32, 23;--error-color-700-parts-rgb: 205, 27, 19;--error-color-800-parts-rgb: 199, 22, 15;--error-color-900-parts-rgb: 190, 13, 8;--neutral-color-50-parts: #e9e9e9;--neutral-color-100-parts: #dddddd;--neutral-color-200-parts: #cccccc;--neutral-color-300-parts: #b0b0b0;--neutral-color-400-parts: #909090;--neutral-color-500-parts: #515151;--neutral-color-600-parts: #424242;--neutral-color-700-parts: #333333;--neutral-color-800-parts: #212121;--neutral-color-900-parts: #141414;--neutral-color-A50-parts: rgba(81, 81, 81, .04);--neutral-color-A100-parts: rgba(81, 81, 81, .08);--neutral-color-A200-parts: rgba(81, 81, 81, .16);--neutral-color-A300-parts: rgba(81, 81, 81, .24);--neutral-color-A400-parts: rgba(81, 81, 81, .32);--neutral-color-A500-parts: rgba(81, 81, 81, .4);--neutral-color-A600-parts: rgba(81, 81, 81, .48);--neutral-color-A700-parts: rgba(81, 81, 81, .56);--neutral-color-A800-parts: rgba(81, 81, 81, .64);--neutral-color-A900-parts: rgba(81, 81, 81, .72);--neutral-color-contrast-50-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-100-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-200-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-300-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-400-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-500-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-600-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-700-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-800-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-900-parts: rgba(255, 255, 255, 1);--neutral-color-contrast-A50-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A100-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A200-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A300-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A400-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A500-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A600-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A700-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A800-parts: rgba(0, 0, 0, .87);--neutral-color-contrast-A900-parts: rgba(0, 0, 0, .87);--neutral-color-50-parts-rgb: 233, 233, 233;--neutral-color-100-parts-rgb: 221, 221, 221;--neutral-color-200-parts-rgb: 204, 204, 204;--neutral-color-300-parts-rgb: 176, 176, 176;--neutral-color-400-parts-rgb: 144, 144, 144;--neutral-color-500-parts-rgb: 81, 81, 81;--neutral-color-600-parts-rgb: 66, 66, 66;--neutral-color-700-parts-rgb: 51, 51, 51;--neutral-color-800-parts-rgb: 33, 33, 33;--neutral-color-900-parts-rgb: 20, 20, 20}.filter-panel{border-radius:8px!important;background-color:#fafafa;margin-bottom:24px;padding:20px}.filter-panel p{font-family:var(--sftn-font-family-body, sans-serif)!important;font-style:normal!important;font-weight:500!important;font-size:16px!important;line-height:24px!important;margin-top:0!important}.filter-panel .filter-panel-select-container{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.ag-theme-material{width:100%;justify-content:center!important;--ag-font-size: 16px;--ag-font-family: var(--sftn-font-family, sans-serif);--ag-header-background-color: #FAFAFA;--ag-background-color: #FFFFFF;--ag-borders: solid 1px #E9E9E9;--ag-wrapper-border-radius: 8px;--ag-cell-horizontal-padding: 16px;--ag-border-color: #E9E9E9;--ag-material-primary-color: var(--primary-color-500-parts) !important;--ag-material-accent-color: var(--primary-color-300-parts) !important;--ag-icon-size: 18px;--ag-header-cell-hover-background-color: #FFFFFF;--ag-row-hover-color: #FFFFFF;--ag-column-hover-color: #FFFFFF}@media only screen and (max-width: 752px){.ag-theme-material{--ag-cell-horizontal-padding: 8px;--ag-font-size: 12px}}.ag-theme-material ::ng-deep .ag-root-wrapper{border-left:solid 1px #E9E9E9!important;border-top:solid 1px #E9E9E9!important;border-bottom:solid 1px #E9E9E9!important}.ag-theme-material ::ng-deep .ag-cell-focus{border-color:var(--primary-color-300-parts)!important;border-width:3px!important}.ag-theme-material ::ng-deep .ag-header ::ng-deep .ag-pinned-left-header,.ag-theme-material ::ng-deep .ag-body-viewport ::ng-deep .ag-pinned-left-cols-container{position:relative;z-index:1;-webkit-box-shadow:2px 0px 2px 0px rgba(42,42,42,.1);box-shadow:2px 0 2px #2a2a2a1a}.ag-theme-material ::ng-deep .ag-checkbox{padding-right:16px!important;padding-left:16px!important}.ag-theme-material ::ng-deep .ag-body-horizontal-scroll:not(.ag-scrollbar-invisible),.ag-theme-material ::ng-deep .ag-horizontal-left-spacer:not(.ag-scroller-corner){border-right:none}.ag-theme-material ::ng-deep .ag-body-horizontal-scroll-viewport,.ag-theme-material ::ng-deep .ag-body-vertical-scroll-viewport{overflow:hidden}.ag-theme-material ::ng-deep .ag-horizontal-left-spacer{overflow-x:hidden}.ag-theme-material ::ng-deep .ag-header-cell{font-size:16px!important;font-weight:400;color:#0009!important}@media only screen and (max-width: 752px){.ag-theme-material ::ng-deep .ag-header-cell{font-size:12px!important}}.ag-theme-material ::ng-deep .ag-cell{font-weight:400!important;display:flex!important;flex-direction:column!important}.ag-theme-material ::ng-deep .ag-header-icon.ag-header-label-icon.ag-filter-icon{display:none!important}.ag-theme-material ::ng-deep .ag-center-cols-viewport,.ag-theme-material ::ng-deep .ag-center-cols-viewport .ag-center-cols-container{min-height:53px!important}.ag-theme-material ::ng-deep .ag-overlay-wrapper.ag-overlay-no-rows-wrapper{font-size:14px;font-weight:500;color:#0009}.ag-theme-material.no-rows ::ng-deep .ag-body-horizontal-scroll{display:none!important}.ag-theme-material.no-rows ::ng-deep .ag-root-wrapper{border:none!important}.ag-theme-material.no-rows ::ng-deep .ag-header{border-top:solid 1px #E9E9E9;border-left:solid 1px #E9E9E9;border-right:solid 1px #E9E9E9;border-top-left-radius:8px;border-top-right-radius:8px}.ag-theme-material:hover ::ng-deep .ag-body-vertical-scroll-viewport{overflow-y:auto}.ag-theme-material:hover ::ng-deep .ag-body-horizontal-scroll-viewport{overflow-x:auto}.dense-4{--mat-form-field-container-height: 40px;--mat-form-field-filled-label-display: none;--mat-form-field-container-vertical-padding: 8px;--mat-form-field-filled-with-label-container-padding-top: 8px;--mat-form-field-filled-with-label-container-padding-bottom: 8px}.search-icon{font-weight:700;font-size:20px;color:#000000de;opacity:.87}:host::ng-deep mat-form-field.sof-form-field.table-search-field .mat-mdc-form-field-subscript-wrapper{display:none}:host::ng-deep mat-form-field.sof-form-field.table-search-field .mat-mdc-text-field-wrapper{border-radius:10px}:host::ng-deep mat-form-field.sof-form-field.table-search-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-icon-prefix{padding-right:8px!important}:host::ng-deep mat-form-field.sof-form-field.table-search-field .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#fafafa!important}:host::ng-deep mat-form-field.sof-form-field.table-search-field .mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#000000de;caret-color:#000000de;opacity:.87;letter-spacing:normal}:host::ng-deep mat-form-field.sof-form-field.table-search-field .mdc-text-field--filled .mdc-line-ripple:before,:host::ng-deep mat-form-field.sof-form-field.table-search-field .mdc-text-field--filled .mdc-line-ripple:after{border:none!important}:host::ng-deep mat-form-field.sof-form-field.table-search-field .mdc-text-field--filled .mat-mdc-floating-label:not(.mdc-floating-label--float-above){display:block!important}:host::ng-deep mat-form-field.sof-form-field.table-search-field .mdc-text-field--filled .mat-mdc-floating-label:not(.mdc-floating-label--float-above) .search-label{color:#000000de;opacity:.6;font-family:var(--sftn-font-family, sans-serif);letter-spacing:normal}:host::ng-deep mat-form-field.sof-form-field.table-search-field.mat-focused .mat-mdc-text-field-wrapper{outline:3px solid var(--primary-color-300-parts);outline-offset:2px}:host::ng-deep mat-form-field.sof-form-field.table-search-field.mat-focused .mat-mdc-text-field-wrapper i.search-icon{color:var(--primary-color-500-parts)}::ng-deep .custom-paginator{width:100%;justify-content:flex-start;align-items:flex-start;display:inline-flex;height:40px!important;margin-top:24px}::ng-deep .custom-paginator .first-section{flex:1 1 0;align-self:stretch;justify-content:flex-start;align-items:center!important;gap:16px!important;display:flex}::ng-deep .custom-paginator .first-section .button-part-1{height:40px!important;align-self:center;padding-left:16px;background:#fafafa;border-radius:8px;overflow:unset!important;justify-content:center;align-items:center;display:inline-flex;border:none;gap:16px;border:2px solid transparent}::ng-deep .custom-paginator .first-section .button-part-1:hover,::ng-deep .custom-paginator .first-section .button-part-1:focus,::ng-deep .custom-paginator .first-section .button-part-1:active{border-radius:10px;justify-content:center;display:inline-flex;border-color:var(--primary-color-500-parts);height:40px!important;align-self:center;padding-left:16px;background:#fafafa;overflow:unset!important;align-items:center;gap:16px}::ng-deep .custom-paginator .first-section .field{display:flex;flex-direction:row;gap:16px;align-items:center}::ng-deep .custom-paginator .mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{align-items:center!important;width:100px!important}::ng-deep .custom-paginator .second-section{justify-content:flex-start;align-items:center;gap:16px;display:flex}::ng-deep .custom-paginator .page-select{height:100%;padding:8px 16px;background:#fafafa;border-radius:8px;overflow:hidden;justify-content:flex-start;align-items:center;gap:16px;display:inline-flex}::ng-deep .custom-paginator .select-icon{width:100%;position:relative;height:20px!important;font-size:20px!important}::ng-deep .custom-paginator .pageChangeText{color:#000000de;font-size:16px;font-family:var(--sftn-font-family, sans-serif);font-weight:400;word-wrap:break-word}::ng-deep .custom-paginator .mat-select{color:#000000de;font-size:16px;font-family:var(--sftn-font-family, sans-serif);font-weight:400;word-wrap:break-word}::ng-deep .custom-paginator .go-to-page{width:fit-content;align-self:stretch;justify-content:flex-start;align-items:center;gap:16px;display:flex}::ng-deep .custom-paginator .go-to-page .outer-box{height:40px;flex-direction:column;justify-content:flex-start;align-items:flex-start;display:inline-flex}::ng-deep .custom-paginator .go-to-page .field{display:flex;flex-direction:row;gap:16px;align-items:center}::ng-deep .custom-paginator .go-to-page .button-part{align-self:center;flex:1 1 0;padding:8px 16px;background:#fafafa;border-radius:8px;overflow:unset!important;justify-content:center;align-items:flex-start;gap:16px;display:inline-flex;border:2px solid transparent}::ng-deep .custom-paginator .go-to-page .button-part:hover,::ng-deep .custom-paginator .go-to-page .button-part:focus,::ng-deep .custom-paginator .go-to-page .button-part:active{align-self:center;flex:1 1 0;padding:8px 16px;background:#fafafa;border-radius:10px;overflow:unset!important;justify-content:center;align-items:flex-start;gap:16px;display:inline-flex;border-color:var(--primary-color-500-parts)}::ng-deep .custom-paginator .go-to-page .current-page{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:8px;font-size:16px!important;font-family:var(--sftn-font-family, sans-serif)!important}::ng-deep .custom-paginator .go-to-page .page{position:relative}::ng-deep .custom-paginator .go-to-page .of-page{position:relative;color:#0009}::ng-deep .custom-paginator .mat-mdc-select-value{font-size:16px!important;font-family:var(--sftn-font-family, sans-serif)!important}::ng-deep .custom-paginator .mat-form-field-appearance-outline .mat-mdc-select-arrow-wrapper{transform:none!important}::ng-deep .custom-paginator .mat-mdc-select-arrow{display:none!important}::ng-deep .custom-paginator .mat-form-field-underline{display:none!important}::ng-deep .custom-paginator .mdc-line-ripple{display:none!important}::ng-deep .custom-paginator .mat-mdc-text-field-wrapper{background-color:#fff!important;height:40px!important}::ng-deep .custom-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-focus-overlay{display:none!important}::ng-deep .page-option mat-pseudo-checkbox{display:none!important}::ng-deep .mat-mdc-select-panel{scrollbar-width:thin!important;background-color:#fafafa!important;box-shadow:0 4px 8px 0 var(--neutral-color-A300-parts)!important;border-radius:8px!important;min-width:82px!important}.table-filter-select ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.loading-container{display:flex;align-items:center;justify-content:center;width:100%}::ng-deep .mdc-circular-progress__indeterminate-circle-graphic{stroke:var(--primary-color-500-parts)!important}\n"] }]
|
|
481
|
-
}], propDecorators: { rowData: [{
|
|
482
|
-
type: Input
|
|
483
|
-
}], colDefs: [{
|
|
484
|
-
type: Input
|
|
485
|
-
}], sizeMode: [{
|
|
486
|
-
type: Input
|
|
487
|
-
}], paginationPageSizeSelector: [{
|
|
488
|
-
type: Input
|
|
489
|
-
}], enableSearch: [{
|
|
490
|
-
type: Input
|
|
491
|
-
}], enableFilter: [{
|
|
492
|
-
type: Input
|
|
493
|
-
}], enableColumnOptions: [{
|
|
494
|
-
type: Input
|
|
495
|
-
}], enableExport: [{
|
|
496
|
-
type: Input
|
|
497
|
-
}], showSaveColumnOptionsText: [{
|
|
498
|
-
type: Input
|
|
499
|
-
}], tableName: [{
|
|
500
|
-
type: Input
|
|
501
|
-
}], savedColumnState: [{
|
|
502
|
-
type: Input
|
|
503
|
-
}], initialFilterModel: [{
|
|
504
|
-
type: Input
|
|
505
|
-
}], updatedColumnState: [{
|
|
506
|
-
type: Output
|
|
507
|
-
}], filteredRowDataForExport: [{
|
|
508
|
-
type: Output
|
|
509
|
-
}], gridSearchTextInput: [{
|
|
510
|
-
type: ViewChild,
|
|
511
|
-
args: ['gridSearchTextInput']
|
|
512
|
-
}], ariaResultsCount: [{
|
|
513
|
-
type: ViewChild,
|
|
514
|
-
args: ['ariaResultsCount']
|
|
515
|
-
}] } });
|
|
516
|
-
/** Used for setting filter values */
|
|
517
|
-
class SofTableFilter {
|
|
518
|
-
constructor() {
|
|
519
|
-
/** The column filter options */
|
|
520
|
-
this.options = [];
|
|
521
|
-
}
|
|
522
|
-
}
|
|
523
|
-
/** A filter combining multiple conditions, taken from AgGrid*/
|
|
524
|
-
class CombinedSimpleModel {
|
|
525
|
-
}
|
|
526
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29mLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FybWF0dXJlL2FnLWdyaWQtY29tcG9uZW50cy9zcmMvc29mLXRhYmxlL3NvZi10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcm1hdHVyZS9hZy1ncmlkLWNvbXBvbmVudHMvc3JjL3NvZi10YWJsZS9zb2YtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxNQUFNLEVBQ04sTUFBTSxFQUVOLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFckQsT0FBTyxFQUdMLHlCQUF5QixFQUMxQixNQUFNLGtEQUFrRCxDQUFDO0FBaUIxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBRXZELDRDQUE0QztBQU01QyxNQUFNLE9BQU8saUJBQWlCO0lBTDlCO1FBVUUsMkRBQTJEO1FBQzNDLFlBQU8sR0FBa0IsRUFBRSxDQUFDO1FBSzVDLGtCQUFrQjtRQUNGLCtCQUEwQixHQUFrQixDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRTlFLG9CQUFvQjtRQUNKLGlCQUFZLEdBQVksSUFBSSxDQUFDO1FBRTdDLDBDQUEwQztRQUMxQixpQkFBWSxHQUFZLElBQUksQ0FBQztRQUU3Qyw0Q0FBNEM7UUFDNUIsd0JBQW1CLEdBQVksSUFBSSxDQUFDO1FBRXBELHVEQUF1RDtRQUN2QyxpQkFBWSxH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LENBQUMsTUFBTSxDQUFDO0lBQ2xGLENBQUM7OEdBemhCVSxpQkFBaUI7a0dBQWpCLGlCQUFpQixnMEJDL0M5Qiw4NlRBNk9BOzsyRkQ5TGEsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLFdBQVc7OEJBT0wsT0FBTztzQkFBdEIsS0FBSztnQkFHVSxPQUFPO3NCQUF0QixLQUFLO2dCQUdXLFFBQVE7c0JBQXhCLEtBQUs7Z0JBR1UsMEJBQTBCO3NCQUF6QyxLQUFLO2dCQUdVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBR1UsWUFBWTtzQkFBM0IsS0FBSztnQkFHVSxtQkFBbUI7c0JBQWxDLEtBQUs7Z0JBR1UsWUFBWTtzQkFBM0IsS0FBSztnQkFXVSx5QkFBeUI7c0JBQXhDLEtBQUs7Z0JBTVUsU0FBUztzQkFBeEIsS0FBSztnQkFHVyxnQkFBZ0I7c0JBQWhDLEtBQUs7Z0JBR1csa0JBQWtCO3NCQUFsQyxLQUFLO2dCQUdJLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFHRyx3QkFBd0I7c0JBQWpDLE1BQU07Z0JBRzJCLG1CQUFtQjtzQkFBcEQsU0FBUzt1QkFBQyxxQkFBcUI7Z0JBR00sZ0JBQWdCO3NCQUFyRCxTQUFTO3VCQUFDLGtCQUFrQjs7QUEyZS9CLHFDQUFxQztBQUNyQyxNQUFNLGNBQWM7SUFBcEI7UUFLRSxnQ0FBZ0M7UUFDaEMsWUFBTyxHQUFhLEVBQUUsQ0FBQztJQUN6QixDQUFDO0NBQUE7QUFFRCwrREFBK0Q7QUFDL0QsTUFBTSxtQkFBbUI7Q0FPeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBcclxuICBDb21wb25lbnQsIFxyXG4gIEVsZW1lbnRSZWYsIFxyXG4gIEV2ZW50RW1pdHRlciwgXHJcbiAgaW5qZWN0LCBcclxuICBJbnB1dCwgXHJcbiAgT25DaGFuZ2VzLCBcclxuICBPbkluaXQsIFxyXG4gIE91dHB1dCwgXHJcbiAgc2lnbmFsLCBcclxuICBTaW1wbGVDaGFuZ2VzLCBcclxuICBWaWV3Q2hpbGQsIFxyXG4gIFdyaXRhYmxlU2lnbmFsIFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgdGFrZSwgdGFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5pbXBvcnQgeyBcclxuICBDb2x1bW5EYXRhLCBcclxuICBDb2x1bW5PcHRpb25zRGF0YSwgXHJcbiAgU29mQ29sdW1uT3B0aW9uc0NvbXBvbmVudCBcclxufSBmcm9tICcuLi9jb2x1bW4tb3B0aW9ucy1tb2RhbC9jb2x1bW4tb3B0aW9ucy5jb21wb25lbnQnO1xyXG5cclxuaW1wb3J0IHtcclxuICBBcHBseUNvbHVtblN0YXRlUGFyYW1zLFxyXG4gIENvbERlZixcclxuICBDb2x1bW4sXHJcbiAgQ29sdW1uU3RhdGUsXHJcbiAgRmlsdGVyTW9kZWwsXHJcbiAgR3JpZEFwaSxcclxuICBHcmlkUmVhZHlFdmVudCxcclxuICBJUm93Tm9kZSxcclxuICBJVGV4dEZpbHRlclBhcmFtcyxcclxuICBQYWdpbmF0aW9uQ2hhbmdlZEV2ZW50LFxyXG4gIFN1cHByZXNzS2V5Ym9hcmRFdmVudFBhcmFtcyxcclxuICBUZXh0RmlsdGVyTW9kZWxcclxufSBmcm9tIFwiYWctZ3JpZC1jb21tdW5pdHlcIjtcclxuXHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuXHJcbi8qKiBUaGUgU29mdGhlb24gQXJtYXR1cmUgVGFibGUgY29tcG9uZW50ICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc29mLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc29mLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vc29mLXRhYmxlLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU29mVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIC8qKiBUaGUgbGFuZ3VhZ2UgdGV4dCBvciBhIGtleSB0aGF0IHdpbGwgYmUgc2hvd24gaW4gdGhpcyBjb21wb25lbnQgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgcm93RGF0YSE6IEFycmF5PGFueT47XHJcblxyXG4gIC8qKiBDb2x1bW4gRGVmaW5pdGlvbnM6IERlZmluZXMgJiBjb250cm9scyBncmlkIGNvbHVtbnMuICovXHJcbiAgQElucHV0KCkgcHVibGljIGNvbERlZnM6IEFycmF5PENvbERlZj4gPSBbXTtcclxuXHJcbiAgLyoqIFNpemUgbW9kZXMgZm9yIHRhYmxlICovXHJcbiAgQElucHV0KCkgcHJpdmF0ZSBzaXplTW9kZTogJ0NvbXBhY3QnIHwgJ1Jvb215JyB8ICdEZWZhdWx0JztcclxuXHJcbiAgLyoqIFBhZ2VzIHNpemVzICovXHJcbiAgQElucHV0KCkgcHVibGljIHBhZ2luYXRpb25QYWdlU2l6ZVNlbGVjdG9yOiBBcnJheTxudW1iZXI+ID0gWzEwLCAyMCwgNTAsIDEwMF07XHJcblxyXG4gIC8qKiBFbmFibGUgc2VhcmNoICovXHJcbiAgQElucHV0KCkgcHVibGljIGVuYWJsZVNlYXJjaDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8qKiBFbmFibGUgY3VzdG9tIHRleHQgZmlsdGVyIGRyb3Bkb3ducyAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBlbmFibGVGaWx0ZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvKiogRW5hYmxlIGNvbHVtbiBvcHRpb25zIG1vZGFsIHNlbGVjdGlvbiAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBlbmFibGVDb2x1bW5PcHRpb25zOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLyoqIEVuYWJsZSBleHBvcnQgYnV0dG9uIHRvIG91dHB1dCBmaWx0ZXJlZCByb3cgZGF0YSAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBlbmFibGVFeHBvcnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIFxyXG4gICAqIFRvIGRpc3BsYXkgdGhlIHRleHQgb24gdGhlIGNvbHVtbiBvcHRpb25zIG1vZGFsLCB3aGljaCBzdGF0ZXMgLVxyXG4gICAqIGBcIk9wdGlvbnMgd2lsbCBiZSBzYXZlZCBmb3IgdGhlIG5leHQgdGltZSB5b3UgbG9nIGluLlwiYFxyXG4gICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgICogQGRlc2NyaXB0aW9uIHNldCB0byB0cnVlIGlmIHNldC11cCBmb3Igc2F2aW5nIHByZWZlcmVuY2VzIHRvIFVzZXIgZGF0YS5cclxuICAgKiBAbm90ZSBZb3UgY2FuIHN0aWxsIHNhdmUgcHJlZmVyZW5jZXMgdG8gX2xvY2FsXyBvciBfc2Vzc2lvbl8gc3RvcmFnZVxyXG4gICAqIHVzaW5nIHRoZSBgc2F2ZWRDb2x1bW5TdGF0ZWAgaW5wdXQsIGFuZCBgdXBkYXRlZENvbHVtblN0YXRlYCBvdXRwdXQgZXZlbnQuXHJcbiAgICogQHNlZSBUaGUgRGVtbyBzaXRlIGlzIHNhdmluZyB0byBsb2NhbCBzdG9yYWdlLlxyXG4gICovXHJcbiAgQElucHV0KCkgcHVibGljIHNob3dTYXZlQ29sdW1uT3B0aW9uc1RleHQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIFxyXG4gICAqIE5hbWUvbGFiZWwgb2YgdGhlIHRhYmxlIFxyXG4gICAqIEBub3RlIHNob3VsZCBiZSBhIHRyYW5zbGF0aW9uIGtleVxyXG4gICovXHJcbiAgQElucHV0KCkgcHVibGljIHRhYmxlTmFtZTogc3RyaW5nO1xyXG5cclxuICAvKiogVXNlcnMgc2F2ZWQgY29sdW1uIG9wdGlvbnMgc3RhdGUgKi9cclxuICBASW5wdXQoKSBwcml2YXRlIHNhdmVkQ29sdW1uU3RhdGU6IEFwcGx5Q29sdW1uU3RhdGVQYXJhbXM7XHJcblxyXG4gIC8qKiBJbml0aWFsIGZpbHRlciBtb2RlbCAqL1xyXG4gIEBJbnB1dCgpIHByaXZhdGUgaW5pdGlhbEZpbHRlck1vZGVsOiBGaWx0ZXJNb2RlbDtcclxuXHJcbiAgLyoqIE91dHB1dCB1cGRhdGVkIGNvbHVtbiBvcHRpb25zIGV2ZW50IHRvIHNhdmUgdG8gdXNlciBvciBicm93c2VyIHN0b3JhZ2UgKi9cclxuICBAT3V0cHV0KCkgdXBkYXRlZENvbHVtblN0YXRlOiBFdmVudEVtaXR0ZXI8QXBwbHlDb2x1bW5TdGF0ZVBhcmFtcz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIC8qKiBPdXRwdXQgZmlsdGVyZWQvc29ydGVkIHJvdyBkYXRhIGFuZCB0YWJsZSBoZWFkZXJzLCBhbGwgdmFsdWVzIHJldHVybmVkIHdpbGwgYmUgZm9ybWF0dGVkICYgdHJhbnNsYXRlZCAqL1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJlZFJvd0RhdGFGb3JFeHBvcnQ6IEV2ZW50RW1pdHRlcjxFeHBvcnRUYWJsZURhdGE+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAvKiogdGhlIHNlYXJjaCBpbnB1dCAqL1xyXG4gIEBWaWV3Q2hpbGQoJ2dyaWRTZWFyY2hUZXh0SW5wdXQnKSBncmlkU2VhcmNoVGV4dElucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG5cclxuICAvKiogVGhlIGhpZGRlbiBlbGVtZW50IHRoYXQgYW5ub3VuY2VzIHdoZW4gdGhlIHRhYmxlIGNvbnRlbnQgY2hhbmdlcyBmcm9tIGZpbHRlciAqL1xyXG4gIEBWaWV3Q2hpbGQoJ2FyaWFSZXN1bHRzQ291bnQnKSBwdWJsaWMgYXJpYVJlc3VsdHNDb3VudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcblxyXG4gIC8qKiBcclxuICAgKiBLZWVwIHRyYWNrIG9mIHRoZSBjdXJyZW50IGNvbHVtbiBzdGF0ZVxyXG4gICAqIEBub3RlIElmIGNvbHVtbnMgYXJlIHJlLWRlZmluZWQgKG9uQ2hhbmdlcyksIHRoaXMgc3RhdGUgd2lsbCBiZSBhcHBsaWVkXHJcbiAgKi9cclxuICBwcml2YXRlIGN1cnJlbnRDb2x1bW5TdGF0ZTogQXBwbHlDb2x1bW5TdGF0ZVBhcmFtcyA9IHt9O1xyXG5cclxuICAvKiogQ29sdW1uIG5hbWVzIHRoYXQgc2hvdWxkIGJlIGZpbHRlcmFibGUgKi9cclxuICBwdWJsaWMgY29sRmlsdGVyczogQXJyYXk8U29mVGFibGVGaWx0ZXI+ID0gW107XHJcblxyXG4gIC8qKiBSb3cgSGVpZ2h0IGZvciB0YWJsZSAqL1xyXG4gIHB1YmxpYyByb3dIZWlnaHQ6IG51bWJlciA9IDQ4O1xyXG5cclxuICAvKiogQ3VycmVudCBQYWdlIEluZGV4ICovXHJcbiAgcHVibGljIGN1cnJlbnRQYWdlOiBudW1iZXIgPSAwO1xyXG5cclxuICAvKiogR3JpZCBBUEkgKi9cclxuICBwcml2YXRlIGdyaWRBcGkhOiBHcmlkQXBpO1xyXG5cclxuICAvKiogSXMgdGhlIHRhYmxlIHJlYWR5IHRvIGJlIGRpc3BsYXllZCAqL1xyXG4gIHB1YmxpYyBpc0dyaWREYXRhUmVuZGVyZWQ6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcclxuXHJcbiAgLyoqIERlZmF1bHQgUGFnZSBTaXplICovXHJcbiAgcHVibGljIHBhZ2luYXRpb25QYWdlU2l6ZTogbnVtYmVyID0gMjA7IFxyXG5cclxuICAvKiogVG9vbCB0aXAgc2hvdyBkZWxheSAqL1xyXG4gIHB1YmxpYyB0b29sdGlwU2hvd0RlbGF5OiBudW1iZXIgPSA1MDA7XHJcbiAgXHJcbiAgLyoqIE51bWJlciBvZiBmaWx0ZXJzIHVzZWQgKi9cclxuICBwdWJsaWMgZmlsdGVyQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgLyoqIFxyXG4gICAqIERlZmF1bHQgQ29sdW1uIERlZmluaXRpb24gXHJcbiAgICogQG5vdGUgKHN1cHByZXNzS2V5Ym9hcmRFdmVudCkgVGFibGUgY2VsbHMgY2FuIGJlIG5hdmlnYXRlZCB3aXRoIHRoZSBhcnJvdyBrZXlzLCBcclxuICAgKiBpZiB0aGUgY2VsbCBjb250YWlucyBhIGJ1dHRvbiB5b3UgY2FuIFRhYiBpbnRvIHRoZSBidXR0b24sIGVudGVyIHwgc3BhY2UgdG8gaW50ZXJhY3QuXHJcbiAgKi9cclxuICBwdWJsaWMgZGVmYXVsdENvbERlZjogQ29sRGVmID0ge1xyXG4gICAgcmVzaXphYmxlOiBmYWxzZSwgLy8gZGlzYWJsZSByZXNpemUgXHJcbiAgICBzdXBwcmVzc0hlYWRlck1lbnVCdXR0b246IHRydWUsIC8vIGRpc2FibGUgZGVmYXVsdCBmaWx0ZXIgbWVudSBcclxuICAgIHN1cHByZXNzTW92YWJsZTogdHJ1ZSwgLy8gZGlzYWJsZSBkZWZhdWx0IGRyYWcgJiBkcm9wIGZvciBjb2x1bW5zIFxyXG4gICAgY2VsbFN0eWxlOiB7IGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiIH0sXHJcbiAgICBzdXBwcmVzc0tleWJvYXJkRXZlbnQ6IChwYXJhbXM6IFN1cHByZXNzS2V5Ym9hcmRFdmVudFBhcmFtcykgPT4ge1xyXG4gICAgICByZXR1cm4gcGFyYW1zLmV2ZW50LmtleSA9PT0gJ1RhYicgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB9LFxyXG4gICAgZmlsdGVyUGFyYW1zOiB7XHJcbiAgICAgIG1heE51bUNvbmRpdGlvbnM6IDEwMCwgLy8gYnkgZGVmYXVsdCBmaWx0ZXJzIGhhdmUgYSBtYXggY29uZGl0aW9uIGxpbWl0IG9mIG9ubHkgMlxyXG4gICAgfSBhcyBJVGV4dEZpbHRlclBhcmFtc1xyXG4gIH07XHJcblxyXG4gIC8qKiBMZW5ndGggb2YgZGF0YSAqL1xyXG4gIHB1YmxpYyB0b3RhbExlbmd0aDogbnVtYmVyID0gMDtcclxuXHJcbiAgLyoqVG90YWwgbnVtYmVyIG9mIHBhZ2VzICovXHJcbiAgcHVibGljIHRvdGFsTnVtYmVyT2ZQYWdlczogbnVtYmVyO1xyXG5cclxuICAvKiogUGFnZSBDaGFuZ2UgdGV4dCAqL1xyXG4gIHB1YmxpYyBwYWdlQ2hhbmdlVGV4dDogc3RyaW5nO1xyXG5cclxuICAvKiogUGFnZSBzZWxlY3RvciBhcnJheSAqL1xyXG4gIHB1YmxpYyBwYWdlU2VsZWN0b3I6IEFycmF5PG51bWJlcj4gPSBbXTtcclxuXHJcbiAgLyoqIEZpbHRlciBQYW5lbCBvcGVuIHN0YXRlICovXHJcbiAgcHVibGljIGZpbHRlck9wZW5TdGF0ZTogYm9vbGVhbjtcclxuXHJcbiAgLyoqIFRoZSBsaXN0IG9mIGZpbHRlcnMgYW5kIHRoZSBzZWxlY3RlZCB2YWx1ZXMgKi9cclxuICBwdWJsaWMgZmlsdGVyU2VsZWN0aW9uczogQXJyYXk8QXJyYXk8c3RyaW5nPj4gPSBbXTtcclxuXHJcbiAgLyoqIG1hdC1kaWFsb2cgKi9cclxuICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nID0gaW5qZWN0KE1hdERpYWxvZyk7XHJcblxyXG4gIC8qKiBUcmFuc2xhdGlvbiBzZXJ2aWNlICovXHJcbiAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xyXG5cclxuICAvKiogT24gY29tcG9uZW50IGluaXQgKi9cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlc2l6ZUdyaWQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFuZ3VsYXIgT24gQ2hhbmdlc1xyXG4gICAqIEBwYXJhbSBjaGFuZ2VzIFRoZSBpbnB1dCBjaGFuZ2VzXHJcbiAgICovXHJcbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzLnJvd0RhdGEgJiYgIWNoYW5nZXMucm93RGF0YS5maXJzdENoYW5nZSAmJiAhIXRoaXMuZ3JpZEFwaSkge1xyXG4gICAgICB0aGlzLnRvdGFsTGVuZ3RoID0gdGhpcy5yb3dEYXRhPy5sZW5ndGggPz8gMDsgLy8gaGFuZGxlcyBudWxsLCB1bmRlZmluZWQgYW5kIFtdIGRhdGEgcmV0dXJuLCBzbyB3aWxsIG5vdCBsb2FkIGluZGVmaW5pdGVseSBcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZUZpbHRlcnMoKTtcclxuICAgICAgICB0aGlzLmhhbmRsZVBhZ2VDaGFuZ2VUZXh0KCk7XHJcbiAgICAgICAgdGhpcy5pc0dyaWREYXRhUmVuZGVyZWQuc2V0KHRydWUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzLmNvbERlZnMgJiYgIWNoYW5nZXMuY29sRGVmcy5maXJzdENoYW5nZSAmJiAhIXRoaXMuZ3JpZEFwaSkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmdyaWRBcGkuYXBwbHlDb2x1bW5TdGF0ZSh0aGlzLmN1cnJlbnRDb2x1bW5TdGF0ZSk7XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZUZpbHRlcnMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYWxsZWQgd2hlbiB0aGUgZ3JpZCBoYXMgaW5nZXN0ZWQgdGhlIGlucHV0IGRhdGFcclxuICAgKiBAcGFyYW0gcGFyYW1zIEdyaWQgUmVhZHkgRXZlbnQsXHJcbiAgICogVGhlIGdyaWQgaGFzIGluaXRpYWxpemVkIGFuZCBpcyByZWFkeSBmb3IgbW9zdCBhcGkgY2FsbHMsIGJ1dCBtYXkgbm90IGJlIGZ1bGx5IHJlbmRlcmVkIHlldC5cclxuICAgKiBAbm90ZSB5b3UgY2FuIG5vdCBhY2Nlc3MgdGhpcy5ncmlkQXBpIGJlZm9yZSB0aGlzIGZ1bmN0aW9uIGlzIHJ1biwgXHJcbiAgICogYW55IGF0dGVtcHRzIHRvIGFjY2VzcyB0aGlzLmdyaWRBcGkgaW4gdGhpcyBjb21wb25lbnRzIG5nT25Jbml0IG9yIHRoZSBmaXJzdCBuZ09uQ2hhbmdlcyBjeWNsZVxyXG4gICAqIHdpbGwgcmVzdWx0IGluIGEgdHlwZSBlcnJvcjsgYmVpbmcgdGhpcy5ncmlkQXBpIGlzIHVuZGVmaW5lZCBhdCB0aGF0IHRpbWUuXHJcbiAgICovXHJcbiAgcHVibGljIG9uR3JpZFJlYWR5KHBhcmFtczogR3JpZFJlYWR5RXZlbnQpIHtcclxuICAgIHRoaXMuZ3JpZEFwaSA9IHBhcmFtcy5hcGk7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gdGhpcy5ncmlkQXBpLnBhZ2luYXRpb25HZXRDdXJyZW50UGFnZSgpICsgMTtcclxuICAgIHRoaXMudG90YWxMZW5ndGggPSB0aGlzLmdyaWRBcGkucGFnaW5hdGlvbkdldFJvd0NvdW50KCk7XHJcbiAgICB3aW5kb3cub25yZXNpemUgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IG1vYmlsZVdpZHRoVGhyZXNob2xkID0gNzUyO1xyXG4gICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPD0gbW9iaWxlV2lkdGhUaHJlc2hvbGQpIHtcclxuICAgICAgICB0aGlzLnJvd0hlaWdodCA9IDQwO1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvblBhZ2VTaXplID0gMTA7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yZXNpemVHcmlkKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5oYW5kbGVQYWdlQ2hhbmdlVGV4dCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEZpcmVkIHRoZSBmaXJzdCB0aW1lIGRhdGEgaXMgcmVuZGVyZWQgaW50byB0aGUgZ3JpZC4gKi9cclxuICBwdWJsaWMgb25GaXJzdERhdGFSZW5kZXJlZCgpIHtcclxuICAgIGlmICghdGhpcy5zYXZlZENvbHVtblN0YXRlPy5zdGF0ZS5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgY29sdW1uU3RhdGU6IEFycmF5PENvbHVtblN0YXRlPiA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLmdyaWRBcGkuZ2V0Q29sdW1uU3RhdGUoKSk7XHJcbiAgICAgIHRoaXMuc2F2ZWRDb2x1bW5TdGF0ZSA9IHtcclxuICAgICAgICBzdGF0ZTogY29sdW1uU3RhdGUsXHJcbiAgICAgICAgYXBwbHlPcmRlcjogdHJ1ZVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgdGhpcy5ncmlkQXBpLmFwcGx5Q29sdW1uU3RhdGUodGhpcy5zYXZlZENvbHVtblN0YXRlKTtcclxuICAgIHRoaXMudXBkYXRlZENvbHVtblN0YXRlLmVtaXQodGhpcy5zYXZlZENvbHVtblN0YXRlKTtcclxuICAgIHRoaXMuY3VycmVudENvbHVtblN0YXRlID0gdGhpcy5zYXZlZENvbHVtblN0YXRlO1xyXG4gICAgdGhpcy5wb3B1bGF0ZUZpbHRlcnMoKTtcclxuICAgIHRoaXMuaGFuZGxlUGFnZUNoYW5nZVRleHQoKTtcclxuICAgIHRoaXMuaXNHcmlkRGF0YVJlbmRlcmVkLnNldCh0cnVlKTtcclxuICB9XHJcblxyXG4gIC8qKiBSZXNpemUgZ3JpZCBmcm9tIHNpemUgbW9kZSAqL1xyXG4gIHByaXZhdGUgcmVzaXplR3JpZCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNpemVNb2RlID09PSAnQ29tcGFjdCcpIHtcclxuICAgICAgdGhpcy5yb3dIZWlnaHQgPSA0MDtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuc2l6ZU1vZGUgPT09ICdSb29teScpIHtcclxuICAgICAgdGhpcy5yb3dIZWlnaHQgPSA1NjtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnJvd0hlaWdodCA9IDQ4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT24gcGFnZSBzZWxlY3Rpb24gY2hhbmdlXHJcbiAgICogQHBhcmFtIHZhbHVlIFRoZSBzZWxlY3RlZCBwYWdlIG51bWJlclxyXG4gICAqL1xyXG4gIHB1YmxpYyBvblBhZ2VOdW1iZXJDaGFuZ2UodmFsdWU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgLy8gVGhlIHBhZ2UgdmFsdWVzIGFyZSAxIG9mZiB0byBtYWtlIGEgMS1iYXNlZCBhcnJheSwgYnV0IHRoZSBhY3R1YWwgcGFnZXMgYXJlIGEgMC1iYXNlZCBhcnJheS5cclxuICAgIHRoaXMuZ3JpZEFwaS5wYWdpbmF0aW9uR29Ub1BhZ2UodmFsdWUgLSAxKTtcclxuICB9XHJcblxyXG4gIC8qKiBPbiBuZXh0IHBhZ2UgZXZlbnQgKi9cclxuICBwdWJsaWMgbmV4dFBhZ2UoKSB7XHJcbiAgICB0aGlzLmdyaWRBcGkucGFnaW5hdGlvbkdvVG9OZXh0UGFnZSgpO1xyXG4gICAgdGhpcy5oYW5kbGVQYWdlQ2hhbmdlVGV4dCgpXHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gdGhpcy5ncmlkQXBpLnBhZ2luYXRpb25HZXRDdXJyZW50UGFnZSgpICsgMTtcclxuICB9XHJcblxyXG4gIC8qKiBPbiBQcmV2aW91cyBQYWdlIEV2ZW50ICovXHJcbiAgcHVibGljIHByZXZpb3VzUGFnZSgpIHtcclxuICAgIHRoaXMuZ3JpZEFwaS5wYWdpbmF0aW9uR29Ub1ByZXZpb3VzUGFnZSgpO1xyXG4gICAgdGhpcy5oYW5kbGVQYWdlQ2hhbmdlVGV4dCgpXHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gdGhpcy5ncmlkQXBpLnBhZ2luYXRpb25HZXRDdXJyZW50UGFnZSgpICsgMTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIENoYW5nZSBQYWdlIFNpemUgRXZlbnRcclxuICAgKiBAcGFyYW0gZXZlbnQgVGhlIHBhZ2luYXRpb24gZXZlbnRcclxuICAgKi9cclxuICBwdWJsaWMgY2hhbmdlUGFnZVNpemUoZXZlbnQ6IFBhZ2luYXRpb25DaGFuZ2VkRXZlbnQpIHtcclxuICAgIC8vIE9ubHkgbmVlZCB0byBkbyB0aGlzIHdvcmsgaWYgdGhlIHBhZ2Ugc2l6ZSBoYXMgY2hhbmdlZC5cclxuICAgIGlmIChldmVudC5uZXdQYWdlU2l6ZSkge1xyXG4gICAgICAvLyBVcGRhdGUgdGhlIHRvdGFsIG51bWJlciBvZiBmaWx0ZXJlZCByb3dzLlxyXG4gICAgICB0aGlzLnRvdGFsTGVuZ3RoID0gdGhpcy5ncmlkQXBpLnBhZ2luYXRpb25HZXRSb3dDb3VudCgpO1xyXG4gICAgICAvLyBIYW5kbGUgdGV4dCBjaGFuZ2VzXHJcbiAgICAgIHRoaXMuaGFuZGxlUGFnZUNoYW5nZVRleHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBcclxuICAgKiBDYWxsZWQgd2hlbiB0aGUgZ3JpZCBmaWx0ZXIgaXMgY2hhbmdlZCBcclxuICAgKiBAdG9kbyB1cGRhdGUgdGhlIGZpbHRlciBkcm9wZG93biBvcHRpb25zIGJhc2VkIG9uIHRoZSBmaWx0ZXJlZCBkYXRhIHNldCwgaW5zdGVhZCBvZiB0aGUgY29tcGxldGUgZGF0YSBzZXQuXHJcbiAgICovXHJcbiAgcHVibGljIG9uRmlsdGVyQ2hhbmdlZCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHByZXZpb3VzVG90YWxMZW5ndGg6IG51bWJlciA9IE51bWJlcih0aGlzLnRvdGFsTGVuZ3RoKTtcclxuICAgIC8vIFVwZGF0ZSB0aGUgdG90YWwgbnVtYmVyIG9mIGZpbHRlcmVkIHJvd3MuXHJcbiAgICB0aGlzLnRvdGFsTGVuZ3RoID0gdGhpcy5ncmlkQXBpLnBhZ2luYXRpb25HZXRSb3dDb3VudCgpO1xyXG4gICAgaWYgKHRoaXMudG90YWxMZW5ndGggIT09IHByZXZpb3VzVG90YWxMZW5ndGgpIHtcclxuICAgICAgdGhpcy5hcmlhUmVzdWx0c0NvdW50Lm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gXCJcIjtcclxuICAgICAgdGhpcy5hcmlhUmVzdWx0c0NvdW50Lm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy50b3RhbExlbmd0aCA9PT0gMFxyXG4gICAgICAgID8gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2FybWF0dXJlLnNvZi10YWJsZS5zY3JlZW4tcmVhZGVyLmZpbHRlcmVkLXJlc3VsdHMubm8tcmVzdWx0cycpXHJcbiAgICAgICAgOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcclxuICAgICAgICAgICdhcm1hdHVyZS5zb2YtdGFibGUuc2NyZWVuLXJlYWRlci5maWx0ZXJlZC1yZXN1bHRzLmhhcy1yZXN1bHRzJywgeydyZXN1bHRzQ291bnQnOiB0aGlzLnRvdGFsTGVuZ3RofVxyXG4gICAgICAgICk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXJpYVJlc3VsdHNDb3VudC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IFwiXCI7XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmhhbmRsZVBhZ2VDaGFuZ2VUZXh0KCk7XHJcbiAgfVxyXG5cclxuICAvKiogR2VuZXJhdGVkIHRleHQgZm9yIHNob3dpbmcgcGFnZXMgaW4gZm9ybWF0OiAxLTExIG9mIDExICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVQYWdlQ2hhbmdlVGV4dCgpOiB2b2lkIHtcclxuICAgIC8vIEhhbmRsZSBlbXB0eSB0YWJsZVxyXG4gICAgaWYgKCF0aGlzLnRvdGFsTGVuZ3RoIHx8IHRoaXMucGFnaW5hdGlvblBhZ2VTaXplID09PSAwKSB7XHJcbiAgICAgIC8vIFJlc2V0IHRoZSBwYWdpbmF0aW9uIFVJXHJcbiAgICAgIHRoaXMudG90YWxOdW1iZXJPZlBhZ2VzID0gMTtcclxuICAgICAgdGhpcy5wYWdlU2VsZWN0b3IgPSBbMV07XHJcbiAgICAgIHRoaXMucGFnZUNoYW5nZVRleHQgPSBgMGA7XHJcbiAgICAgIHRoaXMuZ3JpZEFwaS5zaG93Tm9Sb3dzT3ZlcmxheSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdyaWRBcGkuaGlkZU92ZXJsYXkoKTtcclxuICAgIH1cclxuICAgIC8vIFVwZGF0ZSB0aGUgdG90YWwgbnVtYmVyIG9mIHBhZ2VzXHJcbiAgICB0aGlzLnRvdGFsTnVtYmVyT2ZQYWdlcyA9IHRoaXMuZ3JpZEFwaS5wYWdpbmF0aW9uR2V0VG90YWxQYWdlcygpIHx8IE1hdGguY2VpbCh0aGlzLnRvdGFsTGVuZ3RoIC8gdGhpcy5wYWdpbmF0aW9uUGFnZVNpemUpIHx8IDE7XHJcbiAgICAvLyBSZXNldCB0aGUgcGFnZSBzZWxlY3RvclxyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICBjb25zdCBwYWdlU2VsZWN0b3IgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHRoaXMudG90YWxOdW1iZXJPZlBhZ2VzOyBpKyspIHtcclxuICAgICAgcGFnZVNlbGVjdG9yLnB1c2goaSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnBhZ2VTZWxlY3RvciA9IHBhZ2VTZWxlY3RvcjtcclxuICAgIGNvbnN0IGxlbmd0aCA9IE1hdGgubWF4KHRoaXMudG90YWxMZW5ndGgsIDApO1xyXG4gICAgY29uc3QgcGFnZVNpemUgPSB0aGlzLnBhZ2luYXRpb25QYWdlU2l6ZTtcclxuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSB0aGlzLmdyaWRBcGkucGFnaW5hdGlvbkdldEN1cnJlbnRQYWdlKCkgKiBwYWdlU2l6ZTtcclxuICAgIGNvbnN0IGVuZEluZGV4ID0gc3RhcnRJbmRleCA8IGxlbmd0aCA/IE1hdGgubWluKHN0YXJ0SW5kZXggKyBwYWdlU2l6ZSwgbGVuZ3RoKSA6IHN0YXJ0SW5kZXggKyBwYWdlU2l6ZTtcclxuICAgIHRoaXMucGFnZUNoYW5nZVRleHQgPSBgJHtzdGFydEluZGV4ICsgMX0gLSAke2VuZEluZGV4fWA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBseSB0aGUgc2VhcmNoIGZpbHRlciBvbiBkYXRhIHdoZW4gc2VhcmNoIHRleHQgY2hhbmdlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBvblNlYXJjaFRleHRDaGFuZ2VkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncmlkQXBpLnNldEdyaWRPcHRpb24oXCJxdWlja0ZpbHRlclRleHRcIiwgdGhpcy5ncmlkU2VhcmNoVGV4dElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFRvZ2dsZSB0aGUgZmlsdGVyIHBhbmVsIGRpc3BsYXkgKi9cclxuICBwdWJsaWMgdG9nZ2xlRmlsdGVyUGFuZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlck9wZW5TdGF0ZSA9ICF0aGlzLmZpbHRlck9wZW5TdGF0ZTtcclxuICB9XHJcblxyXG4gIC8qKiBBcHBseSB0aGUgc2VsZWN0ZWQgZmlsdGVycyAqL1xyXG4gIHB1YmxpYyBhcHBseUZpbHRlcnMoKTogdm9pZCB7XHJcbiAgICBsZXQgdGFibGVGaWx0ZXJNb2RlbDogRmlsdGVyTW9kZWwgPSB7fTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2xGaWx0ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGNvbEZpbHRlciA9IHRoaXMuY29sRmlsdGVyc1tpXTtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IHRoaXMuZmlsdGVyU2VsZWN0aW9uc1tpXTtcclxuICAgICAgaWYgKCFzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCkge1xyXG4gICAgICAgIC8vIFJlc2V0IG91dCB0aGUgY29sdW1uIGZpbHRlcnNcclxuICAgICAgICB0aGlzLmdyaWRBcGkuc2V0Q29sdW1uRmlsdGVyTW9kZWwoY29sRmlsdGVyLmhlYWRlciwgbnVsbCk7XHJcbiAgICAgICAgdGFibGVGaWx0ZXJNb2RlbFtjb2xGaWx0ZXIuaGVhZGVyXSA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgIC8vIFNldCB0aGUgc2luZ2xlIGZpbHRlciBmb3IgdGhlIGNvbHVtblxyXG4gICAgICAgIGxldCBmaWx0ZXJNb2RlbDogVGV4dEZpbHRlck1vZGVsID0geyBmaWx0ZXJUeXBlOiAndGV4dCcsIHR5cGU6ICdlcXVhbHMnLCBmaWx0ZXI6IHNlbGVjdGVkRWxlbWVudHNbMF0gfTtcclxuICAgICAgICAvLyBBcHBseSB0aGUgZmlsdGVyIG1vZGVsIHRvIHRoZSBjb2x1bW5cclxuICAgICAgICB0YWJsZUZpbHRlck1vZGVsW2NvbEZpbHRlci5oZWFkZXJdID0gZmlsdGVyTW9kZWw7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgLy8gU2V0IG11bHRpcGxlIE9SIGZpbHRlcnMgZm9yIHRoZSBjb2x1bW5cclxuICAgICAgICBsZXQgZmlsdGVyTW9kZWxzOiBDb21iaW5lZFNpbXBsZU1vZGVsPFRleHRGaWx0ZXJNb2RlbD4gPSB7IGZpbHRlclR5cGU6ICd0ZXh0Jywgb3BlcmF0b3I6ICdPUicsIGNvbmRpdGlvbnM6IFtdIH07XHJcbiAgICAgICAgLy8gU2V0IHRoZSBzZWxlY3RlZCBlbGVtZW50cyBpbiB0aGUgbW9kZWxcclxuICAgICAgICBmb3IgKGNvbnN0IHNlbGVjdGVkRWxlbWVudCBvZiBzZWxlY3RlZEVsZW1lbnRzKSB7XHJcbiAgICAgICAgICBmaWx0ZXJNb2RlbHMuY29uZGl0aW9ucy5wdXNoKHsgZmlsdGVyVHlwZTogJ3RleHQnLCB0eXBlOiAnZXF1YWxzJywgZmlsdGVyOiBzZWxlY3RlZEVsZW1lbnQgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEFwcGx5IHRoZSBmaWx0ZXIgbW9kZWwgY29sbGVjdGlvbiB0byB0aGUgY29sdW1uXHJcbiAgICAgICAgdGFibGVGaWx0ZXJNb2RlbFtjb2xGaWx0ZXIuaGVhZGVyXSA9IGZpbHRlck1vZGVscztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gT25jZSBldmVyeXRoaW5nIGlzIHNldCwgdXBkYXRlIHRoZSBmaWx0ZXJzXHJcbiAgICB0aGlzLmZpbHRlckNvdW50ID0gdGhpcy5nZXRGaWx0ZXJDb3VudCgpO1xyXG4gICAgdGhpcy5ncmlkQXBpLnNldEZpbHRlck1vZGVsKHRhYmxlRmlsdGVyTW9kZWwpO1xyXG4gICAgdGhpcy5ncmlkQXBpLm9uRmlsdGVyQ2hhbmdlZCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqIENsZWFyIGFsbCBmaWx0ZXJzICovXHJcbiAgcHVibGljIGNsZWFyRmlsdGVycygpOiB2b2lkIHtcclxuICAgIC8vIENsZWFyIGFsbCBzZWxlY3Rpb25zXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZmlsdGVyU2VsZWN0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB0aGlzLmZpbHRlclNlbGVjdGlvbnNbaV0gPSBbXTtcclxuICAgIH1cclxuICAgIC8vIFNldCB0aGUgZnVsbCBncmlkIGZpbHRlciBtb2RlbCB0byBudWxsXHJcbiAgICB0aGlzLmdyaWRBcGkuc2V0RmlsdGVyTW9kZWwobnVsbCk7XHJcbiAgICAvLyBVcGRhdGUgdGhlIGRpc3BsYXlcclxuICAgIHRoaXMuZ3JpZEFwaS5vbkZpbHRlckNoYW5nZWQoKTtcclxuICAgIHRoaXMuZmlsdGVyQ291bnQgPSB0aGlzLmdldEZpbHRlckNvdW50KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRydWUgaWYgbm8gZmlsdGVycyBhcmUgc2VsZWN0ZWRcclxuICAgKiBAcmV0dXJucyBUcnVlIGlmIGEgZmlsdGVyIGlzIHNlbGVjdGVkLCBmYWxzZSBvdGhlcndpc2UuXHJcbiAgICovXHJcbiAgcHVibGljIGhhc0VtcHR5RmlsdGVycygpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5maWx0ZXJTZWxlY3Rpb25zIHx8ICF0aGlzLmZpbHRlclNlbGVjdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBmaWx0ZXJTZWxlY3Qgb2YgdGhpcy5maWx0ZXJTZWxlY3Rpb25zKSB7XHJcbiAgICAgIC8vIElmIGF0IGxlYXN0IG9uZSBmaWx0ZXIgaGFzIGJlZW4gc2VsZWN0ZWQsIHJldHVybiBmYWxzZVxyXG4gICAgICBpZiAoZmlsdGVyU2VsZWN0Lmxlbmd0aCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvKiogQ2FuY2VsIHRoZSBjaGFuZ2VzIHRvIHRoZSBmaWx0ZXIgYW5kIGNsb3NlcyB0aGUgZmlsdGVyIHBhbmVsICovXHJcbiAgcHVibGljIGNhbmNlbEZpbHRlckNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICAvL1NldHMgdGhlIGZpbHRlciBzZWxlY3Rpb25zIG9uIGZpbHRlciBwYW5lbFxyXG4gICAgdGhpcy5zZXRGaWx0ZXJTZWxlY3Rpb25zKCk7XHJcbiAgICAvLyBDbG9zZSB0aGUgZmlsdGVyIHBhbmVsXHJcbiAgICB0aGlzLnRvZ2dsZUZpbHRlclBhbmVsKCk7XHJcbiAgfVxyXG5cclxuICAvKiogUG9wdWxhdGVzIHRoZSBmaWx0ZXIgZHJvcGRvd25zICovXHJcbiAgcHJpdmF0ZSBwb3B1bGF0ZUZpbHRlcnMoKTogdm9pZCB7XHJcbiAgICAvLyBSZXNldCB0aGUgZmlsdGVyIGRyb3Bkb3duc1xyXG4gICAgdGhpcy5maWx0ZXJTZWxlY3Rpb25zID0gW107XHJcbiAgICB0aGlzLmNvbEZpbHRlcnMgPSBbXTtcclxuICAgIC8vIEdldCB0aGUgY29sdW1uIGRlZmluaXRpb25zIHRoYXQgaGF2ZSBhIGZpbHRlclxyXG4gICAgY29uc3QgZmlsdGVyZWRDb2xzOiBBcnJheTxDb2xEZWY+ID0gdGhpcy5ncmlkQXBpLmdldENvbHVtbkRlZnMoKS5maWx0ZXIoKGRlZikgPT4gZGVmWydmaWx0ZXInXSk7XHJcbiAgICAvLyBDcmVhdGUgYSBtYXAgdG8gc3RvcmUgdW5pcXVlIHZhbHVlcyBmb3IgZWFjaCBmaWVsZFxyXG4gICAgY29uc3QgZmlsdGVyVmFsdWVzTWFwID0gbmV3IE1hcDxzdHJpbmcsIFNldDxhbnk+PigpO1xyXG4gICAgLy8gSW5pdGlhbGl6ZSBzZXRzIGZvciBlYWNoIGZpZWxkIChjb2x1bW4pIFxyXG4gICAgZm9yIChjb25zdCBjb2wgb2YgZmlsdGVyZWRDb2xzKSB7XHJcbiAgICAgIGNvbnN0IGZpZWxkOiBzdHJpbmcgPSBjb2xbXCJmaWVsZFwiXTtcclxuICAgICAgZmlsdGVyVmFsdWVzTWFwLnNldChmaWVsZCwgbmV3IFNldDxhbnk+KCkpO1xyXG4gICAgfVxyXG4gICAgLy8gVXNlIGZvckVhY2hOb2RlIHRvIGl0ZXJhdGUgb3ZlciB0aGUgcm93c1xyXG4gICAgdGhpcy5ncmlkQXBpLmZvckVhY2hOb2RlKChub2RlOiBJUm93Tm9kZSkgPT4ge1xyXG4gICAgICBpZiAobm9kZS5kYXRhKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBjb2wgb2YgZmlsdGVyZWRDb2xzKSB7XHJcbiAgICAgICAgICBjb25zdCBmaWVsZDogc3RyaW5nID0gY29sW1wiZmllbGRcIl07XHJcbiAgICAgICAgICBjb25zdCB2YWx1ZTogYW55ID0gdGhpcy5ncmlkQXBpLmdldENlbGxWYWx1ZSh7cm93Tm9kZTogbm9kZSwgY29sS2V5OiBmaWVsZH0pO1xyXG4gICAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIGZpbHRlclZhbHVlc01hcC5nZXQoZmllbGQpPy5hZGQodmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyBOb3cgdGhhdCB3ZSBoYXZlIHRoZSB1bmlxdWUgdmFsdWVzIGZvciBlYWNoIGZpZWxkLCBwb3B1bGF0ZSBmaWx0ZXIgb3B0aW9uc1xyXG4gICAgZm9yIChjb25zdCBjb2wgb2YgZmlsdGVyZWRDb2xzKSB7XHJcbiAgICAgIGNvbnN0IGZpZWxkOiBzdHJpbmcgPSBjb2xbXCJmaWVsZFwiXTtcclxuICAgICAgY29uc3QgbGFiZWw6IHN0cmluZyA9IGNvbFtcImhlYWRlck5hbWVcIl07XHJcbiAgICAgIGNvbnN0IHVuaXF1ZVZhbHVlczogQXJyYXk8YW55PiA9IEFycmF5LmZyb20oZmlsdGVyVmFsdWVzTWFwLmdldChmaWVsZCkgfHwgW10pLnNvcnQoKTtcclxuICAgICAgaWYgKHVuaXF1ZVZhbHVlcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgLy8gRW5zdXJlIHRoZXJlJ3Mgc3BhY2UgZm9yIGZpbHRlciBzZWxlY3Rpb25zXHJcbiAgICAgICAgdGhpcy5maWx0ZXJTZWxlY3Rpb25zLnB1c2goW10pOyBcclxuICAgICAgICB0aGlzLmNvbEZpbHRlcnMucHVzaCh7IGhlYWRlcjogZmllbGQsIGxhYmVsOiBsYWJlbCwgb3B0aW9uczogdW5pcXVlVmFsdWVzIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmdyaWRBcGkuc2V0RmlsdGVyTW9kZWwodGhpcy5pbml0aWFsRmlsdGVyTW9kZWwpO1xyXG4gICAgdGhpcy5zZXRGaWx0ZXJTZWxlY3Rpb25zKCk7XHJcbiAgICB0aGlzLmZpbHRlckNvdW50ID0gdGhpcy5nZXRGaWx0ZXJDb3VudCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqIE9wZW4gdGhlIGNvbHVtbiBvcHRpb25zIG1vZGFsICovXHJcbiAgcHVibGljIG9wZW5Db2x1bW5PcHRpb25zKCk6IHZvaWQge1xyXG4gICAgY29uc3QgY29sdW1uU3RhdGU6IEFycmF5PENvbHVtblN0YXRlPiA9IHRoaXMuZ3JpZEFwaS5nZXRDb2x1bW5TdGF0ZSgpO1xyXG4gICAgY29uc3QgY29sdW1uRGF0YTogQXJyYXk8Q29sdW1uRGF0YT4gPSB0aGlzLmNvbHVtblN0YXRlVG9EYXRhKGNvbHVtblN0YXRlKTtcclxuICAgIGNvbnN0IGluaXRpYWxDb2x1bW5EYXRhOiBBcnJheTxDb2x1bW5EYXRhPiA9IHRoaXMuY29sdW1uU3RhdGVUb0RhdGEodGhpcy5zYXZlZENvbHVtblN0YXRlLnN0YXRlKTtcclxuICAgIGNvbnN0IGNvbHVtbk9wdGlvbnNEYXRhOiBDb2x1bW5PcHRpb25zRGF0YSA9IHtcclxuICAgICAgdGFibGVOYW1lOiB0aGlzLnRhYmxlTmFtZSxcclxuICAgICAgY29sdW1uRGF0YSxcclxuICAgICAgaW5pdGlhbENvbHVtbkRhdGEsXHJcbiAgICAgIHNob3dTYXZlQ29sdW1uT3B0aW9uc1RleHQ6IHRoaXMuc2hvd1NhdmVDb2x1bW5PcHRpb25zVGV4dFxyXG4gICAgfTtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oU29mQ29sdW1uT3B0aW9uc0NvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzUwMHB4JyxcclxuICAgICAgcG9zaXRpb246IHsgYm90dG9tOiAnNDBweCcsIHJpZ2h0OiAnNDBweCcgfSxcclxuICAgICAgYXJpYUxhYmVsbGVkQnk6ICdjb2x1bW4tb3B0aW9ucy1oZWFkaW5nJyxcclxuICAgICAgZGF0YTogY29sdW1uT3B0aW9uc0RhdGFcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkucGlwZShcclxuICAgICAgdGFrZSgxKSxcclxuICAgICAgdGFwKCh1cGRhdGVkQ29sdW1uU3RhdGU6IEFwcGx5Q29sdW1uU3RhdGVQYXJhbXMpID0+IHtcclxuICAgICAgICBpZiAodXBkYXRlZENvbHVtblN0YXRlICYmIHVwZGF0ZWRDb2x1bW5TdGF0ZS5zdGF0ZS5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMuZ3JpZEFwaS5hcHBseUNvbHVtblN0YXRlKHVwZGF0ZWRDb2x1bW5TdGF0ZSk7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZWRDb2x1bW5TdGF0ZS5lbWl0KHVwZGF0ZWRDb2x1bW5TdGF0ZSk7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRDb2x1bW5TdGF0ZSA9IHVwZGF0ZWRDb2x1bW5TdGF0ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWFwcyBgQXJyYXk8Q29sdW1uU3RhdGU+YCB0byBgQXJyYXk8Q29sdW1uRGF0YT5gIFxyXG4gICAqIEBub3RlIGZpbHRlcnMgb3V0IGFueSBjb2x1bW5zIG1hcmtlZCBhcyAncGlubmVkJyBieSB0aGUgY29sdW1uIGRlZmluaXRpb25zLlxyXG4gICAqIEBub3RlIGZpbHRlcnMgYW55IGNvbHVtbnMgd2l0aG91dCBhICdoZWFkZXJOYW1lJy5cclxuICAgKiBAcGFyYW0gY29sdW1uU3RhdGUgdGhlIGNvbHVtbiBzdGF0ZSB0byBtb2RpZnlcclxuICAgKiBAcmV0dXJucyBhbiBhcnJheSBvZiBjb2x1bW4gZGF0YSBmb3JtYXR0ZWQgdG8gYmUgaW5nZXN0ZWQgYnkgdGhlIGBTb2ZDb2x1bW5PcHRpb25zQ29tcG9uZW50YFxyXG4gICovXHJcbiAgcHJpdmF0ZSBjb2x1bW5TdGF0ZVRvRGF0YShjb2x1bW5TdGF0ZTogQXJyYXk8Q29sdW1uU3RhdGU+KTogQXJyYXk8Q29sdW1uRGF0YT4ge1xyXG4gICAgcmV0dXJuIGNvbHVtblN0YXRlXHJcbiAgICAgIC5maWx0ZXIoKGNvbHVtbikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGhlYWRlck5hbWU6IHN0cmluZyA9IHRoaXMuZ3JpZEFwaS5nZXRDb2x1bW5EZWYoY29sdW1uLmNvbElkKT8uaGVhZGVyTmFtZSB8fCBcIlwiO1xyXG4gICAgICAgIGlmIChoZWFkZXJOYW1lICYmIGhlYWRlck5hbWUubGVuZ3RoICYmICFjb2x1bW4ucGlubmVkKSB7XHJcbiAgICAgICAgICByZXR1cm4gY29sdW1uO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLm1hcCgoY29sdW1uKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVyTmFtZTogc3RyaW5nID0gdGhpcy5ncmlkQXBpLmdldENvbHVtbkRlZihjb2x1bW4uY29sSWQpLmhlYWRlck5hbWU7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGlkOiBjb2x1bW4uY29sSWQsXHJcbiAgICAgICAgICBpc0NoZWNrZWQ6ICFjb2x1bW4uaGlkZSxcclxuICAgICAgICAgIHRleHQ6IGhlYWRlck5hbWVcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqIEVtaXQgdGhlIGN1cnJlbnQgZmlsdGVyZWQvc29ydGVkIHJvdyBkYXRhICovXHJcbiAgcHVibGljIGV4cG9ydEZpbHRlcmVkUm93RGF0YSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHJvd0RhdGE6IEFycmF5PGFueT4gPSBbXTtcclxuICAgIGNvbnN0IGNvbHVtbnM6IEFycmF5PENvbHVtbj4gPSB0aGlzLmdyaWRBcGkuZ2V0QWxsRGlzcGxheWVkQ29sdW1ucygpLmZpbHRlcigoY29sKSA9PiBjb2wuZ2V0Q29sRGVmKCkuaGVhZGVyTmFtZSk7XHJcbiAgICBjb25zdCB0YWJsZUhlYWRlcnM6IEFycmF5PEtleVZhbFBhaXI+ID0gW107XHJcbiAgICBjb2x1bW5zLmZvckVhY2goKGNvbCkgPT4ge1xyXG4gICAgICBjb25zdCBjb2xEZWY6IENvbERlZiA9IGNvbC5nZXRDb2xEZWYoKTtcclxuICAgICAgdGFibGVIZWFkZXJzLnB1c2goe1xyXG4gICAgICAgIGtleTogY29sRGVmLmZpZWxkLFxyXG4gICAgICAgIHZhbHVlOiBjb2xEZWYuaGVhZGVyTmFtZVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5ncmlkQXBpLmZvckVhY2hOb2RlQWZ0ZXJGaWx0ZXJBbmRTb3J0KChub2RlOiBJUm93Tm9kZTxhbnk+KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5vZGVEYXRhOiBhbnkgPSB7fTtcclxuICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2wpID0+IHtcclxuICAgICAgICBjb25zdCBjb2xJZDogc3RyaW5nID0gY29sLmdldENvbElkKCk7XHJcbiAgICAgICAgLy8gVXNlIGdyaWRBcGkncyBnZXRDZWxsVmFsdWUgdG8gZ2V0IHRoZSB2YWx1ZSB0cmFuc2Zvcm1lZCBieSB2YWx1ZUdldHRlclxyXG4gICAgICAgIG5vZGVEYXRhW2NvbElkXSA9IHRoaXMuZ3JpZEFwaS5nZXRDZWxsVmFsdWUoeyByb3dOb2RlOiBub2RlLCBjb2xLZXk6IGNvbElkIH0pO1xyXG4gICAgICB9KTtcclxuICAgICAgcm93RGF0YS5wdXNoKG5vZGVEYXRhKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgZXhwb3J0RGF0YTogRXhwb3J0VGFibGVEYXRhID0ge1xyXG4gICAgICB0YWJsZUhlYWRlcnMsXHJcbiAgICAgIHJvd0RhdGFcclxuICAgIH07XHJcbiAgICB0aGlzLmZpbHRlcmVkUm93RGF0YUZvckV4cG9ydC5lbWl0KGV4cG9ydERhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFNldHMgZmlsdGVyIHNlbGVjdGlvbnMgZm9yIGZpbHRlciBwYW5lbCAqL1xyXG4gIHByaXZhdGUgc2V0RmlsdGVyU2VsZWN0aW9ucygpOiB2b2lkIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2xGaWx0ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIC8vIEdldCB0aGUgc3RvcmVkIGZpbHRlcnMgZm9yIHRoZSBnaXZlbiBtb2RlbFxyXG4gICAgICBjb25zdCBjb2xGaWx0ZXIgPSB0aGlzLmNvbEZpbHRlcnNbaV07XHJcbiAgICAgIGNvbnN0IG1vZGVsID0gdGhpcy5ncmlkQXBpLmdldENvbHVtbkZpbHRlck1vZGVsKGNvbEZpbHRlci5oZWFkZXIpO1xyXG4gICAgICBsZXQgZmlsdGVyU2VsZWN0aW9uRGF0YSA9IFtdO1xyXG4gICAgICBpZiAobW9kZWwgJiYgbW9kZWxbXCJjb25kaXRpb25zXCJdKSB7XHJcbiAgICAgICAgLy8gVGhlIG1vZGVsIGlzIGEgY29tYmluZWQgbW9kZWwgd2l0aCBtdWx0aXBsZSBzZWxlY3Rpb25zXHJcbiAgICAgICAgY29uc3QgZmlsdGVyTW9kZWwgPSBtb2RlbCBhcyBDb21iaW5lZFNpbXBsZU1vZGVsPFRleHRGaWx0ZXJNb2RlbD47XHJcbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGZpbHRlck1vZGVsLmNvbmRpdGlvbnMpIHtcclxuICAgICAgICAgIGZpbHRlclNlbGVjdGlvbkRhdGEucHVzaChlbGVtZW50LmZpbHRlcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKG1vZGVsKSB7XHJcbiAgICAgICAgLy8gQXNzdW1lIHRoZSBtb2RlbCBpcyBhIHNpbmdsZSBUZXh0IEZpbHRlciBNb2RlbFxyXG4gICAgICAgIGxldCBmaWx0ZXJTZWxlY3Rpb246IFRleHRGaWx0ZXJNb2RlbCA9IG1vZGVsO1xyXG4gICAgICAgIGZpbHRlclNlbGVjdGlvbkRhdGEucHVzaChmaWx0ZXJTZWxlY3Rpb24uZmlsdGVyKTtcclxuICAgICAgfVxyXG4gICAgICAvLyBTZXQgdGhlIGZpbHRlciBzZWxlY3Rpb25zXHJcbiAgICAgIHRoaXMuZmlsdGVyU2VsZWN0aW9uc1tpXSA9IGZpbHRlclNlbGVjdGlvbkRhdGE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogR2V0cyB0aGUgY291bnQgb2YgY3VycmVudCBmaWx0ZXIgc2VsZWN0aW9ucyAqL1xyXG4gIHByaXZhdGUgZ2V0RmlsdGVyQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmZpbHRlclNlbGVjdGlvbnMucmVkdWNlKChhY2MsIGN1cnIpID0+IGFjYy5jb25jYXQoY3VyciksIFtdKS5sZW5ndGg7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEV4cG9ydFRhYmxlRGF0YSB7XHJcbiAgdGFibGVIZWFkZXJzPzogQXJyYXk8S2V5VmFsUGFpcj47XHJcbiAgcm93RGF0YT86IEFycmF5PGFueT5cclxufVxyXG5cclxuaW50ZXJmYWNlIEtleVZhbFBhaXIgeyBcclxuICBrZXk/OiBzdHJpbmc7XHJcbiAgdmFsdWU/OiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKiBVc2VkIGZvciBzZXR0aW5nIGZpbHRlciB2YWx1ZXMgKi9cclxuY2xhc3MgU29mVGFibGVGaWx0ZXIge1xyXG4gIC8qKiBUaGUgY29sdW1uIGhlYWRlciAqL1xyXG4gIGhlYWRlcjogc3RyaW5nO1xyXG4gIC8qKiBUaGUgY29sdW1uIGxhYmVsIG9yIHRyYW5zbGF0aW9uIGtleSAqL1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgLyoqIFRoZSBjb2x1bW4gZmlsdGVyIG9wdGlvbnMgKi9cclxuICBvcHRpb25zOiBzdHJpbmdbXSA9IFtdO1xyXG59XHJcblxyXG4vKiogQSBmaWx0ZXIgY29tYmluaW5nIG11bHRpcGxlIGNvbmRpdGlvbnMsIHRha2VuIGZyb20gQWdHcmlkKi9cclxuY2xhc3MgQ29tYmluZWRTaW1wbGVNb2RlbDxUPiB7XHJcbiAgLyoqIFRoZSBmaWx0ZXIgdHlwZS4gVXN1YWxseSAndGV4dCcgKi9cclxuICBmaWx0ZXJUeXBlOiBzdHJpbmc7XHJcbiAgLyoqIFRoZSBvcGVyYXRvci4gVXN1YWxseSAnT1InICovXHJcbiAgb3BlcmF0b3I6ICdBTkQnIHwgJ09SJztcclxuICAvKiogbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSBGaWx0ZXIgTW9kZWwgKi9cclxuICBjb25kaXRpb25zOiBUW107XHJcbn1cclxuIiwiPGRpdiBcclxuICBbZnhTaG93XT1cImlzR3JpZERhdGFSZW5kZXJlZCgpXCJcclxuICBmeExheW91dEdhcD1cIjE2cHhcIiBtLWItMjQ+XHJcbiAgQGlmIChlbmFibGVGaWx0ZXIgJiYgY29sRmlsdGVycy5sZW5ndGgpIHtcclxuICAgIDxidXR0b24gXHJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVGaWx0ZXJQYW5lbCgpXCIgXHJcbiAgICAgIG1hdC1mbGF0LWJ1dHRvbiBjbGFzcz1cInNvZi1idXR0b24tdjJcIlxyXG4gICAgICB0aGVtZT1cIm5ldXRyYWxcIiBcclxuICAgICAgW2F0dHIuZW1waGFzaXNdPVwiZmlsdGVyT3BlblN0YXRlID8gJ3NvbGlkJyA6IGZpbHRlckNvdW50ID09PSAwID8gJ3NlY29uZGFyeScgOiAnY29udGFpbmVkJ1wiXHJcbiAgICAgIFttYXRCYWRnZV09XCJmaWx0ZXJDb3VudFwiXHJcbiAgICAgIG1hdEJhZGdlUG9zaXRpb249XCJhZnRlclwiXHJcbiAgICAgIFttYXRCYWRnZUhpZGRlbl09XCJmaWx0ZXJDb3VudCA9PT0gMCA/IHRydWUgOiBmYWxzZVwiPlxyXG4gICAgICA8aSBjbGFzcz1cInBoIHBoLWJvbGQgcGgtc2xpZGVycy1ob3Jpem9udGFsXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICB7eydhcm1hdHVyZS5zb2YtdGFibGUuZmlsdGVyJyB8IHRyYW5zbGF0ZX19XHJcbiAgICA8L2J1dHRvbj5cclxuICB9XHJcbiAgQGlmIChlbmFibGVTZWFyY2gpIHtcclxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInNvZi1mb3JtLWZpZWxkIHRhYmxlLXNlYXJjaC1maWVsZCBkZW5zZS00XCIgZnhGbGV4PVwiYXV0b1wiPlxyXG4gICAgICA8c3BhbiBtYXRQcmVmaXg+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJwaC1ib2xkIHBoLW1hZ25pZnlpbmctZ2xhc3Mgc2VhcmNoLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cInNlYXJjaC1sYWJlbFwiPnt7J2FybWF0dXJlLnNvZi10YWJsZS5zZWFyY2gnIHwgdHJhbnNsYXRlfX08L21hdC1sYWJlbD5cclxuICAgICAgPGlucHV0IFxyXG4gICAgICAgIChpbnB1dCk9XCJvblNlYXJjaFRleHRDaGFuZ2VkKClcIiBcclxuICAgICAgICAjZ3JpZFNlYXJjaFRleHRJbnB1dCBtYXRJbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwiZ3JpZFNlYXJjaFRleHRJbnB1dFwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInYXJtYXR1cmUuc29mLXRhYmxlLnNjcmVlbi1yZWFkZXIuc2VhcmNoLWZpbHRlci1kZXNjcmlwdGlvbicgfCB0cmFuc2xhdGVcIi8+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIH1cclxuICBAaWYgKGVuYWJsZUNvbHVtbk9wdGlvbnMpIHtcclxuICAgIDxidXR0b24gXHJcbiAgICAgIChjbGljayk9XCJvcGVuQ29sdW1uT3B0aW9ucygpXCJcclxuICAgICAgbWF0LWZsYXQtYnV0dG9uIGNsYXNzPVwic29mLWJ1dHRvbi1pY29uLXYyXCIgXHJcbiAgICAgIHRoZW1lPVwibmV1dHJhbFwiIGVtcGhhc2lzPVwic2Vjb25kYXJ5XCIgaWQ9XCJvcGVuLWNvbHVtbi1vcHRpb25zXCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInYXJtYXR1cmUuc29mLXRhYmxlLnNjcmVlbi1yZWFkZXIuY29sdW1uLW9wdGlvbnMtYnRuJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgIFttYXRUb29sdGlwXT1cIidhcm1hdHVyZS5zb2YtdGFibGUuc2NyZWVuLXJlYWRlci5jb2x1bW4tb3B0aW9ucy1idG4nIHwgdHJhbnNsYXRlXCJcclxuICAgICAgW2Rpc2FibGVkXT1cIiF0b3RhbExlbmd0aFwiPlxyXG4gICAgICA8aSBjbGFzcz1cInBoLWJvbGQgcGgtcGF1c2VcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICA8L2J1dHRvbj5cclxuICB9XHJcbiAgQGlmKGVuYWJsZUV4cG9ydCkge1xyXG4gICAgPGJ1dHRvbiBcclxuICAgICAgKGNsaWNrKT1cImV4cG9ydEZpbHRlcmVkUm93RGF0YSgpXCJcclxuICAgICAgbWF0LWZsYXQtYnV0dG9uIGNsYXNzPVwic29mLWJ1dHRvbi1pY29uLXYyXCIgXHJcbiAgICAgIHRoZW1lPVwibmV1dHJhbFwiIGVtcGhhc2lzPVwic2Vjb25kYXJ5XCIgaWQ9XCJleHBvcnQtdGFibGVcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidhcm1hdHVyZS5zb2YtdGFibGUuc2NyZWVuLXJlYWRlci5leHBvcnQtdGFibGUnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgW21hdFRvb2x0aXBdPVwiJ2FybWF0dXJlLnNvZi10YWJsZS5zY3JlZW4tcmVhZGVyLmV4cG9ydC10YWJsZScgfCB0cmFuc2xhdGVcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiIXRvdGFsTGVuZ3RoXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwicGgtYm9sZCBwaC1leHBvcnRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICA8L2J1dHRvbj5cclxuICB9XHJcbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NvZi10YWJsZS1yaWdodC1idXR0b25zXVwiPjwvbmctY29udGVudD5cclxuICA8IS0tIFxyXG4gIE9ubHkgaW5qZWN0IDxidXR0b24+J3MgaW5zaWRlIGFuIDxuZy1jb250YWluZXIgc29mLXRhYmxlLXJpZ2h0LWJ1dHRvbnM+XHJcbiAgLi4uIFxyXG4gIDxuZy1jb250YWluZXIgc29mLXRhYmxlLXJpZ2h0LWJ1dHRvbnM+XHJcbiAgICA8YnV0dG9uIFxyXG4gICAgICAoY2xpY2spPVwiYW55RnVuY3Rpb24oKVwiXHJcbiAgICAgIG1hdC1mbGF0LWJ1dHRvbiBjbGFzcz1cInNvZi1idXR0b24taWNvbi12MlwiIFxyXG4gICAgICB0aGVtZT1cIm5ldXRyYWxcIiBlbXBoYXNpcz1cInNlY29uZGFyeVwiIGFyaWEtbGFiZWw9XCJhbnkgYnV0dG9uXCJcclxuICAgICAgbWF0VG9vbHRpcD1cImFueSBidXR0b25cIj5cclxuICAgICAgPGkgY2xhc3M9XCJwaC1ib2xkIHBoLWFjb3JuXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgLi4uIFxyXG4gIG5vdGU6IG1ha2Ugc3VyZSBidXR0b25zIGhhdmUgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIHRvIG1hdGNoIG90aGVycyA9XHJcbiAgYG1hdC1mbGF0LWJ1dHRvbiBjbGFzcz1cInNvZi1idXR0b24taWNvbi12MlwiIHRoZW1lPVwibmV1dHJhbFwiIGVtcGhhc2lzPVwic2Vjb25kYXJ5XCJgXHJcbiAgKiByZW1lbWJlciB0byBhZGQgYXJpYS1sYWJlbCBhbmQgdG9vbHRpcCBmb3IgaWNvbiBidXR0b25cclxuICAtLT5cclxuPC9kaXY+XHJcblxyXG48ZGl2ICNhcmlhUmVzdWx0c0NvdW50IGNsYXNzPVwic3Itb25seVwiIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPjwvZGl2PlxyXG5cclxuQGlmIChpc0dyaWREYXRhUmVuZGVyZWQoKSAmJiBmaWx0ZXJPcGVuU3RhdGUpIHtcclxuICA8ZmllbGRzZXQgXHJcbiAgICBjbGFzcz1cImZpbHRlci1wYW5lbFwiIHJvbGU9XCJyZWdpb25cIlxyXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCInYXJtYXR1cmUuc29mLXRhYmxlLnNjcmVlbi1yZWFkZXIuc2VsZWN0LWZpbHRlcnMtZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlXCI+XHJcbiAgICA8cD5cclxuICAgICAgPGkgY2xhc3M9XCJwaCBwaC1ib2xkIHBoLXNsaWRlcnMtaG9yaXpvbnRhbFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJtLWwtOFwiPnt7J2FybWF0dXJlLnNvZi10YWJsZS5maWx0ZXInIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICA8L3A+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXBhbmVsLXNlbGVjdC1jb250YWluZXIgbS12LTIwXCI+XHJcbiAgICAgIEBmb3IgKGNvbEZpbHRlciBvZiBjb2xGaWx0ZXJzOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgaSkge1xyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwic29mLWZvcm0tZmllbGQgdGFibGUtZmlsdGVyLXNlbGVjdFwiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD57e2NvbEZpbHRlci5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8bWF0LXNlbGVjdCBcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWx0ZXJTZWxlY3Rpb25zW2ldXCIgXHJcbiAgICAgICAgICAgIG11bHRpcGxlIFxyXG4gICAgICAgICAgICBpZD1cImZpbHRlckRyb3Bkb3due3tpfX1cIlxyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J2FybWF0dXJlLnNvZi10YWJsZS5hbGwnIHwgdHJhbnNsYXRlfX1cIiBkaXNhYmxlUmlwcGxlPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICBAZm9yIChjb2xPcHRpb24gb2YgY29sRmlsdGVyLm9wdGlvbnM7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJjb2xPcHRpb25cIj5cclxuICAgICAgICAgICAgICAgIHt7Y29sT3B0aW9ufX1cclxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIj5cclxuICAgICAgPGRpdiBmeEZsZXg9XCI1MCVcIj5cclxuICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgKGNsaWNrKT1cImNsZWFyRmlsdGVycygpXCIgW2Rpc2FibGVkXT1cImhhc0VtcHR5RmlsdGVycygpXCIgXHJcbiAgICAgICAgICBtYXQtZmxhdC1idXR0b24gY2xhc3M9XCJzb2YtYnV0dG9uLXYyXCJcclxuICAgICAgICAgIHRoZW1lPVwibmV1dHJhbFwiIGVtcGhhc2lzPVwiZmxvYXRpbmdcIlxyXG4gICAgICAgICAgaWQ9XCJ0YWJsZUZpbHRlckNsZWFyXCI+XHJcbiAgICAgICAgICB7eydhcm1hdHVyZS5zb2YtdGFibGUucmVzZXQnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiNTAlXCI+XHJcbiAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMiVcIiBmeExheW91dEFsaWduPVwiZmxleC1lbmRcIj5cclxuICAgICAgICAgIDxkaXYgZnhGbGV4PVwiMCAxIGF1dG9cIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsRmlsdGVyQ2hhbmdlcygpXCIgbWF0LWZsYXQtYnV0dG9uIGNsYXNzPVwic29mLWJ1dHRvbi12MlwiIFxyXG4gICAgICAgICAgICAgIGlkPVwidGFibGVGaWx0ZXJDYW5jZWxcIiB0aGVtZT1cIm5ldXRyYWxcIiBlbXBoYXNpcz1cInNlY29uZGFyeVwiPlxyXG4gICAgICAgICAgICAgIHt7J2FybWF0dXJlLnNvZi10YWJsZS5jYW5jZWwnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgZnhGbGV4PVwiMCAxIGF1dG9cIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlGaWx0ZXJzKClcIiBtYXQtZmxhdC1idXR0b24gY2xhc3M9XCJzb2YtYnV0dG9uLXYyXCJcclxuICAgICAgICAgICAgICBpZD1cInRhYmxlRmlsdGVyQXBwbHlcIiB0aGVtZT1cInByaW1hcnlcIiBlbXBoYXNpcz1cInNvbGlkXCI+XHJcbiAgICAgICAgICAgICAge3snYXJtYXR1cmUuc29mLXRhYmxlLnJlc3VsdHMnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2ZpZWxkc2V0PlxyXG59XHJcblxyXG48YWctZ3JpZC1hbmd1bGFyIFxyXG4gIFtmeFNob3ddPVwiaXNHcmlkRGF0YVJlbmRlcmVkKClcIlxyXG4gIChncmlkUmVhZHkpPVwib25HcmlkUmVhZHkoJGV2ZW50KVwiIFxyXG4gIChmaXJzdERhdGFSZW5kZXJlZCk9XCJvbkZpcnN0RGF0YVJlbmRlcmVkKClcIlxyXG4gIChmaWx0ZXJDaGFuZ2VkKT1cIm9uRmlsdGVyQ2hhbmdlZCgpXCJcclxuICAocGFnaW5hdGlvbkNoYW5nZWQpPVwiY2hhbmdlUGFnZVNpemUoJGV2ZW50KVwiIFxyXG4gIFtyb3dEYXRhXT1cInJvd0RhdGFcIiBcclxuICBbY29sdW1uRGVmc109XCJjb2xEZWZzXCIgXHJcbiAgW2RlZmF1bHRDb2xEZWZdPVwiZGVmYXVsdENvbERlZlwiIFxyXG4gIFtwYWdpbmF0aW9uXT1cInRydWVcIiBcclxuICBbc3VwcHJlc3NQYWdpbmF0aW9uUGFuZWxdPVwidHJ1ZVwiXHJcbiAgW3BhZ2luYXRpb25QYWdlU2l6ZVNlbGVjdG9yXT1cInBhZ2luYXRpb25QYWdlU2l6ZVNlbGVjdG9yXCIgXHJcbiAgW3BhZ2luYXRpb25QYWdlU2l6ZV09XCJwYWdpbmF0aW9uUGFnZVNpemVcIlxyXG4gIFtoZWFkZXJIZWlnaHRdPVwicm93SGVpZ2h0XCIgXHJcbiAgW3Jvd0hlaWdodF09XCJyb3dIZWlnaHRcIiBcclxuICBbZG9tTGF5b3V0XT1cIidhdXRvSGVpZ2h0J1wiIFxyXG4gIFt0b29sdGlwU2hvd0RlbGF5XT1cInRvb2x0aXBTaG93RGVsYXlcIlxyXG4gIFtvdmVybGF5Tm9Sb3dzVGVtcGxhdGVdPVwiKCdhcm1hdHVyZS5zb2YtdGFibGUubm8tcm93cycgfCB0cmFuc2xhdGUpIHx8ICdObyByZXN1bHRzIGZvdW5kLidcIlxyXG4gIFtjbGFzcy5uby1yb3dzXT1cIiF0b3RhbExlbmd0aFwiXHJcbiAgY2xhc3M9XCJhZy10aGVtZS1tYXRlcmlhbFwiPlxyXG48L2FnLWdyaWQtYW5ndWxhcj5cclxuXHJcbjxkaXYgXHJcbiAgW2Z4U2hvd109XCJpc0dyaWREYXRhUmVuZGVyZWQoKSAmJiB0b3RhbExlbmd0aFwiXHJcbiAgY2xhc3M9XCJjdXN0b20tcGFnaW5hdG9yXCI+XHJcbiAgPGRpdiBjbGFzcz1cImZpcnN0LXNlY3Rpb25cIj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24tcGFydC0xXCIgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICA8bWF0LXNlbGVjdCBcclxuICAgICAgICAjcGFnZVNpemVTZWxlY3RcclxuICAgICAgICBpZD1cInBhZ2VTaXplSW5wdXRcIiBuYW1lPVwicGFnZVNpemVJbnB1dFwiIFxyXG4gICAgICAgIFsodmFsdWUpXT1cInBhZ2luYXRpb25QYWdlU2l6ZVwiIGRpc2FibGVSaXBwbGU9XCJ0cnVlXCI+XHJcbiAgICAgICAgQGZvciAoc2l6ZSBvZiBwYWdpbmF0aW9uUGFnZVNpemVTZWxlY3RvcjsgbGV0IGkgPSAkaW5kZXg7IHRyYWNrIGkpIHtcclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFxyXG4gICAgICAgICAgICBjbGFzcz1cInBhZ2Utb3B0aW9uXCIgaWQ9XCJzaXple3tpfX1cIlxyXG4gICAgICAgICAgICBbdmFsdWVdPVwicGFnaW5hdGlvblBhZ2VTaXplU2VsZWN0b3JbaV1cIj5cclxuICAgICAgICAgICAge3tzaXplfX1cclxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgPG1hdC1zZWxlY3QtdHJpZ2dlcj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnJlbnQtcGFnZVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFnZVwiPnt7cGFnaW5hdGlvblBhZ2VTaXplfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3QtaWNvblwiPlxyXG4gICAgICAgICAgICAgIDxpIFtjbGFzc109XCIncGgtYm9sZCBwaC1jYXJldC0nICsgKHBhZ2VTaXplU2VsZWN0LnBhbmVsT3BlbiA/ICd1cCc6J2Rvd24nKVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XHJcbiAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJwYWdlQ2hhbmdlVGV4dFwiPlxyXG4gICAgICB7e3BhZ2VDaGFuZ2VUZXh0fX0ge3snYXJtYXR1cmUuc29mLXRhYmxlLm9mJyB8IHRyYW5zbGF0ZX19IHt7dG90YWxMZW5ndGh9fVxyXG4gICAgPC9zcGFuPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJnby10by1wYWdlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwib3V0ZXItYm94XCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24tcGFydFwiIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICA8bWF0LXNlbGVjdCBcclxuICAgICAgICAgICNwYWdlTnVtYmVyU2VsZWN0XHJcbiAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uUGFnZU51bWJlckNoYW5nZSgkZXZlbnQudmFsdWUpXCJcclxuICAgICAgICAgIFsodmFsdWUpXT1cImN1cnJlbnRQYWdlXCIgXHJcbiAgICAgICAgICBpZD1cInBhZ2VTZWxlbGN0b3JcIiBuYW1lPVwicGFnZVNlbGVjdG9yXCIgZGlzYWJsZVJpcHBsZT1cInRydWVcIj5cclxuICAgICAgICAgIEBmb3IgKHBhZ2Ugb2YgcGFnZVNlbGVjdG9yOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInBhZ2VcIiBjbGFzcz1cInBhZ2Utb3B0aW9uXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJyZW50LXBhZ2VcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFnZVwiPnt7cGFnZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPG1hdC1zZWxlY3QtdHJpZ2dlcj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJyZW50LXBhZ2VcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFnZVwiPnt7Y3VycmVudFBhZ2V9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib2YtcGFnZVwiPiB7eydhcm1hdHVyZS5zb2YtdGFibGUub2YnIHwgdHJhbnNsYXRlfX0ge3t0b3RhbE51bWJlck9mUGFnZXN9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0LWljb25cIj5cclxuICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCIncGgtYm9sZCBwaC1jYXJldC0nICsgKHBhZ2VOdW1iZXJTZWxlY3QucGFuZWxPcGVuID8gJ3VwJzonZG93bicpXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L21hdC1zZWxlY3QtdHJpZ2dlcj5cclxuICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmF2IGNsYXNzPVwic2Vjb25kLXNlY3Rpb25cIj5cclxuICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAoY2xpY2spPVwicHJldmlvdXNQYWdlKClcIlxyXG4gICAgICAgIGlkPVwicHJldi1idXR0b25cIiBtYXQtZmxhdC1idXR0b24gY2xhc3M9XCJzb2YtYnV0dG9uLWljb24tdjJcIiB0aGVtZT1cIm5ldXRyYWxcIiBlbXBoYXNpcz1cInNlY29uZGFyeVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSAxXCIgXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInc2NyZWVuLXJlYWRlci5wYWdpbmF0aW9uLnByZXZpb3VzJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwicGgtYm9sZCBwaC1jYXJldC1sZWZ0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAoY2xpY2spPVwibmV4dFBhZ2UoKVwiIFxyXG4gICAgICAgIGlkPVwibmV4dC1idXR0b25cIiBtYXQtZmxhdC1idXR0b24gY2xhc3M9XCJzb2YtYnV0dG9uLWljb24tdjJcIiB0aGVtZT1cIm5ldXRyYWxcIiBlbXBoYXNpcz1cInNlY29uZGFyeVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlID09PSB0b3RhbE51bWJlck9mUGFnZXNcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3NjcmVlbi1yZWFkZXIucGFnaW5hdGlvbi5uZXh0JyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwicGgtYm9sZCBwaC1jYXJldC1yaWdodFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L25hdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG5AaWYgKCFpc0dyaWREYXRhUmVuZGVyZWQoKSkge1xyXG4gIDxkaXYgY2xhc3M9XCJsb2FkaW5nLWNvbnRhaW5lclwiPlxyXG4gICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyIGNvbG9yPVwicHJpbWFyeVwiIG1vZGU9XCJpbmRldGVybWluYXRlXCIvPlxyXG4gIDwvZGl2PlxyXG59XHJcbiJdfQ==
|