tango-app-ui-analyse-trax 3.9.2 → 3.9.3
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/.eslintrc.json +37 -0
- package/ng-package.json +7 -0
- package/package.json +12 -25
- package/src/lib/components/action-centre/action-centre.component.html +607 -0
- package/src/lib/components/action-centre/action-centre.component.scss +185 -0
- package/src/lib/components/action-centre/action-centre.component.spec.ts +23 -0
- package/src/lib/components/action-centre/action-centre.component.ts +279 -0
- package/src/lib/components/activity-log/activity-log.component.html +84 -0
- package/src/lib/components/activity-log/activity-log.component.scss +33 -0
- package/src/lib/components/activity-log/activity-log.component.spec.ts +23 -0
- package/src/lib/components/activity-log/activity-log.component.ts +137 -0
- package/src/lib/components/activity-log-v2/activity-log-v2.component.html +189 -0
- package/src/lib/components/activity-log-v2/activity-log-v2.component.scss +162 -0
- package/src/lib/components/activity-log-v2/activity-log-v2.component.spec.ts +23 -0
- package/src/lib/components/activity-log-v2/activity-log-v2.component.ts +517 -0
- package/src/lib/components/activity-log-v2/log-view-popup/date-range-picker/date-range-picker.component.html +19 -0
- package/src/lib/components/activity-log-v2/log-view-popup/date-range-picker/date-range-picker.component.scss +148 -0
- package/src/lib/components/activity-log-v2/log-view-popup/date-range-picker/date-range-picker.component.spec.ts +23 -0
- package/src/lib/components/activity-log-v2/log-view-popup/date-range-picker/date-range-picker.component.ts +141 -0
- package/src/lib/components/activity-log-v2/log-view-popup/store-user-dropdown/store-user-dropdown.component.html +42 -0
- package/src/lib/components/activity-log-v2/log-view-popup/store-user-dropdown/store-user-dropdown.component.scss +49 -0
- package/src/lib/components/activity-log-v2/log-view-popup/store-user-dropdown/store-user-dropdown.component.spec.ts +23 -0
- package/src/lib/components/activity-log-v2/log-view-popup/store-user-dropdown/store-user-dropdown.component.ts +22 -0
- package/src/lib/components/activity-log-v2/log-view-popup/view-action/view-action.component.html +724 -0
- package/src/lib/components/activity-log-v2/log-view-popup/view-action/view-action.component.scss +217 -0
- package/src/lib/components/activity-log-v2/log-view-popup/view-action/view-action.component.spec.ts +23 -0
- package/src/lib/components/activity-log-v2/log-view-popup/view-action/view-action.component.ts +122 -0
- package/src/lib/components/add-checklist/add-checklist.component.html +1459 -0
- package/src/lib/components/add-checklist/add-checklist.component.scss +1205 -0
- package/src/lib/components/add-checklist/add-checklist.component.spec.ts +23 -0
- package/src/lib/components/add-checklist/add-checklist.component.ts +2460 -0
- package/src/lib/components/add-checklist/checklist-popup/checklist-popup.component.html +207 -0
- package/src/lib/components/add-checklist/checklist-popup/checklist-popup.component.scss +213 -0
- package/src/lib/components/add-checklist/checklist-popup/checklist-popup.component.spec.ts +23 -0
- package/src/lib/components/add-checklist/checklist-popup/checklist-popup.component.ts +621 -0
- package/src/lib/components/add-checklist/counter/counter.component.html +43 -0
- package/src/lib/components/add-checklist/counter/counter.component.scss +49 -0
- package/src/lib/components/add-checklist/counter/counter.component.spec.ts +23 -0
- package/src/lib/components/add-checklist/counter/counter.component.ts +123 -0
- package/src/lib/components/add-multitask/add-multitask.component.html +705 -0
- package/src/lib/components/add-multitask/add-multitask.component.scss +296 -0
- package/src/lib/components/add-multitask/add-multitask.component.spec.ts +23 -0
- package/src/lib/components/add-multitask/add-multitask.component.ts +611 -0
- package/src/lib/components/add-multitask/ascending-validator.ts +13 -0
- package/src/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.html +197 -0
- package/src/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.scss +31 -0
- package/src/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.spec.ts +23 -0
- package/src/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.ts +285 -0
- package/src/lib/components/add-multitask/create-task.data.ts +374 -0
- package/src/lib/components/add-multitask/create-task.interface.ts +177 -0
- package/src/lib/components/add-multitask/unique-string-validator.ts +13 -0
- package/src/lib/components/add-multitask/whitespace-validator.ts +11 -0
- package/src/lib/components/add-task/add-task.component.html +654 -0
- package/src/lib/components/add-task/add-task.component.scss +536 -0
- package/src/lib/components/add-task/add-task.component.spec.ts +23 -0
- package/src/lib/components/add-task/add-task.component.ts +569 -0
- package/src/lib/components/add-task/ascending-validator.ts +13 -0
- package/src/lib/components/add-task/create-task.data.ts +374 -0
- package/src/lib/components/add-task/create-task.interface.ts +192 -0
- package/src/lib/components/add-task/unique-string-validator.ts +13 -0
- package/src/lib/components/add-task/whitespace-validator.ts +11 -0
- package/src/lib/components/approval-popup/approval-popup.component.html +25 -0
- package/src/lib/components/approval-popup/approval-popup.component.scss +3 -0
- package/src/lib/components/approval-popup/approval-popup.component.spec.ts +23 -0
- package/src/lib/components/approval-popup/approval-popup.component.ts +26 -0
- package/src/lib/components/checklist/checklist.component.html +330 -0
- package/src/lib/components/checklist/checklist.component.scss +112 -0
- package/src/lib/components/checklist/checklist.component.spec.ts +23 -0
- package/src/lib/components/checklist/checklist.component.ts +344 -0
- package/src/lib/components/checklist-configure/assign/assign.component.html +665 -0
- package/src/lib/components/checklist-configure/assign/assign.component.scss +219 -0
- package/src/lib/components/checklist-configure/assign/assign.component.spec.ts +23 -0
- package/src/lib/components/checklist-configure/assign/assign.component.ts +932 -0
- package/src/lib/components/checklist-configure/checklist-configure.component.html +4340 -0
- package/src/lib/components/checklist-configure/checklist-configure.component.scss +2338 -0
- package/src/lib/components/checklist-configure/checklist-configure.component.spec.ts +23 -0
- package/src/lib/components/checklist-configure/checklist-configure.component.ts +4659 -0
- package/src/lib/components/checklistlayout/checklistlayout.component.html +30 -0
- package/src/lib/components/checklistlayout/checklistlayout.component.scss +15 -0
- package/src/lib/components/checklistlayout/checklistlayout.component.spec.ts +23 -0
- package/src/lib/components/checklistlayout/checklistlayout.component.ts +47 -0
- package/src/lib/components/chip-dropdown/chip-dropdown.component.html +36 -0
- package/src/lib/components/chip-dropdown/chip-dropdown.component.scss +97 -0
- package/src/lib/components/chip-dropdown/chip-dropdown.component.spec.ts +23 -0
- package/src/lib/components/chip-dropdown/chip-dropdown.component.ts +125 -0
- package/src/lib/components/create-task/create-task.component.html +2003 -0
- package/src/lib/components/create-task/create-task.component.scss +272 -0
- package/src/lib/components/create-task/create-task.component.spec.ts +23 -0
- package/src/lib/components/create-task/create-task.component.ts +614 -0
- package/src/lib/components/create-task/create-task.data.ts +372 -0
- package/src/lib/components/create-task/create-task.interface.ts +182 -0
- package/src/lib/components/create-task/validators/ascending-validator.ts +13 -0
- package/src/lib/components/create-task/validators/unique-string-validator.ts +13 -0
- package/src/lib/components/create-task/validators/whitespace-validator.ts +11 -0
- package/src/lib/components/custom-select/custom-select.component.html +44 -0
- package/src/lib/components/custom-select/custom-select.component.scss +144 -0
- package/src/lib/components/custom-select/custom-select.component.spec.ts +23 -0
- package/src/lib/components/custom-select/custom-select.component.ts +265 -0
- package/src/lib/components/dashboard/dashboard.component.html +1076 -0
- package/src/lib/components/dashboard/dashboard.component.scss +237 -0
- package/src/lib/components/dashboard/dashboard.component.spec.ts +23 -0
- package/src/lib/components/dashboard/dashboard.component.ts +539 -0
- package/src/lib/components/dashboard-info/dashboard-info.component.html +1420 -0
- package/src/lib/components/dashboard-info/dashboard-info.component.scss +409 -0
- package/src/lib/components/dashboard-info/dashboard-info.component.spec.ts +23 -0
- package/src/lib/components/dashboard-info/dashboard-info.component.ts +772 -0
- package/src/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.html +110 -0
- package/src/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.scss +260 -0
- package/src/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.spec.ts +23 -0
- package/src/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.ts +143 -0
- package/src/lib/components/dashboard-layout/dashboard-layout.component.html +1 -0
- package/src/lib/components/dashboard-layout/dashboard-layout.component.scss +0 -0
- package/src/lib/components/dashboard-layout/dashboard-layout.component.spec.ts +23 -0
- package/src/lib/components/dashboard-layout/dashboard-layout.component.ts +10 -0
- package/src/lib/components/disabled-select/disabled-select.component.html +44 -0
- package/src/lib/components/disabled-select/disabled-select.component.scss +149 -0
- package/src/lib/components/disabled-select/disabled-select.component.spec.ts +23 -0
- package/src/lib/components/disabled-select/disabled-select.component.ts +146 -0
- package/src/lib/components/export-gallery/export-gallery.component.html +175 -0
- package/src/lib/components/export-gallery/export-gallery.component.scss +200 -0
- package/src/lib/components/export-gallery/export-gallery.component.spec.ts +23 -0
- package/src/lib/components/export-gallery/export-gallery.component.ts +263 -0
- package/src/lib/components/eye-test-audit/chip-dropdown/chip-dropdown.component.html +36 -0
- package/src/lib/components/eye-test-audit/chip-dropdown/chip-dropdown.component.scss +97 -0
- package/src/lib/components/eye-test-audit/chip-dropdown/chip-dropdown.component.spec.ts +23 -0
- package/src/lib/components/eye-test-audit/chip-dropdown/chip-dropdown.component.ts +104 -0
- package/src/lib/components/eye-test-audit/custom-select/custom-select.component.html +44 -0
- package/src/lib/components/eye-test-audit/custom-select/custom-select.component.scss +144 -0
- package/src/lib/components/eye-test-audit/custom-select/custom-select.component.spec.ts +23 -0
- package/src/lib/components/eye-test-audit/custom-select/custom-select.component.ts +265 -0
- package/src/lib/components/eye-test-audit/eye-test/eye-test.component.html +1804 -0
- package/src/lib/components/eye-test-audit/eye-test/eye-test.component.scss +806 -0
- package/src/lib/components/eye-test-audit/eye-test/eye-test.component.spec.ts +23 -0
- package/src/lib/components/eye-test-audit/eye-test/eye-test.component.ts +1890 -0
- package/src/lib/components/eye-test-audit/eye-test/send-alert/send-alert.component.html +25 -0
- package/src/lib/components/eye-test-audit/eye-test/send-alert/send-alert.component.scss +0 -0
- package/src/lib/components/eye-test-audit/eye-test/send-alert/send-alert.component.spec.ts +23 -0
- package/src/lib/components/eye-test-audit/eye-test/send-alert/send-alert.component.ts +20 -0
- package/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit-routing.module.ts +26 -0
- package/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.html +1 -0
- package/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.scss +0 -0
- package/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.spec.ts +23 -0
- package/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.ts +24 -0
- package/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.module.ts +44 -0
- package/src/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.html +490 -0
- package/src/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.scss +721 -0
- package/src/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.spec.ts +23 -0
- package/src/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.ts +1017 -0
- package/src/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.html +708 -0
- package/src/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.scss +247 -0
- package/src/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.spec.ts +23 -0
- package/src/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.ts +446 -0
- package/src/lib/components/eye-test-audit/group-select/group-select.component.html +44 -0
- package/src/lib/components/eye-test-audit/group-select/group-select.component.scss +144 -0
- package/src/lib/components/eye-test-audit/group-select/group-select.component.spec.ts +23 -0
- package/src/lib/components/eye-test-audit/group-select/group-select.component.ts +147 -0
- package/src/lib/components/eye-test-audit/reactive-select/reactive-select.component.html +18 -0
- package/src/lib/components/eye-test-audit/reactive-select/reactive-select.component.scss +49 -0
- package/src/lib/components/eye-test-audit/reactive-select/reactive-select.component.spec.ts +23 -0
- package/src/lib/components/eye-test-audit/reactive-select/reactive-select.component.ts +104 -0
- package/src/lib/components/eye-test-audit/select-drop/select-drop.component.html +44 -0
- package/src/lib/components/eye-test-audit/select-drop/select-drop.component.scss +144 -0
- package/src/lib/components/eye-test-audit/select-drop/select-drop.component.spec.ts +23 -0
- package/src/lib/components/eye-test-audit/select-drop/select-drop.component.ts +152 -0
- package/src/lib/components/eye-test-audit/services/eye-test-audit.service.spec.ts +16 -0
- package/src/lib/components/eye-test-audit/services/eye-test-audit.service.ts +190 -0
- package/src/lib/components/flag-layout/flag-layout.component.html +1 -0
- package/src/lib/components/flag-layout/flag-layout.component.scss +0 -0
- package/src/lib/components/flag-layout/flag-layout.component.spec.ts +23 -0
- package/src/lib/components/flag-layout/flag-layout.component.ts +10 -0
- package/src/lib/components/flags/flags.component.html +473 -0
- package/src/lib/components/flags/flags.component.scss +86 -0
- package/src/lib/components/flags/flags.component.spec.ts +23 -0
- package/src/lib/components/flags/flags.component.ts +280 -0
- package/{lib/components/flags/flags.interface.d.ts → src/lib/components/flags/flags.interface.ts} +73 -65
- package/src/lib/components/flags-info/flags-info.component.html +6012 -0
- package/src/lib/components/flags-info/flags-info.component.scss +278 -0
- package/src/lib/components/flags-info/flags-info.component.spec.ts +23 -0
- package/src/lib/components/flags-info/flags-info.component.ts +490 -0
- package/src/lib/components/flags-info/flags-info.interface.ts +441 -0
- package/src/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.html +1 -0
- package/src/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.scss +4 -0
- package/src/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.ts +78 -0
- package/src/lib/components/flags-new/flags-new.component.html +904 -0
- package/src/lib/components/flags-new/flags-new.component.scss +121 -0
- package/src/lib/components/flags-new/flags-new.component.spec.ts +23 -0
- package/src/lib/components/flags-new/flags-new.component.ts +357 -0
- package/{lib/components/flags-new/flags-new.interface.d.ts → src/lib/components/flags-new/flags-new.interface.ts} +90 -81
- package/src/lib/components/gallery/gallery.component.html +3660 -0
- package/src/lib/components/gallery/gallery.component.scss +930 -0
- package/src/lib/components/gallery/gallery.component.ts +3527 -0
- package/src/lib/components/group-select/group-select.component.html +44 -0
- package/src/lib/components/group-select/group-select.component.scss +144 -0
- package/src/lib/components/group-select/group-select.component.spec.ts +23 -0
- package/src/lib/components/group-select/group-select.component.ts +145 -0
- package/src/lib/components/image-popup/image-popup.component.html +11 -0
- package/src/lib/components/image-popup/image-popup.component.scss +5 -0
- package/src/lib/components/image-popup/image-popup.component.ts +18 -0
- package/src/lib/components/lib/custom-select/custom-select.component.html +42 -0
- package/src/lib/components/lib/custom-select/custom-select.component.scss +131 -0
- package/src/lib/components/lib/custom-select/custom-select.component.spec.ts +23 -0
- package/src/lib/components/lib/custom-select/custom-select.component.ts +151 -0
- package/src/lib/components/manage-task/manage-task.component.html +265 -0
- package/src/lib/components/manage-task/manage-task.component.scss +69 -0
- package/src/lib/components/manage-task/manage-task.component.spec.ts +23 -0
- package/src/lib/components/manage-task/manage-task.component.ts +267 -0
- package/src/lib/components/managechecklist/managechecklist.component.html +176 -0
- package/src/lib/components/managechecklist/managechecklist.component.scss +43 -0
- package/src/lib/components/managechecklist/managechecklist.component.spec.ts +23 -0
- package/src/lib/components/managechecklist/managechecklist.component.ts +176 -0
- package/src/lib/components/multi-chip-dropdown/multi-chip-dropdown.component.html +46 -0
- package/src/lib/components/multi-chip-dropdown/multi-chip-dropdown.component.scss +181 -0
- package/src/lib/components/multi-chip-dropdown/multi-chip-dropdown.component.spec.ts +23 -0
- package/src/lib/components/multi-chip-dropdown/multi-chip-dropdown.component.ts +221 -0
- package/src/lib/components/multi-date-datepicker/multi-date-datepicker.component.html +36 -0
- package/src/lib/components/multi-date-datepicker/multi-date-datepicker.component.scss +89 -0
- package/src/lib/components/multi-date-datepicker/multi-date-datepicker.component.spec.ts +23 -0
- package/src/lib/components/multi-date-datepicker/multi-date-datepicker.component.ts +118 -0
- package/src/lib/components/orders/orders.component.html +203 -0
- package/src/lib/components/orders/orders.component.scss +180 -0
- package/src/lib/components/orders/orders.component.spec.ts +25 -0
- package/src/lib/components/orders/orders.component.ts +197 -0
- package/src/lib/components/pagination/pagination.component.html +28 -0
- package/src/lib/components/pagination/pagination.component.scss +6 -0
- package/src/lib/components/pagination/pagination.component.spec.ts +23 -0
- package/src/lib/components/pagination/pagination.component.ts +54 -0
- package/src/lib/components/reactive-select/reactive-select.component.html +18 -0
- package/src/lib/components/reactive-select/reactive-select.component.scss +48 -0
- package/src/lib/components/reactive-select/reactive-select.component.spec.ts +23 -0
- package/src/lib/components/reactive-select/reactive-select.component.ts +104 -0
- package/src/lib/components/reports/date-picker/date-picker.component.html +54 -0
- package/src/lib/components/reports/date-picker/date-picker.component.scss +156 -0
- package/src/lib/components/reports/date-picker/date-picker.component.spec.ts +23 -0
- package/src/lib/components/reports/date-picker/date-picker.component.ts +60 -0
- package/src/lib/components/reports/reports.component.html +225 -0
- package/src/lib/components/reports/reports.component.scss +69 -0
- package/src/lib/components/reports/reports.component.spec.ts +23 -0
- package/src/lib/components/reports/reports.component.ts +334 -0
- package/{lib/components/reports/reports.interface.d.ts → src/lib/components/reports/reports.interface.ts} +50 -46
- package/src/lib/components/tango-analyse-trax/tango-analyse-trax.component.html +1 -0
- package/src/lib/components/tango-analyse-trax/tango-analyse-trax.component.scss +15 -0
- package/src/lib/components/tango-analyse-trax/tango-analyse-trax.component.spec.ts +23 -0
- package/src/lib/components/tango-analyse-trax/tango-analyse-trax.component.ts +31 -0
- package/src/lib/components/task/task.component.html +322 -0
- package/src/lib/components/task/task.component.scss +169 -0
- package/src/lib/components/task/task.component.spec.ts +23 -0
- package/src/lib/components/task/task.component.ts +340 -0
- package/src/lib/components/task-configure/task-configure.component.html +737 -0
- package/src/lib/components/task-configure/task-configure.component.scss +569 -0
- package/src/lib/components/task-configure/task-configure.component.spec.ts +23 -0
- package/src/lib/components/task-configure/task-configure.component.ts +1603 -0
- package/src/lib/components/task-configure/task-configure.interface.ts +138 -0
- package/src/lib/components/task-info/task-info.component.html +390 -0
- package/src/lib/components/task-info/task-info.component.scss +56 -0
- package/src/lib/components/task-info/task-info.component.spec.ts +23 -0
- package/src/lib/components/task-info/task-info.component.ts +400 -0
- package/src/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.html +141 -0
- package/src/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.scss +460 -0
- package/src/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.spec.ts +23 -0
- package/src/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.ts +202 -0
- package/src/lib/components/task-layout/task-layout.component.html +1 -0
- package/src/lib/components/task-layout/task-layout.component.scss +0 -0
- package/src/lib/components/task-layout/task-layout.component.spec.ts +23 -0
- package/src/lib/components/task-layout/task-layout.component.ts +10 -0
- package/src/lib/components/task-logs/task-logs.component.html +97 -0
- package/src/lib/components/task-logs/task-logs.component.scss +301 -0
- package/src/lib/components/task-logs/task-logs.component.spec.ts +23 -0
- package/src/lib/components/task-logs/task-logs.component.ts +80 -0
- package/src/lib/components/trax-run-ai-popup/trax-run-ai-popup.component.html +84 -0
- package/src/lib/components/trax-run-ai-popup/trax-run-ai-popup.component.scss +229 -0
- package/src/lib/components/trax-run-ai-popup/trax-run-ai-popup.component.spec.ts +23 -0
- package/src/lib/components/trax-run-ai-popup/trax-run-ai-popup.component.ts +111 -0
- package/src/lib/components/trax-store/trax-store.component.html +78 -0
- package/src/lib/components/trax-store/trax-store.component.scss +134 -0
- package/src/lib/components/trax-store/trax-store.component.spec.ts +23 -0
- package/src/lib/components/trax-store/trax-store.component.ts +172 -0
- package/src/lib/components/traxpopup/traxpopup.component.html +130 -0
- package/src/lib/components/traxpopup/traxpopup.component.scss +225 -0
- package/src/lib/components/traxpopup/traxpopup.component.spec.ts +23 -0
- package/src/lib/components/traxpopup/traxpopup.component.ts +71 -0
- package/src/lib/services/trax.service.spec.ts +16 -0
- package/src/lib/services/trax.service.ts +789 -0
- package/src/lib/tango-analyse-trax-routing.module.ts +151 -0
- package/src/lib/tango-analyse-trax.module.ts +140 -0
- package/{public-api.d.ts → src/public-api.ts} +6 -2
- package/tsconfig.lib.json +14 -0
- package/tsconfig.lib.prod.json +10 -0
- package/tsconfig.spec.json +14 -0
- package/esm2022/lib/components/action-centre/action-centre.component.mjs +0 -288
- package/esm2022/lib/components/activity-log/activity-log.component.mjs +0 -150
- package/esm2022/lib/components/activity-log-v2/activity-log-v2.component.mjs +0 -502
- package/esm2022/lib/components/activity-log-v2/log-view-popup/date-range-picker/date-range-picker.component.mjs +0 -114
- package/esm2022/lib/components/activity-log-v2/log-view-popup/store-user-dropdown/store-user-dropdown.component.mjs +0 -24
- package/esm2022/lib/components/activity-log-v2/log-view-popup/view-action/view-action.component.mjs +0 -126
- package/esm2022/lib/components/add-checklist/add-checklist.component.mjs +0 -2352
- package/esm2022/lib/components/add-checklist/checklist-popup/checklist-popup.component.mjs +0 -612
- package/esm2022/lib/components/add-checklist/counter/counter.component.mjs +0 -138
- package/esm2022/lib/components/add-multitask/add-multitask.component.mjs +0 -604
- package/esm2022/lib/components/add-multitask/ascending-validator.mjs +0 -11
- package/esm2022/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.mjs +0 -297
- package/esm2022/lib/components/add-multitask/create-task.data.mjs +0 -372
- package/esm2022/lib/components/add-multitask/create-task.interface.mjs +0 -2
- package/esm2022/lib/components/add-multitask/unique-string-validator.mjs +0 -10
- package/esm2022/lib/components/add-multitask/whitespace-validator.mjs +0 -10
- package/esm2022/lib/components/add-task/add-task.component.mjs +0 -561
- package/esm2022/lib/components/add-task/ascending-validator.mjs +0 -11
- package/esm2022/lib/components/add-task/create-task.data.mjs +0 -372
- package/esm2022/lib/components/add-task/create-task.interface.mjs +0 -2
- package/esm2022/lib/components/add-task/unique-string-validator.mjs +0 -10
- package/esm2022/lib/components/add-task/whitespace-validator.mjs +0 -10
- package/esm2022/lib/components/approval-popup/approval-popup.component.mjs +0 -30
- package/esm2022/lib/components/checklist/checklist.component.mjs +0 -327
- package/esm2022/lib/components/checklist-configure/assign/assign.component.mjs +0 -912
- package/esm2022/lib/components/checklist-configure/checklist-configure.component.mjs +0 -4161
- package/esm2022/lib/components/checklistlayout/checklistlayout.component.mjs +0 -44
- package/esm2022/lib/components/chip-dropdown/chip-dropdown.component.mjs +0 -120
- package/esm2022/lib/components/create-task/create-task.component.mjs +0 -585
- package/esm2022/lib/components/create-task/create-task.data.mjs +0 -372
- package/esm2022/lib/components/create-task/create-task.interface.mjs +0 -2
- package/esm2022/lib/components/create-task/validators/ascending-validator.mjs +0 -11
- package/esm2022/lib/components/create-task/validators/unique-string-validator.mjs +0 -10
- package/esm2022/lib/components/create-task/validators/whitespace-validator.mjs +0 -10
- package/esm2022/lib/components/custom-select/custom-select.component.mjs +0 -240
- package/esm2022/lib/components/dashboard/dashboard.component.mjs +0 -532
- package/esm2022/lib/components/dashboard-info/dashboard-info.component.mjs +0 -741
- package/esm2022/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.mjs +0 -155
- package/esm2022/lib/components/dashboard-layout/dashboard-layout.component.mjs +0 -12
- package/esm2022/lib/components/disabled-select/disabled-select.component.mjs +0 -158
- package/esm2022/lib/components/export-gallery/export-gallery.component.mjs +0 -266
- package/esm2022/lib/components/eye-test-audit/chip-dropdown/chip-dropdown.component.mjs +0 -105
- package/esm2022/lib/components/eye-test-audit/custom-select/custom-select.component.mjs +0 -240
- package/esm2022/lib/components/eye-test-audit/eye-test/eye-test.component.mjs +0 -1733
- package/esm2022/lib/components/eye-test-audit/eye-test/send-alert/send-alert.component.mjs +0 -24
- package/esm2022/lib/components/eye-test-audit/eye-test-audit/eye-test-audit-routing.module.mjs +0 -34
- package/esm2022/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.mjs +0 -27
- package/esm2022/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.module.mjs +0 -71
- package/esm2022/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.mjs +0 -823
- package/esm2022/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.mjs +0 -412
- package/esm2022/lib/components/eye-test-audit/group-select/group-select.component.mjs +0 -157
- package/esm2022/lib/components/eye-test-audit/reactive-select/reactive-select.component.mjs +0 -105
- package/esm2022/lib/components/eye-test-audit/select-drop/select-drop.component.mjs +0 -162
- package/esm2022/lib/components/eye-test-audit/services/eye-test-audit.service.mjs +0 -166
- package/esm2022/lib/components/flag-layout/flag-layout.component.mjs +0 -12
- package/esm2022/lib/components/flags/flags.component.mjs +0 -263
- package/esm2022/lib/components/flags/flags.interface.mjs +0 -2
- package/esm2022/lib/components/flags-info/flags-info.component.mjs +0 -452
- package/esm2022/lib/components/flags-info/flags-info.interface.mjs +0 -2
- package/esm2022/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.mjs +0 -71
- package/esm2022/lib/components/flags-new/flags-new.component.mjs +0 -335
- package/esm2022/lib/components/flags-new/flags-new.interface.mjs +0 -2
- package/esm2022/lib/components/gallery/gallery.component.mjs +0 -3402
- package/esm2022/lib/components/group-select/group-select.component.mjs +0 -155
- package/esm2022/lib/components/image-popup/image-popup.component.mjs +0 -25
- package/esm2022/lib/components/lib/custom-select/custom-select.component.mjs +0 -158
- package/esm2022/lib/components/manage-task/manage-task.component.mjs +0 -264
- package/esm2022/lib/components/managechecklist/managechecklist.component.mjs +0 -186
- package/esm2022/lib/components/multi-chip-dropdown/multi-chip-dropdown.component.mjs +0 -229
- package/esm2022/lib/components/multi-date-datepicker/multi-date-datepicker.component.mjs +0 -124
- package/esm2022/lib/components/orders/orders.component.mjs +0 -171
- package/esm2022/lib/components/pagination/pagination.component.mjs +0 -62
- package/esm2022/lib/components/reactive-select/reactive-select.component.mjs +0 -108
- package/esm2022/lib/components/reports/date-picker/date-picker.component.mjs +0 -60
- package/esm2022/lib/components/reports/reports.component.mjs +0 -300
- package/esm2022/lib/components/reports/reports.interface.mjs +0 -2
- package/esm2022/lib/components/tango-analyse-trax/tango-analyse-trax.component.mjs +0 -32
- package/esm2022/lib/components/task/task.component.mjs +0 -341
- package/esm2022/lib/components/task-configure/task-configure.component.mjs +0 -1532
- package/esm2022/lib/components/task-configure/task-configure.interface.mjs +0 -2
- package/esm2022/lib/components/task-info/task-info.component.mjs +0 -375
- package/esm2022/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.mjs +0 -208
- package/esm2022/lib/components/task-layout/task-layout.component.mjs +0 -12
- package/esm2022/lib/components/task-logs/task-logs.component.mjs +0 -104
- package/esm2022/lib/components/trax-run-ai-popup/trax-run-ai-popup.component.mjs +0 -107
- package/esm2022/lib/components/trax-store/trax-store.component.mjs +0 -179
- package/esm2022/lib/components/traxpopup/traxpopup.component.mjs +0 -70
- package/esm2022/lib/services/trax.service.mjs +0 -559
- package/esm2022/lib/tango-analyse-trax-routing.module.mjs +0 -153
- package/esm2022/lib/tango-analyse-trax.module.mjs +0 -221
- package/esm2022/public-api.mjs +0 -6
- package/esm2022/tango-app-ui-analyse-trax.mjs +0 -5
- package/fesm2022/tango-app-ui-analyse-trax.mjs +0 -28896
- package/fesm2022/tango-app-ui-analyse-trax.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/components/action-centre/action-centre.component.d.ts +0 -68
- package/lib/components/activity-log/activity-log.component.d.ts +0 -39
- package/lib/components/activity-log-v2/activity-log-v2.component.d.ts +0 -78
- package/lib/components/activity-log-v2/log-view-popup/date-range-picker/date-range-picker.component.d.ts +0 -24
- package/lib/components/activity-log-v2/log-view-popup/store-user-dropdown/store-user-dropdown.component.d.ts +0 -9
- package/lib/components/activity-log-v2/log-view-popup/view-action/view-action.component.d.ts +0 -34
- package/lib/components/add-checklist/add-checklist.component.d.ts +0 -121
- package/lib/components/add-checklist/checklist-popup/checklist-popup.component.d.ts +0 -45
- package/lib/components/add-checklist/counter/counter.component.d.ts +0 -29
- package/lib/components/add-multitask/add-multitask.component.d.ts +0 -102
- package/lib/components/add-multitask/ascending-validator.d.ts +0 -2
- package/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.d.ts +0 -45
- package/lib/components/add-multitask/create-task.data.d.ts +0 -293
- package/lib/components/add-multitask/create-task.interface.d.ts +0 -159
- package/lib/components/add-multitask/unique-string-validator.d.ts +0 -2
- package/lib/components/add-multitask/whitespace-validator.d.ts +0 -2
- package/lib/components/add-task/add-task.component.d.ts +0 -89
- package/lib/components/add-task/ascending-validator.d.ts +0 -2
- package/lib/components/add-task/create-task.data.d.ts +0 -293
- package/lib/components/add-task/create-task.interface.d.ts +0 -161
- package/lib/components/add-task/unique-string-validator.d.ts +0 -2
- package/lib/components/add-task/whitespace-validator.d.ts +0 -2
- package/lib/components/approval-popup/approval-popup.component.d.ts +0 -14
- package/lib/components/checklist/checklist.component.d.ts +0 -40
- package/lib/components/checklist-configure/assign/assign.component.d.ts +0 -105
- package/lib/components/checklist-configure/checklist-configure.component.d.ts +0 -325
- package/lib/components/checklistlayout/checklistlayout.component.d.ts +0 -15
- package/lib/components/chip-dropdown/chip-dropdown.component.d.ts +0 -28
- package/lib/components/create-task/create-task.component.d.ts +0 -76
- package/lib/components/create-task/create-task.data.d.ts +0 -293
- package/lib/components/create-task/create-task.interface.d.ts +0 -163
- package/lib/components/create-task/validators/ascending-validator.d.ts +0 -2
- package/lib/components/create-task/validators/unique-string-validator.d.ts +0 -2
- package/lib/components/create-task/validators/whitespace-validator.d.ts +0 -2
- package/lib/components/custom-select/custom-select.component.d.ts +0 -35
- package/lib/components/dashboard/dashboard.component.d.ts +0 -80
- package/lib/components/dashboard-info/dashboard-info.component.d.ts +0 -117
- package/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.d.ts +0 -41
- package/lib/components/dashboard-layout/dashboard-layout.component.d.ts +0 -5
- package/lib/components/disabled-select/disabled-select.component.d.ts +0 -34
- package/lib/components/export-gallery/export-gallery.component.d.ts +0 -44
- package/lib/components/eye-test-audit/chip-dropdown/chip-dropdown.component.d.ts +0 -26
- package/lib/components/eye-test-audit/custom-select/custom-select.component.d.ts +0 -35
- package/lib/components/eye-test-audit/eye-test/eye-test.component.d.ts +0 -218
- package/lib/components/eye-test-audit/eye-test/send-alert/send-alert.component.d.ts +0 -12
- package/lib/components/eye-test-audit/eye-test-audit/eye-test-audit-routing.module.d.ts +0 -7
- package/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.d.ts +0 -11
- package/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.module.d.ts +0 -21
- package/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.d.ts +0 -129
- package/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.d.ts +0 -86
- package/lib/components/eye-test-audit/group-select/group-select.component.d.ts +0 -33
- package/lib/components/eye-test-audit/reactive-select/reactive-select.component.d.ts +0 -32
- package/lib/components/eye-test-audit/select-drop/select-drop.component.d.ts +0 -33
- package/lib/components/eye-test-audit/services/eye-test-audit.service.d.ts +0 -47
- package/lib/components/flag-layout/flag-layout.component.d.ts +0 -5
- package/lib/components/flags/flags.component.d.ts +0 -52
- package/lib/components/flags-info/flags-info.component.d.ts +0 -73
- package/lib/components/flags-info/flags-info.interface.d.ts +0 -430
- package/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.d.ts +0 -13
- package/lib/components/flags-new/flags-new.component.d.ts +0 -60
- package/lib/components/gallery/gallery.component.d.ts +0 -261
- package/lib/components/group-select/group-select.component.d.ts +0 -33
- package/lib/components/image-popup/image-popup.component.d.ts +0 -11
- package/lib/components/lib/custom-select/custom-select.component.d.ts +0 -33
- package/lib/components/manage-task/manage-task.component.d.ts +0 -47
- package/lib/components/managechecklist/managechecklist.component.d.ts +0 -33
- package/lib/components/multi-chip-dropdown/multi-chip-dropdown.component.d.ts +0 -40
- package/lib/components/multi-date-datepicker/multi-date-datepicker.component.d.ts +0 -27
- package/lib/components/orders/orders.component.d.ts +0 -38
- package/lib/components/pagination/pagination.component.d.ts +0 -16
- package/lib/components/reactive-select/reactive-select.component.d.ts +0 -32
- package/lib/components/reports/date-picker/date-picker.component.d.ts +0 -23
- package/lib/components/reports/reports.component.d.ts +0 -55
- package/lib/components/tango-analyse-trax/tango-analyse-trax.component.d.ts +0 -14
- package/lib/components/task/task.component.d.ts +0 -70
- package/lib/components/task-configure/task-configure.component.d.ts +0 -142
- package/lib/components/task-configure/task-configure.interface.d.ts +0 -128
- package/lib/components/task-info/task-info.component.d.ts +0 -76
- package/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.d.ts +0 -61
- package/lib/components/task-layout/task-layout.component.d.ts +0 -5
- package/lib/components/task-logs/task-logs.component.d.ts +0 -27
- package/lib/components/trax-run-ai-popup/trax-run-ai-popup.component.d.ts +0 -26
- package/lib/components/trax-store/trax-store.component.d.ts +0 -45
- package/lib/components/traxpopup/traxpopup.component.d.ts +0 -24
- package/lib/services/trax.service.d.ts +0 -175
- package/lib/tango-analyse-trax-routing.module.d.ts +0 -7
- package/lib/tango-analyse-trax.module.d.ts +0 -68
|
@@ -1,502 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { Subject, debounceTime, takeUntil } from "rxjs";
|
|
3
|
-
import dayjs from 'dayjs';
|
|
4
|
-
import utc from 'dayjs/plugin/utc';
|
|
5
|
-
import { ViewActionComponent } from './log-view-popup/view-action/view-action.component';
|
|
6
|
-
import relativeTime from 'dayjs/plugin/relativeTime';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/router";
|
|
9
|
-
import * as i2 from "tango-app-ui-global";
|
|
10
|
-
import * as i3 from "tango-app-ui-shared";
|
|
11
|
-
import * as i4 from "../../services/trax.service";
|
|
12
|
-
import * as i5 from "@ng-bootstrap/ng-bootstrap";
|
|
13
|
-
import * as i6 from "@angular/common";
|
|
14
|
-
import * as i7 from "@angular/forms";
|
|
15
|
-
import * as i8 from "./log-view-popup/date-range-picker/date-range-picker.component";
|
|
16
|
-
dayjs.extend(utc);
|
|
17
|
-
dayjs.extend(relativeTime);
|
|
18
|
-
dayjs.extend(utc);
|
|
19
|
-
export class ActivityLogV2Component {
|
|
20
|
-
route;
|
|
21
|
-
router;
|
|
22
|
-
gs;
|
|
23
|
-
changeDetector;
|
|
24
|
-
toast;
|
|
25
|
-
TraxService;
|
|
26
|
-
pageInfo;
|
|
27
|
-
activatedRoute;
|
|
28
|
-
modalService;
|
|
29
|
-
dayjs = dayjs;
|
|
30
|
-
destroy$ = new Subject();
|
|
31
|
-
isExport = false;
|
|
32
|
-
itemsPerPage = 10;
|
|
33
|
-
currentPage = 1;
|
|
34
|
-
totalItems = 0;
|
|
35
|
-
paginationSizes = [];
|
|
36
|
-
pageSize = 10;
|
|
37
|
-
sortColumName = "";
|
|
38
|
-
sortBy = "";
|
|
39
|
-
sortDirection = "";
|
|
40
|
-
searchInput = "";
|
|
41
|
-
headerData;
|
|
42
|
-
searchValue;
|
|
43
|
-
limit;
|
|
44
|
-
offset;
|
|
45
|
-
searchDisabled = false;
|
|
46
|
-
taskLoading = true;
|
|
47
|
-
taskNoData = false;
|
|
48
|
-
receivedData = "checklist";
|
|
49
|
-
dataObject = [
|
|
50
|
-
{
|
|
51
|
-
Description: "Actions",
|
|
52
|
-
Issues: [
|
|
53
|
-
{ text: "Created by", id: "created" },
|
|
54
|
-
{ text: "Updated by", id: "updated" },
|
|
55
|
-
{ text: "Saved as Draft", id: "draft" },
|
|
56
|
-
{ text: "Published by", id: "published" },
|
|
57
|
-
{ text: "Submitted by", id: "submit" },
|
|
58
|
-
{ text: "Started by", id: "start" },
|
|
59
|
-
{ text: "Approved by", id: "approved" },
|
|
60
|
-
{ text: "Redo Created by", id: "redo" },
|
|
61
|
-
{ text: "Subsequent Redo Created by", id: "multiredo" },
|
|
62
|
-
{ text: "Task Created by", id: "task_created" },
|
|
63
|
-
// { text: 'Re-Opened by', id: 'reopened' },
|
|
64
|
-
{ text: "Edited by", id: "edited" },
|
|
65
|
-
{ text: "Unpublished by", id: "unpublished" },
|
|
66
|
-
{ text: "Deleted by", id: "deleted" },
|
|
67
|
-
{ text: "Duplicated by", id: "duplicated" },
|
|
68
|
-
{ text: "Reinitiated by", id: "reinitiated" },
|
|
69
|
-
],
|
|
70
|
-
},
|
|
71
|
-
// {
|
|
72
|
-
// Description: 'Coverage',
|
|
73
|
-
// Issues: [
|
|
74
|
-
// { text: 'Checklist', id: 'checklist' },
|
|
75
|
-
// ],
|
|
76
|
-
// },
|
|
77
|
-
];
|
|
78
|
-
activityLogTableData = [];
|
|
79
|
-
type = "checklist";
|
|
80
|
-
activityLogFilter = [];
|
|
81
|
-
// reloadDate: string;
|
|
82
|
-
sourceCheckList_id;
|
|
83
|
-
checklistId;
|
|
84
|
-
// coverageType: any = [];
|
|
85
|
-
userEmailes = [];
|
|
86
|
-
checklistName;
|
|
87
|
-
editRequestData;
|
|
88
|
-
isActivityLog = false;
|
|
89
|
-
selectedDateRange = {
|
|
90
|
-
startDate: dayjs().subtract(7, "days"),
|
|
91
|
-
endDate: dayjs().subtract(1, "days"),
|
|
92
|
-
};
|
|
93
|
-
isCustomDate = (m) => {
|
|
94
|
-
const isValidDate = m > this.dayjs();
|
|
95
|
-
return isValidDate ? "invalid-date" : false;
|
|
96
|
-
};
|
|
97
|
-
selectedFilters = {
|
|
98
|
-
client: null,
|
|
99
|
-
clientName: null,
|
|
100
|
-
clients: [],
|
|
101
|
-
store: null,
|
|
102
|
-
stores: [],
|
|
103
|
-
// date: null,
|
|
104
|
-
date: {
|
|
105
|
-
startDate: dayjs().subtract(7, "days").format("YYYY-MM-DD"),
|
|
106
|
-
endDate: dayjs().subtract(1, "days").format("YYYY-MM-DD"),
|
|
107
|
-
},
|
|
108
|
-
group: [],
|
|
109
|
-
location: [],
|
|
110
|
-
};
|
|
111
|
-
count = 0;
|
|
112
|
-
constructor(route, router, gs, changeDetector, toast, TraxService, pageInfo, activatedRoute, modalService) {
|
|
113
|
-
this.route = route;
|
|
114
|
-
this.router = router;
|
|
115
|
-
this.gs = gs;
|
|
116
|
-
this.changeDetector = changeDetector;
|
|
117
|
-
this.toast = toast;
|
|
118
|
-
this.TraxService = TraxService;
|
|
119
|
-
this.pageInfo = pageInfo;
|
|
120
|
-
this.activatedRoute = activatedRoute;
|
|
121
|
-
this.modalService = modalService;
|
|
122
|
-
this.userEmailes = JSON.parse(localStorage.getItem("usersEmail-info") || "[]");
|
|
123
|
-
}
|
|
124
|
-
ngOnDestroy() {
|
|
125
|
-
this.destroy$.next(true);
|
|
126
|
-
this.destroy$.complete();
|
|
127
|
-
}
|
|
128
|
-
ngOnInit() {
|
|
129
|
-
this.gs.dataRangeValue
|
|
130
|
-
.pipe(takeUntil(this.destroy$), debounceTime(300))
|
|
131
|
-
.subscribe((data) => {
|
|
132
|
-
this.itemsPerPage = 10;
|
|
133
|
-
this.pageSize = 10;
|
|
134
|
-
this.headerData = data;
|
|
135
|
-
this.currentPage = 1;
|
|
136
|
-
this.setPageData();
|
|
137
|
-
this.getActivityLogTableData();
|
|
138
|
-
setTimeout(() => {
|
|
139
|
-
this.count++;
|
|
140
|
-
});
|
|
141
|
-
// this.applyFilters([{ Description: 'Coverage', Issues: [{ text: this.coverageType[0], id: this.coverageType[0], checked: true}] }]);
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
setPageData() {
|
|
145
|
-
this.pageInfo.setTitle("Dashboard");
|
|
146
|
-
this.pageInfo.setBreadcrumbs([
|
|
147
|
-
{
|
|
148
|
-
title: "Tango Trax",
|
|
149
|
-
path: "/manage/trax/dashboard",
|
|
150
|
-
isActive: false,
|
|
151
|
-
isSeparator: false,
|
|
152
|
-
},
|
|
153
|
-
{
|
|
154
|
-
title: "Tango Trax",
|
|
155
|
-
path: "/manage/trax/dashboard",
|
|
156
|
-
isActive: false,
|
|
157
|
-
isSeparator: true,
|
|
158
|
-
},
|
|
159
|
-
]);
|
|
160
|
-
}
|
|
161
|
-
getActivityLogTableData() {
|
|
162
|
-
this.isActivityLog = true;
|
|
163
|
-
this.changeDetector.detectChanges(); // Force UI update
|
|
164
|
-
this.searchDisabled = true;
|
|
165
|
-
this.taskLoading = true;
|
|
166
|
-
this.taskNoData = true;
|
|
167
|
-
const requestData = {
|
|
168
|
-
fromDate: this.selectedFilters?.date?.startDate,
|
|
169
|
-
toDate: this.selectedFilters?.date?.endDate,
|
|
170
|
-
storeId: this.headerData?.stores
|
|
171
|
-
.filter((store) => store.checked)
|
|
172
|
-
.map((store) => store.storeId),
|
|
173
|
-
clientId: this.headerData.client,
|
|
174
|
-
limit: this.itemsPerPage,
|
|
175
|
-
offset: this.currentPage - 1,
|
|
176
|
-
sortBy: this.sortDirection,
|
|
177
|
-
sortColumnName: this.sortColumName,
|
|
178
|
-
searchValue: this.searchInput,
|
|
179
|
-
action: this.activityLogFilter,
|
|
180
|
-
type: this.receivedData,
|
|
181
|
-
userEmailes: this.userEmailes,
|
|
182
|
-
// checkListName:this.checklistName,
|
|
183
|
-
// "checkListName": "daily store checklist111",
|
|
184
|
-
// "type": "checklist",
|
|
185
|
-
// "action": ["created"],
|
|
186
|
-
// "limit": 5,
|
|
187
|
-
// "offset": 0,
|
|
188
|
-
// "sortBy": "",
|
|
189
|
-
// "sortColumnName": "",
|
|
190
|
-
// "searchValue": "Daily store checklist New"
|
|
191
|
-
};
|
|
192
|
-
this.TraxService.activityLogList(requestData)
|
|
193
|
-
.pipe(takeUntil(this.destroy$))
|
|
194
|
-
.subscribe((response) => {
|
|
195
|
-
this.taskLoading = false;
|
|
196
|
-
if (response?.code === 200 && response?.status === "success") {
|
|
197
|
-
this.activityLogTableData = response.data.result || [];
|
|
198
|
-
this.totalItems = response.data.count;
|
|
199
|
-
this.setPaginationSizes();
|
|
200
|
-
this.taskLoading = false;
|
|
201
|
-
this.taskNoData = false;
|
|
202
|
-
this.searchDisabled = false;
|
|
203
|
-
}
|
|
204
|
-
else {
|
|
205
|
-
this.activityLogTableData = [];
|
|
206
|
-
this.taskLoading = false;
|
|
207
|
-
this.taskNoData = true;
|
|
208
|
-
this.searchDisabled = true;
|
|
209
|
-
if (this.searchInput?.length) {
|
|
210
|
-
this.searchDisabled = true;
|
|
211
|
-
}
|
|
212
|
-
this.activityLogTableData = [];
|
|
213
|
-
this.totalItems = 0;
|
|
214
|
-
this.changeDetector.detectChanges();
|
|
215
|
-
}
|
|
216
|
-
}, (error) => {
|
|
217
|
-
this.activityLogTableData = [];
|
|
218
|
-
this.changeDetector.detectChanges();
|
|
219
|
-
});
|
|
220
|
-
this.sourceCheckList_id = "";
|
|
221
|
-
}
|
|
222
|
-
// removeQueryParams() {
|
|
223
|
-
// const urlWithoutParams = this.location.path().split('?')[0];
|
|
224
|
-
// this.location.replaceState(urlWithoutParams);
|
|
225
|
-
// }
|
|
226
|
-
setPaginationSizes() {
|
|
227
|
-
if (this.totalItems > 10) {
|
|
228
|
-
if (this.pageSize > 10) {
|
|
229
|
-
this.paginationSizes = [10, 20, 30];
|
|
230
|
-
}
|
|
231
|
-
else {
|
|
232
|
-
this.paginationSizes = [10, 20, 30];
|
|
233
|
-
this.pageSize = 10;
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
else {
|
|
237
|
-
this.paginationSizes = [this.totalItems];
|
|
238
|
-
this.pageSize = this.totalItems;
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
onExport() {
|
|
242
|
-
this.currentPage = 1;
|
|
243
|
-
const requestData = {
|
|
244
|
-
fromDate: this.headerData.date.startDate,
|
|
245
|
-
toDate: this.headerData.date.endDate,
|
|
246
|
-
storeId: this.headerData.stores
|
|
247
|
-
.filter((store) => store.checked)
|
|
248
|
-
.map((store) => store.storeId),
|
|
249
|
-
userEmailes: this.userEmailes,
|
|
250
|
-
clientId: this.headerData.client,
|
|
251
|
-
limit: 10000,
|
|
252
|
-
offset: 0,
|
|
253
|
-
sortBy: this.sortDirection,
|
|
254
|
-
sortColumnName: this.sortColumName,
|
|
255
|
-
searchValue: this.searchInput,
|
|
256
|
-
export: true,
|
|
257
|
-
filter: this.activityLogFilter,
|
|
258
|
-
// coverage: this.coverageType || []
|
|
259
|
-
};
|
|
260
|
-
this.TraxService.getTaskTableDataExport(requestData)
|
|
261
|
-
.pipe(takeUntil(this.destroy$))
|
|
262
|
-
.subscribe({
|
|
263
|
-
next: (res) => {
|
|
264
|
-
this.TraxService.saveAsExcelFile(res, "TaskTable");
|
|
265
|
-
},
|
|
266
|
-
error: (e) => {
|
|
267
|
-
this.toast.getErrorToast("Something went Wrong..");
|
|
268
|
-
},
|
|
269
|
-
});
|
|
270
|
-
}
|
|
271
|
-
searchField() {
|
|
272
|
-
this.headerData.searchValue = this.searchInput;
|
|
273
|
-
this.headerData.export = false;
|
|
274
|
-
this.currentPage = 1;
|
|
275
|
-
this.pageSize = 10;
|
|
276
|
-
this.getActivityLogTableData();
|
|
277
|
-
}
|
|
278
|
-
sortData(column) {
|
|
279
|
-
if (this.sortColumName === column) {
|
|
280
|
-
this.sortDirection = this.sortDirection === 1 ? -1 : 1;
|
|
281
|
-
}
|
|
282
|
-
else {
|
|
283
|
-
this.sortColumName = column;
|
|
284
|
-
this.sortDirection = 1;
|
|
285
|
-
}
|
|
286
|
-
this.getActivityLogTableData();
|
|
287
|
-
}
|
|
288
|
-
onPageSizeChange(pageSize) {
|
|
289
|
-
this.currentPage = 1;
|
|
290
|
-
this.itemsPerPage = parseInt(pageSize);
|
|
291
|
-
this.pageSize = parseInt(pageSize);
|
|
292
|
-
this.changeDetector.detectChanges();
|
|
293
|
-
this.getActivityLogTableData();
|
|
294
|
-
}
|
|
295
|
-
onPageChange(pageOffset) {
|
|
296
|
-
this.currentPage = pageOffset;
|
|
297
|
-
this.getActivityLogTableData();
|
|
298
|
-
}
|
|
299
|
-
applyFilters(event) {
|
|
300
|
-
if (event?.length) {
|
|
301
|
-
event.forEach((element) => {
|
|
302
|
-
if (element.Description === "Actions") {
|
|
303
|
-
this.activityLogFilter = element.Issues.map((val) => val.id);
|
|
304
|
-
}
|
|
305
|
-
});
|
|
306
|
-
}
|
|
307
|
-
else {
|
|
308
|
-
// this.dataObject.forEach((category: any) => {
|
|
309
|
-
// category.Issues.forEach((issue: any) => {
|
|
310
|
-
// issue.checked = true;
|
|
311
|
-
// });
|
|
312
|
-
// });
|
|
313
|
-
// const actionsFilter = this.dataObject.find((item: any) => item.Description === 'Actions');
|
|
314
|
-
// this.activityLogFilter = actionsFilter ? actionsFilter.Issues.map((val: any) => val.id) : [];
|
|
315
|
-
this.activityLogFilter = [];
|
|
316
|
-
}
|
|
317
|
-
this.getActivityLogTableData();
|
|
318
|
-
}
|
|
319
|
-
selectPlan(selectedType) {
|
|
320
|
-
this.type = selectedType;
|
|
321
|
-
}
|
|
322
|
-
// navigateToTaskConfig(task: any): void {
|
|
323
|
-
// this.router.navigate(['manage/trax/task-configure'], { queryParams: {taskId:task._id} })
|
|
324
|
-
// }
|
|
325
|
-
// navigateToTaskEdit(task: any): void {
|
|
326
|
-
// this.router.navigate(['manage/trax/create-task'], { queryParams: {id:task._id} })
|
|
327
|
-
// }
|
|
328
|
-
dateFormat(date) {
|
|
329
|
-
return this.dayjs.utc(date).format("DD MMM YYYY");
|
|
330
|
-
}
|
|
331
|
-
Selecttabs(tab) {
|
|
332
|
-
this.receivedData = tab;
|
|
333
|
-
// this.router.navigate([], {
|
|
334
|
-
// queryParams: { type: tab },
|
|
335
|
-
// queryParamsHandling: 'merge'
|
|
336
|
-
// });
|
|
337
|
-
this.getActivityLogTableData();
|
|
338
|
-
}
|
|
339
|
-
viewAction(log) {
|
|
340
|
-
let modalSize = log.action === "updated" || log.action === "draft"
|
|
341
|
-
? "xl"
|
|
342
|
-
: log.action === "edited"
|
|
343
|
-
? "lg"
|
|
344
|
-
: "md";
|
|
345
|
-
const modalRef = this.modalService.open(ViewActionComponent, {
|
|
346
|
-
centered: true,
|
|
347
|
-
size: modalSize,
|
|
348
|
-
scrollable: true,
|
|
349
|
-
});
|
|
350
|
-
modalRef.componentInstance.logDetails = log.logDetails;
|
|
351
|
-
modalRef.componentInstance.checkListName = log.checkListName;
|
|
352
|
-
modalRef.componentInstance.storeName = log.storeName;
|
|
353
|
-
modalRef.componentInstance.actionType = log.action;
|
|
354
|
-
modalRef.componentInstance.receivedData = this.receivedData;
|
|
355
|
-
modalRef.result.then(() => {
|
|
356
|
-
this.getActivityLogTableData();
|
|
357
|
-
});
|
|
358
|
-
}
|
|
359
|
-
isLogDetailsEmpty(logDetails) {
|
|
360
|
-
return (!logDetails ||
|
|
361
|
-
Object.keys(logDetails).every((key) => {
|
|
362
|
-
const value = logDetails[key];
|
|
363
|
-
if (Array.isArray(value))
|
|
364
|
-
return value.length === 0;
|
|
365
|
-
if (typeof value === "object")
|
|
366
|
-
return this.isLogDetailsEmpty(value);
|
|
367
|
-
return !value;
|
|
368
|
-
}));
|
|
369
|
-
}
|
|
370
|
-
formatDateTime(dateString) {
|
|
371
|
-
if (!dateString)
|
|
372
|
-
return "--";
|
|
373
|
-
const date = dayjs.utc(dateString).local();
|
|
374
|
-
const now = dayjs();
|
|
375
|
-
let formattedDate = "";
|
|
376
|
-
if (date.isSame(now, "day")) {
|
|
377
|
-
formattedDate = "Today";
|
|
378
|
-
}
|
|
379
|
-
else if (date.isSame(now.subtract(1, "day"), "day")) {
|
|
380
|
-
formattedDate = "Yesterday";
|
|
381
|
-
}
|
|
382
|
-
else {
|
|
383
|
-
formattedDate = date.format("MMM D, YYYY");
|
|
384
|
-
}
|
|
385
|
-
return `${formattedDate} <br> ${date.format("hh : mm A")}`;
|
|
386
|
-
}
|
|
387
|
-
getActionBadgeClass(action) {
|
|
388
|
-
const actionClasses = {
|
|
389
|
-
created: "badge-light-default",
|
|
390
|
-
updated: "badge-light-primary1",
|
|
391
|
-
draft: "badge-light-default",
|
|
392
|
-
published: "badge-light-primary1",
|
|
393
|
-
submit: "badge-light-primary1",
|
|
394
|
-
start: "badge-light-primary1",
|
|
395
|
-
approved: "badge-light-success",
|
|
396
|
-
redo: "badge-light-warning",
|
|
397
|
-
multiredo: "badge-light-warning",
|
|
398
|
-
task_created: "badge-light-default",
|
|
399
|
-
// reopened: 'badge-light-default',
|
|
400
|
-
edited: "badge-light-warning",
|
|
401
|
-
unpublished: "badge-light-primary1",
|
|
402
|
-
deleted: "badge-light-delete",
|
|
403
|
-
duplicated: "badge-light-default",
|
|
404
|
-
reinitiated: "badge-light-warning",
|
|
405
|
-
};
|
|
406
|
-
return actionClasses[action] || "badge-light-default";
|
|
407
|
-
}
|
|
408
|
-
getActionLabel(action) {
|
|
409
|
-
const actionLabels = {
|
|
410
|
-
created: "Created by",
|
|
411
|
-
updated: "Updated by",
|
|
412
|
-
draft: "Saved as Draft",
|
|
413
|
-
published: "Published by",
|
|
414
|
-
submit: "Submitted by",
|
|
415
|
-
start: "Started by",
|
|
416
|
-
approved: "Approved by",
|
|
417
|
-
redo: "Redo Created by",
|
|
418
|
-
multiredo: "Subsequent Redo Created by",
|
|
419
|
-
task_created: "Task Created by",
|
|
420
|
-
// reopened: 'Re-opened by',
|
|
421
|
-
edited: "Edited by",
|
|
422
|
-
unpublished: "Unpublished by",
|
|
423
|
-
deleted: "Deleted by",
|
|
424
|
-
duplicated: "Duplicated by",
|
|
425
|
-
reinitiated: "Reinitiated by",
|
|
426
|
-
};
|
|
427
|
-
return actionLabels[action] || action;
|
|
428
|
-
}
|
|
429
|
-
navigateToGallery(log) {
|
|
430
|
-
let formattedDate = dayjs(log.createAt).format("YYYY-MM-DD");
|
|
431
|
-
let checklistType;
|
|
432
|
-
if (log.checkListType === "custom") {
|
|
433
|
-
checklistType = "custom";
|
|
434
|
-
}
|
|
435
|
-
else if (["task", "checklistTask", "cctv"].includes(log.type)) {
|
|
436
|
-
checklistType = "task";
|
|
437
|
-
}
|
|
438
|
-
else {
|
|
439
|
-
checklistType = log.type || "--";
|
|
440
|
-
}
|
|
441
|
-
let queryParams = {};
|
|
442
|
-
if (log.store_id && log.store_id != "") {
|
|
443
|
-
queryParams = {
|
|
444
|
-
ChecklistDate: formattedDate,
|
|
445
|
-
storeId: log.store_id,
|
|
446
|
-
checklistType: checklistType,
|
|
447
|
-
sourceCheckList_id: log.sourceCheckList_id,
|
|
448
|
-
};
|
|
449
|
-
}
|
|
450
|
-
else {
|
|
451
|
-
queryParams = {
|
|
452
|
-
ChecklistDate: formattedDate,
|
|
453
|
-
userEmail: log.userEmail,
|
|
454
|
-
checklistType: checklistType,
|
|
455
|
-
sourceCheckList_id: log.sourceCheckList_id,
|
|
456
|
-
};
|
|
457
|
-
}
|
|
458
|
-
if (log.redoStatus) {
|
|
459
|
-
queryParams.redoStatus = true;
|
|
460
|
-
}
|
|
461
|
-
this.router.navigate(["/manage/trax/gallery"], { queryParams });
|
|
462
|
-
}
|
|
463
|
-
datechange(event) {
|
|
464
|
-
if (event && event.startDate && event.endDate) {
|
|
465
|
-
this.selectedDateRange = {
|
|
466
|
-
startDate: event.startDate,
|
|
467
|
-
endDate: event.endDate,
|
|
468
|
-
};
|
|
469
|
-
this.selectedFilters.date = {
|
|
470
|
-
startDate: event.startDate,
|
|
471
|
-
endDate: event.endDate,
|
|
472
|
-
};
|
|
473
|
-
// localStorage.setItem("header-filters", JSON.stringify(this.selectedFilters));
|
|
474
|
-
// this.resetValidation();
|
|
475
|
-
// this.gs.dataRangeValue.next(this.selectedFilters);
|
|
476
|
-
// Reset the picker to force re-render
|
|
477
|
-
this.isActivityLog = false;
|
|
478
|
-
this.changeDetector.detectChanges();
|
|
479
|
-
// setTimeout(() => {
|
|
480
|
-
// this.isActivityLog = true;
|
|
481
|
-
// this.changeDetector.detectChanges();
|
|
482
|
-
// }, 10);
|
|
483
|
-
// Call API
|
|
484
|
-
this.getActivityLogTableData();
|
|
485
|
-
}
|
|
486
|
-
else {
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
resetValidation() {
|
|
490
|
-
this.isCustomDate = (m) => {
|
|
491
|
-
// Check if the given date is before yesterday
|
|
492
|
-
return m.isAfter(this.dayjs(), "day") ? "invalid-date" : false;
|
|
493
|
-
};
|
|
494
|
-
}
|
|
495
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActivityLogV2Component, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.GlobalStateService }, { token: i0.ChangeDetectorRef }, { token: i3.ToastService }, { token: i4.TraxService }, { token: i2.PageInfoService }, { token: i1.ActivatedRoute }, { token: i5.NgbModal }], target: i0.ɵɵFactoryTarget.Component });
|
|
496
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ActivityLogV2Component, selector: "lib-activity-log-v2", ngImport: i0, template: "<div class=\"col-lg-12 mt-4\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Activity Log </span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon footfallsearch svg-icon-1 position-absolute ms-8\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input *ngIf=\"receivedData === 'checklist'\" [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 mx-2 logsearch\"\r\n placeholder=\"Search with Store, Email, Checklist\" autocomplete=\"off\" (keyup.enter)=\"searchField()\" />\r\n <input *ngIf=\"receivedData === 'task'\" [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 mx-2 logsearch\"\r\n placeholder=\"Search with Store, Email, Task\" autocomplete=\"off\" (keyup.enter)=\"searchField()\" />\r\n <!-- datepicker start -->\r\n <lib-date-range-picker (dateChange)=\"datechange($event)\" [value]=\"count\"></lib-date-range-picker>\r\n <!-- datepicker end -->\r\n <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex overflow-auto mb-2 mx-4\">\r\n <ul\r\n class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs-2x justify-content-center align-items-center border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('checklist')\" [routerLink]=\"['/manage/trax/actioncenter']\" [queryParams]=\"{ type: 'checklist' }\">\r\n <a [ngClass]=\"receivedData === 'checklist'?'btn activebtn':''\" class=\"fw-semibold nav-link me-6\">\r\n Checklist\r\n </a>\r\n </li>\r\n <li class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('task')\" [routerLink]=\"['/manage/trax/actioncenter']\" [queryParams]=\"{ type: 'task' }\">\r\n <a [ngClass]=\"receivedData === 'task' || receivedData === 'Group Details Value'? 'btn activebtn':''\"\r\n class=\"nav-link me-6\">Task\r\n </a>\r\n </li>\r\n </ul>\r\n <!-- <lib-view-action [receivedData]=\"receivedData\"></lib-view-action> -->\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table *ngIf=\"!taskLoading && !taskNoData\" class=\"table text-nowrap bottom-border\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('datetime')\">Date & Time<svg\r\n [ngClass]=\"sortColumName === 'datetime' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'datetime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n \r\n <th *ngIf=\"receivedData === 'checklist'\">Checklist Name</th>\r\n <th *ngIf=\"receivedData === 'task'\">Task Name</th>\r\n <th>Action Performed</th>\r\n <th>Performed by</th>\r\n <th>Name</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n \r\n <tr *ngFor=\"let log of activityLogTableData\">\r\n <td>\r\n <span class=\"table-title\" [innerHTML]=\"formatDateTime(log._source.createAt)\"></span>\r\n\r\n </td>\r\n <td>\r\n <div *ngIf=\"!(log._source.type === 'task' && log._source.fromCheckListName)\">\r\n <span class=\"table-title me-2\">\r\n {{ log._source.checkListName || '--' }}\r\n </span>\r\n </div>\r\n <div *ngIf=\"log._source.type === 'task' && log._source.fromCheckListName\">\r\n <span class=\"table-title me-2\">\r\n {{ log._source.checkListName || '--' }} <br>\r\n <span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M11.6654 7.50016L7.4987 3.3335M7.4987 3.3335L3.33203 7.50016M7.4987 3.3335V13.3335C7.4987 14.2176 7.84989 15.0654 8.47501 15.6905C9.10013 16.3156 9.94798 16.6668 10.832 16.6668H16.6654\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"23\" height=\"23\" viewBox=\"0 0 23 23\" fill=\"none\">\r\n <path d=\"M8.41448 4.52303C8.69518 4.80371 8.69518 5.2588 8.41448 5.53948L5.53948 8.41448C5.2588 8.69518 4.80371 8.69518 4.52303 8.41448L3.08553 6.97698C2.80482 6.6963 2.80482 6.24121 3.08553 5.96053C3.36621 5.67982 3.8213 5.67982 4.10198 5.96053L5.03125 6.88978L7.39803 4.52303C7.67871 4.24232 8.1338 4.24232 8.41448 4.52303Z\" fill=\"#667085\"/>\r\n <path d=\"M8.41448 11.7105C8.69518 11.9912 8.69518 12.4463 8.41448 12.727L5.53948 15.602C5.2588 15.8826 4.80371 15.8826 4.52303 15.602L3.08553 14.1645C2.80482 13.8838 2.80482 13.4287 3.08553 13.1479C3.36621 12.8673 3.8213 12.8673 4.10198 13.1479L5.03125 14.0773L7.39803 11.7105C7.67871 11.4299 8.1338 11.4299 8.41448 11.7105Z\" fill=\"#667085\"/>\r\n <path d=\"M10.0625 6.46875C10.0625 6.0718 10.3844 5.75 10.7812 5.75H15.0938C15.4906 5.75 15.8125 6.0718 15.8125 6.46875C15.8125 6.8657 15.4906 7.1875 15.0938 7.1875H10.7812C10.3844 7.1875 10.0625 6.8657 10.0625 6.46875Z\" fill=\"#667085\"/>\r\n <path d=\"M3.59375 0C1.60898 0 0 1.60898 0 3.59375V16.5312C0 18.516 1.60898 20.125 3.59375 20.125H9.48708C9.25429 19.6696 9.06436 19.1886 8.92261 18.6875H3.59375C2.40288 18.6875 1.4375 17.7221 1.4375 16.5312V3.59375C1.4375 2.40288 2.40288 1.4375 3.59375 1.4375H16.5312C17.7221 1.4375 18.6875 2.40288 18.6875 3.59375V8.92261C19.1886 9.06436 19.6696 9.25429 20.125 9.48708V3.59375C20.125 1.60898 18.516 0 16.5312 0H3.59375Z\" fill=\"#667085\"/>\r\n <path d=\"M16.5313 23C20.1039 23 23 20.1039 23 16.5313C23 12.9586 20.1039 10.0625 16.5313 10.0625C12.9586 10.0625 10.0625 12.9586 10.0625 16.5313C10.0625 20.1039 12.9586 23 16.5313 23ZM16.5313 12.9375C16.9281 12.9375 17.25 13.2594 17.25 13.6563V15.8125H19.4063C19.8031 15.8125 20.125 16.1344 20.125 16.5313C20.125 16.9281 19.8031 17.25 19.4063 17.25H17.25V19.4063C17.25 19.8031 16.9281 20.125 16.5313 20.125C16.1344 20.125 15.8125 19.8031 15.8125 19.4063V17.25H13.6563C13.2594 17.25 12.9375 16.9281 12.9375 16.5313C12.9375 16.1344 13.2594 15.8125 13.6563 15.8125H15.8125V13.6563C15.8125 13.2594 16.1344 12.9375 16.5313 12.9375Z\" fill=\"#667085\"/>\r\n </svg></span><span class=\"table-title\"> {{ log._source.fromCheckListName || '--' }} </span>\r\n </span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <span class=\"table-title badge-light\" [ngClass]=\"getActionBadgeClass(log._source.action)\">\r\n {{ getActionLabel(log._source.action) }}\r\n </span>\r\n </div>\r\n \r\n </td> \r\n <td>\r\n <div \r\n class=\"table-title d-flex\"><span class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span>{{ log._source.createdByEmail }}</span></div>\r\n </td>\r\n <td>\r\n <div \r\n class=\"table-title d-flex\"><span *ngIf=\"log._source?.coverage === 'store' || (!log._source?.coverage && log._source?.storeName) \"><span class=\"me-3\" *ngIf=\"log._source?.storeName\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M2.67893 5.80366L2.62568 5.88683C2.06764 6.87388 2.66347 8.1213 3.73508 8.2644C3.83217 8.27627 3.92251 8.28255 4.01078 8.28255C4.58893 8.28255 5.1001 8.03453 5.45637 7.6478L6.0097 7.04718L6.56116 7.64953C6.9131 8.03395 7.42311 8.28255 8.00517 8.28255C8.58461 8.28255 9.09755 8.0336 9.44917 7.64953L10.0024 7.04529L10.5555 7.64953C10.9072 8.0336 11.4201 8.28255 11.9996 8.28255C12.579 8.28255 13.0919 8.0336 13.4436 7.64953L13.9967 7.04529L14.5499 7.64953C14.9016 8.0336 15.4145 8.28255 15.9939 8.28255C16.0793 8.28255 16.1724 8.27625 16.2688 8.2645C17.3639 8.11518 17.9618 6.80091 17.323 5.80416C17.323 5.8041 17.323 5.80405 17.3229 5.80399L15.5648 3.06258L15.5648 3.06258L15.5638 3.06111C15.5486 3.03728 15.5112 3.01172 15.464 3.01172H4.53458C4.48744 3.01172 4.44995 3.03728 4.43474 3.06111L4.43413 3.06208L2.67893 5.80366ZM15.6504 10.7369V13.8689V14.6189H14.9004H5.09821H4.34821V13.8689V10.7374C4.23798 10.7456 4.12646 10.7498 4.01384 10.7498C3.97154 10.7498 3.92952 10.7492 3.88778 10.748V13.8689V15.8034C3.88778 16.4468 4.42168 16.9879 5.09821 16.9879H14.9004C15.5769 16.9879 16.1108 16.4468 16.1108 15.8034V13.8689V10.7482C16.071 10.7493 16.031 10.7498 15.9909 10.7498C15.8765 10.7498 15.7629 10.7455 15.6504 10.7369Z\" stroke=\"#667085\" stroke-width=\"1.5\"/>\r\n </svg></span><span>{{ log._source.storeName || '-' }}</span></span>\r\n <span *ngIf=\"log._source?.coverage === 'user' || (!log._source?.coverage && log._source?.userEmail)\">\r\n <span class=\"me-3\" *ngIf=\"log._source?.userEmail\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span>{{ log._source?.userEmail || '-'}}</span>\r\n </span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <!-- \"['updated', 'edited', 'draft'].includes(log._source.action)\" -->\r\n <span *ngIf=\"['updated', 'edited'].includes(log._source.action) || (log._source.action === 'draft' && log._source.logDetails && !isLogDetailsEmpty(log._source.logDetails))\"\r\n (click)=\"viewAction(log._source)\" \r\n class=\"text-primary cursor-pointer\">\r\n <u>View</u>\r\n </span>\r\n <span *ngIf=\"log._source.action === 'submit'\"\r\n (click)=\"navigateToGallery(log._source)\" \r\n class=\"text-primary cursor-pointer\">\r\n <u>View</u>\r\n </span>\r\n <!-- *ngIf=\"!['updated', 'edited', 'submit', 'draft'].includes(log._source.action)\" -->\r\n <span *ngIf=\"!['updated', 'edited', 'submit'].includes(log._source.action) && !(log._source.action === 'draft' && log._source.logDetails && !isLogDetailsEmpty(log._source.logDetails))\">-</span>\r\n </div>\r\n </td>\r\n \r\n \r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <ng-container *ngIf=\"taskLoading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"taskNoData && !taskLoading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Activity Log</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n <div *ngIf=\"!taskLoading && !taskNoData\">\r\n <lib-pagination class=\"text-start\" [itemsPerPage]=\"itemsPerPage\" [currentPage]=\"currentPage\"\r\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n</div>\r\n</div>", styles: [".table-title{color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-size:14px;font-style:normal;font-weight:500;line-height:20px;text-decoration-line:underline}.card .card-header{padding:0px 1.5rem}.nav-item .nav-link{color:var(--Gray-500, #667085);font-size:16px;font-weight:500}.activebtn{color:var(--Primary-700, #009BF3)!important;border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;font-size:16px!important;font-weight:500!important}.daterange{color:var(--Gray-500, #667085);font-size:16px;font-style:normal;font-weight:600;line-height:24px}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.rotate{transform:rotate(180deg)}.logsearch{width:370px}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.badge-light{display:flex;padding:8px 16px;justify-content:center;align-items:center;flex:1 0 0;border-radius:16px;opacity:.8;font-weight:500;width:70%}.badge-light-default{background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054)}.badge-light-primary1{background:var(--Blue-50, #EFF8FF);color:var(--Blue-700, #175CD3)}.badge-light-success{background:var(--Success-50, #ECFDF3);color:var(--Success-700, #027A48)}.badge-light-warning{background:var(--Warning-50, #FFFAEB);color:var(--Warning-700, #B54708)}.badge-light-delete{background:var(--Error-50, #FEF3F2);color:var(----Error-700, #B42318)}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "component", type: i3.FiltersComponent, selector: "lib-filters", inputs: ["dataObject"], outputs: ["appliedFilters"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.DateRangePickerComponent, selector: "lib-date-range-picker", inputs: ["value"], outputs: ["dateChange"] }] });
|
|
497
|
-
}
|
|
498
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActivityLogV2Component, decorators: [{
|
|
499
|
-
type: Component,
|
|
500
|
-
args: [{ selector: "lib-activity-log-v2", template: "<div class=\"col-lg-12 mt-4\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Activity Log </span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon footfallsearch svg-icon-1 position-absolute ms-8\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input *ngIf=\"receivedData === 'checklist'\" [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 mx-2 logsearch\"\r\n placeholder=\"Search with Store, Email, Checklist\" autocomplete=\"off\" (keyup.enter)=\"searchField()\" />\r\n <input *ngIf=\"receivedData === 'task'\" [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 mx-2 logsearch\"\r\n placeholder=\"Search with Store, Email, Task\" autocomplete=\"off\" (keyup.enter)=\"searchField()\" />\r\n <!-- datepicker start -->\r\n <lib-date-range-picker (dateChange)=\"datechange($event)\" [value]=\"count\"></lib-date-range-picker>\r\n <!-- datepicker end -->\r\n <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex overflow-auto mb-2 mx-4\">\r\n <ul\r\n class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs-2x justify-content-center align-items-center border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('checklist')\" [routerLink]=\"['/manage/trax/actioncenter']\" [queryParams]=\"{ type: 'checklist' }\">\r\n <a [ngClass]=\"receivedData === 'checklist'?'btn activebtn':''\" class=\"fw-semibold nav-link me-6\">\r\n Checklist\r\n </a>\r\n </li>\r\n <li class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('task')\" [routerLink]=\"['/manage/trax/actioncenter']\" [queryParams]=\"{ type: 'task' }\">\r\n <a [ngClass]=\"receivedData === 'task' || receivedData === 'Group Details Value'? 'btn activebtn':''\"\r\n class=\"nav-link me-6\">Task\r\n </a>\r\n </li>\r\n </ul>\r\n <!-- <lib-view-action [receivedData]=\"receivedData\"></lib-view-action> -->\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table *ngIf=\"!taskLoading && !taskNoData\" class=\"table text-nowrap bottom-border\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('datetime')\">Date & Time<svg\r\n [ngClass]=\"sortColumName === 'datetime' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'datetime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n \r\n <th *ngIf=\"receivedData === 'checklist'\">Checklist Name</th>\r\n <th *ngIf=\"receivedData === 'task'\">Task Name</th>\r\n <th>Action Performed</th>\r\n <th>Performed by</th>\r\n <th>Name</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n \r\n <tr *ngFor=\"let log of activityLogTableData\">\r\n <td>\r\n <span class=\"table-title\" [innerHTML]=\"formatDateTime(log._source.createAt)\"></span>\r\n\r\n </td>\r\n <td>\r\n <div *ngIf=\"!(log._source.type === 'task' && log._source.fromCheckListName)\">\r\n <span class=\"table-title me-2\">\r\n {{ log._source.checkListName || '--' }}\r\n </span>\r\n </div>\r\n <div *ngIf=\"log._source.type === 'task' && log._source.fromCheckListName\">\r\n <span class=\"table-title me-2\">\r\n {{ log._source.checkListName || '--' }} <br>\r\n <span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M11.6654 7.50016L7.4987 3.3335M7.4987 3.3335L3.33203 7.50016M7.4987 3.3335V13.3335C7.4987 14.2176 7.84989 15.0654 8.47501 15.6905C9.10013 16.3156 9.94798 16.6668 10.832 16.6668H16.6654\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"23\" height=\"23\" viewBox=\"0 0 23 23\" fill=\"none\">\r\n <path d=\"M8.41448 4.52303C8.69518 4.80371 8.69518 5.2588 8.41448 5.53948L5.53948 8.41448C5.2588 8.69518 4.80371 8.69518 4.52303 8.41448L3.08553 6.97698C2.80482 6.6963 2.80482 6.24121 3.08553 5.96053C3.36621 5.67982 3.8213 5.67982 4.10198 5.96053L5.03125 6.88978L7.39803 4.52303C7.67871 4.24232 8.1338 4.24232 8.41448 4.52303Z\" fill=\"#667085\"/>\r\n <path d=\"M8.41448 11.7105C8.69518 11.9912 8.69518 12.4463 8.41448 12.727L5.53948 15.602C5.2588 15.8826 4.80371 15.8826 4.52303 15.602L3.08553 14.1645C2.80482 13.8838 2.80482 13.4287 3.08553 13.1479C3.36621 12.8673 3.8213 12.8673 4.10198 13.1479L5.03125 14.0773L7.39803 11.7105C7.67871 11.4299 8.1338 11.4299 8.41448 11.7105Z\" fill=\"#667085\"/>\r\n <path d=\"M10.0625 6.46875C10.0625 6.0718 10.3844 5.75 10.7812 5.75H15.0938C15.4906 5.75 15.8125 6.0718 15.8125 6.46875C15.8125 6.8657 15.4906 7.1875 15.0938 7.1875H10.7812C10.3844 7.1875 10.0625 6.8657 10.0625 6.46875Z\" fill=\"#667085\"/>\r\n <path d=\"M3.59375 0C1.60898 0 0 1.60898 0 3.59375V16.5312C0 18.516 1.60898 20.125 3.59375 20.125H9.48708C9.25429 19.6696 9.06436 19.1886 8.92261 18.6875H3.59375C2.40288 18.6875 1.4375 17.7221 1.4375 16.5312V3.59375C1.4375 2.40288 2.40288 1.4375 3.59375 1.4375H16.5312C17.7221 1.4375 18.6875 2.40288 18.6875 3.59375V8.92261C19.1886 9.06436 19.6696 9.25429 20.125 9.48708V3.59375C20.125 1.60898 18.516 0 16.5312 0H3.59375Z\" fill=\"#667085\"/>\r\n <path d=\"M16.5313 23C20.1039 23 23 20.1039 23 16.5313C23 12.9586 20.1039 10.0625 16.5313 10.0625C12.9586 10.0625 10.0625 12.9586 10.0625 16.5313C10.0625 20.1039 12.9586 23 16.5313 23ZM16.5313 12.9375C16.9281 12.9375 17.25 13.2594 17.25 13.6563V15.8125H19.4063C19.8031 15.8125 20.125 16.1344 20.125 16.5313C20.125 16.9281 19.8031 17.25 19.4063 17.25H17.25V19.4063C17.25 19.8031 16.9281 20.125 16.5313 20.125C16.1344 20.125 15.8125 19.8031 15.8125 19.4063V17.25H13.6563C13.2594 17.25 12.9375 16.9281 12.9375 16.5313C12.9375 16.1344 13.2594 15.8125 13.6563 15.8125H15.8125V13.6563C15.8125 13.2594 16.1344 12.9375 16.5313 12.9375Z\" fill=\"#667085\"/>\r\n </svg></span><span class=\"table-title\"> {{ log._source.fromCheckListName || '--' }} </span>\r\n </span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <span class=\"table-title badge-light\" [ngClass]=\"getActionBadgeClass(log._source.action)\">\r\n {{ getActionLabel(log._source.action) }}\r\n </span>\r\n </div>\r\n \r\n </td> \r\n <td>\r\n <div \r\n class=\"table-title d-flex\"><span class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span>{{ log._source.createdByEmail }}</span></div>\r\n </td>\r\n <td>\r\n <div \r\n class=\"table-title d-flex\"><span *ngIf=\"log._source?.coverage === 'store' || (!log._source?.coverage && log._source?.storeName) \"><span class=\"me-3\" *ngIf=\"log._source?.storeName\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M2.67893 5.80366L2.62568 5.88683C2.06764 6.87388 2.66347 8.1213 3.73508 8.2644C3.83217 8.27627 3.92251 8.28255 4.01078 8.28255C4.58893 8.28255 5.1001 8.03453 5.45637 7.6478L6.0097 7.04718L6.56116 7.64953C6.9131 8.03395 7.42311 8.28255 8.00517 8.28255C8.58461 8.28255 9.09755 8.0336 9.44917 7.64953L10.0024 7.04529L10.5555 7.64953C10.9072 8.0336 11.4201 8.28255 11.9996 8.28255C12.579 8.28255 13.0919 8.0336 13.4436 7.64953L13.9967 7.04529L14.5499 7.64953C14.9016 8.0336 15.4145 8.28255 15.9939 8.28255C16.0793 8.28255 16.1724 8.27625 16.2688 8.2645C17.3639 8.11518 17.9618 6.80091 17.323 5.80416C17.323 5.8041 17.323 5.80405 17.3229 5.80399L15.5648 3.06258L15.5648 3.06258L15.5638 3.06111C15.5486 3.03728 15.5112 3.01172 15.464 3.01172H4.53458C4.48744 3.01172 4.44995 3.03728 4.43474 3.06111L4.43413 3.06208L2.67893 5.80366ZM15.6504 10.7369V13.8689V14.6189H14.9004H5.09821H4.34821V13.8689V10.7374C4.23798 10.7456 4.12646 10.7498 4.01384 10.7498C3.97154 10.7498 3.92952 10.7492 3.88778 10.748V13.8689V15.8034C3.88778 16.4468 4.42168 16.9879 5.09821 16.9879H14.9004C15.5769 16.9879 16.1108 16.4468 16.1108 15.8034V13.8689V10.7482C16.071 10.7493 16.031 10.7498 15.9909 10.7498C15.8765 10.7498 15.7629 10.7455 15.6504 10.7369Z\" stroke=\"#667085\" stroke-width=\"1.5\"/>\r\n </svg></span><span>{{ log._source.storeName || '-' }}</span></span>\r\n <span *ngIf=\"log._source?.coverage === 'user' || (!log._source?.coverage && log._source?.userEmail)\">\r\n <span class=\"me-3\" *ngIf=\"log._source?.userEmail\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span>{{ log._source?.userEmail || '-'}}</span>\r\n </span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <!-- \"['updated', 'edited', 'draft'].includes(log._source.action)\" -->\r\n <span *ngIf=\"['updated', 'edited'].includes(log._source.action) || (log._source.action === 'draft' && log._source.logDetails && !isLogDetailsEmpty(log._source.logDetails))\"\r\n (click)=\"viewAction(log._source)\" \r\n class=\"text-primary cursor-pointer\">\r\n <u>View</u>\r\n </span>\r\n <span *ngIf=\"log._source.action === 'submit'\"\r\n (click)=\"navigateToGallery(log._source)\" \r\n class=\"text-primary cursor-pointer\">\r\n <u>View</u>\r\n </span>\r\n <!-- *ngIf=\"!['updated', 'edited', 'submit', 'draft'].includes(log._source.action)\" -->\r\n <span *ngIf=\"!['updated', 'edited', 'submit'].includes(log._source.action) && !(log._source.action === 'draft' && log._source.logDetails && !isLogDetailsEmpty(log._source.logDetails))\">-</span>\r\n </div>\r\n </td>\r\n \r\n \r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <ng-container *ngIf=\"taskLoading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"taskNoData && !taskLoading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Activity Log</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n <div *ngIf=\"!taskLoading && !taskNoData\">\r\n <lib-pagination class=\"text-start\" [itemsPerPage]=\"itemsPerPage\" [currentPage]=\"currentPage\"\r\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n</div>\r\n</div>", styles: [".table-title{color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-size:14px;font-style:normal;font-weight:500;line-height:20px;text-decoration-line:underline}.card .card-header{padding:0px 1.5rem}.nav-item .nav-link{color:var(--Gray-500, #667085);font-size:16px;font-weight:500}.activebtn{color:var(--Primary-700, #009BF3)!important;border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;font-size:16px!important;font-weight:500!important}.daterange{color:var(--Gray-500, #667085);font-size:16px;font-style:normal;font-weight:600;line-height:24px}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.rotate{transform:rotate(180deg)}.logsearch{width:370px}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.badge-light{display:flex;padding:8px 16px;justify-content:center;align-items:center;flex:1 0 0;border-radius:16px;opacity:.8;font-weight:500;width:70%}.badge-light-default{background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054)}.badge-light-primary1{background:var(--Blue-50, #EFF8FF);color:var(--Blue-700, #175CD3)}.badge-light-success{background:var(--Success-50, #ECFDF3);color:var(--Success-700, #027A48)}.badge-light-warning{background:var(--Warning-50, #FFFAEB);color:var(--Warning-700, #B54708)}.badge-light-delete{background:var(--Error-50, #FEF3F2);color:var(----Error-700, #B42318)}\n"] }]
|
|
501
|
-
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.GlobalStateService }, { type: i0.ChangeDetectorRef }, { type: i3.ToastService }, { type: i4.TraxService }, { type: i2.PageInfoService }, { type: i1.ActivatedRoute }, { type: i5.NgbModal }] });
|
|
502
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktbG9nLXYyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvYWN0aXZpdHktbG9nLXYyL2FjdGl2aXR5LWxvZy12Mi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2FjdGl2aXR5LWxvZy12Mi9hY3Rpdml0eS1sb2ctdjIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBS2hGLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFnQyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEYsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBSW5DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3pGLE9BQU8sWUFBWSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7O0FBSnJELEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFNbEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUMzQixLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBU2xCLE1BQU0sT0FBTyxzQkFBc0I7SUF3RnZCO0lBQ0E7SUFDRDtJQUNDO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDRDtJQS9GVCxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ04sUUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFDakMsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUMxQixZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLFdBQVcs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RCxzQ0FBc0M7WUFDdEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUVwQyxxQkFBcUI7WUFDckIsK0JBQStCO1lBQy9CLHlDQUF5QztZQUN6QyxVQUFVO1lBRVYsV0FBVztZQUNYLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1NBQ2hDO2FBQU07U0FDTjtJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQWMsRUFBRSxFQUFFO1lBQ3JDLDhDQUE4QztZQUM5QyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNqRSxDQUFDLENBQUM7SUFDSixDQUFDO3dHQTNlVSxzQkFBc0I7NEZBQXRCLHNCQUFzQiwyREN4Qm5DLHMwaEJBNExNOzs0RkRwS08sc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUcmF4U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYXguc2VydmljZSc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSwgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XHJcbmltcG9ydCB1dGMgZnJvbSAnZGF5anMvcGx1Z2luL3V0Yyc7XHJcbmRheWpzLmV4dGVuZCh1dGMpO1xyXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBWaWV3QWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9sb2ctdmlldy1wb3B1cC92aWV3LWFjdGlvbi92aWV3LWFjdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgcmVsYXRpdmVUaW1lIGZyb20gJ2RheWpzL3BsdWdpbi9yZWxhdGl2ZVRpbWUnO1xyXG5cclxuZGF5anMuZXh0ZW5kKHJlbGF0aXZlVGltZSk7XHJcbmRheWpzLmV4dGVuZCh1dGMpO1xyXG5cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItYWN0aXZpdHktbG9nLXYyXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9hY3Rpdml0eS1sb2ctdjIuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL2FjdGl2aXR5LWxvZy12Mi5jb21wb25lbnQuc2Nzc1wiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWN0aXZpdHlMb2dWMkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcclxuICBkYXlqcyA9IGRheWpzO1xyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIGlzRXhwb3J0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXRlbXNQZXJQYWdlID0gMTA7XHJcbiAgY3VycmVudFBhZ2UgPSAxO1xyXG4gIHRvdGFsSXRlbXMgPSAwO1xyXG4gIHBhZ2luYXRpb25TaXplczogYW55W10gPSBbXTtcclxuICBwYWdlU2l6ZSA9IDEwO1xyXG4gIHNvcnRDb2x1bU5hbWU6IHN0cmluZyA9IFwiXCI7XHJcbiAgc29ydEJ5OiBhbnkgPSBcIlwiO1xyXG4gIHNvcnREaXJlY3Rpb246IGFueSA9IFwiXCI7XHJcbiAgc2VhcmNoSW5wdXQ6IGFueSA9IFwiXCI7XHJcbiAgaGVhZGVyRGF0YTogYW55O1xyXG4gIHNlYXJjaFZhbHVlOiBzdHJpbmc7XHJcbiAgbGltaXQ6IG51bWJlcjtcclxuICBvZmZzZXQ6IG51bWJlcjtcclxuICBzZWFyY2hEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRhc2tMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICB0YXNrTm9EYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcmVjZWl2ZWREYXRhOiBzdHJpbmcgPSBcImNoZWNrbGlzdFwiO1xyXG4gIGRhdGFPYmplY3Q6IGFueSA9IFtcclxuICAgIHtcclxuICAgICAgRGVzY3JpcHRpb246IFwiQWN0aW9uc1wiLFxyXG4gICAgICBJc3N1ZXM6IFtcclxuICAgICAgICB7IHRleHQ6IFwiQ3JlYXRlZCBieVwiLCBpZDogXCJjcmVhdGVkXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiVXBkYXRlZCBieVwiLCBpZDogXCJ1cGRhdGVkXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiU2F2ZWQgYXMgRHJhZnRcIiwgaWQ6IFwiZHJhZnRcIiB9LFxyXG4gICAgICAgIHsgdGV4dDogXCJQdWJsaXNoZWQgYnlcIiwgaWQ6IFwicHVibGlzaGVkXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiU3VibWl0dGVkIGJ5XCIsIGlkOiBcInN1Ym1pdFwiIH0sXHJcbiAgICAgICAgeyB0ZXh0OiBcIlN0YXJ0ZWQgYnlcIiwgaWQ6IFwic3RhcnRcIiB9LFxyXG4gICAgICAgIHsgdGV4dDogXCJBcHByb3ZlZCBieVwiLCBpZDogXCJhcHByb3ZlZFwiIH0sXHJcbiAgICAgICAgeyB0ZXh0OiBcIlJlZG8gQ3JlYXRlZCBieVwiLCBpZDogXCJyZWRvXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiU3Vic2VxdWVudCBSZWRvIENyZWF0ZWQgYnlcIiwgaWQ6IFwibXVsdGlyZWRvXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiVGFzayBDcmVhdGVkIGJ5XCIsIGlkOiBcInRhc2tfY3JlYXRlZFwiIH0sXHJcbiAgICAgICAgLy8geyB0ZXh0OiAnUmUtT3BlbmVkIGJ5JywgaWQ6ICdyZW9wZW5lZCcgfSxcclxuICAgICAgICB7IHRleHQ6IFwiRWRpdGVkIGJ5XCIsIGlkOiBcImVkaXRlZFwiIH0sXHJcbiAgICAgICAgeyB0ZXh0OiBcIlVucHVibGlzaGVkIGJ5XCIsIGlkOiBcInVucHVibGlzaGVkXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiRGVsZXRlZCBieVwiLCBpZDogXCJkZWxldGVkXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiRHVwbGljYXRlZCBieVwiLCBpZDogXCJkdXBsaWNhdGVkXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiUmVpbml0aWF0ZWQgYnlcIiwgaWQ6IFwicmVpbml0aWF0ZWRcIiB9LFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIC8vIHtcclxuICAgIC8vICAgRGVzY3JpcHRpb246ICdDb3ZlcmFnZScsXHJcbiAgICAvLyAgIElzc3VlczogW1xyXG4gICAgLy8gICAgIHsgdGV4dDogJ0NoZWNrbGlzdCcsIGlkOiAnY2hlY2tsaXN0JyB9LFxyXG5cclxuICAgIC8vICAgXSxcclxuICAgIC8vIH0sXHJcbiAgXTtcclxuICBhY3Rpdml0eUxvZ1RhYmxlRGF0YTogYW55W10gPSBbXTtcclxuICB0eXBlOiBzdHJpbmcgPSBcImNoZWNrbGlzdFwiO1xyXG4gIGFjdGl2aXR5TG9nRmlsdGVyOiBhbnkgPSBbXTtcclxuICAvLyByZWxvYWREYXRlOiBzdHJpbmc7XHJcbiAgc291cmNlQ2hlY2tMaXN0X2lkOiBhbnk7XHJcbiAgY2hlY2tsaXN0SWQ6IGFueTtcclxuICAvLyBjb3ZlcmFnZVR5cGU6IGFueSA9IFtdO1xyXG4gIHVzZXJFbWFpbGVzOiBhbnkgPSBbXTtcclxuICBjaGVja2xpc3ROYW1lOiBhbnk7XHJcbiAgZWRpdFJlcXVlc3REYXRhOiBhbnk7XHJcbiAgaXNBY3Rpdml0eUxvZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBzZWxlY3RlZERhdGVSYW5nZTogYW55ID0ge1xyXG4gICAgc3RhcnREYXRlOiBkYXlqcygpLnN1YnRyYWN0KDcsIFwiZGF5c1wiKSxcclxuICAgIGVuZERhdGU6IGRheWpzKCkuc3VidHJhY3QoMSwgXCJkYXlzXCIpLFxyXG4gIH07XHJcbiAgaXNDdXN0b21EYXRlID0gKG06IGRheWpzLkRheWpzKSA9PiB7XHJcbiAgICBjb25zdCBpc1ZhbGlkRGF0ZSA9IG0gPiB0aGlzLmRheWpzKCk7XHJcbiAgICByZXR1cm4gaXNWYWxpZERhdGUgPyBcImludmFsaWQtZGF0ZVwiIDogZmFsc2U7XHJcbiAgfTtcclxuICBzZWxlY3RlZEZpbHRlcnM6IGFueSA9IHtcclxuICAgIGNsaWVudDogbnVsbCxcclxuICAgIGNsaWVudE5hbWU6IG51bGwsXHJcbiAgICBjbGllbnRzOiBbXSxcclxuICAgIHN0b3JlOiBudWxsLFxyXG4gICAgc3RvcmVzOiBbXSxcclxuICAgIC8vIGRhdGU6IG51bGwsXHJcbiAgICBkYXRlOiB7XHJcbiAgICAgIHN0YXJ0RGF0ZTogZGF5anMoKS5zdWJ0cmFjdCg3LCBcImRheXNcIikuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKSxcclxuICAgICAgZW5kRGF0ZTogZGF5anMoKS5zdWJ0cmFjdCgxLCBcImRheXNcIikuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKSxcclxuICAgIH0sXHJcbiAgICBncm91cDogW10sXHJcbiAgICBsb2NhdGlvbjogW10sXHJcbiAgfTtcclxuICBjb3VudDogbnVtYmVyID0gMDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwdWJsaWMgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBUcmF4U2VydmljZTogVHJheFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHBhZ2VJbmZvOiBQYWdlSW5mb1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHB1YmxpYyBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsXHJcbiAgKSB7XHJcbiAgICB0aGlzLnVzZXJFbWFpbGVzID0gSlNPTi5wYXJzZShcclxuICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2Vyc0VtYWlsLWluZm9cIikgfHwgXCJbXVwiXHJcbiAgICApO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSwgZGVib3VuY2VUaW1lKDMwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXRlbXNQZXJQYWdlID0gMTA7XHJcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9IDEwO1xyXG4gICAgICAgIHRoaXMuaGVhZGVyRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgICAgdGhpcy5zZXRQYWdlRGF0YSgpO1xyXG4gICAgICAgIHRoaXMuZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY291bnQrKztcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyB0aGlzLmFwcGx5RmlsdGVycyhbeyBEZXNjcmlwdGlvbjogJ0NvdmVyYWdlJywgSXNzdWVzOiBbeyB0ZXh0OiB0aGlzLmNvdmVyYWdlVHlwZVswXSwgaWQ6IHRoaXMuY292ZXJhZ2VUeXBlWzBdLCBjaGVja2VkOiB0cnVlfV0gfV0pO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgc2V0UGFnZURhdGEoKSB7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldFRpdGxlKFwiRGFzaGJvYXJkXCIpO1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXRCcmVhZGNydW1icyhbXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogXCJUYW5nbyBUcmF4XCIsXHJcbiAgICAgICAgcGF0aDogXCIvbWFuYWdlL3RyYXgvZGFzaGJvYXJkXCIsXHJcbiAgICAgICAgaXNBY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGlzU2VwYXJhdG9yOiBmYWxzZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiBcIlRhbmdvIFRyYXhcIixcclxuICAgICAgICBwYXRoOiBcIi9tYW5hZ2UvdHJheC9kYXNoYm9hcmRcIixcclxuICAgICAgICBpc0FjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgaXNTZXBhcmF0b3I6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICBdKTtcclxuICB9XHJcbiAgZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzQWN0aXZpdHlMb2cgPSB0cnVlO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7IC8vIEZvcmNlIFVJIHVwZGF0ZVxyXG4gICAgdGhpcy5zZWFyY2hEaXNhYmxlZCA9IHRydWU7XHJcbiAgICB0aGlzLnRhc2tMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMudGFza05vRGF0YSA9IHRydWU7XHJcbiAgICBjb25zdCByZXF1ZXN0RGF0YSA9IHtcclxuICAgICAgZnJvbURhdGU6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzPy5kYXRlPy5zdGFydERhdGUsXHJcbiAgICAgIHRvRGF0ZTogdGhpcy5zZWxlY3RlZEZpbHRlcnM/LmRhdGU/LmVuZERhdGUsXHJcbiAgICAgIHN0b3JlSWQ6IHRoaXMuaGVhZGVyRGF0YT8uc3RvcmVzXHJcbiAgICAgICAgLmZpbHRlcigoc3RvcmU6IGFueSkgPT4gc3RvcmUuY2hlY2tlZClcclxuICAgICAgICAubWFwKChzdG9yZTogYW55KSA9PiBzdG9yZS5zdG9yZUlkKSxcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRGF0YS5jbGllbnQsXHJcbiAgICAgIGxpbWl0OiB0aGlzLml0ZW1zUGVyUGFnZSxcclxuICAgICAgb2Zmc2V0OiB0aGlzLmN1cnJlbnRQYWdlIC0gMSxcclxuICAgICAgc29ydEJ5OiB0aGlzLnNvcnREaXJlY3Rpb24sXHJcbiAgICAgIHNvcnRDb2x1bW5OYW1lOiB0aGlzLnNvcnRDb2x1bU5hbWUsXHJcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaElucHV0LFxyXG4gICAgICBhY3Rpb246IHRoaXMuYWN0aXZpdHlMb2dGaWx0ZXIsXHJcbiAgICAgIHR5cGU6IHRoaXMucmVjZWl2ZWREYXRhLFxyXG4gICAgICB1c2VyRW1haWxlczogdGhpcy51c2VyRW1haWxlcyxcclxuICAgICAgLy8gY2hlY2tMaXN0TmFtZTp0aGlzLmNoZWNrbGlzdE5hbWUsXHJcbiAgICAgIC8vIFwiY2hlY2tMaXN0TmFtZVwiOiBcImRhaWx5IHN0b3JlIGNoZWNrbGlzdDExMVwiLFxyXG4gICAgICAvLyBcInR5cGVcIjogXCJjaGVja2xpc3RcIixcclxuICAgICAgLy8gXCJhY3Rpb25cIjogW1wiY3JlYXRlZFwiXSxcclxuICAgICAgLy8gXCJsaW1pdFwiOiA1LFxyXG4gICAgICAvLyBcIm9mZnNldFwiOiAwLFxyXG4gICAgICAvLyBcInNvcnRCeVwiOiBcIlwiLFxyXG4gICAgICAvLyBcInNvcnRDb2x1bW5OYW1lXCI6IFwiXCIsXHJcbiAgICAgIC8vIFwic2VhcmNoVmFsdWVcIjogXCJEYWlseSBzdG9yZSBjaGVja2xpc3QgTmV3XCJcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5UcmF4U2VydmljZS5hY3Rpdml0eUxvZ0xpc3QocmVxdWVzdERhdGEpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50YXNrTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlPy5jb2RlID09PSAyMDAgJiYgcmVzcG9uc2U/LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHtcclxuICAgICAgICAgICAgdGhpcy5hY3Rpdml0eUxvZ1RhYmxlRGF0YSA9IHJlc3BvbnNlLmRhdGEucmVzdWx0IHx8IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSByZXNwb25zZS5kYXRhLmNvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnNldFBhZ2luYXRpb25TaXplcygpO1xyXG4gICAgICAgICAgICB0aGlzLnRhc2tMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMudGFza05vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaERpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmFjdGl2aXR5TG9nVGFibGVEYXRhID0gW107XHJcbiAgICAgICAgICAgIHRoaXMudGFza0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy50YXNrTm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hEaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaElucHV0Py5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaERpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmFjdGl2aXR5TG9nVGFibGVEYXRhID0gW107XHJcbiAgICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2aXR5TG9nVGFibGVEYXRhID0gW107XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB0aGlzLnNvdXJjZUNoZWNrTGlzdF9pZCA9IFwiXCI7XHJcbiAgfVxyXG4gIC8vIHJlbW92ZVF1ZXJ5UGFyYW1zKCkge1xyXG4gIC8vICAgY29uc3QgdXJsV2l0aG91dFBhcmFtcyA9IHRoaXMubG9jYXRpb24ucGF0aCgpLnNwbGl0KCc/JylbMF07XHJcbiAgLy8gICB0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh1cmxXaXRob3V0UGFyYW1zKTtcclxuICAvLyB9XHJcbiAgc2V0UGFnaW5hdGlvblNpemVzKCkge1xyXG4gICAgaWYgKHRoaXMudG90YWxJdGVtcyA+IDEwKSB7XHJcbiAgICAgIGlmICh0aGlzLnBhZ2VTaXplID4gMTApIHtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFsxMCwgMjAsIDMwXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFsxMCwgMjAsIDMwXTtcclxuICAgICAgICB0aGlzLnBhZ2VTaXplID0gMTA7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gW3RoaXMudG90YWxJdGVtc107XHJcbiAgICAgIHRoaXMucGFnZVNpemUgPSB0aGlzLnRvdGFsSXRlbXM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkV4cG9ydCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgY29uc3QgcmVxdWVzdERhdGEgPSB7XHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckRhdGEuZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgIHRvRGF0ZTogdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSxcclxuICAgICAgc3RvcmVJZDogdGhpcy5oZWFkZXJEYXRhLnN0b3Jlc1xyXG4gICAgICAgIC5maWx0ZXIoKHN0b3JlOiBhbnkpID0+IHN0b3JlLmNoZWNrZWQpXHJcbiAgICAgICAgLm1hcCgoc3RvcmU6IGFueSkgPT4gc3RvcmUuc3RvcmVJZCksXHJcbiAgICAgIHVzZXJFbWFpbGVzOiB0aGlzLnVzZXJFbWFpbGVzLFxyXG4gICAgICBjbGllbnRJZDogdGhpcy5oZWFkZXJEYXRhLmNsaWVudCxcclxuICAgICAgbGltaXQ6IDEwMDAwLFxyXG4gICAgICBvZmZzZXQ6IDAsXHJcbiAgICAgIHNvcnRCeTogdGhpcy5zb3J0RGlyZWN0aW9uLFxyXG4gICAgICBzb3J0Q29sdW1uTmFtZTogdGhpcy5zb3J0Q29sdW1OYW1lLFxyXG4gICAgICBzZWFyY2hWYWx1ZTogdGhpcy5zZWFyY2hJbnB1dCxcclxuICAgICAgZXhwb3J0OiB0cnVlLFxyXG4gICAgICBmaWx0ZXI6IHRoaXMuYWN0aXZpdHlMb2dGaWx0ZXIsXHJcbiAgICAgIC8vIGNvdmVyYWdlOiB0aGlzLmNvdmVyYWdlVHlwZSB8fCBbXVxyXG4gICAgfTtcclxuICAgIHRoaXMuVHJheFNlcnZpY2UuZ2V0VGFza1RhYmxlRGF0YUV4cG9ydChyZXF1ZXN0RGF0YSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLlRyYXhTZXJ2aWNlLnNhdmVBc0V4Y2VsRmlsZShyZXMsIFwiVGFza1RhYmxlXCIpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXCJTb21ldGhpbmcgd2VudCBXcm9uZy4uXCIpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBzZWFyY2hGaWVsZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaGVhZGVyRGF0YS5zZWFyY2hWYWx1ZSA9IHRoaXMuc2VhcmNoSW5wdXQ7XHJcbiAgICB0aGlzLmhlYWRlckRhdGEuZXhwb3J0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMucGFnZVNpemUgPSAxMDtcclxuICAgIHRoaXMuZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTtcclxuICB9XHJcbiAgc29ydERhdGEoY29sdW1uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNvcnRDb2x1bU5hbWUgPT09IGNvbHVtbikge1xyXG4gICAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSB0aGlzLnNvcnREaXJlY3Rpb24gPT09IDEgPyAtMSA6IDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNvcnRDb2x1bU5hbWUgPSBjb2x1bW47XHJcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IDE7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldEFjdGl2aXR5TG9nVGFibGVEYXRhKCk7XHJcbiAgfVxyXG5cclxuICBvblBhZ2VTaXplQ2hhbmdlKHBhZ2VTaXplOiBhbnkpIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgdGhpcy5pdGVtc1BlclBhZ2UgPSBwYXJzZUludChwYWdlU2l6ZSk7XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gcGFyc2VJbnQocGFnZVNpemUpO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLmdldEFjdGl2aXR5TG9nVGFibGVEYXRhKCk7XHJcbiAgfVxyXG4gIG9uUGFnZUNoYW5nZShwYWdlT2Zmc2V0OiBhbnkpIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlT2Zmc2V0O1xyXG4gICAgdGhpcy5nZXRBY3Rpdml0eUxvZ1RhYmxlRGF0YSgpO1xyXG4gIH1cclxuICBhcHBseUZpbHRlcnMoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50Py5sZW5ndGgpIHtcclxuICAgICAgZXZlbnQuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuRGVzY3JpcHRpb24gPT09IFwiQWN0aW9uc1wiKSB7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2aXR5TG9nRmlsdGVyID0gZWxlbWVudC5Jc3N1ZXMubWFwKCh2YWw6IGFueSkgPT4gdmFsLmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gdGhpcy5kYXRhT2JqZWN0LmZvckVhY2goKGNhdGVnb3J5OiBhbnkpID0+IHtcclxuICAgICAgLy8gICBjYXRlZ29yeS5Jc3N1ZXMuZm9yRWFjaCgoaXNzdWU6IGFueSkgPT4ge1xyXG4gICAgICAvLyAgICAgaXNzdWUuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgIC8vICAgfSk7XHJcbiAgICAgIC8vIH0pO1xyXG5cclxuICAgICAgLy8gY29uc3QgYWN0aW9uc0ZpbHRlciA9IHRoaXMuZGF0YU9iamVjdC5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0uRGVzY3JpcHRpb24gPT09ICdBY3Rpb25zJyk7XHJcbiAgICAgIC8vIHRoaXMuYWN0aXZpdHlMb2dGaWx0ZXIgPSBhY3Rpb25zRmlsdGVyID8gYWN0aW9uc0ZpbHRlci5Jc3N1ZXMubWFwKCh2YWw6IGFueSkgPT4gdmFsLmlkKSA6IFtdO1xyXG4gICAgICB0aGlzLmFjdGl2aXR5TG9nRmlsdGVyID0gW107XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldEFjdGl2aXR5TG9nVGFibGVEYXRhKCk7XHJcbiAgfVxyXG4gIHNlbGVjdFBsYW4oc2VsZWN0ZWRUeXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMudHlwZSA9IHNlbGVjdGVkVHlwZTtcclxuICB9XHJcblxyXG4gIC8vIG5hdmlnYXRlVG9UYXNrQ29uZmlnKHRhc2s6IGFueSk6IHZvaWQge1xyXG4gIC8vICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ21hbmFnZS90cmF4L3Rhc2stY29uZmlndXJlJ10sIHsgcXVlcnlQYXJhbXM6IHt0YXNrSWQ6dGFzay5faWR9IH0pXHJcbiAgLy8gfVxyXG5cclxuICAvLyBuYXZpZ2F0ZVRvVGFza0VkaXQodGFzazogYW55KTogdm9pZCB7XHJcbiAgLy8gICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnbWFuYWdlL3RyYXgvY3JlYXRlLXRhc2snXSwgeyBxdWVyeVBhcmFtczoge2lkOnRhc2suX2lkfSB9KVxyXG4gIC8vIH1cclxuXHJcbiAgZGF0ZUZvcm1hdChkYXRlOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmRheWpzLnV0YyhkYXRlKS5mb3JtYXQoXCJERCBNTU0gWVlZWVwiKTtcclxuICB9XHJcbiAgU2VsZWN0dGFicyh0YWI6IHN0cmluZykge1xyXG4gICAgdGhpcy5yZWNlaXZlZERhdGEgPSB0YWI7XHJcblxyXG4gICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcclxuICAgIC8vICAgcXVlcnlQYXJhbXM6IHsgdHlwZTogdGFiIH0sXHJcbiAgICAvLyAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZSdcclxuICAgIC8vIH0pO1xyXG5cclxuICAgIHRoaXMuZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTtcclxuICB9XHJcbiAgdmlld0FjdGlvbihsb2c6IGFueSkge1xyXG4gICAgbGV0IG1vZGFsU2l6ZSA9XHJcbiAgICAgIGxvZy5hY3Rpb24gPT09IFwidXBkYXRlZFwiIHx8IGxvZy5hY3Rpb24gPT09IFwiZHJhZnRcIlxyXG4gICAgICAgID8gXCJ4bFwiXHJcbiAgICAgICAgOiBsb2cuYWN0aW9uID09PSBcImVkaXRlZFwiXHJcbiAgICAgICAgPyBcImxnXCJcclxuICAgICAgICA6IFwibWRcIjtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihWaWV3QWN0aW9uQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICBzaXplOiBtb2RhbFNpemUsXHJcbiAgICAgIHNjcm9sbGFibGU6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmxvZ0RldGFpbHMgPSBsb2cubG9nRGV0YWlscztcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmNoZWNrTGlzdE5hbWUgPSBsb2cuY2hlY2tMaXN0TmFtZTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnN0b3JlTmFtZSA9IGxvZy5zdG9yZU5hbWU7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5hY3Rpb25UeXBlID0gbG9nLmFjdGlvbjtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnJlY2VpdmVkRGF0YSA9IHRoaXMucmVjZWl2ZWREYXRhO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKCkgPT4ge1xyXG4gICAgICB0aGlzLmdldEFjdGl2aXR5TG9nVGFibGVEYXRhKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGlzTG9nRGV0YWlsc0VtcHR5KGxvZ0RldGFpbHM6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgIWxvZ0RldGFpbHMgfHxcclxuICAgICAgT2JqZWN0LmtleXMobG9nRGV0YWlscykuZXZlcnkoKGtleSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gbG9nRGV0YWlsc1trZXldO1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlLmxlbmd0aCA9PT0gMDtcclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiKSByZXR1cm4gdGhpcy5pc0xvZ0RldGFpbHNFbXB0eSh2YWx1ZSk7XHJcbiAgICAgICAgcmV0dXJuICF2YWx1ZTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBmb3JtYXREYXRlVGltZShkYXRlU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFkYXRlU3RyaW5nKSByZXR1cm4gXCItLVwiO1xyXG5cclxuICAgIGNvbnN0IGRhdGUgPSBkYXlqcy51dGMoZGF0ZVN0cmluZykubG9jYWwoKTtcclxuICAgIGNvbnN0IG5vdyA9IGRheWpzKCk7XHJcblxyXG4gICAgbGV0IGZvcm1hdHRlZERhdGUgPSBcIlwiO1xyXG5cclxuICAgIGlmIChkYXRlLmlzU2FtZShub3csIFwiZGF5XCIpKSB7XHJcbiAgICAgIGZvcm1hdHRlZERhdGUgPSBcIlRvZGF5XCI7XHJcbiAgICB9IGVsc2UgaWYgKGRhdGUuaXNTYW1lKG5vdy5zdWJ0cmFjdCgxLCBcImRheVwiKSwgXCJkYXlcIikpIHtcclxuICAgICAgZm9ybWF0dGVkRGF0ZSA9IFwiWWVzdGVyZGF5XCI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3JtYXR0ZWREYXRlID0gZGF0ZS5mb3JtYXQoXCJNTU0gRCwgWVlZWVwiKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYCR7Zm9ybWF0dGVkRGF0ZX0gPGJyPiAke2RhdGUuZm9ybWF0KFwiaGggOiBtbSBBXCIpfWA7XHJcbiAgfVxyXG4gIGdldEFjdGlvbkJhZGdlQ2xhc3MoYWN0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgYWN0aW9uQ2xhc3NlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcclxuICAgICAgY3JlYXRlZDogXCJiYWRnZS1saWdodC1kZWZhdWx0XCIsXHJcbiAgICAgIHVwZGF0ZWQ6IFwiYmFkZ2UtbGlnaHQtcHJpbWFyeTFcIixcclxuICAgICAgZHJhZnQ6IFwiYmFkZ2UtbGlnaHQtZGVmYXVsdFwiLFxyXG4gICAgICBwdWJsaXNoZWQ6IFwiYmFkZ2UtbGlnaHQtcHJpbWFyeTFcIixcclxuICAgICAgc3VibWl0OiBcImJhZGdlLWxpZ2h0LXByaW1hcnkxXCIsXHJcbiAgICAgIHN0YXJ0OiBcImJhZGdlLWxpZ2h0LXByaW1hcnkxXCIsXHJcbiAgICAgIGFwcHJvdmVkOiBcImJhZGdlLWxpZ2h0LXN1Y2Nlc3NcIixcclxuICAgICAgcmVkbzogXCJiYWRnZS1saWdodC13YXJuaW5nXCIsXHJcbiAgICAgIG11bHRpcmVkbzogXCJiYWRnZS1saWdodC13YXJuaW5nXCIsXHJcbiAgICAgIHRhc2tfY3JlYXRlZDogXCJiYWRnZS1saWdodC1kZWZhdWx0XCIsXHJcbiAgICAgIC8vIHJlb3BlbmVkOiAnYmFkZ2UtbGlnaHQtZGVmYXVsdCcsXHJcbiAgICAgIGVkaXRlZDogXCJiYWRnZS1saWdodC13YXJuaW5nXCIsXHJcbiAgICAgIHVucHVibGlzaGVkOiBcImJhZGdlLWxpZ2h0LXByaW1hcnkxXCIsXHJcbiAgICAgIGRlbGV0ZWQ6IFwiYmFkZ2UtbGlnaHQtZGVsZXRlXCIsXHJcbiAgICAgIGR1cGxpY2F0ZWQ6IFwiYmFkZ2UtbGlnaHQtZGVmYXVsdFwiLFxyXG4gICAgICByZWluaXRpYXRlZDogXCJiYWRnZS1saWdodC13YXJuaW5nXCIsXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBhY3Rpb25DbGFzc2VzW2FjdGlvbl0gfHwgXCJiYWRnZS1saWdodC1kZWZhdWx0XCI7XHJcbiAgfVxyXG5cclxuICBnZXRBY3Rpb25MYWJlbChhY3Rpb246IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBhY3Rpb25MYWJlbHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XHJcbiAgICAgIGNyZWF0ZWQ6IFwiQ3JlYXRlZCBieVwiLFxyXG4gICAgICB1cGRhdGVkOiBcIlVwZGF0ZWQgYnlcIixcclxuICAgICAgZHJhZnQ6IFwiU2F2ZWQgYXMgRHJhZnRcIixcclxuICAgICAgcHVibGlzaGVkOiBcIlB1Ymxpc2hlZCBieVwiLFxyXG4gICAgICBzdWJtaXQ6IFwiU3VibWl0dGVkIGJ5XCIsXHJcbiAgICAgIHN0YXJ0OiBcIlN0YXJ0ZWQgYnlcIixcclxuICAgICAgYXBwcm92ZWQ6IFwiQXBwcm92ZWQgYnlcIixcclxuICAgICAgcmVkbzogXCJSZWRvIENyZWF0ZWQgYnlcIixcclxuICAgICAgbXVsdGlyZWRvOiBcIlN1YnNlcXVlbnQgUmVkbyBDcmVhdGVkIGJ5XCIsXHJcbiAgICAgIHRhc2tfY3JlYXRlZDogXCJUYXNrIENyZWF0ZWQgYnlcIixcclxuICAgICAgLy8gcmVvcGVuZWQ6ICdSZS1vcGVuZWQgYnknLFxyXG4gICAgICBlZGl0ZWQ6IFwiRWRpdGVkIGJ5XCIsXHJcbiAgICAgIHVucHVibGlzaGVkOiBcIlVucHVibGlzaGVkIGJ5XCIsXHJcbiAgICAgIGRlbGV0ZWQ6IFwiRGVsZXRlZCBieVwiLFxyXG4gICAgICBkdXBsaWNhdGVkOiBcIkR1cGxpY2F0ZWQgYnlcIixcclxuICAgICAgcmVpbml0aWF0ZWQ6IFwiUmVpbml0aWF0ZWQgYnlcIixcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIGFjdGlvbkxhYmVsc1thY3Rpb25dIHx8IGFjdGlvbjtcclxuICB9XHJcblxyXG4gIG5hdmlnYXRlVG9HYWxsZXJ5KGxvZzogYW55KTogdm9pZCB7XHJcbiAgICBsZXQgZm9ybWF0dGVkRGF0ZSA9IGRheWpzKGxvZy5jcmVhdGVBdCkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKTtcclxuICAgIGxldCBjaGVja2xpc3RUeXBlOiBzdHJpbmc7XHJcbiAgICBpZiAobG9nLmNoZWNrTGlzdFR5cGUgPT09IFwiY3VzdG9tXCIpIHtcclxuICAgICAgY2hlY2tsaXN0VHlwZSA9IFwiY3VzdG9tXCI7XHJcbiAgICB9IGVsc2UgaWYgKFtcInRhc2tcIiwgXCJjaGVja2xpc3RUYXNrXCIsIFwiY2N0dlwiXS5pbmNsdWRlcyhsb2cudHlwZSkpIHtcclxuICAgICAgY2hlY2tsaXN0VHlwZSA9IFwidGFza1wiO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY2hlY2tsaXN0VHlwZSA9IGxvZy50eXBlIHx8IFwiLS1cIjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHt9O1xyXG4gICAgaWYgKGxvZy5zdG9yZV9pZCAmJiBsb2cuc3RvcmVfaWQgIT0gXCJcIikge1xyXG4gICAgICBxdWVyeVBhcmFtcyA9IHtcclxuICAgICAgICBDaGVja2xpc3REYXRlOiBmb3JtYXR0ZWREYXRlLFxyXG4gICAgICAgIHN0b3JlSWQ6IGxvZy5zdG9yZV9pZCxcclxuICAgICAgICBjaGVja2xpc3RUeXBlOiBjaGVja2xpc3RUeXBlLFxyXG4gICAgICAgIHNvdXJjZUNoZWNrTGlzdF9pZDogbG9nLnNvdXJjZUNoZWNrTGlzdF9pZCxcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zID0ge1xyXG4gICAgICAgIENoZWNrbGlzdERhdGU6IGZvcm1hdHRlZERhdGUsXHJcbiAgICAgICAgdXNlckVtYWlsOiBsb2cudXNlckVtYWlsLFxyXG4gICAgICAgIGNoZWNrbGlzdFR5cGU6IGNoZWNrbGlzdFR5cGUsXHJcbiAgICAgICAgc291cmNlQ2hlY2tMaXN0X2lkOiBsb2cuc291cmNlQ2hlY2tMaXN0X2lkLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgaWYgKGxvZy5yZWRvU3RhdHVzKSB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zLnJlZG9TdGF0dXMgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL21hbmFnZS90cmF4L2dhbGxlcnlcIl0sIHsgcXVlcnlQYXJhbXMgfSk7XHJcbiAgfVxyXG5cclxuICBkYXRlY2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudCAmJiBldmVudC5zdGFydERhdGUgJiYgZXZlbnQuZW5kRGF0ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlID0ge1xyXG4gICAgICAgIHN0YXJ0RGF0ZTogZXZlbnQuc3RhcnREYXRlLFxyXG4gICAgICAgIGVuZERhdGU6IGV2ZW50LmVuZERhdGUsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5kYXRlID0ge1xyXG4gICAgICAgIHN0YXJ0RGF0ZTogZXZlbnQuc3RhcnREYXRlLFxyXG4gICAgICAgIGVuZERhdGU6IGV2ZW50LmVuZERhdGUsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICAvLyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIsIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKSk7XHJcbiAgICAgIC8vIHRoaXMucmVzZXRWYWxpZGF0aW9uKCk7XHJcbiAgICAgIC8vIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUubmV4dCh0aGlzLnNlbGVjdGVkRmlsdGVycyk7XHJcblxyXG4gICAgICAvLyBSZXNldCB0aGUgcGlja2VyIHRvIGZvcmNlIHJlLXJlbmRlclxyXG4gICAgICB0aGlzLmlzQWN0aXZpdHlMb2cgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgLy8gICB0aGlzLmlzQWN0aXZpdHlMb2cgPSB0cnVlO1xyXG4gICAgICAvLyAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAvLyB9LCAxMCk7XHJcblxyXG4gICAgICAvLyBDYWxsIEFQSVxyXG4gICAgICB0aGlzLmdldEFjdGl2aXR5TG9nVGFibGVEYXRhKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRWYWxpZGF0aW9uKCkge1xyXG4gICAgdGhpcy5pc0N1c3RvbURhdGUgPSAobTogZGF5anMuRGF5anMpID0+IHtcclxuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGdpdmVuIGRhdGUgaXMgYmVmb3JlIHllc3RlcmRheVxyXG4gICAgICByZXR1cm4gbS5pc0FmdGVyKHRoaXMuZGF5anMoKSwgXCJkYXlcIikgPyBcImludmFsaWQtZGF0ZVwiIDogZmFsc2U7XHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG10LTRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtM1wiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIG1iLTJcIj5BY3Rpdml0eSBMb2cgPC9zcGFuPlxyXG4gICAgICAgIDwvaDM+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciAgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gZm9vdGZhbGxzZWFyY2ggc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSAgbXMtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIiByeD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInJvdGF0ZSg0NSAxNy4wMzY1IDE1LjEyMjMpXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDE5QzYuNTU1NTYgMTkgMyAxNS40NDQ0IDMgMTFDMyA2LjU1NTU2IDYuNTU1NTYgMyAxMSAzQzE1LjQ0NDQgMyAxOSA2LjU1NTU2IDE5IDExQzE5IDE1LjQ0NDQgMTUuNDQ0NCAxOSAxMSAxOVpNMTEgNUM3LjUzMzMzIDUgNSA3LjUzMzMzIDUgMTFDNSAxNC40NjY3IDcuNTMzMzMgMTcgMTEgMTdDMTQuNDY2NyAxNyAxNyAxNC40NjY3IDE3IDExQzE3IDcuNTMzMzMgMTQuNDY2NyA1IDExIDVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwicmVjZWl2ZWREYXRhID09PSAnY2hlY2tsaXN0J1wiIFsobmdNb2RlbCldPVwic2VhcmNoSW5wdXRcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHBzLTE0IG14LTIgbG9nc2VhcmNoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggd2l0aCBTdG9yZSwgRW1haWwsIENoZWNrbGlzdFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChrZXl1cC5lbnRlcik9XCJzZWFyY2hGaWVsZCgpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJyZWNlaXZlZERhdGEgPT09ICd0YXNrJ1wiIFsobmdNb2RlbCldPVwic2VhcmNoSW5wdXRcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHBzLTE0IG14LTIgbG9nc2VhcmNoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggd2l0aCBTdG9yZSwgRW1haWwsIFRhc2tcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAoa2V5dXAuZW50ZXIpPVwic2VhcmNoRmllbGQoKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBkYXRlcGlja2VyIHN0YXJ0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLWRhdGUtcmFuZ2UtcGlja2VyIChkYXRlQ2hhbmdlKT1cImRhdGVjaGFuZ2UoJGV2ZW50KVwiIFt2YWx1ZV09XCJjb3VudFwiPjwvbGliLWRhdGUtcmFuZ2UtcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gZGF0ZXBpY2tlciBlbmQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItZmlsdGVycyAgW2RhdGFPYmplY3RdPVwiZGF0YU9iamVjdFwiIChhcHBsaWVkRmlsdGVycyk9XCJhcHBseUZpbHRlcnMoJGV2ZW50KVwiPjwvbGliLWZpbHRlcnM+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggb3ZlcmZsb3ctYXV0byBtYi0yIG14LTRcIj5cclxuICAgICAgICA8dWxcclxuICAgICAgICAgICAgY2xhc3M9XCJuYXYgbmF2LXN0cmV0Y2ggbmF2LWxpbmUtdGFiczEgbmF2LWxpbmUtdGFicy0yeCAganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgYm9yZGVyLXRyYW5zcGFyZW50IGZsZXgtbm93cmFwXCI+XHJcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIlNlbGVjdHRhYnMoJ2NoZWNrbGlzdCcpXCIgW3JvdXRlckxpbmtdPVwiWycvbWFuYWdlL3RyYXgvYWN0aW9uY2VudGVyJ11cIiBbcXVlcnlQYXJhbXNdPVwieyB0eXBlOiAnY2hlY2tsaXN0JyB9XCI+XHJcbiAgICAgICAgICAgICAgICA8YSBbbmdDbGFzc109XCJyZWNlaXZlZERhdGEgPT09ICdjaGVja2xpc3QnPydidG4gYWN0aXZlYnRuJzonJ1wiIGNsYXNzPVwiZnctc2VtaWJvbGQgbmF2LWxpbmsgbWUtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIENoZWNrbGlzdFxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJTZWxlY3R0YWJzKCd0YXNrJylcIiBbcm91dGVyTGlua109XCJbJy9tYW5hZ2UvdHJheC9hY3Rpb25jZW50ZXInXVwiIFtxdWVyeVBhcmFtc109XCJ7IHR5cGU6ICd0YXNrJyB9XCI+XHJcbiAgICAgICAgICAgICAgICA8YSBbbmdDbGFzc109XCJyZWNlaXZlZERhdGEgPT09ICd0YXNrJyB8fCByZWNlaXZlZERhdGEgPT09ICdHcm91cCBEZXRhaWxzIFZhbHVlJz8gJ2J0biBhY3RpdmVidG4nOicnXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIG1lLTZcIj5UYXNrXHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuICAgICAgICA8IS0tIDxsaWItdmlldy1hY3Rpb24gW3JlY2VpdmVkRGF0YV09XCJyZWNlaXZlZERhdGFcIj48L2xpYi12aWV3LWFjdGlvbj4gLS0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgPHRhYmxlICpuZ0lmPVwiIXRhc2tMb2FkaW5nICYmICF0YXNrTm9EYXRhXCIgY2xhc3M9XCJ0YWJsZSB0ZXh0LW5vd3JhcCBib3R0b20tYm9yZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnZGF0ZXRpbWUnKVwiPkRhdGUgJiBUaW1lPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2RhdGV0aW1lJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ2RhdGV0aW1lJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cInJlY2VpdmVkRGF0YSA9PT0gJ2NoZWNrbGlzdCdcIj5DaGVja2xpc3QgTmFtZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cInJlY2VpdmVkRGF0YSA9PT0gJ3Rhc2snXCI+VGFzayBOYW1lPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkFjdGlvbiBQZXJmb3JtZWQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+UGVyZm9ybWVkIGJ5PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPk5hbWU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+QWN0aW9uczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBsb2cgb2YgYWN0aXZpdHlMb2dUYWJsZURhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWJsZS10aXRsZVwiIFtpbm5lckhUTUxdPVwiZm9ybWF0RGF0ZVRpbWUobG9nLl9zb3VyY2UuY3JlYXRlQXQpXCI+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiEobG9nLl9zb3VyY2UudHlwZSA9PT0gJ3Rhc2snICYmIGxvZy5fc291cmNlLmZyb21DaGVja0xpc3ROYW1lKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFibGUtdGl0bGUgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBsb2cuX3NvdXJjZS5jaGVja0xpc3ROYW1lIHx8ICctLScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsb2cuX3NvdXJjZS50eXBlID09PSAndGFzaycgJiYgbG9nLl9zb3VyY2UuZnJvbUNoZWNrTGlzdE5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhYmxlLXRpdGxlIG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbG9nLl9zb3VyY2UuY2hlY2tMaXN0TmFtZSB8fCAnLS0nIH19IDxicj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjY2NTQgNy41MDAxNkw3LjQ5ODcgMy4zMzM1TTcuNDk4NyAzLjMzMzVMMy4zMzIwMyA3LjUwMDE2TTcuNDk4NyAzLjMzMzVWMTMuMzMzNUM3LjQ5ODcgMTQuMjE3NiA3Ljg0OTg5IDE1LjA2NTQgOC40NzUwMSAxNS42OTA1QzkuMTAwMTMgMTYuMzE1NiA5Ljk0Nzk4IDE2LjY2NjggMTAuODMyIDE2LjY2NjhIMTYuNjY1NFwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjxzcGFuIGNsYXNzPVwibXgtMlwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjNcIiBoZWlnaHQ9XCIyM1wiIHZpZXdCb3g9XCIwIDAgMjMgMjNcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC40MTQ0OCA0LjUyMzAzQzguNjk1MTggNC44MDM3MSA4LjY5NTE4IDUuMjU4OCA4LjQxNDQ4IDUuNTM5NDhMNS41Mzk0OCA4LjQxNDQ4QzUuMjU4OCA4LjY5NTE4IDQuODAzNzEgOC42OTUxOCA0LjUyMzAzIDguNDE0NDhMMy4wODU1MyA2Ljk3Njk4QzIuODA0ODIgNi42OTYzIDIuODA0ODIgNi4yNDEyMSAzLjA4NTUzIDUuOTYwNTNDMy4zNjYyMSA1LjY3OTgyIDMuODIxMyA1LjY3OTgyIDQuMTAxOTggNS45NjA1M0w1LjAzMTI1IDYuODg5NzhMNy4zOTgwMyA0LjUyMzAzQzcuNjc4NzEgNC4yNDIzMiA4LjEzMzggNC4yNDIzMiA4LjQxNDQ4IDQuNTIzMDNaXCIgZmlsbD1cIiM2NjcwODVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjQxNDQ4IDExLjcxMDVDOC42OTUxOCAxMS45OTEyIDguNjk1MTggMTIuNDQ2MyA4LjQxNDQ4IDEyLjcyN0w1LjUzOTQ4IDE1LjYwMkM1LjI1ODggMTUuODgyNiA0LjgwMzcxIDE1Ljg4MjYgNC41MjMwMyAxNS42MDJMMy4wODU1MyAxNC4xNjQ1QzIuODA0ODIgMTMuODgzOCAyLjgwNDgyIDEzLjQyODcgMy4wODU1MyAxMy4xNDc5QzMuMzY2MjEgMTIuODY3MyAzLjgyMTMgMTIuODY3MyA0LjEwMTk4IDEzLjE0NzlMNS4wMzEyNSAxNC4wNzczTDcuMzk4MDMgMTEuNzEwNUM3LjY3ODcxIDExLjQyOTkgOC4xMzM4IDExLjQyOTkgOC40MTQ0OCAxMS43MTA1WlwiIGZpbGw9XCIjNjY3MDg1XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuMDYyNSA2LjQ2ODc1QzEwLjA2MjUgNi4wNzE4IDEwLjM4NDQgNS43NSAxMC43ODEyIDUuNzVIMTUuMDkzOEMxNS40OTA2IDUuNzUgMTUuODEyNSA2LjA3MTggMTUuODEyNSA2LjQ2ODc1QzE1LjgxMjUgNi44NjU3IDE1LjQ5MDYgNy4xODc1IDE1LjA5MzggNy4xODc1SDEwLjc4MTJDMTAuMzg0NCA3LjE4NzUgMTAuMDYyNSA2Ljg2NTcgMTAuMDYyNSA2LjQ2ODc1WlwiIGZpbGw9XCIjNjY3MDg1XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMy41OTM3NSAwQzEuNjA4OTggMCAwIDEuNjA4OTggMCAzLjU5Mzc1VjE2LjUzMTJDMCAxOC41MTYgMS42MDg5OCAyMC4xMjUgMy41OTM3NSAyMC4xMjVIOS40ODcwOEM5LjI1NDI5IDE5LjY2OTYgOS4wNjQzNiAxOS4xODg2IDguOTIyNjEgMTguNjg3NUgzLjU5Mzc1QzIuNDAyODggMTguNjg3NSAxLjQzNzUgMTcuNzIyMSAxLjQzNzUgMTYuNTMxMlYzLjU5Mzc1QzEuNDM3NSAyLjQwMjg4IDIuNDAyODggMS40Mzc1IDMuNTkzNzUgMS40Mzc1SDE2LjUzMTJDMTcuNzIyMSAxLjQzNzUgMTguNjg3NSAyLjQwMjg4IDE4LjY4NzUgMy41OTM3NVY4LjkyMjYxQzE5LjE4ODYgOS4wNjQzNiAxOS42Njk2IDkuMjU0MjkgMjAuMTI1IDkuNDg3MDhWMy41OTM3NUMyMC4xMjUgMS42MDg5OCAxOC41MTYgMCAxNi41MzEyIDBIMy41OTM3NVpcIiBmaWxsPVwiIzY2NzA4NVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2LjUzMTMgMjNDMjAuMTAzOSAyMyAyMyAyMC4xMDM5IDIzIDE2LjUzMTNDMjMgMTIuOTU4NiAyMC4xMDM5IDEwLjA2MjUgMTYuNTMxMyAxMC4wNjI1QzEyLjk1ODYgMTAuMDYyNSAxMC4wNjI1IDEyLjk1ODYgMTAuMDYyNSAxNi41MzEzQzEwLjA2MjUgMjAuMTAzOSAxMi45NTg2IDIzIDE2LjUzMTMgMjNaTTE2LjUzMTMgMTIuOTM3NUMxNi45MjgxIDEyLjkzNzUgMTcuMjUgMTMuMjU5NCAxNy4yNSAxMy42NTYzVjE1LjgxMjVIMTkuNDA2M0MxOS44MDMxIDE1LjgxMjUgMjAuMTI1IDE2LjEzNDQgMjAuMTI1IDE2LjUzMTNDMjAuMTI1IDE2LjkyODEgMTkuODAzMSAxNy4yNSAxOS40MDYzIDE3LjI1SDE3LjI1VjE5LjQwNjNDMTcuMjUgMTkuODAzMSAxNi45MjgxIDIwLjEyNSAxNi41MzEzIDIwLjEyNUMxNi4xMzQ0IDIwLjEyNSAxNS44MTI1IDE5LjgwMzEgMTUuODEyNSAxOS40MDYzVjE3LjI1SDEzLjY1NjNDMTMuMjU5NCAxNy4yNSAxMi45Mzc1IDE2LjkyODEgMTIuOTM3NSAxNi41MzEzQzEyLjkzNzUgMTYuMTM0NCAxMy4yNTk0IDE1LjgxMjUgMTMuNjU2MyAxNS44MTI1SDE1LjgxMjVWMTMuNjU2M0MxNS44MTI1IDEzLjI1OTQgMTYuMTM0NCAxMi45Mzc1IDE2LjUzMTMgMTIuOTM3NVpcIiBmaWxsPVwiIzY2NzA4NVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PHNwYW4gY2xhc3M9XCJ0YWJsZS10aXRsZVwiPiB7eyBsb2cuX3NvdXJjZS5mcm9tQ2hlY2tMaXN0TmFtZSB8fCAnLS0nIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWJsZS10aXRsZSBiYWRnZS1saWdodFwiIFtuZ0NsYXNzXT1cImdldEFjdGlvbkJhZGdlQ2xhc3MobG9nLl9zb3VyY2UuYWN0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRBY3Rpb25MYWJlbChsb2cuX3NvdXJjZS5hY3Rpb24pIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtdGl0bGUgZC1mbGV4XCI+PHNwYW4gY2xhc3M9XCJtZS0zXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PHNwYW4+e3sgbG9nLl9zb3VyY2UuY3JlYXRlZEJ5RW1haWwgfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtdGl0bGUgZC1mbGV4XCI+PHNwYW4gKm5nSWY9XCJsb2cuX3NvdXJjZT8uY292ZXJhZ2UgPT09ICdzdG9yZScgfHwgKCFsb2cuX3NvdXJjZT8uY292ZXJhZ2UgJiYgbG9nLl9zb3VyY2U/LnN0b3JlTmFtZSkgXCI+PHNwYW4gY2xhc3M9XCJtZS0zXCIgKm5nSWY9XCJsb2cuX3NvdXJjZT8uc3RvcmVOYW1lXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMi42Nzg5MyA1LjgwMzY2TDIuNjI1NjggNS44ODY4M0MyLjA2NzY0IDYuODczODggMi42NjM0NyA4LjEyMTMgMy43MzUwOCA4LjI2NDRDMy44MzIxNyA4LjI3NjI3IDMuOTIyNTEgOC4yODI1NSA0LjAxMDc4IDguMjgyNTVDNC41ODg5MyA4LjI4MjU1IDUuMTAwMSA4LjAzNDUzIDUuNDU2MzcgNy42NDc4TDYuMDA5NyA3LjA0NzE4TDYuNTYxMTYgNy42NDk1M0M2LjkxMzEgOC4wMzM5NSA3LjQyMzExIDguMjgyNTUgOC4wMDUxNyA4LjI4MjU1QzguNTg0NjEgOC4yODI1NSA5LjA5NzU1IDguMDMzNiA5LjQ0OTE3IDcuNjQ5NTNMMTAuMDAyNCA3LjA0NTI5TDEwLjU1NTUgNy42NDk1M0MxMC45MDcyIDguMDMzNiAxMS40MjAxIDguMjgyNTUgMTEuOTk5NiA4LjI4MjU1QzEyLjU3OSA4LjI4MjU1IDEzLjA5MTkgOC4wMzM2IDEzLjQ0MzYgNy42NDk1M0wxMy45OTY3IDcuMDQ1MjlMMTQuNTQ5OSA3LjY0OTUzQzE0LjkwMTYgOC4wMzM2IDE1LjQxNDUgOC4yODI1NSAxNS45OTM5IDguMjgyNTVDMTYuMDc5MyA4LjI4MjU1IDE2LjE3MjQgOC4yNzYyNSAxNi4yNjg4IDguMjY0NUMxNy4zNjM5IDguMTE1MTggMTcuOTYxOCA2LjgwMDkxIDE3LjMyMyA1LjgwNDE2QzE3LjMyMyA1LjgwNDEgMTcuMzIzIDUuODA0MDUgMTcuMzIyOSA1LjgwMzk5TDE1LjU2NDggMy4wNjI1OEwxNS41NjQ4IDMuMDYyNThMMTUuNTYzOCAzLjA2MTExQzE1LjU0ODYgMy4wMzcyOCAxNS41MTEyIDMuMDExNzIgMTUuNDY0IDMuMDExNzJINC41MzQ1OEM0LjQ4NzQ0IDMuMDExNzIgNC40NDk5NSAzLjAzNzI4IDQuNDM0NzQgMy4wNjExMUw0LjQzNDEzIDMuMDYyMDhMMi42Nzg5MyA1LjgwMzY2Wk0xNS42NTA0IDEwLjczNjlWMTMuODY4OVYxNC42MTg5SDE0LjkwMDRINS4wOTgyMUg0LjM0ODIxVjEzLjg2ODlWMTAuNzM3NEM0LjIzNzk4IDEwLjc0NTYgNC4xMjY0NiAxMC43NDk4IDQuMDEzODQgMTAuNzQ5OEMzLjk3MTU0IDEwLjc0OTggMy45Mjk1MiAxMC43NDkyIDMuODg3NzggMTAuNzQ4VjEzLjg2ODlWMTUuODAzNEMzLjg4Nzc4IDE2LjQ0NjggNC40MjE2OCAxNi45ODc5IDUuMDk4MjEgMTYuOTg3OUgxNC45MDA0QzE1LjU3NjkgMTYuOTg3OSAxNi4xMTA4IDE2LjQ0NjggMTYuMTEwOCAxNS44MDM0VjEzLjg2ODlWMTAuNzQ4MkMxNi4wNzEgMTAuNzQ5MyAxNi4wMzEgMTAuNzQ5OCAxNS45OTA5IDEwLjc0OThDMTUuODc2NSAxMC43NDk4IDE1Ljc2MjkgMTAuNzQ1NSAxNS42NTA0IDEwLjczNjlaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjxzcGFuPnt7IGxvZy5fc291cmNlLnN0b3JlTmFtZSB8fCAnLScgfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZy5fc291cmNlPy5jb3ZlcmFnZSA9PT0gJ3VzZXInIHx8ICghbG9nLl9zb3VyY2U/LmNvdmVyYWdlICYmIGxvZy5fc291cmNlPy51c2VyRW1haWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTNcIiAqbmdJZj1cImxvZy5fc291cmNlPy51c2VyRW1haWxcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48c3Bhbj57eyBsb2cuX3NvdXJjZT8udXNlckVtYWlsIHx8ICctJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gXCJbJ3VwZGF0ZWQnLCAnZWRpdGVkJywgJ2RyYWZ0J10uaW5jbHVkZXMobG9nLl9zb3VyY2UuYWN0aW9uKVwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICAqbmdJZj1cIlsndXBkYXRlZCcsICdlZGl0ZWQnXS5pbmNsdWRlcyhsb2cuX3NvdXJjZS5hY3Rpb24pIHx8IChsb2cuX3NvdXJjZS5hY3Rpb24gPT09ICdkcmFmdCcgJiYgbG9nLl9zb3VyY2UubG9nRGV0YWlscyAmJiAhaXNMb2dEZXRhaWxzRW1wdHkobG9nLl9zb3VyY2UubG9nRGV0YWlscykpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlld0FjdGlvbihsb2cuX3NvdXJjZSlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeSBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dT5WaWV3PC91PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZy5fc291cmNlLmFjdGlvbiA9PT0gJ3N1Ym1pdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVRvR2FsbGVyeShsb2cuX3NvdXJjZSlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeSBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dT5WaWV3PC91PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICpuZ0lmPVwiIVsndXBkYXRlZCcsICdlZGl0ZWQnLCAnc3VibWl0JywgJ2RyYWZ0J10uaW5jbHVkZXMobG9nLl9zb3VyY2UuYWN0aW9uKVwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIVsndXBkYXRlZCcsICdlZGl0ZWQnLCAnc3VibWl0J10uaW5jbHVkZXMobG9nLl9zb3VyY2UuYWN0aW9uKSAmJiAhKGxvZy5fc291cmNlLmFjdGlvbiA9PT0gJ2RyYWZ0JyAmJiBsb2cuX3NvdXJjZS5sb2dEZXRhaWxzICYmICFpc0xvZ0RldGFpbHNFbXB0eShsb2cuX3NvdXJjZS5sb2dEZXRhaWxzKSlcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhc2tMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFza05vRGF0YSAmJiAhdGFza0xvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG15LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGFtYWludGV4dCBtdC0zXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YXN1YnRleHRcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIEFjdGl2aXR5IExvZzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiF0YXNrTG9hZGluZyAmJiAhdGFza05vRGF0YVwiPlxyXG4gICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gY2xhc3M9XCJ0ZXh0LXN0YXJ0XCIgW2l0ZW1zUGVyUGFnZV09XCJpdGVtc1BlclBhZ2VcIiBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtc1wiIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnaW5hdGlvblNpemVzXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcclxuICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48L2Rpdj4iXX0=
|