@acorex/platform 18.1.4 → 18.1.5

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 (361) hide show
  1. package/common/lib/app/app-startup.service.d.ts +16 -0
  2. package/common/lib/app/application.types.d.ts +3 -1
  3. package/common/lib/app/index.d.ts +1 -0
  4. package/common/lib/common.module.d.ts +7 -1
  5. package/common/lib/configs/app.config.d.ts +1 -0
  6. package/common/lib/data/dexie-storage.service.d.ts +18 -2
  7. package/common/lib/data/entity-data-provider.d.ts +2 -2
  8. package/common/lib/data/{storage-service.d.ts → entity-storage-service.d.ts} +1 -1
  9. package/common/lib/data/index.d.ts +1 -1
  10. package/common/lib/layout/theme/components/slots/index.d.ts +0 -1
  11. package/common/lib/layout/theme/store/admin-layout.actions.d.ts +0 -1
  12. package/common/lib/layout/theme/store/admin-layout.effects.d.ts +1 -2
  13. package/common/lib/layout/theme/store/admin-layout.reducers.d.ts +0 -5
  14. package/common/lib/layout/theme/store/admin-layout.selectors.d.ts +0 -1
  15. package/common/lib/layout/theme/store/admin-layout.state.d.ts +0 -3
  16. package/common/lib/schema/widgets/common-widget-filter/boolean-widget-filter.component.d.ts +1 -1
  17. package/common/lib/settings/index.d.ts +1 -1
  18. package/common/lib/settings/settings.provider.d.ts +7 -0
  19. package/common/lib/settings/settings.service.d.ts +8 -4
  20. package/common/lib/settings/settings.types.d.ts +2 -3
  21. package/common/lib/store/common.actions.d.ts +7 -1
  22. package/common/lib/store/common.effects.d.ts +6 -1
  23. package/esm2022/common/lib/app/app-startup.service.mjs +40 -0
  24. package/esm2022/common/lib/app/application.types.mjs +1 -1
  25. package/esm2022/common/lib/app/index.mjs +2 -1
  26. package/esm2022/common/lib/common.module.mjs +39 -9
  27. package/esm2022/common/lib/configs/app.config.mjs +2 -1
  28. package/esm2022/common/lib/data/dexie-storage.service.mjs +84 -2
  29. package/esm2022/common/lib/data/entity-data-provider.mjs +1 -1
  30. package/esm2022/common/lib/data/entity-storage-service.mjs +5 -0
  31. package/esm2022/common/lib/data/index.mjs +2 -2
  32. package/esm2022/common/lib/layout/theme/components/slots/index.mjs +1 -2
  33. package/esm2022/common/lib/layout/theme/store/admin-layout.actions.mjs +1 -2
  34. package/esm2022/common/lib/layout/theme/store/admin-layout.effects.mjs +6 -14
  35. package/esm2022/common/lib/layout/theme/store/admin-layout.reducers.mjs +5 -7
  36. package/esm2022/common/lib/layout/theme/store/admin-layout.selectors.mjs +1 -2
  37. package/esm2022/common/lib/layout/theme/store/admin-layout.state.mjs +1 -4
  38. package/esm2022/common/lib/schema/widgets/common-widget-filter/boolean-widget-filter.component.mjs +15 -9
  39. package/esm2022/common/lib/schema/widgets/common-widget-filter/number-widget-filter.component.mjs +2 -2
  40. package/esm2022/common/lib/schema/widgets/dateTime/dateTime-widget-filter.component.mjs +38 -11
  41. package/esm2022/common/lib/schema/widgets/lookup/lookup-widget-filter.component.mjs +43 -15
  42. package/esm2022/common/lib/schema/widgets/number/number-widget-edit.component.mjs +2 -2
  43. package/esm2022/common/lib/schema/widgets/selection-list/selection-list-widget-filter.component.mjs +10 -6
  44. package/esm2022/common/lib/settings/index.mjs +2 -2
  45. package/esm2022/common/lib/settings/settings.provider.mjs +35 -0
  46. package/esm2022/common/lib/settings/settings.service.mjs +36 -6
  47. package/esm2022/common/lib/settings/settings.types.mjs +1 -1
  48. package/esm2022/common/lib/store/common.actions.mjs +3 -2
  49. package/esm2022/common/lib/store/common.effects.mjs +10 -6
  50. package/esm2022/layout/builder/lib/builder/builder.service.mjs +4 -6
  51. package/esm2022/layout/builder/lib/builder/widget-renderer.component.directive.mjs +33 -11
  52. package/esm2022/layout/builder/lib/builder/widget.types.mjs +10 -12
  53. package/esm2022/layout/designer/lib/designer/components/add-widget-button/add-widget-line-button.component.mjs +49 -0
  54. package/esm2022/layout/designer/lib/designer/components/add-widget-button/add-widget-mini-button.component.mjs +53 -0
  55. package/esm2022/layout/designer/lib/designer/components/add-widget-button/index.mjs +4 -0
  56. package/esm2022/layout/designer/lib/designer/components/board/board.component.mjs +7 -3
  57. package/esm2022/layout/designer/lib/designer/components/drawers/data-sources/data-sources.component.mjs +1 -1
  58. package/esm2022/layout/designer/lib/designer/components/widget-picker/widget-picker.component.mjs +24 -9
  59. package/esm2022/layout/designer/lib/designer/designer.component.mjs +4 -4
  60. package/esm2022/layout/designer/lib/designer/index.mjs +3 -3
  61. package/esm2022/layout/designer/lib/designer/shared/designer-connector.service.mjs +1 -1
  62. package/esm2022/layout/designer/lib/designer/shared/designer.service.mjs +2 -4
  63. package/esm2022/layout/designer/lib/designer/shared/designer.types.mjs +6 -0
  64. package/esm2022/layout/designer/lib/designer/shared/widget-designer-renderer.directive.mjs +2 -3
  65. package/esm2022/layout/designer/lib/property-viewer/widget-property-viewer.component.mjs +3 -3
  66. package/esm2022/layout/entity/lib/entity-master-list.viewmodel.mjs +3 -4
  67. package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.mjs +2 -2
  68. package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.component.mjs +45 -9
  69. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/entity-list-view.component.mjs +1 -1
  70. package/esm2022/themes/default/lib/default.module.mjs +7 -3
  71. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.mjs +17 -4
  72. package/esm2022/themes/default/lib/layouts/root-layout/components/header/header.component.mjs +3 -3
  73. package/esm2022/themes/default/lib/layouts/root-layout/root-layout.component.mjs +8 -3
  74. package/esm2022/themes/shared/index.mjs +3 -1
  75. package/esm2022/themes/shared/lib/comments/comment-list-view.component.mjs +3 -3
  76. package/esm2022/themes/shared/lib/comments/comments.service.mjs +1 -1
  77. package/esm2022/themes/shared/lib/comments/comments.type.mjs +1 -1
  78. package/esm2022/themes/shared/lib/components/theme-slot.component.mjs +117 -0
  79. package/esm2022/themes/shared/lib/services/theme.service.mjs +79 -0
  80. package/esm2022/themes/shared/lib/shared.module.mjs +14 -8
  81. package/esm2022/widgets/lib/widgets/actions/button/button-widget-designer.component.mjs +2 -2
  82. package/esm2022/widgets/lib/widgets/actions/button/button-widget-view.component.mjs +1 -2
  83. package/esm2022/widgets/lib/widgets/actions/button/button-widget.config.mjs +3 -2
  84. package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget-edit.component.mjs +1 -1
  85. package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget-view.component.mjs +35 -23
  86. package/esm2022/widgets/lib/widgets/editors/color/color-box-widget-designer.component.mjs +3 -2
  87. package/esm2022/widgets/lib/widgets/editors/color/color-box-widget-edit.component.mjs +3 -2
  88. package/esm2022/widgets/lib/widgets/editors/color/color-box-widget-print.component.mjs +3 -3
  89. package/esm2022/widgets/lib/widgets/editors/color/color-box-widget-view.component.mjs +4 -3
  90. package/esm2022/widgets/lib/widgets/editors/contact/contact-widget-edit.component.mjs +23 -23
  91. package/esm2022/widgets/lib/widgets/editors/contact/contact-widget.config.mjs +5 -24
  92. package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-print.component.mjs +3 -3
  93. package/esm2022/widgets/lib/widgets/editors/number/number-box-widget-edit.component.mjs +5 -4
  94. package/esm2022/widgets/lib/widgets/editors/number/number-box-widget-view.component.mjs +5 -5
  95. package/esm2022/widgets/lib/widgets/editors/toggle/toggle-widget-edit.component.mjs +3 -3
  96. package/esm2022/widgets/lib/widgets/editors/toggle/toggle-widget-print.component.mjs +3 -2
  97. package/esm2022/widgets/lib/widgets/editors/toggle/toggle-widget-view.component.mjs +68 -28
  98. package/esm2022/widgets/lib/widgets/layout/block/block-widget-designer.component.mjs +7 -8
  99. package/esm2022/widgets/lib/widgets/layout/block/block-widget-view.component.mjs +3 -3
  100. package/esm2022/widgets/lib/widgets/layout/block/block-widget.config.mjs +3 -2
  101. package/esm2022/widgets/lib/widgets/layout/form-field/form-field-widget-designer.component.mjs +11 -10
  102. package/esm2022/widgets/lib/widgets/layout/form-field/form-field-widget-view.component.mjs +3 -3
  103. package/esm2022/widgets/lib/widgets/layout/form-field/form-field-widget.config.mjs +6 -2
  104. package/esm2022/widgets/lib/widgets/layout/grid/grid-widget-designer.component.mjs +6 -6
  105. package/esm2022/widgets/lib/widgets/layout/grid/grid-widget-view.component.mjs +5 -4
  106. package/esm2022/widgets/lib/widgets/layout/grid-item/grid-item-widget-designer.component.mjs +8 -19
  107. package/esm2022/widgets/lib/widgets/layout/grid-item/grid-item-widget-view.component.mjs +5 -4
  108. package/esm2022/widgets/lib/widgets/layout/grid-row/grid-row-widget-designer.component.mjs +2 -1
  109. package/esm2022/widgets/lib/widgets/layout/grid-row/grid-row-widget-view.component.mjs +5 -4
  110. package/esm2022/widgets/lib/widgets/layout/page/page-widget-designer.component.mjs +95 -9
  111. package/esm2022/widgets/lib/widgets/layout/page/page-widget-view.component.mjs +3 -3
  112. package/esm2022/widgets/lib/widgets/layout/page/page-widget.config.mjs +18 -3
  113. package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget-designer.component.mjs +10 -10
  114. package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget-edit.component.mjs +18 -11
  115. package/esm2022/widgets/lib/widgets/layout/text-block/text-block-widget.config.mjs +3 -2
  116. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  117. package/fesm2022/{acorex-platform-common-avatar-widget-edit.component-CfqY7kKi.mjs → acorex-platform-common-avatar-widget-edit.component-CSSz-dqg.mjs} +4 -4
  118. package/fesm2022/{acorex-platform-common-avatar-widget-edit.component-CfqY7kKi.mjs.map → acorex-platform-common-avatar-widget-edit.component-CSSz-dqg.mjs.map} +1 -1
  119. package/fesm2022/{acorex-platform-common-avatar-widget-view.component-DXC7INdQ.mjs → acorex-platform-common-avatar-widget-view.component-WofmamJK.mjs} +2 -3
  120. package/fesm2022/acorex-platform-common-avatar-widget-view.component-WofmamJK.mjs.map +1 -0
  121. package/fesm2022/{acorex-platform-common-boolean-widget-filter.component-DLGnsXy4.mjs → acorex-platform-common-boolean-widget-filter.component-ByoMpVAs.mjs} +14 -9
  122. package/fesm2022/acorex-platform-common-boolean-widget-filter.component-ByoMpVAs.mjs.map +1 -0
  123. package/fesm2022/{acorex-platform-common-change-password.component-BBPFxmB6.mjs → acorex-platform-common-change-password.component-Djd4SeNv.mjs} +6 -6
  124. package/fesm2022/{acorex-platform-common-change-password.component-BBPFxmB6.mjs.map → acorex-platform-common-change-password.component-Djd4SeNv.mjs.map} +1 -1
  125. package/fesm2022/{acorex-platform-common-checkbox-widget-column.component-Ch2bdAjo.mjs → acorex-platform-common-checkbox-widget-column.component-BAK1Wlh_.mjs} +4 -5
  126. package/fesm2022/{acorex-platform-common-checkbox-widget-column.component-Ch2bdAjo.mjs.map → acorex-platform-common-checkbox-widget-column.component-BAK1Wlh_.mjs.map} +1 -1
  127. package/fesm2022/{acorex-platform-common-checkbox-widget-edit.component-DOGMfGby.mjs → acorex-platform-common-checkbox-widget-edit.component-C1PgHZsE.mjs} +2 -3
  128. package/fesm2022/acorex-platform-common-checkbox-widget-edit.component-C1PgHZsE.mjs.map +1 -0
  129. package/fesm2022/{acorex-platform-common-checkbox-widget-view.component-BhGOtblX.mjs → acorex-platform-common-checkbox-widget-view.component-B4BG4mCQ.mjs} +4 -5
  130. package/fesm2022/{acorex-platform-common-checkbox-widget-view.component-BhGOtblX.mjs.map → acorex-platform-common-checkbox-widget-view.component-B4BG4mCQ.mjs.map} +1 -1
  131. package/fesm2022/{acorex-platform-common-dateTime-widget-column.component-BkUDt0Kj.mjs → acorex-platform-common-dateTime-widget-column.component-BnW8m1wn.mjs} +2 -3
  132. package/fesm2022/acorex-platform-common-dateTime-widget-column.component-BnW8m1wn.mjs.map +1 -0
  133. package/fesm2022/{acorex-platform-common-dateTime-widget-edit.component-DEqsapFH.mjs → acorex-platform-common-dateTime-widget-edit.component-DCYX2iyT.mjs} +5 -5
  134. package/fesm2022/{acorex-platform-common-dateTime-widget-edit.component-DEqsapFH.mjs.map → acorex-platform-common-dateTime-widget-edit.component-DCYX2iyT.mjs.map} +1 -1
  135. package/fesm2022/{acorex-platform-common-dateTime-widget-filter.component-CqddjYjP.mjs → acorex-platform-common-dateTime-widget-filter.component-Dbxz84tm.mjs} +37 -11
  136. package/fesm2022/acorex-platform-common-dateTime-widget-filter.component-Dbxz84tm.mjs.map +1 -0
  137. package/fesm2022/{acorex-platform-common-dateTime-widget-view.component-BKUPKE9M.mjs → acorex-platform-common-dateTime-widget-view.component-Bg1h8xAj.mjs} +2 -3
  138. package/fesm2022/{acorex-platform-common-dateTime-widget-view.component-BKUPKE9M.mjs.map → acorex-platform-common-dateTime-widget-view.component-Bg1h8xAj.mjs.map} +1 -1
  139. package/fesm2022/{acorex-platform-common-email-widget-column.component-BOer2nZi.mjs → acorex-platform-common-email-widget-column.component-BqRR2jW9.mjs} +2 -3
  140. package/fesm2022/acorex-platform-common-email-widget-column.component-BqRR2jW9.mjs.map +1 -0
  141. package/fesm2022/{acorex-platform-common-email-widget-edit.component-BoKsGiEI.mjs → acorex-platform-common-email-widget-edit.component-C7oCyByG.mjs} +5 -5
  142. package/fesm2022/{acorex-platform-common-email-widget-edit.component-BoKsGiEI.mjs.map → acorex-platform-common-email-widget-edit.component-C7oCyByG.mjs.map} +1 -1
  143. package/fesm2022/{acorex-platform-common-email-widget-view.component-BZtK5dMd.mjs → acorex-platform-common-email-widget-view.component-hfVZnW_L.mjs} +2 -3
  144. package/fesm2022/{acorex-platform-common-email-widget-view.component-BZtK5dMd.mjs.map → acorex-platform-common-email-widget-view.component-hfVZnW_L.mjs.map} +1 -1
  145. package/fesm2022/{acorex-platform-common-file-widget-column.component-DpcUmwAT.mjs → acorex-platform-common-file-widget-column.component-Dt2mR6hJ.mjs} +1 -2
  146. package/fesm2022/acorex-platform-common-file-widget-column.component-Dt2mR6hJ.mjs.map +1 -0
  147. package/fesm2022/{acorex-platform-common-file-widget-edit.component-CNLXguLn.mjs → acorex-platform-common-file-widget-edit.component-DQol3UN8.mjs} +4 -4
  148. package/fesm2022/{acorex-platform-common-file-widget-edit.component-CNLXguLn.mjs.map → acorex-platform-common-file-widget-edit.component-DQol3UN8.mjs.map} +1 -1
  149. package/fesm2022/{acorex-platform-common-file-widget-filter.component-Dwt-LYWG.mjs → acorex-platform-common-file-widget-filter.component-CGd1mY-z.mjs} +2 -3
  150. package/fesm2022/acorex-platform-common-file-widget-filter.component-CGd1mY-z.mjs.map +1 -0
  151. package/fesm2022/{acorex-platform-common-file-widget-view.component-CjDhjHQR.mjs → acorex-platform-common-file-widget-view.component-lKWnGSSb.mjs} +4 -4
  152. package/fesm2022/{acorex-platform-common-file-widget-view.component-CjDhjHQR.mjs.map → acorex-platform-common-file-widget-view.component-lKWnGSSb.mjs.map} +1 -1
  153. package/fesm2022/{acorex-platform-common-gallery-widget-edit.component-CzKFKaPH.mjs → acorex-platform-common-gallery-widget-edit.component-DgjY3ZWk.mjs} +6 -6
  154. package/fesm2022/{acorex-platform-common-gallery-widget-edit.component-CzKFKaPH.mjs.map → acorex-platform-common-gallery-widget-edit.component-DgjY3ZWk.mjs.map} +1 -1
  155. package/fesm2022/{acorex-platform-common-gallery-widget-filter.component-B-KxKtY4.mjs → acorex-platform-common-gallery-widget-filter.component-CUw4kxTW.mjs} +2 -3
  156. package/fesm2022/acorex-platform-common-gallery-widget-filter.component-CUw4kxTW.mjs.map +1 -0
  157. package/fesm2022/{acorex-platform-common-gallery-widget-view.component-ca-JB8qW.mjs → acorex-platform-common-gallery-widget-view.component-DK52JTds.mjs} +5 -5
  158. package/fesm2022/{acorex-platform-common-gallery-widget-view.component-ca-JB8qW.mjs.map → acorex-platform-common-gallery-widget-view.component-DK52JTds.mjs.map} +1 -1
  159. package/fesm2022/{acorex-platform-common-largetext-widget-edit.component-DD7S5j12.mjs → acorex-platform-common-largetext-widget-edit.component-7bbHUOnp.mjs} +2 -3
  160. package/fesm2022/acorex-platform-common-largetext-widget-edit.component-7bbHUOnp.mjs.map +1 -0
  161. package/fesm2022/{acorex-platform-common-lookup-widget-column.component-BEZNLQZi.mjs → acorex-platform-common-lookup-widget-column.component-PGf5qjC4.mjs} +2 -3
  162. package/fesm2022/{acorex-platform-common-lookup-widget-column.component-BEZNLQZi.mjs.map → acorex-platform-common-lookup-widget-column.component-PGf5qjC4.mjs.map} +1 -1
  163. package/fesm2022/{acorex-platform-common-lookup-widget-edit.component-D50jPeKP.mjs → acorex-platform-common-lookup-widget-edit.component-CGZf6rH2.mjs} +2 -3
  164. package/fesm2022/acorex-platform-common-lookup-widget-edit.component-CGZf6rH2.mjs.map +1 -0
  165. package/fesm2022/{acorex-platform-common-lookup-widget-filter.component-CZHDDnR3.mjs → acorex-platform-common-lookup-widget-filter.component-CUBdIuu9.mjs} +41 -13
  166. package/fesm2022/acorex-platform-common-lookup-widget-filter.component-CUBdIuu9.mjs.map +1 -0
  167. package/fesm2022/{acorex-platform-common-lookup-widget-view.component-CQCvJxgi.mjs → acorex-platform-common-lookup-widget-view.component-dmGctRc9.mjs} +2 -3
  168. package/fesm2022/acorex-platform-common-lookup-widget-view.component-dmGctRc9.mjs.map +1 -0
  169. package/fesm2022/{acorex-platform-common-map-widget-edit.component-OanYRQ3B.mjs → acorex-platform-common-map-widget-edit.component-Cyi6AF9u.mjs} +2 -3
  170. package/fesm2022/acorex-platform-common-map-widget-edit.component-Cyi6AF9u.mjs.map +1 -0
  171. package/fesm2022/{acorex-platform-common-map-widget-view.component-BWdndMYJ.mjs → acorex-platform-common-map-widget-view.component-Cbl1KClC.mjs} +2 -3
  172. package/fesm2022/acorex-platform-common-map-widget-view.component-Cbl1KClC.mjs.map +1 -0
  173. package/fesm2022/{acorex-platform-common-messenger-widget-column.component-BHP6R3OI.mjs → acorex-platform-common-messenger-widget-column.component-BGiTw0jL.mjs} +2 -3
  174. package/fesm2022/acorex-platform-common-messenger-widget-column.component-BGiTw0jL.mjs.map +1 -0
  175. package/fesm2022/{acorex-platform-common-messenger-widget-edit.component-B7ycb6tX.mjs → acorex-platform-common-messenger-widget-edit.component-BBSmai_5.mjs} +4 -4
  176. package/fesm2022/acorex-platform-common-messenger-widget-edit.component-BBSmai_5.mjs.map +1 -0
  177. package/fesm2022/{acorex-platform-common-messenger-widget-view.component-Dz5X-FS5.mjs → acorex-platform-common-messenger-widget-view.component-C15KdEZ6.mjs} +2 -3
  178. package/fesm2022/{acorex-platform-common-messenger-widget-view.component-Dz5X-FS5.mjs.map → acorex-platform-common-messenger-widget-view.component-C15KdEZ6.mjs.map} +1 -1
  179. package/fesm2022/{acorex-platform-common-number-widget-edit.component-XSWI6466.mjs → acorex-platform-common-number-widget-edit.component-CGmS-gd7.mjs} +5 -6
  180. package/fesm2022/acorex-platform-common-number-widget-edit.component-CGmS-gd7.mjs.map +1 -0
  181. package/fesm2022/{acorex-platform-common-number-widget-filter.component-BOT9wPJ5.mjs → acorex-platform-common-number-widget-filter.component-8RC01k_0.mjs} +6 -6
  182. package/fesm2022/acorex-platform-common-number-widget-filter.component-8RC01k_0.mjs.map +1 -0
  183. package/fesm2022/{acorex-platform-common-number-widget-view.component-CP5aboLU.mjs → acorex-platform-common-number-widget-view.component-DGPcZ-yE.mjs} +2 -3
  184. package/fesm2022/acorex-platform-common-number-widget-view.component-DGPcZ-yE.mjs.map +1 -0
  185. package/fesm2022/{acorex-platform-common-password-widget-column.component-CGxTbd_S.mjs → acorex-platform-common-password-widget-column.component-O3L2DvZq.mjs} +2 -3
  186. package/fesm2022/{acorex-platform-common-password-widget-column.component-CGxTbd_S.mjs.map → acorex-platform-common-password-widget-column.component-O3L2DvZq.mjs.map} +1 -1
  187. package/fesm2022/{acorex-platform-common-password-widget-edit.component-CHQ_Kp4t.mjs → acorex-platform-common-password-widget-edit.component-DZz6rAL3.mjs} +6 -7
  188. package/fesm2022/acorex-platform-common-password-widget-edit.component-DZz6rAL3.mjs.map +1 -0
  189. package/fesm2022/{acorex-platform-common-password-widget-view.component-BQ9jlt6g.mjs → acorex-platform-common-password-widget-view.component-OxinnOs8.mjs} +3 -3
  190. package/fesm2022/{acorex-platform-common-password-widget-view.component-BQ9jlt6g.mjs.map → acorex-platform-common-password-widget-view.component-OxinnOs8.mjs.map} +1 -1
  191. package/fesm2022/{acorex-platform-common-phone-widget-column.component-RJp6wHul.mjs → acorex-platform-common-phone-widget-column.component-D9AXNMVq.mjs} +2 -3
  192. package/fesm2022/acorex-platform-common-phone-widget-column.component-D9AXNMVq.mjs.map +1 -0
  193. package/fesm2022/{acorex-platform-common-phone-widget-edit.component-BB5wTbjd.mjs → acorex-platform-common-phone-widget-edit.component-CKvODAMQ.mjs} +5 -5
  194. package/fesm2022/{acorex-platform-common-phone-widget-edit.component-BB5wTbjd.mjs.map → acorex-platform-common-phone-widget-edit.component-CKvODAMQ.mjs.map} +1 -1
  195. package/fesm2022/{acorex-platform-common-phone-widget-view.component-SIzFWfjV.mjs → acorex-platform-common-phone-widget-view.component-Cx-SrpUs.mjs} +2 -3
  196. package/fesm2022/{acorex-platform-common-phone-widget-view.component-SIzFWfjV.mjs.map → acorex-platform-common-phone-widget-view.component-Cx-SrpUs.mjs.map} +1 -1
  197. package/fesm2022/{acorex-platform-common-rich-text-widget-column.component-Ced0WqvI.mjs → acorex-platform-common-rich-text-widget-column.component-C7IqYbqM.mjs} +2 -3
  198. package/fesm2022/acorex-platform-common-rich-text-widget-column.component-C7IqYbqM.mjs.map +1 -0
  199. package/fesm2022/{acorex-platform-common-rich-text-widget-edit.component-Do3YcmKg.mjs → acorex-platform-common-rich-text-widget-edit.component-DtEcLWte.mjs} +2 -2
  200. package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-DtEcLWte.mjs.map +1 -0
  201. package/fesm2022/{acorex-platform-common-rich-text-widget-view.component-BIRyPRtw.mjs → acorex-platform-common-rich-text-widget-view.component-DI4I6wII.mjs} +2 -3
  202. package/fesm2022/acorex-platform-common-rich-text-widget-view.component-DI4I6wII.mjs.map +1 -0
  203. package/fesm2022/{acorex-platform-common-selection-list-widget-column.component-DxeK2RPc.mjs → acorex-platform-common-selection-list-widget-column.component-CHDTopqW.mjs} +2 -3
  204. package/fesm2022/acorex-platform-common-selection-list-widget-column.component-CHDTopqW.mjs.map +1 -0
  205. package/fesm2022/{acorex-platform-common-selection-list-widget-edit.component-CBLEeILz.mjs → acorex-platform-common-selection-list-widget-edit.component-Ds7Pc22g.mjs} +4 -5
  206. package/fesm2022/acorex-platform-common-selection-list-widget-edit.component-Ds7Pc22g.mjs.map +1 -0
  207. package/fesm2022/{acorex-platform-common-selection-list-widget-filter.component-B01t7mso.mjs → acorex-platform-common-selection-list-widget-filter.component-D7h2tUqB.mjs} +11 -9
  208. package/fesm2022/acorex-platform-common-selection-list-widget-filter.component-D7h2tUqB.mjs.map +1 -0
  209. package/fesm2022/{acorex-platform-common-selection-list-widget-view.component-QJMp11dd.mjs → acorex-platform-common-selection-list-widget-view.component-DGuotR-q.mjs} +2 -3
  210. package/fesm2022/acorex-platform-common-selection-list-widget-view.component-DGuotR-q.mjs.map +1 -0
  211. package/fesm2022/{acorex-platform-common-signature-pad-widget-edit.component-BQiY7RIp.mjs → acorex-platform-common-signature-pad-widget-edit.component-DPr0hCtB.mjs} +4 -4
  212. package/fesm2022/{acorex-platform-common-signature-pad-widget-edit.component-BQiY7RIp.mjs.map → acorex-platform-common-signature-pad-widget-edit.component-DPr0hCtB.mjs.map} +1 -1
  213. package/fesm2022/{acorex-platform-common-signature-pad-widget-view.component-CEhRqgEn.mjs → acorex-platform-common-signature-pad-widget-view.component-CdqZ17tU.mjs} +2 -3
  214. package/fesm2022/acorex-platform-common-signature-pad-widget-view.component-CdqZ17tU.mjs.map +1 -0
  215. package/fesm2022/{acorex-platform-common-string-widget-filter.component--L4PeRCB.mjs → acorex-platform-common-string-widget-filter.component-Ctde9CDD.mjs} +6 -6
  216. package/fesm2022/acorex-platform-common-string-widget-filter.component-Ctde9CDD.mjs.map +1 -0
  217. package/fesm2022/{acorex-platform-common-text-widget-column.component-ytX4OqZX.mjs → acorex-platform-common-text-widget-column.component-BHd_WWKq.mjs} +2 -3
  218. package/fesm2022/acorex-platform-common-text-widget-column.component-BHd_WWKq.mjs.map +1 -0
  219. package/fesm2022/{acorex-platform-common-text-widget-edit.component-CN7OyTfJ.mjs → acorex-platform-common-text-widget-edit.component-BwfelIOW.mjs} +4 -4
  220. package/fesm2022/acorex-platform-common-text-widget-edit.component-BwfelIOW.mjs.map +1 -0
  221. package/fesm2022/{acorex-platform-common-text-widget-view.component-B-R4-5Ra.mjs → acorex-platform-common-text-widget-view.component-SHWXqKZS.mjs} +2 -3
  222. package/fesm2022/{acorex-platform-common-text-widget-view.component-B-R4-5Ra.mjs.map → acorex-platform-common-text-widget-view.component-SHWXqKZS.mjs.map} +1 -1
  223. package/fesm2022/{acorex-platform-common-toggle-widget-column.component-B5NFRPgX.mjs → acorex-platform-common-toggle-widget-column.component-Dc_Ahdvn.mjs} +4 -5
  224. package/fesm2022/{acorex-platform-common-toggle-widget-column.component-B5NFRPgX.mjs.map → acorex-platform-common-toggle-widget-column.component-Dc_Ahdvn.mjs.map} +1 -1
  225. package/fesm2022/{acorex-platform-common-toggle-widget-edit.component-CLWHwf8V.mjs → acorex-platform-common-toggle-widget-edit.component-BnPyXdAA.mjs} +2 -2
  226. package/fesm2022/acorex-platform-common-toggle-widget-edit.component-BnPyXdAA.mjs.map +1 -0
  227. package/fesm2022/{acorex-platform-common-toggle-widget-view.component-Di2S7vub.mjs → acorex-platform-common-toggle-widget-view.component-D14GMwWe.mjs} +4 -5
  228. package/fesm2022/{acorex-platform-common-toggle-widget-view.component-Di2S7vub.mjs.map → acorex-platform-common-toggle-widget-view.component-D14GMwWe.mjs.map} +1 -1
  229. package/fesm2022/acorex-platform-common.mjs +326 -181
  230. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  231. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  232. package/fesm2022/acorex-platform-layout-builder.mjs +43 -25
  233. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  234. package/fesm2022/acorex-platform-layout-designer-preview.component-CaRHf4x_.mjs.map +1 -1
  235. package/fesm2022/acorex-platform-layout-designer.mjs +125 -19
  236. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  237. package/fesm2022/acorex-platform-layout-entity.mjs +47 -12
  238. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  239. package/fesm2022/acorex-platform-layouts-entity-create-view.component-CPGbLM4C.mjs.map +1 -1
  240. package/fesm2022/acorex-platform-layouts-entity-import-view.component-CZpEcVi9.mjs.map +1 -1
  241. package/fesm2022/acorex-platform-layouts-entity-modify-view.component-Bt4MLEou.mjs.map +1 -1
  242. package/fesm2022/acorex-platform-layouts.mjs +1 -1
  243. package/fesm2022/acorex-platform-layouts.mjs.map +1 -1
  244. package/fesm2022/acorex-platform-mocks.mjs.map +1 -1
  245. package/fesm2022/acorex-platform-native.mjs.map +1 -1
  246. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Q8eTfAVx.mjs.map +1 -1
  247. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-CNXG0nP4.mjs +294 -0
  248. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-CNXG0nP4.mjs.map +1 -0
  249. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BijYXMme.mjs.map +1 -1
  250. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-Bnrabotu.mjs.map +1 -1
  251. package/fesm2022/acorex-platform-themes-default-error-401.component-D5QQ2HAv.mjs.map +1 -1
  252. package/fesm2022/acorex-platform-themes-default-error-404.component-DSY_D3Iq.mjs.map +1 -1
  253. package/fesm2022/acorex-platform-themes-default-error-offline.component-B6wSkMdd.mjs.map +1 -1
  254. package/fesm2022/acorex-platform-themes-default.mjs +20 -11
  255. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  256. package/fesm2022/acorex-platform-themes-shared.mjs +198 -9
  257. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  258. package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-B9bfVuC4.mjs → acorex-platform-widgets-button-widget-designer.component-M_JuDPbt.mjs} +2 -2
  259. package/fesm2022/acorex-platform-widgets-button-widget-designer.component-M_JuDPbt.mjs.map +1 -0
  260. package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-j1jG8pCr.mjs.map +1 -1
  261. package/fesm2022/acorex-platform-widgets-checkbox-widget-designer.component-DzGg-uFi.mjs.map +1 -1
  262. package/fesm2022/{acorex-platform-widgets-checkbox-widget-view.component-tPk6Gylo.mjs → acorex-platform-widgets-checkbox-widget-view.component-CDA7Jwov.mjs} +35 -23
  263. package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-CDA7Jwov.mjs.map +1 -0
  264. package/fesm2022/{acorex-platform-widgets-color-box-widget-designer.component-Bb3aXCNZ.mjs → acorex-platform-widgets-color-box-widget-designer.component-DIvi0BtT.mjs} +3 -2
  265. package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-DIvi0BtT.mjs.map +1 -0
  266. package/fesm2022/acorex-platform-widgets-contact-widget-filter.component-GTwK51nJ.mjs.map +1 -1
  267. package/fesm2022/acorex-platform-widgets-page-widget-designer.component-BL_EAwUs.mjs +153 -0
  268. package/fesm2022/acorex-platform-widgets-page-widget-designer.component-BL_EAwUs.mjs.map +1 -0
  269. package/fesm2022/acorex-platform-widgets-rich-text-popup.component-RCdFIz45.mjs.map +1 -1
  270. package/fesm2022/acorex-platform-widgets-text-block-widget-designer.component-Bi9hlpvB.mjs.map +1 -1
  271. package/fesm2022/acorex-platform-widgets.mjs +208 -163
  272. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  273. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  274. package/layout/builder/lib/builder/builder.service.d.ts +1 -1
  275. package/layout/builder/lib/builder/widget-renderer.component.directive.d.ts +5 -1
  276. package/layout/builder/lib/builder/widget.types.d.ts +4 -4
  277. package/layout/designer/lib/designer/components/add-widget-button/add-widget-line-button.component.d.ts +8 -0
  278. package/layout/designer/lib/designer/components/add-widget-button/add-widget-mini-button.component.d.ts +9 -0
  279. package/layout/designer/lib/designer/components/add-widget-button/index.d.ts +3 -0
  280. package/layout/designer/lib/designer/components/board/board.component.d.ts +1 -0
  281. package/layout/designer/lib/designer/components/drawers/data-sources/data-sources.component.d.ts +1 -1
  282. package/layout/designer/lib/designer/components/widget-picker/widget-picker.component.d.ts +3 -1
  283. package/layout/designer/lib/designer/index.d.ts +2 -2
  284. package/layout/designer/lib/designer/shared/designer-connector.service.d.ts +1 -1
  285. package/layout/designer/lib/designer/shared/designer.service.d.ts +2 -2
  286. package/layout/entity/lib/entity-master-list.viewmodel.d.ts +2 -1
  287. package/package.json +1 -1
  288. package/themes/default/lib/default.module.d.ts +2 -1
  289. package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.d.ts +3 -1
  290. package/themes/default/lib/layouts/root-layout/root-layout.component.d.ts +2 -1
  291. package/themes/shared/index.d.ts +2 -0
  292. package/themes/shared/lib/comments/comments.service.d.ts +6 -6
  293. package/themes/shared/lib/comments/comments.type.d.ts +5 -5
  294. package/themes/shared/lib/components/theme-slot.component.d.ts +23 -0
  295. package/themes/shared/lib/services/theme.service.d.ts +21 -0
  296. package/themes/shared/lib/shared.module.d.ts +6 -4
  297. package/widgets/lib/widgets/advance/map/map-box-widget-view.component.d.ts +1 -1
  298. package/widgets/lib/widgets/advance/signature/signature-pad-widget-view.component.d.ts +1 -1
  299. package/widgets/lib/widgets/editors/color/color-box-widget-designer.component.d.ts +1 -1
  300. package/widgets/lib/widgets/editors/color/color-box-widget-edit.component.d.ts +1 -1
  301. package/widgets/lib/widgets/editors/color/color-box-widget-view.component.d.ts +1 -1
  302. package/widgets/lib/widgets/editors/number/number-box-widget-edit.component.d.ts +1 -0
  303. package/widgets/lib/widgets/editors/number/number-box-widget-view.component.d.ts +1 -1
  304. package/widgets/lib/widgets/editors/password/password-box-widget-view.component.d.ts +1 -1
  305. package/widgets/lib/widgets/editors/toggle/toggle-widget-edit.component.d.ts +1 -1
  306. package/widgets/lib/widgets/editors/toggle/toggle-widget-print.component.d.ts +1 -1
  307. package/widgets/lib/widgets/editors/toggle/toggle-widget-view.component.d.ts +1 -1
  308. package/widgets/lib/widgets/layout/grid/grid-widget-view.component.d.ts +1 -1
  309. package/widgets/lib/widgets/layout/grid-item/grid-item-widget-designer.component.d.ts +0 -2
  310. package/widgets/lib/widgets/layout/grid-item/grid-item-widget-view.component.d.ts +1 -1
  311. package/widgets/lib/widgets/layout/grid-row/grid-row-widget-view.component.d.ts +1 -1
  312. package/widgets/lib/widgets/layout/page/page-widget-designer.component.d.ts +11 -1
  313. package/widgets/lib/widgets/layout/repeater/repeater-widget-edit.component.d.ts +3 -3
  314. package/common/lib/layout/theme/components/slots/theme-slot.component.d.ts +0 -8
  315. package/common/lib/settings/settings.loader.d.ts +0 -8
  316. package/esm2022/common/lib/data/storage-service.mjs +0 -5
  317. package/esm2022/common/lib/layout/theme/components/slots/theme-slot.component.mjs +0 -48
  318. package/esm2022/common/lib/settings/settings.loader.mjs +0 -17
  319. package/esm2022/layout/designer/lib/designer/shared/designer.typs.mjs +0 -6
  320. package/fesm2022/acorex-platform-common-avatar-widget-view.component-DXC7INdQ.mjs.map +0 -1
  321. package/fesm2022/acorex-platform-common-boolean-widget-filter.component-DLGnsXy4.mjs.map +0 -1
  322. package/fesm2022/acorex-platform-common-checkbox-widget-edit.component-DOGMfGby.mjs.map +0 -1
  323. package/fesm2022/acorex-platform-common-dateTime-widget-column.component-BkUDt0Kj.mjs.map +0 -1
  324. package/fesm2022/acorex-platform-common-dateTime-widget-filter.component-CqddjYjP.mjs.map +0 -1
  325. package/fesm2022/acorex-platform-common-email-widget-column.component-BOer2nZi.mjs.map +0 -1
  326. package/fesm2022/acorex-platform-common-file-widget-column.component-DpcUmwAT.mjs.map +0 -1
  327. package/fesm2022/acorex-platform-common-file-widget-filter.component-Dwt-LYWG.mjs.map +0 -1
  328. package/fesm2022/acorex-platform-common-gallery-widget-filter.component-B-KxKtY4.mjs.map +0 -1
  329. package/fesm2022/acorex-platform-common-largetext-widget-edit.component-DD7S5j12.mjs.map +0 -1
  330. package/fesm2022/acorex-platform-common-lookup-widget-edit.component-D50jPeKP.mjs.map +0 -1
  331. package/fesm2022/acorex-platform-common-lookup-widget-filter.component-CZHDDnR3.mjs.map +0 -1
  332. package/fesm2022/acorex-platform-common-lookup-widget-view.component-CQCvJxgi.mjs.map +0 -1
  333. package/fesm2022/acorex-platform-common-map-widget-edit.component-OanYRQ3B.mjs.map +0 -1
  334. package/fesm2022/acorex-platform-common-map-widget-view.component-BWdndMYJ.mjs.map +0 -1
  335. package/fesm2022/acorex-platform-common-messenger-widget-column.component-BHP6R3OI.mjs.map +0 -1
  336. package/fesm2022/acorex-platform-common-messenger-widget-edit.component-B7ycb6tX.mjs.map +0 -1
  337. package/fesm2022/acorex-platform-common-number-widget-edit.component-XSWI6466.mjs.map +0 -1
  338. package/fesm2022/acorex-platform-common-number-widget-filter.component-BOT9wPJ5.mjs.map +0 -1
  339. package/fesm2022/acorex-platform-common-number-widget-view.component-CP5aboLU.mjs.map +0 -1
  340. package/fesm2022/acorex-platform-common-password-widget-edit.component-CHQ_Kp4t.mjs.map +0 -1
  341. package/fesm2022/acorex-platform-common-phone-widget-column.component-RJp6wHul.mjs.map +0 -1
  342. package/fesm2022/acorex-platform-common-rich-text-widget-column.component-Ced0WqvI.mjs.map +0 -1
  343. package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-Do3YcmKg.mjs.map +0 -1
  344. package/fesm2022/acorex-platform-common-rich-text-widget-view.component-BIRyPRtw.mjs.map +0 -1
  345. package/fesm2022/acorex-platform-common-selection-list-widget-column.component-DxeK2RPc.mjs.map +0 -1
  346. package/fesm2022/acorex-platform-common-selection-list-widget-edit.component-CBLEeILz.mjs.map +0 -1
  347. package/fesm2022/acorex-platform-common-selection-list-widget-filter.component-B01t7mso.mjs.map +0 -1
  348. package/fesm2022/acorex-platform-common-selection-list-widget-view.component-QJMp11dd.mjs.map +0 -1
  349. package/fesm2022/acorex-platform-common-signature-pad-widget-view.component-CEhRqgEn.mjs.map +0 -1
  350. package/fesm2022/acorex-platform-common-string-widget-filter.component--L4PeRCB.mjs.map +0 -1
  351. package/fesm2022/acorex-platform-common-text-widget-column.component-ytX4OqZX.mjs.map +0 -1
  352. package/fesm2022/acorex-platform-common-text-widget-edit.component-CN7OyTfJ.mjs.map +0 -1
  353. package/fesm2022/acorex-platform-common-toggle-widget-edit.component-CLWHwf8V.mjs.map +0 -1
  354. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-fZ6QEYcd.mjs +0 -281
  355. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-fZ6QEYcd.mjs.map +0 -1
  356. package/fesm2022/acorex-platform-widgets-button-widget-designer.component-B9bfVuC4.mjs.map +0 -1
  357. package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-tPk6Gylo.mjs.map +0 -1
  358. package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-Bb3aXCNZ.mjs.map +0 -1
  359. package/fesm2022/acorex-platform-widgets-page-widget-designer.component-6BMZ0qRw.mjs +0 -67
  360. package/fesm2022/acorex-platform-widgets-page-widget-designer.component-6BMZ0qRw.mjs.map +0 -1
  361. /package/layout/designer/lib/designer/shared/{designer.typs.d.ts → designer.types.d.ts} +0 -0
