@uiapplib/ngx-ui-web-lib 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (820) hide show
  1. package/README.md +46 -0
  2. package/esm2022/lib/annimations/app-animations.mjs +37 -0
  3. package/esm2022/lib/components/add-employer/add-employer.component.mjs +3725 -0
  4. package/esm2022/lib/components/add-participant/add-participant.component.mjs +453 -0
  5. package/esm2022/lib/components/add-payment/add-payment.component.mjs +207 -0
  6. package/esm2022/lib/components/add-wage/add-wage.component.mjs +161 -0
  7. package/esm2022/lib/components/address/address.component.mjs +700 -0
  8. package/esm2022/lib/components/address-popup/address-popup.component.mjs +97 -0
  9. package/esm2022/lib/components/address-suggestion/address-suggestion.component.mjs +289 -0
  10. package/esm2022/lib/components/appointment-self-scheduler/appointment-self-scheduler.component.mjs +245 -0
  11. package/esm2022/lib/components/associate-ssn/associate-ssn.component.mjs +203 -0
  12. package/esm2022/lib/components/bank-details/bank-details.component.mjs +276 -0
  13. package/esm2022/lib/components/captcha/captcha.component.mjs +181 -0
  14. package/esm2022/lib/components/card/card.component.mjs +55 -0
  15. package/esm2022/lib/components/claim-info/claim-info.component.mjs +408 -0
  16. package/esm2022/lib/components/contact-us/contact-us.component.mjs +958 -0
  17. package/esm2022/lib/components/content/content.component.mjs +61 -0
  18. package/esm2022/lib/components/correspondence-download/correspondence-download.component.mjs +83 -0
  19. package/esm2022/lib/components/dashboard-card/dashboard-card.component.mjs +251 -0
  20. package/esm2022/lib/components/dependent-grid/dependent-grid.component.mjs +316 -0
  21. package/esm2022/lib/components/disclosure/disclosure.component.mjs +60 -0
  22. package/esm2022/lib/components/dropdown/dropdown.component.mjs +1974 -0
  23. package/esm2022/lib/components/dropdown/dropdown.interface.mjs +2 -0
  24. package/esm2022/lib/components/dua-request-page/dua-request-page.component.mjs +596 -0
  25. package/esm2022/lib/components/dua-request-popup/dua-request-popup.component.mjs +356 -0
  26. package/esm2022/lib/components/email-update/email-update.component.mjs +283 -0
  27. package/esm2022/lib/components/employer-grid/employer-grid.component.mjs +950 -0
  28. package/esm2022/lib/components/employer-info/employer-info.component.mjs +319 -0
  29. package/esm2022/lib/components/employer-pay/employer-pay.component.mjs +238 -0
  30. package/esm2022/lib/components/employer-pay-grid/employer-pay-grid.component.mjs +302 -0
  31. package/esm2022/lib/components/error/error.component.mjs +103 -0
  32. package/esm2022/lib/components/farm-usage/farm-usage.component.mjs +172 -0
  33. package/esm2022/lib/components/fav-menu/fav-menu.component.mjs +163 -0
  34. package/esm2022/lib/components/file-download/file-download.component.mjs +104 -0
  35. package/esm2022/lib/components/file-uploader/file-uploader.component.mjs +444 -0
  36. package/esm2022/lib/components/footer/footer.component.mjs +361 -0
  37. package/esm2022/lib/components/gross-earnings/gross-earnings.component.mjs +201 -0
  38. package/esm2022/lib/components/header/header.component.mjs +801 -0
  39. package/esm2022/lib/components/help/help.component.mjs +49 -0
  40. package/esm2022/lib/components/history-page/history-page.component.mjs +571 -0
  41. package/esm2022/lib/components/idle-detector/idle-detector.component.mjs +65 -0
  42. package/esm2022/lib/components/idme/idme.component.mjs +84 -0
  43. package/esm2022/lib/components/info/info.component.mjs +179 -0
  44. package/esm2022/lib/components/job-search-result-page/job-search-result-page.component.mjs +206 -0
  45. package/esm2022/lib/components/job-title/job-title.component.mjs +157 -0
  46. package/esm2022/lib/components/legal-disclaimar/legal-disclaimar.component.mjs +247 -0
  47. package/esm2022/lib/components/link/link.component.mjs +131 -0
  48. package/esm2022/lib/components/maintenance-detector/maintenance-detector.component.mjs +43 -0
  49. package/esm2022/lib/components/mask/mask.component.mjs +48 -0
  50. package/esm2022/lib/components/menu/menu.component.mjs +420 -0
  51. package/esm2022/lib/components/mfa/mfa.component.mjs +444 -0
  52. package/esm2022/lib/components/mfa-popup/mfa-popup.component.mjs +50 -0
  53. package/esm2022/lib/components/money-expect/money-expect.component.mjs +202 -0
  54. package/esm2022/lib/components/msg/msg.component.mjs +48 -0
  55. package/esm2022/lib/components/news/news.component.mjs +90 -0
  56. package/esm2022/lib/components/offline-add-employer/offline-add-employer.component.mjs +3661 -0
  57. package/esm2022/lib/components/offline-bank-details/offline-bank-details.component.mjs +258 -0
  58. package/esm2022/lib/components/offline-employer-grid/offline-employer-grid.component.mjs +853 -0
  59. package/esm2022/lib/components/offline-legal-disclaimar/offline-legal-disclaimar.component.mjs +251 -0
  60. package/esm2022/lib/components/overlay-info/overlay-info.component.mjs +213 -0
  61. package/esm2022/lib/components/page/page.component.mjs +136 -0
  62. package/esm2022/lib/components/profile/profile.component.mjs +901 -0
  63. package/esm2022/lib/components/profile-redirect/profile-redirect.component.mjs +140 -0
  64. package/esm2022/lib/components/proof-of-anything/proof-of-anything.component.mjs +261 -0
  65. package/esm2022/lib/components/proof-of-document-upload/proof-of-document-upload.component.mjs +560 -0
  66. package/esm2022/lib/components/questionnaire/AppValidators.mjs +790 -0
  67. package/esm2022/lib/components/questionnaire/FbConstants.mjs +8 -0
  68. package/esm2022/lib/components/questionnaire/SelectItem.mjs +2 -0
  69. package/esm2022/lib/components/questionnaire/account-success/account-success.page.mjs +355 -0
  70. package/esm2022/lib/components/questionnaire/common-success/common-success.page.mjs +732 -0
  71. package/esm2022/lib/components/questionnaire/dynamic-form-panel.component.mjs +1096 -0
  72. package/esm2022/lib/components/questionnaire/dynamic-form-question.component.mjs +2246 -0
  73. package/esm2022/lib/components/questionnaire/dynamic-form.component.mjs +1297 -0
  74. package/esm2022/lib/components/questionnaire/form-builder/form-builder.page.mjs +262 -0
  75. package/esm2022/lib/components/questionnaire/input-focus.directive.mjs +44 -0
  76. package/esm2022/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.mjs +342 -0
  77. package/esm2022/lib/components/questionnaire/question-base.mjs +3 -0
  78. package/esm2022/lib/components/questionnaire/question-control.service.mjs +409 -0
  79. package/esm2022/lib/components/questionnaire/question.service.mjs +31 -0
  80. package/esm2022/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.mjs +268 -0
  81. package/esm2022/lib/components/read-more/read-more.component.mjs +72 -0
  82. package/esm2022/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.mjs +950 -0
  83. package/esm2022/lib/components/scrollable-text/scrollable-text.component.mjs +25 -0
  84. package/esm2022/lib/components/search-employer/search-employer.component.mjs +257 -0
  85. package/esm2022/lib/components/select/select.component.mjs +154 -0
  86. package/esm2022/lib/components/sign-ssn/sign-ssn.component.mjs +141 -0
  87. package/esm2022/lib/components/sms/sms.component.mjs +336 -0
  88. package/esm2022/lib/components/ssn/ssn.component.mjs +44 -0
  89. package/esm2022/lib/components/ssn-reverify/ssn-reverify.component.mjs +151 -0
  90. package/esm2022/lib/components/test/test.component.mjs +19 -0
  91. package/esm2022/lib/components/user-login/user-login.component.mjs +398 -0
  92. package/esm2022/lib/components/wage-calculator/wage-calculator.component.mjs +527 -0
  93. package/esm2022/lib/components/wage-grid/wage-grid.component.mjs +274 -0
  94. package/esm2022/lib/components/weekly-acknowledgement-ms/acknowledgement-ms.component.mjs +147 -0
  95. package/esm2022/lib/components/weekly-acknowledgement-v2/acknowledgement.component-v2.mjs +167 -0
  96. package/esm2022/lib/components/weekly-cert-employer/weekly-cert-employer.component.mjs +1040 -0
  97. package/esm2022/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.mjs +420 -0
  98. package/esm2022/lib/components/weekly-certification/weekly-certification.component.mjs +828 -0
  99. package/esm2022/lib/components/weekly-confirmation/confirmation.component.mjs +129 -0
  100. package/esm2022/lib/components/weekly-interim-confirmation/interim-confirmation.component.mjs +136 -0
  101. package/esm2022/lib/components/weekly-summary-v2/summary.component-v2.mjs +72 -0
  102. package/esm2022/lib/components/weekly-work-performed-popup/weekly-work-performed-popup.component.mjs +50 -0
  103. package/esm2022/lib/components/weekly-work-search-counter/work-search-counter.component.mjs +92 -0
  104. package/esm2022/lib/components/weekly-work-search-employer-me/work-search-employer.component-me.mjs +1190 -0
  105. package/esm2022/lib/components/weekly-work-search-employer-ms/work-search-employer-ms.component.mjs +690 -0
  106. package/esm2022/lib/components/weekly-work-search-employer-v2/work-search-employer.component-v2.mjs +524 -0
  107. package/esm2022/lib/components/weekly-work-search-journal/weekly-work-search-journal.component.mjs +394 -0
  108. package/esm2022/lib/components/weekly-work-search-question-v2/work-search-question.component-v2.mjs +640 -0
  109. package/esm2022/lib/directives/auto-focus/auto-focus.directive.mjs +31 -0
  110. package/esm2022/lib/directives/caps-lock.directive.mjs +38 -0
  111. package/esm2022/lib/directives/required-roles/required-roles.directive.mjs +30 -0
  112. package/esm2022/lib/directives/strip-invisible-characters/strip-invisible-characters.directive.mjs +33 -0
  113. package/esm2022/lib/enums/AddressValidationResponseEnum.mjs +9 -0
  114. package/esm2022/lib/enums/AddressValidationSourceFunctionEnum.mjs +5 -0
  115. package/esm2022/lib/enums/EmailStatusEnum.mjs +9 -0
  116. package/esm2022/lib/guards/auth.guard.mjs +186 -0
  117. package/esm2022/lib/guards/no-login/no-login.guard.mjs +21 -0
  118. package/esm2022/lib/interceptors/error-interceptor/http-error-interceptor.mjs +155 -0
  119. package/esm2022/lib/interceptors/header-interceptor/http-header.interceptor.mjs +98 -0
  120. package/esm2022/lib/models/ActiveClaimModel.mjs +3 -0
  121. package/esm2022/lib/models/AddressComponentModel.mjs +3 -0
  122. package/esm2022/lib/models/BankDetailsComponentModel.mjs +3 -0
  123. package/esm2022/lib/models/BankDetailsModel.mjs +3 -0
  124. package/esm2022/lib/models/CinRequalificationCriteriaModel.mjs +3 -0
  125. package/esm2022/lib/models/CountyModel.mjs +3 -0
  126. package/esm2022/lib/models/DuaAppDataModel.mjs +3 -0
  127. package/esm2022/lib/models/DuaRequestModel.mjs +3 -0
  128. package/esm2022/lib/models/DuaRetroWeeksComponentModel.mjs +6 -0
  129. package/esm2022/lib/models/EmployerDetailSearchResult.mjs +6 -0
  130. package/esm2022/lib/models/EmployerInfoComponentModel.mjs +4 -0
  131. package/esm2022/lib/models/EmployerPayInfoModel.mjs +6 -0
  132. package/esm2022/lib/models/ErrorModel.mjs +6 -0
  133. package/esm2022/lib/models/FarmUsageComponentModel.mjs +2 -0
  134. package/esm2022/lib/models/FileModel.mjs +2 -0
  135. package/esm2022/lib/models/GrossEarningsModel.mjs +3 -0
  136. package/esm2022/lib/models/HelpConstants.mjs +5 -0
  137. package/esm2022/lib/models/LexisNexisOtpDetailsResponseModel.mjs +3 -0
  138. package/esm2022/lib/models/LibConstants.mjs +171 -0
  139. package/esm2022/lib/models/NewsAndAnnouncementModel.mjs +3 -0
  140. package/esm2022/lib/models/NotificationModel.mjs +6 -0
  141. package/esm2022/lib/models/OtpAuthModel.mjs +3 -0
  142. package/esm2022/lib/models/PaymentComponentModel.mjs +2 -0
  143. package/esm2022/lib/models/ReasonSeparationRequestModel.mjs +3 -0
  144. package/esm2022/lib/models/RequalifyLiftPageModel.mjs +11 -0
  145. package/esm2022/lib/models/RetroWeeksModel.mjs +3 -0
  146. package/esm2022/lib/models/SecurityQuestionAnswerModel.mjs +3 -0
  147. package/esm2022/lib/models/SendOtpRequestModel.mjs +3 -0
  148. package/esm2022/lib/models/SsaVerificationModel.mjs +3 -0
  149. package/esm2022/lib/models/TrendModel.mjs +3 -0
  150. package/esm2022/lib/models/UserDetailsModel.mjs +3 -0
  151. package/esm2022/lib/models/UserModel.mjs +6 -0
  152. package/esm2022/lib/models/VerifyOtpRequestModel.mjs +3 -0
  153. package/esm2022/lib/models/WageCalculatorModel.mjs +3 -0
  154. package/esm2022/lib/models/WageInfoModel.mjs +4 -0
  155. package/esm2022/lib/models/addressValidation/AddressRecommendationModel.mjs +3 -0
  156. package/esm2022/lib/models/addressValidation/AddressValidationRequestComponentModel.mjs +3 -0
  157. package/esm2022/lib/models/addressValidation/AddressValidationResponseComponentModel.mjs +3 -0
  158. package/esm2022/lib/models/addressValidation/AddressValidationReturnComponentModel.mjs +3 -0
  159. package/esm2022/lib/models/case/CaseAttachmentModel.mjs +3 -0
  160. package/esm2022/lib/models/claimant/ClaimantModel.mjs +3 -0
  161. package/esm2022/lib/models/claimant/JobResultsData.mjs +3 -0
  162. package/esm2022/lib/models/claimant/MatchingJobs.mjs +3 -0
  163. package/esm2022/lib/models/claimant/ResetPasswordModel.mjs +3 -0
  164. package/esm2022/lib/models/cmp/CaseCoreModel.mjs +3 -0
  165. package/esm2022/lib/models/cmp/ComplaintCategoryModel.mjs +3 -0
  166. package/esm2022/lib/models/cmp/ComplaintCategoryOutputModel.mjs +5 -0
  167. package/esm2022/lib/models/cmp/ContactUsModel.mjs +3 -0
  168. package/esm2022/lib/models/cmp/EmailTemplateModel.mjs +3 -0
  169. package/esm2022/lib/models/cmp/contactUsInqueryModel.mjs +7 -0
  170. package/esm2022/lib/models/cmp/messageRourceModel.mjs +3 -0
  171. package/esm2022/lib/models/combo-model.mjs +343 -0
  172. package/esm2022/lib/models/dashboard-model.mjs +3 -0
  173. package/esm2022/lib/models/dependent.model.mjs +8 -0
  174. package/esm2022/lib/models/fileupload/DocUploadModel.mjs +7 -0
  175. package/esm2022/lib/models/fileupload/EmployerDataModel.mjs +3 -0
  176. package/esm2022/lib/models/fileupload/FileObject.mjs +3 -0
  177. package/esm2022/lib/models/fileupload/FileObjectArray.mjs +7 -0
  178. package/esm2022/lib/models/questionnaire/AppealParticipantModel.mjs +8 -0
  179. package/esm2022/lib/models/questionnaire/AutocoderModel.mjs +3 -0
  180. package/esm2022/lib/models/questionnaire/ClaimAppEmpRequestModel.mjs +3 -0
  181. package/esm2022/lib/models/questionnaire/ClaimAppEmpResponseModel.mjs +8 -0
  182. package/esm2022/lib/models/questionnaire/ClaimAppEmployerDetailsModel.mjs +7 -0
  183. package/esm2022/lib/models/questionnaire/ClaimOnlyEmployerDataModel.mjs +3 -0
  184. package/esm2022/lib/models/questionnaire/ComboModel.mjs +453 -0
  185. package/esm2022/lib/models/questionnaire/ElementsModel.mjs +8 -0
  186. package/esm2022/lib/models/questionnaire/EmployerDetailSearchResult.mjs +3 -0
  187. package/esm2022/lib/models/questionnaire/EmployerWagesModel.mjs +3 -0
  188. package/esm2022/lib/models/questionnaire/FBConfigModel.mjs +6 -0
  189. package/esm2022/lib/models/questionnaire/KeyValueModel.mjs +3 -0
  190. package/esm2022/lib/models/questionnaire/LegalDiscaimarModel.mjs +3 -0
  191. package/esm2022/lib/models/questionnaire/LoaderModel.mjs +3 -0
  192. package/esm2022/lib/models/questionnaire/PollingStatusModel.mjs +3 -0
  193. package/esm2022/lib/models/questionnaire/QtrYearEmployerWageModel.mjs +3 -0
  194. package/esm2022/lib/models/questionnaire/QuestionnaireQueryModel.mjs +8 -0
  195. package/esm2022/lib/models/questionnaire/QuestionnaireReturnModel.mjs +11 -0
  196. package/esm2022/lib/models/questionnaire/QuestionnaireSaveModel.mjs +3 -0
  197. package/esm2022/lib/models/questionnaire/RequalifyLiftIssuesModel.mjs +3 -0
  198. package/esm2022/lib/models/questionnaire/ScrollableTextModel.mjs +3 -0
  199. package/esm2022/lib/models/questionnaire/ServiceActionResponseModel.mjs +3 -0
  200. package/esm2022/lib/models/questionnaire/StatusModel.mjs +6 -0
  201. package/esm2022/lib/models/questionnaire/SuccessPageElement.mjs +3 -0
  202. package/esm2022/lib/models/questionnaire/UI512AResponseModel.mjs +3 -0
  203. package/esm2022/lib/models/questionnaire/ValidationModel.mjs +3 -0
  204. package/esm2022/lib/models/questionnaire/WbaHelperTextModel.mjs +3 -0
  205. package/esm2022/lib/models/weekly-cert/WorkSearchWaiverModel.mjs +3 -0
  206. package/esm2022/lib/models/weekly-cert/address-detail-model.mjs +2 -0
  207. package/esm2022/lib/models/weekly-cert/admin-leave-details-model.mjs +7 -0
  208. package/esm2022/lib/models/weekly-cert/employer-info-v2-model.mjs +7 -0
  209. package/esm2022/lib/models/weekly-cert/weekly-cert-eligibility-v2-model.mjs +6 -0
  210. package/esm2022/lib/models/weekly-cert/weekly-certification-v2-model.mjs +34 -0
  211. package/esm2022/lib/models/weekly-cert/work-search-record-v2-model.mjs +15 -0
  212. package/esm2022/lib/models/weekly-cert/work-search-v2-model.mjs +11 -0
  213. package/esm2022/lib/ngx-reusa-app-lib.component.mjs +23 -0
  214. package/esm2022/lib/ngx-reusa-app-lib.module.mjs +522 -0
  215. package/esm2022/lib/ngx-reusa-app-lib.service.mjs +14 -0
  216. package/esm2022/lib/pages/BasePage.mjs +79 -0
  217. package/esm2022/lib/pages/common/accessibility-policy/accessibility-policy.page.mjs +81 -0
  218. package/esm2022/lib/pages/common/change-password/change-password.page.mjs +489 -0
  219. package/esm2022/lib/pages/common/landing/landing.component.mjs +208 -0
  220. package/esm2022/lib/pages/common/landing2/landing2.component.mjs +244 -0
  221. package/esm2022/lib/pages/common/login/login.component.mjs +527 -0
  222. package/esm2022/lib/pages/common/not-found/not-found.page.mjs +24 -0
  223. package/esm2022/lib/pages/common/privacy-disclaimer/privacy-disclaimer.page.mjs +306 -0
  224. package/esm2022/lib/pages/common/security-policy/security-policy.page.mjs +61 -0
  225. package/esm2022/lib/pages/common/unauthorized/unauthorized.page.mjs +24 -0
  226. package/esm2022/lib/pages/popovers/language/language.page.mjs +61 -0
  227. package/esm2022/lib/pages/popovers/my-notifications/my-notifications.page.mjs +204 -0
  228. package/esm2022/lib/pages/popovers/my-profile/my-profile.page.mjs +134 -0
  229. package/esm2022/lib/pages/popovers/user-search/user-search.component.mjs +251 -0
  230. package/esm2022/lib/pipes/filter.pipe.mjs +30 -0
  231. package/esm2022/lib/pipes/format-worksearch/format-worksearch.pipe.mjs +101 -0
  232. package/esm2022/lib/pipes/mask/mask.email.pipe.mjs +23 -0
  233. package/esm2022/lib/pipes/proper-case/proper-case.pipe.mjs +27 -0
  234. package/esm2022/lib/pipes/translate/dynamic-translate.pipe.mjs +44 -0
  235. package/esm2022/lib/pipes/trust-html/trust-html.pipe.mjs +20 -0
  236. package/esm2022/lib/services/address-validation-service/address-validation.service.mjs +151 -0
  237. package/esm2022/lib/services/appeal/appeal.service.mjs +37 -0
  238. package/esm2022/lib/services/base-service.mjs +53 -0
  239. package/esm2022/lib/services/birt-service/birt.service.mjs +57 -0
  240. package/esm2022/lib/services/captcha/captcha.service.mjs +46 -0
  241. package/esm2022/lib/services/case-service/case.service.mjs +47 -0
  242. package/esm2022/lib/services/chatbot/chatbot.service.mjs +257 -0
  243. package/esm2022/lib/services/chatbot/script.const.mjs +42 -0
  244. package/esm2022/lib/services/claimant/claimant.service.mjs +31 -0
  245. package/esm2022/lib/services/claimant-context/claimant-context.service.mjs +48 -0
  246. package/esm2022/lib/services/claimant-service/claimant.service.mjs +56 -0
  247. package/esm2022/lib/services/claims/claims.service.mjs +193 -0
  248. package/esm2022/lib/services/cmp-service/cmp.service.mjs +84 -0
  249. package/esm2022/lib/services/dms-service/dms.service.mjs +60 -0
  250. package/esm2022/lib/services/employer/employer-service.mjs +35 -0
  251. package/esm2022/lib/services/event-service/event-service.mjs +44 -0
  252. package/esm2022/lib/services/fpjs/fingerprint.service.mjs +70 -0
  253. package/esm2022/lib/services/google-analytics/google-analytics.service.mjs +29 -0
  254. package/esm2022/lib/services/help/help.service.mjs +63 -0
  255. package/esm2022/lib/services/idle/idle.service.mjs +159 -0
  256. package/esm2022/lib/services/logger/logger.service.mjs +67 -0
  257. package/esm2022/lib/services/login/login.service.mjs +358 -0
  258. package/esm2022/lib/services/maintenance/maintenance.service.mjs +21 -0
  259. package/esm2022/lib/services/notification/notification.service.mjs +113 -0
  260. package/esm2022/lib/services/offline-claims/offline-claims.service.mjs +327 -0
  261. package/esm2022/lib/services/questionnaire/questionnaire.service.mjs +72 -0
  262. package/esm2022/lib/services/questionnaire/validation.service.mjs +62 -0
  263. package/esm2022/lib/services/security-service/security.service.mjs +59 -0
  264. package/esm2022/lib/services/tour/tour.service.mjs +60 -0
  265. package/esm2022/lib/services/util/util.service.mjs +506 -0
  266. package/esm2022/lib/services/weekly-cert/review.service.mjs +101 -0
  267. package/esm2022/lib/services/weekly-cert/weekly-cert-v2.service.mjs +214 -0
  268. package/esm2022/lib/services/weekly-cert/weekly-cert.service.mjs +37 -0
  269. package/esm2022/lib/services/weekly-cert/work-search.service.mjs +58 -0
  270. package/esm2022/lib/validations/AppRegex.mjs +49 -0
  271. package/esm2022/lib/validations/AppValidators.mjs +269 -0
  272. package/esm2022/public-api.mjs +180 -0
  273. package/esm2022/uiapplib-ngx-ui-web-lib.mjs +5 -0
  274. package/fesm2022/uiapplib-ngx-ui-web-lib.mjs +51647 -0
  275. package/fesm2022/uiapplib-ngx-ui-web-lib.mjs.map +1 -0
  276. package/index.d.ts +6 -0
  277. package/lib/annimations/app-animations.d.ts +4 -0
  278. package/lib/annimations/app-animations.d.ts.map +1 -0
  279. package/lib/components/add-employer/add-employer.component.d.ts +318 -0
  280. package/lib/components/add-employer/add-employer.component.d.ts.map +1 -0
  281. package/lib/components/add-participant/add-participant.component.d.ts +55 -0
  282. package/lib/components/add-participant/add-participant.component.d.ts.map +1 -0
  283. package/lib/components/add-payment/add-payment.component.d.ts +39 -0
  284. package/lib/components/add-payment/add-payment.component.d.ts.map +1 -0
  285. package/lib/components/add-wage/add-wage.component.d.ts +30 -0
  286. package/lib/components/add-wage/add-wage.component.d.ts.map +1 -0
  287. package/lib/components/address/address.component.d.ts +108 -0
  288. package/lib/components/address/address.component.d.ts.map +1 -0
  289. package/lib/components/address-popup/address-popup.component.d.ts +16 -0
  290. package/lib/components/address-popup/address-popup.component.d.ts.map +1 -0
  291. package/lib/components/address-suggestion/address-suggestion.component.d.ts +43 -0
  292. package/lib/components/address-suggestion/address-suggestion.component.d.ts.map +1 -0
  293. package/lib/components/appointment-self-scheduler/appointment-self-scheduler.component.d.ts +37 -0
  294. package/lib/components/appointment-self-scheduler/appointment-self-scheduler.component.d.ts.map +1 -0
  295. package/lib/components/associate-ssn/associate-ssn.component.d.ts +33 -0
  296. package/lib/components/associate-ssn/associate-ssn.component.d.ts.map +1 -0
  297. package/lib/components/bank-details/bank-details.component.d.ts +40 -0
  298. package/lib/components/bank-details/bank-details.component.d.ts.map +1 -0
  299. package/lib/components/captcha/captcha.component.d.ts +45 -0
  300. package/lib/components/captcha/captcha.component.d.ts.map +1 -0
  301. package/lib/components/card/card.component.d.ts +12 -0
  302. package/lib/components/card/card.component.d.ts.map +1 -0
  303. package/lib/components/claim-info/claim-info.component.d.ts +49 -0
  304. package/lib/components/claim-info/claim-info.component.d.ts.map +1 -0
  305. package/lib/components/contact-us/contact-us.component.d.ts +106 -0
  306. package/lib/components/contact-us/contact-us.component.d.ts.map +1 -0
  307. package/lib/components/content/content.component.d.ts +14 -0
  308. package/lib/components/content/content.component.d.ts.map +1 -0
  309. package/lib/components/correspondence-download/correspondence-download.component.d.ts +22 -0
  310. package/lib/components/correspondence-download/correspondence-download.component.d.ts.map +1 -0
  311. package/lib/components/dashboard-card/dashboard-card.component.d.ts +26 -0
  312. package/lib/components/dashboard-card/dashboard-card.component.d.ts.map +1 -0
  313. package/lib/components/dependent-grid/dependent-grid.component.d.ts +36 -0
  314. package/lib/components/dependent-grid/dependent-grid.component.d.ts.map +1 -0
  315. package/lib/components/disclosure/disclosure.component.d.ts +13 -0
  316. package/lib/components/disclosure/disclosure.component.d.ts.map +1 -0
  317. package/lib/components/dropdown/dropdown.component.d.ts +582 -0
  318. package/lib/components/dropdown/dropdown.component.d.ts.map +1 -0
  319. package/lib/components/dropdown/dropdown.interface.d.ts +155 -0
  320. package/lib/components/dropdown/dropdown.interface.d.ts.map +1 -0
  321. package/lib/components/dua-request-page/dua-request-page.component.d.ts +74 -0
  322. package/lib/components/dua-request-page/dua-request-page.component.d.ts.map +1 -0
  323. package/lib/components/dua-request-popup/dua-request-popup.component.d.ts +61 -0
  324. package/lib/components/dua-request-popup/dua-request-popup.component.d.ts.map +1 -0
  325. package/lib/components/email-update/email-update.component.d.ts +32 -0
  326. package/lib/components/email-update/email-update.component.d.ts.map +1 -0
  327. package/lib/components/employer-grid/employer-grid.component.d.ts +100 -0
  328. package/lib/components/employer-grid/employer-grid.component.d.ts.map +1 -0
  329. package/lib/components/employer-info/employer-info.component.d.ts +50 -0
  330. package/lib/components/employer-info/employer-info.component.d.ts.map +1 -0
  331. package/lib/components/employer-pay/employer-pay.component.d.ts +51 -0
  332. package/lib/components/employer-pay/employer-pay.component.d.ts.map +1 -0
  333. package/lib/components/employer-pay-grid/employer-pay-grid.component.d.ts +43 -0
  334. package/lib/components/employer-pay-grid/employer-pay-grid.component.d.ts.map +1 -0
  335. package/lib/components/error/error.component.d.ts +19 -0
  336. package/lib/components/error/error.component.d.ts.map +1 -0
  337. package/lib/components/farm-usage/farm-usage.component.d.ts +33 -0
  338. package/lib/components/farm-usage/farm-usage.component.d.ts.map +1 -0
  339. package/lib/components/fav-menu/fav-menu.component.d.ts +22 -0
  340. package/lib/components/fav-menu/fav-menu.component.d.ts.map +1 -0
  341. package/lib/components/file-download/file-download.component.d.ts +23 -0
  342. package/lib/components/file-download/file-download.component.d.ts.map +1 -0
  343. package/lib/components/file-uploader/file-uploader.component.d.ts +52 -0
  344. package/lib/components/file-uploader/file-uploader.component.d.ts.map +1 -0
  345. package/lib/components/footer/footer.component.d.ts +37 -0
  346. package/lib/components/footer/footer.component.d.ts.map +1 -0
  347. package/lib/components/gross-earnings/gross-earnings.component.d.ts +42 -0
  348. package/lib/components/gross-earnings/gross-earnings.component.d.ts.map +1 -0
  349. package/lib/components/header/header.component.d.ts +76 -0
  350. package/lib/components/header/header.component.d.ts.map +1 -0
  351. package/lib/components/help/help.component.d.ts +11 -0
  352. package/lib/components/help/help.component.d.ts.map +1 -0
  353. package/lib/components/history-page/history-page.component.d.ts +80 -0
  354. package/lib/components/history-page/history-page.component.d.ts.map +1 -0
  355. package/lib/components/idle-detector/idle-detector.component.d.ts +16 -0
  356. package/lib/components/idle-detector/idle-detector.component.d.ts.map +1 -0
  357. package/lib/components/idme/idme.component.d.ts +19 -0
  358. package/lib/components/idme/idme.component.d.ts.map +1 -0
  359. package/lib/components/info/info.component.d.ts +23 -0
  360. package/lib/components/info/info.component.d.ts.map +1 -0
  361. package/lib/components/job-search-result-page/job-search-result-page.component.d.ts +22 -0
  362. package/lib/components/job-search-result-page/job-search-result-page.component.d.ts.map +1 -0
  363. package/lib/components/job-title/job-title.component.d.ts +37 -0
  364. package/lib/components/job-title/job-title.component.d.ts.map +1 -0
  365. package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts +38 -0
  366. package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts.map +1 -0
  367. package/lib/components/link/link.component.d.ts +35 -0
  368. package/lib/components/link/link.component.d.ts.map +1 -0
  369. package/lib/components/maintenance-detector/maintenance-detector.component.d.ts +16 -0
  370. package/lib/components/maintenance-detector/maintenance-detector.component.d.ts.map +1 -0
  371. package/lib/components/mask/mask.component.d.ts +12 -0
  372. package/lib/components/mask/mask.component.d.ts.map +1 -0
  373. package/lib/components/menu/menu.component.d.ts +45 -0
  374. package/lib/components/menu/menu.component.d.ts.map +1 -0
  375. package/lib/components/mfa/mfa.component.d.ts +60 -0
  376. package/lib/components/mfa/mfa.component.d.ts.map +1 -0
  377. package/lib/components/mfa-popup/mfa-popup.component.d.ts +17 -0
  378. package/lib/components/mfa-popup/mfa-popup.component.d.ts.map +1 -0
  379. package/lib/components/money-expect/money-expect.component.d.ts +30 -0
  380. package/lib/components/money-expect/money-expect.component.d.ts.map +1 -0
  381. package/lib/components/msg/msg.component.d.ts +11 -0
  382. package/lib/components/msg/msg.component.d.ts.map +1 -0
  383. package/lib/components/news/news.component.d.ts +15 -0
  384. package/lib/components/news/news.component.d.ts.map +1 -0
  385. package/lib/components/offline-add-employer/offline-add-employer.component.d.ts +311 -0
  386. package/lib/components/offline-add-employer/offline-add-employer.component.d.ts.map +1 -0
  387. package/lib/components/offline-bank-details/offline-bank-details.component.d.ts +33 -0
  388. package/lib/components/offline-bank-details/offline-bank-details.component.d.ts.map +1 -0
  389. package/lib/components/offline-employer-grid/offline-employer-grid.component.d.ts +97 -0
  390. package/lib/components/offline-employer-grid/offline-employer-grid.component.d.ts.map +1 -0
  391. package/lib/components/offline-legal-disclaimar/offline-legal-disclaimar.component.d.ts +33 -0
  392. package/lib/components/offline-legal-disclaimar/offline-legal-disclaimar.component.d.ts.map +1 -0
  393. package/lib/components/overlay-info/overlay-info.component.d.ts +35 -0
  394. package/lib/components/overlay-info/overlay-info.component.d.ts.map +1 -0
  395. package/lib/components/page/page.component.d.ts +24 -0
  396. package/lib/components/page/page.component.d.ts.map +1 -0
  397. package/lib/components/profile/profile.component.d.ts +107 -0
  398. package/lib/components/profile/profile.component.d.ts.map +1 -0
  399. package/lib/components/profile-redirect/profile-redirect.component.d.ts +21 -0
  400. package/lib/components/profile-redirect/profile-redirect.component.d.ts.map +1 -0
  401. package/lib/components/proof-of-anything/proof-of-anything.component.d.ts +54 -0
  402. package/lib/components/proof-of-anything/proof-of-anything.component.d.ts.map +1 -0
  403. package/lib/components/proof-of-document-upload/proof-of-document-upload.component.d.ts +74 -0
  404. package/lib/components/proof-of-document-upload/proof-of-document-upload.component.d.ts.map +1 -0
  405. package/lib/components/questionnaire/AppValidators.d.ts +17 -0
  406. package/lib/components/questionnaire/AppValidators.d.ts.map +1 -0
  407. package/lib/components/questionnaire/FbConstants.d.ts +8 -0
  408. package/lib/components/questionnaire/FbConstants.d.ts.map +1 -0
  409. package/lib/components/questionnaire/SelectItem.d.ts +5 -0
  410. package/lib/components/questionnaire/SelectItem.d.ts.map +1 -0
  411. package/lib/components/questionnaire/account-success/account-success.page.d.ts +64 -0
  412. package/lib/components/questionnaire/account-success/account-success.page.d.ts.map +1 -0
  413. package/lib/components/questionnaire/common-success/common-success.page.d.ts +83 -0
  414. package/lib/components/questionnaire/common-success/common-success.page.d.ts.map +1 -0
  415. package/lib/components/questionnaire/dynamic-form-panel.component.d.ts +49 -0
  416. package/lib/components/questionnaire/dynamic-form-panel.component.d.ts.map +1 -0
  417. package/lib/components/questionnaire/dynamic-form-question.component.d.ts +126 -0
  418. package/lib/components/questionnaire/dynamic-form-question.component.d.ts.map +1 -0
  419. package/lib/components/questionnaire/dynamic-form.component.d.ts +137 -0
  420. package/lib/components/questionnaire/dynamic-form.component.d.ts.map +1 -0
  421. package/lib/components/questionnaire/form-builder/form-builder.page.d.ts +67 -0
  422. package/lib/components/questionnaire/form-builder/form-builder.page.d.ts.map +1 -0
  423. package/lib/components/questionnaire/input-focus.directive.d.ts +12 -0
  424. package/lib/components/questionnaire/input-focus.directive.d.ts.map +1 -0
  425. package/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.d.ts +45 -0
  426. package/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.d.ts.map +1 -0
  427. package/lib/components/questionnaire/question-base.d.ts +17 -0
  428. package/lib/components/questionnaire/question-base.d.ts.map +1 -0
  429. package/lib/components/questionnaire/question-control.service.d.ts +21 -0
  430. package/lib/components/questionnaire/question-control.service.d.ts.map +1 -0
  431. package/lib/components/questionnaire/question.service.d.ts +18 -0
  432. package/lib/components/questionnaire/question.service.d.ts.map +1 -0
  433. package/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.d.ts +77 -0
  434. package/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.d.ts.map +1 -0
  435. package/lib/components/read-more/read-more.component.d.ts +15 -0
  436. package/lib/components/read-more/read-more.component.d.ts.map +1 -0
  437. package/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.d.ts +76 -0
  438. package/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.d.ts.map +1 -0
  439. package/lib/components/scrollable-text/scrollable-text.component.d.ts +11 -0
  440. package/lib/components/scrollable-text/scrollable-text.component.d.ts.map +1 -0
  441. package/lib/components/search-employer/search-employer.component.d.ts +41 -0
  442. package/lib/components/search-employer/search-employer.component.d.ts.map +1 -0
  443. package/lib/components/select/select.component.d.ts +56 -0
  444. package/lib/components/select/select.component.d.ts.map +1 -0
  445. package/lib/components/sign-ssn/sign-ssn.component.d.ts +34 -0
  446. package/lib/components/sign-ssn/sign-ssn.component.d.ts.map +1 -0
  447. package/lib/components/sms/sms.component.d.ts +63 -0
  448. package/lib/components/sms/sms.component.d.ts.map +1 -0
  449. package/lib/components/ssn/ssn.component.d.ts +12 -0
  450. package/lib/components/ssn/ssn.component.d.ts.map +1 -0
  451. package/lib/components/ssn-reverify/ssn-reverify.component.d.ts +23 -0
  452. package/lib/components/ssn-reverify/ssn-reverify.component.d.ts.map +1 -0
  453. package/lib/components/test/test.component.d.ts +9 -0
  454. package/lib/components/test/test.component.d.ts.map +1 -0
  455. package/lib/components/user-login/user-login.component.d.ts +49 -0
  456. package/lib/components/user-login/user-login.component.d.ts.map +1 -0
  457. package/lib/components/wage-calculator/wage-calculator.component.d.ts +44 -0
  458. package/lib/components/wage-calculator/wage-calculator.component.d.ts.map +1 -0
  459. package/lib/components/wage-grid/wage-grid.component.d.ts +43 -0
  460. package/lib/components/wage-grid/wage-grid.component.d.ts.map +1 -0
  461. package/lib/components/weekly-acknowledgement-ms/acknowledgement-ms.component.d.ts +28 -0
  462. package/lib/components/weekly-acknowledgement-ms/acknowledgement-ms.component.d.ts.map +1 -0
  463. package/lib/components/weekly-acknowledgement-v2/acknowledgement.component-v2.d.ts +28 -0
  464. package/lib/components/weekly-acknowledgement-v2/acknowledgement.component-v2.d.ts.map +1 -0
  465. package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts +84 -0
  466. package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts.map +1 -0
  467. package/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.d.ts +53 -0
  468. package/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.d.ts.map +1 -0
  469. package/lib/components/weekly-certification/weekly-certification.component.d.ts +101 -0
  470. package/lib/components/weekly-certification/weekly-certification.component.d.ts.map +1 -0
  471. package/lib/components/weekly-confirmation/confirmation.component.d.ts +21 -0
  472. package/lib/components/weekly-confirmation/confirmation.component.d.ts.map +1 -0
  473. package/lib/components/weekly-interim-confirmation/interim-confirmation.component.d.ts +34 -0
  474. package/lib/components/weekly-interim-confirmation/interim-confirmation.component.d.ts.map +1 -0
  475. package/lib/components/weekly-summary-v2/summary.component-v2.d.ts +17 -0
  476. package/lib/components/weekly-summary-v2/summary.component-v2.d.ts.map +1 -0
  477. package/lib/components/weekly-work-performed-popup/weekly-work-performed-popup.component.d.ts +10 -0
  478. package/lib/components/weekly-work-performed-popup/weekly-work-performed-popup.component.d.ts.map +1 -0
  479. package/lib/components/weekly-work-search-counter/work-search-counter.component.d.ts +17 -0
  480. package/lib/components/weekly-work-search-counter/work-search-counter.component.d.ts.map +1 -0
  481. package/lib/components/weekly-work-search-employer-me/work-search-employer.component-me.d.ts +105 -0
  482. package/lib/components/weekly-work-search-employer-me/work-search-employer.component-me.d.ts.map +1 -0
  483. package/lib/components/weekly-work-search-employer-ms/work-search-employer-ms.component.d.ts +71 -0
  484. package/lib/components/weekly-work-search-employer-ms/work-search-employer-ms.component.d.ts.map +1 -0
  485. package/lib/components/weekly-work-search-employer-v2/work-search-employer.component-v2.d.ts +59 -0
  486. package/lib/components/weekly-work-search-employer-v2/work-search-employer.component-v2.d.ts.map +1 -0
  487. package/lib/components/weekly-work-search-journal/weekly-work-search-journal.component.d.ts +47 -0
  488. package/lib/components/weekly-work-search-journal/weekly-work-search-journal.component.d.ts.map +1 -0
  489. package/lib/components/weekly-work-search-question-v2/work-search-question.component-v2.d.ts +78 -0
  490. package/lib/components/weekly-work-search-question-v2/work-search-question.component-v2.d.ts.map +1 -0
  491. package/lib/directives/auto-focus/auto-focus.directive.d.ts +13 -0
  492. package/lib/directives/auto-focus/auto-focus.directive.d.ts.map +1 -0
  493. package/lib/directives/caps-lock.directive.d.ts +12 -0
  494. package/lib/directives/caps-lock.directive.d.ts.map +1 -0
  495. package/lib/directives/required-roles/required-roles.directive.d.ts +15 -0
  496. package/lib/directives/required-roles/required-roles.directive.d.ts.map +1 -0
  497. package/lib/directives/strip-invisible-characters/strip-invisible-characters.directive.d.ts +8 -0
  498. package/lib/directives/strip-invisible-characters/strip-invisible-characters.directive.d.ts.map +1 -0
  499. package/lib/enums/AddressValidationResponseEnum.d.ts +8 -0
  500. package/lib/enums/AddressValidationResponseEnum.d.ts.map +1 -0
  501. package/lib/enums/AddressValidationSourceFunctionEnum.d.ts +4 -0
  502. package/lib/enums/AddressValidationSourceFunctionEnum.d.ts.map +1 -0
  503. package/lib/enums/EmailStatusEnum.d.ts +8 -0
  504. package/lib/enums/EmailStatusEnum.d.ts.map +1 -0
  505. package/lib/guards/auth.guard.d.ts +29 -0
  506. package/lib/guards/auth.guard.d.ts.map +1 -0
  507. package/lib/guards/no-login/no-login.guard.d.ts +12 -0
  508. package/lib/guards/no-login/no-login.guard.d.ts.map +1 -0
  509. package/lib/interceptors/error-interceptor/http-error-interceptor.d.ts +23 -0
  510. package/lib/interceptors/error-interceptor/http-error-interceptor.d.ts.map +1 -0
  511. package/lib/interceptors/header-interceptor/http-header.interceptor.d.ts +22 -0
  512. package/lib/interceptors/header-interceptor/http-header.interceptor.d.ts.map +1 -0
  513. package/lib/models/ActiveClaimModel.d.ts +8 -0
  514. package/lib/models/ActiveClaimModel.d.ts.map +1 -0
  515. package/lib/models/AddressComponentModel.d.ts +14 -0
  516. package/lib/models/AddressComponentModel.d.ts.map +1 -0
  517. package/lib/models/BankDetailsComponentModel.d.ts +12 -0
  518. package/lib/models/BankDetailsComponentModel.d.ts.map +1 -0
  519. package/lib/models/BankDetailsModel.d.ts +5 -0
  520. package/lib/models/BankDetailsModel.d.ts.map +1 -0
  521. package/lib/models/CinRequalificationCriteriaModel.d.ts +11 -0
  522. package/lib/models/CinRequalificationCriteriaModel.d.ts.map +1 -0
  523. package/lib/models/CountyModel.d.ts +8 -0
  524. package/lib/models/CountyModel.d.ts.map +1 -0
  525. package/lib/models/DuaAppDataModel.d.ts +5 -0
  526. package/lib/models/DuaAppDataModel.d.ts.map +1 -0
  527. package/lib/models/DuaRequestModel.d.ts +10 -0
  528. package/lib/models/DuaRequestModel.d.ts.map +1 -0
  529. package/lib/models/DuaRetroWeeksComponentModel.d.ts +5 -0
  530. package/lib/models/DuaRetroWeeksComponentModel.d.ts.map +1 -0
  531. package/lib/models/EmployerDetailSearchResult.d.ts +54 -0
  532. package/lib/models/EmployerDetailSearchResult.d.ts.map +1 -0
  533. package/lib/models/EmployerInfoComponentModel.d.ts +9 -0
  534. package/lib/models/EmployerInfoComponentModel.d.ts.map +1 -0
  535. package/lib/models/EmployerPayInfoModel.d.ts +20 -0
  536. package/lib/models/EmployerPayInfoModel.d.ts.map +1 -0
  537. package/lib/models/ErrorModel.d.ts +7 -0
  538. package/lib/models/ErrorModel.d.ts.map +1 -0
  539. package/lib/models/FarmUsageComponentModel.d.ts +10 -0
  540. package/lib/models/FarmUsageComponentModel.d.ts.map +1 -0
  541. package/lib/models/FileModel.d.ts +5 -0
  542. package/lib/models/FileModel.d.ts.map +1 -0
  543. package/lib/models/GrossEarningsModel.d.ts +6 -0
  544. package/lib/models/GrossEarningsModel.d.ts.map +1 -0
  545. package/lib/models/HelpConstants.d.ts +5 -0
  546. package/lib/models/HelpConstants.d.ts.map +1 -0
  547. package/lib/models/LexisNexisOtpDetailsResponseModel.d.ts +7 -0
  548. package/lib/models/LexisNexisOtpDetailsResponseModel.d.ts.map +1 -0
  549. package/lib/models/LibConstants.d.ts +162 -0
  550. package/lib/models/LibConstants.d.ts.map +1 -0
  551. package/lib/models/NewsAndAnnouncementModel.d.ts +6 -0
  552. package/lib/models/NewsAndAnnouncementModel.d.ts.map +1 -0
  553. package/lib/models/NotificationModel.d.ts +11 -0
  554. package/lib/models/NotificationModel.d.ts.map +1 -0
  555. package/lib/models/OtpAuthModel.d.ts +7 -0
  556. package/lib/models/OtpAuthModel.d.ts.map +1 -0
  557. package/lib/models/PaymentComponentModel.d.ts +8 -0
  558. package/lib/models/PaymentComponentModel.d.ts.map +1 -0
  559. package/lib/models/ReasonSeparationRequestModel.d.ts +7 -0
  560. package/lib/models/ReasonSeparationRequestModel.d.ts.map +1 -0
  561. package/lib/models/RequalifyLiftPageModel.d.ts +12 -0
  562. package/lib/models/RequalifyLiftPageModel.d.ts.map +1 -0
  563. package/lib/models/RetroWeeksModel.d.ts +11 -0
  564. package/lib/models/RetroWeeksModel.d.ts.map +1 -0
  565. package/lib/models/SecurityQuestionAnswerModel.d.ts +7 -0
  566. package/lib/models/SecurityQuestionAnswerModel.d.ts.map +1 -0
  567. package/lib/models/SendOtpRequestModel.d.ts +12 -0
  568. package/lib/models/SendOtpRequestModel.d.ts.map +1 -0
  569. package/lib/models/SsaVerificationModel.d.ts +9 -0
  570. package/lib/models/SsaVerificationModel.d.ts.map +1 -0
  571. package/lib/models/TrendModel.d.ts +14 -0
  572. package/lib/models/TrendModel.d.ts.map +1 -0
  573. package/lib/models/UserDetailsModel.d.ts +10 -0
  574. package/lib/models/UserDetailsModel.d.ts.map +1 -0
  575. package/lib/models/UserModel.d.ts +47 -0
  576. package/lib/models/UserModel.d.ts.map +1 -0
  577. package/lib/models/VerifyOtpRequestModel.d.ts +8 -0
  578. package/lib/models/VerifyOtpRequestModel.d.ts.map +1 -0
  579. package/lib/models/WageCalculatorModel.d.ts +15 -0
  580. package/lib/models/WageCalculatorModel.d.ts.map +1 -0
  581. package/lib/models/WageInfoModel.d.ts +9 -0
  582. package/lib/models/WageInfoModel.d.ts.map +1 -0
  583. package/lib/models/addressValidation/AddressRecommendationModel.d.ts +12 -0
  584. package/lib/models/addressValidation/AddressRecommendationModel.d.ts.map +1 -0
  585. package/lib/models/addressValidation/AddressValidationRequestComponentModel.d.ts +11 -0
  586. package/lib/models/addressValidation/AddressValidationRequestComponentModel.d.ts.map +1 -0
  587. package/lib/models/addressValidation/AddressValidationResponseComponentModel.d.ts +6 -0
  588. package/lib/models/addressValidation/AddressValidationResponseComponentModel.d.ts.map +1 -0
  589. package/lib/models/addressValidation/AddressValidationReturnComponentModel.d.ts +16 -0
  590. package/lib/models/addressValidation/AddressValidationReturnComponentModel.d.ts.map +1 -0
  591. package/lib/models/case/CaseAttachmentModel.d.ts +6 -0
  592. package/lib/models/case/CaseAttachmentModel.d.ts.map +1 -0
  593. package/lib/models/claimant/ClaimantModel.d.ts +23 -0
  594. package/lib/models/claimant/ClaimantModel.d.ts.map +1 -0
  595. package/lib/models/claimant/JobResultsData.d.ts +8 -0
  596. package/lib/models/claimant/JobResultsData.d.ts.map +1 -0
  597. package/lib/models/claimant/MatchingJobs.d.ts +13 -0
  598. package/lib/models/claimant/MatchingJobs.d.ts.map +1 -0
  599. package/lib/models/claimant/ResetPasswordModel.d.ts +9 -0
  600. package/lib/models/claimant/ResetPasswordModel.d.ts.map +1 -0
  601. package/lib/models/cmp/CaseCoreModel.d.ts +21 -0
  602. package/lib/models/cmp/CaseCoreModel.d.ts.map +1 -0
  603. package/lib/models/cmp/ComplaintCategoryModel.d.ts +9 -0
  604. package/lib/models/cmp/ComplaintCategoryModel.d.ts.map +1 -0
  605. package/lib/models/cmp/ComplaintCategoryOutputModel.d.ts +6 -0
  606. package/lib/models/cmp/ComplaintCategoryOutputModel.d.ts.map +1 -0
  607. package/lib/models/cmp/ContactUsModel.d.ts +23 -0
  608. package/lib/models/cmp/ContactUsModel.d.ts.map +1 -0
  609. package/lib/models/cmp/EmailTemplateModel.d.ts +7 -0
  610. package/lib/models/cmp/EmailTemplateModel.d.ts.map +1 -0
  611. package/lib/models/cmp/contactUsInqueryModel.d.ts +47 -0
  612. package/lib/models/cmp/contactUsInqueryModel.d.ts.map +1 -0
  613. package/lib/models/cmp/messageRourceModel.d.ts +6 -0
  614. package/lib/models/cmp/messageRourceModel.d.ts.map +1 -0
  615. package/lib/models/combo-model.d.ts +42 -0
  616. package/lib/models/combo-model.d.ts.map +1 -0
  617. package/lib/models/dashboard-model.d.ts +66 -0
  618. package/lib/models/dashboard-model.d.ts.map +1 -0
  619. package/lib/models/dependent.model.d.ts +20 -0
  620. package/lib/models/dependent.model.d.ts.map +1 -0
  621. package/lib/models/fileupload/DocUploadModel.d.ts +22 -0
  622. package/lib/models/fileupload/DocUploadModel.d.ts.map +1 -0
  623. package/lib/models/fileupload/EmployerDataModel.d.ts +6 -0
  624. package/lib/models/fileupload/EmployerDataModel.d.ts.map +1 -0
  625. package/lib/models/fileupload/FileObject.d.ts +8 -0
  626. package/lib/models/fileupload/FileObject.d.ts.map +1 -0
  627. package/lib/models/fileupload/FileObjectArray.d.ts +8 -0
  628. package/lib/models/fileupload/FileObjectArray.d.ts.map +1 -0
  629. package/lib/models/questionnaire/AppealParticipantModel.d.ts +17 -0
  630. package/lib/models/questionnaire/AppealParticipantModel.d.ts.map +1 -0
  631. package/lib/models/questionnaire/AutocoderModel.d.ts +9 -0
  632. package/lib/models/questionnaire/AutocoderModel.d.ts.map +1 -0
  633. package/lib/models/questionnaire/ClaimAppEmpRequestModel.d.ts +9 -0
  634. package/lib/models/questionnaire/ClaimAppEmpRequestModel.d.ts.map +1 -0
  635. package/lib/models/questionnaire/ClaimAppEmpResponseModel.d.ts +21 -0
  636. package/lib/models/questionnaire/ClaimAppEmpResponseModel.d.ts.map +1 -0
  637. package/lib/models/questionnaire/ClaimAppEmployerDetailsModel.d.ts +167 -0
  638. package/lib/models/questionnaire/ClaimAppEmployerDetailsModel.d.ts.map +1 -0
  639. package/lib/models/questionnaire/ClaimOnlyEmployerDataModel.d.ts +21 -0
  640. package/lib/models/questionnaire/ClaimOnlyEmployerDataModel.d.ts.map +1 -0
  641. package/lib/models/questionnaire/ComboModel.d.ts +110 -0
  642. package/lib/models/questionnaire/ComboModel.d.ts.map +1 -0
  643. package/lib/models/questionnaire/ElementsModel.d.ts +70 -0
  644. package/lib/models/questionnaire/ElementsModel.d.ts.map +1 -0
  645. package/lib/models/questionnaire/EmployerDetailSearchResult.d.ts +18 -0
  646. package/lib/models/questionnaire/EmployerDetailSearchResult.d.ts.map +1 -0
  647. package/lib/models/questionnaire/EmployerWagesModel.d.ts +5 -0
  648. package/lib/models/questionnaire/EmployerWagesModel.d.ts.map +1 -0
  649. package/lib/models/questionnaire/FBConfigModel.d.ts +12 -0
  650. package/lib/models/questionnaire/FBConfigModel.d.ts.map +1 -0
  651. package/lib/models/questionnaire/KeyValueModel.d.ts +11 -0
  652. package/lib/models/questionnaire/KeyValueModel.d.ts.map +1 -0
  653. package/lib/models/questionnaire/LegalDiscaimarModel.d.ts +13 -0
  654. package/lib/models/questionnaire/LegalDiscaimarModel.d.ts.map +1 -0
  655. package/lib/models/questionnaire/LoaderModel.d.ts +5 -0
  656. package/lib/models/questionnaire/LoaderModel.d.ts.map +1 -0
  657. package/lib/models/questionnaire/PollingStatusModel.d.ts +7 -0
  658. package/lib/models/questionnaire/PollingStatusModel.d.ts.map +1 -0
  659. package/lib/models/questionnaire/QtrYearEmployerWageModel.d.ts +9 -0
  660. package/lib/models/questionnaire/QtrYearEmployerWageModel.d.ts.map +1 -0
  661. package/lib/models/questionnaire/QuestionnaireQueryModel.d.ts +24 -0
  662. package/lib/models/questionnaire/QuestionnaireQueryModel.d.ts.map +1 -0
  663. package/lib/models/questionnaire/QuestionnaireReturnModel.d.ts +21 -0
  664. package/lib/models/questionnaire/QuestionnaireReturnModel.d.ts.map +1 -0
  665. package/lib/models/questionnaire/QuestionnaireSaveModel.d.ts +25 -0
  666. package/lib/models/questionnaire/QuestionnaireSaveModel.d.ts.map +1 -0
  667. package/lib/models/questionnaire/RequalifyLiftIssuesModel.d.ts +14 -0
  668. package/lib/models/questionnaire/RequalifyLiftIssuesModel.d.ts.map +1 -0
  669. package/lib/models/questionnaire/ScrollableTextModel.d.ts +4 -0
  670. package/lib/models/questionnaire/ScrollableTextModel.d.ts.map +1 -0
  671. package/lib/models/questionnaire/ServiceActionResponseModel.d.ts +7 -0
  672. package/lib/models/questionnaire/ServiceActionResponseModel.d.ts.map +1 -0
  673. package/lib/models/questionnaire/StatusModel.d.ts +17 -0
  674. package/lib/models/questionnaire/StatusModel.d.ts.map +1 -0
  675. package/lib/models/questionnaire/SuccessPageElement.d.ts +9 -0
  676. package/lib/models/questionnaire/SuccessPageElement.d.ts.map +1 -0
  677. package/lib/models/questionnaire/UI512AResponseModel.d.ts +13 -0
  678. package/lib/models/questionnaire/UI512AResponseModel.d.ts.map +1 -0
  679. package/lib/models/questionnaire/ValidationModel.d.ts +18 -0
  680. package/lib/models/questionnaire/ValidationModel.d.ts.map +1 -0
  681. package/lib/models/questionnaire/WbaHelperTextModel.d.ts +4 -0
  682. package/lib/models/questionnaire/WbaHelperTextModel.d.ts.map +1 -0
  683. package/lib/models/weekly-cert/WorkSearchWaiverModel.d.ts +9 -0
  684. package/lib/models/weekly-cert/WorkSearchWaiverModel.d.ts.map +1 -0
  685. package/lib/models/weekly-cert/address-detail-model.d.ts +14 -0
  686. package/lib/models/weekly-cert/address-detail-model.d.ts.map +1 -0
  687. package/lib/models/weekly-cert/admin-leave-details-model.d.ts +15 -0
  688. package/lib/models/weekly-cert/admin-leave-details-model.d.ts.map +1 -0
  689. package/lib/models/weekly-cert/employer-info-v2-model.d.ts +27 -0
  690. package/lib/models/weekly-cert/employer-info-v2-model.d.ts.map +1 -0
  691. package/lib/models/weekly-cert/weekly-cert-eligibility-v2-model.d.ts +57 -0
  692. package/lib/models/weekly-cert/weekly-cert-eligibility-v2-model.d.ts.map +1 -0
  693. package/lib/models/weekly-cert/weekly-certification-v2-model.d.ts +59 -0
  694. package/lib/models/weekly-cert/weekly-certification-v2-model.d.ts.map +1 -0
  695. package/lib/models/weekly-cert/work-search-record-v2-model.d.ts +66 -0
  696. package/lib/models/weekly-cert/work-search-record-v2-model.d.ts.map +1 -0
  697. package/lib/models/weekly-cert/work-search-v2-model.d.ts +18 -0
  698. package/lib/models/weekly-cert/work-search-v2-model.d.ts.map +1 -0
  699. package/lib/ngx-reusa-app-lib.component.d.ts +9 -0
  700. package/lib/ngx-reusa-app-lib.component.d.ts.map +1 -0
  701. package/lib/ngx-reusa-app-lib.module.d.ts +193 -0
  702. package/lib/ngx-reusa-app-lib.module.d.ts.map +1 -0
  703. package/lib/ngx-reusa-app-lib.service.d.ts +7 -0
  704. package/lib/ngx-reusa-app-lib.service.d.ts.map +1 -0
  705. package/lib/pages/BasePage.d.ts +29 -0
  706. package/lib/pages/BasePage.d.ts.map +1 -0
  707. package/lib/pages/common/accessibility-policy/accessibility-policy.page.d.ts +12 -0
  708. package/lib/pages/common/accessibility-policy/accessibility-policy.page.d.ts.map +1 -0
  709. package/lib/pages/common/change-password/change-password.page.d.ts +44 -0
  710. package/lib/pages/common/change-password/change-password.page.d.ts.map +1 -0
  711. package/lib/pages/common/landing/landing.component.d.ts +25 -0
  712. package/lib/pages/common/landing/landing.component.d.ts.map +1 -0
  713. package/lib/pages/common/landing2/landing2.component.d.ts +31 -0
  714. package/lib/pages/common/landing2/landing2.component.d.ts.map +1 -0
  715. package/lib/pages/common/login/login.component.d.ts +65 -0
  716. package/lib/pages/common/login/login.component.d.ts.map +1 -0
  717. package/lib/pages/common/not-found/not-found.page.d.ts +9 -0
  718. package/lib/pages/common/not-found/not-found.page.d.ts.map +1 -0
  719. package/lib/pages/common/privacy-disclaimer/privacy-disclaimer.page.d.ts +12 -0
  720. package/lib/pages/common/privacy-disclaimer/privacy-disclaimer.page.d.ts.map +1 -0
  721. package/lib/pages/common/security-policy/security-policy.page.d.ts +12 -0
  722. package/lib/pages/common/security-policy/security-policy.page.d.ts.map +1 -0
  723. package/lib/pages/common/unauthorized/unauthorized.page.d.ts +9 -0
  724. package/lib/pages/common/unauthorized/unauthorized.page.d.ts.map +1 -0
  725. package/lib/pages/popovers/language/language.page.d.ts +17 -0
  726. package/lib/pages/popovers/language/language.page.d.ts.map +1 -0
  727. package/lib/pages/popovers/my-notifications/my-notifications.page.d.ts +22 -0
  728. package/lib/pages/popovers/my-notifications/my-notifications.page.d.ts.map +1 -0
  729. package/lib/pages/popovers/my-profile/my-profile.page.d.ts +21 -0
  730. package/lib/pages/popovers/my-profile/my-profile.page.d.ts.map +1 -0
  731. package/lib/pages/popovers/user-search/user-search.component.d.ts +32 -0
  732. package/lib/pages/popovers/user-search/user-search.component.d.ts.map +1 -0
  733. package/lib/pipes/filter.pipe.d.ts +8 -0
  734. package/lib/pipes/filter.pipe.d.ts.map +1 -0
  735. package/lib/pipes/format-worksearch/format-worksearch.pipe.d.ts +14 -0
  736. package/lib/pipes/format-worksearch/format-worksearch.pipe.d.ts.map +1 -0
  737. package/lib/pipes/mask/mask.email.pipe.d.ts +11 -0
  738. package/lib/pipes/mask/mask.email.pipe.d.ts.map +1 -0
  739. package/lib/pipes/proper-case/proper-case.pipe.d.ts +9 -0
  740. package/lib/pipes/proper-case/proper-case.pipe.d.ts.map +1 -0
  741. package/lib/pipes/translate/dynamic-translate.pipe.d.ts +11 -0
  742. package/lib/pipes/translate/dynamic-translate.pipe.d.ts.map +1 -0
  743. package/lib/pipes/trust-html/trust-html.pipe.d.ts +11 -0
  744. package/lib/pipes/trust-html/trust-html.pipe.d.ts.map +1 -0
  745. package/lib/services/address-validation-service/address-validation.service.d.ts +44 -0
  746. package/lib/services/address-validation-service/address-validation.service.d.ts.map +1 -0
  747. package/lib/services/appeal/appeal.service.d.ts +16 -0
  748. package/lib/services/appeal/appeal.service.d.ts.map +1 -0
  749. package/lib/services/base-service.d.ts +105 -0
  750. package/lib/services/base-service.d.ts.map +1 -0
  751. package/lib/services/birt-service/birt.service.d.ts +17 -0
  752. package/lib/services/birt-service/birt.service.d.ts.map +1 -0
  753. package/lib/services/captcha/captcha.service.d.ts +16 -0
  754. package/lib/services/captcha/captcha.service.d.ts.map +1 -0
  755. package/lib/services/case-service/case.service.d.ts +20 -0
  756. package/lib/services/case-service/case.service.d.ts.map +1 -0
  757. package/lib/services/chatbot/chatbot.service.d.ts +61 -0
  758. package/lib/services/chatbot/chatbot.service.d.ts.map +1 -0
  759. package/lib/services/chatbot/script.const.d.ts +16 -0
  760. package/lib/services/chatbot/script.const.d.ts.map +1 -0
  761. package/lib/services/claimant/claimant.service.d.ts +18 -0
  762. package/lib/services/claimant/claimant.service.d.ts.map +1 -0
  763. package/lib/services/claimant-context/claimant-context.service.d.ts +19 -0
  764. package/lib/services/claimant-context/claimant-context.service.d.ts.map +1 -0
  765. package/lib/services/claimant-service/claimant.service.d.ts +25 -0
  766. package/lib/services/claimant-service/claimant.service.d.ts.map +1 -0
  767. package/lib/services/claims/claims.service.d.ts +76 -0
  768. package/lib/services/claims/claims.service.d.ts.map +1 -0
  769. package/lib/services/cmp-service/cmp.service.d.ts +34 -0
  770. package/lib/services/cmp-service/cmp.service.d.ts.map +1 -0
  771. package/lib/services/dms-service/dms.service.d.ts +24 -0
  772. package/lib/services/dms-service/dms.service.d.ts.map +1 -0
  773. package/lib/services/employer/employer-service.d.ts +16 -0
  774. package/lib/services/employer/employer-service.d.ts.map +1 -0
  775. package/lib/services/event-service/event-service.d.ts +20 -0
  776. package/lib/services/event-service/event-service.d.ts.map +1 -0
  777. package/lib/services/fpjs/fingerprint.service.d.ts +19 -0
  778. package/lib/services/fpjs/fingerprint.service.d.ts.map +1 -0
  779. package/lib/services/google-analytics/google-analytics.service.d.ts +9 -0
  780. package/lib/services/google-analytics/google-analytics.service.d.ts.map +1 -0
  781. package/lib/services/help/help.service.d.ts +26 -0
  782. package/lib/services/help/help.service.d.ts.map +1 -0
  783. package/lib/services/idle/idle.service.d.ts +44 -0
  784. package/lib/services/idle/idle.service.d.ts.map +1 -0
  785. package/lib/services/logger/logger.service.d.ts +32 -0
  786. package/lib/services/logger/logger.service.d.ts.map +1 -0
  787. package/lib/services/login/login.service.d.ts +81 -0
  788. package/lib/services/login/login.service.d.ts.map +1 -0
  789. package/lib/services/maintenance/maintenance.service.d.ts +16 -0
  790. package/lib/services/maintenance/maintenance.service.d.ts.map +1 -0
  791. package/lib/services/notification/notification.service.d.ts +39 -0
  792. package/lib/services/notification/notification.service.d.ts.map +1 -0
  793. package/lib/services/offline-claims/offline-claims.service.d.ts +64 -0
  794. package/lib/services/offline-claims/offline-claims.service.d.ts.map +1 -0
  795. package/lib/services/questionnaire/questionnaire.service.d.ts +37 -0
  796. package/lib/services/questionnaire/questionnaire.service.d.ts.map +1 -0
  797. package/lib/services/questionnaire/validation.service.d.ts +85 -0
  798. package/lib/services/questionnaire/validation.service.d.ts.map +1 -0
  799. package/lib/services/security-service/security.service.d.ts +26 -0
  800. package/lib/services/security-service/security.service.d.ts.map +1 -0
  801. package/lib/services/tour/tour.service.d.ts +25 -0
  802. package/lib/services/tour/tour.service.d.ts.map +1 -0
  803. package/lib/services/util/util.service.d.ts +200 -0
  804. package/lib/services/util/util.service.d.ts.map +1 -0
  805. package/lib/services/weekly-cert/review.service.d.ts +23 -0
  806. package/lib/services/weekly-cert/review.service.d.ts.map +1 -0
  807. package/lib/services/weekly-cert/weekly-cert-v2.service.d.ts +59 -0
  808. package/lib/services/weekly-cert/weekly-cert-v2.service.d.ts.map +1 -0
  809. package/lib/services/weekly-cert/weekly-cert.service.d.ts +17 -0
  810. package/lib/services/weekly-cert/weekly-cert.service.d.ts.map +1 -0
  811. package/lib/services/weekly-cert/work-search.service.d.ts +26 -0
  812. package/lib/services/weekly-cert/work-search.service.d.ts.map +1 -0
  813. package/lib/validations/AppRegex.d.ts +48 -0
  814. package/lib/validations/AppRegex.d.ts.map +1 -0
  815. package/lib/validations/AppValidators.d.ts +78 -0
  816. package/lib/validations/AppValidators.d.ts.map +1 -0
  817. package/package.json +25 -0
  818. package/public-api.d.ts +170 -0
  819. package/public-api.d.ts.map +1 -0
  820. package/uiapplib-ngx-ui-web-lib.d.ts.map +1 -0
