@alfresco/adf-content-services 8.1.0-15902121227 → 8.1.0-15972188736
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/fesm2022/adf-content-services.mjs +808 -829
- package/fesm2022/adf-content-services.mjs.map +1 -1
- package/lib/new-version-uploader/new-version-uploader.dialog.scss +1 -1
- package/lib/upload/components/base-upload/upload-base.d.ts +1 -1
- package/package.json +4 -6
- package/esm2022/adf-content-services.mjs +0 -5
- package/esm2022/lib/agent/index.mjs +0 -18
- package/esm2022/lib/agent/public-api.mjs +0 -18
- package/esm2022/lib/agent/services/agent.service.mjs +0 -60
- package/esm2022/lib/alfresco-icon/alfresco-icon.component.mjs +0 -27
- package/esm2022/lib/api-factories/alfresco-api-no-auth.service.mjs +0 -42
- package/esm2022/lib/api-factories/alfresco-api-v2-loader.service.mjs +0 -77
- package/esm2022/lib/api-factories/index.mjs +0 -18
- package/esm2022/lib/api-factories/public-api.mjs +0 -19
- package/esm2022/lib/aspect-list/aspect-list-dialog-data.interface.mjs +0 -18
- package/esm2022/lib/aspect-list/aspect-list-dialog.component.mjs +0 -78
- package/esm2022/lib/aspect-list/aspect-list.component.mjs +0 -140
- package/esm2022/lib/aspect-list/aspect-list.module.mjs +0 -35
- package/esm2022/lib/aspect-list/index.mjs +0 -18
- package/esm2022/lib/aspect-list/public-api.mjs +0 -24
- package/esm2022/lib/aspect-list/services/aspect-list.service.mjs +0 -83
- package/esm2022/lib/aspect-list/services/dialog-aspect-list.service.mjs +0 -86
- package/esm2022/lib/aspect-list/services/node-aspect.service.mjs +0 -52
- package/esm2022/lib/auth-loader/content-auth-loader-factory.mjs +0 -26
- package/esm2022/lib/auth-loader/content-auth-loader.service.mjs +0 -42
- package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +0 -167
- package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +0 -35
- package/esm2022/lib/breadcrumb/dropdown-breadcrumb.component.mjs +0 -66
- package/esm2022/lib/breadcrumb/index.mjs +0 -18
- package/esm2022/lib/breadcrumb/public-api.mjs +0 -20
- package/esm2022/lib/category/categories-management/categories-management-mode.mjs +0 -22
- package/esm2022/lib/category/categories-management/categories-management.component.mjs +0 -309
- package/esm2022/lib/category/category.module.mjs +0 -33
- package/esm2022/lib/category/index.mjs +0 -18
- package/esm2022/lib/category/models/category-node.interface.mjs +0 -18
- package/esm2022/lib/category/public-api.mjs +0 -23
- package/esm2022/lib/category/services/category-tree-datasource.service.mjs +0 -80
- package/esm2022/lib/category/services/category.service.mjs +0 -159
- package/esm2022/lib/common/events/file.event.mjs +0 -46
- package/esm2022/lib/common/index.mjs +0 -18
- package/esm2022/lib/common/interfaces/saved-search.interface.mjs +0 -18
- package/esm2022/lib/common/interfaces/search-configuration.interface.mjs +0 -18
- package/esm2022/lib/common/mocks/ecm-user.service.mock.mjs +0 -37
- package/esm2022/lib/common/models/allowable-operations.enum.mjs +0 -30
- package/esm2022/lib/common/models/ecm-company.model.mjs +0 -19
- package/esm2022/lib/common/models/ecm-user.model.mjs +0 -45
- package/esm2022/lib/common/models/file.model.mjs +0 -53
- package/esm2022/lib/common/models/node-metadata.model.mjs +0 -23
- package/esm2022/lib/common/models/permissions.enum.mjs +0 -32
- package/esm2022/lib/common/public-api.mjs +0 -37
- package/esm2022/lib/common/services/card-view-content-update.service.mjs +0 -55
- package/esm2022/lib/common/services/content.service.mjs +0 -180
- package/esm2022/lib/common/services/discovery-api.service.mjs +0 -79
- package/esm2022/lib/common/services/favorites-api.service.mjs +0 -84
- package/esm2022/lib/common/services/nodes-api.service.mjs +0 -251
- package/esm2022/lib/common/services/people-content.service.mjs +0 -138
- package/esm2022/lib/common/services/rendition.service.mjs +0 -270
- package/esm2022/lib/common/services/saved-searches.service.mjs +0 -206
- package/esm2022/lib/common/services/sites.service.mjs +0 -243
- package/esm2022/lib/common/services/upload.service.mjs +0 -391
- package/esm2022/lib/content-metadata/components/content-metadata/content-metadata-header.component.mjs +0 -55
- package/esm2022/lib/content-metadata/components/content-metadata/content-metadata.component.mjs +0 -491
- package/esm2022/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.mjs +0 -129
- package/esm2022/lib/content-metadata/content-metadata.module.mjs +0 -36
- package/esm2022/lib/content-metadata/index.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/aspect-oriented-config.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/card-view-group.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/content-metadata-config.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/content-metadata-custom-panel.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/content-metadata-panel.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/content-metadata.interfaces.mjs +0 -28
- package/esm2022/lib/content-metadata/interfaces/indifferent-config.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/layout-oriented-config.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/organised-property-group.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/preset-config.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/property-group.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/property.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/public-api.mjs +0 -31
- package/esm2022/lib/content-metadata/services/basic-properties.service.mjs +0 -107
- package/esm2022/lib/content-metadata/services/config/aspect-oriented-config.service.mjs +0 -106
- package/esm2022/lib/content-metadata/services/config/content-metadata-config.factory.mjs +0 -76
- package/esm2022/lib/content-metadata/services/config/indifferent-config.service.mjs +0 -40
- package/esm2022/lib/content-metadata/services/config/layout-oriented-config.service.mjs +0 -108
- package/esm2022/lib/content-metadata/services/config/property-group-reader.mjs +0 -33
- package/esm2022/lib/content-metadata/services/content-metadata.service.mjs +0 -99
- package/esm2022/lib/content-metadata/services/content-type-property.service.mjs +0 -134
- package/esm2022/lib/content-metadata/services/property-descriptors.service.mjs +0 -52
- package/esm2022/lib/content-metadata/services/property-groups-translator.service.mjs +0 -169
- package/esm2022/lib/content-node-selector/content-node-dialog.service.mjs +0 -256
- package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.component.mjs +0 -618
- package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.service.mjs +0 -66
- package/esm2022/lib/content-node-selector/content-node-selector.component-data.interface.mjs +0 -18
- package/esm2022/lib/content-node-selector/content-node-selector.component.mjs +0 -206
- package/esm2022/lib/content-node-selector/content-node-selector.module.mjs +0 -50
- package/esm2022/lib/content-node-selector/index.mjs +0 -18
- package/esm2022/lib/content-node-selector/name-location-cell/name-location-cell.component.mjs +0 -48
- package/esm2022/lib/content-node-selector/public-api.mjs +0 -25
- package/esm2022/lib/content-node-selector/site-dropdown/sites-dropdown.component.mjs +0 -168
- package/esm2022/lib/content-node-share/content-node-share.dialog.mjs +0 -288
- package/esm2022/lib/content-node-share/content-node-share.directive.mjs +0 -102
- package/esm2022/lib/content-node-share/content-node-share.module.mjs +0 -35
- package/esm2022/lib/content-node-share/content-node-share.settings.mjs +0 -18
- package/esm2022/lib/content-node-share/index.mjs +0 -18
- package/esm2022/lib/content-node-share/public-api.mjs +0 -22
- package/esm2022/lib/content-node-share/services/shared-links-api.service.mjs +0 -83
- package/esm2022/lib/content-type/content-type-dialog.component.mjs +0 -58
- package/esm2022/lib/content-type/content-type-metadata.interface.mjs +0 -18
- package/esm2022/lib/content-type/content-type.service.mjs +0 -52
- package/esm2022/lib/content-type/index.mjs +0 -20
- package/esm2022/lib/content.module.mjs +0 -277
- package/esm2022/lib/dialogs/category-selector/category-selector.dialog.mjs +0 -52
- package/esm2022/lib/dialogs/dialog.module.mjs +0 -52
- package/esm2022/lib/dialogs/download-zip/download-zip.dialog.mjs +0 -111
- package/esm2022/lib/dialogs/download-zip/download-zip.dialog.module.mjs +0 -38
- package/esm2022/lib/dialogs/download-zip/services/download-zip.service.mjs +0 -66
- package/esm2022/lib/dialogs/folder/folder-name.validators.mjs +0 -44
- package/esm2022/lib/dialogs/folder/folder.dialog.mjs +0 -147
- package/esm2022/lib/dialogs/index.mjs +0 -18
- package/esm2022/lib/dialogs/library/library.dialog.mjs +0 -225
- package/esm2022/lib/dialogs/node-lock/node-lock.dialog.mjs +0 -116
- package/esm2022/lib/dialogs/public-api.mjs +0 -25
- package/esm2022/lib/directives/auto-focus.directive.mjs +0 -38
- package/esm2022/lib/directives/check-allowable-operation.directive.mjs +0 -126
- package/esm2022/lib/directives/content-directive.module.mjs +0 -75
- package/esm2022/lib/directives/index.mjs +0 -18
- package/esm2022/lib/directives/library-favorite.directive.mjs +0 -119
- package/esm2022/lib/directives/library-membership.directive.mjs +0 -202
- package/esm2022/lib/directives/node-counter.directive.mjs +0 -60
- package/esm2022/lib/directives/node-delete.directive.mjs +0 -177
- package/esm2022/lib/directives/node-download.directive.mjs +0 -138
- package/esm2022/lib/directives/node-favorite.directive.mjs +0 -193
- package/esm2022/lib/directives/node-lock.directive.mjs +0 -57
- package/esm2022/lib/directives/node-restore.directive.mjs +0 -218
- package/esm2022/lib/directives/public-api.mjs +0 -28
- package/esm2022/lib/document-list/components/content-action/content-action-list.component.mjs +0 -60
- package/esm2022/lib/document-list/components/content-action/content-action.component.mjs +0 -196
- package/esm2022/lib/document-list/components/document-list.component.mjs +0 -964
- package/esm2022/lib/document-list/components/document-list.token.mjs +0 -21
- package/esm2022/lib/document-list/components/file-auto-download/file-auto-download.component.mjs +0 -43
- package/esm2022/lib/document-list/components/filter-header/filter-header.component.mjs +0 -107
- package/esm2022/lib/document-list/components/library-name-column/library-name-column.component.mjs +0 -133
- package/esm2022/lib/document-list/components/library-role-column/library-role-column.component.mjs +0 -93
- package/esm2022/lib/document-list/components/library-status-column/library-status-column.component.mjs +0 -88
- package/esm2022/lib/document-list/components/name-column/name-column.component.mjs +0 -120
- package/esm2022/lib/document-list/components/node.event.mjs +0 -30
- package/esm2022/lib/document-list/components/trashcan-name-column/trashcan-name-column.component.mjs +0 -83
- package/esm2022/lib/document-list/data/image-resolver.model.mjs +0 -18
- package/esm2022/lib/document-list/data/row-filter.model.mjs +0 -18
- package/esm2022/lib/document-list/data/share-data-row.model.mjs +0 -102
- package/esm2022/lib/document-list/data/share-datatable-adapter.mjs +0 -258
- package/esm2022/lib/document-list/document-list.module.mjs +0 -79
- package/esm2022/lib/document-list/index.mjs +0 -18
- package/esm2022/lib/document-list/interfaces/document-list-loader.interface.mjs +0 -18
- package/esm2022/lib/document-list/models/content-action.model.mjs +0 -59
- package/esm2022/lib/document-list/models/document-folder.model.mjs +0 -23
- package/esm2022/lib/document-list/models/node-action.enum.mjs +0 -27
- package/esm2022/lib/document-list/models/permissions-style.model.mjs +0 -27
- package/esm2022/lib/document-list/models/permissions.model.mjs +0 -26
- package/esm2022/lib/document-list/models/preset.model.mjs +0 -257
- package/esm2022/lib/document-list/public-api.mjs +0 -47
- package/esm2022/lib/document-list/services/custom-resources.service.mjs +0 -378
- package/esm2022/lib/document-list/services/document-actions.service.mjs +0 -142
- package/esm2022/lib/document-list/services/document-list.service.mjs +0 -175
- package/esm2022/lib/document-list/services/folder-actions.service.mjs +0 -137
- package/esm2022/lib/document-list/services/lock.service.mjs +0 -72
- package/esm2022/lib/document-list/services/node-actions.service.mjs +0 -122
- package/esm2022/lib/group/index.mjs +0 -18
- package/esm2022/lib/group/public-api.mjs +0 -18
- package/esm2022/lib/group/services/group.service.mjs +0 -84
- package/esm2022/lib/infinite-scroll-datasource/index.mjs +0 -18
- package/esm2022/lib/infinite-scroll-datasource/infinite-scroll-datasource.mjs +0 -69
- package/esm2022/lib/infinite-scroll-datasource/public-api.mjs +0 -18
- package/esm2022/lib/interfaces/base-card-view-content-update.interface.mjs +0 -18
- package/esm2022/lib/interfaces/index.mjs +0 -18
- package/esm2022/lib/interfaces/library-entity.interface.mjs +0 -18
- package/esm2022/lib/interfaces/library-membership-error-event.interface.mjs +0 -18
- package/esm2022/lib/interfaces/library-membership-toggle-event.interface.mjs +0 -18
- package/esm2022/lib/interfaces/node-allowable-operation-subject.interface.mjs +0 -18
- package/esm2022/lib/interfaces/public-api.mjs +0 -23
- package/esm2022/lib/interfaces/restore-message-model.interface.mjs +0 -19
- package/esm2022/lib/legal-hold/index.mjs +0 -18
- package/esm2022/lib/legal-hold/public-api.mjs +0 -18
- package/esm2022/lib/legal-hold/services/legal-hold.service.mjs +0 -136
- package/esm2022/lib/material.module.mjs +0 -183
- package/esm2022/lib/mock/alfresco-api.service.mock.mjs +0 -43
- package/esm2022/lib/mock/date-range-search-filter.mock.mjs +0 -65
- package/esm2022/lib/mock/document-library.model.mock.mjs +0 -84
- package/esm2022/lib/mock/document-list.component.mock.mjs +0 -364
- package/esm2022/lib/mock/index.mjs +0 -18
- package/esm2022/lib/mock/new-version-uploader.service.mock.mjs +0 -161
- package/esm2022/lib/mock/public-api.mjs +0 -27
- package/esm2022/lib/mock/search-filter-mock.mjs +0 -637
- package/esm2022/lib/mock/search-query.mock.mjs +0 -40
- package/esm2022/lib/mock/search.component.mock.mjs +0 -165
- package/esm2022/lib/mock/search.service.mock.mjs +0 -61
- package/esm2022/lib/mock/sites-dropdown.component.mock.mjs +0 -281
- package/esm2022/lib/new-version-uploader/index.mjs +0 -18
- package/esm2022/lib/new-version-uploader/models/index.mjs +0 -18
- package/esm2022/lib/new-version-uploader/models/new-version-uploader.model.mjs +0 -24
- package/esm2022/lib/new-version-uploader/new-version-uploader.dialog.mjs +0 -75
- package/esm2022/lib/new-version-uploader/new-version-uploader.module.mjs +0 -33
- package/esm2022/lib/new-version-uploader/new-version-uploader.service.mjs +0 -103
- package/esm2022/lib/new-version-uploader/public-api.mjs +0 -21
- package/esm2022/lib/node-comments/index.mjs +0 -18
- package/esm2022/lib/node-comments/node-comments.component.mjs +0 -44
- package/esm2022/lib/node-comments/node-comments.module.mjs +0 -33
- package/esm2022/lib/node-comments/public-api.mjs +0 -20
- package/esm2022/lib/node-comments/services/node-comments.service.mjs +0 -85
- package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog-data.interface.mjs +0 -18
- package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog.component.mjs +0 -124
- package/esm2022/lib/permission-manager/components/add-permission/add-permission-panel.component.mjs +0 -103
- package/esm2022/lib/permission-manager/components/add-permission/add-permission.component.mjs +0 -70
- package/esm2022/lib/permission-manager/components/add-permission/search-config-permission.service.mjs +0 -45
- package/esm2022/lib/permission-manager/components/inherited-button.directive.mjs +0 -67
- package/esm2022/lib/permission-manager/components/node-path-column/node-path-column.component.mjs +0 -56
- package/esm2022/lib/permission-manager/components/permission-container/permission-container.component.mjs +0 -103
- package/esm2022/lib/permission-manager/components/permission-list/permission-list.component.mjs +0 -88
- package/esm2022/lib/permission-manager/components/permission-list/permission-list.service.mjs +0 -219
- package/esm2022/lib/permission-manager/components/pop-over.directive.mjs +0 -134
- package/esm2022/lib/permission-manager/components/user-icon-column/user-icon-column.component.mjs +0 -88
- package/esm2022/lib/permission-manager/components/user-name-column/user-name-column.component.mjs +0 -82
- package/esm2022/lib/permission-manager/components/user-role-column/user-role-column.component.mjs +0 -112
- package/esm2022/lib/permission-manager/index.mjs +0 -18
- package/esm2022/lib/permission-manager/models/member.model.mjs +0 -59
- package/esm2022/lib/permission-manager/models/permission.model.mjs +0 -29
- package/esm2022/lib/permission-manager/models/role.model.mjs +0 -18
- package/esm2022/lib/permission-manager/permission-manager.module.mjs +0 -84
- package/esm2022/lib/permission-manager/public-api.mjs +0 -36
- package/esm2022/lib/permission-manager/services/node-permission-dialog.service.mjs +0 -78
- package/esm2022/lib/permission-manager/services/node-permission.service.mjs +0 -299
- package/esm2022/lib/pipes/content-pipe.module.mjs +0 -37
- package/esm2022/lib/pipes/index.mjs +0 -18
- package/esm2022/lib/pipes/node-name-tooltip.pipe.mjs +0 -69
- package/esm2022/lib/pipes/public-api.mjs +0 -19
- package/esm2022/lib/prediction/index.mjs +0 -18
- package/esm2022/lib/prediction/public-api.mjs +0 -18
- package/esm2022/lib/prediction/services/index.mjs +0 -18
- package/esm2022/lib/prediction/services/prediction.service.mjs +0 -57
- package/esm2022/lib/search/components/empty-search-result.component.mjs +0 -27
- package/esm2022/lib/search/components/index.mjs +0 -43
- package/esm2022/lib/search/components/reset-search.directive.mjs +0 -41
- package/esm2022/lib/search/components/search-check-list/index.mjs +0 -18
- package/esm2022/lib/search/components/search-check-list/search-check-list.component.mjs +0 -159
- package/esm2022/lib/search/components/search-chip-autocomplete-input/index.mjs +0 -18
- package/esm2022/lib/search/components/search-chip-autocomplete-input/search-chip-autocomplete-input.component.mjs +0 -170
- package/esm2022/lib/search/components/search-chip-list/search-chip-list.component.mjs +0 -47
- package/esm2022/lib/search/components/search-control.component.mjs +0 -181
- package/esm2022/lib/search/components/search-date-range-tabbed/index.mjs +0 -22
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/date-range-type.mjs +0 -23
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/in-last-date-type.mjs +0 -23
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.component.mjs +0 -197
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.mjs +0 -18
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range-tabbed.component.mjs +0 -201
- package/esm2022/lib/search/components/search-datetime-range/index.mjs +0 -18
- package/esm2022/lib/search/components/search-datetime-range/search-datetime-range.component.mjs +0 -224
- package/esm2022/lib/search/components/search-facet-field/index.mjs +0 -18
- package/esm2022/lib/search/components/search-facet-field/search-facet-field.component.mjs +0 -133
- package/esm2022/lib/search/components/search-filter/index.mjs +0 -19
- package/esm2022/lib/search/components/search-filter/search-filter-card/search-filter-card.component.mjs +0 -46
- package/esm2022/lib/search/components/search-filter/search-filter.component.mjs +0 -81
- package/esm2022/lib/search/components/search-filter-autocomplete-chips/index.mjs +0 -18
- package/esm2022/lib/search/components/search-filter-autocomplete-chips/search-filter-autocomplete-chips.component.mjs +0 -155
- package/esm2022/lib/search/components/search-filter-chips/index.mjs +0 -23
- package/esm2022/lib/search/components/search-filter-chips/search-facet-chip/search-facet-chip.component.mjs +0 -105
- package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-chip-tabbed.component.mjs +0 -110
- package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-tabbed-content.component.mjs +0 -129
- package/esm2022/lib/search/components/search-filter-chips/search-filter-chips.component.mjs +0 -64
- package/esm2022/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.mjs +0 -44
- package/esm2022/lib/search/components/search-filter-chips/search-widget-chip/search-widget-chip.component.mjs +0 -110
- package/esm2022/lib/search/components/search-filter-container/index.mjs +0 -18
- package/esm2022/lib/search/components/search-filter-container/search-filter-container.component.mjs +0 -123
- package/esm2022/lib/search/components/search-filter-tabbed/index.mjs +0 -19
- package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tab.directive.mjs +0 -36
- package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tabbed.component.mjs +0 -64
- package/esm2022/lib/search/components/search-form/index.mjs +0 -18
- package/esm2022/lib/search/components/search-form/search-form.component.mjs +0 -53
- package/esm2022/lib/search/components/search-input/index.mjs +0 -18
- package/esm2022/lib/search/components/search-input/search-input.component.mjs +0 -109
- package/esm2022/lib/search/components/search-logical-filter/index.mjs +0 -18
- package/esm2022/lib/search/components/search-logical-filter/search-logical-filter.component.mjs +0 -164
- package/esm2022/lib/search/components/search-number-range/index.mjs +0 -18
- package/esm2022/lib/search/components/search-number-range/search-number-range.component.mjs +0 -155
- package/esm2022/lib/search/components/search-panel/index.mjs +0 -18
- package/esm2022/lib/search/components/search-panel/search-panel.component.mjs +0 -44
- package/esm2022/lib/search/components/search-properties/file-size-condition.mjs +0 -18
- package/esm2022/lib/search/components/search-properties/file-size-operator.enum.mjs +0 -23
- package/esm2022/lib/search/components/search-properties/file-size-unit.enum.mjs +0 -26
- package/esm2022/lib/search/components/search-properties/index.mjs +0 -22
- package/esm2022/lib/search/components/search-properties/search-properties.component.mjs +0 -244
- package/esm2022/lib/search/components/search-properties/search-properties.mjs +0 -18
- package/esm2022/lib/search/components/search-radio/index.mjs +0 -18
- package/esm2022/lib/search/components/search-radio/search-radio.component.mjs +0 -146
- package/esm2022/lib/search/components/search-slider/index.mjs +0 -18
- package/esm2022/lib/search/components/search-slider/search-slider.component.mjs +0 -120
- package/esm2022/lib/search/components/search-sorting-picker/index.mjs +0 -18
- package/esm2022/lib/search/components/search-sorting-picker/search-sorting-picker.component.mjs +0 -77
- package/esm2022/lib/search/components/search-text/index.mjs +0 -18
- package/esm2022/lib/search/components/search-text/search-text.component.mjs +0 -135
- package/esm2022/lib/search/components/search-widget-container/index.mjs +0 -18
- package/esm2022/lib/search/components/search-widget-container/search-widget-container.component.mjs +0 -113
- package/esm2022/lib/search/components/search.component.mjs +0 -153
- package/esm2022/lib/search/forms/index.mjs +0 -19
- package/esm2022/lib/search/forms/live-error-state-matcher.mjs +0 -23
- package/esm2022/lib/search/forms/search-term-validator.mjs +0 -26
- package/esm2022/lib/search/index.mjs +0 -18
- package/esm2022/lib/search/mocks/index.mjs +0 -18
- package/esm2022/lib/search/mocks/search.service.mock.mjs +0 -56
- package/esm2022/lib/search/models/autocomplete-option.interface.mjs +0 -22
- package/esm2022/lib/search/models/facet-field-bucket.interface.mjs +0 -18
- package/esm2022/lib/search/models/facet-field.interface.mjs +0 -29
- package/esm2022/lib/search/models/facet-query.interface.mjs +0 -18
- package/esm2022/lib/search/models/facet-widget.interface.mjs +0 -18
- package/esm2022/lib/search/models/filter-query.interface.mjs +0 -18
- package/esm2022/lib/search/models/filter-search.interface.mjs +0 -18
- package/esm2022/lib/search/models/index.mjs +0 -34
- package/esm2022/lib/search/models/response-facet-query-list.model.mjs +0 -31
- package/esm2022/lib/search/models/search-category.interface.mjs +0 -18
- package/esm2022/lib/search/models/search-configuration.interface.mjs +0 -18
- package/esm2022/lib/search/models/search-filter-list.model.mjs +0 -148
- package/esm2022/lib/search/models/search-form.interface.mjs +0 -18
- package/esm2022/lib/search/models/search-range.interface.mjs +0 -18
- package/esm2022/lib/search/models/search-sorting-definition.interface.mjs +0 -18
- package/esm2022/lib/search/models/search-widget-settings.interface.mjs +0 -18
- package/esm2022/lib/search/models/search-widget.interface.mjs +0 -18
- package/esm2022/lib/search/models/tabbed-facet-field.interface.mjs +0 -18
- package/esm2022/lib/search/public-api.mjs +0 -24
- package/esm2022/lib/search/search-configuration.token.mjs +0 -19
- package/esm2022/lib/search/search.module.mjs +0 -192
- package/esm2022/lib/search/services/base-query-builder.service.mjs +0 -509
- package/esm2022/lib/search/services/index.mjs +0 -24
- package/esm2022/lib/search/services/search-configuration.service.mjs +0 -50
- package/esm2022/lib/search/services/search-facet-filters.service.mjs +0 -374
- package/esm2022/lib/search/services/search-filter.service.mjs +0 -56
- package/esm2022/lib/search/services/search-header-query-builder.service.mjs +0 -136
- package/esm2022/lib/search/services/search-query-builder.service.mjs +0 -48
- package/esm2022/lib/search/services/search.service.mjs +0 -89
- package/esm2022/lib/search-ai/index.mjs +0 -18
- package/esm2022/lib/search-ai/models/search-ai-input-state.mjs +0 -18
- package/esm2022/lib/search-ai/public-api.mjs +0 -19
- package/esm2022/lib/search-ai/services/search-ai.service.mjs +0 -103
- package/esm2022/lib/security/index.mjs +0 -18
- package/esm2022/lib/security/public-api.mjs +0 -18
- package/esm2022/lib/security/services/models/security-controls-group-response.interface.mjs +0 -18
- package/esm2022/lib/security/services/models/security-controls-mark-response.interface.mjs +0 -18
- package/esm2022/lib/security/services/security-controls-groups-marks-security.service.mjs +0 -274
- package/esm2022/lib/security-options-loader/security-options-loader.service.mjs +0 -43
- package/esm2022/lib/services/alfresco-api.interface.mjs +0 -18
- package/esm2022/lib/services/alfresco-api.service.mjs +0 -120
- package/esm2022/lib/services/index.mjs +0 -18
- package/esm2022/lib/services/public-api.mjs +0 -18
- package/esm2022/lib/tag/index.mjs +0 -18
- package/esm2022/lib/tag/public-api.mjs +0 -24
- package/esm2022/lib/tag/services/tag.service.mjs +0 -171
- package/esm2022/lib/tag/tag-actions/tag-actions.component.mjs +0 -115
- package/esm2022/lib/tag/tag-list/tag-list.component.mjs +0 -98
- package/esm2022/lib/tag/tag-node-list/tag-node-list.component.mjs +0 -80
- package/esm2022/lib/tag/tag.module.mjs +0 -37
- package/esm2022/lib/tag/tags-creator/tags-creator-mode.mjs +0 -27
- package/esm2022/lib/tag/tags-creator/tags-creator.component.mjs +0 -371
- package/esm2022/lib/testing/content.testing.module.mjs +0 -56
- package/esm2022/lib/tree/components/tree.component.mjs +0 -313
- package/esm2022/lib/tree/index.mjs +0 -18
- package/esm2022/lib/tree/models/tree-context-menu-result.interface.mjs +0 -18
- package/esm2022/lib/tree/models/tree-node.interface.mjs +0 -22
- package/esm2022/lib/tree/models/tree-response.interface.mjs +0 -18
- package/esm2022/lib/tree/public-api.mjs +0 -23
- package/esm2022/lib/tree/services/tree.service.mjs +0 -134
- package/esm2022/lib/tree/tree.module.mjs +0 -33
- package/esm2022/lib/tree-view/components/tree-view.component.mjs +0 -76
- package/esm2022/lib/tree-view/data/tree-view-datasource.mjs +0 -99
- package/esm2022/lib/tree-view/index.mjs +0 -18
- package/esm2022/lib/tree-view/models/tree-view.model.mjs +0 -28
- package/esm2022/lib/tree-view/public-api.mjs +0 -22
- package/esm2022/lib/tree-view/services/tree-view.service.mjs +0 -38
- package/esm2022/lib/tree-view/tree-view.module.mjs +0 -33
- package/esm2022/lib/upload/components/base-upload/upload-base.mjs +0 -176
- package/esm2022/lib/upload/components/file-uploading-dialog.component.mjs +0 -191
- package/esm2022/lib/upload/components/file-uploading-list-row.component.mjs +0 -93
- package/esm2022/lib/upload/components/file-uploading-list.component.mjs +0 -124
- package/esm2022/lib/upload/components/upload-button.component.mjs +0 -134
- package/esm2022/lib/upload/components/upload-drag-area.component.mjs +0 -112
- package/esm2022/lib/upload/components/upload-files.event.mjs +0 -41
- package/esm2022/lib/upload/components/upload-version-button.component.mjs +0 -55
- package/esm2022/lib/upload/directives/file-draggable.directive.mjs +0 -154
- package/esm2022/lib/upload/directives/toggle-icon.directive.mjs +0 -75
- package/esm2022/lib/upload/index.mjs +0 -18
- package/esm2022/lib/upload/pipes/file-upload-error.pipe.mjs +0 -39
- package/esm2022/lib/upload/public-api.mjs +0 -29
- package/esm2022/lib/upload/upload.module.mjs +0 -72
- package/esm2022/lib/version-compatibility/index.mjs +0 -18
- package/esm2022/lib/version-compatibility/public-api.mjs +0 -20
- package/esm2022/lib/version-compatibility/version-compatibility-factory.mjs +0 -26
- package/esm2022/lib/version-compatibility/version-compatibility.directive.mjs +0 -53
- package/esm2022/lib/version-compatibility/version-compatibility.module.mjs +0 -33
- package/esm2022/lib/version-compatibility/version-compatibility.service.mjs +0 -76
- package/esm2022/lib/version-manager/content-version.service.mjs +0 -53
- package/esm2022/lib/version-manager/index.mjs +0 -18
- package/esm2022/lib/version-manager/public-api.mjs +0 -23
- package/esm2022/lib/version-manager/version-comparison.component.mjs +0 -43
- package/esm2022/lib/version-manager/version-list.component.mjs +0 -216
- package/esm2022/lib/version-manager/version-manager.component.mjs +0 -146
- package/esm2022/lib/version-manager/version-manager.module.mjs +0 -48
- package/esm2022/lib/version-manager/version-upload.component.mjs +0 -155
- package/esm2022/lib/viewer/alfresco-viewer.module.mjs +0 -33
- package/esm2022/lib/viewer/components/alfresco-viewer.component.mjs +0 -409
- package/esm2022/lib/viewer/index.mjs +0 -18
- package/esm2022/lib/viewer/public-api.mjs +0 -19
- package/esm2022/public-api.mjs +0 -56
|
@@ -1,618 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
* you may not use this file except in compliance with the License.
|
|
7
|
-
* You may obtain a copy of the License at
|
|
8
|
-
*
|
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
*
|
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
* See the License for the specific language governing permissions and
|
|
15
|
-
* limitations under the License.
|
|
16
|
-
*/
|
|
17
|
-
import { Component, DestroyRef, EventEmitter, inject, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
18
|
-
import { CustomEmptyContentTemplateDirective, DataColumnComponent, DataColumnListComponent, HighlightDirective, InfinitePaginationComponent, ShowHeaderMode, ToolbarComponent, ToolbarTitleComponent, UserPreferencesService, UserPreferenceValues } from '@alfresco/adf-core';
|
|
19
|
-
import { NodesApiService, SitesService, UploadService } from '../../common';
|
|
20
|
-
import { ReactiveFormsModule, UntypedFormControl } from '@angular/forms';
|
|
21
|
-
import { Pagination, SiteEntry, SitePaging } from '@alfresco/js-api';
|
|
22
|
-
import { DocumentListComponent } from '../../document-list/components/document-list.component';
|
|
23
|
-
import { CustomResourcesService } from '../../document-list/services/custom-resources.service';
|
|
24
|
-
import { debounceTime } from 'rxjs/operators';
|
|
25
|
-
import { ContentNodeSelectorPanelService } from './content-node-selector-panel.service';
|
|
26
|
-
import { CommonModule } from '@angular/common';
|
|
27
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
28
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
29
|
-
import { MatInputModule } from '@angular/material/input';
|
|
30
|
-
import { AutoFocusDirective } from '../../directives/auto-focus.directive';
|
|
31
|
-
import { NodeCounterDirective } from '../../directives/node-counter.directive';
|
|
32
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
33
|
-
import { DropdownSitesComponent } from '../site-dropdown/sites-dropdown.component';
|
|
34
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
35
|
-
import { NameLocationCellComponent } from '../name-location-cell/name-location-cell.component';
|
|
36
|
-
import { DropdownBreadcrumbComponent } from '../../breadcrumb/dropdown-breadcrumb.component';
|
|
37
|
-
import { SearchQueryBuilderService } from '../../search/services/search-query-builder.service';
|
|
38
|
-
import { SearchPanelComponent } from '../../search/components/search-panel/search-panel.component';
|
|
39
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
40
|
-
import * as i0 from "@angular/core";
|
|
41
|
-
import * as i1 from "../../document-list/services/custom-resources.service";
|
|
42
|
-
import * as i2 from "../../search/services/search-query-builder.service";
|
|
43
|
-
import * as i3 from "@alfresco/adf-core";
|
|
44
|
-
import * as i4 from "../../common";
|
|
45
|
-
import * as i5 from "./content-node-selector-panel.service";
|
|
46
|
-
import * as i6 from "@angular/common";
|
|
47
|
-
import * as i7 from "@angular/material/form-field";
|
|
48
|
-
import * as i8 from "@ngx-translate/core";
|
|
49
|
-
import * as i9 from "@angular/material/input";
|
|
50
|
-
import * as i10 from "@angular/forms";
|
|
51
|
-
import * as i11 from "@angular/material/icon";
|
|
52
|
-
import * as i12 from "@angular/material/button";
|
|
53
|
-
export const defaultValidation = () => true;
|
|
54
|
-
export class ContentNodeSelectorPanelComponent {
|
|
55
|
-
/**
|
|
56
|
-
* Custom row filter function. See the
|
|
57
|
-
* [Row Filter Model](row-filter.model.md) page
|
|
58
|
-
* for more information.
|
|
59
|
-
*/
|
|
60
|
-
set rowFilter(rowFilter) {
|
|
61
|
-
this.createRowFilter(rowFilter);
|
|
62
|
-
}
|
|
63
|
-
get rowFilter() {
|
|
64
|
-
return this._rowFilter;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Custom list of site content componentIds.
|
|
68
|
-
* Used to filter out the corresponding items from the displayed nodes
|
|
69
|
-
*/
|
|
70
|
-
set excludeSiteContent(excludeSiteContent) {
|
|
71
|
-
this._excludeSiteContent = excludeSiteContent;
|
|
72
|
-
this.createRowFilter(this._rowFilter);
|
|
73
|
-
}
|
|
74
|
-
get excludeSiteContent() {
|
|
75
|
-
return this._excludeSiteContent;
|
|
76
|
-
}
|
|
77
|
-
/** Toggle search input rendering */
|
|
78
|
-
set showSearch(value) {
|
|
79
|
-
if (value !== undefined && value !== null) {
|
|
80
|
-
this.showSearchField = value;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
get showSearch() {
|
|
84
|
-
return this.showSearchField;
|
|
85
|
-
}
|
|
86
|
-
/** Toggle sites list dropdown rendering */
|
|
87
|
-
set showDropdownSiteList(value) {
|
|
88
|
-
if (value !== undefined && value !== null) {
|
|
89
|
-
this.showSiteList = value;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
get showDropdownSiteList() {
|
|
93
|
-
return this.showSiteList;
|
|
94
|
-
}
|
|
95
|
-
/** Shows the files and folders in the search result */
|
|
96
|
-
set showFilesInResult(value) {
|
|
97
|
-
if (value !== undefined && value !== null) {
|
|
98
|
-
const showFilesQuery = `TYPE:'cm:folder'${value ? ` OR TYPE:'cm:content'` : ''}`;
|
|
99
|
-
this.queryBuilderService.addFilterQuery(showFilesQuery);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
/** Shows the node counter in the breadcrumb */
|
|
103
|
-
set showNodeCounter(value) {
|
|
104
|
-
this.showCounter = value ?? false;
|
|
105
|
-
}
|
|
106
|
-
get showNodeCounter() {
|
|
107
|
-
return this.showCounter;
|
|
108
|
-
}
|
|
109
|
-
constructor(customResourcesService, queryBuilderService, userPreferencesService, nodesApiService, uploadService, sitesService, contentNodeSelectorPanelService) {
|
|
110
|
-
this.customResourcesService = customResourcesService;
|
|
111
|
-
this.queryBuilderService = queryBuilderService;
|
|
112
|
-
this.userPreferencesService = userPreferencesService;
|
|
113
|
-
this.nodesApiService = nodesApiService;
|
|
114
|
-
this.uploadService = uploadService;
|
|
115
|
-
this.sitesService = sitesService;
|
|
116
|
-
this.contentNodeSelectorPanelService = contentNodeSelectorPanelService;
|
|
117
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
118
|
-
this.DEFAULT_PAGINATION = new Pagination({
|
|
119
|
-
maxItems: 25,
|
|
120
|
-
skipCount: 0
|
|
121
|
-
});
|
|
122
|
-
this.disableActionFolderList = ['-mysites-'];
|
|
123
|
-
this.showSiteList = true;
|
|
124
|
-
this.showSearchField = true;
|
|
125
|
-
this.showCounter = false;
|
|
126
|
-
this._emptyList = true;
|
|
127
|
-
/** If true will restrict the search and breadcrumbs to the currentFolderId */
|
|
128
|
-
this.restrictRootToCurrentFolderId = false;
|
|
129
|
-
/** Node ID of the folder currently listed. */
|
|
130
|
-
this.currentFolderId = null;
|
|
131
|
-
/**
|
|
132
|
-
* Hide the "My Files" option added to the site list by default.
|
|
133
|
-
* See the [Sites Dropdown component](sites-dropdown.component.md)
|
|
134
|
-
* for more information.
|
|
135
|
-
*/
|
|
136
|
-
this.dropdownHideMyFiles = false;
|
|
137
|
-
/**
|
|
138
|
-
* Custom site for site dropdown. This is the same as the `siteList`.
|
|
139
|
-
* property of the Sites Dropdown component (see its doc page
|
|
140
|
-
* for more information).
|
|
141
|
-
*/
|
|
142
|
-
this.dropdownSiteList = null;
|
|
143
|
-
this._rowFilter = defaultValidation;
|
|
144
|
-
this._excludeSiteContent = [];
|
|
145
|
-
/**
|
|
146
|
-
* Custom image resolver function. See the
|
|
147
|
-
* [Image Resolver Model](image-resolver.model.md) page
|
|
148
|
-
* for more information.
|
|
149
|
-
*/
|
|
150
|
-
this.imageResolver = null;
|
|
151
|
-
/** Number of items shown per page in the list. */
|
|
152
|
-
this.pageSize = this.DEFAULT_PAGINATION.maxItems;
|
|
153
|
-
/** Define the selection mode for document list. The allowed values are single or multiple */
|
|
154
|
-
this.selectionMode = 'single';
|
|
155
|
-
/**
|
|
156
|
-
* Function used to decide if the selected node has permission to be selected.
|
|
157
|
-
* Default value is a function that always returns true.
|
|
158
|
-
*/
|
|
159
|
-
this.isSelectionValid = defaultValidation;
|
|
160
|
-
/** Emitted when the user has chosen an item. */
|
|
161
|
-
this.select = new EventEmitter();
|
|
162
|
-
/** Emitted when the navigation changes. */
|
|
163
|
-
this.navigationChange = new EventEmitter();
|
|
164
|
-
/** Emitted when the select site changes. */
|
|
165
|
-
this.siteChange = new EventEmitter();
|
|
166
|
-
/** Emitted when search is running. */
|
|
167
|
-
this.showingSearch = new EventEmitter();
|
|
168
|
-
/** Emitted when current folder loaded. */
|
|
169
|
-
this.currentFolder = new EventEmitter();
|
|
170
|
-
/** Emitted when folder loaded. */
|
|
171
|
-
this.folderLoaded = new EventEmitter();
|
|
172
|
-
this.nodePaging = null;
|
|
173
|
-
this.searchTerm = '';
|
|
174
|
-
this.showingSearchResults = false;
|
|
175
|
-
this.loadingSearchResults = false;
|
|
176
|
-
this.inDialog = false;
|
|
177
|
-
this._chosenNode = null;
|
|
178
|
-
this.selectionWithoutValidation = null;
|
|
179
|
-
this.folderIdToShow = null;
|
|
180
|
-
this.breadcrumbFolderTitle = null;
|
|
181
|
-
this.startSiteGuid = null;
|
|
182
|
-
this.hasValidQuery = false;
|
|
183
|
-
this.showHeader = ShowHeaderMode.Never;
|
|
184
|
-
this.infiniteScroll = false;
|
|
185
|
-
this.debounceSearch = 200;
|
|
186
|
-
this.searchInput = new UntypedFormControl();
|
|
187
|
-
this.preselectedNodes = [];
|
|
188
|
-
this.currentUploadBatch = [];
|
|
189
|
-
this.sorting = ['createdAt', 'desc'];
|
|
190
|
-
this.searchPanelExpanded = false;
|
|
191
|
-
this.destroyRef = inject(DestroyRef);
|
|
192
|
-
}
|
|
193
|
-
set chosenNode(value) {
|
|
194
|
-
this._chosenNode = value;
|
|
195
|
-
this.select.next(value);
|
|
196
|
-
}
|
|
197
|
-
get chosenNode() {
|
|
198
|
-
return this._chosenNode;
|
|
199
|
-
}
|
|
200
|
-
get emptyList() {
|
|
201
|
-
return this._emptyList;
|
|
202
|
-
}
|
|
203
|
-
getSelectedCount() {
|
|
204
|
-
return this.chosenNode?.length || 0;
|
|
205
|
-
}
|
|
206
|
-
ngOnInit() {
|
|
207
|
-
this.searchInput.valueChanges
|
|
208
|
-
.pipe(debounceTime(this.debounceSearch), takeUntilDestroyed(this.destroyRef))
|
|
209
|
-
.subscribe((searchValue) => {
|
|
210
|
-
this.searchTerm = searchValue;
|
|
211
|
-
this.queryBuilderService.userQuery = searchValue.length > 0 ? `${searchValue}*` : searchValue;
|
|
212
|
-
this.queryBuilderService.update();
|
|
213
|
-
});
|
|
214
|
-
this.queryBuilderService.updated.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((searchRequest) => {
|
|
215
|
-
if (searchRequest) {
|
|
216
|
-
this.hasValidQuery = true;
|
|
217
|
-
this.prepareDialogForNewSearch(searchRequest);
|
|
218
|
-
this.queryBuilderService.execute(false, searchRequest);
|
|
219
|
-
}
|
|
220
|
-
else {
|
|
221
|
-
this.hasValidQuery = false;
|
|
222
|
-
this.resetFolderToShow();
|
|
223
|
-
this.clearSearch();
|
|
224
|
-
}
|
|
225
|
-
});
|
|
226
|
-
this.queryBuilderService.executed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((results) => {
|
|
227
|
-
if (this.hasValidQuery) {
|
|
228
|
-
this.showSearchResults(results);
|
|
229
|
-
}
|
|
230
|
-
});
|
|
231
|
-
this.userPreferencesService
|
|
232
|
-
.select(UserPreferenceValues.PaginationSize)
|
|
233
|
-
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
234
|
-
.subscribe((pagSize) => (this.pageSize = pagSize));
|
|
235
|
-
this.target = this.documentList;
|
|
236
|
-
this.folderIdToShow = this.currentFolderId;
|
|
237
|
-
if (this.currentFolderId) {
|
|
238
|
-
if (this.restrictRootToCurrentFolderId) {
|
|
239
|
-
this.breadcrumbRootId = this.currentFolderId;
|
|
240
|
-
this.siteId = this.currentFolderId;
|
|
241
|
-
}
|
|
242
|
-
else {
|
|
243
|
-
this.getStartSite();
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
this.breadcrumbTransform = this.breadcrumbTransform ? this.breadcrumbTransform : null;
|
|
247
|
-
this.isSelectionValid = this.isSelectionValid ? this.isSelectionValid : defaultValidation;
|
|
248
|
-
this.onFileUploadEvent();
|
|
249
|
-
this.onFileUploadDeletedEvent();
|
|
250
|
-
this.resetPagination();
|
|
251
|
-
this.setSearchScopeToNodes();
|
|
252
|
-
this.documentList.$folderNode.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((currentNode) => {
|
|
253
|
-
this.currentFolder.emit(currentNode);
|
|
254
|
-
});
|
|
255
|
-
}
|
|
256
|
-
toggleSearchPanel() {
|
|
257
|
-
this.searchPanelExpanded = !this.searchPanelExpanded;
|
|
258
|
-
}
|
|
259
|
-
hasCustomModels() {
|
|
260
|
-
return this.contentNodeSelectorPanelService?.customModels?.length > 0;
|
|
261
|
-
}
|
|
262
|
-
onFileUploadEvent() {
|
|
263
|
-
this.uploadService.fileUploadComplete
|
|
264
|
-
.pipe(debounceTime(500), takeUntilDestroyed(this.destroyRef))
|
|
265
|
-
.subscribe((fileUploadEvent) => {
|
|
266
|
-
this.currentUploadBatch.push(fileUploadEvent.data);
|
|
267
|
-
if (!this.uploadService.isUploading()) {
|
|
268
|
-
this.preselectedNodes = this.getPreselectNodesBasedOnSelectionMode();
|
|
269
|
-
this.currentUploadBatch = [];
|
|
270
|
-
this.documentList.reloadWithoutResettingSelection();
|
|
271
|
-
}
|
|
272
|
-
});
|
|
273
|
-
}
|
|
274
|
-
onFileUploadDeletedEvent() {
|
|
275
|
-
this.uploadService.fileUploadDeleted.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((deletedFileEvent) => {
|
|
276
|
-
this.documentList.unselectRowFromNodeId(deletedFileEvent.file.data.entry.id);
|
|
277
|
-
this.documentList.reloadWithoutResettingSelection();
|
|
278
|
-
});
|
|
279
|
-
}
|
|
280
|
-
getStartSite() {
|
|
281
|
-
this.nodesApiService.getNode(this.currentFolderId).subscribe((startNodeEntry) => {
|
|
282
|
-
this.startSiteGuid = this.sitesService.getSiteNameFromNodePath(startNodeEntry);
|
|
283
|
-
if (this.startSiteGuid) {
|
|
284
|
-
this.sitesService.getSite(this.startSiteGuid).subscribe((startSiteEntry) => {
|
|
285
|
-
if (startSiteEntry instanceof SiteEntry) {
|
|
286
|
-
this.siteChange.emit(startSiteEntry.entry.title);
|
|
287
|
-
}
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
|
-
});
|
|
291
|
-
}
|
|
292
|
-
createRowFilter(filter) {
|
|
293
|
-
if (!filter) {
|
|
294
|
-
filter = () => true;
|
|
295
|
-
}
|
|
296
|
-
this._rowFilter = (value, index, array) => filter(value, index, array) && !this.isExcludedSiteContent(value);
|
|
297
|
-
}
|
|
298
|
-
isExcludedSiteContent(row) {
|
|
299
|
-
const entry = row.node.entry;
|
|
300
|
-
if (this._excludeSiteContent?.length && entry?.properties?.['st:componentId']) {
|
|
301
|
-
const excludedItem = this._excludeSiteContent.find((id) => entry.properties['st:componentId'] === id);
|
|
302
|
-
return !!excludedItem;
|
|
303
|
-
}
|
|
304
|
-
return false;
|
|
305
|
-
}
|
|
306
|
-
/**
|
|
307
|
-
* Updates the site attribute and starts a new search
|
|
308
|
-
*
|
|
309
|
-
* @param chosenSite SiteEntry to search within
|
|
310
|
-
*/
|
|
311
|
-
siteChanged(chosenSite) {
|
|
312
|
-
this.siteId = chosenSite.entry.guid;
|
|
313
|
-
this.setTitleIfCustomSite(chosenSite);
|
|
314
|
-
this.siteChange.emit(chosenSite.entry.title);
|
|
315
|
-
this.queryBuilderService.update();
|
|
316
|
-
}
|
|
317
|
-
/**
|
|
318
|
-
* Get current breadcrumb folder node
|
|
319
|
-
*
|
|
320
|
-
* @returns the actually selected|entered folder node or null in case of searching for the breadcrumb
|
|
321
|
-
*/
|
|
322
|
-
get breadcrumbFolderNode() {
|
|
323
|
-
let folderNode;
|
|
324
|
-
if (this.showingSearchResults && this.selectionWithoutValidation?.length) {
|
|
325
|
-
folderNode = this.selectionWithoutValidation[0];
|
|
326
|
-
}
|
|
327
|
-
else {
|
|
328
|
-
folderNode = this.documentList.folderNode;
|
|
329
|
-
}
|
|
330
|
-
return folderNode;
|
|
331
|
-
}
|
|
332
|
-
/**
|
|
333
|
-
* Prepares the dialog for a new search
|
|
334
|
-
*
|
|
335
|
-
* @param searchRequest request options
|
|
336
|
-
*/
|
|
337
|
-
prepareDialogForNewSearch(searchRequest) {
|
|
338
|
-
this.target = searchRequest ? null : this.documentList;
|
|
339
|
-
if (this.target) {
|
|
340
|
-
this.infinitePaginationComponent.reset();
|
|
341
|
-
}
|
|
342
|
-
this.folderIdToShow = null;
|
|
343
|
-
this.preselectedNodes = [];
|
|
344
|
-
this.loadingSearchResults = true;
|
|
345
|
-
this.addCorrespondingNodeIdsQuery();
|
|
346
|
-
this.resetChosenNode();
|
|
347
|
-
}
|
|
348
|
-
/**
|
|
349
|
-
* Clear the search input and reset to last folder node in which search was performed
|
|
350
|
-
*/
|
|
351
|
-
clear() {
|
|
352
|
-
this.searchTerm = '';
|
|
353
|
-
this.queryBuilderService.userQuery = '';
|
|
354
|
-
this.queryBuilderService.update();
|
|
355
|
-
}
|
|
356
|
-
/**
|
|
357
|
-
* Resets the folder to be shown with the site selection or the initial landing folder
|
|
358
|
-
*/
|
|
359
|
-
resetFolderToShow() {
|
|
360
|
-
this.folderIdToShow = this.siteId || this.currentFolderId;
|
|
361
|
-
}
|
|
362
|
-
/**
|
|
363
|
-
* Clear the search input and search related data
|
|
364
|
-
*/
|
|
365
|
-
clearSearch() {
|
|
366
|
-
this.searchTerm = '';
|
|
367
|
-
this.nodePaging = null;
|
|
368
|
-
this.resetPagination();
|
|
369
|
-
this.resetChosenNode();
|
|
370
|
-
this.showingSearchResults = false;
|
|
371
|
-
this.showingSearch.emit(this.showingSearchResults);
|
|
372
|
-
}
|
|
373
|
-
addCorrespondingNodeIdsQuery() {
|
|
374
|
-
let extraParentFiltering = '';
|
|
375
|
-
if (this.customResourcesService.hasCorrespondingNodeIds(this.siteId)) {
|
|
376
|
-
this.customResourcesService.getCorrespondingNodeIds(this.siteId).subscribe((nodeIds) => {
|
|
377
|
-
if (nodeIds?.length) {
|
|
378
|
-
nodeIds
|
|
379
|
-
.filter((id) => id !== this.siteId)
|
|
380
|
-
.forEach((extraId) => {
|
|
381
|
-
extraParentFiltering += ` OR ANCESTOR:'workspace://SpacesStore/${extraId}'`;
|
|
382
|
-
});
|
|
383
|
-
}
|
|
384
|
-
const parentFiltering = this.siteId ? `ANCESTOR:'workspace://SpacesStore/${this.siteId}'${extraParentFiltering}` : '';
|
|
385
|
-
this.queryBuilderService.addFilterQuery(parentFiltering);
|
|
386
|
-
});
|
|
387
|
-
}
|
|
388
|
-
else {
|
|
389
|
-
const parentFiltering = this.siteId ? `ANCESTOR:'workspace://SpacesStore/${this.siteId}'` : '';
|
|
390
|
-
this.queryBuilderService.addFilterQuery(parentFiltering);
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
setSearchScopeToNodes() {
|
|
394
|
-
const scope = {
|
|
395
|
-
locations: 'nodes'
|
|
396
|
-
};
|
|
397
|
-
this.queryBuilderService.setScope(scope);
|
|
398
|
-
}
|
|
399
|
-
/**
|
|
400
|
-
* Show the results of the search
|
|
401
|
-
*
|
|
402
|
-
* @param results Search results
|
|
403
|
-
*/
|
|
404
|
-
showSearchResults(results) {
|
|
405
|
-
this.showingSearchResults = true;
|
|
406
|
-
this.loadingSearchResults = false;
|
|
407
|
-
this.showingSearch.emit(this.showingSearchResults);
|
|
408
|
-
this.nodePaging = results;
|
|
409
|
-
}
|
|
410
|
-
/**
|
|
411
|
-
* Sets showingSearchResults state to be able to differentiate between search results or folder results
|
|
412
|
-
*
|
|
413
|
-
* @param $event node event
|
|
414
|
-
*/
|
|
415
|
-
onFolderChange($event) {
|
|
416
|
-
this.folderIdToShow = $event.value.id;
|
|
417
|
-
this.showingSearchResults = false;
|
|
418
|
-
this.infiniteScroll = false;
|
|
419
|
-
this.breadcrumbFolderTitle = null;
|
|
420
|
-
this.preselectedNodes = [];
|
|
421
|
-
this.clearSearch();
|
|
422
|
-
this.navigationChange.emit($event);
|
|
423
|
-
}
|
|
424
|
-
/**
|
|
425
|
-
* Attempts to set the currently loaded node
|
|
426
|
-
*
|
|
427
|
-
* @param nodePaging pagination model
|
|
428
|
-
*/
|
|
429
|
-
onFolderLoaded(nodePaging) {
|
|
430
|
-
setTimeout(() => {
|
|
431
|
-
this._emptyList = !this.documentList.data.getRows().length;
|
|
432
|
-
});
|
|
433
|
-
this.updatePaginationAfterRowFilter(nodePaging);
|
|
434
|
-
if (!this.showingSearchResults) {
|
|
435
|
-
this.attemptNodeSelection(this.documentList.folderNode);
|
|
436
|
-
}
|
|
437
|
-
this.folderLoaded.emit();
|
|
438
|
-
}
|
|
439
|
-
/**
|
|
440
|
-
* Updates pagination.hasMoreItems to false after filtering only folders during 'COPY' and 'MOVE' action
|
|
441
|
-
*
|
|
442
|
-
* @param nodePaging pagination model
|
|
443
|
-
*/
|
|
444
|
-
updatePaginationAfterRowFilter(nodePaging) {
|
|
445
|
-
if (this.documentList.data.getRows().length < nodePaging.list.pagination.maxItems) {
|
|
446
|
-
nodePaging.list.pagination.hasMoreItems = false;
|
|
447
|
-
}
|
|
448
|
-
}
|
|
449
|
-
/**
|
|
450
|
-
* Returns whether breadcrumb has to be shown or not
|
|
451
|
-
*
|
|
452
|
-
* @returns `true` if needs to show the breadcrumb, otherwise `false`
|
|
453
|
-
*/
|
|
454
|
-
showBreadcrumbs() {
|
|
455
|
-
return !this.showingSearchResults || this.chosenNode;
|
|
456
|
-
}
|
|
457
|
-
/**
|
|
458
|
-
* Loads the next batch of search results
|
|
459
|
-
*
|
|
460
|
-
* @param pagination Pagination object
|
|
461
|
-
*/
|
|
462
|
-
getNextPageOfSearch(pagination) {
|
|
463
|
-
this.infiniteScroll = true;
|
|
464
|
-
this.queryBuilderService.paging.maxItems = pagination.maxItems;
|
|
465
|
-
this.queryBuilderService.paging.skipCount = pagination.skipCount;
|
|
466
|
-
if (this.searchTerm.length > 0) {
|
|
467
|
-
this.queryBuilderService.update();
|
|
468
|
-
}
|
|
469
|
-
}
|
|
470
|
-
/**
|
|
471
|
-
* Selects node as chosen if it has the right permission, clears the selection otherwise
|
|
472
|
-
*
|
|
473
|
-
* @param entry node entry
|
|
474
|
-
*/
|
|
475
|
-
attemptNodeSelection(entry) {
|
|
476
|
-
if (entry && this.isSelectionValid(entry) && !this.isActionDisabledForFolder(this.documentList.currentFolderId)) {
|
|
477
|
-
this.chosenNode = [entry];
|
|
478
|
-
}
|
|
479
|
-
}
|
|
480
|
-
isActionDisabledForFolder(folderId) {
|
|
481
|
-
return this.disableActionFolderList.includes(folderId);
|
|
482
|
-
}
|
|
483
|
-
/**
|
|
484
|
-
* Clears the chosen node
|
|
485
|
-
*/
|
|
486
|
-
resetChosenNode() {
|
|
487
|
-
this.chosenNode = null;
|
|
488
|
-
}
|
|
489
|
-
/**
|
|
490
|
-
* It filters and emit the selection coming from the document list
|
|
491
|
-
*
|
|
492
|
-
* @param nodesEntries selected nodes
|
|
493
|
-
*/
|
|
494
|
-
onCurrentSelection(nodesEntries) {
|
|
495
|
-
const validNodesEntity = nodesEntries.filter((node) => this.isSelectionValid(node.entry));
|
|
496
|
-
this.chosenNode = validNodesEntity.map((node) => node.entry);
|
|
497
|
-
this.selectionWithoutValidation = nodesEntries.map((node) => node.entry);
|
|
498
|
-
}
|
|
499
|
-
setTitleIfCustomSite(site) {
|
|
500
|
-
if (this.customResourcesService.isCustomSource(site.entry.guid)) {
|
|
501
|
-
this.breadcrumbFolderTitle = site.entry.title;
|
|
502
|
-
if (this.documentList.folderNode.path.elements) {
|
|
503
|
-
this.breadcrumbFolderNode.name = site.entry.title;
|
|
504
|
-
this.documentList.folderNode.path.elements = null;
|
|
505
|
-
}
|
|
506
|
-
}
|
|
507
|
-
else {
|
|
508
|
-
this.breadcrumbFolderTitle = null;
|
|
509
|
-
}
|
|
510
|
-
}
|
|
511
|
-
hasPreselectNodes() {
|
|
512
|
-
return this.preselectedNodes?.length > 0;
|
|
513
|
-
}
|
|
514
|
-
isSingleSelectionMode() {
|
|
515
|
-
return this.selectionMode === 'single';
|
|
516
|
-
}
|
|
517
|
-
getPreselectNodesBasedOnSelectionMode() {
|
|
518
|
-
let selectedNodes = [];
|
|
519
|
-
if (this.currentUploadBatch?.length) {
|
|
520
|
-
if (this.isSingleSelectionMode()) {
|
|
521
|
-
selectedNodes = [this.currentUploadBatch[this.currentUploadBatch.length - 1]];
|
|
522
|
-
}
|
|
523
|
-
else {
|
|
524
|
-
selectedNodes = this.currentUploadBatch;
|
|
525
|
-
}
|
|
526
|
-
}
|
|
527
|
-
return selectedNodes;
|
|
528
|
-
}
|
|
529
|
-
resetPagination() {
|
|
530
|
-
this.queryBuilderService.paging = {
|
|
531
|
-
maxItems: this.pageSize,
|
|
532
|
-
skipCount: this.DEFAULT_PAGINATION.skipCount
|
|
533
|
-
};
|
|
534
|
-
}
|
|
535
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContentNodeSelectorPanelComponent, deps: [{ token: i1.CustomResourcesService }, { token: i2.SearchQueryBuilderService }, { token: i3.UserPreferencesService }, { token: i4.NodesApiService }, { token: i4.UploadService }, { token: i4.SitesService }, { token: i5.ContentNodeSelectorPanelService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
536
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ContentNodeSelectorPanelComponent, isStandalone: true, selector: "adf-content-node-selector-panel", inputs: { restrictRootToCurrentFolderId: "restrictRootToCurrentFolderId", currentFolderId: "currentFolderId", dropdownHideMyFiles: "dropdownHideMyFiles", dropdownSiteList: "dropdownSiteList", where: "where", rowFilter: "rowFilter", excludeSiteContent: "excludeSiteContent", imageResolver: "imageResolver", pageSize: "pageSize", selectionMode: "selectionMode", isSelectionValid: "isSelectionValid", breadcrumbTransform: "breadcrumbTransform", showSearch: "showSearch", showDropdownSiteList: "showDropdownSiteList", showFilesInResult: "showFilesInResult", showNodeCounter: "showNodeCounter" }, outputs: { select: "select", navigationChange: "navigationChange", siteChange: "siteChange", showingSearch: "showingSearch", currentFolder: "currentFolder", folderLoaded: "folderLoaded" }, host: { classAttribute: "adf-content-node-selector-panel" }, providers: [SearchQueryBuilderService], viewQueries: [{ propertyName: "documentList", first: true, predicate: ["documentList"], descendants: true, static: true }, { propertyName: "highlighter", first: true, predicate: HighlightDirective, descendants: true, static: true }, { propertyName: "infinitePaginationComponent", first: true, predicate: InfinitePaginationComponent, descendants: true, static: true }], ngImport: i0, template: "<div class=\"adf-content-node-selector-content\">\n <mat-form-field floatPlaceholder=\"never\"\n appearance=\"fill\"\n class=\"adf-content-node-selector-content-input\"\n subscriptSizing=\"dynamic\"\n *ngIf=\"showSearch\">\n <mat-label>{{ 'NODE_SELECTOR.SEARCH' | translate }}</mat-label>\n <input matInput\n id=\"searchInput\"\n [formControl]=\"searchInput\"\n type=\"text\"\n [value]=\"searchTerm\"\n adf-auto-focus\n data-automation-id=\"content-node-selector-search-input\">\n\n <mat-icon *ngIf=\"searchTerm.length > 0\"\n matSuffix (click)=\"clear()\"\n class=\"adf-content-node-selector-content-input-icon\"\n data-automation-id=\"content-node-selector-search-clear\">clear\n </mat-icon>\n\n <mat-icon *ngIf=\"searchTerm.length === 0\"\n matSuffix\n class=\"adf-content-node-selector-content-input-icon\"\n data-automation-id=\"content-node-selector-search-icon\">search\n </mat-icon>\n\n </mat-form-field>\n <adf-sites-dropdown\n *ngIf=\"showDropdownSiteList\"\n class=\"full-width\"\n (change)=\"siteChanged($event)\"\n [placeholder]=\"'NODE_SELECTOR.SELECT_LIBRARY'\"\n [hideMyFiles]=\"dropdownHideMyFiles\"\n [siteList]=\"dropdownSiteList\"\n [value]=\"startSiteGuid\"\n data-automation-id=\"content-node-selector-sites-combo\" />\n <button *ngIf=\"hasCustomModels()\"\n data-automation-id=\"adf-toggle-search-panel-button\"\n mat-icon-button\n (click)=\"toggleSearchPanel()\">\n <mat-icon>filter_list</mat-icon>\n {{ 'SEARCH.SEARCH_HEADER.TITLE' | translate }}\n </button>\n <div class=\"adf-content-node-selector-search-panel-container\">\n <adf-search-panel *ngIf=\"searchPanelExpanded\" />\n <div class=\"adf-content-node-selector-document-list-container\">\n <adf-toolbar>\n <adf-toolbar-title>\n <ng-container *ngIf=\"!showBreadcrumbs()\">\n <h2 class=\"adf-search-results-label\">{{ 'NODE_SELECTOR.SEARCH_RESULTS' | translate }}</h2>\n </ng-container>\n <adf-dropdown-breadcrumb *ngIf=\"showBreadcrumbs()\"\n class=\"adf-content-node-selector-content-breadcrumb\"\n (navigate)=\"clearSearch()\"\n [target]=\"documentList\"\n [rootId]=\"breadcrumbRootId\"\n [transform]=\"breadcrumbTransform\"\n [folderNode]=\"breadcrumbFolderNode\"\n [root]=\"breadcrumbFolderTitle\"\n data-automation-id=\"content-node-selector-content-breadcrumb\" />\n <ng-container *ngIf=\"showNodeCounter\" [adf-node-counter]=\"getSelectedCount()\" />\n </adf-toolbar-title>\n </adf-toolbar>\n\n <div\n class=\"adf-content-node-selector-content-list\"\n [class.adf-content-node-selector-content-list-searchLayout]=\"showingSearchResults\"\n data-automation-id=\"content-node-selector-content-list\">\n <adf-document-list\n #documentList\n [adf-highlight]=\"searchTerm\"\n adf-highlight-selector=\".adf-name-location-cell-name\"\n [showHeader]=\"showHeader\"\n [node]=\"nodePaging\"\n [preselectNodes]=\"preselectedNodes\"\n [maxItems]=\"pageSize\"\n [rowFilter]=\"_rowFilter\"\n [imageResolver]=\"imageResolver\"\n [currentFolderId]=\"folderIdToShow\"\n [selectionMode]=\"selectionMode\"\n [contextMenuActions]=\"false\"\n [contentActions]=\"false\"\n [allowDropFiles]=\"false\"\n [sorting]=\"sorting\"\n sortingMode=\"server\"\n [where]=\"where\"\n (folderChange)=\"onFolderChange($event)\"\n (ready)=\"onFolderLoaded($event)\"\n (nodeSelected)=\"onCurrentSelection($event)\"\n [class.adf-content-node-selector-content-list-empty]=\"emptyList\"\n data-automation-id=\"content-node-selector-document-list\">\n\n <adf-custom-empty-content-template>\n <div aria-live=\"polite\">{{ 'NODE_SELECTOR.NO_RESULTS' | translate }}</div>\n </adf-custom-empty-content-template>\n\n <data-columns>\n <data-column key=\"$thumbnail\" type=\"image\" />\n <data-column key=\"name\" type=\"text\" title=\"ADF-DOCUMENT-LIST.LAYOUT.NAME\" class=\"adf-full-width adf-ellipsis-cell\">\n <ng-template let-context>\n <adf-name-location-cell [row]=\"context.row\" />\n </ng-template>\n </data-column>\n <data-column key=\"modifiedAt\" type=\"date\" title=\"ADF-DOCUMENT-LIST.LAYOUT.MODIFIED_ON\" format=\"timeAgo\" class=\"adf-content-selector-modified-cell\" />\n <data-column key=\"createdByUser.displayName\" type=\"text\" title=\"ADF-DOCUMENT-LIST.LAYOUT.CREATED_BY\" class=\"adf-content-selector-modifier-cell\" />\n <data-column key=\"visibility\" type=\"text\" title=\"ADF-DOCUMENT-LIST.LAYOUT.STATUS\" class=\"adf-content-selector-visibility-cell\" />\n </data-columns>\n\n </adf-document-list>\n\n <adf-infinite-pagination\n [target]=\"target\"\n [loading]=\"loadingSearchResults\"\n (loadMore)=\"getNextPageOfSearch($event)\"\n data-automation-id=\"content-node-selector-search-pagination\">\n {{ 'ADF-DOCUMENT-LIST.LAYOUT.LOAD_MORE' | translate }}\n </adf-infinite-pagination>\n </div>\n </div>\n </div>\n</div>\n", styles: ["h2.adf-search-results-label{flex:1;font-weight:600;font-size:var(--theme-body-1-font-size);font-style:normal;font-stretch:normal;line-height:1.43;letter-spacing:-.2px;color:var(--adf-theme-foreground-text-color-087)}.mdc-dialog .mat-mdc-dialog-surface:is(div){padding-bottom:0}.adf-content-node-selector-panel .adf-toolbar .adf-toolbar-container.adf-toolbar-container-row{max-height:48px;border-bottom-width:0;font-size:var(--theme-body-1-font-size);height:auto}.adf-content-node-selector-search-panel-container{display:flex}.adf-content-node-selector-document-list-container{margin-top:16px;width:100%}.adf-content-node-selector-content{padding-top:0}.adf-content-node-selector-content .mat-mdc-input-element:focus::placeholder{color:var(--theme-primary-color)}.adf-content-node-selector-content .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex{align-items:center}.adf-content-node-selector-content .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix{padding-bottom:0}.adf-content-node-selector-content .adf-sites-dropdown-form-field label.mat-mdc-floating-label{top:32px}.adf-content-node-selector-content .mat-mdc-form-field-subscript-wrapper{height:16px}.adf-content-node-selector-content-input{width:100%;margin-bottom:8px}.adf-content-node-selector-content-input .adf-content-node-selector-content-input-icon{color:var(--adf-theme-foreground-icon-color-054);cursor:pointer;padding:0 0 8px;width:1em;height:1em;font-size:20px}.adf-content-node-selector-content-input .adf-content-node-selector-content-input-icon:hover{color:var(--adf-theme-foreground-base-color)}.adf-content-node-selector-content-input .mat-mdc-form-field-subscript-wrapper{display:none}.adf-content-node-selector-content .adf-site-dropdown-container{display:block}.adf-content-node-selector-content .adf-site-dropdown-container .adf-sites-dropdown-form-field{width:100%}.adf-content-node-selector-breadcrumb .adf-dropdown-breadcrumb-trigger{outline:none}.adf-content-node-selector-breadcrumb .adf-dropdown-breadcrumb-trigger .adf-dropdown-breadcrumb-icon{color:var(--adf-theme-foreground-base-color-045)}.adf-content-node-selector-breadcrumb .adf-dropdown-breadcrumb-trigger .adf-dropdown-breadcrumb-icon:hover{color:var(--adf-theme-foreground-base-color-065)}.adf-content-node-selector-breadcrumb .adf-dropdown-breadcrumb-trigger:focus .adf-dropdown-breadcrumb-icon{color:var(--theme-primary-color)}.adf-content-node-selector-breadcrumb .adf-dropdown-breadcrumb-item-chevron{color:var(--adf-theme-foreground-base-color-045)}.adf-content-node-selector-content-list,.adf-content-node-selector-list{height:40vh;overflow:auto;border:1px solid var(--adf-theme-foreground-text-color-007);border-top:0;position:relative}.adf-content-node-selector-content-list-empty+adf-infinite-pagination,.adf-content-node-selector-list-empty+adf-infinite-pagination{position:absolute;bottom:0;width:100%}.adf-content-node-selector-content-list .adf-highlight,.adf-content-node-selector-list .adf-highlight{color:var(--theme-primary-color)}.adf-content-node-selector-content-list .adf-datatable-list,.adf-content-node-selector-list .adf-datatable-list{border:none}.adf-content-node-selector-content-list .adf-datatable-list .adf-name-location-cell-location,.adf-content-node-selector-list .adf-datatable-list .adf-name-location-cell-location{display:none}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-selected,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-selected{height:100%;width:100%}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-selected>svg,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-selected>svg{fill:var(--theme-primary-color)}.adf-content-node-selector-content-list .adf-datatable-list .adf-no-content-container.adf-datatable-cell,.adf-content-node-selector-list .adf-datatable-list .adf-no-content-container.adf-datatable-cell{text-align:center;border:none}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-cell--image,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-cell--image{min-width:35px;width:35px;max-width:40px}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-cell:nth-child(2),.adf-content-node-selector-list .adf-datatable-list .adf-datatable-cell:nth-child(2){flex:1 0 95px}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-cell .adf-no-content-container.adf-datatable-cell,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-cell .adf-no-content-container.adf-datatable-cell{text-align:center;border:none}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-cell.adf-content-selector-visibility-cell,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-cell.adf-content-selector-visibility-cell{flex:0 1 auto;min-width:1px}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-cell.adf-content-selector-visibility-cell .adf-datatable-cell-value,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-cell.adf-content-selector-visibility-cell .adf-datatable-cell-value{padding:0}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-body .adf-datatable-row,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-body .adf-datatable-row{min-height:40px}@media screen and (-ms-high-contrast: active),screen and (-ms-high-contrast: none){.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-body .adf-datatable-row,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-body .adf-datatable-row{padding-top:15px}}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-body .adf-datatable-row:first-child .adf-datatable-cell,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-body .adf-datatable-row:first-child .adf-datatable-cell{border-top:none}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-body .adf-datatable-row:last-child .adf-datatable-cell,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-body .adf-datatable-row:last-child .adf-datatable-cell{border-bottom:none}.adf-content-node-selector-content-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row,.adf-content-node-selector-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row{min-height:65px}@media screen and (-ms-high-contrast: active),screen and (-ms-high-contrast: none){.adf-content-node-selector-content-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row,.adf-content-node-selector-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row{padding-top:15px}}.adf-content-node-selector-content-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row .adf-name-location-cell-name,.adf-content-node-selector-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row .adf-name-location-cell-name{padding:5px 10px 2px}.adf-content-node-selector-content-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row.adf-content-selector-modified-cell,.adf-content-node-selector-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row.adf-content-selector-modified-cell,.adf-content-node-selector-content-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row.adf-content-selector-modifier-cell,.adf-content-node-selector-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row.adf-content-selector-modifier-cell,.adf-content-node-selector-content-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row.adf-content-selector-visibility-cell,.adf-content-node-selector-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row.adf-content-selector-visibility-cell{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: AutoFocusDirective, selector: "[adf-auto-focus]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: DropdownSitesComponent, selector: "adf-sites-dropdown", inputs: ["hideMyFiles", "siteList", "value", "placeholder", "relations"], outputs: ["change", "error"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i12.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: ToolbarTitleComponent, selector: "adf-toolbar-title" }, { kind: "component", type: ToolbarComponent, selector: "adf-toolbar", inputs: ["title", "color"] }, { kind: "component", type: DropdownBreadcrumbComponent, selector: "adf-dropdown-breadcrumb" }, { kind: "directive", type: NodeCounterDirective, selector: "[adf-node-counter]", inputs: ["adf-node-counter"] }, { kind: "component", type: DocumentListComponent, selector: "adf-document-list", inputs: ["includeFields", "where", "permissionsStyle", "locationFormat", "navigate", "showHeader", "navigationMode", "thumbnails", "selectionMode", "multiselect", "contentActions", "contentActionsPosition", "contextMenuActions", "emptyFolderImageUrl", "allowDropFiles", "sorting", "additionalSorting", "sortingMode", "rowStyle", "rowStyleClass", "loading", "_rowFilter", "rowFilter", "imageResolver", "stickyHeader", "headerFilters", "filterValue", "currentFolderId", "preselectNodes", "node", "maxItems", "columnsPresetKey", "setColumnsVisibility", "setColumnsWidths", "setColumnsOrder", "maxColumnsVisible", "isResizingEnabled", "blurOnResize", "displayCheckboxesOnHover", "displayDragAndDropHint"], outputs: ["nodeClick", "nodeDblClick", "folderChange", "preview", "ready", "error", "nodeSelected", "filterSelection", "columnsWidthChanged", "columnsVisibilityChanged", "columnsOrderChanged", "selectedItemsCountChanged"] }, { kind: "directive", type: HighlightDirective, selector: "[adf-highlight]", inputs: ["adf-highlight-selector", "adf-highlight", "adf-highlight-class"] }, { kind: "component", type: DataColumnListComponent, selector: "data-columns" }, { kind: "component", type: DataColumnComponent, selector: "data-column", inputs: ["id", "key", "customData", "type", "format", "sortable", "draggable", "resizable", "isHidden", "title", "subtitle", "formatTooltip", "sr-title", "class", "copyContent", "editable", "focus", "sortingKey", "order", "currencyConfig", "decimalConfig", "dateConfig"] }, { kind: "component", type: NameLocationCellComponent, selector: "adf-name-location-cell", inputs: ["row"] }, { kind: "component", type: InfinitePaginationComponent, selector: "adf-infinite-pagination", inputs: ["target", "pageSize", "loading"], outputs: ["loadMore"] }, { kind: "directive", type: CustomEmptyContentTemplateDirective, selector: "adf-custom-empty-content-template, empty-folder-content" }, { kind: "component", type: SearchPanelComponent, selector: "adf-search-panel" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
537
|
-
}
|
|
538
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContentNodeSelectorPanelComponent, decorators: [{
|
|
539
|
-
type: Component,
|
|
540
|
-
args: [{ selector: 'adf-content-node-selector-panel', standalone: true, imports: [
|
|
541
|
-
CommonModule,
|
|
542
|
-
MatFormFieldModule,
|
|
543
|
-
TranslateModule,
|
|
544
|
-
MatInputModule,
|
|
545
|
-
ReactiveFormsModule,
|
|
546
|
-
AutoFocusDirective,
|
|
547
|
-
MatIconModule,
|
|
548
|
-
DropdownSitesComponent,
|
|
549
|
-
MatButtonModule,
|
|
550
|
-
ToolbarTitleComponent,
|
|
551
|
-
ToolbarComponent,
|
|
552
|
-
DropdownBreadcrumbComponent,
|
|
553
|
-
NodeCounterDirective,
|
|
554
|
-
DocumentListComponent,
|
|
555
|
-
HighlightDirective,
|
|
556
|
-
DataColumnListComponent,
|
|
557
|
-
DataColumnComponent,
|
|
558
|
-
NameLocationCellComponent,
|
|
559
|
-
InfinitePaginationComponent,
|
|
560
|
-
CustomEmptyContentTemplateDirective,
|
|
561
|
-
SearchPanelComponent
|
|
562
|
-
], encapsulation: ViewEncapsulation.None, host: { class: 'adf-content-node-selector-panel' }, providers: [SearchQueryBuilderService], template: "<div class=\"adf-content-node-selector-content\">\n <mat-form-field floatPlaceholder=\"never\"\n appearance=\"fill\"\n class=\"adf-content-node-selector-content-input\"\n subscriptSizing=\"dynamic\"\n *ngIf=\"showSearch\">\n <mat-label>{{ 'NODE_SELECTOR.SEARCH' | translate }}</mat-label>\n <input matInput\n id=\"searchInput\"\n [formControl]=\"searchInput\"\n type=\"text\"\n [value]=\"searchTerm\"\n adf-auto-focus\n data-automation-id=\"content-node-selector-search-input\">\n\n <mat-icon *ngIf=\"searchTerm.length > 0\"\n matSuffix (click)=\"clear()\"\n class=\"adf-content-node-selector-content-input-icon\"\n data-automation-id=\"content-node-selector-search-clear\">clear\n </mat-icon>\n\n <mat-icon *ngIf=\"searchTerm.length === 0\"\n matSuffix\n class=\"adf-content-node-selector-content-input-icon\"\n data-automation-id=\"content-node-selector-search-icon\">search\n </mat-icon>\n\n </mat-form-field>\n <adf-sites-dropdown\n *ngIf=\"showDropdownSiteList\"\n class=\"full-width\"\n (change)=\"siteChanged($event)\"\n [placeholder]=\"'NODE_SELECTOR.SELECT_LIBRARY'\"\n [hideMyFiles]=\"dropdownHideMyFiles\"\n [siteList]=\"dropdownSiteList\"\n [value]=\"startSiteGuid\"\n data-automation-id=\"content-node-selector-sites-combo\" />\n <button *ngIf=\"hasCustomModels()\"\n data-automation-id=\"adf-toggle-search-panel-button\"\n mat-icon-button\n (click)=\"toggleSearchPanel()\">\n <mat-icon>filter_list</mat-icon>\n {{ 'SEARCH.SEARCH_HEADER.TITLE' | translate }}\n </button>\n <div class=\"adf-content-node-selector-search-panel-container\">\n <adf-search-panel *ngIf=\"searchPanelExpanded\" />\n <div class=\"adf-content-node-selector-document-list-container\">\n <adf-toolbar>\n <adf-toolbar-title>\n <ng-container *ngIf=\"!showBreadcrumbs()\">\n <h2 class=\"adf-search-results-label\">{{ 'NODE_SELECTOR.SEARCH_RESULTS' | translate }}</h2>\n </ng-container>\n <adf-dropdown-breadcrumb *ngIf=\"showBreadcrumbs()\"\n class=\"adf-content-node-selector-content-breadcrumb\"\n (navigate)=\"clearSearch()\"\n [target]=\"documentList\"\n [rootId]=\"breadcrumbRootId\"\n [transform]=\"breadcrumbTransform\"\n [folderNode]=\"breadcrumbFolderNode\"\n [root]=\"breadcrumbFolderTitle\"\n data-automation-id=\"content-node-selector-content-breadcrumb\" />\n <ng-container *ngIf=\"showNodeCounter\" [adf-node-counter]=\"getSelectedCount()\" />\n </adf-toolbar-title>\n </adf-toolbar>\n\n <div\n class=\"adf-content-node-selector-content-list\"\n [class.adf-content-node-selector-content-list-searchLayout]=\"showingSearchResults\"\n data-automation-id=\"content-node-selector-content-list\">\n <adf-document-list\n #documentList\n [adf-highlight]=\"searchTerm\"\n adf-highlight-selector=\".adf-name-location-cell-name\"\n [showHeader]=\"showHeader\"\n [node]=\"nodePaging\"\n [preselectNodes]=\"preselectedNodes\"\n [maxItems]=\"pageSize\"\n [rowFilter]=\"_rowFilter\"\n [imageResolver]=\"imageResolver\"\n [currentFolderId]=\"folderIdToShow\"\n [selectionMode]=\"selectionMode\"\n [contextMenuActions]=\"false\"\n [contentActions]=\"false\"\n [allowDropFiles]=\"false\"\n [sorting]=\"sorting\"\n sortingMode=\"server\"\n [where]=\"where\"\n (folderChange)=\"onFolderChange($event)\"\n (ready)=\"onFolderLoaded($event)\"\n (nodeSelected)=\"onCurrentSelection($event)\"\n [class.adf-content-node-selector-content-list-empty]=\"emptyList\"\n data-automation-id=\"content-node-selector-document-list\">\n\n <adf-custom-empty-content-template>\n <div aria-live=\"polite\">{{ 'NODE_SELECTOR.NO_RESULTS' | translate }}</div>\n </adf-custom-empty-content-template>\n\n <data-columns>\n <data-column key=\"$thumbnail\" type=\"image\" />\n <data-column key=\"name\" type=\"text\" title=\"ADF-DOCUMENT-LIST.LAYOUT.NAME\" class=\"adf-full-width adf-ellipsis-cell\">\n <ng-template let-context>\n <adf-name-location-cell [row]=\"context.row\" />\n </ng-template>\n </data-column>\n <data-column key=\"modifiedAt\" type=\"date\" title=\"ADF-DOCUMENT-LIST.LAYOUT.MODIFIED_ON\" format=\"timeAgo\" class=\"adf-content-selector-modified-cell\" />\n <data-column key=\"createdByUser.displayName\" type=\"text\" title=\"ADF-DOCUMENT-LIST.LAYOUT.CREATED_BY\" class=\"adf-content-selector-modifier-cell\" />\n <data-column key=\"visibility\" type=\"text\" title=\"ADF-DOCUMENT-LIST.LAYOUT.STATUS\" class=\"adf-content-selector-visibility-cell\" />\n </data-columns>\n\n </adf-document-list>\n\n <adf-infinite-pagination\n [target]=\"target\"\n [loading]=\"loadingSearchResults\"\n (loadMore)=\"getNextPageOfSearch($event)\"\n data-automation-id=\"content-node-selector-search-pagination\">\n {{ 'ADF-DOCUMENT-LIST.LAYOUT.LOAD_MORE' | translate }}\n </adf-infinite-pagination>\n </div>\n </div>\n </div>\n</div>\n", styles: ["h2.adf-search-results-label{flex:1;font-weight:600;font-size:var(--theme-body-1-font-size);font-style:normal;font-stretch:normal;line-height:1.43;letter-spacing:-.2px;color:var(--adf-theme-foreground-text-color-087)}.mdc-dialog .mat-mdc-dialog-surface:is(div){padding-bottom:0}.adf-content-node-selector-panel .adf-toolbar .adf-toolbar-container.adf-toolbar-container-row{max-height:48px;border-bottom-width:0;font-size:var(--theme-body-1-font-size);height:auto}.adf-content-node-selector-search-panel-container{display:flex}.adf-content-node-selector-document-list-container{margin-top:16px;width:100%}.adf-content-node-selector-content{padding-top:0}.adf-content-node-selector-content .mat-mdc-input-element:focus::placeholder{color:var(--theme-primary-color)}.adf-content-node-selector-content .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex{align-items:center}.adf-content-node-selector-content .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-form-field-infix{padding-bottom:0}.adf-content-node-selector-content .adf-sites-dropdown-form-field label.mat-mdc-floating-label{top:32px}.adf-content-node-selector-content .mat-mdc-form-field-subscript-wrapper{height:16px}.adf-content-node-selector-content-input{width:100%;margin-bottom:8px}.adf-content-node-selector-content-input .adf-content-node-selector-content-input-icon{color:var(--adf-theme-foreground-icon-color-054);cursor:pointer;padding:0 0 8px;width:1em;height:1em;font-size:20px}.adf-content-node-selector-content-input .adf-content-node-selector-content-input-icon:hover{color:var(--adf-theme-foreground-base-color)}.adf-content-node-selector-content-input .mat-mdc-form-field-subscript-wrapper{display:none}.adf-content-node-selector-content .adf-site-dropdown-container{display:block}.adf-content-node-selector-content .adf-site-dropdown-container .adf-sites-dropdown-form-field{width:100%}.adf-content-node-selector-breadcrumb .adf-dropdown-breadcrumb-trigger{outline:none}.adf-content-node-selector-breadcrumb .adf-dropdown-breadcrumb-trigger .adf-dropdown-breadcrumb-icon{color:var(--adf-theme-foreground-base-color-045)}.adf-content-node-selector-breadcrumb .adf-dropdown-breadcrumb-trigger .adf-dropdown-breadcrumb-icon:hover{color:var(--adf-theme-foreground-base-color-065)}.adf-content-node-selector-breadcrumb .adf-dropdown-breadcrumb-trigger:focus .adf-dropdown-breadcrumb-icon{color:var(--theme-primary-color)}.adf-content-node-selector-breadcrumb .adf-dropdown-breadcrumb-item-chevron{color:var(--adf-theme-foreground-base-color-045)}.adf-content-node-selector-content-list,.adf-content-node-selector-list{height:40vh;overflow:auto;border:1px solid var(--adf-theme-foreground-text-color-007);border-top:0;position:relative}.adf-content-node-selector-content-list-empty+adf-infinite-pagination,.adf-content-node-selector-list-empty+adf-infinite-pagination{position:absolute;bottom:0;width:100%}.adf-content-node-selector-content-list .adf-highlight,.adf-content-node-selector-list .adf-highlight{color:var(--theme-primary-color)}.adf-content-node-selector-content-list .adf-datatable-list,.adf-content-node-selector-list .adf-datatable-list{border:none}.adf-content-node-selector-content-list .adf-datatable-list .adf-name-location-cell-location,.adf-content-node-selector-list .adf-datatable-list .adf-name-location-cell-location{display:none}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-selected,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-selected{height:100%;width:100%}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-selected>svg,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-selected>svg{fill:var(--theme-primary-color)}.adf-content-node-selector-content-list .adf-datatable-list .adf-no-content-container.adf-datatable-cell,.adf-content-node-selector-list .adf-datatable-list .adf-no-content-container.adf-datatable-cell{text-align:center;border:none}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-cell--image,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-cell--image{min-width:35px;width:35px;max-width:40px}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-cell:nth-child(2),.adf-content-node-selector-list .adf-datatable-list .adf-datatable-cell:nth-child(2){flex:1 0 95px}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-cell .adf-no-content-container.adf-datatable-cell,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-cell .adf-no-content-container.adf-datatable-cell{text-align:center;border:none}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-cell.adf-content-selector-visibility-cell,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-cell.adf-content-selector-visibility-cell{flex:0 1 auto;min-width:1px}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-cell.adf-content-selector-visibility-cell .adf-datatable-cell-value,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-cell.adf-content-selector-visibility-cell .adf-datatable-cell-value{padding:0}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-body .adf-datatable-row,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-body .adf-datatable-row{min-height:40px}@media screen and (-ms-high-contrast: active),screen and (-ms-high-contrast: none){.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-body .adf-datatable-row,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-body .adf-datatable-row{padding-top:15px}}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-body .adf-datatable-row:first-child .adf-datatable-cell,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-body .adf-datatable-row:first-child .adf-datatable-cell{border-top:none}.adf-content-node-selector-content-list .adf-datatable-list .adf-datatable-body .adf-datatable-row:last-child .adf-datatable-cell,.adf-content-node-selector-list .adf-datatable-list .adf-datatable-body .adf-datatable-row:last-child .adf-datatable-cell{border-bottom:none}.adf-content-node-selector-content-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row,.adf-content-node-selector-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row{min-height:65px}@media screen and (-ms-high-contrast: active),screen and (-ms-high-contrast: none){.adf-content-node-selector-content-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row,.adf-content-node-selector-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row{padding-top:15px}}.adf-content-node-selector-content-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row .adf-name-location-cell-name,.adf-content-node-selector-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row .adf-name-location-cell-name{padding:5px 10px 2px}.adf-content-node-selector-content-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row.adf-content-selector-modified-cell,.adf-content-node-selector-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row.adf-content-selector-modified-cell,.adf-content-node-selector-content-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row.adf-content-selector-modifier-cell,.adf-content-node-selector-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row.adf-content-selector-modifier-cell,.adf-content-node-selector-content-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row.adf-content-selector-visibility-cell,.adf-content-node-selector-list-searchLayout .adf-datatable-list .adf-datatable-body .adf-datatable-row.adf-content-selector-visibility-cell{display:none}\n"] }]
|
|
563
|
-
}], ctorParameters: () => [{ type: i1.CustomResourcesService }, { type: i2.SearchQueryBuilderService }, { type: i3.UserPreferencesService }, { type: i4.NodesApiService }, { type: i4.UploadService }, { type: i4.SitesService }, { type: i5.ContentNodeSelectorPanelService }], propDecorators: { restrictRootToCurrentFolderId: [{
|
|
564
|
-
type: Input
|
|
565
|
-
}], currentFolderId: [{
|
|
566
|
-
type: Input,
|
|
567
|
-
args: [{ required: true }]
|
|
568
|
-
}], dropdownHideMyFiles: [{
|
|
569
|
-
type: Input
|
|
570
|
-
}], dropdownSiteList: [{
|
|
571
|
-
type: Input
|
|
572
|
-
}], where: [{
|
|
573
|
-
type: Input
|
|
574
|
-
}], rowFilter: [{
|
|
575
|
-
type: Input
|
|
576
|
-
}], excludeSiteContent: [{
|
|
577
|
-
type: Input
|
|
578
|
-
}], imageResolver: [{
|
|
579
|
-
type: Input
|
|
580
|
-
}], pageSize: [{
|
|
581
|
-
type: Input
|
|
582
|
-
}], selectionMode: [{
|
|
583
|
-
type: Input
|
|
584
|
-
}], isSelectionValid: [{
|
|
585
|
-
type: Input
|
|
586
|
-
}], breadcrumbTransform: [{
|
|
587
|
-
type: Input
|
|
588
|
-
}], showSearch: [{
|
|
589
|
-
type: Input
|
|
590
|
-
}], showDropdownSiteList: [{
|
|
591
|
-
type: Input
|
|
592
|
-
}], showFilesInResult: [{
|
|
593
|
-
type: Input
|
|
594
|
-
}], showNodeCounter: [{
|
|
595
|
-
type: Input
|
|
596
|
-
}], select: [{
|
|
597
|
-
type: Output
|
|
598
|
-
}], navigationChange: [{
|
|
599
|
-
type: Output
|
|
600
|
-
}], siteChange: [{
|
|
601
|
-
type: Output
|
|
602
|
-
}], showingSearch: [{
|
|
603
|
-
type: Output
|
|
604
|
-
}], currentFolder: [{
|
|
605
|
-
type: Output
|
|
606
|
-
}], folderLoaded: [{
|
|
607
|
-
type: Output
|
|
608
|
-
}], documentList: [{
|
|
609
|
-
type: ViewChild,
|
|
610
|
-
args: ['documentList', { static: true }]
|
|
611
|
-
}], highlighter: [{
|
|
612
|
-
type: ViewChild,
|
|
613
|
-
args: [HighlightDirective, { static: true }]
|
|
614
|
-
}], infinitePaginationComponent: [{
|
|
615
|
-
type: ViewChild,
|
|
616
|
-
args: [InfinitePaginationComponent, { static: true }]
|
|
617
|
-
}] } });
|
|
618
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1ub2RlLXNlbGVjdG9yLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvY29udGVudC1ub2RlLXNlbGVjdG9yL2NvbnRlbnQtbm9kZS1zZWxlY3Rvci1wYW5lbC9jb250ZW50LW5vZGUtc2VsZWN0b3ItcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbnRlbnQtc2VydmljZXMvc3JjL2xpYi9jb250ZW50LW5vZGUtc2VsZWN0b3IvY29udGVudC1ub2RlLXNlbGVjdG9yLXBhbmVsL2NvbnRlbnQtbm9kZS1zZWxlY3Rvci1wYW5lbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pJLE9BQU8sRUFDSCxtQ0FBbUMsRUFDbkMsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUV2QixrQkFBa0IsRUFDbEIsMkJBQTJCLEVBRTNCLGNBQWMsRUFDZCxnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDdkIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQWtELGVBQWUsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBK0IsVUFBVSxFQUErQixTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0gsT0FBTyxFQUFFLHFC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QkFEWixLQUFLO2dCQVFOLGdCQUFnQjtzQkFEZixLQUFLO2dCQVVOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFLRixVQUFVO3NCQURiLEtBQUs7Z0JBYUYsb0JBQW9CO3NCQUR2QixLQUFLO2dCQWFGLGlCQUFpQjtzQkFEcEIsS0FBSztnQkFVRixlQUFlO3NCQURsQixLQUFLO2dCQVdOLE1BQU07c0JBREwsTUFBTTtnQkFLUCxnQkFBZ0I7c0JBRGYsTUFBTTtnQkFLUCxVQUFVO3NCQURULE1BQU07Z0JBS1AsYUFBYTtzQkFEWixNQUFNO2dCQUtQLGFBQWE7c0JBRFosTUFBTTtnQkFLUCxZQUFZO3NCQURYLE1BQU07Z0JBSVAsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSTNDLFdBQVc7c0JBRFYsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBbUIvQywyQkFBMkI7c0JBRDFCLFNBQVM7dUJBQUMsMkJBQTJCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIERlc3Ryb3lSZWYsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQ3VzdG9tRW1wdHlDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgRGF0YUNvbHVtbkNvbXBvbmVudCxcbiAgICBEYXRhQ29sdW1uTGlzdENvbXBvbmVudCxcbiAgICBEYXRhU29ydGluZyxcbiAgICBIaWdobGlnaHREaXJlY3RpdmUsXG4gICAgSW5maW5pdGVQYWdpbmF0aW9uQ29tcG9uZW50LFxuICAgIFBhZ2luYXRlZENvbXBvbmVudCxcbiAgICBTaG93SGVhZGVyTW9kZSxcbiAgICBUb29sYmFyQ29tcG9uZW50LFxuICAgIFRvb2xiYXJUaXRsZUNvbXBvbmVudCxcbiAgICBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlLFxuICAgIFVzZXJQcmVmZXJlbmNlVmFsdWVzXG59IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBGaWxlVXBsb2FkQ29tcGxldGVFdmVudCwgRmlsZVVwbG9hZERlbGV0ZUV2ZW50LCBOb2Rlc0FwaVNlcnZpY2UsIFNpdGVzU2VydmljZSwgVXBsb2FkU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbW1vbic7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOb2RlLCBOb2RlRW50cnksIE5vZGVQYWdpbmcsIFBhZ2luYXRpb24sIFJlcXVlc3RTY29wZSwgU2VhcmNoUmVxdWVzdCwgU2l0ZUVudHJ5LCBTaXRlUGFnaW5nIH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBEb2N1bWVudExpc3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi9kb2N1bWVudC1saXN0L2NvbXBvbmVudHMvZG9jdW1lbnQtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUm93RmlsdGVyIH0gZnJvbSAnLi4vLi4vZG9jdW1lbnQtbGlzdC9kYXRhL3Jvdy1maWx0ZXIubW9kZWwnO1xuaW1wb3J0IHsgSW1hZ2VSZXNvbHZlciB9IGZyb20gJy4uLy4uL2RvY3VtZW50LWxpc3QvZGF0YS9pbWFnZS1yZXNvbHZlci5tb2RlbCc7XG5pbXBvcnQgeyBDdXN0b21SZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZG9jdW1lbnQtbGlzdC9zZXJ2aWNlcy9jdXN0b20tcmVzb3VyY2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2hhcmVEYXRhUm93IH0gZnJvbSAnLi4vLi4vZG9jdW1lbnQtbGlzdC9kYXRhL3NoYXJlLWRhdGEtcm93Lm1vZGVsJztcbmltcG9ydCB7IE5vZGVFbnRyeUV2ZW50IH0gZnJvbSAnLi4vLi4vZG9jdW1lbnQtbGlzdC9jb21wb25lbnRzL25vZGUuZXZlbnQnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29udGVudE5vZGVTZWxlY3RvclBhbmVsU2VydmljZSB9IGZyb20gJy4vY29udGVudC1ub2RlLXNlbGVjdG9yLXBhbmVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IEF1dG9Gb2N1c0RpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvYXV0by1mb2N1cy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTm9kZUNvdW50ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL25vZGUtY291bnRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgRHJvcGRvd25TaXRlc0NvbXBvbmVudCB9IGZyb20gJy4uL3NpdGUtZHJvcGRvd24vc2l0ZXMtZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBOYW1lTG9jYXRpb25DZWxsQ29tcG9uZW50IH0gZnJvbSAnLi4vbmFtZS1sb2NhdGlvbi1jZWxsL25hbWUtbG9jYXRpb24tY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHJvcGRvd25CcmVhZGNydW1iQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYnJlYWRjcnVtYi9kcm9wZG93bi1icmVhZGNydW1iLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hRdWVyeUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VhcmNoL3NlcnZpY2VzL3NlYXJjaC1xdWVyeS1idWlsZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VhcmNoUGFuZWxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9zZWFyY2gvY29tcG9uZW50cy9zZWFyY2gtcGFuZWwvc2VhcmNoLXBhbmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25GdW5jdGlvbiA9IChlbnRyeTogTm9kZSkgPT4gYm9vbGVhbjtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRWYWxpZGF0aW9uID0gKCkgPT4gdHJ1ZTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhZGYtY29udGVudC1ub2RlLXNlbGVjdG9yLXBhbmVsJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICAgICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIEF1dG9Gb2N1c0RpcmVjdGl2ZSxcbiAgICAgICAgTWF0SWNvbk1vZHVsZSxcbiAgICAgICAgRHJvcGRvd25TaXRlc0NvbXBvbmVudCxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgICAgICBUb29sYmFyVGl0bGVDb21wb25lbnQsXG4gICAgICAgIFRvb2xiYXJDb21wb25lbnQsXG4gICAgICAgIERyb3Bkb3duQnJlYWRjcnVtYkNvbXBvbmVudCxcbiAgICAgICAgTm9kZUNvdW50ZXJEaXJlY3RpdmUsXG4gICAgICAgIERvY3VtZW50TGlzdENvbXBvbmVudCxcbiAgICAgICAgSGlnaGxpZ2h0RGlyZWN0aXZlLFxuICAgICAgICBEYXRhQ29sdW1uTGlzdENvbXBvbmVudCxcbiAgICAgICAgRGF0YUNvbHVtbkNvbXBvbmVudCxcbiAgICAgICAgTmFtZUxvY2F0aW9uQ2VsbENvbXBvbmVudCxcbiAgICAgICAgSW5maW5pdGVQYWdpbmF0aW9uQ29tcG9uZW50LFxuICAgICAgICBDdXN0b21FbXB0eUNvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICAgICAgU2VhcmNoUGFuZWxDb21wb25lbnRcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb250ZW50LW5vZGUtc2VsZWN0b3ItcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NvbnRlbnQtbm9kZS1zZWxlY3Rvci1wYW5lbC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDogeyBjbGFzczogJ2FkZi1jb250ZW50LW5vZGUtc2VsZWN0b3ItcGFuZWwnIH0sXG4gICAgcHJvdmlkZXJzOiBbU2VhcmNoUXVlcnlCdWlsZGVyU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgQ29udGVudE5vZGVTZWxlY3RvclBhbmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgREVGQVVMVF9QQUdJTkFUSU9OOiBQYWdpbmF0aW9uID0gbmV3IFBhZ2luYXRpb24oe1xuICAgICAgICBtYXhJdGVtczogMjUsXG4gICAgICAgIHNraXBDb3VudDogMFxuICAgIH0pO1xuXG4gICAgcmVhZG9ubHkgZGlzYWJsZUFjdGlvbkZvbGRlckxpc3QgPSBbJy1teXNpdGVzLSddO1xuXG4gICAgcHJpdmF0ZSBzaG93U2l0ZUxpc3QgPSB0cnVlO1xuICAgIHByaXZhdGUgc2hvd1NlYXJjaEZpZWxkID0gdHJ1ZTtcbiAgICBwcml2YXRlIHNob3dDb3VudGVyID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfZW1wdHlMaXN0ID0gdHJ1ZTtcblxuICAgIC8qKiBJZiB0cnVlIHdpbGwgcmVzdHJpY3QgdGhlIHNlYXJjaCBhbmQgYnJlYWRjcnVtYnMgdG8gdGhlIGN1cnJlbnRGb2xkZXJJZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVzdHJpY3RSb290VG9DdXJyZW50Rm9sZGVySWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBOb2RlIElEIG9mIHRoZSBmb2xkZXIgY3VycmVudGx5IGxpc3RlZC4gKi9cbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICAgIGN1cnJlbnRGb2xkZXJJZDogc3RyaW5nID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIEhpZGUgdGhlIFwiTXkgRmlsZXNcIiBvcHRpb24gYWRkZWQgdG8gdGhlIHNpdGUgbGlzdCBieSBkZWZhdWx0LlxuICAgICAqIFNlZSB0aGUgW1NpdGVzIERyb3Bkb3duIGNvbXBvbmVudF0oc2l0ZXMtZHJvcGRvd24uY29tcG9uZW50Lm1kKVxuICAgICAqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZHJvcGRvd25IaWRlTXlGaWxlczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIHNpdGUgZm9yIHNpdGUgZHJvcGRvd24uIFRoaXMgaXMgdGhlIHNhbWUgYXMgdGhlIGBzaXRlTGlzdGAuXG4gICAgICogcHJvcGVydHkgb2YgdGhlIFNpdGVzIERyb3Bkb3duIGNvbXBvbmVudCAoc2VlIGl0cyBkb2MgcGFnZVxuICAgICAqIGZvciBtb3JlIGluZm9ybWF0aW9uKS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRyb3Bkb3duU2l0ZUxpc3Q6IFNpdGVQYWdpbmcgPSBudWxsO1xuXG4gICAgX3Jvd0ZpbHRlcjogUm93RmlsdGVyID0gZGVmYXVsdFZhbGlkYXRpb247XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gKndoZXJlKiBmaWx0ZXIgZnVuY3Rpb24uIFNlZSB0aGVcbiAgICAgKiBEb2N1bWVudCBMaXN0IGNvbXBvbmVudFxuICAgICAqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgd2hlcmU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSByb3cgZmlsdGVyIGZ1bmN0aW9uLiBTZWUgdGhlXG4gICAgICogW1JvdyBGaWx0ZXIgTW9kZWxdKHJvdy1maWx0ZXIubW9kZWwubWQpIHBhZ2VcbiAgICAgKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCByb3dGaWx0ZXIocm93RmlsdGVyOiBSb3dGaWx0ZXIpIHtcbiAgICAgICAgdGhpcy5jcmVhdGVSb3dGaWx0ZXIocm93RmlsdGVyKTtcbiAgICB9XG5cbiAgICBnZXQgcm93RmlsdGVyKCk6IFJvd0ZpbHRlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3dGaWx0ZXI7XG4gICAgfVxuXG4gICAgX2V4Y2x1ZGVTaXRlQ29udGVudDogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBsaXN0IG9mIHNpdGUgY29udGVudCBjb21wb25lbnRJZHMuXG4gICAgICogVXNlZCB0byBmaWx0ZXIgb3V0IHRoZSBjb3JyZXNwb25kaW5nIGl0ZW1zIGZyb20gdGhlIGRpc3BsYXllZCBub2Rlc1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGV4Y2x1ZGVTaXRlQ29udGVudChleGNsdWRlU2l0ZUNvbnRlbnQ6IHN0cmluZ1tdKSB7XG4gICAgICAgIHRoaXMuX2V4Y2x1ZGVTaXRlQ29udGVudCA9IGV4Y2x1ZGVTaXRlQ29udGVudDtcbiAgICAgICAgdGhpcy5jcmVhdGVSb3dGaWx0ZXIodGhpcy5fcm93RmlsdGVyKTtcbiAgICB9XG5cbiAgICBnZXQgZXhjbHVkZVNpdGVDb250ZW50KCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V4Y2x1ZGVTaXRlQ29udGVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gaW1hZ2UgcmVzb2x2ZXIgZnVuY3Rpb24uIFNlZSB0aGVcbiAgICAgKiBbSW1hZ2UgUmVzb2x2ZXIgTW9kZWxdKGltYWdlLXJlc29sdmVyLm1vZGVsLm1kKSBwYWdlXG4gICAgICogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBpbWFnZVJlc29sdmVyOiBJbWFnZVJlc29sdmVyID0gbnVsbDtcblxuICAgIC8qKiBOdW1iZXIgb2YgaXRlbXMgc2hvd24gcGVyIHBhZ2UgaW4gdGhlIGxpc3QuICovXG4gICAgQElucHV0KClcbiAgICBwYWdlU2l6ZTogbnVtYmVyID0gdGhpcy5ERUZBVUxUX1BBR0lOQVRJT04ubWF4SXRlbXM7XG5cbiAgICAvKiogRGVmaW5lIHRoZSBzZWxlY3Rpb24gbW9kZSBmb3IgZG9jdW1lbnQgbGlzdC4gVGhlIGFsbG93ZWQgdmFsdWVzIGFyZSBzaW5nbGUgb3IgbXVsdGlwbGUgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGlvbk1vZGU6ICdzaW5nbGUnIHwgJ211bHRpcGxlJyA9ICdzaW5nbGUnO1xuXG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gdXNlZCB0byBkZWNpZGUgaWYgdGhlIHNlbGVjdGVkIG5vZGUgaGFzIHBlcm1pc3Npb24gdG8gYmUgc2VsZWN0ZWQuXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBhIGZ1bmN0aW9uIHRoYXQgYWx3YXlzIHJldHVybnMgdHJ1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGlzU2VsZWN0aW9uVmFsaWQ6IFZhbGlkYXRpb25GdW5jdGlvbiA9IGRlZmF1bHRWYWxpZGF0aW9uO1xuXG4gICAgLyoqXG4gICAgICogVHJhbnNmb3JtYXRpb24gdG8gYmUgcGVyZm9ybWVkIG9uIHRoZSBjaG9zZW4vZm9sZGVyIG5vZGUgYmVmb3JlIGJ1aWxkaW5nIHRoZVxuICAgICAqIGJyZWFkY3J1bWIgVUkuIENhbiBiZSB1c2VmdWwgd2hlbiBjdXN0b20gZm9ybWF0dGluZyBpcyBuZWVkZWQgZm9yIHRoZSBicmVhZGNydW1iLlxuICAgICAqIFlvdSBjYW4gY2hhbmdlIHRoZSBwYXRoIGVsZW1lbnRzIGZyb20gdGhlIG5vZGUgdGhhdCBhcmUgdXNlZCB0byBidWlsZCB0aGVcbiAgICAgKiBicmVhZGNydW1iIHVzaW5nIHRoaXMgZnVuY3Rpb24uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBicmVhZGNydW1iVHJhbnNmb3JtOiAobm9kZSkgPT4gYW55O1xuXG4gICAgLyoqIFRvZ2dsZSBzZWFyY2ggaW5wdXQgcmVuZGVyaW5nICovXG4gICAgQElucHV0KClcbiAgICBzZXQgc2hvd1NlYXJjaCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5zaG93U2VhcmNoRmllbGQgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBzaG93U2VhcmNoKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zaG93U2VhcmNoRmllbGQ7XG4gICAgfVxuXG4gICAgLyoqIFRvZ2dsZSBzaXRlcyBsaXN0IGRyb3Bkb3duIHJlbmRlcmluZyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNob3dEcm9wZG93blNpdGVMaXN0KHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dTaXRlTGlzdCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHNob3dEcm9wZG93blNpdGVMaXN0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zaG93U2l0ZUxpc3Q7XG4gICAgfVxuXG4gICAgLyoqIFNob3dzIHRoZSBmaWxlcyBhbmQgZm9sZGVycyBpbiB0aGUgc2VhcmNoIHJlc3VsdCAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNob3dGaWxlc0luUmVzdWx0KHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBzaG93RmlsZXNRdWVyeSA9IGBUWVBFOidjbTpmb2xkZXInJHt2YWx1ZSA/IGAgT1IgVFlQRTonY206Y29udGVudCdgIDogJyd9YDtcbiAgICAgICAgICAgIHRoaXMucXVlcnlCdWlsZGVyU2VydmljZS5hZGRGaWx0ZXJRdWVyeShzaG93RmlsZXNRdWVyeSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogU2hvd3MgdGhlIG5vZGUgY291bnRlciBpbiB0aGUgYnJlYWRjcnVtYiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNob3dOb2RlQ291bnRlcih2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNob3dDb3VudGVyID0gdmFsdWUgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0IHNob3dOb2RlQ291bnRlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvd0NvdW50ZXI7XG4gICAgfVxuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgdXNlciBoYXMgY2hvc2VuIGFuIGl0ZW0uICovXG4gICAgQE91dHB1dCgpXG4gICAgc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxOb2RlW10+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBuYXZpZ2F0aW9uIGNoYW5nZXMuICovXG4gICAgQE91dHB1dCgpXG4gICAgbmF2aWdhdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Tm9kZUVudHJ5RXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBzZWxlY3Qgc2l0ZSBjaGFuZ2VzLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNpdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gc2VhcmNoIGlzIHJ1bm5pbmcuICovXG4gICAgQE91dHB1dCgpXG4gICAgc2hvd2luZ1NlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gY3VycmVudCBmb2xkZXIgbG9hZGVkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGN1cnJlbnRGb2xkZXIgPSBuZXcgRXZlbnRFbWl0dGVyPE5vZGU+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGZvbGRlciBsb2FkZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgZm9sZGVyTG9hZGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgQFZpZXdDaGlsZCgnZG9jdW1lbnRMaXN0JywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBkb2N1bWVudExpc3Q6IERvY3VtZW50TGlzdENvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoSGlnaGxpZ2h0RGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIGhpZ2hsaWdodGVyOiBIaWdobGlnaHREaXJlY3RpdmU7XG5cbiAgICBub2RlUGFnaW5nOiBOb2RlUGFnaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgc2l0ZUlkOiBudWxsIHwgc3RyaW5nO1xuICAgIGJyZWFkY3J1bWJSb290SWQ6IG51bGwgfCBzdHJpbmc7XG4gICAgc2VhcmNoVGVybTogc3RyaW5nID0gJyc7XG4gICAgc2hvd2luZ1NlYXJjaFJlc3VsdHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBsb2FkaW5nU2VhcmNoUmVzdWx0czogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGluRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG4gICAgX2Nob3Nlbk5vZGU6IE5vZGVbXSA9IG51bGw7XG4gICAgc2VsZWN0aW9uV2l0aG91dFZhbGlkYXRpb246IE5vZGVbXSA9IG51bGw7XG4gICAgZm9sZGVySWRUb1Nob3c6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIGJyZWFkY3J1bWJGb2xkZXJUaXRsZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgc3RhcnRTaXRlR3VpZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgaGFzVmFsaWRRdWVyeTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHNob3dIZWFkZXIgPSBTaG93SGVhZGVyTW9kZS5OZXZlcjtcblxuICAgIEBWaWV3Q2hpbGQoSW5maW5pdGVQYWdpbmF0aW9uQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIGluZmluaXRlUGFnaW5hdGlvbkNvbXBvbmVudDogSW5maW5pdGVQYWdpbmF0aW9uQ29tcG9uZW50O1xuXG4gICAgaW5maW5pdGVTY3JvbGw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBkZWJvdW5jZVNlYXJjaDogbnVtYmVyID0gMjAwO1xuICAgIHNlYXJjaElucHV0OiBVbnR5cGVkRm9ybUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XG5cbiAgICB0YXJnZXQ6IFBhZ2luYXRlZENvbXBvbmVudDtcbiAgICBwcmVzZWxlY3RlZE5vZGVzOiBOb2RlRW50cnlbXSA9IFtdO1xuICAgIGN1cnJlbnRVcGxvYWRCYXRjaDogTm9kZUVudHJ5W10gPSBbXTtcblxuICAgIHNvcnRpbmc6IHN0cmluZ1tdIHwgRGF0YVNvcnRpbmcgPSBbJ2NyZWF0ZWRBdCcsICdkZXNjJ107XG5cbiAgICBzZWFyY2hQYW5lbEV4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjdXN0b21SZXNvdXJjZXNTZXJ2aWNlOiBDdXN0b21SZXNvdXJjZXNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHF1ZXJ5QnVpbGRlclNlcnZpY2U6IFNlYXJjaFF1ZXJ5QnVpbGRlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdXNlclByZWZlcmVuY2VzU2VydmljZTogVXNlclByZWZlcmVuY2VzU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBub2Rlc0FwaVNlcnZpY2U6IE5vZGVzQXBpU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB1cGxvYWRTZXJ2aWNlOiBVcGxvYWRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHNpdGVzU2VydmljZTogU2l0ZXNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbnRlbnROb2RlU2VsZWN0b3JQYW5lbFNlcnZpY2U6IENvbnRlbnROb2RlU2VsZWN0b3JQYW5lbFNlcnZpY2VcbiAgICApIHt9XG5cbiAgICBzZXQgY2hvc2VuTm9kZSh2YWx1ZTogTm9kZVtdKSB7XG4gICAgICAgIHRoaXMuX2Nob3Nlbk5vZGUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZWxlY3QubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IGNob3Nlbk5vZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jaG9zZW5Ob2RlO1xuICAgIH1cblxuICAgIGdldCBlbXB0eUxpc3QoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbXB0eUxpc3Q7XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0ZWRDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jaG9zZW5Ob2RlPy5sZW5ndGggfHwgMDtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dC52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlU2VhcmNoKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChzZWFyY2hWYWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hUZXJtID0gc2VhcmNoVmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXJTZXJ2aWNlLnVzZXJRdWVyeSA9IHNlYXJjaFZhbHVlLmxlbmd0aCA+IDAgPyBgJHtzZWFyY2hWYWx1ZX0qYCA6IHNlYXJjaFZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMucXVlcnlCdWlsZGVyU2VydmljZS51cGRhdGUoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMucXVlcnlCdWlsZGVyU2VydmljZS51cGRhdGVkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoc2VhcmNoUmVxdWVzdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHNlYXJjaFJlcXVlc3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhc1ZhbGlkUXVlcnkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMucHJlcGFyZURpYWxvZ0Zvck5ld1NlYXJjaChzZWFyY2hSZXF1ZXN0KTtcbiAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlclNlcnZpY2UuZXhlY3V0ZShmYWxzZSwgc2VhcmNoUmVxdWVzdCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFzVmFsaWRRdWVyeSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRGb2xkZXJUb1Nob3coKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyU2VhcmNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMucXVlcnlCdWlsZGVyU2VydmljZS5leGVjdXRlZC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKHJlc3VsdHM6IE5vZGVQYWdpbmcpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmhhc1ZhbGlkUXVlcnkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dTZWFyY2hSZXN1bHRzKHJlc3VsdHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnVzZXJQcmVmZXJlbmNlc1NlcnZpY2VcbiAgICAgICAgICAgIC5zZWxlY3QoVXNlclByZWZlcmVuY2VWYWx1ZXMuUGFnaW5hdGlvblNpemUpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHBhZ1NpemUpID0+ICh0aGlzLnBhZ2VTaXplID0gcGFnU2l6ZSkpO1xuXG4gICAgICAgIHRoaXMudGFyZ2V0ID0gdGhpcy5kb2N1bWVudExpc3Q7XG4gICAgICAgIHRoaXMuZm9sZGVySWRUb1Nob3cgPSB0aGlzLmN1cnJlbnRGb2xkZXJJZDtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEZvbGRlcklkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5yZXN0cmljdFJvb3RUb0N1cnJlbnRGb2xkZXJJZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYlJvb3RJZCA9IHRoaXMuY3VycmVudEZvbGRlcklkO1xuICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkID0gdGhpcy5jdXJyZW50Rm9sZGVySWQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3RhcnRTaXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJyZWFkY3J1bWJUcmFuc2Zvcm0gPSB0aGlzLmJyZWFkY3J1bWJUcmFuc2Zvcm0gPyB0aGlzLmJyZWFkY3J1bWJUcmFuc2Zvcm0gOiBudWxsO1xuICAgICAgICB0aGlzLmlzU2VsZWN0aW9uVmFsaWQgPSB0aGlzLmlzU2VsZWN0aW9uVmFsaWQgPyB0aGlzLmlzU2VsZWN0aW9uVmFsaWQgOiBkZWZhdWx0VmFsaWRhdGlvbjtcbiAgICAgICAgdGhpcy5vbkZpbGVVcGxvYWRFdmVudCgpO1xuICAgICAgICB0aGlzLm9uRmlsZVVwbG9hZERlbGV0ZWRFdmVudCgpO1xuICAgICAgICB0aGlzLnJlc2V0UGFnaW5hdGlvbigpO1xuICAgICAgICB0aGlzLnNldFNlYXJjaFNjb3BlVG9Ob2RlcygpO1xuXG4gICAgICAgIHRoaXMuZG9jdW1lbnRMaXN0LiRmb2xkZXJOb2RlLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoY3VycmVudE5vZGU6IE5vZGUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZvbGRlci5lbWl0KGN1cnJlbnROb2RlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdG9nZ2xlU2VhcmNoUGFuZWwoKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoUGFuZWxFeHBhbmRlZCA9ICF0aGlzLnNlYXJjaFBhbmVsRXhwYW5kZWQ7XG4gICAgfVxuXG4gICAgaGFzQ3VzdG9tTW9kZWxzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50Tm9kZVNlbGVjdG9yUGFuZWxTZXJ2aWNlPy5jdXN0b21Nb2RlbHM/Lmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkZpbGVVcGxvYWRFdmVudCgpIHtcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmZpbGVVcGxvYWRDb21wbGV0ZVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwMCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZmlsZVVwbG9hZEV2ZW50OiBGaWxlVXBsb2FkQ29tcGxldGVFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFVwbG9hZEJhdGNoLnB1c2goZmlsZVVwbG9hZEV2ZW50LmRhdGEpO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy51cGxvYWRTZXJ2aWNlLmlzVXBsb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVzZWxlY3RlZE5vZGVzID0gdGhpcy5nZXRQcmVzZWxlY3ROb2Rlc0Jhc2VkT25TZWxlY3Rpb25Nb2RlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFVwbG9hZEJhdGNoID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRMaXN0LnJlbG9hZFdpdGhvdXRSZXNldHRpbmdTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uRmlsZVVwbG9hZERlbGV0ZWRFdmVudCgpIHtcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmZpbGVVcGxvYWREZWxldGVkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoZGVsZXRlZEZpbGVFdmVudDogRmlsZVVwbG9hZERlbGV0ZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50TGlzdC51bnNlbGVjdFJvd0Zyb21Ob2RlSWQoZGVsZXRlZEZpbGVFdmVudC5maWxlLmRhdGEuZW50cnkuaWQpO1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudExpc3QucmVsb2FkV2l0aG91dFJlc2V0dGluZ1NlbGVjdGlvbigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFN0YXJ0U2l0ZSgpIHtcbiAgICAgICAgdGhpcy5ub2Rlc0FwaVNlcnZpY2UuZ2V0Tm9kZSh0aGlzLmN1cnJlbnRGb2xkZXJJZCkuc3Vic2NyaWJlKChzdGFydE5vZGVFbnRyeSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdGFydFNpdGVHdWlkID0gdGhpcy5zaXRlc1NlcnZpY2UuZ2V0U2l0ZU5hbWVGcm9tTm9kZVBhdGgoc3RhcnROb2RlRW50cnkpO1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RhcnRTaXRlR3VpZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2l0ZXNTZXJ2aWNlLmdldFNpdGUodGhpcy5zdGFydFNpdGVHdWlkKS5zdWJzY3JpYmUoKHN0YXJ0U2l0ZUVudHJ5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGFydFNpdGVFbnRyeSBpbnN0YW5jZW9mIFNpdGVFbnRyeSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlQ2hhbmdlLmVtaXQoc3RhcnRTaXRlRW50cnkuZW50cnkudGl0bGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlUm93RmlsdGVyKGZpbHRlcj86IFJvd0ZpbHRlcikge1xuICAgICAgICBpZiAoIWZpbHRlcikge1xuICAgICAgICAgICAgZmlsdGVyID0gKCkgPT4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9yb3dGaWx0ZXIgPSAodmFsdWU6IFNoYXJlRGF0YVJvdywgaW5kZXg6IG51bWJlciwgYXJyYXk6IFNoYXJlRGF0YVJvd1tdKSA9PlxuICAgICAgICAgICAgZmlsdGVyKHZhbHVlLCBpbmRleCwgYXJyYXkpICYmICF0aGlzLmlzRXhjbHVkZWRTaXRlQ29udGVudCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0V4Y2x1ZGVkU2l0ZUNvbnRlbnQocm93OiBTaGFyZURhdGFSb3cpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZW50cnkgPSByb3cubm9kZS5lbnRyeTtcbiAgICAgICAgaWYgKHRoaXMuX2V4Y2x1ZGVTaXRlQ29udGVudD8ubGVuZ3RoICYmIGVudHJ5Py5wcm9wZXJ0aWVzPy5bJ3N0OmNvbXBvbmVudElkJ10pIHtcbiAgICAgICAgICAgIGNvbnN0IGV4Y2x1ZGVkSXRlbSA9IHRoaXMuX2V4Y2x1ZGVTaXRlQ29udGVudC5maW5kKChpZDogc3RyaW5nKSA9PiBlbnRyeS5wcm9wZXJ0aWVzWydzdDpjb21wb25lbnRJZCddID09PSBpZCk7XG4gICAgICAgICAgICByZXR1cm4gISFleGNsdWRlZEl0ZW07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgdGhlIHNpdGUgYXR0cmlidXRlIGFuZCBzdGFydHMgYSBuZXcgc2VhcmNoXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2hvc2VuU2l0ZSBTaXRlRW50cnkgdG8gc2VhcmNoIHdpdGhpblxuICAgICAqL1xuICAgIHNpdGVDaGFuZ2VkKGNob3NlblNpdGU6IFNpdGVFbnRyeSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNpdGVJZCA9IGNob3NlblNpdGUuZW50cnkuZ3VpZDtcbiAgICAgICAgdGhpcy5zZXRUaXRsZUlmQ3VzdG9tU2l0ZShjaG9zZW5TaXRlKTtcbiAgICAgICAgdGhpcy5zaXRlQ2hhbmdlLmVtaXQoY2hvc2VuU2l0ZS5lbnRyeS50aXRsZSk7XG4gICAgICAgIHRoaXMucXVlcnlCdWlsZGVyU2VydmljZS51cGRhdGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgY3VycmVudCBicmVhZGNydW1iIGZvbGRlciBub2RlXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB0aGUgYWN0dWFsbHkgc2VsZWN0ZWR8ZW50ZXJlZCBmb2xkZXIgbm9kZSBvciBudWxsIGluIGNhc2Ugb2Ygc2VhcmNoaW5nIGZvciB0aGUgYnJlYWRjcnVtYlxuICAgICAqL1xuICAgIGdldCBicmVhZGNydW1iRm9sZGVyTm9kZSgpOiBOb2RlIHwgbnVsbCB7XG4gICAgICAgIGxldCBmb2xkZXJOb2RlOiBOb2RlO1xuXG4gICAgICAgIGlmICh0aGlzLnNob3dpbmdTZWFyY2hSZXN1bHRzICYmIHRoaXMuc2VsZWN0aW9uV2l0aG91dFZhbGlkYXRpb24/Lmxlbmd0aCkge1xuICAgICAgICAgICAgZm9sZGVyTm9kZSA9IHRoaXMuc2VsZWN0aW9uV2l0aG91dFZhbGlkYXRpb25bMF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb2xkZXJOb2RlID0gdGhpcy5kb2N1bWVudExpc3QuZm9sZGVyTm9kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmb2xkZXJOb2RlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByZXBhcmVzIHRoZSBkaWFsb2cgZm9yIGEgbmV3IHNlYXJjaFxuICAgICAqXG4gICAgICogQHBhcmFtIHNlYXJjaFJlcXVlc3QgcmVxdWVzdCBvcHRpb25zXG4gICAgICovXG4gICAgcHJlcGFyZURpYWxvZ0Zvck5ld1NlYXJjaChzZWFyY2hSZXF1ZXN0OiBTZWFyY2hSZXF1ZXN0KTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gc2VhcmNoUmVxdWVzdCA/IG51bGwgOiB0aGlzLmRvY3VtZW50TGlzdDtcbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0KSB7XG4gICAgICAgICAgICB0aGlzLmluZmluaXRlUGFnaW5hdGlvbkNvbXBvbmVudC5yZXNldCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9sZGVySWRUb1Nob3cgPSBudWxsO1xuICAgICAgICB0aGlzLnByZXNlbGVjdGVkTm9kZXMgPSBbXTtcbiAgICAgICAgdGhpcy5sb2FkaW5nU2VhcmNoUmVzdWx0cyA9IHRydWU7XG4gICAgICAgIHRoaXMuYWRkQ29ycmVzcG9uZGluZ05vZGVJZHNRdWVyeSgpO1xuICAgICAgICB0aGlzLnJlc2V0Q2hvc2VuTm9kZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsZWFyIHRoZSBzZWFyY2ggaW5wdXQgYW5kIHJlc2V0IHRvIGxhc3QgZm9sZGVyIG5vZGUgaW4gd2hpY2ggc2VhcmNoIHdhcyBwZXJmb3JtZWRcbiAgICAgKi9cbiAgICBjbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWFyY2hUZXJtID0gJyc7XG4gICAgICAgIHRoaXMucXVlcnlCdWlsZGVyU2VydmljZS51c2VyUXVlcnkgPSAnJztcbiAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXJTZXJ2aWNlLnVwZGF0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc2V0cyB0aGUgZm9sZGVyIHRvIGJlIHNob3duIHdpdGggdGhlIHNpdGUgc2VsZWN0aW9uIG9yIHRoZSBpbml0aWFsIGxhbmRpbmcgZm9sZGVyXG4gICAgICovXG4gICAgcmVzZXRGb2xkZXJUb1Nob3coKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9sZGVySWRUb1Nob3cgPSB0aGlzLnNpdGVJZCB8fCB0aGlzLmN1cnJlbnRGb2xkZXJJZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhciB0aGUgc2VhcmNoIGlucHV0IGFuZCBzZWFyY2ggcmVsYXRlZCBkYXRhXG4gICAgICovXG4gICAgY2xlYXJTZWFyY2goKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGVybSA9ICcnO1xuICAgICAgICB0aGlzLm5vZGVQYWdpbmcgPSBudWxsO1xuICAgICAgICB0aGlzLnJlc2V0UGFnaW5hdGlvbigpO1xuICAgICAgICB0aGlzLnJlc2V0Q2hvc2VuTm9kZSgpO1xuICAgICAgICB0aGlzLnNob3dpbmdTZWFyY2hSZXN1bHRzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd2luZ1NlYXJjaC5lbWl0KHRoaXMuc2hvd2luZ1NlYXJjaFJlc3VsdHMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkQ29ycmVzcG9uZGluZ05vZGVJZHNRdWVyeSgpIHtcbiAgICAgICAgbGV0IGV4dHJhUGFyZW50RmlsdGVyaW5nID0gJyc7XG5cbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tUmVzb3VyY2VzU2VydmljZS5oYXNDb3JyZXNwb25kaW5nTm9kZUlkcyh0aGlzLnNpdGVJZCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tUmVzb3VyY2VzU2VydmljZS5nZXRDb3JyZXNwb25kaW5nTm9kZUlkcyh0aGlzLnNpdGVJZCkuc3Vic2NyaWJlKChub2RlSWRzKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGVJZHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBub2RlSWRzXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChpZCkgPT4gaWQgIT09IHRoaXMuc2l0ZUlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goKGV4dHJhSWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYVBhcmVudEZpbHRlcmluZyArPSBgIE9SIEFOQ0VTVE9SOid3b3Jrc3BhY2U6Ly9TcGFjZXNTdG9yZS8ke2V4dHJhSWR9J2A7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50RmlsdGVyaW5nID0gdGhpcy5zaXRlSWQgPyBgQU5DRVNUT1I6J3dvcmtzcGFjZTovL1NwYWNlc1N0b3JlLyR7dGhpcy5zaXRlSWR9JyR7ZXh0cmFQYXJlbnRGaWx0ZXJpbmd9YCA6ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMucXVlcnlCdWlsZGVyU2VydmljZS5hZGRGaWx0ZXJRdWVyeShwYXJlbnRGaWx0ZXJpbmcpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRGaWx0ZXJpbmcgPSB0aGlzLnNpdGVJZCA/IGBBTkNFU1RPUjond29ya3NwYWNlOi8vU3BhY2VzU3RvcmUvJHt0aGlzLnNpdGVJZH0nYCA6ICcnO1xuICAgICAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXJTZXJ2aWNlLmFkZEZpbHRlclF1ZXJ5KHBhcmVudEZpbHRlcmluZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFNlYXJjaFNjb3BlVG9Ob2RlcygpIHtcbiAgICAgICAgY29uc3Qgc2NvcGU6IFJlcXVlc3RTY29wZSA9IHtcbiAgICAgICAgICAgIGxvY2F0aW9uczogJ25vZGVzJ1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlclNlcnZpY2Uuc2V0U2NvcGUoc2NvcGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3cgdGhlIHJlc3VsdHMgb2YgdGhlIHNlYXJjaFxuICAgICAqXG4gICAgICogQHBhcmFtIHJlc3VsdHMgU2VhcmNoIHJlc3VsdHNcbiAgICAgKi9cbiAgICBwcml2YXRlIHNob3dTZWFyY2hSZXN1bHRzKHJlc3VsdHM6IE5vZGVQYWdpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93aW5nU2VhcmNoUmVzdWx0cyA9IHRydWU7XG4gICAgICAgIHRoaXMubG9hZGluZ1NlYXJjaFJlc3VsdHMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zaG93aW5nU2VhcmNoLmVtaXQodGhpcy5zaG93aW5nU2VhcmNoUmVzdWx0cyk7XG5cbiAgICAgICAgdGhpcy5ub2RlUGFnaW5nID0gcmVzdWx0cztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHNob3dpbmdTZWFyY2hSZXN1bHRzIHN0YXRlIHRvIGJlIGFibGUgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHNlYXJjaCByZXN1bHRzIG9yIGZvbGRlciByZXN1bHRzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gJGV2ZW50IG5vZGUgZXZlbnRcbiAgICAgKi9cbiAgICBvbkZvbGRlckNoYW5nZSgkZXZlbnQ6IE5vZGVFbnRyeUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9sZGVySWRUb1Nob3cgPSAkZXZlbnQudmFsdWUuaWQ7XG4gICAgICAgIHRoaXMuc2hvd2luZ1NlYXJjaFJlc3VsdHMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pbmZpbml0ZVNjcm9sbCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJyZWFkY3J1bWJGb2xkZXJUaXRsZSA9IG51bGw7XG4gICAgICAgIHRoaXMucHJlc2VsZWN0ZWROb2RlcyA9IFtdO1xuICAgICAgICB0aGlzLmNsZWFyU2VhcmNoKCk7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbkNoYW5nZS5lbWl0KCRldmVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXR0ZW1wdHMgdG8gc2V0IHRoZSBjdXJyZW50bHkgbG9hZGVkIG5vZGVcbiAgICAgKlxuICAgICAqIEBwYXJhbSBub2RlUGFnaW5nIHBhZ2luYXRpb24gbW9kZWxcbiAgICAgKi9cbiAgICBvbkZvbGRlckxvYWRlZChub2RlUGFnaW5nOiBOb2RlUGFnaW5nKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZW1wdHlMaXN0ID0gIXRoaXMuZG9jdW1lbnRMaXN0LmRhdGEuZ2V0Um93cygpLmxlbmd0aDtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudXBkYXRlUGFnaW5hdGlvbkFmdGVyUm93RmlsdGVyKG5vZGVQYWdpbmcpO1xuICAgICAgICBpZiAoIXRoaXMuc2hvd2luZ1NlYXJjaFJlc3VsdHMpIHtcbiAgICAgICAgICAgIHRoaXMuYXR0ZW1wdE5vZGVTZWxlY3Rpb24odGhpcy5kb2N1bWVudExpc3QuZm9sZGVyTm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mb2xkZXJMb2FkZWQuZW1pdCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgcGFnaW5hdGlvbi5oYXNNb3JlSXRlbXMgdG8gZmFsc2UgYWZ0ZXIgZmlsdGVyaW5nIG9ubHkgZm9sZGVycyBkdXJpbmcgJ0NPUFknIGFuZCAnTU9WRScgYWN0aW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbm9kZVBhZ2luZyBwYWdpbmF0aW9uIG1vZGVsXG4gICAgICovXG4gICAgdXBkYXRlUGFnaW5hdGlvbkFmdGVyUm93RmlsdGVyKG5vZGVQYWdpbmc6IE5vZGVQYWdpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRMaXN0LmRhdGEuZ2V0Um93cygpLmxlbmd0aCA8IG5vZGVQYWdpbmcubGlzdC5wYWdpbmF0aW9uLm1heEl0ZW1zKSB7XG4gICAgICAgICAgICBub2RlUGFnaW5nLmxpc3QucGFnaW5hdGlvbi5oYXNNb3JlSXRlbXMgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgd2hldGhlciBicmVhZGNydW1iIGhhcyB0byBiZSBzaG93biBvciBub3RcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiBuZWVkcyB0byBzaG93IHRoZSBicmVhZGNydW1iLCBvdGhlcndpc2UgYGZhbHNlYFxuICAgICAqL1xuICAgIHNob3dCcmVhZGNydW1icygpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnNob3dpbmdTZWFyY2hSZXN1bHRzIHx8IHRoaXMuY2hvc2VuTm9kZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMb2FkcyB0aGUgbmV4dCBiYXRjaCBvZiBzZWFyY2ggcmVzdWx0c1xuICAgICAqXG4gICAgICogQHBhcmFtIHBhZ2luYXRpb24gUGFnaW5hdGlvbiBvYmplY3RcbiAgICAgKi9cbiAgICBnZXROZXh0UGFnZU9mU2VhcmNoKHBhZ2luYXRpb246IFBhZ2luYXRpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbmZpbml0ZVNjcm9sbCA9IHRydWU7XG4gICAgICAgIHRoaXMucXVlcnlCdWlsZGVyU2VydmljZS5wYWdpbmcubWF4SXRlbXMgPSBwYWdpbmF0aW9uLm1heEl0ZW1zO1xuICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlclNlcnZpY2UucGFnaW5nLnNraXBDb3VudCA9IHBhZ2luYXRpb24uc2tpcENvdW50O1xuXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFRlcm0ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXJTZXJ2aWNlLnVwZGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0cyBub2RlIGFzIGNob3NlbiBpZiBpdCBoYXMgdGhlIHJpZ2h0IHBlcm1pc3Npb24sIGNsZWFycyB0aGUgc2VsZWN0aW9uIG90aGVyd2lzZVxuICAgICAqXG4gICAgICogQHBhcmFtIGVudHJ5IG5vZGUgZW50cnlcbiAgICAgKi9cbiAgICBwcml2YXRlIGF0dGVtcHROb2RlU2VsZWN0aW9uKGVudHJ5OiBOb2RlKTogdm9pZCB7XG4gICAgICAgIGlmIChlbnRyeSAmJiB0aGlzLmlzU2VsZWN0aW9uVmFsaWQoZW50cnkpICYmICF0aGlzLmlzQWN0aW9uRGlzYWJsZWRGb3JGb2xkZXIodGhpcy5kb2N1bWVudExpc3QuY3VycmVudEZvbGRlcklkKSkge1xuICAgICAgICAgICAgdGhpcy5jaG9zZW5Ob2RlID0gW2VudHJ5XTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaXNBY3Rpb25EaXNhYmxlZEZvckZvbGRlcihmb2xkZXJJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVBY3Rpb25Gb2xkZXJMaXN0LmluY2x1ZGVzKGZvbGRlcklkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhcnMgdGhlIGNob3NlbiBub2RlXG4gICAgICovXG4gICAgcmVzZXRDaG9zZW5Ob2RlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNob3Nlbk5vZGUgPSBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEl0IGZpbHRlcnMgYW5kIGVtaXQgdGhlIHNlbGVjdGlvbiBjb21pbmcgZnJvbSB0aGUgZG9jdW1lbnQgbGlzdFxuICAgICAqXG4gICAgICogQHBhcmFtIG5vZGVzRW50cmllcyBzZWxlY3RlZCBub2Rlc1xuICAgICAqL1xuICAgIG9uQ3VycmVudFNlbGVjdGlvbihub2Rlc0VudHJpZXM6IE5vZGVFbnRyeVtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbGlkTm9kZXNFbnRpdHkgPSBub2Rlc0VudHJpZXMuZmlsdGVyKChub2RlKSA9PiB0aGlzLmlzU2VsZWN0aW9uVmFsaWQobm9kZS5lbnRyeSkpO1xuICAgICAgICB0aGlzLmNob3Nlbk5vZGUgPSB2YWxpZE5vZGVzRW50aXR5Lm1hcCgobm9kZSkgPT4gbm9kZS5lbnRyeSk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uV2l0aG91dFZhbGlkYXRpb24gPSBub2Rlc0VudHJpZXMubWFwKChub2RlKSA9PiBub2RlLmVudHJ5KTtcbiAgICB9XG5cbiAgICBzZXRUaXRsZUlmQ3VzdG9tU2l0ZShzaXRlOiBTaXRlRW50cnkpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tUmVzb3VyY2VzU2VydmljZS5pc0N1c3RvbVNvdXJjZShzaXRlLmVudHJ5Lmd1aWQpKSB7XG4gICAgICAgICAgICB0aGlzLmJyZWFkY3J1bWJGb2xkZXJUaXRsZSA9IHNpdGUuZW50cnkudGl0bGU7XG4gICAgICAgICAgICBpZiAodGhpcy5kb2N1bWVudExpc3QuZm9sZGVyTm9kZS5wYXRoLmVsZW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5icmVhZGNydW1iRm9sZGVyTm9kZS5uYW1lID0gc2l0ZS5lbnRyeS50aXRsZTtcbiAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50TGlzdC5mb2xkZXJOb2RlLnBhdGguZWxlbWVudHMgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5icmVhZGNydW1iRm9sZGVyVGl0bGUgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFzUHJlc2VsZWN0Tm9kZXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZXNlbGVjdGVkTm9kZXM/Lmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgaXNTaW5nbGVTZWxlY3Rpb25Nb2RlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnc2luZ2xlJztcbiAgICB9XG5cbiAgICBnZXRQcmVzZWxlY3ROb2Rlc0Jhc2VkT25TZWxlY3Rpb25Nb2RlKCk6IE5vZGVFbnRyeVtdIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkTm9kZXM6IE5vZGVFbnRyeVtdID0gW107XG5cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFVwbG9hZEJhdGNoPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2luZ2xlU2VsZWN0aW9uTW9kZSgpKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWROb2RlcyA9IFt0aGlzLmN1cnJlbnRVcGxvYWRCYXRjaFt0aGlzLmN1cnJlbnRVcGxvYWRCYXRjaC5sZW5ndGggLSAxXV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkTm9kZXMgPSB0aGlzLmN1cnJlbnRVcGxvYWRCYXRjaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RlZE5vZGVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXRQYWdpbmF0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnF1ZXJ5QnVpbGRlclNlcnZpY2UucGFnaW5nID0ge1xuICAgICAgICAgICAgbWF4SXRlbXM6IHRoaXMucGFnZVNpemUsXG4gICAgICAgICAgICBza2lwQ291bnQ6IHRoaXMuREVGQVVMVF9QQUdJTkFUSU9OLnNraXBDb3VudFxuICAgICAgICB9O1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhZGYtY29udGVudC1ub2RlLXNlbGVjdG9yLWNvbnRlbnRcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQgZmxvYXRQbGFjZWhvbGRlcj1cIm5ldmVyXCJcbiAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cImZpbGxcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1jb250ZW50LW5vZGUtc2VsZWN0b3ItY29udGVudC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dTZWFyY2hcIj5cbiAgICAgICAgPG1hdC1sYWJlbD57eyAnTk9ERV9TRUxFQ1RPUi5TRUFSQ0gnIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dFxuICAgICAgICAgICAgaWQ9XCJzZWFyY2hJbnB1dFwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoSW5wdXRcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInNlYXJjaFRlcm1cIlxuICAgICAgICAgICAgYWRmLWF1dG8tZm9jdXNcbiAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImNvbnRlbnQtbm9kZS1zZWxlY3Rvci1zZWFyY2gtaW5wdXRcIj5cblxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJzZWFyY2hUZXJtLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgbWF0U3VmZml4IChjbGljayk9XCJjbGVhcigpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWRmLWNvbnRlbnQtbm9kZS1zZWxlY3Rvci1jb250ZW50LWlucHV0LWljb25cIlxuICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiY29udGVudC1ub2RlLXNlbGVjdG9yLXNlYXJjaC1jbGVhclwiPmNsZWFyXG4gICAgICAgIDwvbWF0LWljb24+XG5cbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwic2VhcmNoVGVybS5sZW5ndGggPT09IDBcIlxuICAgICAgICAgICAgbWF0U3VmZml4XG4gICAgICAgICAgICBjbGFzcz1cImFkZi1jb250ZW50LW5vZGUtc2VsZWN0b3ItY29udGVudC1pbnB1dC1pY29uXCJcbiAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImNvbnRlbnQtbm9kZS1zZWxlY3Rvci1zZWFyY2gtaWNvblwiPnNlYXJjaFxuICAgICAgICA8L21hdC1pY29uPlxuXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8YWRmLXNpdGVzLWRyb3Bkb3duXG4gICAgICAgICpuZ0lmPVwic2hvd0Ryb3Bkb3duU2l0ZUxpc3RcIlxuICAgICAgICBjbGFzcz1cImZ1bGwtd2lkdGhcIlxuICAgICAgICAoY2hhbmdlKT1cInNpdGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ05PREVfU0VMRUNUT1IuU0VMRUNUX0xJQlJBUlknXCJcbiAgICAgICAgW2hpZGVNeUZpbGVzXT1cImRyb3Bkb3duSGlkZU15RmlsZXNcIlxuICAgICAgICBbc2l0ZUxpc3RdPVwiZHJvcGRvd25TaXRlTGlzdFwiXG4gICAgICAgIFt2YWx1ZV09XCJzdGFydFNpdGVHdWlkXCJcbiAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiY29udGVudC1ub2RlLXNlbGVjdG9yLXNpdGVzLWNvbWJvXCIgLz5cbiAgICA8YnV0dG9uICpuZ0lmPVwiaGFzQ3VzdG9tTW9kZWxzKClcIlxuICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9nZ2xlLXNlYXJjaC1wYW5lbC1idXR0b25cIlxuICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlYXJjaFBhbmVsKClcIj5cbiAgICAgICAgPG1hdC1pY29uPmZpbHRlcl9saXN0PC9tYXQtaWNvbj5cbiAgICAgICAge3sgJ1NFQVJDSC5TRUFSQ0hfSEVBREVSLlRJVExFJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxkaXYgY2xhc3M9XCJhZGYtY29udGVudC1ub2RlLXNlbGVjdG9yLXNlYXJjaC1wYW5lbC1jb250YWluZXJcIj5cbiAgICAgICAgPGFkZi1zZWFyY2gtcGFuZWwgKm5nSWY9XCJzZWFyY2hQYW5lbEV4cGFuZGVkXCIgLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1jb250ZW50LW5vZGUtc2VsZWN0b3ItZG9jdW1lbnQtbGlzdC1jb250YWluZXJcIj5cbiAgICA8YWRmLXRvb2xiYXI+XG4gICAgICAgIDxhZGYtdG9vbGJhci10aXRsZT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2hvd0JyZWFkY3J1bWJzKClcIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJhZGYtc2VhcmNoLXJlc3VsdHMtbGFiZWxcIj57eyAnTk9ERV9TRUxFQ1RPUi5TRUFSQ0hfUkVTVUxUUycgfCB0cmFuc2xhdGUgfX08L2gyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8YWRmLWRyb3Bkb3duLWJyZWFkY3J1bWIgKm5nSWY9XCJzaG93QnJlYWRjcnVtYnMoKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtY29udGVudC1ub2RlLXNlbGVjdG9yLWNvbnRlbnQtYnJlYWRjcnVtYlwiXG4gICAgICAgICAgICAgICAgKG5hdmlnYXRlKT1cImNsZWFyU2VhcmNoKClcIlxuICAgICAgICAgICAgICAgIFt0YXJnZXRdPVwiZG9jdW1lbnRMaXN0XCJcbiAgICAgICAgICAgICAgICBbcm9vdElkXT1cImJyZWFkY3J1bWJSb290SWRcIlxuICAgICAgICAgICAgICAgIFt0cmFuc2Zvcm1dPVwiYnJlYWRjcnVtYlRyYW5zZm9ybVwiXG4gICAgICAgICAgICAgICAgW2ZvbGRlck5vZGVdPVwiYnJlYWRjcnVtYkZvbGRlck5vZGVcIlxuICAgICAgICAgICAgICAgIFtyb290XT1cImJyZWFkY3J1bWJGb2xkZXJUaXRsZVwiXG4gICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiY29udGVudC1ub2RlLXNlbGVjdG9yLWNvbnRlbnQtYnJlYWRjcnVtYlwiIC8+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd05vZGVDb3VudGVyXCIgW2FkZi1ub2RlLWNvdW50ZXJdPVwiZ2V0U2VsZWN0ZWRDb3VudCgpXCIgLz5cbiAgICAgICAgPC9hZGYtdG9vbGJhci10aXRsZT5cbiAgICA8L2FkZi10b29sYmFyPlxuXG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImFkZi1jb250ZW50LW5vZGUtc2VsZWN0b3ItY29udGVudC1saXN0XCJcbiAgICAgICAgW2NsYXNzLmFkZi1jb250ZW50LW5vZGUtc2VsZWN0b3ItY29udGVudC1saXN0LXNlYXJjaExheW91dF09XCJzaG93aW5nU2VhcmNoUmVzdWx0c1wiXG4gICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImNvbnRlbnQtbm9kZS1zZWxlY3Rvci1jb250ZW50LWxpc3RcIj5cbiAgICAgICAgPGFkZi1kb2N1bWVudC1saXN0XG4gICAgICAgICAgICAjZG9jdW1lbnRMaXN0XG4gICAgICAgICAgICBbYWRmLWhpZ2hsaWdodF09XCJzZWFyY2hUZXJtXCJcbiAgICAgICAgICAgIGFkZi1oaWdobGlnaHQtc2VsZWN0b3I9XCIuYWRmLW5hbWUtbG9jYXRpb24tY2VsbC1uYW1lXCJcbiAgICAgICAgICAgIFtzaG93SGVhZGVyXT1cInNob3dIZWFkZXJcIlxuICAgICAgICAgICAgW25vZGVdPVwibm9kZVBhZ2luZ1wiXG4gICAgICAgICAgICBbcHJlc2VsZWN0Tm9kZXNdPVwicHJlc2VsZWN0ZWROb2Rlc1wiXG4gICAgICAgICAgICBbbWF4SXRlbXNdPVwicGFnZVNpemVcIlxuICAgICAgICAgICAgW3Jvd0ZpbHRlcl09XCJfcm93RmlsdGVyXCJcbiAgICAgICAgICAgIFtpbWFnZVJlc29sdmVyXT1cImltYWdlUmVzb2x2ZXJcIlxuICAgICAgICAgICAgW2N1cnJlbnRGb2xkZXJJZF09XCJmb2xkZXJJZFRvU2hvd1wiXG4gICAgICAgICAgICBbc2VsZWN0aW9uTW9kZV09XCJzZWxlY3Rpb25Nb2RlXCJcbiAgICAgICAgICAgIFtjb250ZXh0TWVudUFjdGlvbnNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2NvbnRlbnRBY3Rpb25zXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFthbGxvd0Ryb3BGaWxlc109XCJmYWxzZVwiXG4gICAgICAgICAgICBbc29ydGluZ109XCJzb3J0aW5nXCJcbiAgICAgICAgICAgIHNvcnRpbmdNb2RlPVwic2VydmVyXCJcbiAgICAgICAgICAgIFt3aGVyZV09XCJ3aGVyZVwiXG4gICAgICAgICAgICAoZm9sZGVyQ2hhbmdlKT1cIm9uRm9sZGVyQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgKHJlYWR5KT1cIm9uRm9sZGVyTG9hZGVkKCRldmVudClcIlxuICAgICAgICAgICAgKG5vZGVTZWxlY3RlZCk9XCJvbkN1cnJlbnRTZWxlY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICBbY2xhc3MuYWRmLWNvbnRlbnQtbm9kZS1zZWxlY3Rvci1jb250ZW50LWxpc3QtZW1wdHldPVwiZW1wdHlMaXN0XCJcbiAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImNvbnRlbnQtbm9kZS1zZWxlY3Rvci1kb2N1bWVudC1saXN0XCI+XG5cbiAgICAgICAgICAgIDxhZGYtY3VzdG9tLWVtcHR5LWNvbnRlbnQtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPGRpdiBhcmlhLWxpdmU9XCJwb2xpdGVcIj57eyAnTk9ERV9TRUxFQ1RPUi5OT19SRVNVTFRTJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9hZGYtY3VzdG9tLWVtcHR5LWNvbnRlbnQtdGVtcGxhdGU+XG5cbiAgICAgICAgICAgIDxkYXRhLWNvbHVtbnM+XG4gICAgICAgICAgICAgICAgPGRhdGEtY29sdW1uIGtleT1cIiR0aHVtYm5haWxcIiB0eXBlPVwiaW1hZ2VcIiAvPlxuICAgICAgICAgICAgICAgIDxkYXRhLWNvbHVtbiBrZXk9XCJuYW1lXCIgdHlwZT1cInRleHRcIiB0aXRsZT1cIkFERi1ET0NVTUVOVC1MSVNULkxBWU9VVC5OQU1FXCIgY2xhc3M9XCJhZGYtZnVsbC13aWR0aCBhZGYtZWxsaXBzaXMtY2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWNvbnRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YWRmLW5hbWUtbG9jYXRpb24tY2VsbCBbcm93XT1cImNvbnRleHQucm93XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2RhdGEtY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkYXRhLWNvbHVtbiBrZXk9XCJtb2RpZmllZEF0XCIgdHlwZT1cImRhdGVcIiB0aXRsZT1cIkFERi1ET0NVTUVOVC1MSVNULkxBWU9VVC5NT0RJRklFRF9PTlwiIGZvcm1hdD1cInRpbWVBZ29cIiBjbGFzcz1cImFkZi1jb250ZW50LXNlbGVjdG9yLW1vZGlmaWVkLWNlbGxcIiAvPlxuICAgICAgICAgICAgICAgIDxkYXRhLWNvbHVtbiBrZXk9XCJjcmVhdGVkQnlVc2VyLmRpc3BsYXlOYW1lXCIgdHlwZT1cInRleHRcIiB0aXRsZT1cIkFERi1ET0NVTUVOVC1MSVNULkxBWU9VVC5DUkVBVEVEX0JZXCIgY2xhc3M9XCJhZGYtY29udGVudC1zZWxlY3Rvci1tb2RpZmllci1jZWxsXCIgLz5cbiAgICAgICAgICAgICAgICA8ZGF0YS1jb2x1bW4ga2V5PVwidmlzaWJpbGl0eVwiIHR5cGU9XCJ0ZXh0XCIgdGl0bGU9XCJBREYtRE9DVU1FTlQtTElTVC5MQVlPVVQuU1RBVFVTXCIgY2xhc3M9XCJhZGYtY29udGVudC1zZWxlY3Rvci12aXNpYmlsaXR5LWNlbGxcIiAvPlxuICAgICAgICAgICAgPC9kYXRhLWNvbHVtbnM+XG5cbiAgICAgICAgPC9hZGYtZG9jdW1lbnQtbGlzdD5cblxuICAgICAgICA8YWRmLWluZmluaXRlLXBhZ2luYXRpb25cbiAgICAgICAgICAgIFt0YXJnZXRdPVwidGFyZ2V0XCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdTZWFyY2hSZXN1bHRzXCJcbiAgICAgICAgICAgIChsb2FkTW9yZSk9XCJnZXROZXh0UGFnZU9mU2VhcmNoKCRldmVudClcIlxuICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiY29udGVudC1ub2RlLXNlbGVjdG9yLXNlYXJjaC1wYWdpbmF0aW9uXCI+XG4gICAgICAgICAgICB7eyAnQURGLURPQ1VNRU5ULUxJU1QuTEFZT1VULkxPQURfTU9SRScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9hZGYtaW5maW5pdGUtcGFnaW5hdGlvbj5cbiAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|