vcomply-workflow-engine 3.5.3 → 3.5.4
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/esm2022/lib/add-multiple-responsibility/add-multiple-responsibility.component.mjs +897 -0
- package/esm2022/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.mjs +204 -0
- package/esm2022/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.mjs +1569 -0
- package/esm2022/lib/add-multiple-risk/add-multiple-risk.component.mjs +774 -0
- package/esm2022/lib/configurations.mjs +6 -0
- package/esm2022/lib/confirmation-alert/confirmation-alert.component.mjs +28 -0
- package/esm2022/lib/constants/link-responsibility.constants.mjs +9 -0
- package/esm2022/lib/constants/time.constants.mjs +3 -0
- package/esm2022/lib/create-documents/create-documents.component.mjs +145 -0
- package/esm2022/lib/formgroup/cs-checkbox/cs-checkbox.component.mjs +36 -0
- package/esm2022/lib/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.mjs +35 -0
- package/esm2022/lib/formgroup/cs-radio/cs-radio.component.mjs +34 -0
- package/esm2022/lib/formgroup/cs-radio-group/cs-radio-group.component.mjs +14 -0
- package/esm2022/lib/formgroup/cs-select/cs-select.component.mjs +95 -0
- package/esm2022/lib/formgroup/cs-switch/cs-switch.component.mjs +31 -0
- package/esm2022/lib/formgroup/formgroup.module.mjs +56 -0
- package/esm2022/lib/formgroup/pipes/pascal.pipe.mjs +19 -0
- package/esm2022/lib/formgroup/select/cs-option/cs-option.component.mjs +42 -0
- package/esm2022/lib/formgroup/select/cs-select/cs-select.component.mjs +106 -0
- package/esm2022/lib/formgroup/select/select.module.mjs +21 -0
- package/esm2022/lib/formgroup/select/select.service.mjs +48 -0
- package/esm2022/lib/interfaces/categoryList.mjs +2 -0
- package/esm2022/lib/interfaces/confirmation-alert.mjs +2 -0
- package/esm2022/lib/interfaces/issue-data.mjs +2 -0
- package/esm2022/lib/log-an-issue/log-an-issue.component.mjs +1212 -0
- package/esm2022/lib/more-option/more-option.component.mjs +790 -0
- package/esm2022/lib/pipes/data-type.pipe.mjs +16 -0
- package/esm2022/lib/pipes/dom-sanitizer.pipe.mjs +24 -0
- package/esm2022/lib/pipes/filter.pipe.mjs +24 -0
- package/esm2022/lib/pipes/is-read-more.pipe.mjs +21 -0
- package/esm2022/lib/pipes/list-mapper.pipe.mjs +21 -0
- package/esm2022/lib/pipes/pipes.module.mjs +67 -0
- package/esm2022/lib/pipes/search.pipe.mjs +37 -0
- package/esm2022/lib/pipes/space-breaker.pipe.mjs +21 -0
- package/esm2022/lib/pipes/uncategorized-filter.pipe.mjs +21 -0
- package/esm2022/lib/pipes/user-filter.pipe.mjs +30 -0
- package/esm2022/lib/services/bulk-upload.service.mjs +44 -0
- package/esm2022/lib/services/common.service.mjs +41 -0
- package/esm2022/lib/sharedComponents/approval-workflow/approval-create-form/approval-create-form.component.mjs +265 -0
- package/esm2022/lib/sharedComponents/approval-workflow/approval-workflow-list/approval-workflow-list.component.mjs +73 -0
- package/esm2022/lib/sharedComponents/approval-workflow/approval-workflow.component.mjs +83 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/add-logic/add-logic.component.mjs +347 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/add-page-details/add-page-details.component.mjs +75 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/add-response-set-popup/add-response-set-popup.component.mjs +33 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/add-segment-popup/add-segment-popup.component.mjs +124 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/assessment-settings/assessment-settings.component.mjs +154 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/build.module.mjs +111 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/checkbox/checkbox.component.mjs +37 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/choice-settings-panel/choice-settings-panel.component.mjs +74 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/date-time/date-time.component.mjs +18 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/dropdown/dropdown.component.mjs +37 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/image-choice/image-choice.component.mjs +15 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/matrix-dropdown/matrix-dropdown.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/matrix-rating-scale/matrix-rating-scale.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/multiple-choice/multiple-choice.component.mjs +37 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/multiple-textbox/multiple-textbox.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/ranking/ranking.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/slider/slider.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/star-rating/star-rating.component.mjs +28 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/thank-you/thank-you.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/weightage-selector/weightage-selector.component.mjs +56 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/build/welcome/welcome.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/editor-wrapper/editor-wrapper.component.mjs +179 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/errorInterface/error.mjs +2 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/errorInterface/question.mjs +2 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/errorInterface/validateStructure.mjs +2 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic/logic.component.mjs +104 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-checkbox/logic-checkbox.component.mjs +26 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-comment-box/logic-comment-box.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-date-time/logic-date-time.component.mjs +56 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-dropdown/logic-dropdown.component.mjs +33 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-image-choice/logic-image-choice.component.mjs +17 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-choice/logic-multiple-choice.component.mjs +26 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-textbox/logic-multiple-textbox.component.mjs +16 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-questions.module.mjs +101 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-ranking/logic-ranking.component.mjs +16 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-single-textbox/logic-single-textbox.component.mjs +24 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-slider/logic-slider.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-star-rating/logic-star-rating.component.mjs +16 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/move/move.component.mjs +103 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/page-header/page-header.component.mjs +23 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/current-page-question.pipe.mjs +22 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/error-message.pipe.mjs +27 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/formatter.pipe.mjs +21 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/question-filter.pipe.mjs +17 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/question-page-filter.pipe.mjs +16 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/question-parser.pipe.mjs +21 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/pipes/type-of.pipe.mjs +16 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-checkbox/preview-checkbox.component.mjs +28 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-comment-box/preview-comment-box.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-date-time/preview-date-time.component.mjs +49 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-dropdown/preview-dropdown.component.mjs +30 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-file-upload/preview-file-upload.component.mjs +21 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-image-choice/preview-image-choice.component.mjs +17 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-dropdown/preview-matrix-dropdown.component.mjs +31 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-rating-scale/preview-matrix-rating-scale.component.mjs +28 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-choice/preview-multiple-choice.component.mjs +28 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-textbox/preview-multiple-textbox.component.mjs +16 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-ranking/preview-ranking.component.mjs +16 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-single-textbox/preview-single-textbox.component.mjs +16 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-slider/preview-slider.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-star-rating/preview-star-rating.component.mjs +16 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview-wrapper/preview-wrapper.component.mjs +78 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/preview.module.mjs +152 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/thank-you/thank-you.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/preview/welcome/welcome.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/question-type/question-type.component.mjs +19 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/quick-settings/quick-settings.component.mjs +252 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/response-selector/response-selector.component.mjs +35 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/setting-anonymous/setting-anonymous.component.mjs +61 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/setting-response-segment/setting-response-segment.component.mjs +163 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/single-line-editor/single-line-editor.component.mjs +118 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/toolkit/toolkit.component.mjs +23 -0
- package/esm2022/lib/sharedComponents/assessment-editor/components/welcome-thankyou/welcome-thankyou.component.mjs +97 -0
- package/esm2022/lib/sharedComponents/assessment-editor/create-assessment-container/create-assessment-container.component.mjs +493 -0
- package/esm2022/lib/sharedComponents/assessment-editor/create-assessment.module.mjs +154 -0
- package/esm2022/lib/sharedComponents/assessment-editor/services/editor.service.mjs +635 -0
- package/esm2022/lib/sharedComponents/assessment-editor/services/result-criteria.service.mjs +48 -0
- package/esm2022/lib/sharedComponents/assessment-editor/services/validator.service.mjs +546 -0
- package/esm2022/lib/sharedComponents/assessment-list/assessment-list-loader/assessment-list-loader.component.mjs +15 -0
- package/esm2022/lib/sharedComponents/assessment-list/assessment-list-sub-loader/assessment-list-sub-loader.component.mjs +15 -0
- package/esm2022/lib/sharedComponents/assessment-list/assessment-list.component.mjs +207 -0
- package/esm2022/lib/sharedComponents/assessment-list/service/assessment.interface.mjs +2 -0
- package/esm2022/lib/sharedComponents/assessment-list/service/assessment.service.mjs +31 -0
- package/esm2022/lib/sharedComponents/assessment-preview/assessment-preview.module.mjs +113 -0
- package/esm2022/lib/sharedComponents/assessment-preview/checkbox-question/checkbox-question.component.mjs +33 -0
- package/esm2022/lib/sharedComponents/assessment-preview/date-time/date-time.component.mjs +53 -0
- package/esm2022/lib/sharedComponents/assessment-preview/description-preview/description-preview.component.mjs +24 -0
- package/esm2022/lib/sharedComponents/assessment-preview/device/device.component.mjs +21 -0
- package/esm2022/lib/sharedComponents/assessment-preview/file-upload/file-upload.component.mjs +22 -0
- package/esm2022/lib/sharedComponents/assessment-preview/page-header/page-header.component.mjs +21 -0
- package/esm2022/lib/sharedComponents/assessment-preview/pipes/get-section-order.pipe.mjs +24 -0
- package/esm2022/lib/sharedComponents/assessment-preview/preview/preview.component.mjs +62 -0
- package/esm2022/lib/sharedComponents/assessment-preview/preview-container/preview-container.component.mjs +22 -0
- package/esm2022/lib/sharedComponents/assessment-preview/quick-settings/quick-settings.component.mjs +22 -0
- package/esm2022/lib/sharedComponents/assessment-preview/radio-question/radio-question.component.mjs +33 -0
- package/esm2022/lib/sharedComponents/assessment-preview/section-details/section-details.component.mjs +20 -0
- package/esm2022/lib/sharedComponents/assessment-preview/select-question/select-question.component.mjs +35 -0
- package/esm2022/lib/sharedComponents/assessment-preview/single-textbox/single-textbox.component.mjs +21 -0
- package/esm2022/lib/sharedComponents/assessment-preview/welcome/welcome.component.mjs +17 -0
- package/esm2022/lib/sharedComponents/audit-category-list/audit-category-list.component.mjs +61 -0
- package/esm2022/lib/sharedComponents/audit-category-list/audit-category.model.mjs +2 -0
- package/esm2022/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.mjs +72 -0
- package/esm2022/lib/sharedComponents/bulk-view/bulk-view.component.mjs +75 -0
- package/esm2022/lib/sharedComponents/category-list/category-list.component.mjs +84 -0
- package/esm2022/lib/sharedComponents/category-multiselect/category-multi-select.component.mjs +166 -0
- package/esm2022/lib/sharedComponents/checkbox-list/checkbox-list.component.mjs +92 -0
- package/esm2022/lib/sharedComponents/checkpoint/checkpoints/checkpoints.component.mjs +315 -0
- package/esm2022/lib/sharedComponents/checkpoint/checkpoints-list/checkpoints-list.component.mjs +25 -0
- package/esm2022/lib/sharedComponents/checkpoint/checkpoints-questions/checkpoints-questions.component.mjs +149 -0
- package/esm2022/lib/sharedComponents/checkpoint-floating-bar/checkpoint-floating-bar.component.mjs +48 -0
- package/esm2022/lib/sharedComponents/checkpoint-policy/checkpoints-policy-container/checkpoints-policy-container.component.mjs +77 -0
- package/esm2022/lib/sharedComponents/checkpoint-policy/checkpoints-policy-list/checkpoints-policy-list.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/checkpoint-policy/checkpoints-policy-questions/checkpoints-policy-questions.component.mjs +197 -0
- package/esm2022/lib/sharedComponents/directive/autofocus.directive.mjs +22 -0
- package/esm2022/lib/sharedComponents/directive/conditional-focus.directive.mjs +35 -0
- package/esm2022/lib/sharedComponents/directive/drag-drop.directive.mjs +52 -0
- package/esm2022/lib/sharedComponents/directive/input-trim.directive.mjs +21 -0
- package/esm2022/lib/sharedComponents/directive/scroll-in-view.directive.mjs +35 -0
- package/esm2022/lib/sharedComponents/document-section/document-section.component.mjs +184 -0
- package/esm2022/lib/sharedComponents/floating-bar/floating-bar.component.mjs +122 -0
- package/esm2022/lib/sharedComponents/floating-bar/floating-bar.module.mjs +20 -0
- package/esm2022/lib/sharedComponents/format-and-evidence/format-and-evidence.component.mjs +308 -0
- package/esm2022/lib/sharedComponents/framework-list/framework-integration-interfaces.mjs +2 -0
- package/esm2022/lib/sharedComponents/framework-list/framework-list-table/framework-list-table.component.mjs +38 -0
- package/esm2022/lib/sharedComponents/framework-list/framework-list.component.mjs +429 -0
- package/esm2022/lib/sharedComponents/framework-list/framework-responsibility-table/framework-responsibility-table.component.mjs +43 -0
- package/esm2022/lib/sharedComponents/framework-list/framework-table-loader/framework-table-loader.component.mjs +15 -0
- package/esm2022/lib/sharedComponents/framework-list/parent-table/parent-table.component.mjs +95 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.mjs +297 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.mjs +218 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-checkbox-list/frequency-checkbox-list.component.mjs +36 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-container/frequency-container.component.mjs +303 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.mjs +152 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-due-date/due-date.contant.mjs +21 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-due-date/frequency-due-date.component.mjs +83 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.mjs +199 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-lifecycle/lifecycl.constant.mjs +12 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.mjs +223 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-on-completion-of/frequency-on-completion-of.component.mjs +170 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.mjs +189 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.mjs +75 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.mjs +214 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-radio-list/frequency-radio-list.component.mjs +36 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-random/frequency-random.component.mjs +253 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.mjs +213 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-top/frequency-top.component.mjs +133 -0
- package/esm2022/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.mjs +200 -0
- package/esm2022/lib/sharedComponents/frequency/frequency.service.mjs +573 -0
- package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-annual/frequency-dialog-annual.component.mjs +300 -0
- package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-biannual/frequency-dialog-biannual.component.mjs +216 -0
- package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-checkbox-list/frequency-dialog-checkbox-list.component.mjs +29 -0
- package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-container/frequency-dialog-container.component.mjs +296 -0
- package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-due-date/frequency-dialog-due-date.component.mjs +110 -0
- package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-monthly/frequency-dialog-monthly.component.mjs +227 -0
- package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-one-time/frequency-dialog-one-time.component.mjs +213 -0
- package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-quarterly/frequency-dialog-quarterly.component.mjs +212 -0
- package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-radio-list/frequency-dialog-radio-list.component.mjs +33 -0
- package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-top/frequency-dialog-top.component.mjs +128 -0
- package/esm2022/lib/sharedComponents/frequency-dialog/frequency-dialog-weekly/frequency-dialog-weekly.component.mjs +197 -0
- package/esm2022/lib/sharedComponents/group-users-list/group-users-list.component.mjs +259 -0
- package/esm2022/lib/sharedComponents/link-program/link-program/link-program.component.mjs +472 -0
- package/esm2022/lib/sharedComponents/link-program/link-program/program-list-model.mjs +2 -0
- package/esm2022/lib/sharedComponents/link-program/program-integration-interfaces.mjs +2 -0
- package/esm2022/lib/sharedComponents/link-program/restapi.service.mjs +149 -0
- package/esm2022/lib/sharedComponents/link-program/tooltip-validation.pipe.mjs +28 -0
- package/esm2022/lib/sharedComponents/link-responsibility/link-responsibility.component.mjs +221 -0
- package/esm2022/lib/sharedComponents/list-loader/list-loader.component.mjs +15 -0
- package/esm2022/lib/sharedComponents/list-loader/list-loader.module.mjs +18 -0
- package/esm2022/lib/sharedComponents/no-data/no-data.component.mjs +36 -0
- package/esm2022/lib/sharedComponents/no-data/no-data.module.mjs +18 -0
- package/esm2022/lib/sharedComponents/owner-list/owner-list.component.mjs +176 -0
- package/esm2022/lib/sharedComponents/pipes/array-filter.pipe.mjs +18 -0
- package/esm2022/lib/sharedComponents/pipes/filterPipe.mjs +30 -0
- package/esm2022/lib/sharedComponents/pipes/rcTreeToolTip.pipe.mjs +26 -0
- package/esm2022/lib/sharedComponents/pipes/short-merge.pipe.mjs +24 -0
- package/esm2022/lib/sharedComponents/pipes/spaceTrim.pipe.mjs +18 -0
- package/esm2022/lib/sharedComponents/pipes/within-data.pipe.mjs +21 -0
- package/esm2022/lib/sharedComponents/policy-access/policy-access.component.mjs +88 -0
- package/esm2022/lib/sharedComponents/program-listing/program-list-model.mjs +2 -0
- package/esm2022/lib/sharedComponents/program-listing/program-listing.component.mjs +739 -0
- package/esm2022/lib/sharedComponents/radio-list/radio-list.component.mjs +82 -0
- package/esm2022/lib/sharedComponents/radio-list-with-pagination/link-treatment-loader/link-treatment-loader.component.mjs +14 -0
- package/esm2022/lib/sharedComponents/radio-list-with-pagination/radio-list.component.mjs +128 -0
- package/esm2022/lib/sharedComponents/responsibility-centers-list/rc-list.module.mjs +40 -0
- package/esm2022/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.mjs +125 -0
- package/esm2022/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.mjs +81 -0
- package/esm2022/lib/sharedComponents/review-frequency/review-frequency.component.mjs +44 -0
- package/esm2022/lib/sharedComponents/risk-classification/risk-classification.component.mjs +102 -0
- package/esm2022/lib/sharedComponents/roles-list/roles-list.component.mjs +30 -0
- package/esm2022/lib/sharedComponents/select-approvers/select-approvers.component.mjs +78 -0
- package/esm2022/lib/sharedComponents/table-card-loader/table-card-loader.component.mjs +15 -0
- package/esm2022/lib/sharedComponents/users-radio-list/users-radio-list.component.mjs +83 -0
- package/esm2022/lib/sharedComponents/v-loader/loader/loader.component.mjs +21 -0
- package/esm2022/lib/sharedComponents/v-loader/loader-inline/loader-inline.component.mjs +21 -0
- package/esm2022/lib/sharedComponents/v-loader/v-loader.module.mjs +19 -0
- package/esm2022/lib/ui-kit/action-dialog/action-dialog.module.mjs +21 -0
- package/esm2022/lib/ui-kit/action-dialog/active/active.component.mjs +32 -0
- package/esm2022/lib/ui-kit/action-dialog/deactivate/deactivate.component.mjs +33 -0
- package/esm2022/lib/ui-kit/action-dialog/delete/delete.component.mjs +26 -0
- package/esm2022/lib/ui-kit/action-dialog/duplicate/duplicate.component.mjs +28 -0
- package/esm2022/lib/ui-kit/click-outside/click-outside.directive.mjs +29 -0
- package/esm2022/lib/ui-kit/click-outside/click-outside.module.mjs +22 -0
- package/esm2022/lib/ui-kit/dialog/dialog-config.mjs +3 -0
- package/esm2022/lib/ui-kit/dialog/dialog-injector.mjs +14 -0
- package/esm2022/lib/ui-kit/dialog/dialog-ref.mjs +11 -0
- package/esm2022/lib/ui-kit/dialog/dialog.component.mjs +88 -0
- package/esm2022/lib/ui-kit/dialog/dialog.module.mjs +20 -0
- package/esm2022/lib/ui-kit/dialog/dialog.service.mjs +58 -0
- package/esm2022/lib/ui-kit/dialog/insertion.directive.mjs +16 -0
- package/esm2022/lib/ui-kit/directive/directive.module.mjs +24 -0
- package/esm2022/lib/ui-kit/directive/stop-propagation.directive.mjs +20 -0
- package/esm2022/lib/ui-kit/editor-loader/editor-loader/editor-loader.component.mjs +15 -0
- package/esm2022/lib/ui-kit/editor-loader/editor-loader.module.mjs +22 -0
- package/esm2022/lib/ui-kit/format-html.pipe.mjs +20 -0
- package/esm2022/lib/ui-kit/formgroup/click-outside.directive.mjs +29 -0
- package/esm2022/lib/ui-kit/formgroup/cs-checkbox/cs-checkbox.component.mjs +31 -0
- package/esm2022/lib/ui-kit/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.mjs +35 -0
- package/esm2022/lib/ui-kit/formgroup/cs-radio/cs-radio.component.mjs +30 -0
- package/esm2022/lib/ui-kit/formgroup/cs-radio-group/cs-radio-group.component.mjs +14 -0
- package/esm2022/lib/ui-kit/formgroup/cs-select/cs-select.component.mjs +100 -0
- package/esm2022/lib/ui-kit/formgroup/cs-switch/cs-switch.component.mjs +32 -0
- package/esm2022/lib/ui-kit/formgroup/formgroup.module.mjs +60 -0
- package/esm2022/lib/ui-kit/formgroup/pipes/pascal.pipe.mjs +19 -0
- package/esm2022/lib/ui-kit/formgroup/pipes/searchMultiSelect.pipe.mjs +24 -0
- package/esm2022/lib/ui-kit/line-loader/line-loader.component.mjs +15 -0
- package/esm2022/lib/ui-kit/line-loader/line-loader.module.mjs +18 -0
- package/esm2022/lib/ui-kit/no-data/no-data.component.mjs +45 -0
- package/esm2022/lib/ui-kit/no-data/no-data.module.mjs +18 -0
- package/esm2022/lib/ui-kit/pagination/pagination/pagination.component.mjs +116 -0
- package/esm2022/lib/ui-kit/pagination/pagination.module.mjs +28 -0
- package/esm2022/lib/ui-kit/popover/popover-event.directive.mjs +28 -0
- package/esm2022/lib/ui-kit/popover/popover-longpress.directive.mjs +44 -0
- package/esm2022/lib/ui-kit/popover/popover.component.mjs +138 -0
- package/esm2022/lib/ui-kit/popover/popover.directive.mjs +97 -0
- package/esm2022/lib/ui-kit/popover/popover.module.mjs +23 -0
- package/esm2022/lib/ui-kit/popover/popover.service.mjs +15 -0
- package/esm2022/lib/ui-kit/popover-hover/popover-hover.component.mjs +109 -0
- package/esm2022/lib/ui-kit/popover-hover/popover-hover.directive.mjs +34 -0
- package/esm2022/lib/ui-kit/popover-hover/popover-hover.module.mjs +31 -0
- package/esm2022/lib/ui-kit/popover-hover/popover-hover.service.mjs +14 -0
- package/esm2022/lib/ui-kit/smiley-dialog/smiley-dialog.component.mjs +43 -0
- package/esm2022/lib/ui-kit/smiley-dialog/smiley-dialog.module.mjs +18 -0
- package/esm2022/lib/ui-kit/smiley-dialog-inline/smiley-dialog-inline.component.mjs +43 -0
- package/esm2022/lib/ui-kit/smiley-dialog-inline/smiley-dialog-inline.module.mjs +18 -0
- package/esm2022/lib/ui-kit/snack-bar/snack-bar.component.mjs +51 -0
- package/esm2022/lib/ui-kit/snack-bar/snack-bar.module.mjs +18 -0
- package/esm2022/lib/ui-kit/snack-bar/snack-bar.service.mjs +32 -0
- package/esm2022/lib/ui-kit/time-picker/constants/constant.mjs +5 -0
- package/esm2022/lib/ui-kit/time-picker/time-picker/time-picker.component.mjs +220 -0
- package/esm2022/lib/ui-kit/time-picker/time-picker.module.mjs +24 -0
- package/esm2022/lib/ui-kit/tooltip/tooltip.directive.mjs +156 -0
- package/esm2022/lib/ui-kit/tooltip/tooltip.module.mjs +18 -0
- package/esm2022/lib/workflow/grc-object/grc-object-container/grc-object-container.component.mjs +831 -0
- package/esm2022/lib/workflow/grc-object/grc-object.module.mjs +64 -0
- package/esm2022/lib/workflow/shared/components/attributes/attributes-checkbox/attributes-checkbox.component.mjs +95 -0
- package/esm2022/lib/workflow/shared/components/attributes/attributes-dropdown/attributes-dropdown.component.mjs +110 -0
- package/esm2022/lib/workflow/shared/components/attributes/attributes-text-box/attributes-text-box.component.mjs +118 -0
- package/esm2022/lib/workflow/shared/components/attributes/attributes.component.mjs +100 -0
- package/esm2022/lib/workflow/shared/components/attributes/date-picker/date-picker.component.mjs +116 -0
- package/esm2022/lib/workflow/shared/components/edit-mode/edit-mode.component.mjs +216 -0
- package/esm2022/lib/workflow/shared/components/grc-category-listing/grc-category-listing.component.mjs +119 -0
- package/esm2022/lib/workflow/shared/components/grc-object-list/grc-object-list.component.mjs +198 -0
- package/esm2022/lib/workflow/shared/components/grc-responsibility-listing/grc-responsibility-listing.component.mjs +202 -0
- package/esm2022/lib/workflow/shared/components/grc-risk-listing/grc-risk-listing.component.mjs +191 -0
- package/esm2022/lib/workflow/shared/components/grc-sub-category-listing/grc-sub-category-listing.component.mjs +86 -0
- package/esm2022/lib/workflow/shared/components/list-popup/list-popup.component.mjs +209 -0
- package/esm2022/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.mjs +411 -0
- package/esm2022/lib/workflow/shared/components/risk-category-risk-listing/risk-category-risk-listing.component.mjs +241 -0
- package/esm2022/lib/workflow/shared/components/table-card/table-card.component.mjs +32 -0
- package/esm2022/lib/workflow/shared/components/text-field/text-field.component.mjs +143 -0
- package/esm2022/lib/workflow/shared/components/text-field-icon/text-field-icon.component.mjs +56 -0
- package/esm2022/lib/workflow/shared/constants/cdn-link.constant.mjs +11 -0
- package/esm2022/lib/workflow/shared/constants/field-text.constant.mjs +17 -0
- package/esm2022/lib/workflow/shared/constants/grcObject.constant.mjs +88 -0
- package/esm2022/lib/workflow/shared/constants/link-responsibility.constant.mjs +19 -0
- package/esm2022/lib/workflow/shared/constants/message.contstant.mjs +5 -0
- package/esm2022/lib/workflow/shared/constants/pagination-limits.constant.mjs +6 -0
- package/esm2022/lib/workflow/shared/constants/svg-link.constant.mjs +4 -0
- package/esm2022/lib/workflow/shared/constants/validation-message.constant.mjs +8 -0
- package/esm2022/lib/workflow/shared/interfaces/add-grc.mjs +2 -0
- package/esm2022/lib/workflow/shared/services/grc.service.mjs +310 -0
- package/esm2022/lib/workflow/shared/workflow-pipes/get-selected-value.pipe.mjs +30 -0
- package/esm2022/lib/workflow/shared/workflow-pipes/is-attributes-valid.pipe.mjs +48 -0
- package/esm2022/lib/workflow/shared/workflow-pipes/unique-responsibilities.pipe.mjs +24 -0
- package/esm2022/lib/workflow/shared/workflow-pipes/workflow-pipes.module.mjs +32 -0
- package/esm2022/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.mjs +668 -0
- package/esm2022/lib/workflow-assessment/workflow-assessment.component.mjs +254 -0
- package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +3913 -0
- package/esm2022/lib/workflow-engine-container/workflow-engine-container.component.mjs +734 -0
- package/esm2022/lib/workflow-engine.module.mjs +467 -0
- package/esm2022/lib/workflow-engine.service.mjs +14 -0
- package/esm2022/lib/workflow-interfaces/create-policy-form.mjs +2 -0
- package/esm2022/lib/workflow-pagination/workflow-pagination.component.mjs +116 -0
- package/esm2022/lib/workflow-policy/workflow-policy.component.mjs +1875 -0
- package/esm2022/lib/workflow-program/constants.mjs +51 -0
- package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/assessment-loader/assessment-loader.component.mjs +15 -0
- package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.mjs +292 -0
- package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/assessment-sub-loader/assessment-sub-loader.component.mjs +15 -0
- package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/assessment.service.mjs +43 -0
- package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/selected-assessment.pipe.mjs +22 -0
- package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/workflow-pagination/workflow-pagination.component.mjs +116 -0
- package/esm2022/lib/workflow-program/create-program-ui/checkbox/checkbox.component.mjs +39 -0
- package/esm2022/lib/workflow-program/create-program-ui/create-program-ui.module.mjs +194 -0
- package/esm2022/lib/workflow-program/create-program-ui/cs-switch/cs-switch.component.mjs +44 -0
- package/esm2022/lib/workflow-program/create-program-ui/custom-field/custom-field.component.mjs +82 -0
- package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.mjs +267 -0
- package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/framework.service.mjs +44 -0
- package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/loader/loader.component.mjs +15 -0
- package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/pipes/category-all-select.pipe.mjs +23 -0
- package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/pipes/search.pipe.mjs +23 -0
- package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/pipes/sub-cat-indeter.pipe.mjs +26 -0
- package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/pipes/tooltip-message.pipe.mjs +68 -0
- package/esm2022/lib/workflow-program/create-program-ui/directives/input-trim.directive.mjs +21 -0
- package/esm2022/lib/workflow-program/create-program-ui/file-pill/file-pill.component.mjs +27 -0
- package/esm2022/lib/workflow-program/create-program-ui/floating-bar/floating-bar.component.mjs +106 -0
- package/esm2022/lib/workflow-program/create-program-ui/form-field/form-field.component.mjs +16 -0
- package/esm2022/lib/workflow-program/create-program-ui/input-with-pill/input-with-pill.component.mjs +30 -0
- package/esm2022/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.mjs +166 -0
- package/esm2022/lib/workflow-program/create-program-ui/pagination/pagination.module.mjs +28 -0
- package/esm2022/lib/workflow-program/create-program-ui/pipes/array-concat.pipe.mjs +16 -0
- package/esm2022/lib/workflow-program/create-program-ui/pipes/assessment-resolver.pipe.mjs +27 -0
- package/esm2022/lib/workflow-program/create-program-ui/pipes/filter.pipe.mjs +30 -0
- package/esm2022/lib/workflow-program/create-program-ui/pipes/list-to-id.pipe.mjs +16 -0
- package/esm2022/lib/workflow-program/create-program-ui/pipes/pager.pipe.mjs +21 -0
- package/esm2022/lib/workflow-program/create-program-ui/pipes/ref-disconnect.pipe.mjs +17 -0
- package/esm2022/lib/workflow-program/create-program-ui/pipes/search.pipe.mjs +23 -0
- package/esm2022/lib/workflow-program/create-program-ui/role-list/loader/loader.component.mjs +15 -0
- package/esm2022/lib/workflow-program/create-program-ui/role-list/role-list.component.mjs +240 -0
- package/esm2022/lib/workflow-program/create-program-ui/tab-selector/tab-selector.component.mjs +43 -0
- package/esm2022/lib/workflow-program/create-program-ui/tick-mark/tick-mark.component.mjs +15 -0
- package/esm2022/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.mjs +434 -0
- package/esm2022/lib/workflow-program/workflow-program.component.mjs +1550 -0
- package/esm2022/lib/workflow-risk/workflow-risk.component.mjs +1642 -0
- package/esm2022/lib/workflow-services/add-risk.service.mjs +150 -0
- package/esm2022/lib/workflow-services/assessment.service.mjs +117 -0
- package/esm2022/lib/workflow-services/auth.service.mjs +229 -0
- package/esm2022/lib/workflow-services/frequency.service.mjs +173 -0
- package/esm2022/lib/workflow-services/log-issue.service.mjs +360 -0
- package/esm2022/lib/workflow-services/policy.service.mjs +163 -0
- package/esm2022/lib/workflow-services/programs.service.mjs +319 -0
- package/esm2022/lib/workflow-services/responsibility.service.mjs +293 -0
- package/esm2022/lib/workflow-services/token-decoder.service.mjs +38 -0
- package/esm2022/lib/workflow-services/ui-kit.service.mjs +17 -0
- package/esm2022/lib/workflow-survey-form/workflow-survey-form.component.mjs +26 -0
- package/esm2022/public-api.mjs +8 -0
- package/esm2022/vcomply-workflow-engine.mjs +5 -0
- package/fesm2022/vcomply-workflow-engine.mjs +44351 -0
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -0
- package/lib/add-multiple-responsibility/add-multiple-responsibility.component.d.ts +1 -1
- package/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.d.ts +1 -1
- package/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.d.ts +1 -1
- package/lib/add-multiple-risk/add-multiple-risk.component.d.ts +1 -1
- package/lib/confirmation-alert/confirmation-alert.component.d.ts +1 -1
- package/lib/create-documents/create-documents.component.d.ts +1 -1
- package/lib/formgroup/cs-checkbox/cs-checkbox.component.d.ts +1 -1
- package/lib/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.d.ts +1 -1
- package/lib/formgroup/cs-radio/cs-radio.component.d.ts +1 -1
- package/lib/formgroup/cs-radio-group/cs-radio-group.component.d.ts +1 -1
- package/lib/formgroup/cs-select/cs-select.component.d.ts +1 -1
- package/lib/formgroup/cs-switch/cs-switch.component.d.ts +1 -1
- package/lib/formgroup/select/cs-option/cs-option.component.d.ts +1 -1
- package/lib/formgroup/select/cs-select/cs-select.component.d.ts +1 -1
- package/lib/log-an-issue/log-an-issue.component.d.ts +7 -3
- package/lib/more-option/more-option.component.d.ts +1 -1
- package/lib/services/common.service.d.ts +14 -0
- package/lib/sharedComponents/approval-workflow/approval-create-form/approval-create-form.component.d.ts +1 -1
- package/lib/sharedComponents/approval-workflow/approval-workflow-list/approval-workflow-list.component.d.ts +1 -1
- package/lib/sharedComponents/approval-workflow/approval-workflow.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/add-logic/add-logic.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/add-page-details/add-page-details.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/add-response-set-popup/add-response-set-popup.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/add-segment-popup/add-segment-popup.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/assessment-settings/assessment-settings.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/checkbox/checkbox.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/choice-settings-panel/choice-settings-panel.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/date-time/date-time.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/dropdown/dropdown.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/image-choice/image-choice.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/matrix-dropdown/matrix-dropdown.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/matrix-rating-scale/matrix-rating-scale.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/multiple-choice/multiple-choice.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/multiple-textbox/multiple-textbox.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/ranking/ranking.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/slider/slider.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/star-rating/star-rating.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/thank-you/thank-you.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/weightage-selector/weightage-selector.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/build/welcome/welcome.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/editor-wrapper/editor-wrapper.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/logic/logic.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-checkbox/logic-checkbox.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-comment-box/logic-comment-box.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-date-time/logic-date-time.component.d.ts +7 -3
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-dropdown/logic-dropdown.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-image-choice/logic-image-choice.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-choice/logic-multiple-choice.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-multiple-textbox/logic-multiple-textbox.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-ranking/logic-ranking.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-single-textbox/logic-single-textbox.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-slider/logic-slider.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-star-rating/logic-star-rating.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/move/move.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/page-header/page-header.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-checkbox/preview-checkbox.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-comment-box/preview-comment-box.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-date-time/preview-date-time.component.d.ts +8 -5
- package/lib/sharedComponents/assessment-editor/components/preview/preview-dropdown/preview-dropdown.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-file-upload/preview-file-upload.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-image-choice/preview-image-choice.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-dropdown/preview-matrix-dropdown.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-matrix-rating-scale/preview-matrix-rating-scale.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-choice/preview-multiple-choice.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-multiple-textbox/preview-multiple-textbox.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-ranking/preview-ranking.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-single-textbox/preview-single-textbox.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-slider/preview-slider.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-star-rating/preview-star-rating.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/preview-wrapper/preview-wrapper.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/thank-you/thank-you.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/preview/welcome/welcome.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/question-type/question-type.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/quick-settings/quick-settings.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/response-selector/response-selector.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/setting-anonymous/setting-anonymous.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/setting-response-segment/setting-response-segment.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/single-line-editor/single-line-editor.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/toolkit/toolkit.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/components/welcome-thankyou/welcome-thankyou.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-editor/create-assessment-container/create-assessment-container.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-list/assessment-list-loader/assessment-list-loader.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-list/assessment-list-sub-loader/assessment-list-sub-loader.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-list/assessment-list.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-preview/checkbox-question/checkbox-question.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-preview/date-time/date-time.component.d.ts +8 -5
- package/lib/sharedComponents/assessment-preview/description-preview/description-preview.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-preview/device/device.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-preview/file-upload/file-upload.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-preview/page-header/page-header.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-preview/preview/preview.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-preview/preview-container/preview-container.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-preview/quick-settings/quick-settings.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-preview/radio-question/radio-question.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-preview/section-details/section-details.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-preview/select-question/select-question.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-preview/single-textbox/single-textbox.component.d.ts +1 -1
- package/lib/sharedComponents/assessment-preview/welcome/welcome.component.d.ts +1 -1
- package/lib/sharedComponents/audit-category-list/audit-category-list.component.d.ts +1 -1
- package/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.d.ts +1 -1
- package/lib/sharedComponents/bulk-view/bulk-view.component.d.ts +1 -1
- package/lib/sharedComponents/category-list/category-list.component.d.ts +1 -1
- package/lib/sharedComponents/category-multiselect/category-multi-select.component.d.ts +1 -1
- package/lib/sharedComponents/checkbox-list/checkbox-list.component.d.ts +1 -1
- package/lib/sharedComponents/checkpoint/checkpoints/checkpoints.component.d.ts +1 -1
- package/lib/sharedComponents/checkpoint/checkpoints-list/checkpoints-list.component.d.ts +1 -1
- package/lib/sharedComponents/checkpoint/checkpoints-questions/checkpoints-questions.component.d.ts +6 -2
- package/lib/sharedComponents/checkpoint-floating-bar/checkpoint-floating-bar.component.d.ts +1 -1
- package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-container/checkpoints-policy-container.component.d.ts +1 -1
- package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-list/checkpoints-policy-list.component.d.ts +1 -1
- package/lib/sharedComponents/checkpoint-policy/checkpoints-policy-questions/checkpoints-policy-questions.component.d.ts +1 -1
- package/lib/sharedComponents/directive/autofocus.directive.d.ts +1 -1
- package/lib/sharedComponents/directive/conditional-focus.directive.d.ts +1 -1
- package/lib/sharedComponents/directive/drag-drop.directive.d.ts +1 -1
- package/lib/sharedComponents/directive/input-trim.directive.d.ts +1 -1
- package/lib/sharedComponents/directive/scroll-in-view.directive.d.ts +1 -1
- package/lib/sharedComponents/document-section/document-section.component.d.ts +1 -1
- package/lib/sharedComponents/floating-bar/floating-bar.component.d.ts +1 -1
- package/lib/sharedComponents/format-and-evidence/format-and-evidence.component.d.ts +1 -1
- package/lib/sharedComponents/framework-list/framework-list-table/framework-list-table.component.d.ts +1 -1
- package/lib/sharedComponents/framework-list/framework-list.component.d.ts +1 -1
- package/lib/sharedComponents/framework-list/framework-responsibility-table/framework-responsibility-table.component.d.ts +1 -1
- package/lib/sharedComponents/framework-list/framework-table-loader/framework-table-loader.component.d.ts +1 -1
- package/lib/sharedComponents/framework-list/parent-table/parent-table.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-checkbox-list/frequency-checkbox-list.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-container/frequency-container.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-due-date/frequency-due-date.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.d.ts +10 -4
- package/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-on-completion-of/frequency-on-completion-of.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.d.ts +9 -5
- package/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-radio-list/frequency-radio-list.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-random/frequency-random.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-top/frequency-top.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.d.ts +1 -1
- package/lib/sharedComponents/frequency/frequency.service.d.ts +1 -0
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-annual/frequency-dialog-annual.component.d.ts +1 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-biannual/frequency-dialog-biannual.component.d.ts +1 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-checkbox-list/frequency-dialog-checkbox-list.component.d.ts +1 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-container/frequency-dialog-container.component.d.ts +1 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-due-date/frequency-dialog-due-date.component.d.ts +1 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-monthly/frequency-dialog-monthly.component.d.ts +1 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-one-time/frequency-dialog-one-time.component.d.ts +10 -5
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-quarterly/frequency-dialog-quarterly.component.d.ts +1 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-radio-list/frequency-dialog-radio-list.component.d.ts +1 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-top/frequency-dialog-top.component.d.ts +1 -1
- package/lib/sharedComponents/frequency-dialog/frequency-dialog-weekly/frequency-dialog-weekly.component.d.ts +1 -1
- package/lib/sharedComponents/group-users-list/group-users-list.component.d.ts +1 -1
- package/lib/sharedComponents/link-program/link-program/link-program.component.d.ts +1 -1
- package/lib/sharedComponents/link-responsibility/link-responsibility.component.d.ts +1 -1
- package/lib/sharedComponents/list-loader/list-loader.component.d.ts +1 -1
- package/lib/sharedComponents/no-data/no-data.component.d.ts +1 -1
- package/lib/sharedComponents/owner-list/owner-list.component.d.ts +1 -1
- package/lib/sharedComponents/policy-access/policy-access.component.d.ts +1 -1
- package/lib/sharedComponents/program-listing/program-listing.component.d.ts +1 -1
- package/lib/sharedComponents/radio-list/radio-list.component.d.ts +1 -1
- package/lib/sharedComponents/radio-list-with-pagination/link-treatment-loader/link-treatment-loader.component.d.ts +1 -1
- package/lib/sharedComponents/radio-list-with-pagination/radio-list.component.d.ts +1 -1
- package/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.d.ts +1 -1
- package/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.d.ts +1 -1
- package/lib/sharedComponents/review-frequency/review-frequency.component.d.ts +1 -1
- package/lib/sharedComponents/risk-classification/risk-classification.component.d.ts +1 -1
- package/lib/sharedComponents/roles-list/roles-list.component.d.ts +1 -1
- package/lib/sharedComponents/select-approvers/select-approvers.component.d.ts +1 -1
- package/lib/sharedComponents/table-card-loader/table-card-loader.component.d.ts +1 -1
- package/lib/sharedComponents/users-radio-list/users-radio-list.component.d.ts +1 -1
- package/lib/sharedComponents/v-loader/loader/loader.component.d.ts +1 -1
- package/lib/sharedComponents/v-loader/loader-inline/loader-inline.component.d.ts +1 -1
- package/lib/ui-kit/action-dialog/active/active.component.d.ts +1 -1
- package/lib/ui-kit/action-dialog/deactivate/deactivate.component.d.ts +1 -1
- package/lib/ui-kit/action-dialog/delete/delete.component.d.ts +1 -1
- package/lib/ui-kit/action-dialog/duplicate/duplicate.component.d.ts +1 -1
- package/lib/ui-kit/click-outside/click-outside.directive.d.ts +1 -1
- package/lib/ui-kit/dialog/dialog-injector.d.ts +2 -2
- package/lib/ui-kit/dialog/dialog.component.d.ts +6 -4
- package/lib/ui-kit/dialog/dialog.service.d.ts +3 -3
- package/lib/ui-kit/dialog/insertion.directive.d.ts +1 -1
- package/lib/ui-kit/directive/stop-propagation.directive.d.ts +1 -1
- package/lib/ui-kit/editor-loader/editor-loader/editor-loader.component.d.ts +1 -1
- package/lib/ui-kit/formgroup/click-outside.directive.d.ts +1 -1
- package/lib/ui-kit/formgroup/cs-checkbox/cs-checkbox.component.d.ts +1 -1
- package/lib/ui-kit/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.d.ts +1 -1
- package/lib/ui-kit/formgroup/cs-radio/cs-radio.component.d.ts +1 -1
- package/lib/ui-kit/formgroup/cs-radio-group/cs-radio-group.component.d.ts +1 -1
- package/lib/ui-kit/formgroup/cs-select/cs-select.component.d.ts +1 -1
- package/lib/ui-kit/formgroup/cs-switch/cs-switch.component.d.ts +1 -1
- package/lib/ui-kit/line-loader/line-loader.component.d.ts +1 -1
- package/lib/ui-kit/no-data/no-data.component.d.ts +1 -1
- package/lib/ui-kit/pagination/pagination/pagination.component.d.ts +1 -1
- package/lib/ui-kit/popover/popover-event.directive.d.ts +1 -1
- package/lib/ui-kit/popover/popover-longpress.directive.d.ts +1 -1
- package/lib/ui-kit/popover/popover.component.d.ts +1 -1
- package/lib/ui-kit/popover/popover.directive.d.ts +1 -1
- package/lib/ui-kit/popover-hover/popover-hover.component.d.ts +1 -1
- package/lib/ui-kit/popover-hover/popover-hover.directive.d.ts +1 -1
- package/lib/ui-kit/smiley-dialog/smiley-dialog.component.d.ts +1 -1
- package/lib/ui-kit/smiley-dialog-inline/smiley-dialog-inline.component.d.ts +1 -1
- package/lib/ui-kit/snack-bar/snack-bar.component.d.ts +1 -1
- package/lib/ui-kit/time-picker/time-picker/time-picker.component.d.ts +1 -1
- package/lib/ui-kit/tooltip/tooltip.directive.d.ts +1 -1
- package/lib/workflow/grc-object/grc-object-container/grc-object-container.component.d.ts +1 -1
- package/lib/workflow/shared/components/attributes/attributes-checkbox/attributes-checkbox.component.d.ts +1 -1
- package/lib/workflow/shared/components/attributes/attributes-dropdown/attributes-dropdown.component.d.ts +1 -1
- package/lib/workflow/shared/components/attributes/attributes-text-box/attributes-text-box.component.d.ts +1 -1
- package/lib/workflow/shared/components/attributes/attributes.component.d.ts +1 -1
- package/lib/workflow/shared/components/attributes/date-picker/date-picker.component.d.ts +1 -1
- package/lib/workflow/shared/components/edit-mode/edit-mode.component.d.ts +1 -1
- package/lib/workflow/shared/components/grc-category-listing/grc-category-listing.component.d.ts +1 -1
- package/lib/workflow/shared/components/grc-object-list/grc-object-list.component.d.ts +1 -1
- package/lib/workflow/shared/components/grc-responsibility-listing/grc-responsibility-listing.component.d.ts +1 -1
- package/lib/workflow/shared/components/grc-risk-listing/grc-risk-listing.component.d.ts +1 -1
- package/lib/workflow/shared/components/grc-sub-category-listing/grc-sub-category-listing.component.d.ts +1 -1
- package/lib/workflow/shared/components/list-popup/list-popup.component.d.ts +1 -1
- package/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.d.ts +1 -1
- package/lib/workflow/shared/components/risk-category-risk-listing/risk-category-risk-listing.component.d.ts +1 -1
- package/lib/workflow/shared/components/table-card/table-card.component.d.ts +1 -1
- package/lib/workflow/shared/components/text-field/text-field.component.d.ts +1 -1
- package/lib/workflow/shared/components/text-field-icon/text-field-icon.component.d.ts +1 -1
- package/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.d.ts +1 -1
- package/lib/workflow-assessment/workflow-assessment.component.d.ts +1 -1
- package/lib/workflow-compliance/workflow-compliance.component.d.ts +1 -1
- package/lib/workflow-engine-container/workflow-engine-container.component.d.ts +1 -1
- package/lib/workflow-pagination/workflow-pagination.component.d.ts +1 -1
- package/lib/workflow-policy/workflow-policy.component.d.ts +7 -3
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment-loader/assessment-loader.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment-sub-loader/assessment-sub-loader.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/assessment-picker/workflow-pagination/workflow-pagination.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/checkbox/checkbox.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/cs-switch/cs-switch.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/custom-field/custom-field.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/define-framework-listing/loader/loader.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/directives/input-trim.directive.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/file-pill/file-pill.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/floating-bar/floating-bar.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/form-field/form-field.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/input-with-pill/input-with-pill.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/role-list/loader/loader.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/role-list/role-list.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/tab-selector/tab-selector.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/tick-mark/tick-mark.component.d.ts +1 -1
- package/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.d.ts +1 -1
- package/lib/workflow-program/workflow-program.component.d.ts +1 -1
- package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
- package/lib/workflow-services/auth.service.d.ts +0 -1
- package/lib/workflow-services/log-issue.service.d.ts +1 -0
- package/lib/workflow-survey-form/workflow-survey-form.component.d.ts +1 -1
- package/package.json +5 -12
|
@@ -0,0 +1,739 @@
|
|
|
1
|
+
import { HttpParams } from '@angular/common/http';
|
|
2
|
+
import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../workflow-services/responsibility.service";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
import * as i3 from "../../formgroup/cs-checkbox/cs-checkbox.component";
|
|
7
|
+
import * as i4 from "../../formgroup/cs-switch/cs-switch.component";
|
|
8
|
+
import * as i5 from "../../formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component";
|
|
9
|
+
import * as i6 from "../../ui-kit/tooltip/tooltip.directive";
|
|
10
|
+
import * as i7 from "../no-data/no-data.component";
|
|
11
|
+
import * as i8 from "../v-loader/loader/loader.component";
|
|
12
|
+
import * as i9 from "../../ui-kit/pagination/pagination/pagination.component";
|
|
13
|
+
import * as i10 from "../floating-bar/floating-bar.component";
|
|
14
|
+
export class ProgramListingComponent {
|
|
15
|
+
set getSelectedCategories(category) {
|
|
16
|
+
this.selectedCategories = category;
|
|
17
|
+
this.tempSelectedCategories = JSON.stringify(category);
|
|
18
|
+
}
|
|
19
|
+
set getLinkedProgram(program) {
|
|
20
|
+
this.selectedProgramsDetail = [];
|
|
21
|
+
this.selectedProgramsId = [];
|
|
22
|
+
this.viewOnlyProgramsCategoryId = [];
|
|
23
|
+
this.selectedProgramsDetail = program;
|
|
24
|
+
this.selectedProgramsDetail.forEach((ele) => {
|
|
25
|
+
this.selectedProgramsId.push(ele?._id);
|
|
26
|
+
this.getSelectedProgramCount(true, ele?.programType);
|
|
27
|
+
ele?.isViewOnlyProgram
|
|
28
|
+
? this.viewOnlyProgramsCategoryId?.push(ele?.category_id)
|
|
29
|
+
: null;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
constructor(responsibilityService) {
|
|
33
|
+
this.responsibilityService = responsibilityService;
|
|
34
|
+
this.animation = false;
|
|
35
|
+
this.subList = false;
|
|
36
|
+
this.loader = false;
|
|
37
|
+
this.openedFrom = '';
|
|
38
|
+
// @Input() selectedCategories: any[] = [];
|
|
39
|
+
this.viewOnlyProgramsCategoryId = [];
|
|
40
|
+
this.selectedCategories = [];
|
|
41
|
+
this.tempSelectedCategories = [];
|
|
42
|
+
this.responsibilityId = '';
|
|
43
|
+
this.mode = 'CREATE';
|
|
44
|
+
this.previousSelectedValues = {
|
|
45
|
+
program: {},
|
|
46
|
+
categories: [],
|
|
47
|
+
};
|
|
48
|
+
this.programData = {
|
|
49
|
+
data: [],
|
|
50
|
+
from: 0,
|
|
51
|
+
to: 0,
|
|
52
|
+
totalPages: 0,
|
|
53
|
+
totalRecords: 0,
|
|
54
|
+
currentPage: 1,
|
|
55
|
+
AllInternalControlsProgramsCount: 0,
|
|
56
|
+
AllOthersProgramsCount: 0,
|
|
57
|
+
AllRegulationProgramsCount: 0,
|
|
58
|
+
AllStandardProgramsCount: 0,
|
|
59
|
+
SelectedInternalControlsProgramsCount: 0,
|
|
60
|
+
SelectedOthersProgramsCount: 0,
|
|
61
|
+
SelectedRegulationProgramsCount: 0,
|
|
62
|
+
SelectedStandardProgramsCount: 0,
|
|
63
|
+
AllProgramsCount: 0,
|
|
64
|
+
AllViewOnlyProgramCount: 0,
|
|
65
|
+
};
|
|
66
|
+
this.programTabDataCount = {
|
|
67
|
+
allInternalControlsProgramsCount: 0,
|
|
68
|
+
allOthersProgramsCount: 0,
|
|
69
|
+
allRegulationProgramsCount: 0,
|
|
70
|
+
allStandardProgramsCount: 0,
|
|
71
|
+
};
|
|
72
|
+
this.categoryData = {
|
|
73
|
+
data: [],
|
|
74
|
+
from: 0,
|
|
75
|
+
to: 0,
|
|
76
|
+
totalPages: 0,
|
|
77
|
+
totalRecords: 0,
|
|
78
|
+
currentPage: 1,
|
|
79
|
+
selectedCategories: [],
|
|
80
|
+
};
|
|
81
|
+
this.showCategories = false;
|
|
82
|
+
this.searchString = '';
|
|
83
|
+
this.categorySearchString = '';
|
|
84
|
+
this.activeTab = 'regulations';
|
|
85
|
+
this.selectedIds = [];
|
|
86
|
+
this.categoryList = [];
|
|
87
|
+
this.programTypeObject = {
|
|
88
|
+
regulations: 1,
|
|
89
|
+
standards: 2,
|
|
90
|
+
internal_controls: 3,
|
|
91
|
+
others: 0,
|
|
92
|
+
};
|
|
93
|
+
this.displayConfirmationMessage = false;
|
|
94
|
+
this.tempPrimaryProgram = {};
|
|
95
|
+
this.primaryConfirmationMessage = `Once confirmed, the <em>Primary Program</em> for this responsibility will be changed. Hence, all the default settings related to the new <em>Primary Program</em> will now apply to this responsibility.`;
|
|
96
|
+
this.isPrimaryConfirmation = false;
|
|
97
|
+
this.isUncheckedProgram = false;
|
|
98
|
+
this.isPrimaryUnchecked = false;
|
|
99
|
+
this.selectedProgramsDetail = [];
|
|
100
|
+
this.selectedProgramsId = [];
|
|
101
|
+
this.programCountLoader = false;
|
|
102
|
+
this.deprecatePrimaryProgramFlag = false;
|
|
103
|
+
this.saveSelectedProgram = new EventEmitter();
|
|
104
|
+
this.closeEvent = new EventEmitter();
|
|
105
|
+
this.allCategories = [];
|
|
106
|
+
this.selectedSubCategoryIds = [];
|
|
107
|
+
this.programSubTab = 'PROGRAMS';
|
|
108
|
+
}
|
|
109
|
+
ngOnInit() {
|
|
110
|
+
this.deprecatePrimaryProgramFlag = this.feature.isFeatureEnabled('ff_deprecate_primary_program_flag');
|
|
111
|
+
this.animation = true;
|
|
112
|
+
setTimeout(() => {
|
|
113
|
+
this.animation = false;
|
|
114
|
+
}, 300);
|
|
115
|
+
if (this.selectedProgram && this.selectedProgram[0]) {
|
|
116
|
+
this.currentProgram = this.selectedProgram[0];
|
|
117
|
+
if (this.mode === 'EDIT' || this.openedFrom === 'PROGRAM_WORKROOM') {
|
|
118
|
+
this.viewOnlyProgramsCategoryId?.push(this.currentProgram?.category_id);
|
|
119
|
+
}
|
|
120
|
+
switch (this.currentProgram?.programType) {
|
|
121
|
+
case 0:
|
|
122
|
+
this.activeTab = 'others';
|
|
123
|
+
break;
|
|
124
|
+
case 1:
|
|
125
|
+
this.activeTab = 'regulations';
|
|
126
|
+
break;
|
|
127
|
+
case 2:
|
|
128
|
+
this.activeTab = 'standards';
|
|
129
|
+
break;
|
|
130
|
+
case 3:
|
|
131
|
+
this.activeTab = 'internal_controls';
|
|
132
|
+
break;
|
|
133
|
+
default:
|
|
134
|
+
this.activeTab = 'regulations';
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
this.getSelectedProgramCount();
|
|
138
|
+
// if (this.selectedCategories?.length && this.currentProgram) {
|
|
139
|
+
this.populateCategories();
|
|
140
|
+
// }
|
|
141
|
+
}
|
|
142
|
+
if (this.hideProgramsList) {
|
|
143
|
+
this.selectedProgramsId?.push(this.selectedProgram[0]?._id);
|
|
144
|
+
this.getCategoriesList();
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
this.getProgramsList();
|
|
148
|
+
}
|
|
149
|
+
this.getProgramsCount();
|
|
150
|
+
this.previousSelectedValues = {
|
|
151
|
+
programs: this.currentProgram,
|
|
152
|
+
categories: this.selectedCategories.length
|
|
153
|
+
? [...new Set(this.selectedCategories)]
|
|
154
|
+
: [],
|
|
155
|
+
};
|
|
156
|
+
this.preservePreviousDetails();
|
|
157
|
+
}
|
|
158
|
+
populateCategories() {
|
|
159
|
+
this.selectedIds = [];
|
|
160
|
+
let params = new HttpParams();
|
|
161
|
+
// params = params.append('program_id', this.currentProgram._id);
|
|
162
|
+
params = params.append('isPagination', false);
|
|
163
|
+
if (this.responsibilityId) {
|
|
164
|
+
params = params.append('reportId', this.responsibilityId);
|
|
165
|
+
}
|
|
166
|
+
this.responsibilityService
|
|
167
|
+
.getProgramsList(params, this.selectedProgramsId)
|
|
168
|
+
.subscribe({
|
|
169
|
+
next: (res) => {
|
|
170
|
+
const allCategories = res.data;
|
|
171
|
+
this.categoryData.selectedCategories = allCategories.filter((ele) => this.selectedCategories.includes(ele.category_id));
|
|
172
|
+
this.categoryData.selectedCategories.forEach((element) => {
|
|
173
|
+
this.selectedIds.push(element.category_id);
|
|
174
|
+
});
|
|
175
|
+
},
|
|
176
|
+
error: (err) => {
|
|
177
|
+
console.error(err);
|
|
178
|
+
},
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
handleSearch(event) {
|
|
182
|
+
if (this.searchString != event) {
|
|
183
|
+
this.programData.currentPage = 1;
|
|
184
|
+
this.searchString = event;
|
|
185
|
+
this.getProgramsList({ search: true });
|
|
186
|
+
this.getProgramsCount({ search: true });
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
categorySearch(event) {
|
|
190
|
+
if (this.categorySearchString != event) {
|
|
191
|
+
this.categoryData.currentPage = 1;
|
|
192
|
+
this.categorySearchString = event;
|
|
193
|
+
this.getCategoriesList({ search: true });
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
selectProgram(event, program) {
|
|
197
|
+
this.updateSelectedPrograms(event, program);
|
|
198
|
+
// this.getSelectedProgramCount(event, program?.programType);
|
|
199
|
+
if (event) {
|
|
200
|
+
if (!this.feature.isFeatureEnabled('ff_deprecate_primary_program_flag')) {
|
|
201
|
+
Object.keys(this.currentProgram ?? {}).length
|
|
202
|
+
? null
|
|
203
|
+
: (this.currentProgram = program);
|
|
204
|
+
}
|
|
205
|
+
// this.currentProgram = program;
|
|
206
|
+
this.selectedIds = [];
|
|
207
|
+
this.categoryList = [];
|
|
208
|
+
// this.getSelectedProgramCount();
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* If the event is true, then push the program to the selectedProgramsDetail array. If the event is
|
|
213
|
+
* false, then remove the program from the selectedProgramsDetail array.
|
|
214
|
+
* @param {any} event - boolean
|
|
215
|
+
* @param {any} program - any = {
|
|
216
|
+
*/
|
|
217
|
+
updateSelectedPrograms(event, program) {
|
|
218
|
+
if (event) {
|
|
219
|
+
const indexOfProgram = this.selectedProgramsDetail?.findIndex((el) => el?.category_id === program?.category_id);
|
|
220
|
+
if (indexOfProgram === -1 && Object.keys(program)?.length) {
|
|
221
|
+
this.selectedProgramsId?.push(program?._id);
|
|
222
|
+
this.selectedProgramsDetail?.push(program);
|
|
223
|
+
this.getSelectedProgramCount(event, program?.programType);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
const indexOfProgram = this.selectedProgramsDetail?.findIndex((el) => el?.category_id === program?.category_id);
|
|
228
|
+
if (indexOfProgram !== -1) {
|
|
229
|
+
this.selectedProgramsDetail?.splice(indexOfProgram, 1);
|
|
230
|
+
}
|
|
231
|
+
const indexOfId = this.selectedProgramsId?.findIndex((el) => el === program?._id);
|
|
232
|
+
if (indexOfId !== -1) {
|
|
233
|
+
this.selectedProgramsId?.splice(indexOfId, 1);
|
|
234
|
+
}
|
|
235
|
+
this.isPrimaryUnchecked = false;
|
|
236
|
+
if (this.currentProgram &&
|
|
237
|
+
this.currentProgram?.category_id === program?.category_id) {
|
|
238
|
+
// this.primaryConfirmationMessage = 'You cannot deselect this Program since this is the <em>Primary Program</em> for this responsibility. To proceed, first select another Program as the <em>Primary Program</em>.';
|
|
239
|
+
this.isPrimaryConfirmation = true;
|
|
240
|
+
this.isPrimaryUnchecked = true;
|
|
241
|
+
this.tempPrimaryProgram = JSON.stringify(program);
|
|
242
|
+
// this.currentProgram = undefined;
|
|
243
|
+
}
|
|
244
|
+
// }
|
|
245
|
+
this.getSelectedProgramCount(event, program?.programType);
|
|
246
|
+
}
|
|
247
|
+
if (this.selectedProgramsDetail?.length && !this.currentProgram?.length) {
|
|
248
|
+
this.currentProgram = this.selectedProgramsDetail[0];
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
this.currentProgram = [];
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* If the currentProgram is set, then set the currentProgram to the program passed in, and set the
|
|
256
|
+
* tempPrimaryProgram to the currentProgram.
|
|
257
|
+
* If the currentProgram is not set, then set the currentProgram to the program passed in.
|
|
258
|
+
* @param {any} event - any - the event that is triggered when the user clicks on the checkbox
|
|
259
|
+
* @param {any} program - the program that is being selected
|
|
260
|
+
*/
|
|
261
|
+
setPrimaryProgram(event, program) {
|
|
262
|
+
if (this.currentProgram) {
|
|
263
|
+
const currentTemp = this.currentProgram;
|
|
264
|
+
this.tempPrimaryProgram = JSON.stringify(currentTemp);
|
|
265
|
+
this.currentProgram = program;
|
|
266
|
+
this.updateSelectedPrograms(true, program);
|
|
267
|
+
if (!event) {
|
|
268
|
+
this.currentProgram = {};
|
|
269
|
+
}
|
|
270
|
+
this.primaryConfirmationMessage =
|
|
271
|
+
'Once confirmed, the <em>Primary Program</em> for this responsibility will be changed. Hence, all the default settings related to the new <em>Primary Program</em> will now apply to this responsibility.';
|
|
272
|
+
this.isPrimaryConfirmation = true;
|
|
273
|
+
}
|
|
274
|
+
if (event && !this.currentProgram) {
|
|
275
|
+
this.currentProgram = program;
|
|
276
|
+
this.updateSelectedPrograms(true, program);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* If the user clicks "Yes" on the confirmation modal, then the function will remove the program from
|
|
281
|
+
* the selectedProgramsDetail array and the selectedProgramsId array. If the user clicks "No" on the
|
|
282
|
+
* confirmation modal, then the function will do nothing.
|
|
283
|
+
* @param {boolean} event - boolean -> this is the value of the checkbox
|
|
284
|
+
*/
|
|
285
|
+
updatePrimaryProgram(event) {
|
|
286
|
+
if (event && this.isPrimaryUnchecked) {
|
|
287
|
+
const indexOfProgram = this.selectedProgramsDetail?.findIndex((el) => el?.category_id ===
|
|
288
|
+
JSON.parse(this.tempPrimaryProgram ?? {})?.category_id);
|
|
289
|
+
if (indexOfProgram !== -1) {
|
|
290
|
+
this.selectedProgramsDetail?.splice(indexOfProgram, 1);
|
|
291
|
+
}
|
|
292
|
+
const indexOfId = this.selectedProgramsId?.findIndex((el) => el === JSON.parse(this.tempPrimaryProgram ?? {})?._id);
|
|
293
|
+
if (indexOfId !== -1) {
|
|
294
|
+
this.selectedProgramsId?.splice(indexOfId, 1);
|
|
295
|
+
}
|
|
296
|
+
this.isPrimaryConfirmation = false;
|
|
297
|
+
this.currentProgram = {};
|
|
298
|
+
}
|
|
299
|
+
else if (!event && this.isPrimaryUnchecked) {
|
|
300
|
+
this.updateSelectedPrograms(true, this.tempPrimaryProgram?.length
|
|
301
|
+
? JSON.parse(this.tempPrimaryProgram ?? {})
|
|
302
|
+
: {});
|
|
303
|
+
this.currentProgram = this.tempPrimaryProgram?.length
|
|
304
|
+
? JSON.parse(this.tempPrimaryProgram ?? {})
|
|
305
|
+
: {};
|
|
306
|
+
this.isPrimaryConfirmation = false;
|
|
307
|
+
}
|
|
308
|
+
else if (event) {
|
|
309
|
+
// this.currentProgram = this.isPrimaryUnchecked ? {} : JSON.parse(this.tempPrimaryProgram);
|
|
310
|
+
this.updateSelectedPrograms(this.isPrimaryUnchecked ? false : true, this.tempPrimaryProgram?.length
|
|
311
|
+
? JSON.parse(this.tempPrimaryProgram ?? {})
|
|
312
|
+
: {});
|
|
313
|
+
this.isPrimaryConfirmation = false;
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
let currentPrimary = JSON.stringify(this.currentProgram);
|
|
317
|
+
this.currentProgram = {};
|
|
318
|
+
// this.updateSelectedPrograms(false, JSON.parse(currentPrimary)?? {});
|
|
319
|
+
this.updateSelectedPrograms(true, JSON.parse(currentPrimary) ?? {});
|
|
320
|
+
this.currentProgram = this.tempPrimaryProgram?.length
|
|
321
|
+
? JSON.parse(this.tempPrimaryProgram ?? {})
|
|
322
|
+
: {};
|
|
323
|
+
this.isPrimaryConfirmation = false;
|
|
324
|
+
}
|
|
325
|
+
this.isPrimaryUnchecked = false;
|
|
326
|
+
}
|
|
327
|
+
selectAllCategories(value) {
|
|
328
|
+
if (value) {
|
|
329
|
+
this.selectedIds = [];
|
|
330
|
+
this.categoryData.selectedCategories = [];
|
|
331
|
+
if (this.categoryData.totalPages < 2) {
|
|
332
|
+
this.categoryData.data.forEach((ele) => {
|
|
333
|
+
this.selectedIds.push(ele.category_id);
|
|
334
|
+
this.categoryData.selectedCategories.push(ele);
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
else {
|
|
338
|
+
this.loader = true;
|
|
339
|
+
let params = new HttpParams();
|
|
340
|
+
// params = params.append('program_id', this.currentProgram?._id);
|
|
341
|
+
params = params.append('isPagination', false);
|
|
342
|
+
if (this.responsibilityId) {
|
|
343
|
+
params = params.append('reportId', this.responsibilityId);
|
|
344
|
+
}
|
|
345
|
+
this.responsibilityService
|
|
346
|
+
.getProgramsList(params, this.selectedProgramsId)
|
|
347
|
+
.subscribe({
|
|
348
|
+
next: (res) => {
|
|
349
|
+
const allCategories = res.data;
|
|
350
|
+
this.categoryData.selectedCategories = res.data;
|
|
351
|
+
allCategories.forEach((element) => {
|
|
352
|
+
this.selectedIds.push(element.category_id);
|
|
353
|
+
});
|
|
354
|
+
this.loader = false;
|
|
355
|
+
},
|
|
356
|
+
error: (err) => {
|
|
357
|
+
console.error(err);
|
|
358
|
+
this.loader = false;
|
|
359
|
+
},
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
else {
|
|
364
|
+
this.categoryData.selectedCategories = [];
|
|
365
|
+
this.selectedIds = [];
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
checkCategoriesSelection() {
|
|
369
|
+
if (this.categoryData.selectedCategories.length ==
|
|
370
|
+
this.categoryData.totalRecords) {
|
|
371
|
+
return 'checked';
|
|
372
|
+
}
|
|
373
|
+
else if (!this.categoryData.selectedCategories.length) {
|
|
374
|
+
return 'unchecked';
|
|
375
|
+
}
|
|
376
|
+
else {
|
|
377
|
+
return 'indeterminate';
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
openCategories() {
|
|
381
|
+
this.searchString = '';
|
|
382
|
+
this.categorySearchString = '';
|
|
383
|
+
const isSubProgram = this.selectedProgramsDetail?.some((el) => el?.child_id?.length);
|
|
384
|
+
this.populateCategories();
|
|
385
|
+
if (this.currentProgram?.child_id?.length || isSubProgram) {
|
|
386
|
+
this.showCategories = true;
|
|
387
|
+
this.getCategoriesList();
|
|
388
|
+
}
|
|
389
|
+
else {
|
|
390
|
+
this.selectedIds = [];
|
|
391
|
+
this.save();
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
backToPrograms() {
|
|
395
|
+
if (!this.hideProgramsList) {
|
|
396
|
+
this.showCategories = false;
|
|
397
|
+
if (this.previousSelectedValues?.program?._id == this.currentProgram) {
|
|
398
|
+
this.categoryData.selectedCategories = [
|
|
399
|
+
...new Set(this.previousSelectedValues.categories),
|
|
400
|
+
];
|
|
401
|
+
this.selectedIds = [];
|
|
402
|
+
this.categoryData.selectedCategories.forEach((element) => {
|
|
403
|
+
this.selectedIds.push(element);
|
|
404
|
+
});
|
|
405
|
+
}
|
|
406
|
+
else {
|
|
407
|
+
this.getProgramsList();
|
|
408
|
+
this.categoryData.selectedCategories = [];
|
|
409
|
+
this.selectedIds = [];
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
else {
|
|
413
|
+
this.categoryData.selectedCategories = [];
|
|
414
|
+
this.selectedIds = [];
|
|
415
|
+
this.close();
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
changeTab(type) {
|
|
419
|
+
this.programSubTab = 'PROGRAMS';
|
|
420
|
+
this.activeTab = type;
|
|
421
|
+
this.programData.currentPage = 1;
|
|
422
|
+
if (this.searchString?.length) {
|
|
423
|
+
this.searchString = '';
|
|
424
|
+
this.getProgramsCount();
|
|
425
|
+
}
|
|
426
|
+
// this.searchString = '';
|
|
427
|
+
this.searchProgram.nativeElement.value = '';
|
|
428
|
+
this.getProgramsList();
|
|
429
|
+
}
|
|
430
|
+
changePage(event, type) {
|
|
431
|
+
switch (type) {
|
|
432
|
+
case 'program':
|
|
433
|
+
this.programData.currentPage = event;
|
|
434
|
+
this.getProgramsList();
|
|
435
|
+
break;
|
|
436
|
+
case 'category':
|
|
437
|
+
this.categoryData.currentPage = event;
|
|
438
|
+
this.getCategoriesList();
|
|
439
|
+
break;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
getProgramsList(paramsObject) {
|
|
443
|
+
this.loader = true;
|
|
444
|
+
let params = new HttpParams();
|
|
445
|
+
params = params.append('programType', this.programTypeObject[this.activeTab]);
|
|
446
|
+
if (paramsObject?.search || this.searchString) {
|
|
447
|
+
params = params.append('searchText', this.searchString);
|
|
448
|
+
}
|
|
449
|
+
// else {
|
|
450
|
+
params = params.append('pageNo', this.programData.currentPage);
|
|
451
|
+
// }
|
|
452
|
+
if (this.programSubTab === 'OTHER_PROGRAMS') {
|
|
453
|
+
params = params.append('isViewOnlyPrograms', true);
|
|
454
|
+
}
|
|
455
|
+
if (this.responsibilityId) {
|
|
456
|
+
params = params.append('reportId', this.responsibilityId);
|
|
457
|
+
}
|
|
458
|
+
this.responsibilityService.getProgramsList(params).subscribe({
|
|
459
|
+
next: (res) => {
|
|
460
|
+
this.programData.data = res.data;
|
|
461
|
+
this.programData.from = res.from;
|
|
462
|
+
this.programData.to = res.to;
|
|
463
|
+
this.programData.totalPages = res.totalPages;
|
|
464
|
+
this.programData.totalRecords = res.totalRecords;
|
|
465
|
+
this.programData.AllInternalControlsProgramsCount =
|
|
466
|
+
res.AllInternalControlsProgramsCount;
|
|
467
|
+
this.programData.AllOthersProgramsCount = res.AllOthersProgramsCount;
|
|
468
|
+
this.programData.AllRegulationProgramsCount =
|
|
469
|
+
res.AllRegulationProgramsCount;
|
|
470
|
+
this.programData.AllStandardProgramsCount =
|
|
471
|
+
res.AllStandardProgramsCount;
|
|
472
|
+
this.programData.AllProgramsCount = res?.AllProgramsCount
|
|
473
|
+
? res?.AllProgramsCount
|
|
474
|
+
: 0;
|
|
475
|
+
this.programData.AllViewOnlyProgramCount = res?.AllViewOnlyProgramCount
|
|
476
|
+
? res?.AllViewOnlyProgramCount
|
|
477
|
+
: 0;
|
|
478
|
+
this.loader = false;
|
|
479
|
+
},
|
|
480
|
+
error: (err) => {
|
|
481
|
+
console.error(err);
|
|
482
|
+
this.loader = false;
|
|
483
|
+
},
|
|
484
|
+
});
|
|
485
|
+
}
|
|
486
|
+
getProgramsCount(paramsObject) {
|
|
487
|
+
this.programCountLoader = true;
|
|
488
|
+
let params = new HttpParams();
|
|
489
|
+
// params = params.append('programType', this.programTypeObject[this.activeTab]);
|
|
490
|
+
if (paramsObject?.search || this.searchString) {
|
|
491
|
+
params = params.append('searchText', this.searchString);
|
|
492
|
+
}
|
|
493
|
+
if (this.responsibilityId) {
|
|
494
|
+
params = params.append('reportId', this.responsibilityId);
|
|
495
|
+
}
|
|
496
|
+
this.responsibilityService.getProgramsListCount(params).subscribe({
|
|
497
|
+
next: (res) => {
|
|
498
|
+
this.programTabDataCount.allRegulationProgramsCount =
|
|
499
|
+
res?.AllRegulationProgramsCount;
|
|
500
|
+
this.programTabDataCount.allStandardProgramsCount =
|
|
501
|
+
res?.AllStandardProgramsCount;
|
|
502
|
+
this.programTabDataCount.allInternalControlsProgramsCount =
|
|
503
|
+
res?.AllInternalControlsProgramsCount;
|
|
504
|
+
this.programTabDataCount.allOthersProgramsCount =
|
|
505
|
+
res?.AllOthersProgramsCount;
|
|
506
|
+
this.programCountLoader = false;
|
|
507
|
+
},
|
|
508
|
+
error: (err) => {
|
|
509
|
+
console.error(err);
|
|
510
|
+
this.programCountLoader = false;
|
|
511
|
+
},
|
|
512
|
+
});
|
|
513
|
+
}
|
|
514
|
+
getCategoriesList(queryObject) {
|
|
515
|
+
this.loader = true;
|
|
516
|
+
let params = new HttpParams();
|
|
517
|
+
// params = params.append('program_id', this.currentProgram?._id);
|
|
518
|
+
params = params.append('pageNo', this.categoryData.currentPage);
|
|
519
|
+
if (queryObject?.search || this.categorySearchString) {
|
|
520
|
+
params = params.append('searchText', this.categorySearchString);
|
|
521
|
+
}
|
|
522
|
+
if (this.responsibilityId) {
|
|
523
|
+
params = params.append('reportId', this.responsibilityId);
|
|
524
|
+
}
|
|
525
|
+
this.responsibilityService
|
|
526
|
+
.getProgramsList(params, [...new Set(this.selectedProgramsId)])
|
|
527
|
+
.subscribe({
|
|
528
|
+
next: (res) => {
|
|
529
|
+
this.categoryData.data = res.data;
|
|
530
|
+
this.categoryData.from = res.from;
|
|
531
|
+
this.categoryData.to = res.to;
|
|
532
|
+
this.categoryData.totalPages = res.totalPages;
|
|
533
|
+
this.categoryData.totalRecords = res.totalRecords;
|
|
534
|
+
this.selectedSubCategoryIds = res?.selectedSubCategoryIds?.length
|
|
535
|
+
? res?.selectedSubCategoryIds
|
|
536
|
+
: [];
|
|
537
|
+
this.loader = false;
|
|
538
|
+
},
|
|
539
|
+
error: (err) => {
|
|
540
|
+
console.error(err);
|
|
541
|
+
this.loader = false;
|
|
542
|
+
},
|
|
543
|
+
});
|
|
544
|
+
this.showCategories = true;
|
|
545
|
+
}
|
|
546
|
+
saveProgram() { }
|
|
547
|
+
selectCategory(mode, category) {
|
|
548
|
+
if (mode) {
|
|
549
|
+
this.selectedIds.push(category.category_id);
|
|
550
|
+
this.categoryData.selectedCategories.push(category);
|
|
551
|
+
this.selectedCategories.push(category.category_id);
|
|
552
|
+
}
|
|
553
|
+
else {
|
|
554
|
+
const index = this.selectedIds.findIndex((element) => element == category.category_id);
|
|
555
|
+
this.selectedIds.splice(index, 1);
|
|
556
|
+
const categoryIndex = this.categoryData.selectedCategories.findIndex((ele) => ele.category_id == category.category_id);
|
|
557
|
+
this.categoryData.selectedCategories.splice(categoryIndex, 1);
|
|
558
|
+
const selectedIndex = this.selectedCategories.findIndex((ele) => ele == category?.category_id);
|
|
559
|
+
this.selectedCategories.splice(selectedIndex, 1);
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
removeCategories(event) {
|
|
563
|
+
const categoryIndex = this.categoryData.selectedCategories.findIndex((ele) => ele.category_id == event.category_id);
|
|
564
|
+
this.categoryData.selectedCategories.splice(categoryIndex, 1);
|
|
565
|
+
const index = this.selectedIds.findIndex((element) => element == event.category_id);
|
|
566
|
+
this.selectedIds.splice(index, 1);
|
|
567
|
+
}
|
|
568
|
+
close() {
|
|
569
|
+
const currentProgram = this.preservePrimaryProgram?.length
|
|
570
|
+
? JSON.parse(this.preservePrimaryProgram)
|
|
571
|
+
: {};
|
|
572
|
+
const selectedProgramsId = this.preservedProgramsId?.length
|
|
573
|
+
? JSON.parse(this.preservedProgramsId)
|
|
574
|
+
: undefined;
|
|
575
|
+
const selectedProgramsDetail = this.preservedSelectedPrograms?.length
|
|
576
|
+
? JSON.parse(this.preservedSelectedPrograms)
|
|
577
|
+
: [];
|
|
578
|
+
if (this.preservePrimaryProgram?.length &&
|
|
579
|
+
this.preservedSelectedPrograms?.length) {
|
|
580
|
+
this.saveSelectedProgram.emit({
|
|
581
|
+
program: currentProgram,
|
|
582
|
+
categories: JSON.parse(this.tempSelectedCategories),
|
|
583
|
+
linkedProgram: selectedProgramsDetail,
|
|
584
|
+
});
|
|
585
|
+
}
|
|
586
|
+
// this.saveSelectedProgram.emit({program: currentProgram, categories: this.selectedIds, linkedProgram: selectedProgramsDetail });
|
|
587
|
+
this.closeEvent.emit();
|
|
588
|
+
}
|
|
589
|
+
save() {
|
|
590
|
+
if (!this.hideProgramsList && false) {
|
|
591
|
+
this.displayConfirmationMessage = true;
|
|
592
|
+
}
|
|
593
|
+
else {
|
|
594
|
+
const selectedCategoryIds = this.selectedIds.concat(this.selectedSubCategoryIds);
|
|
595
|
+
this.saveSelectedProgram.emit({
|
|
596
|
+
program: this.currentProgram,
|
|
597
|
+
categories: [...new Set(selectedCategoryIds)],
|
|
598
|
+
linkedProgram: this.selectedProgramsDetail,
|
|
599
|
+
});
|
|
600
|
+
// this.saveSelectedProgram.emit({ program: this.currentProgram, categories: this.selectedIds });
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
saveChanges(value) {
|
|
604
|
+
if (value) {
|
|
605
|
+
const selectedCategoryIds = this.selectedIds.concat(this.selectedSubCategoryIds);
|
|
606
|
+
this.saveSelectedProgram.emit({
|
|
607
|
+
program: this.currentProgram,
|
|
608
|
+
categories: [...new Set(selectedCategoryIds)],
|
|
609
|
+
linkedProgram: this.selectedProgramsDetail,
|
|
610
|
+
});
|
|
611
|
+
// this.saveSelectedProgram.emit({ program: this.currentProgram, categories: this.selectedIds });
|
|
612
|
+
}
|
|
613
|
+
else {
|
|
614
|
+
this.displayConfirmationMessage = false;
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
deleteEvent(event) {
|
|
618
|
+
const indexOfProgram = this.selectedProgramsDetail?.findIndex((el) => el?.category_id === event?.category_id);
|
|
619
|
+
if (indexOfProgram !== -1) {
|
|
620
|
+
this.selectedProgramsDetail?.splice(indexOfProgram, 1);
|
|
621
|
+
}
|
|
622
|
+
const indexOfId = this.selectedProgramsId?.findIndex((el) => el === event?._id);
|
|
623
|
+
if (indexOfId !== -1) {
|
|
624
|
+
this.selectedProgramsId?.splice(indexOfId, 1);
|
|
625
|
+
}
|
|
626
|
+
if (this.currentProgram?._id === event?._id) {
|
|
627
|
+
if (this.selectedProgramsDetail?.length) {
|
|
628
|
+
this.currentProgram = this.selectedProgramsDetail[0];
|
|
629
|
+
}
|
|
630
|
+
else {
|
|
631
|
+
this.currentProgram = {};
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
// this.currentProgram = undefined;
|
|
635
|
+
this.showCategories = false;
|
|
636
|
+
this.selectedIds = [];
|
|
637
|
+
this.categoryList = [];
|
|
638
|
+
//As this is a radio list and only one item can be selected thats why we are resetting all the counts to zero
|
|
639
|
+
this.getSelectedProgramCount(false, event?.programType);
|
|
640
|
+
}
|
|
641
|
+
getSelectedProgramCount(event, programType) {
|
|
642
|
+
// switch (this.currentProgram.programType) {
|
|
643
|
+
switch (programType) {
|
|
644
|
+
case 0:
|
|
645
|
+
event
|
|
646
|
+
? this.programData.SelectedOthersProgramsCount++
|
|
647
|
+
: this.programData.SelectedOthersProgramsCount--;
|
|
648
|
+
break;
|
|
649
|
+
case 1:
|
|
650
|
+
event
|
|
651
|
+
? this.programData.SelectedRegulationProgramsCount++
|
|
652
|
+
: this.programData.SelectedRegulationProgramsCount--;
|
|
653
|
+
break;
|
|
654
|
+
case 2:
|
|
655
|
+
event
|
|
656
|
+
? this.programData.SelectedStandardProgramsCount++
|
|
657
|
+
: this.programData.SelectedStandardProgramsCount--;
|
|
658
|
+
break;
|
|
659
|
+
case 3:
|
|
660
|
+
event
|
|
661
|
+
? this.programData.SelectedInternalControlsProgramsCount++
|
|
662
|
+
: this.programData.SelectedInternalControlsProgramsCount--;
|
|
663
|
+
break;
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
/**
|
|
667
|
+
* If the selectedProgram array has a length, then preserve the first element of the array as the
|
|
668
|
+
* preservePrimaryProgram variable. Otherwise, set the preservePrimaryProgram variable to an empty
|
|
669
|
+
* object.
|
|
670
|
+
*
|
|
671
|
+
* If the selectedProgramsId array has a length, then preserve the array as the preservedProgramsId
|
|
672
|
+
* variable. Otherwise, set the preservedProgramsId variable to an empty array.
|
|
673
|
+
*
|
|
674
|
+
* If the selectedProgramsDetail array has a length, then preserve the array as the
|
|
675
|
+
* preservedSelectedPrograms variable. Otherwise, set the preservedSelectedPrograms variable to an
|
|
676
|
+
* empty array.
|
|
677
|
+
*
|
|
678
|
+
* If the selectedProgram array does not have a length, then set the selectedProgramsDetail array to
|
|
679
|
+
* an empty array and the selectedProgramsId array to an empty array.
|
|
680
|
+
*/
|
|
681
|
+
preservePreviousDetails() {
|
|
682
|
+
if (this.selectedProgram[0]?.length || this.currentProgram) {
|
|
683
|
+
this.preservePrimaryProgram = this.selectedProgram?.length
|
|
684
|
+
? JSON.stringify(this.selectedProgram[0])
|
|
685
|
+
: {};
|
|
686
|
+
this.preservedProgramsId = this.selectedProgramsId?.length
|
|
687
|
+
? JSON.stringify(this.selectedProgramsId)
|
|
688
|
+
: [];
|
|
689
|
+
this.preservedSelectedPrograms = this.selectedProgramsDetail
|
|
690
|
+
? JSON.stringify(this.selectedProgramsDetail)
|
|
691
|
+
: [];
|
|
692
|
+
}
|
|
693
|
+
else {
|
|
694
|
+
this.selectedProgramsDetail = [];
|
|
695
|
+
this.selectedProgramsId = [];
|
|
696
|
+
}
|
|
697
|
+
}
|
|
698
|
+
setProgramSubTab(tab) {
|
|
699
|
+
this.programSubTab = tab;
|
|
700
|
+
this.getProgramsList();
|
|
701
|
+
}
|
|
702
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProgramListingComponent, deps: [{ token: i1.ResponsibilityService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
703
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ProgramListingComponent, selector: "app-program-listing", inputs: { programsList: "programsList", selectedProgram: "selectedProgram", openedFrom: "openedFrom", getSelectedCategories: ["selectedCategories", "getSelectedCategories"], responsibilityId: "responsibilityId", feature: "feature", hideProgramsList: "hideProgramsList", mode: "mode", getLinkedProgram: ["linkedProgram", "getLinkedProgram"] }, outputs: { saveSelectedProgram: "saveSelectedProgram", closeEvent: "closeEvent" }, viewQueries: [{ propertyName: "searchProgram", first: true, predicate: ["searchProgram"], descendants: true }, { propertyName: "searchCategory", first: true, predicate: ["searchCategory"], descendants: true }], ngImport: i0, template: "<div class=\"program-listing\" [class.animate]=\"animation\" *ngIf=\"!showCategories && !hideProgramsList\">\r\n <div class=\"program-listing-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\">\r\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select a Program</div>\r\n </div>\r\n <div class=\"program-listing-body\">\r\n <div class=\"filter-card-row\">\r\n <div class=\"filter-card vx-bg-white vx-d-flex vx-justify-between vx-align-center vx-pt-2 vx-pb-2 vx-pl-3 vx-pr-3 vx-w-100\" [class.active]=\"activeTab == 'regulations'\" (click)=\"changeTab('regulations')\">\r\n <div class=\"left\">\r\n <label class=\"vx-paragraph-txt vx-fw-500 vx-tt-uppercase vx-d-flex vx-justify-between vx-align-center\">REGULATIONS</label>\r\n <p *ngIf=\"programData?.SelectedRegulationProgramsCount> 0\">\r\n {{programData?.SelectedRegulationProgramsCount}}\r\n {{(programData?.SelectedRegulationProgramsCount==1)?'Program':'Programs'}} selected\r\n </p>\r\n </div>\r\n <!-- <span class=\"counter\">{{programData?.AllRegulationProgramsCount}}</span> -->\r\n <span class=\"counter\">{{programTabDataCount?.allRegulationProgramsCount}}</span>\r\n </div>\r\n <div class=\"filter-card vx-bg-white vx-d-flex vx-justify-between vx-align-center vx-pt-2 vx-pb-2 vx-pl-3 vx-pr-3 vx-w-100\" [class.active]=\"activeTab == 'standards'\" (click)=\"changeTab('standards')\">\r\n <div class=\"left\">\r\n <label class=\"vx-paragraph-txt vx-fw-500 vx-tt-uppercase vx-d-flex vx-justify-between vx-align-center\">STANDARDS</label>\r\n <p *ngIf=\"programData?.SelectedStandardProgramsCount> 0\">\r\n {{programData?.SelectedStandardProgramsCount}}\r\n {{(programData?.SelectedStandardProgramsCount==1)?'Program':'Programs'}} selected\r\n </p>\r\n </div>\r\n <!-- <span class=\"counter\">{{programData?.AllStandardProgramsCount}}</span> -->\r\n <span class=\"counter\">{{programTabDataCount?.allStandardProgramsCount}}</span>\r\n </div>\r\n <div class=\"filter-card vx-bg-white vx-d-flex vx-justify-between vx-align-center vx-pt-2 vx-pb-2 vx-pl-3 vx-pr-3 vx-w-100\" [class.active]=\"activeTab == 'internal_controls'\"\r\n (click)=\"changeTab('internal_controls')\">\r\n <div class=\"left\">\r\n <label class=\"vx-paragraph-txt vx-fw-500 vx-tt-uppercase vx-d-flex vx-justify-between vx-align-center\">INTERNAL CONTROLS</label>\r\n <p *ngIf=\"programData?.SelectedInternalControlsProgramsCount> 0\">\r\n {{programData?.SelectedInternalControlsProgramsCount}}\r\n {{(programData?.SelectedInternalControlsProgramsCount==1)?'Program':'Programs'}} selected\r\n </p>\r\n </div>\r\n <!-- <span class=\"counter\">{{programData?.AllInternalControlsProgramsCount}}</span> -->\r\n <span class=\"counter\">{{programTabDataCount?.allInternalControlsProgramsCount}}</span>\r\n </div>\r\n <div class=\"filter-card vx-bg-white vx-d-flex vx-justify-between vx-align-center vx-pt-2 vx-pb-2 vx-pl-3 vx-pr-3 vx-w-100\" [class.active]=\"activeTab == 'others'\" (click)=\"changeTab('others')\">\r\n <div class=\"left\">\r\n <label class=\"vx-paragraph-txt vx-fw-500 vx-tt-uppercase vx-d-flex vx-justify-between vx-align-center\">OTHERS</label>\r\n <p *ngIf=\"programData?.SelectedOthersProgramsCount> 0\">\r\n {{programData?.SelectedOthersProgramsCount}}\r\n {{(programData?.SelectedOthersProgramsCount==1)?'Program':'Programs'}} selected\r\n </p>\r\n </div>\r\n <!-- <span class=\"counter\">{{programData?.AllOthersProgramsCount}}</span> -->\r\n <span class=\"counter\">{{programTabDataCount?.allOthersProgramsCount}}</span>\r\n </div>\r\n </div>\r\n <div class=\"search-block\">\r\n <i class=\"icons\"></i>\r\n <input type=\"text\" #searchProgram (keyup.enter)=\"handleSearch($event.target.value)\"\r\n placeholder=\"Search Programs\" />\r\n </div>\r\n <!-- mode === 'EDIT' -->\r\n <div *ngIf=\"mode === 'EDIT' && programData?.AllViewOnlyProgramCount\" class=\"program-listing-tab vx-d-flex vx-align-center\">\r\n <button (click)=\"setProgramSubTab('PROGRAMS')\" class=\"vx-fs-11 vx-fw-600 vx-paragraph-txt vx-tt-uppercase vx-p-0 vx-pb-2 vx-m-0 vx-d-flex vx-align-center vx-lh-4\" [class.active]=\"programSubTab === 'PROGRAMS'\">PROGRAMS <span class=\"count vx-pl-1 vx-pr-1 vx-d-flex vx-align-center vx-justify-center vx-ml-2 vx-lh-4\">{{programData?.AllProgramsCount}}</span></button>\r\n <button (click)=\"setProgramSubTab('OTHER_PROGRAMS')\" class=\"vx-fs-11 vx-fw-600 vx-paragraph-txt vx-tt-uppercase vx-p-0 vx-pb-2 vx-m-0 vx-d-flex vx-align-center vx-lh-4\" [class.active]=\"programSubTab === 'OTHER_PROGRAMS'\">OTHER PROGRAMS <span class=\"count vx-pl-1 vx-pr-1 vx-d-flex vx-align-center vx-justify-center vx-ml-2 vx-lh-4\">{{programData?.AllViewOnlyProgramCount}}</span></button>\r\n </div>\r\n <app-pagination *ngIf=\"programData.totalPages > 1\" [start]=\"programData.from\" [end]=\"programData.to\" [total]=\"programData.totalRecords\" [pageCount]=\"programData.totalPages\" [currentPage]=\"programData.currentPage\" (selectedPage)=\"changePage($event,'program')\"></app-pagination>\r\n <div class=\"program-listing-part vx-mb-4\" [class.with-category-list]=\"!showCategories && !hideProgramsList\" [class.with-pagination]=\"programData.totalPages > 1\">\r\n <app-no-data *ngIf=\"programData?.data?.length===0 && !loader\"\r\n [noDataImage]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/search-data.svg'\"\r\n [noDataText]=\"'No Data Found'\"></app-no-data>\r\n\r\n <div class=\"program-listing-item\" [class.active]=\"showCategories && currentProgram?._id == program?._id\" *ngFor=\"let program of programData.data;let i = index\" [class.final-select]=\"false\">\r\n <!-- after category was select & user move to back and edit then final-select class was show -->\r\n <!-- [class.disabled]=\"currentProgram?._id === program?._id && (mode === 'EDIT' || openedFrom === 'PROGRAM_WORKROOM') && programSubTab !== 'OTHER_PROGRAMS'\" -->\r\n <div class=\"table-row main-list\" [class.active]=\"selectedProgramsId?.includes(program?._id)\" [class.disabled]=\"feature.isFeatureEnabled('ff_deprecate_primary_program_flag') ? false : (currentProgram?._id === program?._id && (mode === 'EDIT' || openedFrom === 'PROGRAM_WORKROOM') && programSubTab !== 'OTHER_PROGRAMS')\">\r\n <div class=\"table-column serial\">\r\n <div class=\"sr-no\" [appTooltip]=\"i+programData.from\" placement=\"bottom\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\">{{i+programData.from}}</div>\r\n <!-- [disabled]=\"currentProgram?._id === program?._id && (mode === 'EDIT' || openedFrom === 'PROGRAM_WORKROOM')\" -->\r\n <app-cs-checkbox\r\n *ngIf=\"programSubTab !== 'OTHER_PROGRAMS'\"\r\n [disabled]=\"feature.isFeatureEnabled('ff_deprecate_primary_program_flag') ? false : (currentProgram?._id === program?._id && (mode === 'EDIT' || openedFrom === 'PROGRAM_WORKROOM'))\"\r\n [ngValue]=\"selectedProgramsId?.includes(program?._id)\"\r\n (ngValueChange)=\"selectProgram($event,program)\"\r\n ></app-cs-checkbox>\r\n <!-- <app-cs-radio [name]=\"'t'\" [checked]=\"currentProgram?._id == program?._id\" (checkedEvent)=\"selectProgram($event.target.checked,program)\"></app-cs-radio> -->\r\n </div>\r\n <div class=\"table-column name\">\r\n <div class=\"name-inner\">\r\n <div class=\"name-with-count\">\r\n <div class=\"value\" [appTooltip]=\"program?.item_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{program?.name}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"table-column primary-program\" >\r\n <ng-container *ngIf=\"!feature.isFeatureEnabled('ff_deprecate_primary_program_flag')\">\r\n <app-cs-switch\r\n *ngIf=\"!(mode === 'EDIT' || openedFrom === 'PROGRAM_WORKROOM') || currentProgram?._id === program?._id\"\r\n [disabled]=\"currentProgram?._id === program?._id\"\r\n [ngValue]='currentProgram?._id === program?._id' \r\n (ngValueChange)=\"setPrimaryProgram($event, program)\"\r\n >{{currentProgram?._id === program?._id ? 'PRIMARY PROGRAM' : 'SET AS PRIMARY PROGRAM'}}</app-cs-switch>\r\n </ng-container>\r\n </div>\r\n <!-- <div class=\"table-column action\">\r\n <button class=\"arrow\" *ngIf=\"program?.child_id?.length\" [class.disabled]=\"false\"\r\n [disabled]=\"false\">\r\n <i *ngIf=\"!(showCategories && currentProgram?._id == program?._id)\"\r\n (click)=\"selectProgram($event,program)\" class=\"icons\"></i>\r\n <i *ngIf=\"showCategories && currentProgram?._id == program?._id\" class=\"icons\"></i>\r\n </button>\r\n </div> -->\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <app-floating-bar *ngIf=\"feature.isFeatureEnabled('ff_deprecate_primary_program_flag')\" [selectedData]=\"(selectedProgramsDetail?.length) ? selectedProgramsDetail : []\" [displayElementKey]=\"'name'\"\r\n [singularText]=\"'Program selected'\" [pluralText]=\"'Programs selected'\" (closeEvent)=\"openCategories()\"\r\n (deleteEvent)=\"deleteEvent($event)\" [isDisabled]=\"((currentProgram?.category_id)?[currentProgram]:[])?.length ? false :true\" (closeList)=\"close()\" [elementId]=\"'category_id'\">\r\n </app-floating-bar>\r\n\r\n <app-floating-bar *ngIf=\"!feature.isFeatureEnabled('ff_deprecate_primary_program_flag')\" [selectedData]=\"(selectedProgramsDetail?.length) ? selectedProgramsDetail : []\" [displayElementKey]=\"'name'\"\r\n [singularText]=\"'Program selected'\" [pluralText]=\"'Programs selected'\" (closeEvent)=\"openCategories()\"\r\n (deleteEvent)=\"deleteEvent($event)\" [isDisabled]=\"((currentProgram?.category_id)?[currentProgram]:[])?.length ? false :true\" (closeList)=\"close()\" [defaultSelected]=\"currentProgram\" [nonRemovableUsersList]=\"(mode === 'EDIT' || openedFrom === 'PROGRAM_WORKROOM') ? viewOnlyProgramsCategoryId : [currentProgram?.category_id]\" [elementId]=\"'category_id'\">\r\n </app-floating-bar>\r\n </div>\r\n <ng-container *ngIf=\"!feature.isFeatureEnabled('ff_deprecate_primary_program_flag')\">\r\n <div class=\"program-listing-confirmation\" *ngIf=\"displayConfirmationMessage\">\r\n <div class=\"confirmation-top\">\r\n <div class=\"icon-block\"><i class=\"icons\"></i></div>\r\n <div class=\"text\">Once you select this Program, all default values associated with this Program will also be updated.</div>\r\n </div>\r\n <div class=\"confirmation-bottom\">\r\n <div class=\"message\">Are you sure you would like to proceed?</div>\r\n <div class=\"button-group\">\r\n <button class=\"no-btn\" (click)=\"saveChanges(false)\">NO</button>\r\n <button class=\"yes-btn\" (click)=\"saveChanges(true)\">YES</button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"program-listing-confirmation\" *ngIf=\"isPrimaryConfirmation && !isPrimaryUnchecked\">\r\n <div class=\"confirmation-top\">\r\n <div class=\"icon-block\"><i class=\"icons\"></i></div>\r\n <div class=\"text\" [innerHTML]=\"primaryConfirmationMessage\"></div>\r\n </div>\r\n <div class=\"confirmation-bottom\">\r\n <div class=\"message\">Are you sure you would like to proceed?</div>\r\n <div class=\"button-group\">\r\n <button class=\"no-btn\" (click)=\"updatePrimaryProgram(false)\">NO</button>\r\n <button class=\"yes-btn\" (click)=\"updatePrimaryProgram(true)\">YES</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"program-listing-confirmation error-confirmation\" *ngIf=\"isPrimaryUnchecked\">\r\n <div class=\"confirmation-top\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"icon-block\"><i class=\"icons\"></i></div>\r\n <div class=\"text vx-pr-4\">You cannot deselect this Program since this is the <em>Primary Program</em> for this responsibility. To proceed, first select another Program as the <em>Primary Program</em>.</div>\r\n </div>\r\n <button class=\"ok-btn\" (click)=\"updatePrimaryProgram(false)\">OK</button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- <app-floating-bar [selectedData]=\"(currentProgram?.category_id)?[currentProgram]:[]\" [displayElementKey]=\"'name'\"\r\n [singularText]=\"'Program selected'\" [pluralText]=\"'Programs selected'\" (closeEvent)=\"openCategories()\"\r\n (deleteEvent)=\"deleteEvent($event)\" [isDisabled]=\"((currentProgram?.category_id)?[currentProgram]:[])?.length ? false :true \" (closeList)=\"close()\">\r\n </app-floating-bar> -->\r\n\r\n <!-- ((currentProgram?.category_id)?[currentProgram]:[])?.length ? false :true -->\r\n\r\n <app-loader *ngIf=\"loader\"></app-loader>\r\n</div>\r\n<div class=\"program-listing\" [class.animate]=\"animation\" *ngIf=\"showCategories || hideProgramsList\">\r\n <div class=\"program-listing-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\">\r\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">\r\n <button class=\"back-btn vx-fs-16 vx-p-0 vx-mr-2\" (click)=\"backToPrograms()\"><i class=\"icons\"></i></button>\r\n <!-- <span *ngIf=\"currentProgram?.name\"> {{currentProgram?.name}} > </span> -->\r\n Program > Select Program Categories\r\n </div>\r\n </div>\r\n <div class=\"program-listing-body\">\r\n <div class=\"search-block\">\r\n <i class=\"icons\"></i>\r\n <input type=\"text\" #searchCategory (keyup.enter)=\"categorySearch($event.target.value)\"\r\n placeholder=\"Search Categories\" />\r\n </div>\r\n <app-pagination *ngIf=\"categoryData.totalPages > 1\" class=\"category-pagination\" [start]=\"categoryData.from\" [end]=\"categoryData.to\" [total]=\"categoryData.totalRecords\" [pageCount]=\"categoryData.totalPages\" [currentPage]=\"categoryData.currentPage\" (selectedPage)=\"changePage($event,'category')\"></app-pagination>\r\n <div class=\"program-listing-part vx-mb-4\" [class.with-category-pagination]=\"categoryData.totalPages > 1\">\r\n <app-no-data *ngIf=\"categoryData?.data?.length===0 && !loader\" [noDataImage]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/search-data.svg'\" [noDataText]=\"'No Data Found'\"></app-no-data>\r\n\r\n <ng-container *ngIf=\"!loader && categoryData.data?.length\">\r\n <ng-container *ngIf=\"false\">\r\n <div class=\"selected-area\" *ngIf=\"!loader && (currentProgram?.name ? categoryData.data?.length : programData?.data?.length)\">\r\n <app-cs-checkbox *ngIf=\"checkCategoriesSelection()=='checked'\" [ngValue]=\"true\" (ngValueChange)=\"selectAllCategories(false)\">Deselect All</app-cs-checkbox>\r\n <app-cs-checkbox-indeterminate *ngIf=\"checkCategoriesSelection()=='indeterminate'\" [ngValue]=\"true\" (ngValueChange)=\"selectAllCategories(false)\">Deselect All</app-cs-checkbox-indeterminate>\r\n <app-cs-checkbox *ngIf=\"checkCategoriesSelection()=='unchecked'\" [ngValue]=\"false\" (ngValueChange)=\"selectAllCategories(true)\">Select All</app-cs-checkbox>\r\n </div>\r\n </ng-container>\r\n <div class=\"table-head\">\r\n <div class=\"table-row\">\r\n <div class=\"table-column serial\">#</div>\r\n <div class=\"table-column category-name\">CATEGORIES</div>\r\n <div class=\"table-column category-within\">WITHIN</div>\r\n </div>\r\n </div>\r\n <div class=\"program-listing-item\" [class.active]=\"subList\" *ngFor=\"let category of categoryData.data;let i = index\" [class.active]=\"selectedIds.includes(category.category_id)\">\r\n <div class=\"table-row main-list\" [class.disabled]=\"false\">\r\n <div class=\"table-column serial\">\r\n <div class=\"sr-no\" [appTooltip]=\"i + categoryData?.from\" placement=\"bottom\" delay=\"0\" type=\"black\"\r\n [tooltipMandatory]=\"true\">{{i + categoryData?.from}}</div>\r\n <app-cs-checkbox [ngValue]=\"selectedIds.includes(category.category_id)\"\r\n (ngValueChange)=\"selectCategory($event,category)\"></app-cs-checkbox>\r\n </div>\r\n <div class=\"table-column category-name\">\r\n <div class=\"name-inner\">\r\n <div class=\"name-with-count\">\r\n <div class=\"value\" [appTooltip]=\"category?.name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{category?.name}}</div>\r\n </div>\r\n <!-- <div class=\"within-part\" *ngIf=\"category?.parent_category_name?.length>0\">\r\n <span class=\"within-box\">Within</span>\r\n <span class=\"value\" [appTooltip]=\"'South Africa > America > India'\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">\r\n <span *ngFor=\"let parent of category?.parent_category_name;let j=index\">{{(j!=(category?.parent_category_name?.length-1))?\r\n parent+' < ':parent}} </span>\r\n </span>\r\n </div> -->\r\n </div>\r\n </div>\r\n <div class=\"table-column category-within\" *ngIf=\"category?.parent_category_name?.length > 0\">\r\n <div *ngFor=\"let parent of category?.parent_category_name; let last = last\" class=\"within-name\" [appTooltip]=\"category?.parent_category_name?.slice()?.reverse()?.join(' > ')\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{parent}} \r\n <span *ngIf=\"!last\"> > </span>\r\n </div>\r\n <div *ngIf=\"category?.parent_category_ids?.includes(currentProgram?.category_id) && !feature.isFeatureEnabled('ff_deprecate_primary_program_flag')\" class=\"primary-label\">PRIMARY</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <app-floating-bar [selectedData]=\"categoryData.selectedCategories\" [displayElementKey]=\"'name'\"\r\n [singularText]=\"'Program Category selected'\"\r\n [pluralText]=\"'Program Categories selected'\" (closeEvent)=\"save()\"\r\n (deleteEvent)=\"removeCategories($event)\" (closeList)=\"backToPrograms()\">\r\n </app-floating-bar>\r\n </div>\r\n <ng-container *ngIf=\"!feature.isFeatureEnabled('ff_deprecate_primary_program_flag')\">\r\n <div class=\"program-listing-confirmation\" *ngIf=\"displayConfirmationMessage\">\r\n <div class=\"confirmation-top\">\r\n <div class=\"icon-block\"><i class=\"icons\"></i></div>\r\n <div class=\"text\">Once you select this Program, all default values associated with this Program will also be updated.</div>\r\n </div>\r\n <div class=\"confirmation-bottom\">\r\n <div class=\"message\">Are you sure you would like to proceed?</div>\r\n <div class=\"button-group\">\r\n <button class=\"no-btn\" (click)=\"saveChanges(false)\">NO</button>\r\n <button class=\"yes-btn\" (click)=\"saveChanges(true)\">YES</button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <app-loader *ngIf=\"loader\"></app-loader>\r\n </div>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .program-listing{position:fixed;inset:0 500px 0 0}::ng-deep .program-listing:before{background:#1e5dd3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}::ng-deep .program-listing.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .program-listing-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .program-listing-head button.back-btn{background:transparent;border-radius:0;border:none;position:relative;top:.125rem}::ng-deep .program-listing-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .program-listing-body .filter-card{box-shadow:0 0 2px #00000029;border-radius:.125rem;height:55px;cursor:pointer}::ng-deep .program-listing-body .filter-card.active{box-shadow:0 3px 12px #1e5dd340;border:none;pointer-events:none}::ng-deep .program-listing-body .filter-card.active span.counter{background:#f1f1f1;color:#042e7d}::ng-deep .program-listing-body .filter-card label{font-weight:500;text-transform:uppercase;color:#747576;line-height:16px;margin-left:0;font-size:11px;width:100%;pointer-events:none}::ng-deep .program-listing-body .filter-card p{line-height:16px;font-size:11px;color:#161b2f;font-weight:600;margin:0}::ng-deep .program-listing-body .filter-card span.counter{display:flex;height:28px;min-width:28px;border-radius:2px;background:#042e7d;color:#fff;font-size:11px;font-weight:600;justify-content:center;align-items:center;padding:0 4px;line-height:28px}::ng-deep .program-listing-body .filter-card .left{display:flex;flex-wrap:wrap}::ng-deep .program-listing-body .filter-card+.filter-card{margin-left:4px}::ng-deep .program-listing-body .filter-card-row{display:flex;padding-bottom:8px}::ng-deep .program-listing-body .search-block{position:relative;margin-bottom:8px}::ng-deep .program-listing-body .search-block input{height:2.75rem;line-height:1.5rem;padding:.5rem 1rem .5rem 2.5rem;outline:none;border:1px solid #7475763f;border-radius:.25rem;width:100%;font-size:14px;color:#747576}::ng-deep .program-listing-body .search-block input::placeholder{font-weight:400}::ng-deep .program-listing-body .search-block input:focus{border-color:#1e5dd3}::ng-deep .program-listing-body .search-block i{position:absolute;left:1rem;top:1rem;pointer-events:none;color:#f1f1f1;font-size:12px}::ng-deep .program-listing-body app-pagination .wk-pagination-sec-ds{padding-top:0!important}::ng-deep .program-listing-body app-pagination.category-pagination .wk-pagination-sec-ds{padding-bottom:0!important}::ng-deep .program-listing-body .program-listing-part{height:calc(100vh - 225px);overflow:auto;padding:0 12px 0 0;width:calc(100% + 12px)}::ng-deep .program-listing-body .program-listing-part::-webkit-scrollbar-track{background-color:#fff;position:absolute}::ng-deep .program-listing-body .program-listing-part::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::ng-deep .program-listing-body .program-listing-part::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}::ng-deep .program-listing-body .program-listing-part.with-pagination{height:calc(100vh - 244px)}::ng-deep .program-listing-body .program-listing-part.with-category-list{height:calc(100vh - 288px)}::ng-deep .program-listing-body .program-listing-part.with-category-list.with-pagination{height:calc(100vh - 324px)}::ng-deep .program-listing-body .program-listing-part.with-category-pagination{height:calc(100vh - 252px)}::ng-deep .program-listing-body .program-listing-part .selected-area{background:#fff;height:32px;position:sticky;top:0;z-index:1}::ng-deep .program-listing-body .program-listing-part .selected-area app-cs-checkbox,::ng-deep .program-listing-body .program-listing-part .selected-area app-cs-checkbox-indeterminate{background:#fff;border-radius:2px;width:100%;height:16px}::ng-deep .program-listing-body .program-listing-part .selected-area app-cs-checkbox .checkbox-item,::ng-deep .program-listing-body .program-listing-part .selected-area app-cs-checkbox-indeterminate .checkbox-item{width:100%;position:relative}::ng-deep .program-listing-body .program-listing-part .selected-area app-cs-checkbox .checkbox-item .checkbox,::ng-deep .program-listing-body .program-listing-part .selected-area app-cs-checkbox-indeterminate .checkbox-item .checkbox,::ng-deep .program-listing-body .program-listing-part .selected-area app-cs-checkbox .checkbox-item .checkmark,::ng-deep .program-listing-body .program-listing-part .selected-area app-cs-checkbox-indeterminate .checkbox-item .checkmark{position:absolute;top:0;left:0}::ng-deep .program-listing-body .program-listing-part .selected-area app-cs-checkbox .checkbox-item .value,::ng-deep .program-listing-body .program-listing-part .selected-area app-cs-checkbox-indeterminate .checkbox-item .value{color:#161b2f;font-size:12px;font-weight:500;margin-left:24px}::ng-deep .program-listing-body .program-listing-part .selected-area app-cs-checkbox-indeterminate .checkbox-item .value{margin-left:0}::ng-deep .program-listing-body .program-listing-part .table-head{background:#fff;position:sticky;top:0;z-index:1}::ng-deep .program-listing-body .program-listing-part .table-head .table-row{display:flex;align-items:center;justify-content:space-between}::ng-deep .program-listing-body .program-listing-part .table-head .table-row .table-column{color:#161b2f;font-size:11px;font-weight:500;height:24px;position:relative;width:100%;display:flex;align-items:center;padding:0 4px;text-transform:uppercase}::ng-deep .program-listing-body .program-listing-part .table-head .table-row .table-column.serial{width:32px;max-width:32px;justify-content:center}::ng-deep .program-listing-body .program-listing-part .table-head .table-row .table-column.name{width:calc(100% - 64px);min-width:calc(100% - 64px)}::ng-deep .program-listing-body .program-listing-part .table-head .table-row .table-column.action{width:32px;max-width:32px;justify-content:center}::ng-deep .program-listing-body .program-listing-part .table-head .table-row .table-column.category-name{width:calc(100% - 332px);min-width:calc(100% - 332px)}::ng-deep .program-listing-body .program-listing-part .table-head .table-row .table-column.category-within{width:300px;min-width:300px}::ng-deep .program-listing-body .program-listing-part .program-listing-item.final-select{background:#fbfbfb}::ng-deep .program-listing-body .program-listing-part .program-listing-item.final-select .table-row .table-column.serial .sr-no{background:transparent}::ng-deep .program-listing-body .program-listing-part .program-listing-item .main-list{border:1px solid #f1f1f1;border-radius:2px;cursor:pointer;margin-bottom:4px}::ng-deep .program-listing-body .program-listing-part .program-listing-item.active .table-row .table-column.serial .sr-no{opacity:0}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row{display:flex;align-items:center;justify-content:space-between}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row.disabled{pointer-events:none}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row.disabled .primary-program app-cs-switch .cs-switch .value{opacity:.4}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row.disabled .name .name-inner .name-with-count .value{color:#dbdbdb!important}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column{color:#747576;height:40px;position:relative;width:100%;display:flex;align-items:center;padding:0 4px}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.serial{width:32px;max-width:32px;justify-content:center}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.serial .sr-no{width:16px;background:#f8f8f8;writing-mode:vertical-lr;color:#747576;font-size:10px;font-weight:500;display:flex;height:100%;align-items:center;justify-content:center;position:relative;transition:all .2s ease-in-out}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.serial app-cs-radio,::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.serial app-cs-checkbox,::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.serial app-cs-checkbox-indeterminate{position:absolute;top:14px;left:8px;opacity:0;transition:all .2s ease-in-out}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.serial app-cs-checkbox,::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.serial app-cs-checkbox-indeterminate{background:#fff;border-radius:2px;width:16px;height:16px;top:12px}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.serial app-cs-checkbox .checkbox-item .checkbox,::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.serial app-cs-checkbox-indeterminate .checkbox-item .checkbox,::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.serial app-cs-checkbox .checkbox-item .checkmark,::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.serial app-cs-checkbox-indeterminate .checkbox-item .checkmark{position:absolute;top:0;left:0}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.name{width:calc(100% - 232px);min-width:calc(100% - 232px)}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.name .name-inner{width:100%}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.name .name-inner .value{color:#161b2f;font-size:12px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding-right:8px}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.name .name-inner .count{background:#1e5dd3;border-radius:20px;color:#fff;font-size:9px;font-weight:500;line-height:16px;min-width:24px;display:inline-block;text-align:center;padding:0 4px}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.name .name-inner .name-with-count{display:flex;align-items:center;width:100%}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.category-name{width:calc(100% - 332px);min-width:calc(100% - 332px)}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.category-name .name-inner{width:100%}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.category-name .name-inner .name-with-count{display:flex;align-items:center;width:100%}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.category-name .name-inner .name-with-count .value{color:#161b2f;font-size:12px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding-right:8px}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.category-within{width:300px;min-width:300px}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.category-within .within-name{color:#747576;font-size:12px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.category-within .primary-label{background:#7aa7f7;border-radius:2px;color:#fff;font-size:9px;font-weight:500;text-transform:uppercase;padding:0 4px;line-height:12px;margin:0 4px}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.primary-program{width:200px;max-width:200px;justify-content:end}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.primary-program app-cs-switch{opacity:0;transition:all .2s ease-in-out}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.primary-program app-cs-switch .cs-switch .value{font-size:11px!important;color:#747576!important;font-weight:500!important;width:auto!important;margin-right:8px;cursor:pointer}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.action{width:32px;max-width:32px;justify-content:center}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.action button.arrow{background:transparent;border:none;border-radius:0;color:#747576;font-size:12px;padding:0;margin:0;display:flex;align-items:center;justify-content:center;height:100%;width:100%}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.action button.disabled{opacity:.5!important;pointer-events:none}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row:hover .table-column.serial app-cs-radio,::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row.active .table-column.serial app-cs-radio,::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row:hover .table-column.serial app-cs-checkbox,::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row.active .table-column.serial app-cs-checkbox,::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row:hover .table-column.serial app-cs-checkbox-indeterminate,::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row.active .table-column.serial app-cs-checkbox-indeterminate{opacity:1}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row:hover .table-column.primary-program app-cs-switch,::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row.active .table-column.primary-program app-cs-switch{opacity:1}::ng-deep .program-listing-body .program-listing-part .program-listing-item .sub-list .table-row{border-top:1px solid #f1f1f1}::ng-deep .program-listing-body .program-listing-part .program-listing-item .sub-list .table-row:hover .table-column.serial .sr-no,::ng-deep .program-listing-body .program-listing-part .program-listing-item .sub-list .table-row.active .table-column.serial .sr-no{color:#f8f8f8}::ng-deep .program-listing-body .program-listing-part .program-listing-item .sub-list .table-row:hover .table-column.serial .sr-no vui-checkbox,::ng-deep .program-listing-body .program-listing-part .program-listing-item .sub-list .table-row.active .table-column.serial .sr-no vui-checkbox{opacity:1}::ng-deep .program-listing-body .program-listing-part .program-listing-item .sub-list .table-row .table-column.name .name-inner .value{color:#747576;font-size:12px}::ng-deep .program-listing-body .program-listing-part .program-listing-item.active .table-row .table-column.serial app-cs-radio,::ng-deep .program-listing-body .program-listing-part .program-listing-item.active .table-row .table-column.serial app-cs-checkbox,::ng-deep .program-listing-body .program-listing-part .program-listing-item.active .table-row .table-column.serial app-cs-checkbox-indeterminate{opacity:1}::ng-deep .program-listing-tab{border-bottom:1px solid #DBDBDB;margin-bottom:8px}::ng-deep .program-listing-tab button{background:transparent;border-radius:0;border:none;border-bottom:3px solid transparent;margin-right:40px!important}::ng-deep .program-listing-tab button span.count{border-radius:20px;color:#74757680;min-width:24px}::ng-deep .program-listing-tab button.active{border-color:#1e5dd3;color:#1e5dd3}::ng-deep .program-listing-tab button.active span.count{background:#1e5dd3;color:#fff;font-weight:500}::ng-deep .program-listing-confirmation{background:#161b2f;border-radius:.25rem;position:absolute;left:2rem;right:2rem;bottom:2rem;z-index:1}::ng-deep .program-listing-confirmation .confirmation-top{display:flex;align-items:center;justify-content:flex-start;padding:1.25rem}::ng-deep .program-listing-confirmation .confirmation-top .icon-block{height:2.25rem;min-width:2.25rem;border-radius:50%;background:#fff;border:1px solid #dbdbdb;display:flex;justify-content:center;align-items:center;margin-right:1rem}::ng-deep .program-listing-confirmation .confirmation-top .icon-block i{color:#eb2424;font-size:12px}::ng-deep .program-listing-confirmation .confirmation-top .text{color:#fff;font-size:14px;font-weight:300}::ng-deep .program-listing-confirmation .confirmation-bottom{background:#282e48;border-radius:0 0 .25rem .25rem;padding:.75rem .75rem .75rem 1.25rem;display:flex;align-items:center;justify-content:space-between}::ng-deep .program-listing-confirmation .confirmation-bottom .message{font-size:14px;font-weight:500;line-height:20px;color:#fff}::ng-deep .program-listing-confirmation .confirmation-bottom .button-group{display:flex}::ng-deep .program-listing-confirmation .confirmation-bottom .button-group button{height:1.5rem;width:4rem;border:1px solid #fff;border-radius:.125rem;display:flex;align-items:center;justify-content:center;line-height:22px;cursor:pointer;font-size:11px;text-transform:uppercase;font-weight:500;padding:0}::ng-deep .program-listing-confirmation .confirmation-bottom .button-group button.no-btn{background:transparent;color:#fff}::ng-deep .program-listing-confirmation .confirmation-bottom .button-group button.yes-btn{background:#fff;color:#1e5dd3;margin-left:.25rem}::ng-deep .program-listing-confirmation.error-confirmation{background:#eb2424}::ng-deep .program-listing-confirmation.error-confirmation .confirmation-top{justify-content:space-between}::ng-deep .program-listing-confirmation.error-confirmation .confirmation-top button{height:1.5rem;width:3rem;border:1px solid #fff;border-radius:.125rem;display:flex;align-items:center;justify-content:center;line-height:22px;cursor:pointer;font-size:11px;text-transform:uppercase;font-weight:500;padding:0}::ng-deep .program-listing-confirmation.error-confirmation .confirmation-top button.ok-btn{background:#fff;color:#eb2424;margin-left:.25rem}::ng-deep .program-listing app-loader .main-loader{position:absolute}.within-part{display:flex;align-items:center;padding-right:12px}.within-part .value{text-overflow:ellipsis!important;white-space:nowrap!important;overflow:hidden!important;font-size:11px!important;color:#747576!important}.within-box{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding:0 4px;margin-right:8px;line-height:12px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.CsCheckboxComponent, selector: "app-cs-checkbox", inputs: ["disabled", "ngValue", "value", "readonly", "oneLine"], outputs: ["ngValueChange"] }, { kind: "component", type: i4.CsSwitchComponent, selector: "app-cs-switch", inputs: ["disabled", "ngValue", "value", "tooltipMessage", "position"], outputs: ["ngValueChange"] }, { kind: "component", type: i5.CsCheckboxIndeterminateComponent, selector: "app-cs-checkbox-indeterminate", inputs: ["disabled", "ngValue", "value"], outputs: ["ngValueChange"] }, { kind: "directive", type: i6.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i7.NoDataComponent, selector: "app-no-data", inputs: ["action", "noDataImage", "noDataText", "noDataButton", "noDataSecButton", "altText", "smallButton", "button"], outputs: ["buttonAction"] }, { kind: "component", type: i8.LoaderComponent, selector: "app-loader" }, { kind: "component", type: i9.PaginationComponent, selector: "app-pagination", inputs: ["activeAlphabet", "pageCount", "start", "end", "total", "currentPage"], outputs: ["selectedPage", "selectedAlphabet"] }, { kind: "component", type: i10.FloatingBarComponent, selector: "app-floating-bar", inputs: ["selectedData", "selectedGroups", "displayElementKey", "elementId", "singularText", "pluralText", "showNextButton", "showFrequencyText", "showWorkflow", "workflowText", "currentFrequency", "isDisabled", "workflowList", "selectedWorkflow", "workflowPlaceHolder", "mode", "defaultSelected", "groupsEnabled", "nonRemovableUsersList", "removePosition"], outputs: ["closeEvent", "deleteEvent", "closeList", "deleteGroupEvent", "workflowTypeChanged"] }] }); }
|
|
704
|
+
}
|
|
705
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProgramListingComponent, decorators: [{
|
|
706
|
+
type: Component,
|
|
707
|
+
args: [{ selector: 'app-program-listing', template: "<div class=\"program-listing\" [class.animate]=\"animation\" *ngIf=\"!showCategories && !hideProgramsList\">\r\n <div class=\"program-listing-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\">\r\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select a Program</div>\r\n </div>\r\n <div class=\"program-listing-body\">\r\n <div class=\"filter-card-row\">\r\n <div class=\"filter-card vx-bg-white vx-d-flex vx-justify-between vx-align-center vx-pt-2 vx-pb-2 vx-pl-3 vx-pr-3 vx-w-100\" [class.active]=\"activeTab == 'regulations'\" (click)=\"changeTab('regulations')\">\r\n <div class=\"left\">\r\n <label class=\"vx-paragraph-txt vx-fw-500 vx-tt-uppercase vx-d-flex vx-justify-between vx-align-center\">REGULATIONS</label>\r\n <p *ngIf=\"programData?.SelectedRegulationProgramsCount> 0\">\r\n {{programData?.SelectedRegulationProgramsCount}}\r\n {{(programData?.SelectedRegulationProgramsCount==1)?'Program':'Programs'}} selected\r\n </p>\r\n </div>\r\n <!-- <span class=\"counter\">{{programData?.AllRegulationProgramsCount}}</span> -->\r\n <span class=\"counter\">{{programTabDataCount?.allRegulationProgramsCount}}</span>\r\n </div>\r\n <div class=\"filter-card vx-bg-white vx-d-flex vx-justify-between vx-align-center vx-pt-2 vx-pb-2 vx-pl-3 vx-pr-3 vx-w-100\" [class.active]=\"activeTab == 'standards'\" (click)=\"changeTab('standards')\">\r\n <div class=\"left\">\r\n <label class=\"vx-paragraph-txt vx-fw-500 vx-tt-uppercase vx-d-flex vx-justify-between vx-align-center\">STANDARDS</label>\r\n <p *ngIf=\"programData?.SelectedStandardProgramsCount> 0\">\r\n {{programData?.SelectedStandardProgramsCount}}\r\n {{(programData?.SelectedStandardProgramsCount==1)?'Program':'Programs'}} selected\r\n </p>\r\n </div>\r\n <!-- <span class=\"counter\">{{programData?.AllStandardProgramsCount}}</span> -->\r\n <span class=\"counter\">{{programTabDataCount?.allStandardProgramsCount}}</span>\r\n </div>\r\n <div class=\"filter-card vx-bg-white vx-d-flex vx-justify-between vx-align-center vx-pt-2 vx-pb-2 vx-pl-3 vx-pr-3 vx-w-100\" [class.active]=\"activeTab == 'internal_controls'\"\r\n (click)=\"changeTab('internal_controls')\">\r\n <div class=\"left\">\r\n <label class=\"vx-paragraph-txt vx-fw-500 vx-tt-uppercase vx-d-flex vx-justify-between vx-align-center\">INTERNAL CONTROLS</label>\r\n <p *ngIf=\"programData?.SelectedInternalControlsProgramsCount> 0\">\r\n {{programData?.SelectedInternalControlsProgramsCount}}\r\n {{(programData?.SelectedInternalControlsProgramsCount==1)?'Program':'Programs'}} selected\r\n </p>\r\n </div>\r\n <!-- <span class=\"counter\">{{programData?.AllInternalControlsProgramsCount}}</span> -->\r\n <span class=\"counter\">{{programTabDataCount?.allInternalControlsProgramsCount}}</span>\r\n </div>\r\n <div class=\"filter-card vx-bg-white vx-d-flex vx-justify-between vx-align-center vx-pt-2 vx-pb-2 vx-pl-3 vx-pr-3 vx-w-100\" [class.active]=\"activeTab == 'others'\" (click)=\"changeTab('others')\">\r\n <div class=\"left\">\r\n <label class=\"vx-paragraph-txt vx-fw-500 vx-tt-uppercase vx-d-flex vx-justify-between vx-align-center\">OTHERS</label>\r\n <p *ngIf=\"programData?.SelectedOthersProgramsCount> 0\">\r\n {{programData?.SelectedOthersProgramsCount}}\r\n {{(programData?.SelectedOthersProgramsCount==1)?'Program':'Programs'}} selected\r\n </p>\r\n </div>\r\n <!-- <span class=\"counter\">{{programData?.AllOthersProgramsCount}}</span> -->\r\n <span class=\"counter\">{{programTabDataCount?.allOthersProgramsCount}}</span>\r\n </div>\r\n </div>\r\n <div class=\"search-block\">\r\n <i class=\"icons\"></i>\r\n <input type=\"text\" #searchProgram (keyup.enter)=\"handleSearch($event.target.value)\"\r\n placeholder=\"Search Programs\" />\r\n </div>\r\n <!-- mode === 'EDIT' -->\r\n <div *ngIf=\"mode === 'EDIT' && programData?.AllViewOnlyProgramCount\" class=\"program-listing-tab vx-d-flex vx-align-center\">\r\n <button (click)=\"setProgramSubTab('PROGRAMS')\" class=\"vx-fs-11 vx-fw-600 vx-paragraph-txt vx-tt-uppercase vx-p-0 vx-pb-2 vx-m-0 vx-d-flex vx-align-center vx-lh-4\" [class.active]=\"programSubTab === 'PROGRAMS'\">PROGRAMS <span class=\"count vx-pl-1 vx-pr-1 vx-d-flex vx-align-center vx-justify-center vx-ml-2 vx-lh-4\">{{programData?.AllProgramsCount}}</span></button>\r\n <button (click)=\"setProgramSubTab('OTHER_PROGRAMS')\" class=\"vx-fs-11 vx-fw-600 vx-paragraph-txt vx-tt-uppercase vx-p-0 vx-pb-2 vx-m-0 vx-d-flex vx-align-center vx-lh-4\" [class.active]=\"programSubTab === 'OTHER_PROGRAMS'\">OTHER PROGRAMS <span class=\"count vx-pl-1 vx-pr-1 vx-d-flex vx-align-center vx-justify-center vx-ml-2 vx-lh-4\">{{programData?.AllViewOnlyProgramCount}}</span></button>\r\n </div>\r\n <app-pagination *ngIf=\"programData.totalPages > 1\" [start]=\"programData.from\" [end]=\"programData.to\" [total]=\"programData.totalRecords\" [pageCount]=\"programData.totalPages\" [currentPage]=\"programData.currentPage\" (selectedPage)=\"changePage($event,'program')\"></app-pagination>\r\n <div class=\"program-listing-part vx-mb-4\" [class.with-category-list]=\"!showCategories && !hideProgramsList\" [class.with-pagination]=\"programData.totalPages > 1\">\r\n <app-no-data *ngIf=\"programData?.data?.length===0 && !loader\"\r\n [noDataImage]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/search-data.svg'\"\r\n [noDataText]=\"'No Data Found'\"></app-no-data>\r\n\r\n <div class=\"program-listing-item\" [class.active]=\"showCategories && currentProgram?._id == program?._id\" *ngFor=\"let program of programData.data;let i = index\" [class.final-select]=\"false\">\r\n <!-- after category was select & user move to back and edit then final-select class was show -->\r\n <!-- [class.disabled]=\"currentProgram?._id === program?._id && (mode === 'EDIT' || openedFrom === 'PROGRAM_WORKROOM') && programSubTab !== 'OTHER_PROGRAMS'\" -->\r\n <div class=\"table-row main-list\" [class.active]=\"selectedProgramsId?.includes(program?._id)\" [class.disabled]=\"feature.isFeatureEnabled('ff_deprecate_primary_program_flag') ? false : (currentProgram?._id === program?._id && (mode === 'EDIT' || openedFrom === 'PROGRAM_WORKROOM') && programSubTab !== 'OTHER_PROGRAMS')\">\r\n <div class=\"table-column serial\">\r\n <div class=\"sr-no\" [appTooltip]=\"i+programData.from\" placement=\"bottom\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\">{{i+programData.from}}</div>\r\n <!-- [disabled]=\"currentProgram?._id === program?._id && (mode === 'EDIT' || openedFrom === 'PROGRAM_WORKROOM')\" -->\r\n <app-cs-checkbox\r\n *ngIf=\"programSubTab !== 'OTHER_PROGRAMS'\"\r\n [disabled]=\"feature.isFeatureEnabled('ff_deprecate_primary_program_flag') ? false : (currentProgram?._id === program?._id && (mode === 'EDIT' || openedFrom === 'PROGRAM_WORKROOM'))\"\r\n [ngValue]=\"selectedProgramsId?.includes(program?._id)\"\r\n (ngValueChange)=\"selectProgram($event,program)\"\r\n ></app-cs-checkbox>\r\n <!-- <app-cs-radio [name]=\"'t'\" [checked]=\"currentProgram?._id == program?._id\" (checkedEvent)=\"selectProgram($event.target.checked,program)\"></app-cs-radio> -->\r\n </div>\r\n <div class=\"table-column name\">\r\n <div class=\"name-inner\">\r\n <div class=\"name-with-count\">\r\n <div class=\"value\" [appTooltip]=\"program?.item_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{program?.name}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"table-column primary-program\" >\r\n <ng-container *ngIf=\"!feature.isFeatureEnabled('ff_deprecate_primary_program_flag')\">\r\n <app-cs-switch\r\n *ngIf=\"!(mode === 'EDIT' || openedFrom === 'PROGRAM_WORKROOM') || currentProgram?._id === program?._id\"\r\n [disabled]=\"currentProgram?._id === program?._id\"\r\n [ngValue]='currentProgram?._id === program?._id' \r\n (ngValueChange)=\"setPrimaryProgram($event, program)\"\r\n >{{currentProgram?._id === program?._id ? 'PRIMARY PROGRAM' : 'SET AS PRIMARY PROGRAM'}}</app-cs-switch>\r\n </ng-container>\r\n </div>\r\n <!-- <div class=\"table-column action\">\r\n <button class=\"arrow\" *ngIf=\"program?.child_id?.length\" [class.disabled]=\"false\"\r\n [disabled]=\"false\">\r\n <i *ngIf=\"!(showCategories && currentProgram?._id == program?._id)\"\r\n (click)=\"selectProgram($event,program)\" class=\"icons\"></i>\r\n <i *ngIf=\"showCategories && currentProgram?._id == program?._id\" class=\"icons\"></i>\r\n </button>\r\n </div> -->\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <app-floating-bar *ngIf=\"feature.isFeatureEnabled('ff_deprecate_primary_program_flag')\" [selectedData]=\"(selectedProgramsDetail?.length) ? selectedProgramsDetail : []\" [displayElementKey]=\"'name'\"\r\n [singularText]=\"'Program selected'\" [pluralText]=\"'Programs selected'\" (closeEvent)=\"openCategories()\"\r\n (deleteEvent)=\"deleteEvent($event)\" [isDisabled]=\"((currentProgram?.category_id)?[currentProgram]:[])?.length ? false :true\" (closeList)=\"close()\" [elementId]=\"'category_id'\">\r\n </app-floating-bar>\r\n\r\n <app-floating-bar *ngIf=\"!feature.isFeatureEnabled('ff_deprecate_primary_program_flag')\" [selectedData]=\"(selectedProgramsDetail?.length) ? selectedProgramsDetail : []\" [displayElementKey]=\"'name'\"\r\n [singularText]=\"'Program selected'\" [pluralText]=\"'Programs selected'\" (closeEvent)=\"openCategories()\"\r\n (deleteEvent)=\"deleteEvent($event)\" [isDisabled]=\"((currentProgram?.category_id)?[currentProgram]:[])?.length ? false :true\" (closeList)=\"close()\" [defaultSelected]=\"currentProgram\" [nonRemovableUsersList]=\"(mode === 'EDIT' || openedFrom === 'PROGRAM_WORKROOM') ? viewOnlyProgramsCategoryId : [currentProgram?.category_id]\" [elementId]=\"'category_id'\">\r\n </app-floating-bar>\r\n </div>\r\n <ng-container *ngIf=\"!feature.isFeatureEnabled('ff_deprecate_primary_program_flag')\">\r\n <div class=\"program-listing-confirmation\" *ngIf=\"displayConfirmationMessage\">\r\n <div class=\"confirmation-top\">\r\n <div class=\"icon-block\"><i class=\"icons\"></i></div>\r\n <div class=\"text\">Once you select this Program, all default values associated with this Program will also be updated.</div>\r\n </div>\r\n <div class=\"confirmation-bottom\">\r\n <div class=\"message\">Are you sure you would like to proceed?</div>\r\n <div class=\"button-group\">\r\n <button class=\"no-btn\" (click)=\"saveChanges(false)\">NO</button>\r\n <button class=\"yes-btn\" (click)=\"saveChanges(true)\">YES</button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"program-listing-confirmation\" *ngIf=\"isPrimaryConfirmation && !isPrimaryUnchecked\">\r\n <div class=\"confirmation-top\">\r\n <div class=\"icon-block\"><i class=\"icons\"></i></div>\r\n <div class=\"text\" [innerHTML]=\"primaryConfirmationMessage\"></div>\r\n </div>\r\n <div class=\"confirmation-bottom\">\r\n <div class=\"message\">Are you sure you would like to proceed?</div>\r\n <div class=\"button-group\">\r\n <button class=\"no-btn\" (click)=\"updatePrimaryProgram(false)\">NO</button>\r\n <button class=\"yes-btn\" (click)=\"updatePrimaryProgram(true)\">YES</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"program-listing-confirmation error-confirmation\" *ngIf=\"isPrimaryUnchecked\">\r\n <div class=\"confirmation-top\">\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"icon-block\"><i class=\"icons\"></i></div>\r\n <div class=\"text vx-pr-4\">You cannot deselect this Program since this is the <em>Primary Program</em> for this responsibility. To proceed, first select another Program as the <em>Primary Program</em>.</div>\r\n </div>\r\n <button class=\"ok-btn\" (click)=\"updatePrimaryProgram(false)\">OK</button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- <app-floating-bar [selectedData]=\"(currentProgram?.category_id)?[currentProgram]:[]\" [displayElementKey]=\"'name'\"\r\n [singularText]=\"'Program selected'\" [pluralText]=\"'Programs selected'\" (closeEvent)=\"openCategories()\"\r\n (deleteEvent)=\"deleteEvent($event)\" [isDisabled]=\"((currentProgram?.category_id)?[currentProgram]:[])?.length ? false :true \" (closeList)=\"close()\">\r\n </app-floating-bar> -->\r\n\r\n <!-- ((currentProgram?.category_id)?[currentProgram]:[])?.length ? false :true -->\r\n\r\n <app-loader *ngIf=\"loader\"></app-loader>\r\n</div>\r\n<div class=\"program-listing\" [class.animate]=\"animation\" *ngIf=\"showCategories || hideProgramsList\">\r\n <div class=\"program-listing-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\">\r\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">\r\n <button class=\"back-btn vx-fs-16 vx-p-0 vx-mr-2\" (click)=\"backToPrograms()\"><i class=\"icons\"></i></button>\r\n <!-- <span *ngIf=\"currentProgram?.name\"> {{currentProgram?.name}} > </span> -->\r\n Program > Select Program Categories\r\n </div>\r\n </div>\r\n <div class=\"program-listing-body\">\r\n <div class=\"search-block\">\r\n <i class=\"icons\"></i>\r\n <input type=\"text\" #searchCategory (keyup.enter)=\"categorySearch($event.target.value)\"\r\n placeholder=\"Search Categories\" />\r\n </div>\r\n <app-pagination *ngIf=\"categoryData.totalPages > 1\" class=\"category-pagination\" [start]=\"categoryData.from\" [end]=\"categoryData.to\" [total]=\"categoryData.totalRecords\" [pageCount]=\"categoryData.totalPages\" [currentPage]=\"categoryData.currentPage\" (selectedPage)=\"changePage($event,'category')\"></app-pagination>\r\n <div class=\"program-listing-part vx-mb-4\" [class.with-category-pagination]=\"categoryData.totalPages > 1\">\r\n <app-no-data *ngIf=\"categoryData?.data?.length===0 && !loader\" [noDataImage]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/search-data.svg'\" [noDataText]=\"'No Data Found'\"></app-no-data>\r\n\r\n <ng-container *ngIf=\"!loader && categoryData.data?.length\">\r\n <ng-container *ngIf=\"false\">\r\n <div class=\"selected-area\" *ngIf=\"!loader && (currentProgram?.name ? categoryData.data?.length : programData?.data?.length)\">\r\n <app-cs-checkbox *ngIf=\"checkCategoriesSelection()=='checked'\" [ngValue]=\"true\" (ngValueChange)=\"selectAllCategories(false)\">Deselect All</app-cs-checkbox>\r\n <app-cs-checkbox-indeterminate *ngIf=\"checkCategoriesSelection()=='indeterminate'\" [ngValue]=\"true\" (ngValueChange)=\"selectAllCategories(false)\">Deselect All</app-cs-checkbox-indeterminate>\r\n <app-cs-checkbox *ngIf=\"checkCategoriesSelection()=='unchecked'\" [ngValue]=\"false\" (ngValueChange)=\"selectAllCategories(true)\">Select All</app-cs-checkbox>\r\n </div>\r\n </ng-container>\r\n <div class=\"table-head\">\r\n <div class=\"table-row\">\r\n <div class=\"table-column serial\">#</div>\r\n <div class=\"table-column category-name\">CATEGORIES</div>\r\n <div class=\"table-column category-within\">WITHIN</div>\r\n </div>\r\n </div>\r\n <div class=\"program-listing-item\" [class.active]=\"subList\" *ngFor=\"let category of categoryData.data;let i = index\" [class.active]=\"selectedIds.includes(category.category_id)\">\r\n <div class=\"table-row main-list\" [class.disabled]=\"false\">\r\n <div class=\"table-column serial\">\r\n <div class=\"sr-no\" [appTooltip]=\"i + categoryData?.from\" placement=\"bottom\" delay=\"0\" type=\"black\"\r\n [tooltipMandatory]=\"true\">{{i + categoryData?.from}}</div>\r\n <app-cs-checkbox [ngValue]=\"selectedIds.includes(category.category_id)\"\r\n (ngValueChange)=\"selectCategory($event,category)\"></app-cs-checkbox>\r\n </div>\r\n <div class=\"table-column category-name\">\r\n <div class=\"name-inner\">\r\n <div class=\"name-with-count\">\r\n <div class=\"value\" [appTooltip]=\"category?.name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{category?.name}}</div>\r\n </div>\r\n <!-- <div class=\"within-part\" *ngIf=\"category?.parent_category_name?.length>0\">\r\n <span class=\"within-box\">Within</span>\r\n <span class=\"value\" [appTooltip]=\"'South Africa > America > India'\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">\r\n <span *ngFor=\"let parent of category?.parent_category_name;let j=index\">{{(j!=(category?.parent_category_name?.length-1))?\r\n parent+' < ':parent}} </span>\r\n </span>\r\n </div> -->\r\n </div>\r\n </div>\r\n <div class=\"table-column category-within\" *ngIf=\"category?.parent_category_name?.length > 0\">\r\n <div *ngFor=\"let parent of category?.parent_category_name; let last = last\" class=\"within-name\" [appTooltip]=\"category?.parent_category_name?.slice()?.reverse()?.join(' > ')\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{parent}} \r\n <span *ngIf=\"!last\"> > </span>\r\n </div>\r\n <div *ngIf=\"category?.parent_category_ids?.includes(currentProgram?.category_id) && !feature.isFeatureEnabled('ff_deprecate_primary_program_flag')\" class=\"primary-label\">PRIMARY</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <app-floating-bar [selectedData]=\"categoryData.selectedCategories\" [displayElementKey]=\"'name'\"\r\n [singularText]=\"'Program Category selected'\"\r\n [pluralText]=\"'Program Categories selected'\" (closeEvent)=\"save()\"\r\n (deleteEvent)=\"removeCategories($event)\" (closeList)=\"backToPrograms()\">\r\n </app-floating-bar>\r\n </div>\r\n <ng-container *ngIf=\"!feature.isFeatureEnabled('ff_deprecate_primary_program_flag')\">\r\n <div class=\"program-listing-confirmation\" *ngIf=\"displayConfirmationMessage\">\r\n <div class=\"confirmation-top\">\r\n <div class=\"icon-block\"><i class=\"icons\"></i></div>\r\n <div class=\"text\">Once you select this Program, all default values associated with this Program will also be updated.</div>\r\n </div>\r\n <div class=\"confirmation-bottom\">\r\n <div class=\"message\">Are you sure you would like to proceed?</div>\r\n <div class=\"button-group\">\r\n <button class=\"no-btn\" (click)=\"saveChanges(false)\">NO</button>\r\n <button class=\"yes-btn\" (click)=\"saveChanges(true)\">YES</button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <app-loader *ngIf=\"loader\"></app-loader>\r\n </div>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .program-listing{position:fixed;inset:0 500px 0 0}::ng-deep .program-listing:before{background:#1e5dd3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}::ng-deep .program-listing.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .program-listing-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .program-listing-head button.back-btn{background:transparent;border-radius:0;border:none;position:relative;top:.125rem}::ng-deep .program-listing-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .program-listing-body .filter-card{box-shadow:0 0 2px #00000029;border-radius:.125rem;height:55px;cursor:pointer}::ng-deep .program-listing-body .filter-card.active{box-shadow:0 3px 12px #1e5dd340;border:none;pointer-events:none}::ng-deep .program-listing-body .filter-card.active span.counter{background:#f1f1f1;color:#042e7d}::ng-deep .program-listing-body .filter-card label{font-weight:500;text-transform:uppercase;color:#747576;line-height:16px;margin-left:0;font-size:11px;width:100%;pointer-events:none}::ng-deep .program-listing-body .filter-card p{line-height:16px;font-size:11px;color:#161b2f;font-weight:600;margin:0}::ng-deep .program-listing-body .filter-card span.counter{display:flex;height:28px;min-width:28px;border-radius:2px;background:#042e7d;color:#fff;font-size:11px;font-weight:600;justify-content:center;align-items:center;padding:0 4px;line-height:28px}::ng-deep .program-listing-body .filter-card .left{display:flex;flex-wrap:wrap}::ng-deep .program-listing-body .filter-card+.filter-card{margin-left:4px}::ng-deep .program-listing-body .filter-card-row{display:flex;padding-bottom:8px}::ng-deep .program-listing-body .search-block{position:relative;margin-bottom:8px}::ng-deep .program-listing-body .search-block input{height:2.75rem;line-height:1.5rem;padding:.5rem 1rem .5rem 2.5rem;outline:none;border:1px solid #7475763f;border-radius:.25rem;width:100%;font-size:14px;color:#747576}::ng-deep .program-listing-body .search-block input::placeholder{font-weight:400}::ng-deep .program-listing-body .search-block input:focus{border-color:#1e5dd3}::ng-deep .program-listing-body .search-block i{position:absolute;left:1rem;top:1rem;pointer-events:none;color:#f1f1f1;font-size:12px}::ng-deep .program-listing-body app-pagination .wk-pagination-sec-ds{padding-top:0!important}::ng-deep .program-listing-body app-pagination.category-pagination .wk-pagination-sec-ds{padding-bottom:0!important}::ng-deep .program-listing-body .program-listing-part{height:calc(100vh - 225px);overflow:auto;padding:0 12px 0 0;width:calc(100% + 12px)}::ng-deep .program-listing-body .program-listing-part::-webkit-scrollbar-track{background-color:#fff;position:absolute}::ng-deep .program-listing-body .program-listing-part::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::ng-deep .program-listing-body .program-listing-part::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}::ng-deep .program-listing-body .program-listing-part.with-pagination{height:calc(100vh - 244px)}::ng-deep .program-listing-body .program-listing-part.with-category-list{height:calc(100vh - 288px)}::ng-deep .program-listing-body .program-listing-part.with-category-list.with-pagination{height:calc(100vh - 324px)}::ng-deep .program-listing-body .program-listing-part.with-category-pagination{height:calc(100vh - 252px)}::ng-deep .program-listing-body .program-listing-part .selected-area{background:#fff;height:32px;position:sticky;top:0;z-index:1}::ng-deep .program-listing-body .program-listing-part .selected-area app-cs-checkbox,::ng-deep .program-listing-body .program-listing-part .selected-area app-cs-checkbox-indeterminate{background:#fff;border-radius:2px;width:100%;height:16px}::ng-deep .program-listing-body .program-listing-part .selected-area app-cs-checkbox .checkbox-item,::ng-deep .program-listing-body .program-listing-part .selected-area app-cs-checkbox-indeterminate .checkbox-item{width:100%;position:relative}::ng-deep .program-listing-body .program-listing-part .selected-area app-cs-checkbox .checkbox-item .checkbox,::ng-deep .program-listing-body .program-listing-part .selected-area app-cs-checkbox-indeterminate .checkbox-item .checkbox,::ng-deep .program-listing-body .program-listing-part .selected-area app-cs-checkbox .checkbox-item .checkmark,::ng-deep .program-listing-body .program-listing-part .selected-area app-cs-checkbox-indeterminate .checkbox-item .checkmark{position:absolute;top:0;left:0}::ng-deep .program-listing-body .program-listing-part .selected-area app-cs-checkbox .checkbox-item .value,::ng-deep .program-listing-body .program-listing-part .selected-area app-cs-checkbox-indeterminate .checkbox-item .value{color:#161b2f;font-size:12px;font-weight:500;margin-left:24px}::ng-deep .program-listing-body .program-listing-part .selected-area app-cs-checkbox-indeterminate .checkbox-item .value{margin-left:0}::ng-deep .program-listing-body .program-listing-part .table-head{background:#fff;position:sticky;top:0;z-index:1}::ng-deep .program-listing-body .program-listing-part .table-head .table-row{display:flex;align-items:center;justify-content:space-between}::ng-deep .program-listing-body .program-listing-part .table-head .table-row .table-column{color:#161b2f;font-size:11px;font-weight:500;height:24px;position:relative;width:100%;display:flex;align-items:center;padding:0 4px;text-transform:uppercase}::ng-deep .program-listing-body .program-listing-part .table-head .table-row .table-column.serial{width:32px;max-width:32px;justify-content:center}::ng-deep .program-listing-body .program-listing-part .table-head .table-row .table-column.name{width:calc(100% - 64px);min-width:calc(100% - 64px)}::ng-deep .program-listing-body .program-listing-part .table-head .table-row .table-column.action{width:32px;max-width:32px;justify-content:center}::ng-deep .program-listing-body .program-listing-part .table-head .table-row .table-column.category-name{width:calc(100% - 332px);min-width:calc(100% - 332px)}::ng-deep .program-listing-body .program-listing-part .table-head .table-row .table-column.category-within{width:300px;min-width:300px}::ng-deep .program-listing-body .program-listing-part .program-listing-item.final-select{background:#fbfbfb}::ng-deep .program-listing-body .program-listing-part .program-listing-item.final-select .table-row .table-column.serial .sr-no{background:transparent}::ng-deep .program-listing-body .program-listing-part .program-listing-item .main-list{border:1px solid #f1f1f1;border-radius:2px;cursor:pointer;margin-bottom:4px}::ng-deep .program-listing-body .program-listing-part .program-listing-item.active .table-row .table-column.serial .sr-no{opacity:0}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row{display:flex;align-items:center;justify-content:space-between}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row.disabled{pointer-events:none}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row.disabled .primary-program app-cs-switch .cs-switch .value{opacity:.4}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row.disabled .name .name-inner .name-with-count .value{color:#dbdbdb!important}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column{color:#747576;height:40px;position:relative;width:100%;display:flex;align-items:center;padding:0 4px}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.serial{width:32px;max-width:32px;justify-content:center}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.serial .sr-no{width:16px;background:#f8f8f8;writing-mode:vertical-lr;color:#747576;font-size:10px;font-weight:500;display:flex;height:100%;align-items:center;justify-content:center;position:relative;transition:all .2s ease-in-out}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.serial app-cs-radio,::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.serial app-cs-checkbox,::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.serial app-cs-checkbox-indeterminate{position:absolute;top:14px;left:8px;opacity:0;transition:all .2s ease-in-out}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.serial app-cs-checkbox,::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.serial app-cs-checkbox-indeterminate{background:#fff;border-radius:2px;width:16px;height:16px;top:12px}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.serial app-cs-checkbox .checkbox-item .checkbox,::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.serial app-cs-checkbox-indeterminate .checkbox-item .checkbox,::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.serial app-cs-checkbox .checkbox-item .checkmark,::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.serial app-cs-checkbox-indeterminate .checkbox-item .checkmark{position:absolute;top:0;left:0}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.name{width:calc(100% - 232px);min-width:calc(100% - 232px)}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.name .name-inner{width:100%}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.name .name-inner .value{color:#161b2f;font-size:12px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding-right:8px}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.name .name-inner .count{background:#1e5dd3;border-radius:20px;color:#fff;font-size:9px;font-weight:500;line-height:16px;min-width:24px;display:inline-block;text-align:center;padding:0 4px}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.name .name-inner .name-with-count{display:flex;align-items:center;width:100%}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.category-name{width:calc(100% - 332px);min-width:calc(100% - 332px)}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.category-name .name-inner{width:100%}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.category-name .name-inner .name-with-count{display:flex;align-items:center;width:100%}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.category-name .name-inner .name-with-count .value{color:#161b2f;font-size:12px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding-right:8px}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.category-within{width:300px;min-width:300px}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.category-within .within-name{color:#747576;font-size:12px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.category-within .primary-label{background:#7aa7f7;border-radius:2px;color:#fff;font-size:9px;font-weight:500;text-transform:uppercase;padding:0 4px;line-height:12px;margin:0 4px}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.primary-program{width:200px;max-width:200px;justify-content:end}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.primary-program app-cs-switch{opacity:0;transition:all .2s ease-in-out}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.primary-program app-cs-switch .cs-switch .value{font-size:11px!important;color:#747576!important;font-weight:500!important;width:auto!important;margin-right:8px;cursor:pointer}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.action{width:32px;max-width:32px;justify-content:center}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.action button.arrow{background:transparent;border:none;border-radius:0;color:#747576;font-size:12px;padding:0;margin:0;display:flex;align-items:center;justify-content:center;height:100%;width:100%}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row .table-column.action button.disabled{opacity:.5!important;pointer-events:none}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row:hover .table-column.serial app-cs-radio,::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row.active .table-column.serial app-cs-radio,::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row:hover .table-column.serial app-cs-checkbox,::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row.active .table-column.serial app-cs-checkbox,::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row:hover .table-column.serial app-cs-checkbox-indeterminate,::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row.active .table-column.serial app-cs-checkbox-indeterminate{opacity:1}::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row:hover .table-column.primary-program app-cs-switch,::ng-deep .program-listing-body .program-listing-part .program-listing-item .table-row.active .table-column.primary-program app-cs-switch{opacity:1}::ng-deep .program-listing-body .program-listing-part .program-listing-item .sub-list .table-row{border-top:1px solid #f1f1f1}::ng-deep .program-listing-body .program-listing-part .program-listing-item .sub-list .table-row:hover .table-column.serial .sr-no,::ng-deep .program-listing-body .program-listing-part .program-listing-item .sub-list .table-row.active .table-column.serial .sr-no{color:#f8f8f8}::ng-deep .program-listing-body .program-listing-part .program-listing-item .sub-list .table-row:hover .table-column.serial .sr-no vui-checkbox,::ng-deep .program-listing-body .program-listing-part .program-listing-item .sub-list .table-row.active .table-column.serial .sr-no vui-checkbox{opacity:1}::ng-deep .program-listing-body .program-listing-part .program-listing-item .sub-list .table-row .table-column.name .name-inner .value{color:#747576;font-size:12px}::ng-deep .program-listing-body .program-listing-part .program-listing-item.active .table-row .table-column.serial app-cs-radio,::ng-deep .program-listing-body .program-listing-part .program-listing-item.active .table-row .table-column.serial app-cs-checkbox,::ng-deep .program-listing-body .program-listing-part .program-listing-item.active .table-row .table-column.serial app-cs-checkbox-indeterminate{opacity:1}::ng-deep .program-listing-tab{border-bottom:1px solid #DBDBDB;margin-bottom:8px}::ng-deep .program-listing-tab button{background:transparent;border-radius:0;border:none;border-bottom:3px solid transparent;margin-right:40px!important}::ng-deep .program-listing-tab button span.count{border-radius:20px;color:#74757680;min-width:24px}::ng-deep .program-listing-tab button.active{border-color:#1e5dd3;color:#1e5dd3}::ng-deep .program-listing-tab button.active span.count{background:#1e5dd3;color:#fff;font-weight:500}::ng-deep .program-listing-confirmation{background:#161b2f;border-radius:.25rem;position:absolute;left:2rem;right:2rem;bottom:2rem;z-index:1}::ng-deep .program-listing-confirmation .confirmation-top{display:flex;align-items:center;justify-content:flex-start;padding:1.25rem}::ng-deep .program-listing-confirmation .confirmation-top .icon-block{height:2.25rem;min-width:2.25rem;border-radius:50%;background:#fff;border:1px solid #dbdbdb;display:flex;justify-content:center;align-items:center;margin-right:1rem}::ng-deep .program-listing-confirmation .confirmation-top .icon-block i{color:#eb2424;font-size:12px}::ng-deep .program-listing-confirmation .confirmation-top .text{color:#fff;font-size:14px;font-weight:300}::ng-deep .program-listing-confirmation .confirmation-bottom{background:#282e48;border-radius:0 0 .25rem .25rem;padding:.75rem .75rem .75rem 1.25rem;display:flex;align-items:center;justify-content:space-between}::ng-deep .program-listing-confirmation .confirmation-bottom .message{font-size:14px;font-weight:500;line-height:20px;color:#fff}::ng-deep .program-listing-confirmation .confirmation-bottom .button-group{display:flex}::ng-deep .program-listing-confirmation .confirmation-bottom .button-group button{height:1.5rem;width:4rem;border:1px solid #fff;border-radius:.125rem;display:flex;align-items:center;justify-content:center;line-height:22px;cursor:pointer;font-size:11px;text-transform:uppercase;font-weight:500;padding:0}::ng-deep .program-listing-confirmation .confirmation-bottom .button-group button.no-btn{background:transparent;color:#fff}::ng-deep .program-listing-confirmation .confirmation-bottom .button-group button.yes-btn{background:#fff;color:#1e5dd3;margin-left:.25rem}::ng-deep .program-listing-confirmation.error-confirmation{background:#eb2424}::ng-deep .program-listing-confirmation.error-confirmation .confirmation-top{justify-content:space-between}::ng-deep .program-listing-confirmation.error-confirmation .confirmation-top button{height:1.5rem;width:3rem;border:1px solid #fff;border-radius:.125rem;display:flex;align-items:center;justify-content:center;line-height:22px;cursor:pointer;font-size:11px;text-transform:uppercase;font-weight:500;padding:0}::ng-deep .program-listing-confirmation.error-confirmation .confirmation-top button.ok-btn{background:#fff;color:#eb2424;margin-left:.25rem}::ng-deep .program-listing app-loader .main-loader{position:absolute}.within-part{display:flex;align-items:center;padding-right:12px}.within-part .value{text-overflow:ellipsis!important;white-space:nowrap!important;overflow:hidden!important;font-size:11px!important;color:#747576!important}.within-box{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding:0 4px;margin-right:8px;line-height:12px}\n"] }]
|
|
708
|
+
}], ctorParameters: function () { return [{ type: i1.ResponsibilityService }]; }, propDecorators: { programsList: [{
|
|
709
|
+
type: Input
|
|
710
|
+
}], selectedProgram: [{
|
|
711
|
+
type: Input
|
|
712
|
+
}], openedFrom: [{
|
|
713
|
+
type: Input
|
|
714
|
+
}], getSelectedCategories: [{
|
|
715
|
+
type: Input,
|
|
716
|
+
args: ['selectedCategories']
|
|
717
|
+
}], responsibilityId: [{
|
|
718
|
+
type: Input
|
|
719
|
+
}], feature: [{
|
|
720
|
+
type: Input
|
|
721
|
+
}], hideProgramsList: [{
|
|
722
|
+
type: Input
|
|
723
|
+
}], mode: [{
|
|
724
|
+
type: Input
|
|
725
|
+
}], searchProgram: [{
|
|
726
|
+
type: ViewChild,
|
|
727
|
+
args: ['searchProgram']
|
|
728
|
+
}], searchCategory: [{
|
|
729
|
+
type: ViewChild,
|
|
730
|
+
args: ['searchCategory']
|
|
731
|
+
}], getLinkedProgram: [{
|
|
732
|
+
type: Input,
|
|
733
|
+
args: ['linkedProgram']
|
|
734
|
+
}], saveSelectedProgram: [{
|
|
735
|
+
type: Output
|
|
736
|
+
}], closeEvent: [{
|
|
737
|
+
type: Output
|
|
738
|
+
}] } });
|
|
739
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbS1saXN0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvcHJvZ3JhbS1saXN0aW5nL3Byb2dyYW0tbGlzdGluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL3Byb2dyYW0tbGlzdGluZy9wcm9ncmFtLWxpc3RpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7QUFTdkIsTUFBTSxPQUFPLHVCQUF1QjtJQWFsQyxJQUFpQyxxQkFBcUIsQ0FBQyxRQUFhO1FBQ2xFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxRQUFRLENBQUM7UUFDbkMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQWFELElBQTRCLGdCQUFnQixDQUFDLE9BQVk7UUFDdkQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQywwQkFBMEIsR0FBRyxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLE9BQU8sQ0FBQztRQUN0QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDL0MsSUFBSSxDQUFDLGtCQUFrQixD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QkFBcUI7c0JBQXJELEtBQUs7dUJBQUMsb0JBQW9CO2dCQUlsQixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ3NCLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFDRyxjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFNQyxnQkFBZ0I7c0JBQTNDLEtBQUs7dUJBQUMsZUFBZTtnQkFtRlosbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJlc3BvbnNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uL3dvcmtmbG93LXNlcnZpY2VzL3Jlc3BvbnNpYmlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBjYXRlZ29yeUxpc3QsIHByb2dyYW1MaXN0IH0gZnJvbSAnLi9wcm9ncmFtLWxpc3QtbW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcHJvZ3JhbS1saXN0aW5nJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZ3JhbS1saXN0aW5nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wcm9ncmFtLWxpc3RpbmcuY29tcG9uZW50Lmxlc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFByb2dyYW1MaXN0aW5nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBhbmltYXRpb24gPSBmYWxzZTtcclxuICBzdWJMaXN0ID0gZmFsc2U7XHJcbiAgbG9hZGVyID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHJvZ3JhbXNMaXN0OiBhbnk7XHJcbiAgLy8gQElucHV0KCkgYWxsUHJvZ3JhbXM6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRQcm9ncmFtITogYW55O1xyXG4gIEBJbnB1dCgpIG9wZW5lZEZyb206IHN0cmluZyA9ICcnO1xyXG4gIC8vIEBJbnB1dCgpIHNlbGVjdGVkQ2F0ZWdvcmllczogYW55W10gPSBbXTtcclxuXHJcbiAgdmlld09ubHlQcm9ncmFtc0NhdGVnb3J5SWQ6IGFueVtdID0gW107XHJcbiAgc2VsZWN0ZWRDYXRlZ29yaWVzOiBhbnlbXSA9IFtdO1xyXG4gIHRlbXBTZWxlY3RlZENhdGVnb3JpZXM6IGFueSA9IFtdO1xyXG4gIEBJbnB1dCgnc2VsZWN0ZWRDYXRlZ29yaWVzJykgc2V0IGdldFNlbGVjdGVkQ2F0ZWdvcmllcyhjYXRlZ29yeTogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcmllcyA9IGNhdGVnb3J5O1xyXG4gICAgdGhpcy50ZW1wU2VsZWN0ZWRDYXRlZ29yaWVzID0gSlNPTi5zdHJpbmdpZnkoY2F0ZWdvcnkpO1xyXG4gIH1cclxuICBASW5wdXQoKSByZXNwb25zaWJpbGl0eUlkID0gJyc7XHJcbiAgQElucHV0KCkgZmVhdHVyZSE6IGFueTtcclxuXHJcbiAgQElucHV0KCkgaGlkZVByb2dyYW1zTGlzdCE6IGFueTtcclxuICBASW5wdXQoKSBtb2RlOiBzdHJpbmcgPSAnQ1JFQVRFJztcclxuICBAVmlld0NoaWxkKCdzZWFyY2hQcm9ncmFtJykgc2VhcmNoUHJvZ3JhbSE6IGFueTtcclxuICBAVmlld0NoaWxkKCdzZWFyY2hDYXRlZ29yeScpIHNlYXJjaENhdGVnb3J5ITogYW55O1xyXG5cclxuICBwcmVzZXJ2ZWRTZWxlY3RlZFByb2dyYW1zOiBhbnk7XHJcbiAgcHJlc2VydmVkUHJvZ3JhbXNJZDogYW55O1xyXG4gIHByZXNlcnZlUHJpbWFyeVByb2dyYW06IGFueTtcclxuXHJcbiAgQElucHV0KCdsaW5rZWRQcm9ncmFtJykgc2V0IGdldExpbmtlZFByb2dyYW0ocHJvZ3JhbTogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNEZXRhaWwgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0lkID0gW107XHJcbiAgICB0aGlzLnZpZXdPbmx5UHJvZ3JhbXNDYXRlZ29yeUlkID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNEZXRhaWwgPSBwcm9ncmFtO1xyXG4gICAgdGhpcy5zZWxlY3RlZFByb2dyYW1zRGV0YWlsLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0lkLnB1c2goZWxlPy5faWQpO1xyXG4gICAgICB0aGlzLmdldFNlbGVjdGVkUHJvZ3JhbUNvdW50KHRydWUsIGVsZT8ucHJvZ3JhbVR5cGUpO1xyXG4gICAgICBlbGU/LmlzVmlld09ubHlQcm9ncmFtXHJcbiAgICAgICAgPyB0aGlzLnZpZXdPbmx5UHJvZ3JhbXNDYXRlZ29yeUlkPy5wdXNoKGVsZT8uY2F0ZWdvcnlfaWQpXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcmV2aW91c1NlbGVjdGVkVmFsdWVzOiBhbnkgPSB7XHJcbiAgICBwcm9ncmFtOiB7fSxcclxuICAgIGNhdGVnb3JpZXM6IFtdLFxyXG4gIH07XHJcbiAgcHJvZ3JhbURhdGE6IHByb2dyYW1MaXN0ID0ge1xyXG4gICAgZGF0YTogW10sXHJcbiAgICBmcm9tOiAwLFxyXG4gICAgdG86IDAsXHJcbiAgICB0b3RhbFBhZ2VzOiAwLFxyXG4gICAgdG90YWxSZWNvcmRzOiAwLFxyXG4gICAgY3VycmVudFBhZ2U6IDEsXHJcbiAgICBBbGxJbnRlcm5hbENvbnRyb2xzUHJvZ3JhbXNDb3VudDogMCxcclxuICAgIEFsbE90aGVyc1Byb2dyYW1zQ291bnQ6IDAsXHJcbiAgICBBbGxSZWd1bGF0aW9uUHJvZ3JhbXNDb3VudDogMCxcclxuICAgIEFsbFN0YW5kYXJkUHJvZ3JhbXNDb3VudDogMCxcclxuICAgIFNlbGVjdGVkSW50ZXJuYWxDb250cm9sc1Byb2dyYW1zQ291bnQ6IDAsXHJcbiAgICBTZWxlY3RlZE90aGVyc1Byb2dyYW1zQ291bnQ6IDAsXHJcbiAgICBTZWxlY3RlZFJlZ3VsYXRpb25Qcm9ncmFtc0NvdW50OiAwLFxyXG4gICAgU2VsZWN0ZWRTdGFuZGFyZFByb2dyYW1zQ291bnQ6IDAsXHJcbiAgICBBbGxQcm9ncmFtc0NvdW50OiAwLFxyXG4gICAgQWxsVmlld09ubHlQcm9ncmFtQ291bnQ6IDAsXHJcbiAgfTtcclxuXHJcbiAgcHJvZ3JhbVRhYkRhdGFDb3VudDogYW55ID0ge1xyXG4gICAgYWxsSW50ZXJuYWxDb250cm9sc1Byb2dyYW1zQ291bnQ6IDAsXHJcbiAgICBhbGxPdGhlcnNQcm9ncmFtc0NvdW50OiAwLFxyXG4gICAgYWxsUmVndWxhdGlvblByb2dyYW1zQ291bnQ6IDAsXHJcbiAgICBhbGxTdGFuZGFyZFByb2dyYW1zQ291bnQ6IDAsXHJcbiAgfTtcclxuXHJcbiAgY2F0ZWdvcnlEYXRhOiBjYXRlZ29yeUxpc3QgPSB7XHJcbiAgICBkYXRhOiBbXSxcclxuICAgIGZyb206IDAsXHJcbiAgICB0bzogMCxcclxuICAgIHRvdGFsUGFnZXM6IDAsXHJcbiAgICB0b3RhbFJlY29yZHM6IDAsXHJcbiAgICBjdXJyZW50UGFnZTogMSxcclxuICAgIHNlbGVjdGVkQ2F0ZWdvcmllczogW10sXHJcbiAgfTtcclxuXHJcbiAgc2hvd0NhdGVnb3JpZXMgPSBmYWxzZTtcclxuICBjdXJyZW50UHJvZ3JhbSE6IGFueTtcclxuICBzZWFyY2hTdHJpbmc6IHN0cmluZyA9ICcnO1xyXG4gIGNhdGVnb3J5U2VhcmNoU3RyaW5nOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgYWN0aXZlVGFiOiAncmVndWxhdGlvbnMnIHwgJ3N0YW5kYXJkcycgfCAnaW50ZXJuYWxfY29udHJvbHMnIHwgJ290aGVycycgPVxyXG4gICAgJ3JlZ3VsYXRpb25zJztcclxuICBzZWxlY3RlZElkczogYW55W10gPSBbXTtcclxuICBjYXRlZ29yeUxpc3Q6IGFueVtdID0gW107XHJcbiAgYmxvY2tXaWR0aDogYW55O1xyXG5cclxuICBwcm9ncmFtVHlwZU9iamVjdCA9IHtcclxuICAgIHJlZ3VsYXRpb25zOiAxLFxyXG4gICAgc3RhbmRhcmRzOiAyLFxyXG4gICAgaW50ZXJuYWxfY29udHJvbHM6IDMsXHJcbiAgICBvdGhlcnM6IDAsXHJcbiAgfTtcclxuXHJcbiAgZGlzcGxheUNvbmZpcm1hdGlvbk1lc3NhZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB0ZW1wUHJpbWFyeVByb2dyYW06IGFueSA9IHt9O1xyXG4gIHByaW1hcnlDb25maXJtYXRpb25NZXNzYWdlOiBzdHJpbmcgPSBgT25jZSBjb25maXJtZWQsIHRoZSA8ZW0+UHJpbWFyeSBQcm9ncmFtPC9lbT4gZm9yIHRoaXMgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSBjaGFuZ2VkLiBIZW5jZSwgYWxsIHRoZSBkZWZhdWx0IHNldHRpbmdzIHJlbGF0ZWQgdG8gdGhlIG5ldyA8ZW0+UHJpbWFyeSBQcm9ncmFtPC9lbT4gd2lsbCBub3cgYXBwbHkgdG8gdGhpcyByZXNwb25zaWJpbGl0eS5gO1xyXG4gIGlzUHJpbWFyeUNvbmZpcm1hdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzVW5jaGVja2VkUHJvZ3JhbTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzUHJpbWFyeVVuY2hlY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkUHJvZ3JhbXNEZXRhaWw6IGFueSA9IFtdO1xyXG4gIHNlbGVjdGVkUHJvZ3JhbXNJZDogYW55ID0gW107XHJcbiAgcHJvZ3JhbUNvdW50TG9hZGVyID0gZmFsc2U7XHJcbiAgZGVwcmVjYXRlUHJpbWFyeVByb2dyYW1GbGFnID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSBzYXZlU2VsZWN0ZWRQcm9ncmFtID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjbG9zZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGFsbENhdGVnb3JpZXM6IGFueVtdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVzcG9uc2liaWxpdHlTZXJ2aWNlOiBSZXNwb25zaWJpbGl0eVNlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXByZWNhdGVQcmltYXJ5UHJvZ3JhbUZsYWcgPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcclxuICAgICAgJ2ZmX2RlcHJlY2F0ZV9wcmltYXJ5X3Byb2dyYW1fZmxhZydcclxuICAgICk7XHJcbiAgICB0aGlzLmFuaW1hdGlvbiA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5hbmltYXRpb24gPSBmYWxzZTtcclxuICAgIH0sIDMwMCk7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFByb2dyYW0gJiYgdGhpcy5zZWxlY3RlZFByb2dyYW1bMF0pIHtcclxuICAgICAgdGhpcy5jdXJyZW50UHJvZ3JhbSA9IHRoaXMuc2VsZWN0ZWRQcm9ncmFtWzBdO1xyXG4gICAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcgfHwgdGhpcy5vcGVuZWRGcm9tID09PSAnUFJPR1JBTV9XT1JLUk9PTScpIHtcclxuICAgICAgICB0aGlzLnZpZXdPbmx5UHJvZ3JhbXNDYXRlZ29yeUlkPy5wdXNoKHRoaXMuY3VycmVudFByb2dyYW0/LmNhdGVnb3J5X2lkKTtcclxuICAgICAgfVxyXG4gICAgICBzd2l0Y2ggKHRoaXMuY3VycmVudFByb2dyYW0/LnByb2dyYW1UeXBlKSB7XHJcbiAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSAnb3RoZXJzJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgIHRoaXMuYWN0aXZlVGFiID0gJ3JlZ3VsYXRpb25zJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgIHRoaXMuYWN0aXZlVGFiID0gJ3N0YW5kYXJkcyc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDM6XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZVRhYiA9ICdpbnRlcm5hbF9jb250cm9scyc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSAncmVndWxhdGlvbnMnO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5nZXRTZWxlY3RlZFByb2dyYW1Db3VudCgpO1xyXG4gICAgICAvLyBpZiAodGhpcy5zZWxlY3RlZENhdGVnb3JpZXM/Lmxlbmd0aCAmJiB0aGlzLmN1cnJlbnRQcm9ncmFtKSB7XHJcbiAgICAgIHRoaXMucG9wdWxhdGVDYXRlZ29yaWVzKCk7XHJcbiAgICAgIC8vIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5oaWRlUHJvZ3JhbXNMaXN0KSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0lkPy5wdXNoKHRoaXMuc2VsZWN0ZWRQcm9ncmFtWzBdPy5faWQpO1xyXG4gICAgICB0aGlzLmdldENhdGVnb3JpZXNMaXN0KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdldFByb2dyYW1zTGlzdCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRQcm9ncmFtc0NvdW50KCk7XHJcblxyXG4gICAgdGhpcy5wcmV2aW91c1NlbGVjdGVkVmFsdWVzID0ge1xyXG4gICAgICBwcm9ncmFtczogdGhpcy5jdXJyZW50UHJvZ3JhbSxcclxuICAgICAgY2F0ZWdvcmllczogdGhpcy5zZWxlY3RlZENhdGVnb3JpZXMubGVuZ3RoXHJcbiAgICAgICAgPyBbLi4ubmV3IFNldCh0aGlzLnNlbGVjdGVkQ2F0ZWdvcmllcyldXHJcbiAgICAgICAgOiBbXSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5wcmVzZXJ2ZVByZXZpb3VzRGV0YWlscygpO1xyXG4gIH1cclxuICBwb3B1bGF0ZUNhdGVnb3JpZXMoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSWRzID0gW107XHJcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgIC8vIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3Byb2dyYW1faWQnLCB0aGlzLmN1cnJlbnRQcm9ncmFtLl9pZCk7XHJcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdpc1BhZ2luYXRpb24nLCBmYWxzZSk7XHJcbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUlkKSB7XHJcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3JlcG9ydElkJywgdGhpcy5yZXNwb25zaWJpbGl0eUlkKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZVxyXG4gICAgICAuZ2V0UHJvZ3JhbXNMaXN0KHBhcmFtcywgdGhpcy5zZWxlY3RlZFByb2dyYW1zSWQpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgYWxsQ2F0ZWdvcmllcyA9IHJlcy5kYXRhO1xyXG5cclxuICAgICAgICAgIHRoaXMuY2F0ZWdvcnlEYXRhLnNlbGVjdGVkQ2F0ZWdvcmllcyA9IGFsbENhdGVnb3JpZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZWxlOiBhbnkpID0+IHRoaXMuc2VsZWN0ZWRDYXRlZ29yaWVzLmluY2x1ZGVzKGVsZS5jYXRlZ29yeV9pZClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmNhdGVnb3J5RGF0YS5zZWxlY3RlZENhdGVnb3JpZXMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJZHMucHVzaChlbGVtZW50LmNhdGVnb3J5X2lkKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZVNlYXJjaChldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5zZWFyY2hTdHJpbmcgIT0gZXZlbnQpIHtcclxuICAgICAgdGhpcy5wcm9ncmFtRGF0YS5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gZXZlbnQ7XHJcbiAgICAgIHRoaXMuZ2V0UHJvZ3JhbXNMaXN0KHsgc2VhcmNoOiB0cnVlIH0pO1xyXG4gICAgICB0aGlzLmdldFByb2dyYW1zQ291bnQoeyBzZWFyY2g6IHRydWUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNhdGVnb3J5U2VhcmNoKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmNhdGVnb3J5U2VhcmNoU3RyaW5nICE9IGV2ZW50KSB7XHJcbiAgICAgIHRoaXMuY2F0ZWdvcnlEYXRhLmN1cnJlbnRQYWdlID0gMTtcclxuICAgICAgdGhpcy5jYXRlZ29yeVNlYXJjaFN0cmluZyA9IGV2ZW50O1xyXG4gICAgICB0aGlzLmdldENhdGVnb3JpZXNMaXN0KHsgc2VhcmNoOiB0cnVlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0UHJvZ3JhbShldmVudDogYW55LCBwcm9ncmFtOiBhbnkpIHtcclxuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRQcm9ncmFtcyhldmVudCwgcHJvZ3JhbSk7XHJcbiAgICAvLyB0aGlzLmdldFNlbGVjdGVkUHJvZ3JhbUNvdW50KGV2ZW50LCBwcm9ncmFtPy5wcm9ncmFtVHlwZSk7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgaWYgKCF0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfZGVwcmVjYXRlX3ByaW1hcnlfcHJvZ3JhbV9mbGFnJykpIHtcclxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmN1cnJlbnRQcm9ncmFtID8/IHt9KS5sZW5ndGhcclxuICAgICAgICAgID8gbnVsbFxyXG4gICAgICAgICAgOiAodGhpcy5jdXJyZW50UHJvZ3JhbSA9IHByb2dyYW0pO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIHRoaXMuY3VycmVudFByb2dyYW0gPSBwcm9ncmFtO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSWRzID0gW107XHJcbiAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0ID0gW107XHJcbiAgICAgIC8vIHRoaXMuZ2V0U2VsZWN0ZWRQcm9ncmFtQ291bnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHRoZSBldmVudCBpcyB0cnVlLCB0aGVuIHB1c2ggdGhlIHByb2dyYW0gdG8gdGhlIHNlbGVjdGVkUHJvZ3JhbXNEZXRhaWwgYXJyYXkuIElmIHRoZSBldmVudCBpc1xyXG4gICAqIGZhbHNlLCB0aGVuIHJlbW92ZSB0aGUgcHJvZ3JhbSBmcm9tIHRoZSBzZWxlY3RlZFByb2dyYW1zRGV0YWlsIGFycmF5LlxyXG4gICAqIEBwYXJhbSB7YW55fSBldmVudCAtIGJvb2xlYW5cclxuICAgKiBAcGFyYW0ge2FueX0gcHJvZ3JhbSAtIGFueSA9IHtcclxuICAgKi9cclxuICB1cGRhdGVTZWxlY3RlZFByb2dyYW1zKGV2ZW50OiBhbnksIHByb2dyYW06IGFueSkge1xyXG4gICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgIGNvbnN0IGluZGV4T2ZQcm9ncmFtID0gdGhpcy5zZWxlY3RlZFByb2dyYW1zRGV0YWlsPy5maW5kSW5kZXgoXHJcbiAgICAgICAgKGVsOiBhbnkpID0+IGVsPy5jYXRlZ29yeV9pZCA9PT0gcHJvZ3JhbT8uY2F0ZWdvcnlfaWRcclxuICAgICAgKTtcclxuICAgICAgaWYgKGluZGV4T2ZQcm9ncmFtID09PSAtMSAmJiBPYmplY3Qua2V5cyhwcm9ncmFtKT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW1zSWQ/LnB1c2gocHJvZ3JhbT8uX2lkKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNEZXRhaWw/LnB1c2gocHJvZ3JhbSk7XHJcbiAgICAgICAgdGhpcy5nZXRTZWxlY3RlZFByb2dyYW1Db3VudChldmVudCwgcHJvZ3JhbT8ucHJvZ3JhbVR5cGUpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBpbmRleE9mUHJvZ3JhbSA9IHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0RldGFpbD8uZmluZEluZGV4KFxyXG4gICAgICAgIChlbDogYW55KSA9PiBlbD8uY2F0ZWdvcnlfaWQgPT09IHByb2dyYW0/LmNhdGVnb3J5X2lkXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChpbmRleE9mUHJvZ3JhbSAhPT0gLTEpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNEZXRhaWw/LnNwbGljZShpbmRleE9mUHJvZ3JhbSwgMSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgaW5kZXhPZklkID0gdGhpcy5zZWxlY3RlZFByb2dyYW1zSWQ/LmZpbmRJbmRleChcclxuICAgICAgICAoZWw6IGFueSkgPT4gZWwgPT09IHByb2dyYW0/Ll9pZFxyXG4gICAgICApO1xyXG4gICAgICBpZiAoaW5kZXhPZklkICE9PSAtMSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0lkPy5zcGxpY2UoaW5kZXhPZklkLCAxKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlzUHJpbWFyeVVuY2hlY2tlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuY3VycmVudFByb2dyYW0gJiZcclxuICAgICAgICB0aGlzLmN1cnJlbnRQcm9ncmFtPy5jYXRlZ29yeV9pZCA9PT0gcHJvZ3JhbT8uY2F0ZWdvcnlfaWRcclxuICAgICAgKSB7XHJcbiAgICAgICAgLy8gdGhpcy5wcmltYXJ5Q29uZmlybWF0aW9uTWVzc2FnZSA9ICdZb3UgY2Fubm90IGRlc2VsZWN0IHRoaXMgUHJvZ3JhbSBzaW5jZSB0aGlzIGlzIHRoZSA8ZW0+UHJpbWFyeSBQcm9ncmFtPC9lbT4gZm9yIHRoaXMgcmVzcG9uc2liaWxpdHkuIFRvIHByb2NlZWQsIGZpcnN0IHNlbGVjdCBhbm90aGVyIFByb2dyYW0gYXMgdGhlIDxlbT5QcmltYXJ5IFByb2dyYW08L2VtPi4nO1xyXG4gICAgICAgIHRoaXMuaXNQcmltYXJ5Q29uZmlybWF0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzUHJpbWFyeVVuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy50ZW1wUHJpbWFyeVByb2dyYW0gPSBKU09OLnN0cmluZ2lmeShwcm9ncmFtKTtcclxuICAgICAgICAvLyB0aGlzLmN1cnJlbnRQcm9ncmFtID0gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyB9XHJcbiAgICAgIHRoaXMuZ2V0U2VsZWN0ZWRQcm9ncmFtQ291bnQoZXZlbnQsIHByb2dyYW0/LnByb2dyYW1UeXBlKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkUHJvZ3JhbXNEZXRhaWw/Lmxlbmd0aCAmJiAhdGhpcy5jdXJyZW50UHJvZ3JhbT8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFByb2dyYW0gPSB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNEZXRhaWxbMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRQcm9ncmFtID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJZiB0aGUgY3VycmVudFByb2dyYW0gaXMgc2V0LCB0aGVuIHNldCB0aGUgY3VycmVudFByb2dyYW0gdG8gdGhlIHByb2dyYW0gcGFzc2VkIGluLCBhbmQgc2V0IHRoZVxyXG4gICAqIHRlbXBQcmltYXJ5UHJvZ3JhbSB0byB0aGUgY3VycmVudFByb2dyYW0uXHJcbiAgICogSWYgdGhlIGN1cnJlbnRQcm9ncmFtIGlzIG5vdCBzZXQsIHRoZW4gc2V0IHRoZSBjdXJyZW50UHJvZ3JhbSB0byB0aGUgcHJvZ3JhbSBwYXNzZWQgaW4uXHJcbiAgICogQHBhcmFtIHthbnl9IGV2ZW50IC0gYW55IC0gdGhlIGV2ZW50IHRoYXQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgY2xpY2tzIG9uIHRoZSBjaGVja2JveFxyXG4gICAqIEBwYXJhbSB7YW55fSBwcm9ncmFtIC0gdGhlIHByb2dyYW0gdGhhdCBpcyBiZWluZyBzZWxlY3RlZFxyXG4gICAqL1xyXG4gIHNldFByaW1hcnlQcm9ncmFtKGV2ZW50OiBhbnksIHByb2dyYW06IGFueSkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFByb2dyYW0pIHtcclxuICAgICAgY29uc3QgY3VycmVudFRlbXAgPSB0aGlzLmN1cnJlbnRQcm9ncmFtO1xyXG4gICAgICB0aGlzLnRlbXBQcmltYXJ5UHJvZ3JhbSA9IEpTT04uc3RyaW5naWZ5KGN1cnJlbnRUZW1wKTtcclxuICAgICAgdGhpcy5jdXJyZW50UHJvZ3JhbSA9IHByb2dyYW07XHJcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRQcm9ncmFtcyh0cnVlLCBwcm9ncmFtKTtcclxuICAgICAgaWYgKCFldmVudCkge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFByb2dyYW0gPSB7fTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnByaW1hcnlDb25maXJtYXRpb25NZXNzYWdlID1cclxuICAgICAgICAnT25jZSBjb25maXJtZWQsIHRoZSA8ZW0+UHJpbWFyeSBQcm9ncmFtPC9lbT4gZm9yIHRoaXMgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSBjaGFuZ2VkLiBIZW5jZSwgYWxsIHRoZSBkZWZhdWx0IHNldHRpbmdzIHJlbGF0ZWQgdG8gdGhlIG5ldyA8ZW0+UHJpbWFyeSBQcm9ncmFtPC9lbT4gd2lsbCBub3cgYXBwbHkgdG8gdGhpcyByZXNwb25zaWJpbGl0eS4nO1xyXG4gICAgICB0aGlzLmlzUHJpbWFyeUNvbmZpcm1hdGlvbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoZXZlbnQgJiYgIXRoaXMuY3VycmVudFByb2dyYW0pIHtcclxuICAgICAgdGhpcy5jdXJyZW50UHJvZ3JhbSA9IHByb2dyYW07XHJcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRQcm9ncmFtcyh0cnVlLCBwcm9ncmFtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHRoZSB1c2VyIGNsaWNrcyBcIlllc1wiIG9uIHRoZSBjb25maXJtYXRpb24gbW9kYWwsIHRoZW4gdGhlIGZ1bmN0aW9uIHdpbGwgcmVtb3ZlIHRoZSBwcm9ncmFtIGZyb21cclxuICAgKiB0aGUgc2VsZWN0ZWRQcm9ncmFtc0RldGFpbCBhcnJheSBhbmQgdGhlIHNlbGVjdGVkUHJvZ3JhbXNJZCBhcnJheS4gSWYgdGhlIHVzZXIgY2xpY2tzIFwiTm9cIiBvbiB0aGVcclxuICAgKiBjb25maXJtYXRpb24gbW9kYWwsIHRoZW4gdGhlIGZ1bmN0aW9uIHdpbGwgZG8gbm90aGluZy5cclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGV2ZW50IC0gYm9vbGVhbiAtJmd0OyB0aGlzIGlzIHRoZSB2YWx1ZSBvZiB0aGUgY2hlY2tib3hcclxuICAgKi9cclxuICB1cGRhdGVQcmltYXJ5UHJvZ3JhbShldmVudDogYm9vbGVhbikge1xyXG4gICAgaWYgKGV2ZW50ICYmIHRoaXMuaXNQcmltYXJ5VW5jaGVja2VkKSB7XHJcbiAgICAgIGNvbnN0IGluZGV4T2ZQcm9ncmFtID0gdGhpcy5zZWxlY3RlZFByb2dyYW1zRGV0YWlsPy5maW5kSW5kZXgoXHJcbiAgICAgICAgKGVsOiBhbnkpID0+XHJcbiAgICAgICAgICBlbD8uY2F0ZWdvcnlfaWQgPT09XHJcbiAgICAgICAgICBKU09OLnBhcnNlKHRoaXMudGVtcFByaW1hcnlQcm9ncmFtID8/IHt9KT8uY2F0ZWdvcnlfaWRcclxuICAgICAgKTtcclxuICAgICAgaWYgKGluZGV4T2ZQcm9ncmFtICE9PSAtMSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0RldGFpbD8uc3BsaWNlKGluZGV4T2ZQcm9ncmFtLCAxKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBpbmRleE9mSWQgPSB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNJZD8uZmluZEluZGV4KFxyXG4gICAgICAgIChlbDogYW55KSA9PiBlbCA9PT0gSlNPTi5wYXJzZSh0aGlzLnRlbXBQcmltYXJ5UHJvZ3JhbSA/PyB7fSk/Ll9pZFxyXG4gICAgICApO1xyXG4gICAgICBpZiAoaW5kZXhPZklkICE9PSAtMSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0lkPy5zcGxpY2UoaW5kZXhPZklkLCAxKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlzUHJpbWFyeUNvbmZpcm1hdGlvbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmN1cnJlbnRQcm9ncmFtID0ge307XHJcbiAgICB9IGVsc2UgaWYgKCFldmVudCAmJiB0aGlzLmlzUHJpbWFyeVVuY2hlY2tlZCkge1xyXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkUHJvZ3JhbXMoXHJcbiAgICAgICAgdHJ1ZSxcclxuICAgICAgICB0aGlzLnRlbXBQcmltYXJ5UHJvZ3JhbT8ubGVuZ3RoXHJcbiAgICAgICAgICA/IEpTT04ucGFyc2UodGhpcy50ZW1wUHJpbWFyeVByb2dyYW0gPz8ge30pXHJcbiAgICAgICAgICA6IHt9XHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuY3VycmVudFByb2dyYW0gPSB0aGlzLnRlbXBQcmltYXJ5UHJvZ3JhbT8ubGVuZ3RoXHJcbiAgICAgICAgPyBKU09OLnBhcnNlKHRoaXMudGVtcFByaW1hcnlQcm9ncmFtID8/IHt9KVxyXG4gICAgICAgIDoge307XHJcbiAgICAgIHRoaXMuaXNQcmltYXJ5Q29uZmlybWF0aW9uID0gZmFsc2U7XHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50KSB7XHJcbiAgICAgIC8vIHRoaXMuY3VycmVudFByb2dyYW0gPSB0aGlzLmlzUHJpbWFyeVVuY2hlY2tlZCA/IHt9IDogSlNPTi5wYXJzZSh0aGlzLnRlbXBQcmltYXJ5UHJvZ3JhbSk7XHJcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRQcm9ncmFtcyhcclxuICAgICAgICB0aGlzLmlzUHJpbWFyeVVuY2hlY2tlZCA/IGZhbHNlIDogdHJ1ZSxcclxuICAgICAgICB0aGlzLnRlbXBQcmltYXJ5UHJvZ3JhbT8ubGVuZ3RoXHJcbiAgICAgICAgICA/IEpTT04ucGFyc2UodGhpcy50ZW1wUHJpbWFyeVByb2dyYW0gPz8ge30pXHJcbiAgICAgICAgICA6IHt9XHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuaXNQcmltYXJ5Q29uZmlybWF0aW9uID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgY3VycmVudFByaW1hcnkgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmN1cnJlbnRQcm9ncmFtKTtcclxuICAgICAgdGhpcy5jdXJyZW50UHJvZ3JhbSA9IHt9O1xyXG4gICAgICAvLyB0aGlzLnVwZGF0ZVNlbGVjdGVkUHJvZ3JhbXMoZmFsc2UsIEpTT04ucGFyc2UoY3VycmVudFByaW1hcnkpPz8ge30pO1xyXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkUHJvZ3JhbXModHJ1ZSwgSlNPTi5wYXJzZShjdXJyZW50UHJpbWFyeSkgPz8ge30pO1xyXG4gICAgICB0aGlzLmN1cnJlbnRQcm9ncmFtID0gdGhpcy50ZW1wUHJpbWFyeVByb2dyYW0/Lmxlbmd0aFxyXG4gICAgICAgID8gSlNPTi5wYXJzZSh0aGlzLnRlbXBQcmltYXJ5UHJvZ3JhbSA/PyB7fSlcclxuICAgICAgICA6IHt9O1xyXG4gICAgICB0aGlzLmlzUHJpbWFyeUNvbmZpcm1hdGlvbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc1ByaW1hcnlVbmNoZWNrZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHNlbGVjdEFsbENhdGVnb3JpZXModmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSWRzID0gW107XHJcbiAgICAgIHRoaXMuY2F0ZWdvcnlEYXRhLnNlbGVjdGVkQ2F0ZWdvcmllcyA9IFtdO1xyXG4gICAgICBpZiAodGhpcy5jYXRlZ29yeURhdGEudG90YWxQYWdlcyA8IDIpIHtcclxuICAgICAgICB0aGlzLmNhdGVnb3J5RGF0YS5kYXRhLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSWRzLnB1c2goZWxlLmNhdGVnb3J5X2lkKTtcclxuICAgICAgICAgIHRoaXMuY2F0ZWdvcnlEYXRhLnNlbGVjdGVkQ2F0ZWdvcmllcy5wdXNoKGVsZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgICAgIC8vIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3Byb2dyYW1faWQnLCB0aGlzLmN1cnJlbnRQcm9ncmFtPy5faWQpO1xyXG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ2lzUGFnaW5hdGlvbicsIGZhbHNlKTtcclxuICAgICAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUlkKSB7XHJcbiAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdyZXBvcnRJZCcsIHRoaXMucmVzcG9uc2liaWxpdHlJZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZVxyXG4gICAgICAgICAgLmdldFByb2dyYW1zTGlzdChwYXJhbXMsIHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0lkKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFsbENhdGVnb3JpZXMgPSByZXMuZGF0YTtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5jYXRlZ29yeURhdGEuc2VsZWN0ZWRDYXRlZ29yaWVzID0gcmVzLmRhdGE7XHJcbiAgICAgICAgICAgICAgYWxsQ2F0ZWdvcmllcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJZHMucHVzaChlbGVtZW50LmNhdGVnb3J5X2lkKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2F0ZWdvcnlEYXRhLnNlbGVjdGVkQ2F0ZWdvcmllcyA9IFtdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSWRzID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja0NhdGVnb3JpZXNTZWxlY3Rpb24oKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuY2F0ZWdvcnlEYXRhLnNlbGVjdGVkQ2F0ZWdvcmllcy5sZW5ndGggPT1cclxuICAgICAgdGhpcy5jYXRlZ29yeURhdGEudG90YWxSZWNvcmRzXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuICdjaGVja2VkJztcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuY2F0ZWdvcnlEYXRhLnNlbGVjdGVkQ2F0ZWdvcmllcy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuICd1bmNoZWNrZWQnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICdpbmRldGVybWluYXRlJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5DYXRlZ29yaWVzKCkge1xyXG4gICAgdGhpcy5zZWFyY2hTdHJpbmcgPSAnJztcclxuICAgIHRoaXMuY2F0ZWdvcnlTZWFyY2hTdHJpbmcgPSAnJztcclxuICAgIGNvbnN0IGlzU3ViUHJvZ3JhbSA9IHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0RldGFpbD8uc29tZShcclxuICAgICAgKGVsOiBhbnkpID0+IGVsPy5jaGlsZF9pZD8ubGVuZ3RoXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMucG9wdWxhdGVDYXRlZ29yaWVzKCk7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50UHJvZ3JhbT8uY2hpbGRfaWQ/Lmxlbmd0aCB8fCBpc1N1YlByb2dyYW0pIHtcclxuICAgICAgdGhpcy5zaG93Q2F0ZWdvcmllcyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc0xpc3QoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSBbXTtcclxuICAgICAgdGhpcy5zYXZlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBiYWNrVG9Qcm9ncmFtcygpIHtcclxuICAgIGlmICghdGhpcy5oaWRlUHJvZ3JhbXNMaXN0KSB7XHJcbiAgICAgIHRoaXMuc2hvd0NhdGVnb3JpZXMgPSBmYWxzZTtcclxuICAgICAgaWYgKHRoaXMucHJldmlvdXNTZWxlY3RlZFZhbHVlcz8ucHJvZ3JhbT8uX2lkID09IHRoaXMuY3VycmVudFByb2dyYW0pIHtcclxuICAgICAgICB0aGlzLmNhdGVnb3J5RGF0YS5zZWxlY3RlZENhdGVnb3JpZXMgPSBbXHJcbiAgICAgICAgICAuLi5uZXcgU2V0KHRoaXMucHJldmlvdXNTZWxlY3RlZFZhbHVlcy5jYXRlZ29yaWVzKSxcclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSBbXTtcclxuICAgICAgICB0aGlzLmNhdGVnb3J5RGF0YS5zZWxlY3RlZENhdGVnb3JpZXMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZElkcy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZ2V0UHJvZ3JhbXNMaXN0KCk7XHJcbiAgICAgICAgdGhpcy5jYXRlZ29yeURhdGEuc2VsZWN0ZWRDYXRlZ29yaWVzID0gW107XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZElkcyA9IFtdO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNhdGVnb3J5RGF0YS5zZWxlY3RlZENhdGVnb3JpZXMgPSBbXTtcclxuICAgICAgdGhpcy5zZWxlY3RlZElkcyA9IFtdO1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VUYWIoXHJcbiAgICB0eXBlOiAncmVndWxhdGlvbnMnIHwgJ3N0YW5kYXJkcycgfCAnaW50ZXJuYWxfY29udHJvbHMnIHwgJ290aGVycydcclxuICApIHtcclxuICAgIHRoaXMucHJvZ3JhbVN1YlRhYiA9ICdQUk9HUkFNUyc7XHJcbiAgICB0aGlzLmFjdGl2ZVRhYiA9IHR5cGU7XHJcbiAgICB0aGlzLnByb2dyYW1EYXRhLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIGlmICh0aGlzLnNlYXJjaFN0cmluZz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gJyc7XHJcbiAgICAgIHRoaXMuZ2V0UHJvZ3JhbXNDb3VudCgpO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5zZWFyY2hTdHJpbmcgPSAnJztcclxuICAgIHRoaXMuc2VhcmNoUHJvZ3JhbS5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLmdldFByb2dyYW1zTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlUGFnZShldmVudDogYW55LCB0eXBlOiAnY2F0ZWdvcnknIHwgJ3Byb2dyYW0nKSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAncHJvZ3JhbSc6XHJcbiAgICAgICAgdGhpcy5wcm9ncmFtRGF0YS5jdXJyZW50UGFnZSA9IGV2ZW50O1xyXG4gICAgICAgIHRoaXMuZ2V0UHJvZ3JhbXNMaXN0KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NhdGVnb3J5JzpcclxuICAgICAgICB0aGlzLmNhdGVnb3J5RGF0YS5jdXJyZW50UGFnZSA9IGV2ZW50O1xyXG4gICAgICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc0xpc3QoKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFByb2dyYW1zTGlzdChwYXJhbXNPYmplY3Q/OiBhbnkpIHtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZChcclxuICAgICAgJ3Byb2dyYW1UeXBlJyxcclxuICAgICAgdGhpcy5wcm9ncmFtVHlwZU9iamVjdFt0aGlzLmFjdGl2ZVRhYl1cclxuICAgICk7XHJcbiAgICBpZiAocGFyYW1zT2JqZWN0Py5zZWFyY2ggfHwgdGhpcy5zZWFyY2hTdHJpbmcpIHtcclxuICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnc2VhcmNoVGV4dCcsIHRoaXMuc2VhcmNoU3RyaW5nKTtcclxuICAgIH1cclxuICAgIC8vIGVsc2Uge1xyXG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncGFnZU5vJywgdGhpcy5wcm9ncmFtRGF0YS5jdXJyZW50UGFnZSk7XHJcbiAgICAvLyB9XHJcbiAgICBpZiAodGhpcy5wcm9ncmFtU3ViVGFiID09PSAnT1RIRVJfUFJPR1JBTVMnKSB7XHJcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ2lzVmlld09ubHlQcm9ncmFtcycsIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5SWQpIHtcclxuICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncmVwb3J0SWQnLCB0aGlzLnJlc3BvbnNpYmlsaXR5SWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlLmdldFByb2dyYW1zTGlzdChwYXJhbXMpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMucHJvZ3JhbURhdGEuZGF0YSA9IHJlcy5kYXRhO1xyXG4gICAgICAgIHRoaXMucHJvZ3JhbURhdGEuZnJvbSA9IHJlcy5mcm9tO1xyXG4gICAgICAgIHRoaXMucHJvZ3JhbURhdGEudG8gPSByZXMudG87XHJcbiAgICAgICAgdGhpcy5wcm9ncmFtRGF0YS50b3RhbFBhZ2VzID0gcmVzLnRvdGFsUGFnZXM7XHJcbiAgICAgICAgdGhpcy5wcm9ncmFtRGF0YS50b3RhbFJlY29yZHMgPSByZXMudG90YWxSZWNvcmRzO1xyXG4gICAgICAgIHRoaXMucHJvZ3JhbURhdGEuQWxsSW50ZXJuYWxDb250cm9sc1Byb2dyYW1zQ291bnQgPVxyXG4gICAgICAgICAgcmVzLkFsbEludGVybmFsQ29udHJvbHNQcm9ncmFtc0NvdW50O1xyXG4gICAgICAgIHRoaXMucHJvZ3JhbURhdGEuQWxsT3RoZXJzUHJvZ3JhbXNDb3VudCA9IHJlcy5BbGxPdGhlcnNQcm9ncmFtc0NvdW50O1xyXG4gICAgICAgIHRoaXMucHJvZ3JhbURhdGEuQWxsUmVndWxhdGlvblByb2dyYW1zQ291bnQgPVxyXG4gICAgICAgICAgcmVzLkFsbFJlZ3VsYXRpb25Qcm9ncmFtc0NvdW50O1xyXG4gICAgICAgIHRoaXMucHJvZ3JhbURhdGEuQWxsU3RhbmRhcmRQcm9ncmFtc0NvdW50ID1cclxuICAgICAgICAgIHJlcy5BbGxTdGFuZGFyZFByb2dyYW1zQ291bnQ7XHJcbiAgICAgICAgdGhpcy5wcm9ncmFtRGF0YS5BbGxQcm9ncmFtc0NvdW50ID0gcmVzPy5BbGxQcm9ncmFtc0NvdW50XHJcbiAgICAgICAgICA/IHJlcz8uQWxsUHJvZ3JhbXNDb3VudFxyXG4gICAgICAgICAgOiAwO1xyXG4gICAgICAgIHRoaXMucHJvZ3JhbURhdGEuQWxsVmlld09ubHlQcm9ncmFtQ291bnQgPSByZXM/LkFsbFZpZXdPbmx5UHJvZ3JhbUNvdW50XHJcbiAgICAgICAgICA/IHJlcz8uQWxsVmlld09ubHlQcm9ncmFtQ291bnRcclxuICAgICAgICAgIDogMDtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRQcm9ncmFtc0NvdW50KHBhcmFtc09iamVjdD86IGFueSkge1xyXG4gICAgdGhpcy5wcm9ncmFtQ291bnRMb2FkZXIgPSB0cnVlO1xyXG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICAvLyBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwcm9ncmFtVHlwZScsIHRoaXMucHJvZ3JhbVR5cGVPYmplY3RbdGhpcy5hY3RpdmVUYWJdKTtcclxuICAgIGlmIChwYXJhbXNPYmplY3Q/LnNlYXJjaCB8fCB0aGlzLnNlYXJjaFN0cmluZykge1xyXG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdzZWFyY2hUZXh0JywgdGhpcy5zZWFyY2hTdHJpbmcpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlJZCkge1xyXG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdyZXBvcnRJZCcsIHRoaXMucmVzcG9uc2liaWxpdHlJZCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5nZXRQcm9ncmFtc0xpc3RDb3VudChwYXJhbXMpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMucHJvZ3JhbVRhYkRhdGFDb3VudC5hbGxSZWd1bGF0aW9uUHJvZ3JhbXNDb3VudCA9XHJcbiAgICAgICAgICByZXM/LkFsbFJlZ3VsYXRpb25Qcm9ncmFtc0NvdW50O1xyXG4gICAgICAgIHRoaXMucHJvZ3JhbVRhYkRhdGFDb3VudC5hbGxTdGFuZGFyZFByb2dyYW1zQ291bnQgPVxyXG4gICAgICAgICAgcmVzPy5BbGxTdGFuZGFyZFByb2dyYW1zQ291bnQ7XHJcbiAgICAgICAgdGhpcy5wcm9ncmFtVGFiRGF0YUNvdW50LmFsbEludGVybmFsQ29udHJvbHNQcm9ncmFtc0NvdW50ID1cclxuICAgICAgICAgIHJlcz8uQWxsSW50ZXJuYWxDb250cm9sc1Byb2dyYW1zQ291bnQ7XHJcbiAgICAgICAgdGhpcy5wcm9ncmFtVGFiRGF0YUNvdW50LmFsbE90aGVyc1Byb2dyYW1zQ291bnQgPVxyXG4gICAgICAgICAgcmVzPy5BbGxPdGhlcnNQcm9ncmFtc0NvdW50O1xyXG4gICAgICAgIHRoaXMucHJvZ3JhbUNvdW50TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIHRoaXMucHJvZ3JhbUNvdW50TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNlbGVjdGVkU3ViQ2F0ZWdvcnlJZHM6IGFueVtdID0gW107XHJcbiAgZ2V0Q2F0ZWdvcmllc0xpc3QocXVlcnlPYmplY3Q/OiBhbnkpIHtcclxuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcclxuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgLy8gcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncHJvZ3JhbV9pZCcsIHRoaXMuY3VycmVudFByb2dyYW0/Ll9pZCk7XHJcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwYWdlTm8nLCB0aGlzLmNhdGVnb3J5RGF0YS5jdXJyZW50UGFnZSk7XHJcbiAgICBpZiAocXVlcnlPYmplY3Q/LnNlYXJjaCB8fCB0aGlzLmNhdGVnb3J5U2VhcmNoU3RyaW5nKSB7XHJcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3NlYXJjaFRleHQnLCB0aGlzLmNhdGVnb3J5U2VhcmNoU3RyaW5nKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5SWQpIHtcclxuICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncmVwb3J0SWQnLCB0aGlzLnJlc3BvbnNpYmlsaXR5SWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlXHJcbiAgICAgIC5nZXRQcm9ncmFtc0xpc3QocGFyYW1zLCBbLi4ubmV3IFNldCh0aGlzLnNlbGVjdGVkUHJvZ3JhbXNJZCldKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuY2F0ZWdvcnlEYXRhLmRhdGEgPSByZXMuZGF0YTtcclxuICAgICAgICAgIHRoaXMuY2F0ZWdvcnlEYXRhLmZyb20gPSByZXMuZnJvbTtcclxuICAgICAgICAgIHRoaXMuY2F0ZWdvcnlEYXRhLnRvID0gcmVzLnRvO1xyXG4gICAgICAgICAgdGhpcy5jYXRlZ29yeURhdGEudG90YWxQYWdlcyA9IHJlcy50b3RhbFBhZ2VzO1xyXG4gICAgICAgICAgdGhpcy5jYXRlZ29yeURhdGEudG90YWxSZWNvcmRzID0gcmVzLnRvdGFsUmVjb3JkcztcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTdWJDYXRlZ29yeUlkcyA9IHJlcz8uc2VsZWN0ZWRTdWJDYXRlZ29yeUlkcz8ubGVuZ3RoXHJcbiAgICAgICAgICAgID8gcmVzPy5zZWxlY3RlZFN1YkNhdGVnb3J5SWRzXHJcbiAgICAgICAgICAgIDogW107XHJcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnNob3dDYXRlZ29yaWVzID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHNhdmVQcm9ncmFtKCkge31cclxuXHJcbiAgc2VsZWN0Q2F0ZWdvcnkobW9kZTogYW55LCBjYXRlZ29yeTogYW55KSB7XHJcbiAgICBpZiAobW9kZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSWRzLnB1c2goY2F0ZWdvcnkuY2F0ZWdvcnlfaWQpO1xyXG4gICAgICB0aGlzLmNhdGVnb3J5RGF0YS5zZWxlY3RlZENhdGVnb3JpZXMucHVzaChjYXRlZ29yeSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yaWVzLnB1c2goY2F0ZWdvcnkuY2F0ZWdvcnlfaWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkSWRzLmZpbmRJbmRleChcclxuICAgICAgICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50ID09IGNhdGVnb3J5LmNhdGVnb3J5X2lkXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJZHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgY29uc3QgY2F0ZWdvcnlJbmRleCA9IHRoaXMuY2F0ZWdvcnlEYXRhLnNlbGVjdGVkQ2F0ZWdvcmllcy5maW5kSW5kZXgoXHJcbiAgICAgICAgKGVsZTogYW55KSA9PiBlbGUuY2F0ZWdvcnlfaWQgPT0gY2F0ZWdvcnkuY2F0ZWdvcnlfaWRcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5jYXRlZ29yeURhdGEuc2VsZWN0ZWRDYXRlZ29yaWVzLnNwbGljZShjYXRlZ29yeUluZGV4LCAxKTtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IHRoaXMuc2VsZWN0ZWRDYXRlZ29yaWVzLmZpbmRJbmRleChcclxuICAgICAgICAoZWxlOiBhbnkpID0+IGVsZSA9PSBjYXRlZ29yeT8uY2F0ZWdvcnlfaWRcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZENhdGVnb3JpZXMuc3BsaWNlKHNlbGVjdGVkSW5kZXgsIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQ2F0ZWdvcmllcyhldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBjYXRlZ29yeUluZGV4ID0gdGhpcy5jYXRlZ29yeURhdGEuc2VsZWN0ZWRDYXRlZ29yaWVzLmZpbmRJbmRleChcclxuICAgICAgKGVsZTogYW55KSA9PiBlbGUuY2F0ZWdvcnlfaWQgPT0gZXZlbnQuY2F0ZWdvcnlfaWRcclxuICAgICk7XHJcbiAgICB0aGlzLmNhdGVnb3J5RGF0YS5zZWxlY3RlZENhdGVnb3JpZXMuc3BsaWNlKGNhdGVnb3J5SW5kZXgsIDEpO1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkSWRzLmZpbmRJbmRleChcclxuICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudCA9PSBldmVudC5jYXRlZ29yeV9pZFxyXG4gICAgKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJZHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgY29uc3QgY3VycmVudFByb2dyYW0gPSB0aGlzLnByZXNlcnZlUHJpbWFyeVByb2dyYW0/Lmxlbmd0aFxyXG4gICAgICA/IEpTT04ucGFyc2UodGhpcy5wcmVzZXJ2ZVByaW1hcnlQcm9ncmFtKVxyXG4gICAgICA6IHt9O1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRQcm9ncmFtc0lkID0gdGhpcy5wcmVzZXJ2ZWRQcm9ncmFtc0lkPy5sZW5ndGhcclxuICAgICAgPyBKU09OLnBhcnNlKHRoaXMucHJlc2VydmVkUHJvZ3JhbXNJZClcclxuICAgICAgOiB1bmRlZmluZWQ7XHJcbiAgICBjb25zdCBzZWxlY3RlZFByb2dyYW1zRGV0YWlsID0gdGhpcy5wcmVzZXJ2ZWRTZWxlY3RlZFByb2dyYW1zPy5sZW5ndGhcclxuICAgICAgPyBKU09OLnBhcnNlKHRoaXMucHJlc2VydmVkU2VsZWN0ZWRQcm9ncmFtcylcclxuICAgICAgOiBbXTtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5wcmVzZXJ2ZVByaW1hcnlQcm9ncmFtPy5sZW5ndGggJiZcclxuICAgICAgdGhpcy5wcmVzZXJ2ZWRTZWxlY3RlZFByb2dyYW1zPy5sZW5ndGhcclxuICAgICkge1xyXG4gICAgICB0aGlzLnNhdmVTZWxlY3RlZFByb2dyYW0uZW1pdCh7XHJcbiAgICAgICAgcHJvZ3JhbTogY3VycmVudFByb2dyYW0sXHJcbiAgICAgICAgY2F0ZWdvcmllczogSlNPTi5wYXJzZSh0aGlzLnRlbXBTZWxlY3RlZENhdGVnb3JpZXMpLFxyXG4gICAgICAgIGxpbmtlZFByb2dyYW06IHNlbGVjdGVkUHJvZ3JhbXNEZXRhaWwsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5zYXZlU2VsZWN0ZWRQcm9ncmFtLmVtaXQoe3Byb2dyYW06IGN1cnJlbnRQcm9ncmFtLCBjYXRlZ29yaWVzOiB0aGlzLnNlbGVjdGVkSWRzLCBsaW5rZWRQcm9ncmFtOiBzZWxlY3RlZFByb2dyYW1zRGV0YWlsICB9KTtcclxuICAgIHRoaXMuY2xvc2VFdmVudC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBzYXZlKCkge1xyXG4gICAgaWYgKCF0aGlzLmhpZGVQcm9ncmFtc0xpc3QgJiYgZmFsc2UpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5Q29uZmlybWF0aW9uTWVzc2FnZSA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZENhdGVnb3J5SWRzID0gdGhpcy5zZWxlY3RlZElkcy5jb25jYXQoXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFN1YkNhdGVnb3J5SWRzXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuc2F2ZVNlbGVjdGVkUHJvZ3JhbS5lbWl0KHtcclxuICAgICAgICBwcm9ncmFtOiB0aGlzLmN1cnJlbnRQcm9ncmFtLFxyXG4gICAgICAgIGNhdGVnb3JpZXM6IFsuLi5uZXcgU2V0KHNlbGVjdGVkQ2F0ZWdvcnlJZHMpXSxcclxuICAgICAgICBsaW5rZWRQcm9ncmFtOiB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNEZXRhaWwsXHJcbiAgICAgIH0pO1xyXG4gICAgICAvLyB0aGlzLnNhdmVTZWxlY3RlZFByb2dyYW0uZW1pdCh7IHByb2dyYW06IHRoaXMuY3VycmVudFByb2dyYW0sIGNhdGVnb3JpZXM6IHRoaXMuc2VsZWN0ZWRJZHMgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzYXZlQ2hhbmdlcyh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkQ2F0ZWdvcnlJZHMgPSB0aGlzLnNlbGVjdGVkSWRzLmNvbmNhdChcclxuICAgICAgICB0aGlzLnNlbGVjdGVkU3ViQ2F0ZWdvcnlJZHNcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5zYXZlU2VsZWN0ZWRQcm9ncmFtLmVtaXQoe1xyXG4gICAgICAgIHByb2dyYW06IHRoaXMuY3VycmVudFByb2dyYW0sXHJcbiAgICAgICAgY2F0ZWdvcmllczogWy4uLm5ldyBTZXQoc2VsZWN0ZWRDYXRlZ29yeUlkcyldLFxyXG4gICAgICAgIGxpbmtlZFByb2dyYW06IHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0RldGFpbCxcclxuICAgICAgfSk7XHJcbiAgICAgIC8vIHRoaXMuc2F2ZVNlbGVjdGVkUHJvZ3JhbS5lbWl0KHsgcHJvZ3JhbTogdGhpcy5jdXJyZW50UHJvZ3JhbSwgY2F0ZWdvcmllczogdGhpcy5zZWxlY3RlZElkcyB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheUNvbmZpcm1hdGlvbk1lc3NhZ2UgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRlbGV0ZUV2ZW50KGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGluZGV4T2ZQcm9ncmFtID0gdGhpcy5zZWxlY3RlZFByb2dyYW1zRGV0YWlsPy5maW5kSW5kZXgoXHJcbiAgICAgIChlbDogYW55KSA9PiBlbD8uY2F0ZWdvcnlfaWQgPT09IGV2ZW50Py5jYXRlZ29yeV9pZFxyXG4gICAgKTtcclxuICAgIGlmIChpbmRleE9mUHJvZ3JhbSAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW1zRGV0YWlsPy5zcGxpY2UoaW5kZXhPZlByb2dyYW0sIDEpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaW5kZXhPZklkID0gdGhpcy5zZWxlY3RlZFByb2dyYW1zSWQ/LmZpbmRJbmRleChcclxuICAgICAgKGVsOiBhbnkpID0+IGVsID09PSBldmVudD8uX2lkXHJcbiAgICApO1xyXG4gICAgaWYgKGluZGV4T2ZJZCAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW1zSWQ/LnNwbGljZShpbmRleE9mSWQsIDEpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY3VycmVudFByb2dyYW0/Ll9pZCA9PT0gZXZlbnQ/Ll9pZCkge1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFByb2dyYW1zRGV0YWlsPy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRQcm9ncmFtID0gdGhpcy5zZWxlY3RlZFByb2dyYW1zRGV0YWlsWzBdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFByb2dyYW0gPSB7fTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIHRoaXMuY3VycmVudFByb2dyYW0gPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnNob3dDYXRlZ29yaWVzID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdGVkSWRzID0gW107XHJcbiAgICB0aGlzLmNhdGVnb3J5TGlzdCA9IFtdO1xyXG4gICAgLy9BcyB0aGlzIGlzIGEgcmFkaW8gbGlzdCBhbmQgb25seSBvbmUgaXRlbSBjYW4gYmUgc2VsZWN0ZWQgdGhhdHMgd2h5IHdlIGFyZSByZXNldHRpbmcgYWxsIHRoZSBjb3VudHMgdG8gemVyb1xyXG4gICAgdGhpcy5nZXRTZWxlY3RlZFByb2dyYW1Db3VudChmYWxzZSwgZXZlbnQ/LnByb2dyYW1UeXBlKTtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkUHJvZ3JhbUNvdW50KGV2ZW50PzogYm9vbGVhbiwgcHJvZ3JhbVR5cGU/OiBudW1iZXIpIHtcclxuICAgIC8vIHN3aXRjaCAodGhpcy5jdXJyZW50UHJvZ3JhbS5wcm9ncmFtVHlwZSkge1xyXG4gICAgc3dpdGNoIChwcm9ncmFtVHlwZSkge1xyXG4gICAgICBjYXNlIDA6XHJcbiAgICAgICAgZXZlbnRcclxuICAgICAgICAgID8gdGhpcy5wcm9ncmFtRGF0YS5TZWxlY3RlZE90aGVyc1Byb2dyYW1zQ291bnQrK1xyXG4gICAgICAgICAgOiB0aGlzLnByb2dyYW1EYXRhLlNlbGVjdGVkT3RoZXJzUHJvZ3JhbXNDb3VudC0tO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDE6XHJcbiAgICAgICAgZXZlbnRcclxuICAgICAgICAgID8gdGhpcy5wcm9ncmFtRGF0YS5TZWxlY3RlZFJlZ3VsYXRpb25Qcm9ncmFtc0NvdW50KytcclxuICAgICAgICAgIDogdGhpcy5wcm9ncmFtRGF0YS5TZWxlY3RlZFJlZ3VsYXRpb25Qcm9ncmFtc0NvdW50LS07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgICBldmVudFxyXG4gICAgICAgICAgPyB0aGlzLnByb2dyYW1EYXRhLlNlbGVjdGVkU3RhbmRhcmRQcm9ncmFtc0NvdW50KytcclxuICAgICAgICAgIDogdGhpcy5wcm9ncmFtRGF0YS5TZWxlY3RlZFN0YW5kYXJkUHJvZ3JhbXNDb3VudC0tO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDM6XHJcbiAgICAgICAgZXZlbnRcclxuICAgICAgICAgID8gdGhpcy5wcm9ncmFtRGF0YS5TZWxlY3RlZEludGVybmFsQ29udHJvbHNQcm9ncmFtc0NvdW50KytcclxuICAgICAgICAgIDogdGhpcy5wcm9ncmFtRGF0YS5TZWxlY3RlZEludGVybmFsQ29udHJvbHNQcm9ncmFtc0NvdW50LS07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJZiB0aGUgc2VsZWN0ZWRQcm9ncmFtIGFycmF5IGhhcyBhIGxlbmd0aCwgdGhlbiBwcmVzZXJ2ZSB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgYXJyYXkgYXMgdGhlXHJcbiAgICogcHJlc2VydmVQcmltYXJ5UHJvZ3JhbSB2YXJpYWJsZS4gT3RoZXJ3aXNlLCBzZXQgdGhlIHByZXNlcnZlUHJpbWFyeVByb2dyYW0gdmFyaWFibGUgdG8gYW4gZW1wdHlcclxuICAgKiBvYmplY3QuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgc2VsZWN0ZWRQcm9ncmFtc0lkIGFycmF5IGhhcyBhIGxlbmd0aCwgdGhlbiBwcmVzZXJ2ZSB0aGUgYXJyYXkgYXMgdGhlIHByZXNlcnZlZFByb2dyYW1zSWRcclxuICAgKiB2YXJpYWJsZS4gT3RoZXJ3aXNlLCBzZXQgdGhlIHByZXNlcnZlZFByb2dyYW1zSWQgdmFyaWFibGUgdG8gYW4gZW1wdHkgYXJyYXkuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgc2VsZWN0ZWRQcm9ncmFtc0RldGFpbCBhcnJheSBoYXMgYSBsZW5ndGgsIHRoZW4gcHJlc2VydmUgdGhlIGFycmF5IGFzIHRoZVxyXG4gICAqIHByZXNlcnZlZFNlbGVjdGVkUHJvZ3JhbXMgdmFyaWFibGUuIE90aGVyd2lzZSwgc2V0IHRoZSBwcmVzZXJ2ZWRTZWxlY3RlZFByb2dyYW1zIHZhcmlhYmxlIHRvIGFuXHJcbiAgICogZW1wdHkgYXJyYXkuXHJcbiAgICpcclxuICAgKiBJZiB0aGUgc2VsZWN0ZWRQcm9ncmFtIGFycmF5IGRvZXMgbm90IGhhdmUgYSBsZW5ndGgsIHRoZW4gc2V0IHRoZSBzZWxlY3RlZFByb2dyYW1zRGV0YWlsIGFycmF5IHRvXHJcbiAgICogYW4gZW1wdHkgYXJyYXkgYW5kIHRoZSBzZWxlY3RlZFByb2dyYW1zSWQgYXJyYXkgdG8gYW4gZW1wdHkgYXJyYXkuXHJcbiAgICovXHJcbiAgcHJlc2VydmVQcmV2aW91c0RldGFpbHMoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFByb2dyYW1bMF0/Lmxlbmd0aCB8fCB0aGlzLmN1cnJlbnRQcm9ncmFtKSB7XHJcbiAgICAgIHRoaXMucHJlc2VydmVQcmltYXJ5UHJvZ3JhbSA9IHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5sZW5ndGhcclxuICAgICAgICA/IEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRQcm9ncmFtWzBdKVxyXG4gICAgICAgIDoge307XHJcbiAgICAgIHRoaXMucHJlc2VydmVkUHJvZ3JhbXNJZCA9IHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0lkPy5sZW5ndGhcclxuICAgICAgICA/IEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0lkKVxyXG4gICAgICAgIDogW107XHJcbiAgICAgIHRoaXMucHJlc2VydmVkU2VsZWN0ZWRQcm9ncmFtcyA9IHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0RldGFpbFxyXG4gICAgICAgID8gSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZFByb2dyYW1zRGV0YWlsKVxyXG4gICAgICAgIDogW107XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNEZXRhaWwgPSBbXTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW1zSWQgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb2dyYW1TdWJUYWI6ICdQUk9HUkFNUycgfCAnT1RIRVJfUFJPR1JBTVMnID0gJ1BST0dSQU1TJztcclxuICBzZXRQcm9ncmFtU3ViVGFiKHRhYjogJ1BST0dSQU1TJyB8ICdPVEhFUl9QUk9HUkFNUycpIHtcclxuICAgIHRoaXMucHJvZ3JhbVN1YlRhYiA9IHRhYjtcclxuICAgIHRoaXMuZ2V0UHJvZ3JhbXNMaXN0KCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJwcm9ncmFtLWxpc3RpbmdcIiBbY2xhc3MuYW5pbWF0ZV09XCJhbmltYXRpb25cIiAqbmdJZj1cIiFzaG93Q2F0ZWdvcmllcyAmJiAhaGlkZVByb2dyYW1zTGlzdFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInByb2dyYW0tbGlzdGluZy1oZWFkIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXBsLTQgdngtcHItNFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xNCB2eC1mdy01MDAgdngtbGFiZWwtdHh0XCI+U2VsZWN0IGEgUHJvZ3JhbTwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHJvZ3JhbS1saXN0aW5nLWJvZHlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWNhcmQtcm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItY2FyZCB2eC1iZy13aGl0ZSB2eC1kLWZsZXggdngtanVzdGlmeS1iZXR3ZWVuIHZ4LWFsaWduLWNlbnRlciB2eC1wdC0yIHZ4LXBiLTIgdngtcGwtMyB2eC1wci0zIHZ4LXctMTAwXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVUYWIgPT0gJ3JlZ3VsYXRpb25zJ1wiIChjbGljayk9XCJjaGFuZ2VUYWIoJ3JlZ3VsYXRpb25zJylcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlIHZ4LWQtZmxleCB2eC1qdXN0aWZ5LWJldHdlZW4gdngtYWxpZ24tY2VudGVyXCI+UkVHVUxBVElPTlM8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwicHJvZ3JhbURhdGE/LlNlbGVjdGVkUmVndWxhdGlvblByb2dyYW1zQ291bnQ+IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3twcm9ncmFtRGF0YT8uU2VsZWN0ZWRSZWd1bGF0aW9uUHJvZ3JhbXNDb3VudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7KHByb2dyYW1EYXRhPy5TZWxlY3RlZFJlZ3VsYXRpb25Qcm9ncmFtc0NvdW50PT0xKT8nUHJvZ3JhbSc6J1Byb2dyYW1zJ319IHNlbGVjdGVkXHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwiY291bnRlclwiPnt7cHJvZ3JhbURhdGE/LkFsbFJlZ3VsYXRpb25Qcm9ncmFtc0NvdW50fX08L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb3VudGVyXCI+e3twcm9ncmFtVGFiRGF0YUNvdW50Py5hbGxSZWd1bGF0aW9uUHJvZ3JhbXNDb3VudH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1jYXJkIHZ4LWJnLXdoaXRlIHZ4LWQtZmxleCB2eC1qdXN0aWZ5LWJldHdlZW4gdngtYWxpZ24tY2VudGVyIHZ4LXB0LTIgdngtcGItMiB2eC1wbC0zIHZ4LXByLTMgdngtdy0xMDBcIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVRhYiA9PSAnc3RhbmRhcmRzJ1wiIChjbGljayk9XCJjaGFuZ2VUYWIoJ3N0YW5kYXJkcycpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZSB2eC1kLWZsZXggdngtanVzdGlmeS1iZXR3ZWVuIHZ4LWFsaWduLWNlbnRlclwiPlNUQU5EQVJEUzwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJwcm9ncmFtRGF0YT8uU2VsZWN0ZWRTdGFuZGFyZFByb2dyYW1zQ291bnQ+IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3twcm9ncmFtRGF0YT8uU2VsZWN0ZWRTdGFuZGFyZFByb2dyYW1zQ291bnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyhwcm9ncmFtRGF0YT8uU2VsZWN0ZWRTdGFuZGFyZFByb2dyYW1zQ291bnQ9PTEpPydQcm9ncmFtJzonUHJvZ3JhbXMnfX0gc2VsZWN0ZWRcclxuICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJjb3VudGVyXCI+e3twcm9ncmFtRGF0YT8uQWxsU3RhbmRhcmRQcm9ncmFtc0NvdW50fX08L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb3VudGVyXCI+e3twcm9ncmFtVGFiRGF0YUNvdW50Py5hbGxTdGFuZGFyZFByb2dyYW1zQ291bnR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItY2FyZCB2eC1iZy13aGl0ZSB2eC1kLWZsZXggdngtanVzdGlmeS1iZXR3ZWVuIHZ4LWFsaWduLWNlbnRlciB2eC1wdC0yIHZ4LXBiLTIgdngtcGwtMyB2eC1wci0zIHZ4LXctMTAwXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVUYWIgPT0gJ2ludGVybmFsX2NvbnRyb2xzJ1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlVGFiKCdpbnRlcm5hbF9jb250cm9scycpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZSB2eC1kLWZsZXggdngtanVzdGlmeS1iZXR3ZWVuIHZ4LWFsaWduLWNlbnRlclwiPklOVEVSTkFMIENPTlRST0xTPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cInByb2dyYW1EYXRhPy5TZWxlY3RlZEludGVybmFsQ29udHJvbHNQcm9ncmFtc0NvdW50PiAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7cHJvZ3JhbURhdGE/LlNlbGVjdGVkSW50ZXJuYWxDb250cm9sc1Byb2dyYW1zQ291bnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyhwcm9ncmFtRGF0YT8uU2VsZWN0ZWRJbnRlcm5hbENvbnRyb2xzUHJvZ3JhbXNDb3VudD09MSk/J1Byb2dyYW0nOidQcm9ncmFtcyd9fSBzZWxlY3RlZFxyXG4gICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cImNvdW50ZXJcIj57e3Byb2dyYW1EYXRhPy5BbGxJbnRlcm5hbENvbnRyb2xzUHJvZ3JhbXNDb3VudH19PC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRlclwiPnt7cHJvZ3JhbVRhYkRhdGFDb3VudD8uYWxsSW50ZXJuYWxDb250cm9sc1Byb2dyYW1zQ291bnR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItY2FyZCB2eC1iZy13aGl0ZSB2eC1kLWZsZXggdngtanVzdGlmeS1iZXR3ZWVuIHZ4LWFsaWduLWNlbnRlciB2eC1wdC0yIHZ4LXBiLTIgdngtcGwtMyB2eC1wci0zIHZ4LXctMTAwXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVUYWIgPT0gJ290aGVycydcIiAoY2xpY2spPVwiY2hhbmdlVGFiKCdvdGhlcnMnKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2UgdngtZC1mbGV4IHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1hbGlnbi1jZW50ZXJcIj5PVEhFUlM8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwicHJvZ3JhbURhdGE/LlNlbGVjdGVkT3RoZXJzUHJvZ3JhbXNDb3VudD4gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e3Byb2dyYW1EYXRhPy5TZWxlY3RlZE90aGVyc1Byb2dyYW1zQ291bnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyhwcm9ncmFtRGF0YT8uU2VsZWN0ZWRPdGhlcnNQcm9ncmFtc0NvdW50PT0xKT8nUHJvZ3JhbSc6J1Byb2dyYW1zJ319IHNlbGVjdGVkXHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwiY291bnRlclwiPnt7cHJvZ3JhbURhdGE/LkFsbE90aGVyc1Byb2dyYW1zQ291bnR9fTwvc3Bhbj4gLS0+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50ZXJcIj57e3Byb2dyYW1UYWJEYXRhQ291bnQ/LmFsbE90aGVyc1Byb2dyYW1zQ291bnR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1ibG9ja1wiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwYjs8L2k+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiICNzZWFyY2hQcm9ncmFtIChrZXl1cC5lbnRlcik9XCJoYW5kbGVTZWFyY2goJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggUHJvZ3JhbXNcIiAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS0gbW9kZSA9PT0gJ0VESVQnIC0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJtb2RlID09PSAnRURJVCcgJiYgcHJvZ3JhbURhdGE/LkFsbFZpZXdPbmx5UHJvZ3JhbUNvdW50XCIgY2xhc3M9XCJwcm9ncmFtLWxpc3RpbmctdGFiIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwic2V0UHJvZ3JhbVN1YlRhYignUFJPR1JBTVMnKVwiIGNsYXNzPVwidngtZnMtMTEgdngtZnctNjAwIHZ4LXBhcmFncmFwaC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1wYi0yIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWxoLTRcIiBbY2xhc3MuYWN0aXZlXT1cInByb2dyYW1TdWJUYWIgPT09ICdQUk9HUkFNUydcIj5QUk9HUkFNUyA8c3BhbiBjbGFzcz1cImNvdW50IHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LW1sLTIgdngtbGgtNFwiPnt7cHJvZ3JhbURhdGE/LkFsbFByb2dyYW1zQ291bnR9fTwvc3Bhbj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwic2V0UHJvZ3JhbVN1YlRhYignT1RIRVJfUFJPR1JBTVMnKVwiIGNsYXNzPVwidngtZnMtMTEgdngtZnctNjAwIHZ4LXBhcmFncmFwaC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1wYi0yIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWxoLTRcIiBbY2xhc3MuYWN0aXZlXT1cInByb2dyYW1TdWJUYWIgPT09ICdPVEhFUl9QUk9HUkFNUydcIj5PVEhFUiBQUk9HUkFNUyA8c3BhbiBjbGFzcz1cImNvdW50IHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LW1sLTIgdngtbGgtNFwiPnt7cHJvZ3JhbURhdGE/LkFsbFZpZXdPbmx5UHJvZ3JhbUNvdW50fX08L3NwYW4+PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGFwcC1wYWdpbmF0aW9uICpuZ0lmPVwicHJvZ3JhbURhdGEudG90YWxQYWdlcyA+IDFcIiBbc3RhcnRdPVwicHJvZ3JhbURhdGEuZnJvbVwiIFtlbmRdPVwicHJvZ3JhbURhdGEudG9cIiBbdG90YWxdPVwicHJvZ3JhbURhdGEudG90YWxSZWNvcmRzXCIgW3BhZ2VDb3VudF09XCJwcm9ncmFtRGF0YS50b3RhbFBhZ2VzXCIgW2N1cnJlbnRQYWdlXT1cInByb2dyYW1EYXRhLmN1cnJlbnRQYWdlXCIgKHNlbGVjdGVkUGFnZSk9XCJjaGFuZ2VQYWdlKCRldmVudCwncHJvZ3JhbScpXCI+PC9hcHAtcGFnaW5hdGlvbj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3JhbS1saXN0aW5nLXBhcnQgdngtbWItNFwiIFtjbGFzcy53aXRoLWNhdGVnb3J5LWxpc3RdPVwiIXNob3dDYXRlZ29yaWVzICYmICFoaWRlUHJvZ3JhbXNMaXN0XCIgW2NsYXNzLndpdGgtcGFnaW5hdGlvbl09XCJwcm9ncmFtRGF0YS50b3RhbFBhZ2VzID4gMVwiPlxyXG4gICAgICAgICAgICA8YXBwLW5vLWRhdGEgKm5nSWY9XCJwcm9ncmFtRGF0YT8uZGF0YT8ubGVuZ3RoPT09MCAmJiAhbG9hZGVyXCJcclxuICAgICAgICAgICAgICAgIFtub0RhdGFJbWFnZV09XCInaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3NlYXJjaC1kYXRhLnN2ZydcIlxyXG4gICAgICAgICAgICAgICAgW25vRGF0YVRleHRdPVwiJ05vIERhdGEgRm91bmQnXCI+PC9hcHAtbm8tZGF0YT5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmFtLWxpc3RpbmctaXRlbVwiIFtjbGFzcy5hY3RpdmVdPVwic2hvd0NhdGVnb3JpZXMgJiYgY3VycmVudFByb2dyYW0/Ll9pZCA9PSBwcm9ncmFtPy5faWRcIiAqbmdGb3I9XCJsZXQgcHJvZ3JhbSBvZiBwcm9ncmFtRGF0YS5kYXRhO2xldCBpID0gaW5kZXhcIiBbY2xhc3MuZmluYWwtc2VsZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIGFmdGVyIGNhdGVnb3J5IHdhcyBzZWxlY3QgJiB1c2VyIG1vdmUgdG8gYmFjayBhbmQgZWRpdCB0aGVuIGZpbmFsLXNlbGVjdCBjbGFzcyB3YXMgc2hvdyAtLT5cclxuICAgICAgICAgICAgICAgIDwhLS0gW2NsYXNzLmRpc2FibGVkXT1cImN1cnJlbnRQcm9ncmFtPy5faWQgPT09IHByb2dyYW0/Ll9pZCAmJiAobW9kZSA9PT0gJ0VESVQnIHx8IG9wZW5lZEZyb20gPT09ICdQUk9HUkFNX1dPUktST09NJykgJiYgcHJvZ3JhbVN1YlRhYiAhPT0gJ09USEVSX1BST0dSQU1TJ1wiIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJvdyBtYWluLWxpc3RcIiBbY2xhc3MuYWN0aXZlXT1cInNlbGVjdGVkUHJvZ3JhbXNJZD8uaW5jbHVkZXMocHJvZ3JhbT8uX2lkKVwiIFtjbGFzcy5kaXNhYmxlZF09XCJmZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX2RlcHJlY2F0ZV9wcmltYXJ5X3Byb2dyYW1fZmxhZycpID8gZmFsc2UgOiAoY3VycmVudFByb2dyYW0/Ll9pZCA9PT0gcHJvZ3JhbT8uX2lkICYmIChtb2RlID09PSAnRURJVCcgfHwgb3BlbmVkRnJvbSA9PT0gJ1BST0dSQU1fV09SS1JPT00nKSAmJiBwcm9ncmFtU3ViVGFiICE9PSAnT1RIRVJfUFJPR1JBTVMnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gc2VyaWFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzci1ub1wiIFthcHBUb29sdGlwXT1cImkrcHJvZ3JhbURhdGEuZnJvbVwiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj57e2krcHJvZ3JhbURhdGEuZnJvbX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gW2Rpc2FibGVkXT1cImN1cnJlbnRQcm9ncmFtPy5faWQgPT09IHByb2dyYW0/Ll9pZCAmJiAobW9kZSA9PT0gJ0VESVQnIHx8IG9wZW5lZEZyb20gPT09ICdQUk9HUkFNX1dPUktST09NJylcIiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jcy1jaGVja2JveFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwcm9ncmFtU3ViVGFiICE9PSAnT1RIRVJfUFJPR1JBTVMnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX2RlcHJlY2F0ZV9wcmltYXJ5X3Byb2dyYW1fZmxhZycpID8gZmFsc2UgOiAoY3VycmVudFByb2dyYW0/Ll9pZCA9PT0gcHJvZ3JhbT8uX2lkICYmIChtb2RlID09PSAnRURJVCcgfHwgb3BlbmVkRnJvbSA9PT0gJ1BST0dSQU1fV09SS1JPT00nKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVmFsdWVdPVwic2VsZWN0ZWRQcm9ncmFtc0lkPy5pbmNsdWRlcyhwcm9ncmFtPy5faWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cInNlbGVjdFByb2dyYW0oJGV2ZW50LHByb2dyYW0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNzLWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxhcHAtY3MtcmFkaW8gW25hbWVdPVwiJ3QnXCIgW2NoZWNrZWRdPVwiY3VycmVudFByb2dyYW0/Ll9pZCA9PSBwcm9ncmFtPy5faWRcIiAoY2hlY2tlZEV2ZW50KT1cInNlbGVjdFByb2dyYW0oJGV2ZW50LnRhcmdldC5jaGVja2VkLHByb2dyYW0pXCI+PC9hcHAtY3MtcmFkaW8+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gbmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZS1pbm5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWUtd2l0aC1jb3VudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZVwiIFthcHBUb29sdGlwXT1cInByb2dyYW0/Lml0ZW1fbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e3Byb2dyYW0/Lm5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gcHJpbWFyeS1wcm9ncmFtXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfZGVwcmVjYXRlX3ByaW1hcnlfcHJvZ3JhbV9mbGFnJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhKG1vZGUgPT09ICdFRElUJyB8fCBvcGVuZWRGcm9tID09PSAnUFJPR1JBTV9XT1JLUk9PTScpIHx8IGN1cnJlbnRQcm9ncmFtPy5faWQgPT09IHByb2dyYW0/Ll9pZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImN1cnJlbnRQcm9ncmFtPy5faWQgPT09IHByb2dyYW0/Ll9pZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVmFsdWVdPSdjdXJyZW50UHJvZ3JhbT8uX2lkID09PSBwcm9ncmFtPy5faWQnIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cInNldFByaW1hcnlQcm9ncmFtKCRldmVudCwgcHJvZ3JhbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7Y3VycmVudFByb2dyYW0/Ll9pZCA9PT0gcHJvZ3JhbT8uX2lkID8gJ1BSSU1BUlkgUFJPR1JBTScgOiAnU0VUIEFTIFBSSU1BUlkgUFJPR1JBTSd9fTwvYXBwLWNzLXN3aXRjaD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwidGFibGUtY29sdW1uIGFjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYXJyb3dcIiAqbmdJZj1cInByb2dyYW0/LmNoaWxkX2lkPy5sZW5ndGhcIiBbY2xhc3MuZGlzYWJsZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiEoc2hvd0NhdGVnb3JpZXMgJiYgY3VycmVudFByb2dyYW0/Ll9pZCA9PSBwcm9ncmFtPy5faWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UHJvZ3JhbSgkZXZlbnQscHJvZ3JhbSlcIiBjbGFzcz1cImljb25zXCI+JiN4ZTk3MDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cInNob3dDYXRlZ29yaWVzICYmIGN1cnJlbnRQcm9ncmFtPy5faWQgPT0gcHJvZ3JhbT8uX2lkXCIgY2xhc3M9XCJpY29uc1wiPiYjeGU5ZTg7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8YXBwLWZsb2F0aW5nLWJhciAqbmdJZj1cImZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfZGVwcmVjYXRlX3ByaW1hcnlfcHJvZ3JhbV9mbGFnJylcIiBbc2VsZWN0ZWREYXRhXT1cIihzZWxlY3RlZFByb2dyYW1zRGV0YWlsPy5sZW5ndGgpID8gc2VsZWN0ZWRQcm9ncmFtc0RldGFpbCA6IFtdXCIgW2Rpc3BsYXlFbGVtZW50S2V5XT1cIiduYW1lJ1wiXHJcbiAgICAgICAgICAgIFtzaW5ndWxhclRleHRdPVwiJ1Byb2dyYW0gc2VsZWN0ZWQnXCIgW3BsdXJhbFRleHRdPVwiJ1Byb2dyYW1zIHNlbGVjdGVkJ1wiIChjbG9zZUV2ZW50KT1cIm9wZW5DYXRlZ29yaWVzKClcIlxyXG4gICAgICAgICAgICAoZGVsZXRlRXZlbnQpPVwiZGVsZXRlRXZlbnQoJGV2ZW50KVwiIFtpc0Rpc2FibGVkXT1cIigoY3VycmVudFByb2dyYW0/LmNhdGVnb3J5X2lkKT9bY3VycmVudFByb2dyYW1dOltdKT8ubGVuZ3RoID8gZmFsc2UgOnRydWVcIiAoY2xvc2VMaXN0KT1cImNsb3NlKClcIiBbZWxlbWVudElkXT1cIidjYXRlZ29yeV9pZCdcIj5cclxuICAgICAgICA8L2FwcC1mbG9hdGluZy1iYXI+XHJcblxyXG4gICAgICAgIDxhcHAtZmxvYXRpbmctYmFyICpuZ0lmPVwiIWZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfZGVwcmVjYXRlX3ByaW1hcnlfcHJvZ3JhbV9mbGFnJylcIiBbc2VsZWN0ZWREYXRhXT1cIihzZWxlY3RlZFByb2dyYW1zRGV0YWlsPy5sZW5ndGgpID8gc2VsZWN0ZWRQcm9ncmFtc0RldGFpbCA6IFtdXCIgW2Rpc3BsYXlFbGVtZW50S2V5XT1cIiduYW1lJ1wiXHJcbiAgICAgICAgICAgIFtzaW5ndWxhclRleHRdPVwiJ1Byb2dyYW0gc2VsZWN0ZWQnXCIgW3BsdXJhbFRleHRdPVwiJ1Byb2dyYW1zIHNlbGVjdGVkJ1wiIChjbG9zZUV2ZW50KT1cIm9wZW5DYXRlZ29yaWVzKClcIlxyXG4gICAgICAgICAgICAoZGVsZXRlRXZlbnQpPVwiZGVsZXRlRXZlbnQoJGV2ZW50KVwiIFtpc0Rpc2FibGVkXT1cIigoY3VycmVudFByb2dyYW0/LmNhdGVnb3J5X2lkKT9bY3VycmVudFByb2dyYW1dOltdKT8ubGVuZ3RoID8gZmFsc2UgOnRydWVcIiAoY2xvc2VMaXN0KT1cImNsb3NlKClcIiBbZGVmYXVsdFNlbGVjdGVkXT1cImN1cnJlbnRQcm9ncmFtXCIgW25vblJlbW92YWJsZVVzZXJzTGlzdF09XCIobW9kZSA9PT0gJ0VESVQnIHx8IG9wZW5lZEZyb20gPT09ICdQUk9HUkFNX1dPUktST09NJykgPyB2aWV3T25seVByb2dyYW1zQ2F0ZWdvcnlJZCA6IFtjdXJyZW50UHJvZ3JhbT8uY2F0ZWdvcnlfaWRdXCIgW2VsZW1lbnRJZF09XCInY2F0ZWdvcnlfaWQnXCI+XHJcbiAgICAgICAgPC9hcHAtZmxvYXRpbmctYmFyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfZGVwcmVjYXRlX3ByaW1hcnlfcHJvZ3JhbV9mbGFnJylcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3JhbS1saXN0aW5nLWNvbmZpcm1hdGlvblwiICpuZ0lmPVwiZGlzcGxheUNvbmZpcm1hdGlvbk1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpcm1hdGlvbi10b3BcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWJsb2NrXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MzA7PC9pPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHRcIj5PbmNlIHlvdSBzZWxlY3QgdGhpcyBQcm9ncmFtLCBhbGwgZGVmYXVsdCB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgUHJvZ3JhbSB3aWxsIGFsc28gYmUgdXBkYXRlZC48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maXJtYXRpb24tYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZVwiPkFyZSB5b3Ugc3VyZSB5b3Ugd291bGQgbGlrZSB0byBwcm9jZWVkPzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJuby1idG5cIiAoY2xpY2spPVwic2F2ZUNoYW5nZXMoZmFsc2UpXCI+Tk88L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwieWVzLWJ0blwiIChjbGljayk9XCJzYXZlQ2hhbmdlcyh0cnVlKVwiPllFUzwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmFtLWxpc3RpbmctY29uZmlybWF0aW9uXCIgKm5nSWY9XCJpc1ByaW1hcnlDb25maXJtYXRpb24gJiYgIWlzUHJpbWFyeVVuY2hlY2tlZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlybWF0aW9uLXRvcFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tYmxvY2tcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkzMDs8L2k+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dFwiIFtpbm5lckhUTUxdPVwicHJpbWFyeUNvbmZpcm1hdGlvbk1lc3NhZ2VcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maXJtYXRpb24tYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZVwiPkFyZSB5b3Ugc3VyZSB5b3Ugd291bGQgbGlrZSB0byBwcm9jZWVkPzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJuby1idG5cIiAoY2xpY2spPVwidXBkYXRlUHJpbWFyeVByb2dyYW0oZmFsc2UpXCI+Tk88L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwieWVzLWJ0blwiIChjbGljayk9XCJ1cGRhdGVQcmltYXJ5UHJvZ3JhbSh0cnVlKVwiPllFUzwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3JhbS1saXN0aW5nLWNvbmZpcm1hdGlvbiBlcnJvci1jb25maXJtYXRpb25cIiAqbmdJZj1cImlzUHJpbWFyeVVuY2hlY2tlZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlybWF0aW9uLXRvcFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1ibG9ja1wiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTMwOzwvaT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dCB2eC1wci00XCI+WW91IGNhbm5vdCBkZXNlbGVjdCB0aGlzIFByb2dyYW0gc2luY2UgdGhpcyBpcyB0aGUgPGVtPlByaW1hcnkgUHJvZ3JhbTwvZW0+IGZvciB0aGlzIHJlc3BvbnNpYmlsaXR5LiBUbyBwcm9jZWVkLCBmaXJzdCBzZWxlY3QgYW5vdGhlciBQcm9ncmFtIGFzIHRoZSA8ZW0+UHJpbWFyeSBQcm9ncmFtPC9lbT4uPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJvay1idG5cIiAoY2xpY2spPVwidXBkYXRlUHJpbWFyeVByb2dyYW0oZmFsc2UpXCI+T0s8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0gPGFwcC1mbG9hdGluZy1iYXIgW3NlbGVjdGVkRGF0YV09XCIoY3VycmVudFByb2dyYW0/LmNhdGVnb3J5X2lkKT9bY3VycmVudFByb2dyYW1dOltdXCIgW2Rpc3BsYXlFbGVtZW50S2V5XT1cIiduYW1lJ1wiXHJcbiAgICAgICAgW3Npbmd1bGFyVGV4dF09XCInUHJvZ3JhbSBzZWxlY3RlZCdcIiBbcGx1cmFsVGV4dF09XCInUHJvZ3JhbXMgc2VsZWN0ZWQnXCIgKGNsb3NlRXZlbnQpPVwib3BlbkNhdGVnb3JpZXMoKVwiXHJcbiAgICAgICAgKGRlbGV0ZUV2ZW50KT1cImRlbGV0ZUV2ZW50KCRldmVudClcIiBbaXNEaXNhYmxlZF09XCIoKGN1cnJlbnRQcm9ncmFtPy5jYXRlZ29yeV9pZCk/W2N1cnJlbnRQcm9ncmFtXTpbXSk/Lmxlbmd0aCA/IGZhbHNlIDp0cnVlIFwiIChjbG9zZUxpc3QpPVwiY2xvc2UoKVwiPlxyXG4gICAgPC9hcHAtZmxvYXRpbmctYmFyPiAtLT5cclxuXHJcbiAgICA8IS0tICgoY3VycmVudFByb2dyYW0/LmNhdGVnb3J5X2lkKT9bY3VycmVudFByb2dyYW1dOltdKT8ubGVuZ3RoID8gZmFsc2UgOnRydWUgIC0tPlxyXG5cclxuICAgIDxhcHAtbG9hZGVyICpuZ0lmPVwibG9hZGVyXCI+PC9hcHAtbG9hZGVyPlxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cInByb2dyYW0tbGlzdGluZ1wiIFtjbGFzcy5hbmltYXRlXT1cImFuaW1hdGlvblwiICpuZ0lmPVwic2hvd0NhdGVnb3JpZXMgfHwgaGlkZVByb2dyYW1zTGlzdFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInByb2dyYW0tbGlzdGluZy1oZWFkIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXBsLTQgdngtcHItNFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xNCB2eC1mdy01MDAgdngtbGFiZWwtdHh0XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJiYWNrLWJ0biB2eC1mcy0xNiB2eC1wLTAgdngtbXItMlwiIChjbGljayk9XCJiYWNrVG9Qcm9ncmFtcygpXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWQ7PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8IS0tIDxzcGFuICpuZ0lmPVwiY3VycmVudFByb2dyYW0/Lm5hbWVcIj4ge3tjdXJyZW50UHJvZ3JhbT8ubmFtZX19ID4gPC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgIFByb2dyYW0gID4gIFNlbGVjdCBQcm9ncmFtIENhdGVnb3JpZXNcclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInByb2dyYW0tbGlzdGluZy1ib2R5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1ibG9ja1wiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwYjs8L2k+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiICNzZWFyY2hDYXRlZ29yeSAoa2V5dXAuZW50ZXIpPVwiY2F0ZWdvcnlTZWFyY2goJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggQ2F0ZWdvcmllc1wiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGFwcC1wYWdpbmF0aW9uICpuZ0lmPVwiY2F0ZWdvcnlEYXRhLnRvdGFsUGFnZXMgPiAxXCIgY2xhc3M9XCJjYXRlZ29yeS1wYWdpbmF0aW9uXCIgW3N0YXJ0XT1cImNhdGVnb3J5RGF0YS5mcm9tXCIgW2VuZF09XCJjYXRlZ29yeURhdGEudG9cIiBbdG90YWxdPVwiY2F0ZWdvcnlEYXRhLnRvdGFsUmVjb3Jkc1wiIFtwYWdlQ291bnRdPVwiY2F0ZWdvcnlEYXRhLnRvdGFsUGFnZXNcIiBbY3VycmVudFBhZ2VdPVwiY2F0ZWdvcnlEYXRhLmN1cnJlbnRQYWdlXCIgKHNlbGVjdGVkUGFnZSk9XCJjaGFuZ2VQYWdlKCRldmVudCwnY2F0ZWdvcnknKVwiPjwvYXBwLXBhZ2luYXRpb24+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyYW0tbGlzdGluZy1wYXJ0IHZ4LW1iLTRcIiBbY2xhc3Mud2l0aC1jYXRlZ29yeS1wYWdpbmF0aW9uXT1cImNhdGVnb3J5RGF0YS50b3RhbFBhZ2VzID4gMVwiPlxyXG4gICAgICAgICAgICA8YXBwLW5vLWRhdGEgKm5nSWY9XCJjYXRlZ29yeURhdGE/LmRhdGE/Lmxlbmd0aD09PTAgJiYgIWxvYWRlclwiIFtub0RhdGFJbWFnZV09XCInaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3NlYXJjaC1kYXRhLnN2ZydcIiBbbm9EYXRhVGV4dF09XCInTm8gRGF0YSBGb3VuZCdcIj48L2FwcC1uby1kYXRhPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkZXIgJiYgY2F0ZWdvcnlEYXRhLmRhdGE/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLWFyZWFcIiAqbmdJZj1cIiFsb2FkZXIgJiYgKGN1cnJlbnRQcm9ncmFtPy5uYW1lID8gY2F0ZWdvcnlEYXRhLmRhdGE/Lmxlbmd0aCA6IHByb2dyYW1EYXRhPy5kYXRhPy5sZW5ndGgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY3MtY2hlY2tib3ggKm5nSWY9XCJjaGVja0NhdGVnb3JpZXNTZWxlY3Rpb24oKT09J2NoZWNrZWQnXCIgW25nVmFsdWVdPVwidHJ1ZVwiIChuZ1ZhbHVlQ2hhbmdlKT1cInNlbGVjdEFsbENhdGVnb3JpZXMoZmFsc2UpXCI+RGVzZWxlY3QgQWxsPC9hcHAtY3MtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY3MtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSAqbmdJZj1cImNoZWNrQ2F0ZWdvcmllc1NlbGVjdGlvbigpPT0naW5kZXRlcm1pbmF0ZSdcIiBbbmdWYWx1ZV09XCJ0cnVlXCIgKG5nVmFsdWVDaGFuZ2UpPVwic2VsZWN0QWxsQ2F0ZWdvcmllcyhmYWxzZSlcIj5EZXNlbGVjdCBBbGw8L2FwcC1jcy1jaGVja2JveC1pbmRldGVybWluYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNzLWNoZWNrYm94ICpuZ0lmPVwiY2hlY2tDYXRlZ29yaWVzU2VsZWN0aW9uKCk9PSd1bmNoZWNrZWQnXCIgW25nVmFsdWVdPVwiZmFsc2VcIiAobmdWYWx1ZUNoYW5nZSk9XCJzZWxlY3RBbGxDYXRlZ29yaWVzKHRydWUpXCI+U2VsZWN0IEFsbDwvYXBwLWNzLWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiBzZXJpYWxcIj4jPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gY2F0ZWdvcnktbmFtZVwiPkNBVEVHT1JJRVM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiBjYXRlZ29yeS13aXRoaW5cIj5XSVRISU48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyYW0tbGlzdGluZy1pdGVtXCIgW2NsYXNzLmFjdGl2ZV09XCJzdWJMaXN0XCIgKm5nRm9yPVwibGV0IGNhdGVnb3J5IG9mIGNhdGVnb3J5RGF0YS5kYXRhO2xldCBpID0gaW5kZXhcIiBbY2xhc3MuYWN0aXZlXT1cInNlbGVjdGVkSWRzLmluY2x1ZGVzKGNhdGVnb3J5LmNhdGVnb3J5X2lkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yb3cgbWFpbi1saXN0XCIgW2NsYXNzLmRpc2FibGVkXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gc2VyaWFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Itbm9cIiBbYXBwVG9vbHRpcF09XCJpICsgY2F0ZWdvcnlEYXRhPy5mcm9tXCIgcGxhY2VtZW50PVwiYm90dG9tXCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+e3tpICsgY2F0ZWdvcnlEYXRhPy5mcm9tfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY3MtY2hlY2tib3ggW25nVmFsdWVdPVwic2VsZWN0ZWRJZHMuaW5jbHVkZXMoY2F0ZWdvcnkuY2F0ZWdvcnlfaWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdWYWx1ZUNoYW5nZSk9XCJzZWxlY3RDYXRlZ29yeSgkZXZlbnQsY2F0ZWdvcnkpXCI+PC9hcHAtY3MtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29sdW1uIGNhdGVnb3J5LW5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lLWlubmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWUtd2l0aC1jb3VudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIiBbYXBwVG9vbHRpcF09XCJjYXRlZ29yeT8ubmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e2NhdGVnb3J5Py5uYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ3aXRoaW4tcGFydFwiICpuZ0lmPVwiY2F0ZWdvcnk/LnBhcmVudF9jYXRlZ29yeV9uYW1lPy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIndpdGhpbi1ib3hcIj5XaXRoaW48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIiBbYXBwVG9vbHRpcF09XCInU291dGggQWZyaWNhID4gQW1lcmljYSA+IEluZGlhJ1wiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBwYXJlbnQgb2YgY2F0ZWdvcnk/LnBhcmVudF9jYXRlZ29yeV9uYW1lO2xldCBqPWluZGV4XCI+e3soaiE9KGNhdGVnb3J5Py5wYXJlbnRfY2F0ZWdvcnlfbmFtZT8ubGVuZ3RoLTEpKT9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQrJyA8ICc6cGFyZW50fX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29sdW1uIGNhdGVnb3J5LXdpdGhpblwiICpuZ0lmPVwiY2F0ZWdvcnk/LnBhcmVudF9jYXRlZ29yeV9uYW1lPy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwYXJlbnQgb2YgY2F0ZWdvcnk/LnBhcmVudF9jYXRlZ29yeV9uYW1lOyBsZXQgbGFzdCA9IGxhc3RcIiBjbGFzcz1cIndpdGhpbi1uYW1lXCIgW2FwcFRvb2x0aXBdPVwiY2F0ZWdvcnk/LnBhcmVudF9jYXRlZ29yeV9uYW1lPy5zbGljZSgpPy5yZXZlcnNlKCk/LmpvaW4oJyA+ICcpXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7cGFyZW50fX0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhbGFzdFwiPiA+Jm5ic3A7ICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjYXRlZ29yeT8ucGFyZW50X2NhdGVnb3J5X2lkcz8uaW5jbHVkZXMoY3VycmVudFByb2dyYW0/LmNhdGVnb3J5X2lkKSAmJiAhZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9kZXByZWNhdGVfcHJpbWFyeV9wcm9ncmFtX2ZsYWcnKVwiIGNsYXNzPVwicHJpbWFyeS1sYWJlbFwiPlBSSU1BUlk8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxhcHAtZmxvYXRpbmctYmFyIFtzZWxlY3RlZERhdGFdPVwiY2F0ZWdvcnlEYXRhLnNlbGVjdGVkQ2F0ZWdvcmllc1wiIFtkaXNwbGF5RWxlbWVudEtleV09XCInbmFtZSdcIlxyXG4gICAgICAgIFtzaW5ndWxhclRleHRdPVwiJ1Byb2dyYW0gQ2F0ZWdvcnkgc2VsZWN0ZWQnXCJcclxuICAgICAgICBbcGx1cmFsVGV4dF09XCInUHJvZ3JhbSBDYXRlZ29yaWVzIHNlbGVjdGVkJ1wiIChjbG9zZUV2ZW50KT1cInNhdmUoKVwiXHJcbiAgICAgICAgKGRlbGV0ZUV2ZW50KT1cInJlbW92ZUNhdGVnb3JpZXMoJGV2ZW50KVwiIChjbG9zZUxpc3QpPVwiYmFja1RvUHJvZ3JhbXMoKVwiPlxyXG4gICAgICAgIDwvYXBwLWZsb2F0aW5nLWJhcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX2RlcHJlY2F0ZV9wcmltYXJ5X3Byb2dyYW1fZmxhZycpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyYW0tbGlzdGluZy1jb25maXJtYXRpb25cIiAqbmdJZj1cImRpc3BsYXlDb25maXJtYXRpb25NZXNzYWdlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maXJtYXRpb24tdG9wXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1ibG9ja1wiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTMwOzwvaT48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0XCI+T25jZSB5b3Ugc2VsZWN0IHRoaXMgUHJvZ3JhbSwgYWxsIGRlZmF1bHQgdmFsdWVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIFByb2dyYW0gd2lsbCBhbHNvIGJlIHVwZGF0ZWQuPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlybWF0aW9uLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2VcIj5BcmUgeW91IHN1cmUgeW91IHdvdWxkIGxpa2UgdG8gcHJvY2VlZD88L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibm8tYnRuXCIgKGNsaWNrKT1cInNhdmVDaGFuZ2VzKGZhbHNlKVwiPk5PPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInllcy1idG5cIiAoY2xpY2spPVwic2F2ZUNoYW5nZXModHJ1ZSlcIj5ZRVM8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPGFwcC1sb2FkZXIgKm5nSWY9XCJsb2FkZXJcIj48L2FwcC1sb2FkZXI+XHJcbiA8L2Rpdj5cclxuIl19
|