@@ -0,0 +1,506 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { HttpHeaders } from '@angular/common/http';
3
+ import { Validators } from '@angular/forms';
4
+ import { ErrorModel } from '../../models/ErrorModel';
5
+ import { getBaseUrl, LibConstants } from '../../models/LibConstants';
6
+ import { ActivationEnd, NavigationEnd, NavigationStart } from '@angular/router';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@ionic/angular";
9
+ import * as i2 from "@angular/common/http";
10
+ import * as i3 from "primeng/api";
11
+ import * as i4 from "ngx-spinner";
12
+ import * as i5 from "@ngx-loading-bar/core";
13
+ import * as i6 from "../logger/logger.service";
14
+ import * as i7 from "@angular/router";
15
+ import * as i8 from "@angular/platform-browser";
16
+ import * as i9 from "../tour/tour.service";
17
+ export class UtilService {
18
+ constructor(alertController, httpClient, lc, toastController, msgService, spinner, loader, logger, router, titleService, ar, tourService, platform) {
19
+ this.alertController = alertController;
20
+ this.httpClient = httpClient;
21
+ this.lc = lc;
22
+ this.toastController = toastController;
23
+ this.msgService = msgService;
24
+ this.spinner = spinner;
25
+ this.loader = loader;
26
+ this.logger = logger;
27
+ this.router = router;
28
+ this.titleService = titleService;
29
+ this.ar = ar;
30
+ this.tourService = tourService;
31
+ this.platform = platform;
32
+ this.focusables = ["pinputtext", "p-inputmask", "input", "select", "textarea", "p-calendar", "radio", "p-dropdown", "p-selectButton", "p-autocomplete", "p-password", "p-checkbox", "p-inputtextarea"];
33
+ /*To display various messages*/
34
+ this.msgs = [];
35
+ this.options = {};
36
+ this.loading = null;
37
+ let headers = new HttpHeaders({
38
+ 'Content-Type': 'application/json',
39
+ "Accept": 'application/json'
40
+ });
41
+ this.options = { headers: headers };
42
+ }
43
+ async toast(msg) {
44
+ const toast = await this.toastController.create({
45
+ message: msg,
46
+ position: 'bottom',
47
+ duration: 2000,
48
+ keyboardClose: true,
49
+ buttons: [
50
+ {
51
+ text: 'Done',
52
+ role: 'cancel',
53
+ handler: () => {
54
+ }
55
+ }
56
+ ]
57
+ });
58
+ toast.present();
59
+ }
60
+ async presentToast(msg) {
61
+ const toast = await this.toastController.create({
62
+ message: msg,
63
+ color: 'danger',
64
+ duration: 3000,
65
+ keyboardClose: true,
66
+ buttons: [
67
+ {
68
+ text: 'Done',
69
+ role: 'cancel',
70
+ handler: () => {
71
+ }
72
+ }
73
+ ]
74
+ });
75
+ toast.present();
76
+ }
77
+ baseUrl() {
78
+ return getBaseUrl();
79
+ }
80
+ async presentAlert(header, subMsg, errDtl) {
81
+ const alert = await this.alertController.create({
82
+ header: header,
83
+ subHeader: subMsg,
84
+ message: errDtl,
85
+ buttons: ['OK']
86
+ });
87
+ await alert.present();
88
+ }
89
+ error(header, subMsg, errDtl) {
90
+ this.presentAlert(header, subMsg, errDtl);
91
+ }
92
+ showError(msg) {
93
+ let errDtl = new ErrorModel();
94
+ errDtl.msg = msg;
95
+ this.errorMsg(errDtl);
96
+ }
97
+ errorMsg(errDtl) {
98
+ this.msgs.push({ severity: 'error', summary: 'Error', detail: errDtl.msg });
99
+ this.msgService.clear();
100
+ if (errDtl.errorId) {
101
+ //this.msgService.add({severity:'error', summary:'Error', detail: errDtl.msg + `( error id : ${errDtl.errorId})`, life: 7000, id : errDtl.errorId});
102
+ this.msgService.add({ severity: 'error', summary: 'Error', detail: errDtl.msg, life: LibConstants.errorMessagePopupLife, id: errDtl.errorId });
103
+ }
104
+ else {
105
+ this.msgService.add({ severity: 'error', summary: 'Error', detail: errDtl.msg, life: LibConstants.errorMessagePopupLife, id: errDtl.errorId });
106
+ }
107
+ }
108
+ async success(msg) {
109
+ this.msgs = [];
110
+ this.msgs.push({ severity: 'success', summary: 'Success', detail: msg });
111
+ this.msgService.clear();
112
+ this.msgService.add({ severity: 'success', summary: 'Success', detail: msg, life: LibConstants.successMessagePopupLife });
113
+ }
114
+ info(msg) {
115
+ this.presentAlert('Info', '', msg);
116
+ }
117
+ get(endPoint, options, serviceName) {
118
+ return this.httpClient.get(this.getUrl(endPoint, serviceName), options != null ? options : this.options);
119
+ }
120
+ post(url, body, options, serviceName) {
121
+ return this.httpClient.post(this.getUrl(url, serviceName), JSON.stringify(body), options != null ? options : this.options);
122
+ }
123
+ postFormData(url, body, options, serviceName) {
124
+ // alert(this.getFullUrl(url));
125
+ return this.httpClient.post(this.getUrl(url, serviceName), body, options);
126
+ }
127
+ delete(url, options, serviceName) {
128
+ return this.httpClient.delete(this.getUrl(url, serviceName), options != null ? options : this.options);
129
+ }
130
+ patch(url, body, options, serviceName) {
131
+ return this.httpClient.patch(this.getUrl(url, serviceName), body, options != null ? options : this.options);
132
+ }
133
+ errorHandler(error) {
134
+ this.msgs = [];
135
+ this.logger.error('error ---->', error);
136
+ this.errorMsg(error);
137
+ }
138
+ getFullUrl(endPoint) {
139
+ return this.baseUrl() + endPoint;
140
+ }
141
+ getUrl(endPoint, serviceName) {
142
+ if (serviceName) {
143
+ this.baseUrl() + LibConstants.forwardSlash + serviceName + LibConstants.forwardSlash + endPoint;
144
+ }
145
+ else {
146
+ return this.baseUrl() + (LibConstants.context == ''
147
+ ? LibConstants.forwardSlash
148
+ : LibConstants.forwardSlash + LibConstants.context + LibConstants.forwardSlash) + endPoint;
149
+ }
150
+ }
151
+ async showLoader() {
152
+ this.spinner.show();
153
+ }
154
+ async hideLoader() {
155
+ this.spinner.hide();
156
+ }
157
+ /**
158
+ * @decription This method will find difference of dates by specified interval
159
+ * @author Prerak Tiwari
160
+ * @version 1.0
161
+ * @param fromDate in miliseconds
162
+ * @param todate in miliseconds
163
+ * @param interval : valid values are --> "years", "months", "weeks", "days", "hours", "minutes", "seconds"
164
+ * @returns difference of date as per interval specified.
165
+ **/
166
+ findDifferenceIndate(fromDate, todate, interval) {
167
+ let second = 1000, minute = second * 60, hour = minute * 60, day = hour * 24, week = day * 7;
168
+ let timediff = todate - fromDate;
169
+ if (isNaN(timediff))
170
+ return NaN;
171
+ switch (interval) {
172
+ case "years": return todate.getFullYear() - fromDate.getFullYear();
173
+ case "months": return ((todate.getFullYear() * 12 + todate.getMonth())
174
+ -
175
+ (fromDate.getFullYear() * 12 + fromDate.getMonth()));
176
+ case "weeks": return Math.round(timediff / week);
177
+ case "days": return Math.round(timediff / day);
178
+ case "hours": return Math.round(timediff / hour);
179
+ case "minutes": return Math.round(timediff / minute);
180
+ case "seconds": return Math.round(timediff / second);
181
+ default: return undefined;
182
+ }
183
+ }
184
+ /**
185
+ * @decription This method will return date in ddMMyyyy format.
186
+ * @author Prerak Tiwari
187
+ * @version 1.0
188
+ * @returns string
189
+ **/
190
+ getDateInMMDDYYYYFormat(date) {
191
+ let dd = date.getDate();
192
+ let MM = date.getMonth() + 1;
193
+ let yyyy = date.getFullYear();
194
+ let dateToReturn = MM + '/' + dd + '/' + yyyy;
195
+ return dateToReturn;
196
+ }
197
+ /**
198
+ * @decription This method will return Date object (for yyyy/MM/dd)
199
+ * @author Prerak Tiwari
200
+ * @version 1.0
201
+ * @param value : date separated with '-'
202
+ * @returns Date
203
+ **/
204
+ getEnteredDate(value) {
205
+ var dateArray = value.split("-");
206
+ var dd = parseInt(this.prepedZeroIfSingleDigit(dateArray[2]));
207
+ var MM = parseInt(this.prepedZeroIfSingleDigit(dateArray[1])) - 1;
208
+ var yyyy = parseInt(this.prepedZeroIfSingleDigit(dateArray[0]));
209
+ return new Date(yyyy, MM, dd);
210
+ }
211
+ /**
212
+ * @decription This method will return Date object (for MM/dd/yyyy).
213
+ * @author Prerak Tiwari
214
+ * @version 1.0
215
+ * @param value : date separated with '-'
216
+ * @returns Date
217
+ **/
218
+ getDateFromString(value) {
219
+ var dateArray = value.split("-");
220
+ var dd = parseInt(this.prepedZeroIfSingleDigit(dateArray[2]));
221
+ var MM = parseInt(this.prepedZeroIfSingleDigit(dateArray[1])) - 1;
222
+ var yyyy = parseInt(this.prepedZeroIfSingleDigit(dateArray[0]));
223
+ return new Date(yyyy, MM, dd);
224
+ }
225
+ getEnteredDateFromString(value) {
226
+ var dateArray = value.split("/");
227
+ var MM = parseInt(this.prepedZeroIfSingleDigit(dateArray[0])) - 1;
228
+ var dd = parseInt(this.prepedZeroIfSingleDigit(dateArray[1]));
229
+ var yyyy = parseInt(this.prepedZeroIfSingleDigit(dateArray[2]));
230
+ return new Date(yyyy, MM, dd);
231
+ }
232
+ getDateInMMDDYYYY(value) {
233
+ var dateArray = value.split("-");
234
+ var dd = parseInt(this.prepedZeroIfSingleDigit(dateArray[2]));
235
+ var MM = parseInt(this.prepedZeroIfSingleDigit(dateArray[1]));
236
+ var yyyy = parseInt(this.prepedZeroIfSingleDigit(dateArray[0]));
237
+ return MM + '/' + dd + '/' + yyyy;
238
+ }
239
+ prepedZeroIfSingleDigit(number) {
240
+ number = number + LibConstants.blankString;
241
+ if (number.length < 2) {
242
+ number = "0" + number;
243
+ }
244
+ return number;
245
+ }
246
+ /**
247
+ * @decription This method check if entered number is valid or not.
248
+ * @author Prerak Tiwari
249
+ * @version 1.0
250
+ * @returns true : number is valid </br> false : number is invalid
251
+ */
252
+ validateNumber(number) {
253
+ var reg = new RegExp("^[0-9]*$");
254
+ return reg.test(number);
255
+ }
256
+ /**
257
+ * @decription This method check if entered number is valid or not.
258
+ * @author Prerak Tiwari
259
+ * @version 1.0
260
+ * @returns true : number is valid </br> false : number is invalid
261
+ */
262
+ validateEmail(email) {
263
+ var reg = new RegExp('/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/');
264
+ return reg.test(email);
265
+ }
266
+ setValidation(control, newValidator) {
267
+ control.setValidators(newValidator);
268
+ control.updateValueAndValidity();
269
+ }
270
+ clearValidation(control) {
271
+ control.clearValidators();
272
+ control.updateValueAndValidity();
273
+ }
274
+ setRequiredValidator(control) {
275
+ this.setValidation(control, Validators.required);
276
+ }
277
+ // @dynamic
278
+ static patternValidator(regex, error) {
279
+ const res = (control) => {
280
+ if (!control.value) {
281
+ // if control is empty return no error
282
+ return null;
283
+ }
284
+ // test the value of the control against the regexp supplied
285
+ const valid = regex.test(control.value);
286
+ // if true, return no error (no error), else return error passed in the second parameter
287
+ return valid ? null : error;
288
+ };
289
+ return res;
290
+ }
291
+ static passwordMatchValidator(control) {
292
+ const password = control.get('password').value; // get password from our password form control
293
+ const confirmPassword = control.get('confirmPassword').value; // get password from our confirmPassword form control
294
+ // compare is the password math
295
+ if (password !== confirmPassword) {
296
+ // if they don't match, set an error in our confirmPassword form control
297
+ control.get('confirmPassword').setErrors({ NoPassswordMatch: true });
298
+ }
299
+ }
300
+ formatSsn(ssn) {
301
+ return ssn.substr(0, 3) + '-' + ssn.substr(3, 2) + '-' + ssn.substr(5, 4);
302
+ }
303
+ maskSsn(ssn) {
304
+ return 'XXX-XX-' + ssn.substr(5, 4);
305
+ }
306
+ mask(value, charToHide) {
307
+ if (!value) {
308
+ return;
309
+ }
310
+ if (value.length > charToHide) {
311
+ var xxx = '';
312
+ for (var count = 1; count <= charToHide; count++) {
313
+ xxx = 'X' + xxx;
314
+ }
315
+ return xxx + value.substr(value.length - charToHide + 1, charToHide);
316
+ }
317
+ else {
318
+ return value;
319
+ }
320
+ }
321
+ clearMessages() {
322
+ this.msgs = [];
323
+ }
324
+ isState(state) {
325
+ return this.getStateLowercase() == state.toLowerCase();
326
+ }
327
+ getState() {
328
+ return LibConstants.STATE;
329
+ }
330
+ getStateLowercase() {
331
+ return LibConstants.state;
332
+ }
333
+ setupNavigationBasedEvents() {
334
+ this.router.events.subscribe(val => {
335
+ if (val instanceof NavigationStart) {
336
+ this.msgs = [];
337
+ this.msgService.clear(); //Clear Error/Success Messages
338
+ this.tourService.setCurrentStepsCount(20); //Joyride Setup
339
+ }
340
+ if (val instanceof NavigationEnd) {
341
+ gtag('config', LibConstants.gaId, { 'page_path': val.urlAfterRedirects }); //Send to Goole Analytics
342
+ }
343
+ if (val instanceof ActivationEnd) {
344
+ this.setPageTitle(val.snapshot); //Set Page Title
345
+ this.tourService.setSetpsCount(val.snapshot.data['pageId']);
346
+ this.hideLoader();
347
+ }
348
+ });
349
+ }
350
+ setPageTitle(snapshot) {
351
+ let title = snapshot.data['title'];
352
+ if (title) {
353
+ this.titleService.setTitle(title);
354
+ }
355
+ else {
356
+ throw "Please specify page title in app-routing.module.ts file for page :: " + this.ar.firstChild.snapshot.url;
357
+ }
358
+ }
359
+ /**
360
+ * @decription This method will return context root of the application
361
+ * @author Prerak Tiwari
362
+ * @version 1.0
363
+ * @param value : context root of application. e.g if application is running on 'http://localhost:9080/cp/page' then this method will return 'cp'
364
+ * @returns String
365
+ **/
366
+ getContextRoot() {
367
+ return window.location.pathname.substring(0, window.location.pathname.indexOf("/", 2));
368
+ }
369
+ getClaimantAppContextRoot() {
370
+ return "/cp";
371
+ }
372
+ getSecurityAppContextRoot() {
373
+ return "/ss";
374
+ }
375
+ openPageByContextRoot(context, uri, nav) {
376
+ if (!context.startsWith('/')) {
377
+ context = '/' + context;
378
+ }
379
+ if (nav && context.includes(this.getContextRoot())) {
380
+ nav.navigateRoot(uri);
381
+ }
382
+ else {
383
+ window.open(location.origin + `${context}/${uri}`, '_self');
384
+ }
385
+ }
386
+ openPageByContextRootWithDataAndTxnId(context, uri, data, transactionId, nav) {
387
+ if (!context.startsWith('/')) {
388
+ context = '/' + context;
389
+ }
390
+ let separator = '&';
391
+ if (!uri.includes('?')) {
392
+ separator = "?";
393
+ }
394
+ if (data) {
395
+ console.log('here with data');
396
+ if (nav && context.includes(this.getContextRoot())) {
397
+ nav.navigateForward(`${uri}${separator}data=${btoa(JSON.stringify(data))}&txnid=${btoa(transactionId)}`);
398
+ }
399
+ else {
400
+ window.open(location.origin + `${context}/${uri}${separator}data=${btoa(JSON.stringify(data))}&txnid=${btoa(transactionId)}`, '_self');
401
+ }
402
+ }
403
+ else {
404
+ console.log('or here with no data');
405
+ if (nav && context.includes(this.getContextRoot())) {
406
+ nav.navigateForward(`${uri}${separator}txnid=${btoa(transactionId)}`);
407
+ }
408
+ else {
409
+ window.open(location.origin + `${context}/${uri}${separator}txnid=${btoa(transactionId)}`, '_self');
410
+ }
411
+ }
412
+ }
413
+ openPageByContextRootWithData(context, uri, data, nav) {
414
+ if (!context.startsWith('/')) {
415
+ context = '/' + context;
416
+ }
417
+ let separator = '&';
418
+ if (!uri.includes('?')) {
419
+ separator = "?";
420
+ }
421
+ if (nav && context.includes(this.getContextRoot())) {
422
+ nav.navigateForward(`${uri}${separator}data=${btoa(JSON.stringify(data))}`);
423
+ }
424
+ else {
425
+ window.open(location.origin + `${context}/${uri}${separator}data=${btoa(JSON.stringify(data))}`, '_self');
426
+ }
427
+ }
428
+ maskExceptFirstAndLastChar(value) {
429
+ return value[0] + "*".repeat(value.length - 2) + value.slice(-1);
430
+ }
431
+ maskEmail(email) {
432
+ var parts = email.split("@");
433
+ if (parts.length == 2) {
434
+ return this.maskExceptFirstAndLastChar(parts[0]) + "@" + this.maskExceptFirstAndLastChar(parts[1]);
435
+ }
436
+ return this.maskExceptFirstAndLastChar(parts[0]);
437
+ }
438
+ isPlayformCapacitor() {
439
+ return this.platform.is('capacitor');
440
+ }
441
+ isNewPasswordPolicyEnabled() {
442
+ return LibConstants.isNewPasswordPolicyEnabled == 'true';
443
+ }
444
+ isSameSymbolPolicyForClaimantAndAgency() {
445
+ return LibConstants.isSameSymbolPolicyForClaimantAndAgency == 'true';
446
+ }
447
+ focusOnSubmit(el) {
448
+ var element = el.nativeElement.querySelector(this.focusables.map(x => `${x}.ng-invalid`).join(","));
449
+ if (element) {
450
+ var primeNgComponent = element.querySelector(this.focusables.map(x => `${x}.p-component`).join(","));
451
+ if (primeNgComponent) {
452
+ primeNgComponent.focus();
453
+ }
454
+ else {
455
+ element.focus();
456
+ }
457
+ //Block for Radio Button Start
458
+ var primeNgComponent1 = element.querySelector("div.p-selectbutton");
459
+ if (primeNgComponent1) {
460
+ var primeNgComponent2 = primeNgComponent1.querySelector("div.p-component");
461
+ if (primeNgComponent2) {
462
+ primeNgComponent2.focus();
463
+ }
464
+ }
465
+ //Block for Radio Button End
466
+ }
467
+ }
468
+ generateRandomKey() {
469
+ return Math.floor(Math.random() * 256);
470
+ }
471
+ base64UrlEncode(input) {
472
+ return btoa(input)
473
+ .replace(/\+/g, '-')
474
+ .replace(/\//g, '_')
475
+ .replace(/=+$/, '');
476
+ }
477
+ xorEncrypt(input, key) {
478
+ const chars = input
479
+ .split('')
480
+ .map(c => String.fromCharCode(c.charCodeAt(0) ^ key))
481
+ .join('');
482
+ return this.base64UrlEncode(chars);
483
+ }
484
+ base64UrlDecode(input) {
485
+ input = input.replace(/-/g, '+').replace(/_/g, '/');
486
+ while (input.length % 4)
487
+ input += '=';
488
+ return atob(input);
489
+ }
490
+ xorDecrypt(encoded, key) {
491
+ const decoded = this.base64UrlDecode(encoded);
492
+ return decoded
493
+ .split('')
494
+ .map(c => String.fromCharCode(c.charCodeAt(0) ^ key))
495
+ .join('');
496
+ }
497
+ static { this.ɵfac = function UtilService_Factory(t) { return new (t || UtilService)(i0.ɵɵinject(i1.AlertController), i0.ɵɵinject(i2.HttpClient), i0.ɵɵinject(i1.LoadingController), i0.ɵɵinject(i1.ToastController), i0.ɵɵinject(i3.MessageService), i0.ɵɵinject(i4.NgxSpinnerService), i0.ɵɵinject(i5.LoadingBarService), i0.ɵɵinject(i6.LoggerService), i0.ɵɵinject(i7.Router), i0.ɵɵinject(i8.Title), i0.ɵɵinject(i7.ActivatedRoute), i0.ɵɵinject(i9.TourService), i0.ɵɵinject(i1.Platform)); }; }
498
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: UtilService, factory: UtilService.ɵfac, providedIn: 'root' }); }
499
+ }
500
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UtilService, [{
501
+ type: Injectable,
502
+ args: [{
503
+ providedIn: 'root'
504
+ }]
505
+ }], () => [{ type: i1.AlertController }, { type: i2.HttpClient }, { type: i1.LoadingController }, { type: i1.ToastController }, { type: i3.MessageService }, { type: i4.NgxSpinnerService }, { type: i5.LoadingBarService }, { type: i6.LoggerService }, { type: i7.Router }, { type: i8.Title }, { type: i7.ActivatedRoute }, { type: i9.TourService }, { type: i1.Platform }], null); })();
506
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZELE9BQU8sRUFBYyxXQUFXLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRSxPQUFPLEVBQWdDLFVBQVUsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUs1RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVyRSxPQUFPLEVBQWtCLGFBQWEsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFVLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7O0FBU3hHLE1BQU0sT0FBTyxXQUFXO0lBV3RCLFlBQW1CLGVBQWdDLEVBQVMsVUFBc0IsRUFBUyxFQUFzQixFQUM5RixlQUFnQyxFQUFTLFVBQTBCLEVBQVUsT0FBMEIsRUFDdkcsTUFBeUIsRUFBVSxNQUFxQixFQUFVLE1BQWMsRUFDL0UsWUFBbUIsRUFBVSxFQUFrQixFQUFVLFdBQXdCLEVBQ2pGLFFBQWtCO1FBSm5CLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUFTLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQUM5RixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFBUyxlQUFVLEdBQVYsVUFBVSxDQUFnQjtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQW1CO1FBQ3ZHLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDL0UsaUJBQVksR0FBWixZ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QyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWE7UUFDM0IsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDcEQsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7WUFBRSxLQUFLLElBQUksR0FBRyxDQUFDO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBZSxFQUFFLEdBQVc7UUFDckMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxPQUFPLE9BQU87YUFDWCxLQUFLLENBQUMsRUFBRSxDQUFDO2FBQ1QsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2FBQ3BELElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNkLENBQUM7NEVBbmxCWSxXQUFXO3VFQUFYLFdBQVcsV0FBWCxXQUFXLG1CQUZWLE1BQU07O2lGQUVQLFdBQVc7Y0FIdkIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWxlcnRDb250cm9sbGVyLCBMb2FkaW5nQ29udHJvbGxlciwgTmF2Q29udHJvbGxlciwgUGxhdGZvcm0sIFRvYXN0Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycywgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWVzc2FnZX0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtNZXNzYWdlU2VydmljZX0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgTmd4U3Bpbm5lclNlcnZpY2UgfSBmcm9tIFwibmd4LXNwaW5uZXJcIjtcbmltcG9ydCB7IExvYWRpbmdCYXJTZXJ2aWNlIH0gZnJvbSAnQG5neC1sb2FkaW5nLWJhci9jb3JlJztcbmltcG9ydCB7IEVycm9yTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvRXJyb3JNb2RlbCc7XG5pbXBvcnQgeyBnZXRCYXNlVXJsLCBMaWJDb25zdGFudHMgfSBmcm9tICcuLi8uLi9tb2RlbHMvTGliQ29uc3RhbnRzJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIEFjdGl2YXRpb25FbmQsIE5hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25TdGFydCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBUb3VyU2VydmljZSB9IGZyb20gJy4uL3RvdXIvdG91ci5zZXJ2aWNlJztcblxuZGVjbGFyZSBsZXQgZ3RhZzogYW55O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBVdGlsU2VydmljZSB7XG5cbiAgZm9jdXNhYmxlcyA9IFtcInBpbnB1dHRleHRcIiwgXCJwLWlucHV0bWFza1wiLCBcImlucHV0XCIsIFwic2VsZWN0XCIsIFwidGV4dGFyZWFcIiwgXCJwLWNhbGVuZGFyXCIsIFwicmFkaW9cIiwgXCJwLWRyb3Bkb3duXCIsIFwicC1zZWxlY3RCdXR0b25cIiwgXCJwLWF1dG9jb21wbGV0ZVwiLCBcInAtcGFzc3dvcmRcIixcInAtY2hlY2tib3hcIiwgXCJwLWlucHV0dGV4dGFyZWFcIl07XG5cbiAgLypUbyBkaXNwbGF5IHZhcmlvdXMgbWVzc2FnZXMqL1xuICBwdWJsaWMgbXNnczogTWVzc2FnZVtdID0gW107XG5cbiAgb3B0aW9ucyA9IHt9O1xuXG4gIGxvYWRpbmcgID0gbnVsbDtcbiAgXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBhbGVydENvbnRyb2xsZXI6IEFsZXJ0Q29udHJvbGxlciwgcHVibGljIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIHB1YmxpYyBsYyA6IExvYWRpbmdDb250cm9sbGVyLCBcbiAgICAgICAgICAgICAgcHVibGljIHRvYXN0Q29udHJvbGxlcjogVG9hc3RDb250cm9sbGVyLCBwdWJsaWMgbXNnU2VydmljZTogTWVzc2FnZVNlcnZpY2UsIHByaXZhdGUgc3Bpbm5lcjogTmd4U3Bpbm5lclNlcnZpY2UsXG4gICAgICAgICAgICAgIHB1YmxpYyBsb2FkZXI6IExvYWRpbmdCYXJTZXJ2aWNlLCBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyU2VydmljZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgXG4gICAgICAgICAgICAgIHByaXZhdGUgdGl0bGVTZXJ2aWNlOiBUaXRsZSwgcHJpdmF0ZSBhcjogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgdG91clNlcnZpY2U6IFRvdXJTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHBsYXRmb3JtOiBQbGF0Zm9ybSkgeyBcbiAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgXCJBY2NlcHRcIjogJ2FwcGxpY2F0aW9uL2pzb24nfSk7XG4gICAgdGhpcy5vcHRpb25zID0geyBoZWFkZXJzOiBoZWFkZXJzIH07XG4gIH1cblxuICBhc3luYyB0b2FzdChtc2cgOiBzdHJpbmcpe1xuICAgIGNvbnN0IHRvYXN0ID0gYXdhaXQgdGhpcy50b2FzdENvbnRyb2xsZXIuY3JlYXRlKHtcbiAgICAgIG1lc3NhZ2U6IG1zZyxcbiAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcbiAgICAgIGR1cmF0aW9uOiAyMDAwLFxuICAgICAga2V5Ym9hcmRDbG9zZTogdHJ1ZSxcbiAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6ICdEb25lJyxcbiAgICAgICAgICByb2xlOiAnY2FuY2VsJyxcbiAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG4gICAgdG9hc3QucHJlc2VudCgpO1xuICB9XG5cbiAgYXN5bmMgcHJlc2VudFRvYXN0KG1zZyA6IHN0cmluZykge1xuICAgIGNvbnN0IHRvYXN0ID0gYXdhaXQgdGhpcy50b2FzdENvbnRyb2xsZXIuY3JlYXRlKHtcbiAgICAgIG1lc3NhZ2U6IG1zZyxcbiAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAga2V5Ym9hcmRDbG9zZTogdHJ1ZSxcbiAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6ICdEb25lJyxcbiAgICAgICAgICByb2xlOiAnY2FuY2VsJyxcbiAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG4gICAgdG9hc3QucHJlc2VudCgpO1xuICB9XG5cbiAgYmFzZVVybCgpIDogc3RyaW5ne1xuICAgIHJldHVybiBnZXRCYXNlVXJsKCk7XG4gIH1cblxuICBhc3luYyBwcmVzZW50QWxlcnQoaGVhZGVyLCBzdWJNc2csIGVyckR0bCkge1xuICAgIGNvbnN0IGFsZXJ0ID0gYXdhaXQgdGhpcy5hbGVydENvbnRyb2xsZXIuY3JlYXRlKHtcbiAgICAgIGhlYWRlcjogaGVhZGVyLFxuICAgICAgc3ViSGVhZGVyOiBzdWJNc2csXG4gICAgICBtZXNzYWdlOiBlcnJEdGwsXG4gICAgICBidXR0b25zOiBbJ09LJ11cbiAgICB9KTtcblxuICAgIGF3YWl0IGFsZXJ0LnByZXNlbnQoKTtcbiAgfVxuXG4gIGVycm9yKGhlYWRlciwgc3ViTXNnLCBlcnJEdGwpe1xuICAgIHRoaXMucHJlc2VudEFsZXJ0KGhlYWRlciwgc3ViTXNnLCBlcnJEdGwpO1xuICB9XG5cbiAgc2hvd0Vycm9yKG1zZyA6IHN0cmluZyl7XG4gICAgbGV0IGVyckR0bCA6IEVycm9yTW9kZWwgPSBuZXcgRXJyb3JNb2RlbCgpO1xuICAgIGVyckR0bC5tc2cgPSBtc2c7XG4gICAgdGhpcy5lcnJvck1zZyhlcnJEdGwpO1xuICB9XG5cbiAgZXJyb3JNc2coZXJyRHRsIDogRXJyb3JNb2RlbCl7XG4gICAgdGhpcy5tc2dzLnB1c2goe3NldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5IDogJ0Vycm9yJywgZGV0YWlsIDogZXJyRHRsLm1zZ30pO1xuICAgIHRoaXMubXNnU2VydmljZS5jbGVhcigpO1xuICAgIGlmKGVyckR0bC5lcnJvcklkKXtcbiAgICAgIC8vdGhpcy5tc2dTZXJ2aWNlLmFkZCh7c2V2ZXJpdHk6J2Vycm9yJywgc3VtbWFyeTonRXJyb3InLCBkZXRhaWw6IGVyckR0bC5tc2cgKyBgKCBlcnJvciBpZCA6ICR7ZXJyRHRsLmVycm9ySWR9KWAsIGxpZmU6IDcwMDAsIGlkIDogZXJyRHRsLmVycm9ySWR9KTtcbiAgICAgIHRoaXMubXNnU2VydmljZS5hZGQoe3NldmVyaXR5OidlcnJvcicsIHN1bW1hcnk6J0Vycm9yJywgZGV0YWlsOiBlcnJEdGwubXNnLCBsaWZlOiBMaWJDb25zdGFudHMuZXJyb3JNZXNzYWdlUG9wdXBMaWZlLCBpZCA6IGVyckR0bC5lcnJvcklkfSk7XG4gICAgfWVsc2V7XG4gICAgICB0aGlzLm1zZ1NlcnZpY2UuYWRkKHtzZXZlcml0eTonZXJyb3InLCBzdW1tYXJ5OidFcnJvcicsIGRldGFpbDogZXJyRHRsLm1zZywgbGlmZTogTGliQ29uc3RhbnRzLmVycm9yTWVzc2FnZVBvcHVwTGlmZSwgaWQgOiBlcnJEdGwuZXJyb3JJZH0pO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHN1Y2Nlc3MobXNnKXtcbiAgICB0aGlzLm1zZ3MgPSBbXTtcbiAgICB0aGlzLm1zZ3MucHVzaCh7c2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeSA6ICdTdWNjZXNzJywgZGV0YWlsIDogbXNnfSk7XG5cbiAgICB0aGlzLm1zZ1NlcnZpY2UuY2xlYXIoKTtcbiAgICB0aGlzLm1zZ1NlcnZpY2UuYWRkKHtzZXZlcml0eTonc3VjY2VzcycsIHN1bW1hcnk6J1N1Y2Nlc3MnLCBkZXRhaWw6IG1zZywgbGlmZTogTGliQ29uc3RhbnRzLnN1Y2Nlc3NNZXNzYWdlUG9wdXBMaWZlfSk7XG4gIH1cblxuICBpbmZvKG1zZyl7XG4gICAgdGhpcy5wcmVzZW50QWxlcnQoJ0luZm8nLCAnJywgbXNnKTtcbiAgfVxuXG4gIGdldDxUPihlbmRQb2ludCA6IHN0cmluZywgb3B0aW9ucz86IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtcbiAgICAgICAgICBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICAgIH07XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcGFyYW1zPzogSHR0cFBhcmFtcyB8IHtcbiAgICAgICAgICBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgfTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gIH0sIHNlcnZpY2VOYW1lPyA6IHN0cmluZyk6IE9ic2VydmFibGU8VD57XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8VD4odGhpcy5nZXRVcmwoZW5kUG9pbnQsIHNlcnZpY2VOYW1lKSwgb3B0aW9ucyAhPSBudWxsID8gb3B0aW9ucyA6IHRoaXMub3B0aW9ucyk7XG4gIH1cblxuICBwb3N0PFQ+KHVybDogc3RyaW5nLCBib2R5OiBhbnkgfCBudWxsLCBvcHRpb25zPzoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1xuICAgICAgICAgIFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgfTtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICBwYXJhbXM/OiBIdHRwUGFyYW1zIHwge1xuICAgICAgICAgIFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgICB9O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICB9LCBzZXJ2aWNlTmFtZT8gOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8VD4odGhpcy5nZXRVcmwodXJsLCBzZXJ2aWNlTmFtZSksIEpTT04uc3RyaW5naWZ5KGJvZHkpLCBvcHRpb25zICE9IG51bGwgPyBvcHRpb25zIDogdGhpcy5vcHRpb25zKTtcbiAgfVxuXG4gIHBvc3RGb3JtRGF0YTxUPih1cmw6IHN0cmluZywgYm9keTogYW55IHwgbnVsbCwgb3B0aW9ucz86IHtcbiAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7XG4gICAgICAgIFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgIH07XG4gICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICBwYXJhbXM/OiBIdHRwUGFyYW1zIHwge1xuICAgICAgICBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgIH07XG4gICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICB9LCBzZXJ2aWNlTmFtZT8gOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgIC8vIGFsZXJ0KHRoaXMuZ2V0RnVsbFVybCh1cmwpKTtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8VD4odGhpcy5nZXRVcmwodXJsLCBzZXJ2aWNlTmFtZSksIGJvZHksIG9wdGlvbnMpO1xuICB9XG5cbiAgZGVsZXRlPFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzoge1xuICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtcbiAgICAgICAgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgfTtcbiAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgIHBhcmFtcz86IEh0dHBQYXJhbXMgfCB7XG4gICAgICAgIFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgfTtcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gIH0sIHNlcnZpY2VOYW1lPyA6IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZGVsZXRlPFQ+KHRoaXMuZ2V0VXJsKHVybCwgc2VydmljZU5hbWUpLCBvcHRpb25zICE9IG51bGwgPyBvcHRpb25zIDogdGhpcy5vcHRpb25zKTtcbiAgfVxuXG4gIHBhdGNoPFQ+KHVybDogc3RyaW5nLCBib2R5OiBhbnkgfCBudWxsLCBvcHRpb25zPzoge1xuICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtcbiAgICAgICAgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgfTtcbiAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgIHBhcmFtcz86IEh0dHBQYXJhbXMgfCB7XG4gICAgICAgIFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgfTtcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG59LCBzZXJ2aWNlTmFtZSA/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBhdGNoPFQ+KHRoaXMuZ2V0VXJsKHVybCwgc2VydmljZU5hbWUpLCBib2R5LCBvcHRpb25zICE9IG51bGwgPyBvcHRpb25zIDogdGhpcy5vcHRpb25zKTtcbiAgfVxuXG4gIGVycm9ySGFuZGxlcihlcnJvcil7XG4gICAgdGhpcy5tc2dzID0gW107XG4gICAgdGhpcy5sb2dnZXIuZXJyb3IoJ2Vycm9yIC0tLS0+JywgZXJyb3IpO1xuICAgIHRoaXMuZXJyb3JNc2coZXJyb3IpO1xuICB9XG5cbiAgZ2V0RnVsbFVybChlbmRQb2ludCA6IHN0cmluZyl7XG4gICAgcmV0dXJuIHRoaXMuYmFzZVVybCgpICsgZW5kUG9pbnQ7XG4gIH1cblxuICBnZXRVcmwoZW5kUG9pbnQgOiBzdHJpbmcsIHNlcnZpY2VOYW1lIDogc3RyaW5nKXtcbiAgICBpZihzZXJ2aWNlTmFtZSl7XG4gICAgICB0aGlzLmJhc2VVcmwoKSArIExpYkNvbnN0YW50cy5mb3J3YXJkU2xhc2ggKyBzZXJ2aWNlTmFtZSArIExpYkNvbnN0YW50cy5mb3J3YXJkU2xhc2ggKyBlbmRQb2ludDtcbiAgICB9ZWxzZXtcbiAgICAgIHJldHVybiB0aGlzLmJhc2VVcmwoKSArIChMaWJDb25zdGFudHMuY29udGV4dCA9PSAnJyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gTGliQ29uc3RhbnRzLmZvcndhcmRTbGFzaCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogTGliQ29uc3RhbnRzLmZvcndhcmRTbGFzaCArIExpYkNvbnN0YW50cy5jb250ZXh0ICsgTGliQ29uc3RhbnRzLmZvcndhcmRTbGFzaCkgKyBlbmRQb2ludDtcbiAgICB9XG4gIH1cblxuYXN5bmMgc2hvd0xvYWRlcigpIHtcbiAgdGhpcy5zcGlubmVyLnNob3coKVxufVxuXG4gIGFzeW5jIGhpZGVMb2FkZXIoKXtcbiAgICB0aGlzLnNwaW5uZXIuaGlkZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZWNyaXB0aW9uIFRoaXMgbWV0aG9kIHdpbGwgZmluZCBkaWZmZXJlbmNlIG9mIGRhdGVzIGJ5IHNwZWNpZmllZCBpbnRlcnZhbFxuICAgKiBAYXV0aG9yIFByZXJhayBUaXdhcmlcbiAgICogQHZlcnNpb24gMS4wXG4gICAqIEBwYXJhbSBmcm9tRGF0ZSBpbiBtaWxpc2Vjb25kc1xuICAgKiBAcGFyYW0gdG9kYXRlIGluIG1pbGlzZWNvbmRzXG4gICAqIEBwYXJhbSBpbnRlcnZhbCA6IHZhbGlkIHZhbHVlcyBhcmUgLS0+IFwieWVhcnNcIiwgXCJtb250aHNcIiwgXCJ3ZWVrc1wiLCBcImRheXNcIiwgXCJob3Vyc1wiLCBcIm1pbnV0ZXNcIiwgXCJzZWNvbmRzXCJcbiAgICogQHJldHVybnMgZGlmZmVyZW5jZSBvZiBkYXRlIGFzIHBlciBpbnRlcnZhbCBzcGVjaWZpZWQuXG4gICAqKi9cbiAgZmluZERpZmZlcmVuY2VJbmRhdGUoZnJvbURhdGUsdG9kYXRlLGludGVydmFsKXtcbiAgICBsZXQgc2Vjb25kPTEwMDAsIG1pbnV0ZT1zZWNvbmQqNjAsIGhvdXI9bWludXRlKjYwLCBkYXk9aG91cioyNCwgd2Vlaz1kYXkqNztcbiAgICBsZXQgdGltZWRpZmYgPSB0b2RhdGUgLSBmcm9tRGF0ZTtcbiAgICBcbiAgICBpZiAoaXNOYU4odGltZWRpZmYpKSBcbiAgICAgIHJldHVybiBOYU47XG4gICAgXG4gICAgc3dpdGNoIChpbnRlcnZhbCkge1xuICAgICAgICBjYXNlIFwieWVhcnNcIjogcmV0dXJuIHRvZGF0ZS5nZXRGdWxsWWVhcigpIC0gZnJvbURhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgY2FzZSBcIm1vbnRoc1wiOiByZXR1cm4gKFxuICAgICAgICAgICAgKCB0b2RhdGUuZ2V0RnVsbFllYXIoKSAqIDEyICsgdG9kYXRlLmdldE1vbnRoKCkgKVxuICAgICAgICAgICAgLVxuICAgICAgICAgICAgKCBmcm9tRGF0ZS5nZXRGdWxsWWVhcigpICogMTIgKyBmcm9tRGF0ZS5nZXRNb250aCgpIClcbiAgICAgICAgKTtcbiAgICAgICAgY2FzZSBcIndlZWtzXCIgIDogcmV0dXJuIE1hdGgucm91bmQodGltZWRpZmYgLyB3ZWVrKTtcbiAgICAgICAgY2FzZSBcImRheXNcIiAgIDogcmV0dXJuIE1hdGgucm91bmQodGltZWRpZmYgLyBkYXkpOyBcbiAgICAgICAgY2FzZSBcImhvdXJzXCIgIDogcmV0dXJuIE1hdGgucm91bmQodGltZWRpZmYgLyBob3VyKTsgXG4gICAgICAgIGNhc2UgXCJtaW51dGVzXCI6IHJldHVybiBNYXRoLnJvdW5kKHRpbWVkaWZmIC8gbWludXRlKTtcbiAgICAgICAgY2FzZSBcInNlY29uZHNcIjogcmV0dXJuIE1hdGgucm91bmQodGltZWRpZmYgLyBzZWNvbmQpO1xuICAgICAgICBkZWZhdWx0OiByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVjcmlwdGlvbiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBkYXRlIGluIGRkTU15eXl5IGZvcm1hdC5cbiAgICogQGF1dGhvciBQcmVyYWsgVGl3YXJpXG4gICAqIEB2ZXJzaW9uIDEuMFxuICAgKiBAcmV0dXJucyBzdHJpbmdcbiAgICoqL1xuICBnZXREYXRlSW5NTUREWVlZWUZvcm1hdChkYXRlIDogRGF0ZSl7XG4gICAgbGV0IGRkID0gZGF0ZS5nZXREYXRlKCk7XG4gICAgbGV0IE1NID0gZGF0ZS5nZXRNb250aCgpICsgMTtcbiAgICBsZXQgeXl5eSA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICBcbiAgICBsZXQgZGF0ZVRvUmV0dXJuID0gIE1NICsgJy8nICsgZGQgKyAnLycgKyB5eXl5O1xuICAgIHJldHVybiBkYXRlVG9SZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQGRlY3JpcHRpb24gVGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gRGF0ZSBvYmplY3QgKGZvciB5eXl5L01NL2RkKVxuICAgKiBAYXV0aG9yIFByZXJhayBUaXdhcmlcbiAgICogQHZlcnNpb24gMS4wXG4gICAqIEBwYXJhbSB2YWx1ZSA6IGRhdGUgc2VwYXJhdGVkIHdpdGggJy0nXG4gICAqIEByZXR1cm5zIERhdGVcbiAgICoqL1xuICBnZXRFbnRlcmVkRGF0ZSh2YWx1ZSl7XG4gICAgdmFyIGRhdGVBcnJheSA9IHZhbHVlLnNwbGl0KFwiLVwiKTtcbiAgICB2YXIgZGQgPSBwYXJzZUludCh0aGlzLnByZXBlZFplcm9JZlNpbmdsZURpZ2l0KGRhdGVBcnJheVsyXSkpO1xuICAgIHZhciBNTSA9IHBhcnNlSW50KHRoaXMucHJlcGVkWmVyb0lmU2luZ2xlRGlnaXQoZGF0ZUFycmF5WzFdKSkgLSAxO1xuICAgIHZhciB5eXl5ID0gcGFyc2VJbnQodGhpcy5wcmVwZWRaZXJvSWZTaW5nbGVEaWdpdChkYXRlQXJyYXlbMF0pKTtcbiAgICByZXR1cm4gbmV3IERhdGUoeXl5eSxNTSxkZCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlY3JpcHRpb24gVGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gRGF0ZSBvYmplY3QgKGZvciBNTS9kZC95eXl5KS5cbiAgICogQGF1dGhvciBQcmVyYWsgVGl3YXJpXG4gICAqIEB2ZXJzaW9uIDEuMFxuICAgKiBAcGFyYW0gdmFsdWUgOiBkYXRlIHNlcGFyYXRlZCB3aXRoICctJ1xuICAgKiBAcmV0dXJucyBEYXRlXG4gICAqKi9cbiAgZ2V0RGF0ZUZyb21TdHJpbmcodmFsdWUpe1xuICAgIHZhciBkYXRlQXJyYXkgPSB2YWx1ZS5zcGxpdChcIi1cIik7XG4gICAgdmFyIGRkID0gcGFyc2VJbnQodGhpcy5wcmVwZWRaZXJvSWZTaW5nbGVEaWdpdChkYXRlQXJyYXlbMl0pKTtcbiAgICB2YXIgTU0gPSBwYXJzZUludCh0aGlzLnByZXBlZFplcm9JZlNpbmdsZURpZ2l0KGRhdGVBcnJheVsxXSkpIC0gMTtcbiAgICB2YXIgeXl5eSA9IHBhcnNlSW50KHRoaXMucHJlcGVkWmVyb0lmU2luZ2xlRGlnaXQoZGF0ZUFycmF5WzBdKSk7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHl5eXksTU0sZGQpO1xuICB9XG5cbiAgZ2V0RW50ZXJlZERhdGVGcm9tU3RyaW5nKHZhbHVlKXtcbiAgICB2YXIgZGF0ZUFycmF5ID0gdmFsdWUuc3BsaXQoXCIvXCIpO1xuICAgIHZhciBNTSA9IHBhcnNlSW50KHRoaXMucHJlcGVkWmVyb0lmU2luZ2xlRGlnaXQoZGF0ZUFycmF5WzBdKSkgLSAxO1xuICAgIHZhciBkZCA9IHBhcnNlSW50KHRoaXMucHJlcGVkWmVyb0lmU2luZ2xlRGlnaXQoZGF0ZUFycmF5WzFdKSk7XG4gICAgdmFyIHl5eXkgPSBwYXJzZUludCh0aGlzLnByZXBlZFplcm9JZlNpbmdsZURpZ2l0KGRhdGVBcnJheVsyXSkpO1xuICAgIHJldHVybiBuZXcgRGF0ZSh5eXl5LE1NLGRkKTtcbiAgfVxuXG4gIGdldERhdGVJbk1NRERZWVlZKHZhbHVlKXtcbiAgICB2YXIgZGF0ZUFycmF5ID0gdmFsdWUuc3BsaXQoXCItXCIpO1xuICAgIHZhciBkZCA9IHBhcnNlSW50KHRoaXMucHJlcGVkWmVyb0lmU2luZ2xlRGlnaXQoZGF0ZUFycmF5WzJdKSk7XG4gICAgdmFyIE1NID0gcGFyc2VJbnQodGhpcy5wcmVwZWRaZXJvSWZTaW5nbGVEaWdpdChkYXRlQXJyYXlbMV0pKTtcbiAgICB2YXIgeXl5eSA9IHBhcnNlSW50KHRoaXMucHJlcGVkWmVyb0lmU2luZ2xlRGlnaXQoZGF0ZUFycmF5WzBdKSk7XG4gICAgcmV0dXJuIE1NICsgJy8nICsgZGQgKyAnLycgKyB5eXl5O1xuICB9XG5cbiAgcHJlcGVkWmVyb0lmU2luZ2xlRGlnaXQobnVtYmVyKXtcbiAgICBudW1iZXIgPSBudW1iZXIgKyBMaWJDb25zdGFudHMuYmxhbmtTdHJpbmc7XG4gICAgaWYobnVtYmVyLmxlbmd0aCA8IDIpe1xuICAgICAgbnVtYmVyID0gXCIwXCIgKyBudW1iZXI7XG4gICAgfVxuICAgIHJldHVybiBudW1iZXI7XG4gIH1cblxuICAvKipcbiAgKiBAZGVjcmlwdGlvbiBUaGlzIG1ldGhvZCBjaGVjayBpZiBlbnRlcmVkIG51bWJlciBpcyB2YWxpZCBvciBub3QuXG4gICogQGF1dGhvciBQcmVyYWsgVGl3YXJpXG4gICogQHZlcnNpb24gMS4wXG4gICogQHJldHVybnMgdHJ1ZSA6IG51bWJlciBpcyB2YWxpZCA8L2JyPiBmYWxzZSA6IG51bWJlciBpcyBpbnZhbGlkXG4gICovXG4gIHZhbGlkYXRlTnVtYmVyKG51bWJlcikge1xuICAgIHZhciByZWcgPSBuZXcgUmVnRXhwKFwiXlswLTldKiRcIik7IFxuICAgIHJldHVybiByZWcudGVzdChudW1iZXIpO1xuICB9XG5cbiAgLyoqXG4gICogQGRlY3JpcHRpb24gVGhpcyBtZXRob2QgY2hlY2sgaWYgZW50ZXJlZCBudW1iZXIgaXMgdmFsaWQgb3Igbm90LlxuICAqIEBhdXRob3IgUHJlcmFrIFRpd2FyaVxuICAqIEB2ZXJzaW9uIDEuMFxuICAqIEByZXR1cm5zIHRydWUgOiBudW1iZXIgaXMgdmFsaWQgPC9icj4gZmFsc2UgOiBudW1iZXIgaXMgaW52YWxpZFxuICAqL1xuICB2YWxpZGF0ZUVtYWlsKGVtYWlsKSB7XG4gICAgdmFyIHJlZyA9IG5ldyBSZWdFeHAoJy9eKChbXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVxcW1xcXVxcXFwuLDs6XFxzQFwiXSspKil8KFwiLitcIikpQCgoXFxbWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfV0pfCgoW2EtekEtWlxcLTAtOV0rXFwuKStbYS16QS1aXXsyLH0pKSQvJyk7IFxuICAgIHJldHVybiByZWcudGVzdChlbWFpbCk7XG4gIH1cblxuICBzZXRWYWxpZGF0aW9uKGNvbnRyb2wgOiBBYnN0cmFjdENvbnRyb2wsIG5ld1ZhbGlkYXRvciA6IFZhbGlkYXRvckZuICB8IFZhbGlkYXRvckZuW10gfCBudWxsKXtcbiAgICBjb250cm9sLnNldFZhbGlkYXRvcnMobmV3VmFsaWRhdG9yKTtcbiAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIGNsZWFyVmFsaWRhdGlvbihjb250cm9sIDogQWJzdHJhY3RDb250cm9sKXtcbiAgICBjb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbiAgc2V0UmVxdWlyZWRWYWxpZGF0b3IoY29udHJvbCA6IEFic3RyYWN0Q29udHJvbCl7XG4gICAgdGhpcy5zZXRWYWxpZGF0aW9uKGNvbnRyb2wsIFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICB9XG5cbiAgLy8gQGR5bmFtaWNcbiAgc3RhdGljIHBhdHRlcm5WYWxpZGF0b3IocmVnZXg6IFJlZ0V4cCwgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMpOiBWYWxpZGF0b3JGbiB7XG4gICAgY29uc3QgcmVzID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPT4ge1xuICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XG4gICAgICAgIC8vIGlmIGNvbnRyb2wgaXMgZW1wdHkgcmV0dXJuIG5vIGVycm9yXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICBcbiAgICAgIC8vIHRlc3QgdGhlIHZhbHVlIG9mIHRoZSBjb250cm9sIGFnYWluc3QgdGhlIHJlZ2V4cCBzdXBwbGllZFxuICAgICAgY29uc3QgdmFsaWQgPSByZWdleC50ZXN0KGNvbnRyb2wudmFsdWUpO1xuICBcbiAgICAgIC8vIGlmIHRydWUsIHJldHVybiBubyBlcnJvciAobm8gZXJyb3IpLCBlbHNlIHJldHVybiBlcnJvciBwYXNzZWQgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXJcbiAgICAgIHJldHVybiB2YWxpZCA/IG51bGwgOiBlcnJvcjtcbiAgICB9O1xuICAgIHJldHVybiByZXM7XG4gIH1cblxuICBzdGF0aWMgcGFzc3dvcmRNYXRjaFZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICBjb25zdCBwYXNzd29yZDogc3RyaW5nID0gY29udHJvbC5nZXQoJ3Bhc3N3b3JkJykudmFsdWU7IC8vIGdldCBwYXNzd29yZCBmcm9tIG91ciBwYXNzd29yZCBmb3JtIGNvbnRyb2xcbiAgICBjb25zdCBjb25maXJtUGFzc3dvcmQ6IHN0cmluZyA9IGNvbnRyb2wuZ2V0KCdjb25maXJtUGFzc3dvcmQnKS52YWx1ZTsgLy8gZ2V0IHBhc3N3b3JkIGZyb20gb3VyIGNvbmZpcm1QYXNzd29yZCBmb3JtIGNvbnRyb2xcbiAgICAvLyBjb21wYXJlIGlzIHRoZSBwYXNzd29yZCBtYXRoXG4gICAgaWYgKHBhc3N3b3JkICE9PSBjb25maXJtUGFzc3dvcmQpIHtcbiAgICAgIC8vIGlmIHRoZXkgZG9uJ3QgbWF0Y2gsIHNldCBhbiBlcnJvciBpbiBvdXIgY29uZmlybVBhc3N3b3JkIGZvcm0gY29udHJvbFxuICAgICAgY29udHJvbC5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpLnNldEVycm9ycyh7IE5vUGFzc3N3b3JkTWF0Y2g6IHRydWUgfSk7XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0U3NuKHNzbiA6IHN0cmluZyl7XG4gICAgcmV0dXJuIHNzbi5zdWJzdHIoMCwgMykgKyAnLScgKyBzc24uc3Vic3RyKDMsIDIpICsgJy0nICsgc3NuLnN1YnN0cig1LCA0KVxuICB9XG5cbiAgbWFza1Nzbihzc24gOiBzdHJpbmcpe1xuICAgIHJldHVybiAnWFhYLVhYLScgKyBzc24uc3Vic3RyKDUsIDQpXG4gIH1cblxuICBtYXNrKHZhbHVlIDogc3RyaW5nLCBjaGFyVG9IaWRlIDogbnVtYmVyKXtcbiAgICBpZighdmFsdWUpe1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZih2YWx1ZS5sZW5ndGggPiBjaGFyVG9IaWRlKXtcbiAgICAgIHZhciB4eHggPSAnJztcbiAgICAgIGZvcih2YXIgY291bnQgPSAxIDsgY291bnQgPD0gY2hhclRvSGlkZSA7IGNvdW50Kyspe1xuICAgICAgICB4eHggPSAnWCcgKyB4eHg7XG4gICAgICB9XG4gICAgICByZXR1cm4geHh4ICsgdmFsdWUuc3Vic3RyKHZhbHVlLmxlbmd0aCAtIGNoYXJUb0hpZGUgKyAxLCBjaGFyVG9IaWRlKVxuICAgIH1lbHNle1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyTWVzc2FnZXMoKXtcbiAgICB0aGlzLm1zZ3MgPSBbXTtcbiAgfVxuXG4gIGlzU3RhdGUoc3RhdGUgOiBzdHJpbmcpIDogYm9vbGVhbntcbiAgICByZXR1cm4gdGhpcy5nZXRTdGF0ZUxvd2VyY2FzZSgpID09IHN0YXRlLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBnZXRTdGF0ZSgpe1xuICAgIHJldHVybiBMaWJDb25zdGFudHMuU1RBVEU7XG4gIH1cblxuICBnZXRTdGF0ZUxvd2VyY2FzZSgpe1xuICAgIHJldHVybiBMaWJDb25zdGFudHMuc3RhdGU7XG4gIH1cblxuICBwdWJsaWMgc2V0dXBOYXZpZ2F0aW9uQmFzZWRFdmVudHMoKSB7XG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShcbiAgICAgIHZhbCA9PiB7XG4gICAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgICB0aGlzLm1zZ3MgPSBbXTtcbiAgICAgICAgICB0aGlzLm1zZ1NlcnZpY2UuY2xlYXIoKTsgLy9DbGVhciBFcnJvci9TdWNjZXNzIE1lc3NhZ2VzXG4gICAgICAgICAgdGhpcy50b3VyU2VydmljZS5zZXRDdXJyZW50U3RlcHNDb3VudCgyMCk7IC8vSm95cmlkZSBTZXR1cFxuICAgICAgICB9XG4gICAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgZ3RhZygnY29uZmlnJywgTGliQ29uc3RhbnRzLmdhSWQsIHsgJ3BhZ2VfcGF0aCc6IHZhbC51cmxBZnRlclJlZGlyZWN0cyB9KTsgLy9TZW5kIHRvIEdvb2xlIEFuYWx5dGljc1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBBY3RpdmF0aW9uRW5kKSB7XG4gICAgICAgICAgdGhpcy5zZXRQYWdlVGl0bGUodmFsLnNuYXBzaG90KTsgLy9TZXQgUGFnZSBUaXRsZVxuICAgICAgICAgIHRoaXMudG91clNlcnZpY2Uuc2V0U2V0cHNDb3VudCh2YWwuc25hcHNob3QuZGF0YVsncGFnZUlkJ10pO1xuICAgICAgICAgIHRoaXMuaGlkZUxvYWRlcigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRQYWdlVGl0bGUoc25hcHNob3QpIHtcbiAgICBsZXQgdGl0bGUgPSBzbmFwc2hvdC5kYXRhWyd0aXRsZSddO1xuICAgIGlmICh0aXRsZSkge1xuICAgICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUodGl0bGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBcIlBsZWFzZSBzcGVjaWZ5IHBhZ2UgdGl0bGUgaW4gYXBwLXJvdXRpbmcubW9kdWxlLnRzIGZpbGUgZm9yIHBhZ2UgOjogXCIgKyB0aGlzLmFyLmZpcnN0Q2hpbGQuc25hcHNob3QudXJsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVjcmlwdGlvbiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBjb250ZXh0IHJvb3Qgb2YgdGhlIGFwcGxpY2F0aW9uXG4gICAqIEBhdXRob3IgUHJlcmFrIFRpd2FyaVxuICAgKiBAdmVyc2lvbiAxLjBcbiAgICogQHBhcmFtIHZhbHVlIDogY29udGV4dCByb290IG9mIGFwcGxpY2F0aW9uLiBlLmcgaWYgYXBwbGljYXRpb24gaXMgcnVubmluZyBvbiAnaHR0cDovL2xvY2FsaG9zdDo5MDgwL2NwL3BhZ2UnIHRoZW4gdGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gJ2NwJ1xuICAgKiBAcmV0dXJucyBTdHJpbmdcbiAgICoqL1xuICBnZXRDb250ZXh0Um9vdCgpIDogc3RyaW5ne1xuICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuc3Vic3RyaW5nKDAsIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5pbmRleE9mKFwiL1wiLDIpKTtcbiAgfVxuXG4gIGdldENsYWltYW50QXBwQ29udGV4dFJvb3QoKSA6IHN0cmluZ3tcbiAgICByZXR1cm4gXCIvY3BcIjtcbiAgfVxuXG4gIGdldFNlY3VyaXR5QXBwQ29udGV4dFJvb3QoKSA6IHN0cmluZ3tcbiAgICByZXR1cm4gXCIvc3NcIjtcbiAgfVxuXG5cbiAgb3BlblBhZ2VCeUNvbnRleHRSb290KGNvbnRleHQ6IHN0cmluZywgdXJpOiBzdHJpbmcsIG5hdj86IE5hdkNvbnRyb2xsZXIpe1xuICAgIGlmKCFjb250ZXh0LnN0YXJ0c1dpdGgoJy8nKSl7XG4gICAgICBjb250ZXh0ID0gJy8nICsgY29udGV4dDtcbiAgICB9XG4gICAgaWYobmF2ICYmIGNvbnRleHQuaW5jbHVkZXModGhpcy5nZXRDb250ZXh0Um9vdCgpKSl7XG4gICAgICBuYXYubmF2aWdhdGVSb290KHVyaSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvdy5vcGVuKGxvY2F0aW9uLm9yaWdpbiArIGAke2NvbnRleHR9LyR7dXJpfWAgLCAnX3NlbGYnKTtcbiAgICB9XG4gIH1cblxuICBvcGVuUGFnZUJ5Q29udGV4dFJvb3RXaXRoRGF0YUFuZFR4bklkKGNvbnRleHQ6IHN0cmluZywgdXJpOiBzdHJpbmcsIGRhdGEsIHRyYW5zYWN0aW9uSWQsIG5hdj86IE5hdkNvbnRyb2xsZXIpe1xuICAgIGlmKCFjb250ZXh0LnN0YXJ0c1dpdGgoJy8nKSl7XG4gICAgICBjb250ZXh0ID0gJy8nICsgY29udGV4dDtcbiAgICB9XG4gICAgbGV0IHNlcGFyYXRvciA9ICcmJztcbiAgICBpZighdXJpLmluY2x1ZGVzKCc/Jykpe1xuICAgICAgc2VwYXJhdG9yID0gXCI/XCI7XG4gICAgfVxuICAgIGlmKGRhdGEpe1xuICAgICAgY29uc29sZS5sb2coJ2hlcmUgd2l0aCBkYXRhJyk7XG4gICAgICBpZihuYXYgJiYgY29udGV4dC5pbmNsdWRlcyh0aGlzLmdldENvbnRleHRSb290KCkpKXtcbiAgICAgICAgbmF2Lm5hdmlnYXRlRm9yd2FyZChgJHt1cml9JHtzZXBhcmF0b3J9ZGF0YT0ke2J0b2EoSlNPTi5zdHJpbmdpZnkoZGF0YSkpfSZ0eG5pZD0ke2J0b2EodHJhbnNhY3Rpb25JZCl9YCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3aW5kb3cub3Blbihsb2NhdGlvbi5vcmlnaW4gKyBgJHtjb250ZXh0fS8ke3VyaX0ke3NlcGFyYXRvcn1kYXRhPSR7YnRvYShKU09OLnN0cmluZ2lmeShkYXRhKSl9JnR4bmlkPSR7YnRvYSh0cmFuc2FjdGlvbklkKX1gLCdfc2VsZicpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZygnb3IgaGVyZSB3aXRoIG5vIGRhdGEnKVxuICAgICAgaWYobmF2ICYmIGNvbnRleHQuaW5jbHVkZXModGhpcy5nZXRDb250ZXh0Um9vdCgpKSl7XG4gICAgICAgIG5hdi5uYXZpZ2F0ZUZvcndhcmQoYCR7dXJpfSR7c2VwYXJhdG9yfXR4bmlkPSR7YnRvYSh0cmFuc2FjdGlvbklkKX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdpbmRvdy5vcGVuKGxvY2F0aW9uLm9yaWdpbiArIGAke2NvbnRleHR9LyR7dXJpfSR7c2VwYXJhdG9yfXR4bmlkPSR7YnRvYSh0cmFuc2FjdGlvbklkKX1gLCdfc2VsZicpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9wZW5QYWdlQnlDb250ZXh0Um9vdFdpdGhEYXRhKGNvbnRleHQ6IHN0cmluZywgdXJpOiBzdHJpbmcsIGRhdGEsIG5hdj86IE5hdkNvbnRyb2xsZXIpe1xuICAgIGlmKCFjb250ZXh0LnN0YXJ0c1dpdGgoJy8nKSl7XG4gICAgICBjb250ZXh0ID0gJy8nICsgY29udGV4dDtcbiAgICB9XG4gICAgbGV0IHNlcGFyYXRvciA9ICcmJztcbiAgICBpZighdXJpLmluY2x1ZGVzKCc/Jykpe1xuICAgICAgc2VwYXJhdG9yID0gXCI/XCI7XG4gICAgfVxuICAgIGlmKG5hdiAmJiBjb250ZXh0LmluY2x1ZGVzKHRoaXMuZ2V0Q29udGV4dFJvb3QoKSkpe1xuICAgICAgbmF2Lm5hdmlnYXRlRm9yd2FyZChgJHt1cml9JHtzZXBhcmF0b3J9ZGF0YT0ke2J0b2EoSlNPTi5zdHJpbmdpZnkoZGF0YSkpfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cub3Blbihsb2NhdGlvbi5vcmlnaW4gKyBgJHtjb250ZXh0fS8ke3VyaX0ke3NlcGFyYXRvcn1kYXRhPSR7YnRvYShKU09OLnN0cmluZ2lmeShkYXRhKSl9YCwnX3NlbGYnKTtcbiAgICB9XG4gIH1cblxuICBtYXNrRXhjZXB0Rmlyc3RBbmRMYXN0Q2hhcih2YWx1ZSA6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHZhbHVlWzBdICsgXCIqXCIucmVwZWF0KHZhbHVlLmxlbmd0aCAtIDIpICsgdmFsdWUuc2xpY2UoLTEpO1xuICB9XG5cbiAgbWFza0VtYWlsKGVtYWlsIDogc3RyaW5nKXtcbiAgICB2YXIgcGFydHMgPSBlbWFpbC5zcGxpdChcIkBcIik7XG4gICAgaWYocGFydHMubGVuZ3RoID09IDIpe1xuICAgICAgcmV0dXJuIHRoaXMubWFza0V4Y2VwdEZpcnN0QW5kTGFzdENoYXIocGFydHNbMF0pICsgXCJAXCIgKyB0aGlzLm1hc2tFeGNlcHRGaXJzdEFuZExhc3RDaGFyKHBhcnRzWzFdKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubWFza0V4Y2VwdEZpcnN0QW5kTGFzdENoYXIocGFydHNbMF0pO1xuICB9XG5cbiAgaXNQbGF5Zm9ybUNhcGFjaXRvcigpe1xuICAgIHJldHVybiB0aGlzLnBsYXRmb3JtLmlzKCdjYXBhY2l0b3InKTtcbiAgfVxuXG4gIGlzTmV3UGFzc3dvcmRQb2xpY3lFbmFibGVkKCkgOiBib29sZWFuIHtcbiAgICByZXR1cm4gTGliQ29uc3RhbnRzLmlzTmV3UGFzc3dvcmRQb2xpY3lFbmFibGVkID09ICd0cnVlJztcbiAgfVxuXG4gIGlzU2FtZVN5bWJvbFBvbGljeUZvckNsYWltYW50QW5kQWdlbmN5KCkgOiBib29sZWFuIHtcbiAgICByZXR1cm4gTGliQ29uc3RhbnRzLmlzU2FtZVN5bWJvbFBvbGljeUZvckNsYWltYW50QW5kQWdlbmN5ID09ICd0cnVlJztcbiAgfVxuXG4gIGZvY3VzT25TdWJtaXQoZWw6IEVsZW1lbnRSZWYpe1xuICAgIHZhciBlbGVtZW50ID0gZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgdGhpcy5mb2N1c2FibGVzLm1hcCh4ID0+IGAke3h9Lm5nLWludmFsaWRgKS5qb2luKFwiLFwiKVxuICAgICk7XG5cbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgdmFyIHByaW1lTmdDb21wb25lbnQgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgIHRoaXMuZm9jdXNhYmxlcy5tYXAoeCA9PiBgJHt4fS5wLWNvbXBvbmVudGApLmpvaW4oXCIsXCIpXG4gICAgICApO1xuICAgICAgaWYgKHByaW1lTmdDb21wb25lbnQpIHtcbiAgICAgICAgcHJpbWVOZ0NvbXBvbmVudC5mb2N1cygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuXG4gICAgICAvL0Jsb2NrIGZvciBSYWRpbyBCdXR0b24gU3RhcnRcbiAgICAgIHZhciBwcmltZU5nQ29tcG9uZW50MSA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcihcImRpdi5wLXNlbGVjdGJ1dHRvblwiKTtcbiAgICAgIGlmIChwcmltZU5nQ29tcG9uZW50MSkge1xuICAgICAgICB2YXIgcHJpbWVOZ0NvbXBvbmVudDIgPSBwcmltZU5nQ29tcG9uZW50MS5xdWVyeVNlbGVjdG9yKFwiZGl2LnAtY29tcG9uZW50XCIpO1xuICAgICAgICBpZiAocHJpbWVOZ0NvbXBvbmVudDIpIHtcbiAgICAgICAgICBwcmltZU5nQ29tcG9uZW50Mi5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvL0Jsb2NrIGZvciBSYWRpbyBCdXR0b24gRW5kXG4gICAgfVxuICB9XG5cbiAgZ2VuZXJhdGVSYW5kb21LZXkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMjU2KTtcbiAgfVxuXG4gIGJhc2U2NFVybEVuY29kZShpbnB1dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYnRvYShpbnB1dClcbiAgICAgIC5yZXBsYWNlKC9cXCsvZywgJy0nKVxuICAgICAgLnJlcGxhY2UoL1xcLy9nLCAnXycpXG4gICAgICAucmVwbGFjZSgvPSskLywgJycpO1xuICB9XG5cbiAgeG9yRW5jcnlwdChpbnB1dDogc3RyaW5nLCBrZXk6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IGNoYXJzID0gaW5wdXRcbiAgICAuc3BsaXQoJycpXG4gICAgLm1hcChjID0+IFN0cmluZy5mcm9tQ2hhckNvZGUoYy5jaGFyQ29kZUF0KDApIF4ga2V5KSlcbiAgICAuam9pbignJyk7XG4gIHJldHVybiB0aGlzLmJhc2U2NFVybEVuY29kZShjaGFycyk7XG59XG5cbmJhc2U2NFVybERlY29kZShpbnB1dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKC8tL2csICcrJykucmVwbGFjZSgvXy9nLCAnLycpO1xuICB3aGlsZSAoaW5wdXQubGVuZ3RoICUgNCkgaW5wdXQgKz0gJz0nO1xuICByZXR1cm4gYXRvYihpbnB1dCk7XG59XG5cbnhvckRlY3J5cHQoZW5jb2RlZDogc3RyaW5nLCBrZXk6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IGRlY29kZWQgPSB0aGlzLmJhc2U2NFVybERlY29kZShlbmNvZGVkKTtcbiAgcmV0dXJuIGRlY29kZWRcbiAgICAuc3BsaXQoJycpXG4gICAgLm1hcChjID0+IFN0cmluZy5mcm9tQ2hhckNvZGUoYy5jaGFyQ29kZUF0KDApIF4ga2V5KSlcbiAgICAuam9pbignJyk7XG59XG5cbn1cbiJdfQ==