@bnsights/bbsf-admin-portal 1.1.2 → 1.1.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.
Files changed (684) hide show
  1. package/README.md +4 -0
  2. package/{esm2020 → esm2022}/bnsights-bbsf-admin-portal.mjs +4 -4
  3. package/{esm2020 → esm2022}/lib/Pages/ActiveDirectories/active-directories.component.mjs +14 -14
  4. package/esm2022/lib/Pages/ActiveDirectories/active-directory/active-directory.component.mjs +421 -0
  5. package/esm2022/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.mjs +528 -0
  6. package/{esm2020 → esm2022}/lib/Pages/ActiveDirectories/active-directory-routing.module.mjs +29 -29
  7. package/esm2022/lib/Pages/ActiveDirectories/active-directory.module.mjs +108 -0
  8. package/esm2022/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.mjs +23 -0
  9. package/{esm2020 → esm2022}/lib/Pages/_layout/components/aside/aside.component.mjs +65 -65
  10. package/{esm2020 → esm2022}/lib/Pages/_layout/components/content/content.component.mjs +31 -31
  11. package/{esm2020 → esm2022}/lib/Pages/_layout/components/footer/footer.component.mjs +32 -32
  12. package/{esm2020 → esm2022}/lib/Pages/_layout/components/header/header.component.mjs +57 -57
  13. package/{esm2020 → esm2022}/lib/Pages/_layout/components/header/page-title/page-title.component.mjs +36 -36
  14. package/{esm2020 → esm2022}/lib/Pages/_layout/components/scripts-init/scripts-init.component.mjs +58 -58
  15. package/{esm2020 → esm2022}/lib/Pages/_layout/components/subheader/subheader.component.mjs +36 -36
  16. package/{esm2020 → esm2022}/lib/Pages/_layout/components/subheader/subheader.module.mjs +26 -26
  17. package/{esm2020 → esm2022}/lib/Pages/_layout/components/toolbar/toolbar.component.mjs +41 -41
  18. package/{esm2020 → esm2022}/lib/Pages/_layout/components/toolbar/toolbar.module.mjs +25 -25
  19. package/{esm2020 → esm2022}/lib/Pages/_layout/components/topbar/topbar.component.mjs +71 -71
  20. package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/activation/activation.component.mjs +92 -92
  21. package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/anonymouslayout-routing.module.mjs +37 -37
  22. package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/anonymouslayout.component.mjs +54 -54
  23. package/esm2022/lib/Pages/anonymouslayout/anonymouslayout.module.mjs +100 -0
  24. package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/error/error.component.mjs +48 -48
  25. package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.mjs +59 -59
  26. package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/login/login.component.mjs +94 -94
  27. package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/rest-password/rest-password.component.mjs +90 -90
  28. package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/upload-license/upload-license.component.mjs +71 -71
  29. package/{esm2020 → esm2022}/lib/Pages/authentication/auth-callback/auth-callback.component.mjs +43 -43
  30. package/{esm2020 → esm2022}/lib/Pages/authentication/authentication.component.mjs +15 -15
  31. package/{esm2020 → esm2022}/lib/Pages/authentication/authentication.module.mjs +41 -41
  32. package/{esm2020 → esm2022}/lib/Pages/authentication/authentication.routing.mjs +31 -31
  33. package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.mjs +330 -0
  34. package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration.component.mjs +157 -0
  35. package/esm2022/lib/Pages/configurations/configuration/configuration.component.mjs +801 -0
  36. package/{esm2020 → esm2022}/lib/Pages/configurations/configurations.component.mjs +15 -15
  37. package/esm2022/lib/Pages/configurations/configurations.module.mjs +104 -0
  38. package/{esm2020 → esm2022}/lib/Pages/configurations/configurations.routing.mjs +41 -41
  39. package/{esm2020 → esm2022}/lib/Pages/configurations/index.mjs +6 -6
  40. package/{esm2020 → esm2022}/lib/Pages/core/auth.module.mjs +30 -30
  41. package/esm2022/lib/Pages/core/authentication/admin.guard.mjs +17 -0
  42. package/{esm2020 → esm2022}/lib/Pages/core/authentication/auth.guard.mjs +46 -46
  43. package/esm2022/lib/Pages/core/authentication/auth.service.mjs +147 -0
  44. package/esm2022/lib/Pages/departments/department/department.component.mjs +220 -0
  45. package/esm2022/lib/Pages/departments/department-info/department-info.component.mjs +185 -0
  46. package/{esm2020 → esm2022}/lib/Pages/departments/departments-routing.module.mjs +27 -27
  47. package/{esm2020 → esm2022}/lib/Pages/departments/departments.component.mjs +15 -15
  48. package/esm2022/lib/Pages/departments/departments.module.mjs +94 -0
  49. package/esm2022/lib/Pages/documents/add-document/add-document.component.mjs +136 -0
  50. package/esm2022/lib/Pages/documents/document-master-layouts/document-master-layouts.component.mjs +148 -0
  51. package/{esm2020 → esm2022}/lib/Pages/documents/document-template-info/document-template-info.component.mjs +332 -332
  52. package/esm2022/lib/Pages/documents/document-templates/document-templates.component.mjs +437 -0
  53. package/{esm2020 → esm2022}/lib/Pages/documents/documents.component.mjs +15 -15
  54. package/esm2022/lib/Pages/documents/documents.module.mjs +114 -0
  55. package/esm2022/lib/Pages/documents/documents.routing.mjs +37 -0
  56. package/esm2022/lib/Pages/documents/edit-document/edit-document.component.mjs +169 -0
  57. package/{esm2020 → esm2022}/lib/Pages/documents/edit-document-template/edit-document-template.component.mjs +123 -123
  58. package/{esm2020 → esm2022}/lib/Pages/empty-data/empty-data.component.mjs +31 -31
  59. package/{esm2020 → esm2022}/lib/Pages/empty-data/empty-data.module.mjs +28 -28
  60. package/esm2022/lib/Pages/helpCenter/help-center/help-center.component.mjs +294 -0
  61. package/esm2022/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.mjs +43 -0
  62. package/{esm2020 → esm2022}/lib/Pages/helpCenter/help-center-routing.module.mjs +31 -31
  63. package/esm2022/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.mjs +242 -0
  64. package/esm2022/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.mjs +243 -0
  65. package/esm2022/lib/Pages/helpCenter/help-center.module.mjs +99 -0
  66. package/{esm2020 → esm2022}/lib/Pages/helpCenter/help-centers.component.mjs +15 -15
  67. package/{esm2020 → esm2022}/lib/Pages/home/filter-pipe.mjs +23 -23
  68. package/esm2022/lib/Pages/home/home.component.mjs +158 -0
  69. package/esm2022/lib/Pages/home/home.module.mjs +48 -0
  70. package/esm2022/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.mjs +443 -0
  71. package/esm2022/lib/Pages/impersonation-rules/impersonation-rules.module.mjs +95 -0
  72. package/esm2022/lib/Pages/jobs/jobs/jobs.component.mjs +223 -0
  73. package/esm2022/lib/Pages/jobs/jobs.module.mjs +87 -0
  74. package/{esm2020 → esm2022}/lib/Pages/license/license/license.component.mjs +163 -163
  75. package/esm2022/lib/Pages/license/license.module.mjs +71 -0
  76. package/{esm2020 → esm2022}/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.mjs +215 -215
  77. package/esm2022/lib/Pages/localizations/localizations.component.mjs +516 -0
  78. package/esm2022/lib/Pages/localizations/localizations.module.mjs +79 -0
  79. package/{esm2020 → esm2022}/lib/Pages/logs/log/log.component.mjs +93 -93
  80. package/{esm2020 → esm2022}/lib/Pages/logs/logs-routing.module.mjs +27 -27
  81. package/{esm2020 → esm2022}/lib/Pages/logs/logs.component.mjs +15 -15
  82. package/esm2022/lib/Pages/logs/logs.module.mjs +87 -0
  83. package/esm2022/lib/Pages/lookups/lookup/lookup.component.mjs +367 -0
  84. package/esm2022/lib/Pages/lookups/lookup-group/lookup-group.component.mjs +187 -0
  85. package/esm2022/lib/Pages/lookups/lookup-item/lookup-item.component.mjs +297 -0
  86. package/{esm2020 → esm2022}/lib/Pages/lookups/lookups-routing.module.mjs +29 -29
  87. package/{esm2020 → esm2022}/lib/Pages/lookups/lookups.component.mjs +15 -15
  88. package/esm2022/lib/Pages/lookups/lookups.module.mjs +100 -0
  89. package/esm2022/lib/Pages/notifications/add-notification/add-notification.component.mjs +104 -0
  90. package/{esm2020 → esm2022}/lib/Pages/notifications/edit-email/edit-email.component.mjs +158 -158
  91. package/esm2022/lib/Pages/notifications/edit-notification/edit-notification.component.mjs +133 -0
  92. package/{esm2020 → esm2022}/lib/Pages/notifications/edit-sms/edit-sms.component.mjs +115 -115
  93. package/esm2022/lib/Pages/notifications/master-layouts/master-layouts.component.mjs +148 -0
  94. package/esm2022/lib/Pages/notifications/notifications-routing.module.mjs +39 -0
  95. package/{esm2020 → esm2022}/lib/Pages/notifications/notifications.component.mjs +15 -15
  96. package/esm2022/lib/Pages/notifications/notifications.module.mjs +101 -0
  97. package/{esm2020 → esm2022}/lib/Pages/notifications/template-info/template-info.component.mjs +391 -391
  98. package/esm2022/lib/Pages/notifications/templates/templates.component.mjs +495 -0
  99. package/esm2022/lib/Pages/providers/provider/provider.component.mjs +615 -0
  100. package/{esm2020 → esm2022}/lib/Pages/providers/providers-routing.module.mjs +27 -27
  101. package/{esm2020 → esm2022}/lib/Pages/providers/providers.component.mjs +15 -15
  102. package/esm2022/lib/Pages/providers/providers.module.mjs +91 -0
  103. package/esm2022/lib/Pages/publicHolidays/public-holiday/public-holiday.component.mjs +334 -0
  104. package/{esm2020 → esm2022}/lib/Pages/publicHolidays/public-holidays-routing.module.mjs +25 -25
  105. package/{esm2020 → esm2022}/lib/Pages/publicHolidays/public-holidays.component.mjs +15 -15
  106. package/esm2022/lib/Pages/publicHolidays/public-holidays.module.mjs +94 -0
  107. package/esm2022/lib/Pages/roles/permission-set-info/permission-set-info.component.mjs +187 -0
  108. package/esm2022/lib/Pages/roles/permissions/permissions.component.mjs +226 -0
  109. package/esm2022/lib/Pages/roles/permissionsets/permissionsets.component.mjs +277 -0
  110. package/{esm2020 → esm2022}/lib/Pages/roles/roles-routing.module.mjs +29 -29
  111. package/{esm2020 → esm2022}/lib/Pages/roles/roles.component.mjs +15 -15
  112. package/esm2022/lib/Pages/roles/roles.module.mjs +105 -0
  113. package/esm2022/lib/Pages/sectors/sector/sector.component.mjs +193 -0
  114. package/esm2022/lib/Pages/sectors/sector-info/sector-info.component.mjs +180 -0
  115. package/esm2022/lib/Pages/sectors/sectors-department-info/sectors-department-info.component.mjs +187 -0
  116. package/{esm2020 → esm2022}/lib/Pages/sectors/sectors-routing.module.mjs +29 -29
  117. package/{esm2020 → esm2022}/lib/Pages/sectors/sectors.component.mjs +15 -15
  118. package/esm2022/lib/Pages/sectors/sectors.module.mjs +96 -0
  119. package/{esm2020 → esm2022}/lib/Pages/shared/Enums/ADType.mjs +5 -5
  120. package/{esm2020 → esm2022}/lib/Pages/shared/Enums/Enums.mjs +54 -54
  121. package/{esm2020 → esm2022}/lib/Pages/shared/Enums/ProviderType.mjs +6 -6
  122. package/{esm2020 → esm2022}/lib/Pages/shared/Enums/WFActivityType.mjs +11 -11
  123. package/{esm2020 → esm2022}/lib/Pages/shared/Enums/configuration/ConditionRHSType.mjs +5 -5
  124. package/{esm2020 → esm2022}/lib/Pages/shared/Enums/configuration/authentecation-configuration.mjs +18 -18
  125. package/{esm2020 → esm2022}/lib/Pages/shared/Pipes/survey-date.pipe.mjs +22 -22
  126. package/{esm2020 → esm2022}/lib/Pages/shared/Services/AccountService.service.mjs +55 -55
  127. package/{esm2020 → esm2022}/lib/Pages/shared/Services/ActiveDirectoryService.service.mjs +51 -51
  128. package/{esm2020 → esm2022}/lib/Pages/shared/Services/AnonymousLayoutService.service.mjs +29 -29
  129. package/{esm2020 → esm2022}/lib/Pages/shared/Services/ConfigurationsService.service.mjs +61 -61
  130. package/{esm2020 → esm2022}/lib/Pages/shared/Services/DepartmentService.service.mjs +46 -46
  131. package/{esm2020 → esm2022}/lib/Pages/shared/Services/DocumentHeaderAndFooterTemplate.service.mjs +36 -36
  132. package/{esm2020 → esm2022}/lib/Pages/shared/Services/DocumentTemplateService.service.mjs +81 -81
  133. package/{esm2020 → esm2022}/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.mjs +37 -37
  134. package/{esm2020 → esm2022}/lib/Pages/shared/Services/ErrorService.service.mjs +15 -15
  135. package/{esm2020 → esm2022}/lib/Pages/shared/Services/GlobalErrorHandler.service.mjs +36 -36
  136. package/{esm2020 → esm2022}/lib/Pages/shared/Services/HelpCenterService.service.mjs +47 -47
  137. package/{esm2020 → esm2022}/lib/Pages/shared/Services/HttpErrorInterceptor.service.mjs +47 -47
  138. package/{esm2020 → esm2022}/lib/Pages/shared/Services/ImpersonationRuleService.service.mjs +36 -36
  139. package/{esm2020 → esm2022}/lib/Pages/shared/Services/JobsService.service.mjs +21 -21
  140. package/{esm2020 → esm2022}/lib/Pages/shared/Services/LicenseService.service.mjs +24 -24
  141. package/{esm2020 → esm2022}/lib/Pages/shared/Services/LogsService.mjs +24 -24
  142. package/{esm2020 → esm2022}/lib/Pages/shared/Services/LookupGroupsService.service.mjs +33 -33
  143. package/{esm2020 → esm2022}/lib/Pages/shared/Services/LookupService.service.mjs +67 -67
  144. package/{esm2020 → esm2022}/lib/Pages/shared/Services/PermissionSetService.service.mjs +50 -50
  145. package/{esm2020 → esm2022}/lib/Pages/shared/Services/PermissionsService.service.mjs +36 -36
  146. package/{esm2020 → esm2022}/lib/Pages/shared/Services/PublicHolidayService.service.mjs +39 -39
  147. package/{esm2020 → esm2022}/lib/Pages/shared/Services/SectorService.service.mjs +46 -46
  148. package/{esm2020 → esm2022}/lib/Pages/shared/Services/TemplateService.service.mjs +90 -90
  149. package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkFlowVersionService.service.mjs +24 -24
  150. package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowActivityService.service.mjs +54 -54
  151. package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowInstanceService.service.mjs +24 -24
  152. package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowLogVariablesService.service.mjs +24 -24
  153. package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowService.service.mjs +38 -38
  154. package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowVariablesService.service.mjs +36 -36
  155. package/{esm2020 → esm2022}/lib/Pages/shared/Services/data.service.mjs +27 -27
  156. package/esm2022/lib/Pages/shared/Services/injectionModuleService.service.mjs +163 -0
  157. package/{esm2020 → esm2022}/lib/Pages/shared/Services/localizationsService.service .mjs +77 -77
  158. package/{esm2020 → esm2022}/lib/Pages/shared/Services/provider.service.mjs +62 -62
  159. package/{esm2020 → esm2022}/lib/Pages/shared/Services/survey-question.service.mjs +57 -57
  160. package/{esm2020 → esm2022}/lib/Pages/shared/Services/survey.service.mjs +140 -140
  161. package/{esm2020 → esm2022}/lib/Pages/shared/Services/userService.service.mjs +80 -80
  162. package/{esm2020 → esm2022}/lib/Pages/shared/base.service.mjs +19 -19
  163. package/{esm2020 → esm2022}/lib/Pages/shared/components/AdDirective.mjs +16 -16
  164. package/{esm2020 → esm2022}/lib/Pages/shared/components/external-url/external-url.component.mjs +168 -168
  165. package/{esm2020 → esm2022}/lib/Pages/shared/components/no-results/no-results.component.mjs +19 -19
  166. package/esm2022/lib/Pages/shared/components/survey/add-survey/add-survey.component.mjs +192 -0
  167. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/delete-survey/delete-survey.component.mjs +48 -48
  168. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/duplicate-survey/duplicate-survey.component.mjs +50 -50
  169. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/edit-survey/edit-survey.component.mjs +217 -217
  170. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/submissions/delete-submission/delete-submission.component.mjs +47 -47
  171. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/submissions/eliminate-submission/eliminate-submission.component.mjs +49 -49
  172. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/submissions/uneliminate-submission/uneliminate-submission.component.mjs +50 -50
  173. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.mjs +624 -624
  174. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/delete-question/delete-question.component.mjs +47 -47
  175. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.mjs +683 -683
  176. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/preview/preview.component.mjs +138 -138
  177. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/publish-survey/publish-survey.component.mjs +102 -102
  178. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/result-question/result.component.mjs +56 -56
  179. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/survey-info.component.mjs +532 -532
  180. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/take-survey/take-survey.component.mjs +113 -113
  181. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/unpublish-survey/unpublish-survey.component.mjs +114 -114
  182. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey.component.mjs +292 -292
  183. package/esm2022/lib/Pages/shared/components/survey-form/survey-form.component.mjs +696 -0
  184. package/esm2022/lib/Pages/shared/components/survey-form-item/survey-form-item.component.mjs +84 -0
  185. package/{esm2020 → esm2022}/lib/Pages/shared/components/survey-layout/survey-layout.component.mjs +15 -15
  186. package/{esm2020 → esm2022}/lib/Pages/shared/config/environment.mjs +11 -11
  187. package/esm2022/lib/Pages/shared/constants.mjs +130 -0
  188. package/{esm2020 → esm2022}/lib/Pages/shared/filter/filter.component.mjs +14 -14
  189. package/{esm2020 → esm2022}/lib/Pages/shared/models/ADModels/ADMappingModel.mjs +3 -3
  190. package/{esm2020 → esm2022}/lib/Pages/shared/models/ADModels/ActiveDirectoryAddEditModel.mjs +6 -6
  191. package/{esm2020 → esm2022}/lib/Pages/shared/models/AccountModels/forgotPasswordModel.mjs +5 -5
  192. package/{esm2020 → esm2022}/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.mjs +50 -50
  193. package/{esm2020 → esm2022}/lib/Pages/shared/models/DepartmentModels/DepartmentModel.mjs +2 -2
  194. package/{esm2020 → esm2022}/lib/Pages/shared/models/DepartmentModels/DepartmentUsersIDRequestModel.mjs +5 -5
  195. package/{esm2020 → esm2022}/lib/Pages/shared/models/DocumentsModels/DocumentExportDTO.mjs +7 -7
  196. package/{esm2020 → esm2022}/lib/Pages/shared/models/DocumentsModels/DocumentHeaderAndFooterTemplate.mjs +9 -9
  197. package/{esm2020 → esm2022}/lib/Pages/shared/models/DocumentsModels/DocumentTemplateDTO.mjs +9 -9
  198. package/{esm2020 → esm2022}/lib/Pages/shared/models/DocumentsModels/DocumentTemplateInfoDTO.mjs +7 -7
  199. package/{esm2020 → esm2022}/lib/Pages/shared/models/HelpCenterModels/HelpCenterItemModel.mjs +11 -11
  200. package/{esm2020 → esm2022}/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.mjs +7 -7
  201. package/{esm2020 → esm2022}/lib/Pages/shared/models/ImpersonationRuleModels/ParticipantModel.mjs +8 -8
  202. package/{esm2020 → esm2022}/lib/Pages/shared/models/InjectedModuleModel/InjectedModule.mjs +6 -6
  203. package/{esm2020 → esm2022}/lib/Pages/shared/models/JobModels/JobCountsModel.mjs +2 -2
  204. package/{esm2020 → esm2022}/lib/Pages/shared/models/LicenseModel/LicenseModel.mjs +5 -5
  205. package/{esm2020 → esm2022}/lib/Pages/shared/models/LocalizationModels/EditResourceModel.mjs +7 -7
  206. package/{esm2020 → esm2022}/lib/Pages/shared/models/LocalizationModels/LocalizationReplaceTextModel.mjs +5 -5
  207. package/{esm2020 → esm2022}/lib/Pages/shared/models/LocalizationModels/UploadJsonVM.mjs +2 -2
  208. package/{esm2020 → esm2022}/lib/Pages/shared/models/Lookups/LookupGroupModel.mjs +6 -6
  209. package/{esm2020 → esm2022}/lib/Pages/shared/models/Lookups/LookupItem.mjs +7 -7
  210. package/{esm2020 → esm2022}/lib/Pages/shared/models/Lookups/LookupModel.mjs +8 -8
  211. package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/EmailHeaderAndFooterTemplate.mjs +10 -10
  212. package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/EmailTemplateInfoDTO.mjs +11 -11
  213. package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/EmailTemplateTesterModel.mjs +2 -2
  214. package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/SMSTemplateInfoDTO.mjs +6 -6
  215. package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/SMSTemplateTesterModel.mjs +2 -2
  216. package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/SendEmailTemplateModel.mjs +2 -2
  217. package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/TemplateDTO.mjs +9 -9
  218. package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/TemplateEditViewModel.mjs +8 -8
  219. package/{esm2020 → esm2022}/lib/Pages/shared/models/PermissionsModels/PermissionModel.mjs +7 -7
  220. package/{esm2020 → esm2022}/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.mjs +7 -7
  221. package/{esm2020 → esm2022}/lib/Pages/shared/models/PermissionsModels/PermissionSetUsersIDRequestModel.mjs +5 -5
  222. package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/DefaultProviderModel.mjs +5 -5
  223. package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/EmailProviderTesterModel.mjs +2 -2
  224. package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/ProviderAttributeModel.mjs +2 -2
  225. package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/ProviderModel.mjs +5 -5
  226. package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/SMSProviderTesterModel.mjs +2 -2
  227. package/{esm2020 → esm2022}/lib/Pages/shared/models/PublicHolidayModels/PublicHolidayModel.mjs +7 -7
  228. package/{esm2020 → esm2022}/lib/Pages/shared/models/SectorModels/SectorDepartmentModel.mjs +5 -5
  229. package/{esm2020 → esm2022}/lib/Pages/shared/models/SectorModels/SectorModel.mjs +6 -6
  230. package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/DeleteSurveyDTO.mjs +2 -2
  231. package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/add-survey-submissio.mjs +13 -13
  232. package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/add-survey.mjs +10 -10
  233. package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/model.mjs +2 -2
  234. package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-field-options.mjs +6 -6
  235. package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-filed-value.mjs +7 -7
  236. package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-form-options.mjs +7 -7
  237. package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-publish.mjs +4 -4
  238. package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-question-option.mjs +17 -17
  239. package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-question.mjs +10 -10
  240. package/esm2022/lib/Pages/shared/models/SurveyModels/survey-utils.mjs +8 -0
  241. package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/ActivationModel.mjs +2 -2
  242. package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/AddUserModel.mjs +36 -36
  243. package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/DropdownsResponseModel.mjs +11 -11
  244. package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/EditUserModel.mjs +8 -8
  245. package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/IdentityModel.mjs +2 -2
  246. package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/UserSearchParamDTO.mjs +2 -2
  247. package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/UsersIDRequestModel.mjs +5 -5
  248. package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/VariableLookupModel.mjs +2 -2
  249. package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFActivityModel.mjs +16 -16
  250. package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFActivityOutcomeModel.mjs +2 -2
  251. package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFActivityVariablesModel.mjs +7 -7
  252. package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFCreationModel.mjs +7 -7
  253. package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFVariableModel.mjs +8 -8
  254. package/{esm2020 → esm2022}/lib/Pages/shared/models/user.registration.mjs +7 -7
  255. package/esm2022/lib/Pages/shared/modules/public-survey.module.mjs +68 -0
  256. package/{esm2020 → esm2022}/lib/Pages/shared/modules/survey-routing.module.mjs +39 -39
  257. package/esm2022/lib/Pages/shared/modules/survey.module.mjs +129 -0
  258. package/esm2022/lib/Pages/shared/shared.module.mjs +31 -0
  259. package/{esm2020 → esm2022}/lib/Pages/shared/stylesbundle.service.mjs +44 -44
  260. package/{esm2020 → esm2022}/lib/Pages/start/index/index.component.mjs +25 -25
  261. package/{esm2020 → esm2022}/lib/Pages/start/start-routing.module.mjs +22 -22
  262. package/{esm2020 → esm2022}/lib/Pages/start/start.module.mjs +31 -31
  263. package/esm2022/lib/Pages/users/users.component.mjs +806 -0
  264. package/esm2022/lib/Pages/users/users.module.mjs +86 -0
  265. package/{esm2020 → esm2022}/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.mjs +535 -535
  266. package/{esm2020 → esm2022}/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.mjs +840 -840
  267. package/{esm2020 → esm2022}/lib/Pages/workflows/instance-info/instance-info.component.mjs +302 -302
  268. package/esm2022/lib/Pages/workflows/tabs/tabs.component.mjs +793 -0
  269. package/{esm2020 → esm2022}/lib/Pages/workflows/version-info/version-info.component.mjs +137 -137
  270. package/esm2022/lib/Pages/workflows/workflow/workflow.component.mjs +209 -0
  271. package/{esm2020 → esm2022}/lib/Pages/workflows/workflows-routing.module.mjs +35 -35
  272. package/{esm2020 → esm2022}/lib/Pages/workflows/workflows.component.mjs +15 -15
  273. package/esm2022/lib/Pages/workflows/workflows.module.mjs +103 -0
  274. package/{esm2020 → esm2022}/lib/_metronic/configs/default-layout.config.mjs +95 -95
  275. package/{esm2020 → esm2022}/lib/_metronic/core/_utils/DomHelpers.mjs +270 -270
  276. package/{esm2020 → esm2022}/lib/_metronic/core/_utils/ElementAnimateUtil.mjs +166 -166
  277. package/esm2022/lib/_metronic/core/_utils/EventHandlerUtil.mjs +90 -0
  278. package/esm2022/lib/_metronic/core/_utils/_DOMEventHandlerUtil.mjs +49 -0
  279. package/esm2022/lib/_metronic/core/_utils/_DataUtil.mjs +48 -0
  280. package/{esm2020 → esm2022}/lib/_metronic/core/_utils/_ElementStyleUtil.mjs +16 -16
  281. package/{esm2020 → esm2022}/lib/_metronic/core/_utils/_TypesHelpers.mjs +48 -48
  282. package/{esm2020 → esm2022}/lib/_metronic/core/_utils/models/OffsetModel.mjs +1 -1
  283. package/{esm2020 → esm2022}/lib/_metronic/core/_utils/models/ViewPortModel.mjs +1 -1
  284. package/{esm2020 → esm2022}/lib/_metronic/core/components/MenuComponent.mjs +827 -827
  285. package/{esm2020 → esm2022}/lib/_metronic/core/components/_CookieComponent.mjs +52 -52
  286. package/esm2022/lib/_metronic/core/components/_DrawerComponent.mjs +288 -0
  287. package/{esm2020 → esm2022}/lib/_metronic/core/components/_ScrollComponent.mjs +252 -252
  288. package/esm2022/lib/_metronic/core/components/_ScrollTopComponent.mjs +113 -0
  289. package/esm2022/lib/_metronic/core/components/_ToggleComponent.mjs +157 -0
  290. package/{esm2020 → esm2022}/lib/_metronic/core/services/layout-init.service.mjs +155 -155
  291. package/{esm2020 → esm2022}/lib/_metronic/core/services/layout.service.mjs +150 -150
  292. package/esm2022/lib/_metronic/core/services/page-info.service.mjs +119 -0
  293. package/esm2022/lib/masterlayout-routing.module.mjs +41 -0
  294. package/{esm2020 → esm2022}/lib/masterlayout.component.mjs +118 -118
  295. package/esm2022/lib/masterlayout.module.mjs +188 -0
  296. package/{esm2020 → esm2022}/public-api.mjs +48 -48
  297. package/{fesm2020 → fesm2022}/bnsights-bbsf-admin-portal.mjs +26884 -26881
  298. package/fesm2022/bnsights-bbsf-admin-portal.mjs.map +1 -0
  299. package/index.d.ts +5 -5
  300. package/lib/Pages/ActiveDirectories/active-directories.component.d.ts +8 -8
  301. package/lib/Pages/ActiveDirectories/active-directory/active-directory.component.d.ts +85 -87
  302. package/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.d.ts +97 -99
  303. package/lib/Pages/ActiveDirectories/active-directory-routing.module.d.ts +7 -7
  304. package/lib/Pages/ActiveDirectories/active-directory.module.d.ts +26 -26
  305. package/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.d.ts +13 -13
  306. package/lib/Pages/_layout/components/aside/aside.component.d.ts +24 -24
  307. package/lib/Pages/_layout/components/content/content.component.d.ts +13 -13
  308. package/lib/Pages/_layout/components/footer/footer.component.d.ts +14 -14
  309. package/lib/Pages/_layout/components/header/header.component.d.ts +24 -24
  310. package/lib/Pages/_layout/components/header/page-title/page-title.component.d.ts +22 -22
  311. package/lib/Pages/_layout/components/scripts-init/scripts-init.component.d.ts +18 -18
  312. package/lib/Pages/_layout/components/subheader/subheader.component.d.ts +17 -17
  313. package/lib/Pages/_layout/components/subheader/subheader.module.d.ts +9 -9
  314. package/lib/Pages/_layout/components/toolbar/toolbar.component.d.ts +18 -18
  315. package/lib/Pages/_layout/components/toolbar/toolbar.module.d.ts +10 -10
  316. package/lib/Pages/_layout/components/topbar/topbar.component.d.ts +44 -44
  317. package/lib/Pages/anonymouslayout/activation/activation.component.d.ts +32 -32
  318. package/lib/Pages/anonymouslayout/anonymouslayout-routing.module.d.ts +7 -7
  319. package/lib/Pages/anonymouslayout/anonymouslayout.component.d.ts +24 -24
  320. package/lib/Pages/anonymouslayout/anonymouslayout.module.d.ts +21 -21
  321. package/lib/Pages/anonymouslayout/error/error.component.d.ts +25 -25
  322. package/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.d.ts +24 -24
  323. package/lib/Pages/anonymouslayout/login/login.component.d.ts +36 -36
  324. package/lib/Pages/anonymouslayout/rest-password/rest-password.component.d.ts +32 -32
  325. package/lib/Pages/anonymouslayout/upload-license/upload-license.component.d.ts +25 -25
  326. package/lib/Pages/authentication/auth-callback/auth-callback.component.d.ts +21 -21
  327. package/lib/Pages/authentication/authentication.component.d.ts +8 -8
  328. package/lib/Pages/authentication/authentication.module.d.ts +12 -12
  329. package/lib/Pages/authentication/authentication.routing.d.ts +7 -7
  330. package/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.d.ts +75 -75
  331. package/lib/Pages/configurations/auth-configuration/auth-configuration.component.d.ts +57 -58
  332. package/lib/Pages/configurations/configuration/configuration.component.d.ts +127 -129
  333. package/lib/Pages/configurations/configurations.component.d.ts +8 -8
  334. package/lib/Pages/configurations/configurations.module.d.ts +24 -24
  335. package/lib/Pages/configurations/configurations.routing.d.ts +7 -7
  336. package/lib/Pages/configurations/index.d.ts +6 -6
  337. package/lib/Pages/core/auth.module.d.ts +8 -8
  338. package/lib/Pages/core/authentication/admin.guard.d.ts +9 -9
  339. package/lib/Pages/core/authentication/auth.guard.d.ts +14 -14
  340. package/lib/Pages/core/authentication/auth.service.d.ts +35 -35
  341. package/lib/Pages/departments/department/department.component.d.ts +66 -68
  342. package/lib/Pages/departments/department-info/department-info.component.d.ts +58 -60
  343. package/lib/Pages/departments/departments-routing.module.d.ts +7 -7
  344. package/lib/Pages/departments/departments.component.d.ts +8 -8
  345. package/lib/Pages/departments/departments.module.d.ts +21 -21
  346. package/lib/Pages/documents/{add/add.component.d.ts → add-document/add-document.component.d.ts} +40 -40
  347. package/lib/Pages/documents/document-master-layouts/document-master-layouts.component.d.ts +51 -53
  348. package/lib/Pages/documents/document-template-info/document-template-info.component.d.ts +67 -67
  349. package/lib/Pages/documents/document-templates/document-templates.component.d.ts +87 -89
  350. package/lib/Pages/documents/documents.component.d.ts +8 -8
  351. package/lib/Pages/documents/documents.module.d.ts +27 -27
  352. package/lib/Pages/documents/documents.routing.d.ts +7 -7
  353. package/lib/Pages/documents/{edit/edit.component.d.ts → edit-document/edit-document.component.d.ts} +42 -42
  354. package/lib/Pages/documents/edit-document-template/edit-document-template.component.d.ts +39 -39
  355. package/lib/Pages/empty-data/empty-data.component.d.ts +14 -14
  356. package/lib/Pages/empty-data/empty-data.module.d.ts +8 -8
  357. package/lib/Pages/helpCenter/help-center/help-center.component.d.ts +69 -71
  358. package/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.d.ts +23 -23
  359. package/lib/Pages/helpCenter/help-center-routing.module.d.ts +7 -7
  360. package/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.d.ts +65 -67
  361. package/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.d.ts +64 -66
  362. package/lib/Pages/helpCenter/help-center.module.d.ts +25 -25
  363. package/lib/Pages/helpCenter/help-centers.component.d.ts +8 -8
  364. package/lib/Pages/home/filter-pipe.d.ts +7 -7
  365. package/lib/Pages/home/home.component.d.ts +19 -19
  366. package/lib/Pages/home/home.module.d.ts +14 -14
  367. package/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.d.ts +86 -88
  368. package/lib/Pages/impersonation-rules/impersonation-rules.module.d.ts +19 -19
  369. package/lib/Pages/jobs/jobs/jobs.component.d.ts +76 -77
  370. package/lib/Pages/jobs/jobs.module.d.ts +17 -17
  371. package/lib/Pages/license/license/license.component.d.ts +59 -59
  372. package/lib/Pages/license/license.module.d.ts +15 -15
  373. package/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.d.ts +53 -53
  374. package/lib/Pages/localizations/localizations.component.d.ts +108 -110
  375. package/lib/Pages/localizations/localizations.module.d.ts +18 -18
  376. package/lib/Pages/logs/log/log.component.d.ts +34 -34
  377. package/lib/Pages/logs/logs-routing.module.d.ts +7 -7
  378. package/lib/Pages/logs/logs.component.d.ts +8 -8
  379. package/lib/Pages/logs/logs.module.d.ts +20 -20
  380. package/lib/Pages/lookups/lookup/lookup.component.d.ts +83 -85
  381. package/lib/Pages/lookups/lookup-group/lookup-group.component.d.ts +58 -60
  382. package/lib/Pages/lookups/lookup-item/lookup-item.component.d.ts +84 -86
  383. package/lib/Pages/lookups/lookups-routing.module.d.ts +7 -7
  384. package/lib/Pages/lookups/lookups.component.d.ts +8 -8
  385. package/lib/Pages/lookups/lookups.module.d.ts +24 -24
  386. package/lib/Pages/notifications/{add/add.component.d.ts → add-notification/add-notification.component.d.ts} +33 -33
  387. package/lib/Pages/notifications/edit-email/edit-email.component.d.ts +43 -43
  388. package/lib/Pages/notifications/{edit/edit.component.d.ts → edit-notification/edit-notification.component.d.ts} +35 -35
  389. package/lib/Pages/notifications/edit-sms/edit-sms.component.d.ts +37 -37
  390. package/lib/Pages/notifications/master-layouts/master-layouts.component.d.ts +51 -53
  391. package/lib/Pages/notifications/notifications-routing.module.d.ts +7 -7
  392. package/lib/Pages/notifications/notifications.component.d.ts +8 -8
  393. package/lib/Pages/notifications/notifications.module.d.ts +28 -28
  394. package/lib/Pages/notifications/template-info/template-info.component.d.ts +86 -86
  395. package/lib/Pages/notifications/templates/templates.component.d.ts +100 -102
  396. package/lib/Pages/providers/provider/provider.component.d.ts +118 -120
  397. package/lib/Pages/providers/providers-routing.module.d.ts +7 -7
  398. package/lib/Pages/providers/providers.component.d.ts +8 -8
  399. package/lib/Pages/providers/providers.module.d.ts +21 -21
  400. package/lib/Pages/publicHolidays/public-holiday/public-holiday.component.d.ts +73 -75
  401. package/lib/Pages/publicHolidays/public-holidays-routing.module.d.ts +7 -7
  402. package/lib/Pages/publicHolidays/public-holidays.component.d.ts +8 -8
  403. package/lib/Pages/publicHolidays/public-holidays.module.d.ts +21 -21
  404. package/lib/Pages/roles/permission-set-info/permission-set-info.component.d.ts +56 -58
  405. package/lib/Pages/roles/permissions/permissions.component.d.ts +63 -65
  406. package/lib/Pages/roles/permissionsets/permissionsets.component.d.ts +67 -69
  407. package/lib/Pages/roles/roles-routing.module.d.ts +7 -7
  408. package/lib/Pages/roles/roles.component.d.ts +8 -8
  409. package/lib/Pages/roles/roles.module.d.ts +24 -24
  410. package/lib/Pages/sectors/sector/sector.component.d.ts +62 -64
  411. package/lib/Pages/sectors/sector-info/sector-info.component.d.ts +60 -62
  412. package/lib/Pages/sectors/{department-info/department-info.component.d.ts → sectors-department-info/sectors-department-info.component.d.ts} +61 -63
  413. package/lib/Pages/sectors/sectors-routing.module.d.ts +7 -7
  414. package/lib/Pages/sectors/sectors.component.d.ts +8 -8
  415. package/lib/Pages/sectors/sectors.module.d.ts +23 -23
  416. package/lib/Pages/shared/Enums/ADType.d.ts +4 -4
  417. package/lib/Pages/shared/Enums/Enums.d.ts +47 -47
  418. package/lib/Pages/shared/Enums/ProviderType.d.ts +5 -5
  419. package/lib/Pages/shared/Enums/WFActivityType.d.ts +10 -10
  420. package/lib/Pages/shared/Enums/configuration/ConditionRHSType.d.ts +4 -4
  421. package/lib/Pages/shared/Enums/configuration/authentecation-configuration.d.ts +15 -15
  422. package/lib/Pages/shared/Pipes/survey-date.pipe.d.ts +12 -12
  423. package/lib/Pages/shared/Services/AccountService.service.d.ts +21 -21
  424. package/lib/Pages/shared/Services/ActiveDirectoryService.service.d.ts +18 -18
  425. package/lib/Pages/shared/Services/AnonymousLayoutService.service.d.ts +17 -17
  426. package/lib/Pages/shared/Services/ConfigurationsService.service.d.ts +20 -20
  427. package/lib/Pages/shared/Services/DepartmentService.service.d.ts +18 -18
  428. package/lib/Pages/shared/Services/DocumentHeaderAndFooterTemplate.service.d.ts +15 -15
  429. package/lib/Pages/shared/Services/DocumentTemplateService.service.d.ts +26 -26
  430. package/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.d.ts +15 -15
  431. package/lib/Pages/shared/Services/ErrorService.service.d.ts +8 -8
  432. package/lib/Pages/shared/Services/GlobalErrorHandler.service.d.ts +10 -10
  433. package/lib/Pages/shared/Services/HelpCenterService.service.d.ts +18 -18
  434. package/lib/Pages/shared/Services/HttpErrorInterceptor.service.d.ts +12 -12
  435. package/lib/Pages/shared/Services/ImpersonationRuleService.service.d.ts +15 -15
  436. package/lib/Pages/shared/Services/JobsService.service.d.ts +10 -10
  437. package/lib/Pages/shared/Services/LicenseService.service.d.ts +12 -12
  438. package/lib/Pages/shared/Services/LogsService.d.ts +10 -10
  439. package/lib/Pages/shared/Services/LookupGroupsService.service.d.ts +14 -14
  440. package/lib/Pages/shared/Services/LookupService.service.d.ts +25 -25
  441. package/lib/Pages/shared/Services/PermissionSetService.service.d.ts +19 -19
  442. package/lib/Pages/shared/Services/PermissionsService.service.d.ts +15 -15
  443. package/lib/Pages/shared/Services/PublicHolidayService.service.d.ts +16 -16
  444. package/lib/Pages/shared/Services/SectorService.service.d.ts +18 -18
  445. package/lib/Pages/shared/Services/TemplateService.service.d.ts +34 -34
  446. package/lib/Pages/shared/Services/WorkFlowVersionService.service.d.ts +10 -10
  447. package/lib/Pages/shared/Services/WorkflowActivityService.service.d.ts +19 -19
  448. package/lib/Pages/shared/Services/WorkflowInstanceService.service.d.ts +10 -10
  449. package/lib/Pages/shared/Services/WorkflowLogVariablesService.service.d.ts +10 -10
  450. package/lib/Pages/shared/Services/WorkflowService.service.d.ts +15 -15
  451. package/lib/Pages/shared/Services/WorkflowVariablesService.service.d.ts +15 -15
  452. package/lib/Pages/shared/Services/data.service.d.ts +9 -9
  453. package/lib/Pages/shared/Services/injectionModuleService.service.d.ts +50 -50
  454. package/lib/Pages/shared/Services/localizationsService.service .d.ts +28 -28
  455. package/lib/Pages/shared/Services/provider.service.d.ts +25 -25
  456. package/lib/Pages/shared/Services/survey-question.service.d.ts +19 -19
  457. package/lib/Pages/shared/Services/survey.service.d.ts +38 -38
  458. package/lib/Pages/shared/Services/userService.service.d.ts +29 -29
  459. package/lib/Pages/shared/base.service.d.ts +4 -4
  460. package/lib/Pages/shared/components/AdDirective.d.ts +8 -8
  461. package/lib/Pages/shared/components/external-url/external-url.component.d.ts +61 -61
  462. package/lib/Pages/shared/components/no-results/no-results.component.d.ts +10 -10
  463. package/lib/Pages/shared/components/survey/add-survey/add-survey.component.d.ts +40 -40
  464. package/lib/Pages/shared/components/survey/delete-survey/delete-survey.component.d.ts +19 -19
  465. package/lib/Pages/shared/components/survey/duplicate-survey/duplicate-survey.component.d.ts +19 -19
  466. package/lib/Pages/shared/components/survey/edit-survey/edit-survey.component.d.ts +43 -43
  467. package/lib/Pages/shared/components/survey/submissions/delete-submission/delete-submission.component.d.ts +19 -19
  468. package/lib/Pages/shared/components/survey/submissions/eliminate-submission/eliminate-submission.component.d.ts +19 -19
  469. package/lib/Pages/shared/components/survey/submissions/uneliminate-submission/uneliminate-submission.component.d.ts +19 -19
  470. package/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.d.ts +83 -83
  471. package/lib/Pages/shared/components/survey/survey-info/delete-question/delete-question.component.d.ts +19 -19
  472. package/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.d.ts +84 -84
  473. package/lib/Pages/shared/components/survey/survey-info/preview/preview.component.d.ts +40 -40
  474. package/lib/Pages/shared/components/survey/survey-info/publish-survey/publish-survey.component.d.ts +31 -31
  475. package/lib/Pages/shared/components/survey/survey-info/result-question/result.component.d.ts +27 -27
  476. package/lib/Pages/shared/components/survey/survey-info/survey-info.component.d.ts +119 -119
  477. package/lib/Pages/shared/components/survey/survey-info/take-survey/take-survey.component.d.ts +39 -39
  478. package/lib/Pages/shared/components/survey/survey-info/unpublish-survey/unpublish-survey.component.d.ts +32 -32
  479. package/lib/Pages/shared/components/survey/survey.component.d.ts +65 -65
  480. package/lib/Pages/shared/components/survey-form/survey-form.component.d.ts +41 -41
  481. package/lib/Pages/shared/components/survey-form-item/survey-form-item.component.d.ts +23 -23
  482. package/lib/Pages/shared/components/survey-layout/survey-layout.component.d.ts +8 -8
  483. package/lib/Pages/shared/config/environment.d.ts +1 -1
  484. package/lib/Pages/shared/constants.d.ts +129 -129
  485. package/lib/Pages/shared/filter/filter.component.d.ts +8 -8
  486. package/lib/Pages/shared/models/ADModels/ADMappingModel.d.ts +6 -6
  487. package/lib/Pages/shared/models/ADModels/ActiveDirectoryAddEditModel.d.ts +28 -28
  488. package/lib/Pages/shared/models/AccountModels/forgotPasswordModel.d.ts +3 -3
  489. package/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.d.ts +64 -64
  490. package/lib/Pages/shared/models/DepartmentModels/DepartmentModel.d.ts +9 -9
  491. package/lib/Pages/shared/models/DepartmentModels/DepartmentUsersIDRequestModel.d.ts +4 -4
  492. package/lib/Pages/shared/models/DocumentsModels/DocumentExportDTO.d.ts +8 -8
  493. package/lib/Pages/shared/models/DocumentsModels/DocumentHeaderAndFooterTemplate.d.ts +16 -16
  494. package/lib/Pages/shared/models/DocumentsModels/DocumentTemplateDTO.d.ts +13 -13
  495. package/lib/Pages/shared/models/DocumentsModels/DocumentTemplateInfoDTO.d.ts +7 -7
  496. package/lib/Pages/shared/models/HelpCenterModels/HelpCenterItemModel.d.ts +17 -17
  497. package/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.d.ts +9 -9
  498. package/lib/Pages/shared/models/ImpersonationRuleModels/ParticipantModel.d.ts +15 -15
  499. package/lib/Pages/shared/models/InjectedModuleModel/InjectedModule.d.ts +5 -5
  500. package/lib/Pages/shared/models/JobModels/JobCountsModel.d.ts +8 -8
  501. package/lib/Pages/shared/models/LicenseModel/LicenseModel.d.ts +5 -5
  502. package/lib/Pages/shared/models/LocalizationModels/EditResourceModel.d.ts +7 -7
  503. package/lib/Pages/shared/models/LocalizationModels/LocalizationReplaceTextModel.d.ts +9 -9
  504. package/lib/Pages/shared/models/LocalizationModels/UploadJsonVM.d.ts +5 -5
  505. package/lib/Pages/shared/models/Lookups/LookupGroupModel.d.ts +5 -5
  506. package/lib/Pages/shared/models/Lookups/LookupItem.d.ts +13 -13
  507. package/lib/Pages/shared/models/Lookups/LookupModel.d.ts +13 -13
  508. package/lib/Pages/shared/models/NotificationsModels/EmailHeaderAndFooterTemplate.d.ts +9 -9
  509. package/lib/Pages/shared/models/NotificationsModels/EmailTemplateInfoDTO.d.ts +15 -15
  510. package/lib/Pages/shared/models/NotificationsModels/EmailTemplateTesterModel.d.ts +9 -9
  511. package/lib/Pages/shared/models/NotificationsModels/SMSTemplateInfoDTO.d.ts +9 -9
  512. package/lib/Pages/shared/models/NotificationsModels/SMSTemplateTesterModel.d.ts +9 -9
  513. package/lib/Pages/shared/models/NotificationsModels/SendEmailTemplateModel.d.ts +8 -8
  514. package/lib/Pages/shared/models/NotificationsModels/TemplateDTO.d.ts +22 -22
  515. package/lib/Pages/shared/models/NotificationsModels/TemplateEditViewModel.d.ts +11 -11
  516. package/lib/Pages/shared/models/PermissionsModels/PermissionModel.d.ts +8 -8
  517. package/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.d.ts +10 -10
  518. package/lib/Pages/shared/models/PermissionsModels/PermissionSetUsersIDRequestModel.d.ts +4 -4
  519. package/lib/Pages/shared/models/ProviderModels/DefaultProviderModel.d.ts +6 -6
  520. package/lib/Pages/shared/models/ProviderModels/EmailProviderTesterModel.d.ts +7 -7
  521. package/lib/Pages/shared/models/ProviderModels/ProviderAttributeModel.d.ts +7 -7
  522. package/lib/Pages/shared/models/ProviderModels/ProviderModel.d.ts +13 -13
  523. package/lib/Pages/shared/models/ProviderModels/SMSProviderTesterModel.d.ts +6 -6
  524. package/lib/Pages/shared/models/PublicHolidayModels/PublicHolidayModel.d.ts +15 -15
  525. package/lib/Pages/shared/models/SectorModels/SectorDepartmentModel.d.ts +4 -4
  526. package/lib/Pages/shared/models/SectorModels/SectorModel.d.ts +6 -6
  527. package/lib/Pages/shared/models/SurveyModels/DeleteSurveyDTO.d.ts +3 -3
  528. package/lib/Pages/shared/models/SurveyModels/add-survey-submissio.d.ts +21 -21
  529. package/lib/Pages/shared/models/SurveyModels/add-survey.d.ts +18 -18
  530. package/lib/Pages/shared/models/SurveyModels/model.d.ts +3 -3
  531. package/lib/Pages/shared/models/SurveyModels/survey-field-options.d.ts +24 -24
  532. package/lib/Pages/shared/models/SurveyModels/survey-filed-value.d.ts +22 -22
  533. package/lib/Pages/shared/models/SurveyModels/survey-form-options.d.ts +8 -8
  534. package/lib/Pages/shared/models/SurveyModels/survey-publish.d.ts +15 -15
  535. package/lib/Pages/shared/models/SurveyModels/survey-question-option.d.ts +9 -9
  536. package/lib/Pages/shared/models/SurveyModels/survey-question.d.ts +21 -21
  537. package/lib/Pages/shared/models/SurveyModels/survey-utils.d.ts +5 -5
  538. package/lib/Pages/shared/models/UserModels/ActivationModel.d.ts +10 -10
  539. package/lib/Pages/shared/models/UserModels/AddUserModel.d.ts +33 -33
  540. package/lib/Pages/shared/models/UserModels/DropdownsResponseModel.d.ts +9 -9
  541. package/lib/Pages/shared/models/UserModels/EditUserModel.d.ts +25 -25
  542. package/lib/Pages/shared/models/UserModels/IdentityModel.d.ts +9 -9
  543. package/lib/Pages/shared/models/UserModels/UserSearchParamDTO.d.ts +8 -8
  544. package/lib/Pages/shared/models/UserModels/UsersIDRequestModel.d.ts +3 -3
  545. package/lib/Pages/shared/models/WorkflowModels/VariableLookupModel.d.ts +9 -9
  546. package/lib/Pages/shared/models/WorkflowModels/WFActivityModel.d.ts +40 -40
  547. package/lib/Pages/shared/models/WorkflowModels/WFActivityOutcomeModel.d.ts +13 -13
  548. package/lib/Pages/shared/models/WorkflowModels/WFActivityVariablesModel.d.ts +13 -13
  549. package/lib/Pages/shared/models/WorkflowModels/WFCreationModel.d.ts +10 -10
  550. package/lib/Pages/shared/models/WorkflowModels/WFVariableModel.d.ts +23 -23
  551. package/lib/Pages/shared/models/user.registration.d.ts +6 -6
  552. package/lib/Pages/shared/modules/public-survey.module.d.ts +15 -15
  553. package/lib/Pages/shared/modules/survey-routing.module.d.ts +7 -7
  554. package/lib/Pages/shared/modules/survey.module.d.ts +35 -35
  555. package/lib/Pages/shared/shared.module.d.ts +8 -8
  556. package/lib/Pages/shared/stylesbundle.service.d.ts +9 -9
  557. package/lib/Pages/start/index/index.component.d.ts +15 -15
  558. package/lib/Pages/start/start-routing.module.d.ts +7 -7
  559. package/lib/Pages/start/start.module.d.ts +11 -11
  560. package/lib/Pages/users/users.component.d.ts +138 -139
  561. package/lib/Pages/users/users.module.d.ts +18 -18
  562. package/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.d.ts +77 -77
  563. package/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.d.ts +82 -82
  564. package/lib/Pages/workflows/instance-info/instance-info.component.d.ts +81 -81
  565. package/lib/Pages/workflows/tabs/tabs.component.d.ts +126 -128
  566. package/lib/Pages/workflows/version-info/version-info.component.d.ts +41 -41
  567. package/lib/Pages/workflows/workflow/workflow.component.d.ts +54 -55
  568. package/lib/Pages/workflows/workflows-routing.module.d.ts +7 -7
  569. package/lib/Pages/workflows/workflows.component.d.ts +8 -8
  570. package/lib/Pages/workflows/workflows.module.d.ts +27 -27
  571. package/lib/_metronic/configs/default-layout.config.d.ts +139 -139
  572. package/lib/_metronic/core/_utils/DomHelpers.d.ts +26 -26
  573. package/lib/_metronic/core/_utils/ElementAnimateUtil.d.ts +13 -13
  574. package/lib/_metronic/core/_utils/EventHandlerUtil.d.ts +20 -20
  575. package/lib/_metronic/core/_utils/_DOMEventHandlerUtil.d.ts +6 -6
  576. package/lib/_metronic/core/_utils/_DataUtil.d.ts +8 -8
  577. package/lib/_metronic/core/_utils/_ElementStyleUtil.d.ts +5 -5
  578. package/lib/_metronic/core/_utils/_TypesHelpers.d.ts +10 -10
  579. package/lib/_metronic/core/_utils/models/OffsetModel.d.ts +4 -4
  580. package/lib/_metronic/core/_utils/models/ViewPortModel.d.ts +4 -4
  581. package/lib/_metronic/core/components/MenuComponent.d.ts +88 -88
  582. package/lib/_metronic/core/components/_CookieComponent.d.ts +25 -25
  583. package/lib/_metronic/core/components/_DrawerComponent.d.ts +49 -49
  584. package/lib/_metronic/core/components/_ScrollComponent.d.ts +31 -31
  585. package/lib/_metronic/core/components/_ScrollTopComponent.d.ts +24 -24
  586. package/lib/_metronic/core/components/_ToggleComponent.d.ts +36 -36
  587. package/lib/_metronic/core/services/layout-init.service.d.ts +18 -18
  588. package/lib/_metronic/core/services/layout.service.d.ts +38 -38
  589. package/lib/_metronic/core/services/page-info.service.d.ts +32 -32
  590. package/lib/masterlayout-routing.module.d.ts +11 -13
  591. package/lib/masterlayout.component.d.ts +63 -63
  592. package/lib/masterlayout.module.d.ts +34 -34
  593. package/package.json +25 -30
  594. package/public-api.d.ts +41 -41
  595. package/src/lib/assets/images/menu/Tools.svg +10 -4
  596. package/src/lib/assets/images/menu/authentication.svg +9 -0
  597. package/src/lib/assets/sass/style-rtl.scss +3 -3
  598. package/src/lib/assets/sass/style.scss +3 -3
  599. package/bnsights-bbsf-admin-portal-1.1.2.tgz +0 -0
  600. package/esm2020/lib/Pages/ActiveDirectories/active-directory/active-directory.component.mjs +0 -421
  601. package/esm2020/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.mjs +0 -528
  602. package/esm2020/lib/Pages/ActiveDirectories/active-directory.module.mjs +0 -108
  603. package/esm2020/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.mjs +0 -23
  604. package/esm2020/lib/Pages/anonymouslayout/anonymouslayout.module.mjs +0 -100
  605. package/esm2020/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.mjs +0 -330
  606. package/esm2020/lib/Pages/configurations/auth-configuration/auth-configuration.component.mjs +0 -157
  607. package/esm2020/lib/Pages/configurations/configuration/configuration.component.mjs +0 -801
  608. package/esm2020/lib/Pages/configurations/configurations.module.mjs +0 -104
  609. package/esm2020/lib/Pages/core/authentication/admin.guard.mjs +0 -17
  610. package/esm2020/lib/Pages/core/authentication/auth.service.mjs +0 -147
  611. package/esm2020/lib/Pages/departments/department/department.component.mjs +0 -220
  612. package/esm2020/lib/Pages/departments/department-info/department-info.component.mjs +0 -185
  613. package/esm2020/lib/Pages/departments/departments.module.mjs +0 -94
  614. package/esm2020/lib/Pages/documents/add/add.component.mjs +0 -136
  615. package/esm2020/lib/Pages/documents/document-master-layouts/document-master-layouts.component.mjs +0 -148
  616. package/esm2020/lib/Pages/documents/document-templates/document-templates.component.mjs +0 -437
  617. package/esm2020/lib/Pages/documents/documents.module.mjs +0 -114
  618. package/esm2020/lib/Pages/documents/documents.routing.mjs +0 -37
  619. package/esm2020/lib/Pages/documents/edit/edit.component.mjs +0 -169
  620. package/esm2020/lib/Pages/helpCenter/help-center/help-center.component.mjs +0 -294
  621. package/esm2020/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.mjs +0 -43
  622. package/esm2020/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.mjs +0 -242
  623. package/esm2020/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.mjs +0 -243
  624. package/esm2020/lib/Pages/helpCenter/help-center.module.mjs +0 -98
  625. package/esm2020/lib/Pages/home/home.component.mjs +0 -153
  626. package/esm2020/lib/Pages/home/home.module.mjs +0 -48
  627. package/esm2020/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.mjs +0 -443
  628. package/esm2020/lib/Pages/impersonation-rules/impersonation-rules.module.mjs +0 -95
  629. package/esm2020/lib/Pages/jobs/jobs/jobs.component.mjs +0 -223
  630. package/esm2020/lib/Pages/jobs/jobs.module.mjs +0 -87
  631. package/esm2020/lib/Pages/license/license.module.mjs +0 -71
  632. package/esm2020/lib/Pages/localizations/localizations.component.mjs +0 -516
  633. package/esm2020/lib/Pages/localizations/localizations.module.mjs +0 -79
  634. package/esm2020/lib/Pages/logs/logs.module.mjs +0 -87
  635. package/esm2020/lib/Pages/lookups/lookup/lookup.component.mjs +0 -367
  636. package/esm2020/lib/Pages/lookups/lookup-group/lookup-group.component.mjs +0 -187
  637. package/esm2020/lib/Pages/lookups/lookup-item/lookup-item.component.mjs +0 -297
  638. package/esm2020/lib/Pages/lookups/lookups.module.mjs +0 -100
  639. package/esm2020/lib/Pages/notifications/add/add.component.mjs +0 -104
  640. package/esm2020/lib/Pages/notifications/edit/edit.component.mjs +0 -133
  641. package/esm2020/lib/Pages/notifications/master-layouts/master-layouts.component.mjs +0 -148
  642. package/esm2020/lib/Pages/notifications/notifications-routing.module.mjs +0 -39
  643. package/esm2020/lib/Pages/notifications/notifications.module.mjs +0 -101
  644. package/esm2020/lib/Pages/notifications/templates/templates.component.mjs +0 -495
  645. package/esm2020/lib/Pages/providers/provider/provider.component.mjs +0 -615
  646. package/esm2020/lib/Pages/providers/providers.module.mjs +0 -91
  647. package/esm2020/lib/Pages/publicHolidays/public-holiday/public-holiday.component.mjs +0 -334
  648. package/esm2020/lib/Pages/publicHolidays/public-holidays.module.mjs +0 -94
  649. package/esm2020/lib/Pages/roles/permission-set-info/permission-set-info.component.mjs +0 -187
  650. package/esm2020/lib/Pages/roles/permissions/permissions.component.mjs +0 -226
  651. package/esm2020/lib/Pages/roles/permissionsets/permissionsets.component.mjs +0 -277
  652. package/esm2020/lib/Pages/roles/roles.module.mjs +0 -105
  653. package/esm2020/lib/Pages/sectors/department-info/department-info.component.mjs +0 -187
  654. package/esm2020/lib/Pages/sectors/sector/sector.component.mjs +0 -193
  655. package/esm2020/lib/Pages/sectors/sector-info/sector-info.component.mjs +0 -180
  656. package/esm2020/lib/Pages/sectors/sectors.module.mjs +0 -96
  657. package/esm2020/lib/Pages/shared/Enums/WFVariableDataType.mjs +0 -14
  658. package/esm2020/lib/Pages/shared/Services/injectionModuleService.service.mjs +0 -163
  659. package/esm2020/lib/Pages/shared/components/survey/add-survey/add-survey.component.mjs +0 -192
  660. package/esm2020/lib/Pages/shared/components/survey-form/survey-form.component.mjs +0 -696
  661. package/esm2020/lib/Pages/shared/components/survey-form-item/survey-form-item.component.mjs +0 -84
  662. package/esm2020/lib/Pages/shared/constants.mjs +0 -130
  663. package/esm2020/lib/Pages/shared/models/SurveyModels/survey-utils.mjs +0 -8
  664. package/esm2020/lib/Pages/shared/modules/public-survey.module.mjs +0 -68
  665. package/esm2020/lib/Pages/shared/modules/survey.module.mjs +0 -126
  666. package/esm2020/lib/Pages/shared/shared.module.mjs +0 -31
  667. package/esm2020/lib/Pages/users/users.component.mjs +0 -806
  668. package/esm2020/lib/Pages/users/users.module.mjs +0 -86
  669. package/esm2020/lib/Pages/workflows/tabs/tabs.component.mjs +0 -793
  670. package/esm2020/lib/Pages/workflows/workflow/workflow.component.mjs +0 -209
  671. package/esm2020/lib/Pages/workflows/workflows.module.mjs +0 -103
  672. package/esm2020/lib/_metronic/core/_utils/EventHandlerUtil.mjs +0 -90
  673. package/esm2020/lib/_metronic/core/_utils/_DOMEventHandlerUtil.mjs +0 -49
  674. package/esm2020/lib/_metronic/core/_utils/_DataUtil.mjs +0 -48
  675. package/esm2020/lib/_metronic/core/components/_DrawerComponent.mjs +0 -290
  676. package/esm2020/lib/_metronic/core/components/_ScrollTopComponent.mjs +0 -113
  677. package/esm2020/lib/_metronic/core/components/_ToggleComponent.mjs +0 -157
  678. package/esm2020/lib/_metronic/core/services/page-info.service.mjs +0 -119
  679. package/esm2020/lib/masterlayout-routing.module.mjs +0 -45
  680. package/esm2020/lib/masterlayout.module.mjs +0 -188
  681. package/fesm2015/bnsights-bbsf-admin-portal.mjs +0 -27293
  682. package/fesm2015/bnsights-bbsf-admin-portal.mjs.map +0 -1
  683. package/fesm2020/bnsights-bbsf-admin-portal.mjs.map +0 -1
  684. package/lib/Pages/shared/Enums/WFVariableDataType.d.ts +0 -12
