@eo-sdk/client 10.7.0-rc.5 → 11.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/eo-client/about-state/about-state.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/iframe-widget/iframe-widget.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-widget.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-widget.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/search-widget/search-widget.component.d.ts +1 -1
- package/app/eo-client/stored-queries-state/stored-queries-state.component.d.ts.map +1 -1
- package/app/eo-framework/accordion/simple-accordion/simple-accordion.component.d.ts +1 -1
- package/app/eo-framework/actions/action.module.d.ts.map +1 -1
- package/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/cancel-signing-action/cancel-signing/cancel-signing.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/clipboard/clipboard-object-action/clipboard-object-action.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/custom-actions/custom-actions.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/delete-action/delete/delete.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/delete-content-action/delete-content/delete-content.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/download-action/download-object-action/download-object-action.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/email/email/email.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/finalize/finalize-object-action/finalize-object-action.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/open-document-action/open-document-action.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/signature-action/sequence-list-item/sequence-list-item.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/workflow-action/simple-workflow-action.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/workflow-action/workflow/workflow.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/workflow-action/workflow-action.component.d.ts +1 -1
- package/app/eo-framework/app-shell/app-bar/app-bar.component.d.ts +1 -1
- package/app/eo-framework/app-shell/app-bar/context-search/context-search.component.d.ts +1 -1
- package/app/eo-framework/app-shell/app-bar/user-avatar-overlay/user-avatar-overlay.component.d.ts +1 -1
- package/app/eo-framework/cta/component/cta.component.d.ts +1 -1
- package/app/eo-framework/form-elements/checkbox/checkbox.component.d.ts +1 -1
- package/app/eo-framework/form-elements/codesystem/codesystem.component.d.ts +1 -1
- package/app/eo-framework/form-elements/date/date.component.d.ts +1 -1
- package/app/eo-framework/form-elements/date/year-range/year-range.directive.d.ts +1 -1
- package/app/eo-framework/form-elements/datetime-range/datetime-range.component.d.ts +1 -1
- package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts +1 -1
- package/app/eo-framework/form-elements/form-input/form-input.component.d.ts +1 -1
- package/app/eo-framework/form-elements/form-input/input-focus/input-focus.directive.d.ts +1 -1
- package/app/eo-framework/form-elements/id-reference/id-reference.component.d.ts +1 -1
- package/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.d.ts +1 -1
- package/app/eo-framework/form-elements/id-reference/reference-finder-entry/reference-finder-entry.component.d.ts +1 -1
- package/app/eo-framework/form-elements/number/number.component.d.ts +1 -1
- package/app/eo-framework/form-elements/number-range/number-range.component.d.ts +1 -1
- package/app/eo-framework/form-elements/organization/organization.component.d.ts +1 -1
- package/app/eo-framework/form-elements/password/password.component.d.ts +1 -1
- package/app/eo-framework/form-elements/reference/reference.component.d.ts +1 -1
- package/app/eo-framework/form-elements/string/string.component.d.ts +1 -1
- package/app/eo-framework/grid/column-configurator/column-configurator.component.d.ts +1 -1
- package/app/eo-framework/grid/extensions/custom-sort/custom-sort.component.d.ts +1 -1
- package/app/eo-framework/grid/extensions/custom-sort/custom-sort.component.d.ts.map +1 -1
- package/app/eo-framework/grid/extensions/filter/abstract-filter.component.d.ts +3 -3
- package/app/eo-framework/grid/extensions/filter/abstract-filter.component.d.ts.map +1 -1
- package/app/eo-framework/grid/extensions/filter/custom/custom-filter.component.d.ts +1 -1
- package/app/eo-framework/grid/extensions/filter/setFilters/set-filter.component.d.ts +1 -1
- package/app/eo-framework/grid/extensions/filter/text/text-filter.component.d.ts +3 -3
- package/app/eo-framework/grid/extensions/filter/text/text-filter.component.d.ts.map +1 -1
- package/app/eo-framework/grid/extensions/pagination/pagination.component.d.ts +1 -1
- package/app/eo-framework/grid/extensions/quick-filter/quick-filter.component.d.ts +1 -1
- package/app/eo-framework/grid/extensions/reset-filter/reset-filter.component.d.ts +1 -1
- package/app/eo-framework/grid/extensions/total-count/total-count.component.d.ts +1 -1
- package/app/eo-framework/grid/filters/datetime-filter.component.d.ts.map +1 -1
- package/app/eo-framework/grid/grid.component.d.ts +6 -17
- package/app/eo-framework/grid/grid.component.d.ts.map +1 -1
- package/app/eo-framework/grid/grid.module.d.ts +0 -3
- package/app/eo-framework/grid/grid.module.d.ts.map +1 -1
- package/app/eo-framework/grid/row-grouping/batchRemover.d.ts +13 -0
- package/app/eo-framework/grid/row-grouping/batchRemover.d.ts.map +1 -0
- package/app/eo-framework/grid/row-grouping/group-stage.d.ts +14 -14
- package/app/eo-framework/grid/row-grouping/group-stage.d.ts.map +1 -1
- package/app/eo-framework/grid/row-grouping/row-grouping.module.d.ts +1 -0
- package/app/eo-framework/grid/row-grouping/row-grouping.module.d.ts.map +1 -1
- package/app/eo-framework/inbox-details/duetimeInfo/duetimeInfo.component.d.ts +1 -1
- package/app/eo-framework/inbox-details/inbox-details.component.d.ts +1 -1
- package/app/eo-framework/list-container/list-container.component.d.ts +1 -1
- package/app/eo-framework/media/media.component.d.ts +1 -1
- package/app/eo-framework/object-details/edit-icon/edit-icon.component.d.ts +1 -1
- package/app/eo-framework/object-details/favorite-icon/favorite-icon.component.d.ts +1 -1
- package/app/eo-framework/object-details/object-details.component.d.ts +1 -1
- package/app/eo-framework/object-details/object-history/history-filter/history-filter.component.d.ts +1 -1
- package/app/eo-framework/object-details/object-history/object-history.component.d.ts +1 -1
- package/app/eo-framework/object-details/object-links/object-links.component.d.ts +1 -1
- package/app/eo-framework/object-form/object-form/form-element/form-element-template.directive.d.ts +1 -1
- package/app/eo-framework/object-form/object-form/form-element/form-element.component.d.ts +1 -1
- package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts +4 -1
- package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.d.ts +1 -1
- package/app/eo-framework/object-form/object-form/object-form-group/object-form-group.component.d.ts +1 -1
- package/app/eo-framework/object-form/object-form/object-form.component.d.ts +1 -1
- package/app/eo-framework/object-form/object-form-edit/object-form-edit.component.d.ts +1 -1
- package/app/eo-framework/object-state-details/object-state-details.component.d.ts +1 -1
- package/app/eo-framework/plugins/plugin.component.d.ts +2 -2
- package/app/eo-framework/plugins/plugins.module.d.ts.map +1 -1
- package/app/eo-framework/prepare-details/prepare-content-exists-info/prepare-content-exists-info.component.d.ts +1 -1
- package/app/eo-framework/prepare-details/prepare-details.component.d.ts +1 -1
- package/app/eo-framework/process/details/process-details.component.d.ts +1 -1
- package/app/eo-framework/process/history/process-history.component.d.ts +1 -1
- package/app/eo-framework/process/process-file/process-file.component.d.ts +1 -1
- package/app/eo-framework/process-form/process-form.component.d.ts +1 -1
- package/app/eo-framework/quick-search/quick-search/quick-search.component.d.ts +1 -1
- package/app/eo-framework/recyclebin-details/recyclebin-details.component.d.ts +1 -1
- package/app/eo-framework/result-list/result-list.component.d.ts +1 -1
- package/app/eo-framework/settings/change-password/change-password-form/change-password-form.component.d.ts +1 -1
- package/app/eo-framework/settings/permissions/permissions.component.d.ts +1 -1
- package/app/eo-framework/shortcuts/global-shortcuts/global-shortcuts-section/global-shortcuts-section.component.d.ts +1 -1
- package/app/eo-framework/shortcuts/shortcuts.directive.d.ts +1 -1
- package/app/eo-framework/stored-query/stored-query/stored-query.component.d.ts +1 -1
- package/app/eo-framework/stored-query/stored-query-details/dynamic-property-switch/dynamic-property-switch.component.d.ts +1 -1
- package/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.d.ts +1 -1
- package/app/eo-framework/tree/tree-node/tree-node.component.d.ts +1 -1
- package/app/eo-framework/tree/tree.component.d.ts +1 -1
- package/app/eo-framework/ui/eo-dialog/eo-dialog.component.d.ts +1 -1
- package/app/eo-framework/ui/eo-icon/eo-icon.component.d.ts +1 -1
- package/app/eo-framework/ui/error-message/error-message.component.d.ts +1 -1
- package/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component.d.ts +1 -1
- package/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.d.ts +1 -1
- package/app/eo-framework/ui/loading-spinner/loading-spinner.component.d.ts +1 -1
- package/app/eo-framework/ui/overlay/overlay.component.d.ts +1 -1
- package/app/eo-framework/ui/query-scope-select/query-scope-select.component.d.ts +1 -1
- package/app/eo-framework/ui/rtl-aware/rtl-aware.directive.d.ts +1 -1
- package/app/eo-framework/ui/signature-tab/signature-tab.component.d.ts +1 -1
- package/app/eo-framework/ui/user-avatar/user-avatar.component.d.ts +1 -1
- package/app/eo-framework/upload-overlay/upload-overlay-guard.service.d.ts +2 -2
- package/app/eo-framework/upload-overlay/upload-overlay-guard.service.d.ts.map +1 -1
- package/app/eo-framework/util/directive/prevent-double-click.directive.d.ts +1 -1
- package/app/eo-framework-core/api/grid.service.d.ts +4 -3
- package/app/eo-framework-core/api/grid.service.d.ts.map +1 -1
- package/app/eo-framework-core/pending-changes/pending-changes-guard.service.d.ts +1 -2
- package/app/eo-framework-core/pending-changes/pending-changes-guard.service.d.ts.map +1 -1
- package/app/eo-framework-core/route-guards/auth/auth-guard.service.d.ts +2 -2
- package/app/eo-framework-core/route-guards/auth/auth-guard.service.d.ts.map +1 -1
- package/app/eo-framework-core/route-guards/capabilities/capabilities-guard.service.d.ts +2 -2
- package/app/eo-framework-core/route-guards/capabilities/capabilities-guard.service.d.ts.map +1 -1
- package/assets/_default/i18n/de.json +1 -0
- package/assets/_default/i18n/en.json +1 -0
- package/esm2022/app/eo-client/about-state/about-state.component.mjs +81 -0
- package/esm2022/app/eo-client/dashboard/dashboard.component.mjs +305 -0
- package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.mjs +288 -0
- package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.mjs +265 -0
- package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.mjs +121 -0
- package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.mjs +125 -0
- package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.mjs +192 -0
- package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.mjs +164 -0
- package/esm2022/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.mjs +59 -0
- package/{esm2020 → esm2022}/app/eo-client/dashboard/widgets/iframe-widget/iframe-widget.component.mjs +8 -8
- package/esm2022/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.mjs +60 -0
- package/esm2022/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-widget.component.mjs +42 -0
- package/esm2022/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.mjs +69 -0
- package/esm2022/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-widget.component.mjs +43 -0
- package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.mjs +116 -0
- package/esm2022/app/eo-client/dashboard/widgets/search-widget/search-widget.component.mjs +123 -0
- package/{esm2020 → esm2022}/app/eo-client/eo-client-routing.module.mjs +5 -5
- package/esm2022/app/eo-client/eo-client.module.mjs +170 -0
- package/esm2022/app/eo-client/favorite-state/favorite-state.component.mjs +150 -0
- package/esm2022/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +218 -0
- package/{esm2020 → esm2022}/app/eo-client/inbox-state/inbox-state-routing.module.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-client/inbox-state/inbox-state.module.mjs +13 -13
- package/esm2022/app/eo-client/login/login.component.mjs +111 -0
- package/esm2022/app/eo-client/notifications-state/notifications-state.component.mjs +227 -0
- package/esm2022/app/eo-client/object-state/object-state/object-state.component.mjs +342 -0
- package/{esm2020 → esm2022}/app/eo-client/object-state/object-state-routing.module.mjs +5 -5
- package/esm2022/app/eo-client/object-state/object-state-service/object-state.service.mjs +134 -0
- package/{esm2020 → esm2022}/app/eo-client/object-state/object-state.module.mjs +11 -11
- package/esm2022/app/eo-client/prepare-state/prepare-state/prepare-state.component.mjs +159 -0
- package/{esm2020 → esm2022}/app/eo-client/prepare-state/prepare-state-routing.module.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-client/prepare-state/prepare-state.module.mjs +15 -15
- package/esm2022/app/eo-client/process-state/process-state.component.mjs +330 -0
- package/esm2022/app/eo-client/recyclebin-state/recyclebin-state.component.mjs +150 -0
- package/esm2022/app/eo-client/result-state/result-state.component.mjs +71 -0
- package/esm2022/app/eo-client/settings/settings.component.mjs +287 -0
- package/esm2022/app/eo-client/stored-queries-state/stored-queries-state.component.mjs +209 -0
- package/esm2022/app/eo-client/version-state/version-state.component.mjs +142 -0
- package/{esm2020 → esm2022}/app/eo-framework/accordion/accordion.module.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/accordion/simple-accordion/simple-accordion.component.mjs +4 -4
- package/{esm2020 → esm2022}/app/eo-framework/actions/action-menu/action-component-anchor/action-component-anchor.directive.mjs +5 -5
- package/esm2022/app/eo-framework/actions/action-menu/action-menu.component.mjs +208 -0
- package/esm2022/app/eo-framework/actions/action-service/action.service.mjs +185 -0
- package/esm2022/app/eo-framework/actions/action-target.mjs +28 -0
- package/esm2022/app/eo-framework/actions/action.module.mjs +269 -0
- package/esm2022/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.mjs +201 -0
- package/esm2022/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission-action.mjs +50 -0
- package/esm2022/app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component.mjs +134 -0
- package/esm2022/app/eo-framework/actions/actions/add-subscription-action/add-subscription-action.mjs +50 -0
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/cancel-signing-action/cancel-signing/cancel-signing.component.mjs +6 -6
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/cancel-signing-action/cancel-signing-action.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/clipboard/clipboard-action.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/clipboard/clipboard-object-action/clipboard-object-action.component.mjs +95 -0
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/copy-action/copy-action.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/custom-actions/custom-actions.component.mjs +88 -0
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/cut-action/cut-action.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/delete-action/delete/delete.component.mjs +111 -0
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/delete-action/delete-action.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/delete-action/delete-prepared-action.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/delete-content-action/delete-content/delete-content.component.mjs +6 -6
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/delete-content-action/delete-content-action.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/download-action/download-action.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/download-action/download-object-action/download-object-action.component.mjs +6 -6
- package/esm2022/app/eo-framework/actions/actions/email/email/email.component.mjs +97 -0
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/email/email-action.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/favorite-action/favorite-action.mjs +76 -0
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/finalize/definalize-action.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/finalize/finalize-action.mjs +6 -6
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/finalize/finalize-object-action/finalize-object-action.component.mjs +6 -6
- package/esm2022/app/eo-framework/actions/actions/open-context-action/open-context-action.mjs +56 -0
- package/esm2022/app/eo-framework/actions/actions/open-document-action/open-document-action.component.mjs +69 -0
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/open-document-action/open-document-action.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/open-versions-action/open-versions-action.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/remove-subscription-action/remove-subscription-action.mjs +45 -0
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/restore-version-action/restore-version-action.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.mjs +89 -0
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/share-object-action/share-object-action.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.mjs +184 -0
- package/esm2022/app/eo-framework/actions/actions/signature-action/sequence-list-item/sequence-list-item.component.mjs +53 -0
- package/esm2022/app/eo-framework/actions/actions/signature-action/signature/signature.component.mjs +146 -0
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/signature-action/signature-action.component.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/unlock-action/unlock-action.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/update-resubmission-action/update-resubmission-action.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/workflow-action/simple-workflow-action.component.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/workflow-action/workflow/workflow.component.mjs +107 -0
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/workflow-action/workflow-action.component.mjs +5 -5
- package/esm2022/app/eo-framework/app-shell/app-bar/app-add/app-add-dialog/app-add-dialog.component.mjs +173 -0
- package/{esm2020 → esm2022}/app/eo-framework/app-shell/app-bar/app-add/app-add.component.mjs +5 -5
- package/esm2022/app/eo-framework/app-shell/app-bar/app-bar.component.mjs +203 -0
- package/esm2022/app/eo-framework/app-shell/app-bar/app-process/app-process.component.mjs +112 -0
- package/esm2022/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +793 -0
- package/esm2022/app/eo-framework/app-shell/app-bar/context-search/context-search.component.mjs +46 -0
- package/{esm2020 → esm2022}/app/eo-framework/app-shell/app-bar/side-bar/side-bar.component.mjs +6 -6
- package/esm2022/app/eo-framework/app-shell/app-bar/user-avatar-overlay/user-avatar-overlay.component.mjs +42 -0
- package/{esm2020 → esm2022}/app/eo-framework/app-shell/app-shell-routing.module.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/app-shell/app-shell.module.mjs +40 -40
- package/{esm2020 → esm2022}/app/eo-framework/cta/component/cta.component.mjs +4 -4
- package/{esm2020 → esm2022}/app/eo-framework/cta/cta.module.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/eo-framework.module.mjs +110 -110
- package/{esm2020 → esm2022}/app/eo-framework/error/error.module.mjs +9 -9
- package/{esm2020 → esm2022}/app/eo-framework/error/error404/error404.component.mjs +4 -4
- package/{esm2020 → esm2022}/app/eo-framework/error/not-found/not-found.component.mjs +5 -5
- package/esm2022/app/eo-framework/form-elements/checkbox/checkbox.component.mjs +62 -0
- package/esm2022/app/eo-framework/form-elements/codesystem/codesystem.component.mjs +312 -0
- package/esm2022/app/eo-framework/form-elements/date/date.component.mjs +101 -0
- package/esm2022/app/eo-framework/form-elements/date/year-range/year-range.directive.mjs +44 -0
- package/esm2022/app/eo-framework/form-elements/datetime-range/datetime-range.component.mjs +184 -0
- package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +303 -0
- package/{esm2020 → esm2022}/app/eo-framework/form-elements/form-elements.module.mjs +76 -76
- package/esm2022/app/eo-framework/form-elements/form-input/form-input.component.mjs +73 -0
- package/esm2022/app/eo-framework/form-elements/form-input/input-focus/input-focus.directive.mjs +35 -0
- package/esm2022/app/eo-framework/form-elements/id-reference/id-reference.component.mjs +252 -0
- package/esm2022/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.mjs +253 -0
- package/esm2022/app/eo-framework/form-elements/id-reference/reference-finder-entry/reference-finder-entry.component.mjs +33 -0
- package/esm2022/app/eo-framework/form-elements/id-reference/service/reference-finder.service.mjs +106 -0
- package/esm2022/app/eo-framework/form-elements/number/number.component.mjs +171 -0
- package/esm2022/app/eo-framework/form-elements/number-range/number-range.component.mjs +138 -0
- package/esm2022/app/eo-framework/form-elements/organization/organization.component.mjs +216 -0
- package/{esm2020 → esm2022}/app/eo-framework/form-elements/password/password.component.mjs +4 -4
- package/esm2022/app/eo-framework/form-elements/reference/reference.component.mjs +223 -0
- package/esm2022/app/eo-framework/form-elements/string/string.component.mjs +254 -0
- package/{esm2020 → esm2022}/app/eo-framework/frame/frame.component.mjs +5 -5
- package/esm2022/app/eo-framework/grid/column-configurator/column-configurator.component.mjs +211 -0
- package/esm2022/app/eo-framework/grid/extensions/custom-sort/custom-sort.component.mjs +83 -0
- package/{esm2020 → esm2022}/app/eo-framework/grid/extensions/empty/empty.component.mjs +4 -4
- package/esm2022/app/eo-framework/grid/extensions/filter/abstract-filter.component.mjs +65 -0
- package/esm2022/app/eo-framework/grid/extensions/filter/custom/custom-filter.component.mjs +82 -0
- package/esm2022/app/eo-framework/grid/extensions/filter/setFilters/set-filter.component.mjs +85 -0
- package/esm2022/app/eo-framework/grid/extensions/filter/text/text-filter.component.mjs +98 -0
- package/esm2022/app/eo-framework/grid/extensions/pagination/pagination.component.mjs +52 -0
- package/{esm2020 → esm2022}/app/eo-framework/grid/extensions/quick-filter/quick-filter.component.mjs +6 -6
- package/{esm2020 → esm2022}/app/eo-framework/grid/extensions/reset-filter/reset-filter.component.mjs +4 -4
- package/esm2022/app/eo-framework/grid/extensions/services/list-settings.service.mjs +42 -0
- package/esm2022/app/eo-framework/grid/extensions/total-count/total-count.component.mjs +36 -0
- package/esm2022/app/eo-framework/grid/filters/codesystem-filter.component.mjs +94 -0
- package/esm2022/app/eo-framework/grid/filters/datetime-filter.component.mjs +75 -0
- package/esm2022/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +96 -0
- package/esm2022/app/eo-framework/grid/filters/list-filter.component.mjs +54 -0
- package/esm2022/app/eo-framework/grid/filters/organization-filter.component.mjs +64 -0
- package/esm2022/app/eo-framework/grid/grid.component.mjs +420 -0
- package/esm2022/app/eo-framework/grid/grid.module.mjs +97 -0
- package/esm2022/app/eo-framework/grid/row-grouping/batchRemover.mjs +50 -0
- package/esm2022/app/eo-framework/grid/row-grouping/group-stage.mjs +623 -0
- package/{esm2020 → esm2022}/app/eo-framework/grid/row-grouping/row-grouping.module.mjs +2 -1
- package/{esm2020 → esm2022}/app/eo-framework/inbox-details/duetimeInfo/duetimeInfo.component.mjs +5 -5
- package/esm2022/app/eo-framework/inbox-details/inbox-details.component.mjs +457 -0
- package/esm2022/app/eo-framework/list-container/list-container.component.mjs +101 -0
- package/{esm2020 → esm2022}/app/eo-framework/list-container/list-container.module.mjs +7 -7
- package/esm2022/app/eo-framework/media/content-preview.service.mjs +42 -0
- package/esm2022/app/eo-framework/media/media.component.mjs +315 -0
- package/{esm2020 → esm2022}/app/eo-framework/media/media.module.mjs +13 -13
- package/{esm2020 → esm2022}/app/eo-framework/object-details/edit-icon/edit-icon.component.mjs +5 -5
- package/esm2022/app/eo-framework/object-details/favorite-icon/favorite-icon.component.mjs +104 -0
- package/esm2022/app/eo-framework/object-details/object-details.component.mjs +439 -0
- package/{esm2020 → esm2022}/app/eo-framework/object-details/object-details.module.mjs +42 -42
- package/esm2022/app/eo-framework/object-details/object-history/history-filter/history-filter-pipe/history-filter.pipe.mjs +32 -0
- package/{esm2020 → esm2022}/app/eo-framework/object-details/object-history/history-filter/history-filter.component.mjs +4 -4
- package/esm2022/app/eo-framework/object-details/object-history/object-history.component.mjs +82 -0
- package/esm2022/app/eo-framework/object-details/object-links/object-links.component.mjs +292 -0
- package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form/form-element/form-element-template.directive.mjs +5 -5
- package/esm2022/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +123 -0
- package/esm2022/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +639 -0
- package/esm2022/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +238 -0
- package/esm2022/app/eo-framework/object-form/object-form/form-validation/form-validation.mjs +40 -0
- package/esm2022/app/eo-framework/object-form/object-form/object-form-group/object-form-group.component.mjs +81 -0
- package/esm2022/app/eo-framework/object-form/object-form/object-form-script/object-form-script.service.mjs +113 -0
- package/esm2022/app/eo-framework/object-form/object-form/object-form-script/object-form-scripting-scope.mjs +267 -0
- package/esm2022/app/eo-framework/object-form/object-form/object-form.component.mjs +148 -0
- package/esm2022/app/eo-framework/object-form/object-form-edit/object-form-edit.component.mjs +216 -0
- package/esm2022/app/eo-framework/object-form/object-form-helper.service.mjs +717 -0
- package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form.module.mjs +37 -37
- package/esm2022/app/eo-framework/object-state-details/object-state-details.component.mjs +135 -0
- package/{esm2020 → esm2022}/app/eo-framework/plugins/plugin.component.mjs +16 -16
- package/{esm2020 → esm2022}/app/eo-framework/plugins/plugin.directive.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/plugins/plugin.service.mjs +6 -6
- package/esm2022/app/eo-framework/plugins/plugins.module.mjs +55 -0
- package/{esm2020 → esm2022}/app/eo-framework/prepare-details/prepare-content-exists-info/prepare-content-exists-info.component.mjs +4 -4
- package/esm2022/app/eo-framework/prepare-details/prepare-details.component.mjs +557 -0
- package/esm2022/app/eo-framework/process/details/process-details.component.mjs +226 -0
- package/{esm2020 → esm2022}/app/eo-framework/process/history/process-history.component.mjs +4 -4
- package/{esm2020 → esm2022}/app/eo-framework/process/process-file/process-file.component.mjs +6 -6
- package/esm2022/app/eo-framework/process-form/process-form.component.mjs +50 -0
- package/{esm2020 → esm2022}/app/eo-framework/process-form/process-form.module.mjs +11 -11
- package/esm2022/app/eo-framework/quick-search/quick-search/quick-search.component.mjs +220 -0
- package/{esm2020 → esm2022}/app/eo-framework/quick-search/quick-search.module.mjs +11 -11
- package/esm2022/app/eo-framework/recyclebin-details/recyclebin-details.component.mjs +271 -0
- package/esm2022/app/eo-framework/result-list/result-list.component.mjs +369 -0
- package/{esm2020 → esm2022}/app/eo-framework/result-list/result-list.module.mjs +11 -11
- package/esm2022/app/eo-framework/settings/change-password/change-password-form/change-password-form.component.mjs +125 -0
- package/{esm2020 → esm2022}/app/eo-framework/settings/permissions/permissions.component.mjs +4 -4
- package/{esm2020 → esm2022}/app/eo-framework/settings/settings.module.mjs +13 -13
- package/esm2022/app/eo-framework/shortcuts/global-shortcuts/global-shortcuts-section/global-shortcuts-section.component.mjs +65 -0
- package/esm2022/app/eo-framework/shortcuts/global-shortcuts/global-shortcuts.component.mjs +130 -0
- package/{esm2020 → esm2022}/app/eo-framework/shortcuts/shortcut.interface.mjs +1 -1
- package/{esm2020 → esm2022}/app/eo-framework/shortcuts/shortcuts.directive.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/shortcuts/shortcuts.module.mjs +9 -9
- package/esm2022/app/eo-framework/shortcuts/shortcuts.service.mjs +45 -0
- package/esm2022/app/eo-framework/stored-query/stored-query/stored-query.component.mjs +225 -0
- package/esm2022/app/eo-framework/stored-query/stored-query-details/dynamic-property-switch/dynamic-property-switch.component.mjs +46 -0
- package/esm2022/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.mjs +501 -0
- package/{esm2020 → esm2022}/app/eo-framework/stored-query/stored-query.module.mjs +20 -20
- package/{esm2020 → esm2022}/app/eo-framework/tree/tree-node/tree-node.component.mjs +5 -5
- package/esm2022/app/eo-framework/tree/tree.component.mjs +281 -0
- package/{esm2020 → esm2022}/app/eo-framework/tree/tree.module.mjs +7 -7
- package/{esm2020 → esm2022}/app/eo-framework/ui/animations/panel-loading.animation.mjs +1 -1
- package/esm2022/app/eo-framework/ui/clipboard/clipboard.component.mjs +159 -0
- package/esm2022/app/eo-framework/ui/eo-dialog/eo-dialog.component.mjs +130 -0
- package/esm2022/app/eo-framework/ui/eo-icon/eo-icon.component.mjs +119 -0
- package/esm2022/app/eo-framework/ui/error-message/error-message.component.mjs +33 -0
- package/{esm2020 → esm2022}/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component.mjs +4 -4
- package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.mjs +147 -0
- package/{esm2020 → esm2022}/app/eo-framework/ui/loading-spinner/loading-spinner.component.mjs +8 -8
- package/esm2022/app/eo-framework/ui/outside-click/outside-click.directive.mjs +60 -0
- package/esm2022/app/eo-framework/ui/overlay/overlay.component.mjs +71 -0
- package/{esm2020 → esm2022}/app/eo-framework/ui/query-scope-select/query-scope-select.component.mjs +5 -5
- package/esm2022/app/eo-framework/ui/router-link/router-link.directive.mjs +26 -0
- package/esm2022/app/eo-framework/ui/rtl-aware/rtl-aware.directive.mjs +57 -0
- package/esm2022/app/eo-framework/ui/signature-tab/signature-tab.component.mjs +32 -0
- package/{esm2020 → esm2022}/app/eo-framework/ui/ui.module.mjs +59 -59
- package/esm2022/app/eo-framework/ui/user-avatar/user-avatar.component.mjs +54 -0
- package/esm2022/app/eo-framework/upload-overlay/upload-overlay-guard.service.mjs +17 -0
- package/esm2022/app/eo-framework/upload-overlay/upload-overlay.component.mjs +397 -0
- package/{esm2020 → esm2022}/app/eo-framework/util/directive/prevent-double-click.directive.mjs +5 -5
- package/esm2022/app/eo-framework/util/directive/trap-focus.directive.mjs +69 -0
- package/esm2022/app/eo-framework/util/services/utilities.service.mjs +25 -0
- package/esm2022/app/eo-framework/util/sortable/order-by.pipe.mjs +48 -0
- package/{esm2020 → esm2022}/app/eo-framework/util/util.module.mjs +5 -5
- package/esm2022/app/eo-framework-core/agent/agent.service.mjs +178 -0
- package/esm2022/app/eo-framework-core/api/grid.service.mjs +732 -0
- package/esm2022/app/eo-framework-core/api/plugins.service.mjs +258 -0
- package/esm2022/app/eo-framework-core/empty-state/empty-state.service.mjs +53 -0
- package/esm2022/app/eo-framework-core/eo-framework-core.module.mjs +105 -0
- package/esm2022/app/eo-framework-core/error-handler/error-handler.service.mjs +89 -0
- package/esm2022/app/eo-framework-core/layout/layout.service.mjs +106 -0
- package/esm2022/app/eo-framework-core/location/location.service.mjs +146 -0
- package/esm2022/app/eo-framework-core/pending-changes/pending-changes-guard.service.mjs +18 -0
- package/esm2022/app/eo-framework-core/pending-changes/pending-changes.service.mjs +112 -0
- package/esm2022/app/eo-framework-core/pipes/filesize.pipe.mjs +30 -0
- package/{esm2020 → esm2022}/app/eo-framework-core/pipes/keys.pipe.mjs +4 -4
- package/esm2022/app/eo-framework-core/pipes/locale-date.pipe.mjs +63 -0
- package/esm2022/app/eo-framework-core/pipes/locale-number.pipe.mjs +109 -0
- package/{esm2020 → esm2022}/app/eo-framework-core/pipes/pipes.module.mjs +19 -19
- package/{esm2020 → esm2022}/app/eo-framework-core/pipes/safe-html.pipe.mjs +5 -5
- package/esm2022/app/eo-framework-core/references/reference.service.mjs +266 -0
- package/esm2022/app/eo-framework-core/route-guards/auth/auth-guard.service.mjs +29 -0
- package/esm2022/app/eo-framework-core/route-guards/capabilities/capabilities-guard.service.mjs +55 -0
- package/esm2022/app/eo-framework-core/search/app-search.service.mjs +387 -0
- package/esm2022/app/eo-framework-core/selection/selection.service.mjs +63 -0
- package/esm2022/app/eo-framework-core/title/page-title.service.mjs +42 -0
- package/{fesm2020 → fesm2022}/eo-sdk-client.mjs +2278 -2143
- package/fesm2022/eo-sdk-client.mjs.map +1 -0
- package/misc/scripts/copy-client-assets.js +1 -1
- package/package.json +31 -44
- package/styles.css +725 -550
- package/styles.scss +3 -3
- package/esm2020/app/eo-client/about-state/about-state.component.mjs +0 -81
- package/esm2020/app/eo-client/dashboard/dashboard.component.mjs +0 -305
- package/esm2020/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.mjs +0 -288
- package/esm2020/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.mjs +0 -265
- package/esm2020/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.mjs +0 -121
- package/esm2020/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.mjs +0 -125
- package/esm2020/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.mjs +0 -192
- package/esm2020/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.mjs +0 -164
- package/esm2020/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.mjs +0 -59
- package/esm2020/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.mjs +0 -60
- package/esm2020/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-widget.component.mjs +0 -42
- package/esm2020/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.mjs +0 -69
- package/esm2020/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-widget.component.mjs +0 -43
- package/esm2020/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.mjs +0 -116
- package/esm2020/app/eo-client/dashboard/widgets/search-widget/search-widget.component.mjs +0 -123
- package/esm2020/app/eo-client/eo-client.module.mjs +0 -170
- package/esm2020/app/eo-client/favorite-state/favorite-state.component.mjs +0 -150
- package/esm2020/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +0 -218
- package/esm2020/app/eo-client/login/login.component.mjs +0 -111
- package/esm2020/app/eo-client/notifications-state/notifications-state.component.mjs +0 -227
- package/esm2020/app/eo-client/object-state/object-state/object-state.component.mjs +0 -342
- package/esm2020/app/eo-client/object-state/object-state-service/object-state.service.mjs +0 -134
- package/esm2020/app/eo-client/prepare-state/prepare-state/prepare-state.component.mjs +0 -159
- package/esm2020/app/eo-client/process-state/process-state.component.mjs +0 -330
- package/esm2020/app/eo-client/recyclebin-state/recyclebin-state.component.mjs +0 -150
- package/esm2020/app/eo-client/result-state/result-state.component.mjs +0 -71
- package/esm2020/app/eo-client/settings/settings.component.mjs +0 -287
- package/esm2020/app/eo-client/stored-queries-state/stored-queries-state.component.mjs +0 -209
- package/esm2020/app/eo-client/version-state/version-state.component.mjs +0 -142
- package/esm2020/app/eo-framework/actions/action-menu/action-menu.component.mjs +0 -208
- package/esm2020/app/eo-framework/actions/action-service/action.service.mjs +0 -185
- package/esm2020/app/eo-framework/actions/action-target.mjs +0 -28
- package/esm2020/app/eo-framework/actions/action.module.mjs +0 -274
- package/esm2020/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.mjs +0 -201
- package/esm2020/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission-action.mjs +0 -50
- package/esm2020/app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component.mjs +0 -134
- package/esm2020/app/eo-framework/actions/actions/add-subscription-action/add-subscription-action.mjs +0 -50
- package/esm2020/app/eo-framework/actions/actions/clipboard/clipboard-object-action/clipboard-object-action.component.mjs +0 -95
- package/esm2020/app/eo-framework/actions/actions/custom-actions/custom-actions.component.mjs +0 -88
- package/esm2020/app/eo-framework/actions/actions/delete-action/delete/delete.component.mjs +0 -111
- package/esm2020/app/eo-framework/actions/actions/email/email/email.component.mjs +0 -97
- package/esm2020/app/eo-framework/actions/actions/favorite-action/favorite-action.mjs +0 -76
- package/esm2020/app/eo-framework/actions/actions/open-context-action/open-context-action.mjs +0 -56
- package/esm2020/app/eo-framework/actions/actions/open-document-action/open-document-action.component.mjs +0 -69
- package/esm2020/app/eo-framework/actions/actions/remove-subscription-action/remove-subscription-action.mjs +0 -45
- package/esm2020/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.mjs +0 -89
- package/esm2020/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.mjs +0 -184
- package/esm2020/app/eo-framework/actions/actions/signature-action/sequence-list-item/sequence-list-item.component.mjs +0 -53
- package/esm2020/app/eo-framework/actions/actions/signature-action/signature/signature.component.mjs +0 -146
- package/esm2020/app/eo-framework/actions/actions/workflow-action/workflow/workflow.component.mjs +0 -107
- package/esm2020/app/eo-framework/app-shell/app-bar/app-add/app-add-dialog/app-add-dialog.component.mjs +0 -173
- package/esm2020/app/eo-framework/app-shell/app-bar/app-bar.component.mjs +0 -203
- package/esm2020/app/eo-framework/app-shell/app-bar/app-process/app-process.component.mjs +0 -112
- package/esm2020/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +0 -793
- package/esm2020/app/eo-framework/app-shell/app-bar/context-search/context-search.component.mjs +0 -46
- package/esm2020/app/eo-framework/app-shell/app-bar/user-avatar-overlay/user-avatar-overlay.component.mjs +0 -42
- package/esm2020/app/eo-framework/form-elements/checkbox/checkbox.component.mjs +0 -62
- package/esm2020/app/eo-framework/form-elements/codesystem/codesystem.component.mjs +0 -312
- package/esm2020/app/eo-framework/form-elements/date/date.component.mjs +0 -101
- package/esm2020/app/eo-framework/form-elements/date/year-range/year-range.directive.mjs +0 -44
- package/esm2020/app/eo-framework/form-elements/datetime-range/datetime-range.component.mjs +0 -184
- package/esm2020/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +0 -303
- package/esm2020/app/eo-framework/form-elements/form-input/form-input.component.mjs +0 -73
- package/esm2020/app/eo-framework/form-elements/form-input/input-focus/input-focus.directive.mjs +0 -35
- package/esm2020/app/eo-framework/form-elements/id-reference/id-reference.component.mjs +0 -252
- package/esm2020/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.mjs +0 -253
- package/esm2020/app/eo-framework/form-elements/id-reference/reference-finder-entry/reference-finder-entry.component.mjs +0 -33
- package/esm2020/app/eo-framework/form-elements/id-reference/service/reference-finder.service.mjs +0 -106
- package/esm2020/app/eo-framework/form-elements/number/number.component.mjs +0 -171
- package/esm2020/app/eo-framework/form-elements/number-range/number-range.component.mjs +0 -138
- package/esm2020/app/eo-framework/form-elements/organization/organization.component.mjs +0 -216
- package/esm2020/app/eo-framework/form-elements/reference/reference.component.mjs +0 -223
- package/esm2020/app/eo-framework/form-elements/string/string.component.mjs +0 -254
- package/esm2020/app/eo-framework/grid/column-configurator/column-configurator.component.mjs +0 -211
- package/esm2020/app/eo-framework/grid/extensions/custom-sort/custom-sort.component.mjs +0 -83
- package/esm2020/app/eo-framework/grid/extensions/filter/abstract-filter.component.mjs +0 -65
- package/esm2020/app/eo-framework/grid/extensions/filter/custom/custom-filter.component.mjs +0 -82
- package/esm2020/app/eo-framework/grid/extensions/filter/setFilters/set-filter.component.mjs +0 -85
- package/esm2020/app/eo-framework/grid/extensions/filter/text/text-filter.component.mjs +0 -98
- package/esm2020/app/eo-framework/grid/extensions/pagination/pagination.component.mjs +0 -52
- package/esm2020/app/eo-framework/grid/extensions/services/list-settings.service.mjs +0 -42
- package/esm2020/app/eo-framework/grid/extensions/total-count/total-count.component.mjs +0 -36
- package/esm2020/app/eo-framework/grid/filters/codesystem-filter.component.mjs +0 -94
- package/esm2020/app/eo-framework/grid/filters/datetime-filter.component.mjs +0 -75
- package/esm2020/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +0 -96
- package/esm2020/app/eo-framework/grid/filters/list-filter.component.mjs +0 -54
- package/esm2020/app/eo-framework/grid/filters/organization-filter.component.mjs +0 -64
- package/esm2020/app/eo-framework/grid/grid.component.mjs +0 -421
- package/esm2020/app/eo-framework/grid/grid.module.mjs +0 -107
- package/esm2020/app/eo-framework/grid/row-grouping/group-stage.mjs +0 -528
- package/esm2020/app/eo-framework/inbox-details/inbox-details.component.mjs +0 -457
- package/esm2020/app/eo-framework/list-container/list-container.component.mjs +0 -101
- package/esm2020/app/eo-framework/media/content-preview.service.mjs +0 -42
- package/esm2020/app/eo-framework/media/media.component.mjs +0 -314
- package/esm2020/app/eo-framework/object-details/favorite-icon/favorite-icon.component.mjs +0 -104
- package/esm2020/app/eo-framework/object-details/object-details.component.mjs +0 -439
- package/esm2020/app/eo-framework/object-details/object-history/history-filter/history-filter-pipe/history-filter.pipe.mjs +0 -32
- package/esm2020/app/eo-framework/object-details/object-history/object-history.component.mjs +0 -82
- package/esm2020/app/eo-framework/object-details/object-links/object-links.component.mjs +0 -292
- package/esm2020/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +0 -123
- package/esm2020/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +0 -634
- package/esm2020/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +0 -238
- package/esm2020/app/eo-framework/object-form/object-form/form-validation/form-validation.mjs +0 -40
- package/esm2020/app/eo-framework/object-form/object-form/object-form-group/object-form-group.component.mjs +0 -81
- package/esm2020/app/eo-framework/object-form/object-form/object-form-script/object-form-script.service.mjs +0 -113
- package/esm2020/app/eo-framework/object-form/object-form/object-form-script/object-form-scripting-scope.mjs +0 -267
- package/esm2020/app/eo-framework/object-form/object-form/object-form.component.mjs +0 -148
- package/esm2020/app/eo-framework/object-form/object-form-edit/object-form-edit.component.mjs +0 -216
- package/esm2020/app/eo-framework/object-form/object-form-helper.service.mjs +0 -717
- package/esm2020/app/eo-framework/object-state-details/object-state-details.component.mjs +0 -134
- package/esm2020/app/eo-framework/plugins/plugins.module.mjs +0 -59
- package/esm2020/app/eo-framework/prepare-details/prepare-details.component.mjs +0 -557
- package/esm2020/app/eo-framework/process/details/process-details.component.mjs +0 -226
- package/esm2020/app/eo-framework/process-form/process-form.component.mjs +0 -50
- package/esm2020/app/eo-framework/quick-search/quick-search/quick-search.component.mjs +0 -220
- package/esm2020/app/eo-framework/recyclebin-details/recyclebin-details.component.mjs +0 -271
- package/esm2020/app/eo-framework/result-list/result-list.component.mjs +0 -368
- package/esm2020/app/eo-framework/settings/change-password/change-password-form/change-password-form.component.mjs +0 -125
- package/esm2020/app/eo-framework/shortcuts/global-shortcuts/global-shortcuts-section/global-shortcuts-section.component.mjs +0 -65
- package/esm2020/app/eo-framework/shortcuts/global-shortcuts/global-shortcuts.component.mjs +0 -130
- package/esm2020/app/eo-framework/shortcuts/shortcuts.service.mjs +0 -45
- package/esm2020/app/eo-framework/stored-query/stored-query/stored-query.component.mjs +0 -225
- package/esm2020/app/eo-framework/stored-query/stored-query-details/dynamic-property-switch/dynamic-property-switch.component.mjs +0 -46
- package/esm2020/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.mjs +0 -501
- package/esm2020/app/eo-framework/tree/tree.component.mjs +0 -281
- package/esm2020/app/eo-framework/ui/clipboard/clipboard.component.mjs +0 -159
- package/esm2020/app/eo-framework/ui/eo-dialog/eo-dialog.component.mjs +0 -130
- package/esm2020/app/eo-framework/ui/eo-icon/eo-icon.component.mjs +0 -119
- package/esm2020/app/eo-framework/ui/error-message/error-message.component.mjs +0 -33
- package/esm2020/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.mjs +0 -146
- package/esm2020/app/eo-framework/ui/outside-click/outside-click.directive.mjs +0 -60
- package/esm2020/app/eo-framework/ui/overlay/overlay.component.mjs +0 -71
- package/esm2020/app/eo-framework/ui/router-link/router-link.directive.mjs +0 -26
- package/esm2020/app/eo-framework/ui/rtl-aware/rtl-aware.directive.mjs +0 -57
- package/esm2020/app/eo-framework/ui/signature-tab/signature-tab.component.mjs +0 -32
- package/esm2020/app/eo-framework/ui/user-avatar/user-avatar.component.mjs +0 -54
- package/esm2020/app/eo-framework/upload-overlay/upload-overlay-guard.service.mjs +0 -17
- package/esm2020/app/eo-framework/upload-overlay/upload-overlay.component.mjs +0 -397
- package/esm2020/app/eo-framework/util/directive/trap-focus.directive.mjs +0 -69
- package/esm2020/app/eo-framework/util/services/utilities.service.mjs +0 -25
- package/esm2020/app/eo-framework/util/sortable/order-by.pipe.mjs +0 -48
- package/esm2020/app/eo-framework-core/agent/agent.service.mjs +0 -178
- package/esm2020/app/eo-framework-core/api/grid.service.mjs +0 -732
- package/esm2020/app/eo-framework-core/api/plugins.service.mjs +0 -258
- package/esm2020/app/eo-framework-core/empty-state/empty-state.service.mjs +0 -53
- package/esm2020/app/eo-framework-core/eo-framework-core.module.mjs +0 -105
- package/esm2020/app/eo-framework-core/error-handler/error-handler.service.mjs +0 -89
- package/esm2020/app/eo-framework-core/layout/layout.service.mjs +0 -106
- package/esm2020/app/eo-framework-core/location/location.service.mjs +0 -146
- package/esm2020/app/eo-framework-core/pending-changes/pending-changes-guard.service.mjs +0 -18
- package/esm2020/app/eo-framework-core/pending-changes/pending-changes.service.mjs +0 -112
- package/esm2020/app/eo-framework-core/pipes/filesize.pipe.mjs +0 -30
- package/esm2020/app/eo-framework-core/pipes/locale-date.pipe.mjs +0 -63
- package/esm2020/app/eo-framework-core/pipes/locale-number.pipe.mjs +0 -109
- package/esm2020/app/eo-framework-core/references/reference.service.mjs +0 -266
- package/esm2020/app/eo-framework-core/route-guards/auth/auth-guard.service.mjs +0 -29
- package/esm2020/app/eo-framework-core/route-guards/capabilities/capabilities-guard.service.mjs +0 -55
- package/esm2020/app/eo-framework-core/search/app-search.service.mjs +0 -387
- package/esm2020/app/eo-framework-core/selection/selection.service.mjs +0 -63
- package/esm2020/app/eo-framework-core/title/page-title.service.mjs +0 -42
- package/esm2020/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.mjs +0 -5
- package/esm2020/projects/eo-sdk/core/lib/config/core-config.mjs +0 -23
- package/esm2020/projects/eo-sdk/core/lib/config/core-init.service.mjs +0 -71
- package/esm2020/projects/eo-sdk/core/lib/config/core-init.tokens.mjs +0 -8
- package/esm2020/projects/eo-sdk/core/lib/config/initialize-module.mjs +0 -11
- package/esm2020/projects/eo-sdk/core/lib/config/missing-translation-handler.mjs +0 -15
- package/esm2020/projects/eo-sdk/core/lib/config/translate-json-loader.mjs +0 -130
- package/esm2020/projects/eo-sdk/core/lib/environment.enaio.mjs +0 -12
- package/esm2020/projects/eo-sdk/core/lib/eo-core-shared.module.mjs +0 -24
- package/esm2020/projects/eo-sdk/core/lib/eo-core.module.mjs +0 -117
- package/esm2020/projects/eo-sdk/core/lib/interface/change-password.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/interface/event.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/interface/http-options.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/interface/logger.interface.mjs +0 -7
- package/esm2020/projects/eo-sdk/core/lib/interface/organization-objects.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/interface/tree-node.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/model/baseparams.model.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/model/bpm.model.mjs +0 -70
- package/esm2020/projects/eo-sdk/core/lib/model/custom-action.model.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/model/dms-object-history.model.mjs +0 -30
- package/esm2020/projects/eo-sdk/core/lib/model/dms-object.model.mjs +0 -140
- package/esm2020/projects/eo-sdk/core/lib/model/eo-error.model.mjs +0 -37
- package/esm2020/projects/eo-sdk/core/lib/model/eo-user.model.mjs +0 -86
- package/esm2020/projects/eo-sdk/core/lib/model/inbox-item.model.mjs +0 -36
- package/esm2020/projects/eo-sdk/core/lib/model/object-type.model.mjs +0 -39
- package/esm2020/projects/eo-sdk/core/lib/model/org.model.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/model/prepared-item.model.mjs +0 -35
- package/esm2020/projects/eo-sdk/core/lib/model/range-value.model.mjs +0 -45
- package/esm2020/projects/eo-sdk/core/lib/model/upload-file-item.model.mjs +0 -17
- package/esm2020/projects/eo-sdk/core/lib/model/upload-target.model.mjs +0 -50
- package/esm2020/projects/eo-sdk/core/lib/model/work-item-history.model.mjs +0 -54
- package/esm2020/projects/eo-sdk/core/lib/service/auth/auth-interceptor.mjs +0 -29
- package/esm2020/projects/eo-sdk/core/lib/service/auth/auth-profile.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/auth/auth.service.mjs +0 -215
- package/esm2020/projects/eo-sdk/core/lib/service/auth/gateway-info.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/backend/backend.service.mjs +0 -358
- package/esm2020/projects/eo-sdk/core/lib/service/bpm/bpm.service.mjs +0 -286
- package/esm2020/projects/eo-sdk/core/lib/service/cache/app-cache.service.mjs +0 -117
- package/esm2020/projects/eo-sdk/core/lib/service/capabilities/capabilities.model.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/capabilities/capabilities.service.mjs +0 -60
- package/esm2020/projects/eo-sdk/core/lib/service/clipboard/clipboard-action.enum.mjs +0 -6
- package/esm2020/projects/eo-sdk/core/lib/service/clipboard/clipboard.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/clipboard/clipboard.service.mjs +0 -100
- package/esm2020/projects/eo-sdk/core/lib/service/config/config.enum.mjs +0 -6
- package/esm2020/projects/eo-sdk/core/lib/service/config/config.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/config/config.service.mjs +0 -135
- package/esm2020/projects/eo-sdk/core/lib/service/dms/dms.service.mjs +0 -507
- package/esm2020/projects/eo-sdk/core/lib/service/dms/dmsParams.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/events/event.service.mjs +0 -44
- package/esm2020/projects/eo-sdk/core/lib/service/events/events.mjs +0 -27
- package/esm2020/projects/eo-sdk/core/lib/service/inbox/inbox.service.mjs +0 -111
- package/esm2020/projects/eo-sdk/core/lib/service/logger/console-log.service.mjs +0 -41
- package/esm2020/projects/eo-sdk/core/lib/service/logger/logger.mjs +0 -47
- package/esm2020/projects/eo-sdk/core/lib/service/notifications/notifications.service.mjs +0 -136
- package/esm2020/projects/eo-sdk/core/lib/service/prepare/objectTypes.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/prepare/prepare.service.mjs +0 -305
- package/esm2020/projects/eo-sdk/core/lib/service/search/search-filter-type.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/search/search-query.model.mjs +0 -510
- package/esm2020/projects/eo-sdk/core/lib/service/search/search.service.mjs +0 -478
- package/esm2020/projects/eo-sdk/core/lib/service/signing/signing.service.mjs +0 -60
- package/esm2020/projects/eo-sdk/core/lib/service/storage/local-storage.service.mjs +0 -111
- package/esm2020/projects/eo-sdk/core/lib/service/stored-queries/stored-queries-subscription.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/stored-queries/stored-queries.service.mjs +0 -216
- package/esm2020/projects/eo-sdk/core/lib/service/stored-queries/stored-query.model.mjs +0 -98
- package/esm2020/projects/eo-sdk/core/lib/service/system/system.service.mjs +0 -345
- package/esm2020/projects/eo-sdk/core/lib/service/system/systemdefinition.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/system-status/system-status.service.mjs +0 -104
- package/esm2020/projects/eo-sdk/core/lib/service/system-status/system.status.enum.mjs +0 -9
- package/esm2020/projects/eo-sdk/core/lib/service/system-status/system.status.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/upload/upload.service.mjs +0 -46
- package/esm2020/projects/eo-sdk/core/lib/service/upload-registry/upload-registry.service.mjs +0 -83
- package/esm2020/projects/eo-sdk/core/lib/service/user/user.service.mjs +0 -399
- package/esm2020/projects/eo-sdk/core/lib/util/utils.mjs +0 -304
- package/esm2020/projects/eo-sdk/core/public_api.mjs +0 -85
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs +0 -6118
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs.map +0 -1
- package/fesm2015/eo-sdk-client.mjs +0 -27040
- package/fesm2015/eo-sdk-client.mjs.map +0 -1
- package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs +0 -6133
- package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs.map +0 -1
- package/fesm2020/eo-sdk-client.mjs.map +0 -1
- package/projects/eo-sdk/core/README.md +0 -113
- package/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.d.ts.map +0 -1
- package/projects/eo-sdk/core/index.d.ts +0 -6
- package/projects/eo-sdk/core/lib/config/core-config.d.ts +0 -14
- package/projects/eo-sdk/core/lib/config/core-config.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/config/core-init.service.d.ts +0 -33
- package/projects/eo-sdk/core/lib/config/core-init.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/config/core-init.tokens.d.ts +0 -8
- package/projects/eo-sdk/core/lib/config/core-init.tokens.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/config/initialize-module.d.ts +0 -7
- package/projects/eo-sdk/core/lib/config/initialize-module.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/config/missing-translation-handler.d.ts +0 -14
- package/projects/eo-sdk/core/lib/config/missing-translation-handler.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/config/translate-json-loader.d.ts +0 -21
- package/projects/eo-sdk/core/lib/config/translate-json-loader.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/environment.enaio.d.ts +0 -6
- package/projects/eo-sdk/core/lib/environment.enaio.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/eo-core-shared.module.d.ts +0 -12
- package/projects/eo-sdk/core/lib/eo-core-shared.module.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/eo-core.module.d.ts +0 -46
- package/projects/eo-sdk/core/lib/eo-core.module.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/interface/change-password.interface.d.ts +0 -8
- package/projects/eo-sdk/core/lib/interface/change-password.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/interface/event.interface.d.ts +0 -14
- package/projects/eo-sdk/core/lib/interface/event.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/interface/http-options.interface.d.ts +0 -17
- package/projects/eo-sdk/core/lib/interface/http-options.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/interface/logger.interface.d.ts +0 -20
- package/projects/eo-sdk/core/lib/interface/logger.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/interface/organization-objects.interface.d.ts +0 -20
- package/projects/eo-sdk/core/lib/interface/organization-objects.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/interface/tree-node.interface.d.ts +0 -24
- package/projects/eo-sdk/core/lib/interface/tree-node.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/baseparams.model.d.ts +0 -58
- package/projects/eo-sdk/core/lib/model/baseparams.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/bpm.model.d.ts +0 -253
- package/projects/eo-sdk/core/lib/model/bpm.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/custom-action.model.d.ts +0 -34
- package/projects/eo-sdk/core/lib/model/custom-action.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/dms-object-history.model.d.ts +0 -59
- package/projects/eo-sdk/core/lib/model/dms-object-history.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/dms-object.model.d.ts +0 -137
- package/projects/eo-sdk/core/lib/model/dms-object.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/eo-error.model.d.ts +0 -19
- package/projects/eo-sdk/core/lib/model/eo-error.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/eo-user.model.d.ts +0 -107
- package/projects/eo-sdk/core/lib/model/eo-user.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/inbox-item.model.d.ts +0 -71
- package/projects/eo-sdk/core/lib/model/inbox-item.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/object-type.model.d.ts +0 -125
- package/projects/eo-sdk/core/lib/model/object-type.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/org.model.d.ts +0 -94
- package/projects/eo-sdk/core/lib/model/org.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/prepared-item.model.d.ts +0 -190
- package/projects/eo-sdk/core/lib/model/prepared-item.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/range-value.model.d.ts +0 -22
- package/projects/eo-sdk/core/lib/model/range-value.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/upload-file-item.model.d.ts +0 -30
- package/projects/eo-sdk/core/lib/model/upload-file-item.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/upload-target.model.d.ts +0 -60
- package/projects/eo-sdk/core/lib/model/upload-target.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/work-item-history.model.d.ts +0 -52
- package/projects/eo-sdk/core/lib/model/work-item-history.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/auth/auth-interceptor.d.ts +0 -12
- package/projects/eo-sdk/core/lib/service/auth/auth-interceptor.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/auth/auth-profile.interface.d.ts +0 -23
- package/projects/eo-sdk/core/lib/service/auth/auth-profile.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/auth/auth.service.d.ts +0 -104
- package/projects/eo-sdk/core/lib/service/auth/auth.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/auth/gateway-info.interface.d.ts +0 -18
- package/projects/eo-sdk/core/lib/service/auth/gateway-info.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/backend/backend.service.d.ts +0 -209
- package/projects/eo-sdk/core/lib/service/backend/backend.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/bpm/bpm.service.d.ts +0 -150
- package/projects/eo-sdk/core/lib/service/bpm/bpm.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/cache/app-cache.service.d.ts +0 -59
- package/projects/eo-sdk/core/lib/service/cache/app-cache.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/capabilities/capabilities.model.d.ts +0 -54
- package/projects/eo-sdk/core/lib/service/capabilities/capabilities.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/capabilities/capabilities.service.d.ts +0 -35
- package/projects/eo-sdk/core/lib/service/capabilities/capabilities.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/clipboard/clipboard-action.enum.d.ts +0 -5
- package/projects/eo-sdk/core/lib/service/clipboard/clipboard-action.enum.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/clipboard/clipboard.interface.d.ts +0 -16
- package/projects/eo-sdk/core/lib/service/clipboard/clipboard.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/clipboard/clipboard.service.d.ts +0 -49
- package/projects/eo-sdk/core/lib/service/clipboard/clipboard.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/config/config.enum.d.ts +0 -5
- package/projects/eo-sdk/core/lib/service/config/config.enum.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/config/config.interface.d.ts +0 -55
- package/projects/eo-sdk/core/lib/service/config/config.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/config/config.service.d.ts +0 -80
- package/projects/eo-sdk/core/lib/service/config/config.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts +0 -286
- package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/dms/dmsParams.interface.d.ts +0 -13
- package/projects/eo-sdk/core/lib/service/dms/dmsParams.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/events/event.service.d.ts +0 -31
- package/projects/eo-sdk/core/lib/service/events/event.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/events/events.d.ts +0 -27
- package/projects/eo-sdk/core/lib/service/events/events.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/inbox/inbox.service.d.ts +0 -66
- package/projects/eo-sdk/core/lib/service/inbox/inbox.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/logger/console-log.service.d.ts +0 -20
- package/projects/eo-sdk/core/lib/service/logger/console-log.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/logger/logger.d.ts +0 -25
- package/projects/eo-sdk/core/lib/service/logger/logger.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/notifications/notifications.service.d.ts +0 -78
- package/projects/eo-sdk/core/lib/service/notifications/notifications.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/prepare/objectTypes.interface.d.ts +0 -9
- package/projects/eo-sdk/core/lib/service/prepare/objectTypes.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/prepare/prepare.service.d.ts +0 -189
- package/projects/eo-sdk/core/lib/service/prepare/prepare.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/search/search-filter-type.interface.d.ts +0 -10
- package/projects/eo-sdk/core/lib/service/search/search-filter-type.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/search/search-query.model.d.ts +0 -327
- package/projects/eo-sdk/core/lib/service/search/search-query.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/search/search.service.d.ts +0 -173
- package/projects/eo-sdk/core/lib/service/search/search.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/signing/signing.service.d.ts +0 -52
- package/projects/eo-sdk/core/lib/service/signing/signing.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/storage/local-storage.service.d.ts +0 -53
- package/projects/eo-sdk/core/lib/service/storage/local-storage.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/stored-queries/stored-queries-subscription.interface.d.ts +0 -15
- package/projects/eo-sdk/core/lib/service/stored-queries/stored-queries-subscription.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/stored-queries/stored-queries.service.d.ts +0 -108
- package/projects/eo-sdk/core/lib/service/stored-queries/stored-queries.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/stored-queries/stored-query.model.d.ts +0 -74
- package/projects/eo-sdk/core/lib/service/stored-queries/stored-query.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/system/system.service.d.ts +0 -125
- package/projects/eo-sdk/core/lib/service/system/system.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/system/systemdefinition.interface.d.ts +0 -53
- package/projects/eo-sdk/core/lib/service/system/systemdefinition.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/system-status/system-status.service.d.ts +0 -26
- package/projects/eo-sdk/core/lib/service/system-status/system-status.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/system-status/system.status.enum.d.ts +0 -8
- package/projects/eo-sdk/core/lib/service/system-status/system.status.enum.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/system-status/system.status.interface.d.ts +0 -8
- package/projects/eo-sdk/core/lib/service/system-status/system.status.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/upload/upload.service.d.ts +0 -28
- package/projects/eo-sdk/core/lib/service/upload/upload.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/upload-registry/upload-registry.service.d.ts +0 -50
- package/projects/eo-sdk/core/lib/service/upload-registry/upload-registry.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/user/user.service.d.ts +0 -216
- package/projects/eo-sdk/core/lib/service/user/user.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/util/utils.d.ts +0 -148
- package/projects/eo-sdk/core/lib/util/utils.d.ts.map +0 -1
- package/projects/eo-sdk/core/public_api.d.ts +0 -82
- package/projects/eo-sdk/core/public_api.d.ts.map +0 -1
- /package/{esm2020 → esm2022}/app/eo-client/dashboard/widgets/charts-widget/icharts.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-client/dashboard/widgets/count-objects-widget/count-objects.model.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox.model.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-client/dashboard/widgets/info-intray-widget/info-intray.model.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-client/inbox-state/inbox-state/inbox.types.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-client/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-client/notifications-state/notifications-state.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-client/object-state/object-state-service/object-state.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-client/settings/agent-lock-settings.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/accordion/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/actions/actions/signature-action/signature.model.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/actions/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/actions/interfaces/action-component.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/actions/interfaces/action-list-entry.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/actions/interfaces/action.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/actions/selection-range.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/animations/animations.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/app-shell/app-bar/app-search/app-search.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/app-shell/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/cta/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/error/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/form-elements/id-reference/animation/reference-finder.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/form-elements/id-reference/interface/reference-finder.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/form-elements/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/grid/extensions/filter/setFilters/set-filters.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/grid/filters/filesize-filter.component.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/grid/grid-filter.model.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/grid/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/grid/loader.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/list-container/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/media/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/object-details/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/object-details/object-history/history-filter/history-filter.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/object-form/form-status-changed-event.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/object-form/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form/form-element-table/form-element.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form/object-form-control-wrapper.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form/object-form-control.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form/object-form-group.model.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form/object-form-script/object-form-script.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form/object-form.model.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form-options.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/plugins/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/process/process-file/file-entry-permissions.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/quick-search/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/quick-search/quick-search/quick-search-result.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/result-list/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/settings/change-password/change-password.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/settings/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/shortcuts/global-shortcut-action.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/shortcuts/global-shortcut-component.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/shortcuts/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/stored-query/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/stored-query/stored-query-type-filter.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/stored-query/stored-query.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/tree/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/tree/tree.component.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/ui/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/util/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework-core/agent/agent.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework-core/api/model/dms-object.api.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework-core/empty-state/empty-state.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework-core/error-handler/error-keys.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework-core/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework-core/pending-changes/pending-changes-component.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/eo-sdk-client.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
|
@@ -0,0 +1,623 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { _, Autowired, Bean, BeanStub, RowNode } from "@ag-grid-community/core";
|
|
3
|
+
import { BatchRemover } from "./batchRemover";
|
|
4
|
+
let GroupStage = class GroupStage extends BeanStub {
|
|
5
|
+
execute(params) {
|
|
6
|
+
const details = this.createGroupingDetails(params);
|
|
7
|
+
if (details.transactions) {
|
|
8
|
+
this.handleTransaction(details);
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
const afterColsChanged = params.afterColumnsChanged === true;
|
|
12
|
+
this.shotgunResetEverything(details, afterColsChanged);
|
|
13
|
+
}
|
|
14
|
+
if (!details.usingTreeData) {
|
|
15
|
+
// we don't do group sorting for tree data
|
|
16
|
+
this.positionLeafsAndGroups(params.changedPath);
|
|
17
|
+
this.orderGroups(details);
|
|
18
|
+
}
|
|
19
|
+
this.selectableService.updateSelectableAfterGrouping();
|
|
20
|
+
}
|
|
21
|
+
positionLeafsAndGroups(changedPath) {
|
|
22
|
+
changedPath.forEachChangedNodeDepthFirst(group => {
|
|
23
|
+
if (group.childrenAfterGroup) {
|
|
24
|
+
const leafNodes = [];
|
|
25
|
+
const groupNodes = [];
|
|
26
|
+
let unbalancedNode;
|
|
27
|
+
group.childrenAfterGroup.forEach(row => {
|
|
28
|
+
if (!row.childrenAfterGroup?.length) {
|
|
29
|
+
leafNodes.push(row);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
if (row.key === '' && !unbalancedNode) {
|
|
33
|
+
unbalancedNode = row;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
groupNodes.push(row);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
if (unbalancedNode) {
|
|
41
|
+
groupNodes.push(unbalancedNode);
|
|
42
|
+
}
|
|
43
|
+
group.childrenAfterGroup = [...leafNodes, ...groupNodes];
|
|
44
|
+
}
|
|
45
|
+
}, false);
|
|
46
|
+
}
|
|
47
|
+
createGroupingDetails(params) {
|
|
48
|
+
const { rowNode, changedPath, rowNodeTransactions, rowNodeOrder } = params;
|
|
49
|
+
const usingTreeData = this.gridOptionsService.get('treeData');
|
|
50
|
+
const groupedCols = usingTreeData ? null : this.columnModel.getRowGroupColumns();
|
|
51
|
+
const details = {
|
|
52
|
+
// someone complained that the parent attribute was causing some change detection
|
|
53
|
+
// to break in an angular add-on. Taking the parent out breaks a cyclic dependency, hence this flag got introduced.
|
|
54
|
+
includeParents: !this.gridOptionsService.get('suppressParentsInRowNodes'),
|
|
55
|
+
expandByDefault: this.gridOptionsService.get('groupDefaultExpanded'),
|
|
56
|
+
groupedCols: groupedCols,
|
|
57
|
+
rootNode: rowNode,
|
|
58
|
+
pivotMode: this.columnModel.isPivotMode(),
|
|
59
|
+
groupedColCount: usingTreeData || !groupedCols ? 0 : groupedCols.length,
|
|
60
|
+
rowNodeOrder: rowNodeOrder,
|
|
61
|
+
transactions: rowNodeTransactions,
|
|
62
|
+
// if no transaction, then it's shotgun, changed path would be 'not active' at this point anyway
|
|
63
|
+
changedPath: changedPath,
|
|
64
|
+
groupAllowUnbalanced: this.gridOptionsService.get('groupAllowUnbalanced'),
|
|
65
|
+
isGroupOpenByDefault: this.gridOptionsService.getCallback('isGroupOpenByDefault'),
|
|
66
|
+
initialGroupOrderComparator: this.gridOptionsService.getCallback('initialGroupOrderComparator'),
|
|
67
|
+
usingTreeData: usingTreeData,
|
|
68
|
+
suppressGroupMaintainValueType: this.gridOptionsService.get('suppressGroupMaintainValueType'),
|
|
69
|
+
getDataPath: usingTreeData ? this.gridOptionsService.get('getDataPath') : undefined,
|
|
70
|
+
keyCreators: groupedCols?.map(column => column.getColDef().keyCreator) ?? []
|
|
71
|
+
};
|
|
72
|
+
return details;
|
|
73
|
+
}
|
|
74
|
+
handleTransaction(details) {
|
|
75
|
+
details.transactions.forEach(tran => {
|
|
76
|
+
// we don't allow batch remover for tree data as tree data uses Filler Nodes,
|
|
77
|
+
// and creating/deleting filler nodes needs to be done alongside the node deleting
|
|
78
|
+
// and moving. if we want to Batch Remover working with tree data then would need
|
|
79
|
+
// to consider how Filler Nodes would be impacted (it's possible that it can be easily
|
|
80
|
+
// modified to work, however for now I don't have the brain energy to work it all out).
|
|
81
|
+
const batchRemover = !details.usingTreeData ? new BatchRemover() : undefined;
|
|
82
|
+
// the order here of [add, remove, update] needs to be the same as in ClientSideNodeManager,
|
|
83
|
+
// as the order is important when a record with the same id is added and removed in the same
|
|
84
|
+
// transaction.
|
|
85
|
+
if (_.existsAndNotEmpty(tran.remove)) {
|
|
86
|
+
this.removeNodes(tran.remove, details, batchRemover);
|
|
87
|
+
}
|
|
88
|
+
if (_.existsAndNotEmpty(tran.update)) {
|
|
89
|
+
this.moveNodesInWrongPath(tran.update, details, batchRemover);
|
|
90
|
+
}
|
|
91
|
+
if (_.existsAndNotEmpty(tran.add)) {
|
|
92
|
+
this.insertNodes(tran.add, details, false);
|
|
93
|
+
}
|
|
94
|
+
// must flush here, and not allow another transaction to be applied,
|
|
95
|
+
// as each transaction must finish leaving the data in a consistent state.
|
|
96
|
+
if (batchRemover) {
|
|
97
|
+
const parentsWithChildrenRemoved = batchRemover.getAllParents().slice();
|
|
98
|
+
batchRemover.flush();
|
|
99
|
+
this.removeEmptyGroups(parentsWithChildrenRemoved, details);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
if (details.rowNodeOrder) {
|
|
103
|
+
this.sortChildren(details);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// this is used when doing delta updates, eg Redux, keeps nodes in right order
|
|
107
|
+
sortChildren(details) {
|
|
108
|
+
details.changedPath.forEachChangedNodeDepthFirst(node => {
|
|
109
|
+
if (!node.childrenAfterGroup) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
const didSort = _.sortRowNodesByOrder(node.childrenAfterGroup, details.rowNodeOrder);
|
|
113
|
+
if (didSort) {
|
|
114
|
+
details.changedPath.addParentNode(node);
|
|
115
|
+
}
|
|
116
|
+
}, false, true);
|
|
117
|
+
}
|
|
118
|
+
orderGroups(details) {
|
|
119
|
+
const comparator = details.initialGroupOrderComparator;
|
|
120
|
+
if (_.exists(comparator)) {
|
|
121
|
+
recursiveSort(details.rootNode);
|
|
122
|
+
}
|
|
123
|
+
function recursiveSort(rowNode) {
|
|
124
|
+
const doSort = _.exists(rowNode.childrenAfterGroup) &&
|
|
125
|
+
// we only want to sort groups, so we do not sort leafs (a leaf group has leafs as children)
|
|
126
|
+
!rowNode.leafGroup;
|
|
127
|
+
if (doSort) {
|
|
128
|
+
rowNode.childrenAfterGroup.sort((nodeA, nodeB) => comparator({ nodeA, nodeB }));
|
|
129
|
+
rowNode.childrenAfterGroup.forEach((childNode) => recursiveSort(childNode));
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
getExistingPathForNode(node, details) {
|
|
134
|
+
const res = [];
|
|
135
|
+
// when doing tree data, the node is part of the path,
|
|
136
|
+
// but when doing grid grouping, the node is not part of the path so we start with the parent.
|
|
137
|
+
let pointer = details.usingTreeData ? node : node.parent;
|
|
138
|
+
while (pointer && pointer !== details.rootNode) {
|
|
139
|
+
res.push({
|
|
140
|
+
key: pointer.key,
|
|
141
|
+
rowGroupColumn: pointer.rowGroupColumn,
|
|
142
|
+
field: pointer.field
|
|
143
|
+
});
|
|
144
|
+
pointer = pointer.parent;
|
|
145
|
+
}
|
|
146
|
+
res.reverse();
|
|
147
|
+
return res;
|
|
148
|
+
}
|
|
149
|
+
moveNodesInWrongPath(childNodes, details, batchRemover) {
|
|
150
|
+
childNodes.forEach(childNode => {
|
|
151
|
+
// we add node, even if parent has not changed, as the data could have
|
|
152
|
+
// changed, hence aggregations will be wrong
|
|
153
|
+
if (details.changedPath.isActive()) {
|
|
154
|
+
details.changedPath.addParentNode(childNode.parent);
|
|
155
|
+
}
|
|
156
|
+
const infoToKeyMapper = (item) => item.key;
|
|
157
|
+
const oldPath = this.getExistingPathForNode(childNode, details).map(infoToKeyMapper);
|
|
158
|
+
const newPath = this.getGroupInfo(childNode, details).map(infoToKeyMapper);
|
|
159
|
+
const nodeInCorrectPath = _.areEqual(oldPath, newPath);
|
|
160
|
+
if (!nodeInCorrectPath) {
|
|
161
|
+
this.moveNode(childNode, details, batchRemover);
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
moveNode(childNode, details, batchRemover) {
|
|
166
|
+
this.removeNodesInStages([childNode], details, batchRemover);
|
|
167
|
+
this.insertOneNode(childNode, details, true, batchRemover);
|
|
168
|
+
// hack - if we didn't do this, then renaming a tree item (ie changing rowNode.key) wouldn't get
|
|
169
|
+
// refreshed into the gui.
|
|
170
|
+
// this is needed to kick off the event that rowComp listens to for refresh. this in turn
|
|
171
|
+
// then will get each cell in the row to refresh - which is what we need as we don't know which
|
|
172
|
+
// columns will be displaying the rowNode.key info.
|
|
173
|
+
childNode.setData(childNode.data);
|
|
174
|
+
// we add both old and new parents to changed path, as both will need to be refreshed.
|
|
175
|
+
// we already added the old parent (in calling method), so just add the new parent here
|
|
176
|
+
if (details.changedPath.isActive()) {
|
|
177
|
+
const newParent = childNode.parent;
|
|
178
|
+
details.changedPath.addParentNode(newParent);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
removeNodes(leafRowNodes, details, batchRemover) {
|
|
182
|
+
this.removeNodesInStages(leafRowNodes, details, batchRemover);
|
|
183
|
+
if (details.changedPath.isActive()) {
|
|
184
|
+
leafRowNodes.forEach(rowNode => details.changedPath.addParentNode(rowNode.parent));
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
removeNodesInStages(leafRowNodes, details, batchRemover) {
|
|
188
|
+
this.removeNodesFromParents(leafRowNodes, details, batchRemover);
|
|
189
|
+
if (details.usingTreeData) {
|
|
190
|
+
this.postRemoveCreateFillerNodes(leafRowNodes, details);
|
|
191
|
+
// When not TreeData, then removeEmptyGroups is called just before the BatchRemover is flushed.
|
|
192
|
+
// However for TreeData, there is no BatchRemover, so we have to call removeEmptyGroups here.
|
|
193
|
+
const nodeParents = leafRowNodes.map(n => n.parent);
|
|
194
|
+
this.removeEmptyGroups(nodeParents, details);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
forEachParentGroup(details, group, callback) {
|
|
198
|
+
let pointer = group;
|
|
199
|
+
while (pointer && pointer !== details.rootNode) {
|
|
200
|
+
callback(pointer);
|
|
201
|
+
pointer = pointer.parent;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
removeNodesFromParents(nodesToRemove, details, provided) {
|
|
205
|
+
// this method can be called with BatchRemover as optional. if it is missed, we created a local version
|
|
206
|
+
// and flush it at the end. if one is provided, we add to the provided one and it gets flushed elsewhere.
|
|
207
|
+
const batchRemoverIsLocal = provided == null;
|
|
208
|
+
const batchRemoverToUse = provided ? provided : new BatchRemover();
|
|
209
|
+
nodesToRemove.forEach(nodeToRemove => {
|
|
210
|
+
this.removeFromParent(nodeToRemove, batchRemoverToUse);
|
|
211
|
+
// remove from allLeafChildren. we clear down all parents EXCEPT the Root Node, as
|
|
212
|
+
// the ClientSideNodeManager is responsible for the Root Node.
|
|
213
|
+
this.forEachParentGroup(details, nodeToRemove.parent, parentNode => {
|
|
214
|
+
batchRemoverToUse.removeFromAllLeafChildren(parentNode, nodeToRemove);
|
|
215
|
+
});
|
|
216
|
+
});
|
|
217
|
+
if (batchRemoverIsLocal) {
|
|
218
|
+
batchRemoverToUse.flush();
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
postRemoveCreateFillerNodes(nodesToRemove, details) {
|
|
222
|
+
nodesToRemove.forEach(nodeToRemove => {
|
|
223
|
+
// if not group, and children are present, need to move children to a group.
|
|
224
|
+
// otherwise if no children, we can just remove without replacing.
|
|
225
|
+
const replaceWithGroup = nodeToRemove.hasChildren();
|
|
226
|
+
if (replaceWithGroup) {
|
|
227
|
+
const oldPath = this.getExistingPathForNode(nodeToRemove, details);
|
|
228
|
+
// because we just removed the userGroup, this will always return new support group
|
|
229
|
+
const newGroupNode = this.findParentForNode(nodeToRemove, oldPath, details);
|
|
230
|
+
// these properties are the ones that will be incorrect in the newly created group,
|
|
231
|
+
// so copy them from the old childNode
|
|
232
|
+
newGroupNode.expanded = nodeToRemove.expanded;
|
|
233
|
+
newGroupNode.allLeafChildren = nodeToRemove.allLeafChildren;
|
|
234
|
+
newGroupNode.childrenAfterGroup = nodeToRemove.childrenAfterGroup;
|
|
235
|
+
newGroupNode.childrenMapped = nodeToRemove.childrenMapped;
|
|
236
|
+
newGroupNode.updateHasChildren();
|
|
237
|
+
newGroupNode.childrenAfterGroup.forEach(rowNode => rowNode.parent = newGroupNode);
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
removeEmptyGroups(possibleEmptyGroups, details) {
|
|
242
|
+
// we do this multiple times, as when we remove groups, that means the parent of just removed
|
|
243
|
+
// group can then be empty. to get around this, if we remove, then we check everything again for
|
|
244
|
+
// newly emptied groups. the max number of times this will execute is the depth of the group tree.
|
|
245
|
+
let checkAgain = true;
|
|
246
|
+
const groupShouldBeRemoved = (rowNode) => {
|
|
247
|
+
// because of the while loop below, it's possible we already moved the node,
|
|
248
|
+
// so double check before trying to remove again.
|
|
249
|
+
const mapKey = this.getChildrenMappedKey(rowNode.key, rowNode.rowGroupColumn);
|
|
250
|
+
const parentRowNode = rowNode.parent;
|
|
251
|
+
const groupAlreadyRemoved = (parentRowNode && parentRowNode.childrenMapped) ?
|
|
252
|
+
!parentRowNode.childrenMapped[mapKey] : true;
|
|
253
|
+
if (groupAlreadyRemoved) {
|
|
254
|
+
// if not linked, then group was already removed
|
|
255
|
+
return false;
|
|
256
|
+
}
|
|
257
|
+
// if still not removed, then we remove if this group is empty
|
|
258
|
+
return !!rowNode.isEmptyRowGroupNode();
|
|
259
|
+
};
|
|
260
|
+
while (checkAgain) {
|
|
261
|
+
checkAgain = false;
|
|
262
|
+
const batchRemover = new BatchRemover();
|
|
263
|
+
possibleEmptyGroups.forEach(possibleEmptyGroup => {
|
|
264
|
+
// remove empty groups
|
|
265
|
+
this.forEachParentGroup(details, possibleEmptyGroup, rowNode => {
|
|
266
|
+
if (groupShouldBeRemoved(rowNode)) {
|
|
267
|
+
checkAgain = true;
|
|
268
|
+
this.removeFromParent(rowNode, batchRemover);
|
|
269
|
+
// we remove selection on filler nodes here, as the selection would not be removed
|
|
270
|
+
// from the RowNodeManager, as filler nodes don't exist on the RowNodeManager
|
|
271
|
+
rowNode.setSelectedParams({ newValue: false, source: 'rowGroupChanged' });
|
|
272
|
+
}
|
|
273
|
+
});
|
|
274
|
+
});
|
|
275
|
+
batchRemover.flush();
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
// removes the node from the parent by:
|
|
279
|
+
// a) removing from childrenAfterGroup (using batchRemover if present, otherwise immediately)
|
|
280
|
+
// b) removing from childrenMapped (immediately)
|
|
281
|
+
// c) setRowTop(null) - as the rowRenderer uses this to know the RowNode is no longer needed
|
|
282
|
+
// d) setRowIndex(null) - as the rowNode will no longer be displayed.
|
|
283
|
+
removeFromParent(child, batchRemover) {
|
|
284
|
+
if (child.parent) {
|
|
285
|
+
if (batchRemover) {
|
|
286
|
+
batchRemover.removeFromChildrenAfterGroup(child.parent, child);
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
_.removeFromArray(child.parent.childrenAfterGroup, child);
|
|
290
|
+
child.parent.updateHasChildren();
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
const mapKey = this.getChildrenMappedKey(child.key, child.rowGroupColumn);
|
|
294
|
+
if (child.parent && child.parent.childrenMapped) {
|
|
295
|
+
child.parent.childrenMapped[mapKey] = undefined;
|
|
296
|
+
}
|
|
297
|
+
// this is important for transition, see rowComp removeFirstPassFuncs. when doing animation and
|
|
298
|
+
// remove, if rowTop is still present, the rowComp thinks it's just moved position.
|
|
299
|
+
child.setRowTop(null);
|
|
300
|
+
child.setRowIndex(null);
|
|
301
|
+
}
|
|
302
|
+
addToParent(child, parent) {
|
|
303
|
+
const mapKey = this.getChildrenMappedKey(child.key, child.rowGroupColumn);
|
|
304
|
+
if (parent) {
|
|
305
|
+
const children = parent.childrenMapped != null;
|
|
306
|
+
if (children) {
|
|
307
|
+
parent.childrenMapped[mapKey] = child;
|
|
308
|
+
}
|
|
309
|
+
parent.childrenAfterGroup.push(child);
|
|
310
|
+
parent.updateHasChildren();
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
areGroupColsEqual(d1, d2) {
|
|
314
|
+
if (d1 == null || d2 == null || d1.pivotMode !== d2.pivotMode) {
|
|
315
|
+
return false;
|
|
316
|
+
}
|
|
317
|
+
return _.areEqual(d1.groupedCols, d2.groupedCols) && _.areEqual(d1.keyCreators, d2.keyCreators);
|
|
318
|
+
}
|
|
319
|
+
checkAllGroupDataAfterColsChanged(details) {
|
|
320
|
+
const recurse = (rowNodes) => {
|
|
321
|
+
if (!rowNodes) {
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
rowNodes.forEach(rowNode => {
|
|
325
|
+
const isLeafNode = !details.usingTreeData && !rowNode.group;
|
|
326
|
+
if (isLeafNode) {
|
|
327
|
+
return;
|
|
328
|
+
}
|
|
329
|
+
const groupInfo = {
|
|
330
|
+
field: rowNode.field,
|
|
331
|
+
key: rowNode.key,
|
|
332
|
+
rowGroupColumn: rowNode.rowGroupColumn,
|
|
333
|
+
leafNode: rowNode.allLeafChildren[0],
|
|
334
|
+
};
|
|
335
|
+
this.setGroupData(rowNode, groupInfo, details);
|
|
336
|
+
recurse(rowNode.childrenAfterGroup);
|
|
337
|
+
});
|
|
338
|
+
};
|
|
339
|
+
recurse(details.rootNode.childrenAfterGroup);
|
|
340
|
+
}
|
|
341
|
+
shotgunResetEverything(details, afterColumnsChanged) {
|
|
342
|
+
if (this.noChangeInGroupingColumns(details, afterColumnsChanged)) {
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
// groups are about to get disposed, so need to deselect any that are selected
|
|
346
|
+
this.selectionService.filterFromSelection((node) => node && !node.group);
|
|
347
|
+
const { rootNode, groupedCols } = details;
|
|
348
|
+
// because we are not creating the root node each time, we have the logic
|
|
349
|
+
// here to change leafGroup once.
|
|
350
|
+
// we set .leafGroup to false for tree data, as .leafGroup is only used when pivoting, and pivoting
|
|
351
|
+
// isn't allowed with treeData, so the grid never actually use .leafGroup when doing treeData.
|
|
352
|
+
rootNode.leafGroup = details.usingTreeData ? false : groupedCols.length === 0;
|
|
353
|
+
// we are doing everything from scratch, so reset childrenAfterGroup and childrenMapped from the rootNode
|
|
354
|
+
rootNode.childrenAfterGroup = [];
|
|
355
|
+
rootNode.childrenMapped = {};
|
|
356
|
+
rootNode.updateHasChildren();
|
|
357
|
+
const sibling = rootNode.sibling;
|
|
358
|
+
if (sibling) {
|
|
359
|
+
sibling.childrenAfterGroup = rootNode.childrenAfterGroup;
|
|
360
|
+
sibling.childrenMapped = rootNode.childrenMapped;
|
|
361
|
+
}
|
|
362
|
+
this.insertNodes(rootNode.allLeafChildren, details, false);
|
|
363
|
+
}
|
|
364
|
+
noChangeInGroupingColumns(details, afterColumnsChanged) {
|
|
365
|
+
let noFurtherProcessingNeeded = false;
|
|
366
|
+
const groupDisplayColumns = this.columnModel.getGroupDisplayColumns();
|
|
367
|
+
const newGroupDisplayColIds = groupDisplayColumns ?
|
|
368
|
+
groupDisplayColumns.map(c => c.getId()).join('-') : '';
|
|
369
|
+
if (afterColumnsChanged) {
|
|
370
|
+
// we only need to redo grouping if doing normal grouping (ie not tree data)
|
|
371
|
+
// and the group cols have changed.
|
|
372
|
+
noFurtherProcessingNeeded = details.usingTreeData || this.areGroupColsEqual(details, this.oldGroupingDetails);
|
|
373
|
+
// if the group display cols have changed, then we need to update rowNode.groupData
|
|
374
|
+
// (regardless of tree data or row grouping)
|
|
375
|
+
if (this.oldGroupDisplayColIds !== newGroupDisplayColIds) {
|
|
376
|
+
this.checkAllGroupDataAfterColsChanged(details);
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
this.oldGroupingDetails = details;
|
|
380
|
+
this.oldGroupDisplayColIds = newGroupDisplayColIds;
|
|
381
|
+
return noFurtherProcessingNeeded;
|
|
382
|
+
}
|
|
383
|
+
insertNodes(newRowNodes, details, isMove) {
|
|
384
|
+
newRowNodes.forEach(rowNode => {
|
|
385
|
+
this.insertOneNode(rowNode, details, isMove);
|
|
386
|
+
if (details.changedPath.isActive()) {
|
|
387
|
+
details.changedPath.addParentNode(rowNode.parent);
|
|
388
|
+
}
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
insertOneNode(childNode, details, isMove, batchRemover) {
|
|
392
|
+
const path = this.getGroupInfo(childNode, details);
|
|
393
|
+
const parentGroup = this.findParentForNode(childNode, path, details, batchRemover);
|
|
394
|
+
if (!parentGroup.group) {
|
|
395
|
+
console.warn(`AG Grid: duplicate group keys for row data, keys should be unique`, [parentGroup.data, childNode.data]);
|
|
396
|
+
}
|
|
397
|
+
if (details.usingTreeData) {
|
|
398
|
+
this.swapGroupWithUserNode(parentGroup, childNode, isMove);
|
|
399
|
+
}
|
|
400
|
+
else {
|
|
401
|
+
childNode.parent = parentGroup;
|
|
402
|
+
childNode.level = path.length;
|
|
403
|
+
parentGroup.childrenAfterGroup.push(childNode);
|
|
404
|
+
parentGroup.updateHasChildren();
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
findParentForNode(childNode, path, details, batchRemover) {
|
|
408
|
+
let nextNode = details.rootNode;
|
|
409
|
+
path.forEach((groupInfo, level) => {
|
|
410
|
+
nextNode = this.getOrCreateNextNode(nextNode, groupInfo, level, details);
|
|
411
|
+
// node gets added to all group nodes.
|
|
412
|
+
// note: we do not add to rootNode here, as the rootNode is the master list of rowNodes
|
|
413
|
+
if (!batchRemover?.isRemoveFromAllLeafChildren(nextNode, childNode)) {
|
|
414
|
+
nextNode.allLeafChildren.push(childNode);
|
|
415
|
+
}
|
|
416
|
+
else {
|
|
417
|
+
// if this node is about to be removed, prevent that
|
|
418
|
+
batchRemover?.preventRemoveFromAllLeafChildren(nextNode, childNode);
|
|
419
|
+
}
|
|
420
|
+
});
|
|
421
|
+
return nextNode;
|
|
422
|
+
}
|
|
423
|
+
swapGroupWithUserNode(fillerGroup, userGroup, isMove) {
|
|
424
|
+
userGroup.parent = fillerGroup.parent;
|
|
425
|
+
userGroup.key = fillerGroup.key;
|
|
426
|
+
userGroup.field = fillerGroup.field;
|
|
427
|
+
userGroup.groupData = fillerGroup.groupData;
|
|
428
|
+
userGroup.level = fillerGroup.level;
|
|
429
|
+
// AG-3441 - preserve the existing expanded status of the node if we're moving it, so that
|
|
430
|
+
// you can drag a sub tree from one parent to another without changing its expansion
|
|
431
|
+
if (!isMove) {
|
|
432
|
+
userGroup.expanded = fillerGroup.expanded;
|
|
433
|
+
}
|
|
434
|
+
// we set .leafGroup to false for tree data, as .leafGroup is only used when pivoting, and pivoting
|
|
435
|
+
// isn't allowed with treeData, so the grid never actually use .leafGroup when doing treeData.
|
|
436
|
+
userGroup.leafGroup = fillerGroup.leafGroup;
|
|
437
|
+
// always null for userGroups, as row grouping is not allowed when doing tree data
|
|
438
|
+
userGroup.rowGroupIndex = fillerGroup.rowGroupIndex;
|
|
439
|
+
userGroup.allLeafChildren = fillerGroup.allLeafChildren;
|
|
440
|
+
userGroup.childrenAfterGroup = fillerGroup.childrenAfterGroup;
|
|
441
|
+
userGroup.childrenMapped = fillerGroup.childrenMapped;
|
|
442
|
+
userGroup.sibling = fillerGroup.sibling;
|
|
443
|
+
userGroup.updateHasChildren();
|
|
444
|
+
this.removeFromParent(fillerGroup);
|
|
445
|
+
userGroup.childrenAfterGroup.forEach((rowNode) => rowNode.parent = userGroup);
|
|
446
|
+
this.addToParent(userGroup, fillerGroup.parent);
|
|
447
|
+
}
|
|
448
|
+
getOrCreateNextNode(parentGroup, groupInfo, level, details) {
|
|
449
|
+
const key = this.getChildrenMappedKey(groupInfo.key, groupInfo.rowGroupColumn);
|
|
450
|
+
let nextNode = parentGroup.childrenMapped ? parentGroup.childrenMapped[key] : undefined;
|
|
451
|
+
if (!nextNode) {
|
|
452
|
+
nextNode = this.createGroup(groupInfo, parentGroup, level, details);
|
|
453
|
+
// attach the new group to the parent
|
|
454
|
+
this.addToParent(nextNode, parentGroup);
|
|
455
|
+
}
|
|
456
|
+
return nextNode;
|
|
457
|
+
}
|
|
458
|
+
createGroup(groupInfo, parent, level, details) {
|
|
459
|
+
const groupNode = new RowNode(this.beans);
|
|
460
|
+
groupNode.group = true;
|
|
461
|
+
groupNode.field = groupInfo.field;
|
|
462
|
+
groupNode.rowGroupColumn = groupInfo.rowGroupColumn;
|
|
463
|
+
this.setGroupData(groupNode, groupInfo, details);
|
|
464
|
+
groupNode.key = groupInfo.key;
|
|
465
|
+
groupNode.id = this.createGroupId(groupNode, parent, details.usingTreeData, level);
|
|
466
|
+
groupNode.level = level;
|
|
467
|
+
groupNode.leafGroup = details.usingTreeData ? false : level === (details.groupedColCount - 1);
|
|
468
|
+
groupNode.allLeafChildren = [];
|
|
469
|
+
// why is this done here? we are not updating the children count as we go,
|
|
470
|
+
// i suspect this is updated in the filter stage
|
|
471
|
+
groupNode.setAllChildrenCount(0);
|
|
472
|
+
groupNode.rowGroupIndex = details.usingTreeData ? null : level;
|
|
473
|
+
groupNode.childrenAfterGroup = [];
|
|
474
|
+
groupNode.childrenMapped = {};
|
|
475
|
+
groupNode.updateHasChildren();
|
|
476
|
+
groupNode.parent = details.includeParents ? parent : null;
|
|
477
|
+
this.setExpandedInitialValue(details, groupNode);
|
|
478
|
+
return groupNode;
|
|
479
|
+
}
|
|
480
|
+
createGroupId(node, parent, usingTreeData, level) {
|
|
481
|
+
let createGroupId;
|
|
482
|
+
if (usingTreeData) {
|
|
483
|
+
createGroupId = (node, parent, level) => {
|
|
484
|
+
if (level < 0) {
|
|
485
|
+
return null;
|
|
486
|
+
} // root node
|
|
487
|
+
const parentId = parent ? createGroupId(parent, parent.parent, level - 1) : null;
|
|
488
|
+
return `${parentId == null ? '' : parentId + '-'}${level}-${node.key}`;
|
|
489
|
+
};
|
|
490
|
+
}
|
|
491
|
+
else {
|
|
492
|
+
createGroupId = (node, parent) => {
|
|
493
|
+
if (!node.rowGroupColumn) {
|
|
494
|
+
return null;
|
|
495
|
+
} // root node
|
|
496
|
+
const parentId = parent ? createGroupId(parent, parent.parent, 0) : null;
|
|
497
|
+
return `${parentId == null ? '' : parentId + '-'}${node.rowGroupColumn.getColId()}-${node.key}`;
|
|
498
|
+
};
|
|
499
|
+
}
|
|
500
|
+
// we put 'row-group-' before the group id, so it doesn't clash with standard row id's. we also use 't-' and 'b-'
|
|
501
|
+
// for top pinned and bottom pinned rows.
|
|
502
|
+
return RowNode.ID_PREFIX_ROW_GROUP + createGroupId(node, parent, level);
|
|
503
|
+
}
|
|
504
|
+
setGroupData(groupNode, groupInfo, details) {
|
|
505
|
+
groupNode.groupData = {};
|
|
506
|
+
const groupDisplayCols = this.columnModel.getGroupDisplayColumns();
|
|
507
|
+
groupDisplayCols.forEach(col => {
|
|
508
|
+
// newGroup.rowGroupColumn=null when working off GroupInfo, and we always display the group in the group column
|
|
509
|
+
// if rowGroupColumn is present, then it's grid row grouping and we only include if configuration says so
|
|
510
|
+
const isTreeData = details.usingTreeData;
|
|
511
|
+
if (isTreeData) {
|
|
512
|
+
groupNode.groupData[col.getColId()] = groupInfo.key;
|
|
513
|
+
return;
|
|
514
|
+
}
|
|
515
|
+
const groupColumn = groupNode.rowGroupColumn;
|
|
516
|
+
const isRowGroupDisplayed = groupColumn !== null && col.isRowGroupDisplayed(groupColumn.getId());
|
|
517
|
+
if (isRowGroupDisplayed) {
|
|
518
|
+
if (details.suppressGroupMaintainValueType) {
|
|
519
|
+
groupNode.groupData[col.getColId()] = groupInfo.key;
|
|
520
|
+
}
|
|
521
|
+
else {
|
|
522
|
+
// if maintain group value type, get the value from any leaf node.
|
|
523
|
+
groupNode.groupData[col.getColId()] = this.valueService.getValue(groupColumn, groupInfo.leafNode);
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
});
|
|
527
|
+
}
|
|
528
|
+
getChildrenMappedKey(key, rowGroupColumn) {
|
|
529
|
+
if (rowGroupColumn) {
|
|
530
|
+
// grouping by columns
|
|
531
|
+
return rowGroupColumn.getId() + '-' + key;
|
|
532
|
+
}
|
|
533
|
+
// tree data - we don't have rowGroupColumns
|
|
534
|
+
return key;
|
|
535
|
+
}
|
|
536
|
+
setExpandedInitialValue(details, groupNode) {
|
|
537
|
+
// if pivoting the leaf group is never expanded as we do not show leaf rows
|
|
538
|
+
if (details.pivotMode && groupNode.leafGroup) {
|
|
539
|
+
groupNode.expanded = false;
|
|
540
|
+
return;
|
|
541
|
+
}
|
|
542
|
+
// use callback if exists
|
|
543
|
+
const userCallback = details.isGroupOpenByDefault;
|
|
544
|
+
if (userCallback) {
|
|
545
|
+
const params = {
|
|
546
|
+
rowNode: groupNode,
|
|
547
|
+
field: groupNode.field,
|
|
548
|
+
key: groupNode.key,
|
|
549
|
+
level: groupNode.level,
|
|
550
|
+
rowGroupColumn: groupNode.rowGroupColumn
|
|
551
|
+
};
|
|
552
|
+
groupNode.expanded = userCallback(params) == true;
|
|
553
|
+
return;
|
|
554
|
+
}
|
|
555
|
+
// use expandByDefault if exists
|
|
556
|
+
const { expandByDefault } = details;
|
|
557
|
+
if (details.expandByDefault === -1) {
|
|
558
|
+
groupNode.expanded = true;
|
|
559
|
+
return;
|
|
560
|
+
}
|
|
561
|
+
// otherwise
|
|
562
|
+
groupNode.expanded = groupNode.level < expandByDefault;
|
|
563
|
+
}
|
|
564
|
+
getGroupInfo(rowNode, details) {
|
|
565
|
+
if (details.usingTreeData) {
|
|
566
|
+
return this.getGroupInfoFromCallback(rowNode, details);
|
|
567
|
+
}
|
|
568
|
+
return this.getGroupInfoFromGroupColumns(rowNode, details);
|
|
569
|
+
}
|
|
570
|
+
getGroupInfoFromCallback(rowNode, details) {
|
|
571
|
+
const keys = details.getDataPath ? details.getDataPath(rowNode.data) : null;
|
|
572
|
+
if (keys === null || keys === undefined || keys.length === 0) {
|
|
573
|
+
_.warnOnce(`getDataPath() should not return an empty path for data ${rowNode.data}`);
|
|
574
|
+
}
|
|
575
|
+
const groupInfoMapper = (key) => ({ key, field: null, rowGroupColumn: null });
|
|
576
|
+
return keys ? keys.map(groupInfoMapper) : [];
|
|
577
|
+
}
|
|
578
|
+
getGroupInfoFromGroupColumns(rowNode, details) {
|
|
579
|
+
const res = [];
|
|
580
|
+
details.groupedCols.forEach(groupCol => {
|
|
581
|
+
let key = this.valueService.getKeyForNode(groupCol, rowNode);
|
|
582
|
+
let keyExists = key !== null && key !== undefined && key !== '';
|
|
583
|
+
// unbalanced tree and pivot mode don't work together - not because of the grid, it doesn't make
|
|
584
|
+
// mathematical sense as you are building up a cube. so if pivot mode, we put in a blank key where missing.
|
|
585
|
+
// this keeps the tree balanced and hence can be represented as a group.
|
|
586
|
+
const createGroupForEmpty = details.pivotMode || !details.groupAllowUnbalanced;
|
|
587
|
+
if (createGroupForEmpty && !keyExists) {
|
|
588
|
+
key = '';
|
|
589
|
+
keyExists = true;
|
|
590
|
+
}
|
|
591
|
+
if (keyExists) {
|
|
592
|
+
const item = {
|
|
593
|
+
key: key,
|
|
594
|
+
field: groupCol.getColDef().field,
|
|
595
|
+
rowGroupColumn: groupCol,
|
|
596
|
+
leafNode: rowNode,
|
|
597
|
+
};
|
|
598
|
+
res.push(item);
|
|
599
|
+
}
|
|
600
|
+
});
|
|
601
|
+
return res;
|
|
602
|
+
}
|
|
603
|
+
};
|
|
604
|
+
__decorate([
|
|
605
|
+
Autowired('columnModel')
|
|
606
|
+
], GroupStage.prototype, "columnModel", void 0);
|
|
607
|
+
__decorate([
|
|
608
|
+
Autowired('selectableService')
|
|
609
|
+
], GroupStage.prototype, "selectableService", void 0);
|
|
610
|
+
__decorate([
|
|
611
|
+
Autowired('valueService')
|
|
612
|
+
], GroupStage.prototype, "valueService", void 0);
|
|
613
|
+
__decorate([
|
|
614
|
+
Autowired('beans')
|
|
615
|
+
], GroupStage.prototype, "beans", void 0);
|
|
616
|
+
__decorate([
|
|
617
|
+
Autowired('selectionService')
|
|
618
|
+
], GroupStage.prototype, "selectionService", void 0);
|
|
619
|
+
GroupStage = __decorate([
|
|
620
|
+
Bean('groupStage')
|
|
621
|
+
], GroupStage);
|
|
622
|
+
export { GroupStage };
|
|
623
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtc3RhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9ncmlkL3Jvdy1ncm91cGluZy9ncm91cC1zdGFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILENBQUMsRUFDRCxTQUFTLEVBQ1QsSUFBSSxFQUNKLFFBQVEsRUFPUixPQUFPLEVBV1YsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUErQnZDLElBQU0sVUFBVSxHQUFoQixNQUFNLFVBQVcsU0FBUSxRQUFRO0lBaUI3QixPQUFPLENBQUMsTUFBMEI7UUFFckMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRW5ELElBQUksT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixLQUFLLElBQUksQ0FBQztZQUM3RCxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekIsMENBQTBDO1lBQzFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsV0FBWSxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLDZCQUE2QixFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVPLHNCQUFzQixDQUFDLFdBQXdCO1FBQ25ELFdBQVcsQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM3QyxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMzQixNQUFNLFNBQVMsR0FBYyxFQUFFLENBQUM7Z0JBQ2hDLE1BQU0sVUFBVSxHQUFjLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxjQUFtQyxDQUFDO2dCQUV4QyxLQUFLLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxDQUFDO3dCQUNsQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUN4QixDQUFDO3lCQUFNLENBQUM7d0JBQ0osSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDOzRCQUNwQyxjQUFjLEdBQUcsR0FBRyxDQUFDO3dCQUN6QixDQUFDOzZCQUFNLENBQUM7NEJBQ0osVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDekIsQ0FBQztvQkFDTCxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksY0FBYyxFQUFFLENBQUM7b0JBQ2pCLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ3BDLENBQUM7Z0JBRUQsS0FBSyxDQUFDLGtCQUFrQixHQUFHLENBQUMsR0FBRyxTQUFTLEVBQUUsR0FBRyxVQUFVLENBQUMsQ0FBQztZQUM3RCxDQUFDO1FBQ0wsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUVPLHFCQUFxQixDQUFDLE1BQTBCO1FBQ3BELE1BQU0sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUUzRSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTlELE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFakYsTUFBTSxPQUFPLEdBQW9CO1lBQzdCLGlGQUFpRjtZQUNqRixvSEFBb0g7WUFDcEgsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQztZQUN6RSxlQUFlLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQztZQUNwRSxXQUFXLEVBQUUsV0FBWTtZQUN6QixRQUFRLEVBQUUsT0FBTztZQUNqQixTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUU7WUFDekMsZUFBZSxFQUFFLGFBQWEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTTtZQUN2RSxZQUFZLEVBQUUsWUFBYTtZQUMzQixZQUFZLEVBQUUsbUJBQW9CO1lBQ2xDLGdHQUFnRztZQUNoRyxXQUFXLEVBQUUsV0FBWTtZQUN6QixvQkFBb0IsRUFBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDO1lBQzFFLG9CQUFvQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsc0JBQXNCLENBQVE7WUFDeEYsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyw2QkFBNkIsQ0FBUTtZQUN0RyxhQUFhLEVBQUUsYUFBYTtZQUM1Qiw4QkFBOEIsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxDQUFDO1lBQzdGLFdBQVcsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDbkYsV0FBVyxFQUFFLFdBQVcsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRTtTQUMvRSxDQUFDO1FBRUYsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVPLGlCQUFpQixDQUFDLE9BQXdCO1FBRTlDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2hDLDZFQUE2RTtZQUM3RSxrRkFBa0Y7WUFDbEYsaUZBQWlGO1lBQ2pGLHNGQUFzRjtZQUN0Rix1RkFBdUY7WUFDdkYsTUFBTSxZQUFZLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFFN0UsNEZBQTRGO1lBQzVGLDRGQUE0RjtZQUM1RixlQUFlO1lBQ2YsSUFBSSxDQUFDLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQW1CLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ3RFLENBQUM7WUFDRCxJQUFJLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFtQixFQUFFLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztZQUMvRSxDQUFDO1lBQ0QsSUFBSSxDQUFDLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQWdCLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVELENBQUM7WUFDRCxvRUFBb0U7WUFDcEUsMEVBQTBFO1lBQzFFLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2YsTUFBTSwwQkFBMEIsR0FBRyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3hFLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLDBCQUEwQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2hFLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0IsQ0FBQztJQUNMLENBQUM7SUFFRCw4RUFBOEU7SUFDdEUsWUFBWSxDQUFDLE9BQXdCO1FBQ3pDLE9BQU8sQ0FBQyxXQUFXLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMzQixPQUFPO1lBQ1gsQ0FBQztZQUVELE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsa0JBQW1CLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3RGLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUMsQ0FBQztRQUNMLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVPLFdBQVcsQ0FBQyxPQUF3QjtRQUN4QyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsMkJBQTJCLENBQUM7UUFDdkQsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQUMsQ0FBQztRQUU5RCxTQUFTLGFBQWEsQ0FBQyxPQUFnQjtZQUNuQyxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztnQkFDL0MsNEZBQTRGO2dCQUM1RixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7WUFFdkIsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDVCxPQUFPLENBQUMsa0JBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsVUFBVyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDbEYsT0FBTyxDQUFDLGtCQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQWtCLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQzFGLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVPLHNCQUFzQixDQUFDLElBQWEsRUFBRSxPQUF3QjtRQUNsRSxNQUFNLEdBQUcsR0FBZ0IsRUFBRSxDQUFDO1FBRTVCLHNEQUFzRDtRQUN0RCw4RkFBOEY7UUFDOUYsSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3pELE9BQU8sT0FBTyxJQUFJLE9BQU8sS0FBSyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDN0MsR0FBRyxDQUFDLElBQUksQ0FBQztnQkFDTCxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUk7Z0JBQ2pCLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYztnQkFDdEMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO2FBQ3ZCLENBQUMsQ0FBQztZQUNILE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzdCLENBQUM7UUFDRCxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDZCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxVQUFxQixFQUFFLE9BQXdCLEVBQUUsWUFBc0M7UUFDaEgsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUUzQixzRUFBc0U7WUFDdEUsNENBQTRDO1lBQzVDLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO2dCQUNqQyxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDeEQsQ0FBQztZQUVELE1BQU0sZUFBZSxHQUFHLENBQUMsSUFBZSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ3RELE1BQU0sT0FBTyxHQUFhLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQy9GLE1BQU0sT0FBTyxHQUFhLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUVyRixNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRXZELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDcEQsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLFFBQVEsQ0FBQyxTQUFrQixFQUFFLE9BQXdCLEVBQUUsWUFBc0M7UUFFakcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFM0QsZ0dBQWdHO1FBQ2hHLDBCQUEwQjtRQUMxQix5RkFBeUY7UUFDekYsK0ZBQStGO1FBQy9GLG1EQUFtRDtRQUNuRCxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVsQyxzRkFBc0Y7UUFDdEYsdUZBQXVGO1FBQ3ZGLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFDbkMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakQsQ0FBQztJQUNMLENBQUM7SUFFTyxXQUFXLENBQUMsWUFBdUIsRUFBRSxPQUF3QixFQUFFLFlBQXNDO1FBQ3pHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzlELElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN2RixDQUFDO0lBQ0wsQ0FBQztJQUVPLG1CQUFtQixDQUFDLFlBQXVCLEVBQUUsT0FBd0IsRUFBRSxZQUFzQztRQUNqSCxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNqRSxJQUFJLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsMkJBQTJCLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRXhELCtGQUErRjtZQUMvRiw2RkFBNkY7WUFDN0YsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFPLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELENBQUM7SUFDTCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsT0FBd0IsRUFBRSxLQUFjLEVBQUUsUUFBbUM7UUFDcEcsSUFBSSxPQUFPLEdBQW1CLEtBQUssQ0FBQztRQUNwQyxPQUFPLE9BQU8sSUFBSSxPQUFPLEtBQUssT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsQixPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUM3QixDQUFDO0lBQ0wsQ0FBQztJQUVPLHNCQUFzQixDQUFDLGFBQXdCLEVBQUUsT0FBd0IsRUFBRSxRQUFrQztRQUNqSCx1R0FBdUc7UUFDdkcseUdBQXlHO1FBQ3pHLE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxJQUFJLElBQUksQ0FBQztRQUM3QyxNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRW5FLGFBQWEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDakMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBRXZELGtGQUFrRjtZQUNsRiw4REFBOEQ7WUFDOUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsTUFBTyxFQUFFLFVBQVUsQ0FBQyxFQUFFO2dCQUNoRSxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDMUUsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksbUJBQW1CLEVBQUUsQ0FBQztZQUN0QixpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM5QixDQUFDO0lBQ0wsQ0FBQztJQUVPLDJCQUEyQixDQUFDLGFBQXdCLEVBQUUsT0FBd0I7UUFDbEYsYUFBYSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUVqQyw0RUFBNEU7WUFDNUUsa0VBQWtFO1lBQ2xFLE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BELElBQUksZ0JBQWdCLEVBQUUsQ0FBQztnQkFDbkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDbkUsbUZBQW1GO2dCQUNuRixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFFNUUsbUZBQW1GO2dCQUNuRixzQ0FBc0M7Z0JBQ3RDLFlBQVksQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQztnQkFDOUMsWUFBWSxDQUFDLGVBQWUsR0FBRyxZQUFZLENBQUMsZUFBZSxDQUFDO2dCQUM1RCxZQUFZLENBQUMsa0JBQWtCLEdBQUcsWUFBWSxDQUFDLGtCQUFrQixDQUFDO2dCQUNsRSxZQUFZLENBQUMsY0FBYyxHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUM7Z0JBQzFELFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUVqQyxZQUFZLENBQUMsa0JBQW1CLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsQ0FBQztZQUN2RixDQUFDO1FBRUwsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8saUJBQWlCLENBQUMsbUJBQThCLEVBQUUsT0FBd0I7UUFDOUUsNkZBQTZGO1FBQzdGLGdHQUFnRztRQUNoRyxrR0FBa0c7UUFDbEcsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBRXRCLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxPQUFnQixFQUFXLEVBQUU7WUFFdkQsNEVBQTRFO1lBQzVFLGlEQUFpRDtZQUNqRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLEdBQUksRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDL0UsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUNyQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsYUFBYSxJQUFJLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO2dCQUN6RSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUVqRCxJQUFJLG1CQUFtQixFQUFFLENBQUM7Z0JBQ3RCLGdEQUFnRDtnQkFDaEQsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztZQUNELDhEQUE4RDtZQUM5RCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQyxDQUFDLENBQUM7UUFFRixPQUFPLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDbkIsTUFBTSxZQUFZLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7WUFDdEQsbUJBQW1CLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQUU7Z0JBQzdDLHNCQUFzQjtnQkFDdEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLENBQUMsRUFBRTtvQkFDM0QsSUFBSSxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO3dCQUNoQyxVQUFVLEdBQUcsSUFBSSxDQUFDO3dCQUNsQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO3dCQUM3QyxrRkFBa0Y7d0JBQ2xGLDZFQUE2RTt3QkFDN0UsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO29CQUM5RSxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7WUFDSCxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekIsQ0FBQztJQUNMLENBQUM7SUFFRCx1Q0FBdUM7SUFDdkMsNkZBQTZGO0lBQzdGLGdEQUFnRDtJQUNoRCw0RkFBNEY7SUFDNUYscUVBQXFFO0lBQzdELGdCQUFnQixDQUFDLEtBQWMsRUFBRSxZQUEyQjtRQUNoRSxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNmLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2YsWUFBWSxDQUFDLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbkUsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLENBQUMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxrQkFBbUIsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDM0QsS0FBSyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxHQUFJLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzNFLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzlDLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUNwRCxDQUFDO1FBQ0QsK0ZBQStGO1FBQy9GLG1GQUFtRjtRQUNuRixLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFjLEVBQUUsTUFBc0I7UUFDdEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxHQUFJLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzNFLElBQUksTUFBTSxFQUFFLENBQUM7WUFDVCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQztZQUMvQyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNYLE1BQU0sQ0FBQyxjQUFlLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQzNDLENBQUM7WUFDRCxNQUFNLENBQUMsa0JBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQy9CLENBQUM7SUFDTCxDQUFDO0lBRU8saUJBQWlCLENBQUMsRUFBbUIsRUFBRSxFQUFtQjtRQUM5RCxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsU0FBUyxLQUFLLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUFDLE9BQU8sS0FBSyxDQUFDO1FBQUMsQ0FBQztRQUVoRixPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBRU8saUNBQWlDLENBQUMsT0FBd0I7UUFFOUQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxRQUEwQixFQUFFLEVBQUU7WUFDM0MsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUFDLE9BQU87WUFBQyxDQUFDO1lBQzFCLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3ZCLE1BQU0sVUFBVSxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQzVELElBQUksVUFBVSxFQUFFLENBQUM7b0JBQUMsT0FBTztnQkFBQyxDQUFDO2dCQUMzQixNQUFNLFNBQVMsR0FBYztvQkFDekIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO29CQUNwQixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUk7b0JBQ2pCLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYztvQkFDdEMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO2lCQUN2QyxDQUFDO2dCQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDL0MsT0FBTyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDO1FBRUYsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsT0FBd0IsRUFBRSxtQkFBNEI7UUFFakYsSUFBSSxJQUFJLENBQUMseUJBQXlCLENBQUMsT0FBTyxFQUFFLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztZQUMvRCxPQUFPO1FBQ1gsQ0FBQztRQUVELDhFQUE4RTtRQUM5RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxJQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVsRixNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUMxQyx5RUFBeUU7UUFDekUsaUNBQWlDO1FBQ2pDLG1HQUFtRztRQUNuRyw4RkFBOEY7UUFDOUYsUUFBUSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1FBRTlFLHlHQUF5RztRQUN6RyxRQUFRLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLFFBQVEsQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQzdCLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRTdCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7UUFDakMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNWLE9BQU8sQ0FBQyxrQkFBa0IsR0FBRyxRQUFRLENBQUMsa0JBQWtCLENBQUM7WUFDekQsT0FBTyxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDO1FBQ3JELENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxPQUF3QixFQUFFLG1CQUE0QjtRQUNwRixJQUFJLHlCQUF5QixHQUFHLEtBQUssQ0FBQztRQUV0QyxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUN0RSxNQUFNLHFCQUFxQixHQUFHLG1CQUFtQixDQUFDLENBQUM7WUFDL0MsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFM0QsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1lBQ3RCLDRFQUE0RTtZQUM1RSxtQ0FBbUM7WUFDbkMseUJBQXlCLEdBQUcsT0FBTyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBRTlHLG1GQUFtRjtZQUNuRiw0Q0FBNEM7WUFDNUMsSUFBSSxJQUFJLENBQUMscUJBQXFCLEtBQUsscUJBQXFCLEVBQUUsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BELENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQztRQUNsQyxJQUFJLENBQUMscUJBQXFCLEdBQUcscUJBQXFCLENBQUM7UUFFbkQsT0FBTyx5QkFBeUIsQ0FBQztJQUNyQyxDQUFDO0lBRU8sV0FBVyxDQUFDLFdBQXNCLEVBQUUsT0FBd0IsRUFBRSxNQUFlO1FBQ2pGLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzdDLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO2dCQUNqQyxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdEQsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLGFBQWEsQ0FBQyxTQUFrQixFQUFFLE9BQXdCLEVBQUUsTUFBZSxFQUFFLFlBQTJCO1FBRTVHLE1BQU0sSUFBSSxHQUFnQixJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVoRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDbkYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQixPQUFPLENBQUMsSUFBSSxDQUFDLG1FQUFtRSxFQUM1RSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQy9ELENBQUM7YUFBTSxDQUFDO1lBQ0osU0FBUyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUM7WUFDL0IsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzlCLFdBQVcsQ0FBQyxrQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDaEQsV0FBVyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDcEMsQ0FBQztJQUNMLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxTQUFrQixFQUFFLElBQWlCLEVBQUUsT0FBd0IsRUFBRSxZQUEyQjtRQUNsSCxJQUFJLFFBQVEsR0FBWSxPQUFPLENBQUMsUUFBUSxDQUFDO1FBRXpDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDOUIsUUFBUSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN6RSxzQ0FBc0M7WUFDdEMsdUZBQXVGO1lBRXZGLElBQUksQ0FBQyxZQUFZLEVBQUUsMkJBQTJCLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xFLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzdDLENBQUM7aUJBQU0sQ0FBQztnQkFDSixvREFBb0Q7Z0JBQ3BELFlBQVksRUFBRSxnQ0FBZ0MsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDeEUsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVPLHFCQUFxQixDQUFDLFdBQW9CLEVBQUUsU0FBa0IsRUFBRSxNQUFlO1FBQ25GLFNBQVMsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQztRQUN0QyxTQUFTLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUM7UUFDaEMsU0FBUyxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQ3BDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztRQUM1QyxTQUFTLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUM7UUFDcEMsMEZBQTBGO1FBQzFGLG9GQUFvRjtRQUNwRixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDVixTQUFTLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7UUFDOUMsQ0FBQztRQUVELG1HQUFtRztRQUNuRyw4RkFBOEY7UUFDOUYsU0FBUyxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDO1FBRTVDLGtGQUFrRjtRQUNsRixTQUFTLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7UUFFcEQsU0FBUyxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUMsZUFBZSxDQUFDO1FBQ3hELFNBQVMsQ0FBQyxrQkFBa0IsR0FBRyxXQUFXLENBQUMsa0JBQWtCLENBQUM7UUFDOUQsU0FBUyxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDO1FBQ3RELFNBQVMsQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQztRQUN4QyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUU5QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkMsU0FBUyxDQUFDLGtCQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQWdCLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxXQUFvQixFQUFFLFNBQW9CLEVBQUUsS0FBYSxFQUNqRixPQUF3QjtRQUV4QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0UsSUFBSSxRQUFRLEdBQUcsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRXhGLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNaLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BFLHFDQUFxQztZQUNyQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVPLFdBQVcsQ0FBQyxTQUFvQixFQUFFLE1BQWUsRUFBRSxLQUFhLEVBQUUsT0FBd0I7UUFDOUYsTUFBTSxTQUFTLEdBQUcsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLFNBQVMsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUNsQyxTQUFTLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQyxjQUFjLENBQUM7UUFFcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRWpELFNBQVMsQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQztRQUM5QixTQUFTLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRW5GLFNBQVMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLFNBQVMsQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTlGLFNBQVMsQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBRS9CLDBFQUEwRTtRQUMxRSxnREFBZ0Q7UUFDaEQsU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWpDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFFL0QsU0FBUyxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUNsQyxTQUFTLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUM5QixTQUFTLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUU5QixTQUFTLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRTFELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFakQsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxJQUFhLEVBQUUsTUFBZSxFQUFFLGFBQXNCLEVBQUUsS0FBYTtRQUN2RixJQUFJLGFBQXNGLENBQUM7UUFDM0YsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNoQixhQUFhLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUNwQyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFBQyxPQUFPLElBQUksQ0FBQztnQkFBQyxDQUFDLENBQUMsWUFBWTtnQkFDNUMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ2pGLE9BQU8sR0FBRyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMzRSxDQUFDLENBQUM7UUFDTixDQUFDO2FBQU0sQ0FBQztZQUNKLGFBQWEsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFBQyxPQUFPLElBQUksQ0FBQztnQkFBQyxDQUFDLENBQUMsWUFBWTtnQkFDdkQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDekUsT0FBTyxHQUFHLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNwRyxDQUFDLENBQUM7UUFDTixDQUFDO1FBRUQsaUhBQWlIO1FBQ2pILHlDQUF5QztRQUN6QyxPQUFPLE9BQU8sQ0FBQyxtQkFBbUIsR0FBRyxhQUFhLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRU8sWUFBWSxDQUFDLFNBQWtCLEVBQUUsU0FBb0IsRUFBRSxPQUF3QjtRQUNuRixTQUFTLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUN6QixNQUFNLGdCQUFnQixHQUFhLElBQUksQ0FBQyxXQUFXLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM3RSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDM0IsK0dBQStHO1lBQy9HLHlHQUF5RztZQUN6RyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO1lBQ3pDLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2IsU0FBUyxDQUFDLFNBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDO2dCQUNyRCxPQUFPO1lBQ1gsQ0FBQztZQUVELE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxjQUFjLENBQUM7WUFDN0MsTUFBTSxtQkFBbUIsR0FBRyxXQUFXLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNqRyxJQUFJLG1CQUFtQixFQUFFLENBQUM7Z0JBQ3RCLElBQUksT0FBTyxDQUFDLDhCQUE4QixFQUFFLENBQUM7b0JBQ3pDLFNBQVMsQ0FBQyxTQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQztnQkFDekQsQ0FBQztxQkFBTSxDQUFDO29CQUNKLGtFQUFrRTtvQkFDbEUsU0FBUyxDQUFDLFNBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN2RyxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLG9CQUFvQixDQUFDLEdBQVcsRUFBRSxjQUE2QjtRQUNuRSxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ2pCLHNCQUFzQjtZQUN0QixPQUFPLGNBQWMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQzlDLENBQUM7UUFDRCw0Q0FBNEM7UUFDNUMsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRU8sdUJBQXVCLENBQUMsT0FBd0IsRUFBRSxTQUFrQjtRQUN4RSwyRUFBMkU7UUFDM0UsSUFBSSxPQUFPLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMzQyxTQUFTLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUMzQixPQUFPO1FBQ1gsQ0FBQztRQUVELHlCQUF5QjtRQUN6QixNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsb0JBQW9CLENBQUM7UUFDbEQsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNmLE1BQU0sTUFBTSxHQUFrRDtnQkFDMUQsT0FBTyxFQUFFLFNBQVM7Z0JBQ2xCLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBTTtnQkFDdkIsR0FBRyxFQUFFLFNBQVMsQ0FBQyxHQUFJO2dCQUNuQixLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUs7Z0JBQ3RCLGNBQWMsRUFBRSxTQUFTLENBQUMsY0FBZTthQUM1QyxDQUFDO1lBQ0YsU0FBUyxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDO1lBQ2xELE9BQU87UUFDWCxDQUFDO1FBRUQsZ0NBQWdDO1FBQ2hDLE1BQU0sRUFBRSxlQUFlLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDcEMsSUFBSSxPQUFPLENBQUMsZUFBZSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDakMsU0FBUyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDMUIsT0FBTztRQUNYLENBQUM7UUFFRCxZQUFZO1FBQ1osU0FBUyxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLGVBQWUsQ0FBQztJQUMzRCxDQUFDO0lBRU8sWUFBWSxDQUFDLE9BQWdCLEVBQUUsT0FBd0I7UUFDM0QsSUFBSSxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDeEIsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVPLHdCQUF3QixDQUFDLE9BQWdCLEVBQUUsT0FBd0I7UUFDdkUsTUFBTSxJQUFJLEdBQW9CLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFN0YsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMzRCxDQUFDLENBQUMsUUFBUSxDQUFDLDBEQUEwRCxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN6RixDQUFDO1FBQ0QsTUFBTSxlQUFlLEdBQUcsQ0FBQyxHQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxDQUFjLENBQUM7UUFDMUcsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRU8sNEJBQTRCLENBQUMsT0FBZ0IsRUFBRSxPQUF3QjtRQUMzRSxNQUFNLEdBQUcsR0FBZ0IsRUFBRSxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ25DLElBQUksR0FBRyxHQUFXLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNyRSxJQUFJLFNBQVMsR0FBRyxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxTQUFTLElBQUksR0FBRyxLQUFLLEVBQUUsQ0FBQztZQUVoRSxnR0FBZ0c7WUFDaEcsMkdBQTJHO1lBQzNHLHdFQUF3RTtZQUN4RSxNQUFNLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUM7WUFDL0UsSUFBSSxtQkFBbUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNwQyxHQUFHLEdBQUcsRUFBRSxDQUFDO2dCQUNULFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDckIsQ0FBQztZQUVELElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ1osTUFBTSxJQUFJLEdBQUc7b0JBQ1QsR0FBRyxFQUFFLEdBQUc7b0JBQ1IsS0FBSyxFQUFFLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLO29CQUNqQyxjQUFjLEVBQUUsUUFBUTtvQkFDeEIsUUFBUSxFQUFFLE9BQU87aUJBQ1AsQ0FBQztnQkFDZixHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25CLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztDQUNKLENBQUE7QUF2c0JxQztJQUFqQyxTQUFTLENBQUMsYUFBYSxDQUFDOytDQUFrQztBQUNuQjtJQUF2QyxTQUFTLENBQUMsbUJBQW1CLENBQUM7cURBQThDO0FBQzFDO0lBQWxDLFNBQVMsQ0FBQyxjQUFjLENBQUM7Z0RBQW9DO0FBQ2xDO0lBQTNCLFNBQVMsQ0FBQyxPQUFPLENBQUM7eUNBQXNCO0FBQ0Y7SUFBdEMsU0FBUyxDQUFDLGtCQUFrQixDQUFDO29EQUE2QztBQU5sRSxVQUFVO0lBRHRCLElBQUksQ0FBQyxZQUFZLENBQUM7R0FDTixVQUFVLENBeXNCdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIF8sXG4gICAgQXV0b3dpcmVkLFxuICAgIEJlYW4sXG4gICAgQmVhblN0dWIsXG4gICAgQ2hhbmdlZFBhdGgsXG4gICAgQ29sdW1uLFxuICAgIENvbHVtbk1vZGVsLFxuICAgIEdldERhdGFQYXRoLFxuICAgIElSb3dOb2RlU3RhZ2UsXG4gICAgSXNHcm91cE9wZW5CeURlZmF1bHRQYXJhbXMsXG4gICAgUm93Tm9kZSxcbiAgICBSb3dOb2RlVHJhbnNhY3Rpb24sXG4gICAgU2VsZWN0YWJsZVNlcnZpY2UsXG4gICAgU3RhZ2VFeGVjdXRlUGFyYW1zLFxuICAgIFZhbHVlU2VydmljZSxcbiAgICBCZWFucyxcbiAgICBJU2VsZWN0aW9uU2VydmljZSxcbiAgICBXaXRob3V0R3JpZENvbW1vbixcbiAgICBJbml0aWFsR3JvdXBPcmRlckNvbXBhcmF0b3JQYXJhbXMsXG4gICAgR3JpZE9wdGlvbnMsXG4gICAgS2V5Q3JlYXRvclBhcmFtc1xufSBmcm9tIFwiQGFnLWdyaWQtY29tbXVuaXR5L2NvcmVcIjtcbmltcG9ydCB7IEJhdGNoUmVtb3ZlciB9IGZyb20gXCIuL2JhdGNoUmVtb3ZlclwiO1xuXG5pbnRlcmZhY2UgR3JvdXBJbmZvIHtcbiAgICBrZXk6IHN0cmluZzsgLy8gZS5nLiAnSXJlbGFuZCdcbiAgICBmaWVsZDogc3RyaW5nIHwgbnVsbDsgLy8gZS5nLiAnY291bnRyeSdcbiAgICByb3dHcm91cENvbHVtbjogQ29sdW1uIHwgbnVsbDtcbiAgICBsZWFmTm9kZT86IFJvd05vZGU7XG59XG5cbmludGVyZmFjZSBHcm91cGluZ0RldGFpbHMge1xuICAgIHBpdm90TW9kZTogYm9vbGVhbjtcbiAgICBpbmNsdWRlUGFyZW50czogYm9vbGVhbjtcbiAgICBleHBhbmRCeURlZmF1bHQ6IG51bWJlcjtcbiAgICBjaGFuZ2VkUGF0aDogQ2hhbmdlZFBhdGg7XG4gICAgcm9vdE5vZGU6IFJvd05vZGU7XG4gICAgZ3JvdXBlZENvbHM6IENvbHVtbltdO1xuICAgIGdyb3VwZWRDb2xDb3VudDogbnVtYmVyO1xuICAgIHRyYW5zYWN0aW9uczogUm93Tm9kZVRyYW5zYWN0aW9uW107XG4gICAgcm93Tm9kZU9yZGVyOiB7IFtpZDogc3RyaW5nXTogbnVtYmVyOyB9O1xuICAgIFxuICAgIGdyb3VwQWxsb3dVbmJhbGFuY2VkOiBib29sZWFuO1xuICAgIGlzR3JvdXBPcGVuQnlEZWZhdWx0OiAocGFyYW1zOiBXaXRob3V0R3JpZENvbW1vbjxJc0dyb3VwT3BlbkJ5RGVmYXVsdFBhcmFtcz4pID0+IGJvb2xlYW47XG4gICAgaW5pdGlhbEdyb3VwT3JkZXJDb21wYXJhdG9yOiAocGFyYW1zOiBXaXRob3V0R3JpZENvbW1vbjxJbml0aWFsR3JvdXBPcmRlckNvbXBhcmF0b3JQYXJhbXM+KSA9PiBudW1iZXI7XG4gICAgXG4gICAgdXNpbmdUcmVlRGF0YTogYm9vbGVhbjtcbiAgICBzdXBwcmVzc0dyb3VwTWFpbnRhaW5WYWx1ZVR5cGU6IGJvb2xlYW47XG4gICAgZ2V0RGF0YVBhdGg6IEdldERhdGFQYXRoIHwgdW5kZWZpbmVkO1xuICAgIGtleUNyZWF0b3JzOiAoKChwYXJhbXM6IEtleUNyZWF0b3JQYXJhbXMpID0+IHN0cmluZykgfCB1bmRlZmluZWQpW107XG59XG5cbkBCZWFuKCdncm91cFN0YWdlJylcbmV4cG9ydCBjbGFzcyBHcm91cFN0YWdlIGV4dGVuZHMgQmVhblN0dWIgaW1wbGVtZW50cyBJUm93Tm9kZVN0YWdlIHtcblxuICAgIEBBdXRvd2lyZWQoJ2NvbHVtbk1vZGVsJykgcHJpdmF0ZSBjb2x1bW5Nb2RlbDogQ29sdW1uTW9kZWw7XG4gICAgQEF1dG93aXJlZCgnc2VsZWN0YWJsZVNlcnZpY2UnKSBwcml2YXRlIHNlbGVjdGFibGVTZXJ2aWNlOiBTZWxlY3RhYmxlU2VydmljZTtcbiAgICBAQXV0b3dpcmVkKCd2YWx1ZVNlcnZpY2UnKSBwcml2YXRlIHZhbHVlU2VydmljZTogVmFsdWVTZXJ2aWNlO1xuICAgIEBBdXRvd2lyZWQoJ2JlYW5zJykgcHJpdmF0ZSBiZWFuczogQmVhbnM7XG4gICAgQEF1dG93aXJlZCgnc2VsZWN0aW9uU2VydmljZScpIHByaXZhdGUgc2VsZWN0aW9uU2VydmljZTogSVNlbGVjdGlvblNlcnZpY2U7XG5cbiAgICAvLyB3aGVuIGdyb3VwaW5nLCB0aGVzZSBpdGVtcyBhcmUgb2Ygbm90ZTpcbiAgICAvLyByb3dOb2RlLnBhcmVudDogUm93Tm9kZTogc2V0IHRvIHRoZSBwYXJlbnRcbiAgICAvLyByb3dOb2RlLmNoaWxkcmVuQWZ0ZXJHcm91cDogUm93Tm9kZVtdID0gdGhlIGRpcmVjdCBjaGlsZHJlbiBvZiB0aGlzIGdyb3VwXG4gICAgLy8gcm93Tm9kZS5jaGlsZHJlbk1hcHBlZDogc3RyaW5nPT5Sb3dOb2RlID0gY2hpbGRyZW4gbWFwcGVkIGJ5IGdyb3VwIGtleSAod2hlbiBncm91cHMpIG9yIGFuIGVtcHR5IG1hcCBpZiBsZWFmIGdyb3VwICh0aGlzIGlzIHRoZW4gdXNlZCBieSBwaXZvdClcbiAgICAvLyBmb3IgbGVhZiBncm91cHMsIHJvd05vZGUuY2hpbGRyZW5BZnRlckdyb3VwID0gcm93Tm9kZS5hbGxMZWFmQ2hpbGRyZW47XG5cbiAgICBwcml2YXRlIG9sZEdyb3VwaW5nRGV0YWlsczogR3JvdXBpbmdEZXRhaWxzO1xuICAgIHByaXZhdGUgb2xkR3JvdXBEaXNwbGF5Q29sSWRzOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgZXhlY3V0ZShwYXJhbXM6IFN0YWdlRXhlY3V0ZVBhcmFtcyk6IHZvaWQge1xuXG4gICAgICAgIGNvbnN0IGRldGFpbHMgPSB0aGlzLmNyZWF0ZUdyb3VwaW5nRGV0YWlscyhwYXJhbXMpO1xuXG4gICAgICAgIGlmIChkZXRhaWxzLnRyYW5zYWN0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVUcmFuc2FjdGlvbihkZXRhaWxzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGFmdGVyQ29sc0NoYW5nZWQgPSBwYXJhbXMuYWZ0ZXJDb2x1bW5zQ2hhbmdlZCA9PT0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc2hvdGd1blJlc2V0RXZlcnl0aGluZyhkZXRhaWxzLCBhZnRlckNvbHNDaGFuZ2VkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghZGV0YWlscy51c2luZ1RyZWVEYXRhKSB7XG4gICAgICAgICAgICAvLyB3ZSBkb24ndCBkbyBncm91cCBzb3J0aW5nIGZvciB0cmVlIGRhdGFcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25MZWFmc0FuZEdyb3VwcyhwYXJhbXMuY2hhbmdlZFBhdGghKTtcbiAgICAgICAgICAgIHRoaXMub3JkZXJHcm91cHMoZGV0YWlscyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdGFibGVTZXJ2aWNlLnVwZGF0ZVNlbGVjdGFibGVBZnRlckdyb3VwaW5nKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwb3NpdGlvbkxlYWZzQW5kR3JvdXBzKGNoYW5nZWRQYXRoOiBDaGFuZ2VkUGF0aCkge1xuICAgICAgICBjaGFuZ2VkUGF0aC5mb3JFYWNoQ2hhbmdlZE5vZGVEZXB0aEZpcnN0KGdyb3VwID0+IHtcbiAgICAgICAgICAgIGlmIChncm91cC5jaGlsZHJlbkFmdGVyR3JvdXApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsZWFmTm9kZXM6IFJvd05vZGVbXSA9IFtdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwTm9kZXM6IFJvd05vZGVbXSA9IFtdO1xuICAgICAgICAgICAgICAgIGxldCB1bmJhbGFuY2VkTm9kZTogUm93Tm9kZSB8IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgICAgIGdyb3VwLmNoaWxkcmVuQWZ0ZXJHcm91cC5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcm93LmNoaWxkcmVuQWZ0ZXJHcm91cD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZWFmTm9kZXMucHVzaChyb3cpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJvdy5rZXkgPT09ICcnICYmICF1bmJhbGFuY2VkTm9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuYmFsYW5jZWROb2RlID0gcm93O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cE5vZGVzLnB1c2gocm93KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHVuYmFsYW5jZWROb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwTm9kZXMucHVzaCh1bmJhbGFuY2VkTm9kZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGdyb3VwLmNoaWxkcmVuQWZ0ZXJHcm91cCA9IFsuLi5sZWFmTm9kZXMsIC4uLmdyb3VwTm9kZXNdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBmYWxzZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVHcm91cGluZ0RldGFpbHMocGFyYW1zOiBTdGFnZUV4ZWN1dGVQYXJhbXMpOiBHcm91cGluZ0RldGFpbHMge1xuICAgICAgICBjb25zdCB7IHJvd05vZGUsIGNoYW5nZWRQYXRoLCByb3dOb2RlVHJhbnNhY3Rpb25zLCByb3dOb2RlT3JkZXIgfSA9IHBhcmFtcztcblxuICAgICAgICBjb25zdCB1c2luZ1RyZWVEYXRhID0gdGhpcy5ncmlkT3B0aW9uc1NlcnZpY2UuZ2V0KCd0cmVlRGF0YScpO1xuXG4gICAgICAgIGNvbnN0IGdyb3VwZWRDb2xzID0gdXNpbmdUcmVlRGF0YSA/IG51bGwgOiB0aGlzLmNvbHVtbk1vZGVsLmdldFJvd0dyb3VwQ29sdW1ucygpO1xuXG4gICAgICAgIGNvbnN0IGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscyA9IHtcbiAgICAgICAgICAgIC8vIHNvbWVvbmUgY29tcGxhaW5lZCB0aGF0IHRoZSBwYXJlbnQgYXR0cmlidXRlIHdhcyBjYXVzaW5nIHNvbWUgY2hhbmdlIGRldGVjdGlvblxuICAgICAgICAgICAgLy8gdG8gYnJlYWsgaW4gYW4gYW5ndWxhciBhZGQtb24uICBUYWtpbmcgdGhlIHBhcmVudCBvdXQgYnJlYWtzIGEgY3ljbGljIGRlcGVuZGVuY3ksIGhlbmNlIHRoaXMgZmxhZyBnb3QgaW50cm9kdWNlZC5cbiAgICAgICAgICAgIGluY2x1ZGVQYXJlbnRzOiAhdGhpcy5ncmlkT3B0aW9uc1NlcnZpY2UuZ2V0KCdzdXBwcmVzc1BhcmVudHNJblJvd05vZGVzJyksXG4gICAgICAgICAgICBleHBhbmRCeURlZmF1bHQ6IHRoaXMuZ3JpZE9wdGlvbnNTZXJ2aWNlLmdldCgnZ3JvdXBEZWZhdWx0RXhwYW5kZWQnKSxcbiAgICAgICAgICAgIGdyb3VwZWRDb2xzOiBncm91cGVkQ29scyEsXG4gICAgICAgICAgICByb290Tm9kZTogcm93Tm9kZSxcbiAgICAgICAgICAgIHBpdm90TW9kZTogdGhpcy5jb2x1bW5Nb2RlbC5pc1Bpdm90TW9kZSgpLFxuICAgICAgICAgICAgZ3JvdXBlZENvbENvdW50OiB1c2luZ1RyZWVEYXRhIHx8ICFncm91cGVkQ29scyA/IDAgOiBncm91cGVkQ29scy5sZW5ndGgsXG4gICAgICAgICAgICByb3dOb2RlT3JkZXI6IHJvd05vZGVPcmRlciEsXG4gICAgICAgICAgICB0cmFuc2FjdGlvbnM6IHJvd05vZGVUcmFuc2FjdGlvbnMhLFxuICAgICAgICAgICAgLy8gaWYgbm8gdHJhbnNhY3Rpb24sIHRoZW4gaXQncyBzaG90Z3VuLCBjaGFuZ2VkIHBhdGggd291bGQgYmUgJ25vdCBhY3RpdmUnIGF0IHRoaXMgcG9pbnQgYW55d2F5XG4gICAgICAgICAgICBjaGFuZ2VkUGF0aDogY2hhbmdlZFBhdGghLFxuICAgICAgICAgICAgZ3JvdXBBbGxvd1VuYmFsYW5jZWQ6ICB0aGlzLmdyaWRPcHRpb25zU2VydmljZS5nZXQoJ2dyb3VwQWxsb3dVbmJhbGFuY2VkJyksXG4gICAgICAgICAgICBpc0dyb3VwT3BlbkJ5RGVmYXVsdDogdGhpcy5ncmlkT3B0aW9uc1NlcnZpY2UuZ2V0Q2FsbGJhY2soJ2lzR3JvdXBPcGVuQnlEZWZhdWx0JykgYXMgYW55LFxuICAgICAgICAgICAgaW5pdGlhbEdyb3VwT3JkZXJDb21wYXJhdG9yOiB0aGlzLmdyaWRPcHRpb25zU2VydmljZS5nZXRDYWxsYmFjaygnaW5pdGlhbEdyb3VwT3JkZXJDb21wYXJhdG9yJykgYXMgYW55LFxuICAgICAgICAgICAgdXNpbmdUcmVlRGF0YTogdXNpbmdUcmVlRGF0YSxcbiAgICAgICAgICAgIHN1cHByZXNzR3JvdXBNYWludGFpblZhbHVlVHlwZTogdGhpcy5ncmlkT3B0aW9uc1NlcnZpY2UuZ2V0KCdzdXBwcmVzc0dyb3VwTWFpbnRhaW5WYWx1ZVR5cGUnKSxcbiAgICAgICAgICAgIGdldERhdGFQYXRoOiB1c2luZ1RyZWVEYXRhID8gdGhpcy5ncmlkT3B0aW9uc1NlcnZpY2UuZ2V0KCdnZXREYXRhUGF0aCcpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAga2V5Q3JlYXRvcnM6IGdyb3VwZWRDb2xzPy5tYXAoY29sdW1uID0+IGNvbHVtbi5nZXRDb2xEZWYoKS5rZXlDcmVhdG9yKSA/PyBbXVxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBkZXRhaWxzO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlVHJhbnNhY3Rpb24oZGV0YWlsczogR3JvdXBpbmdEZXRhaWxzKTogdm9pZCB7XG5cbiAgICAgICAgZGV0YWlscy50cmFuc2FjdGlvbnMuZm9yRWFjaCh0cmFuID0+IHtcbiAgICAgICAgICAgIC8vIHdlIGRvbid0IGFsbG93IGJhdGNoIHJlbW92ZXIgZm9yIHRyZWUgZGF0YSBhcyB0cmVlIGRhdGEgdXNlcyBGaWxsZXIgTm9kZXMsXG4gICAgICAgICAgICAvLyBhbmQgY3JlYXRpbmcvZGVsZXRpbmcgZmlsbGVyIG5vZGVzIG5lZWRzIHRvIGJlIGRvbmUgYWxvbmdzaWRlIHRoZSBub2RlIGRlbGV0aW5nXG4gICAgICAgICAgICAvLyBhbmQgbW92aW5nLiBpZiB3ZSB3YW50IHRvIEJhdGNoIFJlbW92ZXIgd29ya2luZyB3aXRoIHRyZWUgZGF0YSB0aGVuIHdvdWxkIG5lZWRcbiAgICAgICAgICAgIC8vIHRvIGNvbnNpZGVyIGhvdyBGaWxsZXIgTm9kZXMgd291bGQgYmUgaW1wYWN0ZWQgKGl0J3MgcG9zc2libGUgdGhhdCBpdCBjYW4gYmUgZWFzaWx5XG4gICAgICAgICAgICAvLyBtb2RpZmllZCB0byB3b3JrLCBob3dldmVyIGZvciBub3cgSSBkb24ndCBoYXZlIHRoZSBicmFpbiBlbmVyZ3kgdG8gd29yayBpdCBhbGwgb3V0KS5cbiAgICAgICAgICAgIGNvbnN0IGJhdGNoUmVtb3ZlciA9ICFkZXRhaWxzLnVzaW5nVHJlZURhdGEgPyBuZXcgQmF0Y2hSZW1vdmVyKCkgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIC8vIHRoZSBvcmRlciBoZXJlIG9mIFthZGQsIHJlbW92ZSwgdXBkYXRlXSBuZWVkcyB0byBiZSB0aGUgc2FtZSBhcyBpbiBDbGllbnRTaWRlTm9kZU1hbmFnZXIsXG4gICAgICAgICAgICAvLyBhcyB0aGUgb3JkZXIgaXMgaW1wb3J0YW50IHdoZW4gYSByZWNvcmQgd2l0aCB0aGUgc2FtZSBpZCBpcyBhZGRlZCBhbmQgcmVtb3ZlZCBpbiB0aGUgc2FtZVxuICAgICAgICAgICAgLy8gdHJhbnNhY3Rpb24uXG4gICAgICAgICAgICBpZiAoXy5leGlzdHNBbmROb3RFbXB0eSh0cmFuLnJlbW92ZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZU5vZGVzKHRyYW4ucmVtb3ZlIGFzIFJvd05vZGVbXSwgZGV0YWlscywgYmF0Y2hSZW1vdmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChfLmV4aXN0c0FuZE5vdEVtcHR5KHRyYW4udXBkYXRlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubW92ZU5vZGVzSW5Xcm9uZ1BhdGgodHJhbi51cGRhdGUgYXMgUm93Tm9kZVtdLCBkZXRhaWxzLCBiYXRjaFJlbW92ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKF8uZXhpc3RzQW5kTm90RW1wdHkodHJhbi5hZGQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnNlcnROb2Rlcyh0cmFuLmFkZCBhcyBSb3dOb2RlW10sIGRldGFpbHMsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIG11c3QgZmx1c2ggaGVyZSwgYW5kIG5vdCBhbGxvdyBhbm90aGVyIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQsXG4gICAgICAgICAgICAvLyBhcyBlYWNoIHRyYW5zYWN0aW9uIG11c3QgZmluaXNoIGxlYXZpbmcgdGhlIGRhdGEgaW4gYSBjb25zaXN0ZW50IHN0YXRlLlxuICAgICAgICAgICAgaWYgKGJhdGNoUmVtb3Zlcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudHNXaXRoQ2hpbGRyZW5SZW1vdmVkID0gYmF0Y2hSZW1vdmVyLmdldEFsbFBhcmVudHMoKS5zbGljZSgpO1xuICAgICAgICAgICAgICAgIGJhdGNoUmVtb3Zlci5mbHVzaCgpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRW1wdHlHcm91cHMocGFyZW50c1dpdGhDaGlsZHJlblJlbW92ZWQsIGRldGFpbHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoZGV0YWlscy5yb3dOb2RlT3JkZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc29ydENoaWxkcmVuKGRldGFpbHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gdGhpcyBpcyB1c2VkIHdoZW4gZG9pbmcgZGVsdGEgdXBkYXRlcywgZWcgUmVkdXgsIGtlZXBzIG5vZGVzIGluIHJpZ2h0IG9yZGVyXG4gICAgcHJpdmF0ZSBzb3J0Q2hpbGRyZW4oZGV0YWlsczogR3JvdXBpbmdEZXRhaWxzKTogdm9pZCB7XG4gICAgICAgIGRldGFpbHMuY2hhbmdlZFBhdGguZm9yRWFjaENoYW5nZWROb2RlRGVwdGhGaXJzdChub2RlID0+IHtcbiAgICAgICAgICAgIGlmICghbm9kZS5jaGlsZHJlbkFmdGVyR3JvdXApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGRpZFNvcnQgPSBfLnNvcnRSb3dOb2Rlc0J5T3JkZXIobm9kZS5jaGlsZHJlbkFmdGVyR3JvdXAhLCBkZXRhaWxzLnJvd05vZGVPcmRlcik7XG4gICAgICAgICAgICBpZiAoZGlkU29ydCkge1xuICAgICAgICAgICAgICAgIGRldGFpbHMuY2hhbmdlZFBhdGguYWRkUGFyZW50Tm9kZShub2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZmFsc2UsIHRydWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3JkZXJHcm91cHMoZGV0YWlsczogR3JvdXBpbmdEZXRhaWxzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbXBhcmF0b3IgPSBkZXRhaWxzLmluaXRpYWxHcm91cE9yZGVyQ29tcGFyYXRvcjtcbiAgICAgICAgaWYgKF8uZXhpc3RzKGNvbXBhcmF0b3IpKSB7IHJlY3Vyc2l2ZVNvcnQoZGV0YWlscy5yb290Tm9kZSk7IH1cblxuICAgICAgICBmdW5jdGlvbiByZWN1cnNpdmVTb3J0KHJvd05vZGU6IFJvd05vZGUpOiB2b2lkIHtcbiAgICAgICAgICAgIGNvbnN0IGRvU29ydCA9IF8uZXhpc3RzKHJvd05vZGUuY2hpbGRyZW5BZnRlckdyb3VwKSAmJlxuICAgICAgICAgICAgICAgIC8vIHdlIG9ubHkgd2FudCB0byBzb3J0IGdyb3Vwcywgc28gd2UgZG8gbm90IHNvcnQgbGVhZnMgKGEgbGVhZiBncm91cCBoYXMgbGVhZnMgYXMgY2hpbGRyZW4pXG4gICAgICAgICAgICAgICAgIXJvd05vZGUubGVhZkdyb3VwO1xuXG4gICAgICAgICAgICBpZiAoZG9Tb3J0KSB7XG4gICAgICAgICAgICAgICAgcm93Tm9kZS5jaGlsZHJlbkFmdGVyR3JvdXAhLnNvcnQoKG5vZGVBLCBub2RlQikgPT4gY29tcGFyYXRvciEoeyBub2RlQSwgbm9kZUIgfSkpO1xuICAgICAgICAgICAgICAgIHJvd05vZGUuY2hpbGRyZW5BZnRlckdyb3VwIS5mb3JFYWNoKChjaGlsZE5vZGU6IFJvd05vZGUpID0+IHJlY3Vyc2l2ZVNvcnQoY2hpbGROb2RlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEV4aXN0aW5nUGF0aEZvck5vZGUobm9kZTogUm93Tm9kZSwgZGV0YWlsczogR3JvdXBpbmdEZXRhaWxzKTogR3JvdXBJbmZvW10ge1xuICAgICAgICBjb25zdCByZXM6IEdyb3VwSW5mb1tdID0gW107XG5cbiAgICAgICAgLy8gd2hlbiBkb2luZyB0cmVlIGRhdGEsIHRoZSBub2RlIGlzIHBhcnQgb2YgdGhlIHBhdGgsXG4gICAgICAgIC8vIGJ1dCB3aGVuIGRvaW5nIGdyaWQgZ3JvdXBpbmcsIHRoZSBub2RlIGlzIG5vdCBwYXJ0IG9mIHRoZSBwYXRoIHNvIHdlIHN0YXJ0IHdpdGggdGhlIHBhcmVudC5cbiAgICAgICAgbGV0IHBvaW50ZXIgPSBkZXRhaWxzLnVzaW5nVHJlZURhdGEgPyBub2RlIDogbm9kZS5wYXJlbnQ7XG4gICAgICAgIHdoaWxlIChwb2ludGVyICYmIHBvaW50ZXIgIT09IGRldGFpbHMucm9vdE5vZGUpIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBrZXk6IHBvaW50ZXIua2V5ISxcbiAgICAgICAgICAgICAgICByb3dHcm91cENvbHVtbjogcG9pbnRlci5yb3dHcm91cENvbHVtbixcbiAgICAgICAgICAgICAgICBmaWVsZDogcG9pbnRlci5maWVsZFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBwb2ludGVyID0gcG9pbnRlci5wYXJlbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmVzLnJldmVyc2UoKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vdmVOb2Rlc0luV3JvbmdQYXRoKGNoaWxkTm9kZXM6IFJvd05vZGVbXSwgZGV0YWlsczogR3JvdXBpbmdEZXRhaWxzLCBiYXRjaFJlbW92ZXI6IEJhdGNoUmVtb3ZlciB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICBjaGlsZE5vZGVzLmZvckVhY2goY2hpbGROb2RlID0+IHtcblxuICAgICAgICAgICAgLy8gd2UgYWRkIG5vZGUsIGV2ZW4gaWYgcGFyZW50IGhhcyBub3QgY2hhbmdlZCwgYXMgdGhlIGRhdGEgY291bGQgaGF2ZVxuICAgICAgICAgICAgLy8gY2hhbmdlZCwgaGVuY2UgYWdncmVnYXRpb25zIHdpbGwgYmUgd3JvbmdcbiAgICAgICAgICAgIGlmIChkZXRhaWxzLmNoYW5nZWRQYXRoLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgICAgICAgICBkZXRhaWxzLmNoYW5nZWRQYXRoLmFkZFBhcmVudE5vZGUoY2hpbGROb2RlLnBhcmVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGluZm9Ub0tleU1hcHBlciA9IChpdGVtOiBHcm91cEluZm8pID0+IGl0ZW0ua2V5O1xuICAgICAgICAgICAgY29uc3Qgb2xkUGF0aDogc3RyaW5nW10gPSB0aGlzLmdldEV4aXN0aW5nUGF0aEZvck5vZGUoY2hpbGROb2RlLCBkZXRhaWxzKS5tYXAoaW5mb1RvS2V5TWFwcGVyKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1BhdGg6IHN0cmluZ1tdID0gdGhpcy5nZXRHcm91cEluZm8oY2hpbGROb2RlLCBkZXRhaWxzKS5tYXAoaW5mb1RvS2V5TWFwcGVyKTtcblxuICAgICAgICAgICAgY29uc3Qgbm9kZUluQ29ycmVjdFBhdGggPSBfLmFyZUVxdWFsKG9sZFBhdGgsIG5ld1BhdGgpO1xuXG4gICAgICAgICAgICBpZiAoIW5vZGVJbkNvcnJlY3RQYXRoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZlTm9kZShjaGlsZE5vZGUsIGRldGFpbHMsIGJhdGNoUmVtb3Zlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW92ZU5vZGUoY2hpbGROb2RlOiBSb3dOb2RlLCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMsIGJhdGNoUmVtb3ZlcjogQmF0Y2hSZW1vdmVyIHwgdW5kZWZpbmVkKTogdm9pZCB7XG5cbiAgICAgICAgdGhpcy5yZW1vdmVOb2Rlc0luU3RhZ2VzKFtjaGlsZE5vZGVdLCBkZXRhaWxzLCBiYXRjaFJlbW92ZXIpO1xuICAgICAgICB0aGlzLmluc2VydE9uZU5vZGUoY2hpbGROb2RlLCBkZXRhaWxzLCB0cnVlLCBiYXRjaFJlbW92ZXIpO1xuXG4gICAgICAgIC8vIGhhY2sgLSBpZiB3ZSBkaWRuJ3QgZG8gdGhpcywgdGhlbiByZW5hbWluZyBhIHRyZWUgaXRlbSAoaWUgY2hhbmdpbmcgcm93Tm9kZS5rZXkpIHdvdWxkbid0IGdldFxuICAgICAgICAvLyByZWZyZXNoZWQgaW50byB0aGUgZ3VpLlxuICAgICAgICAvLyB0aGlzIGlzIG5lZWRlZCB0byBraWNrIG9mZiB0aGUgZXZlbnQgdGhhdCByb3dDb21wIGxpc3RlbnMgdG8gZm9yIHJlZnJlc2guIHRoaXMgaW4gdHVyblxuICAgICAgICAvLyB0aGVuIHdpbGwgZ2V0IGVhY2ggY2VsbCBpbiB0aGUgcm93IHRvIHJlZnJlc2ggLSB3aGljaCBpcyB3aGF0IHdlIG5lZWQgYXMgd2UgZG9uJ3Qga25vdyB3aGljaFxuICAgICAgICAvLyBjb2x1bW5zIHdpbGwgYmUgZGlzcGxheWluZyB0aGUgcm93Tm9kZS5rZXkgaW5mby5cbiAgICAgICAgY2hpbGROb2RlLnNldERhdGEoY2hpbGROb2RlLmRhdGEpO1xuXG4gICAgICAgIC8vIHdlIGFkZCBib3RoIG9sZCBhbmQgbmV3IHBhcmVudHMgdG8gY2hhbmdlZCBwYXRoLCBhcyBib3RoIHdpbGwgbmVlZCB0byBiZSByZWZyZXNoZWQuXG4gICAgICAgIC8vIHdlIGFscmVhZHkgYWRkZWQgdGhlIG9sZCBwYXJlbnQgKGluIGNhbGxpbmcgbWV0aG9kKSwgc28ganVzdCBhZGQgdGhlIG5ldyBwYXJlbnQgaGVyZVxuICAgICAgICBpZiAoZGV0YWlscy5jaGFuZ2VkUGF0aC5pc0FjdGl2ZSgpKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdQYXJlbnQgPSBjaGlsZE5vZGUucGFyZW50O1xuICAgICAgICAgICAgZGV0YWlscy5jaGFuZ2VkUGF0aC5hZGRQYXJlbnROb2RlKG5ld1BhcmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZU5vZGVzKGxlYWZSb3dOb2RlczogUm93Tm9kZVtdLCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMsIGJhdGNoUmVtb3ZlcjogQmF0Y2hSZW1vdmVyIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVtb3ZlTm9kZXNJblN0YWdlcyhsZWFmUm93Tm9kZXMsIGRldGFpbHMsIGJhdGNoUmVtb3Zlcik7XG4gICAgICAgIGlmIChkZXRhaWxzLmNoYW5nZWRQYXRoLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgICAgIGxlYWZSb3dOb2Rlcy5mb3JFYWNoKHJvd05vZGUgPT4gZGV0YWlscy5jaGFuZ2VkUGF0aC5hZGRQYXJlbnROb2RlKHJvd05vZGUucGFyZW50KSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZU5vZGVzSW5TdGFnZXMobGVhZlJvd05vZGVzOiBSb3dOb2RlW10sIGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscywgYmF0Y2hSZW1vdmVyOiBCYXRjaFJlbW92ZXIgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW1vdmVOb2Rlc0Zyb21QYXJlbnRzKGxlYWZSb3dOb2RlcywgZGV0YWlscywgYmF0Y2hSZW1vdmVyKTtcbiAgICAgICAgaWYgKGRldGFpbHMudXNpbmdUcmVlRGF0YSkge1xuICAgICAgICAgICAgdGhpcy5wb3N0UmVtb3ZlQ3JlYXRlRmlsbGVyTm9kZXMobGVhZlJvd05vZGVzLCBkZXRhaWxzKTtcblxuICAgICAgICAgICAgLy8gV2hlbiBub3QgVHJlZURhdGEsIHRoZW4gcmVtb3ZlRW1wdHlHcm91cHMgaXMgY2FsbGVkIGp1c3QgYmVmb3JlIHRoZSBCYXRjaFJlbW92ZXIgaXMgZmx1c2hlZC5cbiAgICAgICAgICAgIC8vIEhvd2V2ZXIgZm9yIFRyZWVEYXRhLCB0aGVyZSBpcyBubyBCYXRjaFJlbW92ZXIsIHNvIHdlIGhhdmUgdG8gY2FsbCByZW1vdmVFbXB0eUdyb3VwcyBoZXJlLlxuICAgICAgICAgICAgY29uc3Qgbm9kZVBhcmVudHMgPSBsZWFmUm93Tm9kZXMubWFwKG4gPT4gbi5wYXJlbnQhKTtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlRW1wdHlHcm91cHMobm9kZVBhcmVudHMsIGRldGFpbHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JFYWNoUGFyZW50R3JvdXAoZGV0YWlsczogR3JvdXBpbmdEZXRhaWxzLCBncm91cDogUm93Tm9kZSwgY2FsbGJhY2s6IChwYXJlbnQ6IFJvd05vZGUpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgbGV0IHBvaW50ZXI6IFJvd05vZGUgfCBudWxsID0gZ3JvdXA7XG4gICAgICAgIHdoaWxlIChwb2ludGVyICYmIHBvaW50ZXIgIT09IGRldGFpbHMucm9vdE5vZGUpIHtcbiAgICAgICAgICAgIGNhbGxiYWNrKHBvaW50ZXIpO1xuICAgICAgICAgICAgcG9pbnRlciA9IHBvaW50ZXIucGFyZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVOb2Rlc0Zyb21QYXJlbnRzKG5vZGVzVG9SZW1vdmU6IFJvd05vZGVbXSwgZGV0YWlsczogR3JvdXBpbmdEZXRhaWxzLCBwcm92aWRlZDogQmF0Y2hSZW1vdmVyIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICAgIC8vIHRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQgd2l0aCBCYXRjaFJlbW92ZXIgYXMgb3B0aW9uYWwuIGlmIGl0IGlzIG1pc3NlZCwgd2UgY3JlYXRlZCBhIGxvY2FsIHZlcnNpb25cbiAgICAgICAgLy8gYW5kIGZsdXNoIGl0IGF0IHRoZSBlbmQuIGlmIG9uZSBpcyBwcm92aWRlZCwgd2UgYWRkIHRvIHRoZSBwcm92aWRlZCBvbmUgYW5kIGl0IGdldHMgZmx1c2hlZCBlbHNld2hlcmUuXG4gICAgICAgIGNvbnN0IGJhdGNoUmVtb3ZlcklzTG9jYWwgPSBwcm92aWRlZCA9PSBudWxsO1xuICAgICAgICBjb25zdCBiYXRjaFJlbW92ZXJUb1VzZSA9IHByb3ZpZGVkID8gcHJvdmlkZWQgOiBuZXcgQmF0Y2hSZW1vdmVyKCk7XG5cbiAgICAgICAgbm9kZXNUb1JlbW92ZS5mb3JFYWNoKG5vZGVUb1JlbW92ZSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUZyb21QYXJlbnQobm9kZVRvUmVtb3ZlLCBiYXRjaFJlbW92ZXJUb1VzZSk7XG5cbiAgICAgICAgICAgIC8vIHJlbW92ZSBmcm9tIGFsbExlYWZDaGlsZHJlbi4gd2UgY2xlYXIgZG93biBhbGwgcGFyZW50cyBFWENFUFQgdGhlIFJvb3QgTm9kZSwgYXNcbiAgICAgICAgICAgIC8vIHRoZSBDbGllbnRTaWRlTm9kZU1hbmFnZXIgaXMgcmVzcG9uc2libGUgZm9yIHRoZSBSb290IE5vZGUuXG4gICAgICAgICAgICB0aGlzLmZvckVhY2hQYXJlbnRHcm91cChkZXRhaWxzLCBub2RlVG9SZW1vdmUucGFyZW50ISwgcGFyZW50Tm9kZSA9PiB7XG4gICAgICAgICAgICAgICAgYmF0Y2hSZW1vdmVyVG9Vc2UucmVtb3ZlRnJvbUFsbExlYWZDaGlsZHJlbihwYXJlbnROb2RlLCBub2RlVG9SZW1vdmUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChiYXRjaFJlbW92ZXJJc0xvY2FsKSB7XG4gICAgICAgICAgICBiYXRjaFJlbW92ZXJUb1VzZS5mbHVzaCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwb3N0UmVtb3ZlQ3JlYXRlRmlsbGVyTm9kZXMobm9kZXNUb1JlbW92ZTogUm93Tm9kZVtdLCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMpOiB2b2lkIHtcbiAgICAgICAgbm9kZXNUb1JlbW92ZS5mb3JFYWNoKG5vZGVUb1JlbW92ZSA9PiB7XG5cbiAgICAgICAgICAgIC8vIGlmIG5vdCBncm91cCwgYW5kIGNoaWxkcmVuIGFyZSBwcmVzZW50LCBuZWVkIHRvIG1vdmUgY2hpbGRyZW4gdG8gYSBncm91cC5cbiAgICAgICAgICAgIC8vIG90aGVyd2lzZSBpZiBubyBjaGlsZHJlbiwgd2UgY2FuIGp1c3QgcmVtb3ZlIHdpdGhvdXQgcmVwbGFjaW5nLlxuICAgICAgICAgICAgY29uc3QgcmVwbGFjZVdpdGhHcm91cCA9IG5vZGVUb1JlbW92ZS5oYXNDaGlsZHJlbigpO1xuICAgICAgICAgICAgaWYgKHJlcGxhY2VXaXRoR3JvdXApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvbGRQYXRoID0gdGhpcy5nZXRFeGlzdGluZ1BhdGhGb3JOb2RlKG5vZGVUb1JlbW92ZSwgZGV0YWlscyk7XG4gICAgICAgICAgICAgICAgLy8gYmVjYXVzZSB3ZSBqdXN0IHJlbW92ZWQgdGhlIHVzZXJHcm91cCwgdGhpcyB3aWxsIGFsd2F5cyByZXR1cm4gbmV3IHN1cHBvcnQgZ3JvdXBcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdHcm91cE5vZGUgPSB0aGlzLmZpbmRQYXJlbnRGb3JOb2RlKG5vZGVUb1JlbW92ZSwgb2xkUGF0aCwgZGV0YWlscyk7XG5cbiAgICAgICAgICAgICAgICAvLyB0aGVzZSBwcm9wZXJ0aWVzIGFyZSB0aGUgb25lcyB0aGF0IHdpbGwgYmUgaW5jb3JyZWN0IGluIHRoZSBuZXdseSBjcmVhdGVkIGdyb3VwLFxuICAgICAgICAgICAgICAgIC8vIHNvIGNvcHkgdGhlbSBmcm9tIHRoZSBvbGQgY2hpbGROb2RlXG4gICAgICAgICAgICAgICAgbmV3R3JvdXBOb2RlLmV4cGFuZGVkID0gbm9kZVRvUmVtb3ZlLmV4cGFuZGVkO1xuICAgICAgICAgICAgICAgIG5ld0dyb3VwTm9kZS5hbGxMZWFmQ2hpbGRyZW4gPSBub2RlVG9SZW1vdmUuYWxsTGVhZkNoaWxkcmVuO1xuICAgICAgICAgICAgICAgIG5ld0dyb3VwTm9kZS5jaGlsZHJlbkFmdGVyR3JvdXAgPSBub2RlVG9SZW1vdmUuY2hpbGRyZW5BZnRlckdyb3VwO1xuICAgICAgICAgICAgICAgIG5ld0dyb3VwTm9kZS5jaGlsZHJlbk1hcHBlZCA9IG5vZGVUb1JlbW92ZS5jaGlsZHJlbk1hcHBlZDtcbiAgICAgICAgICAgICAgICBuZXdHcm91cE5vZGUudXBkYXRlSGFzQ2hpbGRyZW4oKTtcblxuICAgICAgICAgICAgICAgIG5ld0dyb3VwTm9kZS5jaGlsZHJlbkFmdGVyR3JvdXAhLmZvckVhY2gocm93Tm9kZSA9PiByb3dOb2RlLnBhcmVudCA9IG5ld0dyb3VwTm9kZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVFbXB0eUdyb3Vwcyhwb3NzaWJsZUVtcHR5R3JvdXBzOiBSb3dOb2RlW10sIGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscyk6IHZvaWQge1xuICAgICAgICAvLyB3ZSBkbyB0aGlzIG11bHRpcGxlIHRpbWVzLCBhcyB3aGVuIHdlIHJlbW92ZSBncm91cHMsIHRoYXQgbWVhbnMgdGhlIHBhcmVudCBvZiBqdXN0IHJlbW92ZWRcbiAgICAgICAgLy8gZ3JvdXAgY2FuIHRoZW4gYmUgZW1wdHkuIHRvIGdldCBhcm91bmQgdGhpcywgaWYgd2UgcmVtb3ZlLCB0aGVuIHdlIGNoZWNrIGV2ZXJ5dGhpbmcgYWdhaW4gZm9yXG4gICAgICAgIC8vIG5ld2x5IGVtcHRpZWQgZ3JvdXBzLiB0aGUgbWF4IG51bWJlciBvZiB0aW1lcyB0aGlzIHdpbGwgZXhlY3V0ZSBpcyB0aGUgZGVwdGggb2YgdGhlIGdyb3VwIHRyZWUuXG4gICAgICAgIGxldCBjaGVja0FnYWluID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBncm91cFNob3VsZEJlUmVtb3ZlZCA9IChyb3dOb2RlOiBSb3dOb2RlKTogYm9vbGVhbiA9PiB7XG5cbiAgICAgICAgICAgIC8vIGJlY2F1c2Ugb2YgdGhlIHdoaWxlIGxvb3AgYmVsb3csIGl0J3MgcG9zc2libGUgd2UgYWxyZWFkeSBtb3ZlZCB0aGUgbm9kZSxcbiAgICAgICAgICAgIC8vIHNvIGRvdWJsZSBjaGVjayBiZWZvcmUgdHJ5aW5nIHRvIHJlbW92ZSBhZ2Fpbi5cbiAgICAgICAgICAgIGNvbnN0IG1hcEtleSA9IHRoaXMuZ2V0Q2hpbGRyZW5NYXBwZWRLZXkocm93Tm9kZS5rZXkhLCByb3dOb2RlLnJvd0dyb3VwQ29sdW1uKTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudFJvd05vZGUgPSByb3dOb2RlLnBhcmVudDtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwQWxyZWFkeVJlbW92ZWQgPSAocGFyZW50Um93Tm9kZSAmJiBwYXJlbnRSb3dOb2RlLmNoaWxkcmVuTWFwcGVkKSA/XG4gICAgICAgICAgICAgICAgIXBhcmVudFJvd05vZGUuY2hpbGRyZW5NYXBwZWRbbWFwS2V5XSA6IHRydWU7XG5cbiAgICAgICAgICAgIGlmIChncm91cEFscmVhZHlSZW1vdmVkKSB7XG4gICAgICAgICAgICAgICAgLy8gaWYgbm90IGxpbmtlZCwgdGhlbiBncm91cCB3YXMgYWxyZWFkeSByZW1vdmVkXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaWYgc3RpbGwgbm90IHJlbW92ZWQsIHRoZW4gd2UgcmVtb3ZlIGlmIHRoaXMgZ3JvdXAgaXMgZW1wdHlcbiAgICAgICAgICAgIHJldHVybiAhIXJvd05vZGUuaXNFbXB0eVJvd0dyb3VwTm9kZSgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHdoaWxlIChjaGVja0FnYWluKSB7XG4gICAgICAgICAgICBjaGVja0FnYWluID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBiYXRjaFJlbW92ZXI6IEJhdGNoUmVtb3ZlciA9IG5ldyBCYXRjaFJlbW92ZXIoKTtcbiAgICAgICAgICAgIHBvc3NpYmxlRW1wdHlHcm91cHMuZm9yRWFjaChwb3NzaWJsZUVtcHR5R3JvdXAgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBlbXB0eSBncm91cHNcbiAgICAgICAgICAgICAgICB0aGlzLmZvckVhY2hQYXJlbnRHcm91cChkZXRhaWxzLCBwb3NzaWJsZUVtcHR5R3JvdXAsIHJvd05vZGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZ3JvdXBTaG91bGRCZVJlbW92ZWQocm93Tm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrQWdhaW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVGcm9tUGFyZW50KHJvd05vZGUsIGJhdGNoUmVtb3Zlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSByZW1vdmUgc2VsZWN0aW9uIG9uIGZpbGxlciBub2RlcyBoZXJlLCBhcyB0aGUgc2VsZWN0aW9uIHdvdWxkIG5vdCBiZSByZW1vdmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBmcm9tIHRoZSBSb3dOb2RlTWFuYWdlciwgYXMgZmlsbGVyIG5vZGVzIGRvbid0IGV4aXN0IG9uIHRoZSBSb3dOb2RlTWFuYWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgcm93Tm9kZS5zZXRTZWxlY3RlZFBhcmFtcyh7IG5ld1ZhbHVlOiBmYWxzZSwgc291cmNlOiAncm93R3JvdXBDaGFuZ2VkJyB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBiYXRjaFJlbW92ZXIuZmx1c2goKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHJlbW92ZXMgdGhlIG5vZGUgZnJvbSB0aGUgcGFyZW50IGJ5OlxuICAgIC8vIGEpIHJlbW92aW5nIGZyb20gY2hpbGRyZW5BZnRlckdyb3VwICh1c2luZyBiYXRjaFJlbW92ZXIgaWYgcHJlc2VudCwgb3RoZXJ3aXNlIGltbWVkaWF0ZWx5KVxuICAgIC8vIGIpIHJlbW92aW5nIGZyb20gY2hpbGRyZW5NYXBwZWQgKGltbWVkaWF0ZWx5KVxuICAgIC8vIGMpIHNldFJvd1RvcChudWxsKSAtIGFzIHRoZSByb3dSZW5kZXJlciB1c2VzIHRoaXMgdG8ga25vdyB0aGUgUm93Tm9kZSBpcyBubyBsb25nZXIgbmVlZGVkXG4gICAgLy8gZCkgc2V0Um93SW5kZXgobnVsbCkgLSBhcyB0aGUgcm93Tm9kZSB3aWxsIG5vIGxvbmdlciBiZSBkaXNwbGF5ZWQuXG4gICAgcHJpdmF0ZSByZW1vdmVGcm9tUGFyZW50KGNoaWxkOiBSb3dOb2RlLCBiYXRjaFJlbW92ZXI/OiBCYXRjaFJlbW92ZXIpIHtcbiAgICAgICAgaWYgKGNoaWxkLnBhcmVudCkge1xuICAgICAgICAgICAgaWYgKGJhdGNoUmVtb3Zlcikge1xuICAgICAgICAgICAgICAgIGJhdGNoUmVtb3Zlci5yZW1vdmVGcm9tQ2hpbGRyZW5BZnRlckdyb3VwKGNoaWxkLnBhcmVudCwgY2hpbGQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBfLnJlbW92ZUZyb21BcnJheShjaGlsZC5wYXJlbnQuY2hpbGRyZW5BZnRlckdyb3VwISwgY2hpbGQpO1xuICAgICAgICAgICAgICAgIGNoaWxkLnBhcmVudC51cGRhdGVIYXNDaGlsZHJlbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1hcEtleSA9IHRoaXMuZ2V0Q2hpbGRyZW5NYXBwZWRLZXkoY2hpbGQua2V5ISwgY2hpbGQucm93R3JvdXBDb2x1bW4pO1xuICAgICAgICBpZiAoY2hpbGQucGFyZW50ICYmIGNoaWxkLnBhcmVudC5jaGlsZHJlbk1hcHBlZCkge1xuICAgICAgICAgICAgY2hpbGQucGFyZW50LmNoaWxkcmVuTWFwcGVkW21hcEtleV0gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gdGhpcyBpcyBpbXBvcnRhbnQgZm9yIHRyYW5zaXRpb24sIHNlZSByb3dDb21wIHJlbW92ZUZpcnN0UGFzc0Z1bmNzLiB3aGVuIGRvaW5nIGFuaW1hdGlvbiBhbmRcbiAgICAgICAgLy8gcmVtb3ZlLCBpZiByb3dUb3AgaXMgc3RpbGwgcHJlc2VudCwgdGhlIHJvd0NvbXAgdGhpbmtzIGl0J3MganVzdCBtb3ZlZCBwb3NpdGlvbi5cbiAgICAgICAgY2hpbGQuc2V0Um93VG9wKG51bGwpO1xuICAgICAgICBjaGlsZC5zZXRSb3dJbmRleChudWxsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZFRvUGFyZW50KGNoaWxkOiBSb3dOb2RlLCBwYXJlbnQ6IFJvd05vZGUgfCBudWxsKSB7XG4gICAgICAgIGNvbnN0IG1hcEtleSA9IHRoaXMuZ2V0Q2hpbGRyZW5NYXBwZWRLZXkoY2hpbGQua2V5ISwgY2hpbGQucm93R3JvdXBDb2x1bW4pO1xuICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHBhcmVudC5jaGlsZHJlbk1hcHBlZCAhPSBudWxsO1xuICAgICAgICAgICAgaWYgKGNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgcGFyZW50LmNoaWxkcmVuTWFwcGVkIVttYXBLZXldID0gY2hpbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXJlbnQuY2hpbGRyZW5BZnRlckdyb3VwIS5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgIHBhcmVudC51cGRhdGVIYXNDaGlsZHJlbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcmVHcm91cENvbHNFcXVhbChkMTogR3JvdXBpbmdEZXRhaWxzLCBkMjogR3JvdXBpbmdEZXRhaWxzKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChkMSA9PSBudWxsIHx8IGQyID09IG51bGwgfHwgZDEucGl2b3RNb2RlICE9PSBkMi5waXZvdE1vZGUpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgICAgICAgcmV0dXJuIF8uYXJlRXF1YWwoZDEuZ3JvdXBlZENvbHMsIGQyLmdyb3VwZWRDb2xzKSAmJiBfLmFyZUVxdWFsKGQxLmtleUNyZWF0b3JzLCBkMi5rZXlDcmVhdG9ycyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0FsbEdyb3VwRGF0YUFmdGVyQ29sc0NoYW5nZWQoZGV0YWlsczogR3JvdXBpbmdEZXRhaWxzKTogdm9pZCB7XG5cbiAgICAgICAgY29uc3QgcmVjdXJzZSA9IChyb3dOb2RlczogUm93Tm9kZVtdIHwgbnVsbCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFyb3dOb2RlcykgeyByZXR1cm47IH1cbiAgICAgICAgICAgIHJvd05vZGVzLmZvckVhY2gocm93Tm9kZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNMZWFmTm9kZSA9ICFkZXRhaWxzLnVzaW5nVHJlZURhdGEgJiYgIXJvd05vZGUuZ3JvdXA7XG4gICAgICAgICAgICAgICAgaWYgKGlzTGVhZk5vZGUpIHsgcmV0dXJuOyB9XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBJbmZvOiBHcm91cEluZm8gPSB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkOiByb3dOb2RlLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICBrZXk6IHJvd05vZGUua2V5ISxcbiAgICAgICAgICAgICAgICAgICAgcm93R3JvdXBDb2x1bW46IHJvd05vZGUucm93R3JvdXBDb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgIGxlYWZOb2RlOiByb3dOb2RlLmFsbExlYWZDaGlsZHJlblswXSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0R3JvdXBEYXRhKHJvd05vZGUsIGdyb3VwSW5mbywgZGV0YWlscyk7XG4gICAgICAgICAgICAgICAgcmVjdXJzZShyb3dOb2RlLmNoaWxkcmVuQWZ0ZXJHcm91cCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICByZWN1cnNlKGRldGFpbHMucm9vdE5vZGUuY2hpbGRyZW5BZnRlckdyb3VwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3RndW5SZXNldEV2ZXJ5dGhpbmcoZGV0YWlsczogR3JvdXBpbmdEZXRhaWxzLCBhZnRlckNvbHVtbnNDaGFuZ2VkOiBib29sZWFuKTogdm9pZCB7XG5cbiAgICAgICAgaWYgKHRoaXMubm9DaGFuZ2VJbkdyb3VwaW5nQ29sdW1ucyhkZXRhaWxzLCBhZnRlckNvbHVtbnNDaGFuZ2VkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZ3JvdXBzIGFyZSBhYm91dCB0byBnZXQgZGlzcG9zZWQsIHNvIG5lZWQgdG8gZGVzZWxlY3QgYW55IHRoYXQgYXJlIHNlbGVjdGVkXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5maWx0ZXJGcm9tU2VsZWN0aW9uKChub2RlOiBSb3dOb2RlKSA9PiBub2RlICYmICFub2RlLmdyb3VwKTtcblxuICAgICAgICBjb25zdCB7IHJvb3ROb2RlLCBncm91cGVkQ29scyB9ID0gZGV0YWlscztcbiAgICAgICAgLy8gYmVjYXVzZSB3ZSBhcmUgbm90IGNyZWF0aW5nIHRoZSByb290IG5vZGUgZWFjaCB0aW1lLCB3ZSBoYXZlIHRoZSBsb2dpY1xuICAgICAgICAvLyBoZXJlIHRvIGNoYW5nZSBsZWFmR3JvdXAgb25jZS5cbiAgICAgICAgLy8gd2Ugc2V0IC5sZWFmR3JvdXAgdG8gZmFsc2UgZm9yIHRyZWUgZGF0YSwgYXMgLmxlYWZHcm91cCBpcyBvbmx5IHVzZWQgd2hlbiBwaXZvdGluZywgYW5kIHBpdm90aW5nXG4gICAgICAgIC8vIGlzbid0IGFsbG93ZWQgd2l0aCB0cmVlRGF0YSwgc28gdGhlIGdyaWQgbmV2ZXIgYWN0dWFsbHkgdXNlIC5sZWFmR3JvdXAgd2hlbiBkb2luZyB0cmVlRGF0YS5cbiAgICAgICAgcm9vdE5vZGUubGVhZkdyb3VwID0gZGV0YWlscy51c2luZ1RyZWVEYXRhID8gZmFsc2UgOiBncm91cGVkQ29scy5sZW5ndGggPT09IDA7XG5cbiAgICAgICAgLy8gd2UgYXJlIGRvaW5nIGV2ZXJ5dGhpbmcgZnJvbSBzY3JhdGNoLCBzbyByZXNldCBjaGlsZHJlbkFmdGVyR3JvdXAgYW5kIGNoaWxkcmVuTWFwcGVkIGZyb20gdGhlIHJvb3ROb2RlXG4gICAgICAgIHJvb3ROb2RlLmNoaWxkcmVuQWZ0ZXJHcm91cCA9IFtdO1xuICAgICAgICByb290Tm9kZS5jaGlsZHJlbk1hcHBlZCA9IHt9O1xuICAgICAgICByb290Tm9kZS51cGRhdGVIYXNDaGlsZHJlbigpO1xuXG4gICAgICAgIGNvbnN0IHNpYmxpbmcgPSByb290Tm9kZS5zaWJsaW5nO1xuICAgICAgICBpZiAoc2libGluZykge1xuICAgICAgICAgICAgc2libGluZy5jaGlsZHJlbkFmdGVyR3JvdXAgPSByb290Tm9kZS5jaGlsZHJlbkFmdGVyR3JvdXA7XG4gICAgICAgICAgICBzaWJsaW5nLmNoaWxkcmVuTWFwcGVkID0gcm9vdE5vZGUuY2hpbGRyZW5NYXBwZWQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmluc2VydE5vZGVzKHJvb3ROb2RlLmFsbExlYWZDaGlsZHJlbiwgZGV0YWlscywgZmFsc2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbm9DaGFuZ2VJbkdyb3VwaW5nQ29sdW1ucyhkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMsIGFmdGVyQ29sdW1uc0NoYW5nZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICAgICAgbGV0IG5vRnVydGhlclByb2Nlc3NpbmdOZWVkZWQgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBncm91cERpc3BsYXlDb2x1bW5zID0gdGhpcy5jb2x1bW5Nb2RlbC5nZXRHcm91cERpc3BsYXlDb2x1bW5zKCk7XG4gICAgICAgIGNvbnN0IG5ld0dyb3VwRGlzcGxheUNvbElkcyA9IGdyb3VwRGlzcGxheUNvbHVtbnMgP1xuICAgICAgICAgICAgZ3JvdXBEaXNwbGF5Q29sdW1ucy5tYXAoYyA9PiBjLmdldElkKCkpLmpvaW4oJy0nKSA6ICcnO1xuXG4gICAgICAgIGlmIChhZnRlckNvbHVtbnNDaGFuZ2VkKSB7XG4gICAgICAgICAgICAvLyB3ZSBvbmx5IG5lZWQgdG8gcmVkbyBncm91cGluZyBpZiBkb2luZyBub3JtYWwgZ3JvdXBpbmcgKGllIG5vdCB0cmVlIGRhdGEpXG4gICAgICAgICAgICAvLyBhbmQgdGhlIGdyb3VwIGNvbHMgaGF2ZSBjaGFuZ2VkLlxuICAgICAgICAgICAgbm9GdXJ0aGVyUHJvY2Vzc2luZ05lZWRlZCA9IGRldGFpbHMudXNpbmdUcmVlRGF0YSB8fCB0aGlzLmFyZUdyb3VwQ29sc0VxdWFsKGRldGFpbHMsIHRoaXMub2xkR3JvdXBpbmdEZXRhaWxzKTtcblxuICAgICAgICAgICAgLy8gaWYgdGhlIGdyb3VwIGRpc3BsYXkgY29scyBoYXZlIGNoYW5nZWQsIHRoZW4gd2UgbmVlZCB0byB1cGRhdGUgcm93Tm9kZS5ncm91cERhdGFcbiAgICAgICAgICAgIC8vIChyZWdhcmRsZXNzIG9mIHRyZWUgZGF0YSBvciByb3cgZ3JvdXBpbmcpXG4gICAgICAgICAgICBpZiAodGhpcy5vbGRHcm91cERpc3BsYXlDb2xJZHMgIT09IG5ld0dyb3VwRGlzcGxheUNvbElkcykge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tBbGxHcm91cERhdGFBZnRlckNvbHNDaGFuZ2VkKGRldGFpbHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbGRHcm91cGluZ0RldGFpbHMgPSBkZXRhaWxzO1xuICAgICAgICB0aGlzLm9sZEdyb3VwRGlzcGxheUNvbElkcyA9IG5ld0dyb3VwRGlzcGxheUNvbElkcztcblxuICAgICAgICByZXR1cm4gbm9GdXJ0aGVyUHJvY2Vzc2luZ05lZWRlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluc2VydE5vZGVzKG5ld1Jvd05vZGVzOiBSb3dOb2RlW10sIGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscywgaXNNb3ZlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIG5ld1Jvd05vZGVzLmZvckVhY2gocm93Tm9kZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmluc2VydE9uZU5vZGUocm93Tm9kZSwgZGV0YWlscywgaXNNb3ZlKTtcbiAgICAgICAgICAgIGlmIChkZXRhaWxzLmNoYW5nZWRQYXRoLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgICAgICAgICBkZXRhaWxzLmNoYW5nZWRQYXRoLmFkZFBhcmVudE5vZGUocm93Tm9kZS5wYXJlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluc2VydE9uZU5vZGUoY2hpbGROb2RlOiBSb3dOb2RlLCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMsIGlzTW92ZTogYm9vbGVhbiwgYmF0Y2hSZW1vdmVyPzogQmF0Y2hSZW1vdmVyKTogdm9pZCB7XG5cbiAgICAgICAgY29uc3QgcGF0aDogR3JvdXBJbmZvW10gPSB0aGlzLmdldEdyb3VwSW5mbyhjaGlsZE5vZGUsIGRldGFpbHMpO1xuXG4gICAgICAgIGNvbnN0IHBhcmVudEdyb3VwID0gdGhpcy5maW5kUGFyZW50Rm9yTm9kZShjaGlsZE5vZGUsIHBhdGgsIGRldGFpbHMsIGJhdGNoUmVtb3Zlcik7XG4gICAgICAgIGlmICghcGFyZW50R3JvdXAuZ3JvdXApIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgQUcgR3JpZDogZHVwbGljYXRlIGdyb3VwIGtleXMgZm9yIHJvdyBkYXRhLCBrZXlzIHNob3VsZCBiZSB1bmlxdWVgLFxuICAgICAgICAgICAgICAgIFtwYXJlbnRHcm91cC5kYXRhLCBjaGlsZE5vZGUuZGF0YV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRldGFpbHMudXNpbmdUcmVlRGF0YSkge1xuICAgICAgICAgICAgdGhpcy5zd2FwR3JvdXBXaXRoVXNlck5vZGUocGFyZW50R3JvdXAsIGNoaWxkTm9kZSwgaXNNb3ZlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNoaWxkTm9kZS5wYXJlbnQgPSBwYXJlbnRHcm91cDtcbiAgICAgICAgICAgIGNoaWxkTm9kZS5sZXZlbCA9IHBhdGgubGVuZ3RoO1xuICAgICAgICAgICAgcGFyZW50R3JvdXAuY2hpbGRyZW5BZnRlckdyb3VwIS5wdXNoKGNoaWxkTm9kZSk7XG4gICAgICAgICAgICBwYXJlbnRHcm91cC51cGRhdGVIYXNDaGlsZHJlbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kUGFyZW50Rm9yTm9kZShjaGlsZE5vZGU6IFJvd05vZGUsIHBhdGg6IEdyb3VwSW5mb1tdLCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMsIGJhdGNoUmVtb3Zlcj86IEJhdGNoUmVtb3Zlcik6IFJvd05vZGUge1xuICAgICAgICBsZXQgbmV4dE5vZGU6IFJvd05vZGUgPSBkZXRhaWxzLnJvb3ROb2RlO1xuXG4gICAgICAgIHBhdGguZm9yRWFjaCgoZ3JvdXBJbmZvLCBsZXZlbCkgPT4ge1xuICAgICAgICAgICAgbmV4dE5vZGUgPSB0aGlzLmdldE9yQ3JlYXRlTmV4dE5vZGUobmV4dE5vZGUsIGdyb3VwSW5mbywgbGV2ZWwsIGRldGFpbHMpO1xuICAgICAgICAgICAgLy8gbm9kZSBnZXRzIGFkZGVkIHRvIGFsbCBncm91cCBub2Rlcy5cbiAgICAgICAgICAgIC8vIG5vdGU6IHdlIGRvIG5vdCBhZGQgdG8gcm9vdE5vZGUgaGVyZSwgYXMgdGhlIHJvb3ROb2RlIGlzIHRoZSBtYXN0ZXIgbGlzdCBvZiByb3dOb2Rlc1xuXG4gICAgICAgICAgICBpZiAoIWJhdGNoUmVtb3Zlcj8uaXNSZW1vdmVGcm9tQWxsTGVhZkNoaWxkcmVuKG5leHROb2RlLCBjaGlsZE5vZGUpKSB7XG4gICAgICAgICAgICAgICAgbmV4dE5vZGUuYWxsTGVhZkNoaWxkcmVuLnB1c2goY2hpbGROb2RlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gaWYgdGhpcyBub2RlIGlzIGFib3V0IHRvIGJlIHJlbW92ZWQsIHByZXZlbnQgdGhhdFxuICAgICAgICAgICAgICAgIGJhdGNoUmVtb3Zlcj8ucHJldmVudFJlbW92ZUZyb21BbGxMZWFmQ2hpbGRyZW4obmV4dE5vZGUsIGNoaWxkTm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBuZXh0Tm9kZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN3YXBHcm91cFdpdGhVc2VyTm9kZShmaWxsZXJHcm91cDogUm93Tm9kZSwgdXNlckdyb3VwOiBSb3dOb2RlLCBpc01vdmU6IGJvb2xlYW4pIHtcbiAgICAgICAgdXNlckdyb3VwLnBhcmVudCA9IGZpbGxlckdyb3VwLnBhcmVudDtcbiAgICAgICAgdXNlckdyb3VwLmtleSA9IGZpbGxlckdyb3VwLmtleTtcbiAgICAgICAgdXNlckdyb3VwLmZpZWxkID0gZmlsbGVyR3JvdXAuZmllbGQ7XG4gICAgICAgIHVzZXJHcm91cC5ncm91cERhdGEgPSBmaWxsZXJHcm91cC5ncm91cERhdGE7XG4gICAgICAgIHVzZXJHcm91cC5sZXZlbCA9IGZpbGxlckdyb3VwLmxldmVsO1xuICAgICAgICAvLyBBRy0zNDQxIC0gcHJlc2VydmUgdGhlIGV4aXN0aW5nIGV4cGFuZGVkIHN0YXR1cyBvZiB0aGUgbm9kZSBpZiB3ZSdyZSBtb3ZpbmcgaXQsIHNvIHRoYXRcbiAgICAgICAgLy8geW91IGNhbiBkcmFnIGEgc3ViIHRyZWUgZnJvbSBvbmUgcGFyZW50IHRvIGFub3RoZXIgd2l0aG91dCBjaGFuZ2luZyBpdHMgZXhwYW5zaW9uXG4gICAgICAgIGlmICghaXNNb3ZlKSB7XG4gICAgICAgICAgICB1c2VyR3JvdXAuZXhwYW5kZWQgPSBmaWxsZXJHcm91cC5leHBhbmRlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHdlIHNldCAubGVhZkdyb3VwIHRvIGZhbHNlIGZvciB0cmVlIGRhdGEsIGFzIC5sZWFmR3JvdXAgaXMgb25seSB1c2VkIHdoZW4gcGl2b3RpbmcsIGFuZCBwaXZvdGluZ1xuICAgICAgICAvLyBpc24ndCBhbGxvd2VkIHdpdGggdHJlZURhdGEsIHNvIHRoZSBncmlkIG5ldmVyIGFjdHVhbGx5IHVzZSAubGVhZkdyb3VwIHdoZW4gZG9pbmcgdHJlZURhdGEuXG4gICAgICAgIHVzZXJHcm91cC5sZWFmR3JvdXAgPSBmaWxsZXJHcm91cC5sZWFmR3JvdXA7XG5cbiAgICAgICAgLy8gYWx3YXlzIG51bGwgZm9yIHVzZXJHcm91cHMsIGFzIHJvdyBncm91cGluZyBpcyBub3QgYWxsb3dlZCB3aGVuIGRvaW5nIHRyZWUgZGF0YVxuICAgICAgICB1c2VyR3JvdXAucm93R3JvdXBJbmRleCA9IGZpbGxlckdyb3VwLnJvd0dyb3VwSW5kZXg7XG5cbiAgICAgICAgdXNlckdyb3VwLmFsbExlYWZDaGlsZHJlbiA9IGZpbGxlckdyb3VwLmFsbExlYWZDaGlsZHJlbjtcbiAgICAgICAgdXNlckdyb3VwLmNoaWxkcmVuQWZ0ZXJHcm91cCA9IGZpbGxlckdyb3VwLmNoaWxkcmVuQWZ0ZXJHcm91cDtcbiAgICAgICAgdXNlckdyb3VwLmNoaWxkcmVuTWFwcGVkID0gZmlsbGVyR3JvdXAuY2hpbGRyZW5NYXBwZWQ7XG4gICAgICAgIHVzZXJHcm91cC5zaWJsaW5nID0gZmlsbGVyR3JvdXAuc2libGluZztcbiAgICAgICAgdXNlckdyb3VwLnVwZGF0ZUhhc0NoaWxkcmVuKCk7XG5cbiAgICAgICAgdGhpcy5yZW1vdmVGcm9tUGFyZW50KGZpbGxlckdyb3VwKTtcbiAgICAgICAgdXNlckdyb3VwLmNoaWxkcmVuQWZ0ZXJHcm91cCEuZm9yRWFjaCgocm93Tm9kZTogUm93Tm9kZSkgPT4gcm93Tm9kZS5wYXJlbnQgPSB1c2VyR3JvdXApO1xuICAgICAgICB0aGlzLmFkZFRvUGFyZW50KHVzZXJHcm91cCwgZmlsbGVyR3JvdXAucGFyZW50KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE9yQ3JlYXRlTmV4dE5vZGUocGFyZW50R3JvdXA6IFJvd05vZGUsIGdyb3VwSW5mbzogR3JvdXBJbmZvLCBsZXZlbDogbnVtYmVyLFxuICAgICAgICBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMpOiBSb3dOb2RlIHtcblxuICAgICAgICBjb25zdCBrZXkgPSB0aGlzLmdldENoaWxkcmVuTWFwcGVkS2V5KGdyb3VwSW5mby5rZXksIGdyb3VwSW5mby5yb3dHcm91cENvbHVtbik7XG4gICAgICAgIGxldCBuZXh0Tm9kZSA9IHBhcmVudEdyb3VwLmNoaWxkcmVuTWFwcGVkID8gcGFyZW50R3JvdXAuY2hpbGRyZW5NYXBwZWRba2V5XSA6IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAoIW5leHROb2RlKSB7XG4gICAgICAgICAgICBuZXh0Tm9kZSA9IHRoaXMuY3JlYXRlR3JvdXAoZ3JvdXBJbmZvLCBwYXJlbnRHcm91cCwgbGV2ZWwsIGRldGFpbHMpO1xuICAgICAgICAgICAgLy8gYXR0YWNoIHRoZSBuZXcgZ3JvdXAgdG8gdGhlIHBhcmVudFxuICAgICAgICAgICAgdGhpcy5hZGRUb1BhcmVudChuZXh0Tm9kZSwgcGFyZW50R3JvdXApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5leHROb2RlO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlR3JvdXAoZ3JvdXBJbmZvOiBHcm91cEluZm8sIHBhcmVudDogUm93Tm9kZSwgbGV2ZWw6IG51bWJlciwgZGV0YWlsczogR3JvdXBpbmdEZXRhaWxzKTogUm93Tm9kZSB7XG4gICAgICAgIGNvbnN0IGdyb3VwTm9kZSA9IG5ldyBSb3dOb2RlKHRoaXMuYmVhbnMpO1xuXG4gICAgICAgIGdyb3VwTm9kZS5ncm91cCA9IHRydWU7XG4gICAgICAgIGdyb3VwTm9kZS5maWVsZCA9IGdyb3VwSW5mby5maWVsZDtcbiAgICAgICAgZ3JvdXBOb2RlLnJvd0dyb3VwQ29sdW1uID0gZ3JvdXBJbmZvLnJvd0dyb3VwQ29sdW1uO1xuXG4gICAgICAgIHRoaXMuc2V0R3JvdXBEYXRhKGdyb3VwTm9kZSwgZ3JvdXBJbmZvLCBkZXRhaWxzKTtcblxuICAgICAgICBncm91cE5vZGUua2V5ID0gZ3JvdXBJbmZvLmtleTtcbiAgICAgICAgZ3JvdXBOb2RlLmlkID0gdGhpcy5jcmVhdGVHcm91cElkKGdyb3VwTm9kZSwgcGFyZW50LCBkZXRhaWxzLnVzaW5nVHJlZURhdGEsIGxldmVsKTtcblxuICAgICAgICBncm91cE5vZGUubGV2ZWwgPSBsZXZlbDtcbiAgICAgICAgZ3JvdXBOb2RlLmxlYWZHcm91cCA9IGRldGFpbHMudXNpbmdUcmVlRGF0YSA/IGZhbHNlIDogbGV2ZWwgPT09IChkZXRhaWxzLmdyb3VwZWRDb2xDb3VudCAtIDEpO1xuXG4gICAgICAgIGdyb3VwTm9kZS5hbGxMZWFmQ2hpbGRyZW4gPSBbXTtcblxuICAgICAgICAvLyB3aHkgaXMgdGhpcyBkb25lIGhlcmU/IHdlIGFyZSBub3QgdXBkYXRpbmcgdGhlIGNoaWxkcmVuIGNvdW50IGFzIHdlIGdvLFxuICAgICAgICAvLyBpIHN1c3BlY3QgdGhpcyBpcyB1cGRhdGVkIGluIHRoZSBmaWx0ZXIgc3RhZ2VcbiAgICAgICAgZ3JvdXBOb2RlLnNldEFsbENoaWxkcmVuQ291bnQoMCk7XG5cbiAgICAgICAgZ3JvdXBOb2RlLnJvd0dyb3VwSW5kZXggPSBkZXRhaWxzLnVzaW5nVHJlZURhdGEgPyBudWxsIDogbGV2ZWw7XG5cbiAgICAgICAgZ3JvdXBOb2RlLmNoaWxkcmVuQWZ0ZXJHcm91cCA9IFtdO1xuICAgICAgICBncm91cE5vZGUuY2hpbGRyZW5NYXBwZWQgPSB7fTtcbiAgICAgICAgZ3JvdXBOb2RlLnVwZGF0ZUhhc0NoaWxkcmVuKCk7XG5cbiAgICAgICAgZ3JvdXBOb2RlLnBhcmVudCA9IGRldGFpbHMuaW5jbHVkZVBhcmVudHMgPyBwYXJlbnQgOiBudWxsO1xuXG4gICAgICAgIHRoaXMuc2V0RXhwYW5kZWRJbml0aWFsVmFsdWUoZGV0YWlscywgZ3JvdXBOb2RlKTtcblxuICAgICAgICByZXR1cm4gZ3JvdXBOb2RlO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlR3JvdXBJZChub2RlOiBSb3dOb2RlLCBwYXJlbnQ6IFJvd05vZGUsIHVzaW5nVHJlZURhdGE6IGJvb2xlYW4sIGxldmVsOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICBsZXQgY3JlYXRlR3JvdXBJZDogKG5vZGU6IFJvd05vZGUsIHBhcmVudDogUm93Tm9kZSB8IG51bGwsIGxldmVsOiBudW1iZXIpID0+IHN0cmluZyB8IG51bGw7XG4gICAgICAgIGlmICh1c2luZ1RyZWVEYXRhKSB7XG4gICAgICAgICAgICBjcmVhdGVHcm91cElkID0gKG5vZGUsIHBhcmVudCwgbGV2ZWwpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobGV2ZWwgPCAwKSB7IHJldHVybiBudWxsOyB9IC8vIHJvb3Qgbm9kZVxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudElkID0gcGFyZW50ID8gY3JlYXRlR3JvdXBJZChwYXJlbnQsIHBhcmVudC5wYXJlbnQsIGxldmVsIC0gMSkgOiBudWxsO1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHtwYXJlbnRJZCA9PSBudWxsID8gJycgOiBwYXJlbnRJZCArICctJ30ke2xldmVsfS0ke25vZGUua2V5fWA7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY3JlYXRlR3JvdXBJZCA9IChub2RlLCBwYXJlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW5vZGUucm93R3JvdXBDb2x1bW4pIHsgcmV0dXJuIG51bGw7IH0gLy8gcm9vdCBub2RlXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50SWQgPSBwYXJlbnQgPyBjcmVhdGVHcm91cElkKHBhcmVudCwgcGFyZW50LnBhcmVudCwgMCkgOiBudWxsO1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHtwYXJlbnRJZCA9PSBudWxsID8gJycgOiBwYXJlbnRJZCArICctJ30ke25vZGUucm93R3JvdXBDb2x1bW4uZ2V0Q29sSWQoKX0tJHtub2RlLmtleX1gO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHdlIHB1dCAncm93LWdyb3VwLScgYmVmb3JlIHRoZSBncm91cCBpZCwgc28gaXQgZG9lc24ndCBjbGFzaCB3aXRoIHN0YW5kYXJkIHJvdyBpZCdzLiB3ZSBhbHNvIHVzZSAndC0nIGFuZCAnYi0nXG4gICAgICAgIC8vIGZvciB0b3AgcGlubmVkIGFuZCBib3R0b20gcGlubmVkIHJvd3MuXG4gICAgICAgIHJldHVybiBSb3dOb2RlLklEX1BSRUZJWF9ST1dfR1JPVVAgKyBjcmVhdGVHcm91cElkKG5vZGUsIHBhcmVudCwgbGV2ZWwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0R3JvdXBEYXRhKGdyb3VwTm9kZTogUm93Tm9kZSwgZ3JvdXBJbmZvOiBHcm91cEluZm8sIGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscyk6IHZvaWQge1xuICAgICAgICBncm91cE5vZGUuZ3JvdXBEYXRhID0ge307XG4gICAgICAgIGNvbnN0IGdyb3VwRGlzcGxheUNvbHM6IENvbHVtbltdID0gdGhpcy5jb2x1bW5Nb2RlbC5nZXRHcm91cERpc3BsYXlDb2x1bW5zKCk7XG4gICAgICAgIGdyb3VwRGlzcGxheUNvbHMuZm9yRWFjaChjb2wgPT4ge1xuICAgICAgICAgICAgLy8gbmV3R3JvdXAucm93R3JvdXBDb2x1bW49bnVsbCB3aGVuIHdvcmtpbmcgb2ZmIEdyb3VwSW5mbywgYW5kIHdlIGFsd2F5cyBkaXNwbGF5IHRoZSBncm91cCBpbiB0aGUgZ3JvdXAgY29sdW1uXG4gICAgICAgICAgICAvLyBpZiByb3dHcm91cENvbHVtbiBpcyBwcmVzZW50LCB0aGVuIGl0J3MgZ3JpZCByb3cgZ3JvdXBpbmcgYW5kIHdlIG9ubHkgaW5jbHVkZSBpZiBjb25maWd1cmF0aW9uIHNheXMgc29cbiAgICAgICAgICAgIGNvbnN0IGlzVHJlZURhdGEgPSBkZXRhaWxzLnVzaW5nVHJlZURhdGE7XG4gICAgICAgICAgICBpZiAoaXNUcmVlRGF0YSkge1xuICAgICAgICAgICAgICAgIGdyb3VwTm9kZS5ncm91cERhdGEhW2NvbC5nZXRDb2xJZCgpXSA9IGdyb3VwSW5mby5rZXk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBncm91cENvbHVtbiA9IGdyb3VwTm9kZS5yb3dHcm91cENvbHVtbjtcbiAgICAgICAgICAgIGNvbnN0IGlzUm93R3JvdXBEaXNwbGF5ZWQgPSBncm91cENvbHVtbiAhPT0gbnVsbCAmJiBjb2wuaXNSb3dHcm91cERpc3BsYXllZChncm91cENvbHVtbi5nZXRJZCgpKTtcbiAgICAgICAgICAgIGlmIChpc1Jvd0dyb3VwRGlzcGxheWVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRldGFpbHMuc3VwcHJlc3NHcm91cE1haW50YWluVmFsdWVUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwTm9kZS5ncm91cERhdGEhW2NvbC5nZXRDb2xJZCgpXSA9IGdyb3VwSW5mby5rZXk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgbWFpbnRhaW4gZ3JvdXAgdmFsdWUgdHlwZSwgZ2V0IHRoZSB2YWx1ZSBmcm9tIGFueSBsZWFmIG5vZGUuXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwTm9kZS5ncm91cERhdGEhW2NvbC5nZXRDb2xJZCgpXSA9IHRoaXMudmFsdWVTZXJ2aWNlLmdldFZhbHVlKGdyb3VwQ29sdW1uLCBncm91cEluZm8ubGVhZk5vZGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDaGlsZHJlbk1hcHBlZEtleShrZXk6IHN0cmluZywgcm93R3JvdXBDb2x1bW46IENvbHVtbiB8IG51bGwpOiBzdHJpbmcge1xuICAgICAgICBpZiAocm93R3JvdXBDb2x1bW4pIHtcbiAgICAgICAgICAgIC8vIGdyb3VwaW5nIGJ5IGNvbHVtbnNcbiAgICAgICAgICAgIHJldHVybiByb3dHcm91cENvbHVtbi5nZXRJZCgpICsgJy0nICsga2V5O1xuICAgICAgICB9XG4gICAgICAgIC8vIHRyZWUgZGF0YSAtIHdlIGRvbid0IGhhdmUgcm93R3JvdXBDb2x1bW5zXG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRFeHBhbmRlZEluaXRpYWxWYWx1ZShkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMsIGdyb3VwTm9kZTogUm93Tm9kZSk6IHZvaWQge1xuICAgICAgICAvLyBpZiBwaXZvdGluZyB0aGUgbGVhZiBncm91cCBpcyBuZXZlciBleHBhbmRlZCBhcyB3ZSBkbyBub3Qgc2hvdyBsZWFmIHJvd3NcbiAgICAgICAgaWYgKGRldGFpbHMucGl2b3RNb2RlICYmIGdyb3VwTm9kZS5sZWFmR3JvdXApIHtcbiAgICAgICAgICAgIGdyb3VwTm9kZS5leHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdXNlIGNhbGxiYWNrIGlmIGV4aXN0c1xuICAgICAgICBjb25zdCB1c2VyQ2FsbGJhY2sgPSBkZXRhaWxzLmlzR3JvdXBPcGVuQnlEZWZhdWx0O1xuICAgICAgICBpZiAodXNlckNhbGxiYWNrKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJhbXM6IFdpdGhvdXRHcmlkQ29tbW9uPElzR3JvdXBPcGVuQnlEZWZhdWx0UGFyYW1zPiA9IHtcbiAgICAgICAgICAgICAgICByb3dOb2RlOiBncm91cE5vZGUsXG4gICAgICAgICAgICAgICAgZmllbGQ6IGdyb3VwTm9kZS5maWVsZCEsXG4gICAgICAgICAgICAgICAga2V5OiBncm91cE5vZGUua2V5ISxcbiAgICAgICAgICAgICAgICBsZXZlbDogZ3JvdXBOb2RlLmxldmVsLFxuICAgICAgICAgICAgICAgIHJvd0dyb3VwQ29sdW1uOiBncm91cE5vZGUucm93R3JvdXBDb2x1bW4hXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZ3JvdXBOb2RlLmV4cGFuZGVkID0gdXNlckNhbGxiYWNrKHBhcmFtcykgPT0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHVzZSBleHBhbmRCeURlZmF1bHQgaWYgZXhpc3RzXG4gICAgICAgIGNvbnN0IHsgZXhwYW5kQnlEZWZhdWx0IH0gPSBkZXRhaWxzO1xuICAgICAgICBpZiAoZGV0YWlscy5leHBhbmRCeURlZmF1bHQgPT09IC0xKSB7XG4gICAgICAgICAgICBncm91cE5vZGUuZXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gb3RoZXJ3aXNlXG4gICAgICAgIGdyb3VwTm9kZS5leHBhbmRlZCA9IGdyb3VwTm9kZS5sZXZlbCA8IGV4cGFuZEJ5RGVmYXVsdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEdyb3VwSW5mbyhyb3dOb2RlOiBSb3dOb2RlLCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMpOiBHcm91cEluZm9bXSB7XG4gICAgICAgIGlmIChkZXRhaWxzLnVzaW5nVHJlZURhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEdyb3VwSW5mb0Zyb21DYWxsYmFjayhyb3dOb2RlLCBkZXRhaWxzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5nZXRHcm91cEluZm9Gcm9tR3JvdXBDb2x1bW5zKHJvd05vZGUsIGRldGFpbHMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0R3JvdXBJbmZvRnJvbUNhbGxiYWNrKHJvd05vZGU6IFJvd05vZGUsIGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscyk6IEdyb3VwSW5mb1tdIHsgICAgICAgIFxuICAgICAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSB8IG51bGwgPSBkZXRhaWxzLmdldERhdGFQYXRoID8gZGV0YWlscy5nZXREYXRhUGF0aChyb3dOb2RlLmRhdGEpIDogbnVsbDtcblxuICAgICAgICBpZiAoa2V5cyA9PT0gbnVsbCB8fCBrZXlzID09PSB1bmRlZmluZWQgfHwga2V5cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIF8ud2Fybk9uY2UoYGdldERhdGFQYXRoKCkgc2hvdWxkIG5vdCByZXR1cm4gYW4gZW1wdHkgcGF0aCBmb3IgZGF0YSAke3Jvd05vZGUuZGF0YX1gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBncm91cEluZm9NYXBwZXIgPSAoa2V5OiBzdHJpbmcgfCBudWxsKSA9PiAoeyBrZXksIGZpZWxkOiBudWxsLCByb3dHcm91cENvbHVtbjogbnVsbCB9KSBhcyBHcm91cEluZm87XG4gICAgICAgIHJldHVybiBrZXlzID8ga2V5cy5tYXAoZ3JvdXBJbmZvTWFwcGVyKSA6IFtdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0R3JvdXBJbmZvRnJvbUdyb3VwQ29sdW1ucyhyb3dOb2RlOiBSb3dOb2RlLCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMpIHtcbiAgICAgICAgY29uc3QgcmVzOiBHcm91cEluZm9bXSA9IFtdO1xuICAgICAgICBkZXRhaWxzLmdyb3VwZWRDb2xzLmZvckVhY2goZ3JvdXBDb2wgPT4ge1xuICAgICAgICAgICAgbGV0IGtleTogc3RyaW5nID0gdGhpcy52YWx1ZVNlcnZpY2UuZ2V0S2V5Rm9yTm9kZShncm91cENvbCwgcm93Tm9kZSk7XG4gICAgICAgICAgICBsZXQga2V5RXhpc3RzID0ga2V5ICE9PSBudWxsICYmIGtleSAhPT0gdW5kZWZpbmVkICYmIGtleSAhPT0gJyc7XG5cbiAgICAgICAgICAgIC8vIHVuYmFsYW5jZWQgdHJlZSBhbmQgcGl2b3QgbW9kZSBkb24ndCB3b3JrIHRvZ2V0aGVyIC0gbm90IGJlY2F1c2Ugb2YgdGhlIGdyaWQsIGl0IGRvZXNuJ3QgbWFrZVxuICAgICAgICAgICAgLy8gbWF0aGVtYXRpY2FsIHNlbnNlIGFzIHlvdSBhcmUgYnVpbGRpbmcgdXAgYSBjdWJlLiBzbyBpZiBwaXZvdCBtb2RlLCB3ZSBwdXQgaW4gYSBibGFuayBrZXkgd2hlcmUgbWlzc2luZy5cbiAgICAgICAgICAgIC8vIHRoaXMga2VlcHMgdGhlIHRyZWUgYmFsYW5jZWQgYW5kIGhlbmNlIGNhbiBiZSByZXByZXNlbnRlZCBhcyBhIGdyb3VwLlxuICAgICAgICAgICAgY29uc3QgY3JlYXRlR3JvdXBGb3JFbXB0eSA9IGRldGFpbHMucGl2b3RNb2RlIHx8ICFkZXRhaWxzLmdyb3VwQWxsb3dVbmJhbGFuY2VkO1xuICAgICAgICAgICAgaWYgKGNyZWF0ZUdyb3VwRm9yRW1wdHkgJiYgIWtleUV4aXN0cykge1xuICAgICAgICAgICAgICAgIGtleSA9ICcnO1xuICAgICAgICAgICAgICAgIGtleUV4aXN0cyA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChrZXlFeGlzdHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0ge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGdyb3VwQ29sLmdldENvbERlZigpLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICByb3dHcm91cENvbHVtbjogZ3JvdXBDb2wsXG4gICAgICAgICAgICAgICAgICAgIGxlYWZOb2RlOiByb3dOb2RlLFxuICAgICAgICAgICAgICAgIH0gYXMgR3JvdXBJbmZvO1xuICAgICAgICAgICAgICAgIHJlcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG59Il19
|