@po-ui/ng-templates 18.22.0 → 19.0.0-next.0

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 (205) hide show
  1. package/fesm2022/po-ui-ng-templates.mjs +139 -122
  2. package/fesm2022/po-ui-ng-templates.mjs.map +1 -1
  3. package/lib/components/po-modal-password-recovery/po-modal-password-recovery-base.component.d.ts +1 -1
  4. package/lib/components/po-modal-password-recovery/po-modal-password-recovery.service.d.ts +1 -1
  5. package/lib/components/po-page-blocked-user/po-page-blocked-user-base.component.d.ts +1 -1
  6. package/lib/components/po-page-blocked-user/po-page-blocked-user.component.d.ts +1 -1
  7. package/lib/components/po-page-change-password/po-page-change-password-base.component.d.ts +1 -1
  8. package/lib/components/po-page-change-password/po-page-change-password.service.d.ts +1 -1
  9. package/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter-base.component.d.ts +1 -1
  10. package/lib/components/po-page-dynamic-search/po-page-dynamic-search-base.component.d.ts +1 -1
  11. package/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.d.ts +2 -2
  12. package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-custom-action.interface.d.ts +1 -1
  13. package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-custom-table-action.interface.d.ts +1 -1
  14. package/lib/components/po-page-dynamic-table/po-page-dynamic-list-base.component.d.ts +2 -2
  15. package/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.d.ts +2 -2
  16. package/lib/components/po-page-job-scheduler/po-page-job-scheduler-base.component.d.ts +1 -1
  17. package/lib/components/po-page-job-scheduler/po-page-job-scheduler-execution/po-page-job-scheduler-execution.component.d.ts +2 -2
  18. package/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-job-scheduler-parameters-template/po-job-scheduler-parameters-template.directive.d.ts +1 -1
  19. package/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.d.ts +1 -1
  20. package/lib/components/po-page-login/po-page-login-base.component.d.ts +1 -1
  21. package/lib/components/po-page-login/po-page-login.service.d.ts +1 -1
  22. package/package.json +13 -15
  23. package/po-ui-ng-templates-19.0.0-next.0.tgz +0 -0
  24. package/schematics/ng-add/index.js +2 -2
  25. package/schematics/ng-add/index.js.map +1 -1
  26. package/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
  27. package/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
  28. package/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
  29. package/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
  30. package/schematics/ng-generate/po-page-blocked-user/index.js +1 -1
  31. package/schematics/ng-generate/po-page-blocked-user/index.js.map +1 -1
  32. package/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
  33. package/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
  34. package/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
  35. package/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
  36. package/schematics/ng-generate/po-page-change-password/index.js +1 -1
  37. package/schematics/ng-generate/po-page-change-password/index.js.map +1 -1
  38. package/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
  39. package/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
  40. package/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
  41. package/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
  42. package/schematics/ng-generate/po-page-dynamic-detail/index.js +1 -1
  43. package/schematics/ng-generate/po-page-dynamic-detail/index.js.map +1 -1
  44. package/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
  45. package/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
  46. package/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
  47. package/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
  48. package/schematics/ng-generate/po-page-dynamic-edit/index.js +1 -1
  49. package/schematics/ng-generate/po-page-dynamic-edit/index.js.map +1 -1
  50. package/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
  51. package/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
  52. package/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
  53. package/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
  54. package/schematics/ng-generate/po-page-dynamic-search/index.js +1 -1
  55. package/schematics/ng-generate/po-page-dynamic-search/index.js.map +1 -1
  56. package/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
  57. package/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
  58. package/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
  59. package/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
  60. package/schematics/ng-generate/po-page-dynamic-table/index.js +1 -1
  61. package/schematics/ng-generate/po-page-dynamic-table/index.js.map +1 -1
  62. package/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
  63. package/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
  64. package/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
  65. package/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
  66. package/schematics/ng-generate/po-page-job-scheduler/index.js +1 -1
  67. package/schematics/ng-generate/po-page-job-scheduler/index.js.map +1 -1
  68. package/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
  69. package/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
  70. package/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
  71. package/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
  72. package/schematics/ng-generate/po-page-login/index.js +1 -1
  73. package/schematics/ng-generate/po-page-login/index.js.map +1 -1
  74. package/esm2022/lib/components/components.module.mjs +0 -84
  75. package/esm2022/lib/components/index.mjs +0 -12
  76. package/esm2022/lib/components/po-modal-password-recovery/enums/po-modal-password-recovery-modal-content.enum.mjs +0 -17
  77. package/esm2022/lib/components/po-modal-password-recovery/enums/po-modal-password-recovery-type.enum.mjs +0 -17
  78. package/esm2022/lib/components/po-modal-password-recovery/index.mjs +0 -8
  79. package/esm2022/lib/components/po-modal-password-recovery/interfaces/po-modal-password-recovery.interface.mjs +0 -2
  80. package/esm2022/lib/components/po-modal-password-recovery/literals/i18n/po-modal-password-recovery-literals.mjs +0 -119
  81. package/esm2022/lib/components/po-modal-password-recovery/po-modal-password-recovery-base.component.mjs +0 -293
  82. package/esm2022/lib/components/po-modal-password-recovery/po-modal-password-recovery-error-message/po-modal-password-recovery-error-message.component.mjs +0 -34
  83. package/esm2022/lib/components/po-modal-password-recovery/po-modal-password-recovery.component.mjs +0 -451
  84. package/esm2022/lib/components/po-modal-password-recovery/po-modal-password-recovery.module.mjs +0 -29
  85. package/esm2022/lib/components/po-modal-password-recovery/po-modal-password-recovery.service.mjs +0 -18
  86. package/esm2022/lib/components/po-page-background/index.mjs +0 -3
  87. package/esm2022/lib/components/po-page-background/po-page-background.component.mjs +0 -191
  88. package/esm2022/lib/components/po-page-background/po-page-background.module.mjs +0 -27
  89. package/esm2022/lib/components/po-page-blocked-user/enums/po-page-blocked-user-reason.enum.mjs +0 -17
  90. package/esm2022/lib/components/po-page-blocked-user/index.mjs +0 -8
  91. package/esm2022/lib/components/po-page-blocked-user/interfaces/po-page-blocked-user-reason-params.interface.mjs +0 -2
  92. package/esm2022/lib/components/po-page-blocked-user/literals/i18n/po-page-blocked-user-literals.mjs +0 -78
  93. package/esm2022/lib/components/po-page-blocked-user/po-page-blocked-user-base.component.mjs +0 -197
  94. package/esm2022/lib/components/po-page-blocked-user/po-page-blocked-user-contacts/po-page-blocked-user-contacts.component.mjs +0 -105
  95. package/esm2022/lib/components/po-page-blocked-user/po-page-blocked-user-reason/po-page-blocked-user-reason.component.mjs +0 -107
  96. package/esm2022/lib/components/po-page-blocked-user/po-page-blocked-user.component.mjs +0 -108
  97. package/esm2022/lib/components/po-page-blocked-user/po-page-blocked-user.module.mjs +0 -29
  98. package/esm2022/lib/components/po-page-change-password/index.mjs +0 -7
  99. package/esm2022/lib/components/po-page-change-password/interfaces/po-page-change-password-recovery.interface.mjs +0 -2
  100. package/esm2022/lib/components/po-page-change-password/interfaces/po-page-change-password-requirement.interface.mjs +0 -2
  101. package/esm2022/lib/components/po-page-change-password/interfaces/po-page-change-password.interface.mjs +0 -2
  102. package/esm2022/lib/components/po-page-change-password/literals/i18n/po-page-change-password-literals.mjs +0 -79
  103. package/esm2022/lib/components/po-page-change-password/po-page-change-password-base.component.mjs +0 -300
  104. package/esm2022/lib/components/po-page-change-password/po-page-change-password.component.mjs +0 -401
  105. package/esm2022/lib/components/po-page-change-password/po-page-change-password.module.mjs +0 -30
  106. package/esm2022/lib/components/po-page-change-password/po-page-change-password.service.mjs +0 -18
  107. package/esm2022/lib/components/po-page-dynamic-detail/index.mjs +0 -10
  108. package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-actions.interface.mjs +0 -2
  109. package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-before-back.interface.mjs +0 -2
  110. package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-before-edit.interface.mjs +0 -2
  111. package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-before-remove.interface.mjs +0 -2
  112. package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-field.interface.mjs +0 -2
  113. package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-metadata.interface.mjs +0 -2
  114. package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-options.interface.mjs +0 -2
  115. package/esm2022/lib/components/po-page-dynamic-detail/po-page-dynamic-detail-actions.service.mjs +0 -44
  116. package/esm2022/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.component.mjs +0 -546
  117. package/esm2022/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.module.mjs +0 -54
  118. package/esm2022/lib/components/po-page-dynamic-edit/index.mjs +0 -11
  119. package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-actions.interface.mjs +0 -2
  120. package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-before-cancel.interface.mjs +0 -2
  121. package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-before-save-new.interface.mjs +0 -2
  122. package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-before-save.interface.mjs +0 -2
  123. package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-field.interface.mjs +0 -2
  124. package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-literals.interface.mjs +0 -2
  125. package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-metadata.interface.mjs +0 -2
  126. package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-options.interface.mjs +0 -2
  127. package/esm2022/lib/components/po-page-dynamic-edit/po-page-dynamic-edit-actions.service.mjs +0 -44
  128. package/esm2022/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.mjs +0 -889
  129. package/esm2022/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.module.mjs +0 -60
  130. package/esm2022/lib/components/po-page-dynamic-search/index.mjs +0 -7
  131. package/esm2022/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter-base.component.mjs +0 -133
  132. package/esm2022/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter-literals.interface.mjs +0 -2
  133. package/esm2022/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter.component.mjs +0 -76
  134. package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search-base.component.mjs +0 -365
  135. package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search-filters.interface.mjs +0 -2
  136. package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search-literals.interface.mjs +0 -2
  137. package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search-options.interface.mjs +0 -2
  138. package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.mjs +0 -349
  139. package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search.interface.mjs +0 -2
  140. package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search.module.mjs +0 -52
  141. package/esm2022/lib/components/po-page-dynamic-table/index.mjs +0 -16
  142. package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-actions.interface.mjs +0 -2
  143. package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-detail.interface.mjs +0 -2
  144. package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-duplicate.interface.mjs +0 -2
  145. package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-edit.interface.mjs +0 -2
  146. package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-new.interface.mjs +0 -2
  147. package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-remove-all.interface.mjs +0 -2
  148. package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-remove.interface.mjs +0 -2
  149. package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-custom-action.interface.mjs +0 -2
  150. package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-custom-table-action.interface.mjs +0 -2
  151. package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-field.interface.mjs +0 -2
  152. package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-filters.interface.mjs +0 -2
  153. package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-metadata.interface.mjs +0 -2
  154. package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-options.interface.mjs +0 -2
  155. package/esm2022/lib/components/po-page-dynamic-table/po-page-dynamic-list-base.component.mjs +0 -271
  156. package/esm2022/lib/components/po-page-dynamic-table/po-page-dynamic-table-actions.service.mjs +0 -59
  157. package/esm2022/lib/components/po-page-dynamic-table/po-page-dynamic-table-literals.mjs +0 -63
  158. package/esm2022/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.mjs +0 -1257
  159. package/esm2022/lib/components/po-page-dynamic-table/po-page-dynamic-table.module.mjs +0 -50
  160. package/esm2022/lib/components/po-page-job-scheduler/index.mjs +0 -6
  161. package/esm2022/lib/components/po-page-job-scheduler/interfaces/po-job-scheduler-internal.interface.mjs +0 -2
  162. package/esm2022/lib/components/po-page-job-scheduler/interfaces/po-job-scheduler.interface.mjs +0 -2
  163. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-base.component.mjs +0 -302
  164. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-execution/po-page-job-scheduler-execution.component.mjs +0 -393
  165. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-internal.mjs +0 -13
  166. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-literals.mjs +0 -195
  167. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-lookup.service.mjs +0 -22
  168. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/index.mjs +0 -2
  169. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-job-scheduler-parameters-template/index.mjs +0 -2
  170. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-job-scheduler-parameters-template/po-job-scheduler-parameters-template.directive.mjs +0 -92
  171. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-page-job-scheduler-parameters.component.mjs +0 -79
  172. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/index.mjs +0 -2
  173. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-job-scheduler-summary-template/index.mjs +0 -2
  174. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-job-scheduler-summary-template/po-job-scheduler-summary-template.directive.mjs +0 -44
  175. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.mjs +0 -211
  176. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.mjs +0 -418
  177. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler.module.mjs +0 -85
  178. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler.service.mjs +0 -224
  179. package/esm2022/lib/components/po-page-login/enums/po-page-login-authentication-type.enum.mjs +0 -15
  180. package/esm2022/lib/components/po-page-login/index.mjs +0 -8
  181. package/esm2022/lib/components/po-page-login/interfaces/po-page-login-custom-field.interface.mjs +0 -2
  182. package/esm2022/lib/components/po-page-login/interfaces/po-page-login-literals.interface.mjs +0 -2
  183. package/esm2022/lib/components/po-page-login/interfaces/po-page-login-recovery.interface.mjs +0 -2
  184. package/esm2022/lib/components/po-page-login/interfaces/po-page-login.interface.mjs +0 -2
  185. package/esm2022/lib/components/po-page-login/po-page-login-base.component.mjs +0 -1099
  186. package/esm2022/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.mjs +0 -137
  187. package/esm2022/lib/components/po-page-login/po-page-login.component.mjs +0 -483
  188. package/esm2022/lib/components/po-page-login/po-page-login.module.mjs +0 -31
  189. package/esm2022/lib/components/po-page-login/po-page-login.service.mjs +0 -32
  190. package/esm2022/lib/index.mjs +0 -4
  191. package/esm2022/lib/po-templates.module.mjs +0 -18
  192. package/esm2022/lib/services/index.mjs +0 -4
  193. package/esm2022/lib/services/po-page-customization/index.mjs +0 -4
  194. package/esm2022/lib/services/po-page-customization/po-page-customization.module.mjs +0 -23
  195. package/esm2022/lib/services/po-page-customization/po-page-customization.service.mjs +0 -86
  196. package/esm2022/lib/services/po-page-customization/po-page-dynamic-options.interface.mjs +0 -2
  197. package/esm2022/lib/services/po-page-dynamic/index.mjs +0 -3
  198. package/esm2022/lib/services/po-page-dynamic/po-page-dynamic-literals.interface.mjs +0 -2
  199. package/esm2022/lib/services/po-page-dynamic/po-page-dynamic.module.mjs +0 -23
  200. package/esm2022/lib/services/po-page-dynamic/po-page-dynamic.service.mjs +0 -106
  201. package/esm2022/lib/services/services.module.mjs +0 -18
  202. package/esm2022/lib/utils/util.mjs +0 -428
  203. package/esm2022/po-ui-ng-templates.mjs +0 -5
  204. package/esm2022/public-api.mjs +0 -2
  205. package/po-ui-ng-templates-18.22.0.tgz +0 -0