@@ -1,624 +1,624 @@
1
- import { moveItemInArray } from '@angular/cdk/drag-drop';
2
- import { Component, Input, ViewChild, } from '@angular/core';
3
- import { FormGroup, Validators } from '@angular/forms';
4
- import { AppBaseComponent, ControlLayout, CustomValidation, DropdownOptions, EnglishArabicDTO, FormOptions, InputType, MultiLingualTextAreaOptions, MultiLingualTextBoxOptions, RangeNumber, TextBoxOptions, ToggleSlideOptions, } from '@bnsights/bbsf-controls';
5
- import { of } from 'rxjs';
6
- import { AudienceType, SurveyOptionType } from '../../../../Enums/Enums';
7
- import { SurveyQuestionDTO } from '../../../../models/SurveyModels/survey-question';
8
- import { SurveyQuestionOptionDTO } from '../../../../models/SurveyModels/survey-question-option';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "../../../../Services/survey-question.service";
11
- import * as i2 from "ng-wizard";
12
- import * as i3 from "@angular/common";
13
- import * as i4 from "@bnsights/bbsf-controls";
14
- import * as i5 from "@ng-bootstrap/ng-bootstrap";
15
- import * as i6 from "@angular/cdk/drag-drop";
16
- import * as i7 from "ng-inline-svg";
17
- export class AddQuestionComponent extends AppBaseComponent {
18
- constructor(injector, surveyQuestionService, ngWizardService) {
19
- super(injector);
20
- this.injector = injector;
21
- this.surveyQuestionService = surveyQuestionService;
22
- this.ngWizardService = ngWizardService;
23
- this.audienceType = AudienceType;
24
- this.isNumber = false;
25
- this.isText = false;
26
- this.isFile = false;
27
- this.isMultiFile = false;
28
- this.isImage = false;
29
- this.isSelect = false;
30
- this.SizeList = [];
31
- this.addModelForm = new FormGroup({});
32
- this.addSurveyQuestionFormOptions = new FormOptions();
33
- this.numberValidation = new CustomValidation();
34
- this.addOptionForm = new FormGroup({});
35
- this.optionList = [];
36
- this.showScoreOption = false;
37
- this.showOptions = false;
38
- this.errorMessage = null;
39
- this.totalScore = 0;
40
- this.showOptionList = true;
41
- this.addModal = (surveyId, audienceType) => {
42
- this.surveyID = surveyId;
43
- this.audienceTypeID = audienceType;
44
- this.isNumber = false;
45
- this.isText = false;
46
- this.isFile = false;
47
- this.isMultiFile = false;
48
- this.isSelect = false;
49
- this.isImage = false;
50
- this.optionList = [];
51
- this.errorMessage = null;
52
- this.surveyQuestionService
53
- .loadAddDropdown(this.surveyID)
54
- .subscribe((res) => {
55
- let result = res;
56
- this.Questions = result.questions;
57
- this.addModelForm = new FormGroup({});
58
- this.addOptionForm = new FormGroup({});
59
- this.addSurveyQuestionFormOptions = new FormOptions();
60
- this.addSurveyQuestionFormOptions.FormGroup = this.addModelForm;
61
- this.addSurveyQuestionFormOptions.GetModelFunction = this.getAddModel;
62
- this.addSurveyQuestionFormOptions.ServiceSubmitFunction =
63
- this.getAddFunction;
64
- this.addSurveyQuestionFormOptions.PagingReference = this.pagingElement;
65
- this.addSurveyQuestionFormOptions.OnSuccessHandler =
66
- this.onSuccessAddHandler;
67
- this.addSurveyQuestionFormOptions.DisableSuccessNotification = true;
68
- this.addQuestion = new MultiLingualTextBoxOptions();
69
- this.addQuestion.Name = 'Text';
70
- this.addQuestion.ArabicLabelKey = 'QuestionInArabic';
71
- this.addQuestion.EnglishLabelKey = 'QuestionInEnglish';
72
- this.addQuestion.IsRequired = true;
73
- this.addQuestion.MaxLength = 4000;
74
- this.addQuestion.LanguageMode = this.getLanguageModeValue();
75
- this.addDescription = new MultiLingualTextAreaOptions();
76
- this.addDescription.Name = 'Description';
77
- this.addDescription.ArabicLabelKey = 'DescriptionInArabic';
78
- this.addDescription.EnglishLabelKey = 'DescriptionInEnglish';
79
- this.addDescription.IsRequired = false;
80
- this.addDescription.MaxLength = 250;
81
- this.addDescription.Rows = 2;
82
- this.addDescription.LanguageMode = this.getLanguageModeValue();
83
- this.addDescription.ArabicLabelDescription = this.l('QuestionDescriptionHintArabic');
84
- this.addDescription.EnglishLabelDescription = this.l('QuestionDescriptionHintEnglish');
85
- this.addQuestionType = new DropdownOptions();
86
- this.addQuestionType.Name = 'QuestionTypeItemID';
87
- this.addQuestionType.LabelKey = 'Type';
88
- this.addQuestionType.IsRequired = true;
89
- this.addQuestionType.AllowSearchFilter = true;
90
- this.addQuestionType.DataSource = result.optionTypes;
91
- this.addQuestionType.SingleSelection = true;
92
- this.addQuestionType.NotFoundText = this.l('NoResultFound');
93
- this.audience = new DropdownOptions();
94
- this.audience.Name = 'AudienceItemID';
95
- this.audience.LabelKey = 'Audience';
96
- this.audience.IsRequired = true;
97
- this.audience.ViewType = ControlLayout.Vertical;
98
- this.audience.SingleSelection = true;
99
- this.audience.ShowCheckbox = false;
100
- this.audience.DataSource = result.audiences;
101
- this.audience.SelectedItems = audienceType;
102
- this.audience.LabelDescription = this.l('AudienceDescriptionHint');
103
- this.addSize = new DropdownOptions();
104
- this.addSize.Name = 'Size';
105
- this.addSize.LabelKey = 'Size';
106
- this.addSize.IsRequired = true;
107
- this.addSize.AllowSearchFilter = true;
108
- this.addSize.DataSource = this.SizeList;
109
- this.addSize.SingleSelection = true;
110
- this.addSize.SelectedItems = 12;
111
- this.addSize.NotFoundText = this.l('NoResultFound');
112
- this.addRequired = new ToggleSlideOptions();
113
- this.addRequired.Name = 'IsRequired';
114
- this.addRequired.LabelKey = 'IsRequired';
115
- this.addRequired.LabelDescription = this.l('RequiredDescriptionHint');
116
- this.addAllowScore = new ToggleSlideOptions();
117
- this.addAllowScore.Name = 'IsAllowScoring';
118
- this.addAllowScore.LabelKey = 'AllowScore';
119
- this.addAllowScore.LabelDescription = this.l('AllowScoreDescription');
120
- this.addHasSearch = new ToggleSlideOptions();
121
- this.addHasSearch.Name = 'HasSearch';
122
- this.addHasSearch.LabelKey = 'HasSearch';
123
- this.addIsActive = new ToggleSlideOptions();
124
- this.addIsActive.Name = 'IsVisible';
125
- this.addIsActive.LabelKey = 'Visible';
126
- this.addIsActive.Value = true;
127
- this.addIsActive.LabelDescription = this.l('GenericVisibleHint');
128
- this.addMaxLength = new TextBoxOptions();
129
- this.addMaxLength.Name = 'MaxLength';
130
- this.addMaxLength.LabelKey = 'MaxLength';
131
- this.addMaxLength.IsRequired = true;
132
- this.addMaxLength.NumberRange = new RangeNumber();
133
- this.addMaxLength.Type = InputType.Number;
134
- this.addMaxLength.LabelDescription = this.l('MaxHint');
135
- this.addMinLength = new TextBoxOptions();
136
- this.addMinLength.Name = 'MinLength';
137
- this.addMinLength.LabelKey = 'MinLength';
138
- this.addMinLength.IsRequired = true;
139
- this.addMinLength.NumberRange = new RangeNumber();
140
- this.addMinLength.Type = InputType.Number;
141
- this.addMinLength.LabelDescription = this.l('MinHint');
142
- this.addRowsNumber = new TextBoxOptions();
143
- this.addRowsNumber.Name = 'Rows';
144
- this.addRowsNumber.LabelKey = 'Rows';
145
- this.addRowsNumber.IsRequired = true;
146
- this.addRowsNumber.NumberRange = new RangeNumber();
147
- this.addRowsNumber.NumberRange.From = 1;
148
- this.addRowsNumber.NumberRange.To = 20;
149
- this.addRowsNumber.Type = InputType.Number;
150
- this.addMaxFileSize = new TextBoxOptions();
151
- this.addMaxFileSize.Name = 'MaxFileSizeInMB';
152
- this.addMaxFileSize.LabelKey = 'MaxFileSizeInMB';
153
- this.addMaxFileSize.IsRequired = true;
154
- this.addMaxFileSize.NumberRange = new RangeNumber();
155
- this.addMaxFileSize.NumberRange.From = 1;
156
- this.addMaxFileSize.NumberRange.To = 100;
157
- this.addMaxFileSize.Type = InputType.Number;
158
- this.addMaxFileCount = new TextBoxOptions();
159
- this.addMaxFileCount.Name = 'MaxFileCount';
160
- this.addMaxFileCount.LabelKey = 'MaxFilesCount';
161
- this.addMaxFileCount.IsRequired = true;
162
- this.addMaxFileCount.NumberRange = new RangeNumber();
163
- this.addMaxFileCount.NumberRange.From = 1;
164
- this.addMaxFileCount.NumberRange.To = 50;
165
- this.addMaxFileCount.Type = InputType.Number;
166
- this.addMaxFileCount.LabelDescription = this.l('MaxFileCountHint');
167
- this.addMaxFileCount.CustomValidation = [this.numberValidation];
168
- this.addFilesExtensions = new DropdownOptions();
169
- this.addFilesExtensions.Name = 'AllowedExtensions';
170
- this.addFilesExtensions.LabelKey = 'Extensions';
171
- this.addFilesExtensions.IsRequired = true;
172
- this.addFilesExtensions.AllowSearchFilter = true;
173
- this.addFilesExtensions.DataSource = result.extensions;
174
- this.addFilesExtensions.SingleSelection = false;
175
- this.addFilesExtensions.LabelDescription = this.l('ExtensionHint');
176
- this.addFilesExtensions.NotFoundText = this.l('NoResultFound');
177
- this.addModelForm.addValidators(this.fromTo('MinLength', 'MaxLength'));
178
- this.addNameOption = new MultiLingualTextBoxOptions();
179
- this.addNameOption.Name = 'NameOption';
180
- this.addNameOption.ArabicLabelKey = 'NameInArabic';
181
- this.addNameOption.EnglishLabelKey = 'NameInEnglish';
182
- this.addNameOption.IsRequired = true;
183
- this.addNameOption.MaxLength = 225;
184
- this.addNameOption.LanguageMode = this.getLanguageModeValue();
185
- this.displayOrderOption = new TextBoxOptions();
186
- this.displayOrderOption.Name = 'DisplayOrder';
187
- this.scoreNumber = new TextBoxOptions();
188
- this.scoreNumber.Name = 'Score';
189
- this.scoreNumber.LabelKey = 'Score';
190
- this.scoreNumber.IsRequired = true;
191
- this.scoreNumber.Type = InputType.Number;
192
- let rangeNumber = new RangeNumber();
193
- rangeNumber.To = 1000000;
194
- rangeNumber.From = 1;
195
- this.scoreNumber.NumberRange = rangeNumber;
196
- this.addOptionLinkedQuestions = new DropdownOptions();
197
- this.addOptionLinkedQuestions.Name = 'LinkedQuestions';
198
- this.addOptionLinkedQuestions.LabelKey = 'LinkedQuestions';
199
- this.addOptionLinkedQuestions.AllowSearchFilter = true;
200
- this.addOptionLinkedQuestions.DataSource = result.questions;
201
- this.addOptionLinkedQuestions.SingleSelection = false;
202
- this.addOptionLinkedQuestions.NotFoundText = this.l('NoResultFound');
203
- this.addOptionLinkedQuestions.LabelDescription = this.l('LinkedQuestionDescriptionHint');
204
- this.openModal(this.AddModal, 'xl');
205
- this.stopBlockUI();
206
- });
207
- };
208
- this.getAddModel = () => {
209
- let paramArray = [];
210
- let resultOptionModel = this.addOptionForm.value;
211
- let resultModel = this.addModelForm.value;
212
- if (this.isSelect) {
213
- if ((resultOptionModel.NameOption.Arabic != undefined &&
214
- resultOptionModel.NameOption.Arabic != '') ||
215
- (resultOptionModel.NameOption.English != undefined &&
216
- resultOptionModel.NameOption.English != '') ||
217
- (resultOptionModel.Score != undefined && resultOptionModel.Score > 0)) {
218
- this.errorMessage = this.l('OptionPendingDataErrorMessage');
219
- return;
220
- }
221
- if (this.optionList.length == 0 && this.isSelect) {
222
- this.errorMessage = this.l('OptionErrorMessage');
223
- return;
224
- }
225
- }
226
- this.errorMessage = null;
227
- let addModel = new SurveyQuestionDTO();
228
- addModel.SurveyID = this.surveyID;
229
- addModel.Text.Arabic = resultModel.Text.Arabic;
230
- addModel.Text.English = resultModel.Text.English;
231
- addModel.Description.Arabic = resultModel.Description.Arabic;
232
- addModel.Description.English = resultModel.Description.English;
233
- addModel.Options.Description.Arabic = resultModel.Description.Arabic;
234
- addModel.Options.Description.English = resultModel.Description.English;
235
- if (this.audienceTypeID == AudienceType.Both)
236
- addModel.AudienceItemID = resultModel.AudienceItemID;
237
- else
238
- addModel.AudienceItemID = this.audienceTypeID;
239
- addModel.QuestionTypeItemID = resultModel.QuestionTypeItemID;
240
- addModel.IsAllowScoring = resultModel.IsAllowScoring;
241
- addModel.Options.Size = resultModel.Size;
242
- addModel.Options.IsRequired = resultModel.IsRequired;
243
- addModel.IsRequired = resultModel.IsRequired;
244
- addModel.IsVisible = resultModel.IsVisible;
245
- addModel.Options.HasSearch = resultModel.HasSearch;
246
- if (this.isText || this.isNumber) {
247
- addModel.Options.MinLength = resultModel.MinLength;
248
- addModel.Options.MaxLength = resultModel.MaxLength;
249
- }
250
- if (this.isFile || this.isMultiFile || this.isImage)
251
- addModel.Options.MaxFileSizeInMB = resultModel.MaxFileSizeInMB;
252
- if (this.isMultiFile)
253
- addModel.Options.MaxFileCount = resultModel.MaxFileCount;
254
- if (this.isMultiFile || this.isFile)
255
- addModel.Options.AllowedExtensions = resultModel.AllowedExtensions;
256
- if (this.isSelect)
257
- if (this.optionList.length > 0) {
258
- for (let index = 0; index < this.optionList.length; index++) {
259
- this.optionList[index].DisplayOrder = index + 1;
260
- }
261
- addModel.QuestionOptions = this.optionList;
262
- }
263
- paramArray.push(addModel);
264
- return paramArray;
265
- };
266
- this.getAddFunction = (addModal) => {
267
- if (!this.errorMessage)
268
- return this.surveyQuestionService.add(addModal);
269
- };
270
- this.isValidTypeBoolean = true;
271
- }
272
- ngOnInit() {
273
- for (let index = 0; index < 12; index++) {
274
- var item = { key: index + 1, value: `${index + 1}` };
275
- this.SizeList.push(item);
276
- }
277
- this.numberValidation.functionBody = (control) => {
278
- if (!control.value) {
279
- return null;
280
- }
281
- if (!control.value.toString().match(/^[0-9]*$/)) {
282
- this.numberValidation.massage = this.l('IntegerNumberValidationKey');
283
- return { customerError: true };
284
- }
285
- if (!control.value.toString().match(/^[+]?([.]\d+|\d+[.]?\d*)$/)) {
286
- this.numberValidation.massage = this.l('PositiveNumberValidationKey');
287
- return { customerError: true };
288
- }
289
- return null;
290
- };
291
- }
292
- changeScoring(value) {
293
- this.showScoreOption = value;
294
- if (!value && this.addOptionForm.controls['Score']) {
295
- this.addOptionForm.controls['Score'].reset();
296
- this.addOptionForm.controls['Score'].clearValidators();
297
- this.addOptionForm.controls['Score'].updateValueAndValidity();
298
- }
299
- }
300
- updateLengthValidator(name, max, min) {
301
- let control = this.addOptionForm.controls[name];
302
- if (control) {
303
- control.setErrors(null);
304
- control.clearValidators();
305
- control.updateValueAndValidity();
306
- let validationRules = [];
307
- validationRules.push(Validators.min(min));
308
- validationRules.push(Validators.max(max));
309
- validationRules.push(Validators.required);
310
- control.addValidators(validationRules);
311
- control.updateValueAndValidity();
312
- }
313
- }
314
- changeDataType(key) {
315
- this.updateFormStatus(key);
316
- switch (key) {
317
- case SurveyOptionType.Text:
318
- this.updateLengthValidator(this.addMaxLength.Name, 255, 1);
319
- this.updateLengthValidator(this.addMinLength.Name, 255, 1);
320
- this.addMaxLength.NumberRange.From = 1;
321
- this.addMaxLength.NumberRange.To = 255;
322
- this.addMinLength.NumberRange.From = 1;
323
- this.addMinLength.NumberRange.To = 255;
324
- this.isText = true;
325
- this.isNumber = false;
326
- this.isFile = false;
327
- this.isMultiFile = false;
328
- this.isImage = false;
329
- this.isSelect = false;
330
- break;
331
- case SurveyOptionType.MultilineText:
332
- this.updateLengthValidator(this.addMaxLength.Name, 4000, 1);
333
- this.updateLengthValidator(this.addMinLength.Name, 4000, 1);
334
- this.addMaxLength.NumberRange.From = 1;
335
- this.addMaxLength.NumberRange.To = 4000;
336
- this.addMinLength.NumberRange.From = 1;
337
- this.addMinLength.NumberRange.To = 4000;
338
- this.isText = true;
339
- this.isNumber = false;
340
- this.isFile = false;
341
- this.isMultiFile = false;
342
- this.isImage = false;
343
- this.isSelect = false;
344
- break;
345
- case SurveyOptionType.Number:
346
- this.updateLengthValidator(this.addMaxLength.Name, 100, 1);
347
- this.updateLengthValidator(this.addMinLength.Name, 100, 1);
348
- this.addMaxLength.NumberRange.From = 1;
349
- this.addMaxLength.NumberRange.To = 100;
350
- this.addMinLength.NumberRange.From = 1;
351
- this.addMinLength.NumberRange.To = 100;
352
- this.isNumber = true;
353
- this.isText = false;
354
- this.isFile = false;
355
- this.isMultiFile = false;
356
- this.isImage = false;
357
- this.isSelect = false;
358
- break;
359
- case SurveyOptionType.File:
360
- this.isFile = true;
361
- this.isNumber = false;
362
- this.isText = false;
363
- this.isMultiFile = false;
364
- this.isImage = false;
365
- this.isSelect = false;
366
- break;
367
- case SurveyOptionType.MultiFile:
368
- this.isMultiFile = true;
369
- this.isNumber = false;
370
- this.isText = false;
371
- this.isFile = false;
372
- this.isImage = false;
373
- this.isSelect = false;
374
- break;
375
- case SurveyOptionType.Image:
376
- this.isImage = true;
377
- this.isMultiFile = false;
378
- this.isNumber = false;
379
- this.isText = false;
380
- this.isFile = false;
381
- this.isSelect = false;
382
- break;
383
- case SurveyOptionType.MultipleSelect:
384
- case SurveyOptionType.SingleSelect:
385
- case SurveyOptionType.RadioButton:
386
- this.isNumber = false;
387
- this.isText = false;
388
- this.isFile = false;
389
- this.isMultiFile = false;
390
- this.isSelect = true;
391
- this.isImage = false;
392
- break;
393
- default:
394
- this.isNumber = false;
395
- this.isText = false;
396
- this.isFile = false;
397
- this.isMultiFile = false;
398
- this.isSelect = false;
399
- this.isImage = false;
400
- break;
401
- }
402
- this.ngWizardService.reset();
403
- }
404
- getLinkedQuestions(option) {
405
- return this.Questions.filter((item) => option.LinkedQuestions.includes(item.key)).map((item) => item.value);
406
- }
407
- AddOption() {
408
- this.totalScore = 0;
409
- this.addOptionForm.markAllAsTouched();
410
- if (this.addOptionForm.invalid) {
411
- return;
412
- }
413
- let resultModel = this.addOptionForm.value;
414
- if (this.optionList.length >= 1 && this.showScoreOption) {
415
- for (let index = 0; index < this.optionList.length; index++) {
416
- let element = this.optionList[index].Score;
417
- if (element > 1000000) {
418
- this.errorMessage = this.l('MaxOptionScoreErrorMessage');
419
- return;
420
- }
421
- if (element < 1) {
422
- this.errorMessage = this.l('MinOptionScoreErrorMessage');
423
- return;
424
- }
425
- }
426
- }
427
- this.showOptionList = false;
428
- this.errorMessage = null;
429
- let option = new SurveyQuestionOptionDTO();
430
- option.Name.Arabic = resultModel.NameOption.Arabic;
431
- option.Name.English = resultModel.NameOption.English;
432
- debugger;
433
- if (resultModel.DisplayOrder)
434
- option.DisplayOrder = resultModel.DisplayOrder;
435
- else
436
- option.DisplayOrder = this.optionList.length + 1;
437
- option.LinkedQuestions = resultModel.LinkedQuestions;
438
- if (this.showScoreOption)
439
- option.Score = Number.parseFloat(resultModel.Score);
440
- this.addOptionForm.reset();
441
- this.addOptionForm.controls['NameOption'].reset();
442
- this.addOptionForm.controls['DisplayOrder'].reset();
443
- this.addOptionForm.controls['LinkedQuestions'].reset();
444
- if (this.showScoreOption)
445
- this.addOptionForm.controls['Score'].reset();
446
- this.optionList.splice(option.DisplayOrder - 1, 0, option);
447
- this.showOptionList = true;
448
- this.isOptionInEditMode = false;
449
- }
450
- getOptionByOrder(index, option) {
451
- return option.DisplayOrder;
452
- }
453
- deleteOption(option) {
454
- this.optionList = this.optionList.filter((item) => item != option);
455
- }
456
- editOption(option) {
457
- debugger;
458
- if ((this.addOptionForm.touched == true && this.addOptionForm.valid) ||
459
- this.addOptionForm.touched == false)
460
- this.AddOption();
461
- else {
462
- this.addOptionForm.markAllAsTouched();
463
- return;
464
- }
465
- let name = new EnglishArabicDTO();
466
- name.Arabic = option.Name.Arabic ?? null;
467
- name.English = option.Name.English ?? null;
468
- this.addOptionForm.controls['NameOption'].setValue(name);
469
- this.addOptionForm.controls['DisplayOrder'].setValue(option.DisplayOrder);
470
- this.addOptionForm.controls['LinkedQuestions'].setValue(option.LinkedQuestions);
471
- if (this.showScoreOption)
472
- this.addOptionForm.controls['Score'].setValue(option.Score);
473
- this.optionList = this.optionList.filter((item) => item != option);
474
- this.isOptionInEditMode = true;
475
- }
476
- fromTo(fromField, toField) {
477
- return (formGroup) => {
478
- const fromDate = formGroup.get(fromField);
479
- const toDate = formGroup.get(toField);
480
- if (fromDate !== null && toDate !== null) {
481
- if (fromDate.value !== null &&
482
- toDate.value !== null &&
483
- parseInt(fromDate.value) > parseInt(toDate.value)) {
484
- fromDate.markAsTouched();
485
- toDate.markAsTouched();
486
- toDate.setErrors({
487
- errorMassage: this.l('GreaterThanOrEqualTo'),
488
- });
489
- return null;
490
- }
491
- if (fromDate.value !== null &&
492
- toDate.value !== null &&
493
- parseInt(fromDate.value) < parseInt(toDate.value) &&
494
- parseInt(toDate.value) < 255 &&
495
- parseInt(fromDate.value) < 255)
496
- toDate.setErrors(null);
497
- }
498
- return null;
499
- };
500
- }
501
- updateFormStatus(key) {
502
- switch (key) {
503
- case SurveyOptionType.Text:
504
- case SurveyOptionType.MultilineText:
505
- if (this.addModelForm.get(this.addMaxLength.Name))
506
- this.addRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
507
- if (this.addModelForm.get(this.addMinLength.Name))
508
- this.addRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
509
- if (this.addModelForm.get(this.addMaxFileSize.Name))
510
- this.removeRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
511
- if (this.addModelForm.get(this.addMaxFileCount.Name))
512
- this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
513
- if (this.addModelForm.get(this.addFilesExtensions.Name))
514
- this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
515
- break;
516
- case SurveyOptionType.Number:
517
- if (this.addModelForm.get(this.addMaxLength.Name))
518
- this.addRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
519
- if (this.addModelForm.get(this.addMinLength.Name))
520
- this.addRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
521
- if (this.addModelForm.get(this.addMaxFileSize.Name))
522
- this.removeRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
523
- if (this.addModelForm.get(this.addMaxFileCount.Name))
524
- this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
525
- if (this.addModelForm.get(this.addFilesExtensions.Name))
526
- this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
527
- break;
528
- case SurveyOptionType.File:
529
- if (this.addModelForm.get(this.addMaxLength.Name))
530
- this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
531
- if (this.addModelForm.get(this.addMinLength.Name))
532
- this.removeRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
533
- if (this.addModelForm.get(this.addMaxFileSize.Name))
534
- this.addRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
535
- if (this.addModelForm.get(this.addMaxFileCount.Name))
536
- this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
537
- if (this.addModelForm.get(this.addFilesExtensions.Name))
538
- this.addRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
539
- break;
540
- case SurveyOptionType.MultiFile:
541
- if (this.addModelForm.get(this.addMaxLength.Name))
542
- this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
543
- if (this.addModelForm.get(this.addMinLength.Name))
544
- this.removeRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
545
- if (this.addModelForm.get(this.addMaxFileSize.Name))
546
- this.addRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
547
- if (this.addModelForm.get(this.addMaxFileCount.Name))
548
- this.addRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
549
- if (this.addModelForm.get(this.addFilesExtensions.Name))
550
- this.addRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
551
- break;
552
- case SurveyOptionType.Image:
553
- if (this.addModelForm.get(this.addMaxLength.Name))
554
- this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
555
- if (this.addModelForm.get(this.addMinLength.Name))
556
- this.removeRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
557
- if (this.addModelForm.get(this.addMaxFileSize.Name))
558
- this.addRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
559
- if (this.addModelForm.get(this.addMaxFileCount.Name))
560
- this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
561
- if (this.addModelForm.get(this.addFilesExtensions.Name))
562
- this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
563
- break;
564
- case SurveyOptionType.MultipleSelect:
565
- case SurveyOptionType.SingleSelect:
566
- if (this.addModelForm.get(this.addMaxLength.Name))
567
- this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
568
- if (this.addModelForm.get(this.addMinLength.Name))
569
- this.removeRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
570
- if (this.addModelForm.get(this.addMaxFileSize.Name))
571
- this.removeRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
572
- if (this.addModelForm.get(this.addMaxFileCount.Name))
573
- this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
574
- if (this.addModelForm.get(this.addFilesExtensions.Name))
575
- this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
576
- break;
577
- default:
578
- if (this.addModelForm.get(this.addMaxLength.Name))
579
- this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
580
- if (this.addModelForm.get(this.addMinLength.Name))
581
- this.removeRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
582
- if (this.addModelForm.get(this.addMaxFileSize.Name))
583
- this.removeRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
584
- if (this.addModelForm.get(this.addMaxFileCount.Name))
585
- this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
586
- if (this.addModelForm.get(this.addFilesExtensions.Name))
587
- this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
588
- break;
589
- }
590
- }
591
- isValidFunctionReturnsBoolean(args) {
592
- let returnValue = true;
593
- this.mainFormControls = [];
594
- this.mainFormControls.push(this.addModelForm.get(this.addQuestion.Name), this.addModelForm.get(this.addDescription.Name), this.addModelForm.get(this.addQuestionType.Name), this.addModelForm.get(this.audience.Name));
595
- if (args.fromStep.index == 0)
596
- for (var i = 0; i < this.mainFormControls.length; i++) {
597
- this.mainFormControls[i].markAllAsTouched();
598
- if (!this.mainFormControls[i].valid)
599
- returnValue = false;
600
- }
601
- return returnValue;
602
- }
603
- isValidFunctionReturnsObservable(args) {
604
- return of(true);
605
- }
606
- //drag and drop
607
- drop(event) {
608
- moveItemInArray(this.optionList, event.previousIndex, event.currentIndex);
609
- }
610
- }
611
- AddQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AddQuestionComponent, deps: [{ token: i0.Injector }, { token: i1.SurveyQuestionService }, { token: i2.NgWizardService }], target: i0.ɵɵFactoryTarget.Component });
612
- AddQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AddQuestionComponent, selector: "app-add-question", inputs: { pagingElement: "pagingElement", onSuccessAddHandler: "onSuccessAddHandler" }, viewQueries: [{ propertyName: "AddModal", first: true, predicate: ["AddModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #AddModal let-modal>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">\r\n {{l(\"Add_Question\")}}\r\n </h4>\r\n <button type=\"button\" data-dismiss=\"modal\" class=\"btn btn-icon btn-sm\" (click)=\"modal.dismiss()\">\r\n <div class=\"svg-icon svg-icon-1 svg-icon-hover-brand\" [inlineSVG]=\"'/assets/images/modalclose.svg'\">\r\n </div>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <BBSF-Form [options]=\"addSurveyQuestionFormOptions\">\r\n <BBSF-MultiLingualTextBox [options]=\"addQuestion\" [group]=\"addModelForm\"></BBSF-MultiLingualTextBox>\r\n <BBSF-MultiLingualTextArea [options]=\"addDescription\" [group]=\"addModelForm\"></BBSF-MultiLingualTextArea>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"audienceTypeID==audienceType.Both\">\r\n <BBSF-DropdownList [options]=\"audience\" [group]=\"addModelForm\"></BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addQuestionType\" [group]=\"addModelForm\" (OnChange)=\"changeDataType($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addSize\" [group]=\"addModelForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isSelect\" >\r\n <BBSF-Toggleslide [options]=\"addAllowScore\" [group]=\"addModelForm\" (OnChange)=\"changeScoring($event)\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"addIsActive\" [group]=\"addModelForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6 col-sm-6\">\r\n <BBSF-Toggleslide [options]=\"addRequired\" [group]=\"addModelForm\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"isText||isNumber\">\r\n <BBSF-TextBox [options]=\"addMinLength\" *ngIf=\"isText||isNumber\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isText||isNumber\">\r\n <BBSF-TextBox [options]=\"addMaxLength\" *ngIf=\"isText||isNumber\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"isFile||isMultiFile||isImage\">\r\n <BBSF-TextBox [options]=\"addMaxFileSize\" *ngIf=\"isFile||isMultiFile||isImage\" [group]=\"addModelForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isMultiFile\">\r\n <BBSF-TextBox [options]=\"addMaxFileCount\" *ngIf=\"isMultiFile\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isFile||isMultiFile\">\r\n <BBSF-DropdownList [options]=\"addFilesExtensions\" *ngIf=\"isFile||isMultiFile\" [group]=\"addModelForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isSelect\" class=\"question-type-option\">\r\n <h5 class=\"mb-4\">{{l('Options')}}</h5>\r\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\" *ngIf=\"showOptionList\">\r\n <div class=\"card card-listing\" *ngFor=\"let Option of optionList;\" cdkDrag>\r\n <div class=\"card-header mb-0\">\r\n <div class=\"title fs-6 fw-bolder\">\r\n {{getCurrentFailOver(Option.Name)}}\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <span class=\"badge badge-square badge-dark me-4\" *ngIf=\"showScoreOption\" ngbTooltip=\"{{l('Score')}}\">\r\n {{Option.Score}}\r\n </span>\r\n\r\n <div class=\"badge badge-square badge-brand cursor-pointer me-4\" *ngIf=\"Option.LinkedQuestions?.length>0\" ngbTooltip=\"{{getLinkedQuestions(Option)}}\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n </div>\r\n\r\n <div class=\"badge badge-square badge-brand cursor-pointer me-4\" (click)=\"editOption(Option)\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" ngbTooltip=\"{{l('Edit')}}\" [inlineSVG]=\"'/assets/images/Edit.svg'\">\r\n </span>\r\n </div>\r\n <div class=\"badge badge-square badge-danger cursor-pointer\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" ngbTooltip=\"{{l('Delete')}}\" [inlineSVG]=\"'/assets/images/Trash.svg'\"\r\n (click)=\"deleteOption(Option)\" apppreventdoubleclick>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"survey-alert-danger alert-danger\" *ngIf=\"errorMessage\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-danger me-4\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n <div class=\"fw-bold\"><div class=\"fs-7 text-danger\">{{errorMessage}}</div></div>\r\n </div>\r\n <div class=\"repeater-bg\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"addNameOption\" [group]=\"addOptionForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addOptionLinkedQuestions\" [group]=\"addOptionForm\">\r\n </BBSF-DropdownList>\r\n <BBSF-TextBox [options]=\"displayOrderOption\" [group]=\"addOptionForm\" hidden></BBSF-TextBox>\r\n\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"showScoreOption\">\r\n <BBSF-TextBox [options]=\"scoreNumber\" [group]=\"addOptionForm\"></BBSF-TextBox>\r\n </div>\r\n\r\n </div>\r\n <button type=\"button\" (click)=\"AddOption()\" *ngIf=\"!isOptionInEditMode\" class=\"btn btn-sm btn-brand w-100\">{{l(\"Add\")}}</button>\r\n <button type=\"button\" (click)=\"AddOption()\" *ngIf=\"isOptionInEditMode\" class=\"btn btn-sm btn-brand w-100\">{{l(\"Edit\")}}</button>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"modal-footer pb-0 m-0\" >\r\n <button type=\"button\" class=\"btn btn-sm btn-light\" (click)=\"modal.dismiss()\">\r\n {{l(\"Cancel\")}}\r\n </button>\r\n <button appPreventDoubleClick type=\"submit\" class=\"btn btn-sm btn-brand\">{{l(\"Save\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i4.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange", "OnBlur"] }, { kind: "component", type: i4.MultiLingualTextAreaComponent, selector: "BBSF-MultiLingualTextArea", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i4.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { kind: "component", type: i4.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i4.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["OnChange"] }, { kind: "directive", type: i5.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i6.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }] });
613
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AddQuestionComponent, decorators: [{
614
- type: Component,
615
- args: [{ selector: 'app-add-question', template: "<ng-template #AddModal let-modal>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">\r\n {{l(\"Add_Question\")}}\r\n </h4>\r\n <button type=\"button\" data-dismiss=\"modal\" class=\"btn btn-icon btn-sm\" (click)=\"modal.dismiss()\">\r\n <div class=\"svg-icon svg-icon-1 svg-icon-hover-brand\" [inlineSVG]=\"'/assets/images/modalclose.svg'\">\r\n </div>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <BBSF-Form [options]=\"addSurveyQuestionFormOptions\">\r\n <BBSF-MultiLingualTextBox [options]=\"addQuestion\" [group]=\"addModelForm\"></BBSF-MultiLingualTextBox>\r\n <BBSF-MultiLingualTextArea [options]=\"addDescription\" [group]=\"addModelForm\"></BBSF-MultiLingualTextArea>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"audienceTypeID==audienceType.Both\">\r\n <BBSF-DropdownList [options]=\"audience\" [group]=\"addModelForm\"></BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addQuestionType\" [group]=\"addModelForm\" (OnChange)=\"changeDataType($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addSize\" [group]=\"addModelForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isSelect\" >\r\n <BBSF-Toggleslide [options]=\"addAllowScore\" [group]=\"addModelForm\" (OnChange)=\"changeScoring($event)\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"addIsActive\" [group]=\"addModelForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6 col-sm-6\">\r\n <BBSF-Toggleslide [options]=\"addRequired\" [group]=\"addModelForm\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"isText||isNumber\">\r\n <BBSF-TextBox [options]=\"addMinLength\" *ngIf=\"isText||isNumber\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isText||isNumber\">\r\n <BBSF-TextBox [options]=\"addMaxLength\" *ngIf=\"isText||isNumber\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"isFile||isMultiFile||isImage\">\r\n <BBSF-TextBox [options]=\"addMaxFileSize\" *ngIf=\"isFile||isMultiFile||isImage\" [group]=\"addModelForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isMultiFile\">\r\n <BBSF-TextBox [options]=\"addMaxFileCount\" *ngIf=\"isMultiFile\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isFile||isMultiFile\">\r\n <BBSF-DropdownList [options]=\"addFilesExtensions\" *ngIf=\"isFile||isMultiFile\" [group]=\"addModelForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isSelect\" class=\"question-type-option\">\r\n <h5 class=\"mb-4\">{{l('Options')}}</h5>\r\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\" *ngIf=\"showOptionList\">\r\n <div class=\"card card-listing\" *ngFor=\"let Option of optionList;\" cdkDrag>\r\n <div class=\"card-header mb-0\">\r\n <div class=\"title fs-6 fw-bolder\">\r\n {{getCurrentFailOver(Option.Name)}}\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <span class=\"badge badge-square badge-dark me-4\" *ngIf=\"showScoreOption\" ngbTooltip=\"{{l('Score')}}\">\r\n {{Option.Score}}\r\n </span>\r\n\r\n <div class=\"badge badge-square badge-brand cursor-pointer me-4\" *ngIf=\"Option.LinkedQuestions?.length>0\" ngbTooltip=\"{{getLinkedQuestions(Option)}}\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n </div>\r\n\r\n <div class=\"badge badge-square badge-brand cursor-pointer me-4\" (click)=\"editOption(Option)\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" ngbTooltip=\"{{l('Edit')}}\" [inlineSVG]=\"'/assets/images/Edit.svg'\">\r\n </span>\r\n </div>\r\n <div class=\"badge badge-square badge-danger cursor-pointer\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" ngbTooltip=\"{{l('Delete')}}\" [inlineSVG]=\"'/assets/images/Trash.svg'\"\r\n (click)=\"deleteOption(Option)\" apppreventdoubleclick>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"survey-alert-danger alert-danger\" *ngIf=\"errorMessage\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-danger me-4\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n <div class=\"fw-bold\"><div class=\"fs-7 text-danger\">{{errorMessage}}</div></div>\r\n </div>\r\n <div class=\"repeater-bg\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"addNameOption\" [group]=\"addOptionForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addOptionLinkedQuestions\" [group]=\"addOptionForm\">\r\n </BBSF-DropdownList>\r\n <BBSF-TextBox [options]=\"displayOrderOption\" [group]=\"addOptionForm\" hidden></BBSF-TextBox>\r\n\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"showScoreOption\">\r\n <BBSF-TextBox [options]=\"scoreNumber\" [group]=\"addOptionForm\"></BBSF-TextBox>\r\n </div>\r\n\r\n </div>\r\n <button type=\"button\" (click)=\"AddOption()\" *ngIf=\"!isOptionInEditMode\" class=\"btn btn-sm btn-brand w-100\">{{l(\"Add\")}}</button>\r\n <button type=\"button\" (click)=\"AddOption()\" *ngIf=\"isOptionInEditMode\" class=\"btn btn-sm btn-brand w-100\">{{l(\"Edit\")}}</button>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"modal-footer pb-0 m-0\" >\r\n <button type=\"button\" class=\"btn btn-sm btn-light\" (click)=\"modal.dismiss()\">\r\n {{l(\"Cancel\")}}\r\n </button>\r\n <button appPreventDoubleClick type=\"submit\" class=\"btn btn-sm btn-brand\">{{l(\"Save\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n\r\n</ng-template>\r\n" }]
616
- }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.SurveyQuestionService }, { type: i2.NgWizardService }]; }, propDecorators: { AddModal: [{
617
- type: ViewChild,
618
- args: ['AddModal', { static: false }]
619
- }], pagingElement: [{
620
- type: Input
621
- }], onSuccessAddHandler: [{
622
- type: Input
623
- }] } });
624
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXF1ZXN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvc2hhcmVkL2NvbXBvbmVudHMvc3VydmV5L3N1cnZleS1pbmZvL2FkZC1xdWVzdGlvbi9hZGQtcXVlc3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9zaGFyZWQvY29tcG9uZW50cy9zdXJ2ZXkvc3VydmV5LWluZm8vYWRkLXF1ZXN0aW9uL2FkZC1xdWVzdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUNMLFNBQVMsRUFHVCxLQUFLLEVBRUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsU0FBUyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JGLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsZ0JBQWdCLEVBRWhCLFdBQVcsRUFDWCxTQUFTLEVBQ1QsMkJBQTJCLEVBQzNCLDBCQUEwQixFQUMxQixXQUFXLEVBQ1gsY0FBYyxFQUNkLGtCQUFrQixHQUNuQixNQUFNLHlCQUF5QixDQUFDO0FBU2pDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFN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QUMsRUFBRSxFQUFFO2dCQUNyRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO29CQUFFLFdBQVcsR0FBRyxLQUFLLENBQUM7YUFDMUQ7UUFDSCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsZ0NBQWdDLENBQUMsSUFBd0I7UUFDdkQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELGVBQWU7SUFDZixJQUFJLENBQUMsS0FBNEI7UUFDL0IsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDNUUsQ0FBQzs7a0hBcnlCVSxvQkFBb0I7c0dBQXBCLG9CQUFvQiw2UUMzQ2pDLCttT0FtSUE7NEZEeEZhLG9CQUFvQjtrQkFKaEMsU0FBUzsrQkFDRSxrQkFBa0I7aUtBZ0NjLFFBQVE7c0JBQWpELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkEwQi9CLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBBcHBCYXNlQ29tcG9uZW50LFxyXG4gIENvbnRyb2xMYXlvdXQsXHJcbiAgQ3VzdG9tVmFsaWRhdGlvbixcclxuICBEcm9wZG93bk9wdGlvbnMsXHJcbiAgRW5nbGlzaEFyYWJpY0RUTyxcclxuICBGb3JjZURpcmVjdGlvbixcclxuICBGb3JtT3B0aW9ucyxcclxuICBJbnB1dFR5cGUsXHJcbiAgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zLFxyXG4gIE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zLFxyXG4gIFJhbmdlTnVtYmVyLFxyXG4gIFRleHRCb3hPcHRpb25zLFxyXG4gIFRvZ2dsZVNsaWRlT3B0aW9ucyxcclxufSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7XHJcbiAgTmdXaXphcmRDb25maWcsXHJcbiAgTmdXaXphcmRTZXJ2aWNlLFxyXG4gIFN0ZXBDaGFuZ2VkQXJncyxcclxuICBTdGVwVmFsaWRhdGlvbkFyZ3MsXHJcbiAgU1RFUF9TVEFURSxcclxuICBUSEVNRSxcclxufSBmcm9tICduZy13aXphcmQnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBdWRpZW5jZVR5cGUsIFN1cnZleU9wdGlvblR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9FbnVtcy9FbnVtcyc7XHJcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uRFRPIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL1N1cnZleU1vZGVscy9zdXJ2ZXktcXVlc3Rpb24nO1xyXG5pbXBvcnQgeyBTdXJ2ZXlRdWVzdGlvbk9wdGlvbkRUTyB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9TdXJ2ZXlNb2RlbHMvc3VydmV5LXF1ZXN0aW9uLW9wdGlvbic7XHJcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL1NlcnZpY2VzL3N1cnZleS1xdWVzdGlvbi5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWFkZC1xdWVzdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1xdWVzdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZGRRdWVzdGlvbkNvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHF1ZXN0aW9uVHlwZTogU3VydmV5T3B0aW9uVHlwZTtcclxuICBwdWJsaWMgYXVkaWVuY2VUeXBlID0gQXVkaWVuY2VUeXBlO1xyXG4gIGlzTnVtYmVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNUZXh0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNGaWxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNNdWx0aUZpbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0ltYWdlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNTZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBTaXplTGlzdDogYW55W10gPSBbXTtcclxuXHJcbiAgYWRkTW9kZWxGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgYWRkU3VydmV5UXVlc3Rpb25Gb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gIGFkZFF1ZXN0aW9uOiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucztcclxuICBhZGREZXNjcmlwdGlvbjogTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zO1xyXG4gIGFkZFF1ZXN0aW9uVHlwZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIGF1ZGllbmNlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgYWRkUmVxdWlyZWQ6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICBhZGRBbGxvd1Njb3JlOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgYWRkSGFzU2VhcmNoOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgYWRkSXNBY3RpdmU6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICBhZGRNaW5MZW5ndGg6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZE1heExlbmd0aDogVGV4dEJveE9wdGlvbnM7XHJcbiAgYWRkUm93c051bWJlcjogVGV4dEJveE9wdGlvbnM7XHJcbiAgYWRkTWF4RmlsZVNpemU6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZE1heEZpbGVDb3VudDogVGV4dEJveE9wdGlvbnM7XHJcbiAgYWRkRmlsZXNFeHRlbnNpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgYWRkU2l6ZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIG51bWJlclZhbGlkYXRpb246IEN1c3RvbVZhbGlkYXRpb24gPSBuZXcgQ3VzdG9tVmFsaWRhdGlvbigpO1xyXG4gIEBWaWV3Q2hpbGQoJ0FkZE1vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pIEFkZE1vZGFsOiBFbGVtZW50UmVmO1xyXG5cclxuICBhZGRPcHRpb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgYWRkTmFtZU9wdGlvbjogTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnM7XHJcbiAgc2NvcmVOdW1iZXI6IFRleHRCb3hPcHRpb25zO1xyXG4gIG9wdGlvbkxpc3Q6IFN1cnZleVF1ZXN0aW9uT3B0aW9uRFRPW10gPSBbXTtcclxuICBhZGRPcHRpb25MaW5rZWRRdWVzdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBzaG93U2NvcmVPcHRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93T3B0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGVycm9yTWVzc2FnZTogc3RyaW5nID0gbnVsbDtcclxuICB0b3RhbFNjb3JlOiBudW1iZXIgPSAwO1xyXG4gIG1haW5Gb3JtQ29udHJvbHM6IGFueVtdO1xyXG4gIHN1cnZleUlEOiBzdHJpbmc7XHJcbiAgYXVkaWVuY2VUeXBlSUQ6IGFueTtcclxuICBkaXNwbGF5T3JkZXJPcHRpb246IFRleHRCb3hPcHRpb25zO1xyXG4gIHNob3dPcHRpb25MaXN0OiBib29sZWFuID0gdHJ1ZTtcclxuICBvcmRlckNoYW5nZTogYm9vbGVhbjtcclxuICBpc09wdGlvbkluRWRpdE1vZGU6IGJvb2xlYW47XHJcbiAgUXVlc3Rpb25zOiBhbnk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgc3VydmV5UXVlc3Rpb25TZXJ2aWNlOiBTdXJ2ZXlRdWVzdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5nV2l6YXJkU2VydmljZTogTmdXaXphcmRTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHBhZ2luZ0VsZW1lbnQ7XHJcbiAgQElucHV0KCkgb25TdWNjZXNzQWRkSGFuZGxlcjtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgMTI7IGluZGV4KyspIHtcclxuICAgICAgdmFyIGl0ZW0gPSB7IGtleTogaW5kZXggKyAxLCB2YWx1ZTogYCR7aW5kZXggKyAxfWAgfTtcclxuICAgICAgdGhpcy5TaXplTGlzdC5wdXNoKGl0ZW0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5udW1iZXJWYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSA9IChcclxuICAgICAgY29udHJvbDogQWJzdHJhY3RDb250cm9sXHJcbiAgICApOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL15bMC05XSokLykpIHtcclxuICAgICAgICB0aGlzLm51bWJlclZhbGlkYXRpb24ubWFzc2FnZSA9IHRoaXMubCgnSW50ZWdlck51bWJlclZhbGlkYXRpb25LZXknKTtcclxuICAgICAgICByZXR1cm4geyBjdXN0b21lckVycm9yOiB0cnVlIH07XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL15bK10/KFsuXVxcZCt8XFxkK1suXT9cXGQqKSQvKSkge1xyXG4gICAgICAgIHRoaXMubnVtYmVyVmFsaWRhdGlvbi5tYXNzYWdlID0gdGhpcy5sKCdQb3NpdGl2ZU51bWJlclZhbGlkYXRpb25LZXknKTtcclxuICAgICAgICByZXR1cm4geyBjdXN0b21lckVycm9yOiB0cnVlIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVNjb3JpbmcodmFsdWUpIHtcclxuICAgIHRoaXMuc2hvd1Njb3JlT3B0aW9uID0gdmFsdWU7XHJcbiAgICBpZiAoIXZhbHVlICYmIHRoaXMuYWRkT3B0aW9uRm9ybS5jb250cm9sc1snU2NvcmUnXSkge1xyXG4gICAgICB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbJ1Njb3JlJ10ucmVzZXQoKTtcclxuICAgICAgdGhpcy5hZGRPcHRpb25Gb3JtLmNvbnRyb2xzWydTY29yZSddLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbJ1Njb3JlJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlTGVuZ3RoVmFsaWRhdG9yKG5hbWUsIG1heCwgbWluKSB7XHJcbiAgICBsZXQgY29udHJvbCA9IHRoaXMuYWRkT3B0aW9uRm9ybS5jb250cm9sc1tuYW1lXTtcclxuICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgICBjb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgbGV0IHZhbGlkYXRpb25SdWxlcyA9IFtdO1xyXG4gICAgICB2YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLm1pbihtaW4pKTtcclxuICAgICAgdmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5tYXgobWF4KSk7XHJcbiAgICAgIHZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICBjb250cm9sLmFkZFZhbGlkYXRvcnModmFsaWRhdGlvblJ1bGVzKTtcclxuICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNoYW5nZURhdGFUeXBlKGtleSkge1xyXG4gICAgdGhpcy51cGRhdGVGb3JtU3RhdHVzKGtleSk7XHJcbiAgICBzd2l0Y2ggKGtleSkge1xyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuVGV4dDpcclxuICAgICAgICB0aGlzLnVwZGF0ZUxlbmd0aFZhbGlkYXRvcih0aGlzLmFkZE1heExlbmd0aC5OYW1lLCAyNTUsIDEpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGVuZ3RoVmFsaWRhdG9yKHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUsIDI1NSwgMSk7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGguTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGguTnVtYmVyUmFuZ2UuVG8gPSAyNTU7XHJcbiAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGguTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGguTnVtYmVyUmFuZ2UuVG8gPSAyNTU7XHJcbiAgICAgICAgdGhpcy5pc1RleHQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNOdW1iZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNNdWx0aUZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzSW1hZ2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzU2VsZWN0ID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuTXVsdGlsaW5lVGV4dDpcclxuICAgICAgICB0aGlzLnVwZGF0ZUxlbmd0aFZhbGlkYXRvcih0aGlzLmFkZE1heExlbmd0aC5OYW1lLCA0MDAwLCAxKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxlbmd0aFZhbGlkYXRvcih0aGlzLmFkZE1pbkxlbmd0aC5OYW1lLCA0MDAwLCAxKTtcclxuICAgICAgICB0aGlzLmFkZE1heExlbmd0aC5OdW1iZXJSYW5nZS5Gcm9tID0gMTtcclxuICAgICAgICB0aGlzLmFkZE1heExlbmd0aC5OdW1iZXJSYW5nZS5UbyA9IDQwMDA7XHJcbiAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGguTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGguTnVtYmVyUmFuZ2UuVG8gPSA0MDAwO1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk51bWJlcjpcclxuICAgICAgICB0aGlzLnVwZGF0ZUxlbmd0aFZhbGlkYXRvcih0aGlzLmFkZE1heExlbmd0aC5OYW1lLCAxMDAsIDEpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGVuZ3RoVmFsaWRhdG9yKHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUsIDEwMCwgMSk7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGguTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGguTnVtYmVyUmFuZ2UuVG8gPSAxMDA7XHJcbiAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGguTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGguTnVtYmVyUmFuZ2UuVG8gPSAxMDA7XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNNdWx0aUZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzSW1hZ2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzU2VsZWN0ID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5GaWxlOlxyXG4gICAgICAgIHRoaXMuaXNGaWxlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuTXVsdGlGaWxlOlxyXG4gICAgICAgIHRoaXMuaXNNdWx0aUZpbGUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNOdW1iZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzVGV4dCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLkltYWdlOlxyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc011bHRpRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNOdW1iZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzVGV4dCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuTXVsdGlwbGVTZWxlY3Q6XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5TaW5nbGVTZWxlY3Q6XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5SYWRpb0J1dHRvbjpcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNNdWx0aUZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzU2VsZWN0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzSW1hZ2UgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNNdWx0aUZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzU2VsZWN0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5uZ1dpemFyZFNlcnZpY2UucmVzZXQoKTtcclxuICB9XHJcblxyXG4gIGFkZE1vZGFsID0gKHN1cnZleUlkLCBhdWRpZW5jZVR5cGUpID0+IHtcclxuICAgIHRoaXMuc3VydmV5SUQgPSBzdXJ2ZXlJZDtcclxuICAgIHRoaXMuYXVkaWVuY2VUeXBlSUQgPSBhdWRpZW5jZVR5cGU7XHJcbiAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzVGV4dCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNNdWx0aUZpbGUgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNTZWxlY3QgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5vcHRpb25MaXN0ID0gW107XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICB0aGlzLnN1cnZleVF1ZXN0aW9uU2VydmljZVxyXG4gICAgICAubG9hZEFkZERyb3Bkb3duKHRoaXMuc3VydmV5SUQpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSByZXMgYXMgYW55O1xyXG4gICAgICAgIHRoaXMuUXVlc3Rpb25zID0gcmVzdWx0LnF1ZXN0aW9ucztcclxuICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgICAgIHRoaXMuYWRkT3B0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG5cclxuICAgICAgICB0aGlzLmFkZFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFkZFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5hZGRNb2RlbEZvcm07XHJcbiAgICAgICAgdGhpcy5hZGRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEFkZE1vZGVsO1xyXG4gICAgICAgIHRoaXMuYWRkU3VydmV5UXVlc3Rpb25Gb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPVxyXG4gICAgICAgICAgdGhpcy5nZXRBZGRGdW5jdGlvbjtcclxuICAgICAgICB0aGlzLmFkZFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMuUGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50O1xyXG4gICAgICAgIHRoaXMuYWRkU3VydmV5UXVlc3Rpb25Gb3JtT3B0aW9ucy5PblN1Y2Nlc3NIYW5kbGVyID1cclxuICAgICAgICAgIHRoaXMub25TdWNjZXNzQWRkSGFuZGxlcjtcclxuICAgICAgICB0aGlzLmFkZFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMuRGlzYWJsZVN1Y2Nlc3NOb3RpZmljYXRpb24gPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLmFkZFF1ZXN0aW9uID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvbi5OYW1lID0gJ1RleHQnO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb24uQXJhYmljTGFiZWxLZXkgPSAnUXVlc3Rpb25JbkFyYWJpYyc7XHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvbi5FbmdsaXNoTGFiZWxLZXkgPSAnUXVlc3Rpb25JbkVuZ2xpc2gnO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvbi5NYXhMZW5ndGggPSA0MDAwO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb24uTGFuZ3VhZ2VNb2RlID0gdGhpcy5nZXRMYW5ndWFnZU1vZGVWYWx1ZSgpO1xyXG5cclxuICAgICAgICB0aGlzLmFkZERlc2NyaXB0aW9uID0gbmV3IE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkRGVzY3JpcHRpb24uTmFtZSA9ICdEZXNjcmlwdGlvbic7XHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbi5BcmFiaWNMYWJlbEtleSA9ICdEZXNjcmlwdGlvbkluQXJhYmljJztcclxuICAgICAgICB0aGlzLmFkZERlc2NyaXB0aW9uLkVuZ2xpc2hMYWJlbEtleSA9ICdEZXNjcmlwdGlvbkluRW5nbGlzaCc7XHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbi5Jc1JlcXVpcmVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbi5NYXhMZW5ndGggPSAyNTA7XHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbi5Sb3dzID0gMjtcclxuICAgICAgICB0aGlzLmFkZERlc2NyaXB0aW9uLkxhbmd1YWdlTW9kZSA9IHRoaXMuZ2V0TGFuZ3VhZ2VNb2RlVmFsdWUoKTtcclxuICAgICAgICB0aGlzLmFkZERlc2NyaXB0aW9uLkFyYWJpY0xhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoXHJcbiAgICAgICAgICAnUXVlc3Rpb25EZXNjcmlwdGlvbkhpbnRBcmFiaWMnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmFkZERlc2NyaXB0aW9uLkVuZ2xpc2hMYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKFxyXG4gICAgICAgICAgJ1F1ZXN0aW9uRGVzY3JpcHRpb25IaW50RW5nbGlzaCdcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmFkZFF1ZXN0aW9uVHlwZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFkZFF1ZXN0aW9uVHlwZS5OYW1lID0gJ1F1ZXN0aW9uVHlwZUl0ZW1JRCc7XHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvblR5cGUuTGFiZWxLZXkgPSAnVHlwZSc7XHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvblR5cGUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvblR5cGUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb25UeXBlLkRhdGFTb3VyY2UgPSByZXN1bHQub3B0aW9uVHlwZXM7XHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvblR5cGUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZFF1ZXN0aW9uVHlwZS5Ob3RGb3VuZFRleHQgPSB0aGlzLmwoJ05vUmVzdWx0Rm91bmQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5hdWRpZW5jZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmF1ZGllbmNlLk5hbWUgPSAnQXVkaWVuY2VJdGVtSUQnO1xyXG4gICAgICAgIHRoaXMuYXVkaWVuY2UuTGFiZWxLZXkgPSAnQXVkaWVuY2UnO1xyXG4gICAgICAgIHRoaXMuYXVkaWVuY2UuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hdWRpZW5jZS5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuVmVydGljYWw7XHJcbiAgICAgICAgdGhpcy5hdWRpZW5jZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYXVkaWVuY2UuU2hvd0NoZWNrYm94ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5hdWRpZW5jZS5EYXRhU291cmNlID0gcmVzdWx0LmF1ZGllbmNlcztcclxuICAgICAgICB0aGlzLmF1ZGllbmNlLlNlbGVjdGVkSXRlbXMgPSBhdWRpZW5jZVR5cGU7XHJcbiAgICAgICAgdGhpcy5hdWRpZW5jZS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKCdBdWRpZW5jZURlc2NyaXB0aW9uSGludCcpO1xyXG5cclxuICAgICAgICB0aGlzLmFkZFNpemUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRTaXplLk5hbWUgPSAnU2l6ZSc7XHJcbiAgICAgICAgdGhpcy5hZGRTaXplLkxhYmVsS2V5ID0gJ1NpemUnO1xyXG4gICAgICAgIHRoaXMuYWRkU2l6ZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZFNpemUuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkU2l6ZS5EYXRhU291cmNlID0gdGhpcy5TaXplTGlzdDtcclxuICAgICAgICB0aGlzLmFkZFNpemUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZFNpemUuU2VsZWN0ZWRJdGVtcyA9IDEyO1xyXG4gICAgICAgIHRoaXMuYWRkU2l6ZS5Ob3RGb3VuZFRleHQgPSB0aGlzLmwoJ05vUmVzdWx0Rm91bmQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRSZXF1aXJlZCA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFkZFJlcXVpcmVkLk5hbWUgPSAnSXNSZXF1aXJlZCc7XHJcbiAgICAgICAgdGhpcy5hZGRSZXF1aXJlZC5MYWJlbEtleSA9ICdJc1JlcXVpcmVkJztcclxuICAgICAgICB0aGlzLmFkZFJlcXVpcmVkLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoJ1JlcXVpcmVkRGVzY3JpcHRpb25IaW50Jyk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkQWxsb3dTY29yZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFkZEFsbG93U2NvcmUuTmFtZSA9ICdJc0FsbG93U2NvcmluZyc7XHJcbiAgICAgICAgdGhpcy5hZGRBbGxvd1Njb3JlLkxhYmVsS2V5ID0gJ0FsbG93U2NvcmUnO1xyXG4gICAgICAgIHRoaXMuYWRkQWxsb3dTY29yZS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKCdBbGxvd1Njb3JlRGVzY3JpcHRpb24nKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRIYXNTZWFyY2ggPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRIYXNTZWFyY2guTmFtZSA9ICdIYXNTZWFyY2gnO1xyXG4gICAgICAgIHRoaXMuYWRkSGFzU2VhcmNoLkxhYmVsS2V5ID0gJ0hhc1NlYXJjaCc7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkSXNBY3RpdmUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRJc0FjdGl2ZS5OYW1lID0gJ0lzVmlzaWJsZSc7XHJcbiAgICAgICAgdGhpcy5hZGRJc0FjdGl2ZS5MYWJlbEtleSA9ICdWaXNpYmxlJztcclxuICAgICAgICB0aGlzLmFkZElzQWN0aXZlLlZhbHVlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZElzQWN0aXZlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoJ0dlbmVyaWNWaXNpYmxlSGludCcpO1xyXG5cclxuICAgICAgICB0aGlzLmFkZE1heExlbmd0aCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLk5hbWUgPSAnTWF4TGVuZ3RoJztcclxuICAgICAgICB0aGlzLmFkZE1heExlbmd0aC5MYWJlbEtleSA9ICdNYXhMZW5ndGgnO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLk51bWJlclJhbmdlID0gbmV3IFJhbmdlTnVtYmVyKCk7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGguVHlwZSA9IElucHV0VHlwZS5OdW1iZXI7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGguTGFiZWxEZXNjcmlwdGlvbiA9dGhpcy5sKCdNYXhIaW50Jyk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGguTmFtZSA9ICdNaW5MZW5ndGgnO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLkxhYmVsS2V5ID0gJ01pbkxlbmd0aCc7XHJcbiAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGguSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGguTnVtYmVyUmFuZ2UgPSBuZXcgUmFuZ2VOdW1iZXIoKTtcclxuICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aC5UeXBlID0gSW5wdXRUeXBlLk51bWJlcjtcclxuICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aC5MYWJlbERlc2NyaXB0aW9uID10aGlzLmwoJ01pbkhpbnQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRSb3dzTnVtYmVyID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRSb3dzTnVtYmVyLk5hbWUgPSAnUm93cyc7XHJcbiAgICAgICAgdGhpcy5hZGRSb3dzTnVtYmVyLkxhYmVsS2V5ID0gJ1Jvd3MnO1xyXG4gICAgICAgIHRoaXMuYWRkUm93c051bWJlci5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZFJvd3NOdW1iZXIuTnVtYmVyUmFuZ2UgPSBuZXcgUmFuZ2VOdW1iZXIoKTtcclxuICAgICAgICB0aGlzLmFkZFJvd3NOdW1iZXIuTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5hZGRSb3dzTnVtYmVyLk51bWJlclJhbmdlLlRvID0gMjA7XHJcbiAgICAgICAgdGhpcy5hZGRSb3dzTnVtYmVyLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG5cclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVTaXplID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lID0gJ01heEZpbGVTaXplSW5NQic7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZS5MYWJlbEtleSA9ICdNYXhGaWxlU2l6ZUluTUInO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZS5OdW1iZXJSYW5nZSA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemUuTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZS5OdW1iZXJSYW5nZS5UbyA9IDEwMDtcclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVTaXplLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG5cclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50Lk5hbWUgPSAnTWF4RmlsZUNvdW50JztcclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudC5MYWJlbEtleSA9ICdNYXhGaWxlc0NvdW50JztcclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudC5OdW1iZXJSYW5nZSA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50Lk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50Lk51bWJlclJhbmdlLlRvID0gNTA7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnQuVHlwZSA9IElucHV0VHlwZS5OdW1iZXI7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnQuTGFiZWxEZXNjcmlwdGlvbiA9dGhpcy5sKCdNYXhGaWxlQ291bnRIaW50Jyk7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnQuQ3VzdG9tVmFsaWRhdGlvbiA9IFt0aGlzLm51bWJlclZhbGlkYXRpb25dO1xyXG5cclxuICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5OYW1lID0gJ0FsbG93ZWRFeHRlbnNpb25zJztcclxuICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5MYWJlbEtleSA9ICdFeHRlbnNpb25zJztcclxuICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuRGF0YVNvdXJjZSA9IHJlc3VsdC5leHRlbnNpb25zO1xyXG4gICAgICAgIHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLkxhYmVsRGVzY3JpcHRpb24gPXRoaXMubCgnRXh0ZW5zaW9uSGludCcpO1xyXG4gICAgICAgIHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLk5vdEZvdW5kVGV4dCA9IHRoaXMubCgnTm9SZXN1bHRGb3VuZCcpO1xyXG5cclxuICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5hZGRWYWxpZGF0b3JzKHRoaXMuZnJvbVRvKCdNaW5MZW5ndGgnLCAnTWF4TGVuZ3RoJykpO1xyXG5cclxuICAgICAgICB0aGlzLmFkZE5hbWVPcHRpb24gPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFkZE5hbWVPcHRpb24uTmFtZSA9ICdOYW1lT3B0aW9uJztcclxuICAgICAgICB0aGlzLmFkZE5hbWVPcHRpb24uQXJhYmljTGFiZWxLZXkgPSAnTmFtZUluQXJhYmljJztcclxuICAgICAgICB0aGlzLmFkZE5hbWVPcHRpb24uRW5nbGlzaExhYmVsS2V5ID0gJ05hbWVJbkVuZ2xpc2gnO1xyXG4gICAgICAgIHRoaXMuYWRkTmFtZU9wdGlvbi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZE5hbWVPcHRpb24uTWF4TGVuZ3RoID0gMjI1O1xyXG4gICAgICAgIHRoaXMuYWRkTmFtZU9wdGlvbi5MYW5ndWFnZU1vZGUgPSB0aGlzLmdldExhbmd1YWdlTW9kZVZhbHVlKCk7XHJcblxyXG4gICAgICAgIHRoaXMuZGlzcGxheU9yZGVyT3B0aW9uID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5T3JkZXJPcHRpb24uTmFtZSA9ICdEaXNwbGF5T3JkZXInO1xyXG5cclxuICAgICAgICB0aGlzLnNjb3JlTnVtYmVyID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5zY29yZU51bWJlci5OYW1lID0gJ1Njb3JlJztcclxuICAgICAgICB0aGlzLnNjb3JlTnVtYmVyLkxhYmVsS2V5ID0gJ1Njb3JlJztcclxuICAgICAgICB0aGlzLnNjb3JlTnVtYmVyLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2NvcmVOdW1iZXIuVHlwZSA9IElucHV0VHlwZS5OdW1iZXI7XHJcbiAgICAgICAgbGV0IHJhbmdlTnVtYmVyID0gbmV3IFJhbmdlTnVtYmVyKCk7XHJcbiAgICAgICAgcmFuZ2VOdW1iZXIuVG8gPSAxMDAwMDAwO1xyXG4gICAgICAgIHJhbmdlTnVtYmVyLkZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuc2NvcmVOdW1iZXIuTnVtYmVyUmFuZ2UgPSByYW5nZU51bWJlcjtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRPcHRpb25MaW5rZWRRdWVzdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRPcHRpb25MaW5rZWRRdWVzdGlvbnMuTmFtZSA9ICdMaW5rZWRRdWVzdGlvbnMnO1xyXG4gICAgICAgIHRoaXMuYWRkT3B0aW9uTGlua2VkUXVlc3Rpb25zLkxhYmVsS2V5ID0gJ0xpbmtlZFF1ZXN0aW9ucyc7XHJcbiAgICAgICAgdGhpcy5hZGRPcHRpb25MaW5rZWRRdWVzdGlvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkT3B0aW9uTGlua2VkUXVlc3Rpb25zLkRhdGFTb3VyY2UgPSByZXN1bHQucXVlc3Rpb25zO1xyXG4gICAgICAgIHRoaXMuYWRkT3B0aW9uTGlua2VkUXVlc3Rpb25zLlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYWRkT3B0aW9uTGlua2VkUXVlc3Rpb25zLk5vdEZvdW5kVGV4dCA9IHRoaXMubCgnTm9SZXN1bHRGb3VuZCcpO1xyXG4gICAgICAgIHRoaXMuYWRkT3B0aW9uTGlua2VkUXVlc3Rpb25zLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLmwoXHJcbiAgICAgICAgICAnTGlua2VkUXVlc3Rpb25EZXNjcmlwdGlvbkhpbnQnXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5vcGVuTW9kYWwodGhpcy5BZGRNb2RhbCwgJ3hsJyk7XHJcbiAgICAgICAgdGhpcy5zdG9wQmxvY2tVSSgpO1xyXG4gICAgICB9KTtcclxuICB9O1xyXG4gIGdldEFkZE1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgcmVzdWx0T3B0aW9uTW9kZWwgPSB0aGlzLmFkZE9wdGlvbkZvcm0udmFsdWUgYXMgYW55O1xyXG4gICAgbGV0IHJlc3VsdE1vZGVsID0gdGhpcy5hZGRNb2RlbEZvcm0udmFsdWUgYXMgYW55O1xyXG4gICAgaWYgKHRoaXMuaXNTZWxlY3QpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIChyZXN1bHRPcHRpb25Nb2RlbC5OYW1lT3B0aW9uLkFyYWJpYyAhPSB1bmRlZmluZWQgJiZcclxuICAgICAgICAgIHJlc3VsdE9wdGlvbk1vZGVsLk5hbWVPcHRpb24uQXJhYmljICE9ICcnKSB8fFxyXG4gICAgICAgIChyZXN1bHRPcHRpb25Nb2RlbC5OYW1lT3B0aW9uLkVuZ2xpc2ggIT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgICByZXN1bHRPcHRpb25Nb2RlbC5OYW1lT3B0aW9uLkVuZ2xpc2ggIT0gJycpIHx8XHJcbiAgICAgICAgKHJlc3VsdE9wdGlvbk1vZGVsLlNjb3JlICE9IHVuZGVmaW5lZCAmJiByZXN1bHRPcHRpb25Nb2RlbC5TY29yZSA+IDApXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5sKCdPcHRpb25QZW5kaW5nRGF0YUVycm9yTWVzc2FnZScpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMub3B0aW9uTGlzdC5sZW5ndGggPT0gMCAmJiB0aGlzLmlzU2VsZWN0KSB7XHJcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmwoJ09wdGlvbkVycm9yTWVzc2FnZScpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgbGV0IGFkZE1vZGVsOiBTdXJ2ZXlRdWVzdGlvbkRUTyA9IG5ldyBTdXJ2ZXlRdWVzdGlvbkRUTygpO1xyXG4gICAgYWRkTW9kZWwuU3VydmV5SUQgPSB0aGlzLnN1cnZleUlEO1xyXG4gICAgYWRkTW9kZWwuVGV4dC5BcmFiaWMgPSByZXN1bHRNb2RlbC5UZXh0LkFyYWJpYztcclxuICAgIGFkZE1vZGVsLlRleHQuRW5nbGlzaCA9IHJlc3VsdE1vZGVsLlRleHQuRW5nbGlzaDtcclxuICAgIGFkZE1vZGVsLkRlc2NyaXB0aW9uLkFyYWJpYyA9IHJlc3VsdE1vZGVsLkRlc2NyaXB0aW9uLkFyYWJpYztcclxuICAgIGFkZE1vZGVsLkRlc2NyaXB0aW9uLkVuZ2xpc2ggPSByZXN1bHRNb2RlbC5EZXNjcmlwdGlvbi5FbmdsaXNoO1xyXG4gICAgYWRkTW9kZWwuT3B0aW9ucy5EZXNjcmlwdGlvbi5BcmFiaWMgPSByZXN1bHRNb2RlbC5EZXNjcmlwdGlvbi5BcmFiaWM7XHJcbiAgICBhZGRNb2RlbC5PcHRpb25zLkRlc2NyaXB0aW9uLkVuZ2xpc2ggPSByZXN1bHRNb2RlbC5EZXNjcmlwdGlvbi5FbmdsaXNoO1xyXG4gICAgaWYgKHRoaXMuYXVkaWVuY2VUeXBlSUQgPT0gQXVkaWVuY2VUeXBlLkJvdGgpXHJcbiAgICAgIGFkZE1vZGVsLkF1ZGllbmNlSXRlbUlEID0gcmVzdWx0TW9kZWwuQXVkaWVuY2VJdGVtSUQ7XHJcbiAgICBlbHNlIGFkZE1vZGVsLkF1ZGllbmNlSXRlbUlEID0gdGhpcy5hdWRpZW5jZVR5cGVJRDtcclxuICAgIGFkZE1vZGVsLlF1ZXN0aW9uVHlwZUl0ZW1JRCA9IHJlc3VsdE1vZGVsLlF1ZXN0aW9uVHlwZUl0ZW1JRDtcclxuICAgIGFkZE1vZGVsLklzQWxsb3dTY29yaW5nID0gcmVzdWx0TW9kZWwuSXNBbGxvd1Njb3Jpbmc7XHJcbiAgICBhZGRNb2RlbC5PcHRpb25zLlNpemUgPSByZXN1bHRNb2RlbC5TaXplO1xyXG4gICAgYWRkTW9kZWwuT3B0aW9ucy5Jc1JlcXVpcmVkID0gcmVzdWx0TW9kZWwuSXNSZXF1aXJlZDtcclxuICAgIGFkZE1vZGVsLklzUmVxdWlyZWQgPSByZXN1bHRNb2RlbC5Jc1JlcXVpcmVkO1xyXG4gICAgYWRkTW9kZWwuSXNWaXNpYmxlID0gcmVzdWx0TW9kZWwuSXNWaXNpYmxlO1xyXG4gICAgYWRkTW9kZWwuT3B0aW9ucy5IYXNTZWFyY2ggPSByZXN1bHRNb2RlbC5IYXNTZWFyY2g7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNUZXh0IHx8IHRoaXMuaXNOdW1iZXIpIHtcclxuICAgICAgYWRkTW9kZWwuT3B0aW9ucy5NaW5MZW5ndGggPSByZXN1bHRNb2RlbC5NaW5MZW5ndGg7XHJcbiAgICAgIGFkZE1vZGVsLk9wdGlvbnMuTWF4TGVuZ3RoID0gcmVzdWx0TW9kZWwuTWF4TGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzRmlsZSB8fCB0aGlzLmlzTXVsdGlGaWxlIHx8IHRoaXMuaXNJbWFnZSlcclxuICAgICAgYWRkTW9kZWwuT3B0aW9ucy5NYXhGaWxlU2l6ZUluTUIgPSByZXN1bHRNb2RlbC5NYXhGaWxlU2l6ZUluTUI7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNNdWx0aUZpbGUpXHJcbiAgICAgIGFkZE1vZGVsLk9wdGlvbnMuTWF4RmlsZUNvdW50ID0gcmVzdWx0TW9kZWwuTWF4RmlsZUNvdW50O1xyXG5cclxuICAgIGlmICh0aGlzLmlzTXVsdGlGaWxlIHx8IHRoaXMuaXNGaWxlKVxyXG4gICAgICBhZGRNb2RlbC5PcHRpb25zLkFsbG93ZWRFeHRlbnNpb25zID0gcmVzdWx0TW9kZWwuQWxsb3dlZEV4dGVuc2lvbnM7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTZWxlY3QpXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbkxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbkxpc3QubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgICB0aGlzLm9wdGlvbkxpc3RbaW5kZXhdLkRpc3BsYXlPcmRlciA9IGluZGV4ICsgMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYWRkTW9kZWwuUXVlc3Rpb25PcHRpb25zID0gdGhpcy5vcHRpb25MaXN0O1xyXG4gICAgICB9XHJcblxyXG4gICAgcGFyYW1BcnJheS5wdXNoKGFkZE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH07XHJcbiAgZ2V0QWRkRnVuY3Rpb24gPSAoYWRkTW9kYWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgaWYgKCF0aGlzLmVycm9yTWVzc2FnZSkgcmV0dXJuIHRoaXMuc3VydmV5UXVlc3Rpb25TZXJ2aWNlLmFkZChhZGRNb2RhbCk7XHJcbiAgfTtcclxuXHJcbiAgZ2V0TGlua2VkUXVlc3Rpb25zKG9wdGlvbjogU3VydmV5UXVlc3Rpb25PcHRpb25EVE8pIHtcclxuICAgIHJldHVybiB0aGlzLlF1ZXN0aW9ucy5maWx0ZXIoKGl0ZW0pID0+XHJcbiAgICAgIG9wdGlvbi5MaW5rZWRRdWVzdGlvbnMuaW5jbHVkZXMoaXRlbS5rZXkpXHJcbiAgICApLm1hcCgoaXRlbSkgPT4gaXRlbS52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBBZGRPcHRpb24oKSB7XHJcbiAgICB0aGlzLnRvdGFsU2NvcmUgPSAwO1xyXG4gICAgdGhpcy5hZGRPcHRpb25Gb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgIGlmICh0aGlzLmFkZE9wdGlvbkZvcm0uaW52YWxpZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgcmVzdWx0TW9kZWwgPSB0aGlzLmFkZE9wdGlvbkZvcm0udmFsdWUgYXMgYW55O1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbkxpc3QubGVuZ3RoID49IDEgJiYgdGhpcy5zaG93U2NvcmVPcHRpb24pIHtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9uTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBsZXQgZWxlbWVudCA9IHRoaXMub3B0aW9uTGlzdFtpbmRleF0uU2NvcmU7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQgPiAxMDAwMDAwKSB7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMubCgnTWF4T3B0aW9uU2NvcmVFcnJvck1lc3NhZ2UnKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGVsZW1lbnQgPCAxKSB7XHJcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMubCgnTWluT3B0aW9uU2NvcmVFcnJvck1lc3NhZ2UnKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc2hvd09wdGlvbkxpc3QgPSBmYWxzZTtcclxuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gbnVsbDtcclxuICAgIGxldCBvcHRpb24gPSBuZXcgU3VydmV5UXVlc3Rpb25PcHRpb25EVE8oKTtcclxuICAgIG9wdGlvbi5OYW1lLkFyYWJpYyA9IHJlc3VsdE1vZGVsLk5hbWVPcHRpb24uQXJhYmljO1xyXG4gICAgb3B0aW9uLk5hbWUuRW5nbGlzaCA9IHJlc3VsdE1vZGVsLk5hbWVPcHRpb24uRW5nbGlzaDtcclxuICAgIGRlYnVnZ2VyO1xyXG4gICAgaWYgKHJlc3VsdE1vZGVsLkRpc3BsYXlPcmRlcilcclxuICAgICAgb3B0aW9uLkRpc3BsYXlPcmRlciA9IHJlc3VsdE1vZGVsLkRpc3BsYXlPcmRlcjtcclxuICAgIGVsc2Ugb3B0aW9uLkRpc3BsYXlPcmRlciA9IHRoaXMub3B0aW9uTGlzdC5sZW5ndGggKyAxO1xyXG5cclxuICAgIG9wdGlvbi5MaW5rZWRRdWVzdGlvbnMgPSByZXN1bHRNb2RlbC5MaW5rZWRRdWVzdGlvbnM7XHJcbiAgICBpZiAodGhpcy5zaG93U2NvcmVPcHRpb24pXHJcbiAgICAgIG9wdGlvbi5TY29yZSA9IE51bWJlci5wYXJzZUZsb2F0KHJlc3VsdE1vZGVsLlNjb3JlKTtcclxuICAgIHRoaXMuYWRkT3B0aW9uRm9ybS5yZXNldCgpO1xyXG4gICAgdGhpcy5hZGRPcHRpb25Gb3JtLmNvbnRyb2xzWydOYW1lT3B0aW9uJ10ucmVzZXQoKTtcclxuICAgIHRoaXMuYWRkT3B0aW9uRm9ybS5jb250cm9sc1snRGlzcGxheU9yZGVyJ10ucmVzZXQoKTtcclxuICAgIHRoaXMuYWRkT3B0aW9uRm9ybS5jb250cm9sc1snTGlua2VkUXVlc3Rpb25zJ10ucmVzZXQoKTtcclxuICAgIGlmICh0aGlzLnNob3dTY29yZU9wdGlvbikgdGhpcy5hZGRPcHRpb25Gb3JtLmNvbnRyb2xzWydTY29yZSddLnJlc2V0KCk7XHJcbiAgICB0aGlzLm9wdGlvbkxpc3Quc3BsaWNlKG9wdGlvbi5EaXNwbGF5T3JkZXIgLSAxLCAwLCBvcHRpb24pO1xyXG4gICAgdGhpcy5zaG93T3B0aW9uTGlzdCA9IHRydWU7XHJcbiAgICB0aGlzLmlzT3B0aW9uSW5FZGl0TW9kZSA9IGZhbHNlO1xyXG4gIH1cclxuICBnZXRPcHRpb25CeU9yZGVyKGluZGV4OiBudW1iZXIsIG9wdGlvbjogYW55KSB7XHJcbiAgICByZXR1cm4gb3B0aW9uLkRpc3BsYXlPcmRlcjtcclxuICB9XHJcbiAgZGVsZXRlT3B0aW9uKG9wdGlvbikge1xyXG4gICAgdGhpcy5vcHRpb25MaXN0ID0gdGhpcy5vcHRpb25MaXN0LmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPSBvcHRpb24pO1xyXG4gIH1cclxuXHJcbiAgZWRpdE9wdGlvbihvcHRpb246IFN1cnZleVF1ZXN0aW9uT3B0aW9uRFRPKSB7XHJcbiAgICBkZWJ1Z2dlcjtcclxuICAgIGlmIChcclxuICAgICAgKHRoaXMuYWRkT3B0aW9uRm9ybS50b3VjaGVkID09IHRydWUgJiYgdGhpcy5hZGRPcHRpb25Gb3JtLnZhbGlkKSB8fFxyXG4gICAgICB0aGlzLmFkZE9wdGlvbkZvcm0udG91Y2hlZCA9PSBmYWxzZVxyXG4gICAgKVxyXG4gICAgICB0aGlzLkFkZE9wdGlvbigpO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuYWRkT3B0aW9uRm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBuYW1lID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgIG5hbWUuQXJhYmljID0gb3B0aW9uLk5hbWUuQXJhYmljID8/IG51bGw7XHJcbiAgICBuYW1lLkVuZ2xpc2ggPSBvcHRpb24uTmFtZS5FbmdsaXNoID8/IG51bGw7XHJcbiAgICB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbJ05hbWVPcHRpb24nXS5zZXRWYWx1ZShuYW1lKTtcclxuICAgIHRoaXMuYWRkT3B0aW9uRm9ybS5jb250cm9sc1snRGlzcGxheU9yZGVyJ10uc2V0VmFsdWUob3B0aW9uLkRpc3BsYXlPcmRlcik7XHJcbiAgICB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbJ0xpbmtlZFF1ZXN0aW9ucyddLnNldFZhbHVlKFxyXG4gICAgICBvcHRpb24uTGlua2VkUXVlc3Rpb25zXHJcbiAgICApO1xyXG4gICAgaWYgKHRoaXMuc2hvd1Njb3JlT3B0aW9uKVxyXG4gICAgICB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbJ1Njb3JlJ10uc2V0VmFsdWUob3B0aW9uLlNjb3JlKTtcclxuICAgIHRoaXMub3B0aW9uTGlzdCA9IHRoaXMub3B0aW9uTGlzdC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gIT0gb3B0aW9uKTtcclxuICAgIHRoaXMuaXNPcHRpb25JbkVkaXRNb2RlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGZyb21Ubyhmcm9tRmllbGQ6IHN0cmluZywgdG9GaWVsZDogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChmb3JtR3JvdXA6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9IHwgbnVsbCA9PiB7XHJcbiAgICAgIGNvbnN0IGZyb21EYXRlID0gZm9ybUdyb3VwLmdldChmcm9tRmllbGQpO1xyXG4gICAgICBjb25zdCB0b0RhdGUgPSBmb3JtR3JvdXAuZ2V0KHRvRmllbGQpO1xyXG4gICAgICBpZiAoZnJvbURhdGUgIT09IG51bGwgJiYgdG9EYXRlICE9PSBudWxsKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZnJvbURhdGUudmFsdWUgIT09IG51bGwgJiZcclxuICAgICAgICAgIHRvRGF0ZS52YWx1ZSAhPT0gbnVsbCAmJlxyXG4gICAgICAgICAgcGFyc2VJbnQoZnJvbURhdGUudmFsdWUpID4gcGFyc2VJbnQodG9EYXRlLnZhbHVlKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgZnJvbURhdGUubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgICAgdG9EYXRlLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgICAgIHRvRGF0ZS5zZXRFcnJvcnMoe1xyXG4gICAgICAgICAgICBlcnJvck1hc3NhZ2U6IHRoaXMubCgnR3JlYXRlclRoYW5PckVxdWFsVG8nKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGZyb21EYXRlLnZhbHVlICE9PSBudWxsICYmXHJcbiAgICAgICAgICB0b0RhdGUudmFsdWUgIT09IG51bGwgJiZcclxuICAgICAgICAgIHBhcnNlSW50KGZyb21EYXRlLnZhbHVlKSA8IHBhcnNlSW50KHRvRGF0ZS52YWx1ZSkgJiZcclxuICAgICAgICAgIHBhcnNlSW50KHRvRGF0ZS52YWx1ZSkgPCAyNTUgJiZcclxuICAgICAgICAgIHBhcnNlSW50KGZyb21EYXRlLnZhbHVlKSA8IDI1NVxyXG4gICAgICAgIClcclxuICAgICAgICAgIHRvRGF0ZS5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUZvcm1TdGF0dXMoa2V5OiBhbnkpIHtcclxuICAgIHN3aXRjaCAoa2V5KSB7XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5UZXh0OlxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuTXVsdGlsaW5lVGV4dDpcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk51bWJlcjpcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLkZpbGU6XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemVcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9uc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5NdWx0aUZpbGU6XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemVcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9uc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5JbWFnZTpcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk11bHRpcGxlU2VsZWN0OlxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuU2luZ2xlU2VsZWN0OlxyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heExlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVTaXplXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heExlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVTaXplXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc1ZhbGlkVHlwZUJvb2xlYW46IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBpc1ZhbGlkRnVuY3Rpb25SZXR1cm5zQm9vbGVhbihhcmdzOiBTdGVwVmFsaWRhdGlvbkFyZ3MpIHtcclxuICAgIGxldCByZXR1cm5WYWx1ZSA9IHRydWU7XHJcbiAgICB0aGlzLm1haW5Gb3JtQ29udHJvbHMgPSBbXTtcclxuICAgIHRoaXMubWFpbkZvcm1Db250cm9scy5wdXNoKFxyXG4gICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRRdWVzdGlvbi5OYW1lKSxcclxuICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRGVzY3JpcHRpb24uTmFtZSksXHJcbiAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZFF1ZXN0aW9uVHlwZS5OYW1lKSxcclxuICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYXVkaWVuY2UuTmFtZSlcclxuICAgICk7XHJcbiAgICBpZiAoYXJncy5mcm9tU3RlcC5pbmRleCA9PSAwKVxyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubWFpbkZvcm1Db250cm9scy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHRoaXMubWFpbkZvcm1Db250cm9sc1tpXS5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgaWYgKCF0aGlzLm1haW5Gb3JtQ29udHJvbHNbaV0udmFsaWQpIHJldHVyblZhbHVlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIHJldHVybiByZXR1cm5WYWx1ZTtcclxuICB9XHJcblxyXG4gIGlzVmFsaWRGdW5jdGlvblJldHVybnNPYnNlcnZhYmxlKGFyZ3M6IFN0ZXBWYWxpZGF0aW9uQXJncykge1xyXG4gICAgcmV0dXJuIG9mKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgLy9kcmFnIGFuZCBkcm9wXHJcbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KSB7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5vcHRpb25MaXN0LCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctdGVtcGxhdGUgI0FkZE1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiPlxyXG4gICAgICB7e2woXCJBZGRfUXVlc3Rpb25cIil9fVxyXG4gICAgPC9oND5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgY2xhc3M9XCJidG4gYnRuLWljb24gYnRuLXNtXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMSBzdmctaWNvbi1ob3Zlci1icmFuZFwiIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL21vZGFsY2xvc2Uuc3ZnJ1wiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cImFkZFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnNcIj5cclxuICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiYWRkUXVlc3Rpb25cIiBbZ3JvdXBdPVwiYWRkTW9kZWxGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYSBbb3B0aW9uc109XCJhZGREZXNjcmlwdGlvblwiIFtncm91cF09XCJhZGRNb2RlbEZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEFyZWE+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiYXVkaWVuY2VUeXBlSUQ9PWF1ZGllbmNlVHlwZS5Cb3RoXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImF1ZGllbmNlXCIgIFtncm91cF09XCJhZGRNb2RlbEZvcm1cIj48L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImFkZFF1ZXN0aW9uVHlwZVwiIFtncm91cF09XCJhZGRNb2RlbEZvcm1cIiAoT25DaGFuZ2UpPVwiY2hhbmdlRGF0YVR5cGUoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiYWRkU2l6ZVwiIFtncm91cF09XCJhZGRNb2RlbEZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJpc1NlbGVjdFwiID5cclxuICAgICAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJhZGRBbGxvd1Njb3JlXCIgW2dyb3VwXT1cImFkZE1vZGVsRm9ybVwiIChPbkNoYW5nZSk9XCJjaGFuZ2VTY29yaW5nKCRldmVudClcIj48L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiYWRkSXNBY3RpdmVcIiBbZ3JvdXBdPVwiYWRkTW9kZWxGb3JtXCI+PC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiYWRkUmVxdWlyZWRcIiBbZ3JvdXBdPVwiYWRkTW9kZWxGb3JtXCI+PC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImlzVGV4dHx8aXNOdW1iZXJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImFkZE1pbkxlbmd0aFwiICpuZ0lmPVwiaXNUZXh0fHxpc051bWJlclwiIFtncm91cF09XCJhZGRNb2RlbEZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXNUZXh0fHxpc051bWJlclwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiYWRkTWF4TGVuZ3RoXCIgKm5nSWY9XCJpc1RleHR8fGlzTnVtYmVyXCIgW2dyb3VwXT1cImFkZE1vZGVsRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImlzRmlsZXx8aXNNdWx0aUZpbGV8fGlzSW1hZ2VcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImFkZE1heEZpbGVTaXplXCIgKm5nSWY9XCJpc0ZpbGV8fGlzTXVsdGlGaWxlfHxpc0ltYWdlXCIgW2dyb3VwXT1cImFkZE1vZGVsRm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJpc011bHRpRmlsZVwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiYWRkTWF4RmlsZUNvdW50XCIgKm5nSWY9XCJpc011bHRpRmlsZVwiIFtncm91cF09XCJhZGRNb2RlbEZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXNGaWxlfHxpc011bHRpRmlsZVwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJhZGRGaWxlc0V4dGVuc2lvbnNcIiAqbmdJZj1cImlzRmlsZXx8aXNNdWx0aUZpbGVcIiBbZ3JvdXBdPVwiYWRkTW9kZWxGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNTZWxlY3RcIiBjbGFzcz1cInF1ZXN0aW9uLXR5cGUtb3B0aW9uXCI+XHJcbiAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1iLTRcIj57e2woJ09wdGlvbnMnKX19PC9oNT5cclxuICAgICAgICAgICAgPGRpdiBjZGtEcm9wTGlzdCAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiICpuZ0lmPVwic2hvd09wdGlvbkxpc3RcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWxpc3RpbmdcIiAqbmdGb3I9XCJsZXQgT3B0aW9uIG9mIG9wdGlvbkxpc3Q7XCIgY2RrRHJhZz5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBtYi0wXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZSBmcy02IGZ3LWJvbGRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7Z2V0Q3VycmVudEZhaWxPdmVyKE9wdGlvbi5OYW1lKX19XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1zcXVhcmUgYmFkZ2UtZGFyayBtZS00XCIgKm5nSWY9XCJzaG93U2NvcmVPcHRpb25cIiBuZ2JUb29sdGlwPVwie3tsKCdTY29yZScpfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7T3B0aW9uLlNjb3JlfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1zcXVhcmUgYmFkZ2UtYnJhbmQgY3Vyc29yLXBvaW50ZXIgbWUtNFwiICpuZ0lmPVwiT3B0aW9uLkxpbmtlZFF1ZXN0aW9ucz8ubGVuZ3RoPjBcIiBuZ2JUb29sdGlwPVwie3tnZXRMaW5rZWRRdWVzdGlvbnMoT3B0aW9uKX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTQgc3ZnLWljb24td2hpdGVcIiBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9pbmZvLnN2ZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLXNxdWFyZSBiYWRnZS1icmFuZCBjdXJzb3ItcG9pbnRlciBtZS00XCIgKGNsaWNrKT1cImVkaXRPcHRpb24oT3B0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi00IHN2Zy1pY29uLXdoaXRlXCIgbmdiVG9vbHRpcD1cInt7bCgnRWRpdCcpfX1cIiBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9FZGl0LnN2ZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc3F1YXJlIGJhZGdlLWRhbmdlciBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi00IHN2Zy1pY29uLXdoaXRlXCIgbmdiVG9vbHRpcD1cInt7bCgnRGVsZXRlJyl9fVwiIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL1RyYXNoLnN2ZydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZU9wdGlvbihPcHRpb24pXCIgYXBwcHJldmVudGRvdWJsZWNsaWNrPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdXJ2ZXktYWxlcnQtZGFuZ2VyIGFsZXJ0LWRhbmdlclwiICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0ydHggc3ZnLWljb24tZGFuZ2VyIG1lLTRcIiBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9pbmZvLnN2ZydcIj5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGRcIj48ZGl2IGNsYXNzPVwiZnMtNyB0ZXh0LWRhbmdlclwiPnt7ZXJyb3JNZXNzYWdlfX08L2Rpdj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXBlYXRlci1iZ1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJhZGROYW1lT3B0aW9uXCIgW2dyb3VwXT1cImFkZE9wdGlvbkZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiYWRkT3B0aW9uTGlua2VkUXVlc3Rpb25zXCIgW2dyb3VwXT1cImFkZE9wdGlvbkZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJkaXNwbGF5T3JkZXJPcHRpb25cIiBbZ3JvdXBdPVwiYWRkT3B0aW9uRm9ybVwiIGhpZGRlbj48L0JCU0YtVGV4dEJveD5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwic2hvd1Njb3JlT3B0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwic2NvcmVOdW1iZXJcIiBbZ3JvdXBdPVwiYWRkT3B0aW9uRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJBZGRPcHRpb24oKVwiICpuZ0lmPVwiIWlzT3B0aW9uSW5FZGl0TW9kZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tYnJhbmQgdy0xMDBcIj57e2woXCJBZGRcIil9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJBZGRPcHRpb24oKVwiICpuZ0lmPVwiaXNPcHRpb25JbkVkaXRNb2RlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1icmFuZCB3LTEwMFwiPnt7bChcIkVkaXRcIil9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyIHBiLTAgbS0wXCIgPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0XCIgIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICB7e2woXCJDYW5jZWxcIil9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBhcHBQcmV2ZW50RG91YmxlQ2xpY2sgdHlwZT1cInN1Ym1pdFwiICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1icmFuZFwiPnt7bChcIlNhdmVcIil9fTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuXHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
1
+ import { moveItemInArray } from '@angular/cdk/drag-drop';
2
+ import { Component, Input, ViewChild, } from '@angular/core';
3
+ import { FormGroup, Validators } from '@angular/forms';
4
+ import { AppBaseComponent, ControlLayout, CustomValidation, DropdownOptions, EnglishArabicDTO, FormOptions, InputType, MultiLingualTextAreaOptions, MultiLingualTextBoxOptions, RangeNumber, TextBoxOptions, ToggleSlideOptions, } from '@bnsights/bbsf-controls';
5
+ import { of } from 'rxjs';
6
+ import { AudienceType, SurveyOptionType } from '../../../../Enums/Enums';
7
+ import { SurveyQuestionDTO } from '../../../../models/SurveyModels/survey-question';
8
+ import { SurveyQuestionOptionDTO } from '../../../../models/SurveyModels/survey-question-option';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "../../../../Services/survey-question.service";
11
+ import * as i2 from "@kronscht/ng-wizard";
12
+ import * as i3 from "@angular/common";
13
+ import * as i4 from "@bnsights/bbsf-controls";
14
+ import * as i5 from "@ng-bootstrap/ng-bootstrap";
15
+ import * as i6 from "@angular/cdk/drag-drop";
16
+ import * as i7 from "ng-inline-svg-2";
17
+ export class AddQuestionComponent extends AppBaseComponent {
18
+ constructor(injector, surveyQuestionService, ngWizardService) {
19
+ super(injector);
20
+ this.injector = injector;
21
+ this.surveyQuestionService = surveyQuestionService;
22
+ this.ngWizardService = ngWizardService;
23
+ this.audienceType = AudienceType;
24
+ this.isNumber = false;
25
+ this.isText = false;
26
+ this.isFile = false;
27
+ this.isMultiFile = false;
28
+ this.isImage = false;
29
+ this.isSelect = false;
30
+ this.SizeList = [];
31
+ this.addModelForm = new FormGroup({});
32
+ this.addSurveyQuestionFormOptions = new FormOptions();
33
+ this.numberValidation = new CustomValidation();
34
+ this.addOptionForm = new FormGroup({});
35
+ this.optionList = [];
36
+ this.showScoreOption = false;
37
+ this.showOptions = false;
38
+ this.errorMessage = null;
39
+ this.totalScore = 0;
40
+ this.showOptionList = true;
41
+ this.addModal = (surveyId, audienceType) => {
42
+ this.surveyID = surveyId;
43
+ this.audienceTypeID = audienceType;
44
+ this.isNumber = false;
45
+ this.isText = false;
46
+ this.isFile = false;
47
+ this.isMultiFile = false;
48
+ this.isSelect = false;
49
+ this.isImage = false;
50
+ this.optionList = [];
51
+ this.errorMessage = null;
52
+ this.surveyQuestionService
53
+ .loadAddDropdown(this.surveyID)
54
+ .subscribe((res) => {
55
+ let result = res;
56
+ this.Questions = result.questions;
57
+ this.addModelForm = new FormGroup({});
58
+ this.addOptionForm = new FormGroup({});
59
+ this.addSurveyQuestionFormOptions = new FormOptions();
60
+ this.addSurveyQuestionFormOptions.FormGroup = this.addModelForm;
61
+ this.addSurveyQuestionFormOptions.GetModelFunction = this.getAddModel;
62
+ this.addSurveyQuestionFormOptions.ServiceSubmitFunction =
63
+ this.getAddFunction;
64
+ this.addSurveyQuestionFormOptions.PagingReference = this.pagingElement;
65
+ this.addSurveyQuestionFormOptions.OnSuccessHandler =
66
+ this.onSuccessAddHandler;
67
+ this.addSurveyQuestionFormOptions.DisableSuccessNotification = true;
68
+ this.addQuestion = new MultiLingualTextBoxOptions();
69
+ this.addQuestion.Name = 'Text';
70
+ this.addQuestion.ArabicLabelKey = 'QuestionInArabic';
71
+ this.addQuestion.EnglishLabelKey = 'QuestionInEnglish';
72
+ this.addQuestion.IsRequired = true;
73
+ this.addQuestion.MaxLength = 4000;
74
+ this.addQuestion.LanguageMode = this.getLanguageModeValue();
75
+ this.addDescription = new MultiLingualTextAreaOptions();
76
+ this.addDescription.Name = 'Description';
77
+ this.addDescription.ArabicLabelKey = 'DescriptionInArabic';
78
+ this.addDescription.EnglishLabelKey = 'DescriptionInEnglish';
79
+ this.addDescription.IsRequired = false;
80
+ this.addDescription.MaxLength = 250;
81
+ this.addDescription.Rows = 2;
82
+ this.addDescription.LanguageMode = this.getLanguageModeValue();
83
+ this.addDescription.ArabicLabelDescription = this.l('QuestionDescriptionHintArabic');
84
+ this.addDescription.EnglishLabelDescription = this.l('QuestionDescriptionHintEnglish');
85
+ this.addQuestionType = new DropdownOptions();
86
+ this.addQuestionType.Name = 'QuestionTypeItemID';
87
+ this.addQuestionType.LabelKey = 'Type';
88
+ this.addQuestionType.IsRequired = true;
89
+ this.addQuestionType.AllowSearchFilter = true;
90
+ this.addQuestionType.DataSource = result.optionTypes;
91
+ this.addQuestionType.SingleSelection = true;
92
+ this.addQuestionType.NotFoundText = this.l('NoResultFound');
93
+ this.audience = new DropdownOptions();
94
+ this.audience.Name = 'AudienceItemID';
95
+ this.audience.LabelKey = 'Audience';
96
+ this.audience.IsRequired = true;
97
+ this.audience.ViewType = ControlLayout.Vertical;
98
+ this.audience.SingleSelection = true;
99
+ this.audience.ShowCheckbox = false;
100
+ this.audience.DataSource = result.audiences;
101
+ this.audience.SelectedItems = audienceType;
102
+ this.audience.LabelDescription = this.l('AudienceDescriptionHint');
103
+ this.addSize = new DropdownOptions();
104
+ this.addSize.Name = 'Size';
105
+ this.addSize.LabelKey = 'Size';
106
+ this.addSize.IsRequired = true;
107
+ this.addSize.AllowSearchFilter = true;
108
+ this.addSize.DataSource = this.SizeList;
109
+ this.addSize.SingleSelection = true;
110
+ this.addSize.SelectedItems = 12;
111
+ this.addSize.NotFoundText = this.l('NoResultFound');
112
+ this.addRequired = new ToggleSlideOptions();
113
+ this.addRequired.Name = 'IsRequired';
114
+ this.addRequired.LabelKey = 'IsRequired';
115
+ this.addRequired.LabelDescription = this.l('RequiredDescriptionHint');
116
+ this.addAllowScore = new ToggleSlideOptions();
117
+ this.addAllowScore.Name = 'IsAllowScoring';
118
+ this.addAllowScore.LabelKey = 'AllowScore';
119
+ this.addAllowScore.LabelDescription = this.l('AllowScoreDescription');
120
+ this.addHasSearch = new ToggleSlideOptions();
121
+ this.addHasSearch.Name = 'HasSearch';
122
+ this.addHasSearch.LabelKey = 'HasSearch';
123
+ this.addIsActive = new ToggleSlideOptions();
124
+ this.addIsActive.Name = 'IsVisible';
125
+ this.addIsActive.LabelKey = 'Visible';
126
+ this.addIsActive.Value = true;
127
+ this.addIsActive.LabelDescription = this.l('GenericVisibleHint');
128
+ this.addMaxLength = new TextBoxOptions();
129
+ this.addMaxLength.Name = 'MaxLength';
130
+ this.addMaxLength.LabelKey = 'MaxLength';
131
+ this.addMaxLength.IsRequired = true;
132
+ this.addMaxLength.NumberRange = new RangeNumber();
133
+ this.addMaxLength.Type = InputType.Number;
134
+ this.addMaxLength.LabelDescription = this.l('MaxHint');
135
+ this.addMinLength = new TextBoxOptions();
136
+ this.addMinLength.Name = 'MinLength';
137
+ this.addMinLength.LabelKey = 'MinLength';
138
+ this.addMinLength.IsRequired = true;
139
+ this.addMinLength.NumberRange = new RangeNumber();
140
+ this.addMinLength.Type = InputType.Number;
141
+ this.addMinLength.LabelDescription = this.l('MinHint');
142
+ this.addRowsNumber = new TextBoxOptions();
143
+ this.addRowsNumber.Name = 'Rows';
144
+ this.addRowsNumber.LabelKey = 'Rows';
145
+ this.addRowsNumber.IsRequired = true;
146
+ this.addRowsNumber.NumberRange = new RangeNumber();
147
+ this.addRowsNumber.NumberRange.From = 1;
148
+ this.addRowsNumber.NumberRange.To = 20;
149
+ this.addRowsNumber.Type = InputType.Number;
150
+ this.addMaxFileSize = new TextBoxOptions();
151
+ this.addMaxFileSize.Name = 'MaxFileSizeInMB';
152
+ this.addMaxFileSize.LabelKey = 'MaxFileSizeInMB';
153
+ this.addMaxFileSize.IsRequired = true;
154
+ this.addMaxFileSize.NumberRange = new RangeNumber();
155
+ this.addMaxFileSize.NumberRange.From = 1;
156
+ this.addMaxFileSize.NumberRange.To = 100;
157
+ this.addMaxFileSize.Type = InputType.Number;
158
+ this.addMaxFileCount = new TextBoxOptions();
159
+ this.addMaxFileCount.Name = 'MaxFileCount';
160
+ this.addMaxFileCount.LabelKey = 'MaxFilesCount';
161
+ this.addMaxFileCount.IsRequired = true;
162
+ this.addMaxFileCount.NumberRange = new RangeNumber();
163
+ this.addMaxFileCount.NumberRange.From = 1;
164
+ this.addMaxFileCount.NumberRange.To = 50;
165
+ this.addMaxFileCount.Type = InputType.Number;
166
+ this.addMaxFileCount.LabelDescription = this.l('MaxFileCountHint');
167
+ this.addMaxFileCount.CustomValidation = [this.numberValidation];
168
+ this.addFilesExtensions = new DropdownOptions();
169
+ this.addFilesExtensions.Name = 'AllowedExtensions';
170
+ this.addFilesExtensions.LabelKey = 'Extensions';
171
+ this.addFilesExtensions.IsRequired = true;
172
+ this.addFilesExtensions.AllowSearchFilter = true;
173
+ this.addFilesExtensions.DataSource = result.extensions;
174
+ this.addFilesExtensions.SingleSelection = false;
175
+ this.addFilesExtensions.LabelDescription = this.l('ExtensionHint');
176
+ this.addFilesExtensions.NotFoundText = this.l('NoResultFound');
177
+ this.addModelForm.addValidators(this.fromTo('MinLength', 'MaxLength'));
178
+ this.addNameOption = new MultiLingualTextBoxOptions();
179
+ this.addNameOption.Name = 'NameOption';
180
+ this.addNameOption.ArabicLabelKey = 'NameInArabic';
181
+ this.addNameOption.EnglishLabelKey = 'NameInEnglish';
182
+ this.addNameOption.IsRequired = true;
183
+ this.addNameOption.MaxLength = 225;
184
+ this.addNameOption.LanguageMode = this.getLanguageModeValue();
185
+ this.displayOrderOption = new TextBoxOptions();
186
+ this.displayOrderOption.Name = 'DisplayOrder';
187
+ this.scoreNumber = new TextBoxOptions();
188
+ this.scoreNumber.Name = 'Score';
189
+ this.scoreNumber.LabelKey = 'Score';
190
+ this.scoreNumber.IsRequired = true;
191
+ this.scoreNumber.Type = InputType.Number;
192
+ let rangeNumber = new RangeNumber();
193
+ rangeNumber.To = 1000000;
194
+ rangeNumber.From = 1;
195
+ this.scoreNumber.NumberRange = rangeNumber;
196
+ this.addOptionLinkedQuestions = new DropdownOptions();
197
+ this.addOptionLinkedQuestions.Name = 'LinkedQuestions';
198
+ this.addOptionLinkedQuestions.LabelKey = 'LinkedQuestions';
199
+ this.addOptionLinkedQuestions.AllowSearchFilter = true;
200
+ this.addOptionLinkedQuestions.DataSource = result.questions;
201
+ this.addOptionLinkedQuestions.SingleSelection = false;
202
+ this.addOptionLinkedQuestions.NotFoundText = this.l('NoResultFound');
203
+ this.addOptionLinkedQuestions.LabelDescription = this.l('LinkedQuestionDescriptionHint');
204
+ this.openModal(this.AddModal, 'xl');
205
+ this.stopBlockUI();
206
+ });
207
+ };
208
+ this.getAddModel = () => {
209
+ let paramArray = [];
210
+ let resultOptionModel = this.addOptionForm.value;
211
+ let resultModel = this.addModelForm.value;
212
+ if (this.isSelect) {
213
+ if ((resultOptionModel.NameOption.Arabic != undefined &&
214
+ resultOptionModel.NameOption.Arabic != '') ||
215
+ (resultOptionModel.NameOption.English != undefined &&
216
+ resultOptionModel.NameOption.English != '') ||
217
+ (resultOptionModel.Score != undefined && resultOptionModel.Score > 0)) {
218
+ this.errorMessage = this.l('OptionPendingDataErrorMessage');
219
+ return;
220
+ }
221
+ if (this.optionList.length == 0 && this.isSelect) {
222
+ this.errorMessage = this.l('OptionErrorMessage');
223
+ return;
224
+ }
225
+ }
226
+ this.errorMessage = null;
227
+ let addModel = new SurveyQuestionDTO();
228
+ addModel.SurveyID = this.surveyID;
229
+ addModel.Text.Arabic = resultModel.Text.Arabic;
230
+ addModel.Text.English = resultModel.Text.English;
231
+ addModel.Description.Arabic = resultModel.Description.Arabic;
232
+ addModel.Description.English = resultModel.Description.English;
233
+ addModel.Options.Description.Arabic = resultModel.Description.Arabic;
234
+ addModel.Options.Description.English = resultModel.Description.English;
235
+ if (this.audienceTypeID == AudienceType.Both)
236
+ addModel.AudienceItemID = resultModel.AudienceItemID;
237
+ else
238
+ addModel.AudienceItemID = this.audienceTypeID;
239
+ addModel.QuestionTypeItemID = resultModel.QuestionTypeItemID;
240
+ addModel.IsAllowScoring = resultModel.IsAllowScoring;
241
+ addModel.Options.Size = resultModel.Size;
242
+ addModel.Options.IsRequired = resultModel.IsRequired;
243
+ addModel.IsRequired = resultModel.IsRequired;
244
+ addModel.IsVisible = resultModel.IsVisible;
245
+ addModel.Options.HasSearch = resultModel.HasSearch;
246
+ if (this.isText || this.isNumber) {
247
+ addModel.Options.MinLength = resultModel.MinLength;
248
+ addModel.Options.MaxLength = resultModel.MaxLength;
249
+ }
250
+ if (this.isFile || this.isMultiFile || this.isImage)
251
+ addModel.Options.MaxFileSizeInMB = resultModel.MaxFileSizeInMB;
252
+ if (this.isMultiFile)
253
+ addModel.Options.MaxFileCount = resultModel.MaxFileCount;
254
+ if (this.isMultiFile || this.isFile)
255
+ addModel.Options.AllowedExtensions = resultModel.AllowedExtensions;
256
+ if (this.isSelect)
257
+ if (this.optionList.length > 0) {
258
+ for (let index = 0; index < this.optionList.length; index++) {
259
+ this.optionList[index].DisplayOrder = index + 1;
260
+ }
261
+ addModel.QuestionOptions = this.optionList;
262
+ }
263
+ paramArray.push(addModel);
264
+ return paramArray;
265
+ };
266
+ this.getAddFunction = (addModal) => {
267
+ if (!this.errorMessage)
268
+ return this.surveyQuestionService.add(addModal);
269
+ };
270
+ this.isValidTypeBoolean = true;
271
+ }
272
+ ngOnInit() {
273
+ for (let index = 0; index < 12; index++) {
274
+ var item = { key: index + 1, value: `${index + 1}` };
275
+ this.SizeList.push(item);
276
+ }
277
+ this.numberValidation.functionBody = (control) => {
278
+ if (!control.value) {
279
+ return null;
280
+ }
281
+ if (!control.value.toString().match(/^[0-9]*$/)) {
282
+ this.numberValidation.massage = this.l('IntegerNumberValidationKey');
283
+ return { customerError: true };
284
+ }
285
+ if (!control.value.toString().match(/^[+]?([.]\d+|\d+[.]?\d*)$/)) {
286
+ this.numberValidation.massage = this.l('PositiveNumberValidationKey');
287
+ return { customerError: true };
288
+ }
289
+ return null;
290
+ };
291
+ }
292
+ changeScoring(value) {
293
+ this.showScoreOption = value;
294
+ if (!value && this.addOptionForm.controls['Score']) {
295
+ this.addOptionForm.controls['Score'].reset();
296
+ this.addOptionForm.controls['Score'].clearValidators();
297
+ this.addOptionForm.controls['Score'].updateValueAndValidity();
298
+ }
299
+ }
300
+ updateLengthValidator(name, max, min) {
301
+ let control = this.addOptionForm.controls[name];
302
+ if (control) {
303
+ control.setErrors(null);
304
+ control.clearValidators();
305
+ control.updateValueAndValidity();
306
+ let validationRules = [];
307
+ validationRules.push(Validators.min(min));
308
+ validationRules.push(Validators.max(max));
309
+ validationRules.push(Validators.required);
310
+ control.addValidators(validationRules);
311
+ control.updateValueAndValidity();
312
+ }
313
+ }
314
+ changeDataType(key) {
315
+ this.updateFormStatus(key);
316
+ switch (key) {
317
+ case SurveyOptionType.Text:
318
+ this.updateLengthValidator(this.addMaxLength.Name, 255, 1);
319
+ this.updateLengthValidator(this.addMinLength.Name, 255, 1);
320
+ this.addMaxLength.NumberRange.From = 1;
321
+ this.addMaxLength.NumberRange.To = 255;
322
+ this.addMinLength.NumberRange.From = 1;
323
+ this.addMinLength.NumberRange.To = 255;
324
+ this.isText = true;
325
+ this.isNumber = false;
326
+ this.isFile = false;
327
+ this.isMultiFile = false;
328
+ this.isImage = false;
329
+ this.isSelect = false;
330
+ break;
331
+ case SurveyOptionType.MultilineText:
332
+ this.updateLengthValidator(this.addMaxLength.Name, 4000, 1);
333
+ this.updateLengthValidator(this.addMinLength.Name, 4000, 1);
334
+ this.addMaxLength.NumberRange.From = 1;
335
+ this.addMaxLength.NumberRange.To = 4000;
336
+ this.addMinLength.NumberRange.From = 1;
337
+ this.addMinLength.NumberRange.To = 4000;
338
+ this.isText = true;
339
+ this.isNumber = false;
340
+ this.isFile = false;
341
+ this.isMultiFile = false;
342
+ this.isImage = false;
343
+ this.isSelect = false;
344
+ break;
345
+ case SurveyOptionType.Number:
346
+ this.updateLengthValidator(this.addMaxLength.Name, 100, 1);
347
+ this.updateLengthValidator(this.addMinLength.Name, 100, 1);
348
+ this.addMaxLength.NumberRange.From = 1;
349
+ this.addMaxLength.NumberRange.To = 100;
350
+ this.addMinLength.NumberRange.From = 1;
351
+ this.addMinLength.NumberRange.To = 100;
352
+ this.isNumber = true;
353
+ this.isText = false;
354
+ this.isFile = false;
355
+ this.isMultiFile = false;
356
+ this.isImage = false;
357
+ this.isSelect = false;
358
+ break;
359
+ case SurveyOptionType.File:
360
+ this.isFile = true;
361
+ this.isNumber = false;
362
+ this.isText = false;
363
+ this.isMultiFile = false;
364
+ this.isImage = false;
365
+ this.isSelect = false;
366
+ break;
367
+ case SurveyOptionType.MultiFile:
368
+ this.isMultiFile = true;
369
+ this.isNumber = false;
370
+ this.isText = false;
371
+ this.isFile = false;
372
+ this.isImage = false;
373
+ this.isSelect = false;
374
+ break;
375
+ case SurveyOptionType.Image:
376
+ this.isImage = true;
377
+ this.isMultiFile = false;
378
+ this.isNumber = false;
379
+ this.isText = false;
380
+ this.isFile = false;
381
+ this.isSelect = false;
382
+ break;
383
+ case SurveyOptionType.MultipleSelect:
384
+ case SurveyOptionType.SingleSelect:
385
+ case SurveyOptionType.RadioButton:
386
+ this.isNumber = false;
387
+ this.isText = false;
388
+ this.isFile = false;
389
+ this.isMultiFile = false;
390
+ this.isSelect = true;
391
+ this.isImage = false;
392
+ break;
393
+ default:
394
+ this.isNumber = false;
395
+ this.isText = false;
396
+ this.isFile = false;
397
+ this.isMultiFile = false;
398
+ this.isSelect = false;
399
+ this.isImage = false;
400
+ break;
401
+ }
402
+ this.ngWizardService.reset();
403
+ }
404
+ getLinkedQuestions(option) {
405
+ return this.Questions.filter((item) => option.LinkedQuestions.includes(item.key)).map((item) => item.value);
406
+ }
407
+ AddOption() {
408
+ this.totalScore = 0;
409
+ this.addOptionForm.markAllAsTouched();
410
+ if (this.addOptionForm.invalid) {
411
+ return;
412
+ }
413
+ let resultModel = this.addOptionForm.value;
414
+ if (this.optionList.length >= 1 && this.showScoreOption) {
415
+ for (let index = 0; index < this.optionList.length; index++) {
416
+ let element = this.optionList[index].Score;
417
+ if (element > 1000000) {
418
+ this.errorMessage = this.l('MaxOptionScoreErrorMessage');
419
+ return;
420
+ }
421
+ if (element < 1) {
422
+ this.errorMessage = this.l('MinOptionScoreErrorMessage');
423
+ return;
424
+ }
425
+ }
426
+ }
427
+ this.showOptionList = false;
428
+ this.errorMessage = null;
429
+ let option = new SurveyQuestionOptionDTO();
430
+ option.Name.Arabic = resultModel.NameOption.Arabic;
431
+ option.Name.English = resultModel.NameOption.English;
432
+ debugger;
433
+ if (resultModel.DisplayOrder)
434
+ option.DisplayOrder = resultModel.DisplayOrder;
435
+ else
436
+ option.DisplayOrder = this.optionList.length + 1;
437
+ option.LinkedQuestions = resultModel.LinkedQuestions;
438
+ if (this.showScoreOption)
439
+ option.Score = Number.parseFloat(resultModel.Score);
440
+ this.addOptionForm.reset();
441
+ this.addOptionForm.controls['NameOption'].reset();
442
+ this.addOptionForm.controls['DisplayOrder'].reset();
443
+ this.addOptionForm.controls['LinkedQuestions'].reset();
444
+ if (this.showScoreOption)
445
+ this.addOptionForm.controls['Score'].reset();
446
+ this.optionList.splice(option.DisplayOrder - 1, 0, option);
447
+ this.showOptionList = true;
448
+ this.isOptionInEditMode = false;
449
+ }
450
+ getOptionByOrder(index, option) {
451
+ return option.DisplayOrder;
452
+ }
453
+ deleteOption(option) {
454
+ this.optionList = this.optionList.filter((item) => item != option);
455
+ }
456
+ editOption(option) {
457
+ debugger;
458
+ if ((this.addOptionForm.touched == true && this.addOptionForm.valid) ||
459
+ this.addOptionForm.touched == false)
460
+ this.AddOption();
461
+ else {
462
+ this.addOptionForm.markAllAsTouched();
463
+ return;
464
+ }
465
+ let name = new EnglishArabicDTO();
466
+ name.Arabic = option.Name.Arabic ?? null;
467
+ name.English = option.Name.English ?? null;
468
+ this.addOptionForm.controls['NameOption'].setValue(name);
469
+ this.addOptionForm.controls['DisplayOrder'].setValue(option.DisplayOrder);
470
+ this.addOptionForm.controls['LinkedQuestions'].setValue(option.LinkedQuestions);
471
+ if (this.showScoreOption)
472
+ this.addOptionForm.controls['Score'].setValue(option.Score);
473
+ this.optionList = this.optionList.filter((item) => item != option);
474
+ this.isOptionInEditMode = true;
475
+ }
476
+ fromTo(fromField, toField) {
477
+ return (formGroup) => {
478
+ const fromDate = formGroup.get(fromField);
479
+ const toDate = formGroup.get(toField);
480
+ if (fromDate !== null && toDate !== null) {
481
+ if (fromDate.value !== null &&
482
+ toDate.value !== null &&
483
+ parseInt(fromDate.value) > parseInt(toDate.value)) {
484
+ fromDate.markAsTouched();
485
+ toDate.markAsTouched();
486
+ toDate.setErrors({
487
+ errorMassage: this.l('GreaterThanOrEqualTo'),
488
+ });
489
+ return null;
490
+ }
491
+ if (fromDate.value !== null &&
492
+ toDate.value !== null &&
493
+ parseInt(fromDate.value) < parseInt(toDate.value) &&
494
+ parseInt(toDate.value) < 255 &&
495
+ parseInt(fromDate.value) < 255)
496
+ toDate.setErrors(null);
497
+ }
498
+ return null;
499
+ };
500
+ }
501
+ updateFormStatus(key) {
502
+ switch (key) {
503
+ case SurveyOptionType.Text:
504
+ case SurveyOptionType.MultilineText:
505
+ if (this.addModelForm.get(this.addMaxLength.Name))
506
+ this.addRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
507
+ if (this.addModelForm.get(this.addMinLength.Name))
508
+ this.addRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
509
+ if (this.addModelForm.get(this.addMaxFileSize.Name))
510
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
511
+ if (this.addModelForm.get(this.addMaxFileCount.Name))
512
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
513
+ if (this.addModelForm.get(this.addFilesExtensions.Name))
514
+ this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
515
+ break;
516
+ case SurveyOptionType.Number:
517
+ if (this.addModelForm.get(this.addMaxLength.Name))
518
+ this.addRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
519
+ if (this.addModelForm.get(this.addMinLength.Name))
520
+ this.addRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
521
+ if (this.addModelForm.get(this.addMaxFileSize.Name))
522
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
523
+ if (this.addModelForm.get(this.addMaxFileCount.Name))
524
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
525
+ if (this.addModelForm.get(this.addFilesExtensions.Name))
526
+ this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
527
+ break;
528
+ case SurveyOptionType.File:
529
+ if (this.addModelForm.get(this.addMaxLength.Name))
530
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
531
+ if (this.addModelForm.get(this.addMinLength.Name))
532
+ this.removeRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
533
+ if (this.addModelForm.get(this.addMaxFileSize.Name))
534
+ this.addRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
535
+ if (this.addModelForm.get(this.addMaxFileCount.Name))
536
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
537
+ if (this.addModelForm.get(this.addFilesExtensions.Name))
538
+ this.addRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
539
+ break;
540
+ case SurveyOptionType.MultiFile:
541
+ if (this.addModelForm.get(this.addMaxLength.Name))
542
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
543
+ if (this.addModelForm.get(this.addMinLength.Name))
544
+ this.removeRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
545
+ if (this.addModelForm.get(this.addMaxFileSize.Name))
546
+ this.addRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
547
+ if (this.addModelForm.get(this.addMaxFileCount.Name))
548
+ this.addRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
549
+ if (this.addModelForm.get(this.addFilesExtensions.Name))
550
+ this.addRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
551
+ break;
552
+ case SurveyOptionType.Image:
553
+ if (this.addModelForm.get(this.addMaxLength.Name))
554
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
555
+ if (this.addModelForm.get(this.addMinLength.Name))
556
+ this.removeRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
557
+ if (this.addModelForm.get(this.addMaxFileSize.Name))
558
+ this.addRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
559
+ if (this.addModelForm.get(this.addMaxFileCount.Name))
560
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
561
+ if (this.addModelForm.get(this.addFilesExtensions.Name))
562
+ this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
563
+ break;
564
+ case SurveyOptionType.MultipleSelect:
565
+ case SurveyOptionType.SingleSelect:
566
+ if (this.addModelForm.get(this.addMaxLength.Name))
567
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
568
+ if (this.addModelForm.get(this.addMinLength.Name))
569
+ this.removeRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
570
+ if (this.addModelForm.get(this.addMaxFileSize.Name))
571
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
572
+ if (this.addModelForm.get(this.addMaxFileCount.Name))
573
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
574
+ if (this.addModelForm.get(this.addFilesExtensions.Name))
575
+ this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
576
+ break;
577
+ default:
578
+ if (this.addModelForm.get(this.addMaxLength.Name))
579
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxLength.Name), this.addMaxLength);
580
+ if (this.addModelForm.get(this.addMinLength.Name))
581
+ this.removeRequiredRule(this.addModelForm.get(this.addMinLength.Name), this.addMinLength);
582
+ if (this.addModelForm.get(this.addMaxFileSize.Name))
583
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxFileSize.Name), this.addMaxFileSize);
584
+ if (this.addModelForm.get(this.addMaxFileCount.Name))
585
+ this.removeRequiredRule(this.addModelForm.get(this.addMaxFileCount.Name), this.addMaxFileCount);
586
+ if (this.addModelForm.get(this.addFilesExtensions.Name))
587
+ this.removeRequiredRule(this.addModelForm.get(this.addFilesExtensions.Name), this.addFilesExtensions);
588
+ break;
589
+ }
590
+ }
591
+ isValidFunctionReturnsBoolean(args) {
592
+ let returnValue = true;
593
+ this.mainFormControls = [];
594
+ this.mainFormControls.push(this.addModelForm.get(this.addQuestion.Name), this.addModelForm.get(this.addDescription.Name), this.addModelForm.get(this.addQuestionType.Name), this.addModelForm.get(this.audience.Name));
595
+ if (args.fromStep.index == 0)
596
+ for (var i = 0; i < this.mainFormControls.length; i++) {
597
+ this.mainFormControls[i].markAllAsTouched();
598
+ if (!this.mainFormControls[i].valid)
599
+ returnValue = false;
600
+ }
601
+ return returnValue;
602
+ }
603
+ isValidFunctionReturnsObservable(args) {
604
+ return of(true);
605
+ }
606
+ //drag and drop
607
+ drop(event) {
608
+ moveItemInArray(this.optionList, event.previousIndex, event.currentIndex);
609
+ }
610
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AddQuestionComponent, deps: [{ token: i0.Injector }, { token: i1.SurveyQuestionService }, { token: i2.NgWizardService }], target: i0.ɵɵFactoryTarget.Component }); }
611
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: AddQuestionComponent, selector: "app-add-question", inputs: { pagingElement: "pagingElement", onSuccessAddHandler: "onSuccessAddHandler" }, viewQueries: [{ propertyName: "AddModal", first: true, predicate: ["AddModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #AddModal let-modal>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">\r\n {{l(\"Add_Question\")}}\r\n </h4>\r\n <button type=\"button\" data-dismiss=\"modal\" class=\"btn btn-icon btn-sm\" (click)=\"modal.dismiss()\">\r\n <div class=\"svg-icon svg-icon-1 svg-icon-hover-brand\" [inlineSVG]=\"'/assets/images/modalclose.svg'\">\r\n </div>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <BBSF-Form [options]=\"addSurveyQuestionFormOptions\">\r\n <BBSF-MultiLingualTextBox [options]=\"addQuestion\" [group]=\"addModelForm\"></BBSF-MultiLingualTextBox>\r\n <BBSF-MultiLingualTextArea [options]=\"addDescription\" [group]=\"addModelForm\"></BBSF-MultiLingualTextArea>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"audienceTypeID==audienceType.Both\">\r\n <BBSF-DropdownList [options]=\"audience\" [group]=\"addModelForm\"></BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addQuestionType\" [group]=\"addModelForm\" (OnChange)=\"changeDataType($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addSize\" [group]=\"addModelForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isSelect\" >\r\n <BBSF-Toggleslide [options]=\"addAllowScore\" [group]=\"addModelForm\" (OnChange)=\"changeScoring($event)\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"addIsActive\" [group]=\"addModelForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6 col-sm-6\">\r\n <BBSF-Toggleslide [options]=\"addRequired\" [group]=\"addModelForm\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"isText||isNumber\">\r\n <BBSF-TextBox [options]=\"addMinLength\" *ngIf=\"isText||isNumber\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isText||isNumber\">\r\n <BBSF-TextBox [options]=\"addMaxLength\" *ngIf=\"isText||isNumber\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"isFile||isMultiFile||isImage\">\r\n <BBSF-TextBox [options]=\"addMaxFileSize\" *ngIf=\"isFile||isMultiFile||isImage\" [group]=\"addModelForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isMultiFile\">\r\n <BBSF-TextBox [options]=\"addMaxFileCount\" *ngIf=\"isMultiFile\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isFile||isMultiFile\">\r\n <BBSF-DropdownList [options]=\"addFilesExtensions\" *ngIf=\"isFile||isMultiFile\" [group]=\"addModelForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isSelect\" class=\"question-type-option\">\r\n <h5 class=\"mb-4\">{{l('Options')}}</h5>\r\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\" *ngIf=\"showOptionList\">\r\n <div class=\"card card-listing\" *ngFor=\"let Option of optionList;\" cdkDrag>\r\n <div class=\"card-header mb-0\">\r\n <div class=\"title fs-6 fw-bolder\">\r\n {{getCurrentFailOver(Option.Name)}}\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <span class=\"badge badge-square badge-dark me-4\" *ngIf=\"showScoreOption\" ngbTooltip=\"{{l('Score')}}\">\r\n {{Option.Score}}\r\n </span>\r\n\r\n <div class=\"badge badge-square badge-brand cursor-pointer me-4\" *ngIf=\"Option.LinkedQuestions?.length>0\" ngbTooltip=\"{{getLinkedQuestions(Option)}}\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n </div>\r\n\r\n <div class=\"badge badge-square badge-brand cursor-pointer me-4\" (click)=\"editOption(Option)\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" ngbTooltip=\"{{l('Edit')}}\" [inlineSVG]=\"'/assets/images/Edit.svg'\">\r\n </span>\r\n </div>\r\n <div class=\"badge badge-square badge-danger cursor-pointer\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" ngbTooltip=\"{{l('Delete')}}\" [inlineSVG]=\"'/assets/images/Trash.svg'\"\r\n (click)=\"deleteOption(Option)\" apppreventdoubleclick>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"survey-alert-danger alert-danger\" *ngIf=\"errorMessage\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-danger me-4\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n <div class=\"fw-bold\"><div class=\"fs-7 text-danger\">{{errorMessage}}</div></div>\r\n </div>\r\n <div class=\"repeater-bg\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"addNameOption\" [group]=\"addOptionForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addOptionLinkedQuestions\" [group]=\"addOptionForm\">\r\n </BBSF-DropdownList>\r\n <BBSF-TextBox [options]=\"displayOrderOption\" [group]=\"addOptionForm\" hidden></BBSF-TextBox>\r\n\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"showScoreOption\">\r\n <BBSF-TextBox [options]=\"scoreNumber\" [group]=\"addOptionForm\"></BBSF-TextBox>\r\n </div>\r\n\r\n </div>\r\n <button type=\"button\" (click)=\"AddOption()\" *ngIf=\"!isOptionInEditMode\" class=\"btn btn-sm btn-brand w-100\">{{l(\"Add\")}}</button>\r\n <button type=\"button\" (click)=\"AddOption()\" *ngIf=\"isOptionInEditMode\" class=\"btn btn-sm btn-brand w-100\">{{l(\"Edit\")}}</button>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"modal-footer pb-0 m-0\" >\r\n <button type=\"button\" class=\"btn btn-sm btn-light\" (click)=\"modal.dismiss()\">\r\n {{l(\"Cancel\")}}\r\n </button>\r\n <button appPreventDoubleClick type=\"submit\" class=\"btn btn-sm btn-brand\">{{l(\"Save\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i4.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange", "OnBlur"] }, { kind: "component", type: i4.MultiLingualTextAreaComponent, selector: "BBSF-MultiLingualTextArea", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i4.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { kind: "component", type: i4.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i4.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["OnChange"] }, { kind: "directive", type: i5.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i6.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }] }); }
612
+ }
613
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AddQuestionComponent, decorators: [{
614
+ type: Component,
615
+ args: [{ selector: 'app-add-question', template: "<ng-template #AddModal let-modal>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">\r\n {{l(\"Add_Question\")}}\r\n </h4>\r\n <button type=\"button\" data-dismiss=\"modal\" class=\"btn btn-icon btn-sm\" (click)=\"modal.dismiss()\">\r\n <div class=\"svg-icon svg-icon-1 svg-icon-hover-brand\" [inlineSVG]=\"'/assets/images/modalclose.svg'\">\r\n </div>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <BBSF-Form [options]=\"addSurveyQuestionFormOptions\">\r\n <BBSF-MultiLingualTextBox [options]=\"addQuestion\" [group]=\"addModelForm\"></BBSF-MultiLingualTextBox>\r\n <BBSF-MultiLingualTextArea [options]=\"addDescription\" [group]=\"addModelForm\"></BBSF-MultiLingualTextArea>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"audienceTypeID==audienceType.Both\">\r\n <BBSF-DropdownList [options]=\"audience\" [group]=\"addModelForm\"></BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addQuestionType\" [group]=\"addModelForm\" (OnChange)=\"changeDataType($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addSize\" [group]=\"addModelForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isSelect\" >\r\n <BBSF-Toggleslide [options]=\"addAllowScore\" [group]=\"addModelForm\" (OnChange)=\"changeScoring($event)\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"addIsActive\" [group]=\"addModelForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6 col-sm-6\">\r\n <BBSF-Toggleslide [options]=\"addRequired\" [group]=\"addModelForm\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"isText||isNumber\">\r\n <BBSF-TextBox [options]=\"addMinLength\" *ngIf=\"isText||isNumber\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isText||isNumber\">\r\n <BBSF-TextBox [options]=\"addMaxLength\" *ngIf=\"isText||isNumber\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"isFile||isMultiFile||isImage\">\r\n <BBSF-TextBox [options]=\"addMaxFileSize\" *ngIf=\"isFile||isMultiFile||isImage\" [group]=\"addModelForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isMultiFile\">\r\n <BBSF-TextBox [options]=\"addMaxFileCount\" *ngIf=\"isMultiFile\" [group]=\"addModelForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"isFile||isMultiFile\">\r\n <BBSF-DropdownList [options]=\"addFilesExtensions\" *ngIf=\"isFile||isMultiFile\" [group]=\"addModelForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isSelect\" class=\"question-type-option\">\r\n <h5 class=\"mb-4\">{{l('Options')}}</h5>\r\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\" *ngIf=\"showOptionList\">\r\n <div class=\"card card-listing\" *ngFor=\"let Option of optionList;\" cdkDrag>\r\n <div class=\"card-header mb-0\">\r\n <div class=\"title fs-6 fw-bolder\">\r\n {{getCurrentFailOver(Option.Name)}}\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <span class=\"badge badge-square badge-dark me-4\" *ngIf=\"showScoreOption\" ngbTooltip=\"{{l('Score')}}\">\r\n {{Option.Score}}\r\n </span>\r\n\r\n <div class=\"badge badge-square badge-brand cursor-pointer me-4\" *ngIf=\"Option.LinkedQuestions?.length>0\" ngbTooltip=\"{{getLinkedQuestions(Option)}}\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n </div>\r\n\r\n <div class=\"badge badge-square badge-brand cursor-pointer me-4\" (click)=\"editOption(Option)\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" ngbTooltip=\"{{l('Edit')}}\" [inlineSVG]=\"'/assets/images/Edit.svg'\">\r\n </span>\r\n </div>\r\n <div class=\"badge badge-square badge-danger cursor-pointer\">\r\n <span class=\"svg-icon svg-icon-4 svg-icon-white\" ngbTooltip=\"{{l('Delete')}}\" [inlineSVG]=\"'/assets/images/Trash.svg'\"\r\n (click)=\"deleteOption(Option)\" apppreventdoubleclick>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"survey-alert-danger alert-danger\" *ngIf=\"errorMessage\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-danger me-4\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n <div class=\"fw-bold\"><div class=\"fs-7 text-danger\">{{errorMessage}}</div></div>\r\n </div>\r\n <div class=\"repeater-bg\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"addNameOption\" [group]=\"addOptionForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"addOptionLinkedQuestions\" [group]=\"addOptionForm\">\r\n </BBSF-DropdownList>\r\n <BBSF-TextBox [options]=\"displayOrderOption\" [group]=\"addOptionForm\" hidden></BBSF-TextBox>\r\n\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"showScoreOption\">\r\n <BBSF-TextBox [options]=\"scoreNumber\" [group]=\"addOptionForm\"></BBSF-TextBox>\r\n </div>\r\n\r\n </div>\r\n <button type=\"button\" (click)=\"AddOption()\" *ngIf=\"!isOptionInEditMode\" class=\"btn btn-sm btn-brand w-100\">{{l(\"Add\")}}</button>\r\n <button type=\"button\" (click)=\"AddOption()\" *ngIf=\"isOptionInEditMode\" class=\"btn btn-sm btn-brand w-100\">{{l(\"Edit\")}}</button>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"modal-footer pb-0 m-0\" >\r\n <button type=\"button\" class=\"btn btn-sm btn-light\" (click)=\"modal.dismiss()\">\r\n {{l(\"Cancel\")}}\r\n </button>\r\n <button appPreventDoubleClick type=\"submit\" class=\"btn btn-sm btn-brand\">{{l(\"Save\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n\r\n</ng-template>\r\n" }]
616
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.SurveyQuestionService }, { type: i2.NgWizardService }], propDecorators: { AddModal: [{
617
+ type: ViewChild,
618
+ args: ['AddModal', { static: false }]
619
+ }], pagingElement: [{
620
+ type: Input
621
+ }], onSuccessAddHandler: [{
622
+ type: Input
623
+ }] } });
624
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXF1ZXN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvc2hhcmVkL2NvbXBvbmVudHMvc3VydmV5L3N1cnZleS1pbmZvL2FkZC1xdWVzdGlvbi9hZGQtcXVlc3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9zaGFyZWQvY29tcG9uZW50cy9zdXJ2ZXkvc3VydmV5LWluZm8vYWRkLXF1ZXN0aW9uL2FkZC1xdWVzdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUNMLFNBQVMsRUFHVCxLQUFLLEVBRUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsU0FBUyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JGLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsZ0JBQWdCLEVBRWhCLFdBQVcsRUFDWCxTQUFTLEVBQ1QsMkJBQTJCLEVBQzNCLDBCQUEwQixFQUMxQixXQUFXLEVBQ1gsY0FBYyxFQUNkLGtCQUFrQixHQUNuQixNQUFNLHlCQUF5QixDQUFDO0FBU2pDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFN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QUMsRUFBRSxFQUFFO2dCQUNyRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO29CQUFFLFdBQVcsR0FBRyxLQUFLLENBQUM7YUFDMUQ7UUFDSCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsZ0NBQWdDLENBQUMsSUFBd0I7UUFDdkQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELGVBQWU7SUFDZixJQUFJLENBQUMsS0FBNEI7UUFDL0IsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDNUUsQ0FBQzs4R0FyeUJVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLDZRQzNDakMsK21PQW1JQTs7MkZEeEZhLG9CQUFvQjtrQkFKaEMsU0FBUzsrQkFDRSxrQkFBa0I7K0lBZ0NjLFFBQVE7c0JBQWpELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkEwQi9CLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBBcHBCYXNlQ29tcG9uZW50LFxyXG4gIENvbnRyb2xMYXlvdXQsXHJcbiAgQ3VzdG9tVmFsaWRhdGlvbixcclxuICBEcm9wZG93bk9wdGlvbnMsXHJcbiAgRW5nbGlzaEFyYWJpY0RUTyxcclxuICBGb3JjZURpcmVjdGlvbixcclxuICBGb3JtT3B0aW9ucyxcclxuICBJbnB1dFR5cGUsXHJcbiAgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zLFxyXG4gIE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zLFxyXG4gIFJhbmdlTnVtYmVyLFxyXG4gIFRleHRCb3hPcHRpb25zLFxyXG4gIFRvZ2dsZVNsaWRlT3B0aW9ucyxcclxufSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7XHJcbiAgTmdXaXphcmRDb25maWcsXHJcbiAgTmdXaXphcmRTZXJ2aWNlLFxyXG4gIFN0ZXBDaGFuZ2VkQXJncyxcclxuICBTdGVwVmFsaWRhdGlvbkFyZ3MsXHJcbiAgU1RFUF9TVEFURSxcclxuICBUSEVNRSxcclxufSBmcm9tICdAa3JvbnNjaHQvbmctd2l6YXJkJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXVkaWVuY2VUeXBlLCBTdXJ2ZXlPcHRpb25UeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vRW51bXMvRW51bXMnO1xyXG5pbXBvcnQgeyBTdXJ2ZXlRdWVzdGlvbkRUTyB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9TdXJ2ZXlNb2RlbHMvc3VydmV5LXF1ZXN0aW9uJztcclxuaW1wb3J0IHsgU3VydmV5UXVlc3Rpb25PcHRpb25EVE8gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvU3VydmV5TW9kZWxzL3N1cnZleS1xdWVzdGlvbi1vcHRpb24nO1xyXG5pbXBvcnQgeyBTdXJ2ZXlRdWVzdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9TZXJ2aWNlcy9zdXJ2ZXktcXVlc3Rpb24uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1hZGQtcXVlc3Rpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtcXVlc3Rpb24uY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkUXVlc3Rpb25Db21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBxdWVzdGlvblR5cGU6IFN1cnZleU9wdGlvblR5cGU7XHJcbiAgcHVibGljIGF1ZGllbmNlVHlwZSA9IEF1ZGllbmNlVHlwZTtcclxuICBpc051bWJlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzVGV4dDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzRmlsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzTXVsdGlGaWxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNJbWFnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzU2VsZWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgU2l6ZUxpc3Q6IGFueVtdID0gW107XHJcblxyXG4gIGFkZE1vZGVsRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGFkZFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICBhZGRRdWVzdGlvbjogTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnM7XHJcbiAgYWRkRGVzY3JpcHRpb246IE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucztcclxuICBhZGRRdWVzdGlvblR5cGU6IERyb3Bkb3duT3B0aW9ucztcclxuICBhdWRpZW5jZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIGFkZFJlcXVpcmVkOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgYWRkQWxsb3dTY29yZTogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIGFkZEhhc1NlYXJjaDogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIGFkZElzQWN0aXZlOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgYWRkTWluTGVuZ3RoOiBUZXh0Qm94T3B0aW9ucztcclxuICBhZGRNYXhMZW5ndGg6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZFJvd3NOdW1iZXI6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZE1heEZpbGVTaXplOiBUZXh0Qm94T3B0aW9ucztcclxuICBhZGRNYXhGaWxlQ291bnQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZEZpbGVzRXh0ZW5zaW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIGFkZFNpemU6IERyb3Bkb3duT3B0aW9ucztcclxuICBudW1iZXJWYWxpZGF0aW9uOiBDdXN0b21WYWxpZGF0aW9uID0gbmV3IEN1c3RvbVZhbGlkYXRpb24oKTtcclxuICBAVmlld0NoaWxkKCdBZGRNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBBZGRNb2RhbDogRWxlbWVudFJlZjtcclxuXHJcbiAgYWRkT3B0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGFkZE5hbWVPcHRpb246IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIHNjb3JlTnVtYmVyOiBUZXh0Qm94T3B0aW9ucztcclxuICBvcHRpb25MaXN0OiBTdXJ2ZXlRdWVzdGlvbk9wdGlvbkRUT1tdID0gW107XHJcbiAgYWRkT3B0aW9uTGlua2VkUXVlc3Rpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgc2hvd1Njb3JlT3B0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd09wdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBlcnJvck1lc3NhZ2U6IHN0cmluZyA9IG51bGw7XHJcbiAgdG90YWxTY29yZTogbnVtYmVyID0gMDtcclxuICBtYWluRm9ybUNvbnRyb2xzOiBhbnlbXTtcclxuICBzdXJ2ZXlJRDogc3RyaW5nO1xyXG4gIGF1ZGllbmNlVHlwZUlEOiBhbnk7XHJcbiAgZGlzcGxheU9yZGVyT3B0aW9uOiBUZXh0Qm94T3B0aW9ucztcclxuICBzaG93T3B0aW9uTGlzdDogYm9vbGVhbiA9IHRydWU7XHJcbiAgb3JkZXJDaGFuZ2U6IGJvb2xlYW47XHJcbiAgaXNPcHRpb25JbkVkaXRNb2RlOiBib29sZWFuO1xyXG4gIFF1ZXN0aW9uczogYW55O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIHN1cnZleVF1ZXN0aW9uU2VydmljZTogU3VydmV5UXVlc3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuZ1dpemFyZFNlcnZpY2U6IE5nV2l6YXJkU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gIH1cclxuICBASW5wdXQoKSBwYWdpbmdFbGVtZW50O1xyXG4gIEBJbnB1dCgpIG9uU3VjY2Vzc0FkZEhhbmRsZXI7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IDEyOyBpbmRleCsrKSB7XHJcbiAgICAgIHZhciBpdGVtID0geyBrZXk6IGluZGV4ICsgMSwgdmFsdWU6IGAke2luZGV4ICsgMX1gIH07XHJcbiAgICAgIHRoaXMuU2l6ZUxpc3QucHVzaChpdGVtKTtcclxuICAgIH1cclxuICAgIHRoaXMubnVtYmVyVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkgPSAoXHJcbiAgICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbFxyXG4gICAgKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9PiB7XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZS50b1N0cmluZygpLm1hdGNoKC9eWzAtOV0qJC8pKSB7XHJcbiAgICAgICAgdGhpcy5udW1iZXJWYWxpZGF0aW9uLm1hc3NhZ2UgPSB0aGlzLmwoJ0ludGVnZXJOdW1iZXJWYWxpZGF0aW9uS2V5Jyk7XHJcbiAgICAgICAgcmV0dXJuIHsgY3VzdG9tZXJFcnJvcjogdHJ1ZSB9O1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZS50b1N0cmluZygpLm1hdGNoKC9eWytdPyhbLl1cXGQrfFxcZCtbLl0/XFxkKikkLykpIHtcclxuICAgICAgICB0aGlzLm51bWJlclZhbGlkYXRpb24ubWFzc2FnZSA9IHRoaXMubCgnUG9zaXRpdmVOdW1iZXJWYWxpZGF0aW9uS2V5Jyk7XHJcbiAgICAgICAgcmV0dXJuIHsgY3VzdG9tZXJFcnJvcjogdHJ1ZSB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VTY29yaW5nKHZhbHVlKSB7XHJcbiAgICB0aGlzLnNob3dTY29yZU9wdGlvbiA9IHZhbHVlO1xyXG4gICAgaWYgKCF2YWx1ZSAmJiB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbJ1Njb3JlJ10pIHtcclxuICAgICAgdGhpcy5hZGRPcHRpb25Gb3JtLmNvbnRyb2xzWydTY29yZSddLnJlc2V0KCk7XHJcbiAgICAgIHRoaXMuYWRkT3B0aW9uRm9ybS5jb250cm9sc1snU2NvcmUnXS5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgdGhpcy5hZGRPcHRpb25Gb3JtLmNvbnRyb2xzWydTY29yZSddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZUxlbmd0aFZhbGlkYXRvcihuYW1lLCBtYXgsIG1pbikge1xyXG4gICAgbGV0IGNvbnRyb2wgPSB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbbmFtZV07XHJcbiAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICBjb250cm9sLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgY29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIGxldCB2YWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICAgICAgdmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5taW4obWluKSk7XHJcbiAgICAgIHZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWF4KG1heCkpO1xyXG4gICAgICB2YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgY29udHJvbC5hZGRWYWxpZGF0b3JzKHZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBjaGFuZ2VEYXRhVHlwZShrZXkpIHtcclxuICAgIHRoaXMudXBkYXRlRm9ybVN0YXR1cyhrZXkpO1xyXG4gICAgc3dpdGNoIChrZXkpIHtcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLlRleHQ6XHJcbiAgICAgICAgdGhpcy51cGRhdGVMZW5ndGhWYWxpZGF0b3IodGhpcy5hZGRNYXhMZW5ndGguTmFtZSwgMjU1LCAxKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxlbmd0aFZhbGlkYXRvcih0aGlzLmFkZE1pbkxlbmd0aC5OYW1lLCAyNTUsIDEpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLk51bWJlclJhbmdlLlRvID0gMjU1O1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLk51bWJlclJhbmdlLlRvID0gMjU1O1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk11bHRpbGluZVRleHQ6XHJcbiAgICAgICAgdGhpcy51cGRhdGVMZW5ndGhWYWxpZGF0b3IodGhpcy5hZGRNYXhMZW5ndGguTmFtZSwgNDAwMCwgMSk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMZW5ndGhWYWxpZGF0b3IodGhpcy5hZGRNaW5MZW5ndGguTmFtZSwgNDAwMCwgMSk7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGguTnVtYmVyUmFuZ2UuRnJvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGguTnVtYmVyUmFuZ2UuVG8gPSA0MDAwO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLk51bWJlclJhbmdlLlRvID0gNDAwMDtcclxuICAgICAgICB0aGlzLmlzVGV4dCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc011bHRpRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNTZWxlY3QgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5OdW1iZXI6XHJcbiAgICAgICAgdGhpcy51cGRhdGVMZW5ndGhWYWxpZGF0b3IodGhpcy5hZGRNYXhMZW5ndGguTmFtZSwgMTAwLCAxKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxlbmd0aFZhbGlkYXRvcih0aGlzLmFkZE1pbkxlbmd0aC5OYW1lLCAxMDAsIDEpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLk51bWJlclJhbmdlLlRvID0gMTAwO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLk51bWJlclJhbmdlLlRvID0gMTAwO1xyXG4gICAgICAgIHRoaXMuaXNOdW1iZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuRmlsZTpcclxuICAgICAgICB0aGlzLmlzRmlsZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc011bHRpRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNTZWxlY3QgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk11bHRpRmlsZTpcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNTZWxlY3QgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5JbWFnZTpcclxuICAgICAgICB0aGlzLmlzSW1hZ2UgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNNdWx0aUZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTnVtYmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRmlsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNTZWxlY3QgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk11bHRpcGxlU2VsZWN0OlxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuU2luZ2xlU2VsZWN0OlxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuUmFkaW9CdXR0b246XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc0ltYWdlID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNUZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubmdXaXphcmRTZXJ2aWNlLnJlc2V0KCk7XHJcbiAgfVxyXG5cclxuICBhZGRNb2RhbCA9IChzdXJ2ZXlJZCwgYXVkaWVuY2VUeXBlKSA9PiB7XHJcbiAgICB0aGlzLnN1cnZleUlEID0gc3VydmV5SWQ7XHJcbiAgICB0aGlzLmF1ZGllbmNlVHlwZUlEID0gYXVkaWVuY2VUeXBlO1xyXG4gICAgdGhpcy5pc051bWJlciA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1RleHQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNGaWxlID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzTXVsdGlGaWxlID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzU2VsZWN0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzSW1hZ2UgPSBmYWxzZTtcclxuICAgIHRoaXMub3B0aW9uTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgdGhpcy5zdXJ2ZXlRdWVzdGlvblNlcnZpY2VcclxuICAgICAgLmxvYWRBZGREcm9wZG93bih0aGlzLnN1cnZleUlEKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gcmVzIGFzIGFueTtcclxuICAgICAgICB0aGlzLlF1ZXN0aW9ucyA9IHJlc3VsdC5xdWVzdGlvbnM7XHJcbiAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICAgICAgICB0aGlzLmFkZE9wdGlvbkZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuYWRkTW9kZWxGb3JtO1xyXG4gICAgICAgIHRoaXMuYWRkU3VydmV5UXVlc3Rpb25Gb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRNb2RlbDtcclxuICAgICAgICB0aGlzLmFkZFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID1cclxuICAgICAgICAgIHRoaXMuZ2V0QWRkRnVuY3Rpb247XHJcbiAgICAgICAgdGhpcy5hZGRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuICAgICAgICB0aGlzLmFkZFN1cnZleVF1ZXN0aW9uRm9ybU9wdGlvbnMuT25TdWNjZXNzSGFuZGxlciA9XHJcbiAgICAgICAgICB0aGlzLm9uU3VjY2Vzc0FkZEhhbmRsZXI7XHJcbiAgICAgICAgdGhpcy5hZGRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zLkRpc2FibGVTdWNjZXNzTm90aWZpY2F0aW9uID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvbiA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb24uTmFtZSA9ICdUZXh0JztcclxuICAgICAgICB0aGlzLmFkZFF1ZXN0aW9uLkFyYWJpY0xhYmVsS2V5ID0gJ1F1ZXN0aW9uSW5BcmFiaWMnO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb24uRW5nbGlzaExhYmVsS2V5ID0gJ1F1ZXN0aW9uSW5FbmdsaXNoJztcclxuICAgICAgICB0aGlzLmFkZFF1ZXN0aW9uLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb24uTWF4TGVuZ3RoID0gNDAwMDtcclxuICAgICAgICB0aGlzLmFkZFF1ZXN0aW9uLkxhbmd1YWdlTW9kZSA9IHRoaXMuZ2V0TGFuZ3VhZ2VNb2RlVmFsdWUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbiA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFkZERlc2NyaXB0aW9uLk5hbWUgPSAnRGVzY3JpcHRpb24nO1xyXG4gICAgICAgIHRoaXMuYWRkRGVzY3JpcHRpb24uQXJhYmljTGFiZWxLZXkgPSAnRGVzY3JpcHRpb25JbkFyYWJpYyc7XHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbi5FbmdsaXNoTGFiZWxLZXkgPSAnRGVzY3JpcHRpb25JbkVuZ2xpc2gnO1xyXG4gICAgICAgIHRoaXMuYWRkRGVzY3JpcHRpb24uSXNSZXF1aXJlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYWRkRGVzY3JpcHRpb24uTWF4TGVuZ3RoID0gMjUwO1xyXG4gICAgICAgIHRoaXMuYWRkRGVzY3JpcHRpb24uUm93cyA9IDI7XHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbi5MYW5ndWFnZU1vZGUgPSB0aGlzLmdldExhbmd1YWdlTW9kZVZhbHVlKCk7XHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbi5BcmFiaWNMYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKFxyXG4gICAgICAgICAgJ1F1ZXN0aW9uRGVzY3JpcHRpb25IaW50QXJhYmljJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5hZGREZXNjcmlwdGlvbi5FbmdsaXNoTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMubChcclxuICAgICAgICAgICdRdWVzdGlvbkRlc2NyaXB0aW9uSGludEVuZ2xpc2gnXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvblR5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvblR5cGUuTmFtZSA9ICdRdWVzdGlvblR5cGVJdGVtSUQnO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb25UeXBlLkxhYmVsS2V5ID0gJ1R5cGUnO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb25UeXBlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb25UeXBlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZFF1ZXN0aW9uVHlwZS5EYXRhU291cmNlID0gcmVzdWx0Lm9wdGlvblR5cGVzO1xyXG4gICAgICAgIHRoaXMuYWRkUXVlc3Rpb25UeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRRdWVzdGlvblR5cGUuTm90Rm91bmRUZXh0ID0gdGhpcy5sKCdOb1Jlc3VsdEZvdW5kJyk7XHJcblxyXG4gICAgICAgIHRoaXMuYXVkaWVuY2UgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hdWRpZW5jZS5OYW1lID0gJ0F1ZGllbmNlSXRlbUlEJztcclxuICAgICAgICB0aGlzLmF1ZGllbmNlLkxhYmVsS2V5ID0gJ0F1ZGllbmNlJztcclxuICAgICAgICB0aGlzLmF1ZGllbmNlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYXVkaWVuY2UuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG4gICAgICAgIHRoaXMuYXVkaWVuY2UuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmF1ZGllbmNlLlNob3dDaGVja2JveCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYXVkaWVuY2UuRGF0YVNvdXJjZSA9IHJlc3VsdC5hdWRpZW5jZXM7XHJcbiAgICAgICAgdGhpcy5hdWRpZW5jZS5TZWxlY3RlZEl0ZW1zID0gYXVkaWVuY2VUeXBlO1xyXG4gICAgICAgIHRoaXMuYXVkaWVuY2UuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMubCgnQXVkaWVuY2VEZXNjcmlwdGlvbkhpbnQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRTaXplID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkU2l6ZS5OYW1lID0gJ1NpemUnO1xyXG4gICAgICAgIHRoaXMuYWRkU2l6ZS5MYWJlbEtleSA9ICdTaXplJztcclxuICAgICAgICB0aGlzLmFkZFNpemUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRTaXplLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZFNpemUuRGF0YVNvdXJjZSA9IHRoaXMuU2l6ZUxpc3Q7XHJcbiAgICAgICAgdGhpcy5hZGRTaXplLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRTaXplLlNlbGVjdGVkSXRlbXMgPSAxMjtcclxuICAgICAgICB0aGlzLmFkZFNpemUuTm90Rm91bmRUZXh0ID0gdGhpcy5sKCdOb1Jlc3VsdEZvdW5kJyk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkUmVxdWlyZWQgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRSZXF1aXJlZC5OYW1lID0gJ0lzUmVxdWlyZWQnO1xyXG4gICAgICAgIHRoaXMuYWRkUmVxdWlyZWQuTGFiZWxLZXkgPSAnSXNSZXF1aXJlZCc7XHJcbiAgICAgICAgdGhpcy5hZGRSZXF1aXJlZC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKCdSZXF1aXJlZERlc2NyaXB0aW9uSGludCcpO1xyXG5cclxuICAgICAgICB0aGlzLmFkZEFsbG93U2NvcmUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRBbGxvd1Njb3JlLk5hbWUgPSAnSXNBbGxvd1Njb3JpbmcnO1xyXG4gICAgICAgIHRoaXMuYWRkQWxsb3dTY29yZS5MYWJlbEtleSA9ICdBbGxvd1Njb3JlJztcclxuICAgICAgICB0aGlzLmFkZEFsbG93U2NvcmUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMubCgnQWxsb3dTY29yZURlc2NyaXB0aW9uJyk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkSGFzU2VhcmNoID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkSGFzU2VhcmNoLk5hbWUgPSAnSGFzU2VhcmNoJztcclxuICAgICAgICB0aGlzLmFkZEhhc1NlYXJjaC5MYWJlbEtleSA9ICdIYXNTZWFyY2gnO1xyXG5cclxuICAgICAgICB0aGlzLmFkZElzQWN0aXZlID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkSXNBY3RpdmUuTmFtZSA9ICdJc1Zpc2libGUnO1xyXG4gICAgICAgIHRoaXMuYWRkSXNBY3RpdmUuTGFiZWxLZXkgPSAnVmlzaWJsZSc7XHJcbiAgICAgICAgdGhpcy5hZGRJc0FjdGl2ZS5WYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRJc0FjdGl2ZS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKCdHZW5lcmljVmlzaWJsZUhpbnQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFkZE1heExlbmd0aC5OYW1lID0gJ01heExlbmd0aCc7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGguTGFiZWxLZXkgPSAnTWF4TGVuZ3RoJztcclxuICAgICAgICB0aGlzLmFkZE1heExlbmd0aC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZE1heExlbmd0aC5OdW1iZXJSYW5nZSA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoLkxhYmVsRGVzY3JpcHRpb24gPXRoaXMubCgnTWF4SGludCcpO1xyXG5cclxuICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUgPSAnTWluTGVuZ3RoJztcclxuICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aC5MYWJlbEtleSA9ICdNaW5MZW5ndGgnO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoLk51bWJlclJhbmdlID0gbmV3IFJhbmdlTnVtYmVyKCk7XHJcbiAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGguVHlwZSA9IElucHV0VHlwZS5OdW1iZXI7XHJcbiAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGguTGFiZWxEZXNjcmlwdGlvbiA9dGhpcy5sKCdNaW5IaW50Jyk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkUm93c051bWJlciA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkUm93c051bWJlci5OYW1lID0gJ1Jvd3MnO1xyXG4gICAgICAgIHRoaXMuYWRkUm93c051bWJlci5MYWJlbEtleSA9ICdSb3dzJztcclxuICAgICAgICB0aGlzLmFkZFJvd3NOdW1iZXIuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRSb3dzTnVtYmVyLk51bWJlclJhbmdlID0gbmV3IFJhbmdlTnVtYmVyKCk7XHJcbiAgICAgICAgdGhpcy5hZGRSb3dzTnVtYmVyLk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkUm93c051bWJlci5OdW1iZXJSYW5nZS5UbyA9IDIwO1xyXG4gICAgICAgIHRoaXMuYWRkUm93c051bWJlci5UeXBlID0gSW5wdXRUeXBlLk51bWJlcjtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemUuTmFtZSA9ICdNYXhGaWxlU2l6ZUluTUInO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemUuTGFiZWxLZXkgPSAnTWF4RmlsZVNpemVJbk1CJztcclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVTaXplLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemUuTnVtYmVyUmFuZ2UgPSBuZXcgUmFuZ2VOdW1iZXIoKTtcclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVTaXplLk51bWJlclJhbmdlLkZyb20gPSAxO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemUuTnVtYmVyUmFuZ2UuVG8gPSAxMDA7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZS5UeXBlID0gSW5wdXRUeXBlLk51bWJlcjtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudC5OYW1lID0gJ01heEZpbGVDb3VudCc7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnQuTGFiZWxLZXkgPSAnTWF4RmlsZXNDb3VudCc7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnQuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnQuTnVtYmVyUmFuZ2UgPSBuZXcgUmFuZ2VOdW1iZXIoKTtcclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudC5OdW1iZXJSYW5nZS5Gcm9tID0gMTtcclxuICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudC5OdW1iZXJSYW5nZS5UbyA9IDUwO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50LlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50LkxhYmVsRGVzY3JpcHRpb24gPXRoaXMubCgnTWF4RmlsZUNvdW50SGludCcpO1xyXG4gICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50LkN1c3RvbVZhbGlkYXRpb24gPSBbdGhpcy5udW1iZXJWYWxpZGF0aW9uXTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSA9ICdBbGxvd2VkRXh0ZW5zaW9ucyc7XHJcbiAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTGFiZWxLZXkgPSAnRXh0ZW5zaW9ucyc7XHJcbiAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLkRhdGFTb3VyY2UgPSByZXN1bHQuZXh0ZW5zaW9ucztcclxuICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5MYWJlbERlc2NyaXB0aW9uID10aGlzLmwoJ0V4dGVuc2lvbkhpbnQnKTtcclxuICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5Ob3RGb3VuZFRleHQgPSB0aGlzLmwoJ05vUmVzdWx0Rm91bmQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uYWRkVmFsaWRhdG9ycyh0aGlzLmZyb21UbygnTWluTGVuZ3RoJywgJ01heExlbmd0aCcpKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGROYW1lT3B0aW9uID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hZGROYW1lT3B0aW9uLk5hbWUgPSAnTmFtZU9wdGlvbic7XHJcbiAgICAgICAgdGhpcy5hZGROYW1lT3B0aW9uLkFyYWJpY0xhYmVsS2V5ID0gJ05hbWVJbkFyYWJpYyc7XHJcbiAgICAgICAgdGhpcy5hZGROYW1lT3B0aW9uLkVuZ2xpc2hMYWJlbEtleSA9ICdOYW1lSW5FbmdsaXNoJztcclxuICAgICAgICB0aGlzLmFkZE5hbWVPcHRpb24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hZGROYW1lT3B0aW9uLk1heExlbmd0aCA9IDIyNTtcclxuICAgICAgICB0aGlzLmFkZE5hbWVPcHRpb24uTGFuZ3VhZ2VNb2RlID0gdGhpcy5nZXRMYW5ndWFnZU1vZGVWYWx1ZSgpO1xyXG5cclxuICAgICAgICB0aGlzLmRpc3BsYXlPcmRlck9wdGlvbiA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheU9yZGVyT3B0aW9uLk5hbWUgPSAnRGlzcGxheU9yZGVyJztcclxuXHJcbiAgICAgICAgdGhpcy5zY29yZU51bWJlciA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuc2NvcmVOdW1iZXIuTmFtZSA9ICdTY29yZSc7XHJcbiAgICAgICAgdGhpcy5zY29yZU51bWJlci5MYWJlbEtleSA9ICdTY29yZSc7XHJcbiAgICAgICAgdGhpcy5zY29yZU51bWJlci5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNjb3JlTnVtYmVyLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICAgIGxldCByYW5nZU51bWJlciA9IG5ldyBSYW5nZU51bWJlcigpO1xyXG4gICAgICAgIHJhbmdlTnVtYmVyLlRvID0gMTAwMDAwMDtcclxuICAgICAgICByYW5nZU51bWJlci5Gcm9tID0gMTtcclxuICAgICAgICB0aGlzLnNjb3JlTnVtYmVyLk51bWJlclJhbmdlID0gcmFuZ2VOdW1iZXI7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkT3B0aW9uTGlua2VkUXVlc3Rpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYWRkT3B0aW9uTGlua2VkUXVlc3Rpb25zLk5hbWUgPSAnTGlua2VkUXVlc3Rpb25zJztcclxuICAgICAgICB0aGlzLmFkZE9wdGlvbkxpbmtlZFF1ZXN0aW9ucy5MYWJlbEtleSA9ICdMaW5rZWRRdWVzdGlvbnMnO1xyXG4gICAgICAgIHRoaXMuYWRkT3B0aW9uTGlua2VkUXVlc3Rpb25zLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFkZE9wdGlvbkxpbmtlZFF1ZXN0aW9ucy5EYXRhU291cmNlID0gcmVzdWx0LnF1ZXN0aW9ucztcclxuICAgICAgICB0aGlzLmFkZE9wdGlvbkxpbmtlZFF1ZXN0aW9ucy5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmFkZE9wdGlvbkxpbmtlZFF1ZXN0aW9ucy5Ob3RGb3VuZFRleHQgPSB0aGlzLmwoJ05vUmVzdWx0Rm91bmQnKTtcclxuICAgICAgICB0aGlzLmFkZE9wdGlvbkxpbmtlZFF1ZXN0aW9ucy5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5sKFxyXG4gICAgICAgICAgJ0xpbmtlZFF1ZXN0aW9uRGVzY3JpcHRpb25IaW50J1xyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMub3Blbk1vZGFsKHRoaXMuQWRkTW9kYWwsICd4bCcpO1xyXG4gICAgICAgIHRoaXMuc3RvcEJsb2NrVUkoKTtcclxuICAgICAgfSk7XHJcbiAgfTtcclxuICBnZXRBZGRNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IHJlc3VsdE9wdGlvbk1vZGVsID0gdGhpcy5hZGRPcHRpb25Gb3JtLnZhbHVlIGFzIGFueTtcclxuICAgIGxldCByZXN1bHRNb2RlbCA9IHRoaXMuYWRkTW9kZWxGb3JtLnZhbHVlIGFzIGFueTtcclxuICAgIGlmICh0aGlzLmlzU2VsZWN0KSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICAocmVzdWx0T3B0aW9uTW9kZWwuTmFtZU9wdGlvbi5BcmFiaWMgIT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgICByZXN1bHRPcHRpb25Nb2RlbC5OYW1lT3B0aW9uLkFyYWJpYyAhPSAnJykgfHxcclxuICAgICAgICAocmVzdWx0T3B0aW9uTW9kZWwuTmFtZU9wdGlvbi5FbmdsaXNoICE9IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgcmVzdWx0T3B0aW9uTW9kZWwuTmFtZU9wdGlvbi5FbmdsaXNoICE9ICcnKSB8fFxyXG4gICAgICAgIChyZXN1bHRPcHRpb25Nb2RlbC5TY29yZSAhPSB1bmRlZmluZWQgJiYgcmVzdWx0T3B0aW9uTW9kZWwuU2NvcmUgPiAwKVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMubCgnT3B0aW9uUGVuZGluZ0RhdGFFcnJvck1lc3NhZ2UnKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbkxpc3QubGVuZ3RoID09IDAgJiYgdGhpcy5pc1NlbGVjdCkge1xyXG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5sKCdPcHRpb25FcnJvck1lc3NhZ2UnKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gbnVsbDtcclxuICAgIGxldCBhZGRNb2RlbDogU3VydmV5UXVlc3Rpb25EVE8gPSBuZXcgU3VydmV5UXVlc3Rpb25EVE8oKTtcclxuICAgIGFkZE1vZGVsLlN1cnZleUlEID0gdGhpcy5zdXJ2ZXlJRDtcclxuICAgIGFkZE1vZGVsLlRleHQuQXJhYmljID0gcmVzdWx0TW9kZWwuVGV4dC5BcmFiaWM7XHJcbiAgICBhZGRNb2RlbC5UZXh0LkVuZ2xpc2ggPSByZXN1bHRNb2RlbC5UZXh0LkVuZ2xpc2g7XHJcbiAgICBhZGRNb2RlbC5EZXNjcmlwdGlvbi5BcmFiaWMgPSByZXN1bHRNb2RlbC5EZXNjcmlwdGlvbi5BcmFiaWM7XHJcbiAgICBhZGRNb2RlbC5EZXNjcmlwdGlvbi5FbmdsaXNoID0gcmVzdWx0TW9kZWwuRGVzY3JpcHRpb24uRW5nbGlzaDtcclxuICAgIGFkZE1vZGVsLk9wdGlvbnMuRGVzY3JpcHRpb24uQXJhYmljID0gcmVzdWx0TW9kZWwuRGVzY3JpcHRpb24uQXJhYmljO1xyXG4gICAgYWRkTW9kZWwuT3B0aW9ucy5EZXNjcmlwdGlvbi5FbmdsaXNoID0gcmVzdWx0TW9kZWwuRGVzY3JpcHRpb24uRW5nbGlzaDtcclxuICAgIGlmICh0aGlzLmF1ZGllbmNlVHlwZUlEID09IEF1ZGllbmNlVHlwZS5Cb3RoKVxyXG4gICAgICBhZGRNb2RlbC5BdWRpZW5jZUl0ZW1JRCA9IHJlc3VsdE1vZGVsLkF1ZGllbmNlSXRlbUlEO1xyXG4gICAgZWxzZSBhZGRNb2RlbC5BdWRpZW5jZUl0ZW1JRCA9IHRoaXMuYXVkaWVuY2VUeXBlSUQ7XHJcbiAgICBhZGRNb2RlbC5RdWVzdGlvblR5cGVJdGVtSUQgPSByZXN1bHRNb2RlbC5RdWVzdGlvblR5cGVJdGVtSUQ7XHJcbiAgICBhZGRNb2RlbC5Jc0FsbG93U2NvcmluZyA9IHJlc3VsdE1vZGVsLklzQWxsb3dTY29yaW5nO1xyXG4gICAgYWRkTW9kZWwuT3B0aW9ucy5TaXplID0gcmVzdWx0TW9kZWwuU2l6ZTtcclxuICAgIGFkZE1vZGVsLk9wdGlvbnMuSXNSZXF1aXJlZCA9IHJlc3VsdE1vZGVsLklzUmVxdWlyZWQ7XHJcbiAgICBhZGRNb2RlbC5Jc1JlcXVpcmVkID0gcmVzdWx0TW9kZWwuSXNSZXF1aXJlZDtcclxuICAgIGFkZE1vZGVsLklzVmlzaWJsZSA9IHJlc3VsdE1vZGVsLklzVmlzaWJsZTtcclxuICAgIGFkZE1vZGVsLk9wdGlvbnMuSGFzU2VhcmNoID0gcmVzdWx0TW9kZWwuSGFzU2VhcmNoO1xyXG5cclxuICAgIGlmICh0aGlzLmlzVGV4dCB8fCB0aGlzLmlzTnVtYmVyKSB7XHJcbiAgICAgIGFkZE1vZGVsLk9wdGlvbnMuTWluTGVuZ3RoID0gcmVzdWx0TW9kZWwuTWluTGVuZ3RoO1xyXG4gICAgICBhZGRNb2RlbC5PcHRpb25zLk1heExlbmd0aCA9IHJlc3VsdE1vZGVsLk1heExlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc0ZpbGUgfHwgdGhpcy5pc011bHRpRmlsZSB8fCB0aGlzLmlzSW1hZ2UpXHJcbiAgICAgIGFkZE1vZGVsLk9wdGlvbnMuTWF4RmlsZVNpemVJbk1CID0gcmVzdWx0TW9kZWwuTWF4RmlsZVNpemVJbk1CO1xyXG5cclxuICAgIGlmICh0aGlzLmlzTXVsdGlGaWxlKVxyXG4gICAgICBhZGRNb2RlbC5PcHRpb25zLk1heEZpbGVDb3VudCA9IHJlc3VsdE1vZGVsLk1heEZpbGVDb3VudDtcclxuXHJcbiAgICBpZiAodGhpcy5pc011bHRpRmlsZSB8fCB0aGlzLmlzRmlsZSlcclxuICAgICAgYWRkTW9kZWwuT3B0aW9ucy5BbGxvd2VkRXh0ZW5zaW9ucyA9IHJlc3VsdE1vZGVsLkFsbG93ZWRFeHRlbnNpb25zO1xyXG5cclxuICAgIGlmICh0aGlzLmlzU2VsZWN0KVxyXG4gICAgICBpZiAodGhpcy5vcHRpb25MaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5vcHRpb25MaXN0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25MaXN0W2luZGV4XS5EaXNwbGF5T3JkZXIgPSBpbmRleCArIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFkZE1vZGVsLlF1ZXN0aW9uT3B0aW9ucyA9IHRoaXMub3B0aW9uTGlzdDtcclxuICAgICAgfVxyXG5cclxuICAgIHBhcmFtQXJyYXkucHVzaChhZGRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9O1xyXG4gIGdldEFkZEZ1bmN0aW9uID0gKGFkZE1vZGFsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIGlmICghdGhpcy5lcnJvck1lc3NhZ2UpIHJldHVybiB0aGlzLnN1cnZleVF1ZXN0aW9uU2VydmljZS5hZGQoYWRkTW9kYWwpO1xyXG4gIH07XHJcblxyXG4gIGdldExpbmtlZFF1ZXN0aW9ucyhvcHRpb246IFN1cnZleVF1ZXN0aW9uT3B0aW9uRFRPKSB7XHJcbiAgICByZXR1cm4gdGhpcy5RdWVzdGlvbnMuZmlsdGVyKChpdGVtKSA9PlxyXG4gICAgICBvcHRpb24uTGlua2VkUXVlc3Rpb25zLmluY2x1ZGVzKGl0ZW0ua2V5KVxyXG4gICAgKS5tYXAoKGl0ZW0pID0+IGl0ZW0udmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgQWRkT3B0aW9uKCkge1xyXG4gICAgdGhpcy50b3RhbFNjb3JlID0gMDtcclxuICAgIHRoaXMuYWRkT3B0aW9uRm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICBpZiAodGhpcy5hZGRPcHRpb25Gb3JtLmludmFsaWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IHJlc3VsdE1vZGVsID0gdGhpcy5hZGRPcHRpb25Gb3JtLnZhbHVlIGFzIGFueTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25MaXN0Lmxlbmd0aCA+PSAxICYmIHRoaXMuc2hvd1Njb3JlT3B0aW9uKSB7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbkxpc3QubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgbGV0IGVsZW1lbnQgPSB0aGlzLm9wdGlvbkxpc3RbaW5kZXhdLlNjb3JlO1xyXG4gICAgICAgIGlmIChlbGVtZW50ID4gMTAwMDAwMCkge1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmwoJ01heE9wdGlvblNjb3JlRXJyb3JNZXNzYWdlJyk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlbGVtZW50IDwgMSkge1xyXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmwoJ01pbk9wdGlvblNjb3JlRXJyb3JNZXNzYWdlJyk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNob3dPcHRpb25MaXN0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICBsZXQgb3B0aW9uID0gbmV3IFN1cnZleVF1ZXN0aW9uT3B0aW9uRFRPKCk7XHJcbiAgICBvcHRpb24uTmFtZS5BcmFiaWMgPSByZXN1bHRNb2RlbC5OYW1lT3B0aW9uLkFyYWJpYztcclxuICAgIG9wdGlvbi5OYW1lLkVuZ2xpc2ggPSByZXN1bHRNb2RlbC5OYW1lT3B0aW9uLkVuZ2xpc2g7XHJcbiAgICBkZWJ1Z2dlcjtcclxuICAgIGlmIChyZXN1bHRNb2RlbC5EaXNwbGF5T3JkZXIpXHJcbiAgICAgIG9wdGlvbi5EaXNwbGF5T3JkZXIgPSByZXN1bHRNb2RlbC5EaXNwbGF5T3JkZXI7XHJcbiAgICBlbHNlIG9wdGlvbi5EaXNwbGF5T3JkZXIgPSB0aGlzLm9wdGlvbkxpc3QubGVuZ3RoICsgMTtcclxuXHJcbiAgICBvcHRpb24uTGlua2VkUXVlc3Rpb25zID0gcmVzdWx0TW9kZWwuTGlua2VkUXVlc3Rpb25zO1xyXG4gICAgaWYgKHRoaXMuc2hvd1Njb3JlT3B0aW9uKVxyXG4gICAgICBvcHRpb24uU2NvcmUgPSBOdW1iZXIucGFyc2VGbG9hdChyZXN1bHRNb2RlbC5TY29yZSk7XHJcbiAgICB0aGlzLmFkZE9wdGlvbkZvcm0ucmVzZXQoKTtcclxuICAgIHRoaXMuYWRkT3B0aW9uRm9ybS5jb250cm9sc1snTmFtZU9wdGlvbiddLnJlc2V0KCk7XHJcbiAgICB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbJ0Rpc3BsYXlPcmRlciddLnJlc2V0KCk7XHJcbiAgICB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbJ0xpbmtlZFF1ZXN0aW9ucyddLnJlc2V0KCk7XHJcbiAgICBpZiAodGhpcy5zaG93U2NvcmVPcHRpb24pIHRoaXMuYWRkT3B0aW9uRm9ybS5jb250cm9sc1snU2NvcmUnXS5yZXNldCgpO1xyXG4gICAgdGhpcy5vcHRpb25MaXN0LnNwbGljZShvcHRpb24uRGlzcGxheU9yZGVyIC0gMSwgMCwgb3B0aW9uKTtcclxuICAgIHRoaXMuc2hvd09wdGlvbkxpc3QgPSB0cnVlO1xyXG4gICAgdGhpcy5pc09wdGlvbkluRWRpdE1vZGUgPSBmYWxzZTtcclxuICB9XHJcbiAgZ2V0T3B0aW9uQnlPcmRlcihpbmRleDogbnVtYmVyLCBvcHRpb246IGFueSkge1xyXG4gICAgcmV0dXJuIG9wdGlvbi5EaXNwbGF5T3JkZXI7XHJcbiAgfVxyXG4gIGRlbGV0ZU9wdGlvbihvcHRpb24pIHtcclxuICAgIHRoaXMub3B0aW9uTGlzdCA9IHRoaXMub3B0aW9uTGlzdC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gIT0gb3B0aW9uKTtcclxuICB9XHJcblxyXG4gIGVkaXRPcHRpb24ob3B0aW9uOiBTdXJ2ZXlRdWVzdGlvbk9wdGlvbkRUTykge1xyXG4gICAgZGVidWdnZXI7XHJcbiAgICBpZiAoXHJcbiAgICAgICh0aGlzLmFkZE9wdGlvbkZvcm0udG91Y2hlZCA9PSB0cnVlICYmIHRoaXMuYWRkT3B0aW9uRm9ybS52YWxpZCkgfHxcclxuICAgICAgdGhpcy5hZGRPcHRpb25Gb3JtLnRvdWNoZWQgPT0gZmFsc2VcclxuICAgIClcclxuICAgICAgdGhpcy5BZGRPcHRpb24oKTtcclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmFkZE9wdGlvbkZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgbmFtZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICBuYW1lLkFyYWJpYyA9IG9wdGlvbi5OYW1lLkFyYWJpYyA/PyBudWxsO1xyXG4gICAgbmFtZS5FbmdsaXNoID0gb3B0aW9uLk5hbWUuRW5nbGlzaCA/PyBudWxsO1xyXG4gICAgdGhpcy5hZGRPcHRpb25Gb3JtLmNvbnRyb2xzWydOYW1lT3B0aW9uJ10uc2V0VmFsdWUobmFtZSk7XHJcbiAgICB0aGlzLmFkZE9wdGlvbkZvcm0uY29udHJvbHNbJ0Rpc3BsYXlPcmRlciddLnNldFZhbHVlKG9wdGlvbi5EaXNwbGF5T3JkZXIpO1xyXG4gICAgdGhpcy5hZGRPcHRpb25Gb3JtLmNvbnRyb2xzWydMaW5rZWRRdWVzdGlvbnMnXS5zZXRWYWx1ZShcclxuICAgICAgb3B0aW9uLkxpbmtlZFF1ZXN0aW9uc1xyXG4gICAgKTtcclxuICAgIGlmICh0aGlzLnNob3dTY29yZU9wdGlvbilcclxuICAgICAgdGhpcy5hZGRPcHRpb25Gb3JtLmNvbnRyb2xzWydTY29yZSddLnNldFZhbHVlKG9wdGlvbi5TY29yZSk7XHJcbiAgICB0aGlzLm9wdGlvbkxpc3QgPSB0aGlzLm9wdGlvbkxpc3QuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9IG9wdGlvbik7XHJcbiAgICB0aGlzLmlzT3B0aW9uSW5FZGl0TW9kZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBmcm9tVG8oZnJvbUZpZWxkOiBzdHJpbmcsIHRvRmllbGQ6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoZm9ybUdyb3VwOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSB8IG51bGwgPT4ge1xyXG4gICAgICBjb25zdCBmcm9tRGF0ZSA9IGZvcm1Hcm91cC5nZXQoZnJvbUZpZWxkKTtcclxuICAgICAgY29uc3QgdG9EYXRlID0gZm9ybUdyb3VwLmdldCh0b0ZpZWxkKTtcclxuICAgICAgaWYgKGZyb21EYXRlICE9PSBudWxsICYmIHRvRGF0ZSAhPT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGZyb21EYXRlLnZhbHVlICE9PSBudWxsICYmXHJcbiAgICAgICAgICB0b0RhdGUudmFsdWUgIT09IG51bGwgJiZcclxuICAgICAgICAgIHBhcnNlSW50KGZyb21EYXRlLnZhbHVlKSA+IHBhcnNlSW50KHRvRGF0ZS52YWx1ZSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGZyb21EYXRlLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgICAgIHRvRGF0ZS5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgICB0b0RhdGUuc2V0RXJyb3JzKHtcclxuICAgICAgICAgICAgZXJyb3JNYXNzYWdlOiB0aGlzLmwoJ0dyZWF0ZXJUaGFuT3JFcXVhbFRvJyksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBmcm9tRGF0ZS52YWx1ZSAhPT0gbnVsbCAmJlxyXG4gICAgICAgICAgdG9EYXRlLnZhbHVlICE9PSBudWxsICYmXHJcbiAgICAgICAgICBwYXJzZUludChmcm9tRGF0ZS52YWx1ZSkgPCBwYXJzZUludCh0b0RhdGUudmFsdWUpICYmXHJcbiAgICAgICAgICBwYXJzZUludCh0b0RhdGUudmFsdWUpIDwgMjU1ICYmXHJcbiAgICAgICAgICBwYXJzZUludChmcm9tRGF0ZS52YWx1ZSkgPCAyNTVcclxuICAgICAgICApXHJcbiAgICAgICAgICB0b0RhdGUuc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICB1cGRhdGVGb3JtU3RhdHVzKGtleTogYW55KSB7XHJcbiAgICBzd2l0Y2ggKGtleSkge1xyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuVGV4dDpcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLk11bHRpbGluZVRleHQ6XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemVcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9uc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5OdW1iZXI6XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemVcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9uc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5GaWxlOlxyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heExlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVTaXplXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuTXVsdGlGaWxlOlxyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heExlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNaW5MZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVTaXplLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVTaXplXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1heEZpbGVDb3VudFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5hZGRSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRGaWxlc0V4dGVuc2lvbnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN1cnZleU9wdGlvblR5cGUuSW1hZ2U6XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhMZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4TGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGguTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWluTGVuZ3RoLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1pbkxlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZVNpemUuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZVNpemVcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlQ291bnQuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWF4RmlsZUNvdW50XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSkpXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVJlcXVpcmVkUnVsZShcclxuICAgICAgICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zLk5hbWUpLFxyXG4gICAgICAgICAgICB0aGlzLmFkZEZpbGVzRXh0ZW5zaW9uc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgU3VydmV5T3B0aW9uVHlwZS5NdWx0aXBsZVNlbGVjdDpcclxuICAgICAgY2FzZSBTdXJ2ZXlPcHRpb25UeXBlLlNpbmdsZVNlbGVjdDpcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4TGVuZ3RoLk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heExlbmd0aC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhMZW5ndGhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1pbkxlbmd0aC5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNaW5MZW5ndGguTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTWluTGVuZ3RoXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRNYXhGaWxlU2l6ZS5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlU2l6ZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkTWF4RmlsZUNvdW50Lk5hbWUpKVxyXG4gICAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoXHJcbiAgICAgICAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZE1heEZpbGVDb3VudC5OYW1lKSxcclxuICAgICAgICAgICAgdGhpcy5hZGRNYXhGaWxlQ291bnRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZEZpbGVzRXh0ZW5zaW9ucy5OYW1lKSlcclxuICAgICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKFxyXG4gICAgICAgICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRGaWxlc0V4dGVuc2lvbnMuTmFtZSksXHJcbiAgICAgICAgICAgIHRoaXMuYWRkRmlsZXNFeHRlbnNpb25zXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNWYWxpZFR5cGVCb29sZWFuOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgaXNWYWxpZEZ1bmN0aW9uUmV0dXJuc0Jvb2xlYW4oYXJnczogU3RlcFZhbGlkYXRpb25BcmdzKSB7XHJcbiAgICBsZXQgcmV0dXJuVmFsdWUgPSB0cnVlO1xyXG4gICAgdGhpcy5tYWluRm9ybUNvbnRyb2xzID0gW107XHJcbiAgICB0aGlzLm1haW5Gb3JtQ29udHJvbHMucHVzaChcclxuICAgICAgdGhpcy5hZGRNb2RlbEZvcm0uZ2V0KHRoaXMuYWRkUXVlc3Rpb24uTmFtZSksXHJcbiAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmFkZERlc2NyaXB0aW9uLk5hbWUpLFxyXG4gICAgICB0aGlzLmFkZE1vZGVsRm9ybS5nZXQodGhpcy5hZGRRdWVzdGlvblR5cGUuTmFtZSksXHJcbiAgICAgIHRoaXMuYWRkTW9kZWxGb3JtLmdldCh0aGlzLmF1ZGllbmNlLk5hbWUpXHJcbiAgICApO1xyXG4gICAgaWYgKGFyZ3MuZnJvbVN0ZXAuaW5kZXggPT0gMClcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm1haW5Gb3JtQ29udHJvbHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0aGlzLm1haW5Gb3JtQ29udHJvbHNbaV0ubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgICAgIGlmICghdGhpcy5tYWluRm9ybUNvbnRyb2xzW2ldLnZhbGlkKSByZXR1cm5WYWx1ZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICByZXR1cm4gcmV0dXJuVmFsdWU7XHJcbiAgfVxyXG5cclxuICBpc1ZhbGlkRnVuY3Rpb25SZXR1cm5zT2JzZXJ2YWJsZShhcmdzOiBTdGVwVmFsaWRhdGlvbkFyZ3MpIHtcclxuICAgIHJldHVybiBvZih0cnVlKTtcclxuICB9XHJcblxyXG4gIC8vZHJhZyBhbmQgZHJvcFxyXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPHN0cmluZ1tdPikge1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMub3B0aW9uTGlzdCwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICB9XHJcbn1cclxuIiwiPG5nLXRlbXBsYXRlICNBZGRNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5cclxuICAgICAge3tsKFwiQWRkX1F1ZXN0aW9uXCIpfX1cclxuICAgIDwvaDQ+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGNsYXNzPVwiYnRuIGJ0bi1pY29uIGJ0bi1zbVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTEgc3ZnLWljb24taG92ZXItYnJhbmRcIiBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9tb2RhbGNsb3NlLnN2ZydcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJhZGRTdXJ2ZXlRdWVzdGlvbkZvcm1PcHRpb25zXCI+XHJcbiAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cImFkZFF1ZXN0aW9uXCIgW2dyb3VwXT1cImFkZE1vZGVsRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEFyZWEgW29wdGlvbnNdPVwiYWRkRGVzY3JpcHRpb25cIiBbZ3JvdXBdPVwiYWRkTW9kZWxGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImF1ZGllbmNlVHlwZUlEPT1hdWRpZW5jZVR5cGUuQm90aFwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJhdWRpZW5jZVwiICBbZ3JvdXBdPVwiYWRkTW9kZWxGb3JtXCI+PC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJhZGRRdWVzdGlvblR5cGVcIiBbZ3JvdXBdPVwiYWRkTW9kZWxGb3JtXCIgKE9uQ2hhbmdlKT1cImNoYW5nZURhdGFUeXBlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImFkZFNpemVcIiBbZ3JvdXBdPVwiYWRkTW9kZWxGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXNTZWxlY3RcIiA+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiYWRkQWxsb3dTY29yZVwiIFtncm91cF09XCJhZGRNb2RlbEZvcm1cIiAoT25DaGFuZ2UpPVwiY2hhbmdlU2NvcmluZygkZXZlbnQpXCI+PC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cImFkZElzQWN0aXZlXCIgW2dyb3VwXT1cImFkZE1vZGVsRm9ybVwiPjwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cImFkZFJlcXVpcmVkXCIgW2dyb3VwXT1cImFkZE1vZGVsRm9ybVwiPjwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJpc1RleHR8fGlzTnVtYmVyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJhZGRNaW5MZW5ndGhcIiAqbmdJZj1cImlzVGV4dHx8aXNOdW1iZXJcIiBbZ3JvdXBdPVwiYWRkTW9kZWxGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImlzVGV4dHx8aXNOdW1iZXJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImFkZE1heExlbmd0aFwiICpuZ0lmPVwiaXNUZXh0fHxpc051bWJlclwiIFtncm91cF09XCJhZGRNb2RlbEZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJpc0ZpbGV8fGlzTXVsdGlGaWxlfHxpc0ltYWdlXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJhZGRNYXhGaWxlU2l6ZVwiICpuZ0lmPVwiaXNGaWxlfHxpc011bHRpRmlsZXx8aXNJbWFnZVwiIFtncm91cF09XCJhZGRNb2RlbEZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiaXNNdWx0aUZpbGVcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImFkZE1heEZpbGVDb3VudFwiICpuZ0lmPVwiaXNNdWx0aUZpbGVcIiBbZ3JvdXBdPVwiYWRkTW9kZWxGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cImlzRmlsZXx8aXNNdWx0aUZpbGVcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiYWRkRmlsZXNFeHRlbnNpb25zXCIgKm5nSWY9XCJpc0ZpbGV8fGlzTXVsdGlGaWxlXCIgW2dyb3VwXT1cImFkZE1vZGVsRm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImlzU2VsZWN0XCIgY2xhc3M9XCJxdWVzdGlvbi10eXBlLW9wdGlvblwiPlxyXG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJtYi00XCI+e3tsKCdPcHRpb25zJyl9fTwvaDU+XHJcbiAgICAgICAgICAgIDxkaXYgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIiAqbmdJZj1cInNob3dPcHRpb25MaXN0XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1saXN0aW5nXCIgKm5nRm9yPVwibGV0IE9wdGlvbiBvZiBvcHRpb25MaXN0O1wiIGNka0RyYWc+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgbWItMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUgZnMtNiBmdy1ib2xkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2dldEN1cnJlbnRGYWlsT3ZlcihPcHRpb24uTmFtZSl9fVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc3F1YXJlIGJhZGdlLWRhcmsgbWUtNFwiICpuZ0lmPVwic2hvd1Njb3JlT3B0aW9uXCIgbmdiVG9vbHRpcD1cInt7bCgnU2NvcmUnKX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e09wdGlvbi5TY29yZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc3F1YXJlIGJhZGdlLWJyYW5kIGN1cnNvci1wb2ludGVyIG1lLTRcIiAqbmdJZj1cIk9wdGlvbi5MaW5rZWRRdWVzdGlvbnM/Lmxlbmd0aD4wXCIgbmdiVG9vbHRpcD1cInt7Z2V0TGlua2VkUXVlc3Rpb25zKE9wdGlvbil9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi00IHN2Zy1pY29uLXdoaXRlXCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvaW5mby5zdmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1zcXVhcmUgYmFkZ2UtYnJhbmQgY3Vyc29yLXBvaW50ZXIgbWUtNFwiIChjbGljayk9XCJlZGl0T3B0aW9uKE9wdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tNCBzdmctaWNvbi13aGl0ZVwiIG5nYlRvb2x0aXA9XCJ7e2woJ0VkaXQnKX19XCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvRWRpdC5zdmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLXNxdWFyZSBiYWRnZS1kYW5nZXIgY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tNCBzdmctaWNvbi13aGl0ZVwiIG5nYlRvb2x0aXA9XCJ7e2woJ0RlbGV0ZScpfX1cIiBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9UcmFzaC5zdmcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVPcHRpb24oT3B0aW9uKVwiIGFwcHByZXZlbnRkb3VibGVjbGljaz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VydmV5LWFsZXJ0LWRhbmdlciBhbGVydC1kYW5nZXJcIiAqbmdJZj1cImVycm9yTWVzc2FnZVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMnR4IHN2Zy1pY29uLWRhbmdlciBtZS00XCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvaW5mby5zdmcnXCI+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkXCI+PGRpdiBjbGFzcz1cImZzLTcgdGV4dC1kYW5nZXJcIj57e2Vycm9yTWVzc2FnZX19PC9kaXY+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVwZWF0ZXItYmdcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiYWRkTmFtZU9wdGlvblwiIFtncm91cF09XCJhZGRPcHRpb25Gb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImFkZE9wdGlvbkxpbmtlZFF1ZXN0aW9uc1wiIFtncm91cF09XCJhZGRPcHRpb25Gb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZGlzcGxheU9yZGVyT3B0aW9uXCIgW2dyb3VwXT1cImFkZE9wdGlvbkZvcm1cIiBoaWRkZW4+PC9CQlNGLVRleHRCb3g+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdJZj1cInNob3dTY29yZU9wdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cInNjb3JlTnVtYmVyXCIgW2dyb3VwXT1cImFkZE9wdGlvbkZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiQWRkT3B0aW9uKClcIiAqbmdJZj1cIiFpc09wdGlvbkluRWRpdE1vZGVcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWJyYW5kIHctMTAwXCI+e3tsKFwiQWRkXCIpfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiQWRkT3B0aW9uKClcIiAqbmdJZj1cImlzT3B0aW9uSW5FZGl0TW9kZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tYnJhbmQgdy0xMDBcIj57e2woXCJFZGl0XCIpfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlciBwYi0wIG0tMFwiID5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodFwiICAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAge3tsKFwiQ2FuY2VsXCIpfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gYXBwUHJldmVudERvdWJsZUNsaWNrIHR5cGU9XCJzdWJtaXRcIiAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tYnJhbmRcIj57e2woXCJTYXZlXCIpfX08L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPC9CQlNGLUZvcm0+XHJcbiAgPC9kaXY+XHJcblxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=