@gipisistemas/ng-core 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (782) hide show
  1. package/assets/styles/colors.scss +261 -0
  2. package/assets/styles/layout-grid.scss +146 -0
  3. package/assets/styles/styles.scss +149 -0
  4. package/assets/styles/theme.scss +22 -0
  5. package/assets/styles/typography.scss +54 -0
  6. package/assets/styles/variable.scss +41 -0
  7. package/bundles/gipisistemas-ng-core.umd.js +28311 -0
  8. package/bundles/gipisistemas-ng-core.umd.js.map +1 -0
  9. package/bundles/gipisistemas-ng-core.umd.min.js +66 -0
  10. package/bundles/gipisistemas-ng-core.umd.min.js.map +1 -0
  11. package/core/app-messages.d.ts +9 -0
  12. package/core/app.messages.d.ts +4 -0
  13. package/core/components/abstract-crud.component.d.ts +27 -0
  14. package/core/components/abstract-find.component.d.ts +43 -0
  15. package/core/components/abstract.component.d.ts +23 -0
  16. package/core/components/alert/alert.component.d.ts +7 -0
  17. package/core/core.module.d.ts +17 -0
  18. package/core/custom-breakpoints.d.ts +7 -0
  19. package/core/enums/local-time.enum.d.ts +5 -0
  20. package/core/extensions/string.extension.d.ts +3 -0
  21. package/core/gipi-components/components/abstract-crud.component.d.ts +25 -0
  22. package/core/gipi-components/components/abstract-find.component.d.ts +73 -0
  23. package/core/gipi-components/components/abstract.component.d.ts +38 -0
  24. package/core/gipi-components/decorators/autowired.decorator.d.ts +7 -0
  25. package/core/gipi-components/enums/sort-direction.enum.d.ts +5 -0
  26. package/core/gipi-components/interface/abstract-crud.interface.d.ts +5 -0
  27. package/core/gipi-components/interface/abstract-find.interface.d.ts +12 -0
  28. package/core/gipi-components/interface/abstract.interface.d.ts +11 -0
  29. package/core/gipi-components/interface/base-permission.interface.d.ts +9 -0
  30. package/core/gipi-components/models/abstract-filter.model.d.ts +9 -0
  31. package/core/gipi-components/models/abstract.model.d.ts +7 -0
  32. package/core/gipi-components/models/applied-filter.model.d.ts +9 -0
  33. package/core/gipi-components/models/dto/abstract.dto.d.ts +7 -0
  34. package/core/gipi-components/models/page-event.model.d.ts +18 -0
  35. package/core/gipi-components/models/page.model.d.ts +7 -0
  36. package/core/gipi-components/models/sort.model.d.ts +6 -0
  37. package/core/gipi-components/services/abstract-crud.service.d.ts +83 -0
  38. package/core/gipi-components/services/abstract.service.d.ts +19 -0
  39. package/core/gipi-components/services/base.service.d.ts +35 -0
  40. package/core/gipi-components/services/file.service.d.ts +6 -0
  41. package/core/gipi-components/services/session-storage.service.d.ts +8 -0
  42. package/core/gipi-components/types/generic.type.d.ts +1 -0
  43. package/core/gipi-components/types/uuid.type.d.ts +1 -0
  44. package/core/guards/auth.guard.d.ts +11 -0
  45. package/core/guards/permission.guard.d.ts +14 -0
  46. package/core/guards/public.guard.d.ts +11 -0
  47. package/core/interceptors/auth.interceptor.d.ts +9 -0
  48. package/core/interceptors/error.interceptor.d.ts +11 -0
  49. package/core/models/abstract.model.d.ts +3 -0
  50. package/core/models/archive.model.d.ts +4 -0
  51. package/core/models/authority.model.d.ts +3 -0
  52. package/core/models/base-user.model.d.ts +12 -0
  53. package/core/models/dto/abstract.dto.d.ts +2 -0
  54. package/core/models/dto/api-error.dto.d.ts +9 -0
  55. package/core/models/dto/api-sub-error.dto.d.ts +7 -0
  56. package/core/models/dto/chart.dto.d.ts +5 -0
  57. package/core/models/dto/confirmation.dto.d.ts +10 -0
  58. package/core/models/dto/dialog.dto.d.ts +36 -0
  59. package/core/models/dto/filter.dto.d.ts +8 -0
  60. package/core/models/dto/input-listbox.dto.d.ts +6 -0
  61. package/core/models/dto/menu.dto.d.ts +15 -0
  62. package/core/models/dto/message.dto.d.ts +7 -0
  63. package/core/models/dto/page.dto.d.ts +8 -0
  64. package/core/models/dto/sort.dto.d.ts +7 -0
  65. package/core/models/dto/tab.dto.d.ts +12 -0
  66. package/core/models/dto/table-column.dto.d.ts +21 -0
  67. package/core/models/dto/table-group-header.dto.d.ts +7 -0
  68. package/core/models/dto/table-page-event.dto.d.ts +6 -0
  69. package/core/models/dto/token.dto.d.ts +8 -0
  70. package/core/models/enums/criteria-operation.enum.d.ts +13 -0
  71. package/core/models/enums/criteria-sort-direction.enum.d.ts +4 -0
  72. package/core/models/enums/menu-type.enum.d.ts +6 -0
  73. package/core/models/enums/radio-button.enum.d.ts +6 -0
  74. package/core/models/enums/sort-direction.enum.d.ts +4 -0
  75. package/core/models/multitenant.model.d.ts +4 -0
  76. package/core/models/permission.model.d.ts +8 -0
  77. package/core/models/role.model.d.ts +7 -0
  78. package/core/pipes/local-time.pipe.d.ts +6 -0
  79. package/core/services/abstract-crud.service.d.ts +15 -0
  80. package/core/services/abstract-find.service.d.ts +30 -0
  81. package/core/services/abstract.service.d.ts +13 -0
  82. package/core/services/authentication.service.d.ts +23 -0
  83. package/core/services/breakpoint-observer.service.d.ts +9 -0
  84. package/core/services/confirmation.service.d.ts +8 -0
  85. package/core/services/dialog.service.d.ts +8 -0
  86. package/core/services/message.service.d.ts +8 -0
  87. package/core/services/nav.service.d.ts +16 -0
  88. package/core/services/svg-register.service.d.ts +22 -0
  89. package/core/types/local-time.type.d.ts +5 -0
  90. package/core/types/ng-class.type.d.ts +10 -0
  91. package/core/utils/array.util.d.ts +14 -0
  92. package/core/utils/browser.util.d.ts +4 -0
  93. package/core/utils/currency.util.d.ts +6 -0
  94. package/core/utils/date.util.d.ts +39 -0
  95. package/core/utils/document.util.d.ts +11 -0
  96. package/core/utils/email.util.d.ts +4 -0
  97. package/core/utils/number.util.d.ts +8 -0
  98. package/core/utils/object.util.d.ts +20 -0
  99. package/core/utils/password.util.d.ts +11 -0
  100. package/core/utils/phone.util.d.ts +13 -0
  101. package/core/utils/string.util.d.ts +9 -0
  102. package/core/utils/table-column-builder.d.ts +40 -0
  103. package/core/utils/time.util.d.ts +9 -0
  104. package/core/utils/url-params.util.d.ts +7 -0
  105. package/core/utils/uuid.util.d.ts +5 -0
  106. package/core/utils/zindex.util.d.ts +7 -0
  107. package/core.d.ts +88 -0
  108. package/esm2015/core/app-messages.js +1 -0
  109. package/esm2015/core/app.messages.js +12 -0
  110. package/esm2015/core/components/abstract-crud.component.js +97 -0
  111. package/esm2015/core/components/abstract-find.component.js +189 -0
  112. package/esm2015/core/components/abstract.component.js +110 -0
  113. package/esm2015/core/components/alert/alert.component.js +24 -0
  114. package/esm2015/core/core.module.js +103 -0
  115. package/esm2015/core/custom-breakpoints.js +87 -0
  116. package/esm2015/core/enums/local-time.enum.js +6 -0
  117. package/esm2015/core/extensions/string.extension.js +37 -0
  118. package/esm2015/core/gipi-components/components/abstract-crud.component.js +110 -0
  119. package/esm2015/core/gipi-components/components/abstract-find.component.js +471 -0
  120. package/esm2015/core/gipi-components/components/abstract.component.js +140 -0
  121. package/esm2015/core/gipi-components/decorators/autowired.decorator.js +47 -0
  122. package/esm2015/core/gipi-components/enums/sort-direction.enum.js +6 -0
  123. package/esm2015/core/gipi-components/interface/abstract-crud.interface.js +1 -0
  124. package/esm2015/core/gipi-components/interface/abstract-find.interface.js +1 -0
  125. package/esm2015/core/gipi-components/interface/abstract.interface.js +1 -0
  126. package/esm2015/core/gipi-components/interface/base-permission.interface.js +1 -0
  127. package/esm2015/core/gipi-components/models/abstract-filter.model.js +3 -0
  128. package/esm2015/core/gipi-components/models/abstract.model.js +3 -0
  129. package/esm2015/core/gipi-components/models/applied-filter.model.js +19 -0
  130. package/esm2015/core/gipi-components/models/dto/abstract.dto.js +3 -0
  131. package/esm2015/core/gipi-components/models/page-event.model.js +35 -0
  132. package/esm2015/core/gipi-components/models/page.model.js +7 -0
  133. package/esm2015/core/gipi-components/models/sort.model.js +7 -0
  134. package/esm2015/core/gipi-components/services/abstract-crud.service.js +109 -0
  135. package/esm2015/core/gipi-components/services/abstract.service.js +47 -0
  136. package/esm2015/core/gipi-components/services/base.service.js +102 -0
  137. package/esm2015/core/gipi-components/services/file.service.js +51 -0
  138. package/esm2015/core/gipi-components/services/session-storage.service.js +44 -0
  139. package/esm2015/core/gipi-components/types/generic.type.js +1 -0
  140. package/esm2015/core/gipi-components/types/uuid.type.js +1 -0
  141. package/esm2015/core/guards/auth.guard.js +48 -0
  142. package/esm2015/core/guards/permission.guard.js +61 -0
  143. package/esm2015/core/guards/public.guard.js +45 -0
  144. package/esm2015/core/interceptors/auth.interceptor.js +28 -0
  145. package/esm2015/core/interceptors/error.interceptor.js +110 -0
  146. package/esm2015/core/models/abstract.model.js +3 -0
  147. package/esm2015/core/models/archive.model.js +3 -0
  148. package/esm2015/core/models/authority.model.js +3 -0
  149. package/esm2015/core/models/base-user.model.js +8 -0
  150. package/esm2015/core/models/dto/abstract.dto.js +3 -0
  151. package/esm2015/core/models/dto/api-error.dto.js +8 -0
  152. package/esm2015/core/models/dto/api-sub-error.dto.js +4 -0
  153. package/esm2015/core/models/dto/chart.dto.js +4 -0
  154. package/esm2015/core/models/dto/confirmation.dto.js +8 -0
  155. package/esm2015/core/models/dto/dialog.dto.js +4 -0
  156. package/esm2015/core/models/dto/filter.dto.js +4 -0
  157. package/esm2015/core/models/dto/input-listbox.dto.js +7 -0
  158. package/esm2015/core/models/dto/menu.dto.js +9 -0
  159. package/esm2015/core/models/dto/message.dto.js +4 -0
  160. package/esm2015/core/models/dto/page.dto.js +9 -0
  161. package/esm2015/core/models/dto/sort.dto.js +9 -0
  162. package/esm2015/core/models/dto/tab.dto.js +10 -0
  163. package/esm2015/core/models/dto/table-column.dto.js +24 -0
  164. package/esm2015/core/models/dto/table-group-header.dto.js +10 -0
  165. package/esm2015/core/models/dto/table-page-event.dto.js +7 -0
  166. package/esm2015/core/models/dto/token.dto.js +4 -0
  167. package/esm2015/core/models/enums/criteria-operation.enum.js +15 -0
  168. package/esm2015/core/models/enums/criteria-sort-direction.enum.js +6 -0
  169. package/esm2015/core/models/enums/menu-type.enum.js +7 -0
  170. package/esm2015/core/models/enums/radio-button.enum.js +8 -0
  171. package/esm2015/core/models/enums/sort-direction.enum.js +6 -0
  172. package/esm2015/core/models/multitenant.model.js +4 -0
  173. package/esm2015/core/models/permission.model.js +11 -0
  174. package/esm2015/core/models/role.model.js +8 -0
  175. package/esm2015/core/pipes/local-time.pipe.js +21 -0
  176. package/esm2015/core/services/abstract-crud.service.js +24 -0
  177. package/esm2015/core/services/abstract-find.service.js +65 -0
  178. package/esm2015/core/services/abstract.service.js +30 -0
  179. package/esm2015/core/services/authentication.service.js +100 -0
  180. package/esm2015/core/services/breakpoint-observer.service.js +42 -0
  181. package/esm2015/core/services/confirmation.service.js +55 -0
  182. package/esm2015/core/services/dialog.service.js +41 -0
  183. package/esm2015/core/services/message.service.js +33 -0
  184. package/esm2015/core/services/nav.service.js +48 -0
  185. package/esm2015/core/services/svg-register.service.js +55 -0
  186. package/esm2015/core/types/local-time.type.js +1 -0
  187. package/esm2015/core/types/ng-class.type.js +1 -0
  188. package/esm2015/core/utils/array.util.js +110 -0
  189. package/esm2015/core/utils/browser.util.js +13 -0
  190. package/esm2015/core/utils/currency.util.js +21 -0
  191. package/esm2015/core/utils/date.util.js +257 -0
  192. package/esm2015/core/utils/document.util.js +153 -0
  193. package/esm2015/core/utils/email.util.js +25 -0
  194. package/esm2015/core/utils/number.util.js +28 -0
  195. package/esm2015/core/utils/object.util.js +199 -0
  196. package/esm2015/core/utils/password.util.js +38 -0
  197. package/esm2015/core/utils/phone.util.js +125 -0
  198. package/esm2015/core/utils/string.util.js +40 -0
  199. package/esm2015/core/utils/table-column-builder.js +85 -0
  200. package/esm2015/core/utils/time.util.js +59 -0
  201. package/esm2015/core/utils/url-params.util.js +12 -0
  202. package/esm2015/core/utils/uuid.util.js +17 -0
  203. package/esm2015/core/utils/zindex.util.js +35 -0
  204. package/esm2015/core.js +89 -0
  205. package/esm2015/gipi-components.js +105 -0
  206. package/esm2015/gipisistemas-ng-core.js +21 -0
  207. package/esm2015/public_api.js +4 -0
  208. package/esm2015/shared/api/generate-id-component.js +12 -0
  209. package/esm2015/shared/api/gipi-ng-config.js +76 -0
  210. package/esm2015/shared/api/overlay-message.js +1 -0
  211. package/esm2015/shared/api/throttle.js +60 -0
  212. package/esm2015/shared/api/translation.js +1 -0
  213. package/esm2015/shared/components/button/button.component.js +110 -0
  214. package/esm2015/shared/components/card/card.component.js +44 -0
  215. package/esm2015/shared/components/checkbox/checkbox.component.js +79 -0
  216. package/esm2015/shared/components/dom/connected-overlay-scroll-handler.js +27 -0
  217. package/esm2015/shared/components/dom/dom-handler.js +538 -0
  218. package/esm2015/shared/components/icon/icon.component.js +35 -0
  219. package/esm2015/shared/components/input/input.component.js +235 -0
  220. package/esm2015/shared/components/input-currency/input-currency.component.js +115 -0
  221. package/esm2015/shared/components/input-file/input-file.component.js +161 -0
  222. package/esm2015/shared/components/loading/loading.component.js +15 -0
  223. package/esm2015/shared/components/loading-overlay/loading-overlay.component.js +21 -0
  224. package/esm2015/shared/components/overlay-panel/overlay-panel.component.js +361 -0
  225. package/esm2015/shared/components/popover/popover-ref.js +25 -0
  226. package/esm2015/shared/components/popover/popover.component.js +34 -0
  227. package/esm2015/shared/components/popover/popover.service.js +85 -0
  228. package/esm2015/shared/components/radio-group-entity/radio-group-entity.component.js +74 -0
  229. package/esm2015/shared/components/radio-group-enum/radio-group-enum.component.js +126 -0
  230. package/esm2015/shared/components/select-button/select-button.component.js +181 -0
  231. package/esm2015/shared/components/select-entity/select-entity.component.js +262 -0
  232. package/esm2015/shared/components/select-entity-paged/select-entity-paged.component.js +419 -0
  233. package/esm2015/shared/components/select-entity-paged/shared/default-options.js +35 -0
  234. package/esm2015/shared/components/select-entity-paged/shared/select-button-add/select-button-add.component.js +69 -0
  235. package/esm2015/shared/components/select-entity-paged/shared/select-button-next-batch/select-button-next-batch.component.js +59 -0
  236. package/esm2015/shared/components/select-entity-paged/shared/select-no-entries-found.directive.js +20 -0
  237. package/esm2015/shared/components/select-entity-paged/shared/select-search/select-search.component.js +547 -0
  238. package/esm2015/shared/components/select-entity-paged/shared/select-search-clear.directive.js +18 -0
  239. package/esm2015/shared/components/select-enum/select-enum.component.js +117 -0
  240. package/esm2015/shared/components/select-month-period/select-month-period.component.js +87 -0
  241. package/esm2015/shared/components/slide-toggle/slide-toggle.component.js +75 -0
  242. package/esm2015/shared/components/stepper/stepper.component.js +32 -0
  243. package/esm2015/shared/components/tab/tab.component.js +57 -0
  244. package/esm2015/shared/components/tab-group/tab-group.component.js +117 -0
  245. package/esm2015/shared/components/table/table.component.js +523 -0
  246. package/esm2015/shared/components/table-scrolled/table-scrolled.component.js +105 -0
  247. package/esm2015/shared/components/textarea/textarea.component.js +156 -0
  248. package/esm2015/shared/directives/dynamic-tab.directive.js +18 -0
  249. package/esm2015/shared/directives/generic-template.directive.js +30 -0
  250. package/esm2015/shared/directives/input-select-infinite-scroll.directive.js +109 -0
  251. package/esm2015/shared/directives/lower-case.directive.js +47 -0
  252. package/esm2015/shared/directives/phone-mask.directive.js +60 -0
  253. package/esm2015/shared/directives/space-drop.directive.js +47 -0
  254. package/esm2015/shared/directives/upper-case.directive.js +47 -0
  255. package/esm2015/shared/gipi-components/abstract-form/abstract-form.component.js +119 -0
  256. package/esm2015/shared/gipi-components/action-row/action-row.component.js +30 -0
  257. package/esm2015/shared/gipi-components/badge/badge.component.js +44 -0
  258. package/esm2015/shared/gipi-components/button/button.component.js +251 -0
  259. package/esm2015/shared/gipi-components/chips/chips.component.js +149 -0
  260. package/esm2015/shared/gipi-components/confirmation-dialog/confirmation-dialog.component.js +44 -0
  261. package/esm2015/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.js +324 -0
  262. package/esm2015/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range-selection-startegy.js +41 -0
  263. package/esm2015/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range.directive.js +35 -0
  264. package/esm2015/shared/gipi-components/datepicker/date-range-picker/shared/preset-range/preset-range.component.js +259 -0
  265. package/esm2015/shared/gipi-components/datepicker/datepicker/datepicker.component.js +218 -0
  266. package/esm2015/shared/gipi-components/datepicker/datepicker.module.js +130 -0
  267. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/calendar-body.js +341 -0
  268. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/calendar.js +397 -0
  269. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-input-parts.js +325 -0
  270. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-input.js +329 -0
  271. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-picker.js +41 -0
  272. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-selection-strategy.js +61 -0
  273. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-selection-model.js +159 -0
  274. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-animations.js +35 -0
  275. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-base.js +555 -0
  276. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-errors.js +14 -0
  277. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-input-base.js +303 -0
  278. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-input.js +179 -0
  279. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-intl.js +51 -0
  280. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-toggle.js +124 -0
  281. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker.js +29 -0
  282. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/month-view.js +365 -0
  283. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/multi-year-view.js +305 -0
  284. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-adapter.js +116 -0
  285. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-formats.js +10 -0
  286. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-adapter.js +294 -0
  287. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-formats.js +19 -0
  288. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/platform.js +81 -0
  289. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/year-view.js +294 -0
  290. package/esm2015/shared/gipi-components/dom/connected-overlay-scroll-handler.js +27 -0
  291. package/esm2015/shared/gipi-components/dom/dom-handler.js +645 -0
  292. package/esm2015/shared/gipi-components/dropdown-menu/dropdown-menu.component.js +185 -0
  293. package/esm2015/shared/gipi-components/expansion-panel/expansion-panel.component.js +81 -0
  294. package/esm2015/shared/gipi-components/file-drag-and-drop/file-drag-and-drop.component.js +240 -0
  295. package/esm2015/shared/gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive.js +92 -0
  296. package/esm2015/shared/gipi-components/footer/footer.component.js +29 -0
  297. package/esm2015/shared/gipi-components/form-field/form-field.component.js +262 -0
  298. package/esm2015/shared/gipi-components/helpful-tip/helpful-tip.component.js +62 -0
  299. package/esm2015/shared/gipi-components/infinite-scroll/infinite-scroll.directive.js +103 -0
  300. package/esm2015/shared/gipi-components/input-checkbox/input-checkbox.component.js +112 -0
  301. package/esm2015/shared/gipi-components/input-currency/input-currency.component.js +197 -0
  302. package/esm2015/shared/gipi-components/input-monthpicker/input-monthpicker.component.js +408 -0
  303. package/esm2015/shared/gipi-components/input-select/input-select.component.js +655 -0
  304. package/esm2015/shared/gipi-components/input-select-enum/input-select-enum.component.js +311 -0
  305. package/esm2015/shared/gipi-components/input-select-listbox/input-select-listbox.component.js +422 -0
  306. package/esm2015/shared/gipi-components/input-select-paged/input-search/input-search.component.js +374 -0
  307. package/esm2015/shared/gipi-components/input-select-paged/input-select-paged.component.js +350 -0
  308. package/esm2015/shared/gipi-components/input-select-radio/input-select-radio.component.js +269 -0
  309. package/esm2015/shared/gipi-components/layout-grid/col.directive.js +161 -0
  310. package/esm2015/shared/gipi-components/layout-grid/row.directive.js +124 -0
  311. package/esm2015/shared/gipi-components/layout-grid/services/breakpoint.service.js +87 -0
  312. package/esm2015/shared/gipi-components/layout-grid/services/resize.service.js +64 -0
  313. package/esm2015/shared/gipi-components/month-year-picker/calendar-month-year/calendar-month-year.component.js +193 -0
  314. package/esm2015/shared/gipi-components/month-year-picker/mont-year-picker.module.js +47 -0
  315. package/esm2015/shared/gipi-components/month-year-picker/month-year-picker.component.js +460 -0
  316. package/esm2015/shared/gipi-components/notification/notification.component.js +104 -0
  317. package/esm2015/shared/gipi-components/novelties/novelties.component.js +109 -0
  318. package/esm2015/shared/gipi-components/overlay/overlay.component.js +565 -0
  319. package/esm2015/shared/gipi-components/overlay/shared/overlay-service.js +21 -0
  320. package/esm2015/shared/gipi-components/overlay/shared/overlay_options.js +1 -0
  321. package/esm2015/shared/gipi-components/password-requeriments/password-requeriments.component.js +127 -0
  322. package/esm2015/shared/gipi-components/popover/popover.component.js +397 -0
  323. package/esm2015/shared/gipi-components/popover/shared/popover-animations.js +29 -0
  324. package/esm2015/shared/gipi-components/popover/shared/popover-errors.js +27 -0
  325. package/esm2015/shared/gipi-components/popover/shared/popover-interfaces.js +1 -0
  326. package/esm2015/shared/gipi-components/popover/shared/popover-target.js +19 -0
  327. package/esm2015/shared/gipi-components/popover/shared/popover-trigger.js +514 -0
  328. package/esm2015/shared/gipi-components/popover/shared/popover-types.js +1 -0
  329. package/esm2015/shared/gipi-components/radio-group/radio-group.component.js +143 -0
  330. package/esm2015/shared/gipi-components/range-page/range-page.component.js +254 -0
  331. package/esm2015/shared/gipi-components/range-slider/range-slider.component.js +345 -0
  332. package/esm2015/shared/gipi-components/select/select.component.js +211 -0
  333. package/esm2015/shared/gipi-components/select-button/select-button.component.js +187 -0
  334. package/esm2015/shared/gipi-components/sidebar/container/container.component.js +83 -0
  335. package/esm2015/shared/gipi-components/sidebar/sidenav/sidenav.component.js +240 -0
  336. package/esm2015/shared/gipi-components/stepper/stepper.component.js +37 -0
  337. package/esm2015/shared/gipi-components/table/components/table-body/table-body.component.js +203 -0
  338. package/esm2015/shared/gipi-components/table/components/table-footer/table-footer.component.js +30 -0
  339. package/esm2015/shared/gipi-components/table/components/table-header/table-header.component.js +152 -0
  340. package/esm2015/shared/gipi-components/table/components/table-pagination/shared/paginate.pipe.js +122 -0
  341. package/esm2015/shared/gipi-components/table/components/table-pagination/shared/pagination-controls.directive.js +225 -0
  342. package/esm2015/shared/gipi-components/table/components/table-pagination/shared/pagination-instance.js +1 -0
  343. package/esm2015/shared/gipi-components/table/components/table-pagination/shared/pagination.service.js +105 -0
  344. package/esm2015/shared/gipi-components/table/components/table-pagination/table-pagination.component.js +102 -0
  345. package/esm2015/shared/gipi-components/table/components/table-progress-bar/table-progress-bar.component.js +30 -0
  346. package/esm2015/shared/gipi-components/table/models/pipe-transform.model.js +1 -0
  347. package/esm2015/shared/gipi-components/table/models/sort.model.js +19 -0
  348. package/esm2015/shared/gipi-components/table/models/sorted-column.model.js +2 -0
  349. package/esm2015/shared/gipi-components/table/models/table-column-builder.model.js +104 -0
  350. package/esm2015/shared/gipi-components/table/models/table-column.model.js +162 -0
  351. package/esm2015/shared/gipi-components/table/table.component.js +159 -0
  352. package/esm2015/shared/gipi-components/table/types/sort-direction.type.js +1 -0
  353. package/esm2015/shared/gipi-components/table/types/sort.type.js +1 -0
  354. package/esm2015/shared/gipi-components/template/template.directive.js +33 -0
  355. package/esm2015/shared/gipi-components/toolbar/toolbar.component.js +53 -0
  356. package/esm2015/shared/gipi-components/top-nav/top-nav.component.js +38 -0
  357. package/esm2015/shared/gipi-components/user-profile/user-profile.component.js +109 -0
  358. package/esm2015/shared/material.module.js +102 -0
  359. package/esm2015/shared/shared.module.js +339 -0
  360. package/esm2015/shared.js +36 -0
  361. package/esm5/core/app-messages.js +1 -0
  362. package/esm5/core/app.messages.js +12 -0
  363. package/esm5/core/components/abstract-crud.component.js +108 -0
  364. package/esm5/core/components/abstract-find.component.js +201 -0
  365. package/esm5/core/components/abstract.component.js +112 -0
  366. package/esm5/core/components/alert/alert.component.js +25 -0
  367. package/esm5/core/core.module.js +107 -0
  368. package/esm5/core/custom-breakpoints.js +87 -0
  369. package/esm5/core/enums/local-time.enum.js +6 -0
  370. package/esm5/core/extensions/string.extension.js +37 -0
  371. package/esm5/core/gipi-components/components/abstract-crud.component.js +122 -0
  372. package/esm5/core/gipi-components/components/abstract-find.component.js +507 -0
  373. package/esm5/core/gipi-components/components/abstract.component.js +152 -0
  374. package/esm5/core/gipi-components/decorators/autowired.decorator.js +52 -0
  375. package/esm5/core/gipi-components/enums/sort-direction.enum.js +6 -0
  376. package/esm5/core/gipi-components/interface/abstract-crud.interface.js +1 -0
  377. package/esm5/core/gipi-components/interface/abstract-find.interface.js +1 -0
  378. package/esm5/core/gipi-components/interface/abstract.interface.js +1 -0
  379. package/esm5/core/gipi-components/interface/base-permission.interface.js +1 -0
  380. package/esm5/core/gipi-components/models/abstract-filter.model.js +7 -0
  381. package/esm5/core/gipi-components/models/abstract.model.js +7 -0
  382. package/esm5/core/gipi-components/models/applied-filter.model.js +29 -0
  383. package/esm5/core/gipi-components/models/dto/abstract.dto.js +7 -0
  384. package/esm5/core/gipi-components/models/page-event.model.js +49 -0
  385. package/esm5/core/gipi-components/models/page.model.js +9 -0
  386. package/esm5/core/gipi-components/models/sort.model.js +9 -0
  387. package/esm5/core/gipi-components/services/abstract-crud.service.js +114 -0
  388. package/esm5/core/gipi-components/services/abstract.service.js +49 -0
  389. package/esm5/core/gipi-components/services/base.service.js +143 -0
  390. package/esm5/core/gipi-components/services/file.service.js +53 -0
  391. package/esm5/core/gipi-components/services/session-storage.service.js +45 -0
  392. package/esm5/core/gipi-components/types/generic.type.js +1 -0
  393. package/esm5/core/gipi-components/types/uuid.type.js +1 -0
  394. package/esm5/core/guards/auth.guard.js +50 -0
  395. package/esm5/core/guards/permission.guard.js +74 -0
  396. package/esm5/core/guards/public.guard.js +47 -0
  397. package/esm5/core/interceptors/auth.interceptor.js +29 -0
  398. package/esm5/core/interceptors/error.interceptor.js +129 -0
  399. package/esm5/core/models/abstract.model.js +7 -0
  400. package/esm5/core/models/archive.model.js +7 -0
  401. package/esm5/core/models/authority.model.js +7 -0
  402. package/esm5/core/models/base-user.model.js +13 -0
  403. package/esm5/core/models/dto/abstract.dto.js +7 -0
  404. package/esm5/core/models/dto/api-error.dto.js +13 -0
  405. package/esm5/core/models/dto/api-sub-error.dto.js +11 -0
  406. package/esm5/core/models/dto/chart.dto.js +11 -0
  407. package/esm5/core/models/dto/confirmation.dto.js +13 -0
  408. package/esm5/core/models/dto/dialog.dto.js +11 -0
  409. package/esm5/core/models/dto/filter.dto.js +11 -0
  410. package/esm5/core/models/dto/input-listbox.dto.js +11 -0
  411. package/esm5/core/models/dto/menu.dto.js +14 -0
  412. package/esm5/core/models/dto/message.dto.js +11 -0
  413. package/esm5/core/models/dto/page.dto.js +14 -0
  414. package/esm5/core/models/dto/sort.dto.js +14 -0
  415. package/esm5/core/models/dto/tab.dto.js +15 -0
  416. package/esm5/core/models/dto/table-column.dto.js +29 -0
  417. package/esm5/core/models/dto/table-group-header.dto.js +15 -0
  418. package/esm5/core/models/dto/table-page-event.dto.js +11 -0
  419. package/esm5/core/models/dto/token.dto.js +11 -0
  420. package/esm5/core/models/enums/criteria-operation.enum.js +15 -0
  421. package/esm5/core/models/enums/criteria-sort-direction.enum.js +6 -0
  422. package/esm5/core/models/enums/menu-type.enum.js +7 -0
  423. package/esm5/core/models/enums/radio-button.enum.js +8 -0
  424. package/esm5/core/models/enums/sort-direction.enum.js +6 -0
  425. package/esm5/core/models/multitenant.model.js +11 -0
  426. package/esm5/core/models/permission.model.js +16 -0
  427. package/esm5/core/models/role.model.js +13 -0
  428. package/esm5/core/pipes/local-time.pipe.js +26 -0
  429. package/esm5/core/services/abstract-crud.service.js +30 -0
  430. package/esm5/core/services/abstract-find.service.js +71 -0
  431. package/esm5/core/services/abstract.service.js +32 -0
  432. package/esm5/core/services/authentication.service.js +121 -0
  433. package/esm5/core/services/breakpoint-observer.service.js +52 -0
  434. package/esm5/core/services/confirmation.service.js +66 -0
  435. package/esm5/core/services/dialog.service.js +44 -0
  436. package/esm5/core/services/message.service.js +36 -0
  437. package/esm5/core/services/nav.service.js +51 -0
  438. package/esm5/core/services/svg-register.service.js +67 -0
  439. package/esm5/core/types/local-time.type.js +1 -0
  440. package/esm5/core/types/ng-class.type.js +1 -0
  441. package/esm5/core/utils/array.util.js +120 -0
  442. package/esm5/core/utils/browser.util.js +17 -0
  443. package/esm5/core/utils/currency.util.js +26 -0
  444. package/esm5/core/utils/date.util.js +269 -0
  445. package/esm5/core/utils/document.util.js +157 -0
  446. package/esm5/core/utils/email.util.js +29 -0
  447. package/esm5/core/utils/number.util.js +32 -0
  448. package/esm5/core/utils/object.util.js +204 -0
  449. package/esm5/core/utils/password.util.js +42 -0
  450. package/esm5/core/utils/phone.util.js +135 -0
  451. package/esm5/core/utils/string.util.js +44 -0
  452. package/esm5/core/utils/table-column-builder.js +87 -0
  453. package/esm5/core/utils/time.util.js +65 -0
  454. package/esm5/core/utils/url-params.util.js +16 -0
  455. package/esm5/core/utils/uuid.util.js +21 -0
  456. package/esm5/core/utils/zindex.util.js +35 -0
  457. package/esm5/core.js +89 -0
  458. package/esm5/gipi-components.js +105 -0
  459. package/esm5/gipisistemas-ng-core.js +21 -0
  460. package/esm5/public_api.js +4 -0
  461. package/esm5/shared/api/generate-id-component.js +16 -0
  462. package/esm5/shared/api/gipi-ng-config.js +77 -0
  463. package/esm5/shared/api/overlay-message.js +1 -0
  464. package/esm5/shared/api/throttle.js +60 -0
  465. package/esm5/shared/api/translation.js +1 -0
  466. package/esm5/shared/components/button/button.component.js +111 -0
  467. package/esm5/shared/components/card/card.component.js +45 -0
  468. package/esm5/shared/components/checkbox/checkbox.component.js +85 -0
  469. package/esm5/shared/components/dom/connected-overlay-scroll-handler.js +30 -0
  470. package/esm5/shared/components/dom/dom-handler.js +573 -0
  471. package/esm5/shared/components/icon/icon.component.js +38 -0
  472. package/esm5/shared/components/input/input.component.js +242 -0
  473. package/esm5/shared/components/input-currency/input-currency.component.js +121 -0
  474. package/esm5/shared/components/input-file/input-file.component.js +165 -0
  475. package/esm5/shared/components/loading/loading.component.js +18 -0
  476. package/esm5/shared/components/loading-overlay/loading-overlay.component.js +23 -0
  477. package/esm5/shared/components/overlay-panel/overlay-panel.component.js +366 -0
  478. package/esm5/shared/components/popover/popover-ref.js +28 -0
  479. package/esm5/shared/components/popover/popover.component.js +35 -0
  480. package/esm5/shared/components/popover/popover.service.js +88 -0
  481. package/esm5/shared/components/radio-group-entity/radio-group-entity.component.js +80 -0
  482. package/esm5/shared/components/radio-group-enum/radio-group-enum.component.js +138 -0
  483. package/esm5/shared/components/select-button/select-button.component.js +195 -0
  484. package/esm5/shared/components/select-entity/select-entity.component.js +269 -0
  485. package/esm5/shared/components/select-entity-paged/select-entity-paged.component.js +453 -0
  486. package/esm5/shared/components/select-entity-paged/shared/default-options.js +35 -0
  487. package/esm5/shared/components/select-entity-paged/shared/select-button-add/select-button-add.component.js +72 -0
  488. package/esm5/shared/components/select-entity-paged/shared/select-button-next-batch/select-button-next-batch.component.js +62 -0
  489. package/esm5/shared/components/select-entity-paged/shared/select-no-entries-found.directive.js +23 -0
  490. package/esm5/shared/components/select-entity-paged/shared/select-search/select-search.component.js +590 -0
  491. package/esm5/shared/components/select-entity-paged/shared/select-search-clear.directive.js +21 -0
  492. package/esm5/shared/components/select-enum/select-enum.component.js +124 -0
  493. package/esm5/shared/components/select-month-period/select-month-period.component.js +91 -0
  494. package/esm5/shared/components/slide-toggle/slide-toggle.component.js +81 -0
  495. package/esm5/shared/components/stepper/stepper.component.js +36 -0
  496. package/esm5/shared/components/tab/tab.component.js +58 -0
  497. package/esm5/shared/components/tab-group/tab-group.component.js +125 -0
  498. package/esm5/shared/components/table/table.component.js +538 -0
  499. package/esm5/shared/components/table-scrolled/table-scrolled.component.js +107 -0
  500. package/esm5/shared/components/textarea/textarea.component.js +174 -0
  501. package/esm5/shared/directives/dynamic-tab.directive.js +19 -0
  502. package/esm5/shared/directives/generic-template.directive.js +31 -0
  503. package/esm5/shared/directives/input-select-infinite-scroll.directive.js +113 -0
  504. package/esm5/shared/directives/lower-case.directive.js +48 -0
  505. package/esm5/shared/directives/phone-mask.directive.js +61 -0
  506. package/esm5/shared/directives/space-drop.directive.js +48 -0
  507. package/esm5/shared/directives/upper-case.directive.js +48 -0
  508. package/esm5/shared/gipi-components/abstract-form/abstract-form.component.js +141 -0
  509. package/esm5/shared/gipi-components/action-row/action-row.component.js +33 -0
  510. package/esm5/shared/gipi-components/badge/badge.component.js +46 -0
  511. package/esm5/shared/gipi-components/button/button.component.js +257 -0
  512. package/esm5/shared/gipi-components/chips/chips.component.js +159 -0
  513. package/esm5/shared/gipi-components/confirmation-dialog/confirmation-dialog.component.js +46 -0
  514. package/esm5/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.js +378 -0
  515. package/esm5/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range-selection-startegy.js +42 -0
  516. package/esm5/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range.directive.js +40 -0
  517. package/esm5/shared/gipi-components/datepicker/date-range-picker/shared/preset-range/preset-range.component.js +291 -0
  518. package/esm5/shared/gipi-components/datepicker/datepicker/datepicker.component.js +252 -0
  519. package/esm5/shared/gipi-components/datepicker/datepicker.module.js +133 -0
  520. package/esm5/shared/gipi-components/datepicker/mat-datepicker/calendar-body.js +349 -0
  521. package/esm5/shared/gipi-components/datepicker/mat-datepicker/calendar.js +441 -0
  522. package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-input-parts.js +339 -0
  523. package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-input.js +376 -0
  524. package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-picker.js +46 -0
  525. package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-selection-strategy.js +62 -0
  526. package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-selection-model.js +167 -0
  527. package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-animations.js +35 -0
  528. package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-base.js +586 -0
  529. package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-errors.js +14 -0
  530. package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-input-base.js +327 -0
  531. package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-input.js +199 -0
  532. package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-intl.js +52 -0
  533. package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-toggle.js +133 -0
  534. package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker.js +34 -0
  535. package/esm5/shared/gipi-components/datepicker/mat-datepicker/month-view.js +384 -0
  536. package/esm5/shared/gipi-components/datepicker/mat-datepicker/multi-year-view.js +324 -0
  537. package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-adapter.js +118 -0
  538. package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-formats.js +10 -0
  539. package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-adapter.js +300 -0
  540. package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-formats.js +19 -0
  541. package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/platform.js +82 -0
  542. package/esm5/shared/gipi-components/datepicker/mat-datepicker/year-view.js +313 -0
  543. package/esm5/shared/gipi-components/dom/connected-overlay-scroll-handler.js +30 -0
  544. package/esm5/shared/gipi-components/dom/dom-handler.js +681 -0
  545. package/esm5/shared/gipi-components/dropdown-menu/dropdown-menu.component.js +191 -0
  546. package/esm5/shared/gipi-components/expansion-panel/expansion-panel.component.js +83 -0
  547. package/esm5/shared/gipi-components/file-drag-and-drop/file-drag-and-drop.component.js +255 -0
  548. package/esm5/shared/gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive.js +93 -0
  549. package/esm5/shared/gipi-components/footer/footer.component.js +32 -0
  550. package/esm5/shared/gipi-components/form-field/form-field.component.js +276 -0
  551. package/esm5/shared/gipi-components/helpful-tip/helpful-tip.component.js +68 -0
  552. package/esm5/shared/gipi-components/infinite-scroll/infinite-scroll.directive.js +106 -0
  553. package/esm5/shared/gipi-components/input-checkbox/input-checkbox.component.js +118 -0
  554. package/esm5/shared/gipi-components/input-currency/input-currency.component.js +207 -0
  555. package/esm5/shared/gipi-components/input-monthpicker/input-monthpicker.component.js +426 -0
  556. package/esm5/shared/gipi-components/input-select/input-select.component.js +698 -0
  557. package/esm5/shared/gipi-components/input-select-enum/input-select-enum.component.js +351 -0
  558. package/esm5/shared/gipi-components/input-select-listbox/input-select-listbox.component.js +437 -0
  559. package/esm5/shared/gipi-components/input-select-paged/input-search/input-search.component.js +397 -0
  560. package/esm5/shared/gipi-components/input-select-paged/input-select-paged.component.js +384 -0
  561. package/esm5/shared/gipi-components/input-select-radio/input-select-radio.component.js +286 -0
  562. package/esm5/shared/gipi-components/layout-grid/col.directive.js +164 -0
  563. package/esm5/shared/gipi-components/layout-grid/row.directive.js +127 -0
  564. package/esm5/shared/gipi-components/layout-grid/services/breakpoint.service.js +90 -0
  565. package/esm5/shared/gipi-components/layout-grid/services/resize.service.js +68 -0
  566. package/esm5/shared/gipi-components/month-year-picker/calendar-month-year/calendar-month-year.component.js +200 -0
  567. package/esm5/shared/gipi-components/month-year-picker/mont-year-picker.module.js +50 -0
  568. package/esm5/shared/gipi-components/month-year-picker/month-year-picker.component.js +505 -0
  569. package/esm5/shared/gipi-components/notification/notification.component.js +106 -0
  570. package/esm5/shared/gipi-components/novelties/novelties.component.js +111 -0
  571. package/esm5/shared/gipi-components/overlay/overlay.component.js +670 -0
  572. package/esm5/shared/gipi-components/overlay/shared/overlay-service.js +22 -0
  573. package/esm5/shared/gipi-components/overlay/shared/overlay_options.js +1 -0
  574. package/esm5/shared/gipi-components/password-requeriments/password-requeriments.component.js +157 -0
  575. package/esm5/shared/gipi-components/popover/popover.component.js +473 -0
  576. package/esm5/shared/gipi-components/popover/shared/popover-animations.js +29 -0
  577. package/esm5/shared/gipi-components/popover/shared/popover-errors.js +21 -0
  578. package/esm5/shared/gipi-components/popover/shared/popover-interfaces.js +1 -0
  579. package/esm5/shared/gipi-components/popover/shared/popover-target.js +20 -0
  580. package/esm5/shared/gipi-components/popover/shared/popover-trigger.js +529 -0
  581. package/esm5/shared/gipi-components/popover/shared/popover-types.js +1 -0
  582. package/esm5/shared/gipi-components/radio-group/radio-group.component.js +155 -0
  583. package/esm5/shared/gipi-components/range-page/range-page.component.js +283 -0
  584. package/esm5/shared/gipi-components/range-slider/range-slider.component.js +364 -0
  585. package/esm5/shared/gipi-components/select/select.component.js +222 -0
  586. package/esm5/shared/gipi-components/select-button/select-button.component.js +206 -0
  587. package/esm5/shared/gipi-components/sidebar/container/container.component.js +96 -0
  588. package/esm5/shared/gipi-components/sidebar/sidenav/sidenav.component.js +267 -0
  589. package/esm5/shared/gipi-components/stepper/stepper.component.js +43 -0
  590. package/esm5/shared/gipi-components/table/components/table-body/table-body.component.js +209 -0
  591. package/esm5/shared/gipi-components/table/components/table-footer/table-footer.component.js +33 -0
  592. package/esm5/shared/gipi-components/table/components/table-header/table-header.component.js +155 -0
  593. package/esm5/shared/gipi-components/table/components/table-pagination/shared/paginate.pipe.js +123 -0
  594. package/esm5/shared/gipi-components/table/components/table-pagination/shared/pagination-controls.directive.js +228 -0
  595. package/esm5/shared/gipi-components/table/components/table-pagination/shared/pagination-instance.js +1 -0
  596. package/esm5/shared/gipi-components/table/components/table-pagination/shared/pagination.service.js +108 -0
  597. package/esm5/shared/gipi-components/table/components/table-pagination/table-pagination.component.js +116 -0
  598. package/esm5/shared/gipi-components/table/components/table-progress-bar/table-progress-bar.component.js +33 -0
  599. package/esm5/shared/gipi-components/table/models/pipe-transform.model.js +1 -0
  600. package/esm5/shared/gipi-components/table/models/sort.model.js +29 -0
  601. package/esm5/shared/gipi-components/table/models/sorted-column.model.js +2 -0
  602. package/esm5/shared/gipi-components/table/models/table-column-builder.model.js +106 -0
  603. package/esm5/shared/gipi-components/table/models/table-column.model.js +252 -0
  604. package/esm5/shared/gipi-components/table/table.component.js +161 -0
  605. package/esm5/shared/gipi-components/table/types/sort-direction.type.js +1 -0
  606. package/esm5/shared/gipi-components/table/types/sort.type.js +1 -0
  607. package/esm5/shared/gipi-components/template/template.directive.js +34 -0
  608. package/esm5/shared/gipi-components/toolbar/toolbar.component.js +56 -0
  609. package/esm5/shared/gipi-components/top-nav/top-nav.component.js +40 -0
  610. package/esm5/shared/gipi-components/user-profile/user-profile.component.js +115 -0
  611. package/esm5/shared/material.module.js +101 -0
  612. package/esm5/shared/shared.module.js +340 -0
  613. package/esm5/shared.js +36 -0
  614. package/fesm2015/gipisistemas-ng-core.js +25879 -0
  615. package/fesm2015/gipisistemas-ng-core.js.map +1 -0
  616. package/fesm5/gipisistemas-ng-core.js +27905 -0
  617. package/fesm5/gipisistemas-ng-core.js.map +1 -0
  618. package/gipi-components.d.ts +97 -0
  619. package/gipisistemas-ng-core.d.ts +20 -0
  620. package/gipisistemas-ng-core.metadata.json +1 -0
  621. package/package.json +31 -83
  622. package/public_api.d.ts +3 -0
  623. package/shared/api/generate-id-component.d.ts +3 -0
  624. package/shared/api/gipi-ng-config.d.ts +18 -0
  625. package/shared/api/overlay-message.d.ts +14 -0
  626. package/shared/api/throttle.d.ts +17 -0
  627. package/shared/api/translation.d.ts +45 -0
  628. package/shared/components/button/button.component.d.ts +26 -0
  629. package/shared/components/card/card.component.d.ts +10 -0
  630. package/shared/components/checkbox/checkbox.component.d.ts +20 -0
  631. package/shared/components/dom/connected-overlay-scroll-handler.d.ts +9 -0
  632. package/shared/components/dom/dom-handler.d.ts +74 -0
  633. package/shared/components/icon/icon.component.d.ts +9 -0
  634. package/shared/components/input/input.component.d.ts +52 -0
  635. package/shared/components/input-currency/input-currency.component.d.ts +29 -0
  636. package/shared/components/input-file/input-file.component.d.ts +28 -0
  637. package/shared/components/loading/loading.component.d.ts +4 -0
  638. package/shared/components/loading-overlay/loading-overlay.component.d.ts +6 -0
  639. package/shared/components/overlay-panel/overlay-panel.component.d.ts +67 -0
  640. package/shared/components/popover/popover-ref.d.ts +17 -0
  641. package/shared/components/popover/popover.component.d.ts +10 -0
  642. package/shared/components/popover/popover.service.d.ts +23 -0
  643. package/shared/components/radio-group-entity/radio-group-entity.component.d.ts +19 -0
  644. package/shared/components/radio-group-enum/radio-group-enum.component.d.ts +30 -0
  645. package/shared/components/select-button/select-button.component.d.ts +35 -0
  646. package/shared/components/select-entity/select-entity.component.d.ts +52 -0
  647. package/shared/components/select-entity-paged/select-entity-paged.component.d.ts +78 -0
  648. package/shared/components/select-entity-paged/shared/default-options.d.ts +25 -0
  649. package/shared/components/select-entity-paged/shared/select-button-add/select-button-add.component.d.ts +18 -0
  650. package/shared/components/select-entity-paged/shared/select-button-next-batch/select-button-next-batch.component.d.ts +16 -0
  651. package/shared/components/select-entity-paged/shared/select-no-entries-found.directive.d.ts +11 -0
  652. package/shared/components/select-entity-paged/shared/select-search/select-search.component.d.ts +119 -0
  653. package/shared/components/select-entity-paged/shared/select-search-clear.directive.d.ts +9 -0
  654. package/shared/components/select-enum/select-enum.component.d.ts +29 -0
  655. package/shared/components/select-month-period/select-month-period.component.d.ts +20 -0
  656. package/shared/components/slide-toggle/slide-toggle.component.d.ts +19 -0
  657. package/shared/components/stepper/stepper.component.d.ts +7 -0
  658. package/shared/components/tab/tab.component.d.ts +14 -0
  659. package/shared/components/tab-group/tab-group.component.d.ts +22 -0
  660. package/shared/components/table/table.component.d.ts +86 -0
  661. package/shared/components/table-scrolled/table-scrolled.component.d.ts +31 -0
  662. package/shared/components/textarea/textarea.component.d.ts +35 -0
  663. package/shared/directives/dynamic-tab.directive.d.ts +5 -0
  664. package/shared/directives/generic-template.directive.d.ts +8 -0
  665. package/shared/directives/input-select-infinite-scroll.directive.d.ts +35 -0
  666. package/shared/directives/lower-case.directive.d.ts +9 -0
  667. package/shared/directives/phone-mask.directive.d.ts +8 -0
  668. package/shared/directives/space-drop.directive.d.ts +9 -0
  669. package/shared/directives/upper-case.directive.d.ts +9 -0
  670. package/shared/gipi-components/abstract-form/abstract-form.component.d.ts +21 -0
  671. package/shared/gipi-components/action-row/action-row.component.d.ts +5 -0
  672. package/shared/gipi-components/badge/badge.component.d.ts +8 -0
  673. package/shared/gipi-components/button/button.component.d.ts +56 -0
  674. package/shared/gipi-components/chips/chips.component.d.ts +37 -0
  675. package/shared/gipi-components/confirmation-dialog/confirmation-dialog.component.d.ts +11 -0
  676. package/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.d.ts +71 -0
  677. package/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range-selection-startegy.d.ts +11 -0
  678. package/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range.directive.d.ts +6 -0
  679. package/shared/gipi-components/datepicker/date-range-picker/shared/preset-range/preset-range.component.d.ts +40 -0
  680. package/shared/gipi-components/datepicker/datepicker/datepicker.component.d.ts +49 -0
  681. package/shared/gipi-components/datepicker/datepicker.module.d.ts +2 -0
  682. package/shared/gipi-components/datepicker/mat-datepicker/calendar-body.d.ts +143 -0
  683. package/shared/gipi-components/datepicker/mat-datepicker/calendar.d.ts +152 -0
  684. package/shared/gipi-components/datepicker/mat-datepicker/date-range-input-parts.d.ts +102 -0
  685. package/shared/gipi-components/datepicker/mat-datepicker/date-range-input.d.ts +124 -0
  686. package/shared/gipi-components/datepicker/mat-datepicker/date-range-picker.d.ts +21 -0
  687. package/shared/gipi-components/datepicker/mat-datepicker/date-range-selection-strategy.d.ts +45 -0
  688. package/shared/gipi-components/datepicker/mat-datepicker/date-selection-model.d.ts +106 -0
  689. package/shared/gipi-components/datepicker/mat-datepicker/datepicker-animations.d.ts +16 -0
  690. package/shared/gipi-components/datepicker/mat-datepicker/datepicker-base.d.ts +209 -0
  691. package/shared/gipi-components/datepicker/mat-datepicker/datepicker-errors.d.ts +9 -0
  692. package/shared/gipi-components/datepicker/mat-datepicker/datepicker-input-base.d.ts +136 -0
  693. package/shared/gipi-components/datepicker/mat-datepicker/datepicker-input.d.ts +68 -0
  694. package/shared/gipi-components/datepicker/mat-datepicker/datepicker-intl.d.ts +38 -0
  695. package/shared/gipi-components/datepicker/mat-datepicker/datepicker-toggle.d.ts +39 -0
  696. package/shared/gipi-components/datepicker/mat-datepicker/datepicker.d.ts +11 -0
  697. package/shared/gipi-components/datepicker/mat-datepicker/month-view.d.ts +120 -0
  698. package/shared/gipi-components/datepicker/mat-datepicker/multi-year-view.d.ts +85 -0
  699. package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-adapter.d.ts +225 -0
  700. package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-formats.d.ts +20 -0
  701. package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-adapter.d.ts +76 -0
  702. package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-formats.d.ts +9 -0
  703. package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/platform.d.ts +33 -0
  704. package/shared/gipi-components/datepicker/mat-datepicker/year-view.d.ts +97 -0
  705. package/shared/gipi-components/dom/connected-overlay-scroll-handler.d.ts +9 -0
  706. package/shared/gipi-components/dom/dom-handler.d.ts +85 -0
  707. package/shared/gipi-components/dropdown-menu/dropdown-menu.component.d.ts +36 -0
  708. package/shared/gipi-components/expansion-panel/expansion-panel.component.d.ts +16 -0
  709. package/shared/gipi-components/file-drag-and-drop/file-drag-and-drop.component.d.ts +43 -0
  710. package/shared/gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive.d.ts +13 -0
  711. package/shared/gipi-components/footer/footer.component.d.ts +5 -0
  712. package/shared/gipi-components/form-field/form-field.component.d.ts +61 -0
  713. package/shared/gipi-components/helpful-tip/helpful-tip.component.d.ts +13 -0
  714. package/shared/gipi-components/infinite-scroll/infinite-scroll.directive.d.ts +27 -0
  715. package/shared/gipi-components/input-checkbox/input-checkbox.component.d.ts +28 -0
  716. package/shared/gipi-components/input-currency/input-currency.component.d.ts +48 -0
  717. package/shared/gipi-components/input-monthpicker/input-monthpicker.component.d.ts +89 -0
  718. package/shared/gipi-components/input-select/input-select.component.d.ts +120 -0
  719. package/shared/gipi-components/input-select-enum/input-select-enum.component.d.ts +65 -0
  720. package/shared/gipi-components/input-select-listbox/input-select-listbox.component.d.ts +85 -0
  721. package/shared/gipi-components/input-select-paged/input-search/input-search.component.d.ts +77 -0
  722. package/shared/gipi-components/input-select-paged/input-select-paged.component.d.ts +66 -0
  723. package/shared/gipi-components/input-select-radio/input-select-radio.component.d.ts +53 -0
  724. package/shared/gipi-components/layout-grid/col.directive.d.ts +38 -0
  725. package/shared/gipi-components/layout-grid/row.directive.d.ts +28 -0
  726. package/shared/gipi-components/layout-grid/services/breakpoint.service.d.ts +30 -0
  727. package/shared/gipi-components/layout-grid/services/resize.service.d.ts +17 -0
  728. package/shared/gipi-components/month-year-picker/calendar-month-year/calendar-month-year.component.d.ts +37 -0
  729. package/shared/gipi-components/month-year-picker/mont-year-picker.module.d.ts +2 -0
  730. package/shared/gipi-components/month-year-picker/month-year-picker.component.d.ts +104 -0
  731. package/shared/gipi-components/notification/notification.component.d.ts +21 -0
  732. package/shared/gipi-components/novelties/novelties.component.d.ts +22 -0
  733. package/shared/gipi-components/overlay/overlay.component.d.ts +113 -0
  734. package/shared/gipi-components/overlay/shared/overlay-service.d.ts +6 -0
  735. package/shared/gipi-components/overlay/shared/overlay_options.d.ts +50 -0
  736. package/shared/gipi-components/password-requeriments/password-requeriments.component.d.ts +27 -0
  737. package/shared/gipi-components/popover/popover.component.d.ts +133 -0
  738. package/shared/gipi-components/popover/shared/popover-animations.d.ts +13 -0
  739. package/shared/gipi-components/popover/shared/popover-errors.d.ts +14 -0
  740. package/shared/gipi-components/popover/shared/popover-interfaces.d.ts +43 -0
  741. package/shared/gipi-components/popover/shared/popover-target.d.ts +5 -0
  742. package/shared/gipi-components/popover/shared/popover-trigger.d.ts +140 -0
  743. package/shared/gipi-components/popover/shared/popover-types.d.ts +4 -0
  744. package/shared/gipi-components/radio-group/radio-group.component.d.ts +33 -0
  745. package/shared/gipi-components/range-page/range-page.component.d.ts +55 -0
  746. package/shared/gipi-components/range-slider/range-slider.component.d.ts +57 -0
  747. package/shared/gipi-components/select/select.component.d.ts +45 -0
  748. package/shared/gipi-components/select-button/select-button.component.d.ts +39 -0
  749. package/shared/gipi-components/sidebar/container/container.component.d.ts +15 -0
  750. package/shared/gipi-components/sidebar/sidenav/sidenav.component.d.ts +40 -0
  751. package/shared/gipi-components/stepper/stepper.component.d.ts +8 -0
  752. package/shared/gipi-components/table/components/table-body/table-body.component.d.ts +36 -0
  753. package/shared/gipi-components/table/components/table-footer/table-footer.component.d.ts +5 -0
  754. package/shared/gipi-components/table/components/table-header/table-header.component.d.ts +28 -0
  755. package/shared/gipi-components/table/components/table-pagination/shared/paginate.pipe.d.ts +40 -0
  756. package/shared/gipi-components/table/components/table-pagination/shared/pagination-controls.directive.d.ts +81 -0
  757. package/shared/gipi-components/table/components/table-pagination/shared/pagination-instance.d.ts +24 -0
  758. package/shared/gipi-components/table/components/table-pagination/shared/pagination.service.d.ts +45 -0
  759. package/shared/gipi-components/table/components/table-pagination/table-pagination.component.d.ts +21 -0
  760. package/shared/gipi-components/table/components/table-progress-bar/table-progress-bar.component.d.ts +5 -0
  761. package/shared/gipi-components/table/models/pipe-transform.model.d.ts +3 -0
  762. package/shared/gipi-components/table/models/sort.model.d.ts +10 -0
  763. package/shared/gipi-components/table/models/sorted-column.model.d.ts +6 -0
  764. package/shared/gipi-components/table/models/table-column-builder.model.d.ts +52 -0
  765. package/shared/gipi-components/table/models/table-column.model.d.ts +74 -0
  766. package/shared/gipi-components/table/table.component.d.ts +37 -0
  767. package/shared/gipi-components/table/types/sort-direction.type.d.ts +1 -0
  768. package/shared/gipi-components/table/types/sort.type.d.ts +1 -0
  769. package/shared/gipi-components/template/template.directive.d.ts +8 -0
  770. package/shared/gipi-components/toolbar/toolbar.component.d.ts +11 -0
  771. package/shared/gipi-components/top-nav/top-nav.component.d.ts +8 -0
  772. package/shared/gipi-components/user-profile/user-profile.component.d.ts +24 -0
  773. package/shared/material.module.d.ts +2 -0
  774. package/shared/shared.module.d.ts +6 -0
  775. package/shared.d.ts +35 -0
  776. package/README.md +0 -38
  777. package/_ITSS-NG-CI-CD.yml +0 -53
  778. package/_ITSS-NG-CI-PR.yml +0 -53
  779. package/angular-cli.json +0 -42
  780. package/azure-pipelines.yml +0 -35
  781. package/projects/itss-ng/ng-package.json +0 -7
  782. package/projects/itss-ng/package.json +0 -25