@@ -61,7 +61,6 @@ export class AXPWidgetDesignerRendererDirective {
61
61
  }, { allowSignalWrites: true });
62
62
  }
63
63
  async loadComponent() {
64
- //console.log('loadComponent', this.node().type);
65
64
  this.viewContainerRef.clear();
66
65
  this.isLoading.set(true);
67
66
  this.config = this.widgetRegistery.resolve(this.node().type);
@@ -99,7 +98,7 @@ export class AXPWidgetDesignerRendererDirective {
99
98
  this.instance.onReady.pipe(first()).subscribe(() => {
100
99
  const host = this.hostElement();
101
100
  host.classList.add("axp-widget-host");
102
- if (this.mode() == 'designer' && host) {
101
+ if (this.mode() == 'designer') {
103
102
  host.addEventListener('mouseover', (e) => {
104
103
  e.stopPropagation();
105
104
  this.addOverlay();
@@ -221,4 +220,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
221
220
  type: HostListener,
222
221
  args: ['document:keydown', ['$event']]
223
222
  }] } });
224
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWRlc2lnbmVyLXJlbmRlcmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyL3NyYy9saWIvZGVzaWduZXIvc2hhcmVkL3dpZGdldC1kZXNpZ25lci1yZW5kZXJlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxnQkFBZ0IsRUFLaEIsd0JBQXdCLEdBRXpCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBQ04sWUFBWSxFQUNaLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sZ0JBQWdCLEdBRWpCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFXeEQsTUFBTSxPQUFPLGtDQUFrQztJQXlCN0M7O09BRUc7SUFDSDtRQTNCVSxrQkFBYSxHQUF3QixNQUFNLENBQU0sRUFBRSxDQUFDLENBQUM7UUFFdkQsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxQixvQkFBZSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ25ELGlCQUFZLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RDLFNBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdEIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENB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USxFQUFFLENBQUM7Z0JBQzFCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUN6QyxDQUFDO1lBQ0QsRUFBRTtZQUNGLGdCQUFnQjtZQUNoQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLFdBQVcsSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUM5RCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUN2QyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7OEdBek5VLGtDQUFrQztrR0FBbEMsa0NBQWtDLHlvQkFObEM7WUFDVDtnQkFDRSxPQUFPLEVBQUUsY0FBYzthQUN4QjtTQUNGOzsyRkFFVSxrQ0FBa0M7a0JBVDlDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdDQUFnQztvQkFDMUMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsY0FBYzt5QkFDeEI7cUJBQ0Y7aUJBQ0Y7d0RBNE1PLGdCQUFnQjtzQkFEckIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYVW5zdWJzY3JpYmVyIH0gZnJvbSAnQGFjb3JleC9jb3JlL3V0aWxzJztcbmltcG9ydCB7XG4gIEFYUF9XSURHRVRfVE9LRU4sXG4gIEFYUFdpZGdldENvbXBvbmVudCxcbiAgQVhQV2lkZ2V0Q29uZmlnLFxuICBBWFBXaWRnZXROb2RlLFxuICBBWFBXaWRnZXROb2RlVG9rZW4sXG4gIEFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZSxcbiAgQVhQV2lkZ2V0UmVuZGVyTW9kZSxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIGVmZmVjdCxcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIEluamVjdG9yLFxuICBpbnB1dCxcbiAgTmdab25lLFxuICBzaWduYWwsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIFdyaXRhYmxlU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgZ2V0LCBtZXJnZSwgc2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBEZXNpZ25lclNlcnZpY2UgfSBmcm9tICcuL2Rlc2lnbmVyLnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYXhwLXdpZGdldC1kZXNpZ25lci1yZW5kZXJlcl0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFVuc3Vic2NyaWJlcixcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBXaWRnZXREZXNpZ25lclJlbmRlcmVyRGlyZWN0aXZlIHtcbiAgcHJvdGVjdGVkIG1lcmdlZE9wdGlvbnM6IFdyaXRhYmxlU2lnbmFsPGFueT4gPSBzaWduYWw8YW55Pih7fSk7XG5cbiAgcHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHByb3RlY3RlZCB3aWRnZXRSZWdpc3RlcnkgPSBpbmplY3QoQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHVuc3Vic2NyaWJlciA9IGluamVjdChBWFVuc3Vic2NyaWJlcik7XG4gIHByb3RlY3RlZCB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgcHJvdGVjdGVkIGlzTG9hZGluZyA9IHNpZ25hbCh0cnVlKTtcbiAgcHJpdmF0ZSBpbnN0YW5jZSE6IEFYUFdpZGdldENvbXBvbmVudDtcbiAgcHJpdmF0ZSBjb25maWc/OiBBWFBXaWRnZXRDb25maWcgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBzZXJ2aWNlID0gaW5qZWN0KEFYUERlc2lnbmVyU2VydmljZSk7XG4gIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcblxuICBwYXJlbnROb2RlID0gaW5wdXQ8QVhQV2lkZ2V0Q29tcG9uZW50IHwgbnVsbD4oKTtcblxuICBpbmRleCA9IGlucHV0PG51bWJlciB8IG51bGw+KCk7XG5cbiAgbW9kZSA9IGlucHV0LnJlcXVpcmVkPEFYUFdpZGdldFJlbmRlck1vZGU+KCk7XG4gIG5vZGUgPSBpbnB1dC5yZXF1aXJlZDxBWFBXaWRnZXROb2RlPigpO1xuXG4gIHByaXZhdGUgaG9zdEVsZW1lbnQgPSAoKSA9PiB0aGlzLmluc3RhbmNlPy5ob3N0IGFzIEhUTUxEaXZFbGVtZW50O1xuICBwcml2YXRlIGlzQ3VycmVudFdpZGdldCA9ICh3OiBBWFBXaWRnZXROb2RlKSA9PiBnZXQodywgJ19fbWV0YV9fLmlkJykgPT0gZ2V0KHRoaXMubm9kZSgpLCAnX19tZXRhX18uaWQnKTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zZXJ2aWNlLm9uVXBkYXRlLnBpcGUodGhpcy51bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc0N1cnJlbnRXaWRnZXQoYy53aWRnZXQpKSB7XG4gICAgICAgIHRoaXMuYXBwbHlPcHRpb25zKGMudmFsdWVzPy5vcHRpb25zKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvL1xuICAgIHRoaXMuc2VydmljZS5vblNlbGVjdGVkLnBpcGUodGhpcy51bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc0N1cnJlbnRXaWRnZXQoYy53aWRnZXQpKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3QoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudW5zZWxlY3QoKVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICAvL1xuICAgIHRoaXMuc2VydmljZS5vbkZvY3VzZWQucGlwZSh0aGlzLnVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgIGlmIChjLndpZGdldCAmJiB0aGlzLmlzQ3VycmVudFdpZGdldChjLndpZGdldCkpIHtcbiAgICAgICAgdGhpcy5hZGRPdmVybGF5KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbW92ZU92ZXJsYXkoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvL1xuICAgIHRoaXMuc2VydmljZS5vblJlZnJlc2gucGlwZSh0aGlzLnVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzQ3VycmVudFdpZGdldChjLndpZGdldCkpIHtcbiAgICAgICAgdGhpcy5pbnN0YW5jZT8uc2V0Q2hpbGRyZW4odGhpcy5ub2RlKCkuY2hpbGRyZW4gPz8gW10pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIC8vXG4gICAgZWZmZWN0KFxuICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRDb21wb25lbnQoKTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICB9XG5cblxuICBwcml2YXRlIGFzeW5jIGxvYWRDb21wb25lbnQoKSB7XG4gICAgLy9jb25zb2xlLmxvZygnbG9hZENvbXBvbmVudCcsIHRoaXMubm9kZSgpLnR5cGUpO1xuICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmNvbmZpZyA9IHRoaXMud2lkZ2V0UmVnaXN0ZXJ5LnJlc29sdmUodGhpcy5ub2RlKCkudHlwZSk7XG4gICAgLy9cbiAgICBjb25zdCBwcm9wcyA9IHRoaXMuY29uZmlnPy5jb21wb25lbnRzW3RoaXMubW9kZSgpXT8ucHJvcGVydGllc1xuICAgICAgPy5maWx0ZXIoKGMpID0+IGMuc2NoZW1hLmRlZmF1bHRWYWx1ZSlcbiAgICAgIC5tYXAoKGMpID0+ICh7IFtjLm5hbWVdOiBjLnNjaGVtYS5kZWZhdWx0VmFsdWUgfSkpXG4gICAgICAucmVkdWNlKChhY2MsIGN1cnIpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgLi4uYWNjLCAuLi5jdXJyIH07XG4gICAgICB9LCB7fSk7XG4gICAgLy9cbiAgICB0aGlzLm1lcmdlZE9wdGlvbnMuc2V0KG1lcmdlKHByb3BzLCB0aGlzLm5vZGUoKS5vcHRpb25zKSB8fCB7fSk7XG4gICAgdGhpcy5wcmVwcm9jZXNzQW5kSW5pdGlhbE9wdGlvbnMoY2xvbmVEZWVwKHRoaXMubm9kZSgpLm9wdGlvbnMpKTtcblxuICAgIGNvbnN0IHRva2VuVmFsdWUgPSB7XG4gICAgICBub2RlOiB0aGlzLm5vZGUoKSxcbiAgICAgIG9wdGlvbnM6IHRoaXMubWVyZ2VkT3B0aW9ucygpLFxuICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogdGhpcy5ub2RlKCkuZGVmYXVsdFZhbHVlLFxuICAgIH0gYXMgQVhQV2lkZ2V0Tm9kZVRva2VuO1xuXG4gICAgY29uc3QgdG9rZW4gPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBBWFBfV0lER0VUX1RPS0VOLFxuICAgICAgICAgIHVzZVZhbHVlOiB0b2tlblZhbHVlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgICB2YXIgY29tID0gYXdhaXQgdGhpcy5jb25maWc/LmNvbXBvbmVudHNbdGhpcy5tb2RlKCldPy5jb21wb25lbnQoKTtcbiAgICB0aGlzLmluc3RhbmNlID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudDxBWFBXaWRnZXRDb21wb25lbnQ8YW55Pj4oY29tLCB7IGluamVjdG9yOiB0b2tlbiB9KS5pbnN0YW5jZTtcbiAgICB0aGlzLmluc3RhbmNlLnBhcmVudCA9IHRoaXMucGFyZW50Tm9kZSgpO1xuICAgIHRoaXMuaW5zdGFuY2UuaW5kZXggPSB0aGlzLmluZGV4KCk7XG4gICAgdGhpcy5pbnN0YW5jZS5tb2RlID0gdGhpcy5tb2RlKCk7XG4gICAgLy9cbiAgICB0aGlzLmluc3RhbmNlLm9uUmVhZHkucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgaG9zdCA9IHRoaXMuaG9zdEVsZW1lbnQoKTtcbiAgICAgIGhvc3QuY2xhc3NMaXN0LmFkZChcImF4cC13aWRnZXQtaG9zdFwiKTtcbiAgICAgIGlmICh0aGlzLm1vZGUoKSA9PSAnZGVzaWduZXInICYmIGhvc3QpIHtcbiAgICAgICAgaG9zdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCAoZSkgPT4ge1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgdGhpcy5hZGRPdmVybGF5KCk7XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLmZvY3VzKHsgd2lkZ2V0OiB0aGlzLm5vZGUoKSB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGhvc3QuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIChlKSA9PiB7XG4gICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB0aGlzLnJlbW92ZU92ZXJsYXkoKTtcbiAgICAgICAgICB0aGlzLnNlcnZpY2UuZm9jdXMoeyB3aWRnZXQ6IG51bGwgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGhvc3QuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgdGhpcy5zZWxlY3QoKTtcbiAgICAgICAgICB0aGlzLnNlcnZpY2Uuc2VsZWN0KHsgd2lkZ2V0OiB0aGlzLm5vZGUoKSB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2VydmljZS5yZWdpc3Rlcih7XG4gICAgICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZyEsXG4gICAgICAgICAgaWQ6IGdldCh0aGlzLm5vZGUoKSwgJ19fbWV0YV9fLmlkJykgYXMgYW55IGFzIG51bWJlcixcbiAgICAgICAgICBpbnN0YW5jZTogdGhpcy5pbnN0YW5jZSxcbiAgICAgICAgICB3aWRnZXQ6IHRoaXMubm9kZSgpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb3ZlcmxheTogSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gIHByaXZhdGUgc2VsZWN0KCkge1xuICAgIHRoaXMuaG9zdEVsZW1lbnQoKT8uY2xhc3NMaXN0LmFkZCgnYXhwLXN0YXRlLXNlbGVjdGVkJyk7XG4gICAgdGhpcy5ob3N0RWxlbWVudCgpPy5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICduZWFyZXN0JyB9KTtcbiAgfVxuXG4gIHVuc2VsZWN0KCkge1xuICAgIHRoaXMuaG9zdEVsZW1lbnQoKT8uY2xhc3NMaXN0LnJlbW92ZSgnYXhwLXN0YXRlLXNlbGVjdGVkJyk7XG4gIH1cblxuICBwcml2YXRlIGFkZE92ZXJsYXkoKSB7XG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmhvc3RFbGVtZW50KCkpIHtcbiAgICAgICAgdGhpcy5ob3N0RWxlbWVudCgpPy5jbGFzc0xpc3QuYWRkKCdheHAtc3RhdGUtaG92ZXInKTtcbiAgICAgICAgLy9cbiAgICAgICAgaWYgKHRoaXMuaG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yKCcuYXhwLXdpZGdldC1vdmVybGF5JykgfHwgdGhpcy5jb25maWc/LnR5cGUgPT0gJ2NvbnRhaW5lcicpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5vdmVybGF5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHRoaXMub3ZlcmxheS5jbGFzc0xpc3QuYWRkKCdheHAtd2lkZ2V0LW92ZXJsYXknKTtcbiAgICAgICAgdGhpcy5vdmVybGF5LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB0aGlzLnNlcnZpY2Uuc2VsZWN0KHsgd2lkZ2V0OiB0aGlzLm5vZGUoKSB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub3ZlcmxheS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgKGUpID0+IHtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB0aGlzLnNlcnZpY2UuZm9jdXMoeyB3aWRnZXQ6IG51bGwgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmhvc3RFbGVtZW50KCkuYXBwZW5kQ2hpbGQodGhpcy5vdmVybGF5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlT3ZlcmxheSgpIHtcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaG9zdEVsZW1lbnQoKSkge1xuICAgICAgICB0aGlzLmhvc3RFbGVtZW50KCk/LmNsYXNzTGlzdC5yZW1vdmUoJ2F4cC1zdGF0ZS1ob3ZlcicpO1xuICAgICAgICAvL1xuICAgICAgICB0aGlzLm92ZXJsYXk/LnJlbW92ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJlcHJvY2Vzc0FuZEluaXRpYWxPcHRpb25zKG9iajogYW55LCBwYXRoUHJlZml4OiBzdHJpbmcgPSAnJyk6IHZvaWQge1xuICAgIGlmICghb2JqKSByZXR1cm47XG4gICAgT2JqZWN0LmVudHJpZXMob2JqKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRQYXRoID0gcGF0aFByZWZpeCA/IGAke3BhdGhQcmVmaXh9LiR7a2V5fWAgOiBrZXk7XG4gICAgICB0aGlzLm1lcmdlZE9wdGlvbnMudXBkYXRlKChjdXJyZW50T3B0aW9ucykgPT4ge1xuICAgICAgICByZXR1cm4gc2V0KGN1cnJlbnRPcHRpb25zLCBjdXJyZW50UGF0aCwgdmFsdWUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5T3B0aW9ucyh2YWx1ZXM6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmluc3RhbmNlICYmIHRoaXMubm9kZSgpLmRlZmF1bHRWYWx1ZSAhPSBudWxsKSB7XG4gICAgICB0aGlzLmluc3RhbmNlLnNldFZhbHVlKHRoaXMubm9kZSgpLmRlZmF1bHRWYWx1ZSk7XG4gICAgfVxuICAgIHRoaXMubWVyZ2VkT3B0aW9ucy51cGRhdGUoKGN1cnJlbnRPcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gbWVyZ2UoY3VycmVudE9wdGlvbnMsIHZhbHVlcyk7XG4gICAgfSk7XG4gICAgdGhpcy5pbnN0YW5jZT8uc2V0T3B0aW9ucyh0aGlzLm1lcmdlZE9wdGlvbnMoKSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcbiAgYXN5bmMgb25LZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICh0aGlzLnNlcnZpY2Uuc2VsZWN0ZWROb2RlKCkgJiYgdGhpcy5pc0N1cnJlbnRXaWRnZXQodGhpcy5zZXJ2aWNlLnNlbGVjdGVkTm9kZSgpISkgJiYgZXZlbnQudGFyZ2V0ID09IGRvY3VtZW50LmJvZHkpIHtcbiAgICAgIC8vIGhhbmRsZSBkZWxldGVcbiAgICAgIGlmIChldmVudC5rZXkgPT0gXCJEZWxldGVcIikge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLnJlbW92ZVdpZGdldCh0aGlzLm5vZGUoKSk7XG4gICAgICB9XG4gICAgICAvL1xuICAgICAgLy8gaGFuZGxlIGRlbGV0ZVxuICAgICAgaWYgKHRoaXMuY29uZmlnPy50eXBlID09ICdjb250YWluZXInICYmIGV2ZW50LmtleSA9PSBcIkluc2VydFwiKSB7XG4gICAgICAgIHRoaXMuc2VydmljZS5zaG93UGlja2VyKHRoaXMubm9kZSgpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWRlc2lnbmVyLXJlbmRlcmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyL3NyYy9saWIvZGVzaWduZXIvc2hhcmVkL3dpZGdldC1kZXNpZ25lci1yZW5kZXJlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxnQkFBZ0IsRUFLaEIsd0JBQXdCLEdBRXpCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBQ04sWUFBWSxFQUNaLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sZ0JBQWdCLEdBRWpCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFXeEQsTUFBTSxPQUFPLGtDQUFrQztJQXlCN0M7O09BRUc7SUFDSDtRQTNCVSxrQkFBYSxHQUF3QixNQUFNLENBQU0sRUFBRSxDQUFDLENBQUM7UUFFdkQsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxQixvQkFBZSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ25ELGlCQUFZLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RDLFNBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdEIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUkzQixZQUFPLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDckMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFcEQsZUFBVSxHQUFHLEtBQUssRUFBNkIsQ0FBQztRQUVoRCxVQUFLLEdBQUcsS0FBSyxFQUFpQixDQUFDO1FBRS9CLFNBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUF1QixDQUFDO1FBQzdDLFNBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFpQixDQUFDO1FBRS9CLGdCQUFXLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFzQixDQUFDO1FBQzFELG9CQUFlLEdBQUcsQ0FBQyxDQUFnQixFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFNdkcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUM3RSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN2QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFO1FBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUMvRSxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtnQkFDL0IsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO29CQUNuQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7Z0JBQ2YsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQTtnQkFDakIsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFO1FBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUM5RSxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsRUFBRTtRQUNGLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDOUUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3pELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUU7UUFDRixNQUFNLENBQ0osS0FBSyxJQUFJLEVBQUU7WUFDVCxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM3QixDQUFDLEVBQ0QsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FDNUIsQ0FBQztJQUNKLENBQUM7SUFHTyxLQUFLLENBQUMsYUFBYTtRQUN6QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0QsRUFBRTtRQUNGLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLFVBQVU7WUFDNUQsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO2FBQ3JDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQzthQUNqRCxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDcEIsT0FBTyxFQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDN0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1QsRUFBRTtRQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFakUsTUFBTSxVQUFVLEdBQUc7WUFDakIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDakIsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDN0IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsWUFBWTtTQUNqQixDQUFDO1FBRXhCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDNUIsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3JCLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsZ0JBQWdCO29CQUN6QixRQUFRLEVBQUUsVUFBVTtpQkFDckI7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUNILElBQUksR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDbEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUEwQixHQUFHLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDbEgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakMsRUFBRTtRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDakQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDdEMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDdkMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzlDLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDeEMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ3ZDLENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDbkMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDL0MsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7b0JBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTztvQkFDcEIsRUFBRSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsYUFBYSxDQUFrQjtvQkFDcEQsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUN2QixNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtpQkFDcEIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUlPLE1BQU07UUFDWixJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxjQUFjLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU8sVUFBVTtRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUMvQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUNyRCxFQUFFO2dCQUNGLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLFdBQVcsRUFBRSxDQUFDO29CQUNoRyxPQUFNO2dCQUNSLENBQUM7Z0JBQUEsQ0FBQztnQkFDRixJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUMzQyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ25CLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDL0MsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDaEQsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUNuQixDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ3ZDLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQy9DLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQy9CLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQ3hELEVBQUU7Z0JBQ0YsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN6QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsMkJBQTJCLENBQUMsR0FBUSxFQUFFLGFBQXFCLEVBQUU7UUFDM0QsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPO1FBQ2pCLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUMzQyxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDOUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRTtnQkFDM0MsT0FBTyxHQUFHLENBQUMsY0FBYyxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNqRCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFlBQVksQ0FBQyxNQUFXO1FBQzlCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsWUFBWSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3RELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRTtZQUMzQyxPQUFPLEtBQUssQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBR0QsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEtBQW9CO1FBQ3pDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN2SCxnQkFBZ0I7WUFDaEIsSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUMxQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDekMsQ0FBQztZQUNELEVBQUU7WUFDRixnQkFBZ0I7WUFDaEIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxXQUFXLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDdkMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOzhHQXhOVSxrQ0FBa0M7a0dBQWxDLGtDQUFrQyx5b0JBTmxDO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGNBQWM7YUFDeEI7U0FDRjs7MkZBRVUsa0NBQWtDO2tCQVQ5QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQ0FBZ0M7b0JBQzFDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGNBQWM7eUJBQ3hCO3FCQUNGO2lCQUNGO3dEQTJNTyxnQkFBZ0I7c0JBRHJCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFVuc3Vic2NyaWJlciB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQge1xuICBBWFBfV0lER0VUX1RPS0VOLFxuICBBWFBXaWRnZXRDb21wb25lbnQsXG4gIEFYUFdpZGdldENvbmZpZyxcbiAgQVhQV2lkZ2V0Tm9kZSxcbiAgQVhQV2lkZ2V0Tm9kZVRva2VuLFxuICBBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UsXG4gIEFYUFdpZGdldFJlbmRlck1vZGUsXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBlZmZlY3QsXG4gIEhvc3RMaXN0ZW5lcixcbiAgaW5qZWN0LFxuICBJbmplY3RvcixcbiAgaW5wdXQsXG4gIE5nWm9uZSxcbiAgc2lnbmFsLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBXcml0YWJsZVNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGdldCwgbWVyZ2UsIHNldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhQRGVzaWduZXJTZXJ2aWNlIH0gZnJvbSAnLi9kZXNpZ25lci5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2F4cC13aWRnZXQtZGVzaWduZXItcmVuZGVyZXJdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhVbnN1YnNjcmliZXIsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0RGVzaWduZXJSZW5kZXJlckRpcmVjdGl2ZSB7XG4gIHByb3RlY3RlZCBtZXJnZWRPcHRpb25zOiBXcml0YWJsZVNpZ25hbDxhbnk+ID0gc2lnbmFsPGFueT4oe30pO1xuXG4gIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcm90ZWN0ZWQgd2lkZ2V0UmVnaXN0ZXJ5ID0gaW5qZWN0KEFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZSk7XG4gIHByb3RlY3RlZCB1bnN1YnNjcmliZXIgPSBpbmplY3QoQVhVbnN1YnNjcmliZXIpO1xuICBwcm90ZWN0ZWQgem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gIHByb3RlY3RlZCBpc0xvYWRpbmcgPSBzaWduYWwodHJ1ZSk7XG4gIHByaXZhdGUgaW5zdGFuY2UhOiBBWFBXaWRnZXRDb21wb25lbnQ7XG4gIHByaXZhdGUgY29uZmlnPzogQVhQV2lkZ2V0Q29uZmlnIHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgc2VydmljZSA9IGluamVjdChBWFBEZXNpZ25lclNlcnZpY2UpO1xuICBwcml2YXRlIHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cbiAgcGFyZW50Tm9kZSA9IGlucHV0PEFYUFdpZGdldENvbXBvbmVudCB8IG51bGw+KCk7XG5cbiAgaW5kZXggPSBpbnB1dDxudW1iZXIgfCBudWxsPigpO1xuXG4gIG1vZGUgPSBpbnB1dC5yZXF1aXJlZDxBWFBXaWRnZXRSZW5kZXJNb2RlPigpO1xuICBub2RlID0gaW5wdXQucmVxdWlyZWQ8QVhQV2lkZ2V0Tm9kZT4oKTtcblxuICBwcml2YXRlIGhvc3RFbGVtZW50ID0gKCkgPT4gdGhpcy5pbnN0YW5jZT8uaG9zdCBhcyBIVE1MRGl2RWxlbWVudDtcbiAgcHJpdmF0ZSBpc0N1cnJlbnRXaWRnZXQgPSAodzogQVhQV2lkZ2V0Tm9kZSkgPT4gZ2V0KHcsICdfX21ldGFfXy5pZCcpID09IGdldCh0aGlzLm5vZGUoKSwgJ19fbWV0YV9fLmlkJyk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2VydmljZS5vblVwZGF0ZS5waXBlKHRoaXMudW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNDdXJyZW50V2lkZ2V0KGMud2lkZ2V0KSkge1xuICAgICAgICB0aGlzLmFwcGx5T3B0aW9ucyhjLnZhbHVlcz8ub3B0aW9ucyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy9cbiAgICB0aGlzLnNlcnZpY2Uub25TZWxlY3RlZC5waXBlKHRoaXMudW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNDdXJyZW50V2lkZ2V0KGMud2lkZ2V0KSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0KClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnVuc2VsZWN0KClcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgLy9cbiAgICB0aGlzLnNlcnZpY2Uub25Gb2N1c2VkLnBpcGUodGhpcy51bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICBpZiAoYy53aWRnZXQgJiYgdGhpcy5pc0N1cnJlbnRXaWRnZXQoYy53aWRnZXQpKSB7XG4gICAgICAgIHRoaXMuYWRkT3ZlcmxheSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW1vdmVPdmVybGF5KCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy9cbiAgICB0aGlzLnNlcnZpY2Uub25SZWZyZXNoLnBpcGUodGhpcy51bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc0N1cnJlbnRXaWRnZXQoYy53aWRnZXQpKSB7XG4gICAgICAgIHRoaXMuaW5zdGFuY2U/LnNldENoaWxkcmVuKHRoaXMubm9kZSgpLmNoaWxkcmVuID8/IFtdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvL1xuICAgIGVmZmVjdChcbiAgICAgIGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5sb2FkQ29tcG9uZW50KCk7XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkQ29tcG9uZW50KCkge1xuICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmNvbmZpZyA9IHRoaXMud2lkZ2V0UmVnaXN0ZXJ5LnJlc29sdmUodGhpcy5ub2RlKCkudHlwZSk7XG4gICAgLy9cbiAgICBjb25zdCBwcm9wcyA9IHRoaXMuY29uZmlnPy5jb21wb25lbnRzW3RoaXMubW9kZSgpXT8ucHJvcGVydGllc1xuICAgICAgPy5maWx0ZXIoKGMpID0+IGMuc2NoZW1hLmRlZmF1bHRWYWx1ZSlcbiAgICAgIC5tYXAoKGMpID0+ICh7IFtjLm5hbWVdOiBjLnNjaGVtYS5kZWZhdWx0VmFsdWUgfSkpXG4gICAgICAucmVkdWNlKChhY2MsIGN1cnIpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgLi4uYWNjLCAuLi5jdXJyIH07XG4gICAgICB9LCB7fSk7XG4gICAgLy9cbiAgICB0aGlzLm1lcmdlZE9wdGlvbnMuc2V0KG1lcmdlKHByb3BzLCB0aGlzLm5vZGUoKS5vcHRpb25zKSB8fCB7fSk7XG4gICAgdGhpcy5wcmVwcm9jZXNzQW5kSW5pdGlhbE9wdGlvbnMoY2xvbmVEZWVwKHRoaXMubm9kZSgpLm9wdGlvbnMpKTtcblxuICAgIGNvbnN0IHRva2VuVmFsdWUgPSB7XG4gICAgICBub2RlOiB0aGlzLm5vZGUoKSxcbiAgICAgIG9wdGlvbnM6IHRoaXMubWVyZ2VkT3B0aW9ucygpLFxuICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogdGhpcy5ub2RlKCkuZGVmYXVsdFZhbHVlLFxuICAgIH0gYXMgQVhQV2lkZ2V0Tm9kZVRva2VuO1xuXG4gICAgY29uc3QgdG9rZW4gPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBBWFBfV0lER0VUX1RPS0VOLFxuICAgICAgICAgIHVzZVZhbHVlOiB0b2tlblZhbHVlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgICB2YXIgY29tID0gYXdhaXQgdGhpcy5jb25maWc/LmNvbXBvbmVudHNbdGhpcy5tb2RlKCldPy5jb21wb25lbnQoKTtcbiAgICB0aGlzLmluc3RhbmNlID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudDxBWFBXaWRnZXRDb21wb25lbnQ8YW55Pj4oY29tLCB7IGluamVjdG9yOiB0b2tlbiB9KS5pbnN0YW5jZTtcbiAgICB0aGlzLmluc3RhbmNlLnBhcmVudCA9IHRoaXMucGFyZW50Tm9kZSgpO1xuICAgIHRoaXMuaW5zdGFuY2UuaW5kZXggPSB0aGlzLmluZGV4KCk7XG4gICAgdGhpcy5pbnN0YW5jZS5tb2RlID0gdGhpcy5tb2RlKCk7XG4gICAgLy9cbiAgICB0aGlzLmluc3RhbmNlLm9uUmVhZHkucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgaG9zdCA9IHRoaXMuaG9zdEVsZW1lbnQoKTtcbiAgICAgIGhvc3QuY2xhc3NMaXN0LmFkZChcImF4cC13aWRnZXQtaG9zdFwiKTtcbiAgICAgIGlmICh0aGlzLm1vZGUoKSA9PSAnZGVzaWduZXInKSB7XG4gICAgICAgIGhvc3QuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgKGUpID0+IHtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRoaXMuYWRkT3ZlcmxheSgpO1xuICAgICAgICAgIHRoaXMuc2VydmljZS5mb2N1cyh7IHdpZGdldDogdGhpcy5ub2RlKCkgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBob3N0LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCAoZSkgPT4ge1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgdGhpcy5yZW1vdmVPdmVybGF5KCk7XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLmZvY3VzKHsgd2lkZ2V0OiBudWxsIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBob3N0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRoaXMuc2VsZWN0KCk7XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLnNlbGVjdCh7IHdpZGdldDogdGhpcy5ub2RlKCkgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNlcnZpY2UucmVnaXN0ZXIoe1xuICAgICAgICAgIGNvbmZpZzogdGhpcy5jb25maWchLFxuICAgICAgICAgIGlkOiBnZXQodGhpcy5ub2RlKCksICdfX21ldGFfXy5pZCcpIGFzIGFueSBhcyBudW1iZXIsXG4gICAgICAgICAgaW5zdGFuY2U6IHRoaXMuaW5zdGFuY2UsXG4gICAgICAgICAgd2lkZ2V0OiB0aGlzLm5vZGUoKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG92ZXJsYXk6IEhUTUxFbGVtZW50IHwgbnVsbDtcblxuICBwcml2YXRlIHNlbGVjdCgpIHtcbiAgICB0aGlzLmhvc3RFbGVtZW50KCk/LmNsYXNzTGlzdC5hZGQoJ2F4cC1zdGF0ZS1zZWxlY3RlZCcpO1xuICAgIHRoaXMuaG9zdEVsZW1lbnQoKT8uc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnbmVhcmVzdCcgfSk7XG4gIH1cblxuICB1bnNlbGVjdCgpIHtcbiAgICB0aGlzLmhvc3RFbGVtZW50KCk/LmNsYXNzTGlzdC5yZW1vdmUoJ2F4cC1zdGF0ZS1zZWxlY3RlZCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRPdmVybGF5KCkge1xuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5ob3N0RWxlbWVudCgpKSB7XG4gICAgICAgIHRoaXMuaG9zdEVsZW1lbnQoKT8uY2xhc3NMaXN0LmFkZCgnYXhwLXN0YXRlLWhvdmVyJyk7XG4gICAgICAgIC8vXG4gICAgICAgIGlmICh0aGlzLmhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvcignLmF4cC13aWRnZXQtb3ZlcmxheScpIHx8IHRoaXMuY29uZmlnPy50eXBlID09ICdjb250YWluZXInKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMub3ZlcmxheSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB0aGlzLm92ZXJsYXkuY2xhc3NMaXN0LmFkZCgnYXhwLXdpZGdldC1vdmVybGF5Jyk7XG4gICAgICAgIHRoaXMub3ZlcmxheS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLnNlbGVjdCh7IHdpZGdldDogdGhpcy5ub2RlKCkgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm92ZXJsYXkuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIChlKSA9PiB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLmZvY3VzKHsgd2lkZ2V0OiBudWxsIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5ob3N0RWxlbWVudCgpLmFwcGVuZENoaWxkKHRoaXMub3ZlcmxheSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZU92ZXJsYXkoKSB7XG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmhvc3RFbGVtZW50KCkpIHtcbiAgICAgICAgdGhpcy5ob3N0RWxlbWVudCgpPy5jbGFzc0xpc3QucmVtb3ZlKCdheHAtc3RhdGUtaG92ZXInKTtcbiAgICAgICAgLy9cbiAgICAgICAgdGhpcy5vdmVybGF5Py5yZW1vdmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByZXByb2Nlc3NBbmRJbml0aWFsT3B0aW9ucyhvYmo6IGFueSwgcGF0aFByZWZpeDogc3RyaW5nID0gJycpOiB2b2lkIHtcbiAgICBpZiAoIW9iaikgcmV0dXJuO1xuICAgIE9iamVjdC5lbnRyaWVzKG9iaikuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50UGF0aCA9IHBhdGhQcmVmaXggPyBgJHtwYXRoUHJlZml4fS4ke2tleX1gIDoga2V5O1xuICAgICAgdGhpcy5tZXJnZWRPcHRpb25zLnVwZGF0ZSgoY3VycmVudE9wdGlvbnMpID0+IHtcbiAgICAgICAgcmV0dXJuIHNldChjdXJyZW50T3B0aW9ucywgY3VycmVudFBhdGgsIHZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseU9wdGlvbnModmFsdWVzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnN0YW5jZSAmJiB0aGlzLm5vZGUoKS5kZWZhdWx0VmFsdWUgIT0gbnVsbCkge1xuICAgICAgdGhpcy5pbnN0YW5jZS5zZXRWYWx1ZSh0aGlzLm5vZGUoKS5kZWZhdWx0VmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLm1lcmdlZE9wdGlvbnMudXBkYXRlKChjdXJyZW50T3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIG1lcmdlKGN1cnJlbnRPcHRpb25zLCB2YWx1ZXMpO1xuICAgIH0pO1xuICAgIHRoaXMuaW5zdGFuY2U/LnNldE9wdGlvbnModGhpcy5tZXJnZWRPcHRpb25zKCkpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIGFzeW5jIG9uS2V5ZG93bkhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAodGhpcy5zZXJ2aWNlLnNlbGVjdGVkTm9kZSgpICYmIHRoaXMuaXNDdXJyZW50V2lkZ2V0KHRoaXMuc2VydmljZS5zZWxlY3RlZE5vZGUoKSEpICYmIGV2ZW50LnRhcmdldCA9PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgICAvLyBoYW5kbGUgZGVsZXRlXG4gICAgICBpZiAoZXZlbnQua2V5ID09IFwiRGVsZXRlXCIpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuc2VydmljZS5yZW1vdmVXaWRnZXQodGhpcy5ub2RlKCkpO1xuICAgICAgfVxuICAgICAgLy9cbiAgICAgIC8vIGhhbmRsZSBkZWxldGVcbiAgICAgIGlmICh0aGlzLmNvbmZpZz8udHlwZSA9PSAnY29udGFpbmVyJyAmJiBldmVudC5rZXkgPT0gXCJJbnNlcnRcIikge1xuICAgICAgICB0aGlzLnNlcnZpY2Uuc2hvd1BpY2tlcih0aGlzLm5vZGUoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -107,12 +107,12 @@ export class AXPWidgetPropertyViewerComponent {
107
107
  return this.connector.getDataSourcesNames();
108
108
  }
109
109
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPWidgetPropertyViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
110
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPWidgetPropertyViewerComponent, isStandalone: true, selector: "axp-widget-property-viewer", inputs: { widget: { classPropertyName: "widget", publicName: "widget", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onChanged: "onChanged" }, ngImport: i0, template: "<axp-widgets-container [context]=\"context()\" (onChanged)=\"handleContextChange($event)\" [functions]=\"functions\">\n <div class=\"ax-flex ax-flex-col\">\n <div class=\"ax-pb-2\">\n <ax-tabs look=\"default\" (onActiveTabChanged)=\"handleTabChange($event)\" [look]=\"'with-line'\">\n @for( tab of tabs();track $index){\n <ax-tab-item [text]=\"tab.title\" [key]=\"$index.toString()\" [active]=\"currentTabIndex() === $index\">\n </ax-tab-item>\n }\n </ax-tabs>\n </div>\n <div class=\"ax-flex-1 ax-overflow-auto\">\n <ax-collapse-group class=\"ax-h-fit\" look=\"blank\">\n @for( group of groups();track $index){\n <ax-collapse [caption]=\"group.title\" look=\"solid\" [(isCollapsed)]=\"group.isCollapsed\"\n (isCollapsedChange)=\"handleCollapsedChange(group.name,$event)\">\n <div class=\"ax-flex ax-flex-col ax-divide-y\">\n @for( p of group.props;track $index){\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-py-2 first:ax-pt-0 last:ax-pb-0\">\n <span class=\"ax-font-semibold\">{{p.title}}</span>\n @if(p.schema.interface)\n {\n <axp-widget-renderer [node]=\"p.schema.interface\" [mode]=\"'edit'\">\n </axp-widget-renderer>\n }\n </div>\n }\n </div>\n </ax-collapse>\n }\n </ax-collapse-group>\n </div>\n </div>\n</axp-widgets-container>", styles: ["ax-collapse .ax-collapse-header{font-weight:600}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXCollapseModule }, { kind: "component", type: i1.AXCollapseComponent, selector: "ax-collapse", inputs: ["disabled", "look", "isCollapsed", "showHeader", "caption", "icon", "isLoading", "headerTemplate"], outputs: ["onClick", "isCollapsedChange"] }, { kind: "component", type: i1.AXCollapseGroupComponent, selector: "ax-collapse-group", inputs: ["look", "accordion", "activeIndex"], outputs: ["accordionChange", "activeIndexChange"] }, { kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i2.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i2.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: i3.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "variables", "functions"], outputs: ["onChanged", "contextChange"] }, { kind: "component", type: i3.AXPWidgetRendererComponent, selector: "axp-widget-renderer", inputs: ["node", "mode", "parentNode", "index"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
110
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPWidgetPropertyViewerComponent, isStandalone: true, selector: "axp-widget-property-viewer", inputs: { widget: { classPropertyName: "widget", publicName: "widget", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onChanged: "onChanged" }, ngImport: i0, template: "<axp-widgets-container [context]=\"context()\" (onChanged)=\"handleContextChange($event)\" [functions]=\"functions\">\n <div class=\"ax-flex ax-flex-col\">\n <div class=\"ax-pb-2\">\n <ax-tabs look=\"default\" (onActiveTabChanged)=\"handleTabChange($event)\" [look]=\"'with-line'\">\n @for( tab of tabs();track $index){\n <ax-tab-item [text]=\"tab.title\" [key]=\"$index.toString()\" [active]=\"currentTabIndex() === $index\">\n </ax-tab-item>\n }\n </ax-tabs>\n </div>\n <div class=\"ax-flex-1 ax-overflow-auto\">\n <ax-collapse-group class=\"ax-h-fit\" look=\"blank\">\n @for( group of groups();track $index){\n <ax-collapse [caption]=\"group.title\" look=\"solid\" [(isCollapsed)]=\"group.isCollapsed\"\n (isCollapsedChange)=\"handleCollapsedChange(group.name,$event)\">\n <div class=\"ax-flex ax-flex-col ax-divide-y\">\n @for( p of group.props;track $index){\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-py-2 first:ax-pt-0 last:ax-pb-0\">\n <span class=\"ax-font-semibold\">{{p.title}}</span>\n @if(p.schema.interface)\n {\n <ng-container axp-widget-renderer [node]=\"p.schema.interface\" [mode]=\"'edit'\">\n </ng-container>\n }\n </div>\n }\n </div>\n </ax-collapse>\n }\n </ax-collapse-group>\n </div>\n </div>\n</axp-widgets-container>", styles: ["ax-collapse .ax-collapse-header{font-weight:600}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXCollapseModule }, { kind: "component", type: i1.AXCollapseComponent, selector: "ax-collapse", inputs: ["disabled", "look", "isCollapsed", "showHeader", "caption", "icon", "isLoading", "headerTemplate"], outputs: ["onClick", "isCollapsedChange"] }, { kind: "component", type: i1.AXCollapseGroupComponent, selector: "ax-collapse-group", inputs: ["look", "accordion", "activeIndex"], outputs: ["accordionChange", "activeIndexChange"] }, { kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i2.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i2.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: i3.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "variables", "functions"], outputs: ["onChanged", "contextChange"] }, { kind: "directive", type: i3.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
111
111
  }
112
112
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPWidgetPropertyViewerComponent, decorators: [{
113
113
  type: Component,
114
- args: [{ selector: 'axp-widget-property-viewer', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, AXCollapseModule, AXTabsModule, AXPLayoutBuilderModule], template: "<axp-widgets-container [context]=\"context()\" (onChanged)=\"handleContextChange($event)\" [functions]=\"functions\">\n <div class=\"ax-flex ax-flex-col\">\n <div class=\"ax-pb-2\">\n <ax-tabs look=\"default\" (onActiveTabChanged)=\"handleTabChange($event)\" [look]=\"'with-line'\">\n @for( tab of tabs();track $index){\n <ax-tab-item [text]=\"tab.title\" [key]=\"$index.toString()\" [active]=\"currentTabIndex() === $index\">\n </ax-tab-item>\n }\n </ax-tabs>\n </div>\n <div class=\"ax-flex-1 ax-overflow-auto\">\n <ax-collapse-group class=\"ax-h-fit\" look=\"blank\">\n @for( group of groups();track $index){\n <ax-collapse [caption]=\"group.title\" look=\"solid\" [(isCollapsed)]=\"group.isCollapsed\"\n (isCollapsedChange)=\"handleCollapsedChange(group.name,$event)\">\n <div class=\"ax-flex ax-flex-col ax-divide-y\">\n @for( p of group.props;track $index){\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-py-2 first:ax-pt-0 last:ax-pb-0\">\n <span class=\"ax-font-semibold\">{{p.title}}</span>\n @if(p.schema.interface)\n {\n <axp-widget-renderer [node]=\"p.schema.interface\" [mode]=\"'edit'\">\n </axp-widget-renderer>\n }\n </div>\n }\n </div>\n </ax-collapse>\n }\n </ax-collapse-group>\n </div>\n </div>\n</axp-widgets-container>", styles: ["ax-collapse .ax-collapse-header{font-weight:600}\n"] }]
114
+ args: [{ selector: 'axp-widget-property-viewer', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, AXCollapseModule, AXTabsModule, AXPLayoutBuilderModule], template: "<axp-widgets-container [context]=\"context()\" (onChanged)=\"handleContextChange($event)\" [functions]=\"functions\">\n <div class=\"ax-flex ax-flex-col\">\n <div class=\"ax-pb-2\">\n <ax-tabs look=\"default\" (onActiveTabChanged)=\"handleTabChange($event)\" [look]=\"'with-line'\">\n @for( tab of tabs();track $index){\n <ax-tab-item [text]=\"tab.title\" [key]=\"$index.toString()\" [active]=\"currentTabIndex() === $index\">\n </ax-tab-item>\n }\n </ax-tabs>\n </div>\n <div class=\"ax-flex-1 ax-overflow-auto\">\n <ax-collapse-group class=\"ax-h-fit\" look=\"blank\">\n @for( group of groups();track $index){\n <ax-collapse [caption]=\"group.title\" look=\"solid\" [(isCollapsed)]=\"group.isCollapsed\"\n (isCollapsedChange)=\"handleCollapsedChange(group.name,$event)\">\n <div class=\"ax-flex ax-flex-col ax-divide-y\">\n @for( p of group.props;track $index){\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-py-2 first:ax-pt-0 last:ax-pb-0\">\n <span class=\"ax-font-semibold\">{{p.title}}</span>\n @if(p.schema.interface)\n {\n <ng-container axp-widget-renderer [node]=\"p.schema.interface\" [mode]=\"'edit'\">\n </ng-container>\n }\n </div>\n }\n </div>\n </ax-collapse>\n }\n </ax-collapse-group>\n </div>\n </div>\n</axp-widgets-container>", styles: ["ax-collapse .ax-collapse-header{font-weight:600}\n"] }]
115
115
  }], ctorParameters: () => [], propDecorators: { onChanged: [{
116
116
  type: Output
117
117
  }] } });
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXByb3BlcnR5LXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL3Byb3BlcnR5LXZpZXdlci93aWRnZXQtcHJvcGVydHktdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyL3NyYy9saWIvcHJvcGVydHktdmlld2VyL3dpZGdldC1wcm9wZXJ0eS12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFL0QsT0FBTyxFQUFFLFlBQVksRUFBMEIsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQTRFLHdCQUF3QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0ssT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDN0osT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7QUEyQjNELE1BQU0sT0FBTyxnQ0FBZ0M7SUE4QjNDO1FBN0JBLFdBQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFpQixDQUFDO1FBRWpDLDBCQUFxQixHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBRXZELGNBQVMsR0FBRyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUVqRCxvQkFBZSxHQUEyQixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFcEQsV0FBTSxHQUFHLE1BQU0sQ0FBeUIsSUFBSSxDQUFDLENBQUM7UUFDOUMsaUJBQVksR0FBd0IsRUFBRSxDQUFDO1FBRXZDLFNBQUksR0FBRyxNQUFNLENBQXlCLEVBQUUsQ0FBQyxDQUFDO1FBRTFDLFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQy9CLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzlFLENBQUMsQ0FBQyxDQUFDO1FBRU8seUJBQW9CLEdBQXlCLElBQUksR0FBRyxFQUFFLENBQUM7UUFJakUsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFtQyxDQUFDO1FBRXRELFlBQU8sR0FBRyxNQUFNLENBQU0sRUFBRSxDQUFDLENBQUM7UUFHMUIsbUJBQWMsR0FBUSxFQUFFLENBQUM7UUFvR3pCLGNBQVMsR0FBRztZQUNwQixrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUN2RCxDQUFBO1FBbEdDLE1BQU0sQ0FDSixHQUFHLEVBQUU7WUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDaEIsT0FBTTtZQUNSLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3ZFLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDekQsQ0FBQztRQUNILENBQUMsRUFDRCxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUM1QixDQUFDO0lBQ0osQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFXO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU8sUUFBUTtRQUNkLE1BQU0sSUFBSSxHQUEyQjtZQUNuQztnQkFDRSxJQUFJLEVBQUUsU0FBUztnQkFDZixLQUFLLEVBQUUsU0FBUztnQkFDaEIsTUFBTSxFQUFFLEVBQUU7YUFDWDtTQUNGLENBQUM7UUFDRixNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDNUQsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO2dCQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2pFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILEdBQUc7UUFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixHQUFHO1FBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ25CLE1BQU0sS0FBSyxHQUNULEdBQUcsQ0FBQyxJQUFJLElBQUksU0FBUztnQkFDbkIsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxVQUFVLElBQUksRUFBRTtnQkFDakMsQ0FBQyxDQUFDLENBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsVUFBa0IsQ0FBQSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxVQUFrQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3pILEVBQUU7WUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUNsQixNQUFNLENBQ0osS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDakIsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUMzRCxJQUFJLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJO2dCQUNuQixLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLO2dCQUNyQixLQUFLLEVBQUUsTUFBTSxDQUNYLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQ2xELE9BQU8sQ0FDUjthQUNGLENBQUMsQ0FBQyxFQUNILE9BQU8sQ0FDUixFQUNELE1BQU0sQ0FDUCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDbkQsRUFBRTtRQUNGLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVk7YUFDcEMsTUFBTSxDQUNMLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDSixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUM1STthQUNBLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNqQixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3pELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1QsRUFBRTtRQUNGLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUyxtQkFBbUIsQ0FBQyxDQUF3QjtRQUNwRCxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3BGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLGVBQWUsQ0FBQyxLQUE2QjtRQUNyRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0lBRVMscUJBQXFCLENBQUMsS0FBYSxFQUFFLFNBQWtCO1FBQy9ELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFNTyxrQkFBa0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDOUMsQ0FBQzs4R0FySVUsZ0NBQWdDO2tHQUFoQyxnQ0FBZ0MsaVFDbkM3Qyx1dERBZ0N3QiwyR0RDWixZQUFZLDhCQUFFLGdCQUFnQiw4YkFBRSxZQUFZLGthQUFFLHNCQUFzQjs7MkZBRW5FLGdDQUFnQztrQkFSNUMsU0FBUzsrQkFDRSw0QkFBNEIsbUJBR3JCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxzQkFBc0IsQ0FBQzt3REF3Qi9FLFNBQVM7c0JBRFIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29sbGFwc2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29sbGFwc2UnO1xuaW1wb3J0IHsgY29udmVydEFycmF5VG9EYXRhU291cmNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQgeyBBWFRhYnNNb2R1bGUsIEFYVGFiU3RyaXBDaGFuZ2VkRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdGFicyc7XG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyTW9kdWxlLCBBWFBMYXlvdXRDb250ZXh0RXZlbnQsIEFYUFdpZGdldENvbmZpZywgQVhQV2lkZ2V0Tm9kZSwgQVhQV2lkZ2V0UHJvcGVydHksIEFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIGlucHV0LCBPdXRwdXQsIHNpZ25hbCwgdW50cmFja2VkLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZSwgY2xvbmVEZWVwLCBpc0FycmF5LCBpc0VtcHR5LCBpc05pbCwgbWVyZ2UsIHNldCwgc29ydEJ5LCB1bmlvbkJ5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYUERlc2lnbmVyQ29ubmVjdG9yQWJzdHJhY3QgfSBmcm9tICcuLi9kZXNpZ25lcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0UHJvcGVydHlUYWIge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGdyb3Vwczoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGlzQ29sbGFwc2VkOiBib29sZWFuO1xuICAgIHByb3BzOiBBWFBXaWRnZXRQcm9wZXJ0eVtdO1xuICB9W107XG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXRQcm9wZXJ0aWVzQ2hhbmdlZEV2ZW50IHtcbiAgdmFsdWVzOiBhbnksXG4gIG1vZGU6ICdpbml0JyB8ICd1cGRhdGUnXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC13aWRnZXQtcHJvcGVydHktdmlld2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldC1wcm9wZXJ0eS12aWV3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93aWRnZXQtcHJvcGVydHktdmlld2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBWENvbGxhcHNlTW9kdWxlLCBBWFRhYnNNb2R1bGUsIEFYUExheW91dEJ1aWxkZXJNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBXaWRnZXRQcm9wZXJ0eVZpZXdlckNvbXBvbmVudCB7XG4gIHdpZGdldCA9IGlucHV0LnJlcXVpcmVkPEFYUFdpZGdldE5vZGU+KCk7XG5cbiAgcHJpdmF0ZSB3aWRnZXRSZWdpc3RyeVNlcnZpY2UgPSBpbmplY3QoQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgY29ubmVjdG9yID0gaW5qZWN0KEFYUERlc2lnbmVyQ29ubmVjdG9yQWJzdHJhY3QpO1xuXG4gIHByb3RlY3RlZCBjdXJyZW50VGFiSW5kZXg6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj4gPSBzaWduYWwoMCk7XG5cbiAgcHJvdGVjdGVkIGNvbmZpZyA9IHNpZ25hbDxBWFBXaWRnZXRDb25maWcgfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIGFsbFBvcGVydGllczogQVhQV2lkZ2V0UHJvcGVydHlbXSA9IFtdO1xuXG4gIHByb3RlY3RlZCB0YWJzID0gc2lnbmFsPEFYUFdpZGdldFByb3BlcnR5VGFiW10+KFtdKTtcblxuICBwcm90ZWN0ZWQgZ3JvdXBzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnRhYnMoKS5sZW5ndGggPyB0aGlzLnRhYnMoKVt0aGlzLmN1cnJlbnRUYWJJbmRleCgpXS5ncm91cHMgOiBbXTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGdyb3VwQ29sbGFwc2VkU3RhdGVzOiBNYXA8c3RyaW5nLCBib29sZWFuPiA9IG5ldyBNYXAoKTtcblxuXG4gIEBPdXRwdXQoKVxuICBvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEFYUFdpZGdldFByb3BlcnRpZXNDaGFuZ2VkRXZlbnQ+KCk7XG5cbiAgcHJvdGVjdGVkIGNvbnRleHQgPSBzaWduYWw8YW55Pih7fSk7XG5cblxuICBwcm90ZWN0ZWQgaW5pdGlhbENvbnRleHQ6IGFueSA9IHt9O1xuXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMud2lkZ2V0KCkpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMud2lkZ2V0UmVnaXN0cnlTZXJ2aWNlLnJlc29sdmUodGhpcy53aWRnZXQoKT8udHlwZSk7XG4gICAgICAgIGlmIChjb25maWcpIHtcbiAgICAgICAgICB0aGlzLmluaXRpYWxDb250ZXh0ID0ge307XG4gICAgICAgICAgdGhpcy5jb25maWcuc2V0KGNvbmZpZyk7XG4gICAgICAgICAgdGhpcy5maWxsVGFicygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEludmFsaWQgd2lkZ2V0IG5hbWU6ICR7dGhpcy53aWRnZXQoKX1gKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlKHZhbHVlczogYW55KSB7XG4gICAgdGhpcy5jb250ZXh0LnNldChtZXJnZShjbG9uZURlZXAodGhpcy5jb250ZXh0KCkpLCB2YWx1ZXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsbFRhYnMoKSB7XG4gICAgY29uc3QgdGFiczogQVhQV2lkZ2V0UHJvcGVydHlUYWJbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2dlbmVyYWwnLFxuICAgICAgICB0aXRsZTogJ0dlbmVyYWwnLFxuICAgICAgICBncm91cHM6IFtdLFxuICAgICAgfSxcbiAgICBdO1xuICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuY29uZmlnKCk/LmNvbXBvbmVudHMgPz8ge30pLmZvckVhY2goKGMpID0+IHtcbiAgICAgIGlmIChjWzFdLmNvbXBvbmVudCAhPSBudWxsICYmIGNbMV0ucHJvcGVydGllcz8ubGVuZ3RoKSB7XG4gICAgICAgIHRhYnMucHVzaCh7IG5hbWU6IGNbMF0sIHRpdGxlOiBjYXBpdGFsaXplKGNbMF0pLCBncm91cHM6IFtdIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIC8vL1xuICAgIHRoaXMuYWxsUG9wZXJ0aWVzID0gW107XG4gICAgLy8vXG4gICAgdGFicy5mb3JFYWNoKCh0YWIpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzID1cbiAgICAgICAgdGFiLm5hbWUgPT0gJ2dlbmVyYWwnXG4gICAgICAgICAgPyB0aGlzLmNvbmZpZygpPy5wcm9wZXJ0aWVzID8/IFtdXG4gICAgICAgICAgOiAoKCh0aGlzLmNvbmZpZygpPy5jb21wb25lbnRzIGFzIGFueSlbdGFiLm5hbWVdPy5wcm9wZXJ0aWVzIGFzIEFYUFdpZGdldFByb3BlcnR5W10pID8/IFtdKS5maWx0ZXIoKGMpID0+IGMudmlzaWJsZSk7XG4gICAgICAvL1xuICAgICAgdGhpcy5hbGxQb3BlcnRpZXMucHVzaCguLi5wcm9wcyk7XG4gICAgICB0YWIuZ3JvdXBzID0gdW5pb25CeShcbiAgICAgICAgc29ydEJ5KFxuICAgICAgICAgIHByb3BzLm1hcCgocGcpID0+ICh7XG4gICAgICAgICAgICBpc0NvbGxhcHNlZDogISF0aGlzLmdyb3VwQ29sbGFwc2VkU3RhdGVzLmdldChwZy5ncm91cC5uYW1lKSxcbiAgICAgICAgICAgIG5hbWU6IHBnLmdyb3VwLm5hbWUsXG4gICAgICAgICAgICB0aXRsZTogcGcuZ3JvdXAudGl0bGUsXG4gICAgICAgICAgICBwcm9wczogc29ydEJ5KFxuICAgICAgICAgICAgICBwcm9wcy5maWx0ZXIoKHApID0+IHAuZ3JvdXAubmFtZSA9PSBwZy5ncm91cC5uYW1lKSxcbiAgICAgICAgICAgICAgJ3RpdGxlJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9KSksXG4gICAgICAgICAgJ3RpdGxlJ1xuICAgICAgICApLFxuICAgICAgICAnbmFtZSdcbiAgICAgICk7XG4gICAgfSk7XG4gICAgdGhpcy50YWJzLnNldCh0YWJzLmZpbHRlcigoYykgPT4gYy5ncm91cHMubGVuZ3RoKSk7XG4gICAgLy9cbiAgICB0aGlzLmluaXRpYWxDb250ZXh0ID0gdGhpcy5hbGxQb3BlcnRpZXNcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChjKSA9PlxuICAgICAgICAgICghaXNBcnJheShjLnNjaGVtYS5kZWZhdWx0VmFsdWUpICYmICFpc05pbChjLnNjaGVtYS5kZWZhdWx0VmFsdWUpKSB8fCAoaXNBcnJheShjLnNjaGVtYS5kZWZhdWx0VmFsdWUpICYmICFpc0VtcHR5KGMuc2NoZW1hLmRlZmF1bHRWYWx1ZSkpXG4gICAgICApXG4gICAgICAucmVkdWNlKChhY2MsIGMpID0+IHtcbiAgICAgICAgc2V0KGFjYywgYy5zY2hlbWEuaW50ZXJmYWNlLnBhdGgsIGMuc2NoZW1hLmRlZmF1bHRWYWx1ZSk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCB7fSk7XG4gICAgLy9cbiAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgdGhpcy5jb250ZXh0LnNldChtZXJnZShjbG9uZURlZXAodGhpcy5pbml0aWFsQ29udGV4dCksIHRoaXMud2lkZ2V0KCkpKTtcbiAgICAgIHRoaXMub25DaGFuZ2VkLmVtaXQoeyB2YWx1ZXM6IHRoaXMuY29udGV4dCgpLCBtb2RlOiAnaW5pdCcgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlQ29udGV4dENoYW5nZShlOiBBWFBMYXlvdXRDb250ZXh0RXZlbnQpIHtcbiAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgdGhpcy5jb250ZXh0LnNldChlLmRhdGEpO1xuICAgICAgdGhpcy5vbkNoYW5nZWQuZW1pdCh7IHZhbHVlczogdGhpcy5jb250ZXh0KCksIG1vZGU6IGUuaW5pdCA/ICdpbml0JyA6ICd1cGRhdGUnIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVRhYkNoYW5nZShldmVudDogQVhUYWJTdHJpcENoYW5nZWRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGluZHggPSBldmVudC5pbmRleDtcbiAgICBpZiAodGhpcy5jdXJyZW50VGFiSW5kZXgoKSAhPSBpbmR4KSB7XG4gICAgICB0aGlzLmN1cnJlbnRUYWJJbmRleC5zZXQoaW5keCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUNvbGxhcHNlZENoYW5nZShncm91cDogc3RyaW5nLCBjb2xsYXBzZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmdyb3VwQ29sbGFwc2VkU3RhdGVzLnNldChncm91cCwgY29sbGFwc2VkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBmdW5jdGlvbnMgPSB7XG4gICAgZ2V0RGF0YVNvdXJjZU5hbWVzOiB0aGlzLmdldERhdGFTb3VyY2VOYW1lcy5iaW5kKHRoaXMpXG4gIH1cblxuICBwcml2YXRlIGdldERhdGFTb3VyY2VOYW1lcygpIHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuZ2V0RGF0YVNvdXJjZXNOYW1lcygpO1xuICB9XG59XG4iLCI8YXhwLXdpZGdldHMtY29udGFpbmVyIFtjb250ZXh0XT1cImNvbnRleHQoKVwiIChvbkNoYW5nZWQpPVwiaGFuZGxlQ29udGV4dENoYW5nZSgkZXZlbnQpXCIgW2Z1bmN0aW9uc109XCJmdW5jdGlvbnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtcGItMlwiPlxuICAgICAgICAgICAgPGF4LXRhYnMgbG9vaz1cImRlZmF1bHRcIiAob25BY3RpdmVUYWJDaGFuZ2VkKT1cImhhbmRsZVRhYkNoYW5nZSgkZXZlbnQpXCIgW2xvb2tdPVwiJ3dpdGgtbGluZSdcIj5cbiAgICAgICAgICAgICAgICBAZm9yKCB0YWIgb2YgdGFicygpO3RyYWNrICRpbmRleCl7XG4gICAgICAgICAgICAgICAgPGF4LXRhYi1pdGVtIFt0ZXh0XT1cInRhYi50aXRsZVwiIFtrZXldPVwiJGluZGV4LnRvU3RyaW5nKClcIiBbYWN0aXZlXT1cImN1cnJlbnRUYWJJbmRleCgpID09PSAkaW5kZXhcIj5cbiAgICAgICAgICAgICAgICA8L2F4LXRhYi1pdGVtPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYXgtdGFicz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4LTEgYXgtb3ZlcmZsb3ctYXV0b1wiPlxuICAgICAgICAgICAgPGF4LWNvbGxhcHNlLWdyb3VwIGNsYXNzPVwiYXgtaC1maXRcIiBsb29rPVwiYmxhbmtcIj5cbiAgICAgICAgICAgICAgICBAZm9yKCBncm91cCBvZiBncm91cHMoKTt0cmFjayAkaW5kZXgpe1xuICAgICAgICAgICAgICAgIDxheC1jb2xsYXBzZSBbY2FwdGlvbl09XCJncm91cC50aXRsZVwiIGxvb2s9XCJzb2xpZFwiIFsoaXNDb2xsYXBzZWQpXT1cImdyb3VwLmlzQ29sbGFwc2VkXCJcbiAgICAgICAgICAgICAgICAgICAgKGlzQ29sbGFwc2VkQ2hhbmdlKT1cImhhbmRsZUNvbGxhcHNlZENoYW5nZShncm91cC5uYW1lLCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZGl2aWRlLXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IoIHAgb2YgZ3JvdXAucHJvcHM7dHJhY2sgJGluZGV4KXtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC0xIGF4LXB5LTIgZmlyc3Q6YXgtcHQtMCBsYXN0OmF4LXBiLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LWZvbnQtc2VtaWJvbGRcIj57e3AudGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYocC5zY2hlbWEuaW50ZXJmYWNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXhwLXdpZGdldC1yZW5kZXJlciBbbm9kZV09XCJwLnNjaGVtYS5pbnRlcmZhY2VcIiBbbW9kZV09XCInZWRpdCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F4cC13aWRnZXQtcmVuZGVyZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYXgtY29sbGFwc2U+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9heC1jb2xsYXBzZS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2F4cC13aWRnZXRzLWNvbnRhaW5lcj4iXX0=
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXByb3BlcnR5LXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL3Byb3BlcnR5LXZpZXdlci93aWRnZXQtcHJvcGVydHktdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyL3NyYy9saWIvcHJvcGVydHktdmlld2VyL3dpZGdldC1wcm9wZXJ0eS12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFL0QsT0FBTyxFQUFFLFlBQVksRUFBMEIsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQTRFLHdCQUF3QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0ssT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDN0osT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7QUEyQjNELE1BQU0sT0FBTyxnQ0FBZ0M7SUE4QjNDO1FBN0JBLFdBQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFp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QUFFLFlBQVksRUFBRSxzQkFBc0IsQ0FBQzt3REF3Qi9FLFNBQVM7c0JBRFIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29sbGFwc2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29sbGFwc2UnO1xuaW1wb3J0IHsgY29udmVydEFycmF5VG9EYXRhU291cmNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQgeyBBWFRhYnNNb2R1bGUsIEFYVGFiU3RyaXBDaGFuZ2VkRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdGFicyc7XG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyTW9kdWxlLCBBWFBMYXlvdXRDb250ZXh0RXZlbnQsIEFYUFdpZGdldENvbmZpZywgQVhQV2lkZ2V0Tm9kZSwgQVhQV2lkZ2V0UHJvcGVydHksIEFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIGlucHV0LCBPdXRwdXQsIHNpZ25hbCwgdW50cmFja2VkLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZSwgY2xvbmVEZWVwLCBpc0FycmF5LCBpc0VtcHR5LCBpc05pbCwgbWVyZ2UsIHNldCwgc29ydEJ5LCB1bmlvbkJ5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYUERlc2lnbmVyQ29ubmVjdG9yQWJzdHJhY3QgfSBmcm9tICcuLi9kZXNpZ25lcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0UHJvcGVydHlUYWIge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGdyb3Vwczoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGlzQ29sbGFwc2VkOiBib29sZWFuO1xuICAgIHByb3BzOiBBWFBXaWRnZXRQcm9wZXJ0eVtdO1xuICB9W107XG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXRQcm9wZXJ0aWVzQ2hhbmdlZEV2ZW50IHtcbiAgdmFsdWVzOiBhbnksXG4gIG1vZGU6ICdpbml0JyB8ICd1cGRhdGUnXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC13aWRnZXQtcHJvcGVydHktdmlld2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldC1wcm9wZXJ0eS12aWV3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93aWRnZXQtcHJvcGVydHktdmlld2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBWENvbGxhcHNlTW9kdWxlLCBBWFRhYnNNb2R1bGUsIEFYUExheW91dEJ1aWxkZXJNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBXaWRnZXRQcm9wZXJ0eVZpZXdlckNvbXBvbmVudCB7XG4gIHdpZGdldCA9IGlucHV0LnJlcXVpcmVkPEFYUFdpZGdldE5vZGU+KCk7XG5cbiAgcHJpdmF0ZSB3aWRnZXRSZWdpc3RyeVNlcnZpY2UgPSBpbmplY3QoQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgY29ubmVjdG9yID0gaW5qZWN0KEFYUERlc2lnbmVyQ29ubmVjdG9yQWJzdHJhY3QpO1xuXG4gIHByb3RlY3RlZCBjdXJyZW50VGFiSW5kZXg6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj4gPSBzaWduYWwoMCk7XG5cbiAgcHJvdGVjdGVkIGNvbmZpZyA9IHNpZ25hbDxBWFBXaWRnZXRDb25maWcgfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIGFsbFBvcGVydGllczogQVhQV2lkZ2V0UHJvcGVydHlbXSA9IFtdO1xuXG4gIHByb3RlY3RlZCB0YWJzID0gc2lnbmFsPEFYUFdpZGdldFByb3BlcnR5VGFiW10+KFtdKTtcblxuICBwcm90ZWN0ZWQgZ3JvdXBzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnRhYnMoKS5sZW5ndGggPyB0aGlzLnRhYnMoKVt0aGlzLmN1cnJlbnRUYWJJbmRleCgpXS5ncm91cHMgOiBbXTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGdyb3VwQ29sbGFwc2VkU3RhdGVzOiBNYXA8c3RyaW5nLCBib29sZWFuPiA9IG5ldyBNYXAoKTtcblxuXG4gIEBPdXRwdXQoKVxuICBvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEFYUFdpZGdldFByb3BlcnRpZXNDaGFuZ2VkRXZlbnQ+KCk7XG5cbiAgcHJvdGVjdGVkIGNvbnRleHQgPSBzaWduYWw8YW55Pih7fSk7XG5cblxuICBwcm90ZWN0ZWQgaW5pdGlhbENvbnRleHQ6IGFueSA9IHt9O1xuXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMud2lkZ2V0KCkpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMud2lkZ2V0UmVnaXN0cnlTZXJ2aWNlLnJlc29sdmUodGhpcy53aWRnZXQoKT8udHlwZSk7XG4gICAgICAgIGlmIChjb25maWcpIHtcbiAgICAgICAgICB0aGlzLmluaXRpYWxDb250ZXh0ID0ge307XG4gICAgICAgICAgdGhpcy5jb25maWcuc2V0KGNvbmZpZyk7XG4gICAgICAgICAgdGhpcy5maWxsVGFicygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEludmFsaWQgd2lkZ2V0IG5hbWU6ICR7dGhpcy53aWRnZXQoKX1gKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlKHZhbHVlczogYW55KSB7XG4gICAgdGhpcy5jb250ZXh0LnNldChtZXJnZShjbG9uZURlZXAodGhpcy5jb250ZXh0KCkpLCB2YWx1ZXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsbFRhYnMoKSB7XG4gICAgY29uc3QgdGFiczogQVhQV2lkZ2V0UHJvcGVydHlUYWJbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2dlbmVyYWwnLFxuICAgICAgICB0aXRsZTogJ0dlbmVyYWwnLFxuICAgICAgICBncm91cHM6IFtdLFxuICAgICAgfSxcbiAgICBdO1xuICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuY29uZmlnKCk/LmNvbXBvbmVudHMgPz8ge30pLmZvckVhY2goKGMpID0+IHtcbiAgICAgIGlmIChjWzFdLmNvbXBvbmVudCAhPSBudWxsICYmIGNbMV0ucHJvcGVydGllcz8ubGVuZ3RoKSB7XG4gICAgICAgIHRhYnMucHVzaCh7IG5hbWU6IGNbMF0sIHRpdGxlOiBjYXBpdGFsaXplKGNbMF0pLCBncm91cHM6IFtdIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIC8vL1xuICAgIHRoaXMuYWxsUG9wZXJ0aWVzID0gW107XG4gICAgLy8vXG4gICAgdGFicy5mb3JFYWNoKCh0YWIpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzID1cbiAgICAgICAgdGFiLm5hbWUgPT0gJ2dlbmVyYWwnXG4gICAgICAgICAgPyB0aGlzLmNvbmZpZygpPy5wcm9wZXJ0aWVzID8/IFtdXG4gICAgICAgICAgOiAoKCh0aGlzLmNvbmZpZygpPy5jb21wb25lbnRzIGFzIGFueSlbdGFiLm5hbWVdPy5wcm9wZXJ0aWVzIGFzIEFYUFdpZGdldFByb3BlcnR5W10pID8/IFtdKS5maWx0ZXIoKGMpID0+IGMudmlzaWJsZSk7XG4gICAgICAvL1xuICAgICAgdGhpcy5hbGxQb3BlcnRpZXMucHVzaCguLi5wcm9wcyk7XG4gICAgICB0YWIuZ3JvdXBzID0gdW5pb25CeShcbiAgICAgICAgc29ydEJ5KFxuICAgICAgICAgIHByb3BzLm1hcCgocGcpID0+ICh7XG4gICAgICAgICAgICBpc0NvbGxhcHNlZDogISF0aGlzLmdyb3VwQ29sbGFwc2VkU3RhdGVzLmdldChwZy5ncm91cC5uYW1lKSxcbiAgICAgICAgICAgIG5hbWU6IHBnLmdyb3VwLm5hbWUsXG4gICAgICAgICAgICB0aXRsZTogcGcuZ3JvdXAudGl0bGUsXG4gICAgICAgICAgICBwcm9wczogc29ydEJ5KFxuICAgICAgICAgICAgICBwcm9wcy5maWx0ZXIoKHApID0+IHAuZ3JvdXAubmFtZSA9PSBwZy5ncm91cC5uYW1lKSxcbiAgICAgICAgICAgICAgJ3RpdGxlJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9KSksXG4gICAgICAgICAgJ3RpdGxlJ1xuICAgICAgICApLFxuICAgICAgICAnbmFtZSdcbiAgICAgICk7XG4gICAgfSk7XG4gICAgdGhpcy50YWJzLnNldCh0YWJzLmZpbHRlcigoYykgPT4gYy5ncm91cHMubGVuZ3RoKSk7XG4gICAgLy9cbiAgICB0aGlzLmluaXRpYWxDb250ZXh0ID0gdGhpcy5hbGxQb3BlcnRpZXNcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChjKSA9PlxuICAgICAgICAgICghaXNBcnJheShjLnNjaGVtYS5kZWZhdWx0VmFsdWUpICYmICFpc05pbChjLnNjaGVtYS5kZWZhdWx0VmFsdWUpKSB8fCAoaXNBcnJheShjLnNjaGVtYS5kZWZhdWx0VmFsdWUpICYmICFpc0VtcHR5KGMuc2NoZW1hLmRlZmF1bHRWYWx1ZSkpXG4gICAgICApXG4gICAgICAucmVkdWNlKChhY2MsIGMpID0+IHtcbiAgICAgICAgc2V0KGFjYywgYy5zY2hlbWEuaW50ZXJmYWNlLnBhdGgsIGMuc2NoZW1hLmRlZmF1bHRWYWx1ZSk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCB7fSk7XG4gICAgLy9cbiAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgdGhpcy5jb250ZXh0LnNldChtZXJnZShjbG9uZURlZXAodGhpcy5pbml0aWFsQ29udGV4dCksIHRoaXMud2lkZ2V0KCkpKTtcbiAgICAgIHRoaXMub25DaGFuZ2VkLmVtaXQoeyB2YWx1ZXM6IHRoaXMuY29udGV4dCgpLCBtb2RlOiAnaW5pdCcgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlQ29udGV4dENoYW5nZShlOiBBWFBMYXlvdXRDb250ZXh0RXZlbnQpIHtcbiAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgdGhpcy5jb250ZXh0LnNldChlLmRhdGEpO1xuICAgICAgdGhpcy5vbkNoYW5nZWQuZW1pdCh7IHZhbHVlczogdGhpcy5jb250ZXh0KCksIG1vZGU6IGUuaW5pdCA/ICdpbml0JyA6ICd1cGRhdGUnIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVRhYkNoYW5nZShldmVudDogQVhUYWJTdHJpcENoYW5nZWRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGluZHggPSBldmVudC5pbmRleDtcbiAgICBpZiAodGhpcy5jdXJyZW50VGFiSW5kZXgoKSAhPSBpbmR4KSB7XG4gICAgICB0aGlzLmN1cnJlbnRUYWJJbmRleC5zZXQoaW5keCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUNvbGxhcHNlZENoYW5nZShncm91cDogc3RyaW5nLCBjb2xsYXBzZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmdyb3VwQ29sbGFwc2VkU3RhdGVzLnNldChncm91cCwgY29sbGFwc2VkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBmdW5jdGlvbnMgPSB7XG4gICAgZ2V0RGF0YVNvdXJjZU5hbWVzOiB0aGlzLmdldERhdGFTb3VyY2VOYW1lcy5iaW5kKHRoaXMpXG4gIH1cblxuICBwcml2YXRlIGdldERhdGFTb3VyY2VOYW1lcygpIHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0b3IuZ2V0RGF0YVNvdXJjZXNOYW1lcygpO1xuICB9XG59XG4iLCI8YXhwLXdpZGdldHMtY29udGFpbmVyIFtjb250ZXh0XT1cImNvbnRleHQoKVwiIChvbkNoYW5nZWQpPVwiaGFuZGxlQ29udGV4dENoYW5nZSgkZXZlbnQpXCIgW2Z1bmN0aW9uc109XCJmdW5jdGlvbnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtcGItMlwiPlxuICAgICAgICAgICAgPGF4LXRhYnMgbG9vaz1cImRlZmF1bHRcIiAob25BY3RpdmVUYWJDaGFuZ2VkKT1cImhhbmRsZVRhYkNoYW5nZSgkZXZlbnQpXCIgW2xvb2tdPVwiJ3dpdGgtbGluZSdcIj5cbiAgICAgICAgICAgICAgICBAZm9yKCB0YWIgb2YgdGFicygpO3RyYWNrICRpbmRleCl7XG4gICAgICAgICAgICAgICAgPGF4LXRhYi1pdGVtIFt0ZXh0XT1cInRhYi50aXRsZVwiIFtrZXldPVwiJGluZGV4LnRvU3RyaW5nKClcIiBbYWN0aXZlXT1cImN1cnJlbnRUYWJJbmRleCgpID09PSAkaW5kZXhcIj5cbiAgICAgICAgICAgICAgICA8L2F4LXRhYi1pdGVtPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYXgtdGFicz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4LTEgYXgtb3ZlcmZsb3ctYXV0b1wiPlxuICAgICAgICAgICAgPGF4LWNvbGxhcHNlLWdyb3VwIGNsYXNzPVwiYXgtaC1maXRcIiBsb29rPVwiYmxhbmtcIj5cbiAgICAgICAgICAgICAgICBAZm9yKCBncm91cCBvZiBncm91cHMoKTt0cmFjayAkaW5kZXgpe1xuICAgICAgICAgICAgICAgIDxheC1jb2xsYXBzZSBbY2FwdGlvbl09XCJncm91cC50aXRsZVwiIGxvb2s9XCJzb2xpZFwiIFsoaXNDb2xsYXBzZWQpXT1cImdyb3VwLmlzQ29sbGFwc2VkXCJcbiAgICAgICAgICAgICAgICAgICAgKGlzQ29sbGFwc2VkQ2hhbmdlKT1cImhhbmRsZUNvbGxhcHNlZENoYW5nZShncm91cC5uYW1lLCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZGl2aWRlLXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IoIHAgb2YgZ3JvdXAucHJvcHM7dHJhY2sgJGluZGV4KXtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC0xIGF4LXB5LTIgZmlyc3Q6YXgtcHQtMCBsYXN0OmF4LXBiLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LWZvbnQtc2VtaWJvbGRcIj57e3AudGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYocC5zY2hlbWEuaW50ZXJmYWNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGF4cC13aWRnZXQtcmVuZGVyZXIgW25vZGVdPVwicC5zY2hlbWEuaW50ZXJmYWNlXCIgW21vZGVdPVwiJ2VkaXQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYXgtY29sbGFwc2U+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9heC1jb2xsYXBzZS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2F4cC13aWRnZXRzLWNvbnRhaW5lcj4iXX0=
@@ -102,9 +102,8 @@ export class AXPEntityMasterListViewModel {
102
102
  ((a.scope == AXPEntityCommandScope.Selected && this.hasSelectedItems()) ||
103
103
  (a.scope == AXPEntityCommandScope.TypeLevel && !this.hasSelectedItems())));
104
104
  });