@@ -1,428 +0,0 @@
1
- import { poLocales, poLocaleDefault } from '@po-ui/ng-components';
2
- /**
3
- * Retorna o idioma atual do navegador
4
- */
5
- export function getBrowserLanguage() {
6
- // navigator.userLanguage is the value for IE10
7
- return navigator.language || navigator['userLanguage'];
8
- }
9
- /**
10
- * Retorna o idioma do navegador, com somente as duas primeiras letras. Por exemplo: "pt" ou "es".
11
- *
12
- * Caso o valor retornado pelo navegador não estiver dentro dos idiomas suportados pelo PO,
13
- * será retornado a linguagem padrão (poLocaleDefault).
14
- */
15
- export function getShortBrowserLanguage() {
16
- const language = (getBrowserLanguage() || poLocaleDefault).toLowerCase().substring(0, 2);
17
- if (!poLocales.includes(language)) {
18
- return poLocaleDefault;
19
- }
20
- return language;
21
- }
22
- export function convertToBoolean(val) {
23
- if (typeof val === 'string') {
24
- val = val.toLowerCase().trim();
25
- return val === 'true' || val === 'on' || val === '';
26
- }
27
- if (typeof val === 'number') {
28
- return val === 1;
29
- }
30
- return !!val;
31
- }
32
- export function convertToInt(value, valueDefault) {
33
- const validNumber = parseInt(value, 10);
34
- const validDefaultValue = parseInt(valueDefault, 10);
35
- const defaultValue = validDefaultValue || validDefaultValue === 0 ? validDefaultValue : undefined;
36
- return validNumber || validNumber === 0 ? validNumber : defaultValue;
37
- }
38
- export function isTypeof(object, type) {
39
- return typeof object === type;
40
- }
41
- /**
42
- *
43
- * @param fn Função que será executada dentro do contexto. Podendo ser o nome da função
44
- * ou a referência da mesma.
45
- *
46
- * @param context Contexto do qual a função será executada.
47
- */
48
- export function callFunction(fn, context, param) {
49
- if (isTypeof(fn, 'function')) {
50
- fn.call(context, param);
51
- }
52
- else {
53
- context[fn](param);
54
- }
55
- }
56
- export function convertIsoToDate(value, start, end) {
57
- if (value) {
58
- const day = parseInt(value.substring(8, 10), 10);
59
- const month = parseInt(value.substring(5, 7), 10);
60
- const year = parseInt(value.substring(0, 4), 10);
61
- if (start) {
62
- const date = new Date(year, month - 1, day, 0, 0, 0);
63
- setYearFrom0To100(date, year);
64
- return date;
65
- }
66
- else if (end) {
67
- const date = new Date(year, month - 1, day, 23, 59, 59);
68
- setYearFrom0To100(date, year);
69
- return date;
70
- }
71
- else {
72
- const milliseconds = Date.parse(value);
73
- const timezone = new Date().getTimezoneOffset() * 60000;
74
- return new Date(milliseconds + timezone);
75
- }
76
- }
77
- }
78
- export function convertDateToISOExtended(date, time) {
79
- if (date) {
80
- const getMonth = date.getMonth() + 1;
81
- const day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
82
- const month = getMonth < 10 ? '0' + getMonth : getMonth;
83
- const year = formatYear(date.getFullYear());
84
- const dateString = date.toString();
85
- if (time) {
86
- return year + '-' + month + '-' + day + time;
87
- }
88
- else {
89
- return (year +
90
- '-' +
91
- month +
92
- '-' +
93
- day +
94
- 'T' +
95
- dateString.substring(16, 24) +
96
- dateString.substring(28, 31) +
97
- ':' +
98
- dateString.substring(31, 33));
99
- }
100
- }
101
- else {
102
- return null;
103
- }
104
- }
105
- /**
106
- * Transforma o ano em uma string no formato yyyy e caso o ano seja menor que 1000 preenche com zeros a esquerda.
107
- *
108
- * @param year Ano
109
- */
110
- export function formatYear(year) {
111
- if (year >= 1000) {
112
- return year.toString();
113
- }
114
- if (year > 99 && year < 1000) {
115
- return `0${year}`;
116
- }
117
- if (year > 9 && year < 100) {
118
- return `00${year}`;
119
- }
120
- if (year >= 0 && year < 10) {
121
- return `000${year}`;
122
- }
123
- }
124
- export function isEquals(value, comparedValue) {
125
- return JSON.stringify(value) === JSON.stringify(comparedValue);
126
- }
127
- /**
128
- * Caso o ano original da data seja entre 0 e 100 atribui esse valor ao ano, pois o `new Date` do javascript transforma o ano para 190X.
129
- *
130
- * @param date Data
131
- * @param year Ano original
132
- */
133
- export function setYearFrom0To100(date, year) {
134
- if (year >= 0 && year < 100) {
135
- date.setFullYear(year);
136
- }
137
- }
138
- export function sortOptionsByProperty(options, property) {
139
- options.sort((optionA, optionB) => {
140
- optionA = optionA[property].toString().toLowerCase();
141
- optionB = optionB[property].toString().toLowerCase();
142
- if (optionA < optionB) {
143
- return -1;
144
- }
145
- if (optionA > optionB) {
146
- return 1;
147
- }
148
- return 0;
149
- });
150
- }
151
- export function removeDuplicatedOptions(list) {
152
- for (let i = 0; i < list.length; i++) {
153
- if (i === 0) {
154
- continue;
155
- }
156
- if (list.findIndex(op => op.value === list[i].value) !== i) {
157
- list.splice(i, 1);
158
- i--;
159
- }
160
- }
161
- }
162
- export function removeUndefinedAndNullOptions(list) {
163
- for (let i = 0; i < list.length; i++) {
164
- if (list[i].value === undefined || list[i].value === null) {
165
- list.splice(i, 1);
166
- i--;
167
- }
168
- }
169
- }
170
- export function validValue(value) {
171
- return (value !== null && value !== undefined && value !== '') || value === false;
172
- }
173
- export function isExternalLink(url) {
174
- return url ? url.startsWith('http') : false;
175
- }
176
- export function openExternalLink(url) {
177
- window.open(url, '_blank');
178
- }
179
- export function getFormattedLink(link) {
180
- let formattedLink = '';
181
- // Retira todos os pontos no começo da URL.
182
- if (link) {
183
- formattedLink = link.replace(/^(\.)+/g, '');
184
- }
185
- // Verifica se foi utilizado uma rota que não comece com barra.
186
- if (!formattedLink.startsWith('/')) {
187
- formattedLink = '/'.concat(formattedLink);
188
- }
189
- return formattedLink;
190
- }
191
- /**
192
- * Método responsável por ordenar dois valores.
193
- *
194
- * @param leftSide Primeiro valor a ser comparado.
195
- * @param rightSide Segundo valor a ser comparado.
196
- * @param ascending Determina se será em ordem ascendente ou descendente.
197
- */
198
- export function sortValues(leftSide, rightSide, ascending = true) {
199
- if (ascending) {
200
- if (leftSide < rightSide) {
201
- return -1;
202
- }
203
- else if (leftSide > rightSide) {
204
- return 1;
205
- }
206
- }
207
- else if (ascending === false) {
208
- if (leftSide < rightSide) {
209
- return 1;
210
- }
211
- else if (leftSide > rightSide) {
212
- return -1;
213
- }
214
- }
215
- return 0;
216
- }
217
- export function validateDateRange(date, dateStart, dateEnd) {
218
- if (dateStart && dateEnd) {
219
- return date >= dateStart && date <= dateEnd;
220
- }
221
- else if (dateStart && !dateEnd) {
222
- return date >= dateStart;
223
- }
224
- else if (!dateStart && dateEnd) {
225
- return date <= dateEnd;
226
- }
227
- else {
228
- return true;
229
- }
230
- }
231
- export function capitalizeFirstLetter(text) {
232
- return `${text.charAt(0).toUpperCase()}${text.slice(1)}`;
233
- }
234
- /**
235
- * Mapeia um novo array apenas com as propriedades definidas pelo desenvolvedor baseado em um array de
236
- * origem.
237
- *
238
- * Exemplo:
239
- *
240
- * ```
241
- * const people = [
242
- * { id: 1, name: 'Fulano', birthdate: '1980-11-01', genre: 'Male', city: 'São Paulo', dependents: 2 },
243
- * { id: 2, name: 'Beltrano', birthdate: '1997-01-21', genre: 'Female', city: 'Joinville', dependents: 0 },
244
- * { id: 3, name: 'Siclano', birthdate: '1995-07-15', genre: 'Male', city: 'Joinville', dependents: 0 }
245
- * ];
246
- *
247
- * const properties = ['id', 'name'];
248
- *
249
- * const idAndName = mapArrayByProperties(people, properties);
250
- *
251
- * console.log(idAndName); // [{ id: 1, name: 'Fulano' }, { id: 2, name: 'Beltrano' }, { id: 3, name: 'Siclano' }]
252
- * ```
253
- *
254
- * Um outro uso para o método é "parear" todos os objetos do array com as mesmas propriedades.
255
- *
256
- * ```
257
- * const customers = [
258
- * { id: 1, name: 'Fulano', city: 'São Paulo', dependents: 2 }, // sem genre
259
- * { id: 2, name: 'Beltrano', genre: 'Female', city: 'Joinville' }, // sem dependents
260
- * { id: 3, name: 'Siclano', genre: 'Male', city: 'Joinville', dependents: 0 }
261
- * ];
262
- * const properties = ['id', 'name', 'city', 'genre', 'dependents'];
263
- *
264
- * const pattern = mapArrayByProperties(customers, properties);
265
- * console.log(pattern);
266
- *
267
- * // [
268
- * // { id: 1, name: 'Fulano', city: 'São Paulo', genre: undefined, dependents: 2 },
269
- * // { id: 2, name: 'Beltrano', city: 'Joinville', genre: 'Female', dependents: undefined },
270
- * // { id: 3, name: 'Siclano', city: 'Joinville', genre: 'Male', dependents: 0 }
271
- * // ]
272
- * ```
273
- *
274
- * @param items {Array<any>} Array de items original.
275
- * @param properties {Array<string>} Array de string com a lista de propriedades que devem ser retornadas.
276
- *
277
- * @returns Array<any>
278
- */
279
- export function mapArrayByProperties(items = [], properties = []) {
280
- return items.map(item => mapObjectByProperties(item, properties));
281
- }
282
- /**
283
- * Mapeia um novo objeto apenas com as propriedades definidas pelo desenvolvedor.
284
- *
285
- * Exemplo:
286
- *
287
- * ```
288
- * const person = { id: 1, name: 'Fulano', birthdate: '1980-11-01', genre: 'Male', city: 'São Paulo', dependents: 2 };
289
- *
290
- * const properties = ['id', 'name'];
291
- *
292
- * const idAndName = mapObjectByProperties(person, properties);
293
- *
294
- * console.log(idAndName); // { id: 1, name: 'Fulano' }
295
- * ```
296
- *
297
- * @param object {Array<any>} Array de items original.
298
- * @param properties {Array<string>} Array de string com a lista de propriedades que devem ser retornadas.
299
- *
300
- * @returns Array<any>
301
- */
302
- export function mapObjectByProperties(object = {}, properties = []) {
303
- const getSelectedProperties = (selectedProperties, property) => ({
304
- ...selectedProperties,
305
- [property]: object[property]
306
- });
307
- return properties.reduce(getSelectedProperties, {});
308
- }
309
- /**
310
- * Retorna os valores de um objeto dentro de um array.
311
- *
312
- * > Simula o Object.values(obj), o mesmo deve ser removido assim que a versão typescrit for atualizada.
313
- *
314
- * @param object Objeto de onde será pego os valores.
315
- */
316
- export function valuesFromObject(object = {}) {
317
- return Object.keys(object).map(property => object[property]);
318
- }
319
- /**
320
- * adiciona 0 no tempo informado, caso menor q 10
321
- *
322
- * @param time
323
- */
324
- export function addZero(time) {
325
- if (!time) {
326
- return '00';
327
- }
328
- if (time < 10) {
329
- return `0${time}`;
330
- }
331
- return time;
332
- }
333
- /**
334
- * Remove do objeto as propriedades especificadas.
335
- *
336
- * Exemplo:
337
- *
338
- * ```
339
- * key: ['id', 'cpf']
340
- * newItemValue: { id: '123', cpf: '456', name: 'Test' }
341
- * Resultado: { name: 'Test' }
342
- * ```
343
- *
344
- * @param keys lista de propriedades para ser removida do objeto.
345
- * @param newItemValue objeto que se deseja remover as propriedades.
346
- * @returns objeto sem as propriedades especificadas.
347
- */
348
- export function removeKeysProperties(keys, newItemValue) {
349
- keys.forEach(key => delete newItemValue[key]);
350
- return newItemValue;
351
- }
352
- /**
353
- * Remove objetos duplicados.
354
- *
355
- * Exemplo:
356
- *
357
- * ```
358
- * item: [{country: 'japao'}, {country: 'brasil'} , {country: 'china'}]
359
- * item2: [{country: 'chile'}, {country: 'brasil'}, {country: 'canada'}]
360
- * key: 'country'
361
- * Resultado:
362
- * item2 = [{country: 'chile'}, {country: 'canada'} ]
363
- * ```
364
- *
365
- * @param item lista comparada.
366
- * @param item2 lista para remover items duplicados.
367
- * @param key propriedade que será utilizada para realizar a comparação.
368
- */
369
- export function removeDuplicateItems(item, item2, key) {
370
- const uniqueValues = new Set(item.map(entry => entry[key]));
371
- item2.splice(0, item2.length, ...item2.filter(entry => !uniqueValues.has(entry[key])));
372
- }
373
- /**
374
- * Recebe dois arrays de objetos e remove os itens duplicados utilizando uma propriedade(key) para comparação.
375
- *
376
- * Exemplo:
377
- *
378
- * ```
379
- * item: [{country: 'japao'}, {country: 'brasil'} , {country: 'china'}]
380
- * item2: [{country: 'chile'}, {country: 'brasil'}, {country: 'canada'}]
381
- * key: '[country]'
382
- * Resultado do retorno:
383
- * [{country: 'chile'}, {country: 'canada'}, {country: 'japao'}, {country: 'china'}]
384
- * ```
385
- *
386
- *
387
- * @param item : primeira lista de itens.
388
- * @param item2 : segunda lista de itens.
389
- * @param key : um array de propriedades que vão ser utilizadas para a comparação.
390
- */
391
- export function removeDuplicateItemsWithArrayKey(item, item2, keys) {
392
- const newKey = keys.length ? keys : ['id'];
393
- const combinedArray = item.concat(item2);
394
- return combinedArray.filter((obj, index) => index === combinedArray.findIndex(innerObj => newKey.every(key => innerObj[key] === obj[key])));
395
- }
396
- /**
397
- * Recebe um array de objetos para ordenação utilizando chave como comparativo e
398
- * se a order é crescente(true) ou descrescente(false)
399
- *
400
- * Exemplo:
401
- *
402
- * ```
403
- * items: [{country: 'japao'}, {country: 'brasil'} , {country: 'china'}]
404
- * key: 'country'
405
- * isAscendingOrder: true
406
- * Resultado do retorno:
407
- * [{country: 'brasil'}, {country: 'china'} , {country: 'japao'}]
408
- * ```
409
- *
410
- *
411
- * @param items : lista de itens.
412
- * @param key : propriedade utilizada na comparação.
413
- * @param isAscendingOrder : ordenação crescente ou descrescente.
414
- */
415
- export function sortArrayOfObjects(items, key, isAscendingOrder) {
416
- return items.sort((a, b) => {
417
- const valueA = a[key];
418
- const valueB = b[key];
419
- if (typeof valueA === 'number' && typeof valueB === 'number') {
420
- return isAscendingOrder ? valueA - valueB : valueB - valueA;
421
- }
422
- else {
423
- const compareResult = valueA.toString().localeCompare(valueB.toString());
424
- return isAscendingOrder ? compareResult : -compareResult;
425
- }
426
- });
427
- }
428
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RlbXBsYXRlcy9zcmMvbGliL3V0aWxzL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRTs7R0FFRztBQUNILE1BQU0sVUFBVSxrQkFBa0I7SUFDaEMsK0NBQStDO0lBQy9DLE9BQU8sU0FBUyxDQUFDLFFBQVEsSUFBSSxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDekQsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QjtJQUNyQyxNQUFNLFFBQVEsR0FBRyxDQUFDLGtCQUFrQixFQUFFLElBQUksZUFBZSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUV6RixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEdBQVE7SUFDdkMsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM1QixHQUFHLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9CLE9BQU8sR0FBRyxLQUFLLE1BQU0sSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVELElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDNUIsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDZixDQUFD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Q0QsSUFBSSxPQUFPLEdBQUcsT0FBTyxFQUFFLENBQUM7WUFDdEIsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsSUFBZ0I7SUFDdEQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNaLFNBQVM7UUFDWCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEIsQ0FBQyxFQUFFLENBQUM7UUFDTixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsNkJBQTZCLENBQUMsSUFBZ0I7SUFDNUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNyQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEIsQ0FBQyxFQUFFLENBQUM7UUFDTixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQVU7SUFDbkMsT0FBTyxDQUFDLEtBQUssS0FBSyxJ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LENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3pCLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QixNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFdEIsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDN0QsT0FBTyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUM5RCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDekUsT0FBTyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUMzRCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcG9Mb2NhbGVzLCBwb0xvY2FsZURlZmF1bHQgfSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XG5cbi8qKlxuICogUmV0b3JuYSBvIGlkaW9tYSBhdHVhbCBkbyBuYXZlZ2Fkb3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJyb3dzZXJMYW5ndWFnZSgpOiBzdHJpbmcge1xuICAvLyBuYXZpZ2F0b3IudXNlckxhbmd1YWdlIGlzIHRoZSB2YWx1ZSBmb3IgSUUxMFxuICByZXR1cm4gbmF2aWdhdG9yLmxhbmd1YWdlIHx8IG5hdmlnYXRvclsndXNlckxhbmd1YWdlJ107XG59XG5cbi8qKlxuICogUmV0b3JuYSBvIGlkaW9tYSBkbyBuYXZlZ2Fkb3IsIGNvbSBzb21lbnRlIGFzIGR1YXMgcHJpbWVpcmFzIGxldHJhcy4gUG9yIGV4ZW1wbG86IFwicHRcIiBvdSBcImVzXCIuXG4gKlxuICogQ2FzbyBvIHZhbG9yIHJldG9ybmFkbyBwZWxvIG5hdmVnYWRvciBuw6NvIGVzdGl2ZXIgZGVudHJvIGRvcyBpZGlvbWFzIHN1cG9ydGFkb3MgcGVsbyBQTyxcbiAqIHNlcsOhIHJldG9ybmFkbyBhIGxpbmd1YWdlbSBwYWRyw6NvIChwb0xvY2FsZURlZmF1bHQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2hvcnRCcm93c2VyTGFuZ3VhZ2UoKTogc3RyaW5nIHtcbiAgY29uc3QgbGFuZ3VhZ2UgPSAoZ2V0QnJvd3Nlckxhbmd1YWdlKCkgfHwgcG9Mb2NhbGVEZWZhdWx0KS50b0xvd2VyQ2FzZSgpLnN1YnN0cmluZygwLCAyKTtcblxuICBpZiAoIXBvTG9jYWxlcy5pbmNsdWRlcyhsYW5ndWFnZSkpIHtcbiAgICByZXR1cm4gcG9Mb2NhbGVEZWZhdWx0O1xuICB9XG5cbiAgcmV0dXJuIGxhbmd1YWdlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFRvQm9vbGVhbih2YWw6IGFueSk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YWwgPSB2YWwudG9Mb3dlckNhc2UoKS50cmltKCk7XG4gICAgcmV0dXJuIHZhbCA9PT0gJ3RydWUnIHx8IHZhbCA9PT0gJ29uJyB8fCB2YWwgPT09ICcnO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbCA9PT0gMTtcbiAgfVxuXG4gIHJldHVybiAhIXZhbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb0ludCh2YWx1ZTogYW55LCB2YWx1ZURlZmF1bHQ/OiBhbnkpOiBudW1iZXIge1xuICBjb25zdCB2YWxpZE51bWJlciA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gIGNvbnN0IHZhbGlkRGVmYXVsdFZhbHVlID0gcGFyc2VJbnQodmFsdWVEZWZhdWx0LCAxMCk7XG4gIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IHZhbGlkRGVmYXVsdFZhbHVlIHx8IHZhbGlkRGVmYXVsdFZhbHVlID09PSAwID8gdmFsaWREZWZhdWx0VmFsdWUgOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHZhbGlkTnVtYmVyIHx8IHZhbGlkTnVtYmVyID09PSAwID8gdmFsaWROdW1iZXIgOiBkZWZhdWx0VmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1R5cGVvZihvYmplY3Q6IGFueSwgdHlwZTogYW55KSB7XG4gIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSB0eXBlO1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gZm4gRnVuw6fDo28gcXVlIHNlcsOhIGV4ZWN1dGFkYSBkZW50cm8gZG8gY29udGV4dG8uIFBvZGVuZG8gc2VyIG8gbm9tZSBkYSBmdW7Dp8Ojb1xuICogb3UgYSByZWZlcsOqbmNpYSBkYSBtZXNtYS5cbiAqXG4gKiBAcGFyYW0gY29udGV4dCBDb250ZXh0byBkbyBxdWFsIGEgZnVuw6fDo28gc2Vyw6EgZXhlY3V0YWRhLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsbEZ1bmN0aW9uKGZuOiBhbnksIGNvbnRleHQ6IGFueSwgcGFyYW0/KTogdm9pZCB7XG4gIGlmIChpc1R5cGVvZihmbiwgJ2Z1bmN0aW9uJykpIHtcbiAgICBmbi5jYWxsKGNvbnRleHQsIHBhcmFtKTtcbiAgfSBlbHNlIHtcbiAgICBjb250ZXh0W2ZuXShwYXJhbSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRJc29Ub0RhdGUodmFsdWU6IHN0cmluZywgc3RhcnQ6IGJvb2xlYW4sIGVuZDogYm9vbGVhbikge1xuICBpZiAodmFsdWUpIHtcbiAgICBjb25zdCBkYXkgPSBwYXJzZUludCh2YWx1ZS5zdWJzdHJpbmcoOCwgMTApLCAxMCk7XG4gICAgY29uc3QgbW9udGggPSBwYXJzZUludCh2YWx1ZS5zdWJzdHJpbmcoNSwgNyksIDEwKTtcbiAgICBjb25zdCB5ZWFyID0gcGFyc2VJbnQodmFsdWUuc3Vic3RyaW5nKDAsIDQpLCAxMCk7XG4gICAgaWYgKHN0YXJ0KSB7XG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGggLSAxLCBkYXksIDAsIDAsIDApO1xuXG4gICAgICBzZXRZZWFyRnJvbTBUbzEwMChkYXRlLCB5ZWFyKTtcblxuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfSBlbHNlIGlmIChlbmQpIHtcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSwgMjMsIDU5LCA1OSk7XG5cbiAgICAgIHNldFllYXJGcm9tMFRvMTAwKGRhdGUsIHllYXIpO1xuXG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbWlsbGlzZWNvbmRzID0gRGF0ZS5wYXJzZSh2YWx1ZSk7XG4gICAgICBjb25zdCB0aW1lem9uZSA9IG5ldyBEYXRlKCkuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwO1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKG1pbGxpc2Vjb25kcyArIHRpbWV6b25lKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnREYXRlVG9JU09FeHRlbmRlZChkYXRlOiBEYXRlLCB0aW1lPzogc3RyaW5nKSB7XG4gIGlmIChkYXRlKSB7XG4gICAgY29uc3QgZ2V0TW9udGggPSBkYXRlLmdldE1vbnRoKCkgKyAxO1xuICAgIGNvbnN0IGRheSA9IGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcgKyBkYXRlLmdldERhdGUoKSA6IGRhdGUuZ2V0RGF0ZSgpO1xuICAgIGNvbnN0IG1vbnRoID0gZ2V0TW9udGggPCAxMCA/ICcwJyArIGdldE1vbnRoIDogZ2V0TW9udGg7XG4gICAgY29uc3QgeWVhciA9IGZvcm1hdFllYXIoZGF0ZS5nZXRGdWxsWWVhcigpKTtcblxuICAgIGNvbnN0IGRhdGVTdHJpbmcgPSBkYXRlLnRvU3RyaW5nKCk7XG5cbiAgICBpZiAodGltZSkge1xuICAgICAgcmV0dXJuIHllYXIgKyAnLScgKyBtb250aCArICctJyArIGRheSArIHRpbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHllYXIgK1xuICAgICAgICAnLScgK1xuICAgICAgICBtb250aCArXG4gICAgICAgICctJyArXG4gICAgICAgIGRheSArXG4gICAgICAgICdUJyArXG4gICAgICAgIGRhdGVTdHJpbmcuc3Vic3RyaW5nKDE2LCAyNCkgK1xuICAgICAgICBkYXRlU3RyaW5nLnN1YnN0cmluZygyOCwgMzEpICtcbiAgICAgICAgJzonICtcbiAgICAgICAgZGF0ZVN0cmluZy5zdWJzdHJpbmcoMzEsIDMzKVxuICAgICAgKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBUcmFuc2Zvcm1hIG8gYW5vIGVtIHVtYSBzdHJpbmcgbm8gZm9ybWF0byB5eXl5IGUgY2FzbyBvIGFubyBzZWphIG1lbm9yIHF1ZSAxMDAwIHByZWVuY2hlIGNvbSB6ZXJvcyBhIGVzcXVlcmRhLlxuICpcbiAqIEBwYXJhbSB5ZWFyIEFub1xuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0WWVhcih5ZWFyOiBudW1iZXIpIHtcbiAgaWYgKHllYXIgPj0gMTAwMCkge1xuICAgIHJldHVybiB5ZWFyLnRvU3RyaW5nKCk7XG4gIH1cblxuICBpZiAoeWVhciA+IDk5ICYmIHllYXIgPCAxMDAwKSB7XG4gICAgcmV0dXJuIGAwJHt5ZWFyfWA7XG4gIH1cblxuICBpZiAoeWVhciA+IDkgJiYgeWVhciA8IDEwMCkge1xuICAgIHJldHVybiBgMDAke3llYXJ9YDtcbiAgfVxuXG4gIGlmICh5ZWFyID49IDAgJiYgeWVhciA8IDEwKSB7XG4gICAgcmV0dXJuIGAwMDAke3llYXJ9YDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFcXVhbHModmFsdWUsIGNvbXBhcmVkVmFsdWUpIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKSA9PT0gSlNPTi5zdHJpbmdpZnkoY29tcGFyZWRWYWx1ZSk7XG59XG5cbi8qKlxuICogQ2FzbyBvIGFubyBvcmlnaW5hbCBkYSBkYXRhIHNlamEgZW50cmUgMCBlIDEwMCBhdHJpYnVpIGVzc2UgdmFsb3IgYW8gYW5vLCBwb2lzIG8gYG5ldyBEYXRlYCBkbyBqYXZhc2NyaXB0IHRyYW5zZm9ybWEgbyBhbm8gcGFyYSAxOTBYLlxuICpcbiAqIEBwYXJhbSBkYXRlIERhdGFcbiAqIEBwYXJhbSB5ZWFyIEFubyBvcmlnaW5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0WWVhckZyb20wVG8xMDAoZGF0ZTogRGF0ZSwgeWVhcjogbnVtYmVyKSB7XG4gIGlmICh5ZWFyID49IDAgJiYgeWVhciA8IDEwMCkge1xuICAgIGRhdGUuc2V0RnVsbFllYXIoeWVhcik7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvcnRPcHRpb25zQnlQcm9wZXJ0eShvcHRpb25zOiBBcnJheTxhbnk+LCBwcm9wZXJ0eTogc3RyaW5nKSB7XG4gIG9wdGlvbnMuc29ydCgob3B0aW9uQSwgb3B0aW9uQikgPT4ge1xuICAgIG9wdGlvbkEgPSBvcHRpb25BW3Byb3BlcnR5XS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG4gICAgb3B0aW9uQiA9IG9wdGlvbkJbcHJvcGVydHldLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmIChvcHRpb25BIDwgb3B0aW9uQikge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBpZiAob3B0aW9uQSA+IG9wdGlvbkIpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVEdXBsaWNhdGVkT3B0aW9ucyhsaXN0OiBBcnJheTxhbnk+KSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChpID09PSAwKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAobGlzdC5maW5kSW5kZXgob3AgPT4gb3AudmFsdWUgPT09IGxpc3RbaV0udmFsdWUpICE9PSBpKSB7XG4gICAgICBsaXN0LnNwbGljZShpLCAxKTtcbiAgICAgIGktLTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVVuZGVmaW5lZEFuZE51bGxPcHRpb25zKGxpc3Q6IEFycmF5PGFueT4pIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGxpc3RbaV0udmFsdWUgPT09IHVuZGVmaW5lZCB8fCBsaXN0W2ldLnZhbHVlID09PSBudWxsKSB7XG4gICAgICBsaXN0LnNwbGljZShpLCAxKTtcbiAgICAgIGktLTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkVmFsdWUodmFsdWU6IGFueSkge1xuICByZXR1cm4gKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09ICcnKSB8fCB2YWx1ZSA9PT0gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0V4dGVybmFsTGluayh1cmwpOiBib29sZWFuIHtcbiAgcmV0dXJuIHVybCA/IHVybC5zdGFydHNXaXRoKCdodHRwJykgOiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wZW5FeHRlcm5hbExpbmsodXJsKTogdm9pZCB7XG4gIHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybWF0dGVkTGluayhsaW5rOiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgZm9ybWF0dGVkTGluayA9ICcnO1xuICAvLyBSZXRpcmEgdG9kb3Mgb3MgcG9udG9zIG5vIGNvbWXDp28gZGEgVVJMLlxuICBpZiAobGluaykge1xuICAgIGZvcm1hdHRlZExpbmsgPSBsaW5rLnJlcGxhY2UoL14oXFwuKSsvZywgJycpO1xuICB9XG4gIC8vIFZlcmlmaWNhIHNlIGZvaSB1dGlsaXphZG8gdW1hIHJvdGEgcXVlIG7Do28gY29tZWNlIGNvbSBiYXJyYS5cbiAgaWYgKCFmb3JtYXR0ZWRMaW5rLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgIGZvcm1hdHRlZExpbmsgPSAnLycuY29uY2F0KGZvcm1hdHRlZExpbmspO1xuICB9XG4gIHJldHVybiBmb3JtYXR0ZWRMaW5rO1xufVxuXG4vKipcbiAqIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciBvcmRlbmFyIGRvaXMgdmFsb3Jlcy5cbiAqXG4gKiBAcGFyYW0gbGVmdFNpZGUgUHJpbWVpcm8gdmFsb3IgYSBzZXIgY29tcGFyYWRvLlxuICogQHBhcmFtIHJpZ2h0U2lkZSBTZWd1bmRvIHZhbG9yIGEgc2VyIGNvbXBhcmFkby5cbiAqIEBwYXJhbSBhc2NlbmRpbmcgRGV0ZXJtaW5hIHNlIHNlcsOhIGVtIG9yZGVtIGFzY2VuZGVudGUgb3UgZGVzY2VuZGVudGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb3J0VmFsdWVzKGxlZnRTaWRlOiBzdHJpbmcsIHJpZ2h0U2lkZTogc3RyaW5nLCBhc2NlbmRpbmc6IGJvb2xlYW4gPSB0cnVlKTogbnVtYmVyIHtcbiAgaWYgKGFzY2VuZGluZykge1xuICAgIGlmIChsZWZ0U2lkZSA8IHJpZ2h0U2lkZSkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH0gZWxzZSBpZiAobGVmdFNpZGUgPiByaWdodFNpZGUpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfSBlbHNlIGlmIChhc2NlbmRpbmcgPT09IGZhbHNlKSB7XG4gICAgaWYgKGxlZnRTaWRlIDwgcmlnaHRTaWRlKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9IGVsc2UgaWYgKGxlZnRTaWRlID4gcmlnaHRTaWRlKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVEYXRlUmFuZ2UoZGF0ZTogRGF0ZSwgZGF0ZVN0YXJ0OiBEYXRlLCBkYXRlRW5kOiBEYXRlKSB7XG4gIGlmIChkYXRlU3RhcnQgJiYgZGF0ZUVuZCkge1xuICAgIHJldHVybiBkYXRlID49IGRhdGVTdGFydCAmJiBkYXRlIDw9IGRhdGVFbmQ7XG4gIH0gZWxzZSBpZiAoZGF0ZVN0YXJ0ICYmICFkYXRlRW5kKSB7XG4gICAgcmV0dXJuIGRhdGUgPj0gZGF0ZVN0YXJ0O1xuICB9IGVsc2UgaWYgKCFkYXRlU3RhcnQgJiYgZGF0ZUVuZCkge1xuICAgIHJldHVybiBkYXRlIDw9IGRhdGVFbmQ7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhcGl0YWxpemVGaXJzdExldHRlcih0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7dGV4dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKX0ke3RleHQuc2xpY2UoMSl9YDtcbn1cblxuLyoqXG4gKiBNYXBlaWEgdW0gbm92byBhcnJheSBhcGVuYXMgY29tIGFzIHByb3ByaWVkYWRlcyBkZWZpbmlkYXMgcGVsbyBkZXNlbnZvbHZlZG9yIGJhc2VhZG8gZW0gdW0gYXJyYXkgZGVcbiAqIG9yaWdlbS5cbiAqXG4gKiBFeGVtcGxvOlxuICpcbiAqIGBgYFxuICogY29uc3QgcGVvcGxlID0gW1xuICogIHsgaWQ6IDEsIG5hbWU6ICdGdWxhbm8nLCBiaXJ0aGRhdGU6ICcxOTgwLTExLTAxJywgZ2VucmU6ICdNYWxlJywgY2l0eTogJ1PDo28gUGF1bG8nLCBkZXBlbmRlbnRzOiAyIH0sXG4gKiAgeyBpZDogMiwgbmFtZTogJ0JlbHRyYW5vJywgYmlydGhkYXRlOiAnMTk5Ny0wMS0yMScsIGdlbnJlOiAnRmVtYWxlJywgY2l0eTogJ0pvaW52aWxsZScsIGRlcGVuZGVudHM6IDAgfSxcbiAqICB7IGlkOiAzLCBuYW1lOiAnU2ljbGFubycsIGJpcnRoZGF0ZTogJzE5OTUtMDctMTUnLCBnZW5yZTogJ01hbGUnLCBjaXR5OiAnSm9pbnZpbGxlJywgZGVwZW5kZW50czogMCB9XG4gKiBdO1xuICpcbiAqIGNvbnN0IHByb3BlcnRpZXMgPSBbJ2lkJywgJ25hbWUnXTtcbiAqXG4gKiBjb25zdCBpZEFuZE5hbWUgPSBtYXBBcnJheUJ5UHJvcGVydGllcyhwZW9wbGUsIHByb3BlcnRpZXMpO1xuICpcbiAqIGNvbnNvbGUubG9nKGlkQW5kTmFtZSk7IC8vIFt7IGlkOiAxLCBuYW1lOiAnRnVsYW5vJyB9LCB7IGlkOiAyLCBuYW1lOiAnQmVsdHJhbm8nIH0sIHsgaWQ6IDMsIG5hbWU6ICdTaWNsYW5vJyB9XVxuICogYGBgXG4gKlxuICogVW0gb3V0cm8gdXNvIHBhcmEgbyBtw6l0b2RvIMOpIFwicGFyZWFyXCIgdG9kb3Mgb3Mgb2JqZXRvcyBkbyBhcnJheSBjb20gYXMgbWVzbWFzIHByb3ByaWVkYWRlcy5cbiAqXG4gKiBgYGBcbiAqIGNvbnN0IGN1c3RvbWVycyA9IFtcbiAqICB7IGlkOiAxLCBuYW1lOiAnRnVsYW5vJywgY2l0eTogJ1PDo28gUGF1bG8nLCBkZXBlbmRlbnRzOiAyIH0sIC8vIHNlbSBnZW5yZVxuICogIHsgaWQ6IDIsIG5hbWU6ICdCZWx0cmFubycsIGdlbnJlOiAnRmVtYWxlJywgY2l0eTogJ0pvaW52aWxsZScgfSwgLy8gc2VtIGRlcGVuZGVudHNcbiAqICB7IGlkOiAzLCBuYW1lOiAnU2ljbGFubycsIGdlbnJlOiAnTWFsZScsIGNpdHk6ICdKb2ludmlsbGUnLCBkZXBlbmRlbnRzOiAwIH1cbiAqIF07XG4gKiBjb25zdCBwcm9wZXJ0aWVzID0gWydpZCcsICduYW1lJywgJ2NpdHknLCAnZ2VucmUnLCAnZGVwZW5kZW50cyddO1xuICpcbiAqIGNvbnN0IHBhdHRlcm4gPSBtYXBBcnJheUJ5UHJvcGVydGllcyhjdXN0b21lcnMsIHByb3BlcnRpZXMpO1xuICogY29uc29sZS5sb2cocGF0dGVybik7XG4gKlxuICogLy8gW1xuICogLy8gICB7IGlkOiAxLCBuYW1lOiAnRnVsYW5vJywgY2l0eTogJ1PDo28gUGF1bG8nLCBnZW5yZTogdW5kZWZpbmVkLCBkZXBlbmRlbnRzOiAyIH0sXG4gKiAvLyAgIHsgaWQ6IDIsIG5hbWU6ICdCZWx0cmFubycsIGNpdHk6ICdKb2ludmlsbGUnLCBnZW5yZTogJ0ZlbWFsZScsIGRlcGVuZGVudHM6IHVuZGVmaW5lZCB9LFxuICogLy8gICB7IGlkOiAzLCBuYW1lOiAnU2ljbGFubycsIGNpdHk6ICdKb2ludmlsbGUnLCBnZW5yZTogJ01hbGUnLCBkZXBlbmRlbnRzOiAwIH1cbiAqIC8vIF1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBpdGVtcyB7QXJyYXk8YW55Pn0gQXJyYXkgZGUgaXRlbXMgb3JpZ2luYWwuXG4gKiBAcGFyYW0gcHJvcGVydGllcyB7QXJyYXk8c3RyaW5nPn0gQXJyYXkgZGUgc3RyaW5nIGNvbSBhIGxpc3RhIGRlIHByb3ByaWVkYWRlcyBxdWUgZGV2ZW0gc2VyIHJldG9ybmFkYXMuXG4gKlxuICogQHJldHVybnMgQXJyYXk8YW55PlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFwQXJyYXlCeVByb3BlcnRpZXMoaXRlbXM6IEFycmF5PGFueT4gPSBbXSwgcHJvcGVydGllczogQXJyYXk8c3RyaW5nPiA9IFtdKTogQXJyYXk8YW55PiB7XG4gIHJldHVybiBpdGVtcy5tYXAoaXRlbSA9PiBtYXBPYmplY3RCeVByb3BlcnRpZXMoaXRlbSwgcHJvcGVydGllcykpO1xufVxuXG4vKipcbiAqIE1hcGVpYSB1bSBub3ZvIG9iamV0byBhcGVuYXMgY29tIGFzIHByb3ByaWVkYWRlcyBkZWZpbmlkYXMgcGVsbyBkZXNlbnZvbHZlZG9yLlxuICpcbiAqIEV4ZW1wbG86XG4gKlxuICogYGBgXG4gKiBjb25zdCBwZXJzb24gPSB7IGlkOiAxLCBuYW1lOiAnRnVsYW5vJywgYmlydGhkYXRlOiAnMTk4MC0xMS0wMScsIGdlbnJlOiAnTWFsZScsIGNpdHk6ICdTw6NvIFBhdWxvJywgZGVwZW5kZW50czogMiB9O1xuICpcbiAqIGNvbnN0IHByb3BlcnRpZXMgPSBbJ2lkJywgJ25hbWUnXTtcbiAqXG4gKiBjb25zdCBpZEFuZE5hbWUgPSBtYXBPYmplY3RCeVByb3BlcnRpZXMocGVyc29uLCBwcm9wZXJ0aWVzKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhpZEFuZE5hbWUpOyAvLyB7IGlkOiAxLCBuYW1lOiAnRnVsYW5vJyB9XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gb2JqZWN0IHtBcnJheTxhbnk+fSBBcnJheSBkZSBpdGVtcyBvcmlnaW5hbC5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzIHtBcnJheTxzdHJpbmc+fSBBcnJheSBkZSBzdHJpbmcgY29tIGEgbGlzdGEgZGUgcHJvcHJpZWRhZGVzIHF1ZSBkZXZlbSBzZXIgcmV0b3JuYWRhcy5cbiAqXG4gKiBAcmV0dXJucyBBcnJheTxhbnk+XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBPYmplY3RCeVByb3BlcnRpZXMob2JqZWN0OiBhbnkgPSB7fSwgcHJvcGVydGllczogQXJyYXk8c3RyaW5nPiA9IFtdKSB7XG4gIGNvbnN0IGdldFNlbGVjdGVkUHJvcGVydGllcyA9IChzZWxlY3RlZFByb3BlcnRpZXMsIHByb3BlcnR5KSA9PiAoe1xuICAgIC4uLnNlbGVjdGVkUHJvcGVydGllcyxcbiAgICBbcHJvcGVydHldOiBvYmplY3RbcHJvcGVydHldXG4gIH0pO1xuXG4gIHJldHVybiBwcm9wZXJ0aWVzLnJlZHVjZShnZXRTZWxlY3RlZFByb3BlcnRpZXMsIHt9KTtcbn1cblxuLyoqXG4gKiBSZXRvcm5hIG9zIHZhbG9yZXMgZGUgdW0gb2JqZXRvIGRlbnRybyBkZSB1bSBhcnJheS5cbiAqXG4gKiA+IFNpbXVsYSBvIE9iamVjdC52YWx1ZXMob2JqKSwgbyBtZXNtbyBkZXZlIHNlciByZW1vdmlkbyBhc3NpbSBxdWUgYSB2ZXJzw6NvIHR5cGVzY3JpdCBmb3IgYXR1YWxpemFkYS5cbiAqXG4gKiBAcGFyYW0gb2JqZWN0IE9iamV0byBkZSBvbmRlIHNlcsOhIHBlZ28gb3MgdmFsb3Jlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlc0Zyb21PYmplY3Qob2JqZWN0OiBhbnkgPSB7fSk6IEFycmF5PGFueT4ge1xuICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KS5tYXAocHJvcGVydHkgPT4gb2JqZWN0W3Byb3BlcnR5XSk7XG59XG5cbi8qKlxuICogYWRpY2lvbmEgMCBubyB0ZW1wbyBpbmZvcm1hZG8sIGNhc28gbWVub3IgcSAxMFxuICpcbiAqIEBwYXJhbSB0aW1lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRaZXJvKHRpbWU6IG51bWJlcikge1xuICBpZiAoIXRpbWUpIHtcbiAgICByZXR1cm4gJzAwJztcbiAgfVxuXG4gIGlmICh0aW1lIDwgMTApIHtcbiAgICByZXR1cm4gYDAke3RpbWV9YDtcbiAgfVxuXG4gIHJldHVybiB0aW1lO1xufVxuXG4vKipcbiAqIFJlbW92ZSBkbyBvYmpldG8gYXMgcHJvcHJpZWRhZGVzIGVzcGVjaWZpY2FkYXMuXG4gKlxuICogRXhlbXBsbzpcbiAqXG4gKiBgYGBcbiAqIGtleTogWydpZCcsICdjcGYnXVxuICogbmV3SXRlbVZhbHVlOiB7IGlkOiAnMTIzJywgY3BmOiAnNDU2JywgbmFtZTogJ1Rlc3QnIH1cbiAqIFJlc3VsdGFkbzogeyBuYW1lOiAnVGVzdCcgfVxuICogYGBgXG4gKlxuICogQHBhcmFtIGtleXMgbGlzdGEgZGUgcHJvcHJpZWRhZGVzIHBhcmEgc2VyIHJlbW92aWRhIGRvIG9iamV0by5cbiAqIEBwYXJhbSBuZXdJdGVtVmFsdWUgb2JqZXRvIHF1ZSBzZSBkZXNlamEgcmVtb3ZlciBhcyBwcm9wcmllZGFkZXMuXG4gKiBAcmV0dXJucyBvYmpldG8gc2VtIGFzIHByb3ByaWVkYWRlcyBlc3BlY2lmaWNhZGFzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlS2V5c1Byb3BlcnRpZXMoa2V5czogQXJyYXk8YW55PiwgbmV3SXRlbVZhbHVlOiBhbnkpIHtcbiAga2V5cy5mb3JFYWNoKGtleSA9PiBkZWxldGUgbmV3SXRlbVZhbHVlW2tleV0pO1xuICByZXR1cm4gbmV3SXRlbVZhbHVlO1xufVxuXG4vKipcbiAqIFJlbW92ZSBvYmpldG9zIGR1cGxpY2Fkb3MuXG4gKlxuICogRXhlbXBsbzpcbiAqXG4gKiBgYGBcbiAqIGl0ZW06IFt7Y291bnRyeTogJ2phcGFvJ30sIHtjb3VudHJ5OiAnYnJhc2lsJ30gLCB7Y291bnRyeTogJ2NoaW5hJ31dXG4gKiBpdGVtMjogW3tjb3VudHJ5OiAnY2hpbGUnfSwge2NvdW50cnk6ICdicmFzaWwnfSwge2NvdW50cnk6ICdjYW5hZGEnfV1cbiAqIGtleTogJ2NvdW50cnknXG4gKiBSZXN1bHRhZG86XG4gKiAgICBpdGVtMiA9IFt7Y291bnRyeTogJ2NoaWxlJ30sIHtjb3VudHJ5OiAnY2FuYWRhJ30gXVxuICogYGBgXG4gKlxuICogQHBhcmFtIGl0ZW0gbGlzdGEgY29tcGFyYWRhLlxuICogQHBhcmFtIGl0ZW0yIGxpc3RhIHBhcmEgcmVtb3ZlciBpdGVtcyBkdXBsaWNhZG9zLlxuICogQHBhcmFtIGtleSBwcm9wcmllZGFkZSBxdWUgc2Vyw6EgdXRpbGl6YWRhIHBhcmEgcmVhbGl6YXIgYSBjb21wYXJhw6fDo28uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVEdXBsaWNhdGVJdGVtcyhpdGVtLCBpdGVtMiwga2V5KSB7XG4gIGNvbnN0IHVuaXF1ZVZhbHVlcyA9IG5ldyBTZXQoaXRlbS5tYXAoZW50cnkgPT4gZW50cnlba2V5XSkpO1xuICBpdGVtMi5zcGxpY2UoMCwgaXRlbTIubGVuZ3RoLCAuLi5pdGVtMi5maWx0ZXIoZW50cnkgPT4gIXVuaXF1ZVZhbHVlcy5oYXMoZW50cnlba2V5XSkpKTtcbn1cblxuLyoqXG4gKiBSZWNlYmUgZG9pcyBhcnJheXMgZGUgb2JqZXRvcyBlIHJlbW92ZSBvcyBpdGVucyBkdXBsaWNhZG9zIHV0aWxpemFuZG8gdW1hIHByb3ByaWVkYWRlKGtleSkgcGFyYSBjb21wYXJhw6fDo28uXG4gKlxuICogRXhlbXBsbzpcbiAqXG4gKiBgYGBcbiAqIGl0ZW06IFt7Y291bnRyeTogJ2phcGFvJ30sIHtjb3VudHJ5OiAnYnJhc2lsJ30gLCB7Y291bnRyeTogJ2NoaW5hJ31dXG4gKiBpdGVtMjogW3tjb3VudHJ5OiAnY2hpbGUnfSwge2NvdW50cnk6ICdicmFzaWwnfSwge2NvdW50cnk6ICdjYW5hZGEnfV1cbiAqIGtleTogJ1tjb3VudHJ5XSdcbiAqIFJlc3VsdGFkbyBkbyByZXRvcm5vOlxuICogICAgW3tjb3VudHJ5OiAnY2hpbGUnfSwge2NvdW50cnk6ICdjYW5hZGEnfSwge2NvdW50cnk6ICdqYXBhbyd9LCB7Y291bnRyeTogJ2NoaW5hJ31dXG4gKiBgYGBcbiAqXG4gKlxuICogQHBhcmFtIGl0ZW0gOiBwcmltZWlyYSBsaXN0YSBkZSBpdGVucy5cbiAqIEBwYXJhbSBpdGVtMiA6IHNlZ3VuZGEgbGlzdGEgZGUgaXRlbnMuXG4gKiBAcGFyYW0ga2V5IDogdW0gYXJyYXkgZGUgcHJvcHJpZWRhZGVzIHF1ZSB2w6NvIHNlciB1dGlsaXphZGFzIHBhcmEgYSBjb21wYXJhw6fDo28uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVEdXBsaWNhdGVJdGVtc1dpdGhBcnJheUtleShpdGVtLCBpdGVtMiwga2V5cykge1xuICBjb25zdCBuZXdLZXkgPSBrZXlzLmxlbmd0aCA/IGtleXMgOiBbJ2lkJ107XG5cbiAgY29uc3QgY29tYmluZWRBcnJheSA9IGl0ZW0uY29uY2F0KGl0ZW0yKTtcbiAgcmV0dXJuIGNvbWJpbmVkQXJyYXkuZmlsdGVyKFxuICAgIChvYmosIGluZGV4KSA9PiBpbmRleCA9PT0gY29tYmluZWRBcnJheS5maW5kSW5kZXgoaW5uZXJPYmogPT4gbmV3S2V5LmV2ZXJ5KGtleSA9PiBpbm5lck9ialtrZXldID09PSBvYmpba2V5XSkpXG4gICk7XG59XG5cbi8qKlxuICogUmVjZWJlIHVtIGFycmF5IGRlIG9iamV0b3MgcGFyYSBvcmRlbmHDp8OjbyB1dGlsaXphbmRvIGNoYXZlIGNvbW8gY29tcGFyYXRpdm8gZVxuICogc2UgYSBvcmRlciDDqSBjcmVzY2VudGUodHJ1ZSkgb3UgZGVzY3Jlc2NlbnRlKGZhbHNlKVxuICpcbiAqIEV4ZW1wbG86XG4gKlxuICogYGBgXG4gKiBpdGVtczogW3tjb3VudHJ5OiAnamFwYW8nfSwge2NvdW50cnk6ICdicmFzaWwnfSAsIHtjb3VudHJ5OiAnY2hpbmEnfV1cbiAqIGtleTogJ2NvdW50cnknXG4gKiBpc0FzY2VuZGluZ09yZGVyOiB0cnVlXG4gKiBSZXN1bHRhZG8gZG8gcmV0b3JubzpcbiAqICAgIFt7Y291bnRyeTogJ2JyYXNpbCd9LCB7Y291bnRyeTogJ2NoaW5hJ30gLCB7Y291bnRyeTogJ2phcGFvJ31dXG4gKiBgYGBcbiAqXG4gKlxuICogQHBhcmFtIGl0ZW1zIDogbGlzdGEgZGUgaXRlbnMuXG4gKiBAcGFyYW0ga2V5IDogcHJvcHJpZWRhZGUgdXRpbGl6YWRhIG5hIGNvbXBhcmHDp8Ojby5cbiAqIEBwYXJhbSBpc0FzY2VuZGluZ09yZGVyIDogb3JkZW5hw6fDo28gY3Jlc2NlbnRlIG91IGRlc2NyZXNjZW50ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvcnRBcnJheU9mT2JqZWN0cyhpdGVtcywga2V5LCBpc0FzY2VuZGluZ09yZGVyKSB7XG4gIHJldHVybiBpdGVtcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgY29uc3QgdmFsdWVBID0gYVtrZXldO1xuICAgIGNvbnN0IHZhbHVlQiA9IGJba2V5XTtcblxuICAgIGlmICh0eXBlb2YgdmFsdWVBID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgdmFsdWVCID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIGlzQXNjZW5kaW5nT3JkZXIgPyB2YWx1ZUEgLSB2YWx1ZUIgOiB2YWx1ZUIgLSB2YWx1ZUE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNvbXBhcmVSZXN1bHQgPSB2YWx1ZUEudG9TdHJpbmcoKS5sb2NhbGVDb21wYXJlKHZhbHVlQi50b1N0cmluZygpKTtcbiAgICAgIHJldHVybiBpc0FzY2VuZGluZ09yZGVyID8gY29tcGFyZVJlc3VsdCA6IC1jb21wYXJlUmVzdWx0O1xuICAgIH1cbiAgfSk7XG59XG4iXX0=
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdWktbmctdGVtcGxhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvdGVtcGxhdGVzL3NyYy9wby11aS1uZy10ZW1wbGF0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export * from './lib/index';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3RlbXBsYXRlcy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2luZGV4JztcbiJdfQ==
Binary file