@@ -0,0 +1,529 @@
1
+ import { __decorate, __metadata, __param, __read } from "tslib";
2
+ import { isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';
3
+ import { Direction, Directionality } from '@angular/cdk/bidi';
4
+ import { FlexibleConnectedPositionStrategy, HorizontalConnectionPos, Overlay, OverlayConfig, OverlayRef, ScrollStrategy, VerticalConnectionPos } from '@angular/cdk/overlay';
5
+ import { TemplatePortal } from '@angular/cdk/portal';
6
+ import { AfterViewInit, ChangeDetectorRef, Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnDestroy, Optional, Output, ViewContainerRef, } from '@angular/core';
7
+ import { Subject } from 'rxjs';
8
+ import { takeUntil } from 'rxjs/operators';
9
+ import { ObjectUtil } from '../../../../core/utils/object.util';
10
+ import { StringUtil } from '../../../../core/utils/string.util';
11
+ import { GIPIDomHandler } from '../../dom/dom-handler';
12
+ import { throwPopoverMissingError } from './popover-errors';
13
+ /**
14
+ * Esta diretiva destina-se a ser usada em conjunto com uma tag gipi-popover.
15
+ * Ele é responsável por alternar a exibição da instância popover fornecida.
16
+ */
17
+ var GIPIPopoverTrigger = /** @class */ (function () {
18
+ function GIPIPopoverTrigger(_overlay, _elementRef, _viewContainerRef, _dir, _changeDetectorRef) {
19
+ this._overlay = _overlay;
20
+ this._elementRef = _elementRef;
21
+ this._viewContainerRef = _viewContainerRef;
22
+ this._dir = _dir;
23
+ this._changeDetectorRef = _changeDetectorRef;
24
+ this.ariaHaspopup = true;
25
+ this.popoverOpened = new Subject();
26
+ this.popoverClosed = new Subject();
27
+ this._overlayRef = null;
28
+ this._popoverOpen = false;
29
+ this._halt = false;
30
+ // tracking input type is necessary so it's possible to only auto-focus
31
+ // the first item of the list when the popover is opened via the keyboard
32
+ this._openedByMouse = false;
33
+ this._onDestroy = new Subject();
34
+ /** Popover backdrop close on click */
35
+ this.backdropCloseOnClick = true;
36
+ /** Event emitted when the associated popover is opened. */
37
+ this.opened = new EventEmitter();
38
+ /** Event emitted when the associated popover is closed. */
39
+ this.closed = new EventEmitter();
40
+ }
41
+ GIPIPopoverTrigger.prototype.ngAfterViewInit = function () {
42
+ var _this = this;
43
+ this._checkPopover();
44
+ this._setCurrentConfig();
45
+ this.popover.close.subscribe(function () { return _this.closePopover(); });
46
+ };
47
+ GIPIPopoverTrigger.prototype.ngOnDestroy = function () {
48
+ this.destroyPopover();
49
+ };
50
+ GIPIPopoverTrigger.prototype._setCurrentConfig = function () {
51
+ if (this.positionX === 'before' || this.positionX === 'after') {
52
+ this.popover.positionX = this.positionX;
53
+ }
54
+ if (this.positionY === 'above' || this.positionY === 'below') {
55
+ this.popover.positionY = this.positionY;
56
+ }
57
+ if (this.triggerEvent) {
58
+ this.popover.triggerEvent = this.triggerEvent;
59
+ }
60
+ if (this.enterDelay) {
61
+ this.popover.enterDelay = this.enterDelay;
62
+ }
63
+ if (this.leaveDelay) {
64
+ this.popover.leaveDelay = this.leaveDelay;
65
+ }
66
+ if (this.overlapTrigger === true || this.overlapTrigger === false) {
67
+ this.popover.overlapTrigger = this.overlapTrigger;
68
+ }
69
+ if (this.targetOffsetX) {
70
+ this.popover.targetOffsetX = this.targetOffsetX;
71
+ }
72
+ if (this.targetOffsetY) {
73
+ this.popover.targetOffsetY = this.targetOffsetY;
74
+ }
75
+ if (this.arrowOffsetX) {
76
+ this.popover.arrowOffsetX = this.arrowOffsetX;
77
+ }
78
+ if (this.arrowWidth) {
79
+ this.popover.arrowWidth = this.arrowWidth;
80
+ }
81
+ if (this.arrowColor) {
82
+ this.popover.arrowColor = this.arrowColor;
83
+ }
84
+ if (this.closeOnClick === true || this.closeOnClick === false) {
85
+ this.popover.closeOnClick = this.closeOnClick;
86
+ }
87
+ this.popover.setCurrentStyles();
88
+ };
89
+ Object.defineProperty(GIPIPopoverTrigger.prototype, "popoverOpen", {
90
+ /** Whether the popover is open. */
91
+ get: function () { return this._popoverOpen; },
92
+ enumerable: false,
93
+ configurable: true
94
+ });
95
+ GIPIPopoverTrigger.prototype.onClick = function (event) {
96
+ if (this.popover.triggerEvent === 'click') {
97
+ this.togglePopover();
98
+ }
99
+ };
100
+ GIPIPopoverTrigger.prototype.onMouseEnter = function (event) {
101
+ var _this = this;
102
+ this._halt = false;
103
+ if (this.popover.triggerEvent === 'hover') {
104
+ this._mouseoverTimer = setTimeout(function () {
105
+ _this.openPopover();
106
+ }, this.popover.enterDelay);
107
+ }
108
+ };
109
+ GIPIPopoverTrigger.prototype.onMouseLeave = function (event) {
110
+ var _this = this;
111
+ if (this.popover.triggerEvent === 'hover') {
112
+ if (this._mouseoverTimer) {
113
+ clearTimeout(this._mouseoverTimer);
114
+ this._mouseoverTimer = null;
115
+ }
116
+ if (this._popoverOpen) {
117
+ setTimeout(function () {
118
+ if (!_this.popover.closeDisabled) {
119
+ _this.closePopover();
120
+ }
121
+ }, this.popover.leaveDelay);
122
+ }
123
+ else {
124
+ this._halt = true;
125
+ }
126
+ }
127
+ };
128
+ /** Toggles the popover between the open and closed states. */
129
+ GIPIPopoverTrigger.prototype.togglePopover = function () {
130
+ return this._popoverOpen ? this.closePopover() : this.openPopover();
131
+ };
132
+ /** Opens the popover. */
133
+ GIPIPopoverTrigger.prototype.openPopover = function () {
134
+ if (!this._popoverOpen && !this._halt) {
135
+ this._createOverlay().attach(this._portal);
136
+ if (!ObjectUtil.isNull(this._viewContainerRef) && !ObjectUtil.isNull(this._viewContainerRef.element)) {
137
+ var width = GIPIDomHandler.getWidth(this._viewContainerRef.element.nativeElement);
138
+ if (StringUtil.isEmpty(this.popover.popoverWidth) || (this.popover.popoverWidth === 'auto')) {
139
+ this.popover.popoverWidth = width + "px";
140
+ }
141
+ }
142
+ this._subscribeToBackdrop();
143
+ this._subscribeToDetachments();
144
+ this._initPopover();
145
+ }
146
+ };
147
+ /** Closes the popover. */
148
+ GIPIPopoverTrigger.prototype.closePopover = function () {
149
+ if (this._overlayRef) {
150
+ this._overlayRef.detach();
151
+ this._resetPopover();
152
+ }
153
+ };
154
+ /** Removes the popover from the DOM. */
155
+ GIPIPopoverTrigger.prototype.destroyPopover = function () {
156
+ if (this._mouseoverTimer) {
157
+ clearTimeout(this._mouseoverTimer);
158
+ this._mouseoverTimer = null;
159
+ }
160
+ if (this._overlayRef) {
161
+ this._overlayRef.dispose();
162
+ this._overlayRef = null;
163
+ this._cleanUpSubscriptions();
164
+ }
165
+ this._onDestroy.next();
166
+ this._onDestroy.complete();
167
+ };
168
+ /** Focuses the popover trigger. */
169
+ GIPIPopoverTrigger.prototype.focus = function () {
170
+ this._elementRef.nativeElement.focus();
171
+ };
172
+ Object.defineProperty(GIPIPopoverTrigger.prototype, "dir", {
173
+ /** The text direction of the containing app. */
174
+ get: function () {
175
+ return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';
176
+ },
177
+ enumerable: false,
178
+ configurable: true
179
+ });
180
+ /**
181
+ * This method ensures that the popover closes when the overlay backdrop is clicked.
182
+ * We do not use first() here because doing so would not catch clicks from within
183
+ * the popover, and it would fail to unsubscribe properly. Instead, we unsubscribe
184
+ * explicitly when the popover is closed or destroyed.
185
+ */
186
+ GIPIPopoverTrigger.prototype._subscribeToBackdrop = function () {
187
+ var _this = this;
188
+ if (this._overlayRef) {
189
+ /** Only subscribe to backdrop if trigger event is click */
190
+ if (this.triggerEvent === 'click' && this.backdropCloseOnClick === true) {
191
+ this._overlayRef.backdropClick()
192
+ .pipe(takeUntil(this.popoverClosed), takeUntil(this._onDestroy))
193
+ .subscribe(function () {
194
+ _this.popover._emitCloseEvent();
195
+ });
196
+ }
197
+ }
198
+ };
199
+ GIPIPopoverTrigger.prototype._subscribeToDetachments = function () {
200
+ var _this = this;
201
+ if (this._overlayRef) {
202
+ this._overlayRef.detachments()
203
+ .pipe(takeUntil(this.popoverClosed), takeUntil(this._onDestroy))
204
+ .subscribe(function () {
205
+ _this._setPopoverClosed();
206
+ });
207
+ }
208
+ };
209
+ /**
210
+ * This method sets the popover state to open and focuses the first item if
211
+ * the popover was opened via the keyboard.
212
+ */
213
+ GIPIPopoverTrigger.prototype._initPopover = function () {
214
+ this._setPopoverOpened();
215
+ };
216
+ /**
217
+ * This method resets the popover when it's closed, most importantly restoring
218
+ * focus to the popover trigger if the popover was opened via the keyboard.
219
+ */
220
+ GIPIPopoverTrigger.prototype._resetPopover = function () {
221
+ this._setPopoverClosed();
222
+ // Focus only needs to be reset to the host element if the popover was opened
223
+ // by the keyboard and manually shifted to the first popover item.
224
+ if (!this._openedByMouse) {
225
+ this.focus();
226
+ }
227
+ this._openedByMouse = false;
228
+ };
229
+ /** set state rather than toggle to support triggers sharing a popover */
230
+ GIPIPopoverTrigger.prototype._setPopoverOpened = function () {
231
+ if (!this._popoverOpen) {
232
+ this._popoverOpen = true;
233
+ this.popoverOpened.next();
234
+ this.opened.emit();
235
+ }
236
+ };
237
+ /** set state rather than toggle to support triggers sharing a popover */
238
+ GIPIPopoverTrigger.prototype._setPopoverClosed = function () {
239
+ if (this._popoverOpen) {
240
+ this._popoverOpen = false;
241
+ this.popoverClosed.next();
242
+ this.closed.emit();
243
+ }
244
+ };
245
+ /**
246
+ * This method checks that a valid instance of MdPopover has been passed into
247
+ * mdPopoverTriggerFor. If not, an exception is thrown.
248
+ */
249
+ GIPIPopoverTrigger.prototype._checkPopover = function () {
250
+ if (!this.popover) {
251
+ throwPopoverMissingError();
252
+ }
253
+ };
254
+ /**
255
+ * This method creates the overlay from the provided popover's template and saves its
256
+ * OverlayRef so that it can be attached to the DOM when openPopover is called.
257
+ */
258
+ GIPIPopoverTrigger.prototype._createOverlay = function () {
259
+ if (!this._overlayRef) {
260
+ this._portal = new TemplatePortal(this.popover.templateRef, this._viewContainerRef);
261
+ var config = this._getOverlayConfig();
262
+ this._subscribeToPositions(config.positionStrategy);
263
+ this._overlayRef = this._overlay.create(config);
264
+ }
265
+ return this._overlayRef;
266
+ };
267
+ /**
268
+ * This method builds the configuration object needed to create the overlay, the OverlayConfig.
269
+ * @returns OverlayConfig
270
+ */
271
+ GIPIPopoverTrigger.prototype._getOverlayConfig = function () {
272
+ var overlayState = new OverlayConfig();
273
+ overlayState.positionStrategy = this._getPosition();
274
+ /** Display overlay backdrop if trigger event is click */
275
+ if (this.triggerEvent === 'click') {
276
+ overlayState.hasBackdrop = true;
277
+ overlayState.backdropClass = 'cdk-overlay-transparent-backdrop';
278
+ }
279
+ overlayState.direction = this.dir;
280
+ overlayState.scrollStrategy = this._getOverlayScrollStrategy(this.popover.scrollStrategy);
281
+ return overlayState;
282
+ };
283
+ /**
284
+ * This method returns the scroll strategy used by the cdk/overlay.
285
+ */
286
+ GIPIPopoverTrigger.prototype._getOverlayScrollStrategy = function (strategy) {
287
+ switch (strategy) {
288
+ case 'noop':
289
+ return this._overlay.scrollStrategies.noop();
290
+ case 'close':
291
+ return this._overlay.scrollStrategies.close();
292
+ case 'block':
293
+ return this._overlay.scrollStrategies.block();
294
+ case 'reposition':
295
+ default:
296
+ return this._overlay.scrollStrategies.reposition();
297
+ }
298
+ };
299
+ /**
300
+ * Listens to changes in the position of the overlay and sets the correct classes
301
+ * on the popover based on the new position. This ensures the animation origin is always
302
+ * correct, even if a fallback position is used for the overlay.
303
+ */
304
+ GIPIPopoverTrigger.prototype._subscribeToPositions = function (position) {
305
+ var _this = this;
306
+ this._positionSubscription = position.positionChanges.subscribe(function (change) {
307
+ var posisionX = change.connectionPair.overlayX === 'start' ? 'after' : 'before';
308
+ var posisionY = change.connectionPair.overlayY === 'top' ? 'below' : 'above';
309
+ if (!_this.popover.overlapTrigger) {
310
+ posisionY = posisionY === 'below' ? 'above' : 'below';
311
+ }
312
+ // required for ChangeDetectionStrategy.OnPush
313
+ _this._changeDetectorRef.markForCheck();
314
+ _this.popover.zone.run(function () {
315
+ _this.popover.positionX = posisionX;
316
+ _this.popover.positionY = posisionY;
317
+ _this.popover.setCurrentStyles();
318
+ _this.popover.setPositionClasses(posisionX, posisionY);
319
+ });
320
+ });
321
+ };
322
+ /**
323
+ * This method builds the position strategy for the overlay, so the popover is properly connected
324
+ * to the trigger.
325
+ * @returns ConnectedPositionStrategy
326
+ */
327
+ GIPIPopoverTrigger.prototype._getPosition = function () {
328
+ var _a = __read(this.popover.positionX === 'before' ? ['end', 'start'] : ['start', 'end'], 2), originX = _a[0], originFallbackX = _a[1];
329
+ var _b = __read(this.popover.positionY === 'above' ? ['bottom', 'top'] : ['top', 'bottom'], 2), overlayY = _b[0], overlayFallbackY = _b[1];
330
+ // let originY = overlayY;
331
+ // let fallbackOriginY = overlayFallbackY;
332
+ var originY = overlayY;
333
+ var originFallbackY = overlayFallbackY;
334
+ var overlayX = originX;
335
+ var overlayFallbackX = originFallbackX;
336
+ /** Reverse overlayY and fallbackOverlayY when overlapTrigger is false */
337
+ if (!this.popover.overlapTrigger) {
338
+ originY = overlayY === 'top' ? 'bottom' : 'top';
339
+ originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';
340
+ }
341
+ var offsetX = 0;
342
+ var offsetY = 0;
343
+ if (this.popover.targetOffsetX && !isNaN(Number(this.popover.targetOffsetX))) {
344
+ offsetX = Number(this.popover.targetOffsetX);
345
+ }
346
+ if (this.popover.targetOffsetY && !isNaN(Number(this.popover.targetOffsetY))) {
347
+ offsetY = Number(this.popover.targetOffsetY);
348
+ }
349
+ /**
350
+ * For overriding position element, when popoverTargetAt has a valid element reference.
351
+ * Useful for sticking popover to parent element and offsetting arrow to trigger element.
352
+ * If undefined defaults to the trigger element reference.
353
+ */
354
+ var element = this._elementRef;
355
+ if (typeof this.targetElement !== 'undefined') {
356
+ this.popover.containerPositioning = true;
357
+ element = this.targetElement._elementRef;
358
+ }
359
+ return this._overlay.position()
360
+ .flexibleConnectedTo(element)
361
+ .withLockedPosition(true)
362
+ .withPositions([
363
+ {
364
+ originX: originX,
365
+ originY: originY,
366
+ overlayX: overlayX,
367
+ overlayY: overlayY,
368
+ offsetY: offsetY
369
+ },
370
+ {
371
+ originX: originFallbackX,
372
+ originY: originY,
373
+ overlayX: overlayFallbackX,
374
+ overlayY: overlayY,
375
+ offsetY: offsetY
376
+ },
377
+ {
378
+ originX: originX,
379
+ originY: originFallbackY,
380
+ overlayX: overlayX,
381
+ overlayY: overlayFallbackY,
382
+ offsetY: -offsetY
383
+ },
384
+ {
385
+ originX: originFallbackX,
386
+ originY: originFallbackY,
387
+ overlayX: overlayFallbackX,
388
+ overlayY: overlayFallbackY,
389
+ offsetY: -offsetY
390
+ }
391
+ ])
392
+ .withDefaultOffsetX(offsetX)
393
+ .withDefaultOffsetY(offsetY);
394
+ };
395
+ GIPIPopoverTrigger.prototype._cleanUpSubscriptions = function () {
396
+ if (this._backdropSubscription) {
397
+ this._backdropSubscription.unsubscribe();
398
+ }
399
+ if (this._positionSubscription) {
400
+ this._positionSubscription.unsubscribe();
401
+ }
402
+ if (this._detachmentsSubscription) {
403
+ this._detachmentsSubscription.unsubscribe();
404
+ }
405
+ };
406
+ GIPIPopoverTrigger.prototype._handleMousedown = function (event) {
407
+ if (event && !isFakeMousedownFromScreenReader(event)) {
408
+ this._openedByMouse = true;
409
+ }
410
+ };
411
+ GIPIPopoverTrigger.ctorParameters = function () { return [
412
+ { type: Overlay },
413
+ { type: ElementRef },
414
+ { type: ViewContainerRef },
415
+ { type: Directionality, decorators: [{ type: Optional }] },
416
+ { type: ChangeDetectorRef }
417
+ ]; };
418
+ __decorate([
419
+ HostBinding('attr.aria-haspopup'),
420
+ __metadata("design:type", Boolean)
421
+ ], GIPIPopoverTrigger.prototype, "ariaHaspopup", void 0);
422
+ __decorate([
423
+ Input('popoverTriggerFor'),
424
+ __metadata("design:type", Object)
425
+ ], GIPIPopoverTrigger.prototype, "popover", void 0);
426
+ __decorate([
427
+ Input('popoverTargetAt'),
428
+ __metadata("design:type", Object)
429
+ ], GIPIPopoverTrigger.prototype, "targetElement", void 0);
430
+ __decorate([
431
+ Input('popoverPositionX'),
432
+ __metadata("design:type", String)
433
+ ], GIPIPopoverTrigger.prototype, "positionX", void 0);
434
+ __decorate([
435
+ Input('popoverPositionY'),
436
+ __metadata("design:type", String)
437
+ ], GIPIPopoverTrigger.prototype, "positionY", void 0);
438
+ __decorate([
439
+ Input('popoverTriggerOn'),
440
+ __metadata("design:type", String)
441
+ ], GIPIPopoverTrigger.prototype, "triggerEvent", void 0);
442
+ __decorate([
443
+ Input('popoverEnterDelay'),
444
+ __metadata("design:type", Number)
445
+ ], GIPIPopoverTrigger.prototype, "enterDelay", void 0);
446
+ __decorate([
447
+ Input('popoverLeaveDelay'),
448
+ __metadata("design:type", Number)
449
+ ], GIPIPopoverTrigger.prototype, "leaveDelay", void 0);
450
+ __decorate([
451
+ Input('popoverOverlapTrigger'),
452
+ __metadata("design:type", Boolean)
453
+ ], GIPIPopoverTrigger.prototype, "overlapTrigger", void 0);
454
+ __decorate([
455
+ Input('popoverOffsetX'),
456
+ __metadata("design:type", Number)
457
+ ], GIPIPopoverTrigger.prototype, "targetOffsetX", void 0);
458
+ __decorate([
459
+ Input('popoverOffsetY'),
460
+ __metadata("design:type", Number)
461
+ ], GIPIPopoverTrigger.prototype, "targetOffsetY", void 0);
462
+ __decorate([
463
+ Input('popoverArrowOffsetX'),
464
+ __metadata("design:type", Number)
465
+ ], GIPIPopoverTrigger.prototype, "arrowOffsetX", void 0);
466
+ __decorate([
467
+ Input('popoverArrowWidth'),
468
+ __metadata("design:type", Number)
469
+ ], GIPIPopoverTrigger.prototype, "arrowWidth", void 0);
470
+ __decorate([
471
+ Input('popoverArrowColor'),
472
+ __metadata("design:type", String)
473
+ ], GIPIPopoverTrigger.prototype, "arrowColor", void 0);
474
+ __decorate([
475
+ Input('popoverCloseOnClick'),
476
+ __metadata("design:type", Boolean)
477
+ ], GIPIPopoverTrigger.prototype, "closeOnClick", void 0);
478
+ __decorate([
479
+ Input('popoverBackdropCloseOnClick'),
480
+ __metadata("design:type", Boolean)
481
+ ], GIPIPopoverTrigger.prototype, "backdropCloseOnClick", void 0);
482
+ __decorate([
483
+ Output(),
484
+ __metadata("design:type", EventEmitter)
485
+ ], GIPIPopoverTrigger.prototype, "opened", void 0);
486
+ __decorate([
487
+ Output(),
488
+ __metadata("design:type", EventEmitter)
489
+ ], GIPIPopoverTrigger.prototype, "closed", void 0);
490
+ __decorate([
491
+ HostListener('click', ['$event']),
492
+ __metadata("design:type", Function),
493
+ __metadata("design:paramtypes", [MouseEvent]),
494
+ __metadata("design:returntype", void 0)
495
+ ], GIPIPopoverTrigger.prototype, "onClick", null);
496
+ __decorate([
497
+ HostListener('mouseenter', ['$event']),
498
+ __metadata("design:type", Function),
499
+ __metadata("design:paramtypes", [MouseEvent]),
500
+ __metadata("design:returntype", void 0)
501
+ ], GIPIPopoverTrigger.prototype, "onMouseEnter", null);
502
+ __decorate([
503
+ HostListener('mouseleave', ['$event']),
504
+ __metadata("design:type", Function),
505
+ __metadata("design:paramtypes", [MouseEvent]),
506
+ __metadata("design:returntype", void 0)
507
+ ], GIPIPopoverTrigger.prototype, "onMouseLeave", null);
508
+ __decorate([
509
+ HostListener('mousedown', ['$event']),
510
+ __metadata("design:type", Function),
511
+ __metadata("design:paramtypes", [MouseEvent]),
512
+ __metadata("design:returntype", void 0)
513
+ ], GIPIPopoverTrigger.prototype, "_handleMousedown", null);
514
+ GIPIPopoverTrigger = __decorate([
515
+ Directive({
516
+ selector: '[popoverTriggerFor]',
517
+ exportAs: 'popoverTrigger'
518
+ }),
519
+ __param(3, Optional()),
520
+ __metadata("design:paramtypes", [Overlay,
521
+ ElementRef,
522
+ ViewContainerRef,
523
+ Directionality,
524
+ ChangeDetectorRef])
525
+ ], GIPIPopoverTrigger);
526
+ return GIPIPopoverTrigger;
527
+ }());
528
+ export { GIPIPopoverTrigger };
529
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci10cmlnZ2VyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdpcGlzaXN0ZW1hcy9uZy1jb3JlLyIsInNvdXJjZXMiOlsic2hhcmVkL2dpcGktY29tcG9uZW50cy9wb3BvdmVyL3NoYXJlZC9wb3BvdmVyLXRyaWdnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLHVCQUF1QixFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdLLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixHQUFHLE1BQU0sZUFBZSxDQUFDO0FBQ3hMLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUk1RDs7O0dBR0c7QUFNSDtJQTBFSSw0QkFDWSxRQUFpQixFQUNsQixXQUF1QixFQUN0QixpQkFB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L0IsUUFBUSxFQUFFLGdCQUFnQjtTQUM3QixDQUFDO1FBK0VPLFdBQUEsUUFBUSxFQUFFLENBQUE7eUNBSE8sT0FBTztZQUNMLFVBQVU7WUFDSCxnQkFBZ0I7WUFDakIsY0FBYztZQUNaLGlCQUFpQjtPQS9FeEMsa0JBQWtCLENBK2Y5QjtJQUFELHlCQUFDO0NBQUEsQUEvZkQsSUErZkM7U0EvZlksa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNGYWtlTW91c2Vkb3duRnJvbVNjcmVlblJlYWRlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IERpcmVjdGlvbiwgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQgeyBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksIEhvcml6b250YWxDb25uZWN0aW9uUG9zLCBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmLCBTY3JvbGxTdHJhdGVneSwgVmVydGljYWxDb25uZWN0aW9uUG9zIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT3B0aW9uYWwsIE91dHB1dCwgVmlld0NvbnRhaW5lclJlZiwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBPYmplY3RVdGlsIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS91dGlscy9vYmplY3QudXRpbCc7XG5pbXBvcnQgeyBTdHJpbmdVdGlsIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS91dGlscy9zdHJpbmcudXRpbCc7XG5pbXBvcnQgeyBHSVBJRG9tSGFuZGxlciB9IGZyb20gJy4uLy4uL2RvbS9kb20taGFuZGxlcic7XG5pbXBvcnQgeyB0aHJvd1BvcG92ZXJNaXNzaW5nRXJyb3IgfSBmcm9tICcuL3BvcG92ZXItZXJyb3JzJztcbmltcG9ydCB7IFBvcG92ZXJQYW5lbCwgVGFyZ2V0IH0gZnJvbSAnLi9wb3BvdmVyLWludGVyZmFjZXMnO1xuaW1wb3J0IHsgUG9wb3ZlclBvc2l0aW9uWCwgUG9wb3ZlclBvc2l0aW9uWSwgUG9wb3ZlclNjcm9sbFN0cmF0ZWd5LCBQb3BvdmVyVHJpZ2dlckV2ZW50IH0gZnJvbSAnLi9wb3BvdmVyLXR5cGVzJztcblxuLyoqXG4gKiBFc3RhIGRpcmV0aXZhIGRlc3RpbmEtc2UgYSBzZXIgdXNhZGEgZW0gY29uanVudG8gY29tIHVtYSB0YWcgZ2lwaS1wb3BvdmVyLlxuICogRWxlIMOpIHJlc3BvbnPDoXZlbCBwb3IgYWx0ZXJuYXIgYSBleGliacOnw6NvIGRhIGluc3TDom5jaWEgcG9wb3ZlciBmb3JuZWNpZGEuXG4gKi9cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcG9wb3ZlclRyaWdnZXJGb3JdJyxcbiAgICBleHBvcnRBczogJ3BvcG92ZXJUcmlnZ2VyJ1xufSlcbmV4cG9ydCBjbGFzcyBHSVBJUG9wb3ZlclRyaWdnZXIgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kgeyAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lOmRpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWhhc3BvcHVwJykgYXJpYUhhc3BvcHVwOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIHBvcG92ZXJPcGVuZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHBvcG92ZXJDbG9zZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHJpdmF0ZSBfcG9ydGFsOiBUZW1wbGF0ZVBvcnRhbDxhbnk+O1xuICAgIHByaXZhdGUgX292ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIF9wb3BvdmVyT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2hhbHQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwcml2YXRlIF9iYWNrZHJvcFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgX3Bvc2l0aW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBfZGV0YWNobWVudHNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIHByaXZhdGUgX21vdXNlb3ZlclRpbWVyOiBhbnk7XG5cbiAgICAvLyB0cmFja2luZyBpbnB1dCB0eXBlIGlzIG5lY2Vzc2FyeSBzbyBpdCdzIHBvc3NpYmxlIHRvIG9ubHkgYXV0by1mb2N1c1xuICAgIC8vIHRoZSBmaXJzdCBpdGVtIG9mIHRoZSBsaXN0IHdoZW4gdGhlIHBvcG92ZXIgaXMgb3BlbmVkIHZpYSB0aGUga2V5Ym9hcmRcbiAgICBwcml2YXRlIF9vcGVuZWRCeU1vdXNlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIF9vbkRlc3Ryb3k6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIFJlZmVyZW5jZXMgdGhlIHBvcG92ZXIgaW5zdGFuY2UgdGhhdCB0aGUgdHJpZ2dlciBpcyBhc3NvY2lhdGVkIHdpdGguICovXG4gICAgQElucHV0KCdwb3BvdmVyVHJpZ2dlckZvcicpIHBvcG92ZXI6IFBvcG92ZXJQYW5lbDtcblxuICAgIC8qKiBSZWZlcmVuY2VzIHRoZSBwb3BvdmVyIHRhcmdldCBpbnN0YW5jZSB0aGF0IHRoZSB0cmlnZ2VyIGlzIGFzc29jaWF0ZWQgd2l0aC4gKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJUYXJnZXRBdCcpIHRhcmdldEVsZW1lbnQ6IFRhcmdldDtcblxuICAgIC8qKiBQb3NpdGlvbiBvZiB0aGUgcG9wb3ZlciBpbiB0aGUgWCBheGlzICovXG4gICAgQElucHV0KCdwb3BvdmVyUG9zaXRpb25YJykgcG9zaXRpb25YOiBQb3BvdmVyUG9zaXRpb25YO1xuXG4gICAgLyoqIFBvc2l0aW9uIG9mIHRoZSBwb3BvdmVyIGluIHRoZSBZIGF4aXMgKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJQb3NpdGlvblknKSBwb3NpdGlvblk6IFBvcG92ZXJQb3NpdGlvblk7XG5cbiAgICAvKiogUG9wb3ZlciB0cmlnZ2VyIGV2ZW50ICovXG4gICAgQElucHV0KCdwb3BvdmVyVHJpZ2dlck9uJykgdHJpZ2dlckV2ZW50OiBQb3BvdmVyVHJpZ2dlckV2ZW50O1xuXG4gICAgLyoqIFBvcG92ZXIgZGVsYXkgKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJFbnRlckRlbGF5JykgZW50ZXJEZWxheTogbnVtYmVyO1xuXG4gICAgLyoqIFBvcG92ZXIgZGVsYXkgKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJMZWF2ZURlbGF5JykgbGVhdmVEZWxheTogbnVtYmVyO1xuXG4gICAgLyoqIFBvcG92ZXIgb3ZlcmxhcCB0cmlnZ2VyICovXG4gICAgQElucHV0KCdwb3BvdmVyT3ZlcmxhcFRyaWdnZXInKSBvdmVybGFwVHJpZ2dlcjogYm9vbGVhbjtcblxuICAgIC8qKiBQb3BvdmVyIHRhcmdldCBvZmZzZXQgeCAqL1xuICAgIEBJbnB1dCgncG9wb3Zlck9mZnNldFgnKSB0YXJnZXRPZmZzZXRYOiBudW1iZXI7XG5cbiAgICAvKiogUG9wb3ZlciB0YXJnZXQgb2Zmc2V0IHkgKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJPZmZzZXRZJykgdGFyZ2V0T2Zmc2V0WTogbnVtYmVyO1xuXG4gICAgLyoqIFBvcG92ZXIgYXJyb3cgb2Zmc2V0IHggKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJBcnJvd09mZnNldFgnKSBhcnJvd09mZnNldFg6IG51bWJlcjtcblxuICAgIC8qKiBQb3BvdmVyIGFycm93IHdpZHRoICovXG4gICAgQElucHV0KCdwb3BvdmVyQXJyb3dXaWR0aCcpIGFycm93V2lkdGg6IG51bWJlcjtcblxuICAgIC8qKiBQb3BvdmVyIGFycm93IGNvbG9yICovXG4gICAgQElucHV0KCdwb3BvdmVyQXJyb3dDb2xvcicpIGFycm93Q29sb3I6IHN0cmluZztcblxuICAgIC8qKiBQb3BvdmVyIGNvbnRhaW5lciBjbG9zZSBvbiBjbGljayAqL1xuICAgIEBJbnB1dCgncG9wb3ZlckNsb3NlT25DbGljaycpIGNsb3NlT25DbGljazogYm9vbGVhbjtcblxuICAgIC8qKiBQb3BvdmVyIGJhY2tkcm9wIGNsb3NlIG9uIGNsaWNrICovXG4gICAgQElucHV0KCdwb3BvdmVyQmFja2Ryb3BDbG9zZU9uQ2xpY2snKSBiYWNrZHJvcENsb3NlT25DbGljazogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBhc3NvY2lhdGVkIHBvcG92ZXIgaXMgb3BlbmVkLiAqL1xuICAgIEBPdXRwdXQoKSBvcGVuZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgcG9wb3ZlciBpcyBjbG9zZWQuICovXG4gICAgQE91dHB1dCgpIGNsb3NlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX292ZXJsYXk6IE92ZXJsYXksXG4gICAgICAgIHB1YmxpYyBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZGlyOiBEaXJlY3Rpb25hbGl0eSxcbiAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7IH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2hlY2tQb3BvdmVyKCk7XG4gICAgICAgIHRoaXMuX3NldEN1cnJlbnRDb25maWcoKTtcbiAgICAgICAgdGhpcy5wb3BvdmVyLmNsb3NlLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlUG9wb3ZlcigpKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95UG9wb3ZlcigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NldEN1cnJlbnRDb25maWcoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnBvc2l0aW9uWCA9PT0gJ2JlZm9yZScgfHwgdGhpcy5wb3NpdGlvblggPT09ICdhZnRlcicpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5wb3NpdGlvblggPSB0aGlzLnBvc2l0aW9uWDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnBvc2l0aW9uWSA9PT0gJ2Fib3ZlJyB8fCB0aGlzLnBvc2l0aW9uWSA9PT0gJ2JlbG93Jykge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnBvc2l0aW9uWSA9IHRoaXMucG9zaXRpb25ZO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlckV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIudHJpZ2dlckV2ZW50ID0gdGhpcy50cmlnZ2VyRXZlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5lbnRlckRlbGF5KSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIuZW50ZXJEZWxheSA9IHRoaXMuZW50ZXJEZWxheTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmxlYXZlRGVsYXkpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5sZWF2ZURlbGF5ID0gdGhpcy5sZWF2ZURlbGF5O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub3ZlcmxhcFRyaWdnZXIgPT09IHRydWUgfHwgdGhpcy5vdmVybGFwVHJpZ2dlciA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5vdmVybGFwVHJpZ2dlciA9IHRoaXMub3ZlcmxhcFRyaWdnZXI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50YXJnZXRPZmZzZXRYKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIudGFyZ2V0T2Zmc2V0WCA9IHRoaXMudGFyZ2V0T2Zmc2V0WDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnRhcmdldE9mZnNldFkpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci50YXJnZXRPZmZzZXRZID0gdGhpcy50YXJnZXRPZmZzZXRZO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYXJyb3dPZmZzZXRYKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIuYXJyb3dPZmZzZXRYID0gdGhpcy5hcnJvd09mZnNldFg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hcnJvd1dpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIuYXJyb3dXaWR0aCA9IHRoaXMuYXJyb3dXaWR0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmFycm93Q29sb3IpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5hcnJvd0NvbG9yID0gdGhpcy5hcnJvd0NvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY2xvc2VPbkNsaWNrID09PSB0cnVlIHx8IHRoaXMuY2xvc2VPbkNsaWNrID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLmNsb3NlT25DbGljayA9IHRoaXMuY2xvc2VPbkNsaWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wb3BvdmVyLnNldEN1cnJlbnRTdHlsZXMoKTtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciB0aGUgcG9wb3ZlciBpcyBvcGVuLiAqL1xuICAgIGdldCBwb3BvdmVyT3BlbigpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX3BvcG92ZXJPcGVuOyB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgb25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wb3BvdmVyLnRyaWdnZXJFdmVudCA9PT0gJ2NsaWNrJykge1xuICAgICAgICAgICAgdGhpcy50b2dnbGVQb3BvdmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJywgWyckZXZlbnQnXSlcbiAgICBvbk1vdXNlRW50ZXIoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faGFsdCA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5wb3BvdmVyLnRyaWdnZXJFdmVudCA9PT0gJ2hvdmVyJykge1xuICAgICAgICAgICAgdGhpcy5fbW91c2VvdmVyVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Qb3BvdmVyKCk7XG4gICAgICAgICAgICB9LCB0aGlzLnBvcG92ZXIuZW50ZXJEZWxheSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJywgWyckZXZlbnQnXSlcbiAgICBvbk1vdXNlTGVhdmUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucG9wb3Zlci50cmlnZ2VyRXZlbnQgPT09ICdob3ZlcicpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9tb3VzZW92ZXJUaW1lcikge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9tb3VzZW92ZXJUaW1lcik7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW91c2VvdmVyVGltZXIgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuX3BvcG92ZXJPcGVuKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5wb3BvdmVyLmNsb3NlRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VQb3BvdmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB0aGlzLnBvcG92ZXIubGVhdmVEZWxheSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hhbHQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFRvZ2dsZXMgdGhlIHBvcG92ZXIgYmV0d2VlbiB0aGUgb3BlbiBhbmQgY2xvc2VkIHN0YXRlcy4gKi9cbiAgICB0b2dnbGVQb3BvdmVyKCk6IHZvaWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fcG9wb3Zlck9wZW4gPyB0aGlzLmNsb3NlUG9wb3ZlcigpIDogdGhpcy5vcGVuUG9wb3ZlcigpO1xuICAgIH1cblxuICAgIC8qKiBPcGVucyB0aGUgcG9wb3Zlci4gKi9cbiAgICBvcGVuUG9wb3ZlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9wb3BvdmVyT3BlbiAmJiAhdGhpcy5faGFsdCkge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlT3ZlcmxheSgpLmF0dGFjaCh0aGlzLl9wb3J0YWwpO1xuXG4gICAgICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX3ZpZXdDb250YWluZXJSZWYpICYmICFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLl92aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgd2lkdGg6IG51bWJlciA9IEdJUElEb21IYW5kbGVyLmdldFdpZHRoKCh0aGlzLl92aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkpO1xuICAgICAgICAgICAgICAgIGlmIChTdHJpbmdVdGlsLmlzRW1wdHkodGhpcy5wb3BvdmVyLnBvcG92ZXJXaWR0aCkgfHwgKHRoaXMucG9wb3Zlci5wb3BvdmVyV2lkdGggPT09ICdhdXRvJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnBvcG92ZXJXaWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX3N1YnNjcmliZVRvQmFja2Ryb3AoKTtcbiAgICAgICAgICAgIHRoaXMuX3N1YnNjcmliZVRvRGV0YWNobWVudHMoKTtcblxuICAgICAgICAgICAgdGhpcy5faW5pdFBvcG92ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBDbG9zZXMgdGhlIHBvcG92ZXIuICovXG4gICAgY2xvc2VQb3BvdmVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fb3ZlcmxheVJlZikge1xuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKTtcbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0UG9wb3ZlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFJlbW92ZXMgdGhlIHBvcG92ZXIgZnJvbSB0aGUgRE9NLiAqL1xuICAgIGRlc3Ryb3lQb3BvdmVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fbW91c2VvdmVyVGltZXIpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9tb3VzZW92ZXJUaW1lcik7XG4gICAgICAgICAgICB0aGlzLl9tb3VzZW92ZXJUaW1lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZiA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl9jbGVhblVwU3Vic2NyaXB0aW9ucygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fb25EZXN0cm95Lm5leHQoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95LmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEZvY3VzZXMgdGhlIHBvcG92ZXIgdHJpZ2dlci4gKi9cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSB0ZXh0IGRpcmVjdGlvbiBvZiB0aGUgY29udGFpbmluZyBhcHAuICovXG4gICAgZ2V0IGRpcigpOiBEaXJlY3Rpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlyICYmIHRoaXMuX2Rpci52YWx1ZSA9PT0gJ3J0bCcgPyAncnRsJyA6ICdsdHInO1xuICAgIH1cblxuICAgIC8qKlxuICAgICogVGhpcyBtZXRob2QgZW5zdXJlcyB0aGF0IHRoZSBwb3BvdmVyIGNsb3NlcyB3aGVuIHRoZSBvdmVybGF5IGJhY2tkcm9wIGlzIGNsaWNrZWQuXG4gICAgKiBXZSBkbyBub3QgdXNlIGZpcnN0KCkgaGVyZSBiZWNhdXNlIGRvaW5nIHNvIHdvdWxkIG5vdCBjYXRjaCBjbGlja3MgZnJvbSB3aXRoaW5cbiAgICAqIHRoZSBwb3BvdmVyLCBhbmQgaXQgd291bGQgZmFpbCB0byB1bnN1YnNjcmliZSBwcm9wZXJseS4gSW5zdGVhZCwgd2UgdW5zdWJzY3JpYmVcbiAgICAqIGV4cGxpY2l0bHkgd2hlbiB0aGUgcG9wb3ZlciBpcyBjbG9zZWQgb3IgZGVzdHJveWVkLlxuICAgICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9CYWNrZHJvcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgIC8qKiBPbmx5IHN1YnNjcmliZSB0byBiYWNrZHJvcCBpZiB0cmlnZ2VyIGV2ZW50IGlzIGNsaWNrICovXG4gICAgICAgICAgICBpZiAodGhpcy50cmlnZ2VyRXZlbnQgPT09ICdjbGljaycgJiYgdGhpcy5iYWNrZHJvcENsb3NlT25DbGljayA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMucG9wb3ZlckNsb3NlZCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KSxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wb3Zlci5fZW1pdENsb3NlRXZlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9zdWJzY3JpYmVUb0RldGFjaG1lbnRzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fb3ZlcmxheVJlZikge1xuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2htZW50cygpXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLnBvcG92ZXJDbG9zZWQpLFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NldFBvcG92ZXJDbG9zZWQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICogVGhpcyBtZXRob2Qgc2V0cyB0aGUgcG9wb3ZlciBzdGF0ZSB0byBvcGVuIGFuZCBmb2N1c2VzIHRoZSBmaXJzdCBpdGVtIGlmXG4gICAgKiB0aGUgcG9wb3ZlciB3YXMgb3BlbmVkIHZpYSB0aGUga2V5Ym9hcmQuXG4gICAgKi9cbiAgICBwcml2YXRlIF9pbml0UG9wb3ZlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0UG9wb3Zlck9wZW5lZCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICogVGhpcyBtZXRob2QgcmVzZXRzIHRoZSBwb3BvdmVyIHdoZW4gaXQncyBjbG9zZWQsIG1vc3QgaW1wb3J0YW50bHkgcmVzdG9yaW5nXG4gICAgKiBmb2N1cyB0byB0aGUgcG9wb3ZlciB0cmlnZ2VyIGlmIHRoZSBwb3BvdmVyIHdhcyBvcGVuZWQgdmlhIHRoZSBrZXlib2FyZC5cbiAgICAqL1xuICAgIHByaXZhdGUgX3Jlc2V0UG9wb3ZlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0UG9wb3ZlckNsb3NlZCgpO1xuXG4gICAgICAgIC8vIEZvY3VzIG9ubHkgbmVlZHMgdG8gYmUgcmVzZXQgdG8gdGhlIGhvc3QgZWxlbWVudCBpZiB0aGUgcG9wb3ZlciB3YXMgb3BlbmVkXG4gICAgICAgIC8vIGJ5IHRoZSBrZXlib2FyZCBhbmQgbWFudWFsbHkgc2hpZnRlZCB0byB0aGUgZmlyc3QgcG9wb3ZlciBpdGVtLlxuICAgICAgICBpZiAoIXRoaXMuX29wZW5lZEJ5TW91c2UpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9vcGVuZWRCeU1vdXNlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIHNldCBzdGF0ZSByYXRoZXIgdGhhbiB0b2dnbGUgdG8gc3VwcG9ydCB0cmlnZ2VycyBzaGFyaW5nIGEgcG9wb3ZlciAqL1xuICAgIHByaXZhdGUgX3NldFBvcG92ZXJPcGVuZWQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fcG9wb3Zlck9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJPcGVuID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyT3BlbmVkLm5leHQoKTtcbiAgICAgICAgICAgIHRoaXMub3BlbmVkLmVtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBzZXQgc3RhdGUgcmF0aGVyIHRoYW4gdG9nZ2xlIHRvIHN1cHBvcnQgdHJpZ2dlcnMgc2hhcmluZyBhIHBvcG92ZXIgKi9cbiAgICBwcml2YXRlIF9zZXRQb3BvdmVyQ2xvc2VkKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fcG9wb3Zlck9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJPcGVuID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHRoaXMucG9wb3ZlckNsb3NlZC5uZXh0KCk7XG4gICAgICAgICAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAqICBUaGlzIG1ldGhvZCBjaGVja3MgdGhhdCBhIHZhbGlkIGluc3RhbmNlIG9mIE1kUG9wb3ZlciBoYXMgYmVlbiBwYXNzZWQgaW50b1xuICAgICogIG1kUG9wb3ZlclRyaWdnZXJGb3IuIElmIG5vdCwgYW4gZXhjZXB0aW9uIGlzIHRocm93bi5cbiAgICAqL1xuICAgIHByaXZhdGUgX2NoZWNrUG9wb3ZlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnBvcG92ZXIpIHtcbiAgICAgICAgICAgIHRocm93UG9wb3Zlck1pc3NpbmdFcnJvcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiAgVGhpcyBtZXRob2QgY3JlYXRlcyB0aGUgb3ZlcmxheSBmcm9tIHRoZSBwcm92aWRlZCBwb3BvdmVyJ3MgdGVtcGxhdGUgYW5kIHNhdmVzIGl0c1xuICAgICogIE92ZXJsYXlSZWYgc28gdGhhdCBpdCBjYW4gYmUgYXR0YWNoZWQgdG8gdGhlIERPTSB3aGVuIG9wZW5Qb3BvdmVyIGlzIGNhbGxlZC5cbiAgICAqL1xuICAgIHByaXZhdGUgX2NyZWF0ZU92ZXJsYXkoKTogT3ZlcmxheVJlZiB7XG4gICAgICAgIGlmICghdGhpcy5fb3ZlcmxheVJlZikge1xuICAgICAgICAgICAgdGhpcy5fcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMucG9wb3Zlci50ZW1wbGF0ZVJlZiwgdGhpcy5fdmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLl9nZXRPdmVybGF5Q29uZmlnKCk7XG4gICAgICAgICAgICB0aGlzLl9zdWJzY3JpYmVUb1Bvc2l0aW9ucyhjb25maWcucG9zaXRpb25TdHJhdGVneSBhcyBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kpO1xuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKGNvbmZpZyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheVJlZjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAqIFRoaXMgbWV0aG9kIGJ1aWxkcyB0aGUgY29uZmlndXJhdGlvbiBvYmplY3QgbmVlZGVkIHRvIGNyZWF0ZSB0aGUgb3ZlcmxheSwgdGhlIE92ZXJsYXlDb25maWcuXG4gICAgKiBAcmV0dXJucyBPdmVybGF5Q29uZmlnXG4gICAgKi9cbiAgICBwcml2YXRlIF9nZXRPdmVybGF5Q29uZmlnKCk6IE92ZXJsYXlDb25maWcge1xuICAgICAgICBjb25zdCBvdmVybGF5U3RhdGUgPSBuZXcgT3ZlcmxheUNvbmZpZygpO1xuICAgICAgICBvdmVybGF5U3RhdGUucG9zaXRpb25TdHJhdGVneSA9IHRoaXMuX2dldFBvc2l0aW9uKCk7XG5cbiAgICAgICAgLyoqIERpc3BsYXkgb3ZlcmxheSBiYWNrZHJvcCBpZiB0cmlnZ2VyIGV2ZW50IGlzIGNsaWNrICovXG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXJFdmVudCA9PT0gJ2NsaWNrJykge1xuICAgICAgICAgICAgb3ZlcmxheVN0YXRlLmhhc0JhY2tkcm9wID0gdHJ1ZTtcbiAgICAgICAgICAgIG92ZXJsYXlTdGF0ZS5iYWNrZHJvcENsYXNzID0gJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJztcbiAgICAgICAgfVxuXG4gICAgICAgIG92ZXJsYXlTdGF0ZS5kaXJlY3Rpb24gPSB0aGlzLmRpcjtcbiAgICAgICAgb3ZlcmxheVN0YXRlLnNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5fZ2V0T3ZlcmxheVNjcm9sbFN0cmF0ZWd5KHRoaXMucG9wb3Zlci5zY3JvbGxTdHJhdGVneSk7XG5cbiAgICAgICAgcmV0dXJuIG92ZXJsYXlTdGF0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBzY3JvbGwgc3RyYXRlZ3kgdXNlZCBieSB0aGUgY2RrL292ZXJsYXkuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0T3ZlcmxheVNjcm9sbFN0cmF0ZWd5KHN0cmF0ZWd5OiBQb3BvdmVyU2Nyb2xsU3RyYXRlZ3kpOiBTY3JvbGxTdHJhdGVneSB7XG4gICAgICAgIHN3aXRjaCAoc3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIGNhc2UgJ25vb3AnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMubm9vcCgpO1xuICAgICAgICAgICAgY2FzZSAnY2xvc2UnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuY2xvc2UoKTtcbiAgICAgICAgICAgIGNhc2UgJ2Jsb2NrJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmJsb2NrKCk7XG4gICAgICAgICAgICBjYXNlICdyZXBvc2l0aW9uJzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX292ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAqIExpc3RlbnMgdG8gY2hhbmdlcyBpbiB0aGUgcG9zaXRpb24gb2YgdGhlIG92ZXJsYXkgYW5kIHNldHMgdGhlIGNvcnJlY3QgY2xhc3Nlc1xuICAgICogb24gdGhlIHBvcG92ZXIgYmFzZWQgb24gdGhlIG5ldyBwb3NpdGlvbi4gVGhpcyBlbnN1cmVzIHRoZSBhbmltYXRpb24gb3JpZ2luIGlzIGFsd2F5c1xuICAgICogY29ycmVjdCwgZXZlbiBpZiBhIGZhbGxiYWNrIHBvc2l0aW9uIGlzIHVzZWQgZm9yIHRoZSBvdmVybGF5LlxuICAgICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9Qb3NpdGlvbnMocG9zaXRpb246IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wb3NpdGlvblN1YnNjcmlwdGlvbiA9IHBvc2l0aW9uLnBvc2l0aW9uQ2hhbmdlcy5zdWJzY3JpYmUoY2hhbmdlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBvc2lzaW9uWDogUG9wb3ZlclBvc2l0aW9uWCA9IGNoYW5nZS5jb25uZWN0aW9uUGFpci5vdmVybGF5WCA9PT0gJ3N0YXJ0JyA/ICdhZnRlcicgOiAnYmVmb3JlJztcbiAgICAgICAgICAgIGxldCBwb3Npc2lvblk6IFBvcG92ZXJQb3NpdGlvblkgPSBjaGFuZ2UuY29ubmVjdGlvblBhaXIub3ZlcmxheVkgPT09ICd0b3AnID8gJ2JlbG93JyA6ICdhYm92ZSc7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5wb3BvdmVyLm92ZXJsYXBUcmlnZ2VyKSB7XG4gICAgICAgICAgICAgICAgcG9zaXNpb25ZID0gcG9zaXNpb25ZID09PSAnYmVsb3cnID8gJ2Fib3ZlJyA6ICdiZWxvdyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHJlcXVpcmVkIGZvciBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucG9wb3Zlci5wb3NpdGlvblggPSBwb3Npc2lvblg7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnBvc2l0aW9uWSA9IHBvc2lzaW9uWTtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXIuc2V0Q3VycmVudFN0eWxlcygpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnNldFBvc2l0aW9uQ2xhc3Nlcyhwb3Npc2lvblgsIHBvc2lzaW9uWSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiBUaGlzIG1ldGhvZCBidWlsZHMgdGhlIHBvc2l0aW9uIHN0cmF0ZWd5IGZvciB0aGUgb3ZlcmxheSwgc28gdGhlIHBvcG92ZXIgaXMgcHJvcGVybHkgY29ubmVjdGVkXG4gICAgKiB0byB0aGUgdHJpZ2dlci5cbiAgICAqIEByZXR1cm5zIENvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3lcbiAgICAqL1xuICAgIHByaXZhdGUgX2dldFBvc2l0aW9uKCk6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSB7XG4gICAgICAgIGNvbnN0IFtvcmlnaW5YLCBvcmlnaW5GYWxsYmFja1hdOiBIb3Jpem9udGFsQ29ubmVjdGlvblBvc1tdID1cbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5wb3NpdGlvblggPT09ICdiZWZvcmUnID8gWydlbmQnLCAnc3RhcnQnXSA6IFsnc3RhcnQnLCAnZW5kJ107XG5cbiAgICAgICAgY29uc3QgW292ZXJsYXlZLCBvdmVybGF5RmFsbGJhY2tZXTogVmVydGljYWxDb25uZWN0aW9uUG9zW10gPVxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnBvc2l0aW9uWSA9PT0gJ2Fib3ZlJyA/IFsnYm90dG9tJywgJ3RvcCddIDogWyd0b3AnLCAnYm90dG9tJ107XG5cbiAgICAgICAgLy8gbGV0IG9yaWdpblkgPSBvdmVybGF5WTtcbiAgICAgICAgLy8gbGV0IGZhbGxiYWNrT3JpZ2luWSA9IG92ZXJsYXlGYWxsYmFja1k7XG5cbiAgICAgICAgbGV0IG9yaWdpblk6ICd0b3AnIHwgJ2JvdHRvbScgPSBvdmVybGF5WTtcbiAgICAgICAgbGV0IG9yaWdpbkZhbGxiYWNrWTogJ3RvcCcgfCAnYm90dG9tJyA9IG92ZXJsYXlGYWxsYmFja1k7XG5cbiAgICAgICAgY29uc3Qgb3ZlcmxheVg6ICdzdGFydCcgfCAnZW5kJyA9IG9yaWdpblg7XG4gICAgICAgIGNvbnN0IG92ZXJsYXlGYWxsYmFja1g6ICdzdGFydCcgfCAnZW5kJyA9IG9yaWdpbkZhbGxiYWNrWDtcblxuICAgICAgICAvKiogUmV2ZXJzZSBvdmVybGF5WSBhbmQgZmFsbGJhY2tPdmVybGF5WSB3aGVuIG92ZXJsYXBUcmlnZ2VyIGlzIGZhbHNlICovXG4gICAgICAgIGlmICghdGhpcy5wb3BvdmVyLm92ZXJsYXBUcmlnZ2VyKSB7XG4gICAgICAgICAgICBvcmlnaW5ZID0gb3ZlcmxheVkgPT09ICd0b3AnID8gJ2JvdHRvbScgOiAndG9wJztcbiAgICAgICAgICAgIG9yaWdpbkZhbGxiYWNrWSA9IG92ZXJsYXlGYWxsYmFja1kgPT09ICd0b3AnID8gJ2JvdHRvbScgOiAndG9wJztcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBvZmZzZXRYOiBudW1iZXIgPSAwO1xuICAgICAgICBsZXQgb2Zmc2V0WTogbnVtYmVyID0gMDtcblxuICAgICAgICBpZiAodGhpcy5wb3BvdmVyLnRhcmdldE9mZnNldFggJiYgIWlzTmFOKE51bWJlcih0aGlzLnBvcG92ZXIudGFyZ2V0T2Zmc2V0WCkpKSB7XG4gICAgICAgICAgICBvZmZzZXRYID0gTnVtYmVyKHRoaXMucG9wb3Zlci50YXJnZXRPZmZzZXRYKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXIudGFyZ2V0T2Zmc2V0WSAmJiAhaXNOYU4oTnVtYmVyKHRoaXMucG9wb3Zlci50YXJnZXRPZmZzZXRZKSkpIHtcbiAgICAgICAgICAgIG9mZnNldFkgPSBOdW1iZXIodGhpcy5wb3BvdmVyLnRhcmdldE9mZnNldFkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvciBvdmVycmlkaW5nIHBvc2l0aW9uIGVsZW1lbnQsIHdoZW4gcG9wb3ZlclRhcmdldEF0IGhhcyBhIHZhbGlkIGVsZW1lbnQgcmVmZXJlbmNlLlxuICAgICAgICAgKiBVc2VmdWwgZm9yIHN0aWNraW5nIHBvcG92ZXIgdG8gcGFyZW50IGVsZW1lbnQgYW5kIG9mZnNldHRpbmcgYXJyb3cgdG8gdHJpZ2dlciBlbGVtZW50LlxuICAgICAgICAgKiBJZiB1bmRlZmluZWQgZGVmYXVsdHMgdG8gdGhlIHRyaWdnZXIgZWxlbWVudCByZWZlcmVuY2UuXG4gICAgICAgICAqL1xuICAgICAgICBsZXQgZWxlbWVudDogRWxlbWVudFJlZjxhbnk+ID0gdGhpcy5fZWxlbWVudFJlZjtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRhcmdldEVsZW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIuY29udGFpbmVyUG9zaXRpb25pbmcgPSB0cnVlO1xuICAgICAgICAgICAgZWxlbWVudCA9IHRoaXMudGFyZ2V0RWxlbWVudC5fZWxlbWVudFJlZjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5LnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKGVsZW1lbnQpXG4gICAgICAgICAgICAud2l0aExvY2tlZFBvc2l0aW9uKHRydWUpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5YLFxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZLFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WCxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVksXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFlcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogb3JpZ2luRmFsbGJhY2tYLFxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZLFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogb3ZlcmxheUZhbGxiYWNrWCxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVksXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFlcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWCxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogb3JpZ2luRmFsbGJhY2tZLFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WCxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6IG92ZXJsYXlGYWxsYmFja1ksXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IC1vZmZzZXRZXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblg6IG9yaWdpbkZhbGxiYWNrWCxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogb3JpZ2luRmFsbGJhY2tZLFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogb3ZlcmxheUZhbGxiYWNrWCxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6IG92ZXJsYXlGYWxsYmFja1ksXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IC1vZmZzZXRZXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdE9mZnNldFgob2Zmc2V0WClcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdE9mZnNldFkob2Zmc2V0WSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2xlYW5VcFN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9iYWNrZHJvcFN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5fYmFja2Ryb3BTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fcG9zaXRpb25TdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2RldGFjaG1lbnRzU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLl9kZXRhY2htZW50c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSkgX2hhbmRsZU1vdXNlZG93bihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQgJiYgIWlzRmFrZU1vdXNlZG93bkZyb21TY3JlZW5SZWFkZXIoZXZlbnQpKSB7XG4gICAgICAgICAgICB0aGlzLl9vcGVuZWRCeU1vdXNlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BnaXBpc2lzdGVtYXMvbmctY29yZS8iLCJzb3VyY2VzIjpbInNoYXJlZC9naXBpLWNvbXBvbmVudHMvcG9wb3Zlci9zaGFyZWQvcG9wb3Zlci10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgUG9wb3ZlclBvc2l0aW9uWCA9ICdiZWZvcmUnIHwgJ2FmdGVyJztcblxuZXhwb3J0IHR5cGUgUG9wb3ZlclBvc2l0aW9uWSA9ICdhYm92ZScgfCAnYmVsb3cnO1xuXG5leHBvcnQgdHlwZSBQb3BvdmVyVHJpZ2dlckV2ZW50ID0gJ2NsaWNrJyB8ICdob3ZlcicgfCAnbm9uZSc7XG5cbmV4cG9ydCB0eXBlIFBvcG92ZXJTY3JvbGxTdHJhdGVneSA9ICdub29wJyB8ICdjbG9zZScgfCAnYmxvY2snIHwgJ3JlcG9zaXRpb24nO1xuIl19