105
- this.rowActions = computed(() => {
106
- return this.allActions().filter((a) => a.scope == AXPEntityCommandScope.Individual);
107
- });
105
+ this.primaryRowActions = computed(() => this.allActions().filter((a) => a.scope == AXPEntityCommandScope.Individual && a.priority === 'primary'));
106
+ this.secondaryRowActions = computed(() => this.allActions().filter((a) => a.scope == AXPEntityCommandScope.Individual && a.priority === 'secondary'));
108
107
  //****************** Filter ******************//
109
108
  this.inlineFilters = {
110
109
  field: null,
@@ -318,4 +317,4 @@ export const AXPEntityListViewModelResolver = (route, state, service = inject(AX
318
317
  //
319
318
  return service.create(moduleName, entityName);
320
319
  };
321
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW1hc3Rlci1saXN0LnZpZXdtb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2VudGl0eS9zcmMvbGliL2VudGl0eS1tYXN0ZXItbGlzdC52aWV3bW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBb0QsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUdMLHFCQUFxQixFQUNyQixnQkFBZ0IsR0FFakIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFRM0UsTUFBTSxPQUFPLHFDQUFxQztJQUNoRCxZQUFvQixNQUFpQixFQUFVLE9BQXFDLEVBQVUsSUFBa0I7UUFBNUYsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUFV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QU0sQ0FBQyw2QkFBNkIsQ0FBQyxFQUN2QyxFQUFFO0lBQ3pDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQVcsQ0FBQztJQUM1RCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFXLENBQUM7SUFDbEUsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFXLENBQUM7SUFDMUQsRUFBRTtJQUNGLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDaEQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhEYXRhU291cmNlLCBBWERhdGFTb3VyY2VGaWx0ZXJPcHRpb24sIEFYRGF0YVNvdXJjZVNvcnRPcHRpb24gfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcbmltcG9ydCB7IEFYRm9ybWF0U2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQU2Vzc2lvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHtcbiAgQVhQQmVhcmRDcnVtYixcbiAgQVhQRW50aXR5LFxuICBBWFBFbnRpdHlDb21tYW5kU2NvcGUsXG4gIEFYUExheW91dFNlcnZpY2UsXG4gIEFYUFF1ZXJ5Vmlldyxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3dTZXJ2aWNlLCBvZlR5cGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dvcmtmbG93JztcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBjb21wdXRlZCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJlc29sdmVGbiwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBFbnRpdHlEZWZpbml0aW9uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi9lbnRpdHktcmVnaXN0ZXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQRW50aXR5Q29tbWFuZFRyaWdnZXJWaWV3TW9kZWwsIEFYUEVudGl0eUxpc3RWaWV3Q29sdW1uVmlld01vZGVsIH0gZnJvbSAnLi9lbnRpdHkudmlld21vZGVsJztcbmltcG9ydCB7IEFYUEVudGl0eURlbGV0ZWRFdmVudCB9IGZyb20gJy4vd29ya2Zsb3dzL2RlbGV0ZS1lbnRpdHkud29ya2Zsb3cnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3U29ydFByb3BWaWV3TW9kZWwge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRpcjogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQVhQRW50aXR5TWFzdGVyTGlzdFZpZXdRdWVyeVZpZXdNb2RlbCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZW50aXR5OiBBWFBFbnRpdHksIHByaXZhdGUgc2VjdGlvbjogQVhQRW50aXR5TWFzdGVyTGlzdFZpZXdNb2RlbCwgcHJpdmF0ZSB2aWV3OiBBWFBRdWVyeVZpZXcpIHt9XG5cbiAgbmFtZSA9IHRoaXMudmlldy5uYW1lO1xuICB0aXRsZSA9IHRoaXMudmlldy50aXRsZTtcbiAgc29ydHMgPSB0aGlzLnZpZXcuc29ydHM7XG4gIGNvbHVtbnMgPSB0aGlzLnZpZXcuY29sdW1ucztcbiAgY29uZGl0aW9ucyA9IHRoaXMudmlldy5jb25kaXRpb25zO1xufVxuXG5leHBvcnQgY2xhc3MgQVhQRW50aXR5TWFzdGVyTGlzdFZpZXdNb2RlbCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW50aXR5RGVmID0gY2xvbmVEZWVwKHRoaXMuY29uZmlnKSE7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdEZWYgPSBjbG9uZURlZXAodGhpcy5lbnRpdHlEZWYuaW50ZXJmYWNlcz8ubWFzdGVyPy5saXN0KSE7XG4gIHByaXZhdGUgcmVhZG9ubHkgZm9ybWF0U2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFYRm9ybWF0U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvbiA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFYUFNlc3Npb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSB3b3JrZmxvdyA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFYUFdvcmtmbG93U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuXG4gIHB1YmxpYyBldmVudHMkOiBTdWJqZWN0PHsgYWN0aW9uOiBzdHJpbmcgfT4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIGRhdGFTb3VyY2UgPSBuZXcgQVhEYXRhU291cmNlKHtcbiAgICBieUtleTogKGtleSkgPT4ge1xuICAgICAgY29uc3QgZnVuYyA9IHRoaXMuZW50aXR5RGVmLnF1ZXJpZXMuYnlLZXkuZXhlY3V0ZSBhcyBGdW5jdGlvbjtcbiAgICAgIHJldHVybiBmdW5jKCk7XG4gICAgfSxcbiAgICBsb2FkOiAoZSkgPT4ge1xuICAgICAgY29uc3QgZnVuYyA9IHRoaXMuZW50aXR5RGVmLnF1ZXJpZXMubGlzdD8uZXhlY3V0ZSBhcyBGdW5jdGlvbjtcbiAgICAgIHJldHVybiBmdW5jKGUpO1xuICAgIH0sXG4gICAgcGFnZVNpemU6IDEwLFxuICAgIGtleTogJ2lkJyxcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsIHByaXZhdGUgY29uZmlnOiBBWFBFbnRpdHkpIHtcbiAgICB0aGlzLndvcmtmbG93LmV2ZW50cyRcbiAgICAgIC5waXBlKG9mVHlwZShBWFBFbnRpdHlEZWxldGVkRXZlbnQpKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudC5wYXlsb2FkLmVudGl0eSA9PSB0aGlzLmVudGl0eURlZi5zb3VyY2UpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuc2V0KFtdKTtcbiAgICAgICAgICB0aGlzLmV2ZW50cyQubmV4dCh7IGFjdGlvbjogJ3JlZnJlc2gnIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RlZEl0ZW1zID0gc2lnbmFsPGFueVtdPihbXSk7XG5cbiAgcHVibGljIGhhc1NlbGVjdGVkSXRlbXMgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcygpLmxlbmd0aCA+IDA7XG4gIH0pO1xuXG4gIHB1YmxpYyBjbGVhclNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMuc2V0KFtdKTtcbiAgfVxuXG4gIC8vKioqKioqKioqKioqKioqKioqIFRpdGxlICoqKioqKioqKioqKioqKioqKi8vXG4gIHB1YmxpYyB0aXRsZSA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLl92aWV3RGVmLnRpdGxlID8/IHRoaXMuZW50aXR5RGVmLmZvcm1hdHMucGx1cmFsITtcbiAgfSk7XG4gIC8vKioqKioqKioqKioqKioqKioqIERlc2NyaXB0aW9uICoqKioqKioqKioqKioqKioqKi8vXG4gIHB1YmxpYyBkZXNjcmlwdGlvbiA9IGNvbXB1dGVkPHN0cmluZyB8IG51bGw+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5fdmlld0RlZi5kZXNjcmlwdGlvbiA/PyBudWxsO1xuICB9KTtcblxuICAvLyoqKioqKioqKioqKioqKioqKiBJbmxpbmUgZmlsdGVyICoqKioqKioqKioqKioqKioqKi8vXG4gIHB1YmxpYyBpbmxpbmVGaWx0ZXJzUGxhY2Vob2xkZXJzID0gY29tcHV0ZWQ8c3RyaW5nW10+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5lbnRpdHlEZWYucHJvcGVydGllcy5maWx0ZXIoKHApID0+IHAub3B0aW9ucz8uZmlsdGVyPy5pbmxpbmU/LmVuYWJsZWQpLm1hcCgoYykgPT4gYy50aXRsZSk7XG4gIH0pO1xuXG4gIHB1YmxpYyBoYXNJbmxpbmVGaWx0ZXJzID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmlubGluZUZpbHRlcnNQbGFjZWhvbGRlcnMoKS5sZW5ndGggPiAwO1xuICB9KTtcblxuICAvLyoqKioqKioqKioqKioqKioqKiBCZWFyZGNydW1icyAqKioqKioqKioqKioqKioqKiovL1xuICBwdWJsaWMgYmVhcmRjcnVtYnMgPSBjb21wdXRlZDxBWFBCZWFyZENydW1iW10+KCgpID0+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZVN5bmMoJ2VudGl0eS5ob21lJyksXG4gICAgICAgIGljb246ICdmYS1zb2xpZCBmYS1ob21lIGF4LXRleHQteHMgYXgtbWUtMicsXG4gICAgICAgIHVybDogW2AvJHt0aGlzLnNlc3Npb24uYXBwbGljYXRpb24/Lm5hbWV9YF0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogdGhpcy50aXRsZSgpLFxuICAgICAgICB1cmw6IFtcbiAgICAgICAgICBgLyR7dGhpcy5zZXNzaW9uLmFwcGxpY2F0aW9uPy5uYW1lfWAsXG4gICAgICAgICAgJ20nLFxuICAgICAgICAgIGAke3RoaXMuZW50aXR5RGVmLm1vZHVsZX1gLFxuICAgICAgICAgICdlJyxcbiAgICAgICAgICBgJHt0aGlzLmVudGl0eURlZi5uYW1lfWAsXG4gICAgICAgICAgJ2xpc3QnLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdO1xuICB9KTtcblxuICAvLyoqKioqKioqKioqKioqKioqKiBBY3Rpb25zICoqKioqKioqKioqKioqKioqKi8vXG4gIHByaXZhdGUgYWxsQWN0aW9ucyA9IGNvbXB1dGVkPEFYUEVudGl0eUNvbW1hbmRUcmlnZ2VyVmlld01vZGVsW10+KCgpID0+IHtcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5lbnRpdHlEZWYuaW50ZXJmYWNlcz8ubWFzdGVyPy5saXN0Py5hY3Rpb25zID8/IFtdO1xuICAgIHJldHVybiBsaXN0Lm1hcCgodHIpID0+IG5ldyBBWFBFbnRpdHlDb21tYW5kVHJpZ2dlclZpZXdNb2RlbCh0aGlzLmVudGl0eURlZiwgdHIpKSA/PyBbXTtcbiAgfSk7XG5cbiAgcHVibGljIHByaW1hcnlBY3Rpb25zID0gY29tcHV0ZWQ8QVhQRW50aXR5Q29tbWFuZFRyaWdnZXJWaWV3TW9kZWxbXT4oKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmFsbEFjdGlvbnMoKS5maWx0ZXIoXG4gICAgICAoYSkgPT5cbiAgICAgICAgYS5wcmlvcml0eSA9PSAncHJpbWFyeScgJiZcbiAgICAgICAgKChhLnNjb3BlID09IEFYUEVudGl0eUNvbW1hbmRTY29wZS5TZWxlY3RlZCAmJiB0aGlzLmhhc1NlbGVjdGVkSXRlbXMoKSkgfHxcbiAgICAgICAgICAoYS5zY29wZSA9PSBBWFBFbnRpdHlDb21tYW5kU2NvcGUuVHlwZUxldmVsICYmICF0aGlzLmhhc1NlbGVjdGVkSXRlbXMoKSkpXG4gICAgKTtcbiAgfSk7XG5cbiAgcHVibGljIHNlY29uZGFyeUFjdGlvbnMgPSBjb21wdXRlZDxBWFBFbnRpdHlDb21tYW5kVHJpZ2dlclZpZXdNb2RlbFtdPigoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuYWxsQWN0aW9ucygpLmZpbHRlcihcbiAgICAgIChhKSA9PlxuICAgICAgICBhLnByaW9yaXR5ID09ICdzZWNvbmRhcnknICYmXG4gICAgICAgICgoYS5zY29wZSA9PSBBWFBFbnRpdHlDb21tYW5kU2NvcGUuU2VsZWN0ZWQgJiYgdGhpcy5oYXNTZWxlY3RlZEl0ZW1zKCkpIHx8XG4gICAgICAgICAgKGEuc2NvcGUgPT0gQVhQRW50aXR5Q29tbWFuZFNjb3BlLlR5cGVMZXZlbCAmJiAhdGhpcy5oYXNTZWxlY3RlZEl0ZW1zKCkpKVxuICAgICk7XG4gIH0pO1xuXG4gIHB1YmxpYyByb3dBY3Rpb25zID0gY29tcHV0ZWQ8QVhQRW50aXR5Q29tbWFuZFRyaWdnZXJWaWV3TW9kZWxbXT4oKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmFsbEFjdGlvbnMoKS5maWx0ZXIoKGEpID0+IGEuc2NvcGUgPT0gQVhQRW50aXR5Q29tbWFuZFNjb3BlLkluZGl2aWR1YWwpO1xuICB9KTtcblxuICAvLyoqKioqKioqKioqKioqKioqKiBGaWx0ZXIgKioqKioqKioqKioqKioqKioqLy9cblxuICBwcml2YXRlIGlubGluZUZpbHRlcnM6IEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbiA9IHtcbiAgICBmaWVsZDogbnVsbCBhcyBhbnksXG4gICAgbG9naWM6ICdvcicsXG4gICAgb3BlcmF0b3I6IG51bGwgYXMgYW55LFxuICAgIGZpbHRlcnM6IFtdLFxuICB9O1xuXG4gIHByaXZhdGUgYWR2YW5jZUZpbHRlcnM6IEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbiA9IHtcbiAgICBmaWVsZDogbnVsbCBhcyBhbnksXG4gICAgbG9naWM6ICdhbmQnLFxuICAgIG9wZXJhdG9yOiBudWxsIGFzIGFueSxcbiAgICBmaWx0ZXJzOiBbXSxcbiAgfTtcblxuICBhcHBseUlubGluZUZpbHRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcHJvcHMgPSB0aGlzLmVudGl0eURlZi5wcm9wZXJ0aWVzLmZpbHRlcigoYykgPT4gYy5vcHRpb25zPy5maWx0ZXI/LmlubGluZT8uZW5hYmxlZCk7XG4gICAgdGhpcy5pbmxpbmVGaWx0ZXJzLmZpbHRlcnMgPSBbXTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHByb3BzLmZvckVhY2goKHApID0+IHtcbiAgICAgICAgdGhpcy5pbmxpbmVGaWx0ZXJzLmZpbHRlcnM/LnB1c2goe1xuICAgICAgICAgIGZpZWxkOiBwLm5hbWUsXG4gICAgICAgICAgb3BlcmF0b3I6IHtcbiAgICAgICAgICAgIHR5cGU6ICdjb250YWlucycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5hcHBseUZpbHRlckFuZFNvcnQoKTtcbiAgfVxuXG4gIGFwcGx5RmlsdGVyQW5kU29ydCgpIHtcbiAgICB0aGlzLmRhdGFTb3VyY2UuY2xlYXJGaWx0ZXIoKTtcbiAgICAvL1xuICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0KC4uLnRoaXMuc29ydGVkRmllbGRzKCkubWFwKChzKSA9PiAoeyBkaXI6IHMuZGlyLCBmaWVsZDogcy5uYW1lIH0gYXMgQVhEYXRhU291cmNlU29ydE9wdGlvbikpKTtcbiAgICAvL1xuICAgIHRoaXMuYWR2YW5jZUZpbHRlcnMuZmlsdGVycyA9IHRoaXMudmlldygpLmNvbmRpdGlvbnMubWFwKChmKSA9PiAoe1xuICAgICAgZmllbGQ6IGYubmFtZSxcbiAgICAgIG9wZXJhdG9yOiBmLm9wZXJhdG9yLFxuICAgICAgdmFsdWU6IGYudmFsdWUsXG4gICAgfSkpO1xuXG4gICAgY29uc29sZS5sb2codGhpcy5hZHZhbmNlRmlsdGVycy5maWx0ZXJzKTtcblxuICAgIC8vXG4gICAgY29uc3QgaW5saW5lID0gdGhpcy5pbmxpbmVGaWx0ZXJzLmZpbHRlcnM/Lmxlbmd0aCA/PyAwO1xuICAgIGNvbnN0IGFkdmFuY2UgPSB0aGlzLmFkdmFuY2VGaWx0ZXJzLmZpbHRlcnM/Lmxlbmd0aCA/PyAwO1xuICAgIGlmIChpbmxpbmUgJiYgIWFkdmFuY2UpIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIodGhpcy5pbmxpbmVGaWx0ZXJzKTtcbiAgICB9IGVsc2UgaWYgKCFpbmxpbmUgJiYgYWR2YW5jZSkge1xuICAgICAgdGhpcy5kYXRhU291cmNlLmZpbHRlcih0aGlzLmFkdmFuY2VGaWx0ZXJzKTtcbiAgICB9IGVsc2UgaWYgKGlubGluZSAmJiBhZHZhbmNlKSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZmlsdGVyKHtcbiAgICAgICAgZmllbGQ6IG51bGwgYXMgYW55LFxuICAgICAgICBsb2dpYzogJ2FuZCcsXG4gICAgICAgIG9wZXJhdG9yOiBudWxsIGFzIGFueSxcbiAgICAgICAgZmlsdGVyczogW3RoaXMuaW5saW5lRmlsdGVycywgdGhpcy5hZHZhbmNlRmlsdGVyc10sXG4gICAgICB9KTtcbiAgICB9XG4gICAgLy9cbiAgICB0aGlzLmRhdGFTb3VyY2UucmVmcmVzaCgpO1xuICB9XG5cbiAgLy8qKioqKioqKioqKioqKioqKiogQ29sdW1ucyAqKioqKioqKioqKioqKioqKiovL1xuXG4gIHByaXZhdGUgYWxsQXZhaWxhYmxlQ29sdW1ucyA9ICgpOiBBWFBFbnRpdHlMaXN0Vmlld0NvbHVtblZpZXdNb2RlbFtdID0+IHtcbiAgICBjb25zdCB7IGNvbHVtbnMgPSBbXSwgcHJvcGVydGllcyB9ID0gdGhpcy5lbnRpdHlEZWY7XG4gICAgY29uc3QgdmlzaWJsZVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLmZpbHRlcigoeyBzY2hlbWEgfSkgPT4gIXNjaGVtYT8uaGlkZGVuKTtcbiAgICBjb25zdCB2aXNpYmxlUHJvcE5hbWVzID0gbmV3IFNldCh2aXNpYmxlUHJvcGVydGllcy5tYXAoKHsgbmFtZSB9KSA9PiBuYW1lKSk7XG5cbiAgICByZXR1cm4gY29sdW1uc1xuICAgICAgLmZpbHRlcigoeyBuYW1lIH0pID0+IHZpc2libGVQcm9wTmFtZXMuaGFzKG5hbWUpKVxuICAgICAgLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5ID0gdmlzaWJsZVByb3BlcnRpZXMuZmluZCgoeyBuYW1lIH0pID0+IG5hbWUgPT09IGNvbHVtbi5uYW1lKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWFBFbnRpdHlMaXN0Vmlld0NvbHVtblZpZXdNb2RlbChwcm9wZXJ0eSEsIGNvbHVtbik7XG4gICAgICB9KTtcbiAgfTtcblxuICB2aXNpYmxlQ29sdW1uQ291bnQgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucygpLmZpbHRlcigoYykgPT4gYy52aXNpYmxlID09IHRydWUpLmxlbmd0aDtcbiAgfTtcblxuICBjb2x1bW5zID0gc2lnbmFsPEFYUEVudGl0eUxpc3RWaWV3Q29sdW1uVmlld01vZGVsW10+KFtdKTtcblxuICByZXNldENvbHVtbnMoKSB7XG4gICAgdGhpcy5hcHBseVZpZXdDb2x1bW5zKCk7XG4gIH1cblxuICBhcHBseUNvbHVtbnMoKSB7XG4gICAgLy90aGlzLmNvbHVtbnMuc2V0KHRoaXMuY2xvbmVkQ29sdW1ucygpKVxuICB9XG5cbiAgYXBwbHlWaWV3Q29sdW1ucygpIHtcbiAgICBjb25zdCBjb2xzID0gdGhpcy52aWV3KCkuY29sdW1ucztcbiAgICBjb25zdCBjbG9uZWQgPSB0aGlzLmFsbEF2YWlsYWJsZUNvbHVtbnMoKS5tYXAoKGMpID0+IHtcbiAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZW50aXR5RGVmLmNvbHVtbnM/LmZpbmQoKGNjKSA9PiBjYy5uYW1lID09IGMubmFtZSk7XG4gICAgICBjb25zdCBwcm9wID0gdGhpcy5lbnRpdHlEZWYucHJvcGVydGllcy5maW5kKChwKSA9PiBwLm5hbWUgPT0gYy5uYW1lKTtcbiAgICAgIGNvbnN0IGNvbCA9IG5ldyBBWFBFbnRpdHlMaXN0Vmlld0NvbHVtblZpZXdNb2RlbChwcm9wISwgY29sdW1uISk7XG4gICAgICBjb2wudmlzaWJsZSA9ICFjb2xzLnNvbWUoKGMpID0+IGMgPT0gY29sLm5hbWUpICYmIGNvbC52aXNpYmxlICE9IGZhbHNlO1xuICAgICAgcmV0dXJuIGNvbDtcbiAgICB9KTtcbiAgICB0aGlzLmNvbHVtbnMuc2V0KGNsb25lZCk7XG4gIH1cblxuICAvLyoqKioqKioqKioqKioqKioqKiBTb3J0ICoqKioqKioqKioqKioqKioqKi8vXG5cbiAgc29ydGFibGVGaWVsZHMgPSAoKSA9PiB7XG4gICAgY29uc3QgcHJvcHMgPSB0aGlzLmVudGl0eURlZi5wcm9wZXJ0aWVzLmZpbHRlcigoYykgPT4gYy5vcHRpb25zPy5zb3J0Py5lbmFibGVkKTtcbiAgICByZXR1cm4gcHJvcHMubWFwKChlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiBlLm5hbWUsXG4gICAgICAgIHRpdGxlOiBlLnRpdGxlLFxuICAgICAgICBkaXI6ICdhc2MnLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfTtcblxuICBzb3J0YWJsZUZpZWxkc0NvdW50ID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmVudGl0eURlZi5wcm9wZXJ0aWVzLmZpbHRlcigoYykgPT4gYy5vcHRpb25zPy5zb3J0Py5lbmFibGVkKS5sZW5ndGggPz8gMDtcbiAgfTtcblxuICBjYW5Tb3J0ID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnNvcnRhYmxlRmllbGRzQ291bnQoKSA+IDA7XG4gIH07XG5cbiAgY2FuQWRkTW9yZVNvcnQgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc29ydGVkQ291bnQoKSA8IHRoaXMuc29ydGFibGVGaWVsZHNDb3VudCgpO1xuICB9O1xuXG4gIHNvcnRlZENvdW50ID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnNvcnRlZEZpZWxkcygpLmxlbmd0aDtcbiAgfTtcblxuICBzb3J0ZWRGaWVsZHMgPSBzaWduYWw8QVhQRW50aXR5TWFzdGVyTGlzdFZpZXdTb3J0UHJvcFZpZXdNb2RlbFtdPihbXSk7XG5cbiAgcmVzZXRTb3J0cygpIHtcbiAgICB0aGlzLmFwcGx5Vmlld1NvcnRzKCk7XG4gIH1cblxuICBhcHBseVNvcnRzKCkge1xuICAgIHRoaXMuYXBwbHlGaWx0ZXJBbmRTb3J0KCk7XG4gIH1cblxuICBhZGRTb3J0KCk6IHZvaWQge1xuICAgIGNvbnN0IHByb3AgPSB0aGlzLnNvcnRhYmxlRmllbGRzKCkuZmluZCgoYykgPT4gIXRoaXMuc29ydGVkRmllbGRzKCkuc29tZSgocykgPT4gcy5uYW1lID09IGMubmFtZSkpO1xuICAgIGlmIChwcm9wKSB7XG4gICAgICB0aGlzLnNvcnRlZEZpZWxkcy5zZXQoWy4uLnRoaXMuc29ydGVkRmllbGRzKCksIC4uLltwcm9wXV0pO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZVNvcnQobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zb3J0ZWRGaWVsZHMuc2V0KHRoaXMuc29ydGVkRmllbGRzKCkuZmlsdGVyKChjKSA9PiBjLm5hbWUgIT0gbmFtZSkpO1xuICB9XG5cbiAgYXBwbHlWaWV3U29ydHMoKSB7XG4gICAgY29uc3QgZmlsZWRzID0gdGhpcy52aWV3KCkuc29ydHMubWFwKChjKSA9PiAoe1xuICAgICAgbmFtZTogYy5uYW1lLFxuICAgICAgdGl0bGU6IGMubmFtZSxcbiAgICAgIGRpcjogYy5kaXIgPz8gJ2FzYycsXG4gICAgfSkpO1xuICAgIHRoaXMuc29ydGVkRmllbGRzLnNldChmaWxlZHMpO1xuICB9XG5cbiAgLy8qKioqKioqKioqKioqKioqKiogVmlld3MgKioqKioqKioqKioqKioqKioqLy9cblxuICBzZXRWaWV3KHZpZXdOYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgIGlmICh2aWV3TmFtZSAhPSB0aGlzLnZpZXcoKS5uYW1lKSB7XG4gICAgICB0aGlzLnZpZXcuc2V0KHRoaXMudmlld3MoKS5maW5kKChjKSA9PiBjLm5hbWUgPT0gdmlld05hbWUpID8/IHRoaXMudmlld3MoKVswXSk7XG4gICAgICB0aGlzLmFwcGx5Vmlld1NvcnRzKCk7XG4gICAgICB0aGlzLmFwcGx5Vmlld0NvbHVtbnMoKTtcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJBbmRTb3J0KCk7XG4gICAgfVxuICB9XG5cbiAgdmlld3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgdmlld3MgPSB0aGlzLmVudGl0eURlZi5pbnRlcmZhY2VzPy5tYXN0ZXI/Lmxpc3Q/LnZpZXdzID8/IFtdO1xuICAgIHJldHVybiB2aWV3cy5tYXAoKHYpID0+IHtcbiAgICAgIHJldHVybiBuZXcgQVhQRW50aXR5TWFzdGVyTGlzdFZpZXdRdWVyeVZpZXdNb2RlbCh0aGlzLmVudGl0eURlZiwgdGhpcywgdik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHZpZXcgPSBzaWduYWw8QVhQRW50aXR5TWFzdGVyTGlzdFZpZXdRdWVyeVZpZXdNb2RlbD4odGhpcy52aWV3cygpWzBdKTtcblxuICAvLyoqKioqKioqKioqKioqKioqKiAgQ29tbWFuZHMgKioqKioqKioqKioqKioqKioqLy9cbiAgcHVibGljIGFzeW5jIGV4ZWN1dGVDb21tYW5kKGNvbW1hbmROYW1lOiBzdHJpbmcsIGRhdGE6IGFueSA9IG51bGwpIHtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmFsbEFjdGlvbnMoKS5maW5kKFxuICAgICAgKGMpID0+XG4gICAgICAgIGMubmFtZSA9PSBjb21tYW5kTmFtZSAmJlxuICAgICAgICAoKHRoaXMuc2VsZWN0ZWRJdGVtcygpLmxlbmd0aFxuICAgICAgICAgID8gYy5zY29wZSA9PSBBWFBFbnRpdHlDb21tYW5kU2NvcGUuU2VsZWN0ZWRcbiAgICAgICAgICA6IGMuc2NvcGUgPT0gQVhQRW50aXR5Q29tbWFuZFNjb3BlLkluZGl2aWR1YWwpIHx8XG4gICAgICAgICAgYy5zY29wZSA9PSBBWFBFbnRpdHlDb21tYW5kU2NvcGUuVHlwZUxldmVsKVxuICAgICk7XG4gICAgYXdhaXQgdGhpcy53b3JrZmxvdy5leGVjdXRlKGNvbW1hbmROYW1lLCB7XG4gICAgICBlbnRpdHk6IHRoaXMuZW50aXR5RGVmLnNvdXJjZSxcbiAgICAgIGRhdGE6IGFjdGlvbj8uc2NvcGUgPT0gQVhQRW50aXR5Q29tbWFuZFNjb3BlLlNlbGVjdGVkID8gdGhpcy5zZWxlY3RlZEl0ZW1zKCkgOiBkYXRhLFxuICAgIH0pO1xuICB9XG4gIC8vXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveWVkLmNvbXBsZXRlKCk7XG4gIH1cbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBWFBFbnRpdHlMaXN0Vmlld01vZGVsRmFjdG9yeSB7XG4gIHByaXZhdGUgZW50aXR5U2VydmljZSA9IGluamVjdChBWFBFbnRpdHlEZWZpbml0aW9uUmVnaXN0cnlTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBsYXlvdXQgPSBpbmplY3QoQVhQTGF5b3V0U2VydmljZSk7XG4gIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGUobW9kdWxlTmFtZTogc3RyaW5nLCBlbnRpdHlOYW1lOiBzdHJpbmcpOiBQcm9taXNlPEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3TW9kZWw+IHtcbiAgICB0aGlzLmxheW91dC5zZXROYXZpZ2F0aW9uTG9hZGluZyh0cnVlKTtcbiAgICBjb25zdCBjb25maWcgPSBhd2FpdCB0aGlzLmVudGl0eVNlcnZpY2UucmVzb2x2ZShtb2R1bGVOYW1lLCBlbnRpdHlOYW1lKTtcbiAgICB0aGlzLmxheW91dC5zZXROYXZpZ2F0aW9uTG9hZGluZyhmYWxzZSk7XG4gICAgcmV0dXJuIG5ldyBBWFBFbnRpdHlNYXN0ZXJMaXN0Vmlld01vZGVsKHRoaXMuaW5qZWN0b3IsIGNvbmZpZyk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEFYUEVudGl0eUxpc3RWaWV3TW9kZWxSZXNvbHZlcjogUmVzb2x2ZUZuPFByb21pc2U8QVhQRW50aXR5TWFzdGVyTGlzdFZpZXdNb2RlbD4+ID0gKFxuICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QsXG4gIHNlcnZpY2U6IEFYUEVudGl0eUxpc3RWaWV3TW9kZWxGYWN0b3J5ID0gaW5qZWN0KEFYUEVudGl0eUxpc3RWaWV3TW9kZWxGYWN0b3J5KVxuKTogUHJvbWlzZTxBWFBFbnRpdHlNYXN0ZXJMaXN0Vmlld01vZGVsPiA9PiB7XG4gIGNvbnN0IGFwcE5hbWUgPSByb3V0ZS5wYXJlbnQ/LnBhcmFtTWFwLmdldCgnYXBwJykgYXMgc3RyaW5nO1xuICBjb25zdCBtb2R1bGVOYW1lID0gcm91dGUucGFyZW50Py5wYXJhbU1hcC5nZXQoJ21vZHVsZScpIGFzIHN0cmluZztcbiAgY29uc3QgZW50aXR5TmFtZSA9IHJvdXRlLnBhcmFtTWFwLmdldCgnZW50aXR5JykgYXMgc3RyaW5nO1xuICAvL1xuICByZXR1cm4gc2VydmljZS5jcmVhdGUobW9kdWxlTmFtZSwgZW50aXR5TmFtZSk7XG59O1xuIl19
320
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW1hc3Rlci1saXN0LnZpZXdtb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2VudGl0eS9zcmMvbGliL2VudGl0eS1tYXN0ZXItbGlzdC52aWV3bW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBb0QsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUdMLHFCQUFxQixFQUNyQixnQkFBZ0IsR0FFakIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFRM0UsTUFBTSxPQUFPLHFDQUFxQztJQUNoRCxZQUFvQixNQUFpQixFQUFVLE9BQXFDLEVBQVUsSUFBa0I7UUFBNUYsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUFV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QUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2pFLENBQUM7OEdBVlUsNkJBQTZCO2tIQUE3Qiw2QkFBNkIsY0FEaEIsTUFBTTs7MkZBQ25CLDZCQUE2QjtrQkFEekMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O0FBY2xDLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFxRCxDQUM5RixLQUE2QixFQUM3QixLQUEwQixFQUMxQixVQUF5QyxNQUFNLENBQUMsNkJBQTZCLENBQUMsRUFDdkMsRUFBRTtJQUN6QyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFXLENBQUM7SUFDNUQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBVyxDQUFDO0lBQ2xFLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBVyxDQUFDO0lBQzFELEVBQUU7SUFDRixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ2hELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRGF0YVNvdXJjZSwgQVhEYXRhU291cmNlRmlsdGVyT3B0aW9uLCBBWERhdGFTb3VyY2VTb3J0T3B0aW9uIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQgeyBBWEZvcm1hdFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7XG4gIEFYUEJlYXJkQ3J1bWIsXG4gIEFYUEVudGl0eSxcbiAgQVhQRW50aXR5Q29tbWFuZFNjb3BlLFxuICBBWFBMYXlvdXRTZXJ2aWNlLFxuICBBWFBRdWVyeVZpZXcsXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUFdvcmtmbG93U2VydmljZSwgb2ZUeXBlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93b3JrZmxvdyc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSZXNvbHZlRm4sIFJvdXRlclN0YXRlU25hcHNob3QgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhQRW50aXR5RGVmaW5pdGlvblJlZ2lzdHJ5U2VydmljZSB9IGZyb20gJy4vZW50aXR5LXJlZ2lzdGVyeS5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUEVudGl0eUNvbW1hbmRUcmlnZ2VyVmlld01vZGVsLCBBWFBFbnRpdHlMaXN0Vmlld0NvbHVtblZpZXdNb2RlbCB9IGZyb20gJy4vZW50aXR5LnZpZXdtb2RlbCc7XG5pbXBvcnQgeyBBWFBFbnRpdHlEZWxldGVkRXZlbnQgfSBmcm9tICcuL3dvcmtmbG93cy9kZWxldGUtZW50aXR5LndvcmtmbG93JztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBFbnRpdHlNYXN0ZXJMaXN0Vmlld1NvcnRQcm9wVmlld01vZGVsIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkaXI6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3UXVlcnlWaWV3TW9kZWwge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVudGl0eTogQVhQRW50aXR5LCBwcml2YXRlIHNlY3Rpb246IEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3TW9kZWwsIHByaXZhdGUgdmlldzogQVhQUXVlcnlWaWV3KSB7fVxuXG4gIG5hbWUgPSB0aGlzLnZpZXcubmFtZTtcbiAgdGl0bGUgPSB0aGlzLnZpZXcudGl0bGU7XG4gIHNvcnRzID0gdGhpcy52aWV3LnNvcnRzO1xuICBjb2x1bW5zID0gdGhpcy52aWV3LmNvbHVtbnM7XG4gIGNvbmRpdGlvbnMgPSB0aGlzLnZpZXcuY29uZGl0aW9ucztcbn1cblxuZXhwb3J0IGNsYXNzIEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3TW9kZWwge1xuICBwcml2YXRlIHJlYWRvbmx5IGVudGl0eURlZiA9IGNsb25lRGVlcCh0aGlzLmNvbmZpZykhO1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWV3RGVmID0gY2xvbmVEZWVwKHRoaXMuZW50aXR5RGVmLmludGVyZmFjZXM/Lm1hc3Rlcj8ubGlzdCkhO1xuICBwcml2YXRlIHJlYWRvbmx5IGZvcm1hdFNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChBWEZvcm1hdFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb24gPSB0aGlzLmluamVjdG9yLmdldChBWFBTZXNzaW9uU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgd29ya2Zsb3cgPSB0aGlzLmluamVjdG9yLmdldChBWFBXb3JrZmxvd1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3llZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKTtcblxuICBwdWJsaWMgZXZlbnRzJDogU3ViamVjdDx7IGFjdGlvbjogc3RyaW5nIH0+ID0gbmV3IFN1YmplY3QoKTtcblxuICBkYXRhU291cmNlID0gbmV3IEFYRGF0YVNvdXJjZSh7XG4gICAgYnlLZXk6IChrZXkpID0+IHtcbiAgICAgIGNvbnN0IGZ1bmMgPSB0aGlzLmVudGl0eURlZi5xdWVyaWVzLmJ5S2V5LmV4ZWN1dGUgYXMgRnVuY3Rpb247XG4gICAgICByZXR1cm4gZnVuYygpO1xuICAgIH0sXG4gICAgbG9hZDogKGUpID0+IHtcbiAgICAgIGNvbnN0IGZ1bmMgPSB0aGlzLmVudGl0eURlZi5xdWVyaWVzLmxpc3Q/LmV4ZWN1dGUgYXMgRnVuY3Rpb247XG4gICAgICByZXR1cm4gZnVuYyhlKTtcbiAgICB9LFxuICAgIHBhZ2VTaXplOiAxMCxcbiAgICBrZXk6ICdpZCcsXG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLCBwcml2YXRlIGNvbmZpZzogQVhQRW50aXR5KSB7XG4gICAgdGhpcy53b3JrZmxvdy5ldmVudHMkXG4gICAgICAucGlwZShvZlR5cGUoQVhQRW50aXR5RGVsZXRlZEV2ZW50KSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQucGF5bG9hZC5lbnRpdHkgPT0gdGhpcy5lbnRpdHlEZWYuc291cmNlKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnNldChbXSk7XG4gICAgICAgICAgdGhpcy5ldmVudHMkLm5leHQoeyBhY3Rpb246ICdyZWZyZXNoJyB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0ZWRJdGVtcyA9IHNpZ25hbDxhbnlbXT4oW10pO1xuXG4gIHB1YmxpYyBoYXNTZWxlY3RlZEl0ZW1zID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMoKS5sZW5ndGggPiAwO1xuICB9KTtcblxuICBwdWJsaWMgY2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnNldChbXSk7XG4gIH1cblxuICAvLyoqKioqKioqKioqKioqKioqKiBUaXRsZSAqKioqKioqKioqKioqKioqKiovL1xuICBwdWJsaWMgdGl0bGUgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5fdmlld0RlZi50aXRsZSA/PyB0aGlzLmVudGl0eURlZi5mb3JtYXRzLnBsdXJhbCE7XG4gIH0pO1xuICAvLyoqKioqKioqKioqKioqKioqKiBEZXNjcmlwdGlvbiAqKioqKioqKioqKioqKioqKiovL1xuICBwdWJsaWMgZGVzY3JpcHRpb24gPSBjb21wdXRlZDxzdHJpbmcgfCBudWxsPigoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdEZWYuZGVzY3JpcHRpb24gPz8gbnVsbDtcbiAgfSk7XG5cbiAgLy8qKioqKioqKioqKioqKioqKiogSW5saW5lIGZpbHRlciAqKioqKioqKioqKioqKioqKiovL1xuICBwdWJsaWMgaW5saW5lRmlsdGVyc1BsYWNlaG9sZGVycyA9IGNvbXB1dGVkPHN0cmluZ1tdPigoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZW50aXR5RGVmLnByb3BlcnRpZXMuZmlsdGVyKChwKSA9PiBwLm9wdGlvbnM/LmZpbHRlcj8uaW5saW5lPy5lbmFibGVkKS5tYXAoKGMpID0+IGMudGl0bGUpO1xuICB9KTtcblxuICBwdWJsaWMgaGFzSW5saW5lRmlsdGVycyA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5pbmxpbmVGaWx0ZXJzUGxhY2Vob2xkZXJzKCkubGVuZ3RoID4gMDtcbiAgfSk7XG5cbiAgLy8qKioqKioqKioqKioqKioqKiogQmVhcmRjcnVtYnMgKioqKioqKioqKioqKioqKioqLy9cbiAgcHVibGljIGJlYXJkY3J1bWJzID0gY29tcHV0ZWQ8QVhQQmVhcmRDcnVtYltdPigoKSA9PiB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVTeW5jKCdlbnRpdHkuaG9tZScpLFxuICAgICAgICBpY29uOiAnZmEtc29saWQgZmEtaG9tZSBheC10ZXh0LXhzIGF4LW1lLTInLFxuICAgICAgICB1cmw6IFtgLyR7dGhpcy5zZXNzaW9uLmFwcGxpY2F0aW9uPy5uYW1lfWBdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6IHRoaXMudGl0bGUoKSxcbiAgICAgICAgdXJsOiBbXG4gICAgICAgICAgYC8ke3RoaXMuc2Vzc2lvbi5hcHBsaWNhdGlvbj8ubmFtZX1gLFxuICAgICAgICAgICdtJyxcbiAgICAgICAgICBgJHt0aGlzLmVudGl0eURlZi5tb2R1bGV9YCxcbiAgICAgICAgICAnZScsXG4gICAgICAgICAgYCR7dGhpcy5lbnRpdHlEZWYubmFtZX1gLFxuICAgICAgICAgICdsaXN0JyxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfSk7XG5cbiAgLy8qKioqKioqKioqKioqKioqKiogQWN0aW9ucyAqKioqKioqKioqKioqKioqKiovL1xuICBwcml2YXRlIGFsbEFjdGlvbnMgPSBjb21wdXRlZDxBWFBFbnRpdHlDb21tYW5kVHJpZ2dlclZpZXdNb2RlbFtdPigoKSA9PiB7XG4gICAgY29uc3QgbGlzdCA9IHRoaXMuZW50aXR5RGVmLmludGVyZmFjZXM/Lm1hc3Rlcj8ubGlzdD8uYWN0aW9ucyA/PyBbXTtcbiAgICByZXR1cm4gbGlzdC5tYXAoKHRyKSA9PiBuZXcgQVhQRW50aXR5Q29tbWFuZFRyaWdnZXJWaWV3TW9kZWwodGhpcy5lbnRpdHlEZWYsIHRyKSkgPz8gW107XG4gIH0pO1xuXG4gIHB1YmxpYyBwcmltYXJ5QWN0aW9ucyA9IGNvbXB1dGVkPEFYUEVudGl0eUNvbW1hbmRUcmlnZ2VyVmlld01vZGVsW10+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5hbGxBY3Rpb25zKCkuZmlsdGVyKFxuICAgICAgKGEpID0+XG4gICAgICAgIGEucHJpb3JpdHkgPT0gJ3ByaW1hcnknICYmXG4gICAgICAgICgoYS5zY29wZSA9PSBBWFBFbnRpdHlDb21tYW5kU2NvcGUuU2VsZWN0ZWQgJiYgdGhpcy5oYXNTZWxlY3RlZEl0ZW1zKCkpIHx8XG4gICAgICAgICAgKGEuc2NvcGUgPT0gQVhQRW50aXR5Q29tbWFuZFNjb3BlLlR5cGVMZXZlbCAmJiAhdGhpcy5oYXNTZWxlY3RlZEl0ZW1zKCkpKVxuICAgICk7XG4gIH0pO1xuXG4gIHB1YmxpYyBzZWNvbmRhcnlBY3Rpb25zID0gY29tcHV0ZWQ8QVhQRW50aXR5Q29tbWFuZFRyaWdnZXJWaWV3TW9kZWxbXT4oKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmFsbEFjdGlvbnMoKS5maWx0ZXIoXG4gICAgICAoYSkgPT5cbiAgICAgICAgYS5wcmlvcml0eSA9PSAnc2Vjb25kYXJ5JyAmJlxuICAgICAgICAoKGEuc2NvcGUgPT0gQVhQRW50aXR5Q29tbWFuZFNjb3BlLlNlbGVjdGVkICYmIHRoaXMuaGFzU2VsZWN0ZWRJdGVtcygpKSB8fFxuICAgICAgICAgIChhLnNjb3BlID09IEFYUEVudGl0eUNvbW1hbmRTY29wZS5UeXBlTGV2ZWwgJiYgIXRoaXMuaGFzU2VsZWN0ZWRJdGVtcygpKSlcbiAgICApO1xuICB9KTtcblxuICBwdWJsaWMgcHJpbWFyeVJvd0FjdGlvbnMgPSBjb21wdXRlZDxBWFBFbnRpdHlDb21tYW5kVHJpZ2dlclZpZXdNb2RlbFtdPigoKSA9PlxuICAgIHRoaXMuYWxsQWN0aW9ucygpLmZpbHRlcigoYSkgPT4gYS5zY29wZSA9PSBBWFBFbnRpdHlDb21tYW5kU2NvcGUuSW5kaXZpZHVhbCAmJiBhLnByaW9yaXR5ID09PSAncHJpbWFyeScpXG4gICk7XG5cbiAgcHVibGljIHNlY29uZGFyeVJvd0FjdGlvbnMgPSBjb21wdXRlZDxBWFBFbnRpdHlDb21tYW5kVHJpZ2dlclZpZXdNb2RlbFtdPigoKSA9PlxuICAgIHRoaXMuYWxsQWN0aW9ucygpLmZpbHRlcigoYSkgPT4gYS5zY29wZSA9PSBBWFBFbnRpdHlDb21tYW5kU2NvcGUuSW5kaXZpZHVhbCAmJiBhLnByaW9yaXR5ID09PSAnc2Vjb25kYXJ5JylcbiAgKTtcblxuICAvLyoqKioqKioqKioqKioqKioqKiBGaWx0ZXIgKioqKioqKioqKioqKioqKioqLy9cblxuICBwcml2YXRlIGlubGluZUZpbHRlcnM6IEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbiA9IHtcbiAgICBmaWVsZDogbnVsbCBhcyBhbnksXG4gICAgbG9naWM6ICdvcicsXG4gICAgb3BlcmF0b3I6IG51bGwgYXMgYW55LFxuICAgIGZpbHRlcnM6IFtdLFxuICB9O1xuXG4gIHByaXZhdGUgYWR2YW5jZUZpbHRlcnM6IEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbiA9IHtcbiAgICBmaWVsZDogbnVsbCBhcyBhbnksXG4gICAgbG9naWM6ICdhbmQnLFxuICAgIG9wZXJhdG9yOiBudWxsIGFzIGFueSxcbiAgICBmaWx0ZXJzOiBbXSxcbiAgfTtcblxuICBhcHBseUlubGluZUZpbHRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcHJvcHMgPSB0aGlzLmVudGl0eURlZi5wcm9wZXJ0aWVzLmZpbHRlcigoYykgPT4gYy5vcHRpb25zPy5maWx0ZXI/LmlubGluZT8uZW5hYmxlZCk7XG4gICAgdGhpcy5pbmxpbmVGaWx0ZXJzLmZpbHRlcnMgPSBbXTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHByb3BzLmZvckVhY2goKHApID0+IHtcbiAgICAgICAgdGhpcy5pbmxpbmVGaWx0ZXJzLmZpbHRlcnM/LnB1c2goe1xuICAgICAgICAgIGZpZWxkOiBwLm5hbWUsXG4gICAgICAgICAgb3BlcmF0b3I6IHtcbiAgICAgICAgICAgIHR5cGU6ICdjb250YWlucycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5hcHBseUZpbHRlckFuZFNvcnQoKTtcbiAgfVxuXG4gIGFwcGx5RmlsdGVyQW5kU29ydCgpIHtcbiAgICB0aGlzLmRhdGFTb3VyY2UuY2xlYXJGaWx0ZXIoKTtcbiAgICAvL1xuICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0KC4uLnRoaXMuc29ydGVkRmllbGRzKCkubWFwKChzKSA9PiAoeyBkaXI6IHMuZGlyLCBmaWVsZDogcy5uYW1lIH0gYXMgQVhEYXRhU291cmNlU29ydE9wdGlvbikpKTtcbiAgICAvL1xuICAgIHRoaXMuYWR2YW5jZUZpbHRlcnMuZmlsdGVycyA9IHRoaXMudmlldygpLmNvbmRpdGlvbnMubWFwKChmKSA9PiAoe1xuICAgICAgZmllbGQ6IGYubmFtZSxcbiAgICAgIG9wZXJhdG9yOiBmLm9wZXJhdG9yLFxuICAgICAgdmFsdWU6IGYudmFsdWUsXG4gICAgfSkpO1xuXG4gICAgY29uc29sZS5sb2codGhpcy5hZHZhbmNlRmlsdGVycy5maWx0ZXJzKTtcblxuICAgIC8vXG4gICAgY29uc3QgaW5saW5lID0gdGhpcy5pbmxpbmVGaWx0ZXJzLmZpbHRlcnM/Lmxlbmd0aCA/PyAwO1xuICAgIGNvbnN0IGFkdmFuY2UgPSB0aGlzLmFkdmFuY2VGaWx0ZXJzLmZpbHRlcnM/Lmxlbmd0aCA/PyAwO1xuICAgIGlmIChpbmxpbmUgJiYgIWFkdmFuY2UpIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIodGhpcy5pbmxpbmVGaWx0ZXJzKTtcbiAgICB9IGVsc2UgaWYgKCFpbmxpbmUgJiYgYWR2YW5jZSkge1xuICAgICAgdGhpcy5kYXRhU291cmNlLmZpbHRlcih0aGlzLmFkdmFuY2VGaWx0ZXJzKTtcbiAgICB9IGVsc2UgaWYgKGlubGluZSAmJiBhZHZhbmNlKSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZmlsdGVyKHtcbiAgICAgICAgZmllbGQ6IG51bGwgYXMgYW55LFxuICAgICAgICBsb2dpYzogJ2FuZCcsXG4gICAgICAgIG9wZXJhdG9yOiBudWxsIGFzIGFueSxcbiAgICAgICAgZmlsdGVyczogW3RoaXMuaW5saW5lRmlsdGVycywgdGhpcy5hZHZhbmNlRmlsdGVyc10sXG4gICAgICB9KTtcbiAgICB9XG4gICAgLy9cbiAgICB0aGlzLmRhdGFTb3VyY2UucmVmcmVzaCgpO1xuICB9XG5cbiAgLy8qKioqKioqKioqKioqKioqKiogQ29sdW1ucyAqKioqKioqKioqKioqKioqKiovL1xuXG4gIHByaXZhdGUgYWxsQXZhaWxhYmxlQ29sdW1ucyA9ICgpOiBBWFBFbnRpdHlMaXN0Vmlld0NvbHVtblZpZXdNb2RlbFtdID0+IHtcbiAgICBjb25zdCB7IGNvbHVtbnMgPSBbXSwgcHJvcGVydGllcyB9ID0gdGhpcy5lbnRpdHlEZWY7XG4gICAgY29uc3QgdmlzaWJsZVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLmZpbHRlcigoeyBzY2hlbWEgfSkgPT4gIXNjaGVtYT8uaGlkZGVuKTtcbiAgICBjb25zdCB2aXNpYmxlUHJvcE5hbWVzID0gbmV3IFNldCh2aXNpYmxlUHJvcGVydGllcy5tYXAoKHsgbmFtZSB9KSA9PiBuYW1lKSk7XG5cbiAgICByZXR1cm4gY29sdW1uc1xuICAgICAgLmZpbHRlcigoeyBuYW1lIH0pID0+IHZpc2libGVQcm9wTmFtZXMuaGFzKG5hbWUpKVxuICAgICAgLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5ID0gdmlzaWJsZVByb3BlcnRpZXMuZmluZCgoeyBuYW1lIH0pID0+IG5hbWUgPT09IGNvbHVtbi5uYW1lKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWFBFbnRpdHlMaXN0Vmlld0NvbHVtblZpZXdNb2RlbChwcm9wZXJ0eSEsIGNvbHVtbik7XG4gICAgICB9KTtcbiAgfTtcblxuICB2aXNpYmxlQ29sdW1uQ291bnQgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucygpLmZpbHRlcigoYykgPT4gYy52aXNpYmxlID09IHRydWUpLmxlbmd0aDtcbiAgfTtcblxuICBjb2x1bW5zID0gc2lnbmFsPEFYUEVudGl0eUxpc3RWaWV3Q29sdW1uVmlld01vZGVsW10+KFtdKTtcblxuICByZXNldENvbHVtbnMoKSB7XG4gICAgdGhpcy5hcHBseVZpZXdDb2x1bW5zKCk7XG4gIH1cblxuICBhcHBseUNvbHVtbnMoKSB7XG4gICAgLy90aGlzLmNvbHVtbnMuc2V0KHRoaXMuY2xvbmVkQ29sdW1ucygpKVxuICB9XG5cbiAgYXBwbHlWaWV3Q29sdW1ucygpIHtcbiAgICBjb25zdCBjb2xzID0gdGhpcy52aWV3KCkuY29sdW1ucztcbiAgICBjb25zdCBjbG9uZWQgPSB0aGlzLmFsbEF2YWlsYWJsZUNvbHVtbnMoKS5tYXAoKGMpID0+IHtcbiAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZW50aXR5RGVmLmNvbHVtbnM/LmZpbmQoKGNjKSA9PiBjYy5uYW1lID09IGMubmFtZSk7XG4gICAgICBjb25zdCBwcm9wID0gdGhpcy5lbnRpdHlEZWYucHJvcGVydGllcy5maW5kKChwKSA9PiBwLm5hbWUgPT0gYy5uYW1lKTtcbiAgICAgIGNvbnN0IGNvbCA9IG5ldyBBWFBFbnRpdHlMaXN0Vmlld0NvbHVtblZpZXdNb2RlbChwcm9wISwgY29sdW1uISk7XG4gICAgICBjb2wudmlzaWJsZSA9ICFjb2xzLnNvbWUoKGMpID0+IGMgPT0gY29sLm5hbWUpICYmIGNvbC52aXNpYmxlICE9IGZhbHNlO1xuICAgICAgcmV0dXJuIGNvbDtcbiAgICB9KTtcbiAgICB0aGlzLmNvbHVtbnMuc2V0KGNsb25lZCk7XG4gIH1cblxuICAvLyoqKioqKioqKioqKioqKioqKiBTb3J0ICoqKioqKioqKioqKioqKioqKi8vXG5cbiAgc29ydGFibGVGaWVsZHMgPSAoKSA9PiB7XG4gICAgY29uc3QgcHJvcHMgPSB0aGlzLmVudGl0eURlZi5wcm9wZXJ0aWVzLmZpbHRlcigoYykgPT4gYy5vcHRpb25zPy5zb3J0Py5lbmFibGVkKTtcbiAgICByZXR1cm4gcHJvcHMubWFwKChlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiBlLm5hbWUsXG4gICAgICAgIHRpdGxlOiBlLnRpdGxlLFxuICAgICAgICBkaXI6ICdhc2MnLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfTtcblxuICBzb3J0YWJsZUZpZWxkc0NvdW50ID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmVudGl0eURlZi5wcm9wZXJ0aWVzLmZpbHRlcigoYykgPT4gYy5vcHRpb25zPy5zb3J0Py5lbmFibGVkKS5sZW5ndGggPz8gMDtcbiAgfTtcblxuICBjYW5Tb3J0ID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnNvcnRhYmxlRmllbGRzQ291bnQoKSA+IDA7XG4gIH07XG5cbiAgY2FuQWRkTW9yZVNvcnQgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc29ydGVkQ291bnQoKSA8IHRoaXMuc29ydGFibGVGaWVsZHNDb3VudCgpO1xuICB9O1xuXG4gIHNvcnRlZENvdW50ID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnNvcnRlZEZpZWxkcygpLmxlbmd0aDtcbiAgfTtcblxuICBzb3J0ZWRGaWVsZHMgPSBzaWduYWw8QVhQRW50aXR5TWFzdGVyTGlzdFZpZXdTb3J0UHJvcFZpZXdNb2RlbFtdPihbXSk7XG5cbiAgcmVzZXRTb3J0cygpIHtcbiAgICB0aGlzLmFwcGx5Vmlld1NvcnRzKCk7XG4gIH1cblxuICBhcHBseVNvcnRzKCkge1xuICAgIHRoaXMuYXBwbHlGaWx0ZXJBbmRTb3J0KCk7XG4gIH1cblxuICBhZGRTb3J0KCk6IHZvaWQge1xuICAgIGNvbnN0IHByb3AgPSB0aGlzLnNvcnRhYmxlRmllbGRzKCkuZmluZCgoYykgPT4gIXRoaXMuc29ydGVkRmllbGRzKCkuc29tZSgocykgPT4gcy5uYW1lID09IGMubmFtZSkpO1xuICAgIGlmIChwcm9wKSB7XG4gICAgICB0aGlzLnNvcnRlZEZpZWxkcy5zZXQoWy4uLnRoaXMuc29ydGVkRmllbGRzKCksIC4uLltwcm9wXV0pO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZVNvcnQobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zb3J0ZWRGaWVsZHMuc2V0KHRoaXMuc29ydGVkRmllbGRzKCkuZmlsdGVyKChjKSA9PiBjLm5hbWUgIT0gbmFtZSkpO1xuICB9XG5cbiAgYXBwbHlWaWV3U29ydHMoKSB7XG4gICAgY29uc3QgZmlsZWRzID0gdGhpcy52aWV3KCkuc29ydHMubWFwKChjKSA9PiAoe1xuICAgICAgbmFtZTogYy5uYW1lLFxuICAgICAgdGl0bGU6IGMubmFtZSxcbiAgICAgIGRpcjogYy5kaXIgPz8gJ2FzYycsXG4gICAgfSkpO1xuICAgIHRoaXMuc29ydGVkRmllbGRzLnNldChmaWxlZHMpO1xuICB9XG5cbiAgLy8qKioqKioqKioqKioqKioqKiogVmlld3MgKioqKioqKioqKioqKioqKioqLy9cblxuICBzZXRWaWV3KHZpZXdOYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgIGlmICh2aWV3TmFtZSAhPSB0aGlzLnZpZXcoKS5uYW1lKSB7XG4gICAgICB0aGlzLnZpZXcuc2V0KHRoaXMudmlld3MoKS5maW5kKChjKSA9PiBjLm5hbWUgPT0gdmlld05hbWUpID8/IHRoaXMudmlld3MoKVswXSk7XG4gICAgICB0aGlzLmFwcGx5Vmlld1NvcnRzKCk7XG4gICAgICB0aGlzLmFwcGx5Vmlld0NvbHVtbnMoKTtcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJBbmRTb3J0KCk7XG4gICAgfVxuICB9XG5cbiAgdmlld3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgdmlld3MgPSB0aGlzLmVudGl0eURlZi5pbnRlcmZhY2VzPy5tYXN0ZXI/Lmxpc3Q/LnZpZXdzID8/IFtdO1xuICAgIHJldHVybiB2aWV3cy5tYXAoKHYpID0+IHtcbiAgICAgIHJldHVybiBuZXcgQVhQRW50aXR5TWFzdGVyTGlzdFZpZXdRdWVyeVZpZXdNb2RlbCh0aGlzLmVudGl0eURlZiwgdGhpcywgdik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHZpZXcgPSBzaWduYWw8QVhQRW50aXR5TWFzdGVyTGlzdFZpZXdRdWVyeVZpZXdNb2RlbD4odGhpcy52aWV3cygpWzBdKTtcblxuICAvLyoqKioqKioqKioqKioqKioqKiAgQ29tbWFuZHMgKioqKioqKioqKioqKioqKioqLy9cbiAgcHVibGljIGFzeW5jIGV4ZWN1dGVDb21tYW5kKGNvbW1hbmROYW1lOiBzdHJpbmcsIGRhdGE6IGFueSA9IG51bGwpIHtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmFsbEFjdGlvbnMoKS5maW5kKFxuICAgICAgKGMpID0+XG4gICAgICAgIGMubmFtZSA9PSBjb21tYW5kTmFtZSAmJlxuICAgICAgICAoKHRoaXMuc2VsZWN0ZWRJdGVtcygpLmxlbmd0aFxuICAgICAgICAgID8gYy5zY29wZSA9PSBBWFBFbnRpdHlDb21tYW5kU2NvcGUuU2VsZWN0ZWRcbiAgICAgICAgICA6IGMuc2NvcGUgPT0gQVhQRW50aXR5Q29tbWFuZFNjb3BlLkluZGl2aWR1YWwpIHx8XG4gICAgICAgICAgYy5zY29wZSA9PSBBWFBFbnRpdHlDb21tYW5kU2NvcGUuVHlwZUxldmVsKVxuICAgICk7XG4gICAgYXdhaXQgdGhpcy53b3JrZmxvdy5leGVjdXRlKGNvbW1hbmROYW1lLCB7XG4gICAgICBlbnRpdHk6IHRoaXMuZW50aXR5RGVmLnNvdXJjZSxcbiAgICAgIGRhdGE6IGFjdGlvbj8uc2NvcGUgPT0gQVhQRW50aXR5Q29tbWFuZFNjb3BlLlNlbGVjdGVkID8gdGhpcy5zZWxlY3RlZEl0ZW1zKCkgOiBkYXRhLFxuICAgIH0pO1xuICB9XG4gIC8vXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveWVkLmNvbXBsZXRlKCk7XG4gIH1cbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBWFBFbnRpdHlMaXN0Vmlld01vZGVsRmFjdG9yeSB7XG4gIHByaXZhdGUgZW50aXR5U2VydmljZSA9IGluamVjdChBWFBFbnRpdHlEZWZpbml0aW9uUmVnaXN0cnlTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBsYXlvdXQgPSBpbmplY3QoQVhQTGF5b3V0U2VydmljZSk7XG4gIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGUobW9kdWxlTmFtZTogc3RyaW5nLCBlbnRpdHlOYW1lOiBzdHJpbmcpOiBQcm9taXNlPEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3TW9kZWw+IHtcbiAgICB0aGlzLmxheW91dC5zZXROYXZpZ2F0aW9uTG9hZGluZyh0cnVlKTtcbiAgICBjb25zdCBjb25maWcgPSBhd2FpdCB0aGlzLmVudGl0eVNlcnZpY2UucmVzb2x2ZShtb2R1bGVOYW1lLCBlbnRpdHlOYW1lKTtcbiAgICB0aGlzLmxheW91dC5zZXROYXZpZ2F0aW9uTG9hZGluZyhmYWxzZSk7XG4gICAgcmV0dXJuIG5ldyBBWFBFbnRpdHlNYXN0ZXJMaXN0Vmlld01vZGVsKHRoaXMuaW5qZWN0b3IsIGNvbmZpZyk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEFYUEVudGl0eUxpc3RWaWV3TW9kZWxSZXNvbHZlcjogUmVzb2x2ZUZuPFByb21pc2U8QVhQRW50aXR5TWFzdGVyTGlzdFZpZXdNb2RlbD4+ID0gKFxuICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QsXG4gIHNlcnZpY2U6IEFYUEVudGl0eUxpc3RWaWV3TW9kZWxGYWN0b3J5ID0gaW5qZWN0KEFYUEVudGl0eUxpc3RWaWV3TW9kZWxGYWN0b3J5KVxuKTogUHJvbWlzZTxBWFBFbnRpdHlNYXN0ZXJMaXN0Vmlld01vZGVsPiA9PiB7XG4gIGNvbnN0IGFwcE5hbWUgPSByb3V0ZS5wYXJlbnQ/LnBhcmFtTWFwLmdldCgnYXBwJykgYXMgc3RyaW5nO1xuICBjb25zdCBtb2R1bGVOYW1lID0gcm91dGUucGFyZW50Py5wYXJhbU1hcC5nZXQoJ21vZHVsZScpIGFzIHN0cmluZztcbiAgY29uc3QgZW50aXR5TmFtZSA9IHJvdXRlLnBhcmFtTWFwLmdldCgnZW50aXR5JykgYXMgc3RyaW5nO1xuICAvL1xuICByZXR1cm4gc2VydmljZS5jcmVhdGUobW9kdWxlTmFtZSwgZW50aXR5TmFtZSk7XG59O1xuIl19
@@ -85,7 +85,7 @@ export class AXPLookupWidgetEditComponent extends AXPWidgetComponent {
85
85
  this.isOpen.set(true);
86
86
  this.popupService
87
87
  .open(AXPLookupWidgetSelectorComponent, {
88
- title: `${this.entityDef?.formats.plural} Lookup`,
88
+ title: this.entityDef?.formats.plural + ' ' + this.translateService.translateSync('widget.lookup.search'),
89
89
  size: (this.vm()?.columns().length ?? 0) > 3 ? 'lg' : 'md',
90
90
  data: {
91
91
  vm: new AXPLookupWidgetSelectorViewModel(this.injector, this.entityDef, this.filter),
@@ -254,4 +254,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
254
254
  type: ViewChild,
255
255
  args: [AXTextBoxComponent]
256
256
  }] } });
257
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXdpZGdldC1lZGl0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2VudGl0eS9zcmMvbGliL3dpZGdldHMvbG9va3VwLXdpZGdldC9sb29rdXAtd2lkZ2V0LWVkaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQVEzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRzdELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBRVYsUUFBUSxFQUNSLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVB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VUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDOzhHQTlLVSw0QkFBNEI7a0dBQTVCLDRCQUE0QixpSEEwQjVCLGtCQUFrQix1RUFwRW5COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQlQsMkRBSUMsWUFBWSw4QkFDWixXQUFXLDhWQUNYLGlCQUFpQiw4QkFDakIsZUFBZSxxYkFDZixjQUFjLHVaQUNkLGlCQUFpQix1Y0FDakIsZUFBZSw4S0FDZixrQkFBa0IsOEJBQ2xCLFlBQVk7OzJGQUdILDRCQUE0QjtrQkEzQ3hDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQlQ7b0JBQ0QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLFlBQVk7cUJBQ2I7aUJBQ0Y7OEJBNEJDLE9BQU87c0JBRE4sU0FBUzt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHtcbiAgQVhDbGlja0V2ZW50LFxuICBBWERhdGFTb3VyY2VGaWx0ZXJPcHRpb24sXG4gIEFYRm9jdXNFdmVudCxcbiAgQVhIdG1sRXZlbnQsXG4gIEFYVmFsdWVDaGFuZ2VkRXZlbnQsXG59IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWEZvcm1Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZm9ybSc7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWFBvcHVwU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3B1cCc7XG5pbXBvcnQgeyBBWFNlbGVjdEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zZWxlY3QtYm94JztcbmltcG9ydCB7IEFYVGV4dEJveENvbXBvbmVudCwgQVhUZXh0Qm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RleHQtYm94JztcbmltcG9ydCB7IEFYRm9ybWF0U2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhWYWxpZGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgQVhQRW50aXR5LCBBWFBRdWVyeUZpbHRlciB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUFZhbGlkYXRpb25SdWxlcyB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyU2VydmljZSwgQVhQV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0b3IsXG4gIFZpZXdDaGlsZCxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZ2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYUF9FTlRJVFlfREVGSU5JVElPTl9MT0FERVIgfSBmcm9tICcuLi8uLi9lbnRpdHkuY29uZmlnJztcbmltcG9ydCB7IEFYUExvb2t1cFdpZGdldFNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9sb29rdXAtd2lkZ2V0LXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBMb29rdXBXaWRnZXRTZWxlY3RvclZpZXdNb2RlbCB9IGZyb20gJy4vbG9va3VwLXdpZGdldC1zZWxlY3Rvci52aWV3bW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6IGBcbiAgICA8YXgtdGV4dC1ib3hcbiAgICAgIFtuZ01vZGVsXT1cImRpc3BsYXlUZXh0KClcIlxuICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cImhhbmRsZVZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxuICAgICAgKG9uS2V5VXApPVwiaGFuZGxlS2V5RG93bigkZXZlbnQpXCJcbiAgICAgIChvbkJsdXIpPVwiaGFuZGxlT25CbHVyKCRldmVudClcIlxuICAgID5cbiAgICAgIEBmb3IgKHZhbGlkYXRpb24gb2YgdmFsaWRhdGlvblJ1bGVzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgIDxheC12YWxpZGF0aW9uLXJ1bGVcbiAgICAgICAgW3J1bGVdPVwidmFsaWRhdGlvbi5ydWxlXCJcbiAgICAgICAgW21lc3NhZ2VdPVwidmFsaWRhdGlvbi5vcHRpb25zPy5tZXNzYWdlXCJcbiAgICAgICAgW29wdGlvbnNdPVwidmFsaWRhdGlvbi5vcHRpb25zXCJcbiAgICAgID48L2F4LXZhbGlkYXRpb24tcnVsZT5cbiAgICAgIH1cbiAgICAgIDxheC1jbGVhci1idXR0b24gKGNsaWNrKT1cImhhbmRsZUNsZWFyQ2xpY2soKVwiPjwvYXgtY2xlYXItYnV0dG9uPlxuXG4gICAgICA8YXgtc3VmZml4PlxuICAgICAgICA8YXgtYnV0dG9uIGNvbG9yPVwiZ2hvc3RcIiBsb29rPVwidHdvdG9uZVwiIFtkaXNhYmxlZF09XCJpc0xvYWRpbmcoKVwiIChvbkNsaWNrKT1cImhhbmRsZU9uQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgIEBpZihpc0xvYWRpbmcoKSkge1xuICAgICAgICAgIDxheC1sb2FkaW5nPjwvYXgtbG9hZGluZz5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmFyIGZhLXNlYXJjaFwiPiA8L2F4LWljb24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgIDwvYXgtc3VmZml4PlxuICAgIDwvYXgtdGV4dC1ib3g+XG4gIGAsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEFYU2VsZWN0Qm94TW9kdWxlLFxuICAgIEFYVGV4dEJveE1vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICBBWExvYWRpbmdNb2R1bGUsXG4gICAgQVhWYWxpZGF0aW9uTW9kdWxlLFxuICAgIEFYRm9ybU1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQTG9va3VwV2lkZ2V0RWRpdENvbXBvbmVudCBleHRlbmRzIEFYUFdpZGdldENvbXBvbmVudDxhbnk+IHtcbiAgcHJvdGVjdGVkIGV4cG9zZSA9IGNvbXB1dGVkPHN0cmluZyB8IHVuZGVmaW5lZCB8IGFueVtdPigoKSA9PiB0aGlzLm9wdGlvbnMoKVsnZXhwb3NlJ10gYXMgc3RyaW5nKTtcbiAgcHJvdGVjdGVkIGVudGl0eSA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4gdGhpcy5vcHRpb25zKClbJ2VudGl0eSddIGFzIHN0cmluZyk7XG5cbiAgcHJvdGVjdGVkIHRleHRGaWVsZCA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcblxuICBwcm90ZWN0ZWQgY29uZGl0aW9ucz86IEFYUFF1ZXJ5RmlsdGVyW107XG5cbiAgcHJvdGVjdGVkIGZpbHRlcjogQVhEYXRhU291cmNlRmlsdGVyT3B0aW9uIHwgbnVsbDtcblxuICBwcm90ZWN0ZWQgdmFsaWRhdGlvblJ1bGVzOiBBWFBWYWxpZGF0aW9uUnVsZXMgPSBbXTtcblxuICBwcm90ZWN0ZWQgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcm90ZWN0ZWQgbG9hZGVyID0gaW5qZWN0KEFYUF9FTlRJVFlfREVGSU5JVElPTl9MT0FERVIpO1xuICBwcm90ZWN0ZWQgZm9ybWF0U2VydmljZSA9IGluamVjdChBWEZvcm1hdFNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcG9wdXBTZXJ2aWNlID0gaW5qZWN0KEFYUG9wdXBTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBidWlsZGVyU2VydmljZSA9IGluamVjdChBWFBMYXlvdXRCdWlsZGVyU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBlbnRpdHlEZWY6IEFYUEVudGl0eSB8IG51bGw7XG5cbiAgcHJvdGVjdGVkIHNlYXJjaFRlcm0gPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgcHJvdGVjdGVkIGRpc3BsYXlUZXh0ID0gc2lnbmFsKCcnKTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkSXRlbSA9IHNpZ25hbDxhbnkgfCBudWxsPihudWxsKTtcblxuICBAVmlld0NoaWxkKEFYVGV4dEJveENvbXBvbmVudClcbiAgdGV4dGJveDogQVhUZXh0Qm94Q29tcG9uZW50O1xuXG4gIHByb3RlY3RlZCBpc0xvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuXG4gIHByb3RlY3RlZCBpc09wZW4gPSBzaWduYWwoZmFsc2UpO1xuXG4gIHByb3RlY3RlZCB2bSA9IHNpZ25hbDxBWFBMb29rdXBXaWRnZXRTZWxlY3RvclZpZXdNb2RlbCB8IG51bGw+KG51bGwpO1xuXG4gIHByb3RlY3RlZCBwbGFjZWhvbGRlciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZVN5bmMoJ3dpZGdldC5sb29rdXAuc2VhcmNoJykgKyB0aGlzLnZtKCk/LmlubGluZUZpbHRlcnNQbGFjZWhvbGRlcnMoKS5qb2luKCcsICcpXG4gICAgKTtcbiAgfSk7XG5cbiAgb3ZlcnJpZGUgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAvL1xuICAgIGNvbnN0IFttb2R1bGUsIGVudGl0eV0gPSB0aGlzLmVudGl0eSgpLnNwbGl0KCcuJyk7XG4gICAgdGhpcy5lbnRpdHlEZWYgPSBhd2FpdCB0aGlzLmxvYWRlci5nZXQobW9kdWxlLCBlbnRpdHkpO1xuICAgIC8vXG4gICAgdGhpcy52bS5zZXQobmV3IEFYUExvb2t1cFdpZGdldFNlbGVjdG9yVmlld01vZGVsKHRoaXMuaW5qZWN0b3IsIHRoaXMuZW50aXR5RGVmISwgdGhpcy5maWx0ZXIpKTtcbiAgICAvL1xuICAgIHRoaXMudGV4dEZpZWxkLnNldChcbiAgICAgIHRoaXMuZW50aXR5RGVmPy5mb3JtYXRzLmxvb2t1cCA/PyB0aGlzLmVudGl0eURlZj8ucHJvcGVydGllcy5maW5kKChjKSA9PiBjLm5hbWUgIT0gJ2lkJyk/Lm5hbWUgPz8gJ3RpdGxlJ1xuICAgICk7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICB0aGlzLmRpc3BsYXlUZXh0LnNldCh0aGlzLmZvcm1hdFNlcnZpY2UuZm9ybWF0KHRoaXMudGV4dEZpZWxkKCksICdzdHJpbmcnLCB2YWx1ZSkpO1xuICAgIGVsc2UgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIGF3YWl0IHRoaXMuZmluZEJ5VmFsdWUoKTtcbiAgICB9XG4gICAgLy9cbiAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlLm9uQ2hhbmdlZC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoYXN5bmMgKGMpID0+IHtcbiAgICAgIGlmIChjLnBhdGggPT0gdGhpcy5wYXRoKSB7XG4gICAgICAgIGlmICh0aGlzLmdldFZhbHVlKCkpIGF3YWl0IHRoaXMuZmluZEJ5VmFsdWUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmluZEJ5VmFsdWUoKSB7XG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgIGNvbnN0IGJ5S2V5ID0gdGhpcy5lbnRpdHlEZWY/LnF1ZXJpZXMuYnlLZXk/LmV4ZWN1dGUgYXMgRnVuY3Rpb247XG4gICAgY29uc3QgaXRlbSA9IGF3YWl0IGJ5S2V5KHRoaXMuZ2V0VmFsdWUoKSk7XG4gICAgdGhpcy5zZXRJdGVtcyhpdGVtKTtcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICB9XG5cbiAgaGFuZGxlT25DbGljayhlOiBBWENsaWNrRXZlbnQpIHtcbiAgICB0aGlzLnNob3dTZWxlY3RvcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93U2VsZWN0b3IoKSB7XG4gICAgdGhpcy5pc09wZW4uc2V0KHRydWUpO1xuICAgIHRoaXMucG9wdXBTZXJ2aWNlXG4gICAgICAub3BlbihBWFBMb29rdXBXaWRnZXRTZWxlY3RvckNvbXBvbmVudCwge1xuICAgICAgICB0aXRsZTogYCR7dGhpcy5lbnRpdHlEZWY/LmZvcm1hdHMucGx1cmFsfSBMb29rdXBgLFxuICAgICAgICBzaXplOiAodGhpcy52bSgpPy5jb2x1bW5zKCkubGVuZ3RoID8/IDApID4gMyA/ICdsZycgOiAnbWQnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgdm06IG5ldyBBWFBMb29rdXBXaWRnZXRTZWxlY3RvclZpZXdNb2RlbCh0aGlzLmluamVjdG9yLCB0aGlzLmVudGl0eURlZiEsIHRoaXMuZmlsdGVyKSxcbiAgICAgICAgICBzZWFyY2hUZXJtOiB0aGlzLnNlYXJjaFRlcm0oKSA9PSB0aGlzLmRpc3BsYXlUZXh0KCkgPyBudWxsIDogdGhpcy5zZWFyY2hUZXJtKCksXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLnRoZW4oKGU6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmlzT3Blbi5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLnRleHRib3guZm9jdXMoKTtcbiAgICAgICAgaWYgKGUuZGF0YT8uaXRlbXMpIHtcbiAgICAgICAgICB0aGlzLnNldEl0ZW1zKGUuZGF0YT8uaXRlbXNbMF0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVWYWx1ZUNoYW5nZShlOiBBWFZhbHVlQ2hhbmdlZEV2ZW50KSB7XG4gICAgdGhpcy5zZWFyY2hUZXJtLnNldChlLnZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVPbkJsdXIoZTogQVhGb2N1c0V2ZW50KSB7XG4gICAgY29uc3QgY29tID0gZS5jb21wb25lbnQgYXMgQVhUZXh0Qm94Q29tcG9uZW50O1xuICAgIGNvbnN0IGlucHV0ID0gKGNvbVsnaW5wdXQnXSBhcyBFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW0oKSkge1xuICAgICAgICBpbnB1dC52YWx1ZSA9IHRoaXMuZGlzcGxheVRleHQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghdGhpcy5pc09wZW4oKSkge1xuICAgICAgICAgIGlucHV0LnZhbHVlID0gJyc7XG4gICAgICAgICAgdGhpcy5zZWFyY2hUZXJtLnNldChudWxsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIDEwMCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlS2V5RG93bihlOiBBWEh0bWxFdmVudCkge1xuICAgIGNvbnN0IGtleUV2ZW50ID0gZS5uYXRpdmVFdmVudCBhcyBLZXlib2FyZEV2ZW50O1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5zZWFyY2hUZXJtKCk/LnRyaW0oKTtcbiAgICBpZiAoKGtleUV2ZW50LmNvZGUgPT0gJ0VudGVyJyB8fCBrZXlFdmVudC5jb2RlID09ICdOdW1wYWRFbnRlcicpICYmIHZhbHVlKSB7XG4gICAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnZtKCk/LmZpbmQodmFsdWUpO1xuICAgICAgaWYgKHJlc3VsdD8udG90YWwgPT0gMSkge1xuICAgICAgICB0aGlzLnNldEl0ZW1zKHJlc3VsdC5pdGVtc1swXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNob3dTZWxlY3RvcigpO1xuICAgICAgfVxuICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEl0ZW1zKGl0ZW06IGFueSkge1xuICAgIHRoaXMuc2VhcmNoVGVybS5zZXQobnVsbCk7XG4gICAgdGhpcy5kaXNwbGF5VGV4dC5zZXQoJycpO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtLnNldChpdGVtKTtcbiAgICBjb25zdCB0ZXh0ID0gdGhpcy5mb3JtYXRTZXJ2aWNlLmZvcm1hdCh0aGlzLnRleHRGaWVsZCgpLCAnc3RyaW5nJywgaXRlbSk7XG4gICAgdGhpcy5kaXNwbGF5VGV4dC5zZXQodGV4dCk7XG4gICAgdGhpcy5zZXRWYWx1ZShpdGVtLmlkKTtcbiAgICAvLyBleHRyYWN0IGRhdGEgZnJvbSB2YWx1ZUZpZWxkIGFuZCBzZXQgY29udGV4dCBieSBleHBvc2UgcGF0aFxuICAgIGlmICh0aGlzLmV4cG9zZSgpKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuZXhwb3NlKCkgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhpcy5idWlsZGVyU2VydmljZS5zZXRWYWx1ZSh0aGlzLmV4cG9zZSgpIGFzIHN0cmluZywgaXRlbSk7XG4gICAgICB9XG4gICAgICAvLyBzdXBwb3J0IG11bHRpcGxlIGV4cG9zZSBpdGVtc1xuICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmV4cG9zZSgpKSkge1xuICAgICAgICAodGhpcy5leHBvc2UoKSBhcyBhbnlbXSkuZm9yRWFjaCgoaSkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgaSA9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhpcy5idWlsZGVyU2VydmljZS5zZXRWYWx1ZShpLCBpdGVtKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gZXh0cmFjdCBkYXRhIGZyb20gaXRlbSBieSBzb3VyY2UgcGF0aCBhbmQgc2V0IGNvbnRleHQgYnkgdGFyZ2V0IHBhdGhcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGdldChpdGVtLCBpLnNvdXJjZSk7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlLnNldFZhbHVlKGkudGFyZ2V0LCBrZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICAvLyBleHRyYWN0IGRhdGEgZnJvbSBpdGVtIGJ5IHNvdXJjZSBwYXRoIGFuZCBzZXQgY29udGV4dCBieSB0YXJnZXQgcGF0aFxuICAgICAgZWxzZSBpZiAodHlwZW9mIHRoaXMuZXhwb3NlKCkgPT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3QgaSA9IHRoaXMuZXhwb3NlKCkgYXMgYW55O1xuICAgICAgICBjb25zdCBrZXkgPSBnZXQoaXRlbSwgaS5zb3VyY2UpO1xuICAgICAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlLnNldFZhbHVlKGkudGFyZ2V0LCBrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVDbGVhckNsaWNrKCkge1xuICAgIHRoaXMuY2xlYXIoKTtcbiAgICB0aGlzLnNldFZhbHVlKG51bGwpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyKCkge1xuICAgIHRoaXMuc2VhcmNoVGVybS5zZXQoJycpO1xuICAgIHRoaXMuZGlzcGxheVRleHQuc2V0KCcnKTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbS5zZXQobnVsbCk7XG4gIH1cbn1cbiJdfQ==
257
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXdpZGdldC1lZGl0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2VudGl0eS9zcmMvbGliL3dpZGdldHMvbG9va3VwLXdpZGdldC9sb29rdXAtd2lkZ2V0LWVkaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQVEzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRzdELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBRVYsUUFBUSxFQUNSLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVB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QUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQzs4R0E5S1UsNEJBQTRCO2tHQUE1Qiw0QkFBNEIsaUhBMEI1QixrQkFBa0IsdUVBcEVuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJULDJEQUlDLFlBQVksOEJBQ1osV0FBVyw4VkFDWCxpQkFBaUIsOEJBQ2pCLGVBQWUscWJBQ2YsY0FBYyx1WkFDZCxpQkFBaUIsdWNBQ2pCLGVBQWUsOEtBQ2Ysa0JBQWtCLDhCQUNsQixZQUFZOzsyRkFHSCw0QkFBNEI7a0JBM0N4QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJUO29CQUNELFVBQVUsRUFBRSxJQUFJO29CQUNoQixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixZQUFZO3FCQUNiO2lCQUNGOzhCQTRCQyxPQUFPO3NCQUROLFNBQVM7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7XG4gIEFYQ2xpY2tFdmVudCxcbiAgQVhEYXRhU291cmNlRmlsdGVyT3B0aW9uLFxuICBBWEZvY3VzRXZlbnQsXG4gIEFYSHRtbEV2ZW50LFxuICBBWFZhbHVlQ2hhbmdlZEV2ZW50LFxufSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhGb3JtTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IHsgQVhMb2FkaW5nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhQb3B1cFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wdXAnO1xuaW1wb3J0IHsgQVhTZWxlY3RCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2VsZWN0LWJveCc7XG5pbXBvcnQgeyBBWFRleHRCb3hDb21wb25lbnQsIEFYVGV4dEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90ZXh0LWJveCc7XG5pbXBvcnQgeyBBWEZvcm1hdFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYVmFsaWRhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS92YWxpZGF0aW9uJztcbmltcG9ydCB7IEFYUEVudGl0eSwgQVhQUXVlcnlGaWx0ZXIgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBWYWxpZGF0aW9uUnVsZXMgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UsIEFYUFdpZGdldENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdG9yLFxuICBWaWV3Q2hpbGQsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWFBfRU5USVRZX0RFRklOSVRJT05fTE9BREVSIH0gZnJvbSAnLi4vLi4vZW50aXR5LmNvbmZpZyc7XG5pbXBvcnQgeyBBWFBMb29rdXBXaWRnZXRTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4vbG9va3VwLXdpZGdldC1zZWxlY3Rvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQTG9va3VwV2lkZ2V0U2VsZWN0b3JWaWV3TW9kZWwgfSBmcm9tICcuL2xvb2t1cC13aWRnZXQtc2VsZWN0b3Iudmlld21vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGF4LXRleHQtYm94XG4gICAgICBbbmdNb2RlbF09XCJkaXNwbGF5VGV4dCgpXCJcbiAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJoYW5kbGVWYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcigpXCJcbiAgICAgIChvbktleVVwKT1cImhhbmRsZUtleURvd24oJGV2ZW50KVwiXG4gICAgICAob25CbHVyKT1cImhhbmRsZU9uQmx1cigkZXZlbnQpXCJcbiAgICA+XG4gICAgICBAZm9yICh2YWxpZGF0aW9uIG9mIHZhbGlkYXRpb25SdWxlczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICA8YXgtdmFsaWRhdGlvbi1ydWxlXG4gICAgICAgIFtydWxlXT1cInZhbGlkYXRpb24ucnVsZVwiXG4gICAgICAgIFttZXNzYWdlXT1cInZhbGlkYXRpb24ub3B0aW9ucz8ubWVzc2FnZVwiXG4gICAgICAgIFtvcHRpb25zXT1cInZhbGlkYXRpb24ub3B0aW9uc1wiXG4gICAgICA+PC9heC12YWxpZGF0aW9uLXJ1bGU+XG4gICAgICB9XG4gICAgICA8YXgtY2xlYXItYnV0dG9uIChjbGljayk9XCJoYW5kbGVDbGVhckNsaWNrKClcIj48L2F4LWNsZWFyLWJ1dHRvbj5cblxuICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgPGF4LWJ1dHRvbiBjb2xvcj1cImdob3N0XCIgbG9vaz1cInR3b3RvbmVcIiBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nKClcIiAob25DbGljayk9XCJoYW5kbGVPbkNsaWNrKCRldmVudClcIj5cbiAgICAgICAgICBAaWYoaXNMb2FkaW5nKCkpIHtcbiAgICAgICAgICA8YXgtbG9hZGluZz48L2F4LWxvYWRpbmc+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhciBmYS1zZWFyY2hcIj4gPC9heC1pY29uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICA8L2F4LXN1ZmZpeD5cbiAgICA8L2F4LXRleHQtYm94PlxuICBgLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBBWFNlbGVjdEJveE1vZHVsZSxcbiAgICBBWFRleHRCb3hNb2R1bGUsXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhMb2FkaW5nTW9kdWxlLFxuICAgIEFYVmFsaWRhdGlvbk1vZHVsZSxcbiAgICBBWEZvcm1Nb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYUExvb2t1cFdpZGdldEVkaXRDb21wb25lbnQgZXh0ZW5kcyBBWFBXaWRnZXRDb21wb25lbnQ8YW55PiB7XG4gIHByb3RlY3RlZCBleHBvc2UgPSBjb21wdXRlZDxzdHJpbmcgfCB1bmRlZmluZWQgfCBhbnlbXT4oKCkgPT4gdGhpcy5vcHRpb25zKClbJ2V4cG9zZSddIGFzIHN0cmluZyk7XG4gIHByb3RlY3RlZCBlbnRpdHkgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHRoaXMub3B0aW9ucygpWydlbnRpdHknXSBhcyBzdHJpbmcpO1xuXG4gIHByb3RlY3RlZCB0ZXh0RmllbGQgPSBzaWduYWw8c3RyaW5nPignJyk7XG5cbiAgcHJvdGVjdGVkIGNvbmRpdGlvbnM/OiBBWFBRdWVyeUZpbHRlcltdO1xuXG4gIHByb3RlY3RlZCBmaWx0ZXI6IEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbiB8IG51bGw7XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRpb25SdWxlczogQVhQVmFsaWRhdGlvblJ1bGVzID0gW107XG5cbiAgcHJvdGVjdGVkIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgcHJvdGVjdGVkIGxvYWRlciA9IGluamVjdChBWFBfRU5USVRZX0RFRklOSVRJT05fTE9BREVSKTtcbiAgcHJvdGVjdGVkIGZvcm1hdFNlcnZpY2UgPSBpbmplY3QoQVhGb3JtYXRTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHBvcHVwU2VydmljZSA9IGluamVjdChBWFBvcHVwU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYnVpbGRlclNlcnZpY2UgPSBpbmplY3QoQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgZW50aXR5RGVmOiBBWFBFbnRpdHkgfCBudWxsO1xuXG4gIHByb3RlY3RlZCBzZWFyY2hUZXJtID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIHByb3RlY3RlZCBkaXNwbGF5VGV4dCA9IHNpZ25hbCgnJyk7XG4gIHByb3RlY3RlZCBzZWxlY3RlZEl0ZW0gPSBzaWduYWw8YW55IHwgbnVsbD4obnVsbCk7XG5cbiAgQFZpZXdDaGlsZChBWFRleHRCb3hDb21wb25lbnQpXG4gIHRleHRib3g6IEFYVGV4dEJveENvbXBvbmVudDtcblxuICBwcm90ZWN0ZWQgaXNMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcm90ZWN0ZWQgaXNPcGVuID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcm90ZWN0ZWQgdm0gPSBzaWduYWw8QVhQTG9va3VwV2lkZ2V0U2VsZWN0b3JWaWV3TW9kZWwgfCBudWxsPihudWxsKTtcblxuICBwcm90ZWN0ZWQgcGxhY2Vob2xkZXIgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVTeW5jKCd3aWRnZXQubG9va3VwLnNlYXJjaCcpICsgdGhpcy52bSgpPy5pbmxpbmVGaWx0ZXJzUGxhY2Vob2xkZXJzKCkuam9pbignLCAnKVxuICAgICk7XG4gIH0pO1xuXG4gIG92ZXJyaWRlIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgLy9cbiAgICBjb25zdCBbbW9kdWxlLCBlbnRpdHldID0gdGhpcy5lbnRpdHkoKS5zcGxpdCgnLicpO1xuICAgIHRoaXMuZW50aXR5RGVmID0gYXdhaXQgdGhpcy5sb2FkZXIuZ2V0KG1vZHVsZSwgZW50aXR5KTtcbiAgICAvL1xuICAgIHRoaXMudm0uc2V0KG5ldyBBWFBMb29rdXBXaWRnZXRTZWxlY3RvclZpZXdNb2RlbCh0aGlzLmluamVjdG9yLCB0aGlzLmVudGl0eURlZiEsIHRoaXMuZmlsdGVyKSk7XG4gICAgLy9cbiAgICB0aGlzLnRleHRGaWVsZC5zZXQoXG4gICAgICB0aGlzLmVudGl0eURlZj8uZm9ybWF0cy5sb29rdXAgPz8gdGhpcy5lbnRpdHlEZWY/LnByb3BlcnRpZXMuZmluZCgoYykgPT4gYy5uYW1lICE9ICdpZCcpPy5uYW1lID8/ICd0aXRsZSdcbiAgICApO1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKVxuICAgICAgdGhpcy5kaXNwbGF5VGV4dC5zZXQodGhpcy5mb3JtYXRTZXJ2aWNlLmZvcm1hdCh0aGlzLnRleHRGaWVsZCgpLCAnc3RyaW5nJywgdmFsdWUpKTtcbiAgICBlbHNlIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICBhd2FpdCB0aGlzLmZpbmRCeVZhbHVlKCk7XG4gICAgfVxuICAgIC8vXG4gICAgdGhpcy5idWlsZGVyU2VydmljZS5vbkNoYW5nZWQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKGFzeW5jIChjKSA9PiB7XG4gICAgICBpZiAoYy5wYXRoID09IHRoaXMucGF0aCkge1xuICAgICAgICBpZiAodGhpcy5nZXRWYWx1ZSgpKSBhd2FpdCB0aGlzLmZpbmRCeVZhbHVlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZpbmRCeVZhbHVlKCkge1xuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICBjb25zdCBieUtleSA9IHRoaXMuZW50aXR5RGVmPy5xdWVyaWVzLmJ5S2V5Py5leGVjdXRlIGFzIEZ1bmN0aW9uO1xuICAgIGNvbnN0IGl0ZW0gPSBhd2FpdCBieUtleSh0aGlzLmdldFZhbHVlKCkpO1xuICAgIHRoaXMuc2V0SXRlbXMoaXRlbSk7XG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIGhhbmRsZU9uQ2xpY2soZTogQVhDbGlja0V2ZW50KSB7XG4gICAgdGhpcy5zaG93U2VsZWN0b3IoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd1NlbGVjdG9yKCkge1xuICAgIHRoaXMuaXNPcGVuLnNldCh0cnVlKTtcbiAgICB0aGlzLnBvcHVwU2VydmljZVxuICAgICAgLm9wZW4oQVhQTG9va3VwV2lkZ2V0U2VsZWN0b3JDb21wb25lbnQsIHtcbiAgICAgICAgdGl0bGU6IHRoaXMuZW50aXR5RGVmPy5mb3JtYXRzLnBsdXJhbCArICcgJyArIHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVTeW5jKCd3aWRnZXQubG9va3VwLnNlYXJjaCcpLFxuICAgICAgICBzaXplOiAodGhpcy52bSgpPy5jb2x1bW5zKCkubGVuZ3RoID8/IDApID4gMyA/ICdsZycgOiAnbWQnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgdm06IG5ldyBBWFBMb29rdXBXaWRnZXRTZWxlY3RvclZpZXdNb2RlbCh0aGlzLmluamVjdG9yLCB0aGlzLmVudGl0eURlZiEsIHRoaXMuZmlsdGVyKSxcbiAgICAgICAgICBzZWFyY2hUZXJtOiB0aGlzLnNlYXJjaFRlcm0oKSA9PSB0aGlzLmRpc3BsYXlUZXh0KCkgPyBudWxsIDogdGhpcy5zZWFyY2hUZXJtKCksXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLnRoZW4oKGU6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmlzT3Blbi5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLnRleHRib3guZm9jdXMoKTtcbiAgICAgICAgaWYgKGUuZGF0YT8uaXRlbXMpIHtcbiAgICAgICAgICB0aGlzLnNldEl0ZW1zKGUuZGF0YT8uaXRlbXNbMF0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVWYWx1ZUNoYW5nZShlOiBBWFZhbHVlQ2hhbmdlZEV2ZW50KSB7XG4gICAgdGhpcy5zZWFyY2hUZXJtLnNldChlLnZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVPbkJsdXIoZTogQVhGb2N1c0V2ZW50KSB7XG4gICAgY29uc3QgY29tID0gZS5jb21wb25lbnQgYXMgQVhUZXh0Qm94Q29tcG9uZW50O1xuICAgIGNvbnN0IGlucHV0ID0gKGNvbVsnaW5wdXQnXSBhcyBFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW0oKSkge1xuICAgICAgICBpbnB1dC52YWx1ZSA9IHRoaXMuZGlzcGxheVRleHQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghdGhpcy5pc09wZW4oKSkge1xuICAgICAgICAgIGlucHV0LnZhbHVlID0gJyc7XG4gICAgICAgICAgdGhpcy5zZWFyY2hUZXJtLnNldChudWxsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIDEwMCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlS2V5RG93bihlOiBBWEh0bWxFdmVudCkge1xuICAgIGNvbnN0IGtleUV2ZW50ID0gZS5uYXRpdmVFdmVudCBhcyBLZXlib2FyZEV2ZW50O1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5zZWFyY2hUZXJtKCk/LnRyaW0oKTtcbiAgICBpZiAoKGtleUV2ZW50LmNvZGUgPT0gJ0VudGVyJyB8fCBrZXlFdmVudC5jb2RlID09ICdOdW1wYWRFbnRlcicpICYmIHZhbHVlKSB7XG4gICAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnZtKCk/LmZpbmQodmFsdWUpO1xuICAgICAgaWYgKHJlc3VsdD8udG90YWwgPT0gMSkge1xuICAgICAgICB0aGlzLnNldEl0ZW1zKHJlc3VsdC5pdGVtc1swXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNob3dTZWxlY3RvcigpO1xuICAgICAgfVxuICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEl0ZW1zKGl0ZW06IGFueSkge1xuICAgIHRoaXMuc2VhcmNoVGVybS5zZXQobnVsbCk7XG4gICAgdGhpcy5kaXNwbGF5VGV4dC5zZXQoJycpO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtLnNldChpdGVtKTtcbiAgICBjb25zdCB0ZXh0ID0gdGhpcy5mb3JtYXRTZXJ2aWNlLmZvcm1hdCh0aGlzLnRleHRGaWVsZCgpLCAnc3RyaW5nJywgaXRlbSk7XG4gICAgdGhpcy5kaXNwbGF5VGV4dC5zZXQodGV4dCk7XG4gICAgdGhpcy5zZXRWYWx1ZShpdGVtLmlkKTtcbiAgICAvLyBleHRyYWN0IGRhdGEgZnJvbSB2YWx1ZUZpZWxkIGFuZCBzZXQgY29udGV4dCBieSBleHBvc2UgcGF0aFxuICAgIGlmICh0aGlzLmV4cG9zZSgpKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuZXhwb3NlKCkgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhpcy5idWlsZGVyU2VydmljZS5zZXRWYWx1ZSh0aGlzLmV4cG9zZSgpIGFzIHN0cmluZywgaXRlbSk7XG4gICAgICB9XG4gICAgICAvLyBzdXBwb3J0IG11bHRpcGxlIGV4cG9zZSBpdGVtc1xuICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmV4cG9zZSgpKSkge1xuICAgICAgICAodGhpcy5leHBvc2UoKSBhcyBhbnlbXSkuZm9yRWFjaCgoaSkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgaSA9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhpcy5idWlsZGVyU2VydmljZS5zZXRWYWx1ZShpLCBpdGVtKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gZXh0cmFjdCBkYXRhIGZyb20gaXRlbSBieSBzb3VyY2UgcGF0aCBhbmQgc2V0IGNvbnRleHQgYnkgdGFyZ2V0IHBhdGhcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGdldChpdGVtLCBpLnNvdXJjZSk7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlLnNldFZhbHVlKGkudGFyZ2V0LCBrZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICAvLyBleHRyYWN0IGRhdGEgZnJvbSBpdGVtIGJ5IHNvdXJjZSBwYXRoIGFuZCBzZXQgY29udGV4dCBieSB0YXJnZXQgcGF0aFxuICAgICAgZWxzZSBpZiAodHlwZW9mIHRoaXMuZXhwb3NlKCkgPT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3QgaSA9IHRoaXMuZXhwb3NlKCkgYXMgYW55O1xuICAgICAgICBjb25zdCBrZXkgPSBnZXQoaXRlbSwgaS5zb3VyY2UpO1xuICAgICAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlLnNldFZhbHVlKGkudGFyZ2V0LCBrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVDbGVhckNsaWNrKCkge1xuICAgIHRoaXMuY2xlYXIoKTtcbiAgICB0aGlzLnNldFZhbHVlKG51bGwpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyKCkge1xuICAgIHRoaXMuc2VhcmNoVGVybS5zZXQoJycpO1xuICAgIHRoaXMuZGlzcGxheVRleHQuc2V0KCcnKTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbS5zZXQobnVsbCk7XG4gIH1cbn1cbiJdfQ==